ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggZmI3YjliNy4uYjZlZjU0MyAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAgLTU0NywyMSArNTQ3LDI1IEBACiAgICAgc2V0KFpMSUJfSU5DTFVERV9ESVIgJHtDTUFLRV9aTElCX0lOQ0xVREVTfSkKICAgICBzZXQoWkxJQl9MSUJSQVJZICR7Q01BS0VfWkxJQl9MSUJSQVJJRVN9KQogICAgIGFkZF9kZWZpbml0aW9ucygtRExJQkFSQ0hJVkVfU1RBVElDKQorICAgIHNldChFTkFCTEVfTUJFRFRMUyBPRkYgQ0FDSEUgSU5URVJOQUwgIkVuYWJsZSB1c2Ugb2YgbWJlZCBUTFMiKQogICAgIHNldChFTkFCTEVfTkVUVExFIE9GRiBDQUNIRSBJTlRFUk5BTCAiRW5hYmxlIHVzZSBvZiBOZXR0bGUiKQogICAgIHNldChFTkFCTEVfT1BFTlNTTCAke0NNQUtFX1VTRV9PUEVOU1NMfSBDQUNIRSBJTlRFUk5BTCAiRW5hYmxlIHVzZSBvZiBPcGVuU1NMIikKKyAgICBzZXQoRU5BQkxFX0xJQkIyIE9GRiBDQUNIRSBJTlRFUk5BTCAiRW5hYmxlIHRoZSB1c2Ugb2YgdGhlIHN5c3RlbSBMSUJCMiBsaWJyYXJ5IGlmIGZvdW5kIikKICAgICBzZXQoRU5BQkxFX0xaTUEgT04gQ0FDSEUgSU5URVJOQUwgIkVuYWJsZSB0aGUgdXNlIG9mIHRoZSBzeXN0ZW0gTFpNQSBsaWJyYXJ5IGlmIGZvdW5kIikKICAgICBzZXQoRU5BQkxFX0xaNCBPRkYgQ0FDSEUgSU5URVJOQUwgIkVuYWJsZSB0aGUgdXNlIG9mIHRoZSBzeXN0ZW0gTFo0IGxpYnJhcnkgaWYgZm91bmQiKQogICAgIHNldChFTkFCTEVfTFpPIE9GRiBDQUNIRSBJTlRFUk5BTCAiRW5hYmxlIHRoZSB1c2Ugb2YgdGhlIHN5c3RlbSBMWk8gbGlicmFyeSBpZiBmb3VuZCIpCiAgICAgc2V0KEVOQUJMRV9aTElCIE9OIENBQ0hFIElOVEVSTkFMICJFbmFibGUgdGhlIHVzZSBvZiB0aGUgc3lzdGVtIFpMSUIgbGlicmFyeSBpZiBmb3VuZCIpCiAgICAgc2V0KEVOQUJMRV9CWmlwMiBPTiBDQUNIRSBJTlRFUk5BTCAiRW5hYmxlIHRoZSB1c2Ugb2YgdGhlIHN5c3RlbSBCWmlwMiBsaWJyYXJ5IGlmIGZvdW5kIikKKyAgICBzZXQoRU5BQkxFX1pTVEQgT04gQ0FDSEUgSU5URVJOQUwgIkVuYWJsZSB0aGUgdXNlIG9mIHRoZSBzeXN0ZW0genN0ZCBsaWJyYXJ5IGlmIGZvdW5kIikKICAgICBzZXQoRU5BQkxFX0xJQlhNTDIgT0ZGIENBQ0hFIElOVEVSTkFMICJFbmFibGUgdGhlIHVzZSBvZiB0aGUgc3lzdGVtIGxpYnhtbDIgbGlicmFyeSBpZiBmb3VuZCIpCi0gICAgc2V0KEVOQUJMRV9FWFBBVCBPTiBDQUNIRSBJTlRFUk5BTCAiRW5hYmxlIHRoZSB1c2Ugb2YgdGhlIHN5c3RlbSBFWFBBVCBsaWJyYXJ5IGlmIGZvdW5kIikKKyAgICBzZXQoRU5BQkxFX0VYUEFUIE9GRiBDQUNIRSBJTlRFUk5BTCAiRW5hYmxlIHRoZSB1c2Ugb2YgdGhlIHN5c3RlbSBFWFBBVCBsaWJyYXJ5IGlmIGZvdW5kIikKICAgICBzZXQoRU5BQkxFX1BDUkVQT1NJWCBPRkYgQ0FDSEUgSU5URVJOQUwgIkVuYWJsZSB0aGUgdXNlIG9mIHRoZSBzeXN0ZW0gUENSRVBPU0lYIGxpYnJhcnkgaWYgZm91bmQiKQogICAgIHNldChFTkFCTEVfTGliR0NDIE9GRiBDQUNIRSBJTlRFUk5BTCAiRW5hYmxlIHRoZSB1c2Ugb2YgdGhlIHN5c3RlbSBMaWJHQ0MgbGlicmFyeSBpZiBmb3VuZCIpCiAgICAgc2V0KEVOQUJMRV9YQVRUUiBPRkYgQ0FDSEUgSU5URVJOQUwgIkVuYWJsZSBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCIpCiAgICAgc2V0KEVOQUJMRV9BQ0wgT0ZGIENBQ0hFIElOVEVSTkFMICJFbmFibGUgQUNMIHN1cHBvcnQiKQogICAgIHNldChFTkFCTEVfSUNPTlYgT0ZGIENBQ0hFIElOVEVSTkFMICJFbmFibGUgaWNvbnYgc3VwcG9ydCIpCiAgICAgc2V0KEVOQUJMRV9DTkcgT0ZGIENBQ0hFIElOVEVSTkFMICJFbmFibGUgdGhlIHVzZSBvZiBDTkcoQ3J5cHRvIE5leHQgR2VuZXJhdGlvbikiKQorICAgIFNFVChQT1NJWF9SRUdFWF9MSUIgIiIgQ0FDSEUgSU5URVJOQUwgIkNob29zZSB3aGF0IGxpYnJhcnkgc2hvdWxkIHByb3ZpZGUgUE9TSVggcmVndWxhciBleHByZXNzaW9uIHN1cHBvcnQiKQogICAgIGFkZF9zdWJkaXJlY3RvcnkoVXRpbGl0aWVzL2NtbGliYXJjaGl2ZSkKICAgICBDTUFLRV9TRVRfVEFSR0VUX0ZPTERFUihjbWxpYmFyY2hpdmUgIlV0aWxpdGllcy8zcmRQYXJ0eSIpCiAgICAgc2V0KENNQUtFX1RBUl9MSUJSQVJJRVMgY21saWJhcmNoaXZlICR7QlpJUDJfTElCUkFSSUVTfSkKZGlmZiAtLWdpdCBhL0hlbHAvY29tbWFuZC9GSU5EX1hYWC50eHQgYi9IZWxwL2NvbW1hbmQvRklORF9YWFgudHh0CmluZGV4IDQyYmY1MmIuLmNlYmUwNTEgMTAwNjQ0Ci0tLSBhL0hlbHAvY29tbWFuZC9GSU5EX1hYWC50eHQKKysrIGIvSGVscC9jb21tYW5kL0ZJTkRfWFhYLnR4dApAQCAtMTUsNiArMTUsNyBAQAogICAgICAgICAgICAgIFtQQVRIUyBwYXRoMSBbcGF0aDIgLi4uIEVOViB2YXJdXQogICAgICAgICAgICAgIFtQQVRIX1NVRkZJWEVTIHN1ZmZpeDEgW3N1ZmZpeDIgLi4uXV0KICAgICAgICAgICAgICBbRE9DICJjYWNoZSBkb2N1bWVudGF0aW9uIHN0cmluZyJdCisgICAgICAgICAgICAgW1JFUVVJUkVEXQogICAgICAgICAgICAgIFtOT19ERUZBVUxUX1BBVEhdCiAgICAgICAgICAgICAgW05PX1BBQ0tBR0VfUk9PVF9QQVRIXQogICAgICAgICAgICAgIFtOT19DTUFLRV9QQVRIXQpAQCAtMzEsOCArMzIsOSBAQAogb2YgdGhpcyBjb21tYW5kLgogSWYgdGhlIHxTRUFSQ0hfWFhYfCBpcyBmb3VuZCB0aGUgcmVzdWx0IGlzIHN0b3JlZCBpbiB0aGUgdmFyaWFibGUKIGFuZCB0aGUgc2VhcmNoIHdpbGwgbm90IGJlIHJlcGVhdGVkIHVubGVzcyB0aGUgdmFyaWFibGUgaXMgY2xlYXJlZC4KLUlmIG5vdGhpbmcgaXMgZm91bmQsIHRoZSByZXN1bHQgd2lsbCBiZQotYGA8VkFSPi1OT1RGT1VORGBgLCBhbmQgdGhlIHNlYXJjaCB3aWxsIGJlIGF0dGVtcHRlZCBhZ2FpbiB0aGUKK0lmIG5vdGhpbmcgaXMgZm91bmQsIHRoZSByZXN1bHQgd2lsbCBiZSBgYDxWQVI+LU5PVEZPVU5EYGAuCitUaGUgYGBSRVFVSVJFRGBgIG9wdGlvbiBzdG9wcyBwcm9jZXNzaW5nIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZiBub3RoaW5nCitpcyBmb3VuZCwgb3RoZXJ3aXNlIHRoZSBzZWFyY2ggd2lsbCBiZSBhdHRlbXB0ZWQgYWdhaW4gdGhlCiBuZXh0IHRpbWUgfEZJTkRfWFhYfCBpcyBpbnZva2VkIHdpdGggdGhlIHNhbWUgdmFyaWFibGUuCiAKIE9wdGlvbnMgaW5jbHVkZToKQEAgLTU3LDYgKzU5LDkgQEAKIGBgRE9DYGAKICAgU3BlY2lmeSB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgZm9yIHRoZSBgYDxWQVI+YGAgY2FjaGUgZW50cnkuCiAKK2BgUkVRVUlSRURgYAorICBTdG9wIHByb2Nlc3Npbmcgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIG5vdGhpbmcgaXMgZm91bmQuCisKIElmIGBgTk9fREVGQVVMVF9QQVRIYGAgaXMgc3BlY2lmaWVkLCB0aGVuIG5vIGFkZGl0aW9uYWwgcGF0aHMgYXJlCiBhZGRlZCB0byB0aGUgc2VhcmNoLgogSWYgYGBOT19ERUZBVUxUX1BBVEhgYCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgc2VhcmNoIHByb2Nlc3MgaXMgYXMgZm9sbG93czoKZGlmZiAtLWdpdCBhL0hlbHAvY29tbWFuZC9jbWFrZV9jb21tYW5kLnJzdCBiL0hlbHAvY29tbWFuZC9jbWFrZV9jb21tYW5kLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGI3ODMyCi0tLSAvZGV2L251bGwKKysrIGIvSGVscC9jb21tYW5kL2NtYWtlX2NvbW1hbmQucnN0CkBAIC0wLDAgKzEsOTAgQEAKK2NtYWtlX2NvbW1hbmQKKy0tLS0tLS0tLS0tLS0KKworQ2FsbCBtZXRhLW9wZXJhdGlvbnMgb24gQ01ha2UgY29tbWFuZHMuCisKK1N5bm9wc2lzCiteXl5eXl5eXgorCisuLiBwYXJzZWQtbGl0ZXJhbDo6CisKKyAgY21ha2VfY29tbWFuZChgSU5WT0tFYF8gPGNvbW1hbmQ+IFs8YXJncz4uLi5dKQorICBjbWFrZV9jb21tYW5kKGBFVkFMYF8gQ09ERSA8Y29kZT4uLi4pCisKK0ludHJvZHVjdGlvbgorXl5eXl5eXl5eXl5eCisKK1RoaXMgY29tbWFuZCB3aWxsIGNhbGwgbWV0YS1vcGVyYXRpb25zIG9uIGJ1aWx0LWluIENNYWtlIGNvbW1hbmRzIG9yCit0aG9zZSBjcmVhdGVkIHZpYSB0aGUgOmNvbW1hbmQ6YG1hY3JvYCBvciA6Y29tbWFuZDpgZnVuY3Rpb25gIGNvbW1hbmRzLgorCitgYGNtYWtlX2NvbW1hbmRgYCBkb2VzIG5vdCBpbnRyb2R1Y2UgYSBuZXcgdmFyaWFibGUgb3IgcG9saWN5IHNjb3BlLgorCitJbnZva2luZyBDb21tYW5kcworXl5eXl5eXl5eXl5eXl5eXl4KKworLi4gX0lOVk9LRToKKworLi4gY29kZS1ibG9jazo6IGNtYWtlCisKKyAgY21ha2VfY29tbWFuZChJTlZPS0UgPGNvbW1hbmQ+IFs8YXJncz4uLi5dKQorCitJbnZva2VzIHRoZSBuYW1lZCBgYDxjb21tYW5kPmBgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cyAoaWYgYW55KS4KK0ZvciBleGFtcGxlLCB0aGUgY29kZToKKworLi4gY29kZS1ibG9jazo6IGNtYWtlCisKKyAgc2V0KG1lc3NhZ2VfY29tbWFuZCAibWVzc2FnZSIpCisgIGNtYWtlX2NvbW1hbmQoSU5WT0tFICR7bWVzc2FnZV9jb21tYW5kfSBTVEFUVVMgIkhlbGxvIFdvcmxkISIpCisKK2lzIGVxdWl2YWxlbnQgdG8KKworLi4gY29kZS1ibG9jazo6IGNtYWtlCisKKyAgbWVzc2FnZShTVEFUVVMgIkhlbGxvIFdvcmxkISIpCisKK0V2YWx1YXRpbmcgQ29kZQorXl5eXl5eXl5eXl5eXl5eCisKKy4uIF9FVkFMOgorCisuLiBjb2RlLWJsb2NrOjogY21ha2UKKworICBjbWFrZV9jb21tYW5kKEVWQUwgQ09ERSA8Y29kZT4uLi4pCisKK0V2YWx1YXRlcyB0aGUgYGA8Y29kZT4uLi5gYCBhcyBDTWFrZSBjb2RlLgorCitGb3IgZXhhbXBsZSwgdGhlIGNvZGU6CisKKy4uIGNvZGUtYmxvY2s6OiBjbWFrZQorCisgIHNldChBIFRSVUUpCisgIHNldChCIFRSVUUpCisgIHNldChDIFRSVUUpCisgIHNldChjb25kaXRpb24gIihBIEFORCBCKSBPUiBDIikKKworICBjbWFrZV9jb21tYW5kKEVWQUwgQ09ERSAiCisgICAgaWYgKCR7Y29uZGl0aW9ufSkKKyAgICAgIG1lc3NhZ2UoU1RBVFVTIFRSVUUpCisgICAgZWxzZSgpCisgICAgICBtZXNzYWdlKFNUQVRVUyBGQUxTRSkKKyAgICBlbmRpZigpIgorICApCisKK2lzIGVxdWl2YWxlbnQgdG8KKworLi4gY29kZS1ibG9jazo6IGNtYWtlCisKKyAgc2V0KEEgVFJVRSkKKyAgc2V0KEIgVFJVRSkKKyAgc2V0KEMgVFJVRSkKKyAgc2V0KGNvbmRpdGlvbiAiKEEgQU5EIEIpIE9SIEMiKQorCisgIGZpbGUoV1JJVEUgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2V2YWwuY21ha2UgIgorICAgIGlmICgke2NvbmRpdGlvbn0pCisgICAgICBtZXNzYWdlKFNUQVRVUyBUUlVFKQorICAgIGVsc2UoKQorICAgICAgbWVzc2FnZShTVEFUVVMgRkFMU0UpCisgICAgZW5kaWYoKSIKKyAgKQorCisgIGluY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2V2YWwuY21ha2UpCmRpZmYgLS1naXQgYS9IZWxwL2NvbW1hbmQvZXhlY3V0ZV9wcm9jZXNzLnJzdCBiL0hlbHAvY29tbWFuZC9leGVjdXRlX3Byb2Nlc3MucnN0CmluZGV4IDE0Zjg3OWQuLmIzMjAyNWYgMTAwNjQ0Ci0tLSBhL0hlbHAvY29tbWFuZC9leGVjdXRlX3Byb2Nlc3MucnN0CisrKyBiL0hlbHAvY29tbWFuZC9leGVjdXRlX3Byb2Nlc3MucnN0CkBAIC0yMSw3ICsyMSw5IEBACiAgICAgICAgICAgICAgICAgICBbQ09NTUFORF9FQ0hPIDx3aGVyZT5dCiAgICAgICAgICAgICAgICAgICBbT1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BBQ0VdCiAgICAgICAgICAgICAgICAgICBbRVJST1JfU1RSSVBfVFJBSUxJTkdfV0hJVEVTUEFDRV0KLSAgICAgICAgICAgICAgICAgIFtFTkNPRElORyA8bmFtZT5dKQorICAgICAgICAgICAgICAgICAgW0VOQ09ESU5HIDxuYW1lPl0KKyAgICAgICAgICAgICAgICAgIFtFQ0hPX09VVFBVVF9WQVJJQUJMRV0KKyAgICAgICAgICAgICAgICAgIFtFQ0hPX0VSUk9SX1ZBUklBQkxFXSkKIAogUnVucyB0aGUgZ2l2ZW4gc2VxdWVuY2Ugb2Ygb25lIG9yIG1vcmUgY29tbWFuZHMuCiAKQEAgLTEwNSw2ICsxMDcsMTUgQEAKICAgIGZvciB0aGlzIGVuY29kaW5nLiBJbiBDTWFrZSAzLjExLjAsIGBgVVRGLThgYCB3YXMgYWRkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGgKICAgIHRoZSBgVVRGLTggUkZDIDxodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzYyOT5gXyBuYW1pbmcgY29udmVudGlvbi4KIAorYGBFQ0hPX09VVFBVVF9WQVJJQUJMRWBgLCBgYEVDSE9fRVJST1JfVkFSSUFCTEVgYAorICBUaGUgc3RhbmRhcmQgb3V0cHV0IG9yIHN0YW5kYXJkIGVycm9yIHdpbGwgbm90IGJlIGV4Y2x1c2l2ZWx5IHJlZGlyZWN0ZWQgdG8KKyAgdGhlIGNvbmZpZ3VyZWQgdmFyaWFibGVzLgorCisgIFRoZSBvdXRwdXQgd2lsbCBiZSBkdXBsaWNhdGVkLCBpdCB3aWxsIGJlIHNlbnQgaW50byB0aGUgY29uZmlndXJlZCB2YXJpYWJsZXMKKyAgYW5kIGFsc28gb24gc3RhbmRhcmQgb3V0cHV0IG9yIHN0YW5kYXJkIGVycm9yLgorCisgIFRoaXMgaXMgYW5hbG9nb3VzIHRvIHRoZSBgYHRlZWBgIFVuaXggY29tbWFuZC4KKwogSWYgbW9yZSB0aGFuIG9uZSBgYE9VVFBVVF8qYGAgb3IgYGBFUlJPUl8qYGAgb3B0aW9uIGlzIGdpdmVuIGZvciB0aGUKIHNhbWUgcGlwZSB0aGUgcHJlY2VkZW5jZSBpcyBub3Qgc3BlY2lmaWVkLgogSWYgbm8gYGBPVVRQVVRfKmBgIG9yIGBgRVJST1JfKmBgIG9wdGlvbnMgYXJlIGdpdmVuIHRoZSBvdXRwdXQgd2lsbApkaWZmIC0tZ2l0IGEvSGVscC9jb21tYW5kL2ZpbGUucnN0IGIvSGVscC9jb21tYW5kL2ZpbGUucnN0CmluZGV4IGRmN2Q4YmEuLjkyY2IyZWQgMTAwNjQ0Ci0tLSBhL0hlbHAvY29tbWFuZC9maWxlLnJzdAorKysgYi9IZWxwL2NvbW1hbmQvZmlsZS5yc3QKQEAgLTE5LDYgKzE5LDcgQEAKICAgICBmaWxlKHtgV1JJVEVgXyB8IGBBUFBFTkRgX30gPGZpbGVuYW1lPiA8Y29udGVudD4uLi4pCiAgICAgZmlsZSh7YFRPVUNIYF8gfCBgVE9VQ0hfTk9DUkVBVEVgX30gWzxmaWxlPi4uLl0pCiAgICAgZmlsZShgR0VORVJBVEVgXyBPVVRQVVQgPG91dHB1dC1maWxlPiBbLi4uXSkKKyAgICBmaWxlKGBDT05GSUdVUkVgXyBPVVRQVVQgPG91dHB1dC1maWxlPiBDT05URU5UIDxjb250ZW50PiBbLi4uXSkKIAogICBgRmlsZXN5c3RlbWBfCiAgICAgZmlsZSh7YEdMT0JgXyB8IGBHTE9CX1JFQ1VSU0VgX30gPG91dC12YXI+IFsuLi5dIFs8Z2xvYmJpbmctZXhwcj4uLi5dKQpAQCAtNDEsNiArNDIsMTAgQEAKICAgYExvY2tpbmdgXwogICAgIGZpbGUoYExPQ0tgXyA8cGF0aD4gWy4uLl0pCiAKKyAgIGBBcmNoaXZpbmdgXworICAgICBmaWxlKGBBUkNISVZFX0NSRUFURWBfIE9VVFBVVCA8YXJjaGl2ZT4gRklMRVMgPGZpbGVzPiBbLi4uXSkKKyAgICAgZmlsZShgQVJDSElWRV9FWFRSQUNUYF8gSU5QVVQgPGFyY2hpdmU+IERFU1RJTkFUSU9OIDxkaXI+IFsuLi5dKQorCiBSZWFkaW5nCiBeXl5eXl5eCiAKQEAgLTU0LDcgKzU5LDkgQEAKIFJlYWQgY29udGVudCBmcm9tIGEgZmlsZSBjYWxsZWQgYGA8ZmlsZW5hbWU+YGAgYW5kIHN0b3JlIGl0IGluIGEKIGBgPHZhcmlhYmxlPmBgLiAgT3B0aW9uYWxseSBzdGFydCBmcm9tIHRoZSBnaXZlbiBgYDxvZmZzZXQ+YGAgYW5kCiByZWFkIGF0IG1vc3QgYGA8bWF4LWluPmBgIGJ5dGVzLiAgVGhlIGBgSEVYYGAgb3B0aW9uIGNhdXNlcyBkYXRhIHRvCi1iZSBjb252ZXJ0ZWQgdG8gYSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiAodXNlZnVsIGZvciBiaW5hcnkgZGF0YSkuCitiZSBjb252ZXJ0ZWQgdG8gYSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiAodXNlZnVsIGZvciBiaW5hcnkgZGF0YSkuIElmIHRoZQorYGBIRVhgYCBvcHRpb24gaXMgc3BlY2lmaWVkLCBsZXR0ZXJzIGluIHRoZSBvdXRwdXQgKGBgYWBgIHRocm91Z2ggYGBmYGApIGFyZSBpbgorbG93ZXJjYXNlLgogCiAuLiBfU1RSSU5HUzoKIApAQCAtNDgyLDYgKzQ4OSw0NSBAQAogYGBmaWxlKEdFTkVSQVRFKWBgIGNvbW1hbmQgcmV0dXJucywgaXQgaXMgd3JpdHRlbiBvbmx5IGFmdGVyIHByb2Nlc3NpbmcgYWxsCiBvZiBhIHByb2plY3QncyBgYENNYWtlTGlzdHMudHh0YGAgZmlsZXMuCiAKKy4uIF9DT05GSUdVUkU6CisKKy4uIGNvZGUtYmxvY2s6OiBjbWFrZQorCisgIGZpbGUoQ09ORklHVVJFIE9VVFBVVCBvdXRwdXQtZmlsZQorICAgICAgIENPTlRFTlQgY29udGVudAorICAgICAgIFtFU0NBUEVfUVVPVEVTXSBbQE9OTFldCisgICAgICAgW05FV0xJTkVfU1RZTEUgW1VOSVh8RE9TfFdJTjMyfExGfENSTEZdIF0pCisKK0dlbmVyYXRlIGFuIG91dHB1dCBmaWxlIHVzaW5nIHRoZSBpbnB1dCBnaXZlbiBieSBgYENPTlRFTlRgYCBhbmQgc3Vic3RpdHV0ZQordmFyaWFibGUgdmFsdWVzIHJlZmVyZW5jZWQgYXMgYGBAVkFSQGBgIG9yIGBgJHtWQVJ9YGAgY29udGFpbmVkIHRoZXJlaW4uIFRoZQorc3Vic3RpdHV0aW9uIHJ1bGVzIGJlaGF2ZSB0aGUgc2FtZSBhcyB0aGUgOmNvbW1hbmQ6YGNvbmZpZ3VyZV9maWxlYCBjb21tYW5kLgorSW4gb3JkZXIgdG8gbWF0Y2ggOmNvbW1hbmQ6YGNvbmZpZ3VyZV9maWxlYCdzIGJlaGF2aW9yLCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMKK2FyZSBub3Qgc3VwcG9ydGVkIGZvciBib3RoIGBgT1VUUFVUYGAgYW5kIGBgQ09OVEVOVGBgLgorCitUaGUgYXJndW1lbnRzIGFyZToKKworYGBPVVRQVVQgPG91dHB1dC1maWxlPmBgCisgIFNwZWNpZnkgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gZ2VuZXJhdGUuIEEgcmVsYXRpdmUgcGF0aCBpcyB0cmVhdGVkIHdpdGgKKyAgcmVzcGVjdCB0byB0aGUgdmFsdWUgb2YgOnZhcmlhYmxlOmBDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJgLiBTZWUgcG9saWN5CisgIDpwb2xpY3k6YENNUDAwNzBgLgorICBgYDxvdXRwdXQtZmlsZT5gYCBkb2VzIG5vdCBzdXBwb3J0IGdlbmVyYXRvciBleHByZXNzaW9ucy4KKworYGBDT05URU5UIDxjb250ZW50PmBgCisgIFVzZSB0aGUgY29udGVudCBnaXZlbiBleHBsaWNpdGx5IGFzIGlucHV0LgorICBgYDxjb250ZW50PmBgIGRvZXMgbm90IHN1cHBvcnQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zLgorCitgYEVTQ0FQRV9RVU9URVNgYAorICBFc2NhcGUgYW55IHN1YnN0aXR1dGVkIHF1b3RlcyB3aXRoIGJhY2tzbGFzaGVzIChDLXN0eWxlKS4KKworYGBAT05MWWBgCisgIFJlc3RyaWN0IHZhcmlhYmxlIHJlcGxhY2VtZW50IHRvIHJlZmVyZW5jZXMgb2YgdGhlIGZvcm0gYGBAVkFSQGBgLgorICBUaGlzIGlzIHVzZWZ1bCBmb3IgY29uZmlndXJpbmcgc2NyaXB0cyB0aGF0IHVzZSBgYCR7VkFSfWBgIHN5bnRheC4KKworYGBORVdMSU5FX1NUWUxFIDxzdHlsZT5gYAorICBTcGVjaWZ5IHRoZSBuZXdsaW5lIHN0eWxlIGZvciB0aGUgb3V0cHV0IGZpbGUuICBTcGVjaWZ5CisgIGBgVU5JWGBgIG9yIGBgTEZgYCBmb3IgYGBcbmBgIG5ld2xpbmVzLCBvciBzcGVjaWZ5CisgIGBgRE9TYGAsIGBgV0lOMzJgYCwgb3IgYGBDUkxGYGAgZm9yIGBgXHJcbmBgIG5ld2xpbmVzLgorCiBGaWxlc3lzdGVtCiBeXl5eXl5eXl5eCiAKQEAgLTg0NiwzICs4OTIsNjIgQEAKIFRyeWluZyB0byBsb2NrIGZpbGUgdHdpY2UgaXMgbm90IGFsbG93ZWQuICBBbnkgaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzIGFuZAogZmlsZSBpdHNlbGYgd2lsbCBiZSBjcmVhdGVkIGlmIHRoZXkgbm90IGV4aXN0LiAgYGBHVUFSRGBgIGFuZCBgYFRJTUVPVVRgYAogb3B0aW9ucyBpZ25vcmVkIG9uIGBgUkVMRUFTRWBgIG9wZXJhdGlvbi4KKworQXJjaGl2aW5nCiteXl5eXl5eXl4KKworLi4gX0FSQ0hJVkVfQ1JFQVRFOgorCisuLiBjb2RlLWJsb2NrOjogY21ha2UKKworICBmaWxlKEFSQ0hJVkVfQ1JFQVRFIE9VVFBVVCA8YXJjaGl2ZT4KKyAgICBbRklMRVMgPGZpbGVzPl0KKyAgICBbRElSRUNUT1JZIDxkaXJzPl0KKyAgICBbRk9STUFUIDxmb3JtYXQ+XQorICAgIFtUWVBFIDx0eXBlPl0KKyAgICBbTVRJTUUgPG10aW1lPl0KKyAgICBbVkVSQk9TRV0pCisKK0NyZWF0ZXMgYW4gYXJjaGl2ZSBzcGVjaWZlZCBieSBgYE9VVFBVVGBgIHdpdGggdGhlIGNvbnRlbnQgb2YgYGBGSUxFU2BgIGFuZAorYGBESVJFQ1RPUllgYC4KKworVG8gc3BlY2lmeSB0aGUgZm9ybWF0IG9mIHRoZSBhcmNoaXZlIHNldCB0aGUgYGBGT1JNQVRgYCBvcHRpb24uCitTdXBwb3J0ZWQgZm9ybWF0cyBhcmU6IGBgN3ppcGBgLCBgYGdudXRhcmBgLCBgYHBheGBgLCBgYHBheHJgYCwgYGByYXdgYCwKKyhyZXN0cmljdGVkIHBheCwgZGVmYXVsdCksIGFuZCBgYHppcGBgLgorCitUbyBzcGVjaWZ5IHRoZSB0eXBlIG9mIGNvbXByZXNzaW9uIHNldCB0aGUgYGBUWVBFYGAgb3B0aW9uLgorU3VwcG9ydGVkIGNvbXByZXNzaW9uIHR5cGVzIGFyZTogYGBOb25lYGAsIGBgQlppcDJgYCwgYGBHWmlwYGAsIGBgWFpgYCwKK2FuZCBgYFpzdGRgYC4KKworLi4gbm90ZTo6CisgIFdpdGggYGBGT1JNQVRgYCBzZXQgdG8gYGByYXdgYCBvbmx5IG9uZSBmaWxlIHdpbGwgYmUgY29tcHJlc3NlZCB3aXRoIHRoZQorICBjb21wcmVzc2lvbiB0eXBlIHNwZWNpZmllZCBieSBgYFRZUEVgYC4KKworV2l0aCBgYFZFUkJPU0VgYCB0aGUgY29tbWFuZCB3aWxsIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQuCisKK1RvIHNwZWNpZnkgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIHJlY29yZGVkIGluIHRhcmJhbGwgZW50cmllcyB1c2UKK3RoZSBgYE1USU1FYGAgb3B0aW9uLgorCisuLiBfQVJDSElWRV9FWFRSQUNUOgorCisuLiBjb2RlLWJsb2NrOjogY21ha2UKKworICBmaWxlKEFSQ0hJVkVfRVhUUkFDVCBJTlBVVCA8YXJjaGl2ZT4KKyAgICBbRklMRVMgPGZpbGVzPl0KKyAgICBbRElSRUNUT1JZIDxkaXJzPl0KKyAgICBbREVTVElOQVRJT04gPGRpcj5dCisgICAgW0xJU1RfT05MWV0KKyAgICBbVkVSQk9TRV0pCisKK0V4dHJhY3RzIG9yIGxpc3RzIHRoZSBjb250ZW50IG9mIGFuIGFyY2hpdmUgc3BlY2lmaWVkIGJ5IGBgSU5QVVRgYC4KKworVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgY29udGVudCBvZiB0aGUgYXJjaGl2ZSB3aWxsIGJlIGV4dHJhY3RlZCBjYW4KK2JlIHNwZWNpZmllZCB2aWEgYGBERVNUSU5BVElPTmBgLiBJZiB0aGUgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXQsIGl0Cit3aWxsIGJlIGNyZWF0ZWQuCisKK1RvIHNlbGVjdCB3aGljaCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgd2lsbCBiZSBleHRyYWN0ZWQgb3IgbGlzdGVkCit1c2UgIGBgRklMRVNgYCBhbmQgYGBESVJFQ1RPUllgYCBvcHRpb25zLgorCitgYExJU1RfT05MWWBgIHdpbGwgb25seSBsaXN0IHRoZSBmaWxlcyBpbiB0aGUgYXJjaGl2ZS4KKworV2l0aCBgYFZFUkJPU0VgYCB0aGUgY29tbWFuZCB3aWxsIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQuCmRpZmYgLS1naXQgYS9IZWxwL2NvbW1hbmQvZnVuY3Rpb24ucnN0IGIvSGVscC9jb21tYW5kL2Z1bmN0aW9uLnJzdAppbmRleCA1M2JhNzU0Li4zMDkzOGIzIDEwMDY0NAotLS0gYS9IZWxwL2NvbW1hbmQvZnVuY3Rpb24ucnN0CisrKyBiL0hlbHAvY29tbWFuZC9mdW5jdGlvbi5yc3QKQEAgLTQ0LDExICs0NCwxNSBAQAogICBmb28oKQogICBGb28oKQogICBGT08oKQorICBjbWFrZV9jb21tYW5kKElOVk9LRSBmb28pCiAKIGFuZCBzbyBvbi4gSG93ZXZlciwgaXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gc3RheSB3aXRoIHRoZQogY2FzZSBjaG9zZW4gaW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uIFR5cGljYWxseSBmdW5jdGlvbnMgdXNlCiBhbGwtbG93ZXJjYXNlIG5hbWVzLgogCitUaGUgOmNvbW1hbmQ6YGNtYWtlX2NvbW1hbmQoSU5WT0tFIC4uLilgIGNvbW1hbmQgY2FuIGFsc28gYmUgdXNlZCB0byBpbnZva2UgdGhlCitmdW5jdGlvbi4KKwogQXJndW1lbnRzCiBeXl5eXl5eXl4KIApkaWZmIC0tZ2l0IGEvSGVscC9jb21tYW5kL2luc3RhbGwucnN0IGIvSGVscC9jb21tYW5kL2luc3RhbGwucnN0CmluZGV4IDVhZmZjNWIuLmNmMDRlZGEgMTAwNjQ0Ci0tLSBhL0hlbHAvY29tbWFuZC9pbnN0YWxsLnJzdAorKysgYi9IZWxwL2NvbW1hbmQvaW5zdGFsbC5yc3QKQEAgLTMwLDEzICszMCwyMCBAQAogCiBgYERFU1RJTkFUSU9OYGAKICAgU3BlY2lmeSB0aGUgZGlyZWN0b3J5IG9uIGRpc2sgdG8gd2hpY2ggYSBmaWxlIHdpbGwgYmUgaW5zdGFsbGVkLgotICBJZiBhIGZ1bGwgcGF0aCAod2l0aCBhIGxlYWRpbmcgc2xhc2ggb3IgZHJpdmUgbGV0dGVyKSBpcyBnaXZlbgotICBpdCBpcyB1c2VkIGRpcmVjdGx5LiAgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGdpdmVuIGl0IGlzIGludGVycHJldGVkCi0gIHJlbGF0aXZlIHRvIHRoZSB2YWx1ZSBvZiB0aGUgOnZhcmlhYmxlOmBDTUFLRV9JTlNUQUxMX1BSRUZJWGAgdmFyaWFibGUuCisgIEFyZ3VtZW50cyBjYW4gYmUgcmVsYXRpdmUgb3IgYWJzb2x1dGUgcGF0aHMuCisKKyAgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGdpdmVuIGl0IGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSB2YWx1ZQorICBvZiB0aGUgOnZhcmlhYmxlOmBDTUFLRV9JTlNUQUxMX1BSRUZJWGAgdmFyaWFibGUuCiAgIFRoZSBwcmVmaXggY2FuIGJlIHJlbG9jYXRlZCBhdCBpbnN0YWxsIHRpbWUgdXNpbmcgdGhlIGBgREVTVERJUmBgCiAgIG1lY2hhbmlzbSBleHBsYWluZWQgaW4gdGhlIDp2YXJpYWJsZTpgQ01BS0VfSU5TVEFMTF9QUkVGSVhgIHZhcmlhYmxlCiAgIGRvY3VtZW50YXRpb24uCiAKKyAgSWYgYW4gYWJzb2x1dGUgcGF0aCAod2l0aCBhIGxlYWRpbmcgc2xhc2ggb3IgZHJpdmUgbGV0dGVyKSBpcyBnaXZlbgorICBpdCBpcyB1c2VkIHZlcmJhdGltLgorCisgIEFzIGFic29sdXRlIHBhdGhzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IDptYW51YWw6YGNwYWNrIDxjcGFjaygxKT5gIGluc3RhbGxlcgorICBnZW5lcmF0b3JzLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHVzZSByZWxhdGl2ZSBwYXRocyB0aHJvdWdob3V0LgorCiBgYFBFUk1JU1NJT05TYGAKICAgU3BlY2lmeSBwZXJtaXNzaW9ucyBmb3IgaW5zdGFsbGVkIGZpbGVzLiAgVmFsaWQgcGVybWlzc2lvbnMgYXJlCiAgIGBgT1dORVJfUkVBRGBgLCBgYE9XTkVSX1dSSVRFYGAsIGBgT1dORVJfRVhFQ1VURWBgLCBgYEdST1VQX1JFQURgYCwKQEAgLTExOSwzMSArMTI2LDM4IEBACiAgICAgICAgICAgKQogCiBUaGUgYGBUQVJHRVRTYGAgZm9ybSBzcGVjaWZpZXMgcnVsZXMgZm9yIGluc3RhbGxpbmcgdGFyZ2V0cyBmcm9tIGEKLXByb2plY3QuICBUaGVyZSBhcmUgc2V2ZXJhbCBraW5kcyBvZiB0YXJnZXQgZmlsZXMgdGhhdCBtYXkgYmUgaW5zdGFsbGVkOgorcHJvamVjdC4gIFRoZXJlIGFyZSBzZXZlcmFsIGtpbmRzIG9mIHRhcmdldCA6cmVmOmBPdXRwdXQgQXJ0aWZhY3RzYAordGhhdCBtYXkgYmUgaW5zdGFsbGVkOgogCiBgYEFSQ0hJVkVgYAotICBTdGF0aWMgbGlicmFyaWVzIGFyZSB0cmVhdGVkIGFzIGBgQVJDSElWRWBgIHRhcmdldHMsIGV4Y2VwdCB0aG9zZQotICBtYXJrZWQgd2l0aCB0aGUgYGBGUkFNRVdPUktgYCBwcm9wZXJ0eSBvbiBtYWNPUyAoc2VlIGBgRlJBTUVXT1JLYGAKLSAgYmVsb3cuKSBGb3IgRExMIHBsYXRmb3JtcyAoYWxsIFdpbmRvd3MtYmFzZWQgc3lzdGVtcyBpbmNsdWRpbmcKLSAgQ3lnd2luKSwgdGhlIERMTCBpbXBvcnQgbGlicmFyeSBpcyB0cmVhdGVkIGFzIGFuIGBgQVJDSElWRWBgIHRhcmdldC4KLSAgT24gQUlYLCB0aGUgbGlua2VyIGltcG9ydCBmaWxlIGNyZWF0ZWQgZm9yIGV4ZWN1dGFibGVzIHdpdGgKLSAgOnByb3BfdGd0OmBFTkFCTEVfRVhQT1JUU2AgaXMgdHJlYXRlZCBhcyBhbiBgYEFSQ0hJVkVgYCB0YXJnZXQuCisgIFRhcmdldCBhcnRpZmFjdHMgb2YgdGhpcyBraW5kIGluY2x1ZGU6CisKKyAgKiAqU3RhdGljIGxpYnJhcmllcyoKKyAgICAoZXhjZXB0IG9uIG1hY09TIHdoZW4gbWFya2VkIGFzIGBgRlJBTUVXT1JLYGAsIHNlZSBiZWxvdyk7CisgICogKkRMTCBpbXBvcnQgbGlicmFyaWVzKgorICAgIChvbiBhbGwgV2luZG93cy1iYXNlZCBzeXN0ZW1zIGluY2x1ZGluZyBDeWd3aW47IHRoZXkgaGF2ZSBleHRlbnNpb24KKyAgICBgYC5saWJgYCwgaW4gY29udHJhc3QgdG8gdGhlIGBgLmRsbGBgIGxpYnJhcmllcyB0aGF0IGdvIHRvIGBgUlVOVElNRWBgKTsKKyAgKiBPbiBBSVgsIHRoZSAqbGlua2VyIGltcG9ydCBmaWxlKiBjcmVhdGVkIGZvciBleGVjdXRhYmxlcyB3aXRoCisgICAgOnByb3BfdGd0OmBFTkFCTEVfRVhQT1JUU2AgZW5hYmxlZC4KIAogYGBMSUJSQVJZYGAKLSAgTW9kdWxlIGxpYnJhcmllcyBhcmUgYWx3YXlzIHRyZWF0ZWQgYXMgYGBMSUJSQVJZYGAgdGFyZ2V0cy4gRm9yIG5vbi0KLSAgRExMIHBsYXRmb3JtcyBzaGFyZWQgbGlicmFyaWVzIGFyZSB0cmVhdGVkIGFzIGBgTElCUkFSWWBgIHRhcmdldHMsCi0gIGV4Y2VwdCB0aG9zZSBtYXJrZWQgd2l0aCB0aGUgYGBGUkFNRVdPUktgYCBwcm9wZXJ0eSBvbiBtYWNPUyAoc2VlCi0gIGBgRlJBTUVXT1JLYGAgYmVsb3cuKQorICBUYXJnZXQgYXJ0aWZhY3RzIG9mIHRoaXMga2luZCBpbmNsdWRlOgorCisgICogKlNoYXJlZCBsaWJyYXJpZXMqLCBleGNlcHQKKworICAgIC0gRExMcyAodGhlc2UgZ28gdG8gYGBSVU5USU1FYGAsIHNlZSBiZWxvdyksCisgICAgLSBvbiBtYWNPUyB3aGVuIG1hcmtlZCBhcyBgYEZSQU1FV09SS2BgIChzZWUgYmVsb3cpLgogCiBgYFJVTlRJTUVgYAotICBFeGVjdXRhYmxlcyBhcmUgdHJlYXRlZCBhcyBgYFJVTlRJTUVgYCBvYmplY3RzLCBleGNlcHQgdGhvc2UgbWFya2VkCi0gIHdpdGggdGhlIGBgTUFDT1NYX0JVTkRMRWBgIHByb3BlcnR5IG9uIG1hY09TIChzZWUgYGBCVU5ETEVgYCBiZWxvdy4pCi0gIEZvciBETEwgcGxhdGZvcm1zIChhbGwgV2luZG93cy1iYXNlZCBzeXN0ZW1zIGluY2x1ZGluZyBDeWd3aW4pLCB0aGUKLSAgRExMIHBhcnQgb2YgYSBzaGFyZWQgbGlicmFyeSBpcyB0cmVhdGVkIGFzIGEgYGBSVU5USU1FYGAgdGFyZ2V0LgorICBUYXJnZXQgYXJ0aWZhY3RzIG9mIHRoaXMga2luZCBpbmNsdWRlOgorCisgICogKkV4ZWN1dGFibGVzKgorICAgIChleGNlcHQgb24gbWFjT1Mgd2hlbiBtYXJrZWQgYXMgYGBNQUNPU1hfQlVORExFYGAsIHNlZSBgYEJVTkRMRWBgIGJlbG93KTsKKyAgKiBETExzIChvbiBhbGwgV2luZG93cy1iYXNlZCBzeXN0ZW1zIGluY2x1ZGluZyBDeWd3aW47IG5vdGUgdGhhdCB0aGUKKyAgICBhY2NvbXBhbnlpbmcgaW1wb3J0IGxpYnJhcmllcyBhcmUgb2Yga2luZCBgYEFSQ0hJVkVgYCkuCiAKIGBgT0JKRUNUU2BgCi0gIE9iamVjdCBsaWJyYXJpZXMgKGEgc2ltcGxlIGdyb3VwIG9mIG9iamVjdCBmaWxlcykgYXJlIGFsd2F5cyB0cmVhdGVkCi0gIGFzIGBgT0JKRUNUU2BgIHRhcmdldHMuCisgIE9iamVjdCBmaWxlcyBhc3NvY2lhdGVkIHdpdGggKm9iamVjdCBsaWJyYXJpZXMqLgogCiBgYEZSQU1FV09SS2BgCiAgIEJvdGggc3RhdGljIGFuZCBzaGFyZWQgbGlicmFyaWVzIG1hcmtlZCB3aXRoIHRoZSBgYEZSQU1FV09SS2BgCkBAIC02MzAsNiArNjQ0LDEzIEBACiBgYChJTVBPUlRFRF8pP0xJTktfSU5URVJGQUNFX0xJQlJBUklFUyhfPENPTkZJRz4pP2BgIHRvIGJlIGV4cG9ydGVkLCB3aGVuCiBwb2xpY3kgOnBvbGljeTpgQ01QMDAyMmAgaXMgYGBORVdgYC4KIAorLi4gbm90ZTo6CisgIFRoZSBpbnN0YWxsZWQgYGA8ZXhwb3J0LW5hbWU+LmNtYWtlYGAgZmlsZSBtYXkgY29tZSB3aXRoIGFkZGl0aW9uYWwKKyAgcGVyLWNvbmZpZ3VyYXRpb24gYGA8ZXhwb3J0LW5hbWU+LSouY21ha2VgYCBmaWxlcyB0byBiZSBsb2FkZWQgYnkKKyAgZ2xvYmJpbmcuICBEbyBub3QgdXNlIGFuIGV4cG9ydCBuYW1lIHRoYXQgaXMgdGhlIHNhbWUgYXMgdGhlIHBhY2thZ2UKKyAgbmFtZSBpbiBjb21iaW5hdGlvbiB3aXRoIGluc3RhbGxpbmcgYSBgYDxwYWNrYWdlLW5hbWU+LWNvbmZpZy5jbWFrZWBgCisgIGZpbGUgb3IgdGhlIGxhdHRlciBtYXkgYmUgaW5jb3JyZWN0bHkgbWF0Y2hlZCBieSB0aGUgZ2xvYiBhbmQgbG9hZGVkLgorCiBXaGVuIGEgYGBDT01QT05FTlRgYCBvcHRpb24gaXMgZ2l2ZW4sIHRoZSBsaXN0ZWQgYGA8Y29tcG9uZW50PmBgIGltcGxpY2l0bHkKIGRlcGVuZHMgb24gYWxsIGNvbXBvbmVudHMgbWVudGlvbmVkIGluIHRoZSBleHBvcnQgc2V0LiBUaGUgZXhwb3J0ZWQKIGBgPG5hbWU+LmNtYWtlYGAgZmlsZSB3aWxsIHJlcXVpcmUgZWFjaCBvZiB0aGUgZXhwb3J0ZWQgY29tcG9uZW50cyB0byBiZQpkaWZmIC0tZ2l0IGEvSGVscC9jb21tYW5kL21hY3JvLnJzdCBiL0hlbHAvY29tbWFuZC9tYWNyby5yc3QKaW5kZXggM2Y2ZjJmOS4uZWU5NTVjYiAxMDA2NDQKLS0tIGEvSGVscC9jb21tYW5kL21hY3JvLnJzdAorKysgYi9IZWxwL2NvbW1hbmQvbWFjcm8ucnN0CkBAIC00MiwxMSArNDIsMTUgQEAKICAgZm9vKCkKICAgRm9vKCkKICAgRk9PKCkKKyAgY21ha2VfY29tbWFuZChJTlZPS0UgZm9vKQogCiBhbmQgc28gb24uIEhvd2V2ZXIsIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIHN0YXkgd2l0aCB0aGUKIGNhc2UgY2hvc2VuIGluIHRoZSBtYWNybyBkZWZpbml0aW9uLiAgVHlwaWNhbGx5IG1hY3JvcyB1c2UKIGFsbC1sb3dlcmNhc2UgbmFtZXMuCiAKK1RoZSA6Y29tbWFuZDpgY21ha2VfY29tbWFuZChJTlZPS0UgLi4uKWAgY29tbWFuZCBjYW4gYWxzbyBiZSB1c2VkIHRvIGludm9rZSB0aGUKK21hY3JvLgorCiBBcmd1bWVudHMKIF5eXl5eXl5eXgogCmRpZmYgLS1naXQgYS9IZWxwL2NvbW1hbmQvc3RyaW5nLnJzdCBiL0hlbHAvY29tbWFuZC9zdHJpbmcucnN0CmluZGV4IDgxYTIwNjEuLmNmY2Y5MTQgMTAwNjQ0Ci0tLSBhL0hlbHAvY29tbWFuZC9zdHJpbmcucnN0CisrKyBiL0hlbHAvY29tbWFuZC9zdHJpbmcucnN0CkBAIC0xMSw4ICsxMSw2IEBACiAgIGBTZWFyY2ggYW5kIFJlcGxhY2VgXwogICAgIHN0cmluZyhgRklORGBfIDxzdHJpbmc+IDxzdWJzdHJpbmc+IDxvdXQtdmFyPiBbLi4uXSkKICAgICBzdHJpbmcoYFJFUExBQ0VgXyA8bWF0Y2gtc3RyaW5nPiA8cmVwbGFjZS1zdHJpbmc+IDxvdXQtdmFyPiA8aW5wdXQ+Li4uKQotCi0gIGBSZWd1bGFyIEV4cHJlc3Npb25zYF8KICAgICBzdHJpbmcoYFJFR0VYIE1BVENIYF8gPG1hdGNoLXJlZ2V4PiA8b3V0LXZhcj4gPGlucHV0Pi4uLikKICAgICBzdHJpbmcoYFJFR0VYIE1BVENIQUxMYF8gPG1hdGNoLXJlZ2V4PiA8b3V0LXZhcj4gPGlucHV0Pi4uLikKICAgICBzdHJpbmcoYFJFR0VYIFJFUExBQ0VgXyA8bWF0Y2gtcmVnZXg+IDxyZXBsYWNlLWV4cHI+IDxvdXQtdmFyPiA8aW5wdXQ+Li4uKQpAQCAtMzgsNiArMzYsNyBAQAogCiAgIGBHZW5lcmF0aW9uYF8KICAgICBzdHJpbmcoYEFTQ0lJYF8gPG51bWJlcj4uLi4gPG91dC12YXI+KQorICAgIHN0cmluZyhgSEVYYF8gPHN0cmluZz4gPG91dC12YXI+KQogICAgIHN0cmluZyhgQ09ORklHVVJFYF8gPHN0cmluZz4gPG91dC12YXI+IFsuLi5dKQogICAgIHN0cmluZyhgTUFLRV9DX0lERU5USUZJRVJgXyA8c3RyaW5nPiA8b3V0LXZhcj4pCiAgICAgc3RyaW5nKGBSQU5ET01gXyBbPG9wdGlvbj4uLi5dIDxvdXQtdmFyPikKQEAgLTQ3LDYgKzQ2LDkgQEAKIFNlYXJjaCBhbmQgUmVwbGFjZQogXl5eXl5eXl5eXl5eXl5eXl5eCiAKK1NlYXJjaCBhbmQgUmVwbGFjZSBXaXRoIFBsYWluIFN0cmluZ3MKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKwogLi4gX0ZJTkQ6CiAKIC4uIGNvZGUtYmxvY2s6OiBjbWFrZQpAQCAtNzQsOCArNzYsOCBAQAogUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgYGA8bWF0Y2hfc3RyaW5nPmBgIGluIHRoZSBgYDxpbnB1dD5gYAogd2l0aCBgYDxyZXBsYWNlX3N0cmluZz5gYCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUgYGA8b3V0cHV0X3ZhcmlhYmxlPmBgLgogCi1SZWd1bGFyIEV4cHJlc3Npb25zCi1eXl5eXl5eXl5eXl5eXl5eXl5eCitTZWFyY2ggYW5kIFJlcGxhY2UgV2l0aCBSZWd1bGFyIEV4cHJlc3Npb25zCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCiAKIC4uIF9gUkVHRVggTUFUQ0hgOgogCkBAIC04Nyw2ICs4OSw3IEBACiBNYXRjaCB0aGUgYGA8cmVndWxhcl9leHByZXNzaW9uPmBgIG9uY2UgYW5kIHN0b3JlIHRoZSBtYXRjaCBpbiB0aGUKIGBgPG91dHB1dF92YXJpYWJsZT5gYC4KIEFsbCBgYDxpbnB1dD5gYCBhcmd1bWVudHMgYXJlIGNvbmNhdGVuYXRlZCBiZWZvcmUgbWF0Y2hpbmcuCitSZWd1bGFyIGV4cHJlc3Npb25zIGFyZSBzcGVjaWZpZWQgaW4gdGhlIHN1YnNlY3Rpb24ganVzdCBiZWxvdy4KIAogLi4gX2BSRUdFWCBNQVRDSEFMTGA6CiAKQEAgLTM1Myw2ICszNTYsMTYgQEAKIAogQ29udmVydCBhbGwgbnVtYmVycyBpbnRvIGNvcnJlc3BvbmRpbmcgQVNDSUkgY2hhcmFjdGVycy4KIAorLi4gX0hFWDoKKworLi4gY29kZS1ibG9jazo6IGNtYWtlCisKKyAgc3RyaW5nKEhFWCA8c3RyaW5nPiA8b3V0cHV0X3ZhcmlhYmxlPikKKworQ29udmVydCBlYWNoIGJ5dGUgaW4gdGhlIGlucHV0IGBgPHN0cmluZz5gYCB0byBpdHMgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24KK2FuZCBzdG9yZSB0aGUgY29uY2F0ZW5hdGVkIGhleCBkaWdpdHMgaW4gdGhlIGBgPG91dHB1dF92YXJpYWJsZT5gYC4gTGV0dGVycyBpbgordGhlIG91dHB1dCAoYGBhYGAgdGhyb3VnaCBgYGZgYCkgYXJlIGluIGxvd2VyY2FzZS4KKwogLi4gX0NPTkZJR1VSRToKIAogLi4gY29kZS1ibG9jazo6IGNtYWtlCmRpZmYgLS1naXQgYS9IZWxwL2NwYWNrX2dlbi9hcmNoaXZlLnJzdCBiL0hlbHAvY3BhY2tfZ2VuL2FyY2hpdmUucnN0CmluZGV4IGQ0NTVmNGIuLmU5OTA0YWUgMTAwNjQ0Ci0tLSBhL0hlbHAvY3BhY2tfZ2VuL2FyY2hpdmUucnN0CisrKyBiL0hlbHAvY3BhY2tfZ2VuL2FyY2hpdmUucnN0CkBAIC0xLDggKzEsOCBAQAogQ1BhY2sgQXJjaGl2ZSBHZW5lcmF0b3IKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUFyY2hpdmUgQ1BhY2sgZ2VuZXJhdG9yIHRoYXQgc3VwcG9ydHMgcGFja2FnaW5nIG9mIHNvdXJjZXMgYW5kIGJpbmFyaWVzIGluCi1kaWZmZXJlbnQgZm9ybWF0czoKK0NQYWNrIGdlbmVyYXRvciBmb3IgcGFja2FnaW5nIGZpbGVzIGludG8gYW4gYXJjaGl2ZSwgd2hpY2ggY2FuIGhhdmUKK2FueSBvZiB0aGUgZm9sbG93aW5nIGZvcm1hdHM6CiAKICAgLSA3WiAtIDd6aXAgLSAoLjd6KQogICAtIFRCWjIgKC50YXIuYnoyKQpAQCAtMTIsMjUgKzEyLDQyIEBACiAgIC0gVFpTVCAoLnRhci56c3QpCiAgIC0gWklQICguemlwKQogCitXaGVuIHRoaXMgZ2VuZXJhdG9yIGlzIGNhbGxlZCBmcm9tIGBgQ1BhY2tTb3VyY2VDb25maWcuY21ha2VgYCAob3IgdGhyb3VnaAordGhlIGBgcGFja2FnZV9zb3VyY2VgYCB0YXJnZXQpLCB0aGVuIHRoZSBnZW5lcmF0ZWQgYXJjaGl2ZSB3aWxsIGNvbnRhaW4gYWxsCitmaWxlcyBpbiB0aGUgcHJvamVjdCBkaXJlY3RvcnksIGV4Y2VwdCB0aG9zZSBzcGVjaWZpZWQgaW4KKzp2YXJpYWJsZTpgQ1BBQ0tfU09VUkNFX0lHTk9SRV9GSUxFU2AuICBUaGUgZm9sbG93aW5nIGlzIG9uZSBleGFtcGxlIG9mCitwYWNrYWdpbmcgYWxsIHNvdXJjZSBmaWxlcyBvZiBhIHByb2plY3Q6CisKKy4uIGNvZGUtYmxvY2s6OiBjbWFrZQorCisgIHNldChDUEFDS19TT1VSQ0VfR0VORVJBVE9SICJUR1oiKQorICBzZXQoQ1BBQ0tfU09VUkNFX0lHTk9SRV9GSUxFUworICAgIFxcLmdpdC8KKyAgICBidWlsZC8KKyAgICAiLip+JCIKKyAgKQorICBzZXQoQ1BBQ0tfVkVSQkFUSU1fVkFSSUFCTEVTIFlFUykKKyAgaW5jbHVkZShDUGFjaykKKworV2hlbiB0aGlzIGdlbmVyYXRvciBpcyBjYWxsZWQgZnJvbSBgYENQYWNrQ29uZmlnLmNtYWtlYGAgKG9yIHRocm91Z2ggdGhlCitgYHBhY2thZ2VgYCB0YXJnZXQpLCB0aGVuIHRoZSBnZW5lcmF0ZWQgYXJjaGl2ZSB3aWxsIGNvbnRhaW4gYWxsIGZpbGVzCit0aGF0IGhhdmUgYmVlbiBpbnN0YWxsZWQgdmlhIENNYWtlJ3MgOmNvbW1hbmQ6YGluc3RhbGxgIGNvbW1hbmQgKGFuZCB0aGUKK2RlcHJlY2F0ZWQgY29tbWFuZHMgOmNvbW1hbmQ6YGluc3RhbGxfZmlsZXNgLCA6Y29tbWFuZDpgaW5zdGFsbF9wcm9ncmFtc2AsCithbmQgOmNvbW1hbmQ6YGluc3RhbGxfdGFyZ2V0c2ApLgorCiBWYXJpYWJsZXMgc3BlY2lmaWMgdG8gQ1BhY2sgQXJjaGl2ZSBnZW5lcmF0b3IKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCiAuLiB2YXJpYWJsZTo6IENQQUNLX0FSQ0hJVkVfRklMRV9OQU1FCiAgICAgICAgICAgICAgIENQQUNLX0FSQ0hJVkVfPGNvbXBvbmVudD5fRklMRV9OQU1FCiAKLSBQYWNrYWdlIGZpbGUgbmFtZSB3aXRob3V0IGV4dGVuc2lvbiB3aGljaCBpcyBhZGRlZCBhdXRvbWF0aWNhbGx5IGRlcGVuZGluZwotIG9uIHRoZSBhcmNoaXZlIGZvcm1hdC4KLQotICogTWFuZGF0b3J5IDogWUVTCi0gKiBEZWZhdWx0ICAgOiBgYDxDUEFDS19QQUNLQUdFX0ZJTEVfTkFNRT5bLTxjb21wb25lbnQ+XS48ZXh0ZW5zaW9uPmBgIHdpdGgKLSAgICAgICAgICAgICAgIHNwYWNlcyByZXBsYWNlZCBieSAnLScKKyAgUGFja2FnZSBmaWxlIG5hbWUgd2l0aG91dCBleHRlbnNpb24uIFRoZSBleHRlbnNpb24gaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZQorICBhcmNoaXZlIGZvcm1hdCAoc2VlIGxpc3QgYWJvdmUpIGFuZCBhdXRvbWF0aWNhbGx5IGFwcGVuZGVkIHRvIHRoZSBmaWxlIG5hbWUuCisgIFRoZSBkZWZhdWx0IGlzIGBgPENQQUNLX1BBQ0tBR0VfRklMRV9OQU1FPlstPGNvbXBvbmVudD5dYGAsIHdpdGggc3BhY2VzCisgIHJlcGxhY2VkIGJ5ICctJy4KIAogLi4gdmFyaWFibGU6OiBDUEFDS19BUkNISVZFX0NPTVBPTkVOVF9JTlNUQUxMCiAKLSBFbmFibGUgY29tcG9uZW50IHBhY2thZ2luZyBmb3IgQ1BhY2tBcmNoaXZlCi0KLSAqIE1hbmRhdG9yeSA6IE5PCi0gKiBEZWZhdWx0ICAgOiBPRkYKLQotIElmIGVuYWJsZWQgKE9OKSBtdWx0aXBsZSBwYWNrYWdlcyBhcmUgZ2VuZXJhdGVkLiBCeSBkZWZhdWx0IGEgc2luZ2xlIHBhY2thZ2UKLSBjb250YWluaW5nIGZpbGVzIG9mIGFsbCBjb21wb25lbnRzIGlzIGdlbmVyYXRlZC4KKyAgRW5hYmxlIGNvbXBvbmVudCBwYWNrYWdpbmcuIElmIGVuYWJsZWQgKE9OKSwgdGhlbiB0aGUgYXJjaGl2ZSBnZW5lcmF0b3IKKyAgY3JlYXRlcyAgbXVsdGlwbGUgcGFja2FnZXMuIFRoZSBkZWZhdWx0IGlzIE9GRiwgd2hpY2ggbWVhbnMgdGhhdCBhIHNpbmdsZQorICBwYWNrYWdlIGNvbnRhaW5pbmcgZmlsZXMgb2YgYWxsIGNvbXBvbmVudHMgaXMgZ2VuZXJhdGVkLgpkaWZmIC0tZ2l0IGEvSGVscC9jcGFja19nZW4vaWZ3LnJzdCBiL0hlbHAvY3BhY2tfZ2VuL2lmdy5yc3QKaW5kZXggNGE5YWI5OS4uNzc2YmI0NiAxMDA2NDQKLS0tIGEvSGVscC9jcGFja19nZW4vaWZ3LnJzdAorKysgYi9IZWxwL2NwYWNrX2dlbi9pZncucnN0CkBAIC0xLDczICsxLDI4IEBACiBDUGFjayBJRlcgR2VuZXJhdG9yCiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAKK0NvbmZpZ3VyZSBhbmQgcnVuIHRoZSBRdCBJbnN0YWxsZXIgRnJhbWV3b3JrIHRvIGdlbmVyYXRlIGEgUXQgaW5zdGFsbGVyLgorCisuLiBvbmx5OjogaHRtbAorCisgIC4uIGNvbnRlbnRzOjoKKwogT3ZlcnZpZXcKIF5eXl5eXl5eCiAKIFRoaXMgOm1hbnVhbDpgY3BhY2sgZ2VuZXJhdG9yIDxjcGFjay1nZW5lcmF0b3JzKDcpPmAgZ2VuZXJhdGVzCiBjb25maWd1cmF0aW9uIGFuZCBtZXRhIGluZm9ybWF0aW9uIGZvciB0aGUgYFF0IEluc3RhbGxlciBGcmFtZXdvcmsKLTxodHRwOi8vZG9jLnF0LmlvL3F0aW5zdGFsbGVyZnJhbWV3b3JrL2luZGV4Lmh0bWw+YF8gKFF0SUZXKS4KKzxodHRwOi8vZG9jLnF0LmlvL3F0aW5zdGFsbGVyZnJhbWV3b3JrL2luZGV4Lmh0bWw+YF8gKFF0SUZXKSwKK2FuZCBydW5zIFF0SUZXIHRvb2xzIHRvIGdlbmVyYXRlIGEgUXQgaW5zdGFsbGVyLgogCiBRdElGVyBwcm92aWRlcyB0b29scyBhbmQgdXRpbGl0aWVzIHRvIGNyZWF0ZSBpbnN0YWxsZXJzIGZvcgogdGhlIHBsYXRmb3JtcyBzdXBwb3J0ZWQgYnkgYFF0IDxodHRwczovL3d3dy5xdC5pbz5gXzogTGludXgsCiBNaWNyb3NvZnQgV2luZG93cywgYW5kIG1hY09TLgogCi1UbyBtYWtlIHVzZSBvZiB0aGlzIGdlbmVyYXRvciwgUXRJRlcgc2hvdWxkIGFsc28gYmUgaW5zdGFsbGVkLgotVGhlIG1vZHVsZSA6bW9kdWxlOmBDUGFja0lGV2AgbG9va3MgZm9yIHRoZSBsb2NhdGlvbiBvZiB0aGUKLVF0SUZXIGNvbW1hbmQtbGluZSB1dGlsaXRpZXMuCi0KLUhpbnRzCi1eXl5eXgotCi1HZW5lcmFsbHksIHRoZSBDUGFjayBgYElGV2BgIGdlbmVyYXRvciBhdXRvbWF0aWNhbGx5IGZpbmRzIFF0SUZXIHRvb2xzLAotYnV0IGlmIHlvdSBkb24ndCB1c2UgYSBkZWZhdWx0IHBhdGggZm9yIGluc3RhbGxhdGlvbiBvZiB0aGUgUXRJRlcgdG9vbHMsCi10aGUgcGF0aCBtYXkgYmUgc3BlY2lmaWVkIGluIGVpdGhlciBhIENNYWtlIG9yIGFuIGVudmlyb25tZW50IHZhcmlhYmxlOgotCi0uLiB2YXJpYWJsZTo6IENQQUNLX0lGV19ST09UCi0KLSBBbiBDTWFrZSB2YXJpYWJsZSB3aGljaCBzcGVjaWZpZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBRdElGVyB0b29sIHN1aXRlLgotCi0gVGhlIHZhcmlhYmxlIHdpbGwgYmUgY2FjaGVkIGluIHRoZSBgYENQYWNrQ29uZmlnLmNtYWtlYGAgZmlsZSBhbmQgdXNlZCBhdAotIENQYWNrIHJ1bnRpbWUuCi0KLS4uIHZhcmlhYmxlOjogUVRJRldESVIKLQotIEFuIGVudmlyb25tZW50IHZhcmlhYmxlIHdoaWNoIHNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIFF0SUZXIHRvb2wKLSBzdWl0ZS4KLQotLi4gbm90ZTo6Ci0gIFRoZSBzcGVjaWZpZWQgcGF0aCBzaG91bGQgbm90IGNvbnRhaW4gImJpbiIgYXQgdGhlIGVuZAotICAoZm9yIGV4YW1wbGU6ICJEOlxcRGV2VG9vbHNcXFF0SUZXMi4wLjUiKS4KLQotVGhlIDp2YXJpYWJsZTpgQ1BBQ0tfSUZXX1JPT1RgIHZhcmlhYmxlIGhhcyBhIGhpZ2hlciBwcmlvcml0eSBhbmQgb3ZlcnJpZGVzCi10aGUgdmFsdWUgb2YgdGhlIDp2YXJpYWJsZTpgUVRJRldESVJgIHZhcmlhYmxlLgotCi1JbnRlcm5hdGlvbmFsaXphdGlvbgotXl5eXl5eXl5eXl5eXl5eXl5eXl4KLQotU29tZSB2YXJpYWJsZXMgYW5kIGNvbW1hbmQgYXJndW1lbnRzIHN1cHBvcnQgaW50ZXJuYXRpb25hbGl6YXRpb24gdmlhCi1DTWFrZSBzY3JpcHQuIFRoaXMgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZS4KLQotSW5zdGFsbGVycyBjcmVhdGVkIGJ5IFF0SUZXIHRvb2xzIGhhdmUgYnVpbHQtaW4gc3VwcG9ydCBmb3IKLWludGVybmF0aW9uYWxpemF0aW9uIGFuZCBtYW55IHBocmFzZXMgYXJlIGxvY2FsaXplZCB0byBtYW55IGxhbmd1YWdlcywKLWJ1dCB0aGlzIGRvZXMgbm90IGFwcGx5IHRvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgeW91ciBjb21wb25lbnRzIGFuZCBncm91cHMKLXRoYXQgd2lsbCBiZSBkaXN0cmlidXRlZC4KLQotTG9jYWxpemF0aW9uIG9mIHRoZSBkZXNjcmlwdGlvbiBvZiB5b3VyIGNvbXBvbmVudHMgYW5kIGdyb3VwcyBpcyB1c2VmdWwgZm9yCi11c2VycyBvZiB5b3VyIGluc3RhbGxlcnMuCi0KLUEgbG9jYWxpemVkIHZhcmlhYmxlIG9yIGFyZ3VtZW50IGNhbiBjb250YWluIGEgc2luZ2xlIGRlZmF1bHQgdmFsdWUsIGFuZCBhCi1zZXQgb2YgcGFpcnMgdGhlIG5hbWUgb2YgdGhlIGxvY2FsZSBhbmQgdGhlIGxvY2FsaXplZCB2YWx1ZS4KLQotRm9yIGV4YW1wbGU6Ci0KLS4uIGNvZGUtYmxvY2s6OiBjbWFrZQotCi0gICBzZXQoTE9DQUxJWkFCTEVfVkFSSUFCTEUgIkRlZmF1bHQgdmFsdWUiCi0gICAgIGVuICJFbmdsaXNoIHZhbHVlIgotICAgICBlbl9VUyAiQW1lcmljYW4gdmFsdWUiCi0gICAgIGVuX0dCICJHcmVhdCBCcml0YWluIHZhbHVlIgotICAgICApCitUbyBtYWtlIHVzZSBvZiB0aGlzIGdlbmVyYXRvciwgUXRJRlcgbmVlZHMgdG8gYmUgaW5zdGFsbGVkLgorVGhlIDptb2R1bGU6YENQYWNrSUZXYCBtb2R1bGUgbG9va3MgZm9yIHRoZSBsb2NhdGlvbiBvZiB0aGUKK1F0SUZXIGNvbW1hbmQtbGluZSB1dGlsaXRpZXMsIGFuZCBkZWZpbmVzIHNldmVyYWwgY29tbWFuZHMgdG8KK2NvbnRyb2wgdGhlIGJlaGF2aW9yIG9mIHRoaXMgZ2VuZXJhdG9yLgogCiBWYXJpYWJsZXMKIF5eXl5eXl5eXgpAQCAtMTU3LDYgKzExMiw4IEBACiAgRGVmYXVsdCB0YXJnZXQgZGlyZWN0b3J5IGZvciBpbnN0YWxsYXRpb24uCiAgQnkgZGVmYXVsdCB1c2VkCiAgIkBBcHBsaWNhdGlvbnNEaXJALzp2YXJpYWJsZTpgQ1BBQ0tfUEFDS0FHRV9JTlNUQUxMX0RJUkVDVE9SWWAiCisgKHZhcmlhYmxlcyBlbWJlZGRlZCBpbiAnQCcgYXJlIGV4cGFuZGVkIGJ5IHRoZQorIGBRdElGVyBzY3JpcHRpbmcgZW5naW5lIDxodHRwczovL2RvYy5xdC5pby9xdGluc3RhbGxlcmZyYW1ld29yay9zY3JpcHRpbmcuaHRtbD5gXykuCiAKICBZb3UgY2FuIHVzZSBwcmVkZWZpbmVkIHZhcmlhYmxlcy4KIApAQCAtMjYzLDU1ICsyMjAsMTExIEBACiAgcmVwYWNrIGRlcGVuZGVudCBjb21wb25lbnRzLiBUaGlzIGZlYXR1cmUgYXZhaWxhYmxlIG9ubHkKICBzaW5jZSBRdElGVyAzLjEuCiAKLVRvb2xzCi0iIiIiIgorUXRJRlcgVG9vbHMKKyIiIiIiIiIiIiIiCiAKIC4uIHZhcmlhYmxlOjogQ1BBQ0tfSUZXX0ZSQU1FV09SS19WRVJTSU9OCiAKICBUaGUgdmVyc2lvbiBvZiB1c2VkIFF0SUZXIHRvb2xzLgogCitUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBwcm92aWRlIHRoZSBsb2NhdGlvbnMgb2YgdGhlIFF0SUZXCitjb21tYW5kLWxpbmUgdG9vbHMgYXMgZGlzY292ZXJlZCBieSB0aGUgbW9kdWxlIDptb2R1bGU6YENQYWNrSUZXYC4KK1RoZXNlIHZhcmlhYmxlcyBhcmUgY2FjaGVkLCBhbmQgbWF5IGJlIGNvbmZpZ3VyZWQgaWYgbmVlZGVkLgorCiAuLiB2YXJpYWJsZTo6IENQQUNLX0lGV19CSU5BUllDUkVBVE9SX0VYRUNVVEFCTEUKIAotIFRoZSBwYXRoIHRvICJiaW5hcnljcmVhdG9yIiBjb21tYW5kIGxpbmUgY2xpZW50LgotCi0gVGhpcyB2YXJpYWJsZSBpcyBjYWNoZWQgYW5kIG1heSBiZSBjb25maWd1cmVkIGlmIG5lZWRlZC4KKyBUaGUgcGF0aCB0byBgYGJpbmFyeWNyZWF0b3JgYC4KIAogLi4gdmFyaWFibGU6OiBDUEFDS19JRldfUkVQT0dFTl9FWEVDVVRBQkxFCiAKLSBUaGUgcGF0aCB0byAicmVwb2dlbiIgY29tbWFuZCBsaW5lIGNsaWVudC4KLQotIFRoaXMgdmFyaWFibGUgaXMgY2FjaGVkIGFuZCBtYXkgYmUgY29uZmlndXJlZCBpZiBuZWVkZWQuCisgVGhlIHBhdGggdG8gYGByZXBvZ2VuYGAuCiAKIC4uIHZhcmlhYmxlOjogQ1BBQ0tfSUZXX0lOU1RBTExFUkJBU0VfRVhFQ1VUQUJMRQogCi0gVGhlIHBhdGggdG8gImluc3RhbGxlcmJhc2UiIGluc3RhbGxlciBleGVjdXRhYmxlIGJhc2UuCi0KLSBUaGlzIHZhcmlhYmxlIGlzIGNhY2hlZCBhbmQgbWF5IGJlIGNvbmZpZ3VyZWQgaWYgbmVlZGVkLgorIFRoZSBwYXRoIHRvIGBgaW5zdGFsbGVyYmFzZWBgLgogCiAuLiB2YXJpYWJsZTo6IENQQUNLX0lGV19ERVZUT09MX0VYRUNVVEFCTEUKIAotIFRoZSBwYXRoIHRvICJkZXZ0b29sIiBjb21tYW5kIGxpbmUgY2xpZW50LgorIFRoZSBwYXRoIHRvIGBgZGV2dG9vbGBgLgogCi0gVGhpcyB2YXJpYWJsZSBpcyBjYWNoZWQgYW5kIG1heSBiZSBjb25maWd1cmVkIGlmIG5lZWRlZC4KK0hpbnRzIGZvciBGaW5kaW5nIFF0SUZXCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCitHZW5lcmFsbHksIHRoZSBDUGFjayBgYElGV2BgIGdlbmVyYXRvciBhdXRvbWF0aWNhbGx5IGZpbmRzIFF0SUZXIHRvb2xzLAorYnV0IGlmIHlvdSBkb24ndCB1c2UgYSBkZWZhdWx0IHBhdGggZm9yIGluc3RhbGxhdGlvbiBvZiB0aGUgUXRJRlcgdG9vbHMsCit0aGUgcGF0aCBtYXkgYmUgc3BlY2lmaWVkIGluIGVpdGhlciBhIENNYWtlIG9yIGFuIGVudmlyb25tZW50IHZhcmlhYmxlOgorCisuLiB2YXJpYWJsZTo6IENQQUNLX0lGV19ST09UCisKKyBBbiBDTWFrZSB2YXJpYWJsZSB3aGljaCBzcGVjaWZpZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBRdElGVyB0b29sIHN1aXRlLgorCisgVGhlIHZhcmlhYmxlIHdpbGwgYmUgY2FjaGVkIGluIHRoZSBgYENQYWNrQ29uZmlnLmNtYWtlYGAgZmlsZSBhbmQgdXNlZCBhdAorIENQYWNrIHJ1bnRpbWUuCisKKy4uIHZhcmlhYmxlOjogUVRJRldESVIKKworIEFuIGVudmlyb25tZW50IHZhcmlhYmxlIHdoaWNoIHNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIFF0SUZXIHRvb2wKKyBzdWl0ZS4KKworLi4gbm90ZTo6CisgIFRoZSBzcGVjaWZpZWQgcGF0aCBzaG91bGQgbm90IGNvbnRhaW4gImJpbiIgYXQgdGhlIGVuZAorICAoZm9yIGV4YW1wbGU6ICJEOlxcRGV2VG9vbHNcXFF0SUZXMi4wLjUiKS4KKworVGhlIDp2YXJpYWJsZTpgQ1BBQ0tfSUZXX1JPT1RgIHZhcmlhYmxlIGhhcyBhIGhpZ2hlciBwcmlvcml0eSBhbmQgb3ZlcnJpZGVzCit0aGUgdmFsdWUgb2YgdGhlIDp2YXJpYWJsZTpgUVRJRldESVJgIHZhcmlhYmxlLgorCitPdGhlciBTZXR0aW5ncworXl5eXl5eXl5eXl5eXl4KIAogT25saW5lIGluc3RhbGxlcgotXl5eXl5eXl5eXl5eXl5eXgorIiIiIiIiIiIiIiIiIiIiIgogCi1CeSBkZWZhdWx0IENQYWNrIElGVyBnZW5lcmF0b3IgbWFrZXMgb2ZmbGluZSBpbnN0YWxsZXIuIFRoaXMgbWVhbnMgdGhhdCBhbGwKLWNvbXBvbmVudHMgd2lsbCBiZSBwYWNrYWdlZCBpbnRvIGEgYmluYXJ5IGZpbGUuCitCeSBkZWZhdWx0LCB0aGlzIGdlbmVyYXRvciBnZW5lcmF0ZXMgYW4gKm9mZmxpbmUgaW5zdGFsbGVyKi4gVGhpcyBtZWFucyB0aGF0Cit0aGF0IGFsbCBwYWNrYWdlZCBmaWxlcyBhcmUgZnVsbHkgY29udGFpbmVkIGluIHRoZSBpbnN0YWxsZXIgZXhlY3V0YWJsZS4KIAotVG8gbWFrZSBhIGNvbXBvbmVudCBkb3dubG9hZGVkLCB5b3UgbXVzdCBzZXQgdGhlIGBgRE9XTkxPQURFRGBgIG9wdGlvbiBpbgotOmNvbW1hbmQ6YGNwYWNrX2FkZF9jb21wb25lbnRgLgorSW4gY29udHJhc3QsIGFuICpvbmxpbmUgaW5zdGFsbGVyKiB3aWxsIGRvd25sb2FkIHNvbWUgb3IgYWxsIGNvbXBvbmVudHMgZnJvbQorYSByZW1vdGUgc2VydmVyLgogCi1UaGVuIHlvdSB3b3VsZCB1c2UgdGhlIGNvbW1hbmQgOmNvbW1hbmQ6YGNwYWNrX2NvbmZpZ3VyZV9kb3dubG9hZHNgLgotSWYgeW91IHNldCBgYEFMTGBgIG9wdGlvbiBhbGwgY29tcG9uZW50cyB3aWxsIGJlIGRvd25sb2FkZWQuCitUaGUgYGBET1dOTE9BREVEYGAgb3B0aW9uIGluIHRoZSA6Y29tbWFuZDpgY3BhY2tfYWRkX2NvbXBvbmVudGAgY29tbWFuZAorc3BlY2lmaWVzIHRoYXQgYSBjb21wb25lbnQgaXMgdG8gYmUgZG93bmxvYWRlZC4gQWx0ZXJuYXRpdmVseSwgdGhlIGBgQUxMYGAKK29wdGlvbiBpbiB0aGUgOmNvbW1hbmQ6YGNwYWNrX2NvbmZpZ3VyZV9kb3dubG9hZHNgIGNvbW1hbmQgc3BlY2lmaWVzIHRoYXQKK2BhbGxgIGNvbXBvbmVudHMgYXJlIHRvIGJlIGJlIGRvd25sb2FkZWQuCiAKLVlvdSBhbHNvIGNhbiB1c2UgY29tbWFuZCA6Y29tbWFuZDpgY3BhY2tfaWZ3X2FkZF9yZXBvc2l0b3J5YCBhbmQKLXZhcmlhYmxlIDp2YXJpYWJsZTpgQ1BBQ0tfSUZXX0RPV05MT0FEX0FMTGAgZm9yIG1vcmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4KK1RoZSA6Y29tbWFuZDpgY3BhY2tfaWZ3X2FkZF9yZXBvc2l0b3J5YCBjb21tYW5kIGFuZCB0aGUKKzp2YXJpYWJsZTpgQ1BBQ0tfSUZXX0RPV05MT0FEX0FMTGAgdmFyaWFibGUgYWxsb3cgZm9yIG1vcmUgc3BlY2lmaWMKK2NvbmZpZ3VyYXRpb24uCiAKLUNQYWNrIElGVyBnZW5lcmF0b3IgY3JlYXRlcyAicmVwb3NpdG9yeSIgZGlyIGluIGN1cnJlbnQgYmluYXJ5IGRpci4gWW91Ci13b3VsZCBjb3B5IGNvbnRlbnQgb2YgdGhpcyBkaXIgdG8gc3BlY2lmaWVkIGBgc2l0ZWBgIChgYHVybGBgKS4KK1doZW4gdGhlcmUgYXJlIG9ubGluZSBjb21wb25lbnRzLCBDUGFjayB3aWxsIHdyaXRlIHRoZW0gdG8gYXJjaGl2ZSBmaWxlcy4KK1RoZSBoZWxwIHBhZ2Ugb2YgdGhlIDptb2R1bGU6YENQYWNrQ29tcG9uZW50YCBtb2R1bGUsIGVzcGVjaWFsbHkgdGhlIHNlY3Rpb24KK29uIHRoZSA6Y29tbWFuZDpgY3BhY2tfY29uZmlndXJlX2Rvd25sb2Fkc2AgZnVuY3Rpb24sIGV4cGxhaW5zIGhvdyB0byBtYWtlCit0aGVzZSBmaWxlcyBhY2Nlc3NpYmxlIGZyb20gYSBkb3dubG9hZCBVUkwuCisKK0ludGVybmF0aW9uYWxpemF0aW9uCisiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitTb21lIHZhcmlhYmxlcyBhbmQgY29tbWFuZCBhcmd1bWVudHMgc3VwcG9ydCBpbnRlcm5hdGlvbmFsaXphdGlvbiB2aWEKK0NNYWtlIHNjcmlwdC4gVGhpcyBpcyBhbiBvcHRpb25hbCBmZWF0dXJlLgorCitJbnN0YWxsZXJzIGNyZWF0ZWQgYnkgUXRJRlcgdG9vbHMgaGF2ZSBidWlsdC1pbiBzdXBwb3J0IGZvcgoraW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIG1hbnkgcGhyYXNlcyBhcmUgbG9jYWxpemVkIHRvIG1hbnkgbGFuZ3VhZ2VzLAorYnV0IHRoaXMgZG9lcyBub3QgYXBwbHkgdG8gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSB5b3VyIGNvbXBvbmVudHMgYW5kIGdyb3VwcwordGhhdCB3aWxsIGJlIGRpc3RyaWJ1dGVkLgorCitMb2NhbGl6YXRpb24gb2YgdGhlIGRlc2NyaXB0aW9uIG9mIHlvdXIgY29tcG9uZW50cyBhbmQgZ3JvdXBzIGlzIHVzZWZ1bCBmb3IKK3VzZXJzIG9mIHlvdXIgaW5zdGFsbGVycy4KKworQSBsb2NhbGl6ZWQgdmFyaWFibGUgb3IgYXJndW1lbnQgY2FuIGNvbnRhaW4gYSBzaW5nbGUgZGVmYXVsdCB2YWx1ZSwgYW5kIGEKK3NldCBvZiBwYWlycyB0aGUgbmFtZSBvZiB0aGUgbG9jYWxlIGFuZCB0aGUgbG9jYWxpemVkIHZhbHVlLgorCitGb3IgZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IGNtYWtlCisKKyAgIHNldChMT0NBTElaQUJMRV9WQVJJQUJMRSAiRGVmYXVsdCB2YWx1ZSIKKyAgICAgZW4gIkVuZ2xpc2ggdmFsdWUiCisgICAgIGVuX1VTICJBbWVyaWNhbiB2YWx1ZSIKKyAgICAgZW5fR0IgIkdyZWF0IEJyaXRhaW4gdmFsdWUiCisgICAgICkKIAogU2VlIEFsc28KIF5eXl5eXl5eCkBAIC0zMzAsNSArMzQzLDUgQEAKICogUHJvbW90aW5nIFVwZGF0ZXM6CiAgIGh0dHA6Ly9kb2MucXQuaW8vcXRpbnN0YWxsZXJmcmFtZXdvcmsvaWZ3LXVwZGF0ZXMuaHRtbAogCi1Eb3dubG9hZCBRdCBJbnN0YWxsZXIgRnJhbWV3b3JrIGZvciB5b3UgcGxhdGZvcm0gZnJvbSBRdCBzaXRlOgorRG93bmxvYWQgUXQgSW5zdGFsbGVyIEZyYW1ld29yayBmb3IgeW91ciBwbGF0Zm9ybSBmcm9tIFF0IHNpdGU6CiAgaHR0cDovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL3F0LWluc3RhbGxlci1mcmFtZXdvcmsKZGlmZiAtLWdpdCBhL0hlbHAvY3BhY2tfZ2VuL3JwbS5yc3QgYi9IZWxwL2NwYWNrX2dlbi9ycG0ucnN0CmluZGV4IDI2OTNjN2IuLjY2ZDU0NjQgMTAwNjQ0Ci0tLSBhL0hlbHAvY3BhY2tfZ2VuL3JwbS5yc3QKKysrIGIvSGVscC9jcGFja19nZW4vcnBtLnJzdApAQCAtNDczLDM4ICs0NzMsNDIgQEAKIAogLi4gdmFyaWFibGU6OiBDUEFDS19SUE1fUFJFX0lOU1RBTExfU0NSSVBUX0ZJTEUKICAgICAgICAgICAgICAgQ1BBQ0tfUlBNX1BSRV9VTklOU1RBTExfU0NSSVBUX0ZJTEUKKyAgICAgICAgICAgICAgQ1BBQ0tfUlBNX1BSRV9UUkFOU19TQ1JJUFRfRklMRQogCi0gUGF0aCB0byBmaWxlIGNvbnRhaW5pbmcgcHJlICh1bilpbnN0YWxsIHNjcmlwdC4KKyBQYXRoIHRvIGZpbGUgY29udGFpbmluZyBwcmUgaW5zdGFsbC91bmluc3RhbGwvdHJhbnNhY3Rpb24gc2NyaXB0LgogCiAgKiBNYW5kYXRvcnkgOiBOTwogICogRGVmYXVsdCAgIDogLQogCi0gTWF5IGJlIHVzZWQgdG8gZW1iZWQgYSBwcmUgKHVuKWluc3RhbGxhdGlvbiBzY3JpcHQgaW4gdGhlIHNwZWMgZmlsZS4KKyBNYXkgYmUgdXNlZCB0byBlbWJlZCBhIHByZSBpbnN0YWxsYXRpb24vdW5pbnN0YWxsYXRpb24vdHJhbnNhY3Rpb24gc2NyaXB0IGluIHRoZSBzcGVjIGZpbGUuCiAgVGhlIHJlZmVycmVkIHNjcmlwdCBmaWxlIChvciBib3RoKSB3aWxsIGJlIHJlYWQgYW5kIGRpcmVjdGx5CiAgcHV0IGFmdGVyIHRoZSBgYCVwcmVgYCBvciBgYCVwcmV1bmBgIHNlY3Rpb24KLSBJZiA6dmFyaWFibGU6YENQQUNLX1JQTV9DT01QT05FTlRfSU5TVEFMTGAgaXMgc2V0IHRvIE9OIHRoZSAodW4paW5zdGFsbAorIElmIDp2YXJpYWJsZTpgQ1BBQ0tfUlBNX0NPTVBPTkVOVF9JTlNUQUxMYCBpcyBzZXQgdG8gT04gdGhlIGluc3RhbGwvdW5pbnN0YWxsL3RyYW5zYWN0aW9uCiAgc2NyaXB0IGZvciBlYWNoIGNvbXBvbmVudCBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoCi0gYGBDUEFDS19SUE1fPENPTVBPTkVOVD5fUFJFX0lOU1RBTExfU0NSSVBUX0ZJTEVgYCBhbmQKLSBgYENQQUNLX1JQTV88Q09NUE9ORU5UPl9QUkVfVU5JTlNUQUxMX1NDUklQVF9GSUxFYGAuCisgYGBDUEFDS19SUE1fPENPTVBPTkVOVD5fUFJFX0lOU1RBTExfU0NSSVBUX0ZJTEVgYCwKKyBgYENQQUNLX1JQTV88Q09NUE9ORU5UPl9QUkVfVU5JTlNUQUxMX1NDUklQVF9GSUxFYGAsIGFuZAorIGBgQ1BBQ0tfUlBNXzxDT01QT05FTlQ+X1BSRV9UUkFOU19TQ1JJUFRfRklMRWBgCiAgT25lIG1heSB2ZXJpZnkgd2hpY2ggc2NyaXB0bGV0IGhhcyBiZWVuIGluY2x1ZGVkIHdpdGg6OgogCiAgIHJwbSAtcXAgLS1zY3JpcHRzICBwYWNrYWdlLnJwbQogCiAuLiB2YXJpYWJsZTo6IENQQUNLX1JQTV9QT1NUX0lOU1RBTExfU0NSSVBUX0ZJTEUKICAgICAgICAgICAgICAgQ1BBQ0tfUlBNX1BPU1RfVU5JTlNUQUxMX1NDUklQVF9GSUxFCisgICAgICAgICAgICAgIENQQUNLX1JQTV9QT1NUX1RSQU5TX1NDUklQVF9GSUxFCiAKLSBQYXRoIHRvIGZpbGUgY29udGFpbmluZyBwb3N0ICh1bilpbnN0YWxsIHNjcmlwdC4KKyBQYXRoIHRvIGZpbGUgY29udGFpbmluZyBwb3N0IGluc3RhbGwvdW5pbnN0YWxsL3RyYW5zYWN0aW9uIHNjcmlwdC4KIAogICogTWFuZGF0b3J5IDogTk8KICAqIERlZmF1bHQgICA6IC0KIAotIE1heSBiZSB1c2VkIHRvIGVtYmVkIGEgcG9zdCAodW4paW5zdGFsbGF0aW9uIHNjcmlwdCBpbiB0aGUgc3BlYyBmaWxlLgorIE1heSBiZSB1c2VkIHRvIGVtYmVkIGEgcG9zdCBpbnN0YWxsYXRpb24vdW5pbnN0YWxsYXRpb24vdHJhbnNhY3Rpb24gc2NyaXB0IGluIHRoZSBzcGVjIGZpbGUuCiAgVGhlIHJlZmVycmVkIHNjcmlwdCBmaWxlIChvciBib3RoKSB3aWxsIGJlIHJlYWQgYW5kIGRpcmVjdGx5CiAgcHV0IGFmdGVyIHRoZSBgYCVwb3N0YGAgb3IgYGAlcG9zdHVuYGAgc2VjdGlvbi4KLSBJZiA6dmFyaWFibGU6YENQQUNLX1JQTV9DT01QT05FTlRfSU5TVEFMTGAgaXMgc2V0IHRvIE9OIHRoZSAodW4paW5zdGFsbAorIElmIDp2YXJpYWJsZTpgQ1BBQ0tfUlBNX0NPTVBPTkVOVF9JTlNUQUxMYCBpcyBzZXQgdG8gT04gdGhlIGluc3RhbGwvdW5pbnN0YWxsL3RyYW5zYWN0aW9uCiAgc2NyaXB0IGZvciBlYWNoIGNvbXBvbmVudCBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoCi0gYGBDUEFDS19SUE1fPENPTVBPTkVOVD5fUE9TVF9JTlNUQUxMX1NDUklQVF9GSUxFYGAgYW5kCi0gYGBDUEFDS19SUE1fPENPTVBPTkVOVD5fUE9TVF9VTklOU1RBTExfU0NSSVBUX0ZJTEVgYC4KKyBgYENQQUNLX1JQTV88Q09NUE9ORU5UPl9QT1NUX0lOU1RBTExfU0NSSVBUX0ZJTEVgYCwKKyBgYENQQUNLX1JQTV88Q09NUE9ORU5UPl9QT1NUX1VOSU5TVEFMTF9TQ1JJUFRfRklMRWBgLCBhbmQKKyBgYENQQUNLX1JQTV88Q09NUE9ORU5UPl9QT1NUX1RSQU5TX1NDUklQVF9GSUxFYGAKICBPbmUgbWF5IHZlcmlmeSB3aGljaCBzY3JpcHRsZXQgaGFzIGJlZW4gaW5jbHVkZWQgd2l0aDo6CiAKICAgcnBtIC1xcCAtLXNjcmlwdHMgIHBhY2thZ2UucnBtCmRpZmYgLS1naXQgYS9IZWxwL2Rldi9zb3VyY2UucnN0IGIvSGVscC9kZXYvc291cmNlLnJzdAppbmRleCAwZjc0ODhiLi41MzcxMzUzIDEwMDY0NAotLS0gYS9IZWxwL2Rldi9zb3VyY2UucnN0CisrKyBiL0hlbHAvZGV2L3NvdXJjZS5yc3QKQEAgLTIzLDEyICsyMywxNDIgQEAKIEMrKyBTdWJzZXQgUGVybWl0dGVkCiA9PT09PT09PT09PT09PT09PT09PQogCi1DTWFrZSByZXF1aXJlcyBjb21waWxpbmcgYXMgQysrMTEgb3IgYWJvdmUuICBIb3dldmVyLCBpbiBvcmRlciB0byBzdXBwb3J0Ci1idWlsZGluZyBvbiBvbGRlciB0b29sY2hhaW5zIHNvbWUgY29uc3RydWN0cyBuZWVkIHRvIGJlIGhhbmRsZWQgd2l0aCBjYXJlOgorQ01ha2UgcmVxdWlyZXMgY29tcGlsaW5nIGFzIEMrKzExIGluIG9yZGVyIHRvIHN1cHBvcnQgYnVpbGRpbmcgb24gb2xkZXIKK3Rvb2xjaGFpbnMuICBIb3dldmVyLCB0byBmYWNpbGl0YXRlIGRldmVsb3BtZW50LCBzb21lIHN0YW5kYXJkIGxpYnJhcnkKK2ZlYXR1cmVzIGZyb20gbW9yZSByZWNlbnQgQysrIHN0YW5kYXJkcyBhcmUgc3VwcG9ydGVkIHRocm91Z2ggYSBjb21wYXRpYmlsaXR5CitsYXllci4gIFRoZXNlIGZlYXR1cmVzIGFyZSBkZWZpbmVkIHVuZGVyIHRoZSBuYW1lc3BhY2UgYGBjbWBgIGFuZCBoZWFkZXJzCithcmUgYWNjZXNzaWJsZSB1bmRlciB0aGUgYGBjbS9gYCBkaXJlY3RvcnkuICBUaGUgaGVhZGVycyB1bmRlciBgYGNtL2BgIGNhbgorYmUgdXNlZCBpbiBwbGFjZSBvZiB0aGUgc3RhbmRhcmQgb25lcyB3aGVuIGV4dGVuZGVkIGZlYXR1cmVzIGFyZSBuZWVkZWQuCitGb3IgZXhhbXBsZSBgYDxjbS9tZW1vcnk+YGAgY2FuIGJlIHVzZWQgaW4gcGxhY2Ugb2YgYGA8bWVtb3J5PmBgLgogCi0qIERvIG5vdCB1c2UgYGBzdGQ6OmF1dG9fcHRyYGAuCitBdmFpbGFibGUgZmVhdHVyZXMgYXJlOgogCi0gIFRoZSBgYHN0ZDo6YXV0b19wdHJgYCB0ZW1wbGF0ZSBpcyBkZXByZWNhdGVkIGluIEMrKzExLiBVc2UgYGBzdGQ6OnVuaXF1ZV9wdHJgYC4KKyogRnJvbSBgYEMrKzE0YGA6CisKKyAgKiBgYDxjbS9pdGVyYXRvcj5gYDoKKyAgICBgYGNtOjptYWtlX3JldmVyc2VfaXRlcmF0b3JgYCwgYGBjbTo6Y2JlZ2luYGAsIGBgY206OmNlbmRgYCwKKyAgICBgYGNtOjpyYmVnaW5gYCwgYGBjbTo6cmVuZGBgLCBgYGNtOjpjcmJlZ2luYGAsIGBgY206OmNyZW5kYGAKKworICAqIGBgPGNtL21lbW9yeT5gYDoKKyAgICBgYGNtOjptYWtlX3VuaXF1ZWBgCisKKyAgKiBgYDxjbS9zaGFyZWRfbXV0ZXg+YGA6CisgICAgYGBjbTo6c2hhcmVkX2xvY2tgYAorCisgICogYGA8Y20vdHlwZV90cmFpdHM+YGA6CisgICAgYGBjbTo6ZW5hYmxlX2lmX3RgYAorCisqIEZyb20gYGBDKysxN2BgOgorCisgICogYGA8Y20vYWxnb3JpdGhtPmBgOgorICAgIGBgY206OmNsYW1wYGAKKworICAqIGBgPGNtL2l0ZXJhdG9yPmBgOgorICAgIGBgY206OnNpemVgYCwgYGBjbTo6ZW1wdHlgYCwgYGBjbTo6ZGF0YWBgCisKKyAgKiBgYDxjbS9vcHRpb25hbD5gYDoKKyAgICBgYGNtOjpudWxsb3B0X3RgYCwgYGBjbTo6bnVsbG9wdGBgLCBgYGNtOjpvcHRpb25hbGBgLAorICAgIGBgY206Om1ha2Vfb3B0aW9uYWxgYCwgYGBjbTo6YmFkX29wdGlvbmFsX2FjY2Vzc2BgCisKKyAgKiBgYDxjbS9zaGFyZWRfbXV0ZXg+YGA6CisgICAgYGBjbTo6c2hhcmVkX211dGV4YGAKKworICAqIGBgPGNtL3N0cmluZ192aWV3PmBgOgorICAgIGBgY206OnN0cmluZ192aWV3YGAKKworICAqIGBgPGNtL3R5cGVfdHJhaXRzPmBgOgorICAgIGBgY206OmJvb2xfY29uc3RhbnRgYCwgYGBjbTo6aW52b2tlX3Jlc3VsdF90YGAsIGBgY206Omludm9rZV9yZXN1bHRgYCwKKyAgICBgYGNtOjp2b2lkX3RgYAorCisgICogYGA8Y20vdXRpbGl0eT5gYDoKKyAgICBgYGNtOjppbl9wbGFjZV90YGAsIGBgY206OmluX3BsYWNlYGAKKworKiBGcm9tIGBgQysrMjBgYDoKKworICAqIGBgPGNtL2RlcXVlPmBgOgorICAgIGBgY206OmVyYXNlYGAsIGBgY206OmVyYXNlX2lmYGAKKworICAqIGBgPGNtL2xpc3Q+YGA6CisgICAgYGBjbTo6ZXJhc2VgYCwgYGBjbTo6ZXJhc2VfaWZgYAorCisgICogYGA8Y20vbWFwPmBgIDoKKyAgICBgYGNtOjplcmFzZV9pZmBgCisKKyAgKiBgYDxjbS9zZXQ+YGAgOgorICAgIGBgY206OmVyYXNlX2lmYGAKKworICAqIGBgPGNtL3N0cmluZz5gYDoKKyAgICBgYGNtOjplcmFzZWBgLCBgYGNtOjplcmFzZV9pZmBgCisKKyAgKiBgYDxjbS91bm9yZGVyZWRfbWFwPmBgOgorICAgIGBgY206OmVyYXNlX2lmYGAKKworICAqIGBgPGNtL3Vub3JkZXJlZF9zZXQ+YGA6CisgICAgYGBjbTo6ZXJhc2VfaWZgYAorCisgICogYGA8Y20vdmVjdG9yPmBgOgorICAgIGBgY206OmVyYXNlYGAsIGBgY206OmVyYXNlX2lmYGAKKworQWRkaXRpb25hbGx5LCBzb21lIHVzZWZ1bCBub24tc3RhbmRhcmQgZXh0ZW5zaW9ucyB0byB0aGUgQysrIHN0YW5kYXJkIGxpYnJhcnkKK2FyZSBhdmFpbGFibGUgaW4gaGVhZGVycyB1bmRlciB0aGUgZGlyZWN0b3J5IGBgY21leHQvYGAgaW4gbmFtZXNwYWNlIGBgY21gYC4KK1RoZXNlIGFyZToKKworKiBgYDxjbWV4dC9hbGdvcml0aG0+YGA6CisKKyAgKiBgYGNtOjphcHBlbmRgYDoKKyAgICBBcHBlbmQgZWxlbWVudHMgdG8gYSBzZXF1ZW50aWFsIGNvbnRhaW5lci4KKworKiBgYDxjbWV4dC9pdGVyYXRvcj5gYDoKKworICAqIGBgY206OmlzX3RlcmF0b3JgYDoKKyAgICBDaGVja3MgaWYgYSB0eXBlIGlzIGFuIGl0ZXJhdG9yIHR5cGUuCisKKyAgKiBgYGNtOjppc19pbnB1dF9pdGVyYXRvcmBgOgorICAgIENoZWNrcyBpZiBhIHR5cGUgaXMgYW4gaW5wdXQgaXRlcmF0b3IgdHlwZS4KKworICAqIGBgY206OmlzX3JhbmdlYGA6CisgICAgQ2hlY2tzIGlmIGEgdHlwZSBpcyBhIHJhbmdlIHR5cGU6IG11c3QgaGF2ZSBtZXRob2RzIGBgYmVnaW4oKWBgIGFuZAorICAgIGBgZW5kKClgYCByZXR1cm5pbmcgYW4gaXRlcmF0b3IuCisKKyAgKiBgYGNtOjppc19pbnB1dF9yYW5nZWBgOgorICAgIENoZWNrcyBpZiBhIHR5cGUgaXMgYW4gaW5wdXQgcmFuZ2UgdHlwZTogbXVzdCBoYXZlIG1ldGhvZHMgYGBiZWdpbigpYGAgYW5kCisgICAgYGBlbmQoKWBgIHJldHVybmluZyBhbiBpbnB1dCBpdGVyYXRvci4KKworKiBgYDxjbWV4dC9tZW1vcnk+YGA6CisKKyAgKiBgYGNtOjpzdGF0aWNfcmVmZXJlbmNlX2Nhc3RgYDoKKyAgICBBcHBseSBhIGBgc3RhdGljX2Nhc3RgYCB0byBhIHNtYXJ0IHBvaW50ZXIuCisKKyAgKiBgYGNtOjpkeW5hbWljX3JlZmVyZW5jZV9jYXN0YGA6CisgICAgQXBwbHkgYSBgYGR5bmFtaWNfY2FzdGBgIHRvIGEgc21hcnQgcG9pbnRlci4KKworKiBgYDxjbWV4dC90eXBlX3RyYWl0cz5gYDoKKworICAqIGBgY206OmlzX2NvbnRhaW5lcmBgOgorICAgIENoZWNrcyBpZiBhIHR5cGUgaXMgYSBjb250YWluZXIgdHlwZS4KKworICAqIGBgY206OmlzX2Fzc29jaWF0aXZlX2NvbnRhaW5lcmBgOgorICAgIENoZWNrcyBpZiBhIHR5cGUgaXMgYW4gYXNzb2NpYXRpdmUgY29udGFpbmVyIHR5cGUuCisKKyAgKiBgYGNtOjppc191bm9yZGVyZWRfYXNzb2NpYXRpdmVfY29udGFpbmVyYGA6CisgICAgQ2hlY2tzIGlmIGEgdHlwZSBpcyBhbiB1bm9yZGVyZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIHR5cGUuCisKKyAgKiBgYGNtOjppc19zZXF1ZW5jZV9jb250YWluZXJgYDoKKyAgICBDaGVja3MgaWYgYSB0eXBlIGlzIGEgc2VxdWVuY2UgY29udGFpbmVyIHR5cGUuCisKKyAgKiBgYGNtOjppc191bmlxdWVfcHRyYGA6CisgICAgQ2hlY2tzIGlmIGEgdHlwZSBpcyBhIGBgc3RkOjp1bmlxdWVfcHRyYGAgdHlwZS4KKworRHluYW1pYyBNZW1vcnkgTWFuYWdlbWVudAorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitUbyBlbnN1cmUgZWZmaWNpZW50IG1lbW9yeSBtYW5hZ2VtZW50LCBpLmUuIG5vIG1lbW9yeSBsZWFrcywgaXQgaXMgcmVxdWlyZWQKK3RvIHVzZSBzbWFydCBwb2ludGVycy4gIEFueSBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIG11c3QgYmUgaGFuZGxlZCBieSBhCitzbWFydCBwb2ludGVyIHN1Y2ggYXMgYGBzdGQ6OnVuaXF1ZV9wdHJgYCBvciBgYHN0ZDo6c2hhcmVkX3B0cmBgLgorCitJdCBpcyBhbGxvd2VkIHRvIHBhc3MgcmF3IHBvaW50ZXJzIGJldHdlZW4gb2JqZWN0cyB0byBlbmFibGUgb2JqZWN0cyBzaGFyaW5nLgorQSByYXcgcG9pbnRlciAqKm11c3QqKiBub3QgYmUgZGVsZXRlZC4gT25seSB0aGUgb2JqZWN0KHMpIG93bmluZyB0aGUgc21hcnQKK3BvaW50ZXIgYXJlIGFsbG93ZWQgdG8gZGVsZXRlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBtZW1vcnkuCiAKIFNvdXJjZSBUcmVlIExheW91dAogPT09PT09PT09PT09PT09PT09CkBAIC02OSw2ICsxOTksMTIgQEAKICogYGBVdGlsaXRpZXMvYGA6CiAgIFNjcmlwdHMsIHRoaXJkLXBhcnR5IHNvdXJjZSBjb2RlLgogCisgICogYGBVdGlsaXRpZXMvc3RkL2NtYGA6CisgICAgU3VwcG9ydCBmaWxlcyBmb3IgdmFyaW91cyBDKysgc3RhbmRhcmRzLgorCisgICogYGBVdGlsaXRpZXMvc3RkL2NtZXh0YGA6CisgICAgRXh0ZW5zaW9ucyB0byB0aGUgQysrIFNUTC4KKwogICAqIGBgVXRpbGl0aWVzL1NwaGlueC9gYDoKICAgICBTcGhpbnggY29uZmlndXJhdGlvbiB0byBidWlsZCBDTWFrZSB1c2VyIGRvY3VtZW50YXRpb24uCiAKZGlmZiAtLWdpdCBhL0hlbHAvZ3VpZGUvdHV0b3JpYWwvU3RlcDYvTWF0aEZ1bmN0aW9ucy9DTWFrZUxpc3RzLnR4dCBiL0hlbHAvZ3VpZGUvdHV0b3JpYWwvU3RlcDYvTWF0aEZ1bmN0aW9ucy9DTWFrZUxpc3RzLnR4dAppbmRleCA0YmY2MDI0Li5mNjRjNmFjIDEwMDY0NAotLS0gYS9IZWxwL2d1aWRlL3R1dG9yaWFsL1N0ZXA2L01hdGhGdW5jdGlvbnMvQ01ha2VMaXN0cy50eHQKKysrIGIvSGVscC9ndWlkZS90dXRvcmlhbC9TdGVwNi9NYXRoRnVuY3Rpb25zL0NNYWtlTGlzdHMudHh0CkBAIC04LDEwICs4LDIwIEBACiAKICMgZG9lcyB0aGlzIHN5c3RlbSBwcm92aWRlIHRoZSBsb2cgYW5kIGV4cCBmdW5jdGlvbnM/CiBpbmNsdWRlKENoZWNrU3ltYm9sRXhpc3RzKQotc2V0KENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUyAibSIpCiBjaGVja19zeW1ib2xfZXhpc3RzKGxvZyAibWF0aC5oIiBIQVZFX0xPRykKIGNoZWNrX3N5bWJvbF9leGlzdHMoZXhwICJtYXRoLmgiIEhBVkVfRVhQKQoraWYoTk9UIChIQVZFX0xPRyBBTkQgSEFWRV9FWFApKQorICB1bnNldChIQVZFX0xPRyBDQUNIRSkKKyAgdW5zZXQoSEFWRV9FWFAgQ0FDSEUpCisgIHNldChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMgIm0iKQorICBjaGVja19zeW1ib2xfZXhpc3RzKGxvZyAibWF0aC5oIiBIQVZFX0xPRykKKyAgY2hlY2tfc3ltYm9sX2V4aXN0cyhleHAgIm1hdGguaCIgSEFWRV9FWFApCisgIGlmKEhBVkVfTE9HIEFORCBIQVZFX0VYUCkKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoTWF0aEZ1bmN0aW9ucyBQUklWQVRFIG0pCisgIGVuZGlmKCkKK2VuZGlmKCkKIAorIyBhZGQgY29tcGlsZSBkZWZpbml0aW9ucwogaWYoSEFWRV9MT0cgQU5EIEhBVkVfRVhQKQogICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhNYXRoRnVuY3Rpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSVZBVEUgIkhBVkVfTE9HIiAiSEFWRV9FWFAiKQpkaWZmIC0tZ2l0IGEvSGVscC9ndWlkZS90dXRvcmlhbC9pbmRleC5yc3QgYi9IZWxwL2d1aWRlL3R1dG9yaWFsL2luZGV4LnJzdAppbmRleCBhODQ0Y2JmLi40ZmJjZDRjIDEwMDY0NAotLS0gYS9IZWxwL2d1aWRlL3R1dG9yaWFsL2luZGV4LnJzdAorKysgYi9IZWxwL2d1aWRlL3R1dG9yaWFsL2luZGV4LnJzdApAQCAtMzg2LDcgKzM4Niw3IEBACiAuLiBsaXRlcmFsaW5jbHVkZTo6IFN0ZXA2L01hdGhGdW5jdGlvbnMvQ01ha2VMaXN0cy50eHQKICAgOmxhbmd1YWdlOiBjbWFrZQogICA6c3RhcnQtYWZ0ZXI6ICMgZG9lcyB0aGlzIHN5c3RlbSBwcm92aWRlIHRoZSBsb2cgYW5kIGV4cCBmdW5jdGlvbnM/Ci0gIDplbmQtYmVmb3JlOiBpZihIQVZFX0xPRyBBTkQgSEFWRV9FWFApCisgIDplbmQtYmVmb3JlOiAjIGFkZCBjb21waWxlIGRlZmluaXRpb25zCiAKIE5vdyBsZXQncyBhZGQgdGhlc2UgZGVmaW5lcyB0byBgYFR1dG9yaWFsQ29uZmlnLmguaW5gYCBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbQogZnJvbSBgYG15c3FydC5jeHhgYDoKZGlmZiAtLWdpdCBhL0hlbHAvbWFudWFsL2NtYWtlLWNvbW1hbmRzLjcucnN0IGIvSGVscC9tYW51YWwvY21ha2UtY29tbWFuZHMuNy5yc3QKaW5kZXggNTliYTg5Ny4uODc3NDNiNCAxMDA2NDQKLS0tIGEvSGVscC9tYW51YWwvY21ha2UtY29tbWFuZHMuNy5yc3QKKysrIGIvSGVscC9tYW51YWwvY21ha2UtY29tbWFuZHMuNy5yc3QKQEAgLTE2LDYgKzE2LDcgQEAKICAgIDptYXhkZXB0aDogMQogCiAgICAvY29tbWFuZC9icmVhaworICAgL2NvbW1hbmQvY21ha2VfY29tbWFuZAogICAgL2NvbW1hbmQvY21ha2VfaG9zdF9zeXN0ZW1faW5mb3JtYXRpb24KICAgIC9jb21tYW5kL2NtYWtlX21pbmltdW1fcmVxdWlyZWQKICAgIC9jb21tYW5kL2NtYWtlX3BhcnNlX2FyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvSGVscC9tYW51YWwvY21ha2UtZ2VuZXJhdG9yLWV4cHJlc3Npb25zLjcucnN0IGIvSGVscC9tYW51YWwvY21ha2UtZ2VuZXJhdG9yLWV4cHJlc3Npb25zLjcucnN0CmluZGV4IDY5MTQ4MWIuLjcyZGU0YWMgMTAwNjQ0Ci0tLSBhL0hlbHAvbWFudWFsL2NtYWtlLWdlbmVyYXRvci1leHByZXNzaW9ucy43LnJzdAorKysgYi9IZWxwL21hbnVhbC9jbWFrZS1nZW5lcmF0b3ItZXhwcmVzc2lvbnMuNy5yc3QKQEAgLTI1OSw2ICsyNTksMTA5IEBACiAgICAgYWRkX2V4ZWN1dGFibGUobXlhcHAgbWFpbi5jcHApCiAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKG15YXBwIG15YXBwX2MgbXlhcHBfY3h4KQogCisuLiBfYEJvb2xlYW4gTElOS19MQU5HVUFHRSBHZW5lcmF0b3IgRXhwcmVzc2lvbmA6CisKK2BgJDxMSU5LX0xBTkdfQU5EX0lEOmxhbmd1YWdlLGNvbXBpbGVyX2lkcz5gYAorICBgYDFgYCB3aGVuIHRoZSBsYW5ndWFnZSB1c2VkIGZvciBsaW5rIHN0ZXAgbWF0Y2hlcyBgYGxhbmd1YWdlYGAgYW5kIHRoZQorICBDTWFrZSdzIGNvbXBpbGVyIGlkIG9mIHRoZSBsYW5ndWFnZSBsaW5rZXIgbWF0Y2hlcyBhbnkgb25lIG9mIHRoZSBlbnRyaWVzCisgIGluIGBgY29tcGlsZXJfaWRzYGAsIG90aGVyd2lzZSBgYDBgYC4gVGhpcyBleHByZXNzaW9uIGlzIGEgc2hvcnQgZm9ybSBmb3IgdGhlCisgIGNvbWJpbmF0aW9uIG9mIGBgJDxMSU5LX0xBTkdVQUdFOmxhbmd1YWdlPmBgIGFuZAorICBgYCQ8TEFOR19DT01QSUxFUl9JRDpjb21waWxlcl9pZHM+YGAuIFRoaXMgZXhwcmVzc2lvbiBtYXkgYmUgdXNlZCB0byBzcGVjaWZ5CisgIGxpbmsgbGlicmFyaWVzLCBsaW5rIG9wdGlvbnMsIGxpbmsgZGlyZWN0b3JpZXMgYW5kIGxpbmsgZGVwZW5kZW5jaWVzIG9mIGEKKyAgcGFydGljdWxhciBsYW5ndWFnZSBhbmQgbGlua2VyIGNvbWJpbmF0aW9uIGluIGEgdGFyZ2V0LiBGb3IgZXhhbXBsZToKKworICAuLiBjb2RlLWJsb2NrOjogY21ha2UKKworICAgIGFkZF9saWJyYXJ5KGxpYkNfQ2xhbmcgLi4uKQorICAgIGFkZF9saWJyYXJ5KGxpYkNYWF9DbGFuZyAuLi4pCisgICAgYWRkX2xpYnJhcnkobGliQ19JbnRlbCAuLi4pCisgICAgYWRkX2xpYnJhcnkobGliQ1hYX0ludGVsIC4uLikKKworICAgIGFkZF9leGVjdXRhYmxlKG15YXBwIG1haW4uYykKKyAgICBpZiAoQ1hYX0NPTkZJRykKKyAgICAgIHRhcmdldF9zb3VyY2VzKG15YXBwIFBSSVZBVEUgZmlsZS5jeHgpCisgICAgZW5kaWYoKQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhteWFwcAorICAgICAgUFJJVkFURSAkPCQ8TElOS19MQU5HX0FORF9JRDpDWFgsQ2xhbmcsQXBwbGVDbGFuZz46bGliQ1hYX0NsYW5nPgorICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HX0FORF9JRDpDLENsYW5nLEFwcGxlQ2xhbmc+OmxpYkNfQ2xhbmc+CisgICAgICAgICAgICAgICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkNYWCxJbnRlbD46bGliQ1hYX0ludGVsPgorICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HX0FORF9JRDpDLEludGVsPjpsaWJDX0ludGVsPikKKworICBUaGlzIHNwZWNpZmllcyB0aGUgdXNlIG9mIGRpZmZlcmVudCBsaW5rIGxpYnJhcmllcyBiYXNlZCBvbiBib3RoIHRoZQorICBjb21waWxlciBpZCBhbmQgbGluayBsYW5ndWFnZS4gVGhpcyBleGFtcGxlIHdpbGwgaGF2ZSB0YXJnZXQgYGBsaWJDWFhfQ2xhbmdgYAorICBhcyBsaW5rIGRlcGVuZGVuY3kgd2hlbiBgYENsYW5nYGAgb3IgYGBBcHBsZUNsYW5nYGAgaXMgdGhlIGBgQ1hYYGAKKyAgbGlua2VyLCBhbmQgYGBsaWJDWFhfSW50ZWxgYCB3aGVuIGBgSW50ZWxgYCBpcyB0aGUgYGBDWFhgYCBsaW5rZXIuCisgIExpa2V3aXNlIHdoZW4gdGhlIGBgQ2BgIGxpbmtlciBpcyBgYENsYW5nYGAgb3IgYGBBcHBsZUNsYW5nYGAsIHRhcmdldAorICBgYGxpYkNfQ2xhbmdgYCB3aWxsIGJlIGFkZGVkIGFzIGxpbmsgZGVwZW5kZW5jeSBhbmQgYGBsaWJDX0ludGVsYGAgd2hlbgorICBgYEludGVsYGAgaXMgdGhlIGBgQ2BgIGxpbmtlci4KKworICBTZWUgOnJlZjpgdGhlIG5vdGUgcmVsYXRlZCB0bworICA8Q29uc3RyYWludHMgTElOS19MQU5HVUFHRSBHZW5lcmF0b3IgRXhwcmVzc2lvbj5gCisgIGBgJDxMSU5LX0xBTkdVQUdFOmxhbmd1YWdlPmBgIGZvciBjb25zdHJhaW50cyBhYm91dCB0aGUgdXNhZ2Ugb2YgdGhpcworICBnZW5lcmF0b3IgZXhwcmVzc2lvbi4KKworYGAkPExJTktfTEFOR1VBR0U6bGFuZ3VhZ2VzPmBgCisgIGBgMWBgIHdoZW4gdGhlIGxhbmd1YWdlIHVzZWQgZm9yIGxpbmsgc3RlcCBtYXRjaGVzIGFueSBvZiB0aGUgZW50cmllcworICBpbiBgYGxhbmd1YWdlc2BgLCBvdGhlcndpc2UgYGAwYGAuICBUaGlzIGV4cHJlc3Npb24gbWF5IGJlIHVzZWQgdG8gc3BlY2lmeQorICBsaW5rIGxpYnJhcmllcywgbGluayBvcHRpb25zLCBsaW5rIGRpcmVjdG9yaWVzIGFuZCBsaW5rIGRlcGVuZGVuY2llcyBvZiBhCisgIHBhcnRpY3VsYXIgbGFuZ3VhZ2UgaW4gYSB0YXJnZXQuIEZvciBleGFtcGxlOgorCisgIC4uIGNvZGUtYmxvY2s6OiBjbWFrZQorCisgICAgYWRkX2xpYnJhcnkoYXBpX0MgLi4uKQorICAgIGFkZF9saWJyYXJ5KGFwaV9DWFggLi4uKQorICAgIGFkZF9saWJyYXJ5KGFwaSBJTlRFUkZBQ0UpCisgICAgdGFyZ2V0X2xpbmtfb3B0aW9ucyhhcGkgSU5URVJGQUNFICQ8JDxMSU5LX0xBTkdVQUdFOkM+Oi1vcHRfYz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HVUFHRTpDWFg+Oi1vcHRfY3h4PikKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoYXBpIElOVEVSRkFDRSAkPCQ8TElOS19MQU5HVUFHRTpDPjphcGlfQz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HVUFHRTpDWFg+OmFwaV9DWFg+KQorCisgICAgYWRkX2V4ZWN1dGFibGUobXlhcHAxIG1haW4uYykKKyAgICB0YXJnZXRfbGlua19vcHRpb25zKG15YXBwMSBQUklWQVRFIGFwaSkKKworICAgIGFkZF9leGVjdXRhYmxlKG15YXBwMiBtYWluLmNwcCkKKyAgICB0YXJnZXRfbGlua19vcHRpb25zKG15YXBwMiBQUklWQVRFIGFwaSkKKworICBUaGlzIHNwZWNpZmllcyB0byB1c2UgdGhlIGBgYXBpYGAgdGFyZ2V0IGZvciBsaW5raW5nIHRhcmdldHMgYGBteWFwcDFgYCBhbmQKKyAgYGBteWFwcDJgYC4gSW4gcHJhY3RpY2UsIGBgbXlhcHAxYGAgd2lsbCBsaW5rIHdpdGggdGFyZ2V0IGBgYXBpX0NgYCBhbmQKKyAgb3B0aW9uIGBgLW9wdF9jYGAgYmVjYXVzZSBpdCB3aWxsIHVzZSBgYENgYCBhcyBsaW5rIGxhbmd1YWdlLiBBbmQgYGBteWFwcDJgYAorICB3aWxsIGxpbmsgd2l0aCBgYGFwaV9DWFhgYCBhbmQgb3B0aW9uIGBgLW9wdF9jeHhgYCBiZWNhdXNlIGBgQ1hYYGAgd2lsbCBiZQorICB0aGUgbGluayBsYW5ndWFnZS4KKworICAuLiBfYENvbnN0cmFpbnRzIExJTktfTEFOR1VBR0UgR2VuZXJhdG9yIEV4cHJlc3Npb25gOgorCisgIC4uIG5vdGU6OgorCisgICAgVG8gZGV0ZXJtaW5lIHRoZSBsaW5rIGxhbmd1YWdlIG9mIGEgdGFyZ2V0LCBpdCBpcyByZXF1aXJlZCB0byBjb2xsZWN0LAorICAgIHRyYW5zaXRpdmVseSwgYWxsIHRoZSB0YXJnZXRzIHdoaWNoIHdpbGwgYmUgbGlua2VkIHRvIGl0LiBTbywgZm9yIGxpbmsKKyAgICBsaWJyYXJpZXMgcHJvcGVydGllcywgYSBkb3VibGUgZXZhbHVhdGlvbiB3aWxsIGJlIGRvbmUuIER1cmluZyB0aGUgZmlyc3QKKyAgICBldmFsdWF0aW9uLCBgYCQ8TElOS19MQU5HVUFHRTouLj5gYCBleHByZXNzaW9ucyB3aWxsIGFsd2F5cyByZXR1cm4gYGAwYGAuCisgICAgVGhlIGxpbmsgbGFuZ3VhZ2UgY29tcHV0ZWQgYWZ0ZXIgdGhpcyBmaXJzdCBwYXNzIHdpbGwgYmUgdXNlZCB0byBkbyB0aGUKKyAgICBzZWNvbmQgcGFzcy4gVG8gYXZvaWQgaW5jb25zaXN0ZW5jeSwgaXQgaXMgcmVxdWlyZWQgdGhhdCB0aGUgc2Vjb25kIHBhc3MKKyAgICBkbyBub3QgY2hhbmdlIHRoZSBsaW5rIGxhbmd1YWdlLiBNb3Jlb3ZlciwgdG8gYXZvaWQgdW5leHBlY3RlZAorICAgIHNpZGUtZWZmZWN0cywgaXQgaXMgcmVxdWlyZWQgdG8gc3BlY2lmeSBjb21wbGV0ZSBlbnRpdGllcyBhcyBwYXJ0IG9mIHRoZQorICAgIGBgJDxMSU5LX0xBTkdVQUdFOi4uPmBgIGV4cHJlc3Npb24uIEZvciBleGFtcGxlOgorCisgICAgLi4gY29kZS1ibG9jazo6IGNtYWtlCisKKyAgICAgIGFkZF9saWJyYXJ5KGxpYiBTVEFUSUMgZmlsZS5jeHgpCisgICAgICBhZGRfbGlicmFyeShsaWJvdGhlciBTVEFUSUMgZmlsZS5jKQorCisgICAgICAjIGJhZCB1c2FnZQorICAgICAgYWRkX2V4ZWN1dGFibGUobXlhcHAxIG1haW4uYykKKyAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhteWFwcDEgUFJJVkFURSBsaWIkPCQ8TElOS19MQU5HVUFHRTpDPjpvdGhlcj4pCisKKyAgICAgICMgY29ycmVjdCB1c2FnZQorICAgICAgYWRkX2V4ZWN1dGFibGUobXlhcHAyIG1haW4uYykKKyAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhteWFwcDIgUFJJVkFURSAkPCQ8TElOS19MQU5HVUFHRTpDPjpsaWJvdGhlcj4pCisKKyAgICBJbiB0aGlzIGV4YW1wbGUsIGZvciBgYG15YXBwMWBgLCB0aGUgZmlyc3QgcGFzcyB3aWxsLCB1bmV4cGVjdGVkbHksCisgICAgZGV0ZXJtaW5lIHRoYXQgdGhlIGxpbmsgbGFuZ3VhZ2UgaXMgYGBDWFhgYCBiZWNhdXNlIHRoZSBldmFsdWF0aW9uIG9mIHRoZQorICAgIGdlbmVyYXRvciBleHByZXNzaW9uIHdpbGwgYmUgYW4gZW1wdHkgc3RyaW5nIHNvIGBgbXlhcHAxYGAgd2lsbCBkZXBlbmRzIG9uCisgICAgdGFyZ2V0IGBgbGliYGAgd2hpY2ggaXMgYGBDKytgYC4gT24gdGhlIGNvbnRyYXJ5LCBmb3IgYGBteWFwcDJgYCwgdGhlIGZpcnN0CisgICAgZXZhbHVhdGlvbiB3aWxsIGdpdmUgYGBDYGAgYXMgbGluayBsYW5ndWFnZSwgc28gdGhlIHNlY29uZCBwYXNzIHdpbGwKKyAgICBjb3JyZWN0bHkgYWRkIHRhcmdldCBgYGxpYm90aGVyYGAgYXMgbGluayBkZXBlbmRlbmN5LgorCiBTdHJpbmctVmFsdWVkIEdlbmVyYXRvciBFeHByZXNzaW9ucwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtNDUwLDIyICs1NTMsNDEgQEAKICAgPEJvb2xlYW4gQ09NUElMRV9MQU5HVUFHRSBHZW5lcmF0b3IgRXhwcmVzc2lvbj5gCiAgIGBgJDxDT01QSUxFX0xBTkdVQUdFOmxhbmd1YWdlPmBgCiAgIGZvciBub3RlcyBhYm91dCB0aGUgcG9ydGFiaWxpdHkgb2YgdGhpcyBnZW5lcmF0b3IgZXhwcmVzc2lvbi4KK2BgJDxMSU5LX0xBTkdVQUdFPmBgCisgIFRoZSBsaW5rIGxhbmd1YWdlIG9mIHRhcmdldCB3aGVuIGV2YWx1YXRpbmcgbGluayBvcHRpb25zLgorICBTZWUgOnJlZjpgdGhlIHJlbGF0ZWQgYm9vbGVhbiBleHByZXNzaW9uCisgIDxCb29sZWFuIExJTktfTEFOR1VBR0UgR2VuZXJhdG9yIEV4cHJlc3Npb24+YCBgYCQ8TElOS19MQU5HVUFHRTpsYW5ndWFnZT5gYAorICBmb3Igbm90ZXMgYWJvdXQgdGhlIHBvcnRhYmlsaXR5IG9mIHRoaXMgZ2VuZXJhdG9yIGV4cHJlc3Npb24uCisKKyAgLi4gbm90ZTo6CisKKyAgICBUaGlzIGdlbmVyYXRvciBleHByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGxpbmsgbGlicmFyaWVzCisgICAgcHJvcGVydGllcyB0byBhdm9pZCBzaWRlLWVmZmVjdHMgZHVlIHRvIHRoZSBkb3VibGUgZXZhbHVhdGlvbiBvZgorICAgIHRoZXNlIHByb3BlcnRpZXMuCiAKIFRhcmdldC1EZXBlbmRlbnQgUXVlcmllcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWBgJDxUQVJHRVRfTkFNRV9JRl9FWElTVFM6dGd0PmBgCi0gIEV4cGFuZHMgdG8gdGhlIGBgdGd0YGAgaWYgdGhlIGdpdmVuIHRhcmdldCBleGlzdHMsIGFuIGVtcHR5IHN0cmluZwotICBvdGhlcndpc2UuCi1gYCQ8VEFSR0VUX0ZJTEU6dGd0PmBgCi0gIEZ1bGwgcGF0aCB0byBtYWluIGZpbGUgKC5leGUsIC5zby4xLjIsIC5hKSB3aGVyZSBgYHRndGBgIGlzIHRoZSBuYW1lIG9mIGEKLSAgdGFyZ2V0LgotYGAkPFRBUkdFVF9GSUxFX0JBU0VfTkFNRTp0Z3Q+YGAKLSAgQmFzZSBuYW1lIG9mIG1haW4gZmlsZSB3aGVyZSBgYHRndGBgIGlzIHRoZSBuYW1lIG9mIGEgdGFyZ2V0LgorVGhlc2UgcXVlcmllcyByZWZlciB0byBhIHRhcmdldCBgYHRndGBgLiBUaGlzIGNhbiBiZSBhbnkgcnVudGltZSBhcnRpZmFjdCwKK25hbWVseToKIAotICBUaGUgYmFzZSBuYW1lIGNvcnJlc3BvbmRzIHRvIHRoZSB0YXJnZXQgZmlsZSBuYW1lIChzZWUKLSAgYGAkPFRBUkdFVF9GSUxFX05BTUU6dGd0PmBgKSB3aXRob3V0IHByZWZpeCBhbmQgc3VmZml4LiBGb3IgZXhhbXBsZSwgaWYKLSAgdGFyZ2V0IGZpbGUgbmFtZSBpcyBgYGxpYmJhc2Uuc29gYCwgdGhlIGJhc2UgbmFtZSBpcyBgYGJhc2VgYC4KKyogYW4gZXhlY3V0YWJsZSB0YXJnZXQgY3JlYXRlZCBieSA6Y29tbWFuZDpgYWRkX2V4ZWN1dGFibGVgCisqIGEgc2hhcmVkIGxpYnJhcnkgdGFyZ2V0IChgYC5zb2BgLCBgYC5kbGxgYCBidXQgbm90IHRoZWlyIGBgLmxpYmBgIGltcG9ydCBsaWJyYXJ5KQorICBjcmVhdGVkIGJ5IDpjb21tYW5kOmBhZGRfbGlicmFyeWAKKyogYSBzdGF0aWMgbGlicmFyeSB0YXJnZXQgY3JlYXRlZCBieSA6Y29tbWFuZDpgYWRkX2xpYnJhcnlgCisKK0luIHRoZSBmb2xsb3dpbmcsICJ0aGUgYGB0Z3RgYCBmaWxlbmFtZSIgbWVhbnMgdGhlIG5hbWUgb2YgdGhlIGBgdGd0YGAKK2JpbmFyeSBmaWxlLiBUaGlzIGhhcyB0byBiZSBkaXN0aW5ndWlzaGVkIGZyb20gInRoZSB0YXJnZXQgbmFtZSIsCit3aGljaCBpcyBqdXN0IHRoZSBzdHJpbmcgYGB0Z3RgYC4KKworYGAkPFRBUkdFVF9OQU1FX0lGX0VYSVNUUzp0Z3Q+YGAKKyAgVGhlIHRhcmdldCBuYW1lIGBgdGd0YGAgaWYgdGhlIHRhcmdldCBleGlzdHMsIGFuIGVtcHR5IHN0cmluZyBvdGhlcndpc2UuCitgYCQ8VEFSR0VUX0ZJTEU6dGd0PmBgCisgIEZ1bGwgcGF0aCB0byB0aGUgYGB0Z3RgYCBiaW5hcnkgZmlsZS4KK2BgJDxUQVJHRVRfRklMRV9CQVNFX05BTUU6dGd0PmBgCisgIEJhc2UgbmFtZSBvZiBgYHRndGBgLCBpLmUuIGBgJDxUQVJHRVRfRklMRV9OQU1FOnRndD5gYCB3aXRob3V0IHByZWZpeCBhbmQKKyAgc3VmZml4LgorICBGb3IgZXhhbXBsZSwgaWYgdGhlIGBgdGd0YGAgZmlsZW5hbWUgaXMgYGBsaWJiYXNlLnNvYGAsIHRoZSBiYXNlIG5hbWUgaXMgYGBiYXNlYGAuCiAKICAgU2VlIGFsc28gdGhlIDpwcm9wX3RndDpgT1VUUFVUX05BTUVgLCA6cHJvcF90Z3Q6YEFSQ0hJVkVfT1VUUFVUX05BTUVgLAogICA6cHJvcF90Z3Q6YExJQlJBUllfT1VUUFVUX05BTUVgIGFuZCA6cHJvcF90Z3Q6YFJVTlRJTUVfT1VUUFVUX05BTUVgCkBAIC00ODAsMzIgKzYwMiwzMSBAQAogICBOb3RlIHRoYXQgYGB0Z3RgYCBpcyBub3QgYWRkZWQgYXMgYSBkZXBlbmRlbmN5IG9mIHRoZSB0YXJnZXQgdGhpcwogICBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbi4KIGBgJDxUQVJHRVRfRklMRV9QUkVGSVg6dGd0PmBgCi0gIFByZWZpeCBvZiBtYWluIGZpbGUgd2hlcmUgYGB0Z3RgYCBpcyB0aGUgbmFtZSBvZiBhIHRhcmdldC4KKyAgUHJlZml4IG9mIHRoZSBgYHRndGBgIGZpbGVuYW1lIChzdWNoIGFzIGBgbGliYGApLgogCiAgIFNlZSBhbHNvIHRoZSA6cHJvcF90Z3Q6YFBSRUZJWGAgdGFyZ2V0IHByb3BlcnR5LgogCiAgIE5vdGUgdGhhdCBgYHRndGBgIGlzIG5vdCBhZGRlZCBhcyBhIGRlcGVuZGVuY3kgb2YgdGhlIHRhcmdldCB0aGlzCiAgIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIG9uLgogYGAkPFRBUkdFVF9GSUxFX1NVRkZJWDp0Z3Q+YGAKLSAgU3VmZml4IG9mIG1haW4gZmlsZSB3aGVyZSBgYHRndGBgIGlzIHRoZSBuYW1lIG9mIGEgdGFyZ2V0LgotCi0gIFRoZSBzdWZmaXggY29ycmVzcG9uZHMgdG8gdGhlIGZpbGUgZXh0ZW5zaW9uIChzdWNoIGFzICIuc28iIG9yICIuZXhlIikuCisgIFN1ZmZpeCBvZiB0aGUgYGB0Z3RgYCBmaWxlbmFtZSAoZXh0ZW5zaW9uIHN1Y2ggYXMgYGAuc29gYCBvciBgYC5leGVgYCkuCiAKICAgU2VlIGFsc28gdGhlIDpwcm9wX3RndDpgU1VGRklYYCB0YXJnZXQgcHJvcGVydHkuCiAKICAgTm90ZSB0aGF0IGBgdGd0YGAgaXMgbm90IGFkZGVkIGFzIGEgZGVwZW5kZW5jeSBvZiB0aGUgdGFyZ2V0IHRoaXMKICAgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb24uCiBgYCQ8VEFSR0VUX0ZJTEVfTkFNRTp0Z3Q+YGAKLSAgTmFtZSBvZiBtYWluIGZpbGUgKC5leGUsIC5zby4xLjIsIC5hKS4KKyAgVGhlIGBgdGd0YGAgZmlsZW5hbWUuCiBgYCQ8VEFSR0VUX0ZJTEVfRElSOnRndD5gYAotICBEaXJlY3Rvcnkgb2YgbWFpbiBmaWxlICguZXhlLCAuc28uMS4yLCAuYSkuCisgIERpcmVjdG9yeSBvZiB0aGUgYGB0Z3RgYCBiaW5hcnkgZmlsZS4KIGBgJDxUQVJHRVRfTElOS0VSX0ZJTEU6dGd0PmBgCi0gIEZpbGUgdXNlZCB0byBsaW5rICguYSwgLmxpYiwgLnNvKSB3aGVyZSBgYHRndGBgIGlzIHRoZSBuYW1lIG9mIGEgdGFyZ2V0LgorICBGaWxlIHVzZWQgd2hlbiBsaW5raW5nIHRvIHRoZSBgYHRndGBgIHRhcmdldC4gIFRoaXMgd2lsbCB1c3VhbGx5CisgIGJlIHRoZSBsaWJyYXJ5IHRoYXQgYGB0Z3RgYCByZXByZXNlbnRzIChgYC5hYGAsIGBgLmxpYmBgLCBgYC5zb2BgKSwKKyAgYnV0IGZvciBhIHNoYXJlZCBsaWJyYXJ5IG9uIERMTCBwbGF0Zm9ybXMsIGl0IHdvdWxkIGJlIHRoZSBgYC5saWJgYAorICBpbXBvcnQgbGlicmFyeSBhc3NvY2lhdGVkIHdpdGggdGhlIERMTC4KIGBgJDxUQVJHRVRfTElOS0VSX0ZJTEVfQkFTRV9OQU1FOnRndD5gYAotICBCYXNlIG5hbWUgb2YgZmlsZSB1c2VkIHRvIGxpbmsgd2hlcmUgYGB0Z3RgYCBpcyB0aGUgbmFtZSBvZiBhIHRhcmdldC4KLQotICBUaGUgYmFzZSBuYW1lIGNvcnJlc3BvbmRzIHRvIHRoZSB0YXJnZXQgbGlua2VyIGZpbGUgbmFtZSAoc2VlCi0gIGBgJDxUQVJHRVRfTElOS0VSX0ZJTEVfTkFNRTp0Z3Q+YGApIHdpdGhvdXQgcHJlZml4IGFuZCBzdWZmaXguIEZvciBleGFtcGxlLAorICBCYXNlIG5hbWUgb2YgZmlsZSB1c2VkIHRvIGxpbmsgdGhlIHRhcmdldCBgYHRndGBgLCBpLmUuCisgIGBgJDxUQVJHRVRfTElOS0VSX0ZJTEVfTkFNRTp0Z3Q+YGAgd2l0aG91dCBwcmVmaXggYW5kIHN1ZmZpeC4gRm9yIGV4YW1wbGUsCiAgIGlmIHRhcmdldCBmaWxlIG5hbWUgaXMgYGBsaWJiYXNlLmFgYCwgdGhlIGJhc2UgbmFtZSBpcyBgYGJhc2VgYC4KIAogICBTZWUgYWxzbyB0aGUgOnByb3BfdGd0OmBPVVRQVVRfTkFNRWAsIDpwcm9wX3RndDpgQVJDSElWRV9PVVRQVVRfTkFNRWAsCkBAIC01MjAsNyArNjQxLDcgQEAKICAgTm90ZSB0aGF0IGBgdGd0YGAgaXMgbm90IGFkZGVkIGFzIGEgZGVwZW5kZW5jeSBvZiB0aGUgdGFyZ2V0IHRoaXMKICAgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb24uCiBgYCQ8VEFSR0VUX0xJTktFUl9GSUxFX1BSRUZJWDp0Z3Q+YGAKLSAgUHJlZml4IG9mIGZpbGUgdXNlZCB0byBsaW5rIHdoZXJlIGBgdGd0YGAgaXMgdGhlIG5hbWUgb2YgYSB0YXJnZXQuCisgIFByZWZpeCBvZiBmaWxlIHVzZWQgdG8gbGluayB0YXJnZXQgYGB0Z3RgYC4KIAogICBTZWUgYWxzbyB0aGUgOnByb3BfdGd0OmBQUkVGSVhgIGFuZCA6cHJvcF90Z3Q6YElNUE9SVF9QUkVGSVhgIHRhcmdldAogICBwcm9wZXJ0aWVzLgpAQCAtNTM4LDE1ICs2NTksMTUgQEAKICAgTm90ZSB0aGF0IGBgdGd0YGAgaXMgbm90IGFkZGVkIGFzIGEgZGVwZW5kZW5jeSBvZiB0aGUgdGFyZ2V0IHRoaXMKICAgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb24uCiBgYCQ8VEFSR0VUX0xJTktFUl9GSUxFX05BTUU6dGd0PmBgCi0gIE5hbWUgb2YgZmlsZSB1c2VkIHRvIGxpbmsgKC5hLCAubGliLCAuc28pLgorICBOYW1lIG9mIGZpbGUgdXNlZCB0byBsaW5rIHRhcmdldCBgYHRndGBgLgogYGAkPFRBUkdFVF9MSU5LRVJfRklMRV9ESVI6dGd0PmBgCi0gIERpcmVjdG9yeSBvZiBmaWxlIHVzZWQgdG8gbGluayAoLmEsIC5saWIsIC5zbykuCisgIERpcmVjdG9yeSBvZiBmaWxlIHVzZWQgdG8gbGluayB0YXJnZXQgYGB0Z3RgYC4KIGBgJDxUQVJHRVRfU09OQU1FX0ZJTEU6dGd0PmBgCi0gIEZpbGUgd2l0aCBzb25hbWUgKC5zby4zKSB3aGVyZSBgYHRndGBgIGlzIHRoZSBuYW1lIG9mIGEgdGFyZ2V0LgorICBGaWxlIHdpdGggc29uYW1lIChgYC5zby4zYGApIHdoZXJlIGBgdGd0YGAgaXMgdGhlIG5hbWUgb2YgYSB0YXJnZXQuCiBgYCQ8VEFSR0VUX1NPTkFNRV9GSUxFX05BTUU6dGd0PmBgCi0gIE5hbWUgb2YgZmlsZSB3aXRoIHNvbmFtZSAoLnNvLjMpLgorICBOYW1lIG9mIGZpbGUgd2l0aCBzb25hbWUgKGBgLnNvLjNgYCkuCiBgYCQ8VEFSR0VUX1NPTkFNRV9GSUxFX0RJUjp0Z3Q+YGAKLSAgRGlyZWN0b3J5IG9mIHdpdGggc29uYW1lICguc28uMykuCisgIERpcmVjdG9yeSBvZiB3aXRoIHNvbmFtZSAoYGAuc28uM2BgKS4KIGBgJDxUQVJHRVRfUERCX0ZJTEU6dGd0PmBgCiAgIEZ1bGwgcGF0aCB0byB0aGUgbGlua2VyIGdlbmVyYXRlZCBwcm9ncmFtIGRhdGFiYXNlIGZpbGUgKC5wZGIpCiAgIHdoZXJlIGBgdGd0YGAgaXMgdGhlIG5hbWUgb2YgYSB0YXJnZXQuCkBAIC01ODksMTEgKzcxMCwxMCBAQAogICBOb3RlIHRoYXQgYGB0Z3RgYCBpcyBub3QgYWRkZWQgYXMgYSBkZXBlbmRlbmN5IG9mIHRoZSB0YXJnZXQgdGhpcwogICBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbi4KIGBgJDxUQVJHRVRfUFJPUEVSVFk6cHJvcD5gYAotICBWYWx1ZSBvZiB0aGUgcHJvcGVydHkgYGBwcm9wYGAgb24gdGhlIHRhcmdldCBvbiB3aGljaCB0aGUgZ2VuZXJhdG9yCi0gIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLiBOb3RlIHRoYXQgZm9yIGdlbmVyYXRvciBleHByZXNzaW9ucyBpbgotICA6cmVmOmBUYXJnZXQgVXNhZ2UgUmVxdWlyZW1lbnRzYCB0aGlzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkKLSAgb24gdGhlIGNvbnN1bWluZyB0YXJnZXQgcmF0aGVyIHRoYW4gdGhlIHRhcmdldCBzcGVjaWZ5aW5nIHRoZQotICByZXF1aXJlbWVudC4KKyAgVmFsdWUgb2YgdGhlIHByb3BlcnR5IGBgcHJvcGBgIG9uIHRoZSB0YXJnZXQgZm9yIHdoaWNoIHRoZSBleHByZXNzaW9uCisgIGlzIGJlaW5nIGV2YWx1YXRlZC4gTm90ZSB0aGF0IGZvciBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgaW4KKyAgOnJlZjpgVGFyZ2V0IFVzYWdlIFJlcXVpcmVtZW50c2AgdGhpcyBpcyB0aGUgY29uc3VtaW5nIHRhcmdldCByYXRoZXIKKyAgdGhhbiB0aGUgdGFyZ2V0IHNwZWNpZnlpbmcgdGhlIHJlcXVpcmVtZW50LgogYGAkPElOU1RBTExfUFJFRklYPmBgCiAgIENvbnRlbnQgb2YgdGhlIGluc3RhbGwgcHJlZml4IHdoZW4gdGhlIHRhcmdldCBpcyBleHBvcnRlZCB2aWEKICAgOmNvbW1hbmQ6YGluc3RhbGwoRVhQT1JUKWAsIG9yIHdoZW4gZXZhbHVhdGVkIGluCmRpZmYgLS1naXQgYS9IZWxwL21hbnVhbC9jbWFrZS1wb2xpY2llcy43LnJzdCBiL0hlbHAvbWFudWFsL2NtYWtlLXBvbGljaWVzLjcucnN0CmluZGV4IGMyNTYyNTAuLjA4ZDU5ZTcgMTAwNjQ0Ci0tLSBhL0hlbHAvbWFudWFsL2NtYWtlLXBvbGljaWVzLjcucnN0CisrKyBiL0hlbHAvbWFudWFsL2NtYWtlLXBvbGljaWVzLjcucnN0CkBAIC01MSw2ICs1MSwxNCBAQAogdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gcmVwb3J0IGFuIGVycm9yIG9uIHVzZSBvZiBkZXByZWNhdGVkIG1hY3JvcyBvcgogZnVuY3Rpb25zLgogCitQb2xpY2llcyBJbnRyb2R1Y2VkIGJ5IENNYWtlIDMuMTgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiB0b2N0cmVlOjoKKyAgIDptYXhkZXB0aDogMQorCisgICBDTVAwMTAzOiBNdWx0aXBsZSBleHBvcnQoKSB3aXRoIHNhbWUgRklMRSB3aXRob3V0IEFQUEVORCBpcyBub3QgYWxsb3dlZC4gPC9wb2xpY3kvQ01QMDEwMz4KKwogUG9saWNpZXMgSW50cm9kdWNlZCBieSBDTWFrZSAzLjE3CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvSGVscC9tYW51YWwvY21ha2UtcHJvcGVydGllcy43LnJzdCBiL0hlbHAvbWFudWFsL2NtYWtlLXByb3BlcnRpZXMuNy5yc3QKaW5kZXggMDYwYTA3Mi4uY2JiMjI5OCAxMDA2NDQKLS0tIGEvSGVscC9tYW51YWwvY21ha2UtcHJvcGVydGllcy43LnJzdAorKysgYi9IZWxwL21hbnVhbC9jbWFrZS1wcm9wZXJ0aWVzLjcucnN0CkBAIC0xMjcsNiArMTI3LDcgQEAKICAgIC9wcm9wX3RndC9BUkNISVZFX09VVFBVVF9ESVJFQ1RPUlkKICAgIC9wcm9wX3RndC9BUkNISVZFX09VVFBVVF9OQU1FX0NPTkZJRwogICAgL3Byb3BfdGd0L0FSQ0hJVkVfT1VUUFVUX05BTUUKKyAgIC9wcm9wX3RndC9QQ0hfV0FSTl9JTlZBTElECiAgICAvcHJvcF90Z3QvQVVUT0dFTl9CVUlMRF9ESVIKICAgIC9wcm9wX3RndC9BVVRPR0VOX09SSUdJTl9ERVBFTkRTCiAgICAvcHJvcF90Z3QvQVVUT0dFTl9QQVJBTExFTApAQCAtMjAwLDYgKzIwMSw3IEBACiAgICAvcHJvcF90Z3QvRm9ydHJhbl9GT1JNQVQKICAgIC9wcm9wX3RndC9Gb3J0cmFuX01PRFVMRV9ESVJFQ1RPUlkKICAgIC9wcm9wX3RndC9GUkFNRVdPUksKKyAgIC9wcm9wX3RndC9GUkFNRVdPUktfTVVMVElfQ09ORklHX1BPU1RGSVhfQ09ORklHCiAgICAvcHJvcF90Z3QvRlJBTUVXT1JLX1ZFUlNJT04KICAgIC9wcm9wX3RndC9HRU5FUkFUT1JfRklMRV9OQU1FCiAgICAvcHJvcF90Z3QvR0hTX0lOVEVHUklUWV9BUFAKQEAgLTM3NSw2ICszNzcsOCBAQAogICAgL3Byb3BfdGd0L1ZTX1NDQ19QUk9KRUNUTkFNRQogICAgL3Byb3BfdGd0L1ZTX1NDQ19QUk9WSURFUgogICAgL3Byb3BfdGd0L1ZTX1NES19SRUZFUkVOQ0VTCisgICAvcHJvcF90Z3QvVlNfU09MVVRJT05fREVQTE9ZCisgICAvcHJvcF90Z3QvVlNfU09VUkNFX1NFVFRJTkdTX3Rvb2wKICAgIC9wcm9wX3RndC9WU19VU0VSX1BST1BTCiAgICAvcHJvcF90Z3QvVlNfV0lORE9XU19UQVJHRVRfUExBVEZPUk1fTUlOX1ZFUlNJT04KICAgIC9wcm9wX3RndC9WU19XSU5SVF9DT01QT05FTlQKQEAgLTQ4NCw2ICs0ODgsNyBAQAogICAgL3Byb3Bfc2YvVlNfREVQTE9ZTUVOVF9MT0NBVElPTgogICAgL3Byb3Bfc2YvVlNfSU5DTFVERV9JTl9WU0lYCiAgICAvcHJvcF9zZi9WU19SRVNPVVJDRV9HRU5FUkFUT1IKKyAgIC9wcm9wX3NmL1ZTX1NFVFRJTkdTCiAgICAvcHJvcF9zZi9WU19TSEFERVJfRElTQUJMRV9PUFRJTUlaQVRJT05TCiAgICAvcHJvcF9zZi9WU19TSEFERVJfRU5BQkxFX0RFQlVHCiAgICAvcHJvcF9zZi9WU19TSEFERVJfRU5UUllQT0lOVApkaWZmIC0tZ2l0IGEvSGVscC9tYW51YWwvY21ha2UtdmFyaWFibGVzLjcucnN0IGIvSGVscC9tYW51YWwvY21ha2UtdmFyaWFibGVzLjcucnN0CmluZGV4IGZjMjc3MzkuLjYyYzMwMWMgMTAwNjQ0Ci0tLSBhL0hlbHAvbWFudWFsL2NtYWtlLXZhcmlhYmxlcy43LnJzdAorKysgYi9IZWxwL21hbnVhbC9jbWFrZS12YXJpYWJsZXMuNy5yc3QKQEAgLTM4OCw2ICszODgsNyBAQAogICAgL3ZhcmlhYmxlL0NNQUtFX0VYRV9MSU5LRVJfRkxBR1NfSU5JVAogICAgL3ZhcmlhYmxlL0NNQUtFX0ZPTERFUgogICAgL3ZhcmlhYmxlL0NNQUtFX0ZSQU1FV09SSworICAgL3ZhcmlhYmxlL0NNQUtFX0ZSQU1FV09SS19NVUxUSV9DT05GSUdfUE9TVEZJWF9DT05GSUcKICAgIC92YXJpYWJsZS9DTUFLRV9Gb3J0cmFuX0ZPUk1BVAogICAgL3ZhcmlhYmxlL0NNQUtFX0ZvcnRyYW5fTU9EVUxFX0RJUkVDVE9SWQogICAgL3ZhcmlhYmxlL0NNQUtFX0dIU19OT19TT1VSQ0VfR1JPVVBfRklMRQpAQCAtNDM3LDYgKzQzOCw3IEBACiAgICAvdmFyaWFibGUvQ01BS0VfT1NYX0FSQ0hJVEVDVFVSRVMKICAgIC92YXJpYWJsZS9DTUFLRV9PU1hfREVQTE9ZTUVOVF9UQVJHRVQKICAgIC92YXJpYWJsZS9DTUFLRV9PU1hfU1lTUk9PVAorICAgL3ZhcmlhYmxlL0NNQUtFX1BDSF9XQVJOX0lOVkFMSUQKICAgIC92YXJpYWJsZS9DTUFLRV9QREJfT1VUUFVUX0RJUkVDVE9SWQogICAgL3ZhcmlhYmxlL0NNQUtFX1BEQl9PVVRQVVRfRElSRUNUT1JZX0NPTkZJRwogICAgL3ZhcmlhYmxlL0NNQUtFX1BPU0lUSU9OX0lOREVQRU5ERU5UX0NPREUKZGlmZiAtLWdpdCBhL0hlbHAvbWFudWFsL2NtYWtlLjEucnN0IGIvSGVscC9tYW51YWwvY21ha2UuMS5yc3QKaW5kZXggMjhhMDgxZi4uZTQ5Nzg5MCAxMDA2NDQKLS0tIGEvSGVscC9tYW51YWwvY21ha2UuMS5yc3QKKysrIGIvSGVscC9tYW51YWwvY21ha2UuMS5yc3QKQEAgLTM1Niw2ICszNTYsMjAgQEAKICBpbiA6dmFyaWFibGU6YENNQUtFX1NPVVJDRV9ESVJgIGFuZCA6dmFyaWFibGU6YENNQUtFX0JJTkFSWV9ESVJgLgogIFRoaXMgZmxhZyB0ZWxscyBDTWFrZSB0byB3YXJuIGFib3V0IG90aGVyIGZpbGVzIGFzIHdlbGwuCiAKK2BgLS1wcm9maWxpbmctb3V0cHV0PTxwYXRoPmBgCisgVXNlZCBpbiBjb25qdWN0aW9uIHdpdGggYGAtLXByb2ZpbGluZy1mb3JtYXRgYCB0byBvdXRwdXQgdG8gYSBnaXZlbiBwYXRoLgorCitgYC0tcHJvZmlsaW5nLWZvcm1hdD08ZmlsZT5gYAorIEVuYWJsZSB0aGUgb3V0cHV0IG9mIHByb2ZpbGluZyBkYXRhIG9mIENNYWtlIHNjcmlwdCBpbiB0aGUgZ2l2ZW4gZm9ybWF0LgorCisgVGhpcyBjYW4gYWlkIHBlcmZvcm1hbmNlIGFuYWx5c2lzIG9mIENNYWtlIHNjcmlwdHMgZXhlY3V0ZWQuIFRoaXJkIHBhcnR5CisgYXBwbGljYXRpb25zIHNob3VsZCBiZSB1c2VkIHRvIHByb2Nlc3MgdGhlIG91dHB1dCBpbnRvIGh1bWFuIHJlYWRhYmxlIGZvcm1hdC4KKworIEN1cnJlbnRseSBzdXBwb3J0ZWQgdmFsdWVzIGFyZToKKyBgYGdvb2dsZS10cmFjZWBgIE91dHB1dHMgaW4gR29vZ2xlIFRyYWNlIEZvcm1hdCwgd2hpY2ggY2FuIGJlIHBhcnNlZCBieSB0aGUKKyBhYm91dDp0cmFjaW5nIHRhYiBvZiBHb29nbGUgQ2hyb21lIG9yIHVzaW5nIGEgcGx1Z2luIGZvciBhIHRvb2wgbGlrZSBUcmFjZQorIENvbXBhc3MuCisKIC4uIF9gQnVpbGQgVG9vbCBNb2RlYDoKIAogQnVpbGQgYSBQcm9qZWN0CmRpZmYgLS1naXQgYS9IZWxwL3BvbGljeS9DTVAwMTAzLnJzdCBiL0hlbHAvcG9saWN5L0NNUDAxMDMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyM2UwY2IKLS0tIC9kZXYvbnVsbAorKysgYi9IZWxwL3BvbGljeS9DTVAwMTAzLnJzdApAQCAtMCwwICsxLDIyIEBACitDTVAwMTAzCistLS0tLS0tCisKK011bHRpcGxlIGNhbGxzIHRvIDpjb21tYW5kOmBleHBvcnRgIGNvbW1hbmQgd2l0aCBzYW1lIGBgRklMRWBgIHdpdGhvdXQKK2BgQVBQRU5EYGAgaXMgbm8gbG9uZ2VyIGFsbG93ZWQuCisKK0luIENNYWtlIDMuMTcgYW5kIGJlbG93LCBtdWx0aXBsZSBjYWxscyB0byA6Y29tbWFuZDpgZXhwb3J0YCBjb21tYW5kIHdpdGggdGhlCitzYW1lIGBgRklMRWBgIHdpdGhvdXQgYGBBUFBFTkRgYCBhcmUgYWNjZXB0ZWQgc2lsZW50bHkgYnV0IG9ubHkgdGhlIGxhc3QKK29jY3VycmVuY2UgaXMgdGFrZW4gaW50byBhY2NvdW50IGR1cmluZyB0aGUgZ2VuZXJhdGlvbi4KKworVGhlIGBgT0xEYGAgYmVoYXZpb3IgZm9yIHRoaXMgcG9saWN5IGlzIHRvIGlnbm9yZSB0aGUgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YKKyA6Y29tbWFuZDpgZXhwb3J0YCBjb21tYW5kIGV4Y2VwdCB0aGUgbGFzdCBvbmUuCisKK1RoZSBgYE5FV2BgIGJlaGF2aW9yIG9mIHRoaXMgcG9saWN5IGlzIHRvIHJhaXNlIGFuIGVycm9yIG9uIHNlY29uZCBjYWxsIHRvCis6Y29tbWFuZDpgZXhwb3J0YCBjb21tYW5kIHdpdGggc2FtZSBgYEZJTEVgYCB3aXRob3V0IGBgQVBQRU5EYGAuCisKK1RoaXMgcG9saWN5IHdhcyBpbnRyb2R1Y2VkIGluIENNYWtlIHZlcnNpb24gMy4xOC4gIENNYWtlIHZlcnNpb24KK3xyZWxlYXNlfCB3YXJucyB3aGVuIHRoZSBwb2xpY3kgaXMgbm90IHNldCBhbmQgdXNlcyBgYE9MRGBgIGJlaGF2aW9yLgorVXNlIHRoZSA6Y29tbWFuZDpgY21ha2VfcG9saWN5YCBjb21tYW5kIHRvIHNldCBpdCB0byBgYE9MRGBgIG9yIGBgTkVXYGAKK2V4cGxpY2l0bHkuCisKKy4uIGluY2x1ZGU6OiBERVBSRUNBVEVELnR4dApkaWZmIC0tZ2l0IGEvSGVscC9wcm9wX3NmL1ZTX1NFVFRJTkdTLnJzdCBiL0hlbHAvcHJvcF9zZi9WU19TRVRUSU5HUy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcxOTQwNgotLS0gL2Rldi9udWxsCisrKyBiL0hlbHAvcHJvcF9zZi9WU19TRVRUSU5HUy5yc3QKQEAgLTAsMCArMSwxOCBAQAorVlNfU0VUVElOR1MKKy0tLS0tLS0tLS0tCisKK1NldCBhbnkgaXRlbSBtZXRhZGF0YSBvbiBhIG5vbi1idWlsdCBmaWxlLgorCitUYWtlcyBhIGxpc3Qgb2YgYGBLZXk9VmFsdWVgYCBwYWlycy4gVGVsbHMgdGhlIFZpc3VhbCBTdHVkaW8gZ2VuZXJhdG9yIHRvIHNldAorYGBLZXlgYCB0byBgYFZhbHVlYGAgYXMgaXRlbSBtZXRhZGF0YSBvbiB0aGUgZmlsZS4KKworRm9yIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBjbWFrZQorCisgIHNldF9wcm9wZXJ0eShTT1VSQ0UgZmlsZS5obHNsIFBST1BFUlRZIFZTX1NFVFRJTkdTICJLZXk9VmFsdWUiICJLZXkyPVZhbHVlMiIpCisKK3dpbGwgc2V0IGBgS2V5YGAgdG8gYGBWYWx1ZWBgIGFuZCBgYEtleTJgYCB0byBgYFZhbHVlMmBgIG9uIHRoZQorYGBmaWxlLmhsc2xgYCBpdGVtIGFzIG1ldGFkYXRhLgorCitHZW5lcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHN1cHBvcnRlZC4KZGlmZiAtLWdpdCBhL0hlbHAvcHJvcF90Z3QvQ09ORklHX1BPU1RGSVgucnN0IGIvSGVscC9wcm9wX3RndC9DT05GSUdfUE9TVEZJWC5yc3QKaW5kZXggMTFiNTBiOS4uNWMyZmJkNyAxMDA2NDQKLS0tIGEvSGVscC9wcm9wX3RndC9DT05GSUdfUE9TVEZJWC5yc3QKKysrIGIvSGVscC9wcm9wX3RndC9DT05GSUdfUE9TVEZJWC5yc3QKQEAgLTgsMyArOCw2IEBACiB0YXJnZXRzLCB0aGlzIHByb3BlcnR5IGlzIGluaXRpYWxpemVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUKIENNQUtFXzxDT05GSUc+X1BPU1RGSVggaWYgaXQgaXMgc2V0IHdoZW4gYSB0YXJnZXQgaXMgY3JlYXRlZC4gIFRoaXMKIHByb3BlcnR5IGlzIGlnbm9yZWQgb24gdGhlIE1hYyBmb3IgRnJhbWV3b3JrcyBhbmQgQXBwIEJ1bmRsZXMuCisKK0ZvciBtYWNPUyBzZWUgYWxzbyB0aGUgOnByb3BfdGd0OmBGUkFNRVdPUktfTVVMVElfQ09ORklHX1BPU1RGSVhfPENPTkZJRz5gCit0YXJnZXQgcHJvcGVydHkuCmRpZmYgLS1naXQgYS9IZWxwL3Byb3BfdGd0L0ZSQU1FV09SS19NVUxUSV9DT05GSUdfUE9TVEZJWF9DT05GSUcucnN0IGIvSGVscC9wcm9wX3RndC9GUkFNRVdPUktfTVVMVElfQ09ORklHX1BPU1RGSVhfQ09ORklHLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjIwYmY5Ci0tLSAvZGV2L251bGwKKysrIGIvSGVscC9wcm9wX3RndC9GUkFNRVdPUktfTVVMVElfQ09ORklHX1BPU1RGSVhfQ09ORklHLnJzdApAQCAtMCwwICsxLDI1IEBACitGUkFNRVdPUktfTVVMVElfQ09ORklHX1BPU1RGSVhfPENPTkZJRz4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQb3N0Zml4IHRvIGFwcGVuZCB0byB0aGUgZnJhbWV3b3JrIGZpbGUgbmFtZSBmb3IgY29uZmlndXJhdGlvbiA8Q09ORklHPiwKK3doZW4gdXNpbmcgYSBtdWx0aS1jb25maWcgZ2VuZXJhdG9yIChsaWtlIFhjb2RlIGFuZCBOaW5qYSBNdWx0aS1Db25maWcpLgorCitXaGVuIGJ1aWxkaW5nIHdpdGggY29uZmlndXJhdGlvbiA8Q09ORklHPiB0aGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eQoraXMgYXBwZW5kZWQgdG8gdGhlIGZyYW1ld29yayBmaWxlIG5hbWUgYnVpbHQgb24gZGlzay4KKworRm9yIGV4YW1wbGUgZ2l2ZW4gYSBmcmFtZXdvcmsgY2FsbGVkIGBgbXlfZndgYCwgYSB2YWx1ZSBvZiBgYF9kZWJ1Z2BgCitmb3IgdGhlIDpwcm9wX3RndDpgRlJBTUVXT1JLX01VTFRJX0NPTkZJR19QT1NURklYXzxDT05GSUc+YCBwcm9wZXJ0eSwgYW5kCitgYERlYnVnO1JlbGVhc2VgYCBpbiBgQ01BS0VfQ09ORklHVVJBVElPTl9UWVBFU2AsIHRoZSBmb2xsb3dpbmcgcmVsZXZhbnQKK2ZpbGVzIHdvdWxkIGJlIGNyZWF0ZWQgZm9yIHRoZSBgYERlYnVnYGAgYW5kIGBgUmVsZWFzZWBgIGNvbmZpZ3VyYXRpb25zOgorCistIFJlbGVhc2UvbXlfZncuZnJhbWV3b3JrL215X2Z3CistIFJlbGVhc2UvbXlfZncuZnJhbWV3b3JrL1ZlcnNpb25zL0EvbXlfZncKKy0gRGVidWcvbXlfZncuZnJhbWV3b3JrL215X2Z3X2RlYnVnCistIERlYnVnL215X2Z3LmZyYW1ld29yay9WZXJzaW9ucy9BL215X2Z3X2RlYnVnCisKK0ZvciBmcmFtZXdvcmsgdGFyZ2V0cywgdGhpcyBwcm9wZXJ0eSBpcyBpbml0aWFsaXplZCBieSB0aGUgdmFsdWUgb2YgdGhlCit2YXJpYWJsZSA6dmFyaWFibGU6YENNQUtFX0ZSQU1FV09SS19NVUxUSV9DT05GSUdfUE9TVEZJWF88Q09ORklHPmAgaWYgaXQKK2lzIHNldCB3aGVuIGEgdGFyZ2V0IGlzIGNyZWF0ZWQuCisKK1RoaXMgcHJvcGVydHkgaXMgaWdub3JlZCBmb3Igbm9uLWZyYW1ld29yayB0YXJnZXRzLCBhbmQgd2hlbiB1c2luZyBzaW5nbGUKK2NvbmZpZyBnZW5lcmF0b3JzLgpkaWZmIC0tZ2l0IGEvSGVscC9wcm9wX3RndC9QQ0hfV0FSTl9JTlZBTElELnJzdCBiL0hlbHAvcHJvcF90Z3QvUENIX1dBUk5fSU5WQUxJRC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZlYzM0OAotLS0gL2Rldi9udWxsCisrKyBiL0hlbHAvcHJvcF90Z3QvUENIX1dBUk5fSU5WQUxJRC5yc3QKQEAgLTAsMCArMSw4IEBACitQQ0hfV0FSTl9JTlZBTElECistLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gdGhpcyBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZSwgdGhlIHByZWNvbXBpbGUgaGVhZGVyIGNvbXBpbGVyIG9wdGlvbnMKK3dpbGwgY29udGFpbiBhIGNvbXBpbGVyIGZsYWcgd2ljaCBzaG91bGQgd2FybiBhYm91dCBpbnZhbGlkIHByZWNvbXBpbGVkCitoZWFkZXJzIGUuZy4gYGAtV2ludmFsaWQtcGNoYGAgZm9yIEdOVSBjb21waWxlci4KKworVGhlIGRlZmFsdXQgdmFsdWUgaXMgYGBPTmBgLgpkaWZmIC0tZ2l0IGEvSGVscC9wcm9wX3RndC9WU19TT0xVVElPTl9ERVBMT1kucnN0IGIvSGVscC9wcm9wX3RndC9WU19TT0xVVElPTl9ERVBMT1kucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MDZkNzUKLS0tIC9kZXYvbnVsbAorKysgYi9IZWxwL3Byb3BfdGd0L1ZTX1NPTFVUSU9OX0RFUExPWS5yc3QKQEAgLTAsMCArMSwyOSBAQAorVlNfU09MVVRJT05fREVQTE9ZCistLS0tLS0tLS0tLS0tLS0tLS0KKworU3BlY2lmeSB0aGF0IHRoZSB0YXJnZXQgc2hvdWxkIGJlIG1hcmtlZCBmb3IgZGVwbG95bWVudCB3aGVuIG5vdCB0YXJnZXRpbmcKK1dpbmRvd3MgQ0UsIFdpbmRvd3MgUGhvbmUgb3IgYSBXaW5kb3dzIFN0b3JlIGFwcGxpY2F0aW9uLgorCitJZiB0aGUgdGFyZ2V0IHBsYXRmb3JtIGRvZXNuJ3Qgc3VwcG9ydCBkZXBsb3ltZW50LCB0aGlzIHByb3BlcnR5IHdvbid0IGhhdmUgYW55IGVmZmVjdC4KKworR2VuZXJhdG9yIGV4cHJlc3Npb25zIGFyZSBzdXBwb3J0ZWQuCisKK0V4YW1wbGUgMQorXl5eXl5eXl5eCisKK1RoaXMgc2hvd3Mgc2V0dGluZyB0aGUgdmFyaWFibGUgZm9yIHRoZSB0YXJnZXQgZm9vLgorCisuLiBjb2RlLWJsb2NrOjogY21ha2UKKworICBhZGRfZXhlY3V0YWJsZShmb28gU0hBUkVEIGZvby5jcHApCisgIHNldF9wcm9wZXJ0eShUQVJHRVQgZm9vIFBST1BFUlRZIFZTX1NPTFVUSU9OX0RFUExPWSBPTikKKworRXhhbXBsZSAyCiteXl5eXl5eXl4KKworVGhpcyBzaG93cyBzZXR0aW5nIHRoZSB2YXJpYWJsZSBmb3IgdGhlIFJlbGVhc2UgY29uZmlndXJhdGlvbiBvbmx5LgorCisuLiBjb2RlLWJsb2NrOjogY21ha2UKKworICBhZGRfZXhlY3V0YWJsZShmb28gU0hBUkVEIGZvby5jcHApCisgIHNldF9wcm9wZXJ0eShUQVJHRVQgZm9vIFBST1BFUlRZIFZTX1NPTFVUSU9OX0RFUExPWSAiJDxOT1Q6JDxDT05GSUc6UmVsZWFzZT4+IikKZGlmZiAtLWdpdCBhL0hlbHAvcHJvcF90Z3QvVlNfU09VUkNFX1NFVFRJTkdTX3Rvb2wucnN0IGIvSGVscC9wcm9wX3RndC9WU19TT1VSQ0VfU0VUVElOR1NfdG9vbC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcwNjg4OAotLS0gL2Rldi9udWxsCisrKyBiL0hlbHAvcHJvcF90Z3QvVlNfU09VUkNFX1NFVFRJTkdTX3Rvb2wucnN0CkBAIC0wLDAgKzEsMTkgQEAKK1ZTX1NPVVJDRV9TRVRUSU5HU188dG9vbD4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2V0IGFueSBpdGVtIG1ldGFkYXRhIG9uIGFsbCBub24tYnVpbHQgZmlsZXMgdGhhdCB1c2UgPHRvb2w+LgorCitUYWtlcyBhIGxpc3Qgb2YgYGBLZXk9VmFsdWVgYCBwYWlycy4gVGVsbHMgdGhlIFZpc3VhbCBTdHVkaW8gZ2VuZXJhdG9yCit0byBzZXQgYGBLZXlgYCB0byBgYFZhbHVlYGAgYXMgaXRlbSBtZXRhZGF0YSBvbiBhbGwgbm9uLWJ1aWx0IGZpbGVzCit0aGF0IHVzZSBgYDx0b29sPmBgLgorCitGb3IgZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IGNtYWtlCisKKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBtYWluIFBST1BFUlRZIFZTX1NPVVJDRV9TRVRUSU5HU19GWENvbXBpbGUgIktleT1WYWx1ZSIgIktleTI9VmFsdWUyIikKKword2lsbCBzZXQgYGBLZXlgYCB0byBgYFZhbHVlYGAgYW5kIGBgS2V5MmBgIHRvIGBgVmFsdWUyYGAgZm9yIGFsbAorbm9uLWJ1aWx0IGZpbGVzIHRoYXQgdXNlIGBgRlhDb21waWxlYGAuCisKK0dlbmVyYXRvciBleHByZXNzaW9ucyBhcmUgc3VwcG9ydGVkLgpkaWZmIC0tZ2l0IGEvSGVscC9yZWxlYXNlL2Rldi8wLXNhbXBsZS10b3BpYy5yc3QgYi9IZWxwL3JlbGVhc2UvZGV2LzAtc2FtcGxlLXRvcGljLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGNjMDFlCi0tLSAvZGV2L251bGwKKysrIGIvSGVscC9yZWxlYXNlL2Rldi8wLXNhbXBsZS10b3BpYy5yc3QKQEAgLTAsMCArMSw3IEBACiswLXNhbXBsZS10b3BpYworLS0tLS0tLS0tLS0tLS0KKworKiBUaGlzIGlzIGEgc2FtcGxlIHJlbGVhc2Ugbm90ZSBmb3IgdGhlIGNoYW5nZSBpbiBhIHRvcGljLgorICBEZXZlbG9wZXJzIHNob3VsZCBhZGQgc2ltaWxhciBub3RlcyBmb3IgZWFjaCB0b3BpYyBicmFuY2gKKyAgbWFraW5nIGEgbm90ZXdvcnRoeSBjaGFuZ2UuICBFYWNoIGRvY3VtZW50IHNob3VsZCBiZSBuYW1lZAorICBhbmQgdGl0bGVkIHRvIG1hdGNoIHRoZSB0b3BpYyBuYW1lIHRvIGF2b2lkIG1lcmdlIGNvbmZsaWN0cy4KZGlmZiAtLWdpdCBhL0hlbHAvcmVsZWFzZS9kZXYvQ1BhY2tSUE0tdHJhbnMtc2NyaXB0cy5yc3QgYi9IZWxwL3JlbGVhc2UvZGV2L0NQYWNrUlBNLXRyYW5zLXNjcmlwdHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZmMwOTkKLS0tIC9kZXYvbnVsbAorKysgYi9IZWxwL3JlbGVhc2UvZGV2L0NQYWNrUlBNLXRyYW5zLXNjcmlwdHMucnN0CkBAIC0wLDAgKzEsNyBAQAorQ1BhY2tSUE0tdHJhbnMtc2NyaXB0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSA6Y3BhY2tfZ2VuOmBDUGFjayBSUE0gR2VuZXJhdG9yYCBnYWluZWQKKyAgOnZhcmlhYmxlOmBDUEFDS19SUE1fUFJFX1RSQU5TX1NDUklQVF9GSUxFYAorICA6dmFyaWFibGU6YENQQUNLX1JQTV9QT1NUX1RSQU5TX1NDUklQVF9GSUxFYAorICB2YXJpYWJsZXMgdG8gc3BlY2lmeSBwcmUtIGFuZCBwb3N0LXRyYW5zIHNjcmlwdHMuCmRpZmYgLS1naXQgYS9IZWxwL3JlbGVhc2UvZGV2L0ZpbmRQeXRob24tYXJ0aWZhY3RzLWludGVyYWN0aXZlLnJzdCBiL0hlbHAvcmVsZWFzZS9kZXYvRmluZFB5dGhvbi1hcnRpZmFjdHMtaW50ZXJhY3RpdmUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYTRiM2UKLS0tIC9kZXYvbnVsbAorKysgYi9IZWxwL3JlbGVhc2UvZGV2L0ZpbmRQeXRob24tYXJ0aWZhY3RzLWludGVyYWN0aXZlLnJzdApAQCAtMCwwICsxLDYgQEAKK0ZpbmRQeXRob24tYXJ0aWZhY3RzLWludGVyYWN0aXZlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSA6bW9kdWxlOmBGaW5kUHl0aG9uM2AsIDptb2R1bGU6YEZpbmRQeXRob24yYCBhbmQgOm1vZHVsZTpgRmluZFB5dGhvbmAKKyAgbW9kdWxlcyBnYWluZWQgdGhlIHBvc3NpYmlsaXR5IHRvIGNyZWF0ZSBhcnRpZmFjdHMgY2FjaGUgdmFyaWFibGVzIGZvcgorICBpbnRlcmFjdGl2ZSBlZGl0aW9uLgpkaWZmIC0tZ2l0IGEvSGVscC9yZWxlYXNlL2Rldi9GaW5kUnVieS12YXJpYWJsZS1jYXNlLnJzdCBiL0hlbHAvcmVsZWFzZS9kZXYvRmluZFJ1YnktdmFyaWFibGUtY2FzZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ0YTJmMQotLS0gL2Rldi9udWxsCisrKyBiL0hlbHAvcmVsZWFzZS9kZXYvRmluZFJ1YnktdmFyaWFibGUtY2FzZS5yc3QKQEAgLTAsMCArMSw3IEBACitGaW5kUnVieS12YXJpYWJsZS1jYXNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIDptb2R1bGU6YEZpbmRSdWJ5YCBtb2R1bGUgaW5wdXQgYW5kIG91dHB1dCB2YXJpYWJsZXMgd2VyZSBhbGwgcmVuYW1lZAorICBmcm9tIGBgUlVCWV9gYCB0byBgYFJ1YnlfYGAgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgZmluZCBtb2R1bGVzLgorICBJbnB1dCB2YXJpYWJsZXMgb2YgdGhlIG9sZCBjYXNlIHdpbGwgYmUgaG9ub3JlZCBpZiBwcm92aWRlZCwgYW5kIG91dHB1dAorICB2YXJpYWJsZXMgb2YgdGhlIG9sZCBjYXNlIGFyZSBhbHdheXMgcHJvdmlkZWQuCmRpZmYgLS1naXQgYS9IZWxwL3JlbGVhc2UvZGV2L0dvb2dsZVRlc3QtWE1MX09VVFBVVF9ESVIucnN0IGIvSGVscC9yZWxlYXNlL2Rldi9Hb29nbGVUZXN0LVhNTF9PVVRQVVRfRElSLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTI5ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvSGVscC9yZWxlYXNlL2Rldi9Hb29nbGVUZXN0LVhNTF9PVVRQVVRfRElSLnJzdApAQCAtMCwwICsxLDYgQEAKK0dvb2dsZVRlc3QtWE1MX09VVFBVVF9ESVIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBUaGUgOm1vZHVsZTpgR29vZ2xlVGVzdGAgbW9kdWxlIGBgZ3Rlc3RfZGlzY292ZXJfdGVzdGBgIGNvbW1hbmQKKyAgZ2FpbmVkIGEgbmV3IG9wdGlvbmFsIHBhcmFtZXRlciBgYFhNTF9PVVRQVVRfRElSYGAuIFdoZW4gc2V0IHRoZSBKVW5pdCBYTUwKKyAgdGVzdCByZXN1bHRzIGFyZSBzdG9yZWQgaW4gdGhhdCBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9IZWxwL3JlbGVhc2UvZGV2L2NtYWtlLWd1aS1lbnYtcGxhdGZvcm0tZGVmYXVsdHMucnN0IGIvSGVscC9yZWxlYXNlL2Rldi9jbWFrZS1ndWktZW52LXBsYXRmb3JtLWRlZmF1bHRzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTYwZWYxCi0tLSAvZGV2L251bGwKKysrIGIvSGVscC9yZWxlYXNlL2Rldi9jbWFrZS1ndWktZW52LXBsYXRmb3JtLWRlZmF1bHRzLnJzdApAQCAtMCwwICsxLDggQEAKK2NtYWtlLWd1aS1lbnYtcGxhdGZvcm0tZGVmYXVsdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6bWFudWFsOmBjbWFrZS1ndWkoMSlgIG5vdyBwb3B1bGF0ZXMgaXRzIGdlbmVyYXRvciBzZWxlY3Rpb24KKyAgd2lkZ2V0IGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgOmVudnZhcjpgQ01BS0VfR0VORVJBVE9SYCBlbnZpcm9ubWVudAorICB2YXJpYWJsZS4gIEFkZGl0aW9uYWxseSwgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgIDplbnZ2YXI6YENNQUtFX0dFTkVSQVRPUl9QTEFURk9STWAgYW5kIDplbnZ2YXI6YENNQUtFX0dFTkVSQVRPUl9UT09MU0VUYAorICBhcmUgdXNlZCB0byBwb3B1bGF0ZSB0aGVpciByZXNwZWN0aXZlIHdpZGdldCBkZWZhdWx0cy4KZGlmZiAtLWdpdCBhL0hlbHAvcmVsZWFzZS9kZXYvY21ha2VfY29tbWFuZC1jb21tYW5kLnJzdCBiL0hlbHAvcmVsZWFzZS9kZXYvY21ha2VfY29tbWFuZC1jb21tYW5kLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjAwYWUyCi0tLSAvZGV2L251bGwKKysrIGIvSGVscC9yZWxlYXNlL2Rldi9jbWFrZV9jb21tYW5kLWNvbW1hbmQucnN0CkBAIC0wLDAgKzEsNiBAQAorY21ha2VfY29tbWFuZAorLS0tLS0tLS0tLS0tLQorCisqIFRoZSA6Y29tbWFuZDpgY21ha2VfY29tbWFuZCgpYCBjb21tYW5kIHdhcyBhZGRlZCBmb3IgbWV0YS1vcGVyYXRpb25zIG9uCisgIHNjcmlwdGVkIG9yIGJ1aWx0LWluIGNvbW1hbmRzLCBzdGFydGluZyB3aXRoIGEgbW9kZSB0byBgYElOVk9LRWBgIG90aGVyCisgIGNvbW1hbmRzLCBhbmQgYGBFVkFMIENPREVgYCB0byBpbnBsYWNlIGV2YWx1YXRlIGEgQ01ha2Ugc2NyaXB0LgpkaWZmIC0tZ2l0IGEvSGVscC9yZWxlYXNlL2Rldi9kZXByZWNhdGUtcG9saWN5LW9sZC5yc3QgYi9IZWxwL3JlbGVhc2UvZGV2L2RlcHJlY2F0ZS1wb2xpY3ktb2xkLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmZkMjA2Ci0tLSAvZGV2L251bGwKKysrIGIvSGVscC9yZWxlYXNlL2Rldi9kZXByZWNhdGUtcG9saWN5LW9sZC5yc3QKQEAgLTAsMCArMSw4IEBACitkZXByZWNhdGUtcG9saWN5LW9sZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBBbiBleHBsaWNpdCBkZXByZWNhdGlvbiBkaWFnbm9zdGljIHdhcyBhZGRlZCBmb3IgcG9saWN5IGBgQ01QMDA3MGBgCisgIGFuZCBwb2xpY3kgYGBDTVAwMDcxYGAgKGBgQ01QMDA2OWBgIGFuZCBiZWxvdyB3ZXJlIGFscmVhZHkgZGVwcmVjYXRlZCkuCisgIFRoZSA6bWFudWFsOmBjbWFrZS1wb2xpY2llcyg3KWAgbWFudWFsIGV4cGxhaW5zIHRoYXQgdGhlIE9MRCBiZWhhdmlvcnMKKyAgb2YgYWxsIHBvbGljaWVzIGFyZSBkZXByZWNhdGVkIGFuZCB0aGF0IHByb2plY3RzIHNob3VsZCBwb3J0IHRvIHRoZQorICBORVcgYmVoYXZpb3JzLgpkaWZmIC0tZ2l0IGEvSGVscC9yZWxlYXNlL2Rldi9leGVjdXRlX3Byb2Nlc3MucnN0IGIvSGVscC9yZWxlYXNlL2Rldi9leGVjdXRlX3Byb2Nlc3MucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZTgxM2IKLS0tIC9kZXYvbnVsbAorKysgYi9IZWxwL3JlbGVhc2UvZGV2L2V4ZWN1dGVfcHJvY2Vzcy5yc3QKQEAgLTAsMCArMSw1IEBACitleGVjdXRlX3Byb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSA6Y29tbWFuZDpgZXhlY3V0ZV9wcm9jZXNzYCBjb21tYW5kIGdhaW5lZCB0aGUgYGBFQ0hPX09VVFBVVF9WQVJJQUJMRWBgCisgIGFuZCBgYEVDSE9fRVJST1JfVkFSSUFCTEVgYCBvcHRpb25zLgpkaWZmIC0tZ2l0IGEvSGVscC9yZWxlYXNlL2Rldi9leHBvcnQtbXVsdGlwbGUtY2FsbHMucnN0IGIvSGVscC9yZWxlYXNlL2Rldi9leHBvcnQtbXVsdGlwbGUtY2FsbHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMzcyY2UKLS0tIC9kZXYvbnVsbAorKysgYi9IZWxwL3JlbGVhc2UvZGV2L2V4cG9ydC1tdWx0aXBsZS1jYWxscy5yc3QKQEAgLTAsMCArMSw1IEBACitleHBvcnQtbXVsdGlwbGUtY2FsbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSA6Y29tbWFuZDpgZXhwb3J0YCBjb21tYW5kIG5vdyByYWlzZSBhbiBlcnJvciBpZiB1c2VkIG11bHRpcGxlIHRpbWVzIHdpdGgKKyAgc2FtZSBgYEZJTEVgYCB3aXRob3V0IGBgQVBQRU5EYGAuIFNlZSBwb2xpY3kgOnBvbGljeTpgQ01QMDEwM2AuCmRpZmYgLS1naXQgYS9IZWxwL3JlbGVhc2UvZGV2L2ZpbGVfYXJjaGl2ZS5yc3QgYi9IZWxwL3JlbGVhc2UvZGV2L2ZpbGVfYXJjaGl2ZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc5NTI5YwotLS0gL2Rldi9udWxsCisrKyBiL0hlbHAvcmVsZWFzZS9kZXYvZmlsZV9hcmNoaXZlLnJzdApAQCAtMCwwICsxLDcgQEAKK2ZpbGVfYXJjaGl2ZQorLS0tLS0tLS0tLS0tCisKKyogVGhlIDpjb21tYW5kOmBmaWxlYCBjb21tYW5kIGdhaW5lZCB0aGUgYGBBUkNISVZFX3tDUkVBVEV8RVhUUkFDVH1gYCBzdWJjb21tYW5kcy4KKworICBUaGVzZSBzdWJjb21tYW5kcyB3aWxsIHJlcGxpY2F0ZSB0aGUgOm1hbnVhbDpgY21ha2UoMSlgIGBgLUUgdGFyYGAgZnVuY3Rpb25hbGl0eSBpbgorICBDTWFrZSBzY3JpcHRpbmcgY29kZS4KZGlmZiAtLWdpdCBhL0hlbHAvcmVsZWFzZS9kZXYvZmlsZV9jb25maWd1cmUucnN0IGIvSGVscC9yZWxlYXNlL2Rldi9maWxlX2NvbmZpZ3VyZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVlOTljNAotLS0gL2Rldi9udWxsCisrKyBiL0hlbHAvcmVsZWFzZS9kZXYvZmlsZV9jb25maWd1cmUucnN0CkBAIC0wLDAgKzEsNiBAQAorZmlsZV9jb25maWd1cmUKKy0tLS0tLS0tLS0tLS0tCisKKyogVGhlIDpjb21tYW5kOmBmaWxlKENPTkZJR1VSRSlgIHN1YmNvbW1hbmQgd2FzIGNyZWF0ZWQgaW4gb3JkZXIgcmVwbGljYXRlIHRoZQorICA6Y29tbWFuZDpgY29uZmlndXJlX2ZpbGVgIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCByZXNvcnRpbmcgdG8gYSBwcmUtZXhpc3RpbmcKKyAgZmlsZSBvbiBkaXNrIGFzIGlucHV0LiBUaGUgY29udGVudCBpcyBpbnN0ZWFkIHBhc3NlZCBhcyBhIHN0cmluZy4KZGlmZiAtLWdpdCBhL0hlbHAvcmVsZWFzZS9kZXYvZmluZHN3aWctY29tcG9uZW50cy5yc3QgYi9IZWxwL3JlbGVhc2UvZGV2L2ZpbmRzd2lnLWNvbXBvbmVudHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNTY5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9IZWxwL3JlbGVhc2UvZGV2L2ZpbmRzd2lnLWNvbXBvbmVudHMucnN0CkBAIC0wLDAgKzEsNSBAQAorZmluZHN3aWctY29tcG9uZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSA6bW9kdWxlOmBGaW5kU1dJR2AgbW9kdWxlIG5vdyBhY2NlcHRzIHRhcmdldCBsYW5ndWFnZXMgYXMgIGBgQ09NUE9ORU5UU2BgCisgIGFuZCBgYE9QVElPTkFMX0NPTVBPTkVOVFNgYCBhcmd1bWVudHMgdG8gYGBmaW5kX3BhY2thZ2VgYC4KZGlmZiAtLWdpdCBhL0hlbHAvcmVsZWFzZS9kZXYvZnJhbWV3b3JrLW11bHRpLWNvbmZpZy1wb3N0Zml4LnJzdCBiL0hlbHAvcmVsZWFzZS9kZXYvZnJhbWV3b3JrLW11bHRpLWNvbmZpZy1wb3N0Zml4LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGNmOWNlCi0tLSAvZGV2L251bGwKKysrIGIvSGVscC9yZWxlYXNlL2Rldi9mcmFtZXdvcmstbXVsdGktY29uZmlnLXBvc3RmaXgucnN0CkBAIC0wLDAgKzEsNyBAQAorZnJhbWV3b3JrLW11bHRpLWNvbmZpZy1wb3N0Zml4CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBUaGUgOnByb3BfdGd0OmBGUkFNRVdPUktfTVVMVElfQ09ORklHX1BPU1RGSVhfPENPTkZJRz5gIHRhcmdldCBwcm9wZXJ0eQorICBhbmQgYXNzb2NpYXRlZCA6dmFyaWFibGU6YENNQUtFX0ZSQU1FV09SS19NVUxUSV9DT05GSUdfUE9TVEZJWF88Q09ORklHPmAKKyAgdmFyaWFibGUgd2VyZSBjcmVhdGVkIHRvIGFsbG93IGFkZGluZyBhIHBvc3RmaXggdG8gdGhlIG5hbWUgb2YgYQorICBmcmFtZXdvcmsgZmlsZSBuYW1lIHdoZW4gdXNpbmcgYSBtdWx0aS1jb25maWcgZ2VuZXJhdG9yLgpkaWZmIC0tZ2l0IGEvSGVscC9yZWxlYXNlL2Rldi9nZW5leC1MSU5LX0xBTkdVQUdFLnJzdCBiL0hlbHAvcmVsZWFzZS9kZXYvZ2VuZXgtTElOS19MQU5HVUFHRS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU4OTRkNgotLS0gL2Rldi9udWxsCisrKyBiL0hlbHAvcmVsZWFzZS9kZXYvZ2VuZXgtTElOS19MQU5HVUFHRS5yc3QKQEAgLTAsMCArMSw1IEBACitnZW5leC1MSU5LX0xBTkdVQUdFCis9PT09PT09PT09PT09PT09PT09CisKKyogVGhlIGBgJDxMSU5LX0xBTkdVQUdFOi4uLj5gYCBhbmQgYGAkPExJTktfTEFOR19BTkRfSUQ6Li4uPmBgCisgIDptYW51YWw6YGdlbmVyYXRvciBleHByZXNzaW9ucyA8Y21ha2UtZ2VuZXJhdG9yLWV4cHJlc3Npb25zKDcpPmAgd2VyZSBhZGRlZC4KZGlmZiAtLWdpdCBhL0hlbHAvcmVsZWFzZS9kZXYvcGNoLXdhcm4taW52YWxpZC5yc3QgYi9IZWxwL3JlbGVhc2UvZGV2L3BjaC13YXJuLWludmFsaWQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmYTNkZTcKLS0tIC9kZXYvbnVsbAorKysgYi9IZWxwL3JlbGVhc2UvZGV2L3BjaC13YXJuLWludmFsaWQucnN0CkBAIC0wLDAgKzEsNiBAQAorcGNoLXdhcm4taW52YWxpZAorLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSA6dmFyaWFibGU6YENNQUtFX1BDSF9XQVJOX0lOVkFMSURgIHZhcmlhYmxlIHdhcyBhZGRlZCB0byBpbml0aWFsaXplIHRoZQorICA6cHJvcF90Z3Q6YFBDSF9XQVJOX0lOVkFMSURgIHRhcmdldCBwcm9wZXJ0eSB0byBhbGxvdyB0aGUgcmVtb3ZhbCBvZiB0aGUKKyAgcHJlY29tcGlsZWQgaGVhZGVyIGludmFsaWQgd2FybmluZy4KZGlmZiAtLWdpdCBhL0hlbHAvcmVsZWFzZS9kZXYvcHJvZmlsaW5nLnJzdCBiL0hlbHAvcmVsZWFzZS9kZXYvcHJvZmlsaW5nLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjE4MGYwCi0tLSAvZGV2L251bGwKKysrIGIvSGVscC9yZWxlYXNlL2Rldi9wcm9maWxpbmcucnN0CkBAIC0wLDAgKzEsOSBAQAorY21ha2UtcHJvZmlsaW5nCistLS0tLS0tLS0tLS0tLS0KKworKiBBZGQgc3VwcG9ydCBmb3IgcHJvZmlsaW5nIG9mIENNYWtlIHNjcmlwdHMgdGhyb3VnaCB0aGUgcGFyYW1ldGVycworICBgYC0tcHJvZmlsaW5nLW91dHB1dGBgIGFuZCBgYC0tcHJvZmlsaW5nLWZvcm1hdGBgLiBUaGVzZSBvcHRpb25zIGNhbgorICBiZSB1c2VkIGJ5IHVzZXJzIHRvIGdhaW4gaW5zaWdodCBpbnRvIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGVpciBzY3JpcHRzLgorCisgIFRoZSBmaXJzdCBzdXBwb3J0ZWQgb3V0cHV0IGZvcm1hdCBpcyBgYGdvb2dsZS10cmFjZWBgIHdoaWNoIGlzIGEgZm9ybWF0CisgIHN1cHBvcnRlZCBieSBHb29nbGUgQ2hyb21lJ3MgYGBhYm91dDp0cmFjaW5nYGAgdGFiLgpkaWZmIC0tZ2l0IGEvSGVscC9yZWxlYXNlL2Rldi9yZXF1aXJlZF9maW5kX2NvbW1hbmRzLnJzdCBiL0hlbHAvcmVsZWFzZS9kZXYvcmVxdWlyZWRfZmluZF9jb21tYW5kcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MyYmYwMgotLS0gL2Rldi9udWxsCisrKyBiL0hlbHAvcmVsZWFzZS9kZXYvcmVxdWlyZWRfZmluZF9jb21tYW5kcy5yc3QKQEAgLTAsMCArMSw2IEBACityZXF1aXJlZF9maW5kX2NvbW1hbmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIDpjb21tYW5kOmBmaW5kX3Byb2dyYW1gLCA6Y29tbWFuZDpgZmluZF9saWJyYXJ5YCwgOmNvbW1hbmQ6YGZpbmRfcGF0aGAKKyAgYW5kIDpjb21tYW5kOmBmaW5kX2ZpbGVgIGNvbW1hbmRzIGdhaW5lZCBhIG5ldyBgYFJFUVVJUkVEYGAgb3B0aW9uIHRoYXQgd2lsbAorICBzdG9wIHByb2Nlc3Npbmcgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIG5vdGhpbmcgaXMgZm91bmQuCmRpZmYgLS1naXQgYS9IZWxwL3JlbGVhc2UvZGV2L3N0cmluZy1oZXgucnN0IGIvSGVscC9yZWxlYXNlL2Rldi9zdHJpbmctaGV4LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjIwYWNhCi0tLSAvZGV2L251bGwKKysrIGIvSGVscC9yZWxlYXNlL2Rldi9zdHJpbmctaGV4LnJzdApAQCAtMCwwICsxLDUgQEAKK3N0cmluZy1oZXgKKy0tLS0tLS0tLS0KKworKiBUaGUgOmNvbW1hbmQ6YHN0cmluZ2AgY29tbWFuZCBsZWFybmVkIGEgbmV3IGBgSEVYYGAgc3ViLWNvbW1hbmQsIHdoaWNoCisgIGNvbnZlcnRzIHN0cmluZ3MgaW50byB0aGVpciBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbi4KZGlmZiAtLWdpdCBhL0hlbHAvcmVsZWFzZS9kZXYvdXNlc3dpZy1mb3J0cmFuLnJzdCBiL0hlbHAvcmVsZWFzZS9kZXYvdXNlc3dpZy1mb3J0cmFuLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2JhZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvSGVscC9yZWxlYXNlL2Rldi91c2Vzd2lnLWZvcnRyYW4ucnN0CkBAIC0wLDAgKzEsNyBAQAordXNlc3dpZy1mb3J0cmFuCistLS0tLS0tLS0tLS0tLS0KKworKiBUaGUgOm1vZHVsZTpgVXNlU1dJR2AgbW9kdWxlIG5vdyBzdXBwb3J0cyBGb3J0cmFuIGFzIGEgdGFyZ2V0IGxhbmd1YWdlIGlmCisgIHRoZSBgYFNXSUdfRVhFQ1VUQUJMRWBgIGlzIFNXSUctRm9ydHJhbl8uCisKKy4uIF9gU1dJRy1Gb3J0cmFuYDogaHR0cHM6Ly9naXRodWIuY29tL3N3aWctZm9ydHJhbi9zd2lnCmRpZmYgLS1naXQgYS9IZWxwL3JlbGVhc2UvZGV2L3ZzLW5vbi1idWlsdC1maWxlLWl0ZW0tbWV0YWRhdGEucnN0IGIvSGVscC9yZWxlYXNlL2Rldi92cy1ub24tYnVpbHQtZmlsZS1pdGVtLW1ldGFkYXRhLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmNiYWQwCi0tLSAvZGV2L251bGwKKysrIGIvSGVscC9yZWxlYXNlL2Rldi92cy1ub24tYnVpbHQtZmlsZS1pdGVtLW1ldGFkYXRhLnJzdApAQCAtMCwwICsxLDEwIEBACit2cy1ub24tYnVpbHQtZmlsZS1pdGVtLW1ldGFkYXRhCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIDpwcm9wX3RndDpgVlNfU09VUkNFX1NFVFRJTkdTXzx0b29sPmAgdGFyZ2V0IHByb3BlcnR5IHdhcyBhZGRlZAorICB0byB0ZWxsIDpyZWY6YFZpc3VhbCBTdHVkaW8gR2VuZXJhdG9yc2AgZm9yIFZTIDIwMTAgYW5kIGFib3ZlIHRvIGFkZAorICBtZXRhZGF0YSB0byBub24tYnVpbHQgc291cmNlIGZpbGVzIHVzaW5nIGBgPHRvb2w+YGAuCisKKyogVGhlIDpwcm9wX3NmOmBWU19TRVRUSU5HU2Agc291cmNlIGZpbGUgcHJvcGVydHkgd2FzIGFkZGVkIHRvIHRlbGwKKyAgOnJlZjpgVmlzdWFsIFN0dWRpbyBHZW5lcmF0b3JzYCBmb3IgVlMgMjAxMCBhbmQgYWJvdmUgdG8gYWRkCisgIG1ldGFkYXRhIHRvIGEgbm9uLWJ1aWx0IHNvdXJjZSBmaWxlLgpkaWZmIC0tZ2l0IGEvSGVscC9yZWxlYXNlL2Rldi92cy1zbG4tZGVwbG95LnJzdCBiL0hlbHAvcmVsZWFzZS9kZXYvdnMtc2xuLWRlcGxveS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU4M2U1MgotLS0gL2Rldi9udWxsCisrKyBiL0hlbHAvcmVsZWFzZS9kZXYvdnMtc2xuLWRlcGxveS5yc3QKQEAgLTAsMCArMSw2IEBACit2cy1zbG4tZGVwbG95CistLS0tLS0tLS0tLS0tCisKKyogVGhlIDpwcm9wX3RndDpgVlNfU09MVVRJT05fREVQTE9ZYCB0YXJnZXQgcHJvcGVydHkgd2FzIGFkZGVkIHRvIHRlbGwKKyAgOnJlZjpgVmlzdWFsIFN0dWRpbyBHZW5lcmF0b3JzYCBmb3IgVlMgMjAxMCBhbmQgYWJvdmUgdG8gbWFyayBhCisgIHRhcmdldCBmb3IgZGVwbG95bWVudCBldmVuIHdoZW4gbm90IGJ1aWxkaW5nIGZvciBXaW5kb3dzIFBob25lL1N0b3JlL0NFLgpkaWZmIC0tZ2l0IGEvSGVscC9yZWxlYXNlL2luZGV4LnJzdCBiL0hlbHAvcmVsZWFzZS9pbmRleC5yc3QKaW5kZXggNWQxZjhhMi4uMjJiMWEwOSAxMDA2NDQKLS0tIGEvSGVscC9yZWxlYXNlL2luZGV4LnJzdAorKysgYi9IZWxwL3JlbGVhc2UvaW5kZXgucnN0CkBAIC03LDYgKzcsOCBAQAogICBUaGlzIGZpbGUgc2hvdWxkIGluY2x1ZGUgdGhlIGFkamFjZW50ICJkZXYudHh0IiBmaWxlCiAgIGluIGRldmVsb3BtZW50IHZlcnNpb25zIGJ1dCBub3QgaW4gcmVsZWFzZSB2ZXJzaW9ucy4KIAorLi4gaW5jbHVkZTo6IGRldi50eHQKKwogUmVsZWFzZXMKID09PT09PT09CiAKZGlmZiAtLWdpdCBhL0hlbHAvdmFyaWFibGUvQ01BS0VfRlJBTUVXT1JLX01VTFRJX0NPTkZJR19QT1NURklYX0NPTkZJRy5yc3QgYi9IZWxwL3ZhcmlhYmxlL0NNQUtFX0ZSQU1FV09SS19NVUxUSV9DT05GSUdfUE9TVEZJWF9DT05GSUcucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjN2NkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9IZWxwL3ZhcmlhYmxlL0NNQUtFX0ZSQU1FV09SS19NVUxUSV9DT05GSUdfUE9TVEZJWF9DT05GSUcucnN0CkBAIC0wLDAgKzEsOCBAQAorQ01BS0VfRlJBTUVXT1JLX01VTFRJX0NPTkZJR19QT1NURklYXzxDT05GSUc+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGVmYXVsdCBmcmFtZXdvcmsgZmlsZW5hbWUgcG9zdGZpeCB1bmRlciBjb25maWd1cmF0aW9uIGBgPENPTkZJRz5gYCB3aGVuCit1c2luZyBhIG11bHRpLWNvbmZpZyBnZW5lcmF0b3IuCisKK1doZW4gYSBmcmFtZXdvcmsgdGFyZ2V0IGlzIGNyZWF0ZWQgaXRzIDpwcm9wX3RndDpgRlJBTUVXT1JLX01VTFRJX0NPTkZJR19QT1NURklYXzxDT05GSUc+YAordGFyZ2V0IHByb3BlcnR5IGlzIGluaXRpYWxpemVkIHdpdGggdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaWYgaXQgaXMgc2V0LgpkaWZmIC0tZ2l0IGEvSGVscC92YXJpYWJsZS9DTUFLRV9QQ0hfV0FSTl9JTlZBTElELnJzdCBiL0hlbHAvdmFyaWFibGUvQ01BS0VfUENIX1dBUk5fSU5WQUxJRC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE1MmFiZAotLS0gL2Rldi9udWxsCisrKyBiL0hlbHAvdmFyaWFibGUvQ01BS0VfUENIX1dBUk5fSU5WQUxJRC5yc3QKQEAgLTAsMCArMSw1IEBACitDTUFLRV9QQ0hfV0FSTl9JTlZBTElECistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgdmFyaWFibGUgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSA6cHJvcF90Z3Q6YFBDSF9XQVJOX0lOVkFMSURgCitwcm9wZXJ0eSBvZiB0YXJnZXRzIHdoZW4gdGhleSBhcmUgY3JlYXRlZC4KZGlmZiAtLWdpdCBhL01vZHVsZXMvQ01ha2VBU01Db21waWxlci5jbWFrZS5pbiBiL01vZHVsZXMvQ01ha2VBU01Db21waWxlci5jbWFrZS5pbgppbmRleCBiOGUwOWZlLi44NThjMDUzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NNYWtlQVNNQ29tcGlsZXIuY21ha2UuaW4KKysrIGIvTW9kdWxlcy9DTWFrZUFTTUNvbXBpbGVyLmNtYWtlLmluCkBAIC0xMCw2ICsxMCw3IEBACiBzZXQoQ01BS0VfQVNNQEFTTV9ESUFMRUNUQF9DT01QSUxFUl9JRCAiQF9DTUFLRV9BU01fQ09NUElMRVJfSURAIikKIHNldChDTUFLRV9BU01AQVNNX0RJQUxFQ1RAX0NPTVBJTEVSX1ZFUlNJT04gIkBfQ01BS0VfQVNNX0NPTVBJTEVSX1ZFUlNJT05AIikKIHNldChDTUFLRV9BU01AQVNNX0RJQUxFQ1RAX0NPTVBJTEVSX0VOVl9WQVIgIkBfQ01BS0VfQVNNX0NPTVBJTEVSX0VOVl9WQVJAIikKK0BfU0VUX0NNQUtFX0FTTV9DT01QSUxFUl9JRF9WRU5ET1JfTUFUQ0hACiBAX1NFVF9DTUFLRV9BU01fQ09NUElMRVJfQVJDSElURUNUVVJFX0lEQAogCiBzZXQoQ01BS0VfQVNNQEFTTV9ESUFMRUNUQF9JR05PUkVfRVhURU5TSU9OUyBoO0g7bztPO29iajtPQko7ZGVmO0RFRjtyYztSQykKZGlmZiAtLWdpdCBhL01vZHVsZXMvQ01ha2VBU01JbmZvcm1hdGlvbi5jbWFrZSBiL01vZHVsZXMvQ01ha2VBU01JbmZvcm1hdGlvbi5jbWFrZQppbmRleCA2YjczNzMwLi4wMzE5NWNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NNYWtlQVNNSW5mb3JtYXRpb24uY21ha2UKKysrIGIvTW9kdWxlcy9DTWFrZUFTTUluZm9ybWF0aW9uLmNtYWtlCkBAIC03NiwxMiArNzYsMTIgQEAKIGlmKE5PVCBDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9DUkVBVEVfU1RBVElDX0xJQlJBUlkpCiAgIHNldChDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9DUkVBVEVfU1RBVElDX0xJQlJBUlkKICAgICAgICI8Q01BS0VfQVI+IGNyIDxUQVJHRVQ+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gIgotICAgICAgIjxDTUFLRV9SQU5MSUI+IDxUQVJHRVQ+ICIpCisgICAgICAiPENNQUtFX1JBTkxJQj4gPFRBUkdFVD4iKQogZW5kaWYoKQogCiBpZihOT1QgQ01BS0VfQVNNJHtBU01fRElBTEVDVH1fTElOS19FWEVDVVRBQkxFKQogICBzZXQoQ01BS0VfQVNNJHtBU01fRElBTEVDVH1fTElOS19FWEVDVVRBQkxFCi0gICAgIjxDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9DT01QSUxFUj4gPEZMQUdTPiA8Q01BS0VfQVNNJHtBU01fRElBTEVDVH1fTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAgLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiIpCisgICAgIjxDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9DT01QSUxFUj4gPEZMQUdTPiA8Q01BS0VfQVNNJHtBU01fRElBTEVDVH1fTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKIGVuZGlmKCkKIAogaWYoTk9UIENNQUtFX0VYRUNVVEFCTEVfUlVOVElNRV9BU00ke0FTTV9ESUFMRUNUfV9GTEFHKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9DTWFrZUFTTV9NQVNNSW5mb3JtYXRpb24uY21ha2UgYi9Nb2R1bGVzL0NNYWtlQVNNX01BU01JbmZvcm1hdGlvbi5jbWFrZQppbmRleCA5ZjdlOTM0Li42ZDFlMTc0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NNYWtlQVNNX01BU01JbmZvcm1hdGlvbi5jbWFrZQorKysgYi9Nb2R1bGVzL0NNYWtlQVNNX01BU01JbmZvcm1hdGlvbi5jbWFrZQpAQCAtOCw3ICs4LDcgQEAKIAogc2V0KENNQUtFX0FTTSR7QVNNX0RJQUxFQ1R9X1NPVVJDRV9GSUxFX0VYVEVOU0lPTlMgYXNtKQogCi1zZXQoQ01BS0VfQVNNJHtBU01fRElBTEVDVH1fQ09NUElMRV9PQkpFQ1QgIjxDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9DT01QSUxFUj4gPERFRklORVM+IDxJTkNMVURFUz4gPEZMQUdTPiAvYyAgL0ZvIDxPQkpFQ1Q+IDxTT1VSQ0U+IikKK3NldChDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9DT01QSUxFX09CSkVDVCAiPENNQUtFX0FTTSR7QVNNX0RJQUxFQ1R9X0NPTVBJTEVSPiA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC9jIC9GbyA8T0JKRUNUPiA8U09VUkNFPiIpCiAKICMgVGhlIEFTTV9NQVNNIGNvbXBpbGVyIGlkIGZvciB0aGlzIGNvbXBpbGVyIGlzICJNU1ZDIiwgc28gZmlsbCBvdXQgdGhlIHJ1bnRpbWUgbGlicmFyeSB0YWJsZS4KIHNldChDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9DT01QSUxFX09QVElPTlNfTVNWQ19SVU5USU1FX0xJQlJBUllfTXVsdGlUaHJlYWRlZCAgICAgICAgICIiKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9DTWFrZUNJbmZvcm1hdGlvbi5jbWFrZSBiL01vZHVsZXMvQ01ha2VDSW5mb3JtYXRpb24uY21ha2UKaW5kZXggMWUwOGJiNy4uZjZkNjIwZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9DTWFrZUNJbmZvcm1hdGlvbi5jbWFrZQorKysgYi9Nb2R1bGVzL0NNYWtlQ0luZm9ybWF0aW9uLmNtYWtlCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgc2V0KENNQUtFX0NfQVJDSElWRV9DUkVBVEUgIjxDTUFLRV9BUj4gcWMgPFRBUkdFVD4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiIpCiBlbmRpZigpCiBpZihOT1QgREVGSU5FRCBDTUFLRV9DX0FSQ0hJVkVfQVBQRU5EKQotICBzZXQoQ01BS0VfQ19BUkNISVZFX0FQUEVORCAiPENNQUtFX0FSPiBxICA8VEFSR0VUPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+IikKKyAgc2V0KENNQUtFX0NfQVJDSElWRV9BUFBFTkQgIjxDTUFLRV9BUj4gcSA8VEFSR0VUPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+IikKIGVuZGlmKCkKIGlmKE5PVCBERUZJTkVEIENNQUtFX0NfQVJDSElWRV9GSU5JU0gpCiAgIHNldChDTUFLRV9DX0FSQ0hJVkVfRklOSVNIICI8Q01BS0VfUkFOTElCPiA8VEFSR0VUPiIpCkBAIC0xNzAsMTIgKzE3MCwxMiBAQAogIyBjb21waWxlIGEgQyBmaWxlIGludG8gYW4gb2JqZWN0IGZpbGUKIGlmKE5PVCBDTUFLRV9DX0NPTVBJTEVfT0JKRUNUKQogICBzZXQoQ01BS0VfQ19DT01QSUxFX09CSkVDVAotICAgICI8Q01BS0VfQ19DT01QSUxFUj4gPERFRklORVM+IDxJTkNMVURFUz4gPEZMQUdTPiAtbyA8T0JKRUNUPiAgIC1jIDxTT1VSQ0U+IikKKyAgICAiPENNQUtFX0NfQ09NUElMRVI+IDxERUZJTkVTPiA8SU5DTFVERVM+IDxGTEFHUz4gLW8gPE9CSkVDVD4gLWMgPFNPVVJDRT4iKQogZW5kaWYoKQogCiBpZihOT1QgQ01BS0VfQ19MSU5LX0VYRUNVVEFCTEUpCiAgIHNldChDTUFLRV9DX0xJTktfRVhFQ1VUQUJMRQotICAgICI8Q01BS0VfQ19DT01QSUxFUj4gPEZMQUdTPiA8Q01BS0VfQ19MSU5LX0ZMQUdTPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+ICAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKKyAgICAiPENNQUtFX0NfQ09NUElMRVI+IDxGTEFHUz4gPENNQUtFX0NfTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKIGVuZGlmKCkKIAogaWYoTk9UIENNQUtFX0VYRUNVVEFCTEVfUlVOVElNRV9DX0ZMQUcpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0NNYWtlQ1VEQUNvbXBpbGVyLmNtYWtlLmluIGIvTW9kdWxlcy9DTWFrZUNVREFDb21waWxlci5jbWFrZS5pbgppbmRleCA0YTYxNWEzLi4xNGEzOWE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NNYWtlQ1VEQUNvbXBpbGVyLmNtYWtlLmluCisrKyBiL01vZHVsZXMvQ01ha2VDVURBQ29tcGlsZXIuY21ha2UuaW4KQEAgLTU0LDQgKzU0LDUgQEAKIHNldChDTUFLRV9DVURBX0lNUExJQ0lUX0xJTktfRlJBTUVXT1JLX0RJUkVDVE9SSUVTICJAQ01BS0VfQ1VEQV9JTVBMSUNJVF9MSU5LX0ZSQU1FV09SS19ESVJFQ1RPUklFU0AiKQogCiBzZXQoQ01BS0VfTElOS0VSICJAQ01BS0VfTElOS0VSQCIpCitzZXQoQ01BS0VfQVIgIkBDTUFLRV9BUkAiKQogc2V0KENNQUtFX01UICJAQ01BS0VfTVRAIikKZGlmZiAtLWdpdCBhL01vZHVsZXMvQ01ha2VDVURBSW5mb3JtYXRpb24uY21ha2UgYi9Nb2R1bGVzL0NNYWtlQ1VEQUluZm9ybWF0aW9uLmNtYWtlCmluZGV4IDk3NGY1ZmEuLmY3ZWI0YTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvQ01ha2VDVURBSW5mb3JtYXRpb24uY21ha2UKKysrIGIvTW9kdWxlcy9DTWFrZUNVREFJbmZvcm1hdGlvbi5jbWFrZQpAQCAtMTI5LDcgKzEyOSw3IEBACiAgIHNldChDTUFLRV9DVURBX0FSQ0hJVkVfQ1JFQVRFICI8Q01BS0VfQVI+IHFjIDxUQVJHRVQ+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4iKQogZW5kaWYoKQogaWYoTk9UIERFRklORUQgQ01BS0VfQ1VEQV9BUkNISVZFX0FQUEVORCkKLSAgc2V0KENNQUtFX0NVREFfQVJDSElWRV9BUFBFTkQgIjxDTUFLRV9BUj4gcSAgPFRBUkdFVD4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiIpCisgIHNldChDTUFLRV9DVURBX0FSQ0hJVkVfQVBQRU5EICI8Q01BS0VfQVI+IHEgPFRBUkdFVD4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiIpCiBlbmRpZigpCiBpZihOT1QgREVGSU5FRCBDTUFLRV9DVURBX0FSQ0hJVkVfRklOSVNIKQogICBzZXQoQ01BS0VfQ1VEQV9BUkNISVZFX0ZJTklTSCAiPENNQUtFX1JBTkxJQj4gPFRBUkdFVD4iKQpAQCAtMTM4LDI0ICsxMzgsMjQgQEAKICNTcGVjaWZ5IGhvdyB0byBjb21waWxlIHdoZW4gcHR4IGhhcyBiZWVuIHJlcXVlc3RlZAogaWYoTk9UIENNQUtFX0NVREFfQ09NUElMRV9QVFhfQ09NUElMQVRJT04pCiAgIHNldChDTUFLRV9DVURBX0NPTVBJTEVfUFRYX0NPTVBJTEFUSU9OCi0gICAgIjxDTUFLRV9DVURBX0NPTVBJTEVSPiAke19DTUFLRV9DVURBX0VYVFJBX0ZMQUdTfSA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC14IGN1IC1wdHggPFNPVVJDRT4gLW8gPE9CSkVDVD4iKQorICAgICI8Q01BS0VfQ1VEQV9DT01QSUxFUj4gJHtfQ01BS0VfQ1VEQV9FWFRSQV9GTEFHU30gPERFRklORVM+IDxJTkNMVURFUz4gPEZMQUdTPiAke19DTUFLRV9DT01QSUxFX0FTX0NVREFfRkxBR30gLXB0eCA8U09VUkNFPiAtbyA8T0JKRUNUPiIpCiBlbmRpZigpCiAKICNTcGVjaWZ5IGhvdyB0byBjb21waWxlIHdoZW4gc2VwYXJhYmxlIGNvbXBpbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZAogaWYoTk9UIENNQUtFX0NVREFfQ09NUElMRV9TRVBBUkFCTEVfQ09NUElMQVRJT04pCiAgIHNldChDTUFLRV9DVURBX0NPTVBJTEVfU0VQQVJBQkxFX0NPTVBJTEFUSU9OCi0gICAgIjxDTUFLRV9DVURBX0NPTVBJTEVSPiAke19DTUFLRV9DVURBX0VYVFJBX0ZMQUdTfSA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC14IGN1IC1kYyA8U09VUkNFPiAtbyA8T0JKRUNUPiIpCisgICAgIjxDTUFLRV9DVURBX0NPTVBJTEVSPiAke19DTUFLRV9DVURBX0VYVFJBX0ZMQUdTfSA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+ICR7X0NNQUtFX0NPTVBJTEVfQVNfQ1VEQV9GTEFHfSAtZGMgPFNPVVJDRT4gLW8gPE9CSkVDVD4iKQogZW5kaWYoKQogCiAjU3BlY2lmeSBob3cgdG8gY29tcGlsZSB3aGVuIHdob2xlIGNvbXBpbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZAogaWYoTk9UIENNQUtFX0NVREFfQ09NUElMRV9XSE9MRV9DT01QSUxBVElPTikKICAgc2V0KENNQUtFX0NVREFfQ09NUElMRV9XSE9MRV9DT01QSUxBVElPTgotICAgICI8Q01BS0VfQ1VEQV9DT01QSUxFUj4gJHtfQ01BS0VfQ1VEQV9FWFRSQV9GTEFHU30gPERFRklORVM+IDxJTkNMVURFUz4gPEZMQUdTPiAteCBjdSAtYyA8U09VUkNFPiAtbyA8T0JKRUNUPiIpCisgICAgIjxDTUFLRV9DVURBX0NPTVBJTEVSPiAke19DTUFLRV9DVURBX0VYVFJBX0ZMQUdTfSA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+ICR7X0NNQUtFX0NPTVBJTEVfQVNfQ1VEQV9GTEFHfSAtYyA8U09VUkNFPiAtbyA8T0JKRUNUPiIpCiBlbmRpZigpCiAKLWlmKENNQUtFX0dFTkVSQVRPUiBTVFJFUVVBTCAiTmluamEiIEFORCBOT1QgQ01BS0VfREVQRklMRV9GTEFHU19DVURBICkKK2lmKENNQUtFX0dFTkVSQVRPUiBTVFJFUVVBTCAiTmluamEiIEFORCBOT1QgQ01BS0VfREVQRklMRV9GTEFHU19DVURBKQogICBzZXQoQ01BS0VfQ1VEQV9DT01QSUxFX0RFUEVOREVOQ1lfREVURUNUSU9OCi0gICAgIjxDTUFLRV9DVURBX0NPTVBJTEVSPiAke19DTUFLRV9DVURBX0VYVFJBX0ZMQUdTfSA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC14IGN1IC1NIDxTT1VSQ0U+IC1NVCA8T0JKRUNUPiAtbyAkREVQX0ZJTEUiKQorICAgICI8Q01BS0VfQ1VEQV9DT01QSUxFUj4gJHtfQ01BS0VfQ1VEQV9FWFRSQV9GTEFHU30gPERFRklORVM+IDxJTkNMVURFUz4gPEZMQUdTPiAke19DTUFLRV9DT01QSUxFX0FTX0NVREFfRkxBR30gLU0gPFNPVVJDRT4gLU1UIDxPQkpFQ1Q+IC1vICRERVBfRklMRSIpCiAgICNUaGUgTmluamEgZ2VuZXJhdG9yIHVzZXMgdGhlIG1ha2UgZmlsZSBkZXBlbmRlbmN5IGZpbGVzIHRvIGRldGVybWluZSB3aGF0CiAgICNmaWxlcyBuZWVkIHRvIGJlIHJlY29tcGlsZWQuIFVuZm9ydHVuYXRlbHksIG52Y2MgPCAxMC4yIGRvZXNuJ3Qgc3VwcG9ydCBidWlsZGluZwogICAjYSBzb3VyY2UgZmlsZSBhbmQgZ2VuZXJhdGluZyB0aGUgZGVwZW5kZW5jaWVzIG9mIHNhaWQgZmlsZSBpbiBhIHNpbmdsZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9DTWFrZUNYWEluZm9ybWF0aW9uLmNtYWtlIGIvTW9kdWxlcy9DTWFrZUNYWEluZm9ybWF0aW9uLmNtYWtlCmluZGV4IGRhNzQ0MGEuLmRiYjQzNjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvQ01ha2VDWFhJbmZvcm1hdGlvbi5jbWFrZQorKysgYi9Nb2R1bGVzL0NNYWtlQ1hYSW5mb3JtYXRpb24uY21ha2UKQEAgLTI1OCw3ICsyNTgsNyBAQAogICBzZXQoQ01BS0VfQ1hYX0FSQ0hJVkVfQ1JFQVRFICI8Q01BS0VfQVI+IHFjIDxUQVJHRVQ+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4iKQogZW5kaWYoKQogaWYoTk9UIERFRklORUQgQ01BS0VfQ1hYX0FSQ0hJVkVfQVBQRU5EKQotICBzZXQoQ01BS0VfQ1hYX0FSQ0hJVkVfQVBQRU5EICI8Q01BS0VfQVI+IHEgIDxUQVJHRVQ+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4iKQorICBzZXQoQ01BS0VfQ1hYX0FSQ0hJVkVfQVBQRU5EICI8Q01BS0VfQVI+IHEgPFRBUkdFVD4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiIpCiBlbmRpZigpCiBpZihOT1QgREVGSU5FRCBDTUFLRV9DWFhfQVJDSElWRV9GSU5JU0gpCiAgIHNldChDTUFLRV9DWFhfQVJDSElWRV9GSU5JU0ggIjxDTUFLRV9SQU5MSUI+IDxUQVJHRVQ+IikKQEAgLTI2NywxMiArMjY3LDEyIEBACiAjIGNvbXBpbGUgYSBDKysgZmlsZSBpbnRvIGFuIG9iamVjdCBmaWxlCiBpZihOT1QgQ01BS0VfQ1hYX0NPTVBJTEVfT0JKRUNUKQogICBzZXQoQ01BS0VfQ1hYX0NPTVBJTEVfT0JKRUNUCi0gICAgIjxDTUFLRV9DWFhfQ09NUElMRVI+ICA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC1vIDxPQkpFQ1Q+IC1jIDxTT1VSQ0U+IikKKyAgICAiPENNQUtFX0NYWF9DT01QSUxFUj4gPERFRklORVM+IDxJTkNMVURFUz4gPEZMQUdTPiAtbyA8T0JKRUNUPiAtYyA8U09VUkNFPiIpCiBlbmRpZigpCiAKIGlmKE5PVCBDTUFLRV9DWFhfTElOS19FWEVDVVRBQkxFKQogICBzZXQoQ01BS0VfQ1hYX0xJTktfRVhFQ1VUQUJMRQotICAgICI8Q01BS0VfQ1hYX0NPTVBJTEVSPiAgPEZMQUdTPiA8Q01BS0VfQ1hYX0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gIC1vIDxUQVJHRVQ+IDxMSU5LX0xJQlJBUklFUz4iKQorICAgICI8Q01BS0VfQ1hYX0NPTVBJTEVSPiA8RkxBR1M+IDxDTUFLRV9DWFhfTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKIGVuZGlmKCkKIAogbWFya19hc19hZHZhbmNlZCgKZGlmZiAtLWdpdCBhL01vZHVsZXMvQ01ha2VEZXRlcm1pbmVBU01Db21waWxlci5jbWFrZSBiL01vZHVsZXMvQ01ha2VEZXRlcm1pbmVBU01Db21waWxlci5jbWFrZQppbmRleCBlNDdmM2E0Li44NmZiMDU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NNYWtlRGV0ZXJtaW5lQVNNQ29tcGlsZXIuY21ha2UKKysrIGIvTW9kdWxlcy9DTWFrZURldGVybWluZUFTTUNvbXBpbGVyLmNtYWtlCkBAIC0yMTEsNiArMjExLDEzIEBACiAgIHNldChfQ01BS0VfQVNNXyR7X3Zhcn0gIiR7Q01BS0VfQVNNJHtBU01fRElBTEVDVH1fJHtfdmFyfX0iKQogZW5kZm9yZWFjaCgpCiAKK2lmKENNQUtFX0FTTSR7QVNNX0RJQUxFQ1R9X0NPTVBJTEVSX0lEX1ZFTkRPUl9NQVRDSCkKKyAgc2V0KF9TRVRfQ01BS0VfQVNNX0NPTVBJTEVSX0lEX1ZFTkRPUl9NQVRDSAorICAgICJzZXQoQ01BS0VfQVNNJHtBU01fRElBTEVDVH1fQ09NUElMRVJfSURfVkVORE9SX01BVENIIFs9PVske0NNQUtFX0FTTSR7QVNNX0RJQUxFQ1R9X0NPTVBJTEVSX0lEX1ZFTkRPUl9NQVRDSH1dPT1dKSIpCitlbHNlKCkKKyAgc2V0KF9TRVRfQ01BS0VfQVNNX0NPTVBJTEVSX0lEX1ZFTkRPUl9NQVRDSCAiIikKK2VuZGlmKCkKKwogaWYoQ01BS0VfQVNNJHtBU01fRElBTEVDVH1fQ09NUElMRVJfQVJDSElURUNUVVJFX0lEKQogICBzZXQoX1NFVF9DTUFLRV9BU01fQ09NUElMRVJfQVJDSElURUNUVVJFX0lECiAgICAgInNldChDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUQgJHtDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9KSIpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0NNYWtlRGV0ZXJtaW5lQ1VEQUNvbXBpbGVyLmNtYWtlIGIvTW9kdWxlcy9DTWFrZURldGVybWluZUNVREFDb21waWxlci5jbWFrZQppbmRleCA3ZDdmYjlhLi45NWMzY2M5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NNYWtlRGV0ZXJtaW5lQ1VEQUNvbXBpbGVyLmNtYWtlCisrKyBiL01vZHVsZXMvQ01ha2VEZXRlcm1pbmVDVURBQ29tcGlsZXIuY21ha2UKQEAgLTc0LDYgKzc0LDcgQEAKIAogc2V0KF9DTUFLRV9QUk9DRVNTSU5HX0xBTkdVQUdFICJDVURBIikKIGluY2x1ZGUoQ01ha2VGaW5kQmluVXRpbHMpCitpbmNsdWRlKENvbXBpbGVyLyR7Q01BS0VfQ1VEQV9DT01QSUxFUl9JRH0tRmluZEJpblV0aWxzIE9QVElPTkFMKQogdW5zZXQoX0NNQUtFX1BST0NFU1NJTkdfTEFOR1VBR0UpCiAKIGlmKE1TVkNfQ1VEQV9BUkNISVRFQ1RVUkVfSUQpCkBAIC04Niw3ICs4Nyw3IEBACiAgIHNldChDTUFLRV9DVURBX0hPU1RfSU1QTElDSVRfTElOS19MSUJSQVJJRVMgIiIpCiAgIHNldChDTUFLRV9DVURBX0hPU1RfSU1QTElDSVRfTElOS19ESVJFQ1RPUklFUyAiIikKICAgc2V0KENNQUtFX0NVREFfSE9TVF9JTVBMSUNJVF9MSU5LX0ZSQU1FV09SS19ESVJFQ1RPUklFUyAiIikKLWVsc2VpZihDTUFLRV9DVURBX0NPTVBJTEVSX0lEIFNUUkVRVUFMIE5WSURJQSkKK2Vsc2VpZihDTUFLRV9DVURBX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJOVklESUEiKQogICBzZXQoX252Y2NfbG9nICIiKQogICBzdHJpbmcoUkVQTEFDRSAiXHIiICIiIF9udmNjX291dHB1dF9vcmlnICIke0NNQUtFX0NVREFfQ09NUElMRVJfUFJPRFVDRURfT1VUUFVUfSIpCiAgIGlmKF9udmNjX291dHB1dF9vcmlnIE1BVENIRVMgIiNcXFwkICtQQVRIPSAqKFteXG5dKilcbiIpCkBAIC0xODgsMzAgKzE4OSwzMyBAQAogICBlbmRpZigpCiBlbmRpZigpCiAKLXNldChDTUFLRV9DVURBX1RPT0xLSVRfSU5DTFVERV9ESVJFQ1RPUklFUyApCi1zdHJpbmcoUkVQTEFDRSAiXHIiICIiIF9udmNjX291dHB1dF9vcmlnICIke0NNQUtFX0NVREFfQ09NUElMRVJfUFJPRFVDRURfT1VUUFVUfSIpCi1pZihfbnZjY19vdXRwdXRfb3JpZyBNQVRDSEVTICIjXFxcJCArSU5DTFVERVM9ICooW15cbl0qKVxuIikKLSAgc2V0KF9udmNjX2luY2x1ZGVzICIke0NNQUtFX01BVENIXzF9IikKLSAgc3RyaW5nKEFQUEVORCBfbnZjY19sb2cgIiAgZm91bmQgJ0lOQ0xVREVTPScgc3RyaW5nOiBbJHtfbnZjY19pbmNsdWRlc31dXG4iKQotZWxzZSgpCi0gIHNldChfbnZjY19pbmNsdWRlcyAiIikKLSAgc3RyaW5nKFJFUExBQ0UgIlxuIiAiXG4gICAgIiBfbnZjY19vdXRwdXRfbG9nICJcbiR7X252Y2Nfb3V0cHV0X29yaWd9IikKLSAgc3RyaW5nKEFQUEVORCBfbnZjY19sb2cgIiAgbm8gJ0lOQ0xVREVTPScgc3RyaW5nIGZvdW5kIGluIG52Y2Mgb3V0cHV0OiR7X252Y2Nfb3V0cHV0X2xvZ31cbiIpCi1lbmRpZigpCi1pZihfbnZjY19pbmNsdWRlcykKLSAgIyBhY3Jvc3MgYWxsIG9wZXJhdGluZyBzeXN0ZW0gZWFjaCBpbmNsdWRlIGRpcmVjdG9yeSBpcyBwcmVmaXhlZCB3aXRoIC1JCi0gIHNlcGFyYXRlX2FyZ3VtZW50cyhfbnZjY19vdXRwdXQgTkFUSVZFX0NPTU1BTkQgIiR7X252Y2NfaW5jbHVkZXN9IikKLSAgZm9yZWFjaChsaW5lIElOIExJU1RTIF9udmNjX291dHB1dCkKLSAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXi1JIiAiIiBsaW5lICIke2xpbmV9IikKLSAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KGxpbmUgIiR7bGluZX0iIEFCU09MVVRFKQotICAgIGxpc3QoQVBQRU5EIENNQUtFX0NVREFfVE9PTEtJVF9JTkNMVURFX0RJUkVDVE9SSUVTICIke2xpbmV9IikKLSAgZW5kZm9yZWFjaCgpCisjIERldGVybWluZSBDTUFLRV9DVURBX1RPT0xLSVRfSU5DTFVERV9ESVJFQ1RPUklFUworaWYoQ01BS0VfQ1VEQV9DT01QSUxFUl9JRCBTVFJFUVVBTCAiTlZJRElBIikKKyAgc2V0KENNQUtFX0NVREFfVE9PTEtJVF9JTkNMVURFX0RJUkVDVE9SSUVTKQorICBzdHJpbmcoUkVQTEFDRSAiXHIiICIiIF9udmNjX291dHB1dF9vcmlnICIke0NNQUtFX0NVREFfQ09NUElMRVJfUFJPRFVDRURfT1VUUFVUfSIpCisgIGlmKF9udmNjX291dHB1dF9vcmlnIE1BVENIRVMgIiNcXFwkICtJTkNMVURFUz0gKihbXlxuXSopXG4iKQorICAgIHNldChfbnZjY19pbmNsdWRlcyAiJHtDTUFLRV9NQVRDSF8xfSIpCisgICAgc3RyaW5nKEFQUEVORCBfbnZjY19sb2cgIiAgZm91bmQgJ0lOQ0xVREVTPScgc3RyaW5nOiBbJHtfbnZjY19pbmNsdWRlc31dXG4iKQorICBlbHNlKCkKKyAgICBzZXQoX252Y2NfaW5jbHVkZXMgIiIpCisgICAgc3RyaW5nKFJFUExBQ0UgIlxuIiAiXG4gICAgIiBfbnZjY19vdXRwdXRfbG9nICJcbiR7X252Y2Nfb3V0cHV0X29yaWd9IikKKyAgICBzdHJpbmcoQVBQRU5EIF9udmNjX2xvZyAiICBubyAnSU5DTFVERVM9JyBzdHJpbmcgZm91bmQgaW4gbnZjYyBvdXRwdXQ6JHtfbnZjY19vdXRwdXRfbG9nfVxuIikKKyAgZW5kaWYoKQorICBpZihfbnZjY19pbmNsdWRlcykKKyAgICAjIGFjcm9zcyBhbGwgb3BlcmF0aW5nIHN5c3RlbSBlYWNoIGluY2x1ZGUgZGlyZWN0b3J5IGlzIHByZWZpeGVkIHdpdGggLUkKKyAgICBzZXBhcmF0ZV9hcmd1bWVudHMoX252Y2Nfb3V0cHV0IE5BVElWRV9DT01NQU5EICIke19udmNjX2luY2x1ZGVzfSIpCisgICAgZm9yZWFjaChsaW5lIElOIExJU1RTIF9udmNjX291dHB1dCkKKyAgICAgIHN0cmluZyhSRUdFWCBSRVBMQUNFICJeLUkiICIiIGxpbmUgIiR7bGluZX0iKQorICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChsaW5lICIke2xpbmV9IiBBQlNPTFVURSkKKyAgICAgIGxpc3QoQVBQRU5EIENNQUtFX0NVREFfVE9PTEtJVF9JTkNMVURFX0RJUkVDVE9SSUVTICIke2xpbmV9IikKKyAgICBlbmRmb3JlYWNoKCkKIAotICBmaWxlKEFQUEVORCAke0NNQUtFX0JJTkFSWV9ESVJ9JHtDTUFLRV9GSUxFU19ESVJFQ1RPUll9L0NNYWtlT3V0cHV0LmxvZwotICAgICJQYXJzZWQgQ1VEQSBudmNjIGluY2x1ZGUgaW5mb3JtYXRpb24gZnJvbSBhYm92ZSBvdXRwdXQ6XG4ke19udmNjX2xvZ31cbiR7bG9nfVxuXG4iKQotZWxzZSgpCi0gIGZpbGUoQVBQRU5EICR7Q01BS0VfQklOQVJZX0RJUn0ke0NNQUtFX0ZJTEVTX0RJUkVDVE9SWX0vQ01ha2VPdXRwdXQubG9nCi0gICAgIkZhaWxlZCB0byBkZXRlY3QgQ1VEQSBudmNjIGluY2x1ZGUgaW5mb3JtYXRpb246XG4ke19udmNjX2xvZ31cblxuIikKKyAgICBmaWxlKEFQUEVORCAke0NNQUtFX0JJTkFSWV9ESVJ9JHtDTUFLRV9GSUxFU19ESVJFQ1RPUll9L0NNYWtlT3V0cHV0LmxvZworICAgICAgIlBhcnNlZCBDVURBIG52Y2MgaW5jbHVkZSBpbmZvcm1hdGlvbiBmcm9tIGFib3ZlIG91dHB1dDpcbiR7X252Y2NfbG9nfVxuJHtsb2d9XG5cbiIpCisgIGVsc2UoKQorICAgIGZpbGUoQVBQRU5EICR7Q01BS0VfQklOQVJZX0RJUn0ke0NNQUtFX0ZJTEVTX0RJUkVDVE9SWX0vQ01ha2VPdXRwdXQubG9nCisgICAgICAiRmFpbGVkIHRvIGRldGVjdCBDVURBIG52Y2MgaW5jbHVkZSBpbmZvcm1hdGlvbjpcbiR7X252Y2NfbG9nfVxuXG4iKQorICBlbmRpZigpCiBlbmRpZigpCiAKICMgY29uZmlndXJlIGFsbCB2YXJpYWJsZXMgc2V0IGluIHRoaXMgZmlsZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9DTWFrZURldGVybWluZUNvbXBpbGVySWQuY21ha2UgYi9Nb2R1bGVzL0NNYWtlRGV0ZXJtaW5lQ29tcGlsZXJJZC5jbWFrZQppbmRleCBkM2VkNDViLi45ZWJhYTZjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NNYWtlRGV0ZXJtaW5lQ29tcGlsZXJJZC5jbWFrZQorKysgYi9Nb2R1bGVzL0NNYWtlRGV0ZXJtaW5lQ29tcGlsZXJJZC5jbWFrZQpAQCAtODcwLDYgKzg3MCwxNCBAQAogICAgIGZpbGUoTUFLRV9ESVJFQ1RPUlkgJHtDTUFLRV8ke2xhbmd9X0NPTVBJTEVSX0lEX0RJUn0pCiAgIGVuZGlmKCkKIAorICAjIFNhdmUgdGhlIGN1cnJlbnQgTENfQUxMLCBMQ19NRVNTQUdFUywgYW5kIExBTkcgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgICMgYW5kIHNldCB0aGVtIHRvICJDIiBzbyB3ZSBnZXQgdGhlIGV4cGVjdGVkIG91dHB1dCB0byBtYXRjaC4KKyAgc2V0KF9vcmlnX2xjX2FsbCAgICAgICRFTlZ7TENfQUxMfSkKKyAgc2V0KF9vcmlnX2xjX21lc3NhZ2VzICRFTlZ7TENfTUVTU0FHRVN9KQorICBzZXQoX29yaWdfbGFuZyAgICAgICAgJEVOVntMQU5HfSkKKyAgc2V0KEVOVntMQ19BTEx9ICAgICAgQykKKyAgc2V0KEVOVntMQ19NRVNTQUdFU30gQykKKyAgc2V0KEVOVntMQU5HfSAgICAgICAgQykKIAogICBmb3JlYWNoKHZlbmRvciAke0NNQUtFXyR7bGFuZ31fQ09NUElMRVJfSURfVkVORE9SU30pCiAgICAgc2V0KGZsYWdzICR7Q01BS0VfJHtsYW5nfV9DT01QSUxFUl9JRF9WRU5ET1JfRkxBR1NfJHt2ZW5kb3J9fSkKQEAgLTg5MSw2ICs4OTksNyBAQAogICAgICAgICAibWF0Y2hlZCBcIiR7cmVnZXh9XCI6XG4ke291dHB1dH0iKQogICAgICAgc2V0KENNQUtFXyR7bGFuZ31fQ09NUElMRVJfSUQgIiR7dmVuZG9yfSIgUEFSRU5UX1NDT1BFKQogICAgICAgc2V0KENNQUtFXyR7bGFuZ31fQ09NUElMRVJfSURfT1VUUFVUICIke291dHB1dH0iIFBBUkVOVF9TQ09QRSkKKyAgICAgIHNldChDTUFLRV8ke2xhbmd9X0NPTVBJTEVSX0lEX1ZFTkRPUl9NQVRDSCAiJHtDTUFLRV9NQVRDSF8xfSIgUEFSRU5UX1NDT1BFKQogICAgICAgYnJlYWsoKQogICAgIGVsc2UoKQogICAgICAgaWYoIiR7cmVzdWx0fSIgTUFUQ0hFUyAgInRpbWVvdXQiKQpAQCAtOTA0LDYgKzkxMywxMSBAQAogICAgICAgIGVuZGlmKCkKICAgICBlbmRpZigpCiAgIGVuZGZvcmVhY2goKQorCisgICMgUmVzdG9yZSBvcmlnaW5hbCBMQ19BTEwsIExDX01FU1NBR0VTLCBhbmQgTEFORworICBzZXQoRU5We0xDX0FMTH0gICAgICAke19vcmlnX2xjX2FsbH0pCisgIHNldChFTlZ7TENfTUVTU0FHRVN9ICR7X29yaWdfbGNfbWVzc2FnZXN9KQorICBzZXQoRU5We0xBTkd9ICAgICAgICAke19vcmlnX2xhbmd9KQogZW5kZnVuY3Rpb24oKQogCiBmdW5jdGlvbihDTUFLRV9ERVRFUk1JTkVfTVNWQ19TSE9XSU5DTFVERVNfUFJFRklYIGxhbmcgdXNlcmZsYWdzKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9DTWFrZUZpbmRCaW5VdGlscy5jbWFrZSBiL01vZHVsZXMvQ01ha2VGaW5kQmluVXRpbHMuY21ha2UKaW5kZXggYzIzZTQ0Ny4uZGU5ZWY5YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9DTWFrZUZpbmRCaW5VdGlscy5jbWFrZQorKysgYi9Nb2R1bGVzL0NNYWtlRmluZEJpblV0aWxzLmNtYWtlCkBAIC03NSw2ICs3NSw3IEBACiAgIGVuZGlmKCkKIAogICBmaW5kX3Byb2dyYW0oQ01BS0VfTElOS0VSIE5BTUVTICR7X0NNQUtFX0FERElUSU9OQUxfTElOS0VSX05BTUVTfSBsaW5rIEhJTlRTICR7X0NNQUtFX1RPT0xDSEFJTl9MT0NBVElPTn0pCisgIGZpbmRfcHJvZ3JhbShDTUFLRV9BUiAgICAgTkFNRVMgbGliICBISU5UUyAke19DTUFLRV9UT09MQ0hBSU5fTE9DQVRJT059KQogICBmaW5kX3Byb2dyYW0oQ01BS0VfTVQgICAgIE5BTUVTIG10ICAgSElOVFMgJHtfQ01BS0VfVE9PTENIQUlOX0xPQ0FUSU9OfSkKIAogICBsaXN0KEFQUEVORCBfQ01BS0VfVE9PTF9WQVJTIExJTktFUiBNVCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvQ01ha2VGaW5kRnJhbWV3b3Jrcy5jbWFrZSBiL01vZHVsZXMvQ01ha2VGaW5kRnJhbWV3b3Jrcy5jbWFrZQppbmRleCAwNmMwNWZiLi44OTA2ZjQ4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NNYWtlRmluZEZyYW1ld29ya3MuY21ha2UKKysrIGIvTW9kdWxlcy9DTWFrZUZpbmRGcmFtZXdvcmtzLmNtYWtlCkBAIC0xNywxMyArMTcsMjUgQEAKICAgbWFjcm8oQ01BS0VfRklORF9GUkFNRVdPUktTIGZ3aykKICAgICBzZXQoJHtmd2t9X0ZSQU1FV09SS1MpCiAgICAgaWYoQVBQTEUpCi0gICAgICBmb3JlYWNoKGRpcgotICAgICAgICAgIH4vTGlicmFyeS9GcmFtZXdvcmtzLyR7ZndrfS5mcmFtZXdvcmsKLSAgICAgICAgICAvdXNyL2xvY2FsL0ZyYW1ld29ya3MvJHtmd2t9LmZyYW1ld29yawotICAgICAgICAgIC9MaWJyYXJ5L0ZyYW1ld29ya3MvJHtmd2t9LmZyYW1ld29yawotICAgICAgICAgIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzLyR7ZndrfS5mcmFtZXdvcmsKLSAgICAgICAgICAvTmV0d29yay9MaWJyYXJ5L0ZyYW1ld29ya3MvJHtmd2t9LmZyYW1ld29yawotICAgICAgICAgICR7Q01BS0VfRklORF9GUkFNRVdPUktfRVhUUkFfTE9DQVRJT05TfSkKKyAgICAgIGZpbGUoVE9fQ01BS0VfUEFUSCAiJEVOVntDTUFLRV9GUkFNRVdPUktfUEFUSH0iIF9jbWZmX0NNQUtFX0ZSQU1FV09SS19QQVRIKQorICAgICAgc2V0KF9jbWZmX3NlYXJjaF9wYXRocworICAgICAgICAgICAgJHtDTUFLRV9GUkFNRVdPUktfUEFUSH0KKyAgICAgICAgICAgICR7X2NtZmZfQ01BS0VfRlJBTUVXT1JLX1BBVEh9CisgICAgICAgICAgICB+L0xpYnJhcnkvRnJhbWV3b3JrcworICAgICAgICAgICAgL3Vzci9sb2NhbC9GcmFtZXdvcmtzCisgICAgICAgICAgICAvTGlicmFyeS9GcmFtZXdvcmtzCisgICAgICAgICAgICAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrcworICAgICAgICAgICAgL05ldHdvcmsvTGlicmFyeS9GcmFtZXdvcmtzCisgICAgICAgICAgICAke0NNQUtFX1NZU1RFTV9GUkFNRVdPUktfUEFUSH0pCisKKyAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMsCisgICAgICAjIENNQUtFX0ZJTkRfRlJBTUVXT1JLX0VYVFJBX0xPQ0FUSU9OUyBpbmNsdWRlcyAke2Z3a30uZnJhbWV3b3JrCisgICAgICBsaXN0KFRSQU5TRk9STSBfY21mZl9zZWFyY2hfcGF0aHMgQVBQRU5EIC8ke2Z3a30uZnJhbWV3b3JrKQorICAgICAgbGlzdChBUFBFTkQgX2NtZmZfc2VhcmNoX3BhdGhzICR7Q01BS0VfRklORF9GUkFNRVdPUktfRVhUUkFfTE9DQVRJT05TfSkKKworICAgICAgbGlzdChSRU1PVkVfRFVQTElDQVRFUyBfY21mZl9zZWFyY2hfcGF0aHMpCisKKyAgICAgIGZvcmVhY2goZGlyIElOIExJU1RTIF9jbWZmX3NlYXJjaF9wYXRocykKICAgICAgICAgaWYoRVhJU1RTICR7ZGlyfSkKICAgICAgICAgICBzZXQoJHtmd2t9X0ZSQU1FV09SS1MgJHske2Z3a31fRlJBTUVXT1JLU30gJHtkaXJ9KQogICAgICAgICBlbmRpZigpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0NNYWtlRm9ydHJhbkluZm9ybWF0aW9uLmNtYWtlIGIvTW9kdWxlcy9DTWFrZUZvcnRyYW5JbmZvcm1hdGlvbi5jbWFrZQppbmRleCBlODA3MTZiLi45YTRjZTYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NNYWtlRm9ydHJhbkluZm9ybWF0aW9uLmNtYWtlCisrKyBiL01vZHVsZXMvQ01ha2VGb3J0cmFuSW5mb3JtYXRpb24uY21ha2UKQEAgLTE5Myw3ICsxOTMsNyBAQAogICBzZXQoQ01BS0VfRm9ydHJhbl9BUkNISVZFX0NSRUFURSAiPENNQUtFX0FSPiBxYyA8VEFSR0VUPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+IikKIGVuZGlmKCkKIGlmKE5PVCBERUZJTkVEIENNQUtFX0ZvcnRyYW5fQVJDSElWRV9BUFBFTkQpCi0gIHNldChDTUFLRV9Gb3J0cmFuX0FSQ0hJVkVfQVBQRU5EICI8Q01BS0VfQVI+IHEgIDxUQVJHRVQ+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4iKQorICBzZXQoQ01BS0VfRm9ydHJhbl9BUkNISVZFX0FQUEVORCAiPENNQUtFX0FSPiBxIDxUQVJHRVQ+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4iKQogZW5kaWYoKQogaWYoTk9UIERFRklORUQgQ01BS0VfRm9ydHJhbl9BUkNISVZFX0ZJTklTSCkKICAgc2V0KENNQUtFX0ZvcnRyYW5fQVJDSElWRV9GSU5JU0ggIjxDTUFLRV9SQU5MSUI+IDxUQVJHRVQ+IikKQEAgLTIwOSw3ICsyMDksNyBAQAogIyBsaW5rIGEgZm9ydHJhbiBwcm9ncmFtCiBpZihOT1QgQ01BS0VfRm9ydHJhbl9MSU5LX0VYRUNVVEFCTEUpCiAgIHNldChDTUFLRV9Gb3J0cmFuX0xJTktfRVhFQ1VUQUJMRQotICAgICI8Q01BS0VfRm9ydHJhbl9DT01QSUxFUj4gPENNQUtFX0ZvcnRyYW5fTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxGTEFHUz4gPE9CSkVDVFM+ICAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKKyAgICAiPENNQUtFX0ZvcnRyYW5fQ09NUElMRVI+IDxDTUFLRV9Gb3J0cmFuX0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8RkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKIGVuZGlmKCkKIAogaWYoQ01BS0VfRm9ydHJhbl9TVEFOREFSRF9MSUJSQVJJRVNfSU5JVCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvQ01ha2VPQkpDSW5mb3JtYXRpb24uY21ha2UgYi9Nb2R1bGVzL0NNYWtlT0JKQ0luZm9ybWF0aW9uLmNtYWtlCmluZGV4IDE1YTMzMTEuLmIzZGE4MmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvQ01ha2VPQkpDSW5mb3JtYXRpb24uY21ha2UKKysrIGIvTW9kdWxlcy9DTWFrZU9CSkNJbmZvcm1hdGlvbi5jbWFrZQpAQCAtMTYxLDcgKzE2MSw3IEBACiAgIHNldChDTUFLRV9PQkpDX0FSQ0hJVkVfQ1JFQVRFICI8Q01BS0VfQVI+IHFjIDxUQVJHRVQ+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4iKQogZW5kaWYoKQogaWYoTk9UIERFRklORUQgQ01BS0VfT0JKQ19BUkNISVZFX0FQUEVORCkKLSAgc2V0KENNQUtFX09CSkNfQVJDSElWRV9BUFBFTkQgIjxDTUFLRV9BUj4gcSAgPFRBUkdFVD4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiIpCisgIHNldChDTUFLRV9PQkpDX0FSQ0hJVkVfQVBQRU5EICI8Q01BS0VfQVI+IHEgPFRBUkdFVD4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiIpCiBlbmRpZigpCiBpZihOT1QgREVGSU5FRCBDTUFLRV9PQkpDX0FSQ0hJVkVfRklOSVNIKQogICBzZXQoQ01BS0VfT0JKQ19BUkNISVZFX0ZJTklTSCAiPENNQUtFX1JBTkxJQj4gPFRBUkdFVD4iKQpAQCAtMTcwLDEyICsxNzAsMTIgQEAKICMgY29tcGlsZSBhbiBPYmplY3RpdmUtQyBmaWxlIGludG8gYW4gb2JqZWN0IGZpbGUKIGlmKE5PVCBDTUFLRV9PQkpDX0NPTVBJTEVfT0JKRUNUKQogICBzZXQoQ01BS0VfT0JKQ19DT01QSUxFX09CSkVDVAotICAgICI8Q01BS0VfT0JKQ19DT01QSUxFUj4gPERFRklORVM+IDxJTkNMVURFUz4gPEZMQUdTPiAteCBvYmplY3RpdmUtYyAtbyA8T0JKRUNUPiAgIC1jIDxTT1VSQ0U+IikKKyAgICAiPENNQUtFX09CSkNfQ09NUElMRVI+IDxERUZJTkVTPiA8SU5DTFVERVM+IDxGTEFHUz4gLXggb2JqZWN0aXZlLWMgLW8gPE9CSkVDVD4gLWMgPFNPVVJDRT4iKQogZW5kaWYoKQogCiBpZihOT1QgQ01BS0VfT0JKQ19MSU5LX0VYRUNVVEFCTEUpCiAgIHNldChDTUFLRV9PQkpDX0xJTktfRVhFQ1VUQUJMRQotICAgICI8Q01BS0VfT0JKQ19DT01QSUxFUj4gPEZMQUdTPiA8Q01BS0VfT0JKQ19MSU5LX0ZMQUdTPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+ICAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKKyAgICAiPENNQUtFX09CSkNfQ09NUElMRVI+IDxGTEFHUz4gPENNQUtFX09CSkNfTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKIGVuZGlmKCkKIAogaWYoTk9UIENNQUtFX0VYRUNVVEFCTEVfUlVOVElNRV9PQkpDX0ZMQUcpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0NNYWtlT0JKQ1hYSW5mb3JtYXRpb24uY21ha2UgYi9Nb2R1bGVzL0NNYWtlT0JKQ1hYSW5mb3JtYXRpb24uY21ha2UKaW5kZXggY2IzNDlkNy4uNzFiZWI3ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9DTWFrZU9CSkNYWEluZm9ybWF0aW9uLmNtYWtlCisrKyBiL01vZHVsZXMvQ01ha2VPQkpDWFhJbmZvcm1hdGlvbi5jbWFrZQpAQCAtMjU0LDcgKzI1NCw3IEBACiAgIHNldChDTUFLRV9PQkpDWFhfQVJDSElWRV9DUkVBVEUgIjxDTUFLRV9BUj4gcWMgPFRBUkdFVD4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiIpCiBlbmRpZigpCiBpZihOT1QgREVGSU5FRCBDTUFLRV9PQkpDWFhfQVJDSElWRV9BUFBFTkQpCi0gIHNldChDTUFLRV9PQkpDWFhfQVJDSElWRV9BUFBFTkQgIjxDTUFLRV9BUj4gcSAgPFRBUkdFVD4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiIpCisgIHNldChDTUFLRV9PQkpDWFhfQVJDSElWRV9BUFBFTkQgIjxDTUFLRV9BUj4gcSA8VEFSR0VUPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+IikKIGVuZGlmKCkKIGlmKE5PVCBERUZJTkVEIENNQUtFX09CSkNYWF9BUkNISVZFX0ZJTklTSCkKICAgc2V0KENNQUtFX09CSkNYWF9BUkNISVZFX0ZJTklTSCAiPENNQUtFX1JBTkxJQj4gPFRBUkdFVD4iKQpAQCAtMjYzLDEyICsyNjMsMTIgQEAKICMgY29tcGlsZSBhbiBPYmplY3RpdmUtQysrIGZpbGUgaW50byBhbiBvYmplY3QgZmlsZQogaWYoTk9UIENNQUtFX09CSkNYWF9DT01QSUxFX09CSkVDVCkKICAgc2V0KENNQUtFX09CSkNYWF9DT01QSUxFX09CSkVDVAotICAgICI8Q01BS0VfT0JKQ1hYX0NPTVBJTEVSPiAgPERFRklORVM+IDxJTkNMVURFUz4gPEZMQUdTPiAteCBvYmplY3RpdmUtYysrIC1vIDxPQkpFQ1Q+IC1jIDxTT1VSQ0U+IikKKyAgICAiPENNQUtFX09CSkNYWF9DT01QSUxFUj4gPERFRklORVM+IDxJTkNMVURFUz4gPEZMQUdTPiAteCBvYmplY3RpdmUtYysrIC1vIDxPQkpFQ1Q+IC1jIDxTT1VSQ0U+IikKIGVuZGlmKCkKIAogaWYoTk9UIENNQUtFX09CSkNYWF9MSU5LX0VYRUNVVEFCTEUpCiAgIHNldChDTUFLRV9PQkpDWFhfTElOS19FWEVDVVRBQkxFCi0gICAgIjxDTUFLRV9PQkpDWFhfQ09NUElMRVI+ICA8RkxBR1M+IDxDTUFLRV9PQkpDWFhfTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAgLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiIpCisgICAgIjxDTUFLRV9PQkpDWFhfQ09NUElMRVI+IDxGTEFHUz4gPENNQUtFX09CSkNYWF9MSU5LX0ZMQUdTPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+IC1vIDxUQVJHRVQ+IDxMSU5LX0xJQlJBUklFUz4iKQogZW5kaWYoKQogCiBtYXJrX2FzX2FkdmFuY2VkKApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9DUGFjay5jbWFrZSBiL01vZHVsZXMvQ1BhY2suY21ha2UKaW5kZXggYmFmN2U0Ny4uNjIzNGI5ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9DUGFjay5jbWFrZQorKysgYi9Nb2R1bGVzL0NQYWNrLmNtYWtlCkBAIC01LDcgKzUsNyBAQAogQ1BhY2sKIC0tLS0tCiAKLUNvbmZpZ3VyZSB0aGUgYmluYXJ5IGFuZCBzb3VyY2UgcGFja2FnZSBpbnN0YWxsZXJzLgorQ29uZmlndXJlIGdlbmVyYXRvcnMgZm9yIGJpbmFyeSBpbnN0YWxsZXJzIGFuZCBzb3VyY2UgcGFja2FnZXMuCiAKIEludHJvZHVjdGlvbgogXl5eXl5eXl5eXl5eCkBAIC0xOSwxMyArMTksMTcgQEAKIHRhcmdldHMsIGBgcGFja2FnZWBgIGFuZCBgYHBhY2thZ2Vfc291cmNlYGAuIFNlZSB0aGUgYHBhY2thZ2luZyB0YXJnZXRzYF8KIHNlY3Rpb24gYmVsb3cgZm9yIGRldGFpbHMuCiAKLVRoZSBnZW5lcmF0ZWQgYmluYXJ5IGluc3RhbGxlcnMgY29udGFpbiBldmVyeXRoaW5nIGluc3RhbGxlZCB2aWEgQ01ha2UncwotOmNvbW1hbmQ6YGluc3RhbGxgIGNvbW1hbmQgKGFuZCB0aGUgZGVwcmVjYXRlZCBjb21tYW5kcyA6Y29tbWFuZDpgaW5zdGFsbF9maWxlc2AsCi06Y29tbWFuZDpgaW5zdGFsbF9wcm9ncmFtc2AsIGFuZCA6Y29tbWFuZDpgaW5zdGFsbF90YXJnZXRzYCkuCi1Gb3IgY2VydGFpbiBraW5kcyBvZiBiaW5hcnkgaW5zdGFsbGVycyAoaW5jbHVkaW5nIHRoZSBncmFwaGljYWwKLWluc3RhbGxlcnMgb24gbWFjT1MgYW5kIFdpbmRvd3MpLCBDUGFjayBnZW5lcmF0ZXMgaW5zdGFsbGVycyB0aGF0Ci1hbGxvdyB1c2VycyB0byBzZWxlY3QgaW5kaXZpZHVhbCBhcHBsaWNhdGlvbiBjb21wb25lbnRzIHRvIGluc3RhbGwuCi1TZWUgOm1vZHVsZTpgQ1BhY2tDb21wb25lbnRgIG1vZHVsZSBmb3IgZnVydGhlciBkZXRhaWxzLgorVGhlIGdlbmVyYXRlZCBiaW5hcnkgaW5zdGFsbGVycyB3aWxsIGNvbnRhaW4gYWxsIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIGluc3RhbGxlZAordmlhIENNYWtlJ3MgOmNvbW1hbmQ6YGluc3RhbGxgIGNvbW1hbmQgKGFuZCB0aGUgZGVwcmVjYXRlZCBjb21tYW5kcworOmNvbW1hbmQ6YGluc3RhbGxfZmlsZXNgLCA6Y29tbWFuZDpgaW5zdGFsbF9wcm9ncmFtc2AsIGFuZAorOmNvbW1hbmQ6YGluc3RhbGxfdGFyZ2V0c2ApLiAgQ2VydGFpbiBraW5kcyBvZiBiaW5hcnkgaW5zdGFsbGVycyBjYW4gYmUKK2NvbmZpZ3VyZWQgc3VjaCB0aGF0IHVzZXJzIGNhbiBzZWxlY3QgaW5kaXZpZHVhbCBhcHBsaWNhdGlvbiBjb21wb25lbnRzIHRvCitpbnN0YWxsLiAgU2VlIHRoZSA6bW9kdWxlOmBDUGFja0NvbXBvbmVudGAgbW9kdWxlIGZvciBmdXJ0aGVyIGRldGFpbHMuCisKK1NvdXJjZSBwYWNrYWdlcyAoY29uZmlndXJlZCB0aHJvdWdoIGBgQ1BhY2tTb3VyY2VDb25maWcuY21ha2VgYCBhbmQgZ2VuZXJhdGVkCitieSB0aGUgOmNwYWNrX2dlbjpgQ1BhY2sgQXJjaGl2ZSBHZW5lcmF0b3JgKSB3aWxsIGNvbnRhaW4gYWxsIHNvdXJjZSBmaWxlcyBpbgordGhlIHByb2plY3QgZGlyZWN0b3J5IGV4Y2VwdCB0aG9zZSBzcGVjaWZpZWQgaW4KKzp2YXJpYWJsZTpgQ1BBQ0tfU09VUkNFX0lHTk9SRV9GSUxFU2AuCiAKIENQYWNrIEdlbmVyYXRvcnMKIF5eXl5eXl5eXl5eXl5eXl4KQEAgLTM4LDEwICs0Miw2IEBACiA6dmFyaWFibGU6YENQQUNLX0dFTkVSQVRPUmAgaXMgYSAqc3RyaW5nIG5hbWluZyBhIHNpbmdsZSBnZW5lcmF0b3IqLiAgSWYgeW91CiBuZWVkIHBlci1jcGFjay1nZW5lcmF0b3IgbG9naWMgdG8gY29udHJvbCAqb3RoZXIqIGNwYWNrIHNldHRpbmdzLCB0aGVuIHlvdQogbmVlZCBhIDp2YXJpYWJsZTpgQ1BBQ0tfUFJPSkVDVF9DT05GSUdfRklMRWAuCi0KLVRoZSBDTWFrZSBzb3VyY2UgdHJlZSBpdHNlbGYgY29udGFpbnMgYSA6dmFyaWFibGU6YENQQUNLX1BST0pFQ1RfQ09ORklHX0ZJTEVgLgotU2VlIHRoZSB0b3AgbGV2ZWwgZmlsZSBgYENNYWtlQ1BhY2tPcHRpb25zLmNtYWtlLmluYGAgZm9yIGFuIGV4YW1wbGUuCi0KIElmIHNldCwgdGhlIDp2YXJpYWJsZTpgQ1BBQ0tfUFJPSkVDVF9DT05GSUdfRklMRWAgaXMgaW5jbHVkZWQgYXV0b21hdGljYWxseQogb24gYSBwZXItZ2VuZXJhdG9yIGJhc2lzLiAgSXQgb25seSBuZWVkIGNvbnRhaW4gb3ZlcnJpZGVzLgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0NQYWNrQ29tcG9uZW50LmNtYWtlIGIvTW9kdWxlcy9DUGFja0NvbXBvbmVudC5jbWFrZQppbmRleCAyMTFkNzY3Li4xZjhjMzhjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NQYWNrQ29tcG9uZW50LmNtYWtlCisrKyBiL01vZHVsZXMvQ1BhY2tDb21wb25lbnQuY21ha2UKQEAgLTUsMjkgKzUsMzQgQEAKIENQYWNrQ29tcG9uZW50CiAtLS0tLS0tLS0tLS0tLQogCi1CdWlsZCBiaW5hcnkgYW5kIHNvdXJjZSBwYWNrYWdlIGluc3RhbGxlcnMKK0NvbmZpZ3VyZSBjb21wb25lbnRzIGZvciBiaW5hcnkgaW5zdGFsbGVycyBhbmQgc291cmNlIHBhY2thZ2VzLgogCi1WYXJpYWJsZXMgY29uY2VybmluZyBDUGFjayBDb21wb25lbnRzCi1eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisuLiBvbmx5OjogaHRtbAogCi1UaGUgQ1BhY2tDb21wb25lbnQgbW9kdWxlIGlzIHRoZSBtb2R1bGUgd2hpY2ggaGFuZGxlcyB0aGUgY29tcG9uZW50Ci1wYXJ0IG9mIENQYWNrLiAgU2VlIENQYWNrIG1vZHVsZSBmb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCBDUGFjay4KKyAgLi4gY29udGVudHM6OgogCi1Gb3IgY2VydGFpbiBraW5kcyBvZiBiaW5hcnkgaW5zdGFsbGVycyAoaW5jbHVkaW5nIHRoZSBncmFwaGljYWwKLWluc3RhbGxlcnMgb24gbWFjT1MgYW5kIFdpbmRvd3MpLCBDUGFjayBnZW5lcmF0ZXMgaW5zdGFsbGVycyB0aGF0Ci1hbGxvdyB1c2VycyB0byBzZWxlY3QgaW5kaXZpZHVhbCBhcHBsaWNhdGlvbiBjb21wb25lbnRzIHRvIGluc3RhbGwuCi1UaGUgY29udGVudHMgb2YgZWFjaCBvZiB0aGUgY29tcG9uZW50cyBhcmUgaWRlbnRpZmllZCBieSB0aGUgQ09NUE9ORU5UCi1hcmd1bWVudCBvZiBDTWFrZSdzIElOU1RBTEwgY29tbWFuZC4gIFRoZXNlIGNvbXBvbmVudHMgY2FuIGJlCitJbnRyb2R1Y3Rpb24KK15eXl5eXl5eXl5eXgorCitUaGlzIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkIGJ5IDptb2R1bGU6YENQYWNrYC4KKworQ2VydGFpbiBiaW5hcnkgaW5zdGFsbGVycyAoZXNwZWNpYWxseSB0aGUgZ3JhcGhpY2FsIGluc3RhbGxlcnMpIGdlbmVyYXRlZAorYnkgQ1BhY2sgYWxsb3cgdXNlcnMgdG8gc2VsZWN0IGluZGl2aWR1YWwgYXBwbGljYXRpb24gKmNvbXBvbmVudHMqIHRvIGluc3RhbGwuCitUaGlzIG1vZHVsZSBhbGxvd3MgZGV2ZWxvcGVycyB0byBjb25maWd1cmUgdGhlIHBhY2thZ2luZyBvZiBzdWNoIGNvbXBvbmVudHMuCisKK0NvbnRlbnRzIGlzIGFzc2lnbmVkIHRvIGNvbXBvbmVudHMgYnkgdGhlIGBgQ09NUE9ORU5UYGAKK2FyZ3VtZW50IG9mIENNYWtlJ3MgOmNvbW1hbmQ6YGluc3RhbGxgIGNvbW1hbmQuICBDb21wb25lbnRzIGNhbiBiZQogYW5ub3RhdGVkIHdpdGggdXNlci1mcmllbmRseSBuYW1lcyBhbmQgZGVzY3JpcHRpb25zLCBpbnRlci1jb21wb25lbnQKIGRlcGVuZGVuY2llcywgZXRjLiwgYW5kIGdyb3VwZWQgaW4gdmFyaW91cyB3YXlzIHRvIGN1c3RvbWl6ZSB0aGUKLXJlc3VsdGluZyBpbnN0YWxsZXIuICBTZWUgdGhlIGNwYWNrX2FkZF8qIGNvbW1hbmRzLCBkZXNjcmliZWQgYmVsb3csCi1mb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjb21wb25lbnQtc3BlY2lmaWMgaW5zdGFsbGF0aW9ucy4KK3Jlc3VsdGluZyBpbnN0YWxsZXIsIHVzaW5nIHRoZSBjb21tYW5kcyBkZXNjcmliZWQgYmVsb3cuCiAKLUNvbXBvbmVudC1zcGVjaWZpYyBpbnN0YWxsYXRpb24gYWxsb3dzIHVzZXJzIHRvIHNlbGVjdCBzcGVjaWZpYyBzZXRzCi1vZiBjb21wb25lbnRzIHRvIGluc3RhbGwgZHVyaW5nIHRoZSBpbnN0YWxsIHByb2Nlc3MuICBJbnN0YWxsYXRpb24KLWNvbXBvbmVudHMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIENPTVBPTkVOVCBhcmd1bWVudCBvZiBDTWFrZSdzIElOU1RBTEwKLWNvbW1hbmRzLCBhbmQgc2hvdWxkIGJlIGZ1cnRoZXIgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgQ1BhY2sKLWNvbW1hbmRzOgorVG8gc3BlY2lmeSBkaWZmZXJlbnQgZ3JvdXBpbmdzIGZvciBkaWZmZXJlbnQgQ1BhY2sgZ2VuZXJhdG9ycyB1c2UKK2EgQ1BBQ0tfUFJPSkVDVF9DT05GSUdfRklMRS4KKworVmFyaWFibGVzCiteXl5eXl5eXl4KKworVGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaW5mbHVlbmNlIHRoZSBjb21wb25lbnQtc3BlY2lmaWMgcGFja2FnaW5nOgogCiAuLiB2YXJpYWJsZTo6IENQQUNLX0NPTVBPTkVOVFNfQUxMCiAKQEAgLTYxLDE2ICs2NiwxNCBAQAogIFNwZWNpZnkgaG93IGNvbXBvbmVudHMgYXJlIGdyb3VwZWQgZm9yIG11bHRpLXBhY2thZ2UgY29tcG9uZW50LWF3YXJlIENQYWNrCiAgZ2VuZXJhdG9ycy4KIAotIFNvbWUgZ2VuZXJhdG9ycyBsaWtlIFJQTSBvciBBUkNISVZFIGZhbWlseSAoVEdaLCBaSVAsIC4uLikgZ2VuZXJhdGVzCi0gc2V2ZXJhbCBwYWNrYWdlcyBmaWxlcyB3aGVuIGFza2VkIGZvciBjb21wb25lbnQgcGFja2FnaW5nLiAgVGhleSBncm91cAotIHRoZSBjb21wb25lbnQgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlOgorIFNvbWUgZ2VuZXJhdG9ycyBsaWtlIFJQTSBvciBBUkNISVZFIChUR1osIFpJUCwgLi4uKSBtYXkgZ2VuZXJhdGUKKyBzZXZlcmFsIHBhY2thZ2VzIGZpbGVzIHdoZW4gdGhlcmUgYXJlIGNvbXBvbmVudHMsIGRlcGVuZGluZworIG9uIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlOgogCi0gKiBPTkVfUEVSX0dST1VQIChkZWZhdWx0KTogY3JlYXRlcyBvbmUgcGFja2FnZSBmaWxlIHBlciBjb21wb25lbnQgZ3JvdXAKLSAqIEFMTF9DT01QT05FTlRTX0lOX09ORSA6IGNyZWF0ZXMgYSBzaW5nbGUgcGFja2FnZSB3aXRoIGFsbCAocmVxdWVzdGVkKSBjb21wb25lbnRzCi0gKiBJR05PUkUgOiBjcmVhdGVzIG9uZSBwYWNrYWdlIHBlciBjb21wb25lbnQsIGkuZS4gSUdOT1JFIGNvbXBvbmVudCBncm91cAotCi0gT25lIGNhbiBzcGVjaWZ5IGRpZmZlcmVudCBncm91cGluZyBmb3IgZGlmZmVyZW50IENQYWNrIGdlbmVyYXRvciBieQotIHVzaW5nIGEgQ1BBQ0tfUFJPSkVDVF9DT05GSUdfRklMRS4KKyAqIE9ORV9QRVJfR1JPVVAgKGRlZmF1bHQpOiBjcmVhdGUgb25lIHBhY2thZ2UgcGVyIGNvbXBvbmVudCBncm91cAorICogSUdOT1JFIDogY3JlYXRlIG9uZSBwYWNrYWdlIHBlciBjb21wb25lbnQgKGlnbm9yZSB0aGUgZ3JvdXBzKQorICogQUxMX0NPTVBPTkVOVFNfSU5fT05FIDogY3JlYXRlIGEgc2luZ2xlIHBhY2thZ2Ugd2l0aCBhbGwgcmVxdWVzdGVkCisgICBjb21wb25lbnRzCiAKIC4uIHZhcmlhYmxlOjogQ1BBQ0tfQ09NUE9ORU5UXzxjb21wTmFtZT5fRElTUExBWV9OQU1FCiAKQEAgLTEwMCwxMCArMTAzLDE1IEBACiAKICBUcnVlIGlmIHRoaXMgY29tcG9uZW50IGlzIG5vdCBzZWxlY3RlZCB0byBiZSBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KIAorQ29tbWFuZHMKK15eXl5eXl5eCisKK0FkZCBjb21wb25lbnQKKyIiIiIiIiIiIiIiIiIKKwogLi4gY29tbWFuZDo6IGNwYWNrX2FkZF9jb21wb25lbnQKIAotRGVzY3JpYmVzIGEgQ1BhY2sgaW5zdGFsbGF0aW9uCi1jb21wb25lbnQgbmFtZWQgYnkgdGhlIENPTVBPTkVOVCBhcmd1bWVudCB0byBhIENNYWtlIElOU1RBTEwgY29tbWFuZC4KK0Rlc2NyaWJlIGFuIGluc3RhbGxhdGlvbiBjb21wb25lbnQuCiAKIDo6CiAKQEAgLTExOCwxMyArMTI2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgW0FSQ0hJVkVfRklMRSBmaWxlbmFtZV0KICAgICAgICAgICAgICAgICAgICAgICBbUExJU1QgZmlsZW5hbWVdKQogCi0KLQotVGhlIGNtYWtlX2FkZF9jb21wb25lbnQgY29tbWFuZCBkZXNjcmliZXMgYW4gaW5zdGFsbGF0aW9uIGNvbXBvbmVudCwKLXdoaWNoIHRoZSB1c2VyIGNhbiBvcHQgdG8gaW5zdGFsbCBvciByZW1vdmUgYXMgcGFydCBvZiB0aGUgZ3JhcGhpY2FsCi1pbnN0YWxsYXRpb24gcHJvY2Vzcy4gIGNvbXBuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQsIGFzCi1wcm92aWRlZCB0byB0aGUgQ09NUE9ORU5UIGFyZ3VtZW50IG9mIG9uZSBvciBtb3JlIENNYWtlIElOU1RBTEwKLWNvbW1hbmRzLgorYGBjb21wbmFtZWBgIGlzIHRoZSBuYW1lIG9mIGFuIGluc3RhbGxhdGlvbiBjb21wb25lbnQsIGFzIGRlZmluZWQgYnkgdGhlCitgYENPTVBPTkVOVGBgIGFyZ3VtZW50IG9mIG9uZSBvciBtb3JlIENNYWtlIDpjb21tYW5kOmBpbnN0YWxsYCBjb21tYW5kcy4KK1dpdGggdGhlIGBgY3BhY2tfYWRkX2NvbXBvbmVudGBgIGNvbW1hbmQgb25lIGNhbiBzZXQgYSBuYW1lLCBhIGRlc2NyaXB0aW9uLAorYW5kIG90aGVyIGF0dHJpYnV0ZXMgb2YgYW4gaW5zdGFsbGF0aW9uIGNvbXBvbmVudC4KK09uZSBjYW4gYWxzbyBhc3NpZ24gYSBjb21wb25lbnQgdG8gYSBjb21wb25lbnQgZ3JvdXAuCiAKIERJU1BMQVlfTkFNRSBpcyB0aGUgZGlzcGxheWVkIG5hbWUgb2YgdGhlIGNvbXBvbmVudCwgdXNlZCBpbiBncmFwaGljYWwKIGluc3RhbGxlcnMgdG8gZGlzcGxheSB0aGUgY29tcG9uZW50IG5hbWUuICBUaGlzIHZhbHVlIGNhbiBiZSBhbnkKQEAgLTE3Nyw2ICsxODMsOSBAQAogUExJU1QgZ2l2ZXMgYSBmaWxlbmFtZSB0aGF0IGlzIHBhc3NlZCB0byBwa2didWlsZCB3aXRoIHRoZQogYGAtLWNvbXBvbmVudC1wbGlzdGBgIGFyZ3VtZW50IHdoZW4gdXNpbmcgdGhlIHByb2R1Y3RidWlsZCBnZW5lcmF0b3IuCiAKK0FkZCBjb21wb25lbnQgZ3JvdXAKKyIiIiIiIiIiIiIiIiIiIiIiIiIKKwogLi4gY29tbWFuZDo6IGNwYWNrX2FkZF9jb21wb25lbnRfZ3JvdXAKIAogRGVzY3JpYmVzIGEgZ3JvdXAgb2YgcmVsYXRlZCBDUGFjayBpbnN0YWxsYXRpb24gY29tcG9uZW50cy4KQEAgLTIyNSw2ICsyMzQsOSBAQAogQk9MRF9USVRMRSBpbmRpY2F0ZXMgdGhhdCB0aGUgZ3JvdXAgdGl0bGUgc2hvdWxkIGFwcGVhciBpbiBib2xkLCB0bwogY2FsbCB0aGUgdXNlcidzIGF0dGVudGlvbiB0byB0aGUgZ3JvdXAuCiAKK0FkZCBpbnN0YWxsYXRpb24gdHlwZQorIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKIC4uIGNvbW1hbmQ6OiBjcGFja19hZGRfaW5zdGFsbF90eXBlCiAKIEFkZCBhIG5ldyBpbnN0YWxsYXRpb24gdHlwZSBjb250YWluaW5nCkBAIC0yNDksNiArMjYxLDkgQEAKIHR5cGljYWxseSBzaG93IHVwIGluIGEgZHJvcC1kb3duIGJveCB3aXRoaW4gYSBncmFwaGljYWwgaW5zdGFsbGVyLgogVGhpcyB2YWx1ZSBjYW4gYmUgYW55IHN0cmluZy4KIAorQ29uZmlndXJlIGRvd25sb2FkcworIiIiIiIiIiIiIiIiIiIiIiIiIgorCiAuLiBjb21tYW5kOjogY3BhY2tfY29uZmlndXJlX2Rvd25sb2FkcwogCiBDb25maWd1cmUgQ1BhY2sgdG8gZG93bmxvYWQKQEAgLTI4MSw4ICsyOTYsNiBAQAogCiAgIGh0dHA6Ly9uc2lzLnNvdXJjZWZvcmdlLm5ldC9aaXBETExfcGx1Zy1pbgogCi0KLQogT24gbWFjT1MsIGluc3RhbGxlcnMgdGhhdCBkb3dubG9hZCBjb21wb25lbnRzIG9uLXRoZS1mbHkgY2FuIG9ubHkKIGJlIGJ1aWx0IGFuZCBpbnN0YWxsZWQgb24gc3lzdGVtIHVzaW5nIG1hY09TIDEwLjUgb3IgbGF0ZXIuCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvQ2hlY2tGb3J0cmFuU291cmNlQ29tcGlsZXMuY21ha2UgYi9Nb2R1bGVzL0NoZWNrRm9ydHJhblNvdXJjZUNvbXBpbGVzLmNtYWtlCmluZGV4IGYwZmRlOGQuLjMzNTRiZmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvQ2hlY2tGb3J0cmFuU291cmNlQ29tcGlsZXMuY21ha2UKKysrIGIvTW9kdWxlcy9DaGVja0ZvcnRyYW5Tb3VyY2VDb21waWxlcy5jbWFrZQpAQCAtMTAzLDggKzEwMyw2IEBACiAgICAgaWYoTk9UIF9TUkNfRVhUKQogICAgICAgc2V0KF9TUkNfRVhUIEYpCiAgICAgZW5kaWYoKQotICAgIHNldChNQUNST19DSEVDS19GVU5DVElPTl9ERUZJTklUSU9OUwotICAgICAgIi1EJHtWQVJ9ICR7Q01BS0VfUkVRVUlSRURfRkxBR1N9IikKICAgICBpZihDTUFLRV9SRVFVSVJFRF9MSU5LX09QVElPTlMpCiAgICAgICBzZXQoQ0hFQ0tfRm9ydHJhbl9TT1VSQ0VfQ09NUElMRVNfQUREX0xJTktfT1BUSU9OUwogICAgICAgICBMSU5LX09QVElPTlMgJHtDTUFLRV9SRVFVSVJFRF9MSU5LX09QVElPTlN9KQpAQCAtMTMyLDEwICsxMzAsMTAgQEAKICAgICB0cnlfY29tcGlsZSgke1ZBUn0KICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0KICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0ke0NNQUtFX0ZJTEVTX0RJUkVDVE9SWX0vQ01ha2VUbXAvc3JjLiR7X1NSQ19FWFR9Ci0gICAgICBDT01QSUxFX0RFRklOSVRJT05TICR7Q01BS0VfUkVRVUlSRURfREVGSU5JVElPTlN9CisgICAgICBDT01QSUxFX0RFRklOSVRJT05TIC1EJHtWQVJ9ICR7Q01BS0VfUkVRVUlSRURfREVGSU5JVElPTlN9CiAgICAgICAke0NIRUNLX0ZvcnRyYW5fU09VUkNFX0NPTVBJTEVTX0FERF9MSU5LX09QVElPTlN9CiAgICAgICAke0NIRUNLX0ZvcnRyYW5fU09VUkNFX0NPTVBJTEVTX0FERF9MSUJSQVJJRVN9Ci0gICAgICBDTUFLRV9GTEFHUyAtRENPTVBJTEVfREVGSU5JVElPTlM6U1RSSU5HPSR7TUFDUk9fQ0hFQ0tfRlVOQ1RJT05fREVGSU5JVElPTlN9CisgICAgICBDTUFLRV9GTEFHUyAtRENPTVBJTEVfREVGSU5JVElPTlM6U1RSSU5HPSR7Q01BS0VfUkVRVUlSRURfRkxBR1N9CiAgICAgICAiJHtDSEVDS19Gb3J0cmFuX1NPVVJDRV9DT01QSUxFU19BRERfSU5DTFVERVN9IgogICAgICAgT1VUUFVUX1ZBUklBQkxFIE9VVFBVVCkKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9DaGVja0ZvcnRyYW5Tb3VyY2VSdW5zLmNtYWtlIGIvTW9kdWxlcy9DaGVja0ZvcnRyYW5Tb3VyY2VSdW5zLmNtYWtlCmluZGV4IGEzZTVkNWQuLmY4NThiODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvQ2hlY2tGb3J0cmFuU291cmNlUnVucy5jbWFrZQorKysgYi9Nb2R1bGVzL0NoZWNrRm9ydHJhblNvdXJjZVJ1bnMuY21ha2UKQEAgLTk4LDggKzk4LDYgQEAKICAgICBpZihOT1QgX1NSQ19FWFQpCiAgICAgICBzZXQoX1NSQ19FWFQgRjkwKQogICAgIGVuZGlmKCkKLSAgICBzZXQoTUFDUk9fQ0hFQ0tfRlVOQ1RJT05fREVGSU5JVElPTlMKLSAgICAgICItRCR7VkFSfSAke0NNQUtFX1JFUVVJUkVEX0ZMQUdTfSIpCiAgICAgaWYoQ01BS0VfUkVRVUlSRURfTElOS19PUFRJT05TKQogICAgICAgc2V0KENIRUNLX0ZvcnRyYW5fU09VUkNFX0NPTVBJTEVTX0FERF9MSU5LX09QVElPTlMKICAgICAgICAgTElOS19PUFRJT05TICR7Q01BS0VfUkVRVUlSRURfTElOS19PUFRJT05TfSkKQEAgLTEyNywxMCArMTI1LDEwIEBACiAgICAgdHJ5X3J1bigke1ZBUn1fRVhJVENPREUgJHtWQVJ9X0NPTVBJTEVECiAgICAgICAke0NNQUtFX0JJTkFSWV9ESVJ9CiAgICAgICAke0NNQUtFX0JJTkFSWV9ESVJ9JHtDTUFLRV9GSUxFU19ESVJFQ1RPUll9L0NNYWtlVG1wL3NyYy4ke19TUkNfRVhUfQotICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyAke0NNQUtFX1JFUVVJUkVEX0RFRklOSVRJT05TfQorICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyAtRCR7VkFSfSAke0NNQUtFX1JFUVVJUkVEX0RFRklOSVRJT05TfQogICAgICAgJHtDSEVDS19Gb3J0cmFuX1NPVVJDRV9DT01QSUxFU19BRERfTElOS19PUFRJT05TfQogICAgICAgJHtDSEVDS19Gb3J0cmFuX1NPVVJDRV9DT01QSUxFU19BRERfTElCUkFSSUVTfQotICAgICAgQ01BS0VfRkxBR1MgLURDT01QSUxFX0RFRklOSVRJT05TOlNUUklORz0ke01BQ1JPX0NIRUNLX0ZVTkNUSU9OX0RFRklOSVRJT05TfQorICAgICAgQ01BS0VfRkxBR1MgLURDT01QSUxFX0RFRklOSVRJT05TOlNUUklORz0ke0NNQUtFX1JFUVVJUkVEX0ZMQUdTfQogICAgICAgLURDTUFLRV9TS0lQX1JQQVRIOkJPT0w9JHtDTUFLRV9TS0lQX1JQQVRIfQogICAgICAgIiR7Q0hFQ0tfRm9ydHJhbl9TT1VSQ0VfQ09NUElMRVNfQUREX0lOQ0xVREVTfSIKICAgICAgIENPTVBJTEVfT1VUUFVUX1ZBUklBQkxFIE9VVFBVVApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9DaGVja0xhbmd1YWdlLmNtYWtlIGIvTW9kdWxlcy9DaGVja0xhbmd1YWdlLmNtYWtlCmluZGV4IDk5N2NjOGQuLmY0ODEwN2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvQ2hlY2tMYW5ndWFnZS5jbWFrZQorKysgYi9Nb2R1bGVzL0NoZWNrTGFuZ3VhZ2UuY21ha2UKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICAgIHNldChleHRyYV9jb21waWxlcl92YXJpYWJsZXMgInNldChDTUFLRV9DVURBX0hPU1RfQ09NUElMRVIgXFxcIlwke0NNQUtFX0NVREFfSE9TVF9DT01QSUxFUn1cXFwiKSIpCiAgICAgZW5kaWYoKQogCi0gICAgc2V0KGNvbnRlbnQKKyAgICBzZXQoX2NsX2NvbnRlbnQKICAgICAgICJjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gJHtDTUFLRV9WRVJTSU9OfSkKIHByb2plY3QoQ2hlY2ske2xhbmd9ICR7bGFuZ30pCiBmaWxlKFdSSVRFIFwiXCR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9yZXN1bHQuY21ha2VcIgpAQCAtNTcsNyArNTcsNyBAQAogICAgICkKIAogICAgIGZpbGUoV1JJVEUgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9DTWFrZUZpbGVzL0NoZWNrJHtsYW5nfS9DTWFrZUxpc3RzLnR4dCIKLSAgICAgICIke2NvbnRlbnR9IikKKyAgICAgICIke19jbF9jb250ZW50fSIpCiAgICAgaWYoQ01BS0VfR0VORVJBVE9SX0lOU1RBTkNFKQogICAgICAgc2V0KF9EX0NNQUtFX0dFTkVSQVRPUl9JTlNUQU5DRSAiLURDTUFLRV9HRU5FUkFUT1JfSU5TVEFOQ0U6SU5URVJOQUw9JHtDTUFLRV9HRU5FUkFUT1JfSU5TVEFOQ0V9IikKICAgICBlbHNlKCkKQEAgLTc1LDIyICs3NSwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLVQgIiR7Q01BS0VfR0VORVJBVE9SX1RPT0xTRVR9IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtfRF9DTUFLRV9HRU5FUkFUT1JfSU5TVEFOQ0V9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke19EX0NNQUtFX01BS0VfUFJPR1JBTX0KLSAgICAgIE9VVFBVVF9WQVJJQUJMRSBvdXRwdXQKLSAgICAgIEVSUk9SX1ZBUklBQkxFIG91dHB1dAotICAgICAgUkVTVUxUX1ZBUklBQkxFIHJlc3VsdAorICAgICAgT1VUUFVUX1ZBUklBQkxFIF9jbF9vdXRwdXQKKyAgICAgIEVSUk9SX1ZBUklBQkxFIF9jbF9vdXRwdXQKKyAgICAgIFJFU1VMVF9WQVJJQUJMRSBfY2xfcmVzdWx0CiAgICAgICApCiAgICAgaW5jbHVkZSgke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vQ01ha2VGaWxlcy9DaGVjayR7bGFuZ30vcmVzdWx0LmNtYWtlIE9QVElPTkFMKQotICAgIGlmKENNQUtFXyR7bGFuZ31fQ09NUElMRVIgQU5EICIke3Jlc3VsdH0iIFNUUkVRVUFMICIwIikKKyAgICBpZihDTUFLRV8ke2xhbmd9X0NPTVBJTEVSIEFORCAiJHtfY2xfcmVzdWx0fSIgU1RSRVFVQUwgIjAiKQogICAgICAgZmlsZShBUFBFTkQgJHtDTUFLRV9CSU5BUllfRElSfSR7Q01BS0VfRklMRVNfRElSRUNUT1JZfS9DTWFrZU91dHB1dC5sb2cKICAgICAgICAgIiR7X2Rlc2N9IHBhc3NlZCB3aXRoIHRoZSBmb2xsb3dpbmcgb3V0cHV0OlxuIgotICAgICAgICAiJHtvdXRwdXR9XG4iKQorICAgICAgICAiJHtfY2xfb3V0cHV0fVxuIikKICAgICAgIHNldChfQ0hFQ0tfQ09NUElMRVJfU1RBVFVTIENIRUNLX1BBU1MpCiAgICAgZWxzZSgpCiAgICAgICBzZXQoQ01BS0VfJHtsYW5nfV9DT01QSUxFUiBOT1RGT1VORCkKICAgICAgIHNldChfQ0hFQ0tfQ09NUElMRVJfU1RBVFVTIENIRUNLX0ZBSUwpCiAgICAgICBmaWxlKEFQUEVORCAke0NNQUtFX0JJTkFSWV9ESVJ9JHtDTUFLRV9GSUxFU19ESVJFQ1RPUll9L0NNYWtlRXJyb3IubG9nCiAgICAgICAgICIke19kZXNjfSBmYWlsZWQgd2l0aCB0aGUgZm9sbG93aW5nIG91dHB1dDpcbiIKLSAgICAgICAgIiR7b3V0cHV0fVxuIikKKyAgICAgICAgIiR7X2NsX291dHB1dH1cbiIpCiAgICAgZW5kaWYoKQogICAgIG1lc3NhZ2UoJHtfQ0hFQ0tfQ09NUElMRVJfU1RBVFVTfSAiJHtDTUFLRV8ke2xhbmd9X0NPTVBJTEVSfSIpCiAgICAgc2V0KENNQUtFXyR7bGFuZ31fQ09NUElMRVIgIiR7Q01BS0VfJHtsYW5nfV9DT01QSUxFUn0iIENBQ0hFIEZJTEVQQVRIICIke2xhbmd9IGNvbXBpbGVyIikKZGlmZiAtLWdpdCBhL01vZHVsZXMvQ2hlY2tUeXBlU2l6ZS5jLmluIGIvTW9kdWxlcy9DaGVja1R5cGVTaXplLmMuaW4KaW5kZXggODIwMzVhMy4uZmI5MzA3MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9DaGVja1R5cGVTaXplLmMuaW4KKysrIGIvTW9kdWxlcy9DaGVja1R5cGVTaXplLmMuaW4KQEAgLTUsMTAgKzUsMTQgQEAKICMgZGVmaW5lIEtFWSAnXycsJ18nLCdpJywnMycsJzgnLCc2JwogI2VsaWYgZGVmaW5lZChfX3g4Nl82NCkKICMgZGVmaW5lIEtFWSAnXycsJ18nLCd4JywnOCcsJzYnLCdfJywnNicsJzQnCi0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCi0jIGRlZmluZSBLRVkgJ18nLCdfJywncCcsJ3AnLCdjJywnXycsJ18nCisjZWxpZiBkZWZpbmVkKF9fUFBDNjRfXykKKyMgZGVmaW5lIEtFWSAnXycsJ18nLCdQJywnUCcsJ0MnLCc2JywnNCcsJ18nLCdfJwogI2VsaWYgZGVmaW5lZChfX3BwYzY0X18pCiAjIGRlZmluZSBLRVkgJ18nLCdfJywncCcsJ3AnLCdjJywnNicsJzQnLCdfJywnXycKKyNlbGlmIGRlZmluZWQoX19QUENfXykKKyMgZGVmaW5lIEtFWSAnXycsJ18nLCdQJywnUCcsJ0MnLCdfJywnXycKKyNlbGlmIGRlZmluZWQoX19wcGNfXykKKyMgZGVmaW5lIEtFWSAnXycsJ18nLCdwJywncCcsJ2MnLCdfJywnXycKICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCiAjIGRlZmluZSBLRVkgJ18nLCdfJywnYScsJ2EnLCdyJywnYycsJ2gnLCc2JywnNCcsJ18nLCdfJwogI2VsaWYgZGVmaW5lZChfX0FSTV9BUkNIXzdBX18pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0NvbXBpbGVyL0dOVS1BU00uY21ha2UgYi9Nb2R1bGVzL0NvbXBpbGVyL0dOVS1BU00uY21ha2UKaW5kZXggZTA3NDAxZC4uM2RhYTU3ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9Db21waWxlci9HTlUtQVNNLmNtYWtlCisrKyBiL01vZHVsZXMvQ29tcGlsZXIvR05VLUFTTS5jbWFrZQpAQCAtNCwzICs0LDkgQEAKIHNldChDTUFLRV9BU01fU09VUkNFX0ZJTEVfRVhURU5TSU9OUyBzO1M7YXNtKQogCiBfX2NvbXBpbGVyX2dudShBU00pCisKK2lmKENNQUtFX0FTTSR7QVNNX0RJQUxFQ1R9X0NPTVBJTEVSX0lEX1ZFTkRPUl9NQVRDSCBTVFJFUVVBTCAiR05VIGFzc2VtYmxlciIpCisgIHNldChDTUFLRV9ERVBGSUxFX0ZMQUdTX0FTTSR7QVNNX0RJQUxFQ1R9ICItLU1EIDxERVBGSUxFPiIpCisgIHNldChDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9MSU5LX0VYRUNVVEFCTEUKKyAgICAiPENNQUtFX0xJTktFUj4gPEZMQUdTPiA8Q01BS0VfQVNNJHtBU01fRElBTEVDVH1fTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKK2VuZGlmKCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvQ29tcGlsZXIvR05VLmNtYWtlIGIvTW9kdWxlcy9Db21waWxlci9HTlUuY21ha2UKaW5kZXggMWMwNTBhMi4uMzM1N2E4NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9Db21waWxlci9HTlUuY21ha2UKKysrIGIvTW9kdWxlcy9Db21waWxlci9HTlUuY21ha2UKQEAgLTExNCw2ICsxMTQsNyBAQAogICBpZiAoTk9UIENNQUtFX0dFTkVSQVRPUiBNQVRDSEVTICJYY29kZSIpCiAgICAgc2V0KENNQUtFX1BDSF9QUk9MT0dVRSAiI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlciIpCiAgIGVuZGlmKCkKLSAgc2V0KENNQUtFXyR7bGFuZ31fQ09NUElMRV9PUFRJT05TX1VTRV9QQ0ggLVdpbnZhbGlkLXBjaCAtaW5jbHVkZSA8UENIX0hFQURFUj4pCi0gIHNldChDTUFLRV8ke2xhbmd9X0NPTVBJTEVfT1BUSU9OU19DUkVBVEVfUENIIC1XaW52YWxpZC1wY2ggLXggJHtfX3BjaF9oZWFkZXJfJHtsYW5nfX0gLWluY2x1ZGUgPFBDSF9IRUFERVI+KQorICBzZXQoQ01BS0VfJHtsYW5nfV9DT01QSUxFX09QVElPTlNfSU5WQUxJRF9QQ0ggLVdpbnZhbGlkLXBjaCkKKyAgc2V0KENNQUtFXyR7bGFuZ31fQ09NUElMRV9PUFRJT05TX1VTRV9QQ0ggLWluY2x1ZGUgPFBDSF9IRUFERVI+KQorICBzZXQoQ01BS0VfJHtsYW5nfV9DT01QSUxFX09QVElPTlNfQ1JFQVRFX1BDSCAteCAke19fcGNoX2hlYWRlcl8ke2xhbmd9fSAtaW5jbHVkZSA8UENIX0hFQURFUj4pCiBlbmRtYWNybygpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0NvbXBpbGVyL0ludGVsLmNtYWtlIGIvTW9kdWxlcy9Db21waWxlci9JbnRlbC5jbWFrZQppbmRleCBkODk1ZWQwLi42M2EyMGFmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NvbXBpbGVyL0ludGVsLmNtYWtlCisrKyBiL01vZHVsZXMvQ29tcGlsZXIvSW50ZWwuY21ha2UKQEAgLTM3LDcgKzM3LDggQEAKICAgICBzZXQoQ01BS0VfUENIX0VYVEVOU0lPTiAucGNoaSkKICAgICBzZXQoQ01BS0VfTElOS19QQ0ggT04pCiAgICAgc2V0KENNQUtFX1BDSF9FUElMT0dVRSAiI3ByYWdtYSBoZHJzdG9wIikKLSAgICBzZXQoQ01BS0VfJHtsYW5nfV9DT01QSUxFX09QVElPTlNfVVNFX1BDSCAtV2ludmFsaWQtcGNoIC1Xbm8tcGNoLW1lc3NhZ2VzIC1wY2gtdXNlIDxQQ0hfRklMRT4gLWluY2x1ZGUgPFBDSF9IRUFERVI+KQotICAgIHNldChDTUFLRV8ke2xhbmd9X0NPTVBJTEVfT1BUSU9OU19DUkVBVEVfUENIIC1XaW52YWxpZC1wY2ggLVduby1wY2gtbWVzc2FnZXMgLXBjaC1jcmVhdGUgPFBDSF9GSUxFPiAtaW5jbHVkZSA8UENIX0hFQURFUj4pCisgICAgc2V0KENNQUtFXyR7bGFuZ31fQ09NUElMRV9PUFRJT05TX0lOVkFMSURfUENIIC1XaW52YWxpZC1wY2gpCisgICAgc2V0KENNQUtFXyR7bGFuZ31fQ09NUElMRV9PUFRJT05TX1VTRV9QQ0ggLVduby1wY2gtbWVzc2FnZXMgLXBjaC11c2UgPFBDSF9GSUxFPiAtaW5jbHVkZSA8UENIX0hFQURFUj4pCisgICAgc2V0KENNQUtFXyR7bGFuZ31fQ09NUElMRV9PUFRJT05TX0NSRUFURV9QQ0ggLVduby1wY2gtbWVzc2FnZXMgLXBjaC1jcmVhdGUgPFBDSF9GSUxFPiAtaW5jbHVkZSA8UENIX0hFQURFUj4pCiAgIGVuZG1hY3JvKCkKIGVuZGlmKCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvQ29tcGlsZXIvTlZJRElBLUNVREEuY21ha2UgYi9Nb2R1bGVzL0NvbXBpbGVyL05WSURJQS1DVURBLmNtYWtlCmluZGV4IDFmNGQ1NGQuLjJhMjU2NGUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvQ29tcGlsZXIvTlZJRElBLUNVREEuY21ha2UKKysrIGIvTW9kdWxlcy9Db21waWxlci9OVklESUEtQ1VEQS5jbWFrZQpAQCAtNCw2ICs0LDggQEAKIHNldChDTUFLRV9DVURBX1ZFUkJPU0VfRkxBRyAiLXYiKQogc2V0KENNQUtFX0NVREFfVkVSQk9TRV9DT01QSUxFX0ZMQUcgIi1YY29tcGlsZXI9LXYiKQogCitzZXQoX0NNQUtFX0NPTVBJTEVfQVNfQ1VEQV9GTEFHICIteCBjdSIpCisKIGlmIChDTUFLRV9DVURBX0NPTVBJTEVSX1ZFUlNJT04gVkVSU0lPTl9HUkVBVEVSX0VRVUFMIDEwLjIuODkpCiAgICMgVGhlIC1mb3J3YXJkLXVua25vd24tdG8taG9zdC1jb21waWxlciBmbGFnIHdhcyBvbmx5CiAgICMgYWRkZWQgdG8gbnZjYyBpbiAxMC4yIHNvIGJlZm9yZSB0aGF0IHdlIGhhZCBubyBnb29kCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0NvbXBpbGVyL1FDQy1DWFguY21ha2UgYi9Nb2R1bGVzL0NvbXBpbGVyL1FDQy1DWFguY21ha2UKaW5kZXggMGU3MzE0YS4uNDIzMDNmNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9Db21waWxlci9RQ0MtQ1hYLmNtYWtlCisrKyBiL01vZHVsZXMvQ29tcGlsZXIvUUNDLUNYWC5jbWFrZQpAQCAtMTAsNiArMTAsNiBAQAogICAiPENNQUtFX0NYWF9DT01QSUxFUj4gLWxhbmctYysrIDxERUZJTkVTPiA8SU5DTFVERVM+IDxGTEFHUz4gLW8gPE9CSkVDVD4gLWMgPFNPVVJDRT4iKQogCiBzZXQoQ01BS0VfQ1hYX0xJTktfRVhFQ1VUQUJMRQotICAiPENNQUtFX0NYWF9DT01QSUxFUj4gLWxhbmctYysrIDxGTEFHUz4gPENNQUtFX0NYWF9MSU5LX0ZMQUdTPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+ICAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKKyAgIjxDTUFLRV9DWFhfQ09NUElMRVI+IC1sYW5nLWMrKyA8RkxBR1M+IDxDTUFLRV9DWFhfTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKIAogc2V0KENNQUtFX0NYWF9DT01QSUxFX09QVElPTlNfVklTSUJJTElUWV9JTkxJTkVTX0hJRERFTiAiLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIikKZGlmZiAtLWdpdCBhL01vZHVsZXMvQ29tcGlsZXIvVEktQy5jbWFrZSBiL01vZHVsZXMvQ29tcGlsZXIvVEktQy5jbWFrZQppbmRleCAxYzBmNGJjLi5iMDYwZWU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NvbXBpbGVyL1RJLUMuY21ha2UKKysrIGIvTW9kdWxlcy9Db21waWxlci9USS1DLmNtYWtlCkBAIC0xNCw1ICsxNCw5IEBACiBzZXQoQ01BS0VfQ19DUkVBVEVfUFJFUFJPQ0VTU0VEX1NPVVJDRSAiPENNQUtFX0NfQ09NUElMRVI+IC0tcHJlcHJvY19vbmx5IC0tY19maWxlPTxTT1VSQ0U+IDxERUZJTkVTPiA8SU5DTFVERVM+IDxGTEFHUz4gLS1vdXRwdXRfZmlsZT08UFJFUFJPQ0VTU0VEX1NPVVJDRT4iKQogCiBzZXQoQ01BS0VfQ19DT01QSUxFX09CSkVDVCAgIjxDTUFLRV9DX0NPTVBJTEVSPiAtLWNvbXBpbGVfb25seSAtLWNfZmlsZT08U09VUkNFPiA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC0tb3V0cHV0X2ZpbGU9PE9CSkVDVD4iKQotc2V0KENNQUtFX0NfQVJDSElWRV9DUkVBVEUgIjxDTUFLRV9BUj4gLXIgPFRBUkdFVD4gPE9CSkVDVFM+IikKLXNldChDTUFLRV9DX0xJTktfRVhFQ1VUQUJMRSAiPENNQUtFX0NfQ09NUElMRVI+IC0tcnVuX2xpbmtlciAtLW91dHB1dF9maWxlPTxUQVJHRVQ+IC0tbWFwX2ZpbGU9PFRBUkdFVD4ubWFwIDxDTUFLRV9DX0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gPExJTktfTElCUkFSSUVTPiIpCitzZXQoQ01BS0VfQ19BUkNISVZFX0NSRUFURSAiPENNQUtFX0FSPiBxciA8VEFSR0VUPiA8T0JKRUNUUz4iKQorc2V0KENNQUtFX0NfQVJDSElWRV9BUFBFTkQgIjxDTUFLRV9BUj4gcWEgPFRBUkdFVD4gPE9CSkVDVFM+IikKK3NldChDTUFLRV9DX0xJTktfRVhFQ1VUQUJMRSAiPENNQUtFX0NfQ09NUElMRVI+IC0tcnVuX2xpbmtlciAtLW91dHB1dF9maWxlPTxUQVJHRVQ+IC0tbWFwX2ZpbGU9PFRBUkdFVF9OQU1FPi5tYXAgPENNQUtFX0NfTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiA8TElOS19MSUJSQVJJRVM+IikKK3NldChDTUFLRV9BU01fUkVTUE9OU0VfRklMRV9GTEFHICItLWNtZF9maWxlPSIpCitzZXQoQ01BS0VfQ19SRVNQT05TRV9GSUxFX0ZMQUcgIi0tY21kX2ZpbGU9IikKK3NldChDTUFLRV9DX1JFU1BPTlNFX0ZJTEVfTElOS19GTEFHICIgIikKZGlmZiAtLWdpdCBhL01vZHVsZXMvQ29tcGlsZXIvWEwtRm9ydHJhbi5jbWFrZSBiL01vZHVsZXMvQ29tcGlsZXIvWEwtRm9ydHJhbi5jbWFrZQppbmRleCAxNjgzZGZmLi5lMDFlYzhlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL0NvbXBpbGVyL1hMLUZvcnRyYW4uY21ha2UKKysrIGIvTW9kdWxlcy9Db21waWxlci9YTC1Gb3J0cmFuLmNtYWtlCkBAIC04LDYgKzgsNyBAQAogc2V0KENNQUtFX0ZvcnRyYW5fRk9STUFUX0ZSRUVfRkxBRyAiLXFmcmVlIikgIyBbPWY5MHxpYm1dCiAKIHNldChDTUFLRV9Gb3J0cmFuX01PRERJUl9GTEFHICItcW1vZGRpcj0iKQorc2V0KENNQUtFX0ZvcnRyYW5fTU9ERElSX0lOQ0xVREVfRkxBRyAiLUkiKSAjIC1xbW9kZGlyPSBkb2VzIG5vdCBhZmZlY3Qgc2VhcmNoIHBhdGgKIAogc2V0KENNQUtFX0ZvcnRyYW5fREVGSU5FX0ZMQUcgIi1XRiwtRCIpCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvRXh0ZXJuYWxQcm9qZWN0LmNtYWtlIGIvTW9kdWxlcy9FeHRlcm5hbFByb2plY3QuY21ha2UKaW5kZXggNWJhYzBkOC4uMzI2ZWUwNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9FeHRlcm5hbFByb2plY3QuY21ha2UKKysrIGIvTW9kdWxlcy9FeHRlcm5hbFByb2plY3QuY21ha2UKQEAgLTksOCArOSwxMSBAQAogCiAgICAuLiBjb250ZW50czo6CiAKK0NvbW1hbmRzCiteXl5eXl5eXgorCiBFeHRlcm5hbCBQcm9qZWN0IERlZmluaXRpb24KLV5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCiAKIC4uIGNvbW1hbmQ6OiBFeHRlcm5hbFByb2plY3RfQWRkCiAKQEAgLTY2NSw3ICs2NjgsNyBAQAogICBhdXRvbWF0aWMgc3Vic3RpdHV0aW9ucyB0aGF0IGFyZSBzdXBwb3J0ZWQgZm9yIHNvbWUgb3B0aW9ucy4KIAogT2J0YWluaW5nIFByb2plY3QgUHJvcGVydGllcwotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCiAuLiBjb21tYW5kOjogRXh0ZXJuYWxQcm9qZWN0X0dldF9Qcm9wZXJ0eQogCkBAIC02ODYsNyArNjg5LDcgQEAKICAgICBtZXNzYWdlKCJTb3VyY2UgZGlyIG9mIG15RXh0UHJvaiA9ICR7U09VUkNFX0RJUn0iKQogCiBFeHBsaWNpdCBTdGVwIE1hbmFnZW1lbnQKLV5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCiAKIFRoZSBgYEV4dGVybmFsUHJvamVjdF9BZGQoKWBgIGZ1bmN0aW9uIG9uIGl0cyBvd24gaXMgb2Z0ZW4gc3VmZmljaWVudCBmb3IKIGluY29ycG9yYXRpbmcgYW4gZXh0ZXJuYWwgcHJvamVjdCBpbnRvIHRoZSBtYWluIGJ1aWxkLiBDZXJ0YWluIHNjZW5hcmlvcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9GZXRjaENvbnRlbnQuY21ha2UgYi9Nb2R1bGVzL0ZldGNoQ29udGVudC5jbWFrZQppbmRleCBmM2UxYjUxLi4wZTk4ZjQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL0ZldGNoQ29udGVudC5jbWFrZQorKysgYi9Nb2R1bGVzL0ZldGNoQ29udGVudC5jbWFrZQpAQCAtNzYsOCArNzYsMTEgQEAKIHBvcHVsYXRlIHNvbWUgY29udGVudCBpbiBDTWFrZSdzIHNjcmlwdCBtb2RlLgogCiAKK0NvbW1hbmRzCiteXl5eXl5eXgorCiBEZWNsYXJpbmcgQ29udGVudCBEZXRhaWxzCi1eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCiAKIC4uIGNvbW1hbmQ6OiBGZXRjaENvbnRlbnRfRGVjbGFyZQogCkBAIC0xMzAsNyArMTMzLDcgQEAKICAgICApCiAKIFBvcHVsYXRpbmcgVGhlIENvbnRlbnQKLV5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKIAogRm9yIG1vc3QgY29tbW9uIHNjZW5hcmlvcywgcG9wdWxhdGlvbiBtZWFucyBtYWtpbmcgY29udGVudCBhdmFpbGFibGUgdG8gdGhlCiBtYWluIGJ1aWxkIGFjY29yZGluZyB0byBwcmV2aW91c2x5IGRlY2xhcmVkIGRldGFpbHMgZm9yIHRoYXQgZGVwZW5kZW5jeS4KZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZEFybWFkaWxsby5jbWFrZSBiL01vZHVsZXMvRmluZEFybWFkaWxsby5jbWFrZQppbmRleCBjNGU1NWNlLi4yNDNiOWUwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL0ZpbmRBcm1hZGlsbG8uY21ha2UKKysrIGIvTW9kdWxlcy9GaW5kQXJtYWRpbGxvLmNtYWtlCkBAIC02LDcgKzYsNyBAQAogLS0tLS0tLS0tLS0tLQogCiBGaW5kIHRoZSBBcm1hZGlsbG8gQysrIGxpYnJhcnkuCi1Bcm1hZGlsbG8gaXMgbGlicmFyeSBmb3IgbGluZWFyIGFsZ2VicmEgJiBzY2llbnRpZmljIGNvbXB1dGluZy4KK0FybWFkaWxsbyBpcyBhIGxpYnJhcnkgZm9yIGxpbmVhciBhbGdlYnJhICYgc2NpZW50aWZpYyBjb21wdXRpbmcuCiAKIFVzaW5nIEFybWFkaWxsbzoKIApAQCAtMzEsMTkgKzMxLDEzIEBACiAgIEFSTUFESUxMT19WRVJTSU9OX05BTUUgLSBuYW1lIG9mIHRoZSB2ZXJzaW9uIChleDogIkFudGlwb2RlYW4gQW50aWxlZWNoIikKICNdPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1dCiAKLSMgVU5JWCBwYXRocyBhcmUgc3RhbmRhcmQsIG5vIG5lZWQgdG8gd3JpdGUuCi1maW5kX2xpYnJhcnkoQVJNQURJTExPX0xJQlJBUlkKLSAgTkFNRVMgYXJtYWRpbGxvCi0gIFBBVEhTICIkRU5We1Byb2dyYW1GaWxlc30vQXJtYWRpbGxvL2xpYiIgICIkRU5We1Byb2dyYW1GaWxlc30vQXJtYWRpbGxvL2xpYjY0IiAiJEVOVntQcm9ncmFtRmlsZXN9L0FybWFkaWxsbyIKLSAgKQogZmluZF9wYXRoKEFSTUFESUxMT19JTkNMVURFX0RJUgogICBOQU1FUyBhcm1hZGlsbG8KICAgUEFUSFMgIiRFTlZ7UHJvZ3JhbUZpbGVzfS9Bcm1hZGlsbG8vaW5jbHVkZSIKICAgKQotCittYXJrX2FzX2FkdmFuY2VkKEFSTUFESUxMT19JTkNMVURFX0RJUikKIAogaWYoQVJNQURJTExPX0lOQ0xVREVfRElSKQotCiAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICMgIEV4dHJhY3QgdmVyc2lvbiBpbmZvcm1hdGlvbiBmcm9tIDxhcm1hZGlsbG8+CiAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01OSwzMiArNTMsNzkgQEAKICAgaWYoRVhJU1RTICIke0FSTUFESUxMT19JTkNMVURFX0RJUn0vYXJtYWRpbGxvX2JpdHMvYXJtYV92ZXJzaW9uLmhwcCIpCiAKICAgICAjIFJlYWQgYW5kIHBhcnNlIGFybWRpbGxvIHZlcnNpb24gaGVhZGVyIGZpbGUgZm9yIHZlcnNpb24gbnVtYmVyCi0gICAgZmlsZShTVFJJTkdTICIke0FSTUFESUxMT19JTkNMVURFX0RJUn0vYXJtYWRpbGxvX2JpdHMvYXJtYV92ZXJzaW9uLmhwcCIgX2FybWFkaWxsb19IRUFERVJfQ09OVEVOVFMgUkVHRVggIiNkZWZpbmUgQVJNQV9WRVJTSU9OX1tBLVpdKyAiKQotICAgIHN0cmluZyhSRUdFWCBSRVBMQUNFICIuKiNkZWZpbmUgQVJNQV9WRVJTSU9OX01BSk9SIChbMC05XSspLioiICJcXDEiIEFSTUFESUxMT19WRVJTSU9OX01BSk9SICIke19hcm1hZGlsbG9fSEVBREVSX0NPTlRFTlRTfSIpCi0gICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIi4qI2RlZmluZSBBUk1BX1ZFUlNJT05fTUlOT1IgKFswLTldKykuKiIgIlxcMSIgQVJNQURJTExPX1ZFUlNJT05fTUlOT1IgIiR7X2FybWFkaWxsb19IRUFERVJfQ09OVEVOVFN9IikKLSAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiLiojZGVmaW5lIEFSTUFfVkVSU0lPTl9QQVRDSCAoWzAtOV0rKS4qIiAiXFwxIiBBUk1BRElMTE9fVkVSU0lPTl9QQVRDSCAiJHtfYXJtYWRpbGxvX0hFQURFUl9DT05URU5UU30iKQorICAgIGZpbGUoU1RSSU5HUyAiJHtBUk1BRElMTE9fSU5DTFVERV9ESVJ9L2FybWFkaWxsb19iaXRzL2FybWFfdmVyc2lvbi5ocHAiIF9BUk1BX0hFQURFUl9DT05URU5UUyBSRUdFWCAiI2RlZmluZSBBUk1BX1ZFUlNJT05fW0EtWl0rICIpCisgICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIi4qI2RlZmluZSBBUk1BX1ZFUlNJT05fTUFKT1IgKFswLTldKykuKiIgIlxcMSIgQVJNQURJTExPX1ZFUlNJT05fTUFKT1IgIiR7X0FSTUFfSEVBREVSX0NPTlRFTlRTfSIpCisgICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIi4qI2RlZmluZSBBUk1BX1ZFUlNJT05fTUlOT1IgKFswLTldKykuKiIgIlxcMSIgQVJNQURJTExPX1ZFUlNJT05fTUlOT1IgIiR7X0FSTUFfSEVBREVSX0NPTlRFTlRTfSIpCisgICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIi4qI2RlZmluZSBBUk1BX1ZFUlNJT05fUEFUQ0ggKFswLTldKykuKiIgIlxcMSIgQVJNQURJTExPX1ZFUlNJT05fUEFUQ0ggIiR7X0FSTUFfSEVBREVSX0NPTlRFTlRTfSIpCiAKICAgICAjIFdBUk5JTkc6IFRoZSBudW1iZXIgb2Ygc3BhY2VzIGJlZm9yZSB0aGUgdmVyc2lvbiBuYW1lIGlzIG5vdCBvbmUuCi0gICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIi4qI2RlZmluZSBBUk1BX1ZFUlNJT05fTkFNRSArXCIoWzAtOWEtekEtWiBfLV0rKVwiLioiICJcXDEiIEFSTUFESUxMT19WRVJTSU9OX05BTUUgIiR7X2FybWFkaWxsb19IRUFERVJfQ09OVEVOVFN9IikKKyAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiLiojZGVmaW5lIEFSTUFfVkVSU0lPTl9OQU1FXCArXCIoWzAtOWEtekEtWlwgXy1dKylcIi4qIiAiXFwxIiBBUk1BRElMTE9fVkVSU0lPTl9OQU1FICIke19BUk1BX0hFQURFUl9DT05URU5UU30iKQogCi0gICAgdW5zZXQoX2FybWFkaWxsb19IRUFERVJfQ09OVEVOVFMpCiAgIGVuZGlmKCkKIAogICBzZXQoQVJNQURJTExPX1ZFUlNJT05fU1RSSU5HICIke0FSTUFESUxMT19WRVJTSU9OX01BSk9SfS4ke0FSTUFESUxMT19WRVJTSU9OX01JTk9SfS4ke0FSTUFESUxMT19WRVJTSU9OX1BBVENIfSIpCiBlbmRpZiAoKQogCitpZihFWElTVFMgIiR7QVJNQURJTExPX0lOQ0xVREVfRElSfS9hcm1hZGlsbG9fYml0cy9jb25maWcuaHBwIikKKyAgZmlsZShTVFJJTkdTICIke0FSTUFESUxMT19JTkNMVURFX0RJUn0vYXJtYWRpbGxvX2JpdHMvY29uZmlnLmhwcCIgX0FSTUFfQ09ORklHX0NPTlRFTlRTIFJFR0VYICJeI2RlZmluZSBBUk1BX1VTRV9bQS1aXSsiKQorICBzdHJpbmcoUkVHRVggTUFUQ0ggIkFSTUFfVVNFX1dSQVBQRVIiIF9BUk1BX1VTRV9XUkFQUEVSICIke19BUk1BX0NPTkZJR19DT05URU5UU30iKQorICBzdHJpbmcoUkVHRVggTUFUQ0ggIkFSTUFfVVNFX0xBUEFDSyIgX0FSTUFfVVNFX0xBUEFDSyAiJHtfQVJNQV9DT05GSUdfQ09OVEVOVFN9IikKKyAgc3RyaW5nKFJFR0VYIE1BVENIICJBUk1BX1VTRV9CTEFTIiBfQVJNQV9VU0VfQkxBUyAiJHtfQVJNQV9DT05GSUdfQ09OVEVOVFN9IikKKyAgc3RyaW5nKFJFR0VYIE1BVENIICJBUk1BX1VTRV9BUlBBQ0siIF9BUk1BX1VTRV9BUlBBQ0sgIiR7X0FSTUFfQ09ORklHX0NPTlRFTlRTfSIpCisgIHN0cmluZyhSRUdFWCBNQVRDSCAiQVJNQV9VU0VfSERGNSIgX0FSTUFfVVNFX0hERjUgIiR7X0FSTUFfQ09ORklHX0NPTlRFTlRTfSIpCitlbmRpZigpCisKIGluY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9GaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncy5jbWFrZSkKKworIyBJZiBfQVJNQV9VU0VfV1JBUFBFUiBpcyBzZXQsIHRoZW4gd2UganVzdCBsaW5rIHRvIGFybWFkaWxsbywgYnV0IGlmIGl0J3Mgbm90IHRoZW4gd2UgbmVlZCBzdXBwb3J0IGxpYnJhcmllcyBpbnN0ZWFkCitzZXQoX0FSTUFfU1VQUE9SVF9MSUJSQVJJRVMpCisKK2lmKF9BUk1BX1VTRV9XUkFQUEVSKQorICAjIExpbmsgdG8gdGhlIGFybWFkaWxsbyB3cmFwcGVyIGxpYnJhcnkuCisgIGZpbmRfbGlicmFyeShBUk1BRElMTE9fTElCUkFSWQorICAgIE5BTUVTIGFybWFkaWxsbworICAgIFBBVEhTCisgICAgICAiJEVOVntQcm9ncmFtRmlsZXN9L0FybWFkaWxsby9saWIiCisgICAgICAiJEVOVntQcm9ncmFtRmlsZXN9L0FybWFkaWxsby9saWI2NCIKKyAgICAgICIkRU5We1Byb2dyYW1GaWxlc30vQXJtYWRpbGxvIgorICAgICkKKyAgbWFya19hc19hZHZhbmNlZChBUk1BRElMTE9fTElCUkFSWSkKKyAgc2V0KF9BUk1BX1JFUVVJUkVEX1ZBUlMgQVJNQURJTExPX0xJQlJBUlkpCitlbHNlKCkKKyAgIyBMaW5rIGRpcmVjdGx5IHRvIGluZGl2aWR1YWwgY29tcG9uZW50cy4KKyAgc2V0KEFSTUFESUxMT19MSUJSQVJZICIiKQorICBmb3JlYWNoKHBrZworICAgICAgTEFQQUNLCisgICAgICBCTEFTCisgICAgICBBUlBBQ0sKKyAgICAgIEhERjUKKyAgICAgICkKKyAgICBpZihfQVJNQV9VU0VfJHtwa2d9KQorICAgICAgZmluZF9wYWNrYWdlKCR7cGtnfSBRVUlFVCkKKyAgICAgIGxpc3QoQVBQRU5EIF9BUk1BX1JFUVVJUkVEX1ZBUlMgIiR7cGtnfV9GT1VORCIpCisgICAgICBpZigke3BrZ31fRk9VTkQpCisgICAgICAgIGxpc3QoQVBQRU5EIF9BUk1BX1NVUFBPUlRfTElCUkFSSUVTICR7JHtwa2d9X0xJQlJBUklFU30pCisgICAgICBlbmRpZigpCisgICAgZW5kaWYoKQorICBlbmRmb3JlYWNoKCkKK2VuZGlmKCkKKwogZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdzKEFybWFkaWxsbwotICBSRVFVSVJFRF9WQVJTIEFSTUFESUxMT19MSUJSQVJZIEFSTUFESUxMT19JTkNMVURFX0RJUgorICBSRVFVSVJFRF9WQVJTIEFSTUFESUxMT19JTkNMVURFX0RJUiAke19BUk1BX1JFUVVJUkVEX1ZBUlN9CiAgIFZFUlNJT05fVkFSIEFSTUFESUxMT19WRVJTSU9OX1NUUklORykKLSMgdmVyc2lvbl92YXIgZmFpbHMgd2l0aCBjbWFrZSA8IDIuOC40LgogCiBpZiAoQVJNQURJTExPX0ZPVU5EKQogICBzZXQoQVJNQURJTExPX0lOQ0xVREVfRElSUyAke0FSTUFESUxMT19JTkNMVURFX0RJUn0pCi0gIHNldChBUk1BRElMTE9fTElCUkFSSUVTICR7QVJNQURJTExPX0xJQlJBUll9KQorICBzZXQoQVJNQURJTExPX0xJQlJBUklFUyAke0FSTUFESUxMT19MSUJSQVJZfSAke19BUk1BX1NVUFBPUlRfTElCUkFSSUVTfSkKIGVuZGlmICgpCiAKLSMgSGlkZSBpbnRlcm5hbCB2YXJpYWJsZXMKLW1hcmtfYXNfYWR2YW5jZWQoCi0gIEFSTUFESUxMT19JTkNMVURFX0RJUgotICBBUk1BRElMTE9fTElCUkFSWSkKKyMgQ2xlYW4gdXAgaW50ZXJuYWwgdmFyaWFibGVzCit1bnNldChfQVJNQV9SRVFVSVJFRF9WQVJTKQordW5zZXQoX0FSTUFfU1VQUE9SVF9MSUJSQVJJRVMpCit1bnNldChfQVJNQV9VU0VfV1JBUFBFUikKK3Vuc2V0KF9BUk1BX1VTRV9MQVBBQ0spCit1bnNldChfQVJNQV9VU0VfQkxBUykKK3Vuc2V0KF9BUk1BX1VTRV9BUlBBQ0spCit1bnNldChfQVJNQV9VU0VfSERGNSkKK3Vuc2V0KF9BUk1BX0NPTkZJR19DT05URU5UUykKK3Vuc2V0KF9BUk1BX0hFQURFUl9DT05URU5UUykKZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlIGIvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKaW5kZXggM2M1MjQ2Ni4uMzhkM2JmYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKKysrIGIvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKQEAgLTE2NDYsMTAgKzE2NDYsMTUgQEAKICMgIFByZWZpeCBpbml0aWFsaXphdGlvbgogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc2V0KEJvb3N0X0xJQl9QUkVGSVggIiIpCi1pZiAoIChHSFNNVUxUSSBBTkQgQm9vc3RfVVNFX1NUQVRJQ19MSUJTKSBPUgotICAgIChXSU4zMiBBTkQgQm9vc3RfVVNFX1NUQVRJQ19MSUJTIEFORCBOT1QgQ1lHV0lOKSApCisjIEJvb3N0J3Mgc3RhdGljIGxpYnJhcmllcyB1c2UgYSAibGliIiBwcmVmaXggb24gRExMIHBsYXRmb3JtcworIyB0byBkaXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlIERMTCBpbXBvcnQgbGlicmFyaWVzLgoraWYgKEJvb3N0X1VTRV9TVEFUSUNfTElCUyBBTkQgKAorICAgIChXSU4zMiBBTkQgTk9UIENZR1dJTikKKyAgICBPUiBHSFNNVUxUSQorICAgICkpCiAgIHNldChCb29zdF9MSUJfUFJFRklYICJsaWIiKQorZWxzZSgpCisgIHNldChCb29zdF9MSUJfUFJFRklYICIiKQogZW5kaWYoKQogCiBpZiAoIE5PVCBCb29zdF9OQU1FU1BBQ0UgKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kSERGNS5jbWFrZSBiL01vZHVsZXMvRmluZEhERjUuY21ha2UKaW5kZXggYjQ4ODQxOC4uYzE4ODhhNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9GaW5kSERGNS5jbWFrZQorKysgYi9Nb2R1bGVzL0ZpbmRIREY1LmNtYWtlCkBAIC0xOSw5ICsxOSwxMiBAQAogYGBDT01QT05FTlRTYGAgYXJlIHNwZWNpZmllZCwgdGhlbiB0aGUgZmluZCBtb2R1bGUgd2lsbCBkZWZhdWx0IHRvIGZpbmRpbmcKIG9ubHkgdGhlIGBgSERGNWBgIEMgbGlicmFyeS4gIElmIG9uZSBvciBtb3JlIGBgQ09NUE9ORU5UU2BgIGFyZSBzcGVjaWZpZWQsIHRoZQogbW9kdWxlIHdpbGwgYXR0ZW1wdCB0byBmaW5kIHRoZSBsYW5ndWFnZSBiaW5kaW5ncyBmb3IgdGhlIHNwZWNpZmllZAotY29tcG9uZW50cy4gIFRoZSBvbmx5IHZhbGlkIGNvbXBvbmVudHMgYXJlIGBgQ2BgLCBgYENYWGBgLCBgYEZvcnRyYW5gYCwgYGBITGBgLAotYW5kIGBgRm9ydHJhbl9ITGBgLiAgSWYgdGhlIGBgQ09NUE9ORU5UU2BgIGFyZ3VtZW50IGlzIG5vdCBnaXZlbiwgdGhlIG1vZHVsZSB3aWxsCitjb21wb25lbnRzLiAgVGhlIHZhbGlkIGNvbXBvbmVudHMgYXJlIGBgQ2BgLCBgYENYWGBgLCBgYEZvcnRyYW5gYCwgYGBITGBgLgorYGBITGBgIHJlZmVycyB0byB0aGUgImhpZ2gtbGV2ZWwiIEhERjUgZnVuY3Rpb25zIGZvciBDIGFuZCBGb3J0cmFuLgorSWYgdGhlIGBgQ09NUE9ORU5UU2BgIGFyZ3VtZW50IGlzIG5vdCBnaXZlbiwgdGhlIG1vZHVsZSB3aWxsCiBhdHRlbXB0IHRvIGZpbmQgb25seSB0aGUgQyBiaW5kaW5ncy4KK0ZvciBleGFtcGxlLCB0byB1c2UgRm9ydHJhbiBIREY1IGFuZCBIREY1LUhMIGZ1bmN0aW9ucywgZG86CitgYGZpbmRfcGFja2FnZShIREY1IENPTVBPTkVOVFMgRm9ydHJhbiBITClgYC4KIAogVGhpcyBtb2R1bGUgd2lsbCByZWFkIHRoZSB2YXJpYWJsZQogYGBIREY1X1VTRV9TVEFUSUNfTElCUkFSSUVTYGAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvIHByZWZlciBhCkBAIC0yOSwxMSArMzIsNiBAQAogVG8gdXNlIHRoaXMgZmVhdHVyZSwgbWFrZSBzdXJlIHRoYXQgdGhlIGBgSERGNV9VU0VfU1RBVElDX0xJQlJBUklFU2BgCiB2YXJpYWJsZSBpcyBzZXQgYmVmb3JlIHRoZSBjYWxsIHRvIGZpbmRfcGFja2FnZS4KIAotVG8gcHJvdmlkZSB0aGUgbW9kdWxlIHdpdGggYSBoaW50IGFib3V0IHdoZXJlIHRvIGZpbmQgeW91ciBgYEhERjVgYAotaW5zdGFsbGF0aW9uLCB5b3UgY2FuIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYGBIREY1X1JPT1RgYC4gIFRoZQotRmluZCBtb2R1bGUgd2lsbCB0aGVuIGxvb2sgaW4gdGhpcyBwYXRoIHdoZW4gc2VhcmNoaW5nIGZvciBgYEhERjVgYAotZXhlY3V0YWJsZXMsIHBhdGhzLCBhbmQgbGlicmFyaWVzLgotCiBCb3RoIHRoZSBzZXJpYWwgYW5kIHBhcmFsbGVsIGBgSERGNWBgIHdyYXBwZXJzIGFyZSBjb25zaWRlcmVkIGFuZCB0aGUgZmlyc3QKIGRpcmVjdG9yeSB0byBjb250YWluIGVpdGhlciBvbmUgd2lsbCBiZSB1c2VkLiAgSW4gdGhlIGV2ZW50IHRoYXQgYm90aCBhcHBlYXIKIGluIHRoZSBzYW1lIGRpcmVjdG9yeSB0aGUgc2VyaWFsIHZlcnNpb24gaXMgcHJlZmVyZW50aWFsbHkgc2VsZWN0ZWQuIFRoaXMKQEAgLTExNSwxMCArMTEzLDEwIEBACiBIaW50cwogXl5eXl4KIAotVGhlIGZvbGxvd2luZyB2YXJpYWJsZSBjYW4gYmUgc2V0IHRvIGd1aWRlIHRoZSBzZWFyY2ggZm9yIEhERjUgbGlicmFyaWVzIGFuZCBpbmNsdWRlczoKK1RoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGNhbiBiZSBzZXQgdG8gZ3VpZGUgdGhlIHNlYXJjaCBmb3IgSERGNSBsaWJyYXJpZXMgYW5kIGluY2x1ZGVzOgogCi1gYEhERjVfUk9PVGBgCi0gIFNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIEhERjUgaW5zdGFsbGF0aW9uIHRvIHVzZS4KK2BgSERGNV9QUkVGRVJfUEFSQUxMRUxgYAorICBzZXQgYGB0cnVlYGAgdG8gcHJlZmVyIHBhcmFsbGVsIEhERjUgKGJ5IGRlZmF1bHQsIHNlcmlhbCBpcyBwcmVmZXJyZWQpCiAKIGBgSERGNV9GSU5EX0RFQlVHYGAKICAgU2V0IGBgdHJ1ZWBgIHRvIGdldCBleHRyYSBkZWJ1Z2dpbmcgb3V0cHV0LgpAQCAtMzQzLDM1ICszNDEsNDYgQEAKICAgICBlbHNlaWYoIiR7bGFuZ3VhZ2V9IiBTVFJFUVVBTCAiRm9ydHJhbiIpCiAgICAgICAgIHNldCh0ZXN0X2ZpbGUgJHtzY3JhdGNoX2Rpcn0vY21ha2VfaGRmNV90ZXN0LmY5MCkKICAgICBlbmRpZigpCisgICAgIyBWZXJpZnkgdGhhdCB0aGUgY29tcGlsZXIgd3JhcHBlciBjYW4gYWN0dWFsbHkgY29tcGlsZTogc29tZXRpbWVzIHRoZSBjb21waWxlcgorICAgICMgd3JhcHBlciBleGlzdHMsIGJ1dCBub3QgdGhlIGNvbXBpbGVyLiAgRS5nLiBNaW5pY29uZGEgLyBBbmFjb25kYSBQeXRob24KICAgICBleGVjdXRlX3Byb2Nlc3MoCi0gICAgICBDT01NQU5EICR7SERGNV8ke2xhbmd1YWdlfV9DT01QSUxFUl9FWEVDVVRBQkxFfSAtc2hvdyAke2xpYl90eXBlX2FyZ3N9ICR7dGVzdF9maWxlfQotICAgICAgT1VUUFVUX1ZBUklBQkxFICR7b3V0cHV0fQotICAgICAgRVJST1JfVkFSSUFCTEUgJHtvdXRwdXR9CisgICAgICBDT01NQU5EICR7SERGNV8ke2xhbmd1YWdlfV9DT01QSUxFUl9FWEVDVVRBQkxFfSAke3Rlc3RfZmlsZX0KICAgICAgIFJFU1VMVF9WQVJJQUJMRSAke3JldHVybl92YWx1ZX0KICAgICAgICkKICAgICBpZihOT1QgJHske3JldHVybl92YWx1ZX19IEVRVUFMIDApCi0gICAgICAgIG1lc3NhZ2UoU1RBVFVTCi0gICAgICAgICAgIlVuYWJsZSB0byBkZXRlcm1pbmUgSERGNSAke2xhbmd1YWdlfSBmbGFncyBmcm9tIEhERjUgd3JhcHBlci4iKQotICAgIGVuZGlmKCkKLSAgICBleGVjdXRlX3Byb2Nlc3MoCi0gICAgICBDT01NQU5EICR7SERGNV8ke2xhbmd1YWdlfV9DT01QSUxFUl9FWEVDVVRBQkxFfSAtc2hvd2NvbmZpZwotICAgICAgT1VUUFVUX1ZBUklBQkxFIGNvbmZpZ19vdXRwdXQKLSAgICAgIEVSUk9SX1ZBUklBQkxFIGNvbmZpZ19vdXRwdXQKLSAgICAgIFJFU1VMVF9WQVJJQUJMRSBjb25maWdfcmV0dXJuCi0gICAgICApCi0gICAgaWYoTk9UICR7cmV0dXJuX3ZhbHVlfSBFUVVBTCAwKQotICAgICAgICBtZXNzYWdlKCBTVEFUVVMKLSAgICAgICAgICAiVW5hYmxlIHRvIGRldGVybWluZSBIREY1ICR7bGFuZ3VhZ2V9IHZlcnNpb24gZnJvbSBIREY1IHdyYXBwZXIuIikKLSAgICBlbmRpZigpCi0gICAgc3RyaW5nKFJFR0VYIE1BVENIICJIREY1IFZlcnNpb246IChbYS16QS1aMC05XFwuXFwtXSopIiB2ZXJzaW9uX21hdGNoICIke2NvbmZpZ19vdXRwdXR9IikKLSAgICBpZih2ZXJzaW9uX21hdGNoKQotICAgICAgICBzdHJpbmcoUkVQTEFDRSAiSERGNSBWZXJzaW9uOiAiICIiICR7dmVyc2lvbn0gIiR7dmVyc2lvbl9tYXRjaH0iKQotICAgICAgICBzdHJpbmcoUkVQTEFDRSAiLXBhdGNoIiAiLiIgJHt2ZXJzaW9ufSAiJHske3ZlcnNpb259fSIpCi0gICAgZW5kaWYoKQotICAgIGlmKGNvbmZpZ19vdXRwdXQgTUFUQ0hFUyAiUGFyYWxsZWwgSERGNTogeWVzIikKLSAgICAgIHNldCgke2lzX3BhcmFsbGVsfSBUUlVFKQorICAgICAgbWVzc2FnZShTVEFUVVMKKyAgICAgICAgIkhERjUgJHtsYW5ndWFnZX0gY29tcGlsZXIgd3JhcHBlciBpcyB1bmFibGUgdG8gY29tcGlsZSBhIG1pbmltYWwgSERGNSBwcm9ncmFtLiIpCiAgICAgZWxzZSgpCi0gICAgICBzZXQoJHtpc19wYXJhbGxlbH0gRkFMU0UpCisgICAgICBleGVjdXRlX3Byb2Nlc3MoCisgICAgICAgIENPTU1BTkQgJHtIREY1XyR7bGFuZ3VhZ2V9X0NPTVBJTEVSX0VYRUNVVEFCTEV9IC1zaG93ICR7bGliX3R5cGVfYXJnc30gJHt0ZXN0X2ZpbGV9CisgICAgICAgIE9VVFBVVF9WQVJJQUJMRSAke291dHB1dH0KKyAgICAgICAgRVJST1JfVkFSSUFCTEUgJHtvdXRwdXR9CisgICAgICAgIFJFU1VMVF9WQVJJQUJMRSAke3JldHVybl92YWx1ZX0KKyAgICAgICAgKQorICAgICAgaWYoTk9UICR7JHtyZXR1cm5fdmFsdWV9fSBFUVVBTCAwKQorICAgICAgICAgIG1lc3NhZ2UoU1RBVFVTCisgICAgICAgICAgICAiVW5hYmxlIHRvIGRldGVybWluZSBIREY1ICR7bGFuZ3VhZ2V9IGZsYWdzIGZyb20gSERGNSB3cmFwcGVyLiIpCisgICAgICBlbmRpZigpCisgICAgICBleGVjdXRlX3Byb2Nlc3MoCisgICAgICAgIENPTU1BTkQgJHtIREY1XyR7bGFuZ3VhZ2V9X0NPTVBJTEVSX0VYRUNVVEFCTEV9IC1zaG93Y29uZmlnCisgICAgICAgIE9VVFBVVF9WQVJJQUJMRSBjb25maWdfb3V0cHV0CisgICAgICAgIEVSUk9SX1ZBUklBQkxFIGNvbmZpZ19vdXRwdXQKKyAgICAgICAgUkVTVUxUX1ZBUklBQkxFIGNvbmZpZ19yZXR1cm4KKyAgICAgICAgKQorICAgICAgaWYoTk9UICR7cmV0dXJuX3ZhbHVlfSBFUVVBTCAwKQorICAgICAgICAgIG1lc3NhZ2UoIFNUQVRVUworICAgICAgICAgICAgIlVuYWJsZSB0byBkZXRlcm1pbmUgSERGNSAke2xhbmd1YWdlfSB2ZXJzaW9uIGZyb20gSERGNSB3cmFwcGVyLiIpCisgICAgICBlbmRpZigpCisgICAgICBzdHJpbmcoUkVHRVggTUFUQ0ggIkhERjUgVmVyc2lvbjogKFthLXpBLVowLTlcXC5cXC1dKikiIHZlcnNpb25fbWF0Y2ggIiR7Y29uZmlnX291dHB1dH0iKQorICAgICAgaWYodmVyc2lvbl9tYXRjaCkKKyAgICAgICAgICBzdHJpbmcoUkVQTEFDRSAiSERGNSBWZXJzaW9uOiAiICIiICR7dmVyc2lvbn0gIiR7dmVyc2lvbl9tYXRjaH0iKQorICAgICAgICAgIHN0cmluZyhSRVBMQUNFICItcGF0Y2giICIuIiAke3ZlcnNpb259ICIkeyR7dmVyc2lvbn19IikKKyAgICAgIGVuZGlmKCkKKyAgICAgIGlmKGNvbmZpZ19vdXRwdXQgTUFUQ0hFUyAiUGFyYWxsZWwgSERGNTogeWVzIikKKyAgICAgICAgc2V0KCR7aXNfcGFyYWxsZWx9IFRSVUUpCisgICAgICBlbHNlKCkKKyAgICAgICAgc2V0KCR7aXNfcGFyYWxsZWx9IEZBTFNFKQorICAgICAgZW5kaWYoKQogICAgIGVuZGlmKCkKIGVuZG1hY3JvKCkKIApAQCAtNzY5LDYgKzc3OCwxNyBAQAogICAgIHNldChIREY1X0ZvcnRyYW5fTElCUkFSWV9OQU1FUyAgICBoZGY1X2ZvcnRyYW4gICAke0hERjVfQ19MSUJSQVJZX05BTUVTfSkKICAgICBzZXQoSERGNV9Gb3J0cmFuX0hMX0xJQlJBUllfTkFNRVMgaGRmNWhsX2ZvcnRyYW4gJHtIREY1X0NfSExfTElCUkFSWV9OQU1FU30gJHtIREY1X0ZvcnRyYW5fTElCUkFSWV9OQU1FU30pCiAKKyAgICAjIHN1ZmZpeGVzIGFzIHNlZW4gb24gTGludXgsIE1TWVMyLCAuLi4KKyAgICBzZXQoX2xpYl9zdWZmaXhlcyBoZGY1KQorICAgIGlmKE5PVCBIREY1X1BSRUZFUl9QQVJBTExFTCkKKyAgICAgIGxpc3QoQVBQRU5EIF9saWJfc3VmZml4ZXMgaGRmNS9zZXJpYWwpCisgICAgZW5kaWYoKQorICAgIGlmKEhERjVfVVNFX1NUQVRJQ19MSUJSQVJJRVMpCisgICAgICBzZXQoX2luY19zdWZmaXhlcyBpbmNsdWRlL3N0YXRpYykKKyAgICBlbHNlKCkKKyAgICAgIHNldChfaW5jX3N1ZmZpeGVzIGluY2x1ZGUvc2hhcmVkKQorICAgIGVuZGlmKCkKKwogICAgIGZvcmVhY2goX19sYW5nIElOIExJU1RTIEhERjVfTEFOR1VBR0VfQklORElOR1MpCiAgICAgICAgICMgZmluZCB0aGUgSERGNSBpbmNsdWRlIGRpcmVjdG9yaWVzCiAgICAgICAgIGlmKCIke19fbGFuZ30iIFNUUkVRVUFMICJGb3J0cmFuIikKQEAgLTc4Miw3ICs4MDIsNyBAQAogICAgICAgICBmaW5kX3BhdGgoSERGNV8ke19fbGFuZ31fSU5DTFVERV9ESVIgJHtIREY1X0lOQ0xVREVfRklMRU5BTUV9CiAgICAgICAgICAgICBISU5UUyAke0hERjVfUk9PVH0KICAgICAgICAgICAgIFBBVEhTICRFTlZ7SE9NRX0vLmxvY2FsL2luY2x1ZGUKLSAgICAgICAgICAgIFBBVEhfU1VGRklYRVMgaW5jbHVkZSBJbmNsdWRlCisgICAgICAgICAgICBQQVRIX1NVRkZJWEVTIGluY2x1ZGUgSW5jbHVkZSAke19pbmNfc3VmZml4ZXN9ICR7X2xpYl9zdWZmaXhlc30KICAgICAgICAgICAgICR7X0hERjVfU0VBUkNIX09QVFN9CiAgICAgICAgICkKICAgICAgICAgbWFya19hc19hZHZhbmNlZChIREY1XyR7X19sYW5nfV9JTkNMVURFX0RJUikKQEAgLTgxMSwxNCArODMxLDE1IEBACiAgICAgICAgICAgICBlbmRpZigpCiAgICAgICAgICAgICBmaW5kX2xpYnJhcnkoSERGNV8ke0xJQn1fTElCUkFSWV9ERUJVRwogICAgICAgICAgICAgICAgIE5BTUVTICR7VEhJU19MSUJSQVJZX1NFQVJDSF9ERUJVR30KLSAgICAgICAgICAgICAgICBISU5UUyAke0hERjVfUk9PVH0gUEFUSF9TVUZGSVhFUyBsaWIgTGliCisgICAgICAgICAgICAgICAgSElOVFMgJHtIREY1X1JPT1R9IFBBVEhfU1VGRklYRVMgbGliIExpYiAke19saWJfc3VmZml4ZXN9CiAgICAgICAgICAgICAgICAgJHtfSERGNV9TRUFSQ0hfT1BUU30KICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGZpbmRfbGlicmFyeSggSERGNV8ke0xJQn1fTElCUkFSWV9SRUxFQVNFCisgICAgICAgICAgICBmaW5kX2xpYnJhcnkoSERGNV8ke0xJQn1fTElCUkFSWV9SRUxFQVNFCiAgICAgICAgICAgICAgICAgTkFNRVMgJHtUSElTX0xJQlJBUllfU0VBUkNIX1JFTEVBU0V9Ci0gICAgICAgICAgICAgICAgSElOVFMgJHtIREY1X1JPT1R9IFBBVEhfU1VGRklYRVMgbGliIExpYgorICAgICAgICAgICAgICAgIEhJTlRTICR7SERGNV9ST09UfSBQQVRIX1NVRkZJWEVTIGxpYiBMaWIgJHtfbGliX3N1ZmZpeGVzfQogICAgICAgICAgICAgICAgICR7X0hERjVfU0VBUkNIX09QVFN9CiAgICAgICAgICAgICApCisKICAgICAgICAgICAgIHNlbGVjdF9saWJyYXJ5X2NvbmZpZ3VyYXRpb25zKCBIREY1XyR7TElCfSApCiAgICAgICAgICAgICBsaXN0KEFQUEVORCBIREY1XyR7X19sYW5nfV9MSUJSQVJJRVMgJHtIREY1XyR7TElCfV9MSUJSQVJZfSkKICAgICAgICAgZW5kZm9yZWFjaCgpCkBAIC04NDgsMTQgKzg2OSwxNSBAQAogICAgICAgICAgICAgICAgIGVuZGlmKCkKICAgICAgICAgICAgICAgICBmaW5kX2xpYnJhcnkoSERGNV8ke0xJQn1fTElCUkFSWV9ERUJVRwogICAgICAgICAgICAgICAgICAgICBOQU1FUyAke1RISVNfTElCUkFSWV9TRUFSQ0hfREVCVUd9Ci0gICAgICAgICAgICAgICAgICAgIEhJTlRTICR7SERGNV9ST09UfSBQQVRIX1NVRkZJWEVTIGxpYiBMaWIKKyAgICAgICAgICAgICAgICAgICAgSElOVFMgJHtIREY1X1JPT1R9IFBBVEhfU1VGRklYRVMgbGliIExpYiAke19saWJfc3VmZml4ZXN9CiAgICAgICAgICAgICAgICAgICAgICR7X0hERjVfU0VBUkNIX09QVFN9CiAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGZpbmRfbGlicmFyeSggSERGNV8ke0xJQn1fTElCUkFSWV9SRUxFQVNFCisgICAgICAgICAgICAgICAgZmluZF9saWJyYXJ5KEhERjVfJHtMSUJ9X0xJQlJBUllfUkVMRUFTRQogICAgICAgICAgICAgICAgICAgICBOQU1FUyAke1RISVNfTElCUkFSWV9TRUFSQ0hfUkVMRUFTRX0KLSAgICAgICAgICAgICAgICAgICAgSElOVFMgJHtIREY1X1JPT1R9IFBBVEhfU1VGRklYRVMgbGliIExpYgorICAgICAgICAgICAgICAgICAgICBISU5UUyAke0hERjVfUk9PVH0gUEFUSF9TVUZGSVhFUyBsaWIgTGliICR7X2xpYl9zdWZmaXhlc30KICAgICAgICAgICAgICAgICAgICAgJHtfSERGNV9TRUFSQ0hfT1BUU30KICAgICAgICAgICAgICAgICApCisKICAgICAgICAgICAgICAgICBzZWxlY3RfbGlicmFyeV9jb25maWd1cmF0aW9ucyggSERGNV8ke0xJQn0gKQogICAgICAgICAgICAgICAgIGxpc3QoQVBQRU5EIEhERjVfJHtfX2xhbmd9X0hMX0xJQlJBUklFUyAke0hERjVfJHtMSUJ9X0xJQlJBUll9KQogICAgICAgICAgICAgZW5kZm9yZWFjaCgpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRPcGVuQUwuY21ha2UgYi9Nb2R1bGVzL0ZpbmRPcGVuQUwuY21ha2UKaW5kZXggMjdkY2FmNS4uYzljMDkwMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9GaW5kT3BlbkFMLmNtYWtlCisrKyBiL01vZHVsZXMvRmluZE9wZW5BTC5jbWFrZQpAQCAtNSwyNyArNSw0NSBAQAogRmluZE9wZW5BTAogLS0tLS0tLS0tLQogCi0KIEZpbmRzIE9wZW4gQXVkaW8gTGlicmFyeSAoT3BlbkFMKS4KLVRoaXMgbW9kdWxlIGRlZmluZXMgYGBPUEVOQUxfTElCUkFSWSBPUEVOQUxfRk9VTkRgYCwgaWYKLWZhbHNlLCBkbyBub3QgdHJ5IHRvIGxpbmsgdG8gT3BlbkFMIGBgT1BFTkFMX0lOQ0xVREVfRElSYGAsIHdoZXJlIHRvIGZpbmQKLXRoZSBoZWFkZXJzLgogCi1gYCRPUEVOQUxESVJgYCBpcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IHdvdWxkIGNvcnJlc3BvbmQgdG8gdGhlCi1gYC4vY29uZmlndXJlIC0tcHJlZml4PSRPUEVOQUxESVJgYCB1c2VkIGluIGJ1aWxkaW5nIE9wZW5BTC4KK1Byb2plY3RzIHVzaW5nIHRoaXMgbW9kdWxlIHNob3VsZCB1c2UgYGAjaW5jbHVkZSA8YWwuaD5gYCB0byBpbmNsdWRlIHRoZSBPcGVuQUwKK2hlYWRlciBmaWxlLCAqKm5vdCoqIGBgI2luY2x1ZGUgPEFMLmFsLmg+YGAuICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgdGhlCitsYXR0ZXIgaXMgbm90IGVudGlyZWx5IHBvcnRhYmxlLiAgV2luZG93cy9DcmVhdGl2ZSBMYWJzIGRvZXMgbm90IGJ5IGRlZmF1bHQgcHV0Cit0aGVpciBoZWFkZXJzIGluIGBgQUwvYGAgYW5kIG1hY09TIHVzZXMgdGhlIGNvbnZlbnRpb24gYGA8T3BlbkFML2FsLmg+YGAuCiAKLUNyZWF0ZWQgYnkgRXJpYyBXaW5nLiAgVGhpcyB3YXMgaW5mbHVlbmNlZCBieSB0aGUgYGBGaW5kU0RMLmNtYWtlYGAKLW1vZHVsZS4KK0hpbnRzCiteXl5eXgorCitFbnZpcm9ubWVudCB2YXJpYWJsZSBgYCRPUEVOQUxESVJgYCBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIHByZWZpeCBvZiBPcGVuQUwKK2luc3RhbGxhdGlvbiB0byBiZSBmb3VuZC4KKworQnkgZGVmYXVsdCBvbiBtYWNPUywgc3lzdGVtIGZyYW1ld29yayBpcyBzZWFyY2ggZmlyc3QuICBJbiBvdGhlciB3b3JkcywKK09wZW5BTCBpcyBzZWFyY2hlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgorCisxLiBTeXN0ZW0gZnJhbWV3b3JrOiBgYC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzYGAsIHdob3NlIHByaW9yaXR5IGNhbiBiZQorICAgY2hhbmdlZCB2aWEgc2V0dGluZyB0aGUgOnZhcmlhYmxlOmBDTUFLRV9GSU5EX0ZSQU1FV09SS2AgdmFyaWFibGUuCisyLiBFbnZpcm9ubWVudCB2YXJpYWJsZSBgYCRPUEVOQUxESVJgYC4KKzMuIFN5c3RlbSBwYXRocy4KKzQuIFVzZXItY29tcGlsZWQgZnJhbWV3b3JrOiBgYH4vTGlicmFyeS9GcmFtZXdvcmtzYGAuCis1LiBNYW51YWxseSBjb21waWxlZCBmcmFtZXdvcms6IGBgL0xpYnJhcnkvRnJhbWV3b3Jrc2BgLgorNi4gQWRkLW9uIHBhY2thZ2U6IGBgL29wdGBgLgorCitSZXN1bHQgVmFyaWFibGVzCiteXl5eXl5eXl5eXl5eXl5eCisKK1RoaXMgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CisKK2BgT1BFTkFMX0ZPVU5EYGAKKyAgSWYgZmFsc2UsIGRvIG5vdCB0cnkgdG8gbGluayB0byBPcGVuQUwKK2BgT1BFTkFMX0lOQ0xVREVfRElSYGAKKyAgT3BlbkFMIGluY2x1ZGUgZGlyZWN0b3J5CitgYE9QRU5BTF9MSUJSQVJZYGAKKyAgUGF0aCB0byB0aGUgT3BlbkFMIGxpYnJhcnkKK2BgT1BFTkFMX1ZFUlNJT05fU1RSSU5HYGAKKyAgSHVtYW4tcmVhZGFibGUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHZlcnNpb24gb2YgT3BlbkFMCiAjXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XQogCi0jIFRoaXMgbWFrZXMgdGhlIHByZXN1bXB0aW9uIHRoYXQgeW91IGFyZSBpbmNsdWRlIGFsLmggbGlrZQotIyAjaW5jbHVkZSAiYWwuaCIKLSMgYW5kIG5vdAotIyAjaW5jbHVkZSA8QUwvYWwuaD4KLSMgVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IHRoZSBsYXR0ZXIgaXMgbm90IGVudGlyZWx5IHBvcnRhYmxlLgotIyBXaW5kb3dzL0NyZWF0aXZlIExhYnMgZG9lcyBub3QgYnkgZGVmYXVsdCBwdXQgdGhlaXIgaGVhZGVycyBpbiBBTC8gYW5kCi0jIE9TIFggdXNlcyB0aGUgY29udmVudGlvbiA8T3BlbkFML2FsLmg+LgotIwogIyBGb3IgV2luZG93cywgQ3JlYXRpdmUgTGFicyBzZWVtcyB0byBoYXZlIGFkZGVkIGEgcmVnaXN0cnkga2V5IGZvciB0aGVpcgogIyBPcGVuQUwgMS4xIGluc3RhbGxlci4gSSBoYXZlIGFkZGVkIHRoYXQga2V5IHRvIHRoZSBsaXN0IG9mIHNlYXJjaCBwYXRocywKICMgaG93ZXZlciwgdGhlIGtleSBsb29rcyBsaWtlIGl0IGNvdWxkIGJlIGEgbGl0dGxlIGZyYWdpbGUgZGVwZW5kaW5nIG9uCkBAIC0zNiwzNiArNTQsMTcgQEAKICMgcGxhdGZvcm1zIGFyZSBpbnRyb2R1Y2VkLgogIyBUaGUgT3BlbkFMIDEuMCBpbnN0YWxsZXIgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSB1c2VmdWwga2V5IEkgY2FuIHVzZS4KICMgSSBkbyBub3Qga25vdyBpZiB0aGUgTnZpZGlhIE9wZW5BTCBTREsgaGFzIGEgcmVnaXN0cnkga2V5LgotIwotIyBGb3IgT1MgWCwgcmVtZW1iZXIgdGhhdCBPcGVuQUwgd2FzIGFkZGVkIGJ5IEFwcGxlIGluIDEwLjQgKFRpZ2VyKS4KLSMgVG8gc3VwcG9ydCB0aGUgZnJhbWV3b3JrLCBJIG9yaWdpbmFsbHkgd3JvdGUgc3BlY2lhbCBmcmFtZXdvcmsgZGV0ZWN0aW9uCi0jIGNvZGUgaW4gdGhpcyBtb2R1bGUgd2hpY2ggSSBoYXZlIG5vdyByZW1vdmVkIHdpdGggQ01ha2UncyBpbnRyb2R1Y3Rpb24KLSMgb2YgbmF0aXZlIHN1cHBvcnQgZm9yIGZyYW1ld29ya3MuCi0jIEluIGFkZGl0aW9uLCBPcGVuQUwgaXMgb3BlbiBzb3VyY2UsIGFuZCBpdCBpcyBwb3NzaWJsZSB0byBjb21waWxlIG9uIFBhbnRoZXIuCi0jIEZ1cnRoZXJtb3JlLCBkdWUgdG8gYnVncyBpbiB0aGUgaW5pdGlhbCBPcGVuQUwgcmVsZWFzZSwgYW5kIHRoZQotIyB0cmFuc2l0aW9uIHRvIE9wZW5BTCAxLjEsIGl0IGlzIGNvbW1vbiB0byBuZWVkIHRvIG92ZXJyaWRlIHRoZSBidWlsdC1pbgotIyBmcmFtZXdvcmsuCi0jIFBlciBteSByZXF1ZXN0LCBDTWFrZSBzaG91bGQgc2VhcmNoIGZvciBmcmFtZXdvcmtzIGZpcnN0IGluCi0jIHRoZSBmb2xsb3dpbmcgb3JkZXI6Ci0jIH4vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5BTC5mcmFtZXdvcmsvSGVhZGVycwotIyAvTGlicmFyeS9GcmFtZXdvcmtzL09wZW5BTC5mcmFtZXdvcmsvSGVhZGVycwotIyAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuQUwuZnJhbWV3b3JrL0hlYWRlcnMKLSMKLSMgT24gT1MgWCwgdGhpcyB3aWxsIHByZWZlciB0aGUgRnJhbWV3b3JrIHZlcnNpb24gKGlmIGZvdW5kKSBvdmVyIG90aGVycy4KLSMgUGVvcGxlIHdpbGwgaGF2ZSB0byBtYW51YWxseSBjaGFuZ2UgdGhlIGNhY2hlIHZhbHVlcyBvZgotIyBPUEVOQUxfTElCUkFSWSB0byBvdmVycmlkZSB0aGlzIHNlbGVjdGlvbiBvciBzZXQgdGhlIENNYWtlIGVudmlyb25tZW50Ci0jIENNQUtFX0lOQ0xVREVfUEFUSCB0byBtb2RpZnkgdGhlIHNlYXJjaCBwYXRocy4KIAogZmluZF9wYXRoKE9QRU5BTF9JTkNMVURFX0RJUiBhbC5oCiAgIEhJTlRTCiAgICAgRU5WIE9QRU5BTERJUgotICBQQVRIX1NVRkZJWEVTIGluY2x1ZGUvQUwgaW5jbHVkZS9PcGVuQUwgaW5jbHVkZSBBTCBPcGVuQUwKICAgUEFUSFMKLSAgfi9MaWJyYXJ5L0ZyYW1ld29ya3MKLSAgL0xpYnJhcnkvRnJhbWV3b3JrcwotICAvb3B0Ci0gIFtIS0VZX0xPQ0FMX01BQ0hJTkVcXFNPRlRXQVJFXFxDcmVhdGl2ZVwgTGFic1xcT3BlbkFMXCAxLjFcIFNvZnR3YXJlXCBEZXZlbG9wbWVudFwgS2l0XFwxLjAwLjAwMDA7SW5zdGFsbERpcl0KLSkKKyAgICB+L0xpYnJhcnkvRnJhbWV3b3JrcworICAgIC9MaWJyYXJ5L0ZyYW1ld29ya3MKKyAgICAvb3B0CisgICAgW0hLRVlfTE9DQUxfTUFDSElORVxcU09GVFdBUkVcXENyZWF0aXZlXCBMYWJzXFxPcGVuQUxcIDEuMVwgU29mdHdhcmVcIERldmVsb3BtZW50XCBLaXRcXDEuMDAuMDAwMDtJbnN0YWxsRGlyXQorICBQQVRIX1NVRkZJWEVTIGluY2x1ZGUvQUwgaW5jbHVkZS9PcGVuQUwgaW5jbHVkZSBBTCBPcGVuQUwKKyAgKQogCiBpZihDTUFLRV9TSVpFT0ZfVk9JRF9QIEVRVUFMIDgpCiAgIHNldChfT3BlbkFMX0FSQ0hfRElSIGxpYnMvV2luNjQpCkBAIC03NywxNyArNzYsMjEgQEAKICAgTkFNRVMgT3BlbkFMIGFsIG9wZW5hbCBPcGVuQUwzMgogICBISU5UUwogICAgIEVOViBPUEVOQUxESVIKLSAgUEFUSF9TVUZGSVhFUyBsaWJ4MzIgbGliNjQgbGliIGxpYnM2NCBsaWJzICR7X09wZW5BTF9BUkNIX0RJUn0KICAgUEFUSFMKLSAgfi9MaWJyYXJ5L0ZyYW1ld29ya3MKLSAgL0xpYnJhcnkvRnJhbWV3b3JrcwotICAvb3B0Ci0gIFtIS0VZX0xPQ0FMX01BQ0hJTkVcXFNPRlRXQVJFXFxDcmVhdGl2ZVwgTGFic1xcT3BlbkFMXCAxLjFcIFNvZnR3YXJlXCBEZXZlbG9wbWVudFwgS2l0XFwxLjAwLjAwMDA7SW5zdGFsbERpcl0KLSkKKyAgICB+L0xpYnJhcnkvRnJhbWV3b3JrcworICAgIC9MaWJyYXJ5L0ZyYW1ld29ya3MKKyAgICAvb3B0CisgICAgW0hLRVlfTE9DQUxfTUFDSElORVxcU09GVFdBUkVcXENyZWF0aXZlXCBMYWJzXFxPcGVuQUxcIDEuMVwgU29mdHdhcmVcIERldmVsb3BtZW50XCBLaXRcXDEuMDAuMDAwMDtJbnN0YWxsRGlyXQorICBQQVRIX1NVRkZJWEVTIGxpYngzMiBsaWI2NCBsaWIgbGliczY0IGxpYnMgJHtfT3BlbkFMX0FSQ0hfRElSfQorICApCiAKIHVuc2V0KF9PcGVuQUxfQVJDSF9ESVIpCiAKIGluY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9GaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncy5jbWFrZSkKLUZJTkRfUEFDS0FHRV9IQU5ETEVfU1RBTkRBUkRfQVJHUyhPcGVuQUwgIERFRkFVTFRfTVNHICBPUEVOQUxfTElCUkFSWSBPUEVOQUxfSU5DTFVERV9ESVIpCitmaW5kX3BhY2thZ2VfaGFuZGxlX3N0YW5kYXJkX2FyZ3MoCisgIE9wZW5BTAorICBSRVFVSVJFRF9WQVJTIE9QRU5BTF9MSUJSQVJZIE9QRU5BTF9JTkNMVURFX0RJUgorICBWRVJTSU9OX1ZBUiBPUEVOQUxfVkVSU0lPTl9TVFJJTkcKKyAgKQogCiBtYXJrX2FzX2FkdmFuY2VkKE9QRU5BTF9MSUJSQVJZIE9QRU5BTF9JTkNMVURFX0RJUikKZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZE9wZW5DTC5jbWFrZSBiL01vZHVsZXMvRmluZE9wZW5DTC5jbWFrZQppbmRleCA5ODkxNzI0Li4zNGEyMDNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL0ZpbmRPcGVuQ0wuY21ha2UKKysrIGIvTW9kdWxlcy9GaW5kT3BlbkNMLmNtYWtlCkBAIC03OCw2ICs3OCw4IEBACiAgICAgRU5WIENVREFfUEFUSAogICAgIEVOViBBVElTVFJFQU1TREtST09UCiAgICAgRU5WIE9DTF9ST09UCisgICAgL3Vzci9sb2NhbC9jdWRhCisgICAgL29wdC9jdWRhCiAgIFBBVEhfU1VGRklYRVMKICAgICBpbmNsdWRlCiAgICAgT3BlbkNML2NvbW1vbi9pbmMKQEAgLTEyNiw2ICsxMjgsOCBAQAogICAgICAgUEFUSFMKICAgICAgICAgRU5WIEFNREFQUFNES1JPT1QKICAgICAgICAgRU5WIENVREFfUEFUSAorICAgICAgICAvdXNyL2xvY2FsL2N1ZGEKKyAgICAgICAgL29wdC9jdWRhCiAgICAgICBQQVRIX1NVRkZJWEVTCiAgICAgICAgIGxpYi94ODYKICAgICAgICAgbGliKQpAQCAtMTM1LDYgKzEzOSw4IEBACiAgICAgICBQQVRIUwogICAgICAgICBFTlYgQU1EQVBQU0RLUk9PVAogICAgICAgICBFTlYgQ1VEQV9QQVRICisgICAgICAgIC91c3IvbG9jYWwvY3VkYQorICAgICAgICAvb3B0L2N1ZGEKICAgICAgIFBBVEhfU1VGRklYRVMKICAgICAgICAgbGliL3g4Nl82NAogICAgICAgICBsaWIveDY0CmRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRQa2dDb25maWcuY21ha2UgYi9Nb2R1bGVzL0ZpbmRQa2dDb25maWcuY21ha2UKaW5kZXggYzc5ZjIwZi4uYjdlNjQ0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9GaW5kUGtnQ29uZmlnLmNtYWtlCisrKyBiL01vZHVsZXMvRmluZFBrZ0NvbmZpZy5jbWFrZQpAQCAtMzQsMTYgKzM0LDMxIEBACiBmaW5kX3Byb2dyYW0oUEtHX0NPTkZJR19FWEVDVVRBQkxFIE5BTUVTIHBrZy1jb25maWcgRE9DICJwa2ctY29uZmlnIGV4ZWN1dGFibGUiKQogbWFya19hc19hZHZhbmNlZChQS0dfQ09ORklHX0VYRUNVVEFCTEUpCiAKK3NldChfUEtHX0NPTkZJR19GQUlMVVJFX01FU1NBR0UgIiIpCiBpZiAoUEtHX0NPTkZJR19FWEVDVVRBQkxFKQogICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke1BLR19DT05GSUdfRVhFQ1VUQUJMRX0gLS12ZXJzaW9uCi0gICAgT1VUUFVUX1ZBUklBQkxFIFBLR19DT05GSUdfVkVSU0lPTl9TVFJJTkcKLSAgICBFUlJPUl9RVUlFVAotICAgIE9VVFBVVF9TVFJJUF9UUkFJTElOR19XSElURVNQQUNFKQorICAgIE9VVFBVVF9WQVJJQUJMRSBQS0dfQ09ORklHX1ZFUlNJT05fU1RSSU5HIE9VVFBVVF9TVFJJUF9UUkFJTElOR19XSElURVNQQUNFCisgICAgRVJST1JfVkFSSUFCTEUgX1BLR19DT05GSUdfVkVSU0lPTl9FUlJPUiBFUlJPUl9TVFJJUF9UUkFJTElOR19XSElURVNQQUNFCisgICAgUkVTVUxUX1ZBUklBQkxFIF9QS0dfQ09ORklHX1ZFUlNJT05fUkVTVUxUCisgICAgKQorCisgIGlmIChOT1QgX1BLR19DT05GSUdfVkVSU0lPTl9SRVNVTFQgRVFVQUwgMCkKKyAgICBzdHJpbmcoUkVQTEFDRSAiXG4iICJcbiAgICAiIF9QS0dfQ09ORklHX1ZFUlNJT05fRVJST1IgIiAgICAgICR7X1BLR19DT05GSUdfVkVSU0lPTl9FUlJPUn0iKQorICAgIHN0cmluZyhBUFBFTkQgX1BLR19DT05GSUdfRkFJTFVSRV9NRVNTQUdFCisgICAgICAiVGhlIGNvbW1hbmRcbiIKKyAgICAgICIgICAgICBcIiR7UEtHX0NPTkZJR19FWEVDVVRBQkxFfVwiIC0tdmVyc2lvblxuIgorICAgICAgIiAgICBmYWlsZWQgd2l0aCBvdXRwdXRcbiR7X1BLR19DT05GSUdfVkVSU0lPTl9FUlJPUn0iCisgICAgICApCisgICAgc2V0KFBLR19DT05GSUdfRVhFQ1VUQUJMRSAiIikKKyAgICB1bnNldChQS0dfQ09ORklHX1ZFUlNJT05fU1RSSU5HKQorICBlbmRpZiAoKQorICB1bnNldChfUEtHX0NPTkZJR19WRVJTSU9OX1JFU1VMVCkKIGVuZGlmICgpCiAKIGluY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9GaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncy5jbWFrZSkKIGZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncyhQa2dDb25maWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVFVSVJFRF9WQVJTIFBLR19DT05GSUdfRVhFQ1VUQUJMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQVNPTl9GQUlMVVJFX01FU1NBR0UgIiR7X1BLR19DT05GSUdfRkFJTFVSRV9NRVNTQUdFfSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVJTSU9OX1ZBUiBQS0dfQ09ORklHX1ZFUlNJT05fU1RSSU5HKQogCiAjIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIG1vZHVsZSBuYW1lIGlzICJQa2dDb25maWciIGJ1dCB0aGUgbmFtZSBvZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kUHl0aG9uLmNtYWtlIGIvTW9kdWxlcy9GaW5kUHl0aG9uLmNtYWtlCmluZGV4IDMyZWYxMjAuLjAxODk1NmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvRmluZFB5dGhvbi5jbWFrZQorKysgYi9Nb2R1bGVzL0ZpbmRQeXRob24uY21ha2UKQEAgLTI4Niw2ICsyODYsMjIgQEAKICAgSWYgbW9yZSB0aGFuIG9uZSBhcnRpZmFjdCBpcyBzcGVjaWZpZWQsIGl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2FiaWxpdHkgdG8KICAgZW5zdXJlIHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgdmFyaW91cyBhcnRpZmFjdHMuCiAKK0J5IGRlZmF1bHQsIHRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhbGxzIGluIGRpZmZlcmVudCBkaXJlY3RvcmllcyBvZiBhCitwcm9qZWN0IHdpdGggZGlmZmVyZW50IHZlcnNpb24vY29tcG9uZW50IHJlcXVpcmVtZW50cyB3aGlsZSBwcm92aWRpbmcgY29ycmVjdAorYW5kIGNvbnNpc3RlbnQgcmVzdWx0cyBmb3IgZWFjaCBjYWxsLiBUbyBzdXBwb3J0IHRoaXMgYmVoYXZpb3IsIGBgQ01ha2VgYCBjYWNoZQoraXMgbm90IHVzZWQgaW4gdGhlIHRyYWRpdGlvbmFsIHdheSB3aGljaCBjYW4gYmUgcHJvYmxlbWF0aWMgZm9yIGludGVyYWN0aXZlCitzcGVjaWZpY2F0aW9uLiBTbywgdG8gZW5hYmxlIGFsc28gaW50ZXJhY3RpdmUgc3BlY2lmaWNhdGlvbiwgbW9kdWxlIGJlaGF2aW9yCitjYW4gYmUgY29udHJvbGVkIHdpdGggdGhlIGZvbGxvd2luZyB2YXJpYWJsZToKKworYGBQeXRob25fQVJUSUZBQ1RTX0lOVEVSQUNUSVZFYGAKKyAgU2VsZWN0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIG1vZHVsZS4gVGhpcyBpcyBhIGJvb2xlYW4gdmFyaWFibGU6CisKKyAgKiBJZiBzZXQgdG8gYGBUUlVFYGA6IENyZWF0ZSBDTWFrZSBjYWNoZSBlbnRyaWVzIGZvciB0aGUgYWJvdmUgYXJ0aWZhY3QKKyAgICBzcGVjaWZpY2F0aW9uIHZhcmlhYmxlcyBzbyB0aGF0IHVzZXJzIGNhbiBlZGl0IHRoZW0gaW50ZXJhY3RpdmVseS4KKyAgICBUaGlzIGRpc2FibGVzIHN1cHBvcnQgZm9yIG11bHRpcGxlIHZlcnNpb24vY29tcG9uZW50IHJlcXVpcmVtZW50cy4KKyAgKiBJZiBzZXQgdG8gYGBGQUxTRWBgIG9yIHVuZGVmaW5lZDogRW5hYmxlIG11bHRpcGxlIHZlcnNpb24vY29tcG9uZW50CisgICAgcmVxdWlyZW1lbnRzLgorCiBDb21tYW5kcwogXl5eXl5eXl4KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kUHl0aG9uL1N1cHBvcnQuY21ha2UgYi9Nb2R1bGVzL0ZpbmRQeXRob24vU3VwcG9ydC5jbWFrZQppbmRleCA4NDQ4YmY1Li42OGJlM2Y5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL0ZpbmRQeXRob24vU3VwcG9ydC5jbWFrZQorKysgYi9Nb2R1bGVzL0ZpbmRQeXRob24vU3VwcG9ydC5jbWFrZQpAQCAtNzUsMjIgKzc1LDIwIEBACiAgICAgICAoX1BZVEhPTl9pc011bHRpQ29uZmlnIE9SIENNQUtFX0JVSUxEX1RZUEUpKQogICAgICMgaWYgdGhlIGdlbmVyYXRvciBpcyBtdWx0aS1jb25maWcgb3IgaWYgQ01BS0VfQlVJTERfVFlQRSBpcyBzZXQgZm9yCiAgICAgIyBzaW5nbGUtY29uZmlnIGdlbmVyYXRvcnMsIHNldCBvcHRpbWl6ZWQgYW5kIGRlYnVnIGxpYnJhcmllcwotICAgIHNldCAoJHtfUFlUSE9OX0JBU0VOQU1FfV9MSUJSQVJZICIiKQotICAgIGZvcmVhY2ggKF9QWVRIT05fbGlibmFtZSBJTiBMSVNUUyAke19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUllfUkVMRUFTRSApCi0gICAgICBsaXN0KCBBUFBFTkQgJHtfUFlUSE9OX0JBU0VOQU1FfV9MSUJSQVJZIG9wdGltaXplZCAiJHtfUFlUSE9OX2xpYm5hbWV9IiApCisgICAgc2V0ICgke19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUklFUyAiIikKKyAgICBmb3JlYWNoIChfUFlUSE9OX2xpYm5hbWUgSU4gTElTVFMgJHtfUFlUSE9OX0JBU0VOQU1FfV9MSUJSQVJZX1JFTEVBU0UpCisgICAgICBsaXN0KCBBUFBFTkQgJHtfUFlUSE9OX0JBU0VOQU1FfV9MSUJSQVJJRVMgb3B0aW1pemVkICIke19QWVRIT05fbGlibmFtZX0iKQogICAgIGVuZGZvcmVhY2goKQotICAgIGZvcmVhY2ggKF9QWVRIT05fbGlibmFtZSBJTiBMSVNUUyAke19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUllfREVCVUcgKQotICAgICAgbGlzdCggQVBQRU5EICR7X1BZVEhPTl9CQVNFTkFNRX1fTElCUkFSWSBkZWJ1ZyAiJHtfUFlUSE9OX2xpYm5hbWV9IiApCisgICAgZm9yZWFjaCAoX1BZVEhPTl9saWJuYW1lIElOIExJU1RTICR7X1BZVEhPTl9CQVNFTkFNRX1fTElCUkFSWV9ERUJVRykKKyAgICAgIGxpc3QoIEFQUEVORCAke19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUklFUyBkZWJ1ZyAiJHtfUFlUSE9OX2xpYm5hbWV9IikKICAgICBlbmRmb3JlYWNoKCkKICAgZWxzZWlmICgke19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUllfUkVMRUFTRSkKLSAgICBzZXQgKCR7X1BZVEhPTl9CQVNFTkFNRX1fTElCUkFSWSAiJHske19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUllfUkVMRUFTRX0iKQorICAgIHNldCAoJHtfUFlUSE9OX0JBU0VOQU1FfV9MSUJSQVJJRVMgIiR7JHtfUFlUSE9OX0JBU0VOQU1FfV9MSUJSQVJZX1JFTEVBU0V9IikKICAgZWxzZWlmICgke19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUllfREVCVUcpCi0gICAgc2V0ICgke19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUlkgIiR7JHtfUFlUSE9OX0JBU0VOQU1FfV9MSUJSQVJZX0RFQlVHfSIpCisgICAgc2V0ICgke19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUklFUyAiJHske19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUllfREVCVUd9IikKICAgZWxzZSgpCi0gICAgc2V0ICgke19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUlkgIiR7X1BZVEhPTl9CQVNFTkFNRX1fTElCUkFSWS1OT1RGT1VORCIpCisgICAgc2V0ICgke19QWVRIT05fQkFTRU5BTUV9X0xJQlJBUklFUyAiJHtfUFlUSE9OX0JBU0VOQU1FfV9MSUJSQVJZLU5PVEZPVU5EIikKICAgZW5kaWYoKQotCi0gIHNldCAoJHtfUFlUSE9OX0JBU0VOQU1FfV9MSUJSQVJJRVMgIiR7JHtfUFlUSE9OX0JBU0VOQU1FfV9MSUJSQVJZfSIpCiBlbmRtYWNybygpCiAKIApAQCAtMzIzLDcgKzMyMSw3IEBACiAKICAgaWYgKF8ke19QWVRIT05fUFJFRklYfV9FWEVDVVRBQkxFIEFORCBOT1QgQ01BS0VfQ1JPU1NDT01QSUxJTkcpCiAgICAgaWYgKE5BTUUgU1RSRVFVQUwgIlBSRUZJWCIpCi0gICAgICBleGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgIiR7XyR7X1BZVEhPTl9QUkVGSVh9X0VYRUNVVEFCTEV9IiAtYyAiaW1wb3J0IHN5czsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3lzLnN0ZG91dC53cml0ZSgnOycuam9pbihbc3lzY29uZmlnLlBSRUZJWCxzeXNjb25maWcuRVhFQ19QUkVGSVgsc3lzY29uZmlnLkJBU0VfRVhFQ19QUkVGSVhdKSkiCisgICAgICBleGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgIiR7XyR7X1BZVEhPTl9QUkVGSVh9X0VYRUNVVEFCTEV9IiAtYyAiaW1wb3J0IHN5c1xudHJ5OlxuICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZ1xuICAgc3lzLnN0ZG91dC53cml0ZSgnOycuam9pbihbc3lzY29uZmlnLlBSRUZJWCxzeXNjb25maWcuRVhFQ19QUkVGSVgsc3lzY29uZmlnLkJBU0VfRVhFQ19QUkVGSVhdKSlcbmV4Y2VwdCBFeGNlcHRpb246XG4gICBpbXBvcnQgc3lzY29uZmlnXG4gICBzeXMuc3Rkb3V0LndyaXRlKCc7Jy5qb2luKFtzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ2Jhc2UnKSBvciAnJywgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdpbnN0YWxsZWRfYmFzZScpIG9yICcnXSkpIgogICAgICAgICAgICAgICAgICAgICAgICBSRVNVTFRfVkFSSUFCTEUgX3Jlc3VsdAogICAgICAgICAgICAgICAgICAgICAgICBPVVRQVVRfVkFSSUFCTEUgX3ZhbHVlcwogICAgICAgICAgICAgICAgICAgICAgICBFUlJPUl9RVUlFVApAQCAtMzM0LDE2ICszMzIsMjMgQEAKICAgICAgICAgbGlzdCAoUkVNT1ZFX0RVUExJQ0FURVMgX3ZhbHVlcykKICAgICAgIGVuZGlmKCkKICAgICBlbHNlaWYgKE5BTUUgU1RSRVFVQUwgIklOQ0xVREVTIikKLSAgICAgIGV4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAiJHtfJHtfUFlUSE9OX1BSRUZJWH1fRVhFQ1VUQUJMRX0iIC1jICJpbXBvcnQgc3lzOyBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnOyBzeXMuc3Rkb3V0LndyaXRlKCc7Jy5qb2luKFtzeXNjb25maWcuZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz1UcnVlKSxzeXNjb25maWcuZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz1GYWxzZSldKSkiCisgICAgICBpZiAoV0lOMzIpCisgICAgICAgIHNldCAoX3NjaGVtZSAibnQiKQorICAgICAgZWxzZSgpCisgICAgICAgIHNldCAoX3NjaGVtZSAicG9zaXhfcHJlZml4IikKKyAgICAgIGVuZGlmKCkKKyAgICAgIGV4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAiJHtfJHtfUFlUSE9OX1BSRUZJWH1fRVhFQ1VUQUJMRX0iIC1jICJpbXBvcnQgc3lzXG50cnk6XG4gICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnXG4gICBzeXMuc3Rkb3V0LndyaXRlKCc7Jy5qb2luKFtzeXNjb25maWcuZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz1UcnVlKSxzeXNjb25maWcuZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz1GYWxzZSldKSlcbmV4Y2VwdCBFeGNlcHRpb246XG4gICBpbXBvcnQgc3lzY29uZmlnXG4gICBzeXMuc3Rkb3V0LndyaXRlKCc7Jy5qb2luKFtzeXNjb25maWcuZ2V0X3BhdGgoJ3BsYXRpbmNsdWRlJyksc3lzY29uZmlnLmdldF9wYXRoKCdwbGF0aW5jbHVkZScsJyR7X3NjaGVtZX0nKSxzeXNjb25maWcuZ2V0X3BhdGgoJ2luY2x1ZGUnKSxzeXNjb25maWcuZ2V0X3BhdGgoJ2luY2x1ZGUnLCcke19zY2hlbWV9JyldKSkiCiAgICAgICAgICAgICAgICAgICAgICAgIFJFU1VMVF9WQVJJQUJMRSBfcmVzdWx0CiAgICAgICAgICAgICAgICAgICAgICAgIE9VVFBVVF9WQVJJQUJMRSBfdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgIEVSUk9SX1FVSUVUCiAgICAgICAgICAgICAgICAgICAgICAgIE9VVFBVVF9TVFJJUF9UUkFJTElOR19XSElURVNQQUNFKQogICAgICAgaWYgKF9yZXN1bHQpCiAgICAgICAgIHVuc2V0IChfdmFsdWVzKQorICAgICAgZWxzZSgpCisgICAgICAgIGxpc3QgKFJFTU9WRV9EVVBMSUNBVEVTIF92YWx1ZXMpCiAgICAgICBlbmRpZigpCiAgICAgZWxzZWlmIChOQU1FIFNUUkVRVUFMICJTT0FCSSIpCi0gICAgICBleGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgIiR7XyR7X1BZVEhPTl9QUkVGSVh9X0VYRUNVVEFCTEV9IiAtYyAiaW1wb3J0IHN5czsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZztzeXMuc3Rkb3V0LndyaXRlKCc7Jy5qb2luKFtzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1NPQUJJJykgb3IgJycsc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdFWFRfU1VGRklYJykgb3IgJyddKSkiCisgICAgICBleGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgIiR7XyR7X1BZVEhPTl9QUkVGSVh9X0VYRUNVVEFCTEV9IiAtYyAiaW1wb3J0IHN5c1xudHJ5OlxuICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZ1xuICAgc3lzLnN0ZG91dC53cml0ZSgnOycuam9pbihbc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdTT0FCSScpIG9yICcnLHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignRVhUX1NVRkZJWCcpIG9yICcnXSkpXG5leGNlcHQgRXhjZXB0aW9uOlxuICAgaW1wb3J0IHN5c2NvbmZpZztzeXMuc3Rkb3V0LndyaXRlKCc7Jy5qb2luKFtzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1NPQUJJJykgb3IgJycsc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdFWFRfU1VGRklYJykgb3IgJyddKSkiCiAgICAgICAgICAgICAgICAgICAgICAgIFJFU1VMVF9WQVJJQUJMRSBfcmVzdWx0CiAgICAgICAgICAgICAgICAgICAgICAgIE9VVFBVVF9WQVJJQUJMRSBfc29hYmkKICAgICAgICAgICAgICAgICAgICAgICAgRVJST1JfUVVJRVQKQEAgLTM1MSwxNCArMzU2LDE1IEBACiAgICAgICBpZiAoX3Jlc3VsdCkKICAgICAgICAgdW5zZXQgKF92YWx1ZXMpCiAgICAgICBlbHNlKCkKLSAgICAgICAgbGlzdCAoR0VUIF9zb2FiaSAwIF92YWx1ZXMpCi0gICAgICAgIGlmIChOT1QgX3ZhbHVlcykKLSAgICAgICAgICAjIHRyeSB0byBjb21wdXRlIFNPQUJJIGZyb20gRVhUX1NVRkZJWAotICAgICAgICAgIGxpc3QgKEdFVCBfc29hYmkgMSBfdmFsdWVzKQotICAgICAgICAgIGlmIChfdmFsdWVzKQotICAgICAgICAgICAgIyBjbGVhbi11cDogcmVtb3ZlIHByZWZpeCBjaGFyYWN0ZXIgYW5kIHN1ZmZpeAotICAgICAgICAgICAgc3RyaW5nIChSRUdFWCBSRVBMQUNFICJeWy4tXSguKykoJHtDTUFLRV9TSEFSRURfTElCUkFSWV9TVUZGSVh9fFxcLihzb3xweWQpKSQiICJcXDEiIF92YWx1ZXMgIiR7X3ZhbHVlc30iKQorICAgICAgICBmb3JlYWNoIChfaXRlbSBJTiBMSVNUUyBfc29hYmkpCisgICAgICAgICAgaWYgKF9pdGVtKQorICAgICAgICAgICAgc2V0IChfdmFsdWVzICIke19pdGVtfSIpCisgICAgICAgICAgICBicmVhaygpCiAgICAgICAgICAgZW5kaWYoKQorICAgICAgICBlbmRmb3JlYWNoKCkKKyAgICAgICAgaWYgKF92YWx1ZXMpCisgICAgICAgICAgIyBjbGVhbi11cDogcmVtb3ZlIHByZWZpeCBjaGFyYWN0ZXIgYW5kIHN1ZmZpeAorICAgICAgICAgIHN0cmluZyAoUkVHRVggUkVQTEFDRSAiXlsuLV0oLispKCR7Q01BS0VfU0hBUkVEX0xJQlJBUllfU1VGRklYfXxcXC4oc298cHlkKSkkIiAiXFwxIiBfdmFsdWVzICIke192YWx1ZXN9IikKICAgICAgICAgZW5kaWYoKQogICAgICAgZW5kaWYoKQogICAgIGVsc2UoKQpAQCAtMzY2LDcgKzM3Miw3IEBACiAgICAgICBpZiAoTkFNRSBTVFJFUVVBTCAiQ09ORklHRElSIikKICAgICAgICAgc2V0IChjb25maWdfZmxhZyAiTElCUEwiKQogICAgICAgZW5kaWYoKQotICAgICAgZXhlY3V0ZV9wcm9jZXNzIChDT01NQU5EICIke18ke19QWVRIT05fUFJFRklYfV9FWEVDVVRBQkxFfSIgLWMgImltcG9ydCBzeXM7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN5cy5zdGRvdXQud3JpdGUoc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCcke2NvbmZpZ19mbGFnfScpKSIKKyAgICAgIGV4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAiJHtfJHtfUFlUSE9OX1BSRUZJWH1fRVhFQ1VUQUJMRX0iIC1jICJpbXBvcnQgc3lzXG50cnk6XG4gICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnXG4gICBzeXMuc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignJHtjb25maWdfZmxhZ30nKSlcbmV4Y2VwdCBFeGNlcHRpb246XG4gICBpbXBvcnQgc3lzY29uZmlnXG4gICBzeXMuc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignJHtjb25maWdfZmxhZ30nKSkiCiAgICAgICAgICAgICAgICAgICAgICAgIFJFU1VMVF9WQVJJQUJMRSBfcmVzdWx0CiAgICAgICAgICAgICAgICAgICAgICAgIE9VVFBVVF9WQVJJQUJMRSBfdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgIEVSUk9SX1FVSUVUCkBAIC0zOTQsNiArNDAwLDEwIEBACiAgICAgbGlzdCAoUkVNT1ZFX0RVUExJQ0FURVMgX3ZhbHVlcykKICAgZW5kaWYoKQogCisgIGlmIChXSU4zMiBBTkQgTkFNRSBNQVRDSEVTICJeKFBSRUZJWHxDT05GSUdESVJ8SU5DTFVERVMpJCIpCisgICAgZmlsZSAoVE9fQ01BS0VfUEFUSCAiJHtfdmFsdWVzfSIgX3ZhbHVlcykKKyAgZW5kaWYoKQorCiAgIHNldCAoJHtfUFlUSE9OX1BHQ1ZfVkFMVUV9ICIke192YWx1ZXN9IiBQQVJFTlRfU0NPUEUpCiBlbmRmdW5jdGlvbigpCiAKQEAgLTEzODMsNyArMTM5Myw3IEBACiAgICAgICAgIGVuZGlmKCkKIAogICAgICAgICAjIHJldHJpZXZlIHZhcmlvdXMgcGFja2FnZSBpbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMKLSAgICAgICAgZXhlY3V0ZV9wcm9jZXNzIChDT01NQU5EICIke18ke19QWVRIT05fUFJFRklYfV9FWEVDVVRBQkxFfSIgLWMgImltcG9ydCBzeXM7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7c3lzLnN0ZG91dC53cml0ZSgnOycuam9pbihbc3lzY29uZmlnLmdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9RmFsc2Usc3RhbmRhcmRfbGliPVRydWUpLHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPVRydWUsc3RhbmRhcmRfbGliPVRydWUpLHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPUZhbHNlLHN0YW5kYXJkX2xpYj1GYWxzZSksc3lzY29uZmlnLmdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9VHJ1ZSxzdGFuZGFyZF9saWI9RmFsc2UpXSkpIgorICAgICAgICBleGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgIiR7XyR7X1BZVEhPTl9QUkVGSVh9X0VYRUNVVEFCTEV9IiAtYyAiaW1wb3J0IHN5c1xudHJ5OlxuICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZ1xuICAgc3lzLnN0ZG91dC53cml0ZSgnOycuam9pbihbc3lzY29uZmlnLmdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9RmFsc2Usc3RhbmRhcmRfbGliPVRydWUpLHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPVRydWUsc3RhbmRhcmRfbGliPVRydWUpLHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPUZhbHNlLHN0YW5kYXJkX2xpYj1GYWxzZSksc3lzY29uZmlnLmdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9VHJ1ZSxzdGFuZGFyZF9saWI9RmFsc2UpXSkpXG5leGNlcHQgRXhjZXB0aW9uOlxuICAgaW1wb3J0IHN5c2NvbmZpZ1xuICAgc3lzLnN0ZG91dC53cml0ZSgnOycuam9pbihbc3lzY29uZmlnLmdldF9wYXRoKCdzdGRsaWInKSxzeXNjb25maWcuZ2V0X3BhdGgoJ3BsYXRzdGRsaWInKSxzeXNjb25maWcuZ2V0X3BhdGgoJ3B1cmVsaWInKSxzeXNjb25maWcuZ2V0X3BhdGgoJ3BsYXRsaWInKV0pKSIKICAgICAgICAgICAgICAgICAgICAgICAgIFJFU1VMVF9WQVJJQUJMRSBfJHtfUFlUSE9OX1BSRUZJWH1fUkVTVUxUCiAgICAgICAgICAgICAgICAgICAgICAgICBPVVRQVVRfVkFSSUFCTEUgXyR7X1BZVEhPTl9QUkVGSVh9X0xJQlBBVEhTCiAgICAgICAgICAgICAgICAgICAgICAgICBFUlJPUl9RVUlFVCkKQEAgLTE0MTMsNiArMTQyMywxMCBAQAogICAgIGVuZGlmKCkKICAgZW5kaWYoKQogCisgIGlmICgke19QWVRIT05fUFJFRklYfV9BUlRJRkFDVFNfSU5URVJBQ1RJVkUpCisgICAgc2V0ICgke19QWVRIT05fUFJFRklYfV9FWEVDVVRBQkxFICIke18ke19QWVRIT05fUFJFRklYfV9FWEVDVVRBQkxFfSIgQ0FDSEUgRklMRVBBVEggIiR7X1BZVEhPTl9QUkVGSVh9IEludGVycHJldGVyIikKKyAgZW5kaWYoKQorCiAgIF9weXRob25fbWFya19hc19pbnRlcm5hbCAoXyR7X1BZVEhPTl9QUkVGSVh9X0VYRUNVVEFCTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfJHtfUFlUSE9OX1BSRUZJWH1fSU5URVJQUkVURVJfUFJPUEVSVElFUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8ke19QWVRIT05fUFJFRklYfV9JTlRFUlBSRVRFUl9TSUdOQVRVUkUpCkBAIC0xNjA4LDYgKzE2MjIsMTAgQEAKICAgICB1bnNldCAoJHtfUFlUSE9OX1BSRUZJWH1fQ09NUElMRVJfSUQpCiAgIGVuZGlmKCkKIAorICBpZiAoJHtfUFlUSE9OX1BSRUZJWH1fQVJUSUZBQ1RTX0lOVEVSQUNUSVZFKQorICAgIHNldCAoJHtfUFlUSE9OX1BSRUZJWH1fQ09NUElMRVIgIiR7XyR7X1BZVEhPTl9QUkVGSVh9X0NPTVBJTEVSfSIgQ0FDSEUgRklMRVBBVEggIiR7X1BZVEhPTl9QUkVGSVh9IENvbXBpbGVyIikKKyAgZW5kaWYoKQorCiAgIF9weXRob25fbWFya19hc19pbnRlcm5hbCAoXyR7X1BZVEhPTl9QUkVGSVh9X0NPTVBJTEVSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyR7X1BZVEhPTl9QUkVGSVh9X0NPTVBJTEVSX1NJR05BVFVSRSkKIGVuZGlmKCkKQEAgLTIyOTksNiArMjMxNywxMSBAQAogICAgIHNldCAoQ01BS0VfRklORF9MSUJSQVJZX1NVRkZJWEVTICR7XyR7X1BZVEhPTl9QUkVGSVh9X0NNQUtFX0ZJTkRfTElCUkFSWV9TVUZGSVhFU30pCiAgIGVuZGlmKCkKIAorICBpZiAoJHtfUFlUSE9OX1BSRUZJWH1fQVJUSUZBQ1RTX0lOVEVSQUNUSVZFKQorICAgIHNldCAoJHtfUFlUSE9OX1BSRUZJWH1fTElCUkFSWSAiJHtfJHtfUFlUSE9OX1BSRUZJWH1fTElCUkFSWV9SRUxFQVNFfSIgQ0FDSEUgRklMRVBBVEggIiR7X1BZVEhPTl9QUkVGSVh9IExpYnJhcnkiKQorICAgIHNldCAoJHtfUFlUSE9OX1BSRUZJWH1fSU5DTFVERV9ESVIgIiR7XyR7X1BZVEhPTl9QUkVGSVh9X0lOQ0xVREVfRElSfSIgQ0FDSEUgRklMRVBBVEggIiR7X1BZVEhPTl9QUkVGSVh9IEluY2x1ZGUgRGlyZWN0b3J5IikKKyAgZW5kaWYoKQorCiAgIF9weXRob25fbWFya19hc19pbnRlcm5hbCAoXyR7X1BZVEhPTl9QUkVGSVh9X0xJQlJBUllfUkVMRUFTRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8ke19QWVRIT05fUFJFRklYfV9MSUJSQVJZX0RFQlVHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyR7X1BZVEhPTl9QUkVGSVh9X1JVTlRJTUVfTElCUkFSWV9SRUxFQVNFCkBAIC0yMzc3LDYgKzI0MDAsMTAgQEAKICAgICB1bnNldCAoXyR7X1BZVEhPTl9QUkVGSVh9X05VTVBZX1NJR05BVFVSRSBDQUNIRSkKICAgZW5kaWYoKQogCisgIGlmICgke19QWVRIT05fUFJFRklYfV9BUlRJRkFDVFNfSU5URVJBQ1RJVkUpCisgICAgc2V0ICgke19QWVRIT05fUFJFRklYfV9OdW1QeV9JTkNMVURFX0RJUiAiJHtfJHtfUFlUSE9OX1BSRUZJWH1fTnVtUHlfSU5DTFVERV9ESVJ9IiBDQUNIRSBGSUxFUEFUSCAiJHtfUFlUSE9OX1BSRUZJWH0gTnVtUHkgSW5jbHVkZSBEaXJlY3RvcnkiKQorICBlbmRpZigpCisKICAgX3B5dGhvbl9tYXJrX2FzX2ludGVybmFsIChfJHtfUFlUSE9OX1BSRUZJWH1fTnVtUHlfSU5DTFVERV9ESVIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfJHtfUFlUSE9OX1BSRUZJWH1fTlVNUFlfU0lHTkFUVVJFKQogZW5kaWYoKQpAQCAtMjQ1Miw4ICsyNDc5LDggQEAKICAgICAgICAgZWxzZSgpCiAgICAgICAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzICgke19fbmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BFUlRJRVMgSU1QT1JURURfTElOS19JTlRFUkZBQ0VfTEFOR1VBR0VTICJDIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTVBPUlRFRF9JTVBMSUIgIiR7JHtfUFlUSE9OX1BSRUZJWH1fTElCUkFSWX0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNUE9SVEVEX0xPQ0FUSU9OICIkeyR7X1BZVEhPTl9QUkVGSVh9X1JVTlRJTUVfTElCUkFSWX0iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTVBPUlRFRF9JTVBMSUIgIiR7JHtfUFlUSE9OX1BSRUZJWH1fTElCUkFSSUVTfSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1QT1JURURfTE9DQVRJT04gIiR7JHtfUFlUSE9OX1BSRUZJWH1fUlVOVElNRV9MSUJSQVJZX1JFTEVBU0V9IikKICAgICAgICAgZW5kaWYoKQogICAgICAgZWxzZSgpCiAgICAgICAgIGlmICgke19QWVRIT05fUFJFRklYfV9MSUJSQVJZX1JFTEVBU0UgQU5EICR7X1BZVEhPTl9QUkVGSVh9X0xJQlJBUllfREVCVUcpCkBAIC0yNDY3LDcgKzI0OTQsNyBAQAogICAgICAgICBlbHNlKCkKICAgICAgICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMgKCR7X19uYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUEVSVElFUyBJTVBPUlRFRF9MSU5LX0lOVEVSRkFDRV9MQU5HVUFHRVMgIkMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNUE9SVEVEX0xPQ0FUSU9OICIkeyR7X1BZVEhPTl9QUkVGSVh9X0xJQlJBUll9IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1QT1JURURfTE9DQVRJT04gIiR7JHtfUFlUSE9OX1BSRUZJWH1fTElCUkFSWV9SRUxFQVNFfSIpCiAgICAgICAgIGVuZGlmKCkKICAgICAgIGVuZGlmKCkKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kUHl0aG9uMi5jbWFrZSBiL01vZHVsZXMvRmluZFB5dGhvbjIuY21ha2UKaW5kZXggM2QwZTZiOS4uMTVlMWNlMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9GaW5kUHl0aG9uMi5jbWFrZQorKysgYi9Nb2R1bGVzL0ZpbmRQeXRob24yLmNtYWtlCkBAIC0yMzUsNiArMjM1LDIyIEBACiAgIElmIG1vcmUgdGhhbiBvbmUgYXJ0aWZhY3QgaXMgc3BlY2lmaWVkLCBpdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNhYmlsaXR5IHRvCiAgIGVuc3VyZSB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIHZhcmlvdXMgYXJ0aWZhY3RzLgogCitCeSBkZWZhdWx0LCB0aGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYWxscyBpbiBkaWZmZXJlbnQgZGlyZWN0b3JpZXMgb2YgYQorcHJvamVjdCB3aXRoIGRpZmZlcmVudCB2ZXJzaW9uL2NvbXBvbmVudCByZXF1aXJlbWVudHMgd2hpbGUgcHJvdmlkaW5nIGNvcnJlY3QKK2FuZCBjb25zaXN0ZW50IHJlc3VsdHMgZm9yIGVhY2ggY2FsbC4gVG8gc3VwcG9ydCB0aGlzIGJlaGF2aW9yLCBgYENNYWtlYGAgY2FjaGUKK2lzIG5vdCB1c2VkIGluIHRoZSB0cmFkaXRpb25hbCB3YXkgd2hpY2ggY2FuIGJlIHByb2JsZW1hdGljIGZvciBpbnRlcmFjdGl2ZQorc3BlY2lmaWNhdGlvbi4gU28sIHRvIGVuYWJsZSBhbHNvIGludGVyYWN0aXZlIHNwZWNpZmljYXRpb24sIG1vZHVsZSBiZWhhdmlvcgorY2FuIGJlIGNvbnRyb2xlZCB3aXRoIHRoZSBmb2xsb3dpbmcgdmFyaWFibGU6CisKK2BgUHl0aG9uMl9BUlRJRkFDVFNfSU5URVJBQ1RJVkVgYAorICBTZWxlY3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgbW9kdWxlLiBUaGlzIGlzIGEgYm9vbGVhbiB2YXJpYWJsZToKKworICAqIElmIHNldCB0byBgYFRSVUVgYDogQ3JlYXRlIENNYWtlIGNhY2hlIGVudHJpZXMgZm9yIHRoZSBhYm92ZSBhcnRpZmFjdAorICAgIHNwZWNpZmljYXRpb24gdmFyaWFibGVzIHNvIHRoYXQgdXNlcnMgY2FuIGVkaXQgdGhlbSBpbnRlcmFjdGl2ZWx5LgorICAgIFRoaXMgZGlzYWJsZXMgc3VwcG9ydCBmb3IgbXVsdGlwbGUgdmVyc2lvbi9jb21wb25lbnQgcmVxdWlyZW1lbnRzLgorICAqIElmIHNldCB0byBgYEZBTFNFYGAgb3IgdW5kZWZpbmVkOiBFbmFibGUgbXVsdGlwbGUgdmVyc2lvbi9jb21wb25lbnQKKyAgICByZXF1aXJlbWVudHMuCisKIENvbW1hbmRzCiBeXl5eXl5eXgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRQeXRob24zLmNtYWtlIGIvTW9kdWxlcy9GaW5kUHl0aG9uMy5jbWFrZQppbmRleCBjOWE1ZDA5Li44MTM1YTFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL0ZpbmRQeXRob24zLmNtYWtlCisrKyBiL01vZHVsZXMvRmluZFB5dGhvbjMuY21ha2UKQEAgLTI4Myw2ICsyODMsMjIgQEAKICAgSWYgbW9yZSB0aGFuIG9uZSBhcnRpZmFjdCBpcyBzcGVjaWZpZWQsIGl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2FiaWxpdHkgdG8KICAgZW5zdXJlIHRoZSBjb25zaXN0ZW5jeSBvZiB0aGUgdmFyaW91cyBhcnRpZmFjdHMuCiAKK0J5IGRlZmF1bHQsIHRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhbGxzIGluIGRpZmZlcmVudCBkaXJlY3RvcmllcyBvZiBhCitwcm9qZWN0IHdpdGggZGlmZmVyZW50IHZlcnNpb24vY29tcG9uZW50IHJlcXVpcmVtZW50cyB3aGlsZSBwcm92aWRpbmcgY29ycmVjdAorYW5kIGNvbnNpc3RlbnQgcmVzdWx0cyBmb3IgZWFjaCBjYWxsLiBUbyBzdXBwb3J0IHRoaXMgYmVoYXZpb3IsIGBgQ01ha2VgYCBjYWNoZQoraXMgbm90IHVzZWQgaW4gdGhlIHRyYWRpdGlvbmFsIHdheSB3aGljaCBjYW4gYmUgcHJvYmxlbWF0aWMgZm9yIGludGVyYWN0aXZlCitzcGVjaWZpY2F0aW9uLiBTbywgdG8gZW5hYmxlIGFsc28gaW50ZXJhY3RpdmUgc3BlY2lmaWNhdGlvbiwgbW9kdWxlIGJlaGF2aW9yCitjYW4gYmUgY29udHJvbGVkIHdpdGggdGhlIGZvbGxvd2luZyB2YXJpYWJsZToKKworYGBQeXRob24zX0FSVElGQUNUU19JTlRFUkFDVElWRWBgCisgIFNlbGVjdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBtb2R1bGUuIFRoaXMgaXMgYSBib29sZWFuIHZhcmlhYmxlOgorCisgICogSWYgc2V0IHRvIGBgVFJVRWBgOiBDcmVhdGUgQ01ha2UgY2FjaGUgZW50cmllcyBmb3IgdGhlIGFib3ZlIGFydGlmYWN0CisgICAgc3BlY2lmaWNhdGlvbiB2YXJpYWJsZXMgc28gdGhhdCB1c2VycyBjYW4gZWRpdCB0aGVtIGludGVyYWN0aXZlbHkuCisgICAgVGhpcyBkaXNhYmxlcyBzdXBwb3J0IGZvciBtdWx0aXBsZSB2ZXJzaW9uL2NvbXBvbmVudCByZXF1aXJlbWVudHMuCisgICogSWYgc2V0IHRvIGBgRkFMU0VgYCBvciB1bmRlZmluZWQ6IEVuYWJsZSBtdWx0aXBsZSB2ZXJzaW9uL2NvbXBvbmVudAorICAgIHJlcXVpcmVtZW50cy4KKwogQ29tbWFuZHMKIF5eXl5eXl5eCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZFJ1YnkuY21ha2UgYi9Nb2R1bGVzL0ZpbmRSdWJ5LmNtYWtlCmluZGV4IDdlMDFmYmMuLjFiZGVlNjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvRmluZFJ1YnkuY21ha2UKKysrIGIvTW9kdWxlcy9GaW5kUnVieS5jbWFrZQpAQCAtOCwyODggKzgsNTA1IEBACiBGaW5kIFJ1YnkKIAogVGhpcyBtb2R1bGUgZmluZHMgaWYgUnVieSBpcyBpbnN0YWxsZWQgYW5kIGRldGVybWluZXMgd2hlcmUgdGhlCi1pbmNsdWRlIGZpbGVzIGFuZCBsaWJyYXJpZXMgYXJlLiAgUnVieSAxLjgsIDEuOSwgMi4wIGFuZCAyLjEgYXJlCitpbmNsdWRlIGZpbGVzIGFuZCBsaWJyYXJpZXMgYXJlLiAgUnVieSAxLjggdGhyb3VnaCAyLjcgYXJlCiBzdXBwb3J0ZWQuCiAKIFRoZSBtaW5pbXVtIHJlcXVpcmVkIHZlcnNpb24gb2YgUnVieSBjYW4gYmUgc3BlY2lmaWVkIHVzaW5nIHRoZQotc3RhbmRhcmQgc3ludGF4LCBlLmcuICBmaW5kX3BhY2thZ2UoUnVieSAxLjgpCitzdGFuZGFyZCBzeW50YXgsIGUuZy4KIAotSXQgYWxzbyBkZXRlcm1pbmVzIHdoYXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgaXMuICBUaGlzIGNvZGUgc2V0cwotdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CisuLiBjb2RlLWJsb2NrOjogY21ha2UKIAotYGBSVUJZX0VYRUNVVEFCTEVgYAorICBmaW5kX3BhY2thZ2UoUnVieSAyLjUuMSBFWEFDVCBSRVFVSVJFRCkKKyAgIyBPUgorICBmaW5kX3BhY2thZ2UoUnVieSAyLjQpCisKK0l0IGFsc28gZGV0ZXJtaW5lcyB3aGF0IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IGlzLgorCitWaXJ0dWFsIGVudmlyb25tZW50cyBzdWNoIGFzIFJWTSBhcmUgaGFuZGxlZCBhcyB3ZWxsLCBieSBwYXNzaW5nCit0aGUgYXJndW1lbnQgYGBSdWJ5X0ZJTkRfVklSVFVBTEVOVmBgCisKK1Jlc3VsdCBWYXJpYWJsZXMKK15eXl5eXl5eXl5eXl5eXl4KKworVGhpcyBtb2R1bGUgd2lsbCBzZXQgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaW4geW91ciBwcm9qZWN0OgorCitgYFJ1YnlfRk9VTkRgYAorICBzZXQgdG8gdHJ1ZSBpZiBydWJ5IHdhcyBmb3VuZCBzdWNjZXNzZnVsbHkKK2BgUnVieV9FWEVDVVRBQkxFYGAKICAgZnVsbCBwYXRoIHRvIHRoZSBydWJ5IGJpbmFyeQotYGBSVUJZX0lOQ0xVREVfRElSU2BgCitgYFJ1YnlfSU5DTFVERV9ESVJTYGAKICAgaW5jbHVkZSBkaXJzIHRvIGJlIHVzZWQgd2hlbiB1c2luZyB0aGUgcnVieSBsaWJyYXJ5Ci1gYFJVQllfTElCUkFSWWBgCi0gIGZ1bGwgcGF0aCB0byB0aGUgcnVieSBsaWJyYXJ5Ci1gYFJVQllfVkVSU0lPTmBgCitgYFJ1YnlfTElCUkFSSUVTYGAKKyAgbGlicmFyaWVzIG5lZWRlZCB0byB1c2UgcnVieSBmcm9tIEMuCitgYFJ1YnlfVkVSU0lPTmBgCiAgIHRoZSB2ZXJzaW9uIG9mIHJ1Ynkgd2hpY2ggd2FzIGZvdW5kLCBlLmcuICIxLjguNyIKLWBgUlVCWV9GT1VORGBgCi0gIHNldCB0byB0cnVlIGlmIHJ1Ynkgd3MgZm91bmQgc3VjY2Vzc2Z1bGx5CitgYFJ1YnlfVkVSU0lPTl9NQUpPUmBgCisgIFJ1YnkgbWFqb3IgdmVyc2lvbi4KK2BgUnVieV9WRVJTSU9OX01JTk9SYGAKKyAgUnVieSBtaW5vciB2ZXJzaW9uLgorYGBSdWJ5X1ZFUlNJT05fUEFUQ0hgYAorICBSdWJ5IHBhdGNoIHZlcnNpb24uCisKIAogQWxzbzoKIAotYGBSVUJZX0lOQ0xVREVfUEFUSGBgCi0gIHNhbWUgYXMgUlVCWV9JTkNMVURFX0RJUlMsIG9ubHkgcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgZG9uJ3QgdXNlIGl0CitgYFJ1YnlfSU5DTFVERV9QQVRIYGAKKyAgc2FtZSBhcyBSdWJ5X0lOQ0xVREVfRElSUywgb25seSBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCBkb24ndCB1c2UgaXQKKworSGludHMKK15eXl5eCisKK2BgUnVieV9ST09UX0RJUmBgCisgIERlZmluZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgYSBSdWJ5IGluc3RhbGxhdGlvbi4KKworYGBSdWJ5X0ZJTkRfVklSVFVBTEVOVmBgCisgIFRoaXMgdmFyaWFibGUgZGVmaW5lcyB0aGUgaGFuZGxpbmcgb2YgdmlydHVhbCBlbnZpcm9ubWVudHMgbWFuYWdlZCBieQorICBgYHJ2bWBgLiBJdCBpcyBtZWFuaW5nZnVsIG9ubHkgd2hlbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQKKyAgaXMgYWN0aXZlIChpLmUuIHRoZSBgYHJ2bWBgIHNjcmlwdCBoYXMgYmVlbiBldmFsdWF0ZWQgb3IgYXQgbGVhc3QgdGhlCisgIGBgTVlfUlVCWV9IT01FYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0KS4KKyAgVGhlIGBgUnVieV9GSU5EX1ZJUlRVQUxFTlZgYCB2YXJpYWJsZSBjYW4gYmUgc2V0IHRvIGVtcHR5IG9yCisgIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICogYGBGSVJTVGBgOiBUaGUgdmlydHVhbCBlbnZpcm9ubWVudCBpcyB1c2VkIGJlZm9yZSBhbnkgb3RoZXIgc3RhbmRhcmQKKyAgICBwYXRocyB0byBsb29rLXVwIGZvciB0aGUgaW50ZXJwcmV0ZXIuIFRoaXMgaXMgdGhlIGRlZmF1bHQuCisgICogYGBPTkxZYGA6IE9ubHkgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgdXNlZCB0byBsb29rLXVwIGZvciB0aGUKKyAgICBpbnRlcnByZXRlci4KKyAgKiBgYFNUQU5EQVJEYGA6IFRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIG5vdCB1c2VkIHRvIGxvb2stdXAgZm9yIHRoZQorICAgIGludGVycHJldGVyIChhc3N1bWluZyBpdCBpc24ndCBzdGlsbCBpbiB0aGUgUEFUSC4uLikKKwogI109PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PV0KIAotIyAgIFJVQllfQVJDSERJUj1gJFJVQlkgLXIgcmJjb25maWcgLWUgJ3ByaW50ZigiJXMiLENvbmZpZzo6Q09ORklHQDw6QCJhcmNoZGlyIkA6PkApJ2AKLSMgICBSVUJZX1NJVEVBUkNIRElSPWAkUlVCWSAtciByYmNvbmZpZyAtZSAncHJpbnRmKCIlcyIsQ29uZmlnOjpDT05GSUdAPDpAInNpdGVhcmNoZGlyIkA6PkApJ2AKLSMgICBSVUJZX1NJVEVESVI9YCRSVUJZIC1yIHJiY29uZmlnIC1lICdwcmludGYoIiVzIixDb25maWc6OkNPTkZJR0A8OkAic2l0ZWxpYmRpciJAOj5AKSdgCi0jICAgUlVCWV9MSUJESVI9YCRSVUJZIC1yIHJiY29uZmlnIC1lICdwcmludGYoIiVzIixDb25maWc6OkNPTkZJR0A8OkAibGliZGlyIkA6PkApJ2AKLSMgICBSVUJZX0xJQlJVQllBUkc9YCRSVUJZIC1yIHJiY29uZmlnIC1lICdwcmludGYoIiVzIixDb25maWc6OkNPTkZJR0A8OkAiTElCUlVCWUFSR19TSEFSRUQiQDo+QCknYAorIyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorIyBEZWZpbmUgY2FtZWwgY2FzZSB2ZXJzaW9ucyBvZiBpbnB1dCB2YXJpYWJsZXMKK2ZvcmVhY2goVVBQRVIKKyAgICBSVUJZX0VYRUNVVEFCTEUKKyAgICBSVUJZX0xJQlJBUlkKKyAgICBSVUJZX0lOQ0xVREVfRElSCisgICAgUlVCWV9DT05GSUdfSU5DTFVERV9ESVIKKyAgICApCisgICAgaWYgKERFRklORUQgJHtVUFBFUn0pCisgICAgICBzdHJpbmcoUkVQTEFDRSAiUlVCWV8iICJSdWJ5XyIgQ2FtZWwgJHtVUFBFUn0pCisgICAgICAgIGlmIChOT1QgREVGSU5FRCAke0NhbWVsfSkKKyAgICAgICAgICAgIHNldCgke0NhbWVsfSAkeyR7VVBQRVJ9fSkKKyAgICAgICAgZW5kaWYoKQorICAgIGVuZGlmKCkKK2VuZGZvcmVhY2goKQorCisjICAgUnVieV9BUkNIRElSPWAkUlVCWSAtciByYmNvbmZpZyAtZSAncHJpbnRmKCIlcyIsQ29uZmlnOjpDT05GSUdAPDpAImFyY2hkaXIiQDo+QCknYAorIyAgIFJ1YnlfU0lURUFSQ0hESVI9YCRSVUJZIC1yIHJiY29uZmlnIC1lICdwcmludGYoIiVzIixDb25maWc6OkNPTkZJR0A8OkAic2l0ZWFyY2hkaXIiQDo+QCknYAorIyAgIFJ1YnlfU0lURURJUj1gJFJVQlkgLXIgcmJjb25maWcgLWUgJ3ByaW50ZigiJXMiLENvbmZpZzo6Q09ORklHQDw6QCJzaXRlbGliZGlyIkA6PkApJ2AKKyMgICBSdWJ5X0xJQkRJUj1gJFJVQlkgLXIgcmJjb25maWcgLWUgJ3ByaW50ZigiJXMiLENvbmZpZzo6Q09ORklHQDw6QCJsaWJkaXIiQDo+QCknYAorIyAgIFJ1YnlfTElCUlVCWUFSRz1gJFJVQlkgLXIgcmJjb25maWcgLWUgJ3ByaW50ZigiJXMiLENvbmZpZzo6Q09ORklHQDw6QCJMSUJSVUJZQVJHX1NIQVJFRCJAOj5AKSdgCiAKICMgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZSB0byBnZXQgZGVidWcgb3V0cHV0IGZvciB0aGlzIGZpbGUKLSMgc2V0KF9SVUJZX0RFQlVHX09VVFBVVCBUUlVFKQorIyBzZXQoX1J1YnlfREVCVUdfT1VUUFVUIFRSVUUpCiAKICMgRGV0ZXJtaW5lIHRoZSBsaXN0IG9mIHBvc3NpYmxlIG5hbWVzIG9mIHRoZSBydWJ5IGV4ZWN1dGFibGUgZGVwZW5kaW5nCiAjIG9uIHdoaWNoIHZlcnNpb24gb2YgcnVieSBpcyByZXF1aXJlZAotc2V0KF9SVUJZX1BPU1NJQkxFX0VYRUNVVEFCTEVfTkFNRVMgcnVieSkKK3NldChfUnVieV9QT1NTSUJMRV9FWEVDVVRBQkxFX05BTUVTIHJ1YnkpCiAKLSMgaWYgMS45IGlzIHJlcXVpcmVkLCBkb24ndCBsb29rIGZvciBydWJ5MTggYW5kIHJ1YnkxLjgsIGRlZmF1bHQgdG8gdmVyc2lvbiAxLjgKLWlmKERFRklORUQgUnVieV9GSU5EX1ZFUlNJT05fTUFKT1IgQU5EIERFRklORUQgUnVieV9GSU5EX1ZFUlNJT05fTUlOT1IpCi0gIHNldChSdWJ5X0ZJTkRfVkVSU0lPTl9TSE9SVF9OT0RPVCAiJHtSdWJ5X0ZJTkRfVkVSU0lPTl9NQUpPUn0ke1JVQllfRklORF9WRVJTSU9OX01JTk9SfSIpCi0gICMgd2UgY2FuJ3QgY29uc3RydWN0IHRoYXQgaWYgb25seSBtYWpvciB2ZXJzaW9uIGlzIGdpdmVuCi0gIHNldChfUlVCWV9QT1NTSUJMRV9FWEVDVVRBQkxFX05BTUVTCi0gICAgcnVieSR7UnVieV9GSU5EX1ZFUlNJT05fTUFKT1J9LiR7UnVieV9GSU5EX1ZFUlNJT05fTUlOT1J9Ci0gICAgcnVieSR7UnVieV9GSU5EX1ZFUlNJT05fTUFKT1J9JHtSdWJ5X0ZJTkRfVkVSU0lPTl9NSU5PUn0KLSAgICAke19SVUJZX1BPU1NJQkxFX0VYRUNVVEFCTEVfTkFNRVN9KQotZWxzZSgpCi0gIHNldChSdWJ5X0ZJTkRfVkVSU0lPTl9TSE9SVF9OT0RPVCAiMTgiKQorIyBJZiBub3Qgc3BlY2lmaWVkLCBhbGxvdyBldmVyeXRoaW5nIGFzIGZhciBiYWNrIGFzIDEuOC4wCitpZihOT1QgREVGSU5FRCBSdWJ5X0ZJTkRfVkVSU0lPTl9NQUpPUikKKyAgc2V0KFJ1YnlfRklORF9WRVJTSU9OICIxLjguMCIpCisgIHNldChSdWJ5X0ZJTkRfVkVSU0lPTl9NQUpPUiAxKQorICBzZXQoUnVieV9GSU5EX1ZFUlNJT05fTUlOT1IgOCkKKyAgc2V0KFJ1YnlfRklORF9WRVJTSU9OX1BBVENIIDApCiBlbmRpZigpCiAKLWlmKE5PVCBSdWJ5X0ZJTkRfVkVSU0lPTl9FWEFDVCkKLSAgbGlzdChBUFBFTkQgX1JVQllfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FUyBydWJ5Mi40IHJ1YnkyNCkKLSAgbGlzdChBUFBFTkQgX1JVQllfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FUyBydWJ5Mi4zIHJ1YnkyMykKLSAgbGlzdChBUFBFTkQgX1JVQllfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FUyBydWJ5Mi4yIHJ1YnkyMikKLSAgbGlzdChBUFBFTkQgX1JVQllfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FUyBydWJ5Mi4xIHJ1YnkyMSkKLSAgbGlzdChBUFBFTkQgX1JVQllfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FUyBydWJ5Mi4wIHJ1YnkyMCkKLSAgbGlzdChBUFBFTkQgX1JVQllfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FUyBydWJ5MS45IHJ1YnkxOSkKK2lmKF9SdWJ5X0RFQlVHX09VVFBVVCkKKyAgbWVzc2FnZSgiUnVieV9GSU5EX1ZFUlNJT049JHtSdWJ5X0ZJTkRfVkVSU0lPTn0iKQorICBtZXNzYWdlKCJSdWJ5X0ZJTkRfVkVSU0lPTl9NQUpPUj0ke1J1YnlfRklORF9WRVJTSU9OX01BSk9SfSIpCisgIG1lc3NhZ2UoIlJ1YnlfRklORF9WRVJTSU9OX01JTk9SPSR7UnVieV9GSU5EX1ZFUlNJT05fTUlOT1J9IikKKyAgbWVzc2FnZSgiUnVieV9GSU5EX1ZFUlNJT05fUEFUQ0g9JHtSdWJ5X0ZJTkRfVkVSU0lPTl9QQVRDSH0iKQorZW5kaWYoKQogCi0gICMgaWYgd2Ugd2FudCBhIHZlcnNpb24gYmVsb3cgMS45LCBhbHNvIGxvb2sgZm9yIHJ1YnkgMS44Ci0gIGlmKCIke1J1YnlfRklORF9WRVJTSU9OX1NIT1JUX05PRE9UfSIgVkVSU0lPTl9MRVNTICIxOSIpCi0gICAgbGlzdChBUFBFTkQgX1JVQllfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FUyBydWJ5MS44IHJ1YnkxOCkKK3NldChSdWJ5X0ZJTkRfVkVSU0lPTl9TSE9SVF9OT0RPVCAiJHtSdWJ5X0ZJTkRfVkVSU0lPTl9NQUpPUn0ke1J1YnlfRklORF9WRVJTSU9OX01JTk9SfSIpCisKKyMgU2V0IG5hbWUgb2YgcG9zc2libGUgZXhlY3V0YWJsZXMsIGlnbm9yaW5nIHRoZSBtaW5vcgorIyBFZzoKKyMgMi4xLjEgPT4gZnJvbSBydWJ5MjcgdG8gcnVieTIxIGluY2x1ZGVkCisjIDIuMSAgID0+IGZyb20gcnVieTI3IHRvIHJ1YnkyMSBpbmNsdWRlZAorIyAyICAgICA9PiBmcm9tIHJ1YnkyNiB0byBydWJ5MjAgaW5jbHVkZWQKKyMgZW1wdHkgPT4gZnJvbSBydWJ5MjcgdG8gcnVieTE4IGluY2x1ZGVkCitpZihOT1QgUnVieV9GSU5EX1ZFUlNJT05fRVhBQ1QpCisKKyAgZm9yZWFjaChfcnVieV92ZXJzaW9uIFJBTkdFIDI3IDE4IC0xKQorICAgIHN0cmluZyhTVUJTVFJJTkcgIiR7X3J1YnlfdmVyc2lvbn0iIDAgMSBfcnVieV9tYWpvcl92ZXJzaW9uKQorICAgIHN0cmluZyhTVUJTVFJJTkcgIiR7X3J1YnlfdmVyc2lvbn0iIDEgMSBfcnVieV9taW5vcl92ZXJzaW9uKQorCisgICAgaWYoTk9UICIke19ydWJ5X21ham9yX3ZlcnNpb259JHtfcnVieV9taW5vcl92ZXJzaW9ufSIgVkVSU0lPTl9MRVNTICR7UnVieV9GSU5EX1ZFUlNJT05fU0hPUlRfTk9ET1R9KQorICAgICAgIyBBcHBlbmQgYm90aCBydWJ5WC5ZIGFuZCBydWJ5WFkgKGVnOiBydWJ5Mi43IHJ1YnkyNykKKyAgICAgIGxpc3QoQVBQRU5EIF9SdWJ5X1BPU1NJQkxFX0VYRUNVVEFCTEVfTkFNRVMgcnVieSR7X3J1YnlfbWFqb3JfdmVyc2lvbn0uJHtfcnVieV9taW5vcl92ZXJzaW9ufSBydWJ5JHtfcnVieV9tYWpvcl92ZXJzaW9ufSR7X3J1YnlfbWlub3JfdmVyc2lvbn0pCisgICAgZWxzZSgpCisgICAgICBicmVhaygpCisgICAgZW5kaWYoKQorCisgIGVuZGZvcmVhY2goKQorCisgIGxpc3QoUkVNT1ZFX0RVUExJQ0FURVMgX1J1YnlfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FUykKK2VuZGlmKCkKKworIyB2aXJ0dWFsIGVudmlyb25tZW50cyBoYW5kbGluZyAoZWcgUlZNKQoraWYgKERFRklORUQgRU5We01ZX1JVQllfSE9NRX0pCisgIGlmKF9SdWJ5X0RFQlVHX09VVFBVVCkKKyAgICBtZXNzYWdlKCJNeSBydWJ5IGhvbWUgaXMgZGVmaW5lZDogJEVOVntNWV9SVUJZX0hPTUV9IikKICAgZW5kaWYoKQogCi0gIGxpc3QoUkVNT1ZFX0RVUExJQ0FURVMgX1JVQllfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FUykKKyAgaWYgKERFRklORUQgUnVieV9GSU5EX1ZJUlRVQUxFTlYpCisgICAgaWYgKE5PVCBSdWJ5X0ZJTkRfVklSVFVBTEVOViBNQVRDSEVTICJeKEZJUlNUfE9OTFl8U1RBTkRBUkQpJCIpCisgICAgICBtZXNzYWdlIChBVVRIT1JfV0FSTklORyAiRmluZFJ1Ynk6ICR7UnVieV9GSU5EX1ZJUlRVQUxFTlZ9OiBpbnZhbGlkIHZhbHVlIGZvciAnUnVieV9GSU5EX1ZJUlRVQUxFTlYnLiAnRklSU1QnLCAnT05MWScgb3IgJ1NUQU5EQVJEJyBleHBlY3RlZC4gJ0ZJUlNUJyB3aWxsIGJlIHVzZWQgaW5zdGVhZC4iKQorICAgICAgc2V0IChfUnVieV9GSU5EX1ZJUlRVQUxFTlYgIkZJUlNUIikKKyAgICBlbHNlKCkKKyAgICAgIHNldCAoX1J1YnlfRklORF9WSVJUVUFMRU5WICR7UnVieV9GSU5EX1ZJUlRVQUxFTlZ9KQorICAgIGVuZGlmKCkKKyAgZWxzZSgpCisgICAgc2V0IChfUnVieV9GSU5EX1ZJUlRVQUxFTlYgRklSU1QpCisgIGVuZGlmKCkKK2Vsc2UoKQorICBpZiAoREVGSU5FRCBSdWJ5X0ZJTkRfVklSVFVBTEVOVikKKyAgICBtZXNzYWdlKCJFbnZpcm9ubWVudCB2YXJpYWJsZSBNWV9SVUJZX0hPTUUgaXNuJ3Qgc2V0LCBkZWZhdWx0aW5nIGJhY2sgdG8gUnVieV9GSU5EX1ZJUlRVQUxFTlY9U1RBTkRBUkQiKQorICBlbmRpZigpCisgIHNldCAoX1J1YnlfRklORF9WSVJUVUFMRU5WIFNUQU5EQVJEKQogZW5kaWYoKQogCi1maW5kX3Byb2dyYW0oUlVCWV9FWEVDVVRBQkxFIE5BTUVTICR7X1JVQllfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FU30pCitpZihfUnVieV9ERUJVR19PVVRQVVQpCisgIG1lc3NhZ2UoIl9SdWJ5X1BPU1NJQkxFX0VYRUNVVEFCTEVfTkFNRVM9JHtfUnVieV9QT1NTSUJMRV9FWEVDVVRBQkxFX05BTUVTfSIpCisgIG1lc3NhZ2UoIl9SdWJ5X0ZJTkRfVklSVFVBTEVOVj0ke19SdWJ5X0ZJTkRfVklSVFVBTEVOVn0iKQorZW5kaWYoKQogCi1pZihSVUJZX0VYRUNVVEFCTEUgIEFORCBOT1QgIFJVQllfVkVSU0lPTl9NQUpPUikKK2Z1bmN0aW9uIChfUlVCWV9WQUxJREFURV9JTlRFUlBSRVRFUikKKyAgaWYgKE5PVCBSdWJ5X0VYRUNVVEFCTEUpCisgICAgcmV0dXJuKCkKKyAgZW5kaWYoKQorCisgIGNtYWtlX3BhcnNlX2FyZ3VtZW50cyAoUEFSU0VfQVJHViAwIF9SVkkgIkVYQUNUO0NIRUNLX0VYSVNUUyIgIiIgIiIpCisgIGlmIChfUlZJX1VOUEFSU0VEX0FSR1VNRU5UUykKKyAgICBzZXQgKGV4cGVjdGVkX3ZlcnNpb24gJHtfUlZJX1VOUEFSU0VEX0FSR1VNRU5UU30pCisgIGVsc2UoKQorICAgIHVuc2V0IChleHBlY3RlZF92ZXJzaW9uKQorICBlbmRpZigpCisKKyAgaWYgKF9SVklfQ0hFQ0tfRVhJU1RTIEFORCBOT1QgRVhJU1RTICIke1J1YnlfRVhFQ1VUQUJMRX0iKQorICAgICMgaW50ZXJwcmV0ZXIgZG9lcyBub3QgZXhpc3QgYW55bW9yZQorICAgIHNldCAoX1J1YnlfSW50ZXJwcmV0ZXJfUkVBU09OX0ZBSUxVUkUgIkNhbm5vdCBmaW5kIHRoZSBpbnRlcnByZXRlciBcIiR7UnVieV9FWEVDVVRBQkxFfVwiIikKKyAgICBzZXRfcHJvcGVydHkgKENBQ0hFIFJ1YnlfRVhFQ1VUQUJMRSBQUk9QRVJUWSBWQUxVRSAiUnVieV9FWEVDVVRBQkxFLU5PVEZPVU5EIikKKyAgICByZXR1cm4oKQorICBlbmRpZigpCisKKyAgIyBDaGVjayB0aGUgdmVyc2lvbiBpdCByZXR1cm5zCisgICMgZXhlY3V0YWJsZSBmb3VuZCBtdXN0IGhhdmUgYSBzcGVjaWZpYyB2ZXJzaW9uCisgIGV4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAiJHtSdWJ5X0VYRUNVVEFCTEV9IiAtZSAicHV0cyBSVUJZX1ZFUlNJT04iCisgICAgICAgICAgICAgICAgICAgUkVTVUxUX1ZBUklBQkxFIHJlc3VsdAorICAgICAgICAgICAgICAgICAgIE9VVFBVVF9WQVJJQUJMRSB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgRVJST1JfUVVJRVQKKyAgICAgICAgICAgICAgICAgICBPVVRQVVRfU1RSSVBfVFJBSUxJTkdfV0hJVEVTUEFDRSkKKyAgaWYgKHJlc3VsdCBPUiAoX1JWSV9FWEFDVCBBTkQgTk9UIHZlcnNpb24gVkVSU0lPTl9FUVVBTCBleHBlY3RlZF92ZXJzaW9uKSBPUiAodmVyc2lvbiBWRVJTSU9OX0xFU1MgZXhwZWN0ZWRfdmVyc2lvbikpCisgICAgIyBpbnRlcnByZXRlciBub3QgdXNhYmxlIG9yIGhhcyB3cm9uZyBtYWpvciB2ZXJzaW9uCisgICAgaWYgKHJlc3VsdCkKKyAgICAgIHNldCAoX1J1YnlfSW50ZXJwcmV0ZXJfUkVBU09OX0ZBSUxVUkUgIkNhbm5vdCB1c2UgdGhlIGludGVycHJldGVyIFwiJHtSdWJ5X0VYRUNVVEFCTEV9XCIiKQorICAgIGVsc2UoKQorICAgICAgc2V0IChfUnVieV9JbnRlcnByZXRlcl9SRUFTT05fRkFJTFVSRSAiV3JvbmcgbWFqb3IgdmVyc2lvbiBmb3IgdGhlIGludGVycHJldGVyIFwiJHtSdWJ5X0VYRUNVVEFCTEV9XCIiKQorICAgIGVuZGlmKCkKKyAgICBzZXRfcHJvcGVydHkgKENBQ0hFIFJ1YnlfRVhFQ1VUQUJMRSBQUk9QRVJUWSBWQUxVRSAiUnVieV9FWEVDVVRBQkxFLU5PVEZPVU5EIikKKyAgICByZXR1cm4oKQorICBlbmRpZigpCisKK2VuZGZ1bmN0aW9uKCkKKword2hpbGUoMSkKKyAgIyBWaXJ0dWFsIGVudmlyb25tZW50cyBoYW5kbGluZworICBpZihfUnVieV9GSU5EX1ZJUlRVQUxFTlYgTUFUQ0hFUyAiXihGSVJTVHxPTkxZKSQiKQorICAgIGlmKF9SdWJ5X0RFQlVHX09VVFBVVCkKKyAgICAgIG1lc3NhZ2UoIkluc2lkZSBNYXRjaGVzIikKKyAgICBlbmRpZigpCisgICAgZmluZF9wcm9ncmFtIChSdWJ5X0VYRUNVVEFCTEUKKyAgICAgICAgICAgICAgICAgIE5BTUVTICR7X1J1YnlfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FU30KKyAgICAgICAgICAgICAgICAgIE5BTUVTX1BFUl9ESVIKKyAgICAgICAgICAgICAgICAgIFBBVEhTIEVOViBNWV9SVUJZX0hPTUUKKyAgICAgICAgICAgICAgICAgIFBBVEhfU1VGRklYRVMgYmluIFNjcmlwdHMKKyAgICAgICAgICAgICAgICAgIE5PX0NNQUtFX1BBVEgKKyAgICAgICAgICAgICAgICAgIE5PX0NNQUtFX0VOVklST05NRU5UX1BBVEgKKyAgICAgICAgICAgICAgICAgIE5PX1NZU1RFTV9FTlZJUk9OTUVOVF9QQVRICisgICAgICAgICAgICAgICAgICBOT19DTUFLRV9TWVNURU1fUEFUSCkKKworICAgIGlmKF9SdWJ5X0RFQlVHX09VVFBVVCkKKyAgICAgIG1lc3NhZ2UoIlJ1YnlfRVhFQ1VUQUJMRT0ke1J1YnlfRVhFQ1VUQUJMRX0iKQorICAgIGVuZGlmKCkKKworICAgIF9SVUJZX1ZBTElEQVRFX0lOVEVSUFJFVEVSICgke1J1YnlfRklORF9WRVJTSU9OfX0pCisgICAgaWYoUnVieV9FWEVDVVRBQkxFKQorICAgICAgYnJlYWsoKQorICAgIGVuZGlmKCkKKyAgICBpZihOT1QgX1J1YnlfRklORF9WSVJUVUFMRU5WIFNUUkVRVUFMICJPTkxZIikKKyAgICAgIGJyZWFrKCkKKyAgICBlbmRpZigpCisgIGVsc2VpZihfUnVieV9ERUJVR19PVVRQVVQpCisgICAgbWVzc2FnZSgiX1J1YnlfRklORF9WSVJUVUFMRU5WIGRvZXNuJ3QgbWF0Y2g6ICR7X1J1YnlfRklORF9WSVJUVUFMRU5WfSIpCisgIGVuZGlmKCkKKworICAjIHRyeSB1c2luZyBzdGFuZGFyZCBwYXRocworICBmaW5kX3Byb2dyYW0gKFJ1YnlfRVhFQ1VUQUJMRQorICAgICAgICAgICAgICAgIE5BTUVTICR7X1J1YnlfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FU30KKyAgICAgICAgICAgICAgICBOQU1FU19QRVJfRElSKQorICBfUlVCWV9WQUxJREFURV9JTlRFUlBSRVRFUiAoJHtSdWJ5X0ZJTkRfVkVSU0lPTn0pCisgIGlmIChSdWJ5X0VYRUNVVEFCTEUpCisgICAgYnJlYWsoKQorICBlbmRpZigpCisKKyAgYnJlYWsoKQorZW5kd2hpbGUoKQorCitpZihSdWJ5X0VYRUNVVEFCTEUgQU5EIE5PVCBSdWJ5X1ZFUlNJT05fTUFKT1IpCiAgIGZ1bmN0aW9uKF9SVUJZX0NPTkZJR19WQVIgUkJWQVIgT1VUVkFSKQotICAgIGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7UlVCWV9FWEVDVVRBQkxFfSAtciByYmNvbmZpZyAtZSAicHJpbnQgUmJDb25maWc6OkNPTkZJR1snJHtSQlZBUn0nXSIKLSAgICAgIFJFU1VMVF9WQVJJQUJMRSBfUlVCWV9TVUNDRVNTCi0gICAgICBPVVRQVVRfVkFSSUFCTEUgX1JVQllfT1VUUFVUCisgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtSdWJ5X0VYRUNVVEFCTEV9IC1yIHJiY29uZmlnIC1lICJwcmludCBSYkNvbmZpZzo6Q09ORklHWycke1JCVkFSfSddIgorICAgICAgUkVTVUxUX1ZBUklBQkxFIF9SdWJ5X1NVQ0NFU1MKKyAgICAgIE9VVFBVVF9WQVJJQUJMRSBfUnVieV9PVVRQVVQKICAgICAgIEVSUk9SX1FVSUVUKQotICAgIGlmKF9SVUJZX1NVQ0NFU1MgT1IgX1JVQllfT1VUUFVUIFNUUkVRVUFMICIiKQotICAgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9IC1yIHJiY29uZmlnIC1lICJwcmludCBDb25maWc6OkNPTkZJR1snJHtSQlZBUn0nXSIKLSAgICAgICAgUkVTVUxUX1ZBUklBQkxFIF9SVUJZX1NVQ0NFU1MKLSAgICAgICAgT1VUUFVUX1ZBUklBQkxFIF9SVUJZX09VVFBVVAorICAgIGlmKF9SdWJ5X1NVQ0NFU1MgT1IgX1J1YnlfT1VUUFVUIFNUUkVRVUFMICIiKQorICAgICAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtSdWJ5X0VYRUNVVEFCTEV9IC1yIHJiY29uZmlnIC1lICJwcmludCBDb25maWc6OkNPTkZJR1snJHtSQlZBUn0nXSIKKyAgICAgICAgUkVTVUxUX1ZBUklBQkxFIF9SdWJ5X1NVQ0NFU1MKKyAgICAgICAgT1VUUFVUX1ZBUklBQkxFIF9SdWJ5X09VVFBVVAogICAgICAgICBFUlJPUl9RVUlFVCkKICAgICBlbmRpZigpCi0gICAgc2V0KCR7T1VUVkFSfSAiJHtfUlVCWV9PVVRQVVR9IiBQQVJFTlRfU0NPUEUpCisgICAgc2V0KCR7T1VUVkFSfSAiJHtfUnVieV9PVVRQVVR9IiBQQVJFTlRfU0NPUEUpCiAgIGVuZGZ1bmN0aW9uKCkKIAogCiAgICMgcXVlcnkgdGhlIHJ1YnkgdmVyc2lvbgotICBfUlVCWV9DT05GSUdfVkFSKCJNQUpPUiIgUlVCWV9WRVJTSU9OX01BSk9SKQotICBfUlVCWV9DT05GSUdfVkFSKCJNSU5PUiIgUlVCWV9WRVJTSU9OX01JTk9SKQotICBfUlVCWV9DT05GSUdfVkFSKCJURUVOWSIgUlVCWV9WRVJTSU9OX1BBVENIKQorICBfUlVCWV9DT05GSUdfVkFSKCJNQUpPUiIgUnVieV9WRVJTSU9OX01BSk9SKQorICBfUlVCWV9DT05GSUdfVkFSKCJNSU5PUiIgUnVieV9WRVJTSU9OX01JTk9SKQorICBfUlVCWV9DT05GSUdfVkFSKCJURUVOWSIgUnVieV9WRVJTSU9OX1BBVENIKQogCiAgICMgcXVlcnkgdGhlIGRpZmZlcmVudCBkaXJlY3RvcmllcwotICBfUlVCWV9DT05GSUdfVkFSKCJhcmNoZGlyIiBSVUJZX0FSQ0hfRElSKQotICBfUlVCWV9DT05GSUdfVkFSKCJhcmNoIiBSVUJZX0FSQ0gpCi0gIF9SVUJZX0NPTkZJR19WQVIoInJ1YnloZHJkaXIiIFJVQllfSERSX0RJUikKLSAgX1JVQllfQ09ORklHX1ZBUigicnVieWFyY2hoZHJkaXIiIFJVQllfQVJDSEhEUl9ESVIpCi0gIF9SVUJZX0NPTkZJR19WQVIoImxpYmRpciIgUlVCWV9QT1NTSUJMRV9MSUJfRElSKQotICBfUlVCWV9DT05GSUdfVkFSKCJydWJ5bGliZGlyIiBSVUJZX1JVQllfTElCX0RJUikKKyAgX1JVQllfQ09ORklHX1ZBUigiYXJjaGRpciIgUnVieV9BUkNIX0RJUikKKyAgX1JVQllfQ09ORklHX1ZBUigiYXJjaCIgUnVieV9BUkNIKQorICBfUlVCWV9DT05GSUdfVkFSKCJydWJ5aGRyZGlyIiBSdWJ5X0hEUl9ESVIpCisgIF9SVUJZX0NPTkZJR19WQVIoInJ1YnlhcmNoaGRyZGlyIiBSdWJ5X0FSQ0hIRFJfRElSKQorICBfUlVCWV9DT05GSUdfVkFSKCJsaWJkaXIiIFJ1YnlfUE9TU0lCTEVfTElCX0RJUikKKyAgX1JVQllfQ09ORklHX1ZBUigicnVieWxpYmRpciIgUnVieV9SVUJZX0xJQl9ESVIpCiAKICAgIyBzaXRlX3J1YnkKLSAgX1JVQllfQ09ORklHX1ZBUigic2l0ZWFyY2hkaXIiIFJVQllfU0lURUFSQ0hfRElSKQotICBfUlVCWV9DT05GSUdfVkFSKCJzaXRlbGliZGlyIiBSVUJZX1NJVEVMSUJfRElSKQorICBfUlVCWV9DT05GSUdfVkFSKCJzaXRlYXJjaGRpciIgUnVieV9TSVRFQVJDSF9ESVIpCisgIF9SVUJZX0NPTkZJR19WQVIoInNpdGVsaWJkaXIiIFJ1YnlfU0lURUxJQl9ESVIpCiAKICAgIyB2ZW5kb3JfcnVieSBhdmFpbGFibGUgPwotICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gLXIgdmVuZG9yLXNwZWNpZmljIC1lICJwcmludCAndHJ1ZSciCi0gICAgT1VUUFVUX1ZBUklBQkxFIFJVQllfSEFTX1ZFTkRPUl9SVUJZICBFUlJPUl9RVUlFVCkKKyAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtSdWJ5X0VYRUNVVEFCTEV9IC1yIHZlbmRvci1zcGVjaWZpYyAtZSAicHJpbnQgJ3RydWUnIgorICAgIE9VVFBVVF9WQVJJQUJMRSBSdWJ5X0hBU19WRU5ET1JfUlVCWSAgRVJST1JfUVVJRVQpCiAKLSAgaWYoUlVCWV9IQVNfVkVORE9SX1JVQlkpCi0gICAgX1JVQllfQ09ORklHX1ZBUigidmVuZG9ybGliZGlyIiBSVUJZX1ZFTkRPUkxJQl9ESVIpCi0gICAgX1JVQllfQ09ORklHX1ZBUigidmVuZG9yYXJjaGRpciIgUlVCWV9WRU5ET1JBUkNIX0RJUikKKyAgaWYoUnVieV9IQVNfVkVORE9SX1JVQlkpCisgICAgX1JVQllfQ09ORklHX1ZBUigidmVuZG9ybGliZGlyIiBSdWJ5X1ZFTkRPUkxJQl9ESVIpCisgICAgX1JVQllfQ09ORklHX1ZBUigidmVuZG9yYXJjaGRpciIgUnVieV9WRU5ET1JBUkNIX0RJUikKICAgZW5kaWYoKQogCiAgICMgc2F2ZSB0aGUgcmVzdWx0cyBpbiB0aGUgY2FjaGUgc28gd2UgZG9uJ3QgaGF2ZSB0byBydW4gcnVieSB0aGUgbmV4dCB0aW1lIGFnYWluCi0gIHNldChSVUJZX1ZFUlNJT05fTUFKT1IgICAgJHtSVUJZX1ZFUlNJT05fTUFKT1J9ICAgIENBQ0hFIFBBVEggIlRoZSBSdWJ5IG1ham9yIHZlcnNpb24iIEZPUkNFKQotICBzZXQoUlVCWV9WRVJTSU9OX01JTk9SICAgICR7UlVCWV9WRVJTSU9OX01JTk9SfSAgICBDQUNIRSBQQVRIICJUaGUgUnVieSBtaW5vciB2ZXJzaW9uIiBGT1JDRSkKLSAgc2V0KFJVQllfVkVSU0lPTl9QQVRDSCAgICAke1JVQllfVkVSU0lPTl9QQVRDSH0gICAgQ0FDSEUgUEFUSCAiVGhlIFJ1YnkgcGF0Y2ggdmVyc2lvbiIgRk9SQ0UpCi0gIHNldChSVUJZX0FSQ0hfRElSICAgICAgICAgJHtSVUJZX0FSQ0hfRElSfSAgICAgICAgIENBQ0hFIFBBVEggIlRoZSBSdWJ5IGFyY2ggZGlyIiBGT1JDRSkKLSAgc2V0KFJVQllfSERSX0RJUiAgICAgICAgICAke1JVQllfSERSX0RJUn0gICAgICAgICAgQ0FDSEUgUEFUSCAiVGhlIFJ1YnkgaGVhZGVyIGRpciAoMS45KykiIEZPUkNFKQotICBzZXQoUlVCWV9BUkNISERSX0RJUiAgICAgICR7UlVCWV9BUkNISERSX0RJUn0gICAgICBDQUNIRSBQQVRIICJUaGUgUnVieSBhcmNoIGhlYWRlciBkaXIgKDIuMCspIiBGT1JDRSkKLSAgc2V0KFJVQllfUE9TU0lCTEVfTElCX0RJUiAke1JVQllfUE9TU0lCTEVfTElCX0RJUn0gQ0FDSEUgUEFUSCAiVGhlIFJ1YnkgbGliIGRpciIgRk9SQ0UpCi0gIHNldChSVUJZX1JVQllfTElCX0RJUiAgICAgJHtSVUJZX1JVQllfTElCX0RJUn0gICAgIENBQ0hFIFBBVEggIlRoZSBSdWJ5IHJ1YnktbGliIGRpciIgRk9SQ0UpCi0gIHNldChSVUJZX1NJVEVBUkNIX0RJUiAgICAgJHtSVUJZX1NJVEVBUkNIX0RJUn0gICAgIENBQ0hFIFBBVEggIlRoZSBSdWJ5IHNpdGUgYXJjaCBkaXIiIEZPUkNFKQotICBzZXQoUlVCWV9TSVRFTElCX0RJUiAgICAgICR7UlVCWV9TSVRFTElCX0RJUn0gICAgICBDQUNIRSBQQVRIICJUaGUgUnVieSBzaXRlIGxpYiBkaXIiIEZPUkNFKQotICBzZXQoUlVCWV9IQVNfVkVORE9SX1JVQlkgICR7UlVCWV9IQVNfVkVORE9SX1JVQll9ICBDQUNIRSBCT09MICJWZW5kb3IgUnVieSBpcyBhdmFpbGFibGUiIEZPUkNFKQotICBzZXQoUlVCWV9WRU5ET1JBUkNIX0RJUiAgICR7UlVCWV9WRU5ET1JBUkNIX0RJUn0gICBDQUNIRSBQQVRIICJUaGUgUnVieSB2ZW5kb3IgYXJjaCBkaXIiIEZPUkNFKQotICBzZXQoUlVCWV9WRU5ET1JMSUJfRElSICAgICR7UlVCWV9WRU5ET1JMSUJfRElSfSAgICBDQUNIRSBQQVRIICJUaGUgUnVieSB2ZW5kb3IgbGliIGRpciIgRk9SQ0UpCisgIHNldChSdWJ5X1ZFUlNJT05fTUFKT1IgICAgJHtSdWJ5X1ZFUlNJT05fTUFKT1J9ICAgIENBQ0hFIFBBVEggIlRoZSBSdWJ5IG1ham9yIHZlcnNpb24iIEZPUkNFKQorICBzZXQoUnVieV9WRVJTSU9OX01JTk9SICAgICR7UnVieV9WRVJTSU9OX01JTk9SfSAgICBDQUNIRSBQQVRIICJUaGUgUnVieSBtaW5vciB2ZXJzaW9uIiBGT1JDRSkKKyAgc2V0KFJ1YnlfVkVSU0lPTl9QQVRDSCAgICAke1J1YnlfVkVSU0lPTl9QQVRDSH0gICAgQ0FDSEUgUEFUSCAiVGhlIFJ1YnkgcGF0Y2ggdmVyc2lvbiIgRk9SQ0UpCisgIHNldChSdWJ5X0FSQ0hfRElSICAgICAgICAgJHtSdWJ5X0FSQ0hfRElSfSAgICAgICAgIENBQ0hFIFBBVEggIlRoZSBSdWJ5IGFyY2ggZGlyIiBGT1JDRSkKKyAgc2V0KFJ1YnlfSERSX0RJUiAgICAgICAgICAke1J1YnlfSERSX0RJUn0gICAgICAgICAgQ0FDSEUgUEFUSCAiVGhlIFJ1YnkgaGVhZGVyIGRpciAoMS45KykiIEZPUkNFKQorICBzZXQoUnVieV9BUkNISERSX0RJUiAgICAgICR7UnVieV9BUkNISERSX0RJUn0gICAgICBDQUNIRSBQQVRIICJUaGUgUnVieSBhcmNoIGhlYWRlciBkaXIgKDIuMCspIiBGT1JDRSkKKyAgc2V0KFJ1YnlfUE9TU0lCTEVfTElCX0RJUiAke1J1YnlfUE9TU0lCTEVfTElCX0RJUn0gQ0FDSEUgUEFUSCAiVGhlIFJ1YnkgbGliIGRpciIgRk9SQ0UpCisgIHNldChSdWJ5X1JVQllfTElCX0RJUiAgICAgJHtSdWJ5X1JVQllfTElCX0RJUn0gICAgIENBQ0hFIFBBVEggIlRoZSBSdWJ5IHJ1YnktbGliIGRpciIgRk9SQ0UpCisgIHNldChSdWJ5X1NJVEVBUkNIX0RJUiAgICAgJHtSdWJ5X1NJVEVBUkNIX0RJUn0gICAgIENBQ0hFIFBBVEggIlRoZSBSdWJ5IHNpdGUgYXJjaCBkaXIiIEZPUkNFKQorICBzZXQoUnVieV9TSVRFTElCX0RJUiAgICAgICR7UnVieV9TSVRFTElCX0RJUn0gICAgICBDQUNIRSBQQVRIICJUaGUgUnVieSBzaXRlIGxpYiBkaXIiIEZPUkNFKQorICBzZXQoUnVieV9IQVNfVkVORE9SX1JVQlkgICR7UnVieV9IQVNfVkVORE9SX1JVQll9ICBDQUNIRSBCT09MICJWZW5kb3IgUnVieSBpcyBhdmFpbGFibGUiIEZPUkNFKQorICBzZXQoUnVieV9WRU5ET1JBUkNIX0RJUiAgICR7UnVieV9WRU5ET1JBUkNIX0RJUn0gICBDQUNIRSBQQVRIICJUaGUgUnVieSB2ZW5kb3IgYXJjaCBkaXIiIEZPUkNFKQorICBzZXQoUnVieV9WRU5ET1JMSUJfRElSICAgICR7UnVieV9WRU5ET1JMSUJfRElSfSAgICBDQUNIRSBQQVRIICJUaGUgUnVieSB2ZW5kb3IgbGliIGRpciIgRk9SQ0UpCiAKICAgbWFya19hc19hZHZhbmNlZCgKLSAgICBSVUJZX0FSQ0hfRElSCi0gICAgUlVCWV9BUkNICi0gICAgUlVCWV9IRFJfRElSCi0gICAgUlVCWV9BUkNISERSX0RJUgotICAgIFJVQllfUE9TU0lCTEVfTElCX0RJUgotICAgIFJVQllfUlVCWV9MSUJfRElSCi0gICAgUlVCWV9TSVRFQVJDSF9ESVIKLSAgICBSVUJZX1NJVEVMSUJfRElSCi0gICAgUlVCWV9IQVNfVkVORE9SX1JVQlkKLSAgICBSVUJZX1ZFTkRPUkFSQ0hfRElSCi0gICAgUlVCWV9WRU5ET1JMSUJfRElSCi0gICAgUlVCWV9WRVJTSU9OX01BSk9SCi0gICAgUlVCWV9WRVJTSU9OX01JTk9SCi0gICAgUlVCWV9WRVJTSU9OX1BBVENICisgICAgUnVieV9BUkNIX0RJUgorICAgIFJ1YnlfQVJDSAorICAgIFJ1YnlfSERSX0RJUgorICAgIFJ1YnlfQVJDSEhEUl9ESVIKKyAgICBSdWJ5X1BPU1NJQkxFX0xJQl9ESVIKKyAgICBSdWJ5X1JVQllfTElCX0RJUgorICAgIFJ1YnlfU0lURUFSQ0hfRElSCisgICAgUnVieV9TSVRFTElCX0RJUgorICAgIFJ1YnlfSEFTX1ZFTkRPUl9SVUJZCisgICAgUnVieV9WRU5ET1JBUkNIX0RJUgorICAgIFJ1YnlfVkVORE9STElCX0RJUgorICAgIFJ1YnlfVkVSU0lPTl9NQUpPUgorICAgIFJ1YnlfVkVSU0lPTl9NSU5PUgorICAgIFJ1YnlfVkVSU0lPTl9QQVRDSAogICAgICkKIGVuZGlmKCkKIAotIyBJbiBjYXNlIFJVQllfRVhFQ1VUQUJMRSBjb3VsZCBub3QgYmUgZXhlY3V0ZWQgKGUuZy4gY3Jvc3MgY29tcGlsaW5nKQorIyBJbiBjYXNlIFJ1YnlfRVhFQ1VUQUJMRSBjb3VsZCBub3QgYmUgZXhlY3V0ZWQgKGUuZy4gY3Jvc3MgY29tcGlsaW5nKQogIyB0cnkgdG8gZGV0ZWN0IHdoaWNoIHZlcnNpb24gd2UgZm91bmQuIFRoaXMgaXMgbm90IHRvbyBnb29kLgotaWYoUlVCWV9FWEVDVVRBQkxFIEFORCBOT1QgUlVCWV9WRVJTSU9OX01BSk9SKQoraWYoUnVieV9FWEVDVVRBQkxFIEFORCBOT1QgUnVieV9WRVJTSU9OX01BSk9SKQogICAjIGJ5IGRlZmF1bHQgYXNzdW1lIDEuOC4wCi0gIHNldChSVUJZX1ZFUlNJT05fTUFKT1IgMSkKLSAgc2V0KFJVQllfVkVSU0lPTl9NSU5PUiA4KQotICBzZXQoUlVCWV9WRVJTSU9OX1BBVENIIDApCisgIHNldChSdWJ5X1ZFUlNJT05fTUFKT1IgMSkKKyAgc2V0KFJ1YnlfVkVSU0lPTl9NSU5PUiA4KQorICBzZXQoUnVieV9WRVJTSU9OX1BBVENIIDApCiAgICMgY2hlY2sgd2hldGhlciB3ZSBmb3VuZCAxLjkueAotICBpZigke1JVQllfRVhFQ1VUQUJMRX0gTUFUQ0hFUyAicnVieTFcXC4/OSIpCi0gICAgc2V0KFJVQllfVkVSU0lPTl9NQUpPUiAxKQotICAgIHNldChSVUJZX1ZFUlNJT05fTUlOT1IgOSkKKyAgaWYoJHtSdWJ5X0VYRUNVVEFCTEV9IE1BVENIRVMgInJ1YnkxXFwuPzkiKQorICAgIHNldChSdWJ5X1ZFUlNJT05fTUFKT1IgMSkKKyAgICBzZXQoUnVieV9WRVJTSU9OX01JTk9SIDkpCiAgIGVuZGlmKCkKICAgIyBjaGVjayB3aGV0aGVyIHdlIGZvdW5kIDIuMC54Ci0gIGlmKCR7UlVCWV9FWEVDVVRBQkxFfSBNQVRDSEVTICJydWJ5MlxcLj8wIikKLSAgICBzZXQoUlVCWV9WRVJTSU9OX01BSk9SIDIpCi0gICAgc2V0KFJVQllfVkVSU0lPTl9NSU5PUiAwKQorICBpZigke1J1YnlfRVhFQ1VUQUJMRX0gTUFUQ0hFUyAicnVieTJcXC4/MCIpCisgICAgc2V0KFJ1YnlfVkVSU0lPTl9NQUpPUiAyKQorICAgIHNldChSdWJ5X1ZFUlNJT05fTUlOT1IgMCkKICAgZW5kaWYoKQogICAjIGNoZWNrIHdoZXRoZXIgd2UgZm91bmQgMi4xLngKLSAgaWYoJHtSVUJZX0VYRUNVVEFCTEV9IE1BVENIRVMgInJ1YnkyXFwuPzEiKQotICAgIHNldChSVUJZX1ZFUlNJT05fTUFKT1IgMikKLSAgICBzZXQoUlVCWV9WRVJTSU9OX01JTk9SIDEpCisgIGlmKCR7UnVieV9FWEVDVVRBQkxFfSBNQVRDSEVTICJydWJ5MlxcLj8xIikKKyAgICBzZXQoUnVieV9WRVJTSU9OX01BSk9SIDIpCisgICAgc2V0KFJ1YnlfVkVSU0lPTl9NSU5PUiAxKQogICBlbmRpZigpCiAgICMgY2hlY2sgd2hldGhlciB3ZSBmb3VuZCAyLjIueAotICBpZigke1JVQllfRVhFQ1VUQUJMRX0gTUFUQ0hFUyAicnVieTJcXC4/MiIpCi0gICAgc2V0KFJVQllfVkVSU0lPTl9NQUpPUiAyKQotICAgIHNldChSVUJZX1ZFUlNJT05fTUlOT1IgMikKKyAgaWYoJHtSdWJ5X0VYRUNVVEFCTEV9IE1BVENIRVMgInJ1YnkyXFwuPzIiKQorICAgIHNldChSdWJ5X1ZFUlNJT05fTUFKT1IgMikKKyAgICBzZXQoUnVieV9WRVJTSU9OX01JTk9SIDIpCiAgIGVuZGlmKCkKICAgIyBjaGVjayB3aGV0aGVyIHdlIGZvdW5kIDIuMy54Ci0gIGlmKCR7UlVCWV9FWEVDVVRBQkxFfSBNQVRDSEVTICJydWJ5MlxcLj8zIikKLSAgICBzZXQoUlVCWV9WRVJTSU9OX01BSk9SIDIpCi0gICAgc2V0KFJVQllfVkVSU0lPTl9NSU5PUiAzKQorICBpZigke1J1YnlfRVhFQ1VUQUJMRX0gTUFUQ0hFUyAicnVieTJcXC4/MyIpCisgICAgc2V0KFJ1YnlfVkVSU0lPTl9NQUpPUiAyKQorICAgIHNldChSdWJ5X1ZFUlNJT05fTUlOT1IgMykKICAgZW5kaWYoKQogICAjIGNoZWNrIHdoZXRoZXIgd2UgZm91bmQgMi40LngKLSAgaWYoJHtSVUJZX0VYRUNVVEFCTEV9IE1BVENIRVMgInJ1YnkyXFwuPzQiKQotICAgIHNldChSVUJZX1ZFUlNJT05fTUFKT1IgMikKLSAgICBzZXQoUlVCWV9WRVJTSU9OX01JTk9SIDQpCisgIGlmKCR7UnVieV9FWEVDVVRBQkxFfSBNQVRDSEVTICJydWJ5MlxcLj80IikKKyAgICBzZXQoUnVieV9WRVJTSU9OX01BSk9SIDIpCisgICAgc2V0KFJ1YnlfVkVSU0lPTl9NSU5PUiA0KQorICBlbmRpZigpCisgICMgY2hlY2sgd2hldGhlciB3ZSBmb3VuZCAyLjUueAorICBpZigke1J1YnlfRVhFQ1VUQUJMRX0gTUFUQ0hFUyAicnVieTJcXC4/NSIpCisgICAgc2V0KFJ1YnlfVkVSU0lPTl9NQUpPUiAyKQorICAgIHNldChSdWJ5X1ZFUlNJT05fTUlOT1IgNSkKKyAgZW5kaWYoKQorICAjIGNoZWNrIHdoZXRoZXIgd2UgZm91bmQgMi42LngKKyAgaWYoJHtSdWJ5X0VYRUNVVEFCTEV9IE1BVENIRVMgInJ1YnkyXFwuPzYiKQorICAgIHNldChSdWJ5X1ZFUlNJT05fTUFKT1IgMikKKyAgICBzZXQoUnVieV9WRVJTSU9OX01JTk9SIDYpCisgIGVuZGlmKCkKKyAgIyBjaGVjayB3aGV0aGVyIHdlIGZvdW5kIDIuNy54CisgIGlmKCR7UnVieV9FWEVDVVRBQkxFfSBNQVRDSEVTICJydWJ5MlxcLj83IikKKyAgICBzZXQoUnVieV9WRVJTSU9OX01BSk9SIDIpCisgICAgc2V0KFJ1YnlfVkVSU0lPTl9NSU5PUiA3KQogICBlbmRpZigpCiBlbmRpZigpCiAKLWlmKFJVQllfVkVSU0lPTl9NQUpPUikKLSAgc2V0KFJVQllfVkVSU0lPTiAiJHtSVUJZX1ZFUlNJT05fTUFKT1J9LiR7UlVCWV9WRVJTSU9OX01JTk9SfS4ke1JVQllfVkVSU0lPTl9QQVRDSH0iKQotICBzZXQoX1JVQllfVkVSU0lPTl9TSE9SVCAiJHtSVUJZX1ZFUlNJT05fTUFKT1J9LiR7UlVCWV9WRVJTSU9OX01JTk9SfSIpCi0gIHNldChfUlVCWV9WRVJTSU9OX1NIT1JUX05PRE9UICIke1JVQllfVkVSU0lPTl9NQUpPUn0ke1JVQllfVkVSU0lPTl9NSU5PUn0iKQotICBzZXQoX1JVQllfTk9ET1RfVkVSU0lPTiAiJHtSVUJZX1ZFUlNJT05fTUFKT1J9JHtSVUJZX1ZFUlNJT05fTUlOT1J9JHtSVUJZX1ZFUlNJT05fUEFUQ0h9IikKK2lmKFJ1YnlfVkVSU0lPTl9NQUpPUikKKyAgc2V0KFJ1YnlfVkVSU0lPTiAiJHtSdWJ5X1ZFUlNJT05fTUFKT1J9LiR7UnVieV9WRVJTSU9OX01JTk9SfS4ke1J1YnlfVkVSU0lPTl9QQVRDSH0iKQorICBzZXQoX1J1YnlfVkVSU0lPTl9TSE9SVCAiJHtSdWJ5X1ZFUlNJT05fTUFKT1J9LiR7UnVieV9WRVJTSU9OX01JTk9SfSIpCisgIHNldChfUnVieV9WRVJTSU9OX1NIT1JUX05PRE9UICIke1J1YnlfVkVSU0lPTl9NQUpPUn0ke1J1YnlfVkVSU0lPTl9NSU5PUn0iKQorICBzZXQoX1J1YnlfTk9ET1RfVkVSU0lPTiAiJHtSdWJ5X1ZFUlNJT05fTUFKT1J9JHtSdWJ5X1ZFUlNJT05fTUlOT1J9JHtSdWJ5X1ZFUlNJT05fUEFUQ0h9IikKIGVuZGlmKCkKIAotZmluZF9wYXRoKFJVQllfSU5DTFVERV9ESVIKKyMgRklYTUU6IEN1cnJlbnRseSB3ZSByZXF1aXJlIGJvdGggdGhlIGludGVycHJldGVyIGFuZCBkZXZlbG9wbWVudCBjb21wb25lbnRzIHRvIGJlIGZvdW5kCisjIGluIG9yZGVyIHRvIHVzZSBlaXRoZXIuICBTZWUgaXNzdWUgIzIwNDc0LgorZmluZF9wYXRoKFJ1YnlfSU5DTFVERV9ESVIKICAgTkFNRVMgcnVieS5oCiAgIEhJTlRTCi0gICAgJHtSVUJZX0hEUl9ESVJ9Ci0gICAgJHtSVUJZX0FSQ0hfRElSfQotICAgIC91c3IvbGliL3J1YnkvJHtfUlVCWV9WRVJTSU9OX1NIT1JUfS9pNTg2LWxpbnV4LWdudS8KKyAgICAke1J1YnlfSERSX0RJUn0KKyAgICAke1J1YnlfQVJDSF9ESVJ9CisgICAgL3Vzci9saWIvcnVieS8ke19SdWJ5X1ZFUlNJT05fU0hPUlR9L2k1ODYtbGludXgtZ251LwogKQogCi1zZXQoUlVCWV9JTkNMVURFX0RJUlMgJHtSVUJZX0lOQ0xVREVfRElSfSApCitzZXQoUnVieV9JTkNMVURFX0RJUlMgJHtSdWJ5X0lOQ0xVREVfRElSfSkKIAogIyBpZiBydWJ5ID4gMS44IGlzIHJlcXVpcmVkIG9yIGlmIHJ1YnkgPiAxLjggd2FzIGZvdW5kLCBzZWFyY2ggZm9yIHRoZSBjb25maWcuaCBkaXIKLWlmKCAiJHtSdWJ5X0ZJTkRfVkVSU0lPTl9TSE9SVF9OT0RPVH0iIEdSRUFURVIgMTggIE9SICAiJHtfUlVCWV9WRVJTSU9OX1NIT1JUX05PRE9UfSIgR1JFQVRFUiAxOCAgT1IgIFJVQllfSERSX0RJUikKLSAgZmluZF9wYXRoKFJVQllfQ09ORklHX0lOQ0xVREVfRElSCitpZiggUnVieV9GSU5EX1ZFUlNJT04gVkVSU0lPTl9HUkVBVEVSX0VRVUFMICIxLjkiICBPUiAgUnVieV9WRVJTSU9OIFZFUlNJT05fR1JFQVRFUl9FUVVBTCAiMS45IiAgT1IgIFJ1YnlfSERSX0RJUikKKyAgZmluZF9wYXRoKFJ1YnlfQ09ORklHX0lOQ0xVREVfRElSCiAgICAgTkFNRVMgcnVieS9jb25maWcuaCAgY29uZmlnLmgKICAgICBISU5UUwotICAgICAgJHtSVUJZX0hEUl9ESVJ9LyR7UlVCWV9BUkNIfQotICAgICAgJHtSVUJZX0FSQ0hfRElSfQotICAgICAgJHtSVUJZX0FSQ0hIRFJfRElSfQorICAgICAgJHtSdWJ5X0hEUl9ESVJ9LyR7UnVieV9BUkNIfQorICAgICAgJHtSdWJ5X0FSQ0hfRElSfQorICAgICAgJHtSdWJ5X0FSQ0hIRFJfRElSfQogICApCiAKLSAgc2V0KFJVQllfSU5DTFVERV9ESVJTICR7UlVCWV9JTkNMVURFX0RJUlN9ICR7UlVCWV9DT05GSUdfSU5DTFVERV9ESVJ9ICkKKyAgc2V0KFJ1YnlfSU5DTFVERV9ESVJTICR7UnVieV9JTkNMVURFX0RJUlN9ICR7UnVieV9DT05GSUdfSU5DTFVERV9ESVJ9ICkKIGVuZGlmKCkKIAogCiAjIERldGVybWluZSB0aGUgbGlzdCBvZiBwb3NzaWJsZSBuYW1lcyBmb3IgdGhlIHJ1YnkgbGlicmFyeQotc2V0KF9SVUJZX1BPU1NJQkxFX0xJQl9OQU1FUyBydWJ5IHJ1Ynktc3RhdGljIHJ1Ynkke19SVUJZX1ZFUlNJT05fU0hPUlR9IHJ1Ynkke19SVUJZX1ZFUlNJT05fU0hPUlRfTk9ET1R9IHJ1YnktJHtfUlVCWV9WRVJTSU9OX1NIT1JUfSBydWJ5LSR7UlVCWV9WRVJTSU9OfSkKK3NldChfUnVieV9QT1NTSUJMRV9MSUJfTkFNRVMgcnVieSBydWJ5LXN0YXRpYyBydWJ5JHtfUnVieV9WRVJTSU9OX1NIT1JUfSBydWJ5JHtfUnVieV9WRVJTSU9OX1NIT1JUX05PRE9UfSBydWJ5LSR7X1J1YnlfVkVSU0lPTl9TSE9SVH0gcnVieS0ke1J1YnlfVkVSU0lPTn0pCiAKIGlmKFdJTjMyKQotICBzZXQoIF9SVUJZX01TVkNfUlVOVElNRSAiIiApCi0gIGlmKCBNU1ZDX1ZFUlNJT04gRVFVQUwgMTIwMCApCi0gICAgc2V0KCBfUlVCWV9NU1ZDX1JVTlRJTUUgIjYwIiApCi0gIGVuZGlmKCkKLSAgaWYoIE1TVkNfVkVSU0lPTiBFUVVBTCAxMzAwICkKLSAgICBzZXQoIF9SVUJZX01TVkNfUlVOVElNRSAiNzAiICkKLSAgZW5kaWYoKQotICBpZiggTVNWQ19WRVJTSU9OIEVRVUFMIDEzMTAgKQotICAgIHNldCggX1JVQllfTVNWQ19SVU5USU1FICI3MSIgKQotICBlbmRpZigpCi0gIGlmKCBNU1ZDX1ZFUlNJT04gRVFVQUwgMTQwMCApCi0gICAgc2V0KCBfUlVCWV9NU1ZDX1JVTlRJTUUgIjgwIiApCi0gIGVuZGlmKCkKLSAgaWYoIE1TVkNfVkVSU0lPTiBFUVVBTCAxNTAwICkKLSAgICBzZXQoIF9SVUJZX01TVkNfUlVOVElNRSAiOTAiICkKKyAgaWYoTVNWQ19UT09MU0VUX1ZFUlNJT04pCisgICAgc2V0KF9SdWJ5X01TVkNfUlVOVElNRSAiJHtNU1ZDX1RPT0xTRVRfVkVSU0lPTn0iKQorICBlbHNlKCkKKyAgICBzZXQoX1J1YnlfTVNWQ19SVU5USU1FICIiKQogICBlbmRpZigpCiAKLSAgc2V0KF9SVUJZX0FSQ0hfUFJFRklYICIiKQorICBzZXQoX1J1YnlfQVJDSF9QUkVGSVggIiIpCiAgIGlmKENNQUtFX1NJWkVPRl9WT0lEX1AgRVFVQUwgOCkKLSAgICBzZXQoX1JVQllfQVJDSF9QUkVGSVggIng2NC0iKQorICAgIHNldChfUnVieV9BUkNIX1BSRUZJWCAieDY0LSIpCiAgIGVuZGlmKCkKIAotICBsaXN0KEFQUEVORCBfUlVCWV9QT1NTSUJMRV9MSUJfTkFNRVMKLSAgICAgICAgICAgICAiJHtfUlVCWV9BUkNIX1BSRUZJWH1tc3ZjciR7X1JVQllfTVNWQ19SVU5USU1FfS1ydWJ5JHtfUlVCWV9OT0RPVF9WRVJTSU9OfSIKLSAgICAgICAgICAgICAiJHtfUlVCWV9BUkNIX1BSRUZJWH1tc3ZjciR7X1JVQllfTVNWQ19SVU5USU1FfS1ydWJ5JHtfUlVCWV9OT0RPVF9WRVJTSU9OfS1zdGF0aWMiCi0gICAgICAgICAgICAgIiR7X1JVQllfQVJDSF9QUkVGSVh9bXN2Y3J0LXJ1Ynkke19SVUJZX05PRE9UX1ZFUlNJT059IgotICAgICAgICAgICAgICIke19SVUJZX0FSQ0hfUFJFRklYfW1zdmNydC1ydWJ5JHtfUlVCWV9OT0RPVF9WRVJTSU9OfS1zdGF0aWMiICkKKyAgbGlzdChBUFBFTkQgX1J1YnlfUE9TU0lCTEVfTElCX05BTUVTCisgICAgICAgICAgICAgIiR7X1J1YnlfQVJDSF9QUkVGSVh9bXN2Y3Ike19SdWJ5X01TVkNfUlVOVElNRX0tcnVieSR7X1J1YnlfTk9ET1RfVkVSU0lPTn0iCisgICAgICAgICAgICAgIiR7X1J1YnlfQVJDSF9QUkVGSVh9bXN2Y3Ike19SdWJ5X01TVkNfUlVOVElNRX0tcnVieSR7X1J1YnlfTk9ET1RfVkVSU0lPTn0tc3RhdGljIgorICAgICAgICAgICAgICIke19SdWJ5X0FSQ0hfUFJFRklYfW1zdmNydC1ydWJ5JHtfUnVieV9OT0RPVF9WRVJTSU9OfSIKKyAgICAgICAgICAgICAiJHtfUnVieV9BUkNIX1BSRUZJWH1tc3ZjcnQtcnVieSR7X1J1YnlfTk9ET1RfVkVSU0lPTn0tc3RhdGljIiApCiBlbmRpZigpCiAKLWZpbmRfbGlicmFyeShSVUJZX0xJQlJBUlkgTkFNRVMgJHtfUlVCWV9QT1NTSUJMRV9MSUJfTkFNRVN9IEhJTlRTICR7UlVCWV9QT1NTSUJMRV9MSUJfRElSfSApCitmaW5kX2xpYnJhcnkoUnVieV9MSUJSQVJZIE5BTUVTICR7X1J1YnlfUE9TU0lCTEVfTElCX05BTUVTfSBISU5UUyAke1J1YnlfUE9TU0lCTEVfTElCX0RJUn0gKQogCi1pbmNsdWRlKCR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MuY21ha2UpCi1zZXQoX1JVQllfUkVRVUlSRURfVkFSUyBSVUJZX0VYRUNVVEFCTEUgUlVCWV9JTkNMVURFX0RJUiBSVUJZX0xJQlJBUlkpCi1pZihfUlVCWV9WRVJTSU9OX1NIT1JUX05PRE9UIEdSRUFURVIgMTgpCi0gIGxpc3QoQVBQRU5EIF9SVUJZX1JFUVVJUkVEX1ZBUlMgUlVCWV9DT05GSUdfSU5DTFVERV9ESVIpCitzZXQoX1J1YnlfUkVRVUlSRURfVkFSUyBSdWJ5X0VYRUNVVEFCTEUgUnVieV9JTkNMVURFX0RJUiBSdWJ5X0xJQlJBUlkpCitpZihfUnVieV9WRVJTSU9OX1NIT1JUX05PRE9UIEdSRUFURVIgMTgpCisgIGxpc3QoQVBQRU5EIF9SdWJ5X1JFUVVJUkVEX1ZBUlMgUnVieV9DT05GSUdfSU5DTFVERV9ESVIpCiBlbmRpZigpCiAKLWlmKF9SVUJZX0RFQlVHX09VVFBVVCkKK2lmKF9SdWJ5X0RFQlVHX09VVFBVVCkKICAgbWVzc2FnZShTVEFUVVMgIi0tLS0tLS0tRmluZFJ1YnkuY21ha2UgZGVidWctLS0tLS0tLS0tLS0iKQotICBtZXNzYWdlKFNUQVRVUyAiX1JVQllfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FUzogJHtfUlVCWV9QT1NTSUJMRV9FWEVDVVRBQkxFX05BTUVTfSIpCi0gIG1lc3NhZ2UoU1RBVFVTICJfUlVCWV9QT1NTSUJMRV9MSUJfTkFNRVM6ICR7X1JVQllfUE9TU0lCTEVfTElCX05BTUVTfSIpCi0gIG1lc3NhZ2UoU1RBVFVTICJSVUJZX0FSQ0hfRElSOiAke1JVQllfQVJDSF9ESVJ9IikKLSAgbWVzc2FnZShTVEFUVVMgIlJVQllfSERSX0RJUjogJHtSVUJZX0hEUl9ESVJ9IikKLSAgbWVzc2FnZShTVEFUVVMgIlJVQllfUE9TU0lCTEVfTElCX0RJUjogJHtSVUJZX1BPU1NJQkxFX0xJQl9ESVJ9IikKLSAgbWVzc2FnZShTVEFUVVMgIkZvdW5kIFJVQllfVkVSU0lPTjogXCIke1JVQllfVkVSU0lPTn1cIiAsIHNob3J0OiBcIiR7X1JVQllfVkVSU0lPTl9TSE9SVH1cIiwgbm9kb3Q6IFwiJHtfUlVCWV9WRVJTSU9OX1NIT1JUX05PRE9UfVwiIikKLSAgbWVzc2FnZShTVEFUVVMgIl9SVUJZX1JFUVVJUkVEX1ZBUlM6ICR7X1JVQllfUkVRVUlSRURfVkFSU30iKQotICBtZXNzYWdlKFNUQVRVUyAiUlVCWV9FWEVDVVRBQkxFOiAke1JVQllfRVhFQ1VUQUJMRX0iKQotICBtZXNzYWdlKFNUQVRVUyAiUlVCWV9MSUJSQVJZOiAke1JVQllfTElCUkFSWX0iKQotICBtZXNzYWdlKFNUQVRVUyAiUlVCWV9JTkNMVURFX0RJUjogJHtSVUJZX0lOQ0xVREVfRElSfSIpCi0gIG1lc3NhZ2UoU1RBVFVTICJSVUJZX0NPTkZJR19JTkNMVURFX0RJUjogJHtSVUJZX0NPTkZJR19JTkNMVURFX0RJUn0iKQorICBtZXNzYWdlKFNUQVRVUyAiX1J1YnlfUE9TU0lCTEVfRVhFQ1VUQUJMRV9OQU1FUzogJHtfUnVieV9QT1NTSUJMRV9FWEVDVVRBQkxFX05BTUVTfSIpCisgIG1lc3NhZ2UoU1RBVFVTICJfUnVieV9QT1NTSUJMRV9MSUJfTkFNRVM6ICR7X1J1YnlfUE9TU0lCTEVfTElCX05BTUVTfSIpCisgIG1lc3NhZ2UoU1RBVFVTICJSdWJ5X0FSQ0hfRElSOiAke1J1YnlfQVJDSF9ESVJ9IikKKyAgbWVzc2FnZShTVEFUVVMgIlJ1YnlfSERSX0RJUjogJHtSdWJ5X0hEUl9ESVJ9IikKKyAgbWVzc2FnZShTVEFUVVMgIlJ1YnlfUE9TU0lCTEVfTElCX0RJUjogJHtSdWJ5X1BPU1NJQkxFX0xJQl9ESVJ9IikKKyAgbWVzc2FnZShTVEFUVVMgIkZvdW5kIFJ1YnlfVkVSU0lPTjogXCIke1J1YnlfVkVSU0lPTn1cIiAsIHNob3J0OiBcIiR7X1J1YnlfVkVSU0lPTl9TSE9SVH1cIiwgbm9kb3Q6IFwiJHtfUnVieV9WRVJTSU9OX1NIT1JUX05PRE9UfVwiIikKKyAgbWVzc2FnZShTVEFUVVMgIl9SdWJ5X1JFUVVJUkVEX1ZBUlM6ICR7X1J1YnlfUkVRVUlSRURfVkFSU30iKQorICBtZXNzYWdlKFNUQVRVUyAiUnVieV9FWEVDVVRBQkxFOiAke1J1YnlfRVhFQ1VUQUJMRX0iKQorICBtZXNzYWdlKFNUQVRVUyAiUnVieV9MSUJSQVJZOiAke1J1YnlfTElCUkFSWX0iKQorICBtZXNzYWdlKFNUQVRVUyAiUnVieV9JTkNMVURFX0RJUjogJHtSdWJ5X0lOQ0xVREVfRElSfSIpCisgIG1lc3NhZ2UoU1RBVFVTICJSdWJ5X0NPTkZJR19JTkNMVURFX0RJUjogJHtSdWJ5X0NPTkZJR19JTkNMVURFX0RJUn0iKQogICBtZXNzYWdlKFNUQVRVUyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0iKQogZW5kaWYoKQogCi1GSU5EX1BBQ0tBR0VfSEFORExFX1NUQU5EQVJEX0FSR1MoUnVieSAgUkVRVUlSRURfVkFSUyAgJHtfUlVCWV9SRVFVSVJFRF9WQVJTfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUlNJT05fVkFSIFJVQllfVkVSU0lPTiApCitpbmNsdWRlKCR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MuY21ha2UpCitGSU5EX1BBQ0tBR0VfSEFORExFX1NUQU5EQVJEX0FSR1MoUnVieSAgUkVRVUlSRURfVkFSUyAgJHtfUnVieV9SRVFVSVJFRF9WQVJTfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUlNJT05fVkFSIFJ1YnlfVkVSU0lPTiApCisKK2lmKFJ1YnlfRk9VTkQpCisgIHNldChSdWJ5X0xJQlJBUklFUyAke1J1YnlfTElCUkFSWX0pCitlbmRpZigpCiAKIG1hcmtfYXNfYWR2YW5jZWQoCi0gIFJVQllfRVhFQ1VUQUJMRQotICBSVUJZX0xJQlJBUlkKLSAgUlVCWV9JTkNMVURFX0RJUgotICBSVUJZX0NPTkZJR19JTkNMVURFX0RJUgorICBSdWJ5X0VYRUNVVEFCTEUKKyAgUnVieV9MSUJSQVJZCisgIFJ1YnlfSU5DTFVERV9ESVIKKyAgUnVieV9DT05GSUdfSU5DTFVERV9ESVIKICAgKQogCi0jIFNldCBzb21lIHZhcmlhYmxlcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb24gb2YgdGhpcyBmaWxlCi1zZXQoUlVCWV9QT1NTSUJMRV9MSUJfUEFUSCAke1JVQllfUE9TU0lCTEVfTElCX0RJUn0pCi1zZXQoUlVCWV9SVUJZX0xJQl9QQVRIICR7UlVCWV9SVUJZX0xJQl9ESVJ9KQotc2V0KFJVQllfSU5DTFVERV9QQVRIICR7UlVCWV9JTkNMVURFX0RJUlN9KQorIyBTZXQgc29tZSB2YXJpYWJsZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoaXMgZmlsZSAobm8gbmVlZCB0byBwcm92aWRlIGEgQ2FtZWxDYXNlIHZlcnNpb24gb2YgdGhhdC4uLikKK3NldChSVUJZX1BPU1NJQkxFX0xJQl9QQVRIICR7UnVieV9QT1NTSUJMRV9MSUJfRElSfSkKK3NldChSVUJZX1JVQllfTElCX1BBVEggJHtSdWJ5X1JVQllfTElCX0RJUn0pCitzZXQoUlVCWV9JTkNMVURFX1BBVEggJHtSdWJ5X0lOQ0xVREVfRElSU30pCisKKyMgQmFja3dhcmRzIGNvbXBhdGliaWxpdHkKKyMgRGVmaW5lIHVwcGVyIGNhc2UgdmVyc2lvbnMgb2Ygb3V0cHV0IHZhcmlhYmxlcworZm9yZWFjaChDYW1lbAorICAgIFJ1YnlfRVhFQ1VUQUJMRQorICAgIFJ1YnlfSU5DTFVERV9ESVJTCisgICAgUnVieV9MSUJSQVJZCisgICAgUnVieV9WRVJTSU9OCisgICAgUnVieV9WRVJTSU9OX01BSk9SCisgICAgUnVieV9WRVJTSU9OX01JTk9SCisgICAgUnVieV9WRVJTSU9OX1BBVENICisgICAgUnVieV9JTkNMVURFX1BBVEgKKworICAgIFJ1YnlfQVJDSF9ESVIKKyAgICBSdWJ5X0FSQ0gKKyAgICBSdWJ5X0hEUl9ESVIKKyAgICBSdWJ5X0FSQ0hIRFJfRElSCisgICAgUnVieV9QT1NTSUJMRV9MSUJfRElSCisgICAgUnVieV9SVUJZX0xJQl9ESVIKKyAgICBSdWJ5X1NJVEVBUkNIX0RJUgorICAgIFJ1YnlfU0lURUxJQl9ESVIKKyAgICBSdWJ5X0hBU19WRU5ET1JfUlVCWQorICAgIFJ1YnlfVkVORE9SQVJDSF9ESVIKKworICAgICkKKyAgICBzdHJpbmcoVE9VUFBFUiAke0NhbWVsfSBVUFBFUikKKyAgICBzZXQoJHtVUFBFUn0gJHske0NhbWVsfX0pCitlbmRmb3JlYWNoKCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZFNXSUcuY21ha2UgYi9Nb2R1bGVzL0ZpbmRTV0lHLmNtYWtlCmluZGV4IGFlNmFlNTYuLjJmZGVkNDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvRmluZFNXSUcuY21ha2UKKysrIGIvTW9kdWxlcy9GaW5kU1dJRy5jbWFrZQpAQCAtNSwyNSArNSw0OSBAQAogRmluZFNXSUcKIC0tLS0tLS0tCiAKLUZpbmQgU2ltcGxpZmllZCBXcmFwcGVyIGFuZCBJbnRlcmZhY2UgR2VuZXJhdG9yIChTV0lHKQotCi1UaGlzIG1vZHVsZSBmaW5kcyBhbiBpbnN0YWxsZWQgU1dJRy4gIEl0IHNldHMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6Ci0KLTo6Ci0KLSAgU1dJR19GT1VORCAtIHNldCB0byAiVHJ1ZSIgaWYgU1dJRyBpcyBmb3VuZAotICBTV0lHX0RJUiAtIHRoZSBkaXJlY3Rvcnkgd2hlcmUgc3dpZyBpcyBpbnN0YWxsZWQKLSAgU1dJR19FWEVDVVRBQkxFIC0gdGhlIHBhdGggdG8gdGhlIHN3aWcgZXhlY3V0YWJsZQotICBTV0lHX1ZFUlNJT04gICAtIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgc3dpZyBleGVjdXRhYmxlCitGaW5kIHRoZSBTaW1wbGlmaWVkIFdyYXBwZXIgYW5kIEludGVyZmFjZSBHZW5lcmF0b3IgKFNXSUdfKSBleGVjdXRhYmxlLgogCiAKK1RoaXMgbW9kdWxlIGZpbmRzIGFuIGluc3RhbGxlZCBTV0lHIGFuZCBkZXRlcm1pbmVzIGl0cyB2ZXJzaW9uLiBJZiBhCitgYENPTVBPTkVOVFNgYCBvciBgYE9QVElPTkFMX0NPTVBPTkVOVFNgYCBhcmd1bWVudCBpcyBnaXZlbiB0byBgYGZpbmRfcGFja2FnZWBgLAoraXQgd2lsbCBhbHNvIGRldGVybWluZSBzdXBwb3J0ZWQgdGFyZ2V0IGxhbmd1YWdlcy4gIFRoZSBtb2R1bGUgc2VudHMgdGhlCitmb2xsb3dpbmcgdmFyaWFibGVzOgogCi1UaGUgbWluaW11bSByZXF1aXJlZCB2ZXJzaW9uIG9mIFNXSUcgY2FuIGJlIHNwZWNpZmllZCB1c2luZyB0aGUKLXN0YW5kYXJkIHN5bnRheCwgZS5nLiAgIDpjb21tYW5kOmBmaW5kX3BhY2thZ2UoU1dJRyAxLjEpYAorYGBTV0lHX0ZPVU5EYGAKKyAgV2hldGhlciBTV0lHIGFuZCBhbnkgcmVxdWlyZWQgY29tcG9uZW50cyB3ZXJlIGZvdW5kIG9uIHRoZSBzeXN0ZW0uCitgYFNXSUdfRVhFQ1VUQUJMRWBgCisgIFBhdGggdG8gdGhlIFNXSUcgZXhlY3V0YWJsZS4KK2BgU1dJR19ESVJgYAorICBQYXRoIHRvIHRoZSBpbnN0YWxsZWQgU1dJRyBgYExpYmBgIGRpcmVjdG9yeSAocmVzdWx0IG9mIGBgc3dpZyAtc3dpZ2xpYmBgKS4KK2BgU1dJR19WRVJTSU9OYGAKKyAgU1dJRyBleGVjdXRhYmxlIHZlcnNpb24gKHJlc3VsdCBvZiBgYHN3aWcgLXZlcnNpb25gYCkuCitgYFNXSUdfPGxhbmc+X0ZPVU5EYGAKKyAgSWYgYGBDT01QT05FTlRTYGAgb3IgYGBPUFRJT05BTF9DT01QT05FTlRTYGAgYXJlIHJlcXVlc3RlZCwgZWFjaCBhdmFpbGFibGUKKyAgdGFyZ2V0IGxhbmd1YWdlIGBgPGxhbmc+YGAgKGxvd2VyY2FzZSkgd2lsbCBiZSBzZXQgdG8gVFJVRS4KKworQW55IGBgQ09NUE9ORU5UU2BgIGdpdmVuIHRvIGBgZmluZF9wYWNrYWdlYGAgc2hvdWxkIGJlIHRoZSBuYW1lcyBvZiBzdXBwb3J0ZWQKK3RhcmdldCBsYW5ndWFnZXMgYXMgcHJvdmlkZWQgdG8gdGhlIExBTkdVQUdFIGFyZ3VtZW50IG9mIGBgc3dpZ19hZGRfbGlicmFyeWBgLAorc3VjaCBhcyBgYHB5dGhvbmBgIG9yIGBgcGVybDVgYC4gTGFuZ3VhZ2UgbmFtZXMgKm11c3QqIGJlIGxvd2VyY2FzZS4KIAogQWxsIGluZm9ybWF0aW9uIGlzIGNvbGxlY3RlZCBmcm9tIHRoZSBgYFNXSUdfRVhFQ1VUQUJMRWBgLCBzbyB0aGUgdmVyc2lvbgogdG8gYmUgZm91bmQgY2FuIGJlIGNoYW5nZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGJ5IG1lYW5zIG9mIHNldHRpbmcKLWBgU1dJR19FWEVDVVRBQkxFYGAKK2BgU1dJR19FWEVDVVRBQkxFYGAuCisKK0V4YW1wbGUgdXNhZ2UgcmVxdWlyaW5nIFNXSUcgNC4wIG9yIGhpZ2hlciBhbmQgUHl0aG9uIGxhbmd1YWdlIHN1cHBvcnQsIHdpdGgKK29wdGlvbmFsIEZvcnRyYW4gc3VwcG9ydDoKKworLi4gY29kZS1ibG9jazo6IGNtYWtlCisKKyAgIGZpbmRfcGFja2FnZShTV0lHIDQuMCBDT01QT05FTlRTIHB5dGhvbiBPUFRJT05BTF9DT01QT05FTlRTIGZvcnRyYW4pCisgICBpZihTV0lHX0ZPVU5EKQorICAgICBtZXNzYWdlKCJTV0lHIGZvdW5kOiAke1NXSUdfRVhFQ1VUQUJMRX0iKQorICAgICBpZihOT1QgU1dJR19mb3J0cmFuX0ZPVU5EKQorICAgICAgIG1lc3NhZ2UoV0FSTklORyAiU1dJRyBGb3J0cmFuIGJpbmRpbmdzIGNhbm5vdCBiZSBnZW5lcmF0ZWQiKQorICAgICBlbmRpZigpCisgICBlbmRpZigpCisKKy4uIF9gU1dJR2A6IGh0dHA6Ly9zd2lnLm9yZworCiAjXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XQogCiBmaW5kX3Byb2dyYW0oU1dJR19FWEVDVVRBQkxFIE5BTUVTIHN3aWc0LjAgc3dpZzMuMCBzd2lnMi4wIHN3aWcpCkBAIC01OCwxMCArODIsMjkgQEAKICAgICAgIGVuZGlmKCkKICAgICBlbmRpZigpCiAgIGVuZGlmKCkKKworICBpZihTV0lHX0ZJTkRfQ09NUE9ORU5UUykKKyAgICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke1NXSUdfRVhFQ1VUQUJMRX0gLWhlbHAKKyAgICAgIE9VVFBVVF9WQVJJQUJMRSBTV0lHX3N3aWdoZWxwX291dHB1dAorICAgICAgRVJST1JfVkFSSUFCTEUgU1dJR19zd2lnaGVscF9lcnJvcgorICAgICAgUkVTVUxUX1ZBUklBQkxFIFNXSUdfc3dpZ2hlbHBfcmVzdWx0KQorICAgIGlmKFNXSUdfc3dpZ2hlbHBfcmVzdWx0KQorICAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJDb21tYW5kIFwiJHtTV0lHX0VYRUNVVEFCTEV9IC1oZWxwXCIgZmFpbGVkIHdpdGggb3V0cHV0OlxuJHtTV0lHX3N3aWdsaWJfZXJyb3J9IikKKyAgICBlbHNlKCkKKyAgICAgIHN0cmluZyhSRVBMQUNFICJcbiIgIjsiIFNXSUdfc3dpZ2hlbHBfb3V0cHV0ICIke1NXSUdfc3dpZ2hlbHBfb3V0cHV0fSIpCisgICAgICBmb3JlYWNoKFNXSUdfbGluZSBJTiBMSVNUUyBTV0lHX3N3aWdoZWxwX291dHB1dCkKKyAgICAgICAgaWYoU1dJR19saW5lIE1BVENIRVMgIi0oW0EtWmEtejAtOV9dKykgKy0gKkdlbmVyYXRlLip3cmFwcGVycyIpCisgICAgICAgICAgc2V0KFNXSUdfJHtDTUFLRV9NQVRDSF8xfV9GT1VORCBUUlVFKQorICAgICAgICBlbmRpZigpCisgICAgICBlbmRmb3JlYWNoKCkKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKIGVuZGlmKCkKIAogaW5jbHVkZSgke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L0ZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRBcmdzLmNtYWtlKQotRklORF9QQUNLQUdFX0hBTkRMRV9TVEFOREFSRF9BUkdTKFNXSUcgIFJFUVVJUkVEX1ZBUlMgU1dJR19FWEVDVVRBQkxFIFNXSUdfRElSCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSU0lPTl9WQVIgU1dJR19WRVJTSU9OICkKK2ZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncygKKyAgU1dJRyBIQU5ETEVfQ09NUE9ORU5UUworICBSRVFVSVJFRF9WQVJTIFNXSUdfRVhFQ1VUQUJMRSBTV0lHX0RJUgorICBWRVJTSU9OX1ZBUiBTV0lHX1ZFUlNJT04pCiAKIG1hcmtfYXNfYWR2YW5jZWQoU1dJR19ESVIgU1dJR19WRVJTSU9OIFNXSUdfRVhFQ1VUQUJMRSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZFgxMS5jbWFrZSBiL01vZHVsZXMvRmluZFgxMS5jbWFrZQppbmRleCBiMjhkZDEyLi5hYTgzNTc1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL0ZpbmRYMTEuY21ha2UKKysrIGIvTW9kdWxlcy9GaW5kWDExLmNtYWtlCkBAIC0yNSw2ICsyNSwxMCBAQAogICBYMTFfWGFjY2Vzc3J1bGVzX0lOQ0xVREVfUEFUSCwKICAgWDExX1hhY2Nlc3NzdHJfSU5DTFVERV9QQVRILCAgICAgICAgICAgICAgICAgICAgICAgWDExX1hhY2Nlc3NfRk9VTkQKICAgWDExX1hhdV9JTkNMVURFX1BBVEgsICAgICAgICAgIFgxMV9YYXVfTElCLCAgICAgICAgWDExX1hhdV9GT1VORCwgICAgICAgIFgxMTo6WGF1CisgIFgxMV94Y2JfSU5DTFVERV9QQVRILCAgICAgICAgICBYMTFfeGNiX0xJQiwgICAgICAgIFgxMV94Y2JfRk9VTkQsICAgICAgICBYMTE6OnhjYgorICBYMTFfWDExX3hjYl9JTkNMVURFX1BBVEgsICAgICAgWDExX1gxMV94Y2JfTElCLCAgICBYMTFfWDExX3hjYl9GT1VORCwgICAgWDExOjpYMTFfeGNiCisgIFgxMV94Y2JfaWNjY21fSU5DTFVERV9QQVRILCAgICBYMTFfeGNiX2ljY2NtX0xJQiwgIFgxMV94Y2JfaWNjY21fRk9VTkQsICBYMTE6OnhjYl9pY2NjbQorICBYMTFfeGNiX3hrYl9JTkNMVURFX1BBVEgsICAgICAgWDExX3hjYl94a2JfTElCLCAgICBYMTFfeGNiX3hrYl9GT1VORCwgICAgWDExOjp4Y2JfeGtiCiAgIFgxMV9YY29tcG9zaXRlX0lOQ0xVREVfUEFUSCwgICBYMTFfWGNvbXBvc2l0ZV9MSUIsIFgxMV9YY29tcG9zaXRlX0ZPVU5ELCBYMTE6Olhjb21wb3NpdGUKICAgWDExX1hjdXJzb3JfSU5DTFVERV9QQVRILCAgICAgIFgxMV9YY3Vyc29yX0xJQiwgICAgWDExX1hjdXJzb3JfRk9VTkQsICAgIFgxMTo6WGN1cnNvcgogICBYMTFfWGRhbWFnZV9JTkNMVURFX1BBVEgsICAgICAgWDExX1hkYW1hZ2VfTElCLCAgICBYMTFfWGRhbWFnZV9GT1VORCwgICAgWDExOjpYZGFtYWdlCkBAIC0zOCw2ICs0Miw4IEBACiAgIFgxMV9YaW5lcmFtYV9JTkNMVURFX1BBVEgsICAgICBYMTFfWGluZXJhbWFfTElCLCAgIFgxMV9YaW5lcmFtYV9GT1VORCwgICBYMTE6OlhpbmVyYW1hCiAgIFgxMV9Ya2JfSU5DTFVERV9QQVRILAogICBYMTFfWGtibGliX0lOQ0xVREVfUEFUSCwgICAgICAgICAgICAgICAgICAgICAgICAgICBYMTFfWGtiX0ZPVU5ELCAgICAgICAgWDExOjpYa2IKKyAgWDExX3hrYmNvbW1vbl9JTkNMVURFX1BBVEgsICAgIFgxMV94a2Jjb21tb25fTElCLCAgWDExX3hrYmNvbW1vbl9GT1VORCwgIFgxMTo6eGtiY29tbW9uCisgIFgxMV94a2Jjb21tb25fWDExX0lOQ0xVREVfUEFUSCxYMTFfeGtiY29tbW9uX1gxMV9MSUIsWDExX3hrYmNvbW1vbl9YMTFfRk9VTkQsWDExOjp4a2Jjb21tb25fWDExCiAgIFgxMV94a2JmaWxlX0lOQ0xVREVfUEFUSCwgICAgICBYMTFfeGtiZmlsZV9MSUIsICAgIFgxMV94a2JmaWxlX0ZPVU5ELCAgICBYMTE6OnhrYmZpbGUKICAgWDExX1htdV9JTkNMVURFX1BBVEgsICAgICAgICAgIFgxMV9YbXVfTElCLCAgICAgICAgWDExX1htdV9GT1VORCwgICAgICAgIFgxMTo6WG11CiAgIFgxMV9YcG1fSU5DTFVERV9QQVRILCAgICAgICAgICBYMTFfWHBtX0xJQiwgICAgICAgIFgxMV9YcG1fRk9VTkQsICAgICAgICBYMTE6OlhwbQpAQCAtOTQsNiArMTAwLDkgQEAKICAgZmluZF9wYXRoKFgxMV9YYWNjZXNzcnVsZXNfSU5DTFVERV9QQVRIIFgxMS9leHRlbnNpb25zL1hLQnJ1bGVzLmggICR7WDExX0lOQ19TRUFSQ0hfUEFUSH0pCiAgIGZpbmRfcGF0aChYMTFfWGFjY2Vzc3N0cl9JTkNMVURFX1BBVEggWDExL2V4dGVuc2lvbnMvWEtCc3RyLmggICAgICAke1gxMV9JTkNfU0VBUkNIX1BBVEh9KQogICBmaW5kX3BhdGgoWDExX1hhdV9JTkNMVURFX1BBVEggWDExL1hhdXRoLmggICAgICAgICAgICAgICAgICAgICAgICAgJHtYMTFfSU5DX1NFQVJDSF9QQVRIfSkKKyAgZmluZF9wYXRoKFgxMV94Y2JfSU5DTFVERV9QQVRIIHhjYi94Y2IuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICR7WDExX0lOQ19TRUFSQ0hfUEFUSH0pCisgIGZpbmRfcGF0aChYMTFfWDExX3hjYl9JTkNMVURFX1BBVEggWDExL1hsaWIteGNiLmggICAgICAgICAgICAgICAgICAke1gxMV9JTkNfU0VBUkNIX1BBVEh9KQorICBmaW5kX3BhdGgoWDExX3hjYl9pY2NjbV9JTkNMVURFX1BBVEggeGNiL3hjYl9pY2NjbS5oICAgICAgICAgICAgICAgJHtYMTFfSU5DX1NFQVJDSF9QQVRIfSkKICAgZmluZF9wYXRoKFgxMV9YY29tcG9zaXRlX0lOQ0xVREVfUEFUSCBYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRlLmggICR7WDExX0lOQ19TRUFSQ0hfUEFUSH0pCiAgIGZpbmRfcGF0aChYMTFfWGN1cnNvcl9JTkNMVURFX1BBVEggWDExL1hjdXJzb3IvWGN1cnNvci5oICAgICAgICAgICAke1gxMV9JTkNfU0VBUkNIX1BBVEh9KQogICBmaW5kX3BhdGgoWDExX1hkYW1hZ2VfSU5DTFVERV9QQVRIIFgxMS9leHRlbnNpb25zL1hkYW1hZ2UuaCAgICAgICAgJHtYMTFfSU5DX1NFQVJDSF9QQVRIfSkKQEAgLTEwNyw2ICsxMTYsOCBAQAogICBmaW5kX3BhdGgoWDExX1hpX0lOQ0xVREVfUEFUSCBYMTEvZXh0ZW5zaW9ucy9YSW5wdXQuaCAgICAgICAgICAgICAgJHtYMTFfSU5DX1NFQVJDSF9QQVRIfSkKICAgZmluZF9wYXRoKFgxMV9YaW5lcmFtYV9JTkNMVURFX1BBVEggWDExL2V4dGVuc2lvbnMvWGluZXJhbWEuaCAgICAgICR7WDExX0lOQ19TRUFSQ0hfUEFUSH0pCiAgIGZpbmRfcGF0aChYMTFfWGtiX0lOQ0xVREVfUEFUSCBYMTEvZXh0ZW5zaW9ucy9YS0IuaCAgICAgICAgICAgICAgICAke1gxMV9JTkNfU0VBUkNIX1BBVEh9KQorICBmaW5kX3BhdGgoWDExX3hrYmNvbW1vbl9JTkNMVURFX1BBVEggeGtiY29tbW9uL3hrYmNvbW1vbi5oICAgICAgICAgJHtYMTFfSU5DX1NFQVJDSF9QQVRIfSkKKyAgZmluZF9wYXRoKFgxMV94a2Jjb21tb25fWDExX0lOQ0xVREVfUEFUSCB4a2Jjb21tb24veGtiY29tbW9uLXgxMS5oICR7WDExX0lOQ19TRUFSQ0hfUEFUSH0pCiAgIGZpbmRfcGF0aChYMTFfWGtibGliX0lOQ0xVREVfUEFUSCBYMTEvWEtCbGliLmggICAgICAgICAgICAgICAgICAgICAke1gxMV9JTkNfU0VBUkNIX1BBVEh9KQogICBmaW5kX3BhdGgoWDExX3hrYmZpbGVfSU5DTFVERV9QQVRIIFgxMS9leHRlbnNpb25zL1hLQmZpbGUuaCAgICAgICAgJHtYMTFfSU5DX1NFQVJDSF9QQVRIfSkKICAgZmluZF9wYXRoKFgxMV9YbXVfSU5DTFVERV9QQVRIIFgxMS9YbXUvWG11LmggICAgICAgICAgICAgICAgICAgICAgICR7WDExX0lOQ19TRUFSQ0hfUEFUSH0pCkBAIC0xMzcsNiArMTQ4LDEwIEBACiAgIGZpbmRfbGlicmFyeShYMTFfSUNFX0xJQiBJQ0UgICAgICAgICAgICAgICAke1gxMV9MSUJfU0VBUkNIX1BBVEh9KQogICBmaW5kX2xpYnJhcnkoWDExX1NNX0xJQiBTTSAgICAgICAgICAgICAgICAgJHtYMTFfTElCX1NFQVJDSF9QQVRIfSkKICAgZmluZF9saWJyYXJ5KFgxMV9YYXVfTElCIFhhdSAgICAgICAgICAgICAgICR7WDExX0xJQl9TRUFSQ0hfUEFUSH0pCisgIGZpbmRfbGlicmFyeShYMTFfeGNiX0xJQiB4Y2IgICAgICAgICAgICAgICAke1gxMV9MSUJfU0VBUkNIX1BBVEh9KQorICBmaW5kX2xpYnJhcnkoWDExX1gxMV94Y2JfTElCIFgxMS14Y2IgICAgICAgJHtYMTFfTElCX1NFQVJDSF9QQVRIfSkKKyAgZmluZF9saWJyYXJ5KFgxMV94Y2JfaWNjY21fTElCIHhjYi1pY2NjbSAgICR7WDExX0xJQl9TRUFSQ0hfUEFUSH0pCisgIGZpbmRfbGlicmFyeShYMTFfeGNiX3hrYl9MSUIgeGNiLXhrYiAgICAgICAke1gxMV9MSUJfU0VBUkNIX1BBVEh9KQogICBmaW5kX2xpYnJhcnkoWDExX1hjb21wb3NpdGVfTElCIFhjb21wb3NpdGUgJHtYMTFfTElCX1NFQVJDSF9QQVRIfSkKICAgZmluZF9saWJyYXJ5KFgxMV9YY3Vyc29yX0xJQiBYY3Vyc29yICAgICAgICR7WDExX0xJQl9TRUFSQ0hfUEFUSH0pCiAgIGZpbmRfbGlicmFyeShYMTFfWGRhbWFnZV9MSUIgWGRhbWFnZSAgICAgICAke1gxMV9MSUJfU0VBUkNIX1BBVEh9KQpAQCAtMTQ2LDYgKzE2MSw4IEBACiAgIGZpbmRfbGlicmFyeShYMTFfWGZ0X0xJQiBYZnQgICAgICAgICAgICAgICAke1gxMV9MSUJfU0VBUkNIX1BBVEh9KQogICBmaW5kX2xpYnJhcnkoWDExX1hpX0xJQiBYaSAgICAgICAgICAgICAgICAgJHtYMTFfTElCX1NFQVJDSF9QQVRIfSkKICAgZmluZF9saWJyYXJ5KFgxMV9YaW5lcmFtYV9MSUIgWGluZXJhbWEgICAgICR7WDExX0xJQl9TRUFSQ0hfUEFUSH0pCisgIGZpbmRfbGlicmFyeShYMTFfeGtiY29tbW9uX0xJQiB4a2Jjb21tb24gICAke1gxMV9MSUJfU0VBUkNIX1BBVEh9KQorICBmaW5kX2xpYnJhcnkoWDExX3hrYmNvbW1vbl9YMTFfTElCIHhrYmNvbW1vbi14MTEgICAke1gxMV9MSUJfU0VBUkNIX1BBVEh9KQogICBmaW5kX2xpYnJhcnkoWDExX3hrYmZpbGVfTElCIHhrYmZpbGUgICAgICAgJHtYMTFfTElCX1NFQVJDSF9QQVRIfSkKICAgZmluZF9saWJyYXJ5KFgxMV9YbXVfTElCIFhtdSAgICAgICAgICAgICAgICR7WDExX0xJQl9TRUFSQ0hfUEFUSH0pCiAgIGZpbmRfbGlicmFyeShYMTFfWHBtX0xJQiBYcG0gICAgICAgICAgICAgICAke1gxMV9MSUJfU0VBUkNIX1BBVEh9KQpAQCAtMjIxLDYgKzIzOCwyMiBAQAogICAgIHNldChYMTFfWGF1X0ZPVU5EIFRSVUUpCiAgIGVuZGlmICgpCiAKKyAgaWYgKFgxMV94Y2JfTElCIEFORCBYMTFfeGNiX0lOQ0xVREVfUEFUSCkKKyAgICBzZXQoWDExX3hjYl9GT1VORCBUUlVFKQorICBlbmRpZiAoKQorCisgIGlmIChYMTFfWDExX3hjYl9MSUIgQU5EIFgxMV9YMTFfeGNiX0lOQ0xVREVfUEFUSCkKKyAgICBzZXQoWDExX1gxMV94Y2JfRk9VTkQgVFJVRSkKKyAgZW5kaWYgKCkKKworICBpZiAoWDExX3hjYl9pY2NjbV9MSUIgQU5EIFgxMV94Y2JfaWNjY21fSU5DTFVERV9QQVRIKQorICAgIHNldChYMTFfeGNiX2ljY2NtX0ZPVU5EIFRSVUUpCisgIGVuZGlmICgpCisKKyAgaWYgKFgxMV94Y2JfeGtiX0xJQikKKyAgICBzZXQoWDExX3hjYl94a2JfRk9VTkQgVFJVRSkKKyAgZW5kaWYgKCkKKwogICBpZiAoWDExX1hkbWNwX0lOQ0xVREVfUEFUSCBBTkQgWDExX1hkbWNwX0xJQikKICAgICAgIHNldChYMTFfWGRtY3BfRk9VTkQgVFJVRSkKICAgICAgIGxpc3QoQVBQRU5EIFgxMV9JTkNMVURFX0RJUiAke1gxMV9YZG1jcF9JTkNMVURFX1BBVEh9KQpAQCAtMzI2LDYgKzM1OSwxNCBAQAogICAgICBsaXN0KEFQUEVORCBYMTFfSU5DTFVERV9ESVIgJHtYMTFfWGtiX0lOQ0xVREVfUEFUSH0gKQogICBlbmRpZiAoKQogCisgIGlmIChYMTFfeGtiY29tbW9uX0lOQ0xVREVfUEFUSCBBTkQgWDExX3hrYmNvbW1vbl9MSUIpCisgICAgIHNldChYMTFfeGtiY29tbW9uX0ZPVU5EIFRSVUUpCisgIGVuZGlmICgpCisKKyAgaWYgKFgxMV94a2Jjb21tb25fWDExX0lOQ0xVREVfUEFUSCBBTkQgWDExX3hrYmNvbW1vbl9YMTFfTElCKQorICAgICBzZXQoWDExX3hrYmNvbW1vbl9YMTFfRk9VTkQgVFJVRSkKKyAgZW5kaWYgKCkKKwogICBpZiAoWDExX3hrYmZpbGVfSU5DTFVERV9QQVRIIEFORCBYMTFfeGtiZmlsZV9MSUIgQU5EIFgxMV9YbGliX0lOQ0xVREVfUEFUSCkKICAgICAgc2V0KFgxMV94a2JmaWxlX0ZPVU5EIFRSVUUpCiAgICAgICMgQmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCkBAIC00NzgsNiArNTE5LDM1IEBACiAgICAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUyAiJHtYMTFfWGF1X0lOQ0xVREVfUEFUSH0iKQogICBlbmRpZiAoKQogCisgIGlmIChYMTFfeGNiX0ZPVU5EIEFORCBOT1QgVEFSR0VUIFgxMTo6eGNiKQorICAgIGFkZF9saWJyYXJ5KFgxMTo6eGNiIFVOS05PV04gSU1QT1JURUQpCisgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKFgxMTo6eGNiIFBST1BFUlRJRVMKKyAgICAgIElNUE9SVEVEX0xPQ0FUSU9OICIke1gxMV94Y2JfTElCfSIKKyAgICAgIElOVEVSRkFDRV9JTkNMVURFX0RJUkVDVE9SSUVTICIke1gxMV94Y2JfSU5DTFVERV9QQVRIfSIpCisgIGVuZGlmICgpCisKKyAgaWYgKFgxMV9YMTFfeGNiX0ZPVU5EIEFORCBOT1QgVEFSR0VUIFgxMTo6WDExX3hjYikKKyAgICBhZGRfbGlicmFyeShYMTE6OlgxMV94Y2IgVU5LTk9XTiBJTVBPUlRFRCkKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoWDExOjpYMTFfeGNiIFBST1BFUlRJRVMKKyAgICAgIElNUE9SVEVEX0xPQ0FUSU9OICIke1gxMV9YMTFfeGNiX0xJQn0iCisgICAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUyAiJHtYMTFfWDExX3hjYl9JTkNMVURFX1BBVEh9IgorICAgICAgSU5URVJGQUNFX0xJTktfTElCUkFSSUVTICJYMTE6OnhjYjtYMTE6OlgxMSIpCisgIGVuZGlmICgpCisKKyAgaWYgKFgxMV94Y2JfaWNjY21fRk9VTkQgQU5EIE5PVCBUQVJHRVQgWDExOjp4Y2JfaWNjY20pCisgICAgYWRkX2xpYnJhcnkoWDExOjp4Y2JfaWNjY20gVU5LTk9XTiBJTVBPUlRFRCkKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoWDExOjp4Y2JfaWNjY20gUFJPUEVSVElFUworICAgICAgSU1QT1JURURfTE9DQVRJT04gIiR7WDExX3hjYl9pY2NjbV9MSUJ9IgorICAgICAgSU5URVJGQUNFX0xJTktfTElCUkFSSUVTICJYMTE6OnhjYiIpCisgIGVuZGlmICgpCisKKyAgaWYgKFgxMV94Y2JfeGtiX0ZPVU5EIEFORCBOT1QgVEFSR0VUIFgxMTo6eGNiX3hrYikKKyAgICBhZGRfbGlicmFyeShYMTE6OnhjYl94a2IgVU5LTk9XTiBJTVBPUlRFRCkKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoWDExOjp4Y2JfeGtiIFBST1BFUlRJRVMKKyAgICAgIElNUE9SVEVEX0xPQ0FUSU9OICIke1gxMV94Y2JfeGtiX0xJQn0iCisgICAgICBJTlRFUkZBQ0VfTElOS19MSUJSQVJJRVMgIlgxMTo6eGNiIikKKyAgZW5kaWYgKCkKKwogICBpZiAoWDExX1hjb21wb3NpdGVfRk9VTkQgQU5EIE5PVCBUQVJHRVQgWDExOjpYY29tcG9zaXRlKQogICAgIGFkZF9saWJyYXJ5KFgxMTo6WGNvbXBvc2l0ZSBVTktOT1dOIElNUE9SVEVEKQogICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhYMTE6Olhjb21wb3NpdGUgUFJPUEVSVElFUwpAQCAtNTcyLDYgKzY0MiwyMSBAQAogICAgICAgSU5URVJGQUNFX0xJTktfTElCUkFSSUVTICJYMTE6OlgxMSIpCiAgIGVuZGlmICgpCiAKKyAgaWYgKFgxMV94a2Jjb21tb25fRk9VTkQgQU5EIE5PVCBUQVJHRVQgWDExOjp4a2Jjb21tb24pCisgICAgYWRkX2xpYnJhcnkoWDExOjp4a2Jjb21tb24gVU5LTk9XTiBJTVBPUlRFRCkKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoWDExOjp4a2Jjb21tb24gUFJPUEVSVElFUworICAgICAgSU1QT1JURURfTE9DQVRJT04gIiR7WDExX3hrYmNvbW1vbl9MSUJ9IgorICAgICAgSU5URVJGQUNFX0lOQ0xVREVfRElSRUNUT1JJRVMgIiR7WDExX3hrYmNvbW1vbl9JTkNMVURFX1BBVEh9IikKKyAgZW5kaWYgKCkKKworICBpZiAoWDExX3hrYmNvbW1vbl9YMTFfRk9VTkQgQU5EIE5PVCBUQVJHRVQgWDExOjp4a2Jjb21tb25fWDExKQorICAgIGFkZF9saWJyYXJ5KFgxMTo6eGtiY29tbW9uX1gxMSBVTktOT1dOIElNUE9SVEVEKQorICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhYMTE6OnhrYmNvbW1vbl9YMTEgUFJPUEVSVElFUworICAgICAgSU1QT1JURURfTE9DQVRJT04gIiR7WDExX3hrYmNvbW1vbl9YMTFfTElCfSIKKyAgICAgIElOVEVSRkFDRV9JTkNMVURFX0RJUkVDVE9SSUVTICIke1gxMV94a2Jjb21tb25fWDExX0lOQ0xVREVfUEFUSH0iCisgICAgICBJTlRFUkZBQ0VfTElOS19MSUJSQVJJRVMgIlgxMTo6WDExO1gxMTo6eGtiY29tbW9uIikKKyAgZW5kaWYgKCkKKwogICBpZiAoWDExX3hrYmZpbGVfRk9VTkQgQU5EIE5PVCBUQVJHRVQgWDExOjp4a2JmaWxlKQogICAgIGFkZF9saWJyYXJ5KFgxMTo6eGtiZmlsZSBVTktOT1dOIElNUE9SVEVEKQogICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhYMTE6OnhrYmZpbGUgUFJPUEVSVElFUwpAQCAtNjY4LDYgKzc1MywxMSBAQAogICAgIFgxMV9YZXh0X0xJQgogICAgIFgxMV9YYXVfTElCCiAgICAgWDExX1hhdV9JTkNMVURFX1BBVEgKKyAgICBYMTFfeGNiX0xJQgorICAgIFgxMV94Y2JfSU5DTFVERV9QQVRICisgICAgWDExX3hjYl94a2JfTElCCisgICAgWDExX1gxMV94Y2JfTElCCisgICAgWDExX1gxMV94Y2JfSU5DTFVERV9QQVRICiAgICAgWDExX1hsaWJfSU5DTFVERV9QQVRICiAgICAgWDExX1h1dGlsX0lOQ0xVREVfUEFUSAogICAgIFgxMV9YY29tcG9zaXRlX0lOQ0xVREVfUEFUSApAQCAtNzA0LDYgKzc5NCwxMCBAQAogICAgIFgxMV9YZG1jcF9JTkNMVURFX1BBVEgKICAgICBYMTFfWGtiX0lOQ0xVREVfUEFUSAogICAgIFgxMV9Ya2JsaWJfSU5DTFVERV9QQVRICisgICAgWDExX3hrYmNvbW1vbl9JTkNMVURFX1BBVEgKKyAgICBYMTFfeGtiY29tbW9uX0xJQgorICAgIFgxMV94a2Jjb21tb25fWDExX0lOQ0xVREVfUEFUSAorICAgIFgxMV94a2Jjb21tb25fWDExX0xJQgogICAgIFgxMV94a2JmaWxlX0lOQ0xVREVfUEFUSAogICAgIFgxMV94a2JmaWxlX0xJQgogICAgIFgxMV9YbXVfSU5DTFVERV9QQVRICmRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZvcnRyYW5DSW50ZXJmYWNlL0NNYWtlTGlzdHMudHh0IGIvTW9kdWxlcy9Gb3J0cmFuQ0ludGVyZmFjZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzODEwODBiLi4xM2U0NDk4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL0ZvcnRyYW5DSW50ZXJmYWNlL0NNYWtlTGlzdHMudHh0CisrKyBiL01vZHVsZXMvRm9ydHJhbkNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQKQEAgLTEwMSwzICsxMDEsNyBAQAogIyBSZXF1aXJlIHN5bWJvbHMgdGhyb3VnaCBGb3J0cmFuLgogYWRkX2V4ZWN1dGFibGUoRm9ydHJhbkNJbnRlcmZhY2UgbWFpbi5GIGNhbGxfc3ViLmYgJHtjYWxsX21vZH0pCiB0YXJnZXRfbGlua19saWJyYXJpZXMoRm9ydHJhbkNJbnRlcmZhY2UgUFVCTElDIHN5bWJvbHMpCisKK2ZpbGUoR0VORVJBVEUgT1VUUFVUIGV4ZS0kPENPTkZJRz4uY21ha2UgQ09OVEVOVCBbWworc2V0KEZvcnRyYW5DSW50ZXJmYWNlX0VYRSAiJDxUQVJHRVRfRklMRTpGb3J0cmFuQ0ludGVyZmFjZT4iKQorXV0pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZvcnRyYW5DSW50ZXJmYWNlL0RldGVjdC5jbWFrZSBiL01vZHVsZXMvRm9ydHJhbkNJbnRlcmZhY2UvRGV0ZWN0LmNtYWtlCmluZGV4IDMzZGU2YzYuLmM3NTA2N2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvRm9ydHJhbkNJbnRlcmZhY2UvRGV0ZWN0LmNtYWtlCisrKyBiL01vZHVsZXMvRm9ydHJhbkNJbnRlcmZhY2UvRGV0ZWN0LmNtYWtlCkBAIC00MywxNyArNDMsMTEgQEAKIHVuc2V0KEZvcnRyYW5DSW50ZXJmYWNlX0NPTVBJTEVEIENBQ0hFKQogCiAjIExvY2F0ZSB0aGUgc2FtcGxlIHByb2plY3QgZXhlY3V0YWJsZS4KK3NldChGb3J0cmFuQ0ludGVyZmFjZV9FWEUpCiBpZihGb3J0cmFuQ0ludGVyZmFjZV9DT01QSUxFRCkKLSAgZmluZF9wcm9ncmFtKEZvcnRyYW5DSW50ZXJmYWNlX0VYRQotICAgIE5BTUVTIEZvcnRyYW5DSW50ZXJmYWNlJHtDTUFLRV9FWEVDVVRBQkxFX1NVRkZJWH0KLSAgICBQQVRIUyAke0ZvcnRyYW5DSW50ZXJmYWNlX0JJTkFSWV9ESVJ9ICR7Rm9ydHJhbkNJbnRlcmZhY2VfQklOQVJZX0RJUn0vUmVsZWFzZQotICAgIE5PX0RFRkFVTFRfUEFUSAotICAgICkKLSAgc2V0KEZvcnRyYW5DSW50ZXJmYWNlX0VYRSAke0ZvcnRyYW5DSW50ZXJmYWNlX0VYRX0pCi0gIHVuc2V0KEZvcnRyYW5DSW50ZXJmYWNlX0VYRSBDQUNIRSkKKyAgaW5jbHVkZSgke0ZvcnRyYW5DSW50ZXJmYWNlX0JJTkFSWV9ESVJ9L2V4ZS1SZWxlYXNlLmNtYWtlIE9QVElPTkFMKQogZWxzZSgpCiAgIHNldChfcmVzdWx0ICJGYWlsZWQgdG8gY29tcGlsZSIpCi0gIHNldChGb3J0cmFuQ0ludGVyZmFjZV9FWEUpCiAgIGZpbGUoQVBQRU5EICR7Q01BS0VfQklOQVJZX0RJUn0ke0NNQUtFX0ZJTEVTX0RJUkVDVE9SWX0vQ01ha2VFcnJvci5sb2cKICAgICAiRm9ydHJhbi9DIGludGVyZmFjZSB0ZXN0IHByb2plY3QgZmFpbGVkIHdpdGggdGhlIGZvbGxvd2luZyBvdXRwdXQ6XG4iCiAgICAgIiR7Rm9ydHJhbkNJbnRlcmZhY2VfT1VUUFVUfVxuIikKZGlmZiAtLWdpdCBhL01vZHVsZXMvR29vZ2xlVGVzdC5jbWFrZSBiL01vZHVsZXMvR29vZ2xlVGVzdC5jbWFrZQppbmRleCBhNWJiODYzLi45NzVjZTZjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL0dvb2dsZVRlc3QuY21ha2UKKysrIGIvTW9kdWxlcy9Hb29nbGVUZXN0LmNtYWtlCkBAIC0xNTEsNiArMTUxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBbUFJPUEVSVElFUyBuYW1lMSB2YWx1ZTEuLi5dCiAgICAgICAgICAgICAgICAgICAgICAgICAgW1RFU1RfTElTVCB2YXJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgW0RJU0NPVkVSWV9USU1FT1VUIHNlY29uZHNdCisgICAgICAgICAgICAgICAgICAgICAgICAgW1hNTF9PVVRQVVRfRElSIGRpcl0KKyAgICAgICAgICAgICAgICAgICAgICAgICBbRElTQ09WRVJZX01PREUgPFBPU1RfQlVJTER8UFJFX1RFU1Q+XQogICAgICkKIAogICBgYGd0ZXN0X2Rpc2NvdmVyX3Rlc3RzYGAgc2V0cyB1cCBhIHBvc3QtYnVpbGQgY29tbWFuZCBvbiB0aGUgdGVzdCBleGVjdXRhYmxlCkBAIC0yMzYsNiArMjM4LDI5IEBACiAgICAgICBwcm9ibGVtLiAgVGhlIGFtYmlndW91cyBiZWhhdmlvciBvZiB0aGUgYGBUSU1FT1VUYGAga2V5d29yZCBpbiAzLjEwLjEKICAgICAgIGFuZCAzLjEwLjIgaGFzIG5vdCBiZWVuIHByZXNlcnZlZC4KIAorICBgYFhNTF9PVVRQVVRfRElSIGRpcmBgCisgICAgSWYgc3BlY2lmaWVkLCB0aGUgcGFyYW1ldGVyIGlzIHBhc3NlZCBhbG9uZyB3aXRoIGBgLS1ndGVzdF9vdXRwdXQ9eG1sOmBgCisgICAgdG8gdGVzdCBleGVjdXRhYmxlLiBUaGUgYWN0dWFsIGZpbGUgbmFtZSBpcyB0aGUgc2FtZSBhcyB0aGUgdGVzdCB0YXJnZXQsCisgICAgaW5jbHVkaW5nIHByZWZpeCBhbmQgc3VmZml4LiBUaGlzIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YKKyAgICBgYEVYVFJBX0FSR1MgLS1ndGVzdF9vdXRwdXQ9eG1sYGAgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIHdyaXRpbmcgdGhlCisgICAgWE1MIHJlc3VsdCBvdXRwdXQgd2hlbiB1c2luZyBwYXJhbGxlbCB0ZXN0IGV4ZWN1dGlvbi4KKworICBgYERJU0NPVkVSWV9NT0RFYGAKKyAgICBQcm92aWRlcyBncmVhdGVyIGNvbnRyb2wgb3ZlciB3aGVuIGBgZ3Rlc3RfZGlzY292ZXJfdGVzdHNgYHBlcmZvcm1zIHRlc3QKKyAgICBkaXNjb3ZlcnkuIEJ5IGRlZmF1bHQsIGBgUE9TVF9CVUlMRGBgIHNldHMgdXAgYSBwb3N0LWJ1aWxkIGNvbW1hbmQKKyAgICB0byBwZXJmb3JtIHRlc3QgZGlzY292ZXJ5IGF0IGJ1aWxkIHRpbWUuIEluIGNlcnRhaW4gc2NlbmFyaW9zLCBsaWtlCisgICAgY3Jvc3MtY29tcGlsaW5nLCB0aGlzIGBgUE9TVF9CVUlMRGBgIGJlaGF2aW9yIGlzIG5vdCBkZXNpcmFibGUuCisgICAgQnkgY29udHJhc3QsIGBgUFJFX1RFU1RgYCBkZWxheXMgdGVzdCBkaXNjb3ZlcnkgdW50aWwganVzdCBwcmlvciB0byB0ZXN0CisgICAgZXhlY3V0aW9uLiBUaGlzIHdheSB0ZXN0IGRpc2NvdmVyeSBvY2N1cnMgaW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudAorICAgIHdoZXJlIHRoZSB0ZXN0IGhhcyBhIGJldHRlciBjaGFuY2UgYXQgZmluZGluZyBhcHByb3ByaWF0ZSBydW50aW1lCisgICAgZGVwZW5kZW5jaWVzLgorCisgICAgYGBESVNDT1ZFUllfTU9ERWBgIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiB0aGUKKyAgICBgYENNQUtFX0dURVNUX0RJU0NPVkVSX1RFU1RTX0RJU0NPVkVSWV9NT0RFYGAgdmFyaWFibGUgaWYgaXQgaXMgbm90CisgICAgcGFzc2VkIHdoZW4gY2FsbGluZyBgYGd0ZXN0X2Rpc2NvdmVyX3Rlc3RzYGAuIFRoaXMgcHJvdmlkZXMgYSBtZWNoYW5pc20KKyAgICBmb3IgZ2xvYmFsbHkgc2VsZWN0aW5nIGEgcHJlZmVycmVkIHRlc3QgZGlzY292ZXJ5IGJlaGF2aW9yIHdpdGhvdXQgaGF2aW5nCisgICAgdG8gbW9kaWZ5IGVhY2ggY2FsbCBzaXRlLgorCiAjXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XQogCiAjIFNhdmUgcHJvamVjdCdzIHBvbGljaWVzCkBAIC0zNjgsMTEgKzM5MywxMiBAQAogZW5kZnVuY3Rpb24oKQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIGZ1bmN0aW9uKGd0ZXN0X2Rpc2NvdmVyX3Rlc3RzIFRBUkdFVCkKICAgY21ha2VfcGFyc2VfYXJndW1lbnRzKAogICAgICIiCiAgICAgIk5PX1BSRVRUWV9UWVBFUztOT19QUkVUVFlfVkFMVUVTIgotICAgICJURVNUX1BSRUZJWDtURVNUX1NVRkZJWDtXT1JLSU5HX0RJUkVDVE9SWTtURVNUX0xJU1Q7RElTQ09WRVJZX1RJTUVPVVQiCisgICAgIlRFU1RfUFJFRklYO1RFU1RfU1VGRklYO1dPUktJTkdfRElSRUNUT1JZO1RFU1RfTElTVDtESVNDT1ZFUllfVElNRU9VVDtYTUxfT1VUUFVUX0RJUjtESVNDT1ZFUllfTU9ERSIKICAgICAiRVhUUkFfQVJHUztQUk9QRVJUSUVTIgogICAgICR7QVJHTn0KICAgKQpAQCAtMzg2LDYgKzQxMiwxMiBAQAogICBpZihOT1QgX0RJU0NPVkVSWV9USU1FT1VUKQogICAgIHNldChfRElTQ09WRVJZX1RJTUVPVVQgNSkKICAgZW5kaWYoKQorICBpZihOT1QgX0RJU0NPVkVSWV9NT0RFKQorICAgIGlmKE5PVCBDTUFLRV9HVEVTVF9ESVNDT1ZFUl9URVNUU19ESVNDT1ZFUllfTU9ERSkKKyAgICAgIHNldChDTUFLRV9HVEVTVF9ESVNDT1ZFUl9URVNUU19ESVNDT1ZFUllfTU9ERSAiUE9TVF9CVUlMRCIpCisgICAgZW5kaWYoKQorICAgIHNldChfRElTQ09WRVJZX01PREUgJHtDTUFLRV9HVEVTVF9ESVNDT1ZFUl9URVNUU19ESVNDT1ZFUllfTU9ERX0pCisgIGVuZGlmKCkKIAogICBnZXRfcHJvcGVydHkoCiAgICAgaGFzX2NvdW50ZXIKQEAgLTQxNywzNCArNDQ5LDg2IEBACiAgICAgVEFSR0VUICR7VEFSR0VUfQogICAgIFBST1BFUlRZIENST1NTQ09NUElMSU5HX0VNVUxBVE9SCiAgICkKLSAgYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIFRBUkdFVCAke1RBUkdFVH0gUE9TVF9CVUlMRAotICAgIEJZUFJPRFVDVFMgIiR7Y3Rlc3RfdGVzdHNfZmlsZX0iCi0gICAgQ09NTUFORCAiJHtDTUFLRV9DT01NQU5EfSIKLSAgICAgICAgICAgIC1EICJURVNUX1RBUkdFVD0ke1RBUkdFVH0iCi0gICAgICAgICAgICAtRCAiVEVTVF9FWEVDVVRBQkxFPSQ8VEFSR0VUX0ZJTEU6JHtUQVJHRVR9PiIKLSAgICAgICAgICAgIC1EICJURVNUX0VYRUNVVE9SPSR7Y3Jvc3Njb21waWxpbmdfZW11bGF0b3J9IgotICAgICAgICAgICAgLUQgIlRFU1RfV09SS0lOR19ESVI9JHtfV09SS0lOR19ESVJFQ1RPUll9IgotICAgICAgICAgICAgLUQgIlRFU1RfRVhUUkFfQVJHUz0ke19FWFRSQV9BUkdTfSIKLSAgICAgICAgICAgIC1EICJURVNUX1BST1BFUlRJRVM9JHtfUFJPUEVSVElFU30iCi0gICAgICAgICAgICAtRCAiVEVTVF9QUkVGSVg9JHtfVEVTVF9QUkVGSVh9IgotICAgICAgICAgICAgLUQgIlRFU1RfU1VGRklYPSR7X1RFU1RfU1VGRklYfSIKLSAgICAgICAgICAgIC1EICJOT19QUkVUVFlfVFlQRVM9JHtfTk9fUFJFVFRZX1RZUEVTfSIKLSAgICAgICAgICAgIC1EICJOT19QUkVUVFlfVkFMVUVTPSR7X05PX1BSRVRUWV9WQUxVRVN9IgotICAgICAgICAgICAgLUQgIlRFU1RfTElTVD0ke19URVNUX0xJU1R9IgotICAgICAgICAgICAgLUQgIkNURVNUX0ZJTEU9JHtjdGVzdF90ZXN0c19maWxlfSIKLSAgICAgICAgICAgIC1EICJURVNUX0RJU0NPVkVSWV9USU1FT1VUPSR7X0RJU0NPVkVSWV9USU1FT1VUfSIKLSAgICAgICAgICAgIC1QICIke19HT09HTEVURVNUX0RJU0NPVkVSX1RFU1RTX1NDUklQVH0iCi0gICAgVkVSQkFUSU0KLSAgKQogCi0gIGZpbGUoV1JJVEUgIiR7Y3Rlc3RfaW5jbHVkZV9maWxlfSIKLSAgICAiaWYoRVhJU1RTIFwiJHtjdGVzdF90ZXN0c19maWxlfVwiKVxuIgotICAgICIgIGluY2x1ZGUoXCIke2N0ZXN0X3Rlc3RzX2ZpbGV9XCIpXG4iCi0gICAgImVsc2UoKVxuIgotICAgICIgIGFkZF90ZXN0KCR7VEFSR0VUfV9OT1RfQlVJTFQgJHtUQVJHRVR9X05PVF9CVUlMVClcbiIKLSAgICAiZW5kaWYoKVxuIgotICApCisgIGlmKF9ESVNDT1ZFUllfTU9ERSBTVFJFUVVBTCAiUE9TVF9CVUlMRCIpCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgVEFSR0VUICR7VEFSR0VUfSBQT1NUX0JVSUxECisgICAgICBCWVBST0RVQ1RTICIke2N0ZXN0X3Rlc3RzX2ZpbGV9IgorICAgICAgQ09NTUFORCAiJHtDTUFLRV9DT01NQU5EfSIKKyAgICAgICAgICAgICAgLUQgIlRFU1RfVEFSR0VUPSR7VEFSR0VUfSIKKyAgICAgICAgICAgICAgLUQgIlRFU1RfRVhFQ1VUQUJMRT0kPFRBUkdFVF9GSUxFOiR7VEFSR0VUfT4iCisgICAgICAgICAgICAgIC1EICJURVNUX0VYRUNVVE9SPSR7Y3Jvc3Njb21waWxpbmdfZW11bGF0b3J9IgorICAgICAgICAgICAgICAtRCAiVEVTVF9XT1JLSU5HX0RJUj0ke19XT1JLSU5HX0RJUkVDVE9SWX0iCisgICAgICAgICAgICAgIC1EICJURVNUX0VYVFJBX0FSR1M9JHtfRVhUUkFfQVJHU30iCisgICAgICAgICAgICAgIC1EICJURVNUX1BST1BFUlRJRVM9JHtfUFJPUEVSVElFU30iCisgICAgICAgICAgICAgIC1EICJURVNUX1BSRUZJWD0ke19URVNUX1BSRUZJWH0iCisgICAgICAgICAgICAgIC1EICJURVNUX1NVRkZJWD0ke19URVNUX1NVRkZJWH0iCisgICAgICAgICAgICAgIC1EICJOT19QUkVUVFlfVFlQRVM9JHtfTk9fUFJFVFRZX1RZUEVTfSIKKyAgICAgICAgICAgICAgLUQgIk5PX1BSRVRUWV9WQUxVRVM9JHtfTk9fUFJFVFRZX1ZBTFVFU30iCisgICAgICAgICAgICAgIC1EICJURVNUX0xJU1Q9JHtfVEVTVF9MSVNUfSIKKyAgICAgICAgICAgICAgLUQgIkNURVNUX0ZJTEU9JHtjdGVzdF90ZXN0c19maWxlfSIKKyAgICAgICAgICAgICAgLUQgIlRFU1RfRElTQ09WRVJZX1RJTUVPVVQ9JHtfRElTQ09WRVJZX1RJTUVPVVR9IgorICAgICAgICAgICAgICAtRCAiVEVTVF9YTUxfT1VUUFVUX0RJUj0ke19YTUxfT1VUUFVUX0RJUn0iCisgICAgICAgICAgICAgIC1QICIke19HT09HTEVURVNUX0RJU0NPVkVSX1RFU1RTX1NDUklQVH0iCisgICAgICBWRVJCQVRJTQorICAgICkKKworICAgIGZpbGUoV1JJVEUgIiR7Y3Rlc3RfaW5jbHVkZV9maWxlfSIKKyAgICAgICJpZihFWElTVFMgXCIke2N0ZXN0X3Rlc3RzX2ZpbGV9XCIpXG4iCisgICAgICAiICBpbmNsdWRlKFwiJHtjdGVzdF90ZXN0c19maWxlfVwiKVxuIgorICAgICAgImVsc2UoKVxuIgorICAgICAgIiAgYWRkX3Rlc3QoJHtUQVJHRVR9X05PVF9CVUlMVCAke1RBUkdFVH1fTk9UX0JVSUxUKVxuIgorICAgICAgImVuZGlmKClcbiIKKyAgICApCisgIGVsc2VpZihfRElTQ09WRVJZX01PREUgU1RSRVFVQUwgIlBSRV9URVNUIikKKworICAgIGdldF9wcm9wZXJ0eShHRU5FUkFUT1JfSVNfTVVMVElfQ09ORklHIEdMT0JBTAorICAgICAgICBQUk9QRVJUWSBHRU5FUkFUT1JfSVNfTVVMVElfQ09ORklHCisgICAgKQorCisgICAgaWYoR0VORVJBVE9SX0lTX01VTFRJX0NPTkZJRykKKyAgICAgIHNldChjdGVzdF90ZXN0c19maWxlICIke2N0ZXN0X2ZpbGVfYmFzZX1fdGVzdHMtJDxDT05GSUc+LmNtYWtlIikKKyAgICBlbmRpZigpCisKKyAgICBzdHJpbmcoQ09OQ0FUIGN0ZXN0X2luY2x1ZGVfY29udGVudAorICAgICAgImlmKEVYSVNUUyBcIiQ8VEFSR0VUX0ZJTEU6JHtUQVJHRVR9PlwiKSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAiICBpZihcIiQ8VEFSR0VUX0ZJTEU6JHtUQVJHRVR9PlwiIElTX05FV0VSX1RIQU4gXCIke2N0ZXN0X3Rlc3RzX2ZpbGV9XCIpIiAgICJcbiIKKyAgICAgICIgICAgaW5jbHVkZShHb29nbGVUZXN0QWRkVGVzdHMpIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgIiAgICBndGVzdF9kaXNjb3Zlcl90ZXN0c19pbXBsKCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAiICAgICAgVEVTVF9FWEVDVVRBQkxFIiAgICAgICAgIiBbPT1bIiAiJDxUQVJHRVRfRklMRToke1RBUkdFVH0+IiAgICJdPT1dIiAgICJcbiIKKyAgICAgICIgICAgICBURVNUX0VYRUNVVE9SIiAgICAgICAgICAiIFs9PVsiICIke2Nyb3NzY29tcGlsaW5nX2VtdWxhdG9yfSIgIl09PV0iICAgIlxuIgorICAgICAgIiAgICAgIFRFU1RfV09SS0lOR19ESVIiICAgICAgICIgWz09WyIgIiR7X1dPUktJTkdfRElSRUNUT1JZfSIgICAgICAiXT09XSIgICAiXG4iCisgICAgICAiICAgICAgVEVTVF9FWFRSQV9BUkdTIiAgICAgICAgIiBbPT1bIiAiJHtfRVhUUkFfQVJHU30iICAgICAgICAgICAgICJdPT1dIiAgICJcbiIKKyAgICAgICIgICAgICBURVNUX1BST1BFUlRJRVMiICAgICAgICAiIFs9PVsiICIke19QUk9QRVJUSUVTfSIgICAgICAgICAgICAgIl09PV0iICAgIlxuIgorICAgICAgIiAgICAgIFRFU1RfUFJFRklYIiAgICAgICAgICAgICIgWz09WyIgIiR7X1RFU1RfUFJFRklYfSIgICAgICAgICAgICAiXT09XSIgICAiXG4iCisgICAgICAiICAgICAgVEVTVF9TVUZGSVgiICAgICAgICAgICAgIiBbPT1bIiAiJHtfVEVTVF9TVUZGSVh9IiAgICAgICAgICAgICJdPT1dIiAgICJcbiIKKyAgICAgICIgICAgICBOT19QUkVUVFlfVFlQRVMiICAgICAgICAiIFs9PVsiICIke19OT19QUkVUVFlfVFlQRVN9IiAgICAgICAgIl09PV0iICAgIlxuIgorICAgICAgIiAgICAgIE5PX1BSRVRUWV9WQUxVRVMiICAgICAgICIgWz09WyIgIiR7X05PX1BSRVRUWV9WQUxVRVN9IiAgICAgICAiXT09XSIgICAiXG4iCisgICAgICAiICAgICAgVEVTVF9MSVNUIiAgICAgICAgICAgICAgIiBbPT1bIiAiJHtfVEVTVF9MSVNUfSIgICAgICAgICAgICAgICJdPT1dIiAgICJcbiIKKyAgICAgICIgICAgICBDVEVTVF9GSUxFIiAgICAgICAgICAgICAiIFs9PVsiICIke2N0ZXN0X3Rlc3RzX2ZpbGV9IiAgICAgICAgIl09PV0iICAgIlxuIgorICAgICAgIiAgICAgIFRFU1RfRElTQ09WRVJZX1RJTUVPVVQiICIgWz09WyIgIiR7X0RJU0NPVkVSWV9USU1FT1VUfSIgICAgICAiXT09XSIgICAiXG4iCisgICAgICAiICAgICAgVEVTVF9YTUxfT1VUUFVUX0RJUiIgICAgIiBbPT1bIiAiJHtfWE1MX09VVFBVVF9ESVJ9IiAgICAgICAgICJdPT1dIiAgICJcbiIKKyAgICAgICIgICAgKSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgIiAgZW5kaWYoKSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAiICBpbmNsdWRlKFwiJHtjdGVzdF90ZXN0c19maWxlfVwiKSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICJlbHNlKCkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgIiAgYWRkX3Rlc3QoJHtUQVJHRVR9X05PVF9CVUlMVCAke1RBUkdFVH1fTk9UX0JVSUxUKSIgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAiZW5kaWYoKSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICApCisKKyAgICBpZihHRU5FUkFUT1JfSVNfTVVMVElfQ09ORklHKQorICAgICAgZm9yZWFjaChfY29uZmlnICR7Q01BS0VfQ09ORklHVVJBVElPTl9UWVBFU30pCisgICAgICAgIGZpbGUoR0VORVJBVEUgT1VUUFVUICIke2N0ZXN0X2ZpbGVfYmFzZX1faW5jbHVkZS0ke19jb25maWd9LmNtYWtlIiBDT05URU5UICIke2N0ZXN0X2luY2x1ZGVfY29udGVudH0iIENPTkRJVElPTiAkPENPTkZJRzoke19jb25maWd9PikKKyAgICAgIGVuZGZvcmVhY2goKQorICAgICAgZmlsZShXUklURSAiJHtjdGVzdF9pbmNsdWRlX2ZpbGV9IiAiaW5jbHVkZShcIiR7Y3Rlc3RfZmlsZV9iYXNlfV9pbmNsdWRlLVwke0NURVNUX0NPTkZJR1VSQVRJT05fVFlQRX0uY21ha2VcIikiKQorICAgIGVsc2UoKQorICAgICAgZmlsZShHRU5FUkFURSBPVVRQVVQgIiR7Y3Rlc3RfZmlsZV9iYXNlfV9pbmNsdWRlLmNtYWtlIiBDT05URU5UICIke2N0ZXN0X2luY2x1ZGVfY29udGVudH0iKQorICAgICAgZmlsZShXUklURSAiJHtjdGVzdF9pbmNsdWRlX2ZpbGV9IiAiaW5jbHVkZShcIiR7Y3Rlc3RfZmlsZV9iYXNlfV9pbmNsdWRlLmNtYWtlXCIpIikKKyAgICBlbmRpZigpCisKKyAgZWxzZSgpCisgICAgbWVzc2FnZShTRU5EX0VSUk9SICJVbmtub3duIERJU0NPVkVSWV9NT0RFOiAke19ESVNDT1ZFUllfTU9ERX0iKQorICBlbmRpZigpCiAKICAgIyBBZGQgZGlzY292ZXJlZCB0ZXN0cyB0byBkaXJlY3RvcnkgVEVTVF9JTkNMVURFX0ZJTEVTCiAgIHNldF9wcm9wZXJ0eShESVJFQ1RPUlkKZGlmZiAtLWdpdCBhL01vZHVsZXMvR29vZ2xlVGVzdEFkZFRlc3RzLmNtYWtlIGIvTW9kdWxlcy9Hb29nbGVUZXN0QWRkVGVzdHMuY21ha2UKaW5kZXggNGFiYmJlYy4uNjVhZjRjMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9Hb29nbGVUZXN0QWRkVGVzdHMuY21ha2UKKysrIGIvTW9kdWxlcy9Hb29nbGVUZXN0QWRkVGVzdHMuY21ha2UKQEAgLTEsMTA2ICsxLDE3NSBAQAogIyBEaXN0cmlidXRlZCB1bmRlciB0aGUgT1NJLWFwcHJvdmVkIEJTRCAzLUNsYXVzZSBMaWNlbnNlLiAgU2VlIGFjY29tcGFueWluZwogIyBmaWxlIENvcHlyaWdodC50eHQgb3IgaHR0cHM6Ly9jbWFrZS5vcmcvbGljZW5zaW5nIGZvciBkZXRhaWxzLgogCi1zZXQocHJlZml4ICIke1RFU1RfUFJFRklYfSIpCi1zZXQoc3VmZml4ICIke1RFU1RfU1VGRklYfSIpCi1zZXQoZXh0cmFfYXJncyAke1RFU1RfRVhUUkFfQVJHU30pCi1zZXQocHJvcGVydGllcyAke1RFU1RfUFJPUEVSVElFU30pCi1zZXQoc2NyaXB0KQotc2V0KHN1aXRlKQotc2V0KHRlc3RzKQorY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OICR7Q01BS0VfVkVSU0lPTn0pCiAKLWZ1bmN0aW9uKGFkZF9jb21tYW5kIE5BTUUpCisjIE92ZXJ3cml0ZSBwb3NzaWJseSBleGlzdGluZyAke19DVEVTVF9GSUxFfSB3aXRoIGVtcHR5IGZpbGUKK3NldChmbHVzaF90ZXN0c19NT0RFIFdSSVRFKQorCisjIEZsdXNoZXMgc2NyaXB0IHRvICR7X0NURVNUX0ZJTEV9CittYWNybyhmbHVzaF9zY3JpcHQpCisgIGZpbGUoJHtmbHVzaF90ZXN0c19NT0RFfSAiJHtfQ1RFU1RfRklMRX0iICIke3NjcmlwdH0iKQorICBzZXQoZmx1c2hfdGVzdHNfTU9ERSBBUFBFTkQpCisKKyAgc2V0KHNjcmlwdCAiIikKK2VuZG1hY3JvKCkKKworIyBGbHVzaGVzIHRlc3RzX2J1ZmZlciB0byB0ZXN0cworbWFjcm8oZmx1c2hfdGVzdHNfYnVmZmVyKQorICBsaXN0KEFQUEVORCB0ZXN0cyAiJHt0ZXN0c19idWZmZXJ9IikKKyAgc2V0KHRlc3RzX2J1ZmZlciAiIikKK2VuZG1hY3JvKCkKKworbWFjcm8oYWRkX2NvbW1hbmQgTkFNRSkKICAgc2V0KF9hcmdzICIiKQogICBmb3JlYWNoKF9hcmcgJHtBUkdOfSkKICAgICBpZihfYXJnIE1BVENIRVMgIlteLS4vOmEtekEtWjAtOV9dIikKLSAgICAgIHNldChfYXJncyAiJHtfYXJnc30gWz09WyR7X2FyZ31dPT1dIikKKyAgICAgIHN0cmluZyhBUFBFTkQgX2FyZ3MgIiBbPT1bJHtfYXJnfV09PV0iKQogICAgIGVsc2UoKQotICAgICAgc2V0KF9hcmdzICIke19hcmdzfSAke19hcmd9IikKKyAgICAgIHN0cmluZyhBUFBFTkQgX2FyZ3MgIiAke19hcmd9IikKICAgICBlbmRpZigpCiAgIGVuZGZvcmVhY2goKQotICBzZXQoc2NyaXB0ICIke3NjcmlwdH0ke05BTUV9KCR7X2FyZ3N9KVxuIiBQQVJFTlRfU0NPUEUpCi1lbmRmdW5jdGlvbigpCisgIHN0cmluZyhBUFBFTkQgc2NyaXB0ICIke05BTUV9KCR7X2FyZ3N9KVxuIikKKyAgc3RyaW5nKExFTkdUSCAiJHtzY3JpcHR9IiBfc2NyaXB0X2xlbikKKyAgaWYoJHtfc2NyaXB0X2xlbn0gR1JFQVRFUiAiNTAwMDAiKQorICAgIGZsdXNoX3NjcmlwdCgpCisgIGVuZGlmKCkKKyAgIyBVbnNldHMgbWFjcm8gbG9jYWwgdmFyaWFibGVzIHRvIHByZXZlbnQgbGVha2FnZSBvdXRzaWRlIG9mIHRoaXMgbWFjcm8uCisgIHVuc2V0KF9hcmdzKQorICB1bnNldChfc2NyaXB0X2xlbikKK2VuZG1hY3JvKCkKIAotIyBSdW4gdGVzdCBleGVjdXRhYmxlIHRvIGdldCBsaXN0IG9mIGF2YWlsYWJsZSB0ZXN0cwotaWYoTk9UIEVYSVNUUyAiJHtURVNUX0VYRUNVVEFCTEV9IikKLSAgbWVzc2FnZShGQVRBTF9FUlJPUgotICAgICJTcGVjaWZpZWQgdGVzdCBleGVjdXRhYmxlIGRvZXMgbm90IGV4aXN0LlxuIgotICAgICIgIFBhdGg6ICcke1RFU1RfRVhFQ1VUQUJMRX0nIgorZnVuY3Rpb24oZ3Rlc3RfZGlzY292ZXJfdGVzdHNfaW1wbCkKKworICBjbWFrZV9wYXJzZV9hcmd1bWVudHMoCisgICAgIiIKKyAgICAiIgorICAgICJOT19QUkVUVFlfVFlQRVM7Tk9fUFJFVFRZX1ZBTFVFUztURVNUX0VYRUNVVEFCTEU7VEVTVF9FWEVDVVRPUjtURVNUX1dPUktJTkdfRElSO1RFU1RfUFJFRklYO1RFU1RfU1VGRklYO1RFU1RfTElTVDtDVEVTVF9GSUxFO1RFU1RfRElTQ09WRVJZX1RJTUVPVVQ7VEVTVF9YTUxfT1VUUFVUX0RJUiIKKyAgICAiVEVTVF9FWFRSQV9BUkdTO1RFU1RfUFJPUEVSVElFUyIKKyAgICAke0FSR059CiAgICkKLWVuZGlmKCkKLWV4ZWN1dGVfcHJvY2VzcygKLSAgQ09NTUFORCAke1RFU1RfRVhFQ1VUT1J9ICIke1RFU1RfRVhFQ1VUQUJMRX0iIC0tZ3Rlc3RfbGlzdF90ZXN0cwotICBXT1JLSU5HX0RJUkVDVE9SWSAiJHtURVNUX1dPUktJTkdfRElSfSIKLSAgVElNRU9VVCAke1RFU1RfRElTQ09WRVJZX1RJTUVPVVR9Ci0gIE9VVFBVVF9WQVJJQUJMRSBvdXRwdXQKLSAgUkVTVUxUX1ZBUklBQkxFIHJlc3VsdAotKQotaWYoTk9UICR7cmVzdWx0fSBFUVVBTCAwKQotICBzdHJpbmcoUkVQTEFDRSAiXG4iICJcbiAgICAiIG91dHB1dCAiJHtvdXRwdXR9IikKLSAgbWVzc2FnZShGQVRBTF9FUlJPUgotICAgICJFcnJvciBydW5uaW5nIHRlc3QgZXhlY3V0YWJsZS5cbiIKLSAgICAiICBQYXRoOiAnJHtURVNUX0VYRUNVVEFCTEV9J1xuIgotICAgICIgIFJlc3VsdDogJHtyZXN1bHR9XG4iCi0gICAgIiAgT3V0cHV0OlxuIgotICAgICIgICAgJHtvdXRwdXR9XG4iCisKKyAgc2V0KHByZWZpeCAiJHtfVEVTVF9QUkVGSVh9IikKKyAgc2V0KHN1ZmZpeCAiJHtfVEVTVF9TVUZGSVh9IikKKyAgc2V0KGV4dHJhX2FyZ3MgJHtfVEVTVF9FWFRSQV9BUkdTfSkKKyAgc2V0KHByb3BlcnRpZXMgJHtfVEVTVF9QUk9QRVJUSUVTfSkKKyAgc2V0KHNjcmlwdCkKKyAgc2V0KHN1aXRlKQorICBzZXQodGVzdHMpCisgIHNldCh0ZXN0c19idWZmZXIpCisKKyAgIyBSdW4gdGVzdCBleGVjdXRhYmxlIHRvIGdldCBsaXN0IG9mIGF2YWlsYWJsZSB0ZXN0cworICBpZihOT1QgRVhJU1RTICIke19URVNUX0VYRUNVVEFCTEV9IikKKyAgICBtZXNzYWdlKEZBVEFMX0VSUk9SCisgICAgICAiU3BlY2lmaWVkIHRlc3QgZXhlY3V0YWJsZSBkb2VzIG5vdCBleGlzdC5cbiIKKyAgICAgICIgIFBhdGg6ICcke19URVNUX0VYRUNVVEFCTEV9JyIKKyAgICApCisgIGVuZGlmKCkKKyAgZXhlY3V0ZV9wcm9jZXNzKAorICAgIENPTU1BTkQgJHtfVEVTVF9FWEVDVVRPUn0gIiR7X1RFU1RfRVhFQ1VUQUJMRX0iIC0tZ3Rlc3RfbGlzdF90ZXN0cworICAgIFdPUktJTkdfRElSRUNUT1JZICIke19URVNUX1dPUktJTkdfRElSfSIKKyAgICBUSU1FT1VUICR7X1RFU1RfRElTQ09WRVJZX1RJTUVPVVR9CisgICAgT1VUUFVUX1ZBUklBQkxFIG91dHB1dAorICAgIFJFU1VMVF9WQVJJQUJMRSByZXN1bHQKICAgKQotZW5kaWYoKQorICBpZihOT1QgJHtyZXN1bHR9IEVRVUFMIDApCisgICAgc3RyaW5nKFJFUExBQ0UgIlxuIiAiXG4gICAgIiBvdXRwdXQgIiR7b3V0cHV0fSIpCisgICAgbWVzc2FnZShGQVRBTF9FUlJPUgorICAgICAgIkVycm9yIHJ1bm5pbmcgdGVzdCBleGVjdXRhYmxlLlxuIgorICAgICAgIiAgUGF0aDogJyR7X1RFU1RfRVhFQ1VUQUJMRX0nXG4iCisgICAgICAiICBSZXN1bHQ6ICR7cmVzdWx0fVxuIgorICAgICAgIiAgT3V0cHV0OlxuIgorICAgICAgIiAgICAke291dHB1dH1cbiIKKyAgICApCisgIGVuZGlmKCkKIAotc3RyaW5nKFJFUExBQ0UgIlxuIiAiOyIgb3V0cHV0ICIke291dHB1dH0iKQorICBzdHJpbmcoUkVQTEFDRSAiXG4iICI7IiBvdXRwdXQgIiR7b3V0cHV0fSIpCiAKLSMgUGFyc2Ugb3V0cHV0Ci1mb3JlYWNoKGxpbmUgJHtvdXRwdXR9KQotICAjIFNraXAgaGVhZGVyCi0gIGlmKE5PVCBsaW5lIE1BVENIRVMgImd0ZXN0X21haW5cXC5jYyIpCi0gICAgIyBEbyB3ZSBoYXZlIGEgbW9kdWxlIG5hbWUgb3IgYSB0ZXN0IG5hbWU/Ci0gICAgaWYoTk9UIGxpbmUgTUFUQ0hFUyAiXiAgIikKLSAgICAgICMgTW9kdWxlOyByZW1vdmUgdHJhaWxpbmcgJy4nIHRvIGdldCBqdXN0IHRoZSBuYW1lLi4uCi0gICAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXFwuKCAqIy4qKT8iICIiIHN1aXRlICIke2xpbmV9IikKLSAgICAgIGlmKGxpbmUgTUFUQ0hFUyAiIyIgQU5EIE5PVCBOT19QUkVUVFlfVFlQRVMpCi0gICAgICAgIHN0cmluZyhSRUdFWCBSRVBMQUNFICIvWzAtOV1cXC4rICsjLio9ICsiICIvIiBwcmV0dHlfc3VpdGUgIiR7bGluZX0iKQorICAjIFBhcnNlIG91dHB1dAorICBmb3JlYWNoKGxpbmUgJHtvdXRwdXR9KQorICAgICMgU2tpcCBoZWFkZXIKKyAgICBpZihOT1QgbGluZSBNQVRDSEVTICJndGVzdF9tYWluXFwuY2MiKQorICAgICAgIyBEbyB3ZSBoYXZlIGEgbW9kdWxlIG5hbWUgb3IgYSB0ZXN0IG5hbWU/CisgICAgICBpZihOT1QgbGluZSBNQVRDSEVTICJeICAiKQorICAgICAgICAjIE1vZHVsZTsgcmVtb3ZlIHRyYWlsaW5nICcuJyB0byBnZXQganVzdCB0aGUgbmFtZS4uLgorICAgICAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXFwuKCAqIy4qKT8iICIiIHN1aXRlICIke2xpbmV9IikKKyAgICAgICAgaWYobGluZSBNQVRDSEVTICIjIiBBTkQgTk9UIF9OT19QUkVUVFlfVFlQRVMpCisgICAgICAgICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIi9bMC05XVxcLisgKyMuKj0gKyIgIi8iIHByZXR0eV9zdWl0ZSAiJHtsaW5lfSIpCisgICAgICAgIGVsc2UoKQorICAgICAgICAgIHNldChwcmV0dHlfc3VpdGUgIiR7c3VpdGV9IikKKyAgICAgICAgZW5kaWYoKQorICAgICAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXkRJU0FCTEVEXyIgIiIgcHJldHR5X3N1aXRlICIke3ByZXR0eV9zdWl0ZX0iKQogICAgICAgZWxzZSgpCi0gICAgICAgIHNldChwcmV0dHlfc3VpdGUgIiR7c3VpdGV9IikKLSAgICAgIGVuZGlmKCkKLSAgICAgIHN0cmluZyhSRUdFWCBSRVBMQUNFICJeRElTQUJMRURfIiAiIiBwcmV0dHlfc3VpdGUgIiR7cHJldHR5X3N1aXRlfSIpCi0gICAgZWxzZSgpCi0gICAgICAjIFRlc3QgbmFtZTsgc3RyaXAgc3BhY2VzIGFuZCBjb21tZW50cyB0byBnZXQganVzdCB0aGUgbmFtZS4uLgotICAgICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIiArIiAiIiB0ZXN0ICIke2xpbmV9IikKLSAgICAgIGlmKHRlc3QgTUFUQ0hFUyAiIyIgQU5EIE5PVCBOT19QUkVUVFlfVkFMVUVTKQotICAgICAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiL1swLTldKyNHZXRQYXJhbS4uPSIgIi8iIHByZXR0eV90ZXN0ICIke3Rlc3R9IikKLSAgICAgIGVsc2UoKQotICAgICAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiIy4qIiAiIiBwcmV0dHlfdGVzdCAiJHt0ZXN0fSIpCi0gICAgICBlbmRpZigpCi0gICAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXkRJU0FCTEVEXyIgIiIgcHJldHR5X3Rlc3QgIiR7cHJldHR5X3Rlc3R9IikKLSAgICAgIHN0cmluZyhSRUdFWCBSRVBMQUNFICIjLioiICIiIHRlc3QgIiR7dGVzdH0iKQotICAgICAgIyAuLi5hbmQgYWRkIHRvIHNjcmlwdAotICAgICAgYWRkX2NvbW1hbmQoYWRkX3Rlc3QKLSAgICAgICAgIiR7cHJlZml4fSR7cHJldHR5X3N1aXRlfS4ke3ByZXR0eV90ZXN0fSR7c3VmZml4fSIKLSAgICAgICAgJHtURVNUX0VYRUNVVE9SfQotICAgICAgICAiJHtURVNUX0VYRUNVVEFCTEV9IgotICAgICAgICAiLS1ndGVzdF9maWx0ZXI9JHtzdWl0ZX0uJHt0ZXN0fSIKLSAgICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMiCi0gICAgICAgICR7ZXh0cmFfYXJnc30KLSAgICAgICkKLSAgICAgIGlmKHN1aXRlIE1BVENIRVMgIl5ESVNBQkxFRCIgT1IgdGVzdCBNQVRDSEVTICJeRElTQUJMRUQiKQorICAgICAgICAjIFRlc3QgbmFtZTsgc3RyaXAgc3BhY2VzIGFuZCBjb21tZW50cyB0byBnZXQganVzdCB0aGUgbmFtZS4uLgorICAgICAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiICsiICIiIHRlc3QgIiR7bGluZX0iKQorICAgICAgICBpZih0ZXN0IE1BVENIRVMgIiMiIEFORCBOT1QgX05PX1BSRVRUWV9WQUxVRVMpCisgICAgICAgICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIi9bMC05XSsjR2V0UGFyYW0uLj0iICIvIiBwcmV0dHlfdGVzdCAiJHt0ZXN0fSIpCisgICAgICAgIGVsc2UoKQorICAgICAgICAgIHN0cmluZyhSRUdFWCBSRVBMQUNFICIjLioiICIiIHByZXR0eV90ZXN0ICIke3Rlc3R9IikKKyAgICAgICAgZW5kaWYoKQorICAgICAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXkRJU0FCTEVEXyIgIiIgcHJldHR5X3Rlc3QgIiR7cHJldHR5X3Rlc3R9IikKKyAgICAgICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIiMuKiIgIiIgdGVzdCAiJHt0ZXN0fSIpCisgICAgICAgIGlmKE5PVCAiJHtfVEVTVF9YTUxfT1VUUFVUX0RJUn0iIFNUUkVRVUFMICIiKQorICAgICAgICAgIHNldChURVNUX1hNTF9PVVRQVVRfUEFSQU0gIi0tZ3Rlc3Rfb3V0cHV0PXhtbDoke19URVNUX1hNTF9PVVRQVVRfRElSfS8ke3ByZWZpeH0ke3ByZXR0eV9zdWl0ZX0uJHtwcmV0dHlfdGVzdH0ke3N1ZmZpeH0ueG1sIikKKyAgICAgICAgZWxzZSgpCisgICAgICAgICAgdW5zZXQoVEVTVF9YTUxfT1VUUFVUX1BBUkFNKQorICAgICAgICBlbmRpZigpCisgICAgICAgICMgLi4uYW5kIGFkZCB0byBzY3JpcHQKKyAgICAgICAgYWRkX2NvbW1hbmQoYWRkX3Rlc3QKKyAgICAgICAgICAiJHtwcmVmaXh9JHtwcmV0dHlfc3VpdGV9LiR7cHJldHR5X3Rlc3R9JHtzdWZmaXh9IgorICAgICAgICAgICR7X1RFU1RfRVhFQ1VUT1J9CisgICAgICAgICAgIiR7X1RFU1RfRVhFQ1VUQUJMRX0iCisgICAgICAgICAgIi0tZ3Rlc3RfZmlsdGVyPSR7c3VpdGV9LiR7dGVzdH0iCisgICAgICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMiCisgICAgICAgICAgJHtURVNUX1hNTF9PVVRQVVRfUEFSQU19CisgICAgICAgICAgJHtleHRyYV9hcmdzfQorICAgICAgICApCisgICAgICAgIGlmKHN1aXRlIE1BVENIRVMgIl5ESVNBQkxFRCIgT1IgdGVzdCBNQVRDSEVTICJeRElTQUJMRUQiKQorICAgICAgICAgIGFkZF9jb21tYW5kKHNldF90ZXN0c19wcm9wZXJ0aWVzCisgICAgICAgICAgICAiJHtwcmVmaXh9JHtwcmV0dHlfc3VpdGV9LiR7cHJldHR5X3Rlc3R9JHtzdWZmaXh9IgorICAgICAgICAgICAgUFJPUEVSVElFUyBESVNBQkxFRCBUUlVFCisgICAgICAgICAgKQorICAgICAgICBlbmRpZigpCiAgICAgICAgIGFkZF9jb21tYW5kKHNldF90ZXN0c19wcm9wZXJ0aWVzCiAgICAgICAgICAgIiR7cHJlZml4fSR7cHJldHR5X3N1aXRlfS4ke3ByZXR0eV90ZXN0fSR7c3VmZml4fSIKLSAgICAgICAgICBQUk9QRVJUSUVTIERJU0FCTEVEIFRSVUUKKyAgICAgICAgICBQUk9QRVJUSUVTCisgICAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgIiR7X1RFU1RfV09SS0lOR19ESVJ9IgorICAgICAgICAgICR7cHJvcGVydGllc30KICAgICAgICAgKQorICAgICAgICBsaXN0KEFQUEVORCB0ZXN0c19idWZmZXIgIiR7cHJlZml4fSR7cHJldHR5X3N1aXRlfS4ke3ByZXR0eV90ZXN0fSR7c3VmZml4fSIpCisgICAgICAgIGxpc3QoTEVOR1RIIHRlc3RzX2J1ZmZlciB0ZXN0c19idWZmZXJfbGVuZ3RoKQorICAgICAgICBpZigke3Rlc3RzX2J1ZmZlcl9sZW5ndGh9IEdSRUFURVIgIjI1MCIpCisgICAgICAgICAgZmx1c2hfdGVzdHNfYnVmZmVyKCkKKyAgICAgICAgZW5kaWYoKQogICAgICAgZW5kaWYoKQotICAgICAgYWRkX2NvbW1hbmQoc2V0X3Rlc3RzX3Byb3BlcnRpZXMKLSAgICAgICAgIiR7cHJlZml4fSR7cHJldHR5X3N1aXRlfS4ke3ByZXR0eV90ZXN0fSR7c3VmZml4fSIKLSAgICAgICAgUFJPUEVSVElFUwotICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAiJHtURVNUX1dPUktJTkdfRElSfSIKLSAgICAgICAgJHtwcm9wZXJ0aWVzfQotICAgICAgKQotICAgICBsaXN0KEFQUEVORCB0ZXN0cyAiJHtwcmVmaXh9JHtwcmV0dHlfc3VpdGV9LiR7cHJldHR5X3Rlc3R9JHtzdWZmaXh9IikKICAgICBlbmRpZigpCi0gIGVuZGlmKCkKLWVuZGZvcmVhY2goKQorICBlbmRmb3JlYWNoKCkKIAotIyBDcmVhdGUgYSBsaXN0IG9mIGFsbCBkaXNjb3ZlcmVkIHRlc3RzLCB3aGljaCB1c2VycyBtYXkgdXNlIHRvIGUuZy4gc2V0Ci0jIHByb3BlcnRpZXMgb24gdGhlIHRlc3RzCi1hZGRfY29tbWFuZChzZXQgJHtURVNUX0xJU1R9ICR7dGVzdHN9KQogCi0jIFdyaXRlIENUZXN0IHNjcmlwdAotZmlsZShXUklURSAiJHtDVEVTVF9GSUxFfSIgIiR7c2NyaXB0fSIpCisgICMgQ3JlYXRlIGEgbGlzdCBvZiBhbGwgZGlzY292ZXJlZCB0ZXN0cywgd2hpY2ggdXNlcnMgbWF5IHVzZSB0byBlLmcuIHNldAorICAjIHByb3BlcnRpZXMgb24gdGhlIHRlc3RzCisgIGZsdXNoX3Rlc3RzX2J1ZmZlcigpCisgIGFkZF9jb21tYW5kKHNldCAke19URVNUX0xJU1R9ICR7dGVzdHN9KQorCisgICMgV3JpdGUgQ1Rlc3Qgc2NyaXB0CisgIGZsdXNoX3NjcmlwdCgpCisKK2VuZGZ1bmN0aW9uKCkKKworaWYoQ01BS0VfU0NSSVBUX01PREVfRklMRSkKKyAgZ3Rlc3RfZGlzY292ZXJfdGVzdHNfaW1wbCgKKyAgICBOT19QUkVUVFlfVFlQRVMgJHtOT19QUkVUVFlfVFlQRVN9CisgICAgTk9fUFJFVFRZX1ZBTFVFUyAke05PX1BSRVRUWV9WQUxVRVN9CisgICAgVEVTVF9FWEVDVVRBQkxFICR7VEVTVF9FWEVDVVRBQkxFfQorICAgIFRFU1RfRVhFQ1VUT1IgJHtURVNUX0VYRUNVVE9SfQorICAgIFRFU1RfV09SS0lOR19ESVIgJHtURVNUX1dPUktJTkdfRElSfQorICAgIFRFU1RfUFJFRklYICR7VEVTVF9QUkVGSVh9CisgICAgVEVTVF9TVUZGSVggJHtURVNUX1NVRkZJWH0KKyAgICBURVNUX0xJU1QgJHtURVNUX0xJU1R9CisgICAgQ1RFU1RfRklMRSAke0NURVNUX0ZJTEV9CisgICAgVEVTVF9ESVNDT1ZFUllfVElNRU9VVCAke1RFU1RfRElTQ09WRVJZX1RJTUVPVVR9CisgICAgVEVTVF9YTUxfT1VUUFVUX0RJUiAke1RFU1RfWE1MX09VVFBVVF9ESVJ9CisgICAgVEVTVF9FWFRSQV9BUkdTICR7VEVTVF9FWFRSQV9BUkdTfQorICAgIFRFU1RfUFJPUEVSVElFUyAke1RFU1RfUFJPUEVSVElFU30KKyAgKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9JbnRlcm5hbC9DUGFjay9DUGFja051R2V0LmNtYWtlIGIvTW9kdWxlcy9JbnRlcm5hbC9DUGFjay9DUGFja051R2V0LmNtYWtlCmluZGV4IDFmNGJjZmQuLjIwZWVkMmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvSW50ZXJuYWwvQ1BhY2svQ1BhY2tOdUdldC5jbWFrZQorKysgYi9Nb2R1bGVzL0ludGVybmFsL0NQYWNrL0NQYWNrTnVHZXQuY21ha2UKQEAgLTI4Nyw3ICsyODcsMTEgQEAKICAgICBleGVjdXRlX3Byb2Nlc3MoCiAgICAgICAgIENPTU1BTkQgIiR7TlVHRVRfRVhFQ1VUQUJMRX0iIHBhY2sgJHtDUEFDS19OVUdFVF9QQUNLX0FERElUSU9OQUxfT1BUSU9OU30KICAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgIiR7Q1BBQ0tfVEVNUE9SQVJZX0RJUkVDVE9SWX0iCisgICAgICAgIFJFU1VMVF9WQVJJQUJMRSBfbnVnZXRfcmVzdWx0CiAgICAgICApCisgICAgaWYoTk9UIF9udWdldF9yZXN1bHQgRVFVQUwgMCkKKyAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiTnVnZXQgcGFjayBmYWlsZWQiKQorICAgIGVuZGlmKCkKIAogZWxzZWlmKENQQUNLX05VR0VUX0FMTF9JTl9PTkUpCiAgICAgIyBUaGlzIHZhcmlhYmxlIGBDUEFDS19OVUdFVF9BTExfSU5fT05FYCBzZXQgYnkgQysrIGNvZGU6CkBAIC0zMDAsNyArMzA0LDExIEBACiAgICAgZXhlY3V0ZV9wcm9jZXNzKAogICAgICAgICBDT01NQU5EICIke05VR0VUX0VYRUNVVEFCTEV9IiBwYWNrICR7Q1BBQ0tfTlVHRVRfUEFDS19BRERJVElPTkFMX09QVElPTlN9CiAgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICIke0NQQUNLX1RFTVBPUkFSWV9ESVJFQ1RPUll9IgorICAgICAgICBSRVNVTFRfVkFSSUFCTEUgX251Z2V0X3Jlc3VsdAogICAgICAgKQorICAgIGlmKE5PVCBfbnVnZXRfcmVzdWx0IEVRVUFMIDApCisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIk51Z2V0IHBhY2sgZmFpbGVkIikKKyAgICBlbmRpZigpCiAKIGVsc2UoKQogICAgICMgSXMgdGhlcmUgYW55IGdyb3VwZWQgY29tcG9uZW50PwpAQCAtMzIyLDcgKzMzMCwxMSBAQAogICAgICAgICAgICAgZXhlY3V0ZV9wcm9jZXNzKAogICAgICAgICAgICAgICAgIENPTU1BTkQgIiR7TlVHRVRfRVhFQ1VUQUJMRX0iIHBhY2sgJHtDUEFDS19OVUdFVF9QQUNLX0FERElUSU9OQUxfT1BUSU9OU30KICAgICAgICAgICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAiJHtDUEFDS19URU1QT1JBUllfRElSRUNUT1JZfSIKKyAgICAgICAgICAgICAgICBSRVNVTFRfVkFSSUFCTEUgX251Z2V0X3Jlc3VsdAogICAgICAgICAgICAgICApCisgICAgICAgICAgICBpZihOT1QgX251Z2V0X3Jlc3VsdCBFUVVBTCAwKQorICAgICAgICAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIk51Z2V0IHBhY2sgZmFpbGVkIikKKyAgICAgICAgICAgIGVuZGlmKCkKICAgICAgICAgZW5kZm9yZWFjaCgpCiAgICAgZW5kaWYoKQogICAgICMgSXMgdGhlcmUgYW55IHNpbmdsZSBjb21wb25lbnQgcGFja2FnZSBuZWVkZWQ/CkBAIC0zNDEsNyArMzUzLDExIEBACiAgICAgICAgICAgICBleGVjdXRlX3Byb2Nlc3MoCiAgICAgICAgICAgICAgICAgQ09NTUFORCAiJHtOVUdFVF9FWEVDVVRBQkxFfSIgcGFjayAke0NQQUNLX05VR0VUX1BBQ0tfQURESVRJT05BTF9PUFRJT05TfQogICAgICAgICAgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICIke0NQQUNLX1RFTVBPUkFSWV9ESVJFQ1RPUll9IgorICAgICAgICAgICAgICAgIFJFU1VMVF9WQVJJQUJMRSBfbnVnZXRfcmVzdWx0CiAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmKE5PVCBfbnVnZXRfcmVzdWx0IEVRVUFMIDApCisgICAgICAgICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiTnVnZXQgcGFjayBmYWlsZWQiKQorICAgICAgICAgICAgZW5kaWYoKQogICAgICAgICBlbmRmb3JlYWNoKCkKICAgICBlbmRpZigpCiBlbmRpZigpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL0ludGVybmFsL0NQYWNrL0NQYWNrUlBNLmNtYWtlIGIvTW9kdWxlcy9JbnRlcm5hbC9DUGFjay9DUGFja1JQTS5jbWFrZQppbmRleCAzNDg1ZTdkLi4wOGJiYzY4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL0ludGVybmFsL0NQYWNrL0NQYWNrUlBNLmNtYWtlCisrKyBiL01vZHVsZXMvSW50ZXJuYWwvQ1BhY2svQ1BhY2tSUE0uY21ha2UKQEAgLTEwOTksMTYgKzEwOTksMTggQEAKIAogICAjIENQQUNLX1JQTV9QT1NUX0lOU1RBTExfU0NSSVBUX0ZJTEUgKG9yIENQQUNLX1JQTV88Q09NUE9ORU5UPl9QT1NUX0lOU1RBTExfU0NSSVBUX0ZJTEUpCiAgICMgQ1BBQ0tfUlBNX1BPU1RfVU5JTlNUQUxMX1NDUklQVF9GSUxFIChvciBDUEFDS19SUE1fPENPTVBPTkVOVD5fUE9TVF9VTklOU1RBTExfU0NSSVBUX0ZJTEUpCi0gICMgTWF5IGJlIHVzZWQgdG8gZW1iZWQgYSBwb3N0ICh1bilpbnN0YWxsYXRpb24gc2NyaXB0IGluIHRoZSBzcGVjIGZpbGUuCisgICMgQ1BBQ0tfUlBNX1BPU1RfVFJBTlNfU0NSSVBUX0ZJTEUgKG9yIENQQUNLX1JQTV88Q09NUE9ORU5UPl9QT1NUX1RSQU5TX1NDUklQVF9GSUxFKQorICAjIE1heSBiZSB1c2VkIHRvIGVtYmVkIGEgcG9zdCBpbnN0YWxsYXRpb24vdW5pbnN0YWxsYXRpb24vdHJhbnNhY3Rpb24gc2NyaXB0IGluIHRoZSBzcGVjIGZpbGUuCiAgICMgVGhlIHJlZmVycmVkIHNjcmlwdCBmaWxlKHMpIHdpbGwgYmUgcmVhZCBhbmQgZGlyZWN0bHkKLSAgIyBwdXQgYWZ0ZXIgdGhlICVwb3N0IG9yICVwb3N0dW4gc2VjdGlvbgorICAjIHB1dCBhZnRlciB0aGUgJXBvc3Qgb3IgJXBvc3R1biBvciAlcG9zdHRyYW5zIHNlY3Rpb24KICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICMgQ1BBQ0tfUlBNX1BSRV9JTlNUQUxMX1NDUklQVF9GSUxFIChvciBDUEFDS19SUE1fPENPTVBPTkVOVD5fUFJFX0lOU1RBTExfU0NSSVBUX0ZJTEUpCiAgICMgQ1BBQ0tfUlBNX1BSRV9VTklOU1RBTExfU0NSSVBUX0ZJTEUgKG9yIENQQUNLX1JQTV88Q09NUE9ORU5UPl9QUkVfVU5JTlNUQUxMX1NDUklQVF9GSUxFKQotICAjIE1heSBiZSB1c2VkIHRvIGVtYmVkIGEgcHJlICh1bilpbnN0YWxsYXRpb24gc2NyaXB0IGluIHRoZSBzcGVjIGZpbGUuCisgICMgQ1BBQ0tfUlBNX1BSRV9UUkFOU19TQ1JJUFRfRklMRSAob3IgQ1BBQ0tfUlBNXzxDT01QT05FTlQ+X1BSRV9UUkFOU19TQ1JJUFRfRklMRSkKKyAgIyBNYXkgYmUgdXNlZCB0byBlbWJlZCBhIHByZSBpbnN0YWxsYXRpb24vdW5pbnN0YWxsYXRpb24vdHJhbnNhY3Rpb24gc2NyaXB0IGluIHRoZSBzcGVjIGZpbGUuCiAgICMgVGhlIHJlZmVycmVkIHNjcmlwdCBmaWxlKHMpIHdpbGwgYmUgcmVhZCBhbmQgZGlyZWN0bHkKLSAgIyBwdXQgYWZ0ZXIgdGhlICVwcmUgb3IgJXByZXVuIHNlY3Rpb24KLSAgZm9yZWFjaChSUE1fU0NSSVBUX0ZJTEVfVFlQRV8gIklOU1RBTEwiICJVTklOU1RBTEwiKQorICAjIHB1dCBhZnRlciB0aGUgJXByZSBvciAlcHJldW4gb3IgJXByZXRyYW5zIHNlY3Rpb24KKyAgZm9yZWFjaChSUE1fU0NSSVBUX0ZJTEVfVFlQRV8gIklOU1RBTEwiICJVTklOU1RBTEwiICJUUkFOUyIpCiAgICAgZm9yZWFjaChSUE1fU0NSSVBUX0ZJTEVfVElNRV8gIlBSRSIgIlBPU1QiKQogICAgICAgc2V0KCJDUEFDS19SUE1fJHtSUE1fU0NSSVBUX0ZJTEVfVElNRV99XyR7UlBNX1NDUklQVF9GSUxFX1RZUEVffV9SRUFEX0ZJTEUiCiAgICAgICAgICIke0NQQUNLX1JQTV8ke1JQTV9TQ1JJUFRfRklMRV9USU1FX31fJHtSUE1fU0NSSVBUX0ZJTEVfVFlQRV99X1NDUklQVF9GSUxFfSIpCkBAIC0xNzI3LDEyICsxNzI5LDE4IEBACiBcQFJQTV9TWU1MSU5LX1BPU1RJTlNUQUxMXEAKIFxAQ1BBQ0tfUlBNX1NQRUNfUE9TVElOU1RBTExcQAogCislcG9zdHRyYW5zCitcQENQQUNLX1JQTV9TUEVDX1BPU1RUUkFOU1xACisKICVwb3N0dW4KIFxAQ1BBQ0tfUlBNX1NQRUNfUE9TVFVOSU5TVEFMTFxACiAKICVwcmUKIFxAQ1BBQ0tfUlBNX1NQRUNfUFJFSU5TVEFMTFxACiAKKyVwcmV0cmFucworXEBDUEFDS19SUE1fU1BFQ19QUkVUUkFOU1xACisKICVwcmV1bgogXEBDUEFDS19SUE1fU1BFQ19QUkVVTklOU1RBTExcQAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1BsYXRmb3JtL0FuZHJvaWQtQ29tbW9uLmNtYWtlIGIvTW9kdWxlcy9QbGF0Zm9ybS9BbmRyb2lkLUNvbW1vbi5jbWFrZQppbmRleCAxYWZmY2QwLi41ODFmZGU0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL1BsYXRmb3JtL0FuZHJvaWQtQ29tbW9uLmNtYWtlCisrKyBiL01vZHVsZXMvUGxhdGZvcm0vQW5kcm9pZC1Db21tb24uY21ha2UKQEAgLTczLDcgKzczLDcgQEAKICAgICAgIG1hY3JvKF9fYW5kcm9pZF9zdGwgbGFuZykKICAgICAgICAgIyBGSVhNRTogQWRkIGEgd2F5IHRvIGFkZCBwcm9qZWN0LXdpZGUgbGFuZ3VhZ2Utc3BlY2lmaWMgY29tcGlsZS1vbmx5IGZsYWdzLgogICAgICAgICBzZXQoQ01BS0VfQ1hYX0NPTVBJTEVfT0JKRUNUCi0gICAgICAgICAgIjxDTUFLRV9DWFhfQ09NUElMRVI+ICA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC1vIDxPQkpFQ1Q+IC1jIDxTT1VSQ0U+IC1ub3N0ZGluYysrIikKKyAgICAgICAgICAiPENNQUtFX0NYWF9DT01QSUxFUj4gPERFRklORVM+IDxJTkNMVURFUz4gPEZMQUdTPiAtbyA8T0JKRUNUPiAtYyA8U09VUkNFPiAtbm9zdGRpbmMrKyIpCiAgICAgICAgIHN0cmluZyhBUFBFTkQgQ01BS0VfJHtsYW5nfV9TVEFOREFSRF9MSUJSQVJJRVMgIiAtbm9zdGRsaWIrKyIpCiAgICAgICBlbmRtYWNybygpCiAgICAgZWxzZSgpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1BsYXRmb3JtL0JsdWVHZW5lTC5jbWFrZSBiL01vZHVsZXMvUGxhdGZvcm0vQmx1ZUdlbmVMLmNtYWtlCmluZGV4IDA4MmU0NmMuLjBlZDk5NzUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvUGxhdGZvcm0vQmx1ZUdlbmVMLmNtYWtlCisrKyBiL01vZHVsZXMvUGxhdGZvcm0vQmx1ZUdlbmVMLmNtYWtlCkBAIC0yMywxOCArMjMsMTggQEAKIAogaWYoQ01BS0VfQ09NUElMRVJfSVNfR05VQ0MpCiAgIHNldChDTUFLRV9DX0xJTktfRVhFQ1VUQUJMRQotICAgICI8Q01BS0VfQ19DT01QSUxFUj4gLVdsLC1yZWxheCA8RkxBR1M+IDxDTUFLRV9DX0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gIC1vIDxUQVJHRVQ+IDxMSU5LX0xJQlJBUklFUz4gLVdsLC1sZ2NjLC1sYyAtbG5zc19maWxlcyAtbG5zc19kbnMgLWxyZXNvbHYiKQorICAgICI8Q01BS0VfQ19DT01QSUxFUj4gLVdsLC1yZWxheCA8RkxBR1M+IDxDTUFLRV9DX0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiAtV2wsLWxnY2MsLWxjIC1sbnNzX2ZpbGVzIC1sbnNzX2RucyAtbHJlc29sdiIpCiBlbHNlKCkKICAgIyB3aGVuIHVzaW5nIElCTSB4bGMgd2UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBsaW5rIHRvIC1sZ2NjCiAgIHNldChDTUFLRV9DX0xJTktfRVhFQ1VUQUJMRQotICAgICI8Q01BS0VfQ19DT01QSUxFUj4gLVdsLC1yZWxheCA8RkxBR1M+IDxDTUFLRV9DX0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gIC1vIDxUQVJHRVQ+IDxMSU5LX0xJQlJBUklFUz4gLVdsLC1sYyAtbG5zc19maWxlcyAtbG5zc19kbnMgLWxyZXNvbHYiKQorICAgICI8Q01BS0VfQ19DT01QSUxFUj4gLVdsLC1yZWxheCA8RkxBR1M+IDxDTUFLRV9DX0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiAtV2wsLWxjIC1sbnNzX2ZpbGVzIC1sbnNzX2RucyAtbHJlc29sdiIpCiBlbmRpZigpCiAKIGlmKENNQUtFX0NPTVBJTEVSX0lTX0dOVUNYWCkKICAgc2V0KENNQUtFX0NYWF9MSU5LX0VYRUNVVEFCTEUKLSAgICAiPENNQUtFX0NYWF9DT01QSUxFUj4gLVdsLC1yZWxheCA8RkxBR1M+IDxDTUFLRV9DWFhfTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAgLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiAtV2wsLWxzdGRjKyssLWxnY2MsLWxjIC1sbnNzX2ZpbGVzIC1sbnNzX2RucyAtbHJlc29sdiIpCisgICAgIjxDTUFLRV9DWFhfQ09NUElMRVI+IC1XbCwtcmVsYXggPEZMQUdTPiA8Q01BS0VfQ1hYX0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiAtV2wsLWxzdGRjKyssLWxnY2MsLWxjIC1sbnNzX2ZpbGVzIC1sbnNzX2RucyAtbHJlc29sdiIpCiBlbHNlKCkKICAgIyB3aGVuIHVzaW5nIHRoZSBJQk0geGxDIHdlIHByb2JhYmx5IGRvbid0IHdhbnQgdG8gbGluayB0byAtbGdjYwogICBzZXQoQ01BS0VfQ1hYX0xJTktfRVhFQ1VUQUJMRQotICAgICI8Q01BS0VfQ1hYX0NPTVBJTEVSPiAtV2wsLXJlbGF4IDxGTEFHUz4gPENNQUtFX0NYWF9MSU5LX0ZMQUdTPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+ICAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IC1XbCwtbHN0ZGMrKywtbGMgLWxuc3NfZmlsZXMgLWxuc3NfZG5zIC1scmVzb2x2IikKKyAgICAiPENNQUtFX0NYWF9DT01QSUxFUj4gLVdsLC1yZWxheCA8RkxBR1M+IDxDTUFLRV9DWFhfTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IC1XbCwtbHN0ZGMrKywtbGMgLWxuc3NfZmlsZXMgLWxuc3NfZG5zIC1scmVzb2x2IikKIGVuZGlmKCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvUGxhdGZvcm0vQmx1ZUdlbmVQLWJhc2UuY21ha2UgYi9Nb2R1bGVzL1BsYXRmb3JtL0JsdWVHZW5lUC1iYXNlLmNtYWtlCmluZGV4IGZlOTViNDIuLjcwOTVkZDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvUGxhdGZvcm0vQmx1ZUdlbmVQLWJhc2UuY21ha2UKKysrIGIvTW9kdWxlcy9QbGF0Zm9ybS9CbHVlR2VuZVAtYmFzZS5jbWFrZQpAQCAtOTcsNyArOTcsNyBAQAogICBzZXQoQ01BS0VfU0hBUkVEX0xJQlJBUllfUlVOVElNRV8ke2xhbmd9X0ZMQUdfU0VQICAiOiIpICMgOiBvciBlbXB0eQogCiAgIHNldChCR1BfJHtsYW5nfV9ERUZBVUxUX0VYRV9GTEFHUwotICAgICI8RkxBR1M+IDxDTUFLRV8ke2xhbmd9X0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gIC1vIDxUQVJHRVQ+IDxMSU5LX0xJQlJBUklFUz4iKQorICAgICI8RkxBR1M+IDxDTUFLRV8ke2xhbmd9X0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiIpCiAgIHNldChDTUFLRV8ke2xhbmd9X0xJTktfRVhFQ1VUQUJMRQogICAgICI8Q01BS0VfJHtsYW5nfV9DT01QSUxFUj4gLVdsLC1yZWxheCAke0JHUF8ke2xhbmd9X0RZTkFNSUNfRVhFX0ZMQUdTfSAke0JHUF8ke2xhbmd9X0RFRkFVTFRfRVhFX0ZMQUdTfSIpCiBlbmRtYWNybygpCkBAIC0xMDgsNyArMTA4LDcgQEAKICMKIG1hY3JvKF9fQmx1ZUdlbmVQX3NldF9zdGF0aWNfZmxhZ3MgY29tcGlsZXJfaWQgbGFuZykKICAgc2V0KEJHUF8ke2xhbmd9X0RFRkFVTFRfRVhFX0ZMQUdTCi0gICAgIjxGTEFHUz4gPENNQUtFXyR7bGFuZ31fTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAgLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiIpCisgICAgIjxGTEFHUz4gPENNQUtFXyR7bGFuZ31fTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKICAgc2V0KENNQUtFXyR7bGFuZ31fTElOS19FWEVDVVRBQkxFCiAgICAgIjxDTUFLRV8ke2xhbmd9X0NPTVBJTEVSPiAtV2wsLXJlbGF4ICR7QkdQXyR7bGFuZ31fREVGQVVMVF9FWEVfRkxBR1N9IikKIGVuZG1hY3JvKCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvUGxhdGZvcm0vQmx1ZUdlbmVRLWJhc2UuY21ha2UgYi9Nb2R1bGVzL1BsYXRmb3JtL0JsdWVHZW5lUS1iYXNlLmNtYWtlCmluZGV4IDVlNTZkOGUuLjk0Y2IwYTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvUGxhdGZvcm0vQmx1ZUdlbmVRLWJhc2UuY21ha2UKKysrIGIvTW9kdWxlcy9QbGF0Zm9ybS9CbHVlR2VuZVEtYmFzZS5jbWFrZQpAQCAtMTAxLDcgKzEwMSw3IEBACiAgIGZvcmVhY2goZGlyICR7Q01BS0VfU1lTVEVNX0lOQ0xVREVfUEFUSH0pCiAgICAgc3RyaW5nKEFQUEVORCBCR1FfU1lTVEVNX0lOQ0xVREVTICIgLUkke2Rpcn0iKQogICBlbmRmb3JlYWNoKCkKLSAgc2V0KENNQUtFX0NfQ09NUElMRV9PQkpFQ1QgICAiPENNQUtFX0NfQ09NUElMRVI+ICAgPERFRklORVM+ICR7QkdRX1NZU1RFTV9JTkNMVURFU30gPElOQ0xVREVTPiA8RkxBR1M+IC1vIDxPQkpFQ1Q+IC1jIDxTT1VSQ0U+IikKKyAgc2V0KENNQUtFX0NfQ09NUElMRV9PQkpFQ1QgICAiPENNQUtFX0NfQ09NUElMRVI+IDxERUZJTkVTPiAke0JHUV9TWVNURU1fSU5DTFVERVN9IDxJTkNMVURFUz4gPEZMQUdTPiAtbyA8T0JKRUNUPiAtYyA8U09VUkNFPiIpCiAgIHNldChDTUFLRV9DWFhfQ09NUElMRV9PQkpFQ1QgIjxDTUFLRV9DWFhfQ09NUElMRVI+IDxERUZJTkVTPiAke0JHUV9TWVNURU1fSU5DTFVERVN9IDxJTkNMVURFUz4gPEZMQUdTPiAtbyA8T0JKRUNUPiAtYyA8U09VUkNFPiIpCiAKICAgIwpAQCAtMTQ2LDcgKzE0Niw3IEBACiAKICAgIyBGb3IgZHluYW1pYyBleGVjdXRhYmxlcywgbmVlZCB0byBwcm92aWRlIHNwZWNpYWwgQkcvUSBhcmd1bWVudHMuCiAgIHNldChCR1FfJHtsYW5nfV9ERUZBVUxUX0VYRV9GTEFHUwotICAgICI8RkxBR1M+IDxDTUFLRV8ke2xhbmd9X0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gIC1vIDxUQVJHRVQ+IDxMSU5LX0xJQlJBUklFUz4iKQorICAgICI8RkxBR1M+IDxDTUFLRV8ke2xhbmd9X0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiIpCiAgIHNldChDTUFLRV8ke2xhbmd9X0xJTktfRVhFQ1VUQUJMRQogICAgICI8Q01BS0VfJHtsYW5nfV9DT01QSUxFUj4gLVdsLC1yZWxheCAke0JHUV8ke2xhbmd9X0RZTkFNSUNfRVhFX0ZMQUdTfSAke0JHUV8ke2xhbmd9X0RFRkFVTFRfRVhFX0ZMQUdTfSIpCiBlbmRtYWNybygpCkBAIC0xNjAsNyArMTYwLDcgQEAKIAogICAjIEZvciBzdGF0aWMgZXhlY3V0YWJsZXMsIHVzZSBkZWZhdWx0IGxpbmsgc2V0dGluZ3MuCiAgIHNldChCR1FfJHtsYW5nfV9ERUZBVUxUX0VYRV9GTEFHUwotICAgICI8RkxBR1M+IDxDTUFLRV8ke2xhbmd9X0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gIC1vIDxUQVJHRVQ+IDxMSU5LX0xJQlJBUklFUz4iKQorICAgICI8RkxBR1M+IDxDTUFLRV8ke2xhbmd9X0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiIpCiAgIHNldChDTUFLRV8ke2xhbmd9X0xJTktfRVhFQ1VUQUJMRQogICAgICI8Q01BS0VfJHtsYW5nfV9DT01QSUxFUj4gLVdsLC1yZWxheCAke0JHUV8ke2xhbmd9X0RFRkFVTFRfRVhFX0ZMQUdTfSIpCiBlbmRtYWNybygpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1BsYXRmb3JtL0NZR1dJTi1HTlUuY21ha2UgYi9Nb2R1bGVzL1BsYXRmb3JtL0NZR1dJTi1HTlUuY21ha2UKaW5kZXggY2E5MDcxMi4uNGZhMTRjZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9QbGF0Zm9ybS9DWUdXSU4tR05VLmNtYWtlCisrKyBiL01vZHVsZXMvUGxhdGZvcm0vQ1lHV0lOLUdOVS5jbWFrZQpAQCAtMjIsNyArMjIsNyBAQAogICBzZXQoQ01BS0VfJHtsYW5nfV9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKICAgICAiPENNQUtFXyR7bGFuZ31fQ09NUElMRVI+IDxMQU5HVUFHRV9DT01QSUxFX0ZMQUdTPiA8Q01BS0VfU0hBUkVEX0xJQlJBUllfJHtsYW5nfV9GTEFHUz4gPExJTktfRkxBR1M+IDxDTUFLRV9TSEFSRURfTElCUkFSWV9DUkVBVEVfJHtsYW5nfV9GTEFHUz4gLW8gPFRBUkdFVD4gLVdsLC0tb3V0LWltcGxpYiw8VEFSR0VUX0lNUExJQj4gJHtDTUFLRV9HTlVMRF9JTUFHRV9WRVJTSU9OfSA8T0JKRUNUUz4gPExJTktfTElCUkFSSUVTPiIpCiAgIHNldChDTUFLRV8ke2xhbmd9X0xJTktfRVhFQ1VUQUJMRQotICAgICI8Q01BS0VfJHtsYW5nfV9DT01QSUxFUj4gPEZMQUdTPiA8Q01BS0VfJHtsYW5nfV9MSU5LX0ZMQUdTPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+ICAtbyA8VEFSR0VUPiAtV2wsLS1vdXQtaW1wbGliLDxUQVJHRVRfSU1QTElCPiAke0NNQUtFX0dOVUxEX0lNQUdFX1ZFUlNJT059IDxMSU5LX0xJQlJBUklFUz4iKQorICAgICI8Q01BS0VfJHtsYW5nfV9DT01QSUxFUj4gPEZMQUdTPiA8Q01BS0VfJHtsYW5nfV9MSU5LX0ZMQUdTPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+IC1vIDxUQVJHRVQ+IC1XbCwtLW91dC1pbXBsaWIsPFRBUkdFVF9JTVBMSUI+ICR7Q01BS0VfR05VTERfSU1BR0VfVkVSU0lPTn0gPExJTktfTElCUkFSSUVTPiIpCiAKICAgICMgTm8gLWZQSUMgb24gY3lnd2luCiAgIHNldChDTUFLRV8ke2xhbmd9X0NPTVBJTEVfT1BUSU9OU19QSUMgIiIpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1BsYXRmb3JtL0hQLVVYLUhQLUMuY21ha2UgYi9Nb2R1bGVzL1BsYXRmb3JtL0hQLVVYLUhQLUMuY21ha2UKaW5kZXggNzYxMDM4My4uNTdiYTJlYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9QbGF0Zm9ybS9IUC1VWC1IUC1DLmNtYWtlCisrKyBiL01vZHVsZXMvUGxhdGZvcm0vSFAtVVgtSFAtQy5jbWFrZQpAQCAtMyw0ICszLDQgQEAKIAogc2V0KENNQUtFX0NfQ1JFQVRFX1BSRVBST0NFU1NFRF9TT1VSQ0UgIjxDTUFLRV9DX0NPTVBJTEVSPiA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC1FIDxTT1VSQ0U+ID4gPFBSRVBST0NFU1NFRF9TT1VSQ0U+IikKIHNldChDTUFLRV9DX0NSRUFURV9BU1NFTUJMWV9TT1VSQ0UgIjxDTUFLRV9DX0NPTVBJTEVSPiA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC1TIDxTT1VSQ0U+IC1vIDxBU1NFTUJMWV9TT1VSQ0U+IikKLXNldChDTUFLRV9DX0NPTVBJTEVfT0JKRUNUICI8Q01BS0VfQ19DT01QSUxFUj4gPERFRklORVM+IC1BYSAtQWUgPElOQ0xVREVTPiA8RkxBR1M+IC1vIDxPQkpFQ1Q+ICAgLWMgPFNPVVJDRT4iKQorc2V0KENNQUtFX0NfQ09NUElMRV9PQkpFQ1QgIjxDTUFLRV9DX0NPTVBJTEVSPiA8REVGSU5FUz4gLUFhIC1BZSA8SU5DTFVERVM+IDxGTEFHUz4gLW8gPE9CSkVDVD4gLWMgPFNPVVJDRT4iKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9QbGF0Zm9ybS9MaW51eC1jb21vLmNtYWtlIGIvTW9kdWxlcy9QbGF0Zm9ybS9MaW51eC1jb21vLmNtYWtlCmluZGV4IGQxNTUwZDIuLmY2ZGIzNGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvUGxhdGZvcm0vTGludXgtY29tby5jbWFrZQorKysgYi9Nb2R1bGVzL1BsYXRmb3JtL0xpbnV4LWNvbW8uY21ha2UKQEAgLTExLDcgKzExLDcgQEAKIAogc2V0KENNQUtFX0NYWF9MSU5LX0VYRUNVVEFCTEUKICAgICAiPENNQUtFX0NYWF9DT01QSUxFUj4gLS1wcmVsaW5rX29iamVjdHMgPE9CSkVDVFM+IgotICAgICI8Q01BS0VfQ1hYX0NPTVBJTEVSPiA8Q01BS0VfQ1hYX0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8RkxBR1M+IDxPQkpFQ1RTPiAgLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiIpCisgICAgIjxDTUFLRV9DWFhfQ09NUElMRVI+IDxDTUFLRV9DWFhfTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxGTEFHUz4gPE9CSkVDVFM+IC1vIDxUQVJHRVQ+IDxMSU5LX0xJQlJBUklFUz4iKQogCiBzZXQoQ01BS0VfU0hBUkVEX0xJQlJBUllfUlVOVElNRV9DX0ZMQUcgIiIpCiBzZXQoQ01BS0VfU0hBUkVEX0xJQlJBUllfQ19GTEFHUyAiIikKZGlmZiAtLWdpdCBhL01vZHVsZXMvUGxhdGZvcm0vV2luZG93cy1DbGFuZy5jbWFrZSBiL01vZHVsZXMvUGxhdGZvcm0vV2luZG93cy1DbGFuZy5jbWFrZQppbmRleCA5NmMwNzkxLi4wMThkZTRjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL1BsYXRmb3JtL1dpbmRvd3MtQ2xhbmcuY21ha2UKKysrIGIvTW9kdWxlcy9QbGF0Zm9ybS9XaW5kb3dzLUNsYW5nLmNtYWtlCkBAIC01NSwxMyArNTUsMTMgQEAKIAogICAjIENyZWF0ZSBhcmNoaXZpbmcgcnVsZXMgdG8gc3VwcG9ydCBsYXJnZSBvYmplY3QgZmlsZSBsaXN0cyBmb3Igc3RhdGljIGxpYnJhcmllcy4KICAgc2V0KENNQUtFXyR7bGFuZ31fQVJDSElWRV9DUkVBVEUgIjxDTUFLRV9BUj4gcWMgPFRBUkdFVD4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiIpCi0gIHNldChDTUFLRV8ke2xhbmd9X0FSQ0hJVkVfQVBQRU5EICI8Q01BS0VfQVI+IHEgIDxUQVJHRVQ+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4iKQorICBzZXQoQ01BS0VfJHtsYW5nfV9BUkNISVZFX0FQUEVORCAiPENNQUtFX0FSPiBxIDxUQVJHRVQ+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4iKQogICBzZXQoQ01BS0VfJHtsYW5nfV9BUkNISVZFX0ZJTklTSCAiPENNQUtFX1JBTkxJQj4gPFRBUkdFVD4iKQogICBzZXQoQ01BS0VfJHtsYW5nfV9DUkVBVEVfU0hBUkVEX0xJQlJBUlkKICAgICAiPENNQUtFXyR7bGFuZ31fQ09NUElMRVI+IC1mdXNlLWxkPWxsZC1saW5rIC1ub3N0YXJ0ZmlsZXMgLW5vc3RkbGliIDxDTUFLRV9TSEFSRURfTElCUkFSWV8ke2xhbmd9X0ZMQUdTPiA8TEFOR1VBR0VfQ09NUElMRV9GTEFHUz4gPExJTktfRkxBR1M+IDxDTUFLRV9TSEFSRURfTElCUkFSWV9DUkVBVEVfJHtsYW5nfV9GTEFHUz4gLW8gPFRBUkdFVD4gJHtDTUFLRV9HTlVMRF9JTUFHRV9WRVJTSU9OfSAtWGxpbmtlciAvaW1wbGliOjxUQVJHRVRfSU1QTElCPiAtWGxpbmtlciAvcGRiOjxUQVJHRVRfUERCPiAtWGxpbmtlciAvdmVyc2lvbjo8VEFSR0VUX1ZFUlNJT05fTUFKT1I+LjxUQVJHRVRfVkVSU0lPTl9NSU5PUj4gPE9CSkVDVFM+IDxMSU5LX0xJQlJBUklFUz4iKQogICBzZXQoQ01BS0VfJHtsYW5nfV9DUkVBVEVfU0hBUkVEX01PRFVMRSAke0NNQUtFXyR7bGFuZ31fQ1JFQVRFX1NIQVJFRF9MSUJSQVJZfSkKICAgc2V0KENNQUtFXyR7bGFuZ31fTElOS19FWEVDVVRBQkxFCi0gICAgIjxDTUFLRV8ke2xhbmd9X0NPTVBJTEVSPiAtZnVzZS1sZD1sbGQtbGluayAtbm9zdGFydGZpbGVzIC1ub3N0ZGxpYiA8RkxBR1M+IDxDTUFLRV8ke2xhbmd9X0xJTktfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gIC1vIDxUQVJHRVQ+IC1YbGlua2VyIC9pbXBsaWI6PFRBUkdFVF9JTVBMSUI+IC1YbGlua2VyIC9wZGI6PFRBUkdFVF9QREI+IC1YbGlua2VyIC92ZXJzaW9uOjxUQVJHRVRfVkVSU0lPTl9NQUpPUj4uPFRBUkdFVF9WRVJTSU9OX01JTk9SPiAke0NNQUtFX0dOVUxEX0lNQUdFX1ZFUlNJT059IDxMSU5LX0xJQlJBUklFUz4iKQorICAgICI8Q01BS0VfJHtsYW5nfV9DT01QSUxFUj4gLWZ1c2UtbGQ9bGxkLWxpbmsgLW5vc3RhcnRmaWxlcyAtbm9zdGRsaWIgPEZMQUdTPiA8Q01BS0VfJHtsYW5nfV9MSU5LX0ZMQUdTPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+IC1vIDxUQVJHRVQ+IC1YbGlua2VyIC9pbXBsaWI6PFRBUkdFVF9JTVBMSUI+IC1YbGlua2VyIC9wZGI6PFRBUkdFVF9QREI+IC1YbGlua2VyIC92ZXJzaW9uOjxUQVJHRVRfVkVSU0lPTl9NQUpPUj4uPFRBUkdFVF9WRVJTSU9OX01JTk9SPiAke0NNQUtFX0dOVUxEX0lNQUdFX1ZFUlNJT059IDxMSU5LX0xJQlJBUklFUz4iKQogCiAgIGlmKE5PVCAiJHtsYW5nfSIgU1RSRVFVQUwgIkFTTSIpCiAgICAgc2V0KENNQUtFXyR7bGFuZ31fQ09NUElMRV9PUFRJT05TX01TVkNfUlVOVElNRV9MSUJSQVJZX011bHRpVGhyZWFkZWQgICAgICAgICAtWGNsYW5nIC1mbHRvLXZpc2liaWxpdHktcHVibGljLXN0ZCAtRF9NVCAtWGNsYW5nIC0tZGVwZW5kZW50LWxpYj1saWJjbXQpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1BsYXRmb3JtL1dpbmRvd3MtR05VLmNtYWtlIGIvTW9kdWxlcy9QbGF0Zm9ybS9XaW5kb3dzLUdOVS5jbWFrZQppbmRleCAzOGE4Y2Y0Li5hMmUzODExIDEwMDY0NAotLS0gYS9Nb2R1bGVzL1BsYXRmb3JtL1dpbmRvd3MtR05VLmNtYWtlCisrKyBiL01vZHVsZXMvUGxhdGZvcm0vV2luZG93cy1HTlUuY21ha2UKQEAgLTQ3LDE2ICs0NywxMiBAQAogICBzZXQoX19XSU5ET1dTX0dOVV9MRF9SRVNQT05TRSAwKQogZW5kaWYoKQogCi1pZihOT1QgQ01BS0VfR0VORVJBVE9SX1JDIEFORCBDTUFLRV9HRU5FUkFUT1IgTUFUQ0hFUyAiVW5peCBNYWtlZmlsZXMiKQotICBzZXQoQ01BS0VfR0VORVJBVE9SX1JDIHdpbmRyZXMpCi1lbmRpZigpCi0KIG1hY3JvKF9fd2luZG93c19jb21waWxlcl9nbnUgbGFuZykKIAogICBpZihNU1lTIE9SIE1JTkdXKQogICAgICMgQ3JlYXRlIGFyY2hpdmluZyBydWxlcyB0byBzdXBwb3J0IGxhcmdlIG9iamVjdCBmaWxlIGxpc3RzIGZvciBzdGF0aWMgbGlicmFyaWVzLgogICAgIHNldChDTUFLRV8ke2xhbmd9X0FSQ0hJVkVfQ1JFQVRFICI8Q01BS0VfQVI+IHFjIDxUQVJHRVQ+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4iKQotICAgIHNldChDTUFLRV8ke2xhbmd9X0FSQ0hJVkVfQVBQRU5EICI8Q01BS0VfQVI+IHEgIDxUQVJHRVQ+IDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4iKQorICAgIHNldChDTUFLRV8ke2xhbmd9X0FSQ0hJVkVfQVBQRU5EICI8Q01BS0VfQVI+IHEgPFRBUkdFVD4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiIpCiAgICAgc2V0KENNQUtFXyR7bGFuZ31fQVJDSElWRV9GSU5JU0ggIjxDTUFLRV9SQU5MSUI+IDxUQVJHRVQ+IikKIAogICAgICMgSW5pdGlhbGl6ZSBDIGxpbmsgdHlwZSBzZWxlY3Rpb24gZmxhZ3MuICBUaGVzZSBmbGFncyBhcmUgdXNlZCB3aGVuCkBAIC0xMDgsNyArMTA0LDcgQEAKICAgc2V0KENNQUtFXyR7bGFuZ31fQ1JFQVRFX1NIQVJFRF9MSUJSQVJZCiAgICAgIjxDTUFLRV8ke2xhbmd9X0NPTVBJTEVSPiA8Q01BS0VfU0hBUkVEX0xJQlJBUllfJHtsYW5nfV9GTEFHUz4gPExBTkdVQUdFX0NPTVBJTEVfRkxBR1M+IDxMSU5LX0ZMQUdTPiA8Q01BS0VfU0hBUkVEX0xJQlJBUllfQ1JFQVRFXyR7bGFuZ31fRkxBR1M+IC1vIDxUQVJHRVQ+IC1XbCwtLW91dC1pbXBsaWIsPFRBUkdFVF9JTVBMSUI+ICR7Q01BS0VfR05VTERfSU1BR0VfVkVSU0lPTn0gPE9CSkVDVFM+IDxMSU5LX0xJQlJBUklFUz4iKQogICBzZXQoQ01BS0VfJHtsYW5nfV9MSU5LX0VYRUNVVEFCTEUKLSAgICAiPENNQUtFXyR7bGFuZ31fQ09NUElMRVI+IDxGTEFHUz4gPENNQUtFXyR7bGFuZ31fTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAgLW8gPFRBUkdFVD4gLVdsLC0tb3V0LWltcGxpYiw8VEFSR0VUX0lNUExJQj4gJHtDTUFLRV9HTlVMRF9JTUFHRV9WRVJTSU9OfSA8TElOS19MSUJSQVJJRVM+IikKKyAgICAiPENNQUtFXyR7bGFuZ31fQ09NUElMRVI+IDxGTEFHUz4gPENNQUtFXyR7bGFuZ31fTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiAtV2wsLS1vdXQtaW1wbGliLDxUQVJHRVRfSU1QTElCPiAke0NNQUtFX0dOVUxEX0lNQUdFX1ZFUlNJT059IDxMSU5LX0xJQlJBUklFUz4iKQogCiAgIGxpc3QoQVBQRU5EIENNQUtFXyR7bGFuZ31fQUJJX0ZJTEVTICJQbGF0Zm9ybS9XaW5kb3dzLUdOVS0ke2xhbmd9LUFCSSIpCiAKQEAgLTEzMiw3ICsxMjgsNyBAQAogICBlbmRpZigpCiAKICAgaWYoTk9UIENNQUtFX1JDX0NPTVBJTEVSX0lOSVQgQU5EIE5PVCBDTUFLRV9HRU5FUkFUT1JfUkMpCi0gICAgc2V0KENNQUtFX1JDX0NPTVBJTEVSX0lOSVQgd2luZHJlcykKKyAgICBzZXQoQ01BS0VfUkNfQ09NUElMRVJfSU5JVCAke19DTUFLRV9UT09MQ0hBSU5fUFJFRklYfXdpbmRyZXMpCiAgIGVuZGlmKCkKIAogICBlbmFibGVfbGFuZ3VhZ2UoUkMpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1BsYXRmb3JtL1dpbmRvd3MtSW50ZWwuY21ha2UgYi9Nb2R1bGVzL1BsYXRmb3JtL1dpbmRvd3MtSW50ZWwuY21ha2UKaW5kZXggOTZiMTc2MC4uNWQ4ZjdmYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9QbGF0Zm9ybS9XaW5kb3dzLUludGVsLmNtYWtlCisrKyBiL01vZHVsZXMvUGxhdGZvcm0vV2luZG93cy1JbnRlbC5jbWFrZQpAQCAtMTEsNyArMTEsNyBAQAogaW5jbHVkZShQbGF0Zm9ybS9XaW5kb3dzLU1TVkMpCiBtYWNybyhfX3dpbmRvd3NfY29tcGlsZXJfaW50ZWwgbGFuZykKICAgX193aW5kb3dzX2NvbXBpbGVyX21zdmMoJHtsYW5nfSkKLSAgc3RyaW5nKFJFUExBQ0UgIjxDTUFLRV9MSU5LRVI+IC9saWIiICJ4aWxpYiIgQ01BS0VfJHtsYW5nfV9DUkVBVEVfU1RBVElDX0xJQlJBUlkgIiR7Q01BS0VfJHtsYW5nfV9DUkVBVEVfU1RBVElDX0xJQlJBUll9IikKKyAgc3RyaW5nKFJFUExBQ0UgIjxDTUFLRV9BUj4iICJ4aWxpYiIgQ01BS0VfJHtsYW5nfV9DUkVBVEVfU1RBVElDX0xJQlJBUlkgIiR7Q01BS0VfJHtsYW5nfV9DUkVBVEVfU1RBVElDX0xJQlJBUll9IikKICAgZm9yZWFjaChydWxlIENSRUFURV9TSEFSRURfTElCUkFSWSBDUkVBVEVfU0hBUkVEX01PRFVMRSBMSU5LX0VYRUNVVEFCTEUpCiAgICAgc3RyaW5nKFJFUExBQ0UgIjxDTUFLRV9MSU5LRVI+IiAieGlsaW5rIiBDTUFLRV8ke2xhbmd9XyR7cnVsZX0gIiR7Q01BS0VfJHtsYW5nfV8ke3J1bGV9fSIpCiAgIGVuZGZvcmVhY2goKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9QbGF0Zm9ybS9XaW5kb3dzLU1TVkMuY21ha2UgYi9Nb2R1bGVzL1BsYXRmb3JtL1dpbmRvd3MtTVNWQy5jbWFrZQppbmRleCBlMWQ2NzMzLi43ZWU1MDFiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL1BsYXRmb3JtL1dpbmRvd3MtTVNWQy5jbWFrZQorKysgYi9Nb2R1bGVzL1BsYXRmb3JtL1dpbmRvd3MtTVNWQy5jbWFrZQpAQCAtMzE2LDcgKzMxNiw3IEBACiAgICAgIiR7X0NNQUtFX1ZTX0xJTktfRExMfTxDTUFLRV9MSU5LRVI+ICR7Q01BS0VfQ0xfTk9MT0dPfSA8T0JKRUNUUz4gJHtDTUFLRV9TVEFSVF9URU1QX0ZJTEV9IC9vdXQ6PFRBUkdFVD4gL2ltcGxpYjo8VEFSR0VUX0lNUExJQj4gL3BkYjo8VEFSR0VUX1BEQj4gL2RsbCAvdmVyc2lvbjo8VEFSR0VUX1ZFUlNJT05fTUFKT1I+LjxUQVJHRVRfVkVSU0lPTl9NSU5PUj4ke19QTEFURk9STV9MSU5LX0ZMQUdTfSA8TElOS19GTEFHUz4gPExJTktfTElCUkFSSUVTPiAke0NNQUtFX0VORF9URU1QX0ZJTEV9IikKIAogICBzZXQoQ01BS0VfJHtsYW5nfV9DUkVBVEVfU0hBUkVEX01PRFVMRSAke0NNQUtFXyR7bGFuZ31fQ1JFQVRFX1NIQVJFRF9MSUJSQVJZfSkKLSAgc2V0KENNQUtFXyR7bGFuZ31fQ1JFQVRFX1NUQVRJQ19MSUJSQVJZICAiPENNQUtFX0xJTktFUj4gL2xpYiAke0NNQUtFX0NMX05PTE9HT30gPExJTktfRkxBR1M+IC9vdXQ6PFRBUkdFVD4gPE9CSkVDVFM+ICIpCisgIHNldChDTUFLRV8ke2xhbmd9X0NSRUFURV9TVEFUSUNfTElCUkFSWSAgIjxDTUFLRV9BUj4gJHtDTUFLRV9DTF9OT0xPR099IDxMSU5LX0ZMQUdTPiAvb3V0OjxUQVJHRVQ+IDxPQkpFQ1RTPiAiKQogCiAgIHNldChDTUFLRV8ke2xhbmd9X0NPTVBJTEVfT0JKRUNUCiAgICAgIjxDTUFLRV8ke2xhbmd9X0NPTVBJTEVSPiAke0NNQUtFX1NUQVJUX1RFTVBfRklMRX0gJHtDTUFLRV9DTF9OT0xPR099JHtfQ09NUElMRV8ke2xhbmd9fSA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC9GbzxPQkpFQ1Q+IC9GZDxUQVJHRVRfQ09NUElMRV9QREI+JHtfRlNfJHtsYW5nfX0gLWMgPFNPVVJDRT4ke0NNQUtFX0VORF9URU1QX0ZJTEV9IikKZGlmZiAtLWdpdCBhL01vZHVsZXMvUGxhdGZvcm0vV2luZG93cy1OVklESUEtQ1VEQS5jbWFrZSBiL01vZHVsZXMvUGxhdGZvcm0vV2luZG93cy1OVklESUEtQ1VEQS5jbWFrZQppbmRleCBmODA5MDk0Li4yZjUwMjgwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL1BsYXRmb3JtL1dpbmRvd3MtTlZJRElBLUNVREEuY21ha2UKKysrIGIvTW9kdWxlcy9QbGF0Zm9ybS9XaW5kb3dzLU5WSURJQS1DVURBLmNtYWtlCkBAIC0xLDExICsxLDExIEBACiBpbmNsdWRlKFBsYXRmb3JtL1dpbmRvd3MtTVNWQykKIAogc2V0KENNQUtFX0NVREFfQ09NUElMRV9QVFhfQ09NUElMQVRJT04KLSAgIjxDTUFLRV9DVURBX0NPTVBJTEVSPiAke19DTUFLRV9DVURBX0VYVFJBX0ZMQUdTfSA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC14IGN1IC1wdHggPFNPVVJDRT4gLW8gPE9CSkVDVD4gLVhjb21waWxlcj0tRmQ8VEFSR0VUX0NPTVBJTEVfUERCPiwtRlMiKQorICAiPENNQUtFX0NVREFfQ09NUElMRVI+ICR7X0NNQUtFX0NVREFfRVhUUkFfRkxBR1N9IDxERUZJTkVTPiA8SU5DTFVERVM+IDxGTEFHUz4gJHtfQ01BS0VfQ09NUElMRV9BU19DVURBX0ZMQUd9IC1wdHggPFNPVVJDRT4gLW8gPE9CSkVDVD4gLVhjb21waWxlcj0tRmQ8VEFSR0VUX0NPTVBJTEVfUERCPiwtRlMiKQogc2V0KENNQUtFX0NVREFfQ09NUElMRV9TRVBBUkFCTEVfQ09NUElMQVRJT04KLSAgIjxDTUFLRV9DVURBX0NPTVBJTEVSPiAke19DTUFLRV9DVURBX0VYVFJBX0ZMQUdTfSA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC14IGN1IC1kYyA8U09VUkNFPiAtbyA8T0JKRUNUPiAtWGNvbXBpbGVyPS1GZDxUQVJHRVRfQ09NUElMRV9QREI+LC1GUyIpCisgICI8Q01BS0VfQ1VEQV9DT01QSUxFUj4gJHtfQ01BS0VfQ1VEQV9FWFRSQV9GTEFHU30gPERFRklORVM+IDxJTkNMVURFUz4gPEZMQUdTPiAke19DTUFLRV9DT01QSUxFX0FTX0NVREFfRkxBR30gLWRjIDxTT1VSQ0U+IC1vIDxPQkpFQ1Q+IC1YY29tcGlsZXI9LUZkPFRBUkdFVF9DT01QSUxFX1BEQj4sLUZTIikKIHNldChDTUFLRV9DVURBX0NPTVBJTEVfV0hPTEVfQ09NUElMQVRJT04KLSAgIjxDTUFLRV9DVURBX0NPTVBJTEVSPiAke19DTUFLRV9DVURBX0VYVFJBX0ZMQUdTfSA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC14IGN1IC1jIDxTT1VSQ0U+IC1vIDxPQkpFQ1Q+IC1YY29tcGlsZXI9LUZkPFRBUkdFVF9DT01QSUxFX1BEQj4sLUZTIikKKyAgIjxDTUFLRV9DVURBX0NPTVBJTEVSPiAke19DTUFLRV9DVURBX0VYVFJBX0ZMQUdTfSA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+ICR7X0NNQUtFX0NPTVBJTEVfQVNfQ1VEQV9GTEFHfSAtYyA8U09VUkNFPiAtbyA8T0JKRUNUPiAtWGNvbXBpbGVyPS1GZDxUQVJHRVRfQ09NUElMRV9QREI+LC1GUyIpCiAKIHNldChfX0lNUExJQ1RfTElOS1MgKQogZm9yZWFjaChkaXIgJHtDTUFLRV9DVURBX0hPU1RfSU1QTElDSVRfTElOS19ESVJFQ1RPUklFU30pCkBAIC0yMyw3ICsyMyw3IEBACiAgICIke19DTUFLRV9WU19MSU5LX0RMTH08Q01BS0VfTElOS0VSPiAke0NNQUtFX0NMX05PTE9HT30gPE9CSkVDVFM+ICR7Q01BS0VfU1RBUlRfVEVNUF9GSUxFfSAvb3V0OjxUQVJHRVQ+IC9pbXBsaWI6PFRBUkdFVF9JTVBMSUI+IC9wZGI6PFRBUkdFVF9QREI+IC9kbGwgL3ZlcnNpb246PFRBUkdFVF9WRVJTSU9OX01BSk9SPi48VEFSR0VUX1ZFUlNJT05fTUlOT1I+JHtfUExBVEZPUk1fTElOS19GTEFHU30gPExJTktfRkxBR1M+IDxMSU5LX0xJQlJBUklFUz4ke19fSU1QTElDVF9MSU5LU30gJHtDTUFLRV9FTkRfVEVNUF9GSUxFfSIpCiAKIHNldChDTUFLRV9DVURBX0NSRUFURV9TSEFSRURfTU9EVUxFICR7Q01BS0VfQ1VEQV9DUkVBVEVfU0hBUkVEX0xJQlJBUll9KQotc2V0KENNQUtFX0NVREFfQ1JFQVRFX1NUQVRJQ19MSUJSQVJZICAiPENNQUtFX0xJTktFUj4gL2xpYiAke0NNQUtFX0NMX05PTE9HT30gPExJTktfRkxBR1M+IC9vdXQ6PFRBUkdFVD4gPE9CSkVDVFM+ICIpCitzZXQoQ01BS0VfQ1VEQV9DUkVBVEVfU1RBVElDX0xJQlJBUlkgICI8Q01BS0VfQVI+ICR7Q01BS0VfQ0xfTk9MT0dPfSA8TElOS19GTEFHUz4gL291dDo8VEFSR0VUPiA8T0JKRUNUUz4gIikKIHNldChDTUFLRV9DVURBX0xJTktFUl9TVVBQT1JUU19QREIgT04pCiBzZXQoQ01BS0VfQ1VEQV9MSU5LX0VYRUNVVEFCTEUKICAgIiR7X0NNQUtFX1ZTX0xJTktfRVhFfTxDTUFLRV9MSU5LRVI+ICR7Q01BS0VfQ0xfTk9MT0dPfSA8T0JKRUNUUz4gJHtDTUFLRV9TVEFSVF9URU1QX0ZJTEV9IC9vdXQ6PFRBUkdFVD4gL2ltcGxpYjo8VEFSR0VUX0lNUExJQj4gL3BkYjo8VEFSR0VUX1BEQj4gL3ZlcnNpb246PFRBUkdFVF9WRVJTSU9OX01BSk9SPi48VEFSR0VUX1ZFUlNJT05fTUlOT1I+JHtfUExBVEZPUk1fTElOS19GTEFHU30gPExJTktfRkxBR1M+IDxMSU5LX0xJQlJBUklFUz4ke19fSU1QTElDVF9MSU5LU30gJHtDTUFLRV9FTkRfVEVNUF9GSUxFfSIpCkBAIC00OCw3ICs0OCw3IEBACiBzZXQoQ01BS0VfQ1VEQV9ERVZJQ0VfTElOS19MSUJSQVJZCiAgICI8Q01BS0VfQ1VEQV9DT01QSUxFUj4gJHtfQ01BS0VfQ1VEQV9FWFRSQV9GTEFHU30gPExBTkdVQUdFX0NPTVBJTEVfRkxBR1M+ICR7X0NNQUtFX0NVREFfRVhUUkFfREVWSUNFX0xJTktfRkxBR1N9IC1zaGFyZWQgLWRsaW5rIDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IC1YY29tcGlsZXI9LUZkPFRBUkdFVF9DT01QSUxFX1BEQj4sLUZTJHtfX0lNUExJQ1RfRExJTktfRkxBR1N9IikKIHNldChDTUFLRV9DVURBX0RFVklDRV9MSU5LX0VYRUNVVEFCTEUKLSAgIjxDTUFLRV9DVURBX0NPTVBJTEVSPiAgJHtfQ01BS0VfQ1VEQV9FWFRSQV9GTEFHU30gPEZMQUdTPiAke19DTUFLRV9DVURBX0VYVFJBX0RFVklDRV9MSU5LX0ZMQUdTfSAtc2hhcmVkIC1kbGluayA8T0JKRUNUUz4gLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiAtWGNvbXBpbGVyPS1GZDxUQVJHRVRfQ09NUElMRV9QREI+LC1GUyR7X19JTVBMSUNUX0RMSU5LX0ZMQUdTfSIpCisgICI8Q01BS0VfQ1VEQV9DT01QSUxFUj4gJHtfQ01BS0VfQ1VEQV9FWFRSQV9GTEFHU30gPEZMQUdTPiAke19DTUFLRV9DVURBX0VYVFJBX0RFVklDRV9MSU5LX0ZMQUdTfSAtc2hhcmVkIC1kbGluayA8T0JKRUNUUz4gLW8gPFRBUkdFVD4gPExJTktfTElCUkFSSUVTPiAtWGNvbXBpbGVyPS1GZDxUQVJHRVRfQ09NUElMRV9QREI+LC1GUyR7X19JTVBMSUNUX0RMSU5LX0ZMQUdTfSIpCiB1bnNldChfX0lNUExJQ1RfRExJTktfRkxBR1MpCiAKIHN0cmluZyhSRVBMQUNFICIvRCIgIi1EIiBfUExBVEZPUk1fREVGSU5FU19DVURBICIke19QTEFURk9STV9ERUZJTkVTfSR7X1BMQVRGT1JNX0RFRklORVNfQ1hYfSIpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1BsYXRmb3JtL1dpbmRvd3MtZGYuY21ha2UgYi9Nb2R1bGVzL1BsYXRmb3JtL1dpbmRvd3MtZGYuY21ha2UKaW5kZXggZjk0ODkxNC4uOGI4MjRiYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9QbGF0Zm9ybS9XaW5kb3dzLWRmLmNtYWtlCisrKyBiL01vZHVsZXMvUGxhdGZvcm0vV2luZG93cy1kZi5jbWFrZQpAQCAtMTMsNyArMTMsNyBAQAogc2V0KENNQUtFX0ZvcnRyYW5fTU9ERElSX0ZMQUcgIi1tb2R1bGU6IikKIAogc2V0KENNQUtFX0ZvcnRyYW5fQ1JFQVRFX1NIQVJFRF9MSUJSQVJZCi0gImxpbmsgJHtDTUFLRV9DTF9OT0xPR099ICR7Q01BS0VfU1RBUlRfVEVNUF9GSUxFfSAgL291dDo8VEFSR0VUPiAvZGxsICA8TElOS19GTEFHUz4gPE9CSkVDVFM+IDxMSU5LX0xJQlJBUklFUz4gJHtDTUFLRV9FTkRfVEVNUF9GSUxFfSIpCisgImxpbmsgJHtDTUFLRV9DTF9OT0xPR099ICR7Q01BS0VfU1RBUlRfVEVNUF9GSUxFfSAvb3V0OjxUQVJHRVQ+IC9kbGwgPExJTktfRkxBR1M+IDxPQkpFQ1RTPiA8TElOS19MSUJSQVJJRVM+ICR7Q01BS0VfRU5EX1RFTVBfRklMRX0iKQogCiBzZXQoQ01BS0VfRm9ydHJhbl9DUkVBVEVfU0hBUkVEX01PRFVMRSAke0NNQUtFX0ZvcnRyYW5fQ1JFQVRFX1NIQVJFRF9MSUJSQVJZfSkKIApAQCAtMjIsNyArMjIsNyBAQAogCiAjIGNvbXBpbGUgYSBDKysgZmlsZSBpbnRvIGFuIG9iamVjdCBmaWxlCiBzZXQoQ01BS0VfRm9ydHJhbl9DT01QSUxFX09CSkVDVAotICAgICI8Q01BS0VfRm9ydHJhbl9DT01QSUxFUj4gICR7Q01BS0VfU1RBUlRfVEVNUF9GSUxFfSAke0NNQUtFX0NMX05PTE9HT30gL29iamVjdDo8T0JKRUNUPiA8RkxBR1M+IC9jb21waWxlX29ubHkgPFNPVVJDRT4ke0NNQUtFX0VORF9URU1QX0ZJTEV9IikKKyAgICAiPENNQUtFX0ZvcnRyYW5fQ09NUElMRVI+ICR7Q01BS0VfU1RBUlRfVEVNUF9GSUxFfSAke0NNQUtFX0NMX05PTE9HT30gL29iamVjdDo8T0JKRUNUPiA8RkxBR1M+IC9jb21waWxlX29ubHkgPFNPVVJDRT4ke0NNQUtFX0VORF9URU1QX0ZJTEV9IikKIAogc2V0KENNQUtFX0ZvcnRyYW5fTElOS19FWEVDVVRBQkxFCiAgICAgIjxDTUFLRV9Gb3J0cmFuX0NPTVBJTEVSPiAke0NNQUtFX0NMX05PTE9HT30gJHtDTUFLRV9TVEFSVF9URU1QX0ZJTEV9IDxGTEFHUz4gL2V4ZTo8VEFSR0VUPiA8T0JKRUNUUz4gL2xpbmsgPENNQUtFX0ZvcnRyYW5fTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxMSU5LX0xJQlJBUklFUz4ke0NNQUtFX0VORF9URU1QX0ZJTEV9IikKZGlmZiAtLWdpdCBhL01vZHVsZXMvUGxhdGZvcm0vZUNvcy5jbWFrZSBiL01vZHVsZXMvUGxhdGZvcm0vZUNvcy5jbWFrZQppbmRleCBlMTI3OWVmLi4yNWRiMDI4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL1BsYXRmb3JtL2VDb3MuY21ha2UKKysrIGIvTW9kdWxlcy9QbGF0Zm9ybS9lQ29zLmNtYWtlCkBAIC01Miw4ICs1Miw4IEBACiBhZGRfZGVmaW5pdGlvbnMoLURfX0VDT1NfXz0xIC1EX19FQ09TPTEpCiAKICMgc3BlY2lhbCBsaW5rIGNvbW1hbmRzIGZvciBlQ29zIGV4ZWN1dGFibGVzCi1zZXQoQ01BS0VfQ1hYX0xJTktfRVhFQ1VUQUJMRSAgIjxDTUFLRV9DWFhfQ09NUElMRVI+IDxGTEFHUz4gPENNQUtFX0NYWF9MSU5LX0ZMQUdTPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+IC1vIDxUQVJHRVQ+IC1ub3N0ZGxpYiAtbm9zdGFydGZpbGVzIC1MJHtFQ09TX0xJQlRBUkdFVF9ESVJFQ1RPUll9IC1UdGFyZ2V0LmxkICA8TElOS19MSUJSQVJJRVM+IikKLXNldChDTUFLRV9DX0xJTktfRVhFQ1VUQUJMRSAgICAiPENNQUtFX0NfQ09NUElMRVI+ICAgPEZMQUdTPiA8Q01BS0VfQ19MSU5LX0ZMQUdTPiAgIDxMSU5LX0ZMQUdTPiA8T0JKRUNUUz4gLW8gPFRBUkdFVD4gLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgLUwke0VDT1NfTElCVEFSR0VUX0RJUkVDVE9SWX0gLVR0YXJnZXQubGQgIDxMSU5LX0xJQlJBUklFUz4iKQorc2V0KENNQUtFX0NYWF9MSU5LX0VYRUNVVEFCTEUgICI8Q01BS0VfQ1hYX0NPTVBJTEVSPiA8RkxBR1M+IDxDTUFLRV9DWFhfTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiAtbm9zdGRsaWIgLW5vc3RhcnRmaWxlcyAtTCR7RUNPU19MSUJUQVJHRVRfRElSRUNUT1JZfSAtVHRhcmdldC5sZCA8TElOS19MSUJSQVJJRVM+IikKK3NldChDTUFLRV9DX0xJTktfRVhFQ1VUQUJMRSAgICAiPENNQUtFX0NfQ09NUElMRVI+IDxGTEFHUz4gPENNQUtFX0NfTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiAtbm9zdGRsaWIgLW5vc3RhcnRmaWxlcyAtTCR7RUNPU19MSUJUQVJHRVRfRElSRUNUT1JZfSAtVHRhcmdldC5sZCA8TElOS19MSUJSQVJJRVM+IikKIAogIyBlQ29zIGRvZXNuJ3Qgc3VwcG9ydCBzaGFyZWQgbGlicwogc2V0X3Byb3BlcnR5KEdMT0JBTCBQUk9QRVJUWSBUQVJHRVRfU1VQUE9SVFNfU0hBUkVEX0xJQlMgRkFMU0UpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1BsYXRmb3JtL2dhcy5jbWFrZSBiL01vZHVsZXMvUGxhdGZvcm0vZ2FzLmNtYWtlCmluZGV4IDdjNjU5ZjIuLjg0ODQwNzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvUGxhdGZvcm0vZ2FzLmNtYWtlCisrKyBiL01vZHVsZXMvUGxhdGZvcm0vZ2FzLmNtYWtlCkBAIC0xMSw3ICsxMSw3IEBACiAgICAgICAiPENNQUtFX1JBTkxJQj4gPFRBUkdFVD4gIikKIAogc2V0KENNQUtFX0FTTSR7QVNNX0RJQUxFQ1R9X0xJTktfRVhFQ1VUQUJMRQotICAgICI8Q01BS0VfTElOS0VSPiA8RkxBR1M+IDxDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9MSU5LX0ZMQUdTPiA8TElOS19GTEFHUz4gPE9CSkVDVFM+ICAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKKyAgICAiPENNQUtFX0xJTktFUj4gPEZMQUdTPiA8Q01BS0VfQVNNJHtBU01fRElBTEVDVH1fTElOS19GTEFHUz4gPExJTktfRkxBR1M+IDxPQkpFQ1RTPiAtbyA8VEFSR0VUPiA8TElOS19MSUJSQVJJRVM+IikKIAogIyB0byBiZSBkb25lCiBzZXQoQ01BS0VfQVNNJHtBU01fRElBTEVDVH1fQ1JFQVRFX1NIQVJFRF9MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9Vc2VFY29zLmNtYWtlIGIvTW9kdWxlcy9Vc2VFY29zLmNtYWtlCmluZGV4IDYwMzI0YjEuLjgzYzliMjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvVXNlRWNvcy5jbWFrZQorKysgYi9Nb2R1bGVzL1VzZUVjb3MuY21ha2UKQEAgLTE4NSwxMSArMTg1LDExIEBACiAjIHdoZW4gdXNpbmcgbm1ha2UgbWFrZWZpbGVzLCB0aGUgY3VzdG9tIGJ1aWxkdHlwZSBzdXBwcmVzc2VzIHRoZSBkZWZhdWx0IGNsLmV4ZSBmbGFncwogIyBhbmQgdGhlIHJ1bGVzIGZvciBjcmVhdGluZyBvYmplY3RzIGFyZSBhZGp1c3RlZCBmb3IgZ2NjCiAgIHNldChDTUFLRV9CVUlMRF9UWVBFIENVU1RPTV9FQ09TX0JVSUxEKQotICBzZXQoQ01BS0VfQ19DT01QSUxFX09CSkVDVCAgICAgIjxDTUFLRV9DX0NPTVBJTEVSPiAgIDxERUZJTkVTPiA8SU5DTFVERVM+IDxGTEFHUz4gLW8gPE9CSkVDVD4gLWMgPFNPVVJDRT4iKQorICBzZXQoQ01BS0VfQ19DT01QSUxFX09CSkVDVCAgICAgIjxDTUFLRV9DX0NPTVBJTEVSPiA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC1vIDxPQkpFQ1Q+IC1jIDxTT1VSQ0U+IikKICAgc2V0KENNQUtFX0NYWF9DT01QSUxFX09CSkVDVCAgICI8Q01BS0VfQ1hYX0NPTVBJTEVSPiA8REVGSU5FUz4gPElOQ0xVREVTPiA8RkxBR1M+IC1vIDxPQkpFQ1Q+IC1jIDxTT1VSQ0U+IikKICMgc3BlY2lhbCBsaW5rIGNvbW1hbmRzIGZvciBlY29zLWV4ZWN1dGFibGVzCi0gIHNldChDTUFLRV9DWFhfTElOS19FWEVDVVRBQkxFICAiPENNQUtFX0NYWF9DT01QSUxFUj4gPENNQUtFX0NYWF9MSU5LX0ZMQUdTPiA8T0JKRUNUUz4gIC1vIDxUQVJHRVQ+ICR7X2Vjb3NfRVhUUkFfTElCU30gLW5vc3RkbGliICAtbm9zdGFydGZpbGVzIC1MJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2Vjb3MvaW5zdGFsbC9saWIgLVR0YXJnZXQubGQgJHtFQ09TX0xEX01DUFV9IikKLSAgc2V0KENNQUtFX0NfTElOS19FWEVDVVRBQkxFICAgICI8Q01BS0VfQ19DT01QSUxFUj4gICA8Q01BS0VfQ19MSU5LX0ZMQUdTPiAgIDxPQkpFQ1RTPiAgLW8gPFRBUkdFVD4gJHtfZWNvc19FWFRSQV9MSUJTfSAtbm9zdGRsaWIgIC1ub3N0YXJ0ZmlsZXMgLUwke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vZWNvcy9pbnN0YWxsL2xpYiAtVHRhcmdldC5sZCAke0VDT1NfTERfTUNQVX0iKQorICBzZXQoQ01BS0VfQ1hYX0xJTktfRVhFQ1VUQUJMRSAgIjxDTUFLRV9DWFhfQ09NUElMRVI+IDxDTUFLRV9DWFhfTElOS19GTEFHUz4gPE9CSkVDVFM+IC1vIDxUQVJHRVQ+ICR7X2Vjb3NfRVhUUkFfTElCU30gLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgLUwke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vZWNvcy9pbnN0YWxsL2xpYiAtVHRhcmdldC5sZCAke0VDT1NfTERfTUNQVX0iKQorICBzZXQoQ01BS0VfQ19MSU5LX0VYRUNVVEFCTEUgICAgIjxDTUFLRV9DX0NPTVBJTEVSPiA8Q01BS0VfQ19MSU5LX0ZMQUdTPiA8T0JKRUNUUz4gLW8gPFRBUkdFVD4gJHtfZWNvc19FWFRSQV9MSUJTfSAtbm9zdGRsaWIgLW5vc3RhcnRmaWxlcyAtTCR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9lY29zL2luc3RhbGwvbGliIC1UdGFyZ2V0LmxkICR7RUNPU19MRF9NQ1BVfSIpCiAjIHNvbWUgc3RyaWN0IGNvbXBpbGVyIGZsYWdzCiAgIHNldCAoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV3N0cmljdC1wcm90b3R5cGVzIikKICAgc2V0IChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV292ZXJsb2FkZWQtdmlydHVhbCAtZm5vLXJ0dGkgLVdjdG9yLWR0b3ItcHJpdmFjeSAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWV4Y2VwdGlvbnMiKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9Vc2VTV0lHLmNtYWtlIGIvTW9kdWxlcy9Vc2VTV0lHLmNtYWtlCmluZGV4IDc4NTIyZGEuLmY2YTIwZjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvVXNlU1dJRy5jbWFrZQorKysgYi9Nb2R1bGVzL1VzZVNXSUcuY21ha2UKQEAgLTM0MSw2ICszNDEsMjMgQEAKICAgICBsaXN0KEFQUEVORCBmaWxlcyAiJHtleHRyYV9maWxlfSIpCiAgIGVuZGZvcmVhY2goKQogCisgIGlmIChsYW5ndWFnZSBTVFJFUVVBTCAiRk9SVFJBTiIgQU5EIENNQUtFX0ZvcnRyYW5fQ09NUElMRVJfTE9BREVEKQorICAgICMgUHJvY2VzcyBwb3NzaWJsZSB1c2VyLXN1cHBsaWVkIGV4dGVuc2lvbiBpbiBmbGFncyAob2J0YWluZWQgdmlhIHBhcmVudAorICAgICMgc2NvcGUgdmFyaWFibGUpIHRvIGRldGVybWluZSB0aGUgc291cmNlIGZpbGUgbmFtZS4KKyAgICBsaXN0KEZJTkQgU1dJR19DT01QSUxBVElPTl9GTEFHUyAiLWZleHQiIGZleHRfaWR4KQorICAgIGlmIChmZXh0X2lkeCBFUVVBTCAtMSkKKyAgICAgICMgRGVmYXVsdCBGb3J0cmFuIGdlbmVyYXRlZCBleHRlbnNpb24KKyAgICAgIHNldChmZXh0ICJmOTAiKQorICAgIGVsc2UoKQorICAgICAgIyBHZXQgZXh0ZW5zaW9uIGZyb20gdXNlci1wcm92aWRlZCBmbGFnCisgICAgICBtYXRoKEVYUFIgZmV4dF9pZHggIiR7ZmV4dF9pZHh9ICsgMSIpCisgICAgICBsaXN0KEdFVCBTV0lHX0NPTVBJTEFUSU9OX0ZMQUdTICIke2ZleHRfaWR4fSIgZmV4dCkKKyAgICBlbmRpZigpCisgICAgc2V0KGV4dHJhX2ZpbGUgIiR7Z2VuZXJhdGVkcGF0aH0vJHttb2R1bGVfYmFzZW5hbWV9LiR7ZmV4dH0iKQorICAgIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygiJHtleHRyYV9maWxlfSIgUFJPUEVSVElFUyBMQU5HVUFHRSAiRm9ydHJhbiIpCisgICAgbGlzdChBUFBFTkQgZmlsZXMgIiR7ZXh0cmFfZmlsZX0iKQorICBlbmRpZigpCisKICAgc2V0ICgke291dGZpbGVzfSAke2ZpbGVzfSBQQVJFTlRfU0NPUEUpCiBlbmRmdW5jdGlvbigpCiAKQEAgLTQxNSw2ICs0MzIsNyBAQAogICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KHN3aWdfc291cmNlX2ZpbGVfZnVsbG5hbWUgIiR7aW5maWxlfSIgQUJTT0xVVEUpCiAKICAgaWYgKE5PVCBTV0lHX01PRFVMRV8ke25hbWV9X05PUFJPWFkpCisgICAgc2V0KFNXSUdfQ09NUElMQVRJT05fRkxBR1MgJHtzd2lnX3NvdXJjZV9maWxlX2ZsYWdzfSkKICAgICBTV0lHX0dFVF9FWFRSQV9PVVRQVVRfRklMRVMoJHtTV0lHX01PRFVMRV8ke25hbWV9X0xBTkdVQUdFfQogICAgICAgc3dpZ19leHRyYV9nZW5lcmF0ZWRfZmlsZXMKICAgICAgICIke291dGRpcn0iCkBAIC03ODcsNiArODA1LDggQEAKICAgICBpZiAoQVBQTEUpCiAgICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMgKCR7dGFyZ2V0X25hbWV9IFBST1BFUlRJRVMgU1VGRklYICIuZHlsaWIiKQogICAgIGVuZGlmICgpCisgIGVsc2VpZiAoc3dpZ19sb3dlcmNhc2VfbGFuZ3VhZ2UgU1RSRVFVQUwgImZvcnRyYW4iKQorICAgICMgRG8gKm5vdCogb3ZlcnJpZGUgdGhlIHRhcmdldCdzIGxpYnJhcnkgcHJlZml4CiAgIGVsc2UoKQogICAgICMgYXNzdW1lIGVtcHR5IHByZWZpeCBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgbW9kdWxlIHRvIGJlIGR5bmFtaWNhbGx5IGxvYWRlZAogICAgIHNldF90YXJnZXRfcHJvcGVydGllcyAoJHt0YXJnZXRfbmFtZX0gUFJPUEVSVElFUyBQUkVGSVggIiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKaW5kZXggYzU3ZjcxMy4uNTY0ZTY0NyAxMDA2NDQKLS0tIGEvU291cmNlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9DTWFrZUxpc3RzLnR4dApAQCAtMSw2ICsxLDExIEBACiAjIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBPU0ktYXBwcm92ZWQgQlNEIDMtQ2xhdXNlIExpY2Vuc2UuICBTZWUgYWNjb21wYW55aW5nCiAjIGZpbGUgQ29weXJpZ2h0LnR4dCBvciBodHRwczovL2NtYWtlLm9yZy9saWNlbnNpbmcgZm9yIGRldGFpbHMuCiAKKyMgVG8gZW5zdXJlIG1heGltdW0gcG9ydGFiaWxpdHkgYWNyb3NzIHZhcmlvdXMgY29tcGlsZXJzIGFuZCBwbGF0Zm9ybXMKKyMgZGVhY3RpdmF0ZSBhbnkgY29tcGlsZXIgZXh0ZW5zaW9ucworc2V0KENNQUtFX0NfRVhURU5TSU9OUyBGQUxTRSkKK3NldChDTUFLRV9DWFhfRVhURU5TSU9OUyBGQUxTRSkKKwogaW5jbHVkZShDaGVja0luY2x1ZGVGaWxlKQogIyBDaGVjayBpZiB3ZSBjYW4gYnVpbGQgc3VwcG9ydCBmb3IgRUxGIHBhcnNpbmcuCiBpZihDTUFLRV9DWFhfUExBVEZPUk1fSUQgTUFUQ0hFUyAiT3BlbkJTRCIpCkBAIC0zNTQsNiArMzU5LDcgQEAKICAgY21NYWtlZmlsZVRhcmdldEdlbmVyYXRvci5jeHgKICAgY21NYWtlZmlsZUV4ZWN1dGFibGVUYXJnZXRHZW5lcmF0b3IuY3h4CiAgIGNtTWFrZWZpbGVMaWJyYXJ5VGFyZ2V0R2VuZXJhdG9yLmN4eAorICBjbU1ha2VmaWxlUHJvZmlsaW5nRGF0YS5jeHgKICAgY21NYWtlZmlsZVV0aWxpdHlUYXJnZXRHZW5lcmF0b3IuY3h4CiAgIGNtTWVzc2FnZVR5cGUuaAogICBjbU1lc3Nlbmdlci5jeHgKQEAgLTQ4NCw2ICs0OTAsOCBAQAogICBjbUJ1aWxkQ29tbWFuZC5oCiAgIGNtQnVpbGROYW1lQ29tbWFuZC5jeHgKICAgY21CdWlsZE5hbWVDb21tYW5kLmgKKyAgY21DTWFrZUNvbW1hbmQuY3h4CisgIGNtQ01ha2VDb21tYW5kLmgKICAgY21DTWFrZUhvc3RTeXN0ZW1JbmZvcm1hdGlvbkNvbW1hbmQuY3h4CiAgIGNtQ01ha2VIb3N0U3lzdGVtSW5mb3JtYXRpb25Db21tYW5kLmgKICAgY21DTWFrZU1pbmltdW1SZXF1aXJlZC5jeHgKZGlmZiAtLWdpdCBhL1NvdXJjZS9DTWFrZVZlcnNpb24uY21ha2UgYi9Tb3VyY2UvQ01ha2VWZXJzaW9uLmNtYWtlCmluZGV4IGRlM2YwNTAuLmIzN2UxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DTWFrZVZlcnNpb24uY21ha2UKKysrIGIvU291cmNlL0NNYWtlVmVyc2lvbi5jbWFrZQpAQCAtMSw3ICsxLDcgQEAKICMgQ01ha2UgdmVyc2lvbiBudW1iZXIgY29tcG9uZW50cy4KIHNldChDTWFrZV9WRVJTSU9OX01BSk9SIDMpCiBzZXQoQ01ha2VfVkVSU0lPTl9NSU5PUiAxNykKLXNldChDTWFrZV9WRVJTSU9OX1BBVENIIDApCitzZXQoQ01ha2VfVkVSU0lPTl9QQVRDSCAyMDIwMDMzMSkKICNzZXQoQ01ha2VfVkVSU0lPTl9SQyAwKQogc2V0KENNYWtlX1ZFUlNJT05fSVNfRElSVFkgMCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0NQYWNrL0lGVy9jbUNQYWNrSUZXR2VuZXJhdG9yLmN4eCBiL1NvdXJjZS9DUGFjay9JRlcvY21DUGFja0lGV0dlbmVyYXRvci5jeHgKaW5kZXggNTA5YWM2NS4uMjgwNmM2MSAxMDA2NDQKLS0tIGEvU291cmNlL0NQYWNrL0lGVy9jbUNQYWNrSUZXR2VuZXJhdG9yLmN4eAorKysgYi9Tb3VyY2UvQ1BhY2svSUZXL2NtQ1BhY2tJRldHZW5lcmF0b3IuY3h4CkBAIC01NDQsMTAgKzU0NCw3IEBACiAgIGlmIChncm91cC0+UGFyZW50R3JvdXApIHsKICAgICBjbUNQYWNrSUZXUGFja2FnZSogcGFja2FnZSA9IHRoaXMtPkdldEdyb3VwUGFja2FnZShncm91cC0+UGFyZW50R3JvdXApOwogICAgIGJvb2wgZG90ID0gIXRoaXMtPlJlc29sdmVEdXBsaWNhdGVOYW1lczsKLSAgICBpZiAoZG90ICYmIG5hbWUuc3Vic3RyKDAsIHBhY2thZ2UtPk5hbWUuc2l6ZSgpKSA9PSBwYWNrYWdlLT5OYW1lKSB7Ci0gICAgICBkb3QgPSBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGRvdCkgeworICAgIGlmIChkb3QgJiYgIWNtSGFzUHJlZml4KG5hbWUsIHBhY2thZ2UtPk5hbWUpKSB7CiAgICAgICBuYW1lID0gcGFja2FnZS0+TmFtZSArICIuIiArIG5hbWU7CiAgICAgfQogICB9CkBAIC01NzYsMTAgKzU3Myw3IEBACiAgICAgICByZXR1cm4gcGFja2FnZS0+TmFtZTsKICAgICB9CiAgICAgYm9vbCBkb3QgPSAhdGhpcy0+UmVzb2x2ZUR1cGxpY2F0ZU5hbWVzOwotICAgIGlmIChkb3QgJiYgbmFtZS5zdWJzdHIoMCwgcGFja2FnZS0+TmFtZS5zaXplKCkpID09IHBhY2thZ2UtPk5hbWUpIHsKLSAgICAgIGRvdCA9IGZhbHNlOwotICAgIH0KLSAgICBpZiAoZG90KSB7CisgICAgaWYgKGRvdCAmJiAhY21IYXNQcmVmaXgobmFtZSwgcGFja2FnZS0+TmFtZSkpIHsKICAgICAgIG5hbWUgPSBwYWNrYWdlLT5OYW1lICsgIi4iICsgbmFtZTsKICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9DUGFjay9JRlcvY21DUGFja0lGV1BhY2thZ2UuY3h4IGIvU291cmNlL0NQYWNrL0lGVy9jbUNQYWNrSUZXUGFja2FnZS5jeHgKaW5kZXggOWE5Y2Q1Ni4uNTZhNzRjNSAxMDA2NDQKLS0tIGEvU291cmNlL0NQYWNrL0lGVy9jbUNQYWNrSUZXUGFja2FnZS5jeHgKKysrIGIvU291cmNlL0NQYWNrL0lGVy9jbUNQYWNrSUZXUGFja2FnZS5jeHgKQEAgLTU1LDggKzU1LDcgQEAKICAgaWYgKGRhc2hQb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKICAgICBwb3MgPSBkYXNoUG9zOwogICB9Ci0gIHRoaXMtPk5hbWUgPQotICAgIHBvcyA9PSBzdGQ6OnN0cmluZzo6bnBvcyA/IGRlcGVuZGVuY2UgOiBkZXBlbmRlbmNlLnN1YnN0cigwLCBwb3MpOworICB0aGlzLT5OYW1lID0gZGVwZW5kZW5jZS5zdWJzdHIoMCwgcG9zKTsKIH0KIAogc3RkOjpzdHJpbmcgY21DUGFja0lGV1BhY2thZ2U6OkRlcGVuZGVuY2VTdHJ1Y3Q6Ok5hbWVXaXRoQ29tcGFyZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1BhY2svT1NYU2NyaXB0TGF1bmNoZXIuY3h4IGIvU291cmNlL0NQYWNrL09TWFNjcmlwdExhdW5jaGVyLmN4eAppbmRleCAyMWQyN2EwLi5iZGFmNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1BhY2svT1NYU2NyaXB0TGF1bmNoZXIuY3h4CisrKyBiL1NvdXJjZS9DUGFjay9PU1hTY3JpcHRMYXVuY2hlci5jeHgKQEAgLTUsNiArNSw4IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgPGNtL21lbW9yeT4KKwogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAKICNpbmNsdWRlICJjbXN5cy9GU3RyZWFtLmh4eCIKQEAgLTI2LDcgKzI4LDYgQEAKICAgQ0ZTdHJpbmdSZWYgZmlsZU5hbWU7CiAgIENGQnVuZGxlUmVmIGFwcEJ1bmRsZTsKICAgQ0ZVUkxSZWYgc2NyaXB0RmlsZVVSTDsKLSAgVUludDgqIHBhdGg7CiAKICAgLy8gZ2V0IENGIFVSTCBmb3Igc2NyaXB0CiAgIGlmICghKGFwcEJ1bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSkgewpAQCAtNDEsMTMgKzQyLDE1IEBACiAgIH0KIAogICAvLyBjcmVhdGUgcGF0aCBzdHJpbmcKLSAgaWYgKCEocGF0aCA9IG5ldyBVSW50OFtQQVRIX01BWF0pKSB7CisgIGF1dG8gcGF0aCA9IGNtOjptYWtlX3VuaXF1ZTxVSW50OFtdPihQQVRIX01BWCk7CisgIGlmICghcGF0aCkgewogICAgIHJldHVybiAxOwogICB9CiAKICAgLy8gZ2V0IHRoZSBmaWxlIHN5c3RlbSBwYXRoIG9mIHRoZSB1cmwgYXMgYSBjc3RyaW5nCiAgIC8vIGluIGFuIGVuY29kaW5nIHN1aXRhYmxlIGZvciBwb3NpeCBhcGlzCi0gIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2NyaXB0RmlsZVVSTCwgdHJ1ZSwgcGF0aCwgUEFUSF9NQVgpKSB7CisgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2NyaXB0RmlsZVVSTCwgdHJ1ZSwgcGF0aC5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVRIX01BWCkpIHsKICAgICBEZWJ1Z0Vycm9yKCJDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiBmYWlsZWQiKTsKICAgICByZXR1cm4gMTsKICAgfQpAQCAtNTUsMTAgKzU4LDEwIEBACiAgIC8vIGRpc3Bvc2Ugb2YgdGhlIENGIHZhcmlhYmxlCiAgIENGUmVsZWFzZShzY3JpcHRGaWxlVVJMKTsKIAotICBzdGQ6OnN0cmluZyBmdWxsU2NyaXB0UGF0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhdGgpOwotICBkZWxldGVbXSBwYXRoOworICBzdGQ6OnN0cmluZyBmdWxsU2NyaXB0UGF0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBhdGguZ2V0KCkpOworICBwYXRoLnJlc2V0KCk7CiAKLSAgaWYgKCFjbXN5czo6U3lzdGVtVG9vbHM6OkZpbGVFeGlzdHMoZnVsbFNjcmlwdFBhdGguY19zdHIoKSkpIHsKKyAgaWYgKCFjbXN5czo6U3lzdGVtVG9vbHM6OkZpbGVFeGlzdHMoZnVsbFNjcmlwdFBhdGgpKSB7CiAgICAgcmV0dXJuIDE7CiAgIH0KIApAQCAtODAsNyArODMsNiBAQAogICBjbXN5c1Byb2Nlc3NfU2V0VGltZW91dChjcCwgMCk7CiAgIGNtc3lzUHJvY2Vzc19FeGVjdXRlKGNwKTsKIAotICBzdGQ6OnZlY3RvcjxjaGFyPiB0ZW1wT3V0cHV0OwogICBjaGFyKiBkYXRhOwogICBpbnQgbGVuZ3RoOwogICB3aGlsZSAoY21zeXNQcm9jZXNzX1dhaXRGb3JEYXRhKGNwLCAmZGF0YSwgJmxlbmd0aCwgbnVsbHB0cikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9DUGFjay9XaVgvY21DUGFja1dJWEdlbmVyYXRvci5jeHggYi9Tb3VyY2UvQ1BhY2svV2lYL2NtQ1BhY2tXSVhHZW5lcmF0b3IuY3h4CmluZGV4IGU3MWEzOGYuLmU0ODFkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DUGFjay9XaVgvY21DUGFja1dJWEdlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL0NQYWNrL1dpWC9jbUNQYWNrV0lYR2VuZXJhdG9yLmN4eApAQCAtNCw2ICs0LDcgQEAKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAorI2luY2x1ZGUgPGNtL21lbW9yeT4KICNpbmNsdWRlIDxjbS9zdHJpbmdfdmlldz4KIAogI2luY2x1ZGUgImNtc3lzL0RpcmVjdG9yeS5oeHgiCkBAIC0zNSwyMiArMzYsMTYgQEAKICNpbmNsdWRlICJjbUNNYWtlVG9XaXhQYXRoLmgiCiAKIGNtQ1BhY2tXSVhHZW5lcmF0b3I6OmNtQ1BhY2tXSVhHZW5lcmF0b3IoKQotICA6IFBhdGNoKDApCi0gICwgQ29tcG9uZW50R3VpZFR5cGUoY21XSVhTb3VyY2VXcml0ZXI6OldJWF9HRU5FUkFURURfR1VJRCkKKyAgOiBDb21wb25lbnRHdWlkVHlwZShjbVdJWFNvdXJjZVdyaXRlcjo6V0lYX0dFTkVSQVRFRF9HVUlEKQogewogfQogCi1jbUNQYWNrV0lYR2VuZXJhdG9yOjp+Y21DUGFja1dJWEdlbmVyYXRvcigpCi17Ci0gIGlmICh0aGlzLT5QYXRjaCkgewotICAgIGRlbGV0ZSB0aGlzLT5QYXRjaDsKLSAgfQotfQorY21DUGFja1dJWEdlbmVyYXRvcjo6fmNtQ1BhY2tXSVhHZW5lcmF0b3IoKSA9IGRlZmF1bHQ7CiAKIGludCBjbUNQYWNrV0lYR2VuZXJhdG9yOjpJbml0aWFsaXplSW50ZXJuYWwoKQogewogICBjb21wb25lbnRQYWNrYWdlTWV0aG9kID0gT05FX1BBQ0tBR0U7Ci0gIHRoaXMtPlBhdGNoID0gbmV3IGNtV0lYUGF0Y2godGhpcy0+TG9nZ2VyKTsKKyAgdGhpcy0+UGF0Y2ggPSBjbTo6bWFrZV91bmlxdWU8Y21XSVhQYXRjaD4odGhpcy0+TG9nZ2VyKTsKIAogICByZXR1cm4gdGhpcy0+U3VwZXJjbGFzczo6SW5pdGlhbGl6ZUludGVybmFsKCk7CiB9CkBAIC0xMDMsNyArOTgsNyBAQAogICAgIGNvbW1hbmQgPDwgIiAtZXh0ICIgPDwgUXVvdGVQYXRoKGV4dCk7CiAgIH0KIAotICBpZiAoc291cmNlRmlsZS5yZmluZCh0aGlzLT5DUGFja1RvcExldmVsLCAwKSAhPSAwKSB7CisgIGlmICghY21IYXNTdWZmaXgoc291cmNlRmlsZSwgdGhpcy0+Q1BhY2tUb3BMZXZlbCkpIHsKICAgICBjb21tYW5kIDw8ICIgIiA8PCBRdW90ZVBhdGgoIi1JIiArIHRoaXMtPkNQYWNrVG9wTGV2ZWwpOwogICB9CiAKQEAgLTM1NSw4ICszNTAsNyBAQAogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gb3B0aW9ucyA9IEdldE9wdGlvbnMoKTsKIAogICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBuYW1lIDogb3B0aW9ucykgewotICAgIGlmIChuYW1lLmxlbmd0aCgpID4gcHJlZml4Lmxlbmd0aCgpICYmCi0gICAgICAgIG5hbWUuc3Vic3RyKDAsIHByZWZpeC5sZW5ndGgoKSkgPT0gcHJlZml4KSB7CisgICAgaWYgKGNtSGFzUHJlZml4KG5hbWUsIHByZWZpeCkpIHsKICAgICAgIHN0ZDo6c3RyaW5nIGlkID0gbmFtZS5zdWJzdHIocHJlZml4Lmxlbmd0aCgpKTsKICAgICAgIHN0ZDo6c3RyaW5nIHZhbHVlID0gR2V0T3B0aW9uKG5hbWUuY19zdHIoKSk7CiAKQEAgLTExMDQsMTQgKzEwOTgsMTQgQEAKICAgY21DcnlwdG9IYXNoIHNoYTEoY21DcnlwdG9IYXNoOjpBbGdvU0hBMSk7CiAgIHN0ZDo6c3RyaW5nIGNvbnN0IGhhc2ggPSBzaGExLkhhc2hTdHJpbmcocGF0aCk7CiAKLSAgc3RkOjpzdHJpbmcgaWRlbnRpZmllciA9IGNtU3RyQ2F0KGNtOjpzdHJpbmdfdmlldyhoYXNoKS5zdWJzdHIoMCwgNyksICdfJyk7Ci0KICAgY29uc3Qgc2l6ZV90IG1heEZpbGVOYW1lTGVuZ3RoID0gNTI7CisgIHN0ZDo6c3RyaW5nIGlkZW50aWZpZXIgPQorICAgIGNtU3RyQ2F0KGNtOjpzdHJpbmdfdmlldyhoYXNoKS5zdWJzdHIoMCwgNyksICdfJywKKyAgICAgICAgICAgICBjbTo6c3RyaW5nX3ZpZXcobm9ybWFsaXplZEZpbGVuYW1lKS5zdWJzdHIoMCwgbWF4RmlsZU5hbWVMZW5ndGgpKTsKKworICAvLyBpZiB0aGUgbmFtZSB3YXMgdHJ1bmNhdGVkCiAgIGlmIChub3JtYWxpemVkRmlsZW5hbWUubGVuZ3RoKCkgPiBtYXhGaWxlTmFtZUxlbmd0aCkgewotICAgIGlkZW50aWZpZXIgKz0gbm9ybWFsaXplZEZpbGVuYW1lLnN1YnN0cigwLCBtYXhGaWxlTmFtZUxlbmd0aCAtIDMpOwogICAgIGlkZW50aWZpZXIgKz0gIi4uLiI7Ci0gIH0gZWxzZSB7Ci0gICAgaWRlbnRpZmllciArPSBub3JtYWxpemVkRmlsZW5hbWU7CiAgIH0KIAogICByZXR1cm4gaWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9DUGFjay9XaVgvY21DUGFja1dJWEdlbmVyYXRvci5oIGIvU291cmNlL0NQYWNrL1dpWC9jbUNQYWNrV0lYR2VuZXJhdG9yLmgKaW5kZXggZDE5MzM0OC4uZDVhMTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0NQYWNrL1dpWC9jbUNQYWNrV0lYR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0NQYWNrL1dpWC9jbUNQYWNrV0lYR2VuZXJhdG9yLmgKQEAgLTQsNiArNCw3IEBACiAjZGVmaW5lIGNtQ1BhY2tXSVhHZW5lcmF0b3JfaAogCiAjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJjbUNQYWNrR2VuZXJhdG9yLmgiCkBAIC0yNCw2ICsyNSw4IEBACiAgIGNtQ1BhY2tUeXBlTWFjcm8oY21DUGFja1dJWEdlbmVyYXRvciwgY21DUGFja0dlbmVyYXRvcik7CiAKICAgY21DUGFja1dJWEdlbmVyYXRvcigpOworICBjbUNQYWNrV0lYR2VuZXJhdG9yKGNvbnN0IGNtQ1BhY2tXSVhHZW5lcmF0b3ImKSA9IGRlbGV0ZTsKKyAgY29uc3QgY21DUGFja1dJWEdlbmVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IGNtQ1BhY2tXSVhHZW5lcmF0b3ImKSA9IGRlbGV0ZTsKICAgfmNtQ1BhY2tXSVhHZW5lcmF0b3IoKTsKIAogcHJvdGVjdGVkOgpAQCAtMTU3LDcgKzE2MCw3IEBACiAKICAgc3RkOjpzdHJpbmcgQ1BhY2tUb3BMZXZlbDsKIAotICBjbVdJWFBhdGNoKiBQYXRjaDsKKyAgc3RkOjp1bmlxdWVfcHRyPGNtV0lYUGF0Y2g+IFBhdGNoOwogCiAgIGNtV0lYU291cmNlV3JpdGVyOjpHdWlkVHlwZSBDb21wb25lbnRHdWlkVHlwZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1BhY2svV2lYL2NtV0lYQWNjZXNzQ29udHJvbExpc3QuY3h4IGIvU291cmNlL0NQYWNrL1dpWC9jbVdJWEFjY2Vzc0NvbnRyb2xMaXN0LmN4eAppbmRleCAzNjY4YjQ2Li45Njg1YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1BhY2svV2lYL2NtV0lYQWNjZXNzQ29udHJvbExpc3QuY3h4CisrKyBiL1NvdXJjZS9DUGFjay9XaVgvY21XSVhBY2Nlc3NDb250cm9sTGlzdC5jeHgKQEAgLTIsNiArMiw4IEBACiAgICBmaWxlIENvcHlyaWdodC50eHQgb3IgaHR0cHM6Ly9jbWFrZS5vcmcvbGljZW5zaW5nIGZvciBkZXRhaWxzLiAgKi8KICNpbmNsdWRlICJjbVdJWEFjY2Vzc0NvbnRyb2xMaXN0LmgiCiAKKyNpbmNsdWRlIDxjbS9zdHJpbmdfdmlldz4KKwogI2luY2x1ZGUgImNtQ1BhY2tHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJjbVN0cmluZ0FsZ29yaXRobXMuaCIKICNpbmNsdWRlICJjbVN5c3RlbVRvb2xzLmgiCkBAIC0zNSwxMiArMzcsMTMgQEAKICAgICByZXR1cm47CiAgIH0KIAotICBzdGQ6OnN0cmluZyB1c2VyX2FuZF9kb21haW4gPSBlbnRyeS5zdWJzdHIoMCwgcG9zKTsKLSAgc3RkOjpzdHJpbmcgcGVybWlzc2lvbl9zdHJpbmcgPSBlbnRyeS5zdWJzdHIocG9zICsgMSk7CisgIGNtOjpzdHJpbmdfdmlldyBlbnZpZXcoZW50cnkpOworICBjbTo6c3RyaW5nX3ZpZXcgdXNlcl9hbmRfZG9tYWluID0gZW52aWV3LnN1YnN0cigwLCBwb3MpOworICBjbTo6c3RyaW5nX3ZpZXcgcGVybWlzc2lvbl9zdHJpbmcgPSBlbnZpZXcuc3Vic3RyKHBvcyArIDEpOwogCiAgIHBvcyA9IHVzZXJfYW5kX2RvbWFpbi5maW5kKCdAJyk7Ci0gIHN0ZDo6c3RyaW5nIHVzZXI7Ci0gIHN0ZDo6c3RyaW5nIGRvbWFpbjsKKyAgY206OnN0cmluZ192aWV3IHVzZXI7CisgIGNtOjpzdHJpbmdfdmlldyBkb21haW47CiAgIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKICAgICB1c2VyID0gdXNlcl9hbmRfZG9tYWluLnN1YnN0cigwLCBwb3MpOwogICAgIGRvbWFpbiA9IHVzZXJfYW5kX2RvbWFpbi5zdWJzdHIocG9zICsgMSk7CkBAIC01MSw5ICs1NCw5IEBACiAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBwZXJtaXNzaW9ucyA9IGNtVG9rZW5pemUocGVybWlzc2lvbl9zdHJpbmcsICIsIik7CiAKICAgdGhpcy0+U291cmNlV3JpdGVyLkJlZ2luRWxlbWVudCgiUGVybWlzc2lvbiIpOwotICB0aGlzLT5Tb3VyY2VXcml0ZXIuQWRkQXR0cmlidXRlKCJVc2VyIiwgdXNlcik7CisgIHRoaXMtPlNvdXJjZVdyaXRlci5BZGRBdHRyaWJ1dGUoIlVzZXIiLCBzdGQ6OnN0cmluZyh1c2VyKSk7CiAgIGlmICghZG9tYWluLmVtcHR5KCkpIHsKLSAgICB0aGlzLT5Tb3VyY2VXcml0ZXIuQWRkQXR0cmlidXRlKCJEb21haW4iLCBkb21haW4pOworICAgIHRoaXMtPlNvdXJjZVdyaXRlci5BZGRBdHRyaWJ1dGUoIkRvbWFpbiIsIHN0ZDo6c3RyaW5nKGRvbWFpbikpOwogICB9CiAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIHBlcm1pc3Npb24gOiBwZXJtaXNzaW9ucykgewogICAgIHRoaXMtPkVtaXRCb29sZWFuQXR0cmlidXRlKGVudHJ5LCBjbVRyaW1XaGl0ZXNwYWNlKHBlcm1pc3Npb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9DUGFjay9XaVgvY21XSVhGaWxlc1NvdXJjZVdyaXRlci5jeHggYi9Tb3VyY2UvQ1BhY2svV2lYL2NtV0lYRmlsZXNTb3VyY2VXcml0ZXIuY3h4CmluZGV4IGMwZDg3OWEuLmI0MDg1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DUGFjay9XaVgvY21XSVhGaWxlc1NvdXJjZVdyaXRlci5jeHgKKysrIGIvU291cmNlL0NQYWNrL1dpWC9jbVdJWEZpbGVzU291cmNlV3JpdGVyLmN4eApAQCAtMSw1ICsxLDEwIEBACiAvKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgT1NJLWFwcHJvdmVkIEJTRCAzLUNsYXVzZSBMaWNlbnNlLiAgU2VlIGFjY29tcGFueWluZwogICAgZmlsZSBDb3B5cmlnaHQudHh0IG9yIGh0dHBzOi8vY21ha2Uub3JnL2xpY2Vuc2luZyBmb3IgZGV0YWlscy4gICovCisjaWYgZGVmaW5lZChfX0NZR1dJTl9fKQorLy8gRm9yIFNfSVdSSVRFIHN5bWJvbAorIyAgZGVmaW5lIF9ERUZBVUxUX1NPVVJDRQorI2VuZGlmCisKICNpbmNsdWRlICJjbVdJWEZpbGVzU291cmNlV3JpdGVyLmgiCiAKICNpbmNsdWRlICJjbV9zeXNfc3RhdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0NQYWNrL1dpWC9jbVdJWFBhdGNoLmN4eCBiL1NvdXJjZS9DUGFjay9XaVgvY21XSVhQYXRjaC5jeHgKaW5kZXggY2EyMzJmOS4uMTIyZmZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0NQYWNrL1dpWC9jbVdJWFBhdGNoLmN4eAorKysgYi9Tb3VyY2UvQ1BhY2svV2lYL2NtV0lYUGF0Y2guY3h4CkBAIC00MSw3ICs0MSw3IEBACiB2b2lkIGNtV0lYUGF0Y2g6OkFwcGx5RWxlbWVudENoaWxkcmVuKGNvbnN0IGNtV0lYUGF0Y2hFbGVtZW50JiBlbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbVdJWFNvdXJjZVdyaXRlciYgd3JpdGVyKQogewotICBmb3IgKGNtV0lYUGF0Y2hOb2RlKiBub2RlIDogZWxlbWVudC5jaGlsZHJlbikgeworICBmb3IgKGNvbnN0IGF1dG8mIG5vZGUgOiBlbGVtZW50LmNoaWxkcmVuKSB7CiAgICAgc3dpdGNoIChub2RlLT50eXBlKCkpIHsKICAgICAgIGNhc2UgY21XSVhQYXRjaE5vZGU6OkVMRU1FTlQ6CiAgICAgICAgIEFwcGx5RWxlbWVudChkeW5hbWljX2Nhc3Q8Y29uc3QgY21XSVhQYXRjaEVsZW1lbnQmPigqbm9kZSksIHdyaXRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1BhY2svV2lYL2NtV0lYUGF0Y2hQYXJzZXIuY3h4IGIvU291cmNlL0NQYWNrL1dpWC9jbVdJWFBhdGNoUGFyc2VyLmN4eAppbmRleCBmZDkxMDNiLi41NTg4ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1BhY2svV2lYL2NtV0lYUGF0Y2hQYXJzZXIuY3h4CisrKyBiL1NvdXJjZS9DUGFjay9XaVgvY21XSVhQYXRjaFBhcnNlci5jeHgKQEAgLTIsNiArMiwxMCBAQAogICAgZmlsZSBDb3B5cmlnaHQudHh0IG9yIGh0dHBzOi8vY21ha2Uub3JnL2xpY2Vuc2luZyBmb3IgZGV0YWlscy4gICovCiAjaW5jbHVkZSAiY21XSVhQYXRjaFBhcnNlci5oIgogCisjaW5jbHVkZSA8dXRpbGl0eT4KKworI2luY2x1ZGUgPGNtL21lbW9yeT4KKwogI2luY2x1ZGUgImNtX2V4cGF0LmgiCiAKICNpbmNsdWRlICJjbUNQYWNrR2VuZXJhdG9yLmgiCkBAIC0yMCwxMiArMjQsOCBAQAogewogfQogCi1jbVdJWFBhdGNoRWxlbWVudDo6fmNtV0lYUGF0Y2hFbGVtZW50KCkKLXsKLSAgZm9yIChjbVdJWFBhdGNoTm9kZSogY2hpbGQgOiBjaGlsZHJlbikgewotICAgIGRlbGV0ZSBjaGlsZDsKLSAgfQotfQorY21XSVhQYXRjaEVsZW1lbnQ6OmNtV0lYUGF0Y2hFbGVtZW50KCkgPSBkZWZhdWx0OworY21XSVhQYXRjaEVsZW1lbnQ6On5jbVdJWFBhdGNoRWxlbWVudCgpID0gZGVmYXVsdDsKIAogY21XSVhQYXRjaFBhcnNlcjo6Y21XSVhQYXRjaFBhcnNlcihmcmFnbWVudF9tYXBfdCYgZnJhZ21lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUNQYWNrTG9nKiBsb2dnZXIpCkBAIC01NCw4ICs1NCw3IEBACiAgIH0gZWxzZSBpZiAoU3RhdGUgPT0gSU5TSURFX0ZSQUdNRU5UKSB7CiAgICAgY21XSVhQYXRjaEVsZW1lbnQmIHBhcmVudCA9ICpFbGVtZW50U3RhY2suYmFjaygpOwogCi0gICAgY21XSVhQYXRjaEVsZW1lbnQqIGVsZW1lbnQgPSBuZXcgY21XSVhQYXRjaEVsZW1lbnQ7Ci0gICAgcGFyZW50LmNoaWxkcmVuLnB1c2hfYmFjayhlbGVtZW50KTsKKyAgICBhdXRvIGVsZW1lbnQgPSBjbTo6bWFrZV91bmlxdWU8Y21XSVhQYXRjaEVsZW1lbnQ+KCk7CiAKICAgICBlbGVtZW50LT5uYW1lID0gbmFtZTsKIApAQCAtNjYsNyArNjUsOCBAQAogICAgICAgZWxlbWVudC0+YXR0cmlidXRlc1trZXldID0gdmFsdWU7CiAgICAgfQogCi0gICAgRWxlbWVudFN0YWNrLnB1c2hfYmFjayhlbGVtZW50KTsKKyAgICBFbGVtZW50U3RhY2sucHVzaF9iYWNrKGVsZW1lbnQuZ2V0KCkpOworICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoX2JhY2soc3RkOjptb3ZlKGVsZW1lbnQpKTsKICAgfQogfQogCkBAIC0xMzAsMTAgKzEzMCwxMCBAQAogICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgbGFzdCA9IHRleHQuZmluZF9sYXN0X25vdF9vZih3aGl0ZXNwYWNlKTsKIAogICAgIGlmIChmaXJzdCAhPSBzdGQ6OnN0cmluZzo6bnBvcyAmJiBsYXN0ICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgICBjbVdJWFBhdGNoVGV4dCogdGV4dF9ub2RlID0gbmV3IGNtV0lYUGF0Y2hUZXh0OworICAgICAgYXV0byB0ZXh0X25vZGUgPSBjbTo6bWFrZV91bmlxdWU8Y21XSVhQYXRjaFRleHQ+KCk7CiAgICAgICB0ZXh0X25vZGUtPnRleHQgPSB0ZXh0LnN1YnN0cihmaXJzdCwgbGFzdCAtIGZpcnN0ICsgMSk7CiAKLSAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoX2JhY2sodGV4dF9ub2RlKTsKKyAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoX2JhY2soc3RkOjptb3ZlKHRleHRfbm9kZSkpOwogICAgIH0KICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0NQYWNrL1dpWC9jbVdJWFBhdGNoUGFyc2VyLmggYi9Tb3VyY2UvQ1BhY2svV2lYL2NtV0lYUGF0Y2hQYXJzZXIuaAppbmRleCA4N2RkODkyLi44ZDVkMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1BhY2svV2lYL2NtV0lYUGF0Y2hQYXJzZXIuaAorKysgYi9Tb3VyY2UvQ1BhY2svV2lYL2NtV0lYUGF0Y2hQYXJzZXIuaApAQCAtNCw2ICs0LDcgQEAKICNkZWZpbmUgY21DUGFja1dJWFBhdGNoUGFyc2VyX2gKIAogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAiY21DUGFja0xvZy5oIgpAQCAtMzMsOSArMzQsMTQgQEAKIHsKICAgdmlydHVhbCBUeXBlIHR5cGUoKTsKIAorICBjbVdJWFBhdGNoRWxlbWVudCgpOworCisgIGNtV0lYUGF0Y2hFbGVtZW50KGNvbnN0IGNtV0lYUGF0Y2hFbGVtZW50JikgPSBkZWxldGU7CisgIGNvbnN0IGNtV0lYUGF0Y2hFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgY21XSVhQYXRjaEVsZW1lbnQmKSA9IGRlbGV0ZTsKKwogICB+Y21XSVhQYXRjaEVsZW1lbnQoKTsKIAotICB1c2luZyBjaGlsZF9saXN0X3QgPSBzdGQ6OnZlY3RvcjxjbVdJWFBhdGNoTm9kZSo+OworICB1c2luZyBjaGlsZF9saXN0X3QgPSBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y21XSVhQYXRjaE5vZGU+PjsKICAgdXNpbmcgYXR0cmlidXRlc190ID0gc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPjsKIAogICBzdGQ6OnN0cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0NQYWNrL2NtQ1BhY2tMb2cuY3h4IGIvU291cmNlL0NQYWNrL2NtQ1BhY2tMb2cuY3h4CmluZGV4IGNhNjc1ZmQuLjQ5ZTQxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DUGFjay9jbUNQYWNrTG9nLmN4eAorKysgYi9Tb3VyY2UvQ1BhY2svY21DUGFja0xvZy5jeHgKQEAgLTQsNTQgKzQsMzggQEAKIAogI2luY2x1ZGUgPGlvc3RyZWFtPgogCisjaW5jbHVkZSA8Y20vbWVtb3J5PgorCiAjaW5jbHVkZSAiY21HZW5lcmF0ZWRGaWxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiY21TeXN0ZW1Ub29scy5oIgogCiBjbUNQYWNrTG9nOjpjbUNQYWNrTG9nKCkKIHsKLSAgdGhpcy0+VmVyYm9zZSA9IGZhbHNlOwotICB0aGlzLT5EZWJ1ZyA9IGZhbHNlOwotICB0aGlzLT5RdWlldCA9IGZhbHNlOwotICB0aGlzLT5OZXdMaW5lID0gdHJ1ZTsKLQotICB0aGlzLT5MYXN0VGFnID0gY21DUGFja0xvZzo6Tk9UQUc7CiAgIHRoaXMtPkRlZmF1bHRPdXRwdXQgPSAmc3RkOjpjb3V0OwogICB0aGlzLT5EZWZhdWx0RXJyb3IgPSAmc3RkOjpjZXJyOwotCi0gIHRoaXMtPkxvZ091dHB1dCA9IG51bGxwdHI7Ci0gIHRoaXMtPkxvZ091dHB1dENsZWFudXAgPSBmYWxzZTsKIH0KIAotY21DUGFja0xvZzo6fmNtQ1BhY2tMb2coKQotewotICB0aGlzLT5TZXRMb2dPdXRwdXRTdHJlYW0obnVsbHB0cik7Ci19CitjbUNQYWNrTG9nOjp+Y21DUGFja0xvZygpID0gZGVmYXVsdDsKIAogdm9pZCBjbUNQYWNrTG9nOjpTZXRMb2dPdXRwdXRTdHJlYW0oc3RkOjpvc3RyZWFtKiBvcykKIHsKLSAgaWYgKHRoaXMtPkxvZ091dHB1dENsZWFudXAgJiYgdGhpcy0+TG9nT3V0cHV0KSB7Ci0gICAgZGVsZXRlIHRoaXMtPkxvZ091dHB1dDsKLSAgfQotICB0aGlzLT5Mb2dPdXRwdXRDbGVhbnVwID0gZmFsc2U7CisgIHRoaXMtPkxvZ091dHB1dFN0cmVhbS5yZXNldCgpOwogICB0aGlzLT5Mb2dPdXRwdXQgPSBvczsKIH0KIAogYm9vbCBjbUNQYWNrTG9nOjpTZXRMb2dPdXRwdXRGaWxlKGNvbnN0IGNoYXIqIGZuYW1lKQogewotICBjbUdlbmVyYXRlZEZpbGVTdHJlYW0qIGNnID0gbnVsbHB0cjsKKyAgdGhpcy0+TG9nT3V0cHV0U3RyZWFtLnJlc2V0KCk7CiAgIGlmIChmbmFtZSkgewotICAgIGNnID0gbmV3IGNtR2VuZXJhdGVkRmlsZVN0cmVhbShmbmFtZSk7CisgICAgdGhpcy0+TG9nT3V0cHV0U3RyZWFtID0gY206Om1ha2VfdW5pcXVlPGNtR2VuZXJhdGVkRmlsZVN0cmVhbT4oZm5hbWUpOwogICB9Ci0gIGlmIChjZyAmJiAhKmNnKSB7Ci0gICAgZGVsZXRlIGNnOwotICAgIGNnID0gbnVsbHB0cjsKKyAgaWYgKHRoaXMtPkxvZ091dHB1dFN0cmVhbSAmJiAhKnRoaXMtPkxvZ091dHB1dFN0cmVhbSkgeworICAgIHRoaXMtPkxvZ091dHB1dFN0cmVhbS5yZXNldCgpOwogICB9Ci0gIHRoaXMtPlNldExvZ091dHB1dFN0cmVhbShjZyk7Ci0gIGlmICghY2cpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgdGhpcy0+TG9nT3V0cHV0Q2xlYW51cCA9IHRydWU7Ci0gIHJldHVybiB0cnVlOworCisgIHRoaXMtPkxvZ091dHB1dCA9IHRoaXMtPkxvZ091dHB1dFN0cmVhbS5nZXQoKTsKKworICByZXR1cm4gdGhpcy0+TG9nT3V0cHV0ICE9IG51bGxwdHI7CiB9CiAKIHZvaWQgY21DUGFja0xvZzo6TG9nKGludCB0YWcsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBtc2csCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1BhY2svY21DUGFja0xvZy5oIGIvU291cmNlL0NQYWNrL2NtQ1BhY2tMb2cuaAppbmRleCAxY2IxNjQzLi42OGZmY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1BhY2svY21DUGFja0xvZy5oCisrKyBiL1NvdXJjZS9DUGFjay9jbUNQYWNrTG9nLmgKQEAgLTUsNiArNSw3IEBACiAKICNpbmNsdWRlICJjbUNvbmZpZ3VyZS5oIiAvLyBJV1lVIHByYWdtYToga2VlcAogCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPG9zdHJlYW0+CiAjaW5jbHVkZSA8c3RyaW5nPgogCkBAIC05NywxMyArOTgsMTMgQEAKICAgdm9pZCBTZXRFcnJvclByZWZpeChzdGQ6OnN0cmluZyBjb25zdCYgcGZ4KSB7IHRoaXMtPkVycm9yUHJlZml4ID0gcGZ4OyB9CiAKIHByaXZhdGU6Ci0gIGJvb2wgVmVyYm9zZTsKLSAgYm9vbCBEZWJ1ZzsKLSAgYm9vbCBRdWlldDsKKyAgYm9vbCBWZXJib3NlID0gZmFsc2U7CisgIGJvb2wgRGVidWcgPSBmYWxzZTsKKyAgYm9vbCBRdWlldCA9IGZhbHNlOwogCi0gIGJvb2wgTmV3TGluZTsKKyAgYm9vbCBOZXdMaW5lID0gdHJ1ZTsKIAotICBpbnQgTGFzdFRhZzsKKyAgaW50IExhc3RUYWcgPSBjbUNQYWNrTG9nOjpOT1RBRzsKIAogICBzdGQ6OnN0cmluZyBQcmVmaXg7CiAgIHN0ZDo6c3RyaW5nIE91dHB1dFByZWZpeDsKQEAgLTExMiwxMyArMTEzLDExIEBACiAgIHN0ZDo6c3RyaW5nIFdhcm5pbmdQcmVmaXg7CiAgIHN0ZDo6c3RyaW5nIEVycm9yUHJlZml4OwogCi0gIHN0ZDo6b3N0cmVhbSogRGVmYXVsdE91dHB1dDsKLSAgc3RkOjpvc3RyZWFtKiBEZWZhdWx0RXJyb3I7CisgIHN0ZDo6b3N0cmVhbSogRGVmYXVsdE91dHB1dCA9IG51bGxwdHI7CisgIHN0ZDo6b3N0cmVhbSogRGVmYXVsdEVycm9yID0gbnVsbHB0cjsKIAotICBzdGQ6OnN0cmluZyBMb2dPdXRwdXRGaWxlTmFtZTsKLSAgc3RkOjpvc3RyZWFtKiBMb2dPdXRwdXQ7Ci0gIC8vIERvIHdlIG5lZWQgdG8gY2xlYW51cCBsb2cgb3V0cHV0IHN0cmVhbQotICBib29sIExvZ091dHB1dENsZWFudXA7CisgIHN0ZDo6b3N0cmVhbSogTG9nT3V0cHV0ID0gbnVsbHB0cjsKKyAgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6b3N0cmVhbT4gTG9nT3V0cHV0U3RyZWFtOwogfTsKIAogY2xhc3MgY21DUGFja0xvZ1dyaXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1BhY2svY21DUGFja05TSVNHZW5lcmF0b3IuY3h4IGIvU291cmNlL0NQYWNrL2NtQ1BhY2tOU0lTR2VuZXJhdG9yLmN4eAppbmRleCAzNjNmNTM2Li42YjMwNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1BhY2svY21DUGFja05TSVNHZW5lcmF0b3IuY3h4CisrKyBiL1NvdXJjZS9DUGFjay9jbUNQYWNrTlNJU0dlbmVyYXRvci5jeHgKQEAgLTY4LDcgKzY4LDcgQEAKIAogICAgICAgLy8gVXNlIHRoZSBjdXN0b20gY29tcG9uZW50IGluc3RhbGwgZGlyZWN0b3J5IGlmIHdlIGhhdmUgb25lCiAgICAgICBpZiAocG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbXBvbmVudE5hbWUgPSBmaWxlTi5zdWJzdHIoMCwgcG9zKTsKKyAgICAgICAgYXV0byBjb21wb25lbnROYW1lID0gY206OnN0cmluZ192aWV3KGZpbGVOKS5zdWJzdHIoMCwgcG9zKTsKICAgICAgICAgb3V0cHV0RGlyID0gQ3VzdG9tQ29tcG9uZW50SW5zdGFsbERpcmVjdG9yeShjb21wb25lbnROYW1lKTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIG91dHB1dERpciA9IEN1c3RvbUNvbXBvbmVudEluc3RhbGxEaXJlY3RvcnkoZmlsZU4pOwpAQCAtMTAzLDcgKzEwMyw3IEBACiAgICAgICAgIGNvbXBvbmVudE5hbWUgPSBmaWxlTi5zdWJzdHIoMCwgc2xhc2gpOwogCiAgICAgICAgIC8vIFN0cmlwIG9mZiB0aGUgY29tcG9uZW50IHBhcnQgb2YgdGhlIHBhdGguCi0gICAgICAgIGZpbGVOID0gZmlsZU4uc3Vic3RyKHNsYXNoICsgMSk7CisgICAgICAgIGZpbGVOLmVyYXNlKDAsIHNsYXNoICsgMSk7CiAgICAgICB9CiAgICAgfQogICAgIHN0ZDo6cmVwbGFjZShmaWxlTi5iZWdpbigpLCBmaWxlTi5lbmQoKSwgJy8nLCAnXFwnKTsKQEAgLTY3Miw3ICs2NzIsNyBAQAogCiAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbXBvbmVudE91dHB1dERpciA9CiAgICAgQ3VzdG9tQ29tcG9uZW50SW5zdGFsbERpcmVjdG9yeShjb21wb25lbnQtPk5hbWUpOwotICBjb21wb25lbnRDb2RlICs9ICIgIFNldE91dFBhdGggXCIiICsgY29tcG9uZW50T3V0cHV0RGlyICsgIlwiXG4iOworICBjb21wb25lbnRDb2RlICs9IGNtU3RyQ2F0KCIgIFNldE91dFBhdGggXCIiLCBjb21wb25lbnRPdXRwdXREaXIsICJcIlxuIik7CiAKICAgLy8gQ3JlYXRlIHRoZSBhY3R1YWwgaW5zdGFsbGF0aW9uIGNvbW1hbmRzCiAgIGlmIChjb21wb25lbnQtPklzRG93bmxvYWRlZCkgewpAQCAtOTIxLDEyICs5MjEsMTEgQEAKIH0KIAogc3RkOjpzdHJpbmcgY21DUGFja05TSVNHZW5lcmF0b3I6OkN1c3RvbUNvbXBvbmVudEluc3RhbGxEaXJlY3RvcnkoCi0gIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb21wb25lbnROYW1lKQorICBjbTo6c3RyaW5nX3ZpZXcgY29tcG9uZW50TmFtZSkKIHsKLSAgY29uc3QgY2hhciogb3V0cHV0RGlyID0KLSAgICB0aGlzLT5HZXRPcHRpb24oIkNQQUNLX05TSVNfIiArIGNvbXBvbmVudE5hbWUgKyAiX0lOU1RBTExfRElSRUNUT1JZIik7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGNvbXBvbmVudE91dHB1dERpciA9IChvdXRwdXREaXIgPyBvdXRwdXREaXIgOiAiJElOU1RESVIiKTsKLSAgcmV0dXJuIGNvbXBvbmVudE91dHB1dERpcjsKKyAgY29uc3QgY2hhciogb3V0cHV0RGlyID0gdGhpcy0+R2V0T3B0aW9uKAorICAgIGNtU3RyQ2F0KCJDUEFDS19OU0lTXyIsIGNvbXBvbmVudE5hbWUsICJfSU5TVEFMTF9ESVJFQ1RPUlkiKSk7CisgIHJldHVybiBvdXRwdXREaXIgPyBvdXRwdXREaXIgOiAiJElOU1RESVIiOwogfQogCiBzdGQ6OnN0cmluZyBjbUNQYWNrTlNJU0dlbmVyYXRvcjo6VHJhbnNsYXRlTmV3bGluZXMoc3RkOjpzdHJpbmcgc3RyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0NQYWNrL2NtQ1BhY2tOU0lTR2VuZXJhdG9yLmggYi9Tb3VyY2UvQ1BhY2svY21DUGFja05TSVNHZW5lcmF0b3IuaAppbmRleCAwYWYzN2FmLi44OGNiYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1BhY2svY21DUGFja05TSVNHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvQ1BhY2svY21DUGFja05TSVNHZW5lcmF0b3IuaApAQCAtMTAsNiArMTAsOCBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlIDxjbS9zdHJpbmdfdmlldz4KKwogI2luY2x1ZGUgImNtQ1BhY2tHZW5lcmF0b3IuaCIKIAogY2xhc3MgY21DUGFja0NvbXBvbmVudDsKQEAgLTc1LDggKzc3LDcgQEAKIAogICAvLy8gUmV0dXJucyB0aGUgY3VzdG9tIGluc3RhbGwgZGlyZWN0b3J5IGlmIGF2YWlsYWJsZSBmb3IgdGhlIHNwZWNpZmllZAogICAvLy8gY29tcG9uZW50LCBvdGhlcndpc2UgJElOU1RESVIgaXMgcmV0dXJuZWQuCi0gIHN0ZDo6c3RyaW5nIEN1c3RvbUNvbXBvbmVudEluc3RhbGxEaXJlY3RvcnkoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbXBvbmVudE5hbWUpOworICBzdGQ6OnN0cmluZyBDdXN0b21Db21wb25lbnRJbnN0YWxsRGlyZWN0b3J5KGNtOjpzdHJpbmdfdmlldyBjb21wb25lbnROYW1lKTsKIAogICAvLy8gVHJhbnNsYXRpb25zIGFueSBuZXdsaW5lcyBmb3VuZCBpbiB0aGUgc3RyaW5nIGludG8gXFxyXFxuLCBzbyB0aGF0IHRoZQogICAvLy8gcmVzdWx0aW5nIHN0cmluZyBjYW4gYmUgdXNlZCB3aXRoaW4gTlNJUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9DUGFjay9jcGFjay5jeHggYi9Tb3VyY2UvQ1BhY2svY3BhY2suY3h4CmluZGV4IGRjMzE2MjMuLjJlNWJkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DUGFjay9jcGFjay5jeHgKKysrIGIvU291cmNlL0NQYWNrL2NwYWNrLmN4eApAQCAtODUsNyArODUsNyBAQAogICAgIHJldHVybiAwOwogICB9CiAgIHN0ZDo6c3RyaW5nIGtleSA9IHZhbHVlLnN1YnN0cigwLCBwb3MpOwotICB2YWx1ZSA9IHZhbHVlLnN1YnN0cihwb3MgKyAxKTsKKyAgdmFsdWUuZXJhc2UoMCwgcG9zICsgMSk7CiAgIGRlZi0+TWFwW2tleV0gPSB2YWx1ZTsKICAgY21DUGFja19Mb2coZGVmLT5Mb2csIGNtQ1BhY2tMb2c6OkxPR19ERUJVRywKICAgICAgICAgICAgICAgIlNldCBDUGFjayB2YXJpYWJsZTogIiA8PCBrZXkgPDwgIiB0byBcIiIgPDwgdmFsdWUgPDwgIlwiIgpkaWZmIC0tZ2l0IGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RCdWlsZEFuZFRlc3RIYW5kbGVyLmN4eCBiL1NvdXJjZS9DVGVzdC9jbUNUZXN0QnVpbGRBbmRUZXN0SGFuZGxlci5jeHgKaW5kZXggNWUyOTM4Ni4uZGI0MjZiMiAxMDA2NDQKLS0tIGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RCdWlsZEFuZFRlc3RIYW5kbGVyLmN4eAorKysgYi9Tb3VyY2UvQ1Rlc3QvY21DVGVzdEJ1aWxkQW5kVGVzdEhhbmRsZXIuY3h4CkBAIC0zNzksNyArMzc5LDcgQEAKICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBhbGxBcmdzKQogewogICAvLyAtLWJ1aWxkLWFuZC10ZXN0IG9wdGlvbnMKLSAgaWYgKGN1cnJlbnRBcmcuZmluZCgiLS1idWlsZC1hbmQtdGVzdCIsIDApID09IDAgJiYKKyAgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChjdXJyZW50QXJnLCAiLS1idWlsZC1hbmQtdGVzdCIpICYmCiAgICAgICBpZHggPCBhbGxBcmdzLnNpemUoKSAtIDEpIHsKICAgICBpZiAoaWR4ICsgMiA8IGFsbEFyZ3Muc2l6ZSgpKSB7CiAgICAgICBpZHgrKzsKQEAgLTM5NywyNSArMzk3LDI5IEBACiAgICAgICByZXR1cm4gMDsKICAgICB9CiAgIH0KLSAgaWYgKGN1cnJlbnRBcmcuZmluZCgiLS1idWlsZC10YXJnZXQiLCAwKSA9PSAwICYmIGlkeCA8IGFsbEFyZ3Muc2l6ZSgpIC0gMSkgeworICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGN1cnJlbnRBcmcsICItLWJ1aWxkLXRhcmdldCIpICYmCisgICAgICBpZHggPCBhbGxBcmdzLnNpemUoKSAtIDEpIHsKICAgICBpZHgrKzsKICAgICB0aGlzLT5CdWlsZFRhcmdldHMucHVzaF9iYWNrKGFsbEFyZ3NbaWR4XSk7CiAgIH0KLSAgaWYgKGN1cnJlbnRBcmcuZmluZCgiLS1idWlsZC1ub2NtYWtlIiwgMCkgPT0gMCkgeworICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGN1cnJlbnRBcmcsICItLWJ1aWxkLW5vY21ha2UiKSkgewogICAgIHRoaXMtPkJ1aWxkTm9DTWFrZSA9IHRydWU7CiAgIH0KLSAgaWYgKGN1cnJlbnRBcmcuZmluZCgiLS1idWlsZC1ydW4tZGlyIiwgMCkgPT0gMCAmJiBpZHggPCBhbGxBcmdzLnNpemUoKSAtIDEpIHsKKyAgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChjdXJyZW50QXJnLCAiLS1idWlsZC1ydW4tZGlyIikgJiYKKyAgICAgIGlkeCA8IGFsbEFyZ3Muc2l6ZSgpIC0gMSkgewogICAgIGlkeCsrOwogICAgIHRoaXMtPkJ1aWxkUnVuRGlyID0gYWxsQXJnc1tpZHhdOwogICB9Ci0gIGlmIChjdXJyZW50QXJnLmZpbmQoIi0tYnVpbGQtdHdvLWNvbmZpZyIsIDApID09IDApIHsKKyAgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChjdXJyZW50QXJnLCAiLS1idWlsZC10d28tY29uZmlnIikpIHsKICAgICB0aGlzLT5CdWlsZFR3b0NvbmZpZyA9IHRydWU7CiAgIH0KLSAgaWYgKGN1cnJlbnRBcmcuZmluZCgiLS1idWlsZC1leGUtZGlyIiwgMCkgPT0gMCAmJiBpZHggPCBhbGxBcmdzLnNpemUoKSAtIDEpIHsKKyAgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChjdXJyZW50QXJnLCAiLS1idWlsZC1leGUtZGlyIikgJiYKKyAgICAgIGlkeCA8IGFsbEFyZ3Muc2l6ZSgpIC0gMSkgewogICAgIGlkeCsrOwogICAgIHRoaXMtPkV4ZWN1dGFibGVEaXJlY3RvcnkgPSBhbGxBcmdzW2lkeF07CiAgIH0KLSAgaWYgKGN1cnJlbnRBcmcuZmluZCgiLS10ZXN0LXRpbWVvdXQiLCAwKSA9PSAwICYmIGlkeCA8IGFsbEFyZ3Muc2l6ZSgpIC0gMSkgeworICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGN1cnJlbnRBcmcsICItLXRlc3QtdGltZW91dCIpICYmCisgICAgICBpZHggPCBhbGxBcmdzLnNpemUoKSAtIDEpIHsKICAgICBpZHgrKzsKICAgICB0aGlzLT5UaW1lb3V0ID0gY21EdXJhdGlvbihhdG9mKGFsbEFyZ3NbaWR4XS5jX3N0cigpKSk7CiAgIH0KQEAgLTQzMSwzMSArNDM1LDMzIEBACiAgICAgaWR4Kys7CiAgICAgdGhpcy0+QnVpbGRHZW5lcmF0b3JUb29sc2V0ID0gYWxsQXJnc1tpZHhdOwogICB9Ci0gIGlmIChjdXJyZW50QXJnLmZpbmQoIi0tYnVpbGQtcHJvamVjdCIsIDApID09IDAgJiYgaWR4IDwgYWxsQXJncy5zaXplKCkgLSAxKSB7CisgIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoY3VycmVudEFyZywgIi0tYnVpbGQtcHJvamVjdCIpICYmCisgICAgICBpZHggPCBhbGxBcmdzLnNpemUoKSAtIDEpIHsKICAgICBpZHgrKzsKICAgICB0aGlzLT5CdWlsZFByb2plY3QgPSBhbGxBcmdzW2lkeF07CiAgIH0KLSAgaWYgKGN1cnJlbnRBcmcuZmluZCgiLS1idWlsZC1tYWtlcHJvZ3JhbSIsIDApID09IDAgJiYKKyAgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChjdXJyZW50QXJnLCAiLS1idWlsZC1tYWtlcHJvZ3JhbSIpICYmCiAgICAgICBpZHggPCBhbGxBcmdzLnNpemUoKSAtIDEpIHsKICAgICBpZHgrKzsKICAgICB0aGlzLT5CdWlsZE1ha2VQcm9ncmFtID0gYWxsQXJnc1tpZHhdOwogICB9Ci0gIGlmIChjdXJyZW50QXJnLmZpbmQoIi0tYnVpbGQtY29uZmlnLXNhbXBsZSIsIDApID09IDAgJiYKKyAgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChjdXJyZW50QXJnLCAiLS1idWlsZC1jb25maWctc2FtcGxlIikgJiYKICAgICAgIGlkeCA8IGFsbEFyZ3Muc2l6ZSgpIC0gMSkgewogICAgIGlkeCsrOwogICAgIHRoaXMtPkNvbmZpZ1NhbXBsZSA9IGFsbEFyZ3NbaWR4XTsKICAgfQotICBpZiAoY3VycmVudEFyZy5maW5kKCItLWJ1aWxkLW5vY2xlYW4iLCAwKSA9PSAwKSB7CisgIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoY3VycmVudEFyZywgIi0tYnVpbGQtbm9jbGVhbiIpKSB7CiAgICAgdGhpcy0+QnVpbGROb0NsZWFuID0gdHJ1ZTsKICAgfQotICBpZiAoY3VycmVudEFyZy5maW5kKCItLWJ1aWxkLW9wdGlvbnMiLCAwKSA9PSAwKSB7CisgIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoY3VycmVudEFyZywgIi0tYnVpbGQtb3B0aW9ucyIpKSB7CiAgICAgd2hpbGUgKGlkeCArIDEgPCBhbGxBcmdzLnNpemUoKSAmJiBhbGxBcmdzW2lkeCArIDFdICE9ICItLWJ1aWxkLXRhcmdldCIgJiYKICAgICAgICAgICAgYWxsQXJnc1tpZHggKyAxXSAhPSAiLS10ZXN0LWNvbW1hbmQiKSB7CiAgICAgICArK2lkeDsKICAgICAgIHRoaXMtPkJ1aWxkT3B0aW9ucy5wdXNoX2JhY2soYWxsQXJnc1tpZHhdKTsKICAgICB9CiAgIH0KLSAgaWYgKGN1cnJlbnRBcmcuZmluZCgiLS10ZXN0LWNvbW1hbmQiLCAwKSA9PSAwICYmIGlkeCA8IGFsbEFyZ3Muc2l6ZSgpIC0gMSkgeworICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGN1cnJlbnRBcmcsICItLXRlc3QtY29tbWFuZCIpICYmCisgICAgICBpZHggPCBhbGxBcmdzLnNpemUoKSAtIDEpIHsKICAgICArK2lkeDsKICAgICB0aGlzLT5UZXN0Q29tbWFuZCA9IGFsbEFyZ3NbaWR4XTsKICAgICB3aGlsZSAoaWR4ICsgMSA8IGFsbEFyZ3Muc2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1Rlc3QvY21DVGVzdEJ1aWxkSGFuZGxlci5jeHggYi9Tb3VyY2UvQ1Rlc3QvY21DVGVzdEJ1aWxkSGFuZGxlci5jeHgKaW5kZXggMDNhM2ZkMy4uOTBjNWIyYSAxMDA2NDQKLS0tIGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RCdWlsZEhhbmRsZXIuY3h4CisrKyBiL1NvdXJjZS9DVGVzdC9jbUNUZXN0QnVpbGRIYW5kbGVyLmN4eApAQCAtMzg2LDI0ICszODYsMjAgQEAKICAgaWYgKHRoaXMtPkNUZXN0LT5HZXRDVGVzdENvbmZpZ3VyYXRpb24oIlNvdXJjZURpcmVjdG9yeSIpLnNpemUoKSA+IDIwKSB7CiAgICAgc3RkOjpzdHJpbmcgc3JjZGlyID0KICAgICAgIHRoaXMtPkNUZXN0LT5HZXRDVGVzdENvbmZpZ3VyYXRpb24oIlNvdXJjZURpcmVjdG9yeSIpICsgIi8iOwotICAgIGZvciAoY2MgPSBzcmNkaXIuc2l6ZSgpIC0gMjsgY2MgPiAwOyBjYy0tKSB7Ci0gICAgICBpZiAoc3JjZGlyW2NjXSA9PSAnLycpIHsKLSAgICAgICAgc3JjZGlyID0gc3JjZGlyLnN1YnN0cigwLCBjYyArIDEpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KKyAgICBjYyA9IHNyY2Rpci5yZmluZCgnLycsIHNyY2Rpci5zaXplKCkgLSAyKTsKKyAgICBpZiAoY2MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIHNyY2Rpci5yZXNpemUoY2MgKyAxKTsKKyAgICAgIHRoaXMtPlNpbXBsaWZ5U291cmNlRGlyID0gc3RkOjptb3ZlKHNyY2Rpcik7CiAgICAgfQotICAgIHRoaXMtPlNpbXBsaWZ5U291cmNlRGlyID0gc3JjZGlyOwogICB9CiAgIGlmICh0aGlzLT5DVGVzdC0+R2V0Q1Rlc3RDb25maWd1cmF0aW9uKCJCdWlsZERpcmVjdG9yeSIpLnNpemUoKSA+IDIwKSB7CiAgICAgc3RkOjpzdHJpbmcgYmluZGlyID0KICAgICAgIHRoaXMtPkNUZXN0LT5HZXRDVGVzdENvbmZpZ3VyYXRpb24oIkJ1aWxkRGlyZWN0b3J5IikgKyAiLyI7Ci0gICAgZm9yIChjYyA9IGJpbmRpci5zaXplKCkgLSAyOyBjYyA+IDA7IGNjLS0pIHsKLSAgICAgIGlmIChiaW5kaXJbY2NdID09ICcvJykgewotICAgICAgICBiaW5kaXIgPSBiaW5kaXIuc3Vic3RyKDAsIGNjICsgMSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQorICAgIGNjID0gYmluZGlyLnJmaW5kKCcvJywgYmluZGlyLnNpemUoKSAtIDIpOworICAgIGlmIChjYyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgYmluZGlyLnJlc2l6ZShjYyArIDEpOworICAgICAgdGhpcy0+U2ltcGxpZnlCdWlsZERpciA9IHN0ZDo6bW92ZShiaW5kaXIpOwogICAgIH0KLSAgICB0aGlzLT5TaW1wbGlmeUJ1aWxkRGlyID0gYmluZGlyOwogICB9CiAKICAgLy8gT2ssIGxldCdzIGRvIHRoZSBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RDb3ZlcmFnZUhhbmRsZXIuY3h4IGIvU291cmNlL0NUZXN0L2NtQ1Rlc3RDb3ZlcmFnZUhhbmRsZXIuY3h4CmluZGV4IDJjOGYxMTkuLmRhYTEwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DVGVzdC9jbUNUZXN0Q292ZXJhZ2VIYW5kbGVyLmN4eAorKysgYi9Tb3VyY2UvQ1Rlc3QvY21DVGVzdENvdmVyYWdlSGFuZGxlci5jeHgKQEAgLTY4MCw4ICs2ODAsOSBAQAogLy8KICNpZmRlZiBfV0lOMzIKICMgIGRlZmluZSBmbmMocykgY21TeXN0ZW1Ub29sczo6TG93ZXJDYXNlKHMpCisjICBkZWZpbmUgZm5jX3ByZWZpeChzLCB0KSBmbmMocy5zdWJzdHIoMCwgdC5zaXplKCkpKSA9PSBmbmModCkKICNlbHNlCi0jICBkZWZpbmUgZm5jKHMpIHMKKyMgIGRlZmluZSBmbmNfcHJlZml4KHMsIHQpIGNtSGFzUHJlZml4KHMsIHQpCiAjZW5kaWYKIAogYm9vbCBJc0ZpbGVJbkRpcihjb25zdCBzdGQ6OnN0cmluZyYgaW5maWxlLCBjb25zdCBzdGQ6OnN0cmluZyYgaW5kaXIpCkBAIC02ODksOCArNjkwLDggQEAKICAgc3RkOjpzdHJpbmcgZmlsZSA9IGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgoaW5maWxlKTsKICAgc3RkOjpzdHJpbmcgZGlyID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChpbmRpcik7CiAKLSAgcmV0dXJuIGZpbGUuc2l6ZSgpID4gZGlyLnNpemUoKSAmJgotICAgIGZuYyhmaWxlLnN1YnN0cigwLCBkaXIuc2l6ZSgpKSkgPT0gZm5jKGRpcikgJiYgZmlsZVtkaXIuc2l6ZSgpXSA9PSAnLyc7CisgIHJldHVybiBmaWxlLnNpemUoKSA+IGRpci5zaXplKCkgJiYgZm5jX3ByZWZpeChmaWxlLCBkaXIpICYmCisgICAgZmlsZVtkaXIuc2l6ZSgpXSA9PSAnLyc7CiB9CiAKIGludCBjbUNUZXN0Q292ZXJhZ2VIYW5kbGVyOjpIYW5kbGVQSFBDb3ZlcmFnZSgKQEAgLTE3MDksMjkgKzE3MTAsMjYgQEAKIAogICAgICAgICAvLyBSZWFkIHRoZSBjb3ZlcmFnZSBjb3VudCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIFRyYWNlLnB5IG91dHB1dAogICAgICAgICAvLyBsaW5lCi0gICAgICAgIHN0ZDo6c3RyaW5nIHByZWZpeCA9IG5sLnN1YnN0cigwLCA2KTsKLSAgICAgICAgaWYgKHByZWZpeFs1XSAhPSAnICcgJiYgcHJlZml4WzVdICE9ICc6JykgewotICAgICAgICAgIC8vIFRoaXMgaXMgYSBoYWNrLiBXZSBzaG91bGQgcmVhbGx5IGRvIHNvbWV0aGluZyBtb3JlIGVsYWJvcmF0ZQotICAgICAgICAgIHByZWZpeCA9IG5sLnN1YnN0cigwLCA3KTsKLSAgICAgICAgICBpZiAocHJlZml4WzZdICE9ICcgJyAmJiBwcmVmaXhbNl0gIT0gJzonKSB7Ci0gICAgICAgICAgICBwcmVmaXggPSBubC5zdWJzdHIoMCwgOCk7Ci0gICAgICAgICAgICBpZiAocHJlZml4WzddICE9ICcgJyAmJiBwcmVmaXhbN10gIT0gJzonKSB7Ci0gICAgICAgICAgICAgIGNtQ1Rlc3RMb2codGhpcy0+Q1Rlc3QsIEVSUk9SX01FU1NBR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkN1cnJlbnRseSB0aGUgbGltaXQgaXMgbWF4aW11bSBjb3ZlcmFnZSBvZiA5OTk5OTkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGwpOwotICAgICAgICAgICAgfQorICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvczsKKyAgICAgICAgaW50IGNvdiA9IDA7CisgICAgICAgIC8vIFRoaXMgaXMgYSBoYWNrLiBXZSBzaG91bGQgcmVhbGx5IGRvIHNvbWV0aGluZyBtb3JlIGVsYWJvcmF0ZQorICAgICAgICBmb3IgKHBvcyA9IDU7IHBvcyA8IDg7IHBvcysrKSB7CisgICAgICAgICAgaWYgKG5sW3Bvc10gPT0gJyAnKSB7CisgICAgICAgICAgICAvLyBUaGlzIGxpbmUgZG9lcyBub3QgaGF2ZSAnOicgc28gbm8gY292ZXJhZ2UgaGVyZS4gVGhhdCBzYWlkLAorICAgICAgICAgICAgLy8gVHJhY2UucHkgZG9lcyBub3QgaGFuZGxlIG5vdCBjb3ZlcmVkIGxpbmVzIHZlcnN1cyBjb21tZW50cyBldGMuCisgICAgICAgICAgICAvLyBTbywgdGhpcyB3aWxsIGJlIHNldCB0byAwLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChubFtwb3NdID09ICc6JykgeworICAgICAgICAgICAgY292ID0gYXRvaShubC5zdWJzdHIoMCwgcG9zIC0gMSkuY19zdHIoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaW50IGNvdiA9IGF0b2kocHJlZml4LmNfc3RyKCkpOwotICAgICAgICBpZiAocHJlZml4W3ByZWZpeC5zaXplKCkgLSAxXSAhPSAnOicpIHsKLSAgICAgICAgICAvLyBUaGlzIGxpbmUgZG9lcyBub3QgaGF2ZSAnOicgc28gbm8gY292ZXJhZ2UgaGVyZS4gVGhhdCBzYWlkLAotICAgICAgICAgIC8vIFRyYWNlLnB5IGRvZXMgbm90IGhhbmRsZSBub3QgY292ZXJlZCBsaW5lcyB2ZXJzdXMgY29tbWVudHMgZXRjLgotICAgICAgICAgIC8vIFNvLCB0aGlzIHdpbGwgYmUgc2V0IHRvIDAuCi0gICAgICAgICAgY292ID0gMDsKKyAgICAgICAgaWYgKHBvcyA9PSA4KSB7CisgICAgICAgICAgY21DVGVzdExvZyh0aGlzLT5DVGVzdCwgRVJST1JfTUVTU0FHRSwKKyAgICAgICAgICAgICAgICAgICAgICJDdXJyZW50bHkgdGhlIGxpbWl0IGlzIG1heGltdW0gY292ZXJhZ2Ugb2YgOTk5OTk5IgorICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGwpOwogICAgICAgICB9Ci0gICAgICAgIGNtQ1Rlc3RPcHRpb25hbExvZygKLSAgICAgICAgICB0aGlzLT5DVGVzdCwgREVCVUcsCi0gICAgICAgICAgIlByZWZpeDogIiA8PCBwcmVmaXggPDwgIiBjb3Y6ICIgPDwgY292IDw8IHN0ZDo6ZW5kbCwgdGhpcy0+UXVpZXQpOwogICAgICAgICAvLyBSZWFkIHRoZSBsaW5lIG51bWJlciBzdGFydGluZyBhdCB0aGUgMTB0aCBjaGFyYWN0ZXIgb2YgdGhlIGdjb3YKICAgICAgICAgLy8gb3V0cHV0IGxpbmUKICAgICAgICAgbG9uZyBsaW5lSWR4ID0gY250OwpkaWZmIC0tZ2l0IGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RHSVQuY3h4IGIvU291cmNlL0NUZXN0L2NtQ1Rlc3RHSVQuY3h4CmluZGV4IDNmM2MxMDcuLjU2OGIwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DVGVzdC9jbUNUZXN0R0lULmN4eAorKysgYi9Tb3VyY2UvQ1Rlc3QvY21DVGVzdEdJVC5jeHgKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8Y3RpbWU+CisjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJjbXN5cy9GU3RyZWFtLmh4eCIKQEAgLTE5Myw3ICsxOTQsOCBAQAogICAgICAgaWYgKGxpbmUuZmluZCgiXHRub3QtZm9yLW1lcmdlXHQiKSA9PSBzdGQ6OnN0cmluZzo6bnBvcykgewogICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IGxpbmUuZmluZCgnXHQnKTsKICAgICAgICAgaWYgKHBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAgICAgIHNoYTEgPSBsaW5lLnN1YnN0cigwLCBwb3MpOworICAgICAgICAgIHNoYTEgPSBzdGQ6Om1vdmUobGluZSk7CisgICAgICAgICAgc2hhMS5yZXNpemUocG9zKTsKICAgICAgICAgfQogICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9DVGVzdC9jbUNUZXN0TXVsdGlQcm9jZXNzSGFuZGxlci5jeHggYi9Tb3VyY2UvQ1Rlc3QvY21DVGVzdE11bHRpUHJvY2Vzc0hhbmRsZXIuY3h4CmluZGV4IDIxOTI4NDMuLjUwYzk2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DVGVzdC9jbUNUZXN0TXVsdGlQcm9jZXNzSGFuZGxlci5jeHgKKysrIGIvU291cmNlL0NUZXN0L2NtQ1Rlc3RNdWx0aVByb2Nlc3NIYW5kbGVyLmN4eApAQCAtMTIsMTMgKzEyLDEzIEBACiAjaW5jbHVkZSA8aW9tYW5pcD4KICNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHN0YWNrPgogI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlIDxjbS9tZW1vcnk+CiAjaW5jbHVkZSA8Y21leHQvYWxnb3JpdGhtPgogCiAjaW5jbHVkZSAiY21zeXMvRlN0cmVhbS5oeHgiCkBAIC0xNzIsNyArMTcyLDggQEAKICAgdGhpcy0+RXJhc2VUZXN0KHRlc3QpOwogICB0aGlzLT5SdW5uaW5nQ291bnQgKz0gR2V0UHJvY2Vzc29yc1VzZWQodGVzdCk7CiAKLSAgY21DVGVzdFJ1blRlc3QqIHRlc3RSdW4gPSBuZXcgY21DVGVzdFJ1blRlc3QoKnRoaXMpOworICBhdXRvIHRlc3RSdW4gPSBjbTo6bWFrZV91bmlxdWU8Y21DVGVzdFJ1blRlc3Q+KCp0aGlzKTsKKwogICBpZiAodGhpcy0+UmVwZWF0TW9kZSAhPSBjbUNUZXN0OjpSZXBlYXQ6Ok5ldmVyKSB7CiAgICAgdGVzdFJ1bi0+U2V0UmVwZWF0TW9kZSh0aGlzLT5SZXBlYXRNb2RlKTsKICAgICB0ZXN0UnVuLT5TZXROdW1iZXJPZlJ1bnModGhpcy0+UmVwZWF0Q291bnQpOwpAQCAtMjI5LDI4ICsyMzAsMjUgQEAKICAgICAgIGUgPDwgIlxuIjsKICAgICB9CiAgICAgZSA8PCAiUmVzb3VyY2Ugc3BlYyBmaWxlOlxuXG4gICIgPDwgdGhpcy0+VGVzdEhhbmRsZXItPlJlc291cmNlU3BlY0ZpbGU7Ci0gICAgdGVzdFJ1bi0+U3RhcnRGYWlsdXJlKGUuc3RyKCksICJJbnN1ZmZpY2llbnQgcmVzb3VyY2VzIik7Ci0gICAgdGhpcy0+RmluaXNoVGVzdFByb2Nlc3ModGVzdFJ1biwgZmFsc2UpOworICAgIGNtQ1Rlc3RSdW5UZXN0OjpTdGFydEZhaWx1cmUoc3RkOjptb3ZlKHRlc3RSdW4pLCBlLnN0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc3VmZmljaWVudCByZXNvdXJjZXMiKTsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAogICBjbVdvcmtpbmdEaXJlY3Rvcnkgd29ya2Rpcih0aGlzLT5Qcm9wZXJ0aWVzW3Rlc3RdLT5EaXJlY3RvcnkpOwogICBpZiAod29ya2Rpci5GYWlsZWQoKSkgewotICAgIHRlc3RSdW4tPlN0YXJ0RmFpbHVyZSgiRmFpbGVkIHRvIGNoYW5nZSB3b3JraW5nIGRpcmVjdG9yeSB0byAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5Qcm9wZXJ0aWVzW3Rlc3RdLT5EaXJlY3RvcnkgKyAiIDogIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlcnJvcih3b3JrZGlyLkdldExhc3RSZXN1bHQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5Iik7Ci0gIH0gZWxzZSB7Ci0gICAgaWYgKHRlc3RSdW4tPlN0YXJ0VGVzdCh0aGlzLT5Db21wbGV0ZWQsIHRoaXMtPlRvdGFsKSkgewotICAgICAgLy8gT3duZXJzaGlwIG9mICd0ZXN0UnVuJyBoYXMgbW92ZWQgdG8gYW5vdGhlciBzdHJ1Y3R1cmUuCi0gICAgICAvLyBXaGVuIHRoZSB0ZXN0IGZpbmlzaGVzLCBGaW5pc2hUZXN0UHJvY2VzcyB3aWxsIGJlIGNhbGxlZC4KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBjbUNUZXN0UnVuVGVzdDo6U3RhcnRGYWlsdXJlKHN0ZDo6bW92ZSh0ZXN0UnVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5IHRvICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5Qcm9wZXJ0aWVzW3Rlc3RdLT5EaXJlY3RvcnkgKyAiIDogIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZXJyb3Iod29ya2Rpci5HZXRMYXN0UmVzdWx0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjaGFuZ2Ugd29ya2luZyBkaXJlY3RvcnkiKTsKKyAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAotICAvLyBQYXNzIG93bmVyc2hpcCBvZiAndGVzdFJ1bicuCi0gIHRoaXMtPkZpbmlzaFRlc3RQcm9jZXNzKHRlc3RSdW4sIGZhbHNlKTsKLSAgcmV0dXJuIGZhbHNlOworICAvLyBPd25lcnNoaXAgb2YgJ3Rlc3RSdW4nIGhhcyBtb3ZlZCB0byBhbm90aGVyIHN0cnVjdHVyZS4KKyAgLy8gV2hlbiB0aGUgdGVzdCBmaW5pc2hlcywgRmluaXNoVGVzdFByb2Nlc3Mgd2lsbCBiZSBjYWxsZWQuCisgIHJldHVybiBjbUNUZXN0UnVuVGVzdDo6U3RhcnRUZXN0KHN0ZDo6bW92ZSh0ZXN0UnVuKSwgdGhpcy0+Q29tcGxldGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5Ub3RhbCk7CiB9CiAKIGJvb2wgY21DVGVzdE11bHRpUHJvY2Vzc0hhbmRsZXI6OkFsbG9jYXRlUmVzb3VyY2VzKGludCBpbmRleCkKQEAgLTU0MCw3ICs1MzgsOCBAQAogICAgIGlmICh0aGlzLT5TZXJpYWxUZXN0UnVubmluZykgewogICAgICAgYnJlYWs7CiAgICAgfQotICAgIC8vIFdlIGNhbiBvbmx5IHN0YXJ0IGEgUlVOX1NFUklBTCB0ZXN0IGlmIG5vIG90aGVyIHRlc3RzIGFyZSBhbHNvIHJ1bm5pbmcuCisgICAgLy8gV2UgY2FuIG9ubHkgc3RhcnQgYSBSVU5fU0VSSUFMIHRlc3QgaWYgbm8gb3RoZXIgdGVzdHMgYXJlIGFsc28KKyAgICAvLyBydW5uaW5nLgogICAgIGlmICh0aGlzLT5Qcm9wZXJ0aWVzW3Rlc3RdLT5SdW5TZXJpYWwgJiYgdGhpcy0+UnVubmluZ0NvdW50ID4gMCkgewogICAgICAgY29udGludWU7CiAgICAgfQpAQCAtNjE4LDggKzYxNyw4IEBACiAgIHNlbGYtPlN0YXJ0TmV4dFRlc3RzKCk7CiB9CiAKLXZvaWQgY21DVGVzdE11bHRpUHJvY2Vzc0hhbmRsZXI6OkZpbmlzaFRlc3RQcm9jZXNzKGNtQ1Rlc3RSdW5UZXN0KiBydW5uZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHN0YXJ0ZWQpCit2b2lkIGNtQ1Rlc3RNdWx0aVByb2Nlc3NIYW5kbGVyOjpGaW5pc2hUZXN0UHJvY2VzcygKKyAgc3RkOjp1bmlxdWVfcHRyPGNtQ1Rlc3RSdW5UZXN0PiBydW5uZXIsIGJvb2wgc3RhcnRlZCkKIHsKICAgdGhpcy0+Q29tcGxldGVkKys7CiAKQEAgLTYzMSw3ICs2MzAsOCBAQAogICAgIHRoaXMtPlNldFN0b3BUaW1lUGFzc2VkKCk7CiAgIH0KICAgaWYgKHN0YXJ0ZWQpIHsKLSAgICBpZiAoIXRoaXMtPlN0b3BUaW1lUGFzc2VkICYmIHJ1bm5lci0+U3RhcnRBZ2Fpbih0aGlzLT5Db21wbGV0ZWQpKSB7CisgICAgaWYgKCF0aGlzLT5TdG9wVGltZVBhc3NlZCAmJgorICAgICAgICBjbUNUZXN0UnVuVGVzdDo6U3RhcnRBZ2FpbihzdGQ6Om1vdmUocnVubmVyKSwgdGhpcy0+Q29tcGxldGVkKSkgewogICAgICAgdGhpcy0+Q29tcGxldGVkLS07IC8vIHJlbW92ZSB0aGUgY29tcGxldGVkIHRlc3QgYmVjYXVzZSBydW4gYWdhaW4KICAgICAgIHJldHVybjsKICAgICB9CkBAIC02NTksNyArNjU5LDcgQEAKICAgfQogICBwcm9wZXJ0aWVzLT5BZmZpbml0eS5jbGVhcigpOwogCi0gIGRlbGV0ZSBydW5uZXI7CisgIHJ1bm5lci5yZXNldCgpOwogICBpZiAoc3RhcnRlZCkgewogICAgIHRoaXMtPlN0YXJ0TmV4dFRlc3RzKCk7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9DVGVzdC9jbUNUZXN0TXVsdGlQcm9jZXNzSGFuZGxlci5oIGIvU291cmNlL0NUZXN0L2NtQ1Rlc3RNdWx0aVByb2Nlc3NIYW5kbGVyLmgKaW5kZXggNWI0MjlkNC4uYzM2ODZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RNdWx0aVByb2Nlc3NIYW5kbGVyLmgKKysrIGIvU291cmNlL0NUZXN0L2NtQ1Rlc3RNdWx0aVByb2Nlc3NIYW5kbGVyLmgKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSAiY21Db25maWd1cmUuaCIgLy8gSVdZVSBwcmFnbWE6IGtlZXAKIAogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CkBAIC0xMjQsNyArMTI1LDcgQEAKICAgLy8gUmVtb3ZlcyB0aGUgY2hlY2twb2ludCBmaWxlCiAgIHZvaWQgTWFya0ZpbmlzaGVkKCk7CiAgIHZvaWQgRXJhc2VUZXN0KGludCBpbmRleCk7Ci0gIHZvaWQgRmluaXNoVGVzdFByb2Nlc3MoY21DVGVzdFJ1blRlc3QqIHJ1bm5lciwgYm9vbCBzdGFydGVkKTsKKyAgdm9pZCBGaW5pc2hUZXN0UHJvY2VzcyhzdGQ6OnVuaXF1ZV9wdHI8Y21DVGVzdFJ1blRlc3Q+IHJ1bm5lciwgYm9vbCBzdGFydGVkKTsKIAogICBzdGF0aWMgdm9pZCBPblRlc3RMb2FkUmV0cnlDQih1dl90aW1lcl90KiB0aW1lcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9DVGVzdC9jbUNUZXN0UnVuVGVzdC5jeHggYi9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFJ1blRlc3QuY3h4CmluZGV4IGVjNTQ5NjAuLjdkMGY2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DVGVzdC9jbUNUZXN0UnVuVGVzdC5jeHgKKysrIGIvU291cmNlL0NUZXN0L2NtQ1Rlc3RSdW5UZXN0LmN4eApAQCAtMzE0LDIzICszMTQsMjcgQEAKICAgcmV0dXJuIHBhc3NlZCB8fCBza2lwcGVkOwogfQogCi1ib29sIGNtQ1Rlc3RSdW5UZXN0OjpTdGFydEFnYWluKHNpemVfdCBjb21wbGV0ZWQpCitib29sIGNtQ1Rlc3RSdW5UZXN0OjpTdGFydEFnYWluKHN0ZDo6dW5pcXVlX3B0cjxjbUNUZXN0UnVuVGVzdD4gcnVubmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29tcGxldGVkKQogewotICBpZiAoIXRoaXMtPlJ1bkFnYWluKSB7CisgIGF1dG8qIHRlc3RSdW4gPSBydW5uZXIuZ2V0KCk7CisKKyAgaWYgKCF0ZXN0UnVuLT5SdW5BZ2FpbikgewogICAgIHJldHVybiBmYWxzZTsKICAgfQotICB0aGlzLT5SdW5BZ2FpbiA9IGZhbHNlOyAvLyByZXNldAorICB0ZXN0UnVuLT5SdW5BZ2FpbiA9IGZhbHNlOyAvLyByZXNldAorICB0ZXN0UnVuLT5UZXN0UHJvY2VzcyA9IGNtOjptYWtlX3VuaXF1ZTxjbVByb2Nlc3M+KHN0ZDo6bW92ZShydW5uZXIpKTsKICAgLy8gY2hhbmdlIHRvIHRlc3RzIGRpcmVjdG9yeQotICBjbVdvcmtpbmdEaXJlY3Rvcnkgd29ya2Rpcih0aGlzLT5UZXN0UHJvcGVydGllcy0+RGlyZWN0b3J5KTsKKyAgY21Xb3JraW5nRGlyZWN0b3J5IHdvcmtkaXIodGVzdFJ1bi0+VGVzdFByb3BlcnRpZXMtPkRpcmVjdG9yeSk7CiAgIGlmICh3b3JrZGlyLkZhaWxlZCgpKSB7Ci0gICAgdGhpcy0+U3RhcnRGYWlsdXJlKCJGYWlsZWQgdG8gY2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5IHRvICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPlRlc3RQcm9wZXJ0aWVzLT5EaXJlY3RvcnkgKyAiIDogIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlcnJvcih3b3JrZGlyLkdldExhc3RSZXN1bHQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5Iik7CisgICAgdGVzdFJ1bi0+U3RhcnRGYWlsdXJlKCJGYWlsZWQgdG8gY2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5IHRvICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW4tPlRlc3RQcm9wZXJ0aWVzLT5EaXJlY3RvcnkgKyAiIDogIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlcnJvcih3b3JrZGlyLkdldExhc3RSZXN1bHQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5Iik7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAotICB0aGlzLT5TdGFydFRlc3QoY29tcGxldGVkLCB0aGlzLT5Ub3RhbE51bWJlck9mVGVzdHMpOworICB0ZXN0UnVuLT5TdGFydFRlc3QoY29tcGxldGVkLCB0ZXN0UnVuLT5Ub3RhbE51bWJlck9mVGVzdHMpOwogICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzgyLDYgKzM4NiwxOCBAQAogICBoYW5kbGVyLT5Qb3N0UHJvY2Vzc1Rlc3QodGhpcy0+VGVzdFJlc3VsdCwgdGhpcy0+SW5kZXgpOwogfQogCit2b2lkIGNtQ1Rlc3RSdW5UZXN0OjpTdGFydEZhaWx1cmUoc3RkOjp1bmlxdWVfcHRyPGNtQ1Rlc3RSdW5UZXN0PiBydW5uZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QmIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCYgZGV0YWlsKQoreworICBhdXRvKiB0ZXN0UnVuID0gcnVubmVyLmdldCgpOworCisgIHRlc3RSdW4tPlRlc3RQcm9jZXNzID0gY206Om1ha2VfdW5pcXVlPGNtUHJvY2Vzcz4oc3RkOjptb3ZlKHJ1bm5lcikpOworICB0ZXN0UnVuLT5TdGFydEZhaWx1cmUob3V0cHV0LCBkZXRhaWwpOworCisgIHRlc3RSdW4tPkZpbmFsaXplVGVzdChmYWxzZSk7Cit9CisKIHZvaWQgY21DVGVzdFJ1blRlc3Q6OlN0YXJ0RmFpbHVyZShzdGQ6OnN0cmluZyBjb25zdCYgb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBkZXRhaWwpCiB7CkBAIC00MTMsNyArNDI5LDYgQEAKICAgdGhpcy0+VGVzdFJlc3VsdC5QYXRoID0gdGhpcy0+VGVzdFByb3BlcnRpZXMtPkRpcmVjdG9yeTsKICAgdGhpcy0+VGVzdFJlc3VsdC5PdXRwdXQgPSBvdXRwdXQ7CiAgIHRoaXMtPlRlc3RSZXN1bHQuRnVsbENvbW1hbmRMaW5lLmNsZWFyKCk7Ci0gIHRoaXMtPlRlc3RQcm9jZXNzID0gY206Om1ha2VfdW5pcXVlPGNtUHJvY2Vzcz4oKnRoaXMpOwogfQogCiBzdGQ6OnN0cmluZyBjbUNUZXN0UnVuVGVzdDo6R2V0VGVzdFByZWZpeChzaXplX3QgY29tcGxldGVkLCBzaXplX3QgdG90YWwpIGNvbnN0CkBAIC00MzcsNiArNDUyLDIxIEBACiAgIHJldHVybiBvdXRwdXRTdHJlYW0uc3RyKCk7CiB9CiAKK2Jvb2wgY21DVGVzdFJ1blRlc3Q6OlN0YXJ0VGVzdChzdGQ6OnVuaXF1ZV9wdHI8Y21DVGVzdFJ1blRlc3Q+IHJ1bm5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29tcGxldGVkLCBzaXplX3QgdG90YWwpCit7CisgIGF1dG8qIHRlc3RSdW4gPSBydW5uZXIuZ2V0KCk7CisKKyAgdGVzdFJ1bi0+VGVzdFByb2Nlc3MgPSBjbTo6bWFrZV91bmlxdWU8Y21Qcm9jZXNzPihzdGQ6Om1vdmUocnVubmVyKSk7CisKKyAgaWYgKCF0ZXN0UnVuLT5TdGFydFRlc3QoY29tcGxldGVkLCB0b3RhbCkpIHsKKyAgICB0ZXN0UnVuLT5GaW5hbGl6ZVRlc3QoZmFsc2UpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCiAvLyBTdGFydHMgdGhlIGV4ZWN1dGlvbiBvZiBhIHRlc3QuICBSZXR1cm5zIG9uY2UgaXQgaGFzIHN0YXJ0ZWQKIGJvb2wgY21DVGVzdFJ1blRlc3Q6OlN0YXJ0VGVzdChzaXplX3QgY29tcGxldGVkLCBzaXplX3QgdG90YWwpCiB7CkBAIC00NjgsNyArNDk4LDYgQEAKICAgaWYgKHRoaXMtPlRlc3RQcm9wZXJ0aWVzLT5EaXNhYmxlZCkgewogICAgIHRoaXMtPlRlc3RSZXN1bHQuQ29tcGxldGlvblN0YXR1cyA9ICJEaXNhYmxlZCI7CiAgICAgdGhpcy0+VGVzdFJlc3VsdC5TdGF0dXMgPSBjbUNUZXN0VGVzdEhhbmRsZXI6Ok5PVF9SVU47Ci0gICAgdGhpcy0+VGVzdFByb2Nlc3MgPSBjbTo6bWFrZV91bmlxdWU8Y21Qcm9jZXNzPigqdGhpcyk7CiAgICAgdGhpcy0+VGVzdFJlc3VsdC5PdXRwdXQgPSAiRGlzYWJsZWQiOwogICAgIHRoaXMtPlRlc3RSZXN1bHQuRnVsbENvbW1hbmRMaW5lLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDgyLDcgKzUxMSw2IEBACiAgIC8vIGl0cyBhcmd1bWVudHMgYXJlIGlycmVsZXZhbnQuIFRoaXMgbWF0dGVycyBmb3IgdGhlIGNhc2Ugd2hlcmUgYSBmaXh0dXJlCiAgIC8vIGRlcGVuZGVuY3kgbWlnaHQgYmUgY3JlYXRpbmcgdGhlIGV4ZWN1dGFibGUgd2Ugd2FudCB0byBydW4uCiAgIGlmICghdGhpcy0+RmFpbGVkRGVwZW5kZW5jaWVzLmVtcHR5KCkpIHsKLSAgICB0aGlzLT5UZXN0UHJvY2VzcyA9IGNtOjptYWtlX3VuaXF1ZTxjbVByb2Nlc3M+KCp0aGlzKTsKICAgICBzdGQ6OnN0cmluZyBtc2cgPSAiRmFpbGVkIHRlc3QgZGVwZW5kZW5jaWVzOiI7CiAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgZmFpbGVkRGVwIDogdGhpcy0+RmFpbGVkRGVwZW5kZW5jaWVzKSB7CiAgICAgICBtc2cgKz0gIiAiICsgZmFpbGVkRGVwOwpAQCAtNDk5LDcgKzUyNyw2IEBACiAgIHRoaXMtPkNvbXB1dGVBcmd1bWVudHMoKTsKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBhcmdzID0gdGhpcy0+VGVzdFByb3BlcnRpZXMtPkFyZ3M7CiAgIGlmIChhcmdzLnNpemUoKSA+PSAyICYmIGFyZ3NbMV0gPT0gIk5PVF9BVkFJTEFCTEUiKSB7Ci0gICAgdGhpcy0+VGVzdFByb2Nlc3MgPSBjbTo6bWFrZV91bmlxdWU8Y21Qcm9jZXNzPigqdGhpcyk7CiAgICAgc3RkOjpzdHJpbmcgbXNnOwogICAgIGlmICh0aGlzLT5DVGVzdC0+R2V0Q29uZmlnVHlwZSgpLmVtcHR5KCkpIHsKICAgICAgIG1zZyA9ICJUZXN0IG5vdCBhdmFpbGFibGUgd2l0aG91dCBjb25maWd1cmF0aW9uLiAgKE1pc3NpbmcgXCItQyAiCkBAIC01MjEsNyArNTQ4LDYgQEAKICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgZmlsZSA6IHRoaXMtPlRlc3RQcm9wZXJ0aWVzLT5SZXF1aXJlZEZpbGVzKSB7CiAgICAgaWYgKCFjbVN5c3RlbVRvb2xzOjpGaWxlRXhpc3RzKGZpbGUpKSB7CiAgICAgICAvLyBSZXF1aXJlZCBmaWxlIHdhcyBub3QgZm91bmQKLSAgICAgIHRoaXMtPlRlc3RQcm9jZXNzID0gY206Om1ha2VfdW5pcXVlPGNtUHJvY2Vzcz4oKnRoaXMpOwogICAgICAgKnRoaXMtPlRlc3RIYW5kbGVyLT5Mb2dGaWxlIDw8ICJVbmFibGUgdG8gZmluZCByZXF1aXJlZCBmaWxlOiAiIDw8IGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CiAgICAgICBjbUNUZXN0TG9nKHRoaXMtPkNUZXN0LCBFUlJPUl9NRVNTQUdFLApAQCAtNTM3LDcgKzU2Myw2IEBACiAgIGlmICh0aGlzLT5BY3R1YWxDb21tYW5kLmVtcHR5KCkpIHsKICAgICAvLyBpZiB0aGUgY29tbWFuZCB3YXMgbm90IGZvdW5kIGNyZWF0ZSBhIFRlc3RSZXN1bHQgb2JqZWN0CiAgICAgLy8gdGhhdCBoYXMgdGhhdCBpbmZvcm1hdGlvbgotICAgIHRoaXMtPlRlc3RQcm9jZXNzID0gY206Om1ha2VfdW5pcXVlPGNtUHJvY2Vzcz4oKnRoaXMpOwogICAgICp0aGlzLT5UZXN0SGFuZGxlci0+TG9nRmlsZSA8PCAiVW5hYmxlIHRvIGZpbmQgZXhlY3V0YWJsZTogIiA8PCBhcmdzWzFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKICAgICBjbUNUZXN0TG9nKHRoaXMtPkNUZXN0LCBFUlJPUl9NRVNTQUdFLApAQCAtNjQ5LDcgKzY3NCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIGVudmlyb25tZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c2l6ZV90PiogYWZmaW5pdHkpCiB7Ci0gIHRoaXMtPlRlc3RQcm9jZXNzID0gY206Om1ha2VfdW5pcXVlPGNtUHJvY2Vzcz4oKnRoaXMpOwogICB0aGlzLT5UZXN0UHJvY2Vzcy0+U2V0SWQodGhpcy0+SW5kZXgpOwogICB0aGlzLT5UZXN0UHJvY2Vzcy0+U2V0V29ya2luZ0RpcmVjdG9yeSh0aGlzLT5UZXN0UHJvcGVydGllcy0+RGlyZWN0b3J5KTsKICAgdGhpcy0+VGVzdFByb2Nlc3MtPlNldENvbW1hbmQodGhpcy0+QWN0dWFsQ29tbWFuZCk7CkBAIC04MTYsNyArODQwLDggQEAKICAgICAgICAgICAgICAiVGVzdGluZyAiIDw8IHRoaXMtPlRlc3RQcm9wZXJ0aWVzLT5OYW1lIDw8ICIgLi4uICIpOwogfQogCi12b2lkIGNtQ1Rlc3RSdW5UZXN0OjpGaW5hbGl6ZVRlc3QoKQordm9pZCBjbUNUZXN0UnVuVGVzdDo6RmluYWxpemVUZXN0KGJvb2wgc3RhcnRlZCkKIHsKLSAgdGhpcy0+TXVsdGlUZXN0SGFuZGxlci5GaW5pc2hUZXN0UHJvY2Vzcyh0aGlzLCB0cnVlKTsKKyAgdGhpcy0+TXVsdGlUZXN0SGFuZGxlci5GaW5pc2hUZXN0UHJvY2Vzcyh0aGlzLT5UZXN0UHJvY2Vzcy0+R2V0UnVubmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFJ1blRlc3QuaCBiL1NvdXJjZS9DVGVzdC9jbUNUZXN0UnVuVGVzdC5oCmluZGV4IDQ5ODg4MzkuLmIxZDE4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DVGVzdC9jbUNUZXN0UnVuVGVzdC5oCisrKyBiL1NvdXJjZS9DVGVzdC9jbUNUZXN0UnVuVGVzdC5oCkBAIC02NSw2ICs2NSwxNSBAQAogICAvLyBSZWFkIGFuZCBzdG9yZSBvdXRwdXQuICBSZXR1cm5zIHRydWUgaWYgaXQgbXVzdCBiZSBjYWxsZWQgYWdhaW4uCiAgIHZvaWQgQ2hlY2tPdXRwdXQoc3RkOjpzdHJpbmcgY29uc3QmIGxpbmUpOwogCisgIHN0YXRpYyBib29sIFN0YXJ0VGVzdChzdGQ6OnVuaXF1ZV9wdHI8Y21DVGVzdFJ1blRlc3Q+IHJ1bm5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb21wbGV0ZWQsIHNpemVfdCB0b3RhbCk7CisgIHN0YXRpYyBib29sIFN0YXJ0QWdhaW4oc3RkOjp1bmlxdWVfcHRyPGNtQ1Rlc3RSdW5UZXN0PiBydW5uZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbXBsZXRlZCk7CisKKyAgc3RhdGljIHZvaWQgU3RhcnRGYWlsdXJlKHN0ZDo6dW5pcXVlX3B0cjxjbUNUZXN0UnVuVGVzdD4gcnVubmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QmIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBkZXRhaWwpOworCiAgIC8vIGxhdW5jaCB0aGUgdGVzdCBwcm9jZXNzLCByZXR1cm4gd2hldGhlciBpdCBzdGFydGVkIGNvcnJlY3RseQogICBib29sIFN0YXJ0VGVzdChzaXplX3QgY29tcGxldGVkLCBzaXplX3QgdG90YWwpOwogICAvLyBjYXB0dXJlIGFuZCByZXBvcnQgdGhlIHRlc3QgcmVzdWx0cwpAQCAtNzQsOCArODMsNiBAQAogCiAgIHZvaWQgQ29tcHV0ZVdlaWdodGVkQ29zdCgpOwogCi0gIGJvb2wgU3RhcnRBZ2FpbihzaXplX3QgY29tcGxldGVkKTsKLQogICB2b2lkIFN0YXJ0RmFpbHVyZShzdGQ6OnN0cmluZyBjb25zdCYgb3V0cHV0LCBzdGQ6OnN0cmluZyBjb25zdCYgZGV0YWlsKTsKIAogICBjbUNUZXN0KiBHZXRDVGVzdCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPkNUZXN0OyB9CkBAIC04NCw3ICs5MSw3IEBACiAKICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBHZXRBcmd1bWVudHMoKSB7IHJldHVybiB0aGlzLT5Bcmd1bWVudHM7IH0KIAotICB2b2lkIEZpbmFsaXplVGVzdCgpOworICB2b2lkIEZpbmFsaXplVGVzdChib29sIHN0YXJ0ZWQgPSB0cnVlKTsKIAogICBib29sIFRpbWVkT3V0Rm9yU3RvcFRpbWUoKSBjb25zdCB7IHJldHVybiB0aGlzLT5UaW1lb3V0SXNGb3JTdG9wVGltZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFNjcmlwdEhhbmRsZXIuY3h4IGIvU291cmNlL0NUZXN0L2NtQ1Rlc3RTY3JpcHRIYW5kbGVyLmN4eAppbmRleCA3ODAzZTM3Li40ZmE0ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFNjcmlwdEhhbmRsZXIuY3h4CisrKyBiL1NvdXJjZS9DVGVzdC9jbUNUZXN0U2NyaXB0SGFuZGxlci5jeHgKQEAgLTYsNyArNiw2IEBACiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cmF0aW8+CiAjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDx1dGlsaXR5PgpAQCAtNTEsMjIgKzUwLDcgQEAKIAogI2RlZmluZSBDVEVTVF9JTklUSUFMX0NNQUtFX09VVFBVVF9GSUxFX05BTUUgIkNUZXN0SW5pdGlhbENNYWtlT3V0cHV0LmxvZyIKIAotY21DVGVzdFNjcmlwdEhhbmRsZXI6OmNtQ1Rlc3RTY3JpcHRIYW5kbGVyKCkKLXsKLSAgdGhpcy0+QmFja3VwID0gZmFsc2U7Ci0gIHRoaXMtPkVtcHR5QmluRGlyID0gZmFsc2U7Ci0gIHRoaXMtPkVtcHR5QmluRGlyT25jZSA9IGZhbHNlOwotICB0aGlzLT5NYWtlZmlsZSA9IG51bGxwdHI7Ci0gIHRoaXMtPlBhcmVudE1ha2VmaWxlID0gbnVsbHB0cjsKLSAgdGhpcy0+Q01ha2UgPSBudWxscHRyOwotICB0aGlzLT5HbG9iYWxHZW5lcmF0b3IgPSBudWxscHRyOwotCi0gIHRoaXMtPlNjcmlwdFN0YXJ0VGltZSA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQoKTsKLQotICAvLyB0aGUgKjYwIGlzIGJlY2F1c2UgdGhlIHNldHRpbmdzIGFyZSBpbiBtaW51dGVzIGJ1dCBHZXRUaW1lIGlzIHNlY29uZHMKLSAgdGhpcy0+TWluaW11bUludGVydmFsID0gMzAgKiA2MDsKLSAgdGhpcy0+Q29udGludW91c0R1cmF0aW9uID0gLTE7Ci19CitjbUNUZXN0U2NyaXB0SGFuZGxlcjo6Y21DVGVzdFNjcmlwdEhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgY21DVGVzdFNjcmlwdEhhbmRsZXI6OkluaXRpYWxpemUoKQogewpAQCAtOTUsMjIgKzc5LDE1IEBACiAgIC8vIHdoYXQgdGltZSBpbiBzZWNvbmRzIGRpZCB0aGlzIHNjcmlwdCBzdGFydCBydW5uaW5nCiAgIHRoaXMtPlNjcmlwdFN0YXJ0VGltZSA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQoKTsKIAotICBkZWxldGUgdGhpcy0+TWFrZWZpbGU7Ci0gIHRoaXMtPk1ha2VmaWxlID0gbnVsbHB0cjsKKyAgdGhpcy0+TWFrZWZpbGUucmVzZXQoKTsKICAgdGhpcy0+UGFyZW50TWFrZWZpbGUgPSBudWxscHRyOwogCi0gIGRlbGV0ZSB0aGlzLT5HbG9iYWxHZW5lcmF0b3I7Ci0gIHRoaXMtPkdsb2JhbEdlbmVyYXRvciA9IG51bGxwdHI7CisgIHRoaXMtPkdsb2JhbEdlbmVyYXRvci5yZXNldCgpOwogCi0gIGRlbGV0ZSB0aGlzLT5DTWFrZTsKKyAgdGhpcy0+Q01ha2UucmVzZXQoKTsKIH0KIAotY21DVGVzdFNjcmlwdEhhbmRsZXI6On5jbUNUZXN0U2NyaXB0SGFuZGxlcigpCi17Ci0gIGRlbGV0ZSB0aGlzLT5NYWtlZmlsZTsKLSAgZGVsZXRlIHRoaXMtPkdsb2JhbEdlbmVyYXRvcjsKLSAgZGVsZXRlIHRoaXMtPkNNYWtlOwotfQorY21DVGVzdFNjcmlwdEhhbmRsZXI6On5jbUNUZXN0U2NyaXB0SGFuZGxlcigpID0gZGVmYXVsdDsKIAogLy8ganVzdCBhZGRzIGFuIGFyZ3VtZW50IHRvIHRoZSB2ZWN0b3IKIHZvaWQgY21DVGVzdFNjcmlwdEhhbmRsZXI6OkFkZENvbmZpZ3VyYXRpb25TY3JpcHQoY29uc3QgY2hhciogc2NyaXB0LApAQCAtMjQ3LDIzICsyMjQsMjAgQEAKIHZvaWQgY21DVGVzdFNjcmlwdEhhbmRsZXI6OkNyZWF0ZUNNYWtlKCkKIHsKICAgLy8gY3JlYXRlIGEgY21ha2UgaW5zdGFuY2UgdG8gcmVhZCB0aGUgY29uZmlndXJhdGlvbiBzY3JpcHQKLSAgaWYgKHRoaXMtPkNNYWtlKSB7Ci0gICAgZGVsZXRlIHRoaXMtPkNNYWtlOwotICAgIGRlbGV0ZSB0aGlzLT5HbG9iYWxHZW5lcmF0b3I7Ci0gICAgZGVsZXRlIHRoaXMtPk1ha2VmaWxlOwotICB9Ci0gIHRoaXMtPkNNYWtlID0gbmV3IGNtYWtlKGNtYWtlOjpSb2xlU2NyaXB0LCBjbVN0YXRlOjpDVGVzdCk7CisgIHRoaXMtPkNNYWtlID0gY206Om1ha2VfdW5pcXVlPGNtYWtlPihjbWFrZTo6Um9sZVNjcmlwdCwgY21TdGF0ZTo6Q1Rlc3QpOwogICB0aGlzLT5DTWFrZS0+U2V0SG9tZURpcmVjdG9yeSgiIik7CiAgIHRoaXMtPkNNYWtlLT5TZXRIb21lT3V0cHV0RGlyZWN0b3J5KCIiKTsKICAgdGhpcy0+Q01ha2UtPkdldEN1cnJlbnRTbmFwc2hvdCgpLlNldERlZmF1bHREZWZpbml0aW9ucygpOwogICB0aGlzLT5DTWFrZS0+QWRkQ01ha2VQYXRocygpOwotICB0aGlzLT5HbG9iYWxHZW5lcmF0b3IgPSBuZXcgY21HbG9iYWxHZW5lcmF0b3IodGhpcy0+Q01ha2UpOworICB0aGlzLT5HbG9iYWxHZW5lcmF0b3IgPQorICAgIGNtOjptYWtlX3VuaXF1ZTxjbUdsb2JhbEdlbmVyYXRvcj4odGhpcy0+Q01ha2UuZ2V0KCkpOwogCiAgIGNtU3RhdGVTbmFwc2hvdCBzbmFwc2hvdCA9IHRoaXMtPkNNYWtlLT5HZXRDdXJyZW50U25hcHNob3QoKTsKICAgc3RkOjpzdHJpbmcgY3dkID0gY21TeXN0ZW1Ub29sczo6R2V0Q3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKTsKICAgc25hcHNob3QuR2V0RGlyZWN0b3J5KCkuU2V0Q3VycmVudFNvdXJjZShjd2QpOwogICBzbmFwc2hvdC5HZXREaXJlY3RvcnkoKS5TZXRDdXJyZW50QmluYXJ5KGN3ZCk7Ci0gIHRoaXMtPk1ha2VmaWxlID0gbmV3IGNtTWFrZWZpbGUodGhpcy0+R2xvYmFsR2VuZXJhdG9yLCBzbmFwc2hvdCk7CisgIHRoaXMtPk1ha2VmaWxlID0KKyAgICBjbTo6bWFrZV91bmlxdWU8Y21NYWtlZmlsZT4odGhpcy0+R2xvYmFsR2VuZXJhdG9yLmdldCgpLCBzbmFwc2hvdCk7CiAgIGlmICh0aGlzLT5QYXJlbnRNYWtlZmlsZSkgewogICAgIHRoaXMtPk1ha2VmaWxlLT5TZXRSZWN1cnNpb25EZXB0aCgKICAgICAgIHRoaXMtPlBhcmVudE1ha2VmaWxlLT5HZXRSZWN1cnNpb25EZXB0aCgpKTsKQEAgLTMxMCwxMiArMjg0LDE0IEBACiAgIC8vIGlmIHRoZSBhcmd1bWVudCBoYXMgYSAsIGluIGl0IHRoZW4gaXQgbmVlZHMgdG8gYmUgYnJva2VuIGludG8gdGhlIGZpc3QKICAgLy8gYXJndW1lbnQgKHdoaWNoIGlzIHRoZSBzY3JpcHQpIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IHdoaWNoIHdpbGwgYmUKICAgLy8gcGFzc2VkIGludG8gdGhlIHNjcmlwdHMgYXMgU19BUkcKLSAgc3RkOjpzdHJpbmcgc2NyaXB0ID0gdG90YWxfc2NyaXB0X2FyZzsKKyAgc3RkOjpzdHJpbmcgc2NyaXB0OwogICBzdGQ6OnN0cmluZyBzY3JpcHRfYXJnOwogICBjb25zdCBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvbW1hX3BvcyA9IHRvdGFsX3NjcmlwdF9hcmcuZmluZCgnLCcpOwogICBpZiAoY29tbWFfcG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7CiAgICAgc2NyaXB0ID0gdG90YWxfc2NyaXB0X2FyZy5zdWJzdHIoMCwgY29tbWFfcG9zKTsKICAgICBzY3JpcHRfYXJnID0gdG90YWxfc2NyaXB0X2FyZy5zdWJzdHIoY29tbWFfcG9zICsgMSk7CisgIH0gZWxzZSB7CisgICAgc2NyaXB0ID0gdG90YWxfc2NyaXB0X2FyZzsKICAgfQogICAvLyBtYWtlIHN1cmUgdGhlIGZpbGUgZXhpc3RzCiAgIGlmICghY21TeXN0ZW1Ub29sczo6RmlsZUV4aXN0cyhzY3JpcHQpKSB7CkBAIC04NzgsNyArODU0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzbmFtZSwgYm9vbCBJblByb2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiByZXR1cm5WYWx1ZSkKIHsKLSAgY21DVGVzdFNjcmlwdEhhbmRsZXIqIHNoID0gbmV3IGNtQ1Rlc3RTY3JpcHRIYW5kbGVyKCk7CisgIGF1dG8gc2ggPSBjbTo6bWFrZV91bmlxdWU8Y21DVGVzdFNjcmlwdEhhbmRsZXI+KCk7CiAgIHNoLT5TZXRDVGVzdEluc3RhbmNlKGN0ZXN0KTsKICAgc2gtPlBhcmVudE1ha2VmaWxlID0gbWY7CiAgIHNoLT5BZGRDb25maWd1cmF0aW9uU2NyaXB0KHNuYW1lLCBJblByb2Nlc3MpOwpAQCAtODg2LDcgKzg2Miw2IEBACiAgIGlmIChyZXR1cm5WYWx1ZSkgewogICAgICpyZXR1cm5WYWx1ZSA9IHJlczsKICAgfQotICBkZWxldGUgc2g7CiAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFNjcmlwdEhhbmRsZXIuaCBiL1NvdXJjZS9DVGVzdC9jbUNUZXN0U2NyaXB0SGFuZGxlci5oCmluZGV4IGQwMDMxOTkuLmViYjc5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DVGVzdC9jbUNUZXN0U2NyaXB0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9DVGVzdC9jbUNUZXN0U2NyaXB0SGFuZGxlci5oCkBAIC0xMDEsMTIgKzEwMSwxNCBAQAogICBjbUR1cmF0aW9uIEdldFJlbWFpbmluZ1RpbWVBbGxvd2VkKCk7CiAKICAgY21DVGVzdFNjcmlwdEhhbmRsZXIoKTsKKyAgY21DVGVzdFNjcmlwdEhhbmRsZXIoY29uc3QgY21DVGVzdFNjcmlwdEhhbmRsZXImKSA9IGRlbGV0ZTsKKyAgY29uc3QgY21DVGVzdFNjcmlwdEhhbmRsZXImIG9wZXJhdG9yPShjb25zdCBjbUNUZXN0U2NyaXB0SGFuZGxlciYpID0gZGVsZXRlOwogICB+Y21DVGVzdFNjcmlwdEhhbmRsZXIoKSBvdmVycmlkZTsKIAogICB2b2lkIEluaXRpYWxpemUoKSBvdmVycmlkZTsKIAogICB2b2lkIENyZWF0ZUNNYWtlKCk7Ci0gIGNtYWtlKiBHZXRDTWFrZSgpIHsgcmV0dXJuIHRoaXMtPkNNYWtlOyB9CisgIGNtYWtlKiBHZXRDTWFrZSgpIHsgcmV0dXJuIHRoaXMtPkNNYWtlLmdldCgpOyB9CiAKICAgdm9pZCBTZXRSdW5DdXJyZW50U2NyaXB0KGJvb2wgdmFsdWUpOwogCkBAIC0xNDMsOSArMTQ1LDkgQEAKIAogICBib29sIFNob3VsZFJ1bkN1cnJlbnRTY3JpcHQ7CiAKLSAgYm9vbCBCYWNrdXA7Ci0gIGJvb2wgRW1wdHlCaW5EaXI7Ci0gIGJvb2wgRW1wdHlCaW5EaXJPbmNlOworICBib29sIEJhY2t1cCA9IGZhbHNlOworICBib29sIEVtcHR5QmluRGlyID0gZmFsc2U7CisgIGJvb2wgRW1wdHlCaW5EaXJPbmNlID0gZmFsc2U7CiAKICAgc3RkOjpzdHJpbmcgU291cmNlRGlyOwogICBzdGQ6OnN0cmluZyBCaW5hcnlEaXI7CkBAIC0xNjEsMTYgKzE2MywxOCBAQAogICBzdGQ6OnN0cmluZyBDTU91dEZpbGU7CiAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBFeHRyYVVwZGF0ZXM7CiAKLSAgZG91YmxlIE1pbmltdW1JbnRlcnZhbDsKLSAgZG91YmxlIENvbnRpbnVvdXNEdXJhdGlvbjsKKyAgLy8gdGhlICo2MCBpcyBiZWNhdXNlIHRoZSBzZXR0aW5ncyBhcmUgaW4gbWludXRlcyBidXQgR2V0VGltZSBpcyBzZWNvbmRzCisgIGRvdWJsZSBNaW5pbXVtSW50ZXJ2YWwgPSAzMCAqIDYwOworICBkb3VibGUgQ29udGludW91c0R1cmF0aW9uID0gLTE7CiAKICAgLy8gd2hhdCB0aW1lIGluIHNlY29uZHMgZGlkIHRoaXMgc2NyaXB0IHN0YXJ0IHJ1bm5pbmcKLSAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBTY3JpcHRTdGFydFRpbWU7CisgIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQgU2NyaXB0U3RhcnRUaW1lID0KKyAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50KCk7CiAKLSAgY21NYWtlZmlsZSogTWFrZWZpbGU7Ci0gIGNtTWFrZWZpbGUqIFBhcmVudE1ha2VmaWxlOwotICBjbUdsb2JhbEdlbmVyYXRvciogR2xvYmFsR2VuZXJhdG9yOwotICBjbWFrZSogQ01ha2U7CisgIHN0ZDo6dW5pcXVlX3B0cjxjbU1ha2VmaWxlPiBNYWtlZmlsZTsKKyAgY21NYWtlZmlsZSogUGFyZW50TWFrZWZpbGUgPSBudWxscHRyOworICBzdGQ6OnVuaXF1ZV9wdHI8Y21HbG9iYWxHZW5lcmF0b3I+IEdsb2JhbEdlbmVyYXRvcjsKKyAgc3RkOjp1bmlxdWVfcHRyPGNtYWtlPiBDTWFrZTsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RTdWJtaXRIYW5kbGVyLmN4eCBiL1NvdXJjZS9DVGVzdC9jbUNUZXN0U3VibWl0SGFuZGxlci5jeHgKaW5kZXggMjJhYjQ4Zi4uODExYTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RTdWJtaXRIYW5kbGVyLmN4eAorKysgYi9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFN1Ym1pdEhhbmRsZXIuY3h4CkBAIC0yNjAsMTEgKzI2MCwxMCBAQAogICAgICAgICBjbUNUZXN0U2NyaXB0SGFuZGxlciogY2ggPSB0aGlzLT5DVGVzdC0+R2V0U2NyaXB0SGFuZGxlcigpOwogICAgICAgICBjbWFrZSogY20gPSBjaC0+R2V0Q01ha2UoKTsKICAgICAgICAgaWYgKGNtKSB7Ci0gICAgICAgICAgY29uc3QgY2hhciogc3VicHJvamVjdCA9Ci0gICAgICAgICAgICBjbS0+R2V0U3RhdGUoKS0+R2V0R2xvYmFsUHJvcGVydHkoIlN1YlByb2plY3QiKTsKKyAgICAgICAgICBjbVByb3Agc3VicHJvamVjdCA9IGNtLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eSgiU3ViUHJvamVjdCIpOwogICAgICAgICAgIGlmIChzdWJwcm9qZWN0KSB7CiAgICAgICAgICAgICB1cGxvYWRfYXMgKz0gIiZzdWJwcm9qZWN0PSI7Ci0gICAgICAgICAgICB1cGxvYWRfYXMgKz0gY3Rlc3RfY3VybC5Fc2NhcGUoc3VicHJvamVjdCk7CisgICAgICAgICAgICB1cGxvYWRfYXMgKz0gY3Rlc3RfY3VybC5Fc2NhcGUoKnN1YnByb2plY3QpOwogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQpAQCAtNTA2LDE4ICs1MDUsMTkgQEAKICAgY3VybC5TZXRUaW1lT3V0U2Vjb25kcyhTVUJNSVRfVElNRU9VVF9JTl9TRUNPTkRTX0RFRkFVTFQpOwogICBjdXJsLlNldEh0dHBIZWFkZXJzKHRoaXMtPkh0dHBIZWFkZXJzKTsKICAgc3RkOjpzdHJpbmcgdXJsID0gdGhpcy0+Q1Rlc3QtPkdldFN1Ym1pdFVSTCgpOwotICBzdGQ6OnN0cmluZyBmaWVsZHM7Ci0gIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gdXJsLmZpbmQoJz8nKTsKLSAgaWYgKHBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgIGZpZWxkcyA9IHVybC5zdWJzdHIocG9zICsgMSk7Ci0gICAgdXJsID0gdXJsLnN1YnN0cigwLCBwb3MpOwotICB9CiAgIGlmICghY21IYXNMaXRlcmFsUHJlZml4KHVybCwgImh0dHA6Ly8iKSAmJgogICAgICAgIWNtSGFzTGl0ZXJhbFByZWZpeCh1cmwsICJodHRwczovLyIpKSB7CiAgICAgY21DVGVzdExvZyh0aGlzLT5DVGVzdCwgRVJST1JfTUVTU0FHRSwKICAgICAgICAgICAgICAgICJPbmx5IGh0dHAgYW5kIGh0dHBzIGFyZSBzdXBwb3J0ZWQgZm9yIENEQVNIX1VQTE9BRFxuIik7CiAgICAgcmV0dXJuIC0xOwogICB9CisKKyAgc3RkOjpzdHJpbmcgZmllbGRzOworICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IHVybC5maW5kKCc/Jyk7CisgIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICBmaWVsZHMgPSB1cmwuc3Vic3RyKHBvcyArIDEpOworICAgIHVybC5lcmFzZShwb3MpOworICB9CiAgIGJvb2wgaW50ZXJuYWxUZXN0ID0gY21Jc09uKHRoaXMtPkdldE9wdGlvbigiSW50ZXJuYWxUZXN0IikpOwogCiAgIC8vIEdldCBSRVRSWV9DT1VOVCBhbmQgUkVUUllfREVMQVkgdmFsdWVzIGlmIHRoZXkgd2VyZSBzZXQuCkBAIC01NTUsMTEgKzU1NSwxMSBAQAogICAvLyBhICImc3VicHJvamVjdD1zdWJwcm9qZWN0bmFtZSIgdG8gdGhlIGZpcnN0IFBPU1QuCiAgIGNtQ1Rlc3RTY3JpcHRIYW5kbGVyKiBjaCA9IHRoaXMtPkNUZXN0LT5HZXRTY3JpcHRIYW5kbGVyKCk7CiAgIGNtYWtlKiBjbSA9IGNoLT5HZXRDTWFrZSgpOwotICBjb25zdCBjaGFyKiBzdWJwcm9qZWN0ID0gY20tPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KCJTdWJQcm9qZWN0Iik7CisgIGNtUHJvcCBzdWJwcm9qZWN0ID0gY20tPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KCJTdWJQcm9qZWN0Iik7CiAgIC8vIFRPRE86IEVuY29kZSB2YWx1ZXMgZm9yIGEgVVJMIGluc3RlYWQgb2YgdHJ1c3RpbmcgY2FsbGVyLgogICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RyOwogICBpZiAoc3VicHJvamVjdCkgewotICAgIHN0ciA8PCAic3VicHJvamVjdD0iIDw8IGN1cmwuRXNjYXBlKHN1YnByb2plY3QpIDw8ICImIjsKKyAgICBzdHIgPDwgInN1YnByb2plY3Q9IiA8PCBjdXJsLkVzY2FwZSgqc3VicHJvamVjdCkgPDwgIiYiOwogICB9CiAgIGF1dG8gdGltZU5vdyA9CiAgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dG9fdGltZV90KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9DVGVzdC9jbUNUZXN0VGVzdEhhbmRsZXIuY3h4IGIvU291cmNlL0NUZXN0L2NtQ1Rlc3RUZXN0SGFuZGxlci5jeHgKaW5kZXggNGYzMjRlYS4uMWZlYWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RUZXN0SGFuZGxlci5jeHgKKysrIGIvU291cmNlL0NUZXN0L2NtQ1Rlc3RUZXN0SGFuZGxlci5jeHgKQEAgLTE4LDEyICsxOCwxNCBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlIDxjbS9tZW1vcnk+CisjaW5jbHVkZSA8Y20vc3RyaW5nX3ZpZXc+CiAKICNpbmNsdWRlICJjbXN5cy9GU3RyZWFtLmh4eCIKICNpbmNsdWRlIDxjbXN5cy9CYXNlNjQuaD4KICNpbmNsdWRlIDxjbXN5cy9EaXJlY3RvcnkuaHh4PgogI2luY2x1ZGUgPGNtc3lzL1JlZ3VsYXJFeHByZXNzaW9uLmh4eD4KIAorI2luY2x1ZGUgImNtX3N0YXRpY19zdHJpbmdfdmlldy5oeHgiCiAjaW5jbHVkZSAiY21fdXRmOC5oIgogCiAjaW5jbHVkZSAiY21BbGdvcml0aG1zLmgiCkBAIC0xMjY3LDcgKzEyNjksNyBAQAogICB0aGlzLT5TdGFydFRlc3RUaW1lID0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7CiAgIGF1dG8gZWxhcHNlZF90aW1lX3N0YXJ0ID0gc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCk7CiAKLSAgY21DVGVzdE11bHRpUHJvY2Vzc0hhbmRsZXIqIHBhcmFsbGVsID0gbmV3IGNtQ1Rlc3RNdWx0aVByb2Nlc3NIYW5kbGVyOworICBhdXRvIHBhcmFsbGVsID0gY206Om1ha2VfdW5pcXVlPGNtQ1Rlc3RNdWx0aVByb2Nlc3NIYW5kbGVyPigpOwogICBwYXJhbGxlbC0+U2V0Q1Rlc3QodGhpcy0+Q1Rlc3QpOwogICBwYXJhbGxlbC0+U2V0UGFyYWxsZWxMZXZlbCh0aGlzLT5DVGVzdC0+R2V0UGFyYWxsZWxMZXZlbCgpKTsKICAgcGFyYWxsZWwtPlNldFRlc3RIYW5kbGVyKHRoaXMpOwpAQCAtMTMzOCw3ICsxMzQwLDYgQEAKICAgfSBlbHNlIHsKICAgICBwYXJhbGxlbC0+UnVuVGVzdHMoKTsKICAgfQotICBkZWxldGUgcGFyYWxsZWw7CiAgIHRoaXMtPkVuZFRlc3QgPSB0aGlzLT5DVGVzdC0+Q3VycmVudFRpbWUoKTsKICAgdGhpcy0+RW5kVGVzdFRpbWUgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKTsKICAgdGhpcy0+RWxhcHNlZFRlc3RpbmdUaW1lID0KQEAgLTE4OTQsNyArMTg5NSw4IEBACiAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogCi0gICAgICBpbnQgdmFsID0gYXRvaShsaW5lLnN1YnN0cigwLCBwb3MpLmNfc3RyKCkpOworICAgICAgbGluZS5lcmFzZShwb3MpOworICAgICAgaW50IHZhbCA9IGF0b2kobGluZS5jX3N0cigpKTsKICAgICAgIHRoaXMtPlRlc3RzVG9SdW4ucHVzaF9iYWNrKHZhbCk7CiAgICAgfQogICAgIGlmcy5jbG9zZSgpOwpAQCAtMjAxNiwxMyArMjAxOCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0ZDo6aW9zOjpiaW5hcnkKICNlbmRpZgogICAgICAgICAgICk7Ci0gICAgICAgICAgdW5zaWduZWQgY2hhciogZmlsZV9idWZmZXIgPSBuZXcgdW5zaWduZWQgY2hhcltsZW4gKyAxXTsKLSAgICAgICAgICBpZnMucmVhZChyZWludGVycHJldF9jYXN0PGNoYXIqPihmaWxlX2J1ZmZlciksIGxlbik7Ci0gICAgICAgICAgdW5zaWduZWQgY2hhciogZW5jb2RlZF9idWZmZXIgPSBuZXcgdW5zaWduZWQgY2hhcltzdGF0aWNfY2FzdDxpbnQ+KAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihsZW4pICogMS41ICsgNS4wKV07CisgICAgICAgICAgYXV0byBmaWxlX2J1ZmZlciA9IGNtOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KGxlbiArIDEpOworICAgICAgICAgIGlmcy5yZWFkKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGZpbGVfYnVmZmVyLmdldCgpKSwgbGVuKTsKKyAgICAgICAgICBhdXRvIGVuY29kZWRfYnVmZmVyID0gY206Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4oCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGRvdWJsZT4obGVuKSAqIDEuNSArIDUuMCkpOwogCi0gICAgICAgICAgc2l6ZV90IHJsZW4gPQotICAgICAgICAgICAgY21zeXNCYXNlNjRfRW5jb2RlKGZpbGVfYnVmZmVyLCBsZW4sIGVuY29kZWRfYnVmZmVyLCAxKTsKKyAgICAgICAgICBzaXplX3QgcmxlbiA9IGNtc3lzQmFzZTY0X0VuY29kZShmaWxlX2J1ZmZlci5nZXQoKSwgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRfYnVmZmVyLmdldCgpLCAxKTsKIAogICAgICAgICAgIHhtbC5TdGFydEVsZW1lbnQoIk5hbWVkTWVhc3VyZW1lbnQiKTsKICAgICAgICAgICB4bWwuQXR0cmlidXRlKG1lYXN1cmVtZW50ZmlsZS5tYXRjaCgxKS5jX3N0cigpLApAQCAtMjAzOSw4ICsyMDQxLDYgQEAKICAgICAgICAgICB9CiAgICAgICAgICAgeG1sLkVsZW1lbnQoIlZhbHVlIiwgb3N0ci5zdHIoKSk7CiAgICAgICAgICAgeG1sLkVuZEVsZW1lbnQoKTsgLy8gTmFtZWRNZWFzdXJlbWVudAotICAgICAgICAgIGRlbGV0ZVtdIGZpbGVfYnVmZmVyOwotICAgICAgICAgIGRlbGV0ZVtdIGVuY29kZWRfYnVmZmVyOwogICAgICAgICB9CiAgICAgICB9IGVsc2UgewogICAgICAgICBpbnQgaWR4ID0gNDsKQEAgLTIwODUsMTkgKzIwODUsMTggQEAKICAgaWYgKGNtU3lzdGVtVG9vbHM6OkZpbGVFeGlzdHMoaW4pKSB7CiAgICAgY21zeXM6Omlmc3RyZWFtIGZpbihpbik7CiAgICAgdW5zaWduZWQgbG9uZyBmaWxlbGVuID0gY21TeXN0ZW1Ub29sczo6RmlsZUxlbmd0aChpbik7Ci0gICAgY2hhciogYnVmZiA9IG5ldyBjaGFyW2ZpbGVsZW4gKyAxXTsKLSAgICBmaW4uZ2V0bGluZShidWZmLCBmaWxlbGVuKTsKKyAgICBhdXRvIGJ1ZmYgPSBjbTo6bWFrZV91bmlxdWU8Y2hhcltdPihmaWxlbGVuICsgMSk7CisgICAgZmluLmdldGxpbmUoYnVmZi5nZXQoKSwgZmlsZWxlbik7CiAgICAgYnVmZltmaW4uZ2NvdW50KCldID0gMDsKLSAgICB0aGlzLT5UZXN0c1RvUnVuU3RyaW5nID0gYnVmZjsKLSAgICBkZWxldGVbXSBidWZmOworICAgIHRoaXMtPlRlc3RzVG9SdW5TdHJpbmcgPSBidWZmLmdldCgpOwogICB9CiB9CiAKLWJvb2wgY21DVGVzdFRlc3RIYW5kbGVyOjpDbGVhblRlc3RPdXRwdXQoc3RkOjpzdHJpbmcmIG91dHB1dCwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgY21DVGVzdFRlc3RIYW5kbGVyOjpDbGVhblRlc3RPdXRwdXQoc3RkOjpzdHJpbmcmIG91dHB1dCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoID49IG91dHB1dC5zaXplKCkgfHwKICAgICAgIG91dHB1dC5maW5kKCJDVEVTVF9GVUxMX09VVFBVVCIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuOwogICB9CiAKICAgLy8gVHJ1bmNhdGUgYXQgZ2l2ZW4gbGVuZ3RoIGJ1dCBkbyBub3QgYnJlYWsgaW4gdGhlIG1pZGRsZSBvZiBhIG11bHRpLWJ5dGUKQEAgLTIxMTgsNyArMjExNyw3IEBACiAgICAgICArK2N1cnJlbnQ7CiAgICAgfQogICB9Ci0gIG91dHB1dCA9IG91dHB1dC5zdWJzdHIoMCwgY3VycmVudCAtIGJlZ2luKTsKKyAgb3V0cHV0LmVyYXNlKGN1cnJlbnQgLSBiZWdpbik7CiAKICAgLy8gQXBwZW5kIHRydW5jYXRpb24gbWVzc2FnZS4KICAgc3RkOjpvc3RyaW5nc3RyZWFtIG1zZzsKQEAgLTIxMjgsNyArMjEyNyw2IEBACiAgICAgICAgICAib2YgIgogICAgICAgPDwgbGVuZ3RoIDw8ICIgYnl0ZXMuXG4iOwogICBvdXRwdXQgKz0gbXNnLnN0cigpOwotICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBjbUNUZXN0VGVzdEhhbmRsZXI6OlNldFRlc3RzUHJvcGVydGllcygKQEAgLTIxNDksMTYgKzIxNDcsMTYgQEAKICAgfQogICArK2l0OyAvLyBza2lwIFBST1BFUlRJRVMKICAgZm9yICg7IGl0ICE9IGFyZ3MuZW5kKCk7ICsraXQpIHsKLSAgICBzdGQ6OnN0cmluZyBrZXkgPSAqaXQ7CisgICAgc3RkOjpzdHJpbmcgY29uc3QmIGtleSA9ICppdDsKICAgICArK2l0OwogICAgIGlmIChpdCA9PSBhcmdzLmVuZCgpKSB7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgc3RkOjpzdHJpbmcgdmFsID0gKml0OworICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiB2YWwgPSAqaXQ7CiAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgdCA6IHRlc3RzKSB7CiAgICAgICBmb3IgKGNtQ1Rlc3RUZXN0UHJvcGVydGllcyYgcnQgOiB0aGlzLT5UZXN0TGlzdCkgewogICAgICAgICBpZiAodCA9PSBydC5OYW1lKSB7Ci0gICAgICAgICAgaWYgKGtleSA9PSAiX0JBQ0tUUkFDRV9UUklQTEVTIikgeworICAgICAgICAgIGlmIChrZXkgPT0gIl9CQUNLVFJBQ0VfVFJJUExFUyJfcykgewogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRyaXBsZXM7CiAgICAgICAgICAgICAvLyBhbGxvdyBlbXB0eSBhcmdzIGluIHRoZSB0cmlwbGVzCiAgICAgICAgICAgICBjbUV4cGFuZExpc3QodmFsLCB0cmlwbGVzLCB0cnVlKTsKQEAgLTIxODIsOTEgKzIxODAsNzAgQEAKICAgICAgICAgICAgICAgICBydC5CYWNrdHJhY2UgPSBydC5CYWNrdHJhY2UuUHVzaChmYyk7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGtleSA9PSAiV0lMTF9GQUlMIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJXSUxMX0ZBSUwiX3MpIHsKICAgICAgICAgICAgIHJ0LldpbGxGYWlsID0gY21Jc09uKHZhbCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChrZXkgPT0gIkRJU0FCTEVEIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJESVNBQkxFRCJfcykgewogICAgICAgICAgICAgcnQuRGlzYWJsZWQgPSBjbUlzT24odmFsKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGtleSA9PSAiQVRUQUNIRURfRklMRVMiKSB7CisgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gIkFUVEFDSEVEX0ZJTEVTIl9zKSB7CiAgICAgICAgICAgICBjbUV4cGFuZExpc3QodmFsLCBydC5BdHRhY2hlZEZpbGVzKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGtleSA9PSAiQVRUQUNIRURfRklMRVNfT05fRkFJTCIpIHsKKyAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSAiQVRUQUNIRURfRklMRVNfT05fRkFJTCJfcykgewogICAgICAgICAgICAgY21FeHBhbmRMaXN0KHZhbCwgcnQuQXR0YWNoT25GYWlsKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGtleSA9PSAiUkVTT1VSQ0VfTE9DSyIpIHsKKyAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSAiUkVTT1VSQ0VfTE9DSyJfcykgewogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGx2YWwgPSBjbUV4cGFuZGVkTGlzdCh2YWwpOwogCiAgICAgICAgICAgICBydC5Mb2NrZWRSZXNvdXJjZXMuaW5zZXJ0KGx2YWwuYmVnaW4oKSwgbHZhbC5lbmQoKSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChrZXkgPT0gIkZJWFRVUkVTX1NFVFVQIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJGSVhUVVJFU19TRVRVUCJfcykgewogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGx2YWwgPSBjbUV4cGFuZGVkTGlzdCh2YWwpOwogCiAgICAgICAgICAgICBydC5GaXh0dXJlc1NldHVwLmluc2VydChsdmFsLmJlZ2luKCksIGx2YWwuZW5kKCkpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoa2V5ID09ICJGSVhUVVJFU19DTEVBTlVQIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJGSVhUVVJFU19DTEVBTlVQIl9zKSB7CiAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbHZhbCA9IGNtRXhwYW5kZWRMaXN0KHZhbCk7CiAKICAgICAgICAgICAgIHJ0LkZpeHR1cmVzQ2xlYW51cC5pbnNlcnQobHZhbC5iZWdpbigpLCBsdmFsLmVuZCgpKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGtleSA9PSAiRklYVFVSRVNfUkVRVUlSRUQiKSB7CisgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gIkZJWFRVUkVTX1JFUVVJUkVEIl9zKSB7CiAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbHZhbCA9IGNtRXhwYW5kZWRMaXN0KHZhbCk7CiAKICAgICAgICAgICAgIHJ0LkZpeHR1cmVzUmVxdWlyZWQuaW5zZXJ0KGx2YWwuYmVnaW4oKSwgbHZhbC5lbmQoKSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChrZXkgPT0gIlRJTUVPVVQiKSB7CisgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gIlRJTUVPVVQiX3MpIHsKICAgICAgICAgICAgIHJ0LlRpbWVvdXQgPSBjbUR1cmF0aW9uKGF0b2YodmFsLmNfc3RyKCkpKTsKICAgICAgICAgICAgIHJ0LkV4cGxpY2l0VGltZW91dCA9IHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChrZXkgPT0gIkNPU1QiKSB7CisgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gIkNPU1QiX3MpIHsKICAgICAgICAgICAgIHJ0LkNvc3QgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXRvZih2YWwuY19zdHIoKSkpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoa2V5ID09ICJSRVFVSVJFRF9GSUxFUyIpIHsKKyAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSAiUkVRVUlSRURfRklMRVMiX3MpIHsKICAgICAgICAgICAgIGNtRXhwYW5kTGlzdCh2YWwsIHJ0LlJlcXVpcmVkRmlsZXMpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoa2V5ID09ICJSVU5fU0VSSUFMIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJSVU5fU0VSSUFMIl9zKSB7CiAgICAgICAgICAgICBydC5SdW5TZXJpYWwgPSBjbUlzT24odmFsKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGtleSA9PSAiRkFJTF9SRUdVTEFSX0VYUFJFU1NJT04iKSB7CisgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gIkZBSUxfUkVHVUxBUl9FWFBSRVNTSU9OIl9zKSB7CiAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbHZhbCA9IGNtRXhwYW5kZWRMaXN0KHZhbCk7CiAgICAgICAgICAgICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBjciA6IGx2YWwpIHsKICAgICAgICAgICAgICAgcnQuRXJyb3JSZWd1bGFyRXhwcmVzc2lvbnMuZW1wbGFjZV9iYWNrKGNyLCBjcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChrZXkgPT0gIlNLSVBfUkVHVUxBUl9FWFBSRVNTSU9OIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJTS0lQX1JFR1VMQVJfRVhQUkVTU0lPTiJfcykgewogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGx2YWwgPSBjbUV4cGFuZGVkTGlzdCh2YWwpOwogICAgICAgICAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgY3IgOiBsdmFsKSB7CiAgICAgICAgICAgICAgIHJ0LlNraXBSZWd1bGFyRXhwcmVzc2lvbnMuZW1wbGFjZV9iYWNrKGNyLCBjcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChrZXkgPT0gIlBST0NFU1NPUlMiKSB7CisgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gIlBST0NFU1NPUlMiX3MpIHsKICAgICAgICAgICAgIHJ0LlByb2Nlc3NvcnMgPSBhdG9pKHZhbC5jX3N0cigpKTsKICAgICAgICAgICAgIGlmIChydC5Qcm9jZXNzb3JzIDwgMSkgewogICAgICAgICAgICAgICBydC5Qcm9jZXNzb3JzID0gMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGtleSA9PSAiUFJPQ0VTU09SX0FGRklOSVRZIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJQUk9DRVNTT1JfQUZGSU5JVFkiX3MpIHsKICAgICAgICAgICAgIHJ0LldhbnRBZmZpbml0eSA9IGNtSXNPbih2YWwpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoa2V5ID09ICJSRVNPVVJDRV9HUk9VUFMiKSB7CisgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gIlJFU09VUkNFX0dST1VQUyJfcykgewogICAgICAgICAgICAgaWYgKCFQYXJzZVJlc291cmNlR3JvdXBzUHJvcGVydHkodmFsLCBydC5SZXNvdXJjZUdyb3VwcykpIHsKICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoa2V5ID09ICJTS0lQX1JFVFVSTl9DT0RFIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJTS0lQX1JFVFVSTl9DT0RFIl9zKSB7CiAgICAgICAgICAgICBydC5Ta2lwUmV0dXJuQ29kZSA9IGF0b2kodmFsLmNfc3RyKCkpOwogICAgICAgICAgICAgaWYgKHJ0LlNraXBSZXR1cm5Db2RlIDwgMCB8fCBydC5Ta2lwUmV0dXJuQ29kZSA+IDI1NSkgewogICAgICAgICAgICAgICBydC5Ta2lwUmV0dXJuQ29kZSA9IC0xOwogICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoa2V5ID09ICJERVBFTkRTIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJERVBFTkRTIl9zKSB7CiAgICAgICAgICAgICBjbUV4cGFuZExpc3QodmFsLCBydC5EZXBlbmRzKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGtleSA9PSAiRU5WSVJPTk1FTlQiKSB7CisgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gIkVOVklST05NRU5UIl9zKSB7CiAgICAgICAgICAgICBjbUV4cGFuZExpc3QodmFsLCBydC5FbnZpcm9ubWVudCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChrZXkgPT0gIkxBQkVMUyIpIHsKKyAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSAiTEFCRUxTIl9zKSB7CiAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gTGFiZWxzID0gY21FeHBhbmRlZExpc3QodmFsKTsKICAgICAgICAgICAgIHJ0LkxhYmVscy5pbnNlcnQocnQuTGFiZWxzLmVuZCgpLCBMYWJlbHMuYmVnaW4oKSwgTGFiZWxzLmVuZCgpKTsKICAgICAgICAgICAgIC8vIHNvcnQgdGhlIGFycmF5CkBAIC0yMjc0LDggKzIyNTEsNyBAQAogICAgICAgICAgICAgLy8gcmVtb3ZlIGR1cGxpY2F0ZXMKICAgICAgICAgICAgIGF1dG8gbmV3X2VuZCA9IHN0ZDo6dW5pcXVlKHJ0LkxhYmVscy5iZWdpbigpLCBydC5MYWJlbHMuZW5kKCkpOwogICAgICAgICAgICAgcnQuTGFiZWxzLmVyYXNlKG5ld19lbmQsIHJ0LkxhYmVscy5lbmQoKSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChrZXkgPT0gIk1FQVNVUkVNRU5UIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJNRUFTVVJFTUVOVCJfcykgewogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IHZhbC5maW5kX2ZpcnN0X29mKCc9Jyk7CiAgICAgICAgICAgICBpZiAocG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7CiAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1LZXkgPSB2YWwuc3Vic3RyKDAsIHBvcyk7CkBAIC0yMjg0LDE3ICsyMjYwLDE0IEBACiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICBydC5NZWFzdXJlbWVudHNbdmFsXSA9ICIxIjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGtleSA9PSAiUEFTU19SRUdVTEFSX0VYUFJFU1NJT04iKSB7CisgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gIlBBU1NfUkVHVUxBUl9FWFBSRVNTSU9OIl9zKSB7CiAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbHZhbCA9IGNtRXhwYW5kZWRMaXN0KHZhbCk7CiAgICAgICAgICAgICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBjciA6IGx2YWwpIHsKICAgICAgICAgICAgICAgcnQuUmVxdWlyZWRSZWd1bGFyRXhwcmVzc2lvbnMuZW1wbGFjZV9iYWNrKGNyLCBjcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChrZXkgPT0gIldPUktJTkdfRElSRUNUT1JZIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJXT1JLSU5HX0RJUkVDVE9SWSJfcykgewogICAgICAgICAgICAgcnQuRGlyZWN0b3J5ID0gdmFsOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoa2V5ID09ICJUSU1FT1VUX0FGVEVSX01BVENIIikgeworICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09ICJUSU1FT1VUX0FGVEVSX01BVENIIl9zKSB7CiAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcHJvcEFyZ3MgPSBjbUV4cGFuZGVkTGlzdCh2YWwpOwogICAgICAgICAgICAgaWYgKHByb3BBcmdzLnNpemUoKSAhPSAyKSB7CiAgICAgICAgICAgICAgIGNtQ1Rlc3RMb2codGhpcy0+Q1Rlc3QsIFdBUk5JTkcsCkBAIC0yMzM0LDE2ICsyMzA3LDE2IEBACiAgIH0KICAgKytpdDsgLy8gc2tpcCBQUk9QRVJUSUVTCiAgIGZvciAoOyBpdCAhPSBhcmdzLmVuZCgpOyArK2l0KSB7Ci0gICAgc3RkOjpzdHJpbmcga2V5ID0gKml0OworICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBrZXkgPSAqaXQ7CiAgICAgKytpdDsKICAgICBpZiAoaXQgPT0gYXJncy5lbmQoKSkgewogICAgICAgYnJlYWs7CiAgICAgfQotICAgIHN0ZDo6c3RyaW5nIHZhbCA9ICppdDsKKyAgICBzdGQ6OnN0cmluZyBjb25zdCYgdmFsID0gKml0OwogICAgIGZvciAoY21DVGVzdFRlc3RQcm9wZXJ0aWVzJiBydCA6IHRoaXMtPlRlc3RMaXN0KSB7CiAgICAgICBzdGQ6OnN0cmluZyBjd2QgPSBjbVN5c3RlbVRvb2xzOjpHZXRDdXJyZW50V29ya2luZ0RpcmVjdG9yeSgpOwogICAgICAgaWYgKGN3ZCA9PSBydC5EaXJlY3RvcnkpIHsKLSAgICAgICAgaWYgKGtleSA9PSAiTEFCRUxTIikgeworICAgICAgICBpZiAoa2V5ID09ICJMQUJFTFMiX3MpIHsKICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gRGlyZWN0b3J5TGFiZWxzID0gY21FeHBhbmRlZExpc3QodmFsKTsKICAgICAgICAgICBydC5MYWJlbHMuaW5zZXJ0KHJ0LkxhYmVscy5lbmQoKSwgRGlyZWN0b3J5TGFiZWxzLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnlMYWJlbHMuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RUZXN0SGFuZGxlci5oIGIvU291cmNlL0NUZXN0L2NtQ1Rlc3RUZXN0SGFuZGxlci5oCmluZGV4IGIxYzg3NTUuLjhhNDllYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DVGVzdC9jbUNUZXN0VGVzdEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFRlc3RIYW5kbGVyLmgKQEAgLTIzNSw3ICsyMzUsNyBAQAogICB2b2lkIEF0dGFjaEZpbGVzKGNtWE1MV3JpdGVyJiB4bWwsIGNtQ1Rlc3RUZXN0UmVzdWx0JiByZXN1bHQpOwogCiAgIC8vISBDbGVhbiB0ZXN0IG91dHB1dCB0byBzcGVjaWZpZWQgbGVuZ3RoCi0gIGJvb2wgQ2xlYW5UZXN0T3V0cHV0KHN0ZDo6c3RyaW5nJiBvdXRwdXQsIHNpemVfdCBsZW5ndGgpOworICB2b2lkIENsZWFuVGVzdE91dHB1dChzdGQ6OnN0cmluZyYgb3V0cHV0LCBzaXplX3QgbGVuZ3RoKTsKIAogICBjbUR1cmF0aW9uIEVsYXBzZWRUZXN0aW5nVGltZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RWQy5jeHggYi9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFZDLmN4eAppbmRleCA2MDI2YzY5Li40NTJkNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFZDLmN4eAorKysgYi9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFZDLmN4eApAQCAtMzgsNyArMzgsNyBAQAogICB0aGlzLT5Tb3VyY2VEaXJlY3RvcnkgPSBkaXI7CiB9CiAKLWJvb2wgY21DVGVzdFZDOjpJbml0aWFsQ2hlY2tvdXQoY29uc3QgY2hhciogY29tbWFuZCkKK2Jvb2wgY21DVGVzdFZDOjpJbml0aWFsQ2hlY2tvdXQoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbW1hbmQpCiB7CiAgIGNtQ1Rlc3RMb2codGhpcy0+Q1Rlc3QsIEhBTkRMRVJfT1VUUFVULAogICAgICAgICAgICAgICIgICBGaXJzdCBwZXJmb3JtIHRoZSBpbml0aWFsIGNoZWNrb3V0OiAiIDw8IGNvbW1hbmQgPDwgIlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFZDLmggYi9Tb3VyY2UvQ1Rlc3QvY21DVGVzdFZDLmgKaW5kZXggMmE0NzY1ZC4uMzAzN2UwMSAxMDA2NDQKLS0tIGEvU291cmNlL0NUZXN0L2NtQ1Rlc3RWQy5oCisrKyBiL1NvdXJjZS9DVGVzdC9jbUNUZXN0VkMuaApAQCAtMzYsNyArMzYsNyBAQAogICBzdGQ6OnN0cmluZyBHZXROaWdodGx5VGltZSgpOwogCiAgIC8qKiBQcmVwYXJlIHRoZSB3b3JrIHRyZWUuICAqLwotICBib29sIEluaXRpYWxDaGVja291dChjb25zdCBjaGFyKiBjb21tYW5kKTsKKyAgYm9vbCBJbml0aWFsQ2hlY2tvdXQoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbW1hbmQpOwogCiAgIC8qKiBQZXJmb3JtIGNsZWFudXAgb3BlcmF0aW9ucyBvbiB0aGUgd29yayB0cmVlLiAgKi8KICAgdm9pZCBDbGVhbnVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1Rlc3QvY21QYXJzZUNhY2hlQ292ZXJhZ2UuY3h4IGIvU291cmNlL0NUZXN0L2NtUGFyc2VDYWNoZUNvdmVyYWdlLmN4eAppbmRleCA4YzRkYTc1Li4xYTVlN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1Rlc3QvY21QYXJzZUNhY2hlQ292ZXJhZ2UuY3h4CisrKyBiL1NvdXJjZS9DVGVzdC9jbVBhcnNlQ2FjaGVDb3ZlcmFnZS5jeHgKQEAgLTE5LDcgKzE5LDcgQEAKIHsKIH0KIAotYm9vbCBjbVBhcnNlQ2FjaGVDb3ZlcmFnZTo6TG9hZENvdmVyYWdlRGF0YShjb25zdCBjaGFyKiBkKQorYm9vbCBjbVBhcnNlQ2FjaGVDb3ZlcmFnZTo6TG9hZENvdmVyYWdlRGF0YShzdGQ6OnN0cmluZyBjb25zdCYgZCkKIHsKICAgLy8gbG9hZCBhbGwgdGhlIC5tY292IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5CiAgIGNtc3lzOjpEaXJlY3RvcnkgZGlyOwpAQCAtMTU1LDcgKzE1NSw3IEBACiAgICAgLy8gaWYgd2UgaGF2ZSBhIHJvdXRpbmUgbmFtZSwgY2hlY2sgZm9yIGVuZCBvZiByb3V0aW5lCiAgICAgZWxzZSB7CiAgICAgICAvLyBUb3RhbHMgaW4gYXJnIDAgbWFya3MgdGhlIGVuZCBvZiBhIHJvdXRpbmUKLSAgICAgIGlmIChzZXBhcmF0ZUxpbmVbMF0uc3Vic3RyKDAsIDYpID09ICJUb3RhbHMiKSB7CisgICAgICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KHNlcGFyYXRlTGluZVswXSwgIlRvdGFscyIpKSB7CiAgICAgICAgIHJvdXRpbmUuY2xlYXIoKTsgLy8gYXQgdGhlIGVuZCBvZiB0aGlzIHJvdXRpbmUKICAgICAgICAgZmlsZXBhdGguY2xlYXIoKTsKICAgICAgICAgY29udGludWU7IC8vIG1vdmUgdG8gbmV4dCBsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1Rlc3QvY21QYXJzZUNhY2hlQ292ZXJhZ2UuaCBiL1NvdXJjZS9DVGVzdC9jbVBhcnNlQ2FjaGVDb3ZlcmFnZS5oCmluZGV4IGU4OWI5ZTQuLjNiNTU0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DVGVzdC9jbVBhcnNlQ2FjaGVDb3ZlcmFnZS5oCisrKyBiL1NvdXJjZS9DVGVzdC9jbVBhcnNlQ2FjaGVDb3ZlcmFnZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAKIHByb3RlY3RlZDoKICAgLy8gaW1wbGVtZW50IHZpcnR1YWwgZnJvbSBwYXJlbnQKLSAgYm9vbCBMb2FkQ292ZXJhZ2VEYXRhKGNvbnN0IGNoYXIqIGRpcikgb3ZlcnJpZGU7CisgIGJvb2wgTG9hZENvdmVyYWdlRGF0YShzdGQ6OnN0cmluZyBjb25zdCYgZGlyKSBvdmVycmlkZTsKICAgLy8gcmVtb3ZlIGZpbGVzIHdpdGggbm8gY292ZXJhZ2UKICAgdm9pZCBSZW1vdmVVbkNvdmVyZWRGaWxlcygpOwogICAvLyBSZWFkIGEgc2luZ2xlIG1jb3YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0NUZXN0L2NtUGFyc2VDb2JlcnR1cmFDb3ZlcmFnZS5jeHggYi9Tb3VyY2UvQ1Rlc3QvY21QYXJzZUNvYmVydHVyYUNvdmVyYWdlLmN4eAppbmRleCAwNWRhODRlLi43MTFhODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1Rlc3QvY21QYXJzZUNvYmVydHVyYUNvdmVyYWdlLmN4eAorKysgYi9Tb3VyY2UvQ1Rlc3QvY21QYXJzZUNvYmVydHVyYUNvdmVyYWdlLmN4eApAQCAtNjcsNyArNjcsNyBAQAogICAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYW4gYWJzb2x1dGUgcGF0aCB0aGF0IGZhbGxzIHdpdGhpbiBvdXIKICAgICAgICAgICAvLyBzb3VyY2Ugb3IgYmluYXJ5IGRpcmVjdG9yaWVzLgogICAgICAgICAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGZpbGVQYXRoIDogRmlsZVBhdGhzKSB7Ci0gICAgICAgICAgICBpZiAoZmlsZW5hbWUuZmluZChmaWxlUGF0aCkgPT0gMCkgeworICAgICAgICAgICAgaWYgKGNtSGFzUHJlZml4KGZpbGVuYW1lLCBmaWxlUGF0aCkpIHsKICAgICAgICAgICAgICAgdGhpcy0+Q3VyRmlsZU5hbWUgPSBmaWxlbmFtZTsKICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1Rlc3QvY21QYXJzZUdUTUNvdmVyYWdlLmN4eCBiL1NvdXJjZS9DVGVzdC9jbVBhcnNlR1RNQ292ZXJhZ2UuY3h4CmluZGV4IDFkYzViNzAuLjE0NDE3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DVGVzdC9jbVBhcnNlR1RNQ292ZXJhZ2UuY3h4CisrKyBiL1NvdXJjZS9DVGVzdC9jbVBhcnNlR1RNQ292ZXJhZ2UuY3h4CkBAIC0xOSw3ICsxOSw3IEBACiB7CiB9CiAKLWJvb2wgY21QYXJzZUdUTUNvdmVyYWdlOjpMb2FkQ292ZXJhZ2VEYXRhKGNvbnN0IGNoYXIqIGQpCitib29sIGNtUGFyc2VHVE1Db3ZlcmFnZTo6TG9hZENvdmVyYWdlRGF0YShzdGQ6OnN0cmluZyBjb25zdCYgZCkKIHsKICAgLy8gbG9hZCBhbGwgdGhlIC5tY292IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5CiAgIGNtc3lzOjpEaXJlY3RvcnkgZGlyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0NUZXN0L2NtUGFyc2VHVE1Db3ZlcmFnZS5oIGIvU291cmNlL0NUZXN0L2NtUGFyc2VHVE1Db3ZlcmFnZS5oCmluZGV4IGZlMGFlMGIuLjQxY2M3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DVGVzdC9jbVBhcnNlR1RNQ292ZXJhZ2UuaAorKysgYi9Tb3VyY2UvQ1Rlc3QvY21QYXJzZUdUTUNvdmVyYWdlLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogcHJvdGVjdGVkOgogICAvLyBpbXBsZW1lbnQgdmlydHVhbCBmcm9tIHBhcmVudAotICBib29sIExvYWRDb3ZlcmFnZURhdGEoY29uc3QgY2hhciogZGlyKSBvdmVycmlkZTsKKyAgYm9vbCBMb2FkQ292ZXJhZ2VEYXRhKHN0ZDo6c3RyaW5nIGNvbnN0JiBkaXIpIG92ZXJyaWRlOwogICAvLyBSZWFkIGEgc2luZ2xlIG1jb3YgZmlsZQogICBib29sIFJlYWRNQ292RmlsZShjb25zdCBjaGFyKiBmKTsKICAgLy8gZmluZCBvdXQgd2hhdCBsaW5lIGluIGEgbXVtcHMgZmlsZSAoZmlsZXBhdGgpIHRoZSBnaXZlbiBlbnRyeSBwb2ludApkaWZmIC0tZ2l0IGEvU291cmNlL0NUZXN0L2NtUGFyc2VNdW1wc0NvdmVyYWdlLmN4eCBiL1NvdXJjZS9DVGVzdC9jbVBhcnNlTXVtcHNDb3ZlcmFnZS5jeHgKaW5kZXggYjE2ZjEwMS4uZGMzMDY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0NUZXN0L2NtUGFyc2VNdW1wc0NvdmVyYWdlLmN4eAorKysgYi9Tb3VyY2UvQ1Rlc3QvY21QYXJzZU11bXBzQ292ZXJhZ2UuY3h4CkBAIC0zOSw5ICszOSw5IEBACiAgICAgICBzdGQ6OnN0cmluZyB0eXBlID0gbGluZS5zdWJzdHIoMCwgcG9zKTsKICAgICAgIHN0ZDo6c3RyaW5nIHBhdGggPSBsaW5lLnN1YnN0cihwb3MgKyAxKTsKICAgICAgIGlmICh0eXBlID09ICJwYWNrYWdlcyIpIHsKLSAgICAgICAgdGhpcy0+TG9hZFBhY2thZ2VzKHBhdGguY19zdHIoKSk7CisgICAgICAgIHRoaXMtPkxvYWRQYWNrYWdlcyhwYXRoKTsKICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAiY292ZXJhZ2VfZGlyIikgewotICAgICAgICB0aGlzLT5Mb2FkQ292ZXJhZ2VEYXRhKHBhdGguY19zdHIoKSk7CisgICAgICAgIHRoaXMtPkxvYWRDb3ZlcmFnZURhdGEocGF0aCk7CiAgICAgICB9IGVsc2UgewogICAgICAgICBjbUNUZXN0TG9nKHRoaXMtPkNUZXN0LCBFUlJPUl9NRVNTQUdFLAogICAgICAgICAgICAgICAgICAgICJQYXJzZSBFcnJvciBpbiBNdW1wcyBjb3ZlcmFnZSBmaWxlIDpcbiIKQEAgLTEwNSw3ICsxMDUsNyBAQAogICB9CiB9CiAKLWJvb2wgY21QYXJzZU11bXBzQ292ZXJhZ2U6OkxvYWRQYWNrYWdlcyhjb25zdCBjaGFyKiBkKQorYm9vbCBjbVBhcnNlTXVtcHNDb3ZlcmFnZTo6TG9hZFBhY2thZ2VzKHN0ZDo6c3RyaW5nIGNvbnN0JiBkKQogewogICBjbXN5czo6R2xvYiBnbG9iOwogICBnbG9iLlJlY3Vyc2VPbigpOwpAQCAtMTEzLDcgKzExMyw4IEBACiAgIGdsb2IuRmluZEZpbGVzKHBhdCk7CiAgIGZvciAoc3RkOjpzdHJpbmcmIGZpbGUgOiBnbG9iLkdldEZpbGVzKCkpIHsKICAgICBzdGQ6OnN0cmluZyBuYW1lID0gY21TeXN0ZW1Ub29sczo6R2V0RmlsZW5hbWVOYW1lKGZpbGUpOwotICAgIHRoaXMtPlJvdXRpbmVUb0RpcmVjdG9yeVtuYW1lLnN1YnN0cigwLCBuYW1lLnNpemUoKSAtIDIpXSA9IGZpbGU7CisgICAgbmFtZS5lcmFzZShuYW1lLnNpemUoKSAtIDIpOworICAgIHRoaXMtPlJvdXRpbmVUb0RpcmVjdG9yeVtuYW1lXSA9IGZpbGU7CiAgICAgLy8gaW5pdGlhbGl6ZSBlYWNoIGZpbGUsIHRoaXMgaXMgbGVmdCBvdXQgdW50aWwgQ0Rhc2ggaXMgZml4ZWQKICAgICAvLyB0byBoYW5kbGUgbGFyZ2UgbnVtYmVycyBvZiBmaWxlcwogICAgIHRoaXMtPkluaXRpYWxpemVNdW1wc0ZpbGUoZmlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1Rlc3QvY21QYXJzZU11bXBzQ292ZXJhZ2UuaCBiL1NvdXJjZS9DVGVzdC9jbVBhcnNlTXVtcHNDb3ZlcmFnZS5oCmluZGV4IDJjNTQ0OTUuLjhjMDg3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DVGVzdC9jbVBhcnNlTXVtcHNDb3ZlcmFnZS5oCisrKyBiL1NvdXJjZS9DVGVzdC9jbVBhcnNlTXVtcHNDb3ZlcmFnZS5oCkBAIC0yOSwxMCArMjksMTAgQEAKIHByb3RlY3RlZDoKICAgLy8gc3ViIGNsYXNzZXMgd2lsbCB1c2UgdGhpcyB0bwogICAvLyBsb2FkIGFsbCBjb3ZlcmFnZSBmaWxlcyBmb3VuZCBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5Ci0gIHZpcnR1YWwgYm9vbCBMb2FkQ292ZXJhZ2VEYXRhKGNvbnN0IGNoYXIqIGQpID0gMDsKKyAgdmlydHVhbCBib29sIExvYWRDb3ZlcmFnZURhdGEoc3RkOjpzdHJpbmcgY29uc3QmIGQpID0gMDsKICAgLy8gc2VhcmNoIHRoZSBwYWNrYWdlIGRpcmVjdG9yeSBmb3IgbXVtcHMgZmlsZXMgYW5kIGZpbGwKICAgLy8gaW4gdGhlIFJvdXRpbmVUb0RpcmVjdG9yeSBtYXAKLSAgYm9vbCBMb2FkUGFja2FnZXMoY29uc3QgY2hhciogZGlyKTsKKyAgYm9vbCBMb2FkUGFja2FnZXMoc3RkOjpzdHJpbmcgY29uc3QmIGRpcik7CiAgIC8vIGluaXRpYWxpemUgdGhlIGNvdmVyYWdlIGluZm9ybWF0aW9uIGZvciBhIHNpbmdsZSBtdW1wcyBmaWxlCiAgIHZvaWQgSW5pdGlhbGl6ZU11bXBzRmlsZShzdGQ6OnN0cmluZyYgZmlsZSk7CiAgIC8vIEZpbmQgbXVtcHMgZmlsZSBmb3Igcm91dGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL0NUZXN0L2NtUGFyc2VQSFBDb3ZlcmFnZS5jeHggYi9Tb3VyY2UvQ1Rlc3QvY21QYXJzZVBIUENvdmVyYWdlLmN4eAppbmRleCBhNDk0YjkyLi4wNDRmNTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvQ1Rlc3QvY21QYXJzZVBIUENvdmVyYWdlLmN4eAorKysgYi9Tb3VyY2UvQ1Rlc3QvY21QYXJzZVBIUENvdmVyYWdlLmN4eApAQCAtMyw2ICszLDggQEAKICNpbmNsdWRlIDxjc3RkbGliPgogI2luY2x1ZGUgPGNzdHJpbmc+CiAKKyNpbmNsdWRlIDxjbS9tZW1vcnk+CisKICNpbmNsdWRlICJjbXN5cy9EaXJlY3RvcnkuaHh4IgogI2luY2x1ZGUgImNtc3lzL0ZTdHJlYW0uaHh4IgogCkBAIC0xNDIsMTcgKzE0NCwxNSBAQAogICBpbnQgc2l6ZSA9IDA7CiAgIGlmICh0aGlzLT5SZWFkSW50KGluLCBzaXplKSkgewogICAgIHNpemUrKzsgLy8gYWRkIG9uZSBmb3IgbnVsbCB0ZXJtaW5hdGlvbgotICAgIGNoYXIqIHMgPSBuZXcgY2hhcltzaXplICsgMV07CisgICAgYXV0byBzID0gY206Om1ha2VfdW5pcXVlPGNoYXJbXT4oc2l6ZSArIDEpOwogICAgIC8vIHJlYWQgb3BlbiBxdW90ZQogICAgIGlmIChpbi5nZXQoYykgJiYgYyAhPSAnIicpIHsKLSAgICAgIGRlbGV0ZVtdIHM7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIHJlYWQgdGhlIHN0cmluZyBkYXRhCi0gICAgaW4ucmVhZChzLCBzaXplIC0gMSk7CisgICAgaW4ucmVhZChzLmdldCgpLCBzaXplIC0gMSk7CiAgICAgc1tzaXplIC0gMV0gPSAwOwotICAgIHN0ZDo6c3RyaW5nIGZpbGVOYW1lID0gczsKLSAgICBkZWxldGVbXSBzOworICAgIHN0ZDo6c3RyaW5nIGZpbGVOYW1lID0gcy5nZXQoKTsKICAgICAvLyByZWFkIGNsb3NlIHF1b3RlCiAgICAgaWYgKGluLmdldChjKSAmJiBjICE9ICciJykgewogICAgICAgY21DVGVzdExvZyh0aGlzLT5DVGVzdCwgRVJST1JfTUVTU0FHRSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9DVGVzdC9jbVByb2Nlc3MuY3h4IGIvU291cmNlL0NUZXN0L2NtUHJvY2Vzcy5jeHgKaW5kZXggNjA5N2FhNS4uMjc0MmZkNyAxMDA2NDQKLS0tIGEvU291cmNlL0NUZXN0L2NtUHJvY2Vzcy5jeHgKKysrIGIvU291cmNlL0NUZXN0L2NtUHJvY2Vzcy5jeHgKQEAgLTUsNiArNSw3IEBACiAjaW5jbHVkZSA8Y3NpZ25hbD4KICNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgPGNtZXh0L2FsZ29yaXRobT4KIApAQCAtMTgsMTIgKzE5LDExIEBACiAjaWYgZGVmaW5lZChfV0lOMzIpCiAjICBpbmNsdWRlICJjbV9rd2ltbC5oIgogI2VuZGlmCi0jaW5jbHVkZSA8dXRpbGl0eT4KIAogI2RlZmluZSBDTV9QUk9DRVNTX0JVRl9TSVpFIDY1NTM2CiAKLWNtUHJvY2Vzczo6Y21Qcm9jZXNzKGNtQ1Rlc3RSdW5UZXN0JiBydW5uZXIpCi0gIDogUnVubmVyKHJ1bm5lcikKK2NtUHJvY2Vzczo6Y21Qcm9jZXNzKHN0ZDo6dW5pcXVlX3B0cjxjbUNUZXN0UnVuVGVzdD4gcnVubmVyKQorICA6IFJ1bm5lcihzdGQ6Om1vdmUocnVubmVyKSkKICAgLCBDb252KGNtUHJvY2Vzc091dHB1dDo6VVRGOCwgQ01fUFJPQ0VTU19CVUZfU0laRSkKIHsKICAgdGhpcy0+VGltZW91dCA9IGNtRHVyYXRpb246Onplcm8oKTsKQEAgLTY5LDcgKzY5LDcgQEAKICAgY206OnV2X3RpbWVyX3B0ciB0aW1lcjsKICAgaW50IHN0YXR1cyA9IHRpbWVyLmluaXQobG9vcCwgdGhpcyk7CiAgIGlmIChzdGF0dXMgIT0gMCkgewotICAgIGNtQ1Rlc3RMb2codGhpcy0+UnVubmVyLkdldENUZXN0KCksIEVSUk9SX01FU1NBR0UsCisgICAgY21DVGVzdExvZyh0aGlzLT5SdW5uZXItPkdldENUZXN0KCksIEVSUk9SX01FU1NBR0UsCiAgICAgICAgICAgICAgICAiRXJyb3IgaW5pdGlhbGl6aW5nIHRpbWVyOiAiIDw8IHV2X3N0cmVycm9yKHN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC04NCw3ICs4NCw3IEBACiAgIGludCBmZHNbMl0gPSB7IC0xLCAtMSB9OwogICBzdGF0dXMgPSBjbUdldFBpcGVzKGZkcyk7CiAgIGlmIChzdGF0dXMgIT0gMCkgewotICAgIGNtQ1Rlc3RMb2codGhpcy0+UnVubmVyLkdldENUZXN0KCksIEVSUk9SX01FU1NBR0UsCisgICAgY21DVGVzdExvZyh0aGlzLT5SdW5uZXItPkdldENUZXN0KCksIEVSUk9SX01FU1NBR0UsCiAgICAgICAgICAgICAgICAiRXJyb3IgaW5pdGlhbGl6aW5nIHBpcGU6ICIgPDwgdXZfc3RyZXJyb3Ioc3RhdHVzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI3LDcgKzEyNyw3IEBACiAgICAgdXZfcmVhZF9zdGFydChwaXBlX3JlYWRlciwgJmNtUHJvY2Vzczo6T25BbGxvY2F0ZUNCLCAmY21Qcm9jZXNzOjpPblJlYWRDQik7CiAKICAgaWYgKHN0YXR1cyAhPSAwKSB7Ci0gICAgY21DVGVzdExvZyh0aGlzLT5SdW5uZXIuR2V0Q1Rlc3QoKSwgRVJST1JfTUVTU0FHRSwKKyAgICBjbUNUZXN0TG9nKHRoaXMtPlJ1bm5lci0+R2V0Q1Rlc3QoKSwgRVJST1JfTUVTU0FHRSwKICAgICAgICAgICAgICAgICJFcnJvciBzdGFydGluZyByZWFkIGV2ZW50czogIiA8PCB1dl9zdHJlcnJvcihzdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzUsNyArMTM1LDcgQEAKIAogICBzdGF0dXMgPSB0aGlzLT5Qcm9jZXNzLnNwYXduKGxvb3AsIG9wdGlvbnMsIHRoaXMpOwogICBpZiAoc3RhdHVzICE9IDApIHsKLSAgICBjbUNUZXN0TG9nKHRoaXMtPlJ1bm5lci5HZXRDVGVzdCgpLCBFUlJPUl9NRVNTQUdFLAorICAgIGNtQ1Rlc3RMb2codGhpcy0+UnVubmVyLT5HZXRDVGVzdCgpLCBFUlJPUl9NRVNTQUdFLAogICAgICAgICAgICAgICAgIlByb2Nlc3Mgbm90IHN0YXJ0ZWRcbiAiIDw8IHRoaXMtPkNvbW1hbmQgPDwgIlxuWyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCB1dl9zdHJlcnJvcihzdGF0dXMpIDw8ICJdXG4iKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTIsNyArMTUyLDcgQEAKIAogdm9pZCBjbVByb2Nlc3M6OlN0YXJ0VGltZXIoKQogewotICBhdXRvIHByb3BlcnRpZXMgPSB0aGlzLT5SdW5uZXIuR2V0VGVzdFByb3BlcnRpZXMoKTsKKyAgYXV0byBwcm9wZXJ0aWVzID0gdGhpcy0+UnVubmVyLT5HZXRUZXN0UHJvcGVydGllcygpOwogICBhdXRvIG1zZWMgPQogICAgIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KHRoaXMtPlRpbWVvdXQpOwogCkBAIC0yMjIsNyArMjIyLDcgQEAKICAgICBjbTo6YXBwZW5kKHRoaXMtPk91dHB1dCwgc3RyZGF0YSk7CiAKICAgICB3aGlsZSAodGhpcy0+T3V0cHV0LkdldExpbmUobGluZSkpIHsKLSAgICAgIHRoaXMtPlJ1bm5lci5DaGVja091dHB1dChsaW5lKTsKKyAgICAgIHRoaXMtPlJ1bm5lci0+Q2hlY2tPdXRwdXQobGluZSk7CiAgICAgICBsaW5lLmNsZWFyKCk7CiAgICAgfQogCkBAIC0yMzYsMTMgKzIzNiwxMyBAQAogICAvLyBUaGUgcHJvY2VzcyB3aWxsIHByb3ZpZGUgbm8gbW9yZSBkYXRhLgogICBpZiAobnJlYWQgIT0gVVZfRU9GKSB7CiAgICAgYXV0byBlcnJvciA9IHN0YXRpY19jYXN0PGludD4obnJlYWQpOwotICAgIGNtQ1Rlc3RMb2codGhpcy0+UnVubmVyLkdldENUZXN0KCksIEVSUk9SX01FU1NBR0UsCisgICAgY21DVGVzdExvZyh0aGlzLT5SdW5uZXItPkdldENUZXN0KCksIEVSUk9SX01FU1NBR0UsCiAgICAgICAgICAgICAgICAiRXJyb3IgcmVhZGluZyBzdHJlYW06ICIgPDwgdXZfc3RyZXJyb3IoZXJyb3IpIDw8IHN0ZDo6ZW5kbCk7CiAgIH0KIAogICAvLyBMb29rIGZvciBwYXJ0aWFsIGxhc3QgbGluZXMuCiAgIGlmICh0aGlzLT5PdXRwdXQuR2V0TGFzdChsaW5lKSkgewotICAgIHRoaXMtPlJ1bm5lci5DaGVja091dHB1dChsaW5lKTsKKyAgICB0aGlzLT5SdW5uZXItPkNoZWNrT3V0cHV0KGxpbmUpOwogICB9CiAKICAgdGhpcy0+UmVhZEhhbmRsZUNsb3NlZCA9IHRydWU7CkBAIC0zMzksNyArMzM5LDcgQEAKICAgaWYgKHRoaXMtPlRvdGFsVGltZSA8PSBjbUR1cmF0aW9uOjp6ZXJvKCkpIHsKICAgICB0aGlzLT5Ub3RhbFRpbWUgPSBjbUR1cmF0aW9uOjp6ZXJvKCk7CiAgIH0KLSAgdGhpcy0+UnVubmVyLkZpbmFsaXplVGVzdCgpOworICB0aGlzLT5SdW5uZXItPkZpbmFsaXplVGVzdCgpOwogfQogCiBjbVByb2Nlc3M6OlN0YXRlIGNtUHJvY2Vzczo6R2V0UHJvY2Vzc1N0YXR1cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ1Rlc3QvY21Qcm9jZXNzLmggYi9Tb3VyY2UvQ1Rlc3QvY21Qcm9jZXNzLmgKaW5kZXggZWE3MmEyNi4uNTI2YzkyMCAxMDA2NDQKLS0tIGEvU291cmNlL0NUZXN0L2NtUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9DVGVzdC9jbVByb2Nlc3MuaApAQCAtNiw3ICs2LDkgQEAKICNpbmNsdWRlICJjbUNvbmZpZ3VyZS5oIiAvLyBJV1lVIHByYWdtYToga2VlcAogCiAjaW5jbHVkZSA8Y2hyb25vPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KQEAgLTI4LDcgKzMwLDcgQEAKIGNsYXNzIGNtUHJvY2VzcwogewogcHVibGljOgotICBleHBsaWNpdCBjbVByb2Nlc3MoY21DVGVzdFJ1blRlc3QmIHJ1bm5lcik7CisgIGV4cGxpY2l0IGNtUHJvY2VzcyhzdGQ6OnVuaXF1ZV9wdHI8Y21DVGVzdFJ1blRlc3Q+IHJ1bm5lcik7CiAgIH5jbVByb2Nlc3MoKTsKICAgdm9pZCBTZXRDb21tYW5kKHN0ZDo6c3RyaW5nIGNvbnN0JiBjb21tYW5kKTsKICAgdm9pZCBTZXRDb21tYW5kQXJndW1lbnRzKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjb25zdCYgYXJnKTsKQEAgLTcwLDYgKzcyLDExIEBACiAgIEV4Y2VwdGlvbiBHZXRFeGl0RXhjZXB0aW9uKCk7CiAgIHN0ZDo6c3RyaW5nIEdldEV4aXRFeGNlcHRpb25TdHJpbmcoKTsKIAorICBzdGQ6OnVuaXF1ZV9wdHI8Y21DVGVzdFJ1blRlc3Q+IEdldFJ1bm5lcigpCisgIHsKKyAgICByZXR1cm4gc3RkOjptb3ZlKHRoaXMtPlJ1bm5lcik7CisgIH0KKwogcHJpdmF0ZToKICAgY21EdXJhdGlvbiBUaW1lb3V0OwogICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50IFN0YXJ0VGltZTsKQEAgLTgyLDcgKzg5LDcgQEAKICAgY206OnV2X3RpbWVyX3B0ciBUaW1lcjsKICAgc3RkOjp2ZWN0b3I8Y2hhcj4gQnVmOwogCi0gIGNtQ1Rlc3RSdW5UZXN0JiBSdW5uZXI7CisgIHN0ZDo6dW5pcXVlX3B0cjxjbUNUZXN0UnVuVGVzdD4gUnVubmVyOwogICBjbVByb2Nlc3NPdXRwdXQgQ29udjsKICAgaW50IFNpZ25hbCA9IDA7CiAgIGNtUHJvY2Vzczo6U3RhdGUgUHJvY2Vzc1N0YXRlID0gY21Qcm9jZXNzOjpTdGF0ZTo6U3RhcnRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvQ3Vyc2VzRGlhbG9nL2NjbWFrZS5jeHggYi9Tb3VyY2UvQ3Vyc2VzRGlhbG9nL2NjbWFrZS5jeHgKaW5kZXggMDFmY2U4NS4uOWEyNmRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0N1cnNlc0RpYWxvZy9jY21ha2UuY3h4CisrKyBiL1NvdXJjZS9DdXJzZXNEaWFsb2cvY2NtYWtlLmN4eApAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgImNtRG9jdW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgImNtRG9jdW1lbnRhdGlvbkVudHJ5LmgiIC8vIElXWVUgcHJhZ21hOiBrZWVwCiAjaW5jbHVkZSAiY21TdGF0ZS5oIgorI2luY2x1ZGUgImNtU3RyaW5nQWxnb3JpdGhtcy5oIgogI2luY2x1ZGUgImNtU3lzdGVtVG9vbHMuaCIKICNpbmNsdWRlICJjbWFrZS5oIgogCkBAIC0xMTEsOCArMTEyLDggQEAKIAogICBzdGQ6OnN0cmluZyBjYWNoZURpciA9IGNtU3lzdGVtVG9vbHM6OkdldEN1cnJlbnRXb3JraW5nRGlyZWN0b3J5KCk7CiAgIGZvciAoaSA9IDE7IGkgPCBhcmdzLnNpemUoKTsgKytpKSB7Ci0gICAgc3RkOjpzdHJpbmcgYXJnID0gYXJnc1tpXTsKLSAgICBpZiAoYXJnLmZpbmQoIi1CIiwgMCkgPT0gMCkgeworICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBhcmcgPSBhcmdzW2ldOworICAgIGlmIChjbUhhc1ByZWZpeChhcmcsICItQiIpKSB7CiAgICAgICBjYWNoZURpciA9IGFyZy5zdWJzdHIoMik7CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvQ3Vyc2VzRGlhbG9nL2NtQ3Vyc2VzQ2FjaGVFbnRyeUNvbXBvc2l0ZS5jeHggYi9Tb3VyY2UvQ3Vyc2VzRGlhbG9nL2NtQ3Vyc2VzQ2FjaGVFbnRyeUNvbXBvc2l0ZS5jeHgKaW5kZXggNGQzMTMxYi4uOTI1MGZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0N1cnNlc0RpYWxvZy9jbUN1cnNlc0NhY2hlRW50cnlDb21wb3NpdGUuY3h4CisrKyBiL1NvdXJjZS9DdXJzZXNEaWFsb2cvY21DdXJzZXNDYWNoZUVudHJ5Q29tcG9zaXRlLmN4eApAQCAtNDgsNDIgKzQ4LDQyIEBACiAgICAgdGhpcy0+SXNOZXdMYWJlbCA9IGNtOjptYWtlX3VuaXF1ZTxjbUN1cnNlc0xhYmVsV2lkZ2V0PigxLCAxLCAxLCAxLCAiICIpOwogICB9CiAKLSAgY29uc3QgY2hhciogdmFsdWUgPSBzdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKGtleSk7CisgIGNtUHJvcCB2YWx1ZSA9IHN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUoa2V5KTsKICAgYXNzZXJ0KHZhbHVlKTsKICAgc3dpdGNoIChzdGF0ZS0+R2V0Q2FjaGVFbnRyeVR5cGUoa2V5KSkgewogICAgIGNhc2UgY21TdGF0ZUVudW1zOjpCT09MOiB7CiAgICAgICBhdXRvIGJ3ID0gY206Om1ha2VfdW5pcXVlPGNtQ3Vyc2VzQm9vbFdpZGdldD4odGhpcy0+RW50cnlXaWR0aCwgMSwgMSwgMSk7Ci0gICAgICBidy0+U2V0VmFsdWVBc0Jvb2woY21Jc09uKHZhbHVlKSk7CisgICAgICBidy0+U2V0VmFsdWVBc0Jvb2woY21Jc09uKCp2YWx1ZSkpOwogICAgICAgdGhpcy0+RW50cnkgPSBzdGQ6Om1vdmUoYncpOwogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgY21TdGF0ZUVudW1zOjpQQVRIOiB7CiAgICAgICBhdXRvIHB3ID0gY206Om1ha2VfdW5pcXVlPGNtQ3Vyc2VzUGF0aFdpZGdldD4odGhpcy0+RW50cnlXaWR0aCwgMSwgMSwgMSk7Ci0gICAgICBwdy0+U2V0U3RyaW5nKHZhbHVlKTsKKyAgICAgIHB3LT5TZXRTdHJpbmcoKnZhbHVlKTsKICAgICAgIHRoaXMtPkVudHJ5ID0gc3RkOjptb3ZlKHB3KTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIGNtU3RhdGVFbnVtczo6RklMRVBBVEg6IHsKICAgICAgIGF1dG8gZnB3ID0KICAgICAgICAgY206Om1ha2VfdW5pcXVlPGNtQ3Vyc2VzRmlsZVBhdGhXaWRnZXQ+KHRoaXMtPkVudHJ5V2lkdGgsIDEsIDEsIDEpOwotICAgICAgZnB3LT5TZXRTdHJpbmcodmFsdWUpOworICAgICAgZnB3LT5TZXRTdHJpbmcoKnZhbHVlKTsKICAgICAgIHRoaXMtPkVudHJ5ID0gc3RkOjptb3ZlKGZwdyk7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBjbVN0YXRlRW51bXM6OlNUUklORzogewotICAgICAgY29uc3QgY2hhciogc3RyaW5nc1Byb3AgPSBzdGF0ZS0+R2V0Q2FjaGVFbnRyeVByb3BlcnR5KGtleSwgIlNUUklOR1MiKTsKKyAgICAgIGNtUHJvcCBzdHJpbmdzUHJvcCA9IHN0YXRlLT5HZXRDYWNoZUVudHJ5UHJvcGVydHkoa2V5LCAiU1RSSU5HUyIpOwogICAgICAgaWYgKHN0cmluZ3NQcm9wKSB7CiAgICAgICAgIGF1dG8gb3cgPQogICAgICAgICAgIGNtOjptYWtlX3VuaXF1ZTxjbUN1cnNlc09wdGlvbnNXaWRnZXQ+KHRoaXMtPkVudHJ5V2lkdGgsIDEsIDEsIDEpOwotICAgICAgICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBvcHQgOiBjbUV4cGFuZGVkTGlzdChzdHJpbmdzUHJvcCkpIHsKKyAgICAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgb3B0IDogY21FeHBhbmRlZExpc3QoKnN0cmluZ3NQcm9wKSkgewogICAgICAgICAgIG93LT5BZGRPcHRpb24ob3B0KTsKICAgICAgICAgfQotICAgICAgICBvdy0+U2V0T3B0aW9uKHZhbHVlKTsKKyAgICAgICAgb3ctPlNldE9wdGlvbigqdmFsdWUpOwogICAgICAgICB0aGlzLT5FbnRyeSA9IHN0ZDo6bW92ZShvdyk7CiAgICAgICB9IGVsc2UgewogICAgICAgICBhdXRvIHN3ID0KICAgICAgICAgICBjbTo6bWFrZV91bmlxdWU8Y21DdXJzZXNTdHJpbmdXaWRnZXQ+KHRoaXMtPkVudHJ5V2lkdGgsIDEsIDEsIDEpOwotICAgICAgICBzdy0+U2V0U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc3ctPlNldFN0cmluZygqdmFsdWUpOwogICAgICAgICB0aGlzLT5FbnRyeSA9IHN0ZDo6bW92ZShzdyk7CiAgICAgICB9CiAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9DdXJzZXNEaWFsb2cvY21DdXJzZXNNYWluRm9ybS5jeHggYi9Tb3VyY2UvQ3Vyc2VzRGlhbG9nL2NtQ3Vyc2VzTWFpbkZvcm0uY3h4CmluZGV4IDJjOTI4MzUuLjc3NTJhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DdXJzZXNEaWFsb2cvY21DdXJzZXNNYWluRm9ybS5jeHgKKysrIGIvU291cmNlL0N1cnNlc0RpYWxvZy9jbUN1cnNlc01haW5Gb3JtLmN4eApAQCAtMTYxLDcgKzE2MSw3IEBACiAgICAgLy8gSWYgbm9ybWFsIG1vZGUsIGNvdW50IG9ubHkgbm9uLWFkdmFuY2VkIGVudHJpZXMKICAgICB0aGlzLT5OdW1iZXJPZlZpc2libGVFbnRyaWVzID0gMDsKICAgICBmb3IgKGNtQ3Vyc2VzQ2FjaGVFbnRyeUNvbXBvc2l0ZSYgZW50cnkgOiB0aGlzLT5FbnRyaWVzKSB7Ci0gICAgICBjb25zdCBjaGFyKiBleGlzdGluZ1ZhbHVlID0KKyAgICAgIGNtUHJvcCBleGlzdGluZ1ZhbHVlID0KICAgICAgICAgdGhpcy0+Q01ha2VJbnN0YW5jZS0+R2V0U3RhdGUoKS0+R2V0Q2FjaGVFbnRyeVZhbHVlKGVudHJ5LkdldFZhbHVlKCkpOwogICAgICAgYm9vbCBhZHZhbmNlZCA9CiAgICAgICAgIHRoaXMtPkNNYWtlSW5zdGFuY2UtPkdldFN0YXRlKCktPkdldENhY2hlRW50cnlQcm9wZXJ0eUFzQm9vbCgKQEAgLTE4Miw3ICsxODIsNyBAQAogCiAgIC8vIEFzc2lnbiBmaWVsZHMKICAgZm9yIChjbUN1cnNlc0NhY2hlRW50cnlDb21wb3NpdGUmIGVudHJ5IDogdGhpcy0+RW50cmllcykgewotICAgIGNvbnN0IGNoYXIqIGV4aXN0aW5nVmFsdWUgPQorICAgIGNtUHJvcCBleGlzdGluZ1ZhbHVlID0KICAgICAgIHRoaXMtPkNNYWtlSW5zdGFuY2UtPkdldFN0YXRlKCktPkdldENhY2hlRW50cnlWYWx1ZShlbnRyeS5HZXRWYWx1ZSgpKTsKICAgICBib29sIGFkdmFuY2VkID0KICAgICAgIHRoaXMtPkNNYWtlSW5zdGFuY2UtPkdldFN0YXRlKCktPkdldENhY2hlRW50cnlQcm9wZXJ0eUFzQm9vbCgKQEAgLTI0MSw3ICsyNDEsNyBAQAogICAgIC8vIElmIG5vcm1hbCwgZGlzcGxheSBvbmx5IG5vbi1hZHZhbmNlZCBlbnRyaWVzCiAgICAgdGhpcy0+TnVtYmVyT2ZWaXNpYmxlRW50cmllcyA9IDA7CiAgICAgZm9yIChjbUN1cnNlc0NhY2hlRW50cnlDb21wb3NpdGUmIGVudHJ5IDogdGhpcy0+RW50cmllcykgewotICAgICAgY29uc3QgY2hhciogZXhpc3RpbmdWYWx1ZSA9CisgICAgICBjbVByb3AgZXhpc3RpbmdWYWx1ZSA9CiAgICAgICAgIHRoaXMtPkNNYWtlSW5zdGFuY2UtPkdldFN0YXRlKCktPkdldENhY2hlRW50cnlWYWx1ZShlbnRyeS5HZXRWYWx1ZSgpKTsKICAgICAgIGJvb2wgYWR2YW5jZWQgPQogICAgICAgICB0aGlzLT5DTWFrZUluc3RhbmNlLT5HZXRTdGF0ZSgpLT5HZXRDYWNoZUVudHJ5UHJvcGVydHlBc0Jvb2woCkBAIC0yNTksNyArMjU5LDcgQEAKICAgICBib29sIGlzTmV3UGFnZTsKICAgICBpbnQgaSA9IDA7CiAgICAgZm9yIChjbUN1cnNlc0NhY2hlRW50cnlDb21wb3NpdGUmIGVudHJ5IDogdGhpcy0+RW50cmllcykgewotICAgICAgY29uc3QgY2hhciogZXhpc3RpbmdWYWx1ZSA9CisgICAgICBjbVByb3AgZXhpc3RpbmdWYWx1ZSA9CiAgICAgICAgIHRoaXMtPkNNYWtlSW5zdGFuY2UtPkdldFN0YXRlKCktPkdldENhY2hlRW50cnlWYWx1ZShlbnRyeS5HZXRWYWx1ZSgpKTsKICAgICAgIGJvb2wgYWR2YW5jZWQgPQogICAgICAgICB0aGlzLT5DTWFrZUluc3RhbmNlLT5HZXRTdGF0ZSgpLT5HZXRDYWNoZUVudHJ5UHJvcGVydHlBc0Jvb2woCkBAIC00MDUsMTEgKzQwNSwxMiBAQAogICAgIC8vIEdldCB0aGUgaGVscCBzdHJpbmcgb2YgdGhlIGN1cnJlbnQgZW50cnkKICAgICAvLyBhbmQgYWRkIGl0IHRvIHRoZSBoZWxwIHN0cmluZwogICAgIGF1dG8gY21ha2VTdGF0ZSA9IHRoaXMtPkNNYWtlSW5zdGFuY2UtPkdldFN0YXRlKCk7Ci0gICAgY29uc3QgY2hhciogZXhpc3RpbmdWYWx1ZSA9IGNtYWtlU3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZShsYWJlbFZhbHVlKTsKKyAgICBjbVByb3AgZXhpc3RpbmdWYWx1ZSA9IGNtYWtlU3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZShsYWJlbFZhbHVlKTsKICAgICBpZiAoZXhpc3RpbmdWYWx1ZSkgewotICAgICAgYXV0byBoZWxwID0gY21ha2VTdGF0ZS0+R2V0Q2FjaGVFbnRyeVByb3BlcnR5KGxhYmVsVmFsdWUsICJIRUxQU1RSSU5HIik7CisgICAgICBjbVByb3AgaGVscCA9CisgICAgICAgIGNtYWtlU3RhdGUtPkdldENhY2hlRW50cnlQcm9wZXJ0eShsYWJlbFZhbHVlLCAiSEVMUFNUUklORyIpOwogICAgICAgaWYgKGhlbHApIHsKLSAgICAgICAgYmFyICs9IGhlbHA7CisgICAgICAgIGJhciArPSAqaGVscDsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTYxNiwxMCArNjE3LDEwIEBACiB7CiAgIGZvciAoY21DdXJzZXNDYWNoZUVudHJ5Q29tcG9zaXRlJiBlbnRyeSA6IHRoaXMtPkVudHJpZXMpIHsKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY2FjaGVLZXkgPSBlbnRyeS5LZXk7Ci0gICAgY29uc3QgY2hhciogZXhpc3RpbmdWYWx1ZSA9CisgICAgY21Qcm9wIGV4aXN0aW5nVmFsdWUgPQogICAgICAgdGhpcy0+Q01ha2VJbnN0YW5jZS0+R2V0U3RhdGUoKS0+R2V0Q2FjaGVFbnRyeVZhbHVlKGNhY2hlS2V5KTsKICAgICBpZiAoZXhpc3RpbmdWYWx1ZSkgewotICAgICAgc3RkOjpzdHJpbmcgb2xkVmFsdWUgPSBleGlzdGluZ1ZhbHVlOworICAgICAgc3RkOjpzdHJpbmcgb2xkVmFsdWUgPSAqZXhpc3RpbmdWYWx1ZTsKICAgICAgIHN0ZDo6c3RyaW5nIG5ld1ZhbHVlID0gZW50cnkuRW50cnktPkdldFZhbHVlKCk7CiAgICAgICBzdGQ6OnN0cmluZyBmaXhlZE9sZFZhbHVlOwogICAgICAgc3RkOjpzdHJpbmcgZml4ZWROZXdWYWx1ZTsKQEAgLTgwMiw5ICs4MDMsOSBAQAogICAgICAgICBjbUN1cnNlc1dpZGdldCogbGJsID0gcmVpbnRlcnByZXRfY2FzdDxjbUN1cnNlc1dpZGdldCo+KAogICAgICAgICAgIGZpZWxkX3VzZXJwdHIodGhpcy0+RmllbGRzW2ZpbmRleCAtIDJdKSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGN1ckZpZWxkID0gbGJsLT5HZXRWYWx1ZSgpOwotICAgICAgICBjb25zdCBjaGFyKiBoZWxwU3RyaW5nID0gbnVsbHB0cjsKKyAgICAgICAgY21Qcm9wIGhlbHBTdHJpbmcgPSBudWxscHRyOwogCi0gICAgICAgIGNvbnN0IGNoYXIqIGV4aXN0aW5nVmFsdWUgPQorICAgICAgICBjbVByb3AgZXhpc3RpbmdWYWx1ZSA9CiAgICAgICAgICAgdGhpcy0+Q01ha2VJbnN0YW5jZS0+R2V0U3RhdGUoKS0+R2V0Q2FjaGVFbnRyeVZhbHVlKGN1ckZpZWxkKTsKICAgICAgICAgaWYgKGV4aXN0aW5nVmFsdWUpIHsKICAgICAgICAgICBoZWxwU3RyaW5nID0gdGhpcy0+Q01ha2VJbnN0YW5jZS0+R2V0U3RhdGUoKS0+R2V0Q2FjaGVFbnRyeVByb3BlcnR5KApAQCAtODEzLDcgKzgxNCw3IEBACiAgICAgICAgIGlmIChoZWxwU3RyaW5nKSB7CiAgICAgICAgICAgdGhpcy0+SGVscE1lc3NhZ2VbMV0gPQogICAgICAgICAgICAgY21TdHJDYXQoIkN1cnJlbnQgb3B0aW9uIGlzOiAiLCBjdXJGaWVsZCwgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICJIZWxwIHN0cmluZyBmb3IgdGhpcyBvcHRpb24gaXM6ICIsIGhlbHBTdHJpbmcsICdcbicpOworICAgICAgICAgICAgICAgICAgICAgIkhlbHAgc3RyaW5nIGZvciB0aGlzIG9wdGlvbiBpczogIiwgKmhlbHBTdHJpbmcsICdcbicpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgIHRoaXMtPkhlbHBNZXNzYWdlWzFdID0gIiI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9MZXhlclBhcnNlci9jbUxpc3RGaWxlTGV4ZXIuYyBiL1NvdXJjZS9MZXhlclBhcnNlci9jbUxpc3RGaWxlTGV4ZXIuYwppbmRleCAxNWRjZGEwLi5lYzc0MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvTGV4ZXJQYXJzZXIvY21MaXN0RmlsZUxleGVyLmMKKysrIGIvU291cmNlL0xleGVyUGFyc2VyL2NtTGlzdEZpbGVMZXhlci5jCkBAIC0yNzg3LDcgKzI3ODcsNyBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiBjbUxpc3RGaWxlTGV4ZXJfVG9rZW4qIGNtTGlzdEZpbGVMZXhlcl9TY2FuKGNtTGlzdEZpbGVMZXhlciogbGV4ZXIpCiB7Ci0gIGlmICghbGV4ZXItPmZpbGUpIHsKKyAgaWYgKCFsZXhlci0+ZmlsZSAmJiAhbGV4ZXItPnN0cmluZ19idWZmZXIpIHsKICAgICByZXR1cm4gMDsKICAgfQogICBpZiAoY21MaXN0RmlsZUxleGVyX3l5bGV4KGxleGVyLT5zY2FubmVyLCBsZXhlcikpIHsKQEAgLTI4MDEsMjEgKzI4MDEsMTMgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogbG9uZyBjbUxpc3RGaWxlTGV4ZXJfR2V0Q3VycmVudExpbmUoY21MaXN0RmlsZUxleGVyKiBsZXhlcikKIHsKLSAgaWYgKGxleGVyLT5maWxlKSB7Ci0gICAgcmV0dXJuIGxleGVyLT5saW5lOwotICB9IGVsc2UgewotICAgIHJldHVybiAwOwotICB9CisgIHJldHVybiBsZXhlci0+bGluZTsKIH0KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiBsb25nIGNtTGlzdEZpbGVMZXhlcl9HZXRDdXJyZW50Q29sdW1uKGNtTGlzdEZpbGVMZXhlciogbGV4ZXIpCiB7Ci0gIGlmIChsZXhlci0+ZmlsZSkgewotICAgIHJldHVybiBsZXhlci0+Y29sdW1uOwotICB9IGVsc2UgewotICAgIHJldHVybiAwOwotICB9CisgIHJldHVybiBsZXhlci0+Y29sdW1uOwogfQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9MZXhlclBhcnNlci9jbUxpc3RGaWxlTGV4ZXIuaW4ubCBiL1NvdXJjZS9MZXhlclBhcnNlci9jbUxpc3RGaWxlTGV4ZXIuaW4ubAppbmRleCBmZGYxNGQyLi45NGNmOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvTGV4ZXJQYXJzZXIvY21MaXN0RmlsZUxleGVyLmluLmwKKysrIGIvU291cmNlL0xleGVyUGFyc2VyL2NtTGlzdEZpbGVMZXhlci5pbi5sCkBAIC01MDAsNyArNTAwLDcgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogY21MaXN0RmlsZUxleGVyX1Rva2VuKiBjbUxpc3RGaWxlTGV4ZXJfU2NhbihjbUxpc3RGaWxlTGV4ZXIqIGxleGVyKQogewotICBpZiAoIWxleGVyLT5maWxlKSB7CisgIGlmICghbGV4ZXItPmZpbGUgJiYgIWxleGVyLT5zdHJpbmdfYnVmZmVyKSB7CiAgICAgcmV0dXJuIDA7CiAgIH0KICAgaWYgKGNtTGlzdEZpbGVMZXhlcl95eWxleChsZXhlci0+c2Nhbm5lciwgbGV4ZXIpKSB7CkBAIC01MTQsMjEgKzUxNCwxMyBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiBsb25nIGNtTGlzdEZpbGVMZXhlcl9HZXRDdXJyZW50TGluZShjbUxpc3RGaWxlTGV4ZXIqIGxleGVyKQogewotICBpZiAobGV4ZXItPmZpbGUpIHsKLSAgICByZXR1cm4gbGV4ZXItPmxpbmU7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KKyAgcmV0dXJuIGxleGVyLT5saW5lOwogfQogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIGxvbmcgY21MaXN0RmlsZUxleGVyX0dldEN1cnJlbnRDb2x1bW4oY21MaXN0RmlsZUxleGVyKiBsZXhlcikKIHsKLSAgaWYgKGxleGVyLT5maWxlKSB7Ci0gICAgcmV0dXJuIGxleGVyLT5jb2x1bW47Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KKyAgcmV0dXJuIGxleGVyLT5jb2x1bW47CiB9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpkaWZmIC0tZ2l0IGEvU291cmNlL1F0RGlhbG9nL0NNYWtlU2V0dXAuY3h4IGIvU291cmNlL1F0RGlhbG9nL0NNYWtlU2V0dXAuY3h4CmluZGV4IGVlODFhN2QuLjlkOTI4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9RdERpYWxvZy9DTWFrZVNldHVwLmN4eAorKysgYi9Tb3VyY2UvUXREaWFsb2cvQ01ha2VTZXR1cC5jeHgKQEAgLTIwMSw4ICsyMDEsNyBAQAogICAgICAgICBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKGFyZ3NbMV0udG9Mb2NhbDhCaXQoKS5kYXRhKCkpOwogCiAgICAgICAvLyBjaGVjayBpZiBhcmd1bWVudCBpcyBhIGRpcmVjdG9yeSBjb250YWluaW5nIENNYWtlQ2FjaGUudHh0Ci0gICAgICBzdGQ6OnN0cmluZyBidWlsZEZpbGVQYXRoID0KLSAgICAgICAgY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aCgiQ01ha2VDYWNoZS50eHQiLCBmaWxlUGF0aC5jX3N0cigpKTsKKyAgICAgIHN0ZDo6c3RyaW5nIGJ1aWxkRmlsZVBhdGggPSBjbVN0ckNhdChmaWxlUGF0aCwgIi9DTWFrZUNhY2hlLnR4dCIpOwogCiAgICAgICAvLyBjaGVjayBpZiBhcmd1bWVudCBpcyBhIENNYWtlQ2FjaGUudHh0IGZpbGUKICAgICAgIGlmIChjbVN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZU5hbWUoZmlsZVBhdGgpID09ICJDTWFrZUNhY2hlLnR4dCIgJiYKQEAgLTIxMSw4ICsyMTAsNyBAQAogICAgICAgfQogCiAgICAgICAvLyBjaGVjayBpZiBhcmd1bWVudCBpcyBhIGRpcmVjdG9yeSBjb250YWluaW5nIENNYWtlTGlzdHMudHh0Ci0gICAgICBzdGQ6OnN0cmluZyBzcmNGaWxlUGF0aCA9Ci0gICAgICAgIGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgoIkNNYWtlTGlzdHMudHh0IiwgZmlsZVBhdGguY19zdHIoKSk7CisgICAgICBzdGQ6OnN0cmluZyBzcmNGaWxlUGF0aCA9IGNtU3RyQ2F0KGZpbGVQYXRoLCAiL0NNYWtlTGlzdHMudHh0Iik7CiAKICAgICAgIGlmIChjbVN5c3RlbVRvb2xzOjpGaWxlRXhpc3RzKGJ1aWxkRmlsZVBhdGguY19zdHIoKSkpIHsKICAgICAgICAgZGlhbG9nLnNldEJpbmFyeURpcmVjdG9yeShRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KApkaWZmIC0tZ2l0IGEvU291cmNlL1F0RGlhbG9nL0NNYWtlU2V0dXBEaWFsb2cuY3h4IGIvU291cmNlL1F0RGlhbG9nL0NNYWtlU2V0dXBEaWFsb2cuY3h4CmluZGV4IDQzNmE5MDQuLjI3NmJmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9RdERpYWxvZy9DTWFrZVNldHVwRGlhbG9nLmN4eAorKysgYi9Tb3VyY2UvUXREaWFsb2cvQ01ha2VTZXR1cERpYWxvZy5jeHgKQEAgLTIsNiArMiw4IEBACiAgICBmaWxlIENvcHlyaWdodC50eHQgb3IgaHR0cHM6Ly9jbWFrZS5vcmcvbGljZW5zaW5nIGZvciBkZXRhaWxzLiAgKi8KICNpbmNsdWRlICJDTWFrZVNldHVwRGlhbG9nLmgiCiAKKyNpbmNsdWRlIDxjbS9tZW1vcnk+CisKICNpbmNsdWRlIDxRQ2xvc2VFdmVudD4KICNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFEZXNrdG9wU2VydmljZXM+CkBAIC0zOSwyMyArNDEsMjEgQEAKIAogUUNNYWtlVGhyZWFkOjpRQ01ha2VUaHJlYWQoUU9iamVjdCogcCkKICAgOiBRVGhyZWFkKHApCi0gICwgQ01ha2VJbnN0YW5jZShudWxscHRyKQogewogfQogCiBRQ01ha2UqIFFDTWFrZVRocmVhZDo6Y21ha2VJbnN0YW5jZSgpIGNvbnN0CiB7Ci0gIHJldHVybiB0aGlzLT5DTWFrZUluc3RhbmNlOworICByZXR1cm4gdGhpcy0+Q01ha2VJbnN0YW5jZS5nZXQoKTsKIH0KIAogdm9pZCBRQ01ha2VUaHJlYWQ6OnJ1bigpCiB7Ci0gIHRoaXMtPkNNYWtlSW5zdGFuY2UgPSBuZXcgUUNNYWtlOworICB0aGlzLT5DTWFrZUluc3RhbmNlID0gY206Om1ha2VfdW5pcXVlPFFDTWFrZT4oKTsKICAgLy8gZW1pdCB0aGF0IHRoaXMgY21ha2UgdGhyZWFkIGlzIHJlYWR5IGZvciB1c2UKICAgZW1pdCB0aGlzLT5jbWFrZUluaXRpYWxpemVkKCk7CiAgIHRoaXMtPmV4ZWMoKTsKLSAgZGVsZXRlIHRoaXMtPkNNYWtlSW5zdGFuY2U7Ci0gIHRoaXMtPkNNYWtlSW5zdGFuY2UgPSBudWxscHRyOworICB0aGlzLT5DTWFrZUluc3RhbmNlLnJlc2V0KCk7CiB9CiAKIENNYWtlU2V0dXBEaWFsb2c6OkNNYWtlU2V0dXBEaWFsb2coKQpAQCAtMTIwNiw3ICsxMjA2LDcgQEAKIAogdm9pZCBDTWFrZVNldHVwRGlhbG9nOjpkb091dHB1dENvbnRleHRNZW51KFFQb2ludCBwdCkKIHsKLSAgUU1lbnUqIG1lbnUgPSB0aGlzLT5PdXRwdXQtPmNyZWF0ZVN0YW5kYXJkQ29udGV4dE1lbnUoKTsKKyAgc3RkOjp1bmlxdWVfcHRyPFFNZW51PiBtZW51KHRoaXMtPk91dHB1dC0+Y3JlYXRlU3RhbmRhcmRDb250ZXh0TWVudSgpKTsKIAogICBtZW51LT5hZGRTZXBhcmF0b3IoKTsKICAgbWVudS0+YWRkQWN0aW9uKHRyKCJGaW5kLi4uIiksIHRoaXMsIFNMT1QoZG9PdXRwdXRGaW5kRGlhbG9nKCkpLApAQCAtMTIyMCw3ICsxMjIwLDYgQEAKICAgICAgICAgICAgICAgICAgIFFLZXlTZXF1ZW5jZShRdDo6S2V5X0Y4KSk7CiAKICAgbWVudS0+ZXhlYyh0aGlzLT5PdXRwdXQtPm1hcFRvR2xvYmFsKHB0KSk7Ci0gIGRlbGV0ZSBtZW51OwogfQogCiB2b2lkIENNYWtlU2V0dXBEaWFsb2c6OmRvT3V0cHV0RmluZERpYWxvZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvUXREaWFsb2cvQ01ha2VTZXR1cERpYWxvZy5oIGIvU291cmNlL1F0RGlhbG9nL0NNYWtlU2V0dXBEaWFsb2cuaAppbmRleCBmMjNhZWU2Li5kMWUyMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUXREaWFsb2cvQ01ha2VTZXR1cERpYWxvZy5oCisrKyBiL1NvdXJjZS9RdERpYWxvZy9DTWFrZVNldHVwRGlhbG9nLmgKQEAgLTMsNiArMyw4IEBACiAjaWZuZGVmIENNYWtlU2V0dXBEaWFsb2dfaAogI2RlZmluZSBDTWFrZVNldHVwRGlhbG9nX2gKIAorI2luY2x1ZGUgPG1lbW9yeT4KKwogI2luY2x1ZGUgIlFDTWFrZS5oIgogI2luY2x1ZGUgPFFFdmVudExvb3A+CiAjaW5jbHVkZSA8UU1haW5XaW5kb3c+CkBAIC0xNDMsNyArMTQ1LDcgQEAKIAogcHJvdGVjdGVkOgogICB2aXJ0dWFsIHZvaWQgcnVuKCk7Ci0gIFFDTWFrZSogQ01ha2VJbnN0YW5jZTsKKyAgc3RkOjp1bmlxdWVfcHRyPFFDTWFrZT4gQ01ha2VJbnN0YW5jZTsKIH07CiAKICNlbmRpZiAvLyBDTWFrZVNldHVwRGlhbG9nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9RdERpYWxvZy9GaXJzdENvbmZpZ3VyZS5jeHggYi9Tb3VyY2UvUXREaWFsb2cvRmlyc3RDb25maWd1cmUuY3h4CmluZGV4IGNhMjhiMTkuLjNjMjRiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9RdERpYWxvZy9GaXJzdENvbmZpZ3VyZS5jeHgKKysrIGIvU291cmNlL1F0RGlhbG9nL0ZpcnN0Q29uZmlndXJlLmN4eApAQCAtMTAsOCArMTAsMTIgQEAKIAogI2luY2x1ZGUgIkNvbXBpbGVycy5oIgogCi1TdGFydENvbXBpbGVyU2V0dXA6OlN0YXJ0Q29tcGlsZXJTZXR1cChRV2lkZ2V0KiBwKQorU3RhcnRDb21waWxlclNldHVwOjpTdGFydENvbXBpbGVyU2V0dXAoUVN0cmluZyBkZWZhdWx0R2VuZXJhdG9yUGxhdGZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGRlZmF1bHRHZW5lcmF0b3JUb29sc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVdpZGdldCogcCkKICAgOiBRV2l6YXJkUGFnZShwKQorICAsIERlZmF1bHRHZW5lcmF0b3JQbGF0Zm9ybShzdGQ6Om1vdmUoZGVmYXVsdEdlbmVyYXRvclBsYXRmb3JtKSkKKyAgLCBEZWZhdWx0R2VuZXJhdG9yVG9vbHNldChzdGQ6Om1vdmUoZGVmYXVsdEdlbmVyYXRvclRvb2xzZXQpKQogewogICBRVkJveExheW91dCogbCA9IG5ldyBRVkJveExheW91dCh0aGlzKTsKICAgbC0+YWRkV2lkZ2V0KG5ldyBRTGFiZWwodHIoIlNwZWNpZnkgdGhlIGdlbmVyYXRvciBmb3IgdGhpcyBwcm9qZWN0IikpKTsKQEAgLTY4LDYgKzcyLDEwIEBACiAgIFRvb2xzZXQgPSBuZXcgUUxpbmVFZGl0KGZyYW1lKTsKICAgbC0+YWRkV2lkZ2V0KFRvb2xzZXQpOwogCisgIC8vIERlZmF1bHQgdG8gQ01BS0VfR0VORVJBVE9SX1RPT0xTRVQgZW52IHZhciBpZiBzZXQKKyAgaWYgKCFEZWZhdWx0R2VuZXJhdG9yVG9vbHNldC5pc0VtcHR5KCkpIHsKKyAgICB0aGlzLT5Ub29sc2V0LT5zZXRUZXh0KERlZmF1bHRHZW5lcmF0b3JUb29sc2V0KTsKKyAgfQogICByZXR1cm4gZnJhbWU7CiB9CiAKQEAgLTE5OSw2ICsyMDcsMTQgQEAKIAogICAgIHRoaXMtPlBsYXRmb3JtT3B0aW9ucy0+YWRkSXRlbXMocGxhdGZvcm1fbGlzdCk7CiAgICAgUGxhdGZvcm1GcmFtZS0+c2hvdygpOworCisgICAgLy8gRGVmYXVsdCB0byBnZW5lcmF0b3IgcGxhdGZvcm0gZnJvbSBlbnZpcm9ubWVudAorICAgIGlmICghRGVmYXVsdEdlbmVyYXRvclBsYXRmb3JtLmlzRW1wdHkoKSkgeworICAgICAgaW50IHBsYXRmb3JtX2luZGV4ID0gcGxhdGZvcm1zLmluZGV4T2YoRGVmYXVsdEdlbmVyYXRvclBsYXRmb3JtKTsKKyAgICAgIGlmIChwbGF0Zm9ybV9pbmRleCAhPSAtMSkgeworICAgICAgICB0aGlzLT5QbGF0Zm9ybU9wdGlvbnMtPnNldEN1cnJlbnRJbmRleChwbGF0Zm9ybV9pbmRleCk7CisgICAgICB9CisgICAgfQogICB9IGVsc2UgewogICAgIFBsYXRmb3JtRnJhbWUtPmhpZGUoKTsKICAgfQpAQCAtNDIxLDggKzQzNywyNiBAQAogCiBGaXJzdENvbmZpZ3VyZTo6Rmlyc3RDb25maWd1cmUoKQogeworICBjb25zdCBjaGFyKiBlbnZfZ2VuZXJhdG9yID0gc3RkOjpnZXRlbnYoIkNNQUtFX0dFTkVSQVRPUiIpOworICBjb25zdCBjaGFyKiBlbnZfZ2VuZXJhdG9yX3BsYXRmb3JtID0gbnVsbHB0cjsKKyAgY29uc3QgY2hhciogZW52X2dlbmVyYXRvcl90b29sc2V0ID0gbnVsbHB0cjsKKyAgaWYgKGVudl9nZW5lcmF0b3IgJiYgc3RkOjpzdHJsZW4oZW52X2dlbmVyYXRvcikpIHsKKyAgICBtRGVmYXVsdEdlbmVyYXRvciA9IGVudl9nZW5lcmF0b3I7CisgICAgZW52X2dlbmVyYXRvcl9wbGF0Zm9ybSA9IHN0ZDo6Z2V0ZW52KCJDTUFLRV9HRU5FUkFUT1JfUExBVEZPUk0iKTsKKyAgICBlbnZfZ2VuZXJhdG9yX3Rvb2xzZXQgPSBzdGQ6OmdldGVudigiQ01BS0VfR0VORVJBVE9SX1RPT0xTRVQiKTsKKyAgfQorCisgIGlmICghZW52X2dlbmVyYXRvcl9wbGF0Zm9ybSkgeworICAgIGVudl9nZW5lcmF0b3JfcGxhdGZvcm0gPSAiIjsKKyAgfQorCisgIGlmICghZW52X2dlbmVyYXRvcl90b29sc2V0KSB7CisgICAgZW52X2dlbmVyYXRvcl90b29sc2V0ID0gIiI7CisgIH0KKwogICAvLyB0aGlzLT5zZXRPcHRpb24oUVdpemFyZDo6SGF2ZUZpbmlzaEJ1dHRvbk9uRWFybHlQYWdlcywgdHJ1ZSk7Ci0gIHRoaXMtPm1TdGFydENvbXBpbGVyU2V0dXBQYWdlID0gbmV3IFN0YXJ0Q29tcGlsZXJTZXR1cCh0aGlzKTsKKyAgdGhpcy0+bVN0YXJ0Q29tcGlsZXJTZXR1cFBhZ2UgPSBuZXcgU3RhcnRDb21waWxlclNldHVwKAorICAgIGVudl9nZW5lcmF0b3JfcGxhdGZvcm0sIGVudl9nZW5lcmF0b3JfdG9vbHNldCwgdGhpcyk7CiAgIHRoaXMtPnNldFBhZ2UoU3RhcnQsIHRoaXMtPm1TdGFydENvbXBpbGVyU2V0dXBQYWdlKTsKICAgUU9iamVjdDo6Y29ubmVjdCh0aGlzLT5tU3RhcnRDb21waWxlclNldHVwUGFnZSwgU0lHTkFMKHNlbGVjdGlvbkNoYW5nZWQoKSksCiAgICAgICAgICAgICAgICAgICAgdGhpcywgU0xPVChyZXN0YXJ0KCkpKTsKQEAgLTUwNCw2ICs1MzgsMTcgQEAKICAgdGhpcy0+bUNyb3NzQ29tcGlsZXJTZXR1cFBhZ2UtPnNldEluY2x1ZGVNb2RlKAogICAgIHNldHRpbmdzLnZhbHVlKCJJbmNsdWRlTW9kZSIsIDApLnRvSW50KCkpOwogICBzZXR0aW5ncy5lbmRHcm91cCgpOworCisgIC8vIGVudmlyb25tZW50IHZhcmlhYmxlcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBhcHBsaWNhdGlvbiBzZXR0aW5ncyBiZWNhdXNlLi4uCisgIC8vIC0gdGhleSdyZSBoYXJkZXIgdG8gc2V0CisgIC8vIC0gc2V0dGluZ3MgYWx3YXlzIGV4aXN0IGFmdGVyIHRoZSBwcm9ncmFtIGlzIHJ1biBvbmNlLCBzbyB0aGUgZW52aXJvbm1lbnQKKyAgLy8gICAgIHZhcmlhYmxlcyB3b3VsZCBuZXZlciBiZSB1c2VkIG90aGVyd2lzZQorICAvLyAtIHBsYXRmb3JtIGFuZCB0b29sc2V0IGFyZSBwb3B1bGF0ZWQgb25seSBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcywgc28KKyAgLy8gICAgIHRoaXMgcHJldmVudHMgdGhlbSBmcm9tIGJlaW5nIHRha2VuIGZyb20gZW52aXJvbm1lbnQsIHdoaWxlIHRoZQorICAvLyAgICAgZ2VuZXJhdG9yIGlzIHRha2VuIGZyb20gYXBwbGljYXRpb24gc2V0dGluZ3MKKyAgaWYgKCFtRGVmYXVsdEdlbmVyYXRvci5pc0VtcHR5KCkpIHsKKyAgICB0aGlzLT5tU3RhcnRDb21waWxlclNldHVwUGFnZS0+c2V0Q3VycmVudEdlbmVyYXRvcihtRGVmYXVsdEdlbmVyYXRvcik7CisgIH0KIH0KIAogdm9pZCBGaXJzdENvbmZpZ3VyZTo6c2F2ZVRvU2V0dGluZ3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1F0RGlhbG9nL0ZpcnN0Q29uZmlndXJlLmggYi9Tb3VyY2UvUXREaWFsb2cvRmlyc3RDb25maWd1cmUuaAppbmRleCBkMWRiNWJmLi5jMjZmNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUXREaWFsb2cvRmlyc3RDb25maWd1cmUuaAorKysgYi9Tb3VyY2UvUXREaWFsb2cvRmlyc3RDb25maWd1cmUuaApAQCAtMjksNyArMjksOCBAQAogewogICBRX09CSkVDVAogcHVibGljOgotICBTdGFydENvbXBpbGVyU2V0dXAoUVdpZGdldCogcCk7CisgIFN0YXJ0Q29tcGlsZXJTZXR1cChRU3RyaW5nIGRlZmF1bHRHZW5lcmF0b3JQbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgZGVmYXVsdEdlbmVyYXRvclRvb2xzZXQsIFFXaWRnZXQqIHApOwogICB+U3RhcnRDb21waWxlclNldHVwKCk7CiAgIHZvaWQgc2V0R2VuZXJhdG9ycyhzdGQ6OnZlY3RvcjxjbWFrZTo6R2VuZXJhdG9ySW5mbz4gY29uc3QmIGdlbnMpOwogICB2b2lkIHNldEN1cnJlbnRHZW5lcmF0b3IoY29uc3QgUVN0cmluZyYgZ2VuKTsKQEAgLTY0LDYgKzY1LDcgQEAKICAgUVN0cmluZ0xpc3QgR2VuZXJhdG9yc1N1cHBvcnRpbmdQbGF0Zm9ybTsKICAgUU11bHRpTWFwPFFTdHJpbmcsIFFTdHJpbmc+IEdlbmVyYXRvclN1cHBvcnRlZFBsYXRmb3JtczsKICAgUU1hcDxRU3RyaW5nLCBRU3RyaW5nPiBHZW5lcmF0b3JEZWZhdWx0UGxhdGZvcm07CisgIFFTdHJpbmcgRGVmYXVsdEdlbmVyYXRvclBsYXRmb3JtLCBEZWZhdWx0R2VuZXJhdG9yVG9vbHNldDsKIAogcHJpdmF0ZToKICAgUUZyYW1lKiBDcmVhdGVUb29sc2V0V2lkZ2V0cygpOwpAQCAtMTk3LDYgKzE5OSw3IEBACiAgIE5hdGl2ZUNvbXBpbGVyU2V0dXAqIG1OYXRpdmVDb21waWxlclNldHVwUGFnZTsKICAgQ3Jvc3NDb21waWxlclNldHVwKiBtQ3Jvc3NDb21waWxlclNldHVwUGFnZTsKICAgVG9vbGNoYWluQ29tcGlsZXJTZXR1cCogbVRvb2xjaGFpbkNvbXBpbGVyU2V0dXBQYWdlOworICBRU3RyaW5nIG1EZWZhdWx0R2VuZXJhdG9yOwogfTsKIAogI2VuZGlmIC8vIEZpcnN0Q29uZmlndXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9RdERpYWxvZy9RQ01ha2UuY3h4IGIvU291cmNlL1F0RGlhbG9nL1FDTWFrZS5jeHgKaW5kZXggYTkwODllNS4uNzc2YWY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1F0RGlhbG9nL1FDTWFrZS5jeHgKKysrIGIvU291cmNlL1F0RGlhbG9nL1FDTWFrZS5jeHgKQEAgLTIsNiArMiw4IEBACiAgICBmaWxlIENvcHlyaWdodC50eHQgb3IgaHR0cHM6Ly9jbWFrZS5vcmcvbGljZW5zaW5nIGZvciBkZXRhaWxzLiAgKi8KICNpbmNsdWRlICJRQ01ha2UuaCIKIAorI2luY2x1ZGUgPGNtL21lbW9yeT4KKwogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UURpcj4KIApAQCAtMzUsNyArMzcsOCBAQAogICBjbVN5c3RlbVRvb2xzOjpTZXRTdGRlcnJDYWxsYmFjaygKICAgICBbdGhpc10oc3RkOjpzdHJpbmcgY29uc3QmIG1zZykgeyB0aGlzLT5zdGRlcnJDYWxsYmFjayhtc2cpOyB9KTsKIAotICB0aGlzLT5DTWFrZUluc3RhbmNlID0gbmV3IGNtYWtlKGNtYWtlOjpSb2xlUHJvamVjdCwgY21TdGF0ZTo6UHJvamVjdCk7CisgIHRoaXMtPkNNYWtlSW5zdGFuY2UgPQorICAgIGNtOjptYWtlX3VuaXF1ZTxjbWFrZT4oY21ha2U6OlJvbGVQcm9qZWN0LCBjbVN0YXRlOjpQcm9qZWN0KTsKICAgdGhpcy0+Q01ha2VJbnN0YW5jZS0+U2V0Q01ha2VFZGl0Q29tbWFuZCgKICAgICBjbVN5c3RlbVRvb2xzOjpHZXRDTWFrZUdVSUNvbW1hbmQoKSk7CiAgIHRoaXMtPkNNYWtlSW5zdGFuY2UtPlNldFByb2dyZXNzQ2FsbGJhY2soCkBAIC01NSwxMSArNTgsNyBAQAogICB9CiB9CiAKLVFDTWFrZTo6flFDTWFrZSgpCi17Ci0gIGRlbGV0ZSB0aGlzLT5DTWFrZUluc3RhbmNlOwotICAvLyBjbUR5bmFtaWNMb2FkZXI6OkZsdXNoQ2FjaGUoKTsKLX0KK1FDTWFrZTo6flFDTWFrZSgpID0gZGVmYXVsdDsKIAogdm9pZCBRQ01ha2U6OmxvYWRDYWNoZShjb25zdCBRU3RyaW5nJiBkaXIpCiB7CkBAIC0xMDEsMjkgKzEwMCwyOCBAQAogCiAgICAgUUNNYWtlUHJvcGVydHlMaXN0IHByb3BzID0gdGhpcy0+cHJvcGVydGllcygpOwogICAgIGVtaXQgdGhpcy0+cHJvcGVydGllc0NoYW5nZWQocHJvcHMpOwotICAgIGNvbnN0IGNoYXIqIGhvbWVEaXIgPSBzdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9IT01FX0RJUkVDVE9SWSIpOworICAgIGNtUHJvcCBob21lRGlyID0gc3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSgiQ01BS0VfSE9NRV9ESVJFQ1RPUlkiKTsKICAgICBpZiAoaG9tZURpcikgewotICAgICAgc2V0U291cmNlRGlyZWN0b3J5KFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoaG9tZURpcikpOworICAgICAgc2V0U291cmNlRGlyZWN0b3J5KFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoaG9tZURpci0+Y19zdHIoKSkpOwogICAgIH0KLSAgICBjb25zdCBjaGFyKiBnZW4gPSBzdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9HRU5FUkFUT1IiKTsKKyAgICBjbVByb3AgZ2VuID0gc3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSgiQ01BS0VfR0VORVJBVE9SIik7CiAgICAgaWYgKGdlbikgewogICAgICAgY29uc3Qgc3RkOjpzdHJpbmcqIGV4dHJhR2VuID0KICAgICAgICAgc3RhdGUtPkdldEluaXRpYWxpemVkQ2FjaGVWYWx1ZSgiQ01BS0VfRVhUUkFfR0VORVJBVE9SIik7CiAgICAgICBzdGQ6OnN0cmluZyBjdXJHZW4gPQogICAgICAgICBjbUV4dGVybmFsTWFrZWZpbGVQcm9qZWN0R2VuZXJhdG9yOjpDcmVhdGVGdWxsR2VuZXJhdG9yTmFtZSgKLSAgICAgICAgICBnZW4sIGV4dHJhR2VuID8gKmV4dHJhR2VuIDogIiIpOworICAgICAgICAgICpnZW4sIGV4dHJhR2VuID8gKmV4dHJhR2VuIDogIiIpOwogICAgICAgdGhpcy0+c2V0R2VuZXJhdG9yKFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoY3VyR2VuLmNfc3RyKCkpKTsKICAgICB9CiAKLSAgICBjb25zdCBjaGFyKiBwbGF0Zm9ybSA9Ci0gICAgICBzdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9HRU5FUkFUT1JfUExBVEZPUk0iKTsKKyAgICBjbVByb3AgcGxhdGZvcm0gPSBzdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9HRU5FUkFUT1JfUExBVEZPUk0iKTsKICAgICBpZiAocGxhdGZvcm0pIHsKLSAgICAgIHRoaXMtPnNldFBsYXRmb3JtKFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQocGxhdGZvcm0pKTsKKyAgICAgIHRoaXMtPnNldFBsYXRmb3JtKFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQocGxhdGZvcm0tPmNfc3RyKCkpKTsKICAgICB9CiAKLSAgICBjb25zdCBjaGFyKiB0b29sc2V0ID0gc3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSgiQ01BS0VfR0VORVJBVE9SX1RPT0xTRVQiKTsKKyAgICBjbVByb3AgdG9vbHNldCA9IHN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUoIkNNQUtFX0dFTkVSQVRPUl9UT09MU0VUIik7CiAgICAgaWYgKHRvb2xzZXQpIHsKLSAgICAgIHRoaXMtPnNldFRvb2xzZXQoUVN0cmluZzo6ZnJvbUxvY2FsOEJpdCh0b29sc2V0KSk7CisgICAgICB0aGlzLT5zZXRUb29sc2V0KFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQodG9vbHNldC0+Y19zdHIoKSkpOwogICAgIH0KIAogICAgIGNoZWNrT3BlblBvc3NpYmxlKCk7CkBAIC0zMDQsMjcgKzMwMiwyOCBAQAogICAgICAgY29udGludWU7CiAgICAgfQogCi0gICAgY29uc3QgY2hhciogY2FjaGVkVmFsdWUgPSBzdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKGtleSk7CisgICAgY21Qcm9wIGNhY2hlZFZhbHVlID0gc3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZShrZXkpOwogCiAgICAgUUNNYWtlUHJvcGVydHkgcHJvcDsKICAgICBwcm9wLktleSA9IFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoa2V5LmNfc3RyKCkpOwotICAgIHByb3AuSGVscCA9Ci0gICAgICBRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KHN0YXRlLT5HZXRDYWNoZUVudHJ5UHJvcGVydHkoa2V5LCAiSEVMUFNUUklORyIpKTsKLSAgICBwcm9wLlZhbHVlID0gUVN0cmluZzo6ZnJvbUxvY2FsOEJpdChjYWNoZWRWYWx1ZSk7CisgICAgaWYgKGNtUHJvcCBocyA9IHN0YXRlLT5HZXRDYWNoZUVudHJ5UHJvcGVydHkoa2V5LCAiSEVMUFNUUklORyIpKSB7CisgICAgICBwcm9wLkhlbHAgPSBRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KGhzLT5jX3N0cigpKTsKKyAgICB9CisgICAgcHJvcC5WYWx1ZSA9IFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoY2FjaGVkVmFsdWUtPmNfc3RyKCkpOwogICAgIHByb3AuQWR2YW5jZWQgPSBzdGF0ZS0+R2V0Q2FjaGVFbnRyeVByb3BlcnR5QXNCb29sKGtleSwgIkFEVkFOQ0VEIik7CiAgICAgaWYgKHQgPT0gY21TdGF0ZUVudW1zOjpCT09MKSB7CiAgICAgICBwcm9wLlR5cGUgPSBRQ01ha2VQcm9wZXJ0eTo6Qk9PTDsKLSAgICAgIHByb3AuVmFsdWUgPSBjbUlzT24oY2FjaGVkVmFsdWUpOworICAgICAgcHJvcC5WYWx1ZSA9IGNtSXNPbigqY2FjaGVkVmFsdWUpOwogICAgIH0gZWxzZSBpZiAodCA9PSBjbVN0YXRlRW51bXM6OlBBVEgpIHsKICAgICAgIHByb3AuVHlwZSA9IFFDTWFrZVByb3BlcnR5OjpQQVRIOwogICAgIH0gZWxzZSBpZiAodCA9PSBjbVN0YXRlRW51bXM6OkZJTEVQQVRIKSB7CiAgICAgICBwcm9wLlR5cGUgPSBRQ01ha2VQcm9wZXJ0eTo6RklMRVBBVEg7CiAgICAgfSBlbHNlIGlmICh0ID09IGNtU3RhdGVFbnVtczo6U1RSSU5HKSB7CiAgICAgICBwcm9wLlR5cGUgPSBRQ01ha2VQcm9wZXJ0eTo6U1RSSU5HOwotICAgICAgY29uc3QgY2hhciogc3RyaW5nc1Byb3BlcnR5ID0KLSAgICAgICAgc3RhdGUtPkdldENhY2hlRW50cnlQcm9wZXJ0eShrZXksICJTVFJJTkdTIik7CisgICAgICBjbVByb3Agc3RyaW5nc1Byb3BlcnR5ID0gc3RhdGUtPkdldENhY2hlRW50cnlQcm9wZXJ0eShrZXksICJTVFJJTkdTIik7CiAgICAgICBpZiAoc3RyaW5nc1Byb3BlcnR5KSB7Ci0gICAgICAgIHByb3AuU3RyaW5ncyA9IFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoc3RyaW5nc1Byb3BlcnR5KS5zcGxpdCgiOyIpOworICAgICAgICBwcm9wLlN0cmluZ3MgPQorICAgICAgICAgIFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoc3RyaW5nc1Byb3BlcnR5LT5jX3N0cigpKS5zcGxpdCgiOyIpOwogICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1F0RGlhbG9nL1FDTWFrZS5oIGIvU291cmNlL1F0RGlhbG9nL1FDTWFrZS5oCmluZGV4IGZhNDQ1MWIuLjExMGE5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9RdERpYWxvZy9RQ01ha2UuaAorKysgYi9Tb3VyY2UvUXREaWFsb2cvUUNNYWtlLmgKQEAgLTEyLDYgKzEyLDcgQEAKICMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0NTEyKQogI2VuZGlmCiAKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSA8UUF0b21pY0ludD4KQEAgLTE2NSw3ICsxNjYsNyBAQAogICB2b2lkIG9wZW5Qb3NzaWJsZShib29sIHBvc3NpYmxlKTsKIAogcHJvdGVjdGVkOgotICBjbWFrZSogQ01ha2VJbnN0YW5jZTsKKyAgc3RkOjp1bmlxdWVfcHRyPGNtYWtlPiBDTWFrZUluc3RhbmNlOwogCiAgIGJvb2wgaW50ZXJydXB0Q2FsbGJhY2soKTsKICAgdm9pZCBwcm9ncmVzc0NhbGxiYWNrKHN0ZDo6c3RyaW5nIGNvbnN0JiBtc2csIGZsb2F0IHBlcmNlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JpbmRleHBsaWIuY3h4IGIvU291cmNlL2JpbmRleHBsaWIuY3h4CmluZGV4IDBiMjc1MGQuLmZkZmQ0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9iaW5kZXhwbGliLmN4eAorKysgYi9Tb3VyY2UvYmluZGV4cGxpYi5jeHgKQEAgLTM1MiwxNCArMzUyLDE0IEBACiAgICAgICAgICAgICAgIGxpbmUuY19zdHIoKSk7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHN5bSA9IGxpbmUuc3Vic3RyKDAsIHN5bV9lbmQpOwogICAgIGNvbnN0IGNoYXIgc3ltX3R5cGUgPSBsaW5lW3N5bV9lbmQgKyAxXTsKKyAgICBsaW5lLnJlc2l6ZShzeW1fZW5kKTsKICAgICBzd2l0Y2ggKHN5bV90eXBlKSB7CiAgICAgICBjYXNlICdEJzoKLSAgICAgICAgZGF0YVN5bWJvbHMuaW5zZXJ0KHN5bSk7CisgICAgICAgIGRhdGFTeW1ib2xzLmluc2VydChsaW5lKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlICdUJzoKLSAgICAgICAgc3ltYm9scy5pbnNlcnQoc3ltKTsKKyAgICAgICAgc3ltYm9scy5pbnNlcnQobGluZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtQWRkU3ViRGlyZWN0b3J5Q29tbWFuZC5jeHggYi9Tb3VyY2UvY21BZGRTdWJEaXJlY3RvcnlDb21tYW5kLmN4eAppbmRleCAzNWVhYmFmLi44M2Q2MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21BZGRTdWJEaXJlY3RvcnlDb21tYW5kLmN4eAorKysgYi9Tb3VyY2UvY21BZGRTdWJEaXJlY3RvcnlDb21tYW5kLmN4eApAQCAtNCw2ICs0LDggQEAKIAogI2luY2x1ZGUgPGNzdHJpbmc+CiAKKyNpbmNsdWRlIDxjbS9zdHJpbmdfdmlldz4KKwogI2luY2x1ZGUgImNtRXhlY3V0aW9uU3RhdHVzLmgiCiAjaW5jbHVkZSAiY21NYWtlZmlsZS5oIgogI2luY2x1ZGUgImNtUmFuZ2UuaCIKQEAgLTg2LDcgKzg4LDggQEAKICAgICBpZiAoYmluTGVuID4gMCAmJiBiaW4uYmFjaygpID09ICcvJykgewogICAgICAgLS1iaW5MZW47CiAgICAgfQotICAgIGJpblBhdGggPSBiaW4uc3Vic3RyKDAsIGJpbkxlbikgKyBzcmNQYXRoLnN1YnN0cihzcmNMZW4pOworICAgIGJpblBhdGggPSBjbVN0ckNhdChjbTo6c3RyaW5nX3ZpZXcoYmluKS5zdWJzdHIoMCwgYmluTGVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgY206OnN0cmluZ192aWV3KHNyY1BhdGgpLnN1YnN0cihzcmNMZW4pKTsKICAgfSBlbHNlIHsKICAgICAvLyBVc2UgdGhlIGJpbmFyeSBkaXJlY3Rvcnkgc3BlY2lmaWVkLgogICAgIC8vIEludGVycHJldCBhIHJlbGF0aXZlIHBhdGggd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJpbmFyeSBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21BdXhTb3VyY2VEaXJlY3RvcnlDb21tYW5kLmN4eCBiL1NvdXJjZS9jbUF1eFNvdXJjZURpcmVjdG9yeUNvbW1hbmQuY3h4CmluZGV4IDI4OWJiNzIuLmQ2Zjc1MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21BdXhTb3VyY2VEaXJlY3RvcnlDb21tYW5kLmN4eAorKysgYi9Tb3VyY2UvY21BdXhTb3VyY2VEaXJlY3RvcnlDb21tYW5kLmN4eApAQCAtNiw2ICs2LDggQEAKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKKyNpbmNsdWRlIDxjbS9zdHJpbmdfdmlldz4KKwogI2luY2x1ZGUgImNtc3lzL0RpcmVjdG9yeS5oeHgiCiAKICNpbmNsdWRlICJjbUV4ZWN1dGlvblN0YXR1cy5oIgpAQCAtNTAsMTEgKzUyLDEwIEBACiAgICAgICAvLyBTcGxpdCB0aGUgZmlsZW5hbWUgaW50byBiYXNlIGFuZCBleHRlbnNpb24KICAgICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgZG90cG9zID0gZmlsZS5yZmluZCgnLicpOwogICAgICAgaWYgKGRvdHBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAgICBzdGQ6OnN0cmluZyBleHQgPSBmaWxlLnN1YnN0cihkb3Rwb3MgKyAxKTsKLSAgICAgICAgc3RkOjpzdHJpbmcgYmFzZSA9IGZpbGUuc3Vic3RyKDAsIGRvdHBvcyk7CisgICAgICAgIGF1dG8gZXh0ID0gY206OnN0cmluZ192aWV3KGZpbGUpLnN1YnN0cihkb3Rwb3MgKyAxKTsKICAgICAgICAgLy8gUHJvY2VzcyBvbmx5IHNvdXJjZSBmaWxlcwogICAgICAgICBhdXRvIGNtID0gbWYuR2V0Q01ha2VJbnN0YW5jZSgpOwotICAgICAgICBpZiAoIWJhc2UuZW1wdHkoKSAmJiBjbS0+SXNTb3VyY2VFeHRlbnNpb24oZXh0KSkgeworICAgICAgICBpZiAoZG90cG9zID4gMCAmJiBjbS0+SXNTb3VyY2VFeHRlbnNpb24oZXh0KSkgewogICAgICAgICAgIHN0ZDo6c3RyaW5nIGZ1bGxuYW1lID0gY21TdHJDYXQodGVtcGxhdGVEaXJlY3RvcnksICcvJywgZmlsZSk7CiAgICAgICAgICAgLy8gYWRkIHRoZSBmaWxlIGFzIGEgY2xhc3MgZmlsZSBzbwogICAgICAgICAgIC8vIGRlcGVuZHMgY2FuIGJlIGRvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUJpblV0aWxzTGludXhFTEZMaW5rZXIuY3h4IGIvU291cmNlL2NtQmluVXRpbHNMaW51eEVMRkxpbmtlci5jeHgKaW5kZXggMGRlYTgyNS4uOWNlNDAzZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtQmluVXRpbHNMaW51eEVMRkxpbmtlci5jeHgKKysrIGIvU291cmNlL2NtQmluVXRpbHNMaW51eEVMRkxpbmtlci5jeHgKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSA8c3N0cmVhbT4KIAogI2luY2x1ZGUgPGNtL21lbW9yeT4KKyNpbmNsdWRlIDxjbS9zdHJpbmdfdmlldz4KIAogI2luY2x1ZGUgPGNtc3lzL1JlZ3VsYXJFeHByZXNzaW9uLmh4eD4KIApAQCAtMjYsMTQgKzI3LDE2IEBACiAKICAgY21zeXM6OlJlZ3VsYXJFeHByZXNzaW9uTWF0Y2ggbWF0Y2g7CiAgIGlmIChvcmlnaW5SZWdleC5maW5kKHJwYXRoLmNfc3RyKCksIG1hdGNoKSkgewotICAgIHN0ZDo6c3RyaW5nIGJlZ2luID0gcnBhdGguc3Vic3RyKDAsIG1hdGNoLnN0YXJ0KDEpKTsKLSAgICBzdGQ6OnN0cmluZyBlbmQgPSBycGF0aC5zdWJzdHIobWF0Y2guZW5kKDEpKTsKLSAgICByZXR1cm4gYmVnaW4gKyBvcmlnaW4gKyBlbmQ7CisgICAgY206OnN0cmluZ192aWV3IHBhdGh2KHJwYXRoKTsKKyAgICBhdXRvIGJlZ2luID0gcGF0aHYuc3Vic3RyKDAsIG1hdGNoLnN0YXJ0KDEpKTsKKyAgICBhdXRvIGVuZCA9IHBhdGh2LnN1YnN0cihtYXRjaC5lbmQoMSkpOworICAgIHJldHVybiBjbVN0ckNhdChiZWdpbiwgb3JpZ2luLCBlbmQpOwogICB9CiAgIGlmIChvcmlnaW5DdXJseVJlZ2V4LmZpbmQocnBhdGguY19zdHIoKSwgbWF0Y2gpKSB7Ci0gICAgc3RkOjpzdHJpbmcgYmVnaW4gPSBycGF0aC5zdWJzdHIoMCwgbWF0Y2guc3RhcnQoKSk7Ci0gICAgc3RkOjpzdHJpbmcgZW5kID0gcnBhdGguc3Vic3RyKG1hdGNoLmVuZCgpKTsKLSAgICByZXR1cm4gYmVnaW4gKyBvcmlnaW4gKyBlbmQ7CisgICAgY206OnN0cmluZ192aWV3IHBhdGh2KHJwYXRoKTsKKyAgICBhdXRvIGJlZ2luID0gcGF0aHYuc3Vic3RyKDAsIG1hdGNoLnN0YXJ0KCkpOworICAgIGF1dG8gZW5kID0gcGF0aHYuc3Vic3RyKG1hdGNoLmVuZCgpKTsKKyAgICByZXR1cm4gY21TdHJDYXQoYmVnaW4sIG9yaWdpbiwgZW5kKTsKICAgfQogICByZXR1cm4gcnBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21CdWlsZENvbW1hbmQuY3h4IGIvU291cmNlL2NtQnVpbGRDb21tYW5kLmN4eAppbmRleCA0OWM5NDM5Li5iODJmYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21CdWlsZENvbW1hbmQuY3h4CisrKyBiL1NvdXJjZS9jbUJ1aWxkQ29tbWFuZC5jeHgKQEAgLTEwOCw3ICsxMDgsNyBAQAogICBpZiAoY2FjaGVWYWx1ZSkgewogICAgIHJldHVybiB0cnVlOwogICB9Ci0gIG1mLkFkZENhY2hlRGVmaW5pdGlvbihkZWZpbmUsIG1ha2Vjb21tYW5kLmNfc3RyKCksCisgIG1mLkFkZENhY2hlRGVmaW5pdGlvbihkZWZpbmUsIG1ha2Vjb21tYW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgIkNvbW1hbmQgdXNlZCB0byBidWlsZCBlbnRpcmUgcHJvamVjdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSB0aGUgY29tbWFuZCBsaW5lLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjbVN0YXRlRW51bXM6OlNUUklORyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21CdWlsZE5hbWVDb21tYW5kLmN4eCBiL1NvdXJjZS9jbUJ1aWxkTmFtZUNvbW1hbmQuY3h4CmluZGV4IDNlNTE3ZGMuLmFkNGQ2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUJ1aWxkTmFtZUNvbW1hbmQuY3h4CisrKyBiL1NvdXJjZS9jbUJ1aWxkTmFtZUNvbW1hbmQuY3h4CkBAIC0yOCw3ICsyOCw3IEBACiAgICAgICBzdGQ6OnJlcGxhY2UoY3YuYmVnaW4oKSwgY3YuZW5kKCksICcvJywgJ18nKTsKICAgICAgIHN0ZDo6cmVwbGFjZShjdi5iZWdpbigpLCBjdi5lbmQoKSwgJygnLCAnXycpOwogICAgICAgc3RkOjpyZXBsYWNlKGN2LmJlZ2luKCksIGN2LmVuZCgpLCAnKScsICdfJyk7Ci0gICAgICBtZi5BZGRDYWNoZURlZmluaXRpb24oYXJnc1swXSwgY3YuY19zdHIoKSwgIk5hbWUgb2YgYnVpbGQuIiwKKyAgICAgIG1mLkFkZENhY2hlRGVmaW5pdGlvbihhcmdzWzBdLCBjdiwgIk5hbWUgb2YgYnVpbGQuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbVN0YXRlRW51bXM6OlNUUklORyk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtNTQsNyArNTQsNyBAQAogICBzdGQ6OnJlcGxhY2UoYnVpbGRuYW1lLmJlZ2luKCksIGJ1aWxkbmFtZS5lbmQoKSwgJygnLCAnXycpOwogICBzdGQ6OnJlcGxhY2UoYnVpbGRuYW1lLmJlZ2luKCksIGJ1aWxkbmFtZS5lbmQoKSwgJyknLCAnXycpOwogCi0gIG1mLkFkZENhY2hlRGVmaW5pdGlvbihhcmdzWzBdLCBidWlsZG5hbWUuY19zdHIoKSwgIk5hbWUgb2YgYnVpbGQuIiwKKyAgbWYuQWRkQ2FjaGVEZWZpbml0aW9uKGFyZ3NbMF0sIGJ1aWxkbmFtZSwgIk5hbWUgb2YgYnVpbGQuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNtU3RhdGVFbnVtczo6U1RSSU5HKTsKICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21DTWFrZUNvbW1hbmQuY3h4IGIvU291cmNlL2NtQ01ha2VDb21tYW5kLmN4eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTFhMDAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2NtQ01ha2VDb21tYW5kLmN4eApAQCAtMCwwICsxLDY4IEBACisvKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgT1NJLWFwcHJvdmVkIEJTRCAzLUNsYXVzZSBMaWNlbnNlLiAgU2VlIGFjY29tcGFueWluZworICAgZmlsZSBDb3B5cmlnaHQudHh0IG9yIGh0dHBzOi8vY21ha2Uub3JnL2xpY2Vuc2luZyBmb3IgZGV0YWlscy4gICovCisjaW5jbHVkZSAiY21DTWFrZUNvbW1hbmQuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkZGVmPgorCisjaW5jbHVkZSAiY21FeGVjdXRpb25TdGF0dXMuaCIKKyNpbmNsdWRlICJjbUxpc3RGaWxlQ2FjaGUuaCIKKyNpbmNsdWRlICJjbU1ha2VmaWxlLmgiCisjaW5jbHVkZSAiY21SYW5nZS5oIgorI2luY2x1ZGUgImNtU3RyaW5nQWxnb3JpdGhtcy5oIgorCitib29sIGNtQ01ha2VDb21tYW5kKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjb25zdCYgYXJncywKKyAgICAgICAgICAgICAgICAgICAgY21FeGVjdXRpb25TdGF0dXMmIHN0YXR1cykKK3sKKyAgaWYgKGFyZ3MuZW1wdHkoKSkgeworICAgIHN0YXR1cy5TZXRFcnJvcigiY2FsbGVkIHdpdGggaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMiKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBjbU1ha2VmaWxlJiBtYWtlZmlsZSA9IHN0YXR1cy5HZXRNYWtlZmlsZSgpOworICBjbUxpc3RGaWxlQ29udGV4dCBjb250ZXh0ID0gbWFrZWZpbGUuR2V0RXhlY3V0aW9uQ29udGV4dCgpOworCisgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisKKyAgaWYgKGFyZ3NbMF0gPT0gIklOVk9LRSIpIHsKKyAgICBpZiAoYXJncy5zaXplKCkgPT0gMSkgeworICAgICAgc3RhdHVzLlNldEVycm9yKCJjYWxsZWQgd2l0aCBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyIpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEZpcnN0IGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBjYWxsCisgICAgY21MaXN0RmlsZUZ1bmN0aW9uIGZ1bmM7CisgICAgZnVuYy5OYW1lID0gYXJnc1sxXTsKKyAgICBmdW5jLkxpbmUgPSBjb250ZXh0LkxpbmU7CisKKyAgICAvLyBUaGUgcmVzdCBvZiB0aGUgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGNhbGwgYWJvdmUKKyAgICBmdW5jLkFyZ3VtZW50cy5yZXNpemUoYXJncy5zaXplKCkgLSAxKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMjsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgIGNtTGlzdEZpbGVBcmd1bWVudCBsZmFyZzsKKyAgICAgIGxmYXJnLkxpbmUgPSBjb250ZXh0LkxpbmU7CisgICAgICBsZmFyZy5WYWx1ZSA9IGFyZ3NbaV07CisgICAgICBmdW5jLkFyZ3VtZW50cy5lbXBsYWNlX2JhY2sobGZhcmcpOworICAgIH0KKworICAgIHJlc3VsdCA9IG1ha2VmaWxlLkV4ZWN1dGVDb21tYW5kKGZ1bmMsIHN0YXR1cyk7CisgIH0gZWxzZSBpZiAoYXJnc1swXSA9PSAiRVZBTCIpIHsKKyAgICBpZiAoYXJncy5zaXplKCkgPCAyKSB7CisgICAgICBzdGF0dXMuU2V0RXJyb3IoImNhbGxlZCB3aXRoIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIik7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYXV0byBjb2RlX2l0ZXIgPSBzdGQ6OmZpbmQoYXJncy5iZWdpbigpLCBhcmdzLmVuZCgpLCAiQ09ERSIpOworICAgIGlmIChjb2RlX2l0ZXIgPT0gYXJncy5lbmQoKSkgeworICAgICAgc3RhdHVzLlNldEVycm9yKCJjYWxsZWQgd2l0aG91dCBDT0RFIGFyZ3VtZW50Iik7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgY29kZSA9IGNtSm9pbihjbU1ha2VSYW5nZSgrK2NvZGVfaXRlciwgYXJncy5lbmQoKSksICIgIik7CisgICAgcmVzdWx0ID0gbWFrZWZpbGUuUmVhZExpc3RGaWxlQXNTdHJpbmcoCisgICAgICBjb2RlLCBjbVN0ckNhdChjb250ZXh0LkZpbGVQYXRoLCAiOiIsIGNvbnRleHQuTGluZSwgIjpFVkFMIikpOworICB9IGVsc2UgeworICAgIHN0YXR1cy5TZXRFcnJvcigiY2FsbGVkIHdpdGggdW5rbm93biBtZXRhLW9wZXJhdGlvbiIpOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUNNYWtlQ29tbWFuZC5oIGIvU291cmNlL2NtQ01ha2VDb21tYW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y5ZjRjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9jbUNNYWtlQ29tbWFuZC5oCkBAIC0wLDAgKzEsMjAgQEAKKy8qIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBPU0ktYXBwcm92ZWQgQlNEIDMtQ2xhdXNlIExpY2Vuc2UuICBTZWUgYWNjb21wYW55aW5nCisgICBmaWxlIENvcHlyaWdodC50eHQgb3IgaHR0cHM6Ly9jbWFrZS5vcmcvbGljZW5zaW5nIGZvciBkZXRhaWxzLiAgKi8KKyNpZm5kZWYgY21DTWFrZUNvbW1hbmRfaAorI2RlZmluZSBjbUNNYWtlQ29tbWFuZF9oCisKKyNpbmNsdWRlICJjbUNvbmZpZ3VyZS5oIiAvLyBJV1lVIHByYWdtYToga2VlcAorCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworY2xhc3MgY21FeGVjdXRpb25TdGF0dXM7CisKKy8qKgorICogXGJyaWVmIENhbGxzIGEgc2NyaXB0ZWQgb3IgYnVpbGQtaW4gY29tbWFuZAorICoKKyAqLworYm9vbCBjbUNNYWtlQ29tbWFuZChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gY29uc3QmIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgIGNtRXhlY3V0aW9uU3RhdHVzJiBzdGF0dXMpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUNQbHVnaW5BUEkuY3h4IGIvU291cmNlL2NtQ1BsdWdpbkFQSS5jeHgKaW5kZXggYjVjN2U5Ni4uODc0ZWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL2NtQ1BsdWdpbkFQSS5jeHgKKysrIGIvU291cmNlL2NtQ1BsdWdpbkFQSS5jeHgKQEAgLTQ4OCwyNCArNDg4LDggQEAKIAogLy8gS2VlcCBhIG1hcCBmcm9tIHJlYWwgY21Tb3VyY2VGaWxlIGluc3RhbmNlcyBzdG9yZWQgaW4gYSBtYWtlZmlsZSB0bwogLy8gdGhlIENQbHVnaW5BUEkgcHJveHkgc291cmNlIGZpbGUuCi1jbGFzcyBjbUNQbHVnaW5BUElTb3VyY2VGaWxlTWFwCi0gIDogcHVibGljIHN0ZDo6bWFwPGNtU291cmNlRmlsZSosIGNtQ1BsdWdpbkFQSVNvdXJjZUZpbGUqPgotewotcHVibGljOgotICB1c2luZyBkZXJpdmVkID0gc3RkOjptYXA8Y21Tb3VyY2VGaWxlKiwgY21DUGx1Z2luQVBJU291cmNlRmlsZSo+OwotICB1c2luZyBpdGVyYXRvciA9IGRlcml2ZWQ6Oml0ZXJhdG9yOwotICB1c2luZyB2YWx1ZV90eXBlID0gZGVyaXZlZDo6dmFsdWVfdHlwZTsKLSAgY21DUGx1Z2luQVBJU291cmNlRmlsZU1hcCgpID0gZGVmYXVsdDsKLSAgfmNtQ1BsdWdpbkFQSVNvdXJjZUZpbGVNYXAoKQotICB7Ci0gICAgZm9yIChhdXRvIGNvbnN0JiBpIDogKnRoaXMpIHsKLSAgICAgIGRlbGV0ZSBpLnNlY29uZDsKLSAgICB9Ci0gIH0KLSAgY21DUGx1Z2luQVBJU291cmNlRmlsZU1hcChjb25zdCBjbUNQbHVnaW5BUElTb3VyY2VGaWxlTWFwJikgPSBkZWxldGU7Ci0gIGNtQ1BsdWdpbkFQSVNvdXJjZUZpbGVNYXAmIG9wZXJhdG9yPShjb25zdCBjbUNQbHVnaW5BUElTb3VyY2VGaWxlTWFwJikgPQotICAgIGRlbGV0ZTsKLX07Cit1c2luZyBjbUNQbHVnaW5BUElTb3VyY2VGaWxlTWFwID0KKyAgc3RkOjptYXA8Y21Tb3VyY2VGaWxlKiwgc3RkOjp1bmlxdWVfcHRyPGNtQ1BsdWdpbkFQSVNvdXJjZUZpbGU+PjsKIGNtQ1BsdWdpbkFQSVNvdXJjZUZpbGVNYXAgY21DUGx1Z2luQVBJU291cmNlRmlsZXM7CiAKIHZvaWQqIENDT05WIGNtQ3JlYXRlU291cmNlRmlsZSh2b2lkKQpAQCAtNTM2LDcgKzUyMCw3IEBACiAgICAgYXV0byBpID0gY21DUGx1Z2luQVBJU291cmNlRmlsZXMuZmluZChyc2YpOwogICAgIGlmIChpID09IGNtQ1BsdWdpbkFQSVNvdXJjZUZpbGVzLmVuZCgpKSB7CiAgICAgICAvLyBDcmVhdGUgYSBwcm94eSBzb3VyY2UgZmlsZSBvYmplY3QgZm9yIHRoaXMgc291cmNlLgotICAgICAgY21DUGx1Z2luQVBJU291cmNlRmlsZSogc2YgPSBuZXcgY21DUGx1Z2luQVBJU291cmNlRmlsZTsKKyAgICAgIGF1dG8gc2YgPSBjbTo6bWFrZV91bmlxdWU8Y21DUGx1Z2luQVBJU291cmNlRmlsZT4oKTsKICAgICAgIHNmLT5SZWFsU291cmNlRmlsZSA9IHJzZjsKICAgICAgIHNmLT5GdWxsUGF0aCA9IHJzZi0+UmVzb2x2ZUZ1bGxQYXRoKCk7CiAgICAgICBzZi0+U291cmNlTmFtZSA9CkBAIC01NDUsMTAgKzUyOSw5IEBACiAgICAgICAgIGNtU3lzdGVtVG9vbHM6OkdldEZpbGVuYW1lTGFzdEV4dGVuc2lvbihzZi0+RnVsbFBhdGgpOwogCiAgICAgICAvLyBTdG9yZSB0aGUgcHJveHkgaW4gdGhlIG1hcCBzbyBpdCBjYW4gYmUgcmUtdXNlZCBhbmQgZGVsZXRlZCBsYXRlci4KLSAgICAgIGNtQ1BsdWdpbkFQSVNvdXJjZUZpbGVNYXA6OnZhbHVlX3R5cGUgZW50cnkocnNmLCBzZik7Ci0gICAgICBpID0gY21DUGx1Z2luQVBJU291cmNlRmlsZXMuaW5zZXJ0KGVudHJ5KS5maXJzdDsKKyAgICAgIGkgPSBjbUNQbHVnaW5BUElTb3VyY2VGaWxlcy5lbXBsYWNlKHJzZiwgc3RkOjptb3ZlKHNmKSkuZmlyc3Q7CiAgICAgfQotICAgIHJldHVybiBpLT5zZWNvbmQ7CisgICAgcmV0dXJuIGktPnNlY29uZC5nZXQoKTsKICAgfQogICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTU2OSwxNSArNTUyLDE2IEBACiAgIH0KIAogICAvLyBDcmVhdGUgdGhlIHByb3h5IGZvciB0aGUgcmVhbCBzb3VyY2UgZmlsZS4KLSAgY21DUGx1Z2luQVBJU291cmNlRmlsZSogc2YgPSBuZXcgY21DUGx1Z2luQVBJU291cmNlRmlsZTsKKyAgYXV0byBzZiA9IGNtOjptYWtlX3VuaXF1ZTxjbUNQbHVnaW5BUElTb3VyY2VGaWxlPigpOwogICBzZi0+UmVhbFNvdXJjZUZpbGUgPSByc2Y7CiAgIHNmLT5GdWxsUGF0aCA9IG9zZi0+RnVsbFBhdGg7CiAgIHNmLT5Tb3VyY2VOYW1lID0gb3NmLT5Tb3VyY2VOYW1lOwogICBzZi0+U291cmNlRXh0ZW5zaW9uID0gb3NmLT5Tb3VyY2VFeHRlbnNpb247CiAKICAgLy8gU3RvcmUgdGhlIHByb3h5IGluIHRoZSBtYXAgc28gaXQgY2FuIGJlIHJlLXVzZWQgYW5kIGRlbGV0ZWQgbGF0ZXIuCi0gIGNtQ1BsdWdpbkFQSVNvdXJjZUZpbGVzW3JzZl0gPSBzZjsKLSAgcmV0dXJuIHNmOworICBhdXRvIHZhbHVlID0gc2YuZ2V0KCk7CisgIGNtQ1BsdWdpbkFQSVNvdXJjZUZpbGVzW3JzZl0gPSBzdGQ6Om1vdmUoc2YpOworICByZXR1cm4gdmFsdWU7CiB9CiAKIGNvbnN0IGNoYXIqIENDT05WIGNtU291cmNlRmlsZUdldFNvdXJjZU5hbWUodm9pZCogYXJnKQpAQCAtNjAxLDcgKzU4NSw4IEBACiAgIGlmICghc3RyY21wKHByb3AsICJMT0NBVElPTiIpKSB7CiAgICAgcmV0dXJuIHNmLT5GdWxsUGF0aC5jX3N0cigpOwogICB9Ci0gIHJldHVybiBzZi0+UHJvcGVydGllcy5HZXRQcm9wZXJ0eVZhbHVlKHByb3ApOworICBjbVByb3AgcmV0VmFsID0gc2YtPlByb3BlcnRpZXMuR2V0UHJvcGVydHlWYWx1ZShwcm9wKTsKKyAgcmV0dXJuIHJldFZhbCA/IHJldFZhbC0+Y19zdHIoKSA6IG51bGxwdHI7CiB9CiAKIGludCBDQ09OViBjbVNvdXJjZUZpbGVHZXRQcm9wZXJ0eUFzQm9vbCh2b2lkKiBhcmcsIGNvbnN0IGNoYXIqIHByb3ApCkBAIC03OTEsOCArNzc2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvbmdEb2NzLCBpbnQgY2hhaW5lZCkKIHsKICAgY21NYWtlZmlsZSogbWYgPSBzdGF0aWNfY2FzdDxjbU1ha2VmaWxlKj4oYXJnKTsKLSAgbWYtPkdldFN0YXRlKCktPkRlZmluZVByb3BlcnR5KG5hbWUsIGNtUHJvcGVydHk6OlNPVVJDRV9GSUxFLCBicmllZkRvY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nRG9jcywgY2hhaW5lZCAhPSAwKTsKKyAgbWYtPkdldFN0YXRlKCktPkRlZmluZVByb3BlcnR5KG5hbWUsIGNtUHJvcGVydHk6OlNPVVJDRV9GSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJpZWZEb2NzID8gYnJpZWZEb2NzIDogIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nRG9jcyA/IGxvbmdEb2NzIDogIiIsIGNoYWluZWQgIT0gMCk7CiB9CiAKIH0gLy8gY2xvc2UgdGhlIGV4dGVybiAiQyIgc2NvcGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUNUZXN0LmN4eCBiL1NvdXJjZS9jbUNUZXN0LmN4eAppbmRleCAwNGY3NWJkLi5jNTUwNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21DVGVzdC5jeHgKKysrIGIvU291cmNlL2NtQ1Rlc3QuY3h4CkBAIC0xNiw2ICsxNiwxMCBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSA8Y20vbWVtb3J5PgorI2luY2x1ZGUgPGNtL3N0cmluZ192aWV3PgorI2luY2x1ZGUgPGNtZXh0L2FsZ29yaXRobT4KKwogI2luY2x1ZGUgImNtc3lzL0Jhc2U2NC5oIgogI2luY2x1ZGUgImNtc3lzL0RpcmVjdG9yeS5oeHgiCiAjaW5jbHVkZSAiY21zeXMvRlN0cmVhbS5oeHgiCkBAIC0zMiw4ICszNiw3IEBACiAjICBpbmNsdWRlIDx1bmlzdGQuaD4gLy8gSVdZVSBwcmFnbWE6IGtlZXAKICNlbmRpZgogCi0jaW5jbHVkZSA8Y20vbWVtb3J5PgotI2luY2x1ZGUgPGNtZXh0L2FsZ29yaXRobT4KKyNpbmNsdWRlICJjbV9zdGF0aWNfc3RyaW5nX3ZpZXcuaHh4IgogCiAjaW5jbHVkZSAiY21DVGVzdEJ1aWxkQW5kVGVzdEhhbmRsZXIuaCIKICNpbmNsdWRlICJjbUNUZXN0QnVpbGRIYW5kbGVyLmgiCkBAIC0yMDEsNyArMjA0LDcgQEAKIAogICBpbnQgU3VibWl0SW5kZXggPSAwOwogCi0gIGNtR2VuZXJhdGVkRmlsZVN0cmVhbSogT3V0cHV0TG9nRmlsZSA9IG51bGxwdHI7CisgIHN0ZDo6dW5pcXVlX3B0cjxjbUdlbmVyYXRlZEZpbGVTdHJlYW0+IE91dHB1dExvZ0ZpbGU7CiAgIGludCBPdXRwdXRMb2dGaWxlTGFzdFRhZyA9IC0xOwogCiAgIGJvb2wgT3V0cHV0VGVzdE91dHB1dE9uVGVzdEZhaWx1cmUgPSBmYWxzZTsKQEAgLTI3MSw5ICsyNzQsMTAgQEAKICAgcmV0dXJuIHRoaXMtPkltcGwtPlRvbW9ycm93VGFnOwogfQogCi1zdGQ6OnN0cmluZyBjbUNUZXN0OjpDbGVhblN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKQorc3RkOjpzdHJpbmcgY21DVGVzdDo6Q2xlYW5TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgc3BvcykKIHsKLSAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzcG9zID0gc3RyLmZpbmRfZmlyc3Rfbm90X29mKCIgXG5cdFxyXGZcdiIpOworICBzcG9zID0gc3RyLmZpbmRfZmlyc3Rfbm90X29mKCIgXG5cdFxyXGZcdiIsIHNwb3MpOwogICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGVwb3MgPSBzdHIuZmluZF9sYXN0X25vdF9vZigiIFxuXHRcclxmXHYiKTsKICAgaWYgKHNwb3MgPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKQEAgLTM2MiwxMCArMzY2LDcgQEAKICAgY21TeXN0ZW1Ub29sczo6RW5hYmxlVlNDb25zb2xlT3V0cHV0KCk7CiB9CiAKLWNtQ1Rlc3Q6On5jbUNUZXN0KCkKLXsKLSAgZGVsZXRlIHRoaXMtPkltcGwtPk91dHB1dExvZ0ZpbGU7Ci19CitjbUNUZXN0Ojp+Y21DVGVzdCgpID0gZGVmYXVsdDsKIAogaW50IGNtQ1Rlc3Q6OkdldFBhcmFsbGVsTGV2ZWwoKSBjb25zdAogewpAQCAtNzI3LDcgKzcyOCw3IEBACiAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogICAgICAgd2hpbGUgKGZpbiAmJiAobGluZS5iYWNrKCkgPT0gJ1xcJykpIHsKLSAgICAgICAgbGluZSA9IGxpbmUuc3Vic3RyKDAsIGxpbmUuc2l6ZSgpIC0gMSk7CisgICAgICAgIGxpbmUucmVzaXplKGxpbmUuc2l6ZSgpIC0gMSk7CiAgICAgICAgIGJ1ZmZlclswXSA9IDA7CiAgICAgICAgIGZpbi5nZXRsaW5lKGJ1ZmZlciwgMTAyMyk7CiAgICAgICAgIGJ1ZmZlclsxMDIzXSA9IDA7CkBAIC03NDEsNyArNzQyLDcgQEAKICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAgICAgICBzdGQ6OnN0cmluZyBrZXkgPSBsaW5lLnN1YnN0cigwLCBjcG9zKTsKLSAgICAgIHN0ZDo6c3RyaW5nIHZhbHVlID0gY21DVGVzdDo6Q2xlYW5TdHJpbmcobGluZS5zdWJzdHIoY3BvcyArIDEpKTsKKyAgICAgIHN0ZDo6c3RyaW5nIHZhbHVlID0gY21DVGVzdDo6Q2xlYW5TdHJpbmcobGluZSwgY3BvcyArIDEpOwogICAgICAgdGhpcy0+SW1wbC0+Q1Rlc3RDb25maWd1cmF0aW9uW2tleV0gPSB2YWx1ZTsKICAgICB9CiAgICAgZmluLmNsb3NlKCk7CkBAIC0xNDQyLDE2ICsxNDQzLDE1IEBACiAgICAgcmV0dXJuOwogICB9CiAgIC8vIFRoaXMgY29kZSBzaG91bGQgZ28gd2hlbiBjZGFzaCBpcyBjaGFuZ2VkIHRvIHVzZSBsYWJlbHMgb25seQotICBjb25zdCBjaGFyKiBzdWJwcm9qZWN0ID0gY20tPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KCJTdWJQcm9qZWN0Iik7CisgIGNtUHJvcCBzdWJwcm9qZWN0ID0gY20tPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KCJTdWJQcm9qZWN0Iik7CiAgIGlmIChzdWJwcm9qZWN0KSB7CiAgICAgeG1sLlN0YXJ0RWxlbWVudCgiU3VicHJvamVjdCIpOwotICAgIHhtbC5BdHRyaWJ1dGUoIm5hbWUiLCBzdWJwcm9qZWN0KTsKLSAgICBjb25zdCBjaGFyKiBsYWJlbHMgPQorICAgIHhtbC5BdHRyaWJ1dGUoIm5hbWUiLCAqc3VicHJvamVjdCk7CisgICAgY21Qcm9wIGxhYmVscyA9CiAgICAgICBjaC0+R2V0Q01ha2UoKS0+R2V0U3RhdGUoKS0+R2V0R2xvYmFsUHJvcGVydHkoIlN1YlByb2plY3RMYWJlbHMiKTsKICAgICBpZiAobGFiZWxzKSB7CiAgICAgICB4bWwuU3RhcnRFbGVtZW50KCJMYWJlbHMiKTsKLSAgICAgIHN0ZDo6c3RyaW5nIGwgPSBsYWJlbHM7Ci0gICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYXJncyA9IGNtRXhwYW5kZWRMaXN0KGwpOworICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGFyZ3MgPSBjbUV4cGFuZGVkTGlzdCgqbGFiZWxzKTsKICAgICAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGkgOiBhcmdzKSB7CiAgICAgICAgIHhtbC5FbGVtZW50KCJMYWJlbCIsIGkpOwogICAgICAgfQpAQCAtMTQ2MSwxMCArMTQ2MSwxMCBAQAogICB9CiAKICAgLy8gVGhpcyBjb2RlIHNob3VsZCBzdGF5IHdoZW4gY2Rhc2ggb25seSBkb2VzIGxhYmVsIGJhc2VkIHN1Yi1wcm9qZWN0cwotICBjb25zdCBjaGFyKiBsYWJlbCA9IGNtLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eSgiTGFiZWwiKTsKKyAgY21Qcm9wIGxhYmVsID0gY20tPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KCJMYWJlbCIpOwogICBpZiAobGFiZWwpIHsKICAgICB4bWwuU3RhcnRFbGVtZW50KCJMYWJlbHMiKTsKLSAgICB4bWwuRWxlbWVudCgiTGFiZWwiLCBsYWJlbCk7CisgICAgeG1sLkVsZW1lbnQoIkxhYmVsIiwgKmxhYmVsKTsKICAgICB4bWwuRW5kRWxlbWVudCgpOwogICB9CiB9CkBAIC0xODE2LDEwICsxODE2LDEwIEBACiAgICAgICA8PCAiICBjdGVzdCAtRCBOaWdodGx5TWVtb3J5Q2hlY2siIDw8IHN0ZDo6ZW5kbCk7CiB9CiAKLWJvb2wgY21DVGVzdDo6Q2hlY2tBcmd1bWVudChjb25zdCBzdGQ6OnN0cmluZyYgYXJnLCBjb25zdCBjaGFyKiB2YXJnMSwKK2Jvb2wgY21DVGVzdDo6Q2hlY2tBcmd1bWVudChjb25zdCBzdGQ6OnN0cmluZyYgYXJnLCBjbTo6c3RyaW5nX3ZpZXcgdmFyZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdmFyZzIpCiB7Ci0gIHJldHVybiAodmFyZzEgJiYgYXJnID09IHZhcmcxKSB8fCAodmFyZzIgJiYgYXJnID09IHZhcmcyKTsKKyAgcmV0dXJuIChhcmcgPT0gdmFyZzEpIHx8ICh2YXJnMiAmJiBhcmcgPT0gdmFyZzIpOwogfQogCiAvLyBQcm9jZXNzZXMgb25lIGNvbW1hbmQgbGluZSBhcmd1bWVudCAoYW5kIGl0cyBhcmd1bWVudHMgaWYgYW55KQpAQCAtMTgyOSwyMSArMTgyOSwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyYgZXJyb3Jtc2cpCiB7CiAgIHN0ZDo6c3RyaW5nIGFyZyA9IGFyZ3NbaV07Ci0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1GIikpIHsKKyAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLUYiX3MpKSB7CiAgICAgdGhpcy0+SW1wbC0+RmFpbG92ZXIgPSB0cnVlOwotICB9Ci0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1qIiwgIi0tcGFyYWxsZWwiKSAmJiBpIDwgYXJncy5zaXplKCkgLSAxKSB7CisgIH0gZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItaiJfcywgIi0tcGFyYWxsZWwiKSAmJgorICAgICAgICAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICBpKys7CiAgICAgaW50IHBsZXZlbCA9IGF0b2koYXJnc1tpXS5jX3N0cigpKTsKICAgICB0aGlzLT5TZXRQYXJhbGxlbExldmVsKHBsZXZlbCk7CiAgICAgdGhpcy0+SW1wbC0+UGFyYWxsZWxMZXZlbFNldEluQ2xpID0gdHJ1ZTsKLSAgfSBlbHNlIGlmIChhcmcuZmluZCgiLWoiKSA9PSAwKSB7CisgIH0gZWxzZSBpZiAoY21IYXNQcmVmaXgoYXJnLCAiLWoiKSkgewogICAgIGludCBwbGV2ZWwgPSBhdG9pKGFyZy5zdWJzdHIoMikuY19zdHIoKSk7CiAgICAgdGhpcy0+U2V0UGFyYWxsZWxMZXZlbChwbGV2ZWwpOwogICAgIHRoaXMtPkltcGwtPlBhcmFsbGVsTGV2ZWxTZXRJbkNsaSA9IHRydWU7CiAgIH0KIAotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXJlcGVhdC11bnRpbC1mYWlsIikpIHsKKyAgZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXJlcGVhdC11bnRpbC1mYWlsIl9zKSkgewogICAgIGlmIChpID49IGFyZ3Muc2l6ZSgpIC0gMSkgewogICAgICAgZXJyb3Jtc2cgPSAiJy0tcmVwZWF0LXVudGlsLWZhaWwnIHJlcXVpcmVzIGFuIGFyZ3VtZW50IjsKICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4NTUsOCArMTg1NSw4IEBACiAgICAgaSsrOwogICAgIGxvbmcgcmVwZWF0ID0gMTsKICAgICBpZiAoIWNtU3RyVG9Mb25nKGFyZ3NbaV0sICZyZXBlYXQpKSB7Ci0gICAgICBlcnJvcm1zZyA9Ci0gICAgICAgICInLS1yZXBlYXQtdW50aWwtZmFpbCcgZ2l2ZW4gbm9uLWludGVnZXIgdmFsdWUgJyIgKyBhcmdzW2ldICsgIiciOworICAgICAgZXJyb3Jtc2cgPSBjbVN0ckNhdCgiJy0tcmVwZWF0LXVudGlsLWZhaWwnIGdpdmVuIG5vbi1pbnRlZ2VyIHZhbHVlICciLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzW2ldLCAiJyIpOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB0aGlzLT5JbXBsLT5SZXBlYXRDb3VudCA9IHN0YXRpY19jYXN0PGludD4ocmVwZWF0KTsKQEAgLTE4NjUsNyArMTg2NSw3IEBACiAgICAgfQogICB9CiAKLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1yZXBlYXQiKSkgeworICBlbHNlIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tcmVwZWF0Il9zKSkgewogICAgIGlmIChpID49IGFyZ3Muc2l6ZSgpIC0gMSkgewogICAgICAgZXJyb3Jtc2cgPSAiJy0tcmVwZWF0JyByZXF1aXJlcyBhbiBhcmd1bWVudCI7CiAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODkzLDEyICsxODkzLDEyIEBACiAgICAgICAgIH0KICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgZXJyb3Jtc2cgPSAiJy0tcmVwZWF0JyBnaXZlbiBpbnZhbGlkIHZhbHVlICciICsgYXJnc1tpXSArICInIjsKKyAgICAgIGVycm9ybXNnID0gY21TdHJDYXQoIictLXJlcGVhdCcgZ2l2ZW4gaW52YWxpZCB2YWx1ZSAnIiwgYXJnc1tpXSwgIiciKTsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgIH0KIAotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXRlc3QtbG9hZCIpICYmIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKKyAgZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXRlc3QtbG9hZCJfcykgJiYgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgewogICAgIGkrKzsKICAgICB1bnNpZ25lZCBsb25nIGxvYWQ7CiAgICAgaWYgKGNtU3RyVG9VTG9uZyhhcmdzW2ldLCAmbG9hZCkpIHsKQEAgLTE5MDksNzYgKzE5MDksNjYgQEAKICAgICB9CiAgIH0KIAotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLW5vLWNvbXByZXNzLW91dHB1dCIpKSB7CisgIGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1uby1jb21wcmVzcy1vdXRwdXQiX3MpKSB7CiAgICAgdGhpcy0+SW1wbC0+Q29tcHJlc3NUZXN0T3V0cHV0ID0gZmFsc2U7CiAgIH0KIAotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXByaW50LWxhYmVscyIpKSB7CisgIGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1wcmludC1sYWJlbHMiX3MpKSB7CiAgICAgdGhpcy0+SW1wbC0+UHJpbnRMYWJlbHMgPSB0cnVlOwogICB9CiAKLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1odHRwMS4wIikpIHsKKyAgZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLWh0dHAxLjAiX3MpKSB7CiAgICAgdGhpcy0+SW1wbC0+VXNlSFRUUDEwID0gdHJ1ZTsKICAgfQogCi0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tdGltZW91dCIpICYmIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKKyAgZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXRpbWVvdXQiX3MpICYmIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICBpKys7CiAgICAgYXV0byB0aW1lb3V0ID0gY21EdXJhdGlvbihhdG9mKGFyZ3NbaV0uY19zdHIoKSkpOwogICAgIHRoaXMtPkltcGwtPkdsb2JhbFRpbWVvdXQgPSB0aW1lb3V0OwogICB9CiAKLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1zdG9wLXRpbWUiKSAmJiBpIDwgYXJncy5zaXplKCkgLSAxKSB7CisgIGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1zdG9wLXRpbWUiX3MpICYmIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICBpKys7CiAgICAgdGhpcy0+U2V0U3RvcFRpbWUoYXJnc1tpXSk7CiAgIH0KIAotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItQyIsICItLWJ1aWxkLWNvbmZpZyIpICYmCi0gICAgICBpIDwgYXJncy5zaXplKCkgLSAxKSB7CisgIGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLUMiX3MsICItLWJ1aWxkLWNvbmZpZyIpICYmCisgICAgICAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICBpKys7CiAgICAgdGhpcy0+U2V0Q29uZmlnVHlwZShhcmdzW2ldLmNfc3RyKCkpOwogICB9CiAKLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1kZWJ1ZyIpKSB7CisgIGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1kZWJ1ZyJfcykpIHsKICAgICB0aGlzLT5JbXBsLT5EZWJ1ZyA9IHRydWU7CiAgICAgdGhpcy0+SW1wbC0+U2hvd0xpbmVOdW1iZXJzID0gdHJ1ZTsKLSAgfQotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLWdyb3VwIikgJiYgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgeworICB9IGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1ncm91cCJfcykgJiYgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgewogICAgIGkrKzsKICAgICB0aGlzLT5JbXBsLT5TcGVjaWZpY0dyb3VwID0gYXJnc1tpXTsKICAgfQogICAvLyBUaGlzIGlzIGFuIHVuZG9jdW1lbnRlZCAvIGRlcHJlY2F0ZWQgb3B0aW9uLgogICAvLyAiVHJhY2siIGhhcyBiZWVuIHJlbmFtZWQgdG8gIkdyb3VwIi4KLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS10cmFjayIpICYmIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKKyAgZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXRyYWNrIl9zKSAmJiBpIDwgYXJncy5zaXplKCkgLSAxKSB7CiAgICAgaSsrOwogICAgIHRoaXMtPkltcGwtPlNwZWNpZmljR3JvdXAgPSBhcmdzW2ldOwotICB9Ci0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tc2hvdy1saW5lLW51bWJlcnMiKSkgeworICB9IGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1zaG93LWxpbmUtbnVtYmVycyJfcykpIHsKICAgICB0aGlzLT5JbXBsLT5TaG93TGluZU51bWJlcnMgPSB0cnVlOwotICB9Ci0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tbm8tbGFiZWwtc3VtbWFyeSIpKSB7CisgIH0gZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLW5vLWxhYmVsLXN1bW1hcnkiX3MpKSB7CiAgICAgdGhpcy0+SW1wbC0+TGFiZWxTdW1tYXJ5ID0gZmFsc2U7Ci0gIH0KLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1uby1zdWJwcm9qZWN0LXN1bW1hcnkiKSkgeworICB9IGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1uby1zdWJwcm9qZWN0LXN1bW1hcnkiX3MpKSB7CiAgICAgdGhpcy0+SW1wbC0+U3VicHJvamVjdFN1bW1hcnkgPSBmYWxzZTsKLSAgfQotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItUSIsICItLXF1aWV0IikpIHsKKyAgfSBlbHNlIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1RIl9zLCAiLS1xdWlldCIpKSB7CiAgICAgdGhpcy0+SW1wbC0+UXVpZXQgPSB0cnVlOwotICB9Ci0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tcHJvZ3Jlc3MiKSkgeworICB9IGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1wcm9ncmVzcyJfcykpIHsKICAgICB0aGlzLT5JbXBsLT5UZXN0UHJvZ3Jlc3NPdXRwdXQgPSB0cnVlOwotICB9Ci0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1WIiwgIi0tdmVyYm9zZSIpKSB7CisgIH0gZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItViJfcywgIi0tdmVyYm9zZSIpKSB7CiAgICAgdGhpcy0+SW1wbC0+VmVyYm9zZSA9IHRydWU7Ci0gIH0KLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLVZWIiwgIi0tZXh0cmEtdmVyYm9zZSIpKSB7CisgIH0gZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItVlYiX3MsICItLWV4dHJhLXZlcmJvc2UiKSkgewogICAgIHRoaXMtPkltcGwtPkV4dHJhVmVyYm9zZSA9IHRydWU7CiAgICAgdGhpcy0+SW1wbC0+VmVyYm9zZSA9IHRydWU7Ci0gIH0KLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1vdXRwdXQtb24tZmFpbHVyZSIpKSB7CisgIH0gZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLW91dHB1dC1vbi1mYWlsdXJlIl9zKSkgewogICAgIHRoaXMtPkltcGwtPk91dHB1dFRlc3RPdXRwdXRPblRlc3RGYWlsdXJlID0gdHJ1ZTsKLSAgfQotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXRlc3Qtb3V0cHV0LXNpemUtcGFzc2VkIikgJiYKLSAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKKyAgfSBlbHNlIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tdGVzdC1vdXRwdXQtc2l6ZS1wYXNzZWQiX3MpICYmCisgICAgICAgICAgICAgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgewogICAgIGkrKzsKICAgICBsb25nIG91dHB1dFNpemU7CiAgICAgaWYgKGNtU3RyVG9Mb25nKGFyZ3NbaV0sICZvdXRwdXRTaXplKSkgewpAQCAtMTk4OCw5ICsxOTc4LDggQEAKICAgICAgICAgICAgICAgICAgIkludmFsaWQgdmFsdWUgZm9yICctLXRlc3Qtb3V0cHV0LXNpemUtcGFzc2VkJzogIiA8PCBhcmdzW2ldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIik7CiAgICAgfQotICB9Ci0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tdGVzdC1vdXRwdXQtc2l6ZS1mYWlsZWQiKSAmJgotICAgICAgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgeworICB9IGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS10ZXN0LW91dHB1dC1zaXplLWZhaWxlZCJfcykgJiYKKyAgICAgICAgICAgICBpIDwgYXJncy5zaXplKCkgLSAxKSB7CiAgICAgaSsrOwogICAgIGxvbmcgb3V0cHV0U2l6ZTsKICAgICBpZiAoY21TdHJUb0xvbmcoYXJnc1tpXSwgJm91dHB1dFNpemUpKSB7CkBAIC0yMDAwLDExICsxOTg5LDkgQEAKICAgICAgICAgICAgICAgICAgIkludmFsaWQgdmFsdWUgZm9yICctLXRlc3Qtb3V0cHV0LXNpemUtZmFpbGVkJzogIiA8PCBhcmdzW2ldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIik7CiAgICAgfQotICB9Ci0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1OIiwgIi0tc2hvdy1vbmx5IikpIHsKKyAgfSBlbHNlIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1OIl9zLCAiLS1zaG93LW9ubHkiKSkgewogICAgIHRoaXMtPkltcGwtPlNob3dPbmx5ID0gdHJ1ZTsKLSAgfQotICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0tc2hvdy1vbmx5PSIpKSB7CisgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0tc2hvdy1vbmx5PSIpKSB7CiAgICAgdGhpcy0+SW1wbC0+U2hvd09ubHkgPSB0cnVlOwogCiAgICAgLy8gQ2hlY2sgaWYgYSBzcGVjaWZpYyBmb3JtYXQgaXMgcmVxdWVzdGVkLiBEZWZhdWx0cyB0byBodW1hbiByZWFkYWJsZQpAQCAtMjAyMiwyNyArMjAwOSwyNiBAQAogICAgIH0KICAgfQogCi0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1PIiwgIi0tb3V0cHV0LWxvZyIpICYmIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKKyAgZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItTyJfcywgIi0tb3V0cHV0LWxvZyIpICYmCisgICAgICAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICBpKys7CiAgICAgdGhpcy0+U2V0T3V0cHV0TG9nRmlsZU5hbWUoYXJnc1tpXS5jX3N0cigpKTsKICAgfQogCi0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tdG9tb3Jyb3ctdGFnIikpIHsKKyAgZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXRvbW9ycm93LXRhZyJfcykpIHsKICAgICB0aGlzLT5JbXBsLT5Ub21vcnJvd1RhZyA9IHRydWU7Ci0gIH0KLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1mb3JjZS1uZXctY3Rlc3QtcHJvY2VzcyIpKSB7CisgIH0gZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLWZvcmNlLW5ldy1jdGVzdC1wcm9jZXNzIl9zKSkgewogICAgIHRoaXMtPkltcGwtPkZvcmNlTmV3Q1Rlc3RQcm9jZXNzID0gdHJ1ZTsKLSAgfQotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItVyIsICItLW1heC13aWR0aCIpICYmIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKKyAgfSBlbHNlIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1XIl9zLCAiLS1tYXgtd2lkdGgiKSAmJgorICAgICAgICAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICBpKys7CiAgICAgdGhpcy0+SW1wbC0+TWF4VGVzdE5hbWVXaWR0aCA9IGF0b2koYXJnc1tpXS5jX3N0cigpKTsKLSAgfQotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLWludGVyYWN0aXZlLWRlYnVnLW1vZGUiKSAmJgotICAgICAgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgeworICB9IGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1pbnRlcmFjdGl2ZS1kZWJ1Zy1tb2RlIl9zKSAmJgorICAgICAgICAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICBpKys7CiAgICAgdGhpcy0+SW1wbC0+SW50ZXJhY3RpdmVEZWJ1Z01vZGUgPSBjbUlzT24oYXJnc1tpXSk7Ci0gIH0KLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1zdWJtaXQtaW5kZXgiKSAmJiBpIDwgYXJncy5zaXplKCkgLSAxKSB7CisgIH0gZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXN1Ym1pdC1pbmRleCJfcykgJiYKKyAgICAgICAgICAgICBpIDwgYXJncy5zaXplKCkgLSAxKSB7CiAgICAgaSsrOwogICAgIHRoaXMtPkltcGwtPlN1Ym1pdEluZGV4ID0gYXRvaShhcmdzW2ldLmNfc3RyKCkpOwogICAgIGlmICh0aGlzLT5JbXBsLT5TdWJtaXRJbmRleCA8IDApIHsKQEAgLTIwNTAsMjQgKzIwMzYsMjcgQEAKICAgICB9CiAgIH0KIAotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLW92ZXJ3cml0ZSIpICYmIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKKyAgZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLW92ZXJ3cml0ZSJfcykgJiYgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgewogICAgIGkrKzsKICAgICB0aGlzLT5BZGRDVGVzdENvbmZpZ3VyYXRpb25PdmVyd3JpdGUoYXJnc1tpXSk7Ci0gIH0KLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLUEiLCAiLS1hZGQtbm90ZXMiKSAmJiBpIDwgYXJncy5zaXplKCkgLSAxKSB7CisgIH0gZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItQSJfcywgIi0tYWRkLW5vdGVzIikgJiYKKyAgICAgICAgICAgICBpIDwgYXJncy5zaXplKCkgLSAxKSB7CiAgICAgdGhpcy0+SW1wbC0+UHJvZHVjZVhNTCA9IHRydWU7CiAgICAgdGhpcy0+U2V0VGVzdCgiTm90ZXMiKTsKICAgICBpKys7CiAgICAgdGhpcy0+U2V0Tm90ZXNGaWxlcyhhcmdzW2ldLmNfc3RyKCkpOworICAgIHJldHVybiB0cnVlOwogICB9CiAKLSAgY29uc3Qgc3RkOjpzdHJpbmcgbm9UZXN0c1ByZWZpeCA9ICItLW5vLXRlc3RzPSI7CisgIGNtOjpzdHJpbmdfdmlldyBub1Rlc3RzUHJlZml4ID0gIi0tbm8tdGVzdHM9IjsKICAgaWYgKGNtSGFzUHJlZml4KGFyZywgbm9UZXN0c1ByZWZpeCkpIHsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBub1Rlc3RzTW9kZSA9IGFyZy5zdWJzdHIobm9UZXN0c1ByZWZpeC5sZW5ndGgoKSk7CisgICAgY206OnN0cmluZ192aWV3IG5vVGVzdHNNb2RlID0KKyAgICAgIGNtOjpzdHJpbmdfdmlldyhhcmcpLnN1YnN0cihub1Rlc3RzUHJlZml4Lmxlbmd0aCgpKTsKICAgICBpZiAobm9UZXN0c01vZGUgPT0gImVycm9yIikgewogICAgICAgdGhpcy0+SW1wbC0+Tm9UZXN0c01vZGUgPSBjbUNUZXN0OjpOb1Rlc3RzOjpFcnJvcjsKICAgICB9IGVsc2UgaWYgKG5vVGVzdHNNb2RlICE9ICJpZ25vcmUiKSB7Ci0gICAgICBlcnJvcm1zZyA9ICInLS1uby10ZXN0cz0nIGdpdmVuIHVua25vd24gdmFsdWUgJyIgKyBub1Rlc3RzTW9kZSArICInIjsKKyAgICAgIGVycm9ybXNnID0KKyAgICAgICAgY21TdHJDYXQoIictLW5vLXRlc3RzPScgZ2l2ZW4gdW5rbm93biB2YWx1ZSAnIiwgbm9UZXN0c01vZGUsICdcJycpOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gZWxzZSB7CiAgICAgICB0aGlzLT5JbXBsLT5Ob1Rlc3RzTW9kZSA9IGNtQ1Rlc3Q6Ok5vVGVzdHM6Oklnbm9yZTsKQEAgLTIwNzUsMzQgKzIwNjQsMzIgQEAKICAgfQogCiAgIC8vIG9wdGlvbnMgdGhhdCBjb250cm9sIHdoYXQgdGVzdHMgYXJlIHJ1bgotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItSSIsICItLXRlc3RzLWluZm9ybWF0aW9uIikgJiYKLSAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKKyAgZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItSSJfcywgIi0tdGVzdHMtaW5mb3JtYXRpb24iKSAmJgorICAgICAgICAgICBpIDwgYXJncy5zaXplKCkgLSAxKSB7CiAgICAgaSsrOwogICAgIHRoaXMtPkdldFRlc3RIYW5kbGVyKCktPlNldFBlcnNpc3RlbnRPcHRpb24oIlRlc3RzVG9SdW5JbmZvcm1hdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzW2ldLmNfc3RyKCkpOwogICAgIHRoaXMtPkdldE1lbUNoZWNrSGFuZGxlcigpLT5TZXRQZXJzaXN0ZW50T3B0aW9uKCJUZXN0c1RvUnVuSW5mb3JtYXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0uY19zdHIoKSk7Ci0gIH0KLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLVUiLCAiLS11bmlvbiIpKSB7CisgIH0gZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItVSJfcywgIi0tdW5pb24iKSkgewogICAgIHRoaXMtPkdldFRlc3RIYW5kbGVyKCktPlNldFBlcnNpc3RlbnRPcHRpb24oIlVzZVVuaW9uIiwgInRydWUiKTsKICAgICB0aGlzLT5HZXRNZW1DaGVja0hhbmRsZXIoKS0+U2V0UGVyc2lzdGVudE9wdGlvbigiVXNlVW5pb24iLCAidHJ1ZSIpOwotICB9Ci0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1SIiwgIi0tdGVzdHMtcmVnZXgiKSAmJiBpIDwgYXJncy5zaXplKCkgLSAxKSB7CisgIH0gZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItUiJfcywgIi0tdGVzdHMtcmVnZXgiKSAmJgorICAgICAgICAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICBpKys7CiAgICAgdGhpcy0+R2V0VGVzdEhhbmRsZXIoKS0+U2V0UGVyc2lzdGVudE9wdGlvbigiSW5jbHVkZVJlZ3VsYXJFeHByZXNzaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0uY19zdHIoKSk7CiAgICAgdGhpcy0+R2V0TWVtQ2hlY2tIYW5kbGVyKCktPlNldFBlcnNpc3RlbnRPcHRpb24oIkluY2x1ZGVSZWd1bGFyRXhwcmVzc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1tpXS5jX3N0cigpKTsKLSAgfQotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItTCIsICItLWxhYmVsLXJlZ2V4IikgJiYgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgeworICB9IGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLUwiX3MsICItLWxhYmVsLXJlZ2V4IikgJiYKKyAgICAgICAgICAgICBpIDwgYXJncy5zaXplKCkgLSAxKSB7CiAgICAgaSsrOwogICAgIHRoaXMtPkdldFRlc3RIYW5kbGVyKCktPlNldFBlcnNpc3RlbnRPcHRpb24oIkxhYmVsUmVndWxhckV4cHJlc3Npb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1tpXS5jX3N0cigpKTsKICAgICB0aGlzLT5HZXRNZW1DaGVja0hhbmRsZXIoKS0+U2V0UGVyc2lzdGVudE9wdGlvbigiTGFiZWxSZWd1bGFyRXhwcmVzc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1tpXS5jX3N0cigpKTsKLSAgfQotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItTEUiLCAiLS1sYWJlbC1leGNsdWRlIikgJiYKLSAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKKyAgfSBlbHNlIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1MRSJfcywgIi0tbGFiZWwtZXhjbHVkZSIpICYmCisgICAgICAgICAgICAgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgewogICAgIGkrKzsKICAgICB0aGlzLT5HZXRUZXN0SGFuZGxlcigpLT5TZXRQZXJzaXN0ZW50T3B0aW9uKAogICAgICAgIkV4Y2x1ZGVMYWJlbFJlZ3VsYXJFeHByZXNzaW9uIiwgYXJnc1tpXS5jX3N0cigpKTsKQEAgLTIxMTAsOCArMjA5Nyw4IEBACiAgICAgICAiRXhjbHVkZUxhYmVsUmVndWxhckV4cHJlc3Npb24iLCBhcmdzW2ldLmNfc3RyKCkpOwogICB9CiAKLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLUUiLCAiLS1leGNsdWRlLXJlZ2V4IikgJiYKLSAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKKyAgZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItRSJfcywgIi0tZXhjbHVkZS1yZWdleCIpICYmCisgICAgICAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICBpKys7CiAgICAgdGhpcy0+R2V0VGVzdEhhbmRsZXIoKS0+U2V0UGVyc2lzdGVudE9wdGlvbigiRXhjbHVkZVJlZ3VsYXJFeHByZXNzaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0uY19zdHIoKSk7CkBAIC0yMTE5LDI0ICsyMTA2LDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1tpXS5jX3N0cigpKTsKICAgfQogCi0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1GQSIsICItLWZpeHR1cmUtZXhjbHVkZS1hbnkiKSAmJgotICAgICAgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgeworICBlbHNlIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1GQSJfcywgIi0tZml4dHVyZS1leGNsdWRlLWFueSIpICYmCisgICAgICAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICBpKys7CiAgICAgdGhpcy0+R2V0VGVzdEhhbmRsZXIoKS0+U2V0UGVyc2lzdGVudE9wdGlvbigKICAgICAgICJFeGNsdWRlRml4dHVyZVJlZ3VsYXJFeHByZXNzaW9uIiwgYXJnc1tpXS5jX3N0cigpKTsKICAgICB0aGlzLT5HZXRNZW1DaGVja0hhbmRsZXIoKS0+U2V0UGVyc2lzdGVudE9wdGlvbigKICAgICAgICJFeGNsdWRlRml4dHVyZVJlZ3VsYXJFeHByZXNzaW9uIiwgYXJnc1tpXS5jX3N0cigpKTsKLSAgfQotICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItRlMiLCAiLS1maXh0dXJlLWV4Y2x1ZGUtc2V0dXAiKSAmJgotICAgICAgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgeworICB9IGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLUZTIl9zLCAiLS1maXh0dXJlLWV4Y2x1ZGUtc2V0dXAiKSAmJgorICAgICAgICAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICBpKys7CiAgICAgdGhpcy0+R2V0VGVzdEhhbmRsZXIoKS0+U2V0UGVyc2lzdGVudE9wdGlvbigKICAgICAgICJFeGNsdWRlRml4dHVyZVNldHVwUmVndWxhckV4cHJlc3Npb24iLCBhcmdzW2ldLmNfc3RyKCkpOwogICAgIHRoaXMtPkdldE1lbUNoZWNrSGFuZGxlcigpLT5TZXRQZXJzaXN0ZW50T3B0aW9uKAogICAgICAgIkV4Y2x1ZGVGaXh0dXJlU2V0dXBSZWd1bGFyRXhwcmVzc2lvbiIsIGFyZ3NbaV0uY19zdHIoKSk7Ci0gIH0KLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLUZDIiwgIi0tZml4dHVyZS1leGNsdWRlLWNsZWFudXAiKSAmJgotICAgICAgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgeworICB9IGVsc2UgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLUZDIl9zLCAiLS1maXh0dXJlLWV4Y2x1ZGUtY2xlYW51cCIpICYmCisgICAgICAgICAgICAgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgewogICAgIGkrKzsKICAgICB0aGlzLT5HZXRUZXN0SGFuZGxlcigpLT5TZXRQZXJzaXN0ZW50T3B0aW9uKAogICAgICAgIkV4Y2x1ZGVGaXh0dXJlQ2xlYW51cFJlZ3VsYXJFeHByZXNzaW9uIiwgYXJnc1tpXS5jX3N0cigpKTsKQEAgLTIxNDQsOCArMjEyOSw4IEBACiAgICAgICAiRXhjbHVkZUZpeHR1cmVDbGVhbnVwUmVndWxhckV4cHJlc3Npb24iLCBhcmdzW2ldLmNfc3RyKCkpOwogICB9CiAKLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1yZXNvdXJjZS1zcGVjLWZpbGUiKSAmJgotICAgICAgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgeworICBlbHNlIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tcmVzb3VyY2Utc3BlYy1maWxlIl9zKSAmJgorICAgICAgICAgICBpIDwgYXJncy5zaXplKCkgLSAxKSB7CiAgICAgaSsrOwogICAgIHRoaXMtPkdldFRlc3RIYW5kbGVyKCktPlNldFBlcnNpc3RlbnRPcHRpb24oIlJlc291cmNlU3BlY0ZpbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1tpXS5jX3N0cigpKTsKQEAgLTIxNTMsNyArMjEzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1tpXS5jX3N0cigpKTsKICAgfQogCi0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tcmVydW4tZmFpbGVkIikpIHsKKyAgZWxzZSBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXJlcnVuLWZhaWxlZCJfcykpIHsKICAgICB0aGlzLT5HZXRUZXN0SGFuZGxlcigpLT5TZXRQZXJzaXN0ZW50T3B0aW9uKCJSZXJ1bkZhaWxlZCIsICJ0cnVlIik7CiAgICAgdGhpcy0+R2V0TWVtQ2hlY2tIYW5kbGVyKCktPlNldFBlcnNpc3RlbnRPcHRpb24oIlJlcnVuRmFpbGVkIiwgInRydWUiKTsKICAgfQpAQCAtMjIwNSw3ICsyMTkwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIFNSQXJndW1lbnRTcGVjaWZpZWQpCiB7CiAgIHN0ZDo6c3RyaW5nIGFyZyA9IGFyZ3NbaV07Ci0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1TUCIsICItLXNjcmlwdC1uZXctcHJvY2VzcyIpICYmCisgIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1TUCJfcywgIi0tc2NyaXB0LW5ldy1wcm9jZXNzIikgJiYKICAgICAgIGkgPCBhcmdzLnNpemUoKSAtIDEpIHsKICAgICB0aGlzLT5JbXBsLT5SdW5Db25maWd1cmF0aW9uU2NyaXB0ID0gdHJ1ZTsKICAgICBpKys7CkBAIC0yMjE2LDcgKzIyMDEsOCBAQAogICAgIH0KICAgfQogCi0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1TUiIsICItLXNjcmlwdC1ydW4iKSAmJiBpIDwgYXJncy5zaXplKCkgLSAxKSB7CisgIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1TUiJfcywgIi0tc2NyaXB0LXJ1biIpICYmCisgICAgICBpIDwgYXJncy5zaXplKCkgLSAxKSB7CiAgICAgU1JBcmd1bWVudFNwZWNpZmllZCA9IHRydWU7CiAgICAgdGhpcy0+SW1wbC0+UnVuQ29uZmlndXJhdGlvblNjcmlwdCA9IHRydWU7CiAgICAgaSsrOwpAQCAtMjIyNCw3ICsyMjEwLDcgQEAKICAgICBjaC0+QWRkQ29uZmlndXJhdGlvblNjcmlwdChhcmdzW2ldLmNfc3RyKCksIHRydWUpOwogICB9CiAKLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLVMiLCAiLS1zY3JpcHQiKSAmJiBpIDwgYXJncy5zaXplKCkgLSAxKSB7CisgIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1TIl9zLCAiLS1zY3JpcHQiKSAmJiBpIDwgYXJncy5zaXplKCkgLSAxKSB7CiAgICAgdGhpcy0+SW1wbC0+UnVuQ29uZmlndXJhdGlvblNjcmlwdCA9IHRydWU7CiAgICAgaSsrOwogICAgIGNtQ1Rlc3RTY3JpcHRIYW5kbGVyKiBjaCA9IHRoaXMtPkdldFNjcmlwdEhhbmRsZXIoKTsKQEAgLTIyNzQsNyArMjI2MCw4IEBACiAKICAgICAvLyAtLWRhc2hib2FyZDogaGFuZGxlIGEgcmVxdWVzdCBmb3IgYSBkYXNoYm9hcmQKICAgICBzdGQ6OnN0cmluZyBhcmcgPSBhcmdzW2ldOwotICAgIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1EIiwgIi0tZGFzaGJvYXJkIikgJiYgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgeworICAgIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1EIl9zLCAiLS1kYXNoYm9hcmQiKSAmJgorICAgICAgICBpIDwgYXJncy5zaXplKCkgLSAxKSB7CiAgICAgICB0aGlzLT5JbXBsLT5Qcm9kdWNlWE1MID0gdHJ1ZTsKICAgICAgIGkrKzsKICAgICAgIHN0ZDo6c3RyaW5nIHRhcmcgPSBhcmdzW2ldOwpAQCAtMjMxMCw3ICsyMjk3LDcgQEAKICAgICB9CiAKICAgICAvLyAtLWV4dHJhLXN1Ym1pdAotICAgIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tZXh0cmEtc3VibWl0IikgJiYgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgeworICAgIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tZXh0cmEtc3VibWl0Il9zKSAmJiBpIDwgYXJncy5zaXplKCkgLSAxKSB7CiAgICAgICB0aGlzLT5JbXBsLT5Qcm9kdWNlWE1MID0gdHJ1ZTsKICAgICAgIHRoaXMtPlNldFRlc3QoIlN1Ym1pdCIpOwogICAgICAgaSsrOwpAQCAtMjMyMCwxMiArMjMwNywxMyBAQAogICAgIH0KIAogICAgIC8vIC0tYnVpbGQtYW5kLXRlc3Qgb3B0aW9ucwotICAgIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tYnVpbGQtYW5kLXRlc3QiKSAmJiBpIDwgYXJncy5zaXplKCkgLSAxKSB7CisgICAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLS1idWlsZC1hbmQtdGVzdCJfcykgJiYKKyAgICAgICAgaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgewogICAgICAgY21ha2VBbmRUZXN0ID0gdHJ1ZTsKICAgICB9CiAKICAgICAvLyAtLXNjaGVkdWxlLXJhbmRvbQotICAgIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi0tc2NoZWR1bGUtcmFuZG9tIikpIHsKKyAgICBpZiAodGhpcy0+Q2hlY2tBcmd1bWVudChhcmcsICItLXNjaGVkdWxlLXJhbmRvbSJfcykpIHsKICAgICAgIHRoaXMtPkltcGwtPlNjaGVkdWxlVHlwZSA9ICJSYW5kb20iOwogICAgIH0KIApAQCAtMjM4MCw3ICsyMzY4LDcgQEAKIHsKICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgc3RkOjpzdHJpbmcgYXJnID0gYXJnc1tpXTsKLSAgaWYgKHRoaXMtPkNoZWNrQXJndW1lbnQoYXJnLCAiLVQiLCAiLS10ZXN0LWFjdGlvbiIpICYmCisgIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1UIl9zLCAiLS10ZXN0LWFjdGlvbiIpICYmCiAgICAgICAoaSA8IGFyZ3Muc2l6ZSgpIC0gMSkpIHsKICAgICB0aGlzLT5JbXBsLT5Qcm9kdWNlWE1MID0gdHJ1ZTsKICAgICBpKys7CkBAIC0yNDEyLDE1ICsyNDAwLDE1IEBACiB7CiAgIGJvb2wgc3VjY2VzcyA9IHRydWU7CiAgIHN0ZDo6c3RyaW5nIGFyZyA9IGFyZ3NbaV07Ci0gIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1NIiwgIi0tdGVzdC1tb2RlbCIpICYmCisgIGlmICh0aGlzLT5DaGVja0FyZ3VtZW50KGFyZywgIi1NIl9zLCAiLS10ZXN0LW1vZGVsIikgJiYKICAgICAgIChpIDwgYXJncy5zaXplKCkgLSAxKSkgewogICAgIGkrKzsKICAgICBzdGQ6OnN0cmluZyBjb25zdCYgc3RyID0gYXJnc1tpXTsKLSAgICBpZiAoY21TeXN0ZW1Ub29sczo6TG93ZXJDYXNlKHN0cikgPT0gIm5pZ2h0bHkiKSB7CisgICAgaWYgKGNtU3lzdGVtVG9vbHM6Okxvd2VyQ2FzZShzdHIpID09ICJuaWdodGx5Il9zKSB7CiAgICAgICB0aGlzLT5TZXRUZXN0TW9kZWwoY21DVGVzdDo6TklHSFRMWSk7Ci0gICAgfSBlbHNlIGlmIChjbVN5c3RlbVRvb2xzOjpMb3dlckNhc2Uoc3RyKSA9PSAiY29udGludW91cyIpIHsKKyAgICB9IGVsc2UgaWYgKGNtU3lzdGVtVG9vbHM6Okxvd2VyQ2FzZShzdHIpID09ICJjb250aW51b3VzIl9zKSB7CiAgICAgICB0aGlzLT5TZXRUZXN0TW9kZWwoY21DVGVzdDo6Q09OVElOVU9VUyk7Ci0gICAgfSBlbHNlIGlmIChjbVN5c3RlbVRvb2xzOjpMb3dlckNhc2Uoc3RyKSA9PSAiZXhwZXJpbWVudGFsIikgeworICAgIH0gZWxzZSBpZiAoY21TeXN0ZW1Ub29sczo6TG93ZXJDYXNlKHN0cikgPT0gImV4cGVyaW1lbnRhbCJfcykgewogICAgICAgdGhpcy0+U2V0VGVzdE1vZGVsKGNtQ1Rlc3Q6OkVYUEVSSU1FTlRBTCk7CiAgICAgfSBlbHNlIHsKICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKQEAgLTI2ODcsNyArMjY3NSw3IEBACiAKICAgICBwYXRoID0gIi4vIiArICpyZXM7CiAgICAgaWYgKHBhdGguYmFjaygpID09ICcvJykgewotICAgICAgcGF0aCA9IHBhdGguc3Vic3RyKDAsIHBhdGguc2l6ZSgpIC0gMSk7CisgICAgICBwYXRoLnJlc2l6ZShwYXRoLnNpemUoKSAtIDEpOwogICAgIH0KICAgfQogCkBAIC0yNzM4LDcgKzI3MjYsNyBAQAogICAgIHN0ZDo6c3RyaW5nIHNpdGUgPSB0aGlzLT5HZXRDVGVzdENvbmZpZ3VyYXRpb24oIkRyb3BTaXRlIik7CiAgICAgc3RkOjpzdHJpbmcgbG9jYXRpb24gPSB0aGlzLT5HZXRDVGVzdENvbmZpZ3VyYXRpb24oIkRyb3BMb2NhdGlvbiIpOwogCi0gICAgdXJsID0gY21TdHJDYXQobWV0aG9kLmVtcHR5KCkgPyAiaHR0cCIgOiBtZXRob2QsICI6Ly8iKTsKKyAgICB1cmwgPSBjbVN0ckNhdChtZXRob2QuZW1wdHkoKSA/ICJodHRwIiA6IG1ldGhvZCwgIjovLyJfcyk7CiAgICAgaWYgKCF1c2VyLmVtcHR5KCkpIHsKICAgICAgIHVybCArPSB1c2VyOwogICAgICAgaWYgKCFwYXNzd29yZC5lbXB0eSgpKSB7CkBAIC0zMDg2LDEyICszMDc0LDEwIEBACiAKIHZvaWQgY21DVGVzdDo6U2V0T3V0cHV0TG9nRmlsZU5hbWUoY29uc3QgY2hhciogbmFtZSkKIHsKLSAgaWYgKHRoaXMtPkltcGwtPk91dHB1dExvZ0ZpbGUpIHsKLSAgICBkZWxldGUgdGhpcy0+SW1wbC0+T3V0cHV0TG9nRmlsZTsKLSAgICB0aGlzLT5JbXBsLT5PdXRwdXRMb2dGaWxlID0gbnVsbHB0cjsKLSAgfQogICBpZiAobmFtZSkgewotICAgIHRoaXMtPkltcGwtPk91dHB1dExvZ0ZpbGUgPSBuZXcgY21HZW5lcmF0ZWRGaWxlU3RyZWFtKG5hbWUpOworICAgIHRoaXMtPkltcGwtPk91dHB1dExvZ0ZpbGUgPSBjbTo6bWFrZV91bmlxdWU8Y21HZW5lcmF0ZWRGaWxlU3RyZWFtPihuYW1lKTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLT5JbXBsLT5PdXRwdXRMb2dGaWxlLnJlc2V0KCk7CiAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtQ1Rlc3QuaCBiL1NvdXJjZS9jbUNUZXN0LmgKaW5kZXggN2Y4ZjkxMy4uOTg0YmUxMyAxMDA2NDQKLS0tIGEvU291cmNlL2NtQ1Rlc3QuaAorKysgYi9Tb3VyY2UvY21DVGVzdC5oCkBAIC0xMyw2ICsxMyw4IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgPGNtL3N0cmluZ192aWV3PgorCiAjaW5jbHVkZSAiY21EdXJhdGlvbi5oIgogI2luY2x1ZGUgImNtUHJvY2Vzc091dHB1dC5oIgogCkBAIC0xNDAsNyArMTQyLDggQEAKIAogICBzdGQ6OnN0cmluZyBHZXRUZXN0TW9kZWxTdHJpbmcoKTsKICAgc3RhdGljIGludCBHZXRUZXN0TW9kZWxGcm9tU3RyaW5nKGNvbnN0IGNoYXIqIHN0cik7Ci0gIHN0YXRpYyBzdGQ6OnN0cmluZyBDbGVhblN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIENsZWFuU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHNwb3MgPSAwKTsKICAgc3RkOjpzdHJpbmcgR2V0Q1Rlc3RDb25maWd1cmF0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKICAgdm9pZCBTZXRDVGVzdENvbmZpZ3VyYXRpb24oY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VwcHJlc3MgPSBmYWxzZSk7CkBAIC01MDYsOCArNTA5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gY29uc3QmIGZpbGVzKTsKIAogICAvKiogQ2hlY2sgaWYgdGhlIGFyZ3VtZW50IGlzIHRoZSBvbmUgc3BlY2lmaWVkICovCi0gIGJvb2wgQ2hlY2tBcmd1bWVudChjb25zdCBzdGQ6OnN0cmluZyYgYXJnLCBjb25zdCBjaGFyKiB2YXJnMSwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHZhcmcyID0gbnVsbHB0cik7CisgIHN0YXRpYyBib29sIENoZWNrQXJndW1lbnQoY29uc3Qgc3RkOjpzdHJpbmcmIGFyZywgY206OnN0cmluZ192aWV3IHZhcmcxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHZhcmcyID0gbnVsbHB0cik7CiAKICAgLyoqIE91dHB1dCBlcnJvcnMgZnJvbSBhIHRlc3QgKi8KICAgdm9pZCBPdXRwdXRUZXN0RXJyb3JzKHN0ZDo6dmVjdG9yPGNoYXI+IGNvbnN0JiBwcm9jZXNzX291dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21DYWNoZU1hbmFnZXIuY3h4IGIvU291cmNlL2NtQ2FjaGVNYW5hZ2VyLmN4eAppbmRleCBkYzlhYmExLi4zMWE4NjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21DYWNoZU1hbmFnZXIuY3h4CisrKyBiL1NvdXJjZS9jbUNhY2hlTWFuYWdlci5jeHgKQEAgLTc3LDcgKzc3LDcgQEAKICAgICB9CiAgICAgd2hpbGUgKHJlYWxidWZmZXJbMF0gPT0gJy8nICYmIHJlYWxidWZmZXJbMV0gPT0gJy8nKSB7CiAgICAgICBpZiAoKHJlYWxidWZmZXJbMl0gPT0gJ1xcJykgJiYgKHJlYWxidWZmZXJbM10gPT0gJ24nKSkgewotICAgICAgICBoZWxwU3RyaW5nICs9ICJcbiI7CisgICAgICAgIGhlbHBTdHJpbmcgKz0gJ1xuJzsKICAgICAgICAgaGVscFN0cmluZyArPSAmcmVhbGJ1ZmZlcls0XTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIGhlbHBTdHJpbmcgKz0gJnJlYWxidWZmZXJbMl07CkBAIC0xMTcsMjAgKzExNywyMCBAQAogICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gZXJyb3I7Ci0gICAgICBlcnJvciA8PCAiUGFyc2UgZXJyb3IgaW4gY2FjaGUgZmlsZSAiIDw8IGNhY2hlRmlsZTsKLSAgICAgIGVycm9yIDw8ICIgb24gbGluZSAiIDw8IGxpbmVubyA8PCAiLiBPZmZlbmRpbmcgZW50cnk6ICIgPDwgcmVhbGJ1ZmZlcjsKKyAgICAgIGVycm9yIDw8ICJQYXJzZSBlcnJvciBpbiBjYWNoZSBmaWxlICIgPDwgY2FjaGVGaWxlIDw8ICIgb24gbGluZSAiCisgICAgICAgICAgICA8PCBsaW5lbm8gPDwgIi4gT2ZmZW5kaW5nIGVudHJ5OiAiIDw8IHJlYWxidWZmZXI7CiAgICAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcihlcnJvci5zdHIoKSk7CiAgICAgfQogICB9CiAgIHRoaXMtPkNhY2hlTWFqb3JWZXJzaW9uID0gMDsKICAgdGhpcy0+Q2FjaGVNaW5vclZlcnNpb24gPSAwOwotICBpZiAoY29uc3Qgc3RkOjpzdHJpbmcqIGNtYWpvciA9CisgIGlmIChjbVByb3AgY21ham9yID0KICAgICAgICAgdGhpcy0+R2V0SW5pdGlhbGl6ZWRDYWNoZVZhbHVlKCJDTUFLRV9DQUNIRV9NQUpPUl9WRVJTSU9OIikpIHsKICAgICB1bnNpZ25lZCBpbnQgdiA9IDA7CiAgICAgaWYgKHNzY2FuZihjbWFqb3ItPmNfc3RyKCksICIldSIsICZ2KSA9PSAxKSB7CiAgICAgICB0aGlzLT5DYWNoZU1ham9yVmVyc2lvbiA9IHY7CiAgICAgfQotICAgIGlmIChjb25zdCBzdGQ6OnN0cmluZyogY21pbm9yID0KKyAgICBpZiAoY21Qcm9wIGNtaW5vciA9CiAgICAgICAgICAgdGhpcy0+R2V0SW5pdGlhbGl6ZWRDYWNoZVZhbHVlKCJDTUFLRV9DQUNIRV9NSU5PUl9WRVJTSU9OIikpIHsKICAgICAgIGlmIChzc2NhbmYoY21pbm9yLT5jX3N0cigpLCAiJXUiLCAmdikgPT0gMSkgewogICAgICAgICB0aGlzLT5DYWNoZU1pbm9yVmVyc2lvbiA9IHY7CkBAIC0xNTAsOCArMTUwLDcgQEAKICAgfQogICAvLyBjaGVjayB0byBtYWtlIHN1cmUgdGhlIGNhY2hlIGRpcmVjdG9yeSBoYXMgbm90CiAgIC8vIGJlZW4gbW92ZWQKLSAgY29uc3Qgc3RkOjpzdHJpbmcqIG9sZERpciA9Ci0gICAgdGhpcy0+R2V0SW5pdGlhbGl6ZWRDYWNoZVZhbHVlKCJDTUFLRV9DQUNIRUZJTEVfRElSIik7CisgIGNtUHJvcCBvbGREaXIgPSB0aGlzLT5HZXRJbml0aWFsaXplZENhY2hlVmFsdWUoIkNNQUtFX0NBQ0hFRklMRV9ESVIiKTsKICAgaWYgKGludGVybmFsICYmIG9sZERpcikgewogICAgIHN0ZDo6c3RyaW5nIGN1cnJlbnRjd2QgPSBwYXRoOwogICAgIHN0ZDo6c3RyaW5nIG9sZGN3ZCA9ICpvbGREaXI7CkBAIC0xNTksOCArMTU4LDcgQEAKICAgICBjdXJyZW50Y3dkICs9ICIvQ01ha2VDYWNoZS50eHQiOwogICAgIG9sZGN3ZCArPSAiL0NNYWtlQ2FjaGUudHh0IjsKICAgICBpZiAoIWNtU3lzdGVtVG9vbHM6OlNhbWVGaWxlKG9sZGN3ZCwgY3VycmVudGN3ZCkpIHsKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nKiBkaXIgPQotICAgICAgICB0aGlzLT5HZXRJbml0aWFsaXplZENhY2hlVmFsdWUoIkNNQUtFX0NBQ0hFRklMRV9ESVIiKTsKKyAgICAgIGNtUHJvcCBkaXIgPSB0aGlzLT5HZXRJbml0aWFsaXplZENhY2hlVmFsdWUoIkNNQUtFX0NBQ0hFRklMRV9ESVIiKTsKICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBtZXNzYWdlOwogICAgICAgbWVzc2FnZSA8PCAiVGhlIGN1cnJlbnQgQ01ha2VDYWNoZS50eHQgZGlyZWN0b3J5ICIgPDwgY3VycmVudGN3ZAogICAgICAgICAgICAgICA8PCAiIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBkaXJlY3RvcnkgIiA8PCAoZGlyID8gKmRpciA6ICIiKQpAQCAtMjEwLDcgKzIwOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbU1lc3NlbmdlciogbWVzc2VuZ2VyKQogewogICBmb3IgKGNvbnN0IGNoYXIqKiBwID0gY21DYWNoZU1hbmFnZXI6OlBlcnNpc3RlbnRQcm9wZXJ0aWVzOyAqcDsgKytwKSB7Ci0gICAgaWYgKGNvbnN0IGNoYXIqIHZhbHVlID0gaS5HZXRQcm9wZXJ0eSgqcCkpIHsKKyAgICBpZiAoY21Qcm9wIHZhbHVlID0gaS5HZXRQcm9wZXJ0eSgqcCkpIHsKICAgICAgIHN0ZDo6c3RyaW5nIGhlbHBzdHJpbmcgPQogICAgICAgICBjbVN0ckNhdCgqcCwgIiBwcm9wZXJ0eSBmb3IgdmFyaWFibGU6ICIsIGkuR2V0TmFtZSgpKTsKICAgICAgIGNtQ2FjaGVNYW5hZ2VyOjpPdXRwdXRIZWxwU3RyaW5nKG9zLCBoZWxwc3RyaW5nKTsKQEAgLTIxOCw5ICsyMTYsOSBAQAogICAgICAgc3RkOjpzdHJpbmcga2V5ID0gY21TdHJDYXQoaS5HZXROYW1lKCksICctJywgKnApOwogICAgICAgY21DYWNoZU1hbmFnZXI6Ok91dHB1dEtleShvcywga2V5KTsKICAgICAgIG9zIDw8ICI6SU5URVJOQUw9IjsKLSAgICAgIGNtQ2FjaGVNYW5hZ2VyOjpPdXRwdXRWYWx1ZShvcywgdmFsdWUpOwotICAgICAgb3MgPDwgIlxuIjsKLSAgICAgIGNtQ2FjaGVNYW5hZ2VyOjpPdXRwdXROZXdsaW5lVHJ1bmNhdGlvbldhcm5pbmcob3MsIGtleSwgdmFsdWUsCisgICAgICBjbUNhY2hlTWFuYWdlcjo6T3V0cHV0VmFsdWUob3MsICp2YWx1ZSk7CisgICAgICBvcyA8PCAnXG4nOworICAgICAgY21DYWNoZU1hbmFnZXI6Ok91dHB1dE5ld2xpbmVUcnVuY2F0aW9uV2FybmluZyhvcywga2V5LCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3Nlbmdlcik7CiAgICAgfQogICB9CkBAIC0yNzAsMzEgKzI2OCwyOSBAQAogCiAgIC8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KICAgZm91dCA8PCAiIyBUaGlzIGlzIHRoZSBDTWFrZUNhY2hlIGZpbGUuXG4iCi0gICAgICAgPDwgIiMgRm9yIGJ1aWxkIGluIGRpcmVjdG9yeTogIiA8PCBjdXJyZW50Y3dkIDw8ICJcbiIKLSAgICAgICA8PCAiIyBJdCB3YXMgZ2VuZXJhdGVkIGJ5IENNYWtlOiAiCi0gICAgICAgPDwgY21TeXN0ZW1Ub29sczo6R2V0Q01ha2VDb21tYW5kKCkgPDwgc3RkOjplbmRsOworICAgICAgICAgICIjIEZvciBidWlsZCBpbiBkaXJlY3Rvcnk6ICIgPDwgY3VycmVudGN3ZCA8PCAiXG4iCisgICAgICAgICAgIiMgSXQgd2FzIGdlbmVyYXRlZCBieSBDTWFrZTogIgorICAgICAgIDw8IGNtU3lzdGVtVG9vbHM6OkdldENNYWtlQ29tbWFuZCgpCisgICAgICAgPDwgIlxuIgorICAgICAgICAgICIjIFlvdSBjYW4gZWRpdCB0aGlzIGZpbGUgdG8gY2hhbmdlIHZhbHVlcyBmb3VuZCBhbmQgdXNlZCBieSBjbWFrZS4iCisgICAgICAgICAgIlxuIgorICAgICAgICAgICIjIElmIHlvdSBkbyBub3Qgd2FudCB0byBjaGFuZ2UgYW55IG9mIHRoZSB2YWx1ZXMsIHNpbXBseSBleGl0IHRoZSAiCisgICAgICAgICAgImVkaXRvci5cbiIKKyAgICAgICAgICAiIyBJZiB5b3UgZG8gd2FudCB0byBjaGFuZ2UgYSB2YWx1ZSwgc2ltcGx5IGVkaXQsIHNhdmUsIGFuZCBleGl0ICIKKyAgICAgICAgICAidGhlIGVkaXRvci5cbiIKKyAgICAgICAgICAiIyBUaGUgc3ludGF4IGZvciB0aGUgZmlsZSBpcyBhcyBmb2xsb3dzOlxuIgorICAgICAgICAgICIjIEtFWTpUWVBFPVZBTFVFXG4iCisgICAgICAgICAgIiMgS0VZIGlzIHRoZSBuYW1lIG9mIGEgdmFyaWFibGUgaW4gdGhlIGNhY2hlLlxuIgorICAgICAgICAgICIjIFRZUEUgaXMgYSBoaW50IHRvIEdVSXMgZm9yIHRoZSB0eXBlIG9mIFZBTFVFLCBETyBOT1QgRURJVCBUWVBFIS4iCisgICAgICAgICAgIlxuIgorICAgICAgICAgICIjIFZBTFVFIGlzIHRoZSBjdXJyZW50IHZhbHVlIGZvciB0aGUgS0VZLlxuIgorICAgICAgICAgICJcbiIKKyAgICAgICAgICAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG4iCisgICAgICAgICAgIiMgRVhURVJOQUwgY2FjaGUgZW50cmllc1xuIgorICAgICAgICAgICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbiIKKyAgICAgICAgICAiXG4iOwogICAvKiBjbGFuZy1mb3JtYXQgb24gKi8KIAotICAvKiBjbGFuZy1mb3JtYXQgb2ZmICovCi0gIGZvdXQgPDwgIiMgWW91IGNhbiBlZGl0IHRoaXMgZmlsZSB0byBjaGFuZ2UgdmFsdWVzIGZvdW5kIGFuZCB1c2VkIGJ5IGNtYWtlLiIKLSAgICAgICA8PCBzdGQ6OmVuZGwKLSAgICAgICA8PCAiIyBJZiB5b3UgZG8gbm90IHdhbnQgdG8gY2hhbmdlIGFueSBvZiB0aGUgdmFsdWVzLCBzaW1wbHkgZXhpdCB0aGUgIgotICAgICAgICJlZGl0b3IuIiA8PCBzdGQ6OmVuZGwKLSAgICAgICA8PCAiIyBJZiB5b3UgZG8gd2FudCB0byBjaGFuZ2UgYSB2YWx1ZSwgc2ltcGx5IGVkaXQsIHNhdmUsIGFuZCBleGl0ICIKLSAgICAgICAidGhlIGVkaXRvci4iIDw8IHN0ZDo6ZW5kbAotICAgICAgIDw8ICIjIFRoZSBzeW50YXggZm9yIHRoZSBmaWxlIGlzIGFzIGZvbGxvd3M6XG4iCi0gICAgICAgPDwgIiMgS0VZOlRZUEU9VkFMVUVcbiIKLSAgICAgICA8PCAiIyBLRVkgaXMgdGhlIG5hbWUgb2YgYSB2YXJpYWJsZSBpbiB0aGUgY2FjaGUuXG4iCi0gICAgICAgPDwgIiMgVFlQRSBpcyBhIGhpbnQgdG8gR1VJcyBmb3IgdGhlIHR5cGUgb2YgVkFMVUUsIERPIE5PVCBFRElUICIKLSAgICAgICAiVFlQRSEuIiA8PCBzdGQ6OmVuZGwKLSAgICAgICA8PCAiIyBWQUxVRSBpcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgdGhlIEtFWS5cblxuIjsKLSAgLyogY2xhbmctZm9ybWF0IG9uICovCi0KLSAgZm91dCA8PCAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG4iOwotICBmb3V0IDw8ICIjIEVYVEVSTkFMIGNhY2hlIGVudHJpZXNcbiI7Ci0gIGZvdXQgPDwgIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIjsKLSAgZm91dCA8PCAiXG4iOwotCiAgIGZvciAoYXV0byBjb25zdCYgaSA6IHRoaXMtPkNhY2hlKSB7CiAgICAgQ2FjaGVFbnRyeSBjb25zdCYgY2UgPSBpLnNlY29uZDsKICAgICBjbVN0YXRlRW51bXM6OkNhY2hlRW50cnlUeXBlIHQgPSBjZS5UeXBlOwpAQCAtMzA1LDI2ICszMDEsMjYgQEAKICAgICAgICovCiAgICAgfSBlbHNlIGlmICh0ICE9IGNtU3RhdGVFbnVtczo6SU5URVJOQUwpIHsKICAgICAgIC8vIEZvcm1hdCBpcyBrZXk6dHlwZT12YWx1ZQotICAgICAgaWYgKGNvbnN0IGNoYXIqIGhlbHAgPSBjZS5HZXRQcm9wZXJ0eSgiSEVMUFNUUklORyIpKSB7Ci0gICAgICAgIGNtQ2FjaGVNYW5hZ2VyOjpPdXRwdXRIZWxwU3RyaW5nKGZvdXQsIGhlbHApOworICAgICAgaWYgKGNtUHJvcCBoZWxwID0gY2UuR2V0UHJvcGVydHkoIkhFTFBTVFJJTkciKSkgeworICAgICAgICBjbUNhY2hlTWFuYWdlcjo6T3V0cHV0SGVscFN0cmluZyhmb3V0LCAqaGVscCk7CiAgICAgICB9IGVsc2UgewogICAgICAgICBjbUNhY2hlTWFuYWdlcjo6T3V0cHV0SGVscFN0cmluZyhmb3V0LCAiTWlzc2luZyBkZXNjcmlwdGlvbiIpOwogICAgICAgfQogICAgICAgY21DYWNoZU1hbmFnZXI6Ok91dHB1dEtleShmb3V0LCBpLmZpcnN0KTsKLSAgICAgIGZvdXQgPDwgIjoiIDw8IGNtU3RhdGU6OkNhY2hlRW50cnlUeXBlVG9TdHJpbmcodCkgPDwgIj0iOworICAgICAgZm91dCA8PCAnOicgPDwgY21TdGF0ZTo6Q2FjaGVFbnRyeVR5cGVUb1N0cmluZyh0KSA8PCAnPSc7CiAgICAgICBjbUNhY2hlTWFuYWdlcjo6T3V0cHV0VmFsdWUoZm91dCwgY2UuVmFsdWUpOwotICAgICAgZm91dCA8PCAiXG4iOworICAgICAgZm91dCA8PCAnXG4nOwogICAgICAgY21DYWNoZU1hbmFnZXI6Ok91dHB1dE5ld2xpbmVUcnVuY2F0aW9uV2FybmluZyhmb3V0LCBpLmZpcnN0LCBjZS5WYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2VuZ2VyKTsKLSAgICAgIGZvdXQgPDwgIlxuIjsKKyAgICAgIGZvdXQgPDwgJ1xuJzsKICAgICB9CiAgIH0KIAotICBmb3V0IDw8ICJcbiI7Ci0gIGZvdXQgPDwgIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIjsKLSAgZm91dCA8PCAiIyBJTlRFUk5BTCBjYWNoZSBlbnRyaWVzXG4iOwotICBmb3V0IDw8ICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbiI7Ci0gIGZvdXQgPDwgIlxuIjsKKyAgZm91dCA8PCAiXG4iCisgICAgICAgICAgIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIgorICAgICAgICAgICIjIElOVEVSTkFMIGNhY2hlIGVudHJpZXNcbiIKKyAgICAgICAgICAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG4iCisgICAgICAgICAgIlxuIjsKIAogICBmb3IgKGNtQ2FjaGVNYW5hZ2VyOjpDYWNoZUl0ZXJhdG9yIGkgPSB0aGlzLT5OZXdJdGVyYXRvcigpOyAhaS5Jc0F0RW5kKCk7CiAgICAgICAgaS5OZXh0KCkpIHsKQEAgLTMzNiwxOCArMzMyLDE4IEBACiAgICAgdGhpcy0+V3JpdGVQcm9wZXJ0eUVudHJpZXMoZm91dCwgaSwgbWVzc2VuZ2VyKTsKICAgICBpZiAodCA9PSBjbVN0YXRlRW51bXM6OklOVEVSTkFMKSB7CiAgICAgICAvLyBGb3JtYXQgaXMga2V5OnR5cGU9dmFsdWUKLSAgICAgIGlmIChjb25zdCBjaGFyKiBoZWxwID0gaS5HZXRQcm9wZXJ0eSgiSEVMUFNUUklORyIpKSB7Ci0gICAgICAgIGNtQ2FjaGVNYW5hZ2VyOjpPdXRwdXRIZWxwU3RyaW5nKGZvdXQsIGhlbHApOworICAgICAgaWYgKGNtUHJvcCBoZWxwID0gaS5HZXRQcm9wZXJ0eSgiSEVMUFNUUklORyIpKSB7CisgICAgICAgIGNtQ2FjaGVNYW5hZ2VyOjpPdXRwdXRIZWxwU3RyaW5nKGZvdXQsICpoZWxwKTsKICAgICAgIH0KICAgICAgIGNtQ2FjaGVNYW5hZ2VyOjpPdXRwdXRLZXkoZm91dCwgaS5HZXROYW1lKCkpOwotICAgICAgZm91dCA8PCAiOiIgPDwgY21TdGF0ZTo6Q2FjaGVFbnRyeVR5cGVUb1N0cmluZyh0KSA8PCAiPSI7CisgICAgICBmb3V0IDw8ICc6JyA8PCBjbVN0YXRlOjpDYWNoZUVudHJ5VHlwZVRvU3RyaW5nKHQpIDw8ICc9JzsKICAgICAgIGNtQ2FjaGVNYW5hZ2VyOjpPdXRwdXRWYWx1ZShmb3V0LCBpLkdldFZhbHVlKCkpOwotICAgICAgZm91dCA8PCAiXG4iOworICAgICAgZm91dCA8PCAnXG4nOwogICAgICAgY21DYWNoZU1hbmFnZXI6Ok91dHB1dE5ld2xpbmVUcnVuY2F0aW9uV2FybmluZyhmb3V0LCBpLkdldE5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5HZXRWYWx1ZSgpLCBtZXNzZW5nZXIpOwogICAgIH0KICAgfQotICBmb3V0IDw8ICJcbiI7CisgIGZvdXQgPDwgJ1xuJzsKICAgZm91dC5DbG9zZSgpOwogICBzdGQ6OnN0cmluZyBjaGVja0NhY2hlRmlsZSA9IGNtU3RyQ2F0KHBhdGgsICIvQ01ha2VGaWxlcyIpOwogICBjbVN5c3RlbVRvb2xzOjpNYWtlRGlyZWN0b3J5KGNoZWNrQ2FjaGVGaWxlKTsKQEAgLTM4NSw3ICszODEsOSBAQAogewogICAvLyBzdXBwb3J0IDogaW4ga2V5IG5hbWUgYnkgZG91YmxlIHF1b3RpbmcKICAgY29uc3QgY2hhciogcSA9Ci0gICAgKGtleS5maW5kKCc6JykgIT0gc3RkOjpzdHJpbmc6Om5wb3MgfHwga2V5LmZpbmQoIi8vIikgPT0gMCkgPyAiXCIiIDogIiI7CisgICAgKGtleS5maW5kKCc6JykgIT0gc3RkOjpzdHJpbmc6Om5wb3MgfHwgY21IYXNMaXRlcmFsUHJlZml4KGtleSwgIi8vIikpCisgICAgPyAiXCIiCisgICAgOiAiIjsKICAgZm91dCA8PCBxIDw8IGtleSA8PCBxOwogfQogCkBAIC00MzAsNyArNDI4LDcgQEAKICAgICAgICAgZm91dCA8PCAiXFxuIjsKICAgICAgIH0KICAgICAgIG9uZUxpbmUgPSBoZWxwU3RyaW5nLnN1YnN0cihwb3MsIGkgLSBwb3MpOwotICAgICAgZm91dCA8PCBvbmVMaW5lIDw8ICJcbiI7CisgICAgICBmb3V0IDw8IG9uZUxpbmUgPDwgJ1xuJzsKICAgICAgIHBvcyA9IGk7CiAgICAgfQogICB9CkBAIC00NTIsNyArNDUwLDcgQEAKICAgICAgICAgZm91dCA8PCAiXFxuIjsKICAgICAgIH0KICAgICAgIG9uZUxpbmUgPSBtZXNzYWdlLnN1YnN0cihwb3MsIGkgLSBwb3MpOwotICAgICAgZm91dCA8PCBvbmVMaW5lIDw8ICJcbiI7CisgICAgICBmb3V0IDw8IG9uZUxpbmUgPDwgJ1xuJzsKICAgICAgIHBvcyA9IGk7CiAgICAgfQogICB9CkBAIC01MDgsOCArNTA2LDcgQEAKICAgcmV0dXJuIHsgKnRoaXMsIG51bGxwdHIgfTsKIH0KIAotY29uc3Qgc3RkOjpzdHJpbmcqIGNtQ2FjaGVNYW5hZ2VyOjpHZXRJbml0aWFsaXplZENhY2hlVmFsdWUoCi0gIGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXkpIGNvbnN0CitjbVByb3AgY21DYWNoZU1hbmFnZXI6OkdldEluaXRpYWxpemVkQ2FjaGVWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYga2V5KSBjb25zdAogewogICBhdXRvIGkgPSB0aGlzLT5DYWNoZS5maW5kKGtleSk7CiAgIGlmIChpICE9IHRoaXMtPkNhY2hlLmVuZCgpICYmIGktPnNlY29uZC5Jbml0aWFsaXplZCkgewpAQCAtNTIwLDE3ICs1MTcsMTcgQEAKIAogdm9pZCBjbUNhY2hlTWFuYWdlcjo6UHJpbnRDYWNoZShzdGQ6Om9zdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgb3V0IDw8ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IiA8PCBzdGQ6OmVuZGw7Ci0gIG91dCA8PCAiQ01ha2VDYWNoZSBDb250ZW50czoiIDw8IHN0ZDo6ZW5kbDsKKyAgb3V0IDw8ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iCisgICAgICAgICAiQ01ha2VDYWNoZSBDb250ZW50czpcbiI7CiAgIGZvciAoYXV0byBjb25zdCYgaSA6IHRoaXMtPkNhY2hlKSB7CiAgICAgaWYgKGkuc2Vjb25kLlR5cGUgIT0gY21TdGF0ZUVudW1zOjpJTlRFUk5BTCkgewotICAgICAgb3V0IDw8IGkuZmlyc3QgPDwgIiA9ICIgPDwgaS5zZWNvbmQuVmFsdWUgPDwgc3RkOjplbmRsOworICAgICAgb3V0IDw8IGkuZmlyc3QgPDwgIiA9ICIgPDwgaS5zZWNvbmQuVmFsdWUgPDwgJ1xuJzsKICAgICB9CiAgIH0KLSAgb3V0IDw8ICJcblxuIjsKLSAgb3V0IDw8ICJUbyBjaGFuZ2UgdmFsdWVzIGluIHRoZSBDTWFrZUNhY2hlLCAiIDw8IHN0ZDo6ZW5kbAotICAgICAgPDwgImVkaXQgQ01ha2VDYWNoZS50eHQgaW4geW91ciBvdXRwdXQgZGlyZWN0b3J5LlxuIjsKLSAgb3V0IDw8ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IiA8PCBzdGQ6OmVuZGw7CisgIG91dCA8PCAiXG5cbiIKKyAgICAgICAgICJUbyBjaGFuZ2UgdmFsdWVzIGluIHRoZSBDTWFrZUNhY2hlLCBcbiIKKyAgICAgICAgICJlZGl0IENNYWtlQ2FjaGUudHh0IGluIHlvdXIgb3V0cHV0IGRpcmVjdG9yeS5cbiIKKyAgICAgICAgICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iOwogfQogCiB2b2lkIGNtQ2FjaGVNYW5hZ2VyOjpBZGRDYWNoZUVudHJ5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IGNoYXIqIHZhbHVlLApAQCAtNjE5LDE0ICs2MTYsMTMgQEAKICAgcmV0dXJuIHRoaXMtPlByb3BlcnRpZXMuR2V0S2V5cygpOwogfQogCi1jb25zdCBjaGFyKiBjbUNhY2hlTWFuYWdlcjo6Q2FjaGVFbnRyeTo6R2V0UHJvcGVydHkoCi0gIGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wKSBjb25zdAorY21Qcm9wIGNtQ2FjaGVNYW5hZ2VyOjpDYWNoZUVudHJ5OjpHZXRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCkgY29uc3QKIHsKICAgaWYgKHByb3AgPT0gIlRZUEUiKSB7Ci0gICAgcmV0dXJuIGNtU3RhdGU6OkNhY2hlRW50cnlUeXBlVG9TdHJpbmcodGhpcy0+VHlwZSkuY19zdHIoKTsKKyAgICByZXR1cm4gJmNtU3RhdGU6OkNhY2hlRW50cnlUeXBlVG9TdHJpbmcodGhpcy0+VHlwZSk7CiAgIH0KICAgaWYgKHByb3AgPT0gIlZBTFVFIikgewotICAgIHJldHVybiB0aGlzLT5WYWx1ZS5jX3N0cigpOworICAgIHJldHVybiAmdGhpcy0+VmFsdWU7CiAgIH0KICAgcmV0dXJuIHRoaXMtPlByb3BlcnRpZXMuR2V0UHJvcGVydHlWYWx1ZShwcm9wKTsKIH0KQEAgLTY2Miw3ICs2NTgsNyBAQAogICB9CiB9CiAKLWNvbnN0IGNoYXIqIGNtQ2FjaGVNYW5hZ2VyOjpDYWNoZUl0ZXJhdG9yOjpHZXRQcm9wZXJ0eSgKK2NtUHJvcCBjbUNhY2hlTWFuYWdlcjo6Q2FjaGVJdGVyYXRvcjo6R2V0UHJvcGVydHkoCiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wKSBjb25zdAogewogICBpZiAoIXRoaXMtPklzQXRFbmQoKSkgewpAQCAtNjkxLDggKzY4Nyw4IEBACiBib29sIGNtQ2FjaGVNYW5hZ2VyOjpDYWNoZUl0ZXJhdG9yOjpHZXRQcm9wZXJ0eUFzQm9vbCgKICAgY29uc3Qgc3RkOjpzdHJpbmcmIHByb3ApIGNvbnN0CiB7Ci0gIGlmIChjb25zdCBjaGFyKiB2YWx1ZSA9IHRoaXMtPkdldFByb3BlcnR5KHByb3ApKSB7Ci0gICAgcmV0dXJuIGNtSXNPbih2YWx1ZSk7CisgIGlmIChjbVByb3AgdmFsdWUgPSB0aGlzLT5HZXRQcm9wZXJ0eShwcm9wKSkgeworICAgIHJldHVybiBjbUlzT24oKnZhbHVlKTsKICAgfQogICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21DYWNoZU1hbmFnZXIuaCBiL1NvdXJjZS9jbUNhY2hlTWFuYWdlci5oCmluZGV4IGQ4YmU5OTEuLjNkYjc2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUNhY2hlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9jbUNhY2hlTWFuYWdlci5oCkBAIC0zNyw3ICszNyw3IEBACiAgICAgY21TdGF0ZUVudW1zOjpDYWNoZUVudHJ5VHlwZSBUeXBlID0gY21TdGF0ZUVudW1zOjpVTklOSVRJQUxJWkVEOwogICAgIGNtUHJvcGVydHlNYXAgUHJvcGVydGllczsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0UHJvcGVydHlMaXN0KCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogR2V0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmKSBjb25zdDsKKyAgICBjbVByb3AgR2V0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIFNldFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wZXJ0eSwgY29uc3QgY2hhciogdmFsdWUpOwogICAgIHZvaWQgQXBwZW5kUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHByb3BlcnR5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFzU3RyaW5nID0gZmFsc2UpOwpAQCAtNTQsNyArNTQsNyBAQAogICAgIHZvaWQgTmV4dCgpOwogICAgIHN0ZDo6c3RyaW5nIEdldE5hbWUoKSBjb25zdCB7IHJldHVybiB0aGlzLT5Qb3NpdGlvbi0+Zmlyc3Q7IH0KICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0UHJvcGVydHlMaXN0KCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogR2V0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmKSBjb25zdDsKKyAgICBjbVByb3AgR2V0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmKSBjb25zdDsKICAgICBib29sIEdldFByb3BlcnR5QXNCb29sKGNvbnN0IHN0ZDo6c3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBQcm9wZXJ0eUV4aXN0cyhjb25zdCBzdGQ6OnN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgU2V0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHByb3BlcnR5LCBjb25zdCBjaGFyKiB2YWx1ZSk7CkBAIC0xMjEsMTkgKzEyMSwxOSBAQAogICBpbnQgR2V0U2l6ZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odGhpcy0+Q2FjaGUuc2l6ZSgpKTsgfQogCiAgIC8vISBHZXQgYSB2YWx1ZSBmcm9tIHRoZSBjYWNoZSBnaXZlbiBhIGtleQotICBjb25zdCBzdGQ6OnN0cmluZyogR2V0SW5pdGlhbGl6ZWRDYWNoZVZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXkpIGNvbnN0OworICBjbVByb3AgR2V0SW5pdGlhbGl6ZWRDYWNoZVZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXkpIGNvbnN0OwogCi0gIGNvbnN0IGNoYXIqIEdldENhY2hlRW50cnlWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYga2V5KQorICBjbVByb3AgR2V0Q2FjaGVFbnRyeVZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXkpCiAgIHsKICAgICBjbUNhY2hlTWFuYWdlcjo6Q2FjaGVJdGVyYXRvciBpdCA9IHRoaXMtPkdldENhY2hlSXRlcmF0b3Ioa2V5KTsKICAgICBpZiAoaXQuSXNBdEVuZCgpKSB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIGl0LkdldFZhbHVlKCkuY19zdHIoKTsKKyAgICByZXR1cm4gJml0LkdldFZhbHVlKCk7CiAgIH0KIAotICBjb25zdCBjaGFyKiBHZXRDYWNoZUVudHJ5UHJvcGVydHkoc3RkOjpzdHJpbmcgY29uc3QmIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBwcm9wTmFtZSkKKyAgY21Qcm9wIEdldENhY2hlRW50cnlQcm9wZXJ0eShzdGQ6OnN0cmluZyBjb25zdCYga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBwcm9wTmFtZSkKICAgewogICAgIHJldHVybiB0aGlzLT5HZXRDYWNoZUl0ZXJhdG9yKGtleSkuR2V0UHJvcGVydHkocHJvcE5hbWUpOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21DYWxsVmlzdWFsU3R1ZGlvTWFjcm8uY3h4IGIvU291cmNlL2NtQ2FsbFZpc3VhbFN0dWRpb01hY3JvLmN4eAppbmRleCA5ZTE1MmZmLi45NGI2ZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21DYWxsVmlzdWFsU3R1ZGlvTWFjcm8uY3h4CisrKyBiL1NvdXJjZS9jbUNhbGxWaXN1YWxTdHVkaW9NYWNyby5jeHgKQEAgLTQzLDggKzQzLDcgQEAKICAgICAgIGlmIChMb2dFcnJvcnNBc01lc3NhZ2VzKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIF9ocmVzdWx0X29zczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgX2hyZXN1bHRfb3NzLmZsYWdzKHN0ZDo6aW9zOjpoZXgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgX2hyZXN1bHRfb3NzIDw8IGNvbnRleHQgPDwgIiBmYWlsZWQgSFJFU1VMVCwgaHIgPSAweCIgPDwgaHIgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX2hyZXN1bHRfb3NzIDw8IGNvbnRleHQgPDwgIiBmYWlsZWQgSFJFU1VMVCwgaHIgPSAweCIgPDwgaHIgPDwgJ1xuJzsgIFwKICAgICAgICAgX2hyZXN1bHRfb3NzLmZsYWdzKHN0ZDo6aW9zOjpkZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgX2hyZXN1bHRfb3NzIDw8IF9fRklMRV9fIDw8ICIoIiA8PCBfX0xJTkVfXyA8PCAiKSI7ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgY21TeXN0ZW1Ub29sczo6TWVzc2FnZShfaHJlc3VsdF9vc3Muc3RyKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTk4LDMyICs5NywzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIERJU1BBVENIX01FVEhPRCwgJnBhcmFtcywgJnJlc3VsdCwgJmV4Y2VwLCAmYXJnKTsKIAogICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIG9zczsKLSAgICAgIG9zcyA8PCBzdGQ6OmVuZGw7Ci0gICAgICBvc3MgPDwgIkludm9rZShFeGVjdXRlQ29tbWFuZCkiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIG9zcyA8PCAiICBNYWNybzogIiA8PCBtYWNybyA8PCBzdGQ6OmVuZGw7Ci0gICAgICBvc3MgPDwgIiAgQXJnczogIiA8PCBhcmdzIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIC8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KKyAgICAgIG9zcyA8PCAiXG5JbnZva2UoRXhlY3V0ZUNvbW1hbmQpXG4iCisgICAgICAgICAgICAgIiAgTWFjcm86ICIgPDwgbWFjcm8gPDwgIlxuIgorICAgICAgICAgICAgICIgIEFyZ3M6ICIgPDwgYXJncyA8PCAnXG4nOworICAgICAgLyogY2xhbmctZm9ybWF0IG9uICovCiAKICAgICAgIGlmIChESVNQX0VfRVhDRVBUSU9OID09IGhyKSB7Ci0gICAgICAgIG9zcyA8PCAiRElTUF9FX0VYQ0VQVElPTiBFWENFUElORk86IiA8PCBleGNlcC53Q29kZSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIG9zcyA8PCAiICB3Q29kZTogIiA8PCBleGNlcC53Q29kZSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIG9zcyA8PCAiICB3UmVzZXJ2ZWQ6ICIgPDwgZXhjZXAud1Jlc2VydmVkIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgLyogY2xhbmctZm9ybWF0IG9mZiAqLworICAgICAgICBvc3MgPDwgIkRJU1BfRV9FWENFUFRJT04gRVhDRVBJTkZPOiIgPDwgZXhjZXAud0NvZGUgPDwgIlxuIgorICAgICAgICAgICAgICAgIiAgd0NvZGU6ICIgPDwgZXhjZXAud0NvZGUgPDwgIlxuIgorICAgICAgICAgICAgICAgIiAgd1Jlc2VydmVkOiAiIDw8IGV4Y2VwLndSZXNlcnZlZCA8PCAnXG4nOworICAgICAgICAvKiBjbGFuZy1mb3JtYXQgb24gKi8KICAgICAgICAgaWYgKGV4Y2VwLmJzdHJTb3VyY2UpIHsKICAgICAgICAgICBvc3MgPDwgIiAgYnN0clNvdXJjZTogIiA8PCAoY29uc3QgY2hhciopKF9ic3RyX3QpZXhjZXAuYnN0clNvdXJjZQotICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICAgIDw8ICdcbic7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGV4Y2VwLmJzdHJEZXNjcmlwdGlvbikgewogICAgICAgICAgIG9zcyA8PCAiICBic3RyRGVzY3JpcHRpb246ICIKLSAgICAgICAgICAgICAgPDwgKGNvbnN0IGNoYXIqKShfYnN0cl90KWV4Y2VwLmJzdHJEZXNjcmlwdGlvbiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICAgIDw8IChjb25zdCBjaGFyKikoX2JzdHJfdClleGNlcC5ic3RyRGVzY3JpcHRpb24gPDwgJ1xuJzsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhjZXAuYnN0ckhlbHBGaWxlKSB7CiAgICAgICAgICAgb3NzIDw8ICIgIGJzdHJIZWxwRmlsZTogIiA8PCAoY29uc3QgY2hhciopKF9ic3RyX3QpZXhjZXAuYnN0ckhlbHBGaWxlCi0gICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgICAgPDwgJ1xuJzsKICAgICAgICAgfQotICAgICAgICBvc3MgPDwgIiAgZHdIZWxwQ29udGV4dDogIiA8PCBleGNlcC5kd0hlbHBDb250ZXh0IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgb3NzIDw8ICIgIHB2UmVzZXJ2ZWQ6ICIgPDwgZXhjZXAucHZSZXNlcnZlZCA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIG9zcyA8PCAiICBwZm5EZWZlcnJlZEZpbGxJbjogIgotICAgICAgICAgICAgPDwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZXhjZXAucGZuRGVmZXJyZWRGaWxsSW4pIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgb3NzIDw8ICIgIHNjb2RlOiAiIDw8IGV4Y2VwLnNjb2RlIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgLyogY2xhbmctZm9ybWF0IG9mZiAqLworICAgICAgICBvc3MgPDwgIiAgZHdIZWxwQ29udGV4dDogIiA8PCBleGNlcC5kd0hlbHBDb250ZXh0IDw8ICJcbiIKKyAgICAgICAgICAgICAgICIgIHB2UmVzZXJ2ZWQ6ICIgPDwgZXhjZXAucHZSZXNlcnZlZCA8PCAiXG4iCisgICAgICAgICAgICAgICAiICBwZm5EZWZlcnJlZEZpbGxJbjogIgorICAgICAgICAgICAgPDwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZXhjZXAucGZuRGVmZXJyZWRGaWxsSW4pIDw8ICJcbiIKKyAgICAgICAgICAgICAgICIgIHNjb2RlOiAiIDw8IGV4Y2VwLnNjb2RlIDw8ICdcbic7CisgICAgICAgIC8qIGNsYW5nLWZvcm1hdCBvbiAqLwogICAgICAgfQogCiAgICAgICBzdGQ6OnN0cmluZyBleHN0cihvc3Muc3RyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtQ29tbWFuZEFyZ3VtZW50UGFyc2VySGVscGVyLmN4eCBiL1NvdXJjZS9jbUNvbW1hbmRBcmd1bWVudFBhcnNlckhlbHBlci5jeHgKaW5kZXggNjEzYWUwNi4uMzc5ODM2YSAxMDA2NDQKLS0tIGEvU291cmNlL2NtQ29tbWFuZEFyZ3VtZW50UGFyc2VySGVscGVyLmN4eAorKysgYi9Tb3VyY2UvY21Db21tYW5kQXJndW1lbnRQYXJzZXJIZWxwZXIuY3h4CkBAIC01LDYgKzUsOSBAQAogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorCisjaW5jbHVkZSA8Y20vbWVtb3J5PgogCiAjaW5jbHVkZSAiY21Db21tYW5kQXJndW1lbnRMZXhlci5oIgogI2luY2x1ZGUgImNtTWFrZWZpbGUuaCIKQEAgLTQwLDEwICs0MywxMCBAQAogICBpZiAoc3RyLmVtcHR5KCkpIHsKICAgICByZXR1cm4gIiI7CiAgIH0KLSAgY2hhciogc3RWYWwgPSBuZXcgY2hhcltzdHIuc2l6ZSgpICsgMV07Ci0gIHN0cmNweShzdFZhbCwgc3RyLmNfc3RyKCkpOwotICB0aGlzLT5WYXJpYWJsZXMucHVzaF9iYWNrKHN0VmFsKTsKLSAgcmV0dXJuIHN0VmFsOworICBhdXRvIHN0VmFsID0gY206Om1ha2VfdW5pcXVlPGNoYXJbXT4oc3RyLnNpemUoKSArIDEpOworICBzdHJjcHkoc3RWYWwuZ2V0KCksIHN0ci5jX3N0cigpKTsKKyAgdGhpcy0+VmFyaWFibGVzLnB1c2hfYmFjayhzdGQ6Om1vdmUoc3RWYWwpKTsKKyAgcmV0dXJuIHRoaXMtPlZhcmlhYmxlcy5iYWNrKCkuZ2V0KCk7CiB9CiAKIGNvbnN0IGNoYXIqIGNtQ29tbWFuZEFyZ3VtZW50UGFyc2VySGVscGVyOjpFeHBhbmRTcGVjaWFsVmFyaWFibGUoCkBAIC0xMzYsMTEgKzEzOSwxMSBAQAogICAgIHJldHVybiBpbjE7CiAgIH0KICAgc2l6ZV90IGxlbiA9IHN0cmxlbihpbjEpICsgc3RybGVuKGluMikgKyAxOwotICBjaGFyKiBvdXQgPSBuZXcgY2hhcltsZW5dOwotICBzdHJjcHkob3V0LCBpbjEpOwotICBzdHJjYXQob3V0LCBpbjIpOwotICB0aGlzLT5WYXJpYWJsZXMucHVzaF9iYWNrKG91dCk7Ci0gIHJldHVybiBvdXQ7CisgIGF1dG8gb3V0ID0gY206Om1ha2VfdW5pcXVlPGNoYXJbXT4obGVuKTsKKyAgc3RyY3B5KG91dC5nZXQoKSwgaW4xKTsKKyAgc3RyY2F0KG91dC5nZXQoKSwgaW4yKTsKKyAgdGhpcy0+VmFyaWFibGVzLnB1c2hfYmFjayhzdGQ6Om1vdmUob3V0KSk7CisgIHJldHVybiB0aGlzLT5WYXJpYWJsZXMuYmFjaygpLmdldCgpOwogfQogCiB2b2lkIGNtQ29tbWFuZEFyZ3VtZW50UGFyc2VySGVscGVyOjpBbGxvY2F0ZVBhcnNlclR5cGUoCkBAIC0xNTMsMTEgKzE1NiwxMSBAQAogICBpZiAobGVuID09IDApIHsKICAgICByZXR1cm47CiAgIH0KLSAgY2hhciogb3V0ID0gbmV3IGNoYXJbbGVuICsgMV07Ci0gIG1lbWNweShvdXQsIHN0ciwgbGVuKTsKLSAgb3V0W2xlbl0gPSAwOwotICBwdC0+c3RyID0gb3V0OwotICB0aGlzLT5WYXJpYWJsZXMucHVzaF9iYWNrKG91dCk7CisgIGF1dG8gb3V0ID0gY206Om1ha2VfdW5pcXVlPGNoYXJbXT4obGVuICsgMSk7CisgIG1lbWNweShvdXQuZ2V0KCksIHN0ciwgbGVuKTsKKyAgb3V0LmdldCgpW2xlbl0gPSAwOworICBwdC0+c3RyID0gb3V0LmdldCgpOworICB0aGlzLT5WYXJpYWJsZXMucHVzaF9iYWNrKHN0ZDo6bW92ZShvdXQpKTsKIH0KIAogYm9vbCBjbUNvbW1hbmRBcmd1bWVudFBhcnNlckhlbHBlcjo6SGFuZGxlRXNjYXBlU3ltYm9sKApAQCAtMjM1LDEwICsyMzgsNyBAQAogCiB2b2lkIGNtQ29tbWFuZEFyZ3VtZW50UGFyc2VySGVscGVyOjpDbGVhbnVwUGFyc2VyKCkKIHsKLSAgZm9yIChjaGFyKiB2YXIgOiB0aGlzLT5WYXJpYWJsZXMpIHsKLSAgICBkZWxldGVbXSB2YXI7Ci0gIH0KLSAgdGhpcy0+VmFyaWFibGVzLmVyYXNlKHRoaXMtPlZhcmlhYmxlcy5iZWdpbigpLCB0aGlzLT5WYXJpYWJsZXMuZW5kKCkpOworICB0aGlzLT5WYXJpYWJsZXMuY2xlYXIoKTsKIH0KIAogaW50IGNtQ29tbWFuZEFyZ3VtZW50UGFyc2VySGVscGVyOjpMZXhJbnB1dChjaGFyKiBidWYsIGludCBtYXhsZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21Db21tYW5kQXJndW1lbnRQYXJzZXJIZWxwZXIuaCBiL1NvdXJjZS9jbUNvbW1hbmRBcmd1bWVudFBhcnNlckhlbHBlci5oCmluZGV4IDI1ZTY4OTIuLmI0NmVkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUNvbW1hbmRBcmd1bWVudFBhcnNlckhlbHBlci5oCisrKyBiL1NvdXJjZS9jbUNvbW1hbmRBcmd1bWVudFBhcnNlckhlbHBlci5oCkBAIC01LDYgKzUsNyBAQAogCiAjaW5jbHVkZSAiY21Db25maWd1cmUuaCIgLy8gSVdZVSBwcmFnbWE6IGtlZXAKIAorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCkBAIC02OSw3ICs3MCw3IEBACiAgIHZvaWQgQ2xlYW51cFBhcnNlcigpOwogICB2b2lkIFNldEVycm9yKHN0ZDo6c3RyaW5nIGNvbnN0JiBtc2cpOwogCi0gIHN0ZDo6dmVjdG9yPGNoYXIqPiBWYXJpYWJsZXM7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+PiBWYXJpYWJsZXM7CiAgIGNvbnN0IGNtTWFrZWZpbGUqIE1ha2VmaWxlOwogICBzdGQ6OnN0cmluZyBSZXN1bHQ7CiAgIHN0ZDo6c3RyaW5nIEVycm9yU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtQ29tbWFuZHMuY3h4IGIvU291cmNlL2NtQ29tbWFuZHMuY3h4CmluZGV4IDg5NmI2YTkuLjI4YjQyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUNvbW1hbmRzLmN4eAorKysgYi9Tb3VyY2UvY21Db21tYW5kcy5jeHgKQEAgLTkxLDYgKzkxLDcgQEAKICMgIGluY2x1ZGUgImNtQWRkTGlua09wdGlvbnNDb21tYW5kLmgiCiAjICBpbmNsdWRlICJjbUF1eFNvdXJjZURpcmVjdG9yeUNvbW1hbmQuaCIKICMgIGluY2x1ZGUgImNtQnVpbGROYW1lQ29tbWFuZC5oIgorIyAgaW5jbHVkZSAiY21DTWFrZUNvbW1hbmQuaCIKICMgIGluY2x1ZGUgImNtQ01ha2VIb3N0U3lzdGVtSW5mb3JtYXRpb25Db21tYW5kLmgiCiAjICBpbmNsdWRlICJjbUV4cG9ydENvbW1hbmQuaCIKICMgIGluY2x1ZGUgImNtRXhwb3J0TGlicmFyeURlcGVuZGVuY2llc0NvbW1hbmQuaCIKQEAgLTE5Niw2ICsxOTcsNyBAQAogICAgICJtYXRjaCB0aGUgb3BlbmluZyBXSElMRSBjb21tYW5kLiIpOwogCiAjaWYgIWRlZmluZWQoQ01BS0VfQk9PVFNUUkFQKQorICBzdGF0ZS0+QWRkQnVpbHRpbkNvbW1hbmQoImNtYWtlX2NvbW1hbmQiLCBjbUNNYWtlQ29tbWFuZCk7CiAgIHN0YXRlLT5BZGRCdWlsdGluQ29tbWFuZCgiY21ha2VfaG9zdF9zeXN0ZW1faW5mb3JtYXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY21DTWFrZUhvc3RTeXN0ZW1JbmZvcm1hdGlvbkNvbW1hbmQpOwogICBzdGF0ZS0+QWRkQnVpbHRpbkNvbW1hbmQoImxvYWRfY2FjaGUiLCBjbUxvYWRDYWNoZUNvbW1hbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtQ29tcHV0ZUxpbmtJbmZvcm1hdGlvbi5jeHggYi9Tb3VyY2UvY21Db21wdXRlTGlua0luZm9ybWF0aW9uLmN4eAppbmRleCAxMTU3MGQ2Li44ZDI3Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Db21wdXRlTGlua0luZm9ybWF0aW9uLmN4eAorKysgYi9Tb3VyY2UvY21Db21wdXRlTGlua0luZm9ybWF0aW9uLmN4eApAQCAtMTIwMCw3ICsxMjAwLDggQEAKICAgICAvLyBDTVAwMDAzIHNvIHB1dCBpdCBpbiBPbGRVc2VyRmxhZ0l0ZW1zLCBpZiBpdCBpcyBub3QgYSAtbAogICAgIC8vIG9yIC1XbCwtbCAoLWZyYW1ld29yayAtcHRocmVhZCksIHRoZW4gYWxsb3cgaXQgd2l0aG91dCBhCiAgICAgLy8gQ01QMDAwMyBhcyAtTCB3aWxsIG5vdCBhZmZlY3QgdGhvc2Ugb3RoZXIgbGlua2VyIGZsYWdzCi0gICAgaWYgKGl0ZW0uVmFsdWUuZmluZCgiLWwiKSA9PSAwIHx8IGl0ZW0uVmFsdWUuZmluZCgiLVdsLC1sIikgPT0gMCkgeworICAgIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoaXRlbS5WYWx1ZSwgIi1sIikgfHwKKyAgICAgICAgY21IYXNMaXRlcmFsUHJlZml4KGl0ZW0uVmFsdWUsICItV2wsLWwiKSkgewogICAgICAgLy8gVGhpcyBpcyBhIGxpbmtlciBvcHRpb24gcHJvdmlkZWQgYnkgdGhlIHVzZXIuCiAgICAgICB0aGlzLT5PbGRVc2VyRmxhZ0l0ZW1zLnB1c2hfYmFjayhpdGVtLlZhbHVlKTsKICAgICB9CkBAIC0xNzk2LDExICsxNzk3LDExIEBACiAgICAgICAvLyBzdXBwb3J0IG9yIGlmIHVzaW5nIHRoZSBsaW5rIHBhdGggYXMgYW4gcnBhdGguCiAgICAgICBpZiAodXNlX2J1aWxkX3JwYXRoKSB7CiAgICAgICAgIHN0ZDo6c3RyaW5nIGQgPSByaTsKLSAgICAgICAgaWYgKCFyb290UGF0aC5lbXB0eSgpICYmIGQuZmluZChyb290UGF0aCkgPT0gMCkgewotICAgICAgICAgIGQgPSBkLnN1YnN0cihyb290UGF0aC5zaXplKCkpOwotICAgICAgICB9IGVsc2UgaWYgKHN0YWdlUGF0aCAmJiAqc3RhZ2VQYXRoICYmIGQuZmluZChzdGFnZVBhdGgpID09IDApIHsKLSAgICAgICAgICBzdGQ6OnN0cmluZyBzdWZmaXggPSBkLnN1YnN0cihzdHJsZW4oc3RhZ2VQYXRoKSk7Ci0gICAgICAgICAgZCA9IGNtU3RyQ2F0KGluc3RhbGxQcmVmaXgsICcvJywgc3VmZml4KTsKKyAgICAgICAgaWYgKCFyb290UGF0aC5lbXB0eSgpICYmIGNtSGFzUHJlZml4KGQsIHJvb3RQYXRoKSkgeworICAgICAgICAgIGQuZXJhc2UoMCwgcm9vdFBhdGguc2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGFnZVBhdGggJiYgKnN0YWdlUGF0aCAmJiBjbUhhc1ByZWZpeChkLCBzdGFnZVBhdGgpKSB7CisgICAgICAgICAgZC5lcmFzZSgwLCBzdHJsZW4oc3RhZ2VQYXRoKSk7CisgICAgICAgICAgZCA9IGNtU3RyQ2F0KGluc3RhbGxQcmVmaXgsICcvJywgZCk7CiAgICAgICAgICAgY21TeXN0ZW1Ub29sczo6Q29udmVydFRvVW5peFNsYXNoZXMoZCk7CiAgICAgICAgIH0gZWxzZSBpZiAodXNlX3JlbGF0aXZlX2J1aWxkX3JwYXRoKSB7CiAgICAgICAgICAgLy8gSWYgZXhwYW5zaW9uIG9mIHRoZSAkT1JJR0lOIHRva2VuIGlzIHN1cHBvcnRlZCBhbmQgcGVybWl0dGVkIHBlcgpAQCAtMTgyNywxMSArMTgyOCwxMSBAQAogICAgICAgICAgICAgIWNtU3lzdGVtVG9vbHM6OklzU3ViRGlyZWN0b3J5KHJpLCB0b3BTb3VyY2VEaXIpICYmCiAgICAgICAgICAgICAhY21TeXN0ZW1Ub29sczo6SXNTdWJEaXJlY3RvcnkocmksIHRvcEJpbmFyeURpcikpIHsKICAgICAgICAgICBzdGQ6OnN0cmluZyBkID0gcmk7Ci0gICAgICAgICAgaWYgKCFyb290UGF0aC5lbXB0eSgpICYmIGQuZmluZChyb290UGF0aCkgPT0gMCkgewotICAgICAgICAgICAgZCA9IGQuc3Vic3RyKHJvb3RQYXRoLnNpemUoKSk7Ci0gICAgICAgICAgfSBlbHNlIGlmIChzdGFnZVBhdGggJiYgKnN0YWdlUGF0aCAmJiBkLmZpbmQoc3RhZ2VQYXRoKSA9PSAwKSB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZyBzdWZmaXggPSBkLnN1YnN0cihzdHJsZW4oc3RhZ2VQYXRoKSk7Ci0gICAgICAgICAgICBkID0gY21TdHJDYXQoaW5zdGFsbFByZWZpeCwgJy8nLCBzdWZmaXgpOworICAgICAgICAgIGlmICghcm9vdFBhdGguZW1wdHkoKSAmJiBjbUhhc1ByZWZpeChkLCByb290UGF0aCkpIHsKKyAgICAgICAgICAgIGQuZXJhc2UoMCwgcm9vdFBhdGguc2l6ZSgpKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKHN0YWdlUGF0aCAmJiAqc3RhZ2VQYXRoICYmIGNtSGFzUHJlZml4KGQsIHN0YWdlUGF0aCkpIHsKKyAgICAgICAgICAgIGQuZXJhc2UoMCwgc3RybGVuKHN0YWdlUGF0aCkpOworICAgICAgICAgICAgZCA9IGNtU3RyQ2F0KGluc3RhbGxQcmVmaXgsICcvJywgZCk7CiAgICAgICAgICAgICBjbVN5c3RlbVRvb2xzOjpDb252ZXJ0VG9Vbml4U2xhc2hlcyhkKTsKICAgICAgICAgICB9CiAgICAgICAgICAgaWYgKGVtaXR0ZWQuaW5zZXJ0KGQpLnNlY29uZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL2NtQ29tcHV0ZVRhcmdldERlcGVuZHMuY3h4IGIvU291cmNlL2NtQ29tcHV0ZVRhcmdldERlcGVuZHMuY3h4CmluZGV4IGE5OGE2MDguLjQxZjUzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUNvbXB1dGVUYXJnZXREZXBlbmRzLmN4eAorKysgYi9Tb3VyY2UvY21Db21wdXRlVGFyZ2V0RGVwZW5kcy5jeHgKQEAgLTE5OCw2ICsxOTgsMjAgQEAKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gY29uc3QmIGNvbmZpZ3MgPQogICAgICAgZGVwZW5kZXItPk1ha2VmaWxlLT5HZXRHZW5lcmF0b3JDb25maWdzKCk7CiAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgaXQgOiBjb25maWdzKSB7CisgICAgICBjbUxpbmtJbXBsZW1lbnRhdGlvbiBjb25zdCogaW1wbCA9IGRlcGVuZGVyLT5HZXRMaW5rSW1wbGVtZW50YXRpb24oaXQpOworCisgICAgICAvLyBBIHRhcmdldCBzaG91bGQgbm90IGRlcGVuZCBvbiBpdHNlbGYuCisgICAgICBlbWl0dGVkLmluc2VydChjbUxpbmtJdGVtKGRlcGVuZGVyLCBmYWxzZSwgY21MaXN0RmlsZUJhY2t0cmFjZSgpKSk7CisgICAgICBlbWl0dGVkLmluc2VydChjbUxpbmtJdGVtKGRlcGVuZGVyLCB0cnVlLCBjbUxpc3RGaWxlQmFja3RyYWNlKCkpKTsKKyAgICAgIGZvciAoY21MaW5rSW1wbEl0ZW0gY29uc3QmIGxpYiA6IGltcGwtPkxpYnJhcmllcykgeworICAgICAgICAvLyBEb24ndCBlbWl0IHRoZSBzYW1lIGxpYnJhcnkgdHdpY2UgZm9yIHRoaXMgdGFyZ2V0LgorICAgICAgICBpZiAoZW1pdHRlZC5pbnNlcnQobGliKS5zZWNvbmQpIHsKKyAgICAgICAgICB0aGlzLT5BZGRUYXJnZXREZXBlbmQoZGVwZW5kZXJfaW5kZXgsIGxpYiwgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgIHRoaXMtPkFkZEludGVyZmFjZURlcGVuZHMoZGVwZW5kZXJfaW5kZXgsIGxpYiwgaXQsIGVtaXR0ZWQpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8vIEFkZCBkZXBlbmRlbmNpZXMgb24gb2JqZWN0IGxpYnJhcmllcyBub3Qgb3RoZXJ3aXNlIGhhbmRsZWQgYWJvdmUuCiAgICAgICBzdGQ6OnZlY3RvcjxjbVNvdXJjZUZpbGUgY29uc3QqPiBvYmplY3RGaWxlczsKICAgICAgIGRlcGVuZGVyLT5HZXRFeHRlcm5hbE9iamVjdHMob2JqZWN0RmlsZXMsIGl0KTsKICAgICAgIGZvciAoY21Tb3VyY2VGaWxlIGNvbnN0KiBvIDogb2JqZWN0RmlsZXMpIHsKQEAgLTIyMiwxOSArMjM2LDYgQEAKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KLQotICAgICAgY21MaW5rSW1wbGVtZW50YXRpb24gY29uc3QqIGltcGwgPSBkZXBlbmRlci0+R2V0TGlua0ltcGxlbWVudGF0aW9uKGl0KTsKLQotICAgICAgLy8gQSB0YXJnZXQgc2hvdWxkIG5vdCBkZXBlbmQgb24gaXRzZWxmLgotICAgICAgZW1pdHRlZC5pbnNlcnQoY21MaW5rSXRlbShkZXBlbmRlciwgZmFsc2UsIGNtTGlzdEZpbGVCYWNrdHJhY2UoKSkpOwotICAgICAgZW1pdHRlZC5pbnNlcnQoY21MaW5rSXRlbShkZXBlbmRlciwgdHJ1ZSwgY21MaXN0RmlsZUJhY2t0cmFjZSgpKSk7Ci0gICAgICBmb3IgKGNtTGlua0ltcGxJdGVtIGNvbnN0JiBsaWIgOiBpbXBsLT5MaWJyYXJpZXMpIHsKLSAgICAgICAgLy8gRG9uJ3QgZW1pdCB0aGUgc2FtZSBsaWJyYXJ5IHR3aWNlIGZvciB0aGlzIHRhcmdldC4KLSAgICAgICAgaWYgKGVtaXR0ZWQuaW5zZXJ0KGxpYikuc2Vjb25kKSB7Ci0gICAgICAgICAgdGhpcy0+QWRkVGFyZ2V0RGVwZW5kKGRlcGVuZGVyX2luZGV4LCBsaWIsIHRydWUsIGZhbHNlKTsKLSAgICAgICAgICB0aGlzLT5BZGRJbnRlcmZhY2VEZXBlbmRzKGRlcGVuZGVyX2luZGV4LCBsaWIsIGl0LCBlbWl0dGVkKTsKLSAgICAgICAgfQotICAgICAgfQogICAgIH0KICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21Db25kaXRpb25FdmFsdWF0b3IuY3h4IGIvU291cmNlL2NtQ29uZGl0aW9uRXZhbHVhdG9yLmN4eAppbmRleCBmZGE2ODdmLi5iZjExMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Db25kaXRpb25FdmFsdWF0b3IuY3h4CisrKyBiL1NvdXJjZS9jbUNvbmRpdGlvbkV2YWx1YXRvci5jeHgKQEAgLTQ5NCwxMiArNDk0LDEyIEBACiAgICAgICBpZiAodGhpcy0+SXNLZXl3b3JkKGtleURFRklORUQsICphcmcpICYmIGFyZ1AxICE9IG5ld0FyZ3MuZW5kKCkpIHsKICAgICAgICAgc2l6ZV90IGFyZ1AxbGVuID0gYXJnUDEtPkdldFZhbHVlKCkuc2l6ZSgpOwogICAgICAgICBib29sIGJkZWYgPSBmYWxzZTsKLSAgICAgICAgaWYgKGFyZ1AxbGVuID4gNCAmJiBhcmdQMS0+R2V0VmFsdWUoKS5zdWJzdHIoMCwgNCkgPT0gIkVOVnsiICYmCisgICAgICAgIGlmIChhcmdQMWxlbiA+IDQgJiYgY21IYXNMaXRlcmFsUHJlZml4KGFyZ1AxLT5HZXRWYWx1ZSgpLCAiRU5WeyIpICYmCiAgICAgICAgICAgICBhcmdQMS0+R2V0VmFsdWUoKS5vcGVyYXRvcltdKGFyZ1AxbGVuIC0gMSkgPT0gJ30nKSB7CiAgICAgICAgICAgc3RkOjpzdHJpbmcgZW52ID0gYXJnUDEtPkdldFZhbHVlKCkuc3Vic3RyKDQsIGFyZ1AxbGVuIC0gNSk7CiAgICAgICAgICAgYmRlZiA9IGNtU3lzdGVtVG9vbHM6Okhhc0VudihlbnYpOwogICAgICAgICB9IGVsc2UgaWYgKGFyZ1AxbGVuID4gNiAmJgotICAgICAgICAgICAgICAgICAgIGFyZ1AxLT5HZXRWYWx1ZSgpLnN1YnN0cigwLCA2KSA9PSAiQ0FDSEV7IiAmJgorICAgICAgICAgICAgICAgICAgIGNtSGFzTGl0ZXJhbFByZWZpeChhcmdQMS0+R2V0VmFsdWUoKSwgIkNBQ0hFeyIpICYmCiAgICAgICAgICAgICAgICAgICAgYXJnUDEtPkdldFZhbHVlKCkub3BlcmF0b3JbXShhcmdQMWxlbiAtIDEpID09ICd9JykgewogICAgICAgICAgIHN0ZDo6c3RyaW5nIGNhY2hlID0gYXJnUDEtPkdldFZhbHVlKCkuc3Vic3RyKDYsIGFyZ1AxbGVuIC0gNyk7CiAgICAgICAgICAgYmRlZiA9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21Db252ZXJ0TVNCdWlsZFhNTFRvSlNPTi5weSBiL1NvdXJjZS9jbUNvbnZlcnRNU0J1aWxkWE1MVG9KU09OLnB5CmluZGV4IDAyMDc0YmEuLjJiZTM3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUNvbnZlcnRNU0J1aWxkWE1MVG9KU09OLnB5CisrKyBiL1NvdXJjZS9jbUNvbnZlcnRNU0J1aWxkWE1MVG9KU09OLnB5CkBAIC0zNSwxMiArMzUsMTQgQEAKICAgICByZXR1cm4gdmFsdWVzCiAKIAotZGVmIHJlYWRfbXNidWlsZF94bWwocGF0aCwgdmFsdWVzPXt9KToKK2RlZiByZWFkX21zYnVpbGRfeG1sKHBhdGgsIHZhbHVlcz1Ob25lKToKICAgICAiIiJSZWFkcyB0aGUgTVMgQnVpbGQgWE1MIGZpbGUgYXQgdGhlIHBhdGggYW5kIHJldHVybnMgaXRzIGNvbnRlbnRzLgogCiAgICAgS2V5d29yZCBhcmd1bWVudHM6CiAgICAgdmFsdWVzIC0tIFRoZSBtYXAgdG8gYXBwZW5kIHRoZSBjb250ZW50cyB0byAoZGVmYXVsdCB7fSkKICAgICAiIiIKKyAgICBpZiB2YWx1ZXMgaXMgTm9uZToKKyAgICAgICAgdmFsdWVzID0ge30KIAogICAgICMgQXR0ZW1wdCB0byByZWFkIHRoZSBmaWxlIGNvbnRlbnRzCiAgICAgdHJ5OgpAQCAtNzYsMTIgKzc4LDE1IEBACiAgICAgcmV0dXJuIHZhbHVlcwogCiAKLWRlZiByZWFkX21zYnVpbGRfanNvbihwYXRoLCB2YWx1ZXM9W10pOgorZGVmIHJlYWRfbXNidWlsZF9qc29uKHBhdGgsIHZhbHVlcz1Ob25lKToKICAgICAiIiJSZWFkcyB0aGUgTVMgQnVpbGQgSlNPTiBmaWxlIGF0IHRoZSBwYXRoIGFuZCByZXR1cm5zIGl0cyBjb250ZW50cy4KIAogICAgIEtleXdvcmQgYXJndW1lbnRzOgogICAgIHZhbHVlcyAtLSBUaGUgbGlzdCB0byBhcHBlbmQgdGhlIGNvbnRlbnRzIHRvIChkZWZhdWx0IFtdKQogICAgICIiIgorICAgIGlmIHZhbHVlcyBpcyBOb25lOgorICAgICAgICB2YWx1ZXMgPSBbXQorCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgogICAgICAgICBsb2dnaW5nLmluZm8oJ0NvdWxkIG5vdCBmaW5kIE1TIEJ1aWxkIEpTT04gZmlsZSBhdCAlcycsIHBhdGgpCiAgICAgICAgIHJldHVybiB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUNvcmVUcnlDb21waWxlLmN4eCBiL1NvdXJjZS9jbUNvcmVUcnlDb21waWxlLmN4eAppbmRleCBkYTA0Mzk2Li45YzI2ZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Db3JlVHJ5Q29tcGlsZS5jeHgKKysrIGIvU291cmNlL2NtQ29yZVRyeUNvbXBpbGUuY3h4CkBAIC0xMDEsMjkgKzEwMSwyMyBAQAogICB0aGlzLT5TcmNGaWxlU2lnbmF0dXJlID0gdHJ1ZTsKIAogICBjbVN0YXRlRW51bXM6OlRhcmdldFR5cGUgdGFyZ2V0VHlwZSA9IGNtU3RhdGVFbnVtczo6RVhFQ1VUQUJMRTsKLSAgY29uc3QgY2hhciogdHQgPQotICAgIHRoaXMtPk1ha2VmaWxlLT5HZXREZWZpbml0aW9uKCJDTUFLRV9UUllfQ09NUElMRV9UQVJHRVRfVFlQRSIpOwotICBpZiAoIWlzVHJ5UnVuICYmIHR0ICYmICp0dCkgewotICAgIGlmIChzdHJjbXAodHQsIGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKGNtU3RhdGVFbnVtczo6RVhFQ1VUQUJMRSkpID09Ci0gICAgICAgIDApIHsKKyAgY29uc3Qgc3RkOjpzdHJpbmcqIHR0ID0KKyAgICB0aGlzLT5NYWtlZmlsZS0+R2V0RGVmKCJDTUFLRV9UUllfQ09NUElMRV9UQVJHRVRfVFlQRSIpOworICBpZiAoIWlzVHJ5UnVuICYmIHR0ICYmICF0dC0+ZW1wdHkoKSkgeworICAgIGlmICgqdHQgPT0gY21TdGF0ZTo6R2V0VGFyZ2V0VHlwZU5hbWUoY21TdGF0ZUVudW1zOjpFWEVDVVRBQkxFKSkgewogICAgICAgdGFyZ2V0VHlwZSA9IGNtU3RhdGVFbnVtczo6RVhFQ1VUQUJMRTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcCh0dCwKLSAgICAgICAgICAgICAgICAgICAgICBjbVN0YXRlOjpHZXRUYXJnZXRUeXBlTmFtZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGNtU3RhdGVFbnVtczo6U1RBVElDX0xJQlJBUlkpKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmICgqdHQgPT0KKyAgICAgICAgICAgICAgIGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKGNtU3RhdGVFbnVtczo6U1RBVElDX0xJQlJBUlkpKSB7CiAgICAgICB0YXJnZXRUeXBlID0gY21TdGF0ZUVudW1zOjpTVEFUSUNfTElCUkFSWTsKICAgICB9IGVsc2UgewogICAgICAgdGhpcy0+TWFrZWZpbGUtPklzc3VlTWVzc2FnZSgKICAgICAgICAgTWVzc2FnZVR5cGU6OkZBVEFMX0VSUk9SLAotICAgICAgICBzdGQ6OnN0cmluZygiSW52YWxpZCB2YWx1ZSAnIikgKyB0dCArCi0gICAgICAgICAgIicgZm9yICIKLSAgICAgICAgICAiQ01BS0VfVFJZX0NPTVBJTEVfVEFSR0VUX1RZUEUuICBPbmx5ICIKLSAgICAgICAgICAiJyIgKwotICAgICAgICAgIGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKGNtU3RhdGVFbnVtczo6RVhFQ1VUQUJMRSkgKwotICAgICAgICAgICInIGFuZCAiCi0gICAgICAgICAgIiciICsKLSAgICAgICAgICBjbVN0YXRlOjpHZXRUYXJnZXRUeXBlTmFtZShjbVN0YXRlRW51bXM6OlNUQVRJQ19MSUJSQVJZKSArCi0gICAgICAgICAgIicgIgotICAgICAgICAgICJhcmUgYWxsb3dlZC4iKTsKKyAgICAgICAgY21TdHJDYXQoIkludmFsaWQgdmFsdWUgJyIsICp0dCwKKyAgICAgICAgICAgICAgICAgIicgZm9yIENNQUtFX1RSWV9DT01QSUxFX1RBUkdFVF9UWVBFLiAgT25seSAnIiwKKyAgICAgICAgICAgICAgICAgY21TdGF0ZTo6R2V0VGFyZ2V0VHlwZU5hbWUoY21TdGF0ZUVudW1zOjpFWEVDVVRBQkxFKSwKKyAgICAgICAgICAgICAgICAgIicgYW5kICciLAorICAgICAgICAgICAgICAgICBjbVN0YXRlOjpHZXRUYXJnZXRUeXBlTmFtZShjbVN0YXRlRW51bXM6OlNUQVRJQ19MSUJSQVJZKSwKKyAgICAgICAgICAgICAgICAgIicgYXJlIGFsbG93ZWQuIikpOwogICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgfQpAQCAtMjk2LDEyICsyOTAsMTAgQEAKICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgdGhpcy0+TWFrZWZpbGUtPklzc3VlTWVzc2FnZSgKICAgICAgICAgICAgICAgTWVzc2FnZVR5cGU6OkZBVEFMX0VSUk9SLAotICAgICAgICAgICAgICAiT25seSBsaWJyYXJpZXMgbWF5IGJlIHVzZWQgYXMgdHJ5X2NvbXBpbGUgb3IgdHJ5X3J1biBJTVBPUlRFRCAiCi0gICAgICAgICAgICAgICJMSU5LX0xJQlJBUklFUy4gIEdvdCAiICsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyh0Z3QtPkdldE5hbWUoKSkgKwotICAgICAgICAgICAgICAgICIgb2YgIgotICAgICAgICAgICAgICAgICJ0eXBlICIgKwotICAgICAgICAgICAgICAgIGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKHRndC0+R2V0VHlwZSgpKSArICIuIik7CisgICAgICAgICAgICAgIGNtU3RyQ2F0KCJPbmx5IGxpYnJhcmllcyBtYXkgYmUgdXNlZCBhcyB0cnlfY29tcGlsZSBvciB0cnlfcnVuICIKKyAgICAgICAgICAgICAgICAgICAgICAgIklNUE9SVEVEIExJTktfTElCUkFSSUVTLiAgR290ICIsCisgICAgICAgICAgICAgICAgICAgICAgIHRndC0+R2V0TmFtZSgpLCAiIG9mIHR5cGUgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgY21TdGF0ZTo6R2V0VGFyZ2V0VHlwZU5hbWUodGd0LT5HZXRUeXBlKCkpLCAiLiIpKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAodGd0LT5Jc0ltcG9ydGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbURlZmluZVByb3BlcnR5Q29tbWFuZC5jeHggYi9Tb3VyY2UvY21EZWZpbmVQcm9wZXJ0eUNvbW1hbmQuY3h4CmluZGV4IGY0ZTRmZGEuLjRlMmQ5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbURlZmluZVByb3BlcnR5Q29tbWFuZC5jeHgKKysrIGIvU291cmNlL2NtRGVmaW5lUHJvcGVydHlDb21tYW5kLmN4eApAQCAtOTUsNyArOTUsNyBAQAogCiAgIC8vIEFjdHVhbGx5IGRlZmluZSB0aGUgcHJvcGVydHkuCiAgIHN0YXR1cy5HZXRNYWtlZmlsZSgpLkdldFN0YXRlKCktPkRlZmluZVByb3BlcnR5KAotICAgIFByb3BlcnR5TmFtZSwgc2NvcGUsIEJyaWVmRG9jcy5jX3N0cigpLCBGdWxsRG9jcy5jX3N0cigpLCBpbmhlcml0ZWQpOworICAgIFByb3BlcnR5TmFtZSwgc2NvcGUsIEJyaWVmRG9jcywgRnVsbERvY3MsIGluaGVyaXRlZCk7CiAKICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21EZXBlbmRzLmN4eCBiL1NvdXJjZS9jbURlcGVuZHMuY3h4CmluZGV4IDEyOWE1ZjcuLmQ0ZThkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbURlcGVuZHMuY3h4CisrKyBiL1NvdXJjZS9jbURlcGVuZHMuY3h4CkBAIC0yLDcgKzIsNiBAQAogICAgZmlsZSBDb3B5cmlnaHQudHh0IG9yIGh0dHBzOi8vY21ha2Uub3JnL2xpY2Vuc2luZyBmb3IgZGV0YWlscy4gICovCiAjaW5jbHVkZSAiY21EZXBlbmRzLmgiCiAKLSNpbmNsdWRlIDxzc3RyZWFtPgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlICJjbXN5cy9GU3RyZWFtLmh4eCIKQEAgLTgxLDE2ICs4MCwxNCBAQAogewogICAvLyBQcmludCB2ZXJib3NlIG91dHB1dC4KICAgaWYgKHRoaXMtPlZlcmJvc2UpIHsKLSAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gbXNnOwotICAgIG1zZyA8PCAiQ2xlYXJpbmcgZGVwZW5kZW5jaWVzIGluIFwiIiA8PCBmaWxlIDw8ICJcIi4iIDw8IHN0ZDo6ZW5kbDsKLSAgICBjbVN5c3RlbVRvb2xzOjpTdGRvdXQobXNnLnN0cigpKTsKKyAgICBjbVN5c3RlbVRvb2xzOjpTdGRvdXQoCisgICAgICBjbVN0ckNhdCgiQ2xlYXJpbmcgZGVwZW5kZW5jaWVzIGluIFwiIiwgZmlsZSwgIlwiLlxuIikpOwogICB9CiAKICAgLy8gV3JpdGUgYW4gZW1wdHkgZGVwZW5kZW5jeSBmaWxlLgogICBjbUdlbmVyYXRlZEZpbGVTdHJlYW0gZGVwRmlsZVN0cmVhbShmaWxlKTsKICAgZGVwRmlsZVN0cmVhbSA8PCAiIyBFbXB0eSBkZXBlbmRlbmNpZXMgZmlsZVxuIgotICAgICAgICAgICAgICAgIDw8ICIjIFRoaXMgbWF5IGJlIHJlcGxhY2VkIHdoZW4gZGVwZW5kZW5jaWVzIGFyZSBidWlsdC4iCi0gICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOworICAgICAgICAgICAgICAgICAgICIjIFRoaXMgbWF5IGJlIHJlcGxhY2VkIHdoZW4gZGVwZW5kZW5jaWVzIGFyZSBidWlsdC5cbiI7CiB9CiAKIGJvb2wgY21EZXBlbmRzOjpXcml0ZURlcGVuZGVuY2llcyhjb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4mIC8qdW51c2VkKi8sCkBAIC0xNzIsMTAgKzE2OSw5IEBACiAKICAgICAgIC8vIFByaW50IHZlcmJvc2Ugb3V0cHV0LgogICAgICAgaWYgKHRoaXMtPlZlcmJvc2UpIHsKLSAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIG1zZzsKLSAgICAgICAgbXNnIDw8ICJEZXBlbmRlZSBcIiIgPDwgZGVwZW5kZWUgPDwgIlwiIGRvZXMgbm90IGV4aXN0IGZvciBkZXBlbmRlciBcIiIKLSAgICAgICAgICAgIDw8IGRlcGVuZGVyIDw8ICJcIi4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgY21TeXN0ZW1Ub29sczo6U3Rkb3V0KG1zZy5zdHIoKSk7CisgICAgICAgIGNtU3lzdGVtVG9vbHM6OlN0ZG91dChjbVN0ckNhdCgiRGVwZW5kZWUgXCIiLCBkZXBlbmRlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiBkb2VzIG5vdCBleGlzdCBmb3IgZGVwZW5kZXIgXCIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZXIsICJcIi5cbiIpKTsKICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGRlcGVuZGVyRXhpc3RzKSB7CiAgICAgICAvLyBUaGUgZGVwZW5kZWUgYW5kIGRlcGVuZGVyIGJvdGggZXhpc3QuICBDb21wYXJlIGZpbGUgdGltZXMuCkBAIC0xODUsMTAgKzE4MSw5IEBACiAKICAgICAgICAgLy8gUHJpbnQgdmVyYm9zZSBvdXRwdXQuCiAgICAgICAgIGlmICh0aGlzLT5WZXJib3NlKSB7Ci0gICAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIG1zZzsKLSAgICAgICAgICBtc2cgPDwgIkRlcGVuZGVlIFwiIiA8PCBkZXBlbmRlZSA8PCAiXCIgaXMgbmV3ZXIgdGhhbiBkZXBlbmRlciBcIiIKLSAgICAgICAgICAgICAgPDwgZGVwZW5kZXIgPDwgIlwiLiIgPDwgc3RkOjplbmRsOwotICAgICAgICAgIGNtU3lzdGVtVG9vbHM6OlN0ZG91dChtc2cuc3RyKCkpOworICAgICAgICAgIGNtU3lzdGVtVG9vbHM6OlN0ZG91dChjbVN0ckNhdCgiRGVwZW5kZWUgXCIiLCBkZXBlbmRlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiIGlzIG5ld2VyIHRoYW4gZGVwZW5kZXIgXCIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlciwgIlwiLlxuIikpOwogICAgICAgICB9CiAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTIwMCwxMSArMTk1LDkgQEAKIAogICAgICAgICAvLyBQcmludCB2ZXJib3NlIG91dHB1dC4KICAgICAgICAgaWYgKHRoaXMtPlZlcmJvc2UpIHsKLSAgICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gbXNnOwotICAgICAgICAgIG1zZyA8PCAiRGVwZW5kZWUgXCIiIDw8IGRlcGVuZGVlCi0gICAgICAgICAgICAgIDw8ICJcIiBpcyBuZXdlciB0aGFuIGRlcGVuZHMgZmlsZSBcIiIgPDwgaW50ZXJuYWxEZXBlbmRzRmlsZU5hbWUKLSAgICAgICAgICAgICAgPDwgIlwiLiIgPDwgc3RkOjplbmRsOwotICAgICAgICAgIGNtU3lzdGVtVG9vbHM6OlN0ZG91dChtc2cuc3RyKCkpOworICAgICAgICAgIGNtU3lzdGVtVG9vbHM6OlN0ZG91dChjbVN0ckNhdCgiRGVwZW5kZWUgXCIiLCBkZXBlbmRlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiIGlzIG5ld2VyIHRoYW4gZGVwZW5kcyBmaWxlIFwiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxEZXBlbmRzRmlsZU5hbWUsICJcIi5cbiIpKTsKICAgICAgICAgfQogICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbURlcGVuZHNDLmN4eCBiL1NvdXJjZS9jbURlcGVuZHNDLmN4eAppbmRleCBlMzBkOTU5Li4wMWJiNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21EZXBlbmRzQy5jeHgKKysrIGIvU291cmNlL2NtRGVwZW5kc0MuY3h4CkBAIC0yMTIsMTcgKzIxMiwxNyBAQAogICAvLyBjb252ZXJ0IHRoZSBkZXBlbmRlbmNpZXMgdG8gcGF0aHMgcmVsYXRpdmUgdG8gdGhlIGhvbWUgb3V0cHV0CiAgIC8vIGRpcmVjdG9yeS4gIFdlIG11c3QgZG8gdGhlIHNhbWUgaGVyZS4KICAgc3RkOjpzdHJpbmcgb2JqX20gPSBjbVN5c3RlbVRvb2xzOjpDb252ZXJ0VG9PdXRwdXRQYXRoKG9ial9pKTsKLSAgaW50ZXJuYWxEZXBlbmRzIDw8IG9ial9pIDw8IHN0ZDo6ZW5kbDsKKyAgaW50ZXJuYWxEZXBlbmRzIDw8IG9ial9pIDw8ICdcbic7CiAKICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgZGVwIDogZGVwZW5kZW5jaWVzKSB7CiAgICAgbWFrZURlcGVuZHMgPDwgb2JqX20gPDwgIjogIgogICAgICAgICAgICAgICAgIDw8IGNtU3lzdGVtVG9vbHM6OkNvbnZlcnRUb091dHB1dFBhdGgoCiAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+TWF5YmVDb252ZXJ0VG9SZWxhdGl2ZVBhdGgoYmluRGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcCkpCi0gICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgIGludGVybmFsRGVwZW5kcyA8PCAiICIgPDwgZGVwIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgICAgICA8PCAnXG4nOworICAgIGludGVybmFsRGVwZW5kcyA8PCAnICcgPDwgZGVwIDw8ICdcbic7CiAgIH0KLSAgbWFrZURlcGVuZHMgPDwgc3RkOjplbmRsOworICBtYWtlRGVwZW5kcyA8PCAnXG4nOwogCiAgIHJldHVybiB0cnVlOwogfQpAQCAtMjY0LDE5ICsyNjQsMTkgQEAKICAgICAgIC8vIGZpbGUgZG9lc24ndCBleGlzdCwgY2hlY2sgdGhhdCB0aGUgcmVndWxhciBleHByZXNzaW9ucwogICAgICAgLy8gaGF2ZW4ndCBjaGFuZ2VkCiAgICAgICBlbHNlIGlmICghcmVzKSB7Ci0gICAgICAgIGlmIChsaW5lLmZpbmQoSU5DTFVERV9SRUdFWF9MSU5FX01BUktFUikgPT0gMCkgeworICAgICAgICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGxpbmUsIElOQ0xVREVfUkVHRVhfTElORV9NQVJLRVIpKSB7CiAgICAgICAgICAgaWYgKGxpbmUgIT0gdGhpcy0+SW5jbHVkZVJlZ2V4TGluZVN0cmluZykgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChsaW5lLmZpbmQoSU5DTFVERV9SRUdFWF9TQ0FOX01BUktFUikgPT0gMCkgeworICAgICAgICB9IGVsc2UgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChsaW5lLCBJTkNMVURFX1JFR0VYX1NDQU5fTUFSS0VSKSkgewogICAgICAgICAgIGlmIChsaW5lICE9IHRoaXMtPkluY2x1ZGVSZWdleFNjYW5TdHJpbmcpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAobGluZS5maW5kKElOQ0xVREVfUkVHRVhfQ09NUExBSU5fTUFSS0VSKSA9PSAwKSB7CisgICAgICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGxpbmUsIElOQ0xVREVfUkVHRVhfQ09NUExBSU5fTUFSS0VSKSkgewogICAgICAgICAgIGlmIChsaW5lICE9IHRoaXMtPkluY2x1ZGVSZWdleENvbXBsYWluU3RyaW5nKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGxpbmUuZmluZChJTkNMVURFX1JFR0VYX1RSQU5TRk9STV9NQVJLRVIpID09IDApIHsKKyAgICAgICAgfSBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgobGluZSwgSU5DTFVERV9SRUdFWF9UUkFOU0ZPUk1fTUFSS0VSKSkgewogICAgICAgICAgIGlmIChsaW5lICE9IHRoaXMtPkluY2x1ZGVSZWdleFRyYW5zZm9ybVN0cmluZykgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIH0KQEAgLTMxMiwxNyArMzEyLDE3IEBACiAKICAgZm9yIChhdXRvIGNvbnN0JiBmaWxlSXQgOiB0aGlzLT5GaWxlQ2FjaGUpIHsKICAgICBpZiAoZmlsZUl0LnNlY29uZC5Vc2VkKSB7Ci0gICAgICBjYWNoZU91dCA8PCBmaWxlSXQuZmlyc3QgPDwgc3RkOjplbmRsOworICAgICAgY2FjaGVPdXQgPDwgZmlsZUl0LmZpcnN0IDw8ICdcbic7CiAKICAgICAgIGZvciAoVW5zY2FubmVkRW50cnkgY29uc3QmIGluYyA6IGZpbGVJdC5zZWNvbmQuVW5zY2FubmVkRW50cmllcykgewotICAgICAgICBjYWNoZU91dCA8PCBpbmMuRmlsZU5hbWUgPDwgc3RkOjplbmRsOworICAgICAgICBjYWNoZU91dCA8PCBpbmMuRmlsZU5hbWUgPDwgJ1xuJzsKICAgICAgICAgaWYgKGluYy5RdW90ZWRMb2NhdGlvbi5lbXB0eSgpKSB7Ci0gICAgICAgICAgY2FjaGVPdXQgPDwgIi0iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICBjYWNoZU91dCA8PCAnLScgPDwgJ1xuJzsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBjYWNoZU91dCA8PCBpbmMuUXVvdGVkTG9jYXRpb24gPDwgc3RkOjplbmRsOworICAgICAgICAgIGNhY2hlT3V0IDw8IGluYy5RdW90ZWRMb2NhdGlvbiA8PCAnXG4nOwogICAgICAgICB9CiAgICAgICB9Ci0gICAgICBjYWNoZU91dCA8PCBzdGQ6OmVuZGw7CisgICAgICBjYWNoZU91dCA8PCAnXG4nOwogICAgIH0KICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtRGVwZW5kc0ZvcnRyYW4uY3h4IGIvU291cmNlL2NtRGVwZW5kc0ZvcnRyYW4uY3h4CmluZGV4IDM2OTIyMDIuLjY2NjMwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbURlcGVuZHNGb3J0cmFuLmN4eAorKysgYi9Tb3VyY2UvY21EZXBlbmRzRm9ydHJhbi5jeHgKQEAgLTEwMiwxMCArMTAyLDcgQEAKICAgdGhpcy0+U01vZEV4dCA9IG1mLT5HZXRTYWZlRGVmaW5pdGlvbigiQ01BS0VfRm9ydHJhbl9TVUJNT0RVTEVfRVhUIik7CiB9CiAKLWNtRGVwZW5kc0ZvcnRyYW46On5jbURlcGVuZHNGb3J0cmFuKCkKLXsKLSAgZGVsZXRlIHRoaXMtPkludGVybmFsOwotfQorY21EZXBlbmRzRm9ydHJhbjo6fmNtRGVwZW5kc0ZvcnRyYW4oKSA9IGRlZmF1bHQ7CiAKIGJvb2wgY21EZXBlbmRzRm9ydHJhbjo6V3JpdGVEZXBlbmRlbmNpZXMoY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+JiBzb3VyY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb2JqLApAQCAtMTg4LDcgKzE4NSw3IEBACiAgIGZpU3RyZWFtIDw8ICJwcm92aWRlc1xuIjsKICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IGNvbnN0JiBwcm92aWRlcyA9IHRoaXMtPkludGVybmFsLT5UYXJnZXRQcm92aWRlczsKICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgaSA6IHByb3ZpZGVzKSB7Ci0gICAgZmlTdHJlYW0gPDwgIiAiIDw8IGkgPDwgIlxuIjsKKyAgICBmaVN0cmVhbSA8PCAnICcgPDwgaSA8PCAnXG4nOwogICB9CiAKICAgLy8gQ3JlYXRlIGEgc2NyaXB0IHRvIGNsZWFuIHRoZSBtb2R1bGVzLgpAQCAtMjA1LDE0ICsyMDIsMTQgQEAKICAgICAgIHN0ZDo6c3RyaW5nIG1vZF9sb3dlciA9IGNtU3RyQ2F0KG1vZF9kaXIsICcvJyk7CiAgICAgICBjbUZvcnRyYW5Nb2R1bGVBcHBlbmRVcHBlckxvd2VyKGksIG1vZF91cHBlciwgbW9kX2xvd2VyKTsKICAgICAgIHN0ZDo6c3RyaW5nIHN0YW1wID0gY21TdHJDYXQoc3RhbXBfZGlyLCAnLycsIGksICIuc3RhbXAiKTsKLSAgICAgIGZjU3RyZWFtIDw8ICJcbiI7Ci0gICAgICBmY1N0cmVhbSA8PCAiICBcIiIKKyAgICAgIGZjU3RyZWFtIDw8ICJcbiIKKyAgICAgICAgICAgICAgICAgICIgIFwiIgogICAgICAgICAgICAgICAgPDwgdGhpcy0+TWF5YmVDb252ZXJ0VG9SZWxhdGl2ZVBhdGgoY3VycmVudEJpbkRpciwgbW9kX2xvd2VyKQotICAgICAgICAgICAgICAgPDwgIlwiXG4iOwotICAgICAgZmNTdHJlYW0gPDwgIiAgXCIiCisgICAgICAgICAgICAgICA8PCAiXCJcbiIKKyAgICAgICAgICAgICAgICAgICIgIFwiIgogICAgICAgICAgICAgICAgPDwgdGhpcy0+TWF5YmVDb252ZXJ0VG9SZWxhdGl2ZVBhdGgoY3VycmVudEJpbkRpciwgbW9kX3VwcGVyKQotICAgICAgICAgICAgICAgPDwgIlwiXG4iOwotICAgICAgZmNTdHJlYW0gPDwgIiAgXCIiCisgICAgICAgICAgICAgICA8PCAiXCJcbiIKKyAgICAgICAgICAgICAgICAgICIgIFwiIgogICAgICAgICAgICAgICAgPDwgdGhpcy0+TWF5YmVDb252ZXJ0VG9SZWxhdGl2ZVBhdGgoY3VycmVudEJpbkRpciwgc3RhbXApCiAgICAgICAgICAgICAgICA8PCAiXCJcbiI7CiAgICAgfQpAQCAtMzI5LDE2ICszMjYsMTUgQEAKICAgc3RkOjpzdHJpbmcgYmluRGlyID0gdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkdldEJpbmFyeURpcmVjdG9yeSgpOwogICBzdGQ6OnN0cmluZyBvYmpfaSA9IHRoaXMtPk1heWJlQ29udmVydFRvUmVsYXRpdmVQYXRoKGJpbkRpciwgb2JqKTsKICAgc3RkOjpzdHJpbmcgb2JqX20gPSBjbVN5c3RlbVRvb2xzOjpDb252ZXJ0VG9PdXRwdXRQYXRoKG9ial9pKTsKLSAgaW50ZXJuYWxEZXBlbmRzIDw8IG9ial9pIDw8IHN0ZDo6ZW5kbDsKLSAgaW50ZXJuYWxEZXBlbmRzIDw8ICIgIiA8PCBzcmMgPDwgc3RkOjplbmRsOworICBpbnRlcm5hbERlcGVuZHMgPDwgb2JqX2kgPDwgIlxuICIgPDwgc3JjIDw8ICdcbic7CiAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGkgOiBpbmZvLkluY2x1ZGVzKSB7CiAgICAgbWFrZURlcGVuZHMgPDwgb2JqX20gPDwgIjogIgogICAgICAgICAgICAgICAgIDw8IGNtU3lzdGVtVG9vbHM6OkNvbnZlcnRUb091dHB1dFBhdGgoCiAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5NYXliZUNvbnZlcnRUb1JlbGF0aXZlUGF0aChiaW5EaXIsIGkpKQotICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICBpbnRlcm5hbERlcGVuZHMgPDwgIiAiIDw8IGkgPDwgc3RkOjplbmRsOworICAgICAgICAgICAgICAgIDw8ICdcbic7CisgICAgaW50ZXJuYWxEZXBlbmRzIDw8ICcgJyA8PCBpIDw8ICdcbic7CiAgIH0KLSAgbWFrZURlcGVuZHMgPDwgc3RkOjplbmRsOworICBtYWtlRGVwZW5kcyA8PCAnXG4nOwogCiAgIC8vIFdyaXRlIG1vZHVsZSByZXF1aXJlbWVudHMgdG8gdGhlIG91dHB1dCBzdHJlYW0uCiAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGkgOiBpbmZvLlJlcXVpcmVzKSB7CkBAIC0zNTcsNyArMzUzLDcgQEAKICAgICAgIC8vIFRoaXMgbW9kdWxlIGlzIGtub3duLiAgRGVwZW5kIG9uIGl0cyB0aW1lc3RhbXAgZmlsZS4KICAgICAgIHN0ZDo6c3RyaW5nIHN0YW1wRmlsZSA9IGNtU3lzdGVtVG9vbHM6OkNvbnZlcnRUb091dHB1dFBhdGgoCiAgICAgICAgIHRoaXMtPk1heWJlQ29udmVydFRvUmVsYXRpdmVQYXRoKGJpbkRpciwgcmVxdWlyZWQtPnNlY29uZCkpOwotICAgICAgbWFrZURlcGVuZHMgPDwgb2JqX20gPDwgIjogIiA8PCBzdGFtcEZpbGUgPDwgIlxuIjsKKyAgICAgIG1ha2VEZXBlbmRzIDw8IG9ial9tIDw8ICI6ICIgPDwgc3RhbXBGaWxlIDw8ICdcbic7CiAgICAgfSBlbHNlIHsKICAgICAgIC8vIFRoaXMgbW9kdWxlIGlzIG5vdCBrbm93biB0byBDTWFrZS4gIFRyeSB0byBsb2NhdGUgaXQgd2hlcmUKICAgICAgIC8vIHRoZSBjb21waWxlciB3aWxsIGFuZCBkZXBlbmQgb24gdGhhdC4KQEAgLTM2NSw3ICszNjEsNyBAQAogICAgICAgaWYgKHRoaXMtPkZpbmRNb2R1bGUoaSwgbW9kdWxlKSkgewogICAgICAgICBtb2R1bGUgPSBjbVN5c3RlbVRvb2xzOjpDb252ZXJ0VG9PdXRwdXRQYXRoKAogICAgICAgICAgIHRoaXMtPk1heWJlQ29udmVydFRvUmVsYXRpdmVQYXRoKGJpbkRpciwgbW9kdWxlKSk7Ci0gICAgICAgIG1ha2VEZXBlbmRzIDw8IG9ial9tIDw8ICI6ICIgPDwgbW9kdWxlIDw8ICJcbiI7CisgICAgICAgIG1ha2VEZXBlbmRzIDw8IG9ial9tIDw8ICI6ICIgPDwgbW9kdWxlIDw8ICdcbic7CiAgICAgICB9CiAgICAgfQogICB9CkBAIC0zOTQsNyArMzkwLDcgQEAKICAgICAgICAgY21TeXN0ZW1Ub29sczo6Q29udmVydFRvT3V0cHV0UGF0aChzdGFtcEZpbGUpOwogCiAgICAgICBtYWtlRGVwZW5kcyA8PCBvYmpfbSA8PCAiLnByb3ZpZGVzLmJ1aWxkIgotICAgICAgICAgICAgICAgICAgPDwgIjogIiA8PCBzdGFtcEZpbGVGb3JNYWtlIDw8ICJcbiI7CisgICAgICAgICAgICAgICAgICA8PCAiOiAiIDw8IHN0YW1wRmlsZUZvck1ha2UgPDwgJ1xuJzsKICAgICAgIC8vIE5vdGUgdGhhdCB3aGVuIGNtYWtlX2NvcHlfZjkwX21vZCBmaW5kcyB0aGF0IGEgbW9kdWxlIGZpbGUKICAgICAgIC8vIGFuZCB0aGUgY29ycmVzcG9uZGluZyBzdGFtcCBmaWxlIGhhdmUgbm8gZGlmZmVyZW5jZXMsIHRoZSBzdGFtcAogICAgICAgLy8gZmlsZSBpcyBub3QgdXBkYXRlZC4gSW4gc3VjaCBjYXNlIHRoZSBzdGFtcCBmaWxlIHdpbGwgYmUgYWx3YXlzCkBAIC00MDIsMTUgKzM5OCwxNSBAQAogICAgICAgLy8gb24gZWFjaCBuZXcgYnVpbGQuIFRoaXMgaXMgZXhwZWN0ZWQgYmVoYXZpb3IgZm9yIGluY3JlbWVudGFsCiAgICAgICAvLyBidWlsZHMgYW5kIGNhbiBub3QgYmUgY2hhbmdlZCB3aXRob3V0IHByZWZvcm1pbmcgcmVjdXJzaXZlIG1ha2UKICAgICAgIC8vIGNhbGxzIHRoYXQgd291bGQgY29uc2lkZXJhYmx5IHNsb3cgZG93biB0aGUgYnVpbGRpbmcgcHJvY2Vzcy4KLSAgICAgIG1ha2VEZXBlbmRzIDw8IHN0YW1wRmlsZUZvck1ha2UgPDwgIjogIiA8PCBvYmpfbSA8PCAiXG4iOworICAgICAgbWFrZURlcGVuZHMgPDwgc3RhbXBGaWxlRm9yTWFrZSA8PCAiOiAiIDw8IG9ial9tIDw8ICdcbic7CiAgICAgICBtYWtlRGVwZW5kcyA8PCAiXHQkKENNQUtFX0NPTU1BTkQpIC1FIGNtYWtlX2NvcHlfZjkwX21vZCAiIDw8IG1vZEZpbGUKLSAgICAgICAgICAgICAgICAgIDw8ICIgIiA8PCBzdGFtcEZpbGVGb3JTaGVsbDsKKyAgICAgICAgICAgICAgICAgIDw8ICcgJyA8PCBzdGFtcEZpbGVGb3JTaGVsbDsKICAgICAgIGNtTWFrZWZpbGUqIG1mID0gdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkdldE1ha2VmaWxlKCk7CiAgICAgICBjb25zdCBjaGFyKiBjaWQgPSBtZi0+R2V0RGVmaW5pdGlvbigiQ01BS0VfRm9ydHJhbl9DT01QSUxFUl9JRCIpOwogICAgICAgaWYgKGNpZCAmJiAqY2lkKSB7Ci0gICAgICAgIG1ha2VEZXBlbmRzIDw8ICIgIiA8PCBjaWQ7CisgICAgICAgIG1ha2VEZXBlbmRzIDw8ICcgJyA8PCBjaWQ7CiAgICAgICB9Ci0gICAgICBtYWtlRGVwZW5kcyA8PCAiXG4iOworICAgICAgbWFrZURlcGVuZHMgPDwgJ1xuJzsKICAgICB9CiAgICAgbWFrZURlcGVuZHMgPDwgb2JqX20gPDwgIi5wcm92aWRlcy5idWlsZDpcbiI7CiAgICAgLy8gQWZ0ZXIgY29weWluZyB0aGUgbW9kdWxlcyB1cGRhdGUgdGhlIHRpbWVzdGFtcCBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtRGVwZW5kc0ZvcnRyYW4uaCBiL1NvdXJjZS9jbURlcGVuZHNGb3J0cmFuLmgKaW5kZXggMDQ4NTExNS4uZTNlMGQwNSAxMDA2NDQKLS0tIGEvU291cmNlL2NtRGVwZW5kc0ZvcnRyYW4uaAorKysgYi9Tb3VyY2UvY21EZXBlbmRzRm9ydHJhbi5oCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgImNtQ29uZmlndXJlLmgiIC8vIElXWVUgcHJhZ21hOiBrZWVwCiAKICNpbmNsdWRlIDxpb3Nmd2Q+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgpAQCAtODQsNyArODUsNyBAQAogICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gUFBEZWZpbml0aW9uczsKIAogICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgotICBjbURlcGVuZHNGb3J0cmFuSW50ZXJuYWxzKiBJbnRlcm5hbCA9IG51bGxwdHI7CisgIHN0ZDo6dW5pcXVlX3B0cjxjbURlcGVuZHNGb3J0cmFuSW50ZXJuYWxzPiBJbnRlcm5hbDsKIAogcHJpdmF0ZToKICAgc3RkOjpzdHJpbmcgTWF5YmVDb252ZXJ0VG9SZWxhdGl2ZVBhdGgoc3RkOjpzdHJpbmcgY29uc3QmIGJhc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21EZXBlbmRzSmF2YVBhcnNlckhlbHBlci5jeHggYi9Tb3VyY2UvY21EZXBlbmRzSmF2YVBhcnNlckhlbHBlci5jeHgKaW5kZXggNTE2YmJiZi4uZmMxYmJkZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtRGVwZW5kc0phdmFQYXJzZXJIZWxwZXIuY3h4CisrKyBiL1NvdXJjZS9jbURlcGVuZHNKYXZhUGFyc2VySGVscGVyLmN4eApAQCAtOCw2ICs4LDcgQEAKICNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCisjaW5jbHVkZSA8Y20vbWVtb3J5PgogI2luY2x1ZGUgPGNtL3N0cmluZ192aWV3PgogCiAjaW5jbHVkZSAiY21zeXMvRlN0cmVhbS5oeHgiCkBAIC0xNjksMTAgKzE3MCwxMSBAQAogICAgIHJldHVybjsKICAgfQogICB0aGlzLT5VbmlvbnNBdmFpbGFibGUrKzsKLSAgcHQtPnN0ciA9IG5ldyBjaGFyW2xlbiArIDFdOworICBhdXRvIHVwID0gY206Om1ha2VfdW5pcXVlPGNoYXJbXT4obGVuICsgMSk7CisgIHB0LT5zdHIgPSB1cC5nZXQoKTsKICAgc3RybmNweShwdC0+c3RyLCBzdHIsIGxlbik7CiAgIHB0LT5zdHJbbGVuXSA9IDA7Ci0gIHRoaXMtPkFsbG9jYXRlcy5wdXNoX2JhY2socHQtPnN0cik7CisgIHRoaXMtPkFsbG9jYXRlcy5wdXNoX2JhY2soc3RkOjptb3ZlKHVwKSk7CiB9CiAKIHZvaWQgY21EZXBlbmRzSmF2YVBhcnNlckhlbHBlcjo6U3RhcnRDbGFzcyhjb25zdCBjaGFyKiBjbHMpCkBAIC0yNzUsMTAgKzI3Nyw3IEBACiAKIHZvaWQgY21EZXBlbmRzSmF2YVBhcnNlckhlbHBlcjo6Q2xlYW51cFBhcnNlcigpCiB7Ci0gIGZvciAoY2hhciogYWxsb2NhdGUgOiB0aGlzLT5BbGxvY2F0ZXMpIHsKLSAgICBkZWxldGVbXSBhbGxvY2F0ZTsKLSAgfQotICB0aGlzLT5BbGxvY2F0ZXMuZXJhc2UodGhpcy0+QWxsb2NhdGVzLmJlZ2luKCksIHRoaXMtPkFsbG9jYXRlcy5lbmQoKSk7CisgIHRoaXMtPkFsbG9jYXRlcy5jbGVhcigpOwogfQogCiBpbnQgY21EZXBlbmRzSmF2YVBhcnNlckhlbHBlcjo6TGV4SW5wdXQoY2hhciogYnVmLCBpbnQgbWF4bGVuKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtRGVwZW5kc0phdmFQYXJzZXJIZWxwZXIuaCBiL1NvdXJjZS9jbURlcGVuZHNKYXZhUGFyc2VySGVscGVyLmgKaW5kZXggYTY3M2I1Yi4uYzU0NWVlMiAxMDA2NDQKLS0tIGEvU291cmNlL2NtRGVwZW5kc0phdmFQYXJzZXJIZWxwZXIuaAorKysgYi9Tb3VyY2UvY21EZXBlbmRzSmF2YVBhcnNlckhlbHBlci5oCkBAIC01LDYgKzUsNyBAQAogCiAjaW5jbHVkZSAiY21Db25maWd1cmUuaCIgLy8gSVdZVSBwcmFnbWE6IGtlZXAKIAorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCkBAIC04MSw3ICs4Miw3IEBACiAgIGludCBDdXJyZW50RGVwdGg7CiAgIGludCBWZXJib3NlOwogCi0gIHN0ZDo6dmVjdG9yPGNoYXIqPiBBbGxvY2F0ZXM7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+PiBBbGxvY2F0ZXM7CiAKICAgdm9pZCBQcmludENsYXNzZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtRHluYW1pY0xvYWRlci5jeHggYi9Tb3VyY2UvY21EeW5hbWljTG9hZGVyLmN4eAppbmRleCAwYjcyYTk0Li5hMzczMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21EeW5hbWljTG9hZGVyLmN4eAorKysgYi9Tb3VyY2UvY21EeW5hbWljTG9hZGVyLmN4eApAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorbmFtZXNwYWNlIHsKIGNsYXNzIGNtRHluYW1pY0xvYWRlckNhY2hlCiB7CiBwdWJsaWM6CkBAIC0xNSwxNCArMTYsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgY21zeXM6OkR5bmFtaWNMb2FkZXI6OkxpYnJhcnlIYW5kbGUmIC8qcCovKTsKICAgYm9vbCBGbHVzaENhY2hlKGNvbnN0IGNoYXIqIHBhdGgpOwogICB2b2lkIEZsdXNoQ2FjaGUoKTsKLSAgc3RhdGljIGNtRHluYW1pY0xvYWRlckNhY2hlKiBHZXRJbnN0YW5jZSgpOworICBzdGF0aWMgY21EeW5hbWljTG9hZGVyQ2FjaGUmIEdldEluc3RhbmNlKCk7CiAKIHByaXZhdGU6CiAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBjbXN5czo6RHluYW1pY0xvYWRlcjo6TGlicmFyeUhhbmRsZT4gQ2FjaGVNYXA7Ci0gIHN0YXRpYyBjbUR5bmFtaWNMb2FkZXJDYWNoZSogSW5zdGFuY2U7CisgIHN0YXRpYyBjbUR5bmFtaWNMb2FkZXJDYWNoZSBJbnN0YW5jZTsKIH07CiAKLWNtRHluYW1pY0xvYWRlckNhY2hlKiBjbUR5bmFtaWNMb2FkZXJDYWNoZTo6SW5zdGFuY2UgPSBudWxscHRyOworY21EeW5hbWljTG9hZGVyQ2FjaGUgY21EeW5hbWljTG9hZGVyQ2FjaGU6Okluc3RhbmNlOworfQogCiBjbUR5bmFtaWNMb2FkZXJDYWNoZTo6fmNtRHluYW1pY0xvYWRlckNhY2hlKCkgPSBkZWZhdWx0OwogCkBAIC02NCwxNSArNjYsMTEgQEAKICAgZm9yIChhdXRvIGNvbnN0JiBpdCA6IHRoaXMtPkNhY2hlTWFwKSB7CiAgICAgY21zeXM6OkR5bmFtaWNMb2FkZXI6OkNsb3NlTGlicmFyeShpdC5zZWNvbmQpOwogICB9Ci0gIGRlbGV0ZSBjbUR5bmFtaWNMb2FkZXJDYWNoZTo6SW5zdGFuY2U7Ci0gIGNtRHluYW1pY0xvYWRlckNhY2hlOjpJbnN0YW5jZSA9IG51bGxwdHI7CisgIHRoaXMtPkNhY2hlTWFwLmNsZWFyKCk7CiB9CiAKLWNtRHluYW1pY0xvYWRlckNhY2hlKiBjbUR5bmFtaWNMb2FkZXJDYWNoZTo6R2V0SW5zdGFuY2UoKQorY21EeW5hbWljTG9hZGVyQ2FjaGUmIGNtRHluYW1pY0xvYWRlckNhY2hlOjpHZXRJbnN0YW5jZSgpCiB7Ci0gIGlmICghY21EeW5hbWljTG9hZGVyQ2FjaGU6Okluc3RhbmNlKSB7Ci0gICAgY21EeW5hbWljTG9hZGVyQ2FjaGU6Okluc3RhbmNlID0gbmV3IGNtRHluYW1pY0xvYWRlckNhY2hlOwotICB9CiAgIHJldHVybiBjbUR5bmFtaWNMb2FkZXJDYWNoZTo6SW5zdGFuY2U7CiB9CiAKQEAgLTgwLDE1ICs3OCwxNSBAQAogICBjb25zdCBjaGFyKiBsaWJuYW1lKQogewogICBjbXN5czo6RHluYW1pY0xvYWRlcjo6TGlicmFyeUhhbmRsZSBsaDsKLSAgaWYgKGNtRHluYW1pY0xvYWRlckNhY2hlOjpHZXRJbnN0YW5jZSgpLT5HZXRDYWNoZUZpbGUobGlibmFtZSwgbGgpKSB7CisgIGlmIChjbUR5bmFtaWNMb2FkZXJDYWNoZTo6R2V0SW5zdGFuY2UoKS5HZXRDYWNoZUZpbGUobGlibmFtZSwgbGgpKSB7CiAgICAgcmV0dXJuIGxoOwogICB9CiAgIGxoID0gY21zeXM6OkR5bmFtaWNMb2FkZXI6Ok9wZW5MaWJyYXJ5KGxpYm5hbWUpOwotICBjbUR5bmFtaWNMb2FkZXJDYWNoZTo6R2V0SW5zdGFuY2UoKS0+Q2FjaGVGaWxlKGxpYm5hbWUsIGxoKTsKKyAgY21EeW5hbWljTG9hZGVyQ2FjaGU6OkdldEluc3RhbmNlKCkuQ2FjaGVGaWxlKGxpYm5hbWUsIGxoKTsKICAgcmV0dXJuIGxoOwogfQogCiB2b2lkIGNtRHluYW1pY0xvYWRlcjo6Rmx1c2hDYWNoZSgpCiB7Ci0gIGNtRHluYW1pY0xvYWRlckNhY2hlOjpHZXRJbnN0YW5jZSgpLT5GbHVzaENhY2hlKCk7CisgIGNtRHluYW1pY0xvYWRlckNhY2hlOjpHZXRJbnN0YW5jZSgpLkZsdXNoQ2FjaGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUV4ZWN1dGVQcm9jZXNzQ29tbWFuZC5jeHggYi9Tb3VyY2UvY21FeGVjdXRlUHJvY2Vzc0NvbW1hbmQuY3h4CmluZGV4IDViZTViY2UuLjA4YTBmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUV4ZWN1dGVQcm9jZXNzQ29tbWFuZC5jeHgKKysrIGIvU291cmNlL2NtRXhlY3V0ZVByb2Nlc3NDb21tYW5kLmN4eApAQCAtNjEsNiArNjEsOCBAQAogICAgIGJvb2wgRXJyb3JRdWlldCA9IGZhbHNlOwogICAgIGJvb2wgT3V0cHV0U3RyaXBUcmFpbGluZ1doaXRlc3BhY2UgPSBmYWxzZTsKICAgICBib29sIEVycm9yU3RyaXBUcmFpbGluZ1doaXRlc3BhY2UgPSBmYWxzZTsKKyAgICBib29sIEVjaG9PdXRwdXRWYXJpYWJsZSA9IGZhbHNlOworICAgIGJvb2wgRWNob0Vycm9yVmFyaWFibGUgPSBmYWxzZTsKICAgICBzdGQ6OnN0cmluZyBFbmNvZGluZzsKICAgfTsKIApAQCAtODMsNyArODUsOSBAQAogICAgICAgICAgICAgJkFyZ3VtZW50czo6T3V0cHV0U3RyaXBUcmFpbGluZ1doaXRlc3BhY2UpCiAgICAgICAuQmluZCgiRVJST1JfU1RSSVBfVFJBSUxJTkdfV0hJVEVTUEFDRSJfcywKICAgICAgICAgICAgICZBcmd1bWVudHM6OkVycm9yU3RyaXBUcmFpbGluZ1doaXRlc3BhY2UpCi0gICAgICAuQmluZCgiRU5DT0RJTkciX3MsICZBcmd1bWVudHM6OkVuY29kaW5nKTsKKyAgICAgIC5CaW5kKCJFTkNPRElORyJfcywgJkFyZ3VtZW50czo6RW5jb2RpbmcpCisgICAgICAuQmluZCgiRUNIT19PVVRQVVRfVkFSSUFCTEUiX3MsICZBcmd1bWVudHM6OkVjaG9PdXRwdXRWYXJpYWJsZSkKKyAgICAgIC5CaW5kKCJFQ0hPX0VSUk9SX1ZBUklBQkxFIl9zLCAmQXJndW1lbnRzOjpFY2hvRXJyb3JWYXJpYWJsZSk7CiAKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHVucGFyc2VkQXJndW1lbnRzOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4ga2V5d29yZHNNaXNzaW5nVmFsdWU7CkBAIC0yNDEsMjggKzI0NSwzMiBAQAogICB3aGlsZSAoKHAgPSBjbXN5c1Byb2Nlc3NfV2FpdEZvckRhdGEoY3AsICZkYXRhLCAmbGVuZ3RoLCBudWxscHRyKSkpIHsKICAgICAvLyBQdXQgdGhlIG91dHB1dCBpbiB0aGUgcmlnaHQgcGxhY2UuCiAgICAgaWYgKHAgPT0gY21zeXNQcm9jZXNzX1BpcGVfU1RET1VUICYmICFhcmd1bWVudHMuT3V0cHV0UXVpZXQpIHsKLSAgICAgIGlmIChhcmd1bWVudHMuT3V0cHV0VmFyaWFibGUuZW1wdHkoKSkgeworICAgICAgaWYgKGFyZ3VtZW50cy5PdXRwdXRWYXJpYWJsZS5lbXB0eSgpIHx8IGFyZ3VtZW50cy5FY2hvT3V0cHV0VmFyaWFibGUpIHsKICAgICAgICAgcHJvY2Vzc091dHB1dC5EZWNvZGVUZXh0KGRhdGEsIGxlbmd0aCwgc3RyZGF0YSwgMSk7CiAgICAgICAgIGNtU3lzdGVtVG9vbHM6OlN0ZG91dChzdHJkYXRhKTsKLSAgICAgIH0gZWxzZSB7CisgICAgICB9CisgICAgICBpZiAoIWFyZ3VtZW50cy5PdXRwdXRWYXJpYWJsZS5lbXB0eSgpKSB7CiAgICAgICAgIGNtRXhlY3V0ZVByb2Nlc3NDb21tYW5kQXBwZW5kKHRlbXBPdXRwdXQsIGRhdGEsIGxlbmd0aCk7CiAgICAgICB9CiAgICAgfSBlbHNlIGlmIChwID09IGNtc3lzUHJvY2Vzc19QaXBlX1NUREVSUiAmJiAhYXJndW1lbnRzLkVycm9yUXVpZXQpIHsKLSAgICAgIGlmIChhcmd1bWVudHMuRXJyb3JWYXJpYWJsZS5lbXB0eSgpKSB7CisgICAgICBpZiAoYXJndW1lbnRzLkVycm9yVmFyaWFibGUuZW1wdHkoKSB8fCBhcmd1bWVudHMuRWNob0Vycm9yVmFyaWFibGUpIHsKICAgICAgICAgcHJvY2Vzc091dHB1dC5EZWNvZGVUZXh0KGRhdGEsIGxlbmd0aCwgc3RyZGF0YSwgMik7CiAgICAgICAgIGNtU3lzdGVtVG9vbHM6OlN0ZGVycihzdHJkYXRhKTsKLSAgICAgIH0gZWxzZSB7CisgICAgICB9CisgICAgICBpZiAoIWFyZ3VtZW50cy5FcnJvclZhcmlhYmxlLmVtcHR5KCkpIHsKICAgICAgICAgY21FeGVjdXRlUHJvY2Vzc0NvbW1hbmRBcHBlbmQodGVtcEVycm9yLCBkYXRhLCBsZW5ndGgpOwogICAgICAgfQogICAgIH0KICAgfQotICBpZiAoIWFyZ3VtZW50cy5PdXRwdXRRdWlldCAmJiBhcmd1bWVudHMuT3V0cHV0VmFyaWFibGUuZW1wdHkoKSkgeworICBpZiAoIWFyZ3VtZW50cy5PdXRwdXRRdWlldCAmJgorICAgICAgKGFyZ3VtZW50cy5PdXRwdXRWYXJpYWJsZS5lbXB0eSgpIHx8IGFyZ3VtZW50cy5FY2hvT3V0cHV0VmFyaWFibGUpKSB7CiAgICAgcHJvY2Vzc091dHB1dC5EZWNvZGVUZXh0KHN0ZDo6c3RyaW5nKCksIHN0cmRhdGEsIDEpOwogICAgIGlmICghc3RyZGF0YS5lbXB0eSgpKSB7CiAgICAgICBjbVN5c3RlbVRvb2xzOjpTdGRvdXQoc3RyZGF0YSk7CiAgICAgfQogICB9Ci0gIGlmICghYXJndW1lbnRzLkVycm9yUXVpZXQgJiYgYXJndW1lbnRzLkVycm9yVmFyaWFibGUuZW1wdHkoKSkgeworICBpZiAoIWFyZ3VtZW50cy5FcnJvclF1aWV0ICYmCisgICAgICAoYXJndW1lbnRzLkVycm9yVmFyaWFibGUuZW1wdHkoKSB8fCBhcmd1bWVudHMuRWNob0Vycm9yVmFyaWFibGUpKSB7CiAgICAgcHJvY2Vzc091dHB1dC5EZWNvZGVUZXh0KHN0ZDo6c3RyaW5nKCksIHN0cmRhdGEsIDIpOwogICAgIGlmICghc3RyZGF0YS5lbXB0eSgpKSB7CiAgICAgICBjbVN5c3RlbVRvb2xzOjpTdGRlcnIoc3RyZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21FeHBvcnRCdWlsZEFuZHJvaWRNS0dlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21FeHBvcnRCdWlsZEFuZHJvaWRNS0dlbmVyYXRvci5jeHgKaW5kZXggNTYxZTgzMC4uYTJiNGQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL2NtRXhwb3J0QnVpbGRBbmRyb2lkTUtHZW5lcmF0b3IuY3h4CisrKyBiL1NvdXJjZS9jbUV4cG9ydEJ1aWxkQW5kcm9pZE1LR2VuZXJhdG9yLmN4eApAQCAtMTE4LDEzICsxMTgsMTMgQEAKICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYm9vbCByZWxwYXRoID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBjbUV4cG9ydEJ1aWxkQW5kcm9pZE1LR2VuZXJhdG9yOjpJTlNUQUxMKSB7Ci0gICAgICAgICAgICAgIHJlbHBhdGggPSBsaWIuc3Vic3RyKDAsIDMpID09ICIuLi8iOworICAgICAgICAgICAgICByZWxwYXRoID0gY21IYXNMaXRlcmFsUHJlZml4KGxpYiwgIi4uLyIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gY2hlY2sgZm9yIGZ1bGwgcGF0aCBvciBpZiBpdCBhbHJlYWR5IGhhcyBhIC1sLCBvcgogICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgYW4gaW5zdGFsbCBjaGVjayBmb3IgcmVsYXRpdmUgcGF0aHMKICAgICAgICAgICAgIC8vIGlmIGl0IGlzIGZ1bGwgb3IgYSBsaW5rIGxpYnJhcnkgdGhlbiB1c2Ugc3RyaW5nIGRpcmVjdGx5CiAgICAgICAgICAgICBpZiAoY21TeXN0ZW1Ub29sczo6RmlsZUlzRnVsbFBhdGgobGliKSB8fAotICAgICAgICAgICAgICAgIGxpYi5zdWJzdHIoMCwgMikgPT0gIi1sIiB8fCByZWxwYXRoKSB7CisgICAgICAgICAgICAgICAgY21IYXNMaXRlcmFsUHJlZml4KGxpYiwgIi1sIikgfHwgcmVscGF0aCkgewogICAgICAgICAgICAgICBsZGxpYnMgKz0gIiAiICsgbGliOwogICAgICAgICAgICAgICAvLyBpZiBpdCBpcyBub3QgYSBwYXRoIGFuZCBkb2VzIG5vdCBoYXZlIGEgLWwgdGhlbiBhZGQgLWwKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxpYi5lbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21FeHBvcnRDb21tYW5kLmN4eCBiL1NvdXJjZS9jbUV4cG9ydENvbW1hbmQuY3h4CmluZGV4IGU0OWMxNzQuLmYzMTc1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUV4cG9ydENvbW1hbmQuY3h4CisrKyBiL1NvdXJjZS9jbUV4cG9ydENvbW1hbmQuY3h4CkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiY21NZXNzYWdlVHlwZS5oIgogI2luY2x1ZGUgImNtUG9saWNpZXMuaCIKICNpbmNsdWRlICJjbVN0YXRlVHlwZXMuaCIKKyNpbmNsdWRlICJjbVN0cmluZ0FsZ29yaXRobXMuaCIKICNpbmNsdWRlICJjbVN5c3RlbVRvb2xzLmgiCiAjaW5jbHVkZSAiY21UYXJnZXQuaCIKIApAQCAtMTgzLDYgKzE4NCwyOCBAQAogICAgIHJldHVybiBmYWxzZTsKICAgfQogCisgIC8vIGlmIGNtRXhwb3J0QnVpbGRGaWxlR2VuZXJhdG9yIGlzIGFscmVhZHkgZGVmaW5lZCBmb3IgdGhlIGZpbGUKKyAgLy8gYW5kIEFQUEVORCBpcyBub3Qgc3BlY2lmaWVkLCBpZiBDTVAwMTAzIGlzIE9MRCBpZ25vcmUgcHJldmlvdXMgZGVmaW5pdGlvbgorICAvLyBlbHNlIHJhaXNlIGFuIGVycm9yCisgIGlmIChnZy0+R2V0RXhwb3J0ZWRUYXJnZXRzRmlsZShmbmFtZSkgIT0gbnVsbHB0cikgeworICAgIHN3aXRjaCAobWYuR2V0UG9saWN5U3RhdHVzKGNtUG9saWNpZXM6OkNNUDAxMDMpKSB7CisgICAgICBjYXNlIGNtUG9saWNpZXM6OldBUk46CisgICAgICAgIG1mLklzc3VlTWVzc2FnZSgKKyAgICAgICAgICBNZXNzYWdlVHlwZTo6QVVUSE9SX1dBUk5JTkcsCisgICAgICAgICAgY21TdHJDYXQoY21Qb2xpY2llczo6R2V0UG9saWN5V2FybmluZyhjbVBvbGljaWVzOjpDTVAwMTAzKSwgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAiZXhwb3J0KCkgY29tbWFuZCBhbHJlYWR5IHNwZWNpZmllZCBmb3IgdGhlIGZpbGVcbiAgIiwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMuRmlsZW5hbWUsICJcbkRpZCB5b3UgbWlzcyAnQVBQRU5EJyBrZXl3b3JkPyIpKTsKKyAgICAgICAgQ01fRkFMTFRIUk9VR0g7CisgICAgICBjYXNlIGNtUG9saWNpZXM6Ok9MRDoKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBzdGF0dXMuU2V0RXJyb3IoY21TdHJDYXQoImNvbW1hbmQgYWxyZWFkeSBzcGVjaWZpZWQgZm9yIHRoZSBmaWxlXG4gICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMuRmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG5EaWQgeW91IG1pc3MgJ0FQUEVORCcga2V5d29yZD8iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKwogICAvLyBTZXR1cCBleHBvcnQgZmlsZSBnZW5lcmF0aW9uLgogICBzdGQ6OnVuaXF1ZV9wdHI8Y21FeHBvcnRCdWlsZEZpbGVHZW5lcmF0b3I+IGViZmcgPSBudWxscHRyOwogICBpZiAoYW5kcm9pZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL2NtRXhwb3J0RmlsZUdlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21FeHBvcnRGaWxlR2VuZXJhdG9yLmN4eAppbmRleCA2NDQxZTZmLi5lYTMxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21FeHBvcnRGaWxlR2VuZXJhdG9yLmN4eAorKysgYi9Tb3VyY2UvY21FeHBvcnRGaWxlR2VuZXJhdG9yLmN4eApAQCAtMjc2LDggKzI3Niw3IEBACiAgICAgICAgICAgICAgICAgPDwgIlwiXG5ob3dldmVyIGl0IGlzIGFsc28gIgogICAgICAgICAgICAgICAgICAgICJhIHN1YmRpcmVjdG9yeSBvZiB0aGUgIgogICAgICAgICAgICAgICAgIDw8IChpbkJpbmFyeSA/ICJidWlsZCIgOiAic291cmNlIikgPDwgIiB0cmVlOlxuICAgIFwiIgotICAgICAgICAgICAgICAgIDw8IChpbkJpbmFyeSA/IHRvcEJpbmFyeURpciA6IHRvcFNvdXJjZURpcikgPDwgIlwiIgotICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgICAgICA8PCAoaW5CaW5hcnkgPyB0b3BCaW5hcnlEaXIgOiB0b3BTb3VyY2VEaXIpIDw8ICJcIlxuIjsKICAgICAgICAgICAgICAgdGFyZ2V0LT5HZXRMb2NhbEdlbmVyYXRvcigpLT5Jc3N1ZU1lc3NhZ2UoCiAgICAgICAgICAgICAgICAgTWVzc2FnZVR5cGU6OkFVVEhPUl9XQVJOSU5HLCBzLnN0cigpKTsKICAgICAgICAgICAgICAgQ01fRkFMTFRIUk9VR0g7CkBAIC0xMTE2LDcgKzExMTUsNyBAQAogICAgIHJldHVybjsKICAgfQogICAvKiBjbGFuZy1mb3JtYXQgb2ZmICovCi0gIG9zIDw8ICIjIE1ha2Ugc3VyZSB0aGUgdGFyZ2V0cyB3aGljaCBoYXZlIGJlZW4gZXhwb3J0ZWQgaW4gc29tZSBvdGhlciBcbiIKKyAgb3MgPDwgIiMgTWFrZSBzdXJlIHRoZSB0YXJnZXRzIHdoaWNoIGhhdmUgYmVlbiBleHBvcnRlZCBpbiBzb21lIG90aGVyXG4iCiAgICAgICAgICIjIGV4cG9ydCBzZXQgZXhpc3QuXG4iCiAgICAgICAgICJ1bnNldCgke0NNQUtFX0ZJTkRfUEFDS0FHRV9OQU1FfV9OT1RfRk9VTkRfTUVTU0FHRV90YXJnZXRzKVxuIgogICAgICAgICAiZm9yZWFjaChfdGFyZ2V0ICI7CkBAIC0xMjE1LDkgKzEyMTQsOSBAQAogICBzdGQ6OnN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICBhdXRvJiB0YXJnZXRQcm9wZXJ0aWVzID0gZ3RlLT5UYXJnZXQtPkdldFByb3BlcnRpZXMoKTsKLSAgaWYgKGNvbnN0IGNoYXIqIGV4cG9ydFByb3BlcnRpZXMgPQorICBpZiAoY21Qcm9wIGV4cG9ydFByb3BlcnRpZXMgPQogICAgICAgICB0YXJnZXRQcm9wZXJ0aWVzLkdldFByb3BlcnR5VmFsdWUoIkVYUE9SVF9QUk9QRVJUSUVTIikpIHsKLSAgICBmb3IgKGF1dG8mIHByb3AgOiBjbUV4cGFuZGVkTGlzdChleHBvcnRQcm9wZXJ0aWVzKSkgeworICAgIGZvciAoYXV0byYgcHJvcCA6IGNtRXhwYW5kZWRMaXN0KCpleHBvcnRQcm9wZXJ0aWVzKSkgewogICAgICAgLyogQmxhY2sgbGlzdCByZXNlcnZlZCBwcm9wZXJ0aWVzICovCiAgICAgICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KHByb3AsICJJTVBPUlRFRF8iKSB8fAogICAgICAgICAgIGNtSGFzTGl0ZXJhbFByZWZpeChwcm9wLCAiSU5URVJGQUNFXyIpKSB7CkBAIC0xMjI4LDE1ICsxMjI3LDE1IEBACiAgICAgICAgIGVycm9yTWVzc2FnZSA9IGUuc3RyKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgIH0KLSAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IHRhcmdldFByb3BlcnRpZXMuR2V0UHJvcGVydHlWYWx1ZShwcm9wKTsKKyAgICAgIGNtUHJvcCBwcm9wZXJ0eVZhbHVlID0gdGFyZ2V0UHJvcGVydGllcy5HZXRQcm9wZXJ0eVZhbHVlKHByb3ApOwogICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPT0gbnVsbHB0cikgewogICAgICAgICAvLyBBc2tlZCB0byBleHBvcnQgYSBwcm9wZXJ0eSB0aGF0IGlzbid0IGRlZmluZWQgb24gdGhlIHRhcmdldC4gRG8gbm90CiAgICAgICAgIC8vIGNvbnNpZGVyIHRoaXMgYW4gZXJyb3IsIHRoZXJlJ3MganVzdCBub3RoaW5nIHRvIGV4cG9ydC4KICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAgICAgICBzdGQ6OnN0cmluZyBldmFsdWF0ZWRWYWx1ZSA9IGNtR2VuZXJhdG9yRXhwcmVzc2lvbjo6UHJlcHJvY2VzcygKLSAgICAgICAgcHJvcGVydHlWYWx1ZSwgY21HZW5lcmF0b3JFeHByZXNzaW9uOjpTdHJpcEFsbEdlbmVyYXRvckV4cHJlc3Npb25zKTsKLSAgICAgIGlmIChldmFsdWF0ZWRWYWx1ZSAhPSBwcm9wZXJ0eVZhbHVlKSB7CisgICAgICAgICpwcm9wZXJ0eVZhbHVlLCBjbUdlbmVyYXRvckV4cHJlc3Npb246OlN0cmlwQWxsR2VuZXJhdG9yRXhwcmVzc2lvbnMpOworICAgICAgaWYgKGV2YWx1YXRlZFZhbHVlICE9ICpwcm9wZXJ0eVZhbHVlKSB7CiAgICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBlOwogICAgICAgICBlIDw8ICJUYXJnZXQgXCIiIDw8IGd0ZS0+VGFyZ2V0LT5HZXROYW1lKCkgPDwgIlwiIGNvbnRhaW5zIHByb3BlcnR5IFwiIgogICAgICAgICAgIDw8IHByb3AgPDwgIlwiIGluIEVYUE9SVF9QUk9QRVJUSUVTIGJ1dCB0aGlzIHByb3BlcnR5IGNvbnRhaW5zIGEgIgpAQCAtMTI0NCw3ICsxMjQzLDcgQEAKICAgICAgICAgZXJyb3JNZXNzYWdlID0gZS5zdHIoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgfQotICAgICAgcHJvcGVydGllc1twcm9wXSA9IHByb3BlcnR5VmFsdWU7CisgICAgICBwcm9wZXJ0aWVzW3Byb3BdID0gKnByb3BlcnR5VmFsdWU7CiAgICAgfQogICB9CiAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtRXhwb3J0SW5zdGFsbEFuZHJvaWRNS0dlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21FeHBvcnRJbnN0YWxsQW5kcm9pZE1LR2VuZXJhdG9yLmN4eAppbmRleCA5NzAyZTBlLi44MGY3NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21FeHBvcnRJbnN0YWxsQW5kcm9pZE1LR2VuZXJhdG9yLmN4eAorKysgYi9Tb3VyY2UvY21FeHBvcnRJbnN0YWxsQW5kcm9pZE1LR2VuZXJhdG9yLmN4eApAQCAtNjYsNyArNjYsNyBAQAogICBvcyA8PCAiTE9DQUxfTU9EVUxFIDo9ICI7CiAgIG9zIDw8IHRhcmdldE5hbWUgPDwgIlxuIjsKICAgb3MgPDwgIkxPQ0FMX1NSQ19GSUxFUyA6PSAkKF9JTVBPUlRfUFJFRklYKS8iOwotICBvcyA8PCB0YXJnZXQtPlRhcmdldC0+R2V0UHJvcGVydHkoIl9fZGVzdCIpIDw8ICIvIjsKKyAgb3MgPDwgdGFyZ2V0LT5UYXJnZXQtPkdldFNhZmVQcm9wZXJ0eSgiX19kZXN0IikgPDwgIi8iOwogICBzdGQ6OnN0cmluZyBjb25maWc7CiAgIGlmICghdGhpcy0+Q29uZmlndXJhdGlvbnMuZW1wdHkoKSkgewogICAgIGNvbmZpZyA9IHRoaXMtPkNvbmZpZ3VyYXRpb25zWzBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtRXhwb3J0VHJ5Q29tcGlsZUZpbGVHZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtRXhwb3J0VHJ5Q29tcGlsZUZpbGVHZW5lcmF0b3IuY3h4CmluZGV4IDNkZjZhNWMuLjgwN2ViZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUV4cG9ydFRyeUNvbXBpbGVGaWxlR2VuZXJhdG9yLmN4eAorKysgYi9Tb3VyY2UvY21FeHBvcnRUcnlDb21waWxlRmlsZUdlbmVyYXRvci5jeHgKQEAgLTk3LDkgKzk3LDkgQEAKIAogICAgIHByb3BlcnRpZXNbcF0gPSB0YXJnZXQtPkdldFByb3BlcnR5KHApOwogCi0gICAgaWYgKHAuZmluZCgiSU1QT1JURURfTElOS19JTlRFUkZBQ0VfTElCUkFSSUVTIikgPT0gMCB8fAotICAgICAgICBwLmZpbmQoIklNUE9SVEVEX0xJTktfREVQRU5ERU5UX0xJQlJBUklFUyIpID09IDAgfHwKLSAgICAgICAgcC5maW5kKCJJTlRFUkZBQ0VfTElOS19MSUJSQVJJRVMiKSA9PSAwKSB7CisgICAgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChwLCAiSU1QT1JURURfTElOS19JTlRFUkZBQ0VfTElCUkFSSUVTIikgfHwKKyAgICAgICAgY21IYXNMaXRlcmFsUHJlZml4KHAsICJJTVBPUlRFRF9MSU5LX0RFUEVOREVOVF9MSUJSQVJJRVMiKSB8fAorICAgICAgICBjbUhhc0xpdGVyYWxQcmVmaXgocCwgIklOVEVSRkFDRV9MSU5LX0xJQlJBUklFUyIpKSB7CiAgICAgICBzdGQ6OnN0cmluZyBldmFsUmVzdWx0ID0KICAgICAgICAgdGhpcy0+RmluZFRhcmdldHMocCwgdGFyZ2V0LCBzdGQ6OnN0cmluZygpLCBlbWl0dGVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtRXh0cmFDb2RlQmxvY2tzR2VuZXJhdG9yLmN4eCBiL1NvdXJjZS9jbUV4dHJhQ29kZUJsb2Nrc0dlbmVyYXRvci5jeHgKaW5kZXggYjcxMDQ2Ny4uNDJmZDBlYSAxMDA2NDQKLS0tIGEvU291cmNlL2NtRXh0cmFDb2RlQmxvY2tzR2VuZXJhdG9yLmN4eAorKysgYi9Tb3VyY2UvY21FeHRyYUNvZGVCbG9ja3NHZW5lcmF0b3IuY3h4CkBAIC0yMTgsNyArMjE4LDcgQEAKICAgICAvLyBDb252ZXJ0CiAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgbGlzdEZpbGUgOiBsaXN0RmlsZXMpIHsKICAgICAgIC8vIGRvbid0IHB1dCBjbWFrZSdzIG93biBmaWxlcyBpbnRvIHRoZSBwcm9qZWN0ICgjMTIxMTApOgotICAgICAgaWYgKGxpc3RGaWxlLmZpbmQoY21TeXN0ZW1Ub29sczo6R2V0Q01ha2VSb290KCkpID09IDApIHsKKyAgICAgIGlmIChjbUhhc1ByZWZpeChsaXN0RmlsZSwgY21TeXN0ZW1Ub29sczo6R2V0Q01ha2VSb290KCkpKSB7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogCkBAIC0zMDEsMTEgKzMwMSwxMSBAQAogICAgICAgICBjYXNlIGNtU3RhdGVFbnVtczo6VVRJTElUWToKICAgICAgICAgICAvLyBBZGQgYWxsIHV0aWxpdHkgdGFyZ2V0cywgZXhjZXB0IHRoZSBOaWdodGx5L0NvbnRpbnVvdXMvCiAgICAgICAgICAgLy8gRXhwZXJpbWVudGFsLSJzdWIidGFyZ2V0cyBhcyBlLmcuIE5pZ2h0bHlTdGFydAotICAgICAgICAgIGlmICgoKHRhcmdldE5hbWUuZmluZCgiTmlnaHRseSIpID09IDApICYmCisgICAgICAgICAgaWYgKChjbUhhc0xpdGVyYWxQcmVmaXgodGFyZ2V0TmFtZSwgIk5pZ2h0bHkiKSAmJgogICAgICAgICAgICAgICAgKHRhcmdldE5hbWUgIT0gIk5pZ2h0bHkiKSkgfHwKLSAgICAgICAgICAgICAgKCh0YXJnZXROYW1lLmZpbmQoIkNvbnRpbnVvdXMiKSA9PSAwKSAmJgorICAgICAgICAgICAgICAoY21IYXNMaXRlcmFsUHJlZml4KHRhcmdldE5hbWUsICJDb250aW51b3VzIikgJiYKICAgICAgICAgICAgICAgICh0YXJnZXROYW1lICE9ICJDb250aW51b3VzIikpIHx8Ci0gICAgICAgICAgICAgICgodGFyZ2V0TmFtZS5maW5kKCJFeHBlcmltZW50YWwiKSA9PSAwKSAmJgorICAgICAgICAgICAgICAoY21IYXNMaXRlcmFsUHJlZml4KHRhcmdldE5hbWUsICJFeHBlcmltZW50YWwiKSAmJgogICAgICAgICAgICAgICAgKHRhcmdldE5hbWUgIT0gIkV4cGVyaW1lbnRhbCIpKSkgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtRXh0cmFFY2xpcHNlQ0RUNEdlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21FeHRyYUVjbGlwc2VDRFQ0R2VuZXJhdG9yLmN4eAppbmRleCA3OGNhYmNlLi43MzdiMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21FeHRyYUVjbGlwc2VDRFQ0R2VuZXJhdG9yLmN4eAorKysgYi9Tb3VyY2UvY21FeHRyYUVjbGlwc2VDRFQ0R2VuZXJhdG9yLmN4eApAQCAtMTg3LDEwICsxODcsMTAgQEAKICAgICByZXR1cm47CiAgIH0KIAotICBmb3V0IDw8ICJlY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MSIgPDwgc3RkOjplbmRsOworICBmb3V0IDw8ICJlY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MVxuIjsKICAgY29uc3QgY2hhciogZW5jb2RpbmcgPSBtZi0+R2V0RGVmaW5pdGlvbigiQ01BS0VfRUNMSVBTRV9SRVNPVVJDRV9FTkNPRElORyIpOwogICBpZiAoZW5jb2RpbmcpIHsKLSAgICBmb3V0IDw8ICJlbmNvZGluZy88cHJvamVjdD49IiA8PCBlbmNvZGluZyA8PCBzdGQ6OmVuZGw7CisgICAgZm91dCA8PCAiZW5jb2RpbmcvPHByb2plY3Q+PSIgPDwgZW5jb2RpbmcgPDwgJ1xuJzsKICAgfQogfQogCkBAIC0yNTUsOCArMjU1LDggQEAKICAgICAvLyBUaGUgdmFyaWFibGUgaXMgaW4gdGhlIGVudiwgYnV0IG5vdCBpbiB0aGUgY2FjaGUuIFVzZSBpdCBhbmQgcHV0IGl0CiAgICAgLy8gaW4gdGhlIGNhY2hlCiAgICAgdmFsdWVUb1VzZSA9IGVudlZhclZhbHVlOwotICAgIG1mLT5BZGRDYWNoZURlZmluaXRpb24oY2FjaGVFbnRyeU5hbWUsIHZhbHVlVG9Vc2UuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlRW50cnlOYW1lLmNfc3RyKCksIGNtU3RhdGVFbnVtczo6U1RSSU5HLCB0cnVlKTsKKyAgICBtZi0+QWRkQ2FjaGVEZWZpbml0aW9uKGNhY2hlRW50cnlOYW1lLCB2YWx1ZVRvVXNlLCBjYWNoZUVudHJ5TmFtZS5jX3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY21TdGF0ZUVudW1zOjpTVFJJTkcsIHRydWUpOwogICAgIG1mLT5HZXRDTWFrZUluc3RhbmNlKCktPlNhdmVDYWNoZShsZy5HZXRCaW5hcnlEaXJlY3RvcnkoKSk7CiAgIH0gZWxzZSBpZiAoIWVudlZhclNldCAmJiBjYWNoZVZhbHVlICE9IG51bGxwdHIpIHsKICAgICAvLyBJdCBpcyBhbHJlYWR5IGluIHRoZSBjYWNoZSwgYnV0IG5vdCBpbiB0aGUgZW52LCBzbyB1c2UgaXQgZnJvbSB0aGUgY2FjaGUKQEAgLTI3MCw3ICsyNzAsNyBAQAogICAgIHZhbHVlVG9Vc2UgPSAqY2FjaGVWYWx1ZTsKICAgICBpZiAodmFsdWVUb1VzZS5maW5kKGVudlZhclZhbHVlKSA9PSBzdGQ6OnN0cmluZzo6bnBvcykgewogICAgICAgdmFsdWVUb1VzZSA9IGVudlZhclZhbHVlOwotICAgICAgbWYtPkFkZENhY2hlRGVmaW5pdGlvbihjYWNoZUVudHJ5TmFtZSwgdmFsdWVUb1VzZS5jX3N0cigpLAorICAgICAgbWYtPkFkZENhY2hlRGVmaW5pdGlvbihjYWNoZUVudHJ5TmFtZSwgdmFsdWVUb1VzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVFbnRyeU5hbWUuY19zdHIoKSwgY21TdGF0ZUVudW1zOjpTVFJJTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgbWYtPkdldENNYWtlSW5zdGFuY2UoKS0+U2F2ZUNhY2hlKGxnLkdldEJpbmFyeURpcmVjdG9yeSgpKTsKQEAgLTQxNSw5ICs0MTUsOSBAQAogICAgIHhtbC5FbGVtZW50KCJuYXR1cmUiLCBuKTsKICAgfQogCi0gIGlmIChjb25zdCBjaGFyKiBleHRyYU5hdHVyZXNQcm9wID0KKyAgaWYgKGNtUHJvcCBleHRyYU5hdHVyZXNQcm9wID0KICAgICAgICAgbWYtPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KCJFQ0xJUFNFX0VYVFJBX05BVFVSRVMiKSkgewotICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBleHRyYU5hdHVyZXMgPSBjbUV4cGFuZGVkTGlzdChleHRyYU5hdHVyZXNQcm9wKTsKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZXh0cmFOYXR1cmVzID0gY21FeHBhbmRlZExpc3QoKmV4dHJhTmF0dXJlc1Byb3ApOwogICAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIG4gOiBleHRyYU5hdHVyZXMpIHsKICAgICAgIHhtbC5FbGVtZW50KCJuYXR1cmUiLCBuKTsKICAgICB9CkBAIC05MzYsMTEgKzkzNiwxMSBAQAogICAgICAgICBjYXNlIGNtU3RhdGVFbnVtczo6VVRJTElUWToKICAgICAgICAgICAvLyBBZGQgYWxsIHV0aWxpdHkgdGFyZ2V0cywgZXhjZXB0IHRoZSBOaWdodGx5L0NvbnRpbnVvdXMvCiAgICAgICAgICAgLy8gRXhwZXJpbWVudGFsLSJzdWIidGFyZ2V0cyBhcyBlLmcuIE5pZ2h0bHlTdGFydAotICAgICAgICAgIGlmICgoKHRhcmdldE5hbWUuZmluZCgiTmlnaHRseSIpID09IDApICYmCisgICAgICAgICAgaWYgKChjbUhhc0xpdGVyYWxQcmVmaXgodGFyZ2V0TmFtZSwgIk5pZ2h0bHkiKSAmJgogICAgICAgICAgICAgICAgKHRhcmdldE5hbWUgIT0gIk5pZ2h0bHkiKSkgfHwKLSAgICAgICAgICAgICAgKCh0YXJnZXROYW1lLmZpbmQoIkNvbnRpbnVvdXMiKSA9PSAwKSAmJgorICAgICAgICAgICAgICAoY21IYXNMaXRlcmFsUHJlZml4KHRhcmdldE5hbWUsICJDb250aW51b3VzIikgJiYKICAgICAgICAgICAgICAgICh0YXJnZXROYW1lICE9ICJDb250aW51b3VzIikpIHx8Ci0gICAgICAgICAgICAgICgodGFyZ2V0TmFtZS5maW5kKCJFeHBlcmltZW50YWwiKSA9PSAwKSAmJgorICAgICAgICAgICAgICAoY21IYXNMaXRlcmFsUHJlZml4KHRhcmdldE5hbWUsICJFeHBlcmltZW50YWwiKSAmJgogICAgICAgICAgICAgICAgKHRhcmdldE5hbWUgIT0gIkV4cGVyaW1lbnRhbCIpKSkgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgfQpAQCAtMTAzMyw5ICsxMDMzLDkgQEAKICAgeG1sLkVuZEVsZW1lbnQoKTsgLy8gc3RvcmFnZU1vZHVsZQogCiAgIC8vIEFwcGVuZCBhZGRpdGlvbmFsIGNwcm9qZWN0IGNvbnRlbnRzIHdpdGhvdXQgYXBwbHlpbmcgYW55IFhNTCBmb3JtYXR0aW5nCi0gIGlmIChjb25zdCBjaGFyKiBleHRyYUNQcm9qZWN0Q29udGVudHMgPQorICBpZiAoY21Qcm9wIGV4dHJhQ1Byb2plY3RDb250ZW50cyA9CiAgICAgICAgIG1mLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eSgiRUNMSVBTRV9FWFRSQV9DUFJPSkVDVF9DT05URU5UUyIpKSB7Ci0gICAgZm91dCA8PCBleHRyYUNQcm9qZWN0Q29udGVudHM7CisgICAgZm91dCA8PCAqZXh0cmFDUHJvamVjdENvbnRlbnRzOwogICB9CiAKICAgeG1sLkVuZEVsZW1lbnQoKTsgLy8gY3Byb2plY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUV4dHJhS2F0ZUdlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21FeHRyYUthdGVHZW5lcmF0b3IuY3h4CmluZGV4IDNhMjI4NDYuLjI3MWJiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUV4dHJhS2F0ZUdlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL2NtRXh0cmFLYXRlR2VuZXJhdG9yLmN4eApAQCAtMTQ0LDExICsxNDQsMTEgQEAKICAgICAgICAgY2FzZSBjbVN0YXRlRW51bXM6OlVUSUxJVFk6CiAgICAgICAgICAgLy8gQWRkIGFsbCB1dGlsaXR5IHRhcmdldHMsIGV4Y2VwdCB0aGUgTmlnaHRseS9Db250aW51b3VzLwogICAgICAgICAgIC8vIEV4cGVyaW1lbnRhbC0ic3ViInRhcmdldHMgYXMgZS5nLiBOaWdodGx5U3RhcnQKLSAgICAgICAgICBpZiAoKCh0YXJnZXROYW1lLmZpbmQoIk5pZ2h0bHkiKSA9PSAwKSAmJgorICAgICAgICAgIGlmICgoY21IYXNMaXRlcmFsUHJlZml4KHRhcmdldE5hbWUsICJOaWdodGx5IikgJiYKICAgICAgICAgICAgICAgICh0YXJnZXROYW1lICE9ICJOaWdodGx5IikpIHx8Ci0gICAgICAgICAgICAgICgodGFyZ2V0TmFtZS5maW5kKCJDb250aW51b3VzIikgPT0gMCkgJiYKKyAgICAgICAgICAgICAgKGNtSGFzTGl0ZXJhbFByZWZpeCh0YXJnZXROYW1lLCAiQ29udGludW91cyIpICYmCiAgICAgICAgICAgICAgICAodGFyZ2V0TmFtZSAhPSAiQ29udGludW91cyIpKSB8fAotICAgICAgICAgICAgICAoKHRhcmdldE5hbWUuZmluZCgiRXhwZXJpbWVudGFsIikgPT0gMCkgJiYKKyAgICAgICAgICAgICAgKGNtSGFzTGl0ZXJhbFByZWZpeCh0YXJnZXROYW1lLCAiRXhwZXJpbWVudGFsIikgJiYKICAgICAgICAgICAgICAgICh0YXJnZXROYW1lICE9ICJFeHBlcmltZW50YWwiKSkpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUV4dHJhU3VibGltZVRleHRHZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtRXh0cmFTdWJsaW1lVGV4dEdlbmVyYXRvci5jeHgKaW5kZXggNDEzNDQ5Yy4uNWIxMzZlMiAxMDA2NDQKLS0tIGEvU291cmNlL2NtRXh0cmFTdWJsaW1lVGV4dEdlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL2NtRXh0cmFTdWJsaW1lVGV4dEdlbmVyYXRvci5jeHgKQEAgLTE5OSwxMSArMTk5LDExIEBACiAgICAgICAgIGNhc2UgY21TdGF0ZUVudW1zOjpVVElMSVRZOgogICAgICAgICAgIC8vIEFkZCBhbGwgdXRpbGl0eSB0YXJnZXRzLCBleGNlcHQgdGhlIE5pZ2h0bHkvQ29udGludW91cy8KICAgICAgICAgICAvLyBFeHBlcmltZW50YWwtInN1YiJ0YXJnZXRzIGFzIGUuZy4gTmlnaHRseVN0YXJ0Ci0gICAgICAgICAgaWYgKCgodGFyZ2V0TmFtZS5maW5kKCJOaWdodGx5IikgPT0gMCkgJiYKKyAgICAgICAgICBpZiAoKGNtSGFzTGl0ZXJhbFByZWZpeCh0YXJnZXROYW1lLCAiTmlnaHRseSIpICYmCiAgICAgICAgICAgICAgICAodGFyZ2V0TmFtZSAhPSAiTmlnaHRseSIpKSB8fAotICAgICAgICAgICAgICAoKHRhcmdldE5hbWUuZmluZCgiQ29udGludW91cyIpID09IDApICYmCisgICAgICAgICAgICAgIChjbUhhc0xpdGVyYWxQcmVmaXgodGFyZ2V0TmFtZSwgIkNvbnRpbnVvdXMiKSAmJgogICAgICAgICAgICAgICAgKHRhcmdldE5hbWUgIT0gIkNvbnRpbnVvdXMiKSkgfHwKLSAgICAgICAgICAgICAgKCh0YXJnZXROYW1lLmZpbmQoIkV4cGVyaW1lbnRhbCIpID09IDApICYmCisgICAgICAgICAgICAgIChjbUhhc0xpdGVyYWxQcmVmaXgodGFyZ2V0TmFtZSwgIkV4cGVyaW1lbnRhbCIpICYmCiAgICAgICAgICAgICAgICAodGFyZ2V0TmFtZSAhPSAiRXhwZXJpbWVudGFsIikpKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21GaWxlQVBJQ2FjaGUuY3h4IGIvU291cmNlL2NtRmlsZUFQSUNhY2hlLmN4eAppbmRleCBlZjc3Nzk1Li41ZDJkZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21GaWxlQVBJQ2FjaGUuY3h4CisrKyBiL1NvdXJjZS9jbUZpbGVBUElDYWNoZS5jeHgKQEAgLTY3LDcgKzY3LDcgQEAKICAgZW50cnlbIm5hbWUiXSA9IG5hbWU7CiAgIGVudHJ5WyJ0eXBlIl0gPQogICAgIGNtU3RhdGU6OkNhY2hlRW50cnlUeXBlVG9TdHJpbmcodGhpcy0+U3RhdGUtPkdldENhY2hlRW50cnlUeXBlKG5hbWUpKTsKLSAgZW50cnlbInZhbHVlIl0gPSB0aGlzLT5TdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKG5hbWUpOworICBlbnRyeVsidmFsdWUiXSA9IHRoaXMtPlN0YXRlLT5HZXRTYWZlQ2FjaGVFbnRyeVZhbHVlKG5hbWUpOwogCiAgIEpzb246OlZhbHVlIHByb3BlcnRpZXMgPSB0aGlzLT5EdW1wRW50cnlQcm9wZXJ0aWVzKG5hbWUpOwogICBpZiAoIXByb3BlcnRpZXMuZW1wdHkoKSkgewpAQCAtOTQsNyArOTQsOCBAQAogewogICBKc29uOjpWYWx1ZSBwcm9wZXJ0eSA9IEpzb246Om9iamVjdFZhbHVlOwogICBwcm9wZXJ0eVsibmFtZSJdID0gcHJvcDsKLSAgcHJvcGVydHlbInZhbHVlIl0gPSB0aGlzLT5TdGF0ZS0+R2V0Q2FjaGVFbnRyeVByb3BlcnR5KG5hbWUsIHByb3ApOworICBjbVByb3AgcCA9IHRoaXMtPlN0YXRlLT5HZXRDYWNoZUVudHJ5UHJvcGVydHkobmFtZSwgcHJvcCk7CisgIHByb3BlcnR5WyJ2YWx1ZSJdID0gcCA/ICpwIDogIiI7CiAgIHJldHVybiBwcm9wZXJ0eTsKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUZpbGVDb21tYW5kLmN4eCBiL1NvdXJjZS9jbUZpbGVDb21tYW5kLmN4eAppbmRleCA3OTExMGFiLi40NjAzYjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21GaWxlQ29tbWFuZC5jeHgKKysrIGIvU291cmNlL2NtRmlsZUNvbW1hbmQuY3h4CkBAIC04LDYgKzgsNyBAQAogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPGl0ZXJhdG9yPgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3N0cmVhbT4KQEAgLTMzLDEyICszNCwxNCBAQAogI2luY2x1ZGUgImNtRmlsZUluc3RhbGxlci5oIgogI2luY2x1ZGUgImNtRmlsZUxvY2tQb29sLmgiCiAjaW5jbHVkZSAiY21GaWxlVGltZXMuaCIKKyNpbmNsdWRlICJjbUdlbmVyYXRlZEZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJjbUdlbmVyYXRvckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJjbUdsb2JhbEdlbmVyYXRvci5oIgogI2luY2x1ZGUgImNtSGV4RmlsZUNvbnZlcnRlci5oIgogI2luY2x1ZGUgImNtTGlzdEZpbGVDYWNoZS5oIgogI2luY2x1ZGUgImNtTWFrZWZpbGUuaCIKICNpbmNsdWRlICJjbU1lc3NhZ2VUeXBlLmgiCisjaW5jbHVkZSAiY21OZXdMaW5lU3R5bGUuaCIKICNpbmNsdWRlICJjbVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiY21SYW5nZS5oIgogI2luY2x1ZGUgImNtUnVudGltZURlcGVuZGVuY3lBcmNoaXZlLmgiCkBAIC00Nyw2ICs1MCw3IEBACiAjaW5jbHVkZSAiY21TdWJjb21tYW5kVGFibGUuaCIKICNpbmNsdWRlICJjbVN5c3RlbVRvb2xzLmgiCiAjaW5jbHVkZSAiY21UaW1lc3RhbXAuaCIKKyNpbmNsdWRlICJjbVdvcmtpbmdEaXJlY3RvcnkuaCIKICNpbmNsdWRlICJjbWFrZS5oIgogCiAjaWYgIWRlZmluZWQoQ01BS0VfQk9PVFNUUkFQKQpAQCAtMjMyMywxMiArMjMyNyw5IEBACiAgICAgcGF0aCArPSAiL2NtYWtlLmxvY2siOwogICB9CiAKLSAgaWYgKCFjbXN5czo6U3lzdGVtVG9vbHM6OkZpbGVJc0Z1bGxQYXRoKHBhdGgpKSB7Ci0gICAgcGF0aCA9IHN0YXR1cy5HZXRNYWtlZmlsZSgpLkdldEN1cnJlbnRTb3VyY2VEaXJlY3RvcnkoKSArICIvIiArIHBhdGg7Ci0gIH0KLQogICAvLyBVbmlmeSBwYXRoIChyZW1vdmUgJy8vJywgJy8uLi8nLCAuLi4pCi0gIHBhdGggPSBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKHBhdGgpOworICBwYXRoID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aCgKKyAgICBwYXRoLCBzdGF0dXMuR2V0TWFrZWZpbGUoKS5HZXRDdXJyZW50U291cmNlRGlyZWN0b3J5KCkpOwogCiAgIC8vIENyZWF0ZSBmaWxlIGFuZCBkaXJlY3RvcmllcyBpZiBuZWVkZWQKICAgc3RkOjpzdHJpbmcgcGFyZW50RGlyID0gY21TeXN0ZW1Ub29sczo6R2V0UGFyZW50RGlyZWN0b3J5KHBhdGgpOwpAQCAtMjc3Niw2ICsyNzc3LDMyNSBAQAogICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBIYW5kbGVDb25maWd1cmVDb21tYW5kKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjb25zdCYgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUV4ZWN1dGlvblN0YXR1cyYgc3RhdHVzKQoreworICBpZiAoYXJncy5zaXplKCkgPCA1KSB7CisgICAgc3RhdHVzLlNldEVycm9yKCJJbmNvcnJlY3QgYXJndW1lbnRzIHRvIENPTkZJR1VSRSBzdWJjb21tYW5kLiIpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAoYXJnc1sxXSAhPSAiT1VUUFVUIikgeworICAgIHN0YXR1cy5TZXRFcnJvcigiSW5jb3JyZWN0IGFyZ3VtZW50cyB0byBDT05GSUdVUkUgc3ViY29tbWFuZC4iKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKGFyZ3NbM10gIT0gIkNPTlRFTlQiKSB7CisgICAgc3RhdHVzLlNldEVycm9yKCJJbmNvcnJlY3QgYXJndW1lbnRzIHRvIENPTkZJR1VSRSBzdWJjb21tYW5kLiIpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIGVycm9yTWVzc2FnZTsKKyAgY21OZXdMaW5lU3R5bGUgbmV3TGluZVN0eWxlOworICBpZiAoIW5ld0xpbmVTdHlsZS5SZWFkRnJvbUFyZ3VtZW50cyhhcmdzLCBlcnJvck1lc3NhZ2UpKSB7CisgICAgc3RhdHVzLlNldEVycm9yKGNtU3RyQ2F0KCJDT05GSUdVUkUgIiwgZXJyb3JNZXNzYWdlKSk7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgYm9vbCBlc2NhcGVRdW90ZXMgPSBmYWxzZTsKKyAgYm9vbCBhdE9ubHkgPSBmYWxzZTsKKyAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDU7IGkgPCBhcmdzLnNpemUoKTsgKytpKSB7CisgICAgaWYgKGFyZ3NbaV0gPT0gIkBPTkxZIikgeworICAgICAgYXRPbmx5ID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGFyZ3NbaV0gPT0gIkVTQ0FQRV9RVU9URVMiKSB7CisgICAgICBlc2NhcGVRdW90ZXMgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoYXJnc1tpXSA9PSAiTkVXTElORV9TVFlMRSIgfHwgYXJnc1tpXSA9PSAiTEYiIHx8CisgICAgICAgICAgICAgICBhcmdzW2ldID09ICJVTklYIiB8fCBhcmdzW2ldID09ICJDUkxGIiB8fCBhcmdzW2ldID09ICJXSU4zMiIgfHwKKyAgICAgICAgICAgICAgIGFyZ3NbaV0gPT0gIkRPUyIpIHsKKyAgICAgIC8qIE9wdGlvbnMgaGFuZGxlZCBieSBOZXdMaW5lU3R5bGUgbWVtYmVyIGFib3ZlLiAgKi8KKyAgICB9IGVsc2UgeworICAgICAgc3RhdHVzLlNldEVycm9yKAorICAgICAgICBjbVN0ckNhdCgiQ09ORklHVVJFIFVucmVjb2duaXplZCBhcmd1bWVudCBcIiIsIGFyZ3NbaV0sICJcIiIpKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKworICAvLyBDaGVjayBmb3IgZ2VuZXJhdG9yIGV4cHJlc3Npb25zCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGlucHV0ID0gYXJnc1s0XTsKKyAgc3RkOjpzdHJpbmcgb3V0cHV0RmlsZSA9IGFyZ3NbMl07CisKKyAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBwb3MgPSBpbnB1dC5maW5kX2ZpcnN0X29mKCI8PiIpOworICBpZiAocG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgc3RhdHVzLlNldEVycm9yKGNtU3RyQ2F0KCJDT05GSUdVUkUgY2FsbGVkIHdpdGggQ09OVEVOVCBjb250YWluaW5nIGEgXCIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFtwb3NdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCIuICBUaGlzIGNoYXJhY3RlciBpcyBub3QgYWxsb3dlZC4iKSk7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcG9zID0gb3V0cHV0RmlsZS5maW5kX2ZpcnN0X29mKCI8PiIpOworICBpZiAocG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgc3RhdHVzLlNldEVycm9yKGNtU3RyQ2F0KCJDT05GSUdVUkUgY2FsbGVkIHdpdGggT1VUUFVUIGNvbnRhaW5pbmcgYSBcIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dEZpbGVbcG9zXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiLiAgVGhpcyBjaGFyYWN0ZXIgaXMgbm90IGFsbG93ZWQuIikpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIGNtTWFrZWZpbGUmIG1ha2VGaWxlID0gc3RhdHVzLkdldE1ha2VmaWxlKCk7CisgIGlmICghbWFrZUZpbGUuQ2FuSVdyaXRlVGhpc0ZpbGUob3V0cHV0RmlsZSkpIHsKKyAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBmaWxlOiAiICsgb3V0cHV0RmlsZSArCisgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbnRvIGEgc291cmNlIGRpcmVjdG9yeS4iKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBjbVN5c3RlbVRvb2xzOjpDb252ZXJ0VG9Vbml4U2xhc2hlcyhvdXRwdXRGaWxlKTsKKworICAvLyBSZS1nZW5lcmF0ZSBpZiBub24tdGVtcG9yYXJ5IG91dHB1dHMgYXJlIG1pc3NpbmcuCisgIC8vIHdoZW4gd2UgZmluYWxpemUgdGhlIGNvbmZpZ3VyYXRpb24gd2Ugd2lsbCByZW1vdmUgYWxsCisgIC8vIG91dHB1dCBmaWxlcyB0aGF0IG5vdyBkb24ndCBleGlzdC4KKyAgbWFrZUZpbGUuQWRkQ01ha2VPdXRwdXRGaWxlKG91dHB1dEZpbGUpOworCisgIC8vIENyZWF0ZSBvdXRwdXQgZGlyZWN0b3J5CisgIGNvbnN0IHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgc2xhc2hQb3MgPSBvdXRwdXRGaWxlLnJmaW5kKCcvJyk7CisgIGlmIChzbGFzaFBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGggPSBvdXRwdXRGaWxlLnN1YnN0cigwLCBzbGFzaFBvcyk7CisgICAgY21TeXN0ZW1Ub29sczo6TWFrZURpcmVjdG9yeShwYXRoKTsKKyAgfQorCisgIHN0ZDo6c3RyaW5nIG5ld0xpbmVDaGFyYWN0ZXJzOworICBib29sIG9wZW5fd2l0aF9iaW5hcnlfZmxhZyA9IGZhbHNlOworICBpZiAobmV3TGluZVN0eWxlLklzVmFsaWQoKSkgeworICAgIG9wZW5fd2l0aF9iaW5hcnlfZmxhZyA9IHRydWU7CisgICAgbmV3TGluZUNoYXJhY3RlcnMgPSBuZXdMaW5lU3R5bGUuR2V0Q2hhcmFjdGVycygpOworICB9CisKKyAgY21HZW5lcmF0ZWRGaWxlU3RyZWFtIGZvdXQ7CisgIGZvdXQuT3BlbihvdXRwdXRGaWxlLCBmYWxzZSwgb3Blbl93aXRoX2JpbmFyeV9mbGFnKTsKKyAgaWYgKCFmb3V0KSB7CisgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoIkNvdWxkIG5vdCBvcGVuIGZpbGUgZm9yIHdyaXRlIGluIGNvcHkgb3BlcmF0aW9uICIgKworICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dEZpbGUpOworICAgIGNtU3lzdGVtVG9vbHM6OlJlcG9ydExhc3RTeXN0ZW1FcnJvcigiIik7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGZvdXQuU2V0Q29weUlmRGlmZmVyZW50KHRydWUpOworCisgIC8vIGNvcHkgaW50cHV0IHRvIG91dHB1dCBhbmQgZXhwYW5kIHZhcmlhYmxlcyBmcm9tIGlucHV0IGF0IHRoZSBzYW1lIHRpbWUKKyAgc3RkOjpzdHJpbmdzdHJlYW0gc2luKGlucHV0LCBzdGQ6Omlvczo6aW4pOworICBzdGQ6OnN0cmluZyBpbkxpbmU7CisgIHN0ZDo6c3RyaW5nIG91dExpbmU7CisgIHdoaWxlIChjbVN5c3RlbVRvb2xzOjpHZXRMaW5lRnJvbVN0cmVhbShzaW4sIGluTGluZSkpIHsKKyAgICBvdXRMaW5lLmNsZWFyKCk7CisgICAgbWFrZUZpbGUuQ29uZmlndXJlU3RyaW5nKGluTGluZSwgb3V0TGluZSwgYXRPbmx5LCBlc2NhcGVRdW90ZXMpOworICAgIGZvdXQgPDwgb3V0TGluZSA8PCBuZXdMaW5lQ2hhcmFjdGVyczsKKyAgfQorCisgIC8vIGNsb3NlIGZpbGUgYmVmb3JlIGF0dGVtcHRpbmcgdG8gY29weQorICBmb3V0LmNsb3NlKCk7CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSGFuZGxlQXJjaGl2ZUNyZWF0ZUNvbW1hbmQoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGNvbnN0JiBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUV4ZWN1dGlvblN0YXR1cyYgc3RhdHVzKQoreworICBzdHJ1Y3QgQXJndW1lbnRzCisgIHsKKyAgICBzdGQ6OnN0cmluZyBPdXRwdXQ7CisgICAgc3RkOjpzdHJpbmcgRm9ybWF0OworICAgIHN0ZDo6c3RyaW5nIFR5cGU7CisgICAgc3RkOjpzdHJpbmcgTVRpbWU7CisgICAgYm9vbCBWZXJib3NlID0gZmFsc2U7CisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEZpbGVzOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBEaXJlY3RvcmllczsKKyAgfTsKKworICBzdGF0aWMgYXV0byBjb25zdCBwYXJzZXIgPSBjbUFyZ3VtZW50UGFyc2VyPEFyZ3VtZW50cz57fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5CaW5kKCJPVVRQVVQiX3MsICZBcmd1bWVudHM6Ok91dHB1dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuQmluZCgiRk9STUFUIl9zLCAmQXJndW1lbnRzOjpGb3JtYXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkJpbmQoIlRZUEUiX3MsICZBcmd1bWVudHM6OlR5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkJpbmQoIk1USU1FIl9zLCAmQXJndW1lbnRzOjpNVGltZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuQmluZCgiVkVSQk9TRSJfcywgJkFyZ3VtZW50czo6VmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuQmluZCgiRklMRVMiX3MsICZBcmd1bWVudHM6OkZpbGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5CaW5kKCJESVJFQ1RPUlkiX3MsICZBcmd1bWVudHM6OkRpcmVjdG9yaWVzKTsKKworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdW5yZWNvZ25pemVkQXJndW1lbnRzOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4ga2V5d29yZHNNaXNzaW5nVmFsdWVzOworICBhdXRvIHBhcnNlZEFyZ3MgPQorICAgIHBhcnNlci5QYXJzZShjbU1ha2VSYW5nZShhcmdzKS5hZHZhbmNlKDEpLCAmdW5yZWNvZ25pemVkQXJndW1lbnRzLAorICAgICAgICAgICAgICAgICAma2V5d29yZHNNaXNzaW5nVmFsdWVzKTsKKyAgYXV0byBhcmdJdCA9IHVucmVjb2duaXplZEFyZ3VtZW50cy5iZWdpbigpOworICBpZiAoYXJnSXQgIT0gdW5yZWNvZ25pemVkQXJndW1lbnRzLmVuZCgpKSB7CisgICAgc3RhdHVzLlNldEVycm9yKGNtU3RyQ2F0KCJVbnJlY29nbml6ZWQgYXJndW1lbnQ6IFwiIiwgKmFyZ0l0LCAiXCIiKSk7CisgICAgY21TeXN0ZW1Ub29sczo6U2V0RmF0YWxFcnJvck9jY3VyZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gTElTVF9BUkdTID0geworICAgICJPVVRQVVQiLCAiRk9STUFUIiwgIlRZUEUiLCAiTVRJTUUiLCAiRklMRVMiLCAiRElSRUNUT1JZIiwKKyAgfTsKKyAgYXV0byBrd2JlZ2luID0ga2V5d29yZHNNaXNzaW5nVmFsdWVzLmNiZWdpbigpOworICBhdXRvIGt3ZW5kID0gY21SZW1vdmVNYXRjaGluZyhrZXl3b3Jkc01pc3NpbmdWYWx1ZXMsIExJU1RfQVJHUyk7CisgIGlmIChrd2VuZCAhPSBrd2JlZ2luKSB7CisgICAgc3RhdHVzLlNldEVycm9yKGNtU3RyQ2F0KCJLZXl3b3JkcyBtaXNzaW5nIHZhbHVlczpcbiAgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21Kb2luKGNtTWFrZVJhbmdlKGt3YmVnaW4sIGt3ZW5kKSwgIlxuICAiKSkpOworICAgIGNtU3lzdGVtVG9vbHM6OlNldEZhdGFsRXJyb3JPY2N1cmVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgY29uc3QgY2hhcioga25vd25Gb3JtYXRzW10gPSB7CisgICAgIjd6aXAiLCAiZ251dGFyIiwgInBheCIsICJwYXhyIiwgInJhdyIsICJ6aXAiCisgIH07CisKKyAgaWYgKCFwYXJzZWRBcmdzLkZvcm1hdC5lbXB0eSgpICYmCisgICAgICAhY21Db250YWlucyhrbm93bkZvcm1hdHMsIHBhcnNlZEFyZ3MuRm9ybWF0KSkgeworICAgIHN0YXR1cy5TZXRFcnJvcigKKyAgICAgIGNtU3RyQ2F0KCJhcmNoaXZlIGZvcm1hdCAiLCBwYXJzZWRBcmdzLkZvcm1hdCwgIiBub3Qgc3VwcG9ydGVkIikpOworICAgIGNtU3lzdGVtVG9vbHM6OlNldEZhdGFsRXJyb3JPY2N1cmVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgY29uc3QgY2hhciogemlwRmlsZUZvcm1hdHNbXSA9IHsgIjd6aXAiLCAiemlwIiB9OworICBpZiAoIXBhcnNlZEFyZ3MuVHlwZS5lbXB0eSgpICYmCisgICAgICBjbUNvbnRhaW5zKHppcEZpbGVGb3JtYXRzLCBwYXJzZWRBcmdzLkZvcm1hdCkpIHsKKyAgICBzdGF0dXMuU2V0RXJyb3IoY21TdHJDYXQoImFyY2hpdmUgZm9ybWF0ICIsIHBhcnNlZEFyZ3MuRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGRvZXMgbm90IHN1cHBvcnQgVFlQRSBhcmd1bWVudHMiKSk7CisgICAgY21TeXN0ZW1Ub29sczo6U2V0RmF0YWxFcnJvck9jY3VyZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBzdGF0aWMgc3RkOjptYXA8c3RkOjpzdHJpbmcsIGNtU3lzdGVtVG9vbHM6OmNtVGFyQ29tcHJlc3Npb24+CisgICAgY29tcHJlc3Npb25UeXBlTWFwID0geyB7ICJOb25lIiwgY21TeXN0ZW1Ub29sczo6VGFyQ29tcHJlc3NOb25lIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJCWmlwMiIsIGNtU3lzdGVtVG9vbHM6OlRhckNvbXByZXNzQlppcDIgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIkdaaXAiLCBjbVN5c3RlbVRvb2xzOjpUYXJDb21wcmVzc0daaXAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIlhaIiwgY21TeXN0ZW1Ub29sczo6VGFyQ29tcHJlc3NYWiB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAiWnN0ZCIsIGNtU3lzdGVtVG9vbHM6OlRhckNvbXByZXNzWnN0ZCB9IH07CisKKyAgc3RkOjpzdHJpbmcgY29uc3QmIG91dEZpbGUgPSBwYXJzZWRBcmdzLk91dHB1dDsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGZpbGVzID0gcGFyc2VkQXJncy5GaWxlczsKKyAgc3RkOjpjb3B5KHBhcnNlZEFyZ3MuRGlyZWN0b3JpZXMuYmVnaW4oKSwgcGFyc2VkQXJncy5EaXJlY3Rvcmllcy5lbmQoKSwKKyAgICAgICAgICAgIHN0ZDo6YmFja19pbnNlcnRlcihmaWxlcykpOworCisgIGNtU3lzdGVtVG9vbHM6OmNtVGFyQ29tcHJlc3Npb24gY29tcHJlc3MgPSBjbVN5c3RlbVRvb2xzOjpUYXJDb21wcmVzc05vbmU7CisgIGF1dG8gdHlwZUl0ID0gY29tcHJlc3Npb25UeXBlTWFwLmZpbmQocGFyc2VkQXJncy5UeXBlKTsKKyAgaWYgKHR5cGVJdCAhPSBjb21wcmVzc2lvblR5cGVNYXAuZW5kKCkpIHsKKyAgICBjb21wcmVzcyA9IHR5cGVJdC0+c2Vjb25kOworICB9IGVsc2UgaWYgKCFwYXJzZWRBcmdzLlR5cGUuZW1wdHkoKSkgeworICAgIHN0YXR1cy5TZXRFcnJvcigKKyAgICAgIGNtU3RyQ2F0KCJjb21wcmVzc2lvbiB0eXBlICIsIHBhcnNlZEFyZ3MuVHlwZSwgIiBpcyBub3Qgc3VwcG9ydGVkIikpOworICAgIGNtU3lzdGVtVG9vbHM6OlNldEZhdGFsRXJyb3JPY2N1cmVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgaWYgKGZpbGVzLmVtcHR5KCkpIHsKKyAgICBzdGF0dXMuR2V0TWFrZWZpbGUoKS5Jc3N1ZU1lc3NhZ2UoTWVzc2FnZVR5cGU6OkFVVEhPUl9XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gZmlsZXMgb3IgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIik7CisgIH0KKworICBpZiAoIWNtU3lzdGVtVG9vbHM6OkNyZWF0ZVRhcihvdXRGaWxlLCBmaWxlcywgY29tcHJlc3MsIHBhcnNlZEFyZ3MuVmVyYm9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkQXJncy5NVGltZSwgcGFyc2VkQXJncy5Gb3JtYXQpKSB7CisgICAgc3RhdHVzLlNldEVycm9yKGNtU3RyQ2F0KCJmYWlsZWQgdG8gY29tcHJlc3M6ICIsIG91dEZpbGUpKTsKKyAgICBjbVN5c3RlbVRvb2xzOjpTZXRGYXRhbEVycm9yT2NjdXJlZCgpOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitib29sIEhhbmRsZUFyY2hpdmVFeHRyYWN0Q29tbWFuZChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gY29uc3QmIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUV4ZWN1dGlvblN0YXR1cyYgc3RhdHVzKQoreworICBzdHJ1Y3QgQXJndW1lbnRzCisgIHsKKyAgICBzdGQ6OnN0cmluZyBJbnB1dDsKKyAgICBib29sIFZlcmJvc2UgPSBmYWxzZTsKKyAgICBib29sIExpc3RPbmx5ID0gZmFsc2U7CisgICAgc3RkOjpzdHJpbmcgRGVzdGluYXRpb247CisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEZpbGVzOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBEaXJlY3RvcmllczsKKyAgfTsKKworICBzdGF0aWMgYXV0byBjb25zdCBwYXJzZXIgPSBjbUFyZ3VtZW50UGFyc2VyPEFyZ3VtZW50cz57fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5CaW5kKCJJTlBVVCJfcywgJkFyZ3VtZW50czo6SW5wdXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkJpbmQoIlZFUkJPU0UiX3MsICZBcmd1bWVudHM6OlZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkJpbmQoIkxJU1RfT05MWSJfcywgJkFyZ3VtZW50czo6TGlzdE9ubHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkJpbmQoIkRFU1RJTkFUSU9OIl9zLCAmQXJndW1lbnRzOjpEZXN0aW5hdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuQmluZCgiRklMRVMiX3MsICZBcmd1bWVudHM6OkZpbGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5CaW5kKCJESVJFQ1RPUlkiX3MsICZBcmd1bWVudHM6OkRpcmVjdG9yaWVzKTsKKworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdW5yZWNvZ25pemVkQXJndW1lbnRzOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4ga2V5d29yZHNNaXNzaW5nVmFsdWVzOworICBhdXRvIHBhcnNlZEFyZ3MgPQorICAgIHBhcnNlci5QYXJzZShjbU1ha2VSYW5nZShhcmdzKS5hZHZhbmNlKDEpLCAmdW5yZWNvZ25pemVkQXJndW1lbnRzLAorICAgICAgICAgICAgICAgICAma2V5d29yZHNNaXNzaW5nVmFsdWVzKTsKKyAgYXV0byBhcmdJdCA9IHVucmVjb2duaXplZEFyZ3VtZW50cy5iZWdpbigpOworICBpZiAoYXJnSXQgIT0gdW5yZWNvZ25pemVkQXJndW1lbnRzLmVuZCgpKSB7CisgICAgc3RhdHVzLlNldEVycm9yKGNtU3RyQ2F0KCJVbnJlY29nbml6ZWQgYXJndW1lbnQ6IFwiIiwgKmFyZ0l0LCAiXCIiKSk7CisgICAgY21TeXN0ZW1Ub29sczo6U2V0RmF0YWxFcnJvck9jY3VyZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gTElTVF9BUkdTID0geworICAgICJJTlBVVCIsCisgICAgIkRFU1RJTkFUSU9OIiwKKyAgICAiRklMRVMiLAorICAgICJESVJFQ1RPUlkiLAorICB9OworICBhdXRvIGt3YmVnaW4gPSBrZXl3b3Jkc01pc3NpbmdWYWx1ZXMuY2JlZ2luKCk7CisgIGF1dG8ga3dlbmQgPSBjbVJlbW92ZU1hdGNoaW5nKGtleXdvcmRzTWlzc2luZ1ZhbHVlcywgTElTVF9BUkdTKTsKKyAgaWYgKGt3ZW5kICE9IGt3YmVnaW4pIHsKKyAgICBzdGF0dXMuU2V0RXJyb3IoY21TdHJDYXQoIktleXdvcmRzIG1pc3NpbmcgdmFsdWVzOlxuICAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUpvaW4oY21NYWtlUmFuZ2Uoa3diZWdpbiwga3dlbmQpLCAiXG4gICIpKSk7CisgICAgY21TeXN0ZW1Ub29sczo6U2V0RmF0YWxFcnJvck9jY3VyZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBzdGQ6OnN0cmluZyBpbkZpbGUgPSBwYXJzZWRBcmdzLklucHV0OworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZmlsZXMgPSBwYXJzZWRBcmdzLkZpbGVzOworICBzdGQ6OmNvcHkocGFyc2VkQXJncy5EaXJlY3Rvcmllcy5iZWdpbigpLCBwYXJzZWRBcmdzLkRpcmVjdG9yaWVzLmVuZCgpLAorICAgICAgICAgICAgc3RkOjpiYWNrX2luc2VydGVyKGZpbGVzKSk7CisKKyAgaWYgKHBhcnNlZEFyZ3MuTGlzdE9ubHkpIHsKKyAgICBpZiAoIWNtU3lzdGVtVG9vbHM6Okxpc3RUYXIoaW5GaWxlLCBmaWxlcywgcGFyc2VkQXJncy5WZXJib3NlKSkgeworICAgICAgc3RhdHVzLlNldEVycm9yKGNtU3RyQ2F0KCJmYWlsZWQgdG8gbGlzdDogIiwgaW5GaWxlKSk7CisgICAgICBjbVN5c3RlbVRvb2xzOjpTZXRGYXRhbEVycm9yT2NjdXJlZCgpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBzdGQ6OnN0cmluZyBkZXN0RGlyID0gY21TeXN0ZW1Ub29sczo6R2V0Q3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKTsKKyAgICBpZiAoIXBhcnNlZEFyZ3MuRGVzdGluYXRpb24uZW1wdHkoKSkgeworICAgICAgaWYgKGNtU3lzdGVtVG9vbHM6OkZpbGVJc0Z1bGxQYXRoKHBhcnNlZEFyZ3MuRGVzdGluYXRpb24pKSB7CisgICAgICAgIGRlc3REaXIgPSBwYXJzZWRBcmdzLkRlc3RpbmF0aW9uOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZGVzdERpciA9IGNtU3RyQ2F0KGRlc3REaXIsICIvIiwgcGFyc2VkQXJncy5EZXN0aW5hdGlvbik7CisgICAgICB9CisKKyAgICAgIGlmICghY21TeXN0ZW1Ub29sczo6TWFrZURpcmVjdG9yeShkZXN0RGlyKSkgeworICAgICAgICBzdGF0dXMuU2V0RXJyb3IoY21TdHJDYXQoImZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5OiAiLCBkZXN0RGlyKSk7CisgICAgICAgIGNtU3lzdGVtVG9vbHM6OlNldEZhdGFsRXJyb3JPY2N1cmVkKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKworICAgICAgaWYgKCFjbVN5c3RlbVRvb2xzOjpGaWxlSXNGdWxsUGF0aChpbkZpbGUpKSB7CisgICAgICAgIGluRmlsZSA9CisgICAgICAgICAgY21TdHJDYXQoY21TeXN0ZW1Ub29sczo6R2V0Q3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKSwgIi8iLCBpbkZpbGUpOworICAgICAgfQorICAgIH0KKworICAgIGNtV29ya2luZ0RpcmVjdG9yeSB3b3JrZGlyKGRlc3REaXIpOworICAgIGlmICh3b3JrZGlyLkZhaWxlZCgpKSB7CisgICAgICBzdGF0dXMuU2V0RXJyb3IoCisgICAgICAgIGNtU3RyQ2F0KCJmYWlsZWQgdG8gY2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5IHRvOiAiLCBkZXN0RGlyKSk7CisgICAgICBjbVN5c3RlbVRvb2xzOjpTZXRGYXRhbEVycm9yT2NjdXJlZCgpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghY21TeXN0ZW1Ub29sczo6RXh0cmFjdFRhcihpbkZpbGUsIGZpbGVzLCBwYXJzZWRBcmdzLlZlcmJvc2UpKSB7CisgICAgICBzdGF0dXMuU2V0RXJyb3IoY21TdHJDYXQoImZhaWxlZCB0byBleHRyYWN0OiAiLCBpbkZpbGUpKTsKKyAgICAgIGNtU3lzdGVtVG9vbHM6OlNldEZhdGFsRXJyb3JPY2N1cmVkKCk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKIGJvb2wgY21GaWxlQ29tbWFuZChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gY29uc3QmIGFyZ3MsCkBAIC0yODI5LDYgKzMxNDksOSBAQAogICAgIHsgIlJFQURfU1lNTElOSyJfcywgSGFuZGxlUmVhZFN5bWxpbmtDb21tYW5kIH0sCiAgICAgeyAiQ1JFQVRFX0xJTksiX3MsIEhhbmRsZUNyZWF0ZUxpbmtDb21tYW5kIH0sCiAgICAgeyAiR0VUX1JVTlRJTUVfREVQRU5ERU5DSUVTIl9zLCBIYW5kbGVHZXRSdW50aW1lRGVwZW5kZW5jaWVzQ29tbWFuZCB9LAorICAgIHsgIkNPTkZJR1VSRSJfcywgSGFuZGxlQ29uZmlndXJlQ29tbWFuZCB9LAorICAgIHsgIkFSQ0hJVkVfQ1JFQVRFIl9zLCBIYW5kbGVBcmNoaXZlQ3JlYXRlQ29tbWFuZCB9LAorICAgIHsgIkFSQ0hJVkVfRVhUUkFDVCJfcywgSGFuZGxlQXJjaGl2ZUV4dHJhY3RDb21tYW5kIH0sCiAgIH07CiAKICAgcmV0dXJuIHN1YmNvbW1hbmQoYXJnc1swXSwgYXJncywgc3RhdHVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUZpbmRCYXNlLmN4eCBiL1NvdXJjZS9jbUZpbmRCYXNlLmN4eAppbmRleCBiZWM5OWJiLi5iNTU1M2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21GaW5kQmFzZS5jeHgKKysrIGIvU291cmNlL2NtRmluZEJhc2UuY3h4CkBAIC0yMiwxMCArMjIsNiBAQAogY21GaW5kQmFzZTo6Y21GaW5kQmFzZShjbUV4ZWN1dGlvblN0YXR1cyYgc3RhdHVzKQogICA6IGNtRmluZENvbW1vbihzdGF0dXMpCiB7Ci0gIHRoaXMtPkFscmVhZHlJbkNhY2hlID0gZmFsc2U7Ci0gIHRoaXMtPkFscmVhZHlJbkNhY2hlV2l0aG91dE1ldGFJbmZvID0gZmFsc2U7Ci0gIHRoaXMtPk5hbWVzUGVyRGlyID0gZmFsc2U7Ci0gIHRoaXMtPk5hbWVzUGVyRGlyQWxsb3dlZCA9IGZhbHNlOwogfQogCiBib29sIGNtRmluZEJhc2U6OlBhcnNlQXJndW1lbnRzKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjb25zdCYgYXJnc0luKQpAQCAtMTE1LDYgKzExMSwxMCBAQAogICAgIH0gZWxzZSBpZiAoYXJnc1tqXSA9PSAiTk9fU1lTVEVNX1BBVEgiKSB7CiAgICAgICBkb2luZyA9IERvaW5nTm9uZTsKICAgICAgIHRoaXMtPk5vRGVmYXVsdFBhdGggPSB0cnVlOworICAgIH0gZWxzZSBpZiAoYXJnc1tqXSA9PSAiUkVRVUlSRUQiKSB7CisgICAgICBkb2luZyA9IERvaW5nTm9uZTsKKyAgICAgIHRoaXMtPlJlcXVpcmVkID0gdHJ1ZTsKKyAgICAgIG5ld1N0eWxlID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKHRoaXMtPkNoZWNrQ29tbW9uQXJndW1lbnQoYXJnc1tqXSkpIHsKICAgICAgIGRvaW5nID0gRG9pbmdOb25lOwogICAgIH0gZWxzZSB7CkBAIC0yOTYsNyArMjk2LDcgQEAKICAgaWYgKGNvbnN0IGNoYXIqIGNhY2hlVmFsdWUgPQogICAgICAgICB0aGlzLT5NYWtlZmlsZS0+R2V0RGVmaW5pdGlvbih0aGlzLT5WYXJpYWJsZU5hbWUpKSB7CiAgICAgY21TdGF0ZSogc3RhdGUgPSB0aGlzLT5NYWtlZmlsZS0+R2V0U3RhdGUoKTsKLSAgICBjb25zdCBjaGFyKiBjYWNoZUVudHJ5ID0gc3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSh0aGlzLT5WYXJpYWJsZU5hbWUpOworICAgIGNtUHJvcCBjYWNoZUVudHJ5ID0gc3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSh0aGlzLT5WYXJpYWJsZU5hbWUpOwogICAgIGJvb2wgZm91bmQgPSAhY21Jc05PVEZPVU5EKGNhY2hlVmFsdWUpOwogICAgIGJvb2wgY2FjaGVkID0gY2FjaGVFbnRyeSAhPSBudWxscHRyOwogICAgIGlmIChmb3VuZCkgewpAQCAtMzEyLDkgKzMxMiw5IEBACiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGNhY2hlZCkgewotICAgICAgY29uc3QgY2hhciogaHMgPQorICAgICAgY21Qcm9wIGhzID0KICAgICAgICAgc3RhdGUtPkdldENhY2hlRW50cnlQcm9wZXJ0eSh0aGlzLT5WYXJpYWJsZU5hbWUsICJIRUxQU1RSSU5HIik7Ci0gICAgICB0aGlzLT5WYXJpYWJsZURvY3VtZW50YXRpb24gPSBocyA/IGhzIDogIihub25lKSI7CisgICAgICB0aGlzLT5WYXJpYWJsZURvY3VtZW50YXRpb24gPSBocyA/ICpocyA6ICIobm9uZSkiOwogICAgIH0KICAgfQogICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21GaW5kQmFzZS5oIGIvU291cmNlL2NtRmluZEJhc2UuaAppbmRleCBmY2UwYjExLi40Y2JmMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21GaW5kQmFzZS5oCisrKyBiL1NvdXJjZS9jbUZpbmRCYXNlLmgKQEAgLTQ0LDE0ICs0NCwxNiBAQAogICBzdGQ6OnN0cmluZyBWYXJpYWJsZURvY3VtZW50YXRpb247CiAgIHN0ZDo6c3RyaW5nIFZhcmlhYmxlTmFtZTsKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IE5hbWVzOwotICBib29sIE5hbWVzUGVyRGlyOwotICBib29sIE5hbWVzUGVyRGlyQWxsb3dlZDsKKyAgYm9vbCBOYW1lc1BlckRpciA9IGZhbHNlOworICBib29sIE5hbWVzUGVyRGlyQWxsb3dlZCA9IGZhbHNlOwogCiAgIC8vIENNQUtFXypfUEFUSCBDTUFLRV9TWVNURU1fKl9QQVRIIEZSQU1FV09SS3xMSUJSQVJZfElOQ0xVREV8UFJPR1JBTQogICBzdGQ6OnN0cmluZyBFbnZpcm9ubWVudFBhdGg7IC8vIExJQixJTkNMVURFCiAKLSAgYm9vbCBBbHJlYWR5SW5DYWNoZTsKLSAgYm9vbCBBbHJlYWR5SW5DYWNoZVdpdGhvdXRNZXRhSW5mbzsKKyAgYm9vbCBBbHJlYWR5SW5DYWNoZSA9IGZhbHNlOworICBib29sIEFscmVhZHlJbkNhY2hlV2l0aG91dE1ldGFJbmZvID0gZmFsc2U7CisKKyAgYm9vbCBSZXF1aXJlZCA9IGZhbHNlOwogCiBwcml2YXRlOgogICAvLyBBZGQgcGllY2VzIG9mIHRoZSBzZWFyY2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21GaW5kTGlicmFyeUNvbW1hbmQuY3h4IGIvU291cmNlL2NtRmluZExpYnJhcnlDb21tYW5kLmN4eAppbmRleCBkNWE0YmRlLi4zMWYxMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21GaW5kTGlicmFyeUNvbW1hbmQuY3h4CisrKyBiL1NvdXJjZS9jbUZpbmRMaWJyYXJ5Q29tbWFuZC5jeHgKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgImNtR2xvYmFsR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiY21NYWtlZmlsZS5oIgorI2luY2x1ZGUgImNtTWVzc2FnZVR5cGUuaCIKICNpbmNsdWRlICJjbVN0YXRlLmgiCiAjaW5jbHVkZSAiY21TdGF0ZVR5cGVzLmgiCiAjaW5jbHVkZSAiY21TdHJpbmdBbGdvcml0aG1zLmgiCkBAIC03NSwxNSArNzYsMjIgQEAKICAgc3RkOjpzdHJpbmcgY29uc3QgbGlicmFyeSA9IHRoaXMtPkZpbmRMaWJyYXJ5KCk7CiAgIGlmICghbGlicmFyeS5lbXB0eSgpKSB7CiAgICAgLy8gU2F2ZSB0aGUgdmFsdWUgaW4gdGhlIGNhY2hlCi0gICAgdGhpcy0+TWFrZWZpbGUtPkFkZENhY2hlRGVmaW5pdGlvbih0aGlzLT5WYXJpYWJsZU5hbWUsIGxpYnJhcnkuY19zdHIoKSwKKyAgICB0aGlzLT5NYWtlZmlsZS0+QWRkQ2FjaGVEZWZpbml0aW9uKHRoaXMtPlZhcmlhYmxlTmFtZSwgbGlicmFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPlZhcmlhYmxlRG9jdW1lbnRhdGlvbi5jX3N0cigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21TdGF0ZUVudW1zOjpGSUxFUEFUSCk7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KICAgc3RkOjpzdHJpbmcgbm90Zm91bmQgPSB0aGlzLT5WYXJpYWJsZU5hbWUgKyAiLU5PVEZPVU5EIjsKLSAgdGhpcy0+TWFrZWZpbGUtPkFkZENhY2hlRGVmaW5pdGlvbih0aGlzLT5WYXJpYWJsZU5hbWUsIG5vdGZvdW5kLmNfc3RyKCksCisgIHRoaXMtPk1ha2VmaWxlLT5BZGRDYWNoZURlZmluaXRpb24odGhpcy0+VmFyaWFibGVOYW1lLCBub3Rmb3VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5WYXJpYWJsZURvY3VtZW50YXRpb24uY19zdHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbVN0YXRlRW51bXM6OkZJTEVQQVRIKTsKKyAgaWYgKHRoaXMtPlJlcXVpcmVkKSB7CisgICAgdGhpcy0+TWFrZWZpbGUtPklzc3VlTWVzc2FnZSgKKyAgICAgIE1lc3NhZ2VUeXBlOjpGQVRBTF9FUlJPUiwKKyAgICAgICJDb3VsZCBub3QgZmluZCAiICsgdGhpcy0+VmFyaWFibGVOYW1lICsKKyAgICAgICAgIiB1c2luZyB0aGUgZm9sbG93aW5nIG5hbWVzOiAiICsgY21Kb2luKHRoaXMtPk5hbWVzLCAiLCAiKSk7CisgICAgY21TeXN0ZW1Ub29sczo6U2V0RmF0YWxFcnJvck9jY3VyZWQoKTsKKyAgfQogICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtRmluZFBhY2thZ2VDb21tYW5kLmN4eCBiL1NvdXJjZS9jbUZpbmRQYWNrYWdlQ29tbWFuZC5jeHgKaW5kZXggMjk3YzcyYi4uZTk5NjMyNyAxMDA2NDQKLS0tIGEvU291cmNlL2NtRmluZFBhY2thZ2VDb21tYW5kLmN4eAorKysgYi9Tb3VyY2UvY21GaW5kUGFja2FnZUNvbW1hbmQuY3h4CkBAIC0xMDYwLDggKzEwNjAsOCBAQAogICAgIGNtU3RyQ2F0KCJUaGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBDTWFrZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yICIsCiAgICAgICAgICAgICAgdGhpcy0+TmFtZSwgJy4nKTsKICAgLy8gV2UgZm9yY2UgdGhlIHZhbHVlIHNpbmNlIHdlIGRvIG5vdCBnZXQgaGVyZSBpZiBpdCB3YXMgYWxyZWFkeSBzZXQuCi0gIHRoaXMtPk1ha2VmaWxlLT5BZGRDYWNoZURlZmluaXRpb24odGhpcy0+VmFyaWFibGUsIGluaXQuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwLmNfc3RyKCksIGNtU3RhdGVFbnVtczo6UEFUSCwgdHJ1ZSk7CisgIHRoaXMtPk1ha2VmaWxlLT5BZGRDYWNoZURlZmluaXRpb24odGhpcy0+VmFyaWFibGUsIGluaXQsIGhlbHAuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbVN0YXRlRW51bXM6OlBBVEgsIHRydWUpOwogCiAgIHJldHVybiBmb3VuZDsKIH0KQEAgLTExMTQsMTIgKzExMTQsMTAgQEAKIHZvaWQgY21GaW5kUGFja2FnZUNvbW1hbmQ6OkFwcGVuZFRvRm91bmRQcm9wZXJ0eShib29sIGZvdW5kKQogewogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZm91bmRDb250ZW50czsKLSAgY29uc3QgY2hhciogZm91bmRQcm9wID0KKyAgY21Qcm9wIGZvdW5kUHJvcCA9CiAgICAgdGhpcy0+TWFrZWZpbGUtPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KCJQQUNLQUdFU19GT1VORCIpOwotICBpZiAoZm91bmRQcm9wICYmICpmb3VuZFByb3ApIHsKLSAgICBzdGQ6OnN0cmluZyB0bXAgPSBmb3VuZFByb3A7Ci0KLSAgICBjbUV4cGFuZExpc3QodG1wLCBmb3VuZENvbnRlbnRzLCBmYWxzZSk7CisgIGlmIChmb3VuZFByb3AgJiYgIWZvdW5kUHJvcC0+ZW1wdHkoKSkgeworICAgIGNtRXhwYW5kTGlzdCgqZm91bmRQcm9wLCBmb3VuZENvbnRlbnRzLCBmYWxzZSk7CiAgICAgYXV0byBuYW1lSXQgPQogICAgICAgc3RkOjpmaW5kKGZvdW5kQ29udGVudHMuYmVnaW4oKSwgZm91bmRDb250ZW50cy5lbmQoKSwgdGhpcy0+TmFtZSk7CiAgICAgaWYgKG5hbWVJdCAhPSBmb3VuZENvbnRlbnRzLmVuZCgpKSB7CkBAIC0xMTI4LDEyICsxMTI2LDEwIEBACiAgIH0KIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbm90Rm91bmRDb250ZW50czsKLSAgY29uc3QgY2hhciogbm90Rm91bmRQcm9wID0KKyAgY21Qcm9wIG5vdEZvdW5kUHJvcCA9CiAgICAgdGhpcy0+TWFrZWZpbGUtPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KCJQQUNLQUdFU19OT1RfRk9VTkQiKTsKLSAgaWYgKG5vdEZvdW5kUHJvcCAmJiAqbm90Rm91bmRQcm9wKSB7Ci0gICAgc3RkOjpzdHJpbmcgdG1wID0gbm90Rm91bmRQcm9wOwotCi0gICAgY21FeHBhbmRMaXN0KHRtcCwgbm90Rm91bmRDb250ZW50cywgZmFsc2UpOworICBpZiAobm90Rm91bmRQcm9wICYmICFub3RGb3VuZFByb3AtPmVtcHR5KCkpIHsKKyAgICBjbUV4cGFuZExpc3QoKm5vdEZvdW5kUHJvcCwgbm90Rm91bmRDb250ZW50cywgZmFsc2UpOwogICAgIGF1dG8gbmFtZUl0ID0KICAgICAgIHN0ZDo6ZmluZChub3RGb3VuZENvbnRlbnRzLmJlZ2luKCksIG5vdEZvdW5kQ29udGVudHMuZW5kKCksIHRoaXMtPk5hbWUpOwogICAgIGlmIChuYW1lSXQgIT0gbm90Rm91bmRDb250ZW50cy5lbmQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL2NtRmluZFBhdGhDb21tYW5kLmN4eCBiL1NvdXJjZS9jbUZpbmRQYXRoQ29tbWFuZC5jeHgKaW5kZXggOTA4ZjBjMS4uNGJhYjQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL2NtRmluZFBhdGhDb21tYW5kLmN4eAorKysgYi9Tb3VyY2UvY21GaW5kUGF0aENvbW1hbmQuY3h4CkBAIC01LDYgKzUsNyBAQAogI2luY2x1ZGUgImNtc3lzL0dsb2IuaHh4IgogCiAjaW5jbHVkZSAiY21NYWtlZmlsZS5oIgorI2luY2x1ZGUgImNtTWVzc2FnZVR5cGUuaCIKICNpbmNsdWRlICJjbVN0YXRlVHlwZXMuaCIKICNpbmNsdWRlICJjbVN0cmluZ0FsZ29yaXRobXMuaCIKICNpbmNsdWRlICJjbVN5c3RlbVRvb2xzLmgiCkBAIC00MywxNCArNDQsMjEgQEAKICAgc3RkOjpzdHJpbmcgcmVzdWx0ID0gdGhpcy0+RmluZEhlYWRlcigpOwogICBpZiAoIXJlc3VsdC5lbXB0eSgpKSB7CiAgICAgdGhpcy0+TWFrZWZpbGUtPkFkZENhY2hlRGVmaW5pdGlvbigKLSAgICAgIHRoaXMtPlZhcmlhYmxlTmFtZSwgcmVzdWx0LmNfc3RyKCksIHRoaXMtPlZhcmlhYmxlRG9jdW1lbnRhdGlvbi5jX3N0cigpLAorICAgICAgdGhpcy0+VmFyaWFibGVOYW1lLCByZXN1bHQsIHRoaXMtPlZhcmlhYmxlRG9jdW1lbnRhdGlvbi5jX3N0cigpLAogICAgICAgKHRoaXMtPkluY2x1ZGVGaWxlSW5QYXRoKSA/IGNtU3RhdGVFbnVtczo6RklMRVBBVEggOiBjbVN0YXRlRW51bXM6OlBBVEgpOwogICAgIHJldHVybiB0cnVlOwogICB9CiAgIHRoaXMtPk1ha2VmaWxlLT5BZGRDYWNoZURlZmluaXRpb24oCi0gICAgdGhpcy0+VmFyaWFibGVOYW1lLCAodGhpcy0+VmFyaWFibGVOYW1lICsgIi1OT1RGT1VORCIpLmNfc3RyKCksCisgICAgdGhpcy0+VmFyaWFibGVOYW1lLCB0aGlzLT5WYXJpYWJsZU5hbWUgKyAiLU5PVEZPVU5EIiwKICAgICB0aGlzLT5WYXJpYWJsZURvY3VtZW50YXRpb24uY19zdHIoKSwKICAgICAodGhpcy0+SW5jbHVkZUZpbGVJblBhdGgpID8gY21TdGF0ZUVudW1zOjpGSUxFUEFUSCA6IGNtU3RhdGVFbnVtczo6UEFUSCk7CisgIGlmICh0aGlzLT5SZXF1aXJlZCkgeworICAgIHRoaXMtPk1ha2VmaWxlLT5Jc3N1ZU1lc3NhZ2UoCisgICAgICBNZXNzYWdlVHlwZTo6RkFUQUxfRVJST1IsCisgICAgICAiQ291bGQgbm90IGZpbmQgIiArIHRoaXMtPlZhcmlhYmxlTmFtZSArCisgICAgICAgICIgdXNpbmcgdGhlIGZvbGxvd2luZyBmaWxlczogIiArIGNtSm9pbih0aGlzLT5OYW1lcywgIiwgIikpOworICAgIGNtU3lzdGVtVG9vbHM6OlNldEZhdGFsRXJyb3JPY2N1cmVkKCk7CisgIH0KICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUZpbmRQcm9ncmFtQ29tbWFuZC5jeHggYi9Tb3VyY2UvY21GaW5kUHJvZ3JhbUNvbW1hbmQuY3h4CmluZGV4IDNlNDkxNzIuLjRiODhiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUZpbmRQcm9ncmFtQ29tbWFuZC5jeHgKKysrIGIvU291cmNlL2NtRmluZFByb2dyYW1Db21tYW5kLmN4eApAQCAtMyw2ICszLDcgQEAKICNpbmNsdWRlICJjbUZpbmRQcm9ncmFtQ29tbWFuZC5oIgogCiAjaW5jbHVkZSAiY21NYWtlZmlsZS5oIgorI2luY2x1ZGUgImNtTWVzc2FnZVR5cGUuaCIKICNpbmNsdWRlICJjbVN0YXRlVHlwZXMuaCIKICNpbmNsdWRlICJjbVN0cmluZ0FsZ29yaXRobXMuaCIKICNpbmNsdWRlICJjbVN5c3RlbVRvb2xzLmgiCkBAIC0xMjcsMTUgKzEyOCwyMiBAQAogICBzdGQ6OnN0cmluZyBjb25zdCByZXN1bHQgPSBGaW5kUHJvZ3JhbSgpOwogICBpZiAoIXJlc3VsdC5lbXB0eSgpKSB7CiAgICAgLy8gU2F2ZSB0aGUgdmFsdWUgaW4gdGhlIGNhY2hlCi0gICAgdGhpcy0+TWFrZWZpbGUtPkFkZENhY2hlRGVmaW5pdGlvbih0aGlzLT5WYXJpYWJsZU5hbWUsIHJlc3VsdC5jX3N0cigpLAorICAgIHRoaXMtPk1ha2VmaWxlLT5BZGRDYWNoZURlZmluaXRpb24odGhpcy0+VmFyaWFibGVOYW1lLCByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5WYXJpYWJsZURvY3VtZW50YXRpb24uY19zdHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtU3RhdGVFbnVtczo6RklMRVBBVEgpOwogCiAgICAgcmV0dXJuIHRydWU7CiAgIH0KICAgdGhpcy0+TWFrZWZpbGUtPkFkZENhY2hlRGVmaW5pdGlvbigKLSAgICB0aGlzLT5WYXJpYWJsZU5hbWUsICh0aGlzLT5WYXJpYWJsZU5hbWUgKyAiLU5PVEZPVU5EIikuY19zdHIoKSwKKyAgICB0aGlzLT5WYXJpYWJsZU5hbWUsIHRoaXMtPlZhcmlhYmxlTmFtZSArICItTk9URk9VTkQiLAogICAgIHRoaXMtPlZhcmlhYmxlRG9jdW1lbnRhdGlvbi5jX3N0cigpLCBjbVN0YXRlRW51bXM6OkZJTEVQQVRIKTsKKyAgaWYgKHRoaXMtPlJlcXVpcmVkKSB7CisgICAgdGhpcy0+TWFrZWZpbGUtPklzc3VlTWVzc2FnZSgKKyAgICAgIE1lc3NhZ2VUeXBlOjpGQVRBTF9FUlJPUiwKKyAgICAgICJDb3VsZCBub3QgZmluZCAiICsgdGhpcy0+VmFyaWFibGVOYW1lICsKKyAgICAgICAgIiB1c2luZyB0aGUgZm9sbG93aW5nIG5hbWVzOiAiICsgY21Kb2luKHRoaXMtPk5hbWVzLCAiLCAiKSk7CisgICAgY21TeXN0ZW1Ub29sczo6U2V0RmF0YWxFcnJvck9jY3VyZWQoKTsKKyAgfQogICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtR2VuZXJhdGVkRmlsZVN0cmVhbS5jeHggYi9Tb3VyY2UvY21HZW5lcmF0ZWRGaWxlU3RyZWFtLmN4eAppbmRleCAyYWYwNGI2Li5mNzZlMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HZW5lcmF0ZWRGaWxlU3RyZWFtLmN4eAorKysgYi9Tb3VyY2UvY21HZW5lcmF0ZWRGaWxlU3RyZWFtLmN4eApAQCAtMTgwLDYgKzE4MCw3IEBACiAgIH0KICAgRklMRSogaWZzID0gY21zeXM6OlN5c3RlbVRvb2xzOjpGb3BlbihvbGRuYW1lLCAiciIpOwogICBpZiAoIWlmcykgeworICAgIGd6Y2xvc2UoZ2YpOwogICAgIHJldHVybiAwOwogICB9CiAgIHNpemVfdCByZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21HZW5lcmF0b3JFeHByZXNzaW9uLmN4eCBiL1NvdXJjZS9jbUdlbmVyYXRvckV4cHJlc3Npb24uY3h4CmluZGV4IDgxZDFlNDYuLjZlMjkzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUdlbmVyYXRvckV4cHJlc3Npb24uY3h4CisrKyBiL1NvdXJjZS9jbUdlbmVyYXRvckV4cHJlc3Npb24uY3h4CkBAIC0zMiwxMiArMzIsNiBAQAogICAgIG5ldyBjbUNvbXBpbGVkR2VuZXJhdG9yRXhwcmVzc2lvbih0aGlzLT5CYWNrdHJhY2UsIHN0ZDo6bW92ZShpbnB1dCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPGNtQ29tcGlsZWRHZW5lcmF0b3JFeHByZXNzaW9uPiBjbUdlbmVyYXRvckV4cHJlc3Npb246OlBhcnNlKAotICBjb25zdCBjaGFyKiBpbnB1dCkgY29uc3QKLXsKLSAgcmV0dXJuIHRoaXMtPlBhcnNlKHN0ZDo6c3RyaW5nKGlucHV0ID8gaW5wdXQgOiAiIikpOwotfQotCiBzdGQ6OnN0cmluZyBjbUdlbmVyYXRvckV4cHJlc3Npb246OkV2YWx1YXRlKAogICBzdGQ6OnN0cmluZyBpbnB1dCwgY21Mb2NhbEdlbmVyYXRvciogbGcsIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcsCiAgIGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0KiBoZWFkVGFyZ2V0LApAQCAtNTIsMTcgKzQ2LDYgQEAKICAgcmV0dXJuIGlucHV0OwogfQogCi1zdGQ6OnN0cmluZyBjbUdlbmVyYXRvckV4cHJlc3Npb246OkV2YWx1YXRlKAotICBjb25zdCBjaGFyKiBpbnB1dCwgY21Mb2NhbEdlbmVyYXRvciogbGcsIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcsCi0gIGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0KiBoZWFkVGFyZ2V0LAotICBjbUdlbmVyYXRvckV4cHJlc3Npb25EQUdDaGVja2VyKiBkYWdDaGVja2VyLAotICBjbUdlbmVyYXRvclRhcmdldCBjb25zdCogY3VycmVudFRhcmdldCwgc3RkOjpzdHJpbmcgY29uc3QmIGxhbmd1YWdlKQotewotICByZXR1cm4gaW5wdXQgPyBFdmFsdWF0ZShzdGQ6OnN0cmluZyhpbnB1dCksIGxnLCBjb25maWcsIGhlYWRUYXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRhZ0NoZWNrZXIsIGN1cnJlbnRUYXJnZXQsIGxhbmd1YWdlKQotICAgICAgICAgICAgICAgOiAiIjsKLX0KLQogY29uc3Qgc3RkOjpzdHJpbmcmIGNtQ29tcGlsZWRHZW5lcmF0b3JFeHByZXNzaW9uOjpFdmFsdWF0ZSgKICAgY21Mb2NhbEdlbmVyYXRvciogbGcsIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcsCiAgIGNvbnN0IGNtR2VuZXJhdG9yVGFyZ2V0KiBoZWFkVGFyZ2V0LApAQCAtMTAzLDYgKzg2LDggQEAKICAgaWYgKCFjb250ZXh0LkhhZEVycm9yKSB7CiAgICAgdGhpcy0+SGFkQ29udGV4dFNlbnNpdGl2ZUNvbmRpdGlvbiA9IGNvbnRleHQuSGFkQ29udGV4dFNlbnNpdGl2ZUNvbmRpdGlvbjsKICAgICB0aGlzLT5IYWRIZWFkU2Vuc2l0aXZlQ29uZGl0aW9uID0gY29udGV4dC5IYWRIZWFkU2Vuc2l0aXZlQ29uZGl0aW9uOworICAgIHRoaXMtPkhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbiA9CisgICAgICBjb250ZXh0LkhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbjsKICAgICB0aGlzLT5Tb3VyY2VTZW5zaXRpdmVUYXJnZXRzID0gY29udGV4dC5Tb3VyY2VTZW5zaXRpdmVUYXJnZXRzOwogICB9CiAKQEAgLTExOSw2ICsxMDQsNyBAQAogICAsIFF1aWV0KGZhbHNlKQogICAsIEhhZENvbnRleHRTZW5zaXRpdmVDb25kaXRpb24oZmFsc2UpCiAgICwgSGFkSGVhZFNlbnNpdGl2ZUNvbmRpdGlvbihmYWxzZSkKKyAgLCBIYWRMaW5rTGFuZ3VhZ2VTZW5zaXRpdmVDb25kaXRpb24oZmFsc2UpCiB7CiAgIGNtR2VuZXJhdG9yRXhwcmVzc2lvbkxleGVyIGw7CiAgIHN0ZDo6dmVjdG9yPGNtR2VuZXJhdG9yRXhwcmVzc2lvblRva2VuPiB0b2tlbnMgPSBsLlRva2VuaXplKHRoaXMtPklucHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUdlbmVyYXRvckV4cHJlc3Npb24uaCBiL1NvdXJjZS9jbUdlbmVyYXRvckV4cHJlc3Npb24uaAppbmRleCBjNGJlM2ExLi43NWJiYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HZW5lcmF0b3JFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL2NtR2VuZXJhdG9yRXhwcmVzc2lvbi5oCkBAIC00Miw4ICs0Miw2IEBACiAKICAgc3RkOjp1bmlxdWVfcHRyPGNtQ29tcGlsZWRHZW5lcmF0b3JFeHByZXNzaW9uPiBQYXJzZSgKICAgICBzdGQ6OnN0cmluZyBpbnB1dCkgY29uc3Q7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxjbUNvbXBpbGVkR2VuZXJhdG9yRXhwcmVzc2lvbj4gUGFyc2UoCi0gICAgY29uc3QgY2hhciogaW5wdXQpIGNvbnN0OwogCiAgIHN0YXRpYyBzdGQ6OnN0cmluZyBFdmFsdWF0ZSgKICAgICBzdGQ6OnN0cmluZyBpbnB1dCwgY21Mb2NhbEdlbmVyYXRvciogbGcsIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcsCkBAIC01MSwxMiArNDksNiBAQAogICAgIGNtR2VuZXJhdG9yRXhwcmVzc2lvbkRBR0NoZWNrZXIqIGRhZ0NoZWNrZXIgPSBudWxscHRyLAogICAgIGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0KiBjdXJyZW50VGFyZ2V0ID0gbnVsbHB0ciwKICAgICBzdGQ6OnN0cmluZyBjb25zdCYgbGFuZ3VhZ2UgPSBzdGQ6OnN0cmluZygpKTsKLSAgc3RhdGljIHN0ZDo6c3RyaW5nIEV2YWx1YXRlKAotICAgIGNvbnN0IGNoYXIqIGlucHV0LCBjbUxvY2FsR2VuZXJhdG9yKiBsZywgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywKLSAgICBjbUdlbmVyYXRvclRhcmdldCBjb25zdCogaGVhZFRhcmdldCA9IG51bGxwdHIsCi0gICAgY21HZW5lcmF0b3JFeHByZXNzaW9uREFHQ2hlY2tlciogZGFnQ2hlY2tlciA9IG51bGxwdHIsCi0gICAgY21HZW5lcmF0b3JUYXJnZXQgY29uc3QqIGN1cnJlbnRUYXJnZXQgPSBudWxscHRyLAotICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBsYW5ndWFnZSA9IHN0ZDo6c3RyaW5nKCkpOwogCiAgIGVudW0gUHJlcHJvY2Vzc0NvbnRleHQKICAgewpAQCAtMTM3LDYgKzEyOSwxMCBAQAogICB7CiAgICAgcmV0dXJuIHRoaXMtPkhhZEhlYWRTZW5zaXRpdmVDb25kaXRpb247CiAgIH0KKyAgYm9vbCBHZXRIYWRMaW5rTGFuZ3VhZ2VTZW5zaXRpdmVDb25kaXRpb24oKSBjb25zdAorICB7CisgICAgcmV0dXJuIHRoaXMtPkhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbjsKKyAgfQogICBzdGQ6OnNldDxjbUdlbmVyYXRvclRhcmdldCBjb25zdCo+IEdldFNvdXJjZVNlbnNpdGl2ZVRhcmdldHMoKSBjb25zdAogICB7CiAgICAgcmV0dXJuIHRoaXMtPlNvdXJjZVNlbnNpdGl2ZVRhcmdldHM7CkBAIC0xNzgsNiArMTc0LDcgQEAKICAgbXV0YWJsZSBzdGQ6OnN0cmluZyBPdXRwdXQ7CiAgIG11dGFibGUgYm9vbCBIYWRDb250ZXh0U2Vuc2l0aXZlQ29uZGl0aW9uOwogICBtdXRhYmxlIGJvb2wgSGFkSGVhZFNlbnNpdGl2ZUNvbmRpdGlvbjsKKyAgbXV0YWJsZSBib29sIEhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbjsKICAgbXV0YWJsZSBzdGQ6OnNldDxjbUdlbmVyYXRvclRhcmdldCBjb25zdCo+IFNvdXJjZVNlbnNpdGl2ZVRhcmdldHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21HZW5lcmF0b3JFeHByZXNzaW9uQ29udGV4dC5jeHggYi9Tb3VyY2UvY21HZW5lcmF0b3JFeHByZXNzaW9uQ29udGV4dC5jeHgKaW5kZXggNmQ5NzMzMS4uNDJjYmUyYSAxMDA2NDQKLS0tIGEvU291cmNlL2NtR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRleHQuY3h4CisrKyBiL1NvdXJjZS9jbUdlbmVyYXRvckV4cHJlc3Npb25Db250ZXh0LmN4eApAQCAtMTksNiArMTksNyBAQAogICAsIEhhZEVycm9yKGZhbHNlKQogICAsIEhhZENvbnRleHRTZW5zaXRpdmVDb25kaXRpb24oZmFsc2UpCiAgICwgSGFkSGVhZFNlbnNpdGl2ZUNvbmRpdGlvbihmYWxzZSkKKyAgLCBIYWRMaW5rTGFuZ3VhZ2VTZW5zaXRpdmVDb25kaXRpb24oZmFsc2UpCiAgICwgRXZhbHVhdGVGb3JCdWlsZHN5c3RlbShldmFsdWF0ZUZvckJ1aWxkc3lzdGVtKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRleHQuaCBiL1NvdXJjZS9jbUdlbmVyYXRvckV4cHJlc3Npb25Db250ZXh0LmgKaW5kZXggNDcwOWZhMC4uYmNlZmYxMiAxMDA2NDQKLS0tIGEvU291cmNlL2NtR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvY21HZW5lcmF0b3JFeHByZXNzaW9uQ29udGV4dC5oCkBAIC00MCw2ICs0MCw3IEBACiAgIGJvb2wgSGFkRXJyb3I7CiAgIGJvb2wgSGFkQ29udGV4dFNlbnNpdGl2ZUNvbmRpdGlvbjsKICAgYm9vbCBIYWRIZWFkU2Vuc2l0aXZlQ29uZGl0aW9uOworICBib29sIEhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbjsKICAgYm9vbCBFdmFsdWF0ZUZvckJ1aWxkc3lzdGVtOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtR2VuZXJhdG9yRXhwcmVzc2lvbkRBR0NoZWNrZXIuY3h4IGIvU291cmNlL2NtR2VuZXJhdG9yRXhwcmVzc2lvbkRBR0NoZWNrZXIuY3h4CmluZGV4IDY0M2JhMzQuLmM4NjBjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUdlbmVyYXRvckV4cHJlc3Npb25EQUdDaGVja2VyLmN4eAorKysgYi9Tb3VyY2UvY21HZW5lcmF0b3JFeHByZXNzaW9uREFHQ2hlY2tlci5jeHgKQEAgLTYsNiArNiwxMCBAQAogI2luY2x1ZGUgPHNzdHJlYW0+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgPGNtL3N0cmluZ192aWV3PgorCisjaW5jbHVkZSAiY21fc3RhdGljX3N0cmluZ192aWV3Lmh4eCIKKwogI2luY2x1ZGUgImNtR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRleHQuaCIKICNpbmNsdWRlICJjbUdlbmVyYXRvckV4cHJlc3Npb25FdmFsdWF0b3IuaCIKICNpbmNsdWRlICJjbUdlbmVyYXRvclRhcmdldC5oIgpAQCAtMTU0LDggKzE1OCw4IEBACiAKIGJvb2wgY21HZW5lcmF0b3JFeHByZXNzaW9uREFHQ2hlY2tlcjo6RXZhbHVhdGluZ0dlbmV4RXhwcmVzc2lvbigpCiB7Ci0gIHJldHVybiB0aGlzLT5Qcm9wZXJ0eS5maW5kKCJUQVJHRVRfR0VORVhfRVZBTDoiKSA9PSAwIHx8Ci0gICAgdGhpcy0+UHJvcGVydHkuZmluZCgiR0VORVhfRVZBTDoiLCAwKSA9PSAwOworICByZXR1cm4gY21IYXNMaXRlcmFsUHJlZml4KHRoaXMtPlByb3BlcnR5LCAiVEFSR0VUX0dFTkVYX0VWQUw6IikgfHwKKyAgICBjbUhhc0xpdGVyYWxQcmVmaXgodGhpcy0+UHJvcGVydHksICJHRU5FWF9FVkFMOiIpOwogfQogCiBib29sIGNtR2VuZXJhdG9yRXhwcmVzc2lvbkRBR0NoZWNrZXI6OkV2YWx1YXRpbmdQSUNFeHByZXNzaW9uKCkKQEAgLTE3MCw2ICsxNzQsMjEgQEAKICAgcmV0dXJuIHRvcC0+UHJvcGVydHkgPT0gIklOVEVSRkFDRV9QT1NJVElPTl9JTkRFUEVOREVOVF9DT0RFIjsKIH0KIAorYm9vbCBjbUdlbmVyYXRvckV4cHJlc3Npb25EQUdDaGVja2VyOjpFdmFsdWF0aW5nTGlua0V4cHJlc3Npb24oKQoreworICBjb25zdCBjbUdlbmVyYXRvckV4cHJlc3Npb25EQUdDaGVja2VyKiB0b3AgPSB0aGlzOworICBjb25zdCBjbUdlbmVyYXRvckV4cHJlc3Npb25EQUdDaGVja2VyKiBwYXJlbnQgPSB0aGlzLT5QYXJlbnQ7CisgIHdoaWxlIChwYXJlbnQpIHsKKyAgICB0b3AgPSBwYXJlbnQ7CisgICAgcGFyZW50ID0gcGFyZW50LT5QYXJlbnQ7CisgIH0KKworICBjbTo6c3RyaW5nX3ZpZXcgcHJvcGVydHkodG9wLT5Qcm9wZXJ0eSk7CisKKyAgcmV0dXJuIHByb3BlcnR5ID09ICJMSU5LX0RJUkVDVE9SSUVTIl9zIHx8IHByb3BlcnR5ID09ICJMSU5LX09QVElPTlMiX3MgfHwKKyAgICBwcm9wZXJ0eSA9PSAiTElOS19ERVBFTkRTIl9zOworfQorCiBib29sIGNtR2VuZXJhdG9yRXhwcmVzc2lvbkRBR0NoZWNrZXI6OkV2YWx1YXRpbmdMaW5rTGlicmFyaWVzKAogICBjbUdlbmVyYXRvclRhcmdldCBjb25zdCogdGd0KQogewpAQCAtMTgwLDE4ICsxOTksMTcgQEAKICAgICBwYXJlbnQgPSBwYXJlbnQtPlBhcmVudDsKICAgfQogCi0gIGNvbnN0IGNoYXIqIHByb3AgPSB0b3AtPlByb3BlcnR5LmNfc3RyKCk7CisgIGNtOjpzdHJpbmdfdmlldyBwcm9wKHRvcC0+UHJvcGVydHkpOwogCiAgIGlmICh0Z3QpIHsKLSAgICByZXR1cm4gdG9wLT5UYXJnZXQgPT0gdGd0ICYmIHN0cmNtcChwcm9wLCAiTElOS19MSUJSQVJJRVMiKSA9PSAwOworICAgIHJldHVybiB0b3AtPlRhcmdldCA9PSB0Z3QgJiYgcHJvcCA9PSAiTElOS19MSUJSQVJJRVMiX3M7CiAgIH0KIAotICByZXR1cm4gKHN0cmNtcChwcm9wLCAiTElOS19MSUJSQVJJRVMiKSA9PSAwIHx8Ci0gICAgICAgICAgc3RyY21wKHByb3AsICJMSU5LX0lOVEVSRkFDRV9MSUJSQVJJRVMiKSA9PSAwIHx8Ci0gICAgICAgICAgc3RyY21wKHByb3AsICJJTVBPUlRFRF9MSU5LX0lOVEVSRkFDRV9MSUJSQVJJRVMiKSA9PSAwIHx8Ci0gICAgICAgICAgY21IYXNMaXRlcmFsUHJlZml4KHByb3AsICJMSU5LX0lOVEVSRkFDRV9MSUJSQVJJRVNfIikgfHwKLSAgICAgICAgICBjbUhhc0xpdGVyYWxQcmVmaXgocHJvcCwgIklNUE9SVEVEX0xJTktfSU5URVJGQUNFX0xJQlJBUklFU18iKSkgfHwKLSAgICBzdHJjbXAocHJvcCwgIklOVEVSRkFDRV9MSU5LX0xJQlJBUklFUyIpID09IDA7CisgIHJldHVybiBwcm9wID09ICJMSU5LX0xJQlJBUklFUyJfcyB8fCBwcm9wID09ICJMSU5LX0lOVEVSRkFDRV9MSUJSQVJJRVMiX3MgfHwKKyAgICBwcm9wID09ICJJTVBPUlRFRF9MSU5LX0lOVEVSRkFDRV9MSUJSQVJJRVMiX3MgfHwKKyAgICBjbUhhc0xpdGVyYWxQcmVmaXgocHJvcCwgIkxJTktfSU5URVJGQUNFX0xJQlJBUklFU18iKSB8fAorICAgIGNtSGFzTGl0ZXJhbFByZWZpeChwcm9wLCAiSU1QT1JURURfTElOS19JTlRFUkZBQ0VfTElCUkFSSUVTXyIpIHx8CisgICAgcHJvcCA9PSAiSU5URVJGQUNFX0xJTktfTElCUkFSSUVTIl9zOwogfQogCiBjbUdlbmVyYXRvclRhcmdldCBjb25zdCogY21HZW5lcmF0b3JFeHByZXNzaW9uREFHQ2hlY2tlcjo6VG9wVGFyZ2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUdlbmVyYXRvckV4cHJlc3Npb25EQUdDaGVja2VyLmggYi9Tb3VyY2UvY21HZW5lcmF0b3JFeHByZXNzaW9uREFHQ2hlY2tlci5oCmluZGV4IGYyYzQ5YmIuLjJhMDY1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUdlbmVyYXRvckV4cHJlc3Npb25EQUdDaGVja2VyLmgKKysrIGIvU291cmNlL2NtR2VuZXJhdG9yRXhwcmVzc2lvbkRBR0NoZWNrZXIuaApAQCAtNjgsNiArNjgsNyBAQAogCiAgIGJvb2wgRXZhbHVhdGluZ0dlbmV4RXhwcmVzc2lvbigpOwogICBib29sIEV2YWx1YXRpbmdQSUNFeHByZXNzaW9uKCk7CisgIGJvb2wgRXZhbHVhdGluZ0xpbmtFeHByZXNzaW9uKCk7CiAgIGJvb2wgRXZhbHVhdGluZ0xpbmtMaWJyYXJpZXMoY21HZW5lcmF0b3JUYXJnZXQgY29uc3QqIHRndCA9IG51bGxwdHIpOwogCiAjZGVmaW5lIERFQ0xBUkVfVFJBTlNJVElWRV9QUk9QRVJUWV9NRVRIT0QoTUVUSE9EKSBib29sIE1FVEhPRCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtR2VuZXJhdG9yRXhwcmVzc2lvbk5vZGUuY3h4IGIvU291cmNlL2NtR2VuZXJhdG9yRXhwcmVzc2lvbk5vZGUuY3h4CmluZGV4IDE0NDc4YzIuLmMwZGI5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUdlbmVyYXRvckV4cHJlc3Npb25Ob2RlLmN4eAorKysgYi9Tb3VyY2UvY21HZW5lcmF0b3JFeHByZXNzaW9uTm9kZS5jeHgKQEAgLTYyLDYgKzYyLDkgQEAKICAgaWYgKGNnZS0+R2V0SGFkSGVhZFNlbnNpdGl2ZUNvbmRpdGlvbigpKSB7CiAgICAgY29udGV4dC0+SGFkSGVhZFNlbnNpdGl2ZUNvbmRpdGlvbiA9IHRydWU7CiAgIH0KKyAgaWYgKGNnZS0+R2V0SGFkTGlua0xhbmd1YWdlU2Vuc2l0aXZlQ29uZGl0aW9uKCkpIHsKKyAgICBjb250ZXh0LT5IYWRMaW5rTGFuZ3VhZ2VTZW5zaXRpdmVDb25kaXRpb24gPSB0cnVlOworICB9CiAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTkwNyw4ICs5MTAsOCBAQAogICAgICAgY29uc3QgY2hhciogbG9jID0gbnVsbHB0cjsKICAgICAgIGNvbnN0IGNoYXIqIGltcCA9IG51bGxwdHI7CiAgICAgICBzdGQ6OnN0cmluZyBzdWZmaXg7Ci0gICAgICBpZiAoY29udGV4dC0+Q3VycmVudFRhcmdldC0+VGFyZ2V0LT5HZXRNYXBwZWRDb25maWcoCi0gICAgICAgICAgICBjb250ZXh0LT5Db25maWcsICZsb2MsICZpbXAsIHN1ZmZpeCkpIHsKKyAgICAgIGlmIChjb250ZXh0LT5DdXJyZW50VGFyZ2V0LT5UYXJnZXQtPkdldE1hcHBlZENvbmZpZyhjb250ZXh0LT5Db25maWcsIGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXAsIHN1ZmZpeCkpIHsKICAgICAgICAgLy8gVGhpcyBpbXBvcnRlZCB0YXJnZXQgaGFzIGFuIGFwcHJvcHJpYXRlIGxvY2F0aW9uCiAgICAgICAgIC8vIGZvciB0aGlzIChwb3NzaWJseSBtYXBwZWQpIGNvbmZpZy4KICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYSBwcm9wZXIgY29uZmlnIG1hcHBpbmcgZm9yIHRoZSB0ZXN0ZWQgY29uZmlnLgpAQCAtMTAzOSw2ICsxMDQyLDE1MCBAQAogICB9CiB9IGxhbmd1YWdlQW5kSWROb2RlOwogCitzdGF0aWMgY29uc3Qgc3RydWN0IExpbmtMYW5ndWFnZU5vZGUgOiBwdWJsaWMgY21HZW5lcmF0b3JFeHByZXNzaW9uTm9kZQoreworICBMaW5rTGFuZ3VhZ2VOb2RlKCkge30gLy8gTk9MSU5UKG1vZGVybml6ZS11c2UtZXF1YWxzLWRlZmF1bHQpCisKKyAgaW50IE51bUV4cGVjdGVkUGFyYW1ldGVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFplcm9Pck1vcmVQYXJhbWV0ZXJzOyB9CisKKyAgc3RkOjpzdHJpbmcgRXZhbHVhdGUoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBwYXJhbWV0ZXJzLAorICAgIGNtR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRleHQqIGNvbnRleHQsCisgICAgY29uc3QgR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRlbnQqIGNvbnRlbnQsCisgICAgY21HZW5lcmF0b3JFeHByZXNzaW9uREFHQ2hlY2tlciogZGFnQ2hlY2tlcikgY29uc3Qgb3ZlcnJpZGUKKyAgeworICAgIGlmICghY29udGV4dC0+SGVhZFRhcmdldCB8fCAhZGFnQ2hlY2tlciB8fAorICAgICAgICAhKGRhZ0NoZWNrZXItPkV2YWx1YXRpbmdMaW5rRXhwcmVzc2lvbigpIHx8CisgICAgICAgICAgZGFnQ2hlY2tlci0+RXZhbHVhdGluZ0xpbmtMaWJyYXJpZXMoKSkpIHsKKyAgICAgIHJlcG9ydEVycm9yKGNvbnRleHQsIGNvbnRlbnQtPkdldE9yaWdpbmFsRXhwcmVzc2lvbigpLAorICAgICAgICAgICAgICAgICAgIiQ8TElOS19MQU5HVUFHRTouLi4+IG1heSBvbmx5IGJlIHVzZWQgd2l0aCBiaW5hcnkgdGFyZ2V0cyAiCisgICAgICAgICAgICAgICAgICAidG8gc3BlY2lmeSBsaW5rIGxpYnJhcmllcywgbGluayBkaXJlY3RvcmllcywgbGluayBvcHRpb25zICIKKyAgICAgICAgICAgICAgICAgICJhbmQgbGluayBkZXBlbmRzLiIpOworICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CisgICAgfQorICAgIGlmIChkYWdDaGVja2VyLT5FdmFsdWF0aW5nTGlua0xpYnJhcmllcygpICYmIHBhcmFtZXRlcnMuZW1wdHkoKSkgeworICAgICAgcmVwb3J0RXJyb3IoCisgICAgICAgIGNvbnRleHQsIGNvbnRlbnQtPkdldE9yaWdpbmFsRXhwcmVzc2lvbigpLAorICAgICAgICAiJDxMSU5LX0xBTkdVQUdFPiBpcyBub3Qgc3VwcG9ydGVkIGluIGxpbmsgbGlicmFyaWVzIGV4cHJlc3Npb24uIik7CisgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAgICB9CisKKyAgICBjbUdsb2JhbEdlbmVyYXRvciogZ2cgPSBjb250ZXh0LT5MRy0+R2V0R2xvYmFsR2VuZXJhdG9yKCk7CisgICAgc3RkOjpzdHJpbmcgZ2VuTmFtZSA9IGdnLT5HZXROYW1lKCk7CisgICAgaWYgKGdlbk5hbWUuZmluZCgiTWFrZWZpbGVzIikgPT0gc3RkOjpzdHJpbmc6Om5wb3MgJiYKKyAgICAgICAgZ2VuTmFtZS5maW5kKCJOaW5qYSIpID09IHN0ZDo6c3RyaW5nOjpucG9zICYmCisgICAgICAgIGdlbk5hbWUuZmluZCgiVmlzdWFsIFN0dWRpbyIpID09IHN0ZDo6c3RyaW5nOjpucG9zICYmCisgICAgICAgIGdlbk5hbWUuZmluZCgiWGNvZGUiKSA9PSBzdGQ6OnN0cmluZzo6bnBvcyAmJgorICAgICAgICBnZW5OYW1lLmZpbmQoIldhdGNvbSBXTWFrZSIpID09IHN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICByZXBvcnRFcnJvcihjb250ZXh0LCBjb250ZW50LT5HZXRPcmlnaW5hbEV4cHJlc3Npb24oKSwKKyAgICAgICAgICAgICAgICAgICIkPExJTktfTEFOR1VBR0U6Li4uPiBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGdlbmVyYXRvci4iKTsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworICAgIH0KKworICAgIGlmIChkYWdDaGVja2VyLT5FdmFsdWF0aW5nTGlua0xpYnJhcmllcygpKSB7CisgICAgICBjb250ZXh0LT5IYWRIZWFkU2Vuc2l0aXZlQ29uZGl0aW9uID0gdHJ1ZTsKKyAgICAgIGNvbnRleHQtPkhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbiA9IHRydWU7CisgICAgfQorCisgICAgaWYgKHBhcmFtZXRlcnMuZW1wdHkoKSkgeworICAgICAgcmV0dXJuIGNvbnRleHQtPkxhbmd1YWdlOworICAgIH0KKworICAgIGZvciAoYXV0byYgcGFyYW0gOiBwYXJhbWV0ZXJzKSB7CisgICAgICBpZiAoY29udGV4dC0+TGFuZ3VhZ2UgPT0gcGFyYW0pIHsKKyAgICAgICAgcmV0dXJuICIxIjsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuICIwIjsKKyAgfQorfSBsaW5rTGFuZ3VhZ2VOb2RlOworCituYW1lc3BhY2Ugeworc3RydWN0IExpbmtlcklkCit7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBFdmFsdWF0ZShjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUdlbmVyYXRvckV4cHJlc3Npb25Db250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRlbnQqIGNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbGFuZykKKyAgeworICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBsaW5rZXJJZCA9CisgICAgICBjb250ZXh0LT5MRy0+R2V0TWFrZWZpbGUoKS0+R2V0U2FmZURlZmluaXRpb24oIkNNQUtFXyIgKyBsYW5nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX0NPTVBJTEVSX0lEIik7CisgICAgaWYgKHBhcmFtZXRlcnMuZW1wdHkoKSkgeworICAgICAgcmV0dXJuIGxpbmtlcklkOworICAgIH0KKyAgICBpZiAobGlua2VySWQuZW1wdHkoKSkgeworICAgICAgcmV0dXJuIHBhcmFtZXRlcnMuZnJvbnQoKS5lbXB0eSgpID8gIjEiIDogIjAiOworICAgIH0KKyAgICBzdGF0aWMgY21zeXM6OlJlZ3VsYXJFeHByZXNzaW9uIGxpbmtlcklkVmFsaWRhdG9yKCJeW0EtWmEtejAtOV9dKiQiKTsKKworICAgIGZvciAoYXV0byYgcGFyYW0gOiBwYXJhbWV0ZXJzKSB7CisgICAgICBpZiAoIWxpbmtlcklkVmFsaWRhdG9yLmZpbmQocGFyYW0pKSB7CisgICAgICAgIHJlcG9ydEVycm9yKGNvbnRleHQsIGNvbnRlbnQtPkdldE9yaWdpbmFsRXhwcmVzc2lvbigpLAorICAgICAgICAgICAgICAgICAgICAiRXhwcmVzc2lvbiBzeW50YXggbm90IHJlY29nbml6ZWQuIik7CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworICAgICAgfQorCisgICAgICBpZiAocGFyYW0gPT0gbGlua2VySWQpIHsKKyAgICAgICAgcmV0dXJuICIxIjsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuICIwIjsKKyAgfQorfTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBMaW5rTGFuZ3VhZ2VBbmRJZE5vZGUgOiBwdWJsaWMgY21HZW5lcmF0b3JFeHByZXNzaW9uTm9kZQoreworICBMaW5rTGFuZ3VhZ2VBbmRJZE5vZGUoKSB7fSAvLyBOT0xJTlQobW9kZXJuaXplLXVzZS1lcXVhbHMtZGVmYXVsdCkKKworICBpbnQgTnVtRXhwZWN0ZWRQYXJhbWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVHdvT3JNb3JlUGFyYW1ldGVyczsgfQorCisgIHN0ZDo6c3RyaW5nIEV2YWx1YXRlKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcGFyYW1ldGVycywKKyAgICBjbUdlbmVyYXRvckV4cHJlc3Npb25Db250ZXh0KiBjb250ZXh0LAorICAgIGNvbnN0IEdlbmVyYXRvckV4cHJlc3Npb25Db250ZW50KiBjb250ZW50LAorICAgIGNtR2VuZXJhdG9yRXhwcmVzc2lvbkRBR0NoZWNrZXIqIGRhZ0NoZWNrZXIpIGNvbnN0IG92ZXJyaWRlCisgIHsKKyAgICBpZiAoIWNvbnRleHQtPkhlYWRUYXJnZXQgfHwgIWRhZ0NoZWNrZXIgfHwKKyAgICAgICAgIShkYWdDaGVja2VyLT5FdmFsdWF0aW5nTGlua0V4cHJlc3Npb24oKSB8fAorICAgICAgICAgIGRhZ0NoZWNrZXItPkV2YWx1YXRpbmdMaW5rTGlicmFyaWVzKCkpKSB7CisgICAgICByZXBvcnRFcnJvcigKKyAgICAgICAgY29udGV4dCwgY29udGVudC0+R2V0T3JpZ2luYWxFeHByZXNzaW9uKCksCisgICAgICAgICIkPExJTktfTEFOR19BTkRfSUQ6bGFuZyxpZD4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoIGJpbmFyeSB0YXJnZXRzICIKKyAgICAgICAgInRvIHNwZWNpZnkgbGluayBsaWJyYXJpZXMsIGxpbmsgZGlyZWN0b3JpZXMsIGxpbmsgb3B0aW9ucywgYW5kIGxpbmsgIgorICAgICAgICAiZGVwZW5kcy4iKTsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworICAgIH0KKworICAgIGNtR2xvYmFsR2VuZXJhdG9yKiBnZyA9IGNvbnRleHQtPkxHLT5HZXRHbG9iYWxHZW5lcmF0b3IoKTsKKyAgICBzdGQ6OnN0cmluZyBnZW5OYW1lID0gZ2ctPkdldE5hbWUoKTsKKyAgICBpZiAoZ2VuTmFtZS5maW5kKCJNYWtlZmlsZXMiKSA9PSBzdGQ6OnN0cmluZzo6bnBvcyAmJgorICAgICAgICBnZW5OYW1lLmZpbmQoIk5pbmphIikgPT0gc3RkOjpzdHJpbmc6Om5wb3MgJiYKKyAgICAgICAgZ2VuTmFtZS5maW5kKCJWaXN1YWwgU3R1ZGlvIikgPT0gc3RkOjpzdHJpbmc6Om5wb3MgJiYKKyAgICAgICAgZ2VuTmFtZS5maW5kKCJYY29kZSIpID09IHN0ZDo6c3RyaW5nOjpucG9zICYmCisgICAgICAgIGdlbk5hbWUuZmluZCgiV2F0Y29tIFdNYWtlIikgPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIHJlcG9ydEVycm9yKAorICAgICAgICBjb250ZXh0LCBjb250ZW50LT5HZXRPcmlnaW5hbEV4cHJlc3Npb24oKSwKKyAgICAgICAgIiQ8TElOS19MQU5HX0FORF9JRDpsYW5nLGlkPiBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGdlbmVyYXRvci4iKTsKKyAgICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworICAgIH0KKworICAgIGlmIChkYWdDaGVja2VyLT5FdmFsdWF0aW5nTGlua0xpYnJhcmllcygpKSB7CisgICAgICBjb250ZXh0LT5IYWRIZWFkU2Vuc2l0aXZlQ29uZGl0aW9uID0gdHJ1ZTsKKyAgICAgIGNvbnRleHQtPkhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbiA9IHRydWU7CisgICAgfQorCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxhbmcgPSBjb250ZXh0LT5MYW5ndWFnZTsKKyAgICBpZiAobGFuZyA9PSBwYXJhbWV0ZXJzLmZyb250KCkpIHsKKyAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBpZFBhcmFtZXRlcigocGFyYW1ldGVycy5jYmVnaW4oKSArIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuY2VuZCgpKTsKKyAgICAgIHJldHVybiBMaW5rZXJJZDo6RXZhbHVhdGUoaWRQYXJhbWV0ZXIsIGNvbnRleHQsIGNvbnRlbnQsIGxhbmcpOworICAgIH0KKyAgICByZXR1cm4gIjAiOworICB9Cit9IGxpbmtMYW5ndWFnZUFuZElkTm9kZTsKKwogc3RkOjpzdHJpbmcgZ2V0TGlua2VkVGFyZ2V0c0NvbnRlbnQoCiAgIGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0KiB0YXJnZXQsIHN0ZDo6c3RyaW5nIGNvbnN0JiBwcm9wLAogICBjbUdlbmVyYXRvckV4cHJlc3Npb25Db250ZXh0KiBjb250ZXh0LApAQCAtMTQyMSw3ICsxNTY4LDcgQEAKICAgICAgIGNvbnN0IGNoYXIqIGxvYyA9IG51bGxwdHI7CiAgICAgICBjb25zdCBjaGFyKiBpbXAgPSBudWxscHRyOwogICAgICAgc3RkOjpzdHJpbmcgc3VmZml4OwotICAgICAgaWYgKGd0LT5UYXJnZXQtPkdldE1hcHBlZENvbmZpZyhjb250ZXh0LT5Db25maWcsICZsb2MsICZpbXAsIHN1ZmZpeCkpIHsKKyAgICAgIGlmIChndC0+VGFyZ2V0LT5HZXRNYXBwZWRDb25maWcoY29udGV4dC0+Q29uZmlnLCBsb2MsIGltcCwgc3VmZml4KSkgewogICAgICAgICBjbUV4cGFuZExpc3QobG9jLCBvYmplY3RzKTsKICAgICAgIH0KICAgICAgIGNvbnRleHQtPkhhZENvbnRleHRTZW5zaXRpdmVDb25kaXRpb24gPSB0cnVlOwpAQCAtMjMxNCw2ICsyNDYxLDggQEAKICAgICB7ICJMSU5LX09OTFkiLCAmbGlua09ubHlOb2RlIH0sCiAgICAgeyAiQ09NUElMRV9MQU5HX0FORF9JRCIsICZsYW5ndWFnZUFuZElkTm9kZSB9LAogICAgIHsgIkNPTVBJTEVfTEFOR1VBR0UiLCAmbGFuZ3VhZ2VOb2RlIH0sCisgICAgeyAiTElOS19MQU5HX0FORF9JRCIsICZsaW5rTGFuZ3VhZ2VBbmRJZE5vZGUgfSwKKyAgICB7ICJMSU5LX0xBTkdVQUdFIiwgJmxpbmtMYW5ndWFnZU5vZGUgfSwKICAgICB7ICJTSEVMTF9QQVRIIiwgJnNoZWxsUGF0aE5vZGUgfQogICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21HZW5lcmF0b3JUYXJnZXQuY3h4IGIvU291cmNlL2NtR2VuZXJhdG9yVGFyZ2V0LmN4eAppbmRleCBiYTJlMzE0Li5lNzIyMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HZW5lcmF0b3JUYXJnZXQuY3h4CisrKyBiL1NvdXJjZS9jbUdlbmVyYXRvclRhcmdldC5jeHgKQEAgLTE3LDYgKzE3LDcgQEAKIAogI2luY2x1ZGUgPGNtL21lbW9yeT4KICNpbmNsdWRlIDxjbS9zdHJpbmdfdmlldz4KKyNpbmNsdWRlIDxjbWV4dC9hbGdvcml0aG0+CiAKICNpbmNsdWRlICJjbXN5cy9SZWd1bGFyRXhwcmVzc2lvbi5oeHgiCiAKQEAgLTUxLDExICs1MiwxMSBAQAogY2xhc3MgY21NZXNzZW5nZXI7CiAKIHRlbXBsYXRlIDw+Ci1jb25zdCBjaGFyKiBjbVRhcmdldFByb3BlcnR5Q29tcHV0ZXI6OkdldFNvdXJjZXM8Y21HZW5lcmF0b3JUYXJnZXQ+KAorY21Qcm9wIGNtVGFyZ2V0UHJvcGVydHlDb21wdXRlcjo6R2V0U291cmNlczxjbUdlbmVyYXRvclRhcmdldD4oCiAgIGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0KiB0Z3QsIGNtTWVzc2VuZ2VyKiAvKiBtZXNzZW5nZXIgKi8sCiAgIGNtTGlzdEZpbGVCYWNrdHJhY2UgY29uc3QmIC8qIGNvbnRleHQgKi8pCiB7Ci0gIHJldHVybiB0Z3QtPkdldFNvdXJjZXNQcm9wZXJ0eSgpLmNfc3RyKCk7CisgIHJldHVybiAmdGd0LT5HZXRTb3VyY2VzUHJvcGVydHkoKTsKIH0KIAogdGVtcGxhdGUgPD4KQEAgLTMwOCw2ICszMDksMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5Tb3VyY2VFbnRyaWVzLCB0cnVlKTsKIAogICB0aGlzLT5Qb2xpY3lNYXAgPSB0LT5HZXRQb2xpY3lNYXAoKTsKKworICAvLyBHZXQgaGFyZC1jb2RlZCBsaW5rZXIgbGFuZ3VhZ2UKKyAgaWYgKHRoaXMtPlRhcmdldC0+R2V0UHJvcGVydHkoIkhBU19DWFgiKSkgeworICAgIHRoaXMtPkxpbmtlckxhbmd1YWdlID0gIkNYWCI7CisgIH0gZWxzZSB7CisgICAgdGhpcy0+TGlua2VyTGFuZ3VhZ2UgPSB0aGlzLT5UYXJnZXQtPkdldFNhZmVQcm9wZXJ0eSgiTElOS0VSX0xBTkdVQUdFIik7CisgIH0KIH0KIAogY21HZW5lcmF0b3JUYXJnZXQ6On5jbUdlbmVyYXRvclRhcmdldCgpID0gZGVmYXVsdDsKQEAgLTM2OCw5ICszNzYsOSBAQAogICAgICAgICB0aGlzLT5HZXRCYWNrdHJhY2UoKSkpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQotICBpZiAoY29uc3QgY2hhciogcmVzdWx0ID0gY21UYXJnZXRQcm9wZXJ0eUNvbXB1dGVyOjpHZXRQcm9wZXJ0eSgKKyAgaWYgKGNtUHJvcCByZXN1bHQgPSBjbVRhcmdldFByb3BlcnR5Q29tcHV0ZXI6OkdldFByb3BlcnR5KAogICAgICAgICB0aGlzLCBwcm9wLCB0aGlzLT5NYWtlZmlsZS0+R2V0TWVzc2VuZ2VyKCksIHRoaXMtPkdldEJhY2t0cmFjZSgpKSkgewotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC0+Y19zdHIoKTsKICAgfQogICBpZiAoY21TeXN0ZW1Ub29sczo6R2V0RmF0YWxFcnJvck9jY3VyZWQoKSkgewogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTMxLDE1ICs1MzksNDMgQEAKIHN0ZDo6c3RyaW5nIGNtR2VuZXJhdG9yVGFyZ2V0OjpHZXRGaWxlUG9zdGZpeChjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnKSBjb25zdAogewogICBjb25zdCBjaGFyKiBwb3N0Zml4ID0gbnVsbHB0cjsKKyAgc3RkOjpzdHJpbmcgZnJhbWV3b3JrUG9zdGZpeDsKICAgaWYgKCFjb25maWcuZW1wdHkoKSkgewogICAgIHN0ZDo6c3RyaW5nIGNvbmZpZ1Byb3AgPQogICAgICAgY21TdHJDYXQoY21TeXN0ZW1Ub29sczo6VXBwZXJDYXNlKGNvbmZpZyksICJfUE9TVEZJWCIpOwogICAgIHBvc3RmaXggPSB0aGlzLT5HZXRQcm9wZXJ0eShjb25maWdQcm9wKTsKLSAgICAvLyBNYWMgYXBwbGljYXRpb24gYnVuZGxlcyBhbmQgZnJhbWV3b3JrcyBoYXZlIG5vIHBvc3RmaXguCisKKyAgICAvLyBNYWMgYXBwbGljYXRpb24gYnVuZGxlcyBhbmQgZnJhbWV3b3JrcyBoYXZlIG5vIHJlZ3VsYXIgcG9zdGZpeCBsaWtlCisgICAgLy8gbGlicmFyaWVzIGRvLgogICAgIGlmICghdGhpcy0+SXNJbXBvcnRlZCgpICYmIHBvc3RmaXggJiYKICAgICAgICAgKHRoaXMtPklzQXBwQnVuZGxlT25BcHBsZSgpIHx8IHRoaXMtPklzRnJhbWV3b3JrT25BcHBsZSgpKSkgewogICAgICAgcG9zdGZpeCA9IG51bGxwdHI7CiAgICAgfQorCisgICAgLy8gRnJhbWV3b3JrcyBjcmVhdGVkIGJ5IG11bHRpIGNvbmZpZyBnZW5lcmF0b3JzIGNhbiBoYXZlIGEgc3BlY2lhbAorICAgIC8vIGZyYW1ld29yayBwb3N0Zml4LgorICAgIGZyYW1ld29ya1Bvc3RmaXggPSBHZXRGcmFtZXdvcmtNdWx0aUNvbmZpZ1Bvc3RmaXgoY29uZmlnKTsKKyAgICBpZiAoIWZyYW1ld29ya1Bvc3RmaXguZW1wdHkoKSkgeworICAgICAgcG9zdGZpeCA9IGZyYW1ld29ya1Bvc3RmaXguY19zdHIoKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHBvc3RmaXggPyBwb3N0Zml4IDogc3RkOjpzdHJpbmcoKTsKK30KKworc3RkOjpzdHJpbmcgY21HZW5lcmF0b3JUYXJnZXQ6OkdldEZyYW1ld29ya011bHRpQ29uZmlnUG9zdGZpeCgKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZykgY29uc3QKK3sKKyAgY29uc3QgY2hhciogcG9zdGZpeCA9IG51bGxwdHI7CisgIGlmICghY29uZmlnLmVtcHR5KCkpIHsKKyAgICBzdGQ6OnN0cmluZyBjb25maWdQcm9wID0gY21TdHJDYXQoIkZSQU1FV09SS19NVUxUSV9DT05GSUdfUE9TVEZJWF8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbVN5c3RlbVRvb2xzOjpVcHBlckNhc2UoY29uZmlnKSk7CisgICAgcG9zdGZpeCA9IHRoaXMtPkdldFByb3BlcnR5KGNvbmZpZ1Byb3ApOworCisgICAgaWYgKCF0aGlzLT5Jc0ltcG9ydGVkKCkgJiYgcG9zdGZpeCAmJgorICAgICAgICAodGhpcy0+SXNGcmFtZXdvcmtPbkFwcGxlKCkgJiYKKyAgICAgICAgICFHZXRHbG9iYWxHZW5lcmF0b3IoKS0+SXNNdWx0aUNvbmZpZygpKSkgeworICAgICAgcG9zdGZpeCA9IG51bGxwdHI7CisgICAgfQogICB9CiAgIHJldHVybiBwb3N0Zml4ID8gcG9zdGZpeCA6IHN0ZDo6c3RyaW5nKCk7CiB9CkBAIC0xMjQ2LDYgKzEyODIsODYgQEAKIH0KIAogbmFtZXNwYWNlIHsKK3N0ZDo6c3RyaW5nIEFkZFN3aWZ0SW50ZXJmYWNlSW5jbHVkZURpcmVjdG9yaWVzKAorICBjb25zdCBjbUdlbmVyYXRvclRhcmdldCogcm9vdCwgY29uc3QgY21HZW5lcmF0b3JUYXJnZXQqIHRhcmdldCwKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywgY21HZW5lcmF0b3JFeHByZXNzaW9uREFHQ2hlY2tlciogY29udGV4dCkKK3sKKyAgY21HZW5lcmF0b3JFeHByZXNzaW9uREFHQ2hlY2tlciBkYWd7IHRhcmdldC0+R2V0QmFja3RyYWNlKCksIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTd2lmdF9NT0RVTEVfRElSRUNUT1JZIiwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgfTsKKyAgc3dpdGNoIChkYWcuQ2hlY2soKSkgeworICAgIGNhc2UgY21HZW5lcmF0b3JFeHByZXNzaW9uREFHQ2hlY2tlcjo6U0VMRl9SRUZFUkVOQ0U6CisgICAgICBkYWcuUmVwb3J0RXJyb3IobnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAiJDxUQVJHRVRfUFJPUEVSVFk6IiArIHRhcmdldC0+R2V0TmFtZSgpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIsU3dpZnRfTU9EVUxFX0RJUkVDVE9SWT4iKTsKKyAgICAgIHJldHVybiAiIjsKKyAgICBjYXNlIGNtR2VuZXJhdG9yRXhwcmVzc2lvbkRBR0NoZWNrZXI6OkNZQ0xJQ19SRUZFUkVOQ0U6CisgICAgICAvLyBObyBlcnJvci4gV2UganVzdCBza2lwIGN5Y2xpYyByZWZlcmVuY2VzLgorICAgICAgcmV0dXJuICIiOworICAgIGNhc2UgY21HZW5lcmF0b3JFeHByZXNzaW9uREFHQ2hlY2tlcjo6QUxSRUFEWV9TRUVOOgorICAgICAgLy8gTm8gZXJyb3IuIFdlIGhhdmUgYWxyZWFkeSBzZWVuIHRoaXMgdHJhbnNpdGl2ZSBwcm9wZXJ0eS4KKyAgICAgIHJldHVybiAiIjsKKyAgICBjYXNlIGNtR2VuZXJhdG9yRXhwcmVzc2lvbkRBR0NoZWNrZXI6OkRBRzoKKyAgICAgIGJyZWFrOworICB9CisKKyAgc3RkOjpzdHJpbmcgZGlyZWN0b3JpZXM7CisgIGlmIChjb25zdCBhdXRvKiBpbnRlcmZhY2UgPQorICAgICAgICB0YXJnZXQtPkdldExpbmtJbnRlcmZhY2VMaWJyYXJpZXMoY29uZmlnLCByb290LCB0cnVlKSkgeworICAgIGZvciAoY29uc3QgY21MaW5rSXRlbSYgbGlicmFyeSA6IGludGVyZmFjZS0+TGlicmFyaWVzKSB7CisgICAgICBpZiAoY29uc3QgY21HZW5lcmF0b3JUYXJnZXQqIGRlcGVuZGVuY3kgPSBsaWJyYXJ5LlRhcmdldCkgeworICAgICAgICBpZiAoY21Db250YWlucyhkZXBlbmRlbmN5LT5HZXRBbGxDb25maWdDb21waWxlTGFuZ3VhZ2VzKCksICJTd2lmdCIpKSB7CisgICAgICAgICAgc3RkOjpzdHJpbmcgdmFsdWUgPQorICAgICAgICAgICAgZGVwZW5kZW5jeS0+R2V0U2FmZVByb3BlcnR5KCJTd2lmdF9NT0RVTEVfRElSRUNUT1JZIik7CisgICAgICAgICAgaWYgKHZhbHVlLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIHZhbHVlID0KKyAgICAgICAgICAgICAgZGVwZW5kZW5jeS0+R2V0TG9jYWxHZW5lcmF0b3IoKS0+R2V0Q3VycmVudEJpbmFyeURpcmVjdG9yeSgpOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmICghZGlyZWN0b3JpZXMuZW1wdHkoKSkgeworICAgICAgICAgICAgZGlyZWN0b3JpZXMgKz0gIjsiOworICAgICAgICAgIH0KKyAgICAgICAgICBkaXJlY3RvcmllcyArPSB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gZGlyZWN0b3JpZXM7Cit9CisKK3ZvaWQgQWRkU3dpZnRJbXBsaWNpdEluY2x1ZGVEaXJlY3RvcmllcygKKyAgY29uc3QgY21HZW5lcmF0b3JUYXJnZXQqIHRhcmdldCwgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywKKyAgc3RkOjp2ZWN0b3I8RXZhbHVhdGVkVGFyZ2V0UHJvcGVydHlFbnRyeT4mIGVudHJpZXMpCit7CisgIGlmIChjb25zdCBhdXRvKiBsaWJyYXJpZXMgPSB0YXJnZXQtPkdldExpbmtJbXBsZW1lbnRhdGlvbkxpYnJhcmllcyhjb25maWcpKSB7CisgICAgY21HZW5lcmF0b3JFeHByZXNzaW9uREFHQ2hlY2tlciBkYWd7IHRhcmdldC0+R2V0QmFja3RyYWNlKCksIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN3aWZ0X01PRFVMRV9ESVJFQ1RPUlkiLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyIH07CisKKyAgICBmb3IgKGNvbnN0IGNtTGlua0ltcGxJdGVtJiBsaWJyYXJ5IDogbGlicmFyaWVzLT5MaWJyYXJpZXMpIHsKKyAgICAgIGlmIChjb25zdCBjbUdlbmVyYXRvclRhcmdldCogZGVwZW5kZW5jeSA9IGxpYnJhcnkuVGFyZ2V0KSB7CisgICAgICAgIGlmIChjbUNvbnRhaW5zKGRlcGVuZGVuY3ktPkdldEFsbENvbmZpZ0NvbXBpbGVMYW5ndWFnZXMoKSwgIlN3aWZ0IikpIHsKKyAgICAgICAgICBFdmFsdWF0ZWRUYXJnZXRQcm9wZXJ0eUVudHJ5IGVudHJ5eyBsaWJyYXJ5LCBsaWJyYXJ5LkJhY2t0cmFjZSB9OworCisgICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHZhbCA9CisgICAgICAgICAgICAgICAgZGVwZW5kZW5jeS0+R2V0UHJvcGVydHkoIlN3aWZ0X01PRFVMRV9ESVJFQ1RPUlkiKSkgeworICAgICAgICAgICAgZW50cnkuVmFsdWVzLmVtcGxhY2VfYmFjayh2YWwpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbnRyeS5WYWx1ZXMuZW1wbGFjZV9iYWNrKAorICAgICAgICAgICAgICBkZXBlbmRlbmN5LT5HZXRMb2NhbEdlbmVyYXRvcigpLT5HZXRDdXJyZW50QmluYXJ5RGlyZWN0b3J5KCkpOworICAgICAgICAgIH0KKworICAgICAgICAgIGNtRXhwYW5kTGlzdChBZGRTd2lmdEludGVyZmFjZUluY2x1ZGVEaXJlY3Rvcmllcyh0YXJnZXQsIGRlcGVuZGVuY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZywgJmRhZyksCisgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LlZhbHVlcyk7CisKKyAgICAgICAgICBlbnRyaWVzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoZW50cnkpKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfQorCiB2b2lkIEFkZEludGVyZmFjZUVudHJpZXMoY21HZW5lcmF0b3JUYXJnZXQgY29uc3QqIGhlYWRUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QmIGNvbmZpZywgc3RkOjpzdHJpbmcgY29uc3QmIHByb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QmIGxhbmcsCkBAIC0xOTA3LDcgKzIwMjMsNyBAQAogICAgIGlmIChjbUdlbmVyYXRvclRhcmdldDo6SW1wb3J0SW5mbyBjb25zdCogaW5mbyA9CiAgICAgICAgICAgdGhpcy0+R2V0SW1wb3J0SW5mbyhjb25maWcpKSB7CiAgICAgICBpZiAoIWluZm8tPk5vU09OYW1lICYmICFpbmZvLT5TT05hbWUuZW1wdHkoKSkgewotICAgICAgICBpZiAoaW5mby0+U09OYW1lLmZpbmQoIkBycGF0aC8iKSA9PSAwKSB7CisgICAgICAgIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoaW5mby0+U09OYW1lLCAiQHJwYXRoLyIpKSB7CiAgICAgICAgICAgaW5zdGFsbF9uYW1lX2lzX3JwYXRoID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgfSBlbHNlIHsKQEAgLTIwMjQsNyArMjE0MCw3IEBACiAgICAgICAgIHJldHVybiBjbVN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZU5hbWUoaW5mby0+TG9jYXRpb24pOwogICAgICAgfQogICAgICAgLy8gVXNlIHRoZSBzb25hbWUgZ2l2ZW4gaWYgYW55LgotICAgICAgaWYgKGluZm8tPlNPTmFtZS5maW5kKCJAcnBhdGgvIikgPT0gMCkgeworICAgICAgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChpbmZvLT5TT05hbWUsICJAcnBhdGgvIikpIHsKICAgICAgICAgcmV0dXJuIGluZm8tPlNPTmFtZS5zdWJzdHIoNik7CiAgICAgICB9CiAgICAgICByZXR1cm4gaW5mby0+U09OYW1lOwpAQCAtMjIyMywxMSArMjMzOSwxMiBAQAogICBjbVRhcmdldENvbGxlY3RMaW5rTGFuZ3VhZ2VzKGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0KiB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5vcmRlcmVkX3NldDxzdGQ6OnN0cmluZz4mIGxhbmd1YWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUdlbmVyYXRvclRhcmdldCBjb25zdCogaGVhZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUdlbmVyYXRvclRhcmdldCBjb25zdCogaGVhZCwgYm9vbCBzZWNvbmRQYXNzKQogICAgIDogQ29uZmlnKHN0ZDo6bW92ZShjb25maWcpKQogICAgICwgTGFuZ3VhZ2VzKGxhbmd1YWdlcykKICAgICAsIEhlYWRUYXJnZXQoaGVhZCkKICAgICAsIFRhcmdldCh0YXJnZXQpCisgICAgLCBTZWNvbmRQYXNzKHNlY29uZFBhc3MpCiAgIHsKICAgICB0aGlzLT5WaXNpdGVkLmluc2VydCh0YXJnZXQpOwogICB9CkBAIC0yMjY5LDExICsyMzg2LDE0IEBACiAgICAgaWYgKCF0aGlzLT5WaXNpdGVkLmluc2VydChpdGVtLlRhcmdldCkuc2Vjb25kKSB7CiAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNtTGlua0ludGVyZmFjZSBjb25zdCogaWZhY2UgPQotICAgICAgaXRlbS5UYXJnZXQtPkdldExpbmtJbnRlcmZhY2UodGhpcy0+Q29uZmlnLCB0aGlzLT5IZWFkVGFyZ2V0KTsKKyAgICBjbUxpbmtJbnRlcmZhY2UgY29uc3QqIGlmYWNlID0gaXRlbS5UYXJnZXQtPkdldExpbmtJbnRlcmZhY2UoCisgICAgICB0aGlzLT5Db25maWcsIHRoaXMtPkhlYWRUYXJnZXQsIHRoaXMtPlNlY29uZFBhc3MpOwogICAgIGlmICghaWZhY2UpIHsKICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKGlmYWNlLT5IYWRMaW5rTGFuZ3VhZ2VTZW5zaXRpdmVDb25kaXRpb24pIHsKKyAgICAgIHRoaXMtPkhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbiA9IHRydWU7CisgICAgfQogCiAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgbGFuZ3VhZ2UgOiBpZmFjZS0+TGFuZ3VhZ2VzKSB7CiAgICAgICB0aGlzLT5MYW5ndWFnZXMuaW5zZXJ0KGxhbmd1YWdlKTsKQEAgLTIyODQsMTIgKzI0MDQsMTkgQEAKICAgICB9CiAgIH0KIAorICBib29sIEdldEhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbigpCisgIHsKKyAgICByZXR1cm4gSGFkTGlua0xhbmd1YWdlU2Vuc2l0aXZlQ29uZGl0aW9uOworICB9CisKIHByaXZhdGU6CiAgIHN0ZDo6c3RyaW5nIENvbmZpZzsKICAgc3RkOjp1bm9yZGVyZWRfc2V0PHN0ZDo6c3RyaW5nPiYgTGFuZ3VhZ2VzOwogICBjbUdlbmVyYXRvclRhcmdldCBjb25zdCogSGVhZFRhcmdldDsKICAgY29uc3QgY21HZW5lcmF0b3JUYXJnZXQqIFRhcmdldDsKICAgc3RkOjpzZXQ8Y21HZW5lcmF0b3JUYXJnZXQgY29uc3QqPiBWaXNpdGVkOworICBib29sIFNlY29uZFBhc3M7CisgIGJvb2wgSGFkTGlua0xhbmd1YWdlU2Vuc2l0aXZlQ29uZGl0aW9uID0gZmFsc2U7CiB9OwogCiBjbUdlbmVyYXRvclRhcmdldDo6TGlua0Nsb3N1cmUgY29uc3QqIGNtR2VuZXJhdG9yVGFyZ2V0OjpHZXRMaW5rQ2xvc3VyZSgKQEAgLTIzMjAsNyArMjQ0Nyw3IEBACiAgIHsKICAgICB0aGlzLT5HRyA9IHRoaXMtPlRhcmdldC0+R2V0TG9jYWxHZW5lcmF0b3IoKS0+R2V0R2xvYmFsR2VuZXJhdG9yKCk7CiAgIH0KLSAgdm9pZCBDb25zaWRlcihjb25zdCBjaGFyKiBsYW5nKQorICB2b2lkIENvbnNpZGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBsYW5nKQogICB7CiAgICAgaW50IHByZWZlcmVuY2UgPSB0aGlzLT5HRy0+R2V0TGlua2VyUHJlZmVyZW5jZShsYW5nKTsKICAgICBpZiAocHJlZmVyZW5jZSA+IHRoaXMtPlByZWZlcmVuY2UpIHsKQEAgLTIzNTMsNDAgKzI0ODAsMzYgQEAKICAgfQogfTsKIAotdm9pZCBjbUdlbmVyYXRvclRhcmdldDo6Q29tcHV0ZUxpbmtDbG9zdXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua0Nsb3N1cmUmIGxjKSBjb25zdAorYm9vbCBjbUdlbmVyYXRvclRhcmdldDo6Q29tcHV0ZUxpbmtDbG9zdXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua0Nsb3N1cmUmIGxjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2Vjb25kUGFzcykgY29uc3QKIHsKICAgLy8gR2V0IGxhbmd1YWdlcyBidWlsdCBpbiB0aGlzIHRhcmdldC4KICAgc3RkOjp1bm9yZGVyZWRfc2V0PHN0ZDo6c3RyaW5nPiBsYW5ndWFnZXM7Ci0gIGNtTGlua0ltcGxlbWVudGF0aW9uIGNvbnN0KiBpbXBsID0gdGhpcy0+R2V0TGlua0ltcGxlbWVudGF0aW9uKGNvbmZpZyk7CisgIGNtTGlua0ltcGxlbWVudGF0aW9uIGNvbnN0KiBpbXBsID0KKyAgICB0aGlzLT5HZXRMaW5rSW1wbGVtZW50YXRpb24oY29uZmlnLCBzZWNvbmRQYXNzKTsKICAgYXNzZXJ0KGltcGwpOwotICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBsaSA6IGltcGwtPkxhbmd1YWdlcykgewotICAgIGxhbmd1YWdlcy5pbnNlcnQobGkpOwotICB9CisgIGxhbmd1YWdlcy5pbnNlcnQoaW1wbC0+TGFuZ3VhZ2VzLmNiZWdpbigpLCBpbXBsLT5MYW5ndWFnZXMuY2VuZCgpKTsKIAogICAvLyBBZGQgaW50ZXJmYWNlIGxhbmd1YWdlcyBmcm9tIGxpbmtlZCB0YXJnZXRzLgotICBjbVRhcmdldENvbGxlY3RMaW5rTGFuZ3VhZ2VzIGNsbCh0aGlzLCBjb25maWcsIGxhbmd1YWdlcywgdGhpcyk7CisgIC8vIGNtVGFyZ2V0Q29sbGVjdExpbmtMYW5ndWFnZXMgY2xsKHRoaXMsIGNvbmZpZywgbGFuZ3VhZ2VzLCB0aGlzLAorICAvLyBzZWNvbmRQYXNzKTsKKyAgY21UYXJnZXRDb2xsZWN0TGlua0xhbmd1YWdlcyBjbGwodGhpcywgY29uZmlnLCBsYW5ndWFnZXMsIHRoaXMsIHNlY29uZFBhc3MpOwogICBmb3IgKGNtTGlua0ltcGxJdGVtIGNvbnN0JiBsaWIgOiBpbXBsLT5MaWJyYXJpZXMpIHsKICAgICBjbGwuVmlzaXQobGliKTsKICAgfQogCiAgIC8vIFN0b3JlIHRoZSB0cmFuc2l0aXZlIGNsb3N1cmUgb2YgbGFuZ3VhZ2VzLgotICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBsYW5nIDogbGFuZ3VhZ2VzKSB7Ci0gICAgbGMuTGFuZ3VhZ2VzLnB1c2hfYmFjayhsYW5nKTsKLSAgfQorICBjbTo6YXBwZW5kKGxjLkxhbmd1YWdlcywgbGFuZ3VhZ2VzKTsKIAogICAvLyBDaG9vc2UgdGhlIGxhbmd1YWdlIHdob3NlIGxpbmtlciBzaG91bGQgYmUgdXNlZC4KLSAgaWYgKHRoaXMtPkdldFByb3BlcnR5KCJIQVNfQ1hYIikpIHsKLSAgICBsYy5MaW5rZXJMYW5ndWFnZSA9ICJDWFgiOwotICB9IGVsc2UgaWYgKGNvbnN0IGNoYXIqIGxpbmtlckxhbmcgPSB0aGlzLT5HZXRQcm9wZXJ0eSgiTElOS0VSX0xBTkdVQUdFIikpIHsKLSAgICBsYy5MaW5rZXJMYW5ndWFnZSA9IGxpbmtlckxhbmc7Ci0gIH0gZWxzZSB7CisgIGlmIChzZWNvbmRQYXNzIHx8IGxjLkxpbmtlckxhbmd1YWdlLmVtcHR5KCkpIHsKICAgICAvLyBGaW5kIHRoZSBsYW5ndWFnZSB3aXRoIHRoZSBoaWdoZXN0IHByZWZlcmVuY2UgdmFsdWUuCiAgICAgY21UYXJnZXRTZWxlY3RMaW5rZXIgdHNsKHRoaXMpOwogCiAgICAgLy8gRmlyc3Qgc2VsZWN0IGZyb20gdGhlIGxhbmd1YWdlcyBjb21waWxlZCBkaXJlY3RseSBpbiB0aGlzIHRhcmdldC4KICAgICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBsIDogaW1wbC0+TGFuZ3VhZ2VzKSB7Ci0gICAgICB0c2wuQ29uc2lkZXIobC5jX3N0cigpKTsKKyAgICAgIHRzbC5Db25zaWRlcihsKTsKICAgICB9CiAKICAgICAvLyBOb3cgY29uc2lkZXIgbGFuZ3VhZ2VzIHRoYXQgcHJvcGFnYXRlIGZyb20gbGlua2VkIHRhcmdldHMuCkBAIC0yMzk0LDEyICsyNTE3LDUwIEBACiAgICAgICBzdGQ6OnN0cmluZyBwcm9wYWdhdGVzID0KICAgICAgICAgIkNNQUtFXyIgKyBsYW5nICsgIl9MSU5LRVJfUFJFRkVSRU5DRV9QUk9QQUdBVEVTIjsKICAgICAgIGlmICh0aGlzLT5NYWtlZmlsZS0+SXNPbihwcm9wYWdhdGVzKSkgewotICAgICAgICB0c2wuQ29uc2lkZXIobGFuZy5jX3N0cigpKTsKKyAgICAgICAgdHNsLkNvbnNpZGVyKGxhbmcpOwogICAgICAgfQogICAgIH0KIAogICAgIGxjLkxpbmtlckxhbmd1YWdlID0gdHNsLkNob29zZSgpOwogICB9CisKKyAgcmV0dXJuIGltcGwtPkhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbiB8fAorICAgIGNsbC5HZXRIYWRMaW5rTGFuZ3VhZ2VTZW5zaXRpdmVDb25kaXRpb24oKTsKK30KKwordm9pZCBjbUdlbmVyYXRvclRhcmdldDo6Q29tcHV0ZUxpbmtDbG9zdXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua0Nsb3N1cmUmIGxjKSBjb25zdAoreworICBib29sIHNlY29uZFBhc3MgPSBmYWxzZTsKKworICB7CisgICAgTGlua0Nsb3N1cmUgbGlua0Nsb3N1cmU7CisgICAgbGlua0Nsb3N1cmUuTGlua2VyTGFuZ3VhZ2UgPSB0aGlzLT5MaW5rZXJMYW5ndWFnZTsKKworICAgIC8vIEdldCBsYW5ndWFnZXMgYnVpbHQgaW4gdGhpcyB0YXJnZXQuCisgICAgc2Vjb25kUGFzcyA9IHRoaXMtPkNvbXB1dGVMaW5rQ2xvc3VyZShjb25maWcsIGxpbmtDbG9zdXJlLCBmYWxzZSk7CisgICAgdGhpcy0+TGlua2VyTGFuZ3VhZ2UgPSBsaW5rQ2xvc3VyZS5MaW5rZXJMYW5ndWFnZTsKKyAgICBpZiAoIXNlY29uZFBhc3MpIHsKKyAgICAgIGxjID0gc3RkOjptb3ZlKGxpbmtDbG9zdXJlKTsKKyAgICB9CisgIH0KKworICBpZiAoc2Vjb25kUGFzcykgeworICAgIExpbmtDbG9zdXJlIGxpbmtDbG9zdXJlOworCisgICAgdGhpcy0+Q29tcHV0ZUxpbmtDbG9zdXJlKGNvbmZpZywgbGlua0Nsb3N1cmUsIHNlY29uZFBhc3MpOworICAgIGxjID0gc3RkOjptb3ZlKGxpbmtDbG9zdXJlKTsKKworICAgIC8vIGxpbmtlciBsYW5ndWFnZSBtdXN0IG5vdCBiZSBjaGFuZ2VkIGJldHdlZW4gdGhlIHR3byBwYXNzZXMKKyAgICBpZiAodGhpcy0+TGlua2VyTGFuZ3VhZ2UgIT0gbGMuTGlua2VyTGFuZ3VhZ2UpIHsKKyAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBlOworICAgICAgZSA8PCAiRXZhbHVhdGlvbiBvZiAkPExJTktfTEFOR1VBR0U6Li4uPiBvciAkPExJTktfTEFORF9BTkRfSUQ6Li4uPiAiCisgICAgICAgICAgICJjaGFuZ2VzXG50aGUgbGlua2VyIGxhbmd1YWdlIGZvciB0YXJnZXQgXCIiCisgICAgICAgIDw8IHRoaXMtPkdldE5hbWUoKSA8PCAiXCIgKGZyb20gJyIgPDwgdGhpcy0+TGlua2VyTGFuZ3VhZ2UgPDwgIicgdG8gJyIKKyAgICAgICAgPDwgbGMuTGlua2VyTGFuZ3VhZ2UgPDwgIicpIHdoaWNoIGlzIGludmFsaWQuIjsKKyAgICAgIGNtU3lzdGVtVG9vbHM6OkVycm9yKGUuc3RyKCkpOworICAgIH0KKyAgfQogfQogCiB2b2lkIGNtR2VuZXJhdG9yVGFyZ2V0OjpHZXRGdWxsTmFtZUNvbXBvbmVudHMoCkBAIC0zMDk2LDYgKzMyNTcsMTAgQEAKICAgICBFdmFsdWF0ZVRhcmdldFByb3BlcnR5RW50cmllcyh0aGlzLCBjb25maWcsIGxhbmcsICZkYWdDaGVja2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPkluY2x1ZGVEaXJlY3Rvcmllc0VudHJpZXMpOwogCisgIGlmIChsYW5nID09ICJTd2lmdCIpIHsKKyAgICBBZGRTd2lmdEltcGxpY2l0SW5jbHVkZURpcmVjdG9yaWVzKHRoaXMsIGNvbmZpZywgZW50cmllcyk7CisgIH0KKwogICBBZGRJbnRlcmZhY2VFbnRyaWVzKHRoaXMsIGNvbmZpZywgIklOVEVSRkFDRV9JTkNMVURFX0RJUkVDVE9SSUVTIiwgbGFuZywKICAgICAgICAgICAgICAgICAgICAgICAmZGFnQ2hlY2tlciwgZW50cmllcyk7CiAKQEAgLTM2MTYsOSArMzc4MSwxNiBAQAogICBpZiAoaW5zZXJ0ZWQuc2Vjb25kKSB7CiAgICAgc3RkOjpzdHJpbmcmIGNyZWF0ZU9wdGlvbkxpc3QgPSBpbnNlcnRlZC5maXJzdC0+c2Vjb25kOwogCisgICAgaWYgKHRoaXMtPkdldFByb3BlcnR5QXNCb29sKCJQQ0hfV0FSTl9JTlZBTElEIikpIHsKKyAgICAgIGNyZWF0ZU9wdGlvbkxpc3QgPSB0aGlzLT5NYWtlZmlsZS0+R2V0U2FmZURlZmluaXRpb24oCisgICAgICAgIGNtU3RyQ2F0KCJDTUFLRV8iLCBsYW5ndWFnZSwgIl9DT01QSUxFX09QVElPTlNfSU5WQUxJRF9QQ0giKSk7CisgICAgfQorCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgY3JlYXRlT3B0VmFyID0KICAgICAgIGNtU3RyQ2F0KCJDTUFLRV8iLCBsYW5ndWFnZSwgIl9DT01QSUxFX09QVElPTlNfQ1JFQVRFX1BDSCIpOwotICAgIGNyZWF0ZU9wdGlvbkxpc3QgPSB0aGlzLT5NYWtlZmlsZS0+R2V0U2FmZURlZmluaXRpb24oY3JlYXRlT3B0VmFyKTsKKworICAgIGNyZWF0ZU9wdGlvbkxpc3QgPSBjbVN0ckNhdCgKKyAgICAgIGNyZWF0ZU9wdGlvbkxpc3QsICI7IiwgdGhpcy0+TWFrZWZpbGUtPkdldFNhZmVEZWZpbml0aW9uKGNyZWF0ZU9wdFZhcikpOwogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgcGNoSGVhZGVyID0gdGhpcy0+R2V0UGNoSGVhZGVyKGNvbmZpZywgbGFuZ3VhZ2UpOwogICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBjaEZpbGUgPSB0aGlzLT5HZXRQY2hGaWxlKGNvbmZpZywgbGFuZ3VhZ2UpOwpAQCAtMzYzNyw5ICszODA5LDE2IEBACiAgIGlmIChpbnNlcnRlZC5zZWNvbmQpIHsKICAgICBzdGQ6OnN0cmluZyYgdXNlT3B0aW9uTGlzdCA9IGluc2VydGVkLmZpcnN0LT5zZWNvbmQ7CiAKKyAgICBpZiAodGhpcy0+R2V0UHJvcGVydHlBc0Jvb2woIlBDSF9XQVJOX0lOVkFMSUQiKSkgeworICAgICAgdXNlT3B0aW9uTGlzdCA9IHRoaXMtPk1ha2VmaWxlLT5HZXRTYWZlRGVmaW5pdGlvbigKKyAgICAgICAgY21TdHJDYXQoIkNNQUtFXyIsIGxhbmd1YWdlLCAiX0NPTVBJTEVfT1BUSU9OU19JTlZBTElEX1BDSCIpKTsKKyAgICB9CisKICAgICBjb25zdCBzdGQ6OnN0cmluZyB1c2VPcHRWYXIgPQogICAgICAgY21TdHJDYXQoIkNNQUtFXyIsIGxhbmd1YWdlLCAiX0NPTVBJTEVfT1BUSU9OU19VU0VfUENIIik7Ci0gICAgdXNlT3B0aW9uTGlzdCA9IHRoaXMtPk1ha2VmaWxlLT5HZXRTYWZlRGVmaW5pdGlvbih1c2VPcHRWYXIpOworCisgICAgdXNlT3B0aW9uTGlzdCA9IGNtU3RyQ2F0KHVzZU9wdGlvbkxpc3QsICI7IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+TWFrZWZpbGUtPkdldFNhZmVEZWZpbml0aW9uKHVzZU9wdFZhcikpOwogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgcGNoSGVhZGVyID0gdGhpcy0+R2V0UGNoSGVhZGVyKGNvbmZpZywgbGFuZ3VhZ2UpOwogICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBjaEZpbGUgPSB0aGlzLT5HZXRQY2hGaWxlKGNvbmZpZywgbGFuZ3VhZ2UpOwpAQCAtNDE4OCw4ICs0MzY3LDggQEAKICAgICAgIHRhcmdldE5hbWVzLlJlYWwgKz0gdGhpcy0+R2V0RnJhbWV3b3JrVmVyc2lvbigpOwogICAgICAgdGFyZ2V0TmFtZXMuUmVhbCArPSAiLyI7CiAgICAgfQotICAgIHRhcmdldE5hbWVzLlJlYWwgKz0gdGFyZ2V0TmFtZXMuQmFzZTsKLSAgICB0YXJnZXROYW1lcy5TaGFyZWRPYmplY3QgPSB0YXJnZXROYW1lcy5SZWFsOworICAgIHRhcmdldE5hbWVzLlJlYWwgKz0gdGFyZ2V0TmFtZXMuQmFzZSArIHN1ZmZpeDsKKyAgICB0YXJnZXROYW1lcy5TaGFyZWRPYmplY3QgPSB0YXJnZXROYW1lcy5SZWFsICsgc3VmZml4OwogICB9IGVsc2UgewogICAgIC8vIFRoZSBsaWJyYXJ5J3Mgc29uYW1lLgogICAgIHRoaXMtPkNvbXB1dGVWZXJzaW9uZWROYW1lKHRhcmdldE5hbWVzLlNoYXJlZE9iamVjdCwgcHJlZml4LApAQCAtNDM2NCw3ICs0NTQzLDE1IEBACiAgIG91dEJhc2UgKz0gdGhpcy0+R2V0T3V0cHV0TmFtZShjb25maWcsIGFydGlmYWN0KTsKIAogICAvLyBBcHBlbmQgdGhlIHBlci1jb25maWd1cmF0aW9uIHBvc3RmaXguCi0gIG91dEJhc2UgKz0gY29uZmlnUG9zdGZpeDsKKyAgLy8gV2hlbiB1c2luZyBYY29kZSwgdGhlIHBvc3RmaXggc2hvdWxkIGJlIHBhcnQgb2YgdGhlIHN1ZmZpeCByYXRoZXIgdGhhbiB0aGUKKyAgLy8gYmFzZSwgYmVjYXVzZSB0aGUgc3VmZml4IGVuZHMgdXAgYmVpbmcgdXNlZCBpbiBYY29kZSdzIEVYRUNVVEFCTEVfU1VGRklYCisgIC8vIGF0dHJpYnV0ZS4KKyAgaWYgKHRoaXMtPklzRnJhbWV3b3JrT25BcHBsZSgpICYmCisgICAgICBHZXRHbG9iYWxHZW5lcmF0b3IoKS0+R2V0TmFtZSgpID09ICJYY29kZSIpIHsKKyAgICB0YXJnZXRTdWZmaXggPSBjb25maWdQb3N0Zml4LmNfc3RyKCk7CisgIH0gZWxzZSB7CisgICAgb3V0QmFzZSArPSBjb25maWdQb3N0Zml4OworICB9CiAKICAgLy8gTmFtZSBzaGFyZWQgbGlicmFyaWVzIHdpdGggdGhlaXIgdmVyc2lvbiBudW1iZXIgb24gc29tZSBwbGF0Zm9ybXMuCiAgIGlmIChjb25zdCBjaGFyKiBzb3ZlcnNpb24gPSB0aGlzLT5HZXRQcm9wZXJ0eSgiU09WRVJTSU9OIikpIHsKQEAgLTU0OTIsNyArNTY3OSw4IEBACiB2b2lkIGNtR2VuZXJhdG9yVGFyZ2V0OjpFeHBhbmRMaW5rSXRlbXMoCiAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBwcm9wLCBzdGQ6OnN0cmluZyBjb25zdCYgdmFsdWUsIHN0ZDo6c3RyaW5nIGNvbnN0JiBjb25maWcsCiAgIGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0KiBoZWFkVGFyZ2V0LCBib29sIHVzYWdlX3JlcXVpcmVtZW50c19vbmx5LAotICBzdGQ6OnZlY3RvcjxjbUxpbmtJdGVtPiYgaXRlbXMsIGJvb2wmIGhhZEhlYWRTZW5zaXRpdmVDb25kaXRpb24pIGNvbnN0CisgIHN0ZDo6dmVjdG9yPGNtTGlua0l0ZW0+JiBpdGVtcywgYm9vbCYgaGFkSGVhZFNlbnNpdGl2ZUNvbmRpdGlvbiwKKyAgYm9vbCYgaGFkTGlua0xhbmd1YWdlU2Vuc2l0aXZlQ29uZGl0aW9uKSBjb25zdAogewogICAvLyBLZWVwIHRoaXMgbG9naWMgaW4gc3luYyB3aXRoIENvbXB1dGVMaW5rSW1wbGVtZW50YXRpb25MaWJyYXJpZXMuCiAgIGNtR2VuZXJhdG9yRXhwcmVzc2lvbiBnZTsKQEAgLTU1MDQsMTkgKzU2OTIsMjggQEAKICAgfQogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGliczsKICAgc3RkOjp1bmlxdWVfcHRyPGNtQ29tcGlsZWRHZW5lcmF0b3JFeHByZXNzaW9uPiBjZ2UgPSBnZS5QYXJzZSh2YWx1ZSk7Ci0gIGNtRXhwYW5kTGlzdCgKLSAgICBjZ2UtPkV2YWx1YXRlKHRoaXMtPkxvY2FsR2VuZXJhdG9yLCBjb25maWcsIGhlYWRUYXJnZXQsICZkYWdDaGVja2VyLCB0aGlzKSwKLSAgICBsaWJzKTsKKyAgY21FeHBhbmRMaXN0KGNnZS0+RXZhbHVhdGUodGhpcy0+TG9jYWxHZW5lcmF0b3IsIGNvbmZpZywgaGVhZFRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhZ0NoZWNrZXIsIHRoaXMsIGhlYWRUYXJnZXQtPkxpbmtlckxhbmd1YWdlKSwKKyAgICAgICAgICAgICAgIGxpYnMpOwogICB0aGlzLT5Mb29rdXBMaW5rSXRlbXMobGlicywgY2dlLT5HZXRCYWNrdHJhY2UoKSwgaXRlbXMpOwogICBoYWRIZWFkU2Vuc2l0aXZlQ29uZGl0aW9uID0gY2dlLT5HZXRIYWRIZWFkU2Vuc2l0aXZlQ29uZGl0aW9uKCk7CisgIGhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbiA9CisgICAgY2dlLT5HZXRIYWRMaW5rTGFuZ3VhZ2VTZW5zaXRpdmVDb25kaXRpb24oKTsKIH0KIAogY21MaW5rSW50ZXJmYWNlIGNvbnN0KiBjbUdlbmVyYXRvclRhcmdldDo6R2V0TGlua0ludGVyZmFjZSgKICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywgY21HZW5lcmF0b3JUYXJnZXQgY29uc3QqIGhlYWQpIGNvbnN0CiB7CisgIHJldHVybiB0aGlzLT5HZXRMaW5rSW50ZXJmYWNlKGNvbmZpZywgaGVhZCwgZmFsc2UpOworfQorCitjbUxpbmtJbnRlcmZhY2UgY29uc3QqIGNtR2VuZXJhdG9yVGFyZ2V0OjpHZXRMaW5rSW50ZXJmYWNlKAorICBjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnLCBjbUdlbmVyYXRvclRhcmdldCBjb25zdCogaGVhZCwKKyAgYm9vbCBzZWNvbmRQYXNzKSBjb25zdAorewogICAvLyBJbXBvcnRlZCB0YXJnZXRzIGhhdmUgdGhlaXIgb3duIGxpbmsgaW50ZXJmYWNlLgogICBpZiAodGhpcy0+SXNJbXBvcnRlZCgpKSB7Ci0gICAgcmV0dXJuIHRoaXMtPkdldEltcG9ydExpbmtJbnRlcmZhY2UoY29uZmlnLCBoZWFkLCBmYWxzZSk7CisgICAgcmV0dXJuIHRoaXMtPkdldEltcG9ydExpbmtJbnRlcmZhY2UoY29uZmlnLCBoZWFkLCBmYWxzZSwgc2Vjb25kUGFzcyk7CiAgIH0KIAogICAvLyBMaW5rIGludGVyZmFjZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIGV4ZWN1dGFibGVzIHRoYXQgZG8gbm90CkBAIC01NTI5LDYgKzU3MjYsMTAgQEAKICAgLy8gTG9va3VwIGFueSBleGlzdGluZyBsaW5rIGludGVyZmFjZSBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgogICBjbUhlYWRUb0xpbmtJbnRlcmZhY2VNYXAmIGhtID0gdGhpcy0+R2V0SGVhZFRvTGlua0ludGVyZmFjZU1hcChjb25maWcpOwogCisgIGlmIChzZWNvbmRQYXNzKSB7CisgICAgaG0uZXJhc2UoaGVhZCk7CisgIH0KKwogICAvLyBJZiB0aGUgbGluayBpbnRlcmZhY2UgZG9lcyBub3QgZGVwZW5kIG9uIHRoZSBoZWFkIHRhcmdldAogICAvLyB0aGVuIHJldHVybiB0aGUgb25lIHdlIGNvbXB1dGVkIGZpcnN0LgogICBpZiAoIWhtLmVtcHR5KCkgJiYgIWhtLmJlZ2luKCktPnNlY29uZC5IYWRIZWFkU2Vuc2l0aXZlQ29uZGl0aW9uKSB7CkBAIC01NTQzLDcgKzU3NDQsNyBAQAogICBpZiAoIWlmYWNlLkFsbERvbmUpIHsKICAgICBpZmFjZS5BbGxEb25lID0gdHJ1ZTsKICAgICBpZiAoaWZhY2UuRXhpc3RzKSB7Ci0gICAgICB0aGlzLT5Db21wdXRlTGlua0ludGVyZmFjZShjb25maWcsIGlmYWNlLCBoZWFkKTsKKyAgICAgIHRoaXMtPkNvbXB1dGVMaW5rSW50ZXJmYWNlKGNvbmZpZywgaWZhY2UsIGhlYWQsIHNlY29uZFBhc3MpOwogICAgIH0KICAgfQogCkBAIC01NTU0LDYgKzU3NTUsMTMgQEAKICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywgY21PcHRpb25hbExpbmtJbnRlcmZhY2UmIGlmYWNlLAogICBjbUdlbmVyYXRvclRhcmdldCBjb25zdCogaGVhZFRhcmdldCkgY29uc3QKIHsKKyAgdGhpcy0+Q29tcHV0ZUxpbmtJbnRlcmZhY2UoY29uZmlnLCBpZmFjZSwgaGVhZFRhcmdldCwgZmFsc2UpOworfQorCit2b2lkIGNtR2VuZXJhdG9yVGFyZ2V0OjpDb21wdXRlTGlua0ludGVyZmFjZSgKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywgY21PcHRpb25hbExpbmtJbnRlcmZhY2UmIGlmYWNlLAorICBjbUdlbmVyYXRvclRhcmdldCBjb25zdCogaGVhZFRhcmdldCwgYm9vbCBzZWNvbmRQYXNzKSBjb25zdAorewogICBpZiAoaWZhY2UuRXhwbGljaXQpIHsKICAgICBpZiAodGhpcy0+R2V0VHlwZSgpID09IGNtU3RhdGVFbnVtczo6U0hBUkVEX0xJQlJBUlkgfHwKICAgICAgICAgdGhpcy0+R2V0VHlwZSgpID09IGNtU3RhdGVFbnVtczo6U1RBVElDX0xJQlJBUlkgfHwKQEAgLTU1NjUsNyArNTc3Myw4IEBACiAgICAgICAgIGVtaXR0ZWQuaW5zZXJ0KGxpYik7CiAgICAgICB9CiAgICAgICBpZiAodGhpcy0+R2V0VHlwZSgpICE9IGNtU3RhdGVFbnVtczo6SU5URVJGQUNFX0xJQlJBUlkpIHsKLSAgICAgICAgY21MaW5rSW1wbGVtZW50YXRpb24gY29uc3QqIGltcGwgPSB0aGlzLT5HZXRMaW5rSW1wbGVtZW50YXRpb24oY29uZmlnKTsKKyAgICAgICAgY21MaW5rSW1wbGVtZW50YXRpb24gY29uc3QqIGltcGwgPQorICAgICAgICAgIHRoaXMtPkdldExpbmtJbXBsZW1lbnRhdGlvbihjb25maWcsIHNlY29uZFBhc3MpOwogICAgICAgICBmb3IgKGNtTGlua0ltcGxJdGVtIGNvbnN0JiBsaWIgOiBpbXBsLT5MaWJyYXJpZXMpIHsKICAgICAgICAgICBpZiAoZW1pdHRlZC5pbnNlcnQobGliKS5zZWNvbmQpIHsKICAgICAgICAgICAgIGlmIChsaWIuVGFyZ2V0KSB7CkBAIC01NTk1LDcgKzU4MDQsNyBAQAogICBpZiAodGhpcy0+TGlua0xhbmd1YWdlUHJvcGFnYXRlc1RvRGVwZW5kZW50cygpKSB7CiAgICAgLy8gVGFyZ2V0cyB1c2luZyB0aGlzIGFyY2hpdmUgbmVlZCBpdHMgbGFuZ3VhZ2UgcnVudGltZSBsaWJyYXJpZXMuCiAgICAgaWYgKGNtTGlua0ltcGxlbWVudGF0aW9uIGNvbnN0KiBpbXBsID0KLSAgICAgICAgICB0aGlzLT5HZXRMaW5rSW1wbGVtZW50YXRpb24oY29uZmlnKSkgeworICAgICAgICAgIHRoaXMtPkdldExpbmtJbXBsZW1lbnRhdGlvbihjb25maWcsIHNlY29uZFBhc3MpKSB7CiAgICAgICBpZmFjZS5MYW5ndWFnZXMgPSBpbXBsLT5MYW5ndWFnZXM7CiAgICAgfQogICB9CkBAIC01OTkxLDcgKzYyMDAsOCBAQAogICAgIC8vIFRoZSBpbnRlcmZhY2UgbGlicmFyaWVzIGhhdmUgYmVlbiBleHBsaWNpdGx5IHNldC4KICAgICB0aGlzLT5FeHBhbmRMaW5rSXRlbXMobGlua0lmYWNlUHJvcCwgZXhwbGljaXRMaWJyYXJpZXMsIGNvbmZpZywgaGVhZFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2VfcmVxdWlyZW1lbnRzX29ubHksIGlmYWNlLkxpYnJhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWZhY2UuSGFkSGVhZFNlbnNpdGl2ZUNvbmRpdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmYWNlLkhhZEhlYWRTZW5zaXRpdmVDb25kaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmYWNlLkhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbik7CiAgIH0gZWxzZSBpZiAoIWNtcDAwMjJORVcpCiAgIC8vIElmIENNUDAwMjIgaXMgTkVXIHRoZW4gdGhlIHBsYWluIHRsbCBzaWduYXR1cmUgc2V0cyB0aGUKICAgLy8gSU5URVJGQUNFX0xJTktfTElCUkFSSUVTLCBzbyBpZiB3ZSBnZXQgaGVyZSB0aGVuIHRoZSBwcm9qZWN0CkBAIC02MDExLDkgKzYyMjEsMTEgQEAKICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBuZXdQcm9wID0gIklOVEVSRkFDRV9MSU5LX0xJQlJBUklFUyI7CiAgICAgICBpZiAoY29uc3QgY2hhciogbmV3RXhwbGljaXRMaWJyYXJpZXMgPSB0aGlzLT5HZXRQcm9wZXJ0eShuZXdQcm9wKSkgewogICAgICAgICBib29sIGhhZEhlYWRTZW5zaXRpdmVDb25kaXRpb25EdW1teSA9IGZhbHNlOworICAgICAgICBib29sIGhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbkR1bW15ID0gZmFsc2U7CiAgICAgICAgIHRoaXMtPkV4cGFuZExpbmtJdGVtcyhuZXdQcm9wLCBuZXdFeHBsaWNpdExpYnJhcmllcywgY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZFRhcmdldCwgdXNhZ2VfcmVxdWlyZW1lbnRzX29ubHksIGlmYWNlTGlicywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhZEhlYWRTZW5zaXRpdmVDb25kaXRpb25EdW1teSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWRIZWFkU2Vuc2l0aXZlQ29uZGl0aW9uRHVtbXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYWRMaW5rTGFuZ3VhZ2VTZW5zaXRpdmVDb25kaXRpb25EdW1teSk7CiAgICAgICB9CiAgICAgICBpZiAoaWZhY2VMaWJzICE9IGlmYWNlLkxpYnJhcmllcykgewogICAgICAgICBzdGQ6OnN0cmluZyBvbGRMaWJyYXJpZXMgPSBjbUpvaW4oaW1wbC0+TGlicmFyaWVzLCAiOyIpOwpAQCAtNjA1MCw3ICs2MjYyLDcgQEAKIAogY29uc3QgY21MaW5rSW50ZXJmYWNlKiBjbUdlbmVyYXRvclRhcmdldDo6R2V0SW1wb3J0TGlua0ludGVyZmFjZSgKICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywgY21HZW5lcmF0b3JUYXJnZXQgY29uc3QqIGhlYWRUYXJnZXQsCi0gIGJvb2wgdXNhZ2VfcmVxdWlyZW1lbnRzX29ubHkpIGNvbnN0CisgIGJvb2wgdXNhZ2VfcmVxdWlyZW1lbnRzX29ubHksIGJvb2wgc2Vjb25kUGFzcykgY29uc3QKIHsKICAgY21HZW5lcmF0b3JUYXJnZXQ6OkltcG9ydEluZm8gY29uc3QqIGluZm8gPSB0aGlzLT5HZXRJbXBvcnRJbmZvKGNvbmZpZyk7CiAgIGlmICghaW5mbykgewpAQCAtNjA2Myw2ICs2Mjc1LDEwIEBACiAgICAgICAgPyB0aGlzLT5HZXRIZWFkVG9MaW5rSW50ZXJmYWNlVXNhZ2VSZXF1aXJlbWVudHNNYXAoY29uZmlnKQogICAgICAgIDogdGhpcy0+R2V0SGVhZFRvTGlua0ludGVyZmFjZU1hcChjb25maWcpKTsKIAorICBpZiAoc2Vjb25kUGFzcykgeworICAgIGhtLmVyYXNlKGhlYWRUYXJnZXQpOworICB9CisKICAgLy8gSWYgdGhlIGxpbmsgaW50ZXJmYWNlIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgaGVhZCB0YXJnZXQKICAgLy8gdGhlbiByZXR1cm4gdGhlIG9uZSB3ZSBjb21wdXRlZCBmaXJzdC4KICAgaWYgKCFobS5lbXB0eSgpICYmICFobS5iZWdpbigpLT5zZWNvbmQuSGFkSGVhZFNlbnNpdGl2ZUNvbmRpdGlvbikgewpAQCAtNjA3Niw3ICs2MjkyLDggQEAKICAgICBjbUV4cGFuZExpc3QoaW5mby0+TGFuZ3VhZ2VzLCBpZmFjZS5MYW5ndWFnZXMpOwogICAgIHRoaXMtPkV4cGFuZExpbmtJdGVtcyhpbmZvLT5MaWJyYXJpZXNQcm9wLCBpbmZvLT5MaWJyYXJpZXMsIGNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZFRhcmdldCwgdXNhZ2VfcmVxdWlyZW1lbnRzX29ubHksIGlmYWNlLkxpYnJhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWZhY2UuSGFkSGVhZFNlbnNpdGl2ZUNvbmRpdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmYWNlLkhhZEhlYWRTZW5zaXRpdmVDb25kaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmYWNlLkhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbik7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGRlcHMgPSBjbUV4cGFuZGVkTGlzdChpbmZvLT5TaGFyZWREZXBzKTsKICAgICB0aGlzLT5Mb29rdXBMaW5rSXRlbXMoZGVwcywgY21MaXN0RmlsZUJhY2t0cmFjZSgpLCBpZmFjZS5TaGFyZWREZXBzKTsKICAgfQpAQCAtNjEzNSw3ICs2MzUyLDcgQEAKICAgY29uc3QgY2hhciogbG9jID0gbnVsbHB0cjsKICAgY29uc3QgY2hhciogaW1wID0gbnVsbHB0cjsKICAgc3RkOjpzdHJpbmcgc3VmZml4OwotICBpZiAoIXRoaXMtPlRhcmdldC0+R2V0TWFwcGVkQ29uZmlnKGRlc2lyZWRfY29uZmlnLCAmbG9jLCAmaW1wLCBzdWZmaXgpKSB7CisgIGlmICghdGhpcy0+VGFyZ2V0LT5HZXRNYXBwZWRDb25maWcoZGVzaXJlZF9jb25maWcsIGxvYywgaW1wLCBzdWZmaXgpKSB7CiAgICAgcmV0dXJuOwogICB9CiAKQEAgLTYyODEsNiArNjQ5OCwxMiBAQAogY29uc3QgY21MaW5rSW1wbGVtZW50YXRpb24qIGNtR2VuZXJhdG9yVGFyZ2V0OjpHZXRMaW5rSW1wbGVtZW50YXRpb24oCiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcpIGNvbnN0CiB7CisgIHJldHVybiB0aGlzLT5HZXRMaW5rSW1wbGVtZW50YXRpb24oY29uZmlnLCBmYWxzZSk7Cit9CisKK2NvbnN0IGNtTGlua0ltcGxlbWVudGF0aW9uKiBjbUdlbmVyYXRvclRhcmdldDo6R2V0TGlua0ltcGxlbWVudGF0aW9uKAorICBjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnLCBib29sIHNlY29uZFBhc3MpIGNvbnN0Cit7CiAgIC8vIFRoZXJlIGlzIG5vIGxpbmsgaW1wbGVtZW50YXRpb24gZm9yIGltcG9ydGVkIHRhcmdldHMuCiAgIGlmICh0aGlzLT5Jc0ltcG9ydGVkKCkpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYyODgsNiArNjUxMSw5IEBACiAKICAgc3RkOjpzdHJpbmcgQ09ORklHID0gY21TeXN0ZW1Ub29sczo6VXBwZXJDYXNlKGNvbmZpZyk7CiAgIGNtT3B0aW9uYWxMaW5rSW1wbGVtZW50YXRpb24mIGltcGwgPSB0aGlzLT5MaW5rSW1wbE1hcFtDT05GSUddW3RoaXNdOworICBpZiAoc2Vjb25kUGFzcykgeworICAgIGltcGwgPSBjbU9wdGlvbmFsTGlua0ltcGxlbWVudGF0aW9uKCk7CisgIH0KICAgaWYgKCFpbXBsLkxpYnJhcmllc0RvbmUpIHsKICAgICBpbXBsLkxpYnJhcmllc0RvbmUgPSB0cnVlOwogICAgIHRoaXMtPkNvbXB1dGVMaW5rSW1wbGVtZW50YXRpb25MaWJyYXJpZXMoY29uZmlnLCBpbXBsLCB0aGlzKTsKQEAgLTY1ODUsMTEgKzY4MTEsMTUgQEAKICAgICBjbUdlbmVyYXRvckV4cHJlc3Npb24gZ2UoKmJ0SXQpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxjbUNvbXBpbGVkR2VuZXJhdG9yRXhwcmVzc2lvbj4gY29uc3QgY2dlID0gZ2UuUGFyc2UoKmxlKTsKICAgICBzdGQ6OnN0cmluZyBjb25zdCYgZXZhbHVhdGVkID0KLSAgICAgIGNnZS0+RXZhbHVhdGUodGhpcy0+TG9jYWxHZW5lcmF0b3IsIGNvbmZpZywgaGVhZCwgJmRhZ0NoZWNrZXIpOworICAgICAgY2dlLT5FdmFsdWF0ZSh0aGlzLT5Mb2NhbEdlbmVyYXRvciwgY29uZmlnLCBoZWFkLCAmZGFnQ2hlY2tlciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgdGhpcy0+TGlua2VyTGFuZ3VhZ2UpOwogICAgIGNtRXhwYW5kTGlzdChldmFsdWF0ZWQsIGxsaWJzKTsKICAgICBpZiAoY2dlLT5HZXRIYWRIZWFkU2Vuc2l0aXZlQ29uZGl0aW9uKCkpIHsKICAgICAgIGltcGwuSGFkSGVhZFNlbnNpdGl2ZUNvbmRpdGlvbiA9IHRydWU7CiAgICAgfQorICAgIGlmIChjZ2UtPkdldEhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbigpKSB7CisgICAgICBpbXBsLkhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbiA9IHRydWU7CisgICAgfQogCiAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgbGliIDogbGxpYnMpIHsKICAgICAgIGlmICh0aGlzLT5Jc0xpbmtMb29rdXBTY29wZShsaWIsIGxnKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL2NtR2VuZXJhdG9yVGFyZ2V0LmggYi9Tb3VyY2UvY21HZW5lcmF0b3JUYXJnZXQuaAppbmRleCBkODFiYjNkLi4xMmQzMGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HZW5lcmF0b3JUYXJnZXQuaAorKysgYi9Tb3VyY2UvY21HZW5lcmF0b3JUYXJnZXQuaApAQCAtMzU3LDcgKzM1Nyw2IEBACiAgIH07CiAKICAgTGlua0Nsb3N1cmUgY29uc3QqIEdldExpbmtDbG9zdXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcpIGNvbnN0OwotICB2b2lkIENvbXB1dGVMaW5rQ2xvc3VyZShjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnLCBMaW5rQ2xvc3VyZSYgbGMpIGNvbnN0OwogCiAgIGNtTGlua0ltcGxlbWVudGF0aW9uIGNvbnN0KiBHZXRMaW5rSW1wbGVtZW50YXRpb24oCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZykgY29uc3Q7CkBAIC01ODksNiArNTg4LDkgQEAKICAgLyoqIEdldCB0YXJnZXQgZmlsZSBwb3N0Zml4ICovCiAgIHN0ZDo6c3RyaW5nIEdldEZpbGVQb3N0Zml4KGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcpIGNvbnN0OwogCisgIC8qKiBHZXQgZnJhbWV3b3JrIG11bHRpLWNvbmZpZy1zcGVjaWZpYyBwb3N0Zml4ICovCisgIHN0ZDo6c3RyaW5nIEdldEZyYW1ld29ya011bHRpQ29uZmlnUG9zdGZpeChjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnKSBjb25zdDsKKwogICAvKiogQ2xlYXJzIGNhY2hlZCBtZXRhIGRhdGEgZm9yIGxvY2FsIGFuZCBleHRlcm5hbCBzb3VyY2UgZmlsZXMuCiAgICAqIFRoZSBtZXRhIGRhdGEgd2lsbCBiZSByZWNvbXB1dGVkIG9uIGRlbWFuZC4KICAgICovCkBAIC04MTYsNiArODE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiBvdXRQcmVmaXgsIHN0ZDo6c3RyaW5nJiBvdXRCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcmIG91dFN1ZmZpeCkgY29uc3Q7CiAKKyAgbXV0YWJsZSBzdGQ6OnN0cmluZyBMaW5rZXJMYW5ndWFnZTsKICAgdXNpbmcgTGlua0Nsb3N1cmVNYXBUeXBlID0gc3RkOjptYXA8c3RkOjpzdHJpbmcsIExpbmtDbG9zdXJlPjsKICAgbXV0YWJsZSBMaW5rQ2xvc3VyZU1hcFR5cGUgTGlua0Nsb3N1cmVNYXA7CiAKQEAgLTg1MCw2ICs4NTMsMTAgQEAKICAgdm9pZCBDaGVja1Byb3BlcnR5Q29tcGF0aWJpbGl0eShjbUNvbXB1dGVMaW5rSW5mb3JtYXRpb24mIGluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZykgY29uc3Q7CiAKKyAgdm9pZCBDb21wdXRlTGlua0Nsb3N1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywgTGlua0Nsb3N1cmUmIGxjKSBjb25zdDsKKyAgYm9vbCBDb21wdXRlTGlua0Nsb3N1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywgTGlua0Nsb3N1cmUmIGxjLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlY29uZFBhc3MpIGNvbnN0OworCiAgIHN0cnVjdCBMaW5rSW1wbENsb3N1cmUgOiBwdWJsaWMgc3RkOjp2ZWN0b3I8Y21HZW5lcmF0b3JUYXJnZXQgY29uc3QqPgogICB7CiAgICAgYm9vbCBEb25lID0gZmFsc2U7CkBAIC04NjgsNiArODc1LDE3IEBACiAgIHN0ZDo6c3RyaW5nIEdldExpbmtJbnRlcmZhY2VEZXBlbmRlbnRTdHJpbmdBc0Jvb2xQcm9wZXJ0eSgKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcCwgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZykgY29uc3Q7CiAKKyAgZnJpZW5kIGNsYXNzIGNtVGFyZ2V0Q29sbGVjdExpbmtMYW5ndWFnZXM7CisgIGNtTGlua0ludGVyZmFjZSBjb25zdCogR2V0TGlua0ludGVyZmFjZShjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21HZW5lcmF0b3JUYXJnZXQqIGhlYWRUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlY29uZFBhc3MpIGNvbnN0OworICB2b2lkIENvbXB1dGVMaW5rSW50ZXJmYWNlKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21PcHRpb25hbExpbmtJbnRlcmZhY2UmIGlmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtR2VuZXJhdG9yVGFyZ2V0KiBoZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2Vjb25kUGFzcykgY29uc3Q7CisgIGNtTGlua0ltcGxlbWVudGF0aW9uIGNvbnN0KiBHZXRMaW5rSW1wbGVtZW50YXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlY29uZFBhc3MpIGNvbnN0OworCiAgIC8vIENhY2hlIGltcG9ydCBpbmZvcm1hdGlvbiBmcm9tIHByb3BlcnRpZXMgZm9yIGVhY2ggY29uZmlndXJhdGlvbi4KICAgc3RydWN0IEltcG9ydEluZm8KICAgewpAQCAtODk0LDkgKzkxMiwxMCBAQAogICAgICAgdGhlIGxpbmsgZGVwZW5kZW5jaWVzIG9mIHRoaXMgdGFyZ2V0LiAgKi8KICAgc3RkOjpzdHJpbmcgQ2hlY2tDTVAwMDA0KHN0ZDo6c3RyaW5nIGNvbnN0JiBpdGVtKSBjb25zdDsKIAotICBjbUxpbmtJbnRlcmZhY2UgY29uc3QqIEdldEltcG9ydExpbmtJbnRlcmZhY2UoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywgY29uc3QgY21HZW5lcmF0b3JUYXJnZXQqIGhlYWQsCi0gICAgYm9vbCB1c2FnZV9yZXF1aXJlbWVudHNfb25seSkgY29uc3Q7CisgIGNtTGlua0ludGVyZmFjZSBjb25zdCogR2V0SW1wb3J0TGlua0ludGVyZmFjZShjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21HZW5lcmF0b3JUYXJnZXQqIGhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzYWdlX3JlcXVpcmVtZW50c19vbmx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZWNvbmRQYXNzID0gZmFsc2UpIGNvbnN0OwogCiAgIHVzaW5nIEtpbmRlZFNvdXJjZXNNYXBUeXBlID0gc3RkOjptYXA8c3RkOjpzdHJpbmcsIEtpbmRlZFNvdXJjZXM+OwogICBtdXRhYmxlIEtpbmRlZFNvdXJjZXNNYXBUeXBlIEtpbmRlZFNvdXJjZXNNYXA7CkBAIC05NDAsNyArOTU5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY21HZW5lcmF0b3JUYXJnZXQqIGhlYWRUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNhZ2VfcmVxdWlyZW1lbnRzX29ubHksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGNtTGlua0l0ZW0+JiBpdGVtcywKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgaGFkSGVhZFNlbnNpdGl2ZUNvbmRpdGlvbikgY29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGhhZEhlYWRTZW5zaXRpdmVDb25kaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbikgY29uc3Q7CiAgIHZvaWQgTG9va3VwTGlua0l0ZW1zKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjb25zdCYgbmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGNtTGlzdEZpbGVCYWNrdHJhY2UgY29uc3QmIGJ0LAogICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxjbUxpbmtJdGVtPiYgaXRlbXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtR2V0Q01ha2VQcm9wZXJ0eUNvbW1hbmQuY3h4IGIvU291cmNlL2NtR2V0Q01ha2VQcm9wZXJ0eUNvbW1hbmQuY3h4CmluZGV4IGZmNGUzMTIuLjRhOTUwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUdldENNYWtlUHJvcGVydHlDb21tYW5kLmN4eAorKysgYi9Tb3VyY2UvY21HZXRDTWFrZVByb3BlcnR5Q29tbWFuZC5jeHgKQEAgLTM2LDEyICszNiwxMiBAQAogICAgICAgc3RhdHVzLkdldE1ha2VmaWxlKCkuR2V0R2xvYmFsR2VuZXJhdG9yKCktPkdldEluc3RhbGxDb21wb25lbnRzKCk7CiAgICAgb3V0cHV0ID0gY21Kb2luKCpjb21wb25lbnRzLCAiOyIpOwogICB9IGVsc2UgewotICAgIGNvbnN0IGNoYXIqIHByb3AgPSBudWxscHRyOworICAgIGNtUHJvcCBwcm9wID0gbnVsbHB0cjsKICAgICBpZiAoIWFyZ3NbMV0uZW1wdHkoKSkgewogICAgICAgcHJvcCA9IHN0YXR1cy5HZXRNYWtlZmlsZSgpLkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KGFyZ3NbMV0pOwogICAgIH0KICAgICBpZiAocHJvcCkgewotICAgICAgb3V0cHV0ID0gcHJvcDsKKyAgICAgIG91dHB1dCA9ICpwcm9wOwogICAgIH0KICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21HZXREaXJlY3RvcnlQcm9wZXJ0eUNvbW1hbmQuY3h4IGIvU291cmNlL2NtR2V0RGlyZWN0b3J5UHJvcGVydHlDb21tYW5kLmN4eAppbmRleCA2NDQzOGQ1Li42NWIzNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HZXREaXJlY3RvcnlQcm9wZXJ0eUNvbW1hbmQuY3h4CisrKyBiL1NvdXJjZS9jbUdldERpcmVjdG9yeVByb3BlcnR5Q29tbWFuZC5jeHgKQEAgLTcsNyArNyw2IEBACiAjaW5jbHVkZSAiY21NYWtlZmlsZS5oIgogI2luY2x1ZGUgImNtTWVzc2FnZVR5cGUuaCIKICNpbmNsdWRlICJjbVBvbGljaWVzLmgiCi0jaW5jbHVkZSAiY21TdHJpbmdBbGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiY21TeXN0ZW1Ub29scy5oIgogCiBuYW1lc3BhY2UgewpAQCAtMzcsMTQgKzM2LDggQEAKICAgICAgICAgIkRJUkVDVE9SWSBhcmd1bWVudCBwcm92aWRlZCB3aXRob3V0IHN1YnNlcXVlbnQgYXJndW1lbnRzIik7CiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHN0ZDo6c3RyaW5nIHNkID0gKmk7Ci0gICAgLy8gbWFrZSBzdXJlIHRoZSBzdGFydCBkaXIgaXMgYSBmdWxsIHBhdGgKLSAgICBpZiAoIWNtU3lzdGVtVG9vbHM6OkZpbGVJc0Z1bGxQYXRoKHNkKSkgewotICAgICAgc2QgPSBjbVN0ckNhdChzdGF0dXMuR2V0TWFrZWZpbGUoKS5HZXRDdXJyZW50U291cmNlRGlyZWN0b3J5KCksICcvJywgKmkpOwotICAgIH0KLQotICAgIC8vIFRoZSBsb2NhbCBnZW5lcmF0b3JzIGFyZSBhc3NvY2lhdGVkIHdpdGggY29sbGFwc2VkIHBhdGhzLgotICAgIHNkID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChzZCk7CisgICAgc3RkOjpzdHJpbmcgc2QgPSBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKAorICAgICAgKmksIHN0YXR1cy5HZXRNYWtlZmlsZSgpLkdldEN1cnJlbnRTb3VyY2VEaXJlY3RvcnkoKSk7CiAKICAgICAvLyBsb29rdXAgdGhlIG1ha2VmaWxlIGZyb20gdGhlIGRpcmVjdG9yeSBuYW1lCiAgICAgZGlyID0gc3RhdHVzLkdldE1ha2VmaWxlKCkuR2V0R2xvYmFsR2VuZXJhdG9yKCktPkZpbmRNYWtlZmlsZShzZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21HZXRGaWxlbmFtZUNvbXBvbmVudENvbW1hbmQuY3h4IGIvU291cmNlL2NtR2V0RmlsZW5hbWVDb21wb25lbnRDb21tYW5kLmN4eAppbmRleCA3ZDkxYTc1Li44MTE0MjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HZXRGaWxlbmFtZUNvbXBvbmVudENvbW1hbmQuY3h4CisrKyBiL1NvdXJjZS9jbUdldEZpbGVuYW1lQ29tcG9uZW50Q29tbWFuZC5jeHgKQEAgLTEyMCwxMSArMTIwLDExIEBACiAgIGlmIChhcmdzLnNpemUoKSA+PSA0ICYmIGFyZ3MuYmFjaygpID09ICJDQUNIRSIpIHsKICAgICBpZiAoIXByb2dyYW1BcmdzLmVtcHR5KCkgJiYgIXN0b3JlQXJncy5lbXB0eSgpKSB7CiAgICAgICBzdGF0dXMuR2V0TWFrZWZpbGUoKS5BZGRDYWNoZURlZmluaXRpb24oCi0gICAgICAgIHN0b3JlQXJncywgcHJvZ3JhbUFyZ3MuY19zdHIoKSwgIiIsCisgICAgICAgIHN0b3JlQXJncywgcHJvZ3JhbUFyZ3MsICIiLAogICAgICAgICBhcmdzWzJdID09ICJQQVRIIiA/IGNtU3RhdGVFbnVtczo6RklMRVBBVEggOiBjbVN0YXRlRW51bXM6OlNUUklORyk7CiAgICAgfQogICAgIHN0YXR1cy5HZXRNYWtlZmlsZSgpLkFkZENhY2hlRGVmaW5pdGlvbigKLSAgICAgIGFyZ3MuZnJvbnQoKSwgcmVzdWx0LmNfc3RyKCksICIiLAorICAgICAgYXJncy5mcm9udCgpLCByZXN1bHQsICIiLAogICAgICAgYXJnc1syXSA9PSAiUEFUSCIgPyBjbVN0YXRlRW51bXM6OkZJTEVQQVRIIDogY21TdGF0ZUVudW1zOjpTVFJJTkcpOwogICB9IGVsc2UgewogICAgIGlmICghcHJvZ3JhbUFyZ3MuZW1wdHkoKSAmJiAhc3RvcmVBcmdzLmVtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUdldFByb3BlcnR5Q29tbWFuZC5jeHggYi9Tb3VyY2UvY21HZXRQcm9wZXJ0eUNvbW1hbmQuY3h4CmluZGV4IDk0N2Q4OTMuLjFkOGYwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUdldFByb3BlcnR5Q29tbWFuZC5jeHgKKysrIGIvU291cmNlL2NtR2V0UHJvcGVydHlDb21tYW5kLmN4eApAQCAtMjQxLDggKzI0MSw5IEBACiAKICAgLy8gR2V0IHRoZSBwcm9wZXJ0eS4KICAgY21ha2UqIGNtID0gc3RhdHVzLkdldE1ha2VmaWxlKCkuR2V0Q01ha2VJbnN0YW5jZSgpOworICBjbVByb3AgcCA9IGNtLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOwogICByZXR1cm4gU3RvcmVSZXN1bHQoaW5mb1R5cGUsIHN0YXR1cy5HZXRNYWtlZmlsZSgpLCB2YXJpYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgIGNtLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgIHAgPyBwLT5jX3N0cigpIDogbnVsbHB0cik7CiB9CiAKIGJvb2wgSGFuZGxlRGlyZWN0b3J5TW9kZShjbUV4ZWN1dGlvblN0YXR1cyYgc3RhdHVzLCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKQEAgLTI1NiwxNCArMjU3LDggQEAKICAgaWYgKCFuYW1lLmVtcHR5KCkpIHsKICAgICAvLyBDb25zdHJ1Y3QgdGhlIGRpcmVjdG9yeSBuYW1lLiAgSW50ZXJwcmV0IHJlbGF0aXZlIHBhdGhzIHdpdGgKICAgICAvLyByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgICBzdGQ6OnN0cmluZyBkaXIgPSBuYW1lOwotICAgIGlmICghY21TeXN0ZW1Ub29sczo6RmlsZUlzRnVsbFBhdGgoZGlyKSkgewotICAgICAgZGlyID0KLSAgICAgICAgY21TdHJDYXQoc3RhdHVzLkdldE1ha2VmaWxlKCkuR2V0Q3VycmVudFNvdXJjZURpcmVjdG9yeSgpLCAnLycsIG5hbWUpOwotICAgIH0KLQotICAgIC8vIFRoZSBsb2NhbCBnZW5lcmF0b3JzIGFyZSBhc3NvY2lhdGVkIHdpdGggY29sbGFwc2VkIHBhdGhzLgotICAgIGRpciA9IGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgoZGlyKTsKKyAgICBzdGQ6OnN0cmluZyBkaXIgPSBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKAorICAgICAgbmFtZSwgc3RhdHVzLkdldE1ha2VmaWxlKCkuR2V0Q3VycmVudFNvdXJjZURpcmVjdG9yeSgpKTsKIAogICAgIC8vIExvb2t1cCB0aGUgZ2VuZXJhdG9yLgogICAgIG1mID0gc3RhdHVzLkdldE1ha2VmaWxlKCkuR2V0R2xvYmFsR2VuZXJhdG9yKCktPkZpbmRNYWtlZmlsZShkaXIpOwpAQCAtMzkzLDEyICszODgsMTMgQEAKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAotICBjb25zdCBjaGFyKiB2YWx1ZSA9IG51bGxwdHI7CisgIGNtUHJvcCB2YWx1ZSA9IG51bGxwdHI7CiAgIGlmIChzdGF0dXMuR2V0TWFrZWZpbGUoKS5HZXRTdGF0ZSgpLT5HZXRDYWNoZUVudHJ5VmFsdWUobmFtZSkpIHsKICAgICB2YWx1ZSA9IHN0YXR1cy5HZXRNYWtlZmlsZSgpLkdldFN0YXRlKCktPkdldENhY2hlRW50cnlQcm9wZXJ0eSgKICAgICAgIG5hbWUsIHByb3BlcnR5TmFtZSk7CiAgIH0KLSAgU3RvcmVSZXN1bHQoaW5mb1R5cGUsIHN0YXR1cy5HZXRNYWtlZmlsZSgpLCB2YXJpYWJsZSwgdmFsdWUpOworICBTdG9yZVJlc3VsdChpbmZvVHlwZSwgc3RhdHVzLkdldE1ha2VmaWxlKCksIHZhcmlhYmxlLAorICAgICAgICAgICAgICB2YWx1ZSA/IHZhbHVlLT5jX3N0cigpIDogbnVsbHB0cik7CiAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21HaHNNdWx0aVRhcmdldEdlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21HaHNNdWx0aVRhcmdldEdlbmVyYXRvci5jeHgKaW5kZXggNWUyMjQ4ZS4uZGViNzIyZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtR2hzTXVsdGlUYXJnZXRHZW5lcmF0b3IuY3h4CisrKyBiL1NvdXJjZS9jbUdoc011bHRpVGFyZ2V0R2VuZXJhdG9yLmN4eApAQCAtMTY1LDEzICsxNjUsMTUgQEAKICAgICBvdXRwYXRoID0gdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXREaXJlY3RvcnkoY29uZmlnKTsKICAgICBvdXRwYXRoID0KICAgICAgIHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5NYXliZUNvbnZlcnRUb1JlbGF0aXZlUGF0aChyb290cGF0aCwgb3V0cGF0aCk7Ci0gICAgZm91dCA8PCAiICAgIDpiaW5EaXJSZWxhdGl2ZT1cIiIgPDwgb3V0cGF0aCA8PCAiXCIiIDw8IHN0ZDo6ZW5kbDsKLSAgICBmb3V0IDw8ICIgICAgLW8gXCIiIDw8IHRoaXMtPlRhcmdldE5hbWVSZWFsIDw8ICJcIiIgPDwgc3RkOjplbmRsOworICAgIC8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KKyAgICBmb3V0IDw8ICIgICAgOmJpbkRpclJlbGF0aXZlPVwiIiA8PCBvdXRwYXRoIDw8ICJcIlxuIgorICAgICAgICAgICAgIiAgICAtbyBcIiIgPDwgdGhpcy0+VGFyZ2V0TmFtZVJlYWwgPDwgIlwiXG4iOworICAgIC8qIGNsYW5nLWZvcm1hdCBvbiAqLwogICB9CiAKICAgLy8gc2V0IHRhcmdldCBvYmplY3QgZmlsZSBkZXN0aW5hdGlvbgogICBvdXRwYXRoID0gdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkdldFRhcmdldERpcmVjdG9yeSh0aGlzLT5HZW5lcmF0b3JUYXJnZXQpOwotICBmb3V0IDw8ICIgICAgOm91dHB1dERpclJlbGF0aXZlPVwiIiA8PCBvdXRwYXRoIDw8ICJcIiIgPDwgc3RkOjplbmRsOworICBmb3V0IDw8ICIgICAgOm91dHB1dERpclJlbGF0aXZlPVwiIiA8PCBvdXRwYXRoIDw8ICJcIlxuIjsKIH0KIAogdm9pZCBjbUdoc011bHRpVGFyZ2V0R2VuZXJhdG9yOjpTZXRDb21waWxlckZsYWdzKHN0ZDo6c3RyaW5nIGNvbnN0JiBjb25maWcsCkBAIC0xODAsMTUgKzE4MiwxMiBAQAogICBhdXRvIGkgPSB0aGlzLT5GbGFnc0J5TGFuZ3VhZ2UuZmluZChsYW5ndWFnZSk7CiAgIGlmIChpID09IHRoaXMtPkZsYWdzQnlMYW5ndWFnZS5lbmQoKSkgewogICAgIHN0ZDo6c3RyaW5nIGZsYWdzOwotICAgIGNvbnN0IGNoYXIqIGxhbmcgPSBsYW5ndWFnZS5jX3N0cigpOwotCi0gICAgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkFkZExhbmd1YWdlRmxhZ3MoZmxhZ3MsIHRoaXMtPkdlbmVyYXRvclRhcmdldCwgbGFuZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcpOwotCi0gICAgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkFkZENNUDAwMThGbGFncyhmbGFncywgdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LCBsYW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnKTsKKyAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+QWRkTGFuZ3VhZ2VGbGFncyhmbGFncywgdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLCBjb25maWcpOworICAgIHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5BZGRDTVAwMDE4RmxhZ3MoZmxhZ3MsIHRoaXMtPkdlbmVyYXRvclRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLCBjb25maWcpOwogICAgIHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5BZGRWaXNpYmlsaXR5UHJlc2V0RmxhZ3MoCi0gICAgICBmbGFncywgdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LCBsYW5nKTsKKyAgICAgIGZsYWdzLCB0aGlzLT5HZW5lcmF0b3JUYXJnZXQsIGxhbmd1YWdlKTsKIAogICAgIC8vIEFwcGVuZCBvbGQtc3R5bGUgcHJlcHJvY2Vzc29yIGRlZmluaXRpb24gZmxhZ3MuCiAgICAgaWYgKHRoaXMtPk1ha2VmaWxlLT5HZXREZWZpbmVGbGFncygpICE9ICIgIikgewpAQCAtMTk3LDggKzE5Niw4IEBACiAgICAgfQogCiAgICAgLy8gQWRkIHRhcmdldC1zcGVjaWZpYyBmbGFncy4KLSAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+QWRkQ29tcGlsZU9wdGlvbnMoZmxhZ3MsIHRoaXMtPkdlbmVyYXRvclRhcmdldCwgbGFuZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnKTsKKyAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+QWRkQ29tcGlsZU9wdGlvbnMoZmxhZ3MsIHRoaXMtPkdlbmVyYXRvclRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UsIGNvbmZpZyk7CiAKICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+Ojp2YWx1ZV90eXBlIGVudHJ5KGxhbmd1YWdlLCBmbGFncyk7CiAgICAgaSA9IHRoaXMtPkZsYWdzQnlMYW5ndWFnZS5pbnNlcnQoZW50cnkpLmZpcnN0OwpAQCAtMjExLDEzICsyMTAsMTIgQEAKICAgYXV0byBpID0gdGhpcy0+RGVmaW5lc0J5TGFuZ3VhZ2UuZmluZChsYW5ndWFnZSk7CiAgIGlmIChpID09IHRoaXMtPkRlZmluZXNCeUxhbmd1YWdlLmVuZCgpKSB7CiAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IGRlZmluZXM7Ci0gICAgY29uc3QgY2hhciogbGFuZyA9IGxhbmd1YWdlLmNfc3RyKCk7CiAgICAgLy8gQWRkIHByZXByb2Nlc3NvciBkZWZpbml0aW9ucyBmb3IgdGhpcyB0YXJnZXQgYW5kIGNvbmZpZ3VyYXRpb24uCiAgICAgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkdldFRhcmdldERlZmluZXModGhpcy0+R2VuZXJhdG9yVGFyZ2V0LCBjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UsIGRlZmluZXMpOwogCiAgICAgc3RkOjpzdHJpbmcgZGVmaW5lc1N0cmluZzsKLSAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+Sm9pbkRlZmluZXMoZGVmaW5lcywgZGVmaW5lc1N0cmluZywgbGFuZyk7CisgICAgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkpvaW5EZWZpbmVzKGRlZmluZXMsIGRlZmluZXNTdHJpbmcsIGxhbmd1YWdlKTsKIAogICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz46OnZhbHVlX3R5cGUgZW50cnkobGFuZ3VhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVzU3RyaW5nKTsKQEAgLTIzNSw4ICsyMzMsOCBAQAogICAgIGlmICghZmxhZ3NCeUxhbmdJLT5zZWNvbmQuZW1wdHkoKSkgewogICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGdoc0NvbXBGbGFncyA9CiAgICAgICAgIGNtU3lzdGVtVG9vbHM6OlBhcnNlQXJndW1lbnRzKGZsYWdzQnlMYW5nSS0+c2Vjb25kKTsKLSAgICAgIGZvciAoYXV0byYgZiA6IGdoc0NvbXBGbGFncykgewotICAgICAgICBmb3V0IDw8ICIgICAgIiA8PCBmIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcmIGYgOiBnaHNDb21wRmxhZ3MpIHsKKyAgICAgICAgZm91dCA8PCAiICAgICIgPDwgZiA8PCAnXG4nOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMjQ5LDcgKzI0Nyw3IEBACiAgIHRoaXMtPkdlbmVyYXRvclRhcmdldC0+R2V0Q29tcGlsZURlZmluaXRpb25zKGNvbXBpbGVEZWZpbml0aW9ucywgY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSk7CiAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGNvbXBpbGVEZWZpbml0aW9uIDogY29tcGlsZURlZmluaXRpb25zKSB7Ci0gICAgZm91dCA8PCAiICAgIC1EIiA8PCBjb21waWxlRGVmaW5pdGlvbiA8PCBzdGQ6OmVuZGw7CisgICAgZm91dCA8PCAiICAgIC1EIiA8PCBjb21waWxlRGVmaW5pdGlvbiA8PCAnXG4nOwogICB9CiB9CiAKQEAgLTI2Miw3ICsyNjAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLCBjb25maWcpOwogCiAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGluY2x1ZGUgOiBpbmNsdWRlcykgewotICAgIGZvdXQgPDwgIiAgICAtSVwiIiA8PCBpbmNsdWRlIDw8ICJcIiIgPDwgc3RkOjplbmRsOworICAgIGZvdXQgPDwgIiAgICAtSVwiIiA8PCBpbmNsdWRlIDw8ICJcIlxuIjsKICAgfQogfQogCkBAIC0yOTAsMTUgKzI4OCwxNSBAQAogCiAgIC8vIHdyaXRlIG91dCBsaW5rIG9wdGlvbnMKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxvcHRzID0gY21TeXN0ZW1Ub29sczo6UGFyc2VBcmd1bWVudHMobGlua0ZsYWdzKTsKLSAgZm9yIChhdXRvJiBsIDogbG9wdHMpIHsKLSAgICBmb3V0IDw8ICIgICAgIiA8PCBsIDw8IHN0ZDo6ZW5kbDsKKyAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyYgbCA6IGxvcHRzKSB7CisgICAgZm91dCA8PCAiICAgICIgPDwgbCA8PCAnXG4nOwogICB9CiAKICAgLy8gd3JpdGUgb3V0IGxpbmsgc2VhcmNoIHBhdGhzCiAgIC8vIG11c3QgYmUgcXVvdGVkIGZvciBwYXRocyB0aGF0IGNvbnRhaW4gc3BhY2VzCiAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBscGF0aCA9IGNtU3lzdGVtVG9vbHM6OlBhcnNlQXJndW1lbnRzKGxpbmtQYXRoKTsKLSAgZm9yIChhdXRvJiBsIDogbHBhdGgpIHsKLSAgICBmb3V0IDw8ICIgICAgLUxcIiIgPDwgbCA8PCAiXCIiIDw8IHN0ZDo6ZW5kbDsKKyAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyYgbCA6IGxwYXRoKSB7CisgICAgZm91dCA8PCAiICAgIC1MXCIiIDw8IGwgPDwgIlwiXG4iOwogICB9CiAKICAgLy8gd3JpdGUgb3V0IGxpbmsgbGlicwpAQCAtMzA3LDEyICszMDUsMTIgQEAKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGxpYnMgPQogICAgIGNtU3lzdGVtVG9vbHM6OlBhcnNlQXJndW1lbnRzKGxpbmtMaWJyYXJpZXMpOwotICBmb3IgKGF1dG8mIGwgOiBsbGlicykgeworICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBsIDogbGxpYnMpIHsKICAgICBpZiAobC5jb21wYXJlKDAsIDIsICItbCIpID09IDApIHsKLSAgICAgIGZvdXQgPDwgIiAgICBcIiIgPDwgbCA8PCAiXCIiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGZvdXQgPDwgIiAgICBcIiIgPDwgbCA8PCAiXCJcbiI7CiAgICAgfSBlbHNlIHsKICAgICAgIHN0ZDo6c3RyaW5nIHJsID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChsLCBjYmQpOwotICAgICAgZm91dCA8PCAiICAgIC1sXCIiIDw8IHJsIDw8ICJcIiIgPDwgc3RkOjplbmRsOworICAgICAgZm91dCA8PCAiICAgIC1sXCIiIDw8IHJsIDw8ICJcIlxuIjsKICAgICB9CiAgIH0KIH0KQEAgLTM1MywxMyArMzUxLDEyIEBACiAgICAgdGhpcy0+V3JpdGVDdXN0b21Db21tYW5kc0hlbHBlcihmLCBjY2cpOwogICAgIGYuQ2xvc2UoKTsKICAgICBpZiAodGhpcy0+VGFnVHlwZSAhPSBHaHNNdWx0aUdwajo6Q1VTVE9NX1RBUkdFVCkgewotICAgICAgZm91dCA8PCAiICAgIDoiIDw8IGNtZCA8PCAiPVwiIiA8PCBmbmFtZSA8PCAiXCIiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGZvdXQgPDwgIiAgICA6IiA8PCBjbWQgPDwgIj1cIiIgPDwgZm5hbWUgPDwgIlwiXG4iOwogICAgIH0gZWxzZSB7Ci0gICAgICBmb3V0IDw8IGZuYW1lIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGZvdXQgPDwgIiAgICA6b3V0cHV0TmFtZT1cIiIgPDwgZm5hbWUgPDwgIi5ydWxlXCIiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIGZvdXQgPDwgZm5hbWUgPDwgIlxuICAgIDpvdXRwdXROYW1lPVwiIiA8PCBmbmFtZSA8PCAiLnJ1bGVcIlxuIjsKICAgICB9CiAgICAgZm9yIChhdXRvJiBieXAgOiBjY2cuR2V0Qnlwcm9kdWN0cygpKSB7Ci0gICAgICBmb3V0IDw8ICIgICAgOmV4dHJhT3V0cHV0RmlsZT1cIiIgPDwgYnlwIDw8ICJcIiIgPDwgc3RkOjplbmRsOworICAgICAgZm91dCA8PCAiICAgIDpleHRyYU91dHB1dEZpbGU9XCIiIDw8IGJ5cCA8PCAiXCJcbiI7CiAgICAgfQogICB9CiB9CkBAIC00NTEsOCArNDQ4LDcgQEAKIAogICAvLyBwdXNoIGJhY2sgdGhlIGN1c3RvbSBjb21tYW5kcwogICBmb3IgKGF1dG8gY29uc3QmIGMgOiBjbWRMaW5lcykgewotICAgIGZvdXQgPDwgYyA8PCBzdGQ6OmVuZGw7Ci0gICAgZm91dCA8PCBjaGVja19lcnJvciA8PCBzdGQ6OmVuZGw7CisgICAgZm91dCA8PCBjIDw8ICdcbicgPDwgY2hlY2tfZXJyb3IgPDwgJ1xuJzsKICAgfQogfQogCkBAIC00NjMsOCArNDU5LDggQEAKICAgY29uc3QgY2hhciogcHJvcCA9IHNmLT5HZXRQcm9wZXJ0eShwcm9wTmFtZSk7CiAgIGlmIChwcm9wKSB7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxpc3QgPSBjbUV4cGFuZGVkTGlzdChwcm9wKTsKLSAgICBmb3IgKGF1dG8mIHAgOiBsaXN0KSB7Ci0gICAgICBmb3V0IDw8ICIgICAgIiA8PCBwcm9wRmxhZyA8PCBwIDw8IHN0ZDo6ZW5kbDsKKyAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBwIDogbGlzdCkgeworICAgICAgZm91dCA8PCAiICAgICIgPDwgcHJvcEZsYWcgPDwgcCA8PCAnXG4nOwogICAgIH0KICAgfQogfQpAQCAtNDgzLDcgKzQ3OSw3IEBACiAgIC8qIGZvciBlYWNoIHNvdXJjZSBmaWxlIGFzc2lnbiBpdCB0byBpdHMgZ3JvdXAgKi8KICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6dmVjdG9yPGNtU291cmNlRmlsZSo+PiBncm91cEZpbGVzOwogICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gZ3JvdXBOYW1lczsKLSAgZm9yIChhdXRvJiBzZiA6IHNvdXJjZXMpIHsKKyAgZm9yIChjbVNvdXJjZUZpbGUqIHNmIDogc291cmNlcykgewogICAgIGNtU291cmNlR3JvdXAqIHNvdXJjZUdyb3VwID0KICAgICAgIHRoaXMtPk1ha2VmaWxlLT5GaW5kU291cmNlR3JvdXAoc2YtPlJlc29sdmVGdWxsUGF0aCgpLCBzb3VyY2VHcm91cHMpOwogICAgIHN0ZDo6c3RyaW5nIGduID0gc291cmNlR3JvdXAtPkdldEZ1bGxOYW1lKCk7CkBAIC01NzksMTIgKzU3NSwxMiBAQAogCiAgICAgaWYgKHVzZVByb2plY3RGaWxlKSB7CiAgICAgICBpZiAoc2cuZW1wdHkoKSkgewotICAgICAgICAqZm91dCA8PCAie2NvbW1lbnR9IE90aGVycyIgPDwgc3RkOjplbmRsOworICAgICAgICAqZm91dCA8PCAie2NvbW1lbnR9IE90aGVycyIgPDwgJ1xuJzsKICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICpmb3V0IDw8ICJ7Y29tbWVudH0gIiA8PCBzZyA8PCBzdGQ6OmVuZGw7CisgICAgICAgICpmb3V0IDw8ICJ7Y29tbWVudH0gIiA8PCBzZyA8PCAnXG4nOwogICAgICAgfQogICAgIH0gZWxzZSBpZiAoc2cuZW1wdHkoKSkgewotICAgICAgKmZvdXQgPDwgIntjb21tZW50fSBPdGhlcnMiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICpmb3V0IDw8ICJ7Y29tbWVudH0gT3RoZXJzXG4iOwogICAgIH0KIAogICAgIGlmIChzZyAhPSAiQ01ha2UgUnVsZXMiKSB7CkBAIC02MTIsNyArNjA4LDcgQEAKICAgICAgICAgICBjb21waWxlID0gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICAqZm91dCA8PCBjb21tZW50IDw8IGZuYW1lIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgKmZvdXQgPDwgY29tbWVudCA8PCBmbmFtZSA8PCAnXG4nOwogICAgICAgICBpZiAoY29tcGlsZSkgewogICAgICAgICAgIGlmICgibGQiICE9IHNpLT5HZXRFeHRlbnNpb24oKSAmJiAiaW50IiAhPSBzaS0+R2V0RXh0ZW5zaW9uKCkgJiYKICAgICAgICAgICAgICAgImJzcCIgIT0gc2ktPkdldEV4dGVuc2lvbigpKSB7CkBAIC02MjgsNyArNjI0LDcgQEAKICAgICAgICAgICBzdGQ6OnN0cmluZyBvYmplY3ROYW1lID0gdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXRPYmplY3ROYW1lKHNpKTsKICAgICAgICAgICBpZiAoIW9iamVjdE5hbWUuZW1wdHkoKSAmJgogICAgICAgICAgICAgICB0aGlzLT5HZW5lcmF0b3JUYXJnZXQtPkhhc0V4cGxpY2l0T2JqZWN0TmFtZShzaSkpIHsKLSAgICAgICAgICAgICpmb3V0IDw8ICIgICAgLW8gIiA8PCBvYmplY3ROYW1lIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgICpmb3V0IDw8ICIgICAgLW8gIiA8PCBvYmplY3ROYW1lIDw8ICdcbic7CiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9CkBAIC02OTUsMTQgKzY5MSwxNCBAQAogICAgKi8KICAgYm9vbCBzcGVjaWZ5RXh0cmEgPSB0cnVlOwogICBmb3IgKGF1dG8mIG91dCA6IGNjZy5HZXRPdXRwdXRzKCkpIHsKLSAgICBmb3V0IDw8IGZuYW1lIDw8IHN0ZDo6ZW5kbDsKLSAgICBmb3V0IDw8ICIgICAgOm91dHB1dE5hbWU9XCIiIDw8IG91dCA8PCAiXCIiIDw8IHN0ZDo6ZW5kbDsKKyAgICBmb3V0IDw8IGZuYW1lIDw8ICdcbic7CisgICAgZm91dCA8PCAiICAgIDpvdXRwdXROYW1lPVwiIiA8PCBvdXQgPDwgIlwiXG4iOwogICAgIGlmIChzcGVjaWZ5RXh0cmEpIHsKICAgICAgIGZvciAoYXV0byYgYnlwIDogY2NnLkdldEJ5cHJvZHVjdHMoKSkgewotICAgICAgICBmb3V0IDw8ICIgICAgOmV4dHJhT3V0cHV0RmlsZT1cIiIgPDwgYnlwIDw8ICJcIiIgPDwgc3RkOjplbmRsOworICAgICAgICBmb3V0IDw8ICIgICAgOmV4dHJhT3V0cHV0RmlsZT1cIiIgPDwgYnlwIDw8ICJcIlxuIjsKICAgICAgIH0KICAgICAgIGZvciAoYXV0byYgZGVwIDogY2NnLkdldERlcGVuZHMoKSkgewotICAgICAgICBmb3V0IDw8ICIgICAgOmRlcGVuZHM9XCIiIDw8IGRlcCA8PCAiXCIiIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgZm91dCA8PCAiICAgIDpkZXBlbmRzPVwiIiA8PCBkZXAgPDwgIlwiXG4iOwogICAgICAgfQogICAgICAgc3BlY2lmeUV4dHJhID0gZmFsc2U7CiAgICAgfQpAQCAtNzE3LDcgKzcxMyw3IEBACiAgICAgc3RkOjpzdHJpbmcgc291cmNlTGFuZ1Byb3AocmF3TGFuZ1Byb3ApOwogICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBleHRlbnNpb24gPSBzb3VyY2VGaWxlLT5HZXRFeHRlbnNpb24oKTsKICAgICBpZiAoIkNYWCIgPT0gc291cmNlTGFuZ1Byb3AgJiYgKCJjIiA9PSBleHRlbnNpb24gfHwgIkMiID09IGV4dGVuc2lvbikpIHsKLSAgICAgIGZvdXQgPDwgIiAgICAtZG90Y2lzY3h4IiA8PCBzdGQ6OmVuZGw7CisgICAgICBmb3V0IDw8ICIgICAgLWRvdGNpc2N4eFxuIjsKICAgICB9CiAgIH0KIH0KQEAgLTczMCw3ICs3MjYsNyBAQAogICB9CiAgIHN0ZDo6dmVjdG9yPGNtU291cmNlRmlsZSo+IHNvdXJjZXM7CiAgIHRoaXMtPkdlbmVyYXRvclRhcmdldC0+R2V0U291cmNlRmlsZXMoc291cmNlcywgdGhpcy0+Q29uZmlnTmFtZSk7Ci0gIGZvciAoYXV0byYgc2YgOiBzb3VyY2VzKSB7CisgIGZvciAoY29uc3QgY21Tb3VyY2VGaWxlKiBzZiA6IHNvdXJjZXMpIHsKICAgICBpZiAoImludCIgPT0gc2YtPkdldEV4dGVuc2lvbigpKSB7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21HbG9iYWxHZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtR2xvYmFsR2VuZXJhdG9yLmN4eAppbmRleCA2YTJkNGM3Li42ZDA4MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HbG9iYWxHZW5lcmF0b3IuY3h4CisrKyBiL1NvdXJjZS9jbUdsb2JhbEdlbmVyYXRvci5jeHgKQEAgLTI0NiwxMSArMjQ2LDEwIEBACiAgICAgY21TeXN0ZW1Ub29sczo6Q29udmVydFRvVW5peFNsYXNoZXMoY25hbWVTdHJpbmcpOwogICAgIGNtU3lzdGVtVG9vbHM6OkNvbnZlcnRUb1VuaXhTbGFzaGVzKHBhdGhTdHJpbmcpOwogICAgIGlmIChjbmFtZVN0cmluZyAhPSBwYXRoU3RyaW5nKSB7Ci0gICAgICBjb25zdCBjaGFyKiBjdmFycyA9Ci0gICAgICAgIHRoaXMtPkdldENNYWtlSW5zdGFuY2UoKS0+R2V0U3RhdGUoKS0+R2V0R2xvYmFsUHJvcGVydHkoCi0gICAgICAgICAgIl9fQ01BS0VfREVMRVRFX0NBQ0hFX0NIQU5HRV9WQVJTXyIpOworICAgICAgY21Qcm9wIGN2YXJzID0gdGhpcy0+R2V0Q01ha2VJbnN0YW5jZSgpLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eSgKKyAgICAgICAgIl9fQ01BS0VfREVMRVRFX0NBQ0hFX0NIQU5HRV9WQVJTXyIpOwogICAgICAgaWYgKGN2YXJzKSB7Ci0gICAgICAgIGNoYW5nZVZhcnMgKz0gY3ZhcnM7CisgICAgICAgIGNoYW5nZVZhcnMgKz0gKmN2YXJzOwogICAgICAgICBjaGFuZ2VWYXJzICs9ICI7IjsKICAgICAgIH0KICAgICAgIGNoYW5nZVZhcnMgKz0gbGFuZ0NvbXA7CkBAIC00NDUsOCArNDQ0LDggQEAKICAgICBjbVN5c3RlbVRvb2xzOjpHZXRTaG9ydFBhdGgobWFrZVByb2dyYW0sIG1ha2VQcm9ncmFtKTsKICAgICBjbVN5c3RlbVRvb2xzOjpTcGxpdFByb2dyYW1QYXRoKG1ha2VQcm9ncmFtLCBkaXIsIGZpbGUpOwogICAgIG1ha2VQcm9ncmFtID0gY21TdHJDYXQoZGlyLCAnLycsIHNhdmVGaWxlKTsKLSAgICBtZi0+QWRkQ2FjaGVEZWZpbml0aW9uKCJDTUFLRV9NQUtFX1BST0dSQU0iLCBtYWtlUHJvZ3JhbS5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ha2UgcHJvZ3JhbSIsIGNtU3RhdGVFbnVtczo6RklMRVBBVEgpOworICAgIG1mLT5BZGRDYWNoZURlZmluaXRpb24oIkNNQUtFX01BS0VfUFJPR1JBTSIsIG1ha2VQcm9ncmFtLCAibWFrZSBwcm9ncmFtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtU3RhdGVFbnVtczo6RklMRVBBVEgpOwogICB9CiAgIHJldHVybiB0cnVlOwogfQpAQCAtMjY3NCwxMyArMjY3MywxMyBAQAogICB9CiB9CiAKLWNvbnN0IGNoYXIqIGNtR2xvYmFsR2VuZXJhdG9yOjpHZXRQcmVkZWZpbmVkVGFyZ2V0c0ZvbGRlcigpCitzdGQ6OnN0cmluZyBjbUdsb2JhbEdlbmVyYXRvcjo6R2V0UHJlZGVmaW5lZFRhcmdldHNGb2xkZXIoKQogewotICBjb25zdCBjaGFyKiBwcm9wID0gdGhpcy0+R2V0Q01ha2VJbnN0YW5jZSgpLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eSgKKyAgY21Qcm9wIHByb3AgPSB0aGlzLT5HZXRDTWFrZUluc3RhbmNlKCktPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KAogICAgICJQUkVERUZJTkVEX1RBUkdFVFNfRk9MREVSIik7CiAKICAgaWYgKHByb3ApIHsKLSAgICByZXR1cm4gcHJvcDsKKyAgICByZXR1cm4gKnByb3A7CiAgIH0KIAogICByZXR1cm4gIkNNYWtlUHJlZGVmaW5lZFRhcmdldHMiOwpAQCAtMjY4OCwxMyArMjY4NywxMyBAQAogCiBib29sIGNtR2xvYmFsR2VuZXJhdG9yOjpVc2VGb2xkZXJQcm9wZXJ0eSgpIGNvbnN0CiB7Ci0gIGNvbnN0IGNoYXIqIHByb3AgPQorICBjbVByb3AgcHJvcCA9CiAgICAgdGhpcy0+R2V0Q01ha2VJbnN0YW5jZSgpLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eSgiVVNFX0ZPTERFUlMiKTsKIAogICAvLyBJZiB0aGlzIHByb3BlcnR5IGlzIGRlZmluZWQsIGxldCB0aGUgc2V0dGVyIHR1cm4gdGhpcyBvbiBvciBvZmYuLi4KICAgLy8KICAgaWYgKHByb3ApIHsKLSAgICByZXR1cm4gY21Jc09uKHByb3ApOworICAgIHJldHVybiBjbUlzT24oKnByb3ApOwogICB9CiAKICAgLy8gQnkgZGVmYXVsdCwgdGhpcyBmZWF0dXJlIGlzIE9GRiwgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUdsb2JhbEdlbmVyYXRvci5oIGIvU291cmNlL2NtR2xvYmFsR2VuZXJhdG9yLmgKaW5kZXggN2RjNDgyMi4uNzBlNDNiNSAxMDA2NDQKLS0tIGEvU291cmNlL2NtR2xvYmFsR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL2NtR2xvYmFsR2VuZXJhdG9yLmgKQEAgLTU4OCw3ICs1ODgsNyBAQAogCiAgIGNtR2VuZXJhdG9yVGFyZ2V0KiBGaW5kR2VuZXJhdG9yVGFyZ2V0SW1wbChzdGQ6OnN0cmluZyBjb25zdCYgbmFtZSkgY29uc3Q7CiAKLSAgY29uc3QgY2hhciogR2V0UHJlZGVmaW5lZFRhcmdldHNGb2xkZXIoKTsKKyAgc3RkOjpzdHJpbmcgR2V0UHJlZGVmaW5lZFRhcmdldHNGb2xkZXIoKTsKIAogcHJpdmF0ZToKICAgdXNpbmcgVGFyZ2V0TWFwID0gc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBjbVRhcmdldCo+OwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtR2xvYmFsR2hzTXVsdGlHZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtR2xvYmFsR2hzTXVsdGlHZW5lcmF0b3IuY3h4CmluZGV4IGJiOWRkMzcuLjI4OWEwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUdsb2JhbEdoc011bHRpR2VuZXJhdG9yLmN4eAorKysgYi9Tb3VyY2UvY21HbG9iYWxHaHNNdWx0aUdlbmVyYXRvci5jeHgKQEAgLTksNiArOSw3IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgPGNtL21lbW9yeT4KKyNpbmNsdWRlIDxjbS9zdHJpbmc+CiAKICNpbmNsdWRlICJjbUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJjbURvY3VtZW50YXRpb25FbnRyeS5oIgpAQCAtOTAsNyArOTEsNyBAQAogICAgIC8qIHN0b3JlIHRoZSBmdWxsIHRvb2xzZXQgZm9yIGxhdGVyIHVzZQogICAgICAqIC0tIGFscmVhZHkgZG9uZSBpZiAtVDx0b29sc2V0PiB3YXMgc3BlY2lmaWVkCiAgICAgICovCi0gICAgbWYtPkFkZENhY2hlRGVmaW5pdGlvbigiQ01BS0VfR0VORVJBVE9SX1RPT0xTRVQiLCB0c3AuY19zdHIoKSwKKyAgICBtZi0+QWRkQ2FjaGVEZWZpbml0aW9uKCJDTUFLRV9HRU5FUkFUT1JfVE9PTFNFVCIsIHRzcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMb2NhdGlvbiBvZiBnZW5lcmF0b3IgdG9vbHNldC4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY21TdGF0ZUVudW1zOjpJTlRFUk5BTCk7CiAgIH0KQEAgLTExMiw4ICsxMTMsOCBAQAogICB9CiAKICAgLyogc3RvcmUgdGhlIHRvb2xzZXQgdGhhdCBpcyBiZWluZyB1c2VkIGZvciB0aGlzIGJ1aWxkICovCi0gIG1mLT5BZGRDYWNoZURlZmluaXRpb24oIkNNQUtFX01BS0VfUFJPR1JBTSIsIGdidWlsZC5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJidWlsZCBwcm9ncmFtIHRvIHVzZSIsIGNtU3RhdGVFbnVtczo6SU5URVJOQUwsIHRydWUpOworICBtZi0+QWRkQ2FjaGVEZWZpbml0aW9uKCJDTUFLRV9NQUtFX1BST0dSQU0iLCBnYnVpbGQsICJidWlsZCBwcm9ncmFtIHRvIHVzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY21TdGF0ZUVudW1zOjpJTlRFUk5BTCwgdHJ1ZSk7CiAKICAgbWYtPkFkZERlZmluaXRpb24oIkNNQUtFX1NZU1RFTV9WRVJTSU9OIiwgdHNwKTsKIApAQCAtMTMyLDcgKzEzMyw3IEBACiAgICAgLyogc3RvcmUgdGhlIHBsYXRmb3JtIG5hbWUgZm9yIGxhdGVyIHVzZQogICAgICAqIC0tIGFscmVhZHkgZG9uZSBpZiAtQTxhcmNoPiB3YXMgc3BlY2lmaWVkCiAgICAgICovCi0gICAgbWYtPkFkZENhY2hlRGVmaW5pdGlvbigiQ01BS0VfR0VORVJBVE9SX1BMQVRGT1JNIiwgYXJjaC5jX3N0cigpLAorICAgIG1mLT5BZGRDYWNoZURlZmluaXRpb24oIkNNQUtFX0dFTkVSQVRPUl9QTEFURk9STSIsIGFyY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFtZSBvZiBnZW5lcmF0b3IgcGxhdGZvcm0uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtU3RhdGVFbnVtczo6SU5URVJOQUwpOwogICB9IGVsc2UgewpAQCAtMTY2LDcgKzE2Nyw3IEBACiAgIGlmIChjbUlzT2ZmKGJzcE5hbWUpICYmIHBsYXRmb3JtLmZpbmQoImludGVncml0eSIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7CiAgICAgYnNwTmFtZSA9ICJzaW0iICsgYXJjaDsKICAgICAvKiB3cml0ZSBiYWNrIHRoZSBjYWxjdWxhdGUgbmFtZSBmb3IgbmV4dCB0aW1lICovCi0gICAgbWYtPkFkZENhY2hlRGVmaW5pdGlvbigiR0hTX0JTUF9OQU1FIiwgYnNwTmFtZS5jX3N0cigpLAorICAgIG1mLT5BZGRDYWNoZURlZmluaXRpb24oIkdIU19CU1BfTkFNRSIsIGJzcE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFtZSBvZiBHSFMgdGFyZ2V0IHBsYXRmb3JtLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbVN0YXRlRW51bXM6OlNUUklORywgdHJ1ZSk7CiAgICAgc3RkOjpzdHJpbmcgbSA9IGNtU3RyQ2F0KApAQCAtMjUzLDE0ICsyNTQsMTUgQEAKIAogdm9pZCBjbUdsb2JhbEdoc011bHRpR2VuZXJhdG9yOjpXcml0ZUZpbGVIZWFkZXIoc3RkOjpvc3RyZWFtJiBmb3V0KQogewotICBmb3V0IDw8ICIjIWdidWlsZCIgPDwgc3RkOjplbmRsOwotICBmb3V0IDw8ICIjIiA8PCBzdGQ6OmVuZGwKLSAgICAgICA8PCAiIyBDTUFLRSBnZW5lcmF0ZWQgZmlsZTogRE8gTk9UIEVESVQhIiA8PCBzdGQ6OmVuZGwKLSAgICAgICA8PCAiIyBHZW5lcmF0ZWQgYnkgXCIiIDw8IEdldEFjdHVhbE5hbWUoKSA8PCAiXCIiCi0gICAgICAgPDwgIiBHZW5lcmF0b3IsIENNYWtlIFZlcnNpb24gIiA8PCBjbVZlcnNpb246OkdldE1ham9yVmVyc2lvbigpIDw8ICIuIgotICAgICAgIDw8IGNtVmVyc2lvbjo6R2V0TWlub3JWZXJzaW9uKCkgPDwgc3RkOjplbmRsCi0gICAgICAgPDwgIiMiIDw8IHN0ZDo6ZW5kbAotICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgLyogY2xhbmctZm9ybWF0IG9mZiAqLworICBmb3V0IDw8ICIjIWdidWlsZFxuIgorICAgICAgICAgICIjXG4iCisgICAgICAgICAgIiMgQ01BS0UgZ2VuZXJhdGVkIGZpbGU6IERPIE5PVCBFRElUIVxuIgorICAgICAgICAgICIjIEdlbmVyYXRlZCBieSBcIiIgPDwgR2V0QWN0dWFsTmFtZSgpIDw8ICJcIiIKKyAgICAgICAgICAiIEdlbmVyYXRvciwgQ01ha2UgVmVyc2lvbiAiIDw8IGNtVmVyc2lvbjo6R2V0TWFqb3JWZXJzaW9uKCkgPDwgJy4nCisgICAgICAgPDwgY21WZXJzaW9uOjpHZXRNaW5vclZlcnNpb24oKSA8PCAiXG4iCisgICAgICAgICAgIiNcblxuIjsKKyAgLyogY2xhbmctZm9ybWF0IG9uICovCiB9CiAKIHZvaWQgY21HbG9iYWxHaHNNdWx0aUdlbmVyYXRvcjo6V3JpdGVDdXN0b21SdWxlQk9EKHN0ZDo6b3N0cmVhbSYgZm91dCkKQEAgLTI2OCwzNiArMjcwLDM2IEBACiAgIGZvdXQgPDwgIkNvbW1hbmRzIHtcbiIKICAgICAgICAgICAiICBDdXN0b21fUnVsZV9Db21tYW5kIHtcbiIKICAgICAgICAgICAiICAgIG5hbWUgPSBcIkN1c3RvbSBSdWxlIENvbW1hbmRcIlxuIgotICAgICAgICAgICIgICAgZXhlYyA9IFwiIjsKKyAgICAgICAgICAiICAgIGV4ZWMgPSBcIiIKICNpZmRlZiBfV0lOMzIKLSAgZm91dCA8PCAiY21kLmV4ZSI7CisgICAgICAgICAgImNtZC5leGUiCiAjZWxzZQotICBmb3V0IDw8ICIvYmluL3NoIjsKKyAgICAgICAgICAiL2Jpbi9zaCIKICNlbmRpZgotICBmb3V0IDw8ICJcIlxuIgorICAgICAgICAgICJcIlxuIgogICAgICAgICAgICIgICAgb3B0aW9ucyA9IHtcIlNwZWNpYWxPcHRpb25zXCJ9XG4iCiAgICAgICAgICAgIiAgfVxuIgotICAgICAgICAgICJ9XG4iOworICAgICAgICAgICJ9XG4iCiAKLSAgZm91dCA8PCAiXG5cbiI7Ci0gIGZvdXQgPDwgIkZpbGVUeXBlcyB7XG4iCisgICAgICAgICAgIlxuXG4iCisgICAgICAgICAgIkZpbGVUeXBlcyB7XG4iCiAgICAgICAgICAgIiAgQ21ha2VSdWxlIHtcbiIKICAgICAgICAgICAiICAgIG5hbWUgPSBcIkN1c3RvbSBSdWxlXCJcbiIKICAgICAgICAgICAiICAgIGFjdGlvbiA9IFwiJlJ1blwiXG4iCi0gICAgICAgICAgIiAgICBleHRlbnNpb25zID0ge1wiIjsKKyAgICAgICAgICAiICAgIGV4dGVuc2lvbnMgPSB7XCIiCiAjaWZkZWYgX1dJTjMyCi0gIGZvdXQgPDwgImJhdCI7CisgICAgICAgICAgImJhdCIKICNlbHNlCi0gIGZvdXQgPDwgInNoIjsKKyAgICAgICAgICAic2giCiAjZW5kaWYKLSAgZm91dCA8PCAiXCJ9XG4iCisgICAgICAgICAgIlwifVxuIgogICAgICAgICAgICIgICAgZ3JlcGFibGUgPSBmYWxzZVxuIgogICAgICAgICAgICIgICAgY29tbWFuZCA9IFwiQ3VzdG9tIFJ1bGUgQ29tbWFuZFwiXG4iCi0gICAgICAgICAgIiAgICBjb21tYW5kTGluZSA9IFwiJENPTU1BTkQgIjsKKyAgICAgICAgICAiICAgIGNvbW1hbmRMaW5lID0gXCIkQ09NTUFORCAiCiAjaWZkZWYgX1dJTjMyCi0gIGZvdXQgPDwgIi9jIjsKKyAgICAgICAgICAiL2MiCiAjZW5kaWYKLSAgZm91dCA8PCAiICRJTlBVVEZJTEVcIlxuIgorICAgICAgICAgICIgJElOUFVURklMRVwiXG4iCiAgICAgICAgICAgIiAgICBwcm9ncmVzcyA9IFwiUHJvY2Vzc2luZyBDdXN0b20gUnVsZVwiXG4iCiAgICAgICAgICAgIiAgICBwcm9tb3RlVG9GaXJzdFBhc3MgPSB0cnVlXG4iCiAgICAgICAgICAgIiAgICBvdXRwdXRUeXBlID0gXCJOb25lXCJcbiIKQEAgLTMyNywxMyArMzI5LDEzIEBACiAgIHRoaXMtPldyaXRlSGlnaExldmVsRGlyZWN0aXZlcyhyb290LCBmb3V0KTsKICAgR2hzTXVsdGlHcGo6OldyaXRlR3BqVGFnKEdoc011bHRpR3BqOjpQUk9KRUNULCBmb3V0KTsKIAotICBmb3V0IDw8ICIjIFRvcCBMZXZlbCBQcm9qZWN0IEZpbGUiIDw8IHN0ZDo6ZW5kbDsKKyAgZm91dCA8PCAiIyBUb3AgTGV2ZWwgUHJvamVjdCBGaWxlXG4iOwogCiAgIC8vIFNwZWNpZnkgQlNQIG9wdGlvbiBpZiBzdXBwbGllZCBieSB1c2VyCiAgIGNvbnN0IGNoYXIqIGJzcE5hbWUgPQogICAgIHRoaXMtPkdldENNYWtlSW5zdGFuY2UoKS0+R2V0Q2FjaGVEZWZpbml0aW9uKCJHSFNfQlNQX05BTUUiKTsKICAgaWYgKCFjbUlzT2ZmKGJzcE5hbWUpKSB7Ci0gICAgZm91dCA8PCAiICAgIC1ic3AgIiA8PCBic3BOYW1lIDw8IHN0ZDo6ZW5kbDsKKyAgICBmb3V0IDw8ICIgICAgLWJzcCAiIDw8IGJzcE5hbWUgPDwgJ1xuJzsKICAgfQogCiAgIC8vIFNwZWNpZnkgT1MgRElSIGlmIHN1cHBsaWVkIGJ5IHVzZXIKQEAgLTM0OCwxNCArMzUwLDE0IEBACiAgICAgfSBlbHNlIHsKICAgICAgIGZvdXQgPDwgb3NEaXJPcHRpb247CiAgICAgfQotICAgIGZvdXQgPDwgIlwiIiA8PCB0aGlzLT5Pc0RpciA8PCAiXCIiIDw8IHN0ZDo6ZW5kbDsKKyAgICBmb3V0IDw8ICJcIiIgPDwgdGhpcy0+T3NEaXIgPDwgIlwiXG4iOwogICB9CiB9CiAKIHZvaWQgY21HbG9iYWxHaHNNdWx0aUdlbmVyYXRvcjo6V3JpdGVTdWJQcm9qZWN0cyhzdGQ6Om9zdHJlYW0mIGZvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcmIGFsbF90YXJnZXQpCiB7Ci0gIGZvdXQgPDwgIkNNYWtlRmlsZXMvIiA8PCBhbGxfdGFyZ2V0IDw8ICIgW1Byb2plY3RdIiA8PCBzdGQ6OmVuZGw7CisgIGZvdXQgPDwgIkNNYWtlRmlsZXMvIiA8PCBhbGxfdGFyZ2V0IDw8ICIgW1Byb2plY3RdXG4iOwogICAvLyBBbGwga25vd24gdGFyZ2V0cwogICBmb3IgKGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0KiB0YXJnZXQgOiB0aGlzLT5Qcm9qZWN0VGFyZ2V0cykgewogICAgIGlmICh0YXJnZXQtPkdldFR5cGUoKSA9PSBjbVN0YXRlRW51bXM6OklOVEVSRkFDRV9MSUJSQVJZIHx8CkBAIC0zNjYsNyArMzY4LDcgQEAKICAgICAgIGNvbnRpbnVlOwogICAgIH0KICAgICBmb3V0IDw8ICJDTWFrZUZpbGVzLyIgPDwgdGFyZ2V0LT5HZXROYW1lKCkgKyAiLnRndCIgKyBGSUxFX0VYVEVOU0lPTgotICAgICAgICAgPDwgIiBbUHJvamVjdF0iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgIDw8ICIgW1Byb2plY3RdXG4iOwogICB9CiB9CiAKQEAgLTM5MCw3ICszOTIsNyBAQAogCiAgICAgc3RkOjpzdHJpbmcgcHJvakZpbGUgPSBkaXIgKyBwcm9qTmFtZSArIEZJTEVfRVhURU5TSU9OOwogICAgIGZvdXQgPDwgcHJvakZpbGU7Ci0gICAgZm91dCA8PCAiICIgPDwgcHJvalR5cGUgPDwgc3RkOjplbmRsOworICAgIGZvdXQgPDwgJyAnIDw8IHByb2pUeXBlIDw8ICdcbic7CiAgIH0gZWxzZSB7CiAgICAgLyogU2hvdWxkIG5ldmVyIGhhcHBlbiAqLwogICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPQpAQCAtNjEyLDE0ICs2MTQsMTQgQEAKIHZvaWQgY21HbG9iYWxHaHNNdWx0aUdlbmVyYXRvcjo6V3JpdGVNYWNyb3Moc3RkOjpvc3RyZWFtJiBmb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUxvY2FsR2VuZXJhdG9yKiByb290KQogewotICBmb3V0IDw8ICJtYWNybyBQUk9KX05BTUU9IiA8PCByb290LT5HZXRQcm9qZWN0TmFtZSgpIDw8IHN0ZDo6ZW5kbDsKKyAgZm91dCA8PCAibWFjcm8gUFJPSl9OQU1FPSIgPDwgcm9vdC0+R2V0UHJvamVjdE5hbWUoKSA8PCAnXG4nOwogICBjaGFyIGNvbnN0KiBnaHNHcGpNYWNyb3MgPQogICAgIHRoaXMtPkdldENNYWtlSW5zdGFuY2UoKS0+R2V0Q2FjaGVEZWZpbml0aW9uKCJHSFNfR1BKX01BQ1JPUyIpOwogICBpZiAobnVsbHB0ciAhPSBnaHNHcGpNYWNyb3MpIHsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZXhwYW5kZWRMaXN0ID0KICAgICAgIGNtRXhwYW5kZWRMaXN0KHN0ZDo6c3RyaW5nKGdoc0dwak1hY3JvcykpOwogICAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGFyZyA6IGV4cGFuZGVkTGlzdCkgewotICAgICAgZm91dCA8PCAibWFjcm8gIiA8PCBhcmcgPDwgc3RkOjplbmRsOworICAgICAgZm91dCA8PCAibWFjcm8gIiA8PCBhcmcgPDwgJ1xuJzsKICAgICB9CiAgIH0KIH0KQEAgLTY0MiwzMCArNjQ0LDI3IEBACiAgICAgdGd0ID0gY21TdHJDYXQoKGEgPyBhIDogIiIpLCAnXycsIChwID8gcCA6ICIiKSwgIi50Z3QiKTsKICAgfQogCi0gIGZvdXQgPDwgInByaW1hcnlUYXJnZXQ9IiA8PCB0Z3QgPDwgc3RkOjplbmRsOwotICBmb3V0IDw8ICJjdXN0b21pemF0aW9uPSIgPDwgcm9vdC0+R2V0QmluYXJ5RGlyZWN0b3J5KCkKLSAgICAgICA8PCAiL0NNYWtlRmlsZXMvY3VzdG9tX3J1bGUuYm9kIiA8PCBzdGQ6OmVuZGw7Ci0gIGZvdXQgPDwgImN1c3RvbWl6YXRpb249IiA8PCByb290LT5HZXRCaW5hcnlEaXJlY3RvcnkoKQotICAgICAgIDw8ICIvQ01ha2VGaWxlcy9jdXN0b21fdGFyZ2V0LmJvZCIgPDwgc3RkOjplbmRsOworICAvKiBjbGFuZy1mb3JtYXQgb2ZmICovCisgIGZvdXQgPDwgInByaW1hcnlUYXJnZXQ9IiA8PCB0Z3QgPDwgIlxuIgorICAgICAgICAgICJjdXN0b21pemF0aW9uPSIgPDwgcm9vdC0+R2V0QmluYXJ5RGlyZWN0b3J5KCkKKyAgICAgICA8PCAiL0NNYWtlRmlsZXMvY3VzdG9tX3J1bGUuYm9kXG4iCisgICAgICAgICAgImN1c3RvbWl6YXRpb249IiA8PCByb290LT5HZXRCaW5hcnlEaXJlY3RvcnkoKQorICAgICAgIDw8ICIvQ01ha2VGaWxlcy9jdXN0b21fdGFyZ2V0LmJvZCIgPDwgJ1xuJzsKKyAgLyogY2xhbmctZm9ybWF0IG9uICovCiAKICAgY2hhciBjb25zdCogY29uc3QgY3VzdG9taXphdGlvbiA9CiAgICAgdGhpcy0+R2V0Q01ha2VJbnN0YW5jZSgpLT5HZXRDYWNoZURlZmluaXRpb24oIkdIU19DVVNUT01JWkFUSU9OIik7CiAgIGlmIChudWxscHRyICE9IGN1c3RvbWl6YXRpb24gJiYgc3RybGVuKGN1c3RvbWl6YXRpb24pID4gMCkgewotICAgIGZvdXQgPDwgImN1c3RvbWl6YXRpb249IiA8PCB0aGlzLT5UcmltUXVvdGVzKGN1c3RvbWl6YXRpb24pIDw8IHN0ZDo6ZW5kbDsKKyAgICBmb3V0IDw8ICJjdXN0b21pemF0aW9uPSIKKyAgICAgICAgIDw8IGNtR2xvYmFsR2hzTXVsdGlHZW5lcmF0b3I6OlRyaW1RdW90ZXMoY3VzdG9taXphdGlvbikgPDwgJ1xuJzsKICAgICB0aGlzLT5HZXRDTWFrZUluc3RhbmNlKCktPk1hcmtDbGlBc1VzZWQoIkdIU19DVVNUT01JWkFUSU9OIik7CiAgIH0KIH0KIAotc3RkOjpzdHJpbmcgY21HbG9iYWxHaHNNdWx0aUdlbmVyYXRvcjo6VHJpbVF1b3RlcyhzdGQ6OnN0cmluZyBjb25zdCYgc3RyKQorc3RkOjpzdHJpbmcgY21HbG9iYWxHaHNNdWx0aUdlbmVyYXRvcjo6VHJpbVF1b3RlcyhzdGQ6OnN0cmluZyBzdHIpCiB7Ci0gIHN0ZDo6c3RyaW5nIHJlc3VsdDsKLSAgcmVzdWx0LnJlc2VydmUoc3RyLnNpemUoKSk7Ci0gIGZvciAoY29uc3QgY2hhciogY2ggPSBzdHIuY19zdHIoKTsgKmNoICE9ICdcMCc7ICsrY2gpIHsKLSAgICBpZiAoKmNoICE9ICciJykgewotICAgICAgcmVzdWx0ICs9ICpjaDsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKKyAgY206OmVyYXNlKHN0ciwgJyInKTsKKyAgcmV0dXJuIHN0cjsKIH0KIAogYm9vbCBjbUdsb2JhbEdoc011bHRpR2VuZXJhdG9yOjpUYXJnZXRDb21wYXJlOjpvcGVyYXRvcigpKApkaWZmIC0tZ2l0IGEvU291cmNlL2NtR2xvYmFsR2hzTXVsdGlHZW5lcmF0b3IuaCBiL1NvdXJjZS9jbUdsb2JhbEdoc011bHRpR2VuZXJhdG9yLmgKaW5kZXggYjgyZTlmNS4uMTJjYThiNiAxMDA2NDQKLS0tIGEvU291cmNlL2NtR2xvYmFsR2hzTXVsdGlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvY21HbG9iYWxHaHNNdWx0aUdlbmVyYXRvci5oCkBAIC0xMTEsNyArMTExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxjbUxvY2FsR2VuZXJhdG9yKj4mIGdlbmVyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcmIGFsbF90YXJnZXQpOwogCi0gIHN0ZDo6c3RyaW5nIFRyaW1RdW90ZXMoc3RkOjpzdHJpbmcgY29uc3QmIHN0cik7CisgIHN0YXRpYyBzdGQ6OnN0cmluZyBUcmltUXVvdGVzKHN0ZDo6c3RyaW5nIHN0cik7CiAKICAgc3RkOjpzdHJpbmcgT3NEaXI7CiAgIHN0YXRpYyBjb25zdCBjaGFyKiBERUZBVUxUX0JVSUxEX1BST0dSQU07CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21HbG9iYWxOaW5qYUdlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21HbG9iYWxOaW5qYUdlbmVyYXRvci5jeHgKaW5kZXggZjRkMTAyZS4uMDYyZjhlOSAxMDA2NDQKLS0tIGEvU291cmNlL2NtR2xvYmFsTmluamFHZW5lcmF0b3IuY3h4CisrKyBiL1NvdXJjZS9jbUdsb2JhbE5pbmphR2VuZXJhdG9yLmN4eApAQCAtNDYsNyArNDYsOCBAQAogI2luY2x1ZGUgImNtYWtlLmgiCiAKIGNvbnN0IGNoYXIqIGNtR2xvYmFsTmluamFHZW5lcmF0b3I6Ok5JTkpBX0JVSUxEX0ZJTEUgPSAiYnVpbGQubmluamEiOwotY29uc3QgY2hhciogY21HbG9iYWxOaW5qYUdlbmVyYXRvcjo6TklOSkFfUlVMRVNfRklMRSA9ICJydWxlcy5uaW5qYSI7Citjb25zdCBjaGFyKiBjbUdsb2JhbE5pbmphR2VuZXJhdG9yOjpOSU5KQV9SVUxFU19GSUxFID0KKyAgIkNNYWtlRmlsZXMvcnVsZXMubmluamEiOwogY29uc3QgY2hhciogY21HbG9iYWxOaW5qYUdlbmVyYXRvcjo6SU5ERU5UID0gIiAgIjsKICNpZmRlZiBfV0lOMzIKIHN0ZDo6c3RyaW5nIGNvbnN0IGNtR2xvYmFsTmluamFHZW5lcmF0b3I6OlNIRUxMX05PT1AgPSAiY2QgLiI7CkBAIC0xNDcsMTUgKzE0OCwxNSBAQAogewogICAvLyBNYWtlIHN1cmUgdGhlcmUgaXMgYSBydWxlLgogICBpZiAoYnVpbGQuUnVsZS5lbXB0eSgpKSB7Ci0gICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoIk5vIHJ1bGUgZm9yIFdyaXRlQnVpbGQhIGNhbGxlZCB3aXRoIGNvbW1lbnQ6ICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkLkNvbW1lbnQpOworICAgIGNtU3lzdGVtVG9vbHM6OkVycm9yKGNtU3RyQ2F0KAorICAgICAgIk5vIHJ1bGUgZm9yIFdyaXRlQnVpbGQhIGNhbGxlZCB3aXRoIGNvbW1lbnQ6ICIsIGJ1aWxkLkNvbW1lbnQpKTsKICAgICByZXR1cm47CiAgIH0KIAogICAvLyBNYWtlIHN1cmUgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIG91dHB1dCBmaWxlLgogICBpZiAoYnVpbGQuT3V0cHV0cy5lbXB0eSgpKSB7Ci0gICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoCi0gICAgICAiTm8gb3V0cHV0IGZpbGVzIGZvciBXcml0ZUJ1aWxkISBjYWxsZWQgd2l0aCBjb21tZW50OiAiICsgYnVpbGQuQ29tbWVudCk7CisgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoY21TdHJDYXQoCisgICAgICAiTm8gb3V0cHV0IGZpbGVzIGZvciBXcml0ZUJ1aWxkISBjYWxsZWQgd2l0aCBjb21tZW50OiAiLCBidWlsZC5Db21tZW50KSk7CiAgICAgcmV0dXJuOwogICB9CiAKQEAgLTE2Niw3ICsxNjcsNyBAQAogICB7CiAgICAgLy8gV3JpdGUgZXhwbGljaXQgb3V0cHV0cwogICAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIG91dHB1dCA6IGJ1aWxkLk91dHB1dHMpIHsKLSAgICAgIGJ1aWxkU3RyICs9ICIgIiArIEVuY29kZVBhdGgob3V0cHV0KTsKKyAgICAgIGJ1aWxkU3RyICs9IGNtU3RyQ2F0KCcgJywgRW5jb2RlUGF0aChvdXRwdXQpKTsKICAgICAgIGlmICh0aGlzLT5Db21wdXRpbmdVbmtub3duRGVwZW5kZW5jaWVzKSB7CiAgICAgICAgIHRoaXMtPkNvbWJpbmVkQnVpbGRPdXRwdXRzLmluc2VydChvdXRwdXQpOwogICAgICAgfQpAQCAtMTc1LDE0ICsxNzYsMTMgQEAKICAgICBpZiAoIWJ1aWxkLkltcGxpY2l0T3V0cy5lbXB0eSgpKSB7CiAgICAgICBidWlsZFN0ciArPSAiIHwiOwogICAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgaW1wbGljaXRPdXQgOiBidWlsZC5JbXBsaWNpdE91dHMpIHsKLSAgICAgICAgYnVpbGRTdHIgKz0gIiAiICsgRW5jb2RlUGF0aChpbXBsaWNpdE91dCk7CisgICAgICAgIGJ1aWxkU3RyICs9IGNtU3RyQ2F0KCcgJywgRW5jb2RlUGF0aChpbXBsaWNpdE91dCkpOwogICAgICAgfQogICAgIH0KLSAgICBidWlsZFN0ciArPSAiOiI7CisgICAgYnVpbGRTdHIgKz0gJzonOwogCiAgICAgLy8gV3JpdGUgdGhlIHJ1bGUuCi0gICAgYnVpbGRTdHIgKz0gIiAiOwotICAgIGJ1aWxkU3RyICs9IGJ1aWxkLlJ1bGU7CisgICAgYnVpbGRTdHIgKz0gY21TdHJDYXQoJyAnLCBidWlsZC5SdWxlKTsKICAgfQogCiAgIHN0ZDo6c3RyaW5nIGFyZ3VtZW50czsKQEAgLTE5MSwxNCArMTkxLDE0IEBACiAKICAgICAvLyBXcml0ZSBleHBsaWNpdCBkZXBlbmRlbmNpZXMuCiAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgZXhwbGljaXREZXAgOiBidWlsZC5FeHBsaWNpdERlcHMpIHsKLSAgICAgIGFyZ3VtZW50cyArPSAiICIgKyBFbmNvZGVQYXRoKGV4cGxpY2l0RGVwKTsKKyAgICAgIGFyZ3VtZW50cyArPSBjbVN0ckNhdCgnICcsIEVuY29kZVBhdGgoZXhwbGljaXREZXApKTsKICAgICB9CiAKICAgICAvLyBXcml0ZSBpbXBsaWNpdCBkZXBlbmRlbmNpZXMuCiAgICAgaWYgKCFidWlsZC5JbXBsaWNpdERlcHMuZW1wdHkoKSkgewogICAgICAgYXJndW1lbnRzICs9ICIgfCI7CiAgICAgICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBpbXBsaWNpdERlcCA6IGJ1aWxkLkltcGxpY2l0RGVwcykgewotICAgICAgICBhcmd1bWVudHMgKz0gIiAiICsgRW5jb2RlUGF0aChpbXBsaWNpdERlcCk7CisgICAgICAgIGFyZ3VtZW50cyArPSBjbVN0ckNhdCgnICcsIEVuY29kZVBhdGgoaW1wbGljaXREZXApKTsKICAgICAgIH0KICAgICB9CiAKQEAgLTIwNiwxMSArMjA2LDExIEBACiAgICAgaWYgKCFidWlsZC5PcmRlck9ubHlEZXBzLmVtcHR5KCkpIHsKICAgICAgIGFyZ3VtZW50cyArPSAiIHx8IjsKICAgICAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIG9yZGVyT25seURlcCA6IGJ1aWxkLk9yZGVyT25seURlcHMpIHsKLSAgICAgICAgYXJndW1lbnRzICs9ICIgIiArIEVuY29kZVBhdGgob3JkZXJPbmx5RGVwKTsKKyAgICAgICAgYXJndW1lbnRzICs9IGNtU3RyQ2F0KCcgJywgRW5jb2RlUGF0aChvcmRlck9ubHlEZXApKTsKICAgICAgIH0KICAgICB9CiAKLSAgICBhcmd1bWVudHMgKz0gIlxuIjsKKyAgICBhcmd1bWVudHMgKz0gJ1xuJzsKICAgfQogCiAgIC8vIFdyaXRlIHRoZSB2YXJpYWJsZXMgYm91bmQgdG8gdGhpcyBidWlsZCBzdGF0ZW1lbnQuCkBAIC0zMDksNyArMzA5LDcgQEAKIHZvaWQgY21HbG9iYWxOaW5qYUdlbmVyYXRvcjo6QWRkTWFjT1NYQ29udGVudFJ1bGUoKQogewogICBjbU5pbmphUnVsZSBydWxlKCJDT1BZX09TWF9DT05URU5UIik7Ci0gIHJ1bGUuQ29tbWFuZCA9IENNYWtlQ21kKCkgKyAiIC1FIGNvcHkgJGluICRvdXQiOworICBydWxlLkNvbW1hbmQgPSBjbVN0ckNhdChDTWFrZUNtZCgpLCAiIC1FIGNvcHkgJGluICRvdXQiKTsKICAgcnVsZS5EZXNjcmlwdGlvbiA9ICJDb3B5aW5nIE9TIFggQ29udGVudCAkb3V0IjsKICAgcnVsZS5Db21tZW50ID0gIlJ1bGUgZm9yIGNvcHlpbmcgT1MgWCBidW5kbGUgY29udGVudCBmaWxlLiI7CiAgIHRoaXMtPkFkZFJ1bGUocnVsZSk7CkBAIC0zMzQsMjMgKzMzNCwyNCBAQAogICAvLyAtLSBQYXJhbWV0ZXIgY2hlY2tzCiAgIC8vIE1ha2Ugc3VyZSB0aGUgcnVsZSBoYXMgYSBuYW1lLgogICBpZiAocnVsZS5OYW1lLmVtcHR5KCkpIHsKLSAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigiTm8gbmFtZSBnaXZlbiBmb3IgV3JpdGVSdWxlISBjYWxsZWQgd2l0aCBjb21tZW50OiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLkNvbW1lbnQpOworICAgIGNtU3lzdGVtVG9vbHM6OkVycm9yKGNtU3RyQ2F0KAorICAgICAgIk5vIG5hbWUgZ2l2ZW4gZm9yIFdyaXRlUnVsZSEgY2FsbGVkIHdpdGggY29tbWVudDogIiwgcnVsZS5Db21tZW50KSk7CiAgICAgcmV0dXJuOwogICB9CiAKICAgLy8gTWFrZSBzdXJlIGEgY29tbWFuZCBpcyBnaXZlbi4KICAgaWYgKHJ1bGUuQ29tbWFuZC5lbXB0eSgpKSB7Ci0gICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoCi0gICAgICAiTm8gY29tbWFuZCBnaXZlbiBmb3IgV3JpdGVSdWxlISBjYWxsZWQgd2l0aCBjb21tZW50OiAiICsgcnVsZS5Db21tZW50KTsKKyAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcihjbVN0ckNhdCgKKyAgICAgICJObyBjb21tYW5kIGdpdmVuIGZvciBXcml0ZVJ1bGUhIGNhbGxlZCB3aXRoIGNvbW1lbnQ6ICIsIHJ1bGUuQ29tbWVudCkpOwogICAgIHJldHVybjsKICAgfQogCiAgIC8vIE1ha2Ugc3VyZSByZXNwb25zZSBmaWxlIGNvbnRlbnQgaXMgZ2l2ZW4KICAgaWYgKCFydWxlLlJzcEZpbGUuZW1wdHkoKSAmJiBydWxlLlJzcENvbnRlbnQuZW1wdHkoKSkgewotICAgIGNtU3lzdGVtVG9vbHM6OkVycm9yKCJyc3BmaWxlIGJ1dCBubyByc3BmaWxlX2NvbnRlbnQgZ2l2ZW4gZm9yIFdyaXRlUnVsZSEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsZWQgd2l0aCBjb21tZW50OiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLkNvbW1lbnQpOworICAgIGNtU3lzdGVtVG9vbHM6OkVycm9yKAorICAgICAgY21TdHJDYXQoInJzcGZpbGUgYnV0IG5vIHJzcGZpbGVfY29udGVudCBnaXZlbiBmb3IgV3JpdGVSdWxlISAiCisgICAgICAgICAgICAgICAiY2FsbGVkIHdpdGggY29tbWVudDogIiwKKyAgICAgICAgICAgICAgIHJ1bGUuQ29tbWVudCkpOwogICAgIHJldHVybjsKICAgfQogCkBAIC0zOTIsOSArMzkzLDkgQEAKIHsKICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYSBuYW1lLgogICBpZiAobmFtZS5lbXB0eSgpKSB7Ci0gICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoIk5vIG5hbWUgZ2l2ZW4gZm9yIFdyaXRlVmFyaWFibGUhIGNhbGxlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggY29tbWVudDogIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudCk7CisgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoY21TdHJDYXQoIk5vIG5hbWUgZ2l2ZW4gZm9yIFdyaXRlVmFyaWFibGUhIGNhbGxlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggY29tbWVudDogIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50KSk7CiAgICAgcmV0dXJuOwogICB9CiAKQEAgLTU1OCwxMSArNTU5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtU3lzdGVtVG9vbHM6Ok9VVFBVVF9OT05FKSkgewogICAgICAgdGhpcy0+R2V0Q01ha2VJbnN0YW5jZSgpLT5Jc3N1ZU1lc3NhZ2UoTWVzc2FnZVR5cGU6OkZBVEFMX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJ1bm5pbmdcbiAnIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtSm9pbihjb21tYW5kLCAiJyAnIikgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHdpdGg6XG4gIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtU3RyQ2F0KCJSdW5uaW5nXG4gJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUpvaW4oY29tbWFuZCwgIicgJyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgd2l0aDpcbiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpKTsKICAgICAgIGNtU3lzdGVtVG9vbHM6OlNldEZhdGFsRXJyb3JPY2N1cmVkKCk7CiAgICAgfQogICB9OwpAQCAtNjI2LDEwICs2MjcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21TeXN0ZW1Ub29sczo6T1VUUFVUX05PTkUpKSB7CiAgICAgICBtZi0+SXNzdWVNZXNzYWdlKE1lc3NhZ2VUeXBlOjpGQVRBTF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIlJ1bm5pbmdcbiAnIiArIGNtSm9pbihjb21tYW5kLCAiJyAnIikgKwotICAgICAgICAgICAgICAgICAgICAgICAgICInXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB3aXRoOlxuICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgY21TdHJDYXQoIlJ1bm5pbmdcbiAnIiwgY21Kb2luKGNvbW1hbmQsICInICciKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB3aXRoOlxuICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKSk7CiAgICAgICBjbVN5c3RlbVRvb2xzOjpTZXRGYXRhbEVycm9yT2NjdXJlZCgpOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTcxMyw3ICs3MTQsNyBAQAogICAvKiBjbGFuZy1mb3JtYXQgb2ZmICovCiAgIGUgPDwKICAgICAiVGhlIE5pbmphIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0IEZvcnRyYW4gdXNpbmcgTmluamEgdmVyc2lvblxuIgotICAgICIgICIgKyB0aGlzLT5OaW5qYVZlcnNpb24gKyAiXG4iCisgICAgIiAgIiA8PCB0aGlzLT5OaW5qYVZlcnNpb24gPDwgIlxuIgogICAgICJkdWUgdG8gbGFjayBvZiByZXF1aXJlZCBmZWF0dXJlcy4gICIKICAgICAiS2l0d2FyZSBoYXMgaW1wbGVtZW50ZWQgdGhlIHJlcXVpcmVkIGZlYXR1cmVzIGFuZCB0aGV5IGhhdmUgYmVlbiAiCiAgICAgIm1lcmdlZCB0byB1cHN0cmVhbSBuaW5qYSBmb3IgaW5jbHVzaW9uIGluIE5pbmphIDEuMTAgYW5kIGhpZ2hlci4gICIKQEAgLTk5OCw3ICs5OTksOCBAQAogICBzdGQ6OnN0cmluZyBidWlsZEZpbGVEaXIgPQogICAgIHRoaXMtPkdldENNYWtlSW5zdGFuY2UoKS0+R2V0SG9tZU91dHB1dERpcmVjdG9yeSgpOwogICBpZiAoIXRoaXMtPkNvbXBpbGVDb21tYW5kc1N0cmVhbSkgewotICAgIHN0ZDo6c3RyaW5nIGJ1aWxkRmlsZVBhdGggPSBidWlsZEZpbGVEaXIgKyAiL2NvbXBpbGVfY29tbWFuZHMuanNvbiI7CisgICAgc3RkOjpzdHJpbmcgYnVpbGRGaWxlUGF0aCA9CisgICAgICBjbVN0ckNhdChidWlsZEZpbGVEaXIsICIvY29tcGlsZV9jb21tYW5kcy5qc29uIik7CiAgICAgaWYgKHRoaXMtPkNvbXB1dGluZ1Vua25vd25EZXBlbmRlbmNpZXMpIHsKICAgICAgIHRoaXMtPkNvbWJpbmVkQnVpbGRPdXRwdXRzLmluc2VydCgKICAgICAgICAgdGhpcy0+TmluamFPdXRwdXRQYXRoKCJjb21waWxlX2NvbW1hbmRzLmpzb24iKSk7CkBAIC0xMDA3LDkgKzEwMDksOSBAQAogICAgIC8vIEdldCBhIHN0cmVhbSB3aGVyZSB0byBnZW5lcmF0ZSB0aGluZ3MuCiAgICAgdGhpcy0+Q29tcGlsZUNvbW1hbmRzU3RyZWFtID0KICAgICAgIGNtOjptYWtlX3VuaXF1ZTxjbUdlbmVyYXRlZEZpbGVTdHJlYW0+KGJ1aWxkRmlsZVBhdGgpOwotICAgICp0aGlzLT5Db21waWxlQ29tbWFuZHNTdHJlYW0gPDwgIlsiOworICAgICp0aGlzLT5Db21waWxlQ29tbWFuZHNTdHJlYW0gPDwgIltcbiI7CiAgIH0gZWxzZSB7Ci0gICAgKnRoaXMtPkNvbXBpbGVDb21tYW5kc1N0cmVhbSA8PCAiLCIgPDwgc3RkOjplbmRsOworICAgICp0aGlzLT5Db21waWxlQ29tbWFuZHNTdHJlYW0gPDwgIixcbiI7CiAgIH0KIAogICBzdGQ6OnN0cmluZyBzb3VyY2VGaWxlTmFtZSA9IHNvdXJjZUZpbGU7CkBAIC0xMDE5LDcgKzEwMjEsNyBAQAogICB9CiAKICAgLyogY2xhbmctZm9ybWF0IG9mZiAqLwotICAqdGhpcy0+Q29tcGlsZUNvbW1hbmRzU3RyZWFtIDw8ICJcbntcbiIKKyAgKnRoaXMtPkNvbXBpbGVDb21tYW5kc1N0cmVhbSA8PCAie1xuIgogICAgICA8PCBSIiggICJkaXJlY3RvcnkiOiAiKSIKICAgICAgPDwgY21HbG9iYWxHZW5lcmF0b3I6OkVzY2FwZUpTT04oYnVpbGRGaWxlRGlyKSA8PCAiXCIsXG4iCiAgICAgIDw8IFIiKCAgImNvbW1hbmQiOiAiKSIKQEAgLTEwNjQsOCArMTA2Niw4IEBACiBzdGQ6OnN0cmluZyBjbUdsb2JhbE5pbmphR2VuZXJhdG9yOjpPcmRlckRlcGVuZHNUYXJnZXRGb3JUYXJnZXQoCiAgIGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0KiB0YXJnZXQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcpCiB7Ci0gIHJldHVybiAiY21ha2Vfb2JqZWN0X29yZGVyX2RlcGVuZHNfdGFyZ2V0XyIgKyB0YXJnZXQtPkdldE5hbWUoKSArICJfIiArCi0gICAgY29uZmlnOworICByZXR1cm4gY21TdHJDYXQoImNtYWtlX29iamVjdF9vcmRlcl9kZXBlbmRzX3RhcmdldF8iLCB0YXJnZXQtPkdldE5hbWUoKSwgJ18nLAorICAgICAgICAgICAgICAgICAgY29uZmlnKTsKIH0KIAogdm9pZCBjbUdsb2JhbE5pbmphR2VuZXJhdG9yOjpBcHBlbmRUYXJnZXRPdXRwdXRzKApAQCAtMTEwMyw4ICsxMTA1LDggQEAKICAgICBjYXNlIGNtU3RhdGVFbnVtczo6R0xPQkFMX1RBUkdFVDoKICAgICBjYXNlIGNtU3RhdGVFbnVtczo6VVRJTElUWTogewogICAgICAgc3RkOjpzdHJpbmcgcGF0aCA9Ci0gICAgICAgIHRhcmdldC0+R2V0TG9jYWxHZW5lcmF0b3IoKS0+R2V0Q3VycmVudEJpbmFyeURpcmVjdG9yeSgpICsKLSAgICAgICAgc3RkOjpzdHJpbmcoIi8iKSArIHRhcmdldC0+R2V0TmFtZSgpOworICAgICAgICBjbVN0ckNhdCh0YXJnZXQtPkdldExvY2FsR2VuZXJhdG9yKCktPkdldEN1cnJlbnRCaW5hcnlEaXJlY3RvcnkoKSwgJy8nLAorICAgICAgICAgICAgICAgICB0YXJnZXQtPkdldE5hbWUoKSk7CiAgICAgICBzdGQ6OnN0cmluZyBvdXRwdXQgPSB0aGlzLT5Db252ZXJ0VG9OaW5qYVBhdGgocGF0aCk7CiAgICAgICBpZiAodGFyZ2V0LT5UYXJnZXQtPklzUGVyQ29uZmlnKCkpIHsKICAgICAgICAgb3V0cHV0ID0gdGhpcy0+QnVpbGRBbGlhcyhvdXRwdXQsIGNvbmZpZyk7CkBAIC0xMTI4LDggKzExMzAsOCBAQAogICAgIGZvciAoQlQ8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBib29sPj4gY29uc3QmIHV0aWwgOgogICAgICAgICAgdGFyZ2V0LT5HZXRVdGlsaXRpZXMoKSkgewogICAgICAgc3RkOjpzdHJpbmcgZCA9Ci0gICAgICAgIHRhcmdldC0+R2V0TG9jYWxHZW5lcmF0b3IoKS0+R2V0Q3VycmVudEJpbmFyeURpcmVjdG9yeSgpICsgIi8iICsKLSAgICAgICAgdXRpbC5WYWx1ZS5maXJzdDsKKyAgICAgICAgY21TdHJDYXQodGFyZ2V0LT5HZXRMb2NhbEdlbmVyYXRvcigpLT5HZXRDdXJyZW50QmluYXJ5RGlyZWN0b3J5KCksICcvJywKKyAgICAgICAgICAgICAgICAgdXRpbC5WYWx1ZS5maXJzdCk7CiAgICAgICBvdXRwdXRzLnB1c2hfYmFjayh0aGlzLT5CdWlsZEFsaWFzKHRoaXMtPkNvbnZlcnRUb05pbmphUGF0aChkKSwgY29uZmlnKSk7CiAgICAgfQogICB9IGVsc2UgewpAQCAtMTM1NiwxMiArMTM1OCwxMyBAQAogCiAgICAgLy8gU2V0dXAgdGFyZ2V0CiAgICAgY21OaW5qYURlcHMgY29uZmlnRGVwczsKLSAgICBidWlsZC5Db21tZW50ID0gIkZvbGRlcjogIiArIGN1cnJlbnRCaW5hcnlEaXI7CisgICAgYnVpbGQuQ29tbWVudCA9IGNtU3RyQ2F0KCJGb2xkZXI6ICIsIGN1cnJlbnRCaW5hcnlEaXIpOwogICAgIGJ1aWxkLk91dHB1dHMuZW1wbGFjZV9iYWNrKCk7CisgICAgc3RkOjpzdHJpbmcgY29uc3QgYnVpbGREaXJBbGxUYXJnZXQgPQorICAgICAgdGhpcy0+Q29udmVydFRvTmluamFQYXRoKGNtU3RyQ2F0KGN1cnJlbnRCaW5hcnlEaXIsICIvYWxsIikpOwogICAgIGZvciAoYXV0byBjb25zdCYgY29uZmlnIDogY29uZmlncykgewogICAgICAgYnVpbGQuRXhwbGljaXREZXBzLmNsZWFyKCk7Ci0gICAgICBidWlsZC5PdXRwdXRzLmZyb250KCkgPSB0aGlzLT5CdWlsZEFsaWFzKAotICAgICAgICB0aGlzLT5Db252ZXJ0VG9OaW5qYVBhdGgoY3VycmVudEJpbmFyeURpciArICIvYWxsIiksIGNvbmZpZyk7CisgICAgICBidWlsZC5PdXRwdXRzLmZyb250KCkgPSB0aGlzLT5CdWlsZEFsaWFzKGJ1aWxkRGlyQWxsVGFyZ2V0LCBjb25maWcpOwogICAgICAgY29uZmlnRGVwcy5lbXBsYWNlX2JhY2soYnVpbGQuT3V0cHV0cy5mcm9udCgpKTsKICAgICAgIGZvciAoRGlyZWN0b3J5VGFyZ2V0OjpUYXJnZXQgY29uc3QmIHQgOiBkdC5UYXJnZXRzKSB7CiAgICAgICAgIGlmICghdC5FeGNsdWRlRnJvbUFsbCkgewpAQCAtMTM3MSw3ICsxMzc0LDcgQEAKICAgICAgIGZvciAoRGlyZWN0b3J5VGFyZ2V0OjpEaXIgY29uc3QmIGQgOiBkdC5DaGlsZHJlbikgewogICAgICAgICBpZiAoIWQuRXhjbHVkZUZyb21BbGwpIHsKICAgICAgICAgICBidWlsZC5FeHBsaWNpdERlcHMuZW1wbGFjZV9iYWNrKHRoaXMtPkJ1aWxkQWxpYXMoCi0gICAgICAgICAgICB0aGlzLT5Db252ZXJ0VG9OaW5qYVBhdGgoZC5QYXRoICsgIi9hbGwiKSwgY29uZmlnKSk7CisgICAgICAgICAgICB0aGlzLT5Db252ZXJ0VG9OaW5qYVBhdGgoY21TdHJDYXQoZC5QYXRoLCAiL2FsbCIpKSwgY29uZmlnKSk7CiAgICAgICAgIH0KICAgICAgIH0KICAgICAgIC8vIFdyaXRlIHRhcmdldApAQCAtMTM4NSwyMSArMTM4OCwxOCBAQAogICAgIC8vIEFkZCBzaG9ydGN1dCB0YXJnZXQKICAgICBpZiAodGhpcy0+SXNNdWx0aUNvbmZpZygpKSB7CiAgICAgICBmb3IgKGF1dG8gY29uc3QmIGNvbmZpZyA6IGNvbmZpZ3MpIHsKLSAgICAgICAgYnVpbGQuRXhwbGljaXREZXBzID0geyB0aGlzLT5CdWlsZEFsaWFzKAotICAgICAgICAgIHRoaXMtPkNvbnZlcnRUb05pbmphUGF0aChjdXJyZW50QmluYXJ5RGlyICsgIi9hbGwiKSwgY29uZmlnKSB9OwotICAgICAgICBidWlsZC5PdXRwdXRzLmZyb250KCkgPQotICAgICAgICAgIHRoaXMtPkNvbnZlcnRUb05pbmphUGF0aChjdXJyZW50QmluYXJ5RGlyICsgIi9hbGwiKTsKKyAgICAgICAgYnVpbGQuRXhwbGljaXREZXBzID0geyB0aGlzLT5CdWlsZEFsaWFzKGJ1aWxkRGlyQWxsVGFyZ2V0LCBjb25maWcpIH07CisgICAgICAgIGJ1aWxkLk91dHB1dHMuZnJvbnQoKSA9IGJ1aWxkRGlyQWxsVGFyZ2V0OwogICAgICAgICB0aGlzLT5Xcml0ZUJ1aWxkKCp0aGlzLT5HZXRDb25maWdGaWxlU3RyZWFtKGNvbmZpZyksIGJ1aWxkKTsKICAgICAgIH0KIAogICAgICAgaWYgKCF0aGlzLT5EZWZhdWx0RmlsZUNvbmZpZy5lbXB0eSgpKSB7CiAgICAgICAgIGJ1aWxkLkV4cGxpY2l0RGVwcy5jbGVhcigpOwogICAgICAgICBmb3IgKGF1dG8gY29uc3QmIGNvbmZpZyA6IHRoaXMtPkRlZmF1bHRDb25maWdzKSB7Ci0gICAgICAgICAgYnVpbGQuRXhwbGljaXREZXBzLnB1c2hfYmFjayh0aGlzLT5CdWlsZEFsaWFzKAotICAgICAgICAgICAgdGhpcy0+Q29udmVydFRvTmluamFQYXRoKGN1cnJlbnRCaW5hcnlEaXIgKyAiL2FsbCIpLCBjb25maWcpKTsKKyAgICAgICAgICBidWlsZC5FeHBsaWNpdERlcHMucHVzaF9iYWNrKAorICAgICAgICAgICAgdGhpcy0+QnVpbGRBbGlhcyhidWlsZERpckFsbFRhcmdldCwgY29uZmlnKSk7CiAgICAgICAgIH0KLSAgICAgICAgYnVpbGQuT3V0cHV0cy5mcm9udCgpID0KLSAgICAgICAgICB0aGlzLT5Db252ZXJ0VG9OaW5qYVBhdGgoY3VycmVudEJpbmFyeURpciArICIvYWxsIik7CisgICAgICAgIGJ1aWxkLk91dHB1dHMuZnJvbnQoKSA9IGJ1aWxkRGlyQWxsVGFyZ2V0OwogICAgICAgICB0aGlzLT5Xcml0ZUJ1aWxkKCp0aGlzLT5HZXREZWZhdWx0RmlsZVN0cmVhbSgpLCBidWlsZCk7CiAgICAgICB9CiAgICAgfQpAQCAtMTQwOCwxMSArMTQwOCwxMCBAQAogICAgIGlmICh0aGlzLT5FbmFibGVDcm9zc0NvbmZpZ0J1aWxkKCkpIHsKICAgICAgIGJ1aWxkLkV4cGxpY2l0RGVwcy5jbGVhcigpOwogICAgICAgZm9yIChhdXRvIGNvbnN0JiBjb25maWcgOiB0aGlzLT5Dcm9zc0NvbmZpZ3MpIHsKLSAgICAgICAgYnVpbGQuRXhwbGljaXREZXBzLnB1c2hfYmFjayh0aGlzLT5CdWlsZEFsaWFzKAotICAgICAgICAgIHRoaXMtPkNvbnZlcnRUb05pbmphUGF0aChjdXJyZW50QmluYXJ5RGlyICsgIi9hbGwiKSwgY29uZmlnKSk7CisgICAgICAgIGJ1aWxkLkV4cGxpY2l0RGVwcy5wdXNoX2JhY2soCisgICAgICAgICAgdGhpcy0+QnVpbGRBbGlhcyhidWlsZERpckFsbFRhcmdldCwgY29uZmlnKSk7CiAgICAgICB9Ci0gICAgICBidWlsZC5PdXRwdXRzLmZyb250KCkgPSB0aGlzLT5CdWlsZEFsaWFzKAotICAgICAgICB0aGlzLT5Db252ZXJ0VG9OaW5qYVBhdGgoY3VycmVudEJpbmFyeURpciArICIvYWxsIiksICJhbGwiKTsKKyAgICAgIGJ1aWxkLk91dHB1dHMuZnJvbnQoKSA9IHRoaXMtPkJ1aWxkQWxpYXMoYnVpbGREaXJBbGxUYXJnZXQsICJhbGwiKTsKICAgICAgIHRoaXMtPldyaXRlQnVpbGQob3MsIGJ1aWxkKTsKICAgICB9CiAgIH0KQEAgLTE2MjQsNyArMTYyMyw4IEBACiAKICAgICBjbU5pbmphQnVpbGQgcGhvbnlCdWlsZCgicGhvbnkiKTsKICAgICBwaG9ueUJ1aWxkLkNvbW1lbnQgPSAiUGhvbnkgdGFyZ2V0IHRvIGZvcmNlIGdsb2IgdmVyaWZpY2F0aW9uIHJ1bi4iOwotICAgIHBob255QnVpbGQuT3V0cHV0cy5wdXNoX2JhY2soY20tPkdldEdsb2JWZXJpZnlTY3JpcHQoKSArICJfZm9yY2UiKTsKKyAgICBwaG9ueUJ1aWxkLk91dHB1dHMucHVzaF9iYWNrKAorICAgICAgY21TdHJDYXQoY20tPkdldEdsb2JWZXJpZnlTY3JpcHQoKSwgIl9mb3JjZSIpKTsKICAgICB0aGlzLT5Xcml0ZUJ1aWxkKG9zLCBwaG9ueUJ1aWxkKTsKIAogICAgIHJlQnVpbGQuVmFyaWFibGVzWyJyZXN0YXQiXSA9ICIxIjsKQEAgLTE4MTUsNyArMTgxNSw3IEBACiAgIC8vIFdyaXRlIHJ1bGUKICAgewogICAgIGNtTmluamFSdWxlIHJ1bGUoIkNMRUFOIik7Ci0gICAgcnVsZS5Db21tYW5kID0gTmluamFDbWQoKSArICIgJEZJTEVfQVJHIC10IGNsZWFuICRUQVJHRVRTIjsKKyAgICBydWxlLkNvbW1hbmQgPSBjbVN0ckNhdChOaW5qYUNtZCgpLCAiICRGSUxFX0FSRyAtdCBjbGVhbiAkVEFSR0VUUyIpOwogICAgIHJ1bGUuRGVzY3JpcHRpb24gPSAiQ2xlYW5pbmcgYWxsIGJ1aWx0IGZpbGVzLi4uIjsKICAgICBydWxlLkNvbW1lbnQgPSAiUnVsZSBmb3IgY2xlYW5pbmcgYWxsIGJ1aWx0IGZpbGVzLiI7CiAgICAgV3JpdGVSdWxlKCp0aGlzLT5SdWxlc0ZpbGVTdHJlYW0sIHJ1bGUpOwpAQCAtMTkyOSw3ICsxOTI5LDcgQEAKIHsKICAgewogICAgIGNtTmluamFSdWxlIHJ1bGUoIkhFTFAiKTsKLSAgICBydWxlLkNvbW1hbmQgPSBOaW5qYUNtZCgpICsgIiAtdCB0YXJnZXRzIjsKKyAgICBydWxlLkNvbW1hbmQgPSBjbVN0ckNhdChOaW5qYUNtZCgpLCAiIC10IHRhcmdldHMiKTsKICAgICBydWxlLkRlc2NyaXB0aW9uID0gIkFsbCBwcmltYXJ5IHRhcmdldHMgYXZhaWxhYmxlOiI7CiAgICAgcnVsZS5Db21tZW50ID0gIlJ1bGUgZm9yIHByaW50aW5nIGFsbCBwcmltYXJ5IHRhcmdldHMgYXZhaWxhYmxlLiI7CiAgICAgV3JpdGVSdWxlKCp0aGlzLT5SdWxlc0ZpbGVTdHJlYW0sIHJ1bGUpOwpAQCAtMTk1Niw3ICsxOTU2LDcgQEAKICAgaWYgKCF0aGlzLT5IYXNPdXRwdXRQYXRoUHJlZml4KCkgfHwgY21TeXN0ZW1Ub29sczo6RmlsZUlzRnVsbFBhdGgocGF0aCkpIHsKICAgICByZXR1cm4gcGF0aDsKICAgfQotICByZXR1cm4gdGhpcy0+T3V0cHV0UGF0aFByZWZpeCArIHBhdGg7CisgIHJldHVybiBjbVN0ckNhdCh0aGlzLT5PdXRwdXRQYXRoUHJlZml4LCBwYXRoKTsKIH0KIAogdm9pZCBjbUdsb2JhbE5pbmphR2VuZXJhdG9yOjpTdHJpcE5pbmphT3V0cHV0UGF0aFByZWZpeEFzU3VmZml4KApAQCAtMjA4NCw3ICsyMDg0LDggQEAKICAgICB9IGVsc2UgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItLWxhbmc9IikpIHsKICAgICAgIGFyZ19sYW5nID0gYXJnLnN1YnN0cig3KTsKICAgICB9IGVsc2UgewotICAgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoIi1FIGNtYWtlX25pbmphX2RlcGVuZHMgdW5rbm93biBhcmd1bWVudDogIiArIGFyZyk7CisgICAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigKKyAgICAgICAgY21TdHJDYXQoIi1FIGNtYWtlX25pbmphX2RlcGVuZHMgdW5rbm93biBhcmd1bWVudDogIiwgYXJnKSk7CiAgICAgICByZXR1cm4gMTsKICAgICB9CiAgIH0KQEAgLTIxNTUsNyArMjE1Niw4IEBACiAgIGNtR2VuZXJhdGVkRmlsZVN0cmVhbSBkZGlmKGFyZ19kZGkpOwogICBkZGlmIDw8IGRkaTsKICAgaWYgKCFkZGlmKSB7Ci0gICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoIi1FIGNtYWtlX25pbmphX2RlcGVuZHMgZmFpbGVkIHRvIHdyaXRlICIgKyBhcmdfZGRpKTsKKyAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigKKyAgICAgIGNtU3RyQ2F0KCItRSBjbWFrZV9uaW5qYV9kZXBlbmRzIGZhaWxlZCB0byB3cml0ZSAiLCBhcmdfZGRpKSk7CiAgICAgcmV0dXJuIDE7CiAgIH0KICAgcmV0dXJuIDA7CkBAIC0yMjAxLDcgKzIyMDMsOCBAQAogICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gZGVmaW5lczsKICAgY21Gb3J0cmFuUGFyc2VyIHBhcnNlcihmYywgaW5jbHVkZXMsIGRlZmluZXMsIGZpbmZvKTsKICAgaWYgKCFjbUZvcnRyYW5QYXJzZXJfRmlsZVB1c2goJnBhcnNlciwgYXJnX3BwLmNfc3RyKCkpKSB7Ci0gICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoIi1FIGNtYWtlX25pbmphX2RlcGVuZHMgZmFpbGVkIHRvIG9wZW4gIiArIGFyZ19wcCk7CisgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoCisgICAgICBjbVN0ckNhdCgiLUUgY21ha2VfbmluamFfZGVwZW5kcyBmYWlsZWQgdG8gb3BlbiAiLCBhcmdfcHApKTsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQogICBpZiAoY21Gb3J0cmFuX3l5cGFyc2UocGFyc2VyLlNjYW5uZXIpICE9IDApIHsKQEAgLTIzMDQsNyArMjMwNyw3IEBACiAgIEpzb246OlZhbHVlIHRtID0gSnNvbjo6b2JqZWN0VmFsdWU7CiAgIGZvciAoY21EeW5kZXBPYmplY3RJbmZvIGNvbnN0JiBvYmplY3QgOiBvYmplY3RzKSB7CiAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgcCA6IG9iamVjdC5Qcm92aWRlcykgewotICAgICAgc3RkOjpzdHJpbmcgY29uc3QgbW9kID0gbW9kdWxlX2RpciArIHA7CisgICAgICBzdGQ6OnN0cmluZyBjb25zdCBtb2QgPSBjbVN0ckNhdChtb2R1bGVfZGlyLCBwKTsKICAgICAgIG1vZF9maWxlc1twXSA9IG1vZDsKICAgICAgIHRtW3BdID0gbW9kOwogICAgIH0KQEAgLTIzNDAsOCArMjM0Myw4IEBACiAKICAgLy8gU3RvcmUgdGhlIG1hcCBvZiBtb2R1bGVzIHByb3ZpZGVkIGJ5IHRoaXMgdGFyZ2V0IGluIGEgZmlsZSBmb3IKICAgLy8gdXNlIGJ5IGRlcGVuZGVudHMgdGhhdCByZWZlcmVuY2UgdGhpcyB0YXJnZXQgaW4gbGlua2VkLXRhcmdldC1kaXJzLgotICBzdGQ6OnN0cmluZyBjb25zdCB0YXJnZXRfbW9kc19maWxlID0KLSAgICBjbVN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZVBhdGgoYXJnX2RkKSArICIvIiArIGFyZ19sYW5nICsgIk1vZHVsZXMuanNvbiI7CisgIHN0ZDo6c3RyaW5nIGNvbnN0IHRhcmdldF9tb2RzX2ZpbGUgPSBjbVN0ckNhdCgKKyAgICBjbVN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZVBhdGgoYXJnX2RkKSwgJy8nLCBhcmdfbGFuZywgIk1vZHVsZXMuanNvbiIpOwogICBjbUdlbmVyYXRlZEZpbGVTdHJlYW0gdG1mKHRhcmdldF9tb2RzX2ZpbGUpOwogICB0bWYgPDwgdG07CiAKQEAgLTIzNzQsNyArMjM3Nyw4IEBACiAgICAgICAgICAgICAgICBjbUhhc0xpdGVyYWxTdWZmaXgoYXJnLCAiLmRkaSIpKSB7CiAgICAgICBhcmdfZGRpcy5wdXNoX2JhY2soYXJnKTsKICAgICB9IGVsc2UgewotICAgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoIi1FIGNtYWtlX25pbmphX2R5bmRlcCB1bmtub3duIGFyZ3VtZW50OiAiICsgYXJnKTsKKyAgICAgIGNtU3lzdGVtVG9vbHM6OkVycm9yKAorICAgICAgICBjbVN0ckNhdCgiLUUgY21ha2VfbmluamFfZHluZGVwIHVua25vd24gYXJndW1lbnQ6ICIsIGFyZykpOwogICAgICAgcmV0dXJuIDE7CiAgICAgfQogICB9CkBAIC0yNDEwLDcgKzI0MTQsNyBAQAogICBzdGQ6OnN0cmluZyBjb25zdCBkaXJfdG9wX3NyYyA9IHRkaVsiZGlyLXRvcC1zcmMiXS5hc1N0cmluZygpOwogICBzdGQ6OnN0cmluZyBtb2R1bGVfZGlyID0gdGRpWyJtb2R1bGUtZGlyIl0uYXNTdHJpbmcoKTsKICAgaWYgKCFtb2R1bGVfZGlyLmVtcHR5KCkgJiYgIWNtSGFzTGl0ZXJhbFN1ZmZpeChtb2R1bGVfZGlyLCAiLyIpKSB7Ci0gICAgbW9kdWxlX2RpciArPSAiLyI7CisgICAgbW9kdWxlX2RpciArPSAnLyc7CiAgIH0KICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxpbmtlZF90YXJnZXRfZGlyczsKICAgSnNvbjo6VmFsdWUgY29uc3QmIHRkaV9saW5rZWRfdGFyZ2V0X2RpcnMgPSB0ZGlbImxpbmtlZC10YXJnZXQtZGlycyJdOwpAQCAtMjQzOCw5ICsyNDQyLDcgQEAKICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1ZmZpeCwgc3RkOjpzdHJpbmcmIGRpcikKIHsKICAgaWYgKCFjb25maWcuZW1wdHkoKSAmJiB0aGlzLT5Jc011bHRpQ29uZmlnKCkpIHsKLSAgICBkaXIgKz0gcHJlZml4OwotICAgIGRpciArPSBjb25maWc7Ci0gICAgZGlyICs9IHN1ZmZpeDsKKyAgICBkaXIgKz0gY21TdHJDYXQocHJlZml4LCBjb25maWcsIHN1ZmZpeCk7CiAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtR2xvYmFsVW5peE1ha2VmaWxlR2VuZXJhdG9yMy5jeHggYi9Tb3VyY2UvY21HbG9iYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzLmN4eAppbmRleCA5MGM5ZWYwLi41ODI4NzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HbG9iYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzLmN4eAorKysgYi9Tb3VyY2UvY21HbG9iYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzLmN4eApAQCAtNDEsNyArNDEsNiBAQAogI2Vsc2UKICAgdGhpcy0+VXNlTGlua1NjcmlwdCA9IHRydWU7CiAjZW5kaWYKLSAgdGhpcy0+Q29tbWFuZERhdGFiYXNlID0gbnVsbHB0cjsKIAogICB0aGlzLT5JbmNsdWRlRGlyZWN0aXZlID0gImluY2x1ZGUiOwogICB0aGlzLT5EZWZpbmVXaW5kb3dzTlVMTCA9IGZhbHNlOwpAQCAtNDksNiArNDgsOCBAQAogICB0aGlzLT5Vbml4Q0QgPSB0cnVlOwogfQogCitjbUdsb2JhbFVuaXhNYWtlZmlsZUdlbmVyYXRvcjM6On5jbUdsb2JhbFVuaXhNYWtlZmlsZUdlbmVyYXRvcjMoKSA9IGRlZmF1bHQ7CisKIHZvaWQgY21HbG9iYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzOjpFbmFibGVMYW5ndWFnZSgKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGNvbnN0JiBsYW5ndWFnZXMsIGNtTWFrZWZpbGUqIG1mLCBib29sIG9wdGlvbmFsKQogewpAQCAtMTU3LDEwICsxNTgsOSBAQAogICB0aGlzLT5Xcml0ZU1haW5NYWtlZmlsZTIoKTsKICAgdGhpcy0+V3JpdGVNYWluQ01ha2VmaWxlKCk7CiAKLSAgaWYgKHRoaXMtPkNvbW1hbmREYXRhYmFzZSAhPSBudWxscHRyKSB7Ci0gICAgKnRoaXMtPkNvbW1hbmREYXRhYmFzZSA8PCBzdGQ6OmVuZGwgPDwgIl0iOwotICAgIGRlbGV0ZSB0aGlzLT5Db21tYW5kRGF0YWJhc2U7Ci0gICAgdGhpcy0+Q29tbWFuZERhdGFiYXNlID0gbnVsbHB0cjsKKyAgaWYgKHRoaXMtPkNvbW1hbmREYXRhYmFzZSkgeworICAgICp0aGlzLT5Db21tYW5kRGF0YWJhc2UgPDwgIlxuXSI7CisgICAgdGhpcy0+Q29tbWFuZERhdGFiYXNlLnJlc2V0KCk7CiAgIH0KIH0KIApAQCAtMTY4LDI2ICsxNjgsMjYgQEAKICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNvdXJjZUZpbGUsIGNvbnN0IHN0ZDo6c3RyaW5nJiB3b3JraW5nRGlyZWN0b3J5LAogICBjb25zdCBzdGQ6OnN0cmluZyYgY29tcGlsZUNvbW1hbmQpCiB7Ci0gIGlmICh0aGlzLT5Db21tYW5kRGF0YWJhc2UgPT0gbnVsbHB0cikgeworICBpZiAoIXRoaXMtPkNvbW1hbmREYXRhYmFzZSkgewogICAgIHN0ZDo6c3RyaW5nIGNvbW1hbmREYXRhYmFzZU5hbWUgPQogICAgICAgdGhpcy0+R2V0Q01ha2VJbnN0YW5jZSgpLT5HZXRIb21lT3V0cHV0RGlyZWN0b3J5KCkgKwogICAgICAgIi9jb21waWxlX2NvbW1hbmRzLmpzb24iOwotICAgIHRoaXMtPkNvbW1hbmREYXRhYmFzZSA9IG5ldyBjbUdlbmVyYXRlZEZpbGVTdHJlYW0oY29tbWFuZERhdGFiYXNlTmFtZSk7Ci0gICAgKnRoaXMtPkNvbW1hbmREYXRhYmFzZSA8PCAiWyIgPDwgc3RkOjplbmRsOworICAgIHRoaXMtPkNvbW1hbmREYXRhYmFzZSA9CisgICAgICBjbTo6bWFrZV91bmlxdWU8Y21HZW5lcmF0ZWRGaWxlU3RyZWFtPihjb21tYW5kRGF0YWJhc2VOYW1lKTsKKyAgICAqdGhpcy0+Q29tbWFuZERhdGFiYXNlIDw8ICJbXG4iOwogICB9IGVsc2UgewotICAgICp0aGlzLT5Db21tYW5kRGF0YWJhc2UgPDwgIiwiIDw8IHN0ZDo6ZW5kbDsKKyAgICAqdGhpcy0+Q29tbWFuZERhdGFiYXNlIDw8ICIsXG4iOwogICB9Ci0gICp0aGlzLT5Db21tYW5kRGF0YWJhc2UgPDwgInsiIDw8IHN0ZDo6ZW5kbAorICAqdGhpcy0+Q29tbWFuZERhdGFiYXNlIDw8ICJ7XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgUiIoICAiZGlyZWN0b3J5IjogIikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgY21HbG9iYWxHZW5lcmF0b3I6OkVzY2FwZUpTT04od29ya2luZ0RpcmVjdG9yeSkKLSAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXCIsIiA8PCBzdGQ6OmVuZGwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXCIsXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgUiIoICAiY29tbWFuZCI6ICIpIgogICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGNtR2xvYmFsR2VuZXJhdG9yOjpFc2NhcGVKU09OKGNvbXBpbGVDb21tYW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcIiwiIDw8IHN0ZDo6ZW5kbAorICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcIixcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBSIiggICJmaWxlIjogIikiCi0gICAgICAgICAgICAgICAgICAgICAgICAgPDwgY21HbG9iYWxHZW5lcmF0b3I6OkVzY2FwZUpTT04oc291cmNlRmlsZSkgPDwgIlwiIgotICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbAotICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJ9IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjbUdsb2JhbEdlbmVyYXRvcjo6RXNjYXBlSlNPTihzb3VyY2VGaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcIlxufSI7CiB9CiAKIHZvaWQgY21HbG9iYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzOjpXcml0ZU1haW5NYWtlZmlsZTIoKQpAQCAtMzQzLDE5ICszNDMsMTggQEAKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYmluRGlyID0gbGcuR2V0QmluYXJ5RGlyZWN0b3J5KCk7CiAKICAgICAvLyBDTWFrZSBtdXN0IHJlcnVuIGlmIGEgYnlwcm9kdWN0IGlzIG1pc3NpbmcuCi0gICAgewotICAgICAgY21ha2VmaWxlU3RyZWFtIDw8ICIjIEJ5cHJvZHVjdHMgb2YgQ01ha2UgZ2VuZXJhdGUgc3RlcDpcbiIKLSAgICAgICAgICAgICAgICAgICAgICA8PCAic2V0KENNQUtFX01BS0VGSUxFX1BST0RVQ1RTXG4iOwotICAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgb3V0ZmlsZSA6IGxnLkdldE1ha2VmaWxlKCktPkdldE91dHB1dEZpbGVzKCkpIHsKKyAgICBjbWFrZWZpbGVTdHJlYW0gPDwgIiMgQnlwcm9kdWN0cyBvZiBDTWFrZSBnZW5lcmF0ZSBzdGVwOlxuIgorICAgICAgICAgICAgICAgICAgICA8PCAic2V0KENNQUtFX01BS0VGSUxFX1BST0RVQ1RTXG4iOworCisgICAgLy8gYWRkIGluIGFueSBieXByb2R1Y3RzIGFuZCBhbGwgdGhlIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiBmaWxlcworICAgIHN0ZDo6c3RyaW5nIHRtcFN0cjsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGxvY2FsR2VuIDogdGhpcy0+TG9jYWxHZW5lcmF0b3JzKSB7CisgICAgICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBvdXRmaWxlIDoKKyAgICAgICAgICAgbG9jYWxHZW4tPkdldE1ha2VmaWxlKCktPkdldE91dHB1dEZpbGVzKCkpIHsKICAgICAgICAgY21ha2VmaWxlU3RyZWFtIDw8ICIgIFwiIgogICAgICAgICAgICAgICAgICAgICAgICAgPDwgbGcuTWF5YmVDb252ZXJ0VG9SZWxhdGl2ZVBhdGgoYmluRGlyLCBvdXRmaWxlKQogICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlwiXG4iOwogICAgICAgfQotICAgIH0KLQotICAgIC8vIGFkZCBpbiBhbGwgdGhlIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiBmaWxlcwotICAgIHN0ZDo6c3RyaW5nIHRtcFN0cjsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGxvY2FsR2VuIDogdGhpcy0+TG9jYWxHZW5lcmF0b3JzKSB7CiAgICAgICB0bXBTdHIgPSBjbVN0ckNhdChsb2NhbEdlbi0+R2V0Q3VycmVudEJpbmFyeURpcmVjdG9yeSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIi9DTWFrZUZpbGVzL0NNYWtlRGlyZWN0b3J5SW5mb3JtYXRpb24uY21ha2UiKTsKICAgICAgIGNtYWtlZmlsZVN0cmVhbSA8PCAiICBcIiIKQEAgLTY3NCwxMCArNjczLDEwIEBACiAgICAgICB9CiAKICAgICAgIGJvb2wgdGFyZ2V0TWVzc2FnZXMgPSB0cnVlOwotICAgICAgaWYgKGNvbnN0IGNoYXIqIHRndE1zZyA9CisgICAgICBpZiAoY21Qcm9wIHRndE1zZyA9CiAgICAgICAgICAgICB0aGlzLT5HZXRDTWFrZUluc3RhbmNlKCktPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KAogICAgICAgICAgICAgICAiVEFSR0VUX01FU1NBR0VTIikpIHsKLSAgICAgICAgdGFyZ2V0TWVzc2FnZXMgPSBjbUlzT24odGd0TXNnKTsKKyAgICAgICAgdGFyZ2V0TWVzc2FnZXMgPSBjbUlzT24oKnRndE1zZyk7CiAgICAgICB9CiAKICAgICAgIGlmICh0YXJnZXRNZXNzYWdlcykgewpAQCAtNjk3LDkgKzY5Niw4IEBACiAgICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBwcm9nQ21kOwogICAgICAgICBwcm9nQ21kIDw8ICIkKENNQUtFX0NPTU1BTkQpIC1FIGNtYWtlX3Byb2dyZXNzX3N0YXJ0ICI7CiAgICAgICAgIC8vICMgaW4gdGFyZ2V0Ci0gICAgICAgIHByb2dDbWQgPDwgbGcuQ29udmVydFRvT3V0cHV0Rm9ybWF0KAotICAgICAgICAgIGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgocHJvZ3Jlc3MuRGlyKSwKLSAgICAgICAgICBjbU91dHB1dENvbnZlcnRlcjo6U0hFTEwpOworICAgICAgICBwcm9nQ21kIDw8IGxnLkNvbnZlcnRUb091dHB1dEZvcm1hdChwcm9ncmVzcy5EaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCk7CiAgICAgICAgIC8vCiAgICAgICAgIHN0ZDo6c2V0PGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0Kj4gZW1pdHRlZDsKICAgICAgICAgcHJvZ0NtZCA8PCAiICIKQEAgLTcxMSw5ICs3MDksOCBAQAogICAgICAgewogICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gcHJvZ0NtZDsKICAgICAgICAgcHJvZ0NtZCA8PCAiJChDTUFLRV9DT01NQU5EKSAtRSBjbWFrZV9wcm9ncmVzc19zdGFydCAiOyAvLyAjIDAKLSAgICAgICAgcHJvZ0NtZCA8PCBsZy5Db252ZXJ0VG9PdXRwdXRGb3JtYXQoCi0gICAgICAgICAgY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChwcm9ncmVzcy5EaXIpLAotICAgICAgICAgIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCk7CisgICAgICAgIHByb2dDbWQgPDwgbGcuQ29udmVydFRvT3V0cHV0Rm9ybWF0KHByb2dyZXNzLkRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21PdXRwdXRDb252ZXJ0ZXI6OlNIRUxMKTsKICAgICAgICAgcHJvZ0NtZCA8PCAiIDAiOwogICAgICAgICBjb21tYW5kcy5wdXNoX2JhY2socHJvZ0NtZC5zdHIoKSk7CiAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21HbG9iYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzLmggYi9Tb3VyY2UvY21HbG9iYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzLmgKaW5kZXggMzQwYTdlZi4uMTliMmI4NSAxMDA2NDQKLS0tIGEvU291cmNlL2NtR2xvYmFsVW5peE1ha2VmaWxlR2VuZXJhdG9yMy5oCisrKyBiL1NvdXJjZS9jbUdsb2JhbFVuaXhNYWtlZmlsZUdlbmVyYXRvcjMuaApAQCAtNjgsNiArNjgsMTMgQEAKICAgICAgIG5ldyBjbUdsb2JhbEdlbmVyYXRvclNpbXBsZUZhY3Rvcnk8Y21HbG9iYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzPigpKTsKICAgfQogCisgIH5jbUdsb2JhbFVuaXhNYWtlZmlsZUdlbmVyYXRvcjMoKSBvdmVycmlkZTsKKworICBjbUdsb2JhbFVuaXhNYWtlZmlsZUdlbmVyYXRvcjMoY29uc3QgY21HbG9iYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzJikgPQorICAgIGRlbGV0ZTsKKyAgY21HbG9iYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzJiBvcGVyYXRvcj0oCisgICAgY29uc3QgY21HbG9iYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzJikgPSBkZWxldGU7CisKICAgLy8hIEdldCB0aGUgbmFtZSBmb3IgdGhlIGdlbmVyYXRvci4KICAgc3RkOjpzdHJpbmcgR2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlCiAgIHsKQEAgLTIzMiw3ICsyMzksNyBAQAogICAgIHN0ZDo6c2V0PGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0Kj4mIGVtaXR0ZWQpOwogICBzaXplX3QgQ291bnRQcm9ncmVzc01hcmtzSW5BbGwoY29uc3QgY21Mb2NhbEdlbmVyYXRvciYgbGcpOwogCi0gIGNtR2VuZXJhdGVkRmlsZVN0cmVhbSogQ29tbWFuZERhdGFiYXNlOworICBzdGQ6OnVuaXF1ZV9wdHI8Y21HZW5lcmF0ZWRGaWxlU3RyZWFtPiBDb21tYW5kRGF0YWJhc2U7CiAKIHByaXZhdGU6CiAgIGNvbnN0IGNoYXIqIEdldEJ1aWxkSWdub3JlRXJyb3JzRmxhZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICItaSI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUdsb2JhbFZpc3VhbFN0dWRpbzEwR2VuZXJhdG9yLmN4eCBiL1NvdXJjZS9jbUdsb2JhbFZpc3VhbFN0dWRpbzEwR2VuZXJhdG9yLmN4eAppbmRleCBjY2I2YzUwLi41MTY2ZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HbG9iYWxWaXN1YWxTdHVkaW8xMEdlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL2NtR2xvYmFsVmlzdWFsU3R1ZGlvMTBHZW5lcmF0b3IuY3h4CkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiY21NYWtlZmlsZS5oIgogI2luY2x1ZGUgImNtTWVzc2FnZVR5cGUuaCIKICNpbmNsdWRlICJjbVNvdXJjZUZpbGUuaCIKKyNpbmNsdWRlICJjbVN0cmluZ0FsZ29yaXRobXMuaCIKICNpbmNsdWRlICJjbVZlcnNpb24uaCIKICNpbmNsdWRlICJjbVZpc3VhbFN0dWRpb1NsbkRhdGEuaCIKICNpbmNsdWRlICJjbVZpc3VhbFN0dWRpb1NsblBhcnNlci5oIgpAQCAtMzEzLDcgKzMxNCw3IEBACiAgICAgICB2ZXJzaW9uLmNsZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKHZlcnNpb24uZmluZCh0aGlzLT5HZXRQbGF0Zm9ybVRvb2xzZXRTdHJpbmcoKSkgIT0gMCkgeworICAgIGlmICghY21IYXNQcmVmaXgodmVyc2lvbiwgdGhpcy0+R2V0UGxhdGZvcm1Ub29sc2V0U3RyaW5nKCkpKSB7CiAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gZTsKICAgICAgIC8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KICAgICAgIGUgPDwKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUdsb2JhbFZpc3VhbFN0dWRpbzdHZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtR2xvYmFsVmlzdWFsU3R1ZGlvN0dlbmVyYXRvci5jeHgKaW5kZXggOTc5OTEyNC4uOWE5OTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL2NtR2xvYmFsVmlzdWFsU3R1ZGlvN0dlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL2NtR2xvYmFsVmlzdWFsU3R1ZGlvN0dlbmVyYXRvci5jeHgKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAvLyBkb2VzIG5vdCBrbm93IGFib3V0LgogICBzdGQ6OnN0cmluZyBleHRyYVBhdGg7CiAgIGlmIChjbVN5c3RlbVRvb2xzOjpHZXRFbnYoIkNNQUtFX01TVkNJREVfUlVOX1BBVEgiLCBleHRyYVBhdGgpKSB7Ci0gICAgbWYtPkFkZENhY2hlRGVmaW5pdGlvbigiQ01BS0VfTVNWQ0lERV9SVU5fUEFUSCIsIGV4dHJhUGF0aC5jX3N0cigpLAorICAgIG1mLT5BZGRDYWNoZURlZmluaXRpb24oIkNNQUtFX01TVkNJREVfUlVOX1BBVEgiLCBleHRyYVBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2F2ZWQgZW52aXJvbm1lbnQgdmFyaWFibGUgQ01BS0VfTVNWQ0lERV9SVU5fUEFUSCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbVN0YXRlRW51bXM6OlNUQVRJQyk7CiAgIH0KQEAgLTUwNSwxMyArNTA1LDEzIEBACiAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBwcm9wS2V5cyA9CiAgICAgcm9vdC0+R2V0TWFrZWZpbGUoKS0+R2V0UHJvcGVydHlLZXlzKCk7CiAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGl0IDogcHJvcEtleXMpIHsKLSAgICBpZiAoaXQuZmluZCgiVlNfR0xPQkFMX1NFQ1RJT05fIikgPT0gMCkgeworICAgIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoaXQsICJWU19HTE9CQUxfU0VDVElPTl8iKSkgewogICAgICAgc3RkOjpzdHJpbmcgc2VjdGlvblR5cGU7CiAgICAgICBzdGQ6OnN0cmluZyBuYW1lID0gaXQuc3Vic3RyKDE4KTsKLSAgICAgIGlmIChuYW1lLmZpbmQoIlBSRV8iKSA9PSAwKSB7CisgICAgICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KG5hbWUsICJQUkVfIikpIHsKICAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDQpOwogICAgICAgICBzZWN0aW9uVHlwZSA9ICJwcmVTb2x1dGlvbiI7Ci0gICAgICB9IGVsc2UgaWYgKG5hbWUuZmluZCgiUE9TVF8iKSA9PSAwKSB7CisgICAgICB9IGVsc2UgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChuYW1lLCAiUE9TVF8iKSkgewogICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHIoNSk7CiAgICAgICAgIHNlY3Rpb25UeXBlID0gInBvc3RTb2x1dGlvbiI7CiAgICAgICB9IGVsc2UKQEAgLTY3Niw3ICs2NzYsOCBAQAogICAgICAgICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBpIDogY29uZmlncykgewogICAgICAgICAgIGNvbnN0IGNoYXIqIHByb3BlcnR5VmFsdWUgPQogICAgICAgICAgICAgdGFyZ2V0LT5UYXJnZXQtPkdldE1ha2VmaWxlKCktPkdldERlZmluaXRpb24ocHJvcGVydHlOYW1lKTsKLSAgICAgICAgICBpZiAoY21Jc09uKGNtR2VuZXJhdG9yRXhwcmVzc2lvbjo6RXZhbHVhdGUoCisgICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgJiYKKyAgICAgICAgICAgICAgY21Jc09uKGNtR2VuZXJhdG9yRXhwcmVzc2lvbjo6RXZhbHVhdGUoCiAgICAgICAgICAgICAgICAgcHJvcGVydHlWYWx1ZSwgdGFyZ2V0LT5HZXRMb2NhbEdlbmVyYXRvcigpLCBpKSkpIHsKICAgICAgICAgICAgIGFjdGl2ZUNvbmZpZ3MuaW5zZXJ0KGkpOwogICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUdsb2JhbFZpc3VhbFN0dWRpbzhHZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtR2xvYmFsVmlzdWFsU3R1ZGlvOEdlbmVyYXRvci5jeHgKaW5kZXggMWM2MmZiZC4uZmEwZTkzNSAxMDA2NDQKLS0tIGEvU291cmNlL2NtR2xvYmFsVmlzdWFsU3R1ZGlvOEdlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL2NtR2xvYmFsVmlzdWFsU3R1ZGlvOEdlbmVyYXRvci5jeHgKQEAgLTI3NSwyMyArMjc1LDMxIEBACiBib29sIGNtR2xvYmFsVmlzdWFsU3R1ZGlvOEdlbmVyYXRvcjo6TmVlZHNEZXBsb3koCiAgIGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0JiB0YXJnZXQsIGNvbnN0IGNoYXIqIGNvbmZpZykgY29uc3QKIHsKLSAgY21TdGF0ZUVudW1zOjpUYXJnZXRUeXBlIHR5cGUgPSB0YXJnZXQuR2V0VHlwZSgpOwotICBib29sIG5vRGVwbG95ID0gRGVwbG95SW5oaWJpdGVkKHRhcmdldCwgY29uZmlnKTsKLSAgcmV0dXJuICFub0RlcGxveSAmJgotICAgICh0eXBlID09IGNtU3RhdGVFbnVtczo6RVhFQ1VUQUJMRSB8fAotICAgICB0eXBlID09IGNtU3RhdGVFbnVtczo6U0hBUkVEX0xJQlJBUlkpICYmCi0gICAgdGhpcy0+VGFyZ2V0U3lzdGVtU3VwcG9ydHNEZXBsb3ltZW50KCk7Ci19CisgIGNtU3RhdGVFbnVtczo6VGFyZ2V0VHlwZSBjb25zdCB0eXBlID0gdGFyZ2V0LkdldFR5cGUoKTsKKyAgaWYgKHR5cGUgIT0gY21TdGF0ZUVudW1zOjpFWEVDVVRBQkxFICYmCisgICAgICB0eXBlICE9IGNtU3RhdGVFbnVtczo6U0hBUkVEX0xJQlJBUlkpIHsKKyAgICAvLyBkZXBsb3ltZW50IG9ubHkgdmFsaWQgb24gZXhlY3V0YWJsZXMgYW5kIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgcmV0dXJuIGZhbHNlOworICB9CiAKLWJvb2wgY21HbG9iYWxWaXN1YWxTdHVkaW84R2VuZXJhdG9yOjpEZXBsb3lJbmhpYml0ZWQoCi0gIGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0JiB0YXJnZXQsIGNvbnN0IGNoYXIqIGNvbmZpZykgY29uc3QKLXsKLSAgYm9vbCByVmFsID0gZmFsc2U7Ci0gIGlmIChjb25zdCBjaGFyKiBwcm9wID0gdGFyZ2V0LkdldFByb3BlcnR5KCJWU19OT19TT0xVVElPTl9ERVBMT1kiKSkgewotICAgIHJWYWwgPSBjbUlzT24oCisgIGlmIChjb25zdCBjaGFyKiBwcm9wID0gdGFyZ2V0LkdldFByb3BlcnR5KCJWU19TT0xVVElPTl9ERVBMT1kiKSkgeworICAgIC8vIElmIHNldCwgaXQgZGljdGF0ZXMgYmVoYXZpb3IKKyAgICByZXR1cm4gY21Jc09uKAogICAgICAgY21HZW5lcmF0b3JFeHByZXNzaW9uOjpFdmFsdWF0ZShwcm9wLCB0YXJnZXQuTG9jYWxHZW5lcmF0b3IsIGNvbmZpZykpOwogICB9Ci0gIHJldHVybiByVmFsOworCisgIC8vIFRvIGJlIGRlcHJlY2F0ZWQsIGRpc2FibGUgZGVwbG95bWVudCBldmVuIGlmIHRhcmdldCBzdXBwb3J0cyBpdC4KKyAgaWYgKGNvbnN0IGNoYXIqIHByb3AgPSB0YXJnZXQuR2V0UHJvcGVydHkoIlZTX05PX1NPTFVUSU9OX0RFUExPWSIpKSB7CisgICAgaWYgKGNtSXNPbihjbUdlbmVyYXRvckV4cHJlc3Npb246OkV2YWx1YXRlKHByb3AsIHRhcmdldC5Mb2NhbEdlbmVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnKSkpIHsKKyAgICAgIC8vIElmIHRydWUsIGFsd2F5cyBkaXNhYmxlIGRlcGxveW1lbnQKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKworICAvLyBMZWdhY3kgYmVoYXZpb3IsIGVuYWJsZWQgZGVwbG95bWVudCBiYXNlZCBvbiAnaGFyZC1jb2RlZCcgdGFyZ2V0CisgIC8vIHBsYXRmb3Jtcy4KKyAgcmV0dXJuIHRoaXMtPlRhcmdldFN5c3RlbVN1cHBvcnRzRGVwbG95bWVudCgpOwogfQogCiBib29sIGNtR2xvYmFsVmlzdWFsU3R1ZGlvOEdlbmVyYXRvcjo6VGFyZ2V0U3lzdGVtU3VwcG9ydHNEZXBsb3ltZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUdsb2JhbFZpc3VhbFN0dWRpbzhHZW5lcmF0b3IuaCBiL1NvdXJjZS9jbUdsb2JhbFZpc3VhbFN0dWRpbzhHZW5lcmF0b3IuaAppbmRleCA4ZjhlMzNiLi42Y2U2N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HbG9iYWxWaXN1YWxTdHVkaW84R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL2NtR2xvYmFsVmlzdWFsU3R1ZGlvOEdlbmVyYXRvci5oCkBAIC01NywxMCArNTcsNiBAQAogICB2aXJ0dWFsIGJvb2wgTmVlZHNEZXBsb3koY21HZW5lcmF0b3JUYXJnZXQgY29uc3QmIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbmZpZykgY29uc3Q7CiAKLSAgLyoqIFJldHVybnMgdHJ1ZSBpZiBkZXBsb3ltZW50IGhhcyBiZWVuIGRpc2FibGVkIGluIGNtYWtlIGZpbGUuICovCi0gIGJvb2wgRGVwbG95SW5oaWJpdGVkKGNtR2VuZXJhdG9yVGFyZ2V0IGNvbnN0JiB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbmZpZykgY29uc3Q7Ci0KICAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdGFyZ2V0IHN5c3RlbSBzdXBwb3J0IGRlYnVnZ2luZyBkZXBsb3ltZW50LiAqLwogICB2aXJ0dWFsIGJvb2wgVGFyZ2V0U3lzdGVtU3VwcG9ydHNEZXBsb3ltZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUdsb2JhbFhDb2RlR2VuZXJhdG9yLmN4eCBiL1NvdXJjZS9jbUdsb2JhbFhDb2RlR2VuZXJhdG9yLmN4eAppbmRleCBlMDAwNWE0Li4xYzFhYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HbG9iYWxYQ29kZUdlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL2NtR2xvYmFsWENvZGVHZW5lcmF0b3IuY3h4CkBAIC04LDYgKzgsNyBAQAogI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8aW9tYW5pcD4KICNpbmNsdWRlIDxzc3RyZWFtPgorI2luY2x1ZGUgPHV0aWxpdHk+CiAKICNpbmNsdWRlIDxjbS9tZW1vcnk+CiAjaW5jbHVkZSA8Y21leHQvYWxnb3JpdGhtPgpAQCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgImNtU291cmNlR3JvdXAuaCIKICNpbmNsdWRlICJjbVN0YXRlLmgiCiAjaW5jbHVkZSAiY21TdGF0ZVR5cGVzLmgiCisjaW5jbHVkZSAiY21TdHJpbmdBbGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiY21TeXN0ZW1Ub29scy5oIgogI2luY2x1ZGUgImNtVGFyZ2V0LmgiCiAjaW5jbHVkZSAiY21YQ29kZTIxT2JqZWN0LmgiCkBAIC02NDIsNyArNjQ0LDggQEAKICAgICAgICAgICAgICAgICAgPDwgIlxuIjsKIH0KIAotc3RhdGljIGJvb2wgb2JqZWN0SWRMZXNzVGhhbihjbVhDb2RlT2JqZWN0KiBsLCBjbVhDb2RlT2JqZWN0KiByKQorc3RhdGljIGJvb2wgb2JqZWN0SWRMZXNzVGhhbihjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Y21YQ29kZU9iamVjdD4mIGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjbVhDb2RlT2JqZWN0PiYgcikKIHsKICAgcmV0dXJuIGwtPkdldElkKCkgPCByLT5HZXRJZCgpOwogfQpAQCAtNjU2LDkgKzY1OSw2IEBACiB2b2lkIGNtR2xvYmFsWENvZGVHZW5lcmF0b3I6OkNsZWFyWENvZGVPYmplY3RzKCkKIHsKICAgdGhpcy0+VGFyZ2V0RG9uZVNldC5jbGVhcigpOwotICBmb3IgKGF1dG8mIG9iaiA6IHRoaXMtPlhDb2RlT2JqZWN0cykgewotICAgIGRlbGV0ZSBvYmo7Ci0gIH0KICAgdGhpcy0+WENvZGVPYmplY3RzLmNsZWFyKCk7CiAgIHRoaXMtPlhDb2RlT2JqZWN0SURzLmNsZWFyKCk7CiAgIHRoaXMtPlhDb2RlT2JqZWN0TWFwLmNsZWFyKCk7CkBAIC02NjgsNyArNjY4LDcgQEAKICAgdGhpcy0+RmlsZVJlZnMuY2xlYXIoKTsKIH0KIAotdm9pZCBjbUdsb2JhbFhDb2RlR2VuZXJhdG9yOjphZGRPYmplY3QoY21YQ29kZU9iamVjdCogb2JqKQordm9pZCBjbUdsb2JhbFhDb2RlR2VuZXJhdG9yOjphZGRPYmplY3Qoc3RkOjp1bmlxdWVfcHRyPGNtWENvZGVPYmplY3Q+IG9iaikKIHsKICAgaWYgKG9iai0+R2V0VHlwZSgpID09IGNtWENvZGVPYmplY3Q6Ok9CSkVDVCkgewogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCA9IG9iai0+R2V0SWQoKTsKQEAgLTY4MywyMiArNjgzLDI0IEBACiAgICAgdGhpcy0+WENvZGVPYmplY3RJRHMuaW5zZXJ0KGlkKTsKICAgfQogCi0gIHRoaXMtPlhDb2RlT2JqZWN0cy5wdXNoX2JhY2sob2JqKTsKKyAgdGhpcy0+WENvZGVPYmplY3RzLnB1c2hfYmFjayhzdGQ6Om1vdmUob2JqKSk7CiB9CiAKIGNtWENvZGVPYmplY3QqIGNtR2xvYmFsWENvZGVHZW5lcmF0b3I6OkNyZWF0ZU9iamVjdCgKICAgY21YQ29kZU9iamVjdDo6UEJYVHlwZSBwdHlwZSkKIHsKLSAgY21YQ29kZU9iamVjdCogb2JqID0gbmV3IGNtWENvZGUyMU9iamVjdChwdHlwZSwgY21YQ29kZU9iamVjdDo6T0JKRUNUKTsKLSAgdGhpcy0+YWRkT2JqZWN0KG9iaik7Ci0gIHJldHVybiBvYmo7CisgIGF1dG8gb2JqID0gY206Om1ha2VfdW5pcXVlPGNtWENvZGUyMU9iamVjdD4ocHR5cGUsIGNtWENvZGVPYmplY3Q6Ok9CSkVDVCk7CisgIGF1dG8gcHRyID0gb2JqLmdldCgpOworICB0aGlzLT5hZGRPYmplY3Qoc3RkOjptb3ZlKG9iaikpOworICByZXR1cm4gcHRyOwogfQogCiBjbVhDb2RlT2JqZWN0KiBjbUdsb2JhbFhDb2RlR2VuZXJhdG9yOjpDcmVhdGVPYmplY3QoY21YQ29kZU9iamVjdDo6VHlwZSB0eXBlKQogewotICBjbVhDb2RlT2JqZWN0KiBvYmogPSBuZXcgY21YQ29kZU9iamVjdChjbVhDb2RlT2JqZWN0OjpOb25lLCB0eXBlKTsKLSAgdGhpcy0+YWRkT2JqZWN0KG9iaik7Ci0gIHJldHVybiBvYmo7CisgIGF1dG8gb2JqID0gY206Om1ha2VfdW5pcXVlPGNtWENvZGVPYmplY3Q+KGNtWENvZGVPYmplY3Q6Ok5vbmUsIHR5cGUpOworICBhdXRvIHB0ciA9IG9iai5nZXQoKTsKKyAgdGhpcy0+YWRkT2JqZWN0KHN0ZDo6bW92ZShvYmopKTsKKyAgcmV0dXJuIHB0cjsKIH0KIAogY21YQ29kZU9iamVjdCogY21HbG9iYWxYQ29kZUdlbmVyYXRvcjo6Q3JlYXRlU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKQpAQCAtMjQwNiwxMiArMjQwOCwxMyBAQAogICAvLyBDb252ZXJ0ICJYQ09ERV9BVFRSSUJVVEVfKiIgcHJvcGVydGllcyBkaXJlY3RseS4KICAgewogICAgIGZvciAoYXV0byBjb25zdCYgcHJvcCA6IGd0Z3QtPkdldFByb3BlcnR5S2V5cygpKSB7Ci0gICAgICBpZiAocHJvcC5maW5kKCJYQ09ERV9BVFRSSUJVVEVfIikgPT0gMCkgeworICAgICAgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChwcm9wLCAiWENPREVfQVRUUklCVVRFXyIpKSB7CiAgICAgICAgIHN0ZDo6c3RyaW5nIGF0dHJpYnV0ZSA9IHByb3Auc3Vic3RyKDE2KTsKICAgICAgICAgdGhpcy0+RmlsdGVyQ29uZmlndXJhdGlvbkF0dHJpYnV0ZShjb25maWdOYW1lLCBhdHRyaWJ1dGUpOwogICAgICAgICBpZiAoIWF0dHJpYnV0ZS5lbXB0eSgpKSB7CisgICAgICAgICAgY29uc3QgY2hhciogcHIgPSBndGd0LT5HZXRQcm9wZXJ0eShwcm9wKTsKICAgICAgICAgICBzdGQ6OnN0cmluZyBwcm9jZXNzZWQgPSBjbUdlbmVyYXRvckV4cHJlc3Npb246OkV2YWx1YXRlKAotICAgICAgICAgICAgZ3RndC0+R2V0UHJvcGVydHkocHJvcCksIHRoaXMtPkN1cnJlbnRMb2NhbEdlbmVyYXRvciwgY29uZmlnTmFtZSk7CisgICAgICAgICAgICBwciA/IHByIDogIiIsIHRoaXMtPkN1cnJlbnRMb2NhbEdlbmVyYXRvciwgY29uZmlnTmFtZSk7CiAgICAgICAgICAgYnVpbGRTZXR0aW5ncy0+QWRkQXR0cmlidXRlKGF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+Q3JlYXRlU3RyaW5nKHByb2Nlc3NlZCkpOwogICAgICAgICB9CkBAIC0zMTQxLDEyICszMTQ0LDEyIEBACiAgICAgLy8gUHV0IHRoaXMgbGFzdCBzbyBpdCBjYW4gb3ZlcnJpZGUgZXhpc3Rpbmcgc2V0dGluZ3MKICAgICAvLyBDb252ZXJ0ICJDTUFLRV9YQ09ERV9BVFRSSUJVVEVfKiIgdmFyaWFibGVzIGRpcmVjdGx5LgogICAgIGZvciAoY29uc3QgYXV0byYgdmFyIDogdGhpcy0+Q3VycmVudE1ha2VmaWxlLT5HZXREZWZpbml0aW9ucygpKSB7Ci0gICAgICBpZiAodmFyLmZpbmQoIkNNQUtFX1hDT0RFX0FUVFJJQlVURV8iKSA9PSAwKSB7CisgICAgICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KHZhciwgIkNNQUtFX1hDT0RFX0FUVFJJQlVURV8iKSkgewogICAgICAgICBzdGQ6OnN0cmluZyBhdHRyaWJ1dGUgPSB2YXIuc3Vic3RyKDIyKTsKICAgICAgICAgdGhpcy0+RmlsdGVyQ29uZmlndXJhdGlvbkF0dHJpYnV0ZShjb25maWcuZmlyc3QsIGF0dHJpYnV0ZSk7CiAgICAgICAgIGlmICghYXR0cmlidXRlLmVtcHR5KCkpIHsKICAgICAgICAgICBzdGQ6OnN0cmluZyBwcm9jZXNzZWQgPSBjbUdlbmVyYXRvckV4cHJlc3Npb246OkV2YWx1YXRlKAotICAgICAgICAgICAgdGhpcy0+Q3VycmVudE1ha2VmaWxlLT5HZXREZWZpbml0aW9uKHZhciksCisgICAgICAgICAgICB0aGlzLT5DdXJyZW50TWFrZWZpbGUtPkdldFNhZmVEZWZpbml0aW9uKHZhciksCiAgICAgICAgICAgICB0aGlzLT5DdXJyZW50TG9jYWxHZW5lcmF0b3IsIGNvbmZpZy5maXJzdCk7CiAgICAgICAgICAgYnVpbGRTZXR0aW5nc0ZvckNmZy0+QWRkQXR0cmlidXRlKGF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+Q3JlYXRlU3RyaW5nKHByb2Nlc3NlZCkpOwpAQCAtMzM5MCw3ICszMzkzLDcgQEAKICAgLy8gY29sbGVjdCBhbGwgdGVzdHMgZm9yIHRoZSB0YXJnZXRzCiAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBjbVhDb2RlU2NoZW1lOjpUZXN0T2JqZWN0cz4gdGVzdGFibGVzOwogCi0gIGZvciAoYXV0byBvYmogOiB0aGlzLT5YQ29kZU9iamVjdHMpIHsKKyAgZm9yIChjb25zdCBhdXRvJiBvYmogOiB0aGlzLT5YQ29kZU9iamVjdHMpIHsKICAgICBpZiAob2JqLT5HZXRUeXBlKCkgIT0gY21YQ29kZU9iamVjdDo6T0JKRUNUIHx8CiAgICAgICAgIG9iai0+R2V0SXNBKCkgIT0gY21YQ29kZU9iamVjdDo6UEJYTmF0aXZlVGFyZ2V0KSB7CiAgICAgICBjb250aW51ZTsKQEAgLTM0MDUsNyArMzQwOCw3IEBACiAgICAgICBjb250aW51ZTsKICAgICB9CiAKLSAgICB0ZXN0YWJsZXNbdGVzdGVlXS5wdXNoX2JhY2sob2JqKTsKKyAgICB0ZXN0YWJsZXNbdGVzdGVlXS5wdXNoX2JhY2sob2JqLmdldCgpKTsKICAgfQogCiAgIC8vIGdlbmVyYXRlIHNjaGVtZQpAQCAtMzQxNCwxNCArMzQxNywxNCBAQAogICAvLyBTaW5jZSB0aGUgbG93ZXN0IGF2YWlsYWJsZSBYY29kZSB2ZXJzaW9uIGZvciB0ZXN0aW5nIHdhcyA2LjQsCiAgIC8vIEknbSBzZXR0aW5nIHRoaXMgYXMgYSBsaW1pdCB0aGVuCiAgIGlmICh0aGlzLT5YY29kZVZlcnNpb24gPj0gNjQpIHsKLSAgICBmb3IgKGF1dG8gb2JqIDogdGhpcy0+WENvZGVPYmplY3RzKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBvYmogOiB0aGlzLT5YQ29kZU9iamVjdHMpIHsKICAgICAgIGlmIChvYmotPkdldFR5cGUoKSA9PSBjbVhDb2RlT2JqZWN0OjpPQkpFQ1QgJiYKICAgICAgICAgICAob2JqLT5HZXRJc0EoKSA9PSBjbVhDb2RlT2JqZWN0OjpQQlhOYXRpdmVUYXJnZXQgfHwKICAgICAgICAgICAgb2JqLT5HZXRJc0EoKSA9PSBjbVhDb2RlT2JqZWN0OjpQQlhBZ2dyZWdhdGVUYXJnZXQpICYmCiAgICAgICAgICAgKHJvb3QtPkdldE1ha2VmaWxlKCktPkdldENNYWtlSW5zdGFuY2UoKS0+R2V0SXNJblRyeUNvbXBpbGUoKSB8fAogICAgICAgICAgICBvYmotPkdldFRhcmdldCgpLT5HZXRQcm9wZXJ0eUFzQm9vbCgiWENPREVfR0VORVJBVEVfU0NIRU1FIikpKSB7CiAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0YXJnZXROYW1lID0gb2JqLT5HZXRUYXJnZXQoKS0+R2V0TmFtZSgpOwotICAgICAgICBjbVhDb2RlU2NoZW1lIHNjaG0ocm9vdCwgb2JqLCB0ZXN0YWJsZXNbdGFyZ2V0TmFtZV0sCisgICAgICAgIGNtWENvZGVTY2hlbWUgc2NobShyb290LCBvYmouZ2V0KCksIHRlc3RhYmxlc1t0YXJnZXROYW1lXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPkN1cnJlbnRDb25maWd1cmF0aW9uVHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5YY29kZVZlcnNpb24pOwogICAgICAgICBzY2htLldyaXRlWENvZGVTaGFyZWRTY2hlbWUoeGNQcm9qRGlyLApAQCAtMzY5MywxNSArMzY5NiwxNCBAQAogCiBib29sIGNtR2xvYmFsWENvZGVHZW5lcmF0b3I6OlVzZUVmZmVjdGl2ZVBsYXRmb3JtTmFtZShjbU1ha2VmaWxlKiBtZikgY29uc3QKIHsKLSAgY29uc3QgY2hhciogZXBuVmFsdWUgPQotICAgIHRoaXMtPkdldENNYWtlSW5zdGFuY2UoKS0+R2V0U3RhdGUoKS0+R2V0R2xvYmFsUHJvcGVydHkoCi0gICAgICAiWENPREVfRU1JVF9FRkZFQ1RJVkVfUExBVEZPUk1fTkFNRSIpOworICBjbVByb3AgZXBuVmFsdWUgPSB0aGlzLT5HZXRDTWFrZUluc3RhbmNlKCktPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KAorICAgICJYQ09ERV9FTUlUX0VGRkVDVElWRV9QTEFURk9STV9OQU1FIik7CiAKICAgaWYgKCFlcG5WYWx1ZSkgewogICAgIHJldHVybiBtZi0+UGxhdGZvcm1Jc0FwcGxlRW1iZWRkZWQoKTsKICAgfQogCi0gIHJldHVybiBjbUlzT24oZXBuVmFsdWUpOworICByZXR1cm4gY21Jc09uKCplcG5WYWx1ZSk7CiB9CiAKIGJvb2wgY21HbG9iYWxYQ29kZUdlbmVyYXRvcjo6U2hvdWxkU3RyaXBSZXNvdXJjZVBhdGgoY21NYWtlZmlsZSopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21HbG9iYWxYQ29kZUdlbmVyYXRvci5oIGIvU291cmNlL2NtR2xvYmFsWENvZGVHZW5lcmF0b3IuaAppbmRleCBkZjY4ZjgwLi5lMzgwZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21HbG9iYWxYQ29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9jbUdsb2JhbFhDb2RlR2VuZXJhdG9yLmgKQEAgLTM3LDYgKzM3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlcnNpb25fbnVtYmVyKTsKICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxjbUdsb2JhbEdlbmVyYXRvckZhY3Rvcnk+IE5ld0ZhY3RvcnkoKTsKIAorICBjbUdsb2JhbFhDb2RlR2VuZXJhdG9yKGNvbnN0IGNtR2xvYmFsWENvZGVHZW5lcmF0b3ImKSA9IGRlbGV0ZTsKKyAgY29uc3QgY21HbG9iYWxYQ29kZUdlbmVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IGNtR2xvYmFsWENvZGVHZW5lcmF0b3ImKSA9CisgICAgZGVsZXRlOworCiAgIC8vISBHZXQgdGhlIG5hbWUgZm9yIHRoZSBnZW5lcmF0b3IuCiAgIHN0ZDo6c3RyaW5nIEdldE5hbWUoKSBjb25zdCBvdmVycmlkZQogICB7CkBAIC0yNDksNyArMjUzLDcgQEAKICAgdW5zaWduZWQgaW50IFhjb2RlVmVyc2lvbjsKICAgc3RkOjpzdHJpbmcgVmVyc2lvblN0cmluZzsKICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IFhDb2RlT2JqZWN0SURzOwotICBzdGQ6OnZlY3RvcjxjbVhDb2RlT2JqZWN0Kj4gWENvZGVPYmplY3RzOworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y21YQ29kZU9iamVjdD4+IFhDb2RlT2JqZWN0czsKICAgY21YQ29kZU9iamVjdCogUm9vdE9iamVjdDsKIAogcHJpdmF0ZToKQEAgLTI3Myw3ICsyNzcsNyBAQAogICB2b2lkIENvbXB1dGVBcmNoaXRlY3R1cmVzKGNtTWFrZWZpbGUqIG1mKTsKICAgdm9pZCBDb21wdXRlT2JqZWN0RGlyQXJjaChjbU1ha2VmaWxlKiBtZik7CiAKLSAgdm9pZCBhZGRPYmplY3QoY21YQ29kZU9iamVjdCogb2JqKTsKKyAgdm9pZCBhZGRPYmplY3Qoc3RkOjp1bmlxdWVfcHRyPGNtWENvZGVPYmplY3Q+IG9iaik7CiAgIHN0ZDo6c3RyaW5nIFBvc3RCdWlsZE1ha2VUYXJnZXQoc3RkOjpzdHJpbmcgY29uc3QmIHROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBjb25maWdOYW1lKTsKICAgY21YQ29kZU9iamVjdCogTWFpbkdyb3VwQ2hpbGRyZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21HcmFwaFZpeldyaXRlci5jeHggYi9Tb3VyY2UvY21HcmFwaFZpeldyaXRlci5jeHgKaW5kZXggMWI3NzY3OC4uMGZjZGE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL2NtR3JhcGhWaXpXcml0ZXIuY3h4CisrKyBiL1NvdXJjZS9jbUdyYXBoVml6V3JpdGVyLmN4eApAQCAtMjk4LDEzICsyOTgsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpCiB7CiAgIGF1dG8gY29uc3QgZXNjYXBlZEdyYXBoTmFtZSA9IEVzY2FwZUZvckRvdEZpbGUobmFtZSk7Ci0gIGZzIDw8ICJkaWdyYXBoIFwiIiA8PCBlc2NhcGVkR3JhcGhOYW1lIDw8ICJcIiB7IiA8PCBzdGQ6OmVuZGw7Ci0gIGZzIDw8IHRoaXMtPkdyYXBoSGVhZGVyIDw8IHN0ZDo6ZW5kbDsKKyAgZnMgPDwgImRpZ3JhcGggXCIiIDw8IGVzY2FwZWRHcmFwaE5hbWUgPDwgIlwiIHtcbiIKKyAgICAgPDwgdGhpcy0+R3JhcGhIZWFkZXIgPDwgJ1xuJzsKIH0KIAogdm9pZCBjbUdyYXBoVml6V3JpdGVyOjpXcml0ZUZvb3RlcihjbUdlbmVyYXRlZEZpbGVTdHJlYW0mIGZzKQogewotICBmcyA8PCAifSIgPDwgc3RkOjplbmRsOworICBmcyA8PCAifVxuIjsKIH0KIAogdm9pZCBjbUdyYXBoVml6V3JpdGVyOjpXcml0ZUxlZ2VuZChjbUdlbmVyYXRlZEZpbGVTdHJlYW0mIGZzKQpAQCAtMzEyLDUyICszMTIsNDYgQEAKICAgLy8gTm90ZSB0aGF0IHRoZSBzdWJncmFwaCBuYW1lIG11c3Qgc3RhcnQgd2l0aCAiY2x1c3RlciIsIGFzIGRvbmUgaGVyZSwgdG8KICAgLy8gbWFrZSBHcmFwaHZpeiBsYXlvdXQgZW5naW5lcyBkbyB0aGUgcmlnaHQgdGhpbmcgYW5kIGtlZXAgdGhlIG5vZGVzCiAgIC8vIHRvZ2V0aGVyLgotICBmcyA8PCAic3ViZ3JhcGggY2x1c3RlckxlZ2VuZCB7IiA8PCBzdGQ6OmVuZGw7Ci0gIGZzIDw8ICIgIGxhYmVsID0gXCJMZWdlbmRcIjsiIDw8IHN0ZDo6ZW5kbDsKLSAgLy8gU2V0IHRoZSBjb2xvciBvZiB0aGUgYm94IHN1cnJvdW5kaW5nIHRoZSBsZWdlbmQuCi0gIGZzIDw8ICIgIGNvbG9yID0gYmxhY2s7IiA8PCBzdGQ6OmVuZGw7Ci0gIC8vIFdlIHVzZSBpbnZpc2libGUgZWRnZXMganVzdCB0byBlbmZvcmNlIHRoZSBsYXlvdXQuCi0gIGZzIDw8ICIgIGVkZ2UgWyBzdHlsZSA9IGludmlzIF07IiA8PCBzdGQ6OmVuZGw7Ci0KLSAgLy8gTm9kZXMuCi0gIGZzIDw8ICIgIGxlZ2VuZE5vZGUwIFsgbGFiZWwgPSBcIkV4ZWN1dGFibGVcIiwgc2hhcGUgPSAiCi0gICAgIDw8IEdSQVBIVklaX05PREVfU0hBUEVfRVhFQ1VUQUJMRSA8PCAiIF07IiA8PCBzdGQ6OmVuZGw7Ci0KLSAgZnMgPDwgIiAgbGVnZW5kTm9kZTEgWyBsYWJlbCA9IFwiU3RhdGljIExpYnJhcnlcIiwgc2hhcGUgPSAiCi0gICAgIDw8IEdSQVBIVklaX05PREVfU0hBUEVfTElCUkFSWV9TVEFUSUMgPDwgIiBdOyIgPDwgc3RkOjplbmRsOwotICBmcyA8PCAiICBsZWdlbmROb2RlMiBbIGxhYmVsID0gXCJTaGFyZWQgTGlicmFyeVwiLCBzaGFwZSA9ICIKLSAgICAgPDwgR1JBUEhWSVpfTk9ERV9TSEFQRV9MSUJSQVJZX1NIQVJFRCA8PCAiIF07IiA8PCBzdGQ6OmVuZGw7Ci0gIGZzIDw8ICIgIGxlZ2VuZE5vZGUzIFsgbGFiZWwgPSBcIk1vZHVsZSBMaWJyYXJ5XCIsIHNoYXBlID0gIgotICAgICA8PCBHUkFQSFZJWl9OT0RFX1NIQVBFX0xJQlJBUllfTU9EVUxFIDw8ICIgXTsiIDw8IHN0ZDo6ZW5kbDsKLQotICBmcyA8PCAiICBsZWdlbmROb2RlNCBbIGxhYmVsID0gXCJJbnRlcmZhY2UgTGlicmFyeVwiLCBzaGFwZSA9ICIKLSAgICAgPDwgR1JBUEhWSVpfTk9ERV9TSEFQRV9MSUJSQVJZX0lOVEVSRkFDRSA8PCAiIF07IiA8PCBzdGQ6OmVuZGw7Ci0gIGZzIDw8ICIgIGxlZ2VuZE5vZGU1IFsgbGFiZWwgPSBcIk9iamVjdCBMaWJyYXJ5XCIsIHNoYXBlID0gIgotICAgICA8PCBHUkFQSFZJWl9OT0RFX1NIQVBFX0xJQlJBUllfT0JKRUNUIDw8ICIgXTsiIDw8IHN0ZDo6ZW5kbDsKLSAgZnMgPDwgIiAgbGVnZW5kTm9kZTYgWyBsYWJlbCA9IFwiVW5rbm93biBMaWJyYXJ5XCIsIHNoYXBlID0gIgotICAgICA8PCBHUkFQSFZJWl9OT0RFX1NIQVBFX0xJQlJBUllfVU5LTk9XTiA8PCAiIF07IiA8PCBzdGQ6OmVuZGw7Ci0KLSAgZnMgPDwgIiAgbGVnZW5kTm9kZTcgWyBsYWJlbCA9IFwiQ3VzdG9tIFRhcmdldFwiLCBzaGFwZSA9ICIKLSAgICAgPDwgR1JBUEhWSVpfTk9ERV9TSEFQRV9VVElMSVRZIDw8ICIgXTsiIDw8IHN0ZDo6ZW5kbDsKLQotICAvLyBFZGdlcy4KLSAgLy8gU29tZSBvZiB0aG9zZSBhcmUgZHVtbXkgKGludmlzaWJsZSkgZWRnZXMgdG8gZW5mb3JjZSBhIGxheW91dC4KLSAgZnMgPDwgIiAgbGVnZW5kTm9kZTAgLT4gbGVnZW5kTm9kZTEgWyBzdHlsZSA9ICIgPDwgR1JBUEhWSVpfRURHRV9TVFlMRV9QVUJMSUMKLSAgICAgPDwgIiBdOyIgPDwgc3RkOjplbmRsOwotICBmcyA8PCAiICBsZWdlbmROb2RlMCAtPiBsZWdlbmROb2RlMiBbIHN0eWxlID0gIiA8PCBHUkFQSFZJWl9FREdFX1NUWUxFX1BVQkxJQwotICAgICA8PCAiIF07IiA8PCBzdGQ6OmVuZGw7Ci0gIGZzIDw8ICIgIGxlZ2VuZE5vZGUwIC0+IGxlZ2VuZE5vZGUzOyIgPDwgc3RkOjplbmRsOwotCi0gIGZzIDw8ICIgIGxlZ2VuZE5vZGUxIC0+IGxlZ2VuZE5vZGU0IFsgbGFiZWwgPSBcIkludGVyZmFjZVwiLCBzdHlsZSA9ICIKLSAgICAgPDwgR1JBUEhWSVpfRURHRV9TVFlMRV9JTlRFUkZBQ0UgPDwgIiBdOyIgPDwgc3RkOjplbmRsOwotICBmcyA8PCAiICBsZWdlbmROb2RlMiAtPiBsZWdlbmROb2RlNSBbIGxhYmVsID0gXCJQcml2YXRlXCIsIHN0eWxlID0gIgotICAgICA8PCBHUkFQSFZJWl9FREdFX1NUWUxFX1BSSVZBVEUgPDwgIiBdOyIgPDwgc3RkOjplbmRsOwotICBmcyA8PCAiICBsZWdlbmROb2RlMyAtPiBsZWdlbmROb2RlNiBbIHN0eWxlID0gIiA8PCBHUkFQSFZJWl9FREdFX1NUWUxFX1BVQkxJQwotICAgICA8PCAiIF07IiA8PCBzdGQ6OmVuZGw7Ci0KLSAgZnMgPDwgIiAgbGVnZW5kTm9kZTAgLT4gbGVnZW5kTm9kZTc7IiA8PCBzdGQ6OmVuZGw7Ci0KLSAgZnMgPDwgIn0iIDw8IHN0ZDo6ZW5kbDsKKyAgLyogY2xhbmctZm9ybWF0IG9mZiAqLworICBmcyA8PCAic3ViZ3JhcGggY2x1c3RlckxlZ2VuZCB7XG4iCisgICAgICAgICIgIGxhYmVsID0gXCJMZWdlbmRcIjtcbiIKKyAgICAgICAgLy8gU2V0IHRoZSBjb2xvciBvZiB0aGUgYm94IHN1cnJvdW5kaW5nIHRoZSBsZWdlbmQuCisgICAgICAgICIgIGNvbG9yID0gYmxhY2s7XG4iCisgICAgICAgIC8vIFdlIHVzZSBpbnZpc2libGUgZWRnZXMganVzdCB0byBlbmZvcmNlIHRoZSBsYXlvdXQuCisgICAgICAgICIgIGVkZ2UgWyBzdHlsZSA9IGludmlzIF07XG4iCisgICAgICAgIC8vIE5vZGVzLgorICAgICAgICAiICBsZWdlbmROb2RlMCBbIGxhYmVsID0gXCJFeGVjdXRhYmxlXCIsIHNoYXBlID0gIgorICAgICA8PCBHUkFQSFZJWl9OT0RFX1NIQVBFX0VYRUNVVEFCTEUgPDwgIiBdO1xuIgorICAgICAgICAiICBsZWdlbmROb2RlMSBbIGxhYmVsID0gXCJTdGF0aWMgTGlicmFyeVwiLCBzaGFwZSA9ICIKKyAgICAgPDwgR1JBUEhWSVpfTk9ERV9TSEFQRV9MSUJSQVJZX1NUQVRJQyA8PCAiIF07XG4iCisgICAgICAgICIgIGxlZ2VuZE5vZGUyIFsgbGFiZWwgPSBcIlNoYXJlZCBMaWJyYXJ5XCIsIHNoYXBlID0gIgorICAgICA8PCBHUkFQSFZJWl9OT0RFX1NIQVBFX0xJQlJBUllfU0hBUkVEIDw8ICIgXTtcbiIKKyAgICAgICAgIiAgbGVnZW5kTm9kZTMgWyBsYWJlbCA9IFwiTW9kdWxlIExpYnJhcnlcIiwgc2hhcGUgPSAiCisgICAgIDw8IEdSQVBIVklaX05PREVfU0hBUEVfTElCUkFSWV9NT0RVTEUgPDwgIiBdO1xuIgorICAgICAgICAiICBsZWdlbmROb2RlNCBbIGxhYmVsID0gXCJJbnRlcmZhY2UgTGlicmFyeVwiLCBzaGFwZSA9ICIKKyAgICAgPDwgR1JBUEhWSVpfTk9ERV9TSEFQRV9MSUJSQVJZX0lOVEVSRkFDRSA8PCAiIF07XG4iCisgICAgICAgICIgIGxlZ2VuZE5vZGU1IFsgbGFiZWwgPSBcIk9iamVjdCBMaWJyYXJ5XCIsIHNoYXBlID0gIgorICAgICA8PCBHUkFQSFZJWl9OT0RFX1NIQVBFX0xJQlJBUllfT0JKRUNUIDw8ICIgXTtcbiIKKyAgICAgICAgIiAgbGVnZW5kTm9kZTYgWyBsYWJlbCA9IFwiVW5rbm93biBMaWJyYXJ5XCIsIHNoYXBlID0gIgorICAgICA8PCBHUkFQSFZJWl9OT0RFX1NIQVBFX0xJQlJBUllfVU5LTk9XTiA8PCAiIF07XG4iCisgICAgICAgICIgIGxlZ2VuZE5vZGU3IFsgbGFiZWwgPSBcIkN1c3RvbSBUYXJnZXRcIiwgc2hhcGUgPSAiCisgICAgIDw8IEdSQVBIVklaX05PREVfU0hBUEVfVVRJTElUWSA8PCAiIF07XG4iCisgICAgICAgIC8vIEVkZ2VzLgorICAgICAgICAvLyBTb21lIG9mIHRob3NlIGFyZSBkdW1teSAoaW52aXNpYmxlKSBlZGdlcyB0byBlbmZvcmNlIGEgbGF5b3V0LgorICAgICAgICAiICBsZWdlbmROb2RlMCAtPiBsZWdlbmROb2RlMSBbIHN0eWxlID0gIgorICAgICA8PCBHUkFQSFZJWl9FREdFX1NUWUxFX1BVQkxJQyA8PCAiIF07XG4iCisgICAgICAgICIgIGxlZ2VuZE5vZGUwIC0+IGxlZ2VuZE5vZGUyIFsgc3R5bGUgPSAiCisgICAgIDw8IEdSQVBIVklaX0VER0VfU1RZTEVfUFVCTElDIDw8ICIgXTtcbiIKKyAgICAgICAgIiAgbGVnZW5kTm9kZTAgLT4gbGVnZW5kTm9kZTM7XG4iCisgICAgICAgICIgIGxlZ2VuZE5vZGUxIC0+IGxlZ2VuZE5vZGU0IFsgbGFiZWwgPSBcIkludGVyZmFjZVwiLCBzdHlsZSA9ICIKKyAgICAgPDwgR1JBUEhWSVpfRURHRV9TVFlMRV9JTlRFUkZBQ0UgPDwgIiBdO1xuIgorICAgICAgICAiICBsZWdlbmROb2RlMiAtPiBsZWdlbmROb2RlNSBbIGxhYmVsID0gXCJQcml2YXRlXCIsIHN0eWxlID0gIgorICAgICA8PCBHUkFQSFZJWl9FREdFX1NUWUxFX1BSSVZBVEUgPDwgIiBdO1xuIgorICAgICAgICAiICBsZWdlbmROb2RlMyAtPiBsZWdlbmROb2RlNiBbIHN0eWxlID0gIgorICAgICA8PCBHUkFQSFZJWl9FREdFX1NUWUxFX1BVQkxJQyA8PCAiIF07XG4iCisgICAgICAgICIgIGxlZ2VuZE5vZGUwIC0+IGxlZ2VuZE5vZGU3O1xuIgorICAgICAgICAifVxuIjsKKyAgLyogY2xhbmctZm9ybWF0IG9mZiAqLwogfQogCiB2b2lkIGNtR3JhcGhWaXpXcml0ZXI6OldyaXRlTm9kZShjbUdlbmVyYXRlZEZpbGVTdHJlYW0mIGZzLApAQCAtMzcwLDcgKzM2NCw3IEBACiAgIGF1dG8gY29uc3QgZXNjYXBlZExhYmVsID0gRXNjYXBlRm9yRG90RmlsZShpdGVtTmFtZVdpdGhBbGlhc2VzKTsKIAogICBmcyA8PCAiICAgIFwiIiA8PCBub2RlTmFtZSA8PCAiXCIgWyBsYWJlbCA9IFwiIiA8PCBlc2NhcGVkTGFiZWwKLSAgICAgPDwgIlwiLCBzaGFwZSA9ICIgPDwgZ2V0U2hhcGVGb3JUYXJnZXQoaXRlbSkgPDwgIiBdOyIgPDwgc3RkOjplbmRsOworICAgICA8PCAiXCIsIHNoYXBlID0gIiA8PCBnZXRTaGFwZUZvclRhcmdldChpdGVtKSA8PCAiIF07XG4iOwogfQogCiB2b2lkIGNtR3JhcGhWaXpXcml0ZXI6OldyaXRlQ29ubmVjdGlvbihjbUdlbmVyYXRlZEZpbGVTdHJlYW0mIGZzLApAQCAtMzgyLDExICszNzYsOSBAQAogICBhdXRvIGNvbnN0JiBkZXBlbmRlZU5hbWUgPSBkZXBlbmRlZS5Bc1N0cigpOwogCiAgIGZzIDw8ICIgICAgXCIiIDw8IHRoaXMtPk5vZGVOYW1lc1tkZXBlbmRlck5hbWVdIDw8ICJcIiAtPiBcIiIKLSAgICAgPDwgdGhpcy0+Tm9kZU5hbWVzW2RlcGVuZGVlTmFtZV0gPDwgIlwiICI7Ci0KLSAgZnMgPDwgZWRnZVN0eWxlOwotCi0gIGZzIDw8ICIgLy8gIiA8PCBkZXBlbmRlck5hbWUgPDwgIiAtPiAiIDw8IGRlcGVuZGVlTmFtZSA8PCBzdGQ6OmVuZGw7CisgICAgIDw8IHRoaXMtPk5vZGVOYW1lc1tkZXBlbmRlZU5hbWVdIDw8ICJcIiAiCisgICAgIDw8IGVkZ2VTdHlsZQorICAgICA8PCAiIC8vICIgPDwgZGVwZW5kZXJOYW1lIDw8ICIgLT4gIiA8PCBkZXBlbmRlZU5hbWUgPDwgJ1xuJzsKIH0KIAogYm9vbCBjbUdyYXBoVml6V3JpdGVyOjpJdGVtRXhjbHVkZWQoY21MaW5rSXRlbSBjb25zdCYgaXRlbSkKQEAgLTQwMiw5ICszOTQsOSBAQAogICB9CiAKICAgaWYgKGl0ZW0uVGFyZ2V0LT5HZXRUeXBlKCkgPT0gY21TdGF0ZUVudW1zOjpVVElMSVRZKSB7Ci0gICAgaWYgKChpdGVtTmFtZS5maW5kKCJOaWdodGx5IikgPT0gMCkgfHwKLSAgICAgICAgKGl0ZW1OYW1lLmZpbmQoIkNvbnRpbnVvdXMiKSA9PSAwKSB8fAotICAgICAgICAoaXRlbU5hbWUuZmluZCgiRXhwZXJpbWVudGFsIikgPT0gMCkpIHsKKyAgICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGl0ZW1OYW1lLCAiTmlnaHRseSIpIHx8CisgICAgICAgIGNtSGFzTGl0ZXJhbFByZWZpeChpdGVtTmFtZSwgIkNvbnRpbnVvdXMiKSB8fAorICAgICAgICBjbUhhc0xpdGVyYWxQcmVmaXgoaXRlbU5hbWUsICJFeHBlcmltZW50YWwiKSkgewogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21JbnN0YWxsRXhwb3J0R2VuZXJhdG9yLmN4eCBiL1NvdXJjZS9jbUluc3RhbGxFeHBvcnRHZW5lcmF0b3IuY3h4CmluZGV4IDJjNTNhMjguLjZlMzUwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUluc3RhbGxFeHBvcnRHZW5lcmF0b3IuY3h4CisrKyBiL1NvdXJjZS9jbUluc3RhbGxFeHBvcnRHZW5lcmF0b3IuY3h4CkBAIC03LDYgKzcsOCBAQAogI2luY2x1ZGUgPHNzdHJlYW0+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgPGNtL21lbW9yeT4KKwogI2lmbmRlZiBDTUFLRV9CT09UU1RSQVAKICMgIGluY2x1ZGUgImNtRXhwb3J0SW5zdGFsbEFuZHJvaWRNS0dlbmVyYXRvci5oIgogI2VuZGlmCkBAIC0zMywxOCArMzUsMTUgQEAKIHsKICAgaWYgKGFuZHJvaWQpIHsKICNpZm5kZWYgQ01BS0VfQk9PVFNUUkFQCi0gICAgdGhpcy0+RUZHZW4gPSBuZXcgY21FeHBvcnRJbnN0YWxsQW5kcm9pZE1LR2VuZXJhdG9yKHRoaXMpOworICAgIHRoaXMtPkVGR2VuID0gY206Om1ha2VfdW5pcXVlPGNtRXhwb3J0SW5zdGFsbEFuZHJvaWRNS0dlbmVyYXRvcj4odGhpcyk7CiAjZW5kaWYKICAgfSBlbHNlIHsKLSAgICB0aGlzLT5FRkdlbiA9IG5ldyBjbUV4cG9ydEluc3RhbGxGaWxlR2VuZXJhdG9yKHRoaXMpOworICAgIHRoaXMtPkVGR2VuID0gY206Om1ha2VfdW5pcXVlPGNtRXhwb3J0SW5zdGFsbEZpbGVHZW5lcmF0b3I+KHRoaXMpOwogICB9CiAgIGV4cG9ydFNldC0+QWRkSW5zdGFsbGF0aW9uKHRoaXMpOwogfQogCi1jbUluc3RhbGxFeHBvcnRHZW5lcmF0b3I6On5jbUluc3RhbGxFeHBvcnRHZW5lcmF0b3IoKQotewotICBkZWxldGUgdGhpcy0+RUZHZW47Ci19CitjbUluc3RhbGxFeHBvcnRHZW5lcmF0b3I6On5jbUluc3RhbGxFeHBvcnRHZW5lcmF0b3IoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgY21JbnN0YWxsRXhwb3J0R2VuZXJhdG9yOjpDb21wdXRlKGNtTG9jYWxHZW5lcmF0b3IqIGxnKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL2NtSW5zdGFsbEV4cG9ydEdlbmVyYXRvci5oIGIvU291cmNlL2NtSW5zdGFsbEV4cG9ydEdlbmVyYXRvci5oCmluZGV4IGNmMjhiMzUuLjQzZGQwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUluc3RhbGxFeHBvcnRHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvY21JbnN0YWxsRXhwb3J0R2VuZXJhdG9yLmgKQEAgLTcsNiArNyw3IEBACiAKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPGlvc2Z3ZD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtMzAsOCArMzEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZXhjbHVkZV9mcm9tX2FsbCwgc3RkOjpzdHJpbmcgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBuYW1lX3NwYWNlLCBib29sIGV4cG9ydE9sZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYW5kcm9pZCk7CisgIGNtSW5zdGFsbEV4cG9ydEdlbmVyYXRvcihjb25zdCBjbUluc3RhbGxFeHBvcnRHZW5lcmF0b3ImKSA9IGRlbGV0ZTsKICAgfmNtSW5zdGFsbEV4cG9ydEdlbmVyYXRvcigpIG92ZXJyaWRlOwogCisgIGNtSW5zdGFsbEV4cG9ydEdlbmVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IGNtSW5zdGFsbEV4cG9ydEdlbmVyYXRvciYpID0KKyAgICBkZWxldGU7CisKICAgY21FeHBvcnRTZXQqIEdldEV4cG9ydFNldCgpIHsgcmV0dXJuIHRoaXMtPkV4cG9ydFNldDsgfQogCiAgIGJvb2wgQ29tcHV0ZShjbUxvY2FsR2VuZXJhdG9yKiBsZykgb3ZlcnJpZGU7CkBAIC02MSw3ICs2Niw3IEBACiAKICAgc3RkOjpzdHJpbmcgVGVtcERpcjsKICAgc3RkOjpzdHJpbmcgTWFpbkltcG9ydEZpbGU7Ci0gIGNtRXhwb3J0SW5zdGFsbEZpbGVHZW5lcmF0b3IqIEVGR2VuOworICBzdGQ6OnVuaXF1ZV9wdHI8Y21FeHBvcnRJbnN0YWxsRmlsZUdlbmVyYXRvcj4gRUZHZW47CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUluc3RhbGxlZEZpbGUuY3h4IGIvU291cmNlL2NtSW5zdGFsbGVkRmlsZS5jeHgKaW5kZXggYTY1YWUwMy4uMzIzOTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL2NtSW5zdGFsbGVkRmlsZS5jeHgKKysrIGIvU291cmNlL2NtSW5zdGFsbGVkRmlsZS5jeHgKQEAgLTQyLDcgKzQyLDggQEAKIH0KIAogdm9pZCBjbUluc3RhbGxlZEZpbGU6OlNldFByb3BlcnR5KGNtTWFrZWZpbGUgY29uc3QqIG1mLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wLCBjb25zdCBjaGFyKiB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCiB7CiAgIHRoaXMtPlJlbW92ZVByb3BlcnR5KHByb3ApOwogICB0aGlzLT5BcHBlbmRQcm9wZXJ0eShtZiwgcHJvcCwgdmFsdWUpOwpAQCAtNTAsNyArNTEsOCBAQAogCiB2b2lkIGNtSW5zdGFsbGVkRmlsZTo6QXBwZW5kUHJvcGVydHkoY21NYWtlZmlsZSBjb25zdCogbWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHByb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdmFsdWUsIGJvb2wgLyphc1N0cmluZyovKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIC8qYXNTdHJpbmcqLykKIHsKICAgY21MaXN0RmlsZUJhY2t0cmFjZSBiYWNrdHJhY2UgPSBtZi0+R2V0QmFja3RyYWNlKCk7CiAgIGNtR2VuZXJhdG9yRXhwcmVzc2lvbiBnZShiYWNrdHJhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtSW5zdGFsbGVkRmlsZS5oIGIvU291cmNlL2NtSW5zdGFsbGVkRmlsZS5oCmluZGV4IDY5ODE1MWUuLjA3ZjcwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUluc3RhbGxlZEZpbGUuaAorKysgYi9Tb3VyY2UvY21JbnN0YWxsZWRGaWxlLmgKQEAgLTQ5LDEwICs0OSwxMCBAQAogICB2b2lkIFJlbW92ZVByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wKTsKIAogICB2b2lkIFNldFByb3BlcnR5KGNtTWFrZWZpbGUgY29uc3QqIG1mLCBjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKIAogICB2b2lkIEFwcGVuZFByb3BlcnR5KGNtTWFrZWZpbGUgY29uc3QqIG1mLCBjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB2YWx1ZSwgYm9vbCBhc1N0cmluZyA9IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUsIGJvb2wgYXNTdHJpbmcgPSBmYWxzZSk7CiAKICAgYm9vbCBIYXNQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUpzb25PYmplY3RzLmN4eCBiL1NvdXJjZS9jbUpzb25PYmplY3RzLmN4eAppbmRleCBkZDM2Mzg2Li45ZWNmMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Kc29uT2JqZWN0cy5jeHgKKysrIGIvU291cmNlL2NtSnNvbk9iamVjdHMuY3h4CkBAIC05MCw3ICs5MCw4IEBACiAKICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHN0YXJ0T2ZGaWxlID0gbGYuc3Vic3RyKDAsIGNtYWtlUm9vdERpci5zaXplKCkpOwogICAgICAgY29uc3QgYm9vbCBpc0ludGVybmFsID0gKHN0YXJ0T2ZGaWxlID09IGNtYWtlUm9vdERpcik7Ci0gICAgICBjb25zdCBib29sIGlzVGVtcG9yYXJ5ID0gIWlzSW50ZXJuYWwgJiYgKGxmLmZpbmQoYnVpbGREaXIgKyAnLycpID09IDApOworICAgICAgY29uc3QgYm9vbCBpc1RlbXBvcmFyeSA9CisgICAgICAgICFpc0ludGVybmFsICYmIChjbUhhc1ByZWZpeChsZiwgYnVpbGREaXIgKyAnLycpKTsKIAogICAgICAgc3RkOjpzdHJpbmcgdG9BZGQgPSBsZjsKICAgICAgIGlmICghc291cmNlRGlyLmVtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUxpbmtJdGVtLmggYi9Tb3VyY2UvY21MaW5rSXRlbS5oCmluZGV4IDBlYTI1YzAuLmFlODdlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUxpbmtJdGVtLmgKKysrIGIvU291cmNlL2NtTGlua0l0ZW0uaApAQCAtODEsNiArODEsOSBAQAogICBzdGQ6OnZlY3RvcjxjbUxpbmtJdGVtPiBXcm9uZ0NvbmZpZ0xpYnJhcmllczsKIAogICBib29sIEltcGxlbWVudGF0aW9uSXNJbnRlcmZhY2UgPSBmYWxzZTsKKworICAvLyBXaGV0aGVyIHRoZSBsaXN0IGRlcGVuZHMgb24gYSBsaW5rIGxhbmd1YWdlIGdlbmV4LgorICBib29sIEhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbiA9IGZhbHNlOwogfTsKIAogc3RydWN0IGNtT3B0aW9uYWxMaW5rSW50ZXJmYWNlIDogcHVibGljIGNtTGlua0ludGVyZmFjZQpAQCAtMTAwLDYgKzEwMyw5IEBACiB7CiAgIC8vIExhbmd1YWdlcyB3aG9zZSBydW50aW1lIGxpYnJhcmllcyBtdXN0IGJlIGxpbmtlZC4KICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IExhbmd1YWdlczsKKworICAvLyBXaGV0aGVyIHRoZSBsaXN0IGRlcGVuZHMgb24gYSBsaW5rIGxhbmd1YWdlIGdlbmV4LgorICBib29sIEhhZExpbmtMYW5ndWFnZVNlbnNpdGl2ZUNvbmRpdGlvbiA9IGZhbHNlOwogfTsKIAogLy8gQ2FjaGUgbGluayBpbXBsZW1lbnRhdGlvbiBjb21wdXRhdGlvbiBmcm9tIGVhY2ggY29uZmlndXJhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUxpc3RGaWxlQ2FjaGUuY3h4IGIvU291cmNlL2NtTGlzdEZpbGVDYWNoZS5jeHgKaW5kZXggNDc2NzljOS4uN2ViYjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtTGlzdEZpbGVDYWNoZS5jeHgKKysrIGIvU291cmNlL2NtTGlzdEZpbGVDYWNoZS5jeHgKQEAgLTI2LDEzICsyNiwxNSBAQAogc3RydWN0IGNtTGlzdEZpbGVQYXJzZXIKIHsKICAgY21MaXN0RmlsZVBhcnNlcihjbUxpc3RGaWxlKiBsZiwgY21MaXN0RmlsZUJhY2t0cmFjZSBsZmJ0LAotICAgICAgICAgICAgICAgICAgIGNtTWVzc2VuZ2VyKiBtZXNzZW5nZXIsIGNvbnN0IGNoYXIqIGZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICAgICBjbU1lc3NlbmdlciogbWVzc2VuZ2VyKTsKICAgfmNtTGlzdEZpbGVQYXJzZXIoKTsKICAgY21MaXN0RmlsZVBhcnNlcihjb25zdCBjbUxpc3RGaWxlUGFyc2VyJikgPSBkZWxldGU7CiAgIGNtTGlzdEZpbGVQYXJzZXImIG9wZXJhdG9yPShjb25zdCBjbUxpc3RGaWxlUGFyc2VyJikgPSBkZWxldGU7CiAgIHZvaWQgSXNzdWVGaWxlT3BlbkVycm9yKHN0ZDo6c3RyaW5nIGNvbnN0JiB0ZXh0KSBjb25zdDsKICAgdm9pZCBJc3N1ZUVycm9yKHN0ZDo6c3RyaW5nIGNvbnN0JiB0ZXh0KSBjb25zdDsKLSAgYm9vbCBQYXJzZUZpbGUoKTsKKyAgYm9vbCBQYXJzZUZpbGUoY29uc3QgY2hhciogZmlsZW5hbWUpOworICBib29sIFBhcnNlU3RyaW5nKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogdmlydHVhbF9maWxlbmFtZSk7CisgIGJvb2wgUGFyc2UoKTsKICAgYm9vbCBQYXJzZUZ1bmN0aW9uKGNvbnN0IGNoYXIqIG5hbWUsIGxvbmcgbGluZSk7CiAgIGJvb2wgQWRkQXJndW1lbnQoY21MaXN0RmlsZUxleGVyX1Rva2VuKiB0b2tlbiwKICAgICAgICAgICAgICAgICAgICBjbUxpc3RGaWxlQXJndW1lbnQ6OkRlbGltaXRlciBkZWxpbSk7CkBAIC01MSwxMiArNTMsMTEgQEAKIH07CiAKIGNtTGlzdEZpbGVQYXJzZXI6OmNtTGlzdEZpbGVQYXJzZXIoY21MaXN0RmlsZSogbGYsIGNtTGlzdEZpbGVCYWNrdHJhY2UgbGZidCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21NZXNzZW5nZXIqIG1lc3NlbmdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtTWVzc2VuZ2VyKiBtZXNzZW5nZXIpCiAgIDogTGlzdEZpbGUobGYpCiAgICwgQmFja3RyYWNlKHN0ZDo6bW92ZShsZmJ0KSkKICAgLCBNZXNzZW5nZXIobWVzc2VuZ2VyKQotICAsIEZpbGVOYW1lKGZpbGVuYW1lKQorICAsIEZpbGVOYW1lKG51bGxwdHIpCiAgICwgTGV4ZXIoY21MaXN0RmlsZUxleGVyX05ldygpKQogewogfQpAQCAtODMsOCArODQsMTAgQEAKICAgY21TeXN0ZW1Ub29sczo6U2V0RmF0YWxFcnJvck9jY3VyZWQoKTsKIH0KIAotYm9vbCBjbUxpc3RGaWxlUGFyc2VyOjpQYXJzZUZpbGUoKQorYm9vbCBjbUxpc3RGaWxlUGFyc2VyOjpQYXJzZUZpbGUoY29uc3QgY2hhciogZmlsZW5hbWUpCiB7CisgIHRoaXMtPkZpbGVOYW1lID0gZmlsZW5hbWU7CisKICAgLy8gT3BlbiB0aGUgZmlsZS4KICAgY21MaXN0RmlsZUxleGVyX0JPTSBib207CiAgIGlmICghY21MaXN0RmlsZUxleGVyX1NldEZpbGVOYW1lKHRoaXMtPkxleGVyLCB0aGlzLT5GaWxlTmFtZSwgJmJvbSkpIHsKQEAgLTEwNyw2ICsxMTAsMjQgQEAKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAorICByZXR1cm4gUGFyc2UoKTsKK30KKworYm9vbCBjbUxpc3RGaWxlUGFyc2VyOjpQYXJzZVN0cmluZyhjb25zdCBjaGFyKiBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHZpcnR1YWxfZmlsZW5hbWUpCit7CisgIHRoaXMtPkZpbGVOYW1lID0gdmlydHVhbF9maWxlbmFtZTsKKworICBpZiAoIWNtTGlzdEZpbGVMZXhlcl9TZXRTdHJpbmcodGhpcy0+TGV4ZXIsIHN0cikpIHsKKyAgICB0aGlzLT5Jc3N1ZUZpbGVPcGVuRXJyb3IoImNtTGlzdEZpbGVDYWNoZTogY2Fubm90IGFsbG9jYXRlIGJ1ZmZlci4iKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICByZXR1cm4gUGFyc2UoKTsKK30KKworYm9vbCBjbUxpc3RGaWxlUGFyc2VyOjpQYXJzZSgpCit7CiAgIC8vIFVzZSBhIHNpbXBsZSByZWN1cnNpdmUtZGVzY2VudCBwYXJzZXIgdG8gcHJvY2VzcyB0aGUgdG9rZW4KICAgLy8gc3RyZWFtLgogICBib29sIGhhdmVOZXdsaW5lID0gdHJ1ZTsKQEAgLTE1NSw4ICsxNzYsMjIgQEAKICAgYm9vbCBwYXJzZUVycm9yID0gZmFsc2U7CiAKICAgewotICAgIGNtTGlzdEZpbGVQYXJzZXIgcGFyc2VyKHRoaXMsIGxmYnQsIG1lc3NlbmdlciwgZmlsZW5hbWUpOwotICAgIHBhcnNlRXJyb3IgPSAhcGFyc2VyLlBhcnNlRmlsZSgpOworICAgIGNtTGlzdEZpbGVQYXJzZXIgcGFyc2VyKHRoaXMsIGxmYnQsIG1lc3Nlbmdlcik7CisgICAgcGFyc2VFcnJvciA9ICFwYXJzZXIuUGFyc2VGaWxlKGZpbGVuYW1lKTsKKyAgfQorCisgIHJldHVybiAhcGFyc2VFcnJvcjsKK30KKworYm9vbCBjbUxpc3RGaWxlOjpQYXJzZVN0cmluZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIHZpcnR1YWxfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtTWVzc2VuZ2VyKiBtZXNzZW5nZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtTGlzdEZpbGVCYWNrdHJhY2UmIGxmYnQpCit7CisgIGJvb2wgcGFyc2VFcnJvciA9IGZhbHNlOworCisgIHsKKyAgICBjbUxpc3RGaWxlUGFyc2VyIHBhcnNlcih0aGlzLCBsZmJ0LCBtZXNzZW5nZXIpOworICAgIHBhcnNlRXJyb3IgPSAhcGFyc2VyLlBhcnNlU3RyaW5nKHN0ciwgdmlydHVhbF9maWxlbmFtZSk7CiAgIH0KIAogICByZXR1cm4gIXBhcnNlRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21MaXN0RmlsZUNhY2hlLmggYi9Tb3VyY2UvY21MaXN0RmlsZUNhY2hlLmgKaW5kZXggOWNhZTgyNy4uODk5MDJmZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtTGlzdEZpbGVDYWNoZS5oCisrKyBiL1NvdXJjZS9jbUxpc3RGaWxlQ2FjaGUuaApAQCAtMTg0LDYgKzE4NCw5IEBACiAgIGJvb2wgUGFyc2VGaWxlKGNvbnN0IGNoYXIqIHBhdGgsIGNtTWVzc2VuZ2VyKiBtZXNzZW5nZXIsCiAgICAgICAgICAgICAgICAgIGNtTGlzdEZpbGVCYWNrdHJhY2UgY29uc3QmIGxmYnQpOwogCisgIGJvb2wgUGFyc2VTdHJpbmcoY29uc3QgY2hhciogc3RyLCBjb25zdCBjaGFyKiB2aXJ0dWFsX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgIGNtTWVzc2VuZ2VyKiBtZXNzZW5nZXIsIGNtTGlzdEZpbGVCYWNrdHJhY2UgY29uc3QmIGxmYnQpOworCiAgIHN0ZDo6dmVjdG9yPGNtTGlzdEZpbGVGdW5jdGlvbj4gRnVuY3Rpb25zOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtTG9hZENvbW1hbmRDb21tYW5kLmN4eCBiL1NvdXJjZS9jbUxvYWRDb21tYW5kQ29tbWFuZC5jeHgKaW5kZXggOTIyNThlMi4uNTc5MGUxNiAxMDA2NDQKLS0tIGEvU291cmNlL2NtTG9hZENvbW1hbmRDb21tYW5kLmN4eAorKysgYi9Tb3VyY2UvY21Mb2FkQ29tbWFuZENvbW1hbmQuY3h4CkBAIC0xLDUgKzEsMTUgQEAKIC8qIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBPU0ktYXBwcm92ZWQgQlNEIDMtQ2xhdXNlIExpY2Vuc2UuICBTZWUgYWNjb21wYW55aW5nCiAgICBmaWxlIENvcHlyaWdodC50eHQgb3IgaHR0cHM6Ly9jbWFrZS5vcmcvbGljZW5zaW5nIGZvciBkZXRhaWxzLiAgKi8KKworI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19zdW4pCisvLyBQT1NJWCBBUElzIGFyZSBuZWVkZWQKKyMgIGRlZmluZSBfUE9TSVhfQ19TT1VSQ0UgMjAwODA5TAorI2VuZGlmCisjaWYgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKQorLy8gRm9yIGlzYXNjaWkKKyMgIGRlZmluZSBfWE9QRU5fU09VUkNFIDcwMAorI2VuZGlmCisKICNpbmNsdWRlICJjbUxvYWRDb21tYW5kQ29tbWFuZC5oIgogCiAjaW5jbHVkZSA8Y3NpZ25hbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUxvY2FsQ29tbW9uR2VuZXJhdG9yLmN4eCBiL1NvdXJjZS9jbUxvY2FsQ29tbW9uR2VuZXJhdG9yLmN4eAppbmRleCAwMjVlZjdlLi4yNzhlYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Mb2NhbENvbW1vbkdlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL2NtTG9jYWxDb21tb25HZW5lcmF0b3IuY3h4CkBAIC01MCw2ICs1MCwxNSBAQAogICAgICAgdGhpcy0+TWFrZWZpbGUtPkdldFJlcXVpcmVkRGVmaW5pdGlvbigiQ01BS0VfRm9ydHJhbl9NT0RESVJfRkxBRyIpLAogICAgICAgbW9kX2Rpcik7CiAgICAgdGhpcy0+QXBwZW5kRmxhZ3MoZmxhZ3MsIG1vZGZsYWcpOworICAgIC8vIFNvbWUgY29tcGlsZXJzIGRvIG5vdCBzZWFyY2ggdGhlaXIgb3duIG1vZHVsZSBvdXRwdXQgZGlyZWN0b3J5CisgICAgLy8gZm9yIHVzaW5nIG90aGVyIG1vZHVsZXMuICBBZGQgYW4gaW5jbHVkZSBkaXJlY3RvcnkgZXhwbGljaXRseQorICAgIC8vIGZvciBjb25zaXN0ZW5jeSB3aXRoIGNvbXBpbGVycyB0aGF0IGRvIHNlYXJjaCBpdC4KKyAgICBzdGQ6OnN0cmluZyBpbmNmbGFnID0KKyAgICAgIHRoaXMtPk1ha2VmaWxlLT5HZXRTYWZlRGVmaW5pdGlvbigiQ01BS0VfRm9ydHJhbl9NT0RESVJfSU5DTFVERV9GTEFHIik7CisgICAgaWYgKCFpbmNmbGFnLmVtcHR5KCkpIHsKKyAgICAgIGluY2ZsYWcgPSBjbVN0ckNhdChpbmNmbGFnLCBtb2RfZGlyKTsKKyAgICAgIHRoaXMtPkFwcGVuZEZsYWdzKGZsYWdzLCBpbmNmbGFnKTsKKyAgICB9CiAgIH0KIAogICAvLyBJZiB0aGVyZSBpcyBhIHNlcGFyYXRlIG1vZHVsZSBwYXRoIGZsYWcgdGhlbiBkdXBsaWNhdGUgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21Mb2NhbEdlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21Mb2NhbEdlbmVyYXRvci5jeHgKaW5kZXggY2Y2ODAyZC4uODQ4NGM1OCAxMDA2NDQKLS0tIGEvU291cmNlL2NtTG9jYWxHZW5lcmF0b3IuY3h4CisrKyBiL1NvdXJjZS9jbUxvY2FsR2VuZXJhdG9yLmN4eApAQCAtMjg4LDIxICsyODgsMjMgQEAKICAgY21HZW5lcmF0ZWRGaWxlU3RyZWFtIGZvdXQoZmlsZSk7CiAgIGZvdXQuU2V0Q29weUlmRGlmZmVyZW50KHRydWUpOwogCi0gIGZvdXQgPDwgIiMgQ01ha2UgZ2VuZXJhdGVkIFRlc3RmaWxlIGZvciAiIDw8IHN0ZDo6ZW5kbAotICAgICAgIDw8ICIjIFNvdXJjZSBkaXJlY3Rvcnk6ICIKLSAgICAgICA8PCB0aGlzLT5TdGF0ZVNuYXBzaG90LkdldERpcmVjdG9yeSgpLkdldEN1cnJlbnRTb3VyY2UoKSA8PCBzdGQ6OmVuZGwKLSAgICAgICA8PCAiIyBCdWlsZCBkaXJlY3Rvcnk6ICIKLSAgICAgICA8PCB0aGlzLT5TdGF0ZVNuYXBzaG90LkdldERpcmVjdG9yeSgpLkdldEN1cnJlbnRCaW5hcnkoKSA8PCBzdGQ6OmVuZGwKLSAgICAgICA8PCAiIyAiIDw8IHN0ZDo6ZW5kbAotICAgICAgIDw8ICIjIFRoaXMgZmlsZSBpbmNsdWRlcyB0aGUgcmVsZXZhbnQgdGVzdGluZyBjb21tYW5kcyAiCi0gICAgICAgPDwgInJlcXVpcmVkIGZvciAiIDw8IHN0ZDo6ZW5kbAotICAgICAgIDw8ICIjIHRlc3RpbmcgdGhpcyBkaXJlY3RvcnkgYW5kIGxpc3RzIHN1YmRpcmVjdG9yaWVzIHRvICIKLSAgICAgICA8PCAiYmUgdGVzdGVkIGFzIHdlbGwuIiA8PCBzdGQ6OmVuZGw7CisgIGZvdXQgPDwgIiMgQ01ha2UgZ2VuZXJhdGVkIFRlc3RmaWxlIGZvciBcbiIKKyAgICAgICAgICAiIyBTb3VyY2UgZGlyZWN0b3J5OiAiCisgICAgICAgPDwgdGhpcy0+U3RhdGVTbmFwc2hvdC5HZXREaXJlY3RvcnkoKS5HZXRDdXJyZW50U291cmNlKCkKKyAgICAgICA8PCAiXG4iCisgICAgICAgICAgIiMgQnVpbGQgZGlyZWN0b3J5OiAiCisgICAgICAgPDwgdGhpcy0+U3RhdGVTbmFwc2hvdC5HZXREaXJlY3RvcnkoKS5HZXRDdXJyZW50QmluYXJ5KCkKKyAgICAgICA8PCAiXG4iCisgICAgICAgICAgIiMgXG4iCisgICAgICAgICAgIiMgVGhpcyBmaWxlIGluY2x1ZGVzIHRoZSByZWxldmFudCB0ZXN0aW5nIGNvbW1hbmRzICIKKyAgICAgICAgICAicmVxdWlyZWQgZm9yIFxuIgorICAgICAgICAgICIjIHRlc3RpbmcgdGhpcyBkaXJlY3RvcnkgYW5kIGxpc3RzIHN1YmRpcmVjdG9yaWVzIHRvICIKKyAgICAgICAgICAiYmUgdGVzdGVkIGFzIHdlbGwuXG4iOwogCiAgIGNvbnN0IGNoYXIqIHRlc3RJbmNsdWRlRmlsZSA9CiAgICAgdGhpcy0+TWFrZWZpbGUtPkdldFByb3BlcnR5KCJURVNUX0lOQ0xVREVfRklMRSIpOwogICBpZiAodGVzdEluY2x1ZGVGaWxlKSB7Ci0gICAgZm91dCA8PCAiaW5jbHVkZShcIiIgPDwgdGVzdEluY2x1ZGVGaWxlIDw8ICJcIikiIDw8IHN0ZDo6ZW5kbDsKKyAgICBmb3V0IDw8ICJpbmNsdWRlKFwiIiA8PCB0ZXN0SW5jbHVkZUZpbGUgPDwgIlwiKVxuIjsKICAgfQogCiAgIGNvbnN0IGNoYXIqIHRlc3RJbmNsdWRlRmlsZXMgPQpAQCAtMzEwLDcgKzMxMiw3IEBACiAgIGlmICh0ZXN0SW5jbHVkZUZpbGVzKSB7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGluY2x1ZGVzTGlzdCA9IGNtRXhwYW5kZWRMaXN0KHRlc3RJbmNsdWRlRmlsZXMpOwogICAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGkgOiBpbmNsdWRlc0xpc3QpIHsKLSAgICAgIGZvdXQgPDwgImluY2x1ZGUoXCIiIDw8IGkgPDwgIlwiKSIgPDwgc3RkOjplbmRsOworICAgICAgZm91dCA8PCAiaW5jbHVkZShcIiIgPDwgaSA8PCAiXCIpXG4iOwogICAgIH0KICAgfQogCkBAIC0zMjcsNyArMzI5LDcgQEAKICAgICBzdGQ6OnN0cmluZyBvdXRQID0gaS5HZXREaXJlY3RvcnkoKS5HZXRDdXJyZW50QmluYXJ5KCk7CiAgICAgb3V0UCA9IHRoaXMtPk1heWJlQ29udmVydFRvUmVsYXRpdmVQYXRoKHBhcmVudEJpbkRpciwgb3V0UCk7CiAgICAgb3V0UCA9IGNtT3V0cHV0Q29udmVydGVyOjpFc2NhcGVGb3JDTWFrZShvdXRQKTsKLSAgICBmb3V0IDw8ICJzdWJkaXJzKCIgPDwgb3V0UCA8PCAiKSIgPDwgc3RkOjplbmRsOworICAgIGZvdXQgPDwgInN1YmRpcnMoIiA8PCBvdXRQIDw8ICIpXG4iOwogICB9CiAKICAgLy8gQWRkIGRpcmVjdG9yeSBsYWJlbHMgcHJvcGVydHkKQEAgLTM0Niw3ICszNDgsNyBAQAogICAgIGlmIChkaXJlY3RvcnlMYWJlbHMpIHsKICAgICAgIGZvdXQgPDwgY21PdXRwdXRDb252ZXJ0ZXI6OkVzY2FwZUZvckNNYWtlKGRpcmVjdG9yeUxhYmVscyk7CiAgICAgfQotICAgIGZvdXQgPDwgIikiIDw8IHN0ZDo6ZW5kbDsKKyAgICBmb3V0IDw8ICIpXG4iOwogICB9CiB9CiAKQEAgLTQ2NywxNiArNDY5LDE3IEBACiAgIGZvdXQuU2V0Q29weUlmRGlmZmVyZW50KHRydWUpOwogCiAgIC8vIFdyaXRlIHRoZSBoZWFkZXIuCisgIC8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KICAgZm91dCA8PCAiIyBJbnN0YWxsIHNjcmlwdCBmb3IgZGlyZWN0b3J5OiAiCi0gICAgICAgPDwgdGhpcy0+U3RhdGVTbmFwc2hvdC5HZXREaXJlY3RvcnkoKS5HZXRDdXJyZW50U291cmNlKCkgPDwgc3RkOjplbmRsCi0gICAgICAgPDwgc3RkOjplbmRsOwotICBmb3V0IDw8ICIjIFNldCB0aGUgaW5zdGFsbCBwcmVmaXgiIDw8IHN0ZDo6ZW5kbAotICAgICAgIDw8ICJpZihOT1QgREVGSU5FRCBDTUFLRV9JTlNUQUxMX1BSRUZJWCkiIDw8IHN0ZDo6ZW5kbAotICAgICAgIDw8ICIgIHNldChDTUFLRV9JTlNUQUxMX1BSRUZJWCBcIiIgPDwgcHJlZml4IDw8ICJcIikiIDw8IHN0ZDo6ZW5kbAotICAgICAgIDw8ICJlbmRpZigpIiA8PCBzdGQ6OmVuZGwKKyAgICAgICA8PCB0aGlzLT5TdGF0ZVNuYXBzaG90LkdldERpcmVjdG9yeSgpLkdldEN1cnJlbnRTb3VyY2UoKQorICAgICAgIDw8ICJcblxuIgorICAgICAgICAgICIjIFNldCB0aGUgaW5zdGFsbCBwcmVmaXhcbiIKKyAgICAgICAgICAiaWYoTk9UIERFRklORUQgQ01BS0VfSU5TVEFMTF9QUkVGSVgpXG4iCisgICAgICAgICAgIiAgc2V0KENNQUtFX0lOU1RBTExfUFJFRklYIFwiIiA8PCBwcmVmaXggPDwgIlwiKVxuIgorICAgICAgICAgICJlbmRpZigpXG4iCiAgICAgICAgPDwgUiIoc3RyaW5nKFJFR0VYIFJFUExBQ0UgIi8kIiAiIiBDTUFLRV9JTlNUQUxMX1BSRUZJWCApIgotICAgICAgIDw8ICJcIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9XCIpIiA8PCBzdGQ6OmVuZGwKLSAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgPDwgIlwiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH1cIilcblxuIjsKKyAgLyogY2xhbmctZm9ybWF0IG9uICovCiAKICAgLy8gV3JpdGUgc3VwcG9ydCBjb2RlIGZvciBnZW5lcmF0aW5nIHBlci1jb25maWd1cmF0aW9uIGluc3RhbGwgcnVsZXMuCiAgIC8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KQEAgLTU5MSw4ICs1OTQsNyBAQAogICAgICAgICAgIGlmICghYy5HZXREaXJlY3RvcnkoKS5HZXRQcm9wZXJ0eUFzQm9vbCgiRVhDTFVERV9GUk9NX0FMTCIpKSB7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZyBvZGlyID0gYy5HZXREaXJlY3RvcnkoKS5HZXRDdXJyZW50QmluYXJ5KCk7CiAgICAgICAgICAgICBjbVN5c3RlbVRvb2xzOjpDb252ZXJ0VG9Vbml4U2xhc2hlcyhvZGlyKTsKLSAgICAgICAgICAgIGZvdXQgPDwgIiAgaW5jbHVkZShcIiIgPDwgb2RpciA8PCAiL2NtYWtlX2luc3RhbGwuY21ha2VcIikiCi0gICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIGZvdXQgPDwgIiAgaW5jbHVkZShcIiIgPDwgb2RpciA8PCAiL2NtYWtlX2luc3RhbGwuY21ha2VcIilcbiI7CiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGZvdXQgPDwgIlxuIjsKQEAgLTg3Nyw3ICs4NzksNyBAQAogICBpZiAoKHNlcFswXSAhPSAnICcpICYmICFmbGFncy5lbXB0eSgpICYmIGZsYWdzLmJhY2soKSA9PSBzZXBbMF0pIHsKICAgICBmbGFncy5iYWNrKCkgPSAnICc7CiAgIH0KLSAgcmV0dXJuIGZsYWdzOworICByZXR1cm4gY21UcmltV2hpdGVzcGFjZShmbGFncyk7CiB9CiAKIHZvaWQgY21Mb2NhbEdlbmVyYXRvcjo6QWRkQ29tcGlsZU9wdGlvbnMoc3RkOjpzdHJpbmcmIGZsYWdzLApAQCAtOTQ5LDggKzk1MSw3IEBACiAgICAgICAgIDw8ICJcIi4gICIKICAgICAgICAgICAgIlRoaXMgaXMgbm90IHBlcm1pdHRlZC4gVGhlIENPTVBJTEVfRkVBVFVSRVMgbWF5IG5vdCBib3RoIGRlcGVuZCAiCiAgICAgICAgICAgICJvbiAiCi0gICAgICAgICAgICJhbmQgYmUgZGVwZW5kZWQgb24gYnkgdGhlIGxpbmsgaW1wbGVtZW50YXRpb24uIgotICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICJhbmQgYmUgZGVwZW5kZWQgb24gYnkgdGhlIGxpbmsgaW1wbGVtZW50YXRpb24uXG4iOwogICAgICAgdGhpcy0+SXNzdWVNZXNzYWdlKE1lc3NhZ2VUeXBlOjpGQVRBTF9FUlJPUiwgZS5zdHIoKSk7CiAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTM5MCw4ICsxMzkxLDggQEAKICAgICAgICAgICBmb3IgKGNtU291cmNlRmlsZSogc2YgOiBzb3VyY2VzKSB7CiAgICAgICAgICAgICBpZiAoc2YtPkdldEV4dGVuc2lvbigpID09ICJkZWYiKSB7CiAgICAgICAgICAgICAgIHNoYXJlZExpYkZsYWdzICs9IGRlZkZsYWc7Ci0gICAgICAgICAgICAgIHNoYXJlZExpYkZsYWdzICs9IHRoaXMtPkNvbnZlcnRUb091dHB1dEZvcm1hdCgKLSAgICAgICAgICAgICAgICBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKHNmLT5SZXNvbHZlRnVsbFBhdGgoKSksIFNIRUxMKTsKKyAgICAgICAgICAgICAgc2hhcmVkTGliRmxhZ3MgKz0KKyAgICAgICAgICAgICAgICB0aGlzLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQoc2YtPlJlc29sdmVGdWxsUGF0aCgpLCBTSEVMTCk7CiAgICAgICAgICAgICAgIHNoYXJlZExpYkZsYWdzICs9ICIgIjsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9CkBAIC0yMzk2LDcgKzIzOTcsOSBAQAogdm9pZCBjbUxvY2FsR2VuZXJhdG9yOjpBcHBlbmRGbGFncyhzdGQ6OnN0cmluZyYgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuZXdGbGFncykgY29uc3QKIHsKLSAgaWYgKCFuZXdGbGFncy5lbXB0eSgpKSB7CisgIGJvb2wgYWxsU3BhY2VzID0gc3RkOjphbGxfb2YobmV3RmxhZ3MuYmVnaW4oKSwgbmV3RmxhZ3MuZW5kKCksIGNtSXNTcGFjZSk7CisKKyAgaWYgKCFuZXdGbGFncy5lbXB0eSgpICYmICFhbGxTcGFjZXMpIHsKICAgICBpZiAoIWZsYWdzLmVtcHR5KCkpIHsKICAgICAgIGZsYWdzICs9ICIgIjsKICAgICB9CkBAIC0yOTE0LDExICsyOTE3LDExIEBACiAgICAgICAvLyBjb21tYW5kIGxpbmUgd2l0aG91dCBhbnkgZXNjYXBlcy4gIEhvd2V2ZXIgd2Ugc3RpbGwgaGF2ZSB0bwogICAgICAgLy8gZ2V0IHRoZSAnJCcgYW5kICcjJyBjaGFyYWN0ZXJzIHRocm91Z2ggV01ha2UgYXMgJyQkJyBhbmQKICAgICAgIC8vICckIycuCi0gICAgICBmb3IgKGNvbnN0IGNoYXIqIGMgPSBkZWZpbmUuY19zdHIoKTsgKmM7ICsrYykgewotICAgICAgICBpZiAoKmMgPT0gJyQnIHx8ICpjID09ICcjJykgeworICAgICAgZm9yIChjaGFyIGMgOiBkZWZpbmUpIHsKKyAgICAgICAgaWYgKGMgPT0gJyQnIHx8IGMgPT0gJyMnKSB7CiAgICAgICAgICAgZGVmICs9ICckJzsKICAgICAgICAgfQotICAgICAgICBkZWYgKz0gKmM7CisgICAgICAgIGRlZiArPSBjOwogICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAvLyBNYWtlIHRoZSBkZWZpbml0aW9uIGFwcGVhciBwcm9wZXJseSBvbiB0aGUgY29tbWFuZCBsaW5lLiAgVXNlCkBAIC0yOTYyLDggKzI5NjUsOCBAQAogICB9CiAgIGNtU3RhdGVTbmFwc2hvdCBzbnAgPSB0aGlzLT5TdGF0ZVNuYXBzaG90OwogICB3aGlsZSAoc25wLklzVmFsaWQoKSkgewotICAgIGlmIChjb25zdCBjaGFyKiB2YWx1ZSA9IHNucC5HZXREaXJlY3RvcnkoKS5HZXRQcm9wZXJ0eShmZWF0dXJlTmFtZSkpIHsKLSAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBpZiAoY21Qcm9wIHZhbHVlID0gc25wLkdldERpcmVjdG9yeSgpLkdldFByb3BlcnR5KGZlYXR1cmVOYW1lKSkgeworICAgICAgcmV0dXJuIHZhbHVlLT5jX3N0cigpOwogICAgIH0KICAgICBzbnAgPSBzbnAuR2V0QnVpbGRzeXN0ZW1EaXJlY3RvcnlQYXJlbnQoKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtTG9jYWxOaW5qYUdlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21Mb2NhbE5pbmphR2VuZXJhdG9yLmN4eAppbmRleCBiZTFkZDBkLi5lNjIzNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Mb2NhbE5pbmphR2VuZXJhdG9yLmN4eAorKysgYi9Tb3VyY2UvY21Mb2NhbE5pbmphR2VuZXJhdG9yLmN4eApAQCAtMTQ0LDggKzE0NCw5IEBACiAgIGJvb2wgZm9yY2VGdWxsUGF0aHMpCiB7CiAgIGlmIChmb3JjZUZ1bGxQYXRocykgewotICAgIHJldHVybiB0aGlzLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQoY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChwYXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCk7CisgICAgcmV0dXJuIHRoaXMtPkNvbnZlcnRUb091dHB1dEZvcm1hdCgKKyAgICAgIGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgocGF0aCwgdGhpcy0+R2V0Q3VycmVudEJpbmFyeURpcmVjdG9yeSgpKSwKKyAgICAgIGZvcm1hdCk7CiAgIH0KICAgcmV0dXJuIHRoaXMtPkNvbnZlcnRUb091dHB1dEZvcm1hdCgKICAgICB0aGlzLT5NYXliZUNvbnZlcnRUb1JlbGF0aXZlUGF0aCh0aGlzLT5HZXRCaW5hcnlEaXJlY3RvcnkoKSwgcGF0aCksCkBAIC0yMDYsOSArMjA3LDggQEAKIHZvaWQgY21Mb2NhbE5pbmphR2VuZXJhdG9yOjpXcml0ZVByb2plY3RIZWFkZXIoc3RkOjpvc3RyZWFtJiBvcykKIHsKICAgY21HbG9iYWxOaW5qYUdlbmVyYXRvcjo6V3JpdGVEaXZpZGVyKG9zKTsKLSAgb3MgPDwgIiMgUHJvamVjdDogIiA8PCB0aGlzLT5HZXRQcm9qZWN0TmFtZSgpIDw8IHN0ZDo6ZW5kbAotICAgICA8PCAiIyBDb25maWd1cmF0aW9uczogIiA8PCBjbUpvaW4odGhpcy0+R2V0Q29uZmlnTmFtZXMoKSwgIiwgIikKLSAgICAgPDwgc3RkOjplbmRsOworICBvcyA8PCAiIyBQcm9qZWN0OiAiIDw8IHRoaXMtPkdldFByb2plY3ROYW1lKCkgPDwgJ1xuJworICAgICA8PCAiIyBDb25maWd1cmF0aW9uczogIiA8PCBjbUpvaW4odGhpcy0+R2V0Q29uZmlnTmFtZXMoKSwgIiwgIikgPDwgJ1xuJzsKICAgY21HbG9iYWxOaW5qYUdlbmVyYXRvcjo6V3JpdGVEaXZpZGVyKG9zKTsKIH0KIApAQCAtMjM1LDggKzIzNSw3IEBACiAKICAgY21HbG9iYWxOaW5qYUdlbmVyYXRvcjo6V3JpdGVDb21tZW50KAogICAgIG9zLCAiTWluaW1hbCB2ZXJzaW9uIG9mIE5pbmphIHJlcXVpcmVkIGJ5IHRoaXMgZmlsZSIpOwotICBvcyA8PCAibmluamFfcmVxdWlyZWRfdmVyc2lvbiA9ICIgPDwgcmVxdWlyZWRWZXJzaW9uIDw8IHN0ZDo6ZW5kbAotICAgICA8PCBzdGQ6OmVuZGw7CisgIG9zIDw8ICJuaW5qYV9yZXF1aXJlZF92ZXJzaW9uID0gIiA8PCByZXF1aXJlZFZlcnNpb24gPDwgIlxuXG4iOwogfQogCiB2b2lkIGNtTG9jYWxOaW5qYUdlbmVyYXRvcjo6V3JpdGVOaW5qYUNvbmZpZ3VyYXRpb25WYXJpYWJsZSgKQEAgLTI1MSwyMyArMjUwLDIyIEBACiB7CiAgIGNtR2xvYmFsTmluamFHZW5lcmF0b3I6OldyaXRlRGl2aWRlcihvcyk7CiAKLSAgY29uc3QgY2hhciogam9icG9vbHMgPQorICBjbVByb3Agam9icG9vbHMgPQogICAgIHRoaXMtPkdldENNYWtlSW5zdGFuY2UoKS0+R2V0U3RhdGUoKS0+R2V0R2xvYmFsUHJvcGVydHkoIkpPQl9QT09MUyIpOwogICBpZiAoIWpvYnBvb2xzKSB7Ci0gICAgam9icG9vbHMgPSB0aGlzLT5HZXRNYWtlZmlsZSgpLT5HZXREZWZpbml0aW9uKCJDTUFLRV9KT0JfUE9PTFMiKTsKKyAgICBqb2Jwb29scyA9IHRoaXMtPkdldE1ha2VmaWxlKCktPkdldERlZigiQ01BS0VfSk9CX1BPT0xTIik7CiAgIH0KICAgaWYgKGpvYnBvb2xzKSB7CiAgICAgY21HbG9iYWxOaW5qYUdlbmVyYXRvcjo6V3JpdGVDb21tZW50KAogICAgICAgb3MsICJQb29scyBkZWZpbmVkIGJ5IGdsb2JhbCBwcm9wZXJ0eSBKT0JfUE9PTFMiKTsKLSAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcG9vbHMgPSBjbUV4cGFuZGVkTGlzdChqb2Jwb29scyk7CisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHBvb2xzID0gY21FeHBhbmRlZExpc3QoKmpvYnBvb2xzKTsKICAgICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBwb29sIDogcG9vbHMpIHsKICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgZXEgPSBwb29sLmZpbmQoJz0nKTsKICAgICAgIHVuc2lnbmVkIGludCBqb2JzOwogICAgICAgaWYgKGVxICE9IHN0ZDo6c3RyaW5nOjpucG9zICYmCiAgICAgICAgICAgc3NjYW5mKHBvb2wuY19zdHIoKSArIGVxLCAiPSV1IiwgJmpvYnMpID09IDEpIHsKLSAgICAgICAgb3MgPDwgInBvb2wgIiA8PCBwb29sLnN1YnN0cigwLCBlcSkgPDwgc3RkOjplbmRsOwotICAgICAgICBvcyA8PCAiICBkZXB0aCA9ICIgPDwgam9icyA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIG9zIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgb3MgPDwgInBvb2wgIiA8PCBwb29sLnN1YnN0cigwLCBlcSkgPDwgIlxuICBkZXB0aCA9ICIgPDwgam9icworICAgICAgICAgICA8PCAiXG5cbiI7CiAgICAgICB9IGVsc2UgewogICAgICAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigiSW52YWxpZCBwb29sIGRlZmluZWQgYnkgcHJvcGVydHkgJ0pPQl9QT09MUyc6ICIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb29sKTsKQEAgLTI3OSw4ICsyNzcsNyBAQAogdm9pZCBjbUxvY2FsTmluamFHZW5lcmF0b3I6OldyaXRlTmluamFGaWxlc0luY2x1c2lvbkNvbmZpZyhzdGQ6Om9zdHJlYW0mIG9zKQogewogICBjbUdsb2JhbE5pbmphR2VuZXJhdG9yOjpXcml0ZURpdmlkZXIob3MpOwotICBvcyA8PCAiIyBJbmNsdWRlIGF1eGlsaWFyeSBmaWxlcy5cbiIKLSAgICAgPDwgIlxuIjsKKyAgb3MgPDwgIiMgSW5jbHVkZSBhdXhpbGlhcnkgZmlsZXMuXG5cbiI7CiAgIGNtR2xvYmFsTmluamFHZW5lcmF0b3IqIG5nID0gdGhpcy0+R2V0R2xvYmFsTmluamFHZW5lcmF0b3IoKTsKICAgc3RkOjpzdHJpbmcgY29uc3QgbmluamFDb21tb25GaWxlID0KICAgICBuZy0+TmluamFPdXRwdXRQYXRoKGNtR2xvYmFsTmluamFNdWx0aUdlbmVyYXRvcjo6TklOSkFfQ09NTU9OX0ZJTEUpOwpAQCAtMjkzLDggKzI5MCw3IEBACiB2b2lkIGNtTG9jYWxOaW5qYUdlbmVyYXRvcjo6V3JpdGVOaW5qYUZpbGVzSW5jbHVzaW9uQ29tbW9uKHN0ZDo6b3N0cmVhbSYgb3MpCiB7CiAgIGNtR2xvYmFsTmluamFHZW5lcmF0b3I6OldyaXRlRGl2aWRlcihvcyk7Ci0gIG9zIDw8ICIjIEluY2x1ZGUgYXV4aWxpYXJ5IGZpbGVzLlxuIgotICAgICA8PCAiXG4iOworICBvcyA8PCAiIyBJbmNsdWRlIGF1eGlsaWFyeSBmaWxlcy5cblxuIjsKICAgY21HbG9iYWxOaW5qYUdlbmVyYXRvciogbmcgPSB0aGlzLT5HZXRHbG9iYWxOaW5qYUdlbmVyYXRvcigpOwogICBzdGQ6OnN0cmluZyBjb25zdCBuaW5qYVJ1bGVzRmlsZSA9CiAgICAgbmctPk5pbmphT3V0cHV0UGF0aChjbUdsb2JhbE5pbmphR2VuZXJhdG9yOjpOSU5KQV9SVUxFU19GSUxFKTsKQEAgLTMwNywxNCArMzAzLDE0IEBACiB2b2lkIGNtTG9jYWxOaW5qYUdlbmVyYXRvcjo6V3JpdGVQcm9jZXNzZWRNYWtlZmlsZShzdGQ6Om9zdHJlYW0mIG9zKQogewogICBjbUdsb2JhbE5pbmphR2VuZXJhdG9yOjpXcml0ZURpdmlkZXIob3MpOwotICBvcyA8PCAiIyBXcml0ZSBzdGF0ZW1lbnRzIGRlY2xhcmVkIGluIENNYWtlTGlzdHMudHh0OiIgPDwgc3RkOjplbmRsCisgIG9zIDw8ICIjIFdyaXRlIHN0YXRlbWVudHMgZGVjbGFyZWQgaW4gQ01ha2VMaXN0cy50eHQ6XG4iCiAgICAgIDw8ICIjICIgPDwgdGhpcy0+TWFrZWZpbGUtPkdldERlZmluaXRpb24oIkNNQUtFX0NVUlJFTlRfTElTVF9GSUxFIikKLSAgICAgPDwgc3RkOjplbmRsOworICAgICA8PCAnXG4nOwogICBpZiAodGhpcy0+SXNSb290TWFrZWZpbGUoKSkgewotICAgIG9zIDw8ICIjIFdoaWNoIGlzIHRoZSByb290IGZpbGUuIiA8PCBzdGQ6OmVuZGw7CisgICAgb3MgPDwgIiMgV2hpY2ggaXMgdGhlIHJvb3QgZmlsZS5cbiI7CiAgIH0KICAgY21HbG9iYWxOaW5qYUdlbmVyYXRvcjo6V3JpdGVEaXZpZGVyKG9zKTsKLSAgb3MgPDwgc3RkOjplbmRsOworICBvcyA8PCAnXG4nOwogfQogCiB2b2lkIGNtTG9jYWxOaW5qYUdlbmVyYXRvcjo6QXBwZW5kVGFyZ2V0T3V0cHV0cyhjbUdlbmVyYXRvclRhcmdldCogdGFyZ2V0LApkaWZmIC0tZ2l0IGEvU291cmNlL2NtTG9jYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzLmN4eCBiL1NvdXJjZS9jbUxvY2FsVW5peE1ha2VmaWxlR2VuZXJhdG9yMy5jeHgKaW5kZXggMjRhNjM1MS4uNTkzYTZkOSAxMDA2NDQKLS0tIGEvU291cmNlL2NtTG9jYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzLmN4eAorKysgYi9Tb3VyY2UvY21Mb2NhbFVuaXhNYWtlZmlsZUdlbmVyYXRvcjMuY3h4CkBAIC02MjMsOCArNjIzLDcgQEAKICAgICB0aGlzLT5NYXliZUNvbnZlcnRXYXRjb21TaGVsbENvbW1hbmQoY21TeXN0ZW1Ub29sczo6R2V0Q01ha2VDb21tYW5kKCkpOwogICBpZiAoY21ha2VTaGVsbENvbW1hbmQuZW1wdHkoKSkgewogICAgIGNtYWtlU2hlbGxDb21tYW5kID0gdGhpcy0+Q29udmVydFRvT3V0cHV0Rm9ybWF0KAotICAgICAgY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChjbVN5c3RlbVRvb2xzOjpHZXRDTWFrZUNvbW1hbmQoKSksCi0gICAgICBjbU91dHB1dENvbnZlcnRlcjo6U0hFTEwpOworICAgICAgY21TeXN0ZW1Ub29sczo6R2V0Q01ha2VDb21tYW5kKCksIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCk7CiAgIH0KIAogICAvKiBjbGFuZy1mb3JtYXQgb2ZmICovCkBAIC02NDgsMTYgKzY0NywxNCBAQAogICAgIDw8ICIjIFRoZSB0b3AtbGV2ZWwgc291cmNlIGRpcmVjdG9yeSBvbiB3aGljaCBDTWFrZSB3YXMgcnVuLlxuIgogICAgIDw8ICJDTUFLRV9TT1VSQ0VfRElSID0gIgogICAgIDw8IHRoaXMtPkNvbnZlcnRUb091dHB1dEZvcm1hdCgKLSAgICAgIGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgodGhpcy0+R2V0U291cmNlRGlyZWN0b3J5KCkpLAotICAgICAgICAgICAgICAgICAgICAgY21PdXRwdXRDb252ZXJ0ZXI6OlNIRUxMKQorICAgICAgdGhpcy0+R2V0U291cmNlRGlyZWN0b3J5KCksIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCkKICAgICA8PCAiXG4iCiAgICAgPDwgIlxuIjsKICAgbWFrZWZpbGVTdHJlYW0KICAgICA8PCAiIyBUaGUgdG9wLWxldmVsIGJ1aWxkIGRpcmVjdG9yeSBvbiB3aGljaCBDTWFrZSB3YXMgcnVuLlxuIgogICAgIDw8ICJDTUFLRV9CSU5BUllfRElSID0gIgogICAgIDw8IHRoaXMtPkNvbnZlcnRUb091dHB1dEZvcm1hdCgKLSAgICAgIGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgodGhpcy0+R2V0QmluYXJ5RGlyZWN0b3J5KCkpLAotICAgICAgICAgICAgICAgICAgICAgY21PdXRwdXRDb252ZXJ0ZXI6OlNIRUxMKQorICAgICAgdGhpcy0+R2V0QmluYXJ5RGlyZWN0b3J5KCksIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCkKICAgICA8PCAiXG4iCiAgICAgPDwgIlxuIjsKICAgLyogY2xhbmctZm9ybWF0IG9uICovCkBAIC05NzgsNyArOTc1LDggQEAKICAgICAgICAgLy8gRXhwYW5kIHJ1bGUgdmFyaWFibGVzIHJlZmVyZW5jZWQgaW4gdGhlIGdpdmVuIGxhdW5jaGVyIGNvbW1hbmQuCiAgICAgICAgIGNtUnVsZVBsYWNlaG9sZGVyRXhwYW5kZXI6OlJ1bGVWYXJpYWJsZXMgdmFyczsKICAgICAgICAgdmFycy5DTVRhcmdldE5hbWUgPSB0YXJnZXQtPkdldE5hbWUoKS5jX3N0cigpOwotICAgICAgICB2YXJzLkNNVGFyZ2V0VHlwZSA9IGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKHRhcmdldC0+R2V0VHlwZSgpKTsKKyAgICAgICAgdmFycy5DTVRhcmdldFR5cGUgPQorICAgICAgICAgIGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKHRhcmdldC0+R2V0VHlwZSgpKS5jX3N0cigpOwogICAgICAgICBzdGQ6OnN0cmluZyBvdXRwdXQ7CiAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgb3V0cHV0cyA9IGNjZy5HZXRPdXRwdXRzKCk7CiAgICAgICAgIGlmICghb3V0cHV0cy5lbXB0eSgpKSB7CkBAIC0xMDU3LDEwICsxMDU1LDkgQEAKICAgICBjbGVhbmZpbGUgKz0gZmlsZW5hbWU7CiAgIH0KICAgY2xlYW5maWxlICs9ICIuY21ha2UiOwotICBzdGQ6OnN0cmluZyBjbGVhbmZpbGVQYXRoID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChjbGVhbmZpbGUpOwotICBjbXN5czo6b2ZzdHJlYW0gZm91dChjbGVhbmZpbGVQYXRoLmNfc3RyKCkpOworICBjbXN5czo6b2ZzdHJlYW0gZm91dChjbGVhbmZpbGUuY19zdHIoKSk7CiAgIGlmICghZm91dCkgewotICAgIGNtU3lzdGVtVG9vbHM6OkVycm9yKCJDb3VsZCBub3QgY3JlYXRlICIgKyBjbGVhbmZpbGVQYXRoKTsKKyAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigiQ291bGQgbm90IGNyZWF0ZSAiICsgY2xlYW5maWxlKTsKICAgfQogICBpZiAoIWZpbGVzLmVtcHR5KCkpIHsKICAgICBmb3V0IDw8ICJmaWxlKFJFTU9WRV9SRUNVUlNFXG4iOwpAQCAtMTEyMCwxMCArMTExNyw5IEBACiAgICAgY21TdHJDYXQoY3VycmVudEJpbmFyeURpciwgIi9DTWFrZUZpbGVzL2NtYWtlX2RpcmVjdG9yeV9jbGVhbi5jbWFrZSIpOwogICAvLyBXcml0ZSBjbGVhbiBzY3JpcHQKICAgewotICAgIHN0ZDo6c3RyaW5nIGNsZWFuZmlsZVBhdGggPSBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKGNsZWFuZmlsZSk7Ci0gICAgY21zeXM6Om9mc3RyZWFtIGZvdXQoY2xlYW5maWxlUGF0aC5jX3N0cigpKTsKKyAgICBjbXN5czo6b2ZzdHJlYW0gZm91dChjbGVhbmZpbGUuY19zdHIoKSk7CiAgICAgaWYgKCFmb3V0KSB7Ci0gICAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigiQ291bGQgbm90IGNyZWF0ZSAiICsgY2xlYW5maWxlUGF0aCk7CisgICAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigiQ291bGQgbm90IGNyZWF0ZSAiICsgY2xlYW5maWxlKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZm91dCA8PCAiZmlsZShSRU1PVkVfUkVDVVJTRVxuIjsKQEAgLTExOTQsOSArMTE5MCw4IEBACiAgICAgICAgICAgICBjb2xvcl9uYW1lKTsKICAgICAgICAgICBpZiAocHJvZ3Jlc3MpIHsKICAgICAgICAgICAgIGNtZCArPSAiLS1wcm9ncmVzcy1kaXI9IjsKLSAgICAgICAgICAgIGNtZCArPSB0aGlzLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQoCi0gICAgICAgICAgICAgIGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgocHJvZ3Jlc3MtPkRpciksCi0gICAgICAgICAgICAgIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCk7CisgICAgICAgICAgICBjbWQgKz0gdGhpcy0+Q29udmVydFRvT3V0cHV0Rm9ybWF0KHByb2dyZXNzLT5EaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCk7CiAgICAgICAgICAgICBjbWQgKz0gIiAiOwogICAgICAgICAgICAgY21kICs9ICItLXByb2dyZXNzLW51bT0iOwogICAgICAgICAgICAgY21kICs9IHByb2dyZXNzLT5Bcmc7CkBAIC0xMzMxLDEwICsxMzI2LDkgQEAKICAgICBpbnQgcmVzdWx0OwogICAgIGlmICghZnRjLT5Db21wYXJlKGludGVybmFsRGVwZW5kRmlsZSwgdGd0SW5mbywgJnJlc3VsdCkgfHwgcmVzdWx0IDwgMCkgewogICAgICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIG1zZzsKLSAgICAgICAgbXNnIDw8ICJEZXBlbmRlZSBcIiIgPDwgdGd0SW5mbyA8PCAiXCIgaXMgbmV3ZXIgdGhhbiBkZXBlbmRlciBcIiIKLSAgICAgICAgICAgIDw8IGludGVybmFsRGVwZW5kRmlsZSA8PCAiXCIuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIGNtU3lzdGVtVG9vbHM6OlN0ZG91dChtc2cuc3RyKCkpOworICAgICAgICBjbVN5c3RlbVRvb2xzOjpTdGRvdXQoY21TdHJDYXQoIkRlcGVuZGVlIFwiIiwgdGd0SW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiBpcyBuZXdlciB0aGFuIGRlcGVuZGVyIFwiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRGVwZW5kRmlsZSwgIlwiLlxuIikpOwogICAgICAgfQogICAgICAgbmVlZFJlc2NhbkRlcGVuZEluZm8gPSB0cnVlOwogICAgIH0KQEAgLTEzNTEsMTAgKzEzNDUsOSBAQAogICAgIGlmICghZnRjLT5Db21wYXJlKGludGVybmFsRGVwZW5kRmlsZSwgZGlySW5mb0ZpbGUsICZyZXN1bHQpIHx8CiAgICAgICAgIHJlc3VsdCA8IDApIHsKICAgICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBtc2c7Ci0gICAgICAgIG1zZyA8PCAiRGVwZW5kZWUgXCIiIDw8IGRpckluZm9GaWxlIDw8ICJcIiBpcyBuZXdlciB0aGFuIGRlcGVuZGVyIFwiIgotICAgICAgICAgICAgPDwgaW50ZXJuYWxEZXBlbmRGaWxlIDw8ICJcIi4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgY21TeXN0ZW1Ub29sczo6U3Rkb3V0KG1zZy5zdHIoKSk7CisgICAgICAgIGNtU3lzdGVtVG9vbHM6OlN0ZG91dChjbVN0ckNhdCgiRGVwZW5kZWUgXCIiLCBkaXJJbmZvRmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiBpcyBuZXdlciB0aGFuIGRlcGVuZGVyIFwiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRGVwZW5kRmlsZSwgIlwiLlxuIikpOwogICAgICAgfQogICAgICAgbmVlZFJlc2NhbkRpckluZm8gPSB0cnVlOwogICAgIH0KQEAgLTE1MjAsMTEgKzE1MTMsOSBAQAogICAgIGlmIChjbVN5c3RlbVRvb2xzOjpGaWxlRXhpc3RzKGRlcGVuZGVlKSAmJgogICAgICAgICAhY21TeXN0ZW1Ub29sczo6RmlsZUV4aXN0cyhkZXBlbmRlcikpIHsKICAgICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBtc2c7Ci0gICAgICAgIG1zZyA8PCAiRGVsZXRpbmcgcHJpbWFyeSBjdXN0b20gY29tbWFuZCBvdXRwdXQgXCIiIDw8IGRlcGVuZGVlCi0gICAgICAgICAgICA8PCAiXCIgYmVjYXVzZSBhbm90aGVyIG91dHB1dCBcIiIgPDwgZGVwZW5kZXIKLSAgICAgICAgICAgIDw8ICJcIiBkb2VzIG5vdCBleGlzdC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgY21TeXN0ZW1Ub29sczo6U3Rkb3V0KG1zZy5zdHIoKSk7CisgICAgICAgIGNtU3lzdGVtVG9vbHM6OlN0ZG91dChjbVN0ckNhdCgKKyAgICAgICAgICAiRGVsZXRpbmcgcHJpbWFyeSBjdXN0b20gY29tbWFuZCBvdXRwdXQgXCIiLCBkZXBlbmRlZSwKKyAgICAgICAgICAiXCIgYmVjYXVzZSBhbm90aGVyIG91dHB1dCBcIiIsIGRlcGVuZGVyLCAiXCIgZG9lcyBub3QgZXhpc3QuXG4iKSk7CiAgICAgICB9CiAgICAgICBjbVN5c3RlbVRvb2xzOjpSZW1vdmVGaWxlKGRlcGVuZGVlKTsKICAgICB9CkBAIC0xNjM2LDE1ICsxNjI3LDE0IEBACiAgIHsKICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gcHJvZ0NtZDsKICAgICBwcm9nQ21kIDw8ICIkKENNQUtFX0NPTU1BTkQpIC1FIGNtYWtlX3Byb2dyZXNzX3N0YXJ0ICI7Ci0gICAgcHJvZ0NtZCA8PCB0aGlzLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQoCi0gICAgICBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKHByb2dyZXNzRGlyKSwgY21PdXRwdXRDb252ZXJ0ZXI6OlNIRUxMKTsKKyAgICBwcm9nQ21kIDw8IHRoaXMtPkNvbnZlcnRUb091dHB1dEZvcm1hdChwcm9ncmVzc0RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbU91dHB1dENvbnZlcnRlcjo6U0hFTEwpOwogCiAgICAgc3RkOjpzdHJpbmcgcHJvZ3Jlc3NGaWxlID0gIi9DTWFrZUZpbGVzL3Byb2dyZXNzLm1hcmtzIjsKICAgICBzdGQ6OnN0cmluZyBwcm9ncmVzc0ZpbGVOYW1lRnVsbCA9IHRoaXMtPkNvbnZlcnRUb0Z1bGxQYXRoKHByb2dyZXNzRmlsZSk7CiAgICAgcHJvZ0NtZCA8PCAiICIKLSAgICAgICAgICAgIDw8IHRoaXMtPkNvbnZlcnRUb091dHB1dEZvcm1hdCgKLSAgICAgICAgICAgICAgICAgY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChwcm9ncmVzc0ZpbGVOYW1lRnVsbCksCi0gICAgICAgICAgICAgICAgIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCk7CisgICAgICAgICAgICA8PCB0aGlzLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQocHJvZ3Jlc3NGaWxlTmFtZUZ1bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21PdXRwdXRDb252ZXJ0ZXI6OlNIRUxMKTsKICAgICBjb21tYW5kcy5wdXNoX2JhY2socHJvZ0NtZC5zdHIoKSk7CiAgIH0KICAgc3RkOjpzdHJpbmcgbWYyRGlyID0gIkNNYWtlRmlsZXMvTWFrZWZpbGUyIjsKQEAgLTE2NTQsOCArMTY0NCw4IEBACiAgIHsKICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gcHJvZ0NtZDsKICAgICBwcm9nQ21kIDw8ICIkKENNQUtFX0NPTU1BTkQpIC1FIGNtYWtlX3Byb2dyZXNzX3N0YXJ0ICI7IC8vICMgMAotICAgIHByb2dDbWQgPDwgdGhpcy0+Q29udmVydFRvT3V0cHV0Rm9ybWF0KAotICAgICAgY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChwcm9ncmVzc0RpciksIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCk7CisgICAgcHJvZ0NtZCA8PCB0aGlzLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQocHJvZ3Jlc3NEaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21PdXRwdXRDb252ZXJ0ZXI6OlNIRUxMKTsKICAgICBwcm9nQ21kIDw8ICIgMCI7CiAgICAgY29tbWFuZHMucHVzaF9iYWNrKHByb2dDbWQuc3RyKCkpOwogICB9CkBAIC0xNzg4LDcgKzE3NzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0RGlyKQogICB7CiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlIHRlc3QgZGlyZWN0b3J5ICJzdGFydHMgd2l0aCIgdGhlIGJhc2UgZGlyZWN0b3J5OgotICAgIGlmICh0ZXN0RGlyLmZpbmQoYmFzZURpcikgIT0gMCkgeworICAgIGlmICghY21IYXNQcmVmaXgodGVzdERpciwgYmFzZURpcikpIHsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gSWYgaXQgZG9lcywgdGhlbiBjaGVjayB0aGF0IGl0J3MgZWl0aGVyIHRoZSBzYW1lIHN0cmluZywgb3IgdGhhdCB0aGUKQEAgLTE5NzIsNyArMTk2Miw3IEBACiB2b2lkIGNtTG9jYWxVbml4TWFrZWZpbGVHZW5lcmF0b3IzOjpXcml0ZURpdmlkZXIoc3RkOjpvc3RyZWFtJiBvcykKIHsKICAgb3MgPDwgIiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKLSAgICAgPDwgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIjsKKyAgICAgICAgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIjsKIH0KIAogdm9pZCBjbUxvY2FsVW5peE1ha2VmaWxlR2VuZXJhdG9yMzo6V3JpdGVDTWFrZUFyZ3VtZW50KHN0ZDo6b3N0cmVhbSYgb3MsCkBAIC0xOTgwLDcgKzE5NzAsNyBAQAogewogICAvLyBXcml0ZSB0aGUgZ2l2ZW4gc3RyaW5nIHRvIHRoZSBzdHJlYW0gd2l0aCBlc2NhcGluZyB0byBnZXQgaXQgYmFjawogICAvLyBpbnRvIENNYWtlIHRocm91Z2ggdGhlIGxleGljYWwgc2Nhbm5lci4KLSAgb3MgPDwgIlwiIjsKKyAgb3MgPDwgJyInOwogICBmb3IgKGNoYXIgYyA6IHMpIHsKICAgICBpZiAoYyA9PSAnXFwnKSB7CiAgICAgICBvcyA8PCAiXFxcXCI7CkBAIC0xOTkwLDcgKzE5ODAsNyBAQAogICAgICAgb3MgPDwgYzsKICAgICB9CiAgIH0KLSAgb3MgPDwgIlwiIjsKKyAgb3MgPDwgJyInOwogfQogCiBzdGQ6OnN0cmluZyBjbUxvY2FsVW5peE1ha2VmaWxlR2VuZXJhdG9yMzo6Q29udmVydFRvUXVvdGVkT3V0cHV0UGF0aCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUxvY2FsVmlzdWFsU3R1ZGlvN0dlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21Mb2NhbFZpc3VhbFN0dWRpbzdHZW5lcmF0b3IuY3h4CmluZGV4IDlhYTM5OTEuLjBjMWYwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUxvY2FsVmlzdWFsU3R1ZGlvN0dlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL2NtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9yLmN4eApAQCAtMiw2ICsyLDggQEAKICAgIGZpbGUgQ29weXJpZ2h0LnR4dCBvciBodHRwczovL2NtYWtlLm9yZy9saWNlbnNpbmcgZm9yIGRldGFpbHMuICAqLwogI2luY2x1ZGUgImNtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9yLmgiCiAKKyNpbmNsdWRlIDxjbS9tZW1vcnk+CisKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKICNpbmNsdWRlIDxjdHlwZS5oPiAvLyBmb3IgaXNzcGFjZQpAQCAtMTgsNiArMjAsNyBAQAogI2luY2x1ZGUgImNtTWFrZWZpbGUuaCIKICNpbmNsdWRlICJjbU1lc3NhZ2VUeXBlLmgiCiAjaW5jbHVkZSAiY21Tb3VyY2VGaWxlLmgiCisjaW5jbHVkZSAiY21TdHJpbmdBbGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiY21TeXN0ZW1Ub29scy5oIgogI2luY2x1ZGUgImNtWE1MUGFyc2VyLmgiCiAjaW5jbHVkZSAiY21ha2UuaCIKQEAgLTUyLDE0ICs1NSwxMSBAQAogY21Mb2NhbFZpc3VhbFN0dWRpbzdHZW5lcmF0b3I6OmNtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9yKAogICBjbUdsb2JhbEdlbmVyYXRvciogZ2csIGNtTWFrZWZpbGUqIG1mKQogICA6IGNtTG9jYWxWaXN1YWxTdHVkaW9HZW5lcmF0b3IoZ2csIG1mKQorICAsIEludGVybmFsKGNtOjptYWtlX3VuaXF1ZTxjbUxvY2FsVmlzdWFsU3R1ZGlvN0dlbmVyYXRvckludGVybmFscz4odGhpcykpCiB7Ci0gIHRoaXMtPkludGVybmFsID0gbmV3IGNtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9ySW50ZXJuYWxzKHRoaXMpOwogfQogCi1jbUxvY2FsVmlzdWFsU3R1ZGlvN0dlbmVyYXRvcjo6fmNtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9yKCkKLXsKLSAgZGVsZXRlIHRoaXMtPkludGVybmFsOwotfQorY21Mb2NhbFZpc3VhbFN0dWRpbzdHZW5lcmF0b3I6On5jbUxvY2FsVmlzdWFsU3R1ZGlvN0dlbmVyYXRvcigpID0gZGVmYXVsdDsKIAogdm9pZCBjbUxvY2FsVmlzdWFsU3R1ZGlvN0dlbmVyYXRvcjo6QWRkSGVscGVyQ29tbWFuZHMoKQogewpAQCAtMjI2LDcgKzIyNiw2IEBACiAKICAgc3RkOjpzdHJpbmcgbWFrZWZpbGVJbiA9CiAgICAgY21TdHJDYXQodGhpcy0+R2V0Q3VycmVudFNvdXJjZURpcmVjdG9yeSgpLCAiL0NNYWtlTGlzdHMudHh0Iik7Ci0gIG1ha2VmaWxlSW4gPSBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKG1ha2VmaWxlSW4pOwogICBpZiAoY21Tb3VyY2VGaWxlKiBmaWxlID0gdGhpcy0+TWFrZWZpbGUtPkdldFNvdXJjZShtYWtlZmlsZUluKSkgewogICAgIGlmIChmaWxlLT5HZXRDdXN0b21Db21tYW5kKCkpIHsKICAgICAgIHJldHVybiBmaWxlOwpAQCAtMjU3LDggKzI1Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1jaGVjay1zdGFtcC1maWxlIiwgc3RhbXBOYW1lIH0pOwogICBzdGQ6OnN0cmluZyBjb21tZW50ID0gY21TdHJDYXQoIkJ1aWxkaW5nIEN1c3RvbSBSdWxlICIsIG1ha2VmaWxlSW4pOwogICBjb25zdCBjaGFyKiBub193b3JraW5nX2RpcmVjdG9yeSA9IG51bGxwdHI7Ci0gIHN0ZDo6c3RyaW5nIGZ1bGxwYXRoU3RhbXBOYW1lID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChzdGFtcE5hbWUpOwotICB0aGlzLT5BZGRDdXN0b21Db21tYW5kVG9PdXRwdXQoZnVsbHBhdGhTdGFtcE5hbWUsIGxpc3RGaWxlcywgbWFrZWZpbGVJbiwKKyAgdGhpcy0+QWRkQ3VzdG9tQ29tbWFuZFRvT3V0cHV0KHN0YW1wTmFtZSwgbGlzdEZpbGVzLCBtYWtlZmlsZUluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZExpbmVzLCBjb21tZW50LmNfc3RyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub193b3JraW5nX2RpcmVjdG9yeSwgdHJ1ZSwgZmFsc2UpOwogICBpZiAoY21Tb3VyY2VGaWxlKiBmaWxlID0gdGhpcy0+TWFrZWZpbGUtPkdldFNvdXJjZShtYWtlZmlsZUluKSkgewpAQCAtMTUxMSwxMCArMTUwOSw5IEBACiAgICAgaWYgKGNvbnN0IGNoYXIqIGRlcHMgPSBzZi5HZXRQcm9wZXJ0eSgiT0JKRUNUX0RFUEVORFMiKSkgewogICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGRlcGVuZHMgPSBjbUV4cGFuZGVkTGlzdChkZXBzKTsKICAgICAgIGNvbnN0IGNoYXIqIHNlcCA9ICIiOwotICAgICAgZm9yIChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz46Oml0ZXJhdG9yIGogPSBkZXBlbmRzLmJlZ2luKCk7Ci0gICAgICAgICAgIGogIT0gZGVwZW5kcy5lbmQoKTsgKytqKSB7CisgICAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBkIDogZGVwZW5kcykgewogICAgICAgICBmYy5BZGRpdGlvbmFsRGVwcyArPSBzZXA7Ci0gICAgICAgIGZjLkFkZGl0aW9uYWxEZXBzICs9IGxnLT5Db252ZXJ0VG9YTUxPdXRwdXRQYXRoKCpqKTsKKyAgICAgICAgZmMuQWRkaXRpb25hbERlcHMgKz0gbGctPkNvbnZlcnRUb1hNTE91dHB1dFBhdGgoZCk7CiAgICAgICAgIHNlcCA9ICI7IjsKICAgICAgICAgbmVlZGZjID0gdHJ1ZTsKICAgICAgIH0KQEAgLTIwMTAsNyArMjAwNyw3IEBACiAgIGZvdXQgPDwgIlx0PEdsb2JhbHM+XG4iOwogCiAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGtleSA6IHRhcmdldC0+R2V0UHJvcGVydHlLZXlzKCkpIHsKLSAgICBpZiAoa2V5LmZpbmQoIlZTX0dMT0JBTF8iKSA9PSAwKSB7CisgICAgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChrZXksICJWU19HTE9CQUxfIikpIHsKICAgICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBrZXkuc3Vic3RyKDEwKTsKICAgICAgIGlmICghbmFtZS5lbXB0eSgpKSB7CiAgICAgICAgIC8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbUxvY2FsVmlzdWFsU3R1ZGlvN0dlbmVyYXRvci5oIGIvU291cmNlL2NtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9yLmgKaW5kZXggNzQ1NzY2Yy4uOGI5YjhhZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL2NtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9yLmgKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSAiY21Db25maWd1cmUuaCIgLy8gSVdZVSBwcmFnbWE6IGtlZXAKIAogI2luY2x1ZGUgPGlvc2Z3ZD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtNDgsNiArNDksMTAgQEAKIAogICB2aXJ0dWFsIH5jbUxvY2FsVmlzdWFsU3R1ZGlvN0dlbmVyYXRvcigpOwogCisgIGNtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9yKGNvbnN0IGNtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9yJikgPSBkZWxldGU7CisgIGNvbnN0IGNtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9yJiBvcGVyYXRvcj0oCisgICAgY29uc3QgY21Mb2NhbFZpc3VhbFN0dWRpbzdHZW5lcmF0b3ImKSA9IGRlbGV0ZTsKKwogICB2b2lkIEFkZEhlbHBlckNvbW1hbmRzKCkgb3ZlcnJpZGU7CiAKICAgLyoqCkBAIC0xNDQsNyArMTQ5LDcgQEAKIAogICBib29sIEZvcnRyYW5Qcm9qZWN0OwogICBib29sIFdpbmRvd3NDRVByb2plY3Q7Ci0gIGNtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9ySW50ZXJuYWxzKiBJbnRlcm5hbDsKKyAgc3RkOjp1bmlxdWVfcHRyPGNtTG9jYWxWaXN1YWxTdHVkaW83R2VuZXJhdG9ySW50ZXJuYWxzPiBJbnRlcm5hbDsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtTG9jYWxWaXN1YWxTdHVkaW9HZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtTG9jYWxWaXN1YWxTdHVkaW9HZW5lcmF0b3IuY3h4CmluZGV4IDhkNTA4OTguLjcyNjc5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbUxvY2FsVmlzdWFsU3R1ZGlvR2VuZXJhdG9yLmN4eAorKysgYi9Tb3VyY2UvY21Mb2NhbFZpc3VhbFN0dWRpb0dlbmVyYXRvci5jeHgKQEAgLTE1NCw4ICsxNTQsNyBAQAogICAgIHNjcmlwdCArPSBuZXdsaW5lOwogICAgIG5ld2xpbmUgPSBuZXdsaW5lX3RleHQ7CiAgICAgc2NyaXB0ICs9ICJjZCAiOwotICAgIHNjcmlwdCArPSB0aGlzLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQoCi0gICAgICBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKHdvcmtpbmdEaXJlY3RvcnkpLCBTSEVMTCk7CisgICAgc2NyaXB0ICs9IHRoaXMtPkNvbnZlcnRUb091dHB1dEZvcm1hdCh3b3JraW5nRGlyZWN0b3J5LCBTSEVMTCk7CiAgICAgc2NyaXB0ICs9IGNoZWNrX2Vycm9yOwogCiAgICAgLy8gQ2hhbmdlIHRoZSB3b3JraW5nIGRyaXZlLgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtTWFjaE8uY3h4IGIvU291cmNlL2NtTWFjaE8uY3h4CmluZGV4IDZjYmVkMzYuLjUzMTEyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbU1hY2hPLmN4eAorKysgYi9Tb3VyY2UvY21NYWNoTy5jeHgKQEAgLTc5LDE0ICs3OSwxNCBAQAogICAvLyBBIGxvYWRfY29tbWFuZCBhbmQgaXRzIGFzc29jaWF0ZWQgZGF0YQogICBzdHJ1Y3QgUmF3TG9hZENvbW1hbmQKICAgewotICAgIHVpbnQzMl90IHR5cGUoY29uc3QgY21NYWNoT0hlYWRlckFuZExvYWRDb21tYW5kcyogbSkgY29uc3QKKyAgICB1aW50MzJfdCB0eXBlKGNvbnN0IGNtTWFjaE9IZWFkZXJBbmRMb2FkQ29tbWFuZHMmIG0pIGNvbnN0CiAgICAgewogICAgICAgaWYgKHRoaXMtPkxvYWRDb21tYW5kLnNpemUoKSA8IHNpemVvZihsb2FkX2NvbW1hbmQpKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgICAgfQogICAgICAgY29uc3QgbG9hZF9jb21tYW5kKiBjbWQgPQogICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGxvYWRfY29tbWFuZCo+KCZ0aGlzLT5Mb2FkQ29tbWFuZFswXSk7Ci0gICAgICByZXR1cm4gbS0+c3dhcChjbWQtPmNtZCk7CisgICAgICByZXR1cm4gbS5zd2FwKGNtZC0+Y21kKTsKICAgICB9CiAgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gTG9hZENvbW1hbmQ7CiAgIH07CkBAIC0xODYsOCArMTg2LDExIEBACiB7CiBwdWJsaWM6CiAgIGNtTWFjaE9JbnRlcm5hbChjb25zdCBjaGFyKiBmbmFtZSk7CisgIGNtTWFjaE9JbnRlcm5hbChjb25zdCBjbU1hY2hPSW50ZXJuYWwmKSA9IGRlbGV0ZTsKICAgfmNtTWFjaE9JbnRlcm5hbCgpOwogCisgIGNtTWFjaE9JbnRlcm5hbCYgb3BlcmF0b3I9KGNvbnN0IGNtTWFjaE9JbnRlcm5hbCYpID0gZGVsZXRlOworCiAgIC8vIHJlYWQgYSBNYWNoLU8gZmlsZQogICBib29sIHJlYWRfbWFjaF9vKHVpbnQzMl90IGZpbGVfb2Zmc2V0KTsKIApAQCAtMjAyLDcgKzIwNSw3IEBACiAgIHN0ZDo6c3RyaW5nIEVycm9yTWVzc2FnZTsKIAogICAvLyB0aGUgbGlzdCBvZiBNYWNoLU8ncwotICBzdGQ6OnZlY3RvcjxjbU1hY2hPSGVhZGVyQW5kTG9hZENvbW1hbmRzKj4gTWFjaE9MaXN0OworICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y21NYWNoT0hlYWRlckFuZExvYWRDb21tYW5kcz4+IE1hY2hPTGlzdDsKIH07CiAKIGNtTWFjaE9JbnRlcm5hbDo6Y21NYWNoT0ludGVybmFsKGNvbnN0IGNoYXIqIGZuYW1lKQpAQCAtMjYwLDEyICsyNjMsNyBAQAogICB9CiB9CiAKLWNtTWFjaE9JbnRlcm5hbDo6fmNtTWFjaE9JbnRlcm5hbCgpCi17Ci0gIGZvciAoYXV0byYgaSA6IHRoaXMtPk1hY2hPTGlzdCkgewotICAgIGRlbGV0ZSBpOwotICB9Ci19CitjbU1hY2hPSW50ZXJuYWw6On5jbU1hY2hPSW50ZXJuYWwoKSA9IGRlZmF1bHQ7CiAKIGJvb2wgY21NYWNoT0ludGVybmFsOjpyZWFkX21hY2hfbyh1aW50MzJfdCBmaWxlX29mZnNldCkKIHsKQEAgLTI4MCwyNSArMjc4LDI1IEBACiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKLSAgY21NYWNoT0hlYWRlckFuZExvYWRDb21tYW5kcyogZiA9IG51bGxwdHI7CisgIHN0ZDo6dW5pcXVlX3B0cjxjbU1hY2hPSGVhZGVyQW5kTG9hZENvbW1hbmRzPiBmOwogICBpZiAobWFnaWMgPT0gTUhfQ0lHQU0gfHwgbWFnaWMgPT0gTUhfTUFHSUMpIHsKICAgICBib29sIHN3YXAgPSBmYWxzZTsKICAgICBpZiAobWFnaWMgPT0gTUhfQ0lHQU0pIHsKICAgICAgIHN3YXAgPSB0cnVlOwogICAgIH0KLSAgICBmID0gbmV3IGNtTWFjaE9IZWFkZXJBbmRMb2FkQ29tbWFuZHNJbXBsPG1hY2hfaGVhZGVyPihzd2FwKTsKKyAgICBmID0gY206Om1ha2VfdW5pcXVlPGNtTWFjaE9IZWFkZXJBbmRMb2FkQ29tbWFuZHNJbXBsPG1hY2hfaGVhZGVyPj4oc3dhcCk7CiAgIH0gZWxzZSBpZiAobWFnaWMgPT0gTUhfQ0lHQU1fNjQgfHwgbWFnaWMgPT0gTUhfTUFHSUNfNjQpIHsKICAgICBib29sIHN3YXAgPSBmYWxzZTsKICAgICBpZiAobWFnaWMgPT0gTUhfQ0lHQU1fNjQpIHsKICAgICAgIHN3YXAgPSB0cnVlOwogICAgIH0KLSAgICBmID0gbmV3IGNtTWFjaE9IZWFkZXJBbmRMb2FkQ29tbWFuZHNJbXBsPG1hY2hfaGVhZGVyXzY0Pihzd2FwKTsKKyAgICBmID0KKyAgICAgIGNtOjptYWtlX3VuaXF1ZTxjbU1hY2hPSGVhZGVyQW5kTG9hZENvbW1hbmRzSW1wbDxtYWNoX2hlYWRlcl82ND4+KHN3YXApOwogICB9CiAKICAgaWYgKGYgJiYgZi0+cmVhZF9tYWNoX28odGhpcy0+RmluKSkgewotICAgIHRoaXMtPk1hY2hPTGlzdC5wdXNoX2JhY2soZik7CisgICAgdGhpcy0+TWFjaE9MaXN0LnB1c2hfYmFjayhzdGQ6Om1vdmUoZikpOwogICB9IGVsc2UgewotICAgIGRlbGV0ZSBmOwogICAgIHRoaXMtPkVycm9yTWVzc2FnZSA9ICJGYWlsZWQgdG8gcmVhZCBNYWNoLU8gaGVhZGVyLiI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CkBAIC0zMzMsMTEgKzMzMSwxMiBAQAogICB9CiAKICAgLy8gZ3JhYiB0aGUgZmlyc3QgTWFjaC1PIGFuZCBnZXQgdGhlIGluc3RhbGwgbmFtZSBmcm9tIHRoYXQgb25lCi0gIGNtTWFjaE9IZWFkZXJBbmRMb2FkQ29tbWFuZHMqIG1hY2hvID0gdGhpcy0+SW50ZXJuYWwtPk1hY2hPTGlzdFswXTsKKyAgc3RkOjp1bmlxdWVfcHRyPGNtTWFjaE9IZWFkZXJBbmRMb2FkQ29tbWFuZHM+JiBtYWNobyA9CisgICAgdGhpcy0+SW50ZXJuYWwtPk1hY2hPTGlzdFswXTsKICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYWNoby0+bG9hZF9jb21tYW5kcygpLnNpemUoKTsgaSsrKSB7CiAgICAgY29uc3QgY21NYWNoT0hlYWRlckFuZExvYWRDb21tYW5kczo6UmF3TG9hZENvbW1hbmQmIGNtZCA9CiAgICAgICBtYWNoby0+bG9hZF9jb21tYW5kcygpW2ldOwotICAgIHVpbnQzMl90IGxjX2NtZCA9IGNtZC50eXBlKG1hY2hvKTsKKyAgICB1aW50MzJfdCBsY19jbWQgPSBjbWQudHlwZSgqbWFjaG8pOwogICAgIGlmIChsY19jbWQgPT0gTENfSURfRFlMSUIgfHwgbGNfY21kID09IExDX0xPQURfV0VBS19EWUxJQiB8fAogICAgICAgICBsY19jbWQgPT0gTENfTE9BRF9EWUxJQikgewogICAgICAgaWYgKHNpemVvZihkeWxpYl9jb21tYW5kKSA8IGNtZC5Mb2FkQ29tbWFuZC5zaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbU1ha2VmaWxlLmN4eCBiL1NvdXJjZS9jbU1ha2VmaWxlLmN4eAppbmRleCAxODY4OWZhLi44MTJmOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21NYWtlZmlsZS5jeHgKKysrIGIvU291cmNlL2NtTWFrZWZpbGUuY3h4CkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiY21ha2UuaCIKIAogI2lmbmRlZiBDTUFLRV9CT09UU1RSQVAKKyMgIGluY2x1ZGUgImNtTWFrZWZpbGVQcm9maWxpbmdEYXRhLmgiCiAjICBpbmNsdWRlICJjbVZhcmlhYmxlV2F0Y2guaCIKICNlbmRpZgogCkBAIC0zNzMsMTkgKzM3NCwzMCBAQAogY2xhc3MgY21NYWtlZmlsZUNhbGwKIHsKIHB1YmxpYzoKLSAgY21NYWtlZmlsZUNhbGwoY21NYWtlZmlsZSogbWYsIGNtQ29tbWFuZENvbnRleHQgY29uc3QmIGNjLAorICBjbU1ha2VmaWxlQ2FsbChjbU1ha2VmaWxlKiBtZiwgY21MaXN0RmlsZUZ1bmN0aW9uIGNvbnN0JiBsZmYsCiAgICAgICAgICAgICAgICAgIGNtRXhlY3V0aW9uU3RhdHVzJiBzdGF0dXMpCiAgICAgOiBNYWtlZmlsZShtZikKICAgewogICAgIGNtTGlzdEZpbGVDb250ZXh0IGNvbnN0JiBsZmMgPSBjbUxpc3RGaWxlQ29udGV4dDo6RnJvbUNvbW1hbmRDb250ZXh0KAotICAgICAgY2MsIHRoaXMtPk1ha2VmaWxlLT5TdGF0ZVNuYXBzaG90LkdldEV4ZWN1dGlvbkxpc3RGaWxlKCkpOworICAgICAgbGZmLCB0aGlzLT5NYWtlZmlsZS0+U3RhdGVTbmFwc2hvdC5HZXRFeGVjdXRpb25MaXN0RmlsZSgpKTsKICAgICB0aGlzLT5NYWtlZmlsZS0+QmFja3RyYWNlID0gdGhpcy0+TWFrZWZpbGUtPkJhY2t0cmFjZS5QdXNoKGxmYyk7CiAgICAgKyt0aGlzLT5NYWtlZmlsZS0+UmVjdXJzaW9uRGVwdGg7CiAgICAgdGhpcy0+TWFrZWZpbGUtPkV4ZWN1dGlvblN0YXR1c1N0YWNrLnB1c2hfYmFjaygmc3RhdHVzKTsKKyNpZiAhZGVmaW5lZChDTUFLRV9CT09UU1RSQVApCisgICAgaWYgKHRoaXMtPk1ha2VmaWxlLT5HZXRDTWFrZUluc3RhbmNlKCktPklzUHJvZmlsaW5nRW5hYmxlZCgpKSB7CisgICAgICB0aGlzLT5NYWtlZmlsZS0+R2V0Q01ha2VJbnN0YW5jZSgpLT5HZXRQcm9maWxpbmdPdXRwdXQoKS5TdGFydEVudHJ5KGxmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGZjKTsKKyAgICB9CisjZW5kaWYKICAgfQogCiAgIH5jbU1ha2VmaWxlQ2FsbCgpCiAgIHsKKyNpZiAhZGVmaW5lZChDTUFLRV9CT09UU1RSQVApCisgICAgaWYgKHRoaXMtPk1ha2VmaWxlLT5HZXRDTWFrZUluc3RhbmNlKCktPklzUHJvZmlsaW5nRW5hYmxlZCgpKSB7CisgICAgICB0aGlzLT5NYWtlZmlsZS0+R2V0Q01ha2VJbnN0YW5jZSgpLT5HZXRQcm9maWxpbmdPdXRwdXQoKS5TdG9wRW50cnkoKTsKKyAgICB9CisjZW5kaWYKICAgICB0aGlzLT5NYWtlZmlsZS0+RXhlY3V0aW9uU3RhdHVzU3RhY2sucG9wX2JhY2soKTsKICAgICAtLXRoaXMtPk1ha2VmaWxlLT5SZWN1cnNpb25EZXB0aDsKICAgICB0aGlzLT5NYWtlZmlsZS0+QmFja3RyYWNlID0gdGhpcy0+TWFrZWZpbGUtPkJhY2t0cmFjZS5Qb3AoKTsKQEAgLTY4NSw2ICs2OTcsMjcgQEAKICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgY21NYWtlZmlsZTo6UmVhZExpc3RGaWxlQXNTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2aXJ0dWFsRmlsZU5hbWUpCit7CisgIHN0ZDo6c3RyaW5nIGZpbGVuYW1ldG9yZWFkID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aCgKKyAgICB2aXJ0dWFsRmlsZU5hbWUsIHRoaXMtPkdldEN1cnJlbnRTb3VyY2VEaXJlY3RvcnkoKSk7CisKKyAgTGlzdEZpbGVTY29wZSBzY29wZSh0aGlzLCBmaWxlbmFtZXRvcmVhZCk7CisKKyAgY21MaXN0RmlsZSBsaXN0RmlsZTsKKyAgaWYgKCFsaXN0RmlsZS5QYXJzZVN0cmluZyhjb250ZW50LmNfc3RyKCksIHZpcnR1YWxGaWxlTmFtZS5jX3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPkdldE1lc3NlbmdlcigpLCB0aGlzLT5CYWNrdHJhY2UpKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgdGhpcy0+UmVhZExpc3RGaWxlKGxpc3RGaWxlLCBmaWxlbmFtZXRvcmVhZCk7CisgIGlmIChjbVN5c3RlbVRvb2xzOjpHZXRGYXRhbEVycm9yT2NjdXJlZCgpKSB7CisgICAgc2NvcGUuUXVpZXQoKTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBjbU1ha2VmaWxlOjpSZWFkTGlzdEZpbGUoY21MaXN0RmlsZSBjb25zdCYgbGlzdEZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCYgZmlsZW5hbWV0b3JlYWQpCiB7CkBAIC0yNTg5LDcgKzI2MjIsNyBAQAogICB9OwogCiAgIGZvciAoYXV0byBjb25zdCYgZW50cnkgOiBzZGtEYXRhYmFzZSkgewotICAgIGlmIChzZGtSb290LmZpbmQoZW50cnkubmFtZSkgPT0gMCB8fAorICAgIGlmIChjbUhhc1ByZWZpeChzZGtSb290LCBlbnRyeS5uYW1lKSB8fAogICAgICAgICBzZGtSb290LmZpbmQoc3RkOjpzdHJpbmcoIi8iKSArIGVudHJ5Lm5hbWUpICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7CiAgICAgICByZXR1cm4gZW50cnkuc2RrOwogICAgIH0KQEAgLTMwMTUsNyArMzA0OCw5IEBACiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENBQ0hFOgotICAgICAgICAgICAgICB2YWx1ZSA9IHN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUobG9va3VwKTsKKyAgICAgICAgICAgICAgaWYgKGNtUHJvcCB2YWx1ZTIgPSBzdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKGxvb2t1cCkpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlMi0+Y19zdHIoKTsKKyAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAgICAgICAgLy8gR2V0IHRoZSBzdHJpbmcgd2UncmUgbWVhbnQgdG8gYXBwZW5kIHRvLgpAQCAtNDA2NywxMiArNDEwMiwxNCBAQAogICAgIHJldHVybiBvdXRwdXQuY19zdHIoKTsKICAgfQogCi0gIHJldHVybiB0aGlzLT5TdGF0ZVNuYXBzaG90LkdldERpcmVjdG9yeSgpLkdldFByb3BlcnR5KHByb3ApOworICBjbVByb3AgcmV0VmFsID0gdGhpcy0+U3RhdGVTbmFwc2hvdC5HZXREaXJlY3RvcnkoKS5HZXRQcm9wZXJ0eShwcm9wKTsKKyAgcmV0dXJuIHJldFZhbCA/IHJldFZhbC0+Y19zdHIoKSA6IG51bGxwdHI7CiB9CiAKIGNvbnN0IGNoYXIqIGNtTWFrZWZpbGU6OkdldFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wLCBib29sIGNoYWluKSBjb25zdAogewotICByZXR1cm4gdGhpcy0+U3RhdGVTbmFwc2hvdC5HZXREaXJlY3RvcnkoKS5HZXRQcm9wZXJ0eShwcm9wLCBjaGFpbik7CisgIGNtUHJvcCByZXRWYWwgPSB0aGlzLT5TdGF0ZVNuYXBzaG90LkdldERpcmVjdG9yeSgpLkdldFByb3BlcnR5KHByb3AsIGNoYWluKTsKKyAgcmV0dXJuIHJldFZhbCA/IHJldFZhbC0+Y19zdHIoKSA6IG51bGxwdHI7CiB9CiAKIGJvb2wgY21NYWtlZmlsZTo6R2V0UHJvcGVydHlBc0Jvb2woY29uc3Qgc3RkOjpzdHJpbmcmIHByb3ApIGNvbnN0CkBAIC00NDk4LDcgKzQ1MzUsNyBAQAogCiAgIC8vIERlcHJlY2F0ZSBvbGQgcG9saWNpZXMsIGVzcGVjaWFsbHkgdGhvc2UgdGhhdCByZXF1aXJlIGEgbG90CiAgIC8vIG9mIGNvZGUgdG8gbWFpbnRhaW4gdGhlIG9sZCBiZWhhdmlvci4KLSAgaWYgKHN0YXR1cyA9PSBjbVBvbGljaWVzOjpPTEQgJiYgaWQgPD0gY21Qb2xpY2llczo6Q01QMDA2OSAmJgorICBpZiAoc3RhdHVzID09IGNtUG9saWNpZXM6Ok9MRCAmJiBpZCA8PSBjbVBvbGljaWVzOjpDTVAwMDcxICYmCiAgICAgICAhKHRoaXMtPkdldENNYWtlSW5zdGFuY2UoKS0+R2V0SXNJblRyeUNvbXBpbGUoKSAmJgogICAgICAgICAoCiAgICAgICAgICAgLy8gUG9saWNpZXMgc2V0IGJ5IGNtQ29yZVRyeUNvbXBpbGU6OlRyeUNvbXBpbGVDb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtTWFrZWZpbGUuaCBiL1NvdXJjZS9jbU1ha2VmaWxlLmgKaW5kZXggZDkxOGFiZS4uZDYyODY4MSAxMDA2NDQKLS0tIGEvU291cmNlL2NtTWFrZWZpbGUuaAorKysgYi9Tb3VyY2UvY21NYWtlZmlsZS5oCkBAIC0xMTcsNiArMTE3LDkgQEAKIAogICBib29sIFJlYWRMaXN0RmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUpOwogCisgIGJvb2wgUmVhZExpc3RGaWxlQXNTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZpcnR1YWxGaWxlTmFtZSk7CisKICAgYm9vbCBSZWFkRGVwZW5kZW50RmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub1BvbGljeVNjb3BlID0gdHJ1ZSk7CiAKQEAgLTMxNCw2ICszMTcsMTIgQEAKICAgdm9pZCBBZGRDYWNoZURlZmluaXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkb2MsIGNtU3RhdGVFbnVtczo6Q2FjaGVFbnRyeVR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3JjZSA9IGZhbHNlKTsKKyAgdm9pZCBBZGRDYWNoZURlZmluaXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZG9jLCBjbVN0YXRlRW51bXM6OkNhY2hlRW50cnlUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZm9yY2UgPSBmYWxzZSkKKyAgeworICAgIEFkZENhY2hlRGVmaW5pdGlvbihuYW1lLCB2YWx1ZS5jX3N0cigpLCBkb2MsIHR5cGUsIGZvcmNlKTsKKyAgfQogCiAgIC8qKgogICAgKiBSZW1vdmUgYSB2YXJpYWJsZSBkZWZpbml0aW9uIGZyb20gdGhlIGJ1aWxkLiAgVGhpcyBpcyBub3QgdmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbU1ha2VmaWxlRXhlY3V0YWJsZVRhcmdldEdlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21NYWtlZmlsZUV4ZWN1dGFibGVUYXJnZXRHZW5lcmF0b3IuY3h4CmluZGV4IDA0NzFhNDUuLjRmZTEwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbU1ha2VmaWxlRXhlY3V0YWJsZVRhcmdldEdlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL2NtTWFrZWZpbGVFeGVjdXRhYmxlVGFyZ2V0R2VuZXJhdG9yLmN4eApAQCAtNTQ3LDcgKzU0Nyw3IEBACiAgICAgY21SdWxlUGxhY2Vob2xkZXJFeHBhbmRlcjo6UnVsZVZhcmlhYmxlcyB2YXJzOwogICAgIHZhcnMuQ01UYXJnZXROYW1lID0gdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXROYW1lKCkuY19zdHIoKTsKICAgICB2YXJzLkNNVGFyZ2V0VHlwZSA9Ci0gICAgICBjbVN0YXRlOjpHZXRUYXJnZXRUeXBlTmFtZSh0aGlzLT5HZW5lcmF0b3JUYXJnZXQtPkdldFR5cGUoKSk7CisgICAgICBjbVN0YXRlOjpHZXRUYXJnZXRUeXBlTmFtZSh0aGlzLT5HZW5lcmF0b3JUYXJnZXQtPkdldFR5cGUoKSkuY19zdHIoKTsKICAgICB2YXJzLkxhbmd1YWdlID0gbGlua0xhbmd1YWdlLmNfc3RyKCk7CiAgICAgdmFycy5PYmplY3RzID0gYnVpbGRPYmpzLmNfc3RyKCk7CiAgICAgc3RkOjpzdHJpbmcgb2JqZWN0RGlyID0gdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXRTdXBwb3J0RGlyZWN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21NYWtlZmlsZUxpYnJhcnlUYXJnZXRHZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtTWFrZWZpbGVMaWJyYXJ5VGFyZ2V0R2VuZXJhdG9yLmN4eAppbmRleCBkM2YzYTRmLi40NDM0ZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21NYWtlZmlsZUxpYnJhcnlUYXJnZXRHZW5lcmF0b3IuY3h4CisrKyBiL1NvdXJjZS9jbU1ha2VmaWxlTGlicmFyeVRhcmdldEdlbmVyYXRvci5jeHgKQEAgLTc1Niw3ICs3NTYsNyBAQAogCiAgICAgdmFycy5DTVRhcmdldE5hbWUgPSB0aGlzLT5HZW5lcmF0b3JUYXJnZXQtPkdldE5hbWUoKS5jX3N0cigpOwogICAgIHZhcnMuQ01UYXJnZXRUeXBlID0KLSAgICAgIGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKHRoaXMtPkdlbmVyYXRvclRhcmdldC0+R2V0VHlwZSgpKTsKKyAgICAgIGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKHRoaXMtPkdlbmVyYXRvclRhcmdldC0+R2V0VHlwZSgpKS5jX3N0cigpOwogICAgIHZhcnMuTGFuZ3VhZ2UgPSBsaW5rTGFuZ3VhZ2UuY19zdHIoKTsKICAgICB2YXJzLkFJWEV4cG9ydHMgPSBhaXhFeHBvcnRzLmNfc3RyKCk7CiAgICAgdmFycy5PYmplY3RzID0gYnVpbGRPYmpzLmNfc3RyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21NYWtlZmlsZVByb2ZpbGluZ0RhdGEuY3h4IGIvU291cmNlL2NtTWFrZWZpbGVQcm9maWxpbmdEYXRhLmN4eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGY0ZWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2NtTWFrZWZpbGVQcm9maWxpbmdEYXRhLmN4eApAQCAtMCwwICsxLDExNCBAQAorLyogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE9TSS1hcHByb3ZlZCBCU0QgMy1DbGF1c2UgTGljZW5zZS4gIFNlZSBhY2NvbXBhbnlpbmcKKyAgIGZpbGUgQ29weXJpZ2h0LnR4dCBvciBodHRwczovL2NtYWtlLm9yZy9saWNlbnNpbmcgZm9yIGRldGFpbHMuICAqLworI2luY2x1ZGUgImNtTWFrZWZpbGVQcm9maWxpbmdEYXRhLmgiCisKKyNpbmNsdWRlIDxjaHJvbm8+CisjaW5jbHVkZSA8c3RkZXhjZXB0PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImNtc3lzL0ZTdHJlYW0uaHh4IgorI2luY2x1ZGUgImNtc3lzL1N5c3RlbUluZm9ybWF0aW9uLmh4eCIKKworI2luY2x1ZGUgImNtX2pzb25jcHBfdmFsdWUuaCIKKyNpbmNsdWRlICJjbV9qc29uY3BwX3dyaXRlci5oIgorCisjaW5jbHVkZSAiY21MaXN0RmlsZUNhY2hlLmgiCisjaW5jbHVkZSAiY21TdHJpbmdBbGdvcml0aG1zLmgiCisjaW5jbHVkZSAiY21TeXN0ZW1Ub29scy5oIgorCitjbU1ha2VmaWxlUHJvZmlsaW5nRGF0YTo6Y21NYWtlZmlsZVByb2ZpbGluZ0RhdGEoCisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9maWxlU3RyZWFtKQoreworICBzdGQ6Omlvczo6b3Blbm1vZGUgb21vZGUgPSBzdGQ6Omlvczo6b3V0IHwgc3RkOjppb3M6OnRydW5jOworICB0aGlzLT5Qcm9maWxlU3RyZWFtLm9wZW4ocHJvZmlsZVN0cmVhbS5jX3N0cigpLCBvbW9kZSk7CisgIEpzb246OlN0cmVhbVdyaXRlckJ1aWxkZXIgd2J1aWxkZXI7CisgIHRoaXMtPkpzb25Xcml0ZXIgPQorICAgIHN0ZDo6dW5pcXVlX3B0cjxKc29uOjpTdHJlYW1Xcml0ZXI+KHdidWlsZGVyLm5ld1N0cmVhbVdyaXRlcigpKTsKKyAgaWYgKCF0aGlzLT5Qcm9maWxlU3RyZWFtLmdvb2QoKSkgeworICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcihzdGQ6OnN0cmluZygiVW5hYmxlIHRvIG9wZW46ICIpICsgcHJvZmlsZVN0cmVhbSk7CisgIH0KKworICB0aGlzLT5Qcm9maWxlU3RyZWFtIDw8ICJbIjsKK307CisKK2NtTWFrZWZpbGVQcm9maWxpbmdEYXRhOjp+Y21NYWtlZmlsZVByb2ZpbGluZ0RhdGEoKSBub2V4Y2VwdAoreworICBpZiAodGhpcy0+UHJvZmlsZVN0cmVhbS5nb29kKCkpIHsKKyAgICB0cnkgeworICAgICAgdGhpcy0+UHJvZmlsZVN0cmVhbSA8PCAiXSI7CisgICAgICB0aGlzLT5Qcm9maWxlU3RyZWFtLmNsb3NlKCk7CisgICAgfSBjYXRjaCAoLi4uKSB7CisgICAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigiRXJyb3Igd3JpdGluZyBwcm9maWxpbmcgb3V0cHV0ISIpOworICAgIH0KKyAgfQorfQorCit2b2lkIGNtTWFrZWZpbGVQcm9maWxpbmdEYXRhOjpTdGFydEVudHJ5KGNvbnN0IGNtTGlzdEZpbGVGdW5jdGlvbiYgbGZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUxpc3RGaWxlQ29udGV4dCBjb25zdCYgbGZjKQoreworICAvKiBEbyBub3QgdHJ5IGFnYWluIGlmIHdlIHByZXZpb3VzbHkgZmFpbGVkIHRvIHdyaXRlIHRvIG91dHB1dC4gKi8KKyAgaWYgKCF0aGlzLT5Qcm9maWxlU3RyZWFtLmdvb2QoKSkgeworICAgIHJldHVybjsKKyAgfQorCisgIHRyeSB7CisgICAgaWYgKHRoaXMtPlByb2ZpbGVTdHJlYW0udGVsbHAoKSA+IDEpIHsKKyAgICAgIHRoaXMtPlByb2ZpbGVTdHJlYW0gPDwgIiwiOworICAgIH0KKyAgICBjbXN5czo6U3lzdGVtSW5mb3JtYXRpb24gaW5mbzsKKyAgICBKc29uOjpWYWx1ZSB2OworICAgIHZbInBoIl0gPSAiQiI7CisgICAgdlsibmFtZSJdID0gbGZmLk5hbWUuT3JpZ2luYWw7CisgICAgdlsiY2F0Il0gPSAiY21ha2UiOworICAgIHZbInRzIl0gPSBKc29uOjpWYWx1ZTo6VUludDY0KAorICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oCisgICAgICAgIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKSkKKyAgICAgICAgLmNvdW50KCkpOworICAgIHZbInBpZCJdID0gc3RhdGljX2Nhc3Q8aW50PihpbmZvLkdldFByb2Nlc3NJZCgpKTsKKyAgICB2WyJ0aWQiXSA9IDA7CisgICAgSnNvbjo6VmFsdWUgYXJnc1ZhbHVlOworICAgIGlmICghbGZmLkFyZ3VtZW50cy5lbXB0eSgpKSB7CisgICAgICBzdGQ6OnN0cmluZyBhcmdzOworICAgICAgZm9yIChjb25zdCBhdXRvJiBhIDogbGZmLkFyZ3VtZW50cykgeworICAgICAgICBhcmdzICs9IChhcmdzLmVtcHR5KCkgPyAiIiA6ICIgIikgKyBhLlZhbHVlOworICAgICAgfQorICAgICAgYXJnc1ZhbHVlWyJmdW5jdGlvbkFyZ3MiXSA9IGFyZ3M7CisgICAgfQorICAgIGFyZ3NWYWx1ZVsibG9jYXRpb24iXSA9IGxmYy5GaWxlUGF0aCArICI6IiArIHN0ZDo6dG9fc3RyaW5nKGxmYy5MaW5lKTsKKyAgICB2WyJhcmdzIl0gPSBhcmdzVmFsdWU7CisKKyAgICB0aGlzLT5Kc29uV3JpdGVyLT53cml0ZSh2LCAmdGhpcy0+UHJvZmlsZVN0cmVhbSk7CisgIH0gY2F0Y2ggKHN0ZDo6aW9zX2Jhc2U6OmZhaWx1cmUmIGZhaWwpIHsKKyAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigKKyAgICAgIGNtU3RyQ2F0KCJGYWlsZWQgdG8gd3JpdGUgdG8gcHJvZmlsaW5nIG91dHB1dDogIiwgZmFpbC53aGF0KCkpKTsKKyAgfSBjYXRjaCAoLi4uKSB7CisgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoIkVycm9yIHdyaXRpbmcgcHJvZmlsaW5nIG91dHB1dCEiKTsKKyAgfQorfQorCit2b2lkIGNtTWFrZWZpbGVQcm9maWxpbmdEYXRhOjpTdG9wRW50cnkoKQoreworICAvKiBEbyBub3QgdHJ5IGFnYWluIGlmIHdlIHByZXZpb3VzbHkgZmFpbGVkIHRvIHdyaXRlIHRvIG91dHB1dC4gKi8KKyAgaWYgKCF0aGlzLT5Qcm9maWxlU3RyZWFtLmdvb2QoKSkgeworICAgIHJldHVybjsKKyAgfQorCisgIHRyeSB7CisgICAgdGhpcy0+UHJvZmlsZVN0cmVhbSA8PCAiLCI7CisgICAgY21zeXM6OlN5c3RlbUluZm9ybWF0aW9uIGluZm87CisgICAgSnNvbjo6VmFsdWUgdjsKKyAgICB2WyJwaCJdID0gIkUiOworICAgIHZbInRzIl0gPSBKc29uOjpWYWx1ZTo6VUludDY0KAorICAgICAgc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oCisgICAgICAgIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKSkKKyAgICAgICAgLmNvdW50KCkpOworICAgIHZbInBpZCJdID0gc3RhdGljX2Nhc3Q8aW50PihpbmZvLkdldFByb2Nlc3NJZCgpKTsKKyAgICB2WyJ0aWQiXSA9IDA7CisgICAgdGhpcy0+SnNvbldyaXRlci0+d3JpdGUodiwgJnRoaXMtPlByb2ZpbGVTdHJlYW0pOworICB9IGNhdGNoIChzdGQ6Omlvc19iYXNlOjpmYWlsdXJlJiBmYWlsKSB7CisgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoCisgICAgICBjbVN0ckNhdCgiRmFpbGVkIHRvIHdyaXRlIHRvIHByb2ZpbGluZyBvdXRwdXQ6IiwgZmFpbC53aGF0KCkpKTsKKyAgfSBjYXRjaCAoLi4uKSB7CisgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoIkVycm9yIHdyaXRpbmcgcHJvZmlsaW5nIG91dHB1dCEiKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtTWFrZWZpbGVQcm9maWxpbmdEYXRhLmggYi9Tb3VyY2UvY21NYWtlZmlsZVByb2ZpbGluZ0RhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmFiZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2NtTWFrZWZpbGVQcm9maWxpbmdEYXRhLmgKQEAgLTAsMCArMSwyOSBAQAorLyogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE9TSS1hcHByb3ZlZCBCU0QgMy1DbGF1c2UgTGljZW5zZS4gIFNlZSBhY2NvbXBhbnlpbmcKKyAgIGZpbGUgQ29weXJpZ2h0LnR4dCBvciBodHRwczovL2NtYWtlLm9yZy9saWNlbnNpbmcgZm9yIGRldGFpbHMuICAqLworI2lmbmRlZiBjbU1ha2VmaWxlUHJvZmlsaW5nRGF0YV9oCisjZGVmaW5lIGNtTWFrZWZpbGVQcm9maWxpbmdEYXRhX2gKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiY21zeXMvRlN0cmVhbS5oeHgiCisKK25hbWVzcGFjZSBKc29uIHsKK2NsYXNzIFN0cmVhbVdyaXRlcjsKK30KKworY2xhc3MgY21MaXN0RmlsZUNvbnRleHQ7CitzdHJ1Y3QgY21MaXN0RmlsZUZ1bmN0aW9uOworCitjbGFzcyBjbU1ha2VmaWxlUHJvZmlsaW5nRGF0YQoreworcHVibGljOgorICBjbU1ha2VmaWxlUHJvZmlsaW5nRGF0YShjb25zdCBzdGQ6OnN0cmluZyYpOworICB+Y21NYWtlZmlsZVByb2ZpbGluZ0RhdGEoKSBub2V4Y2VwdDsKKyAgdm9pZCBTdGFydEVudHJ5KGNvbnN0IGNtTGlzdEZpbGVGdW5jdGlvbiYgbGZmLCBjbUxpc3RGaWxlQ29udGV4dCBjb25zdCYgbGZjKTsKKyAgdm9pZCBTdG9wRW50cnkoKTsKKworcHJpdmF0ZToKKyAgY21zeXM6Om9mc3RyZWFtIFByb2ZpbGVTdHJlYW07CisgIHN0ZDo6dW5pcXVlX3B0cjxKc29uOjpTdHJlYW1Xcml0ZXI+IEpzb25Xcml0ZXI7Cit9OworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21NYWtlZmlsZVRhcmdldEdlbmVyYXRvci5jeHggYi9Tb3VyY2UvY21NYWtlZmlsZVRhcmdldEdlbmVyYXRvci5jeHgKaW5kZXggZDdlMmRlNi4uNGZiODRlZSAxMDA2NDQKLS0tIGEvU291cmNlL2NtTWFrZWZpbGVUYXJnZXRHZW5lcmF0b3IuY3h4CisrKyBiL1NvdXJjZS9jbU1ha2VmaWxlVGFyZ2V0R2VuZXJhdG9yLmN4eApAQCAtNDYsOSArNDYsOCBAQAogICAgIHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5HZXRHbG9iYWxHZW5lcmF0b3IoKSk7CiAgIGNtYWtlKiBjbSA9IHRoaXMtPkdsb2JhbEdlbmVyYXRvci0+R2V0Q01ha2VJbnN0YW5jZSgpOwogICB0aGlzLT5Ob1J1bGVNZXNzYWdlcyA9IGZhbHNlOwotICBpZiAoY29uc3QgY2hhciogcnVsZVN0YXR1cyA9Ci0gICAgICAgIGNtLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eSgiUlVMRV9NRVNTQUdFUyIpKSB7Ci0gICAgdGhpcy0+Tm9SdWxlTWVzc2FnZXMgPSBjbUlzT2ZmKHJ1bGVTdGF0dXMpOworICBpZiAoY21Qcm9wIHJ1bGVTdGF0dXMgPSBjbS0+R2V0U3RhdGUoKS0+R2V0R2xvYmFsUHJvcGVydHkoIlJVTEVfTUVTU0FHRVMiKSkgeworICAgIHRoaXMtPk5vUnVsZU1lc3NhZ2VzID0gY21Jc09mZigqcnVsZVN0YXR1cyk7CiAgIH0KICAgTWFjT1NYQ29udGVudEdlbmVyYXRvciA9IGNtOjptYWtlX3VuaXF1ZTxNYWNPU1hDb250ZW50R2VuZXJhdG9yVHlwZT4odGhpcyk7CiB9CkBAIC0xNTUsNyArMTU0LDcgQEAKIAogICAvLyBFdmFsdWF0ZXMgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIGFuZCBleHBhbmRzIHByb3BfdmFsdWUKICAgYXV0byBldmFsdWF0ZWRGaWxlcyA9Ci0gICAgW3RoaXNdKGNvbnN0IGNoYXIqIHByb3BfdmFsdWUpIC0+IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB7CisgICAgW3RoaXNdKGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wX3ZhbHVlKSAtPiBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gewogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBmaWxlczsKICAgICBjbUV4cGFuZExpc3QoY21HZW5lcmF0b3JFeHByZXNzaW9uOjpFdmFsdWF0ZSgKICAgICAgICAgICAgICAgICAgICBwcm9wX3ZhbHVlLCB0aGlzLT5Mb2NhbEdlbmVyYXRvciwgdGhpcy0+R2V0Q29uZmlnTmFtZSgpLApAQCAtMzAwLDggKzI5OSw3IEBACiAgICAgICBkZXBlbmRGaWxlTmFtZUZ1bGwsIGZhbHNlLCB0aGlzLT5HbG9iYWxHZW5lcmF0b3ItPkdldE1ha2VmaWxlRW5jb2RpbmcoKSk7CiAgICAgZGVwRmlsZVN0cmVhbSA8PCAiIyBFbXB0eSBkZXBlbmRlbmNpZXMgZmlsZSBmb3IgIgogICAgICAgICAgICAgICAgICAgPDwgdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXROYW1lKCkgPDwgIi5cbiIKLSAgICAgICAgICAgICAgICAgIDw8ICIjIFRoaXMgbWF5IGJlIHJlcGxhY2VkIHdoZW4gZGVwZW5kZW5jaWVzIGFyZSBidWlsdC4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICAgICAgICA8PCAiIyBUaGlzIG1heSBiZSByZXBsYWNlZCB3aGVuIGRlcGVuZGVuY2llcyBhcmUgYnVpbHQuXG4iOwogICB9CiAKICAgLy8gT3BlbiB0aGUgZmxhZ3MgZmlsZS4gIFRoaXMgc2hvdWxkIGJlIGNvcHktaWYtZGlmZmVyZW50IGJlY2F1c2UgdGhlCkBAIC02MzksNyArNjM3LDcgQEAKICAgY21SdWxlUGxhY2Vob2xkZXJFeHBhbmRlcjo6UnVsZVZhcmlhYmxlcyB2YXJzOwogICB2YXJzLkNNVGFyZ2V0TmFtZSA9IHRoaXMtPkdlbmVyYXRvclRhcmdldC0+R2V0TmFtZSgpLmNfc3RyKCk7CiAgIHZhcnMuQ01UYXJnZXRUeXBlID0KLSAgICBjbVN0YXRlOjpHZXRUYXJnZXRUeXBlTmFtZSh0aGlzLT5HZW5lcmF0b3JUYXJnZXQtPkdldFR5cGUoKSk7CisgICAgY21TdGF0ZTo6R2V0VGFyZ2V0VHlwZU5hbWUodGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXRUeXBlKCkpLmNfc3RyKCk7CiAgIHZhcnMuTGFuZ3VhZ2UgPSBsYW5nLmNfc3RyKCk7CiAgIHZhcnMuVGFyZ2V0ID0gdGFyZ2V0T3V0UGF0aFJlYWwuY19zdHIoKTsKICAgdmFycy5UYXJnZXRQREIgPSB0YXJnZXRPdXRQYXRoUERCLmNfc3RyKCk7CkBAIC03MTYsOCArNzE0LDggQEAKICAgICAgIC8vIG5vIGxhdW5jaGVyIGZvciBDTUFLRV9FWFBPUlRfQ09NUElMRV9DT01NQU5EUwogICAgICAgcnVsZVBsYWNlaG9sZGVyRXhwYW5kZXItPkV4cGFuZFJ1bGVWYXJpYWJsZXModGhpcy0+TG9jYWxHZW5lcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlQ29tbWFuZCwgdmFycyk7Ci0gICAgICBzdGQ6OnN0cmluZyB3b3JraW5nRGlyZWN0b3J5ID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aCgKLSAgICAgICAgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkdldEN1cnJlbnRCaW5hcnlEaXJlY3RvcnkoKSk7CisgICAgICBzdGQ6OnN0cmluZyB3b3JraW5nRGlyZWN0b3J5ID0KKyAgICAgICAgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkdldEN1cnJlbnRCaW5hcnlEaXJlY3RvcnkoKTsKICAgICAgIGNvbXBpbGVDb21tYW5kLnJlcGxhY2UoY29tcGlsZUNvbW1hbmQuZmluZChsYW5nRmxhZ3MpLCBsYW5nRmxhZ3Muc2l6ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5HZXRGbGFncyhsYW5nLCB0aGlzLT5HZXRDb25maWdOYW1lKCkpKTsKICAgICAgIHN0ZDo6c3RyaW5nIGxhbmdEZWZpbmVzID0gc3RkOjpzdHJpbmcoIiQoIikgKyBsYW5nICsgIl9ERUZJTkVTKSI7CkBAIC0xMTI5LDggKzExMjcsNyBAQAogICAvLyB0cmFuc2xhdGlvbiB0YWJsZSBmb3IgdGhlIGRlcGVuZGVuY3kgc2Nhbm5pbmcgcHJvY2Vzcy4KICAgZGVwQ21kIDw8ICJjZCAiCiAgICAgICAgICA8PCAodGhpcy0+TG9jYWxHZW5lcmF0b3ItPkNvbnZlcnRUb091dHB1dEZvcm1hdCgKLSAgICAgICAgICAgICAgY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aCgKLSAgICAgICAgICAgICAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0QmluYXJ5RGlyZWN0b3J5KCkpLAorICAgICAgICAgICAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0QmluYXJ5RGlyZWN0b3J5KCksCiAgICAgICAgICAgICAgIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCkpCiAgICAgICAgICA8PCAiICYmICI7CiAjZW5kaWYKQEAgLTExNDYsMjMgKzExNDMsMTkgQEAKICAgZGVwQ21kIDw8ICIkKENNQUtFX0NPTU1BTkQpIC1FIGNtYWtlX2RlcGVuZHMgXCIiCiAgICAgICAgICA8PCB0aGlzLT5HbG9iYWxHZW5lcmF0b3ItPkdldE5hbWUoKSA8PCAiXCIgIgogICAgICAgICAgPDwgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkNvbnZlcnRUb091dHB1dEZvcm1hdCgKLSAgICAgICAgICAgICAgY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aCgKLSAgICAgICAgICAgICAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0U291cmNlRGlyZWN0b3J5KCkpLAorICAgICAgICAgICAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0U291cmNlRGlyZWN0b3J5KCksCiAgICAgICAgICAgICAgIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCkKICAgICAgICAgIDw8ICIgIgogICAgICAgICAgPDwgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkNvbnZlcnRUb091dHB1dEZvcm1hdCgKLSAgICAgICAgICAgICAgY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aCgKLSAgICAgICAgICAgICAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0Q3VycmVudFNvdXJjZURpcmVjdG9yeSgpKSwKKyAgICAgICAgICAgICAgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkdldEN1cnJlbnRTb3VyY2VEaXJlY3RvcnkoKSwKICAgICAgICAgICAgICAgY21PdXRwdXRDb252ZXJ0ZXI6OlNIRUxMKQogICAgICAgICAgPDwgIiAiCiAgICAgICAgICA8PCB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+Q29udmVydFRvT3V0cHV0Rm9ybWF0KAotICAgICAgICAgICAgICBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKAotICAgICAgICAgICAgICAgIHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5HZXRCaW5hcnlEaXJlY3RvcnkoKSksCisgICAgICAgICAgICAgIHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5HZXRCaW5hcnlEaXJlY3RvcnkoKSwKICAgICAgICAgICAgICAgY21PdXRwdXRDb252ZXJ0ZXI6OlNIRUxMKQogICAgICAgICAgPDwgIiAiCiAgICAgICAgICA8PCB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+Q29udmVydFRvT3V0cHV0Rm9ybWF0KAotICAgICAgICAgICAgICBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKAotICAgICAgICAgICAgICAgIHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5HZXRDdXJyZW50QmluYXJ5RGlyZWN0b3J5KCkpLAorICAgICAgICAgICAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0Q3VycmVudEJpbmFyeURpcmVjdG9yeSgpLAogICAgICAgICAgICAgICBjbU91dHB1dENvbnZlcnRlcjo6U0hFTEwpCiAgICAgICAgICA8PCAiICIKICAgICAgICAgIDw8IHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQoCkBAIC0xMjUwLDggKzEyNDMsMTAgQEAKIAogICAvLyBTZXR1cCBpbXBsaWNpdCBkZXBlbmRlbmN5IHNjYW5uaW5nLgogICBmb3IgKGF1dG8gY29uc3QmIGlkaSA6IGNjZy5HZXRDQygpLkdldEltcGxpY2l0RGVwZW5kcygpKSB7Ci0gICAgc3RkOjpzdHJpbmcgb2JqRnVsbFBhdGggPSBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKG91dHB1dHNbMF0pOwotICAgIHN0ZDo6c3RyaW5nIHNyY0Z1bGxQYXRoID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChpZGkuc2Vjb25kKTsKKyAgICBzdGQ6OnN0cmluZyBvYmpGdWxsUGF0aCA9IGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgoCisgICAgICBvdXRwdXRzWzBdLCB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0Q3VycmVudEJpbmFyeURpcmVjdG9yeSgpKTsKKyAgICBzdGQ6OnN0cmluZyBzcmNGdWxsUGF0aCA9IGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgoCisgICAgICBpZGkuc2Vjb25kLCB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0Q3VycmVudEJpbmFyeURpcmVjdG9yeSgpKTsKICAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+QWRkSW1wbGljaXREZXBlbmRzKHRoaXMtPkdlbmVyYXRvclRhcmdldCwgaWRpLmZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqRnVsbFBhdGgsIHNyY0Z1bGxQYXRoKTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtTmluamFOb3JtYWxUYXJnZXRHZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtTmluamFOb3JtYWxUYXJnZXRHZW5lcmF0b3IuY3h4CmluZGV4IDg4NTcwM2YuLjljNGZmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbU5pbmphTm9ybWFsVGFyZ2V0R2VuZXJhdG9yLmN4eAorKysgYi9Tb3VyY2UvY21OaW5qYU5vcm1hbFRhcmdldEdlbmVyYXRvci5jeHgKQEAgLTE1NiwyMyArMTU2LDI1IEBACiBzdGQ6OnN0cmluZyBjbU5pbmphTm9ybWFsVGFyZ2V0R2VuZXJhdG9yOjpMYW5ndWFnZUxpbmtlclJ1bGUoCiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcpIGNvbnN0CiB7Ci0gIHJldHVybiB0aGlzLT5UYXJnZXRMaW5rTGFuZ3VhZ2UoY29uZmlnKSArICJfIiArCi0gICAgY21TdGF0ZTo6R2V0VGFyZ2V0VHlwZU5hbWUodGhpcy0+R2V0R2VuZXJhdG9yVGFyZ2V0KCktPkdldFR5cGUoKSkgKwotICAgICJfTElOS0VSX18iICsKKyAgcmV0dXJuIGNtU3RyQ2F0KAorICAgIHRoaXMtPlRhcmdldExpbmtMYW5ndWFnZShjb25maWcpLCAiXyIsCisgICAgY21TdGF0ZTo6R2V0VGFyZ2V0VHlwZU5hbWUodGhpcy0+R2V0R2VuZXJhdG9yVGFyZ2V0KCktPkdldFR5cGUoKSksCisgICAgIl9MSU5LRVJfXyIsCiAgICAgY21HbG9iYWxOaW5qYUdlbmVyYXRvcjo6RW5jb2RlUnVsZU5hbWUoCi0gICAgICAgICAgIHRoaXMtPkdldEdlbmVyYXRvclRhcmdldCgpLT5HZXROYW1lKCkpICsKLSAgICAiXyIgKyBjb25maWc7CisgICAgICB0aGlzLT5HZXRHZW5lcmF0b3JUYXJnZXQoKS0+R2V0TmFtZSgpKSwKKyAgICAiXyIsIGNvbmZpZyk7CiB9CiAKIHN0ZDo6c3RyaW5nIGNtTmluamFOb3JtYWxUYXJnZXRHZW5lcmF0b3I6Okxhbmd1YWdlTGlua2VyRGV2aWNlUnVsZSgKICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZykgY29uc3QKIHsKLSAgcmV0dXJuIHRoaXMtPlRhcmdldExpbmtMYW5ndWFnZShjb25maWcpICsgIl8iICsKLSAgICBjbVN0YXRlOjpHZXRUYXJnZXRUeXBlTmFtZSh0aGlzLT5HZXRHZW5lcmF0b3JUYXJnZXQoKS0+R2V0VHlwZSgpKSArCi0gICAgIl9ERVZJQ0VfTElOS0VSX18iICsKKyAgcmV0dXJuIGNtU3RyQ2F0KAorICAgIHRoaXMtPlRhcmdldExpbmtMYW5ndWFnZShjb25maWcpLCAiXyIsCisgICAgY21TdGF0ZTo6R2V0VGFyZ2V0VHlwZU5hbWUodGhpcy0+R2V0R2VuZXJhdG9yVGFyZ2V0KCktPkdldFR5cGUoKSksCisgICAgIl9ERVZJQ0VfTElOS0VSX18iLAogICAgIGNtR2xvYmFsTmluamFHZW5lcmF0b3I6OkVuY29kZVJ1bGVOYW1lKAotICAgICAgICAgICB0aGlzLT5HZXRHZW5lcmF0b3JUYXJnZXQoKS0+R2V0TmFtZSgpKSArCi0gICAgIl8iICsgY29uZmlnOworICAgICAgdGhpcy0+R2V0R2VuZXJhdG9yVGFyZ2V0KCktPkdldE5hbWUoKSksCisgICAgIl8iLCBjb25maWcpOwogfQogCiBzdHJ1Y3QgY21OaW5qYVJlbW92ZU5vT3BDb21tYW5kcwpAQCAtMTkxLDcgKzE5Myw4IEBACiAgICAgY21SdWxlUGxhY2Vob2xkZXJFeHBhbmRlcjo6UnVsZVZhcmlhYmxlcyB2YXJzOwogICAgIHZhcnMuQ01UYXJnZXROYW1lID0gdGhpcy0+R2V0R2VuZXJhdG9yVGFyZ2V0KCktPkdldE5hbWUoKS5jX3N0cigpOwogICAgIHZhcnMuQ01UYXJnZXRUeXBlID0KLSAgICAgIGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKHRoaXMtPkdldEdlbmVyYXRvclRhcmdldCgpLT5HZXRUeXBlKCkpOworICAgICAgY21TdGF0ZTo6R2V0VGFyZ2V0VHlwZU5hbWUodGhpcy0+R2V0R2VuZXJhdG9yVGFyZ2V0KCktPkdldFR5cGUoKSkKKyAgICAgICAgLmNfc3RyKCk7CiAKICAgICB2YXJzLkxhbmd1YWdlID0gIkNVREEiOwogCkBAIC0yODIsNyArMjg1LDcgQEAKICAgICBjbU5pbmphUnVsZSBydWxlKHN0ZDo6bW92ZShsaW5rUnVsZU5hbWUpKTsKICAgICBjbVJ1bGVQbGFjZWhvbGRlckV4cGFuZGVyOjpSdWxlVmFyaWFibGVzIHZhcnM7CiAgICAgdmFycy5DTVRhcmdldE5hbWUgPSB0aGlzLT5HZXRHZW5lcmF0b3JUYXJnZXQoKS0+R2V0TmFtZSgpLmNfc3RyKCk7Ci0gICAgdmFycy5DTVRhcmdldFR5cGUgPSBjbVN0YXRlOjpHZXRUYXJnZXRUeXBlTmFtZSh0YXJnZXRUeXBlKTsKKyAgICB2YXJzLkNNVGFyZ2V0VHlwZSA9IGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKHRhcmdldFR5cGUpLmNfc3RyKCk7CiAKICAgICBzdGQ6OnN0cmluZyBsYW5nID0gdGhpcy0+VGFyZ2V0TGlua0xhbmd1YWdlKGNvbmZpZyk7CiAgICAgdmFycy5MYW5ndWFnZSA9IGNvbmZpZy5jX3N0cigpOwpAQCAtODEyLDggKzgxNSwyMCBAQAogICAgIHRhcmdldE91dHB1dFJlYWwgPSB0aGlzLT5Db252ZXJ0VG9OaW5qYVBhdGgodGFyZ2V0T3V0cHV0UmVhbCk7CiAgIH0gZWxzZSBpZiAoZ3QtPklzRnJhbWV3b3JrT25BcHBsZSgpKSB7CiAgICAgLy8gQ3JlYXRlIHRoZSBsaWJyYXJ5IGZyYW1ld29yay4KKworICAgIGNtT1NYQnVuZGxlR2VuZXJhdG9yOjpTa2lwUGFydHMgYnVuZGxlU2tpcFBhcnRzOworICAgIGlmIChnbG9iYWxHZW4tPkdldE5hbWUoKSA9PSAiTmluamEgTXVsdGktQ29uZmlnIikgeworICAgICAgY29uc3QgYXV0byBwb3N0Rml4ID0gdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXRGaWxlUG9zdGZpeChjb25maWcpOworICAgICAgLy8gU2tpcCBjcmVhdGluZyBJbmZvLnBsaXN0IHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zLCBhbmQKKyAgICAgIC8vIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaGFzIGEgcG9zdGZpeC4gVGhlIG5vbi1wb3N0Zml4IGNvbmZpZ3VyYXRpb24KKyAgICAgIC8vIEluZm8ucGxpc3QgY2FuIGJlIHVzZWQgYnkgYWxsIHRoZSBvdGhlciBjb25maWd1cmF0aW9ucy4KKyAgICAgIGlmICghcG9zdEZpeC5lbXB0eSgpKSB7CisgICAgICAgIGJ1bmRsZVNraXBQYXJ0cy5pbmZvUGxpc3QgPSB0cnVlOworICAgICAgfQorICAgIH0KKwogICAgIHRoaXMtPk9TWEJ1bmRsZUdlbmVyYXRvci0+Q3JlYXRlRnJhbWV3b3JrKAotICAgICAgdGd0TmFtZXMuT3V0cHV0LCBndC0+R2V0RGlyZWN0b3J5KGNvbmZpZyksIGNvbmZpZyk7CisgICAgICB0Z3ROYW1lcy5PdXRwdXQsIGd0LT5HZXREaXJlY3RvcnkoY29uZmlnKSwgY29uZmlnLCBidW5kbGVTa2lwUGFydHMpOwogICB9IGVsc2UgaWYgKGd0LT5Jc0NGQnVuZGxlT25BcHBsZSgpKSB7CiAgICAgLy8gQ3JlYXRlIHRoZSBjb3JlIGZvdW5kYXRpb24gYnVuZGxlLgogICAgIHRoaXMtPk9TWEJ1bmRsZUdlbmVyYXRvci0+Q3JlYXRlQ0ZCdW5kbGUodGd0TmFtZXMuT3V0cHV0LApkaWZmIC0tZ2l0IGEvU291cmNlL2NtTmluamFUYXJnZXRHZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtTmluamFUYXJnZXRHZW5lcmF0b3IuY3h4CmluZGV4IGFiZjEyZjguLjg4MzNmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbU5pbmphVGFyZ2V0R2VuZXJhdG9yLmN4eAorKysgYi9Tb3VyY2UvY21OaW5qYVRhcmdldEdlbmVyYXRvci5jeHgKQEAgLTk0LDE3ICs5NCwxOSBAQAogc3RkOjpzdHJpbmcgY21OaW5qYVRhcmdldEdlbmVyYXRvcjo6TGFuZ3VhZ2VDb21waWxlclJ1bGUoCiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsYW5nLCBjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnKSBjb25zdAogewotICByZXR1cm4gbGFuZyArICJfQ09NUElMRVJfXyIgKwotICAgIGNtR2xvYmFsTmluamFHZW5lcmF0b3I6OkVuY29kZVJ1bGVOYW1lKHRoaXMtPkdlbmVyYXRvclRhcmdldC0+R2V0TmFtZSgpKSArCi0gICAgIl8iICsgY29uZmlnOworICByZXR1cm4gY21TdHJDYXQoCisgICAgbGFuZywgIl9DT01QSUxFUl9fIiwKKyAgICBjbUdsb2JhbE5pbmphR2VuZXJhdG9yOjpFbmNvZGVSdWxlTmFtZSh0aGlzLT5HZW5lcmF0b3JUYXJnZXQtPkdldE5hbWUoKSksCisgICAgJ18nLCBjb25maWcpOwogfQogCiBzdGQ6OnN0cmluZyBjbU5pbmphVGFyZ2V0R2VuZXJhdG9yOjpMYW5ndWFnZVByZXByb2Nlc3NSdWxlKAogICBzdGQ6OnN0cmluZyBjb25zdCYgbGFuZywgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZykgY29uc3QKIHsKLSAgcmV0dXJuIGxhbmcgKyAiX1BSRVBST0NFU1NfXyIgKwotICAgIGNtR2xvYmFsTmluamFHZW5lcmF0b3I6OkVuY29kZVJ1bGVOYW1lKHRoaXMtPkdlbmVyYXRvclRhcmdldC0+R2V0TmFtZSgpKSArCi0gICAgIl8iICsgY29uZmlnOworICByZXR1cm4gY21TdHJDYXQoCisgICAgbGFuZywgIl9QUkVQUk9DRVNTX18iLAorICAgIGNtR2xvYmFsTmluamFHZW5lcmF0b3I6OkVuY29kZVJ1bGVOYW1lKHRoaXMtPkdlbmVyYXRvclRhcmdldC0+R2V0TmFtZSgpKSwKKyAgICAnXycsIGNvbmZpZyk7CiB9CiAKIGJvb2wgY21OaW5qYVRhcmdldEdlbmVyYXRvcjo6TmVlZEV4cGxpY2l0UHJlcHJvY2Vzc2luZygKQEAgLTEyOSw5ICsxMzEsMTAgQEAKIHN0ZDo6c3RyaW5nIGNtTmluamFUYXJnZXRHZW5lcmF0b3I6Okxhbmd1YWdlRHluZGVwUnVsZSgKICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxhbmcsIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcpIGNvbnN0CiB7Ci0gIHJldHVybiBsYW5nICsgIl9EWU5ERVBfXyIgKwotICAgIGNtR2xvYmFsTmluamFHZW5lcmF0b3I6OkVuY29kZVJ1bGVOYW1lKHRoaXMtPkdlbmVyYXRvclRhcmdldC0+R2V0TmFtZSgpKSArCi0gICAgIl8iICsgY29uZmlnOworICByZXR1cm4gY21TdHJDYXQoCisgICAgbGFuZywgIl9EWU5ERVBfXyIsCisgICAgY21HbG9iYWxOaW5qYUdlbmVyYXRvcjo6RW5jb2RlUnVsZU5hbWUodGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXROYW1lKCkpLAorICAgICdfJywgY29uZmlnKTsKIH0KIAogYm9vbCBjbU5pbmphVGFyZ2V0R2VuZXJhdG9yOjpOZWVkRHluZGVwKHN0ZDo6c3RyaW5nIGNvbnN0JiBsYW5nKSBjb25zdApAQCAtMjE5LDggKzIyMiw4IEBACiAKIGJvb2wgY21OaW5qYVRhcmdldEdlbmVyYXRvcjo6TmVlZERlcFR5cGVNU1ZDKGNvbnN0IHN0ZDo6c3RyaW5nJiBsYW5nKSBjb25zdAogewotICBzdGQ6OnN0cmluZyBjb25zdCYgZGVwdHlwZSA9Ci0gICAgdGhpcy0+R2V0TWFrZWZpbGUoKS0+R2V0U2FmZURlZmluaXRpb24oIkNNQUtFX05JTkpBX0RFUFRZUEVfIiArIGxhbmcpOworICBzdGQ6OnN0cmluZyBjb25zdCYgZGVwdHlwZSA9IHRoaXMtPkdldE1ha2VmaWxlKCktPkdldFNhZmVEZWZpbml0aW9uKAorICAgIGNtU3RyQ2F0KCJDTUFLRV9OSU5KQV9ERVBUWVBFXyIsIGxhbmcpKTsKICAgaWYgKGRlcHR5cGUgPT0gIm1zdmMiKSB7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KQEAgLTM1NSwxMyArMzU4LDEyIEBACiB7CiAgIHN0ZDo6c3RyaW5nIHBhdGggPSB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0SG9tZVJlbGF0aXZlT3V0cHV0UGF0aCgpOwogICBpZiAoIXBhdGguZW1wdHkoKSkgewotICAgIHBhdGggKz0gIi8iOworICAgIHBhdGggKz0gJy8nOwogICB9CiAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBvYmplY3ROYW1lID0gdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXRPYmplY3ROYW1lKHNvdXJjZSk7Ci0gIHBhdGggKz0gdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkdldFRhcmdldERpcmVjdG9yeSh0aGlzLT5HZW5lcmF0b3JUYXJnZXQpOwotICBwYXRoICs9IHRoaXMtPkdldEdsb2JhbEdlbmVyYXRvcigpLT5Db25maWdEaXJlY3RvcnkoY29uZmlnKTsKLSAgcGF0aCArPSAiLyI7Ci0gIHBhdGggKz0gb2JqZWN0TmFtZTsKKyAgcGF0aCArPSBjbVN0ckNhdCgKKyAgICB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0VGFyZ2V0RGlyZWN0b3J5KHRoaXMtPkdlbmVyYXRvclRhcmdldCksCisgICAgdGhpcy0+R2V0R2xvYmFsR2VuZXJhdG9yKCktPkNvbmZpZ0RpcmVjdG9yeShjb25maWcpLCAnLycsIG9iamVjdE5hbWUpOwogICByZXR1cm4gcGF0aDsKIH0KIApAQCAtMzg5LDE2ICszOTEsMTUgQEAKICAgICB0aGlzLT5HZXRHbG9iYWxHZW5lcmF0b3IoKS0+R2V0TGFuZ3VhZ2VPdXRwdXRFeHRlbnNpb24oKnNvdXJjZSk7CiAgIGFzc2VydChvYmpOYW1lLnNpemUoKSA+PSBvYmpFeHQuc2l6ZSgpKTsKICAgc3RkOjpzdHJpbmcgY29uc3QgcHBOYW1lID0KLSAgICBvYmpOYW1lLnN1YnN0cigwLCBvYmpOYW1lLnNpemUoKSAtIG9iakV4dC5zaXplKCkpICsgIi1wcC4iICsgcHBFeHQ7CisgICAgY21TdHJDYXQob2JqTmFtZS5zdWJzdHIoMCwgb2JqTmFtZS5zaXplKCkgLSBvYmpFeHQuc2l6ZSgpKSwgIi1wcC4iLCBwcEV4dCk7CiAKICAgc3RkOjpzdHJpbmcgcGF0aCA9IHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5HZXRIb21lUmVsYXRpdmVPdXRwdXRQYXRoKCk7CiAgIGlmICghcGF0aC5lbXB0eSgpKSB7Ci0gICAgcGF0aCArPSAiLyI7CisgICAgcGF0aCArPSAnLyc7CiAgIH0KLSAgcGF0aCArPSB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0VGFyZ2V0RGlyZWN0b3J5KHRoaXMtPkdlbmVyYXRvclRhcmdldCk7Ci0gIHBhdGggKz0gdGhpcy0+R2V0R2xvYmFsR2VuZXJhdG9yKCktPkNvbmZpZ0RpcmVjdG9yeShjb25maWcpOwotICBwYXRoICs9ICIvIjsKLSAgcGF0aCArPSBwcE5hbWU7CisgIHBhdGggKz0KKyAgICBjbVN0ckNhdCh0aGlzLT5Mb2NhbEdlbmVyYXRvci0+R2V0VGFyZ2V0RGlyZWN0b3J5KHRoaXMtPkdlbmVyYXRvclRhcmdldCksCisgICAgICAgICAgICAgdGhpcy0+R2V0R2xvYmFsR2VuZXJhdG9yKCktPkNvbmZpZ0RpcmVjdG9yeShjb25maWcpLCAnLycsIHBwTmFtZSk7CiAgIHJldHVybiBwYXRoOwogfQogCkBAIC00MDcsMTMgKzQwOCwxMSBAQAogewogICBzdGQ6OnN0cmluZyBwYXRoID0gdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkdldEhvbWVSZWxhdGl2ZU91dHB1dFBhdGgoKTsKICAgaWYgKCFwYXRoLmVtcHR5KCkpIHsKLSAgICBwYXRoICs9ICIvIjsKKyAgICBwYXRoICs9ICcvJzsKICAgfQotICBwYXRoICs9IHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5HZXRUYXJnZXREaXJlY3RvcnkodGhpcy0+R2VuZXJhdG9yVGFyZ2V0KTsKLSAgcGF0aCArPSB0aGlzLT5HZXRHbG9iYWxHZW5lcmF0b3IoKS0+Q29uZmlnRGlyZWN0b3J5KGNvbmZpZyk7Ci0gIHBhdGggKz0gIi8iOwotICBwYXRoICs9IGxhbmc7Ci0gIHBhdGggKz0gIi5kZCI7CisgIHBhdGggKz0gY21TdHJDYXQoCisgICAgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkdldFRhcmdldERpcmVjdG9yeSh0aGlzLT5HZW5lcmF0b3JUYXJnZXQpLAorICAgIHRoaXMtPkdldEdsb2JhbEdlbmVyYXRvcigpLT5Db25maWdEaXJlY3RvcnkoY29uZmlnKSwgJy8nLCBsYW5nLCAiLmRkIik7CiAgIHJldHVybiBwYXRoOwogfQogCkBAIC00NDIsOCArNDQxLDcgQEAKICAgaWYgKHBhdGguZW1wdHkoKSB8fCBwYXRoID09ICIuIikgewogICAgIHJldHVybiBuYW1lOwogICB9Ci0gIHBhdGggKz0gIi8iOwotICBwYXRoICs9IG5hbWU7CisgIHBhdGggKz0gY21TdHJDYXQoJy8nLCBuYW1lKTsKICAgcmV0dXJuIHBhdGg7CiB9CiAKQEAgLTQ5Nyw3ICs0OTUsNyBAQAogICBjbVJ1bGVQbGFjZWhvbGRlckV4cGFuZGVyOjpSdWxlVmFyaWFibGVzIHZhcnM7CiAgIHZhcnMuQ01UYXJnZXROYW1lID0gdGhpcy0+R2V0R2VuZXJhdG9yVGFyZ2V0KCktPkdldE5hbWUoKS5jX3N0cigpOwogICB2YXJzLkNNVGFyZ2V0VHlwZSA9Ci0gICAgY21TdGF0ZTo6R2V0VGFyZ2V0VHlwZU5hbWUodGhpcy0+R2V0R2VuZXJhdG9yVGFyZ2V0KCktPkdldFR5cGUoKSk7CisgICAgY21TdGF0ZTo6R2V0VGFyZ2V0VHlwZU5hbWUodGhpcy0+R2V0R2VuZXJhdG9yVGFyZ2V0KCktPkdldFR5cGUoKSkuY19zdHIoKTsKICAgdmFycy5MYW5ndWFnZSA9IGxhbmcuY19zdHIoKTsKICAgdmFycy5Tb3VyY2UgPSAiJGluIjsKICAgdmFycy5PYmplY3QgPSAiJG91dCI7CkBAIC01MjIsNyArNTIwLDcgQEAKICAgYm9vbCBjb25zdCBsYW5nX3N1cHBvcnRzX3Jlc3BvbnNlID0gbGFuZyAhPSAiUkMiOwogICBpZiAobGFuZ19zdXBwb3J0c19yZXNwb25zZSAmJiB0aGlzLT5Gb3JjZVJlc3BvbnNlRmlsZSgpKSB7CiAgICAgc3RkOjpzdHJpbmcgY29uc3QgcmVzcG9uc2VGbGFnVmFyID0KLSAgICAgICJDTUFLRV8iICsgbGFuZyArICJfUkVTUE9OU0VfRklMRV9GTEFHIjsKKyAgICAgIGNtU3RyQ2F0KCJDTUFLRV8iLCBsYW5nLCAiX1JFU1BPTlNFX0ZJTEVfRkxBRyIpOwogICAgIHJlc3BvbnNlRmxhZyA9IHRoaXMtPk1ha2VmaWxlLT5HZXRTYWZlRGVmaW5pdGlvbihyZXNwb25zZUZsYWdWYXIpOwogICAgIGlmIChyZXNwb25zZUZsYWcuZW1wdHkoKSAmJiBsYW5nICE9ICJDVURBIikgewogICAgICAgcmVzcG9uc2VGbGFnID0gIkAiOwpAQCAtNTg3LDcgKzU4NSw3IEBACiAgICAgICBydWxlLlJzcEZpbGUgPSAiJFJTUF9GSUxFIjsKICAgICAgIHJ1bGUuUnNwQ29udGVudCA9CiAgICAgICAgIGNtU3RyQ2F0KCcgJywgcHBWYXJzLkRlZmluZXMsICcgJywgcHBWYXJzLkluY2x1ZGVzLCAnICcsIHBwRmxhZ3MpOwotICAgICAgcHBGbGFncyA9IHJlc3BvbnNlRmxhZyArIHJ1bGUuUnNwRmlsZTsKKyAgICAgIHBwRmxhZ3MgPSBjbVN0ckNhdChyZXNwb25zZUZsYWcsIHJ1bGUuUnNwRmlsZSk7CiAgICAgICBwcFZhcnMuRGVmaW5lcyA9ICIiOwogICAgICAgcHBWYXJzLkluY2x1ZGVzID0gIiI7CiAgICAgfQpAQCAtNjU4LDcgKzY1Niw3IEBACiAgICAgcnVsZS5Sc3BGaWxlID0gIiRSU1BfRklMRSI7CiAgICAgcnVsZS5Sc3BDb250ZW50ID0KICAgICAgIGNtU3RyQ2F0KCcgJywgdmFycy5EZWZpbmVzLCAnICcsIHZhcnMuSW5jbHVkZXMsICcgJywgZmxhZ3MpOwotICAgIGZsYWdzID0gcmVzcG9uc2VGbGFnICsgcnVsZS5Sc3BGaWxlOworICAgIGZsYWdzID0gY21TdHJDYXQocmVzcG9uc2VGbGFnLCBydWxlLlJzcEZpbGUpOwogICAgIHZhcnMuRGVmaW5lcyA9ICIiOwogICAgIHZhcnMuSW5jbHVkZXMgPSAiIjsKICAgfQpAQCAtNjcxLDcgKzY2OSw3IEBACiAgICAgcnVsZS5EZXBUeXBlID0gIm1zdmMiOwogICAgIHJ1bGUuRGVwRmlsZS5jbGVhcigpOwogICAgIGZsYWdzICs9ICIgL3Nob3dJbmNsdWRlcyI7Ci0gIH0gZWxzZSBpZiAobWYtPklzT24oIkNNQUtFX05JTkpBX0NNQ0xERVBTXyIgKyBsYW5nKSkgeworICB9IGVsc2UgaWYgKG1mLT5Jc09uKGNtU3RyQ2F0KCJDTUFLRV9OSU5KQV9DTUNMREVQU18iLCBsYW5nKSkpIHsKICAgICAvLyBGb3IgdGhlIE1TIHJlc291cmNlIGNvbXBpbGVyIHdlIG5lZWQgY21jbGRlcHMsIGJ1dCBza2lwIGRlcGVuZGVuY2llcwogICAgIC8vIGZvciBzb3VyY2UtZmlsZSB0cnlfY29tcGlsZSBjYXNlcyBiZWNhdXNlIHRoZXkgYXJlIGFsd2F5cyBmcmVzaC4KICAgICBpZiAoIW1mLT5HZXRJc1NvdXJjZUZpbGVUcnlDb21waWxlKCkpIHsKQEAgLTY4OCwxNCArNjg2LDE0IEBACiAgIH0gZWxzZSB7CiAgICAgcnVsZS5EZXBUeXBlID0gImdjYyI7CiAgICAgcnVsZS5EZXBGaWxlID0gIiRERVBfRklMRSI7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZmxhZ3NOYW1lID0gIkNNQUtFX0RFUEZJTEVfRkxBR1NfIiArIGxhbmc7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZmxhZ3NOYW1lID0gY21TdHJDYXQoIkNNQUtFX0RFUEZJTEVfRkxBR1NfIiwgbGFuZyk7CiAgICAgc3RkOjpzdHJpbmcgZGVwZmlsZUZsYWdzID0gbWYtPkdldFNhZmVEZWZpbml0aW9uKGZsYWdzTmFtZSk7CiAgICAgaWYgKCFkZXBmaWxlRmxhZ3MuZW1wdHkoKSkgewogICAgICAgY21TeXN0ZW1Ub29sczo6UmVwbGFjZVN0cmluZyhkZXBmaWxlRmxhZ3MsICI8REVQRklMRT4iLCAiJERFUF9GSUxFIik7CiAgICAgICBjbVN5c3RlbVRvb2xzOjpSZXBsYWNlU3RyaW5nKGRlcGZpbGVGbGFncywgIjxPQkpFQ1Q+IiwgIiRvdXQiKTsKICAgICAgIGNtU3lzdGVtVG9vbHM6OlJlcGxhY2VTdHJpbmcoZGVwZmlsZUZsYWdzLCAiPENNQUtFX0NfQ09NUElMRVI+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWYtPkdldERlZmluaXRpb24oIkNNQUtFX0NfQ09NUElMRVIiKSk7Ci0gICAgICBmbGFncyArPSAiICIgKyBkZXBmaWxlRmxhZ3M7CisgICAgICBmbGFncyArPSBjbVN0ckNhdCgnICcsIGRlcGZpbGVGbGFncyk7CiAgICAgfQogICB9CiAKQEAgLTcxOCw3ICs3MTYsNyBAQAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb21waWxlQ21kID0gbWYtPkdldFJlcXVpcmVkRGVmaW5pdGlvbihjbWRWYXIpOwogICAgIGNtRXhwYW5kTGlzdChjb21waWxlQ21kLCBjb21waWxlQ21kcyk7CiAgIH0gZWxzZSB7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgY21kVmFyID0gIkNNQUtFXyIgKyBsYW5nICsgIl9DT01QSUxFX09CSkVDVCI7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgY21kVmFyID0gY21TdHJDYXQoIkNNQUtFXyIsIGxhbmcsICJfQ09NUElMRV9PQkpFQ1QiKTsKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29tcGlsZUNtZCA9IG1mLT5HZXRSZXF1aXJlZERlZmluaXRpb24oY21kVmFyKTsKICAgICBjbUV4cGFuZExpc3QoY29tcGlsZUNtZCwgY29tcGlsZUNtZHMpOwogICB9CkBAIC03MjgsNyArNzI2LDcgQEAKICAgaWYgKCFjb21waWxlQ21kcy5lbXB0eSgpICYmCiAgICAgICAobGFuZyA9PSAiQyIgfHwgbGFuZyA9PSAiQ1hYIiB8fCBsYW5nID09ICJGb3J0cmFuIiB8fCBsYW5nID09ICJDVURBIiB8fAogICAgICAgIGxhbmcgPT0gIk9CSkMiIHx8IGxhbmcgPT0gIk9CSkNYWCIpKSB7Ci0gICAgc3RkOjpzdHJpbmcgY29uc3QgY2xhdW5jaGVyX3Byb3AgPSBsYW5nICsgIl9DT01QSUxFUl9MQVVOQ0hFUiI7CisgICAgc3RkOjpzdHJpbmcgY29uc3QgY2xhdW5jaGVyX3Byb3AgPSBjbVN0ckNhdChsYW5nLCAiX0NPTVBJTEVSX0xBVU5DSEVSIik7CiAgICAgY29uc3QgY2hhciogY2xhdW5jaGVyID0gdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXRQcm9wZXJ0eShjbGF1bmNoZXJfcHJvcCk7CiAgICAgaWYgKGNsYXVuY2hlciAmJiAqY2xhdW5jaGVyKSB7CiAgICAgICBjb21waWxlckxhdW5jaGVyID0gY2xhdW5jaGVyOwpAQCAtNzM3LDEzICs3MzUsMTMgQEAKIAogICAvLyBNYXliZSBpbnNlcnQgYW4gaW5jbHVkZS13aGF0LXlvdS11c2UgcnVubmVyLgogICBpZiAoIWNvbXBpbGVDbWRzLmVtcHR5KCkgJiYgKGxhbmcgPT0gIkMiIHx8IGxhbmcgPT0gIkNYWCIpKSB7Ci0gICAgc3RkOjpzdHJpbmcgY29uc3QgaXd5dV9wcm9wID0gbGFuZyArICJfSU5DTFVERV9XSEFUX1lPVV9VU0UiOworICAgIHN0ZDo6c3RyaW5nIGNvbnN0IGl3eXVfcHJvcCA9IGNtU3RyQ2F0KGxhbmcsICJfSU5DTFVERV9XSEFUX1lPVV9VU0UiKTsKICAgICBjb25zdCBjaGFyKiBpd3l1ID0gdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXRQcm9wZXJ0eShpd3l1X3Byb3ApOwotICAgIHN0ZDo6c3RyaW5nIGNvbnN0IHRpZHlfcHJvcCA9IGxhbmcgKyAiX0NMQU5HX1RJRFkiOworICAgIHN0ZDo6c3RyaW5nIGNvbnN0IHRpZHlfcHJvcCA9IGNtU3RyQ2F0KGxhbmcsICJfQ0xBTkdfVElEWSIpOwogICAgIGNvbnN0IGNoYXIqIHRpZHkgPSB0aGlzLT5HZW5lcmF0b3JUYXJnZXQtPkdldFByb3BlcnR5KHRpZHlfcHJvcCk7Ci0gICAgc3RkOjpzdHJpbmcgY29uc3QgY3BwbGludF9wcm9wID0gbGFuZyArICJfQ1BQTElOVCI7CisgICAgc3RkOjpzdHJpbmcgY29uc3QgY3BwbGludF9wcm9wID0gY21TdHJDYXQobGFuZywgIl9DUFBMSU5UIik7CiAgICAgY29uc3QgY2hhciogY3BwbGludCA9IHRoaXMtPkdlbmVyYXRvclRhcmdldC0+R2V0UHJvcGVydHkoY3BwbGludF9wcm9wKTsKLSAgICBzdGQ6OnN0cmluZyBjb25zdCBjcHBjaGVja19wcm9wID0gbGFuZyArICJfQ1BQQ0hFQ0siOworICAgIHN0ZDo6c3RyaW5nIGNvbnN0IGNwcGNoZWNrX3Byb3AgPSBjbVN0ckNhdChsYW5nLCAiX0NQUENIRUNLIik7CiAgICAgY29uc3QgY2hhciogY3BwY2hlY2sgPSB0aGlzLT5HZW5lcmF0b3JUYXJnZXQtPkdldFByb3BlcnR5KGNwcGNoZWNrX3Byb3ApOwogICAgIGlmICgoaXd5dSAmJiAqaXd5dSkgfHwgKHRpZHkgJiYgKnRpZHkpIHx8IChjcHBsaW50ICYmICpjcHBsaW50KSB8fAogICAgICAgICAoY3BwY2hlY2sgJiYgKmNwcGNoZWNrKSkgewpAQCAtNzUxLDE4ICs3NDksMTkgQEAKICAgICAgIGlmICghY29tcGlsZXJMYXVuY2hlci5lbXB0eSgpKSB7CiAgICAgICAgIC8vIEluIF9fcnVuX2NvX2NvbXBpbGUgY2FzZSB0aGUgbGF1bmNoZXIgY29tbWFuZCBpcyBzdXBwbGllZAogICAgICAgICAvLyB2aWEgLS1sYXVuY2hlcj08bWF5YmUtbGlzdD4gYW5kIGNvbnN1bWVkCi0gICAgICAgIHJ1bl9pd3l1ICs9ICIgLS1sYXVuY2hlcj0iOwotICAgICAgICBydW5faXd5dSArPSB0aGlzLT5Mb2NhbEdlbmVyYXRvci0+RXNjYXBlRm9yU2hlbGwoY29tcGlsZXJMYXVuY2hlcik7CisgICAgICAgIHJ1bl9pd3l1ICs9CisgICAgICAgICAgY21TdHJDYXQoIiAtLWxhdW5jaGVyPSIsCisgICAgICAgICAgICAgICAgICAgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkVzY2FwZUZvclNoZWxsKGNvbXBpbGVyTGF1bmNoZXIpKTsKICAgICAgICAgY29tcGlsZXJMYXVuY2hlci5jbGVhcigpOwogICAgICAgfQogICAgICAgaWYgKGl3eXUgJiYgKml3eXUpIHsKLSAgICAgICAgcnVuX2l3eXUgKz0gIiAtLWl3eXU9IjsKLSAgICAgICAgcnVuX2l3eXUgKz0gdGhpcy0+R2V0TG9jYWxHZW5lcmF0b3IoKS0+RXNjYXBlRm9yU2hlbGwoaXd5dSk7CisgICAgICAgIHJ1bl9pd3l1ICs9IGNtU3RyQ2F0KCIgLS1pd3l1PSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPkdldExvY2FsR2VuZXJhdG9yKCktPkVzY2FwZUZvclNoZWxsKGl3eXUpKTsKICAgICAgIH0KICAgICAgIGlmICh0aWR5ICYmICp0aWR5KSB7CiAgICAgICAgIHJ1bl9pd3l1ICs9ICIgLS10aWR5PSI7CiAgICAgICAgIGNvbnN0IGNoYXIqIGRyaXZlck1vZGUgPSB0aGlzLT5NYWtlZmlsZS0+R2V0RGVmaW5pdGlvbigKLSAgICAgICAgICAiQ01BS0VfIiArIGxhbmcgKyAiX0NMQU5HX1RJRFlfRFJJVkVSX01PREUiKTsKKyAgICAgICAgICBjbVN0ckNhdCgiQ01BS0VfIiwgbGFuZywgIl9DTEFOR19USURZX0RSSVZFUl9NT0RFIikpOwogICAgICAgICBpZiAoIShkcml2ZXJNb2RlICYmICpkcml2ZXJNb2RlKSkgewogICAgICAgICAgIGRyaXZlck1vZGUgPSBsYW5nID09ICJDIiA/ICJnY2MiIDogImcrKyI7CiAgICAgICAgIH0KQEAgLTc3MCwxMiArNzY5LDEyIEBACiAgICAgICAgICAgY21TdHJDYXQodGlkeSwgIjstLWV4dHJhLWFyZy1iZWZvcmU9LS1kcml2ZXItbW9kZT0iLCBkcml2ZXJNb2RlKSk7CiAgICAgICB9CiAgICAgICBpZiAoY3BwbGludCAmJiAqY3BwbGludCkgewotICAgICAgICBydW5faXd5dSArPSAiIC0tY3BwbGludD0iOwotICAgICAgICBydW5faXd5dSArPSB0aGlzLT5HZXRMb2NhbEdlbmVyYXRvcigpLT5Fc2NhcGVGb3JTaGVsbChjcHBsaW50KTsKKyAgICAgICAgcnVuX2l3eXUgKz0gY21TdHJDYXQoCisgICAgICAgICAgIiAtLWNwcGxpbnQ9IiwgdGhpcy0+R2V0TG9jYWxHZW5lcmF0b3IoKS0+RXNjYXBlRm9yU2hlbGwoY3BwbGludCkpOwogICAgICAgfQogICAgICAgaWYgKGNwcGNoZWNrICYmICpjcHBjaGVjaykgewotICAgICAgICBydW5faXd5dSArPSAiIC0tY3BwY2hlY2s9IjsKLSAgICAgICAgcnVuX2l3eXUgKz0gdGhpcy0+R2V0TG9jYWxHZW5lcmF0b3IoKS0+RXNjYXBlRm9yU2hlbGwoY3BwY2hlY2spOworICAgICAgICBydW5faXd5dSArPSBjbVN0ckNhdCgKKyAgICAgICAgICAiIC0tY3BwY2hlY2s9IiwgdGhpcy0+R2V0TG9jYWxHZW5lcmF0b3IoKS0+RXNjYXBlRm9yU2hlbGwoY3BwY2hlY2spKTsKICAgICAgIH0KICAgICAgIGlmICgodGlkeSAmJiAqdGlkeSkgfHwgKGNwcGxpbnQgJiYgKmNwcGxpbnQpIHx8CiAgICAgICAgICAgKGNwcGNoZWNrICYmICpjcHBjaGVjaykpIHsKQEAgLTc5Nyw3ICs3OTYsNyBAQAogICAgICAgICBpID0gdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkVzY2FwZUZvclNoZWxsKGkpOwogICAgICAgfQogICAgIH0KLSAgICBjb21waWxlQ21kcy5mcm9udCgpLmluc2VydCgwLCBjbUpvaW4oYXJncywgIiAiKSArICIgIik7CisgICAgY29tcGlsZUNtZHMuZnJvbnQoKS5pbnNlcnQoMCwgY21TdHJDYXQoY21Kb2luKGFyZ3MsICIgIiksICcgJykpOwogICB9CiAKICAgaWYgKCFjb21waWxlQ21kcy5lbXB0eSgpKSB7CkBAIC04NzIsNyArODcxLDggQEAKIAogICB7CiAgICAgY21OaW5qYUJ1aWxkIGJ1aWxkKCJwaG9ueSIpOwotICAgIGJ1aWxkLkNvbW1lbnQgPSAiT3JkZXItb25seSBwaG9ueSB0YXJnZXQgZm9yICIgKyB0aGlzLT5HZXRUYXJnZXROYW1lKCk7CisgICAgYnVpbGQuQ29tbWVudCA9CisgICAgICBjbVN0ckNhdCgiT3JkZXItb25seSBwaG9ueSB0YXJnZXQgZm9yICIsIHRoaXMtPkdldFRhcmdldE5hbWUoKSk7CiAgICAgYnVpbGQuT3V0cHV0cy5wdXNoX2JhY2sodGhpcy0+T3JkZXJEZXBlbmRzVGFyZ2V0Rm9yVGFyZ2V0KGNvbmZpZykpOwogCiAgICAgY21OaW5qYURlcHMmIG9yZGVyT25seURlcHMgPSBidWlsZC5PcmRlck9ubHlEZXBzOwpAQCAtOTYwLDkgKzk2MCw5IEBACiAgICAgICBpZiAoY29uc3QgY2hhciogbmFtZSA9IHRhcmdldC0+R2V0UHJvcGVydHkoIlN3aWZ0X0RFUEVOREVOQ0lFU19GSUxFIikpIHsKICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgICB9Ci0gICAgICByZXR1cm4gdGhpcy0+Q29udmVydFRvTmluamFQYXRoKHRhcmdldC0+R2V0U3VwcG9ydERpcmVjdG9yeSgpICsgIi8iICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnICsgIi8iICsgdGFyZ2V0LT5HZXROYW1lKCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLnN3aWZ0ZGVwcyIpOworICAgICAgcmV0dXJuIHRoaXMtPkNvbnZlcnRUb05pbmphUGF0aCgKKyAgICAgICAgY21TdHJDYXQodGFyZ2V0LT5HZXRTdXBwb3J0RGlyZWN0b3J5KCksICcvJywgY29uZmlnLCAnLycsCisgICAgICAgICAgICAgICAgIHRhcmdldC0+R2V0TmFtZSgpLCAiLnN3aWZ0ZGVwcyIpKTsKICAgICB9KCk7CiAKICAgICAvLyBidWlsZCB0aGUgZ2xvYmFsIHRhcmdldCBkZXBlbmRlbmNpZXMKQEAgLTk5NCw3ICs5OTQsNyBAQAogICBzdGQ6OnN0cmluZyBjbWFrZVZhckxhbmcgPSBjbVN0ckNhdCgiQ01BS0VfIiwgbGFuZ3VhZ2UpOwogCiAgIC8vIGJ1aWxkIHJlc3BvbnNlIGZpbGUgbmFtZQotICBzdGQ6OnN0cmluZyBjbWFrZUxpbmtWYXIgPSBjbWFrZVZhckxhbmcgKyAiX1JFU1BPTlNFX0ZJTEVfRkxBRyI7CisgIHN0ZDo6c3RyaW5nIGNtYWtlTGlua1ZhciA9IGNtU3RyQ2F0KGNtYWtlVmFyTGFuZywgIl9SRVNQT05TRV9GSUxFX0ZMQUciKTsKIAogICBjb25zdCBjaGFyKiBmbGFnID0gR2V0TWFrZWZpbGUoKS0+R2V0RGVmaW5pdGlvbihjbWFrZUxpbmtWYXIpOwogCkBAIC0xMDE5LDE0ICsxMDE5LDE1IEBACiAgICAgaWYgKCFyZXBsYWNlRXh0KSB7CiAgICAgICAvLyB1c2Ugb3JpZ2luYWwgY29kZQogICAgICAgdmFyc1siREVQX0ZJTEUiXSA9IHRoaXMtPkdldExvY2FsR2VuZXJhdG9yKCktPkNvbnZlcnRUb091dHB1dEZvcm1hdCgKLSAgICAgICAgb2JqZWN0RmlsZU5hbWUgKyAiLmQiLCBjbU91dHB1dENvbnZlcnRlcjo6U0hFTEwpOworICAgICAgICBjbVN0ckNhdChvYmplY3RGaWxlTmFtZSwgIi5kIiksIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCk7CiAgICAgfSBlbHNlIHsKICAgICAgIC8vIFJlcGxhY2UgdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIGV4dGVuc2lvbiB3aXRoIHRoZQogICAgICAgLy8gZGVwZW5kIGZpbGUgZXh0ZW5zaW9uLgotICAgICAgc3RkOjpzdHJpbmcgZGVwZW5kRmlsZU5hbWUgPQotICAgICAgICBjbVN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZVdpdGhvdXRMYXN0RXh0ZW5zaW9uKG9iamVjdEZpbGVOYW1lKSArICIuZCI7CisgICAgICBzdGQ6OnN0cmluZyBkZXBlbmRGaWxlTmFtZSA9IGNtU3RyQ2F0KAorICAgICAgICBjbVN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZVdpdGhvdXRMYXN0RXh0ZW5zaW9uKG9iamVjdEZpbGVOYW1lKSwgIi5kIik7CiAgICAgICB2YXJzWyJERVBfRklMRSJdID0gdGhpcy0+R2V0TG9jYWxHZW5lcmF0b3IoKS0+Q29udmVydFRvT3V0cHV0Rm9ybWF0KAotICAgICAgICBvYmplY3RGaWxlRGlyICsgIi8iICsgZGVwZW5kRmlsZU5hbWUsIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCk7CisgICAgICAgIGNtU3RyQ2F0KG9iamVjdEZpbGVEaXIsICcvJywgZGVwZW5kRmlsZU5hbWUpLAorICAgICAgICBjbU91dHB1dENvbnZlcnRlcjo6U0hFTEwpOwogICAgIH0KICAgfQogCkBAIC0xMTAxLDcgKzExMDIsNyBAQAogICAgICAgdGhpcy0+Q29udmVydFRvTmluamFQYXRoKHRoaXMtPkdldFByZXByb2Nlc3NlZEZpbGVQYXRoKHNvdXJjZSwgY29uZmlnKSk7CiAgICAgcHBCdWlsZC5PdXRwdXRzLnB1c2hfYmFjayhwcEZpbGVOYW1lKTsKIAotICAgIHBwQnVpbGQuUnNwRmlsZSA9IHBwRmlsZU5hbWUgKyAiLnJzcCI7CisgICAgcHBCdWlsZC5Sc3BGaWxlID0gY21TdHJDYXQocHBGaWxlTmFtZSwgIi5yc3AiKTsKIAogICAgIGJvb2wgY29uc3QgY29tcGlsZVBQID0gdGhpcy0+VXNlUHJlcHJvY2Vzc2VkU291cmNlKGxhbmd1YWdlKTsKICAgICBib29sIGNvbnN0IGNvbXBpbGVQUFdpdGhEZWZpbmVzID0KQEAgLTExMzAsNyArMTEzMSw3IEBACiAgICAgICAvLyBJbiBjYXNlIGNvbXBpbGF0aW9uIHJlcXVpcmVzIGZsYWdzIHRoYXQgYXJlIGluY29tcGF0aWJsZSB3aXRoCiAgICAgICAvLyBwcmVwcm9jZXNzaW5nLCBpbmNsdWRlIHRoZW0gaGVyZS4KICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBwb3N0RmxhZyA9IHRoaXMtPk1ha2VmaWxlLT5HZXRTYWZlRGVmaW5pdGlvbigKLSAgICAgICAgIkNNQUtFXyIgKyBsYW5ndWFnZSArICJfUE9TVFBST0NFU1NfRkxBRyIpOworICAgICAgICBjbVN0ckNhdCgiQ01BS0VfIiwgbGFuZ3VhZ2UsICJfUE9TVFBST0NFU1NfRkxBRyIpKTsKICAgICAgIHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5BcHBlbmRGbGFncyh2YXJzWyJGTEFHUyJdLCBwb3N0RmxhZyk7CiAgICAgfQogCkBAIC0xMTU4LDEzICsxMTU5LDEzIEBACiAgICAgICAgIHNvdXJjZURpcmVjdG9yeSwgdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LCBsYW5ndWFnZSwgZmFsc2UsIGZhbHNlLAogICAgICAgICBjb25maWcpOwogCi0gICAgICB2YXJzWyJJTkNMVURFUyJdID0gc291cmNlRGlyZWN0b3J5RmxhZyArICIgIiArIHZhcnNbIklOQ0xVREVTIl07CisgICAgICB2YXJzWyJJTkNMVURFUyJdID0gY21TdHJDYXQoc291cmNlRGlyZWN0b3J5RmxhZywgJyAnLCB2YXJzWyJJTkNMVURFUyJdKTsKICAgICB9CiAKICAgICAvLyBFeHBsaWNpdCBwcmVwcm9jZXNzaW5nIGFsd2F5cyB1c2VzIGEgZGVwZmlsZS4KICAgICBwcEJ1aWxkLlZhcmlhYmxlc1siREVQX0ZJTEUiXSA9CiAgICAgICB0aGlzLT5HZXRMb2NhbEdlbmVyYXRvcigpLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQoCi0gICAgICAgIG9iamVjdEZpbGVOYW1lICsgIi5wcC5kIiwgY21PdXRwdXRDb252ZXJ0ZXI6OlNIRUxMKTsKKyAgICAgICAgY21TdHJDYXQob2JqZWN0RmlsZU5hbWUsICIucHAuZCIpLCBjbU91dHB1dENvbnZlcnRlcjo6U0hFTEwpOwogICAgIGlmIChjb21waWxlUFApIHsKICAgICAgIC8vIFRoZSBhY3R1YWwgY29tcGlsYXRpb24gZG9lcyBub3QgbmVlZCBhIGRlcGZpbGUgYmVjYXVzZSBpdAogICAgICAgLy8gZGVwZW5kcyBvbiB0aGUgYWxyZWFkeS1wcmVwcm9jZXNzZWQgc291cmNlLgpAQCAtMTE3Nyw3ICsxMTc4LDcgQEAKICAgICAgIHBwQnVpbGQuVmFyaWFibGVzWyJPQkpfRklMRSJdID0gb2JqZWN0RmlsZU5hbWU7CiAKICAgICAgIC8vIFRlbGwgZGVwZW5kZW5jeSBzY2FubmVyIHdoZXJlIHRvIHN0b3JlIGR5bmRlcCBpbnRlcm1lZGlhdGUgcmVzdWx0cy4KLSAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0IGRkaUZpbGUgPSBvYmplY3RGaWxlTmFtZSArICIuZGRpIjsKKyAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0IGRkaUZpbGUgPSBjbVN0ckNhdChvYmplY3RGaWxlTmFtZSwgIi5kZGkiKTsKICAgICAgIHBwQnVpbGQuVmFyaWFibGVzWyJEWU5ERVBfSU5URVJNRURJQVRFX0ZJTEUiXSA9IGRkaUZpbGU7CiAgICAgICBwcEJ1aWxkLkltcGxpY2l0T3V0cy5wdXNoX2JhY2soZGRpRmlsZSk7CiAgICAgICBpZiAoZmlyc3RGb3JDb25maWcpIHsKQEAgLTEyMTYsNyArMTIxNyw3IEBACiAKICAgdGhpcy0+U2V0TXN2Y1RhcmdldFBkYlZhcmlhYmxlKHZhcnMsIGNvbmZpZyk7CiAKLSAgb2JqQnVpbGQuUnNwRmlsZSA9IG9iamVjdEZpbGVOYW1lICsgIi5yc3AiOworICBvYmpCdWlsZC5Sc3BGaWxlID0gY21TdHJDYXQob2JqZWN0RmlsZU5hbWUsICIucnNwIik7CiAKICAgaWYgKGxhbmd1YWdlID09ICJTd2lmdCIpIHsKICAgICB0aGlzLT5FbWl0U3dpZnREZXBlbmRlbmN5SW5mbyhzb3VyY2UsIGNvbmZpZyk7CkBAIC0xMjQyLDggKzEyNDMsOCBAQAogewogICBKc29uOjpWYWx1ZSB0ZGkoSnNvbjo6b2JqZWN0VmFsdWUpOwogICB0ZGlbImxhbmd1YWdlIl0gPSBsYW5nOwotICB0ZGlbImNvbXBpbGVyLWlkIl0gPQotICAgIHRoaXMtPk1ha2VmaWxlLT5HZXRTYWZlRGVmaW5pdGlvbigiQ01BS0VfIiArIGxhbmcgKyAiX0NPTVBJTEVSX0lEIik7CisgIHRkaVsiY29tcGlsZXItaWQiXSA9IHRoaXMtPk1ha2VmaWxlLT5HZXRTYWZlRGVmaW5pdGlvbigKKyAgICBjbVN0ckNhdCgiQ01BS0VfIiwgbGFuZywgIl9DT01QSUxFUl9JRCIpKTsKIAogICBpZiAobGFuZyA9PSAiRm9ydHJhbiIpIHsKICAgICBzdGQ6OnN0cmluZyBtb2RfZGlyID0gdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5HZXRGb3J0cmFuTW9kdWxlRGlyZWN0b3J5KApAQCAtMTI5NSwxMyArMTI5NiwxMyBAQAogICAgIGlmIChjb25zdCBjaGFyKiBuYW1lID0gc291cmNlLT5HZXRQcm9wZXJ0eSgiU3dpZnRfREVQRU5ERU5DSUVTX0ZJTEUiKSkgewogICAgICAgcmV0dXJuIG5hbWU7CiAgICAgfQotICAgIHJldHVybiBvYmplY3RGaWxlUGF0aCArICIuc3dpZnRkZXBzIjsKKyAgICByZXR1cm4gY21TdHJDYXQob2JqZWN0RmlsZVBhdGgsICIuc3dpZnRkZXBzIik7CiAgIH0oKTsKICAgc3RkOjpzdHJpbmcgY29uc3Qgc3dpZnREaWFQYXRoID0gW3NvdXJjZSwgb2JqZWN0RmlsZVBhdGhdKCkgLT4gc3RkOjpzdHJpbmcgewogICAgIGlmIChjb25zdCBjaGFyKiBuYW1lID0gc291cmNlLT5HZXRQcm9wZXJ0eSgiU3dpZnRfRElBR05PU1RJQ1NfRklMRSIpKSB7CiAgICAgICByZXR1cm4gbmFtZTsKICAgICB9Ci0gICAgcmV0dXJuIG9iamVjdEZpbGVQYXRoICsgIi5kaWEiOworICAgIHJldHVybiBjbVN0ckNhdChvYmplY3RGaWxlUGF0aCwgIi5kaWEiKTsKICAgfSgpOwogICBzdGQ6OnN0cmluZyBjb25zdCBtYWtlRGVwc1BhdGggPSBbdGhpcywgc291cmNlLCBjb25maWddKCkgLT4gc3RkOjpzdHJpbmcgewogICAgIGNtTG9jYWxOaW5qYUdlbmVyYXRvciBjb25zdCogbG9jYWwgPSB0aGlzLT5HZXRMb2NhbEdlbmVyYXRvcigpOwpAQCAtMTMxMSwxMiArMTMxMiwxMyBAQAogICAgICAgY21TeXN0ZW1Ub29sczo6R2V0RmlsZW5hbWVQYXRoKG9iamVjdEZpbGVOYW1lKTsKIAogICAgIGlmICh0aGlzLT5NYWtlZmlsZS0+SXNPbigiQ01BS0VfU3dpZnRfREVQRkxFX0VYVE5TSU9OX1JFUExBQ0UiKSkgewotICAgICAgc3RkOjpzdHJpbmcgZGVwZW5kRmlsZU5hbWUgPQotICAgICAgICBjbVN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZVdpdGhvdXRMYXN0RXh0ZW5zaW9uKG9iamVjdEZpbGVOYW1lKSArICIuZCI7Ci0gICAgICByZXR1cm4gbG9jYWwtPkNvbnZlcnRUb091dHB1dEZvcm1hdChvYmplY3RGaWxlRGlyICsgIi8iICsgZGVwZW5kRmlsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbU91dHB1dENvbnZlcnRlcjo6U0hFTEwpOworICAgICAgc3RkOjpzdHJpbmcgZGVwZW5kRmlsZU5hbWUgPSBjbVN0ckNhdCgKKyAgICAgICAgY21TeXN0ZW1Ub29sczo6R2V0RmlsZW5hbWVXaXRob3V0TGFzdEV4dGVuc2lvbihvYmplY3RGaWxlTmFtZSksICIuZCIpOworICAgICAgcmV0dXJuIGxvY2FsLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQoCisgICAgICAgIGNtU3RyQ2F0KG9iamVjdEZpbGVEaXIsICcvJywgZGVwZW5kRmlsZU5hbWUpLAorICAgICAgICBjbU91dHB1dENvbnZlcnRlcjo6U0hFTEwpOwogICAgIH0KLSAgICByZXR1cm4gbG9jYWwtPkNvbnZlcnRUb091dHB1dEZvcm1hdChvYmplY3RGaWxlTmFtZSArICIuZCIsCisgICAgcmV0dXJuIGxvY2FsLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQoY21TdHJDYXQob2JqZWN0RmlsZU5hbWUsICIuZCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCk7CiAgIH0oKTsKIApAQCAtMTM4MSw3ICsxMzgzLDcgQEAKICAgICAgIHRoaXMtPkdldE1ha2VmaWxlKCktPkdldFJlcXVpcmVkRGVmaW5pdGlvbihjbWRWYXIpOwogICAgIGNtRXhwYW5kTGlzdChjb21waWxlQ21kLCBjb21waWxlQ21kcyk7CiAgIH0gZWxzZSB7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgY21kVmFyID0gIkNNQUtFXyIgKyBsYW5ndWFnZSArICJfQ09NUElMRV9PQkpFQ1QiOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNtZFZhciA9IGNtU3RyQ2F0KCJDTUFLRV8iLCBsYW5ndWFnZSwgIl9DT01QSUxFX09CSkVDVCIpOwogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb21waWxlQ21kID0KICAgICAgIHRoaXMtPkdldE1ha2VmaWxlKCktPkdldFJlcXVpcmVkRGVmaW5pdGlvbihjbWRWYXIpOwogICAgIGNtRXhwYW5kTGlzdChjb21waWxlQ21kLCBjb21waWxlQ21kcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21PU1hCdW5kbGVHZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtT1NYQnVuZGxlR2VuZXJhdG9yLmN4eAppbmRleCAzODJiNTYzLi43ZWVhNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21PU1hCdW5kbGVHZW5lcmF0b3IuY3h4CisrKyBiL1NvdXJjZS9jbU9TWEJ1bmRsZUdlbmVyYXRvci5jeHgKQEAgLTU2LDkgKzU2LDkgQEAKICAgb3V0cGF0aCA9IG91dDsKIH0KIAotdm9pZCBjbU9TWEJ1bmRsZUdlbmVyYXRvcjo6Q3JlYXRlRnJhbWV3b3JrKGNvbnN0IHN0ZDo6c3RyaW5nJiB0YXJnZXROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcpCit2b2lkIGNtT1NYQnVuZGxlR2VuZXJhdG9yOjpDcmVhdGVGcmFtZXdvcmsoCisgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0YXJnZXROYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cGF0aCwKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZywgY29uc3QgY21PU1hCdW5kbGVHZW5lcmF0b3I6OlNraXBQYXJ0cyYgc2tpcFBhcnRzKQogewogICBpZiAodGhpcy0+TXVzdFNraXAoKSkgewogICAgIHJldHVybjsKQEAgLTc3LDE2ICs3NywxOCBAQAogCiAgIHN0ZDo6c3RyaW5nIGZyYW1ld29ya1ZlcnNpb24gPSB0aGlzLT5HVC0+R2V0RnJhbWV3b3JrVmVyc2lvbigpOwogCi0gIC8vIENvbmZpZ3VyZSB0aGUgSW5mby5wbGlzdCBmaWxlCi0gIHN0ZDo6c3RyaW5nIHBsaXN0ID0gbmV3b3V0cGF0aDsKLSAgaWYgKCF0aGlzLT5NYWtlZmlsZS0+UGxhdGZvcm1Jc0FwcGxlRW1iZWRkZWQoKSkgewotICAgIC8vIFB1dCB0aGUgSW5mby5wbGlzdCBmaWxlIGludG8gdGhlIFJlc291cmNlcyBkaXJlY3RvcnkuCi0gICAgdGhpcy0+TWFjQ29udGVudEZvbGRlcnMtPmluc2VydCgiUmVzb3VyY2VzIik7Ci0gICAgcGxpc3QgKz0gIi9SZXNvdXJjZXMiOwotICB9Ci0gIHBsaXN0ICs9ICIvSW5mby5wbGlzdCI7CiAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBjbVN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZU5hbWUodGFyZ2V0TmFtZSk7Ci0gIHRoaXMtPkxvY2FsR2VuZXJhdG9yLT5HZW5lcmF0ZUZyYW1ld29ya0luZm9QTGlzdCh0aGlzLT5HVCwgbmFtZSwgcGxpc3QpOworICBpZiAoIXNraXBQYXJ0cy5pbmZvUGxpc3QpIHsKKyAgICAvLyBDb25maWd1cmUgdGhlIEluZm8ucGxpc3QgZmlsZQorICAgIHN0ZDo6c3RyaW5nIHBsaXN0ID0gbmV3b3V0cGF0aDsKKyAgICBpZiAoIXRoaXMtPk1ha2VmaWxlLT5QbGF0Zm9ybUlzQXBwbGVFbWJlZGRlZCgpKSB7CisgICAgICAvLyBQdXQgdGhlIEluZm8ucGxpc3QgZmlsZSBpbnRvIHRoZSBSZXNvdXJjZXMgZGlyZWN0b3J5LgorICAgICAgdGhpcy0+TWFjQ29udGVudEZvbGRlcnMtPmluc2VydCgiUmVzb3VyY2VzIik7CisgICAgICBwbGlzdCArPSAiL1Jlc291cmNlcyI7CisgICAgfQorICAgIHBsaXN0ICs9ICIvSW5mby5wbGlzdCI7CisgICAgdGhpcy0+TG9jYWxHZW5lcmF0b3ItPkdlbmVyYXRlRnJhbWV3b3JrSW5mb1BMaXN0KHRoaXMtPkdULCBuYW1lLCBwbGlzdCk7CisgIH0KIAogICAvLyBHZW5lcmF0ZSBWZXJzaW9ucyBkaXJlY3Rvcnkgb25seSBmb3IgTWFjT1NYIGZyYW1ld29ya3MKICAgaWYgKHRoaXMtPk1ha2VmaWxlLT5QbGF0Zm9ybUlzQXBwbGVFbWJlZGRlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21PU1hCdW5kbGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9jbU9TWEJ1bmRsZUdlbmVyYXRvci5oCmluZGV4IDIzMmJlNDguLjViZjFkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbU9TWEJ1bmRsZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9jbU9TWEJ1bmRsZUdlbmVyYXRvci5oCkBAIC0xOSw2ICsxOSwxNSBAQAogcHVibGljOgogICBjbU9TWEJ1bmRsZUdlbmVyYXRvcihjbUdlbmVyYXRvclRhcmdldCogdGFyZ2V0KTsKIAorICBzdHJ1Y3QgU2tpcFBhcnRzCisgIHsKKyAgICBTa2lwUGFydHMoKQorICAgICAgOiBpbmZvUGxpc3QoZmFsc2UpCisgICAgeworICAgIH0KKyAgICBib29sIGluZm9QbGlzdDsgLy8gTk9MSU5UKG1vZGVybml6ZS11c2UtZGVmYXVsdC1tZW1iZXItaW5pdCkKKyAgfTsKKwogICAvLyBjcmVhdGUgYW4gYXBwIGJ1bmRsZSBhdCBhIGdpdmVuIHJvb3QsIGFuZCByZXR1cm4KICAgLy8gdGhlIGRpcmVjdG9yeSB3aXRoaW4gdGhlIGJ1bmRsZSB0aGF0IGNvbnRhaW5zIHRoZSBleGVjdXRhYmxlCiAgIHZvaWQgQ3JlYXRlQXBwQnVuZGxlKGNvbnN0IHN0ZDo6c3RyaW5nJiB0YXJnZXROYW1lLCBzdGQ6OnN0cmluZyYgcm9vdCwKQEAgLTI2LDcgKzM1LDggQEAKIAogICAvLyBjcmVhdGUgYSBmcmFtZXdvcmsgYXQgYSBnaXZlbiByb290CiAgIHZvaWQgQ3JlYXRlRnJhbWV3b3JrKGNvbnN0IHN0ZDo6c3RyaW5nJiB0YXJnZXROYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZyk7CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNraXBQYXJ0cyYgc2tpcFBhcnRzID0gU2tpcFBhcnRzKCkpOwogCiAgIC8vIGNyZWF0ZSBhIGNmIGJ1bmRsZSBhdCBhIGdpdmVuIHJvb3QKICAgdm9pZCBDcmVhdGVDRkJ1bmRsZShjb25zdCBzdGQ6OnN0cmluZyYgdGFyZ2V0TmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHJvb3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21PcHRpb25Db21tYW5kLmN4eCBiL1NvdXJjZS9jbU9wdGlvbkNvbW1hbmQuY3h4CmluZGV4IDIyZTU5YWMuLmE5YWRmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbU9wdGlvbkNvbW1hbmQuY3h4CisrKyBiL1NvdXJjZS9jbU9wdGlvbkNvbW1hbmQuY3h4CkBAIC01Miw3ICs1Miw3IEBACiAgIC8vIFNlZSBpZiBhIGNhY2hlIHZhcmlhYmxlIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzCiAgIC8vIElmIHNvIGp1c3QgbWFrZSBzdXJlIHRoZSBkb2Mgc3RhdGUgaXMgY29ycmVjdAogICBjbVN0YXRlKiBzdGF0ZSA9IHN0YXR1cy5HZXRNYWtlZmlsZSgpLkdldFN0YXRlKCk7Ci0gIGNvbnN0IGNoYXIqIGV4aXN0aW5nVmFsdWUgPSBzdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKGFyZ3NbMF0pOworICBjbVByb3AgZXhpc3RpbmdWYWx1ZSA9IHN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUoYXJnc1swXSk7CiAgIGlmIChleGlzdGluZ1ZhbHVlICYmCiAgICAgICAoc3RhdGUtPkdldENhY2hlRW50cnlUeXBlKGFyZ3NbMF0pICE9IGNtU3RhdGVFbnVtczo6VU5JTklUSUFMSVpFRCkpIHsKICAgICBzdGF0ZS0+U2V0Q2FjaGVFbnRyeVByb3BlcnR5KGFyZ3NbMF0sICJIRUxQU1RSSU5HIiwgYXJnc1sxXSk7CkBAIC02MCw3ICs2MCw3IEBACiAgIH0KIAogICAvLyBOb3RoaW5nIGluIHRoZSBjYWNoZSBzbyBhZGQgaXQKLSAgc3RkOjpzdHJpbmcgaW5pdGlhbFZhbHVlID0gZXhpc3RpbmdWYWx1ZSA/IGV4aXN0aW5nVmFsdWUgOiAiT2ZmIjsKKyAgc3RkOjpzdHJpbmcgaW5pdGlhbFZhbHVlID0gZXhpc3RpbmdWYWx1ZSA/ICpleGlzdGluZ1ZhbHVlIDogIk9mZiI7CiAgIGlmIChhcmdzLnNpemUoKSA9PSAzKSB7CiAgICAgaW5pdGlhbFZhbHVlID0gYXJnc1syXTsKICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtUG9saWNpZXMuaCBiL1NvdXJjZS9jbVBvbGljaWVzLmgKaW5kZXggMTM2NmZmMC4uZDNkYWFkOCAxMDA2NDQKLS0tIGEvU291cmNlL2NtUG9saWNpZXMuaAorKysgYi9Tb3VyY2UvY21Qb2xpY2llcy5oCkBAIC0zMDUsNyArMzA1LDEwIEBACiAgICAgICAgICAxNywgMCwgY21Qb2xpY2llczo6V0FSTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIFNFTEVDVChQT0xJQ1ksIENNUDAxMDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAibWFya19hc19hZHZhbmNlZCgpIGRvZXMgbm90aGluZyBpZiBhIGNhY2hlIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIsICBcCi0gICAgICAgICAzLCAxNywgMCwgY21Qb2xpY2llczo6V0FSTikKKyAgICAgICAgIDMsIDE3LCAwLCBjbVBvbGljaWVzOjpXQVJOKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgU0VMRUNUKFBPTElDWSwgQ01QMDEwMywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICJtdWx0aXBsZSBleHBvcnQoKSB3aXRoIHNhbWUgRklMRSB3aXRob3V0IEFQUEVORCBpcyBub3QgYWxsb3dlZC4iLCAgIFwKKyAgICAgICAgIDMsIDE4LCAwLCBjbVBvbGljaWVzOjpXQVJOKQogCiAjZGVmaW5lIENNX1NFTEVDVF9JRChGLCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KSBGKEExKQogI2RlZmluZSBDTV9GT1JfRUFDSF9QT0xJQ1lfSUQoUE9MSUNZKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL2NtUHJvY2Vzc091dHB1dC5jeHggYi9Tb3VyY2UvY21Qcm9jZXNzT3V0cHV0LmN4eAppbmRleCBlODBlYTVjLi4wZmI0ZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Qcm9jZXNzT3V0cHV0LmN4eAorKysgYi9Tb3VyY2UvY21Qcm9jZXNzT3V0cHV0LmN4eApAQCAtNCw3ICs0LDEwIEBACiAjaW5jbHVkZSAiY21Qcm9jZXNzT3V0cHV0LmgiCiAKICNpZiBkZWZpbmVkKF9XSU4zMikKKyMgIGluY2x1ZGUgPGNtL21lbW9yeT4KKwogIyAgaW5jbHVkZSA8d2luZG93cy5oPgorCiB1bnNpZ25lZCBpbnQgY21Qcm9jZXNzT3V0cHV0OjpkZWZhdWx0Q29kZXBhZ2UgPQogICBLV1NZU19FTkNPRElOR19ERUZBVUxUX0NPREVQQUdFOwogI2VuZGlmCkBAIC0xNDMsOSArMTQ2LDkgQEAKICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgIGNvbnN0IGludCB3bGVuZ3RoID0KICAgICBNdWx0aUJ5dGVUb1dpZGVDaGFyKGNvZGVwYWdlLCAwLCByYXcuY19zdHIoKSwgaW50KHJhdy5zaXplKCkpLCBOVUxMLCAwKTsKLSAgd2NoYXJfdCogd2RhdGEgPSBuZXcgd2NoYXJfdFt3bGVuZ3RoXTsKLSAgaW50IHIgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKGNvZGVwYWdlLCAwLCByYXcuY19zdHIoKSwgaW50KHJhdy5zaXplKCkpLCB3ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdsZW5ndGgpOworICBhdXRvIHdkYXRhID0gY206Om1ha2VfdW5pcXVlPHdjaGFyX3RbXT4od2xlbmd0aCk7CisgIGludCByID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihjb2RlcGFnZSwgMCwgcmF3LmNfc3RyKCksIGludChyYXcuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdkYXRhLmdldCgpLCB3bGVuZ3RoKTsKICAgaWYgKHIgPiAwKSB7CiAgICAgaWYgKGxhc3RDaGFyKSB7CiAgICAgICAqbGFzdENoYXIgPSAwOwpAQCAtMTU0LDE4ICsxNTcsMTYgQEAKICAgICAgICAgKmxhc3RDaGFyID0gd2RhdGFbd2xlbmd0aCAtIDFdOwogICAgICAgfQogICAgIH0KLSAgICBpbnQgbGVuZ3RoID0gV2lkZUNoYXJUb011bHRpQnl0ZShkZWZhdWx0Q29kZXBhZ2UsIDAsIHdkYXRhLCB3bGVuZ3RoLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEwsIE5VTEwpOwotICAgIGNoYXIqIGRhdGEgPSBuZXcgY2hhcltsZW5ndGhdOwotICAgIHIgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGRlZmF1bHRDb2RlcGFnZSwgMCwgd2RhdGEsIHdsZW5ndGgsIGRhdGEsIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKKyAgICBpbnQgbGVuZ3RoID0gV2lkZUNoYXJUb011bHRpQnl0ZShkZWZhdWx0Q29kZXBhZ2UsIDAsIHdkYXRhLmdldCgpLCB3bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgIGF1dG8gZGF0YSA9IGNtOjptYWtlX3VuaXF1ZTxjaGFyW10+KGxlbmd0aCk7CisgICAgciA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoZGVmYXVsdENvZGVwYWdlLCAwLCB3ZGF0YS5nZXQoKSwgd2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmdldCgpLCBsZW5ndGgsIE5VTEwsIE5VTEwpOwogICAgIGlmIChyID4gMCkgewotICAgICAgZGVjb2RlZCA9IHN0ZDo6c3RyaW5nKGRhdGEsIGxlbmd0aCk7CisgICAgICBkZWNvZGVkID0gc3RkOjpzdHJpbmcoZGF0YS5nZXQoKSwgbGVuZ3RoKTsKICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0KLSAgICBkZWxldGVbXSBkYXRhOwogICB9Ci0gIGRlbGV0ZVtdIHdkYXRhOwogICByZXR1cm4gc3VjY2VzczsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtUHJvamVjdENvbW1hbmQuY3h4IGIvU291cmNlL2NtUHJvamVjdENvbW1hbmQuY3h4CmluZGV4IGEyNWZkNDIuLjJlYzY2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVByb2plY3RDb21tYW5kLmN4eAorKysgYi9Tb3VyY2UvY21Qcm9qZWN0Q29tbWFuZC5jeHgKQEAgLTQ3LDEwICs0NywxMCBAQAogICBtZi5TZXRQcm9qZWN0TmFtZShwcm9qZWN0TmFtZSk7CiAKICAgbWYuQWRkQ2FjaGVEZWZpbml0aW9uKHByb2plY3ROYW1lICsgIl9CSU5BUllfRElSIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1mLkdldEN1cnJlbnRCaW5hcnlEaXJlY3RvcnkoKS5jX3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgbWYuR2V0Q3VycmVudEJpbmFyeURpcmVjdG9yeSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIENvbXB1dGVkIGJ5IENNYWtlIiwgY21TdGF0ZUVudW1zOjpTVEFUSUMpOwogICBtZi5BZGRDYWNoZURlZmluaXRpb24ocHJvamVjdE5hbWUgKyAiX1NPVVJDRV9ESVIiLAotICAgICAgICAgICAgICAgICAgICAgICAgbWYuR2V0Q3VycmVudFNvdXJjZURpcmVjdG9yeSgpLmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICBtZi5HZXRDdXJyZW50U291cmNlRGlyZWN0b3J5KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgQ29tcHV0ZWQgYnkgQ01ha2UiLCBjbVN0YXRlRW51bXM6OlNUQVRJQyk7CiAKICAgbWYuQWRkRGVmaW5pdGlvbigiUFJPSkVDVF9CSU5BUllfRElSIiwgbWYuR2V0Q3VycmVudEJpbmFyeURpcmVjdG9yeSgpKTsKQEAgLTY2LDcgKzY2LDcgQEAKICAgLy8gd2lsbCB3b3JrLgogICBpZiAoIW1mLkdldERlZmluaXRpb24oIkNNQUtFX1BST0pFQ1RfTkFNRSIpIHx8IG1mLklzUm9vdE1ha2VmaWxlKCkpIHsKICAgICBtZi5BZGREZWZpbml0aW9uKCJDTUFLRV9QUk9KRUNUX05BTUUiLCBwcm9qZWN0TmFtZSk7Ci0gICAgbWYuQWRkQ2FjaGVEZWZpbml0aW9uKCJDTUFLRV9QUk9KRUNUX05BTUUiLCBwcm9qZWN0TmFtZS5jX3N0cigpLAorICAgIG1mLkFkZENhY2hlRGVmaW5pdGlvbigiQ01BS0VfUFJPSkVDVF9OQU1FIiwgcHJvamVjdE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBDb21wdXRlZCBieSBDTWFrZSIsIGNtU3RhdGVFbnVtczo6U1RBVElDKTsKICAgfQogCkBAIC0zNzksNyArMzc5LDcgQEAKICAgLy8gQ01ha2VMaXN0cy50eHQgZmlsZSwgdGhlbiBnbyB3aXRoIHRoZSBsYXN0IG9uZS4KICAgaWYgKCFtZi5HZXREZWZpbml0aW9uKG5hbWUpIHx8IG1mLklzUm9vdE1ha2VmaWxlKCkpIHsKICAgICBtZi5BZGREZWZpbml0aW9uKG5hbWUsIHZhbHVlKTsKLSAgICBtZi5BZGRDYWNoZURlZmluaXRpb24obmFtZSwgdmFsdWUuY19zdHIoKSwgIlZhbHVlIENvbXB1dGVkIGJ5IENNYWtlIiwKKyAgICBtZi5BZGRDYWNoZURlZmluaXRpb24obmFtZSwgdmFsdWUsICJWYWx1ZSBDb21wdXRlZCBieSBDTWFrZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtU3RhdGVFbnVtczo6U1RBVElDKTsKICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtUHJvcGVydHlEZWZpbml0aW9uLmN4eCBiL1NvdXJjZS9jbVByb3BlcnR5RGVmaW5pdGlvbi5jeHgKaW5kZXggNmEzMTc0Yy4uYzhlZmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL2NtUHJvcGVydHlEZWZpbml0aW9uLmN4eAorKysgYi9Tb3VyY2UvY21Qcm9wZXJ0eURlZmluaXRpb24uY3h4CkBAIC0yLDE5ICsyLDE3IEBACiAgICBmaWxlIENvcHlyaWdodC50eHQgb3IgaHR0cHM6Ly9jbWFrZS5vcmcvbGljZW5zaW5nIGZvciBkZXRhaWxzLiAgKi8KICNpbmNsdWRlICJjbVByb3BlcnR5RGVmaW5pdGlvbi5oIgogCi12b2lkIGNtUHJvcGVydHlEZWZpbml0aW9uOjpEZWZpbmVQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtUHJvcGVydHk6OlNjb3BlVHlwZSBzY29wZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHNob3J0RGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmdWxsRGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNoYWluKQorI2luY2x1ZGUgPHV0aWxpdHk+CisKK2NtUHJvcGVydHlEZWZpbml0aW9uOjpjbVByb3BlcnR5RGVmaW5pdGlvbihzdGQ6OnN0cmluZyBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtUHJvcGVydHk6OlNjb3BlVHlwZSBzY29wZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBzaG9ydERlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGZ1bGxEZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNoYWluKQorICA6IE5hbWUoc3RkOjptb3ZlKG5hbWUpKQorICAsIFNob3J0RGVzY3JpcHRpb24oc3RkOjptb3ZlKHNob3J0RGVzY3JpcHRpb24pKQorICAsIEZ1bGxEZXNjcmlwdGlvbihzdGQ6Om1vdmUoZnVsbERlc2NyaXB0aW9uKSkKKyAgLCBTY29wZShzY29wZSkKKyAgLCBDaGFpbmVkKGNoYWluKQogewotICB0aGlzLT5OYW1lID0gbmFtZTsKLSAgdGhpcy0+U2NvcGUgPSBzY29wZTsKLSAgdGhpcy0+Q2hhaW5lZCA9IGNoYWluOwotICBpZiAoc2hvcnREZXNjcmlwdGlvbikgewotICAgIHRoaXMtPlNob3J0RGVzY3JpcHRpb24gPSBzaG9ydERlc2NyaXB0aW9uOwotICB9Ci0gIGlmIChmdWxsRGVzY3JpcHRpb24pIHsKLSAgICB0aGlzLT5GdWxsRGVzY3JpcHRpb24gPSBmdWxsRGVzY3JpcHRpb247Ci0gIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVByb3BlcnR5RGVmaW5pdGlvbi5oIGIvU291cmNlL2NtUHJvcGVydHlEZWZpbml0aW9uLmgKaW5kZXggMGQ2OGMzMi4uZDJlNDQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL2NtUHJvcGVydHlEZWZpbml0aW9uLmgKKysrIGIvU291cmNlL2NtUHJvcGVydHlEZWZpbml0aW9uLmgKQEAgLTIxLDEzICsyMSwxMCBAQAogY2xhc3MgY21Qcm9wZXJ0eURlZmluaXRpb24KIHsKIHB1YmxpYzoKLSAgLy8vIERlZmluZSB0aGlzIHByb3BlcnR5Ci0gIHZvaWQgRGVmaW5lUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNtUHJvcGVydHk6OlNjb3BlVHlwZSBzY29wZSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBTaG9ydERlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIEZ1bGxEZXNjcmlwdGlvbiwgYm9vbCBjaGFpbmVkKTsKLQotICAvLy8gRGVmYXVsdCBjb25zdHJ1Y3RvcgotICBjbVByb3BlcnR5RGVmaW5pdGlvbigpIHsgdGhpcy0+Q2hhaW5lZCA9IGZhbHNlOyB9CisgIC8vLyBDb25zdHJ1Y3RvcgorICBjbVByb3BlcnR5RGVmaW5pdGlvbihzdGQ6OnN0cmluZyBuYW1lLCBjbVByb3BlcnR5OjpTY29wZVR5cGUgc2NvcGUsCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIFNob3J0RGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIEZ1bGxEZXNjcmlwdGlvbiwgYm9vbCBjaGFpbmVkID0gZmFsc2UpOwogCiAgIC8vLyBJcyB0aGUgcHJvcGVydHkgY2hhaW5lZD8KICAgYm9vbCBJc0NoYWluZWQoKSBjb25zdCB7IHJldHVybiB0aGlzLT5DaGFpbmVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21Qcm9wZXJ0eURlZmluaXRpb25NYXAuY3h4IGIvU291cmNlL2NtUHJvcGVydHlEZWZpbml0aW9uTWFwLmN4eAppbmRleCBmNzUyZWQ3Li42MTRkNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Qcm9wZXJ0eURlZmluaXRpb25NYXAuY3h4CisrKyBiL1NvdXJjZS9jbVByb3BlcnR5RGVmaW5pdGlvbk1hcC5jeHgKQEAgLTIsMjAgKzIsMjAgQEAKICAgIGZpbGUgQ29weXJpZ2h0LnR4dCBvciBodHRwczovL2NtYWtlLm9yZy9saWNlbnNpbmcgZm9yIGRldGFpbHMuICAqLwogI2luY2x1ZGUgImNtUHJvcGVydHlEZWZpbml0aW9uTWFwLmgiCiAKKyNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCi12b2lkIGNtUHJvcGVydHlEZWZpbml0aW9uTWFwOjpEZWZpbmVQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtUHJvcGVydHk6OlNjb3BlVHlwZSBzY29wZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIFNob3J0RGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBGdWxsRGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNoYWluKQordm9pZCBjbVByb3BlcnR5RGVmaW5pdGlvbk1hcDo6RGVmaW5lUHJvcGVydHkoCisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBjbVByb3BlcnR5OjpTY29wZVR5cGUgc2NvcGUsCisgIGNvbnN0IHN0ZDo6c3RyaW5nJiBTaG9ydERlc2NyaXB0aW9uLCBjb25zdCBzdGQ6OnN0cmluZyYgRnVsbERlc2NyaXB0aW9uLAorICBib29sIGNoYWluKQogewogICBhdXRvIGl0ID0gdGhpcy0+ZmluZChuYW1lKTsKLSAgY21Qcm9wZXJ0eURlZmluaXRpb24qIHByb3A7CiAgIGlmIChpdCA9PSB0aGlzLT5lbmQoKSkgewotICAgIHByb3AgPSAmKCp0aGlzKVtuYW1lXTsKLSAgICBwcm9wLT5EZWZpbmVQcm9wZXJ0eShuYW1lLCBzY29wZSwgU2hvcnREZXNjcmlwdGlvbiwgRnVsbERlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWluKTsKKyAgICAvLyB0cnlfZW1wbGFjZSgpIHNpbmNlIEMrKzE3CisgICAgdGhpcy0+ZW1wbGFjZShzdGQ6OnBpZWNld2lzZV9jb25zdHJ1Y3QsIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShuYW1lKSwKKyAgICAgICAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9hc190dXBsZShuYW1lLCBzY29wZSwgU2hvcnREZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdWxsRGVzY3JpcHRpb24sIGNoYWluKSk7CiAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2NtUHJvcGVydHlEZWZpbml0aW9uTWFwLmggYi9Tb3VyY2UvY21Qcm9wZXJ0eURlZmluaXRpb25NYXAuaAppbmRleCA4ZWM3OTEwLi4yYWU2ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Qcm9wZXJ0eURlZmluaXRpb25NYXAuaAorKysgYi9Tb3VyY2UvY21Qcm9wZXJ0eURlZmluaXRpb25NYXAuaApAQCAtMTcsOCArMTcsOCBAQAogcHVibGljOgogICAvLyBkZWZpbmUgdGhlIHByb3BlcnR5CiAgIHZvaWQgRGVmaW5lUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGNtUHJvcGVydHk6OlNjb3BlVHlwZSBzY29wZSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBTaG9ydERlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIEZ1bGxEZXNjcmlwdGlvbiwgYm9vbCBjaGFpbik7CisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIFNob3J0RGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIEZ1bGxEZXNjcmlwdGlvbiwgYm9vbCBjaGFpbik7CiAKICAgLy8gaGFzIGEgbmFtZWQgcHJvcGVydHkgYmVlbiBkZWZpbmVkCiAgIGJvb2wgSXNQcm9wZXJ0eURlZmluZWQoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtUHJvcGVydHlNYXAuY3h4IGIvU291cmNlL2NtUHJvcGVydHlNYXAuY3h4CmluZGV4IGQ0YjM1NTIuLmYyMmYzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVByb3BlcnR5TWFwLmN4eAorKysgYi9Tb3VyY2UvY21Qcm9wZXJ0eU1hcC5jeHgKQEAgLTQyLDEzICs0MiwxMSBAQAogICBNYXBfLmVyYXNlKG5hbWUpOwogfQogCi1jb25zdCBjaGFyKiBjbVByb3BlcnR5TWFwOjpHZXRQcm9wZXJ0eVZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSBjb25zdAorY21Qcm9wIGNtUHJvcGVydHlNYXA6OkdldFByb3BlcnR5VmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gIHsKLSAgICBhdXRvIGl0ID0gTWFwXy5maW5kKG5hbWUpOwotICAgIGlmIChpdCAhPSBNYXBfLmVuZCgpKSB7Ci0gICAgICByZXR1cm4gaXQtPnNlY29uZC5jX3N0cigpOwotICAgIH0KKyAgYXV0byBpdCA9IE1hcF8uZmluZChuYW1lKTsKKyAgaWYgKGl0ICE9IE1hcF8uZW5kKCkpIHsKKyAgICByZXR1cm4gJml0LT5zZWNvbmQ7CiAgIH0KICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21Qcm9wZXJ0eU1hcC5oIGIvU291cmNlL2NtUHJvcGVydHlNYXAuaAppbmRleCBiZWE0MzcyLi40MGFjMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Qcm9wZXJ0eU1hcC5oCisrKyBiL1NvdXJjZS9jbVByb3BlcnR5TWFwLmgKQEAgLTEwLDYgKzEwLDggQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAordXNpbmcgY21Qcm9wID0gY29uc3Qgc3RkOjpzdHJpbmcqOworCiAvKiogXGNsYXNzIGNtUHJvcGVydHlNYXAKICAqIFxicmllZiBTdHJpbmcgcHJvcGVydHkgbWFwLgogICovCkBAIC0zMSw3ICszMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhc1N0cmluZyA9IGZhbHNlKTsKIAogICAvLyEgR2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQotICBjb25zdCBjaGFyKiBHZXRQcm9wZXJ0eVZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgY21Qcm9wIEdldFByb3BlcnR5VmFsdWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIGNvbnN0OwogCiAgIC8vISBSZW1vdmUgdGhlIHByb3BlcnR5IEBhIG5hbWUgZnJvbSB0aGUgbWFwCiAgIHZvaWQgUmVtb3ZlUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtUXRBdXRvR2VuR2xvYmFsSW5pdGlhbGl6ZXIuY3h4IGIvU291cmNlL2NtUXRBdXRvR2VuR2xvYmFsSW5pdGlhbGl6ZXIuY3h4CmluZGV4IDdhNmNiNDIuLjE4YjEzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVF0QXV0b0dlbkdsb2JhbEluaXRpYWxpemVyLmN4eAorKysgYi9Tb3VyY2UvY21RdEF1dG9HZW5HbG9iYWxJbml0aWFsaXplci5jeHgKQEAgLTE2NCwxMCArMTY0LDEwIEBACiAKICAgICAvLyBTZXQgRk9MREVSIHByb3BlcnR5IGluIHRoZSB0YXJnZXQKICAgICB7Ci0gICAgICBjaGFyIGNvbnN0KiBmb2xkZXIgPQorICAgICAgY21Qcm9wIGZvbGRlciA9CiAgICAgICAgIG1ha2VmaWxlLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eSgiQVVUT0dFTl9UQVJHRVRTX0ZPTERFUiIpOwogICAgICAgaWYgKGZvbGRlciAhPSBudWxscHRyKSB7Ci0gICAgICAgIHRhcmdldC0+U2V0UHJvcGVydHkoIkZPTERFUiIsIGZvbGRlcik7CisgICAgICAgIHRhcmdldC0+U2V0UHJvcGVydHkoIkZPTERFUiIsICpmb2xkZXIpOwogICAgICAgfQogICAgIH0KICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtUXRBdXRvR2VuSW5pdGlhbGl6ZXIuY3h4IGIvU291cmNlL2NtUXRBdXRvR2VuSW5pdGlhbGl6ZXIuY3h4CmluZGV4IDYyOTM2N2QuLmRkZGJhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVF0QXV0b0dlbkluaXRpYWxpemVyLmN4eAorKysgYi9Tb3VyY2UvY21RdEF1dG9HZW5Jbml0aWFsaXplci5jeHgKQEAgLTMzOSwxNSArMzM5LDE4IEBACiAKICAgLy8gVGFyZ2V0cyBGT0xERVIKICAgewotICAgIGNvbnN0IGNoYXIqIGZvbGRlciA9CisgICAgY21Qcm9wIHByb3AgPQogICAgICAgdGhpcy0+TWFrZWZpbGUtPkdldFN0YXRlKCktPkdldEdsb2JhbFByb3BlcnR5KCJBVVRPTU9DX1RBUkdFVFNfRk9MREVSIik7Ci0gICAgaWYgKGZvbGRlciA9PSBudWxscHRyKSB7Ci0gICAgICBmb2xkZXIgPSB0aGlzLT5NYWtlZmlsZS0+R2V0U3RhdGUoKS0+R2V0R2xvYmFsUHJvcGVydHkoCisgICAgaWYgKHByb3AgPT0gbnVsbHB0cikgeworICAgICAgcHJvcCA9IHRoaXMtPk1ha2VmaWxlLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eSgKICAgICAgICAgIkFVVE9HRU5fVEFSR0VUU19GT0xERVIiKTsKICAgICB9CisgICAgY29uc3QgY2hhciogZm9sZGVyOwogICAgIC8vIEluaGVyaXQgRk9MREVSIHByb3BlcnR5IGZyb20gdGFyZ2V0ICgjMTM2ODgpCi0gICAgaWYgKGZvbGRlciA9PSBudWxscHRyKSB7CisgICAgaWYgKHByb3AgPT0gbnVsbHB0cikgewogICAgICAgZm9sZGVyID0gdGhpcy0+R2VuVGFyZ2V0LT5HZXRQcm9wZXJ0eSgiRk9MREVSIik7CisgICAgfSBlbHNlIHsKKyAgICAgIGZvbGRlciA9IHByb3AtPmNfc3RyKCk7CiAgICAgfQogICAgIGlmIChmb2xkZXIgIT0gbnVsbHB0cikgewogICAgICAgdGhpcy0+VGFyZ2V0c0ZvbGRlciA9IGZvbGRlcjsKQEAgLTE2MDQsMTAgKzE2MDcsOSBAQAogICAgICAgICBjbVN0ckNhdChnZW5OYW1lVXBwZXIsICJfU09VUkNFX0dST1VQIiksICJBVVRPR0VOX1NPVVJDRV9HUk9VUCIKICAgICAgIH07CiAgICAgICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBwcm9wIDogcHJvcHMpIHsKLSAgICAgICAgY29uc3QgY2hhciogcHJvcE5hbWUgPQotICAgICAgICAgIHRoaXMtPk1ha2VmaWxlLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eShwcm9wKTsKLSAgICAgICAgaWYgKChwcm9wTmFtZSAhPSBudWxscHRyKSAmJiAoKnByb3BOYW1lICE9ICdcMCcpKSB7Ci0gICAgICAgICAgZ3JvdXBOYW1lID0gcHJvcE5hbWU7CisgICAgICAgIGNtUHJvcCBwcm9wTmFtZSA9IHRoaXMtPk1ha2VmaWxlLT5HZXRTdGF0ZSgpLT5HZXRHbG9iYWxQcm9wZXJ0eShwcm9wKTsKKyAgICAgICAgaWYgKHByb3BOYW1lICYmICFwcm9wTmFtZS0+ZW1wdHkoKSkgeworICAgICAgICAgIGdyb3VwTmFtZSA9ICpwcm9wTmFtZTsKICAgICAgICAgICBwcm9wZXJ0eSA9IHByb3A7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVF0QXV0b01vY1VpYy5jeHggYi9Tb3VyY2UvY21RdEF1dG9Nb2NVaWMuY3h4CmluZGV4IDg5M2JkNmIuLjM2ZGQ2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVF0QXV0b01vY1VpYy5jeHgKKysrIGIvU291cmNlL2NtUXRBdXRvTW9jVWljLmN4eApAQCAtNzAwLDI3ICs3MDAsMjcgQEAKICAgaWYgKCFvZnMpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KLSAgb2ZzIDw8ICIjIEdlbmVyYXRlZCBieSBDTWFrZS4gQ2hhbmdlcyB3aWxsIGJlIG92ZXJ3cml0dGVuLiIgPDwgc3RkOjplbmRsOworICBvZnMgPDwgIiMgR2VuZXJhdGVkIGJ5IENNYWtlLiBDaGFuZ2VzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4iOwogICBmb3IgKGF1dG8gY29uc3QmIHBhaXIgOiBNYXBfKSB7Ci0gICAgb2ZzIDw8IHBhaXIuZmlyc3QgPDwgc3RkOjplbmRsOworICAgIG9mcyA8PCBwYWlyLmZpcnN0IDw8ICdcbic7CiAgICAgRmlsZVQgY29uc3QmIGZpbGUgPSAqcGFpci5zZWNvbmQ7CiAgICAgaWYgKCFmaWxlLk1vYy5NYWNyby5lbXB0eSgpKSB7Ci0gICAgICBvZnMgPDwgIiBtbWM6IiA8PCBmaWxlLk1vYy5NYWNybyA8PCBzdGQ6OmVuZGw7CisgICAgICBvZnMgPDwgIiBtbWM6IiA8PCBmaWxlLk1vYy5NYWNybyA8PCAnXG4nOwogICAgIH0KICAgICBmb3IgKEluY2x1ZGVLZXlUIGNvbnN0JiBpdGVtIDogZmlsZS5Nb2MuSW5jbHVkZS5VbmRlcnNjb3JlKSB7Ci0gICAgICBvZnMgPDwgIiBtaXU6IiA8PCBpdGVtLktleSA8PCBzdGQ6OmVuZGw7CisgICAgICBvZnMgPDwgIiBtaXU6IiA8PCBpdGVtLktleSA8PCAnXG4nOwogICAgIH0KICAgICBmb3IgKEluY2x1ZGVLZXlUIGNvbnN0JiBpdGVtIDogZmlsZS5Nb2MuSW5jbHVkZS5Eb3QpIHsKLSAgICAgIG9mcyA8PCAiIG1pZDoiIDw8IGl0ZW0uS2V5IDw8IHN0ZDo6ZW5kbDsKKyAgICAgIG9mcyA8PCAiIG1pZDoiIDw8IGl0ZW0uS2V5IDw8ICdcbic7CiAgICAgfQogICAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGl0ZW0gOiBmaWxlLk1vYy5EZXBlbmRzKSB7Ci0gICAgICBvZnMgPDwgIiBtZHA6IiA8PCBpdGVtIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIG9mcyA8PCAiIG1kcDoiIDw8IGl0ZW0gPDwgJ1xuJzsKICAgICB9CiAgICAgZm9yIChJbmNsdWRlS2V5VCBjb25zdCYgaXRlbSA6IGZpbGUuVWljLkluY2x1ZGUpIHsKLSAgICAgIG9mcyA8PCAiIHVpYzoiIDw8IGl0ZW0uS2V5IDw8IHN0ZDo6ZW5kbDsKKyAgICAgIG9mcyA8PCAiIHVpYzoiIDw8IGl0ZW0uS2V5IDw8ICdcbic7CiAgICAgfQogICAgIGZvciAoc3RkOjpzdHJpbmcgY29uc3QmIGl0ZW0gOiBmaWxlLlVpYy5EZXBlbmRzKSB7Ci0gICAgICBvZnMgPDwgIiB1ZHA6IiA8PCBpdGVtIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIG9mcyA8PCAiIHVkcDoiIDw8IGl0ZW0gPDwgJ1xuJzsKICAgICB9CiAgIH0KICAgcmV0dXJuIG9mcy5DbG9zZSgpOwpAQCAtMjIxMSw5ICsyMjExLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAiIGZvciB3cml0aW5nLiIpKTsKICAgICByZXR1cm47CiAgIH0KLSAgb2ZzIDw8IEJhc2VDb25zdCgpLkRlcEZpbGVSdWxlTmFtZSA8PCAiOiBcXCIgPDwgc3RkOjplbmRsOworICBvZnMgPDwgQmFzZUNvbnN0KCkuRGVwRmlsZVJ1bGVOYW1lIDw8ICI6IFxcXG4iOwogICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlIDogZGVwZW5kZW5jaWVzKSB7Ci0gICAgb2ZzIDw8ICdcdCcgPDwgZXNjYXBlRGVwZW5kZW5jeVBhdGgoZmlsZSkgPDwgIiBcXCIgPDwgc3RkOjplbmRsOworICAgIG9mcyA8PCAnXHQnIDw8IGVzY2FwZURlcGVuZGVuY3lQYXRoKGZpbGUpIDw8ICIgXFxcbiI7CiAgICAgaWYgKCFvZnMuZ29vZCgpKSB7CiAgICAgICBMb2dFcnJvcihHZW5UOjpHRU4sCiAgICAgICAgICAgICAgICBjbVN0ckNhdCgiV3JpdGluZyBkZXBmaWxlIiwgTWVzc2FnZVBhdGgoQmFzZUNvbnN0KCkuRGVwRmlsZSksCkBAIC0yMjI0LDggKzIyMjQsNyBAQAogCiAgIC8vIEFkZCB0aGUgQ01ha2UgZXhlY3V0YWJsZSB0byByZS1uZXcgY2FjaGUgZGF0YSBpZiBuZWNlc3NhcnkuCiAgIC8vIEFsc28sIHRoaXMgaXMgdGhlIGxhc3QgZW50cnksIHNvIGRvbid0IGFkZCBhIGJhY2tzbGFzaC4KLSAgb2ZzIDw8ICdcdCcgPDwgZXNjYXBlRGVwZW5kZW5jeVBhdGgoQmFzZUNvbnN0KCkuQ01ha2VFeGVjdXRhYmxlKQotICAgICAgPDwgc3RkOjplbmRsOworICBvZnMgPDwgJ1x0JyA8PCBlc2NhcGVEZXBlbmRlbmN5UGF0aChCYXNlQ29uc3QoKS5DTWFrZUV4ZWN1dGFibGUpIDw8ICdcbic7CiB9CiAKIHZvaWQgY21RdEF1dG9Nb2NVaWNUOjpKb2JGaW5pc2hUOjpQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVJTVC5jeHggYi9Tb3VyY2UvY21SU1QuY3h4CmluZGV4IDdmNGFiZjkuLmMzOWQxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVJTVC5jeHgKKysrIGIvU291cmNlL2NtUlNULmN4eApAQCAtODksNyArODksOCBAQAogICAgICAgICB0aGlzLT5Qcm9jZXNzTGluZShsaW5lKTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChsaW5lWzBdICE9ICcjJykgewotICAgICAgICAgIHRoaXMtPlByb2Nlc3NMaW5lKGxpbmUuc3Vic3RyKDAsIHBvcykpOworICAgICAgICAgIGxpbmUucmVzaXplKHBvcyk7CisgICAgICAgICAgdGhpcy0+UHJvY2Vzc0xpbmUobGluZSk7CiAgICAgICAgIH0KICAgICAgICAgcnN0LmNsZWFyKCk7CiAgICAgICAgIHRoaXMtPlJlc2V0KCk7CkBAIC0xMDIsOCArMTAzLDkgQEAKICAgICAgICAgICB0aGlzLT5Qcm9jZXNzTGluZSgiIik7CiAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxpbmUuc3Vic3RyKDAsIDIpID09ICIjICIpIHsKLSAgICAgICAgICB0aGlzLT5Qcm9jZXNzTGluZShsaW5lLnN1YnN0cigyKSk7CisgICAgICAgIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgobGluZSwgIiMgIikpIHsKKyAgICAgICAgICBsaW5lLmVyYXNlKDAsIDIpOworICAgICAgICAgIHRoaXMtPlByb2Nlc3NMaW5lKGxpbmUpOwogICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIHJzdC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtUnVsZVBsYWNlaG9sZGVyRXhwYW5kZXIuY3h4IGIvU291cmNlL2NtUnVsZVBsYWNlaG9sZGVyRXhwYW5kZXIuY3h4CmluZGV4IDVhYjFiM2EuLjI1NDEzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVJ1bGVQbGFjZWhvbGRlckV4cGFuZGVyLmN4eAorKysgYi9Tb3VyY2UvY21SdWxlUGxhY2Vob2xkZXJFeHBhbmRlci5jeHgKQEAgLTIzNiw4ICsyMzYsNyBAQAogICB9CiAgIGlmICh2YXJpYWJsZSA9PSAiQ01BS0VfQ09NTUFORCIpIHsKICAgICByZXR1cm4gb3V0cHV0Q29udmVydGVyLT5Db252ZXJ0VG9PdXRwdXRGb3JtYXQoCi0gICAgICBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKGNtU3lzdGVtVG9vbHM6OkdldENNYWtlQ29tbWFuZCgpKSwKLSAgICAgIGNtT3V0cHV0Q29udmVydGVyOjpTSEVMTCk7CisgICAgICBjbVN5c3RlbVRvb2xzOjpHZXRDTWFrZUNvbW1hbmQoKSwgY21PdXRwdXRDb252ZXJ0ZXI6OlNIRUxMKTsKICAgfQogCiAgIGF1dG8gY29tcEl0ID0gdGhpcy0+Q29tcGlsZXJzLmZpbmQodmFyaWFibGUpOwpAQCAtMzM0LDcgKzMzMywxNyBAQAogICAgICAgc3RkOjpzdHJpbmcgcmVwbGFjZSA9CiAgICAgICAgIHRoaXMtPkV4cGFuZFJ1bGVWYXJpYWJsZShvdXRwdXRDb252ZXJ0ZXIsIHZhciwgcmVwbGFjZVZhbHVlcyk7CiAgICAgICBleHBhbmRlZElucHV0ICs9IHMuc3Vic3RyKHBvcywgc3RhcnQgLSBwb3MpOworCisgICAgICAvLyBQcmV2ZW50IGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgaW4gdGhlIG91dHB1dCBpZiB0aGUgcnVsZSB2YXJpYWJsZQorICAgICAgLy8gZXhwYW5kcyB0byBhbiBlbXB0eSBzdHJpbmcuCisgICAgICBib29sIGNvbnNlY3V0aXZlID0gcmVwbGFjZS5lbXB0eSgpICYmIHN0YXJ0ID4gMCAmJiBzW3N0YXJ0IC0gMV0gPT0gJyAnICYmCisgICAgICAgIGVuZCArIDEgPCBzLnNpemUoKSAmJiBzW2VuZCArIDFdID09ICcgJzsKKyAgICAgIGlmIChjb25zZWN1dGl2ZSkgeworICAgICAgICBleHBhbmRlZElucHV0LnBvcF9iYWNrKCk7CisgICAgICB9CisKICAgICAgIGV4cGFuZGVkSW5wdXQgKz0gcmVwbGFjZTsKKwogICAgICAgLy8gbW92ZSB0byBuZXh0IG9uZQogICAgICAgc3RhcnQgPSBzLmZpbmQoJzwnLCBzdGFydCArIHZhci5zaXplKCkgKyAyKTsKICAgICAgIHBvcyA9IGVuZCArIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21SdW50aW1lRGVwZW5kZW5jeUFyY2hpdmUuY3h4IGIvU291cmNlL2NtUnVudGltZURlcGVuZGVuY3lBcmNoaXZlLmN4eAppbmRleCA3YTk4N2MyLi4zNGIzMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21SdW50aW1lRGVwZW5kZW5jeUFyY2hpdmUuY3h4CisrKyBiL1NvdXJjZS9jbVJ1bnRpbWVEZXBlbmRlbmN5QXJjaGl2ZS5jeHgKQEAgLTM5LDcgKzM5LDcgQEAKICAgc3RkOjpzdHJpbmcgdnNsb2M7CiAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICMgIGlmbmRlZiBDTUFLRV9CT09UU1RSQVAKLSAgaWYgKGdnLT5HZXROYW1lKCkuZmluZChwcmVmaXgpID09IDApIHsKKyAgaWYgKGNtSGFzUHJlZml4KGdnLT5HZXROYW1lKCksIHByZWZpeCkpIHsKICAgICBjbUdsb2JhbFZpc3VhbFN0dWRpb1ZlcnNpb25lZEdlbmVyYXRvciogdnNnZW4gPQogICAgICAgc3RhdGljX2Nhc3Q8Y21HbG9iYWxWaXN1YWxTdHVkaW9WZXJzaW9uZWRHZW5lcmF0b3IqPihnZyk7CiAgICAgaWYgKHZzZ2VuLT5HZXRWU0luc3RhbmNlKHZzbG9jKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL2NtU2VydmVyLmN4eCBiL1NvdXJjZS9jbVNlcnZlci5jeHgKaW5kZXggM2IyZTVmMy4uNDM0ZmI2OCAxMDA2NDQKLS0tIGEvU291cmNlL2NtU2VydmVyLmN4eAorKysgYi9Tb3VyY2UvY21TZXJ2ZXIuY3h4CkBAIC01OSwxNiArNTksMTIgQEAKICAgLCBTdXBwb3J0RXhwZXJpbWVudGFsKHN1cHBvcnRFeHBlcmltZW50YWwpCiB7CiAgIC8vIFJlZ2lzdGVyIHN1cHBvcnRlZCBwcm90b2NvbHM6Ci0gIHRoaXMtPlJlZ2lzdGVyUHJvdG9jb2wobmV3IGNtU2VydmVyUHJvdG9jb2wxKTsKKyAgdGhpcy0+UmVnaXN0ZXJQcm90b2NvbChjbTo6bWFrZV91bmlxdWU8Y21TZXJ2ZXJQcm90b2NvbDE+KCkpOwogfQogCiBjbVNlcnZlcjo6fmNtU2VydmVyKCkKIHsKICAgQ2xvc2UoKTsKLQotICBmb3IgKGNtU2VydmVyUHJvdG9jb2wqIHAgOiB0aGlzLT5TdXBwb3J0ZWRQcm90b2NvbHMpIHsKLSAgICBkZWxldGUgcDsKLSAgfQogfQogCiB2b2lkIGNtU2VydmVyOjpQcm9jZXNzUmVxdWVzdChjbUNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sCkBAIC0xMTcsMjIgKzExMywyMiBAQAogICB9CiB9CiAKLXZvaWQgY21TZXJ2ZXI6OlJlZ2lzdGVyUHJvdG9jb2woY21TZXJ2ZXJQcm90b2NvbCogcHJvdG9jb2wpCit2b2lkIGNtU2VydmVyOjpSZWdpc3RlclByb3RvY29sKHN0ZDo6dW5pcXVlX3B0cjxjbVNlcnZlclByb3RvY29sPiBwcm90b2NvbCkKIHsKICAgaWYgKHByb3RvY29sLT5Jc0V4cGVyaW1lbnRhbCgpICYmICF0aGlzLT5TdXBwb3J0RXhwZXJpbWVudGFsKSB7Ci0gICAgZGVsZXRlIHByb3RvY29sOworICAgIHByb3RvY29sLnJlc2V0KCk7CiAgICAgcmV0dXJuOwogICB9CiAgIGF1dG8gdmVyc2lvbiA9IHByb3RvY29sLT5Qcm90b2NvbFZlcnNpb24oKTsKICAgYXNzZXJ0KHZlcnNpb24uZmlyc3QgPj0gMCk7CiAgIGFzc2VydCh2ZXJzaW9uLnNlY29uZCA+PSAwKTsKLSAgYXV0byBpdCA9IHN0ZDo6ZmluZF9pZih0aGlzLT5TdXBwb3J0ZWRQcm90b2NvbHMuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5TdXBwb3J0ZWRQcm90b2NvbHMuZW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgW3ZlcnNpb25dKGNtU2VydmVyUHJvdG9jb2wqIHApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwLT5Qcm90b2NvbFZlcnNpb24oKSA9PSB2ZXJzaW9uOwotICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICBhdXRvIGl0ID0gc3RkOjpmaW5kX2lmKAorICAgIHRoaXMtPlN1cHBvcnRlZFByb3RvY29scy5iZWdpbigpLCB0aGlzLT5TdXBwb3J0ZWRQcm90b2NvbHMuZW5kKCksCisgICAgW3ZlcnNpb25dKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxjbVNlcnZlclByb3RvY29sPiYgcCkgeworICAgICAgcmV0dXJuIHAtPlByb3RvY29sVmVyc2lvbigpID09IHZlcnNpb247CisgICAgfSk7CiAgIGlmIChpdCA9PSB0aGlzLT5TdXBwb3J0ZWRQcm90b2NvbHMuZW5kKCkpIHsKLSAgICB0aGlzLT5TdXBwb3J0ZWRQcm90b2NvbHMucHVzaF9iYWNrKHByb3RvY29sKTsKKyAgICB0aGlzLT5TdXBwb3J0ZWRQcm90b2NvbHMucHVzaF9iYWNrKHN0ZDo6bW92ZShwcm90b2NvbCkpOwogICB9CiB9CiAKQEAgLTI5NywxOSArMjkzLDIwIEBACiB9CiAKIGNtU2VydmVyUHJvdG9jb2wqIGNtU2VydmVyOjpGaW5kTWF0Y2hpbmdQcm90b2NvbCgKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8Y21TZXJ2ZXJQcm90b2NvbCo+JiBwcm90b2NvbHMsIGludCBtYWpvciwgaW50IG1pbm9yKQorICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y21TZXJ2ZXJQcm90b2NvbD4+JiBwcm90b2NvbHMsIGludCBtYWpvciwKKyAgaW50IG1pbm9yKQogewogICBjbVNlcnZlclByb3RvY29sKiBiZXN0TWF0Y2ggPSBudWxscHRyOwotICBmb3IgKGF1dG8gcHJvdG9jb2wgOiBwcm90b2NvbHMpIHsKKyAgZm9yIChjb25zdCBhdXRvJiBwcm90b2NvbCA6IHByb3RvY29scykgewogICAgIGF1dG8gdmVyc2lvbiA9IHByb3RvY29sLT5Qcm90b2NvbFZlcnNpb24oKTsKICAgICBpZiAobWFqb3IgIT0gdmVyc2lvbi5maXJzdCkgewogICAgICAgY29udGludWU7CiAgICAgfQogICAgIGlmIChtaW5vciA9PSB2ZXJzaW9uLnNlY29uZCkgewotICAgICAgcmV0dXJuIHByb3RvY29sOworICAgICAgcmV0dXJuIHByb3RvY29sLmdldCgpOwogICAgIH0KICAgICBpZiAoIWJlc3RNYXRjaCB8fCBiZXN0TWF0Y2gtPlByb3RvY29sVmVyc2lvbigpLnNlY29uZCA8IHZlcnNpb24uc2Vjb25kKSB7Ci0gICAgICBiZXN0TWF0Y2ggPSBwcm90b2NvbDsKKyAgICAgIGJlc3RNYXRjaCA9IHByb3RvY29sLmdldCgpOwogICAgIH0KICAgfQogICByZXR1cm4gbWlub3IgPCAwID8gYmVzdE1hdGNoIDogbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVNlcnZlci5oIGIvU291cmNlL2NtU2VydmVyLmgKaW5kZXggM2Q3MDI3Yi4uZWM0MDczOCAxMDA2NDQKLS0tIGEvU291cmNlL2NtU2VydmVyLmgKKysrIGIvU291cmNlL2NtU2VydmVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQAogICBjbUZpbGVNb25pdG9yKiBGaWxlTW9uaXRvcigpIGNvbnN0OwogCiBwcml2YXRlOgotICB2b2lkIFJlZ2lzdGVyUHJvdG9jb2woY21TZXJ2ZXJQcm90b2NvbCogcHJvdG9jb2wpOworICB2b2lkIFJlZ2lzdGVyUHJvdG9jb2woc3RkOjp1bmlxdWVfcHRyPGNtU2VydmVyUHJvdG9jb2w+IHByb3RvY29sKTsKIAogICAvLyBDYWxsYmFja3MgZnJvbSBjbVNlcnZlckNvbm5lY3Rpb246CiAKQEAgLTE0OSwxMiArMTQ5LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERlYnVnSW5mbyogZGVidWcpIGNvbnN0OwogCiAgIHN0YXRpYyBjbVNlcnZlclByb3RvY29sKiBGaW5kTWF0Y2hpbmdQcm90b2NvbCgKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxjbVNlcnZlclByb3RvY29sKj4mIHByb3RvY29scywgaW50IG1ham9yLCBpbnQgbWlub3IpOworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxjbVNlcnZlclByb3RvY29sPj4mIHByb3RvY29scywgaW50IG1ham9yLAorICAgIGludCBtaW5vcik7CiAKICAgY29uc3QgYm9vbCBTdXBwb3J0RXhwZXJpbWVudGFsOwogCiAgIGNtU2VydmVyUHJvdG9jb2wqIFByb3RvY29sID0gbnVsbHB0cjsKLSAgc3RkOjp2ZWN0b3I8Y21TZXJ2ZXJQcm90b2NvbCo+IFN1cHBvcnRlZFByb3RvY29sczsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGNtU2VydmVyUHJvdG9jb2w+PiBTdXBwb3J0ZWRQcm90b2NvbHM7CiAKICAgZnJpZW5kIGNsYXNzIGNtU2VydmVyUHJvdG9jb2w7CiAgIGZyaWVuZCBjbGFzcyBjbVNlcnZlclJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21TZXJ2ZXJQcm90b2NvbC5jeHggYi9Tb3VyY2UvY21TZXJ2ZXJQcm90b2NvbC5jeHgKaW5kZXggMWQ0ZWEwMS4uYzVmMzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL2NtU2VydmVyUHJvdG9jb2wuY3h4CisrKyBiL1NvdXJjZS9jbVNlcnZlclByb3RvY29sLmN4eApAQCAtMTgyLDcgKzE4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBlcnJvck1lc3NhZ2UpCiB7CiAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNhY2hlZFZhbHVlID0KLSAgICBzdGQ6OnN0cmluZyhzdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9IT01FX0RJUkVDVE9SWSIpKTsKKyAgICAqc3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSgiQ01BS0VfSE9NRV9ESVJFQ1RPUlkiKTsKICAgaWYgKHZhbHVlLmVtcHR5KCkpIHsKICAgICB2YWx1ZSA9IGNhY2hlZFZhbHVlOwogICAgIHJldHVybiB0cnVlOwpAQCAtMjA1LDkgKzIwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYga2V5RGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogZXJyb3JNZXNzYWdlKQogewotICBjb25zdCBjaGFyKiBlbnRyeSA9IHN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUoa2V5KTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgY2FjaGVkVmFsdWUgPQotICAgIGVudHJ5ID09IG51bGxwdHIgPyBzdGQ6OnN0cmluZygpIDogc3RkOjpzdHJpbmcoZW50cnkpOworICBjb25zdCBzdGQ6OnN0cmluZyBjYWNoZWRWYWx1ZSA9IHN0YXRlLT5HZXRTYWZlQ2FjaGVFbnRyeVZhbHVlKGtleSk7CiAgIGlmICh2YWx1ZS5lbXB0eSgpKSB7CiAgICAgdmFsdWUgPSBjYWNoZWRWYWx1ZTsKICAgfQpAQCAtNDUyLDcgKzQ1MCw3IEBACiAgICAgYm9vbCBoYXZlUHJvcGVydGllcyA9IGZhbHNlOwogICAgIGZvciAoYXV0byBjb25zdCYgcHJvcCA6IHN0YXRlLT5HZXRDYWNoZUVudHJ5UHJvcGVydHlMaXN0KGtleSkpIHsKICAgICAgIGhhdmVQcm9wZXJ0aWVzID0gdHJ1ZTsKLSAgICAgIHByb3BzW3Byb3BdID0gc3RhdGUtPkdldENhY2hlRW50cnlQcm9wZXJ0eShrZXksIHByb3ApOworICAgICAgcHJvcHNbcHJvcF0gPSAqc3RhdGUtPkdldENhY2hlRW50cnlQcm9wZXJ0eShrZXksIHByb3ApOwogICAgIH0KICAgICBpZiAoaGF2ZVByb3BlcnRpZXMpIHsKICAgICAgIGVudHJ5W2tQUk9QRVJUSUVTX0tFWV0gPSBwcm9wczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVNldENvbW1hbmQuY3h4IGIvU291cmNlL2NtU2V0Q29tbWFuZC5jeHgKaW5kZXggNWUyYTE0Ni4uNWM1NTQyNyAxMDA2NDQKLS0tIGEvU291cmNlL2NtU2V0Q29tbWFuZC5jeHgKKysrIGIvU291cmNlL2NtU2V0Q29tbWFuZC5jeHgKQEAgLTEzNSw3ICsxMzUsNyBAQAogCiAgIC8vIHNlZSBpZiB0aGlzIGlzIGFscmVhZHkgaW4gdGhlIGNhY2hlCiAgIGNtU3RhdGUqIHN0YXRlID0gc3RhdHVzLkdldE1ha2VmaWxlKCkuR2V0U3RhdGUoKTsKLSAgY29uc3QgY2hhciogZXhpc3RpbmdWYWx1ZSA9IHN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUodmFyaWFibGUpOworICBjbVByb3AgZXhpc3RpbmdWYWx1ZSA9IHN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUodmFyaWFibGUpOwogICBpZiAoZXhpc3RpbmdWYWx1ZSAmJgogICAgICAgKHN0YXRlLT5HZXRDYWNoZUVudHJ5VHlwZSh2YXJpYWJsZSkgIT0gY21TdGF0ZUVudW1zOjpVTklOSVRJQUxJWkVEKSkgewogICAgIC8vIGlmIHRoZSBzZXQgaXMgdHJ5aW5nIHRvIENBQ0hFIHRoZSB2YWx1ZSBidXQgdGhlIHZhbHVlCkBAIC0xNDksOCArMTQ5LDggQEAKIAogICAvLyBpZiBpdCBpcyBtZWFudCB0byBiZSBpbiB0aGUgY2FjaGUgdGhlbiBkZWZpbmUgaXQgaW4gdGhlIGNhY2hlCiAgIGlmIChjYWNoZSkgewotICAgIHN0YXR1cy5HZXRNYWtlZmlsZSgpLkFkZENhY2hlRGVmaW5pdGlvbih2YXJpYWJsZSwgdmFsdWUuY19zdHIoKSwgZG9jc3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCBmb3JjZSk7CisgICAgc3RhdHVzLkdldE1ha2VmaWxlKCkuQWRkQ2FjaGVEZWZpbml0aW9uKHZhcmlhYmxlLCB2YWx1ZSwgZG9jc3RyaW5nLCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZSk7CiAgIH0gZWxzZSB7CiAgICAgLy8gYWRkIHRoZSBkZWZpbml0aW9uCiAgICAgc3RhdHVzLkdldE1ha2VmaWxlKCkuQWRkRGVmaW5pdGlvbih2YXJpYWJsZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtU2V0UHJvcGVydHlDb21tYW5kLmN4eCBiL1NvdXJjZS9jbVNldFByb3BlcnR5Q29tbWFuZC5jeHgKaW5kZXggMzcwNTcyNy4uNGRiYmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL2NtU2V0UHJvcGVydHlDb21tYW5kLmN4eAorKysgYi9Tb3VyY2UvY21TZXRQcm9wZXJ0eUNvbW1hbmQuY3h4CkBAIC0yMzUsMTQgKzIzNSw4IEBACiAgIGlmICghbmFtZXMuZW1wdHkoKSkgewogICAgIC8vIENvbnN0cnVjdCB0aGUgZGlyZWN0b3J5IG5hbWUuICBJbnRlcnByZXQgcmVsYXRpdmUgcGF0aHMgd2l0aAogICAgIC8vIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotICAgIHN0ZDo6c3RyaW5nIGRpciA9ICpuYW1lcy5iZWdpbigpOwotICAgIGlmICghY21TeXN0ZW1Ub29sczo6RmlsZUlzRnVsbFBhdGgoZGlyKSkgewotICAgICAgZGlyID0gY21TdHJDYXQoc3RhdHVzLkdldE1ha2VmaWxlKCkuR2V0Q3VycmVudFNvdXJjZURpcmVjdG9yeSgpLCAnLycsCi0gICAgICAgICAgICAgICAgICAgICAqbmFtZXMuYmVnaW4oKSk7Ci0gICAgfQotCi0gICAgLy8gVGhlIGxvY2FsIGdlbmVyYXRvcnMgYXJlIGFzc29jaWF0ZWQgd2l0aCBjb2xsYXBzZWQgcGF0aHMuCi0gICAgZGlyID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChkaXIpOworICAgIHN0ZDo6c3RyaW5nIGRpciA9IGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgoCisgICAgICAqbmFtZXMuYmVnaW4oKSwgc3RhdHVzLkdldE1ha2VmaWxlKCkuR2V0Q3VycmVudFNvdXJjZURpcmVjdG9yeSgpKTsKIAogICAgIG1mID0gc3RhdHVzLkdldE1ha2VmaWxlKCkuR2V0R2xvYmFsR2VuZXJhdG9yKCktPkZpbmRNYWtlZmlsZShkaXIpOwogICAgIGlmICghbWYpIHsKQEAgLTMwNyw3ICszMDEsNyBAQAogICAgIGlmIChyZW1vdmUpIHsKICAgICAgIHRhcmdldC0+U2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBudWxscHRyKTsKICAgICB9IGVsc2UgewotICAgICAgdGFyZ2V0LT5TZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUuY19zdHIoKSk7CisgICAgICB0YXJnZXQtPlNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZSk7CiAgICAgfQogICB9CiAKQEAgLTQzOCw3ICs0MzIsNyBAQAogICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBuYW1lIDogbmFtZXMpIHsKICAgICAvLyBHZXQgdGhlIHNvdXJjZSBmaWxlLgogICAgIGNtYWtlKiBjbSA9IHN0YXR1cy5HZXRNYWtlZmlsZSgpLkdldENNYWtlSW5zdGFuY2UoKTsKLSAgICBjb25zdCBjaGFyKiBleGlzdGluZ1ZhbHVlID0gY20tPkdldFN0YXRlKCktPkdldENhY2hlRW50cnlWYWx1ZShuYW1lKTsKKyAgICBjbVByb3AgZXhpc3RpbmdWYWx1ZSA9IGNtLT5HZXRTdGF0ZSgpLT5HZXRDYWNoZUVudHJ5VmFsdWUobmFtZSk7CiAgICAgaWYgKGV4aXN0aW5nVmFsdWUpIHsKICAgICAgIGlmICghSGFuZGxlQ2FjaGVFbnRyeShuYW1lLCBzdGF0dXMuR2V0TWFrZWZpbGUoKSwgcHJvcGVydHlOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5VmFsdWUsIGFwcGVuZEFzU3RyaW5nLCBhcHBlbmRNb2RlLApAQCAtNDYwLDE2ICs0NTQsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICBib29sIGFwcGVuZE1vZGUsIGJvb2wgcmVtb3ZlKQogewogICAvLyBTZXQgb3IgYXBwZW5kIHRoZSBwcm9wZXJ0eS4KLSAgY29uc3QgY2hhciogdmFsdWUgPSBwcm9wZXJ0eVZhbHVlLmNfc3RyKCk7CiAgIGNtU3RhdGUqIHN0YXRlID0gbWFrZWZpbGUuR2V0U3RhdGUoKTsKICAgaWYgKHJlbW92ZSkgewogICAgIHN0YXRlLT5SZW1vdmVDYWNoZUVudHJ5UHJvcGVydHkoY2FjaGVLZXksIHByb3BlcnR5TmFtZSk7CiAgIH0KICAgaWYgKGFwcGVuZE1vZGUpIHsKLSAgICBzdGF0ZS0+QXBwZW5kQ2FjaGVFbnRyeVByb3BlcnR5KGNhY2hlS2V5LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLAorICAgIHN0YXRlLT5BcHBlbmRDYWNoZUVudHJ5UHJvcGVydHkoY2FjaGVLZXksIHByb3BlcnR5TmFtZSwgcHJvcGVydHlWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEFzU3RyaW5nKTsKICAgfSBlbHNlIHsKLSAgICBzdGF0ZS0+U2V0Q2FjaGVFbnRyeVByb3BlcnR5KGNhY2hlS2V5LCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICBzdGF0ZS0+U2V0Q2FjaGVFbnRyeVByb3BlcnR5KGNhY2hlS2V5LCBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUpOwogICB9CiAKICAgcmV0dXJuIHRydWU7CkBAIC01MDUsMTMgKzQ5OCwxMyBAQAogICAgICAgICAgICAgICAgICAgIGJvb2wgYXBwZW5kTW9kZSwgYm9vbCByZW1vdmUpCiB7CiAgIC8vIFNldCBvciBhcHBlbmQgdGhlIHByb3BlcnR5LgotICBjb25zdCBjaGFyKiB2YWx1ZSA9IHByb3BlcnR5VmFsdWUuY19zdHIoKTsKICAgaWYgKHJlbW92ZSkgewogICAgIGZpbGUtPlJlbW92ZVByb3BlcnR5KHByb3BlcnR5TmFtZSk7CiAgIH0gZWxzZSBpZiAoYXBwZW5kTW9kZSkgewotICAgIGZpbGUtPkFwcGVuZFByb3BlcnR5KCZtYWtlZmlsZSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXBwZW5kQXNTdHJpbmcpOworICAgIGZpbGUtPkFwcGVuZFByb3BlcnR5KCZtYWtlZmlsZSwgcHJvcGVydHlOYW1lLCBwcm9wZXJ0eVZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEFzU3RyaW5nKTsKICAgfSBlbHNlIHsKLSAgICBmaWxlLT5TZXRQcm9wZXJ0eSgmbWFrZWZpbGUsIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgIGZpbGUtPlNldFByb3BlcnR5KCZtYWtlZmlsZSwgcHJvcGVydHlOYW1lLCBwcm9wZXJ0eVZhbHVlKTsKICAgfQogICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVNpdGVOYW1lQ29tbWFuZC5jeHggYi9Tb3VyY2UvY21TaXRlTmFtZUNvbW1hbmQuY3h4CmluZGV4IGQ0N2YxMjEuLmIyZDkwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVNpdGVOYW1lQ29tbWFuZC5jeHgKKysrIGIvU291cmNlL2NtU2l0ZU5hbWVDb21tYW5kLmN4eApAQCAtNzIsOCArNzIsNyBAQAogICB9CiAjZW5kaWYKICAgc3RhdHVzLkdldE1ha2VmaWxlKCkuQWRkQ2FjaGVEZWZpbml0aW9uKAotICAgIGFyZ3NbMF0sIHNpdGVOYW1lLmNfc3RyKCksCi0gICAgIk5hbWUgb2YgdGhlIGNvbXB1dGVyL3NpdGUgd2hlcmUgY29tcGlsZSBpcyBiZWluZyBydW4iLAorICAgIGFyZ3NbMF0sIHNpdGVOYW1lLCAiTmFtZSBvZiB0aGUgY29tcHV0ZXIvc2l0ZSB3aGVyZSBjb21waWxlIGlzIGJlaW5nIHJ1biIsCiAgICAgY21TdGF0ZUVudW1zOjpTVFJJTkcpOwogCiAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtU291cmNlRmlsZS5jeHggYi9Tb3VyY2UvY21Tb3VyY2VGaWxlLmN4eAppbmRleCBmZDljYWNkLi41ZGM4YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Tb3VyY2VGaWxlLmN4eAorKysgYi9Tb3VyY2UvY21Tb3VyY2VGaWxlLmN4eApAQCAtMzYxLDcgKzM2MSw3IEBACiAgICAgcmV0dXJuIG91dHB1dC5jX3N0cigpOwogICB9CiAKLSAgY29uc3QgY2hhciogcmV0VmFsID0gdGhpcy0+UHJvcGVydGllcy5HZXRQcm9wZXJ0eVZhbHVlKHByb3ApOworICBjbVByb3AgcmV0VmFsID0gdGhpcy0+UHJvcGVydGllcy5HZXRQcm9wZXJ0eVZhbHVlKHByb3ApOwogICBpZiAoIXJldFZhbCkgewogICAgIGNtTWFrZWZpbGUgY29uc3QqIG1mID0gdGhpcy0+TG9jYXRpb24uR2V0TWFrZWZpbGUoKTsKICAgICBjb25zdCBib29sIGNoYWluID0KQEAgLTM2OSw5ICszNjksMTAgQEAKICAgICBpZiAoY2hhaW4pIHsKICAgICAgIHJldHVybiBtZi0+R2V0UHJvcGVydHkocHJvcCwgY2hhaW4pOwogICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKICAgfQogCi0gIHJldHVybiByZXRWYWw7CisgIHJldHVybiByZXRWYWwtPmNfc3RyKCk7CiB9CiAKIGNvbnN0IGNoYXIqIGNtU291cmNlRmlsZTo6R2V0U2FmZVByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL2NtU291cmNlRmlsZUxvY2F0aW9uLmN4eCBiL1NvdXJjZS9jbVNvdXJjZUZpbGVMb2NhdGlvbi5jeHgKaW5kZXggNWY4MDdiOC4uZTg1MmMwNSAxMDA2NDQKLS0tIGEvU291cmNlL2NtU291cmNlRmlsZUxvY2F0aW9uLmN4eAorKysgYi9Tb3VyY2UvY21Tb3VyY2VGaWxlTG9jYXRpb24uY3h4CkBAIC00LDYgKzQsOCBAQAogCiAjaW5jbHVkZSA8Y2Fzc2VydD4KIAorI2luY2x1ZGUgPGNtL3N0cmluZ192aWV3PgorCiAjaW5jbHVkZSAiY21HbG9iYWxHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJjbU1ha2VmaWxlLmgiCiAjaW5jbHVkZSAiY21NZXNzYWdlVHlwZS5oIgpAQCAtMTUyLDcgKzE1NCw3IEBACiAKICAgLy8gT25seSBhIGZpeGVkIHNldCBvZiBleHRlbnNpb25zIHdpbGwgYmUgdHJpZWQgdG8gbWF0Y2ggYSBmaWxlIG9uCiAgIC8vIGRpc2suICBPbmUgb2YgdGhlc2UgbXVzdCBtYXRjaCBpZiBsb2MgcmVmZXJzIHRvIHRoaXMgc291cmNlIGZpbGUuCi0gIHN0ZDo6c3RyaW5nIGNvbnN0JiBleHQgPSB0aGlzLT5OYW1lLnN1YnN0cihsb2MuTmFtZS5zaXplKCkgKyAxKTsKKyAgYXV0byBleHQgPSBjbTo6c3RyaW5nX3ZpZXcodGhpcy0+TmFtZSkuc3Vic3RyKGxvYy5OYW1lLnNpemUoKSArIDEpOwogICBjbU1ha2VmaWxlIGNvbnN0KiBtZiA9IHRoaXMtPk1ha2VmaWxlOwogICBhdXRvIGNtID0gbWYtPkdldENNYWtlSW5zdGFuY2UoKTsKICAgcmV0dXJuIGNtLT5Jc1NvdXJjZUV4dGVuc2lvbihleHQpIHx8IGNtLT5Jc0hlYWRlckV4dGVuc2lvbihleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtU291cmNlR3JvdXAuY3h4IGIvU291cmNlL2NtU291cmNlR3JvdXAuY3h4CmluZGV4IDhjM2VjOWYuLjE1NTA2OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Tb3VyY2VHcm91cC5jeHgKKysrIGIvU291cmNlL2NtU291cmNlR3JvdXAuY3h4CkBAIC00LDYgKzQsOCBAQAogCiAjaW5jbHVkZSA8dXRpbGl0eT4KIAorI2luY2x1ZGUgPGNtL21lbW9yeT4KKwogI2luY2x1ZGUgImNtU3RyaW5nQWxnb3JpdGhtcy5oIgogCiBjbGFzcyBjbVNvdXJjZUdyb3VwSW50ZXJuYWxzCkBAIC0xNiw3ICsxOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBhcmVudE5hbWUpCiAgIDogTmFtZShzdGQ6Om1vdmUobmFtZSkpCiB7Ci0gIHRoaXMtPkludGVybmFsID0gbmV3IGNtU291cmNlR3JvdXBJbnRlcm5hbHM7CisgIHRoaXMtPkludGVybmFsID0gY206Om1ha2VfdW5pcXVlPGNtU291cmNlR3JvdXBJbnRlcm5hbHM+KCk7CiAgIHRoaXMtPlNldEdyb3VwUmVnZXgocmVnZXgpOwogICBpZiAocGFyZW50TmFtZSkgewogICAgIHRoaXMtPkZ1bGxOYW1lID0gY21TdHJDYXQocGFyZW50TmFtZSwgJ1xcJyk7CkBAIC0yNCwxMCArMjYsNyBAQAogICB0aGlzLT5GdWxsTmFtZSArPSB0aGlzLT5OYW1lOwogfQogCi1jbVNvdXJjZUdyb3VwOjp+Y21Tb3VyY2VHcm91cCgpCi17Ci0gIGRlbGV0ZSB0aGlzLT5JbnRlcm5hbDsKLX0KK2NtU291cmNlR3JvdXA6On5jbVNvdXJjZUdyb3VwKCkgPSBkZWZhdWx0OwogCiBjbVNvdXJjZUdyb3VwOjpjbVNvdXJjZUdyb3VwKGNtU291cmNlR3JvdXAgY29uc3QmIHIpCiB7CkBAIC0zNiw3ICszNSw3IEBACiAgIHRoaXMtPkdyb3VwUmVnZXggPSByLkdyb3VwUmVnZXg7CiAgIHRoaXMtPkdyb3VwRmlsZXMgPSByLkdyb3VwRmlsZXM7CiAgIHRoaXMtPlNvdXJjZUZpbGVzID0gci5Tb3VyY2VGaWxlczsKLSAgdGhpcy0+SW50ZXJuYWwgPSBuZXcgY21Tb3VyY2VHcm91cEludGVybmFscygqci5JbnRlcm5hbCk7CisgIHRoaXMtPkludGVybmFsID0gY206Om1ha2VfdW5pcXVlPGNtU291cmNlR3JvdXBJbnRlcm5hbHM+KCpyLkludGVybmFsKTsKIH0KIAogY21Tb3VyY2VHcm91cCYgY21Tb3VyY2VHcm91cDo6b3BlcmF0b3I9KGNtU291cmNlR3JvdXAgY29uc3QmIHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21Tb3VyY2VHcm91cC5oIGIvU291cmNlL2NtU291cmNlR3JvdXAuaAppbmRleCA1ODFkYzVkLi42MjNjZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Tb3VyY2VHcm91cC5oCisrKyBiL1NvdXJjZS9jbVNvdXJjZUdyb3VwLmgKQEAgLTUsNiArNSw3IEBACiAKICNpbmNsdWRlICJjbUNvbmZpZ3VyZS5oIiAvLyBJV1lVIHByYWdtYToga2VlcAogCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgpAQCAtMTIyLDcgKzEyMyw3IEBACiAgICAqLwogICBzdGQ6OnZlY3Rvcjxjb25zdCBjbVNvdXJjZUZpbGUqPiBTb3VyY2VGaWxlczsKIAotICBjbVNvdXJjZUdyb3VwSW50ZXJuYWxzKiBJbnRlcm5hbDsKKyAgc3RkOjp1bmlxdWVfcHRyPGNtU291cmNlR3JvdXBJbnRlcm5hbHM+IEludGVybmFsOwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21Tb3VyY2VHcm91cENvbW1hbmQuY3h4IGIvU291cmNlL2NtU291cmNlR3JvdXBDb21tYW5kLmN4eAppbmRleCBjYzYyOTUyLi44MzUwNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Tb3VyY2VHcm91cENvbW1hbmQuY3h4CisrKyBiL1NvdXJjZS9jbVNvdXJjZUdyb3VwQ29tbWFuZC5jeHgKQEAgLTMwLDE4ICszMCw2IEBACiAgIHJldHVybiBjbVRva2VuaXplKHBhdGgsICJcXC8iKTsKIH0KIAotc3RkOjpzdHJpbmcgZ2V0RnVsbEZpbGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBjdXJyZW50UGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCkKLXsKLSAgc3RkOjpzdHJpbmcgZnVsbFBhdGggPSBwYXRoOwotCi0gIGlmICghY21TeXN0ZW1Ub29sczo6RmlsZUlzRnVsbFBhdGgocGF0aCkpIHsKLSAgICBmdWxsUGF0aCA9IGNtU3RyQ2F0KGN1cnJlbnRQYXRoLCAnLycsIHBhdGgpOwotICB9Ci0KLSAgcmV0dXJuIGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgoZnVsbFBhdGgpOwotfQotCiBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gZ2V0U291cmNlR3JvdXBGaWxlc1BhdGhzKAogICBjb25zdCBzdGQ6OnN0cmluZyYgcm9vdCwgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBmaWxlcykKIHsKQEAgLTEyNCw3ICsxMTIsOCBAQAogICAgICAgICBlcnJvck1zZyA9ICJDb3VsZCBub3QgY3JlYXRlIHNvdXJjZSBncm91cCBmb3IgZmlsZTogIiArIHNnRmlsZXNQYXRoOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICB9Ci0gICAgICBjb25zdCBzdGQ6OnN0cmluZyBmdWxsUGF0aCA9IGdldEZ1bGxGaWxlUGF0aChyb290LCBzZ0ZpbGVzUGF0aCk7CisgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmdWxsUGF0aCA9CisgICAgICAgIGNtU3lzdGVtVG9vbHM6OkNvbGxhcHNlRnVsbFBhdGgoc2dGaWxlc1BhdGgsIHJvb3QpOwogICAgICAgc2ctPkFkZEdyb3VwRmlsZShmdWxsUGF0aCk7CiAgICAgfQogICB9CkBAIC0yNTUsMTAgKzI0NCw4IEBACiAgICAgICBwYXJzZWRBcmd1bWVudHNba0ZpbGVzT3B0aW9uTmFtZV07CiAgICAgZm9yIChhdXRvIGNvbnN0JiBmaWxlc0FyZyA6IGZpbGVzQXJndW1lbnRzKSB7CiAgICAgICBzdGQ6OnN0cmluZyBzcmMgPSBmaWxlc0FyZzsKLSAgICAgIGlmICghY21TeXN0ZW1Ub29sczo6RmlsZUlzRnVsbFBhdGgoc3JjKSkgewotICAgICAgICBzcmMgPSBjbVN0ckNhdChtZi5HZXRDdXJyZW50U291cmNlRGlyZWN0b3J5KCksICcvJywgZmlsZXNBcmcpOwotICAgICAgfQotICAgICAgc3JjID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChzcmMpOworICAgICAgc3JjID0KKyAgICAgICAgY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChzcmMsIG1mLkdldEN1cnJlbnRTb3VyY2VEaXJlY3RvcnkoKSk7CiAgICAgICBzZy0+QWRkR3JvdXBGaWxlKHNyYyk7CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21TdGFuZGFyZExleGVyLmggYi9Tb3VyY2UvY21TdGFuZGFyZExleGVyLmgKaW5kZXggMTNmNzYyMi4uNTVkMjNjMSAxMDA2NDQKLS0tIGEvU291cmNlL2NtU3RhbmRhcmRMZXhlci5oCisrKyBiL1NvdXJjZS9jbVN0YW5kYXJkTGV4ZXIuaApAQCAtMyw2ICszLDE5IEBACiAjaWZuZGVmIGNtU3RhbmRhcmRMZXhlcl9oCiAjZGVmaW5lIGNtU3RhbmRhcmRMZXhlcl9oCiAKKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fc3VuKQorLyogUE9TSVggQVBJcyBhcmUgbmVlZGVkICovCisjICBkZWZpbmUgX1BPU0lYX0NfU09VUkNFIDIwMDgwOUwKKyNlbmRpZgorI2lmIGRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fY3BsdXNwbHVzKQorLyogQyBzb3VyY2VzOiBmb3IgZmlsZW5vIGFuZCBzdHJkdXAgKi8KKyMgIGRlZmluZSBfWE9QRU5fU09VUkNFIDYwMAorI2VuZGlmCisjaWYgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKQorLyogRm9yIGlzYXNjaWkgKi8KKyMgIGRlZmluZSBfWE9QRU5fU09VUkNFIDcwMAorI2VuZGlmCisKICNpbmNsdWRlICJjbXN5cy9Db25maWd1cmUuaCIgLy8gSVdZVSBwcmFnbWE6IGtlZXAKIAogLyogRGlzYWJsZSBzb21lIHdhcm5pbmdzLiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVN0YXRlLmN4eCBiL1NvdXJjZS9jbVN0YXRlLmN4eAppbmRleCA5ZmM3NjE1Li41YTExM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21TdGF0ZS5jeHgKKysrIGIvU291cmNlL2NtU3RhdGUuY3h4CkBAIC0zNCwzMCArMzQsNDQgQEAKIAogY21TdGF0ZTo6fmNtU3RhdGUoKSA9IGRlZmF1bHQ7CiAKLWNvbnN0IGNoYXIqIGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKGNtU3RhdGVFbnVtczo6VGFyZ2V0VHlwZSB0YXJnZXRUeXBlKQorY29uc3Qgc3RkOjpzdHJpbmcmIGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKAorICBjbVN0YXRlRW51bXM6OlRhcmdldFR5cGUgdGFyZ2V0VHlwZSkKIHsKKyNkZWZpbmUgTUFLRV9TVEFUSUNfUFJPUChQUk9QKSBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgcHJvcCMjUFJPUCA9ICNQUk9QCisgIE1BS0VfU1RBVElDX1BST1AoU1RBVElDX0xJQlJBUlkpOworICBNQUtFX1NUQVRJQ19QUk9QKE1PRFVMRV9MSUJSQVJZKTsKKyAgTUFLRV9TVEFUSUNfUFJPUChTSEFSRURfTElCUkFSWSk7CisgIE1BS0VfU1RBVElDX1BST1AoT0JKRUNUX0xJQlJBUlkpOworICBNQUtFX1NUQVRJQ19QUk9QKEVYRUNVVEFCTEUpOworICBNQUtFX1NUQVRJQ19QUk9QKFVUSUxJVFkpOworICBNQUtFX1NUQVRJQ19QUk9QKEdMT0JBTF9UQVJHRVQpOworICBNQUtFX1NUQVRJQ19QUk9QKElOVEVSRkFDRV9MSUJSQVJZKTsKKyAgTUFLRV9TVEFUSUNfUFJPUChVTktOT1dOX0xJQlJBUlkpOworICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgcHJvcEVtcHR5OworI3VuZGVmIE1BS0VfU1RBVElDX1BST1AKKwogICBzd2l0Y2ggKHRhcmdldFR5cGUpIHsKICAgICBjYXNlIGNtU3RhdGVFbnVtczo6U1RBVElDX0xJQlJBUlk6Ci0gICAgICByZXR1cm4gIlNUQVRJQ19MSUJSQVJZIjsKKyAgICAgIHJldHVybiBwcm9wU1RBVElDX0xJQlJBUlk7CiAgICAgY2FzZSBjbVN0YXRlRW51bXM6Ok1PRFVMRV9MSUJSQVJZOgotICAgICAgcmV0dXJuICJNT0RVTEVfTElCUkFSWSI7CisgICAgICByZXR1cm4gcHJvcE1PRFVMRV9MSUJSQVJZOwogICAgIGNhc2UgY21TdGF0ZUVudW1zOjpTSEFSRURfTElCUkFSWToKLSAgICAgIHJldHVybiAiU0hBUkVEX0xJQlJBUlkiOworICAgICAgcmV0dXJuIHByb3BTSEFSRURfTElCUkFSWTsKICAgICBjYXNlIGNtU3RhdGVFbnVtczo6T0JKRUNUX0xJQlJBUlk6Ci0gICAgICByZXR1cm4gIk9CSkVDVF9MSUJSQVJZIjsKKyAgICAgIHJldHVybiBwcm9wT0JKRUNUX0xJQlJBUlk7CiAgICAgY2FzZSBjbVN0YXRlRW51bXM6OkVYRUNVVEFCTEU6Ci0gICAgICByZXR1cm4gIkVYRUNVVEFCTEUiOworICAgICAgcmV0dXJuIHByb3BFWEVDVVRBQkxFOwogICAgIGNhc2UgY21TdGF0ZUVudW1zOjpVVElMSVRZOgotICAgICAgcmV0dXJuICJVVElMSVRZIjsKKyAgICAgIHJldHVybiBwcm9wVVRJTElUWTsKICAgICBjYXNlIGNtU3RhdGVFbnVtczo6R0xPQkFMX1RBUkdFVDoKLSAgICAgIHJldHVybiAiR0xPQkFMX1RBUkdFVCI7CisgICAgICByZXR1cm4gcHJvcEdMT0JBTF9UQVJHRVQ7CiAgICAgY2FzZSBjbVN0YXRlRW51bXM6OklOVEVSRkFDRV9MSUJSQVJZOgotICAgICAgcmV0dXJuICJJTlRFUkZBQ0VfTElCUkFSWSI7CisgICAgICByZXR1cm4gcHJvcElOVEVSRkFDRV9MSUJSQVJZOwogICAgIGNhc2UgY21TdGF0ZUVudW1zOjpVTktOT1dOX0xJQlJBUlk6Ci0gICAgICByZXR1cm4gIlVOS05PV05fTElCUkFSWSI7CisgICAgICByZXR1cm4gcHJvcFVOS05PV05fTElCUkFSWTsKICAgfQogICBhc3NlcnQoZmFsc2UgJiYgIlVuZXhwZWN0ZWQgdGFyZ2V0IHR5cGUiKTsKLSAgcmV0dXJuIG51bGxwdHI7CisgIHJldHVybiBwcm9wRW1wdHk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHN0ZDo6c3RyaW5nLCA3PiBjbUNhY2hlRW50cnlUeXBlcyA9IHsKQEAgLTEzMiwyMyArMTQ2LDIyIEBACiAgIHJldHVybiBkZWZpbml0aW9uczsKIH0KIAotY29uc3QgY2hhciogY21TdGF0ZTo6R2V0Q2FjaGVFbnRyeVZhbHVlKHN0ZDo6c3RyaW5nIGNvbnN0JiBrZXkpIGNvbnN0CitjbVByb3AgY21TdGF0ZTo6R2V0Q2FjaGVFbnRyeVZhbHVlKHN0ZDo6c3RyaW5nIGNvbnN0JiBrZXkpIGNvbnN0CiB7CiAgIGNtQ2FjaGVNYW5hZ2VyOjpDYWNoZUVudHJ5KiBlID0gdGhpcy0+Q2FjaGVNYW5hZ2VyLT5HZXRDYWNoZUVudHJ5KGtleSk7CiAgIGlmICghZSkgewogICAgIHJldHVybiBudWxscHRyOwogICB9Ci0gIHJldHVybiBlLT5WYWx1ZS5jX3N0cigpOworICByZXR1cm4gJmUtPlZhbHVlOwogfQogCiBzdGQ6OnN0cmluZyBjbVN0YXRlOjpHZXRTYWZlQ2FjaGVFbnRyeVZhbHVlKHN0ZDo6c3RyaW5nIGNvbnN0JiBrZXkpIGNvbnN0CiB7Ci0gIHN0ZDo6c3RyaW5nIHJldHZhbDsKLSAgYXV0byB2YWwgPSB0aGlzLT5HZXRDYWNoZUVudHJ5VmFsdWUoa2V5KTsKKyAgY21Qcm9wIHZhbCA9IHRoaXMtPkdldENhY2hlRW50cnlWYWx1ZShrZXkpOwogICBpZiAodmFsKSB7Ci0gICAgcmV0dmFsID0gdmFsOworICAgIHJldHVybiAqdmFsOwogICB9Ci0gIHJldHVybiByZXR2YWw7CisgIHJldHVybiBzdGQ6OnN0cmluZygpOwogfQogCiBjb25zdCBzdGQ6OnN0cmluZyogY21TdGF0ZTo6R2V0SW5pdGlhbGl6ZWRDYWNoZVZhbHVlKApAQCAtMTkzLDggKzIwNiw4IEBACiAgIHJldHVybiBpdC5HZXRQcm9wZXJ0eUxpc3QoKTsKIH0KIAotY29uc3QgY2hhciogY21TdGF0ZTo6R2V0Q2FjaGVFbnRyeVByb3BlcnR5KHN0ZDo6c3RyaW5nIGNvbnN0JiBrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QmIHByb3BlcnR5TmFtZSkKK2NtUHJvcCBjbVN0YXRlOjpHZXRDYWNoZUVudHJ5UHJvcGVydHkoc3RkOjpzdHJpbmcgY29uc3QmIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QmIHByb3BlcnR5TmFtZSkKIHsKICAgY21DYWNoZU1hbmFnZXI6OkNhY2hlSXRlcmF0b3IgaXQgPSB0aGlzLT5DYWNoZU1hbmFnZXItPkdldENhY2hlSXRlcmF0b3Ioa2V5KTsKICAgaWYgKCFpdC5Qcm9wZXJ0eUV4aXN0cyhwcm9wZXJ0eU5hbWUpKSB7CkBAIC0zMzUsOCArMzQ4LDggQEAKIAogdm9pZCBjbVN0YXRlOjpEZWZpbmVQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21Qcm9wZXJ0eTo6U2NvcGVUeXBlIHNjb3BlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBTaG9ydERlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBGdWxsRGVzY3JpcHRpb24sIGJvb2wgY2hhaW5lZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIFNob3J0RGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBGdWxsRGVzY3JpcHRpb24sIGJvb2wgY2hhaW5lZCkKIHsKICAgdGhpcy0+UHJvcGVydHlEZWZpbml0aW9uc1tzY29wZV0uRGVmaW5lUHJvcGVydHkoCiAgICAgbmFtZSwgc2NvcGUsIFNob3J0RGVzY3JpcHRpb24sIEZ1bGxEZXNjcmlwdGlvbiwgY2hhaW5lZCk7CkBAIC01NzMsNyArNTg2LDcgQEAKICAgdGhpcy0+R2xvYmFsUHJvcGVydGllcy5BcHBlbmRQcm9wZXJ0eShwcm9wLCB2YWx1ZSwgYXNTdHJpbmcpOwogfQogCi1jb25zdCBjaGFyKiBjbVN0YXRlOjpHZXRHbG9iYWxQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCkKK2NtUHJvcCBjbVN0YXRlOjpHZXRHbG9iYWxQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCkKIHsKICAgaWYgKHByb3AgPT0gIkNBQ0hFX1ZBUklBQkxFUyIpIHsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gY2FjaGVLZXlzID0gdGhpcy0+R2V0Q2FjaGVFbnRyeUtleXMoKTsKQEAgLTU5NywzMSArNjEwLDQ5IEBACiAgIH0KICNkZWZpbmUgU1RSSU5HX0xJU1RfRUxFTUVOVChGKSAiOyIgI0YKICAgaWYgKHByb3AgPT0gIkNNQUtFX0NfS05PV05fRkVBVFVSRVMiKSB7Ci0gICAgcmV0dXJuICZGT1JfRUFDSF9DX0ZFQVRVUkUoU1RSSU5HX0xJU1RfRUxFTUVOVClbMV07CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIHNfb3V0KAorICAgICAgJkZPUl9FQUNIX0NfRkVBVFVSRShTVFJJTkdfTElTVF9FTEVNRU5UKVsxXSk7CisgICAgcmV0dXJuICZzX291dDsKICAgfQogICBpZiAocHJvcCA9PSAiQ01BS0VfQzkwX0tOT1dOX0ZFQVRVUkVTIikgewotICAgIHJldHVybiAmRk9SX0VBQ0hfQzkwX0ZFQVRVUkUoU1RSSU5HX0xJU1RfRUxFTUVOVClbMV07CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIHNfb3V0KAorICAgICAgJkZPUl9FQUNIX0M5MF9GRUFUVVJFKFNUUklOR19MSVNUX0VMRU1FTlQpWzFdKTsKKyAgICByZXR1cm4gJnNfb3V0OwogICB9CiAgIGlmIChwcm9wID09ICJDTUFLRV9DOTlfS05PV05fRkVBVFVSRVMiKSB7Ci0gICAgcmV0dXJuICZGT1JfRUFDSF9DOTlfRkVBVFVSRShTVFJJTkdfTElTVF9FTEVNRU5UKVsxXTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgc19vdXQoCisgICAgICAmRk9SX0VBQ0hfQzk5X0ZFQVRVUkUoU1RSSU5HX0xJU1RfRUxFTUVOVClbMV0pOworICAgIHJldHVybiAmc19vdXQ7CiAgIH0KICAgaWYgKHByb3AgPT0gIkNNQUtFX0MxMV9LTk9XTl9GRUFUVVJFUyIpIHsKLSAgICByZXR1cm4gJkZPUl9FQUNIX0MxMV9GRUFUVVJFKFNUUklOR19MSVNUX0VMRU1FTlQpWzFdOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBzX291dCgKKyAgICAgICZGT1JfRUFDSF9DMTFfRkVBVFVSRShTVFJJTkdfTElTVF9FTEVNRU5UKVsxXSk7CisgICAgcmV0dXJuICZzX291dDsKICAgfQogICBpZiAocHJvcCA9PSAiQ01BS0VfQ1hYX0tOT1dOX0ZFQVRVUkVTIikgewotICAgIHJldHVybiAmRk9SX0VBQ0hfQ1hYX0ZFQVRVUkUoU1RSSU5HX0xJU1RfRUxFTUVOVClbMV07CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIHNfb3V0KAorICAgICAgJkZPUl9FQUNIX0NYWF9GRUFUVVJFKFNUUklOR19MSVNUX0VMRU1FTlQpWzFdKTsKKyAgICByZXR1cm4gJnNfb3V0OwogICB9CiAgIGlmIChwcm9wID09ICJDTUFLRV9DWFg5OF9LTk9XTl9GRUFUVVJFUyIpIHsKLSAgICByZXR1cm4gJkZPUl9FQUNIX0NYWDk4X0ZFQVRVUkUoU1RSSU5HX0xJU1RfRUxFTUVOVClbMV07CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIHNfb3V0KAorICAgICAgJkZPUl9FQUNIX0NYWDk4X0ZFQVRVUkUoU1RSSU5HX0xJU1RfRUxFTUVOVClbMV0pOworICAgIHJldHVybiAmc19vdXQ7CiAgIH0KICAgaWYgKHByb3AgPT0gIkNNQUtFX0NYWDExX0tOT1dOX0ZFQVRVUkVTIikgewotICAgIHJldHVybiAmRk9SX0VBQ0hfQ1hYMTFfRkVBVFVSRShTVFJJTkdfTElTVF9FTEVNRU5UKVsxXTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgc19vdXQoCisgICAgICAmRk9SX0VBQ0hfQ1hYMTFfRkVBVFVSRShTVFJJTkdfTElTVF9FTEVNRU5UKVsxXSk7CisgICAgcmV0dXJuICZzX291dDsKICAgfQogICBpZiAocHJvcCA9PSAiQ01BS0VfQ1hYMTRfS05PV05fRkVBVFVSRVMiKSB7Ci0gICAgcmV0dXJuICZGT1JfRUFDSF9DWFgxNF9GRUFUVVJFKFNUUklOR19MSVNUX0VMRU1FTlQpWzFdOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBzX291dCgKKyAgICAgICZGT1JfRUFDSF9DWFgxNF9GRUFUVVJFKFNUUklOR19MSVNUX0VMRU1FTlQpWzFdKTsKKyAgICByZXR1cm4gJnNfb3V0OwogICB9CiAgIGlmIChwcm9wID09ICJDTUFLRV9DVURBX0tOT1dOX0ZFQVRVUkVTIikgewotICAgIHJldHVybiAmRk9SX0VBQ0hfQ1VEQV9GRUFUVVJFKFNUUklOR19MSVNUX0VMRU1FTlQpWzFdOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBzX291dCgKKyAgICAgICZGT1JfRUFDSF9DVURBX0ZFQVRVUkUoU1RSSU5HX0xJU1RfRUxFTUVOVClbMV0pOworICAgIHJldHVybiAmc19vdXQ7CiAgIH0KIAogI3VuZGVmIFNUUklOR19MSVNUX0VMRU1FTlQKQEAgLTYzMCw3ICs2NjEsOCBAQAogCiBib29sIGNtU3RhdGU6OkdldEdsb2JhbFByb3BlcnR5QXNCb29sKGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wKQogewotICByZXR1cm4gY21Jc09uKHRoaXMtPkdldEdsb2JhbFByb3BlcnR5KHByb3ApKTsKKyAgY21Qcm9wIHAgPSB0aGlzLT5HZXRHbG9iYWxQcm9wZXJ0eShwcm9wKTsKKyAgcmV0dXJuIHAgJiYgY21Jc09uKCpwKTsKIH0KIAogdm9pZCBjbVN0YXRlOjpTZXRTb3VyY2VEaXJlY3Rvcnkoc3RkOjpzdHJpbmcgY29uc3QmIHNvdXJjZURpcmVjdG9yeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVN0YXRlLmggYi9Tb3VyY2UvY21TdGF0ZS5oCmluZGV4IDZlZTJiMGMuLmUzZmJmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVN0YXRlLmgKKysrIGIvU291cmNlL2NtU3RhdGUuaApAQCAtMzAsNiArMzAsOCBAQAogY2xhc3MgY21NZXNzZW5nZXI7CiBjbGFzcyBjbUV4ZWN1dGlvblN0YXR1czsKIAordXNpbmcgY21Qcm9wID0gY29uc3Qgc3RkOjpzdHJpbmcqOworCiBjbGFzcyBjbVN0YXRlCiB7CiAgIGZyaWVuZCBjbGFzcyBjbVN0YXRlU25hcHNob3Q7CkBAIC01MSw3ICs1Myw4IEBACiAgICAgQ1BhY2ssCiAgIH07CiAKLSAgc3RhdGljIGNvbnN0IGNoYXIqIEdldFRhcmdldFR5cGVOYW1lKGNtU3RhdGVFbnVtczo6VGFyZ2V0VHlwZSB0YXJnZXRUeXBlKTsKKyAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nJiBHZXRUYXJnZXRUeXBlTmFtZSgKKyAgICBjbVN0YXRlRW51bXM6OlRhcmdldFR5cGUgdGFyZ2V0VHlwZSk7CiAKICAgY21TdGF0ZVNuYXBzaG90IENyZWF0ZUJhc2VTbmFwc2hvdCgpOwogICBjbVN0YXRlU25hcHNob3QgQ3JlYXRlQnVpbGRzeXN0ZW1EaXJlY3RvcnlTbmFwc2hvdCgKQEAgLTg3LDcgKzkwLDcgQEAKICAgYm9vbCBEZWxldGVDYWNoZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCk7CiAKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldENhY2hlRW50cnlLZXlzKCkgY29uc3Q7Ci0gIGNvbnN0IGNoYXIqIEdldENhY2hlRW50cnlWYWx1ZShzdGQ6OnN0cmluZyBjb25zdCYga2V5KSBjb25zdDsKKyAgY21Qcm9wIEdldENhY2hlRW50cnlWYWx1ZShzdGQ6OnN0cmluZyBjb25zdCYga2V5KSBjb25zdDsKICAgc3RkOjpzdHJpbmcgR2V0U2FmZUNhY2hlRW50cnlWYWx1ZShzdGQ6OnN0cmluZyBjb25zdCYga2V5KSBjb25zdDsKICAgY29uc3Qgc3RkOjpzdHJpbmcqIEdldEluaXRpYWxpemVkQ2FjaGVWYWx1ZShzdGQ6OnN0cmluZyBjb25zdCYga2V5KSBjb25zdDsKICAgY21TdGF0ZUVudW1zOjpDYWNoZUVudHJ5VHlwZSBHZXRDYWNoZUVudHJ5VHlwZShzdGQ6OnN0cmluZyBjb25zdCYga2V5KSBjb25zdDsKQEAgLTEwMiw4ICsxMDUsOCBAQAogICB2b2lkIFNldENhY2hlRW50cnlCb29sUHJvcGVydHkoc3RkOjpzdHJpbmcgY29uc3QmIGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBwcm9wZXJ0eU5hbWUsIGJvb2wgdmFsdWUpOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0Q2FjaGVFbnRyeVByb3BlcnR5TGlzdChzdGQ6OnN0cmluZyBjb25zdCYga2V5KTsKLSAgY29uc3QgY2hhciogR2V0Q2FjaGVFbnRyeVByb3BlcnR5KHN0ZDo6c3RyaW5nIGNvbnN0JiBrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCYgcHJvcGVydHlOYW1lKTsKKyAgY21Qcm9wIEdldENhY2hlRW50cnlQcm9wZXJ0eShzdGQ6OnN0cmluZyBjb25zdCYga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBwcm9wZXJ0eU5hbWUpOwogICBib29sIEdldENhY2hlRW50cnlQcm9wZXJ0eUFzQm9vbChzdGQ6OnN0cmluZyBjb25zdCYga2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCYgcHJvcGVydHlOYW1lKTsKICAgdm9pZCBBcHBlbmRDYWNoZUVudHJ5UHJvcGVydHkoc3RkOjpzdHJpbmcgY29uc3QmIGtleSwKQEAgLTEyMSw4ICsxMjQsOCBAQAogICBjbVN0YXRlU25hcHNob3QgUmVzZXQoKTsKICAgLy8gRGVmaW5lIGEgcHJvcGVydHkKICAgdm9pZCBEZWZpbmVQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY21Qcm9wZXJ0eTo6U2NvcGVUeXBlIHNjb3BlLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIFNob3J0RGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogRnVsbERlc2NyaXB0aW9uLCBib29sIGNoYWluID0gZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBTaG9ydERlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBGdWxsRGVzY3JpcHRpb24sIGJvb2wgY2hhaW4gPSBmYWxzZSk7CiAKICAgLy8gZ2V0IHByb3BlcnR5IGRlZmluaXRpb24KICAgY21Qcm9wZXJ0eURlZmluaXRpb24gY29uc3QqIEdldFByb3BlcnR5RGVmaW5pdGlvbigKQEAgLTE3MSw3ICsxNzQsNyBAQAogICB2b2lkIFNldEdsb2JhbFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wLCBjb25zdCBjaGFyKiB2YWx1ZSk7CiAgIHZvaWQgQXBwZW5kR2xvYmFsUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHByb3AsIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFzU3RyaW5nID0gZmFsc2UpOwotICBjb25zdCBjaGFyKiBHZXRHbG9iYWxQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCk7CisgIGNtUHJvcCBHZXRHbG9iYWxQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCk7CiAgIGJvb2wgR2V0R2xvYmFsUHJvcGVydHlBc0Jvb2woY29uc3Qgc3RkOjpzdHJpbmcmIHByb3ApOwogCiAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBHZXRTb3VyY2VEaXJlY3RvcnkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVN0YXRlRGlyZWN0b3J5LmN4eCBiL1NvdXJjZS9jbVN0YXRlRGlyZWN0b3J5LmN4eAppbmRleCA0ZjAwM2VkLi5hNGZlNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21TdGF0ZURpcmVjdG9yeS5jeHgKKysrIGIvU291cmNlL2NtU3RhdGVEaXJlY3RvcnkuY3h4CkBAIC01NDgsMzIgKzU0OCwzMSBAQAogICB0aGlzLT5EaXJlY3RvcnlTdGF0ZS0+UHJvcGVydGllcy5BcHBlbmRQcm9wZXJ0eShwcm9wLCB2YWx1ZSwgYXNTdHJpbmcpOwogfQogCi1jb25zdCBjaGFyKiBjbVN0YXRlRGlyZWN0b3J5OjpHZXRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCkgY29uc3QKK2NtUHJvcCBjbVN0YXRlRGlyZWN0b3J5OjpHZXRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCkgY29uc3QKIHsKICAgY29uc3QgYm9vbCBjaGFpbiA9CiAgICAgdGhpcy0+U25hcHNob3RfLlN0YXRlLT5Jc1Byb3BlcnR5Q2hhaW5lZChwcm9wLCBjbVByb3BlcnR5OjpESVJFQ1RPUlkpOwogICByZXR1cm4gdGhpcy0+R2V0UHJvcGVydHkocHJvcCwgY2hhaW4pOwogfQogCi1jb25zdCBjaGFyKiBjbVN0YXRlRGlyZWN0b3J5OjpHZXRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2hhaW4pIGNvbnN0CitjbVByb3AgY21TdGF0ZURpcmVjdG9yeTo6R2V0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHByb3AsIGJvb2wgY2hhaW4pIGNvbnN0CiB7CiAgIHN0YXRpYyBzdGQ6OnN0cmluZyBvdXRwdXQ7CiAgIG91dHB1dC5jbGVhcigpOwogICBpZiAocHJvcCA9PSAiUEFSRU5UX0RJUkVDVE9SWSIpIHsKICAgICBjbVN0YXRlU25hcHNob3QgcGFyZW50ID0gdGhpcy0+U25hcHNob3RfLkdldEJ1aWxkc3lzdGVtRGlyZWN0b3J5UGFyZW50KCk7CiAgICAgaWYgKHBhcmVudC5Jc1ZhbGlkKCkpIHsKLSAgICAgIHJldHVybiBwYXJlbnQuR2V0RGlyZWN0b3J5KCkuR2V0Q3VycmVudFNvdXJjZSgpLmNfc3RyKCk7CisgICAgICByZXR1cm4gJnBhcmVudC5HZXREaXJlY3RvcnkoKS5HZXRDdXJyZW50U291cmNlKCk7CiAgICAgfQotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gJm91dHB1dDsKICAgfQogICBpZiAocHJvcCA9PSBrQklOQVJZX0RJUikgewogICAgIG91dHB1dCA9IHRoaXMtPkdldEN1cnJlbnRCaW5hcnkoKTsKLSAgICByZXR1cm4gb3V0cHV0LmNfc3RyKCk7CisgICAgcmV0dXJuICZvdXRwdXQ7CiAgIH0KICAgaWYgKHByb3AgPT0ga1NPVVJDRV9ESVIpIHsKICAgICBvdXRwdXQgPSB0aGlzLT5HZXRDdXJyZW50U291cmNlKCk7Ci0gICAgcmV0dXJuIG91dHB1dC5jX3N0cigpOworICAgIHJldHVybiAmb3V0cHV0OwogICB9CiAgIGlmIChwcm9wID09IGtTVUJESVJFQ1RPUklFUykgewogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjaGlsZF9kaXJzOwpAQCAtNTg0LDExICs1ODMsMTEgQEAKICAgICAgIGNoaWxkX2RpcnMucHVzaF9iYWNrKGNpLkdldERpcmVjdG9yeSgpLkdldEN1cnJlbnRTb3VyY2UoKSk7CiAgICAgfQogICAgIG91dHB1dCA9IGNtSm9pbihjaGlsZF9kaXJzLCAiOyIpOwotICAgIHJldHVybiBvdXRwdXQuY19zdHIoKTsKKyAgICByZXR1cm4gJm91dHB1dDsKICAgfQogICBpZiAocHJvcCA9PSBrQlVJTERTWVNURU1fVEFSR0VUUykgewogICAgIG91dHB1dCA9IGNtSm9pbih0aGlzLT5EaXJlY3RvcnlTdGF0ZS0+Tm9ybWFsVGFyZ2V0TmFtZXMsICI7Iik7Ci0gICAgcmV0dXJuIG91dHB1dC5jX3N0cigpOworICAgIHJldHVybiAmb3V0cHV0OwogICB9CiAKICAgaWYgKHByb3AgPT0gIkxJU1RGSUxFX1NUQUNLIikgewpAQCAtNjAwLDQxICs1OTksNDEgQEAKICAgICB9CiAgICAgc3RkOjpyZXZlcnNlKGxpc3RGaWxlcy5iZWdpbigpLCBsaXN0RmlsZXMuZW5kKCkpOwogICAgIG91dHB1dCA9IGNtSm9pbihsaXN0RmlsZXMsICI7Iik7Ci0gICAgcmV0dXJuIG91dHB1dC5jX3N0cigpOworICAgIHJldHVybiAmb3V0cHV0OwogICB9CiAgIGlmIChwcm9wID09ICJDQUNIRV9WQVJJQUJMRVMiKSB7CiAgICAgb3V0cHV0ID0gY21Kb2luKHRoaXMtPlNuYXBzaG90Xy5TdGF0ZS0+R2V0Q2FjaGVFbnRyeUtleXMoKSwgIjsiKTsKLSAgICByZXR1cm4gb3V0cHV0LmNfc3RyKCk7CisgICAgcmV0dXJuICZvdXRwdXQ7CiAgIH0KICAgaWYgKHByb3AgPT0gIlZBUklBQkxFUyIpIHsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcmVzID0gdGhpcy0+U25hcHNob3RfLkNsb3N1cmVLZXlzKCk7CiAgICAgY206OmFwcGVuZChyZXMsIHRoaXMtPlNuYXBzaG90Xy5TdGF0ZS0+R2V0Q2FjaGVFbnRyeUtleXMoKSk7CiAgICAgc3RkOjpzb3J0KHJlcy5iZWdpbigpLCByZXMuZW5kKCkpOwogICAgIG91dHB1dCA9IGNtSm9pbihyZXMsICI7Iik7Ci0gICAgcmV0dXJuIG91dHB1dC5jX3N0cigpOworICAgIHJldHVybiAmb3V0cHV0OwogICB9CiAgIGlmIChwcm9wID09ICJJTkNMVURFX0RJUkVDVE9SSUVTIikgewogICAgIG91dHB1dCA9IGNtSm9pbih0aGlzLT5HZXRJbmNsdWRlRGlyZWN0b3JpZXNFbnRyaWVzKCksICI7Iik7Ci0gICAgcmV0dXJuIG91dHB1dC5jX3N0cigpOworICAgIHJldHVybiAmb3V0cHV0OwogICB9CiAgIGlmIChwcm9wID09ICJDT01QSUxFX09QVElPTlMiKSB7CiAgICAgb3V0cHV0ID0gY21Kb2luKHRoaXMtPkdldENvbXBpbGVPcHRpb25zRW50cmllcygpLCAiOyIpOwotICAgIHJldHVybiBvdXRwdXQuY19zdHIoKTsKKyAgICByZXR1cm4gJm91dHB1dDsKICAgfQogICBpZiAocHJvcCA9PSAiQ09NUElMRV9ERUZJTklUSU9OUyIpIHsKICAgICBvdXRwdXQgPSBjbUpvaW4odGhpcy0+R2V0Q29tcGlsZURlZmluaXRpb25zRW50cmllcygpLCAiOyIpOwotICAgIHJldHVybiBvdXRwdXQuY19zdHIoKTsKKyAgICByZXR1cm4gJm91dHB1dDsKICAgfQogICBpZiAocHJvcCA9PSAiTElOS19PUFRJT05TIikgewogICAgIG91dHB1dCA9IGNtSm9pbih0aGlzLT5HZXRMaW5rT3B0aW9uc0VudHJpZXMoKSwgIjsiKTsKLSAgICByZXR1cm4gb3V0cHV0LmNfc3RyKCk7CisgICAgcmV0dXJuICZvdXRwdXQ7CiAgIH0KICAgaWYgKHByb3AgPT0gIkxJTktfRElSRUNUT1JJRVMiKSB7CiAgICAgb3V0cHV0ID0gY21Kb2luKHRoaXMtPkdldExpbmtEaXJlY3Rvcmllc0VudHJpZXMoKSwgIjsiKTsKLSAgICByZXR1cm4gb3V0cHV0LmNfc3RyKCk7CisgICAgcmV0dXJuICZvdXRwdXQ7CiAgIH0KIAotICBjb25zdCBjaGFyKiByZXRWYWwgPSB0aGlzLT5EaXJlY3RvcnlTdGF0ZS0+UHJvcGVydGllcy5HZXRQcm9wZXJ0eVZhbHVlKHByb3ApOworICBjbVByb3AgcmV0VmFsID0gdGhpcy0+RGlyZWN0b3J5U3RhdGUtPlByb3BlcnRpZXMuR2V0UHJvcGVydHlWYWx1ZShwcm9wKTsKICAgaWYgKCFyZXRWYWwgJiYgY2hhaW4pIHsKICAgICBjbVN0YXRlU25hcHNob3QgcGFyZW50U25hcHNob3QgPQogICAgICAgdGhpcy0+U25hcHNob3RfLkdldEJ1aWxkc3lzdGVtRGlyZWN0b3J5UGFyZW50KCk7CkBAIC02NDksNyArNjQ4LDggQEAKIAogYm9vbCBjbVN0YXRlRGlyZWN0b3J5OjpHZXRQcm9wZXJ0eUFzQm9vbChjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCkgY29uc3QKIHsKLSAgcmV0dXJuIGNtSXNPbih0aGlzLT5HZXRQcm9wZXJ0eShwcm9wKSk7CisgIGNtUHJvcCBwID0gdGhpcy0+R2V0UHJvcGVydHkocHJvcCk7CisgIHJldHVybiBwICYmIGNtSXNPbigqcCk7CiB9CiAKIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjbVN0YXRlRGlyZWN0b3J5OjpHZXRQcm9wZXJ0eUtleXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL2NtU3RhdGVEaXJlY3RvcnkuaCBiL1NvdXJjZS9jbVN0YXRlRGlyZWN0b3J5LmgKaW5kZXggNTNhMmQ1NC4uODE0NDE2MCAxMDA2NDQKLS0tIGEvU291cmNlL2NtU3RhdGVEaXJlY3RvcnkuaAorKysgYi9Tb3VyY2UvY21TdGF0ZURpcmVjdG9yeS5oCkBAIC0xNiw2ICsxNiw4IEBACiAjaW5jbHVkZSAiY21TdGF0ZVNuYXBzaG90LmgiCiAjaW5jbHVkZSAiY21TdHJpbmdBbGdvcml0aG1zLmgiCiAKK3VzaW5nIGNtUHJvcCA9IGNvbnN0IHN0ZDo6c3RyaW5nKjsKKwogY2xhc3MgY21TdGF0ZURpcmVjdG9yeQogewogICBjbVN0YXRlRGlyZWN0b3J5KApAQCAtODYsOCArODgsOCBAQAogICAgICAgICAgICAgICAgICAgIGNtTGlzdEZpbGVCYWNrdHJhY2UgY29uc3QmIGxmYnQpOwogICB2b2lkIEFwcGVuZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wLCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhc1N0cmluZywgY21MaXN0RmlsZUJhY2t0cmFjZSBjb25zdCYgbGZidCk7Ci0gIGNvbnN0IGNoYXIqIEdldFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wKSBjb25zdDsKLSAgY29uc3QgY2hhciogR2V0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHByb3AsIGJvb2wgY2hhaW4pIGNvbnN0OworICBjbVByb3AgR2V0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHByb3ApIGNvbnN0OworICBjbVByb3AgR2V0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHByb3AsIGJvb2wgY2hhaW4pIGNvbnN0OwogICBib29sIEdldFByb3BlcnR5QXNCb29sKGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wKSBjb25zdDsKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldFByb3BlcnR5S2V5cygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21TdGF0ZVNuYXBzaG90LmN4eCBiL1NvdXJjZS9jbVN0YXRlU25hcHNob3QuY3h4CmluZGV4IDgzMmU3NGUuLmQ3OWRmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVN0YXRlU25hcHNob3QuY3h4CisrKyBiL1NvdXJjZS9jbVN0YXRlU25hcHNob3QuY3h4CkBAIC00MTEsMTEgKzQxMSwxMiBAQAogICAgIHRoaXMtPlBvc2l0aW9uLT5CdWlsZFN5c3RlbURpcmVjdG9yeS0+TGlua0RpcmVjdG9yaWVzQmFja3RyYWNlcywKICAgICB0aGlzLT5Qb3NpdGlvbi0+TGlua0RpcmVjdG9yaWVzUG9zaXRpb24pOwogCi0gIGNvbnN0IGNoYXIqIGluY2x1ZGVfcmVnZXggPQorICBjbVByb3AgaW5jbHVkZV9yZWdleCA9CiAgICAgcGFyZW50LT5CdWlsZFN5c3RlbURpcmVjdG9yeS0+UHJvcGVydGllcy5HZXRQcm9wZXJ0eVZhbHVlKAogICAgICAgIklOQ0xVREVfUkVHVUxBUl9FWFBSRVNTSU9OIik7CiAgIHRoaXMtPlBvc2l0aW9uLT5CdWlsZFN5c3RlbURpcmVjdG9yeS0+UHJvcGVydGllcy5TZXRQcm9wZXJ0eSgKLSAgICAiSU5DTFVERV9SRUdVTEFSX0VYUFJFU1NJT04iLCBpbmNsdWRlX3JlZ2V4KTsKKyAgICAiSU5DTFVERV9SRUdVTEFSX0VYUFJFU1NJT04iLAorICAgIGluY2x1ZGVfcmVnZXggPyBpbmNsdWRlX3JlZ2V4LT5jX3N0cigpIDogbnVsbHB0cik7CiB9CiAKIGNtU3RhdGUqIGNtU3RhdGVTbmFwc2hvdDo6R2V0U3RhdGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL2NtU3RyaW5nQ29tbWFuZC5jeHggYi9Tb3VyY2UvY21TdHJpbmdDb21tYW5kLmN4eAppbmRleCA5MjEyMTk1Li43NjYyMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21TdHJpbmdDb21tYW5kLmN4eAorKysgYi9Tb3VyY2UvY21TdHJpbmdDb21tYW5kLmN4eApAQCAtMTI0LDYgKzEyNCwyNyBAQAogICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBIYW5kbGVIZXhDb21tYW5kKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjb25zdCYgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICBjbUV4ZWN1dGlvblN0YXR1cyYgc3RhdHVzKQoreworICBpZiAoYXJncy5zaXplKCkgIT0gMykgeworICAgIHN0YXR1cy5TZXRFcnJvcigiSW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMiKTsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgYXV0byBjb25zdCYgaW5zdHIgPSBhcmdzWzFdOworICBhdXRvIGNvbnN0JiBvdXR2YXIgPSBhcmdzWzJdOworICBzdGQ6OnN0cmluZyBvdXRwdXQoaW5zdHIuc2l6ZSgpICogMiwgJyAnKTsKKworICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGhleEluZGV4ID0gMDsKKyAgZm9yIChhdXRvIGNvbnN0JiBjIDogaW5zdHIpIHsKKyAgICBzcHJpbnRmKCZvdXRwdXRbaGV4SW5kZXhdLCAiJS4yeCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpICYgMHhGRik7CisgICAgaGV4SW5kZXggKz0gMjsKKyAgfQorCisgIHN0YXR1cy5HZXRNYWtlZmlsZSgpLkFkZERlZmluaXRpb24ob3V0dmFyLCBvdXRwdXQpOworICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBIYW5kbGVDb25maWd1cmVDb21tYW5kKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjb25zdCYgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUV4ZWN1dGlvblN0YXR1cyYgc3RhdHVzKQogewpAQCAtOTM2LDYgKzk1Nyw3IEBACiAgICAgeyAiVE9VUFBFUiJfcywgSGFuZGxlVG9VcHBlckNvbW1hbmQgfSwKICAgICB7ICJDT01QQVJFIl9zLCBIYW5kbGVDb21wYXJlQ29tbWFuZCB9LAogICAgIHsgIkFTQ0lJIl9zLCBIYW5kbGVBc2NpaUNvbW1hbmQgfSwKKyAgICB7ICJIRVgiX3MsIEhhbmRsZUhleENvbW1hbmQgfSwKICAgICB7ICJDT05GSUdVUkUiX3MsIEhhbmRsZUNvbmZpZ3VyZUNvbW1hbmQgfSwKICAgICB7ICJMRU5HVEgiX3MsIEhhbmRsZUxlbmd0aENvbW1hbmQgfSwKICAgICB7ICJBUFBFTkQiX3MsIEhhbmRsZUFwcGVuZENvbW1hbmQgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVN5c3RlbVRvb2xzLmN4eCBiL1NvdXJjZS9jbVN5c3RlbVRvb2xzLmN4eAppbmRleCA5MTI3YzUwLi5kMjkwYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21TeXN0ZW1Ub29scy5jeHgKKysrIGIvU291cmNlL2NtU3lzdGVtVG9vbHMuY3h4CkBAIC0xLDUgKzEsMTUgQEAKIC8qIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBPU0ktYXBwcm92ZWQgQlNEIDMtQ2xhdXNlIExpY2Vuc2UuICBTZWUgYWNjb21wYW55aW5nCiAgICBmaWxlIENvcHlyaWdodC50eHQgb3IgaHR0cHM6Ly9jbWFrZS5vcmcvbGljZW5zaW5nIGZvciBkZXRhaWxzLiAgKi8KKworI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19zdW4pCisvLyBQT1NJWCBBUElzIGFyZSBuZWVkZWQKKyMgIGRlZmluZSBfUE9TSVhfQ19TT1VSQ0UgMjAwODA5TAorI2VuZGlmCisjaWYgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKQorLy8gRm9yIGlzYXNjaWkKKyMgIGRlZmluZSBfWE9QRU5fU09VUkNFIDcwMAorI2VuZGlmCisKICNpbmNsdWRlICJjbVN5c3RlbVRvb2xzLmgiCiAKICNpbmNsdWRlIDxjbWV4dC9hbGdvcml0aG0+CkBAIC0yNSw2ICszNSw5IEBACiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKENNQUtFX0JPT1RTVFJBUCkKKyMgIGlmIGRlZmluZWQoX1dJTjMyKQorIyAgICBpbmNsdWRlIDxjbS9tZW1vcnk+CisjICBlbmRpZgogIyAgaW5jbHVkZSAiY21DcnlwdG9IYXNoLmgiCiAjZW5kaWYKIApAQCAtOTA4LDcgKzkyMSw2IEBACiAgIHN0ZDo6c3RyaW5nIHRodW1icHJpbnQ7CiAKICNpZiAhZGVmaW5lZChDTUFLRV9CT09UU1RSQVApICYmIGRlZmluZWQoX1dJTjMyKQotICBCWVRFKiBjZXJ0RGF0YSA9IE5VTEw7CiAgIENSWVBUX0lOVEVHRVJfQkxPQiBjcnlwdEJsb2I7CiAgIEhDRVJUU1RPUkUgY2VydFN0b3JlID0gTlVMTDsKICAgUENDRVJUX0NPTlRFWFQgY2VydENvbnRleHQgPSBOVUxMOwpAQCAtOTIwLDEyICs5MzIsMTIgQEAKICAgaWYgKGNlcnRGaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFICYmIGNlcnRGaWxlICE9IE5VTEwpIHsKICAgICBEV09SRCBmaWxlU2l6ZSA9IEdldEZpbGVTaXplKGNlcnRGaWxlLCBOVUxMKTsKICAgICBpZiAoZmlsZVNpemUgIT0gSU5WQUxJRF9GSUxFX1NJWkUpIHsKLSAgICAgIGNlcnREYXRhID0gbmV3IEJZVEVbZmlsZVNpemVdOworICAgICAgYXV0byBjZXJ0RGF0YSA9IGNtOjptYWtlX3VuaXF1ZTxCWVRFW10+KGZpbGVTaXplKTsKICAgICAgIGlmIChjZXJ0RGF0YSAhPSBOVUxMKSB7CiAgICAgICAgIERXT1JEIGR3UmVhZCA9IDA7Ci0gICAgICAgIGlmIChSZWFkRmlsZShjZXJ0RmlsZSwgY2VydERhdGEsIGZpbGVTaXplLCAmZHdSZWFkLCBOVUxMKSkgeworICAgICAgICBpZiAoUmVhZEZpbGUoY2VydEZpbGUsIGNlcnREYXRhLmdldCgpLCBmaWxlU2l6ZSwgJmR3UmVhZCwgTlVMTCkpIHsKICAgICAgICAgICBjcnlwdEJsb2IuY2JEYXRhID0gZmlsZVNpemU7Ci0gICAgICAgICAgY3J5cHRCbG9iLnBiRGF0YSA9IGNlcnREYXRhOworICAgICAgICAgIGNyeXB0QmxvYi5wYkRhdGEgPSBjZXJ0RGF0YS5nZXQoKTsKIAogICAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHRoaXMgaXMgYSB2YWxpZCBjZXJ0CiAgICAgICAgICAgaWYgKFBGWElzUEZYQmxvYigmY3J5cHRCbG9iKSkgewpAQCAtOTYxLDcgKzk3Myw2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGRlbGV0ZVtdIGNlcnREYXRhOwogICAgICAgfQogICAgIH0KICAgICBDbG9zZUhhbmRsZShjZXJ0RmlsZSk7CkBAIC0xMDU0LDggKzEwNjUsNyBAQAogICAgICAgICBpZiAodHlwZSA8IDAgJiYgIWNtU3lzdGVtVG9vbHM6OkZpbGVJc0RpcmVjdG9yeShmbmFtZSkpIHsKICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoc2ZuYW1lLnNpemUoKSA+PSBwcGF0aC5zaXplKCkgJiYKLSAgICAgICAgICAgIHNmbmFtZS5zdWJzdHIoMCwgcHBhdGguc2l6ZSgpKSA9PSBwcGF0aCkgeworICAgICAgICBpZiAoY21IYXNQcmVmaXgoc2ZuYW1lLCBwcGF0aCkpIHsKICAgICAgICAgICBmaWxlcy5wdXNoX2JhY2soZm5hbWUpOwogICAgICAgICAgIHJlcyA9IHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVRhcmdldC5jeHggYi9Tb3VyY2UvY21UYXJnZXQuY3h4CmluZGV4IDk3ZDdmY2UuLjkzYzE2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVRhcmdldC5jeHgKKysrIGIvU291cmNlL2NtVGFyZ2V0LmN4eApAQCAtNzgsNyArNzgsNyBAQAogfQogCiB0ZW1wbGF0ZSA8PgotY29uc3QgY2hhciogY21UYXJnZXRQcm9wZXJ0eUNvbXB1dGVyOjpHZXRTb3VyY2VzPGNtVGFyZ2V0PigKK2NtUHJvcCBjbVRhcmdldFByb3BlcnR5Q29tcHV0ZXI6OkdldFNvdXJjZXM8Y21UYXJnZXQ+KAogICBjbVRhcmdldCBjb25zdCogdGd0LCBjbU1lc3NlbmdlciogbWVzc2VuZ2VyLAogICBjbUxpc3RGaWxlQmFja3RyYWNlIGNvbnN0JiBjb250ZXh0KQogewpAQCAtMTU2LDcgKzE1Niw3IEBACiAgIH0KICAgc3RhdGljIHN0ZDo6c3RyaW5nIHNyY3M7CiAgIHNyY3MgPSBzcy5zdHIoKTsKLSAgcmV0dXJuIHNyY3MuY19zdHIoKTsKKyAgcmV0dXJuICZzcmNzOwogfQogCiBjbGFzcyBjbVRhcmdldEludGVybmFscwpAQCAtMzAwLDYgKzMwMCw3IEBACiAgICAgaW5pdFByb3AoIlBEQl9PVVRQVVRfRElSRUNUT1JZIik7CiAgICAgaW5pdFByb3AoIkNPTVBJTEVfUERCX09VVFBVVF9ESVJFQ1RPUlkiKTsKICAgICBpbml0UHJvcCgiRlJBTUVXT1JLIik7CisgICAgaW5pdFByb3AoIkZSQU1FV09SS19NVUxUSV9DT05GSUdfUE9TVEZJWCIpOwogICAgIGluaXRQcm9wKCJGb3J0cmFuX0ZPUk1BVCIpOwogICAgIGluaXRQcm9wKCJGb3J0cmFuX01PRFVMRV9ESVJFQ1RPUlkiKTsKICAgICBpbml0UHJvcCgiRm9ydHJhbl9DT01QSUxFUl9MQVVOQ0hFUiIpOwpAQCAtMzY3LDYgKzM2OCw3IEBACiAgICAgaW5pdFByb3AoIkRJU0FCTEVfUFJFQ09NUElMRV9IRUFERVJTIik7CiAgICAgaW5pdFByb3AoIlVOSVRZX0JVSUxEIik7CiAgICAgaW5pdFByb3BWYWx1ZSgiVU5JVFlfQlVJTERfQkFUQ0hfU0laRSIsICI4Iik7CisgICAgaW5pdFByb3BWYWx1ZSgiUENIX1dBUk5fSU5WQUxJRCIsICJPTiIpOwogI2lmZGVmIF9fQVBQTEVfXwogICAgIGlmICh0aGlzLT5HZXRHbG9iYWxHZW5lcmF0b3IoKS0+SXNYY29kZSgpKSB7CiAgICAgICBpbml0UHJvcCgiWENPREVfU0NIRU1FX0FERFJFU1NfU0FOSVRJWkVSIik7CkBAIC00MzUsNiArNDM3LDEzIEBACiAgICAgICAgICAgY21TdHJDYXQoY21TeXN0ZW1Ub29sczo6VXBwZXJDYXNlKGNvbmZpZ05hbWUpLCAiX1BPU1RGSVgiKTsKICAgICAgICAgaW5pdFByb3AocHJvcGVydHkpOwogICAgICAgfQorCisgICAgICBpZiAoaW1wbC0+VGFyZ2V0VHlwZSA9PSBjbVN0YXRlRW51bXM6OlNIQVJFRF9MSUJSQVJZIHx8CisgICAgICAgICAgaW1wbC0+VGFyZ2V0VHlwZSA9PSBjbVN0YXRlRW51bXM6OlNUQVRJQ19MSUJSQVJZKSB7CisgICAgICAgIHN0ZDo6c3RyaW5nIHByb3BlcnR5ID0gY21TdHJDYXQoIkZSQU1FV09SS19NVUxUSV9DT05GSUdfUE9TVEZJWF8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtU3lzdGVtVG9vbHM6OlVwcGVyQ2FzZShjb25maWdOYW1lKSk7CisgICAgICAgIGluaXRQcm9wKHByb3BlcnR5KTsKKyAgICAgIH0KICAgICB9CiAgIH0KIApAQCAtODgwLDcgKzg4OSw3IEBACiAgICAgICBjbUxpc3RGaWxlQ29udGV4dCBsZmMgPSBjbWQuc2Vjb25kOwogICAgICAgbGZjLkZpbGVQYXRoID0gY21EaXIuQ29udmVydFRvUmVsUGF0aElmTm90Q29udGFpbmVkKAogICAgICAgICBpbXBsLT5NYWtlZmlsZS0+R2V0U3RhdGUoKS0+R2V0U291cmNlRGlyZWN0b3J5KCksIGxmYy5GaWxlUGF0aCk7Ci0gICAgICBzIDw8ICIgKiAiIDw8IGxmYyA8PCBzdGQ6OmVuZGw7CisgICAgICBzIDw8ICIgKiAiIDw8IGxmYyA8PCAnXG4nOwogICAgIH0KICAgfQogfQpAQCAtOTk5LDcgKzEwMDgsNyBAQAogICAgIGRlcGVuZGVuY2llcyArPSAiOyI7CiAgICAgZGVwZW5kZW5jaWVzICs9IGxpYjsKICAgICBkZXBlbmRlbmNpZXMgKz0gIjsiOwotICAgIG1mLkFkZENhY2hlRGVmaW5pdGlvbih0YXJnZXRFbnRyeSwgZGVwZW5kZW5jaWVzLmNfc3RyKCksCisgICAgbWYuQWRkQ2FjaGVEZWZpbml0aW9uKHRhcmdldEVudHJ5LCBkZXBlbmRlbmNpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXBlbmRlbmNpZXMgZm9yIHRoZSB0YXJnZXQiLCBjbVN0YXRlRW51bXM6OlNUQVRJQyk7CiAgIH0KIH0KQEAgLTE2MDUsNyArMTYxNCw5IEBACiAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wLCBjbU1lc3NlbmdlciogbWVzc2VuZ2VyLAogICBjbUxpc3RGaWxlQmFja3RyYWNlIGNvbnN0JiBjb250ZXh0KSBjb25zdAogewotICByZXR1cm4gY21UYXJnZXRQcm9wZXJ0eUNvbXB1dGVyOjpHZXRQcm9wZXJ0eSh0aGlzLCBwcm9wLCBtZXNzZW5nZXIsIGNvbnRleHQpOworICBjbVByb3AgcmV0VmFsID0KKyAgICBjbVRhcmdldFByb3BlcnR5Q29tcHV0ZXI6OkdldFByb3BlcnR5KHRoaXMsIHByb3AsIG1lc3NlbmdlciwgY29udGV4dCk7CisgIHJldHVybiByZXRWYWwgPyByZXRWYWwtPmNfc3RyKCkgOiBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBjbVRhcmdldDo6R2V0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHByb3ApIGNvbnN0CkBAIC0xNjU4LDcgKzE2NjksNyBAQAogICAgIH0KICAgICAvLyB0aGUgdHlwZSBwcm9wZXJ0eSByZXR1cm5zIHdoYXQgdHlwZSB0aGUgdGFyZ2V0IGlzCiAgICAgaWYgKHByb3AgPT0gcHJvcFRZUEUpIHsKLSAgICAgIHJldHVybiBjbVN0YXRlOjpHZXRUYXJnZXRUeXBlTmFtZSh0aGlzLT5HZXRUeXBlKCkpOworICAgICAgcmV0dXJuIGNtU3RhdGU6OkdldFRhcmdldFR5cGVOYW1lKHRoaXMtPkdldFR5cGUoKSkuY19zdHIoKTsKICAgICB9CiAgICAgaWYgKHByb3AgPT0gcHJvcElOQ0xVREVfRElSRUNUT1JJRVMpIHsKICAgICAgIGlmIChpbXBsLT5JbmNsdWRlRGlyZWN0b3JpZXNFbnRyaWVzLmVtcHR5KCkpIHsKQEAgLTE3NjMsMTYgKzE3NzQsMjAgQEAKICAgICB9CiAgIH0KIAotICBjb25zdCBjaGFyKiByZXRWYWwgPSBpbXBsLT5Qcm9wZXJ0aWVzLkdldFByb3BlcnR5VmFsdWUocHJvcCk7CisgIGNtUHJvcCByZXRWYWwgPSBpbXBsLT5Qcm9wZXJ0aWVzLkdldFByb3BlcnR5VmFsdWUocHJvcCk7CiAgIGlmICghcmV0VmFsKSB7CiAgICAgY29uc3QgYm9vbCBjaGFpbiA9CiAgICAgICBpbXBsLT5NYWtlZmlsZS0+R2V0U3RhdGUoKS0+SXNQcm9wZXJ0eUNoYWluZWQocHJvcCwgY21Qcm9wZXJ0eTo6VEFSR0VUKTsKICAgICBpZiAoY2hhaW4pIHsKLSAgICAgIHJldHVybiBpbXBsLT5NYWtlZmlsZS0+R2V0U3RhdGVTbmFwc2hvdCgpLkdldERpcmVjdG9yeSgpLkdldFByb3BlcnR5KAorICAgICAgcmV0VmFsID0gaW1wbC0+TWFrZWZpbGUtPkdldFN0YXRlU25hcHNob3QoKS5HZXREaXJlY3RvcnkoKS5HZXRQcm9wZXJ0eSgKICAgICAgICAgcHJvcCwgY2hhaW4pOworICAgICAgaWYgKHJldFZhbCkgeworICAgICAgICByZXR1cm4gcmV0VmFsLT5jX3N0cigpOworICAgICAgfQogICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKICAgfQotICByZXR1cm4gcmV0VmFsOworICByZXR1cm4gcmV0VmFsLT5jX3N0cigpOwogfQogCiBjb25zdCBjaGFyKiBjbVRhcmdldDo6R2V0U2FmZVByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wKSBjb25zdApAQCAtMTkyMCw3ICsxOTM1LDcgQEAKICAgc3RkOjpzdHJpbmcgc3VmZml4OwogCiAgIGlmICh0aGlzLT5HZXRUeXBlKCkgIT0gY21TdGF0ZUVudW1zOjpJTlRFUkZBQ0VfTElCUkFSWSAmJgotICAgICAgdGhpcy0+R2V0TWFwcGVkQ29uZmlnKGRlc2lyZWRfY29uZmlnLCAmbG9jLCAmaW1wLCBzdWZmaXgpKSB7CisgICAgICB0aGlzLT5HZXRNYXBwZWRDb25maWcoZGVzaXJlZF9jb25maWcsIGxvYywgaW1wLCBzdWZmaXgpKSB7CiAgICAgc3dpdGNoIChhcnRpZmFjdCkgewogICAgICAgY2FzZSBjbVN0YXRlRW51bXM6OlJ1bnRpbWVCaW5hcnlBcnRpZmFjdDoKICAgICAgICAgaWYgKGxvYykgewpAQCAtMTk5MCw3ICsyMDA1LDcgQEAKIH0KIAogYm9vbCBjbVRhcmdldDo6R2V0TWFwcGVkQ29uZmlnKHN0ZDo6c3RyaW5nIGNvbnN0JiBkZXNpcmVkX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogbG9jLCBjb25zdCBjaGFyKiogaW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqJiBsb2MsIGNvbnN0IGNoYXIqJiBpbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcmIHN1ZmZpeCkgY29uc3QKIHsKICAgc3RkOjpzdHJpbmcgY29uZmlnX3VwcGVyOwpAQCAtMjAyOCwzMCArMjA0MywzMCBAQAogCiAgIC8vIElmIGEgbWFwcGluZyB3YXMgZm91bmQsIGNoZWNrIGl0cyBjb25maWd1cmF0aW9ucy4KICAgZm9yIChhdXRvIG1jaSA9IG1hcHBlZENvbmZpZ3MuYmVnaW4oKTsKLSAgICAgICAhKmxvYyAmJiAhKmltcCAmJiBtY2kgIT0gbWFwcGVkQ29uZmlncy5lbmQoKTsgKyttY2kpIHsKKyAgICAgICAhbG9jICYmICFpbXAgJiYgbWNpICE9IG1hcHBlZENvbmZpZ3MuZW5kKCk7ICsrbWNpKSB7CiAgICAgLy8gTG9vayBmb3IgdGhpcyBjb25maWd1cmF0aW9uLgogICAgIGlmIChtY2ktPmVtcHR5KCkpIHsKICAgICAgIC8vIEFuIGVtcHR5IHN0cmluZyBpbiB0aGUgbWFwcGluZyBoYXMgYSBzcGVjaWFsIG1lYW5pbmc6CiAgICAgICAvLyBsb29rIHVwIHRoZSBjb25maWctbGVzcyBwcm9wZXJ0aWVzLgotICAgICAgKmxvYyA9IHRoaXMtPkdldFByb3BlcnR5KGxvY1Byb3BCYXNlKTsKKyAgICAgIGxvYyA9IHRoaXMtPkdldFByb3BlcnR5KGxvY1Byb3BCYXNlKTsKICAgICAgIGlmIChhbGxvd0ltcCkgewotICAgICAgICAqaW1wID0gdGhpcy0+R2V0UHJvcGVydHkoIklNUE9SVEVEX0lNUExJQiIpOworICAgICAgICBpbXAgPSB0aGlzLT5HZXRQcm9wZXJ0eSgiSU1QT1JURURfSU1QTElCIik7CiAgICAgICB9CiAgICAgICAvLyBJZiBpdCB3YXMgZm91bmQsIHNldCB0aGUgc3VmZml4LgotICAgICAgaWYgKCpsb2MgfHwgKmltcCkgeworICAgICAgaWYgKGxvYyB8fCBpbXApIHsKICAgICAgICAgc3VmZml4LmNsZWFyKCk7CiAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgIHN0ZDo6c3RyaW5nIG1jVXBwZXIgPSBjbVN5c3RlbVRvb2xzOjpVcHBlckNhc2UoKm1jaSk7CiAgICAgICBzdGQ6OnN0cmluZyBsb2NQcm9wID0gY21TdHJDYXQobG9jUHJvcEJhc2UsICdfJywgbWNVcHBlcik7Ci0gICAgICAqbG9jID0gdGhpcy0+R2V0UHJvcGVydHkobG9jUHJvcCk7CisgICAgICBsb2MgPSB0aGlzLT5HZXRQcm9wZXJ0eShsb2NQcm9wKTsKICAgICAgIGlmIChhbGxvd0ltcCkgewogICAgICAgICBzdGQ6OnN0cmluZyBpbXBQcm9wID0gY21TdHJDYXQoIklNUE9SVEVEX0lNUExJQl8iLCBtY1VwcGVyKTsKLSAgICAgICAgKmltcCA9IHRoaXMtPkdldFByb3BlcnR5KGltcFByb3ApOworICAgICAgICBpbXAgPSB0aGlzLT5HZXRQcm9wZXJ0eShpbXBQcm9wKTsKICAgICAgIH0KIAogICAgICAgLy8gSWYgaXQgd2FzIGZvdW5kLCB1c2UgaXQgZm9yIGFsbCBwcm9wZXJ0aWVzIGJlbG93LgotICAgICAgaWYgKCpsb2MgfHwgKmltcCkgeworICAgICAgaWYgKGxvYyB8fCBpbXApIHsKICAgICAgICAgc3VmZml4ID0gY21TdHJDYXQoJ18nLCBtY1VwcGVyKTsKICAgICAgIH0KICAgICB9CkBAIC0yMDYwLDU5ICsyMDc1LDU5IEBACiAgIC8vIElmIHdlIG5lZWRlZCB0byBmaW5kIG9uZSBvZiB0aGUgbWFwcGVkIGNvbmZpZ3VyYXRpb25zIGJ1dCBkaWQgbm90CiAgIC8vIHRoZW4gdGhlIHRhcmdldCBsb2NhdGlvbiBpcyBub3QgZm91bmQuICBUaGUgcHJvamVjdCBkb2VzIG5vdCB3YW50CiAgIC8vIGFueSBvdGhlciBjb25maWd1cmF0aW9uLgotICBpZiAoIW1hcHBlZENvbmZpZ3MuZW1wdHkoKSAmJiAhKmxvYyAmJiAhKmltcCkgeworICBpZiAoIW1hcHBlZENvbmZpZ3MuZW1wdHkoKSAmJiAhbG9jICYmICFpbXApIHsKICAgICAvLyBJbnRlcmZhY2UgbGlicmFyaWVzIGFyZSBhbHdheXMgYXZhaWxhYmxlIGJlY2F1c2UgdGhlaXIKLSAgICAvLyBsaWJyYXJ5IG5hbWUgaXMgb3B0aW9uYWwgc28gaXQgaXMgb2theSB0byBsZWF2ZSAqbG9jIGVtcHR5LgorICAgIC8vIGxpYnJhcnkgbmFtZSBpcyBvcHRpb25hbCBzbyBpdCBpcyBva2F5IHRvIGxlYXZlIGxvYyBlbXB0eS4KICAgICByZXR1cm4gdGhpcy0+R2V0VHlwZSgpID09IGNtU3RhdGVFbnVtczo6SU5URVJGQUNFX0xJQlJBUlk7CiAgIH0KIAogICAvLyBJZiB3ZSBoYXZlIG5vdCB5ZXQgZm91bmQgaXQgdGhlbiB0aGVyZSBhcmUgbm8gbWFwcGVkCiAgIC8vIGNvbmZpZ3VyYXRpb25zLiAgTG9vayBmb3IgYW4gZXhhY3QtbWF0Y2guCi0gIGlmICghKmxvYyAmJiAhKmltcCkgeworICBpZiAoIWxvYyAmJiAhaW1wKSB7CiAgICAgc3RkOjpzdHJpbmcgbG9jUHJvcCA9IGNtU3RyQ2F0KGxvY1Byb3BCYXNlLCBzdWZmaXgpOwotICAgICpsb2MgPSB0aGlzLT5HZXRQcm9wZXJ0eShsb2NQcm9wKTsKKyAgICBsb2MgPSB0aGlzLT5HZXRQcm9wZXJ0eShsb2NQcm9wKTsKICAgICBpZiAoYWxsb3dJbXApIHsKICAgICAgIHN0ZDo6c3RyaW5nIGltcFByb3AgPSBjbVN0ckNhdCgiSU1QT1JURURfSU1QTElCIiwgc3VmZml4KTsKLSAgICAgICppbXAgPSB0aGlzLT5HZXRQcm9wZXJ0eShpbXBQcm9wKTsKKyAgICAgIGltcCA9IHRoaXMtPkdldFByb3BlcnR5KGltcFByb3ApOwogICAgIH0KICAgfQogCiAgIC8vIElmIHdlIGhhdmUgbm90IHlldCBmb3VuZCBpdCB0aGVuIHRoZXJlIGFyZSBubyBtYXBwZWQKICAgLy8gY29uZmlndXJhdGlvbnMgYW5kIG5vIGV4YWN0IG1hdGNoLgotICBpZiAoISpsb2MgJiYgISppbXApIHsKKyAgaWYgKCFsb2MgJiYgIWltcCkgewogICAgIC8vIFRoZSBzdWZmaXggY29tcHV0ZWQgYWJvdmUgaXMgbm90IHVzZWZ1bC4KICAgICBzdWZmaXguY2xlYXIoKTsKIAogICAgIC8vIExvb2sgZm9yIGEgY29uZmlndXJhdGlvbi1sZXNzIGxvY2F0aW9uLiAgVGhpcyBtYXkgYmUgc2V0IGJ5CiAgICAgLy8gbWFudWFsbHktd3JpdHRlbiBjb2RlLgotICAgICpsb2MgPSB0aGlzLT5HZXRQcm9wZXJ0eShsb2NQcm9wQmFzZSk7CisgICAgbG9jID0gdGhpcy0+R2V0UHJvcGVydHkobG9jUHJvcEJhc2UpOwogICAgIGlmIChhbGxvd0ltcCkgewotICAgICAgKmltcCA9IHRoaXMtPkdldFByb3BlcnR5KCJJTVBPUlRFRF9JTVBMSUIiKTsKKyAgICAgIGltcCA9IHRoaXMtPkdldFByb3BlcnR5KCJJTVBPUlRFRF9JTVBMSUIiKTsKICAgICB9CiAgIH0KIAogICAvLyBJZiB3ZSBoYXZlIG5vdCB5ZXQgZm91bmQgaXQgdGhlbiB0aGUgcHJvamVjdCBpcyB3aWxsaW5nIHRvIHRyeQogICAvLyBhbnkgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24uCi0gIGlmICghKmxvYyAmJiAhKmltcCkgeworICBpZiAoIWxvYyAmJiAhaW1wKSB7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGF2YWlsYWJsZUNvbmZpZ3M7CiAgICAgaWYgKGNvbnN0IGNoYXIqIGljb25maWdzID0gdGhpcy0+R2V0UHJvcGVydHkoIklNUE9SVEVEX0NPTkZJR1VSQVRJT05TIikpIHsKICAgICAgIGNtRXhwYW5kTGlzdChpY29uZmlncywgYXZhaWxhYmxlQ29uZmlncyk7CiAgICAgfQogICAgIGZvciAoYXV0byBhY2kgPSBhdmFpbGFibGVDb25maWdzLmJlZ2luKCk7Ci0gICAgICAgICAhKmxvYyAmJiAhKmltcCAmJiBhY2kgIT0gYXZhaWxhYmxlQ29uZmlncy5lbmQoKTsgKythY2kpIHsKKyAgICAgICAgICFsb2MgJiYgIWltcCAmJiBhY2kgIT0gYXZhaWxhYmxlQ29uZmlncy5lbmQoKTsgKythY2kpIHsKICAgICAgIHN1ZmZpeCA9IGNtU3RyQ2F0KCdfJywgY21TeXN0ZW1Ub29sczo6VXBwZXJDYXNlKCphY2kpKTsKICAgICAgIHN0ZDo6c3RyaW5nIGxvY1Byb3AgPSBjbVN0ckNhdChsb2NQcm9wQmFzZSwgc3VmZml4KTsKLSAgICAgICpsb2MgPSB0aGlzLT5HZXRQcm9wZXJ0eShsb2NQcm9wKTsKKyAgICAgIGxvYyA9IHRoaXMtPkdldFByb3BlcnR5KGxvY1Byb3ApOwogICAgICAgaWYgKGFsbG93SW1wKSB7CiAgICAgICAgIHN0ZDo6c3RyaW5nIGltcFByb3AgPSBjbVN0ckNhdCgiSU1QT1JURURfSU1QTElCIiwgc3VmZml4KTsKLSAgICAgICAgKmltcCA9IHRoaXMtPkdldFByb3BlcnR5KGltcFByb3ApOworICAgICAgICBpbXAgPSB0aGlzLT5HZXRQcm9wZXJ0eShpbXBQcm9wKTsKICAgICAgIH0KICAgICB9CiAgIH0KICAgLy8gSWYgd2UgaGF2ZSBub3QgeWV0IGZvdW5kIGl0IHRoZW4gdGhlIHRhcmdldCBsb2NhdGlvbiBpcyBub3QgYXZhaWxhYmxlLgotICBpZiAoISpsb2MgJiYgISppbXApIHsKKyAgaWYgKCFsb2MgJiYgIWltcCkgewogICAgIC8vIEludGVyZmFjZSBsaWJyYXJpZXMgYXJlIGFsd2F5cyBhdmFpbGFibGUgYmVjYXVzZSB0aGVpcgotICAgIC8vIGxpYnJhcnkgbmFtZSBpcyBvcHRpb25hbCBzbyBpdCBpcyBva2F5IHRvIGxlYXZlICpsb2MgZW1wdHkuCisgICAgLy8gbGlicmFyeSBuYW1lIGlzIG9wdGlvbmFsIHNvIGl0IGlzIG9rYXkgdG8gbGVhdmUgbG9jIGVtcHR5LgogICAgIHJldHVybiB0aGlzLT5HZXRUeXBlKCkgPT0gY21TdGF0ZUVudW1zOjpJTlRFUkZBQ0VfTElCUkFSWTsKICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21UYXJnZXQuaCBiL1NvdXJjZS9jbVRhcmdldC5oCmluZGV4IDI4NjkzM2IuLjQ2M2IyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVRhcmdldC5oCisrKyBiL1NvdXJjZS9jbVRhcmdldC5oCkBAIC0xOTEsOCArMTkxLDggQEAKICAgYm9vbCBJc0ltcG9ydGVkR2xvYmFsbHlWaXNpYmxlKCkgY29uc3Q7CiAgIGJvb2wgSXNQZXJDb25maWcoKSBjb25zdDsKIAotICBib29sIEdldE1hcHBlZENvbmZpZyhzdGQ6OnN0cmluZyBjb25zdCYgZGVzaXJlZF9jb25maWcsIGNvbnN0IGNoYXIqKiBsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBpbXAsIHN0ZDo6c3RyaW5nJiBzdWZmaXgpIGNvbnN0OworICBib29sIEdldE1hcHBlZENvbmZpZyhzdGQ6OnN0cmluZyBjb25zdCYgZGVzaXJlZF9jb25maWcsIGNvbnN0IGNoYXIqJiBsb2MsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqJiBpbXAsIHN0ZDo6c3RyaW5nJiBzdWZmaXgpIGNvbnN0OwogCiAgIC8vISBSZXR1cm4gd2hldGhlciB0aGlzIHRhcmdldCBpcyBhbiBleGVjdXRhYmxlIHdpdGggc3ltYm9sIGV4cG9ydHMgZW5hYmxlZC4KICAgYm9vbCBJc0V4ZWN1dGFibGVXaXRoRXhwb3J0cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtVGFyZ2V0UHJvcGVydHlDb21wdXRlci5oIGIvU291cmNlL2NtVGFyZ2V0UHJvcGVydHlDb21wdXRlci5oCmluZGV4IGRmMzRmMTguLjUzODdlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVRhcmdldFByb3BlcnR5Q29tcHV0ZXIuaAorKysgYi9Tb3VyY2UvY21UYXJnZXRQcm9wZXJ0eUNvbXB1dGVyLmgKQEAgLTE0LDE1ICsxNCwxNyBAQAogCiBjbGFzcyBjbU1lc3NlbmdlcjsKIAordXNpbmcgY21Qcm9wID0gY29uc3Qgc3RkOjpzdHJpbmcqOworCiBjbGFzcyBjbVRhcmdldFByb3BlcnR5Q29tcHV0ZXIKIHsKIHB1YmxpYzoKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldD4KLSAgc3RhdGljIGNvbnN0IGNoYXIqIEdldFByb3BlcnR5KFRhcmdldCBjb25zdCogdGd0LCBjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtTWVzc2VuZ2VyKiBtZXNzZW5nZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUxpc3RGaWxlQmFja3RyYWNlIGNvbnN0JiBjb250ZXh0KQorICBzdGF0aWMgY21Qcm9wIEdldFByb3BlcnR5KFRhcmdldCBjb25zdCogdGd0LCBjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbU1lc3NlbmdlciogbWVzc2VuZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtTGlzdEZpbGVCYWNrdHJhY2UgY29uc3QmIGNvbnRleHQpCiAgIHsKLSAgICBpZiAoY29uc3QgY2hhciogbG9jID0gR2V0TG9jYXRpb24odGd0LCBwcm9wLCBtZXNzZW5nZXIsIGNvbnRleHQpKSB7CisgICAgaWYgKGNtUHJvcCBsb2MgPSBHZXRMb2NhdGlvbih0Z3QsIHByb3AsIG1lc3NlbmdlciwgY29udGV4dCkpIHsKICAgICAgIHJldHVybiBsb2M7CiAgICAgfQogICAgIGlmIChjbVN5c3RlbVRvb2xzOjpHZXRGYXRhbEVycm9yT2NjdXJlZCgpKSB7CkBAIC01Miw5ICs1NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBjb25maWcpOwogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQ+Ci0gIHN0YXRpYyBjb25zdCBjaGFyKiBHZXRMb2NhdGlvbihUYXJnZXQgY29uc3QqIHRndCwgc3RkOjpzdHJpbmcgY29uc3QmIHByb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbU1lc3NlbmdlciogbWVzc2VuZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21MaXN0RmlsZUJhY2t0cmFjZSBjb25zdCYgY29udGV4dCkKKyAgc3RhdGljIGNtUHJvcCBHZXRMb2NhdGlvbihUYXJnZXQgY29uc3QqIHRndCwgc3RkOjpzdHJpbmcgY29uc3QmIHByb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21NZXNzZW5nZXIqIG1lc3NlbmdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbUxpc3RGaWxlQmFja3RyYWNlIGNvbnN0JiBjb250ZXh0KQogCiAgIHsKICAgICAvLyBXYXRjaCBmb3Igc3BlY2lhbCAiY29tcHV0ZWQiIHByb3BlcnRpZXMgdGhhdCBhcmUgZGVwZW5kZW50IG9uCkBAIC03MSw3ICs3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KSkgewogICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBDb21wdXRlTG9jYXRpb25Gb3JCdWlsZCh0Z3QpLmNfc3RyKCk7CisgICAgICAgIHJldHVybiAmQ29tcHV0ZUxvY2F0aW9uRm9yQnVpbGQodGd0KTsKICAgICAgIH0KIAogICAgICAgLy8gU3VwcG9ydCAiTE9DQVRJT05fPENPTkZJRz4iLgpAQCAtODIsNyArODQsNyBAQAogICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbmZpZ05hbWUgPSBwcm9wLnN1YnN0cig5KTsKLSAgICAgICAgcmV0dXJuIENvbXB1dGVMb2NhdGlvbih0Z3QsIGNvbmZpZ05hbWUpLmNfc3RyKCk7CisgICAgICAgIHJldHVybiAmQ29tcHV0ZUxvY2F0aW9uKHRndCwgY29uZmlnTmFtZSk7CiAgICAgICB9CiAKICAgICAgIC8vIFN1cHBvcnQgIjxDT05GSUc+X0xPQ0FUSU9OIi4KQEAgLTk1LDcgKzk3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCkpIHsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgIH0KLSAgICAgICAgICByZXR1cm4gQ29tcHV0ZUxvY2F0aW9uKHRndCwgY29uZmlnTmFtZSkuY19zdHIoKTsKKyAgICAgICAgICByZXR1cm4gJkNvbXB1dGVMb2NhdGlvbih0Z3QsIGNvbmZpZ05hbWUpOwogICAgICAgICB9CiAgICAgICB9CiAgICAgfQpAQCAtMTAzLDggKzEwNSw4IEBACiAgIH0KIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0PgotICBzdGF0aWMgY29uc3QgY2hhciogR2V0U291cmNlcyhUYXJnZXQgY29uc3QqIHRndCwgY21NZXNzZW5nZXIqIG1lc3NlbmdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21MaXN0RmlsZUJhY2t0cmFjZSBjb25zdCYgY29udGV4dCk7CisgIHN0YXRpYyBjbVByb3AgR2V0U291cmNlcyhUYXJnZXQgY29uc3QqIHRndCwgY21NZXNzZW5nZXIqIG1lc3NlbmdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtTGlzdEZpbGVCYWNrdHJhY2UgY29uc3QmIGNvbnRleHQpOwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21UZXN0LmN4eCBiL1NvdXJjZS9jbVRlc3QuY3h4CmluZGV4IDNiNzMxY2MuLjU2YzQ0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVRlc3QuY3h4CisrKyBiL1NvdXJjZS9jbVRlc3QuY3h4CkBAIC0zNCwxNSArMzQsMTYgQEAKIAogY29uc3QgY2hhciogY21UZXN0OjpHZXRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCkgY29uc3QKIHsKLSAgY29uc3QgY2hhciogcmV0VmFsID0gdGhpcy0+UHJvcGVydGllcy5HZXRQcm9wZXJ0eVZhbHVlKHByb3ApOworICBjbVByb3AgcmV0VmFsID0gdGhpcy0+UHJvcGVydGllcy5HZXRQcm9wZXJ0eVZhbHVlKHByb3ApOwogICBpZiAoIXJldFZhbCkgewogICAgIGNvbnN0IGJvb2wgY2hhaW4gPQogICAgICAgdGhpcy0+TWFrZWZpbGUtPkdldFN0YXRlKCktPklzUHJvcGVydHlDaGFpbmVkKHByb3AsIGNtUHJvcGVydHk6OlRFU1QpOwogICAgIGlmIChjaGFpbikgewogICAgICAgcmV0dXJuIHRoaXMtPk1ha2VmaWxlLT5HZXRQcm9wZXJ0eShwcm9wLCBjaGFpbik7CiAgICAgfQorICAgIHJldHVybiBudWxscHRyOwogICB9Ci0gIHJldHVybiByZXRWYWw7CisgIHJldHVybiByZXRWYWwtPmNfc3RyKCk7CiB9CiAKIGJvb2wgY21UZXN0OjpHZXRQcm9wZXJ0eUFzQm9vbChjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVRlc3RHZW5lcmF0b3IuY3h4IGIvU291cmNlL2NtVGVzdEdlbmVyYXRvci5jeHgKaW5kZXggMzMzZDRkNS4uMTE0MmRiZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtVGVzdEdlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL2NtVGVzdEdlbmVyYXRvci5jeHgKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgICAgICAgICAgZ2UuUGFyc2UoaS5zZWNvbmQpLT5FdmFsdWF0ZSh0aGlzLT5MRywgY29uZmlnKSk7CiAgIH0KICAgdGhpcy0+R2VuZXJhdGVJbnRlcm5hbFByb3BlcnRpZXMob3MpOwotICBvcyA8PCAiKSIgPDwgc3RkOjplbmRsOworICBvcyA8PCAiKVxuIjsKIH0KIAogdm9pZCBjbVRlc3RHZW5lcmF0b3I6OkdlbmVyYXRlU2NyaXB0Tm9Db25maWcoc3RkOjpvc3RyZWFtJiBvcywgSW5kZW50IGluZGVudCkKQEAgLTE3Niw5ICsxNzYsOSBAQAogICAgICAgfQogICAgICAgZm91dCA8PCBjOwogICAgIH0KLSAgICBmb3V0IDw8ICJcIiI7CisgICAgZm91dCA8PCAnIic7CiAgIH0KLSAgZm91dCA8PCAiKSIgPDwgc3RkOjplbmRsOworICBmb3V0IDw8ICIpXG4iOwogCiAgIC8vIE91dHB1dCBwcm9wZXJ0aWVzIGZvciB0aGUgdGVzdC4KICAgZm91dCA8PCBpbmRlbnQgPDwgInNldF90ZXN0c19wcm9wZXJ0aWVzKCIgPDwgdGhpcy0+VGVzdC0+R2V0TmFtZSgpCkBAIC0xODgsNyArMTg4LDcgQEAKICAgICAgICAgIDw8IGNtT3V0cHV0Q29udmVydGVyOjpFc2NhcGVGb3JDTWFrZShpLnNlY29uZCk7CiAgIH0KICAgdGhpcy0+R2VuZXJhdGVJbnRlcm5hbFByb3BlcnRpZXMoZm91dCk7Ci0gIGZvdXQgPDwgIikiIDw8IHN0ZDo6ZW5kbDsKKyAgZm91dCA8PCAiKVxuIjsKIH0KIAogdm9pZCBjbVRlc3RHZW5lcmF0b3I6OkdlbmVyYXRlSW50ZXJuYWxQcm9wZXJ0aWVzKHN0ZDo6b3N0cmVhbSYgb3MpCkBAIC0yMTMsNyArMjEzLDcgQEAKICAgICBwcmVwZW5kVHJpcGxlU2VwYXJhdG9yID0gdHJ1ZTsKICAgfQogCi0gIG9zIDw8ICJcIiI7CisgIG9zIDw8ICciJzsKIH0KIAogc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGNtVGVzdEdlbmVyYXRvcjo6RXZhbHVhdGVDb21tYW5kTGluZUFyZ3VtZW50cygKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVRpbWVzdGFtcC5jeHggYi9Tb3VyY2UvY21UaW1lc3RhbXAuY3h4CmluZGV4IDM5MGZkMTYuLjEzZjczZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVRpbWVzdGFtcC5jeHgKKysrIGIvU291cmNlL2NtVGltZXN0YW1wLmN4eApAQCAtMSw1ICsxLDE1IEBACiAvKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgT1NJLWFwcHJvdmVkIEJTRCAzLUNsYXVzZSBMaWNlbnNlLiAgU2VlIGFjY29tcGFueWluZwogICAgZmlsZSBDb3B5cmlnaHQudHh0IG9yIGh0dHBzOi8vY21ha2Uub3JnL2xpY2Vuc2luZyBmb3IgZGV0YWlscy4gICovCisKKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fc3VuKQorLy8gUE9TSVggQVBJcyBhcmUgbmVlZGVkCisjICBkZWZpbmUgX1BPU0lYX0NfU09VUkNFIDIwMDgwOUwKKyNlbmRpZgorI2lmIGRlZmluZWQoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykKKy8vIEZvciBpc2FzY2lpCisjICBkZWZpbmUgX1hPUEVOX1NPVVJDRSA3MDAKKyNlbmRpZgorCiAjaW5jbHVkZSAiY21UaW1lc3RhbXAuaCIKIAogI2luY2x1ZGUgPGNzdGRsaWI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21UcnlSdW5Db21tYW5kLmN4eCBiL1NvdXJjZS9jbVRyeVJ1bkNvbW1hbmQuY3h4CmluZGV4IDBlOGU5ODYuLjMyOWIzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVRyeVJ1bkNvbW1hbmQuY3h4CisrKyBiL1NvdXJjZS9jbVRyeVJ1bkNvbW1hbmQuY3h4CkBAIC0yNDIsOCArMjQyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQuY19zdHIoKSwgY21TdGF0ZUVudW1zOjpTVFJJTkcpOwogCiAgICAgY21TdGF0ZSogc3RhdGUgPSB0aGlzLT5NYWtlZmlsZS0+R2V0U3RhdGUoKTsKLSAgICBjb25zdCBjaGFyKiBleGlzdGluZ1ZhbHVlID0KLSAgICAgIHN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUodGhpcy0+UnVuUmVzdWx0VmFyaWFibGUpOworICAgIGNtUHJvcCBleGlzdGluZ1ZhbHVlID0gc3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSh0aGlzLT5SdW5SZXN1bHRWYXJpYWJsZSk7CiAgICAgaWYgKGV4aXN0aW5nVmFsdWUpIHsKICAgICAgIHN0YXRlLT5TZXRDYWNoZUVudHJ5UHJvcGVydHkodGhpcy0+UnVuUmVzdWx0VmFyaWFibGUsICJBRFZBTkNFRCIsICIxIik7CiAgICAgfQpAQCAtMjY1LDcgKzI2NCw3IEBACiAgICAgICAgIGludGVybmFsUnVuT3V0cHV0TmFtZSwgIlBMRUFTRV9GSUxMX09VVC1OT1RGT1VORCIsIGNvbW1lbnQuY19zdHIoKSwKICAgICAgICAgY21TdGF0ZUVudW1zOjpTVFJJTkcpOwogICAgICAgY21TdGF0ZSogc3RhdGUgPSB0aGlzLT5NYWtlZmlsZS0+R2V0U3RhdGUoKTsKLSAgICAgIGNvbnN0IGNoYXIqIGV4aXN0aW5nID0gc3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZShpbnRlcm5hbFJ1bk91dHB1dE5hbWUpOworICAgICAgY21Qcm9wIGV4aXN0aW5nID0gc3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZShpbnRlcm5hbFJ1bk91dHB1dE5hbWUpOwogICAgICAgaWYgKGV4aXN0aW5nKSB7CiAgICAgICAgIHN0YXRlLT5TZXRDYWNoZUVudHJ5UHJvcGVydHkoaW50ZXJuYWxSdW5PdXRwdXROYW1lLCAiQURWQU5DRUQiLCAiMSIpOwogICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtVXRpbGl0eVNvdXJjZUNvbW1hbmQuY3h4IGIvU291cmNlL2NtVXRpbGl0eVNvdXJjZUNvbW1hbmQuY3h4CmluZGV4IGE0MzE2NWMuLjU4NjVhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVV0aWxpdHlTb3VyY2VDb21tYW5kLmN4eAorKysgYi9Tb3VyY2UvY21VdGlsaXR5U291cmNlQ29tbWFuZC5jeHgKQEAgLTEwMiwxNSArMTAyLDE1IEBACiAgIGNtU3lzdGVtVG9vbHM6OlJlcGxhY2VTdHJpbmcodXRpbGl0eUV4ZWN1dGFibGUsICIvLi8iLCAiLyIpOwogCiAgIC8vIEVudGVyIHRoZSB2YWx1ZSBpbnRvIHRoZSBjYWNoZS4KLSAgc3RhdHVzLkdldE1ha2VmaWxlKCkuQWRkQ2FjaGVEZWZpbml0aW9uKAotICAgIGNhY2hlRW50cnksIHV0aWxpdHlFeGVjdXRhYmxlLmNfc3RyKCksICJQYXRoIHRvIGFuIGludGVybmFsIHByb2dyYW0uIiwKLSAgICBjbVN0YXRlRW51bXM6OkZJTEVQQVRIKTsKKyAgc3RhdHVzLkdldE1ha2VmaWxlKCkuQWRkQ2FjaGVEZWZpbml0aW9uKGNhY2hlRW50cnksIHV0aWxpdHlFeGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhdGggdG8gYW4gaW50ZXJuYWwgcHJvZ3JhbS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21TdGF0ZUVudW1zOjpGSUxFUEFUSCk7CiAgIC8vIGFkZCBhIHZhbHVlIGludG8gdGhlIGNhY2hlIHRoYXQgbWFwcyBmcm9tIHRoZQogICAvLyBmdWxsIHBhdGggdG8gdGhlIG5hbWUgb2YgdGhlIHByb2plY3QKICAgY21TeXN0ZW1Ub29sczo6Q29udmVydFRvVW5peFNsYXNoZXModXRpbGl0eUV4ZWN1dGFibGUpOwotICBzdGF0dXMuR2V0TWFrZWZpbGUoKS5BZGRDYWNoZURlZmluaXRpb24oCi0gICAgdXRpbGl0eUV4ZWN1dGFibGUsIHV0aWxpdHlOYW1lLmNfc3RyKCksICJFeGVjdXRhYmxlIHRvIHByb2plY3QgbmFtZS4iLAotICAgIGNtU3RhdGVFbnVtczo6SU5URVJOQUwpOworICBzdGF0dXMuR2V0TWFrZWZpbGUoKS5BZGRDYWNoZURlZmluaXRpb24odXRpbGl0eUV4ZWN1dGFibGUsIHV0aWxpdHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4ZWN1dGFibGUgdG8gcHJvamVjdCBuYW1lLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbVN0YXRlRW51bXM6OklOVEVSTkFMKTsKIAogICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVZpc3VhbFN0dWRpbzEwVGFyZ2V0R2VuZXJhdG9yLmN4eCBiL1NvdXJjZS9jbVZpc3VhbFN0dWRpbzEwVGFyZ2V0R2VuZXJhdG9yLmN4eAppbmRleCA4ZGExMTNlLi5hYmM4YjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21WaXN1YWxTdHVkaW8xMFRhcmdldEdlbmVyYXRvci5jeHgKKysrIGIvU291cmNlL2NtVmlzdWFsU3R1ZGlvMTBUYXJnZXRHZW5lcmF0b3IuY3h4CkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgPHNldD4KIAogI2luY2x1ZGUgPGNtL21lbW9yeT4KKyNpbmNsdWRlIDxjbS9zdHJpbmdfdmlldz4KICNpbmNsdWRlIDxjbS92ZWN0b3I+CiAKICNpbmNsdWRlICJ3aW5kb3dzLmgiCkBAIC0yMiw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY21Mb2NhbFZpc3VhbFN0dWRpbzEwR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiY21NYWtlZmlsZS5oIgogI2luY2x1ZGUgImNtU291cmNlRmlsZS5oIgorI2luY2x1ZGUgImNtU3RyaW5nQWxnb3JpdGhtcy5oIgogI2luY2x1ZGUgImNtU3lzdGVtVG9vbHMuaCIKICNpbmNsdWRlICJjbVZpc3VhbFN0dWRpb0dlbmVyYXRvck9wdGlvbnMuaCIKIApAQCAtNjEsMTAgKzYzLDEwIEBACiAgICAgdGhpcy0+U3RhcnRFbGVtZW50KCk7CiAgIH0KICAgRWxlbShjb25zdCBFbGVtJikgPSBkZWxldGU7Ci0gIEVsZW0oRWxlbSYgcGFyLCBjb25zdCBzdGQ6OnN0cmluZyYgdGFnKQorICBFbGVtKEVsZW0mIHBhciwgY206OnN0cmluZ192aWV3IHRhZykKICAgICA6IFMocGFyLlMpCiAgICAgLCBJbmRlbnQocGFyLkluZGVudCArIDEpCi0gICAgLCBUYWcodGFnKQorICAgICwgVGFnKHN0ZDo6c3RyaW5nKHRhZykpCiAgIHsKICAgICBwYXIuU2V0SGFzRWxlbWVudHMoKTsKICAgICB0aGlzLT5TdGFydEVsZW1lbnQoKTsKQEAgLTc4LDIyICs4MCwyMiBAQAogICB9CiAgIHN0ZDo6b3N0cmVhbSYgV3JpdGVTdHJpbmcoY29uc3QgY2hhciogbGluZSk7CiAgIHZvaWQgU3RhcnRFbGVtZW50KCkgeyB0aGlzLT5Xcml0ZVN0cmluZygiPCIpIDw8IHRoaXMtPlRhZzsgfQotICB2b2lkIEVsZW1lbnQoY29uc3Qgc3RkOjpzdHJpbmcmIHRhZywgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbCkKKyAgdm9pZCBFbGVtZW50KGNtOjpzdHJpbmdfdmlldyB0YWcsIHN0ZDo6c3RyaW5nIHZhbCkKICAgewotICAgIEVsZW0oKnRoaXMsIHRhZykuQ29udGVudCh2YWwpOworICAgIEVsZW0oKnRoaXMsIHRhZykuQ29udGVudChzdGQ6Om1vdmUodmFsKSk7CiAgIH0KLSAgRWxlbSYgQXR0cmlidXRlKGNvbnN0IGNoYXIqIGFuLCBjb25zdCBzdGQ6OnN0cmluZyYgYXYpCisgIEVsZW0mIEF0dHJpYnV0ZShjb25zdCBjaGFyKiBhbiwgc3RkOjpzdHJpbmcgYXYpCiAgIHsKLSAgICB0aGlzLT5TIDw8ICIgIiA8PCBhbiA8PCAiPVwiIiA8PCBjbVZTMTBFc2NhcGVBdHRyKGF2KSA8PCAiXCIiOworICAgIHRoaXMtPlMgPDwgIiAiIDw8IGFuIDw8ICI9XCIiIDw8IGNtVlMxMEVzY2FwZUF0dHIoc3RkOjptb3ZlKGF2KSkgPDwgIlwiIjsKICAgICByZXR1cm4gKnRoaXM7CiAgIH0KLSAgdm9pZCBDb250ZW50KGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWwpCisgIHZvaWQgQ29udGVudChzdGQ6OnN0cmluZyB2YWwpCiAgIHsKICAgICBpZiAoIXRoaXMtPkhhc0NvbnRlbnQpIHsKICAgICAgIHRoaXMtPlMgPDwgIj4iOwogICAgICAgdGhpcy0+SGFzQ29udGVudCA9IHRydWU7CiAgICAgfQotICAgIHRoaXMtPlMgPDwgY21WUzEwRXNjYXBlWE1MKHZhbCk7CisgICAgdGhpcy0+UyA8PCBjbVZTMTBFc2NhcGVYTUwoc3RkOjptb3ZlKHZhbCkpOwogICB9CiAgIH5FbGVtKCkKICAgewpAQCAtNTU2LDEwICs1NTgsMTEgQEAKIAogICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGtleXMgPSB0aGlzLT5HZW5lcmF0b3JUYXJnZXQtPkdldFByb3BlcnR5S2V5cygpOwogICAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYga2V5SXQgOiBrZXlzKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcmVmaXggPSAiVlNfR0xPQkFMXyI7Ci0gICAgICAgIGlmIChrZXlJdC5maW5kKHByZWZpeCkgIT0gMCkKKyAgICAgICAgc3RhdGljIGNvbnN0IGNtOjpzdHJpbmdfdmlldyBwcmVmaXggPSAiVlNfR0xPQkFMXyI7CisgICAgICAgIGlmICghY21IYXNQcmVmaXgoa2V5SXQsIHByZWZpeCkpCiAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGdsb2JhbEtleSA9IGtleUl0LnN1YnN0cihzdHJsZW4ocHJlZml4KSk7CisgICAgICAgIGNtOjpzdHJpbmdfdmlldyBnbG9iYWxLZXkgPQorICAgICAgICAgIGNtOjpzdHJpbmdfdmlldyhrZXlJdCkuc3Vic3RyKHByZWZpeC5sZW5ndGgoKSk7CiAgICAgICAgIC8vIFNraXAgaW52YWxpZCBvciBzZXBhcmF0ZWx5LWhhbmRsZWQgcHJvcGVydGllcy4KICAgICAgICAgaWYgKGdsb2JhbEtleS5lbXB0eSgpIHx8IGdsb2JhbEtleSA9PSAiUFJPSkVDVF9UWVBFUyIgfHwKICAgICAgICAgICAgIGdsb2JhbEtleSA9PSAiUk9PVE5BTUVTUEFDRSIgfHwgZ2xvYmFsS2V5ID09ICJLRVlXT1JEIikgewpAQCAtNzkwLDIxICs3OTMsMTQgQEAKICAgICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiByaSA6IHBhY2thZ2VSZWZlcmVuY2VzKSB7CiAgICAgICBzaXplX3QgdmVyc2lvbkluZGV4ID0gcmkuZmluZF9sYXN0X29mKCdfJyk7CiAgICAgICBpZiAodmVyc2lvbkluZGV4ICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgICAgIFdyaXRlUGFja2FnZVJlZmVyZW5jZShlMSwgcmkuc3Vic3RyKDAsIHZlcnNpb25JbmRleCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaS5zdWJzdHIodmVyc2lvbkluZGV4ICsgMSkpOworICAgICAgICBFbGVtIGUyKGUxLCAiUGFja2FnZVJlZmVyZW5jZSIpOworICAgICAgICBlMi5BdHRyaWJ1dGUoIkluY2x1ZGUiLCByaS5zdWJzdHIoMCwgdmVyc2lvbkluZGV4KSk7CisgICAgICAgIGUyLkF0dHJpYnV0ZSgiVmVyc2lvbiIsIHJpLnN1YnN0cih2ZXJzaW9uSW5kZXggKyAxKSk7CiAgICAgICB9CiAgICAgfQogICB9CiB9CiAKLXZvaWQgY21WaXN1YWxTdHVkaW8xMFRhcmdldEdlbmVyYXRvcjo6V3JpdGVQYWNrYWdlUmVmZXJlbmNlKAotICBFbGVtJiBlMSwgc3RkOjpzdHJpbmcgY29uc3QmIHJlZiwgc3RkOjpzdHJpbmcgY29uc3QmIHZlcnNpb24pCi17Ci0gIEVsZW0gZTIoZTEsICJQYWNrYWdlUmVmZXJlbmNlIik7Ci0gIGUyLkF0dHJpYnV0ZSgiSW5jbHVkZSIsIHJlZik7Ci0gIGUyLkF0dHJpYnV0ZSgiVmVyc2lvbiIsIHZlcnNpb24pOwotfQotCiB2b2lkIGNtVmlzdWFsU3R1ZGlvMTBUYXJnZXRHZW5lcmF0b3I6OldyaXRlRG90TmV0UmVmZXJlbmNlcyhFbGVtJiBlMCkKIHsKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHJlZmVyZW5jZXM7CkBAIC04MTQsMTcgKzgxMCwxNSBAQAogICB9CiAgIGNtUHJvcGVydHlNYXAgY29uc3QmIHByb3BzID0gdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5UYXJnZXQtPkdldFByb3BlcnRpZXMoKTsKICAgZm9yIChhdXRvIGNvbnN0JiBpIDogcHJvcHMuR2V0TGlzdCgpKSB7Ci0gICAgaWYgKGkuZmlyc3QuZmluZCgiVlNfRE9UTkVUX1JFRkVSRU5DRV8iKSA9PSAwKSB7Ci0gICAgICBzdGQ6OnN0cmluZyBuYW1lID0gaS5maXJzdC5zdWJzdHIoMjApOwotICAgICAgaWYgKCFuYW1lLmVtcHR5KCkpIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgcGF0aCA9IGkuc2Vjb25kOwotICAgICAgICBpZiAoIWNtc3lzOjpTeXN0ZW1Ub29sczo6RmlsZUlzRnVsbFBhdGgocGF0aCkpIHsKLSAgICAgICAgICBwYXRoID0gdGhpcy0+TWFrZWZpbGUtPkdldEN1cnJlbnRTb3VyY2VEaXJlY3RvcnkoKSArICIvIiArIHBhdGg7Ci0gICAgICAgIH0KLSAgICAgICAgQ29udmVydFRvV2luZG93c1NsYXNoKHBhdGgpOwotICAgICAgICB0aGlzLT5Eb3ROZXRIaW50UmVmZXJlbmNlc1siIl0ucHVzaF9iYWNrKAotICAgICAgICAgIERvdE5ldEhpbnRSZWZlcmVuY2UobmFtZSwgcGF0aCkpOworICAgIHN0YXRpYyBjb25zdCBjbTo6c3RyaW5nX3ZpZXcgdnNEblJlZiA9ICJWU19ET1RORVRfUkVGRVJFTkNFXyI7CisgICAgaWYgKGNtSGFzUHJlZml4KGkuZmlyc3QsIHZzRG5SZWYpKSB7CisgICAgICBzdGQ6OnN0cmluZyBwYXRoID0gaS5zZWNvbmQ7CisgICAgICBpZiAoIWNtc3lzOjpTeXN0ZW1Ub29sczo6RmlsZUlzRnVsbFBhdGgocGF0aCkpIHsKKyAgICAgICAgcGF0aCA9IHRoaXMtPk1ha2VmaWxlLT5HZXRDdXJyZW50U291cmNlRGlyZWN0b3J5KCkgKyAiLyIgKyBwYXRoOwogICAgICAgfQorICAgICAgQ29udmVydFRvV2luZG93c1NsYXNoKHBhdGgpOworICAgICAgdGhpcy0+RG90TmV0SGludFJlZmVyZW5jZXNbIiJdLmVtcGxhY2VfYmFjaygKKyAgICAgICAgRG90TmV0SGludFJlZmVyZW5jZShpLmZpcnN0LnN1YnN0cih2c0RuUmVmLmxlbmd0aCgpKSwgcGF0aCkpOwogICAgIH0KICAgfQogICBpZiAoIXJlZmVyZW5jZXMuZW1wdHkoKSB8fCAhdGhpcy0+RG90TmV0SGludFJlZmVyZW5jZXMuZW1wdHkoKSkgewpAQCAtODM3LDcgKzgzMSw3IEBACiAgICAgICAgICAgY21zeXM6OlN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZVdpdGhvdXRMYXN0RXh0ZW5zaW9uKHJpKTsKICAgICAgICAgc3RkOjpzdHJpbmcgcGF0aCA9IHJpOwogICAgICAgICBDb252ZXJ0VG9XaW5kb3dzU2xhc2gocGF0aCk7Ci0gICAgICAgIHRoaXMtPkRvdE5ldEhpbnRSZWZlcmVuY2VzWyIiXS5wdXNoX2JhY2soCisgICAgICAgIHRoaXMtPkRvdE5ldEhpbnRSZWZlcmVuY2VzWyIiXS5lbXBsYWNlX2JhY2soCiAgICAgICAgICAgRG90TmV0SGludFJlZmVyZW5jZShuYW1lLCBwYXRoKSk7CiAgICAgICB9IGVsc2UgewogICAgICAgICB0aGlzLT5Xcml0ZURvdE5ldFJlZmVyZW5jZShlMSwgcmksICIiLCAiIik7CkBAIC05MTAsMTIgKzkwNCw4IEBACiAgIEN1c3RvbVRhZ3MgdGFnczsKICAgY21Qcm9wZXJ0eU1hcCBjb25zdCYgcHJvcHMgPSB0aGlzLT5HZW5lcmF0b3JUYXJnZXQtPlRhcmdldC0+R2V0UHJvcGVydGllcygpOwogICBmb3IgKGNvbnN0IGF1dG8mIGkgOiBwcm9wcy5HZXRMaXN0KCkpIHsKLSAgICBpZiAoaS5maXJzdC5maW5kKHJlZlByb3BGdWxsUHJlZml4KSA9PSAwKSB7Ci0gICAgICBzdGQ6OnN0cmluZyByZWZUYWcgPSBpLmZpcnN0LnN1YnN0cihyZWZQcm9wRnVsbFByZWZpeC5sZW5ndGgoKSk7Ci0gICAgICBzdGQ6OnN0cmluZyByZWZWYWwgPSBpLnNlY29uZDsKLSAgICAgIGlmICghcmVmVGFnLmVtcHR5KCkgJiYgIXJlZlZhbC5lbXB0eSgpKSB7Ci0gICAgICAgIHRhZ3NbcmVmVGFnXSA9IHJlZlZhbDsKLSAgICAgIH0KKyAgICBpZiAoY21IYXNQcmVmaXgoaS5maXJzdCwgcmVmUHJvcEZ1bGxQcmVmaXgpICYmICFpLnNlY29uZC5lbXB0eSgpKSB7CisgICAgICB0YWdzW2kuZmlyc3Quc3Vic3RyKHJlZlByb3BGdWxsUHJlZml4Lmxlbmd0aCgpKV0gPSBpLnNlY29uZDsKICAgICB9CiAgIH0KICAgZm9yIChhdXRvIGNvbnN0JiB0YWcgOiB0YWdzKSB7CkBAIC05NTIsNyArOTQyLDcgQEAKICAgICAgICAgLy8gc3ViZGlyZWN0b3J5CiAgICAgICAgIC8vIG9mIHRoZSAuY3Nwcm9qIGZpbGUsIHdlIGhhdmUgdG8gdXNlIHJlbGF0aXZlIHBhdGhuYW1lcywgb3RoZXJ3aXNlCiAgICAgICAgIC8vIHZpc3VhbCBzdHVkaW8gZG9lcyBub3Qgc2hvdyB0aGUgZmlsZSBpbiB0aGUgSURFLiBTb3JyeS4KLSAgICAgICAgaWYgKG9iai5maW5kKHNyY0RpcikgPT0gMCkgeworICAgICAgICBpZiAoY21IYXNQcmVmaXgob2JqLCBzcmNEaXIpKSB7CiAgICAgICAgICAgb2JqID0gdGhpcy0+Q29udmVydFBhdGgob2JqLCB0cnVlKTsKICAgICAgICAgICBDb252ZXJ0VG9XaW5kb3dzU2xhc2gob2JqKTsKICAgICAgICAgICB1c2VSZWxhdGl2ZVBhdGggPSB0cnVlOwpAQCAtOTgxLDE3ICs5NzEsMTEgQEAKICAgICAgICAgLy8gSWYgdGhlIHJlc291cmNlIHdhcyBOT1QgYWRkZWQgdXNpbmcgYSByZWxhdGl2ZSBwYXRoICh3aGljaCBzaG91bGQKICAgICAgICAgLy8gYmUgdGhlIGRlZmF1bHQpLCB3ZSBoYXZlIHRvIHByb3ZpZGUgYSBsaW5rIGhlcmUKICAgICAgICAgaWYgKCF1c2VSZWxhdGl2ZVBhdGgpIHsKLSAgICAgICAgICBzdGQ6OnN0cmluZyBsaW5rOwotICAgICAgICAgIGlmIChvYmouZmluZChzcmNEaXIpID09IDApIHsKLSAgICAgICAgICAgIGxpbmsgPSBvYmouc3Vic3RyKHNyY0Rpci5sZW5ndGgoKSArIDEpOwotICAgICAgICAgIH0gZWxzZSBpZiAob2JqLmZpbmQoYmluRGlyKSA9PSAwKSB7Ci0gICAgICAgICAgICBsaW5rID0gb2JqLnN1YnN0cihiaW5EaXIubGVuZ3RoKCkgKyAxKTsKLSAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHN0ZDo6c3RyaW5nIGxpbmsgPSB0aGlzLT5HZXRDU2hhcnBTb3VyY2VMaW5rKG9pKTsKKyAgICAgICAgICBpZiAobGluay5lbXB0eSgpKSB7CiAgICAgICAgICAgICBsaW5rID0gY21zeXM6OlN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZU5hbWUob2JqKTsKICAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKCFsaW5rLmVtcHR5KCkpIHsKLSAgICAgICAgICAgIGUyLkVsZW1lbnQoIkxpbmsiLCBsaW5rKTsKLSAgICAgICAgICB9CisgICAgICAgICAgZTIuRWxlbWVudCgiTGluayIsIGxpbmspOwogICAgICAgICB9CiAgICAgICAgIC8vIERldGVybWluZSBpZiB0aGlzIGlzIGEgZ2VuZXJhdGVkIHJlc291cmNlIGZyb20gYSAuRGVzaWduZXIuY3MgZmlsZQogICAgICAgICBzdGQ6OnN0cmluZyBkZXNpZ25lclJlc291cmNlID0KQEAgLTEwMDUsMTAgKzk4OSwxMCBAQAogICAgICAgICAgIH0KICAgICAgICAgICBpZiAoIWdlbmVyYXRvci5lbXB0eSgpKSB7CiAgICAgICAgICAgICBlMi5FbGVtZW50KCJHZW5lcmF0b3IiLCBnZW5lcmF0b3IpOwotICAgICAgICAgICAgaWYgKGRlc2lnbmVyUmVzb3VyY2UuZmluZChzcmNEaXIpID09IDApIHsKLSAgICAgICAgICAgICAgZGVzaWduZXJSZXNvdXJjZSA9IGRlc2lnbmVyUmVzb3VyY2Uuc3Vic3RyKHNyY0Rpci5sZW5ndGgoKSArIDEpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChkZXNpZ25lclJlc291cmNlLmZpbmQoYmluRGlyKSA9PSAwKSB7Ci0gICAgICAgICAgICAgIGRlc2lnbmVyUmVzb3VyY2UgPSBkZXNpZ25lclJlc291cmNlLnN1YnN0cihiaW5EaXIubGVuZ3RoKCkgKyAxKTsKKyAgICAgICAgICAgIGlmIChjbUhhc1ByZWZpeChkZXNpZ25lclJlc291cmNlLCBzcmNEaXIpKSB7CisgICAgICAgICAgICAgIGRlc2lnbmVyUmVzb3VyY2UuZXJhc2UoMCwgc3JjRGlyLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY21IYXNQcmVmaXgoZGVzaWduZXJSZXNvdXJjZSwgYmluRGlyKSkgeworICAgICAgICAgICAgICBkZXNpZ25lclJlc291cmNlLmVyYXNlKDAsIGJpbkRpci5sZW5ndGgoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICBkZXNpZ25lclJlc291cmNlID0KICAgICAgICAgICAgICAgICBjbXN5czo6U3lzdGVtVG9vbHM6OkdldEZpbGVuYW1lTmFtZShkZXNpZ25lclJlc291cmNlKTsKQEAgLTEwMTksMTEgKzEwMDMsMTIgQEAKICAgICAgICAgfQogICAgICAgICBjb25zdCBjbVByb3BlcnR5TWFwJiBwcm9wcyA9IG9pLT5HZXRQcm9wZXJ0aWVzKCk7CiAgICAgICAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcmIHAgOiBwcm9wcy5HZXRLZXlzKCkpIHsKLSAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgcHJvcE5hbWVQcmVmaXggPSAiVlNfQ1NIQVJQXyI7Ci0gICAgICAgICAgaWYgKHAuZmluZChwcm9wTmFtZVByZWZpeCkgPT0gMCkgewotICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGFnTmFtZSA9IHAuc3Vic3RyKHByb3BOYW1lUHJlZml4Lmxlbmd0aCgpKTsKKyAgICAgICAgICBzdGF0aWMgY29uc3QgY206OnN0cmluZ192aWV3IHByb3BOYW1lUHJlZml4ID0gIlZTX0NTSEFSUF8iOworICAgICAgICAgIGlmIChjbUhhc1ByZWZpeChwLCBwcm9wTmFtZVByZWZpeCkpIHsKKyAgICAgICAgICAgIGNtOjpzdHJpbmdfdmlldyB0YWdOYW1lID0KKyAgICAgICAgICAgICAgY206OnN0cmluZ192aWV3KHApLnN1YnN0cihwcm9wTmFtZVByZWZpeC5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAoIXRhZ05hbWUuZW1wdHkoKSkgewotICAgICAgICAgICAgICBzdGQ6OnN0cmluZyB2YWx1ZSA9IHByb3BzLkdldFByb3BlcnR5VmFsdWUocCk7CisgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSA9ICpwcm9wcy5HZXRQcm9wZXJ0eVZhbHVlKHApOwogICAgICAgICAgICAgICBpZiAoIXZhbHVlLmVtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBlMi5FbGVtZW50KHRhZ05hbWUsIHZhbHVlKTsKICAgICAgICAgICAgICAgfQpAQCAtMTA1NCwyNSArMTAzOSw2IEBACiAgICAgICBFbGVtIGUyKGUxLCB4YW1sVHlwZSk7CiAgICAgICB0aGlzLT5Xcml0ZVNvdXJjZShlMiwgb2kpOwogICAgICAgZTIuU2V0SGFzRWxlbWVudHMoKTsKLSAgICAgIGlmICh0aGlzLT5Qcm9qZWN0VHlwZSA9PSBjc3Byb2ogJiYgIXRoaXMtPkluU291cmNlQnVpbGQpIHsKLSAgICAgICAgLy8gYWRkIDxMaW5rPiB0YWcgdG8gd3JpdHRlbiBYQU1MIHNvdXJjZSBpZiBuZWNlc3NhcnkKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNyY0RpciA9Ci0gICAgICAgICAgdGhpcy0+TWFrZWZpbGUtPkdldEN1cnJlbnRTb3VyY2VEaXJlY3RvcnkoKTsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGJpbkRpciA9Ci0gICAgICAgICAgdGhpcy0+TWFrZWZpbGUtPkdldEN1cnJlbnRCaW5hcnlEaXJlY3RvcnkoKTsKLSAgICAgICAgc3RkOjpzdHJpbmcgbGluazsKLSAgICAgICAgaWYgKG9iai5maW5kKHNyY0RpcikgPT0gMCkgewotICAgICAgICAgIGxpbmsgPSBvYmouc3Vic3RyKHNyY0Rpci5sZW5ndGgoKSArIDEpOwotICAgICAgICB9IGVsc2UgaWYgKG9iai5maW5kKGJpbkRpcikgPT0gMCkgewotICAgICAgICAgIGxpbmsgPSBvYmouc3Vic3RyKGJpbkRpci5sZW5ndGgoKSArIDEpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGxpbmsgPSBjbXN5czo6U3lzdGVtVG9vbHM6OkdldEZpbGVuYW1lTmFtZShvYmopOwotICAgICAgICB9Ci0gICAgICAgIGlmICghbGluay5lbXB0eSgpKSB7Ci0gICAgICAgICAgQ29udmVydFRvV2luZG93c1NsYXNoKGxpbmspOwotICAgICAgICAgIGUyLkVsZW1lbnQoIkxpbmsiLCBsaW5rKTsKLSAgICAgICAgfQotICAgICAgfQogICAgICAgZTIuRWxlbWVudCgiU3ViVHlwZSIsICJEZXNpZ25lciIpOwogICAgIH0KICAgfQpAQCAtMTQ0MiwxMyArMTQwOCw4IEBACiAgIH0gZWxzZSB7CiAgICAgRWxlbSBlMShlMCwgIkl0ZW1Hcm91cCIpOwogICAgIEVsZW0gZTIoZTEsICJOb25lIik7Ci0gICAgc3RkOjpzdHJpbmcgbGluazsKLSAgICB0aGlzLT5HZXRDU2hhcnBTb3VyY2VMaW5rKHNvdXJjZSwgbGluayk7CiAgICAgdGhpcy0+V3JpdGVTb3VyY2UoZTIsIHNvdXJjZSk7CiAgICAgZTIuU2V0SGFzRWxlbWVudHMoKTsKLSAgICBpZiAoIWxpbmsuZW1wdHkoKSkgewotICAgICAgZTIuRWxlbWVudCgiTGluayIsIGxpbmspOwotICAgIH0KICAgfQogICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBjIDogdGhpcy0+Q29uZmlndXJhdGlvbnMpIHsKICAgICBjbUN1c3RvbUNvbW1hbmRHZW5lcmF0b3IgY2NnKGNvbW1hbmQsIGMsIGxnKTsKQEAgLTE3NzksMjUgKzE3NDAsNzAgQEAKICAgaWYgKHRoaXMtPklzUmVzeEhlYWRlcihmaWxlTmFtZSkpIHsKICAgICBlMi5FbGVtZW50KCJGaWxlVHlwZSIsICJDcHBGb3JtIik7CiAgIH0gZWxzZSBpZiAodGhpcy0+SXNYYW1sSGVhZGVyKGZpbGVOYW1lKSkgewotICAgIHN0ZDo6c3RyaW5nIHhhbWxGaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigwLCBmaWxlTmFtZS5maW5kX2xhc3Rfb2YoIi4iKSk7Ci0gICAgZTIuRWxlbWVudCgiRGVwZW5kZW50VXBvbiIsIHhhbWxGaWxlTmFtZSk7CisgICAgZTIuRWxlbWVudCgiRGVwZW5kZW50VXBvbiIsCisgICAgICAgICAgICAgICBmaWxlTmFtZS5zdWJzdHIoMCwgZmlsZU5hbWUuZmluZF9sYXN0X29mKCIuIikpKTsKICAgfQogfQogCit2b2lkIGNtVmlzdWFsU3R1ZGlvMTBUYXJnZXRHZW5lcmF0b3I6OlBhcnNlU2V0dGluZ3NQcm9wZXJ0eSgKKyAgY29uc3QgY2hhciogc2V0dGluZ3NQcm9wZXJ0eVZhbHVlLCBDb25maWdUb1NldHRpbmdzJiB0b29sU2V0dGluZ3MpCit7CisgIGlmIChzZXR0aW5nc1Byb3BlcnR5VmFsdWUpIHsKKyAgICBjbUdlbmVyYXRvckV4cHJlc3Npb24gZ2U7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y21Db21waWxlZEdlbmVyYXRvckV4cHJlc3Npb24+IGNnZSA9CisgICAgICBnZS5QYXJzZShzZXR0aW5nc1Byb3BlcnR5VmFsdWUpOworCisgICAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnIDogdGhpcy0+Q29uZmlndXJhdGlvbnMpIHsKKyAgICAgIHN0ZDo6c3RyaW5nIGV2YWx1YXRlZCA9IGNnZS0+RXZhbHVhdGUodGhpcy0+TG9jYWxHZW5lcmF0b3IsIGNvbmZpZyk7CisKKyAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBzZXR0aW5ncyA9IGNtRXhwYW5kZWRMaXN0KGV2YWx1YXRlZCk7CisgICAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBzZXR0aW5nIDogc2V0dGluZ3MpIHsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBhc3NpZ25tZW50ID0gc2V0dGluZy5maW5kKCc9Jyk7CisgICAgICAgIGlmIChhc3NpZ25tZW50ICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgcHJvcE5hbWUgPSBzZXR0aW5nLnN1YnN0cigwLCBhc3NpZ25tZW50KTsKKyAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBwcm9wVmFsdWUgPSBzZXR0aW5nLnN1YnN0cihhc3NpZ25tZW50ICsgMSk7CisKKyAgICAgICAgICBpZiAoIXByb3BWYWx1ZS5lbXB0eSgpKSB7CisgICAgICAgICAgICB0b29sU2V0dGluZ3NbY29uZmlnXVtwcm9wTmFtZV0gPSBwcm9wVmFsdWU7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9CisKK2Jvb2wgY21WaXN1YWxTdHVkaW8xMFRhcmdldEdlbmVyYXRvcjo6UHJvcGVydHlJc1NhbWVJbkFsbENvbmZpZ3MoCisgIGNvbnN0IENvbmZpZ1RvU2V0dGluZ3MmIHRvb2xTZXR0aW5ncywgY29uc3Qgc3RkOjpzdHJpbmcmIHByb3BOYW1lKQoreworICBzdGQ6OnN0cmluZyBmaXJzdFByb3BWYWx1ZSA9ICIiOworICBmb3IgKGNvbnN0IGF1dG8mIGNvbmZpZ1RvU2V0dGluZ3MgOiB0b29sU2V0dGluZ3MpIHsKKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiYgc2V0dGluZ3MgPQorICAgICAgY29uZmlnVG9TZXR0aW5ncy5zZWNvbmQ7CisKKyAgICBpZiAoZmlyc3RQcm9wVmFsdWUuZW1wdHkoKSkgeworICAgICAgaWYgKHNldHRpbmdzLmZpbmQocHJvcE5hbWUpICE9IHNldHRpbmdzLmVuZCgpKSB7CisgICAgICAgIGZpcnN0UHJvcFZhbHVlID0gc2V0dGluZ3MuZmluZChwcm9wTmFtZSktPnNlY29uZDsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2V0dGluZ3MuZmluZChwcm9wTmFtZSkgPT0gc2V0dGluZ3MuZW5kKCkpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc2V0dGluZ3MuZmluZChwcm9wTmFtZSktPnNlY29uZCAhPSBmaXJzdFByb3BWYWx1ZSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCiB2b2lkIGNtVmlzdWFsU3R1ZGlvMTBUYXJnZXRHZW5lcmF0b3I6OldyaXRlRXh0cmFTb3VyY2UoRWxlbSYgZTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21Tb3VyY2VGaWxlIGNvbnN0KiBzZikKIHsKICAgYm9vbCB0b29sSGFzU2V0dGluZ3MgPSBmYWxzZTsKICAgY29uc3QgY2hhciogdG9vbCA9ICJOb25lIjsKLSAgc3RkOjpzdHJpbmcgc2hhZGVyVHlwZTsKLSAgc3RkOjpzdHJpbmcgc2hhZGVyRW50cnlQb2ludDsKLSAgc3RkOjpzdHJpbmcgc2hhZGVyTW9kZWw7Ci0gIHN0ZDo6c3RyaW5nIHNoYWRlckFkZGl0aW9uYWxGbGFnczsKLSAgc3RkOjpzdHJpbmcgc2hhZGVyRGlzYWJsZU9wdGltaXphdGlvbnM7Ci0gIHN0ZDo6c3RyaW5nIHNoYWRlckVuYWJsZURlYnVnOwotICBzdGQ6OnN0cmluZyBzaGFkZXJPYmplY3RGaWxlTmFtZTsKLSAgc3RkOjpzdHJpbmcgb3V0cHV0SGVhZGVyRmlsZTsKLSAgc3RkOjpzdHJpbmcgdmFyaWFibGVOYW1lOwogICBzdGQ6OnN0cmluZyBzZXR0aW5nc0dlbmVyYXRvcjsKICAgc3RkOjpzdHJpbmcgc2V0dGluZ3NMYXN0R2VuT3V0cHV0OwogICBzdGQ6OnN0cmluZyBzb3VyY2VMaW5rOwpAQCAtMTgwNSw3NiArMTgxMSw4NCBAQAogICBzdGQ6OnN0cmluZyBjb3B5VG9PdXREaXI7CiAgIHN0ZDo6c3RyaW5nIGluY2x1ZGVJblZzaXg7CiAgIHN0ZDo6c3RyaW5nIGV4dCA9IGNtU3lzdGVtVG9vbHM6Okxvd2VyQ2FzZShzZi0+R2V0RXh0ZW5zaW9uKCkpOwotICBpZiAodGhpcy0+UHJvamVjdFR5cGUgPT0gY3Nwcm9qKSB7Ci0gICAgLy8gRVZFUlkgZXh0cmEgc291cmNlIGZpbGUgbXVzdCBoYXZlIGEgPExpbms+LCBvdGhlcndpc2UgaXQgbWlnaHQgbm90Ci0gICAgLy8gYmUgdmlzaWJsZSBpbiBWaXN1YWwgU3R1ZGlvIGF0IGFsbC4gVGhlIHBhdGggcmVsYXRpdmUgdG8gY3VycmVudAotICAgIC8vIHNvdXJjZS0gb3IgYmluYXJ5LWRpciBpcyB1c2VkIHdpdGhpbiB0aGUgbGluaywgaWYgdGhlIGZpbGUgaXMKLSAgICAvLyBpbiBub25lIG9mIHRoZXNlIHBhdGhzLCBpdCBpcyBhZGRlZCB3aXRoIHRoZSBwbGFpbiBmaWxlbmFtZSB3aXRob3V0Ci0gICAgLy8gYW55IHBhdGguIFRoaXMgbWVhbnMgdGhlIGZpbGUgd2lsbCBzaG93IHVwIGF0IHJvb3QtbGV2ZWwgb2YgdGhlIGNzcHJvagotICAgIC8vICh3aGVyZSBDTWFrZUxpc3RzLnR4dCBldGMuIGFyZSkuCi0gICAgaWYgKCF0aGlzLT5JblNvdXJjZUJ1aWxkKSB7Ci0gICAgICB0b29sSGFzU2V0dGluZ3MgPSB0cnVlOwotICAgICAgc3RkOjpzdHJpbmcgZnVsbEZpbGVOYW1lID0gc2YtPkdldEZ1bGxQYXRoKCk7Ci0gICAgICBzdGQ6OnN0cmluZyBzcmNEaXIgPSB0aGlzLT5NYWtlZmlsZS0+R2V0Q3VycmVudFNvdXJjZURpcmVjdG9yeSgpOwotICAgICAgc3RkOjpzdHJpbmcgYmluRGlyID0gdGhpcy0+TWFrZWZpbGUtPkdldEN1cnJlbnRCaW5hcnlEaXJlY3RvcnkoKTsKLSAgICAgIGlmIChmdWxsRmlsZU5hbWUuZmluZChiaW5EaXIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgICAgIHNvdXJjZUxpbmsuY2xlYXIoKTsKLSAgICAgIH0gZWxzZSBpZiAoZnVsbEZpbGVOYW1lLmZpbmQoc3JjRGlyKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAgICBzb3VyY2VMaW5rID0gZnVsbEZpbGVOYW1lLnN1YnN0cihzcmNEaXIubGVuZ3RoKCkgKyAxKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIGZhbGxiYWNrOiBhZGQgcGxhaW4gZmlsZW5hbWUgd2l0aG91dCBhbnkgcGF0aAotICAgICAgICBzb3VyY2VMaW5rID0gY21zeXM6OlN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZU5hbWUoZnVsbEZpbGVOYW1lKTsKLSAgICAgIH0KLSAgICAgIGlmICghc291cmNlTGluay5lbXB0eSgpKSB7Ci0gICAgICAgIENvbnZlcnRUb1dpbmRvd3NTbGFzaChzb3VyY2VMaW5rKTsKLSAgICAgIH0KLSAgICB9CisgIENvbmZpZ1RvU2V0dGluZ3MgdG9vbFNldHRpbmdzOworICBmb3IgKGNvbnN0IGF1dG8mIGNvbmZpZyA6IHRoaXMtPkNvbmZpZ3VyYXRpb25zKSB7CisgICAgdG9vbFNldHRpbmdzW2NvbmZpZ107CisgIH0KKworICBpZiAodGhpcy0+UHJvamVjdFR5cGUgPT0gY3Nwcm9qICYmICF0aGlzLT5JblNvdXJjZUJ1aWxkKSB7CisgICAgdG9vbEhhc1NldHRpbmdzID0gdHJ1ZTsKICAgfQogICBpZiAoZXh0ID09ICJobHNsIikgewogICAgIHRvb2wgPSAiRlhDb21waWxlIjsKICAgICAvLyBGaWd1cmUgb3V0IHRoZSB0eXBlIG9mIHNoYWRlciBjb21waWxlciB0byB1c2UuCiAgICAgaWYgKGNvbnN0IGNoYXIqIHN0ID0gc2YtPkdldFByb3BlcnR5KCJWU19TSEFERVJfVFlQRSIpKSB7Ci0gICAgICBzaGFkZXJUeXBlID0gc3Q7Ci0gICAgICB0b29sSGFzU2V0dGluZ3MgPSB0cnVlOworICAgICAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnIDogdGhpcy0+Q29uZmlndXJhdGlvbnMpIHsKKyAgICAgICAgdG9vbFNldHRpbmdzW2NvbmZpZ11bIlNoYWRlclR5cGUiXSA9IHN0OworICAgICAgfQogICAgIH0KICAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIGVudHJ5IHBvaW50IHRvIHVzZSBpZiBhbnkKICAgICBpZiAoY29uc3QgY2hhciogc2UgPSBzZi0+R2V0UHJvcGVydHkoIlZTX1NIQURFUl9FTlRSWVBPSU5UIikpIHsKLSAgICAgIHNoYWRlckVudHJ5UG9pbnQgPSBzZTsKLSAgICAgIHRvb2xIYXNTZXR0aW5ncyA9IHRydWU7CisgICAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcgOiB0aGlzLT5Db25maWd1cmF0aW9ucykgeworICAgICAgICB0b29sU2V0dGluZ3NbY29uZmlnXVsiRW50cnlQb2ludE5hbWUiXSA9IHNlOworICAgICAgfQogICAgIH0KICAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIHNoYWRlciBtb2RlbCB0byB1c2UgaWYgYW55CiAgICAgaWYgKGNvbnN0IGNoYXIqIHNtID0gc2YtPkdldFByb3BlcnR5KCJWU19TSEFERVJfTU9ERUwiKSkgewotICAgICAgc2hhZGVyTW9kZWwgPSBzbTsKLSAgICAgIHRvb2xIYXNTZXR0aW5ncyA9IHRydWU7CisgICAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcgOiB0aGlzLT5Db25maWd1cmF0aW9ucykgeworICAgICAgICB0b29sU2V0dGluZ3NbY29uZmlnXVsiU2hhZGVyTW9kZWwiXSA9IHNtOworICAgICAgfQogICAgIH0KICAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIG91dHB1dCBoZWFkZXIgZmlsZSB0byB1c2UgaWYgYW55CiAgICAgaWYgKGNvbnN0IGNoYXIqIG9oZiA9IHNmLT5HZXRQcm9wZXJ0eSgiVlNfU0hBREVSX09VVFBVVF9IRUFERVJfRklMRSIpKSB7Ci0gICAgICBvdXRwdXRIZWFkZXJGaWxlID0gb2hmOwotICAgICAgdG9vbEhhc1NldHRpbmdzID0gdHJ1ZTsKKyAgICAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZyA6IHRoaXMtPkNvbmZpZ3VyYXRpb25zKSB7CisgICAgICAgIHRvb2xTZXR0aW5nc1tjb25maWddWyJIZWFkZXJGaWxlT3V0cHV0Il0gPSBvaGY7CisgICAgICB9CiAgICAgfQogICAgIC8vIEZpZ3VyZSBvdXQgd2hpY2ggdmFyaWFibGUgbmFtZSB0byB1c2UgaWYgYW55CiAgICAgaWYgKGNvbnN0IGNoYXIqIHZuID0gc2YtPkdldFByb3BlcnR5KCJWU19TSEFERVJfVkFSSUFCTEVfTkFNRSIpKSB7Ci0gICAgICB2YXJpYWJsZU5hbWUgPSB2bjsKLSAgICAgIHRvb2xIYXNTZXR0aW5ncyA9IHRydWU7CisgICAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcgOiB0aGlzLT5Db25maWd1cmF0aW9ucykgeworICAgICAgICB0b29sU2V0dGluZ3NbY29uZmlnXVsiVmFyaWFibGVOYW1lIl0gPSB2bjsKKyAgICAgIH0KICAgICB9CiAgICAgLy8gRmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSBhZGRpdGlvbmFsIGZsYWdzIHRvIHVzZQogICAgIGlmIChjb25zdCBjaGFyKiBzYWYgPSBzZi0+R2V0UHJvcGVydHkoIlZTX1NIQURFUl9GTEFHUyIpKSB7Ci0gICAgICBzaGFkZXJBZGRpdGlvbmFsRmxhZ3MgPSBzYWY7Ci0gICAgICB0b29sSGFzU2V0dGluZ3MgPSB0cnVlOworICAgICAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnIDogdGhpcy0+Q29uZmlndXJhdGlvbnMpIHsKKyAgICAgICAgdG9vbFNldHRpbmdzW2NvbmZpZ11bIkFkZGl0aW9uYWxPcHRpb25zIl0gPSBzYWY7CisgICAgICB9CiAgICAgfQogICAgIC8vIEZpZ3VyZSBvdXQgaWYgZGVidWcgaW5mb3JtYXRpb24gc2hvdWxkIGJlIGdlbmVyYXRlZAogICAgIGlmIChjb25zdCBjaGFyKiBzZWQgPSBzZi0+R2V0UHJvcGVydHkoIlZTX1NIQURFUl9FTkFCTEVfREVCVUciKSkgewotICAgICAgc2hhZGVyRW5hYmxlRGVidWcgPSBzZWQ7Ci0gICAgICB0b29sSGFzU2V0dGluZ3MgPSB0cnVlOworICAgICAgY21HZW5lcmF0b3JFeHByZXNzaW9uIGdlOworICAgICAgc3RkOjp1bmlxdWVfcHRyPGNtQ29tcGlsZWRHZW5lcmF0b3JFeHByZXNzaW9uPiBjZ2UgPSBnZS5QYXJzZShzZWQpOworCisgICAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcgOiB0aGlzLT5Db25maWd1cmF0aW9ucykgeworICAgICAgICBzdGQ6OnN0cmluZyBldmFsdWF0ZWQgPSBjZ2UtPkV2YWx1YXRlKHRoaXMtPkxvY2FsR2VuZXJhdG9yLCBjb25maWcpOworCisgICAgICAgIGlmICghZXZhbHVhdGVkLmVtcHR5KCkpIHsKKyAgICAgICAgICB0b29sU2V0dGluZ3NbY29uZmlnXVsiRW5hYmxlRGVidWdnaW5nSW5mb3JtYXRpb24iXSA9CisgICAgICAgICAgICBjbUlzT24oZXZhbHVhdGVkKSA/ICJ0cnVlIiA6ICJmYWxzZSI7CisgICAgICAgIH0KKyAgICAgIH0KICAgICB9CiAgICAgLy8gRmlndXJlIG91dCBpZiBvcHRpbWl6YXRpb25zIHNob3VsZCBiZSBkaXNhYmxlZAogICAgIGlmIChjb25zdCBjaGFyKiBzZG8gPSBzZi0+R2V0UHJvcGVydHkoIlZTX1NIQURFUl9ESVNBQkxFX09QVElNSVpBVElPTlMiKSkgewotICAgICAgc2hhZGVyRGlzYWJsZU9wdGltaXphdGlvbnMgPSBzZG87Ci0gICAgICB0b29sSGFzU2V0dGluZ3MgPSB0cnVlOworICAgICAgY21HZW5lcmF0b3JFeHByZXNzaW9uIGdlOworICAgICAgc3RkOjp1bmlxdWVfcHRyPGNtQ29tcGlsZWRHZW5lcmF0b3JFeHByZXNzaW9uPiBjZ2UgPSBnZS5QYXJzZShzZG8pOworCisgICAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcgOiB0aGlzLT5Db25maWd1cmF0aW9ucykgeworICAgICAgICBzdGQ6OnN0cmluZyBldmFsdWF0ZWQgPSBjZ2UtPkV2YWx1YXRlKHRoaXMtPkxvY2FsR2VuZXJhdG9yLCBjb25maWcpOworCisgICAgICAgIGlmICghZXZhbHVhdGVkLmVtcHR5KCkpIHsKKyAgICAgICAgICB0b29sU2V0dGluZ3NbY29uZmlnXVsiRGlzYWJsZU9wdGltaXphdGlvbnMiXSA9CisgICAgICAgICAgICBjbUlzT24oZXZhbHVhdGVkKSA/ICJ0cnVlIiA6ICJmYWxzZSI7CisgICAgICAgIH0KKyAgICAgIH0KICAgICB9CiAgICAgaWYgKGNvbnN0IGNoYXIqIHNvZm4gPSBzZi0+R2V0UHJvcGVydHkoIlZTX1NIQURFUl9PQkpFQ1RfRklMRV9OQU1FIikpIHsKLSAgICAgIHNoYWRlck9iamVjdEZpbGVOYW1lID0gc29mbjsKLSAgICAgIHRvb2xIYXNTZXR0aW5ncyA9IHRydWU7CisgICAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWcgOiB0aGlzLT5Db25maWd1cmF0aW9ucykgeworICAgICAgICB0b29sU2V0dGluZ3NbY29uZmlnXVsiT2JqZWN0RmlsZU91dHB1dCJdID0gc29mbjsKKyAgICAgIH0KICAgICB9CiAgIH0gZWxzZSBpZiAoZXh0ID09ICJqcGciIHx8IGV4dCA9PSAicG5nIikgewogICAgIHRvb2wgPSAiSW1hZ2UiOwpAQCAtMTk0NCwxMSArMTk1OCw1NSBAQAogICAgIH0KICAgfQogCisgIGlmIChQYXJzZWRUb29sVGFyZ2V0U2V0dGluZ3MuZmluZCh0b29sKSA9PSBQYXJzZWRUb29sVGFyZ2V0U2V0dGluZ3MuZW5kKCkpIHsKKyAgICBjb25zdCBjaGFyKiB0b29sVGFyZ2V0UHJvcGVydHkgPQorICAgICAgdGhpcy0+R2VuZXJhdG9yVGFyZ2V0LT5UYXJnZXQtPkdldFByb3BlcnR5KCJWU19TT1VSQ0VfU0VUVElOR1NfIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcodG9vbCkpOworICAgIENvbmZpZ1RvU2V0dGluZ3MgdG9vbFRhcmdldFNldHRpbmdzOworICAgIFBhcnNlU2V0dGluZ3NQcm9wZXJ0eSh0b29sVGFyZ2V0UHJvcGVydHksIHRvb2xUYXJnZXRTZXR0aW5ncyk7CisKKyAgICBQYXJzZWRUb29sVGFyZ2V0U2V0dGluZ3NbdG9vbF0gPSB0b29sVGFyZ2V0U2V0dGluZ3M7CisgIH0KKworICBmb3IgKGNvbnN0IGF1dG8mIGNvbmZpZ1RvU2V0dGluZyA6IFBhcnNlZFRvb2xUYXJnZXRTZXR0aW5nc1t0b29sXSkgeworICAgIGZvciAoY29uc3QgYXV0byYgc2V0dGluZyA6IGNvbmZpZ1RvU2V0dGluZy5zZWNvbmQpIHsKKyAgICAgIHRvb2xTZXR0aW5nc1tjb25maWdUb1NldHRpbmcuZmlyc3RdW3NldHRpbmcuZmlyc3RdID0gc2V0dGluZy5zZWNvbmQ7CisgICAgfQorICB9CisKKyAgUGFyc2VTZXR0aW5nc1Byb3BlcnR5KHNmLT5HZXRQcm9wZXJ0eSgiVlNfU0VUVElOR1MiKSwgdG9vbFNldHRpbmdzKTsKKworICBpZiAoIXRvb2xTZXR0aW5ncy5lbXB0eSgpKSB7CisgICAgdG9vbEhhc1NldHRpbmdzID0gdHJ1ZTsKKyAgfQorCiAgIEVsZW0gZTIoZTEsIHRvb2wpOwogICB0aGlzLT5Xcml0ZVNvdXJjZShlMiwgc2YpOwogICBpZiAodG9vbEhhc1NldHRpbmdzKSB7CiAgICAgZTIuU2V0SGFzRWxlbWVudHMoKTsKIAorICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB3cml0dGVuU2V0dGluZ3M7CisgICAgZm9yIChjb25zdCBhdXRvJiBjb25maWdTZXR0aW5ncyA6IHRvb2xTZXR0aW5ncykgeworICAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5nIDogY29uZmlnU2V0dGluZ3Muc2Vjb25kKSB7CisKKyAgICAgICAgaWYgKHN0ZDo6ZmluZCh3cml0dGVuU2V0dGluZ3MuYmVnaW4oKSwgd3JpdHRlblNldHRpbmdzLmVuZCgpLAorICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcuZmlyc3QpICE9IHdyaXR0ZW5TZXR0aW5ncy5lbmQoKSkgeworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFByb3BlcnR5SXNTYW1lSW5BbGxDb25maWdzKHRvb2xTZXR0aW5ncywgc2V0dGluZy5maXJzdCkpIHsKKyAgICAgICAgICBlMi5FbGVtZW50KHNldHRpbmcuZmlyc3QsIHNldHRpbmcuc2Vjb25kKTsKKyAgICAgICAgICB3cml0dGVuU2V0dGluZ3MucHVzaF9iYWNrKHNldHRpbmcuZmlyc3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGUyLldyaXRlUGxhdGZvcm1Db25maWdUYWcoc2V0dGluZy5maXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSciICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnU2V0dGluZ3MuZmlyc3QgKyAifCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5QbGF0Zm9ybSArICInIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcuc2Vjb25kKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKwogICAgIGlmICghZGVwbG95Q29udGVudC5lbXB0eSgpKSB7CiAgICAgICBjbUdlbmVyYXRvckV4cHJlc3Npb24gZ2U7CiAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y21Db21waWxlZEdlbmVyYXRvckV4cHJlc3Npb24+IGNnZSA9CkBAIC0xOTc0LDgyICsyMDMyLDEzIEBACiAgICAgICAgIH0KICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFzaGFkZXJUeXBlLmVtcHR5KCkpIHsKLSAgICAgIGUyLkVsZW1lbnQoIlNoYWRlclR5cGUiLCBzaGFkZXJUeXBlKTsKLSAgICB9Ci0gICAgaWYgKCFzaGFkZXJFbnRyeVBvaW50LmVtcHR5KCkpIHsKLSAgICAgIGUyLkVsZW1lbnQoIkVudHJ5UG9pbnROYW1lIiwgc2hhZGVyRW50cnlQb2ludCk7Ci0gICAgfQotICAgIGlmICghc2hhZGVyTW9kZWwuZW1wdHkoKSkgewotICAgICAgZTIuRWxlbWVudCgiU2hhZGVyTW9kZWwiLCBzaGFkZXJNb2RlbCk7Ci0gICAgfQotICAgIGlmICghb3V0cHV0SGVhZGVyRmlsZS5lbXB0eSgpKSB7Ci0gICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSB0aGlzLT5Db25maWd1cmF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBlMi5Xcml0ZVBsYXRmb3JtQ29uZmlnVGFnKCJIZWFkZXJGaWxlT3V0cHV0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5Db25maWd1cmF0aW9uc1tpXSArICJ8IiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5QbGF0Zm9ybSArICInIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRIZWFkZXJGaWxlKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCF2YXJpYWJsZU5hbWUuZW1wdHkoKSkgewotICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gdGhpcy0+Q29uZmlndXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgZTIuV3JpdGVQbGF0Zm9ybUNvbmZpZ1RhZygiVmFyaWFibGVOYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5Db25maWd1cmF0aW9uc1tpXSArICJ8IiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5QbGF0Zm9ybSArICInIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZU5hbWUpOwotICAgICAgfQotICAgIH0KLSAgICBpZiAoIXNoYWRlckVuYWJsZURlYnVnLmVtcHR5KCkpIHsKLSAgICAgIGNtR2VuZXJhdG9yRXhwcmVzc2lvbiBnZTsKLSAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjbUNvbXBpbGVkR2VuZXJhdG9yRXhwcmVzc2lvbj4gY2dlID0KLSAgICAgICAgZ2UuUGFyc2Uoc2hhZGVyRW5hYmxlRGVidWcpOwogCi0gICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSB0aGlzLT5Db25maWd1cmF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZW5hYmxlRGVidWcgPQotICAgICAgICAgIGNnZS0+RXZhbHVhdGUodGhpcy0+TG9jYWxHZW5lcmF0b3IsIHRoaXMtPkNvbmZpZ3VyYXRpb25zW2ldKTsKLSAgICAgICAgaWYgKCFlbmFibGVEZWJ1Zy5lbXB0eSgpKSB7Ci0gICAgICAgICAgZTIuV3JpdGVQbGF0Zm9ybUNvbmZpZ1RhZygiRW5hYmxlRGVidWdnaW5nSW5mb3JtYXRpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09JyIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5Db25maWd1cmF0aW9uc1tpXSArICJ8IiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPlBsYXRmb3JtICsgIiciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21Jc09uKGVuYWJsZURlYnVnKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICghc2hhZGVyRGlzYWJsZU9wdGltaXphdGlvbnMuZW1wdHkoKSkgewotICAgICAgY21HZW5lcmF0b3JFeHByZXNzaW9uIGdlOwotICAgICAgc3RkOjp1bmlxdWVfcHRyPGNtQ29tcGlsZWRHZW5lcmF0b3JFeHByZXNzaW9uPiBjZ2UgPQotICAgICAgICBnZS5QYXJzZShzaGFkZXJEaXNhYmxlT3B0aW1pemF0aW9ucyk7Ci0KLSAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHRoaXMtPkNvbmZpZ3VyYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXNhYmxlT3B0aW1pemF0aW9ucyA9Ci0gICAgICAgICAgY2dlLT5FdmFsdWF0ZSh0aGlzLT5Mb2NhbEdlbmVyYXRvciwgdGhpcy0+Q29uZmlndXJhdGlvbnNbaV0pOwotICAgICAgICBpZiAoIWRpc2FibGVPcHRpbWl6YXRpb25zLmVtcHR5KCkpIHsKLSAgICAgICAgICBlMi5Xcml0ZVBsYXRmb3JtQ29uZmlnVGFnKAotICAgICAgICAgICAgIkRpc2FibGVPcHRpbWl6YXRpb25zIiwKLSAgICAgICAgICAgICInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSciICsgdGhpcy0+Q29uZmlndXJhdGlvbnNbaV0gKwotICAgICAgICAgICAgICAifCIgKyB0aGlzLT5QbGF0Zm9ybSArICInIiwKLSAgICAgICAgICAgIChjbUlzT24oZGlzYWJsZU9wdGltaXphdGlvbnMpID8gInRydWUiIDogImZhbHNlIikpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICghc2hhZGVyT2JqZWN0RmlsZU5hbWUuZW1wdHkoKSkgewotICAgICAgZTIuRWxlbWVudCgiT2JqZWN0RmlsZU91dHB1dCIsIHNoYWRlck9iamVjdEZpbGVOYW1lKTsKLSAgICB9Ci0gICAgaWYgKCFzaGFkZXJBZGRpdGlvbmFsRmxhZ3MuZW1wdHkoKSkgewotICAgICAgZTIuRWxlbWVudCgiQWRkaXRpb25hbE9wdGlvbnMiLCBzaGFkZXJBZGRpdGlvbmFsRmxhZ3MpOwotICAgIH0KICAgICBpZiAoIXNldHRpbmdzR2VuZXJhdG9yLmVtcHR5KCkpIHsKICAgICAgIGUyLkVsZW1lbnQoIkdlbmVyYXRvciIsIHNldHRpbmdzR2VuZXJhdG9yKTsKICAgICB9CiAgICAgaWYgKCFzZXR0aW5nc0xhc3RHZW5PdXRwdXQuZW1wdHkoKSkgewogICAgICAgZTIuRWxlbWVudCgiTGFzdEdlbk91dHB1dCIsIHNldHRpbmdzTGFzdEdlbk91dHB1dCk7CiAgICAgfQotICAgIGlmICghc291cmNlTGluay5lbXB0eSgpKSB7Ci0gICAgICBlMi5FbGVtZW50KCJMaW5rIiwgc291cmNlTGluayk7Ci0gICAgfQogICAgIGlmICghc3ViVHlwZS5lbXB0eSgpKSB7CiAgICAgICBlMi5FbGVtZW50KCJTdWJUeXBlIiwgc3ViVHlwZSk7CiAgICAgfQpAQCAtMjEwMiw2ICsyMDkxLDIwIEBACiAgIENvbnZlcnRUb1dpbmRvd3NTbGFzaChzb3VyY2VGaWxlKTsKICAgZTIuQXR0cmlidXRlKCJJbmNsdWRlIiwgc291cmNlRmlsZSk7CiAKKyAgaWYgKHRoaXMtPlByb2plY3RUeXBlID09IGNzcHJvaiAmJiAhdGhpcy0+SW5Tb3VyY2VCdWlsZCkgeworICAgIC8vIEZvciBvdXQgb2Ygc291cmNlIHByb2plY3RzIHdlIGhhdmUgdG8gcHJvdmlkZSBhIGxpbmsgKGlmIG5vdCBzcGVjaWZpZWQKKyAgICAvLyB2aWEgcHJvcGVydHkpIGZvciBldmVyeSBzb3VyY2UgZmlsZSAoYmVzaWRlcyAuY3MgZmlsZXMpIG90aGVyd2lzZSB0aGV5CisgICAgLy8gd2lsbCBub3QgYmUgdmlzaWJsZSBpbiBWUyBhdCBhbGwuCisgICAgLy8gRmlyc3Qgd2UgY2hlY2sgaWYgdGhlIGZpbGUgaXMgaW4gYSBzb3VyY2UgZ3JvdXAsIHRoZW4gd2UgY2hlY2sgaWYgdGhlCisgICAgLy8gZmlsZSBwYXRoIGlzIHJlbGF0aXZlIHRvIGN1cnJlbnQgc291cmNlLSBvciBiaW5hcnktZGlyLCBvdGhlcndpc2UgaXQgaXMKKyAgICAvLyBhZGRlZCB3aXRoIHRoZSBwbGFpbiBmaWxlbmFtZSB3aXRob3V0IGFueSBwYXRoLiBUaGlzIG1lYW5zIHRoZSBmaWxlIHdpbGwKKyAgICAvLyBzaG93IHVwIGF0IHJvb3QtbGV2ZWwgb2YgdGhlIGNzcHJvaiAod2hlcmUgQ01ha2VMaXN0cy50eHQgZXRjLiBhcmUpLgorICAgIHN0ZDo6c3RyaW5nIGxpbmsgPSB0aGlzLT5HZXRDU2hhcnBTb3VyY2VMaW5rKHNmKTsKKyAgICBpZiAobGluay5lbXB0eSgpKQorICAgICAgbGluayA9IGNtc3lzOjpTeXN0ZW1Ub29sczo6R2V0RmlsZW5hbWVOYW1lKHNmLT5HZXRGdWxsUGF0aCgpKTsKKyAgICBlMi5FbGVtZW50KCJMaW5rIiwgbGluayk7CisgIH0KKwogICBUb29sU291cmNlIHRvb2xTb3VyY2UgPSB7IHNmLCBmb3JjZVJlbGF0aXZlIH07CiAgIHRoaXMtPlRvb2xzW2UyLlRhZ10ucHVzaF9iYWNrKHRvb2xTb3VyY2UpOwogfQpAQCAtMjQ1NCwxOSArMjQ1NywxMyBAQAogICB9CiAgIGlmICh0aGlzLT5Jc1hhbWxTb3VyY2Uoc291cmNlLT5HZXRGdWxsUGF0aCgpKSkgewogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlTmFtZSA9IHNvdXJjZS0+R2V0RnVsbFBhdGgoKTsKLSAgICBzdGQ6OnN0cmluZyB4YW1sRmlsZU5hbWUgPSBmaWxlTmFtZS5zdWJzdHIoMCwgZmlsZU5hbWUuZmluZF9sYXN0X29mKCIuIikpOwotICAgIGUyLkVsZW1lbnQoIkRlcGVuZGVudFVwb24iLCB4YW1sRmlsZU5hbWUpOworICAgIGUyLkVsZW1lbnQoIkRlcGVuZGVudFVwb24iLAorICAgICAgICAgICAgICAgZmlsZU5hbWUuc3Vic3RyKDAsIGZpbGVOYW1lLmZpbmRfbGFzdF9vZigiLiIpKSk7CiAgIH0KICAgaWYgKHRoaXMtPlByb2plY3RUeXBlID09IGNzcHJvaikgewogICAgIHN0ZDo6c3RyaW5nIGYgPSBzb3VyY2UtPkdldEZ1bGxQYXRoKCk7CiAgICAgdXNpbmcgQ3NQcm9wTWFwID0gc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPjsKICAgICBDc1Byb3BNYXAgc291cmNlRmlsZVRhZ3M7Ci0gICAgLy8gc2V0IDxMaW5rPiB0YWcgaWYgbmVjZXNzYXJ5Ci0gICAgc3RkOjpzdHJpbmcgbGluazsKLSAgICB0aGlzLT5HZXRDU2hhcnBTb3VyY2VMaW5rKHNvdXJjZSwgbGluayk7Ci0gICAgaWYgKCFsaW5rLmVtcHR5KCkpIHsKLSAgICAgIHNvdXJjZUZpbGVUYWdzWyJMaW5rIl0gPSBsaW5rOwotICAgIH0KICAgICB0aGlzLT5HZXRDU2hhcnBTb3VyY2VQcm9wZXJ0aWVzKCZzZiwgc291cmNlRmlsZVRhZ3MpOwogICAgIC8vIHdyaXRlIHNvdXJjZSBmaWxlIHNwZWNpZmljIHRhZ3MKICAgICBpZiAoIXNvdXJjZUZpbGVUYWdzLmVtcHR5KCkpIHsKQEAgLTQ4NDUsMTEgKzQ4NDIsMTEgQEAKICAgaWYgKHRoaXMtPlByb2plY3RUeXBlID09IGNzcHJvaikgewogICAgIGNvbnN0IGNtUHJvcGVydHlNYXAmIHByb3BzID0gc2YtPkdldFByb3BlcnRpZXMoKTsKICAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiBwIDogcHJvcHMuR2V0S2V5cygpKSB7Ci0gICAgICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgcHJvcE5hbWVQcmVmaXggPSAiVlNfQ1NIQVJQXyI7Ci0gICAgICBpZiAocC5maW5kKHByb3BOYW1lUHJlZml4KSA9PSAwKSB7CisgICAgICBzdGF0aWMgY29uc3QgY206OnN0cmluZ192aWV3IHByb3BOYW1lUHJlZml4ID0gIlZTX0NTSEFSUF8iOworICAgICAgaWYgKGNtSGFzUHJlZml4KHAsIHByb3BOYW1lUHJlZml4KSkgewogICAgICAgICBzdGQ6OnN0cmluZyB0YWdOYW1lID0gcC5zdWJzdHIocHJvcE5hbWVQcmVmaXgubGVuZ3RoKCkpOwogICAgICAgICBpZiAoIXRhZ05hbWUuZW1wdHkoKSkgewotICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZhbCA9IHByb3BzLkdldFByb3BlcnR5VmFsdWUocCk7CisgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbCA9ICpwcm9wcy5HZXRQcm9wZXJ0eVZhbHVlKHApOwogICAgICAgICAgIGlmICghdmFsLmVtcHR5KCkpIHsKICAgICAgICAgICAgIHRhZ3NbdGFnTmFtZV0gPSB2YWw7CiAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ4NjksMjQgKzQ4NjYsMzQgQEAKICAgfQogfQogCi12b2lkIGNtVmlzdWFsU3R1ZGlvMTBUYXJnZXRHZW5lcmF0b3I6OkdldENTaGFycFNvdXJjZUxpbmsoCi0gIGNtU291cmNlRmlsZSBjb25zdCogc2YsIHN0ZDo6c3RyaW5nJiBsaW5rKQorc3RkOjpzdHJpbmcgY21WaXN1YWxTdHVkaW8xMFRhcmdldEdlbmVyYXRvcjo6R2V0Q1NoYXJwU291cmNlTGluaygKKyAgY21Tb3VyY2VGaWxlIGNvbnN0KiBzb3VyY2UpCiB7Ci0gIHN0ZDo6c3RyaW5nIGNvbnN0JiBzb3VyY2VGaWxlUGF0aCA9IHNmLT5HZXRGdWxsUGF0aCgpOwotICBzdGQ6OnN0cmluZyBjb25zdCYgYmluYXJ5RGlyID0gTG9jYWxHZW5lcmF0b3ItPkdldEN1cnJlbnRCaW5hcnlEaXJlY3RvcnkoKTsKLQotICBpZiAoIWNtU3lzdGVtVG9vbHM6OklzU3ViRGlyZWN0b3J5KHNvdXJjZUZpbGVQYXRoLCBiaW5hcnlEaXIpKSB7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmlwRnJvbVBhdGggPQotICAgICAgdGhpcy0+TWFrZWZpbGUtPkdldEN1cnJlbnRTb3VyY2VEaXJlY3RvcnkoKTsKLSAgICBpZiAoc291cmNlRmlsZVBhdGguZmluZChzdHJpcEZyb21QYXRoKSA9PSAwKSB7Ci0gICAgICBpZiAoY29uc3QgY2hhciogbCA9IHNmLT5HZXRQcm9wZXJ0eSgiVlNfQ1NIQVJQX0xpbmsiKSkgewotICAgICAgICBsaW5rID0gbDsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGxpbmsgPSBzb3VyY2VGaWxlUGF0aC5zdWJzdHIoc3RyaXBGcm9tUGF0aC5sZW5ndGgoKSArIDEpOwotICAgICAgfQotICAgICAgQ29udmVydFRvV2luZG93c1NsYXNoKGxpbmspOwotICAgIH0KKyAgLy8gRm9yIG91dCBvZiBzb3VyY2UgZmlsZXMsIHdlIGZpcnN0IGNoZWNrIGlmIGEgbWF0Y2hpbmcgc291cmNlIGdyb3VwCisgIC8vIGZvciB0aGlzIGZpbGUgZXhpc3RzLCBvdGhlcndpc2Ugd2UgY2hlY2sgaWYgdGhlIHBhdGggcmVsYXRpdmUgdG8gY3VycmVudAorICAvLyBzb3VyY2UtIG9yIGJpbmFyeS1kaXIgaXMgdXNlZCB3aXRoaW4gdGhlIGxpbmsgYW5kIHJldHVybiB0aGF0CisgIHN0ZDo6c3RyaW5nIGxpbms7CisgIHN0ZDo6c3RyaW5nIGNvbnN0JiBmdWxsRmlsZU5hbWUgPSBzb3VyY2UtPkdldEZ1bGxQYXRoKCk7CisgIHN0ZDo6c3RyaW5nIGNvbnN0JiBzcmNEaXIgPSB0aGlzLT5NYWtlZmlsZS0+R2V0Q3VycmVudFNvdXJjZURpcmVjdG9yeSgpOworICBzdGQ6OnN0cmluZyBjb25zdCYgYmluRGlyID0gdGhpcy0+TWFrZWZpbGUtPkdldEN1cnJlbnRCaW5hcnlEaXJlY3RvcnkoKTsKKyAgLy8gdW5mb3J0dW5hdGVseSB3ZSBoYXZlIHRvIGNvcHkgdGhlIHNvdXJjZSBncm91cHMsIGJlY2F1c2UKKyAgLy8gRmluZFNvdXJjZUdyb3VwIHVzZXMgYSByZWdleCB3aGljaCBpcyBtb2RpZnlpbmcgdGhlIGdyb3VwCisgIHN0ZDo6dmVjdG9yPGNtU291cmNlR3JvdXA+IHNvdXJjZUdyb3VwcyA9IHRoaXMtPk1ha2VmaWxlLT5HZXRTb3VyY2VHcm91cHMoKTsKKyAgY21Tb3VyY2VHcm91cCogc291cmNlR3JvdXAgPQorICAgIHRoaXMtPk1ha2VmaWxlLT5GaW5kU291cmNlR3JvdXAoZnVsbEZpbGVOYW1lLCBzb3VyY2VHcm91cHMpOworICBpZiAoc291cmNlR3JvdXAgJiYgIXNvdXJjZUdyb3VwLT5HZXRGdWxsTmFtZSgpLmVtcHR5KCkpIHsKKyAgICBsaW5rID0gc291cmNlR3JvdXAtPkdldEZ1bGxOYW1lKCkgKyAiLyIgKworICAgICAgY21zeXM6OlN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZU5hbWUoZnVsbEZpbGVOYW1lKTsKKyAgfSBlbHNlIGlmIChjbUhhc1ByZWZpeChmdWxsRmlsZU5hbWUsIHNyY0RpcikpIHsKKyAgICBsaW5rID0gZnVsbEZpbGVOYW1lLnN1YnN0cihzcmNEaXIubGVuZ3RoKCkgKyAxKTsKKyAgfSBlbHNlIGlmIChjbUhhc1ByZWZpeChmdWxsRmlsZU5hbWUsIGJpbkRpcikpIHsKKyAgICBsaW5rID0gZnVsbEZpbGVOYW1lLnN1YnN0cihiaW5EaXIubGVuZ3RoKCkgKyAxKTsKKyAgfSBlbHNlIGlmIChjb25zdCBjaGFyKiBsID0gc291cmNlLT5HZXRQcm9wZXJ0eSgiVlNfQ1NIQVJQX0xpbmsiKSkgeworICAgIGxpbmsgPSBsOwogICB9CisKKyAgQ29udmVydFRvV2luZG93c1NsYXNoKGxpbmspOworICByZXR1cm4gbGluazsKIH0KIAogc3RkOjpzdHJpbmcgY21WaXN1YWxTdHVkaW8xMFRhcmdldEdlbmVyYXRvcjo6R2V0Q01ha2VGaWxlUGF0aCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbVZpc3VhbFN0dWRpbzEwVGFyZ2V0R2VuZXJhdG9yLmggYi9Tb3VyY2UvY21WaXN1YWxTdHVkaW8xMFRhcmdldEdlbmVyYXRvci5oCmluZGV4IDMwMDI3YzkuLmU1ODhkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVZpc3VhbFN0dWRpbzEwVGFyZ2V0R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL2NtVmlzdWFsU3R1ZGlvMTBUYXJnZXRHZW5lcmF0b3IuaApAQCAtMTAsNiArMTAsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiBjbGFzcyBjbUNvbXB1dGVMaW5rSW5mb3JtYXRpb247CkBAIC03Myw4ICs3NCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHNpemVfdD4gY29uc3QmIGV4Y2x1ZGVfY29uZmlncyk7CiAgIHZvaWQgV3JpdGVBbGxTb3VyY2VzKEVsZW0mIGUwKTsKICAgdm9pZCBXcml0ZVBhY2thZ2VSZWZlcmVuY2VzKEVsZW0mIGUwKTsKLSAgdm9pZCBXcml0ZVBhY2thZ2VSZWZlcmVuY2UoRWxlbSYgZTEsIHN0ZDo6c3RyaW5nIGNvbnN0JiByZWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiB2ZXJzaW9uKTsKICAgdm9pZCBXcml0ZURvdE5ldFJlZmVyZW5jZXMoRWxlbSYgZTApOwogICB2b2lkIFdyaXRlRG90TmV0UmVmZXJlbmNlKEVsZW0mIGUxLCBzdGQ6OnN0cmluZyBjb25zdCYgcmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBoaW50LApAQCAtMTgzLDcgKzE4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+JiB0YWdzKTsKICAgdm9pZCBXcml0ZUNTaGFycFNvdXJjZVByb3BlcnRpZXMoCiAgICAgRWxlbSYgZTIsIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4mIHRhZ3MpOwotICB2b2lkIEdldENTaGFycFNvdXJjZUxpbmsoY21Tb3VyY2VGaWxlIGNvbnN0KiBzZiwgc3RkOjpzdHJpbmcmIGxpbmspOworICBzdGQ6OnN0cmluZyBHZXRDU2hhcnBTb3VyY2VMaW5rKGNtU291cmNlRmlsZSBjb25zdCogc291cmNlKTsKIAogcHJpdmF0ZToKICAgZnJpZW5kIGNsYXNzIGNtVlMxMEdlbmVyYXRvck9wdGlvbnM7CkBAIC0yMzYsNiArMjM1LDE1IEBACiAKICAgdXNpbmcgVG9vbFNvdXJjZU1hcCA9IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBUb29sU291cmNlcz47CiAgIFRvb2xTb3VyY2VNYXAgVG9vbHM7CisKKyAgdXNpbmcgQ29uZmlnVG9TZXR0aW5ncyA9CisgICAgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj47CisgIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgQ29uZmlnVG9TZXR0aW5ncz4gUGFyc2VkVG9vbFRhcmdldFNldHRpbmdzOworICBib29sIFByb3BlcnR5SXNTYW1lSW5BbGxDb25maWdzKGNvbnN0IENvbmZpZ1RvU2V0dGluZ3MmIHRvb2xTZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcHJvcE5hbWUpOworICB2b2lkIFBhcnNlU2V0dGluZ3NQcm9wZXJ0eShjb25zdCBjaGFyKiBzZXR0aW5nc1Byb3BlcnR5VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ1RvU2V0dGluZ3MmIHRvb2xTZXR0aW5ncyk7CiAgIHN0ZDo6c3RyaW5nIEdldENNYWtlRmlsZVBhdGgoY29uc3QgY2hhciogbmFtZSkgY29uc3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21WaXN1YWxTdHVkaW9TbG5QYXJzZXIuY3h4IGIvU291cmNlL2NtVmlzdWFsU3R1ZGlvU2xuUGFyc2VyLmN4eAppbmRleCA0NTMzZTliLi5kNzgyMmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21WaXN1YWxTdHVkaW9TbG5QYXJzZXIuY3h4CisrKyBiL1NvdXJjZS9jbVZpc3VhbFN0dWRpb1NsblBhcnNlci5jeHgKQEAgLTUxNyw3ICs1MTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlJiBzdGF0ZSkKIHsKICAgc2l6ZV90IGlkeEVxdWFsU2lnbiA9IGxpbmUuZmluZCgnPScpOwotICBjb25zdCBzdGQ6OnN0cmluZyYgZnVsbFRhZyA9IGxpbmUuc3Vic3RyKDAsIGlkeEVxdWFsU2lnbik7CisgIGF1dG8gZnVsbFRhZyA9IGNtOjpzdHJpbmdfdmlldyhsaW5lKS5zdWJzdHIoMCwgaWR4RXF1YWxTaWduKTsKICAgaWYgKCF0aGlzLT5QYXJzZVRhZyhmdWxsVGFnLCBwYXJzZWRMaW5lLCBzdGF0ZSkpCiAgICAgcmV0dXJuIGZhbHNlOwogICBpZiAoaWR4RXF1YWxTaWduICE9IGxpbmUubnBvcykgewpAQCAtNTYwLDcgKzU2MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlJiBzdGF0ZSkKIHsKICAgc2l6ZV90IGlkeEVxdWFsU2lnbiA9IGxpbmUuZmluZCgnPScpOwotICBjb25zdCBzdGQ6OnN0cmluZyYgZnVsbFRhZyA9IGxpbmUuc3Vic3RyKDAsIGlkeEVxdWFsU2lnbik7CisgIGF1dG8gZnVsbFRhZyA9IGNtOjpzdHJpbmdfdmlldyhsaW5lKS5zdWJzdHIoMCwgaWR4RXF1YWxTaWduKTsKICAgaWYgKCF0aGlzLT5QYXJzZVRhZyhmdWxsVGFnLCBwYXJzZWRMaW5lLCBzdGF0ZSkpCiAgICAgcmV0dXJuIGZhbHNlOwogICBpZiAoaWR4RXF1YWxTaWduICE9IGxpbmUubnBvcykgewpAQCAtNTg2LDE3ICs1ODYsMTcgQEAKICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgY21WaXN1YWxTdHVkaW9TbG5QYXJzZXI6OlBhcnNlVGFnKGNvbnN0IHN0ZDo6c3RyaW5nJiBmdWxsVGFnLAorYm9vbCBjbVZpc3VhbFN0dWRpb1NsblBhcnNlcjo6UGFyc2VUYWcoY206OnN0cmluZ192aWV3IGZ1bGxUYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZWRMaW5lJiBwYXJzZWRMaW5lLCBTdGF0ZSYgc3RhdGUpCiB7CiAgIHNpemVfdCBpZHhMZWZ0UGFyZW4gPSBmdWxsVGFnLmZpbmQoJygnKTsKLSAgaWYgKGlkeExlZnRQYXJlbiA9PSBmdWxsVGFnLm5wb3MpIHsKKyAgaWYgKGlkeExlZnRQYXJlbiA9PSBjbTo6c3RyaW5nX3ZpZXc6Om5wb3MpIHsKICAgICBwYXJzZWRMaW5lLlNldFRhZyhjbVRyaW1XaGl0ZXNwYWNlKGZ1bGxUYWcpKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogICBwYXJzZWRMaW5lLlNldFRhZyhjbVRyaW1XaGl0ZXNwYWNlKGZ1bGxUYWcuc3Vic3RyKDAsIGlkeExlZnRQYXJlbikpKTsKICAgc2l6ZV90IGlkeFJpZ2h0UGFyZW4gPSBmdWxsVGFnLnJmaW5kKCcpJyk7Ci0gIGlmIChpZHhSaWdodFBhcmVuID09IGZ1bGxUYWcubnBvcykgeworICBpZiAoaWR4UmlnaHRQYXJlbiA9PSBjbTo6c3RyaW5nX3ZpZXc6Om5wb3MpIHsKICAgICB0aGlzLT5MYXN0UmVzdWx0LlNldEVycm9yKFJlc3VsdEVycm9ySW5wdXRTdHJ1Y3R1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5HZXRDdXJyZW50TGluZSgpKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21WaXN1YWxTdHVkaW9TbG5QYXJzZXIuaCBiL1NvdXJjZS9jbVZpc3VhbFN0dWRpb1NsblBhcnNlci5oCmluZGV4IDZjMDU2MzMuLjQ1NTdjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbVZpc3VhbFN0dWRpb1NsblBhcnNlci5oCisrKyBiL1NvdXJjZS9jbVZpc3VhbFN0dWRpb1NsblBhcnNlci5oCkBAIC05LDYgKzksOCBAQAogI2luY2x1ZGUgPGlvc2Z3ZD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpbmNsdWRlIDxjbS9zdHJpbmdfdmlldz4KKwogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCiBjbGFzcyBjbVNsbkRhdGE7CkBAIC05Nyw4ICs5OSw3IEBACiAgIGJvb2wgUGFyc2VLZXlWYWx1ZVBhaXIoY29uc3Qgc3RkOjpzdHJpbmcmIGxpbmUsIFBhcnNlZExpbmUmIHBhcnNlZExpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUmIHN0YXRlKTsKIAotICBib29sIFBhcnNlVGFnKGNvbnN0IHN0ZDo6c3RyaW5nJiBmdWxsVGFnLCBQYXJzZWRMaW5lJiBwYXJzZWRMaW5lLAotICAgICAgICAgICAgICAgIFN0YXRlJiBzdGF0ZSk7CisgIGJvb2wgUGFyc2VUYWcoY206OnN0cmluZ192aWV3IGZ1bGxUYWcsIFBhcnNlZExpbmUmIHBhcnNlZExpbmUsIFN0YXRlJiBzdGF0ZSk7CiAKICAgYm9vbCBQYXJzZVZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwgUGFyc2VkTGluZSYgcGFyc2VkTGluZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtV3JpdGVGaWxlQ29tbWFuZC5jeHggYi9Tb3VyY2UvY21Xcml0ZUZpbGVDb21tYW5kLmN4eAppbmRleCAzNGUyMWIyLi42NjZiYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21Xcml0ZUZpbGVDb21tYW5kLmN4eAorKysgYi9Tb3VyY2UvY21Xcml0ZUZpbGVDb21tYW5kLmN4eApAQCAtNzIsNyArNzIsNyBAQAogICAgIHN0YXR1cy5TZXRFcnJvcihlcnJvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9Ci0gIGZpbGUgPDwgbWVzc2FnZSA8PCBzdGQ6OmVuZGw7CisgIGZpbGUgPDwgbWVzc2FnZSA8PCAnXG4nOwogICBmaWxlLmNsb3NlKCk7CiAgIGlmIChtb2RlICYmICF3cml0YWJsZSkgewogICAgIGNtU3lzdGVtVG9vbHM6OlNldFBlcm1pc3Npb25zKGZpbGVOYW1lLmNfc3RyKCksIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtWENvZGUyMU9iamVjdC5jeHggYi9Tb3VyY2UvY21YQ29kZTIxT2JqZWN0LmN4eAppbmRleCBhOWJiMmVmLi42YjEzM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21YQ29kZTIxT2JqZWN0LmN4eAorKysgYi9Tb3VyY2UvY21YQ29kZTIxT2JqZWN0LmN4eApAQCAtMzAsMTEgKzMwLDEyIEBACiAgIG91dCA8PCAiICovIjsKIH0KIAotdm9pZCBjbVhDb2RlMjFPYmplY3Q6OlByaW50TGlzdChzdGQ6OnZlY3RvcjxjbVhDb2RlT2JqZWN0Kj4gY29uc3QmIHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmVhbSYgb3V0LCBQQlhUeXBlIHQpCit2b2lkIGNtWENvZGUyMU9iamVjdDo6UHJpbnRMaXN0KAorICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y21YQ29kZU9iamVjdD4+IGNvbnN0JiB2LCBzdGQ6Om9zdHJlYW0mIG91dCwKKyAgUEJYVHlwZSB0KQogewogICBib29sIGhhc09uZSA9IGZhbHNlOwotICBmb3IgKGF1dG8gb2JqIDogdikgeworICBmb3IgKGNvbnN0IGF1dG8mIG9iaiA6IHYpIHsKICAgICBpZiAob2JqLT5HZXRUeXBlKCkgPT0gT0JKRUNUICYmIG9iai0+R2V0SXNBKCkgPT0gdCkgewogICAgICAgaGFzT25lID0gdHJ1ZTsKICAgICAgIGJyZWFrOwpAQCAtNDQsNyArNDUsNyBAQAogICAgIHJldHVybjsKICAgfQogICBvdXQgPDwgIlxuLyogQmVnaW4gIiA8PCBQQlhUeXBlTmFtZXNbdF0gPDwgIiBzZWN0aW9uICovXG4iOwotICBmb3IgKGF1dG8gb2JqIDogdikgeworICBmb3IgKGNvbnN0IGF1dG8mIG9iaiA6IHYpIHsKICAgICBpZiAob2JqLT5HZXRUeXBlKCkgPT0gT0JKRUNUICYmIG9iai0+R2V0SXNBKCkgPT0gdCkgewogICAgICAgb2JqLT5QcmludChvdXQpOwogICAgIH0KQEAgLTUyLDggKzUzLDggQEAKICAgb3V0IDw8ICIvKiBFbmQgIiA8PCBQQlhUeXBlTmFtZXNbdF0gPDwgIiBzZWN0aW9uICovXG4iOwogfQogCi12b2lkIGNtWENvZGUyMU9iamVjdDo6UHJpbnRMaXN0KHN0ZDo6dmVjdG9yPGNtWENvZGVPYmplY3QqPiBjb25zdCYgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpvc3RyZWFtJiBvdXQpCit2b2lkIGNtWENvZGUyMU9iamVjdDo6UHJpbnRMaXN0KAorICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y21YQ29kZU9iamVjdD4+IGNvbnN0JiB2LCBzdGQ6Om9zdHJlYW0mIG91dCkKIHsKICAgY21YQ29kZU9iamVjdDo6SW5kZW50KDEsIG91dCk7CiAgIG91dCA8PCAib2JqZWN0cyA9IHtcbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21YQ29kZTIxT2JqZWN0LmggYi9Tb3VyY2UvY21YQ29kZTIxT2JqZWN0LmgKaW5kZXggOGU0YjgwZi4uNzZmYWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL2NtWENvZGUyMU9iamVjdC5oCisrKyBiL1NvdXJjZS9jbVhDb2RlMjFPYmplY3QuaApAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRlICJjbUNvbmZpZ3VyZS5oIiAvLyBJV1lVIHByYWdtYToga2VlcAogCiAjaW5jbHVkZSA8aW9zZndkPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJjbVhDb2RlT2JqZWN0LmgiCkBAIC0xNSw4ICsxNiw5IEBACiBwdWJsaWM6CiAgIGNtWENvZGUyMU9iamVjdChQQlhUeXBlIHB0eXBlLCBUeXBlIHR5cGUpOwogICB2b2lkIFByaW50Q29tbWVudChzdGQ6Om9zdHJlYW0mKSBvdmVycmlkZTsKLSAgc3RhdGljIHZvaWQgUHJpbnRMaXN0KHN0ZDo6dmVjdG9yPGNtWENvZGVPYmplY3QqPiBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgUEJYVHlwZSB0KTsKLSAgc3RhdGljIHZvaWQgUHJpbnRMaXN0KHN0ZDo6dmVjdG9yPGNtWENvZGVPYmplY3QqPiBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3V0KTsKKyAgc3RhdGljIHZvaWQgUHJpbnRMaXN0KHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxjbVhDb2RlT2JqZWN0Pj4gY29uc3QmLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpvc3RyZWFtJiBvdXQsIFBCWFR5cGUgdCk7CisgIHN0YXRpYyB2b2lkIFByaW50TGlzdChzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Y21YQ29kZU9iamVjdD4+IGNvbnN0JiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmVhbSYgb3V0KTsKIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbV9nZXRfZGF0ZS5jIGIvU291cmNlL2NtX2dldF9kYXRlLmMKaW5kZXggNGJlZjgwMy4uNDlmNTU3NyAxMDA2NDQKLS0tIGEvU291cmNlL2NtX2dldF9kYXRlLmMKKysrIGIvU291cmNlL2NtX2dldF9kYXRlLmMKQEAgLTIsNiArMiwxMCBAQAogICAgZmlsZSBDb3B5cmlnaHQudHh0IG9yIGh0dHBzOi8vY21ha2Uub3JnL2xpY2Vuc2luZyBmb3IgZGV0YWlscy4gICovCiAjaW5jbHVkZSAiY21fZ2V0X2RhdGUuaCIKIAorLy8gRklYTUU6IFRoaXMgc3VwcHJlc3NlcyB1c2Ugb2YgbG9jYWx0aW1lX3IgYmVjYXVzZSBhcmNoaXZlX2dldGRhdGUuYworLy8gZGVwZW5kcyB0aGUgcmVzdCBvZiBsaWJhcmNoaXZlJ3MgY2hlY2tzIGZvciB0aGF0LgorI2RlZmluZSBDTV9HRVRfREFURQorCiAjZGVmaW5lIF9fYXJjaGl2ZV9nZXRfZGF0ZSBjbV9nZXRfZGF0ZQogCiAjaW5jbHVkZSAiLi4vVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZ2V0ZGF0ZS5jIgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlLmN4eCBiL1NvdXJjZS9jbWFrZS5jeHgKaW5kZXggYTk5ZDlhNi4uMmVjODkzZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlLmN4eAorKysgYi9Tb3VyY2UvY21ha2UuY3h4CkBAIC05LDYgKzksNyBAQAogI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDxzdGRleGNlcHQ+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAogI2luY2x1ZGUgPGNtL21lbW9yeT4KQEAgLTIzLDYgKzI0LDcgQEAKICNpbmNsdWRlICJjbXN5cy9HbG9iLmh4eCIKICNpbmNsdWRlICJjbXN5cy9SZWd1bGFyRXhwcmVzc2lvbi5oeHgiCiAKKyNpbmNsdWRlICJjbV9zdGF0aWNfc3RyaW5nX3ZpZXcuaHh4IgogI2luY2x1ZGUgImNtX3N5c19zdGF0LmgiCiAKICNpbmNsdWRlICJjbUFsZ29yaXRobXMuaCIKQEAgLTM5LDYgKzQxLDkgQEAKICNpbmNsdWRlICJjbUxpbmtMaW5lQ29tcHV0ZXIuaCIKICNpbmNsdWRlICJjbUxvY2FsR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiY21NYWtlZmlsZS5oIgorI2lmICFkZWZpbmVkKENNQUtFX0JPT1RTVFJBUCkKKyMgIGluY2x1ZGUgImNtTWFrZWZpbGVQcm9maWxpbmdEYXRhLmgiCisjZW5kaWYKICNpbmNsdWRlICJjbU1lc3Nlbmdlci5oIgogI2luY2x1ZGUgImNtU3RhdGUuaCIKICNpbmNsdWRlICJjbVN0YXRlRGlyZWN0b3J5LmgiCkBAIC0yODgsNyArMjkzLDcgQEAKICAgYm9vbCBmaW5kUGFja2FnZU1vZGUgPSBmYWxzZTsKICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkgPCBhcmdzLnNpemUoKTsgKytpKSB7CiAgICAgc3RkOjpzdHJpbmcgY29uc3QmIGFyZyA9IGFyZ3NbaV07Ci0gICAgaWYgKGFyZy5maW5kKCItRCIsIDApID09IDApIHsKKyAgICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi1EIikpIHsKICAgICAgIHN0ZDo6c3RyaW5nIGVudHJ5ID0gYXJnLnN1YnN0cigyKTsKICAgICAgIGlmIChlbnRyeS5lbXB0eSgpKSB7CiAgICAgICAgICsraTsKQEAgLTM3Nyw3ICszODIsNyBAQAogICAgICAgICAvLyAtV25vLWVycm9yPTxuYW1lPgogICAgICAgICB0aGlzLT5EaWFnTGV2ZWxzW25hbWVdID0gc3RkOjptaW4odGhpcy0+RGlhZ0xldmVsc1tuYW1lXSwgRElBR19XQVJOKTsKICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItVSIsIDApID09IDApIHsKKyAgICB9IGVsc2UgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItVSIpKSB7CiAgICAgICBzdGQ6OnN0cmluZyBlbnRyeVBhdHRlcm4gPSBhcmcuc3Vic3RyKDIpOwogICAgICAgaWYgKGVudHJ5UGF0dGVybi5lbXB0eSgpKSB7CiAgICAgICAgICsraTsKQEAgLTQwNyw3ICs0MTIsNyBAQAogICAgICAgZm9yIChzdGQ6OnN0cmluZyBjb25zdCYgY3VycmVudEVudHJ5IDogZW50cmllc1RvRGVsZXRlKSB7CiAgICAgICAgIHRoaXMtPlN0YXRlLT5SZW1vdmVDYWNoZUVudHJ5KGN1cnJlbnRFbnRyeSk7CiAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhcmcuZmluZCgiLUMiLCAwKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLUMiKSkgewogICAgICAgc3RkOjpzdHJpbmcgcGF0aCA9IGFyZy5zdWJzdHIoMik7CiAgICAgICBpZiAocGF0aC5lbXB0eSgpKSB7CiAgICAgICAgICsraTsKQEAgLTQyMiw3ICs0MjcsNyBAQAogICAgICAgLy8gUmVzb2x2ZSBzY3JpcHQgcGF0aCBzcGVjaWZpZWQgb24gY29tbWFuZCBsaW5lIHJlbGF0aXZlIHRvICRQV0QuCiAgICAgICBwYXRoID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChwYXRoKTsKICAgICAgIHRoaXMtPlJlYWRMaXN0RmlsZShhcmdzLCBwYXRoKTsKLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItUCIsIDApID09IDApIHsKKyAgICB9IGVsc2UgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItUCIpKSB7CiAgICAgICBpKys7CiAgICAgICBpZiAoaSA+PSBhcmdzLnNpemUoKSkgewogICAgICAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigiLVAgbXVzdCBiZSBmb2xsb3dlZCBieSBhIGZpbGUgbmFtZS4iKTsKQEAgLTQ0MSw3ICs0NDYsNyBAQAogICAgICAgdGhpcy0+U2V0SG9tZU91dHB1dERpcmVjdG9yeSgKICAgICAgICAgY21TeXN0ZW1Ub29sczo6R2V0Q3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKSk7CiAgICAgICB0aGlzLT5SZWFkTGlzdEZpbGUoYXJncywgcGF0aCk7Ci0gICAgfSBlbHNlIGlmIChhcmcuZmluZCgiLS1maW5kLXBhY2thZ2UiLCAwKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLS1maW5kLXBhY2thZ2UiKSkgewogICAgICAgZmluZFBhY2thZ2VNb2RlID0gdHJ1ZTsKICAgICB9CiAgIH0KQEAgLTUyMCwxMSArNTI1LDExIEBACiAgICAgaWYgKCFxdWlldCkgewogICAgICAgcHJpbnRmKCIlcyBub3QgZm91bmQuXG4iLCBwYWNrYWdlTmFtZS5jX3N0cigpKTsKICAgICB9Ci0gIH0gZWxzZSBpZiAobW9kZSA9PSAiRVhJU1QiKSB7CisgIH0gZWxzZSBpZiAobW9kZSA9PSAiRVhJU1QiX3MpIHsKICAgICBpZiAoIXF1aWV0KSB7CiAgICAgICBwcmludGYoIiVzIGZvdW5kLlxuIiwgcGFja2FnZU5hbWUuY19zdHIoKSk7CiAgICAgfQotICB9IGVsc2UgaWYgKG1vZGUgPT0gIkNPTVBJTEUiKSB7CisgIH0gZWxzZSBpZiAobW9kZSA9PSAiQ09NUElMRSJfcykgewogICAgIHN0ZDo6c3RyaW5nIGluY2x1ZGVzID0gbWYtPkdldFNhZmVEZWZpbml0aW9uKCJQQUNLQUdFX0lOQ0xVREVfRElSUyIpOwogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBpbmNsdWRlRGlycyA9IGNtRXhwYW5kZWRMaXN0KGluY2x1ZGVzKTsKIApAQCAtNTM1LDcgKzU0MCw3IEBACiAKICAgICBzdGQ6OnN0cmluZyBkZWZpbml0aW9ucyA9IG1mLT5HZXRTYWZlRGVmaW5pdGlvbigiUEFDS0FHRV9ERUZJTklUSU9OUyIpOwogICAgIHByaW50ZigiJXMgJXNcbiIsIGluY2x1ZGVGbGFncy5jX3N0cigpLCBkZWZpbml0aW9ucy5jX3N0cigpKTsKLSAgfSBlbHNlIGlmIChtb2RlID09ICJMSU5LIikgeworICB9IGVsc2UgaWYgKG1vZGUgPT0gIkxJTksiX3MpIHsKICAgICBjb25zdCBjaGFyKiB0YXJnZXROYW1lID0gImR1bW15IjsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gc3JjczsKICAgICBjbVRhcmdldCogdGd0ID0gbWYtPkFkZEV4ZWN1dGFibGUodGFyZ2V0TmFtZSwgc3JjcywgdHJ1ZSk7CkBAIC02MTMsOSArNjE4LDEzIEBACiB7CiAgIGJvb2wgaGF2ZVRvb2xzZXQgPSBmYWxzZTsKICAgYm9vbCBoYXZlUGxhdGZvcm0gPSBmYWxzZTsKKyNpZiAhZGVmaW5lZChDTUFLRV9CT09UU1RSQVApCisgIHN0ZDo6c3RyaW5nIHByb2ZpbGluZ0Zvcm1hdDsKKyAgc3RkOjpzdHJpbmcgcHJvZmlsaW5nT3V0cHV0OworI2VuZGlmCiAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDwgYXJncy5zaXplKCk7ICsraSkgewogICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBhcmcgPSBhcmdzW2ldOwotICAgIGlmIChhcmcuZmluZCgiLUgiLCAwKSA9PSAwIHx8IGFyZy5maW5kKCItUyIsIDApID09IDApIHsKKyAgICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi1IIikgfHwgY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi1TIikpIHsKICAgICAgIHN0ZDo6c3RyaW5nIHBhdGggPSBhcmcuc3Vic3RyKDIpOwogICAgICAgaWYgKHBhdGguZW1wdHkoKSkgewogICAgICAgICArK2k7CkBAIC02MzMsOSArNjQyLDkgQEAKICAgICAgIHBhdGggPSBjbVN5c3RlbVRvb2xzOjpDb2xsYXBzZUZ1bGxQYXRoKHBhdGgpOwogICAgICAgY21TeXN0ZW1Ub29sczo6Q29udmVydFRvVW5peFNsYXNoZXMocGF0aCk7CiAgICAgICB0aGlzLT5TZXRIb21lRGlyZWN0b3J5KHBhdGgpOwotICAgIH0gZWxzZSBpZiAoYXJnLmZpbmQoIi1PIiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi1PIikpIHsKICAgICAgIC8vIFRoZXJlIGlzIG5vIGxvY2FsIGdlbmVyYXRlIGFueW1vcmUuICBJZ25vcmUgLU8gb3B0aW9uLgotICAgIH0gZWxzZSBpZiAoYXJnLmZpbmQoIi1CIiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi1CIikpIHsKICAgICAgIHN0ZDo6c3RyaW5nIHBhdGggPSBhcmcuc3Vic3RyKDIpOwogICAgICAgaWYgKHBhdGguZW1wdHkoKSkgewogICAgICAgICArK2k7CkBAIC02NTQsNTQgKzY2Myw1NCBAQAogICAgICAgY21TeXN0ZW1Ub29sczo6Q29udmVydFRvVW5peFNsYXNoZXMocGF0aCk7CiAgICAgICB0aGlzLT5TZXRIb21lT3V0cHV0RGlyZWN0b3J5KHBhdGgpOwogICAgIH0gZWxzZSBpZiAoKGkgPCBhcmdzLnNpemUoKSAtIDIpICYmCi0gICAgICAgICAgICAgICAoYXJnLmZpbmQoIi0tY2hlY2stYnVpbGQtc3lzdGVtIiwgMCkgPT0gMCkpIHsKKyAgICAgICAgICAgICAgIGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItLWNoZWNrLWJ1aWxkLXN5c3RlbSIpKSB7CiAgICAgICB0aGlzLT5DaGVja0J1aWxkU3lzdGVtQXJndW1lbnQgPSBhcmdzWysraV07CiAgICAgICB0aGlzLT5DbGVhckJ1aWxkU3lzdGVtID0gKGF0b2koYXJnc1srK2ldLmNfc3RyKCkpID4gMCk7CiAgICAgfSBlbHNlIGlmICgoaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgJiYKLSAgICAgICAgICAgICAgIChhcmcuZmluZCgiLS1jaGVjay1zdGFtcC1maWxlIiwgMCkgPT0gMCkpIHsKKyAgICAgICAgICAgICAgIGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItLWNoZWNrLXN0YW1wLWZpbGUiKSkgewogICAgICAgdGhpcy0+Q2hlY2tTdGFtcEZpbGUgPSBhcmdzWysraV07CiAgICAgfSBlbHNlIGlmICgoaSA8IGFyZ3Muc2l6ZSgpIC0gMSkgJiYKLSAgICAgICAgICAgICAgIChhcmcuZmluZCgiLS1jaGVjay1zdGFtcC1saXN0IiwgMCkgPT0gMCkpIHsKKyAgICAgICAgICAgICAgIGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItLWNoZWNrLXN0YW1wLWxpc3QiKSkgewogICAgICAgdGhpcy0+Q2hlY2tTdGFtcExpc3QgPSBhcmdzWysraV07Ci0gICAgfSBlbHNlIGlmIChhcmcgPT0gIi0tcmVnZW5lcmF0ZS1kdXJpbmctYnVpbGQiKSB7CisgICAgfSBlbHNlIGlmIChhcmcgPT0gIi0tcmVnZW5lcmF0ZS1kdXJpbmctYnVpbGQiX3MpIHsKICAgICAgIHRoaXMtPlJlZ2VuZXJhdGVEdXJpbmdCdWlsZCA9IHRydWU7CiAgICAgfQogI2lmIGRlZmluZWQoQ01BS0VfSEFWRV9WU19HRU5FUkFUT1JTKQogICAgIGVsc2UgaWYgKChpIDwgYXJncy5zaXplKCkgLSAxKSAmJgotICAgICAgICAgICAgIChhcmcuZmluZCgiLS12cy1zb2x1dGlvbi1maWxlIiwgMCkgPT0gMCkpIHsKKyAgICAgICAgICAgICBjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLS12cy1zb2x1dGlvbi1maWxlIikpIHsKICAgICAgIHRoaXMtPlZTU29sdXRpb25GaWxlID0gYXJnc1srK2ldOwogICAgIH0KICNlbmRpZgotICAgIGVsc2UgaWYgKGFyZy5maW5kKCItRCIsIDApID09IDApIHsKKyAgICBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLUQiKSkgewogICAgICAgLy8gc2tpcCBmb3Igbm93CiAgICAgICAvLyBpbiBjYXNlICctRCB2YXI9dmFsJyBpcyBnaXZlbiwgYWxzbyBza2lwIHRoZSBuZXh0CiAgICAgICAvLyBpbiBjYXNlICctRHZhcj12YWwnIGlzIGdpdmVuLCBkb24ndCBza2lwIHRoZSBuZXh0CiAgICAgICBpZiAoYXJnLnNpemUoKSA9PSAyKSB7CiAgICAgICAgICsraTsKICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItVSIsIDApID09IDApIHsKKyAgICB9IGVsc2UgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItVSIpKSB7CiAgICAgICAvLyBza2lwIGZvciBub3cKICAgICAgIC8vIGluIGNhc2UgJy1VIHZhcicgaXMgZ2l2ZW4sIGFsc28gc2tpcCB0aGUgbmV4dAogICAgICAgLy8gaW4gY2FzZSAnLVV2YXInIGlzIGdpdmVuLCBkb24ndCBza2lwIHRoZSBuZXh0CiAgICAgICBpZiAoYXJnLnNpemUoKSA9PSAyKSB7CiAgICAgICAgICsraTsKICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItQyIsIDApID09IDApIHsKKyAgICB9IGVsc2UgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItQyIpKSB7CiAgICAgICAvLyBza2lwIGZvciBub3cKICAgICAgIC8vIGluIGNhc2UgJy1DIHBhdGgnIGlzIGdpdmVuLCBhbHNvIHNraXAgdGhlIG5leHQKICAgICAgIC8vIGluIGNhc2UgJy1DcGF0aCcgaXMgZ2l2ZW4sIGRvbid0IHNraXAgdGhlIG5leHQKICAgICAgIGlmIChhcmcuc2l6ZSgpID09IDIpIHsKICAgICAgICAgKytpOwogICAgICAgfQotICAgIH0gZWxzZSBpZiAoYXJnLmZpbmQoIi1QIiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi1QIikpIHsKICAgICAgIC8vIHNraXAgZm9yIG5vdwogICAgICAgaSsrOwotICAgIH0gZWxzZSBpZiAoYXJnLmZpbmQoIi0tZmluZC1wYWNrYWdlIiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0tZmluZC1wYWNrYWdlIikpIHsKICAgICAgIC8vIHNraXAgZm9yIG5vdwogICAgICAgaSsrOwotICAgIH0gZWxzZSBpZiAoYXJnLmZpbmQoIi1XIiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi1XIikpIHsKICAgICAgIC8vIHNraXAgZm9yIG5vdwotICAgIH0gZWxzZSBpZiAoYXJnLmZpbmQoIi0tZ3JhcGh2aXo9IiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0tZ3JhcGh2aXo9IikpIHsKICAgICAgIHN0ZDo6c3RyaW5nIHBhdGggPSBhcmcuc3Vic3RyKHN0cmxlbigiLS1ncmFwaHZpej0iKSk7CiAgICAgICBwYXRoID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChwYXRoKTsKICAgICAgIGNtU3lzdGVtVG9vbHM6OkNvbnZlcnRUb1VuaXhTbGFzaGVzKHBhdGgpOwpAQCAtNzEwLDEzICs3MTksMTMgQEAKICAgICAgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoIk5vIGZpbGUgc3BlY2lmaWVkIGZvciAtLWdyYXBodml6Iik7CiAgICAgICAgIHJldHVybjsKICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItLWRlYnVnLXRyeWNvbXBpbGUiLCAwKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLS1kZWJ1Zy10cnljb21waWxlIikpIHsKICAgICAgIHN0ZDo6Y291dCA8PCAiZGVidWcgdHJ5Y29tcGlsZSBvblxuIjsKICAgICAgIHRoaXMtPkRlYnVnVHJ5Q29tcGlsZU9uKCk7Ci0gICAgfSBlbHNlIGlmIChhcmcuZmluZCgiLS1kZWJ1Zy1vdXRwdXQiLCAwKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLS1kZWJ1Zy1vdXRwdXQiKSkgewogICAgICAgc3RkOjpjb3V0IDw8ICJSdW5uaW5nIHdpdGggZGVidWcgb3V0cHV0IG9uLlxuIjsKICAgICAgIHRoaXMtPlNldERlYnVnT3V0cHV0T24odHJ1ZSk7Ci0gICAgfSBlbHNlIGlmIChhcmcuZmluZCgiLS1sb2ctbGV2ZWw9IiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0tbG9nLWxldmVsPSIpKSB7CiAgICAgICBjb25zdCBhdXRvIGxvZ0xldmVsID0KICAgICAgICAgU3RyaW5nVG9Mb2dMZXZlbChhcmcuc3Vic3RyKHNpemVvZigiLS1sb2ctbGV2ZWw9IikgLSAxKSk7CiAgICAgICBpZiAobG9nTGV2ZWwgPT0gTG9nTGV2ZWw6OkxPR19VTkRFRklORUQpIHsKQEAgLTcyNSw3ICs3MzQsNyBAQAogICAgICAgfQogICAgICAgdGhpcy0+U2V0TG9nTGV2ZWwobG9nTGV2ZWwpOwogICAgICAgdGhpcy0+TG9nTGV2ZWxXYXNTZXRWaWFDTEkgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoYXJnLmZpbmQoIi0tbG9nbGV2ZWw9IiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0tbG9nbGV2ZWw9IikpIHsKICAgICAgIC8vIFRoaXMgaXMgc3VwcG9ydGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBUaGlzIG9wdGlvbiBvbmx5CiAgICAgICAvLyBhcHBlYXJlZCBpbiB0aGUgMy4xNS54IHJlbGVhc2Ugc2VyaWVzIGFuZCB3YXMgcmVuYW1lZCB0bwogICAgICAgLy8gLS1sb2ctbGV2ZWwgaW4gMy4xNi4wCkBAIC03MzcsMTYgKzc0NiwxNiBAQAogICAgICAgfQogICAgICAgdGhpcy0+U2V0TG9nTGV2ZWwobG9nTGV2ZWwpOwogICAgICAgdGhpcy0+TG9nTGV2ZWxXYXNTZXRWaWFDTEkgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoYXJnID09ICItLWxvZy1jb250ZXh0IikgeworICAgIH0gZWxzZSBpZiAoYXJnID09ICItLWxvZy1jb250ZXh0Il9zKSB7CiAgICAgICB0aGlzLT5TZXRTaG93TG9nQ29udGV4dCh0cnVlKTsKLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItLWRlYnVnLWZpbmQiLCAwKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLS1kZWJ1Zy1maW5kIikpIHsKICAgICAgIHN0ZDo6Y291dCA8PCAiUnVubmluZyB3aXRoIGRlYnVnIG91dHB1dCBvbiBmb3IgdGhlIGBmaW5kYCBjb21tYW5kcy5cbiI7CiAgICAgICB0aGlzLT5TZXREZWJ1Z0ZpbmRPdXRwdXRPbih0cnVlKTsKLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItLXRyYWNlLWV4cGFuZCIsIDApID09IDApIHsKKyAgICB9IGVsc2UgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItLXRyYWNlLWV4cGFuZCIpKSB7CiAgICAgICBzdGQ6OmNvdXQgPDwgIlJ1bm5pbmcgd2l0aCBleHBhbmRlZCB0cmFjZSBvdXRwdXQgb24uXG4iOwogICAgICAgdGhpcy0+U2V0VHJhY2UodHJ1ZSk7CiAgICAgICB0aGlzLT5TZXRUcmFjZUV4cGFuZCh0cnVlKTsKLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItLXRyYWNlLWZvcm1hdD0iLCAwKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLS10cmFjZS1mb3JtYXQ9IikpIHsKICAgICAgIHRoaXMtPlNldFRyYWNlKHRydWUpOwogICAgICAgY29uc3QgYXV0byB0cmFjZUZvcm1hdCA9CiAgICAgICAgIFN0cmluZ1RvVHJhY2VGb3JtYXQoYXJnLnN1YnN0cihzdHJsZW4oIi0tdHJhY2UtZm9ybWF0PSIpKSk7CkBAIC03NTYsMzUgKzc2NSwzNSBAQAogICAgICAgICByZXR1cm47CiAgICAgICB9CiAgICAgICB0aGlzLT5TZXRUcmFjZUZvcm1hdCh0cmFjZUZvcm1hdCk7Ci0gICAgfSBlbHNlIGlmIChhcmcuZmluZCgiLS10cmFjZS1zb3VyY2U9IiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0tdHJhY2Utc291cmNlPSIpKSB7CiAgICAgICBzdGQ6OnN0cmluZyBmaWxlID0gYXJnLnN1YnN0cihzdHJsZW4oIi0tdHJhY2Utc291cmNlPSIpKTsKICAgICAgIGNtU3lzdGVtVG9vbHM6OkNvbnZlcnRUb1VuaXhTbGFzaGVzKGZpbGUpOwogICAgICAgdGhpcy0+QWRkVHJhY2VTb3VyY2UoZmlsZSk7CiAgICAgICB0aGlzLT5TZXRUcmFjZSh0cnVlKTsKLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItLXRyYWNlLXJlZGlyZWN0PSIsIDApID09IDApIHsKKyAgICB9IGVsc2UgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItLXRyYWNlLXJlZGlyZWN0PSIpKSB7CiAgICAgICBzdGQ6OnN0cmluZyBmaWxlID0gYXJnLnN1YnN0cihzdHJsZW4oIi0tdHJhY2UtcmVkaXJlY3Q9IikpOwogICAgICAgY21TeXN0ZW1Ub29sczo6Q29udmVydFRvVW5peFNsYXNoZXMoZmlsZSk7CiAgICAgICB0aGlzLT5TZXRUcmFjZUZpbGUoZmlsZSk7CiAgICAgICB0aGlzLT5TZXRUcmFjZSh0cnVlKTsKLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItLXRyYWNlIiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0tdHJhY2UiKSkgewogICAgICAgc3RkOjpjb3V0IDw8ICJSdW5uaW5nIHdpdGggdHJhY2Ugb3V0cHV0IG9uLlxuIjsKICAgICAgIHRoaXMtPlNldFRyYWNlKHRydWUpOwogICAgICAgdGhpcy0+U2V0VHJhY2VFeHBhbmQoZmFsc2UpOwotICAgIH0gZWxzZSBpZiAoYXJnLmZpbmQoIi0td2Fybi11bmluaXRpYWxpemVkIiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0td2Fybi11bmluaXRpYWxpemVkIikpIHsKICAgICAgIHN0ZDo6Y291dCA8PCAiV2FybiBhYm91dCB1bmluaXRpYWxpemVkIHZhbHVlcy5cbiI7CiAgICAgICB0aGlzLT5TZXRXYXJuVW5pbml0aWFsaXplZCh0cnVlKTsKLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItLXdhcm4tdW51c2VkLXZhcnMiLCAwKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLS13YXJuLXVudXNlZC12YXJzIikpIHsKICAgICAgIHN0ZDo6Y291dCA8PCAiRmluZGluZyB1bnVzZWQgdmFyaWFibGVzLlxuIjsKICAgICAgIHRoaXMtPlNldFdhcm5VbnVzZWQodHJ1ZSk7Ci0gICAgfSBlbHNlIGlmIChhcmcuZmluZCgiLS1uby13YXJuLXVudXNlZC1jbGkiLCAwKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLS1uby13YXJuLXVudXNlZC1jbGkiKSkgewogICAgICAgc3RkOjpjb3V0IDw8ICJOb3Qgc2VhcmNoaW5nIGZvciB1bnVzZWQgdmFyaWFibGVzIGdpdmVuIG9uIHRoZSAiCiAgICAgICAgICAgICAgICAgPDwgImNvbW1hbmQgbGluZS5cbiI7CiAgICAgICB0aGlzLT5TZXRXYXJuVW51c2VkQ2xpKGZhbHNlKTsKLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItLWNoZWNrLXN5c3RlbS12YXJzIiwgMCkgPT0gMCkgeworICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0tY2hlY2stc3lzdGVtLXZhcnMiKSkgewogICAgICAgc3RkOjpjb3V0IDw8ICJBbHNvIGNoZWNrIHN5c3RlbSBmaWxlcyB3aGVuIHdhcm5pbmcgYWJvdXQgdW51c2VkIGFuZCAiCiAgICAgICAgICAgICAgICAgPDwgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuIjsKICAgICAgIHRoaXMtPlNldENoZWNrU3lzdGVtVmFycyh0cnVlKTsKLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItQSIsIDApID09IDApIHsKKyAgICB9IGVsc2UgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItQSIpKSB7CiAgICAgICBzdGQ6OnN0cmluZyB2YWx1ZSA9IGFyZy5zdWJzdHIoMik7CiAgICAgICBpZiAodmFsdWUuZW1wdHkoKSkgewogICAgICAgICArK2k7CkBAIC04MDAsNyArODA5LDcgQEAKICAgICAgIH0KICAgICAgIHRoaXMtPlNldEdlbmVyYXRvclBsYXRmb3JtKHZhbHVlKTsKICAgICAgIGhhdmVQbGF0Zm9ybSA9IHRydWU7Ci0gICAgfSBlbHNlIGlmIChhcmcuZmluZCgiLVQiLCAwKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLVQiKSkgewogICAgICAgc3RkOjpzdHJpbmcgdmFsdWUgPSBhcmcuc3Vic3RyKDIpOwogICAgICAgaWYgKHZhbHVlLmVtcHR5KCkpIHsKICAgICAgICAgKytpOwpAQCAtODE2LDcgKzgyNSw3IEBACiAgICAgICB9CiAgICAgICB0aGlzLT5TZXRHZW5lcmF0b3JUb29sc2V0KHZhbHVlKTsKICAgICAgIGhhdmVUb29sc2V0ID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKGFyZy5maW5kKCItRyIsIDApID09IDApIHsKKyAgICB9IGVsc2UgaWYgKGNtSGFzTGl0ZXJhbFByZWZpeChhcmcsICItRyIpKSB7CiAgICAgICBzdGQ6OnN0cmluZyB2YWx1ZSA9IGFyZy5zdWJzdHIoMik7CiAgICAgICBpZiAodmFsdWUuZW1wdHkoKSkgewogICAgICAgICArK2k7CkBAIC04NDAsNiArODQ5LDIwIEBACiAgICAgICAgIHJldHVybjsKICAgICAgIH0KICAgICAgIHRoaXMtPlNldEdsb2JhbEdlbmVyYXRvcihzdGQ6Om1vdmUoZ2VuKSk7CisjaWYgIWRlZmluZWQoQ01BS0VfQk9PVFNUUkFQKQorICAgIH0gZWxzZSBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0tcHJvZmlsaW5nLWZvcm1hdCIpKSB7CisgICAgICBwcm9maWxpbmdGb3JtYXQgPSBhcmcuc3Vic3RyKHN0cmxlbigiLS1wcm9maWxpbmctZm9ybWF0PSIpKTsKKyAgICAgIGlmIChwcm9maWxpbmdGb3JtYXQuZW1wdHkoKSkgeworICAgICAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigiTm8gZm9ybWF0IHNwZWNpZmllZCBmb3IgLS1wcm9maWxpbmctZm9ybWF0Iik7CisgICAgICB9CisgICAgfSBlbHNlIGlmIChjbUhhc0xpdGVyYWxQcmVmaXgoYXJnLCAiLS1wcm9maWxpbmctb3V0cHV0IikpIHsKKyAgICAgIHByb2ZpbGluZ091dHB1dCA9IGFyZy5zdWJzdHIoc3RybGVuKCItLXByb2ZpbGluZy1vdXRwdXQ9IikpOworICAgICAgcHJvZmlsaW5nT3V0cHV0ID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChwcm9maWxpbmdPdXRwdXQpOworICAgICAgY21TeXN0ZW1Ub29sczo6Q29udmVydFRvVW5peFNsYXNoZXMocHJvZmlsaW5nT3V0cHV0KTsKKyAgICAgIGlmIChwcm9maWxpbmdPdXRwdXQuZW1wdHkoKSkgeworICAgICAgICBjbVN5c3RlbVRvb2xzOjpFcnJvcigiTm8gcGF0aCBzcGVjaWZpZWQgZm9yIC0tcHJvZmlsaW5nLW91dHB1dCIpOworICAgICAgfQorI2VuZGlmCiAgICAgfQogICAgIC8vIG5vIG9wdGlvbiBhc3N1bWUgaXQgaXMgdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBvciBhbiBleGlzdGluZyBidWlsZAogICAgIGVsc2UgewpAQCAtODU3LDYgKzg4MCwyOSBAQAogICAgIH0KICAgfQogCisjaWYgIWRlZmluZWQoQ01BS0VfQk9PVFNUUkFQKQorICBpZiAoIXByb2ZpbGluZ091dHB1dC5lbXB0eSgpIHx8ICFwcm9maWxpbmdGb3JtYXQuZW1wdHkoKSkgeworICAgIGlmIChwcm9maWxpbmdPdXRwdXQuZW1wdHkoKSkgeworICAgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoCisgICAgICAgICItLXByb2ZpbGluZy1mb3JtYXQgc3BlY2lmaWVkIGJ1dCBubyAtLXByb2ZpbGluZy1vdXRwdXQhIik7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChwcm9maWxpbmdGb3JtYXQgPT0gImdvb2dsZS10cmFjZSJfcykgeworICAgICAgdHJ5IHsKKyAgICAgICAgdGhpcy0+UHJvZmlsaW5nT3V0cHV0ID0KKyAgICAgICAgICBjbTo6bWFrZV91bmlxdWU8Y21NYWtlZmlsZVByb2ZpbGluZ0RhdGE+KHByb2ZpbGluZ091dHB1dCk7CisgICAgICB9IGNhdGNoIChzdGQ6OnJ1bnRpbWVfZXJyb3ImIGUpIHsKKyAgICAgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoCisgICAgICAgICAgY21TdHJDYXQoIkNvdWxkIG5vdCBzdGFydCBwcm9maWxpbmc6ICIsIGUud2hhdCgpKSk7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgY21TeXN0ZW1Ub29sczo6RXJyb3IoIkludmFsaWQgZm9ybWF0IHNwZWNpZmllZCBmb3IgLS1wcm9maWxpbmctZm9ybWF0Iik7CisgICAgICByZXR1cm47CisgICAgfQorICB9CisjZW5kaWYKKwogICBjb25zdCBib29sIGhhdmVTb3VyY2VEaXIgPSAhdGhpcy0+R2V0SG9tZURpcmVjdG9yeSgpLmVtcHR5KCk7CiAgIGNvbnN0IGJvb2wgaGF2ZUJpbmFyeURpciA9ICF0aGlzLT5HZXRIb21lT3V0cHV0RGlyZWN0b3J5KCkuZW1wdHkoKTsKIApAQCAtOTkyLDkgKzEwMzgsOSBAQAogICAgIHN0ZDo6c3RyaW5nIGZ1bGxQYXRoID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChhcmcpOwogICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBjbVN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZU5hbWUoZnVsbFBhdGgpOwogICAgIG5hbWUgPSBjbVN5c3RlbVRvb2xzOjpMb3dlckNhc2UobmFtZSk7Ci0gICAgaWYgKG5hbWUgPT0gImNtYWtlY2FjaGUudHh0IikgeworICAgIGlmIChuYW1lID09ICJjbWFrZWNhY2hlLnR4dCJfcykgewogICAgICAgY2FjaGVQYXRoID0gY21TeXN0ZW1Ub29sczo6R2V0RmlsZW5hbWVQYXRoKGZ1bGxQYXRoKTsKLSAgICB9IGVsc2UgaWYgKG5hbWUgPT0gImNtYWtlbGlzdHMudHh0IikgeworICAgIH0gZWxzZSBpZiAobmFtZSA9PSAiY21ha2VsaXN0cy50eHQiX3MpIHsKICAgICAgIGxpc3RQYXRoID0gY21TeXN0ZW1Ub29sczo6R2V0RmlsZW5hbWVQYXRoKGZ1bGxQYXRoKTsKICAgICB9CiAgIH0gZWxzZSB7CkBAIC0xMDAzLDcgKzEwNDksNyBAQAogICAgIHN0ZDo6c3RyaW5nIGZ1bGxQYXRoID0gY21TeXN0ZW1Ub29sczo6Q29sbGFwc2VGdWxsUGF0aChhcmcpOwogICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBjbVN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZU5hbWUoZnVsbFBhdGgpOwogICAgIG5hbWUgPSBjbVN5c3RlbVRvb2xzOjpMb3dlckNhc2UobmFtZSk7Ci0gICAgaWYgKG5hbWUgPT0gImNtYWtlY2FjaGUudHh0IiB8fCBuYW1lID09ICJjbWFrZWxpc3RzLnR4dCIpIHsKKyAgICBpZiAobmFtZSA9PSAiY21ha2VjYWNoZS50eHQiX3MgfHwgbmFtZSA9PSAiY21ha2VsaXN0cy50eHQiX3MpIHsKICAgICAgIGFyZ0lzRmlsZSA9IHRydWU7CiAgICAgICBsaXN0UGF0aCA9IGNtU3lzdGVtVG9vbHM6OkdldEZpbGVuYW1lUGF0aChmdWxsUGF0aCk7CiAgICAgfSBlbHNlIHsKQEAgLTEwMTQsMTEgKzEwNjAsMTEgQEAKICAgLy8gSWYgdGhlcmUgaXMgYSBDTWFrZUNhY2hlLnR4dCBmaWxlLCB1c2UgaXRzIHNldHRpbmdzLgogICBpZiAoIWNhY2hlUGF0aC5lbXB0eSgpKSB7CiAgICAgaWYgKHRoaXMtPkxvYWRDYWNoZShjYWNoZVBhdGgpKSB7Ci0gICAgICBjb25zdCBjaGFyKiBleGlzdGluZ1ZhbHVlID0KKyAgICAgIGNtUHJvcCBleGlzdGluZ1ZhbHVlID0KICAgICAgICAgdGhpcy0+U3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSgiQ01BS0VfSE9NRV9ESVJFQ1RPUlkiKTsKICAgICAgIGlmIChleGlzdGluZ1ZhbHVlKSB7CiAgICAgICAgIHRoaXMtPlNldEhvbWVPdXRwdXREaXJlY3RvcnkoY2FjaGVQYXRoKTsKLSAgICAgICAgdGhpcy0+U2V0SG9tZURpcmVjdG9yeShleGlzdGluZ1ZhbHVlKTsKKyAgICAgICAgdGhpcy0+U2V0SG9tZURpcmVjdG9yeSgqZXhpc3RpbmdWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICAgIH0KICAgICB9CkBAIC0xMzYxLDEyICsxNDA3LDEyIEBACiAgICAgaSsrOwogICAgIHNhdmUudmFsdWUgPSAqaTsKICAgICB3YXJuaW5nIDw8ICppIDw8ICJcbiI7Ci0gICAgY29uc3QgY2hhciogZXhpc3RpbmdWYWx1ZSA9IHRoaXMtPlN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUoc2F2ZS5rZXkpOworICAgIGNtUHJvcCBleGlzdGluZ1ZhbHVlID0gdGhpcy0+U3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZShzYXZlLmtleSk7CiAgICAgaWYgKGV4aXN0aW5nVmFsdWUpIHsKICAgICAgIHNhdmUudHlwZSA9IHRoaXMtPlN0YXRlLT5HZXRDYWNoZUVudHJ5VHlwZShzYXZlLmtleSk7Ci0gICAgICBpZiAoY29uc3QgY2hhciogaGVscCA9CisgICAgICBpZiAoY21Qcm9wIGhlbHAgPQogICAgICAgICAgICAgdGhpcy0+U3RhdGUtPkdldENhY2hlRW50cnlQcm9wZXJ0eShzYXZlLmtleSwgIkhFTFBTVFJJTkciKSkgewotICAgICAgICBzYXZlLmhlbHAgPSBoZWxwOworICAgICAgICBzYXZlLmhlbHAgPSAqaGVscDsKICAgICAgIH0KICAgICB9CiAgICAgc2F2ZWQucHVzaF9iYWNrKHN0ZDo6bW92ZShzYXZlKSk7CkBAIC0xNDExLDkgKzE0NTcsOSBAQAogICBpZiAodGhpcy0+RGlhZ0xldmVscy5jb3VudCgiZGV2IikgPT0gMSkgewogICAgIGJvb2wgc2V0RGVwcmVjYXRlZFZhcmlhYmxlcyA9IGZhbHNlOwogCi0gICAgY29uc3QgY2hhciogY2FjaGVkV2FybkRlcHJlY2F0ZWQgPQorICAgIGNtUHJvcCBjYWNoZWRXYXJuRGVwcmVjYXRlZCA9CiAgICAgICB0aGlzLT5TdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9XQVJOX0RFUFJFQ0FURUQiKTsKLSAgICBjb25zdCBjaGFyKiBjYWNoZWRFcnJvckRlcHJlY2F0ZWQgPQorICAgIGNtUHJvcCBjYWNoZWRFcnJvckRlcHJlY2F0ZWQgPQogICAgICAgdGhpcy0+U3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSgiQ01BS0VfRVJST1JfREVQUkVDQVRFRCIpOwogCiAgICAgLy8gZG9uJ3Qgb3ZlcndyaXRlIGRlcHJlY2F0ZWQgd2FybmluZyBzZXR0aW5nIGZyb20gYSBwcmV2aW91cyBpbnZvY2F0aW9uCkBAIC0xNDUyLDIzICsxNDk4LDIzIEBACiAgIC8vIENhY2hlIHZhcmlhYmxlcyBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gc2V0IGJ5IGEgcHJldmlvdXMgaW52b2NhdGlvbiwKICAgLy8gc28gd2UgY2Fubm90IHJlbHkgb24gY29tbWFuZCBsaW5lIG9wdGlvbnMgYWxvbmUuIEFsd2F5cyBlbnN1cmUgb3VyCiAgIC8vIG1lc3NlbmdlciBpcyBpbiBzeW5jIHdpdGggdGhlIGNhY2hlLgotICBjb25zdCBjaGFyKiB2YWx1ZSA9IHRoaXMtPlN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUoIkNNQUtFX1dBUk5fREVQUkVDQVRFRCIpOwotICB0aGlzLT5NZXNzZW5nZXItPlNldFN1cHByZXNzRGVwcmVjYXRlZFdhcm5pbmdzKHZhbHVlICYmIGNtSXNPZmYodmFsdWUpKTsKKyAgY21Qcm9wIHZhbHVlID0gdGhpcy0+U3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSgiQ01BS0VfV0FSTl9ERVBSRUNBVEVEIik7CisgIHRoaXMtPk1lc3Nlbmdlci0+U2V0U3VwcHJlc3NEZXByZWNhdGVkV2FybmluZ3ModmFsdWUgJiYgY21Jc09mZigqdmFsdWUpKTsKIAogICB2YWx1ZSA9IHRoaXMtPlN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUoIkNNQUtFX0VSUk9SX0RFUFJFQ0FURUQiKTsKLSAgdGhpcy0+TWVzc2VuZ2VyLT5TZXREZXByZWNhdGVkV2FybmluZ3NBc0Vycm9ycyhjbUlzT24odmFsdWUpKTsKKyAgdGhpcy0+TWVzc2VuZ2VyLT5TZXREZXByZWNhdGVkV2FybmluZ3NBc0Vycm9ycyh2YWx1ZSAmJiBjbUlzT24oKnZhbHVlKSk7CiAKICAgdmFsdWUgPSB0aGlzLT5TdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9TVVBQUkVTU19ERVZFTE9QRVJfV0FSTklOR1MiKTsKLSAgdGhpcy0+TWVzc2VuZ2VyLT5TZXRTdXBwcmVzc0Rldldhcm5pbmdzKGNtSXNPbih2YWx1ZSkpOworICB0aGlzLT5NZXNzZW5nZXItPlNldFN1cHByZXNzRGV2V2FybmluZ3ModmFsdWUgJiYgY21Jc09uKCp2YWx1ZSkpOwogCiAgIHZhbHVlID0gdGhpcy0+U3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSgiQ01BS0VfU1VQUFJFU1NfREVWRUxPUEVSX0VSUk9SUyIpOwotICB0aGlzLT5NZXNzZW5nZXItPlNldERldldhcm5pbmdzQXNFcnJvcnModmFsdWUgJiYgY21Jc09mZih2YWx1ZSkpOworICB0aGlzLT5NZXNzZW5nZXItPlNldERldldhcm5pbmdzQXNFcnJvcnModmFsdWUgJiYgY21Jc09mZigqdmFsdWUpKTsKIAogICBpbnQgcmV0ID0gdGhpcy0+QWN0dWFsQ29uZmlndXJlKCk7Ci0gIGNvbnN0IGNoYXIqIGRlbENhY2hlVmFycyA9CisgIGNtUHJvcCBkZWxDYWNoZVZhcnMgPQogICAgIHRoaXMtPlN0YXRlLT5HZXRHbG9iYWxQcm9wZXJ0eSgiX19DTUFLRV9ERUxFVEVfQ0FDSEVfQ0hBTkdFX1ZBUlNfIik7Ci0gIGlmIChkZWxDYWNoZVZhcnMgJiYgZGVsQ2FjaGVWYXJzWzBdICE9IDApIHsKLSAgICByZXR1cm4gdGhpcy0+SGFuZGxlRGVsZXRlQ2FjaGVWYXJpYWJsZXMoZGVsQ2FjaGVWYXJzKTsKKyAgaWYgKGRlbENhY2hlVmFycyAmJiAhZGVsQ2FjaGVWYXJzLT5lbXB0eSgpKSB7CisgICAgcmV0dXJuIHRoaXMtPkhhbmRsZURlbGV0ZUNhY2hlVmFyaWFibGVzKCpkZWxDYWNoZVZhcnMpOwogICB9CiAgIHJldHVybiByZXQ7CiB9CkBAIC0xODkxLDEzICsxOTM3LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtU3RhdGVFbnVtczo6Q2FjaGVFbnRyeVR5cGUodHlwZSkpOwogICB0aGlzLT5VbndhdGNoVW51c2VkQ2xpKGtleSk7CiAKLSAgaWYgKGtleSA9PSAiQ01BS0VfV0FSTl9ERVBSRUNBVEVEIikgeworICBpZiAoa2V5ID09ICJDTUFLRV9XQVJOX0RFUFJFQ0FURUQiX3MpIHsKICAgICB0aGlzLT5NZXNzZW5nZXItPlNldFN1cHByZXNzRGVwcmVjYXRlZFdhcm5pbmdzKHZhbHVlICYmIGNtSXNPZmYodmFsdWUpKTsKLSAgfSBlbHNlIGlmIChrZXkgPT0gIkNNQUtFX0VSUk9SX0RFUFJFQ0FURUQiKSB7CisgIH0gZWxzZSBpZiAoa2V5ID09ICJDTUFLRV9FUlJPUl9ERVBSRUNBVEVEIl9zKSB7CiAgICAgdGhpcy0+TWVzc2VuZ2VyLT5TZXREZXByZWNhdGVkV2FybmluZ3NBc0Vycm9ycyhjbUlzT24odmFsdWUpKTsKLSAgfSBlbHNlIGlmIChrZXkgPT0gIkNNQUtFX1NVUFBSRVNTX0RFVkVMT1BFUl9XQVJOSU5HUyIpIHsKKyAgfSBlbHNlIGlmIChrZXkgPT0gIkNNQUtFX1NVUFBSRVNTX0RFVkVMT1BFUl9XQVJOSU5HUyJfcykgewogICAgIHRoaXMtPk1lc3Nlbmdlci0+U2V0U3VwcHJlc3NEZXZXYXJuaW5ncyhjbUlzT24odmFsdWUpKTsKLSAgfSBlbHNlIGlmIChrZXkgPT0gIkNNQUtFX1NVUFBSRVNTX0RFVkVMT1BFUl9FUlJPUlMiKSB7CisgIH0gZWxzZSBpZiAoa2V5ID09ICJDTUFLRV9TVVBQUkVTU19ERVZFTE9QRVJfRVJST1JTIl9zKSB7CiAgICAgdGhpcy0+TWVzc2VuZ2VyLT5TZXREZXZXYXJuaW5nc0FzRXJyb3JzKHZhbHVlICYmIGNtSXNPZmYodmFsdWUpKTsKICAgfQogfQpAQCAtMTkzMyw5ICsxOTc5LDEwIEBACiB7CiAgIGF1dG8gZG90cG9zID0gZmlsZS5yZmluZCgnLicpOwogICBpZiAoZG90cG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgYXV0byBleHQgPSBmaWxlLnN1YnN0cihkb3Rwb3MgKyAxKTsKICNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0FQUExFX18pCi0gICAgZXh0ID0gY21TeXN0ZW1Ub29sczo6TG93ZXJDYXNlKGV4dCk7CisgICAgYXV0byBleHQgPSBjbVN5c3RlbVRvb2xzOjpMb3dlckNhc2UoZmlsZS5zdWJzdHIoZG90cG9zICsgMSkpOworI2Vsc2UKKyAgICBhdXRvIGV4dCA9IGNtOjpzdHJpbmdfdmlldyhmaWxlKS5zdWJzdHIoZG90cG9zICsgMSk7CiAjZW5kaWYKICAgICBpZiAodGhpcy0+SXNTb3VyY2VFeHRlbnNpb24oZXh0KSB8fCB0aGlzLT5Jc0hlYWRlckV4dGVuc2lvbihleHQpKSB7CiAgICAgICByZXR1cm4gZmlsZS5zdWJzdHIoMCwgZG90cG9zKTsKQEAgLTIzODMsNyArMjQzMCw3IEBACiAgIHRoaXMtPlN0YXRlLT5BcHBlbmRHbG9iYWxQcm9wZXJ0eShwcm9wLCB2YWx1ZSwgYXNTdHJpbmcpOwogfQogCi1jb25zdCBjaGFyKiBjbWFrZTo6R2V0UHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHByb3ApCitjbVByb3AgY21ha2U6OkdldFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wKQogewogICByZXR1cm4gdGhpcy0+U3RhdGUtPkdldEdsb2JhbFByb3BlcnR5KHByb3ApOwogfQpAQCAtMjQzNSw3ICsyNDgyLDcgQEAKICAgYm9vbCB3cml0ZVRvU3Rkb3V0ID0gdHJ1ZTsKICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkgPCBhcmdzLnNpemUoKTsgKytpKSB7CiAgICAgc3RkOjpzdHJpbmcgY29uc3QmIGFyZyA9IGFyZ3NbaV07Ci0gICAgaWYgKGFyZy5maW5kKCItRyIsIDApID09IDApIHsKKyAgICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi1HIikpIHsKICAgICAgIHN0ZDo6c3RyaW5nIHZhbHVlID0gYXJnLnN1YnN0cigyKTsKICAgICAgIGlmICh2YWx1ZS5lbXB0eSgpKSB7CiAgICAgICAgICsraTsKQEAgLTI2MjQsMTAgKzI2NzEsMTAgQEAKIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjbWFrZTo6R2V0RGVidWdDb25maWdzKCkKIHsKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGNvbmZpZ3M7Ci0gIGlmIChjb25zdCBjaGFyKiBjb25maWdfbGlzdCA9CisgIGlmIChjbVByb3AgY29uZmlnX2xpc3QgPQogICAgICAgICB0aGlzLT5TdGF0ZS0+R2V0R2xvYmFsUHJvcGVydHkoIkRFQlVHX0NPTkZJR1VSQVRJT05TIikpIHsKICAgICAvLyBFeHBhbmQgdGhlIHNwZWNpZmllZCBsaXN0IGFuZCBjb252ZXJ0IHRvIHVwcGVyLWNhc2UuCi0gICAgY21FeHBhbmRMaXN0KGNvbmZpZ19saXN0LCBjb25maWdzKTsKKyAgICBjbUV4cGFuZExpc3QoKmNvbmZpZ19saXN0LCBjb25maWdzKTsKICAgICBzdGQ6OnRyYW5zZm9ybShjb25maWdzLmJlZ2luKCksIGNvbmZpZ3MuZW5kKCksIGNvbmZpZ3MuYmVnaW4oKSwKICAgICAgICAgICAgICAgICAgICBjbVN5c3RlbVRvb2xzOjpVcHBlckNhc2UpOwogICB9CkBAIC0yNjU3LDU5ICsyNzA0LDU4IEBACiAgICAgc3RkOjpjZXJyIDw8ICJFcnJvcjogY291bGQgbm90IGxvYWQgY2FjaGVcbiI7CiAgICAgcmV0dXJuIDE7CiAgIH0KLSAgY29uc3QgY2hhciogY2FjaGVkR2VuZXJhdG9yID0KLSAgICB0aGlzLT5TdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9HRU5FUkFUT1IiKTsKKyAgY21Qcm9wIGNhY2hlZEdlbmVyYXRvciA9IHRoaXMtPlN0YXRlLT5HZXRDYWNoZUVudHJ5VmFsdWUoIkNNQUtFX0dFTkVSQVRPUiIpOwogICBpZiAoIWNhY2hlZEdlbmVyYXRvcikgewogICAgIHN0ZDo6Y2VyciA8PCAiRXJyb3I6IGNvdWxkIG5vdCBmaW5kIENNQUtFX0dFTkVSQVRPUiBpbiBDYWNoZVxuIjsKICAgICByZXR1cm4gMTsKICAgfQotICBhdXRvIGdlbiA9IHRoaXMtPkNyZWF0ZUdsb2JhbEdlbmVyYXRvcihjYWNoZWRHZW5lcmF0b3IpOworICBhdXRvIGdlbiA9IHRoaXMtPkNyZWF0ZUdsb2JhbEdlbmVyYXRvcigqY2FjaGVkR2VuZXJhdG9yKTsKICAgaWYgKCFnZW4pIHsKLSAgICBzdGQ6OmNlcnIgPDwgIkVycm9yOiBjb3VsZCBjcmVhdGUgQ01BS0VfR0VORVJBVE9SIFwiIiA8PCBjYWNoZWRHZW5lcmF0b3IKKyAgICBzdGQ6OmNlcnIgPDwgIkVycm9yOiBjb3VsZCBjcmVhdGUgQ01BS0VfR0VORVJBVE9SIFwiIiA8PCAqY2FjaGVkR2VuZXJhdG9yCiAgICAgICAgICAgICAgIDw8ICJcIlxuIjsKICAgICByZXR1cm4gMTsKICAgfQogICB0aGlzLT5TZXRHbG9iYWxHZW5lcmF0b3Ioc3RkOjptb3ZlKGdlbikpOwotICBjb25zdCBjaGFyKiBjYWNoZWRHZW5lcmF0b3JJbnN0YW5jZSA9CisgIGNtUHJvcCBjYWNoZWRHZW5lcmF0b3JJbnN0YW5jZSA9CiAgICAgdGhpcy0+U3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSgiQ01BS0VfR0VORVJBVE9SX0lOU1RBTkNFIik7CiAgIGlmIChjYWNoZWRHZW5lcmF0b3JJbnN0YW5jZSkgewogICAgIGNtTWFrZWZpbGUgbWYodGhpcy0+R2V0R2xvYmFsR2VuZXJhdG9yKCksIHRoaXMtPkdldEN1cnJlbnRTbmFwc2hvdCgpKTsKLSAgICBpZiAoIXRoaXMtPkdsb2JhbEdlbmVyYXRvci0+U2V0R2VuZXJhdG9ySW5zdGFuY2UoY2FjaGVkR2VuZXJhdG9ySW5zdGFuY2UsCisgICAgaWYgKCF0aGlzLT5HbG9iYWxHZW5lcmF0b3ItPlNldEdlbmVyYXRvckluc3RhbmNlKCpjYWNoZWRHZW5lcmF0b3JJbnN0YW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1mKSkgewogICAgICAgcmV0dXJuIDE7CiAgICAgfQogICB9Ci0gIGNvbnN0IGNoYXIqIGNhY2hlZEdlbmVyYXRvclBsYXRmb3JtID0KKyAgY21Qcm9wIGNhY2hlZEdlbmVyYXRvclBsYXRmb3JtID0KICAgICB0aGlzLT5TdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9HRU5FUkFUT1JfUExBVEZPUk0iKTsKICAgaWYgKGNhY2hlZEdlbmVyYXRvclBsYXRmb3JtKSB7CiAgICAgY21NYWtlZmlsZSBtZih0aGlzLT5HZXRHbG9iYWxHZW5lcmF0b3IoKSwgdGhpcy0+R2V0Q3VycmVudFNuYXBzaG90KCkpOwotICAgIGlmICghdGhpcy0+R2xvYmFsR2VuZXJhdG9yLT5TZXRHZW5lcmF0b3JQbGF0Zm9ybShjYWNoZWRHZW5lcmF0b3JQbGF0Zm9ybSwKKyAgICBpZiAoIXRoaXMtPkdsb2JhbEdlbmVyYXRvci0+U2V0R2VuZXJhdG9yUGxhdGZvcm0oKmNhY2hlZEdlbmVyYXRvclBsYXRmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWYpKSB7CiAgICAgICByZXR1cm4gMTsKICAgICB9CiAgIH0KLSAgY29uc3QgY2hhciogY2FjaGVkR2VuZXJhdG9yVG9vbHNldCA9CisgIGNtUHJvcCBjYWNoZWRHZW5lcmF0b3JUb29sc2V0ID0KICAgICB0aGlzLT5TdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9HRU5FUkFUT1JfVE9PTFNFVCIpOwogICBpZiAoY2FjaGVkR2VuZXJhdG9yVG9vbHNldCkgewogICAgIGNtTWFrZWZpbGUgbWYodGhpcy0+R2V0R2xvYmFsR2VuZXJhdG9yKCksIHRoaXMtPkdldEN1cnJlbnRTbmFwc2hvdCgpKTsKLSAgICBpZiAoIXRoaXMtPkdsb2JhbEdlbmVyYXRvci0+U2V0R2VuZXJhdG9yVG9vbHNldChjYWNoZWRHZW5lcmF0b3JUb29sc2V0LAorICAgIGlmICghdGhpcy0+R2xvYmFsR2VuZXJhdG9yLT5TZXRHZW5lcmF0b3JUb29sc2V0KCpjYWNoZWRHZW5lcmF0b3JUb29sc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsICZtZikpIHsKICAgICAgIHJldHVybiAxOwogICAgIH0KICAgfQogICBzdGQ6OnN0cmluZyBvdXRwdXQ7CiAgIHN0ZDo6c3RyaW5nIHByb2pOYW1lOwotICBjb25zdCBjaGFyKiBjYWNoZWRQcm9qZWN0TmFtZSA9CisgIGNtUHJvcCBjYWNoZWRQcm9qZWN0TmFtZSA9CiAgICAgdGhpcy0+U3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSgiQ01BS0VfUFJPSkVDVF9OQU1FIik7CiAgIGlmICghY2FjaGVkUHJvamVjdE5hbWUpIHsKICAgICBzdGQ6OmNlcnIgPDwgIkVycm9yOiBjb3VsZCBub3QgZmluZCBDTUFLRV9QUk9KRUNUX05BTUUgaW4gQ2FjaGVcbiI7CiAgICAgcmV0dXJuIDE7CiAgIH0KLSAgcHJvak5hbWUgPSBjYWNoZWRQcm9qZWN0TmFtZTsKKyAgcHJvak5hbWUgPSAqY2FjaGVkUHJvamVjdE5hbWU7CiAKLSAgY29uc3QgY2hhciogY2FjaGVkVmVyYm9zZSA9CisgIGNtUHJvcCBjYWNoZWRWZXJib3NlID0KICAgICB0aGlzLT5TdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9WRVJCT1NFX01BS0VGSUxFIik7Ci0gIGlmIChjbUlzT24oY2FjaGVkVmVyYm9zZSkpIHsKKyAgaWYgKGNhY2hlZFZlcmJvc2UgJiYgY21Jc09uKCpjYWNoZWRWZXJib3NlKSkgewogICAgIHZlcmJvc2UgPSB0cnVlOwogICB9CiAKQEAgLTI3OTMsNyArMjgzOSw3IEBACiAgICAgc3RkOjpjZXJyIDw8ICJFcnJvcjogY291bGQgbm90IGxvYWQgY2FjaGVcbiI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9Ci0gIGNvbnN0IGNoYXIqIGdlbk5hbWUgPSB0aGlzLT5TdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9HRU5FUkFUT1IiKTsKKyAgY21Qcm9wIGdlbk5hbWUgPSB0aGlzLT5TdGF0ZS0+R2V0Q2FjaGVFbnRyeVZhbHVlKCJDTUFLRV9HRU5FUkFUT1IiKTsKICAgaWYgKCFnZW5OYW1lKSB7CiAgICAgc3RkOjpjZXJyIDw8ICJFcnJvcjogY291bGQgbm90IGZpbmQgQ01BS0VfR0VORVJBVE9SIGluIENhY2hlXG4iOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTI4MDIsNyArMjg0OCw3IEBACiAgICAgdGhpcy0+U3RhdGUtPkdldEluaXRpYWxpemVkQ2FjaGVWYWx1ZSgiQ01BS0VfRVhUUkFfR0VORVJBVE9SIik7CiAgIHN0ZDo6c3RyaW5nIGZ1bGxOYW1lID0KICAgICBjbUV4dGVybmFsTWFrZWZpbGVQcm9qZWN0R2VuZXJhdG9yOjpDcmVhdGVGdWxsR2VuZXJhdG9yTmFtZSgKLSAgICAgIGdlbk5hbWUsIGV4dHJhR2VuTmFtZSA/ICpleHRyYUdlbk5hbWUgOiAiIik7CisgICAgICAqZ2VuTmFtZSwgZXh0cmFHZW5OYW1lID8gKmV4dHJhR2VuTmFtZSA6ICIiKTsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8Y21HbG9iYWxHZW5lcmF0b3I+IGdlbiA9CiAgICAgdGhpcy0+Q3JlYXRlR2xvYmFsR2VuZXJhdG9yKGZ1bGxOYW1lKTsKQEAgLTI4MTIsMTQgKzI4NTgsMTQgQEAKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAotICBjb25zdCBjaGFyKiBjYWNoZWRQcm9qZWN0TmFtZSA9CisgIGNtUHJvcCBjYWNoZWRQcm9qZWN0TmFtZSA9CiAgICAgdGhpcy0+U3RhdGUtPkdldENhY2hlRW50cnlWYWx1ZSgiQ01BS0VfUFJPSkVDVF9OQU1FIik7CiAgIGlmICghY2FjaGVkUHJvamVjdE5hbWUpIHsKICAgICBzdGQ6OmNlcnIgPDwgIkVycm9yOiBjb3VsZCBub3QgZmluZCBDTUFLRV9QUk9KRUNUX05BTUUgaW4gQ2FjaGVcbiI7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKLSAgcmV0dXJuIGdlbi0+T3BlbihkaXIsIGNhY2hlZFByb2plY3ROYW1lLCBkcnlSdW4pOworICByZXR1cm4gZ2VuLT5PcGVuKGRpciwgKmNhY2hlZFByb2plY3ROYW1lLCBkcnlSdW4pOwogfQogCiB2b2lkIGNtYWtlOjpXYXRjaFVudXNlZENsaShjb25zdCBzdGQ6OnN0cmluZyYgdmFyKQpAQCAtMjk1MywzICsyOTk5LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgIiBhbmQgZnVuY3Rpb25zLiIsCiAgICAgICAgICAgICAgICAgICAgICAgY21TdGF0ZUVudW1zOjpJTlRFUk5BTCk7CiB9CisKKyNpZiAhZGVmaW5lZChDTUFLRV9CT09UU1RSQVApCitjbU1ha2VmaWxlUHJvZmlsaW5nRGF0YSYgY21ha2U6OkdldFByb2ZpbGluZ091dHB1dCgpCit7CisgIHJldHVybiAqKHRoaXMtPlByb2ZpbGluZ091dHB1dCk7Cit9CisKK2Jvb2wgY21ha2U6OklzUHJvZmlsaW5nRW5hYmxlZCgpIGNvbnN0Cit7CisgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPih0aGlzLT5Qcm9maWxpbmdPdXRwdXQpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UuaCBiL1NvdXJjZS9jbWFrZS5oCmluZGV4IDM1NDI1ZWMuLmNmY2QyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS5oCisrKyBiL1NvdXJjZS9jbWFrZS5oCkBAIC0xNiw2ICsxNiw4IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlIDxjbS9zdHJpbmdfdmlldz4KKwogI2luY2x1ZGUgImNtR2VuZXJhdGVkRmlsZVN0cmVhbS5oIgogI2luY2x1ZGUgImNtSW5zdGFsbGVkRmlsZS5oIgogI2luY2x1ZGUgImNtTGlzdEZpbGVDYWNoZS5oIgpAQCAtMzQsNiArMzYsOSBAQAogY2xhc3MgY21HbG9iYWxHZW5lcmF0b3I7CiBjbGFzcyBjbUdsb2JhbEdlbmVyYXRvckZhY3Rvcnk7CiBjbGFzcyBjbU1ha2VmaWxlOworI2lmICFkZWZpbmVkKENNQUtFX0JPT1RTVFJBUCkKK2NsYXNzIGNtTWFrZWZpbGVQcm9maWxpbmdEYXRhOworI2VuZGlmCiBjbGFzcyBjbU1lc3NlbmdlcjsKIGNsYXNzIGNtVmFyaWFibGVXYXRjaDsKIHN0cnVjdCBjbURvY3VtZW50YXRpb25FbnRyeTsKQEAgLTEzNSwxMyArMTQwLDEzIEBACiAKICAgc3RydWN0IEZpbGVFeHRlbnNpb25zCiAgIHsKLSAgICBib29sIFRlc3Qoc3RkOjpzdHJpbmcgY29uc3QmIGV4dCkgY29uc3QKKyAgICBib29sIFRlc3QoY206OnN0cmluZ192aWV3IGV4dCkgY29uc3QKICAgICB7CiAgICAgICByZXR1cm4gKHRoaXMtPnVub3JkZXJlZC5maW5kKGV4dCkgIT0gdGhpcy0+dW5vcmRlcmVkLmVuZCgpKTsKICAgICB9CiAKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gb3JkZXJlZDsKLSAgICBzdGQ6OnVub3JkZXJlZF9zZXQ8c3RkOjpzdHJpbmc+IHVub3JkZXJlZDsKKyAgICBzdGQ6OnVub3JkZXJlZF9zZXQ8Y206OnN0cmluZ192aWV3PiB1bm9yZGVyZWQ7CiAgIH07CiAKICAgdXNpbmcgSW5zdGFsbGVkRmlsZXNNYXAgPSBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgY21JbnN0YWxsZWRGaWxlPjsKQEAgLTI2Myw3ICsyNjgsNyBAQAogICAgIHJldHVybiB0aGlzLT5Tb3VyY2VGaWxlRXh0ZW5zaW9ucy5vcmRlcmVkOwogICB9CiAKLSAgYm9vbCBJc1NvdXJjZUV4dGVuc2lvbihjb25zdCBzdGQ6OnN0cmluZyYgZXh0KSBjb25zdAorICBib29sIElzU291cmNlRXh0ZW5zaW9uKGNtOjpzdHJpbmdfdmlldyBleHQpIGNvbnN0CiAgIHsKICAgICByZXR1cm4gdGhpcy0+U291cmNlRmlsZUV4dGVuc2lvbnMuVGVzdChleHQpOwogICB9CkBAIC0yNzMsNyArMjc4LDcgQEAKICAgICByZXR1cm4gdGhpcy0+SGVhZGVyRmlsZUV4dGVuc2lvbnMub3JkZXJlZDsKICAgfQogCi0gIGJvb2wgSXNIZWFkZXJFeHRlbnNpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGV4dCkgY29uc3QKKyAgYm9vbCBJc0hlYWRlckV4dGVuc2lvbihjbTo6c3RyaW5nX3ZpZXcgZXh0KSBjb25zdAogICB7CiAgICAgcmV0dXJuIHRoaXMtPkhlYWRlckZpbGVFeHRlbnNpb25zLlRlc3QoZXh0KTsKICAgfQpAQCAtMjgzLDcgKzI4OCw3IEBACiAgICAgcmV0dXJuIHRoaXMtPkN1ZGFGaWxlRXh0ZW5zaW9ucy5vcmRlcmVkOwogICB9CiAKLSAgYm9vbCBJc0N1ZGFFeHRlbnNpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGV4dCkgY29uc3QKKyAgYm9vbCBJc0N1ZGFFeHRlbnNpb24oY206OnN0cmluZ192aWV3IGV4dCkgY29uc3QKICAgewogICAgIHJldHVybiB0aGlzLT5DdWRhRmlsZUV4dGVuc2lvbnMuVGVzdChleHQpOwogICB9CkBAIC0yOTMsNyArMjk4LDcgQEAKICAgICByZXR1cm4gdGhpcy0+Rm9ydHJhbkZpbGVFeHRlbnNpb25zLm9yZGVyZWQ7CiAgIH0KIAotICBib29sIElzRm9ydHJhbkV4dGVuc2lvbihjb25zdCBzdGQ6OnN0cmluZyYgZXh0KSBjb25zdAorICBib29sIElzRm9ydHJhbkV4dGVuc2lvbihjbTo6c3RyaW5nX3ZpZXcgZXh0KSBjb25zdAogICB7CiAgICAgcmV0dXJuIHRoaXMtPkZvcnRyYW5GaWxlRXh0ZW5zaW9ucy5UZXN0KGV4dCk7CiAgIH0KQEAgLTM2MSw3ICszNjYsNyBAQAogICB2b2lkIFNldFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBwcm9wLCBjb25zdCBjaGFyKiB2YWx1ZSk7CiAgIHZvaWQgQXBwZW5kUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHByb3AsIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICBib29sIGFzU3RyaW5nID0gZmFsc2UpOwotICBjb25zdCBjaGFyKiBHZXRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCk7CisgIGNtUHJvcCBHZXRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcCk7CiAgIGJvb2wgR2V0UHJvcGVydHlBc0Jvb2woY29uc3Qgc3RkOjpzdHJpbmcmIHByb3ApOwogCiAgIC8vISBHZXQgb3IgY3JlYXRlIGFuIGNtSW5zdGFsbGVkRmlsZSBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byBpdApAQCAtNTQ5LDYgKzU1NCwxMSBAQAogCiAgIGJvb2wgR2V0UmVnZW5lcmF0ZUR1cmluZ0J1aWxkKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+UmVnZW5lcmF0ZUR1cmluZ0J1aWxkOyB9CiAKKyNpZiAhZGVmaW5lZChDTUFLRV9CT09UU1RSQVApCisgIGNtTWFrZWZpbGVQcm9maWxpbmdEYXRhJiBHZXRQcm9maWxpbmdPdXRwdXQoKTsKKyAgYm9vbCBJc1Byb2ZpbGluZ0VuYWJsZWQoKSBjb25zdDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgIHZvaWQgUnVuQ2hlY2tGb3JVbnVzZWRWYXJpYWJsZXMoKTsKICAgaW50IEhhbmRsZURlbGV0ZUNhY2hlVmFyaWFibGVzKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YXIpOwpAQCAtNjU3LDYgKzY2NywxMCBAQAogCiAgIHZvaWQgQXBwZW5kR2xvYmFsR2VuZXJhdG9yc0RvY3VtZW50YXRpb24oc3RkOjp2ZWN0b3I8Y21Eb2N1bWVudGF0aW9uRW50cnk+Jik7CiAgIHZvaWQgQXBwZW5kRXh0cmFHZW5lcmF0b3JzRG9jdW1lbnRhdGlvbihzdGQ6OnZlY3RvcjxjbURvY3VtZW50YXRpb25FbnRyeT4mKTsKKworI2lmICFkZWZpbmVkKENNQUtFX0JPT1RTVFJBUCkKKyAgc3RkOjp1bmlxdWVfcHRyPGNtTWFrZWZpbGVQcm9maWxpbmdEYXRhPiBQcm9maWxpbmdPdXRwdXQ7CisjZW5kaWYKIH07CiAKICNkZWZpbmUgQ01BS0VfU1RBTkRBUkRfT1BUSU9OU19UQUJMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZW1haW4uY3h4IGIvU291cmNlL2NtYWtlbWFpbi5jeHgKaW5kZXggNDk0ZDVkOS4uODRkMDUzOCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlbWFpbi5jeHgKKysrIGIvU291cmNlL2NtYWtlbWFpbi5jeHgKQEAgLTkzLDYgKzkzLDEyIEBACiAgIHsgIi0tY2hlY2stc3lzdGVtLXZhcnMiLAogICAgICJGaW5kIHByb2JsZW1zIHdpdGggdmFyaWFibGUgdXNhZ2UgaW4gc3lzdGVtICIKICAgICAiZmlsZXMuIiB9LAorIyAgaWYgIWRlZmluZWQoQ01BS0VfQk9PVFNUUkFQKQorICB7ICItLXByb2ZpbGluZy1mb3JtYXQ9PGZtdD4iLCAiT3V0cHV0IGRhdGEgZm9yIHByb2ZpbGluZyBDTWFrZSBzY3JpcHRzLiIgfSwKKyAgeyAiLS1wcm9maWxpbmctb3V0cHV0PTxmaWxlPiIsCisgICAgIlNlbGVjdCBhbiBvdXRwdXQgcGF0aCBmb3IgdGhlIHByb2ZpbGluZyBkYXRhIGVuYWJsZWQgdGhyb3VnaCAiCisgICAgIi0tcHJvZmlsaW5nLWZvcm1hdC4iIH0sCisjICBlbmRpZgogICB7IG51bGxwdHIsIG51bGxwdHIgfQogfTsKIApAQCAtMjg2LDE2ICsyOTIsMTYgQEAKICAgICAgIGNtU3RhdGVFbnVtczo6Q2FjaGVFbnRyeVR5cGUgdCA9IGNtLkdldFN0YXRlKCktPkdldENhY2hlRW50cnlUeXBlKGspOwogICAgICAgaWYgKHQgIT0gY21TdGF0ZUVudW1zOjpJTlRFUk5BTCAmJiB0ICE9IGNtU3RhdGVFbnVtczo6U1RBVElDICYmCiAgICAgICAgICAgdCAhPSBjbVN0YXRlRW51bXM6OlVOSU5JVElBTElaRUQpIHsKLSAgICAgICAgY29uc3QgY2hhciogYWR2YW5jZWRQcm9wID0KKyAgICAgICAgY21Qcm9wIGFkdmFuY2VkUHJvcCA9CiAgICAgICAgICAgY20uR2V0U3RhdGUoKS0+R2V0Q2FjaGVFbnRyeVByb3BlcnR5KGssICJBRFZBTkNFRCIpOwogICAgICAgICBpZiAobGlzdF9hbGxfY2FjaGVkIHx8ICFhZHZhbmNlZFByb3ApIHsKICAgICAgICAgICBpZiAobGlzdF9oZWxwKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIi8vICIKLSAgICAgICAgICAgICAgICAgICAgICA8PCBjbS5HZXRTdGF0ZSgpLT5HZXRDYWNoZUVudHJ5UHJvcGVydHkoaywgIkhFTFBTVFJJTkciKQotICAgICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIGNtUHJvcCBoZWxwID0KKyAgICAgICAgICAgICAgY20uR2V0U3RhdGUoKS0+R2V0Q2FjaGVFbnRyeVByb3BlcnR5KGssICJIRUxQU1RSSU5HIik7CisgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIi8vICIgPDwgKGhlbHAgPyAqaGVscCA6ICIiKSA8PCBzdGQ6OmVuZGw7CiAgICAgICAgICAgfQogICAgICAgICAgIHN0ZDo6Y291dCA8PCBrIDw8ICI6IiA8PCBjbVN0YXRlOjpDYWNoZUVudHJ5VHlwZVRvU3RyaW5nKHQpIDw8ICI9IgotICAgICAgICAgICAgICAgICAgICA8PCBjbS5HZXRTdGF0ZSgpLT5HZXRDYWNoZUVudHJ5VmFsdWUoaykgPDwgc3RkOjplbmRsOworICAgICAgICAgICAgICAgICAgICA8PCBjbS5HZXRTdGF0ZSgpLT5HZXRTYWZlQ2FjaGVFbnRyeVZhbHVlKGspIDw8IHN0ZDo6ZW5kbDsKICAgICAgICAgICBpZiAobGlzdF9oZWxwKSB7CiAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwogICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWNsZGVwcy5jeHggYi9Tb3VyY2UvY21jbGRlcHMuY3h4CmluZGV4IGNhZjY0NTMuLjVjMjdhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWNsZGVwcy5jeHgKKysrIGIvU291cmNlL2NtY2xkZXBzLmN4eApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY21zeXMvRW5jb2RpbmcuaHh4IgogCisjaW5jbHVkZSAiY21TdHJpbmdBbGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiY21TeXN0ZW1Ub29scy5oIgogCiAvLyBXZSBkb24ndCB3YW50IGFueSB3aWxkY2FyZCBleHBhbnNpb24uCkBAIC02Myw3ICs2NCw3IEBACiAgICAgICAgIG1zZyk7CiB9CiAKLXN0YXRpYyBzdGQ6OnN0cmluZyB0cmltTGVhZGluZ1NwYWNlKGNvbnN0IHN0ZDo6c3RyaW5nJiBjbWRsaW5lKQorc3RhdGljIGNtOjpzdHJpbmdfdmlldyB0cmltTGVhZGluZ1NwYWNlKGNtOjpzdHJpbmdfdmlldyBjbWRsaW5lKQogewogICBpbnQgaSA9IDA7CiAgIGZvciAoOyBjbWRsaW5lW2ldID09ICcgJzsgKytpKQpAQCAtODEsMzQgKzgyLDMwIEBACiAgIH0KIH0KIAotYm9vbCBzdGFydHNXaXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsIGNvbnN0IHN0ZDo6c3RyaW5nJiB3aGF0KQotewotICByZXR1cm4gc3RyLmNvbXBhcmUoMCwgd2hhdC5zaXplKCksIHdoYXQpID09IDA7Ci19Ci0KIC8vIFN0cmlwcyBvbmUgYXJndW1lbnQgZnJvbSB0aGUgY21kbGluZSBhbmQgcmV0dXJucyBpdC4gInN1cnJvdW5kaW5nIHF1b3RlcyIKIC8vIGFyZSByZW1vdmVkIGZyb20gdGhlIGFyZ3VtZW50IGlmIHRoZXJlIHdlcmUgYW55Lgogc3RhdGljIHN0ZDo6c3RyaW5nIGdldEFyZyhzdGQ6OnN0cmluZyYgY21kbGluZSkKIHsKLSAgc3RkOjpzdHJpbmcgcmV0OwogICBib29sIGluX3F1b3RlZCA9IGZhbHNlOwogICB1bnNpZ25lZCBpbnQgaSA9IDA7CiAKLSAgY21kbGluZSA9IHRyaW1MZWFkaW5nU3BhY2UoY21kbGluZSk7CisgIGNtOjpzdHJpbmdfdmlldyBjbWR2aWV3ID0gdHJpbUxlYWRpbmdTcGFjZShjbWRsaW5lKTsKKyAgc2l6ZV90IHNwYWNlQ250ID0gY21kbGluZS5zaXplKCkgLSBjbWR2aWV3LnNpemUoKTsKIAogICBmb3IgKDs7ICsraSkgewotICAgIGlmIChpID49IGNtZGxpbmUuc2l6ZSgpKQorICAgIGlmIChpID49IGNtZHZpZXcuc2l6ZSgpKQogICAgICAgdXNhZ2UoIkNvdWxkbid0IHBhcnNlIGFyZ3VtZW50cy4iKTsKLSAgICBpZiAoIWluX3F1b3RlZCAmJiBjbWRsaW5lW2ldID09ICcgJykKKyAgICBpZiAoIWluX3F1b3RlZCAmJiBjbWR2aWV3W2ldID09ICcgJykKICAgICAgIGJyZWFrOyAvLyAiYSBiIiAieCB5IgotICAgIGlmIChjbWRsaW5lW2ldID09ICciJykKKyAgICBpZiAoY21kdmlld1tpXSA9PSAnIicpCiAgICAgICBpbl9xdW90ZWQgPSAhaW5fcXVvdGVkOwogICB9CiAKLSAgcmV0ID0gY21kbGluZS5zdWJzdHIoMCwgaSk7Ci0gIGlmIChyZXRbMF0gPT0gJyInICYmIHJldFtpIC0gMV0gPT0gJyInKQotICAgIHJldCA9IHJldC5zdWJzdHIoMSwgcmV0LnNpemUoKSAtIDIpOwotICBjbWRsaW5lID0gY21kbGluZS5zdWJzdHIoaSk7CisgIGNtZHZpZXcgPSBjbWR2aWV3LnN1YnN0cigwLCBpKTsKKyAgaWYgKGNtZHZpZXdbMF0gPT0gJyInICYmIGNtZHZpZXdbaSAtIDFdID09ICciJykKKyAgICBjbWR2aWV3ID0gY21kdmlldy5zdWJzdHIoMSwgaSAtIDIpOworICBzdGQ6OnN0cmluZyByZXQoY21kdmlldyk7CisgIGNtZGxpbmUuZXJhc2UoMCwgc3BhY2VDbnQgKyBpKTsKICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTI3LDcgKzEyNCw3IEBACiAgIHByZWZpeCA9IGdldEFyZyhjbWRsaW5lKTsKICAgY2xwYXRoID0gZ2V0QXJnKGNtZGxpbmUpOwogICBiaW5wYXRoID0gZ2V0QXJnKGNtZGxpbmUpOwotICByZXN0ID0gdHJpbUxlYWRpbmdTcGFjZShjbWRsaW5lKTsKKyAgcmVzdCA9IHN0ZDo6c3RyaW5nKHRyaW1MZWFkaW5nU3BhY2UoY21kbGluZSkpOwogfQogCiAvLyBOb3QgYWxsIGJhY2tzbGFzaGVzIG5lZWQgdG8gYmUgZXNjYXBlZCBpbiBhIGRlcGZpbGUsIGJ1dCBpdCdzIGVhc2llciB0aGF0CkBAIC0xNjksOCArMTY2LDggQEAKICAgICAvLyBidWlsZC5uaW5qYSBmaWxlLiAgVGhlcmVmb3JlIHdlIG5lZWQgdG8gY2Fub25pY2FsaXplIHRoZSBwYXRoIHRvIHVzZQogICAgIC8vIGJhY2t3YXJkIHNsYXNoZXMgYW5kIHJlbGF0aXZpemUgdGhlIHBhdGggdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KICAgICByZXBsYWNlQWxsKHRtcCwgIi8iLCAiXFwiKTsKLSAgICBpZiAoc3RhcnRzV2l0aCh0bXAsIGN3ZCkpCi0gICAgICB0bXAgPSB0bXAuc3Vic3RyKGN3ZC5zaXplKCkpOworICAgIGlmIChjbUhhc1ByZWZpeCh0bXAsIGN3ZCkpCisgICAgICB0bXAuZXJhc2UoMCwgY3dkLnNpemUoKSk7CiAgICAgZXNjYXBlUGF0aCh0bXApOwogICAgIGZwcmludGYob3V0LCAiJXMgXFxcbiIsIHRtcC5jX3N0cigpKTsKICAgfQpAQCAtMTk0LDcgKzE5MSw3IEBACiAgIHJldHVybiByZXBsYWNlZC5yZXBsYWNlKHBvcywgd2hhdC5zaXplKCksIHJlcGxhY2VtZW50KTsKIH0KIAotc3RhdGljIGludCBwcm9jZXNzKGNvbnN0IHN0ZDo6c3RyaW5nJiBzcmNmaWxlbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIGRmaWxlLAorc3RhdGljIGludCBwcm9jZXNzKGNtOjpzdHJpbmdfdmlldyBzcmNmaWxlbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIGRmaWxlLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvYmpmaWxlLCBjb25zdCBzdGQ6OnN0cmluZyYgcHJlZml4LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjbWQsIGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXIgPSAiIiwKICAgICAgICAgICAgICAgICAgICBib29sIHF1aWV0ID0gZmFsc2UpCkBAIC0yMjEsMTMgKzIxOCwxNCBAQAogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gaW5jbHVkZXM7CiAgIGJvb2wgaXNGaXJzdExpbmUgPSB0cnVlOyAvLyBjbCBwcmludHMgYWx3YXlzIGZpcnN0IHRoZSBzb3VyY2UgZmlsZW5hbWUKICAgd2hpbGUgKHN0ZDo6Z2V0bGluZShzcywgbGluZSkpIHsKLSAgICBpZiAoc3RhcnRzV2l0aChsaW5lLCBwcmVmaXgpKSB7Ci0gICAgICBzdGQ6OnN0cmluZyBpbmMgPSB0cmltTGVhZGluZ1NwYWNlKGxpbmUuc3Vic3RyKHByZWZpeC5zaXplKCkpLmNfc3RyKCkpOworICAgIGNtOjpzdHJpbmdfdmlldyBpbmMobGluZSk7CisgICAgaWYgKGNtSGFzUHJlZml4KGluYywgcHJlZml4KSkgeworICAgICAgaW5jID0gdHJpbUxlYWRpbmdTcGFjZShpbmMuc3Vic3RyKHByZWZpeC5zaXplKCkpKTsKICAgICAgIGlmIChpbmMuYmFjaygpID09ICdccicpIC8vIGJsZWNoLCBzdHVwaWQgXHJcbgogICAgICAgICBpbmMgPSBpbmMuc3Vic3RyKDAsIGluYy5zaXplKCkgLSAxKTsKLSAgICAgIGluY2x1ZGVzLnB1c2hfYmFjayhpbmMpOworICAgICAgaW5jbHVkZXMuZW1wbGFjZV9iYWNrKHN0ZDo6c3RyaW5nKGluYykpOwogICAgIH0gZWxzZSB7Ci0gICAgICBpZiAoIWlzRmlyc3RMaW5lIHx8ICFzdGFydHNXaXRoKGxpbmUsIHNyY2ZpbGVuYW1lKSkgeworICAgICAgaWYgKCFpc0ZpcnN0TGluZSB8fCAhY21IYXNQcmVmaXgoaW5jLCBzcmNmaWxlbmFtZSkpIHsKICAgICAgICAgaWYgKCFxdWlldCB8fCBleGl0X2NvZGUgIT0gMCkgewogICAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiJXNcbiIsIGxpbmUuY19zdHIoKSk7CiAgICAgICAgIH0KQEAgLTI1OCwxNCArMjU2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgY2wsIGJpbnBhdGgsIHJlc3QpOwogCiAgIC8vIG5lZWRlZCB0byBzdXBwcmVzcyBmaWxlbmFtZSBvdXRwdXQgb2YgbXN2YyB0b29scwotICBzdGQ6OnN0cmluZyBzcmNmaWxlbmFtZTsKLSAgewotICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gc3JjZmlsZS5yZmluZCgnXFwnKTsKLSAgICBpZiAocG9zID09IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgICBzcmNmaWxlbmFtZSA9IHNyY2ZpbGU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHNyY2ZpbGVuYW1lID0gc3JjZmlsZS5zdWJzdHIocG9zICsgMSk7Ci0gICAgfQorICBjbTo6c3RyaW5nX3ZpZXcgc3JjZmlsZW5hbWUoc3JjZmlsZSk7CisgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gc3JjZmlsZS5yZmluZCgnXFwnKTsKKyAgaWYgKHBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgIHNyY2ZpbGVuYW1lID0gc3JjZmlsZW5hbWUuc3Vic3RyKHBvcyArIDEpOwogICB9CiAKICAgc3RkOjpzdHJpbmcgbm9sID0gIiAvbm9sb2dvICI7CkBAIC0yODYsNyArMjgwLDcgQEAKICAgICAvLyBjYWxsIGNsIGluIG9iamVjdCBkaXIgc28gdGhlIC5pIGlzIGdlbmVyYXRlZCB0aGVyZQogICAgIHN0ZDo6c3RyaW5nIG9iamRpcjsKICAgICB7Ci0gICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IG9iamZpbGUucmZpbmQoIlxcIik7CisgICAgICBwb3MgPSBvYmpmaWxlLnJmaW5kKCJcXCIpOwogICAgICAgaWYgKHBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewogICAgICAgICBvYmpkaXIgPSBvYmpmaWxlLnN1YnN0cigwLCBwb3MpOwogICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtY21kLmN4eCBiL1NvdXJjZS9jbWNtZC5jeHgKaW5kZXggMmJjY2JjNy4uMThhMjEwOCAxMDA2NDQKLS0tIGEvU291cmNlL2NtY21kLmN4eAorKysgYi9Tb3VyY2UvY21jbWQuY3h4CkBAIC02NzgsNyArNjc4LDcgQEAKICAgICAgICAgfSBlbHNlIGlmICghYS5lbXB0eSgpICYmIGFbMF0gPT0gJy0nKSB7CiAgICAgICAgICAgLy8gRW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIGNvbW1hbmQgbmFtZXMgY2Fubm90IHN0YXJ0IGluICctJywKICAgICAgICAgICAvLyBzbyB0aGlzIG11c3QgYmUgYW4gdW5rbm93biBvcHRpb24uCi0gICAgICAgICAgc3RkOjpjZXJyIDw8ICJjbWFrZSAtRSBlbnY6IHVua25vd24gb3B0aW9uICciIDw8IGEgPDwgIiciCisgICAgICAgICAgc3RkOjpjZXJyIDw8ICJjbWFrZSAtRSBlbnY6IHVua25vd24gb3B0aW9uICciIDw8IGEgPDwgJ1wnJwogICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CiAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0gZWxzZSBpZiAoYS5maW5kKCc9JykgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKQEAgLTEwNTQsOCArMTA1NCw3IEBACiAgICAgICAgIGhvbWVPdXREaXIgPSBhcmdzWzVdOwogICAgICAgICBzdGFydE91dERpciA9IGFyZ3NbNl07CiAgICAgICAgIGRlcEluZm8gPSBhcmdzWzddOwotICAgICAgICBpZiAoYXJncy5zaXplKCkgPj0gOSAmJiBhcmdzWzhdLmxlbmd0aCgpID49IDggJiYKLSAgICAgICAgICAgIGFyZ3NbOF0uc3Vic3RyKDAsIDgpID09ICItLWNvbG9yPSIpIHsKKyAgICAgICAgaWYgKGFyZ3Muc2l6ZSgpID49IDkgJiYgY21IYXNMaXRlcmFsUHJlZml4KGFyZ3NbOF0sICItLWNvbG9yPSIpKSB7CiAgICAgICAgICAgLy8gRW5hYmxlIG9yIGRpc2FibGUgY29sb3IgYmFzZWQgb24gdGhlIHN3aXRjaCB2YWx1ZS4KICAgICAgICAgICBjb2xvciA9IChhcmdzWzhdLnNpemUoKSA9PSA4IHx8IGNtSXNPbihhcmdzWzhdLnN1YnN0cig4KSkpOwogICAgICAgICB9CkBAIC0xMzA0LDcgKzEzMDMsNyBAQAogICAgICAgICB9IGVsc2UgaWYgKGFyZyA9PSAiLS1kZWJ1ZyIpIHsKICAgICAgICAgICBwaXBlLmNsZWFyKCk7CiAgICAgICAgICAgaXNEZWJ1ZyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoYXJnLnN1YnN0cigwLCBwaXBlUHJlZml4LnNpemUoKSkgPT0gcGlwZVByZWZpeCkgeworICAgICAgICB9IGVsc2UgaWYgKGNtSGFzUHJlZml4KGFyZywgcGlwZVByZWZpeCkpIHsKICAgICAgICAgICBpc0RlYnVnID0gZmFsc2U7CiAgICAgICAgICAgcGlwZSA9IGFyZy5zdWJzdHIocGlwZVByZWZpeC5zaXplKCkpOwogICAgICAgICAgIGlmIChwaXBlLmVtcHR5KCkpIHsKQEAgLTE1MTEsNyArMTUxMCw3IEBACiAgIGJvb2wgbmV3bGluZSA9IHRydWU7CiAgIHN0ZDo6c3RyaW5nIHByb2dyZXNzRGlyOwogICBmb3IgKGF1dG8gY29uc3QmIGFyZyA6IGNtTWFrZVJhbmdlKGFyZ3MpLmFkdmFuY2UoMikpIHsKLSAgICBpZiAoYXJnLmZpbmQoIi0tc3dpdGNoPSIpID09IDApIHsKKyAgICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZywgIi0tc3dpdGNoPSIpKSB7CiAgICAgICAvLyBFbmFibGUgb3IgZGlzYWJsZSBjb2xvciBiYXNlZCBvbiB0aGUgc3dpdGNoIHZhbHVlLgogICAgICAgc3RkOjpzdHJpbmcgdmFsdWUgPSBhcmcuc3Vic3RyKDkpOwogICAgICAgaWYgKCF2YWx1ZS5lbXB0eSgpKSB7CkBAIC0xNTY2LDcgKzE1NjUsNyBAQAogICAvLyAgIGFyZ3NbM10gPT0gLS12ZXJib3NlPT8KICAgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAgIGlmIChhcmdzLnNpemUoKSA+PSA0KSB7Ci0gICAgaWYgKGFyZ3NbM10uZmluZCgiLS12ZXJib3NlPSIpID09IDApIHsKKyAgICBpZiAoY21IYXNMaXRlcmFsUHJlZml4KGFyZ3NbM10sICItLXZlcmJvc2U9IikpIHsKICAgICAgIGlmICghY21Jc09mZihhcmdzWzNdLnN1YnN0cigxMCkpKSB7CiAgICAgICAgIHZlcmJvc2UgPSB0cnVlOwogICAgICAgfQpAQCAtMTY1NCwxMSArMTY1MywxMyBAQAogICBjbVZpc3VhbFN0dWRpb1dDRVBsYXRmb3JtUGFyc2VyIHBhcnNlcihuYW1lLmNfc3RyKCkpOwogICBwYXJzZXIuUGFyc2VWZXJzaW9uKHZlcnNpb24pOwogICBpZiAocGFyc2VyLkZvdW5kKCkpIHsKLSAgICBzdGQ6OmNvdXQgPDwgIkBlY2hvIG9mZiIgPDwgc3RkOjplbmRsOwotICAgIHN0ZDo6Y291dCA8PCAiZWNobyBFbnZpcm9ubWVudCBTZWxlY3Rpb246ICIgPDwgbmFtZSA8PCBzdGQ6OmVuZGw7Ci0gICAgc3RkOjpjb3V0IDw8ICJzZXQgUEFUSD0iIDw8IHBhcnNlci5HZXRQYXRoRGlyZWN0b3JpZXMoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgc3RkOjpjb3V0IDw8ICJzZXQgSU5DTFVERT0iIDw8IHBhcnNlci5HZXRJbmNsdWRlRGlyZWN0b3JpZXMoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgc3RkOjpjb3V0IDw8ICJzZXQgTElCPSIgPDwgcGFyc2VyLkdldExpYnJhcnlEaXJlY3RvcmllcygpIDw8IHN0ZDo6ZW5kbDsKKyAgICAvKiBjbGFuZy1mb3JtYXQgb2ZmICovCisgICAgc3RkOjpjb3V0IDw8ICJAZWNobyBvZmZcbiIKKyAgICAgICAgICAgICAgICAgImVjaG8gRW52aXJvbm1lbnQgU2VsZWN0aW9uOiAiIDw8IG5hbWUgPDwgIlxuIgorICAgICAgICAgICAgICAgICAic2V0IFBBVEg9IiA8PCBwYXJzZXIuR2V0UGF0aERpcmVjdG9yaWVzKCkgPDwgIlxuIgorICAgICAgICAgICAgICAgICAic2V0IElOQ0xVREU9IiA8PCBwYXJzZXIuR2V0SW5jbHVkZURpcmVjdG9yaWVzKCkgPDwgIlxuIgorICAgICAgICAgICAgICAgICAic2V0IExJQj0iIDw8IHBhcnNlci5HZXRMaWJyYXJ5RGlyZWN0b3JpZXMoKSA8PCBzdGQ6OmVuZGw7CisgICAgLyogY2xhbmctZm9ybWF0IG9uICovCiAgICAgcmV0dXJuIDA7CiAgIH0KICNlbHNlCkBAIC0xODM1LDcgKzE4MzYsNyBAQAogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZXhwYW5kZWRBcmdzOwogICBmb3IgKHN0ZDo6c3RyaW5nIGNvbnN0JiBpIDogYXJncykgewogICAgIC8vIGNoZWNrIGZvciBubWFrZSB0ZW1wb3JhcnkgZmlsZXMKLSAgICBpZiAoaVswXSA9PSAnQCcgJiYgaS5maW5kKCJAQ01ha2VGaWxlcyIpICE9IDApIHsKKyAgICBpZiAoaVswXSA9PSAnQCcgJiYgIWNtSGFzTGl0ZXJhbFByZWZpeChpLCAiQENNYWtlRmlsZXMiKSkgewogICAgICAgY21zeXM6Omlmc3RyZWFtIGZpbihpLnN1YnN0cigxKS5jX3N0cigpKTsKICAgICAgIHN0ZDo6c3RyaW5nIGxpbmU7CiAgICAgICB3aGlsZSAoY21TeXN0ZW1Ub29sczo6R2V0TGluZUZyb21TdHJlYW0oZmluLCBsaW5lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL2t3c3lzL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL2t3c3lzL0NNYWtlTGlzdHMudHh0CmluZGV4IDA5YmNkYjkuLjVkZTI3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9rd3N5cy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uva3dzeXMvQ01ha2VMaXN0cy50eHQKQEAgLTExLDkgKzExLDkgQEAKICMgYmUgdXNlZC4gIEFsbCBjbGFzc2VzIGFyZSBkaXNhYmxlZCBieSBkZWZhdWx0LiAgVGhlIENNYWtlIGxpc3RmaWxlCiAjIGFib3ZlIHRoaXMgb25lIGNvbmZpZ3VyZXMgdGhlIGxpYnJhcnkgYXMgZm9sbG93czoKICMKLSMgIFNFVChLV1NZU19OQU1FU1BBQ0UgZm9vc3lzKQotIyAgU0VUKEtXU1lTX1VTRV9EaXJlY3RvcnkgMSkgICAgIyBFbmFibGUgRGlyZWN0b3J5IGNsYXNzLgotIyAgU1VCRElSUyhrd3N5cykKKyMgIHNldChLV1NZU19OQU1FU1BBQ0UgZm9vc3lzKQorIyAgc2V0KEtXU1lTX1VTRV9EaXJlY3RvcnkgMSkgICAgIyBFbmFibGUgRGlyZWN0b3J5IGNsYXNzLgorIyAgYWRkX3N1YmRpcmVjdG9yeShrd3N5cykKICMKICMgT3B0aW9uYWwgc2V0dGluZ3MgYXJlIGFzIGZvbGxvd3M6CiAjCkBAIC0zOSw4ICszOSw4IEBACiAjCiAjICAgIEV4YW1wbGU6CiAjCi0jICAgICAgU0VUKEtXU1lTX0hFQURFUl9ST09UICR7UFJPSkVDVF9CSU5BUllfRElSfSkKLSMgICAgICBJTkNMVURFX0RJUkVDVE9SSUVTKCR7UFJPSkVDVF9CSU5BUllfRElSfSkKKyMgICAgICBzZXQoS1dTWVNfSEVBREVSX1JPT1QgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9KQorIyAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtQUk9KRUNUX0JJTkFSWV9ESVJ9KQogIwogIyAgS1dTWVNfQ1hYX1NUQU5EQVJEICAgICAgICAgPSBBIHZhbHVlIGZvciBDTUFLRV9DWFhfU1RBTkRBUkQgd2l0aGluIEtXU3lzLgogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdG8gZW1wdHkgc3RyaW5nIHRvIHVzZSBubyBkZWZhdWx0IHZhbHVlLgpAQCAtNjUsMTEgKzY1LDExIEBACiAjCiAjICAgIEV4YW1wbGU6CiAjCi0jICAgICAgU0VUKEtXU1lTX0lOU1RBTExfQklOX0RJUiBiaW4pCi0jICAgICAgU0VUKEtXU1lTX0lOU1RBTExfTElCX0RJUiBsaWIpCi0jICAgICAgU0VUKEtXU1lTX0lOU1RBTExfSU5DTFVERV9ESVIgaW5jbHVkZSkKLSMgICAgICBTRVQoS1dTWVNfSU5TVEFMTF9DT01QT05FTlRfTkFNRV9SVU5USU1FIFJ1bnRpbWUpCi0jICAgICAgU0VUKEtXU1lTX0lOU1RBTExfQ09NUE9ORU5UX05BTUVfREVWRUxPUE1FTlQgRGV2ZWxvcG1lbnQpCisjICAgICAgc2V0KEtXU1lTX0lOU1RBTExfQklOX0RJUiBiaW4pCisjICAgICAgc2V0KEtXU1lTX0lOU1RBTExfTElCX0RJUiBsaWIpCisjICAgICAgc2V0KEtXU1lTX0lOU1RBTExfSU5DTFVERV9ESVIgaW5jbHVkZSkKKyMgICAgICBzZXQoS1dTWVNfSU5TVEFMTF9DT01QT05FTlRfTkFNRV9SVU5USU1FIFJ1bnRpbWUpCisjICAgICAgc2V0KEtXU1lTX0lOU1RBTExfQ09NUE9ORU5UX05BTUVfREVWRUxPUE1FTlQgRGV2ZWxvcG1lbnQpCiAKICMgT25jZSBjb25maWd1cmVkLCBrd3N5cyBzaG91bGQgYmUgdXNlZCBhcyBmb2xsb3dzIGZyb20gQyBvciBDKysgY29kZToKICMKQEAgLTg2LDMzICs4NiwzMyBAQAogIyBhbnkgb3V0c2lkZSBtYWlsaW5nIGxpc3QgYW5kIG5vIGRvY3VtZW50YXRpb24gb2YgdGhlIGNoYW5nZSB3aWxsIGJlCiAjIHdyaXR0ZW4uCiAKLUNNQUtFX01JTklNVU1fUkVRVUlSRUQoVkVSU0lPTiAzLjEgRkFUQUxfRVJST1IpCi1GT1JFQUNIKHAKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjEgRkFUQUxfRVJST1IpCitmb3JlYWNoKHAKICAgICBDTVAwMDU2ICMgQ01ha2UgMy4yLCBIb25vciBsaW5rIGZsYWdzIGluIHRyeV9jb21waWxlKCkgc291cmNlLWZpbGUgc2lnbmF0dXJlLgogICAgIENNUDAwNjMgIyBDTWFrZSAzLjMsIEhvbm9yIHZpc2liaWxpdHkgcHJvcGVydGllcyBmb3IgYWxsIHRhcmdldCB0eXBlcy4KICAgICBDTVAwMDY3ICMgQ01ha2UgMy44LCBIb25vciBsYW5ndWFnZSBzdGFuZGFyZCBpbiB0cnlfY29tcGlsZSBzb3VyY2UtZmlsZSBzaWduYXR1cmUuCiAgICAgQ01QMDA2OSAjIENNYWtlIDMuOSwgSU5URVJQUk9DRURVUkFMX09QVElNSVpBVElPTiBpcyBlbmZvcmNlZCB3aGVuIGVuYWJsZWQuCiAgICAgKQotICBJRihQT0xJQ1kgJHtwfSkKLSAgICBDTUFLRV9QT0xJQ1koU0VUICR7cH0gTkVXKQotICBFTkRJRigpCi1FTkRGT1JFQUNIKCkKKyAgaWYoUE9MSUNZICR7cH0pCisgICAgY21ha2VfcG9saWN5KFNFVCAke3B9IE5FVykKKyAgZW5kaWYoKQorZW5kZm9yZWFjaCgpCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBJZiBhIG5hbWVzcGFjZSBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgImt3c3lzIiBhbmQgZW5hYmxlIHRlc3RpbmcuCiAjIFRoaXMgc2hvdWxkIGJlIHRoZSBjYXNlIG9ubHkgd2hlbiBrd3N5cyBpcyBub3QgaW5jbHVkZWQgaW5zaWRlCiAjIGFub3RoZXIgcHJvamVjdCBhbmQgaXMgYmVpbmcgdGVzdGVkLgotSUYoTk9UIEtXU1lTX05BTUVTUEFDRSkKLSAgU0VUKEtXU1lTX05BTUVTUEFDRSAia3dzeXMiKQotICBTRVQoS1dTWVNfU1RBTkRBTE9ORSAxKQotRU5ESUYoKQoraWYoTk9UIEtXU1lTX05BTUVTUEFDRSkKKyAgc2V0KEtXU1lTX05BTUVTUEFDRSAia3dzeXMiKQorICBzZXQoS1dTWVNfU1RBTkRBTE9ORSAxKQorZW5kaWYoKQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVGhlIHByb2plY3QgbmFtZSBpcyB0aGF0IG9mIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlLgotUFJPSkVDVCgke0tXU1lTX05BTUVTUEFDRX0pCitwcm9qZWN0KCR7S1dTWVNfTkFNRVNQQUNFfSkKIAogIyBUZWxsIENNYWtlIGhvdyB0byBmb2xsb3cgZGVwZW5kZW5jaWVzIG9mIHNvdXJjZXMgaW4gdGhpcyBkaXJlY3RvcnkuCi1TRVRfUFJPUEVSVFkoRElSRUNUT1JZCitzZXRfcHJvcGVydHkoRElSRUNUT1JZCiAgIFBST1BFUlRZIElNUExJQ0lUX0RFUEVORFNfSU5DTFVERV9UUkFOU0ZPUk0KICAgIktXU1lTX0hFQURFUiglKT08JHtLV1NZU19OQU1FU1BBQ0V9LyU+IgogICApCkBAIC0xMzEsMjI5ICsxMzEsMjI5IEBACiBlbmRpZigpCiAKICMgU2VsZWN0IGxpYnJhcnkgY29tcG9uZW50cy4KLUlGKEtXU1lTX1NUQU5EQUxPTkUgT1IgQ01ha2VfU09VUkNFX0RJUikKLSAgU0VUKEtXU1lTX0VOQUJMRV9DIDEpCitpZihLV1NZU19TVEFOREFMT05FIE9SIENNYWtlX1NPVVJDRV9ESVIpCisgIHNldChLV1NZU19FTkFCTEVfQyAxKQogICAjIEVuYWJsZSBhbGwgY29tcG9uZW50cy4KLSAgU0VUKEtXU1lTX1VTRV9CYXNlNjQgMSkKLSAgU0VUKEtXU1lTX1VTRV9EaXJlY3RvcnkgMSkKLSAgU0VUKEtXU1lTX1VTRV9EeW5hbWljTG9hZGVyIDEpCi0gIFNFVChLV1NZU19VU0VfRW5jb2RpbmcgMSkKLSAgU0VUKEtXU1lTX1VTRV9HbG9iIDEpCi0gIFNFVChLV1NZU19VU0VfTUQ1IDEpCi0gIFNFVChLV1NZU19VU0VfUHJvY2VzcyAxKQotICBTRVQoS1dTWVNfVVNFX1JlZ3VsYXJFeHByZXNzaW9uIDEpCi0gIFNFVChLV1NZU19VU0VfU3lzdGVtIDEpCi0gIFNFVChLV1NZU19VU0VfU3lzdGVtVG9vbHMgMSkKLSAgU0VUKEtXU1lTX1VTRV9Db21tYW5kTGluZUFyZ3VtZW50cyAxKQotICBTRVQoS1dTWVNfVVNFX1Rlcm1pbmFsIDEpCi0gIFNFVChLV1NZU19VU0VfSU9TdHJlYW0gMSkKLSAgU0VUKEtXU1lTX1VTRV9GU3RyZWFtIDEpCi0gIFNFVChLV1NZU19VU0VfU3RyaW5nIDEpCi0gIFNFVChLV1NZU19VU0VfU3lzdGVtSW5mb3JtYXRpb24gMSkKLSAgU0VUKEtXU1lTX1VTRV9Db25zb2xlQnVmIDEpCi1FTkRJRigpCisgIHNldChLV1NZU19VU0VfQmFzZTY0IDEpCisgIHNldChLV1NZU19VU0VfRGlyZWN0b3J5IDEpCisgIHNldChLV1NZU19VU0VfRHluYW1pY0xvYWRlciAxKQorICBzZXQoS1dTWVNfVVNFX0VuY29kaW5nIDEpCisgIHNldChLV1NZU19VU0VfR2xvYiAxKQorICBzZXQoS1dTWVNfVVNFX01ENSAxKQorICBzZXQoS1dTWVNfVVNFX1Byb2Nlc3MgMSkKKyAgc2V0KEtXU1lTX1VTRV9SZWd1bGFyRXhwcmVzc2lvbiAxKQorICBzZXQoS1dTWVNfVVNFX1N5c3RlbSAxKQorICBzZXQoS1dTWVNfVVNFX1N5c3RlbVRvb2xzIDEpCisgIHNldChLV1NZU19VU0VfQ29tbWFuZExpbmVBcmd1bWVudHMgMSkKKyAgc2V0KEtXU1lTX1VTRV9UZXJtaW5hbCAxKQorICBzZXQoS1dTWVNfVVNFX0lPU3RyZWFtIDEpCisgIHNldChLV1NZU19VU0VfRlN0cmVhbSAxKQorICBzZXQoS1dTWVNfVVNFX1N0cmluZyAxKQorICBzZXQoS1dTWVNfVVNFX1N5c3RlbUluZm9ybWF0aW9uIDEpCisgIHNldChLV1NZU19VU0VfQ29uc29sZUJ1ZiAxKQorZW5kaWYoKQogCiAjIEVuZm9yY2UgY29tcG9uZW50IGRlcGVuZGVuY2llcy4KLUlGKEtXU1lTX1VTRV9TeXN0ZW1Ub29scykKLSAgU0VUKEtXU1lTX1VTRV9EaXJlY3RvcnkgMSkKLSAgU0VUKEtXU1lTX1VTRV9GU3RyZWFtIDEpCi0gIFNFVChLV1NZU19VU0VfRW5jb2RpbmcgMSkKLUVORElGKCkKLUlGKEtXU1lTX1VTRV9HbG9iKQotICBTRVQoS1dTWVNfVVNFX0RpcmVjdG9yeSAxKQotICBTRVQoS1dTWVNfVVNFX1N5c3RlbVRvb2xzIDEpCi0gIFNFVChLV1NZU19VU0VfUmVndWxhckV4cHJlc3Npb24gMSkKLSAgU0VUKEtXU1lTX1VTRV9GU3RyZWFtIDEpCi0gIFNFVChLV1NZU19VU0VfRW5jb2RpbmcgMSkKLUVORElGKCkKLUlGKEtXU1lTX1VTRV9Qcm9jZXNzKQotICBTRVQoS1dTWVNfVVNFX1N5c3RlbSAxKQotICBTRVQoS1dTWVNfVVNFX0VuY29kaW5nIDEpCi1FTkRJRigpCi1JRihLV1NZU19VU0VfU3lzdGVtSW5mb3JtYXRpb24pCi0gIFNFVChLV1NZU19VU0VfUHJvY2VzcyAxKQotRU5ESUYoKQotSUYoS1dTWVNfVVNFX1N5c3RlbSkKLSAgU0VUKEtXU1lTX1VTRV9FbmNvZGluZyAxKQotRU5ESUYoKQotSUYoS1dTWVNfVVNFX0RpcmVjdG9yeSkKLSAgU0VUKEtXU1lTX1VTRV9FbmNvZGluZyAxKQotRU5ESUYoKQotSUYoS1dTWVNfVVNFX0R5bmFtaWNMb2FkZXIpCi0gIFNFVChLV1NZU19VU0VfRW5jb2RpbmcgMSkKLUVORElGKCkKLUlGKEtXU1lTX1VTRV9GU3RyZWFtKQotICBTRVQoS1dTWVNfVVNFX0VuY29kaW5nIDEpCi1FTkRJRigpCi1JRihLV1NZU19VU0VfQ29uc29sZUJ1ZikKLSAgU0VUKEtXU1lTX1VTRV9FbmNvZGluZyAxKQotRU5ESUYoKQoraWYoS1dTWVNfVVNFX1N5c3RlbVRvb2xzKQorICBzZXQoS1dTWVNfVVNFX0RpcmVjdG9yeSAxKQorICBzZXQoS1dTWVNfVVNFX0ZTdHJlYW0gMSkKKyAgc2V0KEtXU1lTX1VTRV9FbmNvZGluZyAxKQorZW5kaWYoKQoraWYoS1dTWVNfVVNFX0dsb2IpCisgIHNldChLV1NZU19VU0VfRGlyZWN0b3J5IDEpCisgIHNldChLV1NZU19VU0VfU3lzdGVtVG9vbHMgMSkKKyAgc2V0KEtXU1lTX1VTRV9SZWd1bGFyRXhwcmVzc2lvbiAxKQorICBzZXQoS1dTWVNfVVNFX0ZTdHJlYW0gMSkKKyAgc2V0KEtXU1lTX1VTRV9FbmNvZGluZyAxKQorZW5kaWYoKQoraWYoS1dTWVNfVVNFX1Byb2Nlc3MpCisgIHNldChLV1NZU19VU0VfU3lzdGVtIDEpCisgIHNldChLV1NZU19VU0VfRW5jb2RpbmcgMSkKK2VuZGlmKCkKK2lmKEtXU1lTX1VTRV9TeXN0ZW1JbmZvcm1hdGlvbikKKyAgc2V0KEtXU1lTX1VTRV9Qcm9jZXNzIDEpCitlbmRpZigpCitpZihLV1NZU19VU0VfU3lzdGVtKQorICBzZXQoS1dTWVNfVVNFX0VuY29kaW5nIDEpCitlbmRpZigpCitpZihLV1NZU19VU0VfRGlyZWN0b3J5KQorICBzZXQoS1dTWVNfVVNFX0VuY29kaW5nIDEpCitlbmRpZigpCitpZihLV1NZU19VU0VfRHluYW1pY0xvYWRlcikKKyAgc2V0KEtXU1lTX1VTRV9FbmNvZGluZyAxKQorZW5kaWYoKQoraWYoS1dTWVNfVVNFX0ZTdHJlYW0pCisgIHNldChLV1NZU19VU0VfRW5jb2RpbmcgMSkKK2VuZGlmKCkKK2lmKEtXU1lTX1VTRV9Db25zb2xlQnVmKQorICBzZXQoS1dTWVNfVVNFX0VuY29kaW5nIDEpCitlbmRpZigpCiAKICMgU3BlY2lmeSBkZWZhdWx0IDggYml0IGVuY29kaW5nIGZvciBXaW5kb3dzCi1JRihOT1QgS1dTWVNfRU5DT0RJTkdfREVGQVVMVF9DT0RFUEFHRSkKLSAgU0VUKEtXU1lTX0VOQ09ESU5HX0RFRkFVTFRfQ09ERVBBR0UgQ1BfQUNQKQotRU5ESUYoKQoraWYoTk9UIEtXU1lTX0VOQ09ESU5HX0RFRkFVTFRfQ09ERVBBR0UpCisgIHNldChLV1NZU19FTkNPRElOR19ERUZBVUxUX0NPREVQQUdFIENQX0FDUCkKK2VuZGlmKCkKIAogIyBFbmFibGUgdGVzdGluZyBpZiBidWlsZGluZyBzdGFuZGFsb25lLgotSUYoS1dTWVNfU1RBTkRBTE9ORSkKLSAgSU5DTFVERShEYXJ0KQotICBNQVJLX0FTX0FEVkFOQ0VEKEJVSUxEX1RFU1RJTkcgREFSVF9ST09UIFRDTF9UQ0xTSCkKLSAgSUYoQlVJTERfVEVTVElORykKLSAgICBFTkFCTEVfVEVTVElORygpCi0gIEVORElGKCkKLUVORElGKCkKK2lmKEtXU1lTX1NUQU5EQUxPTkUpCisgIGluY2x1ZGUoRGFydCkKKyAgbWFya19hc19hZHZhbmNlZChCVUlMRF9URVNUSU5HIERBUlRfUk9PVCBUQ0xfVENMU0gpCisgIGlmKEJVSUxEX1RFU1RJTkcpCisgICAgZW5hYmxlX3Rlc3RpbmcoKQorICBlbmRpZigpCitlbmRpZigpCiAKICMgQ2hvb3NlIGRlZmF1bHQgc2hhcmVkL3N0YXRpYyBidWlsZCBpZiBub3Qgc3BlY2lmaWVkLgotSUYoTk9UIERFRklORUQgS1dTWVNfQlVJTERfU0hBUkVEKQotICBTRVQoS1dTWVNfQlVJTERfU0hBUkVEICR7QlVJTERfU0hBUkVEX0xJQlN9KQotRU5ESUYoKQoraWYoTk9UIERFRklORUQgS1dTWVNfQlVJTERfU0hBUkVEKQorICBzZXQoS1dTWVNfQlVJTERfU0hBUkVEICR7QlVJTERfU0hBUkVEX0xJQlN9KQorZW5kaWYoKQogCiAjIEluY2x1ZGUgaGVscGVyIG1hY3Jvcy4KLUlOQ0xVREUoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2t3c3lzUGxhdGZvcm1UZXN0cy5jbWFrZSkKLUlOQ0xVREUoQ2hlY2tUeXBlU2l6ZSkKK2luY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2t3c3lzUGxhdGZvcm1UZXN0cy5jbWFrZSkKK2luY2x1ZGUoQ2hlY2tUeXBlU2l6ZSkKIAogIyBEbyBmdWxsIGRlcGVuZGVuY3kgaGVhZGVycy4KLUlOQ0xVREVfUkVHVUxBUl9FWFBSRVNTSU9OKCJeLiokIikKK2luY2x1ZGVfcmVndWxhcl9leHByZXNzaW9uKCJeLiokIikKIAogIyBVc2UgbmV3IEtXU1lTX0lOU1RBTExfKl9ESVIgdmFyaWFibGUgbmFtZXMgdG8gY29udHJvbCBpbnN0YWxsYXRpb24uCiAjIFRha2UgZGVmYXVsdHMgZnJvbSB0aGUgb2xkIG5hbWVzLiAgTm90ZSB0aGF0IHRoZXJlIHdhcyBubyBvbGQgbmFtZQogIyBmb3IgdGhlIGJpbiBkaXIsIHNvIHdlIHRha2UgdGhlIG9sZCBsaWIgZGlyIG5hbWUgc28gRExMcyB3aWxsIGJlCiAjIGluc3RhbGxlZCBpbiBhIGNvbXBhdGlibGUgd2F5IGZvciBvbGQgY29kZS4KLUlGKE5PVCBLV1NZU19JTlNUQUxMX0lOQ0xVREVfRElSKQotICBTVFJJTkcoUkVHRVggUkVQTEFDRSAiXi8iICIiIEtXU1lTX0lOU1RBTExfSU5DTFVERV9ESVIKK2lmKE5PVCBLV1NZU19JTlNUQUxMX0lOQ0xVREVfRElSKQorICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXi8iICIiIEtXU1lTX0lOU1RBTExfSU5DTFVERV9ESVIKICAgICAiJHtLV1NZU19IRUFERVJfSU5TVEFMTF9ESVJ9IikKLUVORElGKCkKLUlGKE5PVCBLV1NZU19JTlNUQUxMX0xJQl9ESVIpCi0gIFNUUklORyhSRUdFWCBSRVBMQUNFICJeLyIgIiIgS1dTWVNfSU5TVEFMTF9MSUJfRElSCitlbmRpZigpCitpZihOT1QgS1dTWVNfSU5TVEFMTF9MSUJfRElSKQorICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXi8iICIiIEtXU1lTX0lOU1RBTExfTElCX0RJUgogICAgICIke0tXU1lTX0xJQlJBUllfSU5TVEFMTF9ESVJ9IikKLUVORElGKCkKLUlGKE5PVCBLV1NZU19JTlNUQUxMX0JJTl9ESVIpCi0gIFNUUklORyhSRUdFWCBSRVBMQUNFICJeLyIgIiIgS1dTWVNfSU5TVEFMTF9CSU5fRElSCitlbmRpZigpCitpZihOT1QgS1dTWVNfSU5TVEFMTF9CSU5fRElSKQorICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXi8iICIiIEtXU1lTX0lOU1RBTExfQklOX0RJUgogICAgICIke0tXU1lTX0xJQlJBUllfSU5TVEFMTF9ESVJ9IikKLUVORElGKCkKK2VuZGlmKCkKIAogIyBTZXR1cCBoZWFkZXIgaW5zdGFsbCBydWxlcy4KLVNFVChLV1NZU19JTlNUQUxMX0lOQ0xVREVfT1BUSU9OUykKLUlGKEtXU1lTX0lOU1RBTExfQ09NUE9ORU5UX05BTUVfREVWRUxPUE1FTlQpCi0gIFNFVChLV1NZU19JTlNUQUxMX0lOQ0xVREVfT1BUSU9OUyAke0tXU1lTX0lOU1RBTExfSU5DTFVERV9PUFRJT05TfQorc2V0KEtXU1lTX0lOU1RBTExfSU5DTFVERV9PUFRJT05TKQoraWYoS1dTWVNfSU5TVEFMTF9DT01QT05FTlRfTkFNRV9ERVZFTE9QTUVOVCkKKyAgc2V0KEtXU1lTX0lOU1RBTExfSU5DTFVERV9PUFRJT05TICR7S1dTWVNfSU5TVEFMTF9JTkNMVURFX09QVElPTlN9CiAgICAgQ09NUE9ORU5UICR7S1dTWVNfSU5TVEFMTF9DT01QT05FTlRfTkFNRV9ERVZFTE9QTUVOVH0KICAgICApCi1FTkRJRigpCitlbmRpZigpCiAKICMgU2V0dXAgbGlicmFyeSBpbnN0YWxsIHJ1bGVzLgotU0VUKEtXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFKQotU0VUKEtXU1lTX0lOU1RBTExfTkFNRUxJTktfUlVMRSkKLUlGKEtXU1lTX0lOU1RBTExfTElCX0RJUikKLSAgSUYoS1dTWVNfSU5TVEFMTF9FWFBPUlRfTkFNRSkKLSAgICBMSVNUKEFQUEVORCBLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRSBFWFBPUlQgJHtLV1NZU19JTlNUQUxMX0VYUE9SVF9OQU1FfSkKLSAgRU5ESUYoKQorc2V0KEtXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFKQorc2V0KEtXU1lTX0lOU1RBTExfTkFNRUxJTktfUlVMRSkKK2lmKEtXU1lTX0lOU1RBTExfTElCX0RJUikKKyAgaWYoS1dTWVNfSU5TVEFMTF9FWFBPUlRfTkFNRSkKKyAgICBsaXN0KEFQUEVORCBLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRSBFWFBPUlQgJHtLV1NZU19JTlNUQUxMX0VYUE9SVF9OQU1FfSkKKyAgZW5kaWYoKQogICAjIEluc3RhbGwgdGhlIHNoYXJlZCBsaWJyYXJ5IHRvIHRoZSBsaWIgZGlyZWN0b3J5LgotICBTRVQoS1dTWVNfSU5TVEFMTF9MSUJSQVJZX1JVTEUgJHtLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRX0KKyAgc2V0KEtXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFICR7S1dTWVNfSU5TVEFMTF9MSUJSQVJZX1JVTEV9CiAgICAgTElCUkFSWSBERVNUSU5BVElPTiAke0tXU1lTX0lOU1RBTExfTElCX0RJUn0gTkFNRUxJTktfU0tJUAogICAgICkKICAgIyBBc3NpZ24gdGhlIHNoYXJlZCBsaWJyYXJ5IHRvIHRoZSBydW50aW1lIGNvbXBvbmVudC4KLSAgSUYoS1dTWVNfSU5TVEFMTF9DT01QT05FTlRfTkFNRV9SVU5USU1FKQotICAgIFNFVChLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRSAke0tXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFfQorICBpZihLV1NZU19JTlNUQUxMX0NPTVBPTkVOVF9OQU1FX1JVTlRJTUUpCisgICAgc2V0KEtXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFICR7S1dTWVNfSU5TVEFMTF9MSUJSQVJZX1JVTEV9CiAgICAgICBDT01QT05FTlQgJHtLV1NZU19JTlNUQUxMX0NPTVBPTkVOVF9OQU1FX1JVTlRJTUV9CiAgICAgICApCi0gIEVORElGKCkKLSAgSUYoS1dTWVNfQlVJTERfU0hBUkVEKQotICAgIFNFVChLV1NZU19JTlNUQUxMX05BTUVMSU5LX1JVTEUgJHtLV1NZU19JTlNUQUxMX05BTUVMSU5LX1JVTEV9CisgIGVuZGlmKCkKKyAgaWYoS1dTWVNfQlVJTERfU0hBUkVEKQorICAgIHNldChLV1NZU19JTlNUQUxMX05BTUVMSU5LX1JVTEUgJHtLV1NZU19JTlNUQUxMX05BTUVMSU5LX1JVTEV9CiAgICAgICBMSUJSQVJZIERFU1RJTkFUSU9OICR7S1dTWVNfSU5TVEFMTF9MSUJfRElSfSBOQU1FTElOS19PTkxZCiAgICAgICApCiAgICAgIyBBc3NpZ24gdGhlIG5hbWVsaW5rIHRvIHRoZSBkZXZlbG9wbWVudCBjb21wb25lbnQuCi0gICAgSUYoS1dTWVNfSU5TVEFMTF9DT01QT05FTlRfTkFNRV9ERVZFTE9QTUVOVCkKLSAgICAgIFNFVChLV1NZU19JTlNUQUxMX05BTUVMSU5LX1JVTEUgJHtLV1NZU19JTlNUQUxMX05BTUVMSU5LX1JVTEV9CisgICAgaWYoS1dTWVNfSU5TVEFMTF9DT01QT05FTlRfTkFNRV9ERVZFTE9QTUVOVCkKKyAgICAgIHNldChLV1NZU19JTlNUQUxMX05BTUVMSU5LX1JVTEUgJHtLV1NZU19JTlNUQUxMX05BTUVMSU5LX1JVTEV9CiAgICAgICAgIENPTVBPTkVOVCAke0tXU1lTX0lOU1RBTExfQ09NUE9ORU5UX05BTUVfREVWRUxPUE1FTlR9CiAgICAgICAgICkKLSAgICBFTkRJRigpCi0gIEVORElGKCkKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKIAogICAjIEluc3RhbGwgdGhlIGFyY2hpdmUgdG8gdGhlIGxpYiBkaXJlY3RvcnkuCi0gIFNFVChLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRSAke0tXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFfQorICBzZXQoS1dTWVNfSU5TVEFMTF9MSUJSQVJZX1JVTEUgJHtLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRX0KICAgICBBUkNISVZFIERFU1RJTkFUSU9OICR7S1dTWVNfSU5TVEFMTF9MSUJfRElSfQogICAgICkKICAgIyBBc3NpZ24gdGhlIGFyY2hpdmUgdG8gdGhlIGRldmVsb3BtZW50IGNvbXBvbmVudC4KLSAgSUYoS1dTWVNfSU5TVEFMTF9DT01QT05FTlRfTkFNRV9ERVZFTE9QTUVOVCkKLSAgICBTRVQoS1dTWVNfSU5TVEFMTF9MSUJSQVJZX1JVTEUgJHtLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRX0KKyAgaWYoS1dTWVNfSU5TVEFMTF9DT01QT05FTlRfTkFNRV9ERVZFTE9QTUVOVCkKKyAgICBzZXQoS1dTWVNfSU5TVEFMTF9MSUJSQVJZX1JVTEUgJHtLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRX0KICAgICAgIENPTVBPTkVOVCAke0tXU1lTX0lOU1RBTExfQ09NUE9ORU5UX05BTUVfREVWRUxPUE1FTlR9CiAgICAgICApCi0gIEVORElGKCkKLUVORElGKCkKLUlGKEtXU1lTX0lOU1RBTExfQklOX0RJUikKKyAgZW5kaWYoKQorZW5kaWYoKQoraWYoS1dTWVNfSU5TVEFMTF9CSU5fRElSKQogICAjIEluc3RhbGwgdGhlIHJ1bnRpbWUgbGlicmFyeSB0byB0aGUgYmluIGRpcmVjdG9yeS4KLSAgU0VUKEtXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFICR7S1dTWVNfSU5TVEFMTF9MSUJSQVJZX1JVTEV9CisgIHNldChLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRSAke0tXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFfQogICAgIFJVTlRJTUUgREVTVElOQVRJT04gJHtLV1NZU19JTlNUQUxMX0JJTl9ESVJ9CiAgICAgKQogICAjIEFzc2lnbiB0aGUgcnVudGltZSBsaWJyYXJ5IHRvIHRoZSBydW50aW1lIGNvbXBvbmVudC4KLSAgSUYoS1dTWVNfSU5TVEFMTF9DT01QT05FTlRfTkFNRV9SVU5USU1FKQotICAgIFNFVChLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRSAke0tXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFfQorICBpZihLV1NZU19JTlNUQUxMX0NPTVBPTkVOVF9OQU1FX1JVTlRJTUUpCisgICAgc2V0KEtXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFICR7S1dTWVNfSU5TVEFMTF9MSUJSQVJZX1JVTEV9CiAgICAgICBDT01QT05FTlQgJHtLV1NZU19JTlNUQUxMX0NPTVBPTkVOVF9OQU1FX1JVTlRJTUV9CiAgICAgICApCi0gIEVORElGKCkKLUVORElGKCkKKyAgZW5kaWYoKQorZW5kaWYoKQogCiAjIERvIG5vdCBzdXBwb3J0IG9sZCBLV1NZU18qYV9JTlNUQUxMX0RJUiB2YXJpYWJsZSBuYW1lcy4KLVNFVChLV1NZU19IRUFERVJfSU5TVEFMTF9ESVIpCi1TRVQoS1dTWVNfTElCUkFSWV9JTlNUQUxMX0RJUikKK3NldChLV1NZU19IRUFERVJfSU5TVEFMTF9ESVIpCitzZXQoS1dTWVNfTElCUkFSWV9JTlNUQUxMX0RJUikKIAogIyBHZW5lcmF0ZWQgc291cmNlIGZpbGVzIHdpbGwgbmVlZCB0aGlzIGhlYWRlci4KLVNUUklORyhDT01QQVJFIEVRVUFMICIke1BST0pFQ1RfU09VUkNFX0RJUn0iICIke1BST0pFQ1RfQklOQVJZX0RJUn0iCitzdHJpbmcoQ09NUEFSRSBFUVVBTCAiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9IiAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9IgogICBLV1NZU19JTl9TT1VSQ0VfQlVJTEQpCi1JRihOT1QgS1dTWVNfSU5fU09VUkNFX0JVSUxEKQotICBDT05GSUdVUkVfRklMRSgke1BST0pFQ1RfU09VUkNFX0RJUn0va3dzeXNQcml2YXRlLmgKK2lmKE5PVCBLV1NZU19JTl9TT1VSQ0VfQlVJTEQpCisgIGNvbmZpZ3VyZV9maWxlKCR7UFJPSkVDVF9TT1VSQ0VfRElSfS9rd3N5c1ByaXZhdGUuaAogICAgICR7UFJPSkVDVF9CSU5BUllfRElSfS9rd3N5c1ByaXZhdGUuaCBDT1BZT05MWSBJTU1FRElBVEUpCi1FTkRJRigpCitlbmRpZigpCiAKICMgU2VsZWN0IHBsdWdpbiBtb2R1bGUgZmlsZSBuYW1lIGNvbnZlbnRpb24uCi1JRihOT1QgS1dTWVNfRHluYW1pY0xvYWRlcl9QUkVGSVgpCi0gIFNFVChLV1NZU19EeW5hbWljTG9hZGVyX1BSRUZJWCAke0NNQUtFX1NIQVJFRF9NT0RVTEVfUFJFRklYfSkKLUVORElGKCkKLUlGKE5PVCBLV1NZU19EeW5hbWljTG9hZGVyX1NVRkZJWCkKLSAgU0VUKEtXU1lTX0R5bmFtaWNMb2FkZXJfU1VGRklYICR7Q01BS0VfU0hBUkVEX01PRFVMRV9TVUZGSVh9KQotRU5ESUYoKQoraWYoTk9UIEtXU1lTX0R5bmFtaWNMb2FkZXJfUFJFRklYKQorICBzZXQoS1dTWVNfRHluYW1pY0xvYWRlcl9QUkVGSVggJHtDTUFLRV9TSEFSRURfTU9EVUxFX1BSRUZJWH0pCitlbmRpZigpCitpZihOT1QgS1dTWVNfRHluYW1pY0xvYWRlcl9TVUZGSVgpCisgIHNldChLV1NZU19EeW5hbWljTG9hZGVyX1NVRkZJWCAke0NNQUtFX1NIQVJFRF9NT0RVTEVfU1VGRklYfSkKK2VuZGlmKCkKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFdlIHJlcXVpcmUgQU5TSSBzdXBwb3J0IGZyb20gdGhlIEMgY29tcGlsZXIuICBBZGQgYW55IG5lZWRlZCBmbGFncy4KLUlGKENNQUtFX0FOU0lfQ0ZMQUdTKQotICBTRVQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAke0NNQUtFX0FOU0lfQ0ZMQUdTfSIpCi1FTkRJRigpCitpZihDTUFLRV9BTlNJX0NGTEFHUykKKyAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gJHtDTUFLRV9BTlNJX0NGTEFHU30iKQorZW5kaWYoKQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQWRqdXN0IGNvbXBpbGVyIGZsYWdzIGZvciBzb21lIHBsYXRmb3Jtcy4KLUlGKE5PVCBDTUFLRV9DT01QSUxFUl9JU19HTlVDWFgpCi0gIElGKENNQUtFX1NZU1RFTSBNQVRDSEVTICJPU0YxLVYuKiIpCi0gICAgU1RSSU5HKFJFR0VYIE1BVENIICItdGltcGxpY2l0X2xvY2FsIgoraWYoTk9UIENNQUtFX0NPTVBJTEVSX0lTX0dOVUNYWCkKKyAgaWYoQ01BS0VfU1lTVEVNIE1BVENIRVMgIk9TRjEtVi4qIikKKyAgICBzdHJpbmcoUkVHRVggTUFUQ0ggIi10aW1wbGljaXRfbG9jYWwiCiAgICAgICBLV1NZU19DWFhfRkxBR1NfSEFWRV9JTVBMSUNJVF9MT0NBTCAiJHtDTUFLRV9DWFhfRkxBR1N9IikKLSAgICBTVFJJTkcoUkVHRVggTUFUQ0ggIi1ub19pbXBsaWNpdF9pbmNsdWRlIgorICAgIHN0cmluZyhSRUdFWCBNQVRDSCAiLW5vX2ltcGxpY2l0X2luY2x1ZGUiCiAgICAgICBLV1NZU19DWFhfRkxBR1NfSEFWRV9OT19JTVBMSUNJVF9JTkNMVURFICIke0NNQUtFX0NYWF9GTEFHU30iKQotICAgIElGKE5PVCBLV1NZU19DWFhfRkxBR1NfSEFWRV9JTVBMSUNJVF9MT0NBTCkKLSAgICAgIFNFVChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtdGltcGxpY2l0X2xvY2FsIikKLSAgICBFTkRJRigpCi0gICAgSUYoTk9UIEtXU1lTX0NYWF9GTEFHU19IQVZFX05PX0lNUExJQ0lUX0lOQ0xVREUpCi0gICAgICBTRVQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLW5vX2ltcGxpY2l0X2luY2x1ZGUiKQotICAgIEVORElGKCkKLSAgRU5ESUYoKQotICBJRihDTUFLRV9TWVNURU0gTUFUQ0hFUyAiSFAtVVgiKQotICAgIFNFVChLV1NZU19QTEFURk9STV9DWFhfVEVTVF9FWFRSQV9GTEFHUyAiK3AiKQotICAgIElGKENNQUtFX0NYWF9DT01QSUxFUl9JRCBNQVRDSEVTICJIUCIpCisgICAgaWYoTk9UIEtXU1lTX0NYWF9GTEFHU19IQVZFX0lNUExJQ0lUX0xPQ0FMKQorICAgICAgc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC10aW1wbGljaXRfbG9jYWwiKQorICAgIGVuZGlmKCkKKyAgICBpZihOT1QgS1dTWVNfQ1hYX0ZMQUdTX0hBVkVfTk9fSU1QTElDSVRfSU5DTFVERSkKKyAgICAgIHNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtbm9faW1wbGljaXRfaW5jbHVkZSIpCisgICAgZW5kaWYoKQorICBlbmRpZigpCisgIGlmKENNQUtFX1NZU1RFTSBNQVRDSEVTICJIUC1VWCIpCisgICAgc2V0KEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUX0VYVFJBX0ZMQUdTICIrcCIpCisgICAgaWYoQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIE1BVENIRVMgIkhQIikKICAgICAgICMgaXQgaXMga25vd24gdGhhdCB2ZXJzaW9uIDMuODUgZmFpbHMgYW5kIDYuMjUgd29ya3Mgd2l0aG91dCB0aGVzZSBmbGFncwotICAgICAgSUYoQ01BS0VfQ1hYX0NPTVBJTEVSX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDQpCisgICAgICBpZihDTUFLRV9DWFhfQ09NUElMRVJfVkVSU0lPTiBWRVJTSU9OX0xFU1MgNCkKICAgICAgICAgIyB1c2UgbmV3IEMrKyBsaWJyYXJ5IGFuZCBpbXByb3ZlZCB0ZW1wbGF0ZSBzdXBwb3J0Ci0gICAgICAgIFNFVChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtQUEgK2hweHN0ZDk4IikKLSAgICAgIEVORElGKCkKLSAgICBFTkRJRigpCi0gIEVORElGKCkKLUVORElGKCkKLUlGKEtXU1lTX1NUQU5EQUxPTkUpCi0gIElGKENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCBTdW5Qcm8pCi0gICAgSUYoTk9UIENNQUtFX0NYWF9DT01QSUxFUl9WRVJTSU9OIFZFUlNJT05fTEVTUyA1LjEzKQotICAgICAgU0VUKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1zdGQ9YysrMDMiKQotICAgIEVMU0UoKQotICAgICAgU0VUKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1saWJyYXJ5PXN0bHBvcnQ0IikKLSAgICBFTkRJRigpCi0gIEVORElGKCkKLUVORElGKCkKKyAgICAgICAgc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1BQSAraHB4c3RkOTgiKQorICAgICAgZW5kaWYoKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorZW5kaWYoKQoraWYoS1dTWVNfU1RBTkRBTE9ORSkKKyAgaWYoQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFMIFN1blBybykKKyAgICBpZihOT1QgQ01BS0VfQ1hYX0NPTVBJTEVSX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDUuMTMpCisgICAgICBzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLXN0ZD1jKyswMyIpCisgICAgZWxzZSgpCisgICAgICBzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLWxpYnJhcnk9c3RscG9ydDQiKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorZW5kaWYoKQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQ29uZmlndXJlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGhlYWRlciB3cmFwcGVycyBiYXNlZCBvbiBjb21waWxlcidzCkBAIC0zNjUsNzUgKzM2NSw3NSBAQAogICAiQ2hlY2tpbmcgd2hldGhlciBDKysgY29tcGlsZXIgaGFzICdsb25nIGxvbmcnIiBESVJFQ1QpCiBLV1NZU19QTEFURk9STV9DWFhfVEVTVChLV1NZU19DWFhfSEFTX19fSU5UNjQKICAgIkNoZWNraW5nIHdoZXRoZXIgQysrIGNvbXBpbGVyIGhhcyAnX19pbnQ2NCciIERJUkVDVCkKLUlGKEtXU1lTX0NYWF9IQVNfX19JTlQ2NCkKK2lmKEtXU1lTX0NYWF9IQVNfX19JTlQ2NCkKICAgS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1QoS1dTWVNfQ1hYX1NBTUVfTE9OR19BTkRfX19JTlQ2NAogICAgICJDaGVja2luZyB3aGV0aGVyIGxvbmcgYW5kIF9faW50NjQgYXJlIHRoZSBzYW1lIHR5cGUiIERJUkVDVCkKLSAgSUYoS1dTWVNfQ1hYX0hBU19MT05HX0xPTkcpCisgIGlmKEtXU1lTX0NYWF9IQVNfTE9OR19MT05HKQogICAgIEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUKEtXU1lTX0NYWF9TQU1FX0xPTkdfTE9OR19BTkRfX19JTlQ2NAogICAgICAgIkNoZWNraW5nIHdoZXRoZXIgbG9uZyBsb25nIGFuZCBfX2ludDY0IGFyZSB0aGUgc2FtZSB0eXBlIiBESVJFQ1QpCi0gIEVORElGKCkKLUVORElGKCkKKyAgZW5kaWYoKQorZW5kaWYoKQogCiAjIEVuYWJsZSB0aGUgImxvbmcgbG9uZyIgdHlwZSBpZiBpdCBpcyBhdmFpbGFibGUuICBJdCBpcyBzdGFuZGFyZCBpbgogIyBDOTkgYW5kIEMrKzAzIGJ1dCBub3QgaW4gZWFybGllciBzdGFuZGFyZHMuCi1JRihLV1NZU19DWFhfSEFTX0xPTkdfTE9ORykKLSAgU0VUKEtXU1lTX1VTRV9MT05HX0xPTkcgMSkKLUVMU0UoKQotICBTRVQoS1dTWVNfVVNFX0xPTkdfTE9ORyAwKQotRU5ESUYoKQoraWYoS1dTWVNfQ1hYX0hBU19MT05HX0xPTkcpCisgIHNldChLV1NZU19VU0VfTE9OR19MT05HIDEpCitlbHNlKCkKKyAgc2V0KEtXU1lTX1VTRV9MT05HX0xPTkcgMCkKK2VuZGlmKCkKIAogIyBFbmFibGUgdGhlICJfX2ludDY0IiB0eXBlIGlmIGl0IGlzIGF2YWlsYWJsZSBhbmQgdW5pcXVlLiAgSXQgaXMgbm90CiAjIHN0YW5kYXJkLgotU0VUKEtXU1lTX1VTRV9fX0lOVDY0IDApCi1JRihLV1NZU19DWFhfSEFTX19fSU5UNjQpCi0gIElGKE5PVCBLV1NZU19DWFhfU0FNRV9MT05HX0FORF9fX0lOVDY0KQotICAgIElGKE5PVCBLV1NZU19DWFhfU0FNRV9MT05HX0xPTkdfQU5EX19fSU5UNjQpCi0gICAgICBTRVQoS1dTWVNfVVNFX19fSU5UNjQgMSkKLSAgICBFTkRJRigpCi0gIEVORElGKCkKLUVORElGKCkKK3NldChLV1NZU19VU0VfX19JTlQ2NCAwKQoraWYoS1dTWVNfQ1hYX0hBU19fX0lOVDY0KQorICBpZihOT1QgS1dTWVNfQ1hYX1NBTUVfTE9OR19BTkRfX19JTlQ2NCkKKyAgICBpZihOT1QgS1dTWVNfQ1hYX1NBTUVfTE9OR19MT05HX0FORF9fX0lOVDY0KQorICAgICAgc2V0KEtXU1lTX1VTRV9fX0lOVDY0IDEpCisgICAgZW5kaWYoKQorICBlbmRpZigpCitlbmRpZigpCiAKLUlGKEtXU1lTX1VTRV9FbmNvZGluZykKK2lmKEtXU1lTX1VTRV9FbmNvZGluZykKICAgIyBMb29rIGZvciB0eXBlIHNpemUgaGVscGVyIG1hY3Jvcy4KICAgS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1QoS1dTWVNfU1RMX0hBU19XU1RSSU5HCiAgICAgIkNoZWNraW5nIHdoZXRoZXIgd3N0cmluZyBpcyBhdmFpbGFibGUiIERJUkVDVCkKLUVORElGKCkKK2VuZGlmKCkKIAotSUYoS1dTWVNfVVNFX0lPU3RyZWFtKQoraWYoS1dTWVNfVVNFX0lPU3RyZWFtKQogICAjIERldGVybWluZSB3aGV0aGVyIGlvc3RyZWFtcyBzdXBwb3J0IGxvbmcgbG9uZy4KLSAgSUYoS1dTWVNfQ1hYX0hBU19MT05HX0xPTkcpCisgIGlmKEtXU1lTX0NYWF9IQVNfTE9OR19MT05HKQogICAgIEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUKEtXU1lTX0lPU19IQVNfSVNUUkVBTV9MT05HX0xPTkcKICAgICAgICJDaGVja2luZyBpZiBpc3RyZWFtIHN1cHBvcnRzIGxvbmcgbG9uZyIgRElSRUNUKQogICAgIEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUKEtXU1lTX0lPU19IQVNfT1NUUkVBTV9MT05HX0xPTkcKICAgICAgICJDaGVja2luZyBpZiBvc3RyZWFtIHN1cHBvcnRzIGxvbmcgbG9uZyIgRElSRUNUKQotICBFTFNFKCkKLSAgICBTRVQoS1dTWVNfSU9TX0hBU19JU1RSRUFNX0xPTkdfTE9ORyAwKQotICAgIFNFVChLV1NZU19JT1NfSEFTX09TVFJFQU1fTE9OR19MT05HIDApCi0gIEVORElGKCkKLSAgSUYoS1dTWVNfQ1hYX0hBU19fX0lOVDY0KQorICBlbHNlKCkKKyAgICBzZXQoS1dTWVNfSU9TX0hBU19JU1RSRUFNX0xPTkdfTE9ORyAwKQorICAgIHNldChLV1NZU19JT1NfSEFTX09TVFJFQU1fTE9OR19MT05HIDApCisgIGVuZGlmKCkKKyAgaWYoS1dTWVNfQ1hYX0hBU19fX0lOVDY0KQogICAgIEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUKEtXU1lTX0lPU19IQVNfSVNUUkVBTV9fX0lOVDY0CiAgICAgICAiQ2hlY2tpbmcgaWYgaXN0cmVhbSBzdXBwb3J0cyBfX2ludDY0IiBESVJFQ1QpCiAgICAgS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1QoS1dTWVNfSU9TX0hBU19PU1RSRUFNX19fSU5UNjQKICAgICAgICJDaGVja2luZyBpZiBvc3RyZWFtIHN1cHBvcnRzIF9faW50NjQiIERJUkVDVCkKLSAgRUxTRSgpCi0gICAgU0VUKEtXU1lTX0lPU19IQVNfSVNUUkVBTV9fX0lOVDY0IDApCi0gICAgU0VUKEtXU1lTX0lPU19IQVNfT1NUUkVBTV9fX0lOVDY0IDApCi0gIEVORElGKCkKLUVORElGKCkKKyAgZWxzZSgpCisgICAgc2V0KEtXU1lTX0lPU19IQVNfSVNUUkVBTV9fX0lOVDY0IDApCisgICAgc2V0KEtXU1lTX0lPU19IQVNfT1NUUkVBTV9fX0lOVDY0IDApCisgIGVuZGlmKCkKK2VuZGlmKCkKIAotSUYoS1dTWVNfTkFNRVNQQUNFIE1BVENIRVMgIl5rd3N5cyQiKQotICBTRVQoS1dTWVNfTkFNRV9JU19LV1NZUyAxKQotRUxTRSgpCi0gIFNFVChLV1NZU19OQU1FX0lTX0tXU1lTIDApCi1FTkRJRigpCitpZihLV1NZU19OQU1FU1BBQ0UgTUFUQ0hFUyAiXmt3c3lzJCIpCisgIHNldChLV1NZU19OQU1FX0lTX0tXU1lTIDEpCitlbHNlKCkKKyAgc2V0KEtXU1lTX05BTUVfSVNfS1dTWVMgMCkKK2VuZGlmKCkKIAotSUYoS1dTWVNfQlVJTERfU0hBUkVEKQotICBTRVQoS1dTWVNfQlVJTERfU0hBUkVEIDEpCi0gIFNFVChLV1NZU19MSUJSQVJZX1RZUEUgU0hBUkVEKQotRUxTRSgpCi0gIFNFVChLV1NZU19CVUlMRF9TSEFSRUQgMCkKLSAgU0VUKEtXU1lTX0xJQlJBUllfVFlQRSBTVEFUSUMpCi1FTkRJRigpCitpZihLV1NZU19CVUlMRF9TSEFSRUQpCisgIHNldChLV1NZU19CVUlMRF9TSEFSRUQgMSkKKyAgc2V0KEtXU1lTX0xJQlJBUllfVFlQRSBTSEFSRUQpCitlbHNlKCkKKyAgc2V0KEtXU1lTX0JVSUxEX1NIQVJFRCAwKQorICBzZXQoS1dTWVNfTElCUkFSWV9UWVBFIFNUQVRJQykKK2VuZGlmKCkKIAogaWYoTk9UIERFRklORUQgS1dTWVNfQlVJTERfUElDKQogICBzZXQoS1dTWVNfQlVJTERfUElDIDApCkBAIC00NDYsMzIgKzQ0NiwzMiBAQAogICAiQ2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGhhcyBwdHJkaWZmX3QgaW4gc3RkZGVmLmgiIERJUkVDVCkKIEtXU1lTX1BMQVRGT1JNX0NfVEVTVChLV1NZU19DX0hBU19TU0laRV9UCiAgICJDaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFzIHNzaXplX3QgaW4gdW5pc3RkLmgiIERJUkVDVCkKLUlGKEtXU1lTX1VTRV9Qcm9jZXNzKQoraWYoS1dTWVNfVVNFX1Byb2Nlc3MpCiAgIEtXU1lTX1BMQVRGT1JNX0NfVEVTVChLV1NZU19DX0hBU19DTE9DS19HRVRUSU1FX01PTk9UT05JQwogICAgICJDaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgaGFzIGNsb2NrX2dldHRpbWUiIERJUkVDVCkKLUVORElGKCkKK2VuZGlmKCkKIAotU0VUX1NPVVJDRV9GSUxFU19QUk9QRVJUSUVTKFByb2Nlc3NVTklYLmMgU3lzdGVtLmMgUFJPUEVSVElFUworc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKFByb2Nlc3NVTklYLmMgU3lzdGVtLmMgUFJPUEVSVElFUwogICBDT01QSUxFX0ZMQUdTICItREtXU1lTX0NfSEFTX1BUUkRJRkZfVD0ke0tXU1lTX0NfSEFTX1BUUkRJRkZfVH0gLURLV1NZU19DX0hBU19TU0laRV9UPSR7S1dTWVNfQ19IQVNfU1NJWkVfVH0gLURLV1NZU19DX0hBU19DTE9DS19HRVRUSU1FX01PTk9UT05JQz0ke0tXU1lTX0NfSEFTX0NMT0NLX0dFVFRJTUVfTU9OT1RPTklDfSIKICAgKQogCi1JRihERUZJTkVEIEtXU1lTX1BST0NFU1NfVVNFX1NFTEVDVCkKLSAgR0VUX1BST1BFUlRZKFByb2Nlc3NVTklYX0ZMQUdTIFNPVVJDRSBQcm9jZXNzVU5JWC5jIFBST1BFUlRZIENPTVBJTEVfRkxBR1MpCi0gIFNFVF9QUk9QRVJUWShTT1VSQ0UgUHJvY2Vzc1VOSVguYyBQUk9QRVJUWSBDT01QSUxFX0ZMQUdTICIke1Byb2Nlc3NVTklYX0ZMQUdTfSAtREtXU1lTUEVfVVNFX1NFTEVDVD0ke0tXU1lTUEVfVVNFX1NFTEVDVH0iKQotRU5ESUYoKQoraWYoREVGSU5FRCBLV1NZU19QUk9DRVNTX1VTRV9TRUxFQ1QpCisgIGdldF9wcm9wZXJ0eShQcm9jZXNzVU5JWF9GTEFHUyBTT1VSQ0UgUHJvY2Vzc1VOSVguYyBQUk9QRVJUWSBDT01QSUxFX0ZMQUdTKQorICBzZXRfcHJvcGVydHkoU09VUkNFIFByb2Nlc3NVTklYLmMgUFJPUEVSVFkgQ09NUElMRV9GTEFHUyAiJHtQcm9jZXNzVU5JWF9GTEFHU30gLURLV1NZU1BFX1VTRV9TRUxFQ1Q9JHtLV1NZU1BFX1VTRV9TRUxFQ1R9IikKK2VuZGlmKCkKIAotSUYoS1dTWVNfVVNFX0R5bmFtaWNMb2FkZXIpCi0gIEdFVF9QUk9QRVJUWShLV1NZU19TVVBQT1JUU19TSEFSRURfTElCUyBHTE9CQUwgUFJPUEVSVFkgVEFSR0VUX1NVUFBPUlRTX1NIQVJFRF9MSUJTKQotICBJRihLV1NZU19TVVBQT1JUU19TSEFSRURfTElCUykKLSAgICBTRVQoS1dTWVNfU1VQUE9SVFNfU0hBUkVEX0xJQlMgMSkKLSAgRUxTRSgpCi0gICAgU0VUKEtXU1lTX1NVUFBPUlRTX1NIQVJFRF9MSUJTIDApCi0gIEVORElGKCkKLSAgU0VUX1BST1BFUlRZKFNPVVJDRSBEeW5hbWljTG9hZGVyLmN4eCBBUFBFTkQgUFJPUEVSVFkgQ09NUElMRV9ERUZJTklUSU9OUworaWYoS1dTWVNfVVNFX0R5bmFtaWNMb2FkZXIpCisgIGdldF9wcm9wZXJ0eShLV1NZU19TVVBQT1JUU19TSEFSRURfTElCUyBHTE9CQUwgUFJPUEVSVFkgVEFSR0VUX1NVUFBPUlRTX1NIQVJFRF9MSUJTKQorICBpZihLV1NZU19TVVBQT1JUU19TSEFSRURfTElCUykKKyAgICBzZXQoS1dTWVNfU1VQUE9SVFNfU0hBUkVEX0xJQlMgMSkKKyAgZWxzZSgpCisgICAgc2V0KEtXU1lTX1NVUFBPUlRTX1NIQVJFRF9MSUJTIDApCisgIGVuZGlmKCkKKyAgc2V0X3Byb3BlcnR5KFNPVVJDRSBEeW5hbWljTG9hZGVyLmN4eCBBUFBFTkQgUFJPUEVSVFkgQ09NUElMRV9ERUZJTklUSU9OUwogICAgIEtXU1lTX1NVUFBPUlRTX1NIQVJFRF9MSUJTPSR7S1dTWVNfU1VQUE9SVFNfU0hBUkVEX0xJQlN9KQotRU5ESUYoKQorZW5kaWYoKQogCi1JRihLV1NZU19VU0VfU3lzdGVtVG9vbHMpCitpZihLV1NZU19VU0VfU3lzdGVtVG9vbHMpCiAgIGlmIChOT1QgREVGSU5FRCBLV1NZU19TWVNURU1UT09MU19VU0VfVFJBTlNMQVRJT05fTUFQKQogICAgIHNldChLV1NZU19TWVNURU1UT09MU19VU0VfVFJBTlNMQVRJT05fTUFQIDEpCiAgIGVuZGlmICgpCkBAIC00OTQsNyArNDk0LDcgQEAKICAgICAiQ2hlY2tpbmcgd2hldGhlciBDWFggY29tcGlsZXIgc3RydWN0IHN0YXQgaGFzIHN0X210aW0gbWVtYmVyIiBESVJFQ1QpCiAgIEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUKEtXU1lTX0NYWF9TVEFUX0hBU19TVF9NVElNRVNQRUMKICAgICAiQ2hlY2tpbmcgd2hldGhlciBDWFggY29tcGlsZXIgc3RydWN0IHN0YXQgaGFzIHN0X210aW1lc3BlYyBtZW1iZXIiIERJUkVDVCkKLSAgU0VUX1BST1BFUlRZKFNPVVJDRSBTeXN0ZW1Ub29scy5jeHggQVBQRU5EIFBST1BFUlRZIENPTVBJTEVfREVGSU5JVElPTlMKKyAgc2V0X3Byb3BlcnR5KFNPVVJDRSBTeXN0ZW1Ub29scy5jeHggQVBQRU5EIFBST1BFUlRZIENPTVBJTEVfREVGSU5JVElPTlMKICAgICBLV1NZU19DWFhfSEFTX1NFVEVOVj0ke0tXU1lTX0NYWF9IQVNfU0VURU5WfQogICAgIEtXU1lTX0NYWF9IQVNfVU5TRVRFTlY9JHtLV1NZU19DWFhfSEFTX1VOU0VURU5WfQogICAgIEtXU1lTX0NYWF9IQVNfRU5WSVJPTl9JTl9TVERMSUJfSD0ke0tXU1lTX0NYWF9IQVNfRU5WSVJPTl9JTl9TVERMSUJfSH0KQEAgLTUwMyw2MjMgKzUwMyw2MjMgQEAKICAgICBLV1NZU19DWFhfU1RBVF9IQVNfU1RfTVRJTT0ke0tXU1lTX0NYWF9TVEFUX0hBU19TVF9NVElNfQogICAgIEtXU1lTX0NYWF9TVEFUX0hBU19TVF9NVElNRVNQRUM9JHtLV1NZU19DWFhfU1RBVF9IQVNfU1RfTVRJTUVTUEVDfQogICAgICkKLSAgSUYoTk9UIFdJTjMyKQotICAgIElGKEtXU1lTX1NUQU5EQUxPTkUpCi0gICAgICBPUFRJT04oS1dTWVNfU1lTVEVNVE9PTFNfU1VQUE9SVF9XSU5ET1dTX1NMQVNIRVMgIklmIHRydWUsIFdpbmRvd3MgcGF0aHMgd2lsbCBiZSBzdXBwb3J0ZWQgb24gVW5peCBhcyB3ZWxsIiBPTikKLSAgICBFTkRJRigpCi0gICAgSUYoS1dTWVNfU1lTVEVNVE9PTFNfU1VQUE9SVF9XSU5ET1dTX1NMQVNIRVMpCi0gICAgICBTRVRfUFJPUEVSVFkoU09VUkNFIFN5c3RlbVRvb2xzLmN4eCB0ZXN0U3lzdGVtVG9vbHMuY3h4IEFQUEVORCBQUk9QRVJUWSBDT01QSUxFX0RFRklOSVRJT05TCisgIGlmKE5PVCBXSU4zMikKKyAgICBpZihLV1NZU19TVEFOREFMT05FKQorICAgICAgb3B0aW9uKEtXU1lTX1NZU1RFTVRPT0xTX1NVUFBPUlRfV0lORE9XU19TTEFTSEVTICJJZiB0cnVlLCBXaW5kb3dzIHBhdGhzIHdpbGwgYmUgc3VwcG9ydGVkIG9uIFVuaXggYXMgd2VsbCIgT04pCisgICAgZW5kaWYoKQorICAgIGlmKEtXU1lTX1NZU1RFTVRPT0xTX1NVUFBPUlRfV0lORE9XU19TTEFTSEVTKQorICAgICAgc2V0X3Byb3BlcnR5KFNPVVJDRSBTeXN0ZW1Ub29scy5jeHggdGVzdFN5c3RlbVRvb2xzLmN4eCBBUFBFTkQgUFJPUEVSVFkgQ09NUElMRV9ERUZJTklUSU9OUwogICAgICAgICBLV1NZU19TWVNURU1UT09MU19TVVBQT1JUX1dJTkRPV1NfU0xBU0hFUwogICAgICAgICApCi0gICAgRU5ESUYoKQotICBFTkRJRigpCisgICAgZW5kaWYoKQorICBlbmRpZigpCiAKICAgIyBEaXNhYmxlIGdldHB3bmFtIGZvciBzdGF0aWMgbGludXggYnVpbGRzIHNpbmNlIGl0IGRlcGVuZHMgb24gc2hhcmVkIGdsaWJjCi0gIEdFVF9QUk9QRVJUWShTSEFSRURfTElCU19TVVBQT1JURUQgR0xPQkFMIFBST1BFUlRZIFRBUkdFVF9TVVBQT1JUU19TSEFSRURfTElCUykKLSAgSUYoQ01BS0VfU1lTVEVNX05BTUUgTUFUQ0hFUyAiTGludXgiIEFORCBOT1QgU0hBUkVEX0xJQlNfU1VQUE9SVEVEKQotICAgIFNFVF9QUk9QRVJUWShTT1VSQ0UgU3lzdGVtVG9vbHMuY3h4IEFQUEVORCBQUk9QRVJUWSBDT01QSUxFX0RFRklOSVRJT05TCisgIGdldF9wcm9wZXJ0eShTSEFSRURfTElCU19TVVBQT1JURUQgR0xPQkFMIFBST1BFUlRZIFRBUkdFVF9TVVBQT1JUU19TSEFSRURfTElCUykKKyAgaWYoQ01BS0VfU1lTVEVNX05BTUUgTUFUQ0hFUyAiTGludXgiIEFORCBOT1QgU0hBUkVEX0xJQlNfU1VQUE9SVEVEKQorICAgIHNldF9wcm9wZXJ0eShTT1VSQ0UgU3lzdGVtVG9vbHMuY3h4IEFQUEVORCBQUk9QRVJUWSBDT01QSUxFX0RFRklOSVRJT05TCiAgICAgICBIQVZFX0dFVFBXTkFNPTAKICAgICAgICkKLSAgRU5ESUYoKQotRU5ESUYoKQorICBlbmRpZigpCitlbmRpZigpCiAKLUlGKEtXU1lTX1VTRV9TeXN0ZW1JbmZvcm1hdGlvbikKLSAgU0VUX1BST1BFUlRZKFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCitpZihLV1NZU19VU0VfU3lzdGVtSW5mb3JtYXRpb24pCisgIHNldF9wcm9wZXJ0eShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQogICAgIENPTVBJTEVfREVGSU5JVElPTlMgU0laRU9GX1ZPSURfUD0ke0NNQUtFX1NJWkVPRl9WT0lEX1B9KQotICBJRihOT1QgQ1lHV0lOKQotICAgIElOQ0xVREUoQ2hlY2tJbmNsdWRlRmlsZXMpCisgIGlmKE5PVCBDWUdXSU4pCisgICAgaW5jbHVkZShDaGVja0luY2x1ZGVGaWxlcykKICAgICBDSEVDS19JTkNMVURFX0ZJTEVTKCJzeXMvdHlwZXMuaDtpZmFkZHJzLmgiIEtXU1lTX1NZU19IQVNfSUZBRERSU19IKQotICAgIElGKEtXU1lTX1NZU19IQVNfSUZBRERSU19IKQotICAgICAgU0VUX1BST1BFUlRZKFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCisgICAgaWYoS1dTWVNfU1lTX0hBU19JRkFERFJTX0gpCisgICAgICBzZXRfcHJvcGVydHkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKICAgICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyBLV1NZU19TWVNfSEFTX0lGQUREUlNfSD0xKQotICAgIEVORElGKCkKLSAgRU5ESUYoKQotICBJRihXSU4zMikKLSAgICBJTkNMVURFKENoZWNrU3ltYm9sRXhpc3RzKQotICAgIFNFVChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMgUHNhcGkpCisgICAgZW5kaWYoKQorICBlbmRpZigpCisgIGlmKFdJTjMyKQorICAgIGluY2x1ZGUoQ2hlY2tTeW1ib2xFeGlzdHMpCisgICAgc2V0KENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUyBwc2FwaSkKICAgICBDSEVDS19TWU1CT0xfRVhJU1RTKEdldFByb2Nlc3NNZW1vcnlJbmZvICJ3aW5kb3dzLmg7cHNhcGkuaCIgS1dTWVNfU1lTX0hBU19QU0FQSSkKLSAgICBVTlNFVChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMpCi0gICAgSUYoS1dTWVNfU1lTX0hBU19QU0FQSSkKLSAgICAgIFNFVF9QUk9QRVJUWShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQorICAgIHVuc2V0KENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUykKKyAgICBpZihLV1NZU19TWVNfSEFTX1BTQVBJKQorICAgICAgc2V0X3Byb3BlcnR5KFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCiAgICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgS1dTWVNfU1lTX0hBU19QU0FQST0xKQotICAgICAgSUYoTVNWQzcwIE9SIE1TVkM3MSkKKyAgICAgIGlmKE1TVkM3MCBPUiBNU1ZDNzEpCiAgICAgICAgICMgU3VwcHJlc3MgTE5LNDA4OTogYWxsIHJlZmVyZW5jZXMgdG8gJ1BTQVBJLkRMTCcgZGlzY2FyZGVkIGJ5IC9PUFQ6UkVGCi0gICAgICAgIFNFVChDTUFLRV9FWEVfTElOS0VSX0ZMQUdTICIke0NNQUtFX0VYRV9MSU5LRVJfRkxBR1N9IC9JR05PUkU6NDA4OSIpCi0gICAgICBFTkRJRigpCi0gICAgRU5ESUYoKQotICBFTkRJRigpCi0gIElGKENNQUtFX1NZU1RFTSBNQVRDSEVTICJIUC1VWCIpCisgICAgICAgIHNldChDTUFLRV9FWEVfTElOS0VSX0ZMQUdTICIke0NNQUtFX0VYRV9MSU5LRVJfRkxBR1N9IC9JR05PUkU6NDA4OSIpCisgICAgICBlbmRpZigpCisgICAgZW5kaWYoKQorICBlbmRpZigpCisgIGlmKENNQUtFX1NZU1RFTSBNQVRDSEVTICJIUC1VWCIpCiAgICAgQ0hFQ0tfSU5DTFVERV9GSUxFUygic3lzL21wY3RsLmgiIEtXU1lTX1NZU19IQVNfTVBDVExfSCkKLSAgICBJRihLV1NZU19TWVNfSEFTX01QQ1RMX0gpCi0gICAgICBTRVRfUFJPUEVSVFkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKKyAgICBpZihLV1NZU19TWVNfSEFTX01QQ1RMX0gpCisgICAgICBzZXRfcHJvcGVydHkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKICAgICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyBLV1NZU19TWVNfSEFTX01QQ1RMX0g9MSkKLSAgICBFTkRJRigpCi0gIEVORElGKCkKLSAgSUYoQ01BS0VfU1lTVEVNIE1BVENIRVMgIkJTRCIpCisgICAgZW5kaWYoKQorICBlbmRpZigpCisgIGlmKENNQUtFX1NZU1RFTSBNQVRDSEVTICJCU0QiKQogICAgIENIRUNLX0lOQ0xVREVfRklMRVMoIm1hY2hpbmUvY3B1LmgiIEtXU1lTX1NZU19IQVNfTUFDSElORV9DUFVfSCkKLSAgICBJRihLV1NZU19TWVNfSEFTX01BQ0hJTkVfQ1BVX0gpCi0gICAgICBTRVRfUFJPUEVSVFkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKKyAgICBpZihLV1NZU19TWVNfSEFTX01BQ0hJTkVfQ1BVX0gpCisgICAgICBzZXRfcHJvcGVydHkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKICAgICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyBLV1NZU19TWVNfSEFTX01BQ0hJTkVfQ1BVX0g9MSkKLSAgICBFTkRJRigpCi0gIEVORElGKCkKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKICAgS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1QoS1dTWVNfQ1hYX0hBU19STElNSVQ2NAogICAgICJDaGVja2luZyB3aGV0aGVyIENYWCBjb21waWxlciBoYXMgcmxpbWl0NjQiIERJUkVDVCkKLSAgU0VUKEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUX0RFRklORVMpCi0gIElGKEtXU1lTX0NYWF9IQVNfUkxJTUlUNjQpCi0gICAgU0VUX1BST1BFUlRZKFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCisgIHNldChLV1NZU19QTEFURk9STV9DWFhfVEVTVF9ERUZJTkVTKQorICBpZihLV1NZU19DWFhfSEFTX1JMSU1JVDY0KQorICAgIHNldF9wcm9wZXJ0eShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQogICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyBLV1NZU19DWFhfSEFTX1JMSU1JVDY0PTEpCi0gIEVORElGKCkKKyAgZW5kaWYoKQogICBLV1NZU19QTEFURk9STV9DWFhfVEVTVChLV1NZU19DWFhfSEFTX0FUT0wKICAgICAiQ2hlY2tpbmcgd2hldGhlciBDWFggY29tcGlsZXIgaGFzIGF0b2wiIERJUkVDVCkKLSAgSUYoS1dTWVNfQ1hYX0hBU19BVE9MKQotICAgIFNFVF9QUk9QRVJUWShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQorICBpZihLV1NZU19DWFhfSEFTX0FUT0wpCisgICAgc2V0X3Byb3BlcnR5KFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCiAgICAgICBDT01QSUxFX0RFRklOSVRJT05TIEtXU1lTX0NYWF9IQVNfQVRPTD0xKQotICBFTkRJRigpCisgIGVuZGlmKCkKICAgS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1QoS1dTWVNfQ1hYX0hBU19BVE9MTAogICAgICJDaGVja2luZyB3aGV0aGVyIENYWCBjb21waWxlciBoYXMgYXRvbGwiIERJUkVDVCkKLSAgSUYoS1dTWVNfQ1hYX0hBU19BVE9MTCkKLSAgICBTRVRfUFJPUEVSVFkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKKyAgaWYoS1dTWVNfQ1hYX0hBU19BVE9MTCkKKyAgICBzZXRfcHJvcGVydHkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgS1dTWVNfQ1hYX0hBU19BVE9MTD0xKQotICBFTkRJRigpCisgIGVuZGlmKCkKICAgS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1QoS1dTWVNfQ1hYX0hBU19fQVRPSTY0CiAgICAgIkNoZWNraW5nIHdoZXRoZXIgQ1hYIGNvbXBpbGVyIGhhcyBfYXRvaTY0IiBESVJFQ1QpCi0gIElGKEtXU1lTX0NYWF9IQVNfX0FUT0k2NCkKLSAgICBTRVRfUFJPUEVSVFkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKKyAgaWYoS1dTWVNfQ1hYX0hBU19fQVRPSTY0KQorICAgIHNldF9wcm9wZXJ0eShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQogICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyBLV1NZU19DWFhfSEFTX19BVE9JNjQ9MSkKLSAgRU5ESUYoKQotICBJRihVTklYKQotICAgIElOQ0xVREUoQ2hlY2tJbmNsdWRlRmlsZUNYWCkKKyAgZW5kaWYoKQorICBpZihVTklYKQorICAgIGluY2x1ZGUoQ2hlY2tJbmNsdWRlRmlsZUNYWCkKICAgICAjIGNoZWNrIGZvciBzaW1wbGUgc3RhY2sgdHJhY2UKICAgICAjIHVzdWFsbHkgaXQncyBpbiBsaWJjIGJ1dCBvbiBGcmVlQlNECiAgICAgIyBpdCdzIGluIGxpYmV4ZWNpbmZvCi0gICAgRklORF9MSUJSQVJZKEVYRUNJTkZPX0xJQiAiZXhlY2luZm8iKQotICAgIE1BUktfQVNfQURWQU5DRUQoRVhFQ0lORk9fTElCKQotICAgIElGIChOT1QgRVhFQ0lORk9fTElCKQotICAgICAgU0VUKEVYRUNJTkZPX0xJQiAiIikKLSAgICBFTkRJRigpCisgICAgZmluZF9saWJyYXJ5KEVYRUNJTkZPX0xJQiAiZXhlY2luZm8iKQorICAgIG1hcmtfYXNfYWR2YW5jZWQoRVhFQ0lORk9fTElCKQorICAgIGlmIChOT1QgRVhFQ0lORk9fTElCKQorICAgICAgc2V0KEVYRUNJTkZPX0xJQiAiIikKKyAgICBlbmRpZigpCiAgICAgQ0hFQ0tfSU5DTFVERV9GSUxFX0NYWCgiZXhlY2luZm8uaCIgS1dTWVNfQ1hYX0hBU19FWEVDSU5GT0gpCi0gICAgSUYgKEtXU1lTX0NYWF9IQVNfRVhFQ0lORk9IKQorICAgIGlmIChLV1NZU19DWFhfSEFTX0VYRUNJTkZPSCkKICAgICAgICMgd2UgaGF2ZSB0aGUgYmFja3RyYWNlIGhlYWRlciBjaGVjayBpZiBpdAogICAgICAgIyBjYW4gYmUgdXNlZCB3aXRoIHRoaXMgY29tcGlsZXIKLSAgICAgIFNFVChLV1NZU19QTEFURk9STV9DWFhfVEVTVF9MSU5LX0xJQlJBUklFUyAke0VYRUNJTkZPX0xJQn0pCisgICAgICBzZXQoS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1RfTElOS19MSUJSQVJJRVMgJHtFWEVDSU5GT19MSUJ9KQogICAgICAgS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1QoS1dTWVNfQ1hYX0hBU19CQUNLVFJBQ0UKICAgICAgICAgICJDaGVja2luZyB3aGV0aGVyIGJhY2t0cmFjZSB3b3JrcyB3aXRoIHRoaXMgQysrIGNvbXBpbGVyIiBESVJFQ1QpCi0gICAgICBTRVQoS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1RfTElOS19MSUJSQVJJRVMpCi0gICAgICBJRiAoS1dTWVNfQ1hYX0hBU19CQUNLVFJBQ0UpCisgICAgICBzZXQoS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1RfTElOS19MSUJSQVJJRVMpCisgICAgICBpZiAoS1dTWVNfQ1hYX0hBU19CQUNLVFJBQ0UpCiAgICAgICAgICMgYmFja3RyYWNlIGlzIHN1cHBvcnRlZCBieSB0aGlzIHN5c3RlbSBhbmQgY29tcGlsZXIuCiAgICAgICAgICMgbm93IGNoZWNrIGZvciB0aGUgbW9yZSBhZHZhbmNlZCBjYXBhYmlsaXRpZXMuCi0gICAgICAgIFNFVF9QUk9QRVJUWShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQorICAgICAgICBzZXRfcHJvcGVydHkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKICAgICAgICAgICBDT01QSUxFX0RFRklOSVRJT05TIEtXU1lTX1NZU1RFTUlORk9STUFUSU9OX0hBU19CQUNLVFJBQ0U9MSkKICAgICAgICAgIyBjaGVjayBmb3Igc3ltYm9sIGxvb2t1cCB1c2luZyBkbGFkZHIKICAgICAgICAgQ0hFQ0tfSU5DTFVERV9GSUxFX0NYWCgiZGxmY24uaCIgS1dTWVNfQ1hYX0hBU19ETEZDTkgpCi0gICAgICAgIElGIChLV1NZU19DWFhfSEFTX0RMRkNOSCkKKyAgICAgICAgaWYgKEtXU1lTX0NYWF9IQVNfRExGQ05IKQogICAgICAgICAgICMgd2UgaGF2ZSBzeW1ib2wgbG9va3VwIGxpYnJhcmllcyBhbmQgaGVhZGVycwogICAgICAgICAgICMgY2hlY2sgaWYgdGhleSBjYW4gYmUgdXNlZCB3aXRoIHRoaXMgY29tcGlsZXIKLSAgICAgICAgICBTRVQoS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1RfTElOS19MSUJSQVJJRVMgJHtDTUFLRV9ETF9MSUJTfSkKKyAgICAgICAgICBzZXQoS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1RfTElOS19MSUJSQVJJRVMgJHtDTUFLRV9ETF9MSUJTfSkKICAgICAgICAgICAgIEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUKEtXU1lTX0NYWF9IQVNfRExBRERSCiAgICAgICAgICAgICAiQ2hlY2tpbmcgd2hldGhlciBkbGFkZHIgd29ya3Mgd2l0aCB0aGlzIEMrKyBjb21waWxlciIgRElSRUNUKQotICAgICAgICAgIFNFVChLV1NZU19QTEFURk9STV9DWFhfVEVTVF9MSU5LX0xJQlJBUklFUykKLSAgICAgICAgICBJRiAoS1dTWVNfQ1hYX0hBU19ETEFERFIpCisgICAgICAgICAgc2V0KEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUX0xJTktfTElCUkFSSUVTKQorICAgICAgICAgIGlmIChLV1NZU19DWFhfSEFTX0RMQUREUikKICAgICAgICAgICAgICMgc3ltYm9sIGxvb2t1cCBpcyBzdXBwb3J0ZWQgYnkgdGhpcyBzeXN0ZW0KICAgICAgICAgICAgICMgYW5kIGNvbXBpbGVyLgotICAgICAgICAgICAgU0VUX1BST1BFUlRZKFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCisgICAgICAgICAgICBzZXRfcHJvcGVydHkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKICAgICAgICAgICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyBLV1NZU19TWVNURU1JTkZPUk1BVElPTl9IQVNfU1lNQk9MX0xPT0tVUD0xKQotICAgICAgICAgIEVORElGKCkKLSAgICAgICAgRU5ESUYoKQorICAgICAgICAgIGVuZGlmKCkKKyAgICAgICAgZW5kaWYoKQogICAgICAgICAjIGMrKyBkZW1hbmdsaW5nIHN1cHBvcnQKICAgICAgICAgIyBjaGVjayBmb3IgY3h4YWJpIGhlYWRlcnMKICAgICAgICAgQ0hFQ0tfSU5DTFVERV9GSUxFX0NYWCgiY3h4YWJpLmgiIEtXU1lTX0NYWF9IQVNfQ1hYQUJJSCkKLSAgICAgICAgSUYgKEtXU1lTX0NYWF9IQVNfQ1hYQUJJSCkKKyAgICAgICAgaWYgKEtXU1lTX0NYWF9IQVNfQ1hYQUJJSCkKICAgICAgICAgICAjIGNoZWNrIGlmIGN4eGFiaSBjYW4gYmUgdXNlZCB3aXRoIHRoaXMKICAgICAgICAgICAjIHN5c3RlbSBhbmQgY29tcGlsZXIuCiAgICAgICAgICAgS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1QoS1dTWVNfQ1hYX0hBU19DWFhBQkkKICAgICAgICAgICAgICJDaGVja2luZyB3aGV0aGVyIGN4eGFiaSB3b3JrcyB3aXRoIHRoaXMgQysrIGNvbXBpbGVyIiBESVJFQ1QpCi0gICAgICAgICAgSUYgKEtXU1lTX0NYWF9IQVNfQ1hYQUJJKQorICAgICAgICAgIGlmIChLV1NZU19DWFhfSEFTX0NYWEFCSSkKICAgICAgICAgICAgICMgYysrIGRlbWFuZ2xlIHVzaW5nIGN4eGFiaSBpcyBzdXBwb3J0ZWQgd2l0aAogICAgICAgICAgICAgIyB0aGlzIHN5c3RlbSBhbmQgY29tcGlsZXIKLSAgICAgICAgICAgIFNFVF9QUk9QRVJUWShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQorICAgICAgICAgICAgc2V0X3Byb3BlcnR5KFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCiAgICAgICAgICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgS1dTWVNfU1lTVEVNSU5GT1JNQVRJT05fSEFTX0NQUF9ERU1BTkdMRT0xKQotICAgICAgICAgIEVORElGKCkKLSAgICAgICAgRU5ESUYoKQorICAgICAgICAgIGVuZGlmKCkKKyAgICAgICAgZW5kaWYoKQogICAgICAgICAjIGJhc2ljIGJhY2t0cmFjZSB3b3JrcyBiZXR0ZXIgd2l0aCByZWxlYXNlIGJ1aWxkCiAgICAgICAgICMgZG9uJ3QgYm90aGVyIHdpdGggYWR2YW5jZWQgZmVhdHVyZXMgZm9yIHJlbGVhc2UKLSAgICAgICAgU0VUX1BST1BFUlRZKFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCisgICAgICAgIHNldF9wcm9wZXJ0eShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQogICAgICAgICAgIENPTVBJTEVfREVGSU5JVElPTlNfREVCVUcgS1dTWVNfU1lTVEVNSU5GT1JNQVRJT05fSEFTX0RFQlVHX0JVSUxEPTEpCi0gICAgICAgIFNFVF9QUk9QRVJUWShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQorICAgICAgICBzZXRfcHJvcGVydHkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKICAgICAgICAgICBDT01QSUxFX0RFRklOSVRJT05TX1JFTFdJVEhERUJJTkZPIEtXU1lTX1NZU1RFTUlORk9STUFUSU9OX0hBU19ERUJVR19CVUlMRD0xKQotICAgICAgRU5ESUYoKQotICAgIEVORElGKCkKLSAgRU5ESUYoKQotICBJRihCT1JMQU5EKQorICAgICAgZW5kaWYoKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorICBpZihCT1JMQU5EKQogICAgIEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUKEtXU1lTX0NYWF9IQVNfQk9STEFORF9BU00KICAgICAgICJDaGVja2luZyB3aGV0aGVyIEJvcmxhbmQgQ1hYIGNvbXBpbGVyIHN1cHBvcnRzIGFzc2VtYmxlciBpbnN0cnVjdGlvbnMiIERJUkVDVCkKLSAgICBJRihLV1NZU19DWFhfSEFTX0JPUkxBTkRfQVNNKQotICAgICAgU0VUX1BST1BFUlRZKFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCisgICAgaWYoS1dTWVNfQ1hYX0hBU19CT1JMQU5EX0FTTSkKKyAgICAgIHNldF9wcm9wZXJ0eShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQogICAgICAgICBDT01QSUxFX0RFRklOSVRJT05TIEtXU1lTX0NYWF9IQVNfQk9STEFORF9BU009MSkKICAgICAgIEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUKEtXU1lTX0NYWF9IQVNfQk9STEFORF9BU01fQ1BVSUQKICAgICAgICAgIkNoZWNraW5nIHdoZXRoZXIgQm9ybGFuZCBDWFggY29tcGlsZXIgc3VwcG9ydHMgQ1BVSUQgYXNzZW1ibGVyIGluc3RydWN0aW9uIiBESVJFQ1QpCi0gICAgICBJRihLV1NZU19DWFhfSEFTX0JPUkxBTkRfQVNNX0NQVUlEKQotICAgICAgICBTRVRfUFJPUEVSVFkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKKyAgICAgIGlmKEtXU1lTX0NYWF9IQVNfQk9STEFORF9BU01fQ1BVSUQpCisgICAgICAgIHNldF9wcm9wZXJ0eShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQogICAgICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgS1dTWVNfQ1hYX0hBU19CT1JMQU5EX0FTTV9DUFVJRD0xKQotICAgICAgRU5ESUYoKQotICAgIEVORElGKCkKLSAgRU5ESUYoKQotICBJRihLV1NZU19VU0VfX19JTlQ2NCkKLSAgICBTRVRfUFJPUEVSVFkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCB0ZXN0U3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQorICAgICAgZW5kaWYoKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorICBpZihLV1NZU19VU0VfX19JTlQ2NCkKKyAgICBzZXRfcHJvcGVydHkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCB0ZXN0U3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQogICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyBLV1NZU19VU0VfX19JTlQ2ND0xKQotICBFTkRJRigpCi0gIElGKEtXU1lTX1VTRV9MT05HX0xPTkcpCi0gICAgU0VUX1BST1BFUlRZKFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggdGVzdFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKKyAgZW5kaWYoKQorICBpZihLV1NZU19VU0VfTE9OR19MT05HKQorICAgIHNldF9wcm9wZXJ0eShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IHRlc3RTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCiAgICAgICBDT01QSUxFX0RFRklOSVRJT05TIEtXU1lTX1VTRV9MT05HX0xPTkc9MSkKLSAgRU5ESUYoKQotICBJRihLV1NZU19JT1NfSEFTX09TVFJFQU1fTE9OR19MT05HKQotICAgIFNFVF9QUk9QRVJUWShTT1VSQ0UgU3lzdGVtSW5mb3JtYXRpb24uY3h4IHRlc3RTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCisgIGVuZGlmKCkKKyAgaWYoS1dTWVNfSU9TX0hBU19PU1RSRUFNX0xPTkdfTE9ORykKKyAgICBzZXRfcHJvcGVydHkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCB0ZXN0U3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQogICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyBLV1NZU19JT1NfSEFTX09TVFJFQU1fTE9OR19MT05HPTEpCi0gIEVORElGKCkKLSAgSUYoS1dTWVNfSU9TX0hBU19PU1RSRUFNX19fSU5UNjQpCi0gICAgU0VUX1BST1BFUlRZKFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggdGVzdFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKKyAgZW5kaWYoKQorICBpZihLV1NZU19JT1NfSEFTX09TVFJFQU1fX19JTlQ2NCkKKyAgICBzZXRfcHJvcGVydHkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCB0ZXN0U3lzdGVtSW5mb3JtYXRpb24uY3h4IEFQUEVORCBQUk9QRVJUWQogICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyBLV1NZU19JT1NfSEFTX09TVFJFQU1fX19JTlQ2ND0xKQotICBFTkRJRigpCi0gIElGKEtXU1lTX0JVSUxEX1NIQVJFRCkKLSAgICBTRVRfUFJPUEVSVFkoU09VUkNFIFN5c3RlbUluZm9ybWF0aW9uLmN4eCBBUFBFTkQgUFJPUEVSVFkKKyAgZW5kaWYoKQorICBpZihLV1NZU19CVUlMRF9TSEFSRUQpCisgICAgc2V0X3Byb3BlcnR5KFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCiAgICAgICBDT01QSUxFX0RFRklOSVRJT05TIEtXU1lTX0JVSUxEX1NIQVJFRD0xKQotICBFTkRJRigpCisgIGVuZGlmKCkKIAotICBJRihVTklYIEFORCBOT1QgQ1lHV0lOKQorICBpZihVTklYIEFORCBOT1QgQ1lHV0lOKQogICAgIEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUKEtXU1lTX0NYWF9IQVNfR0VUTE9BREFWRwogICAgICAgIkNoZWNraW5nIHdoZXRoZXIgQ1hYIGNvbXBpbGVyIGhhcyBnZXRsb2FkYXZnIiBESVJFQ1QpCi0gICAgSUYoS1dTWVNfQ1hYX0hBU19HRVRMT0FEQVZHKQotICAgICAgU0VUX1BST1BFUlRZKFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCisgICAgaWYoS1dTWVNfQ1hYX0hBU19HRVRMT0FEQVZHKQorICAgICAgc2V0X3Byb3BlcnR5KFNPVVJDRSBTeXN0ZW1JbmZvcm1hdGlvbi5jeHggQVBQRU5EIFBST1BFUlRZCiAgICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgS1dTWVNfQ1hYX0hBU19HRVRMT0FEQVZHPTEpCi0gICAgRU5ESUYoKQotICBFTkRJRigpCi1FTkRJRigpCisgICAgZW5kaWYoKQorICBlbmRpZigpCitlbmRpZigpCiAKLUlGKEtXU1lTX1VTRV9GU3RyZWFtKQoraWYoS1dTWVNfVVNFX0ZTdHJlYW0pCiAgIEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUKEtXU1lTX0NYWF9IQVNfRVhUX1NURElPX0ZJTEVCVUZfSAogICAgICJDaGVja2luZyB3aGV0aGVyIDxleHQvc3RkaW9fZmlsZWJ1Zi5oPiBpcyBhdmFpbGFibGUiIERJUkVDVCkKLUVORElGKCkKK2VuZGlmKCkKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIENob29zZSBhIGRpcmVjdG9yeSBmb3IgdGhlIGdlbmVyYXRlZCBoZWFkZXJzLgotSUYoTk9UIEtXU1lTX0hFQURFUl9ST09UKQotICBTRVQoS1dTWVNfSEVBREVSX1JPT1QgIiR7UFJPSkVDVF9CSU5BUllfRElSfSIpCi1FTkRJRigpCi1TRVQoS1dTWVNfSEVBREVSX0RJUiAiJHtLV1NZU19IRUFERVJfUk9PVH0vJHtLV1NZU19OQU1FU1BBQ0V9IikKLUlOQ0xVREVfRElSRUNUT1JJRVMoJHtLV1NZU19IRUFERVJfUk9PVH0pCitpZihOT1QgS1dTWVNfSEVBREVSX1JPT1QpCisgIHNldChLV1NZU19IRUFERVJfUk9PVCAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9IikKK2VuZGlmKCkKK3NldChLV1NZU19IRUFERVJfRElSICIke0tXU1lTX0hFQURFUl9ST09UfS8ke0tXU1lTX05BTUVTUEFDRX0iKQoraW5jbHVkZV9kaXJlY3Rvcmllcygke0tXU1lTX0hFQURFUl9ST09UfSkKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1JRihLV1NZU19JTlNUQUxMX0RPQ19ESVIpCitpZihLV1NZU19JTlNUQUxMX0RPQ19ESVIpCiAgICMgQXNzaWduIHRoZSBsaWNlbnNlIHRvIHRoZSBydW50aW1lIGNvbXBvbmVudCBzaW5jZSBpdCBtdXN0IGJlCiAgICMgZGlzdHJpYnV0ZWQgd2l0aCBiaW5hcnkgZm9ybXMgb2YgdGhpcyBzb2Z0d2FyZS4KLSAgSUYoS1dTWVNfSU5TVEFMTF9DT01QT05FTlRfTkFNRV9SVU5USU1FKQotICAgIFNFVChLV1NZU19JTlNUQUxMX0xJQ0VOU0VfT1BUSU9OUyAke0tXU1lTX0lOU1RBTExfTElDRU5TRV9PUFRJT05TfQorICBpZihLV1NZU19JTlNUQUxMX0NPTVBPTkVOVF9OQU1FX1JVTlRJTUUpCisgICAgc2V0KEtXU1lTX0lOU1RBTExfTElDRU5TRV9PUFRJT05TICR7S1dTWVNfSU5TVEFMTF9MSUNFTlNFX09QVElPTlN9CiAgICAgICBDT01QT05FTlQgJHtLV1NZU19JTlNUQUxMX0NPTVBPTkVOVF9OQU1FX1JVTlRJTUV9CiAgICAgICApCi0gIEVORElGKCkKKyAgZW5kaWYoKQogCiAgICMgSW5zdGFsbCB0aGUgbGljZW5zZSB1bmRlciB0aGUgZG9jdW1lbnRhdGlvbiBkaXJlY3RvcnkuCi0gIElOU1RBTEwoRklMRVMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L0NvcHlyaWdodC50eHQKKyAgaW5zdGFsbChGSUxFUyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vQ29weXJpZ2h0LnR4dAogICAgIERFU1RJTkFUSU9OICR7S1dTWVNfSU5TVEFMTF9ET0NfRElSfS8ke0tXU1lTX05BTUVTUEFDRX0KICAgICAke0tXU1lTX0lOU1RBTExfTElDRU5TRV9PUFRJT05TfSkKLUVORElGKCkKK2VuZGlmKCkKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEJ1aWxkIGEgbGlzdCBvZiBjbGFzc2VzIGFuZCBoZWFkZXJzIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoZQogIyBzZWxlY3RlZCBjb21wb25lbnRzLiAgSW5pdGlhbGl6ZSB3aXRoIHJlcXVpcmVkIGNvbXBvbmVudHMuCi1TRVQoS1dTWVNfQ0xBU1NFUykKLVNFVChLV1NZU19IX0ZJTEVTIENvbmZpZ3VyZSBTaGFyZWRGb3J3YXJkKQotU0VUKEtXU1lTX0hYWF9GSUxFUyBDb25maWd1cmUgU3RyaW5nKQorc2V0KEtXU1lTX0NMQVNTRVMpCitzZXQoS1dTWVNfSF9GSUxFUyBDb25maWd1cmUgU2hhcmVkRm9yd2FyZCkKK3NldChLV1NZU19IWFhfRklMRVMgQ29uZmlndXJlIFN0cmluZykKIAotSUYoTk9UIENNYWtlX1NPVVJDRV9ESVIpCi0gIFNFVChLV1NZU19IWFhfRklMRVMgJHtLV1NZU19IWFhfRklMRVN9CitpZihOT1QgQ01ha2VfU09VUkNFX0RJUikKKyAgc2V0KEtXU1lTX0hYWF9GSUxFUyAke0tXU1lTX0hYWF9GSUxFU30KICAgICBoYXNodGFibGUgaGFzaF9mdW4gaGFzaF9tYXAgaGFzaF9zZXQKICAgICApCi1FTkRJRigpCitlbmRpZigpCiAKICMgQWRkIHNlbGVjdGVkIEMrKyBjbGFzc2VzLgotU0VUKGNwcGNsYXNzZXMKK3NldChjcHBjbGFzc2VzCiAgIERpcmVjdG9yeSBEeW5hbWljTG9hZGVyIEVuY29kaW5nIEdsb2IgUmVndWxhckV4cHJlc3Npb24gU3lzdGVtVG9vbHMKICAgQ29tbWFuZExpbmVBcmd1bWVudHMgSU9TdHJlYW0gRlN0cmVhbSBTeXN0ZW1JbmZvcm1hdGlvbiBDb25zb2xlQnVmCiAgICkKLUZPUkVBQ0goY3BwICR7Y3BwY2xhc3Nlc30pCi0gIElGKEtXU1lTX1VTRV8ke2NwcH0pCitmb3JlYWNoKGNwcCAke2NwcGNsYXNzZXN9KQorICBpZihLV1NZU19VU0VfJHtjcHB9KQogICAgICMgVXNlIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLgotICAgIFNFVChLV1NZU19DTEFTU0VTICR7S1dTWVNfQ0xBU1NFU30gJHtjcHB9KQorICAgIHNldChLV1NZU19DTEFTU0VTICR7S1dTWVNfQ0xBU1NFU30gJHtjcHB9KQogCiAgICAgIyBMb2FkIGNvbXBvbmVudC1zcGVjaWZpYyBDTWFrZSBjb2RlLgotICAgIElGKEVYSVNUUyAke1BST0pFQ1RfU09VUkNFX0RJUn0va3dzeXMke2NwcH0uY21ha2UpCi0gICAgICBJTkNMVURFKCR7UFJPSkVDVF9TT1VSQ0VfRElSfS9rd3N5cyR7Y3BwfS5jbWFrZSkKLSAgICBFTkRJRigpCi0gIEVORElGKCkKLUVOREZPUkVBQ0goKQorICAgIGlmKEVYSVNUUyAke1BST0pFQ1RfU09VUkNFX0RJUn0va3dzeXMke2NwcH0uY21ha2UpCisgICAgICBpbmNsdWRlKCR7UFJPSkVDVF9TT1VSQ0VfRElSfS9rd3N5cyR7Y3BwfS5jbWFrZSkKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKK2VuZGZvcmVhY2goKQogCiAjIEFkZCBzZWxlY3RlZCBDIGNvbXBvbmVudHMuCi1GT1JFQUNIKGMKK2ZvcmVhY2goYwogICAgIFByb2Nlc3MgQmFzZTY0IEVuY29kaW5nIE1ENSBUZXJtaW5hbCBTeXN0ZW0gU3RyaW5nCiAgICAgKQotICBJRihLV1NZU19VU0VfJHtjfSkKKyAgaWYoS1dTWVNfVVNFXyR7Y30pCiAgICAgIyBVc2UgdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUuCi0gICAgU0VUKEtXU1lTX0hfRklMRVMgJHtLV1NZU19IX0ZJTEVTfSAke2N9KQorICAgIHNldChLV1NZU19IX0ZJTEVTICR7S1dTWVNfSF9GSUxFU30gJHtjfSkKIAogICAgICMgTG9hZCBjb21wb25lbnQtc3BlY2lmaWMgQ01ha2UgY29kZS4KLSAgICBJRihFWElTVFMgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2t3c3lzJHtjfS5jbWFrZSkKLSAgICAgIElOQ0xVREUoJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2t3c3lzJHtjfS5jbWFrZSkKLSAgICBFTkRJRigpCi0gIEVORElGKCkKLUVOREZPUkVBQ0goKQorICAgIGlmKEVYSVNUUyAke1BST0pFQ1RfU09VUkNFX0RJUn0va3dzeXMke2N9LmNtYWtlKQorICAgICAgaW5jbHVkZSgke1BST0pFQ1RfU09VUkNFX0RJUn0va3dzeXMke2N9LmNtYWtlKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorZW5kZm9yZWFjaCgpCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBCdWlsZCBhIGxpc3Qgb2Ygc291cmNlcyBmb3IgdGhlIGxpYnJhcnkgYmFzZWQgb24gY29tcG9uZW50cyB0aGF0IGFyZQogIyBpbmNsdWRlZC4KLVNFVChLV1NZU19DX1NSQ1MpCi1TRVQoS1dTWVNfQ1hYX1NSQ1MpCitzZXQoS1dTWVNfQ19TUkNTKQorc2V0KEtXU1lTX0NYWF9TUkNTKQogCiAjIEFkZCB0aGUgcHJvcGVyIHNvdXJjZXMgZm9yIHRoaXMgcGxhdGZvcm0ncyBQcm9jZXNzIGltcGxlbWVudGF0aW9uLgotSUYoS1dTWVNfVVNFX1Byb2Nlc3MpCi0gIElGKE5PVCBVTklYKQoraWYoS1dTWVNfVVNFX1Byb2Nlc3MpCisgIGlmKE5PVCBVTklYKQogICAgICMgVXNlIHRoZSBXaW5kb3dzIGltcGxlbWVudGF0aW9uLgotICAgIFNFVChLV1NZU19DX1NSQ1MgJHtLV1NZU19DX1NSQ1N9IFByb2Nlc3NXaW4zMi5jKQotICBFTFNFKCkKKyAgICBzZXQoS1dTWVNfQ19TUkNTICR7S1dTWVNfQ19TUkNTfSBQcm9jZXNzV2luMzIuYykKKyAgZWxzZSgpCiAgICAgIyBVc2UgdGhlIFVOSVggaW1wbGVtZW50YXRpb24uCi0gICAgU0VUKEtXU1lTX0NfU1JDUyAke0tXU1lTX0NfU1JDU30gUHJvY2Vzc1VOSVguYykKLSAgRU5ESUYoKQotRU5ESUYoKQorICAgIHNldChLV1NZU19DX1NSQ1MgJHtLV1NZU19DX1NSQ1N9IFByb2Nlc3NVTklYLmMpCisgIGVuZGlmKCkKK2VuZGlmKCkKIAogIyBBZGQgc2VsZWN0ZWQgQyBzb3VyY2VzLgotRk9SRUFDSChjIEJhc2U2NCBFbmNvZGluZyBNRDUgVGVybWluYWwgU3lzdGVtIFN0cmluZykKLSAgSUYoS1dTWVNfVVNFXyR7Y30pCi0gICAgSUYoRVhJU1RTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8ke2N9Qy5jKQotICAgICAgTElTVChBUFBFTkQgS1dTWVNfQ19TUkNTICR7Y31DLmMpCi0gICAgRUxTRSgpCi0gICAgICBMSVNUKEFQUEVORCBLV1NZU19DX1NSQ1MgJHtjfS5jKQotICAgIEVORElGKCkKLSAgRU5ESUYoKQotRU5ERk9SRUFDSCgpCitmb3JlYWNoKGMgQmFzZTY0IEVuY29kaW5nIE1ENSBUZXJtaW5hbCBTeXN0ZW0gU3RyaW5nKQorICBpZihLV1NZU19VU0VfJHtjfSkKKyAgICBpZihFWElTVFMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9LyR7Y31DLmMpCisgICAgICBsaXN0KEFQUEVORCBLV1NZU19DX1NSQ1MgJHtjfUMuYykKKyAgICBlbHNlKCkKKyAgICAgIGxpc3QoQVBQRU5EIEtXU1lTX0NfU1JDUyAke2N9LmMpCisgICAgZW5kaWYoKQorICBlbmRpZigpCitlbmRmb3JlYWNoKCkKIAogIyBDb25maWd1cmUgaGVhZGVycyBvZiBDKysgY2xhc3NlcyBhbmQgY29uc3RydWN0IHRoZSBsaXN0IG9mIHNvdXJjZXMuCi1GT1JFQUNIKGMgJHtLV1NZU19DTEFTU0VTfSkKK2ZvcmVhY2goYyAke0tXU1lTX0NMQVNTRVN9KQogICAjIEFkZCB0aGlzIHNvdXJjZSB0byB0aGUgbGlzdCBvZiBzb3VyY2UgZmlsZXMgZm9yIHRoZSBsaWJyYXJ5LgotICBJRihFWElTVFMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9LyR7Y31DWFguY3h4KQotICAgIExJU1QoQVBQRU5EIEtXU1lTX0NYWF9TUkNTICR7Y31DWFguY3h4KQotICBFTFNFSUYoRVhJU1RTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8ke2N9LmN4eCkKLSAgICBMSVNUKEFQUEVORCBLV1NZU19DWFhfU1JDUyAke2N9LmN4eCkKLSAgRU5ESUYoKQorICBpZihFWElTVFMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9LyR7Y31DWFguY3h4KQorICAgIGxpc3QoQVBQRU5EIEtXU1lTX0NYWF9TUkNTICR7Y31DWFguY3h4KQorICBlbHNlaWYoRVhJU1RTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8ke2N9LmN4eCkKKyAgICBsaXN0KEFQUEVORCBLV1NZU19DWFhfU1JDUyAke2N9LmN4eCkKKyAgZW5kaWYoKQogCiAgICMgQ29uZmlndXJlIHRoZSBoZWFkZXIgZm9yIHRoaXMgY2xhc3MuCi0gIENPTkZJR1VSRV9GSUxFKCR7UFJPSkVDVF9TT1VSQ0VfRElSfS8ke2N9Lmh4eC5pbiAke0tXU1lTX0hFQURFUl9ESVJ9LyR7Y30uaHh4CisgIGNvbmZpZ3VyZV9maWxlKCR7UFJPSkVDVF9TT1VSQ0VfRElSfS8ke2N9Lmh4eC5pbiAke0tXU1lTX0hFQURFUl9ESVJ9LyR7Y30uaHh4CiAgICAgICAgICAgICAgICAgIEBPTkxZIElNTUVESUFURSkKLSAgU0VUKEtXU1lTX0NYWF9TUkNTICR7S1dTWVNfQ1hYX1NSQ1N9ICR7S1dTWVNfSEVBREVSX0RJUn0vJHtjfS5oeHgpCisgIHNldChLV1NZU19DWFhfU1JDUyAke0tXU1lTX0NYWF9TUkNTfSAke0tXU1lTX0hFQURFUl9ESVJ9LyR7Y30uaHh4KQogCiAgICMgQ3JlYXRlIGFuIGluc3RhbGwgdGFyZ2V0IGZvciB0aGUgaGVhZGVyLgotICBJRihLV1NZU19JTlNUQUxMX0lOQ0xVREVfRElSKQotICAgIElOU1RBTEwoRklMRVMgJHtLV1NZU19IRUFERVJfRElSfS8ke2N9Lmh4eAorICBpZihLV1NZU19JTlNUQUxMX0lOQ0xVREVfRElSKQorICAgIGluc3RhbGwoRklMRVMgJHtLV1NZU19IRUFERVJfRElSfS8ke2N9Lmh4eAogICAgICAgREVTVElOQVRJT04gJHtLV1NZU19JTlNUQUxMX0lOQ0xVREVfRElSfS8ke0tXU1lTX05BTUVTUEFDRX0KICAgICAgICR7S1dTWVNfSU5TVEFMTF9JTkNMVURFX09QVElPTlN9KQotICBFTkRJRigpCi1FTkRGT1JFQUNIKCkKKyAgZW5kaWYoKQorZW5kZm9yZWFjaCgpCiAKICMgQ29uZmlndXJlIEMgaGVhZGVycy4KLUZPUkVBQ0goaCAke0tXU1lTX0hfRklMRVN9KQorZm9yZWFjaChoICR7S1dTWVNfSF9GSUxFU30pCiAgICMgQ29uZmlndXJlIHRoZSBoZWFkZXIgaW50byB0aGUgZ2l2ZW4gZGlyZWN0b3J5LgotICBDT05GSUdVUkVfRklMRSgke1BST0pFQ1RfU09VUkNFX0RJUn0vJHtofS5oLmluICR7S1dTWVNfSEVBREVSX0RJUn0vJHtofS5oCisgIGNvbmZpZ3VyZV9maWxlKCR7UFJPSkVDVF9TT1VSQ0VfRElSfS8ke2h9LmguaW4gJHtLV1NZU19IRUFERVJfRElSfS8ke2h9LmgKICAgICAgICAgICAgICAgICAgQE9OTFkgSU1NRURJQVRFKQotICBTRVQoS1dTWVNfQ19TUkNTICR7S1dTWVNfQ19TUkNTfSAke0tXU1lTX0hFQURFUl9ESVJ9LyR7aH0uaCkKKyAgc2V0KEtXU1lTX0NfU1JDUyAke0tXU1lTX0NfU1JDU30gJHtLV1NZU19IRUFERVJfRElSfS8ke2h9LmgpCiAKICAgIyBDcmVhdGUgYW4gaW5zdGFsbCB0YXJnZXQgZm9yIHRoZSBoZWFkZXIuCi0gIElGKEtXU1lTX0lOU1RBTExfSU5DTFVERV9ESVIpCi0gICAgSU5TVEFMTChGSUxFUyAke0tXU1lTX0hFQURFUl9ESVJ9LyR7aH0uaAorICBpZihLV1NZU19JTlNUQUxMX0lOQ0xVREVfRElSKQorICAgIGluc3RhbGwoRklMRVMgJHtLV1NZU19IRUFERVJfRElSfS8ke2h9LmgKICAgICAgIERFU1RJTkFUSU9OICR7S1dTWVNfSU5TVEFMTF9JTkNMVURFX0RJUn0vJHtLV1NZU19OQU1FU1BBQ0V9CiAgICAgICAke0tXU1lTX0lOU1RBTExfSU5DTFVERV9PUFRJT05TfSkKLSAgRU5ESUYoKQotRU5ERk9SRUFDSCgpCisgIGVuZGlmKCkKK2VuZGZvcmVhY2goKQogCiAjIENvbmZpZ3VyZSBvdGhlciBDKysgaGVhZGVycy4KLUZPUkVBQ0goaCAke0tXU1lTX0hYWF9GSUxFU30pCitmb3JlYWNoKGggJHtLV1NZU19IWFhfRklMRVN9KQogICAjIENvbmZpZ3VyZSB0aGUgaGVhZGVyIGludG8gdGhlIGdpdmVuIGRpcmVjdG9yeS4KLSAgQ09ORklHVVJFX0ZJTEUoJHtQUk9KRUNUX1NPVVJDRV9ESVJ9LyR7aH0uaHh4LmluICR7S1dTWVNfSEVBREVSX0RJUn0vJHtofS5oeHgKKyAgY29uZmlndXJlX2ZpbGUoJHtQUk9KRUNUX1NPVVJDRV9ESVJ9LyR7aH0uaHh4LmluICR7S1dTWVNfSEVBREVSX0RJUn0vJHtofS5oeHgKICAgICAgICAgICAgICAgICAgQE9OTFkgSU1NRURJQVRFKQotICBTRVQoS1dTWVNfQ1hYX1NSQ1MgJHtLV1NZU19DWFhfU1JDU30gJHtLV1NZU19IRUFERVJfRElSfS8ke2h9Lmh4eCkKKyAgc2V0KEtXU1lTX0NYWF9TUkNTICR7S1dTWVNfQ1hYX1NSQ1N9ICR7S1dTWVNfSEVBREVSX0RJUn0vJHtofS5oeHgpCiAKICAgIyBDcmVhdGUgYW4gaW5zdGFsbCB0YXJnZXQgZm9yIHRoZSBoZWFkZXIuCi0gIElGKEtXU1lTX0lOU1RBTExfSU5DTFVERV9ESVIpCi0gICAgSU5TVEFMTChGSUxFUyAke0tXU1lTX0hFQURFUl9ESVJ9LyR7aH0uaHh4CisgIGlmKEtXU1lTX0lOU1RBTExfSU5DTFVERV9ESVIpCisgICAgaW5zdGFsbChGSUxFUyAke0tXU1lTX0hFQURFUl9ESVJ9LyR7aH0uaHh4CiAgICAgICBERVNUSU5BVElPTiAke0tXU1lTX0lOU1RBTExfSU5DTFVERV9ESVJ9LyR7S1dTWVNfTkFNRVNQQUNFfQogICAgICAgJHtLV1NZU19JTlNUQUxMX0lOQ0xVREVfT1BUSU9OU30pCi0gIEVORElGKCkKLUVOREZPUkVBQ0goKQorICBlbmRpZigpCitlbmRmb3JlYWNoKCkKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEFkZCB0aGUgbGlicmFyeSB3aXRoIHRoZSBjb25maWd1cmVkIG5hbWUgYW5kIGxpc3Qgb2Ygc291cmNlcy4KLUlGKEtXU1lTX0NfU1JDUyBPUiBLV1NZU19DWFhfU1JDUykKLSAgSUYoS1dTWVNfU1BMSVRfT0JKRUNUU19GUk9NX0lOVEVSRkFDRSkKLSAgICBTRVQoS1dTWVNfVEFSR0VUX0lOVEVSRkFDRSAke0tXU1lTX05BTUVTUEFDRX0pCi0gICAgU0VUKEtXU1lTX1RBUkdFVF9PQkpFQ1QgJHtLV1NZU19OQU1FU1BBQ0V9X29iamVjdHMpCi0gICAgU0VUKEtXU1lTX1RBUkdFVF9MSU5LICR7S1dTWVNfTkFNRVNQQUNFfV9wcml2YXRlKQotICAgIFNFVChLV1NZU19UQVJHRVRfSU5TVEFMTCAke0tXU1lTX1RBUkdFVF9JTlRFUkZBQ0V9ICR7S1dTWVNfVEFSR0VUX0xJTkt9KQotICAgIFNFVChLV1NZU19MSU5LX0RFUEVOREVOQ1kgSU5URVJGQUNFKQotICAgIEFERF9MSUJSQVJZKCR7S1dTWVNfVEFSR0VUX09CSkVDVH0gT0JKRUNUCitpZihLV1NZU19DX1NSQ1MgT1IgS1dTWVNfQ1hYX1NSQ1MpCisgIGlmKEtXU1lTX1NQTElUX09CSkVDVFNfRlJPTV9JTlRFUkZBQ0UpCisgICAgc2V0KEtXU1lTX1RBUkdFVF9JTlRFUkZBQ0UgJHtLV1NZU19OQU1FU1BBQ0V9KQorICAgIHNldChLV1NZU19UQVJHRVRfT0JKRUNUICR7S1dTWVNfTkFNRVNQQUNFfV9vYmplY3RzKQorICAgIHNldChLV1NZU19UQVJHRVRfTElOSyAke0tXU1lTX05BTUVTUEFDRX1fcHJpdmF0ZSkKKyAgICBzZXQoS1dTWVNfVEFSR0VUX0lOU1RBTEwgJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSAke0tXU1lTX1RBUkdFVF9MSU5LfSkKKyAgICBzZXQoS1dTWVNfTElOS19ERVBFTkRFTkNZIElOVEVSRkFDRSkKKyAgICBhZGRfbGlicmFyeSgke0tXU1lTX1RBUkdFVF9PQkpFQ1R9IE9CSkVDVAogICAgICAgJHtLV1NZU19DX1NSQ1N9ICR7S1dTWVNfQ1hYX1NSQ1N9KQotICAgIElGKEtXU1lTX0JVSUxEX1NIQVJFRCBPUiBLV1NZU19CVUlMRF9QSUMpCi0gICAgICBTRVRfUFJPUEVSVFkoVEFSR0VUICR7S1dTWVNfVEFSR0VUX09CSkVDVH0gUFJPUEVSVFkKKyAgICBpZihLV1NZU19CVUlMRF9TSEFSRUQgT1IgS1dTWVNfQlVJTERfUElDKQorICAgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke0tXU1lTX1RBUkdFVF9PQkpFQ1R9IFBST1BFUlRZCiAgICAgICAgIFBPU0lUSU9OX0lOREVQRU5ERU5UX0NPREUgVFJVRSkKLSAgICBFTkRJRigpCi0gICAgQUREX0xJQlJBUlkoJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSBJTlRFUkZBQ0UpCi0gICAgQUREX0xJQlJBUlkoJHtLV1NZU19UQVJHRVRfTElOS30gSU5URVJGQUNFKQotICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke0tXU1lTX1RBUkdFVF9MSU5LfSBJTlRFUkZBQ0UKKyAgICBlbmRpZigpCisgICAgYWRkX2xpYnJhcnkoJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSBJTlRFUkZBQ0UpCisgICAgYWRkX2xpYnJhcnkoJHtLV1NZU19UQVJHRVRfTElOS30gSU5URVJGQUNFKQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke0tXU1lTX1RBUkdFVF9MSU5LfSBJTlRFUkZBQ0UKICAgICAgICR7S1dTWVNfVEFSR0VUX0lOVEVSRkFDRX0pCi0gICAgVEFSR0VUX1NPVVJDRVMoJHtLV1NZU19UQVJHRVRfTElOS30gSU5URVJGQUNFCisgICAgdGFyZ2V0X3NvdXJjZXMoJHtLV1NZU19UQVJHRVRfTElOS30gSU5URVJGQUNFCiAgICAgICAkPFRBUkdFVF9PQkpFQ1RTOiR7S1dTWVNfVEFSR0VUX09CSkVDVH0+KQogICAgIHRhcmdldF9jb21waWxlX2ZlYXR1cmVzKCR7S1dTWVNfVEFSR0VUX09CSkVDVH0gUFJJVkFURSAke0tXU1lTX0NYWF9DT01QSUxFX0ZFQVRVUkVTfSkKICAgICB0YXJnZXRfY29tcGlsZV9mZWF0dXJlcygke0tXU1lTX1RBUkdFVF9JTlRFUkZBQ0V9IElOVEVSRkFDRSAke0tXU1lTX0NYWF9DT01QSUxFX0ZFQVRVUkVTfSkKLSAgRUxTRSgpCi0gICAgU0VUKEtXU1lTX1RBUkdFVF9JTlRFUkZBQ0UgJHtLV1NZU19OQU1FU1BBQ0V9KQotICAgIFNFVChLV1NZU19UQVJHRVRfT0JKRUNUICR7S1dTWVNfTkFNRVNQQUNFfSkKLSAgICBTRVQoS1dTWVNfVEFSR0VUX0xJTksgJHtLV1NZU19OQU1FU1BBQ0V9KQorICBlbHNlKCkKKyAgICBzZXQoS1dTWVNfVEFSR0VUX0lOVEVSRkFDRSAke0tXU1lTX05BTUVTUEFDRX0pCisgICAgc2V0KEtXU1lTX1RBUkdFVF9PQkpFQ1QgJHtLV1NZU19OQU1FU1BBQ0V9KQorICAgIHNldChLV1NZU19UQVJHRVRfTElOSyAke0tXU1lTX05BTUVTUEFDRX0pCiAgICAgc2V0KEtXU1lTX1RBUkdFVF9JTlNUQUxMICR7S1dTWVNfVEFSR0VUX0xJTkt9KQotICAgIFNFVChLV1NZU19MSU5LX0RFUEVOREVOQ1kgUFVCTElDKQotICAgIEFERF9MSUJSQVJZKCR7S1dTWVNfVEFSR0VUX0lOVEVSRkFDRX0gJHtLV1NZU19MSUJSQVJZX1RZUEV9CisgICAgc2V0KEtXU1lTX0xJTktfREVQRU5ERU5DWSBQVUJMSUMpCisgICAgYWRkX2xpYnJhcnkoJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSAke0tXU1lTX0xJQlJBUllfVFlQRX0KICAgICAgICR7S1dTWVNfQ19TUkNTfSAke0tXU1lTX0NYWF9TUkNTfSkKICAgICB0YXJnZXRfY29tcGlsZV9mZWF0dXJlcygke0tXU1lTX1RBUkdFVF9JTlRFUkZBQ0V9IFBVQkxJQyAke0tXU1lTX0NYWF9DT01QSUxFX0ZFQVRVUkVTfSkKLSAgRU5ESUYoKQorICBlbmRpZigpCiAgIGlmIChLV1NZU19BTElBU19UQVJHRVQpCiAgICAgYWRkX2xpYnJhcnkoJHtLV1NZU19BTElBU19UQVJHRVR9IEFMSUFTICR7S1dTWVNfVEFSR0VUX0lOVEVSRkFDRX0pCiAgIGVuZGlmICgpCi0gIFNFVF9UQVJHRVRfUFJPUEVSVElFUygke0tXU1lTX1RBUkdFVF9PQkpFQ1R9IFBST1BFUlRJRVMKKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7S1dTWVNfVEFSR0VUX09CSkVDVH0gUFJPUEVSVElFUwogICAgIENfQ0xBTkdfVElEWSAiIgogICAgIENYWF9DTEFOR19USURZICIiCiAgICAgQ19JTkNMVURFX1dIQVRfWU9VX1VTRSAiIgogICAgIENYWF9JTkNMVURFX1dIQVRfWU9VX1VTRSAiIgogICAgIExBQkVMUyAiJHtLV1NZU19MQUJFTFNfTElCfSIpCi0gIElGKEtXU1lTX1VTRV9EeW5hbWljTG9hZGVyKQotICAgIElGKFVOSVgpCi0gICAgICBUQVJHRVRfTElOS19MSUJSQVJJRVMoJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSAke0tXU1lTX0xJTktfREVQRU5ERU5DWX0KKyAgaWYoS1dTWVNfVVNFX0R5bmFtaWNMb2FkZXIpCisgICAgaWYoVU5JWCkKKyAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke0tXU1lTX1RBUkdFVF9JTlRFUkZBQ0V9ICR7S1dTWVNfTElOS19ERVBFTkRFTkNZfQogICAgICAgICAke0NNQUtFX0RMX0xJQlN9KQotICAgIEVORElGKCkKLSAgRU5ESUYoKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQogCi0gIElGKEtXU1lTX1VTRV9TeXN0ZW1JbmZvcm1hdGlvbikKLSAgICBJRihXSU4zMikKLSAgICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke0tXU1lTX1RBUkdFVF9JTlRFUkZBQ0V9ICR7S1dTWVNfTElOS19ERVBFTkRFTkNZfSB3czJfMzIpCisgIGlmKEtXU1lTX1VTRV9TeXN0ZW1JbmZvcm1hdGlvbikKKyAgICBpZihXSU4zMikKKyAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke0tXU1lTX1RBUkdFVF9JTlRFUkZBQ0V9ICR7S1dTWVNfTElOS19ERVBFTkRFTkNZfSB3czJfMzIpCiAgICAgICAjIGxpbmsgaW4gZGJnaGVscC5kbGwgZm9yIHN5bWJvbCBsb29rdXAgaWYgTVNWQyAxODAwIG9yIGxhdGVyCiAgICAgICAjIE5vdGUgdGhhdCB0aGUgZGJnaGVscCBydW50aW1lIGlzIHBhcnQgb2YgTVMgV2luZG93cyBPUwotICAgICAgSUYoTVNWQ19WRVJTSU9OIEFORCBOT1QgTVNWQ19WRVJTSU9OIFZFUlNJT05fTEVTUyAxODAwKQotICAgICAgICBUQVJHRVRfTElOS19MSUJSQVJJRVMoJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSAke0tXU1lTX0xJTktfREVQRU5ERU5DWX0gZGJnaGVscCkKLSAgICAgIEVORElGKCkKLSAgICAgIElGKEtXU1lTX1NZU19IQVNfUFNBUEkpCi0gICAgICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke0tXU1lTX1RBUkdFVF9JTlRFUkZBQ0V9ICR7S1dTWVNfTElOS19ERVBFTkRFTkNZfQotICAgICAgICAgIFBzYXBpKQotICAgICAgRU5ESUYoKQotICAgIEVMU0VJRihVTklYKQotICAgICAgSUYgKEVYRUNJTkZPX0xJQiBBTkQgS1dTWVNfQ1hYX0hBU19CQUNLVFJBQ0UpCisgICAgICBpZihNU1ZDX1ZFUlNJT04gQU5EIE5PVCBNU1ZDX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDE4MDApCisgICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke0tXU1lTX1RBUkdFVF9JTlRFUkZBQ0V9ICR7S1dTWVNfTElOS19ERVBFTkRFTkNZfSBkYmdoZWxwKQorICAgICAgZW5kaWYoKQorICAgICAgaWYoS1dTWVNfU1lTX0hBU19QU0FQSSkKKyAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7S1dTWVNfVEFSR0VUX0lOVEVSRkFDRX0gJHtLV1NZU19MSU5LX0RFUEVOREVOQ1l9CisgICAgICAgICAgcHNhcGkpCisgICAgICBlbmRpZigpCisgICAgZWxzZWlmKFVOSVgpCisgICAgICBpZiAoRVhFQ0lORk9fTElCIEFORCBLV1NZU19DWFhfSEFTX0JBQ0tUUkFDRSkKICAgICAgICAgIyBiYWNrdHJhY2Ugb24gRnJlZUJTRCBpcyBub3QgaW4gbGliYwotICAgICAgICBUQVJHRVRfTElOS19MSUJSQVJJRVMoJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSAke0tXU1lTX0xJTktfREVQRU5ERU5DWX0KKyAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7S1dTWVNfVEFSR0VUX0lOVEVSRkFDRX0gJHtLV1NZU19MSU5LX0RFUEVOREVOQ1l9CiAgICAgICAgICAgJHtFWEVDSU5GT19MSUJ9KQotICAgICAgRU5ESUYoKQotICAgICAgSUYgKEtXU1lTX0NYWF9IQVNfRExBRERSKQorICAgICAgZW5kaWYoKQorICAgICAgaWYgKEtXU1lTX0NYWF9IQVNfRExBRERSKQogICAgICAgICAjIGZvciBzeW1ib2wgbG9va3VwIHVzaW5nIGRsYWRkcgotICAgICAgICBUQVJHRVRfTElOS19MSUJSQVJJRVMoJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSAke0tXU1lTX0xJTktfREVQRU5ERU5DWX0KKyAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7S1dTWVNfVEFSR0VUX0lOVEVSRkFDRX0gJHtLV1NZU19MSU5LX0RFUEVOREVOQ1l9CiAgICAgICAgICAgJHtDTUFLRV9ETF9MSUJTfSkKLSAgICAgIEVORElGKCkKLSAgICAgIElGIChDTUFLRV9TWVNURU1fTkFNRSBTVFJFUVVBTCAiU3VuT1MiKQotICAgICAgICBUQVJHRVRfTElOS19MSUJSQVJJRVMoJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSAke0tXU1lTX0xJTktfREVQRU5ERU5DWX0KKyAgICAgIGVuZGlmKCkKKyAgICAgIGlmIChDTUFLRV9TWVNURU1fTkFNRSBTVFJFUVVBTCAiU3VuT1MiKQorICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSAke0tXU1lTX0xJTktfREVQRU5ERU5DWX0KICAgICAgICAgICBzb2NrZXQpCi0gICAgICBFTkRJRigpCi0gICAgRU5ESUYoKQotICBFTkRJRigpCisgICAgICBlbmRpZigpCisgICAgZW5kaWYoKQorICBlbmRpZigpCiAKICAgIyBBcHBseSB1c2VyLWRlZmluZWQgdGFyZ2V0IHByb3BlcnRpZXMgdG8gdGhlIGxpYnJhcnkuCi0gIElGKEtXU1lTX1BST1BFUlRJRVNfQ1hYKQotICAgIFNFVF9UQVJHRVRfUFJPUEVSVElFUygke0tXU1lTX1RBUkdFVF9JTlRFUkZBQ0V9IFBST1BFUlRJRVMKKyAgaWYoS1dTWVNfUFJPUEVSVElFU19DWFgpCisgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7S1dTWVNfVEFSR0VUX0lOVEVSRkFDRX0gUFJPUEVSVElFUwogICAgICAgJHtLV1NZU19QUk9QRVJUSUVTX0NYWH0pCi0gIEVORElGKCkKKyAgZW5kaWYoKQogCiAgICMgU2V0IHVwIGluY2x1ZGUgdXNhZ2UgcmVxdWlyZW1lbnQKLSAgSUYoQ09NTUFORCBUQVJHRVRfSU5DTFVERV9ESVJFQ1RPUklFUykKLSAgICBUQVJHRVRfSU5DTFVERV9ESVJFQ1RPUklFUygke0tXU1lTX1RBUkdFVF9JTlRFUkZBQ0V9IElOVEVSRkFDRQorICBpZihDT01NQU5EIFRBUkdFVF9JTkNMVURFX0RJUkVDVE9SSUVTKQorICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7S1dTWVNfVEFSR0VUX0lOVEVSRkFDRX0gSU5URVJGQUNFCiAgICAgICAkPEJVSUxEX0lOVEVSRkFDRToke0tXU1lTX0hFQURFUl9ST09UfT4pCi0gICAgSUYoS1dTWVNfSU5TVEFMTF9JTkNMVURFX0RJUikKLSAgICAgIFRBUkdFVF9JTkNMVURFX0RJUkVDVE9SSUVTKCR7S1dTWVNfVEFSR0VUX0lOVEVSRkFDRX0gSU5URVJGQUNFCisgICAgaWYoS1dTWVNfSU5TVEFMTF9JTkNMVURFX0RJUikKKyAgICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7S1dTWVNfVEFSR0VUX0lOVEVSRkFDRX0gSU5URVJGQUNFCiAgICAgICAgICQ8SU5TVEFMTF9JTlRFUkZBQ0U6JHtLV1NZU19JTlNUQUxMX0lOQ0xVREVfRElSfT4pCi0gICAgRU5ESUYoKQotICBFTkRJRigpCisgICAgZW5kaWYoKQorICBlbmRpZigpCiAKICAgIyBDcmVhdGUgYW4gaW5zdGFsbCB0YXJnZXQgZm9yIHRoZSBsaWJyYXJ5LgotICBJRihLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRSkKLSAgICBJTlNUQUxMKFRBUkdFVFMgJHtLV1NZU19UQVJHRVRfSU5TVEFMTH0gJHtLV1NZU19JTlNUQUxMX0xJQlJBUllfUlVMRX0pCi0gIEVORElGKCkKLSAgSUYoS1dTWVNfSU5TVEFMTF9OQU1FTElOS19SVUxFKQotICAgIElOU1RBTEwoVEFSR0VUUyAke0tXU1lTX1RBUkdFVF9JTlNUQUxMfSAke0tXU1lTX0lOU1RBTExfTkFNRUxJTktfUlVMRX0pCi0gIEVORElGKCkKLUVORElGKCkKKyAgaWYoS1dTWVNfSU5TVEFMTF9MSUJSQVJZX1JVTEUpCisgICAgaW5zdGFsbChUQVJHRVRTICR7S1dTWVNfVEFSR0VUX0lOU1RBTEx9ICR7S1dTWVNfSU5TVEFMTF9MSUJSQVJZX1JVTEV9KQorICBlbmRpZigpCisgIGlmKEtXU1lTX0lOU1RBTExfTkFNRUxJTktfUlVMRSkKKyAgICBpbnN0YWxsKFRBUkdFVFMgJHtLV1NZU19UQVJHRVRfSU5TVEFMTH0gJHtLV1NZU19JTlNUQUxMX05BTUVMSU5LX1JVTEV9KQorICBlbmRpZigpCitlbmRpZigpCiAKICMgQWRkIGEgQy1vbmx5IGxpYnJhcnkgaWYgcmVxdWVzdGVkLgotSUYoS1dTWVNfRU5BQkxFX0MgQU5EIEtXU1lTX0NfU1JDUykKLSBJRihLV1NZU19TUExJVF9PQkpFQ1RTX0ZST01fSU5URVJGQUNFKQotICAgIFNFVChLV1NZU19UQVJHRVRfQ19JTlRFUkZBQ0UgJHtLV1NZU19OQU1FU1BBQ0V9X2MpCi0gICAgU0VUKEtXU1lTX1RBUkdFVF9DX09CSkVDVCAke0tXU1lTX05BTUVTUEFDRX1fY19vYmplY3RzKQotICAgIFNFVChLV1NZU19UQVJHRVRfQ19MSU5LICR7S1dTWVNfTkFNRVNQQUNFfV9jX3ByaXZhdGUpCi0gICAgU0VUKEtXU1lTX1RBUkdFVF9DX0lOU1RBTEwKK2lmKEtXU1lTX0VOQUJMRV9DIEFORCBLV1NZU19DX1NSQ1MpCisgaWYoS1dTWVNfU1BMSVRfT0JKRUNUU19GUk9NX0lOVEVSRkFDRSkKKyAgICBzZXQoS1dTWVNfVEFSR0VUX0NfSU5URVJGQUNFICR7S1dTWVNfTkFNRVNQQUNFfV9jKQorICAgIHNldChLV1NZU19UQVJHRVRfQ19PQkpFQ1QgJHtLV1NZU19OQU1FU1BBQ0V9X2Nfb2JqZWN0cykKKyAgICBzZXQoS1dTWVNfVEFSR0VUX0NfTElOSyAke0tXU1lTX05BTUVTUEFDRX1fY19wcml2YXRlKQorICAgIHNldChLV1NZU19UQVJHRVRfQ19JTlNUQUxMCiAgICAgICAke0tXU1lTX1RBUkdFVF9DX0lOVEVSRkFDRX0gJHtLV1NZU19UQVJHRVRfQ19MSU5LfSkKLSAgICBTRVQoS1dTWVNfTElOS19ERVBFTkRFTkNZIElOVEVSRkFDRSkKLSAgICBBRERfTElCUkFSWSgke0tXU1lTX1RBUkdFVF9DX09CSkVDVH0gT0JKRUNUICR7S1dTWVNfQ19TUkNTfSkKLSAgICBJRihLV1NZU19CVUlMRF9TSEFSRUQgT1IgS1dTWVNfQlVJTERfUElDKQotICAgICAgU0VUX1BST1BFUlRZKFRBUkdFVCAke0tXU1lTX1RBUkdFVF9DX09CSkVDVH0gUFJPUEVSVFkKKyAgICBzZXQoS1dTWVNfTElOS19ERVBFTkRFTkNZIElOVEVSRkFDRSkKKyAgICBhZGRfbGlicmFyeSgke0tXU1lTX1RBUkdFVF9DX09CSkVDVH0gT0JKRUNUICR7S1dTWVNfQ19TUkNTfSkKKyAgICBpZihLV1NZU19CVUlMRF9TSEFSRUQgT1IgS1dTWVNfQlVJTERfUElDKQorICAgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke0tXU1lTX1RBUkdFVF9DX09CSkVDVH0gUFJPUEVSVFkKICAgICAgICAgUE9TSVRJT05fSU5ERVBFTkRFTlRfQ09ERSBUUlVFKQotICAgIEVORElGKCkKLSAgICBBRERfTElCUkFSWSgke0tXU1lTX1RBUkdFVF9DX0lOVEVSRkFDRX0gSU5URVJGQUNFKQotICAgIEFERF9MSUJSQVJZKCR7S1dTWVNfVEFSR0VUX0NfTElOS30gSU5URVJGQUNFKQotICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke0tXU1lTX1RBUkdFVF9DX0xJTkt9IElOVEVSRkFDRQorICAgIGVuZGlmKCkKKyAgICBhZGRfbGlicmFyeSgke0tXU1lTX1RBUkdFVF9DX0lOVEVSRkFDRX0gSU5URVJGQUNFKQorICAgIGFkZF9saWJyYXJ5KCR7S1dTWVNfVEFSR0VUX0NfTElOS30gSU5URVJGQUNFKQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke0tXU1lTX1RBUkdFVF9DX0xJTkt9IElOVEVSRkFDRQogICAgICAgJHtLV1NZU19UQVJHRVRfQ19JTlRFUkZBQ0V9KQotICAgIFRBUkdFVF9TT1VSQ0VTKCR7S1dTWVNfVEFSR0VUX0NfTElOS30gSU5URVJGQUNFCisgICAgdGFyZ2V0X3NvdXJjZXMoJHtLV1NZU19UQVJHRVRfQ19MSU5LfSBJTlRFUkZBQ0UKICAgICAgICQ8VEFSR0VUX09CSkVDVFM6JHtLV1NZU19UQVJHRVRfQ19PQkpFQ1R9PikKLSAgRUxTRSgpCi0gICAgU0VUKEtXU1lTX1RBUkdFVF9DX0lOVEVSRkFDRSAke0tXU1lTX05BTUVTUEFDRX1fYykKLSAgICBTRVQoS1dTWVNfVEFSR0VUX0NfT0JKRUNUICR7S1dTWVNfTkFNRVNQQUNFfV9jKQotICAgIFNFVChLV1NZU19UQVJHRVRfQ19MSU5LICR7S1dTWVNfTkFNRVNQQUNFfV9jKQotICAgIFNFVChLV1NZU19UQVJHRVRfQ19JTlNUQUxMICR7S1dTWVNfVEFSR0VUX0NfTElOS30pCi0gICAgU0VUKEtXU1lTX0xJTktfREVQRU5ERU5DWSBQVUJMSUMpCi0gICAgQUREX0xJQlJBUlkoJHtLV1NZU19UQVJHRVRfQ19JTlRFUkZBQ0V9ICR7S1dTWVNfTElCUkFSWV9UWVBFfQorICBlbHNlKCkKKyAgICBzZXQoS1dTWVNfVEFSR0VUX0NfSU5URVJGQUNFICR7S1dTWVNfTkFNRVNQQUNFfV9jKQorICAgIHNldChLV1NZU19UQVJHRVRfQ19PQkpFQ1QgJHtLV1NZU19OQU1FU1BBQ0V9X2MpCisgICAgc2V0KEtXU1lTX1RBUkdFVF9DX0xJTksgJHtLV1NZU19OQU1FU1BBQ0V9X2MpCisgICAgc2V0KEtXU1lTX1RBUkdFVF9DX0lOU1RBTEwgJHtLV1NZU19UQVJHRVRfQ19MSU5LfSkKKyAgICBzZXQoS1dTWVNfTElOS19ERVBFTkRFTkNZIFBVQkxJQykKKyAgICBhZGRfbGlicmFyeSgke0tXU1lTX1RBUkdFVF9DX0lOVEVSRkFDRX0gJHtLV1NZU19MSUJSQVJZX1RZUEV9CiAgICAgICAke0tXU1lTX0NfU1JDU30pCi0gIEVORElGKCkKLSAgU0VUX1RBUkdFVF9QUk9QRVJUSUVTKCR7S1dTWVNfVEFSR0VUX0NfT0JKRUNUfSBQUk9QRVJUSUVTCisgIGVuZGlmKCkKKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7S1dTWVNfVEFSR0VUX0NfT0JKRUNUfSBQUk9QRVJUSUVTCiAgICAgTEFCRUxTICIke0tXU1lTX0xBQkVMU19MSUJ9IikKIAogICAjIEFwcGx5IHVzZXItZGVmaW5lZCB0YXJnZXQgcHJvcGVydGllcyB0byB0aGUgbGlicmFyeS4KLSAgSUYoS1dTWVNfUFJPUEVSVElFU19DKQotICAgIFNFVF9UQVJHRVRfUFJPUEVSVElFUygke0tXU1lTX1RBUkdFVF9DX0lOVEVSRkFDRX0gUFJPUEVSVElFUworICBpZihLV1NZU19QUk9QRVJUSUVTX0MpCisgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7S1dTWVNfVEFSR0VUX0NfSU5URVJGQUNFfSBQUk9QRVJUSUVTCiAgICAgICAke0tXU1lTX1BST1BFUlRJRVNfQ30pCi0gIEVORElGKCkKKyAgZW5kaWYoKQogCiAgICMgU2V0IHVwIGluY2x1ZGUgdXNhZ2UgcmVxdWlyZW1lbnQKLSAgSUYoQ09NTUFORCBUQVJHRVRfSU5DTFVERV9ESVJFQ1RPUklFUykKLSAgICBUQVJHRVRfSU5DTFVERV9ESVJFQ1RPUklFUygke0tXU1lTX1RBUkdFVF9DX0lOVEVSRkFDRX0gSU5URVJGQUNFCisgIGlmKENPTU1BTkQgVEFSR0VUX0lOQ0xVREVfRElSRUNUT1JJRVMpCisgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtLV1NZU19UQVJHRVRfQ19JTlRFUkZBQ0V9IElOVEVSRkFDRQogICAgICAgJDxCVUlMRF9JTlRFUkZBQ0U6JHtLV1NZU19IRUFERVJfUk9PVH0+KQotICAgIElGKEtXU1lTX0lOU1RBTExfSU5DTFVERV9ESVIpCi0gICAgICBUQVJHRVRfSU5DTFVERV9ESVJFQ1RPUklFUygke0tXU1lTX1RBUkdFVF9DX0lOVEVSRkFDRX0gSU5URVJGQUNFCisgICAgaWYoS1dTWVNfSU5TVEFMTF9JTkNMVURFX0RJUikKKyAgICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7S1dTWVNfVEFSR0VUX0NfSU5URVJGQUNFfSBJTlRFUkZBQ0UKICAgICAgICAgJDxJTlNUQUxMX0lOVEVSRkFDRToke0tXU1lTX0lOU1RBTExfSU5DTFVERV9ESVJ9PikKLSAgICBFTkRJRigpCi0gIEVORElGKCkKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKIAogICAjIENyZWF0ZSBhbiBpbnN0YWxsIHRhcmdldCBmb3IgdGhlIGxpYnJhcnkuCi0gIElGKEtXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFKQotICAgIElOU1RBTEwoVEFSR0VUUyAke0tXU1lTX1RBUkdFVF9DX0lOU1RBTEx9KQotICBFTkRJRigpCi1FTkRJRigpCisgIGlmKEtXU1lTX0lOU1RBTExfTElCUkFSWV9SVUxFKQorICAgIGluc3RhbGwoVEFSR0VUUyAke0tXU1lTX1RBUkdFVF9DX0lOU1RBTEx9KQorICBlbmRpZigpCitlbmRpZigpCiAKICMgRm9yIGJ1aWxkaW5nIGt3c3lzIGl0c2VsZiwgd2UgdXNlIGEgbWFjcm8gZGVmaW5lZCBvbiB0aGUgY29tbWFuZAogIyBsaW5lIHRvIGNvbmZpZ3VyZSB0aGUgbmFtZXNwYWNlIGluIHRoZSBDIGFuZCBDKysgc291cmNlIGZpbGVzLgotQUREX0RFRklOSVRJT05TKCItREtXU1lTX05BTUVTUEFDRT0ke0tXU1lTX05BTUVTUEFDRX0iKQorYWRkX2RlZmluaXRpb25zKCItREtXU1lTX05BTUVTUEFDRT0ke0tXU1lTX05BTUVTUEFDRX0iKQogCiAjIERpc2FibGUgZGVwcmVjYXRpb24gd2FybmluZ3MgZm9yIHN0YW5kYXJkIEMgZnVuY3Rpb25zLgotSUYoTVNWQyBPUiAoV0lOMzIgQU5EIChDTUFLRV9DX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJJbnRlbCIgT1IKK2lmKE1TVkMgT1IgKFdJTjMyIEFORCAoQ01BS0VfQ19DT01QSUxFUl9JRCBTVFJFUVVBTCAiSW50ZWwiIE9SCiAgICAoQ01BS0VfQ19DT01QSUxFUl9JRCBTVFJFUVVBTCAiQ2xhbmciIEFORCBDTUFLRV9DWFhfU0lNVUxBVEVfSUQgU1RSRVFVQUwgIk1TVkMiKSkpKQotICBBRERfREVGSU5JVElPTlMoCisgIGFkZF9kZWZpbml0aW9ucygKICAgICAtRF9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUKICAgICAtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQogICAgIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MKICAgICAtRF9TQ0xfU0VDVVJFX05PX0RFUFJFQ0FURQogICAgICkKLUVORElGKCkKK2VuZGlmKCkKIAotSUYoV0lOMzIpCitpZihXSU4zMikKICAgIyBIZWxwIGVuZm9yY2UgdGhlIHVzZSBvZiB3aWRlIFdpbmRvd3MgYXBpcy4KLSAgQUREX0RFRklOSVRJT05TKC1EVU5JQ09ERSAtRF9VTklDT0RFKQotRU5ESUYoKQorICBhZGRfZGVmaW5pdGlvbnMoLURVTklDT0RFIC1EX1VOSUNPREUpCitlbmRpZigpCiAKLUlGKEtXU1lTX1VTRV9TdHJpbmcpCitpZihLV1NZU19VU0VfU3RyaW5nKQogICAjIEFjdGl2YXRlIGNvZGUgaW4gIlN0cmluZy5jIi4gIFNlZSB0aGUgY29tbWVudCBpbiB0aGUgc291cmNlLgotICBTRVRfU09VUkNFX0ZJTEVTX1BST1BFUlRJRVMoU3RyaW5nLmMgUFJPUEVSVElFUworICBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoU3RyaW5nLmMgUFJPUEVSVElFUwogICAgIENPTVBJTEVfRkxBR1MgIi1ES1dTWVNfU1RSSU5HX0MiKQotRU5ESUYoKQorZW5kaWYoKQogCi1JRihLV1NZU19VU0VfRW5jb2RpbmcpCitpZihLV1NZU19VU0VfRW5jb2RpbmcpCiAgICMgU2V0IGRlZmF1bHQgOCBiaXQgZW5jb2RpbmcgaW4gIkVuZGNvZGluZ0MuYyIuCi0gIFNFVF9QUk9QRVJUWShTT1VSQ0UgRW5jb2RpbmdDLmMgRW5jb2RpbmdDWFguY3h4IEFQUEVORCBQUk9QRVJUWSBDT01QSUxFX0RFRklOSVRJT05TCisgIHNldF9wcm9wZXJ0eShTT1VSQ0UgRW5jb2RpbmdDLmMgRW5jb2RpbmdDWFguY3h4IEFQUEVORCBQUk9QRVJUWSBDT01QSUxFX0RFRklOSVRJT05TCiAgICAgS1dTWVNfRU5DT0RJTkdfREVGQVVMVF9DT0RFUEFHRT0ke0tXU1lTX0VOQ09ESU5HX0RFRkFVTFRfQ09ERVBBR0V9KQotRU5ESUYoKQorZW5kaWYoKQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgU2V0dXAgdGVzdGluZyBpZiBub3QgYmVpbmcgYnVpbHQgYXMgcGFydCBvZiBhbm90aGVyIHByb2plY3QuCi1JRihLV1NZU19TVEFOREFMT05FIE9SIENNYWtlX1NPVVJDRV9ESVIpCi0gIElGKEJVSUxEX1RFU1RJTkcpCitpZihLV1NZU19TVEFOREFMT05FIE9SIENNYWtlX1NPVVJDRV9ESVIpCisgIGlmKEJVSUxEX1RFU1RJTkcpCiAgICAgIyBDb21wdXRlIHRoZSBsb2NhdGlvbiBvZiBleGVjdXRhYmxlcy4KLSAgICBTRVQoRVhFQ19ESVIgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSIpCi0gICAgSUYoRVhFQ1VUQUJMRV9PVVRQVVRfUEFUSCkKLSAgICAgIFNFVChFWEVDX0RJUiAiJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfSIpCi0gICAgRU5ESUYoKQorICAgIHNldChFWEVDX0RJUiAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9IikKKyAgICBpZihDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkpCisgICAgICBzZXQoRVhFQ19ESVIgIiR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfSIpCisgICAgZW5kaWYoKQogCiAgICAgIyBDIHRlc3RzCi0gICAgU0VUKEtXU1lTX0NfVEVTVFMKKyAgICBzZXQoS1dTWVNfQ19URVNUUwogICAgICAgdGVzdEVuY29kZS5jCiAgICAgICB0ZXN0VGVybWluYWwuYwogICAgICAgKQotICAgIElGKEtXU1lTX1NUQU5EQUxPTkUpCi0gICAgICBTRVQoS1dTWVNfQ19URVNUUyAke0tXU1lTX0NfVEVTVFN9IHRlc3RGYWlsLmMpCi0gICAgRU5ESUYoKQotICAgIENSRUFURV9URVNUX1NPVVJDRUxJU1QoCisgICAgaWYoS1dTWVNfU1RBTkRBTE9ORSkKKyAgICAgIHNldChLV1NZU19DX1RFU1RTICR7S1dTWVNfQ19URVNUU30gdGVzdEZhaWwuYykKKyAgICBlbmRpZigpCisgICAgY3JlYXRlX3Rlc3Rfc291cmNlbGlzdCgKICAgICAgIEtXU1lTX0NfVEVTVF9TUkNTICR7S1dTWVNfTkFNRVNQQUNFfVRlc3RzQy5jCiAgICAgICAke0tXU1lTX0NfVEVTVFN9CiAgICAgICApCi0gICAgQUREX0VYRUNVVEFCTEUoJHtLV1NZU19OQU1FU1BBQ0V9VGVzdHNDICR7S1dTWVNfQ19URVNUX1NSQ1N9KQotICAgIFNFVF9QUk9QRVJUWShUQVJHRVQgJHtLV1NZU19OQU1FU1BBQ0V9VGVzdHNDIFBST1BFUlRZIExBQkVMUyAke0tXU1lTX0xBQkVMU19FWEV9KQotICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke0tXU1lTX05BTUVTUEFDRX1UZXN0c0MgJHtLV1NZU19UQVJHRVRfQ19MSU5LfSkKLSAgICBGT1JFQUNIKHRlc3RmaWxlICR7S1dTWVNfQ19URVNUU30pCisgICAgYWRkX2V4ZWN1dGFibGUoJHtLV1NZU19OQU1FU1BBQ0V9VGVzdHNDICR7S1dTWVNfQ19URVNUX1NSQ1N9KQorICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtLV1NZU19OQU1FU1BBQ0V9VGVzdHNDIFBST1BFUlRZIExBQkVMUyAke0tXU1lTX0xBQkVMU19FWEV9KQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke0tXU1lTX05BTUVTUEFDRX1UZXN0c0MgJHtLV1NZU19UQVJHRVRfQ19MSU5LfSkKKyAgICBmb3JlYWNoKHRlc3RmaWxlICR7S1dTWVNfQ19URVNUU30pCiAgICAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KHRlc3QgIiR7dGVzdGZpbGV9IiBOQU1FX1dFKQotICAgICAgQUREX1RFU1Qoa3dzeXMuJHt0ZXN0fSAke0VYRUNfRElSfS8ke0tXU1lTX05BTUVTUEFDRX1UZXN0c0MgJHt0ZXN0fSAke0tXU1lTX1RFU1RfQVJHU18ke3Rlc3R9fSkKLSAgICAgIFNFVF9QUk9QRVJUWShURVNUIGt3c3lzLiR7dGVzdH0gUFJPUEVSVFkgTEFCRUxTICR7S1dTWVNfTEFCRUxTX1RFU1R9KQotICAgIEVOREZPUkVBQ0goKQorICAgICAgYWRkX3Rlc3Qoa3dzeXMuJHt0ZXN0fSAke0VYRUNfRElSfS8ke0tXU1lTX05BTUVTUEFDRX1UZXN0c0MgJHt0ZXN0fSAke0tXU1lTX1RFU1RfQVJHU18ke3Rlc3R9fSkKKyAgICAgIHNldF9wcm9wZXJ0eShURVNUIGt3c3lzLiR7dGVzdH0gUFJPUEVSVFkgTEFCRUxTICR7S1dTWVNfTEFCRUxTX1RFU1R9KQorICAgIGVuZGZvcmVhY2goKQogCiAgICAgIyBDKysgdGVzdHMKLSAgICBJRihOT1QgV0FUQ09NIEFORCBOT1QgQ01ha2VfU09VUkNFX0RJUikKLSAgICAgIFNFVChLV1NZU19DWFhfVEVTVFMKKyAgICBpZihOT1QgV0FUQ09NIEFORCBOT1QgQ01ha2VfU09VUkNFX0RJUikKKyAgICAgIHNldChLV1NZU19DWFhfVEVTVFMKICAgICAgICAgdGVzdEhhc2hTVEwuY3h4CiAgICAgICAgICkKLSAgICBFTkRJRigpCi0gICAgU0VUKEtXU1lTX0NYWF9URVNUUyAke0tXU1lTX0NYWF9URVNUU30KKyAgICBlbmRpZigpCisgICAgc2V0KEtXU1lTX0NYWF9URVNUUyAke0tXU1lTX0NYWF9URVNUU30KICAgICAgIHRlc3RDb25maWd1cmUuY3h4CiAgICAgICB0ZXN0U3lzdGVtVG9vbHMuY3h4CiAgICAgICB0ZXN0Q29tbWFuZExpbmVBcmd1bWVudHMuY3h4CiAgICAgICB0ZXN0Q29tbWFuZExpbmVBcmd1bWVudHMxLmN4eAogICAgICAgdGVzdERpcmVjdG9yeS5jeHgKICAgICAgICkKLSAgICBJRihLV1NZU19TVExfSEFTX1dTVFJJTkcpCi0gICAgICBTRVQoS1dTWVNfQ1hYX1RFU1RTICR7S1dTWVNfQ1hYX1RFU1RTfQorICAgIGlmKEtXU1lTX1NUTF9IQVNfV1NUUklORykKKyAgICAgIHNldChLV1NZU19DWFhfVEVTVFMgJHtLV1NZU19DWFhfVEVTVFN9CiAgICAgICAgIHRlc3RFbmNvZGluZy5jeHgKICAgICAgICAgKQotICAgIEVORElGKCkKLSAgICBJRihLV1NZU19VU0VfRlN0cmVhbSkKLSAgICAgIFNFVChLV1NZU19DWFhfVEVTVFMgJHtLV1NZU19DWFhfVEVTVFN9CisgICAgZW5kaWYoKQorICAgIGlmKEtXU1lTX1VTRV9GU3RyZWFtKQorICAgICAgc2V0KEtXU1lTX0NYWF9URVNUUyAke0tXU1lTX0NYWF9URVNUU30KICAgICAgICAgdGVzdEZTdHJlYW0uY3h4CiAgICAgICAgICkKLSAgICBFTkRJRigpCi0gICAgSUYoS1dTWVNfVVNFX0NvbnNvbGVCdWYpCi0gICAgICBBRERfRVhFQ1VUQUJMRSh0ZXN0Q29uc29sZUJ1ZkNoaWxkIHRlc3RDb25zb2xlQnVmQ2hpbGQuY3h4KQotICAgICAgU0VUX1BST1BFUlRZKFRBUkdFVCB0ZXN0Q29uc29sZUJ1ZkNoaWxkIFBST1BFUlRZIENfQ0xBTkdfVElEWSAiIikKLSAgICAgIFNFVF9QUk9QRVJUWShUQVJHRVQgdGVzdENvbnNvbGVCdWZDaGlsZCBQUk9QRVJUWSBDWFhfQ0xBTkdfVElEWSAiIikKLSAgICAgIFNFVF9QUk9QRVJUWShUQVJHRVQgdGVzdENvbnNvbGVCdWZDaGlsZCBQUk9QRVJUWSBDX0lOQ0xVREVfV0hBVF9ZT1VfVVNFICIiKQotICAgICAgU0VUX1BST1BFUlRZKFRBUkdFVCB0ZXN0Q29uc29sZUJ1ZkNoaWxkIFBST1BFUlRZIENYWF9JTkNMVURFX1dIQVRfWU9VX1VTRSAiIikKLSAgICAgIFNFVF9QUk9QRVJUWShUQVJHRVQgdGVzdENvbnNvbGVCdWZDaGlsZCBQUk9QRVJUWSBMQUJFTFMgJHtLV1NZU19MQUJFTFNfRVhFfSkKLSAgICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUyh0ZXN0Q29uc29sZUJ1ZkNoaWxkICR7S1dTWVNfVEFSR0VUX0xJTkt9KQotICAgICAgU0VUKEtXU1lTX0NYWF9URVNUUyAke0tXU1lTX0NYWF9URVNUU30KKyAgICBlbmRpZigpCisgICAgaWYoS1dTWVNfVVNFX0NvbnNvbGVCdWYpCisgICAgICBhZGRfZXhlY3V0YWJsZSh0ZXN0Q29uc29sZUJ1ZkNoaWxkIHRlc3RDb25zb2xlQnVmQ2hpbGQuY3h4KQorICAgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCB0ZXN0Q29uc29sZUJ1ZkNoaWxkIFBST1BFUlRZIENfQ0xBTkdfVElEWSAiIikKKyAgICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgdGVzdENvbnNvbGVCdWZDaGlsZCBQUk9QRVJUWSBDWFhfQ0xBTkdfVElEWSAiIikKKyAgICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgdGVzdENvbnNvbGVCdWZDaGlsZCBQUk9QRVJUWSBDX0lOQ0xVREVfV0hBVF9ZT1VfVVNFICIiKQorICAgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCB0ZXN0Q29uc29sZUJ1ZkNoaWxkIFBST1BFUlRZIENYWF9JTkNMVURFX1dIQVRfWU9VX1VTRSAiIikKKyAgICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgdGVzdENvbnNvbGVCdWZDaGlsZCBQUk9QRVJUWSBMQUJFTFMgJHtLV1NZU19MQUJFTFNfRVhFfSkKKyAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyh0ZXN0Q29uc29sZUJ1ZkNoaWxkICR7S1dTWVNfVEFSR0VUX0xJTkt9KQorICAgICAgc2V0KEtXU1lTX0NYWF9URVNUUyAke0tXU1lTX0NYWF9URVNUU30KICAgICAgICAgdGVzdENvbnNvbGVCdWYuY3h4CiAgICAgICAgICkKLSAgICAgIElGKENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiTVNWQyIgQU5ECisgICAgICBpZihDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIk1TVkMiIEFORAogICAgICAgICAgQ01BS0VfQ1hYX0NPTVBJTEVSX1ZFUlNJT04gVkVSU0lPTl9HUkVBVEVSICIxOS4wLjIzNTA2IikKICAgICAgICAgc2V0X3Byb3BlcnR5KFNPVVJDRSB0ZXN0Q29uc29sZUJ1Zi5jeHggdGVzdENvbnNvbGVCdWZDaGlsZC5jeHggUFJPUEVSVFkgQ09NUElMRV9GTEFHUyAvdXRmLTgpCi0gICAgICBFTkRJRigpCi0gICAgICBTRVRfUFJPUEVSVFkoU09VUkNFIHRlc3RDb25zb2xlQnVmLmN4eCBBUFBFTkQgUFJPUEVSVFkgQ09NUElMRV9ERUZJTklUSU9OUworICAgICAgZW5kaWYoKQorICAgICAgc2V0X3Byb3BlcnR5KFNPVVJDRSB0ZXN0Q29uc29sZUJ1Zi5jeHggQVBQRU5EIFBST1BFUlRZIENPTVBJTEVfREVGSU5JVElPTlMKICAgICAgICAgS1dTWVNfRU5DT0RJTkdfREVGQVVMVF9DT0RFUEFHRT0ke0tXU1lTX0VOQ09ESU5HX0RFRkFVTFRfQ09ERVBBR0V9KQotICAgIEVORElGKCkKLSAgICBJRihLV1NZU19VU0VfU3lzdGVtSW5mb3JtYXRpb24pCi0gICAgICBTRVQoS1dTWVNfQ1hYX1RFU1RTICR7S1dTWVNfQ1hYX1RFU1RTfSB0ZXN0U3lzdGVtSW5mb3JtYXRpb24uY3h4KQotICAgIEVORElGKCkKLSAgICBJRihLV1NZU19VU0VfRHluYW1pY0xvYWRlcikKLSAgICAgIFNFVChLV1NZU19DWFhfVEVTVFMgJHtLV1NZU19DWFhfVEVTVFN9IHRlc3REeW5hbWljTG9hZGVyLmN4eCkKKyAgICBlbmRpZigpCisgICAgaWYoS1dTWVNfVVNFX1N5c3RlbUluZm9ybWF0aW9uKQorICAgICAgc2V0KEtXU1lTX0NYWF9URVNUUyAke0tXU1lTX0NYWF9URVNUU30gdGVzdFN5c3RlbUluZm9ybWF0aW9uLmN4eCkKKyAgICBlbmRpZigpCisgICAgaWYoS1dTWVNfVVNFX0R5bmFtaWNMb2FkZXIpCisgICAgICBzZXQoS1dTWVNfQ1hYX1RFU1RTICR7S1dTWVNfQ1hYX1RFU1RTfSB0ZXN0RHluYW1pY0xvYWRlci5jeHgpCiAgICAgICAjIElmIGt3c3lzIGNvbnRhaW5zIHRoZSBEeW5hbWljTG9hZGVyLCBuZWVkIGV4dHJhIGxpYnJhcnkKLSAgICAgIEFERF9MSUJSQVJZKCR7S1dTWVNfTkFNRVNQQUNFfVRlc3REeW5sb2FkIE1PRFVMRSB0ZXN0RHlubG9hZC5jKQotICAgICAgU0VUX1BST1BFUlRZKFRBUkdFVCAke0tXU1lTX05BTUVTUEFDRX1UZXN0RHlubG9hZCBQUk9QRVJUWSBMQUJFTFMgJHtLV1NZU19MQUJFTFNfTElCfSkKLSAgICAgIEFERF9ERVBFTkRFTkNJRVMoJHtLV1NZU19OQU1FU1BBQ0V9VGVzdER5bmxvYWQgJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSkKKyAgICAgIGFkZF9saWJyYXJ5KCR7S1dTWVNfTkFNRVNQQUNFfVRlc3REeW5sb2FkIE1PRFVMRSB0ZXN0RHlubG9hZC5jKQorICAgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke0tXU1lTX05BTUVTUEFDRX1UZXN0RHlubG9hZCBQUk9QRVJUWSBMQUJFTFMgJHtLV1NZU19MQUJFTFNfTElCfSkKKyAgICAgIGFkZF9kZXBlbmRlbmNpZXMoJHtLV1NZU19OQU1FU1BBQ0V9VGVzdER5bmxvYWQgJHtLV1NZU19UQVJHRVRfSU5URVJGQUNFfSkKIAogICAgICAgaWYgKFdJTjMyKQogICAgICAgICAjIFdpbmRvd3MgdGVzdHMgc3VwcG9ydGVkIGZsYWdzLgpAQCAtMTEzNCwzMyArMTEzNCwzMyBAQAogICAgICAgICBhZGRfZGVwZW5kZW5jaWVzKCR7S1dTWVNfTkFNRVNQQUNFfVRlc3REeW5sb2FkVXNlICR7S1dTWVNfVEFSR0VUX0lOVEVSRkFDRX0pCiAgICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke0tXU1lTX05BTUVTUEFDRX1UZXN0RHlubG9hZFVzZSBQUklWQVRFICR7S1dTWVNfTkFNRVNQQUNFfVRlc3REeW5sb2FkSW1wbCkKICAgICAgIGVuZGlmICgpCi0gICAgRU5ESUYoKQotICAgIENSRUFURV9URVNUX1NPVVJDRUxJU1QoCisgICAgZW5kaWYoKQorICAgIGNyZWF0ZV90ZXN0X3NvdXJjZWxpc3QoCiAgICAgICBLV1NZU19DWFhfVEVTVF9TUkNTICR7S1dTWVNfTkFNRVNQQUNFfVRlc3RzQ3h4LmN4eAogICAgICAgJHtLV1NZU19DWFhfVEVTVFN9CiAgICAgICApCi0gICAgQUREX0VYRUNVVEFCTEUoJHtLV1NZU19OQU1FU1BBQ0V9VGVzdHNDeHggJHtLV1NZU19DWFhfVEVTVF9TUkNTfSkKLSAgICBTRVRfUFJPUEVSVFkoVEFSR0VUICR7S1dTWVNfTkFNRVNQQUNFfVRlc3RzQ3h4IFBST1BFUlRZIENfQ0xBTkdfVElEWSAiIikKLSAgICBTRVRfUFJPUEVSVFkoVEFSR0VUICR7S1dTWVNfTkFNRVNQQUNFfVRlc3RzQ3h4IFBST1BFUlRZIENYWF9DTEFOR19USURZICIiKQotICAgIFNFVF9QUk9QRVJUWShUQVJHRVQgJHtLV1NZU19OQU1FU1BBQ0V9VGVzdHNDeHggUFJPUEVSVFkgQ19JTkNMVURFX1dIQVRfWU9VX1VTRSAiIikKLSAgICBTRVRfUFJPUEVSVFkoVEFSR0VUICR7S1dTWVNfTkFNRVNQQUNFfVRlc3RzQ3h4IFBST1BFUlRZIENYWF9JTkNMVURFX1dIQVRfWU9VX1VTRSAiIikKLSAgICBTRVRfUFJPUEVSVFkoVEFSR0VUICR7S1dTWVNfTkFNRVNQQUNFfVRlc3RzQ3h4IFBST1BFUlRZIExBQkVMUyAke0tXU1lTX0xBQkVMU19FWEV9KQotICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke0tXU1lTX05BTUVTUEFDRX1UZXN0c0N4eCAke0tXU1lTX1RBUkdFVF9MSU5LfSkKKyAgICBhZGRfZXhlY3V0YWJsZSgke0tXU1lTX05BTUVTUEFDRX1UZXN0c0N4eCAke0tXU1lTX0NYWF9URVNUX1NSQ1N9KQorICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtLV1NZU19OQU1FU1BBQ0V9VGVzdHNDeHggUFJPUEVSVFkgQ19DTEFOR19USURZICIiKQorICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtLV1NZU19OQU1FU1BBQ0V9VGVzdHNDeHggUFJPUEVSVFkgQ1hYX0NMQU5HX1RJRFkgIiIpCisgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke0tXU1lTX05BTUVTUEFDRX1UZXN0c0N4eCBQUk9QRVJUWSBDX0lOQ0xVREVfV0hBVF9ZT1VfVVNFICIiKQorICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtLV1NZU19OQU1FU1BBQ0V9VGVzdHNDeHggUFJPUEVSVFkgQ1hYX0lOQ0xVREVfV0hBVF9ZT1VfVVNFICIiKQorICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtLV1NZU19OQU1FU1BBQ0V9VGVzdHNDeHggUFJPUEVSVFkgTEFCRUxTICR7S1dTWVNfTEFCRUxTX0VYRX0pCisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7S1dTWVNfTkFNRVNQQUNFfVRlc3RzQ3h4ICR7S1dTWVNfVEFSR0VUX0xJTkt9KQogCi0gICAgU0VUKFRFU1RfU1lTVEVNVE9PTFNfU09VUkNFX0RJUiAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9IikKLSAgICBTRVQoVEVTVF9TWVNURU1UT09MU19CSU5BUllfRElSICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0iKQotICAgIENPTkZJR1VSRV9GSUxFKAorICAgIHNldChURVNUX1NZU1RFTVRPT0xTX1NPVVJDRV9ESVIgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfSIpCisgICAgc2V0KFRFU1RfU1lTVEVNVE9PTFNfQklOQVJZX0RJUiAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9IikKKyAgICBjb25maWd1cmVfZmlsZSgKICAgICAgICR7UFJPSkVDVF9TT1VSQ0VfRElSfS90ZXN0U3lzdGVtVG9vbHMuaC5pbgogICAgICAgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L3Rlc3RTeXN0ZW1Ub29scy5oKQotICAgIElOQ0xVREVfRElSRUNUT1JJRVMoJHtQUk9KRUNUX0JJTkFSWV9ESVJ9KQorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtQUk9KRUNUX0JJTkFSWV9ESVJ9KQogCi0gICAgSUYoQ1RFU1RfVEVTVF9LV1NZUykKLSAgICAgIENPTkZJR1VSRV9GSUxFKCIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vRXh0cmFUZXN0LmNtYWtlLmluIgorICAgIGlmKENURVNUX1RFU1RfS1dTWVMpCisgICAgICBjb25maWd1cmVfZmlsZSgiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L0V4dHJhVGVzdC5jbWFrZS5pbiIKICAgICAgICAgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9FeHRyYVRlc3QuY21ha2UiKQotICAgICAgU0VUX0RJUkVDVE9SWV9QUk9QRVJUSUVTKFBST1BFUlRJRVMgVEVTVF9JTkNMVURFX0ZJTEUgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9FeHRyYVRlc3QuY21ha2UiKQotICAgIEVORElGKCkKKyAgICAgIHNldF9kaXJlY3RvcnlfcHJvcGVydGllcyhQUk9QRVJUSUVTIFRFU1RfSU5DTFVERV9GSUxFICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vRXh0cmFUZXN0LmNtYWtlIikKKyAgICBlbmRpZigpCiAKLSAgICBTRVQoS1dTWVNfVEVTVF9BUkdTX3Rlc3RDb21tYW5kTGluZUFyZ3VtZW50cworICAgIHNldChLV1NZU19URVNUX0FSR1NfdGVzdENvbW1hbmRMaW5lQXJndW1lbnRzCiAgICAgICAtLWFub3RoZXItYm9vbC12YXJpYWJsZQogICAgICAgLS1sb25nMz1vcHQKICAgICAgIC0tc2V0LWJvb2wtYXJnMQpAQCAtMTE3OSw3ICsxMTc5LDcgQEAKICAgICAgIC1DPXRlc3QKICAgICAgIC0tbG9uZzIgaGVsbG8KICAgICAgICkKLSAgICBTRVQoS1dTWVNfVEVTVF9BUkdTX3Rlc3RDb21tYW5kTGluZUFyZ3VtZW50czEKKyAgICBzZXQoS1dTWVNfVEVTVF9BUkdTX3Rlc3RDb21tYW5kTGluZUFyZ3VtZW50czEKICAgICAgIC0taWdub3JlZAogICAgICAgLW4gMjQKICAgICAgIC0tc2Vjb25kLWlnbm9yZWQKQEAgLTExODgsNzMgKzExODgsNzMgQEAKICAgICAgIC1wCiAgICAgICBzb21lIGp1bmsgYXQgdGhlIGVuZAogICAgICAgKQotICAgIEZPUkVBQ0godGVzdGZpbGUgJHtLV1NZU19DWFhfVEVTVFN9KQorICAgIGZvcmVhY2godGVzdGZpbGUgJHtLV1NZU19DWFhfVEVTVFN9KQogICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudCh0ZXN0ICIke3Rlc3RmaWxlfSIgTkFNRV9XRSkKLSAgICAgIEFERF9URVNUKGt3c3lzLiR7dGVzdH0gJHtFWEVDX0RJUn0vJHtLV1NZU19OQU1FU1BBQ0V9VGVzdHNDeHggJHt0ZXN0fSAke0tXU1lTX1RFU1RfQVJHU18ke3Rlc3R9fSkKLSAgICAgIFNFVF9QUk9QRVJUWShURVNUIGt3c3lzLiR7dGVzdH0gUFJPUEVSVFkgTEFCRUxTICR7S1dTWVNfTEFCRUxTX1RFU1R9KQotICAgIEVOREZPUkVBQ0goKQorICAgICAgYWRkX3Rlc3Qoa3dzeXMuJHt0ZXN0fSAke0VYRUNfRElSfS8ke0tXU1lTX05BTUVTUEFDRX1UZXN0c0N4eCAke3Rlc3R9ICR7S1dTWVNfVEVTVF9BUkdTXyR7dGVzdH19KQorICAgICAgc2V0X3Byb3BlcnR5KFRFU1Qga3dzeXMuJHt0ZXN0fSBQUk9QRVJUWSBMQUJFTFMgJHtLV1NZU19MQUJFTFNfVEVTVH0pCisgICAgZW5kZm9yZWFjaCgpCiAKICAgICAjIFByb2Nlc3MgdGVzdHMuCi0gICAgQUREX0VYRUNVVEFCTEUoJHtLV1NZU19OQU1FU1BBQ0V9VGVzdFByb2Nlc3MgdGVzdFByb2Nlc3MuYykKLSAgICBTRVRfUFJPUEVSVFkoVEFSR0VUICR7S1dTWVNfTkFNRVNQQUNFfVRlc3RQcm9jZXNzIFBST1BFUlRZIExBQkVMUyAke0tXU1lTX0xBQkVMU19FWEV9KQotICAgIFRBUkdFVF9MSU5LX0xJQlJBUklFUygke0tXU1lTX05BTUVTUEFDRX1UZXN0UHJvY2VzcyAke0tXU1lTX1RBUkdFVF9DX0xJTkt9KQotICAgIElGKE5PVCBDWUdXSU4pCi0gICAgICBTRVQoS1dTWVNfVEVTVF9QUk9DRVNTXzcgNykKLSAgICBFTkRJRigpCi0gICAgRk9SRUFDSChuIDEgMiAzIDQgNSA2ICR7S1dTWVNfVEVTVF9QUk9DRVNTXzd9IDkgMTApCi0gICAgICBBRERfVEVTVChrd3N5cy50ZXN0UHJvY2Vzcy0ke259ICR7RVhFQ19ESVJ9LyR7S1dTWVNfTkFNRVNQQUNFfVRlc3RQcm9jZXNzICR7bn0pCi0gICAgICBTRVRfUFJPUEVSVFkoVEVTVCBrd3N5cy50ZXN0UHJvY2Vzcy0ke259IFBST1BFUlRZIExBQkVMUyAke0tXU1lTX0xBQkVMU19URVNUfSkKLSAgICAgIFNFVF9URVNUU19QUk9QRVJUSUVTKGt3c3lzLnRlc3RQcm9jZXNzLSR7bn0gUFJPUEVSVElFUyBUSU1FT1VUIDEyMCkKLSAgICBFTkRGT1JFQUNIKCkKKyAgICBhZGRfZXhlY3V0YWJsZSgke0tXU1lTX05BTUVTUEFDRX1UZXN0UHJvY2VzcyB0ZXN0UHJvY2Vzcy5jKQorICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtLV1NZU19OQU1FU1BBQ0V9VGVzdFByb2Nlc3MgUFJPUEVSVFkgTEFCRUxTICR7S1dTWVNfTEFCRUxTX0VYRX0pCisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7S1dTWVNfTkFNRVNQQUNFfVRlc3RQcm9jZXNzICR7S1dTWVNfVEFSR0VUX0NfTElOS30pCisgICAgaWYoTk9UIENZR1dJTikKKyAgICAgIHNldChLV1NZU19URVNUX1BST0NFU1NfNyA3KQorICAgIGVuZGlmKCkKKyAgICBmb3JlYWNoKG4gMSAyIDMgNCA1IDYgJHtLV1NZU19URVNUX1BST0NFU1NfN30gOSAxMCkKKyAgICAgIGFkZF90ZXN0KGt3c3lzLnRlc3RQcm9jZXNzLSR7bn0gJHtFWEVDX0RJUn0vJHtLV1NZU19OQU1FU1BBQ0V9VGVzdFByb2Nlc3MgJHtufSkKKyAgICAgIHNldF9wcm9wZXJ0eShURVNUIGt3c3lzLnRlc3RQcm9jZXNzLSR7bn0gUFJPUEVSVFkgTEFCRUxTICR7S1dTWVNfTEFCRUxTX1RFU1R9KQorICAgICAgc2V0X3Rlc3RzX3Byb3BlcnRpZXMoa3dzeXMudGVzdFByb2Nlc3MtJHtufSBQUk9QRVJUSUVTIFRJTUVPVVQgMTIwKQorICAgIGVuZGZvcmVhY2goKQogCi0gICAgU0VUKHRlc3RQcm9jZXNzX0NPTVBJTEVfRkxBR1MgIiIpCisgICAgc2V0KHRlc3RQcm9jZXNzX0NPTVBJTEVfRkxBR1MgIiIpCiAgICAgIyBTb21lIEFwcGxlIGNvbXBpbGVycyBwcm9kdWNlIGJhZCBvcHRpbWl6YXRpb25zIGluIHRoaXMgc291cmNlLgotICAgIElGKEFQUExFIEFORCBDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIl4oR05VfExMVk0pJCIpCi0gICAgICBTRVQodGVzdFByb2Nlc3NfQ09NUElMRV9GTEFHUyAiJHt0ZXN0UHJvY2Vzc19DT01QSUxFX0ZMQUdTfSAtTzAiKQotICAgIEVMU0VJRihDTUFLRV9DX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJYTCIpCisgICAgaWYoQVBQTEUgQU5EIENNQUtFX0NfQ09NUElMRVJfSUQgTUFUQ0hFUyAiXihHTlV8TExWTSkkIikKKyAgICAgIHNldCh0ZXN0UHJvY2Vzc19DT01QSUxFX0ZMQUdTICIke3Rlc3RQcm9jZXNzX0NPTVBJTEVfRkxBR1N9IC1PMCIpCisgICAgZWxzZWlmKENNQUtFX0NfQ09NUElMRVJfSUQgU1RSRVFVQUwgIlhMIikKICAgICAgICMgVGVsbCBJQk0gWEwgbm90IHRvIHdhcm4gYWJvdXQgb3VyIHRlc3QgaW5maW5pdGUgbG9vcAotICAgICAgSUYoQ01BS0VfU1lTVEVNIE1BVENIRVMgIkxpbnV4LipwcGM2NGxlIgorICAgICAgaWYoQ01BS0VfU1lTVEVNIE1BVENIRVMgIkxpbnV4LipwcGM2NGxlIgogICAgICAgICAgQU5EIENNQUtFX0NfQ09NUElMRVJfVkVSU0lPTiBWRVJTSU9OX0xFU1MgIjE2LjEuMCIKICAgICAgICAgIEFORCBOT1QgQ01BS0VfQ19DT01QSUxFUl9WRVJTSU9OIFZFUlNJT05fTEVTUyAiMTMuMS4xIikKICAgICAgICAgIyB2MTMuMS5bMS02XSBvbiBMaW51eCBwcGM2NGxlIGlzIGNsYW5nIGJhc2VkIGFuZCBkb2VzIG5vdCBhY2NlcHQKICAgICAgICAgIyB0aGUgLXFzdXBwcmVzcyBvcHRpb24sIHNvIGp1c3Qgc3VwcHJlc3MgYWxsIHdhcm5pbmdzLgotICAgICAgICBTRVQodGVzdFByb2Nlc3NfQ09NUElMRV9GTEFHUyAiJHt0ZXN0UHJvY2Vzc19DT01QSUxFX0ZMQUdTfSAtdyIpCi0gICAgICBFTFNFKCkKLSAgICAgICAgU0VUKHRlc3RQcm9jZXNzX0NPTVBJTEVfRkxBR1MgIiR7dGVzdFByb2Nlc3NfQ09NUElMRV9GTEFHU30gLXFzdXBwcmVzcz0xNTAwLTAxMCIpCi0gICAgICBFTkRJRigpCi0gICAgRU5ESUYoKQotICAgIElGKENNQUtFX0NfRkxBR1MgTUFUQ0hFUyAiLWZzYW5pdGl6ZT0iKQotICAgICAgU0VUKHRlc3RQcm9jZXNzX0NPTVBJTEVfRkxBR1MgIiR7dGVzdFByb2Nlc3NfQ09NUElMRV9GTEFHU30gLURDUkFTSF9VU0lOR19BQk9SVCIpCi0gICAgRU5ESUYoKQotICAgIFNFVF9QUk9QRVJUWShTT1VSQ0UgdGVzdFByb2Nlc3MuYyBQUk9QRVJUWSBDT01QSUxFX0ZMQUdTICIke3Rlc3RQcm9jZXNzX0NPTVBJTEVfRkxBR1N9IikKKyAgICAgICAgc2V0KHRlc3RQcm9jZXNzX0NPTVBJTEVfRkxBR1MgIiR7dGVzdFByb2Nlc3NfQ09NUElMRV9GTEFHU30gLXciKQorICAgICAgZWxzZSgpCisgICAgICAgIHNldCh0ZXN0UHJvY2Vzc19DT01QSUxFX0ZMQUdTICIke3Rlc3RQcm9jZXNzX0NPTVBJTEVfRkxBR1N9IC1xc3VwcHJlc3M9MTUwMC0wMTAiKQorICAgICAgZW5kaWYoKQorICAgIGVuZGlmKCkKKyAgICBpZihDTUFLRV9DX0ZMQUdTIE1BVENIRVMgIi1mc2FuaXRpemU9IikKKyAgICAgIHNldCh0ZXN0UHJvY2Vzc19DT01QSUxFX0ZMQUdTICIke3Rlc3RQcm9jZXNzX0NPTVBJTEVfRkxBR1N9IC1EQ1JBU0hfVVNJTkdfQUJPUlQiKQorICAgIGVuZGlmKCkKKyAgICBzZXRfcHJvcGVydHkoU09VUkNFIHRlc3RQcm9jZXNzLmMgUFJPUEVSVFkgQ09NUElMRV9GTEFHUyAiJHt0ZXN0UHJvY2Vzc19DT01QSUxFX0ZMQUdTfSIpCiAKICAgICAjIFRlc3QgU2hhcmVkRm9yd2FyZAotICAgIENPTkZJR1VSRV9GSUxFKCR7UFJPSkVDVF9TT1VSQ0VfRElSfS90ZXN0U2hhcmVkRm9yd2FyZC5jLmluCisgICAgY29uZmlndXJlX2ZpbGUoJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L3Rlc3RTaGFyZWRGb3J3YXJkLmMuaW4KICAgICAgICAgICAgICAgICAgICAke1BST0pFQ1RfQklOQVJZX0RJUn0vdGVzdFNoYXJlZEZvcndhcmQuYyBAT05MWSBJTU1FRElBVEUpCi0gICAgQUREX0VYRUNVVEFCTEUoJHtLV1NZU19OQU1FU1BBQ0V9VGVzdFNoYXJlZEZvcndhcmQKKyAgICBhZGRfZXhlY3V0YWJsZSgke0tXU1lTX05BTUVTUEFDRX1UZXN0U2hhcmVkRm9yd2FyZAogICAgICAgICAgICAgICAgICAgICR7UFJPSkVDVF9CSU5BUllfRElSfS90ZXN0U2hhcmVkRm9yd2FyZC5jKQotICAgIFNFVF9QUk9QRVJUWShUQVJHRVQgJHtLV1NZU19OQU1FU1BBQ0V9VGVzdFNoYXJlZEZvcndhcmQgUFJPUEVSVFkgTEFCRUxTICR7S1dTWVNfTEFCRUxTX0VYRX0pCi0gICAgQUREX0RFUEVOREVOQ0lFUygke0tXU1lTX05BTUVTUEFDRX1UZXN0U2hhcmVkRm9yd2FyZCAke0tXU1lTX1RBUkdFVF9DX0xJTkt9KQotICAgIEFERF9URVNUKGt3c3lzLnRlc3RTaGFyZWRGb3J3YXJkICR7RVhFQ19ESVJ9LyR7S1dTWVNfTkFNRVNQQUNFfVRlc3RTaGFyZWRGb3J3YXJkIDEpCi0gICAgU0VUX1BST1BFUlRZKFRFU1Qga3dzeXMudGVzdFNoYXJlZEZvcndhcmQgUFJPUEVSVFkgTEFCRUxTICR7S1dTWVNfTEFCRUxTX1RFU1R9KQorICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgJHtLV1NZU19OQU1FU1BBQ0V9VGVzdFNoYXJlZEZvcndhcmQgUFJPUEVSVFkgTEFCRUxTICR7S1dTWVNfTEFCRUxTX0VYRX0pCisgICAgYWRkX2RlcGVuZGVuY2llcygke0tXU1lTX05BTUVTUEFDRX1UZXN0U2hhcmVkRm9yd2FyZCAke0tXU1lTX1RBUkdFVF9DX0xJTkt9KQorICAgIGFkZF90ZXN0KGt3c3lzLnRlc3RTaGFyZWRGb3J3YXJkICR7RVhFQ19ESVJ9LyR7S1dTWVNfTkFNRVNQQUNFfVRlc3RTaGFyZWRGb3J3YXJkIDEpCisgICAgc2V0X3Byb3BlcnR5KFRFU1Qga3dzeXMudGVzdFNoYXJlZEZvcndhcmQgUFJPUEVSVFkgTEFCRUxTICR7S1dTWVNfTEFCRUxTX1RFU1R9KQogCiAgICAgIyBDb25maWd1cmUgc29tZSB0ZXN0IHByb3BlcnRpZXMuCi0gICAgSUYoS1dTWVNfU1RBTkRBTE9ORSkKKyAgICBpZihLV1NZU19TVEFOREFMT05FKQogICAgICAgIyBXZSBleHBlY3QgdGVzdCB0byBmYWlsCi0gICAgICBTRVRfVEVTVFNfUFJPUEVSVElFUyhrd3N5cy50ZXN0RmFpbCBQUk9QRVJUSUVTIFdJTExfRkFJTCBPTikKLSAgICAgIEdFVF9URVNUX1BST1BFUlRZKGt3c3lzLnRlc3RGYWlsIFdJTExfRkFJTCB3ZnYpCi0gICAgICBTRVRfVEVTVFNfUFJPUEVSVElFUyhrd3N5cy50ZXN0RmFpbCBQUk9QRVJUSUVTIE1FQVNVUkVNRU5UICJTb21lIEtleT1Tb21lIFZhbHVlIikKLSAgICAgIE1FU1NBR0UoU1RBVFVTICJHRVRfVEVTVF9QUk9QRVJUWSByZXR1cm5lZDogJHt3ZnZ9IikKLSAgICBFTkRJRigpCisgICAgICBzZXRfdGVzdHNfcHJvcGVydGllcyhrd3N5cy50ZXN0RmFpbCBQUk9QRVJUSUVTIFdJTExfRkFJTCBPTikKKyAgICAgIGdldF90ZXN0X3Byb3BlcnR5KGt3c3lzLnRlc3RGYWlsIFdJTExfRkFJTCB3ZnYpCisgICAgICBzZXRfdGVzdHNfcHJvcGVydGllcyhrd3N5cy50ZXN0RmFpbCBQUk9QRVJUSUVTIE1FQVNVUkVNRU5UICJTb21lIEtleT1Tb21lIFZhbHVlIikKKyAgICAgIG1lc3NhZ2UoU1RBVFVTICJHRVRfVEVTVF9QUk9QRVJUWSByZXR1cm5lZDogJHt3ZnZ9IikKKyAgICBlbmRpZigpCiAKICAgICAjIFNldCB1cCBjdGVzdCBjdXN0b20gY29uZmlndXJhdGlvbiBmaWxlLgotICAgIENPTkZJR1VSRV9GSUxFKCR7UFJPSkVDVF9TT1VSQ0VfRElSfS9DVGVzdEN1c3RvbS5jbWFrZS5pbgorICAgIGNvbmZpZ3VyZV9maWxlKCR7UFJPSkVDVF9TT1VSQ0VfRElSfS9DVGVzdEN1c3RvbS5jbWFrZS5pbgogICAgICAgICAgICAgICAgICAgICR7UFJPSkVDVF9CSU5BUllfRElSfS9DVGVzdEN1c3RvbS5jbWFrZSBAT05MWSkKIAogICAgICMgU3VwcHJlc3Mga25vd24gY29uc2lzdGVudCBmYWlsdXJlcyBvbiBidWdneSBzeXN0ZW1zLgotICAgIElGKEtXU1lTX1RFU1RfQk9HVVNfRkFJTFVSRVMpCi0gICAgICBTRVRfVEVTVFNfUFJPUEVSVElFUygke0tXU1lTX1RFU1RfQk9HVVNfRkFJTFVSRVN9IFBST1BFUlRJRVMgV0lMTF9GQUlMIE9OKQotICAgIEVORElGKCkKKyAgICBpZihLV1NZU19URVNUX0JPR1VTX0ZBSUxVUkVTKQorICAgICAgc2V0X3Rlc3RzX3Byb3BlcnRpZXMoJHtLV1NZU19URVNUX0JPR1VTX0ZBSUxVUkVTfSBQUk9QRVJUSUVTIFdJTExfRkFJTCBPTikKKyAgICBlbmRpZigpCiAKLSAgRU5ESUYoKQotRU5ESUYoKQorICBlbmRpZigpCitlbmRpZigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uva3dzeXMvQ29tbWFuZExpbmVBcmd1bWVudHMuY3h4IGIvU291cmNlL2t3c3lzL0NvbW1hbmRMaW5lQXJndW1lbnRzLmN4eAppbmRleCAzZmQxOTU1Li5hMmVkODc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uva3dzeXMvQ29tbWFuZExpbmVBcmd1bWVudHMuY3h4CisrKyBiL1NvdXJjZS9rd3N5cy9Db21tYW5kTGluZUFyZ3VtZW50cy5jeHgKQEAgLTY2LDI2ICs2NiwyMSBAQAogY2xhc3MgQ29tbWFuZExpbmVBcmd1bWVudHNJbnRlcm5hbAogewogcHVibGljOgotICBDb21tYW5kTGluZUFyZ3VtZW50c0ludGVybmFsKCkKLSAgICA6IFVua25vd25Bcmd1bWVudENhbGxiYWNreyBudWxscHRyIH0KLSAgICAsIENsaWVudERhdGF7IG51bGxwdHIgfQotICAgICwgTGFzdEFyZ3VtZW50eyAwIH0KLSAgewotICB9CisgIENvbW1hbmRMaW5lQXJndW1lbnRzSW50ZXJuYWwoKSA9IGRlZmF1bHQ7CiAKLSAgdHlwZWRlZiBDb21tYW5kTGluZUFyZ3VtZW50c1ZlY3Rvck9mU3RyaW5ncyBWZWN0b3JPZlN0cmluZ3M7Ci0gIHR5cGVkZWYgQ29tbWFuZExpbmVBcmd1bWVudHNNYXBPZlN0cnVjcyBDYWxsYmFja3NNYXA7Ci0gIHR5cGVkZWYga3dzeXM6OlN0cmluZyBTdHJpbmc7Ci0gIHR5cGVkZWYgQ29tbWFuZExpbmVBcmd1bWVudHNTZXRPZlN0cmluZ3MgU2V0T2ZTdHJpbmdzOworICB1c2luZyBWZWN0b3JPZlN0cmluZ3MgPSBDb21tYW5kTGluZUFyZ3VtZW50c1ZlY3Rvck9mU3RyaW5nczsKKyAgdXNpbmcgQ2FsbGJhY2tzTWFwID0gQ29tbWFuZExpbmVBcmd1bWVudHNNYXBPZlN0cnVjczsKKyAgdXNpbmcgU3RyaW5nID0ga3dzeXM6OlN0cmluZzsKKyAgdXNpbmcgU2V0T2ZTdHJpbmdzID0gQ29tbWFuZExpbmVBcmd1bWVudHNTZXRPZlN0cmluZ3M7CiAKICAgVmVjdG9yT2ZTdHJpbmdzIEFyZ3Y7CiAgIFN0cmluZyBBcmd2MDsKICAgQ2FsbGJhY2tzTWFwIENhbGxiYWNrczsKIAotICBDb21tYW5kTGluZUFyZ3VtZW50czo6RXJyb3JDYWxsYmFja1R5cGUgVW5rbm93bkFyZ3VtZW50Q2FsbGJhY2s7Ci0gIHZvaWQqIENsaWVudERhdGE7CisgIENvbW1hbmRMaW5lQXJndW1lbnRzOjpFcnJvckNhbGxiYWNrVHlwZSBVbmtub3duQXJndW1lbnRDYWxsYmFja3sgbnVsbHB0ciB9OworICB2b2lkKiBDbGllbnREYXRheyBudWxscHRyIH07CiAKLSAgVmVjdG9yT2ZTdHJpbmdzOjpzaXplX3R5cGUgTGFzdEFyZ3VtZW50OworICBWZWN0b3JPZlN0cmluZ3M6OnNpemVfdHlwZSBMYXN0QXJndW1lbnR7IDAgfTsKIAogICBWZWN0b3JPZlN0cmluZ3MgVW51c2VkQXJndW1lbnRzOwogfTsKQEAgLTQyNCw4ICs0MTksNyBAQAogCiBjb25zdCBjaGFyKiBDb21tYW5kTGluZUFyZ3VtZW50czo6R2V0SGVscChjb25zdCBjaGFyKiBhcmcpCiB7Ci0gIENvbW1hbmRMaW5lQXJndW1lbnRzOjpJbnRlcm5hbDo6Q2FsbGJhY2tzTWFwOjppdGVyYXRvciBpdCA9Ci0gICAgdGhpcy0+SW50ZXJuYWxzLT5DYWxsYmFja3MuZmluZChhcmcpOworICBhdXRvIGl0ID0gdGhpcy0+SW50ZXJuYWxzLT5DYWxsYmFja3MuZmluZChhcmcpOwogICBpZiAoaXQgPT0gdGhpcy0+SW50ZXJuYWxzLT5DYWxsYmFja3MuZW5kKCkpIHsKICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQpAQCAtNDM0LDggKzQyOCw3IEBACiAgIC8vIG9uZSBwb2ludCB0byBpZiB0aGlzIG9uZSBpcyBwb2ludGluZyB0byBhbm90aGVyIGFyZ3VtZW50LgogICBDb21tYW5kTGluZUFyZ3VtZW50c0NhbGxiYWNrU3RydWN0dXJlKiBjcyA9ICYoaXQtPnNlY29uZCk7CiAgIGZvciAoOzspIHsKLSAgICBDb21tYW5kTGluZUFyZ3VtZW50czo6SW50ZXJuYWw6OkNhbGxiYWNrc01hcDo6aXRlcmF0b3IgaGl0ID0KLSAgICAgIHRoaXMtPkludGVybmFscy0+Q2FsbGJhY2tzLmZpbmQoY3MtPkhlbHApOworICAgIGF1dG8gaGl0ID0gdGhpcy0+SW50ZXJuYWxzLT5DYWxsYmFja3MuZmluZChjcy0+SGVscCk7CiAgICAgaWYgKGhpdCA9PSB0aGlzLT5JbnRlcm5hbHMtPkNhbGxiYWNrcy5lbmQoKSkgewogICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDcwLDkgKzQ2Myw4IEBACiAgIC8vIENvbGxhcHNlIGFsbCBhcmd1bWVudHMgaW50byB0aGUgbWFwIG9mIHZlY3RvcnMgb2YgYWxsIGFyZ3VtZW50cyB0aGF0IGRvCiAgIC8vIHRoZSBzYW1lIHRoaW5nLgogICBDb21tYW5kTGluZUFyZ3VtZW50czo6SW50ZXJuYWw6OkNhbGxiYWNrc01hcDo6aXRlcmF0b3IgaXQ7Ci0gIHR5cGVkZWYgc3RkOjptYXA8Q29tbWFuZExpbmVBcmd1bWVudHM6OkludGVybmFsOjpTdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgQ29tbWFuZExpbmVBcmd1bWVudHM6OkludGVybmFsOjpTZXRPZlN0cmluZ3M+Ci0gICAgTWFwQXJnczsKKyAgdXNpbmcgTWFwQXJncyA9IHN0ZDo6bWFwPENvbW1hbmRMaW5lQXJndW1lbnRzOjpJbnRlcm5hbDo6U3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZExpbmVBcmd1bWVudHM6OkludGVybmFsOjpTZXRPZlN0cmluZ3M+OwogICBNYXBBcmdzIG1wOwogICBNYXBBcmdzOjppdGVyYXRvciBtcGl0LCBzbXBpdDsKICAgZm9yIChpdCA9IHRoaXMtPkludGVybmFscy0+Q2FsbGJhY2tzLmJlZ2luKCk7CkBAIC03MDksNyArNzAxLDcgQEAKICAgaWYgKGNzLT5DYWxsYmFjaykgewogICAgIGlmICghY3MtPkNhbGxiYWNrKGNzLT5Bcmd1bWVudCwgdmFsdWUsIGNzLT5DYWxsRGF0YSkpIHsKICAgICAgIHRoaXMtPkludGVybmFscy0+TGFzdEFyZ3VtZW50LS07Ci0gICAgICByZXR1cm4gMDsKKyAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgIH0KICAgQ29tbWFuZExpbmVBcmd1bWVudHNfREVCVUcoIlNldCBhcmd1bWVudDogIiA8PCBjcy0+QXJndW1lbnQgPDwgIiB0byAiCkBAIC03NTksMTAgKzc1MSwxMCBAQAogICAgICAgICBzdGQ6OmNlcnIgPDwgIkdvdCB1bmtub3duIHZhcmlhYmxlIHR5cGU6IFwiIiA8PCBjcy0+VmFyaWFibGVUeXBlCiAgICAgICAgICAgICAgICAgICA8PCAiXCIiIDw8IHN0ZDo6ZW5kbDsKICAgICAgICAgdGhpcy0+SW50ZXJuYWxzLT5MYXN0QXJndW1lbnQtLTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgIH0KLSAgcmV0dXJuIDE7CisgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBLV1NZU19OQU1FU1BBQ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9rd3N5cy9EaXJlY3RvcnkuY3h4IGIvU291cmNlL2t3c3lzL0RpcmVjdG9yeS5jeHgKaW5kZXggZTM3OTE4Mi4uZDY0MDk0OCAxMDA2NDQKLS0tIGEvU291cmNlL2t3c3lzL0RpcmVjdG9yeS5jeHgKKysrIGIvU291cmNlL2t3c3lzL0RpcmVjdG9yeS5jeHgKQEAgLTM1LDYgKzM1LDE4IEBACiAgIHRoaXMtPkludGVybmFsID0gbmV3IERpcmVjdG9yeUludGVybmFsczsKIH0KIAorRGlyZWN0b3J5OjpEaXJlY3RvcnkoRGlyZWN0b3J5JiYgb3RoZXIpCit7CisgIHRoaXMtPkludGVybmFsID0gb3RoZXIuSW50ZXJuYWw7CisgIG90aGVyLkludGVybmFsID0gbnVsbHB0cjsKK30KKworRGlyZWN0b3J5JiBEaXJlY3Rvcnk6Om9wZXJhdG9yPShEaXJlY3RvcnkmJiBvdGhlcikKK3sKKyAgc3RkOjpzd2FwKHRoaXMtPkludGVybmFsLCBvdGhlci5JbnRlcm5hbCk7CisgIHJldHVybiAqdGhpczsKK30KKwogRGlyZWN0b3J5Ojp+RGlyZWN0b3J5KCkKIHsKICAgZGVsZXRlIHRoaXMtPkludGVybmFsOwpAQCAtMjA0LDE1ICsyMTYsMTUgQEAKICAgRElSKiBkaXIgPSBvcGVuZGlyKG5hbWUuY19zdHIoKSk7CiAKICAgaWYgKCFkaXIpIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAogICBmb3IgKGt3c3lzX2RpcmVudCogZCA9IHJlYWRkaXIoZGlyKTsgZDsgZCA9IHJlYWRkaXIoZGlyKSkgewotICAgIHRoaXMtPkludGVybmFsLT5GaWxlcy5wdXNoX2JhY2soZC0+ZF9uYW1lKTsKKyAgICB0aGlzLT5JbnRlcm5hbC0+RmlsZXMuZW1wbGFjZV9iYWNrKGQtPmRfbmFtZSk7CiAgIH0KICAgdGhpcy0+SW50ZXJuYWwtPlBhdGggPSBuYW1lOwogICBjbG9zZWRpcihkaXIpOwotICByZXR1cm4gMTsKKyAgcmV0dXJuIHRydWU7CiB9CiAKIHVuc2lnbmVkIGxvbmcgRGlyZWN0b3J5OjpHZXROdW1iZXJPZkZpbGVzSW5EaXJlY3RvcnkoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uva3dzeXMvRGlyZWN0b3J5Lmh4eC5pbiBiL1NvdXJjZS9rd3N5cy9EaXJlY3RvcnkuaHh4LmluCmluZGV4IGFkOGM1MWIuLjliMGY0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9rd3N5cy9EaXJlY3RvcnkuaHh4LmluCisrKyBiL1NvdXJjZS9rd3N5cy9EaXJlY3RvcnkuaHh4LmluCkBAIC0yMyw2ICsyMywxMSBAQAogewogcHVibGljOgogICBEaXJlY3RvcnkoKTsKKyAgRGlyZWN0b3J5KERpcmVjdG9yeSYmIG90aGVyKTsKKyAgRGlyZWN0b3J5KGNvbnN0IERpcmVjdG9yeSYpID0gZGVsZXRlOworICBEaXJlY3RvcnkmIG9wZXJhdG9yPShjb25zdCBEaXJlY3RvcnkmKSA9IGRlbGV0ZTsKKyAgRGlyZWN0b3J5JiBvcGVyYXRvcj0oRGlyZWN0b3J5JiYgb3RoZXIpOworICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGlyZWN0b3J5JikgPSBkZWxldGU7CiAgIH5EaXJlY3RvcnkoKTsKIAogICAvKioKQEAgLTYyLDEwICs2Nyw3IEBACiBwcml2YXRlOgogICAvLyBQcml2YXRlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAgIERpcmVjdG9yeUludGVybmFscyogSW50ZXJuYWw7Ci0KLSAgRGlyZWN0b3J5KGNvbnN0IERpcmVjdG9yeSYpOyAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRGlyZWN0b3J5Jik7IC8vIE5vdCBpbXBsZW1lbnRlZC4KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuZCBDbGFzczogRGlyZWN0b3J5Cit9OyAvLyBFbmQgQ2xhc3M6IERpcmVjdG9yeQogCiB9IC8vIG5hbWVzcGFjZSBAS1dTWVNfTkFNRVNQQUNFQAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uva3dzeXMvRXh0cmFUZXN0LmNtYWtlLmluIGIvU291cmNlL2t3c3lzL0V4dHJhVGVzdC5jbWFrZS5pbgppbmRleCBlOGMwYTFjLi40Y2VjOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uva3dzeXMvRXh0cmFUZXN0LmNtYWtlLmluCisrKyBiL1NvdXJjZS9rd3N5cy9FeHRyYVRlc3QuY21ha2UuaW4KQEAgLTEgKzEgQEAKLU1FU1NBR0UoIioqKiBUaGlzIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkIGJ5IG1lc3NhZ2UgaW5zaWRlIGEgZmlsZSB0aGF0IGlzIGluY2x1ZGVkIGluIERhcnRUZXN0ZmlsZS50eHQgKioqIikKK21lc3NhZ2UoIioqKiBUaGlzIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkIGJ5IG1lc3NhZ2UgaW5zaWRlIGEgZmlsZSB0aGF0IGlzIGluY2x1ZGVkIGluIERhcnRUZXN0ZmlsZS50eHQgKioqIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9rd3N5cy9HbG9iLmN4eCBiL1NvdXJjZS9rd3N5cy9HbG9iLmN4eAppbmRleCAzNGJiMGQwLi44ZTMwZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uva3dzeXMvR2xvYi5jeHgKKysrIGIvU291cmNlL2t3c3lzL0dsb2IuY3h4CkBAIC0zODUsMTAgKzM4NSw5IEBACiAgIH0KIAogICBpZiAoc2tpcCA+IDApIHsKLSAgICBleHByID0gZXhwci5zdWJzdHIoc2tpcCk7CisgICAgZXhwci5lcmFzZSgwLCBza2lwKTsKICAgfQogCi0gIGNleHByID0gIiI7CiAgIGZvciAoY2MgPSAwOyBjYyA8IGV4cHIuc2l6ZSgpOyBjYysrKSB7CiAgICAgaW50IGNoID0gZXhwcltjY107CiAgICAgaWYgKGNoID09ICcvJykgewpAQCAtNDE1LDggKzQxNCw3IEBACiAKIHZvaWQgR2xvYjo6QWRkRXhwcmVzc2lvbihjb25zdCBzdGQ6OnN0cmluZyYgZXhwcikKIHsKLSAgdGhpcy0+SW50ZXJuYWxzLT5FeHByZXNzaW9ucy5wdXNoX2JhY2soCi0gICAga3dzeXM6OlJlZ3VsYXJFeHByZXNzaW9uKHRoaXMtPlBhdHRlcm5Ub1JlZ2V4KGV4cHIpKSk7CisgIHRoaXMtPkludGVybmFscy0+RXhwcmVzc2lvbnMuZW1wbGFjZV9iYWNrKHRoaXMtPlBhdHRlcm5Ub1JlZ2V4KGV4cHIpKTsKIH0KIAogdm9pZCBHbG9iOjpTZXRSZWxhdGl2ZShjb25zdCBjaGFyKiBkaXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uva3dzeXMvUHJvY2Vzcy5oLmluIGIvU291cmNlL2t3c3lzL1Byb2Nlc3MuaC5pbgppbmRleCA3M2VhOWRiLi45ZjIxNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uva3dzeXMvUHJvY2Vzcy5oLmluCisrKyBiL1NvdXJjZS9rd3N5cy9Qcm9jZXNzLmguaW4KQEAgLTE4MCw4ICsxODAsOCBAQAogICogd3JpdGUgZW5kIG9mIHRoZSBwaXBlIHdpbGwgYmUgY2xvc2VkIGluIHRoZSBwYXJlbnQgcHJvY2VzcyBhbmQgdGhlCiAgKiByZWFkIGVuZCB3aWxsIGJlIGNsb3NlZCBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KICAqLwota3dzeXNFWFBPUlQgdm9pZCBrd3N5c1Byb2Nlc3NfU2V0UGlwZU5hdGl2ZShrd3N5c1Byb2Nlc3MqIGNwLCBpbnQgcGlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dzeXNQcm9jZXNzX1BpcGVfSGFuZGxlIHBbMl0pOwora3dzeXNFWFBPUlQgdm9pZCBrd3N5c1Byb2Nlc3NfU2V0UGlwZU5hdGl2ZSgKKyAga3dzeXNQcm9jZXNzKiBjcCwgaW50IHBpcGUsIGNvbnN0IGt3c3lzUHJvY2Vzc19QaXBlX0hhbmRsZSBwWzJdKTsKIAogLyoqCiAgKiBHZXQvU2V0IGEgcG9zc2libHkgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW9uLiAgUG9zc2libGUgb3B0aW9ucyBhcmU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uva3dzeXMvUHJvY2Vzc1VOSVguYyBiL1NvdXJjZS9rd3N5cy9Qcm9jZXNzVU5JWC5jCmluZGV4IGY2NTY5MGIuLjVmZGUwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9rd3N5cy9Qcm9jZXNzVU5JWC5jCisrKyBiL1NvdXJjZS9rd3N5cy9Qcm9jZXNzVU5JWC5jCkBAIC0xNTIsMTAgKzE1MiwxMSBAQAogc3RhdGljIHZvaWQga3dzeXNQcm9jZXNzRGVzdHJveShrd3N5c1Byb2Nlc3MqIGNwKTsKIHN0YXRpYyBpbnQga3dzeXNQcm9jZXNzU2V0dXBPdXRwdXRQaXBlRmlsZShpbnQqIHAsIGNvbnN0IGNoYXIqIG5hbWUpOwogc3RhdGljIGludCBrd3N5c1Byb2Nlc3NTZXR1cE91dHB1dFBpcGVOYXRpdmUoaW50KiBwLCBpbnQgZGVzWzJdKTsKLXN0YXRpYyBpbnQga3dzeXNQcm9jZXNzR2V0VGltZW91dFRpbWUoa3dzeXNQcm9jZXNzKiBjcCwgZG91YmxlKiB1c2VyVGltZW91dCwKK3N0YXRpYyBpbnQga3dzeXNQcm9jZXNzR2V0VGltZW91dFRpbWUoa3dzeXNQcm9jZXNzKiBjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlKiB1c2VyVGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dzeXNQcm9jZXNzVGltZSogdGltZW91dFRpbWUpOwogc3RhdGljIGludCBrd3N5c1Byb2Nlc3NHZXRUaW1lb3V0TGVmdChrd3N5c1Byb2Nlc3NUaW1lKiB0aW1lb3V0VGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlKiB1c2VyVGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlKiB1c2VyVGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dzeXNQcm9jZXNzVGltZU5hdGl2ZSogdGltZW91dExlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHplcm9Jc0V4cGlyZWQpOwogc3RhdGljIGt3c3lzUHJvY2Vzc1RpbWUga3dzeXNQcm9jZXNzVGltZUdldEN1cnJlbnQodm9pZCk7CkBAIC01NzEsNyArNTcyLDcgQEAKICAgfQogfQogCi12b2lkIGt3c3lzUHJvY2Vzc19TZXRQaXBlTmF0aXZlKGt3c3lzUHJvY2VzcyogY3AsIGludCBwclBpcGUsIGludCBwWzJdKQordm9pZCBrd3N5c1Byb2Nlc3NfU2V0UGlwZU5hdGl2ZShrd3N5c1Byb2Nlc3MqIGNwLCBpbnQgcHJQaXBlLCBjb25zdCBpbnQgcFsyXSkKIHsKICAgaW50KiBwUGlwZU5hdGl2ZSA9IDA7CiAKQEAgLTE5NTksNyArMTk2MCw4IEBACiAKIC8qIEdldCB0aGUgdGltZSBhdCB3aGljaCBlaXRoZXIgdGhlIHByb2Nlc3Mgb3IgdXNlciB0aW1lb3V0IHdpbGwKICAgIGV4cGlyZS4gIFJldHVybnMgMSBpZiB0aGUgdXNlciB0aW1lb3V0IGlzIGZpcnN0LCBhbmQgMCBvdGhlcndpc2UuICAqLwotc3RhdGljIGludCBrd3N5c1Byb2Nlc3NHZXRUaW1lb3V0VGltZShrd3N5c1Byb2Nlc3MqIGNwLCBkb3VibGUqIHVzZXJUaW1lb3V0LAorc3RhdGljIGludCBrd3N5c1Byb2Nlc3NHZXRUaW1lb3V0VGltZShrd3N5c1Byb2Nlc3MqIGNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUqIHVzZXJUaW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd3N5c1Byb2Nlc3NUaW1lKiB0aW1lb3V0VGltZSkKIHsKICAgLyogVGhlIGZpcnN0IHRpbWUgdGhpcyBpcyBjYWxsZWQsIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSB0aW1lIGF0CkBAIC0xOTkxLDcgKzE5OTMsNyBAQAogLyogR2V0IHRoZSBsZW5ndGggb2YgdGltZSBiZWZvcmUgdGhlIGdpdmVuIHRpbWVvdXQgdGltZSBhcnJpdmVzLgogICAgUmV0dXJucyAxIGlmIHRoZSB0aW1lIGhhcyBhbHJlYWR5IGFycml2ZWQsIGFuZCAwIG90aGVyd2lzZS4gICovCiBzdGF0aWMgaW50IGt3c3lzUHJvY2Vzc0dldFRpbWVvdXRMZWZ0KGt3c3lzUHJvY2Vzc1RpbWUqIHRpbWVvdXRUaW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUqIHVzZXJUaW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUqIHVzZXJUaW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd3N5c1Byb2Nlc3NUaW1lTmF0aXZlKiB0aW1lb3V0TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgemVyb0lzRXhwaXJlZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9rd3N5cy9Qcm9jZXNzV2luMzIuYyBiL1NvdXJjZS9rd3N5cy9Qcm9jZXNzV2luMzIuYwppbmRleCA2OGM1MjE4Li41NmJiZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uva3dzeXMvUHJvY2Vzc1dpbjMyLmMKKysrIGIvU291cmNlL2t3c3lzL1Byb2Nlc3NXaW4zMi5jCkBAIC03NjEsNyArNzYxLDcgQEAKICAgfQogfQogCi12b2lkIGt3c3lzUHJvY2Vzc19TZXRQaXBlTmF0aXZlKGt3c3lzUHJvY2VzcyogY3AsIGludCBwaXBlLCBIQU5ETEUgcFsyXSkKK3ZvaWQga3dzeXNQcm9jZXNzX1NldFBpcGVOYXRpdmUoa3dzeXNQcm9jZXNzKiBjcCwgaW50IHBpcGUsIGNvbnN0IEhBTkRMRSBwWzJdKQogewogICBIQU5ETEUqIHBQaXBlTmF0aXZlID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2t3c3lzL1N5c3RlbS5jIGIvU291cmNlL2t3c3lzL1N5c3RlbS5jCmluZGV4IGQ0M2NjNmYuLmRiZmQyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9rd3N5cy9TeXN0ZW0uYworKysgYi9Tb3VyY2Uva3dzeXMvU3lzdGVtLmMKQEAgLTIyLDcgKzIyLDcgQEAKIHR5cGVkZWYgaW50IGt3c3lzU3lzdGVtX3B0cmRpZmZfdDsKICNlbmRpZgogCi1zdGF0aWMgaW50IGt3c3lzU3lzdGVtX19BcHBlbmRCeXRlKGNoYXIqIGxvY2FsLCBjaGFyKiogYmVnaW4sIGNoYXIqKiBlbmQsCitzdGF0aWMgaW50IGt3c3lzU3lzdGVtX19BcHBlbmRCeXRlKGNvbnN0IGNoYXIqIGxvY2FsLCBjaGFyKiogYmVnaW4sIGNoYXIqKiBlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogc2l6ZSwgY2hhciBjKQogewogICAvKiBBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIGNoYXJhY3Rlci4gICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uva3dzeXMvU3lzdGVtSW5mb3JtYXRpb24uY3h4IGIvU291cmNlL2t3c3lzL1N5c3RlbUluZm9ybWF0aW9uLmN4eAppbmRleCA2ZWM2ZTQ4Li45NWIwNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uva3dzeXMvU3lzdGVtSW5mb3JtYXRpb24uY3h4CisrKyBiL1NvdXJjZS9rd3N5cy9TeXN0ZW1JbmZvcm1hdGlvbi5jeHgKQEAgLTEzMiw3ICsxMzIsNyBAQAogIyAgICBlbmRpZgogIyAgZW5kaWYKICMgIGlmIGRlZmluZWQoS1dTWVNfQ1hYX0hBU19STElNSVQ2NCkKLXR5cGVkZWYgc3RydWN0IHJsaW1pdDY0IFJlc291cmNlTGltaXRUeXBlOwordXNpbmcgUmVzb3VyY2VMaW1pdFR5cGUgPSBzdHJ1Y3QgcmxpbWl0NjQ7CiAjICAgIGRlZmluZSBHZXRSZXNvdXJjZUxpbWl0IGdldHJsaW1pdDY0CiAjICBlbHNlCiB0eXBlZGVmIHN0cnVjdCBybGltaXQgUmVzb3VyY2VMaW1pdFR5cGU7CkBAIC0zMDMsMzQgKzMwMywzNCBAQAogfQogCiBleHRlcm4gIkMiIHsKLXR5cGVkZWYgdm9pZCAoKlNpZ0FjdGlvbikoaW50LCBzaWdpbmZvX3QqLCB2b2lkKik7Cit1c2luZyBTaWdBY3Rpb24gPSB2b2lkICgqKShpbnQsIHNpZ2luZm9fdCosIHZvaWQqKTsKIH0KIAogLy8gIERlZmluZSBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uIGNsYXNzCi10eXBlZGVmIHZvaWQgKCpERUxBWV9GVU5DKSh1bnNpZ25lZCBpbnQgdWlNUyk7Cit1c2luZyBERUxBWV9GVU5DID0gdm9pZCAoKikodW5zaWduZWQgaW50KTsKIAogY2xhc3MgU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbgogewogcHVibGljOgotICB0eXBlZGVmIFN5c3RlbUluZm9ybWF0aW9uOjpMb25nTG9uZyBMb25nTG9uZzsKKyAgdXNpbmcgTG9uZ0xvbmcgPSBTeXN0ZW1JbmZvcm1hdGlvbjo6TG9uZ0xvbmc7CiAgIFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb24oKTsKLSAgflN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb24oKTsKKyAgflN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgY29uc3QgY2hhciogR2V0VmVuZG9yU3RyaW5nKCk7CisgIGNvbnN0IGNoYXIqIEdldFZlbmRvclN0cmluZygpIGNvbnN0OwogICBjb25zdCBjaGFyKiBHZXRWZW5kb3JJRCgpOwotICBzdGQ6OnN0cmluZyBHZXRUeXBlSUQoKTsKLSAgc3RkOjpzdHJpbmcgR2V0RmFtaWx5SUQoKTsKLSAgc3RkOjpzdHJpbmcgR2V0TW9kZWxJRCgpOwotICBzdGQ6OnN0cmluZyBHZXRNb2RlbE5hbWUoKTsKLSAgc3RkOjpzdHJpbmcgR2V0U3RlcHBpbmdDb2RlKCk7Ci0gIGNvbnN0IGNoYXIqIEdldEV4dGVuZGVkUHJvY2Vzc29yTmFtZSgpOwotICBjb25zdCBjaGFyKiBHZXRQcm9jZXNzb3JTZXJpYWxOdW1iZXIoKTsKLSAgaW50IEdldFByb2Nlc3NvckNhY2hlU2l6ZSgpOwotICB1bnNpZ25lZCBpbnQgR2V0TG9naWNhbFByb2Nlc3NvcnNQZXJQaHlzaWNhbCgpOwotICBmbG9hdCBHZXRQcm9jZXNzb3JDbG9ja0ZyZXF1ZW5jeSgpOwotICBpbnQgR2V0UHJvY2Vzc29yQVBJQ0lEKCk7Ci0gIGludCBHZXRQcm9jZXNzb3JDYWNoZVhTaXplKGxvbmcgaW50KTsKLSAgYm9vbCBEb2VzQ1BVU3VwcG9ydEZlYXR1cmUobG9uZyBpbnQpOworICBzdGQ6OnN0cmluZyBHZXRUeXBlSUQoKSBjb25zdDsKKyAgc3RkOjpzdHJpbmcgR2V0RmFtaWx5SUQoKSBjb25zdDsKKyAgc3RkOjpzdHJpbmcgR2V0TW9kZWxJRCgpIGNvbnN0OworICBzdGQ6OnN0cmluZyBHZXRNb2RlbE5hbWUoKSBjb25zdDsKKyAgc3RkOjpzdHJpbmcgR2V0U3RlcHBpbmdDb2RlKCkgY29uc3Q7CisgIGNvbnN0IGNoYXIqIEdldEV4dGVuZGVkUHJvY2Vzc29yTmFtZSgpIGNvbnN0OworICBjb25zdCBjaGFyKiBHZXRQcm9jZXNzb3JTZXJpYWxOdW1iZXIoKSBjb25zdDsKKyAgaW50IEdldFByb2Nlc3NvckNhY2hlU2l6ZSgpIGNvbnN0OworICB1bnNpZ25lZCBpbnQgR2V0TG9naWNhbFByb2Nlc3NvcnNQZXJQaHlzaWNhbCgpIGNvbnN0OworICBmbG9hdCBHZXRQcm9jZXNzb3JDbG9ja0ZyZXF1ZW5jeSgpIGNvbnN0OworICBpbnQgR2V0UHJvY2Vzc29yQVBJQ0lEKCkgY29uc3Q7CisgIGludCBHZXRQcm9jZXNzb3JDYWNoZVhTaXplKGxvbmcgaW50KSBjb25zdDsKKyAgYm9vbCBEb2VzQ1BVU3VwcG9ydEZlYXR1cmUobG9uZyBpbnQpIGNvbnN0OwogCiAgIGNvbnN0IGNoYXIqIEdldE9TTmFtZSgpOwogICBjb25zdCBjaGFyKiBHZXRIb3N0bmFtZSgpOwpAQCAtMzM5LDI0ICszMzksMjQgQEAKICAgY29uc3QgY2hhciogR2V0T1NWZXJzaW9uKCk7CiAgIGNvbnN0IGNoYXIqIEdldE9TUGxhdGZvcm0oKTsKIAotICBib29sIElzNjRCaXRzKCk7CisgIGJvb2wgSXM2NEJpdHMoKSBjb25zdDsKIAotICB1bnNpZ25lZCBpbnQgR2V0TnVtYmVyT2ZMb2dpY2FsQ1BVKCk7IC8vIHBlciBwaHlzaWNhbCBjcHUKLSAgdW5zaWduZWQgaW50IEdldE51bWJlck9mUGh5c2ljYWxDUFUoKTsKKyAgdW5zaWduZWQgaW50IEdldE51bWJlck9mTG9naWNhbENQVSgpIGNvbnN0OyAvLyBwZXIgcGh5c2ljYWwgY3B1CisgIHVuc2lnbmVkIGludCBHZXROdW1iZXJPZlBoeXNpY2FsQ1BVKCkgY29uc3Q7CiAKICAgYm9vbCBEb2VzQ1BVU3VwcG9ydENQVUlEKCk7CiAKICAgLy8gUmV0cmlldmUgbWVtb3J5IGluZm9ybWF0aW9uIGluIE1pQi4KLSAgc2l6ZV90IEdldFRvdGFsVmlydHVhbE1lbW9yeSgpOwotICBzaXplX3QgR2V0QXZhaWxhYmxlVmlydHVhbE1lbW9yeSgpOwotICBzaXplX3QgR2V0VG90YWxQaHlzaWNhbE1lbW9yeSgpOwotICBzaXplX3QgR2V0QXZhaWxhYmxlUGh5c2ljYWxNZW1vcnkoKTsKKyAgc2l6ZV90IEdldFRvdGFsVmlydHVhbE1lbW9yeSgpIGNvbnN0OworICBzaXplX3QgR2V0QXZhaWxhYmxlVmlydHVhbE1lbW9yeSgpIGNvbnN0OworICBzaXplX3QgR2V0VG90YWxQaHlzaWNhbE1lbW9yeSgpIGNvbnN0OworICBzaXplX3QgR2V0QXZhaWxhYmxlUGh5c2ljYWxNZW1vcnkoKSBjb25zdDsKIAogICBMb25nTG9uZyBHZXRQcm9jZXNzSWQoKTsKIAogICAvLyBSZXRyaWV2ZSBtZW1vcnkgaW5mb3JtYXRpb24gaW4gS2lCLgogICBMb25nTG9uZyBHZXRIb3N0TWVtb3J5VG90YWwoKTsKLSAgTG9uZ0xvbmcgR2V0SG9zdE1lbW9yeUF2YWlsYWJsZShjb25zdCBjaGFyKiBlbnZWYXJOYW1lKTsKKyAgTG9uZ0xvbmcgR2V0SG9zdE1lbW9yeUF2YWlsYWJsZShjb25zdCBjaGFyKiBob3N0TGltaXRFbnZWYXJOYW1lKTsKICAgTG9uZ0xvbmcgR2V0SG9zdE1lbW9yeVVzZWQoKTsKIAogICBMb25nTG9uZyBHZXRQcm9jTWVtb3J5QXZhaWxhYmxlKGNvbnN0IGNoYXIqIGhvc3RMaW1pdEVudlZhck5hbWUsCkBAIC0zNzcsNjAgKzM3NywxMDMgQEAKICAgdm9pZCBSdW5NZW1vcnlDaGVjaygpOwogCiBwdWJsaWM6Ci0gIHR5cGVkZWYgc3RydWN0IHRhZ0lECisgIHVzaW5nIElEID0gc3RydWN0IHRhZ0lECisKICAgeworCiAgICAgaW50IFR5cGU7CisKICAgICBpbnQgRmFtaWx5OworCiAgICAgaW50IE1vZGVsOworCiAgICAgaW50IFJldmlzaW9uOworCiAgICAgaW50IEV4dGVuZGVkRmFtaWx5OworCiAgICAgaW50IEV4dGVuZGVkTW9kZWw7CisKICAgICBzdGQ6OnN0cmluZyBQcm9jZXNzb3JOYW1lOworCiAgICAgc3RkOjpzdHJpbmcgVmVuZG9yOworCiAgICAgc3RkOjpzdHJpbmcgU2VyaWFsTnVtYmVyOworCiAgICAgc3RkOjpzdHJpbmcgTW9kZWxOYW1lOwotICB9IElEOworICB9OwogCi0gIHR5cGVkZWYgc3RydWN0IHRhZ0NQVVBvd2VyTWFuYWdlbWVudAorICB1c2luZyBDUFVQb3dlck1hbmFnZW1lbnQgPSBzdHJ1Y3QgdGFnQ1BVUG93ZXJNYW5hZ2VtZW50CisKICAgeworCiAgICAgYm9vbCBIYXNWb2x0YWdlSUQ7CisKICAgICBib29sIEhhc0ZyZXF1ZW5jeUlEOworCiAgICAgYm9vbCBIYXNUZW1wU2Vuc2VEaW9kZTsKLSAgfSBDUFVQb3dlck1hbmFnZW1lbnQ7CisgIH07CiAKLSAgdHlwZWRlZiBzdHJ1Y3QgdGFnQ1BVRXh0ZW5kZWRGZWF0dXJlcworICB1c2luZyBDUFVFeHRlbmRlZEZlYXR1cmVzID0gc3RydWN0IHRhZ0NQVUV4dGVuZGVkRmVhdHVyZXMKKwogICB7CisKICAgICBib29sIEhhczNETm93OwotICAgIGJvb2wgSGFzM0ROb3dQbHVzOwotICAgIGJvb2wgU3VwcG9ydHNNUDsKLSAgICBib29sIEhhc01NWFBsdXM7Ci0gICAgYm9vbCBIYXNTU0VNTVg7Ci0gICAgdW5zaWduZWQgaW50IExvZ2ljYWxQcm9jZXNzb3JzUGVyUGh5c2ljYWw7Ci0gICAgaW50IEFQSUNfSUQ7Ci0gICAgQ1BVUG93ZXJNYW5hZ2VtZW50IFBvd2VyTWFuYWdlbWVudDsKLSAgfSBDUFVFeHRlbmRlZEZlYXR1cmVzOwogCi0gIHR5cGVkZWYgc3RydWN0IENQVXRhZ0ZlYXR1cmVzCisgICAgYm9vbCBIYXMzRE5vd1BsdXM7CisKKyAgICBib29sIFN1cHBvcnRzTVA7CisKKyAgICBib29sIEhhc01NWFBsdXM7CisKKyAgICBib29sIEhhc1NTRU1NWDsKKworICAgIHVuc2lnbmVkIGludCBMb2dpY2FsUHJvY2Vzc29yc1BlclBoeXNpY2FsOworCisgICAgaW50IEFQSUNfSUQ7CisKKyAgICBDUFVQb3dlck1hbmFnZW1lbnQgUG93ZXJNYW5hZ2VtZW50OworICB9OworCisgIHVzaW5nIENQVUZlYXR1cmVzID0gc3RydWN0IENQVXRhZ0ZlYXR1cmVzCisKICAgeworCiAgICAgYm9vbCBIYXNGUFU7CisKICAgICBib29sIEhhc1RTQzsKKwogICAgIGJvb2wgSGFzTU1YOworCiAgICAgYm9vbCBIYXNTU0U7CisKICAgICBib29sIEhhc1NTRUZQOworCiAgICAgYm9vbCBIYXNTU0UyOworCiAgICAgYm9vbCBIYXNJQTY0OworCiAgICAgYm9vbCBIYXNBUElDOworCiAgICAgYm9vbCBIYXNDTU9WOworCiAgICAgYm9vbCBIYXNNVFJSOworCiAgICAgYm9vbCBIYXNBQ1BJOworCiAgICAgYm9vbCBIYXNTZXJpYWw7CisKICAgICBib29sIEhhc1RoZXJtYWw7CisKICAgICBpbnQgQ1BVU3BlZWQ7CisKICAgICBpbnQgTDFDYWNoZVNpemU7CisKICAgICBpbnQgTDJDYWNoZVNpemU7CisKICAgICBpbnQgTDNDYWNoZVNpemU7CisKICAgICBDUFVFeHRlbmRlZEZlYXR1cmVzIEV4dGVuZGVkRmVhdHVyZXM7Ci0gIH0gQ1BVRmVhdHVyZXM7CisgIH07CiAKICAgZW51bSBNYW51ZmFjdHVyZXIKICAgewpAQCAtNDc2LDcgKzUxOSw3IEBACiAKICAgdm9pZCBDUFVDb3VudFdpbmRvd3MoKTsgICAgLy8gRm9yIHdpbmRvd3MKICAgdW5zaWduZWQgY2hhciBHZXRBUElDSWQoKTsgLy8gRm9yIHdpbmRvd3MKLSAgYm9vbCBJc1NNVFN1cHBvcnRlZCgpOworICBib29sIElzU01UU3VwcG9ydGVkKCkgY29uc3Q7CiAgIHN0YXRpYyBMb25nTG9uZyBHZXRDeWNsZXNEaWZmZXJlbmNlKERFTEFZX0ZVTkMsIHVuc2lnbmVkIGludCk7IC8vIEZvciB3aW5kb3dzCiAKICAgLy8gRm9yIExpbnV4IGFuZCBDeWd3aW4sIC9wcm9jL2NwdWluZm8gZm9ybWF0cyBhcmUgc2xpZ2h0bHkgZGlmZmVyZW50CkBAIC04ODUsNyArOTI4LDcgQEAKICAgICAgICAgKnBCdWYgPSAnXDAnOwogICAgICAgcEJ1ZiArPSAxOwogICAgIH0KLSAgICBsaW5lcy5wdXNoX2JhY2soYnVmKTsKKyAgICBsaW5lcy5lbXBsYWNlX2JhY2soYnVmKTsKICAgICArK25SZWFkOwogICB9CiAgIGlmIChmZXJyb3IoZmlsZSkpIHsKQEAgLTg5OSw3ICs5NDIsNyBAQAogaW50IExvYWRMaW5lcyhjb25zdCBjaGFyKiBmaWxlTmFtZSwgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBsaW5lcykKIHsKICAgRklMRSogZmlsZSA9IGZvcGVuKGZpbGVOYW1lLCAiciIpOwotICBpZiAoZmlsZSA9PSAwKSB7CisgIGlmIChmaWxlID09IG51bGxwdHIpIHsKICAgICByZXR1cm4gMDsKICAgfQogICBpbnQgblJlYWQgPSBMb2FkTGluZXMoZmlsZSwgbGluZXMpOwpAQCAtMTMyNCw3ICsxMzY3LDcgQEAKICAgaWYgKCF0aGlzLT5SZXBvcnRQYXRoKSB7CiAgICAgc2l6ZV90IGF0ID0gZmlsZS5yZmluZCgiLyIpOwogICAgIGlmIChhdCAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgICAgZmlsZSA9IGZpbGUuc3Vic3RyKGF0ICsgMSk7CisgICAgICBmaWxlLmVyYXNlKDAsIGF0ICsgMSk7CiAgICAgfQogICB9CiAgIHJldHVybiBmaWxlOwpAQCAtMTQ2NCwxMCArMTUwNyw2IEBACiAgIHRoaXMtPk9TSXM2NEJpdCA9IChzaXplb2Yodm9pZCopID09IDgpOwogfQogCi1TeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjp+U3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbigpCi17Ci19Ci0KIHZvaWQgU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6UnVuQ1BVQ2hlY2soKQogewogI2lmZGVmIF9XSU4zMgpAQCAtMTU2NCw3ICsxNjAzLDcgQEAKIH0KIAogLyoqIEdldCB0aGUgdmVuZG9yIHN0cmluZyAqLwotY29uc3QgY2hhciogU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6R2V0VmVuZG9yU3RyaW5nKCkKK2NvbnN0IGNoYXIqIFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldFZlbmRvclN0cmluZygpIGNvbnN0CiB7CiAgIHJldHVybiB0aGlzLT5DaGlwSUQuVmVuZG9yLmNfc3RyKCk7CiB9CkBAIC0xNzYwLDcgKzE3OTksNyBAQAogfQogCiAvKiogUmV0dXJuIHRoZSB0eXBlIElEIG9mIHRoZSBDUFUgKi8KLXN0ZDo6c3RyaW5nIFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldFR5cGVJRCgpCitzdGQ6OnN0cmluZyBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXRUeXBlSUQoKSBjb25zdAogewogICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RyOwogICBzdHIgPDwgdGhpcy0+Q2hpcElELlR5cGU7CkBAIC0xNzY4LDcgKzE4MDcsNyBAQAogfQogCiAvKiogUmV0dXJuIHRoZSBmYW1pbHkgb2YgdGhlIENQVSBwcmVzZW50ICovCi1zdGQ6OnN0cmluZyBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXRGYW1pbHlJRCgpCitzdGQ6OnN0cmluZyBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXRGYW1pbHlJRCgpIGNvbnN0CiB7CiAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHI7CiAgIHN0ciA8PCB0aGlzLT5DaGlwSUQuRmFtaWx5OwpAQCAtMTc3Niw3ICsxODE1LDcgQEAKIH0KIAogLy8gUmV0dXJuIHRoZSBtb2RlbCBvZiBDUFUgcHJlc2VudCAqLwotc3RkOjpzdHJpbmcgU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6R2V0TW9kZWxJRCgpCitzdGQ6OnN0cmluZyBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXRNb2RlbElEKCkgY29uc3QKIHsKICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cjsKICAgc3RyIDw8IHRoaXMtPkNoaXBJRC5Nb2RlbDsKQEAgLTE3ODQsMTMgKzE4MjMsMTMgQEAKIH0KIAogLy8gUmV0dXJuIHRoZSBtb2RlbCBuYW1lIG9mIENQVSBwcmVzZW50ICovCi1zdGQ6OnN0cmluZyBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXRNb2RlbE5hbWUoKQorc3RkOjpzdHJpbmcgU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6R2V0TW9kZWxOYW1lKCkgY29uc3QKIHsKICAgcmV0dXJuIHRoaXMtPkNoaXBJRC5Nb2RlbE5hbWU7CiB9CiAKIC8qKiBSZXR1cm4gdGhlIHN0ZXBwaW5nIGNvZGUgb2YgdGhlIENQVSBwcmVzZW50LiAqLwotc3RkOjpzdHJpbmcgU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6R2V0U3RlcHBpbmdDb2RlKCkKK3N0ZDo6c3RyaW5nIFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldFN0ZXBwaW5nQ29kZSgpIGNvbnN0CiB7CiAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHI7CiAgIHN0ciA8PCB0aGlzLT5DaGlwSUQuUmV2aXNpb247CkBAIC0xNzk4LDQ0ICsxODM3LDQ2IEBACiB9CiAKIC8qKiBSZXR1cm4gdGhlIHN0ZXBwaW5nIGNvZGUgb2YgdGhlIENQVSBwcmVzZW50LiAqLwotY29uc3QgY2hhciogU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6R2V0RXh0ZW5kZWRQcm9jZXNzb3JOYW1lKCkKK2NvbnN0IGNoYXIqIFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldEV4dGVuZGVkUHJvY2Vzc29yTmFtZSgpIGNvbnN0CiB7CiAgIHJldHVybiB0aGlzLT5DaGlwSUQuUHJvY2Vzc29yTmFtZS5jX3N0cigpOwogfQogCiAvKiogUmV0dXJuIHRoZSBzZXJpYWwgbnVtYmVyIG9mIHRoZSBwcm9jZXNzb3IKICAqICBpbiBoZXhhZGVjaW1hbDogeHh4eC14eHh4LXh4eHgteHh4eC14eHh4LXh4eHguICovCi1jb25zdCBjaGFyKiBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXRQcm9jZXNzb3JTZXJpYWxOdW1iZXIoKQorY29uc3QgY2hhciogU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6R2V0UHJvY2Vzc29yU2VyaWFsTnVtYmVyKCkgY29uc3QKIHsKICAgcmV0dXJuIHRoaXMtPkNoaXBJRC5TZXJpYWxOdW1iZXIuY19zdHIoKTsKIH0KIAogLyoqIFJldHVybiB0aGUgbG9naWNhbCBwcm9jZXNzb3JzIHBlciBwaHlzaWNhbCAqLwogdW5zaWduZWQgaW50IFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldExvZ2ljYWxQcm9jZXNzb3JzUGVyUGh5c2ljYWwoKQorICBjb25zdAogewogICByZXR1cm4gdGhpcy0+RmVhdHVyZXMuRXh0ZW5kZWRGZWF0dXJlcy5Mb2dpY2FsUHJvY2Vzc29yc1BlclBoeXNpY2FsOwogfQogCiAvKiogUmV0dXJuIHRoZSBwcm9jZXNzb3IgY2xvY2sgZnJlcXVlbmN5LiAqLwotZmxvYXQgU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6R2V0UHJvY2Vzc29yQ2xvY2tGcmVxdWVuY3koKQorZmxvYXQgU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6R2V0UHJvY2Vzc29yQ2xvY2tGcmVxdWVuY3koKSBjb25zdAogewogICByZXR1cm4gdGhpcy0+Q1BVU3BlZWRJbk1IejsKIH0KIAogLyoqICBSZXR1cm4gdGhlIEFQSUMgSUQuICovCi1pbnQgU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6R2V0UHJvY2Vzc29yQVBJQ0lEKCkKK2ludCBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXRQcm9jZXNzb3JBUElDSUQoKSBjb25zdAogewogICByZXR1cm4gdGhpcy0+RmVhdHVyZXMuRXh0ZW5kZWRGZWF0dXJlcy5BUElDX0lEOwogfQogCiAvKiogUmV0dXJuIHRoZSBMMSBjYWNoZSBzaXplLiAqLwotaW50IFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldFByb2Nlc3NvckNhY2hlU2l6ZSgpCitpbnQgU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6R2V0UHJvY2Vzc29yQ2FjaGVTaXplKCkgY29uc3QKIHsKICAgcmV0dXJuIHRoaXMtPkZlYXR1cmVzLkwxQ2FjaGVTaXplOwogfQogCiAvKiogUmV0dXJuIHRoZSBjaG9zZW4gY2FjaGUgc2l6ZS4gKi8KLWludCBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXRQcm9jZXNzb3JDYWNoZVhTaXplKGxvbmcgaW50IGR3Q2FjaGVJRCkKK2ludCBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXRQcm9jZXNzb3JDYWNoZVhTaXplKAorICBsb25nIGludCBkd0NhY2hlSUQpIGNvbnN0CiB7CiAgIHN3aXRjaCAoZHdDYWNoZUlEKSB7CiAgICAgY2FzZSBTeXN0ZW1JbmZvcm1hdGlvbjo6Q1BVX0ZFQVRVUkVfTDFDQUNIRToKQEAgLTE4NDgsNyArMTg4OSw4IEBACiAgIHJldHVybiAtMTsKIH0KIAotYm9vbCBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpEb2VzQ1BVU3VwcG9ydEZlYXR1cmUobG9uZyBpbnQgZHdGZWF0dXJlKQorYm9vbCBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpEb2VzQ1BVU3VwcG9ydEZlYXR1cmUoCisgIGxvbmcgaW50IGR3RmVhdHVyZSkgY29uc3QKIHsKICAgYm9vbCBiSGFzRmVhdHVyZSA9IGZhbHNlOwogCkBAIC0yMTI4LDcgKzIxNzAsNyBAQAogICAgIHRoaXMtPkNoaXBNYW51ZmFjdHVyZXIgPSBIUDsgLy8gSGV3bGV0dC1QYWNrYXJkCiAgIGVsc2UgaWYgKHRoaXMtPkNoaXBJRC5WZW5kb3IgPT0gIk1vdG9yb2xhIikKICAgICB0aGlzLT5DaGlwTWFudWZhY3R1cmVyID0gTW90b3JvbGE7IC8vIE1vdG9yb2xhIE1pY3JvZWxlY3Ryb25pY3MKLSAgZWxzZSBpZiAoZmFtaWx5LnN1YnN0cigwLCA3KSA9PSAiUEEtUklTQyIpCisgIGVsc2UgaWYgKGZhbWlseS5jb21wYXJlKDAsIDcsICJQQS1SSVNDIikgPT0gMCkKICAgICB0aGlzLT5DaGlwTWFudWZhY3R1cmVyID0gSFA7IC8vIEhld2xldHQtUGFja2FyZAogICBlbHNlCiAgICAgdGhpcy0+Q2hpcE1hbnVmYWN0dXJlciA9IFVua25vd25NYW51ZmFjdHVyZXI7IC8vIFVua25vd24gbWFudWZhY3R1cmVyCkBAIC0yODQzLDcgKzI4ODUsNyBAQAogICAvLyBwb3N0LXByb2Nlc3MgdGhlIG5hbWUuCiAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zID0gc3RyLmZpbmRfZmlyc3Rfbm90X29mKCIgIik7CiAgIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICBzdHIgPSBzdHIuc3Vic3RyKHBvcyk7CisgICAgc3RyLmVyYXNlKDAsIHBvcyk7CiAgIH0KIH0KICNlbmRpZgpAQCAtMzM1OCw3ICszNDAwLDkgQEAKICAgICAgICAgICByZXR1cm4gdGhpcy0+RXh0cmFjdFZhbHVlRnJvbUNwdUluZm9GaWxlKGJ1ZmZlciwgd29yZCwgcG9zMik7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIHJldHVybiBidWZmZXIuc3Vic3RyKHBvcyArIDIsIHBvczIgLSBwb3MgLSAyKTsKKyAgICAgIGJ1ZmZlci5lcmFzZSgwLCBwb3MgKyAyKTsKKyAgICAgIGJ1ZmZlci5yZXNpemUocG9zMiAtIHBvcyAtIDIpOworICAgICAgcmV0dXJuIGJ1ZmZlcjsKICAgICB9CiAgIH0KICAgdGhpcy0+Q3VycmVudFBvc2l0aW9uSW5GaWxlID0gc3RkOjpzdHJpbmc6Om5wb3M7CkBAIC0zNDA5LDcgKzM0NTMsNyBAQAogICAvLyBXZSB3YW50IHRvIHJlY29yZCB0aGUgdG90YWwgbnVtYmVyIG9mIGNvcmVzIGluIHRoaXMtPk51bWJlck9mUGh5c2ljYWxDUFUKICAgLy8gKGNoZWNraW5nIG9ubHkgdGhlIGZpcnN0IHByb2MpCiAgIHN0ZDo6c3RyaW5nIENvcmVzID0gdGhpcy0+RXh0cmFjdFZhbHVlRnJvbUNwdUluZm9GaWxlKGJ1ZmZlciwgImNwdSBjb3JlcyIpOwotICB1bnNpZ25lZCBpbnQgTnVtYmVyT2ZDb3Jlc1BlclNvY2tldCA9ICh1bnNpZ25lZCBpbnQpYXRvaShDb3Jlcy5jX3N0cigpKTsKKyAgYXV0byBOdW1iZXJPZkNvcmVzUGVyU29ja2V0ID0gKHVuc2lnbmVkIGludClhdG9pKENvcmVzLmNfc3RyKCkpOwogICBOdW1iZXJPZkNvcmVzUGVyU29ja2V0ID0gc3RkOjptYXgoTnVtYmVyT2ZDb3Jlc1BlclNvY2tldCwgMXUpOwogICB0aGlzLT5OdW1iZXJPZlBoeXNpY2FsQ1BVID0KICAgICBOdW1iZXJPZkNvcmVzUGVyU29ja2V0ICogKHVuc2lnbmVkIGludClOdW1iZXJPZlNvY2tldHM7CkBAIC0zNDQxLDcgKzM0ODUsNyBAQAogICAgIC8vIExpbnV4IFNwYXJjOiBDUFUgc3BlZWQgaXMgaW4gSHogYW5kIGVuY29kZWQgaW4gaGV4YWRlY2ltYWwKICAgICBDUFVTcGVlZCA9IHRoaXMtPkV4dHJhY3RWYWx1ZUZyb21DcHVJbmZvRmlsZShidWZmZXIsICJDcHUwQ2xrVGNrIik7CiAgICAgdGhpcy0+Q1BVU3BlZWRJbk1IeiA9Ci0gICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oc3RydG91bGwoQ1BVU3BlZWQuY19zdHIoKSwgMCwgMTYpKSAvIDEwMDAwMDAuMGY7CisgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oc3RydG91bGwoQ1BVU3BlZWQuY19zdHIoKSwgbnVsbHB0ciwgMTYpKSAvIDEwMDAwMDAuMGY7CiAgIH0KICNlbmRpZgogCkBAIC0zNTAyLDEzICszNTQ2LDEyIEBACiAgIGNhY2hlbmFtZS5wdXNoX2JhY2soIkQtY2FjaGUiKTsgICAgLy8gZS5nLiBQQS1SSVNDCiAKICAgdGhpcy0+RmVhdHVyZXMuTDFDYWNoZVNpemUgPSAwOwotICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY2FjaGVuYW1lLnNpemUoKTsgaW5kZXgrKykgewotICAgIHN0ZDo6c3RyaW5nIGNhY2hlU2l6ZSA9Ci0gICAgICB0aGlzLT5FeHRyYWN0VmFsdWVGcm9tQ3B1SW5mb0ZpbGUoYnVmZmVyLCBjYWNoZW5hbWVbaW5kZXhdKTsKKyAgZm9yIChhdXRvJiBpbmRleCA6IGNhY2hlbmFtZSkgeworICAgIHN0ZDo6c3RyaW5nIGNhY2hlU2l6ZSA9IHRoaXMtPkV4dHJhY3RWYWx1ZUZyb21DcHVJbmZvRmlsZShidWZmZXIsIGluZGV4KTsKICAgICBpZiAoIWNhY2hlU2l6ZS5lbXB0eSgpKSB7CiAgICAgICBwb3MgPSBjYWNoZVNpemUuZmluZCgiIEtCIik7CiAgICAgICBpZiAocG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgICAgIGNhY2hlU2l6ZSA9IGNhY2hlU2l6ZS5zdWJzdHIoMCwgcG9zKTsKKyAgICAgICAgY2FjaGVTaXplLnJlc2l6ZShwb3MpOwogICAgICAgfQogICAgICAgdGhpcy0+RmVhdHVyZXMuTDFDYWNoZVNpemUgKz0gYXRvaShjYWNoZVNpemUuY19zdHIoKSk7CiAgICAgfQpAQCAtNDI0OSwyNCArNDI5MiwyNCBAQAogfQogCiAvKiogKi8KLXNpemVfdCBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXRUb3RhbFZpcnR1YWxNZW1vcnkoKQorc2l6ZV90IFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldFRvdGFsVmlydHVhbE1lbW9yeSgpIGNvbnN0CiB7CiAgIHJldHVybiB0aGlzLT5Ub3RhbFZpcnR1YWxNZW1vcnk7CiB9CiAKIC8qKiAqLwotc2l6ZV90IFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldEF2YWlsYWJsZVZpcnR1YWxNZW1vcnkoKQorc2l6ZV90IFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldEF2YWlsYWJsZVZpcnR1YWxNZW1vcnkoKSBjb25zdAogewogICByZXR1cm4gdGhpcy0+QXZhaWxhYmxlVmlydHVhbE1lbW9yeTsKIH0KIAotc2l6ZV90IFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldFRvdGFsUGh5c2ljYWxNZW1vcnkoKQorc2l6ZV90IFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldFRvdGFsUGh5c2ljYWxNZW1vcnkoKSBjb25zdAogewogICByZXR1cm4gdGhpcy0+VG90YWxQaHlzaWNhbE1lbW9yeTsKIH0KIAogLyoqICovCi1zaXplX3QgU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6R2V0QXZhaWxhYmxlUGh5c2ljYWxNZW1vcnkoKQorc2l6ZV90IFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldEF2YWlsYWJsZVBoeXNpY2FsTWVtb3J5KCkgY29uc3QKIHsKICAgcmV0dXJuIHRoaXMtPkF2YWlsYWJsZVBoeXNpY2FsTWVtb3J5OwogfQpAQCAtNDM1MCw3ICs0MzkzLDcgQEAKIH0KIAogLyoqIFdvcmtzIG9ubHkgZm9yIHdpbmRvd3MgKi8KLWJvb2wgU3lzdGVtSW5mb3JtYXRpb25JbXBsZW1lbnRhdGlvbjo6SXNTTVRTdXBwb3J0ZWQoKQorYm9vbCBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpJc1NNVFN1cHBvcnRlZCgpIGNvbnN0CiB7CiAgIHJldHVybiB0aGlzLT5GZWF0dXJlcy5FeHRlbmRlZEZlYXR1cmVzLkxvZ2ljYWxQcm9jZXNzb3JzUGVyUGh5c2ljYWwgPiAxOwogfQpAQCAtNDQzMiwxMyArNDQ3NSwxMyBAQAogfQogCiAvKiogUmV0dXJuIHRoZSBudW1iZXIgb2YgbG9naWNhbCBDUFVzIG9uIHRoZSBzeXN0ZW0gKi8KLXVuc2lnbmVkIGludCBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXROdW1iZXJPZkxvZ2ljYWxDUFUoKQordW5zaWduZWQgaW50IFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OkdldE51bWJlck9mTG9naWNhbENQVSgpIGNvbnN0CiB7CiAgIHJldHVybiB0aGlzLT5OdW1iZXJPZkxvZ2ljYWxDUFU7CiB9CiAKIC8qKiBSZXR1cm4gdGhlIG51bWJlciBvZiBwaHlzaWNhbCBDUFVzIG9uIHRoZSBzeXN0ZW0gKi8KLXVuc2lnbmVkIGludCBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXROdW1iZXJPZlBoeXNpY2FsQ1BVKCkKK3Vuc2lnbmVkIGludCBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpHZXROdW1iZXJPZlBoeXNpY2FsQ1BVKCkgY29uc3QKIHsKICAgcmV0dXJuIHRoaXMtPk51bWJlck9mUGh5c2ljYWxDUFU7CiB9CkBAIC00NzMzLDE0ICs0Nzc2LDE1IEBACiAgICAgfQogICAgIHBvcyA9IGNvbW1hbmQuZmluZCgnICcsIHBvcyArIDEpOwogICB9Ci0gIGFyZ3Nfc3RyaW5nLnB1c2hfYmFjayhjb21tYW5kLnN1YnN0cihzdGFydCArIDEsIGNvbW1hbmQuc2l6ZSgpIC0gc3RhcnQgLSAxKSk7CisgIGNvbW1hbmQuZXJhc2UoMCwgc3RhcnQgKyAxKTsKKyAgYXJnc19zdHJpbmcucHVzaF9iYWNrKGNvbW1hbmQpOwogCiAgIHN0ZDo6dmVjdG9yPGNvbnN0IGNoYXIqPiBhcmdzOwogICBhcmdzLnJlc2VydmUoMyArIGFyZ3Nfc3RyaW5nLnNpemUoKSk7CiAgIGFyZ3MucHVzaF9iYWNrKCJrc3RhdCIpOwogICBhcmdzLnB1c2hfYmFjaygiLXAiKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzX3N0cmluZy5zaXplKCk7ICsraSkgewotICAgIGFyZ3MucHVzaF9iYWNrKGFyZ3Nfc3RyaW5nW2ldLmNfc3RyKCkpOworICBmb3IgKGF1dG8mIGkgOiBhcmdzX3N0cmluZykgeworICAgIGFyZ3MucHVzaF9iYWNrKGkuY19zdHIoKSk7CiAgIH0KICAgYXJncy5wdXNoX2JhY2sobnVsbHB0cik7CiAKQEAgLTQ5MjIsNyArNDk2Niw5IEBACiAgIHdoaWxlIChidWZmZXJbcG9zXSA9PSAnICcpCiAgICAgcG9zKys7CiAKLSAgdGhpcy0+VG90YWxQaHlzaWNhbE1lbW9yeSA9IGF0b2koYnVmZmVyLnN1YnN0cihwb3MsIHBvczIgLSBwb3MpLmNfc3RyKCkpOworICBidWZmZXIuZXJhc2UoMCwgcG9zKTsKKyAgYnVmZmVyLnJlc2l6ZShwb3MyKTsKKyAgdGhpcy0+VG90YWxQaHlzaWNhbE1lbW9yeSA9IGF0b2koYnVmZmVyLmNfc3RyKCkpOwogICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICByZXR1cm4gZmFsc2U7CkBAIC01NDU5LDcgKzU1MDUsNyBAQAogfQogCiAvKiogUmV0dXJuIHRydWUgaWYgdGhlIG1hY2hpbmUgaXMgNjQgYml0cyAqLwotYm9vbCBTeXN0ZW1JbmZvcm1hdGlvbkltcGxlbWVudGF0aW9uOjpJczY0Qml0cygpCitib29sIFN5c3RlbUluZm9ybWF0aW9uSW1wbGVtZW50YXRpb246OklzNjRCaXRzKCkgY29uc3QKIHsKICAgcmV0dXJuIHRoaXMtPk9TSXM2NEJpdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9rd3N5cy9TeXN0ZW1Ub29scy5jeHggYi9Tb3VyY2Uva3dzeXMvU3lzdGVtVG9vbHMuY3h4CmluZGV4IGQyNzA4MWIuLmUwNzNjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9rd3N5cy9TeXN0ZW1Ub29scy5jeHgKKysrIGIvU291cmNlL2t3c3lzL1N5c3RlbVRvb2xzLmN4eApAQCAtMTIzLDkgKzEyMyw5IEBACiAKICNkZWZpbmUgVlRLX1VSTF9QUk9UT0NPTF9SRUdFWCAiKFthLXpBLVowLTldKik6Ly8oLiopIgogI2RlZmluZSBWVEtfVVJMX1JFR0VYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAiKFthLXpBLVowLTldKik6Ly8oKFtBLVphLXowLTldKykoOihbXjpAXSspKT9AKT8oW146QC9dKykoOihbMC05XSspKT8vIiAgICAgXAorICAiKFthLXpBLVowLTldKik6Ly8oKFtBLVphLXowLTldKykoOihbXjpAXSspKT9AKT8oW146QC9dKikoOihbMC05XSspKT8vIiAgICAgXAogICAiKC4rKT8iCi0KKyNkZWZpbmUgVlRLX1VSTF9CWVRFX1JFR0VYICIlWzAtOWEtZkEtRl1bMC05YS1mQS1GXSIKICNpZmRlZiBfTVNDX1ZFUgogIyAgaW5jbHVkZSA8c3lzL3V0aW1lLmg+CiAjZWxzZQpAQCAtMjIxLDExICsyMjEsMTcgQEAKIAogI2lmZGVmIEtXU1lTX1dJTkRPV1NfRElSUwogIyAgaW5jbHVkZSA8d2N0eXBlLmg+CisjICBpZmRlZiBfTVNDX1ZFUgordHlwZWRlZiBLV1NZU19OQU1FU1BBQ0U6OlN5c3RlbVRvb2xzOjptb2RlX3QgbW9kZV90OworIyAgZW5kaWYKIAotaW5saW5lIGludCBNa2Rpcihjb25zdCBzdGQ6OnN0cmluZyYgZGlyKQoraW5saW5lIGludCBNa2Rpcihjb25zdCBzdGQ6OnN0cmluZyYgZGlyLCBjb25zdCBtb2RlX3QqIG1vZGUpCiB7Ci0gIHJldHVybiBfd21rZGlyKAotICAgIEtXU1lTX05BTUVTUEFDRTo6RW5jb2Rpbmc6OlRvV2luZG93c0V4dGVuZGVkUGF0aChkaXIpLmNfc3RyKCkpOworICBpbnQgcmV0ID0KKyAgICBfd21rZGlyKEtXU1lTX05BTUVTUEFDRTo6RW5jb2Rpbmc6OlRvV2luZG93c0V4dGVuZGVkUGF0aChkaXIpLmNfc3RyKCkpOworICBpZiAocmV0ID09IDAgJiYgbW9kZSkKKyAgICBLV1NZU19OQU1FU1BBQ0U6OlN5c3RlbVRvb2xzOjpTZXRQZXJtaXNzaW9ucyhkaXIsICptb2RlKTsKKyAgcmV0dXJuIHJldDsKIH0KIGlubGluZSBpbnQgUm1kaXIoY29uc3Qgc3RkOjpzdHJpbmcmIGRpcikKIHsKQEAgLTI5NSw5ICszMDEsOSBAQAogCiAjICBpbmNsdWRlIDxmY250bC5oPgogIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci1pbmxpbmUgaW50IE1rZGlyKGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXIpCitpbmxpbmUgaW50IE1rZGlyKGNvbnN0IHN0ZDo6c3RyaW5nJiBkaXIsIGNvbnN0IG1vZGVfdCogbW9kZSkKIHsKLSAgcmV0dXJuIG1rZGlyKGRpci5jX3N0cigpLCAwMDc3Nyk7CisgIHJldHVybiBta2RpcihkaXIuY19zdHIoKSwgbW9kZSA/ICptb2RlIDogMDA3NzcpOwogfQogaW5saW5lIGludCBSbWRpcihjb25zdCBzdGQ6OnN0cmluZyYgZGlyKQogewpAQCAtMzUwLDcgKzM1Niw3IEBACiAKIG5hbWVzcGFjZSBLV1NZU19OQU1FU1BBQ0UgewogCi1kb3VibGUgU3lzdGVtVG9vbHM6OkdldFRpbWUodm9pZCkKK2RvdWJsZSBTeXN0ZW1Ub29sczo6R2V0VGltZSgpCiB7CiAjaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCiAgIEZJTEVUSU1FIGZ0OwpAQCAtMzY4LDcgKzM3NCw3IEBACiAjaWYgZGVmaW5lZChfV0lOMzIpCiB0eXBlZGVmIHdjaGFyX3QgZW52Y2hhcjsKICNlbHNlCi10eXBlZGVmIGNoYXIgZW52Y2hhcjsKK3VzaW5nIGVudmNoYXIgPSBjaGFyOwogI2VuZGlmCiAKIC8qIE9yZGVyIGJ5IGVudmlyb25tZW50IGtleSBvbmx5IChWQVIgZnJvbSBWQVI9VkFMVUUpLiAgKi8KQEAgLTQyMSw3ICs0MjcsNyBAQAogICBjb25zdCBlbnZjaGFyKiBSZWxlYXNlKGNvbnN0IGVudmNoYXIqIGVudikKICAgewogICAgIGNvbnN0IGVudmNoYXIqIG9sZCA9IG51bGxwdHI7Ci0gICAgaXRlcmF0b3IgaSA9IHRoaXMtPmZpbmQoZW52KTsKKyAgICBhdXRvIGkgPSB0aGlzLT5maW5kKGVudik7CiAgICAgaWYgKGkgIT0gdGhpcy0+ZW5kKCkpIHsKICAgICAgIG9sZCA9ICppOwogICAgICAgdGhpcy0+ZXJhc2UoaSk7CkBAIC00NTIsNyArNDU4LDcgQEAKIGNsYXNzIFN5c3RlbVRvb2xzU3RhdGljCiB7CiBwdWJsaWM6Ci0gIHR5cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBTdHJpbmdNYXA7CisgIHVzaW5nIFN0cmluZ01hcCA9IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz47CiAjaWYgS1dTWVNfU1lTVEVNVE9PTFNfVVNFX1RSQU5TTEFUSU9OX01BUAogICAvKioKICAgICogUGF0aCB0cmFuc2xhdGlvbiB0YWJsZSBmcm9tIGRpciB0byByZWZkaXIKQEAgLTQ4OCw3ICs0OTQsNyBAQAogICAgKi8KICAgc3RhdGljIHN0ZDo6c3RyaW5nIEZpbmROYW1lKAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcGF0aCA9IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdXNlclBhdGhzID0gc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCksCiAgICAgYm9vbCBub19zeXN0ZW1fcGF0aCA9IGZhbHNlKTsKIH07CiAKQEAgLTYxMyw4ICs2MTksNyBAQAogICAgICAgZG9uZSA9IHRydWU7CiAgICAgfQogICB9Ci0gIGZvciAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+OjppdGVyYXRvciBpID0gcGF0aC5iZWdpbigpICsgb2xkX3NpemU7Ci0gICAgICAgaSAhPSBwYXRoLmVuZCgpOyArK2kpIHsKKyAgZm9yIChhdXRvIGkgPSBwYXRoLmJlZ2luKCkgKyBvbGRfc2l6ZTsgaSAhPSBwYXRoLmVuZCgpOyArK2kpIHsKICAgICBTeXN0ZW1Ub29sczo6Q29udmVydFRvVW5peFNsYXNoZXMoKmkpOwogICB9CiB9CkBAIC05MTMsMTYgKzkxOCwxNyBAQAogICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IDA7CiAgIHN0ZDo6c3RyaW5nIHRvcGRpcjsKICAgd2hpbGUgKChwb3MgPSBkaXIuZmluZCgnLycsIHBvcykpICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgdG9wZGlyID0gZGlyLnN1YnN0cigwLCBwb3MpOworICAgIC8vIGFsbCB1bmRlcmx5aW5nIGZ1bmN0aW9ucyB1c2UgQyBzdHJpbmdzLCBzbyB0ZW1wb3JhcmlseQorICAgIC8vIGVuZCB0aGUgc3RyaW5nIGhlcmUKKyAgICBkaXJbcG9zXSA9ICdcMCc7CiAKLSAgICBpZiAoTWtkaXIodG9wZGlyKSA9PSAwICYmIG1vZGUgIT0gbnVsbHB0cikgewotICAgICAgU3lzdGVtVG9vbHM6OlNldFBlcm1pc3Npb25zKHRvcGRpciwgKm1vZGUpOwotICAgIH0KKyAgICBNa2RpcihkaXIsIG1vZGUpOworICAgIGRpcltwb3NdID0gJy8nOwogCiAgICAgKytwb3M7CiAgIH0KICAgdG9wZGlyID0gZGlyOwotICBpZiAoTWtkaXIodG9wZGlyKSAhPSAwKSB7CisgIGlmIChNa2Rpcih0b3BkaXIsIG1vZGUpICE9IDApIHsKICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiB0aGUgQm9ybGFuZCBSdW4gdGltZSBsaWJyYXJ5IHdoaWNoIG1ha2VzIE1LRElSCiAgICAgLy8gcmV0dXJuIEVBQ0NFUyB3aGVuIGl0IHNob3VsZCByZXR1cm4gRUVYSVNUUwogICAgIC8vIGlmIGl0IGlzIHNvbWUgb3RoZXIgZXJyb3IgYmVzaWRlcyBkaXJlY3RvcnkgZXhpc3RzCkBAIC05MzQsOCArOTQwLDYgQEAKICAgICApIHsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gIH0gZWxzZSBpZiAobW9kZSAhPSBudWxscHRyKSB7Ci0gICAgU3lzdGVtVG9vbHM6OlNldFBlcm1pc3Npb25zKHRvcGRpciwgKm1vZGUpOwogICB9CiAKICAgcmV0dXJuIHRydWU7CkBAIC0xMDExLDM4ICsxMDE1LDQwIEBACiAjICAgIGRlZmluZSBLV1NZU19TVF9LRVlfV09XNjRfNjRLRVkgMHgwMTAwCiAjICBlbmRpZgogCi1zdGF0aWMgYm9vbCBTeXN0ZW1Ub29sc1BhcnNlUmVnaXN0cnlLZXkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIS0VZJiBwcmltYXJ5S2V5LCBzdGQ6OnN0cmluZyYgc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiB2YWx1ZW5hbWUpCitzdGF0aWMgYm9vbCBoYXNQcmVmaXgoY29uc3Qgc3RkOjpzdHJpbmcmIHMsIGNvbnN0IGNoYXIqIHBhdHRlcm4sCisgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzcG9zKQogewotICBzdGQ6OnN0cmluZyBwcmltYXJ5ID0ga2V5OworICBzaXplX3QgcGxlbiA9IHN0cmxlbihwYXR0ZXJuKTsKKyAgaWYgKHNwb3MgIT0gcGxlbikKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiBzLmNvbXBhcmUoMCwgcGxlbiwgcGF0dGVybikgPT0gMDsKK30KIAotICBzaXplX3Qgc3RhcnQgPSBwcmltYXJ5LmZpbmQoJ1xcJyk7CitzdGF0aWMgYm9vbCBTeXN0ZW1Ub29sc1BhcnNlUmVnaXN0cnlLZXkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIS0VZJiBwcmltYXJ5S2V5LCBzdGQ6OndzdHJpbmcmIHNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogdmFsdWVuYW1lKQoreworICBzaXplX3Qgc3RhcnQgPSBrZXkuZmluZCgnXFwnKTsKICAgaWYgKHN0YXJ0ID09IHN0ZDo6c3RyaW5nOjpucG9zKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKLSAgc2l6ZV90IHZhbHVlbmFtZXBvcyA9IHByaW1hcnkuZmluZCgnOycpOwotICBpZiAodmFsdWVuYW1lcG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgdmFsdWVuYW1lID0gcHJpbWFyeS5zdWJzdHIodmFsdWVuYW1lcG9zICsgMSk7CisgIHNpemVfdCB2YWx1ZW5hbWVwb3MgPSBrZXkuZmluZCgnOycpOworICBpZiAodmFsdWVuYW1lcG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zICYmIHZhbHVlbmFtZSkgeworICAgICp2YWx1ZW5hbWUgPSBrZXkuc3Vic3RyKHZhbHVlbmFtZXBvcyArIDEpOwogICB9CiAKLSAgc2Vjb25kID0gcHJpbWFyeS5zdWJzdHIoc3RhcnQgKyAxLCB2YWx1ZW5hbWVwb3MgLSBzdGFydCAtIDEpOwotICBwcmltYXJ5ID0gcHJpbWFyeS5zdWJzdHIoMCwgc3RhcnQpOworICBzZWNvbmQgPSBFbmNvZGluZzo6VG9XaWRlKGtleS5zdWJzdHIoc3RhcnQgKyAxLCB2YWx1ZW5hbWVwb3MgLSBzdGFydCAtIDEpKTsKIAotICBpZiAocHJpbWFyeSA9PSAiSEtFWV9DVVJSRU5UX1VTRVIiKSB7CisgIGlmIChoYXNQcmVmaXgoa2V5LCAiSEtFWV9DVVJSRU5UX1VTRVIiLCBzdGFydCkpIHsKICAgICBwcmltYXJ5S2V5ID0gSEtFWV9DVVJSRU5UX1VTRVI7Ci0gIH0KLSAgaWYgKHByaW1hcnkgPT0gIkhLRVlfQ1VSUkVOVF9DT05GSUciKSB7CisgIH0gZWxzZSBpZiAoaGFzUHJlZml4KGtleSwgIkhLRVlfQ1VSUkVOVF9DT05GSUciLCBzdGFydCkpIHsKICAgICBwcmltYXJ5S2V5ID0gSEtFWV9DVVJSRU5UX0NPTkZJRzsKLSAgfQotICBpZiAocHJpbWFyeSA9PSAiSEtFWV9DTEFTU0VTX1JPT1QiKSB7CisgIH0gZWxzZSBpZiAoaGFzUHJlZml4KGtleSwgIkhLRVlfQ0xBU1NFU19ST09UIiwgc3RhcnQpKSB7CiAgICAgcHJpbWFyeUtleSA9IEhLRVlfQ0xBU1NFU19ST09UOwotICB9Ci0gIGlmIChwcmltYXJ5ID09ICJIS0VZX0xPQ0FMX01BQ0hJTkUiKSB7CisgIH0gZWxzZSBpZiAoaGFzUHJlZml4KGtleSwgIkhLRVlfTE9DQUxfTUFDSElORSIsIHN0YXJ0KSkgewogICAgIHByaW1hcnlLZXkgPSBIS0VZX0xPQ0FMX01BQ0hJTkU7Ci0gIH0KLSAgaWYgKHByaW1hcnkgPT0gIkhLRVlfVVNFUlMiKSB7CisgIH0gZWxzZSBpZiAoaGFzUHJlZml4KGtleSwgIkhLRVlfVVNFUlMiLCBzdGFydCkpIHsKICAgICBwcmltYXJ5S2V5ID0gSEtFWV9VU0VSUzsKICAgfQogCkBAIC0xMDc0LDE0ICsxMDgwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5V09XNjQgdmlldykKIHsKICAgSEtFWSBwcmltYXJ5S2V5ID0gSEtFWV9DVVJSRU5UX1VTRVI7Ci0gIHN0ZDo6c3RyaW5nIHNlY29uZDsKLSAgc3RkOjpzdHJpbmcgdmFsdWVuYW1lOwotICBpZiAoIVN5c3RlbVRvb2xzUGFyc2VSZWdpc3RyeUtleShrZXksIHByaW1hcnlLZXksIHNlY29uZCwgdmFsdWVuYW1lKSkgeworICBzdGQ6OndzdHJpbmcgc2Vjb25kOworICBpZiAoIVN5c3RlbVRvb2xzUGFyc2VSZWdpc3RyeUtleShrZXksIHByaW1hcnlLZXksIHNlY29uZCwgbnVsbHB0cikpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAogICBIS0VZIGhLZXk7Ci0gIGlmIChSZWdPcGVuS2V5RXhXKHByaW1hcnlLZXksIEVuY29kaW5nOjpUb1dpZGUoc2Vjb25kKS5jX3N0cigpLCAwLAorICBpZiAoUmVnT3BlbktleUV4VyhwcmltYXJ5S2V5LCBzZWNvbmQuY19zdHIoKSwgMCwKICAgICAgICAgICAgICAgICAgICAgU3lzdGVtVG9vbHNNYWtlUmVnaXN0cnlNb2RlKEtFWV9SRUFELCB2aWV3KSwKICAgICAgICAgICAgICAgICAgICAgJmhLZXkpICE9IEVSUk9SX1NVQ0NFU1MpIHsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTIxLDE0ICsxMTI2LDE0IEBACiB7CiAgIGJvb2wgdmFsdWVzZXQgPSBmYWxzZTsKICAgSEtFWSBwcmltYXJ5S2V5ID0gSEtFWV9DVVJSRU5UX1VTRVI7Ci0gIHN0ZDo6c3RyaW5nIHNlY29uZDsKKyAgc3RkOjp3c3RyaW5nIHNlY29uZDsKICAgc3RkOjpzdHJpbmcgdmFsdWVuYW1lOwotICBpZiAoIVN5c3RlbVRvb2xzUGFyc2VSZWdpc3RyeUtleShrZXksIHByaW1hcnlLZXksIHNlY29uZCwgdmFsdWVuYW1lKSkgeworICBpZiAoIVN5c3RlbVRvb2xzUGFyc2VSZWdpc3RyeUtleShrZXksIHByaW1hcnlLZXksIHNlY29uZCwgJnZhbHVlbmFtZSkpIHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAogICBIS0VZIGhLZXk7Ci0gIGlmIChSZWdPcGVuS2V5RXhXKHByaW1hcnlLZXksIEVuY29kaW5nOjpUb1dpZGUoc2Vjb25kKS5jX3N0cigpLCAwLAorICBpZiAoUmVnT3BlbktleUV4VyhwcmltYXJ5S2V5LCBzZWNvbmQuY19zdHIoKSwgMCwKICAgICAgICAgICAgICAgICAgICAgU3lzdGVtVG9vbHNNYWtlUmVnaXN0cnlNb2RlKEtFWV9SRUFELCB2aWV3KSwKICAgICAgICAgICAgICAgICAgICAgJmhLZXkpICE9IEVSUk9SX1NVQ0NFU1MpIHsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc1LDE2ICsxMTgwLDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLCBLZXlXT1c2NCB2aWV3KQogewogICBIS0VZIHByaW1hcnlLZXkgPSBIS0VZX0NVUlJFTlRfVVNFUjsKLSAgc3RkOjpzdHJpbmcgc2Vjb25kOworICBzdGQ6OndzdHJpbmcgc2Vjb25kOwogICBzdGQ6OnN0cmluZyB2YWx1ZW5hbWU7Ci0gIGlmICghU3lzdGVtVG9vbHNQYXJzZVJlZ2lzdHJ5S2V5KGtleSwgcHJpbWFyeUtleSwgc2Vjb25kLCB2YWx1ZW5hbWUpKSB7CisgIGlmICghU3lzdGVtVG9vbHNQYXJzZVJlZ2lzdHJ5S2V5KGtleSwgcHJpbWFyeUtleSwgc2Vjb25kLCAmdmFsdWVuYW1lKSkgewogICAgIHJldHVybiBmYWxzZTsKICAgfQogCiAgIEhLRVkgaEtleTsKICAgRFdPUkQgZHdEdW1teTsKICAgd2NoYXJfdCBscENsYXNzW10gPSBMIiI7Ci0gIGlmIChSZWdDcmVhdGVLZXlFeFcocHJpbWFyeUtleSwgRW5jb2Rpbmc6OlRvV2lkZShzZWNvbmQpLmNfc3RyKCksIDAsIGxwQ2xhc3MsCisgIGlmIChSZWdDcmVhdGVLZXlFeFcocHJpbWFyeUtleSwgc2Vjb25kLmNfc3RyKCksIDAsIGxwQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgUkVHX09QVElPTl9OT05fVk9MQVRJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtVG9vbHNNYWtlUmVnaXN0cnlNb2RlKEtFWV9XUklURSwgdmlldyksIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgJmhLZXksICZkd0R1bW15KSAhPSBFUlJPUl9TVUNDRVNTKSB7CkBAIC0xMjE5LDE0ICsxMjI0LDE0IEBACiBib29sIFN5c3RlbVRvb2xzOjpEZWxldGVSZWdpc3RyeVZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIEtleVdPVzY0IHZpZXcpCiB7CiAgIEhLRVkgcHJpbWFyeUtleSA9IEhLRVlfQ1VSUkVOVF9VU0VSOwotICBzdGQ6OnN0cmluZyBzZWNvbmQ7CisgIHN0ZDo6d3N0cmluZyBzZWNvbmQ7CiAgIHN0ZDo6c3RyaW5nIHZhbHVlbmFtZTsKLSAgaWYgKCFTeXN0ZW1Ub29sc1BhcnNlUmVnaXN0cnlLZXkoa2V5LCBwcmltYXJ5S2V5LCBzZWNvbmQsIHZhbHVlbmFtZSkpIHsKKyAgaWYgKCFTeXN0ZW1Ub29sc1BhcnNlUmVnaXN0cnlLZXkoa2V5LCBwcmltYXJ5S2V5LCBzZWNvbmQsICZ2YWx1ZW5hbWUpKSB7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKICAgSEtFWSBoS2V5OwotICBpZiAoUmVnT3BlbktleUV4VyhwcmltYXJ5S2V5LCBFbmNvZGluZzo6VG9XaWRlKHNlY29uZCkuY19zdHIoKSwgMCwKKyAgaWYgKFJlZ09wZW5LZXlFeFcocHJpbWFyeUtleSwgc2Vjb25kLmNfc3RyKCksIDAsCiAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVRvb2xzTWFrZVJlZ2lzdHJ5TW9kZShLRVlfV1JJVEUsIHZpZXcpLAogICAgICAgICAgICAgICAgICAgICAmaEtleSkgIT0gRVJST1JfU1VDQ0VTUykgewogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4NTgsNyArMTg2Myw3IEBACiAvLyBSZXR1cm4gYSBjcm9wcGVkIHN0cmluZwogc3RkOjpzdHJpbmcgU3lzdGVtVG9vbHM6OkNyb3BTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHMsIHNpemVfdCBtYXhfbGVuKQogewotICBpZiAoIXMuc2l6ZSgpIHx8IG1heF9sZW4gPT0gMCB8fCBtYXhfbGVuID49IHMuc2l6ZSgpKSB7CisgIGlmIChzLmVtcHR5KCkgfHwgbWF4X2xlbiA9PSAwIHx8IG1heF9sZW4gPj0gcy5zaXplKCkpIHsKICAgICByZXR1cm4gczsKICAgfQogCkBAIC0xODY3LDcgKzE4NzIsNyBAQAogCiAgIHNpemVfdCBtaWRkbGUgPSBtYXhfbGVuIC8gMjsKIAotICBuICs9IHMuc3Vic3RyKDAsIG1pZGRsZSk7CisgIG4uYXNzaWduKHMsIDAsIG1pZGRsZSk7CiAgIG4gKz0gcy5zdWJzdHIocy5zaXplKCkgLSAobWF4X2xlbiAtIG1pZGRsZSkpOwogCiAgIGlmIChtYXhfbGVuID4gMikgewpAQCAtMTg5Myw3ICsxODk4LDcgQEAKICAgfQogICBpZiAoaXNQYXRoICYmIHBhdGhbMF0gPT0gJy8nKSB7CiAgICAgcGF0aC5lcmFzZShwYXRoLmJlZ2luKCkpOwotICAgIHBhdGhzLnB1c2hfYmFjaygiLyIpOworICAgIHBhdGhzLmVtcGxhY2VfYmFjaygiLyIpOwogICB9CiAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zMSA9IDA7CiAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zMiA9IHBhdGguZmluZChzZXAsIHBvczEgKyAxKTsKQEAgLTIwNjUsOCArMjA3MCwxMCBAQAogI2lmZGVmIEhBVkVfR0VUUFdOQU0KICAgZWxzZSBpZiAocGF0aENTdHJpbmdbMF0gPT0gJ34nKSB7CiAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBpZHggPSBwYXRoLmZpbmRfZmlyc3Rfb2YoIi9cMCIpOwotICAgIHN0ZDo6c3RyaW5nIHVzZXIgPSBwYXRoLnN1YnN0cigxLCBpZHggLSAxKTsKLSAgICBwYXNzd2QqIHB3ID0gZ2V0cHduYW0odXNlci5jX3N0cigpKTsKKyAgICBjaGFyIG9sZGNoID0gcGF0aFtpZHhdOworICAgIHBhdGhbaWR4XSA9ICdcMCc7CisgICAgcGFzc3dkKiBwdyA9IGdldHB3bmFtKHBhdGguY19zdHIoKSArIDEpOworICAgIHBhdGhbaWR4XSA9IG9sZGNoOwogICAgIGlmIChwdykgewogICAgICAgcGF0aC5yZXBsYWNlKDAsIGlkeCwgcHctPnB3X2Rpcik7CiAgICAgfQpAQCAtMzEzMiwxNyArMzEzOSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyYgZGlyLCBzdGQ6OnN0cmluZyYgZmlsZSwgYm9vbCkKIHsKICAgZGlyID0gaW5fbmFtZTsKLSAgZmlsZSA9ICIiOworICBmaWxlLmNsZWFyKCk7CiAgIFN5c3RlbVRvb2xzOjpDb252ZXJ0VG9Vbml4U2xhc2hlcyhkaXIpOwogCiAgIGlmICghU3lzdGVtVG9vbHM6OkZpbGVJc0RpcmVjdG9yeShkaXIpKSB7CiAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzbGFzaFBvcyA9IGRpci5yZmluZCgiLyIpOwogICAgIGlmIChzbGFzaFBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewogICAgICAgZmlsZSA9IGRpci5zdWJzdHIoc2xhc2hQb3MgKyAxKTsKLSAgICAgIGRpciA9IGRpci5zdWJzdHIoMCwgc2xhc2hQb3MpOworICAgICAgZGlyLnJlc2l6ZShzbGFzaFBvcyk7CiAgICAgfSBlbHNlIHsKICAgICAgIGZpbGUgPSBkaXI7Ci0gICAgICBkaXIgPSAiIjsKKyAgICAgIGRpci5jbGVhcigpOwogICAgIH0KICAgfQogICBpZiAoIShkaXIuZW1wdHkoKSkgJiYgIVN5c3RlbVRvb2xzOjpGaWxlSXNEaXJlY3RvcnkoZGlyKSkgewpAQCAtMzI2OSw3ICszMjc2LDcgQEAKICAgLy8gTm93IGNvbnZlcnQgYW55IHBhdGggZm91bmQgaW4gdGhlIHRhYmxlIGJhY2sgdG8gdGhlIG9uZSBkZXNpcmVkOgogICBmb3IgKGF1dG8gY29uc3QmIHBhaXIgOiBTeXN0ZW1Ub29sczo6U3RhdGljcy0+VHJhbnNsYXRpb25NYXApIHsKICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIG9mIHRoZSBwYXRoIGlzIGEgc3Vic3RyaW5nIG9mIHRoZSBvdGhlciBwYXRoCi0gICAgaWYgKHBhdGguZmluZChwYWlyLmZpcnN0KSA9PSAwKSB7CisgICAgaWYgKHBhdGguY29tcGFyZSgwLCBwYWlyLmZpcnN0LnNpemUoKSwgcGFpci5maXJzdCkgPT0gMCkgewogICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgwLCBwYWlyLmZpcnN0LnNpemUoKSwgcGFpci5zZWNvbmQpOwogICAgIH0KICAgfQpAQCAtMzU0MSw3ICszNTQ4LDcgQEAKICAgICAvLyBFeHBhbmQgaG9tZSBkaXJlY3RvcnkgcmVmZXJlbmNlcyBpZiByZXF1ZXN0ZWQuCiAgICAgaWYgKGV4cGFuZF9ob21lX2RpciAmJiAhcm9vdC5lbXB0eSgpICYmIHJvb3RbMF0gPT0gJ34nKSB7CiAgICAgICBzdGQ6OnN0cmluZyBob21lZGlyOwotICAgICAgcm9vdCA9IHJvb3Quc3Vic3RyKDAsIHJvb3Quc2l6ZSgpIC0gMSk7CisgICAgICByb290LnJlc2l6ZShyb290LnNpemUoKSAtIDEpOwogICAgICAgaWYgKHJvb3Quc2l6ZSgpID09IDEpIHsKICNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19DWUdXSU5fXykKICAgICAgICAgaWYgKCFTeXN0ZW1Ub29sczo6R2V0RW52KCJVU0VSUFJPRklMRSIsIGhvbWVkaXIpKQpAQCAtMzU3MSwxNCArMzU3OCwxNCBAQAogICBmb3IgKDsgKmxhc3Q7ICsrbGFzdCkgewogICAgIGlmICgqbGFzdCA9PSAnLycgfHwgKmxhc3QgPT0gJ1xcJykgewogICAgICAgLy8gRW5kIG9mIGEgY29tcG9uZW50LiAgU2F2ZSBpdC4KLSAgICAgIGNvbXBvbmVudHMucHVzaF9iYWNrKHN0ZDo6c3RyaW5nKGZpcnN0LCBsYXN0KSk7CisgICAgICBjb21wb25lbnRzLmVtcGxhY2VfYmFjayhmaXJzdCwgbGFzdCk7CiAgICAgICBmaXJzdCA9IGxhc3QgKyAxOwogICAgIH0KICAgfQogCiAgIC8vIFNhdmUgdGhlIGxhc3QgY29tcG9uZW50IHVubGVzcyB0aGVyZSB3ZXJlIG5vIGNvbXBvbmVudHMuCiAgIGlmIChsYXN0ICE9IGMpIHsKLSAgICBjb21wb25lbnRzLnB1c2hfYmFjayhzdGQ6OnN0cmluZyhmaXJzdCwgbGFzdCkpOworICAgIGNvbXBvbmVudHMuZW1wbGFjZV9iYWNrKGZpcnN0LCBsYXN0KTsKICAgfQogfQogCkBAIC0zNTk0LDcgKzM2MDEsNyBAQAogICAvLyBDb25zdHJ1Y3QgcmVzdWx0IGluIGEgc2luZ2xlIHN0cmluZy4KICAgc3RkOjpzdHJpbmcgcmVzdWx0OwogICBzaXplX3QgbGVuID0gMDsKLSAgZm9yIChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBmaXJzdDsgaSAhPSBsYXN0OyArK2kpIHsKKyAgZm9yIChhdXRvIGkgPSBmaXJzdDsgaSAhPSBsYXN0OyArK2kpIHsKICAgICBsZW4gKz0gMSArIGktPnNpemUoKTsKICAgfQogICByZXN1bHQucmVzZXJ2ZShsZW4pOwpAQCAtMzY4NiwxOCArMzY5MywxOSBAQAogICBTeXN0ZW1Ub29sczo6Q29udmVydFRvVW5peFNsYXNoZXMoZm4pOwogCiAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgc2xhc2hfcG9zID0gZm4ucmZpbmQoIi8iKTsKLSAgaWYgKHNsYXNoX3BvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgIHN0ZDo6c3RyaW5nIHJldCA9IGZuLnN1YnN0cigwLCBzbGFzaF9wb3MpOwotICAgIGlmIChyZXQuc2l6ZSgpID09IDIgJiYgcmV0WzFdID09ICc6JykgewotICAgICAgcmV0dXJuIHJldCArICcvJzsKLSAgICB9Ci0gICAgaWYgKHJldC5lbXB0eSgpKSB7Ci0gICAgICByZXR1cm4gIi8iOwotICAgIH0KLSAgICByZXR1cm4gcmV0OwotICB9IGVsc2UgeworICBpZiAoc2xhc2hfcG9zID09IDApIHsKKyAgICByZXR1cm4gIi8iOworICB9CisgIGlmIChzbGFzaF9wb3MgPT0gMiAmJiBmblsxXSA9PSAnOicpIHsKKyAgICAvLyBrZWVwIHRoZSAvIGFmdGVyIGEgZHJpdmUgbGV0dGVyCisgICAgZm4ucmVzaXplKDMpOworICAgIHJldHVybiBmbjsKKyAgfQorICBpZiAoc2xhc2hfcG9zID09IHN0ZDo6c3RyaW5nOjpucG9zKSB7CiAgICAgcmV0dXJuICIiOwogICB9CisgIGZuLnJlc2l6ZShzbGFzaF9wb3MpOworICByZXR1cm4gZm47CiB9CiAKIC8qKgpAQCAtMzcyNyw3ICszNzM1LDggQEAKICAgc3RkOjpzdHJpbmcgbmFtZSA9IFN5c3RlbVRvb2xzOjpHZXRGaWxlbmFtZU5hbWUoZmlsZW5hbWUpOwogICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGRvdF9wb3MgPSBuYW1lLmZpbmQoJy4nKTsKICAgaWYgKGRvdF9wb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICByZXR1cm4gbmFtZS5zdWJzdHIoZG90X3Bvcyk7CisgICAgbmFtZS5lcmFzZSgwLCBkb3RfcG9zKTsKKyAgICByZXR1cm4gbmFtZTsKICAgfSBlbHNlIHsKICAgICByZXR1cm4gIiI7CiAgIH0KQEAgLTM3NDIsNyArMzc1MSw4IEBACiAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBTeXN0ZW1Ub29sczo6R2V0RmlsZW5hbWVOYW1lKGZpbGVuYW1lKTsKICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBkb3RfcG9zID0gbmFtZS5yZmluZCgnLicpOwogICBpZiAoZG90X3BvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykgewotICAgIHJldHVybiBuYW1lLnN1YnN0cihkb3RfcG9zKTsKKyAgICBuYW1lLmVyYXNlKDAsIGRvdF9wb3MpOworICAgIHJldHVybiBuYW1lOwogICB9IGVsc2UgewogICAgIHJldHVybiAiIjsKICAgfQpAQCAtMzc1OCwxMCArMzc2OCw5IEBACiAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBTeXN0ZW1Ub29sczo6R2V0RmlsZW5hbWVOYW1lKGZpbGVuYW1lKTsKICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBkb3RfcG9zID0gbmFtZS5maW5kKCcuJyk7CiAgIGlmIChkb3RfcG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgcmV0dXJuIG5hbWUuc3Vic3RyKDAsIGRvdF9wb3MpOwotICB9IGVsc2UgewotICAgIHJldHVybiBuYW1lOworICAgIG5hbWUucmVzaXplKGRvdF9wb3MpOwogICB9CisgIHJldHVybiBuYW1lOwogfQogCiAvKioKQEAgLTM3NzUsMTAgKzM3ODQsOSBAQAogICBzdGQ6OnN0cmluZyBuYW1lID0gU3lzdGVtVG9vbHM6OkdldEZpbGVuYW1lTmFtZShmaWxlbmFtZSk7CiAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgZG90X3BvcyA9IG5hbWUucmZpbmQoJy4nKTsKICAgaWYgKGRvdF9wb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICByZXR1cm4gbmFtZS5zdWJzdHIoMCwgZG90X3Bvcyk7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgbmFtZS5yZXNpemUoZG90X3Bvcyk7CiAgIH0KKyAgcmV0dXJuIG5hbWU7CiB9CiAKIGJvb2wgU3lzdGVtVG9vbHM6OkZpbGVIYXNTaWduYXR1cmUoY29uc3QgY2hhciogZmlsZW5hbWUsIGNvbnN0IGNoYXIqIHNpZ25hdHVyZSwKQEAgLTM4MjgsNyArMzgzNiw3IEBACiAKICAgLy8gQWxsb2NhdGUgYnVmZmVyIGFuZCByZWFkIGJ5dGVzCiAKLSAgdW5zaWduZWQgY2hhciogYnVmZmVyID0gbmV3IHVuc2lnbmVkIGNoYXJbbGVuZ3RoXTsKKyAgYXV0byogYnVmZmVyID0gbmV3IHVuc2lnbmVkIGNoYXJbbGVuZ3RoXTsKICAgc2l6ZV90IHJlYWRfbGVuZ3RoID0gZnJlYWQoYnVmZmVyLCAxLCBsZW5ndGgsIGZwKTsKICAgZmNsb3NlKGZwKTsKICAgaWYgKHJlYWRfbGVuZ3RoID09IDApIHsKQEAgLTQwMDAsNyArNDAwOCw4IEBACiAKICAgLy8gaWYgdGhlIHBhdGggcGFzc2VkIGluIGhhcyBxdW90ZXMgYXJvdW5kIGl0LCBmaXJzdCByZW1vdmUgdGhlIHF1b3RlcwogICBpZiAoIXBhdGguZW1wdHkoKSAmJiBwYXRoWzBdID09ICciJyAmJiBwYXRoLmJhY2soKSA9PSAnIicpIHsKLSAgICB0ZW1wUGF0aCA9IHBhdGguc3Vic3RyKDEsIHBhdGgubGVuZ3RoKCkgLSAyKTsKKyAgICB0ZW1wUGF0aC5yZXNpemUocGF0aC5sZW5ndGgoKSAtIDEpOworICAgIHRlbXBQYXRoLmVyYXNlKDAsIDEpOwogICB9CiAKICAgc3RkOjp3c3RyaW5nIHd0ZW1wUGF0aCA9IEVuY29kaW5nOjpUb1dpZGUodGVtcFBhdGgpOwpAQCAtNDIxOSw4ICs0MjI4LDggQEAKICAgaWYgKHN1YmRpcltleHBlY3RlZFNsYXNoUG9zaXRpb25dICE9ICcvJykgewogICAgIHJldHVybiBmYWxzZTsKICAgfQotICBzdGQ6OnN0cmluZyBzID0gc3ViZGlyLnN1YnN0cigwLCBkaXIuc2l6ZSgpKTsKLSAgcmV0dXJuIFN5c3RlbVRvb2xzOjpDb21wYXJlUGF0aChzLCBkaXIpOworICBzdWJkaXIucmVzaXplKGRpci5zaXplKCkpOworICByZXR1cm4gU3lzdGVtVG9vbHM6OkNvbXBhcmVQYXRoKHN1YmRpciwgZGlyKTsKIH0KIAogdm9pZCBTeXN0ZW1Ub29sczo6RGVsYXkodW5zaWduZWQgaW50IG1zZWMpCkBAIC00NTE2LDcgKzQ1MjUsNyBAQAogCiBib29sIFN5c3RlbVRvb2xzOjpQYXJzZVVSTFByb3RvY29sKGNvbnN0IHN0ZDo6c3RyaW5nJiBVUkwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiBwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcmIGRhdGFnbG9tKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyYgZGF0YWdsb20sIGJvb2wgZGVjb2RlKQogewogICAvLyBtYXRjaCAwIGVudGlyZSB1cmwKICAgLy8gbWF0Y2ggMSBwcm90b2NvbApAQCAtNDUyOSwxMyArNDUzOCwxNyBAQAogICBwcm90b2NvbCA9IHVybFJlLm1hdGNoKDEpOwogICBkYXRhZ2xvbSA9IHVybFJlLm1hdGNoKDIpOwogCisgIGlmIChkZWNvZGUpIHsKKyAgICBkYXRhZ2xvbSA9IERlY29kZVVSTChkYXRhZ2xvbSk7CisgIH0KKwogICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBTeXN0ZW1Ub29sczo6UGFyc2VVUkwoY29uc3Qgc3RkOjpzdHJpbmcmIFVSTCwgc3RkOjpzdHJpbmcmIHByb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcmIHVzZXJuYW1lLCBzdGQ6OnN0cmluZyYgcGFzc3dvcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyYgaG9zdG5hbWUsIHN0ZDo6c3RyaW5nJiBkYXRhcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiBkYXRhYmFzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiBkYXRhYmFzZSwgYm9vbCBkZWNvZGUpCiB7CiAgIGt3c3lzOjpSZWd1bGFyRXhwcmVzc2lvbiB1cmxSZShWVEtfVVJMX1JFR0VYKTsKICAgaWYgKCF1cmxSZS5maW5kKFVSTCkpCkBAIC00NTU5LDkgKzQ1NzIsMzUgQEAKICAgZGF0YXBvcnQgPSB1cmxSZS5tYXRjaCg4KTsKICAgZGF0YWJhc2UgPSB1cmxSZS5tYXRjaCg5KTsKIAorICBpZiAoZGVjb2RlKSB7CisgICAgdXNlcm5hbWUgPSBEZWNvZGVVUkwodXNlcm5hbWUpOworICAgIHBhc3N3b3JkID0gRGVjb2RlVVJMKHBhc3N3b3JkKTsKKyAgICBob3N0bmFtZSA9IERlY29kZVVSTChob3N0bmFtZSk7CisgICAgZGF0YXBvcnQgPSBEZWNvZGVVUkwoZGF0YXBvcnQpOworICAgIGRhdGFiYXNlID0gRGVjb2RlVVJMKGRhdGFiYXNlKTsKKyAgfQorCiAgIHJldHVybiB0cnVlOwogfQogCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdGQ6OnN0cmluZyBTeXN0ZW1Ub29sczo6RGVjb2RlVVJMKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwpCit7CisgIGt3c3lzOjpSZWd1bGFyRXhwcmVzc2lvbiB1cmxCeXRlUmUoVlRLX1VSTF9CWVRFX1JFR0VYKTsKKyAgc3RkOjpzdHJpbmcgcmV0OworICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVybC5sZW5ndGgoKTsgaSsrKSB7CisgICAgaWYgKHVybEJ5dGVSZS5maW5kKHVybC5zdWJzdHIoaSwgMykpKSB7CisgICAgICBjaGFyIGJ5dGVzW10gPSB7IHVybFtpICsgMV0sIHVybFtpICsgMl0sICdcMCcgfTsKKyAgICAgIHJldCArPSBzdGF0aWNfY2FzdDxjaGFyPihzdHJ0b3VsKGJ5dGVzLCBudWxscHRyLCAxNikpOworICAgICAgaSArPSAyOworICAgIH0gZWxzZSB7CisgICAgICByZXQgKz0gdXJsW2ldOworICAgIH0KKyAgfQorICByZXR1cm4gcmV0OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBUaGVzZSBtdXN0IE5PVCBiZSBpbml0aWFsaXplZC4gIERlZmF1bHQgaW5pdGlhbGl6YXRpb24gdG8gemVybyBpcwogLy8gbmVjZXNzYXJ5Lgogc3RhdGljIHVuc2lnbmVkIGludCBTeXN0ZW1Ub29sc01hbmFnZXJDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9rd3N5cy9TeXN0ZW1Ub29scy5oeHguaW4gYi9Tb3VyY2Uva3dzeXMvU3lzdGVtVG9vbHMuaHh4LmluCmluZGV4IGM0YWI5ZDQuLmQ0YTkzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9rd3N5cy9TeXN0ZW1Ub29scy5oeHguaW4KKysrIGIvU291cmNlL2t3c3lzL1N5c3RlbVRvb2xzLmh4eC5pbgpAQCAtOTM1LDIyICs5MzUsMzIgQEAKICAgICogUGFyc2UgYSBjaGFyYWN0ZXIgc3RyaW5nIDoKICAgICogICAgICAgcHJvdG9jb2w6Ly9kYXRhZ2xvbQogICAgKiBhbmQgZmlsbCBwcm90b2NvbCBhcyBhcHByb3ByaWF0ZS4KKyAgICogZGVjb2RlIHRoZSBkYXRhZ2xvbSB1c2luZyBEZWNvZGVVUkwgaWYgc2V0IHRvIHRydWUuCiAgICAqIFJldHVybiBmYWxzZSBpZiB0aGUgVVJMIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIGZvcm0sIHRydWUgb3RoZXJ3aXNlLgogICAgKi8KICAgc3RhdGljIGJvb2wgUGFyc2VVUkxQcm90b2NvbChjb25zdCBzdGQ6OnN0cmluZyYgVVJMLCBzdGQ6OnN0cmluZyYgcHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcmIGRhdGFnbG9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyYgZGF0YWdsb20sIGJvb2wgZGVjb2RlID0gZmFsc2UpOwogCiAgIC8qKgogICAgKiBQYXJzZSBhIHN0cmluZyAoYSBVUkwgd2l0aG91dCBwcm90b2NvbCBwcmVmaXgpIHdpdGggdGhlIGZvcm06CiAgICAqICBwcm90b2NvbDovL1tbdXNlcm5hbWVbJzoncGFzc3dvcmRdJ0AnXWhvc3RuYW1lWyc6J2RhdGFwb3J0XV0nLydbZGF0YXBhdGhdCiAgICAqIGFuZCBmaWxsIHByb3RvY29sLCB1c2VybmFtZSwgcGFzc3dvcmQsIGhvc3RuYW1lLCBkYXRhcG9ydCwgYW5kIGRhdGFwYXRoCiAgICAqIHdoZW4gdmFsdWVzIGFyZSBmb3VuZC4KKyAgICogZGVjb2RlIGFsbCBzdHJpbmcgZXhjZXB0IHRoZSBwcm90b2NvbCB1c2luZyBEZWNvZGVVcmwgaWYgc2V0IHRvIHRydWUuCiAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgbWF0Y2hlcyB0aGUgZm9ybWF0OyBmYWxzZSBvdGhlcndpc2UuCiAgICAqLwogICBzdGF0aWMgYm9vbCBQYXJzZVVSTChjb25zdCBzdGQ6OnN0cmluZyYgVVJMLCBzdGQ6OnN0cmluZyYgcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nJiB1c2VybmFtZSwgc3RkOjpzdHJpbmcmIHBhc3N3b3JkLAogICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyYgaG9zdG5hbWUsIHN0ZDo6c3RyaW5nJiBkYXRhcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcmIGRhdGFwYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcmIGRhdGFwYXRoLCBib29sIGRlY29kZSA9IGZhbHNlKTsKKworICAvKioKKyAgICogRGVjb2RlIHRoZSBwZXJjZW50LWVuY29kZWQgc3RyaW5nIGZyb20gYW4gVVJMIG9yIGFuIFVSSQorICAgKiBpbnRvIHRoZWlyIGNvcnJlY3QgY2hhciB2YWx1ZXMuCisgICAqIERvZXMgbm90IHBlcmZvcm0gYW55IG90aGVyIHNvcnQgb2YgdmFsaWRhdGlvbi4KKyAgICogUmV0dXJuIHRoZSBkZWNvZGVkIHN0cmluZworICAgKi8KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIERlY29kZVVSTChjb25zdCBzdGQ6OnN0cmluZyYgdXJsKTsKIAogcHJpdmF0ZToKICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uva3dzeXMva3dzeXNQbGF0Zm9ybVRlc3RzLmNtYWtlIGIvU291cmNlL2t3c3lzL2t3c3lzUGxhdGZvcm1UZXN0cy5jbWFrZQppbmRleCAyOGQzZjY4Li44OWJlNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uva3dzeXMva3dzeXNQbGF0Zm9ybVRlc3RzLmNtYWtlCisrKyBiL1NvdXJjZS9rd3N5cy9rd3N5c1BsYXRmb3JtVGVzdHMuY21ha2UKQEAgLTEsMTg1ICsxLDE4NSBAQAogIyBEaXN0cmlidXRlZCB1bmRlciB0aGUgT1NJLWFwcHJvdmVkIEJTRCAzLUNsYXVzZSBMaWNlbnNlLiAgU2VlIGFjY29tcGFueWluZwogIyBmaWxlIENvcHlyaWdodC50eHQgb3IgaHR0cHM6Ly9jbWFrZS5vcmcvbGljZW5zaW5nI2t3c3lzIGZvciBkZXRhaWxzLgogCi1TRVQoS1dTWVNfUExBVEZPUk1fVEVTVF9GSUxFX0Mga3dzeXNQbGF0Zm9ybVRlc3RzQy5jKQotU0VUKEtXU1lTX1BMQVRGT1JNX1RFU1RfRklMRV9DWFgga3dzeXNQbGF0Zm9ybVRlc3RzQ1hYLmN4eCkKK3NldChLV1NZU19QTEFURk9STV9URVNUX0ZJTEVfQyBrd3N5c1BsYXRmb3JtVGVzdHNDLmMpCitzZXQoS1dTWVNfUExBVEZPUk1fVEVTVF9GSUxFX0NYWCBrd3N5c1BsYXRmb3JtVGVzdHNDWFguY3h4KQogCi1NQUNSTyhLV1NZU19QTEFURk9STV9URVNUIGxhbmcgdmFyIGRlc2NyaXB0aW9uIGludmVydCkKLSAgSUYoTk9UIERFRklORUQgJHt2YXJ9X0NPTVBJTEVEKQotICAgIE1FU1NBR0UoU1RBVFVTICIke2Rlc2NyaXB0aW9ufSIpCittYWNybyhLV1NZU19QTEFURk9STV9URVNUIGxhbmcgdmFyIGRlc2NyaXB0aW9uIGludmVydCkKKyAgaWYoTk9UIERFRklORUQgJHt2YXJ9X0NPTVBJTEVEKQorICAgIG1lc3NhZ2UoU1RBVFVTICIke2Rlc2NyaXB0aW9ufSIpCiAgICAgc2V0KG1heWJlX2N4eF9zdGFuZGFyZCAiIikKICAgICBpZihDTUFLRV9WRVJTSU9OIFZFUlNJT05fTEVTUyAzLjggQU5EIENNQUtFX0NYWF9TVEFOREFSRCkKICAgICAgIHNldChtYXliZV9jeHhfc3RhbmRhcmQgIi1EQ01BS0VfQ1hYX1NUQU5EQVJEPSR7Q01BS0VfQ1hYX1NUQU5EQVJEfSIpCiAgICAgZW5kaWYoKQotICAgIFRSWV9DT01QSUxFKCR7dmFyfV9DT01QSUxFRAorICAgIHRyeV9jb21waWxlKCR7dmFyfV9DT01QSUxFRAogICAgICAgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9CiAgICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vJHtLV1NZU19QTEFURk9STV9URVNUX0ZJTEVfJHtsYW5nfX0KICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgLURURVNUXyR7dmFyfSAke0tXU1lTX1BMQVRGT1JNX1RFU1RfREVGSU5FU30gJHtLV1NZU19QTEFURk9STV9URVNUX0VYVFJBX0ZMQUdTfQogICAgICAgQ01BS0VfRkxBR1MgIi1ETElOS19MSUJSQVJJRVM6U1RSSU5HPSR7S1dTWVNfUExBVEZPUk1fVEVTVF9MSU5LX0xJQlJBUklFU30iCiAgICAgICAgICAgICAgICAgICAke21heWJlX2N4eF9zdGFuZGFyZH0KICAgICAgIE9VVFBVVF9WQVJJQUJMRSBPVVRQVVQpCi0gICAgSUYoJHt2YXJ9X0NPTVBJTEVEKQotICAgICAgRklMRShBUFBFTkQKKyAgICBpZigke3Zhcn1fQ09NUElMRUQpCisgICAgICBmaWxlKEFQUEVORAogICAgICAgICAke0NNQUtFX0JJTkFSWV9ESVJ9JHtDTUFLRV9GSUxFU19ESVJFQ1RPUll9L0NNYWtlT3V0cHV0LmxvZwogICAgICAgICAiJHtkZXNjcmlwdGlvbn0gY29tcGlsZWQgd2l0aCB0aGUgZm9sbG93aW5nIG91dHB1dDpcbiR7T1VUUFVUfVxuXG4iKQotICAgIEVMU0UoKQotICAgICAgRklMRShBUFBFTkQKKyAgICBlbHNlKCkKKyAgICAgIGZpbGUoQVBQRU5ECiAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0ke0NNQUtFX0ZJTEVTX0RJUkVDVE9SWX0vQ01ha2VFcnJvci5sb2cKICAgICAgICAgIiR7ZGVzY3JpcHRpb259IGZhaWxlZCB0byBjb21waWxlIHdpdGggdGhlIGZvbGxvd2luZyBvdXRwdXQ6XG4ke09VVFBVVH1cblxuIikKLSAgICBFTkRJRigpCi0gICAgSUYoJHtpbnZlcnR9IE1BVENIRVMgSU5WRVJUKQotICAgICAgSUYoJHt2YXJ9X0NPTVBJTEVEKQotICAgICAgICBNRVNTQUdFKFNUQVRVUyAiJHtkZXNjcmlwdGlvbn0gLSBubyIpCi0gICAgICBFTFNFKCkKLSAgICAgICAgTUVTU0FHRShTVEFUVVMgIiR7ZGVzY3JpcHRpb259IC0geWVzIikKLSAgICAgIEVORElGKCkKLSAgICBFTFNFKCkKLSAgICAgIElGKCR7dmFyfV9DT01QSUxFRCkKLSAgICAgICAgTUVTU0FHRShTVEFUVVMgIiR7ZGVzY3JpcHRpb259IC0geWVzIikKLSAgICAgIEVMU0UoKQotICAgICAgICBNRVNTQUdFKFNUQVRVUyAiJHtkZXNjcmlwdGlvbn0gLSBubyIpCi0gICAgICBFTkRJRigpCi0gICAgRU5ESUYoKQotICBFTkRJRigpCi0gIElGKCR7aW52ZXJ0fSBNQVRDSEVTIElOVkVSVCkKLSAgICBJRigke3Zhcn1fQ09NUElMRUQpCi0gICAgICBTRVQoJHt2YXJ9IDApCi0gICAgRUxTRSgpCi0gICAgICBTRVQoJHt2YXJ9IDEpCi0gICAgRU5ESUYoKQotICBFTFNFKCkKLSAgICBJRigke3Zhcn1fQ09NUElMRUQpCi0gICAgICBTRVQoJHt2YXJ9IDEpCi0gICAgRUxTRSgpCi0gICAgICBTRVQoJHt2YXJ9IDApCi0gICAgRU5ESUYoKQotICBFTkRJRigpCi1FTkRNQUNSTygpCisgICAgZW5kaWYoKQorICAgIGlmKCR7aW52ZXJ0fSBNQVRDSEVTIElOVkVSVCkKKyAgICAgIGlmKCR7dmFyfV9DT01QSUxFRCkKKyAgICAgICAgbWVzc2FnZShTVEFUVVMgIiR7ZGVzY3JpcHRpb259IC0gbm8iKQorICAgICAgZWxzZSgpCisgICAgICAgIG1lc3NhZ2UoU1RBVFVTICIke2Rlc2NyaXB0aW9ufSAtIHllcyIpCisgICAgICBlbmRpZigpCisgICAgZWxzZSgpCisgICAgICBpZigke3Zhcn1fQ09NUElMRUQpCisgICAgICAgIG1lc3NhZ2UoU1RBVFVTICIke2Rlc2NyaXB0aW9ufSAtIHllcyIpCisgICAgICBlbHNlKCkKKyAgICAgICAgbWVzc2FnZShTVEFUVVMgIiR7ZGVzY3JpcHRpb259IC0gbm8iKQorICAgICAgZW5kaWYoKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorICBpZigke2ludmVydH0gTUFUQ0hFUyBJTlZFUlQpCisgICAgaWYoJHt2YXJ9X0NPTVBJTEVEKQorICAgICAgc2V0KCR7dmFyfSAwKQorICAgIGVsc2UoKQorICAgICAgc2V0KCR7dmFyfSAxKQorICAgIGVuZGlmKCkKKyAgZWxzZSgpCisgICAgaWYoJHt2YXJ9X0NPTVBJTEVEKQorICAgICAgc2V0KCR7dmFyfSAxKQorICAgIGVsc2UoKQorICAgICAgc2V0KCR7dmFyfSAwKQorICAgIGVuZGlmKCkKKyAgZW5kaWYoKQorZW5kbWFjcm8oKQogCi1NQUNSTyhLV1NZU19QTEFURk9STV9URVNUX1JVTiBsYW5nIHZhciBkZXNjcmlwdGlvbiBpbnZlcnQpCi0gIElGKE5PVCBERUZJTkVEICR7dmFyfSkKLSAgICBNRVNTQUdFKFNUQVRVUyAiJHtkZXNjcmlwdGlvbn0iKQotICAgIFRSWV9SVU4oJHt2YXJ9ICR7dmFyfV9DT01QSUxFRAorbWFjcm8oS1dTWVNfUExBVEZPUk1fVEVTVF9SVU4gbGFuZyB2YXIgZGVzY3JpcHRpb24gaW52ZXJ0KQorICBpZihOT1QgREVGSU5FRCAke3Zhcn0pCisgICAgbWVzc2FnZShTVEFUVVMgIiR7ZGVzY3JpcHRpb259IikKKyAgICB0cnlfcnVuKCR7dmFyfSAke3Zhcn1fQ09NUElMRUQKICAgICAgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfQogICAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9LyR7S1dTWVNfUExBVEZPUk1fVEVTVF9GSUxFXyR7bGFuZ319CiAgICAgICBDT01QSUxFX0RFRklOSVRJT05TIC1EVEVTVF8ke3Zhcn0gJHtLV1NZU19QTEFURk9STV9URVNUX0RFRklORVN9ICR7S1dTWVNfUExBVEZPUk1fVEVTVF9FWFRSQV9GTEFHU30KICAgICAgIE9VVFBVVF9WQVJJQUJMRSBPVVRQVVQpCiAKICAgICAjIE5vdGUgdGhhdCAke3Zhcn0gd2lsbCBiZSBhIDAgcmV0dXJuIHZhbHVlIG9uIHN1Y2Nlc3MuCi0gICAgSUYoJHt2YXJ9X0NPTVBJTEVEKQotICAgICAgSUYoJHt2YXJ9KQotICAgICAgICBGSUxFKEFQUEVORAorICAgIGlmKCR7dmFyfV9DT01QSUxFRCkKKyAgICAgIGlmKCR7dmFyfSkKKyAgICAgICAgZmlsZShBUFBFTkQKICAgICAgICAgICAke0NNQUtFX0JJTkFSWV9ESVJ9JHtDTUFLRV9GSUxFU19ESVJFQ1RPUll9L0NNYWtlRXJyb3IubG9nCiAgICAgICAgICAgIiR7ZGVzY3JpcHRpb259IGNvbXBpbGVkIGJ1dCBmYWlsZWQgdG8gcnVuIHdpdGggdGhlIGZvbGxvd2luZyBvdXRwdXQ6XG4ke09VVFBVVH1cblxuIikKLSAgICAgIEVMU0UoKQotICAgICAgICBGSUxFKEFQUEVORAorICAgICAgZWxzZSgpCisgICAgICAgIGZpbGUoQVBQRU5ECiAgICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElSfSR7Q01BS0VfRklMRVNfRElSRUNUT1JZfS9DTWFrZU91dHB1dC5sb2cKICAgICAgICAgICAiJHtkZXNjcmlwdGlvbn0gY29tcGlsZWQgYW5kIHJhbiB3aXRoIHRoZSBmb2xsb3dpbmcgb3V0cHV0OlxuJHtPVVRQVVR9XG5cbiIpCi0gICAgICBFTkRJRigpCi0gICAgRUxTRSgpCi0gICAgICBGSUxFKEFQUEVORAorICAgICAgZW5kaWYoKQorICAgIGVsc2UoKQorICAgICAgZmlsZShBUFBFTkQKICAgICAgICAgJHtDTUFLRV9CSU5BUllfRElSfSR7Q01BS0VfRklMRVNfRElSRUNUT1JZfS9DTWFrZUVycm9yLmxvZwogICAgICAgICAiJHtkZXNjcmlwdGlvbn0gZmFpbGVkIHRvIGNvbXBpbGUgd2l0aCB0aGUgZm9sbG93aW5nIG91dHB1dDpcbiR7T1VUUFVUfVxuXG4iKQotICAgICAgU0VUKCR7dmFyfSAtMSBDQUNIRSBJTlRFUk5BTCAiJHtkZXNjcmlwdGlvbn0gZmFpbGVkIHRvIGNvbXBpbGUuIikKLSAgICBFTkRJRigpCisgICAgICBzZXQoJHt2YXJ9IC0xIENBQ0hFIElOVEVSTkFMICIke2Rlc2NyaXB0aW9ufSBmYWlsZWQgdG8gY29tcGlsZS4iKQorICAgIGVuZGlmKCkKIAotICAgIElGKCR7aW52ZXJ0fSBNQVRDSEVTIElOVkVSVCkKLSAgICAgIElGKCR7dmFyfV9DT01QSUxFRCkKLSAgICAgICAgSUYoJHt2YXJ9KQotICAgICAgICAgIE1FU1NBR0UoU1RBVFVTICIke2Rlc2NyaXB0aW9ufSAtIHllcyIpCi0gICAgICAgIEVMU0UoKQotICAgICAgICAgIE1FU1NBR0UoU1RBVFVTICIke2Rlc2NyaXB0aW9ufSAtIG5vIikKLSAgICAgICAgRU5ESUYoKQotICAgICAgRUxTRSgpCi0gICAgICAgIE1FU1NBR0UoU1RBVFVTICIke2Rlc2NyaXB0aW9ufSAtIGZhaWxlZCB0byBjb21waWxlIikKLSAgICAgIEVORElGKCkKLSAgICBFTFNFKCkKLSAgICAgIElGKCR7dmFyfV9DT01QSUxFRCkKLSAgICAgICAgSUYoJHt2YXJ9KQotICAgICAgICAgIE1FU1NBR0UoU1RBVFVTICIke2Rlc2NyaXB0aW9ufSAtIG5vIikKLSAgICAgICAgRUxTRSgpCi0gICAgICAgICAgTUVTU0FHRShTVEFUVVMgIiR7ZGVzY3JpcHRpb259IC0geWVzIikKLSAgICAgICAgRU5ESUYoKQotICAgICAgRUxTRSgpCi0gICAgICAgIE1FU1NBR0UoU1RBVFVTICIke2Rlc2NyaXB0aW9ufSAtIGZhaWxlZCB0byBjb21waWxlIikKLSAgICAgIEVORElGKCkKLSAgICBFTkRJRigpCi0gIEVORElGKCkKKyAgICBpZigke2ludmVydH0gTUFUQ0hFUyBJTlZFUlQpCisgICAgICBpZigke3Zhcn1fQ09NUElMRUQpCisgICAgICAgIGlmKCR7dmFyfSkKKyAgICAgICAgICBtZXNzYWdlKFNUQVRVUyAiJHtkZXNjcmlwdGlvbn0gLSB5ZXMiKQorICAgICAgICBlbHNlKCkKKyAgICAgICAgICBtZXNzYWdlKFNUQVRVUyAiJHtkZXNjcmlwdGlvbn0gLSBubyIpCisgICAgICAgIGVuZGlmKCkKKyAgICAgIGVsc2UoKQorICAgICAgICBtZXNzYWdlKFNUQVRVUyAiJHtkZXNjcmlwdGlvbn0gLSBmYWlsZWQgdG8gY29tcGlsZSIpCisgICAgICBlbmRpZigpCisgICAgZWxzZSgpCisgICAgICBpZigke3Zhcn1fQ09NUElMRUQpCisgICAgICAgIGlmKCR7dmFyfSkKKyAgICAgICAgICBtZXNzYWdlKFNUQVRVUyAiJHtkZXNjcmlwdGlvbn0gLSBubyIpCisgICAgICAgIGVsc2UoKQorICAgICAgICAgIG1lc3NhZ2UoU1RBVFVTICIke2Rlc2NyaXB0aW9ufSAtIHllcyIpCisgICAgICAgIGVuZGlmKCkKKyAgICAgIGVsc2UoKQorICAgICAgICBtZXNzYWdlKFNUQVRVUyAiJHtkZXNjcmlwdGlvbn0gLSBmYWlsZWQgdG8gY29tcGlsZSIpCisgICAgICBlbmRpZigpCisgICAgZW5kaWYoKQorICBlbmRpZigpCiAKLSAgSUYoJHtpbnZlcnR9IE1BVENIRVMgSU5WRVJUKQotICAgIElGKCR7dmFyfV9DT01QSUxFRCkKLSAgICAgIElGKCR7dmFyfSkKLSAgICAgICAgU0VUKCR7dmFyfSAxKQotICAgICAgRUxTRSgpCi0gICAgICAgIFNFVCgke3Zhcn0gMCkKLSAgICAgIEVORElGKCkKLSAgICBFTFNFKCkKLSAgICAgIFNFVCgke3Zhcn0gMSkKLSAgICBFTkRJRigpCi0gIEVMU0UoKQotICAgIElGKCR7dmFyfV9DT01QSUxFRCkKLSAgICAgIElGKCR7dmFyfSkKLSAgICAgICAgU0VUKCR7dmFyfSAwKQotICAgICAgRUxTRSgpCi0gICAgICAgIFNFVCgke3Zhcn0gMSkKLSAgICAgIEVORElGKCkKLSAgICBFTFNFKCkKLSAgICAgIFNFVCgke3Zhcn0gMCkKLSAgICBFTkRJRigpCi0gIEVORElGKCkKLUVORE1BQ1JPKCkKKyAgaWYoJHtpbnZlcnR9IE1BVENIRVMgSU5WRVJUKQorICAgIGlmKCR7dmFyfV9DT01QSUxFRCkKKyAgICAgIGlmKCR7dmFyfSkKKyAgICAgICAgc2V0KCR7dmFyfSAxKQorICAgICAgZWxzZSgpCisgICAgICAgIHNldCgke3Zhcn0gMCkKKyAgICAgIGVuZGlmKCkKKyAgICBlbHNlKCkKKyAgICAgIHNldCgke3Zhcn0gMSkKKyAgICBlbmRpZigpCisgIGVsc2UoKQorICAgIGlmKCR7dmFyfV9DT01QSUxFRCkKKyAgICAgIGlmKCR7dmFyfSkKKyAgICAgICAgc2V0KCR7dmFyfSAwKQorICAgICAgZWxzZSgpCisgICAgICAgIHNldCgke3Zhcn0gMSkKKyAgICAgIGVuZGlmKCkKKyAgICBlbHNlKCkKKyAgICAgIHNldCgke3Zhcn0gMCkKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKK2VuZG1hY3JvKCkKIAotTUFDUk8oS1dTWVNfUExBVEZPUk1fQ19URVNUIHZhciBkZXNjcmlwdGlvbiBpbnZlcnQpCi0gIFNFVChLV1NZU19QTEFURk9STV9URVNUX0RFRklORVMgJHtLV1NZU19QTEFURk9STV9DX1RFU1RfREVGSU5FU30pCi0gIFNFVChLV1NZU19QTEFURk9STV9URVNUX0VYVFJBX0ZMQUdTICR7S1dTWVNfUExBVEZPUk1fQ19URVNUX0VYVFJBX0ZMQUdTfSkKK21hY3JvKEtXU1lTX1BMQVRGT1JNX0NfVEVTVCB2YXIgZGVzY3JpcHRpb24gaW52ZXJ0KQorICBzZXQoS1dTWVNfUExBVEZPUk1fVEVTVF9ERUZJTkVTICR7S1dTWVNfUExBVEZPUk1fQ19URVNUX0RFRklORVN9KQorICBzZXQoS1dTWVNfUExBVEZPUk1fVEVTVF9FWFRSQV9GTEFHUyAke0tXU1lTX1BMQVRGT1JNX0NfVEVTVF9FWFRSQV9GTEFHU30pCiAgIEtXU1lTX1BMQVRGT1JNX1RFU1QoQyAiJHt2YXJ9IiAiJHtkZXNjcmlwdGlvbn0iICIke2ludmVydH0iKQotICBTRVQoS1dTWVNfUExBVEZPUk1fVEVTVF9ERUZJTkVTKQotICBTRVQoS1dTWVNfUExBVEZPUk1fVEVTVF9FWFRSQV9GTEFHUykKLUVORE1BQ1JPKCkKKyAgc2V0KEtXU1lTX1BMQVRGT1JNX1RFU1RfREVGSU5FUykKKyAgc2V0KEtXU1lTX1BMQVRGT1JNX1RFU1RfRVhUUkFfRkxBR1MpCitlbmRtYWNybygpCiAKLU1BQ1JPKEtXU1lTX1BMQVRGT1JNX0NfVEVTVF9SVU4gdmFyIGRlc2NyaXB0aW9uIGludmVydCkKLSAgU0VUKEtXU1lTX1BMQVRGT1JNX1RFU1RfREVGSU5FUyAke0tXU1lTX1BMQVRGT1JNX0NfVEVTVF9ERUZJTkVTfSkKLSAgU0VUKEtXU1lTX1BMQVRGT1JNX1RFU1RfRVhUUkFfRkxBR1MgJHtLV1NZU19QTEFURk9STV9DX1RFU1RfRVhUUkFfRkxBR1N9KQorbWFjcm8oS1dTWVNfUExBVEZPUk1fQ19URVNUX1JVTiB2YXIgZGVzY3JpcHRpb24gaW52ZXJ0KQorICBzZXQoS1dTWVNfUExBVEZPUk1fVEVTVF9ERUZJTkVTICR7S1dTWVNfUExBVEZPUk1fQ19URVNUX0RFRklORVN9KQorICBzZXQoS1dTWVNfUExBVEZPUk1fVEVTVF9FWFRSQV9GTEFHUyAke0tXU1lTX1BMQVRGT1JNX0NfVEVTVF9FWFRSQV9GTEFHU30pCiAgIEtXU1lTX1BMQVRGT1JNX1RFU1RfUlVOKEMgIiR7dmFyfSIgIiR7ZGVzY3JpcHRpb259IiAiJHtpbnZlcnR9IikKLSAgU0VUKEtXU1lTX1BMQVRGT1JNX1RFU1RfREVGSU5FUykKLSAgU0VUKEtXU1lTX1BMQVRGT1JNX1RFU1RfRVhUUkFfRkxBR1MpCi1FTkRNQUNSTygpCisgIHNldChLV1NZU19QTEFURk9STV9URVNUX0RFRklORVMpCisgIHNldChLV1NZU19QTEFURk9STV9URVNUX0VYVFJBX0ZMQUdTKQorZW5kbWFjcm8oKQogCi1NQUNSTyhLV1NZU19QTEFURk9STV9DWFhfVEVTVCB2YXIgZGVzY3JpcHRpb24gaW52ZXJ0KQotICBTRVQoS1dTWVNfUExBVEZPUk1fVEVTVF9ERUZJTkVTICR7S1dTWVNfUExBVEZPUk1fQ1hYX1RFU1RfREVGSU5FU30pCi0gIFNFVChLV1NZU19QTEFURk9STV9URVNUX0VYVFJBX0ZMQUdTICR7S1dTWVNfUExBVEZPUk1fQ1hYX1RFU1RfRVhUUkFfRkxBR1N9KQotICBTRVQoS1dTWVNfUExBVEZPUk1fVEVTVF9MSU5LX0xJQlJBUklFUyAke0tXU1lTX1BMQVRGT1JNX0NYWF9URVNUX0xJTktfTElCUkFSSUVTfSkKK21hY3JvKEtXU1lTX1BMQVRGT1JNX0NYWF9URVNUIHZhciBkZXNjcmlwdGlvbiBpbnZlcnQpCisgIHNldChLV1NZU19QTEFURk9STV9URVNUX0RFRklORVMgJHtLV1NZU19QTEFURk9STV9DWFhfVEVTVF9ERUZJTkVTfSkKKyAgc2V0KEtXU1lTX1BMQVRGT1JNX1RFU1RfRVhUUkFfRkxBR1MgJHtLV1NZU19QTEFURk9STV9DWFhfVEVTVF9FWFRSQV9GTEFHU30pCisgIHNldChLV1NZU19QTEFURk9STV9URVNUX0xJTktfTElCUkFSSUVTICR7S1dTWVNfUExBVEZPUk1fQ1hYX1RFU1RfTElOS19MSUJSQVJJRVN9KQogICBLV1NZU19QTEFURk9STV9URVNUKENYWCAiJHt2YXJ9IiAiJHtkZXNjcmlwdGlvbn0iICIke2ludmVydH0iKQotICBTRVQoS1dTWVNfUExBVEZPUk1fVEVTVF9ERUZJTkVTKQotICBTRVQoS1dTWVNfUExBVEZPUk1fVEVTVF9FWFRSQV9GTEFHUykKLSAgU0VUKEtXU1lTX1BMQVRGT1JNX1RFU1RfTElOS19MSUJSQVJJRVMpCi1FTkRNQUNSTygpCisgIHNldChLV1NZU19QTEFURk9STV9URVNUX0RFRklORVMpCisgIHNldChLV1NZU19QTEFURk9STV9URVNUX0VYVFJBX0ZMQUdTKQorICBzZXQoS1dTWVNfUExBVEZPUk1fVEVTVF9MSU5LX0xJQlJBUklFUykKK2VuZG1hY3JvKCkKIAotTUFDUk8oS1dTWVNfUExBVEZPUk1fQ1hYX1RFU1RfUlVOIHZhciBkZXNjcmlwdGlvbiBpbnZlcnQpCi0gIFNFVChLV1NZU19QTEFURk9STV9URVNUX0RFRklORVMgJHtLV1NZU19QTEFURk9STV9DWFhfVEVTVF9ERUZJTkVTfSkKLSAgU0VUKEtXU1lTX1BMQVRGT1JNX1RFU1RfRVhUUkFfRkxBR1MgJHtLV1NZU19QTEFURk9STV9DWFhfVEVTVF9FWFRSQV9GTEFHU30pCittYWNybyhLV1NZU19QTEFURk9STV9DWFhfVEVTVF9SVU4gdmFyIGRlc2NyaXB0aW9uIGludmVydCkKKyAgc2V0KEtXU1lTX1BMQVRGT1JNX1RFU1RfREVGSU5FUyAke0tXU1lTX1BMQVRGT1JNX0NYWF9URVNUX0RFRklORVN9KQorICBzZXQoS1dTWVNfUExBVEZPUk1fVEVTVF9FWFRSQV9GTEFHUyAke0tXU1lTX1BMQVRGT1JNX0NYWF9URVNUX0VYVFJBX0ZMQUdTfSkKICAgS1dTWVNfUExBVEZPUk1fVEVTVF9SVU4oQ1hYICIke3Zhcn0iICIke2Rlc2NyaXB0aW9ufSIgIiR7aW52ZXJ0fSIpCi0gIFNFVChLV1NZU19QTEFURk9STV9URVNUX0RFRklORVMpCi0gIFNFVChLV1NZU19QTEFURk9STV9URVNUX0VYVFJBX0ZMQUdTKQotRU5ETUFDUk8oKQorICBzZXQoS1dTWVNfUExBVEZPUk1fVEVTVF9ERUZJTkVTKQorICBzZXQoS1dTWVNfUExBVEZPUk1fVEVTVF9FWFRSQV9GTEFHUykKK2VuZG1hY3JvKCkKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEtXU1lTX1BMQVRGT1JNX0lORk9fVEVTVChsYW5nIHZhciBkZXNjcmlwdGlvbikKICMKICMgQ29tcGlsZSB0ZXN0IG5hbWVkIGJ5ICR7dmFyfSBhbmQgc3RvcmUgSU5GTyBzdHJpbmdzIGV4dHJhY3RlZCBmcm9tIGJpbmFyeS4KLU1BQ1JPKEtXU1lTX1BMQVRGT1JNX0lORk9fVEVTVCBsYW5nIHZhciBkZXNjcmlwdGlvbikKK21hY3JvKEtXU1lTX1BMQVRGT1JNX0lORk9fVEVTVCBsYW5nIHZhciBkZXNjcmlwdGlvbikKICAgIyBXZSBjYW4gaW1wbGVtZW50IHRoaXMgbWFjcm8gb24gQ01ha2UgMi42IGFuZCBhYm92ZS4KLSAgSUYoIiR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5PUl9WRVJTSU9OfSIgTEVTUyAyLjYpCi0gICAgU0VUKCR7dmFyfSAiIikKLSAgRUxTRSgpCisgIGlmKCIke0NNQUtFX01BSk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0iIExFU1MgMi42KQorICAgIHNldCgke3Zhcn0gIiIpCisgIGVsc2UoKQogICAgICMgQ2hvb3NlIGEgbG9jYXRpb24gZm9yIHRoZSByZXN1bHQgYmluYXJ5LgotICAgIFNFVChLV1NZU19QTEFURk9STV9JTkZPX0ZJTEUKKyAgICBzZXQoS1dTWVNfUExBVEZPUk1fSU5GT19GSUxFCiAgICAgICAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vJHtDTUFLRV9GSUxFU19ESVJFQ1RPUll9LyR7dmFyfS5iaW4pCiAKICAgICAjIENvbXBpbGUgdGhlIHRlc3QgYmluYXJ5LgotICAgIElGKE5PVCBFWElTVFMgJHtLV1NZU19QTEFURk9STV9JTkZPX0ZJTEV9KQotICAgICAgTUVTU0FHRShTVEFUVVMgIiR7ZGVzY3JpcHRpb259IikKLSAgICAgIFRSWV9DT01QSUxFKCR7dmFyfV9DT01QSUxFRAorICAgIGlmKE5PVCBFWElTVFMgJHtLV1NZU19QTEFURk9STV9JTkZPX0ZJTEV9KQorICAgICAgbWVzc2FnZShTVEFUVVMgIiR7ZGVzY3JpcHRpb259IikKKyAgICAgIHRyeV9jb21waWxlKCR7dmFyfV9DT01QSUxFRAogICAgICAgICAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0KICAgICAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9LyR7S1dTWVNfUExBVEZPUk1fVEVTVF9GSUxFXyR7bGFuZ319CiAgICAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgLURURVNUXyR7dmFyfQpAQCAtMTg4LDI5ICsxODgsMjkgQEAKICAgICAgICAgT1VUUFVUX1ZBUklBQkxFIE9VVFBVVAogICAgICAgICBDT1BZX0ZJTEUgJHtLV1NZU19QTEFURk9STV9JTkZPX0ZJTEV9CiAgICAgICAgICkKLSAgICAgIElGKCR7dmFyfV9DT01QSUxFRCkKLSAgICAgICAgRklMRShBUFBFTkQKKyAgICAgIGlmKCR7dmFyfV9DT01QSUxFRCkKKyAgICAgICAgZmlsZShBUFBFTkQKICAgICAgICAgICAke0NNQUtFX0JJTkFSWV9ESVJ9JHtDTUFLRV9GSUxFU19ESVJFQ1RPUll9L0NNYWtlT3V0cHV0LmxvZwogICAgICAgICAgICIke2Rlc2NyaXB0aW9ufSBjb21waWxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgb3V0cHV0OlxuJHtPVVRQVVR9XG5cbiIpCi0gICAgICBFTFNFKCkKLSAgICAgICAgRklMRShBUFBFTkQKKyAgICAgIGVsc2UoKQorICAgICAgICBmaWxlKEFQUEVORAogICAgICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0ke0NNQUtFX0ZJTEVTX0RJUkVDVE9SWX0vQ01ha2VFcnJvci5sb2cKICAgICAgICAgICAiJHtkZXNjcmlwdGlvbn0gZmFpbGVkIHRvIGNvbXBpbGUgd2l0aCB0aGUgZm9sbG93aW5nIG91dHB1dDpcbiR7T1VUUFVUfVxuXG4iKQotICAgICAgRU5ESUYoKQotICAgICAgSUYoJHt2YXJ9X0NPTVBJTEVEKQotICAgICAgICBNRVNTQUdFKFNUQVRVUyAiJHtkZXNjcmlwdGlvbn0gLSBjb21waWxlZCIpCi0gICAgICBFTFNFKCkKLSAgICAgICAgTUVTU0FHRShTVEFUVVMgIiR7ZGVzY3JpcHRpb259IC0gZmFpbGVkIikKLSAgICAgIEVORElGKCkKLSAgICBFTkRJRigpCisgICAgICBlbmRpZigpCisgICAgICBpZigke3Zhcn1fQ09NUElMRUQpCisgICAgICAgIG1lc3NhZ2UoU1RBVFVTICIke2Rlc2NyaXB0aW9ufSAtIGNvbXBpbGVkIikKKyAgICAgIGVsc2UoKQorICAgICAgICBtZXNzYWdlKFNUQVRVUyAiJHtkZXNjcmlwdGlvbn0gLSBmYWlsZWQiKQorICAgICAgZW5kaWYoKQorICAgIGVuZGlmKCkKIAogICAgICMgUGFyc2UgaW5mbyBzdHJpbmdzIG91dCBvZiB0aGUgY29tcGlsZWQgYmluYXJ5LgotICAgIElGKCR7dmFyfV9DT01QSUxFRCkKLSAgICAgIEZJTEUoU1RSSU5HUyAke0tXU1lTX1BMQVRGT1JNX0lORk9fRklMRX0gJHt2YXJ9IFJFR0VYICJJTkZPOltBLVphLXowLTldK1xcW1teXV0qXFxdIikKLSAgICBFTFNFKCkKLSAgICAgIFNFVCgke3Zhcn0gIiIpCi0gICAgRU5ESUYoKQorICAgIGlmKCR7dmFyfV9DT01QSUxFRCkKKyAgICAgIGZpbGUoU1RSSU5HUyAke0tXU1lTX1BMQVRGT1JNX0lORk9fRklMRX0gJHt2YXJ9IFJFR0VYICJJTkZPOltBLVphLXowLTldK1xcW1teXV0qXFxdIikKKyAgICBlbHNlKCkKKyAgICAgIHNldCgke3Zhcn0gIiIpCisgICAgZW5kaWYoKQogCi0gICAgU0VUKEtXU1lTX1BMQVRGT1JNX0lORk9fRklMRSkKLSAgRU5ESUYoKQotRU5ETUFDUk8oKQorICAgIHNldChLV1NZU19QTEFURk9STV9JTkZPX0ZJTEUpCisgIGVuZGlmKCkKK2VuZG1hY3JvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9rd3N5cy90ZXN0Q29tbWFuZExpbmVBcmd1bWVudHMuY3h4IGIvU291cmNlL2t3c3lzL3Rlc3RDb21tYW5kTGluZUFyZ3VtZW50cy5jeHgKaW5kZXggMTc3OGE5Yi4uNzllYmUxYSAxMDA2NDQKLS0tIGEvU291cmNlL2t3c3lzL3Rlc3RDb21tYW5kTGluZUFyZ3VtZW50cy5jeHgKKysrIGIvU291cmNlL2t3c3lzL3Rlc3RDb21tYW5kTGluZUFyZ3VtZW50cy5jeHgKQEAgLTk4LDcgKzk4LDcgQEAKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHN0bF9zdHJpbmdzX2FyZ3VtZW50OwogICBzdGQ6OnN0cmluZyB2YWxpZF9zdGxfc3RyaW5nc1tdID0geyAia2VuIiwgImJyYWQiLCAiYmlsbCIsICJhbmR5IiB9OwogCi0gIHR5cGVkZWYga3dzeXM6OkNvbW1hbmRMaW5lQXJndW1lbnRzIGFyZ1Q7CisgIHVzaW5nIGFyZ1QgPSBrd3N5czo6Q29tbWFuZExpbmVBcmd1bWVudHM7CiAKICAgYXJnLkFkZEFyZ3VtZW50KCItLXNvbWUtaW50LXZhcmlhYmxlIiwgYXJnVDo6U1BBQ0VfQVJHVU1FTlQsCiAgICAgICAgICAgICAgICAgICAmc29tZV9pbnRfdmFyaWFibGUsICJTZXQgc29tZSByYW5kb20gaW50IHZhcmlhYmxlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uva3dzeXMvdGVzdENvbW1hbmRMaW5lQXJndW1lbnRzMS5jeHggYi9Tb3VyY2Uva3dzeXMvdGVzdENvbW1hbmRMaW5lQXJndW1lbnRzMS5jeHgKaW5kZXggNjQ1NjFiMS4uY2JjMzAwMiAxMDA2NDQKLS0tIGEvU291cmNlL2t3c3lzL3Rlc3RDb21tYW5kTGluZUFyZ3VtZW50czEuY3h4CisrKyBiL1NvdXJjZS9rd3N5cy90ZXN0Q29tbWFuZExpbmVBcmd1bWVudHMxLmN4eApAQCAtMjUsNyArMjUsNyBAQAogICBzdGQ6OnN0cmluZyBwOwogICBpbnQgcmVzID0gMDsKIAotICB0eXBlZGVmIGt3c3lzOjpDb21tYW5kTGluZUFyZ3VtZW50cyBhcmdUOworICB1c2luZyBhcmdUID0ga3dzeXM6OkNvbW1hbmRMaW5lQXJndW1lbnRzOwogICBhcmcuQWRkQXJndW1lbnQoIi1uIiwgYXJnVDo6U1BBQ0VfQVJHVU1FTlQsICZuLCAiQXJndW1lbnQgTiIpOwogICBhcmcuQWRkQXJndW1lbnQoIi1tIiwgYXJnVDo6RVFVQUxfQVJHVU1FTlQsICZtLCAiQXJndW1lbnQgTSIpOwogICBhcmcuQWRkQm9vbGVhbkFyZ3VtZW50KCItcCIsICZwLCAiQXJndW1lbnQgUCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2t3c3lzL3Rlc3REeW5hbWljTG9hZGVyLmN4eCBiL1NvdXJjZS9rd3N5cy90ZXN0RHluYW1pY0xvYWRlci5jeHgKaW5kZXggMjQyMWFjMC4uNzAzYWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL2t3c3lzL3Rlc3REeW5hbWljTG9hZGVyLmN4eAorKysgYi9Tb3VyY2Uva3dzeXMvdGVzdER5bmFtaWNMb2FkZXIuY3h4CkBAIC0yNSw3ICsyNSw3IEBACiB7CiAgIC8vIENvbnN0cnVjdCBwcm9wZXIgbmFtZSBvZiBsaWIKICAgc3RkOjpzdHJpbmcgc2xuYW1lOwotICBzbG5hbWUgPSBFWEVDVVRBQkxFX09VVFBVVF9QQVRIOworICBzbG5hbWUgPSBSVU5USU1FX09VVFBVVF9ESVJFQ1RPUlk7CiAgIGlmIChzdWJkaXIpIHsKICAgICBzbG5hbWUgKz0gIi8iOwogICAgIHNsbmFtZSArPSBzdWJkaXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uva3dzeXMvdGVzdEVuY29kaW5nLmN4eCBiL1NvdXJjZS9rd3N5cy90ZXN0RW5jb2RpbmcuY3h4CmluZGV4IDk4ODY5N2IuLmQ2NzJhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9rd3N5cy90ZXN0RW5jb2RpbmcuY3h4CisrKyBiL1NvdXJjZS9rd3N5cy90ZXN0RW5jb2RpbmcuY3h4CkBAIC04NSw3ICs4NSw3IEBACiAgIHN0ZDo6d3N0cmluZyB3c3RyID0ga3dzeXM6OkVuY29kaW5nOjpUb1dpZGUoY3N0cik7CiAKICAgd3N0ciA9IGt3c3lzOjpFbmNvZGluZzo6VG9XaWRlKG51bGxwdHIpOwotICBpZiAod3N0ciAhPSBMIiIpIHsKKyAgaWYgKCF3c3RyLmVtcHR5KCkpIHsKICAgICBjb25zdCB3Y2hhcl90KiB3Y3N0ciA9IHdzdHIuY19zdHIoKTsKICAgICBzdGQ6OmNvdXQgPDwgIlRvV2lkZShOVUxMKSByZXR1cm5lZCI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3c3RyLnNpemUoKTsgaSsrKSB7CkBAIC05NSw3ICs5NSw3IEBACiAgICAgcmV0Kys7CiAgIH0KICAgd3N0ciA9IGt3c3lzOjpFbmNvZGluZzo6VG9XaWRlKCIiKTsKLSAgaWYgKHdzdHIgIT0gTCIiKSB7CisgIGlmICghd3N0ci5lbXB0eSgpKSB7CiAgICAgY29uc3Qgd2NoYXJfdCogd2NzdHIgPSB3c3RyLmNfc3RyKCk7CiAgICAgc3RkOjpjb3V0IDw8ICJUb1dpZGUoXCJcIikgcmV0dXJuZWQiOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd3N0ci5zaXplKCk7IGkrKykgewpAQCAtMTEzLDEzICsxMTMsMTMgQEAKICNlbmRpZgogCiAgIHN0ZDo6c3RyaW5nIHN0ciA9IGt3c3lzOjpFbmNvZGluZzo6VG9OYXJyb3cobnVsbHB0cik7Ci0gIGlmIChzdHIgIT0gIiIpIHsKKyAgaWYgKCFzdHIuZW1wdHkoKSkgewogICAgIHN0ZDo6Y291dCA8PCAiVG9OYXJyb3coTlVMTCkgcmV0dXJuZWQgIiA8PCBzdHIgPDwgc3RkOjplbmRsOwogICAgIHJldCsrOwogICB9CiAKICAgc3RyID0ga3dzeXM6OkVuY29kaW5nOjpUb05hcnJvdyhMIiIpOwotICBpZiAod3N0ciAhPSBMIiIpIHsKKyAgaWYgKCF3c3RyLmVtcHR5KCkpIHsKICAgICBzdGQ6OmNvdXQgPDwgIlRvTmFycm93KFwiXCIpIHJldHVybmVkICIgPDwgc3RyIDw8IHN0ZDo6ZW5kbDsKICAgICByZXQrKzsKICAgfQpAQCAtMTQwLDE0ICsxNDAsMTMgQEAKICAgc3RyaW5ncy5wdXNoX2JhY2soc3RkOjpzdHJpbmcoImsiKSArICdcMCcgKyAnXDAnKTsKICAgc3RyaW5ncy5wdXNoX2JhY2soc3RkOjpzdHJpbmcoIlwwXDBcMFwwIiwgNCkgKyAibG1uIiArCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCJcMFwwXDBcMCIsIDQpKTsKLSAgZm9yIChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz46Oml0ZXJhdG9yIGl0ID0gc3RyaW5ncy5iZWdpbigpOwotICAgICAgIGl0ICE9IHN0cmluZ3MuZW5kKCk7ICsraXQpIHsKLSAgICBzdGQ6OndzdHJpbmcgd3N0ciA9IGt3c3lzOjpFbmNvZGluZzo6VG9XaWRlKCppdCk7CisgIGZvciAoYXV0byYgc3RyaW5nIDogc3RyaW5ncykgeworICAgIHN0ZDo6d3N0cmluZyB3c3RyID0ga3dzeXM6OkVuY29kaW5nOjpUb1dpZGUoc3RyaW5nKTsKICAgICBzdGQ6OnN0cmluZyBzdHIgPSBrd3N5czo6RW5jb2Rpbmc6OlRvTmFycm93KHdzdHIpOwotICAgIHN0ZDo6c3RyaW5nIHMoKml0KTsKKyAgICBzdGQ6OnN0cmluZyBzKHN0cmluZyk7CiAgICAgc3RkOjpyZXBsYWNlKHMuYmVnaW4oKSwgcy5lbmQoKSwgJ1wwJywgJyAnKTsKLSAgICBzdGQ6OmNvdXQgPDwgIiciIDw8IHMgPDwgIicgKCIgPDwgaXQtPnNpemUoKSA8PCAiKSIgPDwgc3RkOjplbmRsOwotICAgIGlmIChzdHIgIT0gKml0KSB7CisgICAgc3RkOjpjb3V0IDw8ICInIiA8PCBzIDw8ICInICgiIDw8IHN0cmluZy5zaXplKCkgPDwgIikiIDw8IHN0ZDo6ZW5kbDsKKyAgICBpZiAoc3RyICE9IHN0cmluZykgewogICAgICAgc3RkOjpyZXBsYWNlKHN0ci5iZWdpbigpLCBzdHIuZW5kKCksICdcMCcsICcgJyk7CiAgICAgICBzdGQ6OmNvdXQgPDwgInN0cmluZyB3aXRoIG51bGwgd2FzIGRpZmZlcmVudDogJyIgPDwgc3RyIDw8ICInICgiCiAgICAgICAgICAgICAgICAgPDwgc3RyLnNpemUoKSA8PCAiKSIgPDwgc3RkOjplbmRsOwpkaWZmIC0tZ2l0IGEvU291cmNlL2t3c3lzL3Rlc3RIYXNoU1RMLmN4eCBiL1NvdXJjZS9rd3N5cy90ZXN0SGFzaFNUTC5jeHgKaW5kZXggNGVkMmY4OS4uMThjYWU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL2t3c3lzL3Rlc3RIYXNoU1RMLmN4eAorKysgYi9Tb3VyY2Uva3dzeXMvdGVzdEhhc2hTVEwuY3h4CkBAIC0yNywzMCArMjcsMzAgQEAKIAogc3RhdGljIGJvb2wgdGVzdF9oYXNoX21hcCgpCiB7Ci0gIHR5cGVkZWYga3dzeXM6Omhhc2hfbWFwPGNvbnN0IGNoYXIqLCBpbnQ+IG10eXBlOworICB1c2luZyBtdHlwZSA9IGt3c3lzOjpoYXNoX21hcDxjb25zdCBjaGFyKiwgaW50PjsKICAgbXR5cGUgbTsKICAgY29uc3QgY2hhcioga2V5c1tdID0geyAiaGVsbG8iLCAid29ybGQiIH07CiAgIG1ba2V5c1swXV0gPSAxOwogICBtLmluc2VydChtdHlwZTo6dmFsdWVfdHlwZShrZXlzWzFdLCAyKSk7CiAgIGludCBzdW0gPSAwOwotICBmb3IgKG10eXBlOjppdGVyYXRvciBtaSA9IG0uYmVnaW4oKTsgbWkgIT0gbS5lbmQoKTsgKyttaSkgewotICAgIHN0ZDo6Y291dCA8PCAiRm91bmQgZW50cnkgWyIgPDwgbWktPmZpcnN0IDw8ICIsIiA8PCBtaS0+c2Vjb25kIDw8ICJdIgorICBmb3IgKGF1dG8mIG1pIDogbSkgeworICAgIHN0ZDo6Y291dCA8PCAiRm91bmQgZW50cnkgWyIgPDwgbWkuZmlyc3QgPDwgIiwiIDw8IG1pLnNlY29uZCA8PCAiXSIKICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgIHN1bSArPSBtaS0+c2Vjb25kOworICAgIHN1bSArPSBtaS5zZWNvbmQ7CiAgIH0KICAgcmV0dXJuIHN1bSA9PSAzOwogfQogCiBzdGF0aWMgYm9vbCB0ZXN0X2hhc2hfc2V0KCkKIHsKLSAgdHlwZWRlZiBrd3N5czo6aGFzaF9zZXQ8aW50PiBzdHlwZTsKKyAgdXNpbmcgc3R5cGUgPSBrd3N5czo6aGFzaF9zZXQ8aW50PjsKICAgc3R5cGUgczsKICAgcy5pbnNlcnQoMSk7CiAgIHMuaW5zZXJ0KDIpOwogICBpbnQgc3VtID0gMDsKLSAgZm9yIChzdHlwZTo6aXRlcmF0b3Igc2kgPSBzLmJlZ2luKCk7IHNpICE9IHMuZW5kKCk7ICsrc2kpIHsKLSAgICBzdGQ6OmNvdXQgPDwgIkZvdW5kIGVudHJ5IFsiIDw8ICpzaSA8PCAiXSIgPDwgc3RkOjplbmRsOwotICAgIHN1bSArPSAqc2k7CisgIGZvciAoaW50IHNpIDogcykgeworICAgIHN0ZDo6Y291dCA8PCAiRm91bmQgZW50cnkgWyIgPDwgc2kgPDwgIl0iIDw8IHN0ZDo6ZW5kbDsKKyAgICBzdW0gKz0gc2k7CiAgIH0KICAgcmV0dXJuIHN1bSA9PSAzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2t3c3lzL3Rlc3RTeXN0ZW1Ub29scy5jeHggYi9Tb3VyY2Uva3dzeXMvdGVzdFN5c3RlbVRvb2xzLmN4eAppbmRleCAzZjZlZWI4Li42NzBlOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uva3dzeXMvdGVzdFN5c3RlbVRvb2xzLmN4eAorKysgYi9Tb3VyY2Uva3dzeXMvdGVzdFN5c3RlbVRvb2xzLmN4eApAQCAtNzIxLDggKzcyMSw3IEBACiB7CiAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwogICBzcyA8PCAidmVjdG9yKCI7Ci0gIGZvciAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpID0gdmVjLmJlZ2luKCk7Ci0gICAgICAgaSAhPSB2ZWMuZW5kKCk7ICsraSkgeworICBmb3IgKGF1dG8gaSA9IHZlYy5iZWdpbigpOyBpICE9IHZlYy5lbmQoKTsgKytpKSB7CiAgICAgaWYgKGkgIT0gdmVjLmJlZ2luKCkpIHsKICAgICAgIHNzIDw8ICIsICI7CiAgICAgfQpAQCAtNzQzLDE2ICs3NDIsMTYgQEAKICAgY29uc3QgY2hhciogcmVnaXN0cnlQYXRoID0gIltIS0VZX0xPQ0FMX01BQ0hJTkVcXFNPRlRXQVJFXFxNeUFwcDsgTXlLZXldIjsKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gb3JpZ2luYWxQYXRoczsKLSAgb3JpZ2luYWxQYXRocy5wdXNoX2JhY2socmVnaXN0cnlQYXRoKTsKKyAgb3JpZ2luYWxQYXRocy5lbXBsYWNlX2JhY2socmVnaXN0cnlQYXRoKTsKIAogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZXhwZWN0ZWRQYXRoczsKLSAgZXhwZWN0ZWRQYXRocy5wdXNoX2JhY2socmVnaXN0cnlQYXRoKTsKKyAgZXhwZWN0ZWRQYXRocy5lbXBsYWNlX2JhY2socmVnaXN0cnlQYXRoKTsKICNpZmRlZiBfV0lOMzIKICAgZXhwZWN0ZWRQYXRocy5wdXNoX2JhY2soIkM6L1NvbWV3aGVyZS9zb21ldGhpbmciKTsKICAgZXhwZWN0ZWRQYXRocy5wdXNoX2JhY2soIkQ6L1RlbXAiKTsKICNlbHNlCi0gIGV4cGVjdGVkUGF0aHMucHVzaF9iYWNrKCIvU29tZXdoZXJlL3NvbWV0aGluZyIpOwotICBleHBlY3RlZFBhdGhzLnB1c2hfYmFjaygiL3RtcCIpOworICBleHBlY3RlZFBhdGhzLmVtcGxhY2VfYmFjaygiL1NvbWV3aGVyZS9zb21ldGhpbmciKTsKKyAgZXhwZWN0ZWRQYXRocy5lbXBsYWNlX2JhY2soIi90bXAiKTsKICNlbmRpZgogCiAgIGJvb2wgcmVzID0gdHJ1ZTsKQEAgLTgxNyw3ICs4MTYsNyBAQAogICB9CiAKICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHNlYXJjaFBhdGhzOwotICBzZWFyY2hQYXRocy5wdXNoX2JhY2soVEVTVF9TWVNURU1UT09MU19CSU5BUllfRElSKTsKKyAgc2VhcmNoUGF0aHMuZW1wbGFjZV9iYWNrKFRFU1RfU1lTVEVNVE9PTFNfQklOQVJZX0RJUik7CiAgIGlmIChrd3N5czo6U3lzdGVtVG9vbHM6OkZpbmRGaWxlKHRlc3RGaW5kRmlsZU5hbWUsIHNlYXJjaFBhdGhzLCB0cnVlKQogICAgICAgICAuZW1wdHkoKSkgewogICAgIHN0ZDo6Y2VyciA8PCAiUHJvYmxlbSB3aXRoIEZpbmRGaWxlIHdpdGhvdXQgc3lzdGVtIHBhdGhzIGZvcjogIgpAQCAtMTA4Niw2ICsxMDg1LDM0IEBACiAgIHJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBib29sIENoZWNrVVJMUGFyc2luZygpCit7CisgIGJvb2wgcmV0ID0gdHJ1ZTsKKyAgc3RkOjpzdHJpbmcgdXJsID0gImh0dHA6Ly91c2VyOnB3QGhvc3RuYW1lOjQyL2Z1bGwvdXJsLmNvbSI7CisKKyAgc3RkOjpzdHJpbmcgcHJvdG9jb2wsIHVzZXJuYW1lLCBwYXNzd29yZCwgaG9zdG5hbWUsIGRhdGFwb3J0LCBkYXRhYmFzZTsKKyAga3dzeXM6OlN5c3RlbVRvb2xzOjpQYXJzZVVSTCh1cmwsIHByb3RvY29sLCB1c2VybmFtZSwgcGFzc3dvcmQsIGhvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFwb3J0LCBkYXRhYmFzZSk7CisgIGlmIChwcm90b2NvbCAhPSAiaHR0cCIgfHwgdXNlcm5hbWUgIT0gInVzZXIiIHx8IHBhc3N3b3JkICE9ICJwdyIgfHwKKyAgICAgIGhvc3RuYW1lICE9ICJob3N0bmFtZSIgfHwgZGF0YXBvcnQgIT0gIjQyIiB8fAorICAgICAgZGF0YWJhc2UgIT0gImZ1bGwvdXJsLmNvbSIpIHsKKyAgICBzdGQ6OmNlcnIgPDwgIkluY29ycmVjdCBVUkwgcGFyc2luZyIgPDwgc3RkOjplbmRsOworICAgIHJldCA9IGZhbHNlOworICB9CisKKyAgc3RkOjpzdHJpbmcgdXJpID0KKyAgICAiZmlsZTovL2hvc3RuYW1lL3BhdGgvdG8vIgorICAgICJhJTIwZmlsZSUyMHdpdGglMjBzdHIlQzMlQTBuZyVDMyVBOCUyMGNoJTQwciUyMGFuZCUyMHMlQzIlQjVhY2VzIjsKKyAga3dzeXM6OlN5c3RlbVRvb2xzOjpQYXJzZVVSTCh1cmksIHByb3RvY29sLCB1c2VybmFtZSwgcGFzc3dvcmQsIGhvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFwb3J0LCBkYXRhYmFzZSwgdHJ1ZSk7CisgIGlmIChwcm90b2NvbCAhPSAiZmlsZSIgfHwgaG9zdG5hbWUgIT0gImhvc3RuYW1lIiB8fAorICAgICAgZGF0YWJhc2UgIT0gInBhdGgvdG8vYSBmaWxlIHdpdGggc3Ryw6BuZ8OoIGNoQHIgYW5kIHPCtWFjZXMiKSB7CisgICAgc3RkOjpjZXJyIDw8ICJJbmNvcnJlY3QgVVJMIHBhcnNpbmcgb3IgZGVjb2RpbmciIDw8IHN0ZDo6ZW5kbDsKKyAgICByZXQgPSBmYWxzZTsKKyAgfQorICByZXR1cm4gcmV0OworfQorCiBpbnQgdGVzdFN5c3RlbVRvb2xzKGludCwgY2hhciogW10pCiB7CiAgIGJvb2wgcmVzID0gdHJ1ZTsKQEAgLTExMzMsNSArMTE2MCw3IEBACiAKICAgcmVzICY9IENoZWNrQ29weUZpbGVJZkRpZmZlcmVudCgpOwogCisgIHJlcyAmPSBDaGVja1VSTFBhcnNpbmcoKTsKKwogICByZXR1cm4gcmVzID8gMCA6IDE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uva3dzeXMvdGVzdFN5c3RlbVRvb2xzLmguaW4gYi9Tb3VyY2Uva3dzeXMvdGVzdFN5c3RlbVRvb2xzLmguaW4KaW5kZXggMDIyZTM2ZS4uZTRiODlhNyAxMDA2NDQKLS0tIGEvU291cmNlL2t3c3lzL3Rlc3RTeXN0ZW1Ub29scy5oLmluCisrKyBiL1NvdXJjZS9rd3N5cy90ZXN0U3lzdGVtVG9vbHMuaC5pbgpAQCAtMyw3ICszLDcgQEAKICNpZm5kZWYgQEtXU1lTX05BTUVTUEFDRUBfdGVzdFN5c3RlbXRvb2xzX2gKICNkZWZpbmUgQEtXU1lTX05BTUVTUEFDRUBfdGVzdFN5c3RlbXRvb2xzX2gKIAotI2RlZmluZSBFWEVDVVRBQkxFX09VVFBVVF9QQVRIICJAQ01BS0VfQ1VSUkVOVF9CSU5BUllfRElSQCIKKyNkZWZpbmUgUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICJAQ01BS0VfQ1VSUkVOVF9CSU5BUllfRElSQCIKIAogI2RlZmluZSBURVNUX1NZU1RFTVRPT0xTX1NPVVJDRV9ESVIgIkBURVNUX1NZU1RFTVRPT0xTX1NPVVJDRV9ESVJAIgogI2RlZmluZSBURVNUX1NZU1RFTVRPT0xTX0JJTkFSWV9ESVIgIkBURVNUX1NZU1RFTVRPT0xTX0JJTkFSWV9ESVJAIgpkaWZmIC0tZ2l0IGEvVGVzdHMvQnVpbGREZXBlbmRzL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvQnVpbGREZXBlbmRzL0NNYWtlTGlzdHMudHh0CmluZGV4IGMxYWQxN2MuLjVkZGFlODMgMTAwNjQ0Ci0tLSBhL1Rlc3RzL0J1aWxkRGVwZW5kcy9DTWFrZUxpc3RzLnR4dAorKysgYi9UZXN0cy9CdWlsZERlcGVuZHMvQ01ha2VMaXN0cy50eHQKQEAgLTM2OCw2ICszNjgsMjggQEAKICAgJHtURVNUX0xJTktfREVQRU5EU30KICIpCiAgIGVuZGlmKCkKKworICBzZXQobGlua2RlcDMgJHtCdWlsZERlcGVuZHNfQklOQVJZX0RJUn0vUHJvamVjdC9saW5rZGVwMyR7Q01BS0VfRVhFQ1VUQUJMRV9TVUZGSVh9KQorICBpZigke2xpbmtkZXAzfSBJU19ORVdFUl9USEFOICR7VEVTVF9MSU5LX0RFUEVORFN9KQorICAgIG1lc3NhZ2UoIiQ8TElOS19MQU5HVUFHRT4gaW4gTElOS19ERVBFTkRTIHdvcmtlZCIpCisgIGVsc2UoKQorICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiJDxMSU5LX0xBTkdVQUdFPiBpbiBMSU5LX0RFUEVORFMgZmFpbGVkLiAgRXhlY3V0YWJsZQorICAke2xpbmtkZXAzfQoraXMgbm90IG5ld2VyIHRoYW4gZGVwZW5kZW5jeQorICAke1RFU1RfTElOS19ERVBFTkRTfQorIikKKyAgZW5kaWYoKQorCisgIHNldChsaW5rZGVwNCAke0J1aWxkRGVwZW5kc19CSU5BUllfRElSfS9Qcm9qZWN0L2xpbmtkZXA0JHtDTUFLRV9FWEVDVVRBQkxFX1NVRkZJWH0pCisgIGlmKCR7bGlua2RlcDR9IElTX05FV0VSX1RIQU4gJHtURVNUX0xJTktfREVQRU5EU30pCisgICAgbWVzc2FnZSgiJDxMSU5LX0xBTkdVQUdFPiBpbiBJTlRFUkZBQ0VfTElOS19ERVBFTkRTIHdvcmtlZCIpCisgIGVsc2UoKQorICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiJDxMSU5LX0xBTkdVQUdFPiBpbiBJTlRFUkZBQ0VfTElOS19ERVBFTkRTIGZhaWxlZC4gIEV4ZWN1dGFibGUKKyAgJHtsaW5rZGVwNH0KK2lzIG5vdCBuZXdlciB0aGFuIGRlcGVuZGVuY3kKKyAgJHtURVNUX0xJTktfREVQRU5EU30KKyIpCisgIGVuZGlmKCkKIGVuZGlmKCkKIAogaWYoRVhJU1RTICIke2xpbmtfZGVwZW5kc19ub19zaGFyZWRfY2hlY2tfdHh0fSIpCmRpZmYgLS1naXQgYS9UZXN0cy9CdWlsZERlcGVuZHMvUHJvamVjdC9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL0J1aWxkRGVwZW5kcy9Qcm9qZWN0L0NNYWtlTGlzdHMudHh0CmluZGV4IDgzMzg4MDAuLjgzNTgzYzkgMTAwNjQ0Ci0tLSBhL1Rlc3RzL0J1aWxkRGVwZW5kcy9Qcm9qZWN0L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rlc3RzL0J1aWxkRGVwZW5kcy9Qcm9qZWN0L0NNYWtlTGlzdHMudHh0CkBAIC0xMTgsNiArMTE4LDE0IEBACiAgIHNldF9wcm9wZXJ0eShUQVJHRVQgZm9vX2ludGVyZmFjZSBQUk9QRVJUWSBJTlRFUkZBQ0VfTElOS19ERVBFTkRTICQ8MToke1RFU1RfTElOS19ERVBFTkRTfT4pCiAgIGFkZF9leGVjdXRhYmxlKGxpbmtkZXAyIGxpbmtkZXAuY3h4KQogICB0YXJnZXRfbGlua19saWJyYXJpZXMobGlua2RlcDIgUFJJVkFURSBmb29faW50ZXJmYWNlKQorCisgIGFkZF9leGVjdXRhYmxlKGxpbmtkZXAzIGxpbmtkZXAuY3h4KQorICBzZXRfcHJvcGVydHkoVEFSR0VUIGxpbmtkZXAzIFBST1BFUlRZIExJTktfREVQRU5EUyAkPCQ8TElOS19MQU5HVUFHRTpDWFg+OiR7VEVTVF9MSU5LX0RFUEVORFN9PikKKworICBhZGRfbGlicmFyeShmb29faW50ZXJmYWNlMiBJTlRFUkZBQ0UpCisgIHNldF9wcm9wZXJ0eShUQVJHRVQgZm9vX2ludGVyZmFjZTIgUFJPUEVSVFkgSU5URVJGQUNFX0xJTktfREVQRU5EUyAkPCQ8TElOS19MQU5HVUFHRTpDWFg+OiR7VEVTVF9MSU5LX0RFUEVORFN9PikKKyAgYWRkX2V4ZWN1dGFibGUobGlua2RlcDQgbGlua2RlcC5jeHgpCisgIHRhcmdldF9saW5rX2xpYnJhcmllcyhsaW5rZGVwNCBQUklWQVRFIGZvb19pbnRlcmZhY2UyKQogZW5kaWYoKQogCiBhZGRfbGlicmFyeShsaW5rX2RlcGVuZHNfbm9fc2hhcmVkX2xpYiBTSEFSRUQgbGlua19kZXBlbmRzX25vX3NoYXJlZF9saWIuYwpkaWZmIC0tZ2l0IGEvVGVzdHMvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9DTWFrZUxpc3RzLnR4dAppbmRleCAzM2M3NTE0Li42NDI4MjM1IDEwMDY0NAotLS0gYS9UZXN0cy9DTWFrZUxpc3RzLnR4dAorKysgYi9UZXN0cy9DTWFrZUxpc3RzLnR4dApAQCAtMTQ3OCw2ICsxNDc4LDEwIEBACiAgICAgYWRkX3N1YmRpcmVjdG9yeShVc2VTV0lHKQogICBlbmRpZigpCiAKKyAgaWYoQ01ha2VfVEVTVF9GaW5kUnVieSkKKyAgICBhZGRfc3ViZGlyZWN0b3J5KEZpbmRSdWJ5KQorICBlbmRpZigpCisKICAgYWRkX3N1YmRpcmVjdG9yeShGaW5kVGhyZWFkcykKIAogICAjIE1hdGxhYiBtb2R1bGUKQEAgLTE2MDUsNyArMTYwOSw3IEBACiAgICAgREVQRU5EUyBFeHRlcm5hbFByb2plY3RVcGRhdGVTZXR1cCApCiAKICAgIyBkbyBlYWNoIG9mIHRoZSB0dXRvcmlhbCBzdGVwcwotICBmdW5jdGlvbihhZGRfdHV0b3JpYWxfdGVzdCBzdGVwX25hbWUgdXNlX215bWF0aCkKKyAgZnVuY3Rpb24oYWRkX3R1dG9yaWFsX3Rlc3Qgc3RlcF9uYW1lIHVzZV9teW1hdGggdHV0b3JpYWxfYXJnIHBhc3NfcmVnZXgpCiAgICAgc2V0KHR1dG9yaWFsX3Rlc3RfbmFtZSBUdXRvcmlhbCR7c3RlcF9uYW1lfSkKICAgICBzZXQodHV0b3JpYWxfYnVpbGRfZGlyICIke0NNYWtlX0JJTkFSWV9ESVJ9L1Rlc3RzL1R1dG9yaWFsLyR7c3RlcF9uYW1lfSIpCiAgICAgaWYgKHVzZV9teW1hdGgpCkBAIC0xNjIzLDE5ICsxNjI3LDI4IEBACiAgICAgICAke2J1aWxkX2dlbmVyYXRvcl9hcmdzfQogICAgICAgLS1idWlsZC1wcm9qZWN0IFR1dG9yaWFsCiAgICAgICAtLWJ1aWxkLW9wdGlvbnMgJHt0dXRvcmlhbF9idWlsZF9vcHRpb25zfQotICAgICAgLS10ZXN0LWNvbW1hbmQgVHV0b3JpYWwgMjUuMCkKKyAgICAgIC0tdGVzdC1jb21tYW5kIFR1dG9yaWFsICR7dHV0b3JpYWxfYXJnfSkKKyAgICBzZXRfdGVzdHNfcHJvcGVydGllcygke3R1dG9yaWFsX3Rlc3RfbmFtZX0gUFJPUEVSVElFUworICAgICAgUEFTU19SRUdVTEFSX0VYUFJFU1NJT04gJHtwYXNzX3JlZ2V4fSkKKwogICAgIGxpc3QoQVBQRU5EIFRFU1RfQlVJTERfRElSUyAiJHtDTWFrZV9CSU5BUllfRElSfS8ke3R1dG9yaWFsX2J1aWxkX2Rpcn1fQnVpbGQiKQogICBlbmRmdW5jdGlvbigpCiAKICAgaWYoTk9UIENNYWtlX1RFU1RfRVhURVJOQUxfQ01BS0UpCiAgICAgZm9yZWFjaChTVFAgUkFOR0UgMiAxMikKLSAgICAgIGFkZF90dXRvcmlhbF90ZXN0KFN0ZXAke1NUUH0gVFJVRSkKKyAgICAgIGlmIChTVFAgRVFVQUwgNikKKyAgICAgICAgc2V0KHBhc3NfcmVnZXggIi4qdXNpbmcgbG9nIGFuZCBleHAiKQorICAgICAgZWxzZSgpCisgICAgICAgIHNldChwYXNzX3JlZ2V4ICJUaGUgc3F1YXJlIHJvb3Qgb2YgMjUgaXMgNSIpCisgICAgICBlbmRpZigpCisgICAgICBhZGRfdHV0b3JpYWxfdGVzdChTdGVwJHtTVFB9IFRSVUUgMjUgJHtwYXNzX3JlZ2V4fSkKICAgICBlbmRmb3JlYWNoKCkKLSAgICBhZGRfdHV0b3JpYWxfdGVzdChDb21wbGV0ZSBUUlVFKQorICAgIHNldChwYXNzX3JlZ2V4ICJUaGUgc3F1YXJlIHJvb3Qgb2YgMjUgaXMgNSIpCisgICAgYWRkX3R1dG9yaWFsX3Rlc3QoQ29tcGxldGUgVFJVRSAyNSAke3Bhc3NfcmVnZXh9KQogICAgIGZvcmVhY2goU1RQIFJBTkdFIDMgMTIpCi0gICAgICBhZGRfdHV0b3JpYWxfdGVzdChTdGVwJHtTVFB9IEZBTFNFKQorICAgICAgYWRkX3R1dG9yaWFsX3Rlc3QoU3RlcCR7U1RQfSBGQUxTRSAyNSAke3Bhc3NfcmVnZXh9KQogICAgIGVuZGZvcmVhY2goKQotICAgIGFkZF90dXRvcmlhbF90ZXN0KENvbXBsZXRlIEZBTFNFKQorICAgIGFkZF90dXRvcmlhbF90ZXN0KENvbXBsZXRlIEZBTFNFIDI1ICR7cGFzc19yZWdleH0pCiAgIGVuZGlmKCkKIAogICBhZGRfdGVzdCh0ZXN0aW5nICR7Q01BS0VfQ1RFU1RfQ09NTUFORH0gLUMgXCR7Q1RFU1RfQ09ORklHVVJBVElPTl9UWVBFfQpkaWZmIC0tZ2l0IGEvVGVzdHMvQ01ha2VPbmx5L0FsbEZpbmRNb2R1bGVzL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvQ01ha2VPbmx5L0FsbEZpbmRNb2R1bGVzL0NNYWtlTGlzdHMudHh0CmluZGV4IGE1M2U0NDEuLjQ5YTQwNDEgMTAwNjQ0Ci0tLSBhL1Rlc3RzL0NNYWtlT25seS9BbGxGaW5kTW9kdWxlcy9DTWFrZUxpc3RzLnR4dAorKysgYi9UZXN0cy9DTWFrZU9ubHkvQWxsRmluZE1vZHVsZXMvQ01ha2VMaXN0cy50eHQKQEAgLTg2LDcgKzg2LDcgQEAKIGVuZGZvcmVhY2goKQogCiBmb3JlYWNoKFZURVNUIEJJU09OIEJvb3N0IENVREEgRE9YWUdFTiBGTEVYIEdJRiBHVEsyCi0gICAgICAgIEhERjUgSlBFRyBMaWJBcmNoaXZlIE9QRU5TQ0VORUdSQVBIIFJVQlkgU1dJRyBQcm90b2J1ZikKKyAgICAgICAgSERGNSBKUEVHIExpYkFyY2hpdmUgT1BFTlNDRU5FR1JBUEggUnVieSBSVUJZIFNXSUcgUHJvdG9idWYpCiAgICAgY2hlY2tfdmVyc2lvbl9zdHJpbmcoJHtWVEVTVH0gJHtWVEVTVH1fVkVSU0lPTikKIGVuZGZvcmVhY2goKQogCmRpZmYgLS1naXQgYS9UZXN0cy9DU2hhcnBPbmx5L0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvQ1NoYXJwT25seS9DTWFrZUxpc3RzLnR4dAppbmRleCA4MjA0OWM3Li40MmNiZTJlIDEwMDY0NAotLS0gYS9UZXN0cy9DU2hhcnBPbmx5L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rlc3RzL0NTaGFycE9ubHkvQ01ha2VMaXN0cy50eHQKQEAgLTIsNyArMiw5IEBACiBwcm9qZWN0IChDU2hhcnBPbmx5IENTaGFycCkKIAogIyBDIyBkb2VzIG5vdCBtYWtlIGFueSBkaWZmZXJlbmNlIGJldHdlZW4gU1RBVElDIGFuZCBTSEFSRUQgbGlicwotYWRkX2xpYnJhcnkobGliMSBTVEFUSUMgbGliMS5jcykKK2FkZF9saWJyYXJ5KGxpYjEgU1RBVElDIGxpYjEuY3MgbmVzdGVkL2xpYjEuY3MpCisjd2l0aG91dCB0aGUgc291cmNlIGdyb3VwIHRoaXMgdGVzdCB3aWxsIGZhaWwgdG8gY29tcGlsZQorc291cmNlX2dyb3VwKG5lc3RlZCBGSUxFUyBuZXN0ZWQvbGliMS5jcykKIGFkZF9saWJyYXJ5KGxpYjIgU0hBUkVEIGxpYjIuY3MpCiAKIGFkZF9leGVjdXRhYmxlKENTaGFycE9ubHkgY3NoYXJwb25seS5jcykKZGlmZiAtLWdpdCBhL1Rlc3RzL0NTaGFycE9ubHkvY3NoYXJwb25seS5jcyBiL1Rlc3RzL0NTaGFycE9ubHkvY3NoYXJwb25seS5jcwppbmRleCBhZDQ2NDFhLi4zODkwYzgyIDEwMDY0NAotLS0gYS9UZXN0cy9DU2hhcnBPbmx5L2NzaGFycG9ubHkuY3MKKysrIGIvVGVzdHMvQ1NoYXJwT25seS9jc2hhcnBvbmx5LmNzCkBAIC01LDEwICs1LDggQEAKICAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICAgewogICAgICAgICAgICAgaW50IHZhbCA9IExpYjEuZ2V0UmVzdWx0KCk7Ci0KICAgICAgICAgICAgIExpYjIgbCA9IG5ldyBMaWIyKCk7Ci0gICAgICAgICAgICB2YWwgPSBsLm15VmFsOwotCisgICAgICAgICAgICB2YWwgPSB2YWwgKyAgbC5teVZhbCArIG5lc3RlZC5MaWIxLmdldFJlc3VsdCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvVGVzdHMvQ1NoYXJwT25seS9uZXN0ZWQvbGliMS5jcyBiL1Rlc3RzL0NTaGFycE9ubHkvbmVzdGVkL2xpYjEuY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJmZGU0YgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL0NTaGFycE9ubHkvbmVzdGVkL2xpYjEuY3MKQEAgLTAsMCArMSwxMyBAQAorbmFtZXNwYWNlIENTaGFycE9ubHkKK3sKKyAgICBuYW1lc3BhY2UgbmVzdGVkCisgICAgeworICAgICAgICBwdWJsaWMgY2xhc3MgTGliMQorICAgICAgICB7CisgICAgICAgICAgICBwdWJsaWMgc3RhdGljIGludCBnZXRSZXN1bHQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAyMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL0ZpbmRQeXRob24vQXJ0aWZhY3RzSW50ZXJhY3RpdmUvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9GaW5kUHl0aG9uL0FydGlmYWN0c0ludGVyYWN0aXZlL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNGJlOTIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9GaW5kUHl0aG9uL0FydGlmYWN0c0ludGVyYWN0aXZlL0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsMjQgQEAKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjEpCisKK3Byb2plY3QoVGVzdEFydGlmYWN0c0ludGVyYWN0aXZlIExBTkdVQUdFUyBDKQorCitzZXQgKGNvbXBvbmVudHMgSW50ZXJwcmV0ZXIgRGV2ZWxvcG1lbnQpCitpZiAoQ01ha2VfVEVTVF9GaW5kUHl0aG9uX051bVB5KQorICBsaXN0IChBUFBFTkQgY29tcG9uZW50cyBOdW1QeSkKK2VuZGlmKCkKKworZmluZF9wYWNrYWdlKFB5dGhvbjMgUkVRVUlSRUQgQ09NUE9ORU5UUyAke2NvbXBvbmVudHN9KQorCitpZiAoUHl0aG9uM19BUlRJRkFDVFNfSU5URVJBQ1RJVkUpCisgIGlmIChOT1QgREVGSU5FRCBDQUNIRXtQeXRob24zX0VYRUNVVEFCTEV9CisgICAgICBPUiBOT1QgREVGSU5FRCBDQUNIRXtQeXRob24zX0xJQlJBUll9IE9SIE5PVCBERUZJTkVEIENBQ0hFe1B5dGhvbjNfSU5DTFVERV9ESVJ9CisgICAgICBPUiAoQ01ha2VfVEVTVF9GaW5kUHl0aG9uX051bVB5IEFORCBOT1QgREVGSU5FRCBDQUNIRXtQeXRob24zX051bVB5X0lOQ0xVREVfRElSfSkpCisgICAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIlB5dGhvbjNfQVJUSUZBQ1RTX0lOVEVSQUNUSVZFPU9OIEZhaWxlZC4iKQorICBlbmRpZigpCitlbHNlKCkKKyAgaWYgKERFRklORUQgQ0FDSEV7UHl0aG9uM19FWEVDVVRBQkxFfQorICAgICAgT1IgREVGSU5FRCBDQUNIRXtQeXRob24zX0xJQlJBUll9IE9SIERFRklORUQgQ0FDSEV7UHl0aG9uM19JTkNMVURFX0RJUn0KKyAgICAgIE9SIChDTWFrZV9URVNUX0ZpbmRQeXRob25fTnVtUHkgQU5EIERFRklORUQgQ0FDSEV7UHl0aG9uM19OdW1QeV9JTkNMVURFX0RJUn0pKQorICAgIG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJQeXRob24zX0FSVElGQUNUU19JTlRFUkFDVElWRT1PRkYgRmFpbGVkLiIpCisgIGVuZGlmKCkKK2VuZGlmKCkKZGlmZiAtLWdpdCBhL1Rlc3RzL0ZpbmRQeXRob24vQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9GaW5kUHl0aG9uL0NNYWtlTGlzdHMudHh0CmluZGV4IDAxZmE2YzMuLmQyMzI2ZTQgMTAwNjQ0Ci0tLSBhL1Rlc3RzL0ZpbmRQeXRob24vQ01ha2VMaXN0cy50eHQKKysrIGIvVGVzdHMvRmluZFB5dGhvbi9DTWFrZUxpc3RzLnR4dApAQCAtMTg0LDYgKzE4NCwzNSBAQAogICAgIC0tdGVzdC1jb21tYW5kICR7Q01BS0VfQ1RFU1RfQ09NTUFORH0gLVYgLUMgJDxDT05GSUdVUkFUSU9OPgogICAgICkKIAorICBhZGRfdGVzdChOQU1FIEZpbmRQeXRob24uQXJ0aWZhY3RzSW50ZXJhY3RpdmUuT04gQ09NTUFORAorICAgICR7Q01BS0VfQ1RFU1RfQ09NTUFORH0gLUMgJDxDT05GSUdVUkFUSU9OPgorICAgIC0tYnVpbGQtYW5kLXRlc3QKKyAgICAiJHtDTWFrZV9TT1VSQ0VfRElSfS9UZXN0cy9GaW5kUHl0aG9uL0FydGlmYWN0c0ludGVyYWN0aXZlIgorICAgICIke0NNYWtlX0JJTkFSWV9ESVJ9L1Rlc3RzL0ZpbmRQeXRob24vQXJ0aWZhY3RzSW50ZXJhY3RpdmUuT04iCisgICAgJHtidWlsZF9nZW5lcmF0b3JfYXJnc30KKyAgICAtLWJ1aWxkLXByb2plY3QgVGVzdEFydGlmYWN0c1Njb3BlCisgICAgLS1idWlsZC1vcHRpb25zICR7YnVpbGRfb3B0aW9uc30gIi1EYnVpbGRfZ2VuZXJhdG9yX2FyZ3M9JHtidWlsZF9nZW5lcmF0b3JfYXJnc30iCisgICAgIi1EQ01ha2VfU09VUkNFX0RJUj0ke0NNYWtlX1NPVVJDRV9ESVJ9IgorICAgICItRENNYWtlX0JJTkFSWV9ESVI9JHtDTWFrZV9CSU5BUllfRElSfSIKKyAgICAiLURDTWFrZV9URVNUX0ZpbmRQeXRob25fTnVtUHk9JHtDTWFrZV9URVNUX0ZpbmRQeXRob25fTnVtUHl9IgorICAgICItRFB5dGhvbjNfQVJUSUZBQ1RTX0lOVEVSQUNUSVZFPU9OIgorICAgIC0tdGVzdC1jb21tYW5kICR7Q01BS0VfQ1RFU1RfQ09NTUFORH0gLVYgLUMgJDxDT05GSUdVUkFUSU9OPgorICAgICkKKyAgYWRkX3Rlc3QoTkFNRSBGaW5kUHl0aG9uLkFydGlmYWN0c0ludGVyYWN0aXZlLk9GRiBDT01NQU5ECisgICAgJHtDTUFLRV9DVEVTVF9DT01NQU5EfSAtQyAkPENPTkZJR1VSQVRJT04+CisgICAgLS1idWlsZC1hbmQtdGVzdAorICAgICIke0NNYWtlX1NPVVJDRV9ESVJ9L1Rlc3RzL0ZpbmRQeXRob24vQXJ0aWZhY3RzSW50ZXJhY3RpdmUiCisgICAgIiR7Q01ha2VfQklOQVJZX0RJUn0vVGVzdHMvRmluZFB5dGhvbi9BcnRpZmFjdHNJbnRlcmFjdGl2ZS5PRkYiCisgICAgJHtidWlsZF9nZW5lcmF0b3JfYXJnc30KKyAgICAtLWJ1aWxkLXByb2plY3QgVGVzdEFydGlmYWN0c1Njb3BlCisgICAgLS1idWlsZC1vcHRpb25zICR7YnVpbGRfb3B0aW9uc30gIi1EYnVpbGRfZ2VuZXJhdG9yX2FyZ3M9JHtidWlsZF9nZW5lcmF0b3JfYXJnc30iCisgICAgIi1EQ01ha2VfU09VUkNFX0RJUj0ke0NNYWtlX1NPVVJDRV9ESVJ9IgorICAgICItRENNYWtlX0JJTkFSWV9ESVI9JHtDTWFrZV9CSU5BUllfRElSfSIKKyAgICAiLURDTWFrZV9URVNUX0ZpbmRQeXRob25fTnVtUHk9JHtDTWFrZV9URVNUX0ZpbmRQeXRob25fTnVtUHl9IgorICAgICItRFB5dGhvbjNfQVJUSUZBQ1RTX0lOVEVSQUNUSVZFPU9GRiIKKyAgICAtLXRlc3QtY29tbWFuZCAke0NNQUtFX0NURVNUX0NPTU1BTkR9IC1WIC1DICQ8Q09ORklHVVJBVElPTj4KKyAgICApCisKICAgYWRkX3Rlc3QoTkFNRSBGaW5kUHl0aG9uLkN1c3RvbUZhaWx1cmVNZXNzYWdlIENPTU1BTkQKICAgICAke0NNQUtFX0NURVNUX0NPTU1BTkR9IC1DICQ8Q09ORklHVVJBVElPTj4KICAgICAtLWJ1aWxkLWFuZC10ZXN0CmRpZmYgLS1naXQgYS9UZXN0cy9GaW5kUHl0aG9uL1B5dGhvbjMvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9GaW5kUHl0aG9uL1B5dGhvbjMvQ01ha2VMaXN0cy50eHQKaW5kZXggNjY5MWE0OC4uMzRlYmQyYyAxMDA2NDQKLS0tIGEvVGVzdHMvRmluZFB5dGhvbi9QeXRob24zL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rlc3RzL0ZpbmRQeXRob24vUHl0aG9uMy9DTWFrZUxpc3RzLnR4dApAQCAtMTUsMTQgKzE1LDE0IEBACiBlbmRpZigpCiAKIGlmKE5PVCBUQVJHRVQgUHl0aG9uMzo6SW50ZXJwcmV0ZXIpCi0gIG1lc3NhZ2UoU0VORF9FUlJPUiAiUHl0aG9uMjo6SW50ZXJwcmV0ZXIgbm90IGZvdW5kIikKKyAgbWVzc2FnZShTRU5EX0VSUk9SICJQeXRob24zOjpJbnRlcnByZXRlciBub3QgZm91bmQiKQogZW5kaWYoKQogCiBpZihOT1QgVEFSR0VUIFB5dGhvbjM6OlB5dGhvbikKLSAgbWVzc2FnZShTRU5EX0VSUk9SICJQeXRob24yOjpQeXRob24gbm90IGZvdW5kIikKKyAgbWVzc2FnZShTRU5EX0VSUk9SICJQeXRob24zOjpQeXRob24gbm90IGZvdW5kIikKIGVuZGlmKCkKIGlmKE5PVCBUQVJHRVQgUHl0aG9uMzo6TW9kdWxlKQotICBtZXNzYWdlKFNFTkRfRVJST1IgIlB5dGhvbjI6Ok1vZHVsZSBub3QgZm91bmQiKQorICBtZXNzYWdlKFNFTkRfRVJST1IgIlB5dGhvbjM6Ok1vZHVsZSBub3QgZm91bmQiKQogZW5kaWYoKQogCiBQeXRob24zX2FkZF9saWJyYXJ5IChzcGFtMyBNT0RVTEUgLi4vc3BhbS5jKQpkaWZmIC0tZ2l0IGEvVGVzdHMvRmluZFJ1YnkvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9GaW5kUnVieS9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjQ4MDdjCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvRmluZFJ1YnkvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSw1NyBAQAoraWYoQ01ha2VfVEVTVF9GaW5kUnVieSkKKworICAjIExvb2tzIGZvciBydWJ5ID49MS45LjksIHdoaWNoIGlzIHRydWUgb24gYW55IFVidW50dSAodGhhdCBpbnN0YWxscyBpdCkgb3IgbWFjT1MgKD4gMTAuOSkKKyAgYWRkX3Rlc3QoTkFNRSBGaW5kUnVieS5UZXN0IENPTU1BTkQKKyAgICAke0NNQUtFX0NURVNUX0NPTU1BTkR9IC1DICQ8Q09ORklHVVJBVElPTj4KKyAgICAtLWJ1aWxkLWFuZC10ZXN0CisgICAgIiR7Q01ha2VfU09VUkNFX0RJUn0vVGVzdHMvRmluZFJ1YnkvVGVzdCIKKyAgICAiJHtDTWFrZV9CSU5BUllfRElSfS9UZXN0cy9GaW5kUnVieS9UZXN0IgorICAgICR7YnVpbGRfZ2VuZXJhdG9yX2FyZ3N9CisgICAgLS1idWlsZC1wcm9qZWN0IFRlc3RSdWJ5CisgICAgLS1idWlsZC1vcHRpb25zICR7YnVpbGRfb3B0aW9uc30KKyAgICAtLXRlc3QtY29tbWFuZCAke0NNQUtFX0NURVNUX0NPTU1BTkR9IC1WIC1DICQ8Q09ORklHVVJBVElPTj4KKyAgICApCisKKyAgIyBMb29rcyBmb3IgcnVieSA+PSA1MC4xLjAsIHdoaWNoIHNob3VsZCBsb2dpY2FsbHkgZmFpbAorICBhZGRfdGVzdChOQU1FIEZpbmRSdWJ5LkZhaWwgQ09NTUFORAorICAgICR7Q01BS0VfQ1RFU1RfQ09NTUFORH0gLUMgJDxDT05GSUdVUkFUSU9OPgorICAgIC0tYnVpbGQtYW5kLXRlc3QKKyAgICAiJHtDTWFrZV9TT1VSQ0VfRElSfS9UZXN0cy9GaW5kUnVieS9GYWlsIgorICAgICIke0NNYWtlX0JJTkFSWV9ESVJ9L1Rlc3RzL0ZpbmRSdWJ5L0ZhaWwiCisgICAgJHtidWlsZF9nZW5lcmF0b3JfYXJnc30KKyAgICAtLWJ1aWxkLXByb2plY3QgVGVzdFJ1YnlGYWlsCisgICAgLS1idWlsZC1vcHRpb25zICR7YnVpbGRfb3B0aW9uc30KKyAgICAtLXRlc3QtY29tbWFuZCAke0NNQUtFX0NURVNUX0NPTU1BTkR9IC1WIC1DICQ8Q09ORklHVVJBVElPTj4KKyAgICApCisgIHNldF90ZXN0c19wcm9wZXJ0aWVzKEZpbmRSdWJ5LkZhaWwgUFJPUEVSVElFUworICAgIFBBU1NfUkVHVUxBUl9FWFBSRVNTSU9OICJDb3VsZCBOT1QgZmluZCBSdWJ5LiooUmVxdWlyZWQgaXMgYXQgbGVhc3QgdmVyc2lvbiBcIlswLTldK1xcLlswLTldK1xcLlswLTldK1wiKSIpCisKKyAgIyBMb29rcyBmb3IgMS45LjkgRVhBQ1RMWSwgd2hpY2ggdW5saWtlIHRoZSAiRmluZFJ1YnkiIHRlc3QgYWJvdmUgd2lsbCBmYWlsIG9uIGV2ZXJ5IG1hY2hpbmUKKyAgIyBzaW5jZSB0aGlzIHZlcnNpb24gZG9lc24ndCBleGlzdCAocnVieSBnb2VzIGZyb20gMS45LjMgdG8gMi4wLjApCisgIGFkZF90ZXN0KE5BTUUgRmluZFJ1YnkuRmFpbEV4YWN0IENPTU1BTkQKKyAgICAke0NNQUtFX0NURVNUX0NPTU1BTkR9IC1DICQ8Q09ORklHVVJBVElPTj4KKyAgICAtLWJ1aWxkLWFuZC10ZXN0CisgICAgIiR7Q01ha2VfU09VUkNFX0RJUn0vVGVzdHMvRmluZFJ1YnkvRmFpbEV4YWN0IgorICAgICIke0NNYWtlX0JJTkFSWV9ESVJ9L1Rlc3RzL0ZpbmRSdWJ5L0ZhaWxFeGFjdCIKKyAgICAke2J1aWxkX2dlbmVyYXRvcl9hcmdzfQorICAgIC0tYnVpbGQtcHJvamVjdCBUZXN0UnVieUZhaWxFeGFjdAorICAgIC0tYnVpbGQtb3B0aW9ucyAke2J1aWxkX29wdGlvbnN9CisgICAgLS10ZXN0LWNvbW1hbmQgJHtDTUFLRV9DVEVTVF9DT01NQU5EfSAtViAtQyAkPENPTkZJR1VSQVRJT04+CisgICAgKQorICBzZXRfdGVzdHNfcHJvcGVydGllcyhGaW5kUnVieS5GYWlsRXhhY3QgUFJPUEVSVElFUworICAgIFBBU1NfUkVHVUxBUl9FWFBSRVNTSU9OICJDb3VsZCBOT1QgZmluZCBSdWJ5OiBGb3VuZCB1bnN1aXRhYmxlIHZlcnNpb24gXCIuKlwiLCBidXQgcmVxdWlyZWQgaXMuKmV4YWN0IHZlcnNpb24gXCJbMC05XStcXC5bMC05XStcXC5bMC05XStcIiBcXChmb3VuZCAuKlxcKSIpCisKKyAgIyBSVk0gc3BlY2lmaWMgdGVzdAorICBpZihDTWFrZV9URVNUX0ZpbmRSdWJ5X1JWTSkKKyAgICBhZGRfdGVzdChOQU1FIEZpbmRSdWJ5LlJ2bSBDT01NQU5ECisgICAgICAke0NNQUtFX0NURVNUX0NPTU1BTkR9IC1DICQ8Q09ORklHVVJBVElPTj4KKyAgICAgIC0tYnVpbGQtYW5kLXRlc3QKKyAgICAgICIke0NNYWtlX1NPVVJDRV9ESVJ9L1Rlc3RzL0ZpbmRSdWJ5L1J2bSIKKyAgICAgICIke0NNYWtlX0JJTkFSWV9ESVJ9L1Rlc3RzL0ZpbmRSdWJ5L1J2bSIKKyAgICAgICR7YnVpbGRfZ2VuZXJhdG9yX2FyZ3N9CisgICAgICAtLWJ1aWxkLXByb2plY3QgVGVzdFJWTQorICAgICAgLS1idWlsZC1vcHRpb25zICR7YnVpbGRfb3B0aW9uc30KKyAgICAgIC0tdGVzdC1jb21tYW5kICR7Q01BS0VfQ1RFU1RfQ09NTUFORH0gLVYgLUMgJDxDT05GSUdVUkFUSU9OPgorICAgICAgKQorICBlbmRpZigpCitlbmRpZigpCmRpZmYgLS1naXQgYS9UZXN0cy9GaW5kUnVieS9GYWlsL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvRmluZFJ1YnkvRmFpbC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTg1YmE1Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvRmluZFJ1YnkvRmFpbC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDUgQEAKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjE3KQorcHJvamVjdChUZXN0UnVieUZhaWwgTEFOR1VBR0VTIE5PTkUpCisKKyMgU2hvdWxkIGFsd2F5cyBmYWlsIHNpbmNlIHRoZXJlIGlzIE5PIHJ1YnkgNTAuMS4wIHlldC4KK2ZpbmRfcGFja2FnZShSdWJ5IDUwLjEuMCBSRVFVSVJFRCkKZGlmZiAtLWdpdCBhL1Rlc3RzL0ZpbmRSdWJ5L0ZhaWxFeGFjdC9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL0ZpbmRSdWJ5L0ZhaWxFeGFjdC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWJjMGFlCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvRmluZFJ1YnkvRmFpbEV4YWN0L0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsOCBAQAorY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuMTcpCitwcm9qZWN0KFRlc3RSdWJ5RmFpbEV4YWN0IExBTkdVQUdFUyBOT05FKQorCisjIFNob3VsZCBhbHdheXMgZmFpbCBzaW5jZSB0aGVyZSBpcyBOTyBydWJ5IDEuOS45IChnb2VzIGZyb20gMS45LjMgdG8gMi4wLjApCitmaW5kX3BhY2thZ2UoUnVieSAxLjkuOSBFWEFDVCBSRVFVSVJFRCkKK2lmIChOT1QgUnVieV9GT1VORCkKKyAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIkZhaWxlZCB0byBmaW5kIFJ1YnkgMS45LjkiKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvRmluZFJ1YnkvUnZtL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvRmluZFJ1YnkvUnZtL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NWZjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9GaW5kUnVieS9Sdm0vQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSw3NSBAQAorY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuMTcpCitwcm9qZWN0KFRlc3RSVk0gTEFOR1VBR0VTIE5PTkUpCisKK2luY2x1ZGUoQ1Rlc3QpCisKKyMgVG8gcnVuIHRoaXMgdGVzdCwgeW91IG5lZWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgUlZNIHJ1YnkgaW5zdGFsbGVkCisjIGFuZCB0byBlbnN1cmUgdGhhdCB0aGUgZW52IHZhcmlhYmxlICdNWV9SVUJZX0hPTUUnIGlzIHNldCB0byBhIHZhbGlkIFJWTSBydWJ5IHdoZW4geW91IHJ1biB0aGUgdGVzdAorIyAod2hpY2ggaXMgdGhlIGNhc2UgaWYgeW91IGhhdmUgZG9uZSBgcnZtIHVzZSB4LnkuemAsIGJ1dCBjb3VsZCBiZSBtYW51YWxseSBzZXQgdG9vKQorCisjIFByb3Blcmx5IHVzaW5nIHJ2bSB3b3VsZCByZXF1aXJlIHNvdXJjaW5nIGEgc2hlbGwgc2NyaXB0LCBlZyBgc291cmNlICIkSE9NRS8ucnZtL3NjcmlwdHMvcnZtImAKKyMgSW5zdGVhZCwgSSdsbCBqdXN0IHJlbHkgb24gdGhlIGVudiB2YXJpYWJsZSBNWV9SVUJZX0hPTUUKK3NldChNWV9SVUJZX0hPTUUgIiRFTlZ7TVlfUlVCWV9IT01FfSIpCitpZihOT1QgTVlfUlVCWV9IT01FKQorICBtZXNzYWdlKEZBVEFMX0VSUk9SICJFbnYgdmFyaWFibGUgTVlfUlVCWV9IT01FIHNob3VsZCBiZSBzZXQgdG8gYSB2YWxpZCBSVk0gcnVieSBsb2NhdGlvbiwgb3IgeW91IHNob3VsZCBjYWxsIGBydm0gdXNlIHgueS56YCBiZWZvcmUiKQorZW5kaWYoKQorZXhlY3V0ZV9wcm9jZXNzIChDT01NQU5EICIke01ZX1JVQllfSE9NRX0vYmluL3J1YnkiIC1lICJwdXRzIFJVQllfVkVSU0lPTiIKKyAgICAgICAgICAgICAgICAgUkVTVUxUX1ZBUklBQkxFIHJlc3VsdAorICAgICAgICAgICAgICAgICBPVVRQVVRfVkFSSUFCTEUgUlZNX1JVQllfVkVSU0lPTgorICAgICAgICAgICAgICAgICBFUlJPUl9RVUlFVAorICAgICAgICAgICAgICAgICBPVVRQVVRfU1RSSVBfVFJBSUxJTkdfV0hJVEVTUEFDRSkKKworaWYgKHJlc3VsdCkKKyAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIlVuYWJsZSB0byBkZXRlY3QgUlZNIHJ1YnkgdmVyc2lvbiBmcm9tIGAke01ZX1JVQllfSE9NRX0vYmluL3J1YnlgOiAke1JWTV9SVUJZX1ZFUlNJT059IikKK2VuZGlmKCkKKworZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgIiR7Q01BS0VfQ09NTUFORH0iIC1FIGVudiAtLXVuc2V0PU1ZX1JVQllfSE9NRSAtLXVuc2V0PVBBVEgKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aGljaCIgInJ1YnkiCisgICAgICAgICAgICAgICAgIFJFU1VMVF9WQVJJQUJMRSByZXN1bHQKKyAgICAgICAgICAgICAgICAgT1VUUFVUX1ZBUklBQkxFIFNZU1RFTV9SVUJZCisgICAgICAgICAgICAgICAgIEVSUk9SX1FVSUVUCisgICAgICAgICAgICAgICAgIE9VVFBVVF9TVFJJUF9UUkFJTElOR19XSElURVNQQUNFKQorCitpZiAoU1lTVEVNX1JVQlkgTUFUQ0hFUyAiXiR7TVlfUlVCWV9IT01FfS8uKyIpCisgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIlVuYWJsZSB0byBmaW5kIHN5c3RlbSBydWJ5LCBmb3VuZCAke1NZU1RFTV9SVUJZfSB3aGljaCBpcyBwYXJ0IG9mIE1ZX1JVQllfSE9NRT0ke01ZX1JVQllfSE9NRX0iKQorZW5kaWYoKQorCisjIENoZWNrIHZlcnNpb24gb2YgdGhlIHN5c3RlbSBydWJ5IGV4ZWN1dGFibGUuCitleGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgIiR7U1lTVEVNX1JVQll9IiAtZSAicHV0cyBSVUJZX1ZFUlNJT04iCisgICAgICAgICAgICAgICAgIFJFU1VMVF9WQVJJQUJMRSByZXN1bHQKKyAgICAgICAgICAgICAgICAgT1VUUFVUX1ZBUklBQkxFIFNZU1RFTV9SVUJZX1ZFUlNJT04KKyAgICAgICAgICAgICAgICAgRVJST1JfUVVJRVQKKyAgICAgICAgICAgICAgICAgT1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BBQ0UpCisKK2lmIChyZXN1bHQpCisgIG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJVbmFibGUgdG8gZGV0ZWN0IHN5c3RlbSBydWJ5IHZlcnNpb24gZnJvbSAnJHtTWVNURU1fUlVCWX0nOiAke1NZU1RFTV9SVUJZX1ZFUlNJT059IikKK2VuZGlmKCkKKworaWYoU1lTVEVNX1JVQllfVkVSU0lPTiBWRVJTSU9OX0VRVUFMIFJWTV9SVUJZX1ZFUlNJT04pCisgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIllvdXIgUlZNIFJ1YnkgVmVyc2lvbiBhbmQgeW91ciBTeXN0ZW0gcnVieSB2ZXJzaW9uIGFyZSB0aGUgc2FtZSAoJHtSVk1fUlVCWV9WRVJTSU9OfSkuIikKK2VuZGlmKCkKKworbWVzc2FnZSgiRm91bmQgU3lzdGVtIFJ1YnkgKCR7U1lTVEVNX1JVQllfVkVSU0lPTn0pOiAke1NZU1RFTV9SVUJZfSIpCittZXNzYWdlKCJGb3VuZCAgUlZNICAgUnVieSAoJHtSVk1fUlVCWV9WRVJTSU9OfSk6ICR7TVlfUlVCWV9IT01FfS9iaW4vcnVieSIpCisKK2FkZF90ZXN0KE5BTUUgRmluZFJ1YnkuUnZtRGVmYXVsdAorICAgICAgICAgQ09NTUFORCAiJHtDTUFLRV9DT01NQU5EfSIgLUUgZW52ICJNWV9SVUJZX0hPTUU9JHtNWV9SVUJZX0hPTUV9IgorICAgICAgICAgICAgICAgICAiJHtDTUFLRV9DT01NQU5EfSIgIi1EUlVCWV9IT01FPSR7TVlfUlVCWV9IT01FfSIKKyAgICAgICAgICAgICAgICAgLVAgIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vUnZtRGVmYXVsdC5jbWFrZSIpCisKK2FkZF90ZXN0KE5BTUUgRmluZFJ1YnkuUnZtT25seQorICBDT01NQU5EICIke0NNQUtFX0NPTU1BTkR9IiAtRSBlbnYgLS11bnNldD1QQVRICisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTVlfUlVCWV9IT01FPSR7TVlfUlVCWV9IT01FfSIKKyAgICAgICAgICAiJHtDTUFLRV9DT01NQU5EfSIgIi1EUlVCWV9IT01FPSR7TVlfUlVCWV9IT01FfSIKKyAgICAgICAgICAgICAgICAgIi1EUlZNX1JVQllfVkVSU0lPTj0ke1JWTV9SVUJZX1ZFUlNJT059IiAiLURTWVNURU1fUlVCWV9WRVJTSU9OPSR7U1lTVEVNX1JVQllfVkVSU0lPTn0iCisgICAgICAgICAgICAgICAgIC1QICIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L1J2bU9ubHkuY21ha2UiKQorYWRkX3Rlc3QoTkFNRSBGaW5kUnVieS5VbnNldFJ2bU9ubHkKKyAgICAgICAgIENPTU1BTkQgIiR7Q01BS0VfQ09NTUFORH0iIC1FIGVudiAtLXVuc2V0PU1ZX1JVQllfSE9NRSAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW46L3Vzci9nYW1lczovdXNyL2xvY2FsL2dhbWVzOi9zbmFwL2JpbiIKKyAgICAgICAgICAgICAgICAgIiR7Q01BS0VfQ09NTUFORH0iICItRFJWTV9SVUJZX1ZFUlNJT049JHtSVk1fUlVCWV9WRVJTSU9OfSIgIi1EU1lTVEVNX1JVQllfVkVSU0lPTj0ke1NZU1RFTV9SVUJZX1ZFUlNJT059IgorICAgICAgICAgICAgICAgICAtUCAiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9Sdm1Pbmx5LmNtYWtlIikKKworYWRkX3Rlc3QoTkFNRSBGaW5kUnVieS5Sdm1TdGFuZGFyZAorICAgICAgICAgQ09NTUFORCAiJHtDTUFLRV9DT01NQU5EfSIgLUUgZW52ICJQQVRIPS91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVzOi91c3IvbG9jYWwvZ2FtZXM6L3NuYXAvYmluIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNWV9SVUJZX0hPTUU9JHtNWV9SVUJZX0hPTUV9IgorICAgICAgICAgICAgICAgICAiJHtDTUFLRV9DT01NQU5EfSIgIi1EUlVCWV9IT01FPSR7TVlfUlVCWV9IT01FfSIKKyAgICAgICAgICAgICAgICAgLVAgIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vUnZtU3RhbmRhcmQuY21ha2UiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvRmluZFJ1YnkvUnZtL1J2bURlZmF1bHQuY21ha2UgYi9UZXN0cy9GaW5kUnVieS9Sdm0vUnZtRGVmYXVsdC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjZiOTExCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvRmluZFJ1YnkvUnZtL1J2bURlZmF1bHQuY21ha2UKQEAgLTAsMCArMSwxNyBAQAorc2V0KENNQUtFX0ZJTkRfTElCUkFSWV9QUkVGSVhFUyAiIikKK3NldChDTUFLRV9GSU5EX0xJQlJBUllfU1VGRklYRVMgIiIpCisKK2ZpbmRfcGFja2FnZSAoUnVieSAyLjEuMSBSRVFVSVJFRCkKK2lmIChOT1QgUlVCWV9FWEVDVVRBQkxFIE1BVENIRVMgIl4ke1JVQllfSE9NRX0vLisiKQorICBtZXNzYWdlIChGQVRBTF9FUlJPUiAiRmFpbGVkIHRvIHVzZSBSVk0gZW52aXJvbm1lbnQ6ICR7UlVCWV9FWEVDVVRBQkxFfSwgJHtSVUJZX0hPTUV9IikKK2VuZGlmKCkKKworZmluZF9wYWNrYWdlIChSdWJ5IDIuMSBSRVFVSVJFRCkKK2lmIChOT1QgUlVCWV9FWEVDVVRBQkxFIE1BVENIRVMgIl4ke1JVQllfSE9NRX0vLisiKQorICBtZXNzYWdlIChGQVRBTF9FUlJPUiAiRmFpbGVkIHRvIHVzZSBSVk0gZW52aXJvbm1lbnQ6ICR7UlVCWV9FWEVDVVRBQkxFfSwgJHtSVUJZX0hPTUV9IikKK2VuZGlmKCkKKworZmluZF9wYWNrYWdlIChSdWJ5IFJFUVVJUkVEKQoraWYgKE5PVCBSVUJZX0VYRUNVVEFCTEUgTUFUQ0hFUyAiXiR7UlVCWV9IT01FfS8uKyIpCisgIG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJGYWlsZWQgdG8gdXNlIFJWTSBlbnZpcm9ubWVudDogJHtSVUJZX0VYRUNVVEFCTEV9LCAke1JVQllfSE9NRX0iKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvRmluZFJ1YnkvUnZtL1J2bU9ubHkuY21ha2UgYi9UZXN0cy9GaW5kUnVieS9Sdm0vUnZtT25seS5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODUxYTdjCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvRmluZFJ1YnkvUnZtL1J2bU9ubHkuY21ha2UKQEAgLTAsMCArMSw0MSBAQAorc2V0KENNQUtFX0ZJTkRfTElCUkFSWV9QUkVGSVhFUyAiIikKK3NldChDTUFLRV9GSU5EX0xJQlJBUllfU1VGRklYRVMgIiIpCisKK3NldChSdWJ5X0ZJTkRfVklSVFVBTEVOViBPTkxZKQorCisjIFRlc3Q6IEZpbmRSdWJ5LlJ2bU9ubHkKK2lmIChSVUJZX0hPTUUpCisgICMgPT4gVHJ5aW5nIHRvIGZpbmQgZXhhY3RseSBzeXN0ZW0gcnVieSB1c2luZyBPTkxZIHZpcnR1YWwgZW52aXJvbm1lbnQgc2hvdWxkIGZhaWwKKyAgZmluZF9wYWNrYWdlIChSdWJ5ICR7U1lTVEVNX1JVQllfVkVSU0lPTn0gRVhBQ1QgUVVJRVQpCisgIGlmKFJ1YnlfRk9VTkQpCisgICAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIlJ1YnkgdW5leHBlY3RlZGx5IGZvdW5kLiIpCisgIGVuZGlmKCkKKyAgIyBBbmQgc2hvdWxkIHdvcmsgdG8gZmluZCB0aGUgcnZtIHZlcnNpb24KKyAgZmluZF9wYWNrYWdlIChSdWJ5ICR7UlZNX1JVQllfVkVSU0lPTn0gRVhBQ1QgUVVJRVQpCisgIGlmKFJ1YnlfRk9VTkQpCisgICAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIlJ1YnkgdW5leHBlY3RlZGx5IGZvdW5kLiIpCisgIGVuZGlmKCkKK2VuZGlmKCkKKworCisjIFRlc3Q6IEZpbmRSdWJ5LlVuc2V0UnZtT25seQoraWYgKE5PVCBSVUJZX0hPTUUpCisKKyAgIyBJZiBFTlZ7TVlfUlVCWV9IT01FfSBpc24ndCBkZWZpbmVkLCBpdCBzaG91bGQgZGVmYXVsdCBiYWNrIHRvICJTVEFOREFSRCIKKyAgIyBBdCB3aGljaCBwb2ludDoKKworICAjIEl0IHNob3VsZG4ndCBmaW5kIHRoZSBSVk0gcnVieQorICBmaW5kX3BhY2thZ2UgKFJ1YnkgJHtSVk1fUlVCWV9WRVJTSU9OfSBFWEFDVCBRVUlFVCkKKyAgaWYoUnVieV9GT1VORCkKKyAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJGb3VuZCBSVk0gcnVieSB3aGVuIGV4cGVjdGluZyBzeXN0ZW0iKQorICBlbmRpZigpCisKKyAgIyBpdCBzaG91bGQgZmluZCB0aGUgc3lzdGVtIHJ1YnkKKyAgZmluZF9wYWNrYWdlIChSdWJ5ICR7U1lTVEVNX1JVQllfVkVSU0lPTn0gRVhBQ1QgUVVJRVQpCisgIGlmKE5PVCBSdWJ5X0ZPVU5EKQorICAgIG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJSdWJ5IG5vdCBmb3VuZC4iKQorICBlbmRpZigpCisgIGlmIChSdWJ5X0ZPVU5EIE1BVENIRVMgIl4ke1JVQllfSE9NRX0vLisiKQorICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkZhaWxlZCB0byBmaW5kIHN5c3RlbSBydWJ5IikKKyAgZW5kaWYoKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvRmluZFJ1YnkvUnZtL1J2bVN0YW5kYXJkLmNtYWtlIGIvVGVzdHMvRmluZFJ1YnkvUnZtL1J2bVN0YW5kYXJkLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YmVmZGIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9GaW5kUnVieS9Sdm0vUnZtU3RhbmRhcmQuY21ha2UKQEAgLTAsMCArMSw5IEBACitzZXQoQ01BS0VfRklORF9MSUJSQVJZX1BSRUZJWEVTICIiKQorc2V0KENNQUtFX0ZJTkRfTElCUkFSWV9TVUZGSVhFUyAiIikKKworc2V0IChSdWJ5X0ZJTkRfVklSVFVBTEVOViBTVEFOREFSRCkKK2ZpbmRfcGFja2FnZSAoUnVieSBSRVFVSVJFRCkKKworaWYgKFJVQllfRVhFQ1VUQUJMRSBNQVRDSEVTICJeJHtSVUJZX0hPTUV9Ly4rIikKKyAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIlJWTSBydWJ5IHVuZXhwZWN0ZWRseSBmb3VuZCBhdCAke1JVQllfRVhFQ1VUQUJMRX0sIG1hdGNoZXMgJHtSVUJZX0hPTUV9IikKK2VuZGlmKCkKZGlmZiAtLWdpdCBhL1Rlc3RzL0ZpbmRSdWJ5L1Rlc3QvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9GaW5kUnVieS9UZXN0L0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZjNlYzMKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9GaW5kUnVieS9UZXN0L0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsMTQgQEAKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjE3KQorcHJvamVjdChUZXN0UnVieSBMQU5HVUFHRVMgQykKK2luY2x1ZGUoQ1Rlc3QpCisKK2ZpbmRfcGFja2FnZShSdWJ5IDEuOS45IFJFUVVJUkVEKQoraWYgKE5PVCBSdWJ5X0ZPVU5EKQorICBtZXNzYWdlIChGQVRBTF9FUlJPUiAiRmFpbGVkIHRvIGZpbmQgUnVieSA+PTEuOS45IikKK2VuZGlmKCkKKworYWRkX2V4ZWN1dGFibGUocnVieV92ZXJzaW9uIHJ1YnlfdmVyc2lvbi5jKQordGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMocnVieV92ZXJzaW9uIFBSSVZBVEUgJHtSdWJ5X0lOQ0xVREVfRElSU30pCit0YXJnZXRfbGlua19saWJyYXJpZXMocnVieV92ZXJzaW9uIFBSSVZBVEUgJHtSdWJ5X0xJQlJBUklFU30pCisKK2FkZF90ZXN0KE5BTUUgcnVieV92ZXJzaW9uIENPTU1BTkQgcnVieV92ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvVGVzdHMvRmluZFJ1YnkvVGVzdC9ydWJ5X3ZlcnNpb24uYyBiL1Rlc3RzL0ZpbmRSdWJ5L1Rlc3QvcnVieV92ZXJzaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgwMDQzNgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL0ZpbmRSdWJ5L1Rlc3QvcnVieV92ZXJzaW9uLmMKQEAgLTAsMCArMSw3IEBACisjaW5jbHVkZSAicnVieS5oIgorCitpbnQgbWFpbih2b2lkKQoreworICBydWJ5X3Nob3dfdmVyc2lvbigpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Rlc3RzL0ZpbmRYMTEvVGVzdC9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL0ZpbmRYMTEvVGVzdC9DTWFrZUxpc3RzLnR4dAppbmRleCA3NjkyNzFmLi5iMmFkZmIyIDEwMDY0NAotLS0gYS9UZXN0cy9GaW5kWDExL1Rlc3QvQ01ha2VMaXN0cy50eHQKKysrIGIvVGVzdHMvRmluZFgxMS9UZXN0L0NNYWtlTGlzdHMudHh0CkBAIC0yOSw2ICsyOSwxMCBAQAogc2V0KFgxMV9YMTFfRk9VTkQgJHtYMTFfRk9VTkR9KQogdGVzdF94MTFfY29tcG9uZW50KHgxMV9jb21wb25lbnRzIFgxMSkKIHRlc3RfeDExX2NvbXBvbmVudCh4MTFfY29tcG9uZW50cyBYYXUpCit0ZXN0X3gxMV9jb21wb25lbnQoeDExX2NvbXBvbmVudHMgeGNiKQordGVzdF94MTFfY29tcG9uZW50KHgxMV9jb21wb25lbnRzIFgxMV94Y2IpCit0ZXN0X3gxMV9jb21wb25lbnQoeDExX2NvbXBvbmVudHMgeGNiX2ljY2NtKQordGVzdF94MTFfY29tcG9uZW50KHgxMV9jb21wb25lbnRzIHhjYl94a2IpCiB0ZXN0X3gxMV9jb21wb25lbnQoeDExX2NvbXBvbmVudHMgWGNvbXBvc2l0ZSkKIHRlc3RfeDExX2NvbXBvbmVudCh4MTFfY29tcG9uZW50cyBYZGFtYWdlKQogdGVzdF94MTFfY29tcG9uZW50KHgxMV9jb21wb25lbnRzIFhkbWNwKQpAQCAtNDEsNiArNDUsOCBAQAogdGVzdF94MTFfY29tcG9uZW50KHgxMV9jb21wb25lbnRzX2lnbm9yZSBYZnQpCiB0ZXN0X3gxMV9jb21wb25lbnQoeDExX2NvbXBvbmVudHMgWGkpCiB0ZXN0X3gxMV9jb21wb25lbnQoeDExX2NvbXBvbmVudHMgWGluZXJhbWEpCit0ZXN0X3gxMV9jb21wb25lbnQoeDExX2NvbXBvbmVudHMgeGtiY29tbW9uKQordGVzdF94MTFfY29tcG9uZW50KHgxMV9jb21wb25lbnRzIHhrYmNvbW1vbl9YMTEpCiB0ZXN0X3gxMV9jb21wb25lbnQoeDExX2NvbXBvbmVudHMgWGtiKQogdGVzdF94MTFfY29tcG9uZW50KHgxMV9jb21wb25lbnRzIHhrYmZpbGUpCiB0ZXN0X3gxMV9jb21wb25lbnQoeDExX2NvbXBvbmVudHMgWG11KQpAQCAtNjEsNiArNjcsOSBAQAogIyBOb3QgaW5jbHVkZWQgaW4gWDExX0xJQlJBUklFUy4KIGZvcmVhY2gobGliCiAgICAgWGF1CisgICAgeGNiCisgICAgWDExX3hjYgorICAgIHhjYl9pY2NjbQogICAgIFhjb21wb3NpdGUKICAgICBYZGFtYWdlCiAgICAgWGRtY3AKQEAgLTY5LDYgKzc4LDggQEAKICAgICBYZml4ZXMKICAgICBYaQogICAgIFhpbmVyYW1hCisgICAgeGtiY29tbW9uCisgICAgeGtiY29tbW9uX1gxMQogICAgIFhrYgogICAgIHhrYmZpbGUKICAgICBYbXUKZGlmZiAtLWdpdCBhL1Rlc3RzL0ZvcnRyYW5Nb2R1bGVzL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvRm9ydHJhbk1vZHVsZXMvQ01ha2VMaXN0cy50eHQKaW5kZXggZDA1NmI0My4uYjdhNmY2OCAxMDA2NDQKLS0tIGEvVGVzdHMvRm9ydHJhbk1vZHVsZXMvQ01ha2VMaXN0cy50eHQKKysrIGIvVGVzdHMvRm9ydHJhbk1vZHVsZXMvQ01ha2VMaXN0cy50eHQKQEAgLTIxLDcgKzIxLDcgQEAKIHN1Ym1vZHVsZSAoIHBhcmVudCApIGNoaWxkCiBjb250YWlucwogICBtb2R1bGUgcHJvY2VkdXJlIGlkCi0gICAgZiA9IHgKKyAgICBpZCA9IHgKICAgZW5kIHByb2NlZHVyZSBpZAogZW5kIHN1Ym1vZHVsZSBjaGlsZAogcHJvZ3JhbSBtYWluCmRpZmYgLS1naXQgYS9UZXN0cy9Gb3J0cmFuT25seS9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL0ZvcnRyYW5Pbmx5L0NNYWtlTGlzdHMudHh0CmluZGV4IGQ5NDUzNzUuLjQzMjdjMmYgMTAwNjQ0Ci0tLSBhL1Rlc3RzL0ZvcnRyYW5Pbmx5L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rlc3RzL0ZvcnRyYW5Pbmx5L0NNYWtlTGlzdHMudHh0CkBAIC01MSw0MCArNTEsMzYgQEAKICAgKQogYWRkX2RlcGVuZGVuY2llcyhjaGVja3NheWhlbGxvIHNheWhlbGxvKQogCi0jIEV4Y2x1ZGUgdGhpcyB0ZXN0IG9uIElCTSBYTCBmb3Igbm93IGJlY2F1c2UgdGhlIGNoZWNrIHN0cmFuZ2VseQotIyBmYWlscyB3aXRoICdsZDogMDcwNi0wMjkgVXNlIGEgbnVtYmVyIHdpdGggdGhlIC1IIGZsYWcnLgotaWYoTk9UIENNQUtFX0ZvcnRyYW5fQ09NUElMRVJfSUQgU1RSRVFVQUwgWEwpCi0gIHNldChlcnJfbG9nICR7Q01BS0VfQklOQVJZX0RJUn0vQ01ha2VGaWxlcy9DTWFrZUVycm9yLmxvZykKLSAgZmlsZShSRU1PVkUgIiR7ZXJyX2xvZ30iKQotICBpbmNsdWRlKENoZWNrRm9ydHJhblNvdXJjZUNvbXBpbGVzKQotICB1bnNldChIQVZFX1BSSU5UIENBQ0hFKQotICBDSEVDS19Gb3J0cmFuX1NPVVJDRV9DT01QSUxFUyhbWworc2V0KGVycl9sb2cgJHtDTUFLRV9CSU5BUllfRElSfS9DTWFrZUZpbGVzL0NNYWtlRXJyb3IubG9nKQorZmlsZShSRU1PVkUgIiR7ZXJyX2xvZ30iKQoraW5jbHVkZShDaGVja0ZvcnRyYW5Tb3VyY2VDb21waWxlcykKK3Vuc2V0KEhBVkVfUFJJTlQgQ0FDSEUpCitDSEVDS19Gb3J0cmFuX1NPVVJDRV9DT01QSUxFUyhbWwogICAgICAgUFJPR1JBTSBURVNUX0hBVkVfUFJJTlQKICAgICAgICAgUFJJTlQgKiwgJ0hlbGxvJwogICAgICAgRU5ECiBdXSBIQVZFX1BSSU5UKQotICBpZihOT1QgSEFWRV9QUklOVCkKLSAgICBpZihFWElTVFMgIiR7ZXJyX2xvZ30iKQotICAgICAgZmlsZShSRUFEICIke2Vycl9sb2d9IiBlcnIpCi0gICAgZW5kaWYoKQotICAgIHN0cmluZyhSRVBMQUNFICJcbiIgIlxuICAiIGVyciAiICAke2Vycn0iKQotICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiQ0hFQ0tfRm9ydHJhbl9TT1VSQ0VfQ09NUElMRVMgZm9yIEhBVkVfUFJJTlQgZmFpbGVkOlxuIgotICAgICAgIiR7ZXJyfSIpCitpZihOT1QgSEFWRV9QUklOVCkKKyAgaWYoRVhJU1RTICIke2Vycl9sb2d9IikKKyAgICBmaWxlKFJFQUQgIiR7ZXJyX2xvZ30iIGVycikKICAgZW5kaWYoKQorICBzdHJpbmcoUkVQTEFDRSAiXG4iICJcbiAgIiBlcnIgIiAgJHtlcnJ9IikKKyAgbWVzc2FnZShTRU5EX0VSUk9SICJDSEVDS19Gb3J0cmFuX1NPVVJDRV9DT01QSUxFUyBmb3IgSEFWRV9QUklOVCBmYWlsZWQ6XG4iCisgICAgIiR7ZXJyfSIpCitlbmRpZigpCiAKLSAgdW5zZXQoRm9ydHJhbl9CT0dVU19GTEFHIENBQ0hFKQotICBpbmNsdWRlKENoZWNrRm9ydHJhbkNvbXBpbGVyRmxhZykKLSAgQ0hFQ0tfRm9ydHJhbl9DT01QSUxFUl9GTEFHKC1fdGhpc19pc19ub3RfYV9mbGFnXyBGb3J0cmFuX0JPR1VTX0ZMQUcpCi0gIGlmIChGb3J0cmFuX0JPR1VTX0ZMQUcpCi0gICAgbWVzc2FnZShTRU5EX0VSUk9SICJDSEVDS19Gb3J0cmFuX0NPTVBJTEVSX0ZMQUcoKSBzdWNjZWVkZWQsIGJ1dCBzaG91bGQgaGF2ZSBmYWlsZWQiKQotICBlbmRpZigpCit1bnNldChGb3J0cmFuX0JPR1VTX0ZMQUcgQ0FDSEUpCitpbmNsdWRlKENoZWNrRm9ydHJhbkNvbXBpbGVyRmxhZykKK0NIRUNLX0ZvcnRyYW5fQ09NUElMRVJfRkxBRygtX3RoaXNfaXNfbm90X2FfZmxhZ18gRm9ydHJhbl9CT0dVU19GTEFHKQoraWYgKEZvcnRyYW5fQk9HVVNfRkxBRykKKyAgbWVzc2FnZShTRU5EX0VSUk9SICJDSEVDS19Gb3J0cmFuX0NPTVBJTEVSX0ZMQUcoKSBzdWNjZWVkZWQsIGJ1dCBzaG91bGQgaGF2ZSBmYWlsZWQiKQorZW5kaWYoKQogCi0gIHVuc2V0KEZvcnRyYW5fUlVOX0ZMQUcgQ0FDSEUpCi0gIGluY2x1ZGUoQ2hlY2tGb3J0cmFuU291cmNlUnVucykKLSAgY2hlY2tfZm9ydHJhbl9zb3VyY2VfcnVucygicHJvZ3JhbSBhOyBlbmQgcHJvZ3JhbSIgRm9ydHJhbl9SVU5fRkxBRyBTUkNfRVhUIEY5MCkKLSAgaWYoTk9UIEZvcnRyYW5fUlVOX0ZMQUcpCi0gICAgbWVzc2FnZShTRU5EX0VSUk9SICJDSEVDS19Gb3J0cmFuX1NPVVJDRV9SVU5TKCkgZmFpbGVkIikKLSAgZW5kaWYoKQordW5zZXQoRm9ydHJhbl9SVU5fRkxBRyBDQUNIRSkKK2luY2x1ZGUoQ2hlY2tGb3J0cmFuU291cmNlUnVucykKK2NoZWNrX2ZvcnRyYW5fc291cmNlX3J1bnMoInByb2dyYW0gYTsgZW5kIHByb2dyYW0iIEZvcnRyYW5fUlVOX0ZMQUcgU1JDX0VYVCBGOTApCitpZihOT1QgRm9ydHJhbl9SVU5fRkxBRykKKyAgbWVzc2FnZShTRU5EX0VSUk9SICJDSEVDS19Gb3J0cmFuX1NPVVJDRV9SVU5TKCkgZmFpbGVkIikKIGVuZGlmKCkKIAogIyBUZXN0IGdlbmVyYXRpb24gb2YgcHJlcHJvY2Vzc2VkIHNvdXJjZXMuCmRpZmYgLS1naXQgYS9UZXN0cy9PYmplY3RMaWJyYXJ5L0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvT2JqZWN0TGlicmFyeS9DTWFrZUxpc3RzLnR4dAppbmRleCA3ODk3YWI5Li5mY2E1ZjQxIDEwMDY0NAotLS0gYS9UZXN0cy9PYmplY3RMaWJyYXJ5L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rlc3RzL09iamVjdExpYnJhcnkvQ01ha2VMaXN0cy50eHQKQEAgLTczLDMgKzczLDUgQEAKIHRhcmdldF9saW5rX2xpYnJhcmllcyhVc2VBQnN0YXRpY09ianMgQUJzdGF0aWMpCiAKIGFkZF9zdWJkaXJlY3RvcnkoRXhwb3J0TGFuZ3VhZ2VzKQorCithZGRfc3ViZGlyZWN0b3J5KFRyYW5zaXRpdmUpCmRpZmYgLS1naXQgYS9UZXN0cy9PYmplY3RMaWJyYXJ5L1RyYW5zaXRpdmUvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9PYmplY3RMaWJyYXJ5L1RyYW5zaXRpdmUvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYxNmNkYQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL09iamVjdExpYnJhcnkvVHJhbnNpdGl2ZS9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDEyIEBACitjbWFrZV9wb2xpY3koU0VUIENNUDAwMjIgTkVXKQorYWRkX2xpYnJhcnkoRm9vU3RhdGljIFNUQVRJQyBGb29TdGF0aWMuYykKKworYWRkX2xpYnJhcnkoRm9vT2JqZWN0MSBPQkpFQ1QgRm9vT2JqZWN0LmMpCit0YXJnZXRfbGlua19saWJyYXJpZXMoRm9vT2JqZWN0MSBQUklWQVRFIEZvb1N0YXRpYykKK2FkZF9leGVjdXRhYmxlKFRyYW5zaXRpdmUxIFRyYW5zaXRpdmUuYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyhUcmFuc2l0aXZlMSBQUklWQVRFIEZvb09iamVjdDEpCisKK2FkZF9saWJyYXJ5KEZvb09iamVjdDIgT0JKRUNUIEZvb09iamVjdC5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKEZvb09iamVjdDIgSU5URVJGQUNFIEZvb1N0YXRpYykKK2FkZF9leGVjdXRhYmxlKFRyYW5zaXRpdmUyIFRyYW5zaXRpdmUuYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyhUcmFuc2l0aXZlMiBQUklWQVRFIEZvb09iamVjdDIpCmRpZmYgLS1naXQgYS9UZXN0cy9PYmplY3RMaWJyYXJ5L1RyYW5zaXRpdmUvRm9vT2JqZWN0LmMgYi9UZXN0cy9PYmplY3RMaWJyYXJ5L1RyYW5zaXRpdmUvRm9vT2JqZWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRjMWYyOQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL09iamVjdExpYnJhcnkvVHJhbnNpdGl2ZS9Gb29PYmplY3QuYwpAQCAtMCwwICsxLDQgQEAKK2ludCBGb29PYmplY3Qodm9pZCkKK3sKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9UZXN0cy9PYmplY3RMaWJyYXJ5L1RyYW5zaXRpdmUvRm9vU3RhdGljLmMgYi9UZXN0cy9PYmplY3RMaWJyYXJ5L1RyYW5zaXRpdmUvRm9vU3RhdGljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ2NDljNwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL09iamVjdExpYnJhcnkvVHJhbnNpdGl2ZS9Gb29TdGF0aWMuYwpAQCAtMCwwICsxLDQgQEAKK2ludCBGb29TdGF0aWModm9pZCkKK3sKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9UZXN0cy9PYmplY3RMaWJyYXJ5L1RyYW5zaXRpdmUvVHJhbnNpdGl2ZS5jIGIvVGVzdHMvT2JqZWN0TGlicmFyeS9UcmFuc2l0aXZlL1RyYW5zaXRpdmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzA4OWI4Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvT2JqZWN0TGlicmFyeS9UcmFuc2l0aXZlL1RyYW5zaXRpdmUuYwpAQCAtMCwwICsxLDcgQEAKK2V4dGVybiBpbnQgRm9vT2JqZWN0KHZvaWQpOworZXh0ZXJuIGludCBGb29TdGF0aWModm9pZCk7CisKK2ludCBtYWluKHZvaWQpCit7CisgIHJldHVybiBGb29PYmplY3QoKSArIEZvb1N0YXRpYygpOworfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUHJlcHJvY2Vzcy9wcmVwcm9jZXNzLmMgYi9UZXN0cy9QcmVwcm9jZXNzL3ByZXByb2Nlc3MuYwppbmRleCA5NThjNzdlLi5iMzExN2RhIDEwMDY0NAotLS0gYS9UZXN0cy9QcmVwcm9jZXNzL3ByZXByb2Nlc3MuYworKysgYi9UZXN0cy9QcmVwcm9jZXNzL3ByZXByb2Nlc3MuYwpAQCAtMTUsMjEgKzE1LDIxIEBACiAgICAgcmVzdWx0ID0gMDsKICAgfQogICBpZiAoc3RyY21wKFRBUkdFVF9TVFJJTkcsIFNUUklOR19WQUxVRSkgIT0gMCkgewotICAgIGZwcmludGYoc3RkZXJyLCAiVEFSR0VUX1NUUklORyBoYXMgd3JvbmcgdmFsdWUgaW4gQyBbJXNdXG4iLAotICAgICAgICAgICAgVEFSR0VUX1NUUklORyk7CisgICAgZnByaW50ZihzdGRlcnIsICJUQVJHRVRfU1RSSU5HIGhhcyB3cm9uZyB2YWx1ZSBpbiBDIFslc10gdnMgWyVzXVxuIiwKKyAgICAgICAgICAgIFRBUkdFVF9TVFJJTkcsIFNUUklOR19WQUxVRSk7CiAgICAgcmVzdWx0ID0gMDsKICAgfQogICB7CiAgICAgaW50IHggPSAyOwogICAgIGludCB5ID0gMzsKICAgICBpZiAoKEZJTEVfRVhQUikgIT0gKEVYUFIpKSB7Ci0gICAgICBmcHJpbnRmKHN0ZGVyciwgIkZJTEVfRVhQUiBkaWQgbm90IHdvcmsgaW4gQyBbJXNdXG4iLAotICAgICAgICAgICAgICBUT19TVFJJTkcoRklMRV9FWFBSKSk7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZJTEVfRVhQUiBkaWQgbm90IHdvcmsgaW4gQyBbJXNdIHZzIFslc11cbiIsCisgICAgICAgICAgICAgIFRPX1NUUklORyhGSUxFX0VYUFIpLCBUT19TVFJJTkcoRVhQUikpOwogICAgICAgcmVzdWx0ID0gMDsKICAgICB9CiAgICAgaWYgKChUQVJHRVRfRVhQUikgIT0gKEVYUFIpKSB7Ci0gICAgICBmcHJpbnRmKHN0ZGVyciwgIlRBUkdFVF9FWFBSIGRpZCBub3Qgd29yayBpbiBDIFslc11cbiIsCi0gICAgICAgICAgICAgIFRPX1NUUklORyhGSUxFX0VYUFIpKTsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiVEFSR0VUX0VYUFIgZGlkIG5vdCB3b3JrIGluIEMgWyVzXSB2cyBbJXNdXG4iLAorICAgICAgICAgICAgICBUT19TVFJJTkcoVEFSR0VUX0VYUFIpLCBUT19TVFJJTkcoRVhQUikpOwogICAgICAgcmVzdWx0ID0gMDsKICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL1Rlc3RzL1ByZXByb2Nlc3MvcHJlcHJvY2Vzcy5jeHggYi9UZXN0cy9QcmVwcm9jZXNzL3ByZXByb2Nlc3MuY3h4CmluZGV4IDM0YTY5YzYuLmYyZmZmZWYgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1ByZXByb2Nlc3MvcHJlcHJvY2Vzcy5jeHgKKysrIGIvVGVzdHMvUHJlcHJvY2Vzcy9wcmVwcm9jZXNzLmN4eApAQCAtMTIsMjUgKzEyLDI2IEBACiB7CiAgIGludCByZXN1bHQgPSAxOwogICBpZiAoc3RyY21wKEZJTEVfU1RSSU5HLCBTVFJJTkdfVkFMVUUpICE9IDApIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZJTEVfU1RSSU5HIGhhcyB3cm9uZyB2YWx1ZSBpbiBDWFggWyVzXVxuIiwgRklMRV9TVFJJTkcpOworICAgIGZwcmludGYoc3RkZXJyLCAiRklMRV9TVFJJTkcgaGFzIHdyb25nIHZhbHVlIGluIENYWCBbJXNdIHZzIFslc11cbiIsCisgICAgICAgICAgICBGSUxFX1NUUklORywgU1RSSU5HX1ZBTFVFKTsKICAgICByZXN1bHQgPSAwOwogICB9CiAgIGlmIChzdHJjbXAoVEFSR0VUX1NUUklORywgU1RSSU5HX1ZBTFVFKSAhPSAwKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJUQVJHRVRfU1RSSU5HIGhhcyB3cm9uZyB2YWx1ZSBpbiBDWFggWyVzXVxuIiwKLSAgICAgICAgICAgIFRBUkdFVF9TVFJJTkcpOworICAgIGZwcmludGYoc3RkZXJyLCAiVEFSR0VUX1NUUklORyBoYXMgd3JvbmcgdmFsdWUgaW4gQ1hYIFslc10gdnMgWyVzXVxuIiwKKyAgICAgICAgICAgIFRBUkdFVF9TVFJJTkcsIFNUUklOR19WQUxVRSk7CiAgICAgcmVzdWx0ID0gMDsKICAgfQogICB7CiAgICAgaW50IHggPSAyOwogICAgIGludCB5ID0gMzsKICAgICBpZiAoKEZJTEVfRVhQUikgIT0gKEVYUFIpKSB7Ci0gICAgICBmcHJpbnRmKHN0ZGVyciwgIkZJTEVfRVhQUiBkaWQgbm90IHdvcmsgaW4gQ1hYIFslc11cbiIsCi0gICAgICAgICAgICAgIFRPX1NUUklORyhGSUxFX0VYUFIpKTsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiRklMRV9FWFBSIGRpZCBub3Qgd29yayBpbiBDWFggWyVzXSB2cyBbJXNdXG4iLAorICAgICAgICAgICAgICBUT19TVFJJTkcoRklMRV9FWFBSKSwgVE9fU1RSSU5HKEVYUFIpKTsKICAgICAgIHJlc3VsdCA9IDA7CiAgICAgfQogICAgIGlmICgoVEFSR0VUX0VYUFIpICE9IChFWFBSKSkgewotICAgICAgZnByaW50ZihzdGRlcnIsICJUQVJHRVRfRVhQUiBkaWQgbm90IHdvcmsgaW4gQ1hYIFslc11cbiIsCi0gICAgICAgICAgICAgIFRPX1NUUklORyhGSUxFX0VYUFIpKTsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiVEFSR0VUX0VYUFIgZGlkIG5vdCB3b3JrIGluIENYWCBbJXNdIHZzIFslc11cbiIsCisgICAgICAgICAgICAgIFRPX1NUUklORyhUQVJHRVRfRVhQUiksIFRPX1NUUklORyhFWFBSKSk7CiAgICAgICByZXN1bHQgPSAwOwogICAgIH0KICAgfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQnVpbGREZXBlbmRzL0dOVS1BUy1zdGRvdXQudHh0IGIvVGVzdHMvUnVuQ01ha2UvQnVpbGREZXBlbmRzL0dOVS1BUy1zdGRvdXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MzI2YWUKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9CdWlsZERlcGVuZHMvR05VLUFTLXN0ZG91dC50eHQKQEAgLTAsMCArMSw0IEBACistLSBUaGUgQVNNIGNvbXBpbGVyIGlkZW50aWZpY2F0aW9uIGlzIEdOVQorLS0gRm91bmQgYXNzZW1ibGVyOiBbXgorXSovYXMoXC5leGUpPworLS0gQ01BS0VfQVNNX0NPTVBJTEVSX0lEX1ZFTkRPUl9NQVRDSD0nR05VIGFzc2VtYmxlcicKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0J1aWxkRGVwZW5kcy9HTlUtQVMuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9CdWlsZERlcGVuZHMvR05VLUFTLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxOTIxZWYKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9CdWlsZERlcGVuZHMvR05VLUFTLmNtYWtlCkBAIC0wLDAgKzEsMTMgQEAKK2VuYWJsZV9sYW5ndWFnZShBU00pCisKKyMgVmFsaWRhdGUgdW5kb2N1bWVudGVkIGltcGxlbWVudGF0aW9uIGRldGFpbC4KK21lc3NhZ2UoU1RBVFVTICJDTUFLRV9BU00ke0FTTV9ESUFMRUNUfV9DT01QSUxFUl9JRF9WRU5ET1JfTUFUQ0g9JyR7Q01BS0VfQVNNJHtBU01fRElBTEVDVH1fQ09NUElMRVJfSURfVkVORE9SX01BVENIfSciKQorCithZGRfbGlicmFyeShnbnVfYXMgU1RBVElDIGdudV9hcy5zKQordGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ251X2FzIFBSSVZBVEUgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9KQorCitmaWxlKEdFTkVSQVRFIE9VVFBVVCAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vY2hlY2stJDxMT1dFUl9DQVNFOiQ8Q09ORklHPj4uY21ha2UgQ09OVEVOVCAiCitzZXQoY2hlY2tfcGFpcnMKKyAgXCIkPFRBUkdFVF9GSUxFOmdudV9hcz58JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2dudV9hcy5pbmNcIgorICApCisiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQnVpbGREZXBlbmRzL0dOVS1BUy5zdGVwMS5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0J1aWxkRGVwZW5kcy9HTlUtQVMuc3RlcDEuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVhNWU5NgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0J1aWxkRGVwZW5kcy9HTlUtQVMuc3RlcDEuY21ha2UKQEAgLTAsMCArMSBAQAorZmlsZShXUklURSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L2dudV9hcy5pbmMiICIiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQnVpbGREZXBlbmRzL0dOVS1BUy5zdGVwMi5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0J1aWxkRGVwZW5kcy9HTlUtQVMuc3RlcDIuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVhNWU5NgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0J1aWxkRGVwZW5kcy9HTlUtQVMuc3RlcDIuY21ha2UKQEAgLTAsMCArMSBAQAorZmlsZShXUklURSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L2dudV9hcy5pbmMiICIiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQnVpbGREZXBlbmRzL1J1bkNNYWtlVGVzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0J1aWxkRGVwZW5kcy9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggMTRhZTI0My4uNzUzNDE3ZCAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvQnVpbGREZXBlbmRzL1J1bkNNYWtlVGVzdC5jbWFrZQorKysgYi9UZXN0cy9SdW5DTWFrZS9CdWlsZERlcGVuZHMvUnVuQ01ha2VUZXN0LmNtYWtlCkBAIC0xMDMsMyArMTAzLDggQEAKIGlmKFJ1bkNNYWtlX0dFTkVSQVRPUiBTVFJFUVVBTCAiWGNvZGUiKQogICBydW5fUmVHZW5lcmF0aW9uKHJlZ2VuZXJhdGUtcHJvamVjdCkKIGVuZGlmKCkKKworaWYoQ01ha2VfVEVTVF9CdWlsZERlcGVuZHNfR05VX0FTKQorICBzZXQoRU5We0FTTX0gIiR7Q01ha2VfVEVTVF9CdWlsZERlcGVuZHNfR05VX0FTfSIpCisgIHJ1bl9CdWlsZERlcGVuZHMoR05VLUFTKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQnVpbGREZXBlbmRzL2dudV9hcy5zIGIvVGVzdHMvUnVuQ01ha2UvQnVpbGREZXBlbmRzL2dudV9hcy5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyZTdkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9CdWlsZERlcGVuZHMvZ251X2FzLnMKQEAgLTAsMCArMSBAQAorLmluY2x1ZGUgImdudV9hcy5pbmMiCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU5ZjhiY2EuLjJhNGFmM2UgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0CkBAIC0xNjksNyArMTY5LDIwIEBACiAgIHNldChhdXRvZ2VuX3dpdGhfcXQ1IFRSVUUpCiBlbmRpZiAoKQogYWRkX1J1bkNNYWtlX3Rlc3QoQXV0b2dlbiAtRHdpdGhfcXQ1PSR7YXV0b2dlbl93aXRoX3F0NX0pCi1hZGRfUnVuQ01ha2VfdGVzdChCdWlsZERlcGVuZHMpCitpZihOT1QgREVGSU5FRCBDTWFrZV9URVNUX0J1aWxkRGVwZW5kc19HTlVfQVMKKyAgICBBTkQgQ01BS0VfQ19DT01QSUxFUl9JRCBTVFJFUVVBTCAiR05VIgorICAgIEFORCBDTUFLRV9HRU5FUkFUT1IgTUFUQ0hFUyAiXk5pbmphIgorICAgICkKKyAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgIiR7Q01BS0VfQ19DT01QSUxFUn0iIC1wcmludC1wcm9nLW5hbWU9YXMKKyAgICBSRVNVTFRfVkFSSUFCTEUgX2dudV9yZXMKKyAgICBPVVRQVVRfVkFSSUFCTEUgX2dudV9hcyBPVVRQVVRfU1RSSVBfVFJBSUxJTkdfV0hJVEVTUEFDRSBFUlJPUl9RVUlFVCkKKyAgaWYoX2dudV9yZXMgRVFVQUwgMCBBTkQgX2dudV9hcykKKyAgICBzZXQoQ01ha2VfVEVTVF9CdWlsZERlcGVuZHNfR05VX0FTICIke19nbnVfYXN9IikKKyAgZW5kaWYoKQorZW5kaWYoKQorYWRkX1J1bkNNYWtlX3Rlc3QoQnVpbGREZXBlbmRzCisgIC1EQ01ha2VfVEVTVF9CdWlsZERlcGVuZHNfR05VX0FTPSR7Q01ha2VfVEVTVF9CdWlsZERlcGVuZHNfR05VX0FTfQorICApCiBpZihVTklYIEFORCAiJHtDTUFLRV9HRU5FUkFUT1J9IiBNQVRDSEVTICJVbml4IE1ha2VmaWxlc3xOaW5qYSIpCiAgIGFkZF9SdW5DTWFrZV90ZXN0KEJ5cHJvZHVjdHMpCiBlbmRpZigpCkBAIC0xODgsNiArMjAxLDcgQEAKIGFkZF9SdW5DTWFrZV90ZXN0KEZpbmRMdWEpCiBhZGRfUnVuQ01ha2VfdGVzdChGaW5kT3BlbkdMKQogaWYoQ01ha2VfVEVTVF9Vc2VTV0lHKQorICBhZGRfUnVuQ01ha2VfdGVzdChGaW5kU1dJRykKICAgYWRkX1J1bkNNYWtlX3Rlc3QoVXNlU1dJRyAtRENNYWtlX1RFU1RfRmluZFB5dGhvbj0ke0NNYWtlX1RFU1RfRmluZFB5dGhvbn0pCiBlbmRpZigpCiBpZihOT1QgQ01BS0VfQ19DT01QSUxFUl9JRCBNQVRDSEVTICJXYXRjb20iKQpAQCAtNDQ3LDYgKzQ2MSw4IEBACiAgIGFkZF9SdW5DTWFrZV90ZXN0KEZyYW1ld29yaykKIGVuZGlmKCkKIAorYWRkX1J1bkNNYWtlX3Rlc3QoRmlsZV9BcmNoaXZlKQorYWRkX1J1bkNNYWtlX3Rlc3QoRmlsZV9Db25maWd1cmUpCiBhZGRfUnVuQ01ha2VfdGVzdChGaWxlX0dlbmVyYXRlKQogYWRkX1J1bkNNYWtlX3Rlc3QoRXhwb3J0V2l0aG91dExhbmd1YWdlKQogYWRkX1J1bkNNYWtlX3Rlc3QodGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMpCkBAIC02NDksNSArNjY1LDcgQEAKIAogYWRkX1J1bkNNYWtlX3Rlc3QoIkNUZXN0Q29tbWFuZEV4cGFuZExpc3RzIikKIAotYWRkX1J1bkNNYWtlX3Rlc3QoUHJlY29tcGlsZUhlYWRlcnMpCithZGRfUnVuQ01ha2VfdGVzdChQcmVjb21waWxlSGVhZGVycyAtRENNQUtFX0NfQ09NUElMRVJfSUQ9JHtDTUFLRV9DX0NPTVBJTEVSX0lEfSkKIGFkZF9SdW5DTWFrZV90ZXN0KCJVbml0eUJ1aWxkIikKKworYWRkX1J1bkNNYWtlX3Rlc3QoY21ha2VfY29tbWFuZCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0NQYWNrL3Rlc3RzL0lOU1RBTExfU0NSSVBUUy9WZXJpZnlSZXN1bHQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9DUGFjay90ZXN0cy9JTlNUQUxMX1NDUklQVFMvVmVyaWZ5UmVzdWx0LmNtYWtlCmluZGV4IGQ3ZDgyZjIuLjFhMWU5ODMgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1J1bkNNYWtlL0NQYWNrL3Rlc3RzL0lOU1RBTExfU0NSSVBUUy9WZXJpZnlSZXN1bHQuY21ha2UKKysrIGIvVGVzdHMvUnVuQ01ha2UvQ1BhY2svdGVzdHMvSU5TVEFMTF9TQ1JJUFRTL1ZlcmlmeVJlc3VsdC5jbWFrZQpAQCAtMjUsNSArMjUsNSBAQAogICBlbmRmb3JlYWNoKCkKIGVuZGZ1bmN0aW9uKCkKIAotY2hlY2tTY3JpcHRzXygiJHtGT1VORF9GSUxFXzF9IiAiZWNobyBcInByZSBpbnN0YWxsIGZvb1wiO2VjaG8gXCJwb3N0IGluc3RhbGwgZm9vXCI7ZWNobyBcInByZSB1bmluc3RhbGwgZm9vXCI7ZWNobyBcInBvc3QgdW5pbnN0YWxsIGZvb1wiIikKLWNoZWNrU2NyaXB0c18oIiR7Rk9VTkRfRklMRV8yfSIgImVjaG8gXCJwcmUgaW5zdGFsbFwiO2VjaG8gXCJwb3N0IGluc3RhbGxcIjtlY2hvIFwicHJlIHVuaW5zdGFsbFwiO2VjaG8gXCJwb3N0IHVuaW5zdGFsbFwiIikKK2NoZWNrU2NyaXB0c18oIiR7Rk9VTkRfRklMRV8xfSIgImVjaG8gXCJwcmUgaW5zdGFsbCBmb29cIjtlY2hvIFwicG9zdCBpbnN0YWxsIGZvb1wiO2VjaG8gXCJwcmUgdW5pbnN0YWxsIGZvb1wiO2VjaG8gXCJwb3N0IHVuaW5zdGFsbCBmb29cIjtlY2hvIFwicHJlIHRyYW5zIGZvb1wiO2VjaG8gXCJwb3N0IHRyYW5zIGZvb1wiIikKK2NoZWNrU2NyaXB0c18oIiR7Rk9VTkRfRklMRV8yfSIgImVjaG8gXCJwcmUgaW5zdGFsbFwiO2VjaG8gXCJwb3N0IGluc3RhbGxcIjtlY2hvIFwicHJlIHVuaW5zdGFsbFwiO2VjaG8gXCJwb3N0IHVuaW5zdGFsbFwiO2VjaG8gXCJwcmUgdHJhbnNcIjtlY2hvIFwicG9zdCB0cmFuc1wiIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0NQYWNrL3Rlc3RzL0lOU1RBTExfU0NSSVBUUy90ZXN0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvQ1BhY2svdGVzdHMvSU5TVEFMTF9TQ1JJUFRTL3Rlc3QuY21ha2UKaW5kZXggZmIxYjhkZS4uYzIwMGZhNSAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvQ1BhY2svdGVzdHMvSU5TVEFMTF9TQ1JJUFRTL3Rlc3QuY21ha2UKKysrIGIvVGVzdHMvUnVuQ01ha2UvQ1BhY2svdGVzdHMvSU5TVEFMTF9TQ1JJUFRTL3Rlc3QuY21ha2UKQEAgLTcsNiArNywxMCBAQAogICAgICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vcHJlX3VuaW5zdGFsbC5zaCIpCiAgIHNldChDUEFDS19SUE1fUE9TVF9VTklOU1RBTExfU0NSSVBUX0ZJTEUKICAgICAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3Bvc3RfdW5pbnN0YWxsLnNoIikKKyAgc2V0KENQQUNLX1JQTV9QUkVfVFJBTlNfU0NSSVBUX0ZJTEUKKyAgICAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3ByZV90cmFucy5zaCIpCisgIHNldChDUEFDS19SUE1fUE9TVF9UUkFOU19TQ1JJUFRfRklMRQorICAgICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vcG9zdF90cmFucy5zaCIpCiAKICAgc2V0KENQQUNLX1JQTV9mb29fUFJFX0lOU1RBTExfU0NSSVBUX0ZJTEUKICAgICAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3ByZV9pbnN0YWxsX2Zvby5zaCIpCkBAIC0xNiw2ICsyMCwxMCBAQAogICAgICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vcHJlX3VuaW5zdGFsbF9mb28uc2giKQogICBzZXQoQ1BBQ0tfUlBNX2Zvb19QT1NUX1VOSU5TVEFMTF9TQ1JJUFRfRklMRQogICAgICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vcG9zdF91bmluc3RhbGxfZm9vLnNoIikKKyAgc2V0KENQQUNLX1JQTV9mb29fUFJFX1RSQU5TX1NDUklQVF9GSUxFCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9wcmVfdHJhbnNfZm9vLnNoIikKKyAgc2V0KENQQUNLX1JQTV9mb29fUE9TVF9UUkFOU19TQ1JJUFRfRklMRQorICAgICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vcG9zdF90cmFuc19mb28uc2giKQogZW5kaWYoKQogCiBzZXQoQ01BS0VfQlVJTERfV0lUSF9JTlNUQUxMX1JQQVRIIDEpCkBAIC0yOSw2ICszNywxMCBAQAogICAgICJlY2hvIFwicHJlIHVuaW5zdGFsbFwiXG4iKQogZmlsZShXUklURSAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3Bvc3RfdW5pbnN0YWxsLnNoIgogICAgICJlY2hvIFwicG9zdCB1bmluc3RhbGxcIlxuIikKK2ZpbGUoV1JJVEUgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9wcmVfdHJhbnMuc2giCisgICAgImVjaG8gXCJwcmUgdHJhbnNcIlxuIikKK2ZpbGUoV1JJVEUgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9wb3N0X3RyYW5zLnNoIgorICAgICJlY2hvIFwicG9zdCB0cmFuc1wiXG4iKQogCiAjIHNwZWNpZmljCiBmaWxlKFdSSVRFICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vcHJlX2luc3RhbGxfZm9vLnNoIgpAQCAtMzksNiArNTEsMTAgQEAKICAgICAiZWNobyBcInByZSB1bmluc3RhbGwgZm9vXCJcbiIpCiBmaWxlKFdSSVRFICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vcG9zdF91bmluc3RhbGxfZm9vLnNoIgogICAgICJlY2hvIFwicG9zdCB1bmluc3RhbGwgZm9vXCJcbiIpCitmaWxlKFdSSVRFICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vcHJlX3RyYW5zX2Zvby5zaCIKKyAgICAiZWNobyBcInByZSB0cmFucyBmb29cIlxuIikKK2ZpbGUoV1JJVEUgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9wb3N0X3RyYW5zX2Zvby5zaCIKKyAgICAiZWNobyBcInBvc3QgdHJhbnMgZm9vXCJcbiIpCiAKIGluc3RhbGwoRklMRVMgQ01ha2VMaXN0cy50eHQgREVTVElOQVRJT04gZm9vIENPTVBPTkVOVCBmb28pCiBpbnN0YWxsKEZJTEVTIENNYWtlTGlzdHMudHh0IERFU1RJTkFUSU9OIGJhciBDT01QT05FTlQgYmFyKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQ29tbWFuZExpbmUvUHJvZmlsaW5nVGVzdC1jaGVjay5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0NvbW1hbmRMaW5lL1Byb2ZpbGluZ1Rlc3QtY2hlY2suY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTllY2U4NgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0NvbW1hbmRMaW5lL1Byb2ZpbGluZ1Rlc3QtY2hlY2suY21ha2UKQEAgLTAsMCArMSwxOCBAQAoraWYgKE5PVCBFWElTVFMgJHtQcm9maWxpbmdUZXN0T3V0cHV0fSkKKyAgc2V0KFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJFeHBlY3RlZCAke1Byb2ZpbGluZ1Rlc3RPdXRwdXR9IHRvIGV4aXN0cyIpCitlbmRpZigpCisKK2ZpbGUoUkVBRCAiJHtQcm9maWxpbmdUZXN0T3V0cHV0fSIgSlNPTl9IRUFERVIgTElNSVQgMikKK2lmIChOT1QgSlNPTl9IRUFERVIgTUFUQ0hFUyAiXlxcW3siKQorICBzZXQoUnVuQ01ha2VfVEVTVF9GQUlMRUQgIkV4cGVjdGVkIHZhbGlkIEpTT04gc3RhcnQiKQorICByZXR1cm4oKQorZW5kaWYoKQorCitmaWxlKFNJWkUgIiR7UHJvZmlsaW5nVGVzdE91dHB1dH0iIE9VVFBVVF9TSVpFKQorbWF0aChFWFBSIEVORF9PRkZTRVQgIiR7T1VUUFVUX1NJWkV9IC0yICIpCisKK2ZpbGUoUkVBRCAiJHtQcm9maWxpbmdUZXN0T3V0cHV0fSIgSlNPTl9UUkFJTEVSIE9GRlNFVCAke0VORF9PRkZTRVR9KQoraWYgKE5PVCBKU09OX1RSQUlMRVIgTUFUQ0hFUyAiXn1dJCIpCisgIHNldChSdW5DTWFrZV9URVNUX0ZBSUxFRCAiRXhwZWN0ZWQgdmFsaWQgSlNPTiBlbmQiKQorICByZXR1cm4oKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQ29tbWFuZExpbmUvUHJvZmlsaW5nVGVzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0NvbW1hbmRMaW5lL1Byb2ZpbGluZ1Rlc3QuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM3ZjRiZgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0NvbW1hbmRMaW5lL1Byb2ZpbGluZ1Rlc3QuY21ha2UKQEAgLTAsMCArMSBAQAorIyBUaGlzIGZpbGUgaXMgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9Db21tYW5kTGluZS9SdW5DTWFrZVRlc3QuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9Db21tYW5kTGluZS9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggZjQ3ZTQ1Yy4uZjk1YTZlZSAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvQ29tbWFuZExpbmUvUnVuQ01ha2VUZXN0LmNtYWtlCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0NvbW1hbmRMaW5lL1J1bkNNYWtlVGVzdC5jbWFrZQpAQCAtNjk2LDMgKzY5NiwyNSBAQAogICB1bnNldChMTFZNUkNfUkVTVUxUKQogZW5kZnVuY3Rpb24oKQogcnVuX2xsdm1fcmMoKQorCitzZXQoUnVuQ01ha2VfVEVTVF9PUFRJT05TIC0tcHJvZmlsaW5nLW91dHB1dD0vbm8vc3VjaC9maWxlLnR4dCAtLXByb2ZpbGluZy1mb3JtYXQ9Z29vZ2xlLXRyYWNlKQorcnVuX2NtYWtlKHByb2ZpbGluZy1hbGwtcGFyYW1zKQordW5zZXQoUnVuQ01ha2VfVEVTVF9PUFRJT05TKQorCitzZXQoUnVuQ01ha2VfVEVTVF9PUFRJT05TIC0tcHJvZmlsaW5nLW91dHB1dD0vbm8vc3VjaC9maWxlLnR4dCAtLXByb2ZpbGluZy1mb3JtYXQ9aW52YWxpZC1mb3JtYXQpCitydW5fY21ha2UocHJvZmlsaW5nLWludmFsaWQtZm9ybWF0KQordW5zZXQoUnVuQ01ha2VfVEVTVF9PUFRJT05TKQorCitzZXQoUnVuQ01ha2VfVEVTVF9PUFRJT05TIC0tcHJvZmlsaW5nLW91dHB1dD0vbm8vc3VjaC9maWxlLnR4dCkKK3J1bl9jbWFrZShwcm9maWxpbmctbWlzc2luZy1mb3JtYXQpCit1bnNldChSdW5DTWFrZV9URVNUX09QVElPTlMpCisKK3NldChSdW5DTWFrZV9URVNUX09QVElPTlMgLS1wcm9maWxpbmctZm9ybWF0PWdvb2dsZS10cmFjZSkKK3J1bl9jbWFrZShwcm9maWxpbmctbWlzc2luZy1vdXRwdXQpCit1bnNldChSdW5DTWFrZV9URVNUX09QVElPTlMpCisKK3NldChSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVIgIiR7UnVuQ01ha2VfQklOQVJZX0RJUn0vcHJvZmlsaW5nLXRlc3QiKQorc2V0KFByb2ZpbGluZ1Rlc3RPdXRwdXQgJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L291dHB1dC5qc29uKQorc2V0KFJ1bkNNYWtlX1RFU1RfT1BUSU9OUyAtLXByb2ZpbGluZy1mb3JtYXQ9Z29vZ2xlLXRyYWNlIC0tcHJvZmlsaW5nLW91dHB1dD0ke1Byb2ZpbGluZ1Rlc3RPdXRwdXR9KQorcnVuX2NtYWtlKFByb2ZpbGluZ1Rlc3QpCit1bnNldChSdW5DTWFrZV9URVNUX09QVElPTlMpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvQ29tbWFuZExpbmUvcHJvZmlsaW5nLWFsbC1wYXJhbXMtcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9Db21tYW5kTGluZS9wcm9maWxpbmctYWxsLXBhcmFtcy1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9Db21tYW5kTGluZS9wcm9maWxpbmctYWxsLXBhcmFtcy1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvQ29tbWFuZExpbmUvcHJvZmlsaW5nLWFsbC1wYXJhbXMtc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjVjMzczCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvQ29tbWFuZExpbmUvcHJvZmlsaW5nLWFsbC1wYXJhbXMtc3RkZXJyLnR4dApAQCAtMCwwICsxIEBACiteLipDb3VsZCBub3Qgc3RhcnQgcHJvZmlsaW5nOiBVbmFibGUgdG8gb3BlbjogL25vL3N1Y2gvZmlsZS50eHQkCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvQ29tbWFuZExpbmUvcHJvZmlsaW5nLWludmFsaWQtZm9ybWF0LXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvQ29tbWFuZExpbmUvcHJvZmlsaW5nLWludmFsaWQtZm9ybWF0LXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0NvbW1hbmRMaW5lL3Byb2ZpbGluZy1pbnZhbGlkLWZvcm1hdC1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvQ29tbWFuZExpbmUvcHJvZmlsaW5nLWludmFsaWQtZm9ybWF0LXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU5YmMzYQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0NvbW1hbmRMaW5lL3Byb2ZpbGluZy1pbnZhbGlkLWZvcm1hdC1zdGRlcnIudHh0CkBAIC0wLDAgKzEgQEAKK14uKkludmFsaWQgZm9ybWF0IHNwZWNpZmllZCBmb3IgLS1wcm9maWxpbmctZm9ybWF0JApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0NvbW1hbmRMaW5lL3Byb2ZpbGluZy1taXNzaW5nLWZvcm1hdC1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0NvbW1hbmRMaW5lL3Byb2ZpbGluZy1taXNzaW5nLWZvcm1hdC1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9Db21tYW5kTGluZS9wcm9maWxpbmctbWlzc2luZy1mb3JtYXQtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0NvbW1hbmRMaW5lL3Byb2ZpbGluZy1taXNzaW5nLWZvcm1hdC1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1OWJjM2EKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9Db21tYW5kTGluZS9wcm9maWxpbmctbWlzc2luZy1mb3JtYXQtc3RkZXJyLnR4dApAQCAtMCwwICsxIEBACiteLipJbnZhbGlkIGZvcm1hdCBzcGVjaWZpZWQgZm9yIC0tcHJvZmlsaW5nLWZvcm1hdCQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9Db21tYW5kTGluZS9wcm9maWxpbmctbWlzc2luZy1vdXRwdXQtcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9Db21tYW5kTGluZS9wcm9maWxpbmctbWlzc2luZy1vdXRwdXQtcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQ29tbWFuZExpbmUvcHJvZmlsaW5nLW1pc3Npbmctb3V0cHV0LXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9Db21tYW5kTGluZS9wcm9maWxpbmctbWlzc2luZy1vdXRwdXQtc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWIwYzhmCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvQ29tbWFuZExpbmUvcHJvZmlsaW5nLW1pc3Npbmctb3V0cHV0LXN0ZGVyci50eHQKQEAgLTAsMCArMSBAQAorXi4qLS1wcm9maWxpbmctZm9ybWF0IHNwZWNpZmllZCBidXQgbm8gLS1wcm9maWxpbmctb3V0cHV0ISQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWNoZWNrLnB5IGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItY2hlY2sucHkKaW5kZXggZGU2MjUzZi4uOWVlMGMyMCAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItY2hlY2sucHkKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItY2hlY2sucHkKQEAgLTEsOCArMSwxNCBAQAogZnJvbSBjaGVja19pbmRleCBpbXBvcnQgKgogCitpbXBvcnQganNvbgogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiAKK2RlZiByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoZmlsZW5hbWUpOgorICAgIGFic19maWxlbmFtZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpLCAiY29kZW1vZGVsLXYyLWRhdGEiLCBmaWxlbmFtZSkKKyAgICB3aXRoIG9wZW4oYWJzX2ZpbGVuYW1lLCAiciIpIGFzIGY6CisgICAgICAgIHJldHVybiBqc29uLmxvYWQoZikKKwogZGVmIGNoZWNrX29iamVjdHMobywgZyk6CiAgICAgYXNzZXJ0IGlzX2xpc3QobykKICAgICBhc3NlcnQgbGVuKG8pID09IDEKQEAgLTQ3MSwxNTQgKzQ3NywxNSBAQAogCiBkZWYgZ2VuX2NoZWNrX2RpcmVjdG9yaWVzKGMsIGcpOgogICAgIGV4cGVjdGVkID0gWwotICAgICAgICB7Ci0gICAgICAgICAgICAic291cmNlIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJidWlsZCI6ICJeXFwuJCIsCi0gICAgICAgICAgICAicGFyZW50U291cmNlIjogTm9uZSwKLSAgICAgICAgICAgICJjaGlsZFNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgIl5hbGlhcyQiLAotICAgICAgICAgICAgICAgICJeY3VzdG9tJCIsCi0gICAgICAgICAgICAgICAgIl5jeHgkIiwKLSAgICAgICAgICAgICAgICAiXmltcG9ydGVkJCIsCi0gICAgICAgICAgICAgICAgIl5vYmplY3QkIiwKLSAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZSQiLAotICAgICAgICAgICAgICAgICJeZGlyJCIsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInRhcmdldElkcyI6IFsKLSAgICAgICAgICAgICAgICAiXkFMTF9CVUlMRDo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCi0gICAgICAgICAgICAgICAgIl5aRVJPX0NIRUNLOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAiXmNfZXhlOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAiXmNfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAiXmNfc2hhcmVkX2V4ZTo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCi0gICAgICAgICAgICAgICAgIl5jX3NoYXJlZF9saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICJeY19zdGF0aWNfZXhlOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAiXmNfc3RhdGljX2xpYjo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCi0gICAgICAgICAgICAgICAgIl5pbnRlcmZhY2VfZXhlOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAicHJvamVjdE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKLSAgICAgICAgICAgICJtaW5pbXVtQ01ha2VWZXJzaW9uIjogIjMuMTIiLAotICAgICAgICAgICAgImhhc0luc3RhbGxSdWxlIjogVHJ1ZSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgInNvdXJjZSI6ICJeYWxpYXMkIiwKLSAgICAgICAgICAgICJidWlsZCI6ICJeYWxpYXMkIiwKLSAgICAgICAgICAgICJwYXJlbnRTb3VyY2UiOiAiXlxcLiQiLAotICAgICAgICAgICAgImNoaWxkU291cmNlcyI6IE5vbmUsCi0gICAgICAgICAgICAidGFyZ2V0SWRzIjogWwotICAgICAgICAgICAgICAgICJeQUxMX0JVSUxEOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKLSAgICAgICAgICAgICAgICAiXlpFUk9fQ0hFQ0s6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAotICAgICAgICAgICAgICAgICJeY19hbGlhc19leGU6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAotICAgICAgICAgICAgICAgICJeY3h4X2FsaWFzX2V4ZTo6QDUzNjMyY2JhMjc1MjI3MmJiMDA4JCIsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkFsaWFzIiwKLSAgICAgICAgICAgICJtaW5pbXVtQ01ha2VWZXJzaW9uIjogIjMuMTIiLAotICAgICAgICAgICAgImhhc0luc3RhbGxSdWxlIjogTm9uZSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgInNvdXJjZSI6ICJeY3VzdG9tJCIsCi0gICAgICAgICAgICAiYnVpbGQiOiAiXmN1c3RvbSQiLAotICAgICAgICAgICAgInBhcmVudFNvdXJjZSI6ICJeXFwuJCIsCi0gICAgICAgICAgICAiY2hpbGRTb3VyY2VzIjogTm9uZSwKLSAgICAgICAgICAgICJ0YXJnZXRJZHMiOiBbCi0gICAgICAgICAgICAgICAgIl5BTExfQlVJTEQ6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAotICAgICAgICAgICAgICAgICJeWkVST19DSEVDSzo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCi0gICAgICAgICAgICAgICAgIl5jdXN0b21fZXhlOjpAYzExMzg1ZmZlZDU3Yjg2MGRhNjMkIiwKLSAgICAgICAgICAgICAgICAiXmN1c3RvbV90Z3Q6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJDdXN0b20iLAotICAgICAgICAgICAgIm1pbmltdW1DTWFrZVZlcnNpb24iOiAiMy4xMiIsCi0gICAgICAgICAgICAiaGFzSW5zdGFsbFJ1bGUiOiBOb25lLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAic291cmNlIjogIl5jeHgkIiwKLSAgICAgICAgICAgICJidWlsZCI6ICJeY3h4JCIsCi0gICAgICAgICAgICAicGFyZW50U291cmNlIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJjaGlsZFNvdXJjZXMiOiBOb25lLAotICAgICAgICAgICAgInRhcmdldElkcyI6IFsKLSAgICAgICAgICAgICAgICAiXkFMTF9CVUlMRDo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgIl5aRVJPX0NIRUNLOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICAgICAiXmN4eF9leGU6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAotICAgICAgICAgICAgICAgICJeY3h4X2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgIl5jeHhfc2hhcmVkX2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgIl5jeHhfc2hhcmVkX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgIl5jeHhfc3RhdGljX2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgIl5jeHhfc3RhdGljX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkN4eCIsCi0gICAgICAgICAgICAibWluaW11bUNNYWtlVmVyc2lvbiI6ICIzLjEyIiwKLSAgICAgICAgICAgICJoYXNJbnN0YWxsUnVsZSI6IE5vbmUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXmltcG9ydGVkJCIsCi0gICAgICAgICAgICAiYnVpbGQiOiAiXmltcG9ydGVkJCIsCi0gICAgICAgICAgICAicGFyZW50U291cmNlIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJjaGlsZFNvdXJjZXMiOiBOb25lLAotICAgICAgICAgICAgInRhcmdldElkcyI6IFsKLSAgICAgICAgICAgICAgICAiXkFMTF9CVUlMRDo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAgICAgIl5aRVJPX0NIRUNLOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAiXmxpbmtfaW1wb3J0ZWRfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAiXmxpbmtfaW1wb3J0ZWRfaW50ZXJmYWNlX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAgICAgIl5saW5rX2ltcG9ydGVkX29iamVjdF9leGU6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAotICAgICAgICAgICAgICAgICJebGlua19pbXBvcnRlZF9zaGFyZWRfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAiXmxpbmtfaW1wb3J0ZWRfc3RhdGljX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkltcG9ydGVkIiwKLSAgICAgICAgICAgICJtaW5pbXVtQ01ha2VWZXJzaW9uIjogIjMuMTIiLAotICAgICAgICAgICAgImhhc0luc3RhbGxSdWxlIjogTm9uZSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgInNvdXJjZSI6ICJeb2JqZWN0JCIsCi0gICAgICAgICAgICAiYnVpbGQiOiAiXm9iamVjdCQiLAotICAgICAgICAgICAgInBhcmVudFNvdXJjZSI6ICJeXFwuJCIsCi0gICAgICAgICAgICAiY2hpbGRTb3VyY2VzIjogTm9uZSwKLSAgICAgICAgICAgICJ0YXJnZXRJZHMiOiBbCi0gICAgICAgICAgICAgICAgIl5BTExfQlVJTEQ6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAotICAgICAgICAgICAgICAgICJeWkVST19DSEVDSzo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCi0gICAgICAgICAgICAgICAgIl5jX29iamVjdF9leGU6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAotICAgICAgICAgICAgICAgICJeY19vYmplY3RfbGliOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAiXmN4eF9vYmplY3RfZXhlOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAiXmN4eF9vYmplY3RfbGliOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAicHJvamVjdE5hbWUiOiAiT2JqZWN0IiwKLSAgICAgICAgICAgICJtaW5pbXVtQ01ha2VWZXJzaW9uIjogIjMuMTMiLAotICAgICAgICAgICAgImhhc0luc3RhbGxSdWxlIjogVHJ1ZSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgInNvdXJjZSI6ICJeZGlyJCIsCi0gICAgICAgICAgICAiYnVpbGQiOiAiXmRpciQiLAotICAgICAgICAgICAgInBhcmVudFNvdXJjZSI6ICJeXFwuJCIsCi0gICAgICAgICAgICAiY2hpbGRTb3VyY2VzIjogWwotICAgICAgICAgICAgICAgICJeZGlyL2RpciQiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJ0YXJnZXRJZHMiOiBOb25lLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogImNvZGVtb2RlbC12MiIsCi0gICAgICAgICAgICAibWluaW11bUNNYWtlVmVyc2lvbiI6ICIzLjEyIiwKLSAgICAgICAgICAgICJoYXNJbnN0YWxsUnVsZSI6IE5vbmUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXmRpci9kaXIkIiwKLSAgICAgICAgICAgICJidWlsZCI6ICJeZGlyL2RpciQiLAotICAgICAgICAgICAgInBhcmVudFNvdXJjZSI6ICJeZGlyJCIsCi0gICAgICAgICAgICAiY2hpbGRTb3VyY2VzIjogTm9uZSwKLSAgICAgICAgICAgICJ0YXJnZXRJZHMiOiBOb25lLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogImNvZGVtb2RlbC12MiIsCi0gICAgICAgICAgICAibWluaW11bUNNYWtlVmVyc2lvbiI6ICIzLjEyIiwKLSAgICAgICAgICAgICJoYXNJbnN0YWxsUnVsZSI6IE5vbmUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZSQiLAotICAgICAgICAgICAgImJ1aWxkIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL0ZpbGVBUElFeHRlcm5hbEJ1aWxkJCIsCi0gICAgICAgICAgICAicGFyZW50U291cmNlIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJjaGlsZFNvdXJjZXMiOiBOb25lLAotICAgICAgICAgICAgInRhcmdldElkcyI6IFsKLSAgICAgICAgICAgICAgICAiXkFMTF9CVUlMRDo6QFswLTlhLWZdKyQiLAotICAgICAgICAgICAgICAgICJeWkVST19DSEVDSzo6QFswLTlhLWZdKyQiLAotICAgICAgICAgICAgICAgICJeZ2VuZXJhdGVkX2V4ZTo6QFswLTlhLWZdKyQiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJFeHRlcm5hbCIsCi0gICAgICAgICAgICAibWluaW11bUNNYWtlVmVyc2lvbiI6ICIzLjEyIiwKLSAgICAgICAgICAgICJoYXNJbnN0YWxsUnVsZSI6IE5vbmUsCi0gICAgICAgIH0sCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgiZGlyZWN0b3JpZXMvdG9wLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJkaXJlY3Rvcmllcy9hbGlhcy5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgiZGlyZWN0b3JpZXMvY3VzdG9tLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJkaXJlY3Rvcmllcy9jeHguanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoImRpcmVjdG9yaWVzL2ltcG9ydGVkLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJkaXJlY3Rvcmllcy9vYmplY3QuanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoImRpcmVjdG9yaWVzL2Rpci5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgiZGlyZWN0b3JpZXMvZGlyX2Rpci5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgiZGlyZWN0b3JpZXMvZXh0ZXJuYWwuanNvbiIpLAogICAgIF0KIAogICAgIGlmIG1hdGNoZXMoZ1sibmFtZSJdLCAiXlZpc3VhbCBTdHVkaW8gIik6CkBAIC02NDYsNDQyOCArNTEzLDUyIEBACiAKIGRlZiBnZW5fY2hlY2tfdGFyZ2V0cyhjLCBnLCBpblNvdXJjZSk6CiAgICAgZXhwZWN0ZWQgPSBbCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIkFMTF9CVUlMRCIsCi0gICAgICAgICAgICAiaWQiOiAiXkFMTF9CVUlMRDo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAotICAgICAgICAgICAgInR5cGUiOiAiVVRJTElUWSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IFRydWUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9DTWFrZUZpbGVzL0FMTF9CVUlMRCQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9DTWFrZUZpbGVzL0FMTF9CVUlMRFxcLnJ1bGUkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJDTWFrZSBSdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9DTWFrZUZpbGVzL0FMTF9CVUlMRCQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJDTWFrZSBSdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IE5vbmUsCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiBOb25lLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IE5vbmUsCi0gICAgICAgICAgICAiYnVpbGQiOiAiXlxcLiQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeXFwuJCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IE5vbmUsCi0gICAgICAgICAgICAibGluayI6IE5vbmUsCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeaW50ZXJmYWNlX2V4ZTo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmNfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY19leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jX3NoYXJlZF9saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jX3NoYXJlZF9leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jX3N0YXRpY19saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jX3N0YXRpY19leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jX2FsaWFzX2V4ZTo6QDUzNjMyY2JhMjc1MjI3MmJiMDA4JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmN4eF9hbGlhc19leGU6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jeHhfbGliOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY3h4X2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmN4eF9zaGFyZWRfbGliOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY3h4X3NoYXJlZF9leGU6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jeHhfc3RhdGljX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmN4eF9zdGF0aWNfZXhlOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY19vYmplY3RfbGliOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY19vYmplY3RfZXhlOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY3h4X29iamVjdF9saWI6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jeHhfb2JqZWN0X2V4ZTo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmxpbmtfaW1wb3J0ZWRfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9zaGFyZWRfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9zdGF0aWNfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9vYmplY3RfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9pbnRlcmZhY2VfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY3VzdG9tX2V4ZTo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmdlbmVyYXRlZF9leGU6OkBbMC05YS1mXSskIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIlpFUk9fQ0hFQ0siLAotICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXlxcLiQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogImNvZGVtb2RlbC12MiIsCi0gICAgICAgICAgICAidHlwZSI6ICJVVElMSVRZIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL0NNYWtlRmlsZXMvWkVST19DSEVDSyQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0tcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkNNYWtlIFJ1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0tcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IE5vbmUsCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiBOb25lLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IE5vbmUsCi0gICAgICAgICAgICAiYnVpbGQiOiAiXlxcLiQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeXFwuJCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IE5vbmUsCi0gICAgICAgICAgICAibGluayI6IE5vbmUsCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogTm9uZSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiaW50ZXJmYWNlX2V4ZSIsCi0gICAgICAgICAgICAiaWQiOiAiXmludGVyZmFjZV9leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeXFwuJCIsCi0gICAgICAgICAgICAicHJvamVjdE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKLSAgICAgICAgICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBOb25lLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbmNsdWRlX3Rlc3RcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbmNsdWRlX3Rlc3RcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImluY2x1ZGVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImRlZmluZXMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmluZSI6ICJpbnRlcmZhY2VfZXhlX0VYUE9SVFMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW5jbHVkZV90ZXN0XFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW5jbHVkZV90ZXN0XFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6ICJebXlfaW50ZXJmYWNlX2V4ZVxcLm15ZXhlJCIsCi0gICAgICAgICAgICAiYXJ0aWZhY3RzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmJpbi8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9teV9pbnRlcmZhY2VfZXhlXFwubXlleGUkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJebGliL215X2ludGVyZmFjZV9leGVcXC5pbXAkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9haXhFeHRyYSI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmxpYi8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT8obGliKT9teV9pbnRlcmZhY2VfZXhlXFwuKGRsbFxcLmF8bGliKSQiLAotICAgICAgICAgICAgICAgICAgICAiX2RsbEV4dHJhIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmJpbi8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9teV9pbnRlcmZhY2VfZXhlXFwucGRiJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXlxcLiQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiB7Ci0gICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICJsdG8iOiBOb25lLAotICAgICAgICAgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogImNfbGliIiwKLSAgICAgICAgICAgICJpZCI6ICJeY19saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeXFwuJCIsCi0gICAgICAgICAgICAicHJvamVjdE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKLSAgICAgICAgICAgICJ0eXBlIjogIlNUQVRJQ19MSUJSQVJZIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogTm9uZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2xpYnJhcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJjb21waWxlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiZGVmaW5lcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogNSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2xpYnJhcnkiLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogIl4obGliKT9jX2xpYlxcLihhfGxpYikkIiwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/KGxpYik/Y19saWJcXC4oYXxsaWIpJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJidWlsZCI6ICJeXFwuJCIsCi0gICAgICAgICAgICAic291cmNlIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogTm9uZSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogewotICAgICAgICAgICAgICAgICJsdG8iOiBOb25lLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiY19leGUiLAotICAgICAgICAgICAgImlkIjogIl5jX2V4ZTo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAotICAgICAgICAgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IE5vbmUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImluY2x1ZGVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImRlZmluZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IDYsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6ICJeY19leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y19leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y19leGVcXC5wZGIkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYnVpbGQiOiAiXlxcLiQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeXFwuJCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IE5vbmUsCi0gICAgICAgICAgICAibGluayI6IHsKLSAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgImx0byI6IE5vbmUsCi0gICAgICAgICAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmNfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAidGFyZ2V0X2xpbmtfbGlicmFyaWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiY19zaGFyZWRfbGliIiwKLSAgICAgICAgICAgICJpZCI6ICJeY19zaGFyZWRfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXlxcLiQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogImNvZGVtb2RlbC12MiIsCi0gICAgICAgICAgICAidHlwZSI6ICJTSEFSRURfTElCUkFSWSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IE5vbmUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImluY2x1ZGVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImRlZmluZXMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmluZSI6ICJjX3NoYXJlZF9saWJfRVhQT1JUUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IDksCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6ICJeKGxpYnxjeWcpP2Nfc2hhcmVkX2xpYlxcLihzb3xkeWxpYnxkbGwpJCIsCi0gICAgICAgICAgICAiYXJ0aWZhY3RzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmxpYi8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT8obGlifGN5Zyk/Y19zaGFyZWRfbGliXFwuKHNvfGR5bGlifGRsbCkkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/KGxpYik/Y19zaGFyZWRfbGliXFwuKGRsbFxcLmF8bGliKSQiLAotICAgICAgICAgICAgICAgICAgICAiX2RsbEV4dHJhIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmxpYi8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT8obGlifGN5Zyk/Y19zaGFyZWRfbGliXFwucGRiJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXlxcLiQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiB7Ci0gICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICJsdG8iOiBUcnVlLAotICAgICAgICAgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogImNfc2hhcmVkX2V4ZSIsCi0gICAgICAgICAgICAiaWQiOiAiXmNfc2hhcmVkX2V4ZTo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAotICAgICAgICAgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IE5vbmUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImluY2x1ZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJzb3VyY2VHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICJpbmNsdWRlcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJkZWZpbmVzIjogTm9uZSwKLQkJCQkJImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMCwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogIl5jX3NoYXJlZF9leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y19zaGFyZWRfZXhlKFxcLmV4ZSk/JCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXigoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2Nfc2hhcmVkX2V4ZVxcLnBkYiQiLAotICAgICAgICAgICAgICAgICAgICAiX2RsbEV4dHJhIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJidWlsZCI6ICJeXFwuJCIsCi0gICAgICAgICAgICAic291cmNlIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogewotICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAibHRvIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAiY29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImFyY2hpdmUiOiBOb25lLAotICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY19zaGFyZWRfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDExLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9saW5rX2xpYnJhcmllcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImluY2x1ZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogImNfc3RhdGljX2xpYiIsCi0gICAgICAgICAgICAiaWQiOiAiXmNfc3RhdGljX2xpYjo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAotICAgICAgICAgICAgInR5cGUiOiAiU1RBVElDX0xJQlJBUlkiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBOb25lLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2xpYnJhcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJjb21waWxlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiZGVmaW5lcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTMsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6ICJeKGxpYik/Y19zdGF0aWNfbGliXFwuKGF8bGliKSQiLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT8obGliKT9jX3N0YXRpY19saWJcXC4oYXxsaWIpJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJidWlsZCI6ICJeXFwuJCIsCi0gICAgICAgICAgICAic291cmNlIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogTm9uZSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogewotICAgICAgICAgICAgICAgICJsdG8iOiBUcnVlLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiY19zdGF0aWNfZXhlIiwKLSAgICAgICAgICAgICJpZCI6ICJeY19zdGF0aWNfZXhlOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXlxcLiQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogImNvZGVtb2RlbC12MiIsCi0gICAgICAgICAgICAidHlwZSI6ICJFWEVDVVRBQkxFIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogTm9uZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDE0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImluY2x1ZGVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImRlZmluZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IDE0LAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IDMsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImluY2x1ZGUiLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiAiXmNfc3RhdGljX2V4ZShcXC5leGUpPyQiLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9jX3N0YXRpY19leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y19zdGF0aWNfZXhlXFwucGRiJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl5cXC4kIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXlxcLiQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiB7Ci0gICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICJsdG8iOiBOb25lLAotICAgICAgICAgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jX3N0YXRpY19saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAidGFyZ2V0X2xpbmtfbGlicmFyaWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiQUxMX0JVSUxEIiwKLSAgICAgICAgICAgICJpZCI6ICJeQUxMX0JVSUxEOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXmN4eCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkN4eCIsCi0gICAgICAgICAgICAidHlwZSI6ICJVVElMSVRZIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2N4eC9DTWFrZUZpbGVzL0FMTF9CVUlMRCQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3h4L0NNYWtlRmlsZXMvQUxMX0JVSUxEXFwucnVsZSQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIkNNYWtlIFJ1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jeHgvQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2N4eC9DTWFrZUZpbGVzL0FMTF9CVUlMRFxcLnJ1bGUkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJjb21waWxlR3JvdXBzIjogTm9uZSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiBOb25lLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IE5vbmUsCi0gICAgICAgICAgICAiYnVpbGQiOiAiXmN4eCQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeY3h4JCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IE5vbmUsCi0gICAgICAgICAgICAibGluayI6IE5vbmUsCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY3h4X2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmN4eF9leGU6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jeHhfc2hhcmVkX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmN4eF9zaGFyZWRfZXhlOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY3h4X3N0YXRpY19saWI6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jeHhfc3RhdGljX2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJaRVJPX0NIRUNLIiwKLSAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5jeHgkIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJDeHgiLAotICAgICAgICAgICAgInR5cGUiOiAiVVRJTElUWSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IFRydWUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jeHgvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jeHgvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIkNNYWtlIFJ1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jeHgvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkNNYWtlIFJ1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jeHgvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBOb25lLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6IE5vbmUsCi0gICAgICAgICAgICAiYXJ0aWZhY3RzIjogTm9uZSwKLSAgICAgICAgICAgICJidWlsZCI6ICJeY3h4JCIsCi0gICAgICAgICAgICAic291cmNlIjogIl5jeHgkIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogTm9uZSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBOb25lLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJjeHhfbGliIiwKLSAgICAgICAgICAgICJpZCI6ICJeY3h4X2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5jeHgkIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJDeHgiLAotICAgICAgICAgICAgInR5cGUiOiAiU1RBVElDX0xJQlJBUlkiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBOb25lLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jeHgkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQ1hYIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2xpYnJhcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiZGVmaW5lcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogNCwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2xpYnJhcnkiLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogIl4obGliKT9jeHhfbGliXFwuKGF8bGliKSQiLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5jeHgvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/KGxpYik/Y3h4X2xpYlxcLihhfGxpYikkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl5jeHgkIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXmN4eCQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiBOb25lLAotICAgICAgICAgICAgImFyY2hpdmUiOiB7Ci0gICAgICAgICAgICAgICAgImx0byI6IE5vbmUsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJjeHhfZXhlIiwKLSAgICAgICAgICAgICJpZCI6ICJeY3h4X2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5jeHgkIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJDeHgiLAotICAgICAgICAgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IE5vbmUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmN4eCQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJzb3VyY2VHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICJpbmNsdWRlcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJkZWZpbmVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFnbWVudCIgOiAiVGFyZ2V0Q29tcGlsZU9wdGlvbnMiLAotCQkJCQkJCSJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxNywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9jb21waWxlX29wdGlvbnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0JCQkJCQkJCXsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIiA6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IDUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6ICJiaW4iLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiAiXmN4eF9leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeY3h4LygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N4eF9leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeY3h4LygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N4eF9leGVcXC5wZGIkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYnVpbGQiOiAiXmN4eCQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeY3h4JCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IHsKLSAgICAgICAgICAgICAgICAicHJlZml4IjogIl4oL3Vzci9sb2NhbHxbQS1aYS16XTouKi9jb2RlbW9kZWwtdjIpJCIsCi0gICAgICAgICAgICAgICAgImRlc3RpbmF0aW9ucyI6IFsKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiYmluIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzNywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5zdGFsbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImluY2x1ZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW5rIjogewotICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICJsdG8iOiBOb25lLAotICAgICAgICAgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogWwotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZnJhZ21lbnQiIDogIlRhcmdldExpbmtPcHRpb25zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyb2xlIiA6ICJmbGFncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9saW5rX29wdGlvbnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiIDogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZnJhZ21lbnQiIDogIi4qVGFyZ2V0TGlua0RpclxcXCI/JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAicm9sZSIgOiAibGlicmFyeVBhdGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDE5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfbGlua19kaXJlY3RvcmllcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSIgOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJmcmFnbWVudCIgOiAiLipjeHhfbGliLioiLAotICAgICAgICAgICAgICAgICAgICAgICAgInJvbGUiIDogImxpYnJhcmllcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAidGFyZ2V0X2xpbmtfbGlicmFyaWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIiA6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmN4eF9saWI6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfbGlua19saWJyYXJpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJjeHhfc2hhcmVkX2xpYiIsCi0gICAgICAgICAgICAiaWQiOiAiXmN4eF9zaGFyZWRfbGliOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXmN4eCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkN4eCIsCi0gICAgICAgICAgICAidHlwZSI6ICJTSEFSRURfTElCUkFSWSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IE5vbmUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmN4eCQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogOSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfbGlicmFyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJzb3VyY2VHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICJpbmNsdWRlcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJkZWZpbmVzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZpbmUiOiAiY3h4X3NoYXJlZF9saWJfRVhQT1JUUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IDksCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6ICJeKGxpYnxjeWcpP2N4eF9zaGFyZWRfbGliXFwuKHNvfGR5bGlifGRsbCkkIiwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeY3h4LygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pPyhsaWJ8Y3lnKT9jeHhfc2hhcmVkX2xpYlxcLihzb3xkeWxpYnxkbGwpJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmN4eC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT8obGliKT9jeHhfc2hhcmVkX2xpYlxcLihkbGxcXC5hfGxpYikkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5jeHgvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/KGxpYnxjeWcpP2N4eF9zaGFyZWRfbGliXFwucGRiJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl5jeHgkIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXmN4eCQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiB7Ci0gICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkNYWCIsCi0gICAgICAgICAgICAgICAgImx0byI6IE5vbmUsCi0gICAgICAgICAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiY3h4X3NoYXJlZF9leGUiLAotICAgICAgICAgICAgImlkIjogIl5jeHhfc2hhcmVkX2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5jeHgkIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJDeHgiLAotICAgICAgICAgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IE5vbmUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmN4eCQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiZGVmaW5lcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTAsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6ICJeY3h4X3NoYXJlZF9leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeY3h4LygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N4eF9zaGFyZWRfZXhlKFxcLmV4ZSk/JCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmN4eC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9jeHhfc2hhcmVkX2V4ZVxcLnBkYiQiLAotICAgICAgICAgICAgICAgICAgICAiX2RsbEV4dHJhIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJidWlsZCI6ICJeY3h4JCIsCi0gICAgICAgICAgICAic291cmNlIjogIl5jeHgkIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogewotICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICJsdG8iOiBOb25lLAotICAgICAgICAgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jeHhfc2hhcmVkX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfbGlua19saWJyYXJpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJjeHhfc3RhdGljX2xpYiIsCi0gICAgICAgICAgICAiaWQiOiAiXmN4eF9zdGF0aWNfbGliOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXmN4eCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkN4eCIsCi0gICAgICAgICAgICAidHlwZSI6ICJTVEFUSUNfTElCUkFSWSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IE5vbmUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmN4eCQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2xpYnJhcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiZGVmaW5lcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTMsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6ICJeKGxpYik/Y3h4X3N0YXRpY19saWJcXC4oYXxsaWIpJCIsCi0gICAgICAgICAgICAiYXJ0aWZhY3RzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmN4eC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT8obGliKT9jeHhfc3RhdGljX2xpYlxcLihhfGxpYikkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl5jeHgkIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXmN4eCQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiBOb25lLAotICAgICAgICAgICAgImFyY2hpdmUiOiB7Ci0gICAgICAgICAgICAgICAgImx0byI6IE5vbmUsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJjeHhfc3RhdGljX2V4ZSIsCi0gICAgICAgICAgICAiaWQiOiAiXmN4eF9zdGF0aWNfZXhlOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXmN4eCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkN4eCIsCi0gICAgICAgICAgICAidHlwZSI6ICJFWEVDVVRBQkxFIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogTm9uZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkNYWCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJzb3VyY2VHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICJpbmNsdWRlcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJkZWZpbmVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxNCwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogIl5jeHhfc3RhdGljX2V4ZShcXC5leGUpPyQiLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5jeHgvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y3h4X3N0YXRpY19leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeY3h4LygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N4eF9zdGF0aWNfZXhlXFwucGRiJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl5jeHgkIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXmN4eCQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiB7Ci0gICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkNYWCIsCi0gICAgICAgICAgICAgICAgImx0byI6IE5vbmUsCi0gICAgICAgICAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmN4eF9zdGF0aWNfbGliOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDE1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9saW5rX2xpYnJhcmllcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIkFMTF9CVUlMRCIsCi0gICAgICAgICAgICAiaWQiOiAiXkFMTF9CVUlMRDo6QDUzNjMyY2JhMjc1MjI3MmJiMDA4JCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5hbGlhcyQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkFsaWFzIiwKLSAgICAgICAgICAgICJ0eXBlIjogIlVUSUxJVFkiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBUcnVlLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvYWxpYXMvQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICIiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvYWxpYXMvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvYWxpYXMvQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2FsaWFzL0NNYWtlRmlsZXMvQUxMX0JVSUxEXFwucnVsZSQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBOb25lLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogTm9uZSwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBOb25lLAotICAgICAgICAgICAgImJ1aWxkIjogIl5hbGlhcyQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeYWxpYXMkIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogTm9uZSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jX2FsaWFzX2V4ZTo6QDUzNjMyY2JhMjc1MjI3MmJiMDA4JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmN4eF9hbGlhc19leGU6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiWkVST19DSEVDSyIsCi0gICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeYWxpYXMkIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJBbGlhcyIsCi0gICAgICAgICAgICAidHlwZSI6ICJVVElMSVRZIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2FsaWFzL0NNYWtlRmlsZXMvWkVST19DSEVDSyQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmFsaWFzL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9hbGlhcy9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0tcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvYWxpYXMvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkNNYWtlIFJ1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9hbGlhcy9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0tcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IE5vbmUsCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmFsaWFzL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiBOb25lLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IE5vbmUsCi0gICAgICAgICAgICAiYnVpbGQiOiAiXmFsaWFzJCIsCi0gICAgICAgICAgICAic291cmNlIjogIl5hbGlhcyQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiBOb25lLAotICAgICAgICAgICAgImFyY2hpdmUiOiBOb25lLAotICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IE5vbmUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogImNfYWxpYXNfZXhlIiwKLSAgICAgICAgICAgICJpZCI6ICJeY19hbGlhc19leGU6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeYWxpYXMkIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJBbGlhcyIsCi0gICAgICAgICAgICAidHlwZSI6ICJFWEVDVVRBQkxFIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogTm9uZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeYWxpYXMvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImluY2x1ZGVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImRlZmluZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogNSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmFsaWFzL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiAiXmNfYWxpYXNfZXhlKFxcLmV4ZSk/JCIsCi0gICAgICAgICAgICAiYXJ0aWZhY3RzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmFsaWFzLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2NfYWxpYXNfZXhlKFxcLmV4ZSk/JCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmFsaWFzLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2NfYWxpYXNfZXhlXFwucGRiJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl5hbGlhcyQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeYWxpYXMkIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogewotICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAibHRvIjogTm9uZSwKLSAgICAgICAgICAgICAgICAiY29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImFyY2hpdmUiOiBOb25lLAotICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY19saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9saW5rX2xpYnJhcmllcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiY3h4X2FsaWFzX2V4ZSIsCi0gICAgICAgICAgICAiaWQiOiAiXmN4eF9hbGlhc19leGU6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeYWxpYXMkIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJBbGlhcyIsCi0gICAgICAgICAgICAidHlwZSI6ICJFWEVDVVRBQkxFIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogTm9uZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkNYWCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmFsaWFzL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeYWxpYXMvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJzb3VyY2VHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICJpbmNsdWRlcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJkZWZpbmVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeYWxpYXMvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IDksCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogIl5jeHhfYWxpYXNfZXhlKFxcLmV4ZSk/JCIsCi0gICAgICAgICAgICAiYXJ0aWZhY3RzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmFsaWFzLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N4eF9hbGlhc19leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeYWxpYXMvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y3h4X2FsaWFzX2V4ZVxcLnBkYiQiLAotICAgICAgICAgICAgICAgICAgICAiX2RsbEV4dHJhIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJidWlsZCI6ICJeYWxpYXMkIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXmFsaWFzJCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IE5vbmUsCi0gICAgICAgICAgICAibGluayI6IHsKLSAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKLSAgICAgICAgICAgICAgICAibHRvIjogTm9uZSwKLSAgICAgICAgICAgICAgICAiY29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImFyY2hpdmUiOiBOb25lLAotICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY3h4X2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmFsaWFzL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDEwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9saW5rX2xpYnJhcmllcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiQUxMX0JVSUxEIiwKLSAgICAgICAgICAgICJpZCI6ICJeQUxMX0JVSUxEOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXm9iamVjdCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIk9iamVjdCIsCi0gICAgICAgICAgICAidHlwZSI6ICJVVElMSVRZIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL29iamVjdC9DTWFrZUZpbGVzL0FMTF9CVUlMRCQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvb2JqZWN0L0NNYWtlRmlsZXMvQUxMX0JVSUxEXFwucnVsZSQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIkNNYWtlIFJ1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9vYmplY3QvQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL29iamVjdC9DTWFrZUZpbGVzL0FMTF9CVUlMRFxcLnJ1bGUkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJjb21waWxlR3JvdXBzIjogTm9uZSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiBOb25lLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IE5vbmUsCi0gICAgICAgICAgICAiYnVpbGQiOiAiXm9iamVjdCQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeb2JqZWN0JCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IE5vbmUsCi0gICAgICAgICAgICAibGluayI6IE5vbmUsCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY19vYmplY3RfbGliOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY19vYmplY3RfZXhlOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY3h4X29iamVjdF9saWI6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5jeHhfb2JqZWN0X2V4ZTo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJaRVJPX0NIRUNLIiwKLSAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5vYmplY3QkIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJPYmplY3QiLAotICAgICAgICAgICAgInR5cGUiOiAiVVRJTElUWSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IFRydWUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9vYmplY3QvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9vYmplY3QvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIkNNYWtlIFJ1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9vYmplY3QvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkNNYWtlIFJ1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9vYmplY3QvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBOb25lLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6IE5vbmUsCi0gICAgICAgICAgICAiYXJ0aWZhY3RzIjogTm9uZSwKLSAgICAgICAgICAgICJidWlsZCI6ICJeb2JqZWN0JCIsCi0gICAgICAgICAgICAic291cmNlIjogIl5vYmplY3QkIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogTm9uZSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBOb25lLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJjX29iamVjdF9saWIiLAotICAgICAgICAgICAgImlkIjogIl5jX29iamVjdF9saWI6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeb2JqZWN0JCIsCi0gICAgICAgICAgICAicHJvamVjdE5hbWUiOiAiT2JqZWN0IiwKLSAgICAgICAgICAgICJ0eXBlIjogIk9CSkVDVF9MSUJSQVJZIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogTm9uZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2xpYnJhcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJjb21waWxlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiZGVmaW5lcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogNSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2xpYnJhcnkiLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogTm9uZSwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeb2JqZWN0Ly4qL2VtcHR5KFxcLmMpP1xcLm8oYmopPyQiLAotICAgICAgICAgICAgICAgICAgICAiX2RsbEV4dHJhIjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYnVpbGQiOiAiXm9iamVjdCQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeb2JqZWN0JCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IE5vbmUsCi0gICAgICAgICAgICAibGluayI6IE5vbmUsCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogImNfb2JqZWN0X2V4ZSIsCi0gICAgICAgICAgICAiaWQiOiAiXmNfb2JqZWN0X2V4ZTo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5vYmplY3QkIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJPYmplY3QiLAotICAgICAgICAgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IE5vbmUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvb2JqZWN0Ly4qL2VtcHR5KFxcLmMpP1xcLm8oYmopPyQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIk9iamVjdCBMaWJyYXJpZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfbGlua19saWJyYXJpZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiT2JqZWN0IExpYnJhcmllcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvb2JqZWN0Ly4qL2VtcHR5KFxcLmMpP1xcLm8oYmopPyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICJpbmNsdWRlcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJkZWZpbmVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA2LAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiAiXmNfb2JqZWN0X2V4ZShcXC5leGUpPyQiLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5vYmplY3QvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y19vYmplY3RfZXhlKFxcLmV4ZSk/JCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXm9iamVjdC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9jX29iamVjdF9leGVcXC5wZGIkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYnVpbGQiOiAiXm9iamVjdCQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeb2JqZWN0JCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IHsKLSAgICAgICAgICAgICAgICAicHJlZml4IjogIl4oL3Vzci9sb2NhbHxbQS1aYS16XTouKi9jb2RlbW9kZWwtdjIpJCIsCi0gICAgICAgICAgICAgICAgImRlc3RpbmF0aW9ucyI6IFsKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiYmluIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5zdGFsbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW5rIjogewotICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAibHRvIjogTm9uZSwKLSAgICAgICAgICAgICAgICAiY29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImFyY2hpdmUiOiBOb25lLAotICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY19vYmplY3RfbGliOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogQWRkIGEgYmFja3RyYWNlIGhlcmUgd2hlbiBpdCBiZWNvbWVzIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgIyBZb3UnbGwga25vdyB3aGVuIGl0J3MgYXZhaWxhYmxlLCBiZWNhdXNlIHRoaXMgdGVzdCB3aWxsCi0gICAgICAgICAgICAgICAgICAgICMgZmFpbC4KLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJjeHhfb2JqZWN0X2xpYiIsCi0gICAgICAgICAgICAiaWQiOiAiXmN4eF9vYmplY3RfbGliOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXm9iamVjdCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIk9iamVjdCIsCi0gICAgICAgICAgICAidHlwZSI6ICJPQkpFQ1RfTElCUkFSWSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IE5vbmUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmN4eCQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogOSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfbGlicmFyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJzb3VyY2VHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICJpbmNsdWRlcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJkZWZpbmVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA5LAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfbGlicmFyeSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiBOb25lLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5vYmplY3QvLiovZW1wdHkoXFwuY3h4KT9cXC5vKGJqKT8kIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl5vYmplY3QkIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXm9iamVjdCQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiBOb25lLAotICAgICAgICAgICAgImFyY2hpdmUiOiBOb25lLAotICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJjeHhfb2JqZWN0X2V4ZSIsCi0gICAgICAgICAgICAiaWQiOiAiXmN4eF9vYmplY3RfZXhlOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXm9iamVjdCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIk9iamVjdCIsCi0gICAgICAgICAgICAidHlwZSI6ICJFWEVDVVRBQkxFIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogTm9uZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkNYWCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL29iamVjdC8uKi9lbXB0eShcXC5jeHgpP1xcLm8oYmopPyQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIk9iamVjdCBMaWJyYXJpZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAidGFyZ2V0X2xpbmtfbGlicmFyaWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jeHgkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiT2JqZWN0IExpYnJhcmllcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvb2JqZWN0Ly4qL2VtcHR5KFxcLmN4eCk/XFwubyhiaik/JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICJpbmNsdWRlcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJkZWZpbmVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMCwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogIl5jeHhfb2JqZWN0X2V4ZShcXC5leGUpPyQiLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5vYmplY3QvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y3h4X29iamVjdF9leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeb2JqZWN0LygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N4eF9vYmplY3RfZXhlXFwucGRiJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl5vYmplY3QkIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXm9iamVjdCQiLAotICAgICAgICAgICAgImluc3RhbGwiOiB7Ci0gICAgICAgICAgICAgICAgInByZWZpeCI6ICJeKC91c3IvbG9jYWx8W0EtWmEtel06LiovY29kZW1vZGVsLXYyKSQiLAotICAgICAgICAgICAgICAgICJkZXN0aW5hdGlvbnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogImJpbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImluc3RhbGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibGluayI6IHsKLSAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKLSAgICAgICAgICAgICAgICAibHRvIjogTm9uZSwKLSAgICAgICAgICAgICAgICAiY29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImFyY2hpdmUiOiBOb25lLAotICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeY3h4X29iamVjdF9saWI6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAotICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBBZGQgYSBiYWNrdHJhY2UgaGVyZSB3aGVuIGl0IGJlY29tZXMgYXZhaWxhYmxlLgotICAgICAgICAgICAgICAgICAgICAjIFlvdSdsbCBrbm93IHdoZW4gaXQncyBhdmFpbGFibGUsIGJlY2F1c2UgdGhpcyB0ZXN0IHdpbGwKLSAgICAgICAgICAgICAgICAgICAgIyBmYWlsLgotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIkFMTF9CVUlMRCIsCi0gICAgICAgICAgICAiaWQiOiAiXkFMTF9CVUlMRDo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5pbXBvcnRlZCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkltcG9ydGVkIiwKLSAgICAgICAgICAgICJ0eXBlIjogIlVUSUxJVFkiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBUcnVlLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvaW1wb3J0ZWQvQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICIiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvaW1wb3J0ZWQvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvaW1wb3J0ZWQvQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2ltcG9ydGVkL0NNYWtlRmlsZXMvQUxMX0JVSUxEXFwucnVsZSQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBOb25lLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogTm9uZSwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBOb25lLAotICAgICAgICAgICAgImJ1aWxkIjogIl5pbXBvcnRlZCQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeaW1wb3J0ZWQkIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogTm9uZSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5saW5rX2ltcG9ydGVkX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmxpbmtfaW1wb3J0ZWRfc2hhcmVkX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmxpbmtfaW1wb3J0ZWRfc3RhdGljX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmxpbmtfaW1wb3J0ZWRfb2JqZWN0X2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmxpbmtfaW1wb3J0ZWRfaW50ZXJmYWNlX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJaRVJPX0NIRUNLIiwKLSAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5pbXBvcnRlZCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkltcG9ydGVkIiwKLSAgICAgICAgICAgICJ0eXBlIjogIlVUSUxJVFkiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBUcnVlLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvaW1wb3J0ZWQvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2ltcG9ydGVkL0NNYWtlRmlsZXMvWkVST19DSEVDS1xcLnJ1bGUkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJDTWFrZSBSdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9pbXBvcnRlZC9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0skIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2ltcG9ydGVkL0NNYWtlRmlsZXMvWkVST19DSEVDS1xcLnJ1bGUkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJjb21waWxlR3JvdXBzIjogTm9uZSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6IE5vbmUsCi0gICAgICAgICAgICAiYXJ0aWZhY3RzIjogTm9uZSwKLSAgICAgICAgICAgICJidWlsZCI6ICJeaW1wb3J0ZWQkIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXmltcG9ydGVkJCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IE5vbmUsCi0gICAgICAgICAgICAibGluayI6IE5vbmUsCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogTm9uZSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAibGlua19pbXBvcnRlZF9leGUiLAotICAgICAgICAgICAgImlkIjogIl5saW5rX2ltcG9ydGVkX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5pbXBvcnRlZCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkltcG9ydGVkIiwKLSAgICAgICAgICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBOb25lLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJjb21waWxlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiZGVmaW5lcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA1LAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6ICJebGlua19pbXBvcnRlZF9leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeaW1wb3J0ZWQvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/bGlua19pbXBvcnRlZF9leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeaW1wb3J0ZWQvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/bGlua19pbXBvcnRlZF9leGVcXC5wZGIkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYnVpbGQiOiAiXmltcG9ydGVkJCIsCi0gICAgICAgICAgICAic291cmNlIjogIl5pbXBvcnRlZCQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiB7Ci0gICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICJsdG8iOiBOb25lLAotICAgICAgICAgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogImxpbmtfaW1wb3J0ZWRfc2hhcmVkX2V4ZSIsCi0gICAgICAgICAgICAiaWQiOiAiXmxpbmtfaW1wb3J0ZWRfc2hhcmVkX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5pbXBvcnRlZCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkltcG9ydGVkIiwKLSAgICAgICAgICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBOb25lLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJjb21waWxlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiZGVmaW5lcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA5LAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6ICJebGlua19pbXBvcnRlZF9zaGFyZWRfZXhlKFxcLmV4ZSk/JCIsCi0gICAgICAgICAgICAiYXJ0aWZhY3RzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmltcG9ydGVkLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2xpbmtfaW1wb3J0ZWRfc2hhcmVkX2V4ZShcXC5leGUpPyQiLAotICAgICAgICAgICAgICAgICAgICAiX2RsbEV4dHJhIjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5pbXBvcnRlZC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9saW5rX2ltcG9ydGVkX3NoYXJlZF9leGVcXC5wZGIkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYnVpbGQiOiAiXmltcG9ydGVkJCIsCi0gICAgICAgICAgICAic291cmNlIjogIl5pbXBvcnRlZCQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiB7Ci0gICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICJsdG8iOiBOb25lLAotICAgICAgICAgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogImxpbmtfaW1wb3J0ZWRfc3RhdGljX2V4ZSIsCi0gICAgICAgICAgICAiaWQiOiAiXmxpbmtfaW1wb3J0ZWRfc3RhdGljX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5pbXBvcnRlZCQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkltcG9ydGVkIiwKLSAgICAgICAgICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBOb25lLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImluY2x1ZGVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImRlZmluZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTMsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogIl5saW5rX2ltcG9ydGVkX3N0YXRpY19leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeaW1wb3J0ZWQvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/bGlua19pbXBvcnRlZF9zdGF0aWNfZXhlKFxcLmV4ZSk/JCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmltcG9ydGVkLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2xpbmtfaW1wb3J0ZWRfc3RhdGljX2V4ZVxcLnBkYiQiLAotICAgICAgICAgICAgICAgICAgICAiX2RsbEV4dHJhIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJidWlsZCI6ICJeaW1wb3J0ZWQkIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXmltcG9ydGVkJCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IE5vbmUsCi0gICAgICAgICAgICAibGluayI6IHsKLSAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgImx0byI6IE5vbmUsCi0gICAgICAgICAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAibGlua19pbXBvcnRlZF9vYmplY3RfZXhlIiwKLSAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9vYmplY3RfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXmltcG9ydGVkJCIsCi0gICAgICAgICAgICAicHJvamVjdE5hbWUiOiAiSW1wb3J0ZWQiLAotICAgICAgICAgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IE5vbmUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDE4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJjb21waWxlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZXMiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiZGVmaW5lcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxOCwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiAiXmxpbmtfaW1wb3J0ZWRfb2JqZWN0X2V4ZShcXC5leGUpPyQiLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5pbXBvcnRlZC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9saW5rX2ltcG9ydGVkX29iamVjdF9leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeaW1wb3J0ZWQvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/bGlua19pbXBvcnRlZF9vYmplY3RfZXhlXFwucGRiJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl5pbXBvcnRlZCQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeaW1wb3J0ZWQkIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogewotICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAibHRvIjogTm9uZSwKLSAgICAgICAgICAgICAgICAiY29tbWFuZEZyYWdtZW50cyI6IE5vbmUsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImFyY2hpdmUiOiBOb25lLAotICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJsaW5rX2ltcG9ydGVkX2ludGVyZmFjZV9leGUiLAotICAgICAgICAgICAgImlkIjogIl5saW5rX2ltcG9ydGVkX2ludGVyZmFjZV9leGU6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeaW1wb3J0ZWQkIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJJbXBvcnRlZCIsCi0gICAgICAgICAgICAidHlwZSI6ICJFWEVDVVRBQkxFIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogTm9uZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJzb3VyY2VHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICJpbmNsdWRlcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJkZWZpbmVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IDIzLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6ICJebGlua19pbXBvcnRlZF9pbnRlcmZhY2VfZXhlKFxcLmV4ZSk/JCIsCi0gICAgICAgICAgICAiYXJ0aWZhY3RzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXmltcG9ydGVkLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2xpbmtfaW1wb3J0ZWRfaW50ZXJmYWNlX2V4ZShcXC5leGUpPyQiLAotICAgICAgICAgICAgICAgICAgICAiX2RsbEV4dHJhIjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl5pbXBvcnRlZC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9saW5rX2ltcG9ydGVkX2ludGVyZmFjZV9leGVcXC5wZGIkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYnVpbGQiOiAiXmltcG9ydGVkJCIsCi0gICAgICAgICAgICAic291cmNlIjogIl5pbXBvcnRlZCQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiB7Ci0gICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICJsdG8iOiBOb25lLAotICAgICAgICAgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIkFMTF9CVUlMRCIsCi0gICAgICAgICAgICAiaWQiOiAiXkFMTF9CVUlMRDo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl5jdXN0b20kIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJDdXN0b20iLAotICAgICAgICAgICAgInR5cGUiOiAiVVRJTElUWSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IFRydWUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jdXN0b20vQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICIiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jdXN0b20vQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2N1c3RvbS9DTWFrZUZpbGVzL0FMTF9CVUlMRFxcLnJ1bGUkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJDTWFrZSBSdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3VzdG9tL0NNYWtlRmlsZXMvQUxMX0JVSUxEJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkNNYWtlIFJ1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jdXN0b20vQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IE5vbmUsCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogTm9uZSwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBOb25lLAotICAgICAgICAgICAgImJ1aWxkIjogIl5jdXN0b20kIiwKLSAgICAgICAgICAgICJzb3VyY2UiOiAiXmN1c3RvbSQiLAotICAgICAgICAgICAgImluc3RhbGwiOiBOb25lLAotICAgICAgICAgICAgImxpbmsiOiBOb25lLAotICAgICAgICAgICAgImFyY2hpdmUiOiBOb25lLAotICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmN1c3RvbV9leGU6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiWkVST19DSEVDSyIsCi0gICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeY3VzdG9tJCIsCi0gICAgICAgICAgICAicHJvamVjdE5hbWUiOiAiQ3VzdG9tIiwKLSAgICAgICAgICAgICJ0eXBlIjogIlVUSUxJVFkiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBUcnVlLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3VzdG9tL0NNYWtlRmlsZXMvWkVST19DSEVDSyQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3VzdG9tL0NNYWtlRmlsZXMvWkVST19DSEVDS1xcLnJ1bGUkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJDTWFrZSBSdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInNvdXJjZUdyb3VwcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3VzdG9tL0NNYWtlRmlsZXMvWkVST19DSEVDSyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJDTWFrZSBSdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3VzdG9tL0NNYWtlRmlsZXMvWkVST19DSEVDS1xcLnJ1bGUkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJjb21waWxlR3JvdXBzIjogTm9uZSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3VzdG9tL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiBOb25lLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IE5vbmUsCi0gICAgICAgICAgICAiYnVpbGQiOiAiXmN1c3RvbSQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeY3VzdG9tJCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IE5vbmUsCi0gICAgICAgICAgICAibGluayI6IE5vbmUsCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogTm9uZSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiY3VzdG9tX3RndCIsCi0gICAgICAgICAgICAiaWQiOiAiXmN1c3RvbV90Z3Q6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeY3VzdG9tJCIsCi0gICAgICAgICAgICAicHJvamVjdE5hbWUiOiAiQ3VzdG9tIiwKLSAgICAgICAgICAgICJ0eXBlIjogIlVUSUxJVFkiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBOb25lLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3VzdG9tL0NNYWtlRmlsZXMvY3VzdG9tX3RndCQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9jdXN0b21fdGFyZ2V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvKGN1c3RvbS8pP0NNYWtlRmlsZXMvKFswLTlhLWZdKy8pP2N1c3RvbV90Z3RcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jdXN0b20vQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJzb3VyY2VHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICIiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2N1c3RvbS9DTWFrZUZpbGVzL2N1c3RvbV90Z3QkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkLyhjdXN0b20vKT9DTWFrZUZpbGVzLyhbMC05YS1mXSsvKT9jdXN0b21fdGd0XFwucnVsZSQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBOb25lLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jdXN0b20vQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IDMsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9jdXN0b21fdGFyZ2V0IiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jdXN0b20vQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6IE5vbmUsCi0gICAgICAgICAgICAiYXJ0aWZhY3RzIjogTm9uZSwKLSAgICAgICAgICAgICJidWlsZCI6ICJeY3VzdG9tJCIsCi0gICAgICAgICAgICAic291cmNlIjogIl5jdXN0b20kIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogTm9uZSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiY3VzdG9tX2V4ZSIsCi0gICAgICAgICAgICAiaWQiOiAiXmN1c3RvbV9leGU6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeY3VzdG9tJCIsCi0gICAgICAgICAgICAicHJvamVjdE5hbWUiOiAiQ3VzdG9tIiwKLSAgICAgICAgICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBOb25lLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jdXN0b20vQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jdXN0b20vQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJzb3VyY2VHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImNvbXBpbGVHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICJpbmNsdWRlcyI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJkZWZpbmVzIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3VzdG9tL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA0LAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3VzdG9tL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJmb2xkZXIiOiBOb25lLAotICAgICAgICAgICAgIm5hbWVPbkRpc2siOiAiXmN1c3RvbV9leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeY3VzdG9tLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N1c3RvbV9leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeY3VzdG9tLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N1c3RvbV9leGVcXC5wZGIkIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiYnVpbGQiOiAiXmN1c3RvbSQiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJeY3VzdG9tJCIsCi0gICAgICAgICAgICAiaW5zdGFsbCI6IE5vbmUsCi0gICAgICAgICAgICAibGluayI6IHsKLSAgICAgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCi0gICAgICAgICAgICAgICAgImx0byI6IE5vbmUsCi0gICAgICAgICAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXmN1c3RvbV90Z3Q6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jdXN0b20vQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZGVwZW5kZW5jaWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiQUxMX0JVSUxEIiwKLSAgICAgICAgICAgICJpZCI6ICJeQUxMX0JVSUxEOjpAWzAtOWEtZl0rJCIsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UkIiwKLSAgICAgICAgICAgICJwcm9qZWN0TmFtZSI6ICJFeHRlcm5hbCIsCi0gICAgICAgICAgICAidHlwZSI6ICJVVElMSVRZIiwKLSAgICAgICAgICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICJzb3VyY2VzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQvQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICIiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJzb3VyY2VHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICIiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQvQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IE5vbmUsCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogTm9uZSwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBOb25lLAotICAgICAgICAgICAgImJ1aWxkIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL0ZpbGVBUElFeHRlcm5hbEJ1aWxkJCIsCi0gICAgICAgICAgICAic291cmNlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UkIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogTm9uZSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBbMC05YS1mXSskIiwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJpZCI6ICJeZ2VuZXJhdGVkX2V4ZTo6QFswLTlhLWZdKyQiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogTm9uZSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiWkVST19DSEVDSyIsCi0gICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBbMC05YS1mXSskIiwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZSQiLAotICAgICAgICAgICAgInByb2plY3ROYW1lIjogIkV4dGVybmFsIiwKLSAgICAgICAgICAgICJ0eXBlIjogIlVUSUxJVFkiLAotICAgICAgICAgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBUcnVlLAotICAgICAgICAgICAgInNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZC9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0skIiwKLSAgICAgICAgICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICIiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiLAotICAgICAgICAgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIkNNYWtlIFJ1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAic291cmNlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL0ZpbGVBUElFeHRlcm5hbEJ1aWxkL0NNYWtlRmlsZXMvWkVST19DSEVDSyQiLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJDTWFrZSBSdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZC9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0tcXC5ydWxlJCIsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiY29tcGlsZUdyb3VwcyI6IE5vbmUsCi0gICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZm9sZGVyIjogTm9uZSwKLSAgICAgICAgICAgICJuYW1lT25EaXNrIjogTm9uZSwKLSAgICAgICAgICAgICJhcnRpZmFjdHMiOiBOb25lLAotICAgICAgICAgICAgImJ1aWxkIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL0ZpbGVBUElFeHRlcm5hbEJ1aWxkJCIsCi0gICAgICAgICAgICAic291cmNlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UkIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogTm9uZSwKLSAgICAgICAgICAgICJhcmNoaXZlIjogTm9uZSwKLSAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBOb25lLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJnZW5lcmF0ZWRfZXhlIiwKLSAgICAgICAgICAgICJpZCI6ICJeZ2VuZXJhdGVkX2V4ZTo6QFswLTlhLWZdKyQiLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlJCIsCi0gICAgICAgICAgICAicHJvamVjdE5hbWUiOiAiRXh0ZXJuYWwiLAotICAgICAgICAgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCi0gICAgICAgICAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IE5vbmUsCi0gICAgICAgICAgICAic291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvZW1wdHlcXC5jJCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQvZ2VuZXJhdGVkXFwuY3h4JCIsCi0gICAgICAgICAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiR2VuZXJhdGVkIFNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfc291cmNlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJzb3VyY2VHcm91cHMiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR2VuZXJhdGVkIFNvdXJjZSBGaWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZC9nZW5lcmF0ZWRcXC5jeHgkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJjb21waWxlR3JvdXBzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAotICAgICAgICAgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9lbXB0eVxcLmMkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImluY2x1ZGVzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL0ZpbGVBUElFeHRlcm5hbEJ1aWxkJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImlzU3lzdGVtIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJzZXRfcHJvcGVydHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNTeXN0ZW0iOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImRlZmluZXMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmluZSI6ICJFTVBUWV9DPTEiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAic2V0X3Byb3BlcnR5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmaW5lIjogIlNSQ19EVU1NWSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJzZXRfcHJvcGVydHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZpbmUiOiAiR0VORVJBVEVEX0VYRT0xIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmluZSI6ICJUR1RfRFVNTVkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9jb21waWxlX2RlZmluaXRpb25zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFnbWVudCIgOiAiU1JDX0NPTVBJTEVfT1BUSU9OU19EVU1NWSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDEzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAic2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSIgOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImxhbmd1YWdlIjogIkNYWCIsCi0gICAgICAgICAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZC9nZW5lcmF0ZWRcXC5jeHgkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImluY2x1ZGVzIjogWwotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNTeXN0ZW0iOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgImRlZmluZXMiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmluZSI6ICJHRU5FUkFURURfRVhFPTEiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9jb21waWxlX2RlZmluaXRpb25zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBUcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmaW5lIjogIlRHVF9EVU1NWSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDEyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAidGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IDUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAotICAgICAgICAgICAgICAgICAgICAibGluZSI6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImZvbGRlciI6IE5vbmUsCi0gICAgICAgICAgICAibmFtZU9uRGlzayI6ICJeZ2VuZXJhdGVkX2V4ZShcXC5leGUpPyQiLAotICAgICAgICAgICAgImFydGlmYWN0cyI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL0ZpbGVBUElFeHRlcm5hbEJ1aWxkLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2dlbmVyYXRlZF9leGUoXFwuZXhlKT8kIiwKLSAgICAgICAgICAgICAgICAgICAgIl9kbGxFeHRyYSI6IEZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9nZW5lcmF0ZWRfZXhlXFwucGRiJCIsCi0gICAgICAgICAgICAgICAgICAgICJfZGxsRXh0cmEiOiBUcnVlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImJ1aWxkIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL0ZpbGVBUElFeHRlcm5hbEJ1aWxkJCIsCi0gICAgICAgICAgICAic291cmNlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UkIiwKLSAgICAgICAgICAgICJpbnN0YWxsIjogTm9uZSwKLSAgICAgICAgICAgICJsaW5rIjogewotICAgICAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAotICAgICAgICAgICAgICAgICJsdG8iOiBOb25lLAotICAgICAgICAgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogTm9uZSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiYXJjaGl2ZSI6IE5vbmUsCi0gICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpAWzAtOWEtZl0rJCIsCi0gICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBOb25lLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvYWxsX2J1aWxkX3RvcC5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgidGFyZ2V0cy96ZXJvX2NoZWNrX3RvcC5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgidGFyZ2V0cy9pbnRlcmZhY2VfZXhlLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2NfbGliLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2NfZXhlLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2Nfc2hhcmVkX2xpYi5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgidGFyZ2V0cy9jX3NoYXJlZF9leGUuanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvY19zdGF0aWNfbGliLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2Nfc3RhdGljX2V4ZS5qc29uIiksCisKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2FsbF9idWlsZF9jeHguanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvemVyb19jaGVja19jeHguanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvY3h4X2xpYi5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgidGFyZ2V0cy9jeHhfZXhlLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2N4eF9zaGFyZWRfbGliLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2N4eF9zaGFyZWRfZXhlLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2N4eF9zdGF0aWNfbGliLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2N4eF9zdGF0aWNfZXhlLmpzb24iKSwKKworICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvYWxsX2J1aWxkX2FsaWFzLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL3plcm9fY2hlY2tfYWxpYXMuanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvY19hbGlhc19leGUuanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvY3h4X2FsaWFzX2V4ZS5qc29uIiksCisKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2FsbF9idWlsZF9vYmplY3QuanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvemVyb19jaGVja19vYmplY3QuanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvY19vYmplY3RfbGliLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2Nfb2JqZWN0X2V4ZS5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgidGFyZ2V0cy9jeHhfb2JqZWN0X2xpYi5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgidGFyZ2V0cy9jeHhfb2JqZWN0X2V4ZS5qc29uIiksCisKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2FsbF9idWlsZF9pbXBvcnRlZC5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgidGFyZ2V0cy96ZXJvX2NoZWNrX2ltcG9ydGVkLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2xpbmtfaW1wb3J0ZWRfZXhlLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2xpbmtfaW1wb3J0ZWRfc2hhcmVkX2V4ZS5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgidGFyZ2V0cy9saW5rX2ltcG9ydGVkX3N0YXRpY19leGUuanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvbGlua19pbXBvcnRlZF9vYmplY3RfZXhlLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2xpbmtfaW1wb3J0ZWRfaW50ZXJmYWNlX2V4ZS5qc29uIiksCisKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2FsbF9idWlsZF9jdXN0b20uanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvemVyb19jaGVja19jdXN0b20uanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInRhcmdldHMvY3VzdG9tX3RndC5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgidGFyZ2V0cy9jdXN0b21fZXhlLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2FsbF9idWlsZF9leHRlcm5hbC5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgidGFyZ2V0cy96ZXJvX2NoZWNrX2V4dGVybmFsLmpzb24iKSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJ0YXJnZXRzL2dlbmVyYXRlZF9leGUuanNvbiIpLAogICAgIF0KIAogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocmVwbHlfZGlyLCAiLi4iLCAiLi4iLCAiLi4iLCAiLi4iLCAiaXBvX2VuYWJsZWQudHh0IikpOgpAQCAtNTE2NCwxMjYgKzY1NSwxMyBAQAogCiBkZWYgZ2VuX2NoZWNrX3Byb2plY3RzKGMsIGcpOgogICAgIGV4cGVjdGVkID0gWwotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJjb2RlbW9kZWwtdjIiLAotICAgICAgICAgICAgInBhcmVudE5hbWUiOiBOb25lLAotICAgICAgICAgICAgImNoaWxkTmFtZXMiOiBbCi0gICAgICAgICAgICAgICAgIkFsaWFzIiwKLSAgICAgICAgICAgICAgICAiQ3VzdG9tIiwKLSAgICAgICAgICAgICAgICAiQ3h4IiwKLSAgICAgICAgICAgICAgICAiSW1wb3J0ZWQiLAotICAgICAgICAgICAgICAgICJPYmplY3QiLAotICAgICAgICAgICAgICAgICJFeHRlcm5hbCIsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgIl5cXC4kIiwKLSAgICAgICAgICAgICAgICAiXmRpciQiLAotICAgICAgICAgICAgICAgICJeZGlyL2RpciQiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJ0YXJnZXRJZHMiOiBbCi0gICAgICAgICAgICAgICAgIl5BTExfQlVJTEQ6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICJeWkVST19DSEVDSzo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCi0gICAgICAgICAgICAgICAgIl5pbnRlcmZhY2VfZXhlOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAiXmNfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAiXmNfZXhlOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAiXmNfc2hhcmVkX2xpYjo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCi0gICAgICAgICAgICAgICAgIl5jX3NoYXJlZF9leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAotICAgICAgICAgICAgICAgICJeY19zdGF0aWNfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKLSAgICAgICAgICAgICAgICAiXmNfc3RhdGljX2V4ZTo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJDeHgiLAotICAgICAgICAgICAgInBhcmVudE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKLSAgICAgICAgICAgICJjaGlsZE5hbWVzIjogTm9uZSwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2VzIjogWwotICAgICAgICAgICAgICAgICJeY3h4JCIsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInRhcmdldElkcyI6IFsKLSAgICAgICAgICAgICAgICAiXkFMTF9CVUlMRDo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgIl5aRVJPX0NIRUNLOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKLSAgICAgICAgICAgICAgICAiXmN4eF9saWI6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAotICAgICAgICAgICAgICAgICJeY3h4X2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgIl5jeHhfc2hhcmVkX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgIl5jeHhfc2hhcmVkX2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgIl5jeHhfc3RhdGljX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICAgICAgIl5jeHhfc3RhdGljX2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJBbGlhcyIsCi0gICAgICAgICAgICAicGFyZW50TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAotICAgICAgICAgICAgImNoaWxkTmFtZXMiOiBOb25lLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgIl5hbGlhcyQiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJ0YXJnZXRJZHMiOiBbCi0gICAgICAgICAgICAgICAgIl5BTExfQlVJTEQ6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAotICAgICAgICAgICAgICAgICJeWkVST19DSEVDSzo6QDUzNjMyY2JhMjc1MjI3MmJiMDA4JCIsCi0gICAgICAgICAgICAgICAgIl5jX2FsaWFzX2V4ZTo6QDUzNjMyY2JhMjc1MjI3MmJiMDA4JCIsCi0gICAgICAgICAgICAgICAgIl5jeHhfYWxpYXNfZXhlOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIk9iamVjdCIsCi0gICAgICAgICAgICAicGFyZW50TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAotICAgICAgICAgICAgImNoaWxkTmFtZXMiOiBOb25lLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgIl5vYmplY3QkIiwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAidGFyZ2V0SWRzIjogWwotICAgICAgICAgICAgICAgICJeQUxMX0JVSUxEOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAiXlpFUk9fQ0hFQ0s6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAotICAgICAgICAgICAgICAgICJeY19vYmplY3RfbGliOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKLSAgICAgICAgICAgICAgICAiXmNfb2JqZWN0X2V4ZTo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCi0gICAgICAgICAgICAgICAgIl5jeHhfb2JqZWN0X2xpYjo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCi0gICAgICAgICAgICAgICAgIl5jeHhfb2JqZWN0X2V4ZTo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJJbXBvcnRlZCIsCi0gICAgICAgICAgICAicGFyZW50TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAotICAgICAgICAgICAgImNoaWxkTmFtZXMiOiBOb25lLAotICAgICAgICAgICAgImRpcmVjdG9yeVNvdXJjZXMiOiBbCi0gICAgICAgICAgICAgICAgIl5pbXBvcnRlZCQiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJ0YXJnZXRJZHMiOiBbCi0gICAgICAgICAgICAgICAgIl5BTExfQlVJTEQ6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAotICAgICAgICAgICAgICAgICJeWkVST19DSEVDSzo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAgICAgIl5saW5rX2ltcG9ydGVkX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAgICAgIl5saW5rX2ltcG9ydGVkX3NoYXJlZF9leGU6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAotICAgICAgICAgICAgICAgICJebGlua19pbXBvcnRlZF9zdGF0aWNfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKLSAgICAgICAgICAgICAgICAiXmxpbmtfaW1wb3J0ZWRfb2JqZWN0X2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCi0gICAgICAgICAgICAgICAgIl5saW5rX2ltcG9ydGVkX2ludGVyZmFjZV9leGU6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiQ3VzdG9tIiwKLSAgICAgICAgICAgICJwYXJlbnROYW1lIjogImNvZGVtb2RlbC12MiIsCi0gICAgICAgICAgICAiY2hpbGROYW1lcyI6IE5vbmUsCi0gICAgICAgICAgICAiZGlyZWN0b3J5U291cmNlcyI6IFsKLSAgICAgICAgICAgICAgICAiXmN1c3RvbSQiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJ0YXJnZXRJZHMiOiBbCi0gICAgICAgICAgICAgICAgIl5BTExfQlVJTEQ6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAotICAgICAgICAgICAgICAgICJeWkVST19DSEVDSzo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCi0gICAgICAgICAgICAgICAgIl5jdXN0b21fdGd0OjpAYzExMzg1ZmZlZDU3Yjg2MGRhNjMkIiwKLSAgICAgICAgICAgICAgICAiXmN1c3RvbV9leGU6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAiRXh0ZXJuYWwiLAotICAgICAgICAgICAgInBhcmVudE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKLSAgICAgICAgICAgICJjaGlsZE5hbWVzIjogTm9uZSwKLSAgICAgICAgICAgICJkaXJlY3RvcnlTb3VyY2VzIjogWwotICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlJCIsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgInRhcmdldElkcyI6IFsKLSAgICAgICAgICAgICAgICAiXkFMTF9CVUlMRDo6QFswLTlhLWZdKyQiLAotICAgICAgICAgICAgICAgICJeWkVST19DSEVDSzo6QFswLTlhLWZdKyQiLAotICAgICAgICAgICAgICAgICJeZ2VuZXJhdGVkX2V4ZTo6QFswLTlhLWZdKyQiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKKyAgICAgICAgcmVhZF9jb2RlbW9kZWxfanNvbl9kYXRhKCJwcm9qZWN0cy9jb2RlbW9kZWwtdjIuanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInByb2plY3RzL2N4eC5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgicHJvamVjdHMvYWxpYXMuanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInByb2plY3RzL29iamVjdC5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgicHJvamVjdHMvaW1wb3J0ZWQuanNvbiIpLAorICAgICAgICByZWFkX2NvZGVtb2RlbF9qc29uX2RhdGEoInByb2plY3RzL2N1c3RvbS5qc29uIiksCisgICAgICAgIHJlYWRfY29kZW1vZGVsX2pzb25fZGF0YSgicHJvamVjdHMvZXh0ZXJuYWwuanNvbiIpLAogICAgIF0KIAogICAgIGlmIG1hdGNoZXMoZ1sibmFtZSJdLCAiXlZpc3VhbCBTdHVkaW8gIik6CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL2FsaWFzLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL2FsaWFzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWYwYzQ4YQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvZGlyZWN0b3JpZXMvYWxpYXMuanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICAgInNvdXJjZSI6ICJeYWxpYXMkIiwKKyAgICAiYnVpbGQiOiAiXmFsaWFzJCIsCisgICAgInBhcmVudFNvdXJjZSI6ICJeXFwuJCIsCisgICAgImNoaWxkU291cmNlcyI6IG51bGwsCisgICAgInRhcmdldElkcyI6IFsKKyAgICAgICAgIl5BTExfQlVJTEQ6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAorICAgICAgICAiXlpFUk9fQ0hFQ0s6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAorICAgICAgICAiXmNfYWxpYXNfZXhlOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKKyAgICAgICAgIl5jeHhfYWxpYXNfZXhlOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIgorICAgIF0sCisgICAgInByb2plY3ROYW1lIjogIkFsaWFzIiwKKyAgICAibWluaW11bUNNYWtlVmVyc2lvbiI6ICIzLjEyIiwKKyAgICAiaGFzSW5zdGFsbFJ1bGUiOiBudWxsCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL2N1c3RvbS5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9kaXJlY3Rvcmllcy9jdXN0b20uanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmQ0MWYzCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9kaXJlY3Rvcmllcy9jdXN0b20uanNvbgpAQCAtMCwwICsxLDE1IEBACit7CisgICAgInNvdXJjZSI6ICJeY3VzdG9tJCIsCisgICAgImJ1aWxkIjogIl5jdXN0b20kIiwKKyAgICAicGFyZW50U291cmNlIjogIl5cXC4kIiwKKyAgICAiY2hpbGRTb3VyY2VzIjogbnVsbCwKKyAgICAidGFyZ2V0SWRzIjogWworICAgICAgICAiXkFMTF9CVUlMRDo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCisgICAgICAgICJeWkVST19DSEVDSzo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCisgICAgICAgICJeY3VzdG9tX2V4ZTo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCisgICAgICAgICJeY3VzdG9tX3RndDo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIKKyAgICBdLAorICAgICJwcm9qZWN0TmFtZSI6ICJDdXN0b20iLAorICAgICJtaW5pbXVtQ01ha2VWZXJzaW9uIjogIjMuMTIiLAorICAgICJoYXNJbnN0YWxsUnVsZSI6IG51bGwKK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvZGlyZWN0b3JpZXMvY3h4Lmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL2N4eC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZTcxN2EKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL2N4eC5qc29uCkBAIC0wLDAgKzEsMTkgQEAKK3sKKyAgICAic291cmNlIjogIl5jeHgkIiwKKyAgICAiYnVpbGQiOiAiXmN4eCQiLAorICAgICJwYXJlbnRTb3VyY2UiOiAiXlxcLiQiLAorICAgICJjaGlsZFNvdXJjZXMiOiBudWxsLAorICAgICJ0YXJnZXRJZHMiOiBbCisgICAgICAgICJeQUxMX0JVSUxEOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKKyAgICAgICAgIl5aRVJPX0NIRUNLOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKKyAgICAgICAgIl5jeHhfZXhlOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKKyAgICAgICAgIl5jeHhfbGliOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKKyAgICAgICAgIl5jeHhfc2hhcmVkX2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgICAgICJeY3h4X3NoYXJlZF9saWI6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAiXmN4eF9zdGF0aWNfZXhlOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKKyAgICAgICAgIl5jeHhfc3RhdGljX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIKKyAgICBdLAorICAgICJwcm9qZWN0TmFtZSI6ICJDeHgiLAorICAgICJtaW5pbXVtQ01ha2VWZXJzaW9uIjogIjMuMTIiLAorICAgICJoYXNJbnN0YWxsUnVsZSI6IG51bGwKK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvZGlyZWN0b3JpZXMvZGlyLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL2Rpci5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYmQ0M2EKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL2Rpci5qc29uCkBAIC0wLDAgKzEsMTIgQEAKK3sKKyAgICAic291cmNlIjogIl5kaXIkIiwKKyAgICAiYnVpbGQiOiAiXmRpciQiLAorICAgICJwYXJlbnRTb3VyY2UiOiAiXlxcLiQiLAorICAgICJjaGlsZFNvdXJjZXMiOiBbCisgICAgICAgICJeZGlyL2RpciQiCisgICAgXSwKKyAgICAidGFyZ2V0SWRzIjogbnVsbCwKKyAgICAicHJvamVjdE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKKyAgICAibWluaW11bUNNYWtlVmVyc2lvbiI6ICIzLjEyIiwKKyAgICAiaGFzSW5zdGFsbFJ1bGUiOiBudWxsCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL2Rpcl9kaXIuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvZGlyZWN0b3JpZXMvZGlyX2Rpci5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MzdhZDUKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL2Rpcl9kaXIuanNvbgpAQCAtMCwwICsxLDEwIEBACit7CisgICAgInNvdXJjZSI6ICJeZGlyL2RpciQiLAorICAgICJidWlsZCI6ICJeZGlyL2RpciQiLAorICAgICJwYXJlbnRTb3VyY2UiOiAiXmRpciQiLAorICAgICJjaGlsZFNvdXJjZXMiOiBudWxsLAorICAgICJ0YXJnZXRJZHMiOiBudWxsLAorICAgICJwcm9qZWN0TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAorICAgICJtaW5pbXVtQ01ha2VWZXJzaW9uIjogIjMuMTIiLAorICAgICJoYXNJbnN0YWxsUnVsZSI6IG51bGwKK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvZGlyZWN0b3JpZXMvZXh0ZXJuYWwuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvZGlyZWN0b3JpZXMvZXh0ZXJuYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjFlM2M3Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9kaXJlY3Rvcmllcy9leHRlcm5hbC5qc29uCkBAIC0wLDAgKzEsMTQgQEAKK3sKKyAgICAic291cmNlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UkIiwKKyAgICAiYnVpbGQiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQkIiwKKyAgICAicGFyZW50U291cmNlIjogIl5cXC4kIiwKKyAgICAiY2hpbGRTb3VyY2VzIjogbnVsbCwKKyAgICAidGFyZ2V0SWRzIjogWworICAgICAgICAiXkFMTF9CVUlMRDo6QFswLTlhLWZdKyQiLAorICAgICAgICAiXlpFUk9fQ0hFQ0s6OkBbMC05YS1mXSskIiwKKyAgICAgICAgIl5nZW5lcmF0ZWRfZXhlOjpAWzAtOWEtZl0rJCIKKyAgICBdLAorICAgICJwcm9qZWN0TmFtZSI6ICJFeHRlcm5hbCIsCisgICAgIm1pbmltdW1DTWFrZVZlcnNpb24iOiAiMy4xMiIsCisgICAgImhhc0luc3RhbGxSdWxlIjogbnVsbAorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9kaXJlY3Rvcmllcy9pbXBvcnRlZC5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9kaXJlY3Rvcmllcy9pbXBvcnRlZC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MWI3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL2ltcG9ydGVkLmpzb24KQEAgLTAsMCArMSwxOCBAQAoreworICAgICJzb3VyY2UiOiAiXmltcG9ydGVkJCIsCisgICAgImJ1aWxkIjogIl5pbXBvcnRlZCQiLAorICAgICJwYXJlbnRTb3VyY2UiOiAiXlxcLiQiLAorICAgICJjaGlsZFNvdXJjZXMiOiBudWxsLAorICAgICJ0YXJnZXRJZHMiOiBbCisgICAgICAgICJeQUxMX0JVSUxEOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgIl5aRVJPX0NIRUNLOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgIl5saW5rX2ltcG9ydGVkX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCisgICAgICAgICJebGlua19pbXBvcnRlZF9pbnRlcmZhY2VfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgIl5saW5rX2ltcG9ydGVkX29iamVjdF9leGU6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAorICAgICAgICAiXmxpbmtfaW1wb3J0ZWRfc2hhcmVkX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCisgICAgICAgICJebGlua19pbXBvcnRlZF9zdGF0aWNfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIgorICAgIF0sCisgICAgInByb2plY3ROYW1lIjogIkltcG9ydGVkIiwKKyAgICAibWluaW11bUNNYWtlVmVyc2lvbiI6ICIzLjEyIiwKKyAgICAiaGFzSW5zdGFsbFJ1bGUiOiBudWxsCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL29iamVjdC5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9kaXJlY3Rvcmllcy9vYmplY3QuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTY0N2FkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9kaXJlY3Rvcmllcy9vYmplY3QuanNvbgpAQCAtMCwwICsxLDE3IEBACit7CisgICAgInNvdXJjZSI6ICJeb2JqZWN0JCIsCisgICAgImJ1aWxkIjogIl5vYmplY3QkIiwKKyAgICAicGFyZW50U291cmNlIjogIl5cXC4kIiwKKyAgICAiY2hpbGRTb3VyY2VzIjogbnVsbCwKKyAgICAidGFyZ2V0SWRzIjogWworICAgICAgICAiXkFMTF9CVUlMRDo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCisgICAgICAgICJeWkVST19DSEVDSzo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCisgICAgICAgICJeY19vYmplY3RfZXhlOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKKyAgICAgICAgIl5jX29iamVjdF9saWI6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICAgICAiXmN4eF9vYmplY3RfZXhlOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKKyAgICAgICAgIl5jeHhfb2JqZWN0X2xpYjo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIKKyAgICBdLAorICAgICJwcm9qZWN0TmFtZSI6ICJPYmplY3QiLAorICAgICJtaW5pbXVtQ01ha2VWZXJzaW9uIjogIjMuMTMiLAorICAgICJoYXNJbnN0YWxsUnVsZSI6IHRydWUKK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvZGlyZWN0b3JpZXMvdG9wLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL3RvcC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNDQ5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL2RpcmVjdG9yaWVzL3RvcC5qc29uCkBAIC0wLDAgKzEsMjggQEAKK3sKKyAgICAic291cmNlIjogIl5cXC4kIiwKKyAgICAiYnVpbGQiOiAiXlxcLiQiLAorICAgICJwYXJlbnRTb3VyY2UiOiBudWxsLAorICAgICJjaGlsZFNvdXJjZXMiOiBbCisgICAgICAgICJeYWxpYXMkIiwKKyAgICAgICAgIl5jdXN0b20kIiwKKyAgICAgICAgIl5jeHgkIiwKKyAgICAgICAgIl5pbXBvcnRlZCQiLAorICAgICAgICAiXm9iamVjdCQiLAorICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZSQiLAorICAgICAgICAiXmRpciQiCisgICAgXSwKKyAgICAidGFyZ2V0SWRzIjogWworICAgICAgICAiXkFMTF9CVUlMRDo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgICAgICJeWkVST19DSEVDSzo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgICAgICJeY19leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAiXmNfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAgICAgIl5jX3NoYXJlZF9leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAiXmNfc2hhcmVkX2xpYjo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgICAgICJeY19zdGF0aWNfZXhlOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAgICAgIl5jX3N0YXRpY19saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAiXmludGVyZmFjZV9leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiCisgICAgXSwKKyAgICAicHJvamVjdE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKKyAgICAibWluaW11bUNNYWtlVmVyc2lvbiI6ICIzLjEyIiwKKyAgICAiaGFzSW5zdGFsbFJ1bGUiOiB0cnVlCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3Byb2plY3RzL2FsaWFzLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3Byb2plY3RzL2FsaWFzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVkZTYwZgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvcHJvamVjdHMvYWxpYXMuanNvbgpAQCAtMCwwICsxLDE0IEBACit7CisgICAgIm5hbWUiOiAiQWxpYXMiLAorICAgICJwYXJlbnROYW1lIjogImNvZGVtb2RlbC12MiIsCisgICAgImNoaWxkTmFtZXMiOiBudWxsLAorICAgICJkaXJlY3RvcnlTb3VyY2VzIjogWworICAgICAgICAiXmFsaWFzJCIKKyAgICBdLAorICAgICJ0YXJnZXRJZHMiOiBbCisgICAgICAgICJeQUxMX0JVSUxEOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKKyAgICAgICAgIl5aRVJPX0NIRUNLOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKKyAgICAgICAgIl5jX2FsaWFzX2V4ZTo6QDUzNjMyY2JhMjc1MjI3MmJiMDA4JCIsCisgICAgICAgICJeY3h4X2FsaWFzX2V4ZTo6QDUzNjMyY2JhMjc1MjI3MmJiMDA4JCIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3Byb2plY3RzL2NvZGVtb2RlbC12Mi5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9wcm9qZWN0cy9jb2RlbW9kZWwtdjIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2FhYzYzCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9wcm9qZWN0cy9jb2RlbW9kZWwtdjIuanNvbgpAQCAtMCwwICsxLDI4IEBACit7CisgICAgIm5hbWUiOiAiY29kZW1vZGVsLXYyIiwKKyAgICAicGFyZW50TmFtZSI6IG51bGwsCisgICAgImNoaWxkTmFtZXMiOiBbCisgICAgICAgICJBbGlhcyIsCisgICAgICAgICJDdXN0b20iLAorICAgICAgICAiQ3h4IiwKKyAgICAgICAgIkltcG9ydGVkIiwKKyAgICAgICAgIk9iamVjdCIsCisgICAgICAgICJFeHRlcm5hbCIKKyAgICBdLAorICAgICJkaXJlY3RvcnlTb3VyY2VzIjogWworICAgICAgICAiXlxcLiQiLAorICAgICAgICAiXmRpciQiLAorICAgICAgICAiXmRpci9kaXIkIgorICAgIF0sCisgICAgInRhcmdldElkcyI6IFsKKyAgICAgICAgIl5BTExfQlVJTEQ6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAiXlpFUk9fQ0hFQ0s6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAiXmludGVyZmFjZV9leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAiXmNfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAgICAgIl5jX2V4ZTo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgICAgICJeY19zaGFyZWRfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAgICAgIl5jX3NoYXJlZF9leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAiXmNfc3RhdGljX2xpYjo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgICAgICJeY19zdGF0aWNfZXhlOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIgorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvcHJvamVjdHMvY3VzdG9tLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3Byb2plY3RzL2N1c3RvbS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZWI3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3Byb2plY3RzL2N1c3RvbS5qc29uCkBAIC0wLDAgKzEsMTQgQEAKK3sKKyAgICAibmFtZSI6ICJDdXN0b20iLAorICAgICJwYXJlbnROYW1lIjogImNvZGVtb2RlbC12MiIsCisgICAgImNoaWxkTmFtZXMiOiBudWxsLAorICAgICJkaXJlY3RvcnlTb3VyY2VzIjogWworICAgICAgICAiXmN1c3RvbSQiCisgICAgXSwKKyAgICAidGFyZ2V0SWRzIjogWworICAgICAgICAiXkFMTF9CVUlMRDo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCisgICAgICAgICJeWkVST19DSEVDSzo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCisgICAgICAgICJeY3VzdG9tX3RndDo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCisgICAgICAgICJeY3VzdG9tX2V4ZTo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIKKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3Byb2plY3RzL2N4eC5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9wcm9qZWN0cy9jeHguanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTZhZTZjCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9wcm9qZWN0cy9jeHguanNvbgpAQCAtMCwwICsxLDE4IEBACit7CisgICAgIm5hbWUiOiAiQ3h4IiwKKyAgICAicGFyZW50TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAorICAgICJjaGlsZE5hbWVzIjogbnVsbCwKKyAgICAiZGlyZWN0b3J5U291cmNlcyI6IFsKKyAgICAgICAgIl5jeHgkIgorICAgIF0sCisgICAgInRhcmdldElkcyI6IFsKKyAgICAgICAgIl5BTExfQlVJTEQ6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAiXlpFUk9fQ0hFQ0s6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAiXmN4eF9saWI6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAiXmN4eF9leGU6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAiXmN4eF9zaGFyZWRfbGliOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKKyAgICAgICAgIl5jeHhfc2hhcmVkX2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgICAgICJeY3h4X3N0YXRpY19saWI6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAiXmN4eF9zdGF0aWNfZXhlOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIgorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvcHJvamVjdHMvZXh0ZXJuYWwuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvcHJvamVjdHMvZXh0ZXJuYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzlhZmZmCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9wcm9qZWN0cy9leHRlcm5hbC5qc29uCkBAIC0wLDAgKzEsMTMgQEAKK3sKKyAgICAibmFtZSI6ICJFeHRlcm5hbCIsCisgICAgInBhcmVudE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKKyAgICAiY2hpbGROYW1lcyI6IG51bGwsCisgICAgImRpcmVjdG9yeVNvdXJjZXMiOiBbCisgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlJCIKKyAgICBdLAorICAgICJ0YXJnZXRJZHMiOiBbCisgICAgICAgICJeQUxMX0JVSUxEOjpAWzAtOWEtZl0rJCIsCisgICAgICAgICJeWkVST19DSEVDSzo6QFswLTlhLWZdKyQiLAorICAgICAgICAiXmdlbmVyYXRlZF9leGU6OkBbMC05YS1mXSskIgorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvcHJvamVjdHMvaW1wb3J0ZWQuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvcHJvamVjdHMvaW1wb3J0ZWQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzQwYjcyCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9wcm9qZWN0cy9pbXBvcnRlZC5qc29uCkBAIC0wLDAgKzEsMTcgQEAKK3sKKyAgICAibmFtZSI6ICJJbXBvcnRlZCIsCisgICAgInBhcmVudE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKKyAgICAiY2hpbGROYW1lcyI6IG51bGwsCisgICAgImRpcmVjdG9yeVNvdXJjZXMiOiBbCisgICAgICAgICJeaW1wb3J0ZWQkIgorICAgIF0sCisgICAgInRhcmdldElkcyI6IFsKKyAgICAgICAgIl5BTExfQlVJTEQ6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAorICAgICAgICAiXlpFUk9fQ0hFQ0s6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAorICAgICAgICAiXmxpbmtfaW1wb3J0ZWRfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgIl5saW5rX2ltcG9ydGVkX3NoYXJlZF9leGU6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAorICAgICAgICAiXmxpbmtfaW1wb3J0ZWRfc3RhdGljX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCisgICAgICAgICJebGlua19pbXBvcnRlZF9vYmplY3RfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgIl5saW5rX2ltcG9ydGVkX2ludGVyZmFjZV9leGU6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiCisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS9wcm9qZWN0cy9vYmplY3QuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvcHJvamVjdHMvb2JqZWN0Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE5ZjRlYgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvcHJvamVjdHMvb2JqZWN0Lmpzb24KQEAgLTAsMCArMSwxNiBAQAoreworICAgICJuYW1lIjogIk9iamVjdCIsCisgICAgInBhcmVudE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKKyAgICAiY2hpbGROYW1lcyI6IG51bGwsCisgICAgImRpcmVjdG9yeVNvdXJjZXMiOiBbCisgICAgICAgICJeb2JqZWN0JCIKKyAgICBdLAorICAgICJ0YXJnZXRJZHMiOiBbCisgICAgICAgICJeQUxMX0JVSUxEOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKKyAgICAgICAgIl5aRVJPX0NIRUNLOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKKyAgICAgICAgIl5jX29iamVjdF9saWI6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICAgICAiXmNfb2JqZWN0X2V4ZTo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCisgICAgICAgICJeY3h4X29iamVjdF9saWI6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICAgICAiXmN4eF9vYmplY3RfZXhlOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIgorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9hbGxfYnVpbGRfYWxpYXMuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9hbGxfYnVpbGRfYWxpYXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWJmNzM5Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2FsbF9idWlsZF9hbGlhcy5qc29uCkBAIC0wLDAgKzEsODMgQEAKK3sKKyAgICAibmFtZSI6ICJBTExfQlVJTEQiLAorICAgICJpZCI6ICJeQUxMX0JVSUxEOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5hbGlhcyQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJBbGlhcyIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvYWxpYXMvQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IHRydWUsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIiIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBudWxsLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9hbGlhcy9DTWFrZUZpbGVzL0FMTF9CVUlMRFxcLnJ1bGUkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IHRydWUsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIkNNYWtlIFJ1bGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IG51bGwsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmFsaWFzL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2FsaWFzL0NNYWtlRmlsZXMvQUxMX0JVSUxEJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvYWxpYXMvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBudWxsLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgfQorICAgIF0sCisgICAgImZvbGRlciI6IG51bGwsCisgICAgIm5hbWVPbkRpc2siOiBudWxsLAorICAgICJhcnRpZmFjdHMiOiBudWxsLAorICAgICJidWlsZCI6ICJeYWxpYXMkIiwKKyAgICAic291cmNlIjogIl5hbGlhcyQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IG51bGwsCisgICAgImFyY2hpdmUiOiBudWxsLAorICAgICJkZXBlbmRlbmNpZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QDUzNjMyY2JhMjc1MjI3MmJiMDA4JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmNfYWxpYXNfZXhlOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY3h4X2FsaWFzX2V4ZTo6QDUzNjMyY2JhMjc1MjI3MmJiMDA4JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2FsbF9idWlsZF9jdXN0b20uanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9hbGxfYnVpbGRfY3VzdG9tLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVmZjY4NgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9hbGxfYnVpbGRfY3VzdG9tLmpzb24KQEAgLTAsMCArMSw3OSBAQAoreworICAgICJuYW1lIjogIkFMTF9CVUlMRCIsCisgICAgImlkIjogIl5BTExfQlVJTEQ6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXmN1c3RvbSQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJDdXN0b20iLAorICAgICJ0eXBlIjogIlVUSUxJVFkiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogdHJ1ZSwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2N1c3RvbS9DTWFrZUZpbGVzL0FMTF9CVUlMRCQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IG51bGwsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jdXN0b20vQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiB0cnVlLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJDTWFrZSBSdWxlcyIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBudWxsLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jdXN0b20vQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICIiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3VzdG9tL0NNYWtlRmlsZXMvQUxMX0JVSUxEJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3VzdG9tL0NNYWtlRmlsZXMvQUxMX0JVSUxEXFwucnVsZSQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogbnVsbCwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3VzdG9tL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6IG51bGwsCisgICAgImFydGlmYWN0cyI6IG51bGwsCisgICAgImJ1aWxkIjogIl5jdXN0b20kIiwKKyAgICAic291cmNlIjogIl5jdXN0b20kIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiBudWxsLAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jdXN0b21fZXhlOjpAYzExMzg1ZmZlZDU3Yjg2MGRhNjMkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvYWxsX2J1aWxkX2N4eC5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2FsbF9idWlsZF9jeHguanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmE3OTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2FsbF9idWlsZF9jeHguanNvbgpAQCAtMCwwICsxLDk5IEBACit7CisgICAgIm5hbWUiOiAiQUxMX0JVSUxEIiwKKyAgICAiaWQiOiAiXkFMTF9CVUlMRDo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeY3h4JCIsCisgICAgInByb2plY3ROYW1lIjogIkN4eCIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3h4L0NNYWtlRmlsZXMvQUxMX0JVSUxEJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiB0cnVlLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICIiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2N4eC9DTWFrZUZpbGVzL0FMTF9CVUlMRFxcLnJ1bGUkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IHRydWUsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIkNNYWtlIFJ1bGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IG51bGwsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIiIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jeHgvQ01ha2VGaWxlcy9BTExfQlVJTEQkIgorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJDTWFrZSBSdWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jeHgvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBudWxsLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogbnVsbCwKKyAgICAiYXJ0aWZhY3RzIjogbnVsbCwKKyAgICAiYnVpbGQiOiAiXmN4eCQiLAorICAgICJzb3VyY2UiOiAiXmN4eCQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IG51bGwsCisgICAgImFyY2hpdmUiOiBudWxsLAorICAgICJkZXBlbmRlbmNpZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmN4eF9saWI6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jeHhfZXhlOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY3h4X3NoYXJlZF9saWI6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jeHhfc2hhcmVkX2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmN4eF9zdGF0aWNfbGliOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY3h4X3N0YXRpY19leGU6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9hbGxfYnVpbGRfZXh0ZXJuYWwuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9hbGxfYnVpbGRfZXh0ZXJuYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTczMzVjCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2FsbF9idWlsZF9leHRlcm5hbC5qc29uCkBAIC0wLDAgKzEsNzkgQEAKK3sKKyAgICAibmFtZSI6ICJBTExfQlVJTEQiLAorICAgICJpZCI6ICJeQUxMX0JVSUxEOjpAWzAtOWEtZl0rJCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlJCIsCisgICAgInByb2plY3ROYW1lIjogIkV4dGVybmFsIiwKKyAgICAidHlwZSI6ICJVVElMSVRZIiwKKyAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IHRydWUsCisgICAgInNvdXJjZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL0ZpbGVBUElFeHRlcm5hbEJ1aWxkL0NNYWtlRmlsZXMvQUxMX0JVSUxEJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiB0cnVlLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICIiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiB0cnVlLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJDTWFrZSBSdWxlcyIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBudWxsLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICIiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZC9DTWFrZUZpbGVzL0FMTF9CVUlMRCQiCisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIkNNYWtlIFJ1bGVzIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBudWxsLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogbnVsbCwKKyAgICAiYXJ0aWZhY3RzIjogbnVsbCwKKyAgICAiYnVpbGQiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQkIiwKKyAgICAic291cmNlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UkIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiBudWxsLAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBbMC05YS1mXSskIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeZ2VuZXJhdGVkX2V4ZTo6QFswLTlhLWZdKyQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9hbGxfYnVpbGRfaW1wb3J0ZWQuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9hbGxfYnVpbGRfaW1wb3J0ZWQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGU1YjE1Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2FsbF9idWlsZF9pbXBvcnRlZC5qc29uCkBAIC0wLDAgKzEsOTUgQEAKK3sKKyAgICAibmFtZSI6ICJBTExfQlVJTEQiLAorICAgICJpZCI6ICJeQUxMX0JVSUxEOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5pbXBvcnRlZCQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJJbXBvcnRlZCIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvaW1wb3J0ZWQvQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IHRydWUsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIiIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBudWxsLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9pbXBvcnRlZC9DTWFrZUZpbGVzL0FMTF9CVUlMRFxcLnJ1bGUkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IHRydWUsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIkNNYWtlIFJ1bGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IG51bGwsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2ltcG9ydGVkL0NNYWtlRmlsZXMvQUxMX0JVSUxEJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvaW1wb3J0ZWQvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBudWxsLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgfQorICAgIF0sCisgICAgImZvbGRlciI6IG51bGwsCisgICAgIm5hbWVPbkRpc2siOiBudWxsLAorICAgICJhcnRpZmFjdHMiOiBudWxsLAorICAgICJidWlsZCI6ICJeaW1wb3J0ZWQkIiwKKyAgICAic291cmNlIjogIl5pbXBvcnRlZCQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IG51bGwsCisgICAgImFyY2hpdmUiOiBudWxsLAorICAgICJkZXBlbmRlbmNpZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmxpbmtfaW1wb3J0ZWRfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9zaGFyZWRfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9zdGF0aWNfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9vYmplY3RfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9pbnRlcmZhY2VfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvYWxsX2J1aWxkX29iamVjdC5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2FsbF9idWlsZF9vYmplY3QuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDg4OTlhCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2FsbF9idWlsZF9vYmplY3QuanNvbgpAQCAtMCwwICsxLDkxIEBACit7CisgICAgIm5hbWUiOiAiQUxMX0JVSUxEIiwKKyAgICAiaWQiOiAiXkFMTF9CVUlMRDo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeb2JqZWN0JCIsCisgICAgInByb2plY3ROYW1lIjogIk9iamVjdCIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvb2JqZWN0L0NNYWtlRmlsZXMvQUxMX0JVSUxEJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiB0cnVlLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICIiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL29iamVjdC9DTWFrZUZpbGVzL0FMTF9CVUlMRFxcLnJ1bGUkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IHRydWUsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIkNNYWtlIFJ1bGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IG51bGwsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIiIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9vYmplY3QvQ01ha2VGaWxlcy9BTExfQlVJTEQkIgorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJDTWFrZSBSdWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9vYmplY3QvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBudWxsLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogbnVsbCwKKyAgICAiYXJ0aWZhY3RzIjogbnVsbCwKKyAgICAiYnVpbGQiOiAiXm9iamVjdCQiLAorICAgICJzb3VyY2UiOiAiXm9iamVjdCQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IG51bGwsCisgICAgImFyY2hpdmUiOiBudWxsLAorICAgICJkZXBlbmRlbmNpZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmNfb2JqZWN0X2xpYjo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmNfb2JqZWN0X2V4ZTo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmN4eF9vYmplY3RfbGliOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY3h4X29iamVjdF9leGU6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9hbGxfYnVpbGRfdG9wLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvYWxsX2J1aWxkX3RvcC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZGVmNzgKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvYWxsX2J1aWxkX3RvcC5qc29uCkBAIC0wLDAgKzEsMTc5IEBACit7CisgICAgIm5hbWUiOiAiQUxMX0JVSUxEIiwKKyAgICAiaWQiOiAiXkFMTF9CVUlMRDo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeXFwuJCIsCisgICAgInByb2plY3ROYW1lIjogImNvZGVtb2RlbC12MiIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvQ01ha2VGaWxlcy9BTExfQlVJTEQkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IHRydWUsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIiIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBudWxsLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9DTWFrZUZpbGVzL0FMTF9CVUlMRFxcLnJ1bGUkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IHRydWUsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIkNNYWtlIFJ1bGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IG51bGwsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL0NNYWtlRmlsZXMvQUxMX0JVSUxEJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvQ01ha2VGaWxlcy9BTExfQlVJTERcXC5ydWxlJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBudWxsLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgfQorICAgIF0sCisgICAgImZvbGRlciI6IG51bGwsCisgICAgIm5hbWVPbkRpc2siOiBudWxsLAorICAgICJhcnRpZmFjdHMiOiBudWxsLAorICAgICJidWlsZCI6ICJeXFwuJCIsCisgICAgInNvdXJjZSI6ICJeXFwuJCIsCisgICAgImluc3RhbGwiOiBudWxsLAorICAgICJsaW5rIjogbnVsbCwKKyAgICAiYXJjaGl2ZSI6IG51bGwsCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeaW50ZXJmYWNlX2V4ZTo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmNfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY19leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jX3NoYXJlZF9saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jX3NoYXJlZF9leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jX3N0YXRpY19saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jX3N0YXRpY19leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jX2FsaWFzX2V4ZTo6QDUzNjMyY2JhMjc1MjI3MmJiMDA4JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmN4eF9hbGlhc19leGU6OkA1MzYzMmNiYTI3NTIyNzJiYjAwOCQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jeHhfbGliOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY3h4X2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmN4eF9zaGFyZWRfbGliOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY3h4X3NoYXJlZF9leGU6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jeHhfc3RhdGljX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmN4eF9zdGF0aWNfZXhlOjpAYTU2YjEyYTNmNWMwNTI5ZmIyOTYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY19vYmplY3RfbGliOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY19vYmplY3RfZXhlOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY3h4X29iamVjdF9saWI6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jeHhfb2JqZWN0X2V4ZTo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmxpbmtfaW1wb3J0ZWRfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9zaGFyZWRfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9zdGF0aWNfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9vYmplY3RfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9pbnRlcmZhY2VfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY3VzdG9tX2V4ZTo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmdlbmVyYXRlZF9leGU6OkBbMC05YS1mXSskIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19hbGlhc19leGUuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jX2FsaWFzX2V4ZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjN2M5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19hbGlhc19leGUuanNvbgpAQCAtMCwwICsxLDEwNyBAQAoreworICAgICJuYW1lIjogImNfYWxpYXNfZXhlIiwKKyAgICAiaWQiOiAiXmNfYWxpYXNfZXhlOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5hbGlhcyQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJBbGlhcyIsCisgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBudWxsLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNSwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeYWxpYXMvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImluY2x1ZGVzIjogbnVsbCwKKyAgICAgICAgICAgICJkZWZpbmVzIjogbnVsbCwKKyAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXmFsaWFzL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogNSwKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgfQorICAgIF0sCisgICAgImZvbGRlciI6IG51bGwsCisgICAgIm5hbWVPbkRpc2siOiAiXmNfYWxpYXNfZXhlKFxcLmV4ZSk/JCIsCisgICAgImFydGlmYWN0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmFsaWFzLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2NfYWxpYXNfZXhlKFxcLmV4ZSk/JCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogZmFsc2UKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmFsaWFzLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2NfYWxpYXNfZXhlXFwucGRiJCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogdHJ1ZQorICAgICAgICB9CisgICAgXSwKKyAgICAiYnVpbGQiOiAiXmFsaWFzJCIsCisgICAgInNvdXJjZSI6ICJeYWxpYXMkIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiB7CisgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgImx0byI6IG51bGwsCisgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgIH0sCisgICAgImFyY2hpdmUiOiBudWxsLAorICAgICJkZXBlbmRlbmNpZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY19saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNiwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAidGFyZ2V0X2xpbmtfbGlicmFyaWVzIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmFsaWFzL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19leGUuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jX2V4ZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZjc0YzQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19leGUuanNvbgpAQCAtMCwwICsxLDE0MyBAQAoreworICAgICJuYW1lIjogImNfZXhlIiwKKyAgICAiaWQiOiAiXmNfZXhlOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5cXC4kIiwKKyAgICAicHJvamVjdE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKKyAgICAidHlwZSI6ICJFWEVDVVRBQkxFIiwKKyAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IG51bGwsCisgICAgInNvdXJjZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmMkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IG51bGwsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNiwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tcGlsZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBudWxsLAorICAgICAgICAgICAgImRlZmluZXMiOiBudWxsLAorICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICJsaW5lIjogNiwKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICJjb21tYW5kIjogImluY2x1ZGUiLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJeY19leGUoXFwuZXhlKT8kIiwKKyAgICAiYXJ0aWZhY3RzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y19leGUoXFwuZXhlKT8kIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiBmYWxzZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y19leGVcXC5wZGIkIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiB0cnVlCisgICAgICAgIH0KKyAgICBdLAorICAgICJidWlsZCI6ICJeXFwuJCIsCisgICAgInNvdXJjZSI6ICJeXFwuJCIsCisgICAgImluc3RhbGwiOiBudWxsLAorICAgICJsaW5rIjogeworICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICJsdG8iOiBudWxsLAorICAgICAgICAiY29tbWFuZEZyYWdtZW50cyI6IG51bGwKKyAgICB9LAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmNfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA3LAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfbGlua19saWJyYXJpZXMiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2NfbGliLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19saWIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2ExOTYyCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2NfbGliLmpzb24KQEAgLTAsMCArMSwxMDggQEAKK3sKKyAgICAibmFtZSI6ICJjX2xpYiIsCisgICAgImlkIjogIl5jX2xpYjo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeXFwuJCIsCisgICAgInByb2plY3ROYW1lIjogImNvZGVtb2RlbC12MiIsCisgICAgInR5cGUiOiAiU1RBVElDX0xJQlJBUlkiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogbnVsbCwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuYyQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogbnVsbCwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA1LAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfbGlicmFyeSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJpbmNsdWRlcyI6IG51bGwsCisgICAgICAgICAgICAiZGVmaW5lcyI6IG51bGwsCisgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgImxpbmUiOiA1LAorICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2xpYnJhcnkiLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCisgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiAzLAorICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogIl4obGliKT9jX2xpYlxcLihhfGxpYikkIiwKKyAgICAiYXJ0aWZhY3RzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/KGxpYik/Y19saWJcXC4oYXxsaWIpJCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogZmFsc2UKKyAgICAgICAgfQorICAgIF0sCisgICAgImJ1aWxkIjogIl5cXC4kIiwKKyAgICAic291cmNlIjogIl5cXC4kIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiBudWxsLAorICAgICJhcmNoaXZlIjogeworICAgICAgICAibHRvIjogbnVsbAorICAgIH0sCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19vYmplY3RfZXhlLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19vYmplY3RfZXhlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M5YWNlMwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jX29iamVjdF9leGUuanNvbgpAQCAtMCwwICsxLDE1NCBAQAoreworICAgICJuYW1lIjogImNfb2JqZWN0X2V4ZSIsCisgICAgImlkIjogIl5jX29iamVjdF9leGU6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXm9iamVjdCQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJPYmplY3QiLAorICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogbnVsbCwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuYyQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogbnVsbCwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA2LAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvb2JqZWN0Ly4qL2VtcHR5KFxcLmMpP1xcLm8oYmopPyQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiT2JqZWN0IExpYnJhcmllcyIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBudWxsLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDcsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9saW5rX2xpYnJhcmllcyIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiT2JqZWN0IExpYnJhcmllcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9vYmplY3QvLiovZW1wdHkoXFwuYyk/XFwubyhiaik/JCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImluY2x1ZGVzIjogbnVsbCwKKyAgICAgICAgICAgICJkZWZpbmVzIjogbnVsbCwKKyAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IDYsCisgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJeY19vYmplY3RfZXhlKFxcLmV4ZSk/JCIsCisgICAgImFydGlmYWN0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXm9iamVjdC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9jX29iamVjdF9leGUoXFwuZXhlKT8kIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiBmYWxzZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeb2JqZWN0LygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2Nfb2JqZWN0X2V4ZVxcLnBkYiQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IHRydWUKKyAgICAgICAgfQorICAgIF0sCisgICAgImJ1aWxkIjogIl5vYmplY3QkIiwKKyAgICAic291cmNlIjogIl5vYmplY3QkIiwKKyAgICAiaW5zdGFsbCI6IHsKKyAgICAgICAgInByZWZpeCI6ICJeKC91c3IvbG9jYWx8W0EtWmEtel06LiovY29kZW1vZGVsLXYyKSQiLAorICAgICAgICAiZGVzdGluYXRpb25zIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJwYXRoIjogImJpbiIsCisgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5zdGFsbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfQorICAgICAgICBdCisgICAgfSwKKyAgICAibGluayI6IHsKKyAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAibHRvIjogbnVsbCwKKyAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgfSwKKyAgICAiYXJjaGl2ZSI6IG51bGwsCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jX29iamVjdF9saWI6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDcsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9saW5rX2xpYnJhcmllcyIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jX29iamVjdF9saWIuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jX29iamVjdF9saWIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2EyMGRmCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2Nfb2JqZWN0X2xpYi5qc29uCkBAIC0wLDAgKzEsODIgQEAKK3sKKyAgICAibmFtZSI6ICJjX29iamVjdF9saWIiLAorICAgICJpZCI6ICJeY19vYmplY3RfbGliOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5vYmplY3QkIiwKKyAgICAicHJvamVjdE5hbWUiOiAiT2JqZWN0IiwKKyAgICAidHlwZSI6ICJPQkpFQ1RfTElCUkFSWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBudWxsLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDUsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tcGlsZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBudWxsLAorICAgICAgICAgICAgImRlZmluZXMiOiBudWxsLAorICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogNSwKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogbnVsbCwKKyAgICAiYXJ0aWZhY3RzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeb2JqZWN0Ly4qL2VtcHR5KFxcLmMpP1xcLm8oYmopPyQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJidWlsZCI6ICJeb2JqZWN0JCIsCisgICAgInNvdXJjZSI6ICJeb2JqZWN0JCIsCisgICAgImluc3RhbGwiOiBudWxsLAorICAgICJsaW5rIjogbnVsbCwKKyAgICAiYXJjaGl2ZSI6IG51bGwsCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19zaGFyZWRfZXhlLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19zaGFyZWRfZXhlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ0MDE4YQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jX3NoYXJlZF9leGUuanNvbgpAQCAtMCwwICsxLDE0MyBAQAoreworICAgICJuYW1lIjogImNfc2hhcmVkX2V4ZSIsCisgICAgImlkIjogIl5jX3NoYXJlZF9leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXlxcLiQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAorICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogbnVsbCwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuYyQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogbnVsbCwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tcGlsZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBudWxsLAorICAgICAgICAgICAgImRlZmluZXMiOiBudWxsLAorICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgImxpbmUiOiAxMCwKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICJjb21tYW5kIjogImluY2x1ZGUiLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJeY19zaGFyZWRfZXhlKFxcLmV4ZSk/JCIsCisgICAgImFydGlmYWN0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXigoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2Nfc2hhcmVkX2V4ZShcXC5leGUpPyQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IGZhbHNlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9jX3NoYXJlZF9leGVcXC5wZGIkIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiB0cnVlCisgICAgICAgIH0KKyAgICBdLAorICAgICJidWlsZCI6ICJeXFwuJCIsCisgICAgInNvdXJjZSI6ICJeXFwuJCIsCisgICAgImluc3RhbGwiOiBudWxsLAorICAgICJsaW5rIjogeworICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICJsdG8iOiB0cnVlLAorICAgICAgICAiY29tbWFuZEZyYWdtZW50cyI6IG51bGwKKyAgICB9LAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmNfc2hhcmVkX2xpYjo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTEsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9saW5rX2xpYnJhcmllcyIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19zaGFyZWRfbGliLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19zaGFyZWRfbGliLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc2YTg1NwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jX3NoYXJlZF9saWIuanNvbgpAQCAtMCwwICsxLDEyMyBAQAoreworICAgICJuYW1lIjogImNfc2hhcmVkX2xpYiIsCisgICAgImlkIjogIl5jX3NoYXJlZF9saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXlxcLiQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAorICAgICJ0eXBlIjogIlNIQVJFRF9MSUJSQVJZIiwKKyAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IG51bGwsCisgICAgInNvdXJjZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmMkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IG51bGwsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogOSwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2xpYnJhcnkiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tcGlsZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBudWxsLAorICAgICAgICAgICAgImRlZmluZXMiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZGVmaW5lIjogImNfc2hhcmVkX2xpYl9FWFBPUlRTIiwKKyAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICJsaW5lIjogOSwKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICJjb21tYW5kIjogImluY2x1ZGUiLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJeKGxpYnxjeWcpP2Nfc2hhcmVkX2xpYlxcLihzb3xkeWxpYnxkbGwpJCIsCisgICAgImFydGlmYWN0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmxpYi8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT8obGlifGN5Zyk/Y19zaGFyZWRfbGliXFwuKHNvfGR5bGlifGRsbCkkIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiBmYWxzZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/KGxpYik/Y19zaGFyZWRfbGliXFwuKGRsbFxcLmF8bGliKSQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmxpYi8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT8obGlifGN5Zyk/Y19zaGFyZWRfbGliXFwucGRiJCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogdHJ1ZQorICAgICAgICB9CisgICAgXSwKKyAgICAiYnVpbGQiOiAiXlxcLiQiLAorICAgICJzb3VyY2UiOiAiXlxcLiQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IHsKKyAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAibHRvIjogdHJ1ZSwKKyAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgfSwKKyAgICAiYXJjaGl2ZSI6IG51bGwsCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19zdGF0aWNfZXhlLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19zdGF0aWNfZXhlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU0MjI3NwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jX3N0YXRpY19leGUuanNvbgpAQCAtMCwwICsxLDE0MyBAQAoreworICAgICJuYW1lIjogImNfc3RhdGljX2V4ZSIsCisgICAgImlkIjogIl5jX3N0YXRpY19leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXlxcLiQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAorICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogbnVsbCwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuYyQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogbnVsbCwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxNCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tcGlsZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBudWxsLAorICAgICAgICAgICAgImRlZmluZXMiOiBudWxsLAorICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICJsaW5lIjogMTQsCisgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IDMsCisgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgfQorICAgIF0sCisgICAgImZvbGRlciI6IG51bGwsCisgICAgIm5hbWVPbkRpc2siOiAiXmNfc3RhdGljX2V4ZShcXC5leGUpPyQiLAorICAgICJhcnRpZmFjdHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9jX3N0YXRpY19leGUoXFwuZXhlKT8kIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiBmYWxzZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y19zdGF0aWNfZXhlXFwucGRiJCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogdHJ1ZQorICAgICAgICB9CisgICAgXSwKKyAgICAiYnVpbGQiOiAiXlxcLiQiLAorICAgICJzb3VyY2UiOiAiXlxcLiQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IHsKKyAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAibHRvIjogbnVsbCwKKyAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgfSwKKyAgICAiYXJjaGl2ZSI6IG51bGwsCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jX3N0YXRpY19saWI6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDE1LAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfbGlua19saWJyYXJpZXMiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2Nfc3RhdGljX2xpYi5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2Nfc3RhdGljX2xpYi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNjM4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY19zdGF0aWNfbGliLmpzb24KQEAgLTAsMCArMSwxMDggQEAKK3sKKyAgICAibmFtZSI6ICJjX3N0YXRpY19saWIiLAorICAgICJpZCI6ICJeY19zdGF0aWNfbGliOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5cXC4kIiwKKyAgICAicHJvamVjdE5hbWUiOiAiY29kZW1vZGVsLXYyIiwKKyAgICAidHlwZSI6ICJTVEFUSUNfTElCUkFSWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBudWxsLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDEzLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfbGlicmFyeSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJpbmNsdWRlcyI6IG51bGwsCisgICAgICAgICAgICAiZGVmaW5lcyI6IG51bGwsCisgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgImxpbmUiOiAxMywKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICJjb21tYW5kIjogImluY2x1ZGUiLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJeKGxpYik/Y19zdGF0aWNfbGliXFwuKGF8bGliKSQiLAorICAgICJhcnRpZmFjdHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT8obGliKT9jX3N0YXRpY19saWJcXC4oYXxsaWIpJCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogZmFsc2UKKyAgICAgICAgfQorICAgIF0sCisgICAgImJ1aWxkIjogIl5cXC4kIiwKKyAgICAic291cmNlIjogIl5cXC4kIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiBudWxsLAorICAgICJhcmNoaXZlIjogeworICAgICAgICAibHRvIjogdHJ1ZQorICAgIH0sCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANjg5MDQyN2ExZjUxYTNlN2UxZGYkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY3VzdG9tX2V4ZS5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2N1c3RvbV9leGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjMwMWU5Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2N1c3RvbV9leGUuanNvbgpAQCAtMCwwICsxLDEwNyBAQAoreworICAgICJuYW1lIjogImN1c3RvbV9leGUiLAorICAgICJpZCI6ICJeY3VzdG9tX2V4ZTo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeY3VzdG9tJCIsCisgICAgInByb2plY3ROYW1lIjogIkN1c3RvbSIsCisgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBudWxsLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jdXN0b20vQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDQsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tcGlsZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBudWxsLAorICAgICAgICAgICAgImRlZmluZXMiOiBudWxsLAorICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3VzdG9tL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogNCwKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jdXN0b20vQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogIl5jdXN0b21fZXhlKFxcLmV4ZSk/JCIsCisgICAgImFydGlmYWN0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmN1c3RvbS8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9jdXN0b21fZXhlKFxcLmV4ZSk/JCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogZmFsc2UKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmN1c3RvbS8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9jdXN0b21fZXhlXFwucGRiJCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogdHJ1ZQorICAgICAgICB9CisgICAgXSwKKyAgICAiYnVpbGQiOiAiXmN1c3RvbSQiLAorICAgICJzb3VyY2UiOiAiXmN1c3RvbSQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IHsKKyAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAibHRvIjogbnVsbCwKKyAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgfSwKKyAgICAiYXJjaGl2ZSI6IG51bGwsCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jdXN0b21fdGd0OjpAYzExMzg1ZmZlZDU3Yjg2MGRhNjMkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3VzdG9tL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA1LAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZGVwZW5kZW5jaWVzIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2N1c3RvbV90Z3QuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jdXN0b21fdGd0Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxMDZmYwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jdXN0b21fdGd0Lmpzb24KQEAgLTAsMCArMSw4NyBAQAoreworICAgICJuYW1lIjogImN1c3RvbV90Z3QiLAorICAgICJpZCI6ICJeY3VzdG9tX3RndDo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeY3VzdG9tJCIsCisgICAgInByb2plY3ROYW1lIjogIkN1c3RvbSIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBudWxsLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3VzdG9tL0NNYWtlRmlsZXMvY3VzdG9tX3RndCQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IG51bGwsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2N1c3RvbV90YXJnZXQiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3VzdG9tL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkLyhjdXN0b20vKT9DTWFrZUZpbGVzLyhbMC05YS1mXSsvKT9jdXN0b21fdGd0XFwucnVsZSQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3VzdG9tL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2N1c3RvbS9DTWFrZUZpbGVzL2N1c3RvbV90Z3QkIgorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJDTWFrZSBSdWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC8oY3VzdG9tLyk/Q01ha2VGaWxlcy8oWzAtOWEtZl0rLyk/Y3VzdG9tX3RndFxcLnJ1bGUkIgorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tcGlsZUdyb3VwcyI6IG51bGwsCisgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IDMsCisgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfY3VzdG9tX3RhcmdldCIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3VzdG9tL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6IG51bGwsCisgICAgImFydGlmYWN0cyI6IG51bGwsCisgICAgImJ1aWxkIjogIl5jdXN0b20kIiwKKyAgICAic291cmNlIjogIl5jdXN0b20kIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiBudWxsLAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBjMTEzODVmZmVkNTdiODYwZGE2MyQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfYWxpYXNfZXhlLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY3h4X2FsaWFzX2V4ZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzN2YyNTIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY3h4X2FsaWFzX2V4ZS5qc29uCkBAIC0wLDAgKzEsMTA3IEBACit7CisgICAgIm5hbWUiOiAiY3h4X2FsaWFzX2V4ZSIsCisgICAgImlkIjogIl5jeHhfYWxpYXNfZXhlOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5hbGlhcyQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJBbGlhcyIsCisgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBudWxsLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jeHgkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IG51bGwsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQ1hYIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeYWxpYXMvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDksCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmFsaWFzL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jeHgkIgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJpbmNsdWRlcyI6IG51bGwsCisgICAgICAgICAgICAiZGVmaW5lcyI6IG51bGwsCisgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5hbGlhcy9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IDksCisgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeYWxpYXMvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogIl5jeHhfYWxpYXNfZXhlKFxcLmV4ZSk/JCIsCisgICAgImFydGlmYWN0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmFsaWFzLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N4eF9hbGlhc19leGUoXFwuZXhlKT8kIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiBmYWxzZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeYWxpYXMvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y3h4X2FsaWFzX2V4ZVxcLnBkYiQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IHRydWUKKyAgICAgICAgfQorICAgIF0sCisgICAgImJ1aWxkIjogIl5hbGlhcyQiLAorICAgICJzb3VyY2UiOiAiXmFsaWFzJCIsCisgICAgImluc3RhbGwiOiBudWxsLAorICAgICJsaW5rIjogeworICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKKyAgICAgICAgImx0byI6IG51bGwsCisgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgIH0sCisgICAgImFyY2hpdmUiOiBudWxsLAorICAgICJkZXBlbmRlbmNpZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY3h4X2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmFsaWFzL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAidGFyZ2V0X2xpbmtfbGlicmFyaWVzIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmFsaWFzL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY3h4X2V4ZS5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2N4eF9leGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjMxODM3Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2N4eF9leGUuanNvbgpAQCAtMCwwICsxLDIxMyBAQAoreworICAgICJuYW1lIjogImN4eF9leGUiLAorICAgICJpZCI6ICJeY3h4X2V4ZTo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeY3h4JCIsCisgICAgInByb2plY3ROYW1lIjogIkN4eCIsCisgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBudWxsLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jeHgkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IG51bGwsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQ1hYIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA1LAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jeHgkIgorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tcGlsZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxhbmd1YWdlIjogIkNYWCIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImluY2x1ZGVzIjogbnVsbCwKKyAgICAgICAgICAgICJkZWZpbmVzIjogbnVsbCwKKyAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmcmFnbWVudCIgOiAiVGFyZ2V0Q29tcGlsZU9wdGlvbnMiLAorCQkJCQkJCSJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfY29tcGlsZV9vcHRpb25zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKwkJCQkJCQkJeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIiA6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogNSwKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiAiYmluIiwKKyAgICAibmFtZU9uRGlzayI6ICJeY3h4X2V4ZShcXC5leGUpPyQiLAorICAgICJhcnRpZmFjdHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5jeHgvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y3h4X2V4ZShcXC5leGUpPyQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IGZhbHNlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5jeHgvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y3h4X2V4ZVxcLnBkYiQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IHRydWUKKyAgICAgICAgfQorICAgIF0sCisgICAgImJ1aWxkIjogIl5jeHgkIiwKKyAgICAic291cmNlIjogIl5jeHgkIiwKKyAgICAiaW5zdGFsbCI6IHsKKyAgICAgICAgInByZWZpeCI6ICJeKC91c3IvbG9jYWx8W0EtWmEtel06LiovY29kZW1vZGVsLXYyKSQiLAorICAgICAgICAiZGVzdGluYXRpb25zIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJwYXRoIjogImJpbiIsCisgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5zdGFsbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY29kZW1vZGVsLXYyXFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDMsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXQorICAgIH0sCisgICAgImxpbmsiOiB7CisgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAorICAgICAgICAibHRvIjogbnVsbCwKKyAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImZyYWdtZW50IiA6ICJUYXJnZXRMaW5rT3B0aW9ucyIsCisgICAgICAgICAgICAgICAgInJvbGUiIDogImZsYWdzIiwKKyAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTgsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfbGlua19vcHRpb25zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIiA6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiZnJhZ21lbnQiIDogIi4qVGFyZ2V0TGlua0RpclxcXCI/JCIsCisgICAgICAgICAgICAgICAgInJvbGUiIDogImxpYnJhcnlQYXRoIiwKKyAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTksCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfbGlua19kaXJlY3RvcmllcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSIgOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImZyYWdtZW50IiA6ICIuKmN4eF9saWIuKiIsCisgICAgICAgICAgICAgICAgInJvbGUiIDogImxpYnJhcmllcyIsCisgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDYsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfbGlua19saWJyYXJpZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiIDogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9LAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXmN4eF9saWI6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDYsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9saW5rX2xpYnJhcmllcyIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfbGliLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY3h4X2xpYi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWMwODEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY3h4X2xpYi5qc29uCkBAIC0wLDAgKzEsODQgQEAKK3sKKyAgICAibmFtZSI6ICJjeHhfbGliIiwKKyAgICAiaWQiOiAiXmN4eF9saWI6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXmN4eCQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJDeHgiLAorICAgICJ0eXBlIjogIlNUQVRJQ19MSUJSQVJZIiwKKyAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IG51bGwsCisgICAgInNvdXJjZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmN4eCQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogbnVsbCwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDWFgiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDQsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBudWxsLAorICAgICAgICAgICAgImRlZmluZXMiOiBudWxsLAorICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogNCwKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogIl4obGliKT9jeHhfbGliXFwuKGF8bGliKSQiLAorICAgICJhcnRpZmFjdHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5jeHgvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/KGxpYik/Y3h4X2xpYlxcLihhfGxpYikkIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiYnVpbGQiOiAiXmN4eCQiLAorICAgICJzb3VyY2UiOiAiXmN4eCQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IG51bGwsCisgICAgImFyY2hpdmUiOiB7CisgICAgICAgICJsdG8iOiBudWxsCisgICAgfSwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfb2JqZWN0X2V4ZS5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2N4eF9vYmplY3RfZXhlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE5YzkxZAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfb2JqZWN0X2V4ZS5qc29uCkBAIC0wLDAgKzEsMTU0IEBACit7CisgICAgIm5hbWUiOiAiY3h4X29iamVjdF9leGUiLAorICAgICJpZCI6ICJeY3h4X29iamVjdF9leGU6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXm9iamVjdCQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJPYmplY3QiLAorICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogbnVsbCwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuY3h4JCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkNYWCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTAsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9vYmplY3QvLiovZW1wdHkoXFwuY3h4KT9cXC5vKGJqKT8kIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IHRydWUsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIk9iamVjdCBMaWJyYXJpZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMSwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAidGFyZ2V0X2xpbmtfbGlicmFyaWVzIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiCisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIk9iamVjdCBMaWJyYXJpZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvb2JqZWN0Ly4qL2VtcHR5KFxcLmN4eCk/XFwubyhiaik/JCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jeHgkIgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJpbmNsdWRlcyI6IG51bGwsCisgICAgICAgICAgICAiZGVmaW5lcyI6IG51bGwsCisgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiAxMCwKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogIl5jeHhfb2JqZWN0X2V4ZShcXC5leGUpPyQiLAorICAgICJhcnRpZmFjdHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5vYmplY3QvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/Y3h4X29iamVjdF9leGUoXFwuZXhlKT8kIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiBmYWxzZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeb2JqZWN0LygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N4eF9vYmplY3RfZXhlXFwucGRiJCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogdHJ1ZQorICAgICAgICB9CisgICAgXSwKKyAgICAiYnVpbGQiOiAiXm9iamVjdCQiLAorICAgICJzb3VyY2UiOiAiXm9iamVjdCQiLAorICAgICJpbnN0YWxsIjogeworICAgICAgICAicHJlZml4IjogIl4oL3Vzci9sb2NhbHxbQS1aYS16XTouKi9jb2RlbW9kZWwtdjIpJCIsCisgICAgICAgICJkZXN0aW5hdGlvbnMiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgInBhdGgiOiAiYmluIiwKKyAgICAgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTMsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbnN0YWxsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9CisgICAgICAgIF0KKyAgICB9LAorICAgICJsaW5rIjogeworICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKKyAgICAgICAgImx0byI6IG51bGwsCisgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgIH0sCisgICAgImFyY2hpdmUiOiBudWxsLAorICAgICJkZXBlbmRlbmNpZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeY3h4X29iamVjdF9saWI6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDExLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfbGlua19saWJyYXJpZXMiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANWVkNTM1OGY3MGZhZjhkOGFmN2EkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY3h4X29iamVjdF9saWIuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfb2JqZWN0X2xpYi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlOTlmN2QKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvY3h4X29iamVjdF9saWIuanNvbgpAQCAtMCwwICsxLDgyIEBACit7CisgICAgIm5hbWUiOiAiY3h4X29iamVjdF9saWIiLAorICAgICJpZCI6ICJeY3h4X29iamVjdF9saWI6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXm9iamVjdCQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJPYmplY3QiLAorICAgICJ0eXBlIjogIk9CSkVDVF9MSUJSQVJZIiwKKyAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IG51bGwsCisgICAgInNvdXJjZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmN4eCQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogbnVsbCwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDWFgiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDksCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBudWxsLAorICAgICAgICAgICAgImRlZmluZXMiOiBudWxsLAorICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogOSwKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5vYmplY3QvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogbnVsbCwKKyAgICAiYXJ0aWZhY3RzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeb2JqZWN0Ly4qL2VtcHR5KFxcLmN4eCk/XFwubyhiaik/JCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogZmFsc2UKKyAgICAgICAgfQorICAgIF0sCisgICAgImJ1aWxkIjogIl5vYmplY3QkIiwKKyAgICAic291cmNlIjogIl5vYmplY3QkIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiBudWxsLAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkA1ZWQ1MzU4ZjcwZmFmOGQ4YWY3YSQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfc2hhcmVkX2V4ZS5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2N4eF9zaGFyZWRfZXhlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQyMWM4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfc2hhcmVkX2V4ZS5qc29uCkBAIC0wLDAgKzEsMTA3IEBACit7CisgICAgIm5hbWUiOiAiY3h4X3NoYXJlZF9leGUiLAorICAgICJpZCI6ICJeY3h4X3NoYXJlZF9leGU6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXmN4eCQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJDeHgiLAorICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogbnVsbCwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuY3h4JCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkNYWCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTAsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBudWxsLAorICAgICAgICAgICAgImRlZmluZXMiOiBudWxsLAorICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogMTAsCisgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJeY3h4X3NoYXJlZF9leGUoXFwuZXhlKT8kIiwKKyAgICAiYXJ0aWZhY3RzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeY3h4LygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N4eF9zaGFyZWRfZXhlKFxcLmV4ZSk/JCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogZmFsc2UKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmN4eC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9jeHhfc2hhcmVkX2V4ZVxcLnBkYiQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IHRydWUKKyAgICAgICAgfQorICAgIF0sCisgICAgImJ1aWxkIjogIl5jeHgkIiwKKyAgICAic291cmNlIjogIl5jeHgkIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiB7CisgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAorICAgICAgICAibHRvIjogbnVsbCwKKyAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgfSwKKyAgICAiYXJjaGl2ZSI6IG51bGwsCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jeHhfc2hhcmVkX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTEsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9saW5rX2xpYnJhcmllcyIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfc2hhcmVkX2xpYi5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2N4eF9zaGFyZWRfbGliLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTcxYTRmNQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfc2hhcmVkX2xpYi5qc29uCkBAIC0wLDAgKzEsOTkgQEAKK3sKKyAgICAibmFtZSI6ICJjeHhfc2hhcmVkX2xpYiIsCisgICAgImlkIjogIl5jeHhfc2hhcmVkX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeY3h4JCIsCisgICAgInByb2plY3ROYW1lIjogIkN4eCIsCisgICAgInR5cGUiOiAiU0hBUkVEX0xJQlJBUlkiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogbnVsbCwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuY3h4JCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkNYWCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogOSwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2xpYnJhcnkiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jeHgkIgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJpbmNsdWRlcyI6IG51bGwsCisgICAgICAgICAgICAiZGVmaW5lcyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJkZWZpbmUiOiAiY3h4X3NoYXJlZF9saWJfRVhQT1JUUyIsCisgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IDksCisgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfbGlicmFyeSIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJeKGxpYnxjeWcpP2N4eF9zaGFyZWRfbGliXFwuKHNvfGR5bGlifGRsbCkkIiwKKyAgICAiYXJ0aWZhY3RzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeY3h4LygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pPyhsaWJ8Y3lnKT9jeHhfc2hhcmVkX2xpYlxcLihzb3xkeWxpYnxkbGwpJCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogZmFsc2UKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmN4eC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT8obGliKT9jeHhfc2hhcmVkX2xpYlxcLihkbGxcXC5hfGxpYikkIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5jeHgvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/KGxpYnxjeWcpP2N4eF9zaGFyZWRfbGliXFwucGRiJCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogdHJ1ZQorICAgICAgICB9CisgICAgXSwKKyAgICAiYnVpbGQiOiAiXmN4eCQiLAorICAgICJzb3VyY2UiOiAiXmN4eCQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IHsKKyAgICAgICAgImxhbmd1YWdlIjogIkNYWCIsCisgICAgICAgICJsdG8iOiBudWxsLAorICAgICAgICAiY29tbWFuZEZyYWdtZW50cyI6IG51bGwKKyAgICB9LAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfc3RhdGljX2V4ZS5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2N4eF9zdGF0aWNfZXhlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJjNDJkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfc3RhdGljX2V4ZS5qc29uCkBAIC0wLDAgKzEsMTA3IEBACit7CisgICAgIm5hbWUiOiAiY3h4X3N0YXRpY19leGUiLAorICAgICJpZCI6ICJeY3h4X3N0YXRpY19leGU6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXmN4eCQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJDeHgiLAorICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogbnVsbCwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuY3h4JCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkNYWCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTQsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBudWxsLAorICAgICAgICAgICAgImRlZmluZXMiOiBudWxsLAorICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogMTQsCisgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJeY3h4X3N0YXRpY19leGUoXFwuZXhlKT8kIiwKKyAgICAiYXJ0aWZhY3RzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeY3h4LygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2N4eF9zdGF0aWNfZXhlKFxcLmV4ZSk/JCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogZmFsc2UKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmN4eC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9jeHhfc3RhdGljX2V4ZVxcLnBkYiQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IHRydWUKKyAgICAgICAgfQorICAgIF0sCisgICAgImJ1aWxkIjogIl5jeHgkIiwKKyAgICAic291cmNlIjogIl5jeHgkIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiB7CisgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAorICAgICAgICAibHRvIjogbnVsbCwKKyAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgfSwKKyAgICAiYXJjaGl2ZSI6IG51bGwsCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5jeHhfc3RhdGljX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTUsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9saW5rX2xpYnJhcmllcyIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jeHgvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfc3RhdGljX2xpYi5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2N4eF9zdGF0aWNfbGliLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgyOThiZQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9jeHhfc3RhdGljX2xpYi5qc29uCkBAIC0wLDAgKzEsODQgQEAKK3sKKyAgICAibmFtZSI6ICJjeHhfc3RhdGljX2xpYiIsCisgICAgImlkIjogIl5jeHhfc3RhdGljX2xpYjo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeY3h4JCIsCisgICAgInByb2plY3ROYW1lIjogIkN4eCIsCisgICAgInR5cGUiOiAiU1RBVElDX0xJQlJBUlkiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogbnVsbCwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuY3h4JCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkNYWCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTMsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9saWJyYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJzb3VyY2VHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmN4eCQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuY3h4JCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBudWxsLAorICAgICAgICAgICAgImRlZmluZXMiOiBudWxsLAorICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogMTMsCisgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfbGlicmFyeSIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJeKGxpYik/Y3h4X3N0YXRpY19saWJcXC4oYXxsaWIpJCIsCisgICAgImFydGlmYWN0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmN4eC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT8obGliKT9jeHhfc3RhdGljX2xpYlxcLihhfGxpYikkIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiYnVpbGQiOiAiXmN4eCQiLAorICAgICJzb3VyY2UiOiAiXmN4eCQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IG51bGwsCisgICAgImFyY2hpdmUiOiB7CisgICAgICAgICJsdG8iOiBudWxsCisgICAgfSwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBhNTZiMTJhM2Y1YzA1MjlmYjI5NiQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9nZW5lcmF0ZWRfZXhlLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvZ2VuZXJhdGVkX2V4ZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MWJiYjIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvZ2VuZXJhdGVkX2V4ZS5qc29uCkBAIC0wLDAgKzEsMzAzIEBACit7CisgICAgIm5hbWUiOiAiZ2VuZXJhdGVkX2V4ZSIsCisgICAgImlkIjogIl5nZW5lcmF0ZWRfZXhlOjpAWzAtOWEtZl0rJCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlJCIsCisgICAgInByb2plY3ROYW1lIjogIkV4dGVybmFsIiwKKyAgICAidHlwZSI6ICJFWEVDVVRBQkxFIiwKKyAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IG51bGwsCisgICAgInNvdXJjZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvZW1wdHlcXC5jJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDUsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL0ZpbGVBUElFeHRlcm5hbEJ1aWxkL2dlbmVyYXRlZFxcLmN4eCQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiR2VuZXJhdGVkIFNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQ1hYIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiA2LAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfc291cmNlcyIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL2VtcHR5XFwuYyQiCisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIkdlbmVyYXRlZCBTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZC9nZW5lcmF0ZWRcXC5jeHgkIgorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tcGlsZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL2VtcHR5XFwuYyQiCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImluY2x1ZGVzIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgInBhdGgiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQkIiwKKyAgICAgICAgICAgICAgICAgICAgImlzU3lzdGVtIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInNldF9wcm9wZXJ0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlJCIsCisgICAgICAgICAgICAgICAgICAgICJpc1N5c3RlbSI6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZGVmaW5lcyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJkZWZpbmUiOiAiRU1QVFlfQz0xIiwKKyAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAic2V0X3Byb3BlcnR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJkZWZpbmUiOiAiU1JDX0RVTU1ZIiwKKyAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAic2V0X3Byb3BlcnR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJkZWZpbmUiOiAiR0VORVJBVEVEX0VYRT0xIiwKKyAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9jb21waWxlX2RlZmluaXRpb25zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJkZWZpbmUiOiAiVEdUX0RVTU1ZIiwKKyAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9jb21waWxlX2RlZmluaXRpb25zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmcmFnbWVudCIgOiAiU1JDX0NPTVBJTEVfT1BUSU9OU19EVU1NWSIsCisgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIiA6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQ1hYIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQvZ2VuZXJhdGVkXFwuY3h4JCIKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiaW5jbHVkZXMiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlJCIsCisgICAgICAgICAgICAgICAgICAgICJpc1N5c3RlbSI6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJ0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZGVmaW5lcyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJkZWZpbmUiOiAiR0VORVJBVEVEX0VYRT0xIiwKKyAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9jb21waWxlX2RlZmluaXRpb25zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJkZWZpbmUiOiAiVEdUX0RVTU1ZIiwKKyAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IDEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogInRhcmdldF9jb21waWxlX2RlZmluaXRpb25zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IDUsCisgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSUV4dGVybmFsU291cmNlL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJeZ2VuZXJhdGVkX2V4ZShcXC5leGUpPyQiLAorICAgICJhcnRpZmFjdHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL0ZpbGVBUElFeHRlcm5hbEJ1aWxkLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2dlbmVyYXRlZF9leGUoXFwuZXhlKT8kIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiBmYWxzZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9nZW5lcmF0ZWRfZXhlXFwucGRiJCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogdHJ1ZQorICAgICAgICB9CisgICAgXSwKKyAgICAiYnVpbGQiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvRmlsZUFQSUV4dGVybmFsQnVpbGQkIiwKKyAgICAic291cmNlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UkIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiB7CisgICAgICAgICJsYW5ndWFnZSI6ICJDWFgiLAorICAgICAgICAibHRvIjogbnVsbCwKKyAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgfSwKKyAgICAiYXJjaGl2ZSI6IG51bGwsCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpAWzAtOWEtZl0rJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2ludGVyZmFjZV9leGUuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9pbnRlcmZhY2VfZXhlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUwNTI0YwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9pbnRlcmZhY2VfZXhlLmpzb24KQEAgLTAsMCArMSwxNTIgQEAKK3sKKyAgICAibmFtZSI6ICJpbnRlcmZhY2VfZXhlIiwKKyAgICAiaWQiOiAiXmludGVyZmFjZV9leGU6OkA2ODkwNDI3YTFmNTFhM2U3ZTFkZiQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXlxcLiQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJjb2RlbW9kZWwtdjIiLAorICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogbnVsbCwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuYyQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogbnVsbCwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW5jbHVkZV90ZXN0XFwuY21ha2UkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbmNsdWRlX3Rlc3RcXC5jbWFrZSQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiaW5jbHVkZSIsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAzLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJpbmNsdWRlcyI6IG51bGwsCisgICAgICAgICAgICAiZGVmaW5lcyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJkZWZpbmUiOiAiaW50ZXJmYWNlX2V4ZV9FWFBPUlRTIiwKKyAgICAgICAgICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImNvbXBpbGVDb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgICAgICB9CisgICAgXSwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeaW5jbHVkZV90ZXN0XFwuY21ha2UkIiwKKyAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5pbmNsdWRlX3Rlc3RcXC5jbWFrZSQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXmNvZGVtb2RlbC12MlxcLmNtYWtlJCIsCisgICAgICAgICAgICAibGluZSI6IDMsCisgICAgICAgICAgICAiY29tbWFuZCI6ICJpbmNsdWRlIiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5jb2RlbW9kZWwtdjJcXC5jbWFrZSQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogMywKKyAgICAgICAgICAgICJjb21tYW5kIjogImluY2x1ZGUiLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXkNNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJebXlfaW50ZXJmYWNlX2V4ZVxcLm15ZXhlJCIsCisgICAgImFydGlmYWN0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmJpbi8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9teV9pbnRlcmZhY2VfZXhlXFwubXlleGUkIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiBmYWxzZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJebGliL215X2ludGVyZmFjZV9leGVcXC5pbXAkIiwKKyAgICAgICAgICAgICJfYWl4RXh0cmEiOiB0cnVlLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IGZhbHNlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5saWIvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/KGxpYik/bXlfaW50ZXJmYWNlX2V4ZVxcLihkbGxcXC5hfGxpYikkIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5iaW4vKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/bXlfaW50ZXJmYWNlX2V4ZVxcLnBkYiQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IHRydWUKKyAgICAgICAgfQorICAgIF0sCisgICAgImJ1aWxkIjogIl5cXC4kIiwKKyAgICAic291cmNlIjogIl5cXC4kIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiB7CisgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgImx0byI6IG51bGwsCisgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgIH0sCisgICAgImFyY2hpdmUiOiBudWxsLAorICAgICJkZXBlbmRlbmNpZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2xpbmtfaW1wb3J0ZWRfZXhlLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvbGlua19pbXBvcnRlZF9leGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTJmNGM1Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2xpbmtfaW1wb3J0ZWRfZXhlLmpzb24KQEAgLTAsMCArMSw5MCBAQAoreworICAgICJuYW1lIjogImxpbmtfaW1wb3J0ZWRfZXhlIiwKKyAgICAiaWQiOiAiXmxpbmtfaW1wb3J0ZWRfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5pbXBvcnRlZCQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJJbXBvcnRlZCIsCisgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBudWxsLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogNSwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImluY2x1ZGVzIjogbnVsbCwKKyAgICAgICAgICAgICJkZWZpbmVzIjogbnVsbCwKKyAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogNSwKKyAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgfQorICAgIF0sCisgICAgImZvbGRlciI6IG51bGwsCisgICAgIm5hbWVPbkRpc2siOiAiXmxpbmtfaW1wb3J0ZWRfZXhlKFxcLmV4ZSk/JCIsCisgICAgImFydGlmYWN0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmltcG9ydGVkLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2xpbmtfaW1wb3J0ZWRfZXhlKFxcLmV4ZSk/JCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogZmFsc2UKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmltcG9ydGVkLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2xpbmtfaW1wb3J0ZWRfZXhlXFwucGRiJCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogdHJ1ZQorICAgICAgICB9CisgICAgXSwKKyAgICAiYnVpbGQiOiAiXmltcG9ydGVkJCIsCisgICAgInNvdXJjZSI6ICJeaW1wb3J0ZWQkIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiB7CisgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgImx0byI6IG51bGwsCisgICAgICAgICJjb21tYW5kRnJhZ21lbnRzIjogbnVsbAorICAgIH0sCisgICAgImFyY2hpdmUiOiBudWxsLAorICAgICJkZXBlbmRlbmNpZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogbnVsbAorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2xpbmtfaW1wb3J0ZWRfaW50ZXJmYWNlX2V4ZS5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2xpbmtfaW1wb3J0ZWRfaW50ZXJmYWNlX2V4ZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMGU2ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvbGlua19pbXBvcnRlZF9pbnRlcmZhY2VfZXhlLmpzb24KQEAgLTAsMCArMSw5MCBAQAoreworICAgICJuYW1lIjogImxpbmtfaW1wb3J0ZWRfaW50ZXJmYWNlX2V4ZSIsCisgICAgImlkIjogIl5saW5rX2ltcG9ydGVkX2ludGVyZmFjZV9leGU6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXmltcG9ydGVkJCIsCisgICAgInByb2plY3ROYW1lIjogIkltcG9ydGVkIiwKKyAgICAidHlwZSI6ICJFWEVDVVRBQkxFIiwKKyAgICAiaXNHZW5lcmF0b3JQcm92aWRlZCI6IG51bGwsCisgICAgInNvdXJjZXMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5lbXB0eVxcLmMkIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IG51bGwsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIlNvdXJjZSBGaWxlcyIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiAyMywKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeZW1wdHlcXC5jJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgImNvbXBpbGVHcm91cHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJsYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImluY2x1ZGVzIjogbnVsbCwKKyAgICAgICAgICAgICJkZWZpbmVzIjogbnVsbCwKKyAgICAgICAgICAgICJjb21waWxlQ29tbWFuZEZyYWdtZW50cyI6IG51bGwKKyAgICAgICAgfQorICAgIF0sCisgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogMjMsCisgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogIl5saW5rX2ltcG9ydGVkX2ludGVyZmFjZV9leGUoXFwuZXhlKT8kIiwKKyAgICAiYXJ0aWZhY3RzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeaW1wb3J0ZWQvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/bGlua19pbXBvcnRlZF9pbnRlcmZhY2VfZXhlKFxcLmV4ZSk/JCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogZmFsc2UKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmltcG9ydGVkLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2xpbmtfaW1wb3J0ZWRfaW50ZXJmYWNlX2V4ZVxcLnBkYiQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IHRydWUKKyAgICAgICAgfQorICAgIF0sCisgICAgImJ1aWxkIjogIl5pbXBvcnRlZCQiLAorICAgICJzb3VyY2UiOiAiXmltcG9ydGVkJCIsCisgICAgImluc3RhbGwiOiBudWxsLAorICAgICJsaW5rIjogeworICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICJsdG8iOiBudWxsLAorICAgICAgICAiY29tbWFuZEZyYWdtZW50cyI6IG51bGwKKyAgICB9LAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9saW5rX2ltcG9ydGVkX29iamVjdF9leGUuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9saW5rX2ltcG9ydGVkX29iamVjdF9leGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWVjNTI0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2xpbmtfaW1wb3J0ZWRfb2JqZWN0X2V4ZS5qc29uCkBAIC0wLDAgKzEsOTAgQEAKK3sKKyAgICAibmFtZSI6ICJsaW5rX2ltcG9ydGVkX29iamVjdF9leGUiLAorICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9vYmplY3RfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5pbXBvcnRlZCQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJJbXBvcnRlZCIsCisgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBudWxsLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTgsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJpbmNsdWRlcyI6IG51bGwsCisgICAgICAgICAgICAiZGVmaW5lcyI6IG51bGwsCisgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IDE4LAorICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJebGlua19pbXBvcnRlZF9vYmplY3RfZXhlKFxcLmV4ZSk/JCIsCisgICAgImFydGlmYWN0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmltcG9ydGVkLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2xpbmtfaW1wb3J0ZWRfb2JqZWN0X2V4ZShcXC5leGUpPyQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IGZhbHNlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5pbXBvcnRlZC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9saW5rX2ltcG9ydGVkX29iamVjdF9leGVcXC5wZGIkIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiB0cnVlCisgICAgICAgIH0KKyAgICBdLAorICAgICJidWlsZCI6ICJeaW1wb3J0ZWQkIiwKKyAgICAic291cmNlIjogIl5pbXBvcnRlZCQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IHsKKyAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAibHRvIjogbnVsbCwKKyAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgfSwKKyAgICAiYXJjaGl2ZSI6IG51bGwsCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvbGlua19pbXBvcnRlZF9zaGFyZWRfZXhlLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvbGlua19pbXBvcnRlZF9zaGFyZWRfZXhlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU4NDZlYwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9saW5rX2ltcG9ydGVkX3NoYXJlZF9leGUuanNvbgpAQCAtMCwwICsxLDkwIEBACit7CisgICAgIm5hbWUiOiAibGlua19pbXBvcnRlZF9zaGFyZWRfZXhlIiwKKyAgICAiaWQiOiAiXmxpbmtfaW1wb3J0ZWRfc2hhcmVkX2V4ZTo6QGJhN2ViNzA5ZDBiNDg3NzljNmM4JCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeaW1wb3J0ZWQkIiwKKyAgICAicHJvamVjdE5hbWUiOiAiSW1wb3J0ZWQiLAorICAgICJ0eXBlIjogIkVYRUNVVEFCTEUiLAorICAgICJpc0dlbmVyYXRvclByb3ZpZGVkIjogbnVsbCwKKyAgICAic291cmNlcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmVtcHR5XFwuYyQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogbnVsbCwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6ICJDIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IDksCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJpbmNsdWRlcyI6IG51bGwsCisgICAgICAgICAgICAiZGVmaW5lcyI6IG51bGwsCisgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IDksCisgICAgICAgICAgICAiY29tbWFuZCI6ICJhZGRfZXhlY3V0YWJsZSIsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogIl5saW5rX2ltcG9ydGVkX3NoYXJlZF9leGUoXFwuZXhlKT8kIiwKKyAgICAiYXJ0aWZhY3RzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeaW1wb3J0ZWQvKChEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpLyk/bGlua19pbXBvcnRlZF9zaGFyZWRfZXhlKFxcLmV4ZSk/JCIsCisgICAgICAgICAgICAiX2RsbEV4dHJhIjogZmFsc2UKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmltcG9ydGVkLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2xpbmtfaW1wb3J0ZWRfc2hhcmVkX2V4ZVxcLnBkYiQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IHRydWUKKyAgICAgICAgfQorICAgIF0sCisgICAgImJ1aWxkIjogIl5pbXBvcnRlZCQiLAorICAgICJzb3VyY2UiOiAiXmltcG9ydGVkJCIsCisgICAgImluc3RhbGwiOiBudWxsLAorICAgICJsaW5rIjogeworICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICJsdG8iOiBudWxsLAorICAgICAgICAiY29tbWFuZEZyYWdtZW50cyI6IG51bGwKKyAgICB9LAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiXlpFUk9fQ0hFQ0s6OkBiYTdlYjcwOWQwYjQ4Nzc5YzZjOCQiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IG51bGwKKyAgICAgICAgfQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9saW5rX2ltcG9ydGVkX3N0YXRpY19leGUuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy9saW5rX2ltcG9ydGVkX3N0YXRpY19leGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWExNjk1Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL2xpbmtfaW1wb3J0ZWRfc3RhdGljX2V4ZS5qc29uCkBAIC0wLDAgKzEsOTAgQEAKK3sKKyAgICAibmFtZSI6ICJsaW5rX2ltcG9ydGVkX3N0YXRpY19leGUiLAorICAgICJpZCI6ICJebGlua19pbXBvcnRlZF9zdGF0aWNfZXhlOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5pbXBvcnRlZCQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJJbXBvcnRlZCIsCisgICAgInR5cGUiOiAiRVhFQ1VUQUJMRSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiBudWxsLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeZW1wdHlcXC5jJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiBudWxsLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJTb3VyY2UgRmlsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogIkMiLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogMTMsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogImFkZF9leGVjdXRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiU291cmNlIEZpbGVzIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXmVtcHR5XFwuYyQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibGFuZ3VhZ2UiOiAiQyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl5lbXB0eVxcLmMkIgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJpbmNsdWRlcyI6IG51bGwsCisgICAgICAgICAgICAiZGVmaW5lcyI6IG51bGwsCisgICAgICAgICAgICAiY29tcGlsZUNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgICAgIH0KKyAgICBdLAorICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJmaWxlIjogIl5pbXBvcnRlZC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IDEzLAorICAgICAgICAgICAgImNvbW1hbmQiOiAiYWRkX2V4ZWN1dGFibGUiLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXmltcG9ydGVkL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6ICJebGlua19pbXBvcnRlZF9zdGF0aWNfZXhlKFxcLmV4ZSk/JCIsCisgICAgImFydGlmYWN0cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgInBhdGgiOiAiXmltcG9ydGVkLygoRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKS8pP2xpbmtfaW1wb3J0ZWRfc3RhdGljX2V4ZShcXC5leGUpPyQiLAorICAgICAgICAgICAgIl9kbGxFeHRyYSI6IGZhbHNlCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl5pbXBvcnRlZC8oKERlYnVnfFJlbGVhc2V8UmVsV2l0aERlYkluZm98TWluU2l6ZVJlbCkvKT9saW5rX2ltcG9ydGVkX3N0YXRpY19leGVcXC5wZGIkIiwKKyAgICAgICAgICAgICJfZGxsRXh0cmEiOiB0cnVlCisgICAgICAgIH0KKyAgICBdLAorICAgICJidWlsZCI6ICJeaW1wb3J0ZWQkIiwKKyAgICAic291cmNlIjogIl5pbXBvcnRlZCQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IHsKKyAgICAgICAgImxhbmd1YWdlIjogIkMiLAorICAgICAgICAibHRvIjogbnVsbCwKKyAgICAgICAgImNvbW1hbmRGcmFnbWVudHMiOiBudWxsCisgICAgfSwKKyAgICAiYXJjaGl2ZSI6IG51bGwsCisgICAgImRlcGVuZGVuY2llcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImlkIjogIl5aRVJPX0NIRUNLOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBudWxsCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvemVyb19jaGVja19hbGlhcy5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfYWxpYXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDFjMTcyCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfYWxpYXMuanNvbgpAQCAtMCwwICsxLDcwIEBACit7CisgICAgIm5hbWUiOiAiWkVST19DSEVDSyIsCisgICAgImlkIjogIl5aRVJPX0NIRUNLOjpANTM2MzJjYmEyNzUyMjcyYmIwMDgkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5hbGlhcyQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJBbGlhcyIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvYWxpYXMvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiB0cnVlLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICIiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeYWxpYXMvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvYWxpYXMvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeYWxpYXMvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICIiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvYWxpYXMvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvYWxpYXMvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogbnVsbCwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeYWxpYXMvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogbnVsbCwKKyAgICAiYXJ0aWZhY3RzIjogbnVsbCwKKyAgICAiYnVpbGQiOiAiXmFsaWFzJCIsCisgICAgInNvdXJjZSI6ICJeYWxpYXMkIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiBudWxsLAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogbnVsbAorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfY3VzdG9tLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvemVyb19jaGVja19jdXN0b20uanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGM2ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfY3VzdG9tLmpzb24KQEAgLTAsMCArMSw3MCBAQAoreworICAgICJuYW1lIjogIlpFUk9fQ0hFQ0siLAorICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGMxMTM4NWZmZWQ1N2I4NjBkYTYzJCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeY3VzdG9tJCIsCisgICAgInByb2plY3ROYW1lIjogIkN1c3RvbSIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3VzdG9tL0NNYWtlRmlsZXMvWkVST19DSEVDSyQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IG51bGwsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN1c3RvbS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jdXN0b20vQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3VzdG9tL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2N1c3RvbS9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0skIgorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJDTWFrZSBSdWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jdXN0b20vQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogbnVsbCwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3VzdG9tL0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6IG51bGwsCisgICAgImFydGlmYWN0cyI6IG51bGwsCisgICAgImJ1aWxkIjogIl5jdXN0b20kIiwKKyAgICAic291cmNlIjogIl5jdXN0b20kIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiBudWxsLAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogbnVsbAorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfY3h4Lmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvemVyb19jaGVja19jeHguanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzJmZjgyCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfY3h4Lmpzb24KQEAgLTAsMCArMSw3MCBAQAoreworICAgICJuYW1lIjogIlpFUk9fQ0hFQ0siLAorICAgICJpZCI6ICJeWkVST19DSEVDSzo6QGE1NmIxMmEzZjVjMDUyOWZiMjk2JCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeY3h4JCIsCisgICAgInByb2plY3ROYW1lIjogIkN4eCIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvY3h4L0NNYWtlRmlsZXMvWkVST19DSEVDSyQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IG51bGwsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXmN4eC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jeHgvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL2N4eC9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0skIgorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJDTWFrZSBSdWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9jeHgvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogbnVsbCwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeY3h4L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6IG51bGwsCisgICAgImFydGlmYWN0cyI6IG51bGwsCisgICAgImJ1aWxkIjogIl5jeHgkIiwKKyAgICAic291cmNlIjogIl5jeHgkIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiBudWxsLAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogbnVsbAorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfZXh0ZXJuYWwuanNvbiBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy96ZXJvX2NoZWNrX2V4dGVybmFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU3MzgwNgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWRhdGEvdGFyZ2V0cy96ZXJvX2NoZWNrX2V4dGVybmFsLmpzb24KQEAgLTAsMCArMSw3MCBAQAoreworICAgICJuYW1lIjogIlpFUk9fQ0hFQ0siLAorICAgICJpZCI6ICJeWkVST19DSEVDSzo6QFswLTlhLWZdKyQiLAorICAgICJkaXJlY3RvcnlTb3VyY2UiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZSQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJFeHRlcm5hbCIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZC9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0skIiwKKyAgICAgICAgICAgICJpc0dlbmVyYXRlZCI6IHRydWUsCisgICAgICAgICAgICAic291cmNlR3JvdXBOYW1lIjogIiIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBudWxsLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZC9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0tcXC5ydWxlJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiB0cnVlLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICJDTWFrZSBSdWxlcyIsCisgICAgICAgICAgICAiY29tcGlsZUdyb3VwTGFuZ3VhZ2UiOiBudWxsLAorICAgICAgICAgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJmaWxlIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJRXh0ZXJuYWxTb3VyY2UvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICIiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZC9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0skIgorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJDTWFrZSBSdWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL0ZpbGVBUElFeHRlcm5hbEJ1aWxkL0NNYWtlRmlsZXMvWkVST19DSEVDS1xcLnJ1bGUkIgorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tcGlsZUdyb3VwcyI6IG51bGwsCisgICAgImJhY2t0cmFjZSI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImZpbGUiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZS9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgfQorICAgIF0sCisgICAgImZvbGRlciI6IG51bGwsCisgICAgIm5hbWVPbkRpc2siOiBudWxsLAorICAgICJhcnRpZmFjdHMiOiBudWxsLAorICAgICJidWlsZCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9GaWxlQVBJRXh0ZXJuYWxCdWlsZCQiLAorICAgICJzb3VyY2UiOiAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUElFeHRlcm5hbFNvdXJjZSQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IG51bGwsCisgICAgImFyY2hpdmUiOiBudWxsLAorICAgICJkZXBlbmRlbmNpZXMiOiBudWxsCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvemVyb19jaGVja19pbXBvcnRlZC5qc29uIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfaW1wb3J0ZWQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTM0Yzg0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfaW1wb3J0ZWQuanNvbgpAQCAtMCwwICsxLDcwIEBACit7CisgICAgIm5hbWUiOiAiWkVST19DSEVDSyIsCisgICAgImlkIjogIl5aRVJPX0NIRUNLOjpAYmE3ZWI3MDlkMGI0ODc3OWM2YzgkIiwKKyAgICAiZGlyZWN0b3J5U291cmNlIjogIl5pbXBvcnRlZCQiLAorICAgICJwcm9qZWN0TmFtZSI6ICJJbXBvcnRlZCIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvaW1wb3J0ZWQvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiB0cnVlLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICIiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvaW1wb3J0ZWQvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICIiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvaW1wb3J0ZWQvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvaW1wb3J0ZWQvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogbnVsbCwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeaW1wb3J0ZWQvQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogbnVsbCwKKyAgICAiYXJ0aWZhY3RzIjogbnVsbCwKKyAgICAiYnVpbGQiOiAiXmltcG9ydGVkJCIsCisgICAgInNvdXJjZSI6ICJeaW1wb3J0ZWQkIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiBudWxsLAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogbnVsbAorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfb2JqZWN0Lmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvemVyb19jaGVja19vYmplY3QuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2Q3NjE2Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfb2JqZWN0Lmpzb24KQEAgLTAsMCArMSw3MCBAQAoreworICAgICJuYW1lIjogIlpFUk9fQ0hFQ0siLAorICAgICJpZCI6ICJeWkVST19DSEVDSzo6QDVlZDUzNThmNzBmYWY4ZDhhZjdhJCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeb2JqZWN0JCIsCisgICAgInByb2plY3ROYW1lIjogIk9iamVjdCIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvb2JqZWN0L0NNYWtlRmlsZXMvWkVST19DSEVDSyQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiIiwKKyAgICAgICAgICAgICJjb21waWxlR3JvdXBMYW5ndWFnZSI6IG51bGwsCisgICAgICAgICAgICAiYmFja3RyYWNlIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImZpbGUiOiAiXm9iamVjdC9DTWFrZUxpc3RzXFwudHh0JCIsCisgICAgICAgICAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiaGFzUGFyZW50IjogZmFsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJwYXRoIjogIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9vYmplY3QvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0sCisgICAgInNvdXJjZUdyb3VwcyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiIiwKKyAgICAgICAgICAgICJzb3VyY2VQYXRocyI6IFsKKyAgICAgICAgICAgICAgICAiXi4qL1Rlc3RzL1J1bkNNYWtlL0ZpbGVBUEkvY29kZW1vZGVsLXYyLWJ1aWxkL29iamVjdC9DTWFrZUZpbGVzL1pFUk9fQ0hFQ0skIgorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJDTWFrZSBSdWxlcyIsCisgICAgICAgICAgICAic291cmNlUGF0aHMiOiBbCisgICAgICAgICAgICAgICAgIl4uKi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1idWlsZC9vYmplY3QvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogbnVsbCwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeb2JqZWN0L0NNYWtlTGlzdHNcXC50eHQkIiwKKyAgICAgICAgICAgICJsaW5lIjogbnVsbCwKKyAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICJoYXNQYXJlbnQiOiBmYWxzZQorICAgICAgICB9CisgICAgXSwKKyAgICAiZm9sZGVyIjogbnVsbCwKKyAgICAibmFtZU9uRGlzayI6IG51bGwsCisgICAgImFydGlmYWN0cyI6IG51bGwsCisgICAgImJ1aWxkIjogIl5vYmplY3QkIiwKKyAgICAic291cmNlIjogIl5vYmplY3QkIiwKKyAgICAiaW5zdGFsbCI6IG51bGwsCisgICAgImxpbmsiOiBudWxsLAorICAgICJhcmNoaXZlIjogbnVsbCwKKyAgICAiZGVwZW5kZW5jaWVzIjogbnVsbAorfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfdG9wLmpzb24gYi9UZXN0cy9SdW5DTWFrZS9GaWxlQVBJL2NvZGVtb2RlbC12Mi1kYXRhL3RhcmdldHMvemVyb19jaGVja190b3AuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzAzMGJkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItZGF0YS90YXJnZXRzL3plcm9fY2hlY2tfdG9wLmpzb24KQEAgLTAsMCArMSw3MCBAQAoreworICAgICJuYW1lIjogIlpFUk9fQ0hFQ0siLAorICAgICJpZCI6ICJeWkVST19DSEVDSzo6QDY4OTA0MjdhMWY1MWEzZTdlMWRmJCIsCisgICAgImRpcmVjdG9yeVNvdXJjZSI6ICJeXFwuJCIsCisgICAgInByb2plY3ROYW1lIjogImNvZGVtb2RlbC12MiIsCisgICAgInR5cGUiOiAiVVRJTElUWSIsCisgICAgImlzR2VuZXJhdG9yUHJvdmlkZWQiOiB0cnVlLAorICAgICJzb3VyY2VzIjogWworICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIsCisgICAgICAgICAgICAiaXNHZW5lcmF0ZWQiOiB0cnVlLAorICAgICAgICAgICAgInNvdXJjZUdyb3VwTmFtZSI6ICIiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAicGF0aCI6ICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiLAorICAgICAgICAgICAgImlzR2VuZXJhdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICJzb3VyY2VHcm91cE5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgImNvbXBpbGVHcm91cExhbmd1YWdlIjogbnVsbCwKKyAgICAgICAgICAgICJiYWNrdHJhY2UiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgICAgICAgICAibGluZSI6IG51bGwsCisgICAgICAgICAgICAgICAgICAgICJjb21tYW5kIjogbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAic291cmNlR3JvdXBzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICIiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvQ01ha2VGaWxlcy9aRVJPX0NIRUNLJCIKKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiQ01ha2UgUnVsZXMiLAorICAgICAgICAgICAgInNvdXJjZVBhdGhzIjogWworICAgICAgICAgICAgICAgICJeLiovVGVzdHMvUnVuQ01ha2UvRmlsZUFQSS9jb2RlbW9kZWwtdjItYnVpbGQvQ01ha2VGaWxlcy9aRVJPX0NIRUNLXFwucnVsZSQiCisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21waWxlR3JvdXBzIjogbnVsbCwKKyAgICAiYmFja3RyYWNlIjogWworICAgICAgICB7CisgICAgICAgICAgICAiZmlsZSI6ICJeQ01ha2VMaXN0c1xcLnR4dCQiLAorICAgICAgICAgICAgImxpbmUiOiBudWxsLAorICAgICAgICAgICAgImNvbW1hbmQiOiBudWxsLAorICAgICAgICAgICAgImhhc1BhcmVudCI6IGZhbHNlCisgICAgICAgIH0KKyAgICBdLAorICAgICJmb2xkZXIiOiBudWxsLAorICAgICJuYW1lT25EaXNrIjogbnVsbCwKKyAgICAiYXJ0aWZhY3RzIjogbnVsbCwKKyAgICAiYnVpbGQiOiAiXlxcLiQiLAorICAgICJzb3VyY2UiOiAiXlxcLiQiLAorICAgICJpbnN0YWxsIjogbnVsbCwKKyAgICAibGluayI6IG51bGwsCisgICAgImFyY2hpdmUiOiBudWxsLAorICAgICJkZXBlbmRlbmNpZXMiOiBudWxsCit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvN3ppcC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS83emlwLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiMGI5YjcKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvN3ppcC5jbWFrZQpAQCAtMCwwICsxLDcgQEAKK3NldChPVVRQVVRfTkFNRSAidGVzdC43eiIpCisKK3NldChDT01QUkVTU0lPTl9GT1JNQVQgN3ppcCkKKworaW5jbHVkZSgke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L3JvdW5kdHJpcC5jbWFrZSkKKworY2hlY2tfbWFnaWMoIjM3N2FiY2FmMjcxYyIgTElNSVQgNiBIRVgpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg5NzEwOQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDMgQEAKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjApCitwcm9qZWN0KCR7UnVuQ01ha2VfVEVTVH0gTk9ORSkKK2luY2x1ZGUoJHtSdW5DTWFrZV9URVNUfS5jbWFrZSkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS9SdW5DTWFrZVRlc3QuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvUnVuQ01ha2VUZXN0LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MWNiNmQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvUnVuQ01ha2VUZXN0LmNtYWtlCkBAIC0wLDAgKzEsMTcgQEAKK2luY2x1ZGUoUnVuQ01ha2UpCisKK3J1bl9jbWFrZSg3emlwKQorcnVuX2NtYWtlKGdudXRhcikKK3J1bl9jbWFrZShnbnV0YXItZ3opCitydW5fY21ha2UocGF4KQorcnVuX2NtYWtlKHBheC14eikKK3J1bl9jbWFrZShwYXgtenN0ZCkKK3J1bl9jbWFrZShwYXhyKQorcnVuX2NtYWtlKHBheHItYnoyKQorcnVuX2NtYWtlKHppcCkKKworIyBFeHRyYWN0aW5nIG9ubHkgc2VsZWN0ZWQgZmlsZXMgb3IgZGlyZWN0b3JpZXMKK3J1bl9jbWFrZSh6aXAtZmlsdGVyZWQpCisKK3J1bl9jbWFrZSh1bnN1cHBvcnRlZC1mb3JtYXQpCitydW5fY21ha2UoemlwLXdpdGgtYmFkLXR5cGUpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvZ251dGFyLWd6LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL2dudXRhci1nei5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGUzOTc1Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL2dudXRhci1nei5jbWFrZQpAQCAtMCwwICsxLDggQEAKK3NldChPVVRQVVRfTkFNRSAidGVzdC50YXIuZ3oiKQorCitzZXQoQ09NUFJFU1NJT05fRk9STUFUIGdudXRhcikKK3NldChDT01QUkVTU0lPTl9UWVBFIEdaaXApCisKK2luY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9yb3VuZHRyaXAuY21ha2UpCisKK2NoZWNrX21hZ2ljKCIxZjhiIiBMSU1JVCAyIEhFWCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS9nbnV0YXIuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvZ251dGFyLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1Y2JkMzUKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvZ251dGFyLmNtYWtlCkBAIC0wLDAgKzEsNyBAQAorc2V0KE9VVFBVVF9OQU1FICJ0ZXN0LnRhciIpCisKK3NldChDT01QUkVTU0lPTl9GT1JNQVQgZ251dGFyKQorCitpbmNsdWRlKCR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vcm91bmR0cmlwLmNtYWtlKQorCitjaGVja19tYWdpYygiNzU3Mzc0NjE3MjIwMjAwMCIgT0ZGU0VUIDI1NyBMSU1JVCA4IEhFWCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS9wYXgteHouY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvcGF4LXh6LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZmIwZmQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvcGF4LXh6LmNtYWtlCkBAIC0wLDAgKzEsOCBAQAorc2V0KE9VVFBVVF9OQU1FICJ0ZXN0LnRhci54eiIpCisKK3NldChDT01QUkVTU0lPTl9GT1JNQVQgcGF4KQorc2V0KENPTVBSRVNTSU9OX1RZUEUgWFopCisKK2luY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9yb3VuZHRyaXAuY21ha2UpCisKK2NoZWNrX21hZ2ljKCJmZDM3N2E1ODVhMDAiIExJTUlUIDYgSEVYKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3BheC16c3RkLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3BheC16c3RkLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZTA0NDMKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvcGF4LXpzdGQuY21ha2UKQEAgLTAsMCArMSw4IEBACitzZXQoT1VUUFVUX05BTUUgInRlc3QudGFyLnpzdGQiKQorCitzZXQoQ09NUFJFU1NJT05fRk9STUFUIHBheCkKK3NldChDT01QUkVTU0lPTl9UWVBFIFpzdGQpCisKK2luY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9yb3VuZHRyaXAuY21ha2UpCisKK2NoZWNrX21hZ2ljKCIyOGI1MmZmZDAwNTgiIExJTUlUIDYgSEVYKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3BheC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS9wYXguY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwYzc0ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS9wYXguY21ha2UKQEAgLTAsMCArMSw3IEBACitzZXQoT1VUUFVUX05BTUUgInRlc3QudGFyIikKKworc2V0KENPTVBSRVNTSU9OX0ZPUk1BVCBwYXgpCisKK2luY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9yb3VuZHRyaXAuY21ha2UpCisKK2NoZWNrX21hZ2ljKCI3NTczNzQ2MTcyMDAzMDMwIiBPRkZTRVQgMjU3IExJTUlUIDggSEVYKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3BheHItYnoyLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3BheHItYnoyLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OWExMzEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvcGF4ci1iejIuY21ha2UKQEAgLTAsMCArMSw4IEBACitzZXQoT1VUUFVUX05BTUUgInRlc3QudGFyLmJ6MiIpCisKK3NldChDT01QUkVTU0lPTl9GT1JNQVQgcGF4cikKK3NldChDT01QUkVTU0lPTl9UWVBFIEJaaXAyKQorCitpbmNsdWRlKCR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vcm91bmR0cmlwLmNtYWtlKQorCitjaGVja19tYWdpYygiNDI1YTY4IiBMSU1JVCAzIEhFWCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS9wYXhyLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3BheHIuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNhNGQ1YwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS9wYXhyLmNtYWtlCkBAIC0wLDAgKzEsNyBAQAorc2V0KE9VVFBVVF9OQU1FICJ0ZXN0LnRhciIpCisKK3NldChDT01QUkVTU0lPTl9GT1JNQVQgcGF4cikKKworaW5jbHVkZSgke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L3JvdW5kdHJpcC5jbWFrZSkKKworY2hlY2tfbWFnaWMoIjc1NzM3NDYxNzIwMDMwMzAiIE9GRlNFVCAyNTcgTElNSVQgOCBIRVgpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvcm91bmR0cmlwLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3JvdW5kdHJpcC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDUwNDAwCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3JvdW5kdHJpcC5jbWFrZQpAQCAtMCwwICsxLDkyIEBACitmb3JlYWNoKHBhcmFtZXRlciBPVVRQVVRfTkFNRSBDT01QUkVTU0lPTl9GT1JNQVQpCisgIGlmKE5PVCBERUZJTkVEICR7cGFyYW1ldGVyfSkKKyAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJtaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlciAke3BhcmFtZXRlcn0iKQorICBlbmRpZigpCitlbmRmb3JlYWNoKCkKKworc2V0KENPTVBSRVNTX0RJUiBjb21wcmVzc19kaXIpCitzZXQoRlVMTF9DT01QUkVTU19ESVIgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LyR7Q09NUFJFU1NfRElSfSkKKworc2V0KERFQ09NUFJFU1NfRElSIGRlY29tcHJlc3NfZGlyKQorc2V0KEZVTExfREVDT01QUkVTU19ESVIgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LyR7REVDT01QUkVTU19ESVJ9KQorCitzZXQoRlVMTF9PVVRQVVRfTkFNRSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vJHtPVVRQVVRfTkFNRX0pCisKK3NldChDSEVDS19GSUxFUworICAiZjEudHh0IgorICAiZDEvZjEudHh0IgorICAiZCAyL2YxLnR4dCIKKyAgImQgKyAzL2YxLnR4dCIKKyAgImRfNC9mMS50eHQiCisgICJkLTQvZjEudHh0IgorICAiTXkgU3BlY2lhbCBEaXJlY3RvcnkvZjEudHh0IgorKQorCitmb3JlYWNoKGZpbGUgJHtDSEVDS19GSUxFU30pCisgIGNvbmZpZ3VyZV9maWxlKCR7Q01BS0VfQ1VSUkVOVF9MSVNUX0ZJTEV9ICR7RlVMTF9DT01QUkVTU19ESVJ9LyR7ZmlsZX0gQ09QWU9OTFkpCitlbmRmb3JlYWNoKCkKKworaWYoVU5JWCkKKyAgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgbG4gLXNmIGYxLnR4dCAke0ZVTExfQ09NUFJFU1NfRElSfS9kMS9mMi50eHQpCisgIGxpc3QoQVBQRU5EIENIRUNLX0ZJTEVTICJkMS9mMi50eHQiKQorZW5kaWYoKQorCitmaWxlKFJFTU9WRSAke0ZVTExfT1VUUFVUX05BTUV9KQorZmlsZShSRU1PVkVfUkVDVVJTRSAke0ZVTExfREVDT01QUkVTU19ESVJ9KQorZmlsZShNQUtFX0RJUkVDVE9SWSAke0ZVTExfREVDT01QUkVTU19ESVJ9KQorCitmaWxlKEFSQ0hJVkVfQ1JFQVRFCisgICAgT1VUUFVUICR7RlVMTF9PVVRQVVRfTkFNRX0KKyAgICBGT1JNQVQgIiR7Q09NUFJFU1NJT05fRk9STUFUfSIKKyAgICBUWVBFICIke0NPTVBSRVNTSU9OX1RZUEV9IgorICAgIFZFUkJPU0UKKyAgICBESVJFQ1RPUlkgJHtDT01QUkVTU19ESVJ9KQorCitmaWxlKEFSQ0hJVkVfRVhUUkFDVAorICAgIElOUFVUICR7RlVMTF9PVVRQVVRfTkFNRX0KKyAgICAke0RFQ09NUFJFU1NJT05fT1BUSU9OU30KKyAgICBERVNUSU5BVElPTiAke0ZVTExfREVDT01QUkVTU19ESVJ9CisgICAgVkVSQk9TRSkKKworaWYoQ1VTVE9NX0NIRUNLX0ZJTEVTKQorICBzZXQoQ0hFQ0tfRklMRVMgJHtDVVNUT01fQ0hFQ0tfRklMRVN9KQorZW5kaWYoKQorCitmb3JlYWNoKGZpbGUgJHtDSEVDS19GSUxFU30pCisgIHNldChpbnB1dCAke0ZVTExfQ09NUFJFU1NfRElSfS8ke2ZpbGV9KQorICBzZXQob3V0cHV0ICR7RlVMTF9ERUNPTVBSRVNTX0RJUn0vJHtDT01QUkVTU19ESVJ9LyR7ZmlsZX0pCisKKyAgaWYoTk9UIEVYSVNUUyAke2lucHV0fSkKKyAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJDYW5ub3QgZmluZCBpbnB1dCBmaWxlICR7b3V0cHV0fSIpCisgIGVuZGlmKCkKKworICBpZihOT1QgRVhJU1RTICR7b3V0cHV0fSkKKyAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJDYW5ub3QgZmluZCBvdXRwdXQgZmlsZSAke291dHB1dH0iKQorICBlbmRpZigpCisKKyAgZmlsZShNRDUgJHtpbnB1dH0gaW5wdXRfbWQ1KQorICBmaWxlKE1ENSAke291dHB1dH0gb3V0cHV0X21kNSkKKworICBpZihOT1QgaW5wdXRfbWQ1IFNUUkVRVUFMIG91dHB1dF9tZDUpCisgICAgbWVzc2FnZShTRU5EX0VSUk9SICJGaWxlcyBcIiR7aW5wdXR9XCIgYW5kIFwiJHtvdXRwdXR9XCIgYXJlIGRpZmZlcmVudCIpCisgIGVuZGlmKCkKK2VuZGZvcmVhY2goKQorCitmb3JlYWNoKGZpbGUgJHtOT1RfRVhJU1RJTkdfRklMRVNfQ0hFQ0t9KQorICBzZXQob3V0cHV0ICR7RlVMTF9ERUNPTVBSRVNTX0RJUn0vJHtDT01QUkVTU19ESVJ9LyR7ZmlsZX0pCisKKyAgaWYoRVhJU1RTICR7b3V0cHV0fSkKKyAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJGaWxlICR7b3V0cHV0fSBleGlzdHMgYnV0IGl0IHNob3VsZG4ndCIpCisgIGVuZGlmKCkKK2VuZGZvcmVhY2goKQorCitmdW5jdGlvbihjaGVja19tYWdpYyBFWFBFQ1RFRCkKKyAgZmlsZShSRUFEICR7RlVMTF9PVVRQVVRfTkFNRX0gQUNUVUFMCisgICAgJHtBUkdOfQorICApCisKKyAgaWYoTk9UIEFDVFVBTCBTVFJFUVVBTCBFWFBFQ1RFRCkKKyAgICBtZXNzYWdlKEZBVEFMX0VSUk9SCisgICAgICAiQWN0dWFsIFske0FDVFVBTH1dIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIFske0VYUEVDVEVEfV0iKQorICBlbmRpZigpCitlbmRmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3Vuc3VwcG9ydGVkLWZvcm1hdC1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS91bnN1cHBvcnRlZC1mb3JtYXQtcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3Vuc3VwcG9ydGVkLWZvcm1hdC1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3Vuc3VwcG9ydGVkLWZvcm1hdC1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMjgwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvdW5zdXBwb3J0ZWQtZm9ybWF0LXN0ZGVyci50eHQKQEAgLTAsMCArMSw1IEBACitDTWFrZSBFcnJvciBhdCByb3VuZHRyaXAuY21ha2U6MzggXChmaWxlXCk6CisgIGZpbGUgYXJjaGl2ZSBmb3JtYXQgcmFyIG5vdCBzdXBwb3J0ZWQKK0NhbGwgU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgIHVuc3VwcG9ydGVkLWZvcm1hdC5jbWFrZTo1IFwoaW5jbHVkZVwpCisgIENNYWtlTGlzdHMudHh0OjMgXChpbmNsdWRlXCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS91bnN1cHBvcnRlZC1mb3JtYXQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvdW5zdXBwb3J0ZWQtZm9ybWF0LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxZWRjMWIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvdW5zdXBwb3J0ZWQtZm9ybWF0LmNtYWtlCkBAIC0wLDAgKzEsNSBAQAorc2V0KE9VVFBVVF9OQU1FICJ0ZXN0LnJhciIpCisKK3NldChDT01QUkVTU0lPTl9GT1JNQVQgcmFyKQorCitpbmNsdWRlKCR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vcm91bmR0cmlwLmNtYWtlKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3ppcC1maWx0ZXJlZC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS96aXAtZmlsdGVyZWQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQyNTliYwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS96aXAtZmlsdGVyZWQuY21ha2UKQEAgLTAsMCArMSwyNiBAQAorc2V0KE9VVFBVVF9OQU1FICJ0ZXN0LnppcCIpCisKK3NldChDT01QUkVTU0lPTl9GT1JNQVQgemlwKQorCitzZXQoREVDT01QUkVTU0lPTl9PUFRJT05TCisgIEZJTEVTCisgICAgY29tcHJlc3NfZGlyL2YxLnR4dCAjIERlY29tcHJlc3Mgb25seSBmaWxlCisgICAgY29tcHJlc3NfZGlyL2QxICAgICAjIGFuZCB3aG9sZSBkaXJlY3RvcnkKKykKKworc2V0KENVU1RPTV9DSEVDS19GSUxFUworICAiZjEudHh0IgorICAiZDEvZjEudHh0IgorKQorCisjIFRoaXMgZmlsZXMgc2hvdWxkbid0IGV4aXN0cworc2V0KE5PVF9FWElTVElOR19GSUxFU19DSEVDSworICAiZCAyL2YxLnR4dCIKKyAgImQgKyAzL2YxLnR4dCIKKyAgImRfNC9mMS50eHQiCisgICJkLTQvZjEudHh0IgorKQorCitpbmNsdWRlKCR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vcm91bmR0cmlwLmNtYWtlKQorCitjaGVja19tYWdpYygiNTA0YjAzMDQiIExJTUlUIDQgSEVYKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS96aXAtd2l0aC1iYWQtdHlwZS1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS96aXAtd2l0aC1iYWQtdHlwZS1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvemlwLXdpdGgtYmFkLXR5cGUtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS96aXAtd2l0aC1iYWQtdHlwZS1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMTJmZWIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvemlwLXdpdGgtYmFkLXR5cGUtc3RkZXJyLnR4dApAQCAtMCwwICsxLDUgQEAKK0NNYWtlIEVycm9yIGF0IHJvdW5kdHJpcC5jbWFrZTozOCBcKGZpbGVcKToKKyAgZmlsZSBhcmNoaXZlIGZvcm1hdCB6aXAgZG9lcyBub3Qgc3VwcG9ydCBUWVBFIGFyZ3VtZW50cworQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgemlwLXdpdGgtYmFkLXR5cGUuY21ha2U6NiBcKGluY2x1ZGVcKQorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvemlwLXdpdGgtYmFkLXR5cGUuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0FyY2hpdmUvemlwLXdpdGgtYmFkLXR5cGUuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJiOTdhMwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS96aXAtd2l0aC1iYWQtdHlwZS5jbWFrZQpAQCAtMCwwICsxLDYgQEAKK3NldChPVVRQVVRfTkFNRSAidGVzdC56aXAiKQorCitzZXQoQ09NUFJFU1NJT05fRk9STUFUIHppcCkKK3NldChDT01QUkVTU0lPTl9UWVBFIEJaaXAyKQorCitpbmNsdWRlKCR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vcm91bmR0cmlwLmNtYWtlKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9BcmNoaXZlL3ppcC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS96aXAuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI5MzA1OAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQXJjaGl2ZS96aXAuY21ha2UKQEAgLTAsMCArMSw3IEBACitzZXQoT1VUUFVUX05BTUUgInRlc3QuemlwIikKKworc2V0KENPTVBSRVNTSU9OX0ZPUk1BVCB6aXApCisKK2luY2x1ZGUoJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9yb3VuZHRyaXAuY21ha2UpCisKK2NoZWNrX21hZ2ljKCI1MDRiMDMwNCIgTElNSVQgNCBIRVgpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQmFkQXJnLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQmFkQXJnLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0JhZEFyZy1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQmFkQXJnLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQyM2EyOAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0JhZEFyZy1zdGRlcnIudHh0CkBAIC0wLDAgKzEsNCBAQAorQ01ha2UgRXJyb3IgYXQgQmFkQXJnLmNtYWtlOlswLTldKyBcKGZpbGVcKToKKyAgZmlsZSBJbmNvcnJlY3QgYXJndW1lbnRzIHRvIENPTkZJR1VSRSBzdWJjb21tYW5kLgorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQmFkQXJnLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQmFkQXJnLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjN2ZjZGEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9CYWRBcmcuY21ha2UKQEAgLTAsMCArMSBAQAorZmlsZShDT05GSUdVUkUgT1VUUFVUKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0JhZEFyZ0dlbmVyYXRvckV4cHJlc3Npb25Db250ZW50LXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQmFkQXJnR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRlbnQtcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQmFkQXJnR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRlbnQtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0JhZEFyZ0dlbmVyYXRvckV4cHJlc3Npb25Db250ZW50LXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNkYTY1NAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0JhZEFyZ0dlbmVyYXRvckV4cHJlc3Npb25Db250ZW50LXN0ZGVyci50eHQKQEAgLTAsMCArMSw1IEBACitDTWFrZSBFcnJvciBhdCBCYWRBcmdHZW5lcmF0b3JFeHByZXNzaW9uQ29udGVudC5jbWFrZTpbMC05XSsgXChmaWxlXCk6CisgIGZpbGUgQ09ORklHVVJFIGNhbGxlZCB3aXRoIENPTlRFTlQgY29udGFpbmluZyBhICI8Ii4gIFRoaXMgY2hhcmFjdGVyIGlzIG5vdAorICBhbGxvd2VkLgorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQmFkQXJnR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRlbnQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9CYWRBcmdHZW5lcmF0b3JFeHByZXNzaW9uQ29udGVudC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWZlOWU1Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQmFkQXJnR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRlbnQuY21ha2UKQEAgLTAsMCArMSw0IEBACitmaWxlKENPTkZJR1VSRQorICAgIE9VVFBVVCAiZmlsZS50eHQiCisgICAgQ09OVEVOVCAiZm9vLSQ8Q09ORklHPiIKKykKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9CYWRBcmdHZW5lcmF0b3JFeHByZXNzaW9uT3V0cHV0LXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQmFkQXJnR2VuZXJhdG9yRXhwcmVzc2lvbk91dHB1dC1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9CYWRBcmdHZW5lcmF0b3JFeHByZXNzaW9uT3V0cHV0LXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9CYWRBcmdHZW5lcmF0b3JFeHByZXNzaW9uT3V0cHV0LXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI5ZDk1NgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0JhZEFyZ0dlbmVyYXRvckV4cHJlc3Npb25PdXRwdXQtc3RkZXJyLnR4dApAQCAtMCwwICsxLDUgQEAKK0NNYWtlIEVycm9yIGF0IEJhZEFyZ0dlbmVyYXRvckV4cHJlc3Npb25PdXRwdXQuY21ha2U6WzAtOV0rIFwoZmlsZVwpOgorICBmaWxlIENPTkZJR1VSRSBjYWxsZWQgd2l0aCBPVVRQVVQgY29udGFpbmluZyBhICI8Ii4gIFRoaXMgY2hhcmFjdGVyIGlzIG5vdAorICBhbGxvd2VkLgorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQmFkQXJnR2VuZXJhdG9yRXhwcmVzc2lvbk91dHB1dC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0JhZEFyZ0dlbmVyYXRvckV4cHJlc3Npb25PdXRwdXQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFhNzlhNwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0JhZEFyZ0dlbmVyYXRvckV4cHJlc3Npb25PdXRwdXQuY21ha2UKQEAgLTAsMCArMSw0IEBACitmaWxlKENPTkZJR1VSRQorICAgIE9VVFBVVCAiZmlsZS0kPENPTkZJRz4udHh0IgorICAgIENPTlRFTlQgImZvbyIKKykKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjcxMTdiZAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsMyBAQAorY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuMTcpCitwcm9qZWN0KCR7UnVuQ01ha2VfVEVTVH0gTk9ORSkKK2luY2x1ZGUoJHtSdW5DTWFrZV9URVNUfS5jbWFrZSkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0Rpck91dHB1dC1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvRGlyT3V0cHV0LXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA1MWY3YwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0Rpck91dHB1dC1zdGRlcnIudHh0CkBAIC0wLDAgKzEgQEAKK15EaXJPdXRwdXQgdGVzdCBmaWxlJApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvRGlyT3V0cHV0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvRGlyT3V0cHV0LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMGZhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9EaXJPdXRwdXQuY21ha2UKQEAgLTAsMCArMSw0IEBACitmaWxlKE1BS0VfRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9EaXJPdXRwdXQpCitjb25maWd1cmVfZmlsZShEaXJPdXRwdXQudHh0IERpck91dHB1dCkKK2ZpbGUoUkVBRCAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vRGlyT3V0cHV0L0Rpck91dHB1dC50eHQgb3V0KQorbWVzc2FnZSgiJHtvdXR9IikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL0Rpck91dHB1dC50eHQgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9EaXJPdXRwdXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2Mzg4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9EaXJPdXRwdXQudHh0CkBAIC0wLDAgKzEgQEAKK0Rpck91dHB1dCB0ZXN0IGZpbGUKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9OZXdMaW5lU3R5bGUtTm9BcmctcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9OZXdMaW5lU3R5bGUtTm9BcmctcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvTmV3TGluZVN0eWxlLU5vQXJnLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9OZXdMaW5lU3R5bGUtTm9Bcmctc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YThlZDJjCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvTmV3TGluZVN0eWxlLU5vQXJnLXN0ZGVyci50eHQKQEAgLTAsMCArMSw1IEBACitDTWFrZSBFcnJvciBhdCBOZXdMaW5lU3R5bGUtTm9BcmcuY21ha2U6WzAtOV0rIFwoZmlsZVwpOgorICBmaWxlIENPTkZJR1VSRSBORVdMSU5FX1NUWUxFIG11c3Qgc2V0IGEgc3R5bGU6IExGLCBDUkxGLCBVTklYLCBET1MsIG9yCisgIFdJTjMyCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9OZXdMaW5lU3R5bGUtTm9BcmcuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9OZXdMaW5lU3R5bGUtTm9BcmcuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY3MzhiNAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL05ld0xpbmVTdHlsZS1Ob0FyZy5jbWFrZQpAQCAtMCwwICsxLDYgQEAKK3NldChmaWxlX25hbWUgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9OZXdMaW5lU3R5bGUudHh0KQorZmlsZShDT05GSUdVUkUKKyAgICBPVVRQVVQgJHtmaWxlX25hbWV9CisgICAgQ09OVEVOVCAiRGF0YVxuIgorICAgIE5FV0xJTkVfU1RZTEUKKykKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL05ld0xpbmVTdHlsZS1WYWxpZEFyZy5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL05ld0xpbmVTdHlsZS1WYWxpZEFyZy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzg0ODczCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmlsZV9Db25maWd1cmUvTmV3TGluZVN0eWxlLVZhbGlkQXJnLmNtYWtlCkBAIC0wLDAgKzEsMjAgQEAKK3NldChmaWxlX25hbWUgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9OZXdMaW5lU3R5bGUudHh0KQorCitmdW5jdGlvbih0ZXN0X2VvbCBzdHlsZSBpbiBvdXQpCisgICAgZmlsZShDT05GSUdVUkUKKyAgICAgICAgT1VUUFVUICR7ZmlsZV9uYW1lfQorICAgICAgICBDT05URU5UICJAaW5AIgorICAgICAgICBORVdMSU5FX1NUWUxFICR7c3R5bGV9CisgICAgKQorICAgIGZpbGUoUkVBRCAke2ZpbGVfbmFtZX0gbmV3IEhFWCkKKyAgICBpZihOT1QgIiR7bmV3fSIgU1RSRVFVQUwgIiR7b3V0fSIpCisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIk5vICR7c3R5bGV9IGxpbmUgZW5kaW5ncyIpCisgICAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQorCit0ZXN0X2VvbChET1MgICAiYSIgIjYxMGQwYSIpCit0ZXN0X2VvbChXSU4zMiAiYiIgIjYyMGQwYSIpCit0ZXN0X2VvbChDUkxGICAiYyIgIjYzMGQwYSIpCisKK3Rlc3RfZW9sKFVOSVggICJkIiAiNjQwYSIpCit0ZXN0X2VvbChMRiAgICAiZSIgIjY1MGEiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL05ld0xpbmVTdHlsZS1Xcm9uZ0FyZy1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL05ld0xpbmVTdHlsZS1Xcm9uZ0FyZy1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9OZXdMaW5lU3R5bGUtV3JvbmdBcmctc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL05ld0xpbmVTdHlsZS1Xcm9uZ0FyZy1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYmI0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9OZXdMaW5lU3R5bGUtV3JvbmdBcmctc3RkZXJyLnR4dApAQCAtMCwwICsxLDUgQEAKK0NNYWtlIEVycm9yIGF0IE5ld0xpbmVTdHlsZS1Xcm9uZ0FyZy5jbWFrZTpbMC05XSsgXChmaWxlXCk6CisgIGZpbGUgQ09ORklHVVJFIE5FV0xJTkVfU1RZTEUgc2V0cyBhbiB1bmtub3duIHN0eWxlLCBvbmx5IExGLCBDUkxGLCBVTklYLAorICBET1MsIGFuZCBXSU4zMiBhcmUgc3VwcG9ydGVkCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9OZXdMaW5lU3R5bGUtV3JvbmdBcmcuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9OZXdMaW5lU3R5bGUtV3JvbmdBcmcuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QzODE2NwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL05ld0xpbmVTdHlsZS1Xcm9uZ0FyZy5jbWFrZQpAQCAtMCwwICsxLDYgQEAKK3NldChmaWxlX25hbWUgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9OZXdMaW5lU3R5bGUudHh0KQorZmlsZShDT05GSUdVUkUKKyAgICBPVVRQVVQgJHtmaWxlX25hbWV9CisgICAgQ09OVEVOVCAiRGF0YVxuIgorICAgIE5FV0xJTkVfU1RZTEUgRk9PCispCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9SdW5DTWFrZVRlc3QuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0NvbmZpZ3VyZS9SdW5DTWFrZVRlc3QuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5ZDY0OAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfQ29uZmlndXJlL1J1bkNNYWtlVGVzdC5jbWFrZQpAQCAtMCwwICsxLDkgQEAKK2luY2x1ZGUoUnVuQ01ha2UpCisKK3J1bl9jbWFrZShCYWRBcmcpCitydW5fY21ha2UoQmFkQXJnR2VuZXJhdG9yRXhwcmVzc2lvbkNvbnRlbnQpCitydW5fY21ha2UoQmFkQXJnR2VuZXJhdG9yRXhwcmVzc2lvbk91dHB1dCkKK3J1bl9jbWFrZShEaXJPdXRwdXQpCitydW5fY21ha2UoTmV3TGluZVN0eWxlLU5vQXJnKQorcnVuX2NtYWtlKE5ld0xpbmVTdHlsZS1WYWxpZEFyZykKK3J1bl9jbWFrZShOZXdMaW5lU3R5bGUtV3JvbmdBcmcpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaWxlX0dlbmVyYXRlL0NNUDAwNzAtT0xELXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9GaWxlX0dlbmVyYXRlL0NNUDAwNzAtT0xELXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI1NzhlNQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbGVfR2VuZXJhdGUvQ01QMDA3MC1PTEQtc3RkZXJyLnR4dApAQCAtMCwwICsxLDEwIEBACiteQ01ha2UgRGVwcmVjYXRpb24gV2FybmluZyBhdCBDTVAwMDcwLU9MRC5jbWFrZTpbMC05XSsgXChjbWFrZV9wb2xpY3lcKToKKyAgVGhlIE9MRCBiZWhhdmlvciBmb3IgcG9saWN5IENNUDAwNzAgd2lsbCBiZSByZW1vdmVkIGZyb20gYSBmdXR1cmUgdmVyc2lvbgorICBvZiBDTWFrZS4KKworICBUaGUgY21ha2UtcG9saWNpZXNcKDdcKSBtYW51YWwgZXhwbGFpbnMgdGhhdCB0aGUgT0xEIGJlaGF2aW9ycyBvZiBhbGwKKyAgcG9saWNpZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIHRoYXQgYSBwb2xpY3kgc2hvdWxkIGJlIHNldCB0byBPTEQgb25seSB1bmRlcgorICBzcGVjaWZpYyBzaG9ydC10ZXJtIGNpcmN1bXN0YW5jZXMuICBQcm9qZWN0cyBzaG91bGQgYmUgcG9ydGVkIHRvIHRoZSBORVcKKyAgYmVoYXZpb3IgYW5kIG5vdCByZWx5IG9uIHNldHRpbmcgYSBwb2xpY3kgdG8gT0xELgorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6WzAtOV0rIFwoaW5jbHVkZVwpJApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmluZFBrZ0NvbmZpZy9Qa2dDb25maWdEb2VzTm90RXhpc3Qtc3Rkb3V0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0ZpbmRQa2dDb25maWcvUGtnQ29uZmlnRG9lc05vdEV4aXN0LXN0ZG91dC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY1ZjdmNgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbmRQa2dDb25maWcvUGtnQ29uZmlnRG9lc05vdEV4aXN0LXN0ZG91dC50eHQKQEAgLTAsMCArMSw2IEBACistLSBDb3VsZCBOT1QgZmluZCBQa2dDb25maWcgXChtaXNzaW5nOiBQS0dfQ09ORklHX0VYRUNVVEFCTEVcKSAqCisgICAgUmVhc29uIGdpdmVuIGJ5IHBhY2thZ2U6IFRoZSBjb21tYW5kCisgICAgICAicGtnLWNvbmZpZy1kb2VzLW5vdC1leGlzdCIgLS12ZXJzaW9uCisgICAgZmFpbGVkIHdpdGggb3V0cHV0LioKKy0tIFBLR19DT05GSUdfRk9VTkQ9J0ZBTFNFJworLS0gUEtHX0NPTkZJR19FWEVDVVRBQkxFPScnCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaW5kUGtnQ29uZmlnL1BrZ0NvbmZpZ0RvZXNOb3RFeGlzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0ZpbmRQa2dDb25maWcvUGtnQ29uZmlnRG9lc05vdEV4aXN0LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZmFiZGUKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaW5kUGtnQ29uZmlnL1BrZ0NvbmZpZ0RvZXNOb3RFeGlzdC5jbWFrZQpAQCAtMCwwICsxLDQgQEAKK3NldChQS0dfQ09ORklHX0VYRUNVVEFCTEUgInBrZy1jb25maWctZG9lcy1ub3QtZXhpc3QiIENBQ0hFIEZJTEVQQVRIICIiKQorZmluZF9wYWNrYWdlKFBrZ0NvbmZpZykKK21lc3NhZ2UoU1RBVFVTICJQS0dfQ09ORklHX0ZPVU5EPScke1BLR19DT05GSUdfRk9VTkR9JyIpCittZXNzYWdlKFNUQVRVUyAiUEtHX0NPTkZJR19FWEVDVVRBQkxFPScke1BLR19DT05GSUdfRVhFQ1VUQUJMRX0nIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbmRQa2dDb25maWcvUnVuQ01ha2VUZXN0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvRmluZFBrZ0NvbmZpZy9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggYjc3YmI1NC4uOWRmMWQ1YiAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvRmluZFBrZ0NvbmZpZy9SdW5DTWFrZVRlc3QuY21ha2UKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmluZFBrZ0NvbmZpZy9SdW5DTWFrZVRlc3QuY21ha2UKQEAgLTEsNSArMSw3IEBACiBpbmNsdWRlKFJ1bkNNYWtlKQogCitydW5fY21ha2UoUGtnQ29uZmlnRG9lc05vdEV4aXN0KQorCiBydW5fY21ha2UoRmluZFBrZ0NvbmZpZ19OT19QS0dDT05GSUdfUEFUSCkKIHJ1bl9jbWFrZShGaW5kUGtnQ29uZmlnX1BLR0NPTkZJR19QQVRIKQogcnVuX2NtYWtlKEZpbmRQa2dDb25maWdfUEtHQ09ORklHX1BBVEhfTk9fQ01BS0VfUEFUSCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbmRTV0lHL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUnVuQ01ha2UvRmluZFNXSUcvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFiMGQyYwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbmRTV0lHL0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsMyBAQAorY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuMTApCitwcm9qZWN0KCR7UnVuQ01ha2VfVEVTVH0gQykKK2luY2x1ZGUoJHtSdW5DTWFrZV9URVNUfS5jbWFrZSkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZpbmRTV0lHL1J1bkNNYWtlVGVzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0ZpbmRTV0lHL1J1bkNNYWtlVGVzdC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjVmN2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvRmluZFNXSUcvUnVuQ01ha2VUZXN0LmNtYWtlCkBAIC0wLDAgKzEsNCBAQAoraW5jbHVkZShSdW5DTWFrZSkKKworcnVuX2NtYWtlKGNvbXBvbmVudHMpCitydW5fY21ha2UobWlzc2luZy1jb21wb25lbnRzKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmluZFNXSUcvY29tcG9uZW50cy1zdGRvdXQudHh0IGIvVGVzdHMvUnVuQ01ha2UvRmluZFNXSUcvY29tcG9uZW50cy1zdGRvdXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NzdiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaW5kU1dJRy9jb21wb25lbnRzLXN0ZG91dC50eHQKQEAgLTAsMCArMSw2IEBACistLSBGb3VuZCBTV0lHOiBbXiBdKyBcKGZvdW5kIHZlcnNpb24gIlswLTkuXSsiXCkgZm91bmQgY29tcG9uZW50czogamF2YSBweXRob24gbWlzc2luZyBjb21wb25lbnRzOiBQRVJMCistLSBTV0lHX1ZFUlNJT049J1swLTkuXSsnCistLSBTV0lHX2phdmFfRk9VTkQ9VFJVRQorLS0gU1dJR19weXRob25fRk9VTkQ9VFJVRQorLS0gU1dJR19QRVJMX0ZPVU5EPQorLS0gQ29uZmlndXJpbmcgZG9uZQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRmluZFNXSUcvY29tcG9uZW50cy5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0ZpbmRTV0lHL2NvbXBvbmVudHMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc5YTgxZQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbmRTV0lHL2NvbXBvbmVudHMuY21ha2UKQEAgLTAsMCArMSw5IEBACisjIE5vdGUgdGhhdCAncGVybCcgd2lsbCBub3QgYmUgZm91bmQgYmVjYXVzZSBpdCBpcyBub3QgbG93ZXJjYXNlLgorZmluZF9wYWNrYWdlKFNXSUcgUkVRVUlSRUQKKyAgQ09NUE9ORU5UUyBqYXZhCisgIE9QVElPTkFMX0NPTVBPTkVOVFMgcHl0aG9uIFBFUkwpCisKK21lc3NhZ2UoU1RBVFVTICJTV0lHX1ZFUlNJT049JyR7U1dJR19WRVJTSU9OfSciKQorZm9yZWFjaChfbGFuZyBqYXZhIHB5dGhvbiBQRVJMKQorICBtZXNzYWdlKFNUQVRVUyAiU1dJR18ke19sYW5nfV9GT1VORD0ke1NXSUdfJHtfbGFuZ31fRk9VTkR9IikKK2VuZGZvcmVhY2goKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0ZpbmRTV0lHL21pc3NpbmctY29tcG9uZW50cy1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0ZpbmRTV0lHL21pc3NpbmctY29tcG9uZW50cy1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaW5kU1dJRy9taXNzaW5nLWNvbXBvbmVudHMtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0ZpbmRTV0lHL21pc3NpbmctY29tcG9uZW50cy1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5Mzc1MzIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GaW5kU1dJRy9taXNzaW5nLWNvbXBvbmVudHMtc3RkZXJyLnR4dApAQCAtMCwwICsxIEBACitDb3VsZCBOT1QgZmluZCBTV0lHIFwobWlzc2luZzogaW52YWxpZFwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9GaW5kU1dJRy9taXNzaW5nLWNvbXBvbmVudHMuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9GaW5kU1dJRy9taXNzaW5nLWNvbXBvbmVudHMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQwNWFlNAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZpbmRTV0lHL21pc3NpbmctY29tcG9uZW50cy5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2ZpbmRfcGFja2FnZShTV0lHIFJFUVVJUkVECisgIENPTVBPTkVOVFMgaW52YWxpZAorICBPUFRJT05BTF9DT01QT05FTlRTIGFsc29pbnZhbGlkKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRnJhbWV3b3JrL0ZyYW1ld29ya011bHRpQ29uZmlnUG9zdGZpeC1idWlsZC1maW5hbC1jaGVjay5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0ZyYW1ld29yay9GcmFtZXdvcmtNdWx0aUNvbmZpZ1Bvc3RmaXgtYnVpbGQtZmluYWwtY2hlY2suY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZmZTZiOAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0ZyYW1ld29yay9GcmFtZXdvcmtNdWx0aUNvbmZpZ1Bvc3RmaXgtYnVpbGQtZmluYWwtY2hlY2suY21ha2UKQEAgLTAsMCArMSw0NSBAQAoraW5jbHVkZSgiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L0ZyYW1ld29ya011bHRpQ29uZmlnUG9zdGZpeEluZm8uY21ha2UiKQorCitnZXRfZmlsZW5hbWVfY29tcG9uZW50KGZyYW1ld29ya19sb2NhdGlvbiAiJHtmcmFtZXdvcmtfZGlyfSIgRElSRUNUT1JZKQorc2V0KG5vbl9leGlzdGVudF9kZWJ1Z19mcmFtZXdvcmtfZGlyICIke2ZyYW1ld29ya19sb2NhdGlvbn0vJHt0YXJnZXRfZmlsZV9uYW1lfV9kZWJ1Zy5mcmFtZXdvcmsiKQorc2V0KGZyYW1ld29ya19yZXNvdXJjZXMgIiR7ZnJhbWV3b3JrX2Rpcn0vUmVzb3VyY2VzIikKK3NldChwbGlzdF9maWxlICIke2ZyYW1ld29ya19yZXNvdXJjZXN9L0luZm8ucGxpc3QiKQorCitzZXQoc3ltbGlua19yZWxlYXNlX3BhdGggIiR7ZnJhbWV3b3JrX2Rpcn0vJHt0YXJnZXRfZmlsZV9uYW1lfSIpCitzZXQoZnJhbWV3b3JrX3JlbGVhc2VfcGF0aCAiJHtmcmFtZXdvcmtfZGlyfS9WZXJzaW9ucy9BLyR7dGFyZ2V0X2ZpbGVfbmFtZX0iKQorCisjIFdoZW4gdXNpbmcgYSBtdWx0aSBjb25maWcgZ2VuZXJhdG9yIChsaWtlIE5pbmphIE11bHRpLUNvbmZpZyBhbmQgWGNvZGUpLAorIyB0aGUgcG9zdGZpeCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIGRlYnVnIGZyYW1ld29yayBsaWJyYXJ5IG5hbWUgYW5kIHRoZSBzeW1saW5rIG5hbWUuCisjIEZvciBzaW5nbGUgY29uZmlnIGdlbmVyYXRvcnMsIHRoZSBuYW1lIHN0YXlzIHRoZSBzYW1lIGFzIHRoZSB0aGUgcmVsZWFzZSBmcmFtZXdvcmsuCitpZihpc19tdWx0aV9jb25maWcpCisgICAgc2V0KHN5bWxpbmtfZGVidWdfcGF0aCAiJHtmcmFtZXdvcmtfZGlyfS8ke3RhcmdldF9maWxlX25hbWV9X2RlYnVnIikKKyAgICBzZXQoZnJhbWV3b3JrX2RlYnVnX3BhdGggIiR7ZnJhbWV3b3JrX2Rpcn0vVmVyc2lvbnMvQS8ke3RhcmdldF9maWxlX25hbWV9X2RlYnVnIikKK2Vsc2UoKQorICAgIHNldChzeW1saW5rX2RlYnVnX3BhdGggIiR7ZnJhbWV3b3JrX2Rpcn0vJHt0YXJnZXRfZmlsZV9uYW1lfSIpCisgICAgc2V0KGZyYW1ld29ya19kZWJ1Z19wYXRoICIke2ZyYW1ld29ya19kaXJ9L1ZlcnNpb25zL0EvJHt0YXJnZXRfZmlsZV9uYW1lfSIpCitlbmRpZigpCisKK2lmKE5PVCBJU19ESVJFQ1RPUlkgJHtmcmFtZXdvcmtfZGlyfSkKKyAgbWVzc2FnZShTRU5EX0VSUk9SICJGcmFtZXdvcmsgZGlyIG5vdCBmb3VuZCBhdCAke2ZyYW1ld29ya19kaXJ9IikKK2VuZGlmKCkKKworaWYoSVNfRElSRUNUT1JZICR7bm9uX2V4aXN0ZW50X2RlYnVnX2ZyYW1ld29ya19kaXJ9KQorICBtZXNzYWdlKFNFTkRfRVJST1IKKyAgICAgICJBIGZyYW1ld29yayBkaXIgd2l0aCBhIGRlYnVnIHN1ZmZpeCBzaG91bGQgbm90IGV4aXN0IGF0ICR7bm9uX2V4aXN0ZW50X2RlYnVnX2ZyYW1ld29ya19kaXJ9IikKK2VuZGlmKCkKKworaWYoTk9UIElTX1NZTUxJTksgIiR7c3ltbGlua19yZWxlYXNlX3BhdGh9IikKKyAgbWVzc2FnZShTRU5EX0VSUk9SICJSZWxlYXNlIGZyYW1ld29yayBzeW1saW5rIG5vdCBmb3VuZCBhdCAke3N5bWxpbmtfcmVsZWFzZV9wYXRofSIpCitlbmRpZigpCisKK2lmKE5PVCBJU19TWU1MSU5LICIke3N5bWxpbmtfZGVidWdfcGF0aH0iKQorICBtZXNzYWdlKFNFTkRfRVJST1IgIkRlYnVnIGZyYW1ld29yayBzeW1saW5rIG5vdCBmb3VuZCBhdCAke3N5bWxpbmtfZGVidWdfcGF0aH0iKQorZW5kaWYoKQorCitpZihOT1QgRVhJU1RTICIke2ZyYW1ld29ya19yZWxlYXNlX3BhdGh9IikKKyAgbWVzc2FnZShTRU5EX0VSUk9SICJSZWxlYXNlIGZyYW1ld29yayBub3QgZm91bmQgYXQgJHtmcmFtZXdvcmtfcmVsZWFzZV9wYXRofSIpCitlbmRpZigpCisKK2lmKE5PVCBFWElTVFMgIiR7ZnJhbWV3b3JrX2RlYnVnX3BhdGh9IikKKyAgbWVzc2FnZShTRU5EX0VSUk9SICJEZWJ1ZyBmcmFtZXdvcmsgbm90IGZvdW5kIGF0ICR7ZnJhbWV3b3JrX2RlYnVnX3BhdGh9IikKK2VuZGlmKCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0ZyYW1ld29yay9GcmFtZXdvcmtNdWx0aUNvbmZpZ1Bvc3RmaXguY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9GcmFtZXdvcmsvRnJhbWV3b3JrTXVsdGlDb25maWdQb3N0Zml4LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZTYyN2QKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9GcmFtZXdvcmsvRnJhbWV3b3JrTXVsdGlDb25maWdQb3N0Zml4LmNtYWtlCkBAIC0wLDAgKzEsMjUgQEAKK2VuYWJsZV9sYW5ndWFnZShDKQorCitzZXQoQ01BS0VfRlJBTUVXT1JLX01VTFRJX0NPTkZJR19QT1NURklYX0RFQlVHICJfZGVidWciKQorCitzZXQoQ01BS0VfTElCUkFSWV9PVVRQVVRfRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9saWIpCitzZXQoQ01BS0VfTElCUkFSWV9PVVRQVVRfRElSRUNUT1JZX0RFQlVHICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9saWIpCitzZXQoQ01BS0VfTElCUkFSWV9PVVRQVVRfRElSRUNUT1JZX1JFTEVBU0UgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2xpYikKK3NldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2JpbikKK3NldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUllfREVCVUcgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2JpbikKK3NldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUllfUkVMRUFTRSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vYmluKQorc2V0KENNQUtFX0FSQ0hJVkVfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vbGliKQorc2V0KENNQUtFX0FSQ0hJVkVfT1VUUFVUX0RJUkVDVE9SWV9ERUJVRyAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vbGliKQorc2V0KENNQUtFX0FSQ0hJVkVfT1VUUFVUX0RJUkVDVE9SWV9SRUxFQVNFICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9saWIpCisKK3NldCh0YXJnZXRfbmFtZSAibXlsaWIiKQorYWRkX2xpYnJhcnkoJHt0YXJnZXRfbmFtZX0gU0hBUkVEIGZvby5jKQorc2V0X3Byb3BlcnR5KFRBUkdFVCAke3RhcmdldF9uYW1lfSBQUk9QRVJUWSBGUkFNRVdPUksgT04pCitnZXRfcHJvcGVydHkoaXNfbXVsdGlfY29uZmlnIEdMT0JBTCBQUk9QRVJUWSBHRU5FUkFUT1JfSVNfTVVMVElfQ09ORklHKQorCitzdHJpbmcoQVBQRU5EIGNvbnRlbnQKKyAgICAgICAic2V0KGlzX211bHRpX2NvbmZpZyBcIiR7aXNfbXVsdGlfY29uZmlnfVwiKVxuIgorICAgICAgICJzZXQoZnJhbWV3b3JrX2RpciBcIiQ8VEFSR0VUX0JVTkRMRV9ESVI6JHt0YXJnZXRfbmFtZX0+XCIpXG4iCisgICAgICAgInNldCh0YXJnZXRfZmlsZV9uYW1lICR7dGFyZ2V0X25hbWV9KVxuIikKK2ZpbGUoR0VORVJBVEUgT1VUUFVUICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9GcmFtZXdvcmtNdWx0aUNvbmZpZ1Bvc3RmaXhJbmZvLmNtYWtlCisgICAgIENPTlRFTlQgIiR7Y29udGVudH0iKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvRnJhbWV3b3JrL1J1bkNNYWtlVGVzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0ZyYW1ld29yay9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggOTY1ZmJmNC4uNmVlNjFhMyAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvRnJhbWV3b3JrL1J1bkNNYWtlVGVzdC5jbWFrZQorKysgYi9UZXN0cy9SdW5DTWFrZS9GcmFtZXdvcmsvUnVuQ01ha2VUZXN0LmNtYWtlCkBAIC00NSwzICs0NSwzOSBAQAogZnJhbWV3b3JrX3R5cGVfdGVzdChpb3MgU1RBVElDIFlFUykKIGZyYW1ld29ya190eXBlX3Rlc3Qob3N4IFNIQVJFRCBZRVMpCiBmcmFtZXdvcmtfdHlwZV90ZXN0KG9zeCBTVEFUSUMgWUVTKQorCitmdW5jdGlvbihmcmFtZXdvcmtfbXVsdGlfY29uZmlnX3Bvc3RmaXhfdGVzdCkKKyAgICBzZXQoY29uZmlndXJlX25hbWUgIkZyYW1ld29ya011bHRpQ29uZmlnUG9zdGZpeCIpCisgICAgc2V0KGJ1aWxkX25hbWUgIiR7Y29uZmlndXJlX25hbWV9LWJ1aWxkLWludGVybWVkaWF0ZSIpCisgICAgc2V0KGJ1aWxkX25hbWVfZmluYWwgIiR7Y29uZmlndXJlX25hbWV9LWJ1aWxkLWZpbmFsIikKKworICAgIGlmKFJ1bkNNYWtlX0dFTkVSQVRPUiBNQVRDSEVTICJOaW5qYSBNdWx0aS1Db25maWciKQorICAgICAgICBzZXQoUnVuQ01ha2VfVEVTVF9PUFRJT05TCisgICAgICAgICAgICAiLURDTUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTPURlYnVnXFw7UmVsZWFzZTstRENNQUtFX0NST1NTX0NPTkZJR1M9YWxsIikKKyAgICBlbHNlaWYoUnVuQ01ha2VfR0VORVJBVE9SIE1BVENIRVMgIlhjb2RlIikKKyAgICAgICAgc2V0KFJ1bkNNYWtlX1RFU1RfT1BUSU9OUworICAgICAgICAgICAgIi1EQ01BS0VfQ09ORklHVVJBVElPTl9UWVBFUz1EZWJ1Z1xcO1JlbGVhc2UiKQorICAgIGVsc2UoKQorICAgICAgICBzZXQoUnVuQ01ha2VfVEVTVF9PUFRJT05TICItRENNQUtFX0JVSUxEX1RZUEU9RGVidWciKQorICAgIGVuZGlmKCkKKworICAgIHNldChSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVIgJHtSdW5DTWFrZV9CSU5BUllfRElSfS8ke2NvbmZpZ3VyZV9uYW1lfSkKKyAgICBzZXQoUnVuQ01ha2VfVEVTVF9OT19DTEVBTiAxKQorCisgICAgZmlsZShSRU1PVkVfUkVDVVJTRSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9IikKKyAgICBmaWxlKE1BS0VfRElSRUNUT1JZICIke1J1bkNNYWtlX1RFU1RfQklOQVJZX0RJUn0iKQorICAgIHJ1bl9jbWFrZSgke2NvbmZpZ3VyZV9uYW1lfSkKKyAgICB1bnNldChSdW5DTWFrZV9URVNUX09QVElPTlMpCisKKyAgICBpZihSdW5DTWFrZV9HRU5FUkFUT1IgTUFUQ0hFUyAiTmluamEgTXVsdGktQ29uZmlnIikKKyAgICAgICAgcnVuX2NtYWtlX2NvbW1hbmQoJHtidWlsZF9uYW1lX2ZpbmFsfSAke0NNQUtFX0NPTU1BTkR9IC0tYnVpbGQgLiAtLXRhcmdldCBhbGw6YWxsKQorICAgIGVsc2VpZihSdW5DTWFrZV9HRU5FUkFUT1IgTUFUQ0hFUyAiWGNvZGUiKQorICAgICAgICBydW5fY21ha2VfY29tbWFuZCgke2J1aWxkX25hbWV9ICR7Q01BS0VfQ09NTUFORH0gLS1idWlsZCAuIC0tY29uZmlnIFJlbGVhc2UpCisgICAgICAgIHJ1bl9jbWFrZV9jb21tYW5kKCR7YnVpbGRfbmFtZX0gJHtDTUFLRV9DT01NQU5EfSAtLWJ1aWxkIC4gLS1jb25maWcgRGVidWcpCisgICAgICAgIHJ1bl9jbWFrZV9jb21tYW5kKCR7YnVpbGRfbmFtZV9maW5hbH0gJHtDTUFLRV9DT01NQU5EfSAtLWJ1aWxkIC4gLS1jb25maWcgRGVidWcpCisgICAgZWxzZSgpCisgICAgICAgIHJ1bl9jbWFrZV9jb21tYW5kKCR7YnVpbGRfbmFtZV9maW5hbH0gJHtDTUFLRV9DT01NQU5EfSAtLWJ1aWxkIC4pCisgICAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQorCitmcmFtZXdvcmtfbXVsdGlfY29uZmlnX3Bvc3RmaXhfdGVzdCgpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0ZUV4cG9ydEhlYWRlci9leHBvcnRoZWFkZXJfdGVzdC5jcHAgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0ZUV4cG9ydEhlYWRlci9leHBvcnRoZWFkZXJfdGVzdC5jcHAKaW5kZXggYmE3NzY3OS4uZGNhYTRmMiAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdGVFeHBvcnRIZWFkZXIvZXhwb3J0aGVhZGVyX3Rlc3QuY3BwCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRlRXhwb3J0SGVhZGVyL2V4cG9ydGhlYWRlcl90ZXN0LmNwcApAQCAtMzIsMTQgKzMyLDE0IEBACiAgICAgLy8gdHJhaWxpbmcgbnVsbCB0byB0aGUgc3RyaW5nIHRoYXQgd2UgbmVlZCB0byBzdHJpcCBiZWZvcmUgdGVzdGluZyBmb3IgYQogICAgIC8vIHRyYWlsaW5nIHNwYWNlLgogICAgIGlmIChyZWZMaW5lLnNpemUoKSAmJiByZWZMaW5lW3JlZkxpbmUuc2l6ZSgpIC0gMV0gPT0gMCkgewotICAgICAgcmVmTGluZSA9IHJlZkxpbmUuc3Vic3RyKDAsIHJlZkxpbmUuc2l6ZSgpIC0gMSk7CisgICAgICByZWZMaW5lLnJlc2l6ZShyZWZMaW5lLnNpemUoKSAtIDEpOwogICAgIH0KICAgICBpZiAodGVzdExpbmUuc2l6ZSgpICYmIHRlc3RMaW5lW3Rlc3RMaW5lLnNpemUoKSAtIDFdID09IDApIHsKLSAgICAgIHRlc3RMaW5lID0gdGVzdExpbmUuc3Vic3RyKDAsIHRlc3RMaW5lLnNpemUoKSAtIDEpOworICAgICAgdGVzdExpbmUucmVzaXplKHRlc3RMaW5lLnNpemUoKSAtIDEpOwogICAgIH0KICAgICAvLyBUaGUgcmVmZXJlbmNlIGZpbGVzIG5ldmVyIGhhdmUgdHJhaWxpbmcgc3BhY2VzOgogICAgIGlmICh0ZXN0TGluZS5zaXplKCkgJiYgdGVzdExpbmVbdGVzdExpbmUuc2l6ZSgpIC0gMV0gPT0gJyAnKSB7Ci0gICAgICB0ZXN0TGluZSA9IHRlc3RMaW5lLnN1YnN0cigwLCB0ZXN0TGluZS5zaXplKCkgLSAxKTsKKyAgICAgIHRlc3RMaW5lLnJlc2l6ZSh0ZXN0TGluZS5zaXplKCkgLSAxKTsKICAgICB9CiAgICAgaWYgKHJlZkxpbmUgIT0gdGVzdExpbmUpIHsKICAgICAgIHN0ZDo6Y291dCA8PCAiUmVmIGFuZCB0ZXN0IGFyZSBub3QgdGhlIHNhbWU6XG4gIFJlZjogIFwiIiA8PCByZWZMaW5lCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9jdXN0b21fY29tbWFuZC1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS1hZGRfY3VzdG9tX2NvbW1hbmQtcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9jdXN0b21fY29tbWFuZC1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9jdXN0b21fY29tbWFuZC1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMGQ0NTgKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2N1c3RvbV9jb21tYW5kLXN0ZGVyci50eHQKQEAgLTAsMCArMSw5IEBACitDTWFrZSBFcnJvciBhdCBMSU5LX0xBTkdVQUdFLWFkZF9jdXN0b21fY29tbWFuZC5jbWFrZToyIFwoYWRkX2N1c3RvbV9jb21tYW5kXCk6CisgIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246CisKKyAgICBcJDxMSU5LX0xBTkdVQUdFPgorCisgIFwkPExJTktfTEFOR1VBR0U6Li4uPiBtYXkgb25seSBiZSB1c2VkIHdpdGggYmluYXJ5IHRhcmdldHMgdG8gc3BlY2lmeSBsaW5rCisgIGxpYnJhcmllcywgbGluayBkaXJlY3RvcmllcywgbGluayBvcHRpb25zIGFuZCBsaW5rIGRlcGVuZHMuCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2N1c3RvbV9jb21tYW5kLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9jdXN0b21fY29tbWFuZC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzc4YzFjCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9jdXN0b21fY29tbWFuZC5jbWFrZQpAQCAtMCwwICsxLDQgQEAKK2FkZF9jdXN0b21fdGFyZ2V0KGRyaXZlKQorYWRkX2N1c3RvbV9jb21tYW5kKFRBUkdFVCBkcml2ZSBQUkVfQlVJTEQKKyAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gJDxMSU5LX0xBTkdVQUdFPgorKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS1hZGRfY3VzdG9tX3RhcmdldC1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS1hZGRfY3VzdG9tX3RhcmdldC1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2N1c3RvbV90YXJnZXQtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS1hZGRfY3VzdG9tX3RhcmdldC1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZGE2MzQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2N1c3RvbV90YXJnZXQtc3RkZXJyLnR4dApAQCAtMCwwICsxLDkgQEAKK0NNYWtlIEVycm9yIGF0IExJTktfTEFOR1VBR0UtYWRkX2N1c3RvbV90YXJnZXQuY21ha2U6MSBcKGFkZF9jdXN0b21fdGFyZ2V0XCk6CisgIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246CisKKyAgICBcJDxMSU5LX0xBTkdVQUdFPgorCisgIFwkPExJTktfTEFOR1VBR0U6Li4uPiBtYXkgb25seSBiZSB1c2VkIHdpdGggYmluYXJ5IHRhcmdldHMgdG8gc3BlY2lmeSBsaW5rCisgIGxpYnJhcmllcywgbGluayBkaXJlY3RvcmllcywgbGluayBvcHRpb25zIGFuZCBsaW5rIGRlcGVuZHMuCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2N1c3RvbV90YXJnZXQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2N1c3RvbV90YXJnZXQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBiNmM3NQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS1hZGRfY3VzdG9tX3RhcmdldC5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2FkZF9jdXN0b21fdGFyZ2V0KGRyaXZlCisgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICQ8TElOS19MQU5HVUFHRT4KKykKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2V4ZWN1dGFibGUtcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2V4ZWN1dGFibGUtcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9leGVjdXRhYmxlLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2V4ZWN1dGFibGUtc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmRjOGU0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9leGVjdXRhYmxlLXN0ZGVyci50eHQKQEAgLTAsMCArMSw5IEBACitDTWFrZSBFcnJvciBhdCBMSU5LX0xBTkdVQUdFLWFkZF9leGVjdXRhYmxlLmNtYWtlOjEgXChhZGRfZXhlY3V0YWJsZVwpOgorICBFcnJvciBldmFsdWF0aW5nIGdlbmVyYXRvciBleHByZXNzaW9uOgorCisgICAgXCQ8TElOS19MQU5HVUFHRT4KKworICBcJDxMSU5LX0xBTkdVQUdFOi4uLj4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoIGJpbmFyeSB0YXJnZXRzIHRvIHNwZWNpZnkgbGluaworICBsaWJyYXJpZXMsIGxpbmsgZGlyZWN0b3JpZXMsIGxpbmsgb3B0aW9ucyBhbmQgbGluayBkZXBlbmRzLgorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9leGVjdXRhYmxlLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9leGVjdXRhYmxlLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNzZiMzkKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2V4ZWN1dGFibGUuY21ha2UKQEAgLTAsMCArMSBAQAorYWRkX2V4ZWN1dGFibGUoZW1wdHkgZW1wdHkuJDxMSU5LX0xBTkdVQUdFPikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2xpYnJhcnktcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2xpYnJhcnktcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9saWJyYXJ5LXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2xpYnJhcnktc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmFjZGViCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9saWJyYXJ5LXN0ZGVyci50eHQKQEAgLTAsMCArMSw5IEBACitDTWFrZSBFcnJvciBhdCBMSU5LX0xBTkdVQUdFLWFkZF9saWJyYXJ5LmNtYWtlOjEgXChhZGRfbGlicmFyeVwpOgorICBFcnJvciBldmFsdWF0aW5nIGdlbmVyYXRvciBleHByZXNzaW9uOgorCisgICAgXCQ8TElOS19MQU5HVUFHRT4KKworICBcJDxMSU5LX0xBTkdVQUdFOi4uLj4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoIGJpbmFyeSB0YXJnZXRzIHRvIHNwZWNpZnkgbGluaworICBsaWJyYXJpZXMsIGxpbmsgZGlyZWN0b3JpZXMsIGxpbmsgb3B0aW9ucyBhbmQgbGluayBkZXBlbmRzLgorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9saWJyYXJ5LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF9saWJyYXJ5LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1M2Y4MmEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX2xpYnJhcnkuY21ha2UKQEAgLTAsMCArMSBAQAorYWRkX2xpYnJhcnkoZW1wdHkgZW1wdHkuJDxMSU5LX0xBTkdVQUdFPikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX3Rlc3QtcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX3Rlc3QtcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF90ZXN0LXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX3Rlc3Qtc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjJlZmRlCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF90ZXN0LXN0ZGVyci50eHQKQEAgLTAsMCArMSw5IEBACitDTWFrZSBFcnJvciBhdCBMSU5LX0xBTkdVQUdFLWFkZF90ZXN0LmNtYWtlOjUgXChhZGRfdGVzdFwpOgorICBFcnJvciBldmFsdWF0aW5nIGdlbmVyYXRvciBleHByZXNzaW9uOgorCisgICAgXCQ8TElOS19MQU5HVUFHRT4KKworICBcJDxMSU5LX0xBTkdVQUdFOi4uLj4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoIGJpbmFyeSB0YXJnZXRzIHRvIHNwZWNpZnkgbGluaworICBsaWJyYXJpZXMsIGxpbmsgZGlyZWN0b3JpZXMsIGxpbmsgb3B0aW9ucyBhbmQgbGluayBkZXBlbmRzLgorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF90ZXN0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWFkZF90ZXN0LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZDU0N2QKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtYWRkX3Rlc3QuY21ha2UKQEAgLTAsMCArMSw1IEBACisKK2luY2x1ZGUoQ1Rlc3QpCitlbmFibGVfdGVzdGluZygpCisKK2FkZF90ZXN0KE5BTUUgZHVtbXkgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gJDxMSU5LX0xBTkdVQUdFPikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtZmlsZV9nZW5lcmF0ZS1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS1maWxlX2dlbmVyYXRlLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS1maWxlX2dlbmVyYXRlLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtZmlsZV9nZW5lcmF0ZS1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZDI2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtZmlsZV9nZW5lcmF0ZS1zdGRlcnIudHh0CkBAIC0wLDAgKzEsOSBAQAorQ01ha2UgRXJyb3IgYXQgTElOS19MQU5HVUFHRS1maWxlX2dlbmVyYXRlLmNtYWtlOjMgXChmaWxlXCk6CisgIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246CisKKyAgICBcJDxMSU5LX0xBTkdVQUdFPgorCisgIFwkPExJTktfTEFOR1VBR0U6Li4uPiBtYXkgb25seSBiZSB1c2VkIHdpdGggYmluYXJ5IHRhcmdldHMgdG8gc3BlY2lmeSBsaW5rCisgIGxpYnJhcmllcywgbGluayBkaXJlY3RvcmllcywgbGluayBvcHRpb25zIGFuZCBsaW5rIGRlcGVuZHMuCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtZmlsZV9nZW5lcmF0ZS5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS1maWxlX2dlbmVyYXRlLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxOWI4ODMKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtZmlsZV9nZW5lcmF0ZS5jbWFrZQpAQCAtMCwwICsxLDYgQEAKK2VuYWJsZV9sYW5ndWFnZShDWFggQykKKworZmlsZShHRU5FUkFURQorICBPVVRQVVQgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L291dHB1dC50eHQKKyAgQ09OVEVOVCAiTEFOR19JU18kPExJTktfTEFOR1VBR0U+XG4iCispCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWluc3RhbGwtcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtaW5zdGFsbC1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtaW5zdGFsbC1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWluc3RhbGwtc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2FmYzMzCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLWluc3RhbGwtc3RkZXJyLnR4dApAQCAtMCwwICsxLDEwIEBACitDTWFrZSBFcnJvcjoKKyAgRXJyb3IgZXZhbHVhdGluZyBnZW5lcmF0b3IgZXhwcmVzc2lvbjoKKworICAgIFwkPExJTktfTEFOR1VBR0U+CisKKyAgXCQ8TElOS19MQU5HVUFHRTouLi4+IG1heSBvbmx5IGJlIHVzZWQgd2l0aCBiaW5hcnkgdGFyZ2V0cyB0byBzcGVjaWZ5IGxpbmsKKyAgbGlicmFyaWVzLCBsaW5rIGRpcmVjdG9yaWVzLCBsaW5rIG9wdGlvbnMgYW5kIGxpbmsgZGVwZW5kcy4KKworCitDTWFrZSBHZW5lcmF0ZSBzdGVwIGZhaWxlZC4gIEJ1aWxkIGZpbGVzIGNhbm5vdCBiZSByZWdlbmVyYXRlZCBjb3JyZWN0bHkuCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtaW5zdGFsbC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS1pbnN0YWxsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzM2MwYjQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtaW5zdGFsbC5jbWFrZQpAQCAtMCwwICsxLDUgQEAKKworaW5zdGFsbChGSUxFUworICBlbXB0eS4kPExJTktfTEFOR1VBR0U+CisgIERFU1RJTkFUSU9OIHNyYworKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS10YXJnZXRfc291cmNlcy1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS10YXJnZXRfc291cmNlcy1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtdGFyZ2V0X3NvdXJjZXMtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS10YXJnZXRfc291cmNlcy1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MTIxY2MKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtdGFyZ2V0X3NvdXJjZXMtc3RkZXJyLnR4dApAQCAtMCwwICsxLDkgQEAKK0NNYWtlIEVycm9yIGF0IExJTktfTEFOR1VBR0UtdGFyZ2V0X3NvdXJjZXMuY21ha2U6MiBcKHRhcmdldF9zb3VyY2VzXCk6CisgIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246CisKKyAgICBcJDxMSU5LX0xBTkdVQUdFPgorCisgIFwkPExJTktfTEFOR1VBR0U6Li4uPiBtYXkgb25seSBiZSB1c2VkIHdpdGggYmluYXJ5IHRhcmdldHMgdG8gc3BlY2lmeSBsaW5rCisgIGxpYnJhcmllcywgbGluayBkaXJlY3RvcmllcywgbGluayBvcHRpb25zIGFuZCBsaW5rIGRlcGVuZHMuCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtdGFyZ2V0X3NvdXJjZXMuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0UtdGFyZ2V0X3NvdXJjZXMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEzNGMwMQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS10YXJnZXRfc291cmNlcy5jbWFrZQpAQCAtMCwwICsxLDIgQEAKK2FkZF9saWJyYXJ5KGVtcHR5KQordGFyZ2V0X3NvdXJjZXMoZW1wdHkgUFJJVkFURSBlbXB0eS4kPExJTktfTEFOR1VBR0U+KQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXVua25vd24tbGFuZy5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS11bmtub3duLWxhbmcuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJhNDcyZAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS11bmtub3duLWxhbmcuY21ha2UKQEAgLTAsMCArMSw0IEBACisKK2VuYWJsZV9sYW5ndWFnZShDKQorYWRkX2V4ZWN1dGFibGUoZW1wdHkgZW1wdHkuYykKK3RhcmdldF9saW5rX29wdGlvbnMoZW1wdHkgUFJJVkFURSAkPCQ8TElOS19MQU5HVUFHRTpDWFg+OiQ8VEFSR0VUX0VYSVNUUzp0b28sbWFueSxwYXJhbWV0ZXJzPj4pCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlMS1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTEtcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlMS1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlMS1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlM2E4M2IKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0Utd3JvbmctdXNhZ2UxLXN0ZGVyci50eHQKQEAgLTAsMCArMSw5IEBACitDTWFrZSBFcnJvciBhdCBMSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlMS5jbWFrZTo0IFwodGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnNcKToKKyAgRXJyb3IgZXZhbHVhdGluZyBnZW5lcmF0b3IgZXhwcmVzc2lvbjoKKworICAgIFwkPExJTktfTEFOR1VBR0U6Qz4KKworICBcJDxMSU5LX0xBTkdVQUdFOi4uLj4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoIGJpbmFyeSB0YXJnZXRzIHRvIHNwZWNpZnkgbGluaworICBsaWJyYXJpZXMsIGxpbmsgZGlyZWN0b3JpZXMsIGxpbmsgb3B0aW9ucyBhbmQgbGluayBkZXBlbmRzLgorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlMS5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTEuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBiN2NlMAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTEuY21ha2UKQEAgLTAsMCArMSw0IEBACisKK2VuYWJsZV9sYW5ndWFnZShDKQorYWRkX2V4ZWN1dGFibGUoZW1wdHkgZW1wdHkuYykKK3RhcmdldF9jb21waWxlX2RlZmluaXRpb25zKGVtcHR5IFBSSVZBVEUgJDwkPExJTktfTEFOR1VBR0U6Qz46REVGPikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0Utd3JvbmctdXNhZ2UyLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlMi1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0Utd3JvbmctdXNhZ2UyLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0Utd3JvbmctdXNhZ2UyLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZlNDMxMAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTItc3RkZXJyLnR4dApAQCAtMCwwICsxLDkgQEAKK0NNYWtlIEVycm9yIGF0IExJTktfTEFOR1VBR0Utd3JvbmctdXNhZ2UyLmNtYWtlOjQgXCh0YXJnZXRfY29tcGlsZV9vcHRpb25zXCk6CisgIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246CisKKyAgICBcJDxMSU5LX0xBTkdVQUdFOkM+CisKKyAgXCQ8TElOS19MQU5HVUFHRTouLi4+IG1heSBvbmx5IGJlIHVzZWQgd2l0aCBiaW5hcnkgdGFyZ2V0cyB0byBzcGVjaWZ5IGxpbmsKKyAgbGlicmFyaWVzLCBsaW5rIGRpcmVjdG9yaWVzLCBsaW5rIG9wdGlvbnMgYW5kIGxpbmsgZGVwZW5kcy4KK0NhbGwgU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgIENNYWtlTGlzdHMudHh0OjMgXChpbmNsdWRlXCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTIuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0Utd3JvbmctdXNhZ2UyLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NjE4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0Utd3JvbmctdXNhZ2UyLmNtYWtlCkBAIC0wLDAgKzEsNCBAQAorCitlbmFibGVfbGFuZ3VhZ2UoQykKK2FkZF9leGVjdXRhYmxlKGVtcHR5IGVtcHR5LmMpCit0YXJnZXRfY29tcGlsZV9vcHRpb25zKGVtcHR5IFBSSVZBVEUgJDwkPExJTktfTEFOR1VBR0U6Qz46LU9QVD4pCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlMy1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTMtcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlMy1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlMy1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMjBlOTkKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0Utd3JvbmctdXNhZ2UzLXN0ZGVyci50eHQKQEAgLTAsMCArMSw5IEBACitDTWFrZSBFcnJvciBhdCBMSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlMy5jbWFrZTo0IFwodGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXNcKToKKyAgRXJyb3IgZXZhbHVhdGluZyBnZW5lcmF0b3IgZXhwcmVzc2lvbjoKKworICAgIFwkPExJTktfTEFOR1VBR0U6Qz4KKworICBcJDxMSU5LX0xBTkdVQUdFOi4uLj4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoIGJpbmFyeSB0YXJnZXRzIHRvIHNwZWNpZnkgbGluaworICBsaWJyYXJpZXMsIGxpbmsgZGlyZWN0b3JpZXMsIGxpbmsgb3B0aW9ucyBhbmQgbGluayBkZXBlbmRzLgorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlMy5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZhNzJhMQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTMuY21ha2UKQEAgLTAsMCArMSw0IEBACisKK2VuYWJsZV9sYW5ndWFnZShDKQorYWRkX2V4ZWN1dGFibGUoZW1wdHkgZW1wdHkuYykKK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGVtcHR5IFBSSVZBVEUgJDwkPExJTktfTEFOR1VBR0U6Qz46L0RJUj4pCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlNC1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTQtcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlNC1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlNC1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlMzY5MTIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0Utd3JvbmctdXNhZ2U0LXN0ZGVyci50eHQKQEAgLTAsMCArMSw4IEBACitDTWFrZSBFcnJvciBhdCBMSU5LX0xBTkdVQUdFLXdyb25nLXVzYWdlNC5jbWFrZTo3IFwodGFyZ2V0X2xpbmtfbGlicmFyaWVzXCk6CisgIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246CisKKyAgICBcJDxMSU5LX0xBTkdVQUdFPgorCisgIFwkPExJTktfTEFOR1VBR0U+IGlzIG5vdCBzdXBwb3J0ZWQgaW4gbGluayBsaWJyYXJpZXMgZXhwcmVzc2lvbi4KK0NhbGwgU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgIENNYWtlTGlzdHMudHh0OjMgXChpbmNsdWRlXCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0Utd3JvbmctdXNhZ2U0LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlY2FhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR1VBR0Utd3JvbmctdXNhZ2U0LmNtYWtlCkBAIC0wLDAgKzEsNyBAQAorCitlbmFibGVfbGFuZ3VhZ2UoQykKKworYWRkX2xpYnJhcnkobGliQyBlbXB0eS5jKQorCithZGRfZXhlY3V0YWJsZShlbXB0eSBlbXB0eS5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKGVtcHR5IFBSSVZBVEUgbGliJDxMSU5LX0xBTkdVQUdFPikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX2N1c3RvbV9jb21tYW5kLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF9jdXN0b21fY29tbWFuZC1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX2N1c3RvbV9jb21tYW5kLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX2N1c3RvbV9jb21tYW5kLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZmNjJiYwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfY3VzdG9tX2NvbW1hbmQtc3RkZXJyLnR4dApAQCAtMCwwICsxLDkgQEAKK0NNYWtlIEVycm9yIGF0IExJTktfTEFOR19BTkRfSUQtYWRkX2N1c3RvbV9jb21tYW5kLmNtYWtlOjIgXChhZGRfY3VzdG9tX2NvbW1hbmRcKToKKyAgRXJyb3IgZXZhbHVhdGluZyBnZW5lcmF0b3IgZXhwcmVzc2lvbjoKKworICAgIFwkPExJTktfTEFOR19BTkRfSUQ6TEFORyxJRD4KKworICBcJDxMSU5LX0xBTkdfQU5EX0lEOmxhbmcsaWQ+IG1heSBvbmx5IGJlIHVzZWQgd2l0aCBiaW5hcnkgdGFyZ2V0cyB0byBzcGVjaWZ5CisgIGxpbmsgbGlicmFyaWVzLCBsaW5rIGRpcmVjdG9yaWVzLCBsaW5rIG9wdGlvbnMsIGFuZCBsaW5rIGRlcGVuZHMuCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX2N1c3RvbV9jb21tYW5kLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF9jdXN0b21fY29tbWFuZC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGY5MjMyCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF9jdXN0b21fY29tbWFuZC5jbWFrZQpAQCAtMCwwICsxLDQgQEAKK2FkZF9jdXN0b21fdGFyZ2V0KGRyaXZlKQorYWRkX2N1c3RvbV9jb21tYW5kKFRBUkdFVCBkcml2ZSBQUkVfQlVJTEQKKyAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gJDxMSU5LX0xBTkdfQU5EX0lEOkxBTkcsSUQ+CispCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF9jdXN0b21fdGFyZ2V0LXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF9jdXN0b21fdGFyZ2V0LXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfY3VzdG9tX3RhcmdldC1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF9jdXN0b21fdGFyZ2V0LXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc0OWM0NAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfY3VzdG9tX3RhcmdldC1zdGRlcnIudHh0CkBAIC0wLDAgKzEsOSBAQAorQ01ha2UgRXJyb3IgYXQgTElOS19MQU5HX0FORF9JRC1hZGRfY3VzdG9tX3RhcmdldC5jbWFrZToyIFwoYWRkX2N1c3RvbV90YXJnZXRcKToKKyAgRXJyb3IgZXZhbHVhdGluZyBnZW5lcmF0b3IgZXhwcmVzc2lvbjoKKworICAgIFwkPExJTktfTEFOR19BTkRfSUQ6TEFORyxJRD4KKworICBcJDxMSU5LX0xBTkdfQU5EX0lEOmxhbmcsaWQ+IG1heSBvbmx5IGJlIHVzZWQgd2l0aCBiaW5hcnkgdGFyZ2V0cyB0byBzcGVjaWZ5CisgIGxpbmsgbGlicmFyaWVzLCBsaW5rIGRpcmVjdG9yaWVzLCBsaW5rIG9wdGlvbnMsIGFuZCBsaW5rIGRlcGVuZHMuCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX2N1c3RvbV90YXJnZXQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX2N1c3RvbV90YXJnZXQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVmNzZiYwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfY3VzdG9tX3RhcmdldC5jbWFrZQpAQCAtMCwwICsxLDQgQEAKKworYWRkX2N1c3RvbV90YXJnZXQoZHJpdmUKKyAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gJDxMSU5LX0xBTkdfQU5EX0lEOkxBTkcsSUQ+CispCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF9leGVjdXRhYmxlLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF9leGVjdXRhYmxlLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfZXhlY3V0YWJsZS1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF9leGVjdXRhYmxlLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk1MzEyYQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfZXhlY3V0YWJsZS1zdGRlcnIudHh0CkBAIC0wLDAgKzEsOSBAQAorQ01ha2UgRXJyb3IgYXQgTElOS19MQU5HX0FORF9JRC1hZGRfZXhlY3V0YWJsZS5jbWFrZToxIFwoYWRkX2V4ZWN1dGFibGVcKToKKyAgRXJyb3IgZXZhbHVhdGluZyBnZW5lcmF0b3IgZXhwcmVzc2lvbjoKKworICAgIFwkPExJTktfTEFOR19BTkRfSUQ6QyxNU1ZDPgorCisgIFwkPExJTktfTEFOR19BTkRfSUQ6bGFuZyxpZD4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoIGJpbmFyeSB0YXJnZXRzIHRvIHNwZWNpZnkKKyAgbGluayBsaWJyYXJpZXMsIGxpbmsgZGlyZWN0b3JpZXMsIGxpbmsgb3B0aW9ucywgYW5kIGxpbmsgZGVwZW5kcy4KK0NhbGwgU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgIENNYWtlTGlzdHMudHh0OjMgXChpbmNsdWRlXCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfZXhlY3V0YWJsZS5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfZXhlY3V0YWJsZS5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDZjNjc0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF9leGVjdXRhYmxlLmNtYWtlCkBAIC0wLDAgKzEsNSBAQAorYWRkX2V4ZWN1dGFibGUoZW1wdHkgbWFpbi5jCisgICAgICAgICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkMsTVNWQz46ZW1wdHkuYz4KKyAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6QyxHTlU+OmVtcHR5Mi5jPgorICAgICAgICAkPCQ8TElOS19MQU5HX0FORF9JRDpDLENsYW5nPjplbXB0eTMuYz4KKyAgICAgICAgKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfbGlicmFyeS1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfbGlicmFyeS1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX2xpYnJhcnktc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfbGlicmFyeS1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNDZlMjgKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX2xpYnJhcnktc3RkZXJyLnR4dApAQCAtMCwwICsxLDkgQEAKK0NNYWtlIEVycm9yIGF0IExJTktfTEFOR19BTkRfSUQtYWRkX2xpYnJhcnkuY21ha2U6MiBcKGFkZF9saWJyYXJ5XCk6CisgIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246CisKKyAgICBcJDxMSU5LX0xBTkdfQU5EX0lEOkMsTVNWQz4KKworICBcJDxMSU5LX0xBTkdfQU5EX0lEOmxhbmcsaWQ+IG1heSBvbmx5IGJlIHVzZWQgd2l0aCBiaW5hcnkgdGFyZ2V0cyB0byBzcGVjaWZ5CisgIGxpbmsgbGlicmFyaWVzLCBsaW5rIGRpcmVjdG9yaWVzLCBsaW5rIG9wdGlvbnMsIGFuZCBsaW5rIGRlcGVuZHMuCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX2xpYnJhcnkuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX2xpYnJhcnkuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxOTljZgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfbGlicmFyeS5jbWFrZQpAQCAtMCwwICsxLDIgQEAKKworYWRkX2xpYnJhcnkoZW1wdHkgZW1wdHkuJDxMSU5LX0xBTkdfQU5EX0lEOkMsTVNWQz4pCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF90ZXN0LXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF90ZXN0LXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfdGVzdC1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWFkZF90ZXN0LXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEyOTQ5MgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfdGVzdC1zdGRlcnIudHh0CkBAIC0wLDAgKzEsOSBAQAorQ01ha2UgRXJyb3IgYXQgTElOS19MQU5HX0FORF9JRC1hZGRfdGVzdC5jbWFrZTo1IFwoYWRkX3Rlc3RcKToKKyAgRXJyb3IgZXZhbHVhdGluZyBnZW5lcmF0b3IgZXhwcmVzc2lvbjoKKworICAgIFwkPExJTktfTEFOR19BTkRfSUQ6Q1hYLEdOVT4KKworICBcJDxMSU5LX0xBTkdfQU5EX0lEOmxhbmcsaWQ+IG1heSBvbmx5IGJlIHVzZWQgd2l0aCBiaW5hcnkgdGFyZ2V0cyB0byBzcGVjaWZ5CisgIGxpbmsgbGlicmFyaWVzLCBsaW5rIGRpcmVjdG9yaWVzLCBsaW5rIG9wdGlvbnMsIGFuZCBsaW5rIGRlcGVuZHMuCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX3Rlc3QuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtYWRkX3Rlc3QuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ3MDBkNwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1hZGRfdGVzdC5jbWFrZQpAQCAtMCwwICsxLDUgQEAKKworaW5jbHVkZShDVGVzdCkKK2VuYWJsZV90ZXN0aW5nKCkKKworYWRkX3Rlc3QoTkFNRSBkdW1teSBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZWNobyAkPExJTktfTEFOR19BTkRfSUQ6Q1hYLEdOVT4pCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWZpbGVfZ2VuZXJhdGUtcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtZmlsZV9nZW5lcmF0ZS1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtZmlsZV9nZW5lcmF0ZS1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWZpbGVfZ2VuZXJhdGUtc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTdiNTVjCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWZpbGVfZ2VuZXJhdGUtc3RkZXJyLnR4dApAQCAtMCwwICsxLDkgQEAKK0NNYWtlIEVycm9yIGF0IExJTktfTEFOR19BTkRfSUQtZmlsZV9nZW5lcmF0ZS5jbWFrZTozIFwoZmlsZVwpOgorICBFcnJvciBldmFsdWF0aW5nIGdlbmVyYXRvciBleHByZXNzaW9uOgorCisgICAgXCQ8TElOS19MQU5HX0FORF9JRDpDLEdOVT4KKworICBcJDxMSU5LX0xBTkdfQU5EX0lEOmxhbmcsaWQ+IG1heSBvbmx5IGJlIHVzZWQgd2l0aCBiaW5hcnkgdGFyZ2V0cyB0byBzcGVjaWZ5CisgIGxpbmsgbGlicmFyaWVzLCBsaW5rIGRpcmVjdG9yaWVzLCBsaW5rIG9wdGlvbnMsIGFuZCBsaW5rIGRlcGVuZHMuCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtZmlsZV9nZW5lcmF0ZS5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1maWxlX2dlbmVyYXRlLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YzFiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtZmlsZV9nZW5lcmF0ZS5jbWFrZQpAQCAtMCwwICsxLDYgQEAKK2VuYWJsZV9sYW5ndWFnZShDWFggQykKKworZmlsZShHRU5FUkFURQorICBPVVRQVVQgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L291dHB1dC50eHQKKyAgQ09OVEVOVCAiTEFOR19JU18kPCQ8TElOS19MQU5HX0FORF9JRDpDLEdOVT46Qz5cbiIKKykKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtaW5zdGFsbC1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1pbnN0YWxsLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1pbnN0YWxsLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtaW5zdGFsbC1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NWY5NzQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtaW5zdGFsbC1zdGRlcnIudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0NNYWtlIEVycm9yOgorICBFcnJvciBldmFsdWF0aW5nIGdlbmVyYXRvciBleHByZXNzaW9uOgorCisgICAgXCQ8TElOS19MQU5HX0FORF9JRDpDLE1TVkM+CisKKyAgXCQ8TElOS19MQU5HX0FORF9JRDpsYW5nLGlkPiBtYXkgb25seSBiZSB1c2VkIHdpdGggYmluYXJ5IHRhcmdldHMgdG8gc3BlY2lmeQorICBsaW5rIGxpYnJhcmllcywgbGluayBkaXJlY3RvcmllcywgbGluayBvcHRpb25zLCBhbmQgbGluayBkZXBlbmRzLgorCisKK0NNYWtlIEdlbmVyYXRlIHN0ZXAgZmFpbGVkLiAgQnVpbGQgZmlsZXMgY2Fubm90IGJlIHJlZ2VuZXJhdGVkIGNvcnJlY3RseS4KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1pbnN0YWxsLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELWluc3RhbGwuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhmOTMyMwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC1pbnN0YWxsLmNtYWtlCkBAIC0wLDAgKzEsNSBAQAorCitpbnN0YWxsKEZJTEVTCisgIGVtcHR5LiQ8TElOS19MQU5HX0FORF9JRDpDLE1TVkM+CisgIERFU1RJTkFUSU9OIHNyYworKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC10YXJnZXRfc291cmNlcy1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC10YXJnZXRfc291cmNlcy1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtdGFyZ2V0X3NvdXJjZXMtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC10YXJnZXRfc291cmNlcy1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NjYwMmEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtdGFyZ2V0X3NvdXJjZXMtc3RkZXJyLnR4dApAQCAtMCwwICsxLDggQEAKK0NNYWtlIEVycm9yIGF0IExJTktfTEFOR19BTkRfSUQtdGFyZ2V0X3NvdXJjZXMuY21ha2U6MiBcKHRhcmdldF9zb3VyY2VzXCk6CisgIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246CisKKyAgICBcJDxMSU5LX0xBTkdfQU5EX0lEPgorCisgIFwkPExJTktfTEFOR19BTkRfSUQ+IGV4cHJlc3Npb24gcmVxdWlyZXMgYXQgbGVhc3QgdHdvIHBhcmFtZXRlcnMuCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtdGFyZ2V0X3NvdXJjZXMuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtdGFyZ2V0X3NvdXJjZXMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE1ZmFmNAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC10YXJnZXRfc291cmNlcy5jbWFrZQpAQCAtMCwwICsxLDIgQEAKK2FkZF9saWJyYXJ5KGVtcHR5KQordGFyZ2V0X3NvdXJjZXMoZW1wdHkgUFJJVkFURSBlbXB0eS4kPExJTktfTEFOR19BTkRfSUQ+KQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELXVua25vd24tbGFuZy5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC11bmtub3duLWxhbmcuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlkZDMzNwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC11bmtub3duLWxhbmcuY21ha2UKQEAgLTAsMCArMSw0IEBACisKK2VuYWJsZV9sYW5ndWFnZShDKQorYWRkX2V4ZWN1dGFibGUoZW1wdHkgZW1wdHkuYykKK3RhcmdldF9saW5rX29wdGlvbnMoZW1wdHkgUFJJVkFURSAkPCQ8TElOS19MQU5HX0FORF9JRDpDWFgsR05VPjokPFRBUkdFVF9FWElTVFM6dG9vLG1hbnkscGFyYW1ldGVycz4+KQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTEtcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtd3JvbmctdXNhZ2UxLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTEtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTEtc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTYxMWMzCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELXdyb25nLXVzYWdlMS1zdGRlcnIudHh0CkBAIC0wLDAgKzEsOSBAQAorQ01ha2UgRXJyb3IgYXQgTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTEuY21ha2U6NCBcKHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zXCk6CisgIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246CisKKyAgICBcJDxMSU5LX0xBTkdfQU5EX0lEOkMsR05VPgorCisgIFwkPExJTktfTEFOR19BTkRfSUQ6bGFuZyxpZD4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoIGJpbmFyeSB0YXJnZXRzIHRvIHNwZWNpZnkKKyAgbGluayBsaWJyYXJpZXMsIGxpbmsgZGlyZWN0b3JpZXMsIGxpbmsgb3B0aW9ucywgYW5kIGxpbmsgZGVwZW5kcy4KK0NhbGwgU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgIENNYWtlTGlzdHMudHh0OjMgXChpbmNsdWRlXCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTEuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtd3JvbmctdXNhZ2UxLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1OGUzYjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELXdyb25nLXVzYWdlMS5jbWFrZQpAQCAtMCwwICsxLDQgQEAKKworZW5hYmxlX2xhbmd1YWdlKEMpCithZGRfZXhlY3V0YWJsZShlbXB0eSBlbXB0eS5jKQordGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoZW1wdHkgUFJJVkFURSAkPCQ8TElOS19MQU5HX0FORF9JRDpDLEdOVT46REVGPikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtd3JvbmctdXNhZ2UyLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELXdyb25nLXVzYWdlMi1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtd3JvbmctdXNhZ2UyLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtd3JvbmctdXNhZ2UyLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNiZGNiMgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTItc3RkZXJyLnR4dApAQCAtMCwwICsxLDkgQEAKK0NNYWtlIEVycm9yIGF0IExJTktfTEFOR19BTkRfSUQtd3JvbmctdXNhZ2UyLmNtYWtlOjQgXCh0YXJnZXRfY29tcGlsZV9vcHRpb25zXCk6CisgIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246CisKKyAgICBcJDxMSU5LX0xBTkdfQU5EX0lEOkMsR05VPgorCisgIFwkPExJTktfTEFOR19BTkRfSUQ6bGFuZyxpZD4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoIGJpbmFyeSB0YXJnZXRzIHRvIHNwZWNpZnkKKyAgbGluayBsaWJyYXJpZXMsIGxpbmsgZGlyZWN0b3JpZXMsIGxpbmsgb3B0aW9ucywgYW5kIGxpbmsgZGVwZW5kcy4KK0NhbGwgU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgIENNYWtlTGlzdHMudHh0OjMgXChpbmNsdWRlXCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTIuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtd3JvbmctdXNhZ2UyLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5OGRhYTkKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtd3JvbmctdXNhZ2UyLmNtYWtlCkBAIC0wLDAgKzEsNCBAQAorCitlbmFibGVfbGFuZ3VhZ2UoQykKK2FkZF9leGVjdXRhYmxlKGVtcHR5IGVtcHR5LmMpCit0YXJnZXRfY29tcGlsZV9vcHRpb25zKGVtcHR5IFBSSVZBVEUgJDwkPExJTktfTEFOR19BTkRfSUQ6QyxHTlU+Oi1PUFQ+KQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTMtcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtd3JvbmctdXNhZ2UzLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTMtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTMtc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzRhMmVhCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9MSU5LX0xBTkdfQU5EX0lELXdyb25nLXVzYWdlMy1zdGRlcnIudHh0CkBAIC0wLDAgKzEsOSBAQAorQ01ha2UgRXJyb3IgYXQgTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTMuY21ha2U6NCBcKHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzXCk6CisgIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246CisKKyAgICBcJDxMSU5LX0xBTkdfQU5EX0lEOkMsR05VPgorCisgIFwkPExJTktfTEFOR19BTkRfSUQ6bGFuZyxpZD4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoIGJpbmFyeSB0YXJnZXRzIHRvIHNwZWNpZnkKKyAgbGluayBsaWJyYXJpZXMsIGxpbmsgZGlyZWN0b3JpZXMsIGxpbmsgb3B0aW9ucywgYW5kIGxpbmsgZGVwZW5kcy4KK0NhbGwgU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgIENNYWtlTGlzdHMudHh0OjMgXChpbmNsdWRlXCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTMuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtd3JvbmctdXNhZ2UzLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NDMwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9HZW5lcmF0b3JFeHByZXNzaW9uL0xJTktfTEFOR19BTkRfSUQtd3JvbmctdXNhZ2UzLmNtYWtlCkBAIC0wLDAgKzEsNCBAQAorCitlbmFibGVfbGFuZ3VhZ2UoQykKK2FkZF9leGVjdXRhYmxlKGVtcHR5IGVtcHR5LmMpCit0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhlbXB0eSBQUklWQVRFICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkMsR05VPjovRElSPikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dlbmVyYXRvckV4cHJlc3Npb24vUnVuQ01ha2VUZXN0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggNjhhMDE3Mi4uNjU1MGY4NCAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9SdW5DTWFrZVRlc3QuY21ha2UKKysrIGIvVGVzdHMvUnVuQ01ha2UvR2VuZXJhdG9yRXhwcmVzc2lvbi9SdW5DTWFrZVRlc3QuY21ha2UKQEAgLTM5LDYgKzM5LDMxIEBACiBydW5fY21ha2UoQ09NUElMRV9MQU5HX0FORF9JRC1hZGRfbGlicmFyeSkKIHJ1bl9jbWFrZShDT01QSUxFX0xBTkdfQU5EX0lELWFkZF90ZXN0KQogcnVuX2NtYWtlKENPTVBJTEVfTEFOR19BTkRfSUQtdW5rbm93bi1sYW5nKQorcnVuX2NtYWtlKExJTktfTEFOR1VBR0UtYWRkX2N1c3RvbV90YXJnZXQpCitydW5fY21ha2UoTElOS19MQU5HVUFHRS1hZGRfY3VzdG9tX2NvbW1hbmQpCitydW5fY21ha2UoTElOS19MQU5HVUFHRS1pbnN0YWxsKQorcnVuX2NtYWtlKExJTktfTEFOR1VBR0UtdGFyZ2V0X3NvdXJjZXMpCitydW5fY21ha2UoTElOS19MQU5HVUFHRS1hZGRfZXhlY3V0YWJsZSkKK3J1bl9jbWFrZShMSU5LX0xBTkdVQUdFLWFkZF9saWJyYXJ5KQorcnVuX2NtYWtlKExJTktfTEFOR1VBR0UtYWRkX3Rlc3QpCitydW5fY21ha2UoTElOS19MQU5HVUFHRS11bmtub3duLWxhbmcpCitydW5fY21ha2UoTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTEpCitydW5fY21ha2UoTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTIpCitydW5fY21ha2UoTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTMpCitydW5fY21ha2UoTElOS19MQU5HVUFHRS13cm9uZy11c2FnZTQpCitydW5fY21ha2UoTElOS19MQU5HVUFHRS1maWxlX2dlbmVyYXRlKQorcnVuX2NtYWtlKExJTktfTEFOR19BTkRfSUQtYWRkX2N1c3RvbV90YXJnZXQpCitydW5fY21ha2UoTElOS19MQU5HX0FORF9JRC1hZGRfY3VzdG9tX2NvbW1hbmQpCitydW5fY21ha2UoTElOS19MQU5HX0FORF9JRC1pbnN0YWxsKQorcnVuX2NtYWtlKExJTktfTEFOR19BTkRfSUQtdGFyZ2V0X3NvdXJjZXMpCitydW5fY21ha2UoTElOS19MQU5HX0FORF9JRC1hZGRfZXhlY3V0YWJsZSkKK3J1bl9jbWFrZShMSU5LX0xBTkdfQU5EX0lELWFkZF9saWJyYXJ5KQorcnVuX2NtYWtlKExJTktfTEFOR19BTkRfSUQtYWRkX3Rlc3QpCitydW5fY21ha2UoTElOS19MQU5HX0FORF9JRC11bmtub3duLWxhbmcpCitydW5fY21ha2UoTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTEpCitydW5fY21ha2UoTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTIpCitydW5fY21ha2UoTElOS19MQU5HX0FORF9JRC13cm9uZy11c2FnZTMpCitydW5fY21ha2UoTElOS19MQU5HX0FORF9JRC1maWxlX2dlbmVyYXRlKQogcnVuX2NtYWtlKFRBUkdFVF9GSUxFLXJlY3Vyc2lvbikKIHJ1bl9jbWFrZShPVVRQVVRfTkFNRS1yZWN1cnNpb24pCiBydW5fY21ha2UoVEFSR0VUX0ZJTEVfUFJFRklYKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0LWNvbmZpZ3VyYXRpb24tZGVidWctc3Rkb3V0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC1jb25maWd1cmF0aW9uLWRlYnVnLXN0ZG91dC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY1ZDFhNQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC1jb25maWd1cmF0aW9uLWRlYnVnLXN0ZG91dC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IHByb2plY3QgLipHb29nbGVUZXN0LWRpc2NvdmVyeS1tdWx0aS1jb25maWcKK1sgXHRdKlRlc3QgI1swLTldKzogY29uZmlndXJhdGlvblwuY2FzZV9yZWxlYXNlIFwoRGlzYWJsZWRcKQorWyBcdF0qVGVzdCAjWzAtOV0rOiBjb25maWd1cmF0aW9uXC5jYXNlX2RlYnVnCisrCitUb3RhbCBUZXN0czogMgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0LWNvbmZpZ3VyYXRpb24tcmVsZWFzZS1zdGRvdXQudHh0IGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0LWNvbmZpZ3VyYXRpb24tcmVsZWFzZS1zdGRvdXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOTE2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QtY29uZmlndXJhdGlvbi1yZWxlYXNlLXN0ZG91dC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0IHByb2plY3QgLipHb29nbGVUZXN0LWRpc2NvdmVyeS1tdWx0aS1jb25maWcKK1sgXHRdKlRlc3QgI1swLTldKzogY29uZmlndXJhdGlvblwuY2FzZV9yZWxlYXNlCitbIFx0XSpUZXN0ICNbMC05XSs6IGNvbmZpZ3VyYXRpb25cLmNhc2VfZGVidWcgXChEaXNhYmxlZFwpCisrCitUb3RhbCBUZXN0czogMgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0LWRpc2NvdmVyeS10aW1lb3V0LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QtZGlzY292ZXJ5LVBPU1RfQlVJTEQtdGltZW91dC1idWlsZC1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0LWRpc2NvdmVyeS10aW1lb3V0LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QtZGlzY292ZXJ5LVBPU1RfQlVJTEQtdGltZW91dC1idWlsZC1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QtZGlzY292ZXJ5LXRpbWVvdXQtc3Rkb3V0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC1kaXNjb3ZlcnktUE9TVF9CVUlMRC10aW1lb3V0LWJ1aWxkLXN0ZG91dC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFRlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC1kaXNjb3ZlcnktdGltZW91dC1zdGRvdXQudHh0CnJlbmFtZSB0byBUZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QtZGlzY292ZXJ5LVBPU1RfQlVJTEQtdGltZW91dC1idWlsZC1zdGRvdXQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QtZGlzY292ZXJ5LXRpbWVvdXQtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC1kaXNjb3ZlcnktUE9TVF9CVUlMRC10aW1lb3V0LXRlc3QtcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0LWRpc2NvdmVyeS10aW1lb3V0LXJlc3VsdC50eHQKcmVuYW1lIHRvIFRlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC1kaXNjb3ZlcnktUE9TVF9CVUlMRC10aW1lb3V0LXRlc3QtcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0LWRpc2NvdmVyeS1QT1NUX0JVSUxELXRpbWVvdXQtdGVzdC1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0LWRpc2NvdmVyeS1QT1NUX0JVSUxELXRpbWVvdXQtdGVzdC1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2YmU5MzkKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QtZGlzY292ZXJ5LVBPU1RfQlVJTEQtdGltZW91dC10ZXN0LXN0ZGVyci50eHQKQEAgLTAsMCArMSwyIEBACitVbmFibGUgdG8gZmluZCBleGVjdXRhYmxlOiBkaXNjb3ZlcnlfdGltZW91dF90ZXN0X05PVF9CVUlMVAorRXJyb3JzIHdoaWxlIHJ1bm5pbmcgQ1Rlc3QKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC1kaXNjb3ZlcnktUE9TVF9CVUlMRC10aW1lb3V0LXRlc3Qtc3Rkb3V0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC1kaXNjb3ZlcnktUE9TVF9CVUlMRC10aW1lb3V0LXRlc3Qtc3Rkb3V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWRlM2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0LWRpc2NvdmVyeS1QT1NUX0JVSUxELXRpbWVvdXQtdGVzdC1zdGRvdXQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3QgcHJvamVjdCAuKkdvb2dsZVRlc3QtZGlzY292ZXJ5LXRpbWVvdXQKK1sgXHRdKlN0YXJ0IFswLTldKzogZGlzY292ZXJ5X3RpbWVvdXRfdGVzdF9OT1RfQlVJTFQKK0NvdWxkIG5vdCBmaW5kIGV4ZWN1dGFibGUgZGlzY292ZXJ5X3RpbWVvdXRfdGVzdF9OT1RfQlVJTFQKK0xvb2tlZCBpbiB0aGUgZm9sbG93aW5nIHBsYWNlczoKK2Rpc2NvdmVyeV90aW1lb3V0X3Rlc3RfTk9UX0JVSUxUCitkaXNjb3ZlcnlfdGltZW91dF90ZXN0X05PVF9CVUlMVChcLmV4ZSk/CitEZWJ1Zy9kaXNjb3ZlcnlfdGltZW91dF90ZXN0X05PVF9CVUlMVAorRGVidWcvZGlzY292ZXJ5X3RpbWVvdXRfdGVzdF9OT1RfQlVJTFQoXC5leGUpPworRGVidWcvZGlzY292ZXJ5X3RpbWVvdXRfdGVzdF9OT1RfQlVJTFQKK0RlYnVnL2Rpc2NvdmVyeV90aW1lb3V0X3Rlc3RfTk9UX0JVSUxUKFwuZXhlKT8KK1teXG5dK2Rpc2NvdmVyeV90aW1lb3V0X3Rlc3RfTk9UX0JVSUxUICtcLitcKlwqXCpOb3QgUnVuICtbMC05Ll0rIHNlYworKworMCUgdGVzdHMgcGFzc2VkLCAxIHRlc3RzIGZhaWxlZCBvdXQgb2YgMQorKworVG90YWwgVGVzdCB0aW1lIFwocmVhbFwpID0gICArWzAtOS5dKyBzZWMKKysKK1RoZSBmb2xsb3dpbmcgdGVzdHMgRkFJTEVEOgorW15cbl0rZGlzY292ZXJ5X3RpbWVvdXRfdGVzdF9OT1RfQlVJTFQgXChOb3QgUnVuXCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC1kaXNjb3ZlcnktUFJFX1RFU1QtdGltZW91dC10ZXN0LXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QtZGlzY292ZXJ5LVBSRV9URVNULXRpbWVvdXQtdGVzdC1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YWZlNGEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QtZGlzY292ZXJ5LVBSRV9URVNULXRpbWVvdXQtdGVzdC1zdGRlcnIudHh0CkBAIC0wLDAgKzEsOCBAQAorQ01ha2UgRXJyb3IgYXQgLipHb29nbGVUZXN0QWRkVGVzdHMuY21ha2U6WzAtOV0rIFwobWVzc2FnZVwpOgorWyBcdF0qRXJyb3IgcnVubmluZyB0ZXN0IGV4ZWN1dGFibGUuCisrCitbIFx0XSpQYXRoOiAnLipkaXNjb3ZlcnlfdGltZW91dF90ZXN0KFwuZXhlKT8nCitbIFx0XSpSZXN1bHQ6IFByb2Nlc3MgdGVybWluYXRlZCBkdWUgdG8gdGltZW91dAorWyBcdF0qT3V0cHV0OgorWyBcdF0qdGltZW91dC4KK1sgXHRdKmNhc2UKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC1kaXNjb3ZlcnktUFJFX1RFU1QtdGltZW91dC10ZXN0LXN0ZG91dC50eHQgYi9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QtZGlzY292ZXJ5LVBSRV9URVNULXRpbWVvdXQtdGVzdC1zdGRvdXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NTA2MWYKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QtZGlzY292ZXJ5LVBSRV9URVNULXRpbWVvdXQtdGVzdC1zdGRvdXQudHh0CkBAIC0wLDAgKzEgQEAKK1Rlc3QgcHJvamVjdCAuKkdvb2dsZVRlc3QtZGlzY292ZXJ5LXRpbWVvdXQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdC5jbWFrZQppbmRleCAzMTgwOGM2Li40YmM2YjlkIDEwMDY0NAotLS0gYS9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3QuY21ha2UKKysrIGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0LmNtYWtlCkBAIC00OSwxMSArNDksMyBAQAogICBESVNDT1ZFUllfVElNRU9VVCAyMAogICBQUk9QRVJUSUVTIFRJTUVPVVQgMgogKQotCi1hZGRfZXhlY3V0YWJsZShkaXNjb3ZlcnlfdGltZW91dF90ZXN0IHRpbWVvdXRfdGVzdC5jcHApCi10YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhkaXNjb3ZlcnlfdGltZW91dF90ZXN0IFBSSVZBVEUgZGlzY292ZXJ5U2xlZXBTZWM9MTApCi1ndGVzdF9kaXNjb3Zlcl90ZXN0cygKLSAgZGlzY292ZXJ5X3RpbWVvdXRfdGVzdAotICBURVNUX1BSRUZJWCBkaXNjb3ZlcnlfCi0gIERJU0NPVkVSWV9USU1FT1VUIDIKLSkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdERpc2NvdmVyeU11bHRpQ29uZmlnLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0RGlzY292ZXJ5TXVsdGlDb25maWcuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkxOWRjMQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdERpc2NvdmVyeU11bHRpQ29uZmlnLmNtYWtlCkBAIC0wLDAgKzEsMTQgQEAKK3Byb2plY3QodGVzdF9pbmNsdWRlX2RpcnMpCitpbmNsdWRlKENUZXN0KQoraW5jbHVkZShHb29nbGVUZXN0KQorCitlbmFibGVfdGVzdGluZygpCisKK2FkZF9leGVjdXRhYmxlKGNvbmZpZ3VyYXRpb25fZ3Rlc3QgY29uZmlndXJhdGlvbl9ndGVzdC5jcHApCit0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhjb25maWd1cmF0aW9uX2d0ZXN0IFBSSVZBVEUgJDwkPENPTkZJRzpEZWJ1Zz46REVCVUc9MT4pCisKK2d0ZXN0X2Rpc2NvdmVyX3Rlc3RzKAorICBjb25maWd1cmF0aW9uX2d0ZXN0CisgIFBST1BFUlRJRVMgTEFCRUxTIENPTkZJRworICBESVNDT1ZFUllfTU9ERSBQUkVfVEVTVAorKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0RGlzY292ZXJ5VGltZW91dC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdERpc2NvdmVyeVRpbWVvdXQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM5OGZhZgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvR29vZ2xlVGVzdERpc2NvdmVyeVRpbWVvdXQuY21ha2UKQEAgLTAsMCArMSwxNCBAQAorcHJvamVjdCh0ZXN0X2luY2x1ZGVfZGlycykKK2luY2x1ZGUoQ1Rlc3QpCitpbmNsdWRlKEdvb2dsZVRlc3QpCisKK2VuYWJsZV90ZXN0aW5nKCkKKworYWRkX2V4ZWN1dGFibGUoZGlzY292ZXJ5X3RpbWVvdXRfdGVzdCB0aW1lb3V0X3Rlc3QuY3BwKQordGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoZGlzY292ZXJ5X3RpbWVvdXRfdGVzdCBQUklWQVRFIGRpc2NvdmVyeVNsZWVwU2VjPTEwKQorZ3Rlc3RfZGlzY292ZXJfdGVzdHMoCisgIGRpc2NvdmVyeV90aW1lb3V0X3Rlc3QKKyAgVEVTVF9QUkVGSVggZGlzY292ZXJ5XworICBESVNDT1ZFUllfVElNRU9VVCAyCisgIERJU0NPVkVSWV9NT0RFICR7RElTQ09WRVJZX01PREV9CispCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3RYTUwtcmVzdWx0LWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0WE1MLXJlc3VsdC1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmZkYWMzCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0WE1MLXJlc3VsdC1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDQgQEAKK3NldChSRVNVTFRfRklMRSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L0dvb2dsZVRlc3RYTUwuRm9vLnhtbCIpCitpZihOT1QgRVhJU1RTICR7UkVTVUxUX0ZJTEV9KQorICBzZXQoUnVuQ01ha2VfVEVTVF9GQUlMRUQgIlJlc3VsdCBYTUwgZmlsZSAke1JFU1VMVF9GSUxFfSB3YXMgbm90IGNyZWF0ZWQiKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0WE1MLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9Hb29nbGVUZXN0WE1MLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NmRlNjMKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L0dvb2dsZVRlc3RYTUwuY21ha2UKQEAgLTAsMCArMSwxMSBAQAorcHJvamVjdCh0ZXN0X2luY2x1ZGVfZGlycykKK2luY2x1ZGUoQ1Rlc3QpCitpbmNsdWRlKEdvb2dsZVRlc3QpCisKK2VuYWJsZV90ZXN0aW5nKCkKKworYWRkX2V4ZWN1dGFibGUoeG1sX291dHB1dCB4bWxfb3V0cHV0LmNwcCkKK2d0ZXN0X2Rpc2NvdmVyX3Rlc3RzKAorICB4bWxfb3V0cHV0CisgIFhNTF9PVVRQVVRfRElSICR7Q01BS0VfQklOQVJZX0RJUn0KKykKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvUnVuQ01ha2VUZXN0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggMGZhNGUyYS4uNmI5ZDQ1OCAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9SdW5DTWFrZVRlc3QuY21ha2UKKysrIGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9SdW5DTWFrZVRlc3QuY21ha2UKQEAgLTEsNiArMSw2IEBACiBpbmNsdWRlKFJ1bkNNYWtlKQogCi1mdW5jdGlvbihydW5fR29vZ2xlVGVzdCkKK2Z1bmN0aW9uKHJ1bl9Hb29nbGVUZXN0IERJU0NPVkVSWV9NT0RFKQogICAjIFVzZSBhIHNpbmdsZSBidWlsZCB0cmVlIGZvciBhIGZldyB0ZXN0cyB3aXRob3V0IGNsZWFuaW5nLgogICBzZXQoUnVuQ01ha2VfVEVTVF9CSU5BUllfRElSICR7UnVuQ01ha2VfQklOQVJZX0RJUn0vR29vZ2xlVGVzdC1idWlsZCkKICAgc2V0KFJ1bkNNYWtlX1RFU1RfTk9fQ0xFQU4gMSkKQEAgLTEwLDcgKzEwLDcgQEAKICAgZmlsZShSRU1PVkVfUkVDVVJTRSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9IikKICAgZmlsZShNQUtFX0RJUkVDVE9SWSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9IikKIAotICBydW5fY21ha2UoR29vZ2xlVGVzdCkKKyAgcnVuX2NtYWtlX3dpdGhfb3B0aW9ucyhHb29nbGVUZXN0IC1EQ01BS0VfR1RFU1RfRElTQ09WRVJfVEVTVFNfRElTQ09WRVJZX01PREU9JHtESVNDT1ZFUllfTU9ERX0pCiAKICAgcnVuX2NtYWtlX2NvbW1hbmQoR29vZ2xlVGVzdC1idWlsZAogICAgICR7Q01BS0VfQ09NTUFORH0KQEAgLTI2LDE1ICsyNiw2IEBACiAgICAgLS10YXJnZXQgcHJvcGVydHlfdGltZW91dF90ZXN0CiAgICkKIAotICBzZXQoUnVuQ01ha2VfVEVTVF9PVVRQVVRfTUVSR0UgMSkKLSAgcnVuX2NtYWtlX2NvbW1hbmQoR29vZ2xlVGVzdC1kaXNjb3ZlcnktdGltZW91dAotICAgICR7Q01BS0VfQ09NTUFORH0KLSAgICAtLWJ1aWxkIC4KLSAgICAtLWNvbmZpZyBEZWJ1ZwotICAgIC0tdGFyZ2V0IGRpc2NvdmVyeV90aW1lb3V0X3Rlc3QKLSAgKQotICBzZXQoUnVuQ01ha2VfVEVTVF9PVVRQVVRfTUVSR0UgMCkKLQogICBydW5fY21ha2VfY29tbWFuZChHb29nbGVUZXN0LXRlc3QxCiAgICAgJHtDTUFLRV9DVEVTVF9DT01NQU5EfQogICAgIC1DIERlYnVnCkBAIC03MSw0ICs2MiwxMDcgQEAKICAgKQogZW5kZnVuY3Rpb24oKQogCi1ydW5fR29vZ2xlVGVzdCgpCitmdW5jdGlvbihydW5fR29vZ2xlVGVzdFhNTCBESVNDT1ZFUllfTU9ERSkKKyAgIyBVc2UgYSBzaW5nbGUgYnVpbGQgdHJlZSBmb3IgYSBmZXcgdGVzdHMgd2l0aG91dCBjbGVhbmluZy4KKyAgc2V0KFJ1bkNNYWtlX1RFU1RfQklOQVJZX0RJUiAke1J1bkNNYWtlX0JJTkFSWV9ESVJ9L0dvb2dsZVRlc3RYTUwtYnVpbGQpCisgIHNldChSdW5DTWFrZV9URVNUX05PX0NMRUFOIDEpCisgIGlmKE5PVCBSdW5DTWFrZV9HRU5FUkFUT1JfSVNfTVVMVElfQ09ORklHKQorICAgIHNldChSdW5DTWFrZV9URVNUX09QVElPTlMgLURDTUFLRV9CVUlMRF9UWVBFPURlYnVnKQorICBlbmRpZigpCisgIGZpbGUoUkVNT1ZFX1JFQ1VSU0UgIiR7UnVuQ01ha2VfVEVTVF9CSU5BUllfRElSfSIpCisgIGZpbGUoTUFLRV9ESVJFQ1RPUlkgIiR7UnVuQ01ha2VfVEVTVF9CSU5BUllfRElSfSIpCisKKyAgcnVuX2NtYWtlX3dpdGhfb3B0aW9ucyhHb29nbGVUZXN0WE1MIC1EQ01BS0VfR1RFU1RfRElTQ09WRVJfVEVTVFNfRElTQ09WRVJZX01PREU9JHtESVNDT1ZFUllfTU9ERX0pCisKKyAgcnVuX2NtYWtlX2NvbW1hbmQoR29vZ2xlVGVzdFhNTC1kaXNjb3ZlcnkKKyAgJHtDTUFLRV9DT01NQU5EfQorICAtLWJ1aWxkIC4KKyAgLS1jb25maWcgRGVidWcKKyAgLS10YXJnZXQgeG1sX291dHB1dAorICApCisKKyAgcnVuX2NtYWtlX2NvbW1hbmQoR29vZ2xlVGVzdFhNTC1yZXN1bHQKKyAgJHtDTUFLRV9DVEVTVF9DT01NQU5EfQorICAtQyBEZWJ1ZworICAtUiBHb29nbGVUZXN0WE1MCisgIC0tbm8tbGFiZWwtc3VtbWFyeQorICApCitlbmRmdW5jdGlvbigpCisKK2Z1bmN0aW9uKHJ1bl9Hb29nbGVUZXN0X2Rpc2NvdmVyeV90aW1lb3V0IERJU0NPVkVSWV9NT0RFKQorICAjIFVzZSBhIHNpbmdsZSBidWlsZCB0cmVlIGZvciBhIGZldyB0ZXN0cyB3aXRob3V0IGNsZWFuaW5nLgorICBzZXQoUnVuQ01ha2VfVEVTVF9CSU5BUllfRElSICR7UnVuQ01ha2VfQklOQVJZX0RJUn0vR29vZ2xlVGVzdC1kaXNjb3ZlcnktdGltZW91dCkKKyAgc2V0KFJ1bkNNYWtlX1RFU1RfTk9fQ0xFQU4gMSkKKyAgaWYoTk9UIFJ1bkNNYWtlX0dFTkVSQVRPUl9JU19NVUxUSV9DT05GSUcpCisgICAgc2V0KFJ1bkNNYWtlX1RFU1RfT1BUSU9OUyAtRENNQUtFX0JVSUxEX1RZUEU9RGVidWcpCisgIGVuZGlmKCkKKyAgZmlsZShSRU1PVkVfUkVDVVJTRSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9IikKKyAgZmlsZShNQUtFX0RJUkVDVE9SWSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9IikKKworICBydW5fY21ha2Vfd2l0aF9vcHRpb25zKEdvb2dsZVRlc3REaXNjb3ZlcnlUaW1lb3V0IC1ERElTQ09WRVJZX01PREU9JHtESVNDT1ZFUllfTU9ERX0pCisKKyAgc2V0KFJ1bkNNYWtlX1RFU1RfT1VUUFVUX01FUkdFIDEpCisgIHJ1bl9jbWFrZV9jb21tYW5kKEdvb2dsZVRlc3QtZGlzY292ZXJ5LSR7RElTQ09WRVJZX01PREV9LXRpbWVvdXQtYnVpbGQKKyAgICAke0NNQUtFX0NPTU1BTkR9CisgICAgLS1idWlsZCAuCisgICAgLS1jb25maWcgRGVidWcKKyAgICAtLXRhcmdldCBkaXNjb3ZlcnlfdGltZW91dF90ZXN0CisgICkKKyAgc2V0KFJ1bkNNYWtlX1RFU1RfT1VUUFVUX01FUkdFIDApCisKKyAgcnVuX2NtYWtlX2NvbW1hbmQoR29vZ2xlVGVzdC1kaXNjb3ZlcnktJHtESVNDT1ZFUllfTU9ERX0tdGltZW91dC10ZXN0CisgICAgJHtDTUFLRV9DVEVTVF9DT01NQU5EfQorICAgIC1DIERlYnVnCisgICAgLVIgZGlzY292ZXJ5X3RpbWVvdXRfdGVzdAorICAgIC0tbm8tbGFiZWwtc3VtYXJ5CisgICkKK2VuZGZ1bmN0aW9uKCkKKworZnVuY3Rpb24ocnVuX0dvb2dsZVRlc3RfZGlzY292ZXJ5X211bHRpX2NvbmZpZykKKyAgIyBVc2UgYSBzaW5nbGUgYnVpbGQgdHJlZSBmb3IgYSBmZXcgdGVzdHMgd2l0aG91dCBjbGVhbmluZy4KKyAgc2V0KFJ1bkNNYWtlX1RFU1RfQklOQVJZX0RJUiAke1J1bkNNYWtlX0JJTkFSWV9ESVJ9L0dvb2dsZVRlc3QtZGlzY292ZXJ5LW11bHRpLWNvbmZpZykKKyAgc2V0KFJ1bkNNYWtlX1RFU1RfTk9fQ0xFQU4gMSkKKyAgZmlsZShSRU1PVkVfUkVDVVJTRSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9IikKKyAgZmlsZShNQUtFX0RJUkVDVE9SWSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9IikKKworICBydW5fY21ha2UoR29vZ2xlVGVzdERpc2NvdmVyeU11bHRpQ29uZmlnKQorCisgIHJ1bl9jbWFrZV9jb21tYW5kKEdvb2dsZVRlc3QtYnVpbGQtcmVsZWFzZQorICAgICR7Q01BS0VfQ09NTUFORH0KKyAgICAtLWJ1aWxkIC4KKyAgICAtLWNvbmZpZyBSZWxlYXNlCisgICAgLS10YXJnZXQgY29uZmlndXJhdGlvbl9ndGVzdAorICApCisgIHJ1bl9jbWFrZV9jb21tYW5kKEdvb2dsZVRlc3QtYnVpbGQtZGVidWcKKyAgICAke0NNQUtFX0NPTU1BTkR9CisgICAgLS1idWlsZCAuCisgICAgLS1jb25maWcgRGVidWcKKyAgICAtLXRhcmdldCBjb25maWd1cmF0aW9uX2d0ZXN0CisgICkKKyAgcnVuX2NtYWtlX2NvbW1hbmQoR29vZ2xlVGVzdC1jb25maWd1cmF0aW9uLXJlbGVhc2UKKyAgICAke0NNQUtFX0NURVNUX0NPTU1BTkR9CisgICAgLUMgUmVsZWFzZQorICAgIC1MIENPTkZJRworICAgIC1OCisgICkKKyAgcnVuX2NtYWtlX2NvbW1hbmQoR29vZ2xlVGVzdC1jb25maWd1cmF0aW9uLWRlYnVnCisgICAgJHtDTUFLRV9DVEVTVF9DT01NQU5EfQorICAgIC1DIERlYnVnCisgICAgLUwgQ09ORklHCisgICAgLU4KKyAgKQorCitlbmRmdW5jdGlvbigpCisKK2ZvcmVhY2goRElTQ09WRVJZX01PREUgUE9TVF9CVUlMRCBQUkVfVEVTVCkKKyAgbWVzc2FnZSgiVGVzdGluZyAke0RJU0NPVkVSWV9NT0RFfSBkaXNjb3ZlcnkgbW9kZSB2aWEgQ01BS0VfR1RFU1RfRElTQ09WRVJfVEVTVFNfRElTQ09WRVJZX01PREUgZ2xvYmFsIG92ZXJyaWRlLi4uIikKKyAgcnVuX0dvb2dsZVRlc3QoJHtESVNDT1ZFUllfTU9ERX0pCisgIHJ1bl9Hb29nbGVUZXN0WE1MKCR7RElTQ09WRVJZX01PREV9KQorICBtZXNzYWdlKCJUZXN0aW5nICR7RElTQ09WRVJZX01PREV9IGRpc2NvdmVyeSBtb2RlIHZpYSBESVNDT1ZFUllfTU9ERSBvcHRpb24uLi4iKQorICBydW5fR29vZ2xlVGVzdF9kaXNjb3ZlcnlfdGltZW91dCgke0RJU0NPVkVSWV9NT0RFfSkKK2VuZGZvcmVhY2goKQorCitpZihSdW5DTWFrZV9HRU5FUkFUT1JfSVNfTVVMVElfQ09ORklHKQorICBtZXNzYWdlKCJUZXN0aW5nIFBSRV9URVNUIGRpc2NvdmVyeSBtdWx0aSBjb25maWd1cmF0aW9uLi4uIikKKyAgcnVuX0dvb2dsZVRlc3RfZGlzY292ZXJ5X211bHRpX2NvbmZpZygpCitlbmRpZigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L2NvbmZpZ3VyYXRpb25fZ3Rlc3QuY3BwIGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9jb25maWd1cmF0aW9uX2d0ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2JiMTM0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC9jb25maWd1cmF0aW9uX2d0ZXN0LmNwcApAQCAtMCwwICsxLDIzIEBACisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgIC8vIE5vdGU6IEdvb2dsZVRlc3QuY21ha2UgZG9lc24ndCBhY3R1YWxseSBkZXBlbmQgb24gR29vZ2xlIFRlc3QgYXMgc3VjaDsKKyAgLy8gaXQgb25seSByZXF1aXJlcyB0aGF0IHdlIHByb2R1Y2VzIG91dHB1dCBpbiB0aGUgZXhwZWN0ZWQgZm9ybWF0IHdoZW4KKyAgLy8gaW52b2tlZCB3aXRoIC0tZ3Rlc3RfbGlzdF90ZXN0cy4gVGh1cywgd2UgZmFrZSB0aGF0IGhlcmUuIFRoaXMgYWxsb3dzIHVzCisgIC8vIHRvIHRlc3QgdGhlIG1vZHVsZSB3aXRob3V0IGFjdHVhbGx5IG5lZWRpbmcgR29vZ2xlIFRlc3QuCisgIGlmIChhcmdjID4gMSAmJiBzdGQ6OnN0cmluZyhhcmd2WzFdKSA9PSAiLS1ndGVzdF9saXN0X3Rlc3RzIikgeworICAgIHN0ZDo6Y291dCA8PCAiY29uZmlndXJhdGlvbi4iIDw8IHN0ZDo6ZW5kbDsKKyNpZmRlZiBERUJVRworICAgIHN0ZDo6Y291dCA8PCAiICBESVNBQkxFRF9jYXNlX3JlbGVhc2UiIDw8IHN0ZDo6ZW5kbDsKKyAgICBzdGQ6OmNvdXQgPDwgIiAgY2FzZV9kZWJ1ZyIgPDwgc3RkOjplbmRsOworI2Vsc2UKKyAgICBzdGQ6OmNvdXQgPDwgIiAgY2FzZV9yZWxlYXNlIiA8PCBzdGQ6OmVuZGw7CisgICAgc3RkOjpjb3V0IDw8ICIgIERJU0FCTEVEX2Nhc2VfZGVidWciIDw8IHN0ZDo6ZW5kbDsKKyNlbmRpZgorICAgIHJldHVybiAwOworICB9CisKKyAgcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L3RpbWVvdXRfdGVzdC5jcHAgYi9UZXN0cy9SdW5DTWFrZS9Hb29nbGVUZXN0L3RpbWVvdXRfdGVzdC5jcHAKaW5kZXggYjhhZDA1NS4uNTUwNjI2OSAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC90aW1lb3V0X3Rlc3QuY3BwCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QvdGltZW91dF90ZXN0LmNwcApAQCAtNCw5ICs0LDEwIEBACiAjICBpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSA8c3RkaW8uaD4KKwogdm9pZCBzbGVlcEZvcih1bnNpZ25lZCBzZWNvbmRzKQogewogI2lmIGRlZmluZWQoX1dJTjMyKQpAQCAtMjMsOCArMjQsOCBAQAogICAvLyBpbnZva2VkIHdpdGggLS1ndGVzdF9saXN0X3Rlc3RzLiBUaHVzLCB3ZSBmYWtlIHRoYXQgaGVyZS4gVGhpcyBhbGxvd3MgdXMKICAgLy8gdG8gdGVzdCB0aGUgbW9kdWxlIHdpdGhvdXQgYWN0dWFsbHkgbmVlZGluZyBHb29nbGUgVGVzdC4KICAgaWYgKGFyZ2MgPiAxICYmIHN0ZDo6c3RyaW5nKGFyZ3ZbMV0pID09ICItLWd0ZXN0X2xpc3RfdGVzdHMiKSB7Ci0gICAgc3RkOjpjb3V0IDw8ICJ0aW1lb3V0LiIgPDwgc3RkOjplbmRsOwotICAgIHN0ZDo6Y291dCA8PCAiICBjYXNlIiA8PCBzdGQ6OmVuZGw7CisgICAgcHJpbnRmKCJ0aW1lb3V0LlxuICBjYXNlXG4iKTsKKyAgICBmZmx1c2goc3Rkb3V0KTsKICNpZmRlZiBkaXNjb3ZlcnlTbGVlcFNlYwogICAgIHNsZWVwRm9yKGRpc2NvdmVyeVNsZWVwU2VjKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvR29vZ2xlVGVzdC94bWxfb3V0cHV0LmNwcCBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QveG1sX291dHB1dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEzMDIzMQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL0dvb2dsZVRlc3QveG1sX291dHB1dC5jcHAKQEAgLTAsMCArMSwyNiBAQAorI2luY2x1ZGUgPGZzdHJlYW0+CisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8c3RyaW5nPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgIC8vIE5vdGU6IEdvb2dsZVRlc3RYTUwuY21ha2UgZG9lc24ndCBhY3R1YWxseSBkZXBlbmQgb24gR29vZ2xlIFRlc3QgYXMgc3VjaDsKKyAgLy8gaXQgb25seSBtaW1pY2tzIHRoZSBvdXRwdXQgZmlsZSBjcmVhdGlvbiB1c2luZyB0aGUgcGF0aCBwYXNzZWQgdG8gdGhpcworICAvLyB0ZXN0IHdpdGhvdXQgYW55IGNvbnRlbnQKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKKyAgICBzdGQ6OnN0cmluZyBwYXJhbShhcmd2W2ldKTsKKyAgICBpZiAocGFyYW0uZmluZCgiLS1ndGVzdF9saXN0X3Rlc3RzIikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgIC8vIFRoaXMgYWN0dWFsbHkgZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBwYXNzZWQgaW4gdGhlIDJuZCBydW4KKyAgICAgIHN0ZDo6Y291dCA8PCAiR29vZ2xlVGVzdFhNTC4iIDw8IHN0ZDo6ZW5kbDsKKyAgICAgIHN0ZDo6Y291dCA8PCAiICBGb28iIDw8IHN0ZDo6ZW5kbDsKKyAgICB9IGVsc2UgaWYgKHBhcmFtLmZpbmQoIi0tZ3Rlc3Rfb3V0cHV0PXhtbDoiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzcGxpdCA9IHBhcmFtLmZpbmQoIjoiKTsKKyAgICAgIHN0ZDo6c3RyaW5nIGZpbGVwYXRoID0gcGFyYW0uc3Vic3RyKHNwbGl0ICsgMSk7CisgICAgICAvLyBUaGUgZnVsbCBmaWxlIHBhdGggaXMgcGFzc2VkCisgICAgICBzdGQ6Om9mc3RyZWFtIG9zdHJtKGZpbGVwYXRoLmNfc3RyKCksIHN0ZDo6aW9zOjpiaW5hcnkpOworICAgICAgb3N0cm0gPDwgIi0tZ3Rlc3Rfb3V0cHV0PXhtbDogbW9ja3VwIGZpbGVcbiI7CisgICAgfQorICB9CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktFUl9MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CnJlbmFtZSB0byBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS0VSX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LRVJfTEFOR1VBR0UtZ2VuZXgtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LRVJfTEFOR1VBR0UtZ2VuZXgtc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWJmNzZhCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktFUl9MQU5HVUFHRS1nZW5leC1zdGRlcnIudHh0CkBAIC0wLDAgKzEsOSBAQAorQ01ha2UgRXJyb3IgYXQgTElOS0VSX0xBTkdVQUdFLWdlbmV4LmNtYWtlOlswLTldKyBcKHRhcmdldF9saW5rX2xpYnJhcmllc1wpOgorICBFcnJvciBldmFsdWF0aW5nIGdlbmVyYXRvciBleHByZXNzaW9uOgorCisgICAgXCQ8VEFSR0VUX1BST1BFUlRZOkxJTktFUl9MQU5HVUFHRT4KKworICBMSU5LRVJfTEFOR1VBR0UgdGFyZ2V0IHByb3BlcnR5IGNhbiBub3QgYmUgdXNlZCB3aGlsZSBldmFsdWF0aW5nIGxpbmsKKyAgbGlicmFyaWVzIGZvciBhIHN0YXRpYyBsaWJyYXJ5CitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDpbMC05XSsgXChpbmNsdWRlXCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktFUl9MQU5HVUFHRS1nZW5leC5jbWFrZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXguY21ha2UKcmVuYW1lIHRvIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LRVJfTEFOR1VBR0UtZ2VuZXguY21ha2UKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1zdGRlcnIudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2MwMDJlLi4wMDAwMDAwCi0tLSBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXN0ZGVyci50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLUNNYWtlIEVycm9yIGF0IExJTktfTEFOR1VBR0UtZ2VuZXguY21ha2U6WzAtOV0rIFwodGFyZ2V0X2xpbmtfbGlicmFyaWVzXCk6Ci0gIEVycm9yIGV2YWx1YXRpbmcgZ2VuZXJhdG9yIGV4cHJlc3Npb246Ci0KLSAgICBcJDxUQVJHRVRfUFJPUEVSVFk6TElOS0VSX0xBTkdVQUdFPgotCi0gIExJTktFUl9MQU5HVUFHRSB0YXJnZXQgcHJvcGVydHkgY2FuIG5vdCBiZSB1c2VkIHdoaWxlIGV2YWx1YXRpbmcgbGluawotICBsaWJyYXJpZXMgZm9yIGEgc3RhdGljIGxpYnJhcnkKLUNhbGwgU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6Ci0gIENNYWtlTGlzdHMudHh0OlswLTldKyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL1J1bkNNYWtlVGVzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggMmE1MzRiMy4uNDgyMTZlOSAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL1J1bkNNYWtlVGVzdC5jbWFrZQorKysgYi9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvUnVuQ01ha2VUZXN0LmNtYWtlCkBAIC0xLDcgKzEsNyBAQAogaW5jbHVkZShSdW5DTWFrZSkKIAogcnVuX2NtYWtlKE5vTGFuZ1NIQVJFRCkKLXJ1bl9jbWFrZShMSU5LX0xBTkdVQUdFLWdlbmV4KQorcnVuX2NtYWtlKExJTktFUl9MQU5HVUFHRS1nZW5leCkKIHJ1bl9jbWFrZShsaW5rLWxpYnJhcmllcy1UQVJHRVRfRklMRS1nZW5leCkKIHJ1bl9jbWFrZShsaW5rLWxpYnJhcmllcy1UQVJHRVRfRklMRS1nZW5leC1vaykKIApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvUHJlY29tcGlsZUhlYWRlcnMvUGNoV2FybkludmFsaWQtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9QcmVjb21waWxlSGVhZGVycy9QY2hXYXJuSW52YWxpZC1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTdmYjMwCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvUHJlY29tcGlsZUhlYWRlcnMvUGNoV2FybkludmFsaWQtY2hlY2suY21ha2UKQEAgLTAsMCArMSwyMiBAQAoraWYgKE5PVCBDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIkdOVXxJbnRlbCIgT1IKKyAgIChDTUFLRV9DX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJJbnRlbCIgQU5EIENNQUtFX0hPU1RfV0lOMzIpKQorICByZXR1cm4oKQorZW5kaWYoKQorCitmaWxlKFNUUklOR1MgJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L2NvbXBpbGVfY29tbWFuZHMuanNvbiBlbXB0eV9kaXJfY29tbWFuZHMKKyAgICAgUkVHRVggImNvbW1hbmQuKi1XaW52YWxpZC1wY2guKmVtcHR5LmRpci9jbWFrZV9wY2guaCIpCitmaWxlKFNUUklOR1MgJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L2NvbXBpbGVfY29tbWFuZHMuanNvbiBmb29fZGlyX2NvbW1hbmRzCisgICAgIFJFR0VYICJjb21tYW5kLiotV2ludmFsaWQtcGNoLipmb28uZGlyL2NtYWtlX3BjaC5oIikKKworbGlzdChMRU5HVEggZW1wdHlfZGlyX2NvbW1hbmRzIGVtcHR5X2Rpcl9jb21tYW5kc19zaXplKQorbGlzdChMRU5HVEggZm9vX2Rpcl9jb21tYW5kcyBmb29fZGlyX2NvbW1hbmRzX3NpemUpCisKK2lmIChlbXB0eV9kaXJfY29tbWFuZHNfc2l6ZSBFUVVBTCAwKQorICBzZXQoUnVuQ01ha2VfVEVTVF9GQUlMRUQgImVtcHR5IHRhcmdldCBzaG91bGQgaGF2ZSAtV2ludmFsaWQtcGNoIGNvbXBpbGUgb3B0aW9uIHByZXNlbnQiKQorICByZXR1cm4oKQorZW5kaWYoKQorCitpZiAoZm9vX2Rpcl9jb21tYW5kc19zaXplIEdSRUFURVIgMCkKKyAgc2V0KFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJmb28gdGFyZ2V0IHNob3VsZCBub3QgaGF2ZSAtV2ludmFsaWQtcGNoIGNvbXBpbGUgb3B0aW9uIHByZXNlbnQiKQorICByZXR1cm4oKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvUHJlY29tcGlsZUhlYWRlcnMvUGNoV2FybkludmFsaWQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9QcmVjb21waWxlSGVhZGVycy9QY2hXYXJuSW52YWxpZC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTI1NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvUHJlY29tcGlsZUhlYWRlcnMvUGNoV2FybkludmFsaWQuY21ha2UKQEAgLTAsMCArMSwxNiBAQAorZW5hYmxlX2xhbmd1YWdlKEMpCisKK3NldChDTUFLRV9FWFBPUlRfQ09NUElMRV9DT01NQU5EUyBPTikKKworYWRkX2xpYnJhcnkoZW1wdHkgZW1wdHkuYykKK3RhcmdldF9wcmVjb21waWxlX2hlYWRlcnMoZW1wdHkgUFVCTElDCisgIDxzdGRpby5oPgorICA8c3RyaW5nLmg+CispCisKK2FkZF9saWJyYXJ5KGZvbyBmb28uYykKK3RhcmdldF9wcmVjb21waWxlX2hlYWRlcnMoZm9vIFBVQkxJQworICA8c3RkaW8uaD4KKyAgPHN0cmluZy5oPgorKQorc2V0X3RhcmdldF9wcm9wZXJ0aWVzKGZvbyBQUk9QRVJUSUVTIFBDSF9XQVJOX0lOVkFMSUQgT0ZGKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvUHJlY29tcGlsZUhlYWRlcnMvUnVuQ01ha2VUZXN0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvUHJlY29tcGlsZUhlYWRlcnMvUnVuQ01ha2VUZXN0LmNtYWtlCmluZGV4IGY1ODdjN2QuLjNmNjg0ZmMgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1J1bkNNYWtlL1ByZWNvbXBpbGVIZWFkZXJzL1J1bkNNYWtlVGVzdC5jbWFrZQorKysgYi9UZXN0cy9SdW5DTWFrZS9QcmVjb21waWxlSGVhZGVycy9SdW5DTWFrZVRlc3QuY21ha2UKQEAgLTIxLDMgKzIxLDYgQEAKIHJ1bl90ZXN0KFBjaFJldXNlRnJvbVByZWZpeGVkKQogcnVuX3Rlc3QoUGNoUmV1c2VGcm9tU3ViZGlyKQogcnVuX2NtYWtlKFBjaE11bHRpbGFuZ3VhZ2UpCitpZihSdW5DTWFrZV9HRU5FUkFUT1IgTUFUQ0hFUyAiTWFrZXxOaW5qYSIpCisgIHJ1bl9jbWFrZShQY2hXYXJuSW52YWxpZCkKK2VuZGlmKCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL1N5bnRheC9Db21tYW5kRU9GLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9TeW50YXgvQ29tbWFuZEVPRi1zdGRlcnIudHh0CmluZGV4IDMxY2JjMDguLmI5ZjhmZDEgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1J1bkNNYWtlL1N5bnRheC9Db21tYW5kRU9GLXN0ZGVyci50eHQKKysrIGIvVGVzdHMvUnVuQ01ha2UvU3ludGF4L0NvbW1hbmRFT0Ytc3RkZXJyLnR4dApAQCAtMSw0ICsxLDQgQEAKLV5DTWFrZSBFcnJvciBpbiBDb21tYW5kRU9GLmNtYWtlOgorXkNNYWtlIEVycm9yIGF0IENvbW1hbmRFT0YuY21ha2U6MToKICAgVW5leHBlY3RlZCBlbmQgb2YgZmlsZS4KIAogICBQYXJzZSBlcnJvci4gIEZ1bmN0aW9uIG1pc3Npbmcgb3BlbmluZyAiXCgiLgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvQ1NoYXJwU291cmNlR3JvdXAvZm9vLmNzIGIvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvQ1NoYXJwU291cmNlR3JvdXAvZm9vLmNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2OTVkYzkKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9DU2hhcnBTb3VyY2VHcm91cC9mb28uY3MKQEAgLTAsMCArMSwzIEBACit2b2lkIGZvbygpCit7Cit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9DU2hhcnBTb3VyY2VHcm91cC9pbWFnZXMvZW1wdHkuYm1wIGIvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvQ1NoYXJwU291cmNlR3JvdXAvaW1hZ2VzL2VtcHR5LmJtcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvQ1NoYXJwU291cmNlR3JvdXAvaW1hZ2VzL2VtcHR5LmJtcApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvQ1NoYXJwU291cmNlR3JvdXAvbmVzdGVkL2Jhei5jcyBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L0NTaGFycFNvdXJjZUdyb3VwL25lc3RlZC9iYXouY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVkMzM0YQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L0NTaGFycFNvdXJjZUdyb3VwL25lc3RlZC9iYXouY3MKQEAgLTAsMCArMSwzIEBACit2b2lkIGJheigpCit7Cit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9SdW5DTWFrZVRlc3QuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggOGEwNGY3OC4uNWNjY2EwMSAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvUnVuQ01ha2VUZXN0LmNtYWtlCisrKyBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L1J1bkNNYWtlVGVzdC5jbWFrZQpAQCAtMywxMiArMywxMiBAQAogaW5jbHVkZShSdW5DTWFrZSkKIGNtYWtlX3BvbGljeShTRVQgQ01QMDA1NCBORVcpCiAKK3J1bl9jbWFrZShWc0NzaGFycFNvdXJjZUdyb3VwKQogcnVuX2NtYWtlKFZzQ1NoYXJwQ29tcGlsZXJPcHRzKQogcnVuX2NtYWtlKEV4cGxpY2l0Q01ha2VMaXN0cykKIHJ1bl9jbWFrZShSdW50aW1lTGlicmFyeSkKIHJ1bl9jbWFrZShTb3VyY2VHcm91cENNYWtlTGlzdHMpCiBydW5fY21ha2UoU291cmNlR3JvdXBUcmVlQ01ha2VMaXN0cykKLQogcnVuX2NtYWtlKFZzQ29uZmlndXJhdGlvblR5cGUpCiBydW5fY21ha2UoVnNUYXJnZXRzRmlsZVJlZmVyZW5jZXMpCiBydW5fY21ha2UoVnNDdXN0b21Qcm9wcykKQEAgLTMwLDYgKzMwLDkgQEAKIHJ1bl9jbWFrZShWc0RwaUF3YXJlQmFkUGFyYW0pCiBydW5fY21ha2UoVnNQcmVjb21waWxlSGVhZGVycykKIHJ1bl9jbWFrZShWc1ByZWNvbXBpbGVIZWFkZXJzUmV1c2VGcm9tQ29tcGlsZVBEQk5hbWUpCitydW5fY21ha2UoVnNEZXBsb3lFbmFibGVkKQorcnVuX2NtYWtlKFZzU2V0dGluZ3MpCitydW5fY21ha2UoVnNTb3VyY2VTZXR0aW5nc1Rvb2wpCiAKIHJ1bl9jbWFrZShWc1dpblJUQnlEZWZhdWx0KQogCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc0NzaGFycFNvdXJjZUdyb3VwLWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvVnNDc2hhcnBTb3VyY2VHcm91cC1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjVjNzBmCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvVnNDc2hhcnBTb3VyY2VHcm91cC1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDIyIEBACitzZXQoY3NQcm9qRmlsZSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L1ZzQ3NoYXJwU291cmNlR3JvdXAuY3Nwcm9qIikKK2lmKE5PVCBFWElTVFMgIiR7Y3NQcm9qRmlsZX0iKQorICBzZXQoUnVuQ01ha2VfVEVTVF9GQUlMRUQgIlByb2plY3QgZmlsZSAke2NzUHJvakZpbGV9IGRvZXMgbm90IGV4aXN0LiIpCisgIHJldHVybigpCitlbmRpZigpCisKK2ZpbGUoU1RSSU5HUyAiJHtjc1Byb2pGaWxlfSIgbGluZXMpCisKK2luY2x1ZGUoJHtSdW5DTWFrZV9URVNUX1NPVVJDRV9ESVJ9L1ZzQ3NoYXJwU291cmNlR3JvdXBIZWxwZXJzLmNtYWtlKQorCitzZXQoU09VUkNFX0dST1VQU19UT19GSU5ECisgICJDU2hhcnBTb3VyY2VHcm91cCIKKyAgIkNTaGFycFNvdXJjZUdyb3VwL25lc3RlZCIKKyAgIkltYWdlcyIKKykKKworZm9yZWFjaChHUk9VUF9OQU1FIElOIExJU1RTICR7U09VUkNFX0dST1VQU19UT19GSU5EfSkKKyAgZmluZF9zb3VyY2VfZ3JvdXAoIiR7bGluZXN9IiAke0dST1VQX05BTUV9KQorICBpZihOT1QgJHtTT1VSQ0VfR1JPVVBfRk9VTkR9KQorICAgIHJldHVybigpCisgIGVuZGlmKCkKK2VuZGZvcmVhY2goKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvVnNDc2hhcnBTb3VyY2VHcm91cC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L1ZzQ3NoYXJwU291cmNlR3JvdXAuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI0OTkzYwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L1ZzQ3NoYXJwU291cmNlR3JvdXAuY21ha2UKQEAgLTAsMCArMSwxNiBAQAorZW5hYmxlX2xhbmd1YWdlKENTaGFycCkKK3NldChDTUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTIERlYnVnKQorCitzZXQoU1JDX0ZJTEVTCisgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9DU2hhcnBTb3VyY2VHcm91cC9mb28uY3MKKyAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L0NTaGFycFNvdXJjZUdyb3VwL25lc3RlZC9iYXouY3MKKykKKworc2V0KElNQUdFX0ZJTEVTCisgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9DU2hhcnBTb3VyY2VHcm91cC9JbWFnZXMvZW1wdHkuYm1wCispCisKK2FkZF9saWJyYXJ5KFZzQ3NoYXJwU291cmNlR3JvdXAgU0hBUkVEICR7U1JDX0ZJTEVTfSAke0lNQUdFX0ZJTEVTfSkKK3NvdXJjZV9ncm91cCgiQ1NoYXJwU291cmNlR3JvdXAiIEZJTEVTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9DU2hhcnBTb3VyY2VHcm91cC9mb28uY3MpCitzb3VyY2VfZ3JvdXAoIkNTaGFycFNvdXJjZUdyb3VwL25lc3RlZCIgRklMRVMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L0NTaGFycFNvdXJjZUdyb3VwL25lc3RlZC9iYXouY3MpCitzb3VyY2VfZ3JvdXAoIkltYWdlcyIgRklMRVMgJHtJTUFHRV9GSUxFU30pCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc0NzaGFycFNvdXJjZUdyb3VwSGVscGVycy5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L1ZzQ3NoYXJwU291cmNlR3JvdXBIZWxwZXJzLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYTlhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc0NzaGFycFNvdXJjZUdyb3VwSGVscGVycy5jbWFrZQpAQCAtMCwwICsxLDE1IEBACitmdW5jdGlvbihmaW5kX3NvdXJjZV9ncm91cCBMSU5FUyBOQU1FKQorICBzZXQoZm91bmRTb3VyY2VHcm91cExpbmsgMCkKKyAgZm9yZWFjaChsaW5lIElOIExJU1RTIExJTkVTKQorICAgIGlmKGxpbmUgTUFUQ0hFUyAiPExpbms+JHtOQU1FfTwvTGluaz4iKQorICAgICAgc2V0KGZvdW5kU291cmNlR3JvdXBMaW5rIDEpCisgICAgZW5kaWYoKQorICBlbmRmb3JlYWNoKCkKKworICBpZihOT1QgZm91bmRTb3VyY2VHcm91cExpbmspCisgICAgc2V0KFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJTb3VyY2UgZ3JvdXAgbGluayBmb3IgJHtOQU1FfSBub3QgZm91bmQuIiBQQVJFTlRfU0NPUEUpCisgICAgc2V0KFNPVVJDRV9HUk9VUF9GT1VORCAwIFBBUkVOVF9TQ09QRSkKKyAgICByZXR1cm4oKQorICBlbmRpZigpCisgIHNldChTT1VSQ0VfR1JPVVBfRk9VTkQgMSBQQVJFTlRfU0NPUEUpCitlbmRmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc0RlcGxveUVuYWJsZWQtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc0RlcGxveUVuYWJsZWQtY2hlY2suY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZmODY3OAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L1ZzRGVwbG95RW5hYmxlZC1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDU4IEBACitzZXQodmNQcm9qZWN0RmlsZSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L2Zvby52Y3hwcm9qIikKK2lmKE5PVCBFWElTVFMgIiR7dmNQcm9qZWN0RmlsZX0iKQorICBzZXQoUnVuQ01ha2VfVEVTVF9GQUlMRUQgIlByb2plY3QgZmlsZSAke3ZjUHJvamVjdEZpbGV9IGRvZXMgbm90IGV4aXN0LiIpCisgIHJldHVybigpCitlbmRpZigpCisjCisjIFRlc3Qgc29sdXRpb24gZmlsZSBmb3IgZGVwbG95bWVudC4KKyMKKworc2V0KHZjU2xuRmlsZSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L1ZzRGVwbG95RW5hYmxlZC5zbG4iKQoraWYoTk9UIEVYSVNUUyAiJHt2Y1NsbkZpbGV9IikKKyAgc2V0KFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJTb2x1dGlvbiBmaWxlICR7dmNTbG5GaWxlfSBkb2VzIG5vdCBleGlzdC4iKQorICByZXR1cm4oKQorZW5kaWYoKQorCisKKworc2V0KEZvb1Byb2pHVUlEICIiKQorc2V0KEZvdW5kRm9vUHJvaiBGQUxTRSkKK3NldChJbkZvb1Byb2ogRkFMU0UpCitzZXQoRm91bmRSZWxlYXNlRGVwbG95IEZBTFNFKQorc2V0KERlcGxveUNvbmZpZ3MgRGVidWcgTWluU2l6ZVJlbCBSZWxXaXRoRGViSW5mbyApCisKK2ZpbGUoU1RSSU5HUyAiJHt2Y1NsbkZpbGV9IiBsaW5lcykKK2ZvcmVhY2gobGluZSBJTiBMSVNUUyBsaW5lcykKKyNtZXNzYWdlKFNUQVRVUyAiJHtsaW5lfSIpCisgIGlmKCAoTk9UIEluRm9vUHJvaiApIEFORCAobGluZSBNQVRDSEVTICJeWyBcXHRdKlByb2plY3RcXChcIntbQS1GMC05LV0rfVwiXFwpID0gXCJmb29cIiwgXCJmb28udmN4cHJvalwiLCBcIih7W0EtRjAtOS1dK30pXCJbIFxcdF0qJCIpKQorICAgICMgRmlyc3QsIGlkZW50aWZ5IHRoZSBHVUlEIGZvciB0aGUgZm9vIHByb2plY3QsIGFuZCByZWNvcmQgaXQuCisgICAgc2V0KEZvdW5kRm9vUHJvaiBUUlVFKQorICAgIHNldChJbkZvb1Byb2ogVFJVRSkKKyAgICBzZXQoRm9vUHJvakdVSUQgJHtDTUFLRV9NQVRDSF8xfSkKKyAgZWxzZWlmKEluRm9vUHJvaiBBTkQgbGluZSBNQVRDSEVTICJFbmRQcm9qZWN0IikKKyAgICBzZXQoSW5Gb29Qcm9qIEZBTFNFKQorICBlbHNlaWYoKE5PVCBJbkZvb1Byb2opIEFORCBsaW5lIE1BVENIRVMgIiR7Rm9vUHJvakdVSUR9XFwuUmVsZWFzZS4qXFwuRGVwbG95XFwuMCIpCisgICAgIyBJZiBmb28ncyBSZWxlYXNlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGRlcGxveSwgdGhpcyBpcyB0aGUgZXJyb3IuCisgICAgc2V0KEZvdW5kUmVsZWFzZURlcGxveSBUUlVFKQorICBlbmRpZigpCisgIGlmKCBsaW5lIE1BVENIRVMgIntbQS1GMC05LV0rfVxcLihbXlxcfF0rKS4qXFwuRGVwbG95XFwuMCIgKQorICAgICMgQ2hlY2sgdGhhdCB0aGUgb3RoZXIgY29uZmlndXJhdGlvbnMgQVJFIHNldCB0byBkZXBsb3kuCisgICAgbGlzdCggUkVNT1ZFX0lURU0gRGVwbG95Q29uZmlncyAke0NNQUtFX01BVENIXzF9KQorICBlbmRpZigpCitlbmRmb3JlYWNoKCkKKworaWYoRm91bmRSZWxlYXNlRGVwbG95KQorICBzZXQoUnVuQ01ha2VfVEVTVF9GQUlMRUQgIlJlbGVhc2UgZGVwbG95bWVudCBlbmFibGVkLiIpCisgIHJldHVybigpCitlbmRpZigpCisKK2lmKE5PVCBGb3VuZEZvb1Byb2opCisgIHNldChSdW5DTWFrZV9URVNUX0ZBSUxFRCAiRmFpbGVkIHRvIGZpbmQgZm9vIHByb2plY3QgaW4gdGhlIHNvbHV0aW9uLiIpCisgIHJldHVybigpCitlbmRpZigpCisKK2xpc3QoTEVOR1RIIERlcGxveUNvbmZpZ3MgbGVuZ3RoKQoraWYoICBsZW5ndGggR1JFQVRFUiAwICkKKyAgc2V0KFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJGYWlsZWQgdG8gZmluZCBEZXBsb3kgbGluZXMgZm9yIG5vbi1SZWxlYXNlIGNvbmZpZ3VyYXRpb25zLiAoJHtsZW5ndGh9KSIpCisgIHJldHVybigpCitlbmRpZigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc0RlcGxveUVuYWJsZWQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc0RlcGxveUVuYWJsZWQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJiNDJiMgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L1ZzRGVwbG95RW5hYmxlZC5jbWFrZQpAQCAtMCwwICsxLDEyIEBACitlbmFibGVfbGFuZ3VhZ2UoQ1hYKQorCitzZXQoREVQTE9ZX0RJUgorICAgInRlbXBcXGZvb2RpciIKKykKKworYWRkX2xpYnJhcnkoZm9vIFNIQVJFRCBmb28uY3BwKQorCitzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoZm9vCisgUFJPUEVSVElFUworICBWU19TT0xVVElPTl9ERVBMT1kgJDxOT1Q6JDxDT05GSUc6UmVsZWFzZT4+CispCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc1NldHRpbmdzLWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvVnNTZXR0aW5ncy1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjhiMjZjCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvVnNTZXR0aW5ncy1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDIzIEBACittYWNybyhlbnN1cmVfcHJvcHNfc2V0IHByb2plY3RGaWxlKQorICBpZihOT1QgRVhJU1RTICIke3Byb2plY3RGaWxlfSIpCisgICAgc2V0KFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJQcm9qZWN0IGZpbGUgJHtwcm9qZWN0RmlsZX0gZG9lcyBub3QgZXhpc3QuIikKKyAgICByZXR1cm4oKQorICBlbmRpZigpCisKKyAgc2V0KFNldHRpbmdGb3VuZCBGQUxTRSkKKworICBmaWxlKFNUUklOR1MgIiR7cHJvamVjdEZpbGV9IiBsaW5lcykKKyAgZm9yZWFjaChsaW5lIElOIExJU1RTIGxpbmVzKQorICAgIGlmKGxpbmUgTUFUQ0hFUyAiPFNvdXJjZVByb3BlcnR5MS4qRGVidWcuKj5Tb3VyY2VQcm9wZXJ0eTFWYWx1ZTwvU291cmNlUHJvcGVydHkxPiIpCisgICAgICBtZXNzYWdlKCJTb3VyY2VQcm9wZXJ0eTEgc2V0dGluZyBmb3VuZCIpCisgICAgICBzZXQoU2V0dGluZ0ZvdW5kIFRSVUUpCisgICAgZW5kaWYoKQorICBlbmRmb3JlYWNoKCkKKworICBpZiAoTk9UIFNldHRpbmdGb3VuZCkKKyAgICBzZXQoUnVuQ01ha2VfVEVTVF9GQUlMRUQgIlNvdXJjZVByb3BlcnR5MSBzZXR0aW5nIHdhcyBub3QgZm91bmQiKQorICAgIHJldHVybigpCisgIGVuZGlmKCkKK2VuZG1hY3JvKCkKKworZW5zdXJlX3Byb3BzX3NldCgiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L2Zvby52Y3hwcm9qIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L1ZzU2V0dGluZ3MuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc1NldHRpbmdzLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YjMyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc1NldHRpbmdzLmNtYWtlCkBAIC0wLDAgKzEsNSBAQAorZW5hYmxlX2xhbmd1YWdlKENYWCkKKworYWRkX2xpYnJhcnkoZm9vIGZvby5jcHAgc2hhZGVyLmhsc2wpCitzZXRfcHJvcGVydHkoU09VUkNFIHNoYWRlci5obHNsIFBST1BFUlRZIFZTX1NFVFRJTkdTCisgICIkPCQ8Q09ORklHOkRFQlVHPjpTb3VyY2VQcm9wZXJ0eTE9U291cmNlUHJvcGVydHkxVmFsdWU+IikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L1ZzU291cmNlU2V0dGluZ3NUb29sLWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3QvVnNTb3VyY2VTZXR0aW5nc1Rvb2wtY2hlY2suY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjlhODljMwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L1ZzU291cmNlU2V0dGluZ3NUb29sLWNoZWNrLmNtYWtlCkBAIC0wLDAgKzEsMzQgQEAKK21hY3JvKGVuc3VyZV9wcm9wc19zZXQgcHJvamVjdEZpbGUpCisgIGlmKE5PVCBFWElTVFMgIiR7cHJvamVjdEZpbGV9IikKKyAgICBzZXQoUnVuQ01ha2VfVEVTVF9GQUlMRUQgIlByb2plY3QgZmlsZSAke3Byb2plY3RGaWxlfSBkb2VzIG5vdCBleGlzdC4iKQorICAgIHJldHVybigpCisgIGVuZGlmKCkKKworICBzZXQoRmlyc3RTZXR0aW5nRm91bmQgRkFMU0UpCisgIHNldChTZWNvbmRTZXR0aW5nRm91bmQgRkFMU0UpCisKKyAgZmlsZShTVFJJTkdTICIke3Byb2plY3RGaWxlfSIgbGluZXMpCisgIGZvcmVhY2gobGluZSBJTiBMSVNUUyBsaW5lcykKKyAgICBpZihsaW5lIE1BVENIRVMgIjxUYXJnZXRQcm9wZXJ0eTEuKkRlYnVnLio+VGFyZ2V0UHJvcGVydHkxVmFsdWVEZWJ1ZzwvVGFyZ2V0UHJvcGVydHkxPiIpCisgICAgICBpZiAoRmlyc3RTZXR0aW5nRm91bmQpCisgICAgICAgIG1lc3NhZ2UoIlRhcmdldFByb3BlcnR5MSBzZXR0aW5nIGZvdW5kIHR3aWNlIikKKyAgICAgICAgc2V0KFNlY29uZFNldHRpbmdGb3VuZCBUUlVFKQorICAgICAgZWxzZSgpCisgICAgICAgIG1lc3NhZ2UoIlRhcmdldFByb3BlcnR5MSBzZXR0aW5nIGZvdW5kIG9uY2UiKQorICAgICAgICBzZXQoRmlyc3RTZXR0aW5nRm91bmQgVFJVRSkKKyAgICAgIGVuZGlmKCkKKyAgICBlbmRpZigpCisgIGVuZGZvcmVhY2goKQorCisgIGlmIChOT1QgRmlyc3RTZXR0aW5nRm91bmQpCisgICAgc2V0KFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJUYXJnZXRQcm9wZXJ0eTEgc2V0dGluZyBub3QgZm91bmQgYXQgYWxsIikKKyAgICByZXR1cm4oKQorICBlbmRpZigpCisKKyAgaWYgKE5PVCBTZWNvbmRTZXR0aW5nRm91bmQpCisgICAgc2V0KFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJUYXJnZXRQcm9wZXJ0eTEgc2V0dGluZyBmb3VuZCBvbmNlIHdoZW4gaXQgc2hvdWxkIGJlIGZvdW5kIHR3aWNlIikKKyAgICByZXR1cm4oKQorICBlbmRpZigpCitlbmRtYWNybygpCisKK2Vuc3VyZV9wcm9wc19zZXQoIiR7UnVuQ01ha2VfVEVTVF9CSU5BUllfRElSfS9mb28udmN4cHJvaiIpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc1NvdXJjZVNldHRpbmdzVG9vbC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L1ZzU291cmNlU2V0dGluZ3NUb29sLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ODk2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9Wc1NvdXJjZVNldHRpbmdzVG9vbC5jbWFrZQpAQCAtMCwwICsxLDUgQEAKK2VuYWJsZV9sYW5ndWFnZShDWFgpCisKK2FkZF9saWJyYXJ5KGZvbyBmb28uY3BwIHNoYWRlci5obHNsIHNoYWRlcjIuaGxzbCkKK3NldF9wcm9wZXJ0eShUQVJHRVQgZm9vIFBST1BFUlRZIFZTX1NPVVJDRV9TRVRUSU5HU19GWENvbXBpbGUKKyAgIiQ8JDxDT05GSUc6REVCVUc+OlRhcmdldFByb3BlcnR5MT1UYXJnZXRQcm9wZXJ0eTFWYWx1ZURlYnVnPiIpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9zaGFkZXIuaGxzbCBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L3NoYWRlci5obHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiMTM3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9WUzEwUHJvamVjdC9zaGFkZXIuaGxzbApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L3NoYWRlcjIuaGxzbCBiL1Rlc3RzL1J1bkNNYWtlL1ZTMTBQcm9qZWN0L3NoYWRlcjIuaGxzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvVlMxMFByb2plY3Qvc2hhZGVyMi5obHNsCkBAIC0wLDAgKzEgQEAKKwpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9HRU5FWF9MSU5LX0xBTkcuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL0dFTkVYX0xJTktfTEFORy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzRjZTRjCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9HRU5FWF9MSU5LX0xBTkcuY21ha2UKQEAgLTAsMCArMSwxNiBAQAorCitlbmFibGVfbGFuZ3VhZ2UoQykKKworc2V0KG9iaiAiJHtDTUFLRV9DX09VVFBVVF9FWFRFTlNJT059IikKK2lmKEJPUkxBTkQpCisgIHNldChwcmUgLSkKK2VuZGlmKCkKKworYWRkX2xpbmtfb3B0aW9ucyAoJDwkPExJTktfTEFOR1VBR0U6Qz46JHtwcmV9QkFERkxBR19MQU5HX0Mke29ian0+CisgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HVUFHRTpDWFg+OiR7cHJlfUJBREZMQUdfTEFOR19DWFgke29ian0+KQorCithZGRfbGlicmFyeShMaW5rT3B0aW9uc19zaGFyZWQgU0hBUkVEIExpbmtPcHRpb25zTGliLmMpCisKK2FkZF9saWJyYXJ5KExpbmtPcHRpb25zX21vZCBNT0RVTEUgTGlua09wdGlvbnNMaWIuYykKKworYWRkX2V4ZWN1dGFibGUoTGlua09wdGlvbnNfZXhlIExpbmtPcHRpb25zRXhlLmMpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL0xJTktFUl9leHBhbnNpb24tdmFsaWRhdGlvbi5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvTElOS0VSX2V4cGFuc2lvbi12YWxpZGF0aW9uLmNtYWtlCmluZGV4IGJlYmQ2YzcuLmVjZTNiYTAgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvTElOS0VSX2V4cGFuc2lvbi12YWxpZGF0aW9uLmNtYWtlCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvTElOS0VSX2V4cGFuc2lvbi12YWxpZGF0aW9uLmNtYWtlCkBAIC0xMSw1ICsxMSw4IEBACiBmaWxlKFJFQUQgIiR7UnVuQ01ha2VfVEVTVF9CSU5BUllfRElSfS9MSU5LRVIudHh0IiBsaW5rZXJfZmxhZykKIAogaWYgKE5PVCBhY3R1YWxfc3Rkb3V0IE1BVENIRVMgIiR7bGlua2VyX2ZsYWd9IikKLSAgc2V0IChSdW5DTWFrZV9URVNUX0ZBSUxFRCAiTElOS0VSOiB3YXMgbm90IGV4cGFuZGVkIGNvcnJlY3RseS4iKQorICBpZiAoUnVuQ01ha2VfVEVTVF9GQUlMRUQpCisgICAgc3RyaW5nIChBUFBFTkQgUnVuQ01ha2VfVEVTVF9GQUlMRUQgIlxuIikKKyAgZW5kaWYoKQorICBzdHJpbmcgKEFQUEVORCBSdW5DTWFrZV9URVNUX0ZBSUxFRCAiTElOS0VSOiB3YXMgbm90IGV4cGFuZGVkIGNvcnJlY3RseS4iKQogZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9MSU5LX09QVElPTlMtZXhlLWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9MSU5LX09QVElPTlMtZXhlLWNoZWNrLmNtYWtlCmluZGV4IDRhMjJkN2UuLjEyN2EyZjUgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvTElOS19PUFRJT05TLWV4ZS1jaGVjay5jbWFrZQorKysgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL0xJTktfT1BUSU9OUy1leGUtY2hlY2suY21ha2UKQEAgLTMsNSArMyw4IEBACiAgIHNldCAoUnVuQ01ha2VfVEVTVF9GQUlMRUQgIk5vdCBmb3VuZCBleHBlY3RlZCAnQkFERkxBR19FWEVDVVRBQkxFX1JFTEVBU0UnLiIpCiBlbmRpZigpCiBpZiAoYWN0dWFsX3N0ZG91dCBNQVRDSEVTICJCQURGTEFHXyhTSEFSRUR8TU9EVUxFKV9SRUxFQVNFIikKLSAgc2V0IChSdW5DTWFrZV9URVNUX0ZBSUxFRCAiRm91bmQgdW5leHBlY3RlZCAnQkFERkxBR18oU0hBUkVEfE1PRFVMRSlfUkVMRUFTRScuIikKKyAgaWYgKFJ1bkNNYWtlX1RFU1RfRkFJTEVEKQorICAgIHN0cmluZyAoQVBQRU5EIFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJcbiIpCisgIGVuZGlmKCkKKyAgc3RyaW5nIChBUFBFTkQgUnVuQ01ha2VfVEVTVF9GQUlMRUQgIkZvdW5kIHVuZXhwZWN0ZWQgJ0JBREZMQUdfKFNIQVJFRHxNT0RVTEUpX1JFTEVBU0UnLiIpCiBlbmRpZigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL0xJTktfT1BUSU9OUy1tb2QtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL0xJTktfT1BUSU9OUy1tb2QtY2hlY2suY21ha2UKaW5kZXggZDY5NTc2MS4uODc0ZTBhZCAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9MSU5LX09QVElPTlMtbW9kLWNoZWNrLmNtYWtlCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvTElOS19PUFRJT05TLW1vZC1jaGVjay5jbWFrZQpAQCAtMyw1ICszLDggQEAKICAgc2V0IChSdW5DTWFrZV9URVNUX0ZBSUxFRCAiTm90IGZvdW5kIGV4cGVjdGVkICdCQURGTEFHX01PRFVMRV9SRUxFQVNFJy4iKQogZW5kaWYoKQogaWYgKGFjdHVhbF9zdGRvdXQgTUFUQ0hFUyAiQkFERkxBR18oU0hBUkVEfEVYRUNVVEFCTEUpX1JFTEVBU0UiKQotICBzZXQgKFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJGb3VuZCB1bmV4cGVjdGVkICdCQURGTEFHXyhTSEFSRUR8RVhFQ1VUQUJMRSlfUkVMRUFTRScuIikKKyAgaWYgKFJ1bkNNYWtlX1RFU1RfRkFJTEVEKQorICAgIHN0cmluZyAoQVBQRU5EIFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJcbiIpCisgIGVuZGlmKCkKKyAgc3RyaW5nIChBUFBFTkQgUnVuQ01ha2VfVEVTVF9GQUlMRUQgIkZvdW5kIHVuZXhwZWN0ZWQgJ0JBREZMQUdfKFNIQVJFRHxFWEVDVVRBQkxFKV9SRUxFQVNFJy4iKQogZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9MSU5LX09QVElPTlMtc2hhcmVkLWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9MSU5LX09QVElPTlMtc2hhcmVkLWNoZWNrLmNtYWtlCmluZGV4IGVhYWM4ZTMuLmVjYmExN2UgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvTElOS19PUFRJT05TLXNoYXJlZC1jaGVjay5jbWFrZQorKysgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL0xJTktfT1BUSU9OUy1zaGFyZWQtY2hlY2suY21ha2UKQEAgLTMsNSArMyw4IEBACiAgIHNldCAoUnVuQ01ha2VfVEVTVF9GQUlMRUQgIk5vdCBmb3VuZCBleHBlY3RlZCAnQkFERkxBR19TSEFSRURfUkVMRUFTRScuIikKIGVuZGlmKCkKIGlmIChhY3R1YWxfc3Rkb3V0IE1BVENIRVMgIkJBREZMQUdfKE1PRFVMRXxFWEVDVVRBQkxFKV9SRUxFQVNFIikKLSAgc2V0IChSdW5DTWFrZV9URVNUX0ZBSUxFRCAiRm91bmQgdW5leHBlY3RlZCAnQkFERkxBR18oTU9EVUxFfEVYRUNVVEFCTEUpX1JFTEVBU0UnLiIpCisgIGlmIChSdW5DTWFrZV9URVNUX0ZBSUxFRCkKKyAgICBzdHJpbmcgKEFQUEVORCBSdW5DTWFrZV9URVNUX0ZBSUxFRCAiXG4iKQorICBlbmRpZigpCisgIHN0cmluZyAoQVBQRU5EIFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJGb3VuZCB1bmV4cGVjdGVkICdCQURGTEFHXyhNT0RVTEV8RVhFQ1VUQUJMRSlfUkVMRUFTRScuIikKIGVuZGlmKCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvTGlua09wdGlvbnNMaWIuY3h4IGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9MaW5rT3B0aW9uc0xpYi5jeHgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJiZDI0YwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvTGlua09wdGlvbnNMaWIuY3h4CkBAIC0wLDAgKzEsNyBAQAorI2lmIGRlZmluZWQoX1dJTjMyKQorX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZW5kaWYKKyAgaW50IGZsYWdzX2xpYih2b2lkKQoreworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvUnVuQ01ha2VUZXN0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggNGY1ZGY3Mi4uNDY1ZmY4NSAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9SdW5DTWFrZVRlc3QuY21ha2UKKysrIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9SdW5DTWFrZVRlc3QuY21ha2UKQEAgLTIzLDYgKzIzLDIxIEBACiAgIHJ1bl9jbWFrZV90YXJnZXQoTElOS19PUFRJT05TIG1vZCBMaW5rT3B0aW9uc19tb2QgLS1jb25maWcgUmVsZWFzZSkKICAgcnVuX2NtYWtlX3RhcmdldChMSU5LX09QVElPTlMgZXhlIExpbmtPcHRpb25zX2V4ZSAtLWNvbmZpZyBSZWxlYXNlKQogCisKKyAgcnVuX2NtYWtlKGdlbmV4X0xJTktfTEFOR1VBR0UpCisKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdVQUdFIHNoYXJlZF9jIExpbmtPcHRpb25zX3NoYXJlZF9jIC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HVUFHRSBzaGFyZWRfY3h4IExpbmtPcHRpb25zX3NoYXJlZF9jeHggLS1jb25maWcgUmVsZWFzZSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdVQUdFIG1vZCBMaW5rT3B0aW9uc19tb2QgLS1jb25maWcgUmVsZWFzZSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdVQUdFIGV4ZSBMaW5rT3B0aW9uc19leGUgLS1jb25maWcgUmVsZWFzZSkKKworICBydW5fY21ha2UoZ2VuZXhfTElOS19MQU5HX0FORF9JRCkKKworICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgc2hhcmVkX2MgTGlua09wdGlvbnNfc2hhcmVkX2MgLS1jb25maWcgUmVsZWFzZSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdfQU5EX0lEIHNoYXJlZF9jeHggTGlua09wdGlvbnNfc2hhcmVkX2N4eCAtLWNvbmZpZyBSZWxlYXNlKQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgbW9kIExpbmtPcHRpb25zX21vZCAtLWNvbmZpZyBSZWxlYXNlKQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgZXhlIExpbmtPcHRpb25zX2V4ZSAtLWNvbmZpZyBSZWxlYXNlKQorCiAgIHVuc2V0KFJ1bkNNYWtlX1RFU1RfT1BUSU9OUykKICAgdW5zZXQoUnVuQ01ha2VfVEVTVF9PVVRQVVRfTUVSR0UpCiBlbmRpZigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UtZXhlLWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLWV4ZS1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWY2NDFkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLWV4ZS1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDIgQEAKKworaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2VuZXhfTElOS19MQU5HVUFHRS12YWxpZGF0aW9uLmNtYWtlIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1leGUtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1leGUtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk4ZjlkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLWV4ZS1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UtbW9kLWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLW1vZC1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWY2NDFkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLW1vZC1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDIgQEAKKworaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2VuZXhfTElOS19MQU5HVUFHRS12YWxpZGF0aW9uLmNtYWtlIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1tb2QtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1tb2QtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk4ZjlkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLW1vZC1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0Utc2hhcmVkX2MtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0Utc2hhcmVkX2MtY2hlY2suY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwMTIwYwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1zaGFyZWRfYy1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDUgQEAKKworc2V0IChWQUxJRF9MQU5HIEMpCitzZXQgKElOVkFMSURfTEFORyBDWFgpCisKK2luY2x1ZGUgKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L2dlbmV4X0xJTktfTEFOR1VBR0UtdmFsaWRhdGlvbi5jbWFrZSIpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0Utc2hhcmVkX2MtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1zaGFyZWRfYy1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0Utc2hhcmVkX2MtcmVzdWx0LnR4dApAQCAtMCwwICsxIEBACisuKgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLXNoYXJlZF9jeHgtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0Utc2hhcmVkX2N4eC1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTM5ODEwCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLXNoYXJlZF9jeHgtY2hlY2suY21ha2UKQEAgLTAsMCArMSw1IEBACisKK3NldCAoVkFMSURfTEFORyBDWFgpCitzZXQgKElOVkFMSURfTEFORyBDKQorCitpbmNsdWRlICgiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9nZW5leF9MSU5LX0xBTkdVQUdFLXZhbGlkYXRpb24uY21ha2UiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLXNoYXJlZF9jeHgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1zaGFyZWRfY3h4LXJlc3VsdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ5OGY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1zaGFyZWRfY3h4LXJlc3VsdC50eHQKQEAgLTAsMCArMSBAQAorLioKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS12YWxpZGF0aW9uLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLXZhbGlkYXRpb24uY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAyMzdhYgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS12YWxpZGF0aW9uLmNtYWtlCkBAIC0wLDAgKzEsMTcgQEAKKworaWYgKE5PVCBERUZJTkVEIFZBTElEX0xBTkcpCisgIHNldCAoVkFMSURfTEFORyBDKQorZW5kaWYoKQoraWYgKE5PVCBERUZJTkVEIElOVkFMSURfTEFORykKKyAgc2V0IChJTlZBTElEX0xBTkcgQ1hYKQorZW5kaWYoKQorCitpZiAoTk9UIGFjdHVhbF9zdGRvdXQgTUFUQ0hFUyAiQkFERkxBR18ke1ZBTElEX0xBTkd9X0xBTkciKQorICBzZXQgKFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJOb3QgZm91bmQgZXhwZWN0ZWQgJ0JBREZMQUdfJHtWQUxJRF9MQU5HfV9MQU5HJy4iKQorZW5kaWYoKQoraWYgKGFjdHVhbF9zdGRvdXQgTUFUQ0hFUyAiQkFERkxBR18ke0lOVkFMSURfTEFOR31fTEFORyIpCisgIGlmIChSdW5DTWFrZV9URVNUX0ZBSUxFRCkKKyAgICBzdHJpbmcgKEFQUEVORCBSdW5DTWFrZV9URVNUX0ZBSUxFRCAiXG4iKQorICBlbmRpZigpCisgIHN0cmluZyAoQVBQRU5EIFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJGb3VuZCB1bmV4cGVjdGVkICdCQURGTEFHXyR7SU5WQUxJRF9MQU5HfV9MQU5HJy4iKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NGQ0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UuY21ha2UKQEAgLTAsMCArMSwxNyBAQAorCitlbmFibGVfbGFuZ3VhZ2UoQykKK2VuYWJsZV9sYW5ndWFnZShDWFgpCisKK2lmKEJPUkxBTkQpCisgIHNldChwcmUgLSkKK2VuZGlmKCkKKworYWRkX2xpbmtfb3B0aW9ucyAoJDwkPExJTktfTEFOR1VBR0U6Qz46JHtwcmV9QkFERkxBR18kPExJTktfTEFOR1VBR0U+X0xBTkcke0NNQUtFX0NfT1VUUFVUX0VYVEVOU0lPTn0+CisgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HVUFHRTpDWFg+OiR7cHJlfUJBREZMQUdfJDxMSU5LX0xBTkdVQUdFPl9MQU5HJHtDTUFLRV9DWFhfT1VUUFVUX0VYVEVOU0lPTn0+KQorCithZGRfbGlicmFyeShMaW5rT3B0aW9uc19zaGFyZWRfYyBTSEFSRUQgTGlua09wdGlvbnNMaWIuYykKK2FkZF9saWJyYXJ5KExpbmtPcHRpb25zX3NoYXJlZF9jeHggU0hBUkVEIExpbmtPcHRpb25zTGliLmN4eCkKKworYWRkX2xpYnJhcnkoTGlua09wdGlvbnNfbW9kIE1PRFVMRSBMaW5rT3B0aW9uc0xpYi5jKQorCithZGRfZXhlY3V0YWJsZShMaW5rT3B0aW9uc19leGUgTGlua09wdGlvbnNFeGUuYykKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1leGUtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtZXhlLWNoZWNrLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZGRlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtZXhlLWNoZWNrLmNtYWtlCkBAIC0wLDAgKzEsMiBAQAorCitpbmNsdWRlICgiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXZhbGlkYXRpb24uY21ha2UiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWV4ZS1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWV4ZS1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtZXhlLXJlc3VsdC50eHQKQEAgLTAsMCArMSBAQAorLioKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1tb2QtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtbW9kLWNoZWNrLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZGRlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtbW9kLWNoZWNrLmNtYWtlCkBAIC0wLDAgKzEsMiBAQAorCitpbmNsdWRlICgiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXZhbGlkYXRpb24uY21ha2UiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELW1vZC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELW1vZC1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtbW9kLXJlc3VsdC50eHQKQEAgLTAsMCArMSBAQAorLioKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1zaGFyZWRfYy1jaGVjay5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1zaGFyZWRfYy1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjQ5OGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXNoYXJlZF9jLWNoZWNrLmNtYWtlCkBAIC0wLDAgKzEsNSBAQAorCitzZXQgKFZBTElEX0xBTkcgQykKK3NldCAoSU5WQUxJRF9MQU5HIENYWCkKKworaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2VuZXhfTElOS19MQU5HX0FORF9JRC12YWxpZGF0aW9uLmNtYWtlIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1zaGFyZWRfYy1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXNoYXJlZF9jLXJlc3VsdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ5OGY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1zaGFyZWRfYy1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtc2hhcmVkX2N4eC1jaGVjay5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1zaGFyZWRfY3h4LWNoZWNrLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNGY4NTEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtc2hhcmVkX2N4eC1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDUgQEAKKworc2V0IChWQUxJRF9MQU5HIENYWCkKK3NldCAoSU5WQUxJRF9MQU5HIEMpCisKK2luY2x1ZGUgKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L2dlbmV4X0xJTktfTEFOR19BTkRfSUQtdmFsaWRhdGlvbi5jbWFrZSIpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtc2hhcmVkX2N4eC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXNoYXJlZF9jeHgtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk4ZjlkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXNoYXJlZF9jeHgtcmVzdWx0LnR4dApAQCAtMCwwICsxIEBACisuKgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXZhbGlkYXRpb24uY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtdmFsaWRhdGlvbi5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWRjMjdmCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvYWRkX2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXZhbGlkYXRpb24uY21ha2UKQEAgLTAsMCArMSwyMyBAQAorCitpZiAoTk9UIFZBTElEX0xBTkcpCisgIHNldCAoVkFMSURfTEFORyBDKQorZW5kaWYoKQoraWYgKE5PVCBJTlZBTElEX0xBTkcpCisgIHNldCAoSU5WQUxJRF9MQU5HIENYWCkKK2VuZGlmKCkKKworaWYgKE5PVCBhY3R1YWxfc3Rkb3V0IE1BVENIRVMgIkJBREZMQUdfJHtWQUxJRF9MQU5HfV9MQU5HX0lEIikKKyAgc2V0IChSdW5DTWFrZV9URVNUX0ZBSUxFRCAiTm90IGZvdW5kIGV4cGVjdGVkICdCQURGTEFHXyR7VkFMSURfTEFOR31fTEFOR19JRCcuXG4iKQorZW5kaWYoKQoraWYgKGFjdHVhbF9zdGRvdXQgTUFUQ0hFUyAiQkFERkxBR18ke0lOVkFMSURfTEFOR31fTEFOR19JRCIpCisgIGlmIChSdW5DTWFrZV9URVNUX0ZBSUxFRCkKKyAgICBzdHJpbmcgKEFQUEVORCBSdW5DTWFrZV9URVNUX0ZBSUxFRCAiXG4iKQorICBlbmRpZigpCisgIHN0cmluZyAoQVBQRU5EIFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJGb3VuZCB1bmV4cGVjdGVkICdCQURGTEFHXyR7SU5WQUxJRF9MQU5HfV9MQU5HX0lEICcuIikKK2VuZGlmKCkKK2lmIChhY3R1YWxfc3Rkb3V0IE1BVENIRVMgIkJBREZMQUdfKCR7VkFMSURfTEFOR318JHtJTlZBTElEX0xBTkd9KV9CQURJRCIpCisgIGlmIChSdW5DTWFrZV9URVNUX0ZBSUxFRCkKKyAgICBzdHJpbmcgKEFQUEVORCBSdW5DTWFrZV9URVNUX0ZBSUxFRCAiXG4iKQorICBlbmRpZigpCisgIHN0cmluZyAoQVBQRU5EIFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJGb3VuZCB1bmV4cGVjdGVkICdCQURGTEFHXygke1ZBTElEX0xBTkd9fCR7SU5WQUxJRF9MQU5HfSlfQkFESUQnLiIpCitlbmRpZigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9hZGRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgwNzA1MAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2FkZF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC5jbWFrZQpAQCAtMCwwICsxLDE5IEBACisKK2VuYWJsZV9sYW5ndWFnZShDKQorZW5hYmxlX2xhbmd1YWdlKENYWCkKKworaWYoQk9STEFORCkKKyAgc2V0KHByZSAtKQorZW5kaWYoKQorCithZGRfbGlua19vcHRpb25zICgkPCQ8TElOS19MQU5HX0FORF9JRDpDLCR7Q01BS0VfQ19DT01QSUxFUl9JRH0+OiR7cHJlfUJBREZMQUdfQ19MQU5HX0lEJHtDTUFLRV9DX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6Q1hYLCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lEfT46JHtwcmV9QkFERkxBR19DWFhfTEFOR19JRCR7Q01BS0VfQ1hYX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6QyxCQURJRD46JHtwcmV9QkFERkxBR19DX0JBRElEJHtDTUFLRV9DX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6Q1hYLEJBRElEPjoke3ByZX1CQURGTEFHX0NYWF9CQURJRCR7Q01BS0VfQ1hYX09VVFBVVF9FWFRFTlNJT059PikKKworYWRkX2xpYnJhcnkoTGlua09wdGlvbnNfc2hhcmVkX2MgU0hBUkVEIExpbmtPcHRpb25zTGliLmMpCithZGRfbGlicmFyeShMaW5rT3B0aW9uc19zaGFyZWRfY3h4IFNIQVJFRCBMaW5rT3B0aW9uc0xpYi5jeHgpCisKK2FkZF9saWJyYXJ5KExpbmtPcHRpb25zX21vZCBNT0RVTEUgTGlua09wdGlvbnNMaWIuYykKKworYWRkX2V4ZWN1dGFibGUoTGlua09wdGlvbnNfZXhlIExpbmtPcHRpb25zRXhlLmMpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjMyZmZhCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDMgQEAKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjE2KQorcHJvamVjdCgke1J1bkNNYWtlX1RFU1R9IE5PTkUpCitpbmNsdWRlKCR7UnVuQ01ha2VfVEVTVH0uY21ha2UpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL1J1bkNNYWtlVGVzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvUnVuQ01ha2VUZXN0LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNmU3YTIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL1J1bkNNYWtlVGVzdC5jbWFrZQpAQCAtMCwwICsxLDEzIEBACitpbmNsdWRlKFJ1bkNNYWtlKQorCitydW5fY21ha2UoY21ha2VfY29tbWFuZF9ub19wYXJhbWV0ZXJzKQorcnVuX2NtYWtlKGNtYWtlX2NvbW1hbmRfdW5rbm93bl9tZXRhX29wZXJhdGlvbikKK3J1bl9jbWFrZShjbWFrZV9jb21tYW5kX2ludm9rZV9tZXNzYWdlKQorcnVuX2NtYWtlKGNtYWtlX2NvbW1hbmRfaW52b2tlX21lc3NhZ2VfZmF0YWxfZXJyb3IpCitydW5fY21ha2UoY21ha2VfY29tbWFuZF9pbnZva2Vfbm9fcGFyYW1ldGVycykKK3J1bl9jbWFrZShjbWFrZV9jb21tYW5kX2ludm9rZV91bmtub3duX2Z1bmN0aW9uKQorcnVuX2NtYWtlKGNtYWtlX2NvbW1hbmRfZXZhbF9tZXNzYWdlKQorcnVuX2NtYWtlKGNtYWtlX2NvbW1hbmRfZXZhbF9tZXNzYWdlX2ZhdGFsX2Vycm9yKQorcnVuX2NtYWtlKGNtYWtlX2NvbW1hbmRfZXZhbF9ub19jb2RlKQorcnVuX2NtYWtlKGNtYWtlX2NvbW1hbmRfZXZhbF9ub19wYXJhbWV0ZXJzKQorcnVuX2NtYWtlKGNtYWtlX2NvbW1hbmRfZXZhbF92YXJpYWJsZV9vdXRzaWRlX21lc3NhZ2UpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF9tZXNzYWdlLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF9tZXNzYWdlLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZjODY5NAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX21lc3NhZ2Utc3RkZXJyLnR4dApAQCAtMCwwICsxIEBACitXT1JLUyEKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX21lc3NhZ2UuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF9tZXNzYWdlLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZjVlMjUKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF9tZXNzYWdlLmNtYWtlCkBAIC0wLDAgKzEgQEAKK2NtYWtlX2NvbW1hbmQoRVZBTCBDT0RFIG1lc3NhZ2UoV09SS1MhKSkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF9tZXNzYWdlX2ZhdGFsX2Vycm9yLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2V2YWxfbWVzc2FnZV9mYXRhbF9lcnJvci1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF9tZXNzYWdlX2ZhdGFsX2Vycm9yLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF9tZXNzYWdlX2ZhdGFsX2Vycm9yLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE4YTEyNAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX21lc3NhZ2VfZmF0YWxfZXJyb3Itc3RkZXJyLnR4dApAQCAtMCwwICsxLDUgQEAKK0NNYWtlIEVycm9yIGF0IGNtYWtlX2NvbW1hbmRfZXZhbF9tZXNzYWdlX2ZhdGFsX2Vycm9yLmNtYWtlOjE6RVZBTDoyIFwobWVzc2FnZVwpOgorICBlcnJvciEKK0NhbGwgU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgIGNtYWtlX2NvbW1hbmRfZXZhbF9tZXNzYWdlX2ZhdGFsX2Vycm9yLmNtYWtlOjEgXChjbWFrZV9jb21tYW5kXCkKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2V2YWxfbWVzc2FnZV9mYXRhbF9lcnJvci5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX21lc3NhZ2VfZmF0YWxfZXJyb3IuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI5MTNkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX21lc3NhZ2VfZmF0YWxfZXJyb3IuY21ha2UKQEAgLTAsMCArMSw1IEBACitjbWFrZV9jb21tYW5kKEVWQUwgQ09ERQorIgorICBtZXNzYWdlKEZBVEFMX0VSUk9SIGVycm9yISkKKyIKKykKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF9ub19jb2RlLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2V2YWxfbm9fY29kZS1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF9ub19jb2RlLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF9ub19jb2RlLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU1MzMxMgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX25vX2NvZGUtc3RkZXJyLnR4dApAQCAtMCwwICsxLDIgQEAKK0NNYWtlIEVycm9yIGF0IGNtYWtlX2NvbW1hbmRfZXZhbF9ub19jb2RlLmNtYWtlOjEgXChjbWFrZV9jb21tYW5kXCk6CisgIGNtYWtlX2NvbW1hbmQgY2FsbGVkIHdpdGhvdXQgQ09ERSBhcmd1bWVudApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2V2YWxfbm9fY29kZS5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX25vX2NvZGUuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJlMTY2NwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX25vX2NvZGUuY21ha2UKQEAgLTAsMCArMSBAQAorY21ha2VfY29tbWFuZChFVkFMIG1lc3NhZ2UgInRvbyBtYW55IHBhcmFtZXRlcnMiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX25vX3BhcmFtZXRlcnMtcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF9ub19wYXJhbWV0ZXJzLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX25vX3BhcmFtZXRlcnMtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX25vX3BhcmFtZXRlcnMtc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWZjMzE3Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2V2YWxfbm9fcGFyYW1ldGVycy1zdGRlcnIudHh0CkBAIC0wLDAgKzEsMiBAQAorQ01ha2UgRXJyb3IgYXQgY21ha2VfY29tbWFuZF9ldmFsX25vX3BhcmFtZXRlcnMuY21ha2U6MSBcKGNtYWtlX2NvbW1hbmRcKToKKyAgY21ha2VfY29tbWFuZCBjYWxsZWQgd2l0aCBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2V2YWxfbm9fcGFyYW1ldGVycy5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX25vX3BhcmFtZXRlcnMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTViYTJjNwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX25vX3BhcmFtZXRlcnMuY21ha2UKQEAgLTAsMCArMSBAQAorY21ha2VfY29tbWFuZChFVkFMKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2V2YWxfdmFyaWFibGVfb3V0c2lkZV9tZXNzYWdlLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF92YXJpYWJsZV9vdXRzaWRlX21lc3NhZ2Utc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmM4Njk0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2V2YWxfdmFyaWFibGVfb3V0c2lkZV9tZXNzYWdlLXN0ZGVyci50eHQKQEAgLTAsMCArMSBAQAorV09SS1MhCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF92YXJpYWJsZV9vdXRzaWRlX21lc3NhZ2UuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfZXZhbF92YXJpYWJsZV9vdXRzaWRlX21lc3NhZ2UuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdhMDZhNQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ldmFsX3ZhcmlhYmxlX291dHNpZGVfbWVzc2FnZS5jbWFrZQpAQCAtMCwwICsxLDIgQEAKK2NtYWtlX2NvbW1hbmQoRVZBTCBDT0RFICJzZXQocGhyYXNlIFwiV09SS1MhXCIpIikKK21lc3NhZ2UoJHtwaHJhc2V9KQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV9tZXNzYWdlLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfaW52b2tlX21lc3NhZ2Utc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmM4Njk0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV9tZXNzYWdlLXN0ZGVyci50eHQKQEAgLTAsMCArMSBAQAorV09SS1MhCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfaW52b2tlX21lc3NhZ2UuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfaW52b2tlX21lc3NhZ2UuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM2ZDc4YQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9pbnZva2VfbWVzc2FnZS5jbWFrZQpAQCAtMCwwICsxIEBACitjbWFrZV9jb21tYW5kKElOVk9LRSBtZXNzYWdlIFdPUktTISkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfaW52b2tlX21lc3NhZ2VfZmF0YWxfZXJyb3ItcmVzdWx0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIFRlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQKY29weSB0byBUZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfaW52b2tlX21lc3NhZ2VfZmF0YWxfZXJyb3ItcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV9tZXNzYWdlX2ZhdGFsX2Vycm9yLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfaW52b2tlX21lc3NhZ2VfZmF0YWxfZXJyb3Itc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzlkYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV9tZXNzYWdlX2ZhdGFsX2Vycm9yLXN0ZGVyci50eHQKQEAgLTAsMCArMSw1IEBACitDTWFrZSBFcnJvciBhdCBjbWFrZV9jb21tYW5kX2ludm9rZV9tZXNzYWdlX2ZhdGFsX2Vycm9yLmNtYWtlOjEgXChtZXNzYWdlXCk6CisgIGVycm9yIQorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgY21ha2VfY29tbWFuZF9pbnZva2VfbWVzc2FnZV9mYXRhbF9lcnJvci5jbWFrZToxIFwoY21ha2VfY29tbWFuZFwpCisgIENNYWtlTGlzdHMudHh0OjMgXChpbmNsdWRlXCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9pbnZva2VfbWVzc2FnZV9mYXRhbF9lcnJvci5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9pbnZva2VfbWVzc2FnZV9mYXRhbF9lcnJvci5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjQyNzY0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV9tZXNzYWdlX2ZhdGFsX2Vycm9yLmNtYWtlCkBAIC0wLDAgKzEgQEAKK2NtYWtlX2NvbW1hbmQoSU5WT0tFIG1lc3NhZ2UgRkFUQUxfRVJST1IgZXJyb3IhKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9pbnZva2Vfbm9fcGFyYW1ldGVycy1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9pbnZva2Vfbm9fcGFyYW1ldGVycy1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfaW52b2tlX25vX3BhcmFtZXRlcnMtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9pbnZva2Vfbm9fcGFyYW1ldGVycy1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NDFiNDEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfaW52b2tlX25vX3BhcmFtZXRlcnMtc3RkZXJyLnR4dApAQCAtMCwwICsxLDIgQEAKK0NNYWtlIEVycm9yIGF0IGNtYWtlX2NvbW1hbmRfaW52b2tlX25vX3BhcmFtZXRlcnMuY21ha2U6MSBcKGNtYWtlX2NvbW1hbmRcKToKKyAgY21ha2VfY29tbWFuZCBjYWxsZWQgd2l0aCBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV9ub19wYXJhbWV0ZXJzLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV9ub19wYXJhbWV0ZXJzLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YzVlMTQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfaW52b2tlX25vX3BhcmFtZXRlcnMuY21ha2UKQEAgLTAsMCArMSBAQAorY21ha2VfY29tbWFuZChJTlZPS0UpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV91bmtub3duX2Z1bmN0aW9uLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV91bmtub3duX2Z1bmN0aW9uLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9pbnZva2VfdW5rbm93bl9mdW5jdGlvbi1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV91bmtub3duX2Z1bmN0aW9uLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBhODFhMwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9pbnZva2VfdW5rbm93bl9mdW5jdGlvbi1zdGRlcnIudHh0CkBAIC0wLDAgKzEsMiBAQAorQ01ha2UgRXJyb3IgYXQgY21ha2VfY29tbWFuZF9pbnZva2VfdW5rbm93bl9mdW5jdGlvbi5jbWFrZToxIFwodW5rbm93blwpOgorICBVbmtub3duIENNYWtlIGNvbW1hbmQgInVua25vd24iLgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV91bmtub3duX2Z1bmN0aW9uLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX2ludm9rZV91bmtub3duX2Z1bmN0aW9uLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxOWEwNGIKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfaW52b2tlX3Vua25vd25fZnVuY3Rpb24uY21ha2UKQEAgLTAsMCArMSBAQAorY21ha2VfY29tbWFuZChJTlZPS0UgdW5rbm93bikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0xhbmd1YWdlcy9MSU5LX0xBTkdVQUdFLWdlbmV4LXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfbm9fcGFyYW1ldGVycy1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ub19wYXJhbWV0ZXJzLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ub19wYXJhbWV0ZXJzLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfbm9fcGFyYW1ldGVycy1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MmI2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfbm9fcGFyYW1ldGVycy1zdGRlcnIudHh0CkBAIC0wLDAgKzEsMiBAQAorQ01ha2UgRXJyb3IgYXQgY21ha2VfY29tbWFuZF9ub19wYXJhbWV0ZXJzLmNtYWtlOjEgXChjbWFrZV9jb21tYW5kXCk6CisgIGNtYWtlX2NvbW1hbmQgY2FsbGVkIHdpdGggaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ub19wYXJhbWV0ZXJzLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX25vX3BhcmFtZXRlcnMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjljNWUxNAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF9ub19wYXJhbWV0ZXJzLmNtYWtlCkBAIC0wLDAgKzEgQEAKK2NtYWtlX2NvbW1hbmQoSU5WT0tFKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF91bmtub3duX21ldGFfb3BlcmF0aW9uLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX3Vua25vd25fbWV0YV9vcGVyYXRpb24tcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvY21ha2VfY29tbWFuZC9jbWFrZV9jb21tYW5kX3Vua25vd25fbWV0YV9vcGVyYXRpb24tc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF91bmtub3duX21ldGFfb3BlcmF0aW9uLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I5YjkxNQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF91bmtub3duX21ldGFfb3BlcmF0aW9uLXN0ZGVyci50eHQKQEAgLTAsMCArMSwyIEBACitDTWFrZSBFcnJvciBhdCBjbWFrZV9jb21tYW5kX3Vua25vd25fbWV0YV9vcGVyYXRpb24uY21ha2U6MSBcKGNtYWtlX2NvbW1hbmRcKToKKyAgY21ha2VfY29tbWFuZCBjYWxsZWQgd2l0aCB1bmtub3duIG1ldGEtb3BlcmF0aW9uCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfdW5rbm93bl9tZXRhX29wZXJhdGlvbi5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2NtYWtlX2NvbW1hbmQvY21ha2VfY29tbWFuZF91bmtub3duX21ldGFfb3BlcmF0aW9uLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3Yzc3ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9jbWFrZV9jb21tYW5kL2NtYWtlX2NvbW1hbmRfdW5rbm93bl9tZXRhX29wZXJhdGlvbi5jbWFrZQpAQCAtMCwwICsxIEBACitjbWFrZV9jb21tYW5kKFVOS05PV04pCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9jb25maWd1cmVfZmlsZS9SZXJ1bkNNYWtlLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvY29uZmlndXJlX2ZpbGUvUmVydW5DTWFrZS5jbWFrZQppbmRleCA4OTBjYzFmLi45ODM4N2QwIDEwMDY0NAotLS0gYS9UZXN0cy9SdW5DTWFrZS9jb25maWd1cmVfZmlsZS9SZXJ1bkNNYWtlLmNtYWtlCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2NvbmZpZ3VyZV9maWxlL1JlcnVuQ01ha2UuY21ha2UKQEAgLTEsOCArMSw0IEBACiBtZXNzYWdlKCJSdW5uaW5nIENNYWtlIG9uIFJlcnVuQ01ha2UiKSAjIHdyaXRlIHRvIHN0ZGVyciBpZiBjbWFrZSByZXJ1bnMKLWNvbmZpZ3VyZV9maWxlKAotICAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L0NvbmZpZ3VyZUZpbGVJbnB1dC50eHQuaW4iCi0gICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vQ29uZmlndXJlRmlsZU91dHB1dC50eHQiCi0gIEBPTkxZCi0gICkKK2FkZF9zdWJkaXJlY3RvcnkoUmVydW5DTWFrZSkKICMgbWFrZSBzdXJlIENNYWtlQ2FjaGUudHh0IGlzIG5ld2VyIHRoYW4gQ29uZmlndXJlRmlsZU91dHB1dC50eHQKIGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgc2xlZXAgMSkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2NvbmZpZ3VyZV9maWxlL1JlcnVuQ01ha2UvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9SdW5DTWFrZS9jb25maWd1cmVfZmlsZS9SZXJ1bkNNYWtlL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NjgxYzcKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9jb25maWd1cmVfZmlsZS9SZXJ1bkNNYWtlL0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsNSBAQAorY29uZmlndXJlX2ZpbGUoCisgICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vQ29uZmlndXJlRmlsZUlucHV0LnR4dC5pbiIKKyAgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9Db25maWd1cmVGaWxlT3V0cHV0LnR4dCIKKyAgQE9OTFkKKyAgKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvY29uZmlndXJlX2ZpbGUvUnVuQ01ha2VUZXN0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvY29uZmlndXJlX2ZpbGUvUnVuQ01ha2VUZXN0LmNtYWtlCmluZGV4IGRlMTQ0NjguLjMyYTA3NzAgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1J1bkNNYWtlL2NvbmZpZ3VyZV9maWxlL1J1bkNNYWtlVGVzdC5jbWFrZQorKysgYi9UZXN0cy9SdW5DTWFrZS9jb25maWd1cmVfZmlsZS9SdW5DTWFrZVRlc3QuY21ha2UKQEAgLTIyLDcgKzIyLDcgQEAKICAgc2V0KFJ1bkNNYWtlX1RFU1RfTk9fQ0xFQU4gMSkKICAgZmlsZShSRU1PVkVfUkVDVVJTRSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9IikKICAgZmlsZShNQUtFX0RJUkVDVE9SWSAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9IikKLSAgc2V0KGluX2NvbmYgICIke1J1bkNNYWtlX1RFU1RfQklOQVJZX0RJUn0vQ29uZmlndXJlRmlsZUlucHV0LnR4dC5pbiIpCisgIHNldChpbl9jb25mICAiJHtSdW5DTWFrZV9URVNUX0JJTkFSWV9ESVJ9L1JlcnVuQ01ha2UvQ29uZmlndXJlRmlsZUlucHV0LnR4dC5pbiIpCiAgIGZpbGUoV1JJVEUgIiR7aW5fY29uZn0iICIxIikKIAogICBtZXNzYWdlKFNUQVRVUyAiUmVydW5DTWFrZTogZmlyc3QgY29uZmlndXJhdGlvbi4uLiIpCkBAIC00Miw3ICs0Miw3IEBACiAgIHJ1bl9jbWFrZV9jb21tYW5kKFJlcnVuQ01ha2Utbm93b3JrICR7Q01BS0VfQ09NTUFORH0gLS1idWlsZCAuKQogCiAgIG1lc3NhZ2UoU1RBVFVTICJSZXJ1bkNNYWtlOiByZW1vdmUgY29uZmlndXJlX2ZpbGUgb3V0cHV0Li4uIikKLSAgZmlsZShSRU1PVkUgIiR7UnVuQ01ha2VfVEVTVF9CSU5BUllfRElSfS9Db25maWd1cmVGaWxlT3V0cHV0LnR4dCIpCisgIGZpbGUoUkVNT1ZFICIke1J1bkNNYWtlX1RFU1RfQklOQVJZX0RJUn0vUmVydW5DTWFrZS9Db25maWd1cmVGaWxlT3V0cHV0LnR4dCIpCiAgIHJ1bl9jbWFrZV9jb21tYW5kKFJlcnVuQ01ha2UtcmVydW4gJHtDTUFLRV9DT01NQU5EfSAtLWJ1aWxkIC4pCiAgIHJ1bl9jbWFrZV9jb21tYW5kKFJlcnVuQ01ha2Utbm93b3JrICR7Q01BS0VfQ09NTUFORH0gLS1idWlsZCAuKQogCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9leGVjdXRlX3Byb2Nlc3MvRWNob1ZhcmlhYmxlLXN0ZGVyci50eHQgYi9UZXN0cy9SdW5DTWFrZS9leGVjdXRlX3Byb2Nlc3MvRWNob1ZhcmlhYmxlLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyNzU1MwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2V4ZWN1dGVfcHJvY2Vzcy9FY2hvVmFyaWFibGUtc3RkZXJyLnR4dApAQCAtMCwwICsxLDMgQEAKK0NNYWtlIEVycm9yIGF0IFteCitdKkVjaG9WYXJpYWJsZU91dHB1dC5jbWFrZToyIFwobWVzc2FnZVwpOgorICBUZXh0IHRvIHN0ZGVycgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvZXhlY3V0ZV9wcm9jZXNzL0VjaG9WYXJpYWJsZS1zdGRvdXQudHh0IGIvVGVzdHMvUnVuQ01ha2UvZXhlY3V0ZV9wcm9jZXNzL0VjaG9WYXJpYWJsZS1zdGRvdXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjODY4YmQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9leGVjdXRlX3Byb2Nlc3MvRWNob1ZhcmlhYmxlLXN0ZG91dC50eHQKQEAgLTAsMCArMSBAQAorLS0gVGV4dCB0byBzdGRvdXQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2V4ZWN1dGVfcHJvY2Vzcy9FY2hvVmFyaWFibGUuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9leGVjdXRlX3Byb2Nlc3MvRWNob1ZhcmlhYmxlLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5OTk5YzcKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9leGVjdXRlX3Byb2Nlc3MvRWNob1ZhcmlhYmxlLmNtYWtlCkBAIC0wLDAgKzEsMjMgQEAKK2V4ZWN1dGVfcHJvY2VzcygKKyAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1QICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vRWNob1ZhcmlhYmxlT3V0cHV0LmNtYWtlCisgIE9VVFBVVF9WQVJJQUJMRSBzdGRvdXQKKyAgRVJST1JfUVVJRVQKKyAgRUNIT19PVVRQVVRfVkFSSUFCTEUKKykKKworZmlsZShSRUFEICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vRWNob1ZhcmlhYmxlLXN0ZG91dC50eHQgZXhwZWN0ZWRfc3Rkb3V0KQoraWYgKE5PVCBzdGRvdXQgTUFUQ0hFUyAiJHtleHBlY3RlZF9zdGRvdXR9IikKKyAgbWVzc2FnZShGQVRBTF9FUlJPUiAic3Rkb3V0IGRpZmZlcnMgZnJvbSB0aGUgZXhwZWN0ZWQgc3Rkb3V0IikKK2VuZGlmKCkKKworZXhlY3V0ZV9wcm9jZXNzKAorICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLVAgJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9FY2hvVmFyaWFibGVPdXRwdXQuY21ha2UKKyAgRVJST1JfVkFSSUFCTEUgc3RkZXJyCisgIE9VVFBVVF9RVUlFVAorICBFQ0hPX0VSUk9SX1ZBUklBQkxFCispCisKK2ZpbGUoUkVBRCAke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L0VjaG9WYXJpYWJsZS1zdGRlcnIudHh0IGV4cGVjdGVkX3N0ZGVycikKK2lmIChOT1Qgc3RkZXJyIE1BVENIRVMgIiR7ZXhwZWN0ZWRfc3RkZXJyfSIpCisgIG1lc3NhZ2UoRkFUQUxfRVJST1IgInN0ZGVyciBkaWZmZXJzIGZyb20gdGhlIGV4cGVjdGVkIHN0ZGVyciIpCitlbmRpZigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9leGVjdXRlX3Byb2Nlc3MvRWNob1ZhcmlhYmxlT3V0cHV0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvZXhlY3V0ZV9wcm9jZXNzL0VjaG9WYXJpYWJsZU91dHB1dC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjM2NTY3Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvZXhlY3V0ZV9wcm9jZXNzL0VjaG9WYXJpYWJsZU91dHB1dC5jbWFrZQpAQCAtMCwwICsxLDIgQEAKK21lc3NhZ2UoU1RBVFVTICJUZXh0IHRvIHN0ZG91dCIpCittZXNzYWdlKEZBVEFMX0VSUk9SICJUZXh0IHRvIHN0ZGVyciIpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9leGVjdXRlX3Byb2Nlc3MvUnVuQ01ha2VUZXN0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvZXhlY3V0ZV9wcm9jZXNzL1J1bkNNYWtlVGVzdC5jbWFrZQppbmRleCBiMjAzYWFiLi44OWFkNmIyIDEwMDY0NAotLS0gYS9UZXN0cy9SdW5DTWFrZS9leGVjdXRlX3Byb2Nlc3MvUnVuQ01ha2VUZXN0LmNtYWtlCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2V4ZWN1dGVfcHJvY2Vzcy9SdW5DTWFrZVRlc3QuY21ha2UKQEAgLTI0LDMgKzI0LDUgQEAKIHJ1bl9jbWFrZV9jb21tYW5kKEVjaG9Db21tYW5kMyAke0NNQUtFX0NPTU1BTkR9CiAgIC1EQ0hFQ0tfRVJST1JfT1VUUFVUX0xPQ0FUSU9OPVRSVUUgLVAKICAgJHtSdW5DTWFrZV9TT1VSQ0VfRElSfS9FY2hvQ29tbWFuZC5jbWFrZSkKKworcnVuX2NtYWtlX2NvbW1hbmQoRWNob1ZhcmlhYmxlICR7Q01BS0VfQ09NTUFORH0gLVAgJHtSdW5DTWFrZV9TT1VSQ0VfRElSfS9FY2hvVmFyaWFibGUuY21ha2UpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvZXhwb3J0L1JlcGVhdC1DTVAwMTAzLU5FVy1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL2V4cG9ydC9SZXBlYXQtQ01QMDEwMy1ORVctcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvZXhwb3J0L1JlcGVhdC1DTVAwMTAzLU5FVy1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvZXhwb3J0L1JlcGVhdC1DTVAwMTAzLU5FVy1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YWI3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9leHBvcnQvUmVwZWF0LUNNUDAxMDMtTkVXLXN0ZGVyci50eHQKQEAgLTAsMCArMSwxNyBAQAorQ01ha2UgRXJyb3IgYXQgUmVwZWF0LmNtYWtlOlswLTldKyBcKGV4cG9ydFwpOgorICBleHBvcnQgY29tbWFuZCBhbHJlYWR5IHNwZWNpZmllZCBmb3IgdGhlIGZpbGUKKworICAgIGZvby5jbWFrZQorCisgIERpZCB5b3UgbWlzcyAnQVBQRU5EJyBrZXl3b3JkXD8KK0NhbGwgU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgIFJlcGVhdC1DTVAwMTAzLU5FVy5jbWFrZTpbMC05XSsgXChpbmNsdWRlXCkKKyAgQ01ha2VMaXN0cy50eHQ6WzAtOV0rIFwoaW5jbHVkZVwpCisKKworQ01ha2UgRXJyb3IgYXQgUmVwZWF0L0NNYWtlTGlzdHMudHh0OlswLTldKyBcKGV4cG9ydFwpOgorICBleHBvcnQgY29tbWFuZCBhbHJlYWR5IHNwZWNpZmllZCBmb3IgdGhlIGZpbGUKKworICAgIC4rL2Zvby5jbWFrZQorCisgIERpZCB5b3UgbWlzcyAnQVBQRU5EJyBrZXl3b3JkXD8KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2V4cG9ydC9SZXBlYXQtQ01QMDEwMy1ORVcuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9leHBvcnQvUmVwZWF0LUNNUDAxMDMtTkVXLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MzgxZGYKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9leHBvcnQvUmVwZWF0LUNNUDAxMDMtTkVXLmNtYWtlCkBAIC0wLDAgKzEsMiBAQAorY21ha2VfcG9saWN5KFNFVCBDTVAwMTAzIE5FVykKK2luY2x1ZGUoUmVwZWF0LmNtYWtlKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvZXhwb3J0L1JlcGVhdC1DTVAwMTAzLU9MRC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2V4cG9ydC9SZXBlYXQtQ01QMDEwMy1PTEQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUxMzRkNgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2V4cG9ydC9SZXBlYXQtQ01QMDEwMy1PTEQuY21ha2UKQEAgLTAsMCArMSwyIEBACitjbWFrZV9wb2xpY3koU0VUIENNUDAxMDMgT0xEKQoraW5jbHVkZShSZXBlYXQuY21ha2UpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9leHBvcnQvUmVwZWF0LUNNUDAxMDMtV0FSTi1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvZXhwb3J0L1JlcGVhdC1DTVAwMTAzLVdBUk4tc3RkZXJyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTA0ZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvZXhwb3J0L1JlcGVhdC1DTVAwMTAzLVdBUk4tc3RkZXJyLnR4dApAQCAtMCwwICsxLDI2IEBACitDTWFrZSBXYXJuaW5nIFwoZGV2XCkgYXQgUmVwZWF0LmNtYWtlOlswLTldKyBcKGV4cG9ydFwpOgorICBQb2xpY3kgQ01QMDEwMyBpcyBub3Qgc2V0OiBtdWx0aXBsZSBleHBvcnRcKFwpIHdpdGggc2FtZSBGSUxFIHdpdGhvdXQgQVBQRU5ECisgIGlzIG5vdCBhbGxvd2VkLiAgUnVuICJjbWFrZSAtLWhlbHAtcG9saWN5IENNUDAxMDMiIGZvciBwb2xpY3kgZGV0YWlscy4gIFVzZQorICB0aGUgY21ha2VfcG9saWN5IGNvbW1hbmQgdG8gc2V0IHRoZSBwb2xpY3kgYW5kIHN1cHByZXNzIHRoaXMgd2FybmluZy4KKworICBleHBvcnRcKFwpIGNvbW1hbmQgYWxyZWFkeSBzcGVjaWZpZWQgZm9yIHRoZSBmaWxlCisKKyAgICBmb28uY21ha2UKKworICBEaWQgeW91IG1pc3MgJ0FQUEVORCcga2V5d29yZFw/CitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBSZXBlYXQtQ01QMDEwMy1XQVJOLmNtYWtlOlswLTldKyBcKGluY2x1ZGVcKQorICBDTWFrZUxpc3RzLnR4dDpbMC05XSsgXChpbmNsdWRlXCkKK1RoaXMgd2FybmluZyBpcyBmb3IgcHJvamVjdCBkZXZlbG9wZXJzLiAgVXNlIC1Xbm8tZGV2IHRvIHN1cHByZXNzIGl0LgorCitDTWFrZSBXYXJuaW5nIFwoZGV2XCkgYXQgUmVwZWF0L0NNYWtlTGlzdHMudHh0OlswLTldKyBcKGV4cG9ydFwpOgorICBQb2xpY3kgQ01QMDEwMyBpcyBub3Qgc2V0OiBtdWx0aXBsZSBleHBvcnRcKFwpIHdpdGggc2FtZSBGSUxFIHdpdGhvdXQgQVBQRU5ECisgIGlzIG5vdCBhbGxvd2VkLiAgUnVuICJjbWFrZSAtLWhlbHAtcG9saWN5IENNUDAxMDMiIGZvciBwb2xpY3kgZGV0YWlscy4gIFVzZQorICB0aGUgY21ha2VfcG9saWN5IGNvbW1hbmQgdG8gc2V0IHRoZSBwb2xpY3kgYW5kIHN1cHByZXNzIHRoaXMgd2FybmluZy4KKworICBleHBvcnRcKFwpIGNvbW1hbmQgYWxyZWFkeSBzcGVjaWZpZWQgZm9yIHRoZSBmaWxlCisKKyAgICAuKy9mb28uY21ha2UKKworICBEaWQgeW91IG1pc3MgJ0FQUEVORCcga2V5d29yZFw/CitUaGlzIHdhcm5pbmcgaXMgZm9yIHByb2plY3QgZGV2ZWxvcGVycy4gIFVzZSAtV25vLWRldiB0byBzdXBwcmVzcyBpdC4KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2V4cG9ydC9SZXBlYXQtQ01QMDEwMy1XQVJOLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvZXhwb3J0L1JlcGVhdC1DTVAwMTAzLVdBUk4uY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E2MzBjNQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2V4cG9ydC9SZXBlYXQtQ01QMDEwMy1XQVJOLmNtYWtlCkBAIC0wLDAgKzEgQEAKK2luY2x1ZGUoUmVwZWF0LmNtYWtlKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvZXhwb3J0L1J1bkNNYWtlVGVzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2V4cG9ydC9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggZGYzNWQ5NS4uMWM3NDc2MiAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvZXhwb3J0L1J1bkNNYWtlVGVzdC5jbWFrZQorKysgYi9UZXN0cy9SdW5DTWFrZS9leHBvcnQvUnVuQ01ha2VUZXN0LmNtYWtlCkBAIC0yLDcgKzIsOSBAQAogCiBydW5fY21ha2UoQ3VzdG9tVGFyZ2V0KQogcnVuX2NtYWtlKEVtcHR5KQotcnVuX2NtYWtlKFJlcGVhdCkKK3J1bl9jbWFrZShSZXBlYXQtQ01QMDEwMy1XQVJOKQorcnVuX2NtYWtlKFJlcGVhdC1DTVAwMTAzLU9MRCkKK3J1bl9jbWFrZShSZXBlYXQtQ01QMDEwMy1ORVcpCiBydW5fY21ha2UoVGFyZ2V0Tm90Rm91bmQpCiBydW5fY21ha2UoQXBwZW5kRXhwb3J0KQogcnVuX2NtYWtlKE9sZElmYWNlKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfZmlsZS9SZXF1aXJlZC1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL2ZpbmRfZmlsZS9SZXF1aXJlZC1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9maW5kX2ZpbGUvUmVxdWlyZWQtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfZmlsZS9SZXF1aXJlZC1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YzMzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9maW5kX2ZpbGUvUmVxdWlyZWQtc3RkZXJyLnR4dApAQCAtMCwwICsxLDQgQEAKK0NNYWtlIEVycm9yIGF0IFJlcXVpcmVkLmNtYWtlOjkgXChmaW5kX2ZpbGVcKToKKyAgQ291bGQgbm90IGZpbmQgRklMRV9kb05vdEV4aXN0cyB1c2luZyB0aGUgZm9sbG93aW5nIGZpbGVzOiBkb05vdEV4aXN0cy5oCitDYWxsIFN0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICBDTWFrZUxpc3RzLnR4dDozIFwoaW5jbHVkZVwpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9maW5kX2ZpbGUvUmVxdWlyZWQtc3Rkb3V0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfZmlsZS9SZXF1aXJlZC1zdGRvdXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YThlODYKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9maW5kX2ZpbGUvUmVxdWlyZWQtc3Rkb3V0LnR4dApAQCAtMCwwICsxIEBACistLSBGSUxFX2V4aXN0cz0nW14nXSovVGVzdHMvUnVuQ01ha2UvZmluZF9maWxlL2luY2x1ZGUvUHJlZml4SW5QQVRILmgnCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9maW5kX2ZpbGUvUmVxdWlyZWQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9maW5kX2ZpbGUvUmVxdWlyZWQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNmMDkyNwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfZmlsZS9SZXF1aXJlZC5jbWFrZQpAQCAtMCwwICsxLDEyIEBACitmaW5kX2ZpbGUoRklMRV9leGlzdHMKKyAgTkFNRVMgUHJlZml4SW5QQVRILmgKKyAgUEFUSFMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUKKyAgTk9fREVGQVVMVF9QQVRICisgIFJFUVVJUkVECisgICkKK21lc3NhZ2UoU1RBVFVTICJGSUxFX2V4aXN0cz0nJHtGSUxFX2V4aXN0c30nIikKKworZmluZF9maWxlKEZJTEVfZG9Ob3RFeGlzdHMKKyAgTkFNRVMgZG9Ob3RFeGlzdHMuaAorICBSRVFVSVJFRAorICApCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9maW5kX2ZpbGUvUnVuQ01ha2VUZXN0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvZmluZF9maWxlL1J1bkNNYWtlVGVzdC5jbWFrZQppbmRleCA5ZjU2YTU3Li45M2RmYjc4IDEwMDY0NAotLS0gYS9UZXN0cy9SdW5DTWFrZS9maW5kX2ZpbGUvUnVuQ01ha2VUZXN0LmNtYWtlCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfZmlsZS9SdW5DTWFrZVRlc3QuY21ha2UKQEAgLTMsMyArMyw0IEBACiBydW5fY21ha2UoRnJvbVBBVEhFbnYpCiBydW5fY21ha2UoRnJvbVByZWZpeFBhdGgpCiBydW5fY21ha2UoUHJlZml4SW5QQVRIKQorcnVuX2NtYWtlKFJlcXVpcmVkKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfbGlicmFyeS9SZXF1aXJlZC1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL2ZpbmRfbGlicmFyeS9SZXF1aXJlZC1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9maW5kX2xpYnJhcnkvUmVxdWlyZWQtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfbGlicmFyeS9SZXF1aXJlZC1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NWQxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9maW5kX2xpYnJhcnkvUmVxdWlyZWQtc3RkZXJyLnR4dApAQCAtMCwwICsxLDQgQEAKK0NNYWtlIEVycm9yIGF0IFJlcXVpcmVkLmNtYWtlOjExIFwoZmluZF9saWJyYXJ5XCk6CisgIENvdWxkIG5vdCBmaW5kIExJQl9kb05vdEV4aXN0cyB1c2luZyB0aGUgZm9sbG93aW5nIG5hbWVzOiBkb05vdEV4aXN0cworQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvZmluZF9saWJyYXJ5L1JlcXVpcmVkLXN0ZG91dC50eHQgYi9UZXN0cy9SdW5DTWFrZS9maW5kX2xpYnJhcnkvUmVxdWlyZWQtc3Rkb3V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODhhYjc5Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvZmluZF9saWJyYXJ5L1JlcXVpcmVkLXN0ZG91dC50eHQKQEAgLTAsMCArMSBAQAorLS0gTElCX2V4aXN0cz0nW14nXSovVGVzdHMvUnVuQ01ha2UvZmluZF9saWJyYXJ5L2xpYi9saWJQcmVmaXhJblBBVEguYScKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfbGlicmFyeS9SZXF1aXJlZC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfbGlicmFyeS9SZXF1aXJlZC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGM5Zjg3Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvZmluZF9saWJyYXJ5L1JlcXVpcmVkLmNtYWtlCkBAIC0wLDAgKzEsMTQgQEAKK2xpc3QoQVBQRU5EIENNQUtFX0ZJTkRfTElCUkFSWV9QUkVGSVhFUyBsaWIpCitsaXN0KEFQUEVORCBDTUFLRV9GSU5EX0xJQlJBUllfU1VGRklYRVMgLmEpCitmaW5kX2xpYnJhcnkoTElCX2V4aXN0cworICBOQU1FUyBQcmVmaXhJblBBVEgKKyAgUEFUSFMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xpYgorICBOT19ERUZBVUxUX1BBVEgKKyAgUkVRVUlSRUQKKyAgKQorbWVzc2FnZShTVEFUVVMgIkxJQl9leGlzdHM9JyR7TElCX2V4aXN0c30nIikKKworZmluZF9saWJyYXJ5KExJQl9kb05vdEV4aXN0cworICBOQU1FUyBkb05vdEV4aXN0cworICBSRVFVSVJFRAorICApCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9maW5kX2xpYnJhcnkvUnVuQ01ha2VUZXN0LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvZmluZF9saWJyYXJ5L1J1bkNNYWtlVGVzdC5jbWFrZQppbmRleCA2NDNhNWI5Li5iNmFhZGNlIDEwMDY0NAotLS0gYS9UZXN0cy9SdW5DTWFrZS9maW5kX2xpYnJhcnkvUnVuQ01ha2VUZXN0LmNtYWtlCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfbGlicmFyeS9SdW5DTWFrZVRlc3QuY21ha2UKQEAgLTcsMyArNyw0IEBACiAgIHJ1bl9jbWFrZShMaWJBcmNoTGluaykKIGVuZGlmKCkKIHJ1bl9jbWFrZShQcmVmaXhJblBBVEgpCitydW5fY21ha2UoUmVxdWlyZWQpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvZmluZF9wYXRoL1JlcXVpcmVkLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvZmluZF9wYXRoL1JlcXVpcmVkLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcGF0aC9SZXF1aXJlZC1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvZmluZF9wYXRoL1JlcXVpcmVkLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2NWMyZgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcGF0aC9SZXF1aXJlZC1zdGRlcnIudHh0CkBAIC0wLDAgKzEsNCBAQAorQ01ha2UgRXJyb3IgYXQgUmVxdWlyZWQuY21ha2U6OSBcKGZpbmRfcGF0aFwpOgorICBDb3VsZCBub3QgZmluZCBQQVRIX2RvTm90RXhpc3RzIHVzaW5nIHRoZSBmb2xsb3dpbmcgZmlsZXM6IGRvTm90RXhpc3RzLmgKK0NhbGwgU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgIENNYWtlTGlzdHMudHh0OjMgXChpbmNsdWRlXCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcGF0aC9SZXF1aXJlZC1zdGRvdXQudHh0IGIvVGVzdHMvUnVuQ01ha2UvZmluZF9wYXRoL1JlcXVpcmVkLXN0ZG91dC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI1ZmNhYgotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcGF0aC9SZXF1aXJlZC1zdGRvdXQudHh0CkBAIC0wLDAgKzEgQEAKKy0tIFBBVEhfZXhpc3RzPSdbXiddKi9UZXN0cy9SdW5DTWFrZS9maW5kX3BhdGgvaW5jbHVkZScKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcGF0aC9SZXF1aXJlZC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcGF0aC9SZXF1aXJlZC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzJkYzExCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvZmluZF9wYXRoL1JlcXVpcmVkLmNtYWtlCkBAIC0wLDAgKzEsMTIgQEAKK2ZpbmRfcGF0aChQQVRIX2V4aXN0cworICBOQU1FUyBQcmVmaXhJblBBVEguaAorICBQQVRIUyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZQorICBOT19ERUZBVUxUX1BBVEgKKyAgUkVRVUlSRUQKKyAgKQorbWVzc2FnZShTVEFUVVMgIlBBVEhfZXhpc3RzPScke1BBVEhfZXhpc3RzfSciKQorCitmaW5kX3BhdGgoUEFUSF9kb05vdEV4aXN0cworICBOQU1FUyBkb05vdEV4aXN0cy5oCisgIFJFUVVJUkVECisgICkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcGF0aC9SdW5DTWFrZVRlc3QuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9maW5kX3BhdGgvUnVuQ01ha2VUZXN0LmNtYWtlCmluZGV4IGVkNTVmNTEuLjVjOTE5YmIgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcGF0aC9SdW5DTWFrZVRlc3QuY21ha2UKKysrIGIvVGVzdHMvUnVuQ01ha2UvZmluZF9wYXRoL1J1bkNNYWtlVGVzdC5jbWFrZQpAQCAtMyw2ICszLDcgQEAKIHJ1bl9jbWFrZShFbXB0eU9sZFN0eWxlKQogcnVuX2NtYWtlKEZyb21QQVRIRW52KQogcnVuX2NtYWtlKFByZWZpeEluUEFUSCkKK3J1bl9jbWFrZShSZXF1aXJlZCkKIAogaWYoQVBQTEUpCiAgIHJ1bl9jbWFrZShGcmFtZXdvcmtzV2l0aFN1YmRpcnMpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvZmluZF9wcm9ncmFtL1JlcXVpcmVkLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvZmluZF9wcm9ncmFtL1JlcXVpcmVkLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcHJvZ3JhbS9SZXF1aXJlZC1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvZmluZF9wcm9ncmFtL1JlcXVpcmVkLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE0YThkNAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcHJvZ3JhbS9SZXF1aXJlZC1zdGRlcnIudHh0CkBAIC0wLDAgKzEsNCBAQAorQ01ha2UgRXJyb3IgYXQgUmVxdWlyZWQuY21ha2U6OSBcKGZpbmRfcHJvZ3JhbVwpOgorICBDb3VsZCBub3QgZmluZCBQUk9HX0FhbmRCIHVzaW5nIHRoZSBmb2xsb3dpbmcgbmFtZXM6IHRlc3RBYW5kQgorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvZmluZF9wcm9ncmFtL1JlcXVpcmVkLXN0ZG91dC50eHQgYi9UZXN0cy9SdW5DTWFrZS9maW5kX3Byb2dyYW0vUmVxdWlyZWQtc3Rkb3V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzhmMWI1Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvZmluZF9wcm9ncmFtL1JlcXVpcmVkLXN0ZG91dC50eHQKQEAgLTAsMCArMSBAQAorLS0gUFJPR19BPSdbXiddKi9UZXN0cy9SdW5DTWFrZS9maW5kX3Byb2dyYW0vQS90ZXN0QScKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcHJvZ3JhbS9SZXF1aXJlZC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcHJvZ3JhbS9SZXF1aXJlZC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzVhYTUzCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvZmluZF9wcm9ncmFtL1JlcXVpcmVkLmNtYWtlCkBAIC0wLDAgKzEsMTIgQEAKK2ZpbmRfcHJvZ3JhbShQUk9HX0EKKyAgTkFNRVMgdGVzdEEKKyAgUEFUSFMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L0EKKyAgTk9fREVGQVVMVF9QQVRICisgIFJFUVVJUkVECisgICkKK21lc3NhZ2UoU1RBVFVTICJQUk9HX0E9JyR7UFJPR19BfSciKQorCitmaW5kX3Byb2dyYW0oUFJPR19BYW5kQgorICBOQU1FUyB0ZXN0QWFuZEIKKyAgUkVRVUlSRUQKKyAgKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvZmluZF9wcm9ncmFtL1J1bkNNYWtlVGVzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL2ZpbmRfcHJvZ3JhbS9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggNjkwM2YwNS4uMGZmOWE5NyAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvZmluZF9wcm9ncmFtL1J1bkNNYWtlVGVzdC5jbWFrZQorKysgYi9UZXN0cy9SdW5DTWFrZS9maW5kX3Byb2dyYW0vUnVuQ01ha2VUZXN0LmNtYWtlCkBAIC00LDYgKzQsNyBAQAogcnVuX2NtYWtlKERpcnNQZXJOYW1lKQogcnVuX2NtYWtlKE5hbWVzUGVyRGlyKQogcnVuX2NtYWtlKFJlbEFuZEFic1BhdGgpCitydW5fY21ha2UoUmVxdWlyZWQpCiAKIGlmKENNQUtFX1NZU1RFTV9OQU1FIE1BVENIRVMgIl4oV2luZG93c3xDWUdXSU4pJCIpCiAgIHJ1bl9jbWFrZShXaW5kb3dzQ29tKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2Uvc3RyaW5nL0hleC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3N0cmluZy9IZXguY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM1YWFhMQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3N0cmluZy9IZXguY21ha2UKQEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24oYXNzZXJ0X3N0cmVxdWFsIGlucHV0IGFjdHVhbCBleHBlY3RlZCkKKyAgaWYoTk9UIGV4cGVjdGVkIFNUUkVRVUFMIGFjdHVhbCkKKyAgICBtZXNzYWdlKFNFTkRfRVJST1IgIk91dHB1dCBkaWQgbm90IG1hdGNoIGV4cGVjdGVkXG5JbnB1dCBzdHJpbmc6XG4gICR7aW5wdXR9XG5FeHBlY3RlZDpcbiAgJHtleHBlY3RlZH1cbkFjdHVhbDpcbiAgJHthY3R1YWx9IikKKyAgZW5kaWYoKQorZW5kZnVuY3Rpb24oKQorCitzZXQoX2lucHV0MSAiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4iKQorc3RyaW5nKEhFWCAiJHtfaW5wdXQxfSIgX3Jlc3VsdDEpCithc3NlcnRfc3RyZXF1YWwoIiR7X2lucHV0MX0iICIke19yZXN1bHQxfSIgIjU0Njg2NTIwNzE3NTY5NjM2YjIwNjI3MjZmNzc2ZTIwNjY2Zjc4MjA2YTc1NmQ3MDczMjA2Zjc2NjU3MjIwNzQ2ODY1MjA2YzYxN2E3OTIwNjQ2ZjY3MmUiKQorCitzZXQoX2lucHV0MiAiSGVsbG8gd29ybGQhIikKK3N0cmluZyhIRVggIiR7X2lucHV0Mn0iIF9yZXN1bHQyKQorYXNzZXJ0X3N0cmVxdWFsKCIke19pbnB1dDJ9IiAiJHtfcmVzdWx0Mn0iICI0ODY1NmM2YzZmMjA3NzZmNzI2YzY0MjEiKQorCitzZXQoX2lucHV0MyAiQXNoIG5hemcgZHVyYmF0dWzDu2tcbkFzaCBuYXpnIGdpbWJhdHVsXG5Bc2ggbmF6ZyB0aHJha2F0dWzDu2tcbkFnaCBidXJ6dW0taXNoaSBrcmltcGF0dWwiKQorc3RyaW5nKEhFWCAiJHtfaW5wdXQzfSIgX3Jlc3VsdDMpCithc3NlcnRfc3RyZXF1YWwoIiR7X2lucHV0M30iICIke19yZXN1bHQzfSIgIjQxNzM2ODIwNmU2MTdhNjcyMDY0NzU3MjYyNjE3NDc1NmNjM2JiNmIwYTQxNzM2ODIwNmU2MTdhNjcyMDY3Njk2ZDYyNjE3NDc1NmMwYTQxNzM2ODIwNmU2MTdhNjcyMDc0Njg3MjYxNmI2MTc0NzU2Y2MzYmI2YjBhNDE2NzY4MjA2Mjc1NzI3YTc1NmQyZDY5NzM2ODY5MjA2YjcyNjk2ZDcwNjE3NDc1NmMiKQorCitzdHJpbmcoSEVYICIiIF9yZXN1bHRfZW1wdHkpCithc3NlcnRfc3RyZXF1YWwoIiIgIiR7X3Jlc3VsdF9lbXB0eX0iICIiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3N0cmluZy9IZXhOb3RFbm91Z2hBcmdzLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2Uvc3RyaW5nL0hleE5vdEVub3VnaEFyZ3MtcmVzdWx0LnR4dApkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2Uvc3RyaW5nL0hleE5vdEVub3VnaEFyZ3Mtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3N0cmluZy9IZXhOb3RFbm91Z2hBcmdzLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ0Zjc5ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3N0cmluZy9IZXhOb3RFbm91Z2hBcmdzLXN0ZGVyci50eHQKQEAgLTAsMCArMSw0IEBACiteQ01ha2UgRXJyb3IgYXQgSGV4Tm90RW5vdWdoQXJnc1wuY21ha2U6WzAtOV0rIFwoc3RyaW5nXCk6CisgIHN0cmluZyBJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cworQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0c1wudHh0OjMgXChpbmNsdWRlXCkkCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9zdHJpbmcvSGV4Tm90RW5vdWdoQXJncy5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3N0cmluZy9IZXhOb3RFbm91Z2hBcmdzLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMDJhZjAKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9zdHJpbmcvSGV4Tm90RW5vdWdoQXJncy5jbWFrZQpAQCAtMCwwICsxIEBACitzdHJpbmcoSEVYICJIZWxsbyB3b3JsZCEiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3N0cmluZy9IZXhUb29NYW55QXJncy1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL3N0cmluZy9IZXhUb29NYW55QXJncy1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9zdHJpbmcvSGV4VG9vTWFueUFyZ3Mtc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3N0cmluZy9IZXhUb29NYW55QXJncy1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYjQwZWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS9zdHJpbmcvSGV4VG9vTWFueUFyZ3Mtc3RkZXJyLnR4dApAQCAtMCwwICsxLDQgQEAKK15DTWFrZSBFcnJvciBhdCBIZXhUb29NYW55QXJnc1wuY21ha2U6WzAtOV0rIFwoc3RyaW5nXCk6CisgIHN0cmluZyBJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cworQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0c1wudHh0OjMgXChpbmNsdWRlXCkkCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9zdHJpbmcvSGV4VG9vTWFueUFyZ3MuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9zdHJpbmcvSGV4VG9vTWFueUFyZ3MuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk4NmNmOAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3N0cmluZy9IZXhUb29NYW55QXJncy5jbWFrZQpAQCAtMCwwICsxIEBACitzdHJpbmcoSEVYICJIZWxsbyB3b3JsZCEiIF9vdXRwdXQgYmFkKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2Uvc3RyaW5nL1J1bkNNYWtlVGVzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3N0cmluZy9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggYzQzMmI0ZS4uYmI3Y2IxNyAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2Uvc3RyaW5nL1J1bkNNYWtlVGVzdC5jbWFrZQorKysgYi9UZXN0cy9SdW5DTWFrZS9zdHJpbmcvUnVuQ01ha2VUZXN0LmNtYWtlCkBAIC0zNywzICszNyw3IEBACiBydW5fY21ha2UoUmVwZWF0KQogcnVuX2NtYWtlKFJlcGVhdE5vQXJncykKIHJ1bl9jbWFrZShSZXBlYXROZWdhdGl2ZUNvdW50KQorCitydW5fY21ha2UoSGV4KQorcnVuX2NtYWtlKEhleFRvb01hbnlBcmdzKQorcnVuX2NtYWtlKEhleE5vdEVub3VnaEFyZ3MpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9DTVAwMDk5LmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvQ01QMDA5OS5jbWFrZQppbmRleCBhMmJlMjc5Li5hZmYxZTMzIDEwMDY0NAotLS0gYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9DTVAwMDk5LmNtYWtlCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL0NNUDAwOTkuY21ha2UKQEAgLTUsNyArNSw3IEBACiBzZXQoQ01BS0VfQ19VU0VfUkVTUE9OU0VfRklMRV9GT1JfTElCUkFSSUVTIEZBTFNFKQogCiBhZGRfbGlicmFyeShMaW5rRGlyc19pbnRlcmZhY2UgSU5URVJGQUNFKQotdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMgKExpbmtEaXJzX2ludGVyZmFjZSBJTlRFUkZBQ0UgIi9ESVJfSU5URVJGQUNFIn0pCit0YXJnZXRfbGlua19kaXJlY3RvcmllcyAoTGlua0RpcnNfaW50ZXJmYWNlIElOVEVSRkFDRSAiL0RJUl9JTlRFUkZBQ0UiKQogCiBhZGRfbGlicmFyeShMaW5rRGlyc19zdGF0aWMgU1RBVElDIGxpYi5jKQogdGFyZ2V0X2xpbmtfbGlicmFyaWVzIChMaW5rRGlyc19zdGF0aWMgUFJJVkFURSBMaW5rRGlyc19pbnRlcmZhY2UpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9SdW5DTWFrZVRlc3QuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9SdW5DTWFrZVRlc3QuY21ha2UKaW5kZXggYTc0ZWUyNS4uNjk5ZTg3MSAxMDA2NDQKLS0tIGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvUnVuQ01ha2VUZXN0LmNtYWtlCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL1J1bkNNYWtlVGVzdC5jbWFrZQpAQCAtMjEsMTAgKzIxLDIxIEBACiAgICAgc2V0KFZFUkJPU0UgLS0gLXYpCiAgIGVuZGlmKCkKIAorICBydW5fY21ha2UoZ2VuZXhfTElOS19MQU5HVUFHRSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdVQUdFIGludGVyZmFjZSBMaW5rRGlyc19leGVfaW50ZXJmYWNlIC0tY29uZmlnIFJlbGVhc2UgJHtWRVJCT1NFfSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdVQUdFIGJhc2ljIExpbmtEaXJzX2V4ZV9jIC0tY29uZmlnIFJlbGVhc2UgJHtWRVJCT1NFfSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdVQUdFIExJTktFUl9MQU5HVUFHRSBMaW5rRGlyc19leGVfY3h4IC0tY29uZmlnIFJlbGVhc2UgJHtWRVJCT1NFfSkKKworICBydW5fY21ha2UoZ2VuZXhfTElOS19MQU5HX0FORF9JRCkKKworICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgaW50ZXJmYWNlIExpbmtEaXJzX2V4ZV9pbnRlcmZhY2UgLS1jb25maWcgUmVsZWFzZSAke1ZFUkJPU0V9KQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgYmFzaWMgTGlua0RpcnNfZXhlX2MgLS1jb25maWcgUmVsZWFzZSAke1ZFUkJPU0V9KQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgTElOS0VSX0xBTkdVQUdFIExpbmtEaXJzX2V4ZV9jeHggLS1jb25maWcgUmVsZWFzZSAke1ZFUkJPU0V9KQorCisKICAgcnVuX2NtYWtlKENNUDAwOTktTkVXKQogICBydW5fY21ha2VfdGFyZ2V0KENNUDAwOTktTkVXIGJhc2ljIExpbmtEaXJzX2V4ZSAke1ZFUkJPU0V9KQogCi0KICAgcnVuX2NtYWtlKENNUDAwOTktT0xEKQogICBydW5fY21ha2VfdGFyZ2V0KENNUDAwOTktT0xEIGJhc2ljIExpbmtEaXJzX2V4ZSAke1ZFUkJPU0V9KQogCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLUxJTktFUl9MQU5HVUFHRS1jaGVjay5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR1VBR0UtTElOS0VSX0xBTkdVQUdFLWNoZWNrLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMzk4MTAKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLUxJTktFUl9MQU5HVUFHRS1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDUgQEAKKworc2V0IChWQUxJRF9MQU5HIENYWCkKK3NldCAoSU5WQUxJRF9MQU5HIEMpCisKK2luY2x1ZGUgKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L2dlbmV4X0xJTktfTEFOR1VBR0UtdmFsaWRhdGlvbi5jbWFrZSIpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLUxJTktFUl9MQU5HVUFHRS1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1MSU5LRVJfTEFOR1VBR0UtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk4ZjlkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1MSU5LRVJfTEFOR1VBR0UtcmVzdWx0LnR4dApAQCAtMCwwICsxIEBACisuKgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1iYXNpYy1jaGVjay5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR1VBR0UtYmFzaWMtY2hlY2suY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmNjQxZAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR1VBR0UtYmFzaWMtY2hlY2suY21ha2UKQEAgLTAsMCArMSwyIEBACisKK2luY2x1ZGUgKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L2dlbmV4X0xJTktfTEFOR1VBR0UtdmFsaWRhdGlvbi5jbWFrZSIpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWJhc2ljLXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWJhc2ljLXJlc3VsdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ5OGY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR1VBR0UtYmFzaWMtcmVzdWx0LnR4dApAQCAtMCwwICsxIEBACisuKgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1pbnRlcmZhY2UtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWludGVyZmFjZS1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzEzZGU2Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1pbnRlcmZhY2UtY2hlY2suY21ha2UKQEAgLTAsMCArMSw0IEBACisKK3NldCAoVFlQRSBJTlRFUkZBQ0UpCisKK2luY2x1ZGUgKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L2dlbmV4X0xJTktfTEFOR1VBR0UtdmFsaWRhdGlvbi5jbWFrZSIpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWludGVyZmFjZS1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1pbnRlcmZhY2UtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk4ZjlkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1pbnRlcmZhY2UtcmVzdWx0LnR4dApAQCAtMCwwICsxIEBACisuKgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS12YWxpZGF0aW9uLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS12YWxpZGF0aW9uLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ODU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLXZhbGlkYXRpb24uY21ha2UKQEAgLTAsMCArMSwyMCBAQAorCitpZiAoTk9UIFZBTElEX0xBTkcpCisgIHNldCAoVkFMSURfTEFORyBDKQorZW5kaWYoKQoraWYgKE5PVCBJTlZBTElEX0xBTkcpCisgIHNldCAoSU5WQUxJRF9MQU5HIENYWCkKK2VuZGlmKCkKK2lmIChOT1QgVFlQRSkKKyAgc2V0IChUWVBFIEVYRSkKK2VuZGlmKCkKKworaWYgKE5PVCBhY3R1YWxfc3Rkb3V0IE1BVENIRVMgIkRJUl8ke1ZBTElEX0xBTkd9XyR7VFlQRX0iKQorICBzZXQgKFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJOb3QgZm91bmQgZXhwZWN0ZWQgJ0RJUl8ke1ZBTElEX0xBTkd9XyR7VFlQRX0nLiIpCitlbmRpZigpCitpZiAoYWN0dWFsX3N0ZG91dCBNQVRDSEVTICJESVJfJHtJTlZBTElEX0xBTkd9XyR7VFlQRX0iKQorICBpZiAoUnVuQ01ha2VfVEVTVF9GQUlMRUQpCisgICAgc3RyaW5nIChBUFBFTkQgUnVuQ01ha2VfVEVTVF9GQUlMRUQgIlxuIikKKyAgZW5kaWYoKQorICBzdHJpbmcgKEFQUEVORCBSdW5DTWFrZV9URVNUX0ZBSUxFRCAiRm91bmQgdW5leHBlY3RlZCAnRElSXyR7SU5WQUxJRF9MQU5HfV8ke1RZUEV9Jy4iKQorZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR1VBR0UuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYyNjZiMQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR1VBR0UuY21ha2UKQEAgLTAsMCArMSwyMyBAQAorCitlbmFibGVfbGFuZ3VhZ2UoQykKK2VuYWJsZV9sYW5ndWFnZShDWFgpCisKK3NldChDTUFLRV9WRVJCT1NFX01BS0VGSUxFIFRSVUUpCitzZXQoQ01BS0VfQ19VU0VfUkVTUE9OU0VfRklMRV9GT1JfTElCUkFSSUVTIEZBTFNFKQorc2V0KENNQUtFX0NYWF9VU0VfUkVTUE9OU0VfRklMRV9GT1JfTElCUkFSSUVTIEZBTFNFKQorCithZGRfbGlicmFyeShMaW5rRGlyc19pbnRlcmZhY2UgSU5URVJGQUNFKQordGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMgKExpbmtEaXJzX2ludGVyZmFjZSBJTlRFUkZBQ0UgIiQ8JDxMSU5LX0xBTkdVQUdFOkM+Oi9ESVJfQ19JTlRFUkZBQ0U+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQ8JDxMSU5LX0xBTkdVQUdFOkNYWD46L0RJUl9DWFhfSU5URVJGQUNFPiIpCisKK2FkZF9leGVjdXRhYmxlKExpbmtEaXJzX2V4ZV9pbnRlcmZhY2UgZXhlLmMpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKExpbmtEaXJzX2V4ZV9pbnRlcmZhY2UgUFJJVkFURSBMaW5rRGlyc19pbnRlcmZhY2UpCisKK2FkZF9leGVjdXRhYmxlKExpbmtEaXJzX2V4ZV9jIGV4ZS5jKQordGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMgKExpbmtEaXJzX2V4ZV9jIFBSSVZBVEUgIiQ8JDxMSU5LX0xBTkdVQUdFOkM+Oi9ESVJfQ19FWEU+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQ8JDxMSU5LX0xBTkdVQUdFOkNYWD46L0RJUl9DWFhfRVhFPiIpCisKK2FkZF9leGVjdXRhYmxlKExpbmtEaXJzX2V4ZV9jeHggZXhlLmMpCit0YXJnZXRfbGlua19kaXJlY3RvcmllcyAoTGlua0RpcnNfZXhlX2N4eCBQUklWQVRFICIkPCQ8TElOS19MQU5HVUFHRTpDPjovRElSX0NfRVhFPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJDwkPExJTktfTEFOR1VBR0U6Q1hYPjovRElSX0NYWF9FWEU+IikKK3NldF9wcm9wZXJ0eSAoVEFSR0VUIExpbmtEaXJzX2V4ZV9jeHggUFJPUEVSVFkgTElOS0VSX0xBTkdVQUdFIENYWCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtTElOS0VSX0xBTkdVQUdFLWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1MSU5LRVJfTEFOR1VBR0UtY2hlY2suY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ0Zjg1MQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtTElOS0VSX0xBTkdVQUdFLWNoZWNrLmNtYWtlCkBAIC0wLDAgKzEsNSBAQAorCitzZXQgKFZBTElEX0xBTkcgQ1hYKQorc2V0IChJTlZBTElEX0xBTkcgQykKKworaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2VuZXhfTElOS19MQU5HX0FORF9JRC12YWxpZGF0aW9uLmNtYWtlIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtTElOS0VSX0xBTkdVQUdFLXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELUxJTktFUl9MQU5HVUFHRS1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELUxJTktFUl9MQU5HVUFHRS1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWJhc2ljLWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1iYXNpYy1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmRkZWUxCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1iYXNpYy1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDIgQEAKKworaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2VuZXhfTElOS19MQU5HX0FORF9JRC12YWxpZGF0aW9uLmNtYWtlIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtYmFzaWMtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtYmFzaWMtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk4ZjlkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1iYXNpYy1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWludGVyZmFjZS1jaGVjay5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtaW50ZXJmYWNlLWNoZWNrLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMjg3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWludGVyZmFjZS1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDQgQEAKKworc2V0IChUWVBFIElOVEVSRkFDRSkKKworaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2VuZXhfTElOS19MQU5HX0FORF9JRC12YWxpZGF0aW9uLmNtYWtlIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtaW50ZXJmYWNlLXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWludGVyZmFjZS1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWludGVyZmFjZS1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXZhbGlkYXRpb24uY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXZhbGlkYXRpb24uY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg3Mjk1MwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2RpcmVjdG9yaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtdmFsaWRhdGlvbi5jbWFrZQpAQCAtMCwwICsxLDI2IEBACisKK2lmIChOT1QgVkFMSURfTEFORykKKyAgc2V0IChWQUxJRF9MQU5HIEMpCitlbmRpZigpCitpZiAoTk9UIElOVkFMSURfTEFORykKKyAgc2V0IChJTlZBTElEX0xBTkcgQ1hYKQorZW5kaWYoKQoraWYgKE5PVCBUWVBFKQorICBzZXQgKFRZUEUgRVhFKQorZW5kaWYoKQorCitpZiAoTk9UIGFjdHVhbF9zdGRvdXQgTUFUQ0hFUyAiRElSXyR7VkFMSURfTEFOR31fJHtUWVBFfSIpCisgIHNldCAoUnVuQ01ha2VfVEVTVF9GQUlMRUQgIk5vdCBmb3VuZCBleHBlY3RlZCAnRElSXyR7VkFMSURfTEFOR31fJHtUWVBFfScuXG4iKQorZW5kaWYoKQoraWYgKGFjdHVhbF9zdGRvdXQgTUFUQ0hFUyAiRElSXyR7SU5WQUxJRF9MQU5HfV8ke1RZUEV9IikKKyAgaWYgKFJ1bkNNYWtlX1RFU1RfRkFJTEVEKQorICAgIHN0cmluZyAoQVBQRU5EIFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJcbiIpCisgIGVuZGlmKCkKKyAgc3RyaW5nIChBUFBFTkQgUnVuQ01ha2VfVEVTVF9GQUlMRUQgIkZvdW5kIHVuZXhwZWN0ZWQgJ0RJUl8ke0lOVkFMSURfTEFOR31fJHtUWVBFfSAnLiIpCitlbmRpZigpCitpZiAoYWN0dWFsX3N0ZG91dCBNQVRDSEVTICJESVJfKCR7VkFMSURfTEFOR318JHtJTlZBTElEX0xBTkd9KV9CQURJRF8ke1RZUEV9IikKKyAgaWYgKFJ1bkNNYWtlX1RFU1RfRkFJTEVEKQorICAgIHN0cmluZyAoQVBQRU5EIFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJcbiIpCisgIGVuZGlmKCkKKyAgc3RyaW5nIChBUFBFTkQgUnVuQ01ha2VfVEVTVF9GQUlMRUQgIkZvdW5kIHVuZXhwZWN0ZWQgJ0RJUl8oJHtWQUxJRF9MQU5HfXwke0lOVkFMSURfTEFOR30pX0JBRElEXyR7VFlQRX0nLiIpCitlbmRpZigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19kaXJlY3Rvcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjNiMzQyCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfZGlyZWN0b3JpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC5jbWFrZQpAQCAtMCwwICsxLDI5IEBACisKK2VuYWJsZV9sYW5ndWFnZShDKQorZW5hYmxlX2xhbmd1YWdlKENYWCkKKworc2V0KENNQUtFX1ZFUkJPU0VfTUFLRUZJTEUgVFJVRSkKK3NldChDTUFLRV9DX1VTRV9SRVNQT05TRV9GSUxFX0ZPUl9MSUJSQVJJRVMgRkFMU0UpCitzZXQoQ01BS0VfQ1hYX1VTRV9SRVNQT05TRV9GSUxFX0ZPUl9MSUJSQVJJRVMgRkFMU0UpCisKK2FkZF9saWJyYXJ5KExpbmtEaXJzX2ludGVyZmFjZSBJTlRFUkZBQ0UpCit0YXJnZXRfbGlua19kaXJlY3RvcmllcyAoTGlua0RpcnNfaW50ZXJmYWNlIElOVEVSRkFDRSAkPCQ8TElOS19MQU5HX0FORF9JRDpDLCR7Q01BS0VfQ19DT01QSUxFUl9JRH0+Oi9ESVJfQ19JTlRFUkZBQ0U+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HX0FORF9JRDpDWFgsJHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9PjovRElSX0NYWF9JTlRFUkZBQ0U+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HX0FORF9JRDpDLEJBRElEPjovRElSX0NfQkFESURfSU5URVJGQUNFPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6Q1hYLEJBRElEPjovRElSX0NYWF9CQURJRF9JTlRFUkZBQ0U+KQorCithZGRfZXhlY3V0YWJsZShMaW5rRGlyc19leGVfaW50ZXJmYWNlIGV4ZS5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChMaW5rRGlyc19leGVfaW50ZXJmYWNlIFBSSVZBVEUgTGlua0RpcnNfaW50ZXJmYWNlKQorCithZGRfZXhlY3V0YWJsZShMaW5rRGlyc19leGVfYyBleGUuYykKK3RhcmdldF9saW5rX29wdGlvbnMgKExpbmtEaXJzX2V4ZV9jIFBSSVZBVEUgJDwkPExJTktfTEFOR19BTkRfSUQ6Qywke0NNQUtFX0NfQ09NUElMRVJfSUR9PjovRElSX0NfRVhFPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HX0FORF9JRDpDWFgsJHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9PjovRElSX0NYWF9FWEU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkMsQkFESUQ+Oi9ESVJfQ19CQURJRF9FWEU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkNYWCxCQURJRD46L0RJUl9DWFhfQkFESURfRVhFPikKKworYWRkX2V4ZWN1dGFibGUoTGlua0RpcnNfZXhlX2N4eCBleGUuYykKK3RhcmdldF9saW5rX2RpcmVjdG9yaWVzIChMaW5rRGlyc19leGVfY3h4IFBSSVZBVEUgJDwkPExJTktfTEFOR19BTkRfSUQ6Qywke0NNQUtFX0NfQ09NUElMRVJfSUR9PjovRElSX0NfRVhFPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HX0FORF9JRDpDWFgsJHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9PjovRElSX0NYWF9FWEU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkMsQkFESUQ+Oi9ESVJfQ19CQURJRF9FWEU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkNYWCxCQURJRD46L0RJUl9DWFhfQkFESURfRVhFPikKK3NldF9wcm9wZXJ0eSAoVEFSR0VUIExpbmtEaXJzX2V4ZV9jeHggUFJPUEVSVFkgTElOS0VSX0xBTkdVQUdFIENYWCkKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9SdW5DTWFrZVRlc3QuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvUnVuQ01ha2VUZXN0LmNtYWtlCmluZGV4IDAxNTJkNGMuLmM3ZmViNWYgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9SdW5DTWFrZVRlc3QuY21ha2UKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL1J1bkNNYWtlVGVzdC5jbWFrZQpAQCAtMjAsMyArMjAsNTcgQEAKIHJ1bl9jbWFrZShTdGF0aWNQcml2YXRlRGVwTm90VGFyZ2V0KQogcnVuX2NtYWtlKFVOS05PV04tSU1QT1JURUQtR0xPQkFMKQogcnVuX2NtYWtlKGVtcHR5X2tleXdvcmRfYXJncykKK3J1bl9jbWFrZShnZW5leF9MSU5LX0xBTkdVQUdFLWJhZC11c2FnZSkKKworaWYgKFJ1bkNNYWtlX0dFTkVSQVRPUiBNQVRDSEVTICJNYWtlZmlsZXN8TmluamF8VmlzdWFsIFN0dWRpb3xYY29kZXxXYXRjb20gV01ha2UiKQorCisgIHJ1bl9jbWFrZShnZW5leF9MSU5LX0xBTkdVQUdFLWJhZC1taXgtbGFuZykKKyAgcnVuX2NtYWtlKGdlbmV4X0xJTktfTEFOR19BTkRfSUQtYmFkLW1peC1sYW5nKQorCisgIG1hY3JvKHJ1bl9jbWFrZV90YXJnZXQgdGVzdCBzdWJ0ZXN0IHRhcmdldCkKKyAgICBzZXQoUnVuQ01ha2VfVEVTVF9CSU5BUllfRElSICR7UnVuQ01ha2VfQklOQVJZX0RJUn0vJHt0ZXN0fS1idWlsZCkKKyAgICBzZXQoUnVuQ01ha2VfVEVTVF9OT19DTEVBTiAxKQorICAgIHJ1bl9jbWFrZV9jb21tYW5kKCR7dGVzdH0tJHtzdWJ0ZXN0fSAke0NNQUtFX0NPTU1BTkR9IC0tYnVpbGQgLiAtLXRhcmdldCAke3RhcmdldH0gJHtBUkdOfSkKKworICAgIHVuc2V0KFJ1bkNNYWtlX1RFU1RfQklOQVJZX0RJUikKKyAgICB1bnNldChSdW5DTWFrZV9URVNUX05PX0NMRUFOKQorICBlbmRtYWNybygpCisKKyAgc2V0KFJ1bkNNYWtlX1RFU1RfT1VUUFVUX01FUkdFIFRSVUUpCisgIGlmIChOT1QgUnVuQ01ha2VfR0VORVJBVE9SX0lTX01VTFRJX0NPTkZJRykKKyAgICBzZXQoUnVuQ01ha2VfVEVTVF9PUFRJT05TIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlKQorICBlbmRpZigpCisKKyAgcnVuX2NtYWtlKGdlbmV4X0xJTktfTEFOR1VBR0UpCisKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdVQUdFIGxpYiBMaW5rTGlicmFyaWVzX2xpYiAtLWNvbmZpZyBSZWxlYXNlKQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR1VBR0UgbGliMiBMaW5rTGlicmFyaWVzX2xpYjIgLS1jb25maWcgUmVsZWFzZSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdVQUdFIGxpYjMgTGlua0xpYnJhcmllc19saWIzIC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HVUFHRSBleGUgTGlua0xpYnJhcmllc19leGUgLS1jb25maWcgUmVsZWFzZSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdVQUdFIENfaW1wb3J0IExpbmtMaWJyYXJpZXNfQ19pbXBvcnQgLS1jb25maWcgUmVsZWFzZSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdVQUdFIENYWF9pbXBvcnQgTGlua0xpYnJhcmllc19DWFhfaW1wb3J0IC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HVUFHRSBDX2ludGVyZmFjZSBMaW5rTGlicmFyaWVzX0NfaW50ZXJmYWNlIC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HVUFHRSBDWFhfaW50ZXJmYWNlIExpbmtMaWJyYXJpZXNfQ1hYX2ludGVyZmFjZSAtLWNvbmZpZyBSZWxlYXNlKQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR1VBR0UgQ19pbnRlcmZhY2UyIExpbmtMaWJyYXJpZXNfQ19pbnRlcmZhY2UyIC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HVUFHRSBDWFhfaW50ZXJmYWNlMiBMaW5rTGlicmFyaWVzX0NYWF9pbnRlcmZhY2UyIC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HVUFHRSBDX3N0YXRpYyBMaW5rTGlicmFyaWVzX0Nfc3RhdGljIC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HVUFHRSBDWFhfc3RhdGljIExpbmtMaWJyYXJpZXNfQ1hYX3N0YXRpYyAtLWNvbmZpZyBSZWxlYXNlKQorCisgIHJ1bl9jbWFrZShnZW5leF9MSU5LX0xBTkdfQU5EX0lEKQorCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HX0FORF9JRCBsaWIgTGlua0xpYnJhcmllc19saWIgLS1jb25maWcgUmVsZWFzZSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdfQU5EX0lEIGxpYjIgTGlua0xpYnJhcmllc19saWIyIC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HX0FORF9JRCBsaWIzIExpbmtMaWJyYXJpZXNfbGliMyAtLWNvbmZpZyBSZWxlYXNlKQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgZXhlIExpbmtMaWJyYXJpZXNfZXhlIC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HX0FORF9JRCBDX2ltcG9ydCBMaW5rTGlicmFyaWVzX0NfaW1wb3J0IC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HX0FORF9JRCBDWFhfaW1wb3J0IExpbmtMaWJyYXJpZXNfQ1hYX2ltcG9ydCAtLWNvbmZpZyBSZWxlYXNlKQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgQ19pbnRlcmZhY2UgTGlua0xpYnJhcmllc19DX2ludGVyZmFjZSAtLWNvbmZpZyBSZWxlYXNlKQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgQ1hYX2ludGVyZmFjZSBMaW5rTGlicmFyaWVzX0NYWF9pbnRlcmZhY2UgLS1jb25maWcgUmVsZWFzZSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdfQU5EX0lEIENfaW50ZXJmYWNlMiBMaW5rTGlicmFyaWVzX0NfaW50ZXJmYWNlMiAtLWNvbmZpZyBSZWxlYXNlKQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgQ1hYX2ludGVyZmFjZTIgTGlua0xpYnJhcmllc19DWFhfaW50ZXJmYWNlMiAtLWNvbmZpZyBSZWxlYXNlKQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgQ1hYX3N0YXRpYyBMaW5rTGlicmFyaWVzX0NYWF9zdGF0aWMgLS1jb25maWcgUmVsZWFzZSkKKworICB1bnNldChSdW5DTWFrZV9URVNUX09QVElPTlMpCisgIHVuc2V0KFJ1bkNNYWtlX1RFU1RfT1VUUFVUX01FUkdFKQorCitlbmRpZigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZnVuYy5jIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2Z1bmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTVhOWJmCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2Z1bmMuYwpAQCAtMCwwICsxLDcgQEAKKworI2lmIGRlZmluZWQoX1dJTjMyKQorX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZW5kaWYKKyAgdm9pZCBmdW5jX2MoKQoreworfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2Z1bmMuY3h4IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2Z1bmMuY3h4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMmNhY2EKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZnVuYy5jeHgKQEAgLTAsMCArMSw3IEBACisKKyNpZiBkZWZpbmVkKF9XSU4zMikKK19fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2VuZGlmCisgIHZvaWQgZnVuY19jeHgoKQoreworfQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWJhZC1taXgtbGFuZy1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWJhZC1taXgtbGFuZy1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1iYWQtbWl4LWxhbmctc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWJhZC1taXgtbGFuZy1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlY2RjMGMKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1iYWQtbWl4LWxhbmctc3RkZXJyLnR4dApAQCAtMCwwICsxLDIgQEAKK0NNYWtlIEVycm9yOiBFdmFsdWF0aW9uIG9mIFwkPExJTktfTEFOR1VBR0U6Li4uPiBvciBcJDxMSU5LX0xBTkRfQU5EX0lEOi4uLj4gY2hhbmdlcwordGhlIGxpbmtlciBsYW5ndWFnZSBmb3IgdGFyZ2V0ICJMaW5rTGlicmFyaWVzX2JhZF9taXhfbGFuZ3VhZ2VzIiBcKGZyb20gJ0MnIHRvICdDWFgnXCkgd2hpY2ggaXMgaW52YWxpZC4KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWJhZC1taXgtbGFuZy5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWJhZC1taXgtbGFuZy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGVmYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR1VBR0UtYmFkLW1peC1sYW5nLmNtYWtlCkBAIC0wLDAgKzEsOCBAQAorCitlbmFibGVfbGFuZ3VhZ2UoQykKK2VuYWJsZV9sYW5ndWFnZShDWFgpCisKK2FkZF9saWJyYXJ5KHN0YXRpY19DWFggU1RBVElDIGZ1bmMuY3h4KQorCithZGRfZXhlY3V0YWJsZShMaW5rTGlicmFyaWVzX2JhZF9taXhfbGFuZ3VhZ2VzIG1haW4uYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua0xpYnJhcmllc19iYWRfbWl4X2xhbmd1YWdlcyBQUklWQVRFICQ8JDxMSU5LX0xBTkdVQUdFOkM+OnN0YXRpY19DWFg+KQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWJhZC11c2FnZS1yZXN1bHQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gVGVzdHMvUnVuQ01ha2UvTGFuZ3VhZ2VzL0xJTktfTEFOR1VBR0UtZ2VuZXgtcmVzdWx0LnR4dApjb3B5IHRvIFRlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWJhZC11c2FnZS1yZXN1bHQudHh0CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1iYWQtdXNhZ2Utc3RkZXJyLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLWJhZC11c2FnZS1zdGRlcnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OWYxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1iYWQtdXNhZ2Utc3RkZXJyLnR4dApAQCAtMCwwICsxLDggQEAKK0NNYWtlIEVycm9yIGF0IGdlbmV4X0xJTktfTEFOR1VBR0UtYmFkLXVzYWdlLmNtYWtlOjQgXCh0YXJnZXRfbGlua19saWJyYXJpZXNcKToKKyAgRXJyb3IgZXZhbHVhdGluZyBnZW5lcmF0b3IgZXhwcmVzc2lvbjoKKworICAgIFwkPExJTktfTEFOR1VBR0U+CisKKyAgXCQ8TElOS19MQU5HVUFHRT4gaXMgbm90IHN1cHBvcnRlZCBpbiBsaW5rIGxpYnJhcmllcyBleHByZXNzaW9uLgorQ2FsbCBTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgQ01ha2VMaXN0cy50eHQ6MyBcKGluY2x1ZGVcKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR1VBR0UtYmFkLXVzYWdlLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR1VBR0UtYmFkLXVzYWdlLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxY2ZiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS1iYWQtdXNhZ2UuY21ha2UKQEAgLTAsMCArMSw0IEBACitlbmFibGVfbGFuZ3VhZ2UoQykKKworYWRkX2xpYnJhcnkoc2ltcGxlIFNIQVJFRCBlbXB0eS5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKHNpbXBsZSBQUklWQVRFIGxpYiQ8TElOS19MQU5HVUFHRT4pCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdVQUdFLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZmU5NTUKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HVUFHRS5jbWFrZQpAQCAtMCwwICsxLDcyIEBACisKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjE2Li4uMy4xNykKKworZW5hYmxlX2xhbmd1YWdlKEMpCitlbmFibGVfbGFuZ3VhZ2UoQ1hYKQorCithZGRfbGlicmFyeShzaGFyZWRfQyBTSEFSRUQgZnVuYy5jKQorYWRkX2xpYnJhcnkoc2hhcmVkX0NYWCBTSEFSRUQgZnVuYy5jeHgpCisKKworYWRkX2xpYnJhcnkoc3RhdGljMV9DIFNUQVRJQyBlbXB0eS5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChzdGF0aWMxX0MgSU5URVJGQUNFICQ8JDxMSU5LX0xBTkdVQUdFOkM+OnNoYXJlZF9DPikKKworYWRkX2xpYnJhcnkoc3RhdGljMl9DIFNUQVRJQyBlbXB0eS5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChzdGF0aWMyX0MgUFJJVkFURSAkPCQ8TElOS19MQU5HVUFHRTpDPjpzaGFyZWRfQz4pCisKKworc2V0IChiaW5hcnlfZGlyICIke0NNQUtFX0JJTkFSWV9ESVJ9IikKK2dldF9wcm9wZXJ0eSAoaXNfbXVsdGlfY29uZmlnIEdMT0JBTCBQUk9QRVJUWSBHRU5FUkFUT1JfSVNfTVVMVElfQ09ORklHKQoraWYgKGlzX211bHRpX2NvbmZpZykKKyAgc3RyaW5nIChBUFBFTkQgYmluYXJ5X2RpciAiL1JlbGVhc2UiKQorZW5kaWYoKQorYWRkX2xpYnJhcnkoaW1wb3J0IFNUQVRJQyBJTVBPUlRFRCkKK3NldF9wcm9wZXJ0eShUQVJHRVQgaW1wb3J0IFBST1BFUlRZIElNUE9SVEVEX0xPQ0FUSU9OICIke2JpbmFyeV9kaXJ9LyR7Q01BS0VfU1RBVElDX0xJQlJBUllfUFJFRklYfXN0YXRpYzFfQyR7Q01BS0VfU1RBVElDX0xJQlJBUllfU1VGRklYfSIpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKGltcG9ydCBJTlRFUkZBQ0UgJDwkPExJTktfTEFOR1VBR0U6Qz46c2hhcmVkX0M+KQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChpbXBvcnQgSU5URVJGQUNFICQ8JDxMSU5LX0xBTkdVQUdFOkNYWD46c2hhcmVkX0NYWD4pCisKKworYWRkX2xpYnJhcnkoaW50ZXJmYWNlIElOVEVSRkFDRSkKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoaW50ZXJmYWNlIElOVEVSRkFDRSAkPCQ8TElOS19MQU5HVUFHRTpDPjpzaGFyZWRfQz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HVUFHRTpDWFg+OnNoYXJlZF9DWFg+KQorCisKK2FkZF9saWJyYXJ5KGludGVyZmFjZTIgSU5URVJGQUNFKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChpbnRlcmZhY2UyIElOVEVSRkFDRSBpbXBvcnQpCisKKworYWRkX2xpYnJhcnkoc3RhdGljMyBTVEFUSUMgZW1wdHkuYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoc3RhdGljMyBQUklWQVRFIGludGVyZmFjZSkKKworCithZGRfbGlicmFyeShMaW5rTGlicmFyaWVzX2xpYiBTSEFSRUQgbGliLmMpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKExpbmtMaWJyYXJpZXNfbGliIFBSSVZBVEUgJDwkPExJTktfTEFOR1VBR0U6Qz46c2hhcmVkX0M+KQorCithZGRfbGlicmFyeShMaW5rTGlicmFyaWVzX2xpYjIgU0hBUkVEIGxpYi5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChMaW5rTGlicmFyaWVzX2xpYjIgUFJJVkFURSAkPCQ8TElOS19MQU5HVUFHRTpDPjpzdGF0aWMxX0M+KQorCithZGRfbGlicmFyeShMaW5rTGlicmFyaWVzX2xpYjMgU0hBUkVEIGxpYi5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChMaW5rTGlicmFyaWVzX2xpYjMgUFJJVkFURSAkPCQ8TElOS19MQU5HVUFHRTpDPjpzdGF0aWMyX0M+KQorCithZGRfZXhlY3V0YWJsZShMaW5rTGlicmFyaWVzX2V4ZSBtYWluLmMpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKExpbmtMaWJyYXJpZXNfZXhlIFBSSVZBVEUgJDwkPExJTktfTEFOR1VBR0U6Qz46c2hhcmVkX0M+KQorCithZGRfZXhlY3V0YWJsZShMaW5rTGlicmFyaWVzX0NfaW1wb3J0IG1haW4uYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua0xpYnJhcmllc19DX2ltcG9ydCBQUklWQVRFIGltcG9ydCkKK2FkZF9leGVjdXRhYmxlKExpbmtMaWJyYXJpZXNfQ1hYX2ltcG9ydCBtYWluLmN4eCkKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua0xpYnJhcmllc19DWFhfaW1wb3J0IFBSSVZBVEUgaW1wb3J0KQorCithZGRfZXhlY3V0YWJsZShMaW5rTGlicmFyaWVzX0NfaW50ZXJmYWNlIG1haW4uYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua0xpYnJhcmllc19DX2ludGVyZmFjZSBQUklWQVRFIGludGVyZmFjZSkKK2FkZF9leGVjdXRhYmxlKExpbmtMaWJyYXJpZXNfQ1hYX2ludGVyZmFjZSBtYWluLmN4eCkKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua0xpYnJhcmllc19DWFhfaW50ZXJmYWNlIFBSSVZBVEUgaW50ZXJmYWNlKQorCithZGRfZXhlY3V0YWJsZShMaW5rTGlicmFyaWVzX0NfaW50ZXJmYWNlMiBtYWluLmMpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKExpbmtMaWJyYXJpZXNfQ19pbnRlcmZhY2UyIFBSSVZBVEUgaW50ZXJmYWNlMikKK2FkZF9leGVjdXRhYmxlKExpbmtMaWJyYXJpZXNfQ1hYX2ludGVyZmFjZTIgbWFpbi5jeHgpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKExpbmtMaWJyYXJpZXNfQ1hYX2ludGVyZmFjZTIgUFJJVkFURSBpbnRlcmZhY2UyKQorCithZGRfZXhlY3V0YWJsZShMaW5rTGlicmFyaWVzX0Nfc3RhdGljIG1haW4uYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua0xpYnJhcmllc19DX3N0YXRpYyBQUklWQVRFIHN0YXRpYzMpCithZGRfZXhlY3V0YWJsZShMaW5rTGlicmFyaWVzX0NYWF9zdGF0aWMgbWFpbi5jeHgpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKExpbmtMaWJyYXJpZXNfQ1hYX3N0YXRpYyBQUklWQVRFIHN0YXRpYzMpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtYmFkLW1peC1sYW5nLXJlc3VsdC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBUZXN0cy9SdW5DTWFrZS9MYW5ndWFnZXMvTElOS19MQU5HVUFHRS1nZW5leC1yZXN1bHQudHh0CmNvcHkgdG8gVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtYmFkLW1peC1sYW5nLXJlc3VsdC50eHQKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWJhZC1taXgtbGFuZy1zdGRlcnIudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtYmFkLW1peC1sYW5nLXN0ZGVyci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjZGMwYwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWJhZC1taXgtbGFuZy1zdGRlcnIudHh0CkBAIC0wLDAgKzEsMiBAQAorQ01ha2UgRXJyb3I6IEV2YWx1YXRpb24gb2YgXCQ8TElOS19MQU5HVUFHRTouLi4+IG9yIFwkPExJTktfTEFORF9BTkRfSUQ6Li4uPiBjaGFuZ2VzCit0aGUgbGlua2VyIGxhbmd1YWdlIGZvciB0YXJnZXQgIkxpbmtMaWJyYXJpZXNfYmFkX21peF9sYW5ndWFnZXMiIFwoZnJvbSAnQycgdG8gJ0NYWCdcKSB3aGljaCBpcyBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtYmFkLW1peC1sYW5nLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtYmFkLW1peC1sYW5nLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MDAxMGEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1iYWQtbWl4LWxhbmcuY21ha2UKQEAgLTAsMCArMSw4IEBACisKK2VuYWJsZV9sYW5ndWFnZShDKQorZW5hYmxlX2xhbmd1YWdlKENYWCkKKworYWRkX2xpYnJhcnkoc3RhdGljX0NYWCBTVEFUSUMgZnVuYy5jeHgpCisKK2FkZF9leGVjdXRhYmxlKExpbmtMaWJyYXJpZXNfYmFkX21peF9sYW5ndWFnZXMgbWFpbi5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChMaW5rTGlicmFyaWVzX2JhZF9taXhfbGFuZ3VhZ2VzIFBSSVZBVEUgJDwkPExJTktfTEFOR19BTkRfSUQ6Qywke0NNQUtFX0NfQ09NUElMRVJfSUR9PjpzdGF0aWNfQ1hYPikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWJhc2ljLXJlc3VsdC50eHQgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1iYXNpYy1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1iYXNpYy1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1leGVfYy1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtZXhlX2MtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk4ZjlkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtZXhlX2MtcmVzdWx0LnR4dApAQCAtMCwwICsxIEBACisuKgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtZXhlX2N4eC1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtZXhlX2N4eC1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1leGVfY3h4LXJlc3VsdC50eHQKQEAgLTAsMCArMSBAQAorLioKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWludGVyZmFjZS1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtaW50ZXJmYWNlLXJlc3VsdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ5OGY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWludGVyZmFjZS1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1ub19sYW5ndWFnZS1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtbm9fbGFuZ3VhZ2UtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzM1NDFhCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtbm9fbGFuZ3VhZ2UtcmVzdWx0LnR4dApAQCAtMCwwICsxIEBACiswCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZWNjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC5jbWFrZQpAQCAtMCwwICsxLDczIEBACisKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjE2Li4uMy4xNykKKworZW5hYmxlX2xhbmd1YWdlKEMpCitlbmFibGVfbGFuZ3VhZ2UoQ1hYKQorCisKK2FkZF9saWJyYXJ5KHNoYXJlZF9DIFNIQVJFRCBmdW5jLmMpCithZGRfbGlicmFyeShzaGFyZWRfQ1hYIFNIQVJFRCBmdW5jLmN4eCkKKworCithZGRfbGlicmFyeShzdGF0aWMxX0MgU1RBVElDIGVtcHR5LmMpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKHN0YXRpYzFfQyBJTlRFUkZBQ0UgJDwkPExJTktfTEFOR19BTkRfSUQ6Qywke0NNQUtFX0NfQ09NUElMRVJfSUR9PjpzaGFyZWRfQz4pCisKK2FkZF9saWJyYXJ5KHN0YXRpYzJfQyBTVEFUSUMgZW1wdHkuYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoc3RhdGljMl9DIFBSSVZBVEUgJDwkPExJTktfTEFOR19BTkRfSUQ6Qywke0NNQUtFX0NfQ09NUElMRVJfSUR9PjpzaGFyZWRfQz4pCisKKworc2V0IChiaW5hcnlfZGlyICIke0NNQUtFX0JJTkFSWV9ESVJ9IikKK2dldF9wcm9wZXJ0eSAoaXNfbXVsdGlfY29uZmlnIEdMT0JBTCBQUk9QRVJUWSBHRU5FUkFUT1JfSVNfTVVMVElfQ09ORklHKQoraWYgKGlzX211bHRpX2NvbmZpZykKKyAgc3RyaW5nIChBUFBFTkQgYmluYXJ5X2RpciAiL1JlbGVhc2UiKQorZW5kaWYoKQorYWRkX2xpYnJhcnkoaW1wb3J0IFNUQVRJQyBJTVBPUlRFRCkKK3NldF9wcm9wZXJ0eShUQVJHRVQgaW1wb3J0IFBST1BFUlRZIElNUE9SVEVEX0xPQ0FUSU9OICIke2JpbmFyeV9kaXJ9LyR7Q01BS0VfU1RBVElDX0xJQlJBUllfUFJFRklYfXN0YXRpYzFfQyR7Q01BS0VfU1RBVElDX0xJQlJBUllfU1VGRklYfSIpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKGltcG9ydCBJTlRFUkZBQ0UgJDwkPExJTktfTEFOR19BTkRfSUQ6Qywke0NNQUtFX0NfQ09NUElMRVJfSUR9PjpzaGFyZWRfQz4pCit0YXJnZXRfbGlua19saWJyYXJpZXMgKGltcG9ydCBJTlRFUkZBQ0UgJDwkPExJTktfTEFOR19BTkRfSUQ6Q1hYLCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lEfT46c2hhcmVkX0NYWD4pCisKKworYWRkX2xpYnJhcnkoaW50ZXJmYWNlIElOVEVSRkFDRSkKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoaW50ZXJmYWNlIElOVEVSRkFDRSAkPCQ8TElOS19MQU5HX0FORF9JRDpDLCR7Q01BS0VfQ19DT01QSUxFUl9JRH0+OnNoYXJlZF9DPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkNYWCwke0NNQUtFX0NYWF9DT01QSUxFUl9JRH0+OnNoYXJlZF9DWFg+KQorCisKK2FkZF9saWJyYXJ5KGludGVyZmFjZTIgSU5URVJGQUNFKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChpbnRlcmZhY2UyIElOVEVSRkFDRSBpbXBvcnQpCisKKworYWRkX2xpYnJhcnkoc3RhdGljMyBTVEFUSUMgZW1wdHkuYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoc3RhdGljMyBQUklWQVRFIGludGVyZmFjZSkKKworCithZGRfbGlicmFyeShMaW5rTGlicmFyaWVzX2xpYiBTSEFSRUQgbGliLmMpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKExpbmtMaWJyYXJpZXNfbGliIFBSSVZBVEUgJDwkPExJTktfTEFOR19BTkRfSUQ6Qywke0NNQUtFX0NfQ09NUElMRVJfSUR9PjpzaGFyZWRfQz4pCisKK2FkZF9saWJyYXJ5KExpbmtMaWJyYXJpZXNfbGliMiBTSEFSRUQgbGliLmMpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKExpbmtMaWJyYXJpZXNfbGliMiBQUklWQVRFICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkMsJHtDTUFLRV9DX0NPTVBJTEVSX0lEfT46c3RhdGljMV9DPikKKworYWRkX2xpYnJhcnkoTGlua0xpYnJhcmllc19saWIzIFNIQVJFRCBsaWIuYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua0xpYnJhcmllc19saWIzIFBSSVZBVEUgJDwkPExJTktfTEFOR19BTkRfSUQ6Qywke0NNQUtFX0NfQ09NUElMRVJfSUR9PjpzdGF0aWMyX0M+KQorCithZGRfZXhlY3V0YWJsZShMaW5rTGlicmFyaWVzX2V4ZSBtYWluLmMpCit0YXJnZXRfbGlua19saWJyYXJpZXMgKExpbmtMaWJyYXJpZXNfZXhlIFBSSVZBVEUgJDwkPExJTktfTEFOR19BTkRfSUQ6Qywke0NNQUtFX0NfQ09NUElMRVJfSUR9PjpzaGFyZWRfQz4pCisKK2FkZF9leGVjdXRhYmxlKExpbmtMaWJyYXJpZXNfQ19pbXBvcnQgbWFpbi5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChMaW5rTGlicmFyaWVzX0NfaW1wb3J0IFBSSVZBVEUgaW1wb3J0KQorYWRkX2V4ZWN1dGFibGUoTGlua0xpYnJhcmllc19DWFhfaW1wb3J0IG1haW4uY3h4KQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChMaW5rTGlicmFyaWVzX0NYWF9pbXBvcnQgUFJJVkFURSBpbXBvcnQpCisKK2FkZF9leGVjdXRhYmxlKExpbmtMaWJyYXJpZXNfQ19pbnRlcmZhY2UgbWFpbi5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChMaW5rTGlicmFyaWVzX0NfaW50ZXJmYWNlIFBSSVZBVEUgaW50ZXJmYWNlKQorYWRkX2V4ZWN1dGFibGUoTGlua0xpYnJhcmllc19DWFhfaW50ZXJmYWNlIG1haW4uY3h4KQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChMaW5rTGlicmFyaWVzX0NYWF9pbnRlcmZhY2UgUFJJVkFURSBpbnRlcmZhY2UpCisKK2FkZF9leGVjdXRhYmxlKExpbmtMaWJyYXJpZXNfQ19pbnRlcmZhY2UyIG1haW4uYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua0xpYnJhcmllc19DX2ludGVyZmFjZTIgUFJJVkFURSBpbnRlcmZhY2UyKQorYWRkX2V4ZWN1dGFibGUoTGlua0xpYnJhcmllc19DWFhfaW50ZXJmYWNlMiBtYWluLmN4eCkKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua0xpYnJhcmllc19DWFhfaW50ZXJmYWNlMiBQUklWQVRFIGludGVyZmFjZTIpCisKK2FkZF9leGVjdXRhYmxlKExpbmtMaWJyYXJpZXNfQ19zdGF0aWMgbWFpbi5jKQordGFyZ2V0X2xpbmtfbGlicmFyaWVzIChMaW5rTGlicmFyaWVzX0Nfc3RhdGljIFBSSVZBVEUgc3RhdGljMykKK2FkZF9leGVjdXRhYmxlKExpbmtMaWJyYXJpZXNfQ1hYX3N0YXRpYyBtYWluLmN4eCkKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua0xpYnJhcmllc19DWFhfc3RhdGljIFBSSVZBVEUgc3RhdGljMykKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9saWIuYyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9saWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmQxYjY2Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL2xpYi5jCkBAIC0wLDAgKzEsMTAgQEAKKworI2lmIGRlZmluZWQoX1dJTjMyKQorX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZW5kaWYKKyAgdm9pZCBmdW5jX2MoKTsKKwordm9pZCBsaWIoKQoreworICBmdW5jX2MoKTsKK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9tYWluLmMgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5MDhkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19saWJyYXJpZXMvbWFpbi5jCkBAIC0wLDAgKzEsMTIgQEAKKworI2lmIGRlZmluZWQoX1dJTjMyKQorX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZW5kaWYKKyAgdm9pZCBmdW5jX2MoKTsKKworaW50IG1haW4oKQoreworICBmdW5jX2MoKTsKKworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9tYWluLmN4eCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX2xpYnJhcmllcy9tYWluLmN4eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmFhM2I0Ci0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfbGlicmFyaWVzL21haW4uY3h4CkBAIC0wLDAgKzEsMTIgQEAKKworI2lmIGRlZmluZWQoX1dJTjMyKQorX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZW5kaWYKKyAgdm9pZCBmdW5jX2N4eCgpOworCitpbnQgbWFpbigpCit7CisgIGZ1bmNfY3h4KCk7CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL1J1bkNNYWtlVGVzdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvUnVuQ01ha2VUZXN0LmNtYWtlCmluZGV4IGNkZmRkN2IuLjlmZGNkZWUgMTAwNjQ0Ci0tLSBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvUnVuQ01ha2VUZXN0LmNtYWtlCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvUnVuQ01ha2VUZXN0LmNtYWtlCkBAIC0yNyw2ICsyNywyMyBAQAogICBydW5fY21ha2VfdGFyZ2V0KExJTktfT1BUSU9OUyBtb2QgTGlua09wdGlvbnNfbW9kIC0tY29uZmlnIFJlbGVhc2UpCiAgIHJ1bl9jbWFrZV90YXJnZXQoTElOS19PUFRJT05TIGV4ZSBMaW5rT3B0aW9uc19leGUgLS1jb25maWcgUmVsZWFzZSkKIAorCisgIHJ1bl9jbWFrZShnZW5leF9MSU5LX0xBTkdVQUdFKQorCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HVUFHRSBpbnRlcmZhY2UgTGlua09wdGlvbnNfc2hhcmVkX2ludGVyZmFjZSAtLWNvbmZpZyBSZWxlYXNlKQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR1VBR0Ugc2hhcmVkX2MgTGlua09wdGlvbnNfc2hhcmVkX2MgLS1jb25maWcgUmVsZWFzZSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdVQUdFIExJTktFUl9MQU5HVUFHRSBMaW5rT3B0aW9uc19zaGFyZWRfY3h4IC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HVUFHRSBtb2QgTGlua09wdGlvbnNfbW9kIC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HVUFHRSBleGUgTGlua09wdGlvbnNfZXhlIC0tY29uZmlnIFJlbGVhc2UpCisKKyAgcnVuX2NtYWtlKGdlbmV4X0xJTktfTEFOR19BTkRfSUQpCisKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdfQU5EX0lEIGludGVyZmFjZSBMaW5rT3B0aW9uc19zaGFyZWRfaW50ZXJmYWNlIC0tY29uZmlnIFJlbGVhc2UpCisgIHJ1bl9jbWFrZV90YXJnZXQoZ2VuZXhfTElOS19MQU5HX0FORF9JRCBzaGFyZWRfYyBMaW5rT3B0aW9uc19zaGFyZWRfYyAtLWNvbmZpZyBSZWxlYXNlKQorICBydW5fY21ha2VfdGFyZ2V0KGdlbmV4X0xJTktfTEFOR19BTkRfSUQgTElOS0VSX0xBTkdVQUdFIExpbmtPcHRpb25zX3NoYXJlZF9jeHggLS1jb25maWcgUmVsZWFzZSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdfQU5EX0lEIG1vZCBMaW5rT3B0aW9uc19tb2QgLS1jb25maWcgUmVsZWFzZSkKKyAgcnVuX2NtYWtlX3RhcmdldChnZW5leF9MSU5LX0xBTkdfQU5EX0lEIGV4ZSBMaW5rT3B0aW9uc19leGUgLS1jb25maWcgUmVsZWFzZSkKKwogICB1bnNldChSdW5DTWFrZV9URVNUX09QVElPTlMpCiAgIHVuc2V0KFJ1bkNNYWtlX1RFU1RfT1VUUFVUX01FUkdFKQogZW5kaWYoKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLUxJTktFUl9MQU5HVUFHRS1jaGVjay5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1MSU5LRVJfTEFOR1VBR0UtY2hlY2suY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEzOTgxMAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1MSU5LRVJfTEFOR1VBR0UtY2hlY2suY21ha2UKQEAgLTAsMCArMSw1IEBACisKK3NldCAoVkFMSURfTEFORyBDWFgpCitzZXQgKElOVkFMSURfTEFORyBDKQorCitpbmNsdWRlICgiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9nZW5leF9MSU5LX0xBTkdVQUdFLXZhbGlkYXRpb24uY21ha2UiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLUxJTktFUl9MQU5HVUFHRS1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLUxJTktFUl9MQU5HVUFHRS1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UtTElOS0VSX0xBTkdVQUdFLXJlc3VsdC50eHQKQEAgLTAsMCArMSBAQAorLioKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1leGUtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UtZXhlLWNoZWNrLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZjY0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UtZXhlLWNoZWNrLmNtYWtlCkBAIC0wLDAgKzEsMiBAQAorCitpbmNsdWRlICgiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9nZW5leF9MSU5LX0xBTkdVQUdFLXZhbGlkYXRpb24uY21ha2UiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLWV4ZS1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLWV4ZS1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UtZXhlLXJlc3VsdC50eHQKQEAgLTAsMCArMSBAQAorLioKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1pbnRlcmZhY2UtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UtaW50ZXJmYWNlLWNoZWNrLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMDEyMGMKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UtaW50ZXJmYWNlLWNoZWNrLmNtYWtlCkBAIC0wLDAgKzEsNSBAQAorCitzZXQgKFZBTElEX0xBTkcgQykKK3NldCAoSU5WQUxJRF9MQU5HIENYWCkKKworaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2VuZXhfTElOS19MQU5HVUFHRS12YWxpZGF0aW9uLmNtYWtlIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1pbnRlcmZhY2UtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1pbnRlcmZhY2UtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk4ZjlkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLWludGVyZmFjZS1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UtbW9kLWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLW1vZC1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWY2NDFkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLW1vZC1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDIgQEAKKworaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2VuZXhfTElOS19MQU5HVUFHRS12YWxpZGF0aW9uLmNtYWtlIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1tb2QtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1tb2QtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk4ZjlkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLW1vZC1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0Utc2hhcmVkX2MtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0Utc2hhcmVkX2MtY2hlY2suY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwMTIwYwotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1zaGFyZWRfYy1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDUgQEAKKworc2V0IChWQUxJRF9MQU5HIEMpCitzZXQgKElOVkFMSURfTEFORyBDWFgpCisKK2luY2x1ZGUgKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L2dlbmV4X0xJTktfTEFOR1VBR0UtdmFsaWRhdGlvbi5jbWFrZSIpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0Utc2hhcmVkX2MtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS1zaGFyZWRfYy1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0Utc2hhcmVkX2MtcmVzdWx0LnR4dApAQCAtMCwwICsxIEBACisuKgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLXZhbGlkYXRpb24uY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UtdmFsaWRhdGlvbi5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDIzN2FiCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdVQUdFLXZhbGlkYXRpb24uY21ha2UKQEAgLTAsMCArMSwxNyBAQAorCitpZiAoTk9UIERFRklORUQgVkFMSURfTEFORykKKyAgc2V0IChWQUxJRF9MQU5HIEMpCitlbmRpZigpCitpZiAoTk9UIERFRklORUQgSU5WQUxJRF9MQU5HKQorICBzZXQgKElOVkFMSURfTEFORyBDWFgpCitlbmRpZigpCisKK2lmIChOT1QgYWN0dWFsX3N0ZG91dCBNQVRDSEVTICJCQURGTEFHXyR7VkFMSURfTEFOR31fTEFORyIpCisgIHNldCAoUnVuQ01ha2VfVEVTVF9GQUlMRUQgIk5vdCBmb3VuZCBleHBlY3RlZCAnQkFERkxBR18ke1ZBTElEX0xBTkd9X0xBTkcnLiIpCitlbmRpZigpCitpZiAoYWN0dWFsX3N0ZG91dCBNQVRDSEVTICJCQURGTEFHXyR7SU5WQUxJRF9MQU5HfV9MQU5HIikKKyAgaWYgKFJ1bkNNYWtlX1RFU1RfRkFJTEVEKQorICAgIHN0cmluZyAoQVBQRU5EIFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJcbiIpCisgIGVuZGlmKCkKKyAgc3RyaW5nIChBUFBFTkQgUnVuQ01ha2VfVEVTVF9GQUlMRUQgIkZvdW5kIHVuZXhwZWN0ZWQgJ0JBREZMQUdfJHtJTlZBTElEX0xBTkd9X0xBTkcnLiIpCitlbmRpZigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR1VBR0UuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFlNjE1OQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HVUFHRS5jbWFrZQpAQCAtMCwwICsxLDMyIEBACisKK2VuYWJsZV9sYW5ndWFnZShDKQorZW5hYmxlX2xhbmd1YWdlKENYWCkKKworc2V0IChvYmogIiR7Q01BS0VfQ19PVVRQVVRfRVhURU5TSU9OfSIpCitpZihCT1JMQU5EKQorICBzZXQocHJlIC0pCitlbmRpZigpCisKK2FkZF9saWJyYXJ5KExpbmtPcHRpb25zX2ludGVyZmFjZSBJTlRFUkZBQ0UpCit0YXJnZXRfbGlua19vcHRpb25zIChMaW5rT3B0aW9uc19pbnRlcmZhY2UgSU5URVJGQUNFICQ8JDxMSU5LX0xBTkdVQUdFOkM+OiR7cHJlfUJBREZMQUdfJDxMSU5LX0xBTkdVQUdFPl9MQU5HJHtvYmp9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HVUFHRTpDWFg+OiR7cHJlfUJBREZMQUdfJDxMSU5LX0xBTkdVQUdFPl9MQU5HJHtvYmp9PikKKworYWRkX2xpYnJhcnkoTGlua09wdGlvbnNfc2hhcmVkX2ludGVyZmFjZSBTSEFSRUQgTGlua09wdGlvbnNMaWIuYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua09wdGlvbnNfc2hhcmVkX2ludGVyZmFjZSBQUklWQVRFIExpbmtPcHRpb25zX2ludGVyZmFjZSkKKworYWRkX2xpYnJhcnkoTGlua09wdGlvbnNfc2hhcmVkX2MgU0hBUkVEIExpbmtPcHRpb25zTGliLmMpCit0YXJnZXRfbGlua19vcHRpb25zIChMaW5rT3B0aW9uc19zaGFyZWRfYyBQUklWQVRFICQ8JDxMSU5LX0xBTkdVQUdFOkM+OiR7cHJlfUJBREZMQUdfJDxMSU5LX0xBTkdVQUdFPl9MQU5HJHtvYmp9PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HVUFHRTpDWFg+OiR7cHJlfUJBREZMQUdfJDxMSU5LX0xBTkdVQUdFPl9MQU5HJHtvYmp9PikKKworYWRkX2xpYnJhcnkoTGlua09wdGlvbnNfc2hhcmVkX2N4eCBTSEFSRUQgTGlua09wdGlvbnNMaWIuYykKK3RhcmdldF9saW5rX29wdGlvbnMgKExpbmtPcHRpb25zX3NoYXJlZF9jeHggUFJJVkFURSAkPCQ8TElOS19MQU5HVUFHRTpDPjoke3ByZX1CQURGTEFHXyQ8TElOS19MQU5HVUFHRT5fTEFORyR7b2JqfT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HVUFHRTpDWFg+OiR7cHJlfUJBREZMQUdfJDxMSU5LX0xBTkdVQUdFPl9MQU5HJHtvYmp9PikKK3NldF9wcm9wZXJ0eSAoVEFSR0VUIExpbmtPcHRpb25zX3NoYXJlZF9jeHggUFJPUEVSVFkgTElOS0VSX0xBTkdVQUdFIENYWCkKKworYWRkX2xpYnJhcnkoTGlua09wdGlvbnNfbW9kIE1PRFVMRSBMaW5rT3B0aW9uc0xpYi5jKQordGFyZ2V0X2xpbmtfb3B0aW9ucyAoTGlua09wdGlvbnNfbW9kIFBSSVZBVEUgJDwkPExJTktfTEFOR1VBR0U6Qz46JHtwcmV9QkFERkxBR18kPExJTktfTEFOR1VBR0U+X0xBTkcke29ian0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HVUFHRTpDWFg+OiR7cHJlfUJBREZMQUdfJDxMSU5LX0xBTkdVQUdFPl9MQU5HJHtvYmp9PikKKworYWRkX2V4ZWN1dGFibGUoTGlua09wdGlvbnNfZXhlIExpbmtPcHRpb25zRXhlLmMpCit0YXJnZXRfbGlua19vcHRpb25zIChMaW5rT3B0aW9uc19leGUgUFJJVkFURSAkPCQ8TElOS19MQU5HVUFHRTpDPjoke3ByZX1CQURGTEFHXyQ8TElOS19MQU5HVUFHRT5fTEFORyR7b2JqfT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ8JDxMSU5LX0xBTkdVQUdFOkNYWD46JHtwcmV9QkFERkxBR18kPExJTktfTEFOR1VBR0U+X0xBTkcke29ian0+KQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELUxJTktFUl9MQU5HVUFHRS1jaGVjay5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1MSU5LRVJfTEFOR1VBR0UtY2hlY2suY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ0Zjg1MQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1MSU5LRVJfTEFOR1VBR0UtY2hlY2suY21ha2UKQEAgLTAsMCArMSw1IEBACisKK3NldCAoVkFMSURfTEFORyBDWFgpCitzZXQgKElOVkFMSURfTEFORyBDKQorCitpbmNsdWRlICgiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXZhbGlkYXRpb24uY21ha2UiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELUxJTktFUl9MQU5HVUFHRS1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELUxJTktFUl9MQU5HVUFHRS1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtTElOS0VSX0xBTkdVQUdFLXJlc3VsdC50eHQKQEAgLTAsMCArMSBAQAorLioKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1leGUtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtZXhlLWNoZWNrLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZGRlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtZXhlLWNoZWNrLmNtYWtlCkBAIC0wLDAgKzEsMiBAQAorCitpbmNsdWRlICgiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXZhbGlkYXRpb24uY21ha2UiKQpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWV4ZS1yZXN1bHQudHh0IGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWV4ZS1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtZXhlLXJlc3VsdC50eHQKQEAgLTAsMCArMSBAQAorLioKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1pbnRlcmZhY2UtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtaW50ZXJmYWNlLWNoZWNrLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNDk4ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtaW50ZXJmYWNlLWNoZWNrLmNtYWtlCkBAIC0wLDAgKzEsNSBAQAorCitzZXQgKFZBTElEX0xBTkcgQykKK3NldCAoSU5WQUxJRF9MQU5HIENYWCkKKworaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2VuZXhfTElOS19MQU5HX0FORF9JRC12YWxpZGF0aW9uLmNtYWtlIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1pbnRlcmZhY2UtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1pbnRlcmZhY2UtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk4ZjlkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELWludGVyZmFjZS1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtbW9kLWNoZWNrLmNtYWtlIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELW1vZC1jaGVjay5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmRkZWUxCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELW1vZC1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDIgQEAKKworaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2VuZXhfTElOS19MQU5HX0FORF9JRC12YWxpZGF0aW9uLmNtYWtlIikKZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1tb2QtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1tb2QtcmVzdWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk4ZjlkCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELW1vZC1yZXN1bHQudHh0CkBAIC0wLDAgKzEgQEAKKy4qCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtc2hhcmVkX2MtY2hlY2suY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtc2hhcmVkX2MtY2hlY2suY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0OThkOQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1zaGFyZWRfYy1jaGVjay5jbWFrZQpAQCAtMCwwICsxLDUgQEAKKworc2V0IChWQUxJRF9MQU5HIEMpCitzZXQgKElOVkFMSURfTEFORyBDWFgpCisKK2luY2x1ZGUgKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L2dlbmV4X0xJTktfTEFOR19BTkRfSUQtdmFsaWRhdGlvbi5jbWFrZSIpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtc2hhcmVkX2MtcmVzdWx0LnR4dCBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC1zaGFyZWRfYy1yZXN1bHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOThmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtc2hhcmVkX2MtcmVzdWx0LnR4dApAQCAtMCwwICsxIEBACisuKgpkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXZhbGlkYXRpb24uY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQtdmFsaWRhdGlvbi5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWRjMjdmCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvUnVuQ01ha2UvdGFyZ2V0X2xpbmtfb3B0aW9ucy9nZW5leF9MSU5LX0xBTkdfQU5EX0lELXZhbGlkYXRpb24uY21ha2UKQEAgLTAsMCArMSwyMyBAQAorCitpZiAoTk9UIFZBTElEX0xBTkcpCisgIHNldCAoVkFMSURfTEFORyBDKQorZW5kaWYoKQoraWYgKE5PVCBJTlZBTElEX0xBTkcpCisgIHNldCAoSU5WQUxJRF9MQU5HIENYWCkKK2VuZGlmKCkKKworaWYgKE5PVCBhY3R1YWxfc3Rkb3V0IE1BVENIRVMgIkJBREZMQUdfJHtWQUxJRF9MQU5HfV9MQU5HX0lEIikKKyAgc2V0IChSdW5DTWFrZV9URVNUX0ZBSUxFRCAiTm90IGZvdW5kIGV4cGVjdGVkICdCQURGTEFHXyR7VkFMSURfTEFOR31fTEFOR19JRCcuXG4iKQorZW5kaWYoKQoraWYgKGFjdHVhbF9zdGRvdXQgTUFUQ0hFUyAiQkFERkxBR18ke0lOVkFMSURfTEFOR31fTEFOR19JRCIpCisgIGlmIChSdW5DTWFrZV9URVNUX0ZBSUxFRCkKKyAgICBzdHJpbmcgKEFQUEVORCBSdW5DTWFrZV9URVNUX0ZBSUxFRCAiXG4iKQorICBlbmRpZigpCisgIHN0cmluZyAoQVBQRU5EIFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJGb3VuZCB1bmV4cGVjdGVkICdCQURGTEFHXyR7SU5WQUxJRF9MQU5HfV9MQU5HX0lEICcuIikKK2VuZGlmKCkKK2lmIChhY3R1YWxfc3Rkb3V0IE1BVENIRVMgIkJBREZMQUdfKCR7VkFMSURfTEFOR318JHtJTlZBTElEX0xBTkd9KV9CQURJRCIpCisgIGlmIChSdW5DTWFrZV9URVNUX0ZBSUxFRCkKKyAgICBzdHJpbmcgKEFQUEVORCBSdW5DTWFrZV9URVNUX0ZBSUxFRCAiXG4iKQorICBlbmRpZigpCisgIHN0cmluZyAoQVBQRU5EIFJ1bkNNYWtlX1RFU1RfRkFJTEVEICJGb3VuZCB1bmV4cGVjdGVkICdCQURGTEFHXygke1ZBTElEX0xBTkd9fCR7SU5WQUxJRF9MQU5HfSlfQkFESUQnLiIpCitlbmRpZigpCmRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS90YXJnZXRfbGlua19vcHRpb25zL2dlbmV4X0xJTktfTEFOR19BTkRfSUQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIwZjUwMAotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1J1bkNNYWtlL3RhcmdldF9saW5rX29wdGlvbnMvZ2VuZXhfTElOS19MQU5HX0FORF9JRC5jbWFrZQpAQCAtMCwwICsxLDQxIEBACisKK2VuYWJsZV9sYW5ndWFnZShDKQorZW5hYmxlX2xhbmd1YWdlKENYWCkKKworaWYoQk9STEFORCkKKyAgc2V0KHByZSAtKQorZW5kaWYoKQorCithZGRfbGlicmFyeShMaW5rT3B0aW9uc19pbnRlcmZhY2UgSU5URVJGQUNFKQordGFyZ2V0X2xpbmtfb3B0aW9ucyAoTGlua09wdGlvbnNfaW50ZXJmYWNlIElOVEVSRkFDRSAkPCQ8TElOS19MQU5HX0FORF9JRDpDLCR7Q01BS0VfQ19DT01QSUxFUl9JRH0+OiR7cHJlfUJBREZMQUdfQ19MQU5HX0lEJHtDTUFLRV9DX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HX0FORF9JRDpDWFgsJHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9Pjoke3ByZX1CQURGTEFHX0NYWF9MQU5HX0lEJHtDTUFLRV9DWFhfT1VUUFVUX0VYVEVOU0lPTn0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkMsQkFESUQ+OiR7cHJlfUJBREZMQUdfQ19CQURJRCR7Q01BS0VfQ19PVVRQVVRfRVhURU5TSU9OfT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6Q1hYLEJBRElEPjoke3ByZX1CQURGTEFHX0NYWF9CQURJRCR7Q01BS0VfQ1hYX09VVFBVVF9FWFRFTlNJT059PikKKworYWRkX2xpYnJhcnkoTGlua09wdGlvbnNfc2hhcmVkX2ludGVyZmFjZSBTSEFSRUQgTGlua09wdGlvbnNMaWIuYykKK3RhcmdldF9saW5rX2xpYnJhcmllcyAoTGlua09wdGlvbnNfc2hhcmVkX2ludGVyZmFjZSBQUklWQVRFIExpbmtPcHRpb25zX2ludGVyZmFjZSkKKworYWRkX2xpYnJhcnkoTGlua09wdGlvbnNfc2hhcmVkX2MgU0hBUkVEIExpbmtPcHRpb25zTGliLmMpCit0YXJnZXRfbGlua19vcHRpb25zIChMaW5rT3B0aW9uc19zaGFyZWRfYyBQUklWQVRFICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkMsJHtDTUFLRV9DX0NPTVBJTEVSX0lEfT46JHtwcmV9QkFERkxBR19DX0xBTkdfSUQke0NNQUtFX0NfT1VUUFVUX0VYVEVOU0lPTn0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkNYWCwke0NNQUtFX0NYWF9DT01QSUxFUl9JRH0+OiR7cHJlfUJBREZMQUdfQ1hYX0xBTkdfSUQke0NNQUtFX0NYWF9PVVRQVVRfRVhURU5TSU9OfT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6QyxCQURJRD46JHtwcmV9QkFERkxBR19DX0JBRElEJHtDTUFLRV9DX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HX0FORF9JRDpDWFgsQkFESUQ+OiR7cHJlfUJBREZMQUdfQ1hYX0JBRElEJHtDTUFLRV9DWFhfT1VUUFVUX0VYVEVOU0lPTn0+KQorCithZGRfbGlicmFyeShMaW5rT3B0aW9uc19zaGFyZWRfY3h4IFNIQVJFRCBMaW5rT3B0aW9uc0xpYi5jKQordGFyZ2V0X2xpbmtfb3B0aW9ucyAoTGlua09wdGlvbnNfc2hhcmVkX2N4eCBQUklWQVRFICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkMsJHtDTUFLRV9DX0NPTVBJTEVSX0lEfT46JHtwcmV9QkFERkxBR19DX0xBTkdfSUQke0NNQUtFX0NfT1VUUFVUX0VYVEVOU0lPTn0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6Q1hYLCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lEfT46JHtwcmV9QkFERkxBR19DWFhfTEFOR19JRCR7Q01BS0VfQ1hYX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ8JDxMSU5LX0xBTkdfQU5EX0lEOkMsQkFESUQ+OiR7cHJlfUJBREZMQUdfQ19CQURJRCR7Q01BS0VfQ19PVVRQVVRfRVhURU5TSU9OfT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkPCQ8TElOS19MQU5HX0FORF9JRDpDWFgsQkFESUQ+OiR7cHJlfUJBREZMQUdfQ1hYX0JBRElEJHtDTUFLRV9DWFhfT1VUUFVUX0VYVEVOU0lPTn0+KQorc2V0X3Byb3BlcnR5IChUQVJHRVQgTGlua09wdGlvbnNfc2hhcmVkX2N4eCBQUk9QRVJUWSBMSU5LRVJfTEFOR1VBR0UgQ1hYKQorCithZGRfbGlicmFyeShMaW5rT3B0aW9uc19tb2QgTU9EVUxFIExpbmtPcHRpb25zTGliLmMpCit0YXJnZXRfbGlua19vcHRpb25zIChMaW5rT3B0aW9uc19tb2QgUFJJVkFURSAkPCQ8TElOS19MQU5HX0FORF9JRDpDLCR7Q01BS0VfQ19DT01QSUxFUl9JRH0+OiR7cHJlfUJBREZMQUdfQ19MQU5HX0lEJHtDTUFLRV9DX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6Q1hYLCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lEfT46JHtwcmV9QkFERkxBR19DWFhfTEFOR19JRCR7Q01BS0VfQ1hYX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6QyxCQURJRD46JHtwcmV9QkFERkxBR19DX0JBRElEJHtDTUFLRV9DX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6Q1hYLEJBRElEPjoke3ByZX1CQURGTEFHX0NYWF9CQURJRCR7Q01BS0VfQ1hYX09VVFBVVF9FWFRFTlNJT059PikKKworYWRkX2V4ZWN1dGFibGUoTGlua09wdGlvbnNfZXhlIExpbmtPcHRpb25zRXhlLmMpCit0YXJnZXRfbGlua19vcHRpb25zIChMaW5rT3B0aW9uc19leGUgUFJJVkFURSAkPCQ8TElOS19MQU5HX0FORF9JRDpDLCR7Q01BS0VfQ19DT01QSUxFUl9JRH0+OiR7cHJlfUJBREZMQUdfQ19MQU5HX0lEJHtDTUFLRV9DX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6Q1hYLCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lEfT46JHtwcmV9QkFERkxBR19DWFhfTEFOR19JRCR7Q01BS0VfQ1hYX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6QyxCQURJRD46JHtwcmV9QkFERkxBR19DX0JBRElEJHtDTUFLRV9DX09VVFBVVF9FWFRFTlNJT059PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDwkPExJTktfTEFOR19BTkRfSUQ6Q1hYLEJBRElEPjoke3ByZX1CQURGTEFHX0NYWF9CQURJRCR7Q01BS0VfQ1hYX09VVFBVVF9FWFRFTlNJT059PikKZGlmZiAtLWdpdCBhL1Rlc3RzL1N3aWZ0T25seS9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1N3aWZ0T25seS9DTWFrZUxpc3RzLnR4dAppbmRleCBmNGNiYWMyLi5lMjQyNzliIDEwMDY0NAotLS0gYS9UZXN0cy9Td2lmdE9ubHkvQ01ha2VMaXN0cy50eHQKKysrIGIvVGVzdHMvU3dpZnRPbmx5L0NNYWtlTGlzdHMudHh0CkBAIC0xLDQgKzEsMTYgQEAKIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjMpCisKKyMgTk9URTogRm9yY2UgdGhlIFJlbGVhc2UgbW9kZSBjb25maWd1cmF0aW9uIGFzIHRoZXJlIGFyZSBzb21lIGlzc3VlcyB3aXRoIHRoZQorIyBkZWJ1ZyBpbmZvcm1hdGlvbiBoYW5kbGluZyBvbiBtYWNPUyBvbiBjZXJ0YWluIFhjb2RlIGJ1aWxkcy4KK2lmKE5PVCBDTUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTKQorICBzZXQoQ01BS0VfQlVJTERfVFlQRSBSZWxlYXNlIENBQ0hFIFNUUklORyAiQ2hvb3NlIHRoZSB0eXBlIG9mIGJ1aWxkIiBGT1JDRSkKK2VuZGlmKCkKKworIyBOT1RFOiBlbmFibGUgc2hhcmVkIGxpYnJhcmllcyBieSBkZWZhdWx0LiAgT2xkZXIgWGNvZGUgcmVsZWFzZXMgZG8gbm90IHBsYXkKKyMgd2VsbCB3aXRoIHN0YXRpYyBsaWJyYXJpZXMsIGFuZCBXaW5kb3dzIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IHN0YXRpYworIyBsaWJyYXJpZXMgaW4gU3dpZnQuCitzZXQoQlVJTERfU0hBUkVEX0xJQlMgWUVTKQorCiBwcm9qZWN0KFN3aWZ0T25seSBTd2lmdCkKIAogaWYoTk9UIFhDT0RFX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwLjIpCkBAIC03LDcgKzE5LDE5IEBACiAgIHNldChDTUFLRV9Td2lmdF9MQU5HVUFHRV9WRVJTSU9OIDMuMCkKIGVuZGlmKCkKIAorc2V0KENNQUtFX1N3aWZ0X01PRFVMRV9ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9zd2lmdCkKKwogYWRkX2V4ZWN1dGFibGUoU3dpZnRPbmx5IG1haW4uc3dpZnQpCiAKK2FkZF9saWJyYXJ5KEwgTC5zd2lmdCkKKworYWRkX2xpYnJhcnkoTSBNLnN3aWZ0KQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKE0gUFVCTElDCisgIEwpCisKK2FkZF9saWJyYXJ5KE4gTi5zd2lmdCkKK3RhcmdldF9saW5rX2xpYnJhcmllcyhOIFBVQkxJQworICBNKQorCiAjIER1bW15IHRvIG1ha2Ugc3VyZSBnZW5lcmF0aW9uIHdvcmtzIHdpdGggc3VjaCB0YXJnZXRzLgogYWRkX2xpYnJhcnkoU3dpZnRJZmFjZSBJTlRFUkZBQ0UpCmRpZmYgLS1naXQgYS9UZXN0cy9Td2lmdE9ubHkvTC5zd2lmdCBiL1Rlc3RzL1N3aWZ0T25seS9MLnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZmY4N2UKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9Td2lmdE9ubHkvTC5zd2lmdApAQCAtMCwwICsxIEBACitwdWJsaWMgbGV0IFRoaXJ0eVR3bzogSW50ID0gMzIKZGlmZiAtLWdpdCBhL1Rlc3RzL1N3aWZ0T25seS9NLnN3aWZ0IGIvVGVzdHMvU3dpZnRPbmx5L00uc3dpZnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQzMzNmZQotLS0gL2Rldi9udWxsCisrKyBiL1Rlc3RzL1N3aWZ0T25seS9NLnN3aWZ0CkBAIC0wLDAgKzEsMiBAQAoraW1wb3J0IEwKK3B1YmxpYyBsZXQgU2l4dHlGb3VyOiBJbnQgPSBUaGlydHlUd28gKiAyCmRpZmYgLS1naXQgYS9UZXN0cy9Td2lmdE9ubHkvTi5zd2lmdCBiL1Rlc3RzL1N3aWZ0T25seS9OLnN3aWZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MGRkZjkKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9Td2lmdE9ubHkvTi5zd2lmdApAQCAtMCwwICsxLDIgQEAKK2ltcG9ydCBNCitwdWJsaWMgbGV0IE9uZVR3ZW50eUVpZ2h0ID0gU2l4dHlGb3VyICogMgpkaWZmIC0tZ2l0IGEvVGVzdHMvVXNlU1dJRy9CYXNpY0NvbmZpZ3VyYXRpb24uY21ha2UgYi9UZXN0cy9Vc2VTV0lHL0Jhc2ljQ29uZmlndXJhdGlvbi5jbWFrZQppbmRleCBmZDNhYzQwLi5kMDU0OTUzIDEwMDY0NAotLS0gYS9UZXN0cy9Vc2VTV0lHL0Jhc2ljQ29uZmlndXJhdGlvbi5jbWFrZQorKysgYi9UZXN0cy9Vc2VTV0lHL0Jhc2ljQ29uZmlndXJhdGlvbi5jbWFrZQpAQCAtMTgsNiArMTgsOSBAQAogaWYoJHtsYW5ndWFnZX0gTUFUQ0hFUyBjc2hhcnApCiAgIHNldChTV0lHX0xBTkdfVFlQRSBUWVBFIFNIQVJFRCkKIGVuZGlmKCkKK2lmKCR7bGFuZ3VhZ2V9IE1BVENIRVMgZm9ydHJhbikKKyAgc2V0KFNXSUdfTEFOR19UWVBFIFRZUEUgU0hBUkVEKQorZW5kaWYoKQogaWYoJHtsYW5ndWFnZX0gTUFUQ0hFUyBweXRob24pCiAgIGZpbmRfcGFja2FnZShQeXRob24gUkVRVUlSRUQgQ09NUE9ORU5UUyBJbnRlcnByZXRlciBEZXZlbG9wbWVudCkKICAgc2V0KFNXSUdfTEFOR19JTkNMVURFX0RJUkVDVE9SSUVTICR7UHl0aG9uX0lOQ0xVREVfRElSU30pCmRpZmYgLS1naXQgYS9UZXN0cy9Vc2VTV0lHL0Jhc2ljRm9ydHJhbi9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1VzZVNXSUcvQmFzaWNGb3J0cmFuL0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MWZiODUKLS0tIC9kZXYvbnVsbAorKysgYi9UZXN0cy9Vc2VTV0lHL0Jhc2ljRm9ydHJhbi9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDIzIEBACitjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy4xMi4uLjMuMTMpCisKK3Byb2plY3QoVGVzdEJhc2ljRm9ydHJhbiBDWFggRm9ydHJhbikKKworaW5jbHVkZShDVGVzdCkKKworc2V0KGxhbmd1YWdlICJmb3J0cmFuIikKKworaW5jbHVkZSAoLi4vQmFzaWNDb25maWd1cmF0aW9uLmNtYWtlKQorZ2V0X3RhcmdldF9wcm9wZXJ0eShFWEFNUExFX1BSRUZJWCBleGFtcGxlIFBSRUZJWCkKK2lmIChOT1QgRVhBTVBMRV9QUkVGSVggU1RSRVFVQUwgIiR7Q01BS0VfU0hBUkVEX0xJQlJBUllfUFJFRklYfSIKKyAgICBBTkQgTk9UIEVYQU1QTEVfUFJFRklYIFNUUkVRVUFMICJFWEFNUExFX1BSRUZJWC1OT1RGT1VORCIpCisgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIlVuZXhwZWN0ZWQgbGlicmFyeSBwcmVmaXggb24gdGFyZ2V0OiBnb3QgIgorICAgICInJHtFWEFNUExFX1BSRUZJWH0nIGJ1dCBleHBlY3RlZCAnJHtDTUFLRV9TSEFSRURfTElCUkFSWV9QUkVGSVh9JyIpCitlbmRpZigpCisKKworYWRkX2V4ZWN1dGFibGUocnVubWUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uL3J1bm1lLmY5MCkKK3RhcmdldF9saW5rX2xpYnJhcmllcyhydW5tZSBleGFtcGxlKQorc2V0X3RhcmdldF9wcm9wZXJ0aWVzKHJ1bm1lIFBST1BFUlRJRVMgTElOS0VSX0xBTkdVQUdFIEZvcnRyYW4pCisKK2FkZF90ZXN0IChOQU1FIEJhc2ljRm9ydHJhbgorICBDT01NQU5EICQ8VEFSR0VUX0ZJTEU6cnVubWU+KQpkaWZmIC0tZ2l0IGEvVGVzdHMvVXNlU1dJRy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1VzZVNXSUcvQ01ha2VMaXN0cy50eHQKaW5kZXggM2NjOTEwZi4uZDEwMjg0NiAxMDA2NDQKLS0tIGEvVGVzdHMvVXNlU1dJRy9DTWFrZUxpc3RzLnR4dAorKysgYi9UZXN0cy9Vc2VTV0lHL0NNYWtlTGlzdHMudHh0CkBAIC01NSw2ICs1NSwyMSBAQAogICAtLXRlc3QtY29tbWFuZCAke0NNQUtFX0NURVNUX0NPTU1BTkR9IC1WIC1DICQ8Q09ORklHVVJBVElPTj4KICAgKQogCitpZiAoQ01ha2VfVEVTVF9Vc2VTV0lHX0ZvcnRyYW4pCisgIGNoZWNrX2xhbmd1YWdlKEZvcnRyYW4pCisgIGlmIChDTUFLRV9Gb3J0cmFuX0NPTVBJTEVSKQorICAgIGFkZF90ZXN0KE5BTUUgVXNlU1dJRy5CYXNpY0ZvcnRyYW4gQ09NTUFORAorICAgICAgJHtDTUFLRV9DVEVTVF9DT01NQU5EfSAtQyAkPENPTkZJR1VSQVRJT04+CisgICAgICAtLWJ1aWxkLWFuZC10ZXN0CisgICAgICAiJHtDTWFrZV9TT1VSQ0VfRElSfS9UZXN0cy9Vc2VTV0lHL0Jhc2ljRm9ydHJhbiIKKyAgICAgICIke0NNYWtlX0JJTkFSWV9ESVJ9L1Rlc3RzL1VzZVNXSUcvQmFzaWNGb3J0cmFuIgorICAgICAgJHtidWlsZF9nZW5lcmF0b3JfYXJnc30KKyAgICAgIC0tYnVpbGQtcHJvamVjdCBUZXN0QmFzaWNGb3J0cmFuCisgICAgICAtLWJ1aWxkLW9wdGlvbnMgJHtidWlsZF9vcHRpb25zfQorICAgICAgLS10ZXN0LWNvbW1hbmQgJHtDTUFLRV9DVEVTVF9DT01NQU5EfSAtViAtQyAkPENPTkZJR1VSQVRJT04+CisgICAgICApCisgIGVuZGlmKCkKK2VuZGlmKCkKIAogYWRkX3Rlc3QoTkFNRSBVc2VTV0lHLk11bHRpcGxlTW9kdWxlcyBDT01NQU5ECiAgICR7Q01BS0VfQ1RFU1RfQ09NTUFORH0gLUMgJDxDT05GSUdVUkFUSU9OPgpkaWZmIC0tZ2l0IGEvVGVzdHMvVXNlU1dJRy9ydW5tZS5mOTAgYi9UZXN0cy9Vc2VTV0lHL3J1bm1lLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDk4NWQzCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvVXNlU1dJRy9ydW5tZS5mOTAKQEAgLTAsMCArMSw3NyBAQAorISBGaWxlIDogcnVubWUuZjkwCitwcm9ncmFtIHJ1bm1lCisgIHVzZSBJU09fRk9SVFJBTl9FTlYKKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogU1RET1VUID0gT1VUUFVUX1VOSVQKKworICBjYWxsIHJ1bigpCitjb250YWlucworCitzdWJyb3V0aW5lIHJ1bigpCisgIHVzZSBleGFtcGxlCisgIHVzZSBpc29fY19iaW5kaW5nCisgIGltcGxpY2l0IG5vbmUKKworICB0eXBlKENpcmNsZSkgICAgICAgICAgOjogYworICB0eXBlKFNxdWFyZSksIHRhcmdldCAgOjogcyAhICd0YXJnZXQnIGFsbG93cyBpdCB0byBiZSBwb2ludGVkIHRvCisgIGNsYXNzKFNoYXBlKSwgcG9pbnRlciA6OiBzaAorICBpbnRlZ2VyKENfSU5UKSA6OiBuX3NoYXBlcworCisgICEgLS0tLS0gT2JqZWN0IGNyZWF0aW9uIC0tLS0tCisKKyAgd3JpdGUoU1RET1VULCopICJDcmVhdGluZyBzb21lIG9iamVjdHMiCisgIGMgPSBDaXJjbGUoMTAuMGQwKQorICBzID0gU3F1YXJlKDEwLjBkMCkKKworICAhIC0tLS0tIEFjY2VzcyBhIHN0YXRpYyBtZW1iZXIgLS0tLS0KKyAgd3JpdGUoU1RET1VULCcoYSxpMixhKScpIkEgdG90YWwgb2YiLCBzJWdldF9uc2hhcGVzKCksICIgc2hhcGVzIHdlcmUgY3JlYXRlZCIKKworICAhIC0tLS0tIE1lbWJlciBkYXRhIGFjY2VzcyAtLS0tLQorCisgICEgTm90aWNlIGhvdyB3ZSBjYW4gZG8gdGhpcyB1c2luZyBmdW5jdGlvbnMgc3BlY2lmaWMgdG8KKyAgISB0aGUgJ0NpcmNsZScgY2xhc3MuCisgIGNhbGwgYyVzZXRfeCgyMC4wZDApCisgIGNhbGwgYyVzZXRfeSgzMC4wZDApCisKKyAgISBOb3cgdXNlIHRoZSBzYW1lIGZ1bmN0aW9ucyBpbiB0aGUgYmFzZSBjbGFzcworICBzaCA9PiBzCisgIGNhbGwgc2glc2V0X3goLTEwLjBkMCkKKyAgY2FsbCBzaCVzZXRfeSggIDUuMGQwKQorCisgIHdyaXRlKFNURE9VVCwqKSJIZXJlIGlzIHRoZWlyIGN1cnJlbnQgcG9zaXRpb246IgorICB3cml0ZShTVERPVVQsJyhhLGY1LjEsYSxmNS4xLGEpJykiICBDaXJjbGUgPSAoIiwgYyVnZXRfeCgpLCAiLCIsIGMlZ2V0X3koKSwgIiApIgorICB3cml0ZShTVERPVVQsJyhhLGY1LjEsYSxmNS4xLGEpJykiICBTcXVhcmUgPSAoIiwgcyVnZXRfeCgpLCAiLCIsIHMlZ2V0X3koKSwgIiApIgorCisgICEgLS0tLS0gQ2FsbCBzb21lIG1ldGhvZHMgLS0tLS0KKworICB3cml0ZShTVERPVVQsKikiSGVyZSBhcmUgc29tZSBwcm9wZXJ0aWVzIG9mIHRoZSBzaGFwZXM6IgorICBjYWxsIHByaW50X3NoYXBlKGMpCisgIGNhbGwgcHJpbnRfc2hhcGUocykKKworICAhIC0tLS0tIERlbGV0ZSBldmVyeXRoaW5nIC0tLS0tCisKKyAgISBOb3RlOiB0aGlzIGludm9rZXMgdGhlIHZpcnR1YWwgZGVzdHJ1Y3RvcgorICBjYWxsIGMlcmVsZWFzZSgpCisgIGNhbGwgcyVyZWxlYXNlKCkKKworICBuX3NoYXBlcyA9IGMlZ2V0X25zaGFwZXMoKQorICB3cml0ZShTVERPVVQsKikgbl9zaGFwZXMsICJzaGFwZXMgcmVtYWluIgorICBpZiAobl9zaGFwZXMgLz0gMCkgdGhlbgorICAgIHdyaXRlKFNURE9VVCwqKSAiU2hhcGVzIHdlcmUgbm90IGZyZWVkIHByb3Blcmx5ISIKKyAgICBzdG9wIDEKKyAgZW5kaWYKKworICB3cml0ZShTVERPVVQsKikgIkdvb2RieWUiCitlbmQgc3Vicm91dGluZQorCitzdWJyb3V0aW5lIHByaW50X3NoYXBlKHMpCisgIHVzZSBleGFtcGxlLCBvbmx5IDogU2hhcGUKKyAgdXNlIGlzb19jX2JpbmRpbmcKKyAgaW1wbGljaXQgbm9uZQorICBjbGFzcyhTaGFwZSksIGludGVudChpbikgOjogcworCisgIHdyaXRlKFNURE9VVCwqKSIgICAgYXJlYSAgICAgID0gIixzJWFyZWEoKQorICB3cml0ZShTVERPVVQsKikiICAgIHBlcmltZXRlciA9ICIscyVwZXJpbWV0ZXIoKQorZW5kIHN1YnJvdXRpbmUKKworZW5kIHByb2dyYW0KZGlmZiAtLWdpdCBhL1Rlc3RzL1ZTV2luU3RvcmVQaG9uZS9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1ZTV2luU3RvcmVQaG9uZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiOGUxNTdkLi41NThkNWRlIDEwMDY0NAotLS0gYS9UZXN0cy9WU1dpblN0b3JlUGhvbmUvQ01ha2VMaXN0cy50eHQKKysrIGIvVGVzdHMvVlNXaW5TdG9yZVBob25lL0NNYWtlTGlzdHMudHh0CkBAIC0xMjcsNyArMTI3LDcgQEAKIHNldF9wcm9wZXJ0eShTT1VSQ0UgJHtWRVJURVhTSEFERVJfRklMRVN9IFBST1BFUlRZIFZTX1NIQURFUl9NT0RFTCA0LjBfbGV2ZWxfOV8zKQogc2V0X3Byb3BlcnR5KFNPVVJDRSAke1ZFUlRFWFNIQURFUl9GSUxFU30gUFJPUEVSVFkgVlNfU0hBREVSX0ZMQUdTICIvREZMQUdTX0FEREVEIikKIHNldF9wcm9wZXJ0eShTT1VSQ0UgJHtWRVJURVhTSEFERVJfRklMRVN9IFBST1BFUlRZIFZTX1NIQURFUl9PVVRQVVRfSEVBREVSX0ZJTEUgIiQoT3V0RGlyKSUoRmlsZW5hbWUpLmgiKQotCitzZXRfcHJvcGVydHkoU09VUkNFICR7VkVSVEVYU0hBREVSX0ZJTEVTfSBQUk9QRVJUWSBWU19TRVRUSU5HUyAiJDwkPENPTkZJRzpERUJVRz46U291cmNlUHJvcGVydHkxPVNvdXJjZVByb3BlcnR5MVZhbHVlPiIpCiAKIHNvdXJjZV9ncm91cCgiU291cmNlIEZpbGVzIiBGSUxFUyAke1NPVVJDRV9GSUxFU30pCiBzb3VyY2VfZ3JvdXAoIkhlYWRlciBGaWxlcyIgRklMRVMgJHtIRUFERVJfRklMRVN9KQpAQCAtMTM1LDYgKzEzNSwxMSBAQAogCiBhZGRfZXhlY3V0YWJsZSgke0VYRV9OQU1FfSBXSU4zMiAke1NPVVJDRV9GSUxFU30gJHtIRUFERVJfRklMRVN9ICR7UkVTT1VSQ0VfRklMRVN9KQogc2V0X3Byb3BlcnR5KFRBUkdFVCAke0VYRV9OQU1FfSBQUk9QRVJUWSBWU19XSU5SVF9DT01QT05FTlQgVFJVRSkKK3NldF9wcm9wZXJ0eShUQVJHRVQgJHtFWEVfTkFNRX0gUFJPUEVSVFkgVlNfU09VUkNFX1NFVFRJTkdTX0ZYQ29tcGlsZQorICAiVGFyZ2V0UHJvcGVydHkxPSQ8JDxDT05GSUc6REVCVUc+OlRhcmdldFByb3BlcnR5MVZhbHVlRGVidWc+JDwkPENPTkZJRzpSRUxFQVNFPjpUYXJnZXRQcm9wZXJ0eTFWYWx1ZVJlbGVhc2U+IikKKworYWRkX2N1c3RvbV9jb21tYW5kKFRBUkdFVCAke0VYRV9OQU1FfSBQT1NUX0JVSUxECisgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRHZjeHByb2o9IiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS8ke0VYRV9OQU1FfS52Y3hwcm9qIiAtUCAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L0Vuc3VyZVByb3BlcnRpZXNTZXQuY21ha2UiKQogCiBzdHJpbmcoU1VCU1RSSU5HICIke0NNQUtFX1NZU1RFTV9WRVJTSU9OfSIgMCwgNCwgU0hPUlRfVkVSU0lPTikKIApkaWZmIC0tZ2l0IGEvVGVzdHMvVlNXaW5TdG9yZVBob25lL0Vuc3VyZVByb3BlcnRpZXNTZXQuY21ha2UgYi9UZXN0cy9WU1dpblN0b3JlUGhvbmUvRW5zdXJlUHJvcGVydGllc1NldC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjhjNDZmCi0tLSAvZGV2L251bGwKKysrIGIvVGVzdHMvVlNXaW5TdG9yZVBob25lL0Vuc3VyZVByb3BlcnRpZXNTZXQuY21ha2UKQEAgLTAsMCArMSw0NSBAQAorbWFjcm8oZW5zdXJlX3Byb3BzX3NldCBwcm9qZWN0RmlsZSkKKyAgaWYoTk9UIEVYSVNUUyAiJHtwcm9qZWN0RmlsZX0iKQorICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIlByb2plY3QgZmlsZSAke3Byb2plY3RGaWxlfSBkb2VzIG5vdCBleGlzdC4iKQorICAgIHJldHVybigpCisgIGVuZGlmKCkKKworICBzZXQoU291cmNlUHJvcGVydHlGb3VuZCBGQUxTRSkKKyAgc2V0KERlYnVnVGFyZ2V0UHJvcGVydHlGb3VuZCBGQUxTRSkKKyAgc2V0KFJlbGVhc2VUYXJnZXRQcm9wZXJ0eUZvdW5kIEZBTFNFKQorCisgIGZpbGUoU1RSSU5HUyAiJHtwcm9qZWN0RmlsZX0iIGxpbmVzKQorICBmb3JlYWNoKGxpbmUgSU4gTElTVFMgbGluZXMpCisgICAgaWYobGluZSBNQVRDSEVTICI8U291cmNlUHJvcGVydHkxLipEZWJ1Zy4qPlNvdXJjZVByb3BlcnR5MVZhbHVlPC9Tb3VyY2VQcm9wZXJ0eTE+IikKKyAgICAgIG1lc3NhZ2UoIlNvdXJjZVByb3BlcnR5MSBzZXR0aW5nIGZvdW5kIikKKyAgICAgIHNldChTb3VyY2VQcm9wZXJ0eUZvdW5kIFRSVUUpCisgICAgZW5kaWYoKQorCisgICAgaWYobGluZSBNQVRDSEVTICI8VGFyZ2V0UHJvcGVydHkxLipEZWJ1Zy4qPlRhcmdldFByb3BlcnR5MVZhbHVlRGVidWc8L1RhcmdldFByb3BlcnR5MT4iKQorICAgICAgbWVzc2FnZSgiRGVidWcgVGFyZ2V0UHJvcGVydHkxIHNldHRpbmcgZm91bmQiKQorICAgICAgc2V0KERlYnVnVGFyZ2V0UHJvcGVydHlGb3VuZCBUUlVFKQorICAgIGVuZGlmKCkKKworICAgIGlmKGxpbmUgTUFUQ0hFUyAiPFRhcmdldFByb3BlcnR5MS4qUmVsZWFzZS4qPlRhcmdldFByb3BlcnR5MVZhbHVlUmVsZWFzZTwvVGFyZ2V0UHJvcGVydHkxPiIpCisgICAgICBtZXNzYWdlKCJSZWxlYXNlIFRhcmdldFByb3BlcnR5MSBzZXR0aW5nIGZvdW5kIikKKyAgICAgIHNldChSZWxlYXNlVGFyZ2V0UHJvcGVydHlGb3VuZCBUUlVFKQorICAgIGVuZGlmKCkKKyAgZW5kZm9yZWFjaCgpCisKKyAgaWYgKE5PVCBTb3VyY2VQcm9wZXJ0eUZvdW5kKQorICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIlNvdXJjZVByb3BlcnR5MSBzZXR0aW5nIG5vdCBmb3VuZCIpCisgICAgcmV0dXJuKCkKKyAgZW5kaWYoKQorCisgIGlmIChOT1QgRGVidWdUYXJnZXRQcm9wZXJ0eUZvdW5kKQorICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkRlYnVnIFRhcmdldFByb3BlcnR5MSBzZXR0aW5nIG5vdCBmb3VuZCIpCisgICAgcmV0dXJuKCkKKyAgZW5kaWYoKQorCisgIGlmIChOT1QgUmVsZWFzZVRhcmdldFByb3BlcnR5Rm91bmQpCisgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiUmVsZWFzZSBUYXJnZXRQcm9wZXJ0eTEgc2V0dGluZyBub3QgZm91bmQiKQorICAgIHJldHVybigpCisgIGVuZGlmKCkKK2VuZG1hY3JvKCkKKworZW5zdXJlX3Byb3BzX3NldCgiJHt2Y3hwcm9qfSIpCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvUmVsZWFzZS93aW4zMl9yZWxlYXNlLmNtYWtlIGIvVXRpbGl0aWVzL1JlbGVhc2Uvd2luMzJfcmVsZWFzZS5jbWFrZQppbmRleCAxNGU1Y2JhLi45OTNkYjZlIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvUmVsZWFzZS93aW4zMl9yZWxlYXNlLmNtYWtlCisrKyBiL1V0aWxpdGllcy9SZWxlYXNlL3dpbjMyX3JlbGVhc2UuY21ha2UKQEAgLTM0LDYgKzM0LDcgQEAKIENNQUtFX1BSRUZJWF9QQVRIOlNUUklORz0ke3F0X3ByZWZpeH0KIENNYWtlX1RFU1RfUXQ0OkJPT0w9T0ZGCiBDTWFrZV9URVNUX1F0NTpCT09MPU9GRgorUFlUSE9OX0VYRUNVVEFCTEU6RklMRVBBVEg9QzovUHl0aG9uLzMuOC02NC9weXRob24uZXhlCiAiKQogc2V0KHBwZmxhZ3MgIi1EX1dJTjMyX1dJTk5UPTB4NjAxIC1ETlRERElfVkVSU0lPTj0weDA2MDEwMDAwIikKIHNldChDRkxBR1MgIiR7cHBmbGFnc30iKQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL1JlbGVhc2Uvd2luNjRfcmVsZWFzZS5jbWFrZSBiL1V0aWxpdGllcy9SZWxlYXNlL3dpbjY0X3JlbGVhc2UuY21ha2UKaW5kZXggMTQ5ZDM3OC4uMzA0Mjg4OSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL1JlbGVhc2Uvd2luNjRfcmVsZWFzZS5jbWFrZQorKysgYi9VdGlsaXRpZXMvUmVsZWFzZS93aW42NF9yZWxlYXNlLmNtYWtlCkBAIC0zNCw2ICszNCw3IEBACiBDTUFLRV9QUkVGSVhfUEFUSDpTVFJJTkc9JHtxdF9wcmVmaXh9CiBDTWFrZV9URVNUX1F0NDpCT09MPU9GRgogQ01ha2VfVEVTVF9RdDU6Qk9PTD1PRkYKK1BZVEhPTl9FWEVDVVRBQkxFOkZJTEVQQVRIPUM6L1B5dGhvbi8zLjgtNjQvcHl0aG9uLmV4ZQogIikKIHNldChwcGZsYWdzICItRF9XSU4zMl9XSU5OVD0weDYwMSAtRE5URERJX1ZFUlNJT049MHgwNjAxMDAwMCIpCiBzZXQoQ0ZMQUdTICIke3BwZmxhZ3N9IikKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9TY3JpcHRzL3VwZGF0ZS1iemlwMi5iYXNoIGIvVXRpbGl0aWVzL1NjcmlwdHMvdXBkYXRlLWJ6aXAyLmJhc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODM0MzlkMQotLS0gL2Rldi9udWxsCisrKyBiL1V0aWxpdGllcy9TY3JpcHRzL3VwZGF0ZS1iemlwMi5iYXNoCkBAIC0wLDAgKzEsMjcgQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKworc2V0IC1lCitzZXQgLXgKK3Nob3B0IC1zIGRvdGdsb2IKKworcmVhZG9ubHkgbmFtZT0iYnppcDIiCityZWFkb25seSBvd25lcnNoaXA9ImJ6aXAyIHVwc3RyZWFtIDxrd3JvYm90QGtpdHdhcmUuY29tPiIKK3JlYWRvbmx5IHN1YnRyZWU9IlV0aWxpdGllcy9jbWJ6aXAyIgorcmVhZG9ubHkgcmVwbz0iaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvYnppcDIuZ2l0IgorcmVhZG9ubHkgdGFnPSJiemlwMi0xLjAuOCIKK3JlYWRvbmx5IHNob3J0bG9nPWZhbHNlCityZWFkb25seSBwYXRocz0iCisgIExJQ0VOU0UKKyAgUkVBRE1FCisgICouYworICAqLmgKKyIKKworZXh0cmFjdF9zb3VyY2UgKCkgeworICAgIGdpdF9hcmNoaXZlCisgICAgcHVzaGQgIiR7ZXh0cmFjdGRpcn0vJHtuYW1lfS1yZWR1Y2VkIgorICAgIGVjaG8gIiogLXdoaXRlc3BhY2UiID4gLmdpdGF0dHJpYnV0ZXMKKyAgICBwb3BkCit9CisKKy4gIiR7QkFTSF9TT1VSQ0UlLyp9L3VwZGF0ZS10aGlyZC1wYXJ0eS5iYXNoIgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL1NjcmlwdHMvdXBkYXRlLWN1cmwuYmFzaCBiL1V0aWxpdGllcy9TY3JpcHRzL3VwZGF0ZS1jdXJsLmJhc2gKaW5kZXggNWMyYTMzMS4uYmFkODhmZSAxMDA3NTUKLS0tIGEvVXRpbGl0aWVzL1NjcmlwdHMvdXBkYXRlLWN1cmwuYmFzaAorKysgYi9VdGlsaXRpZXMvU2NyaXB0cy91cGRhdGUtY3VybC5iYXNoCkBAIC04LDcgKzgsNyBAQAogcmVhZG9ubHkgb3duZXJzaGlwPSJDdXJsIFVwc3RyZWFtIDxjdXJsLWxpYnJhcnlAY29vbC5oYXh4LnNlPiIKIHJlYWRvbmx5IHN1YnRyZWU9IlV0aWxpdGllcy9jbWN1cmwiCiByZWFkb25seSByZXBvPSJodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsLmdpdCIKLXJlYWRvbmx5IHRhZz0iY3VybC03XzY1XzAiCityZWFkb25seSB0YWc9ImN1cmwtN182OV8wIgogcmVhZG9ubHkgc2hvcnRsb2c9ZmFsc2UKIHJlYWRvbmx5IHBhdGhzPSIKICAgQ01ha2UvKgpAQCAtMjMsNiArMjMsMTAgQEAKICAgbGliL2xpYmN1cmwucmMKICAgbGliL3ZhdXRoLyouYwogICBsaWIvdmF1dGgvKi5oCisgIGxpYi92cXVpYy8qLmMKKyAgbGliL3ZxdWljLyouaAorICBsaWIvdnNzaC8qLmMKKyAgbGliL3Zzc2gvKi5oCiAgIGxpYi92dGxzLyouYwogICBsaWIvdnRscy8qLmgKICIKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9TY3JpcHRzL3VwZGF0ZS1saWJhcmNoaXZlLmJhc2ggYi9VdGlsaXRpZXMvU2NyaXB0cy91cGRhdGUtbGliYXJjaGl2ZS5iYXNoCmluZGV4IDMxODg2NTguLjNkYjg5ZmYgMTAwNzU1Ci0tLSBhL1V0aWxpdGllcy9TY3JpcHRzL3VwZGF0ZS1saWJhcmNoaXZlLmJhc2gKKysrIGIvVXRpbGl0aWVzL1NjcmlwdHMvdXBkYXRlLWxpYmFyY2hpdmUuYmFzaApAQCAtOCw3ICs4LDcgQEAKIHJlYWRvbmx5IG93bmVyc2hpcD0iTGliQXJjaGl2ZSBVcHN0cmVhbSA8bGliYXJjaGl2ZS1kaXNjdXNzQGdvb2dsZWdyb3Vwcy5jb20+IgogcmVhZG9ubHkgc3VidHJlZT0iVXRpbGl0aWVzL2NtbGliYXJjaGl2ZSIKIHJlYWRvbmx5IHJlcG89Imh0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUuZ2l0IgotcmVhZG9ubHkgdGFnPSJ2My4zLjMiCityZWFkb25seSB0YWc9InYzLjQuMiIKIHJlYWRvbmx5IHNob3J0bG9nPWZhbHNlCiByZWFkb25seSBwYXRocz0iCiAgIENNYWtlTGlzdHMudHh0CkBAIC0yNSw2ICsyNSw3IEBACiAgICAgZ2l0X2FyY2hpdmUKICAgICBwdXNoZCAiJHtleHRyYWN0ZGlyfS8ke25hbWV9LXJlZHVjZWQiCiAgICAgZnJvbWRvcyBidWlsZC9jbWFrZS9GaW5kKi5jbWFrZQorICAgIGVjaG8gIiogLXdoaXRlc3BhY2UiID4gLmdpdGF0dHJpYnV0ZXMKICAgICBwb3BkCiB9CiAKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9TY3JpcHRzL3VwZGF0ZS1saWJyaGFzaC5iYXNoIGIvVXRpbGl0aWVzL1NjcmlwdHMvdXBkYXRlLWxpYnJoYXNoLmJhc2gKaW5kZXggMDA5Y2UzMi4uZWE3ZTY1NSAxMDA3NTUKLS0tIGEvVXRpbGl0aWVzL1NjcmlwdHMvdXBkYXRlLWxpYnJoYXNoLmJhc2gKKysrIGIvVXRpbGl0aWVzL1NjcmlwdHMvdXBkYXRlLWxpYnJoYXNoLmJhc2gKQEAgLTgsMTEgKzgsMTAgQEAKIHJlYWRvbmx5IG93bmVyc2hpcD0ibGlicmhhc2ggdXBzdHJlYW0gPGt3cm9ib3RAa2l0d2FyZS5jb20+IgogcmVhZG9ubHkgc3VidHJlZT0iVXRpbGl0aWVzL2NtbGlicmhhc2giCiByZWFkb25seSByZXBvPSJodHRwczovL2dpdGh1Yi5jb20vcmhhc2gvcmhhc2guZ2l0IgotcmVhZG9ubHkgdGFnPSJtYXN0ZXIiCityZWFkb25seSB0YWc9InYxLjMuOSIKIHJlYWRvbmx5IHNob3J0bG9nPWZhbHNlCiByZWFkb25seSBwYXRocz0iCiAgIENPUFlJTkcKLSAgUkVBRE1FCiAgIGxpYnJoYXNoL2FsZ29yaXRobXMuYwogICBsaWJyaGFzaC9hbGdvcml0aG1zLmgKICAgbGlicmhhc2gvYnl0ZV9vcmRlci5jCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi8uZ2l0YXR0cmlidXRlcyBiL1V0aWxpdGllcy9jbWJ6aXAyLy5naXRhdHRyaWJ1dGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2MmIxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21iemlwMi8uZ2l0YXR0cmlidXRlcwpAQCAtMCwwICsxIEBACisqIC13aGl0ZXNwYWNlCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9DSEFOR0VTIGIvVXRpbGl0aWVzL2NtYnppcDIvQ0hBTkdFUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0ZjY1ZS4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9DSEFOR0VTCisrKyAvZGV2L251bGwKQEAgLTEsMzE5ICswLDAgQEAKLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBUaGlzIGZpbGUgaXMgcGFydCBvZiBiemlwMi9saWJiemlwMiwgYSBwcm9ncmFtIGFuZCBsaWJyYXJ5IGZvcgotIGxvc3NsZXNzLCBibG9jay1zb3J0aW5nIGRhdGEgY29tcHJlc3Npb24uCi0KLSBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcKLSBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNyBKdWxpYW4gU2V3YXJkIDxqc2V3YXJkQGJ6aXAub3JnPgotCi0gUGxlYXNlIHJlYWQgdGhlIFdBUk5JTkcsIERJU0NMQUlNRVIgYW5kIFBBVEVOVFMgc2VjdGlvbnMgaW4gdGhlIAotIFJFQURNRSBmaWxlLgotCi0gVGhpcyBwcm9ncmFtIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBjb250YWluZWQKLSBpbiB0aGUgZmlsZSBMSUNFTlNFLgotIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLTAuOS4wCi1+fn5+fgotRmlyc3QgdmVyc2lvbi4KLQotCi0wLjkuMGEKLX5+fn5+fgotUmVtb3ZlZCAncmFubGliJyBmcm9tIE1ha2VmaWxlLCBzaW5jZSBtb3N0IG1vZGVybiBVbml4LWVzIAotZG9uJ3QgbmVlZCBpdCwgb3IgZXZlbiBrbm93IGFib3V0IGl0LgotCi0KLTAuOS4wYgotfn5+fn5+Ci1GaXhlZCBhIHByb2JsZW0gd2l0aCBlcnJvciByZXBvcnRpbmcgaW4gYnppcDIuYy4gIFRoaXMgZG9lcyBub3QgZWZmZWN0Ci10aGUgbGlicmFyeSBpbiBhbnkgd2F5LiAgUHJvYmxlbSBpczogdmVyc2lvbnMgMC45LjAgYW5kIDAuOS4wYSAob2YgdGhlCi1wcm9ncmFtIHByb3BlcikgY29tcHJlc3MgYW5kIGRlY29tcHJlc3MgY29ycmVjdGx5LCBidXQgZ2l2ZSBtaXNsZWFkaW5nCi1lcnJvciBtZXNzYWdlcyAoaW50ZXJuYWwgcGFuaWNzKSB3aGVuIGFuIEkvTyBlcnJvciBvY2N1cnMsIGluc3RlYWQgb2YKLXJlcG9ydGluZyB0aGUgcHJvYmxlbSBjb3JyZWN0bHkuICBUaGlzIHNob3VsZG4ndCBnaXZlIGFueSBkYXRhIGxvc3MKLShhcyBmYXIgYXMgSSBjYW4gc2VlKSwgYnV0IGlzIGNvbmZ1c2luZy4KLQotTWFkZSB0aGUgaW5saW5lIGRlY2xhcmF0aW9ucyBkaXNhcHBlYXIgZm9yIG5vbi1HQ0MgY29tcGlsZXJzLgotCi0KLTAuOS4wYwotfn5+fn5+Ci1GaXhlZCBzb21lIHByb2JsZW1zIGluIHRoZSBsaWJyYXJ5IHBlcnRhaW5pbmcgdG8gc29tZSBib3VuZGFyeSBjYXNlcy4KLVRoaXMgbWFrZXMgdGhlIGxpYnJhcnkgYmVoYXZlIG1vcmUgY29ycmVjdGx5IGluIHRob3NlIHNpdHVhdGlvbnMuICBUaGUKLWZpeGVzIGFwcGx5IG9ubHkgdG8gZmVhdHVyZXMgKGNhbGxzIGFuZCBwYXJhbWV0ZXJzKSBub3QgdXNlZCBieQotYnppcDIuYywgc28gdGhlIG5vbi1maXhlZG5lc3Mgb2YgdGhlbSBpbiBwcmV2aW91cyB2ZXJzaW9ucyBoYXMgbm8KLWVmZmVjdCBvbiByZWxpYWJpbGl0eSBvZiBiemlwMi5jLgotCi1JbiBiemxpYi5jOgotICAgKiBtYWRlIHplcm8tbGVuZ3RoIEJaX0ZMVVNIIHdvcmsgY29ycmVjdGx5IGluIGJ6Q29tcHJlc3MoKS4KLSAgICogZml4ZWQgYnpXcml0ZS9ielJlYWQgdG8gaWdub3JlIHplcm8tbGVuZ3RoIHJlcXVlc3RzLgotICAgKiBmaXhlZCBienJlYWQgdG8gY29ycmVjdGx5IGhhbmRsZSByZWFkIHJlcXVlc3RzIGFmdGVyIEVPRi4KLSAgICogd3JvbmcgcGFyYW1ldGVyIG9yZGVyIGluIGNhbGwgdG8gYnpEZWNvbXByZXNzSW5pdCBpbgotICAgICBiekJ1ZmZUb0J1ZmZEZWNvbXByZXNzLiAgRml4ZWQuCi0KLUluIGNvbXByZXNzLmM6Ci0gICAqIGNoYW5nZWQgc2V0dGluZyBvZiBuR3JvdXBzIGluIHNlbmRNVEZWYWx1ZXMoKSBzbyBhcyB0byAKLSAgICAgZG8gYSBiaXQgYmV0dGVyIG9uIHNtYWxsIGZpbGVzLiAgVGhpcyBfZG9lc18gZWZmZWN0Ci0gICAgIGJ6aXAyLmMuCi0KLQotMC45LjVhCi1+fn5+fn4KLU1ham9yIGNoYW5nZTogYWRkIGEgZmFsbGJhY2sgc29ydGluZyBhbGdvcml0aG0gKGJsb2Nrc29ydC5jKQotdG8gZ2l2ZSByZWFzb25hYmxlIGJlaGF2aW91ciBldmVuIGZvciB2ZXJ5IHJlcGV0aXRpdmUgaW5wdXRzLgotTnVrZWQgLS1yZXBldGl0aXZlLWJlc3QgYW5kIC0tcmVwZXRpdGl2ZS1mYXN0IHNpbmNlIHRoZXkgYXJlCi1ubyBsb25nZXIgdXNlZnVsLgotCi1NaW5vciBjaGFuZ2VzOiBtb3N0bHkgYSB3aG9sZSBidW5jaCBvZiBzbWFsbCBjaGFuZ2VzLwotYnVnZml4ZXMgaW4gdGhlIGRyaXZlciAoYnppcDIuYykuICBDaGFuZ2VzIHBlcnRhaW5pbmcgdG8gdGhlCi11c2VyIGludGVyZmFjZSBhcmU6Ci0KLSAgIGFsbG93IGRlY29tcHJlc3Npb24gb2Ygc3ltbGluaydkIGZpbGVzIHRvIHN0ZG91dAotICAgZGVjb21wcmVzcy90ZXN0IGZpbGVzIGV2ZW4gd2l0aG91dCAuYnoyIGV4dGVuc2lvbgotICAgZ2l2ZSBtb3JlIGFjY3VyYXRlIGVycm9yIG1lc3NhZ2VzIGZvciBJL08gZXJyb3JzCi0gICB3aGVuIGNvbXByZXNzaW5nL2RlY29tcHJlc3NpbmcgdG8gc3Rkb3V0LCBkb24ndCBjYXRjaCBjb250cm9sLUMKLSAgIHJlYWQgZmxhZ3MgZnJvbSBCWklQMiBhbmQgQlpJUCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLSAgIGRlY2xpbmUgdG8gYnJlYWsgaGFyZCBsaW5rcyB0byBhIGZpbGUgdW5sZXNzIGZvcmNlZCB3aXRoIC1mCi0gICBhbGxvdyAtYyBmbGFnIGV2ZW4gd2l0aCBubyBmaWxlbmFtZXMKLSAgIHByZXNlcnZlIGZpbGUgb3duZXJzaGlwcyBhcyBmYXIgYXMgcG9zc2libGUKLSAgIG1ha2UgLXMgLTEgZ2l2ZSB0aGUgZXhwZWN0ZWQgYmxvY2sgc2l6ZSAoMTAwaykKLSAgIGFkZCBhIGZsYWcgLXEgLS1xdWlldCB0byBzdXBwcmVzcyBub25lc3NlbnRpYWwgd2FybmluZ3MKLSAgIHN0b3AgZGVjb2RpbmcgZmxhZ3MgYWZ0ZXIgLS0sIHNvIGZpbGVzIGJlZ2lubmluZyBpbiAtIGNhbiBiZSBoYW5kbGVkCi0gICByZXNvbHZlZCBpbmNvbnNpc3RlbnQgbmFtaW5nOiBiemNhdCBvciBiejJjYXQgPwotICAgYnppcDIgLS1oZWxwIG5vdyByZXR1cm5zIDAKLQotUHJvZ3JhbW1pbmctbGV2ZWwgY2hhbmdlcyBhcmU6Ci0KLSAgIGZpeGVkIHN5bnRheCBlcnJvciBpbiBHRVRfTEw0IGZvciBCb3JsYW5kIEMrKyA1LjAyCi0gICBsZXQgYnpCdWZmVG9CdWZmRGVjb21wcmVzcyByZXR1cm4gQlpfREFUQV9FUlJPUntfTUFHSUN9Ci0gICBmaXggb3ZlcnNob290IG9mIG1vZGUtc3RyaW5nIGVuZCBpbiBiem9wZW5fb3JfYnpkb3BlbgotICAgd3JhcHBlZCBiemxpYi5oIGluICNpZmRlZiBfX2NwbHVzcGx1cyAuLi4gZXh0ZXJuICJDIiB7IC4uLiB9Ci0gICBjbG9zZSBmaWxlIGhhbmRsZXMgdW5kZXIgYWxsIGVycm9yIGNvbmRpdGlvbnMKLSAgIGFkZGVkIG1pbm9yIG1vZHMgc28gaXQgY29tcGlsZXMgd2l0aCBESkdQUCBvdXQgb2YgdGhlIGJveAotICAgZml4ZWQgTWFrZWZpbGUgc28gaXQgZG9lc24ndCBnaXZlIHByb2JsZW1zIHdpdGggQlNEIG1ha2UKLSAgIGZpeCB1bmluaXRpYWxpc2VkIG1lbW9yeSByZWFkcyBpbiBkbGx0ZXN0LmMKLQotMC45LjViCi1+fn5+fn4KLU9wZW4gc3RkaW4vc3Rkb3V0IGluIGJpbmFyeSBtb2RlIGZvciBESkdQUC4KLQotMC45LjVjCi1+fn5+fn4KLUNoYW5nZWQgQlpfTl9PVkVSU0hPT1QgdG8gYmUgLi4uICsgMiBpbnN0ZWFkIG9mIC4uLiArIDEuICBUaGUgKyAxCi12ZXJzaW9uIGNvdWxkIGNhdXNlIHRoZSBzb3J0ZWQgb3JkZXIgdG8gYmUgd3JvbmcgaW4gc29tZSBleHRyZW1lbHkKLW9ic2N1cmUgY2FzZXMuICBBbHNvIGNoYW5nZWQgc2V0dGluZyBvZiBxdWFkcmFudCBpbiBibG9ja3NvcnQuYy4KLQotMC45LjVkCi1+fn5+fn4KLVRoZSBvbmx5IGZ1bmN0aW9uYWwgY2hhbmdlIGlzIHRvIG1ha2UgYnpsaWJWZXJzaW9uKCkgaW4gdGhlIGxpYnJhcnkKLXJldHVybiB0aGUgY29ycmVjdCBzdHJpbmcuICBUaGlzIGhhcyBubyBlZmZlY3Qgd2hhdHNvZXZlciBvbiB0aGUKLWZ1bmN0aW9uaW5nIG9mIHRoZSBiemlwMiBwcm9ncmFtIG9yIGxpYnJhcnkuICBBZGRlZCBhIGNvdXBsZSBvZiBjYXN0cwotc28gdGhlIGxpYnJhcnkgY29tcGlsZXMgd2l0aG91dCB3YXJuaW5ncyBhdCBsZXZlbCAzIGluIE1TIFZpc3VhbAotU3R1ZGlvIDYuMC4gIEluY2x1ZGVkIGEgWTJLIHN0YXRlbWVudCBpbiB0aGUgZmlsZSBZMktfSU5GTy4gIEFsbCBvdGhlcgotY2hhbmdlcyBhcmUgbWlub3IgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLgotCi0xLjAKLX5+fgotU2V2ZXJhbCBtaW5vciBidWdmaXhlcyBhbmQgZW5oYW5jZW1lbnRzOgotCi0qIExhcmdlIGZpbGUgc3VwcG9ydC4gIFRoZSBsaWJyYXJ5IHVzZXMgNjQtYml0IGNvdW50ZXJzIHRvCi0gIGNvdW50IHRoZSB2b2x1bWUgb2YgZGF0YSBwYXNzaW5nIHRocm91Z2ggaXQuICBiemlwMi5jIAotICBpcyBub3cgY29tcGlsZWQgd2l0aCAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IHRvIGdldCBsYXJnZQotICBmaWxlIHN1cHBvcnQgZnJvbSB0aGUgQyBsaWJyYXJ5LiAgLXYgY29ycmVjdGx5IHByaW50cyBvdXQKLSAgZmlsZSBzaXplcyBncmVhdGVyIHRoYW4gNCBnaWdhYnl0ZXMuICBBbGwgdGhlc2UgY2hhbmdlcyBoYXZlCi0gIGJlZW4gbWFkZSB3aXRob3V0IGFzc3VtaW5nIGEgNjQtYml0IHBsYXRmb3JtIG9yIGEgQyBjb21waWxlcgotICB3aGljaCBzdXBwb3J0cyA2NC1iaXQgaW50cywgc28sIGV4Y2VwdCBmb3IgdGhlIEMgbGlicmFyeQotICBhc3BlY3QsIHRoZXkgYXJlIGZ1bGx5IHBvcnRhYmxlLgotCi0qIERlY29tcHJlc3Npb24gcm9idXN0bmVzcy4gIFRoZSBsaWJyYXJ5L3Byb2dyYW0gc2hvdWxkIGJlCi0gIHJvYnVzdCB0byBhbnkgY29ycnVwdGlvbiBvZiBjb21wcmVzc2VkIGRhdGEsIGRldGVjdGluZyBhbmQKLSAgaGFuZGxpbmcgX2FsbF8gY29ycnVwdGlvbiwgaW5zdGVhZCBvZiBtZXJlbHkgcmVseWluZyBvbgotICB0aGUgQ1JDcy4gIFdoYXQgdGhpcyBtZWFucyBpcyB0aGF0IHRoZSBwcm9ncmFtIHNob3VsZCAKLSAgbmV2ZXIgY3Jhc2gsIGdpdmVuIGNvcnJ1cHRlZCBkYXRhLCBhbmQgdGhlIGxpYnJhcnkgc2hvdWxkCi0gIGFsd2F5cyByZXR1cm4gQlpfREFUQV9FUlJPUi4KLQotKiBGaXhlZCBhbiBvYnNjdXJlIHJhY2UtY29uZGl0aW9uIGJ1ZyBvbmx5IGV2ZXIgb2JzZXJ2ZWQgb24KLSAgU29sYXJpcywgaW4gd2hpY2gsIGlmIHlvdSB3ZXJlIHZlcnkgdW5sdWNreSBhbmQgaXNzdWVkCi0gIGNvbnRyb2wtQyBhdCBleGFjdGx5IHRoZSB3cm9uZyB0aW1lLCBib3RoIGlucHV0IGFuZCBvdXRwdXQKLSAgZmlsZXMgd291bGQgYmUgZGVsZXRlZC4KLQotKiBEb24ndCBydW4gb3V0IG9mIGZpbGUgaGFuZGxlcyBvbiB0ZXN0L2RlY29tcHJlc3Npb24gd2hlbgotICBsYXJnZSBudW1iZXJzIG9mIGZpbGVzIGhhdmUgaW52YWxpZCBtYWdpYyBudW1iZXJzLgotCi0qIEF2b2lkIGxpYnJhcnkgbmFtZXNwYWNlIHBvbGx1dGlvbi4gIFByZWZpeCBhbGwgZXhwb3J0ZWQgCi0gIHN5bWJvbHMgd2l0aCBCWjJfLgotCi0qIE1pbm9yIHNvcnRpbmcgZW5oYW5jZW1lbnRzIGZyb20gbXkgRENDMjAwMCBwYXBlci4KLQotKiBBZHZhbmNlIHRoZSB2ZXJzaW9uIG51bWJlciB0byAxLjAsIHNvIGFzIHRvIGNvdW50ZXJhY3QgdGhlCi0gIChmYWxzZS1pbi10aGlzLWNhc2UpIGltcHJlc3Npb24gc29tZSBwZW9wbGUgaGF2ZSB0aGF0IHByb2dyYW1zIAotICB3aXRoIHZlcnNpb24gbnVtYmVycyBsZXNzIHRoYW4gMS4wIGFyZSBpbiBzb21lIHdheSwgZXhwZXJpbWVudGFsLAotICBwcmUtcmVsZWFzZSB2ZXJzaW9ucy4KLQotKiBDcmVhdGUgYW4gaW5pdGlhbCBNYWtlZmlsZS1saWJiejJfc28gdG8gYnVpbGQgYSBzaGFyZWQgbGlicmFyeS4KLSAgWWVzLCBJIGtub3cgSSBzaG91bGQgcmVhbGx5IHVzZSBsaWJ0b29sIGV0IGFsIC4uLgotCi0qIE1ha2UgdGhlIHByb2dyYW0gZXhpdCB3aXRoIDIgaW5zdGVhZCBvZiAwIHdoZW4gZGVjb21wcmVzc2lvbgotICBmYWlscyBkdWUgdG8gYSBiYWQgbWFnaWMgbnVtYmVyIChpZSwgYW4gaW52YWxpZCBiemlwMiBoZWFkZXIpLgotICBBbHNvIGV4aXQgd2l0aCAxIChhcyB0aGUgbWFudWFsIGNsYWltcyA6LSkgd2hlbmV2ZXIgYSBkaWFnbm9zdGljCi0gIG1lc3NhZ2Ugd291bGQgaGF2ZSBiZWVuIHByaW50ZWQgQU5EIHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiAKLSAgaXMgYWJvcnRlZCwgZm9yIGV4YW1wbGUKLSAgICAgYnppcDI6IE91dHB1dCBmaWxlIHh4IGFscmVhZHkgZXhpc3RzLgotICBXaGVuIGEgZGlhZ25vc3RpYyBtZXNzYWdlIGlzIHByaW50ZWQgYnV0IHRoZSBvcGVyYXRpb24gaXMgbm90IAotICBhYm9ydGVkLCBmb3IgZXhhbXBsZQotICAgICBiemlwMjogQ2FuJ3QgZ3Vlc3Mgb3JpZ2luYWwgbmFtZSBmb3Igd3VyYmxlIC0tIHVzaW5nIHd1cmJsZS5vdXQKLSAgdGhlbiB0aGUgZXhpdCB2YWx1ZSAwIGlzIHJldHVybmVkLCB1bmxlc3Mgc29tZSBvdGhlciBwcm9ibGVtIGlzCi0gIGFsc28gZGV0ZWN0ZWQuCi0KLSAgSSB0aGluayBpdCBjb3JyZXNwb25kcyBtb3JlIGNsb3NlbHkgdG8gd2hhdCB0aGUgbWFudWFsIGNsYWltcyBub3cuCi0KLQotMS4wLjEKLX5+fn5+Ci0qIE1vZGlmaWVkIGRsbHRlc3QuYyBzbyBpdCB1c2VzIHRoZSBuZXcgQloyXyBuYW1pbmcgc2NoZW1lLgotKiBNb2RpZmllZCBtYWtlZmlsZS1tc2MgdG8gZml4IG1pbm9yIGJ1aWxkIHByb2JzIG9uIFdpbjJrLgotKiBVcGRhdGVkIFJFQURNRS5DT01QSUxBVElPTi5QUk9CTEVNUy4KLQotVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcyBvciBidWcgZml4ZXMgcmVsYXRpdmUgdG8gdmVyc2lvbgotMS4wLjAuICBUaGlzIGlzIGp1c3QgYSBkb2N1bWVudGF0aW9uIHVwZGF0ZSArIGEgZml4IGZvciBtaW5vciBXaW4zMgotYnVpbGQgcHJvYmxlbXMuICBGb3IgYWxtb3N0IGV2ZXJ5b25lLCB1cGdyYWRpbmcgZnJvbSAxLjAuMCB0byAxLjAuMSBpcwotdXR0ZXJseSBwb2ludGxlc3MuICBEb24ndCBib3RoZXIuCi0KLQotMS4wLjIKLX5+fn5+Ci1BIGJ1ZyBmaXggcmVsZWFzZSwgYWRkcmVzc2luZyB2YXJpb3VzIG1pbm9yIGlzc3VlcyB3aGljaCBoYXZlIGFwcGVhcmVkCi1pbiB0aGUgMTggb3Igc28gbW9udGhzIHNpbmNlIDEuMC4xIHdhcyByZWxlYXNlZC4gIE1vc3Qgb2YgdGhlIGZpeGVzCi1hcmUgdG8gZG8gd2l0aCBmaWxlLWhhbmRsaW5nIG9yIGRvY3VtZW50YXRpb24gYnVncy4gIFRvIHRoZSBiZXN0IG9mIG15Ci1rbm93bGVkZ2UsIHRoZXJlIGhhdmUgYmVlbiBubyBkYXRhLWxvc3MtY2F1c2luZyBidWdzIHJlcG9ydGVkIGluIHRoZQotY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBlbmdpbmUgb2YgMS4wLjAgb3IgMS4wLjEuCi0KLU5vdGUgdGhhdCB0aGlzIHJlbGVhc2UgZG9lcyBub3QgaW1wcm92ZSB0aGUgcmF0aGVyIGNydWRlIGJ1aWxkIHN5c3RlbQotZm9yIFVuaXggcGxhdGZvcm1zLiAgVGhlIGdlbmVyYWwgcGxhbiBoZXJlIGlzIHRvIGF1dG9jb25maXNjYXRlLwotbGlidG9vbGlzZSAxLjAuMiBzb29uIGFmdGVyIHJlbGVhc2UsIGFuZCByZWxlYXNlIHRoZSByZXN1bHQgYXMgMS4xLjAKLW9yIHBlcmhhcHMgMS4yLjAuICBUaGF0LCBob3dldmVyLCBpcyBzdGlsbCBqdXN0IGEgcGxhbiBhdCB0aGlzIHBvaW50LgotCi1IZXJlIGFyZSB0aGUgY2hhbmdlcyBpbiAxLjAuMi4gIEJ1Zy1yZXBvcnRlcnMgYW5kL29yIHBhdGNoLXNlbmRlcnMgaW4KLXBhcmVudGhlc2VzLgotCi0qIEZpeCBhbiBpbmZpbml0ZSBzZWdmYXVsdCBsb29wIGluIDEuMC4xIHdoZW4gYSBkaXJlY3RvcnkgaXMKLSAgZW5jb3VudGVyZWQgaW4gLWYgKGZvcmNlKSBtb2RlLgotICAgICAoVHJvbmQgRWl2aW5kIEdsb21zcm9kLCBOaWNob2xhcyBOZXRoZXJjb3RlLCBWb2xrZXIgU2NobWlkdCkKLQotKiBBdm9pZCBkb3VibGUgZmNsb3NlKCkgb2Ygb3V0cHV0IGZpbGUgb24gY2VydGFpbiBJL08gZXJyb3IgcGF0aHMuCi0gICAgIChTb2xhciBEZXNpZ25lcikKLQotKiBEb24ndCBmYWlsIHdpdGggaW50ZXJuYWwgZXJyb3IgMTAwNyB3aGVuIGZlZCBhIGxvbmcgc3RyZWFtICg+IDQ4TUIpCi0gIG9mIGJ5dGUgMjUxLiAgQWxzbyBwcmludCB1c2VmdWwgbWVzc2FnZSBzdWdnZXN0aW5nIHRoYXQgMTAwN3MgbWF5IGJlCi0gIGNhdXNlZCBieSBiYWQgbWVtb3J5LgotICAgICAobm90aWNlZCBieSBKdWFuIFBlZHJvIFZhbGxlam8sIGZpeGVkIGJ5IG1lKQotCi0qIEZpeCB1bmluaXRpYWxpc2VkIHZhcmlhYmxlIHNpbGx5IGJ1ZyBpbiBkZW1vIHByb2cgZGxsdGVzdC5jLgotICAgICAoSm9yaiBCYXVlcikKLQotKiBSZW1vdmUgNTEyLU1CIGxpbWl0YXRpb24gb24gcmVjb3ZlcmVkIGZpbGUgc2l6ZSBmb3IgYnppcDJyZWNvdmVyCi0gIG9uIHNlbGVjdGVkIHBsYXRmb3JtcyB3aGljaCBzdXBwb3J0IDY0LWJpdCBpbnRzLiAgQXQgdGhlIG1vbWVudAotICBhbGwgR0NDIHN1cHBvcnRlZCBwbGF0Zm9ybXMsIGFuZCBXaW4zMi4KLSAgICAgKG1lLCBBbHNvbiB2YW4gZGVyIE1ldWxlbikKLQotKiBIYXJkLWNvZGUgaGVhZGVyIGJ5dGUgdmFsdWVzLCB0byBnaXZlIGNvcnJlY3Qgb3BlcmF0aW9uIG9uIHBsYXRmb3JtcwotICB1c2luZyBFQkNESUMgYXMgdGhlaXIgbmF0aXZlIGNoYXJhY3RlciBzZXQgKElCTSdzIE9TLzM5MCkuCi0gICAgIChMZWxhbmQgTHVjaXVzKQotCi0qIENvcHkgZmlsZSBhY2Nlc3MgdGltZXMgY29ycmVjdGx5LgotICAgICAoTWFydHkgTGVpc25lcikKLQotKiBBZGQgZGlzdGNsZWFuIGFuZCBjaGVjayB0YXJnZXRzIHRvIE1ha2VmaWxlLgotICAgICAoTWljaGFlbCBDYXJtYWNrKQotCi0qIFBhcmFtZXRlcmlzZSB1c2Ugb2YgYXIgYW5kIHJhbmxpYiBpbiBNYWtlZmlsZS4gIEFsc28gYWRkICQoTERGTEFHUykuCi0gICAgIChSaWNoIElyZWxhbmQsIEJvIFRob3JzZW4pCi0KLSogUGFzcyAtcCAoY3JlYXRlIHBhcmVudCBkaXJzIGFzIG5lZWRlZCkgdG8gbWtkaXIgZHVyaW5nIG1ha2UgaW5zdGFsbC4KLSAgICAgKEplcmVteSBGdXNjbykKLQotKiBEZXJlZmVyZW5jZSBzeW1saW5rcyB3aGVuIGNvcHlpbmcgZmlsZSBwZXJtaXNzaW9ucyBpbiAtZiBtb2RlLgotICAgICAoVm9sa2VyIFNjaG1pZHQpCi0KLSogTWFqb3JseSBzaW1wbGlmeSBpbXBsZW1lbnRhdGlvbiBvZiB1SW50NjRfcXJtMTAuCi0gICAgIChCbyBMaW5kYmVyZ2gpCi0KLSogQ2hlY2sgdGhlIGlucHV0IGZpbGUgc3RpbGwgZXhpc3RzIGJlZm9yZSBkZWxldGluZyB0aGUgb3V0cHV0IG9uZSwKLSAgd2hlbiBhYm9ydGluZyBpbiBjbGVhblVwQW5kRmFpbCgpLgotICAgICAoSm9lcmcgUHJhbnRlLCBSb2JlcnQgTGluZGVuLCBNYXR0aGlhcyBLcmluZ3MpCi0KLUFsc28gYSBidW5jaCBvZiBwYXRjaGVzIGNvdXJ0ZXN5IG9mIFBoaWxpcHBlIFRyb2luLCB0aGUgRGViaWFuIG1haW50YWluZXIKLW9mIGJ6aXAyOgotCi0qIFdyYXBwZXIgc2NyaXB0cyAod2l0aCBtYW5wYWdlcyk6IGJ6ZGlmZiwgYnpncmVwLCBiem1vcmUuCi0KLSogU3BlbGxpbmcgY2hhbmdlcyBhbmQgbWlub3IgZW5oYW5jZW1lbnRzIGluIGJ6aXAyLjEuCi0KLSogQXZvaWQgcmFjZSBjb25kaXRpb24gYmV0d2VlbiBjcmVhdGluZyB0aGUgb3V0cHV0IGZpbGUgYW5kIHNldHRpbmcgaXRzCi0gIGludGVyaW0gcGVybWlzc2lvbnMgc2FmZWx5LCBieSB1c2luZyBmb3Blbl9vdXRwdXRfc2FmZWx5KCkuCi0gIE5vIGNoYW5nZXMgdG8gYnppcDJyZWNvdmVyIHNpbmNlIHRoZXJlIGlzIG5vIGlzc3VlIHdpdGggZmlsZQotICBwZXJtaXNzaW9ucyB0aGVyZS4KLQotKiBkbyBub3QgcHJpbnQgc2Vuc2VsZXNzIHJlcG9ydCB3aXRoIC12IHdoZW4gY29tcHJlc3NpbmcgYW4gZW1wdHkKLSAgZmlsZS4KLQotKiBiemNhdCAtZiB3b3JrcyBvbiBub24tYnppcDIgZmlsZXMuCi0KLSogZG8gbm90IHRyeSB0byBlc2NhcGUgc2hlbGwgbWV0YS1jaGFyYWN0ZXJzIG9uIHVuaXggKHRoZSBzaGVsbCB0YWtlcwotICBjYXJlIG9mIHRoZXNlKS4KLQotKiBhZGRlZCAtLWZhc3QgYW5kIC0tYmVzdCBhbGlhc2VzIGZvciAtMSAtOSBmb3IgZ3ppcCBjb21wYXRpYmlsaXR5LgotCi0KLTEuMC4zICgxNSBGZWIgMDUpCi1+fn5+fn5+fn5+fn5+fn5+fgotRml4ZXMgc29tZSBtaW5vciBidWdzIHNpbmNlIHRoZSBsYXN0IHZlcnNpb24sIDEuMC4yLgotCi0qIEZ1cnRoZXIgcm9idXN0aWZpY2F0aW9uIGFnYWluc3QgY29ycnVwdGVkIGNvbXByZXNzZWQgZGF0YS4KLSAgVGhlcmUgYXJlIGN1cnJlbnRseSBubyBrbm93biBiaXRzdHJlYW1zIHdoaWNoIGNhbiBjYXVzZSB0aGUKLSAgZGVjb21wcmVzc29yIHRvIGNyYXNoLCBsb29wIG9yIGFjY2VzcyBtZW1vcnkgd2hpY2ggZG9lcyBub3QKLSAgYmVsb25nIHRvIGl0LiAgSWYgeW91IGFyZSB1c2luZyBiemlwMiBvciB0aGUgbGlicmFyeSB0byAKLSAgZGVjb21wcmVzcyBiaXRzdHJlYW1zIGZyb20gdW50cnVzdGVkIHNvdXJjZXMsIGFuIHVwZ3JhZGUKLSAgdG8gMS4wLjMgaXMgcmVjb21tZW5kZWQuICBUaGlzIGZpeGVzIENBTi0yMDA1LTEyNjAuCi0KLSogVGhlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gY29udmVydGVkIHRvIFhNTCwgZnJvbSB3aGljaCBodG1sCi0gIGFuZCBwZGYgY2FuIGJlIGRlcml2ZWQuCi0KLSogVmFyaW91cyBtaW5vciBidWdzIGluIHRoZSBkb2N1bWVudGF0aW9uIGhhdmUgYmVlbiBmaXhlZC4KLQotKiBGaXhlcyBmb3IgdmFyaW91cyBjb21waWxhdGlvbiB3YXJuaW5ncyB3aXRoIG5ld2VyIHZlcnNpb25zIG9mCi0gIGdjYywgYW5kIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCi0KLSogVGhlIEJaX05PX1NURElPIGNwcCBzeW1ib2wgd2FzIG5vdCBwcm9wZXJseSBvYnNlcnZlZCBpbiAxLjAuMi4KLSAgVGhpcyBoYXMgYmVlbiBmaXhlZC4KLQotCi0xLjAuNCAoMjAgRGVjIDA2KQotfn5+fn5+fn5+fn5+fn5+fn4KLUZpeGVzIHNvbWUgbWlub3IgYnVncyBzaW5jZSB0aGUgbGFzdCB2ZXJzaW9uLCAxLjAuMy4KLQotKiBGaXggZmlsZSBwZXJtaXNzaW9ucyByYWNlIHByb2JsZW0gKENBTi0yMDA1LTA5NTMpLgotCi0qIEF2b2lkIHBvc3NpYmxlIHNlZ2ZhdWx0IGluIEJaMl9iemNsb3NlLiAgRnJvbSBDb3Zlcml0eSdzIE5ldEJTRAotICBzY2FuLgotCi0qICdjb25zdCcvcHJvdG90eXBlIGNsZWFudXBzIGluIHRoZSBDIGNvZGUuCi0KLSogQ2hhbmdlIGRlZmF1bHQgaW5zdGFsbCBsb2NhdGlvbiB0byAvdXNyL2xvY2FsLCBhbmQgaGFuZGxlIG11bHRpcGxlCi0gICdtYWtlIGluc3RhbGwncyB3aXRob3V0IGVycm9yLgotCi0qIFNhbml0aXNlIGZpbGUgbmFtZXMgbW9yZSBjYXJlZnVsbHkgaW4gYnpncmVwLiAgRml4ZXMgQ0FOLTIwMDUtMDc1OAotICB0byB0aGUgZXh0ZW50IHRoYXQgYXBwbGllcyB0byBiemdyZXAuCi0KLSogVXNlICdta3RlbXAnIHJhdGhlciB0aGFuICd0ZW1wZmlsZScgaW4gYnpkaWZmLgotCi0qIFRpZ2h0ZW4gdXAgYSBjb3VwbGUgb2YgYXNzZXJ0aW9ucyBpbiBibG9ja3NvcnQuYyBmb2xsb3dpbmcgYXV0b21hdGVkCi0gIGFuYWx5c2lzLgotCi0qIEZpeCBtaW5vciBkb2MvY29tbWVudCBidWdzLgotCi0KLTEuMC41ICgxMCBEZWMgMDcpCi1+fn5+fn5+fn5+fn5+fn5+fgotU2VjdXJpdHkgZml4IG9ubHkuICBGaXhlcyBDRVJULUZJIDIwNDY5IGFzIGl0IGFwcGxpZXMgdG8gYnppcDIuCi0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL0NNYWtlTGlzdHMudHh0IGIvVXRpbGl0aWVzL2NtYnppcDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMmFmZjY5Yy4uY2I0YTAzOCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvQ01ha2VMaXN0cy50eHQKKysrIGIvVXRpbGl0aWVzL2NtYnppcDIvQ01ha2VMaXN0cy50eHQKQEAgLTEsNCArMSwxMyBAQAogcHJvamVjdChiemlwMikKKworIyBEaXNhYmxlIHdhcm5pbmdzIHRvIGF2b2lkIGNoYW5naW5nIDNyZCBwYXJ0eSBjb2RlLgoraWYoQ01BS0VfQ19DT01QSUxFUl9JRCBNQVRDSEVTCisgICAgIl4oR05VfENsYW5nfEFwcGxlQ2xhbmd8WExDbGFuZ3xYTHxWaXN1YWxBZ2V8U3VuUHJvfEhQfEludGVsKSQiKQorICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtdyIpCitlbHNlaWYoQ01BS0VfQ19DT01QSUxFUl9JRCBTVFJFUVVBTCAiUGF0aFNjYWxlIikKKyAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLXdvZmZhbGwiKQorZW5kaWYoKQorCiBhZGRfZGVmaW5pdGlvbnMoLURfRklMRV9PRkZTRVRfQklUUz02NCkKIGFkZF9saWJyYXJ5KGNtYnppcDIKICAgYmxvY2tzb3J0LmMgaHVmZm1hbi5jIGNyY3RhYmxlLmMgcmFuZHRhYmxlLmMgY29tcHJlc3MuYyBkZWNvbXByZXNzLmMgYnpsaWIuYykKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL0xJQ0VOU0UgYi9VdGlsaXRpZXMvY21iemlwMi9MSUNFTlNFCmluZGV4IGY0MjBjZmYuLjgxYTM3ZWEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL0xJQ0VOU0UKKysrIGIvVXRpbGl0aWVzL2NtYnppcDIvTElDRU5TRQpAQCAtMiw3ICsyLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFRoaXMgcHJvZ3JhbSwgImJ6aXAyIiwgdGhlIGFzc29jaWF0ZWQgbGlicmFyeSAibGliYnppcDIiLCBhbmQgYWxsCi1kb2N1bWVudGF0aW9uLCBhcmUgY29weXJpZ2h0IChDKSAxOTk2LTIwMDcgSnVsaWFuIFIgU2V3YXJkLiAgQWxsCitkb2N1bWVudGF0aW9uLCBhcmUgY29weXJpZ2h0IChDKSAxOTk2LTIwMTkgSnVsaWFuIFIgU2V3YXJkLiAgQWxsCiByaWdodHMgcmVzZXJ2ZWQuCiAKIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzYsNyArMzYsNyBAQAogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotSnVsaWFuIFNld2FyZCwganNld2FyZEBiemlwLm9yZwotYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuNSBvZiAxMCBEZWNlbWJlciAyMDA3CitKdWxpYW4gU2V3YXJkLCBqc2V3YXJkQGFjbS5vcmcKK2J6aXAyL2xpYmJ6aXAyIHZlcnNpb24gMS4wLjggb2YgMTMgSnVseSAyMDE5CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9NYWtlZmlsZS1saWJiejJfc28gYi9VdGlsaXRpZXMvY21iemlwMi9NYWtlZmlsZS1saWJiejJfc28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNzA4ODcuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvTWFrZWZpbGUtbGliYnoyX3NvCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotCi0jIFRoaXMgTWFrZWZpbGUgYnVpbGRzIGEgc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIAotIyBsaWJiejIuc28uMS4wLjQsIHdpdGggc29uYW1lIGxpYmJ6Mi5zby4xLjAsCi0jIGF0IGxlYXN0IG9uIHg4Ni1MaW51eCAoUmVkSGF0IDcuMiksIAotIyB3aXRoIGdjYy0yLjk2IDIwMDAwNzMxIChSZWQgSGF0IExpbnV4IDcuMSAyLjk2LTk4KS4gIAotIyBQbGVhc2Ugc2VlIHRoZSBSRUFETUUgZmlsZSBmb3Igc29tZSBpbXBvcnRhbnQgaW5mbyAKLSMgYWJvdXQgYnVpbGRpbmcgdGhlIGxpYnJhcnkgbGlrZSB0aGlzLgotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBiemlwMi9saWJiemlwMiwgYSBwcm9ncmFtIGFuZCBsaWJyYXJ5IGZvcgotIyBsb3NzbGVzcywgYmxvY2stc29ydGluZyBkYXRhIGNvbXByZXNzaW9uLgotIwotIyBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcKLSMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDcgSnVsaWFuIFNld2FyZCA8anNld2FyZEBiemlwLm9yZz4KLSMKLSMgUGxlYXNlIHJlYWQgdGhlIFdBUk5JTkcsIERJU0NMQUlNRVIgYW5kIFBBVEVOVFMgc2VjdGlvbnMgaW4gdGhlIAotIyBSRUFETUUgZmlsZS4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBjb250YWluZWQKLSMgaW4gdGhlIGZpbGUgTElDRU5TRS4KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotU0hFTEw9L2Jpbi9zaAotQ0M9Z2NjCi1CSUdGSUxFUz0tRF9GSUxFX09GRlNFVF9CSVRTPTY0Ci1DRkxBR1M9LWZwaWMgLWZQSUMgLVdhbGwgLVdpbmxpbmUgLU8yIC1nICQoQklHRklMRVMpCi0KLU9CSlM9IGJsb2Nrc29ydC5vICBcCi0gICAgICBodWZmbWFuLm8gICAgXAotICAgICAgY3JjdGFibGUubyAgIFwKLSAgICAgIHJhbmR0YWJsZS5vICBcCi0gICAgICBjb21wcmVzcy5vICAgXAotICAgICAgZGVjb21wcmVzcy5vIFwKLSAgICAgIGJ6bGliLm8KLQotYWxsOiAkKE9CSlMpCi0gICAgJChDQykgLXNoYXJlZCAtV2wsLXNvbmFtZSAtV2wsbGliYnoyLnNvLjEuMCAtbyBsaWJiejIuc28uMS4wLjQgJChPQkpTKQotICAgICQoQ0MpICQoQ0ZMQUdTKSAtbyBiemlwMi1zaGFyZWQgYnppcDIuYyBsaWJiejIuc28uMS4wLjQKLSAgICBybSAtZiBsaWJiejIuc28uMS4wCi0gICAgbG4gLXMgbGliYnoyLnNvLjEuMC40IGxpYmJ6Mi5zby4xLjAKLQotY2xlYW46IAotICAgIHJtIC1mICQoT0JKUykgYnppcDIubyBsaWJiejIuc28uMS4wLjQgbGliYnoyLnNvLjEuMCBiemlwMi1zaGFyZWQKLQotYmxvY2tzb3J0Lm86IGJsb2Nrc29ydC5jCi0gICAgJChDQykgJChDRkxBR1MpIC1jIGJsb2Nrc29ydC5jCi1odWZmbWFuLm86IGh1ZmZtYW4uYwotICAgICQoQ0MpICQoQ0ZMQUdTKSAtYyBodWZmbWFuLmMKLWNyY3RhYmxlLm86IGNyY3RhYmxlLmMKLSAgICAkKENDKSAkKENGTEFHUykgLWMgY3JjdGFibGUuYwotcmFuZHRhYmxlLm86IHJhbmR0YWJsZS5jCi0gICAgJChDQykgJChDRkxBR1MpIC1jIHJhbmR0YWJsZS5jCi1jb21wcmVzcy5vOiBjb21wcmVzcy5jCi0gICAgJChDQykgJChDRkxBR1MpIC1jIGNvbXByZXNzLmMKLWRlY29tcHJlc3MubzogZGVjb21wcmVzcy5jCi0gICAgJChDQykgJChDRkxBR1MpIC1jIGRlY29tcHJlc3MuYwotYnpsaWIubzogYnpsaWIuYwotICAgICQoQ0MpICQoQ0ZMQUdTKSAtYyBiemxpYi5jCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9SRUFETUUgYi9VdGlsaXRpZXMvY21iemlwMi9SRUFETUUKaW5kZXggZTE3YTg0ZS4uYjljNjA5OSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvUkVBRE1FCisrKyBiL1V0aWxpdGllcy9jbWJ6aXAyL1JFQURNRQpAQCAtNiw4ICs2LDggQEAKIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJ6aXAyL2xpYmJ6aXAyLCBhIHByb2dyYW0gYW5kIGxpYnJhcnkgZm9yCiBsb3NzbGVzcywgYmxvY2stc29ydGluZyBkYXRhIGNvbXByZXNzaW9uLgogCi1iemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcKLUNvcHlyaWdodCAoQykgMTk5Ni0yMDA3IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYnppcC5vcmc+CitiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC44IG9mIDEzIEp1bHkgMjAxOQorQ29weXJpZ2h0IChDKSAxOTk2LTIwMTkgSnVsaWFuIFNld2FyZCA8anNld2FyZEBhY20ub3JnPgogCiBQbGVhc2UgcmVhZCB0aGUgV0FSTklORywgRElTQ0xBSU1FUiBhbmQgUEFURU5UUyBzZWN0aW9ucyBpbiB0aGlzIGZpbGUuCiAKQEAgLTczLDcgKzczLDcgQEAKIAogSXQncyBkaWZmaWN1bHQgZm9yIG1lIHRvIHN1cHBvcnQgY29tcGlsYXRpb24gb24gYWxsIHRoZXNlIHBsYXRmb3Jtcy4KIE15IGFwcHJvYWNoIGlzIHRvIGNvbGxlY3QgYmluYXJpZXMgZm9yIHRoZXNlIHBsYXRmb3JtcywgYW5kIHB1dCB0aGVtCi1vbiB0aGUgbWFzdGVyIHdlYiBzaXRlIChodHRwOi8vd3d3LmJ6aXAub3JnKS4gIExvb2sgdGhlcmUuICBIb3dldmVyCitvbiB0aGUgbWFzdGVyIHdlYiBzaXRlIChodHRwczovL3NvdXJjZXdhcmUub3JnL2J6aXAyLykuICBMb29rIHRoZXJlLiAgSG93ZXZlcgogKEZXSVcpLCBiemlwMi0xLjAuWCBpcyB2ZXJ5IHN0YW5kYXJkIEFOU0kgQyBhbmQgc2hvdWxkIGNvbXBpbGUKIHVubW9kaWZpZWQgd2l0aCBNUyBWaXN1YWwgQy4gIElmIHlvdSBoYXZlIGRpZmZpY3VsdGllcyBidWlsZGluZywgeW91CiBtaWdodCB3YW50IHRvIHJlYWQgUkVBRE1FLkNPTVBJTEFUSU9OLlBST0JMRU1TLgpAQCAtMTYxLDM5ICsxNjEsMjIgQEAKICAgICogTWFueSBzbWFsbCBpbXByb3ZlbWVudHMgaW4gZmlsZSBhbmQgZmxhZyBoYW5kbGluZy4KICAgICogQSBZMksgc3RhdGVtZW50LgogCi1XSEFUJ1MgTkVXIElOIDEuMC4wID8KK1dIQVQnUyBORVcgSU4gMS4wLnggPwogCiAgICBTZWUgdGhlIENIQU5HRVMgZmlsZS4KIAotV0hBVCdTIE5FVyBJTiAxLjAuMiA/Ci0KLSAgIFNlZSB0aGUgQ0hBTkdFUyBmaWxlLgotCi1XSEFUJ1MgTkVXIElOIDEuMC4zID8KLQotICAgU2VlIHRoZSBDSEFOR0VTIGZpbGUuCi0KLVdIQVQnUyBORVcgSU4gMS4wLjQgPwotCi0gICBTZWUgdGhlIENIQU5HRVMgZmlsZS4KLQotV0hBVCdTIE5FVyBJTiAxLjAuNSA/Ci0KLSAgIFNlZSB0aGUgQ0hBTkdFUyBmaWxlLgotCi0KLUkgaG9wZSB5b3UgZmluZCBiemlwMiB1c2VmdWwuICBGZWVsIGZyZWUgdG8gY29udGFjdCBtZSBhdAotICAganNld2FyZEBiemlwLm9yZworSSBob3BlIHlvdSBmaW5kIGJ6aXAyIHVzZWZ1bC4gIEZlZWwgZnJlZSB0byBjb250YWN0IHRoZSBkZXZlbG9wZXJzIGF0CisgICBiemlwMi1kZXZlbEBzb3VyY2V3YXJlLm9yZwogaWYgeW91IGhhdmUgYW55IHN1Z2dlc3Rpb25zIG9yIHF1ZXJpZXMuICBNYW55IHBlb3BsZSBtYWlsZWQgbWUgd2l0aAogY29tbWVudHMsIHN1Z2dlc3Rpb25zIGFuZCBwYXRjaGVzIGFmdGVyIHRoZSByZWxlYXNlcyBvZiBiemlwLTAuMTUsCiBiemlwLTAuMjEsIGFuZCBiemlwMiB2ZXJzaW9ucyAwLjFwbDIsIDAuOS4wLCAwLjkuNSwgMS4wLjAsIDEuMC4xLAogMS4wLjIgYW5kIDEuMC4zLCBhbmQgdGhlIGNoYW5nZXMgaW4gYnppcDIgYXJlIGxhcmdlbHkgYSByZXN1bHQgb2YgdGhpcwogZmVlZGJhY2suICBJIHRoYW5rIHlvdSBmb3IgeW91ciBjb21tZW50cy4KIAotYnppcDIncyAiaG9tZSIgaXMgaHR0cDovL3d3dy5iemlwLm9yZy8KK2J6aXAyJ3MgImhvbWUiIGlzIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnppcDIvCiAKIEp1bGlhbiBTZXdhcmQKLWpzZXdhcmRAYnppcC5vcmcKK2pzZXdhcmRAYWNtLm9yZwogQ2FtYnJpZGdlLCBVSy4KIAogMTggICAgIEp1bHkgMTk5NiAodmVyc2lvbiAwLjE1KQpAQCAtMjA4LDMgKzE5MSw2IEBACiAxNSBGZWJydWFyeSAyMDA1IChiemlwMiwgdmVyc2lvbiAxLjAuMykKIDIwIERlY2VtYmVyIDIwMDYgKGJ6aXAyLCB2ZXJzaW9uIDEuMC40KQogMTAgRGVjZW1iZXIgMjAwNyAoYnppcDIsIHZlcnNpb24gMS4wLjUpCisgNiAgICAgU2VwdCAyMDEwIChiemlwMiwgdmVyc2lvbiAxLjAuNikKKzI3ICAgICBKdW5lIDIwMTkgKGJ6aXAyLCB2ZXJzaW9uIDEuMC43KQorMTMgICAgIEp1bHkgMjAxOSAoYnppcDIsIHZlcnNpb24gMS4wLjgpCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9SRUFETUUuQ09NUElMQVRJT04uUFJPQkxFTVMgYi9VdGlsaXRpZXMvY21iemlwMi9SRUFETUUuQ09NUElMQVRJT04uUFJPQkxFTVMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyYjk1YzYuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvUkVBRE1FLkNPTVBJTEFUSU9OLlBST0JMRU1TCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1UaGlzIGZpbGUgaXMgcGFydCBvZiBiemlwMi9saWJiemlwMiwgYSBwcm9ncmFtIGFuZCBsaWJyYXJ5IGZvcgotbG9zc2xlc3MsIGJsb2NrLXNvcnRpbmcgZGF0YSBjb21wcmVzc2lvbi4KLQotYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuNSBvZiAxMCBEZWNlbWJlciAyMDA3Ci1Db3B5cmlnaHQgKEMpIDE5OTYtMjAwNyBKdWxpYW4gU2V3YXJkIDxqc2V3YXJkQGJ6aXAub3JnPgotCi1QbGVhc2UgcmVhZCB0aGUgV0FSTklORywgRElTQ0xBSU1FUiBhbmQgUEFURU5UUyBzZWN0aW9ucyBpbiB0aGUgCi1SRUFETUUgZmlsZS4KLQotVGhpcyBwcm9ncmFtIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBjb250YWluZWQKLWluIHRoZSBmaWxlIExJQ0VOU0UuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotYnppcDItMS4wLjUgc2hvdWxkIGNvbXBpbGUgd2l0aG91dCBwcm9ibGVtcyBvbiB0aGUgdmFzdCBtYWpvcml0eSBvZgotcGxhdGZvcm1zLiAgVXNpbmcgdGhlIHN1cHBsaWVkIE1ha2VmaWxlLCBJJ3ZlIGJ1aWx0IGFuZCB0ZXN0ZWQgaXQKLW15c2VsZiBmb3IgeDg2LWxpbnV4IGFuZCBhbWQ2NC1saW51eC4gIFdpdGggbWFrZWZpbGUubXNjLCBWaXN1YWwgQysrCi02LjAgYW5kIG5tYWtlLCB5b3UgY2FuIGJ1aWxkIGEgbmF0aXZlIFdpbjMyIHZlcnNpb24gdG9vLiAgTGFyZ2UgZmlsZQotc3VwcG9ydCBzZWVtcyB0byB3b3JrIGNvcnJlY3RseSBvbiBhdCBsZWFzdCBvbiBhbWQ2NC1saW51eC4KLQotV2hlbiBJIHNheSAibGFyZ2UgZmlsZSIgSSBtZWFuIGEgZmlsZSBvZiBzaXplIDIsMTQ3LDQ4Myw2NDggKDJeMzEpCi1ieXRlcyBvciBhYm92ZS4gIE1hbnkgb2xkZXIgT1NzIGNhbid0IGhhbmRsZSBmaWxlcyBhYm92ZSB0aGlzIHNpemUsCi1idXQgbWFueSBuZXdlciBvbmVzIGNhbi4gIExhcmdlIGZpbGVzIGFyZSBwcmV0dHkgaHVnZSAtLSBtb3N0IGZpbGVzCi15b3UnbGwgZW5jb3VudGVyIGFyZSBub3QgTGFyZ2UgRmlsZXMuCi0KLUVhcmx5IHZlcnNpb25zIG9mIGJ6aXAyICgwLjEsIDAuOS4wLCAwLjkuNSkgY29tcGlsZWQgb24gYSB3aWRlIHZhcmlldHkKLW9mIHBsYXRmb3JtcyB3aXRob3V0IGRpZmZpY3VsdHksIGFuZCBJIGhvcGUgdGhpcyB2ZXJzaW9uIHdpbGwgY29udGludWUKLWluIHRoYXQgdHJhZGl0aW9uLiAgSG93ZXZlciwgaW4gb3JkZXIgdG8gc3VwcG9ydCBsYXJnZSBmaWxlcywgSSd2ZSBoYWQKLXRvIGluY2x1ZGUgdGhlIGRlZmluZSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IGluIHRoZSBNYWtlZmlsZS4gIFRoaXMKLWNhbiBjYXVzZSBwcm9ibGVtcy4KLQotVGhlIHRlY2huaXF1ZSBvZiBhZGRpbmcgLURfRklMRV9PRkZTRVRfQklUUz02NCB0byBnZXQgbGFyZ2UgZmlsZQotc3VwcG9ydCBpcywgYXMgZmFyIGFzIEkga25vdywgdGhlIFJlY29tbWVuZGVkIFdheSB0byBnZXQgY29ycmVjdCBsYXJnZQotZmlsZSBzdXBwb3J0LiAgRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBMYXJnZSBGaWxlIFN1cHBvcnQKLVNwZWNpZmljYXRpb24sIHB1Ymxpc2hlZCBieSB0aGUgTGFyZ2UgRmlsZSBTdW1taXQsIGF0Ci0KLSAgIGh0dHA6Ly9mdHAuc2FzLmNvbS9zdGFuZGFyZHMvbGFyZ2UuZmlsZQotCi1BcyBhIGdlbmVyYWwgY29tbWVudCwgaWYgeW91IGdldCBjb21waWxhdGlvbiBlcnJvcnMgd2hpY2ggeW91IHRoaW5rCi1hcmUgcmVsYXRlZCB0byBsYXJnZSBmaWxlIHN1cHBvcnQsIHRyeSByZW1vdmluZyB0aGUgYWJvdmUgZGVmaW5lIGZyb20KLXRoZSBNYWtlZmlsZSwgaWUsIGRlbGV0ZSB0aGUgbGluZQotCi0gICBCSUdGSUxFUz0tRF9GSUxFX09GRlNFVF9CSVRTPTY0IAotCi1mcm9tIHRoZSBNYWtlZmlsZSwgYW5kIGRvICdtYWtlIGNsZWFuIDsgbWFrZScuICBUaGlzIHdpbGwgZ2l2ZSB5b3UgYQotdmVyc2lvbiBvZiBiemlwMiB3aXRob3V0IGxhcmdlIGZpbGUgc3VwcG9ydCwgd2hpY2gsIGZvciBtb3N0Ci1hcHBsaWNhdGlvbnMsIGlzIHByb2JhYmx5IG5vdCBhIHByb2JsZW0uICAKLQotQWx0ZXJuYXRpdmVseSwgdHJ5IHNvbWUgb2YgdGhlIHBsYXRmb3JtLXNwZWNpZmljIGhpbnRzIGxpc3RlZCBiZWxvdy4KLQotWW91IGNhbiB1c2UgdGhlIHNwZXdHLmMgcHJvZ3JhbSB0byBnZW5lcmF0ZSBodWdlIGZpbGVzIHRvIHRlc3QgYnppcDIncwotbGFyZ2UgZmlsZSBzdXBwb3J0LCBpZiB5b3UgYXJlIGZlZWxpbmcgcGFyYW5vaWQuICBCZSBhd2FyZSB0aG91Z2ggdGhhdAotYW55IGNvbXBpbGF0aW9uIHByb2JsZW1zIHdoaWNoIGFmZmVjdCBiemlwMiB3aWxsIGFsc28gYWZmZWN0IHNwZXdHLmMsCi1hbGFzLgotCi1BSVg6IEkgaGF2ZSByZXBvcnRzIHRoYXQgZm9yIGxhcmdlIGZpbGUgc3VwcG9ydCwgeW91IG5lZWQgdG8gc3BlY2lmeQotLURfTEFSR0VfRklMRVMgcmF0aGVyIHRoYW4gLURfRklMRV9PRkZTRVRfQklUUz02NC4gIEkgaGF2ZSBub3QgdGVzdGVkCi10aGlzIG15c2VsZi4KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL1JFQURNRS5YTUwuU1RVRkYgYi9VdGlsaXRpZXMvY21iemlwMi9SRUFETUUuWE1MLlNUVUZGCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTViNGM1Li4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL1JFQURNRS5YTUwuU1RVRkYKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgYnppcDIvbGliYnppcDIsIGEgcHJvZ3JhbSBhbmQgbGlicmFyeSBmb3IKLSAgbG9zc2xlc3MsIGJsb2NrLXNvcnRpbmcgZGF0YSBjb21wcmVzc2lvbi4KLQotICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcKLSAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDcgSnVsaWFuIFNld2FyZCA8anNld2FyZEBiemlwLm9yZz4KLQotICBQbGVhc2UgcmVhZCB0aGUgV0FSTklORywgRElTQ0xBSU1FUiBhbmQgUEFURU5UUyBzZWN0aW9ucyBpbiB0aGUgCi0gIFJFQURNRSBmaWxlLgotCi0gIFRoaXMgcHJvZ3JhbSBpcyByZWxlYXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIGxpY2Vuc2UgY29udGFpbmVkCi0gIGluIHRoZSBmaWxlIExJQ0VOU0UuCi0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVGhlIHNjcmlwdCB4bWxwcm9jLnNoIHRha2VzIGFuIHhtbCBmaWxlIGFzIGlucHV0LAotYW5kIHByb2Nlc3NlcyBpdCB0byBjcmVhdGUgLnBkZiwgLmh0bWwgb3IgLnBzIG91dHB1dC4KLUl0IHVzZXMgZm9ybWF0LnBsLCBhIHBlcmwgc2NyaXB0IHRvIGZvcm1hdCA8cHJlPiBibG9ja3MgbmljZWx5LAotIGFuZCBhZGQgQ0RBVEEgdGFncyBzbyB3cml0ZXJzIGRvIG5vdCBoYXZlIHRvIHVzZSBlZy4gJmx0OyAKLQotVGhlIGZpbGUgImVudGl0aWVzLnhtbCIgbXVzdCBiZSBlZGl0ZWQgdG8gcmVmbGVjdCBjdXJyZW50Ci12ZXJzaW9uLCB5ZWFyLCBldGMuCi0KLQotVXNhZ2U6Ci0KLSAgLi94bWxwcm9jLnNoIC12IG1hbnVhbC54bWwKLSAgVmFsaWRhdGVzIGFuIHhtbCBmaWxlIHRvIGVuc3VyZSBubyBkdGQtY29tcGxpYW5jZSBlcnJvcnMKLQotICAuL3htbHByb2Muc2ggLWh0bWwgbWFudWFsLnhtbAotICBPdXRwdXQ6IG1hbnVhbC5odG1sCi0KLSAgLi94bWxwcm9jLnNoIC1wZGYgbWFudWFsLnhtbAotICBPdXRwdXQ6IG1hbnVhbC5wZGYKLQotICAuL3htbHByb2Muc2ggLXBzIG1hbnVhbC54bWwKLSAgT3V0cHV0OiBtYW51YWwucHMKLQotCi1Ob3R1bSBiZW5lOiAKLS0gcGRmeG1sdGV4IGJhcmZzIGlmIGdpdmVuIGEgZmlsZW5hbWUgd2l0aCBhbiB1bmRlcnNjb3JlIGluIGl0Ci0KLS0geG1sdGV4IHdvbid0IHdvcmsgeWV0IC0gdGhlcmUncyBhIGJ1ZyBpbiBwYXNzaXZldGV4Ci0gICAgd2hpY2ggd2UgYXJlIGFsbCB3YWl0aW5nIGZvciBTZWJhc3RpYW4gdG8gZml4LgotICBTbyB3ZSBhcmUgZ29pbmcgdGhlIHhtbCAtPiBwZGYgLT4gcHMgcm91dGUgZm9yIHRoZSB0aW1lIGJlaW5nLAotICAgIHVzaW5nIHBkZnhtbHRleC4KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL2Jsb2Nrc29ydC5jIGIvVXRpbGl0aWVzL2NtYnppcDIvYmxvY2tzb3J0LmMKaW5kZXggOTVhZGI1ZS4uOTJkODFmZSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvYmxvY2tzb3J0LmMKKysrIGIvVXRpbGl0aWVzL2NtYnppcDIvYmxvY2tzb3J0LmMKQEAgLTgsOCArOCw4IEBACiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBiemlwMi9saWJiemlwMiwgYSBwcm9ncmFtIGFuZCBsaWJyYXJ5IGZvcgogICAgbG9zc2xlc3MsIGJsb2NrLXNvcnRpbmcgZGF0YSBjb21wcmVzc2lvbi4KIAotICAgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuNSBvZiAxMCBEZWNlbWJlciAyMDA3Ci0gICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNyBKdWxpYW4gU2V3YXJkIDxqc2V3YXJkQGJ6aXAub3JnPgorICAgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuOCBvZiAxMyBKdWx5IDIwMTkKKyAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDE5IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYWNtLm9yZz4KIAogICAgUGxlYXNlIHJlYWQgdGhlIFdBUk5JTkcsIERJU0NMQUlNRVIgYW5kIFBBVEVOVFMgc2VjdGlvbnMgaW4gdGhlIAogICAgUkVBRE1FIGZpbGUuCkBAIC0yMDIsOSArMjAyLDkgQEAKICAgICAgIGJodGFiIFsgMCAuLiAyKyhuYmxvY2svMzIpIF0gZGVzdHJveWVkCiAqLwogCi0jZGVmaW5lICAgICAgIFNFVF9CSCh6eikgIGJodGFiWyh6eikgPj4gNV0gfD0gKDEgPDwgKCh6eikgJiAzMSkpCi0jZGVmaW5lICAgICBDTEVBUl9CSCh6eikgIGJodGFiWyh6eikgPj4gNV0gJj0gfigxIDw8ICgoenopICYgMzEpKQotI2RlZmluZSAgICAgSVNTRVRfQkgoenopICAoYmh0YWJbKHp6KSA+PiA1XSAmICgxIDw8ICgoenopICYgMzEpKSkKKyNkZWZpbmUgICAgICAgU0VUX0JIKHp6KSAgYmh0YWJbKHp6KSA+PiA1XSB8PSAoKFVJbnQzMikxIDw8ICgoenopICYgMzEpKQorI2RlZmluZSAgICAgQ0xFQVJfQkgoenopICBiaHRhYlsoenopID4+IDVdICY9IH4oKFVJbnQzMikxIDw8ICgoenopICYgMzEpKQorI2RlZmluZSAgICAgSVNTRVRfQkgoenopICAoYmh0YWJbKHp6KSA+PiA1XSAmICgoVUludDMyKTEgPDwgKCh6eikgJiAzMSkpKQogI2RlZmluZSAgICAgIFdPUkRfQkgoenopICBiaHRhYlsoenopID4+IDVdCiAjZGVmaW5lIFVOQUxJR05FRF9CSCh6eikgICgoenopICYgMHgwMWYpCiAKQEAgLTI3NCw3ICsyNzQsNyBAQAogICAgICAgciA9IC0xOwogICAgICAgd2hpbGUgKDEpIHsKIAotICAgICAvKi0tIGZpbmQgdGhlIG5leHQgbm9uLXNpbmdsZXRvbiBidWNrZXQgLS0qLworCSAvKi0tIGZpbmQgdGhlIG5leHQgbm9uLXNpbmdsZXRvbiBidWNrZXQgLS0qLwogICAgICAgICAgayA9IHIgKyAxOwogICAgICAgICAgd2hpbGUgKElTU0VUX0JIKGspICYmIFVOQUxJR05FRF9CSChrKSkgaysrOwogICAgICAgICAgaWYgKElTU0VUX0JIKGspKSB7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9iei1jb21tb24ueHNsIGIvVXRpbGl0aWVzL2NtYnppcDIvYnotY29tbW9uLnhzbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZmY2Q2Zi4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9iei1jb21tb24ueHNsCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+IDwhLS0gLSotIHNnbWwgLSotIC0tPgotPHhzbDpzdHlsZXNoZWV0IAotICAgICB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgdmVyc2lvbj0iMS4wIj4KLQotPCEtLSB3ZSBsaWtlICcxLjIgVGl0bGUnIC0tPgotPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmF1dG9sYWJlbCIgc2VsZWN0PSInMSciLz4gCi08eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24ubGFiZWwuaW5jbHVkZXMuY29tcG9uZW50LmxhYmVsIiBzZWxlY3Q9IicxJyIvPgotCi08IS0tIERvIG5vdCBwdXQgJ0NoYXB0ZXInIGF0IHRoZSBzdGFydCBvZiBlZyAnQ2hhcHRlciAxLiBEb2luZyBUaGlzJyAtLT4KLTx4c2w6cGFyYW0gbmFtZT0ibG9jYWwubDEwbi54bWwiIHNlbGVjdD0iZG9jdW1lbnQoJycpIi8+IAotPGw6aTE4biB4bWxuczpsPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQveG1sbnMvbDEwbi8xLjAiPiAKLSAgPGw6bDEwbiBsYW5ndWFnZT0iZW4iPiAKLSAgICA8bDpjb250ZXh0IG5hbWU9InRpdGxlLW51bWJlcmVkIj4KLSAgICAgIDxsOnRlbXBsYXRlIG5hbWU9ImNoYXB0ZXIiIHRleHQ9IiVuLiYjMTYwOyV0Ii8+Ci0gICAgPC9sOmNvbnRleHQ+IAotICA8L2w6bDEwbj4KLTwvbDppMThuPgotCi08IS0tIGRvbid0IGdlbmVyYXRlIHN1Yi10b2NzIGZvciBxYW5kYSBzZXRzIC0tPgotPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS50b2MiPgotc2V0ICAgICAgIHRvYyx0aXRsZQotYm9vayAgICAgIHRvYyx0aXRsZSxmaWd1cmUsdGFibGUsZXhhbXBsZSxlcXVhdGlvbgotY2hhcHRlciAgIHRvYyx0aXRsZQotc2VjdGlvbiAgIHRvYwotc2VjdDEgICAgIHRvYwotc2VjdDIgICAgIHRvYwotc2VjdDMgICAgIHRvYwotc2VjdDQgICAgIG5vcAotc2VjdDUgICAgIG5vcAotcWFuZGFzZXQgIHRvYwotcWFuZGFkaXYgIG5vcAotYXBwZW5kaXggIHRvYyx0aXRsZQotYXJ0aWNsZS9hcHBlbmRpeCAgbm9wCi1hcnRpY2xlICAgdG9jLHRpdGxlCi1wcmVmYWNlICAgdG9jLHRpdGxlCi1yZWZlcmVuY2UgdG9jLHRpdGxlCi08L3hzbDpwYXJhbT4KLQotPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6LWZvLnhzbCBiL1V0aWxpdGllcy9jbWJ6aXAyL2J6LWZvLnhzbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEzZTMwMS4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9iei1mby54c2wKKysrIC9kZXYvbnVsbApAQCAtMSwyNzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4gPCEtLSAtKi0gc2dtbCAtKi0gLS0+Ci08eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIAotICAgICB4bWxuczpmbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0IiB2ZXJzaW9uPSIxLjAiPgotCi08eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvY3VycmVudC9mby9kb2Nib29rLnhzbCIvPgotPHhzbDppbXBvcnQgaHJlZj0iYnotY29tbW9uLnhzbCIvPgotCi08IS0tIHNldCBpbmRlbnQgPSB5ZXMgd2hpbGUgZGVidWdnaW5nLCB0aGVuIGNoYW5nZSB0byBOTyAtLT4KLTx4c2w6b3V0cHV0IG1ldGhvZD0ieG1sIiBpbmRlbnQ9InllcyIvPgotCi08IS0tIGVuc3VyZSBvbmx5IHBhc3NpdmV0ZXggZXh0ZW5zaW9ucyBhcmUgb24gLS0+Ci08eHNsOnBhcmFtIG5hbWU9InN0eWxlc2hlZXQucmVzdWx0LnR5cGUiIHNlbGVjdD0iJ2ZvJyIvPgotPCEtLSBmbyBleHRlbnNpb25zOiBQREYgYm9va21hcmtzIGFuZCBpbmRleCB0ZXJtcyAtLT4KLTx4c2w6cGFyYW0gbmFtZT0idXNlLmV4dGVuc2lvbnMiIHNlbGVjdD0iJzEnIi8+Ci08eHNsOnBhcmFtIG5hbWU9InhlcC5leHRlbnNpb25zIiBzZWxlY3Q9IjAiLz4gICAgICAKLTx4c2w6cGFyYW0gbmFtZT0iZm9wLmV4dGVuc2lvbnMiIHNlbGVjdD0iMCIvPiAgICAgCi08eHNsOnBhcmFtIG5hbWU9InNheG9uLmV4dGVuc2lvbnMiIHNlbGVjdD0iMCIvPiAgIAotPHhzbDpwYXJhbSBuYW1lPSJwYXNzaXZldGV4LmV4dGVuc2lvbnMiIHNlbGVjdD0iMSIvPgotPHhzbDpwYXJhbSBuYW1lPSJ0YWJsZWNvbHVtbnMuZXh0ZW5zaW9uIiBzZWxlY3Q9IicxJyIvPgotCi08IS0tIGVuc3VyZSB3ZSBhcmUgdXNpbmcgc2luZ2xlIHNpZGVkIC0tPgotPHhzbDpwYXJhbSBuYW1lPSJkb3VibGUuc2lkZWQiIHNlbGVjdD0iJzAnIi8+IAotCi08IS0tIGluc2VydCBjcm9zcyByZWZlcmVuY2VzIHRvIHBhZ2UgbnVtYmVycyAtLT4KLTx4c2w6cGFyYW0gbmFtZT0iaW5zZXJ0LnhyZWYucGFnZS5udW1iZXIiIHNlbGVjdD0iMSIvPgotCi08IS0tIDw/Y3VzdG9tLXBhZ2VicmVhaz8+IGluc2VydHMgYSBwYWdlIGJyZWFrIGF0IHRoaXMgcG9pbnQgLS0+Ci08eHNsOnRlbXBsYXRlIG1hdGNoPSJwcm9jZXNzaW5nLWluc3RydWN0aW9uKCdjdXN0b20tcGFnZWJyZWFrJykiPgotICA8Zm86YmxvY2sgYnJlYWstYmVmb3JlPSdwYWdlJy8+Ci08L3hzbDp0ZW1wbGF0ZT4KLQotPCEtLSBzaG93IGxpbmtzIGluIGNvbG9yIC0tPgotPHhzbDphdHRyaWJ1dGUtc2V0IG5hbWU9InhyZWYucHJvcGVydGllcyI+Ci0gIDx4c2w6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj5ibHVlPC94c2w6YXR0cmlidXRlPgotPC94c2w6YXR0cmlidXRlLXNldD4KLQotPCEtLSBtYWtlIHByZSBsaXN0aW5ncyBpbmRlbnRlZCBhIGJpdCArIGEgYmcgY29sb3VyIC0tPgotPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icHJvZ3JhbWxpc3RpbmcgfCBzY3JlZW4iPgotICA8Zm86YmxvY2sgc3RhcnQtaW5kZW50PSIwLjI1aW4iIHdyYXAtb3B0aW9uPSJuby13cmFwIiAKLSAgICAgICAgICAgIHdoaXRlLXNwYWNlLWNvbGxhcHNlPSJmYWxzZSIgdGV4dC1hbGlnbj0ic3RhcnQiIAotICAgICAgICAgICAgZm9udC1mYW1pbHk9Im1vbm9zcGFjZSIgYmFja2dyb3VuZC1jb2xvcj0iI2YyZjJmOSIKLSAgICAgICAgICAgIGxpbmVmZWVkLXRyZWF0bWVudD0icHJlc2VydmUiIAotICAgICAgICAgICAgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ibm9ybWFsLnBhcmEuc3BhY2luZyI+Ci0gICAgPHhzbDphcHBseS10ZW1wbGF0ZXMvPgotICA8L2ZvOmJsb2NrPgotPC94c2w6dGVtcGxhdGU+Ci08IS0tIG1ha2UgdmVyYmF0aW0gb3V0cHV0IHByZXR0aWVyIC0tPgotPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ibGl0ZXJhbGxheW91dCI+Ci0gIDxmbzpibG9jayBzdGFydC1pbmRlbnQ9IjAuMjVpbiIgd3JhcC1vcHRpb249Im5vLXdyYXAiIAotICAgICAgICAgICAgd2hpdGUtc3BhY2UtY29sbGFwc2U9ImZhbHNlIiB0ZXh0LWFsaWduPSJzdGFydCIgCi0gICAgICAgICAgICBmb250LWZhbWlseT0ibW9ub3NwYWNlIiBiYWNrZ3JvdW5kLWNvbG9yPSIjZWRmN2Y0IgotICAgICAgICAgICAgbGluZWZlZWQtdHJlYXRtZW50PSJwcmVzZXJ2ZSIgCi0gICAgICAgICAgICBzcGFjZS1iZWZvcmU9IjBlbSIgc3BhY2UtYWZ0ZXI9IjBlbSI+Ci0gICAgPHhzbDphcHBseS10ZW1wbGF0ZXMvPgotICA8L2ZvOmJsb2NrPgotPC94c2w6dGVtcGxhdGU+Ci0KLTwhLS0gd29ya2Fyb3VuZCBidWcgaW4gcGFzc2l2ZXRleCBmbyBvdXRwdXQgZm9yIGl0ZW1pemVkbGlzdCAtLT4KLTx4c2w6dGVtcGxhdGUgbWF0Y2g9Iml0ZW1pemVkbGlzdC9saXN0aXRlbSI+Ci0gIDx4c2w6dmFyaWFibGUgbmFtZT0iaWQiPgotICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0ib2JqZWN0LmlkIi8+PC94c2w6dmFyaWFibGU+Ci0gIDx4c2w6dmFyaWFibGUgbmFtZT0iaXRlbXN5bWJvbCI+Ci0gICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9Imxpc3QuaXRlbXN5bWJvbCI+Ci0gICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0ibm9kZSIgc2VsZWN0PSJwYXJlbnQ6Oml0ZW1pemVkbGlzdCIvPgotICAgIDwveHNsOmNhbGwtdGVtcGxhdGU+Ci0gIDwveHNsOnZhcmlhYmxlPgotICA8eHNsOnZhcmlhYmxlIG5hbWU9Iml0ZW0uY29udGVudHMiPgotICAgIDxmbzpsaXN0LWl0ZW0tbGFiZWwgZW5kLWluZGVudD0ibGFiZWwtZW5kKCkiPgotICAgICAgPGZvOmJsb2NrPgotICAgICAgICA8eHNsOmNob29zZT4KLSAgICAgICAgICA8eHNsOndoZW4gdGVzdD0iJGl0ZW1zeW1ib2w9J2Rpc2MnIj4mI3gyMDIyOzwveHNsOndoZW4+Ci0gICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9IiRpdGVtc3ltYm9sPSdidWxsZXQnIj4mI3gyMDIyOzwveHNsOndoZW4+Ci0gICAgICAgICAgPHhzbDpvdGhlcndpc2U+JiN4MjAyMjs8L3hzbDpvdGhlcndpc2U+Ci0gICAgICAgIDwveHNsOmNob29zZT4KLSAgICAgIDwvZm86YmxvY2s+Ci0gICAgPC9mbzpsaXN0LWl0ZW0tbGFiZWw+Ci0gICAgPGZvOmxpc3QtaXRlbS1ib2R5IHN0YXJ0LWluZGVudD0iYm9keS1zdGFydCgpIj4KLSAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzLz4gICAgPCEtLSByZW1vdmVkIGV4dHJhIGJsb2NrIHdyYXBwZXIgLS0+Ci0gICAgPC9mbzpsaXN0LWl0ZW0tYm9keT4KLSAgPC94c2w6dmFyaWFibGU+Ci0gIDx4c2w6Y2hvb3NlPgotICAgIDx4c2w6d2hlbiB0ZXN0PSJwYXJlbnQ6OiovQHNwYWNpbmcgPSAnY29tcGFjdCciPgotICAgICAgPGZvOmxpc3QtaXRlbSBpZD0ieyRpZH0iIAotICAgICAgICAgIHhzbDp1c2UtYXR0cmlidXRlLXNldHM9ImNvbXBhY3QubGlzdC5pdGVtLnNwYWNpbmciPgotICAgICAgICA8eHNsOmNvcHktb2Ygc2VsZWN0PSIkaXRlbS5jb250ZW50cyIvPgotICAgICAgPC9mbzpsaXN0LWl0ZW0+Ci0gICAgPC94c2w6d2hlbj4KLSAgICA8eHNsOm90aGVyd2lzZT4KLSAgICAgIDxmbzpsaXN0LWl0ZW0gaWQ9InskaWR9IiB4c2w6dXNlLWF0dHJpYnV0ZS1zZXRzPSJsaXN0Lml0ZW0uc3BhY2luZyI+Ci0gICAgICAgIDx4c2w6Y29weS1vZiBzZWxlY3Q9IiRpdGVtLmNvbnRlbnRzIi8+Ci0gICAgICA8L2ZvOmxpc3QtaXRlbT4KLSAgICA8L3hzbDpvdGhlcndpc2U+Ci0gIDwveHNsOmNob29zZT4KLTwveHNsOnRlbXBsYXRlPgotCi08IS0tIHdvcmthcm91bmQgYnVnIGluIHBhc3NpdmV0ZXggZm8gb3V0cHV0IGZvciBvcmRlcmVkbGlzdCAtLT4KLTx4c2w6dGVtcGxhdGUgbWF0Y2g9Im9yZGVyZWRsaXN0L2xpc3RpdGVtIj4KLSAgPHhzbDp2YXJpYWJsZSBuYW1lPSJpZCI+Ci0gIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJvYmplY3QuaWQiLz48L3hzbDp2YXJpYWJsZT4KLSAgPHhzbDp2YXJpYWJsZSBuYW1lPSJpdGVtLmNvbnRlbnRzIj4KLSAgICA8Zm86bGlzdC1pdGVtLWxhYmVsIGVuZC1pbmRlbnQ9ImxhYmVsLWVuZCgpIj4KLSAgICAgIDxmbzpibG9jaz4KLSAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSIuIiBtb2RlPSJpdGVtLW51bWJlciIvPgotICAgICAgPC9mbzpibG9jaz4KLSAgICA8L2ZvOmxpc3QtaXRlbS1sYWJlbD4KLSAgICA8Zm86bGlzdC1pdGVtLWJvZHkgc3RhcnQtaW5kZW50PSJib2R5LXN0YXJ0KCkiPgotICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMvPiAgICA8IS0tIHJlbW92ZWQgZXh0cmEgYmxvY2sgd3JhcHBlciAtLT4KLSAgICA8L2ZvOmxpc3QtaXRlbS1ib2R5PgotICA8L3hzbDp2YXJpYWJsZT4KLSAgPHhzbDpjaG9vc2U+Ci0gICAgPHhzbDp3aGVuIHRlc3Q9InBhcmVudDo6Ki9Ac3BhY2luZyA9ICdjb21wYWN0JyI+Ci0gICAgICA8Zm86bGlzdC1pdGVtIGlkPSJ7JGlkfSIgCi0gICAgICAgICAgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0iY29tcGFjdC5saXN0Lml0ZW0uc3BhY2luZyI+Ci0gICAgICAgIDx4c2w6Y29weS1vZiBzZWxlY3Q9IiRpdGVtLmNvbnRlbnRzIi8+Ci0gICAgICA8L2ZvOmxpc3QtaXRlbT4KLSAgICA8L3hzbDp3aGVuPgotICAgIDx4c2w6b3RoZXJ3aXNlPgotICAgICAgPGZvOmxpc3QtaXRlbSBpZD0ieyRpZH0iIHhzbDp1c2UtYXR0cmlidXRlLXNldHM9Imxpc3QuaXRlbS5zcGFjaW5nIj4KLSAgICAgICAgPHhzbDpjb3B5LW9mIHNlbGVjdD0iJGl0ZW0uY29udGVudHMiLz4KLSAgICAgIDwvZm86bGlzdC1pdGVtPgotICAgIDwveHNsOm90aGVyd2lzZT4KLSAgPC94c2w6Y2hvb3NlPgotPC94c2w6dGVtcGxhdGU+Ci0KLTwhLS0gd29ya2Fyb3VuZCBidWcgaW4gcGFzc2l2ZXRleCBmbyBvdXRwdXQgZm9yIHZhcmlhYmxlbGlzdCAtLT4KLTx4c2w6cGFyYW0gbmFtZT0idmFyaWFibGVsaXN0LmFzLmJsb2NrcyIgc2VsZWN0PSIxIi8+Ci08eHNsOnRlbXBsYXRlIG1hdGNoPSJ2YXJsaXN0ZW50cnkiIG1vZGU9InZsLmFzLmJsb2NrcyI+Ci0gIDx4c2w6dmFyaWFibGUgbmFtZT0iaWQiPgotICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJvYmplY3QuaWQiLz48L3hzbDp2YXJpYWJsZT4KLSAgPGZvOmJsb2NrIGlkPSJ7JGlkfSIgeHNsOnVzZS1hdHRyaWJ1dGUtc2V0cz0ibGlzdC5pdGVtLnNwYWNpbmciICAKLSAgICAgIGtlZXAtdG9nZXRoZXIud2l0aGluLWNvbHVtbj0iYWx3YXlzIiAKLSAgICAgIGtlZXAtd2l0aC1uZXh0LndpdGhpbi1jb2x1bW49ImFsd2F5cyI+Ci0gICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJ0ZXJtIi8+Ci0gIDwvZm86YmxvY2s+Ci0gIDxmbzpibG9jayBzdGFydC1pbmRlbnQ9IjAuNWluIiBlbmQtaW5kZW50PSIwaW4iIAotICAgICAgICAgICAgc3BhY2UtYWZ0ZXIubWluaW11bT0iMC4yZW0iIAotICAgICAgICAgICAgc3BhY2UtYWZ0ZXIub3B0aW11bT0iMC40ZW0iIAotICAgICAgICAgICAgc3BhY2UtYWZ0ZXIubWF4aW11bT0iMC42ZW0iPgotICAgIDxmbzpibG9jaz4KLSAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ibGlzdGl0ZW0iLz4KLSAgICA8L2ZvOmJsb2NrPgotICA8L2ZvOmJsb2NrPgotPC94c2w6dGVtcGxhdGU+Ci0KLQotPCEtLSB3b3JrYXJvdW5kIGJ1ZyBpbiBmb290ZXJzOiBmb3JjZSByaWdodC1hbGlnbiB3L3R3byA4MHwzMCBjb2xzIC0tPgotPHhzbDp0ZW1wbGF0ZSBuYW1lPSJmb290ZXIudGFibGUiPgotICA8eHNsOnBhcmFtIG5hbWU9InBhZ2VjbGFzcyIgc2VsZWN0PSInJyIvPgotICA8eHNsOnBhcmFtIG5hbWU9InNlcXVlbmNlIiBzZWxlY3Q9IicnIi8+Ci0gIDx4c2w6cGFyYW0gbmFtZT0iZ2VudGV4dC1rZXkiIHNlbGVjdD0iJyciLz4KLSAgPHhzbDpjaG9vc2U+Ci0gICAgPHhzbDp3aGVuIHRlc3Q9IiRwYWdlY2xhc3MgPSAnaW5kZXgnIj4KLSAgICAgIDx4c2w6YXR0cmlidXRlIG5hbWU9Im1hcmdpbi1sZWZ0Ij4wcHQ8L3hzbDphdHRyaWJ1dGU+Ci0gICAgPC94c2w6d2hlbj4KLSAgPC94c2w6Y2hvb3NlPgotICA8eHNsOnZhcmlhYmxlIG5hbWU9ImNhbmRpZGF0ZSI+Ci0gICAgPGZvOnRhYmxlIHRhYmxlLWxheW91dD0iZml4ZWQiIHdpZHRoPSIxMDAlIj4KLSAgICAgIDxmbzp0YWJsZS1jb2x1bW4gY29sdW1uLW51bWJlcj0iMSIgY29sdW1uLXdpZHRoPSI4MCUiLz4KLSAgICAgIDxmbzp0YWJsZS1jb2x1bW4gY29sdW1uLW51bWJlcj0iMiIgY29sdW1uLXdpZHRoPSIyMCUiLz4KLSAgICAgIDxmbzp0YWJsZS1ib2R5PgotICAgICAgICA8Zm86dGFibGUtcm93IGhlaWdodD0iMTRwdCI+Ci0gICAgICAgICAgPGZvOnRhYmxlLWNlbGwgdGV4dC1hbGlnbj0ibGVmdCIgZGlzcGxheS1hbGlnbj0iYWZ0ZXIiPgotICAgICAgICAgICAgPHhzbDphdHRyaWJ1dGUgbmFtZT0icmVsYXRpdmUtYWxpZ24iPmJhc2VsaW5lPC94c2w6YXR0cmlidXRlPgotICAgICAgICAgICAgPGZvOmJsb2NrPiAKLSAgICAgICAgICAgICAgPGZvOmJsb2NrPiA8L2ZvOmJsb2NrPjwhLS0gZW1wdHkgY2VsbCAtLT4KLSAgICAgICAgICAgIDwvZm86YmxvY2s+Ci0gICAgICAgICAgPC9mbzp0YWJsZS1jZWxsPgotICAgICAgICAgIDxmbzp0YWJsZS1jZWxsIHRleHQtYWxpZ249ImNlbnRlciIgZGlzcGxheS1hbGlnbj0iYWZ0ZXIiPgotICAgICAgICAgICAgPHhzbDphdHRyaWJ1dGUgbmFtZT0icmVsYXRpdmUtYWxpZ24iPmJhc2VsaW5lPC94c2w6YXR0cmlidXRlPgotICAgICAgICAgICAgPGZvOmJsb2NrPgotICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iZm9vdGVyLmNvbnRlbnQiPgotICAgICAgICAgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJwYWdlY2xhc3MiIHNlbGVjdD0iJHBhZ2VjbGFzcyIvPgotICAgICAgICAgICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJzZXF1ZW5jZSIgc2VsZWN0PSIkc2VxdWVuY2UiLz4KLSAgICAgICAgICAgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0icG9zaXRpb24iIHNlbGVjdD0iJ2NlbnRlciciLz4KLSAgICAgICAgICAgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0iZ2VudGV4dC1rZXkiIHNlbGVjdD0iJGdlbnRleHQta2V5Ii8+Ci0gICAgICAgICAgICAgIDwveHNsOmNhbGwtdGVtcGxhdGU+Ci0gICAgICAgICAgICA8L2ZvOmJsb2NrPgotICAgICAgICAgIDwvZm86dGFibGUtY2VsbD4KLSAgICAgICAgPC9mbzp0YWJsZS1yb3c+Ci0gICAgICA8L2ZvOnRhYmxlLWJvZHk+Ci0gICAgPC9mbzp0YWJsZT4KLSAgPC94c2w6dmFyaWFibGU+Ci0gIDwhLS0gUmVhbGx5IG91dHB1dCBhIGZvb3Rlcj8gLS0+Ci0gIDx4c2w6Y2hvb3NlPgotICAgIDx4c2w6d2hlbiB0ZXN0PSIkcGFnZWNsYXNzPSd0aXRsZXBhZ2UnIGFuZCAkZ2VudGV4dC1rZXk9J2Jvb2snCi0gICAgICAgICAgICAgICAgICAgIGFuZCAkc2VxdWVuY2U9J2ZpcnN0JyI+Ci0gICAgICA8IS0tIG5vLCBib29rIHRpdGxlcGFnZXMgaGF2ZSBubyBmb290ZXJzIGF0IGFsbCAtLT4KLSAgICA8L3hzbDp3aGVuPgotICAgIDx4c2w6d2hlbiB0ZXN0PSIkc2VxdWVuY2UgPSAnYmxhbmsnIGFuZCAkZm9vdGVycy5vbi5ibGFuay5wYWdlcyA9IDAiPgotICAgICAgPCEtLSBubyBvdXRwdXQgLS0+Ci0gICAgPC94c2w6d2hlbj4KLSAgICA8eHNsOm90aGVyd2lzZT4KLSAgICAgIDx4c2w6Y29weS1vZiBzZWxlY3Q9IiRjYW5kaWRhdGUiLz4KLSAgICA8L3hzbDpvdGhlcndpc2U+Ci0gIDwveHNsOmNob29zZT4KLTwveHNsOnRlbXBsYXRlPgotCi0KLTwhLS0gZml4IGJ1ZyBpbiBoZWFkZXJzOiBmb3JjZSByaWdodC1hbGlnbiB3L3R3byA0MHw2MCBjb2xzIC0tPgotPHhzbDp0ZW1wbGF0ZSBuYW1lPSJoZWFkZXIudGFibGUiPgotICA8eHNsOnBhcmFtIG5hbWU9InBhZ2VjbGFzcyIgc2VsZWN0PSInJyIvPgotICA8eHNsOnBhcmFtIG5hbWU9InNlcXVlbmNlIiBzZWxlY3Q9IicnIi8+Ci0gIDx4c2w6cGFyYW0gbmFtZT0iZ2VudGV4dC1rZXkiIHNlbGVjdD0iJyciLz4KLSAgPHhzbDpjaG9vc2U+Ci0gICAgPHhzbDp3aGVuIHRlc3Q9IiRwYWdlY2xhc3MgPSAnaW5kZXgnIj4KLSAgICAgIDx4c2w6YXR0cmlidXRlIG5hbWU9Im1hcmdpbi1sZWZ0Ij4wcHQ8L3hzbDphdHRyaWJ1dGU+Ci0gICAgPC94c2w6d2hlbj4KLSAgPC94c2w6Y2hvb3NlPgotICA8eHNsOnZhcmlhYmxlIG5hbWU9ImNhbmRpZGF0ZSI+Ci0gICAgPGZvOnRhYmxlIHRhYmxlLWxheW91dD0iZml4ZWQiIHdpZHRoPSIxMDAlIj4KLSAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJoZWFkLnNlcC5ydWxlIj4KLSAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9InBhZ2VjbGFzcyIgc2VsZWN0PSIkcGFnZWNsYXNzIi8+Ci0gICAgICAgIDx4c2w6d2l0aC1wYXJhbSBuYW1lPSJzZXF1ZW5jZSIgc2VsZWN0PSIkc2VxdWVuY2UiLz4KLSAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9ImdlbnRleHQta2V5IiBzZWxlY3Q9IiRnZW50ZXh0LWtleSIvPgotICAgICAgPC94c2w6Y2FsbC10ZW1wbGF0ZT4KLSAgICAgIDxmbzp0YWJsZS1jb2x1bW4gY29sdW1uLW51bWJlcj0iMSIgY29sdW1uLXdpZHRoPSI0MCUiLz4KLSAgICAgIDxmbzp0YWJsZS1jb2x1bW4gY29sdW1uLW51bWJlcj0iMiIgY29sdW1uLXdpZHRoPSI2MCUiLz4KLSAgICAgIDxmbzp0YWJsZS1ib2R5PgotICAgICAgICA8Zm86dGFibGUtcm93IGhlaWdodD0iMTRwdCI+Ci0gICAgICAgICAgPGZvOnRhYmxlLWNlbGwgdGV4dC1hbGlnbj0ibGVmdCIgZGlzcGxheS1hbGlnbj0iYmVmb3JlIj4KLSAgICAgICAgICAgIDx4c2w6YXR0cmlidXRlIG5hbWU9InJlbGF0aXZlLWFsaWduIj5iYXNlbGluZTwveHNsOmF0dHJpYnV0ZT4KLSAgICAgICAgICAgIDxmbzpibG9jaz4KLSAgICAgICAgICAgICAgPGZvOmJsb2NrPiA8L2ZvOmJsb2NrPjwhLS0gZW1wdHkgY2VsbCAtLT4KLSAgICAgICAgICAgIDwvZm86YmxvY2s+Ci0gICAgICAgICAgPC9mbzp0YWJsZS1jZWxsPgotICAgICAgICAgIDxmbzp0YWJsZS1jZWxsIHRleHQtYWxpZ249ImNlbnRlciIgZGlzcGxheS1hbGlnbj0iYmVmb3JlIj4KLSAgICAgICAgICAgIDx4c2w6YXR0cmlidXRlIG5hbWU9InJlbGF0aXZlLWFsaWduIj5iYXNlbGluZTwveHNsOmF0dHJpYnV0ZT4KLSAgICAgICAgICAgIDxmbzpibG9jaz4KLSAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImhlYWRlci5jb250ZW50Ij4KLSAgICAgICAgICAgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0icGFnZWNsYXNzIiBzZWxlY3Q9IiRwYWdlY2xhc3MiLz4KLSAgICAgICAgICAgICAgICA8eHNsOndpdGgtcGFyYW0gbmFtZT0ic2VxdWVuY2UiIHNlbGVjdD0iJHNlcXVlbmNlIi8+Ci0gICAgICAgICAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9InBvc2l0aW9uIiBzZWxlY3Q9IidjZW50ZXInIi8+Ci0gICAgICAgICAgICAgICAgPHhzbDp3aXRoLXBhcmFtIG5hbWU9ImdlbnRleHQta2V5IiBzZWxlY3Q9IiRnZW50ZXh0LWtleSIvPgotICAgICAgICAgICAgICA8L3hzbDpjYWxsLXRlbXBsYXRlPgotICAgICAgICAgICAgPC9mbzpibG9jaz4KLSAgICAgICAgICA8L2ZvOnRhYmxlLWNlbGw+Ci0gICAgICAgIDwvZm86dGFibGUtcm93PgotICAgICAgPC9mbzp0YWJsZS1ib2R5PgotICAgIDwvZm86dGFibGU+Ci0gIDwveHNsOnZhcmlhYmxlPgotICA8IS0tIFJlYWxseSBvdXRwdXQgYSBoZWFkZXI/IC0tPgotICA8eHNsOmNob29zZT4KLSAgICA8eHNsOndoZW4gdGVzdD0iJHBhZ2VjbGFzcyA9ICd0aXRsZXBhZ2UnIGFuZCAkZ2VudGV4dC1rZXkgPSAnYm9vaycKLSAgICAgICAgICAgICAgICAgICAgYW5kICRzZXF1ZW5jZT0nZmlyc3QnIj4KLSAgICAgIDwhLS0gbm8sIGJvb2sgdGl0bGVwYWdlcyBoYXZlIG5vIGhlYWRlcnMgYXQgYWxsIC0tPgotICAgIDwveHNsOndoZW4+Ci0gICAgPHhzbDp3aGVuIHRlc3Q9IiRzZXF1ZW5jZSA9ICdibGFuaycgYW5kICRoZWFkZXJzLm9uLmJsYW5rLnBhZ2VzID0gMCI+Ci0gICAgICA8IS0tIG5vIG91dHB1dCAtLT4KLSAgICA8L3hzbDp3aGVuPgotICAgIDx4c2w6b3RoZXJ3aXNlPgotICAgICAgPHhzbDpjb3B5LW9mIHNlbGVjdD0iJGNhbmRpZGF0ZSIvPgotICAgIDwveHNsOm90aGVyd2lzZT4KLSAgPC94c2w6Y2hvb3NlPgotPC94c2w6dGVtcGxhdGU+Ci0KLQotPCEtLSBCdWctZml4IGZvciBTdXNlIDEwIFBhc3NpdmVUZXggdmVyc2lvbiAtLT4KLTwhLS0gUHJlY29tcHV0ZSBhdHRyaWJ1dGUgdmFsdWVzICdjb3MgUGFzc2l2ZVRleCBpcyB0b28gc3R1cGlkOiAtLT4KLTx4c2w6YXR0cmlidXRlLXNldCBuYW1lPSJjb21wb25lbnQudGl0bGUucHJvcGVydGllcyI+Ci0gIDx4c2w6YXR0cmlidXRlIG5hbWU9ImtlZXAtd2l0aC1uZXh0LndpdGhpbi1jb2x1bW4iPmFsd2F5czwveHNsOmF0dHJpYnV0ZT4KLSAgPHhzbDphdHRyaWJ1dGUgbmFtZT0ic3BhY2UtYmVmb3JlLm9wdGltdW0iPgotICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb25jYXQoJGJvZHkuZm9udC5tYXN0ZXIsICdwdCcpIi8+Ci0gIDwveHNsOmF0dHJpYnV0ZT4KLSAgPHhzbDphdHRyaWJ1dGUgbmFtZT0ic3BhY2UtYmVmb3JlLm1pbmltdW0iPgotICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkYm9keS5mb250Lm1hc3RlciAqIDAuOCIvPgotICAgIDx4c2w6dGV4dD5wdDwveHNsOnRleHQ+Ci0gIDwveHNsOmF0dHJpYnV0ZT4KLSAgPHhzbDphdHRyaWJ1dGUgbmFtZT0ic3BhY2UtYmVmb3JlLm1heGltdW0iPgotICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkYm9keS5mb250Lm1hc3RlciAqIDEuMiIvPgotICAgIDx4c2w6dGV4dD5wdDwveHNsOnRleHQ+Ci0gIDwveHNsOmF0dHJpYnV0ZT4KLSAgPHhzbDphdHRyaWJ1dGUgbmFtZT0iaHlwaGVuYXRlIj5mYWxzZTwveHNsOmF0dHJpYnV0ZT4KLTwveHNsOmF0dHJpYnV0ZS1zZXQ+Ci0KLQotPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6LWh0bWwueHNsIGIvVXRpbGl0aWVzL2NtYnppcDIvYnotaHRtbC54c2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ODVmZmYuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvYnotaHRtbC54c2wKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz4gPCEtLSAtKi0gc2dtbCAtKi0gLS0+Ci08IURPQ1RZUEUgeHNsOnN0eWxlc2hlZXQgWyA8IUVOVElUWSBiei1jc3MgU1lTVEVNICIuL2J6aXAuY3NzIj4gXT4KLQotPHhzbDpzdHlsZXNoZWV0IAotICAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHZlcnNpb249IjEuMCI+Ci0KLTx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC9jdXJyZW50L2h0bWwvZG9jYm9vay54c2wiLz4KLTx4c2w6aW1wb3J0IGhyZWY9ImJ6LWNvbW1vbi54c2wiLz4KLQotPCEtLSB1c2UgODg1OS0xIGVuY29kaW5nIC0tPgotPHhzbDpvdXRwdXQgbWV0aG9kPSJodG1sIiBlbmNvZGluZz0iSVNPLTg4NTktMSIgaW5kZW50PSJ5ZXMiLz4KLQotPCEtLSB3ZSBpbmNsdWRlIHRoZSBjc3MgZGlyZWN0bHkgd2hlbiBnZW5lcmF0aW5nIG9uZSBsYXJnZSBmaWxlIC0tPgotPHhzbDp0ZW1wbGF0ZSBuYW1lPSJ1c2VyLmhlYWQuY29udGVudCI+ICAKLSAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KLSAgICA8eHNsOnRleHQ+JmJ6LWNzczs8L3hzbDp0ZXh0PgotICA8L3N0eWxlPgotPC94c2w6dGVtcGxhdGU+Ci0KLTwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9iemRpZmYgYi9VdGlsaXRpZXMvY21iemlwMi9iemRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0Yzk5NjQuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvYnpkaWZmCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotIyEvYmluL3NoCi0jIHNoIGlzIGJ1Z2d5IG9uIFJTLzYwMDAgQUlYIDMuMi4gUmVwbGFjZSBhYm92ZSBsaW5lIHdpdGggIyEvYmluL2tzaAotCi0jIEJ6Y21wL2RpZmYgd3JhcHBlZCBmb3IgYnppcDIsIAotIyBhZGFwdGVkIGZyb20gemRpZmYgYnkgUGhpbGlwcGUgVHJvaW4gPHBoaWxAZmlmaS5vcmc+IGZvciBEZWJpYW4gR05VL0xpbnV4LgotCi0jIEJ6Y21wIGFuZCBiemRpZmYgYXJlIHVzZWQgdG8gaW52b2tlIHRoZSBjbXAgb3IgdGhlICBkaWZmICBwcm8tCi0jIGdyYW0gIG9uIGNvbXByZXNzZWQgZmlsZXMuICBBbGwgb3B0aW9ucyBzcGVjaWZpZWQgYXJlIHBhc3NlZAotIyBkaXJlY3RseSB0byBjbXAgb3IgZGlmZi4gIElmIG9ubHkgMSBmaWxlIGlzIHNwZWNpZmllZCwgIHRoZW4KLSMgdGhlICBmaWxlcyAgY29tcGFyZWQgIGFyZSBmaWxlMSBhbmQgYW4gdW5jb21wcmVzc2VkIGZpbGUxLmd6LgotIyBJZiB0d28gZmlsZXMgYXJlIHNwZWNpZmllZCwgdGhlbiB0aGV5IGFyZSAgdW5jb21wcmVzc2VkICAoaWYKLSMgbmVjZXNzYXJ5KSBhbmQgZmVkIHRvIGNtcCBvciBkaWZmLiAgVGhlIGV4aXQgc3RhdHVzIGZyb20gY21wCi0jIG9yIGRpZmYgaXMgcHJlc2VydmVkLgotCi1QQVRIPSIvdXNyL2JpbjovYmluOiRQQVRIIjsgZXhwb3J0IFBBVEgKLXByb2c9YGVjaG8gJDAgfCBzZWQgJ3N8LiovfHwnYAotY2FzZSAiJHByb2ciIGluCi0gICpjbXApIGNvbXA9JHtDTVAtY21wfSAgIDs7Ci0gICopICAgIGNvbXA9JHtESUZGLWRpZmZ9IDs7Ci1lc2FjCi0KLU9QVElPTlM9Ci1GSUxFUz0KLWZvciBBUkcKLWRvCi0gICAgY2FzZSAiJEFSRyIgaW4KLSAgICAtKikgT1BUSU9OUz0iJE9QVElPTlMgJEFSRyI7OwotICAgICAqKSBpZiB0ZXN0IC1mICIkQVJHIjsgdGhlbgotICAgICAgICAgICAgRklMRVM9IiRGSUxFUyAkQVJHIgotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlY2hvICIke3Byb2d9OiAkQVJHIG5vdCBmb3VuZCBvciBub3QgYSByZWd1bGFyIGZpbGUiCi0gICAgICAgIGV4aXQgMQotICAgICAgICBmaSA7OwotICAgIGVzYWMKLWRvbmUKLWlmIHRlc3QgLXogIiRGSUxFUyI7IHRoZW4KLSAgICBlY2hvICJVc2FnZTogJHByb2cgWyR7Y29tcH1fb3B0aW9uc10gZmlsZSBbZmlsZV0iCi0gICAgZXhpdCAxCi1maQotdG1wPWBta3RlbXAgJHtUTVBESVI6LS90bXB9L2J6ZGlmZi5YWFhYWFhYWFhYYCB8fCB7Ci0gICAgICBlY2hvICdjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUnID4mMgotICAgICAgZXhpdCAxCi19Ci1zZXQgJEZJTEVTCi1pZiB0ZXN0ICQjIC1lcSAxOyB0aGVuCi0gICAgRklMRT1gZWNobyAiJDEiIHwgc2VkICdzLy5iejIkLy8nYAotICAgIGJ6aXAyIC1jZCAiJEZJTEUuYnoyIiB8ICRjb21wICRPUFRJT05TIC0gIiRGSUxFIgotICAgIFNUQVQ9IiQ/IgotCi1lbGlmIHRlc3QgJCMgLWVxIDI7IHRoZW4KLSAgICBjYXNlICIkMSIgaW4KLSAgICAgICAgKi5iejIpCi0gICAgICAgICAgICAgICAgY2FzZSAiJDIiIGluCi0gICAgICAgICAgICAqLmJ6MikKLSAgICAgICAgICAgIEY9YGVjaG8gIiQyIiB8IHNlZCAnc3wuKi98fDtzfC5iejIkfHwnYAotICAgICAgICAgICAgICAgICAgICAgICAgYnppcDIgLWNkZnEgIiQyIiA+ICR0bXAKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ6aXAyIC1jZGZxICIkMSIgfCAkY29tcCAkT1BUSU9OUyAtICR0bXAKLSAgICAgICAgICAgICAgICAgICAgICAgIFNUQVQ9IiQ/IgotICAgICAgICAgICAgL2Jpbi9ybSAtZiAkdG1wOzsKLQotICAgICAgICAgICAgICAgICopICAgICAgYnppcDIgLWNkZnEgIiQxIiB8ICRjb21wICRPUFRJT05TIC0gIiQyIgotICAgICAgICAgICAgICAgICAgICAgICAgU1RBVD0iJD8iOzsKLSAgICAgICAgICAgICAgICBlc2FjOzsKLSAgICAgICAgKikgICAgICBjYXNlICIkMiIgaW4KLSAgICAgICAgICAgICouYnoyKQotICAgICAgICAgICAgICAgICAgICAgICAgYnppcDIgLWNkZnEgIiQyIiB8ICRjb21wICRPUFRJT05TICIkMSIgLQotICAgICAgICAgICAgICAgICAgICAgICAgU1RBVD0iJD8iOzsKLSAgICAgICAgICAgICAgICAqKSAgICAgICRjb21wICRPUFRJT05TICIkMSIgIiQyIgotICAgICAgICAgICAgICAgICAgICAgICAgU1RBVD0iJD8iOzsKLSAgICAgICAgICAgICAgICBlc2FjOzsKLSAgICBlc2FjCi0gICAgICAgIGV4aXQgIiRTVEFUIgotZWxzZQotICAgIGVjaG8gIlVzYWdlOiAkcHJvZyBbJHtjb21wfV9vcHRpb25zXSBmaWxlIFtmaWxlXSIKLSAgICBleGl0IDEKLWZpCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9iemRpZmYuMSBiL1V0aWxpdGllcy9jbWJ6aXAyL2J6ZGlmZi4xCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGI3YThlLi4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6ZGlmZi4xCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotXCJTaGFtZWxlc3NseSBjb3BpZWQgZnJvbSB6bW9yZS4xIGJ5IFBoaWxpcHBlIFRyb2luIDxwaGlsQGZpZmkub3JnPgotXCJmb3IgRGViaWFuIEdOVS9MaW51eAotLlRIIEJaRElGRiAxCi0uU0ggTkFNRQotYnpjbXAsIGJ6ZGlmZiBcLSBjb21wYXJlIGJ6aXAyIGNvbXByZXNzZWQgZmlsZXMKLS5TSCBTWU5PUFNJUwotLkIgYnpjbXAKLVsgY21wX29wdGlvbnMgXSBmaWxlMQotWyBmaWxlMiBdCi0uYnIKLS5CIGJ6ZGlmZgotWyBkaWZmX29wdGlvbnMgXSBmaWxlMQotWyBmaWxlMiBdCi0uU0ggREVTQ1JJUFRJT04KLS5JICBCemNtcAotYW5kIAotLkkgYnpkaWZmCi1hcmUgdXNlZCB0byBpbnZva2UgdGhlCi0uSSBjbXAKLW9yIHRoZQotLkkgZGlmZgotcHJvZ3JhbSBvbiBiemlwMiBjb21wcmVzc2VkIGZpbGVzLiAgQWxsIG9wdGlvbnMgc3BlY2lmaWVkIGFyZSBwYXNzZWQKLWRpcmVjdGx5IHRvCi0uSSBjbXAKLW9yCi0uSVIgZGlmZiAiLiIKLUlmIG9ubHkgMSBmaWxlIGlzIHNwZWNpZmllZCwgdGhlbiB0aGUgZmlsZXMgY29tcGFyZWQgYXJlCi0uSSBmaWxlMQotYW5kIGFuIHVuY29tcHJlc3NlZAotLklSIGZpbGUxICIuYnoyLiIKLUlmIHR3byBmaWxlcyBhcmUgc3BlY2lmaWVkLCB0aGVuIHRoZXkgYXJlIHVuY29tcHJlc3NlZCBpZiBuZWNlc3NhcnkgYW5kIGZlZCB0bwotLkkgY21wCi1vcgotLklSIGRpZmYgIi4iCi1UaGUgZXhpdCBzdGF0dXMgZnJvbSAKLS5JIGNtcAotb3IKLS5JIGRpZmYKLWlzIHByZXNlcnZlZC4KLS5TSCAiU0VFIEFMU08iCi1jbXAoMSksIGRpZmYoMSksIGJ6bW9yZSgxKSwgYnpsZXNzKDEpLCBiemdyZXAoMSksIGJ6aXAyKDEpCi0uU0ggQlVHUwotTWVzc2FnZXMgZnJvbSB0aGUKLS5JIGNtcAotb3IKLS5JIGRpZmYKLXByb2dyYW1zIHJlZmVyIHRvIHRlbXBvcmFyeSBmaWxlbmFtZXMgaW5zdGVhZCBvZiB0aG9zZSBzcGVjaWZpZWQuCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9iemdyZXAgYi9VdGlsaXRpZXMvY21iemlwMi9iemdyZXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjY2Y5MTkuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvYnpncmVwCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotIyEvYmluL3NoCi0KLSMgQnpncmVwIHdyYXBwZWQgZm9yIGJ6aXAyLCAKLSMgYWRhcHRlZCBmcm9tIHpncmVwIGJ5IFBoaWxpcHBlIFRyb2luIDxwaGlsQGZpZmkub3JnPiBmb3IgRGViaWFuIEdOVS9MaW51eC4KLSMjIHpncmVwIG5vdGljZToKLSMjIHpncmVwIC0tIGEgd3JhcHBlciBhcm91bmQgYSBncmVwIHByb2dyYW0gdGhhdCBkZWNvbXByZXNzZXMgZmlsZXMgYXMgbmVlZGVkCi0jIyBBZGFwdGVkIGZyb20gYSB2ZXJzaW9uIHNlbnQgYnkgQ2hhcmxlcyBMZXZlcnQgPGNoYXJsZXNAY29tbS5wb2x5bXRsLmNhPgotCi1QQVRIPSIvdXNyL2JpbjokUEFUSCI7IGV4cG9ydCBQQVRICi0KLXByb2c9YGVjaG8gJDAgfCBzZWQgJ3N8LiovfHwnYAotY2FzZSAiJHByb2ciIGluCi0gICAgKmVncmVwKSBncmVwPSR7RUdSRVAtZWdyZXB9IDs7Ci0gICAgKmZncmVwKSBncmVwPSR7RkdSRVAtZmdyZXB9IDs7Ci0gICAgKikgIGdyZXA9JHtHUkVQLWdyZXB9ICAgOzsKLWVzYWMKLXBhdD0iIgotd2hpbGUgdGVzdCAkIyAtbmUgMDsgZG8KLSAgY2FzZSAiJDEiIGluCi0gIC1lIHwgLWYpIG9wdD0iJG9wdCAkMSI7IHNoaWZ0OyBwYXQ9IiQxIgotICAgICAgICAgICBpZiB0ZXN0ICIkZ3JlcCIgPSBncmVwOyB0aGVuICAjIGdyZXAgaXMgYnVnZ3kgd2l0aCAtZSBvbiBTVlI0Ci0gICAgICAgICAgICAgZ3JlcD1lZ3JlcAotICAgICAgICAgICBmaTs7Ci0gIC1BIHwgLUIpIG9wdD0iJG9wdCAkMSAkMiI7IHNoaWZ0OzsKLSAgLSopICAgICAgb3B0PSIkb3B0ICQxIjs7Ci0gICAqKSAgICAgIGlmIHRlc3QgLXogIiRwYXQiOyB0aGVuCi0gICAgICAgICBwYXQ9IiQxIgotICAgICAgIGVsc2UKLSAgICAgICAgIGJyZWFrOwotICAgICAgICAgICBmaTs7Ci0gIGVzYWMKLSAgc2hpZnQKLWRvbmUKLQotaWYgdGVzdCAteiAiJHBhdCI7IHRoZW4KLSAgZWNobyAiZ3JlcCB0aHJvdWdoIGJ6aXAyIGZpbGVzIgotICBlY2hvICJ1c2FnZTogJHByb2cgW2dyZXBfb3B0aW9uc10gcGF0dGVybiBbZmlsZXNdIgotICBleGl0IDEKLWZpCi0KLWxpc3Q9MAotc2lsZW50PTAKLW9wPWBlY2hvICIkb3B0IiB8IHNlZCAtZSAncy8gLy9nJyAtZSAncy8tLy9nJ2AKLWNhc2UgIiRvcCIgaW4KLSAgKmwqKSBsaXN0PTEKLWVzYWMKLWNhc2UgIiRvcCIgaW4KLSAgKmgqKSBzaWxlbnQ9MQotZXNhYwotCi1pZiB0ZXN0ICQjIC1lcSAwOyB0aGVuCi0gIGJ6aXAyIC1jZGZxIHwgJGdyZXAgJG9wdCAiJHBhdCIKLSAgZXhpdCAkPwotZmkKLQotcmVzPTAKLWZvciBpIGRvCi0gIGlmIHRlc3QgLWYgIiRpIjsgdGhlbiA6OyBlbHNlIGlmIHRlc3QgLWYgIiRpLmJ6MiI7IHRoZW4gaT0iJGkuYnoyIjsgZmk7IGZpCi0gIGlmIHRlc3QgJGxpc3QgLWVxIDE7IHRoZW4KLSAgICBiemlwMiAtY2RmcSAiJGkiIHwgJGdyZXAgJG9wdCAiJHBhdCIgMj4mMSA+IC9kZXYvbnVsbCAmJiBlY2hvICRpCi0gICAgcj0kPwotICBlbGlmIHRlc3QgJCMgLWVxIDEgLW8gJHNpbGVudCAtZXEgMTsgdGhlbgotICAgIGJ6aXAyIC1jZGZxICIkaSIgfCAkZ3JlcCAkb3B0ICIkcGF0IgotICAgIHI9JD8KLSAgZWxzZQotICAgIGo9JHtpLy9cXC9cXFxcfQotICAgIGo9JHtqLy98L1xcfH0KLSAgICBqPSR7ai8vJi9cXCZ9Ci0gICAgaj1gcHJpbnRmICIlcyIgIiRqIiB8IHRyICdcbicgJyAnYAotICAgIGJ6aXAyIC1jZGZxICIkaSIgfCAkZ3JlcCAkb3B0ICIkcGF0IiB8IHNlZCAic3xefCR7an06fCIKLSAgICByPSQ/Ci0gIGZpCi0gIHRlc3QgIiRyIiAtbmUgMCAmJiByZXM9IiRyIgotZG9uZQotZXhpdCAkcmVzCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9iemdyZXAuMSBiL1V0aWxpdGllcy9jbWJ6aXAyL2J6Z3JlcC4xCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzBhZjhjLi4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6Z3JlcC4xCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotXCJTaGFtZWxlc3NseSBjb3BpZWQgZnJvbSB6bW9yZS4xIGJ5IFBoaWxpcHBlIFRyb2luIDxwaGlsQGZpZmkub3JnPgotXCJmb3IgRGViaWFuIEdOVS9MaW51eAotLlRIIEJaR1JFUCAxCi0uU0ggTkFNRQotYnpncmVwLCBiemZncmVwLCBiemVncmVwIFwtIHNlYXJjaCBwb3NzaWJseSBiemlwMiBjb21wcmVzc2VkIGZpbGVzIGZvciBhIHJlZ3VsYXIgZXhwcmVzc2lvbgotLlNIIFNZTk9QU0lTCi0uQiBiemdyZXAKLVsgZ3JlcF9vcHRpb25zIF0KLS5CSSAgW1wgLWVcIF0gIiBwYXR0ZXJuIgotLklSIGZpbGVuYW1lICIuXHwuXHwuIgotLmJyCi0uQiBiemVncmVwCi1bIGVncmVwX29wdGlvbnMgXQotLkJJICBbXCAtZVwgXSAiIHBhdHRlcm4iCi0uSVIgZmlsZW5hbWUgIi5cfC5cfC4iCi0uYnIKLS5CIGJ6ZmdyZXAKLVsgZmdyZXBfb3B0aW9ucyBdCi0uQkkgIFtcIC1lXCBdICIgcGF0dGVybiIKLS5JUiBmaWxlbmFtZSAiLlx8Llx8LiIKLS5TSCBERVNDUklQVElPTgotLklSICBCemdyZXAKLWlzIHVzZWQgdG8gaW52b2tlIHRoZQotLkkgZ3JlcAotb24gYnppcDItY29tcHJlc3NlZCBmaWxlcy4gQWxsIG9wdGlvbnMgc3BlY2lmaWVkIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8KLS5JIGdyZXAuCi1JZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgdGhlbiB0aGUgc3RhbmRhcmQgaW5wdXQgaXMgZGVjb21wcmVzc2VkCi1pZiBuZWNlc3NhcnkgYW5kIGZlZCB0byBncmVwLgotT3RoZXJ3aXNlIHRoZSBnaXZlbiBmaWxlcyBhcmUgdW5jb21wcmVzc2VkIGlmIG5lY2Vzc2FyeSBhbmQgZmVkIHRvCi0uSSBncmVwLgotLlBQCi1JZgotLkkgYnpncmVwCi1pcyBpbnZva2VkIGFzCi0uSSBiemVncmVwCi1vcgotLkkgYnpmZ3JlcAotdGhlbgotLkkgZWdyZXAKLW9yCi0uSSBmZ3JlcAotaXMgdXNlZCBpbnN0ZWFkIG9mCi0uSSBncmVwLgotSWYgdGhlIEdSRVAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LAotLkkgYnpncmVwCi11c2VzIGl0IGFzIHRoZQotLkkgZ3JlcAotcHJvZ3JhbSB0byBiZSBpbnZva2VkLiBGb3IgZXhhbXBsZToKLQotICAgIGZvciBzaDogIEdSRVA9ZmdyZXAgIGJ6Z3JlcCBzdHJpbmcgZmlsZXMKLSAgICBmb3IgY3NoOiAoc2V0ZW52IEdSRVAgZmdyZXA7IGJ6Z3JlcCBzdHJpbmcgZmlsZXMpCi0uU0ggQVVUSE9SCi1DaGFybGVzIExldmVydCAoY2hhcmxlc0Bjb21tLnBvbHltdGwuY2EpLiBBZGFwdGVkIHRvIGJ6aXAyIGJ5IFBoaWxpcHBlCi1Ucm9pbiA8cGhpbEBmaWZpLm9yZz4gZm9yIERlYmlhbiBHTlUvTGludXguCi0uU0ggIlNFRSBBTFNPIgotZ3JlcCgxKSwgZWdyZXAoMSksIGZncmVwKDEpLCBiemRpZmYoMSksIGJ6bW9yZSgxKSwgYnpsZXNzKDEpLCBiemlwMigxKQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvYnppcC5jc3MgYi9VdGlsaXRpZXMvY21iemlwMi9iemlwLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZlYjQwMS4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9iemlwLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qIENvbG91cnM6Ci0jNzQyNDBmICBkYXJrIGJyb3duICAgICAgaDEsIGgyLCBoMywgaDQKLSMzMzY2OTkgIG1lZGl1bSBibHVlICAgICBsaW5rcwotIzMzOTk5OSAgdHVycXVvaXNlICAgICAgIGxpbmsgaG92ZXIgY29sb3VyCi0jMjAyMDIwICBhbG1vc3QgYmxhY2sgICAgZ2VuZXJhbCB0ZXh0Ci0jNzYxNTk2ICBwdXJwbGUgICAgICAgICAgbWQ1c3VtIHRleHQKLSM2MjYyNjIgIGRhcmsgZ3JheSAgICAgICBwcmUgYm9yZGVyCi0jZWVlZWVlICB2ZXJ5IGxpZ2h0IGdyYXkgcHJlIGJhY2tncm91bmQKLSNmMmYyZjkgIHZlcnkgbGlnaHQgYmx1ZSBuYXYgdGFibGUgYmFja2dyb3VuZAotIzMzNjZjYyAgbWVkaXVtIGJsdWUgICAgIG5hdiB0YWJsZSBib3JkZXIKLSovCi0KLWEsIGE6bGluaywgYTp2aXNpdGVkLCBhOmFjdGl2ZSB7IGNvbG9yOiAjMzM2Njk5OyB9Ci1hOmhvdmVyIHsgY29sb3I6ICMzMzk5OTk7IH0KLQotYm9keSB7IGZvbnQ6IDgwJS8xMjYlIHNhbnMtc2VyaWY7IH0KLWgxLCBoMiwgaDMsIGg0IHsgY29sb3I6ICM3NDI0MGY7IH0KLQotZHQgeyBjb2xvcjogIzMzNjY5OTsgZm9udC13ZWlnaHQ6IGJvbGQgfQotZGQgeyAKLSBtYXJnaW4tbGVmdDogMS41ZW07IAotIHBhZGRpbmctYm90dG9tOiAwLjhlbTsKLX0KLQotLyogLS0gcnVsZXIgLS0gKi8KLWRpdi5ocl9ibHVlIHsgCi0gIGhlaWdodDogIDNweDsgCi0gIGJhY2tncm91bmQ6I2ZmZmZmZiB1cmwoIi9pbWFnZXMvaHJfYmx1ZS5wbmciKSByZXBlYXQteDsgfQotZGl2LmhyX2JsdWUgaHIgeyBkaXNwbGF5Om5vbmU7IH0KLQotLyogcmVsZWFzZSBzdHlsZXMgKi8KLSNyZWxlYXNlIHAgeyBtYXJnaW4tdG9wOiAwLjRlbTsgfQotI3JlbGVhc2UgLm1kNXN1bSB7IGNvbG9yOiAjNzYxNTk2OyB9Ci0KLQotLyogLS0tLS0tIHN0eWxlcyBmb3IgZG9jc3xtYW51YWxzfGhvd3RvIC0tLS0tLSAqLwotLyogLS0gbGlzdHMgLS0gKi8KLXVsICB7IAotIG1hcmdpbjogICAgIDBweCA0cHggMTZweCAxNnB4OwotIHBhZGRpbmc6ICAgIDBweDsKLSBsaXN0LXN0eWxlOiB1cmwoIi9pbWFnZXMvbGktYmx1ZS5wbmciKTsgCi19Ci11bCBsaSB7IAotIG1hcmdpbi1ib3R0b206IDEwcHg7Ci19Ci11bCB1bCAgIHsgCi0gbGlzdC1zdHlsZS10eXBlOiAgbm9uZTsgCi0gbGlzdC1zdHlsZS1pbWFnZTogbm9uZTsgCi0gbWFyZ2luLWxlZnQ6ICAgICAgMHB4OyAKLX0KLQotLyogaGVhZGVyIC8gZm9vdGVyIG5hdiB0YWJsZXMgKi8KLXRhYmxlLm5hdiB7Ci0gYm9yZGVyOiAgICAgc29saWQgMXB4ICMzMzY2Y2M7Ci0gYmFja2dyb3VuZDogI2YyZjJmOTsKLSBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmY5OwotIG1hcmdpbi1ib3R0b206IDAuNWVtOwotfQotLyogZG9uJ3QgaGF2ZSB1bmRlcmxpbmVkIGxpbmtzIGluIGNodW5rZWQgbmF2IG1lbnVzICovCi10YWJsZS5uYXYgYSB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQotdGFibGUubmF2IGE6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQotdGFibGUubmF2IHRkIHsgZm9udC1zaXplOiA4NSU7IH0KLQotY29kZSwgdHQsIHByZSB7IGZvbnQtc2l6ZTogMTIwJTsgfQotY29kZSwgdHQgeyBjb2xvcjogIzc2MTU5NjsgfQotCi1kaXYubGl0ZXJhbGxheW91dCwgcHJlLnByb2dyYW1saXN0aW5nLCBwcmUuc2NyZWVuIHsKLSBjb2xvcjogICAgICAjMDAwMDAwOwotIHBhZGRpbmc6ICAgIDAuNWVtOwotIGJhY2tncm91bmQ6ICNlZWVlZWU7Ci0gYm9yZGVyOiAgICAgMXB4IHNvbGlkICM2MjYyNjI7Ci0gYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsKLSBtYXJnaW46IDRweCAwcHggNHB4IDBweDsgCi19CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9iemlwMi4xIGIvVXRpbGl0aWVzL2NtYnppcDIvYnppcDIuMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTMxM2YyZC4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9iemlwMi4xCisrKyAvZGV2L251bGwKQEAgLTEsNDU0ICswLDAgQEAKLS5QVQotLlRIIGJ6aXAyIDEKLS5TSCBOQU1FCi1iemlwMiwgYnVuemlwMiBcLSBhIGJsb2NrLXNvcnRpbmcgZmlsZSBjb21wcmVzc29yLCB2MS4wLjQKLS5icgotYnpjYXQgXC0gZGVjb21wcmVzc2VzIGZpbGVzIHRvIHN0ZG91dAotLmJyCi1iemlwMnJlY292ZXIgXC0gcmVjb3ZlcnMgZGF0YSBmcm9tIGRhbWFnZWQgYnppcDIgZmlsZXMKLQotLlNIIFNZTk9QU0lTCi0ubGwgKzgKLS5CIGJ6aXAyCi0uUkIgWyAiIFwtY2Rma3FzdHZ6VkwxMjM0NTY3ODkgIiBdCi1bCi0uSSAiZmlsZW5hbWVzIFwmLi4uIgotXQotLmxsIC04Ci0uYnIKLS5CIGJ1bnppcDIKLS5SQiBbICIgXC1ma3ZzVkwgIiBdCi1bIAotLkkgImZpbGVuYW1lcyBcJi4uLiIKLV0KLS5icgotLkIgYnpjYXQKLS5SQiBbICIgXC1zICIgXQotWyAKLS5JICJmaWxlbmFtZXMgXCYuLi4iCi1dCi0uYnIKLS5CIGJ6aXAycmVjb3ZlcgotLkkgImZpbGVuYW1lIgotCi0uU0ggREVTQ1JJUFRJT04KLS5JIGJ6aXAyCi1jb21wcmVzc2VzIGZpbGVzIHVzaW5nIHRoZSBCdXJyb3dzLVdoZWVsZXIgYmxvY2sgc29ydGluZwotdGV4dCBjb21wcmVzc2lvbiBhbGdvcml0aG0sIGFuZCBIdWZmbWFuIGNvZGluZy4gIENvbXByZXNzaW9uIGlzCi1nZW5lcmFsbHkgY29uc2lkZXJhYmx5IGJldHRlciB0aGFuIHRoYXQgYWNoaWV2ZWQgYnkgbW9yZSBjb252ZW50aW9uYWwKLUxaNzcvTFo3OC1iYXNlZCBjb21wcmVzc29ycywgYW5kIGFwcHJvYWNoZXMgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBQUE0KLWZhbWlseSBvZiBzdGF0aXN0aWNhbCBjb21wcmVzc29ycy4KLQotVGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIGFyZSBkZWxpYmVyYXRlbHkgdmVyeSBzaW1pbGFyIHRvIAotdGhvc2Ugb2YgCi0uSSBHTlUgZ3ppcCwgCi1idXQgdGhleSBhcmUgbm90IGlkZW50aWNhbC4KLQotLkkgYnppcDIKLWV4cGVjdHMgYSBsaXN0IG9mIGZpbGUgbmFtZXMgdG8gYWNjb21wYW55IHRoZQotY29tbWFuZC1saW5lIGZsYWdzLiAgRWFjaCBmaWxlIGlzIHJlcGxhY2VkIGJ5IGEgY29tcHJlc3NlZCB2ZXJzaW9uIG9mCi1pdHNlbGYsIHdpdGggdGhlIG5hbWUgIm9yaWdpbmFsX25hbWUuYnoyIi4gIAotRWFjaCBjb21wcmVzc2VkIGZpbGUKLWhhcyB0aGUgc2FtZSBtb2RpZmljYXRpb24gZGF0ZSwgcGVybWlzc2lvbnMsIGFuZCwgd2hlbiBwb3NzaWJsZSwKLW93bmVyc2hpcCBhcyB0aGUgY29ycmVzcG9uZGluZyBvcmlnaW5hbCwgc28gdGhhdCB0aGVzZSBwcm9wZXJ0aWVzIGNhbgotYmUgY29ycmVjdGx5IHJlc3RvcmVkIGF0IGRlY29tcHJlc3Npb24gdGltZS4gIEZpbGUgbmFtZSBoYW5kbGluZyBpcwotbmFpdmUgaW4gdGhlIHNlbnNlIHRoYXQgdGhlcmUgaXMgbm8gbWVjaGFuaXNtIGZvciBwcmVzZXJ2aW5nIG9yaWdpbmFsCi1maWxlIG5hbWVzLCBwZXJtaXNzaW9ucywgb3duZXJzaGlwcyBvciBkYXRlcyBpbiBmaWxlc3lzdGVtcyB3aGljaCBsYWNrCi10aGVzZSBjb25jZXB0cywgb3IgaGF2ZSBzZXJpb3VzIGZpbGUgbmFtZSBsZW5ndGggcmVzdHJpY3Rpb25zLCBzdWNoIGFzCi1NUy1ET1MuCi0KLS5JIGJ6aXAyCi1hbmQKLS5JIGJ1bnppcDIKLXdpbGwgYnkgZGVmYXVsdCBub3Qgb3ZlcndyaXRlIGV4aXN0aW5nCi1maWxlcy4gIElmIHlvdSB3YW50IHRoaXMgdG8gaGFwcGVuLCBzcGVjaWZ5IHRoZSBcLWYgZmxhZy4KLQotSWYgbm8gZmlsZSBuYW1lcyBhcmUgc3BlY2lmaWVkLAotLkkgYnppcDIKLWNvbXByZXNzZXMgZnJvbSBzdGFuZGFyZAotaW5wdXQgdG8gc3RhbmRhcmQgb3V0cHV0LiAgSW4gdGhpcyBjYXNlLAotLkkgYnppcDIKLXdpbGwgZGVjbGluZSB0bwotd3JpdGUgY29tcHJlc3NlZCBvdXRwdXQgdG8gYSB0ZXJtaW5hbCwgYXMgdGhpcyB3b3VsZCBiZSBlbnRpcmVseQotaW5jb21wcmVoZW5zaWJsZSBhbmQgdGhlcmVmb3JlIHBvaW50bGVzcy4KLQotLkkgYnVuemlwMgotKG9yCi0uSSBiemlwMiBcLWQpIAotZGVjb21wcmVzc2VzIGFsbAotc3BlY2lmaWVkIGZpbGVzLiAgRmlsZXMgd2hpY2ggd2VyZSBub3QgY3JlYXRlZCBieSAKLS5JIGJ6aXAyCi13aWxsIGJlIGRldGVjdGVkIGFuZCBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzc3VlZC4gIAotLkkgYnppcDIKLWF0dGVtcHRzIHRvIGd1ZXNzIHRoZSBmaWxlbmFtZSBmb3IgdGhlIGRlY29tcHJlc3NlZCBmaWxlIAotZnJvbSB0aGF0IG9mIHRoZSBjb21wcmVzc2VkIGZpbGUgYXMgZm9sbG93czoKLQotICAgICAgIGZpbGVuYW1lLmJ6MiAgICBiZWNvbWVzICAgZmlsZW5hbWUKLSAgICAgICBmaWxlbmFtZS5ieiAgICAgYmVjb21lcyAgIGZpbGVuYW1lCi0gICAgICAgZmlsZW5hbWUudGJ6MiAgIGJlY29tZXMgICBmaWxlbmFtZS50YXIKLSAgICAgICBmaWxlbmFtZS50YnogICAgYmVjb21lcyAgIGZpbGVuYW1lLnRhcgotICAgICAgIGFueW90aGVybmFtZSAgICBiZWNvbWVzICAgYW55b3RoZXJuYW1lLm91dAotCi1JZiB0aGUgZmlsZSBkb2VzIG5vdCBlbmQgaW4gb25lIG9mIHRoZSByZWNvZ25pc2VkIGVuZGluZ3MsIAotLkkgLmJ6MiwgCi0uSSAuYnosIAotLkkgLnRiejIKLW9yCi0uSSAudGJ6LCAKLS5JIGJ6aXAyIAotY29tcGxhaW5zIHRoYXQgaXQgY2Fubm90Ci1ndWVzcyB0aGUgbmFtZSBvZiB0aGUgb3JpZ2luYWwgZmlsZSwgYW5kIHVzZXMgdGhlIG9yaWdpbmFsIG5hbWUKLXdpdGgKLS5JIC5vdXQKLWFwcGVuZGVkLgotCi1BcyB3aXRoIGNvbXByZXNzaW9uLCBzdXBwbHlpbmcgbm8KLWZpbGVuYW1lcyBjYXVzZXMgZGVjb21wcmVzc2lvbiBmcm9tIAotc3RhbmRhcmQgaW5wdXQgdG8gc3RhbmRhcmQgb3V0cHV0LgotCi0uSSBidW56aXAyIAotd2lsbCBjb3JyZWN0bHkgZGVjb21wcmVzcyBhIGZpbGUgd2hpY2ggaXMgdGhlCi1jb25jYXRlbmF0aW9uIG9mIHR3byBvciBtb3JlIGNvbXByZXNzZWQgZmlsZXMuICBUaGUgcmVzdWx0IGlzIHRoZQotY29uY2F0ZW5hdGlvbiBvZiB0aGUgY29ycmVzcG9uZGluZyB1bmNvbXByZXNzZWQgZmlsZXMuICBJbnRlZ3JpdHkKLXRlc3RpbmcgKFwtdCkgCi1vZiBjb25jYXRlbmF0ZWQgCi1jb21wcmVzc2VkIGZpbGVzIGlzIGFsc28gc3VwcG9ydGVkLgotCi1Zb3UgY2FuIGFsc28gY29tcHJlc3Mgb3IgZGVjb21wcmVzcyBmaWxlcyB0byB0aGUgc3RhbmRhcmQgb3V0cHV0IGJ5Ci1naXZpbmcgdGhlIFwtYyBmbGFnLiAgTXVsdGlwbGUgZmlsZXMgbWF5IGJlIGNvbXByZXNzZWQgYW5kCi1kZWNvbXByZXNzZWQgbGlrZSB0aGlzLiAgVGhlIHJlc3VsdGluZyBvdXRwdXRzIGFyZSBmZWQgc2VxdWVudGlhbGx5IHRvCi1zdGRvdXQuICBDb21wcmVzc2lvbiBvZiBtdWx0aXBsZSBmaWxlcyAKLWluIHRoaXMgbWFubmVyIGdlbmVyYXRlcyBhIHN0cmVhbQotY29udGFpbmluZyBtdWx0aXBsZSBjb21wcmVzc2VkIGZpbGUgcmVwcmVzZW50YXRpb25zLiAgU3VjaCBhIHN0cmVhbQotY2FuIGJlIGRlY29tcHJlc3NlZCBjb3JyZWN0bHkgb25seSBieQotLkkgYnppcDIgCi12ZXJzaW9uIDAuOS4wIG9yCi1sYXRlci4gIEVhcmxpZXIgdmVyc2lvbnMgb2YKLS5JIGJ6aXAyCi13aWxsIHN0b3AgYWZ0ZXIgZGVjb21wcmVzc2luZwotdGhlIGZpcnN0IGZpbGUgaW4gdGhlIHN0cmVhbS4KLQotLkkgYnpjYXQKLShvcgotLkkgYnppcDIgLWRjKSAKLWRlY29tcHJlc3NlcyBhbGwgc3BlY2lmaWVkIGZpbGVzIHRvCi10aGUgc3RhbmRhcmQgb3V0cHV0LgotCi0uSSBiemlwMgotd2lsbCByZWFkIGFyZ3VtZW50cyBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLS5JIEJaSVAyCi1hbmQKLS5JIEJaSVAsCi1pbiB0aGF0IG9yZGVyLCBhbmQgd2lsbCBwcm9jZXNzIHRoZW0KLWJlZm9yZSBhbnkgYXJndW1lbnRzIHJlYWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgVGhpcyBnaXZlcyBhIAotY29udmVuaWVudCB3YXkgdG8gc3VwcGx5IGRlZmF1bHQgYXJndW1lbnRzLgotCi1Db21wcmVzc2lvbiBpcyBhbHdheXMgcGVyZm9ybWVkLCBldmVuIGlmIHRoZSBjb21wcmVzc2VkIAotZmlsZSBpcyBzbGlnaHRseQotbGFyZ2VyIHRoYW4gdGhlIG9yaWdpbmFsLiAgRmlsZXMgb2YgbGVzcyB0aGFuIGFib3V0IG9uZSBodW5kcmVkIGJ5dGVzCi10ZW5kIHRvIGdldCBsYXJnZXIsIHNpbmNlIHRoZSBjb21wcmVzc2lvbiBtZWNoYW5pc20gaGFzIGEgY29uc3RhbnQKLW92ZXJoZWFkIGluIHRoZSByZWdpb24gb2YgNTAgYnl0ZXMuICBSYW5kb20gZGF0YSAoaW5jbHVkaW5nIHRoZSBvdXRwdXQKLW9mIG1vc3QgZmlsZSBjb21wcmVzc29ycykgaXMgY29kZWQgYXQgYWJvdXQgOC4wNSBiaXRzIHBlciBieXRlLCBnaXZpbmcKLWFuIGV4cGFuc2lvbiBvZiBhcm91bmQgMC41JS4KLQotQXMgYSBzZWxmLWNoZWNrIGZvciB5b3VyIHByb3RlY3Rpb24sIAotLkkgCi1iemlwMgotdXNlcyAzMi1iaXQgQ1JDcyB0bwotbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29tcHJlc3NlZCB2ZXJzaW9uIG9mIGEgZmlsZSBpcyBpZGVudGljYWwgdG8gdGhlCi1vcmlnaW5hbC4gIFRoaXMgZ3VhcmRzIGFnYWluc3QgY29ycnVwdGlvbiBvZiB0aGUgY29tcHJlc3NlZCBkYXRhLCBhbmQKLWFnYWluc3QgdW5kZXRlY3RlZCBidWdzIGluCi0uSSBiemlwMgotKGhvcGVmdWxseSB2ZXJ5IHVubGlrZWx5KS4gIFRoZQotY2hhbmNlcyBvZiBkYXRhIGNvcnJ1cHRpb24gZ29pbmcgdW5kZXRlY3RlZCBpcyBtaWNyb3Njb3BpYywgYWJvdXQgb25lCi1jaGFuY2UgaW4gZm91ciBiaWxsaW9uIGZvciBlYWNoIGZpbGUgcHJvY2Vzc2VkLiAgQmUgYXdhcmUsIHRob3VnaCwgdGhhdAotdGhlIGNoZWNrIG9jY3VycyB1cG9uIGRlY29tcHJlc3Npb24sIHNvIGl0IGNhbiBvbmx5IHRlbGwgeW91IHRoYXQKLXNvbWV0aGluZyBpcyB3cm9uZy4gIEl0IGNhbid0IGhlbHAgeW91IAotcmVjb3ZlciB0aGUgb3JpZ2luYWwgdW5jb21wcmVzc2VkCi1kYXRhLiAgWW91IGNhbiB1c2UgCi0uSSBiemlwMnJlY292ZXIKLXRvIHRyeSB0byByZWNvdmVyIGRhdGEgZnJvbQotZGFtYWdlZCBmaWxlcy4KLQotUmV0dXJuIHZhbHVlczogMCBmb3IgYSBub3JtYWwgZXhpdCwgMSBmb3IgZW52aXJvbm1lbnRhbCBwcm9ibGVtcyAoZmlsZQotbm90IGZvdW5kLCBpbnZhbGlkIGZsYWdzLCBJL08gZXJyb3JzLCAmYyksIDIgdG8gaW5kaWNhdGUgYSBjb3JydXB0Ci1jb21wcmVzc2VkIGZpbGUsIDMgZm9yIGFuIGludGVybmFsIGNvbnNpc3RlbmN5IGVycm9yIChlZywgYnVnKSB3aGljaAotY2F1c2VkCi0uSSBiemlwMgotdG8gcGFuaWMuCi0KLS5TSCBPUFRJT05TCi0uVFAKLS5CIFwtYyAtLXN0ZG91dAotQ29tcHJlc3Mgb3IgZGVjb21wcmVzcyB0byBzdGFuZGFyZCBvdXRwdXQuCi0uVFAKLS5CIFwtZCAtLWRlY29tcHJlc3MKLUZvcmNlIGRlY29tcHJlc3Npb24uICAKLS5JIGJ6aXAyLCAKLS5JIGJ1bnppcDIgCi1hbmQKLS5JIGJ6Y2F0IAotYXJlCi1yZWFsbHkgdGhlIHNhbWUgcHJvZ3JhbSwgYW5kIHRoZSBkZWNpc2lvbiBhYm91dCB3aGF0IGFjdGlvbnMgdG8gdGFrZSBpcwotZG9uZSBvbiB0aGUgYmFzaXMgb2Ygd2hpY2ggbmFtZSBpcyB1c2VkLiAgVGhpcyBmbGFnIG92ZXJyaWRlcyB0aGF0Ci1tZWNoYW5pc20sIGFuZCBmb3JjZXMgCi0uSSBiemlwMgotdG8gZGVjb21wcmVzcy4KLS5UUAotLkIgXC16IC0tY29tcHJlc3MKLVRoZSBjb21wbGVtZW50IHRvIFwtZDogZm9yY2VzIGNvbXByZXNzaW9uLCByZWdhcmRsZXNzIG9mIHRoZQotaW52b2NhdGlvbiBuYW1lLgotLlRQCi0uQiBcLXQgLS10ZXN0Ci1DaGVjayBpbnRlZ3JpdHkgb2YgdGhlIHNwZWNpZmllZCBmaWxlKHMpLCBidXQgZG9uJ3QgZGVjb21wcmVzcyB0aGVtLgotVGhpcyByZWFsbHkgcGVyZm9ybXMgYSB0cmlhbCBkZWNvbXByZXNzaW9uIGFuZCB0aHJvd3MgYXdheSB0aGUgcmVzdWx0LgotLlRQCi0uQiBcLWYgLS1mb3JjZQotRm9yY2Ugb3ZlcndyaXRlIG9mIG91dHB1dCBmaWxlcy4gIE5vcm1hbGx5LAotLkkgYnppcDIgCi13aWxsIG5vdCBvdmVyd3JpdGUKLWV4aXN0aW5nIG91dHB1dCBmaWxlcy4gIEFsc28gZm9yY2VzIAotLkkgYnppcDIgCi10byBicmVhayBoYXJkIGxpbmtzCi10byBmaWxlcywgd2hpY2ggaXQgb3RoZXJ3aXNlIHdvdWxkbid0IGRvLgotCi1iemlwMiBub3JtYWxseSBkZWNsaW5lcyB0byBkZWNvbXByZXNzIGZpbGVzIHdoaWNoIGRvbid0IGhhdmUgdGhlCi1jb3JyZWN0IG1hZ2ljIGhlYWRlciBieXRlcy4gIElmIGZvcmNlZCAoLWYpLCBob3dldmVyLCBpdCB3aWxsIHBhc3MKLXN1Y2ggZmlsZXMgdGhyb3VnaCB1bm1vZGlmaWVkLiAgVGhpcyBpcyBob3cgR05VIGd6aXAgYmVoYXZlcy4KLS5UUAotLkIgXC1rIC0ta2VlcAotS2VlcCAoZG9uJ3QgZGVsZXRlKSBpbnB1dCBmaWxlcyBkdXJpbmcgY29tcHJlc3Npb24KLW9yIGRlY29tcHJlc3Npb24uCi0uVFAKLS5CIFwtcyAtLXNtYWxsCi1SZWR1Y2UgbWVtb3J5IHVzYWdlLCBmb3IgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24gYW5kIHRlc3RpbmcuICBGaWxlcwotYXJlIGRlY29tcHJlc3NlZCBhbmQgdGVzdGVkIHVzaW5nIGEgbW9kaWZpZWQgYWxnb3JpdGhtIHdoaWNoIG9ubHkKLXJlcXVpcmVzIDIuNSBieXRlcyBwZXIgYmxvY2sgYnl0ZS4gIFRoaXMgbWVhbnMgYW55IGZpbGUgY2FuIGJlCi1kZWNvbXByZXNzZWQgaW4gMjMwMGsgb2YgbWVtb3J5LCBhbGJlaXQgYXQgYWJvdXQgaGFsZiB0aGUgbm9ybWFsIHNwZWVkLgotCi1EdXJpbmcgY29tcHJlc3Npb24sIFwtcyBzZWxlY3RzIGEgYmxvY2sgc2l6ZSBvZiAyMDBrLCB3aGljaCBsaW1pdHMKLW1lbW9yeSB1c2UgdG8gYXJvdW5kIHRoZSBzYW1lIGZpZ3VyZSwgYXQgdGhlIGV4cGVuc2Ugb2YgeW91ciBjb21wcmVzc2lvbgotcmF0aW8uICBJbiBzaG9ydCwgaWYgeW91ciBtYWNoaW5lIGlzIGxvdyBvbiBtZW1vcnkgKDggbWVnYWJ5dGVzIG9yCi1sZXNzKSwgdXNlIFwtcyBmb3IgZXZlcnl0aGluZy4gIFNlZSBNRU1PUlkgTUFOQUdFTUVOVCBiZWxvdy4KLS5UUAotLkIgXC1xIC0tcXVpZXQKLVN1cHByZXNzIG5vbi1lc3NlbnRpYWwgd2FybmluZyBtZXNzYWdlcy4gIE1lc3NhZ2VzIHBlcnRhaW5pbmcgdG8KLUkvTyBlcnJvcnMgYW5kIG90aGVyIGNyaXRpY2FsIGV2ZW50cyB3aWxsIG5vdCBiZSBzdXBwcmVzc2VkLgotLlRQCi0uQiBcLXYgLS12ZXJib3NlCi1WZXJib3NlIG1vZGUgLS0gc2hvdyB0aGUgY29tcHJlc3Npb24gcmF0aW8gZm9yIGVhY2ggZmlsZSBwcm9jZXNzZWQuCi1GdXJ0aGVyIFwtdidzIGluY3JlYXNlIHRoZSB2ZXJib3NpdHkgbGV2ZWwsIHNwZXdpbmcgb3V0IGxvdHMgb2YKLWluZm9ybWF0aW9uIHdoaWNoIGlzIHByaW1hcmlseSBvZiBpbnRlcmVzdCBmb3IgZGlhZ25vc3RpYyBwdXJwb3Nlcy4KLS5UUAotLkIgXC1MIC0tbGljZW5zZSAtViAtLXZlcnNpb24KLURpc3BsYXkgdGhlIHNvZnR3YXJlIHZlcnNpb24sIGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuCi0uVFAKLS5CIFwtMSAob3IgXC1cLWZhc3QpIHRvIFwtOSAob3IgXC1cLWJlc3QpCi1TZXQgdGhlIGJsb2NrIHNpemUgdG8gMTAwIGssIDIwMCBrIC4uICA5MDAgayB3aGVuIGNvbXByZXNzaW5nLiAgSGFzIG5vCi1lZmZlY3Qgd2hlbiBkZWNvbXByZXNzaW5nLiAgU2VlIE1FTU9SWSBNQU5BR0VNRU5UIGJlbG93LgotVGhlIFwtXC1mYXN0IGFuZCBcLVwtYmVzdCBhbGlhc2VzIGFyZSBwcmltYXJpbHkgZm9yIEdOVSBnemlwIAotY29tcGF0aWJpbGl0eS4gIEluIHBhcnRpY3VsYXIsIFwtXC1mYXN0IGRvZXNuJ3QgbWFrZSB0aGluZ3MKLXNpZ25pZmljYW50bHkgZmFzdGVyLiAgCi1BbmQgXC1cLWJlc3QgbWVyZWx5IHNlbGVjdHMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLgotLlRQCi0uQiBcLS0KLVRyZWF0cyBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgYXMgZmlsZSBuYW1lcywgZXZlbiBpZiB0aGV5IHN0YXJ0Ci13aXRoIGEgZGFzaC4gIFRoaXMgaXMgc28geW91IGNhbiBoYW5kbGUgZmlsZXMgd2l0aCBuYW1lcyBiZWdpbm5pbmcKLXdpdGggYSBkYXNoLCBmb3IgZXhhbXBsZTogYnppcDIgXC0tIFwtbXlmaWxlbmFtZS4KLS5UUAotLkIgXC0tcmVwZXRpdGl2ZS1mYXN0IC0tcmVwZXRpdGl2ZS1iZXN0Ci1UaGVzZSBmbGFncyBhcmUgcmVkdW5kYW50IGluIHZlcnNpb25zIDAuOS41IGFuZCBhYm92ZS4gIFRoZXkgcHJvdmlkZWQKLXNvbWUgY29hcnNlIGNvbnRyb2wgb3ZlciB0aGUgYmVoYXZpb3VyIG9mIHRoZSBzb3J0aW5nIGFsZ29yaXRobSBpbgotZWFybGllciB2ZXJzaW9ucywgd2hpY2ggd2FzIHNvbWV0aW1lcyB1c2VmdWwuICAwLjkuNSBhbmQgYWJvdmUgaGF2ZSBhbgotaW1wcm92ZWQgYWxnb3JpdGhtIHdoaWNoIHJlbmRlcnMgdGhlc2UgZmxhZ3MgaXJyZWxldmFudC4KLQotLlNIIE1FTU9SWSBNQU5BR0VNRU5UCi0uSSBiemlwMiAKLWNvbXByZXNzZXMgbGFyZ2UgZmlsZXMgaW4gYmxvY2tzLiAgVGhlIGJsb2NrIHNpemUgYWZmZWN0cwotYm90aCB0aGUgY29tcHJlc3Npb24gcmF0aW8gYWNoaWV2ZWQsIGFuZCB0aGUgYW1vdW50IG9mIG1lbW9yeSBuZWVkZWQgZm9yCi1jb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbi4gIFRoZSBmbGFncyBcLTEgdGhyb3VnaCBcLTkKLXNwZWNpZnkgdGhlIGJsb2NrIHNpemUgdG8gYmUgMTAwLDAwMCBieXRlcyB0aHJvdWdoIDkwMCwwMDAgYnl0ZXMgKHRoZQotZGVmYXVsdCkgcmVzcGVjdGl2ZWx5LiAgQXQgZGVjb21wcmVzc2lvbiB0aW1lLCB0aGUgYmxvY2sgc2l6ZSB1c2VkIGZvcgotY29tcHJlc3Npb24gaXMgcmVhZCBmcm9tIHRoZSBoZWFkZXIgb2YgdGhlIGNvbXByZXNzZWQgZmlsZSwgYW5kCi0uSSBidW56aXAyCi10aGVuIGFsbG9jYXRlcyBpdHNlbGYganVzdCBlbm91Z2ggbWVtb3J5IHRvIGRlY29tcHJlc3MKLXRoZSBmaWxlLiAgU2luY2UgYmxvY2sgc2l6ZXMgYXJlIHN0b3JlZCBpbiBjb21wcmVzc2VkIGZpbGVzLCBpdCBmb2xsb3dzCi10aGF0IHRoZSBmbGFncyBcLTEgdG8gXC05IGFyZSBpcnJlbGV2YW50IHRvIGFuZCBzbyBpZ25vcmVkCi1kdXJpbmcgZGVjb21wcmVzc2lvbi4KLQotQ29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gcmVxdWlyZW1lbnRzLCAKLWluIGJ5dGVzLCBjYW4gYmUgZXN0aW1hdGVkIGFzOgotCi0gICAgICAgQ29tcHJlc3Npb246ICAgNDAwayArICggOCB4IGJsb2NrIHNpemUgKQotCi0gICAgICAgRGVjb21wcmVzc2lvbjogMTAwayArICggNCB4IGJsb2NrIHNpemUgKSwgb3IKLSAgICAgICAgICAgICAgICAgICAgICAxMDBrICsgKCAyLjUgeCBibG9jayBzaXplICkKLQotTGFyZ2VyIGJsb2NrIHNpemVzIGdpdmUgcmFwaWRseSBkaW1pbmlzaGluZyBtYXJnaW5hbCByZXR1cm5zLiAgTW9zdCBvZgotdGhlIGNvbXByZXNzaW9uIGNvbWVzIGZyb20gdGhlIGZpcnN0IHR3byBvciB0aHJlZSBodW5kcmVkIGsgb2YgYmxvY2sKLXNpemUsIGEgZmFjdCB3b3J0aCBiZWFyaW5nIGluIG1pbmQgd2hlbiB1c2luZwotLkkgYnppcDIKLW9uIHNtYWxsIG1hY2hpbmVzLgotSXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gYXBwcmVjaWF0ZSB0aGF0IHRoZSBkZWNvbXByZXNzaW9uIG1lbW9yeQotcmVxdWlyZW1lbnQgaXMgc2V0IGF0IGNvbXByZXNzaW9uIHRpbWUgYnkgdGhlIGNob2ljZSBvZiBibG9jayBzaXplLgotCi1Gb3IgZmlsZXMgY29tcHJlc3NlZCB3aXRoIHRoZSBkZWZhdWx0IDkwMGsgYmxvY2sgc2l6ZSwKLS5JIGJ1bnppcDIKLXdpbGwgcmVxdWlyZSBhYm91dCAzNzAwIGtieXRlcyB0byBkZWNvbXByZXNzLiAgVG8gc3VwcG9ydCBkZWNvbXByZXNzaW9uCi1vZiBhbnkgZmlsZSBvbiBhIDQgbWVnYWJ5dGUgbWFjaGluZSwgCi0uSSBidW56aXAyCi1oYXMgYW4gb3B0aW9uIHRvCi1kZWNvbXByZXNzIHVzaW5nIGFwcHJveGltYXRlbHkgaGFsZiB0aGlzIGFtb3VudCBvZiBtZW1vcnksIGFib3V0IDIzMDAKLWtieXRlcy4gIERlY29tcHJlc3Npb24gc3BlZWQgaXMgYWxzbyBoYWx2ZWQsIHNvIHlvdSBzaG91bGQgdXNlIHRoaXMKLW9wdGlvbiBvbmx5IHdoZXJlIG5lY2Vzc2FyeS4gIFRoZSByZWxldmFudCBmbGFnIGlzIC1zLgotCi1JbiBnZW5lcmFsLCB0cnkgYW5kIHVzZSB0aGUgbGFyZ2VzdCBibG9jayBzaXplIG1lbW9yeSBjb25zdHJhaW50cyBhbGxvdywKLXNpbmNlIHRoYXQgbWF4aW1pc2VzIHRoZSBjb21wcmVzc2lvbiBhY2hpZXZlZC4gIENvbXByZXNzaW9uIGFuZAotZGVjb21wcmVzc2lvbiBzcGVlZCBhcmUgdmlydHVhbGx5IHVuYWZmZWN0ZWQgYnkgYmxvY2sgc2l6ZS4KLQotQW5vdGhlciBzaWduaWZpY2FudCBwb2ludCBhcHBsaWVzIHRvIGZpbGVzIHdoaWNoIGZpdCBpbiBhIHNpbmdsZSBibG9jawotLS0gdGhhdCBtZWFucyBtb3N0IGZpbGVzIHlvdSdkIGVuY291bnRlciB1c2luZyBhIGxhcmdlIGJsb2NrIHNpemUuICBUaGUKLWFtb3VudCBvZiByZWFsIG1lbW9yeSB0b3VjaGVkIGlzIHByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiB0aGUgZmlsZSwKLXNpbmNlIHRoZSBmaWxlIGlzIHNtYWxsZXIgdGhhbiBhIGJsb2NrLiAgRm9yIGV4YW1wbGUsIGNvbXByZXNzaW5nIGEgZmlsZQotMjAsMDAwIGJ5dGVzIGxvbmcgd2l0aCB0aGUgZmxhZyAtOSB3aWxsIGNhdXNlIHRoZSBjb21wcmVzc29yIHRvCi1hbGxvY2F0ZSBhcm91bmQgNzYwMGsgb2YgbWVtb3J5LCBidXQgb25seSB0b3VjaCA0MDBrICsgMjAwMDAgKiA4ID0gNTYwCi1rYnl0ZXMgb2YgaXQuICBTaW1pbGFybHksIHRoZSBkZWNvbXByZXNzb3Igd2lsbCBhbGxvY2F0ZSAzNzAwayBidXQgb25seQotdG91Y2ggMTAwayArIDIwMDAwICogNCA9IDE4MCBrYnl0ZXMuCi0KLUhlcmUgaXMgYSB0YWJsZSB3aGljaCBzdW1tYXJpc2VzIHRoZSBtYXhpbXVtIG1lbW9yeSB1c2FnZSBmb3IgZGlmZmVyZW50Ci1ibG9jayBzaXplcy4gIEFsc28gcmVjb3JkZWQgaXMgdGhlIHRvdGFsIGNvbXByZXNzZWQgc2l6ZSBmb3IgMTQgZmlsZXMgb2YKLXRoZSBDYWxnYXJ5IFRleHQgQ29tcHJlc3Npb24gQ29ycHVzIHRvdGFsbGluZyAzLDE0MSw2MjIgYnl0ZXMuICBUaGlzCi1jb2x1bW4gZ2l2ZXMgc29tZSBmZWVsIGZvciBob3cgY29tcHJlc3Npb24gdmFyaWVzIHdpdGggYmxvY2sgc2l6ZS4KLVRoZXNlIGZpZ3VyZXMgdGVuZCB0byB1bmRlcnN0YXRlIHRoZSBhZHZhbnRhZ2Ugb2YgbGFyZ2VyIGJsb2NrIHNpemVzIGZvcgotbGFyZ2VyIGZpbGVzLCBzaW5jZSB0aGUgQ29ycHVzIGlzIGRvbWluYXRlZCBieSBzbWFsbGVyIGZpbGVzLgotCi0gICAgICAgICAgIENvbXByZXNzICAgRGVjb21wcmVzcyAgIERlY29tcHJlc3MgICBDb3JwdXMKLSAgICBGbGFnICAgICB1c2FnZSAgICAgIHVzYWdlICAgICAgIC1zIHVzYWdlICAgICBTaXplCi0KLSAgICAgLTEgICAgICAxMjAwayAgICAgICA1MDBrICAgICAgICAgMzUwayAgICAgIDkxNDcwNAotICAgICAtMiAgICAgIDIwMDBrICAgICAgIDkwMGsgICAgICAgICA2MDBrICAgICAgODc3NzAzCi0gICAgIC0zICAgICAgMjgwMGsgICAgICAxMzAwayAgICAgICAgIDg1MGsgICAgICA4NjAzMzgKLSAgICAgLTQgICAgICAzNjAwayAgICAgIDE3MDBrICAgICAgICAxMTAwayAgICAgIDg0Njg5OQotICAgICAtNSAgICAgIDQ0MDBrICAgICAgMjEwMGsgICAgICAgIDEzNTBrICAgICAgODQ1MTYwCi0gICAgIC02ICAgICAgNTIwMGsgICAgICAyNTAwayAgICAgICAgMTYwMGsgICAgICA4Mzg2MjYKLSAgICAgLTcgICAgICA2MTAwayAgICAgIDI5MDBrICAgICAgICAxODUwayAgICAgIDgzNDA5NgotICAgICAtOCAgICAgIDY4MDBrICAgICAgMzMwMGsgICAgICAgIDIxMDBrICAgICAgODI4NjQyCi0gICAgIC05ICAgICAgNzYwMGsgICAgICAzNzAwayAgICAgICAgMjM1MGsgICAgICA4Mjg2NDIKLQotLlNIIFJFQ09WRVJJTkcgREFUQSBGUk9NIERBTUFHRUQgRklMRVMKLS5JIGJ6aXAyCi1jb21wcmVzc2VzIGZpbGVzIGluIGJsb2NrcywgdXN1YWxseSA5MDBrYnl0ZXMgbG9uZy4gIEVhY2gKLWJsb2NrIGlzIGhhbmRsZWQgaW5kZXBlbmRlbnRseS4gIElmIGEgbWVkaWEgb3IgdHJhbnNtaXNzaW9uIGVycm9yIGNhdXNlcwotYSBtdWx0aS1ibG9jayAuYnoyCi1maWxlIHRvIGJlY29tZSBkYW1hZ2VkLCBpdCBtYXkgYmUgcG9zc2libGUgdG8KLXJlY292ZXIgZGF0YSBmcm9tIHRoZSB1bmRhbWFnZWQgYmxvY2tzIGluIHRoZSBmaWxlLgotCi1UaGUgY29tcHJlc3NlZCByZXByZXNlbnRhdGlvbiBvZiBlYWNoIGJsb2NrIGlzIGRlbGltaXRlZCBieSBhIDQ4LWJpdAotcGF0dGVybiwgd2hpY2ggbWFrZXMgaXQgcG9zc2libGUgdG8gZmluZCB0aGUgYmxvY2sgYm91bmRhcmllcyB3aXRoCi1yZWFzb25hYmxlIGNlcnRhaW50eS4gIEVhY2ggYmxvY2sgYWxzbyBjYXJyaWVzIGl0cyBvd24gMzItYml0IENSQywgc28KLWRhbWFnZWQgYmxvY2tzIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGZyb20gdW5kYW1hZ2VkIG9uZXMuCi0KLS5JIGJ6aXAycmVjb3ZlcgotaXMgYSBzaW1wbGUgcHJvZ3JhbSB3aG9zZSBwdXJwb3NlIGlzIHRvIHNlYXJjaCBmb3IKLWJsb2NrcyBpbiAuYnoyIGZpbGVzLCBhbmQgd3JpdGUgZWFjaCBibG9jayBvdXQgaW50byBpdHMgb3duIC5iejIgCi1maWxlLiAgWW91IGNhbiB0aGVuIHVzZQotLkkgYnppcDIgCi1cLXQKLXRvIHRlc3QgdGhlCi1pbnRlZ3JpdHkgb2YgdGhlIHJlc3VsdGluZyBmaWxlcywgYW5kIGRlY29tcHJlc3MgdGhvc2Ugd2hpY2ggYXJlCi11bmRhbWFnZWQuCi0KLS5JIGJ6aXAycmVjb3ZlcgotdGFrZXMgYSBzaW5nbGUgYXJndW1lbnQsIHRoZSBuYW1lIG9mIHRoZSBkYW1hZ2VkIGZpbGUsIAotYW5kIHdyaXRlcyBhIG51bWJlciBvZiBmaWxlcyAicmVjMDAwMDFmaWxlLmJ6MiIsCi0icmVjMDAwMDJmaWxlLmJ6MiIsIGV0YywgY29udGFpbmluZyB0aGUgIGV4dHJhY3RlZCAgYmxvY2tzLgotVGhlICBvdXRwdXQgIGZpbGVuYW1lcyAgYXJlICBkZXNpZ25lZCAgc28gIHRoYXQgdGhlIHVzZSBvZgotd2lsZGNhcmRzIGluIHN1YnNlcXVlbnQgcHJvY2Vzc2luZyAtLSBmb3IgZXhhbXBsZSwgIAotImJ6aXAyIC1kYyAgcmVjKmZpbGUuYnoyID4gcmVjb3ZlcmVkX2RhdGEiIC0tIHByb2Nlc3NlcyB0aGUgZmlsZXMgaW4KLXRoZSBjb3JyZWN0IG9yZGVyLgotCi0uSSBiemlwMnJlY292ZXIKLXNob3VsZCBiZSBvZiBtb3N0IHVzZSBkZWFsaW5nIHdpdGggbGFyZ2UgLmJ6MgotZmlsZXMsICBhcyAgdGhlc2Ugd2lsbCBjb250YWluIG1hbnkgYmxvY2tzLiAgSXQgaXMgY2xlYXJseQotZnV0aWxlIHRvIHVzZSBpdCBvbiBkYW1hZ2VkIHNpbmdsZS1ibG9jayAgZmlsZXMsICBzaW5jZSAgYQotZGFtYWdlZCAgYmxvY2sgIGNhbm5vdCAgYmUgcmVjb3ZlcmVkLiAgSWYgeW91IHdpc2ggdG8gbWluaW1pc2UgCi1hbnkgcG90ZW50aWFsIGRhdGEgbG9zcyB0aHJvdWdoIG1lZGlhICBvciAgdHJhbnNtaXNzaW9uIGVycm9ycywgCi15b3UgbWlnaHQgY29uc2lkZXIgY29tcHJlc3Npbmcgd2l0aCBhIHNtYWxsZXIKLWJsb2NrIHNpemUuCi0KLS5TSCBQRVJGT1JNQU5DRSBOT1RFUwotVGhlIHNvcnRpbmcgcGhhc2Ugb2YgY29tcHJlc3Npb24gZ2F0aGVycyB0b2dldGhlciBzaW1pbGFyIHN0cmluZ3MgaW4gdGhlCi1maWxlLiAgQmVjYXVzZSBvZiB0aGlzLCBmaWxlcyBjb250YWluaW5nIHZlcnkgbG9uZyBydW5zIG9mIHJlcGVhdGVkCi1zeW1ib2xzLCBsaWtlICJhYWJhYWJhYWJhYWIgLi4uIiAgKHJlcGVhdGVkIHNldmVyYWwgaHVuZHJlZCB0aW1lcykgbWF5Ci1jb21wcmVzcyBtb3JlIHNsb3dseSB0aGFuIG5vcm1hbC4gIFZlcnNpb25zIDAuOS41IGFuZCBhYm92ZSBmYXJlIG11Y2gKLWJldHRlciB0aGFuIHByZXZpb3VzIHZlcnNpb25zIGluIHRoaXMgcmVzcGVjdC4gIFRoZSByYXRpbyBiZXR3ZWVuCi13b3JzdC1jYXNlIGFuZCBhdmVyYWdlLWNhc2UgY29tcHJlc3Npb24gdGltZSBpcyBpbiB0aGUgcmVnaW9uIG9mIDEwOjEuCi1Gb3IgcHJldmlvdXMgdmVyc2lvbnMsIHRoaXMgZmlndXJlIHdhcyBtb3JlIGxpa2UgMTAwOjEuICBZb3UgY2FuIHVzZSB0aGUKLVwtdnZ2diBvcHRpb24gdG8gbW9uaXRvciBwcm9ncmVzcyBpbiBncmVhdCBkZXRhaWwsIGlmIHlvdSB3YW50LgotCi1EZWNvbXByZXNzaW9uIHNwZWVkIGlzIHVuYWZmZWN0ZWQgYnkgdGhlc2UgcGhlbm9tZW5hLgotCi0uSSBiemlwMgotdXN1YWxseSBhbGxvY2F0ZXMgc2V2ZXJhbCBtZWdhYnl0ZXMgb2YgbWVtb3J5IHRvIG9wZXJhdGUKLWluLCBhbmQgdGhlbiBjaGFyZ2VzIGFsbCBvdmVyIGl0IGluIGEgZmFpcmx5IHJhbmRvbSBmYXNoaW9uLiAgVGhpcyBtZWFucwotdGhhdCBwZXJmb3JtYW5jZSwgYm90aCBmb3IgY29tcHJlc3NpbmcgYW5kIGRlY29tcHJlc3NpbmcsIGlzIGxhcmdlbHkKLWRldGVybWluZWQgYnkgdGhlIHNwZWVkIGF0IHdoaWNoIHlvdXIgbWFjaGluZSBjYW4gc2VydmljZSBjYWNoZSBtaXNzZXMuCi1CZWNhdXNlIG9mIHRoaXMsIHNtYWxsIGNoYW5nZXMgdG8gdGhlIGNvZGUgdG8gcmVkdWNlIHRoZSBtaXNzIHJhdGUgaGF2ZQotYmVlbiBvYnNlcnZlZCB0byBnaXZlIGRpc3Byb3BvcnRpb25hdGVseSBsYXJnZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCi1JIGltYWdpbmUgCi0uSSBiemlwMgotd2lsbCBwZXJmb3JtIGJlc3Qgb24gbWFjaGluZXMgd2l0aCB2ZXJ5IGxhcmdlIGNhY2hlcy4KLQotLlNIIENBVkVBVFMKLUkvTyBlcnJvciBtZXNzYWdlcyBhcmUgbm90IGFzIGhlbHBmdWwgYXMgdGhleSBjb3VsZCBiZS4KLS5JIGJ6aXAyCi10cmllcyBoYXJkIHRvIGRldGVjdCBJL08gZXJyb3JzIGFuZCBleGl0IGNsZWFubHksIGJ1dCB0aGUgZGV0YWlscyBvZgotd2hhdCB0aGUgcHJvYmxlbSBpcyBzb21ldGltZXMgc2VlbSByYXRoZXIgbWlzbGVhZGluZy4KLQotVGhpcyBtYW51YWwgcGFnZSBwZXJ0YWlucyB0byB2ZXJzaW9uIDEuMC40IG9mCi0uSSBiemlwMi4gIAotQ29tcHJlc3NlZCBkYXRhIGNyZWF0ZWQgYnkgdGhpcyB2ZXJzaW9uIGlzIGVudGlyZWx5IGZvcndhcmRzIGFuZAotYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aCB0aGUgcHJldmlvdXMgcHVibGljIHJlbGVhc2VzLCB2ZXJzaW9ucwotMC4xcGwyLCAwLjkuMCwgMC45LjUsIDEuMC4wLCAxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCBidXQgd2l0aCB0aGUgZm9sbG93aW5nCi1leGNlcHRpb246IDAuOS4wIGFuZCBhYm92ZSBjYW4gY29ycmVjdGx5IGRlY29tcHJlc3MgbXVsdGlwbGUKLWNvbmNhdGVuYXRlZCBjb21wcmVzc2VkIGZpbGVzLiAgMC4xcGwyIGNhbm5vdCBkbyB0aGlzOyBpdCB3aWxsIHN0b3AKLWFmdGVyIGRlY29tcHJlc3NpbmcganVzdCB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgc3RyZWFtLgotCi0uSSBiemlwMnJlY292ZXIKLXZlcnNpb25zIHByaW9yIHRvIDEuMC4yIHVzZWQgMzItYml0IGludGVnZXJzIHRvIHJlcHJlc2VudAotYml0IHBvc2l0aW9ucyBpbiBjb21wcmVzc2VkIGZpbGVzLCBzbyB0aGV5IGNvdWxkIG5vdCBoYW5kbGUgY29tcHJlc3NlZAotZmlsZXMgbW9yZSB0aGFuIDUxMiBtZWdhYnl0ZXMgbG9uZy4gIFZlcnNpb25zIDEuMC4yIGFuZCBhYm92ZSB1c2UKLTY0LWJpdCBpbnRzIG9uIHNvbWUgcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgdGhlbSAoR05VIHN1cHBvcnRlZAotdGFyZ2V0cywgYW5kIFdpbmRvd3MpLiAgVG8gZXN0YWJsaXNoIHdoZXRoZXIgb3Igbm90IGJ6aXAycmVjb3ZlciB3YXMKLWJ1aWx0IHdpdGggc3VjaCBhIGxpbWl0YXRpb24sIHJ1biBpdCB3aXRob3V0IGFyZ3VtZW50cy4gIEluIGFueSBldmVudAoteW91IGNhbiBidWlsZCB5b3Vyc2VsZiBhbiB1bmxpbWl0ZWQgdmVyc2lvbiBpZiB5b3UgY2FuIHJlY29tcGlsZSBpdAotd2l0aCBNYXliZVVJbnQ2NCBzZXQgdG8gYmUgYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIuCi0KLQotCi0uU0ggQVVUSE9SCi1KdWxpYW4gU2V3YXJkLCBqc2V3YXJkYnppcC5vcmcuCi0KLWh0dHA6Ly93d3cuYnppcC5vcmcKLQotVGhlIGlkZWFzIGVtYm9kaWVkIGluCi0uSSBiemlwMgotYXJlIGR1ZSB0byAoYXQgbGVhc3QpIHRoZSBmb2xsb3dpbmcKLXBlb3BsZTogTWljaGFlbCBCdXJyb3dzIGFuZCBEYXZpZCBXaGVlbGVyIChmb3IgdGhlIGJsb2NrIHNvcnRpbmcKLXRyYW5zZm9ybWF0aW9uKSwgRGF2aWQgV2hlZWxlciAoYWdhaW4sIGZvciB0aGUgSHVmZm1hbiBjb2RlciksIFBldGVyCi1GZW53aWNrIChmb3IgdGhlIHN0cnVjdHVyZWQgY29kaW5nIG1vZGVsIGluIHRoZSBvcmlnaW5hbAotLkkgYnppcCwKLWFuZCBtYW55IHJlZmluZW1lbnRzKSwgYW5kIEFsaXN0YWlyIE1vZmZhdCwgUmFkZm9yZCBOZWFsIGFuZCBJYW4gV2l0dGVuCi0oZm9yIHRoZSBhcml0aG1ldGljIGNvZGVyIGluIHRoZSBvcmlnaW5hbAotLkkgYnppcCkuICAKLUkgYW0gbXVjaAotaW5kZWJ0ZWQgZm9yIHRoZWlyIGhlbHAsIHN1cHBvcnQgYW5kIGFkdmljZS4gIFNlZSB0aGUgbWFudWFsIGluIHRoZQotc291cmNlIGRpc3RyaWJ1dGlvbiBmb3IgcG9pbnRlcnMgdG8gc291cmNlcyBvZiBkb2N1bWVudGF0aW9uLiAgQ2hyaXN0aWFuCi12b24gUm9xdWVzIGVuY291cmFnZWQgbWUgdG8gbG9vayBmb3IgZmFzdGVyIHNvcnRpbmcgYWxnb3JpdGhtcywgc28gYXMgdG8KLXNwZWVkIHVwIGNvbXByZXNzaW9uLiAgQmVsYSBMdWJraW4gZW5jb3VyYWdlZCBtZSB0byBpbXByb3ZlIHRoZQotd29yc3QtY2FzZSBjb21wcmVzc2lvbiBwZXJmb3JtYW5jZS4gIAotRG9ubmEgUm9iaW5zb24gWE1MaXNlZCB0aGUgZG9jdW1lbnRhdGlvbi4KLVRoZSBieiogc2NyaXB0cyBhcmUgZGVyaXZlZCBmcm9tIHRob3NlIG9mIEdOVSBnemlwLgotTWFueSBwZW9wbGUgc2VudCBwYXRjaGVzLCBoZWxwZWQKLXdpdGggcG9ydGFiaWxpdHkgcHJvYmxlbXMsIGxlbnQgbWFjaGluZXMsIGdhdmUgYWR2aWNlIGFuZCB3ZXJlIGdlbmVyYWxseQotaGVscGZ1bC4KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6aXAyLjEucHJlZm9ybWF0dGVkIGIvVXRpbGl0aWVzL2NtYnppcDIvYnppcDIuMS5wcmVmb3JtYXR0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZTE2ZTUuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvYnppcDIuMS5wcmVmb3JtYXR0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSwzOTkgKzAsMCBAQAotYnppcDIoMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnppcDIoMSkKLQotCi0KLU4ITkEIQU0ITUUIRQotICAgICAgIGJ6aXAyLCBidW56aXAyIOKIkiBhIGJsb2Nr4oCQc29ydGluZyBmaWxlIGNvbXByZXNzb3IsIHYxLjAuNAotICAgICAgIGJ6Y2F0IOKIkiBkZWNvbXByZXNzZXMgZmlsZXMgdG8gc3Rkb3V0Ci0gICAgICAgYnppcDJyZWNvdmVyIOKIkiByZWNvdmVycyBkYXRhIGZyb20gZGFtYWdlZCBiemlwMiBmaWxlcwotCi0KLVMIU1kIWU4ITk8IT1AIUFMIU0kISVMIUwotICAgICAgIGIIYnoIemkIaXAIcDIIMiBbIOKIkgjiiJJjCGNkCGRmCGZrCGtxCHFzCHN0CHR2CHZ6CHpWCFZMCEwxCDEyCDIzCDM0CDQ1CDU2CDY3CDc4CDg5CDkgXSBbIF8IZl8IaV8IbF8IZV8Ibl8IYV8IbV8IZV8IcyBfCC5fCC5fCC4gIF0KLSAgICAgICBiCGJ1CHVuCG56CHppCGlwCHAyCDIgWyDiiJII4oiSZghmawhrdgh2cwhzVghWTAhMIF0gWyBfCGZfCGlfCGxfCGVfCG5fCGFfCG1fCGVfCHMgXwguXwguXwguICBdCi0gICAgICAgYghiegh6YwhjYQhhdAh0IFsg4oiSCOKIknMIcyBdIFsgXwhmXwhpXwhsXwhlXwhuXwhhXwhtXwhlXwhzIF8ILl8ILl8ILiAgXQotICAgICAgIGIIYnoIemkIaXAIcDIIMnIIcmUIZWMIY28Ib3YIdmUIZXIIciBfCGZfCGlfCGxfCGVfCG5fCGFfCG1fCGUKLQotCi1ECERFCEVTCFNDCENSCFJJCElQCFBUCFRJCElPCE9OCE4KLSAgICAgICBfCGJfCHpfCGlfCHBfCDIgIGNvbXByZXNzZXMgIGZpbGVzICB1c2luZyAgdGhlIEJ1cnJvd3PigJBXaGVlbGVyIGJsb2NrCi0gICAgICAgc29ydGluZyB0ZXh0IGNvbXByZXNzaW9uIGFsZ29yaXRobSwgIGFuZCAgSHVmZm1hbiAgY29kaW5nLgotICAgICAgIENvbXByZXNzaW9uICBpcyAgZ2VuZXJhbGx5ICBjb25zaWRlcmFibHkgIGJldHRlciB0aGFuIHRoYXQKLSAgICAgICBhY2hpZXZlZCBieSBtb3JlIGNvbnZlbnRpb25hbCBMWjc3L0xaNzjigJBiYXNlZCBjb21wcmVzc29ycywKLSAgICAgICBhbmQgIGFwcHJvYWNoZXMgIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUFBNIGZhbWlseSBvZiBzdGHCrQotICAgICAgIHRpc3RpY2FsIGNvbXByZXNzb3JzLgotCi0gICAgICAgVGhlIGNvbW1hbmTigJBsaW5lIG9wdGlvbnMgYXJlIGRlbGliZXJhdGVseSB2ZXJ5IHNpbWlsYXIgIHRvCi0gICAgICAgdGhvc2Ugb2YgXwhHXwhOXwhVIF8IZ18Iel8IaV8IcF8ILCBidXQgdGhleSBhcmUgbm90IGlkZW50aWNhbC4KLQotICAgICAgIF8IYl8Iel8IaV8IcF8IMiAgZXhwZWN0cyAgYSBsaXN0IG9mIGZpbGUgbmFtZXMgdG8gYWNjb21wYW55IHRoZSBjb23CrQotICAgICAgIG1hbmTigJBsaW5lIGZsYWdzLiAgRWFjaCBmaWxlIGlzIHJlcGxhY2VkICBieSAgYSAgY29tcHJlc3NlZAotICAgICAgIHZlcnNpb24gIG9mICBpdHNlbGYsICB3aXRoICB0aGUgIG5hbWUgIm9yaWdpbmFsX25hbWUuYnoyIi4KLSAgICAgICBFYWNoIGNvbXByZXNzZWQgZmlsZSBoYXMgdGhlIHNhbWUgbW9kaWZpY2F0aW9uIGRhdGUsICBwZXLCrQotICAgICAgIG1pc3Npb25zLCBhbmQsIHdoZW4gcG9zc2libGUsIG93bmVyc2hpcCBhcyB0aGUgY29ycmVzcG9uZMKtCi0gICAgICAgaW5nIG9yaWdpbmFsLCBzbyB0aGF0IHRoZXNlIHByb3BlcnRpZXMgIGNhbiAgYmUgIGNvcnJlY3RseQotICAgICAgIHJlc3RvcmVkICBhdCAgZGVjb21wcmVzc2lvbiAgdGltZS4gICBGaWxlIG5hbWUgaGFuZGxpbmcgaXMKLSAgICAgICBuYWl2ZSBpbiB0aGUgc2Vuc2UgdGhhdCB0aGVyZSBpcyBubyBtZWNoYW5pc20gZm9yIHByZXNlcnbCrQotICAgICAgIGluZyAgb3JpZ2luYWwgZmlsZSBuYW1lcywgcGVybWlzc2lvbnMsIG93bmVyc2hpcHMgb3IgZGF0ZXMKLSAgICAgICBpbiBmaWxlc3lzdGVtcyB3aGljaCBsYWNrIHRoZXNlIGNvbmNlcHRzLCBvciBoYXZlICBzZXJpb3VzCi0gICAgICAgZmlsZSBuYW1lIGxlbmd0aCByZXN0cmljdGlvbnMsIHN1Y2ggYXMgTVPigJBET1MuCi0KLSAgICAgICBfCGJfCHpfCGlfCHBfCDIgIGFuZCAgXwhiXwh1XwhuXwh6XwhpXwhwXwgyIHdpbGwgYnkgZGVmYXVsdCBub3Qgb3ZlcndyaXRlIGV4aXN0aW5nCi0gICAgICAgZmlsZXMuICBJZiB5b3Ugd2FudCB0aGlzIHRvIGhhcHBlbiwgc3BlY2lmeSB0aGUg4oiSZiBmbGFnLgotCi0gICAgICAgSWYgbm8gZmlsZSBuYW1lcyAgYXJlICBzcGVjaWZpZWQsICBfCGJfCHpfCGlfCHBfCDIgIGNvbXByZXNzZXMgIGZyb20KLSAgICAgICBzdGFuZGFyZCAgaW5wdXQgIHRvICBzdGFuZGFyZCBvdXRwdXQuICBJbiB0aGlzIGNhc2UsIF8IYl8Iel8IaV8IcF8IMgotICAgICAgIHdpbGwgZGVjbGluZSB0byB3cml0ZSBjb21wcmVzc2VkIG91dHB1dCB0byBhIHRlcm1pbmFsLCAgYXMKLSAgICAgICB0aGlzICB3b3VsZCAgYmUgIGVudGlyZWx5ICBpbmNvbXByZWhlbnNpYmxlICBhbmQgdGhlcmVmb3JlCi0gICAgICAgcG9pbnRsZXNzLgotCi0gICAgICAgXwhiXwh1XwhuXwh6XwhpXwhwXwgyIChvciBfCGJfCHpfCGlfCHBfCDIgXwjiiJJfCGRfCCkgZGVjb21wcmVzc2VzICBhbGwgIHNwZWNpZmllZCAgZmlsZXMuCi0gICAgICAgRmlsZXMgd2hpY2ggd2VyZSBub3QgY3JlYXRlZCBieSBfCGJfCHpfCGlfCHBfCDIgd2lsbCBiZSBkZXRlY3RlZCBhbmQKLSAgICAgICBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzc3VlZC4gIF8IYl8Iel8IaV8IcF8IMiAgYXR0ZW1wdHMgIHRvICBndWVzcwotICAgICAgIHRoZSAgZmlsZW5hbWUgIGZvciAgdGhlIGRlY29tcHJlc3NlZCBmaWxlIGZyb20gdGhhdCBvZiB0aGUKLSAgICAgICBjb21wcmVzc2VkIGZpbGUgYXMgZm9sbG93czoKLQotICAgICAgICAgICAgICBmaWxlbmFtZS5iejIgICAgYmVjb21lcyAgIGZpbGVuYW1lCi0gICAgICAgICAgICAgIGZpbGVuYW1lLmJ6ICAgICBiZWNvbWVzICAgZmlsZW5hbWUKLSAgICAgICAgICAgICAgZmlsZW5hbWUudGJ6MiAgIGJlY29tZXMgICBmaWxlbmFtZS50YXIKLSAgICAgICAgICAgICAgZmlsZW5hbWUudGJ6ICAgIGJlY29tZXMgICBmaWxlbmFtZS50YXIKLSAgICAgICAgICAgICAgYW55b3RoZXJuYW1lICAgIGJlY29tZXMgICBhbnlvdGhlcm5hbWUub3V0Ci0KLSAgICAgICBJZiB0aGUgZmlsZSBkb2VzIG5vdCBlbmQgaW4gb25lIG9mIHRoZSByZWNvZ25pc2VkIGVuZGluZ3MsCi0gICAgICAgXwguXwhiXwh6XwgyXwgsICBfCC5fCGJfCHpfCCwgIF8ILl8IdF8IYl8Iel8IMiBvciBfCC5fCHRfCGJfCHpfCCwgXwhiXwh6XwhpXwhwXwgyIGNvbXBsYWlucyB0aGF0IGl0IGNhbm5vdAotICAgICAgIGd1ZXNzIHRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBmaWxlLCBhbmQgdXNlcyB0aGUgb3JpZ2luYWwKLSAgICAgICBuYW1lIHdpdGggXwguXwhvXwh1Xwh0IGFwcGVuZGVkLgotCi0gICAgICAgQXMgIHdpdGggY29tcHJlc3Npb24sIHN1cHBseWluZyBubyBmaWxlbmFtZXMgY2F1c2VzIGRlY29twq0KLSAgICAgICBwcmVzc2lvbiBmcm9tIHN0YW5kYXJkIGlucHV0IHRvIHN0YW5kYXJkIG91dHB1dC4KLQotICAgICAgIF8IYl8IdV8Ibl8Iel8IaV8IcF8IMiB3aWxsIGNvcnJlY3RseSBkZWNvbXByZXNzIGEgZmlsZSB3aGljaCBpcyB0aGUgY29uwq0KLSAgICAgICBjYXRlbmF0aW9uIG9mIHR3byBvciBtb3JlIGNvbXByZXNzZWQgZmlsZXMuICBUaGUgcmVzdWx0IGlzCi0gICAgICAgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIGNvcnJlc3BvbmRpbmcgdW5jb21wcmVzc2VkIGZpbGVzLgotICAgICAgIEludGVncml0eSB0ZXN0aW5nICjiiJJ0KSBvZiBjb25jYXRlbmF0ZWQgY29tcHJlc3NlZCBmaWxlcyBpcwotICAgICAgIGFsc28gc3VwcG9ydGVkLgotCi0gICAgICAgWW91IGNhbiBhbHNvIGNvbXByZXNzIG9yIGRlY29tcHJlc3MgZmlsZXMgdG8gdGhlICBzdGFuZGFyZAotICAgICAgIG91dHB1dCAgYnkgZ2l2aW5nIHRoZSDiiJJjIGZsYWcuICBNdWx0aXBsZSBmaWxlcyBtYXkgYmUgY29twq0KLSAgICAgICBwcmVzc2VkIGFuZCBkZWNvbXByZXNzZWQgbGlrZSB0aGlzLiAgVGhlIHJlc3VsdGluZyBvdXRwdXRzCi0gICAgICAgYXJlICBmZWQgIHNlcXVlbnRpYWxseSB0byBzdGRvdXQuICBDb21wcmVzc2lvbiBvZiBtdWx0aXBsZQotICAgICAgIGZpbGVzIGluIHRoaXMgbWFubmVyIGdlbmVyYXRlcyBhIHN0cmVhbSBjb250YWluaW5nICBtdWx0acKtCi0gICAgICAgcGxlIGNvbXByZXNzZWQgZmlsZSByZXByZXNlbnRhdGlvbnMuICBTdWNoIGEgc3RyZWFtIGNhbiBiZQotICAgICAgIGRlY29tcHJlc3NlZCBjb3JyZWN0bHkgb25seSAgYnkgIF8IYl8Iel8IaV8IcF8IMiAgdmVyc2lvbiAgMC45LjAgIG9yCi0gICAgICAgbGF0ZXIuICAgRWFybGllciAgdmVyc2lvbnMgb2YgXwhiXwh6XwhpXwhwXwgyIHdpbGwgc3RvcCBhZnRlciBkZWNvbcKtCi0gICAgICAgcHJlc3NpbmcgdGhlIGZpcnN0IGZpbGUgaW4gdGhlIHN0cmVhbS4KLQotICAgICAgIF8IYl8Iel8IY18IYV8IdCAob3IgXwhiXwh6XwhpXwhwXwgyIF8I4oCQXwhkXwhjXwgpIGRlY29tcHJlc3NlcyBhbGwgc3BlY2lmaWVkICBmaWxlcyAgdG8KLSAgICAgICB0aGUgc3RhbmRhcmQgb3V0cHV0LgotCi0gICAgICAgXwhiXwh6XwhpXwhwXwgyICB3aWxsICByZWFkIGFyZ3VtZW50cyBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLSAgICAgICBfCEJfCFpfCElfCFBfCDIgYW5kIF8IQl8IWl8ISV8IUF8ILCBpbiAgdGhhdCAgb3JkZXIsICBhbmQgIHdpbGwgIHByb2Nlc3MgIHRoZW0KLSAgICAgICBiZWZvcmUgIGFueSAgYXJndW1lbnRzICByZWFkICBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBUaGlzCi0gICAgICAgZ2l2ZXMgYSBjb252ZW5pZW50IHdheSB0byBzdXBwbHkgZGVmYXVsdCBhcmd1bWVudHMuCi0KLSAgICAgICBDb21wcmVzc2lvbiBpcyBhbHdheXMgcGVyZm9ybWVkLCBldmVuICBpZiAgdGhlICBjb21wcmVzc2VkCi0gICAgICAgZmlsZSAgaXMgc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gdGhlIG9yaWdpbmFsLiAgRmlsZXMgb2YgbGVzcwotICAgICAgIHRoYW4gYWJvdXQgb25lIGh1bmRyZWQgYnl0ZXMgdGVuZCB0byBnZXQgbGFyZ2VyLCBzaW5jZSB0aGUKLSAgICAgICBjb21wcmVzc2lvbiAgbWVjaGFuaXNtICBoYXMgIGEgIGNvbnN0YW50ICBvdmVyaGVhZCAgaW4gdGhlCi0gICAgICAgcmVnaW9uIG9mIDUwIGJ5dGVzLiAgUmFuZG9tIGRhdGEgKGluY2x1ZGluZyB0aGUgb3V0cHV0ICBvZgotICAgICAgIG1vc3QgIGZpbGUgIGNvbXByZXNzb3JzKSAgaXMgIGNvZGVkIGF0IGFib3V0IDguMDUgYml0cyBwZXIKLSAgICAgICBieXRlLCBnaXZpbmcgYW4gZXhwYW5zaW9uIG9mIGFyb3VuZCAwLjUlLgotCi0gICAgICAgQXMgYSBzZWxm4oCQY2hlY2sgZm9yIHlvdXIgIHByb3RlY3Rpb24sICBfCGJfCHpfCGlfCHBfCDIgIHVzZXMgIDMy4oCQYml0Ci0gICAgICAgQ1JDcyAgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29tcHJlc3NlZCB2ZXJzaW9uIG9mIGEgZmlsZQotICAgICAgIGlzIGlkZW50aWNhbCB0byB0aGUgb3JpZ2luYWwuICBUaGlzIGd1YXJkcyBhZ2FpbnN0IGNvcnJ1cMKtCi0gICAgICAgdGlvbiAgb2YgIHRoZSBjb21wcmVzc2VkIGRhdGEsIGFuZCBhZ2FpbnN0IHVuZGV0ZWN0ZWQgYnVncwotICAgICAgIGluIF8IYl8Iel8IaV8IcF8IMiAoaG9wZWZ1bGx5IHZlcnkgdW5saWtlbHkpLiAgVGhlIGNoYW5jZXMgIG9mICBkYXRhCi0gICAgICAgY29ycnVwdGlvbiAgZ29pbmcgIHVuZGV0ZWN0ZWQgIGlzICBtaWNyb3Njb3BpYywgIGFib3V0IG9uZQotICAgICAgIGNoYW5jZSBpbiBmb3VyIGJpbGxpb24gZm9yIGVhY2ggZmlsZSBwcm9jZXNzZWQuICBCZSBhd2FyZSwKLSAgICAgICB0aG91Z2gsICB0aGF0ICB0aGUgIGNoZWNrIG9jY3VycyB1cG9uIGRlY29tcHJlc3Npb24sIHNvIGl0Ci0gICAgICAgY2FuIG9ubHkgdGVsbCB5b3UgdGhhdCBzb21ldGhpbmcgaXMgd3JvbmcuICBJdCBjYW7igJl0ICBoZWxwCi0gICAgICAgeW91ICByZWNvdmVyICB0aGUgb3JpZ2luYWwgdW5jb21wcmVzc2VkIGRhdGEuICBZb3UgY2FuIHVzZQotICAgICAgIF8IYl8Iel8IaV8IcF8IMl8Icl8IZV8IY18Ib18Idl8IZV8IciB0byB0cnkgdG8gcmVjb3ZlciBkYXRhIGZyb20gZGFtYWdlZCBmaWxlcy4KLQotICAgICAgIFJldHVybiB2YWx1ZXM6IDAgZm9yIGEgbm9ybWFsIGV4aXQsICAxICBmb3IgIGVudmlyb25tZW50YWwKLSAgICAgICBwcm9ibGVtcyAgKGZpbGUgbm90IGZvdW5kLCBpbnZhbGlkIGZsYWdzLCBJL08gZXJyb3JzLCAmYyksCi0gICAgICAgMiB0byBpbmRpY2F0ZSBhIGNvcnJ1cHQgY29tcHJlc3NlZCBmaWxlLCAzIGZvciBhbiBpbnRlcm5hbAotICAgICAgIGNvbnNpc3RlbmN5IGVycm9yIChlZywgYnVnKSB3aGljaCBjYXVzZWQgXwhiXwh6XwhpXwhwXwgyIHRvIHBhbmljLgotCi0KLU8IT1AIUFQIVEkISU8IT04ITlMIUwotICAgICAgIOKIkgjiiJJjCGMg4oCQCOKAkOKAkAjigJBzCHN0CHRkCGRvCG91CHV0CHQKLSAgICAgICAgICAgICAgQ29tcHJlc3Mgb3IgZGVjb21wcmVzcyB0byBzdGFuZGFyZCBvdXRwdXQuCi0KLSAgICAgICDiiJII4oiSZAhkIOKAkAjigJDigJAI4oCQZAhkZQhlYwhjbwhvbQhtcAhwcghyZQhlcwhzcwhzCi0gICAgICAgICAgICAgIEZvcmNlICBkZWNvbXByZXNzaW9uLiAgXwhiXwh6XwhpXwhwXwgyXwgsIF8IYl8IdV8Ibl8Iel8IaV8IcF8IMiBhbmQgXwhiXwh6XwhjXwhhXwh0IGFyZQotICAgICAgICAgICAgICByZWFsbHkgdGhlIHNhbWUgcHJvZ3JhbSwgIGFuZCAgdGhlICBkZWNpc2lvbiAgYWJvdXQKLSAgICAgICAgICAgICAgd2hhdCAgYWN0aW9ucyB0byB0YWtlIGlzIGRvbmUgb24gdGhlIGJhc2lzIG9mIHdoaWNoCi0gICAgICAgICAgICAgIG5hbWUgaXMgdXNlZC4gIFRoaXMgZmxhZyBvdmVycmlkZXMgdGhhdCAgbWVjaGFuaXNtLAotICAgICAgICAgICAgICBhbmQgZm9yY2VzIF8IYl8Iel8IaV8IcF8IMiB0byBkZWNvbXByZXNzLgotCi0gICAgICAg4oiSCOKIknoIeiDigJAI4oCQ4oCQCOKAkGMIY28Ib20IbXAIcHIIcmUIZXMIc3MIcwotICAgICAgICAgICAgICBUaGUgICBjb21wbGVtZW50ICAgdG8gICDiiJJkOiAgIGZvcmNlcyAgIGNvbXByZXNzaW9uLAotICAgICAgICAgICAgICByZWdhcmRsZXNzIG9mIHRoZSBpbnZvY2F0aW9uIG5hbWUuCi0KLSAgICAgICDiiJII4oiSdAh0IOKAkAjigJDigJAI4oCQdAh0ZQhlcwhzdAh0Ci0gICAgICAgICAgICAgIENoZWNrIGludGVncml0eSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUocyksIGJ1dCBkb27igJl0Ci0gICAgICAgICAgICAgIGRlY29tcHJlc3MgIHRoZW0uICAgVGhpcyAgcmVhbGx5ICBwZXJmb3JtcyAgYSB0cmlhbAotICAgICAgICAgICAgICBkZWNvbXByZXNzaW9uIGFuZCB0aHJvd3MgYXdheSB0aGUgcmVzdWx0LgotCi0gICAgICAg4oiSCOKIkmYIZiDigJAI4oCQ4oCQCOKAkGYIZm8Ib3IIcmMIY2UIZQotICAgICAgICAgICAgICBGb3JjZSBvdmVyd3JpdGUgb2Ygb3V0cHV0IGZpbGVzLiAgIE5vcm1hbGx5LCAgXwhiXwh6XwhpXwhwXwgyCi0gICAgICAgICAgICAgIHdpbGwgIG5vdCAgb3ZlcndyaXRlICBleGlzdGluZyAgb3V0cHV0IGZpbGVzLiAgQWxzbwotICAgICAgICAgICAgICBmb3JjZXMgXwhiXwh6XwhpXwhwXwgyIHRvIGJyZWFrIGhhcmQgbGlua3MgdG8gZmlsZXMsIHdoaWNoIGl0Ci0gICAgICAgICAgICAgIG90aGVyd2lzZSB3b3VsZG7igJl0IGRvLgotCi0gICAgICAgICAgICAgIGJ6aXAyICBub3JtYWxseSAgZGVjbGluZXMgdG8gZGVjb21wcmVzcyBmaWxlcyB3aGljaAotICAgICAgICAgICAgICBkb27igJl0IGhhdmUgdGhlICBjb3JyZWN0ICBtYWdpYyAgaGVhZGVyICBieXRlcy4gICBJZgotICAgICAgICAgICAgICBmb3JjZWQgICjigJBmKSwgIGhvd2V2ZXIsICBpdCAgd2lsbCAgcGFzcyAgc3VjaCBmaWxlcwotICAgICAgICAgICAgICB0aHJvdWdoIHVubW9kaWZpZWQuICBUaGlzIGlzIGhvdyBHTlUgZ3ppcCAgYmVoYXZlcy4KLQotICAgICAgIOKIkgjiiJJrCGsg4oCQCOKAkOKAkAjigJBrCGtlCGVlCGVwCHAKLSAgICAgICAgICAgICAgS2VlcCAgKGRvbuKAmXQgZGVsZXRlKSBpbnB1dCBmaWxlcyBkdXJpbmcgY29tcHJlc3Npb24KLSAgICAgICAgICAgICAgb3IgZGVjb21wcmVzc2lvbi4KLQotICAgICAgIOKIkgjiiJJzCHMg4oCQCOKAkOKAkAjigJBzCHNtCG1hCGFsCGxsCGwKLSAgICAgICAgICAgICAgUmVkdWNlIG1lbW9yeSB1c2FnZSwgZm9yIGNvbXByZXNzaW9uLCBkZWNvbXByZXNzaW9uCi0gICAgICAgICAgICAgIGFuZCAgdGVzdGluZy4gICBGaWxlcyAgYXJlICBkZWNvbXByZXNzZWQgYW5kIHRlc3RlZAotICAgICAgICAgICAgICB1c2luZyBhIG1vZGlmaWVkIGFsZ29yaXRobSB3aGljaCBvbmx5IHJlcXVpcmVzICAyLjUKLSAgICAgICAgICAgICAgYnl0ZXMgIHBlciAgYmxvY2sgYnl0ZS4gIFRoaXMgbWVhbnMgYW55IGZpbGUgY2FuIGJlCi0gICAgICAgICAgICAgIGRlY29tcHJlc3NlZCBpbiAyMzAwayBvZiBtZW1vcnksICBhbGJlaXQgIGF0ICBhYm91dAotICAgICAgICAgICAgICBoYWxmIHRoZSBub3JtYWwgc3BlZWQuCi0KLSAgICAgICAgICAgICAgRHVyaW5nICBjb21wcmVzc2lvbiwgIOKIknMgIHNlbGVjdHMgIGEgIGJsb2NrIHNpemUgb2YKLSAgICAgICAgICAgICAgMjAwaywgd2hpY2ggbGltaXRzIG1lbW9yeSB1c2UgdG8gIGFyb3VuZCAgdGhlICBzYW1lCi0gICAgICAgICAgICAgIGZpZ3VyZSwgIGF0ICB0aGUgZXhwZW5zZSBvZiB5b3VyIGNvbXByZXNzaW9uIHJhdGlvLgotICAgICAgICAgICAgICBJbiBzaG9ydCwgaWYgeW91ciAgbWFjaGluZSAgaXMgIGxvdyAgb24gIG1lbW9yeSAgKDgKLSAgICAgICAgICAgICAgbWVnYWJ5dGVzICBvciAgbGVzcyksICB1c2UgIOKIknMgZm9yIGV2ZXJ5dGhpbmcuICBTZWUKLSAgICAgICAgICAgICAgTUVNT1JZIE1BTkFHRU1FTlQgYmVsb3cuCi0KLSAgICAgICDiiJII4oiScQhxIOKAkAjigJDigJAI4oCQcQhxdQh1aQhpZQhldAh0Ci0gICAgICAgICAgICAgIFN1cHByZXNzIG5vbuKAkGVzc2VudGlhbCB3YXJuaW5nIG1lc3NhZ2VzLiAgIE1lc3NhZ2VzCi0gICAgICAgICAgICAgIHBlcnRhaW5pbmcgIHRvIEkvTyBlcnJvcnMgYW5kIG90aGVyIGNyaXRpY2FsIGV2ZW50cwotICAgICAgICAgICAgICB3aWxsIG5vdCBiZSBzdXBwcmVzc2VkLgotCi0gICAgICAg4oiSCOKIknYIdiDigJAI4oCQ4oCQCOKAkHYIdmUIZXIIcmIIYm8Ib3MIc2UIZQotICAgICAgICAgICAgICBWZXJib3NlIG1vZGUg4oCQ4oCQIHNob3cgdGhlIGNvbXByZXNzaW9uIHJhdGlvIGZvciBlYWNoCi0gICAgICAgICAgICAgIGZpbGUgIHByb2Nlc3NlZC4gICBGdXJ0aGVyICDiiJJ24oCZcyAgaW5jcmVhc2UgdGhlIHZlcsKtCi0gICAgICAgICAgICAgIGJvc2l0eSBsZXZlbCwgc3Bld2luZyBvdXQgbG90cyBvZiBpbmZvcm1hdGlvbiB3aGljaAotICAgICAgICAgICAgICBpcyBwcmltYXJpbHkgb2YgaW50ZXJlc3QgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMuCi0KLSAgICAgICDiiJII4oiSTAhMIOKAkAjigJDigJAI4oCQbAhsaQhpYwhjZQhlbghucwhzZQhlIOKAkAjigJBWCFYg4oCQCOKAkOKAkAjigJB2CHZlCGVyCHJzCHNpCGlvCG9uCG4KLSAgICAgICAgICAgICAgRGlzcGxheSAgdGhlICBzb2Z0d2FyZSAgdmVyc2lvbiwgIGxpY2Vuc2UgdGVybXMgYW5kCi0gICAgICAgICAgICAgIGNvbmRpdGlvbnMuCi0KLSAgICAgICDiiJII4oiSMQgxICgIKG8Ib3IIciDiiJII4oiS4oiSCOKIkmYIZmEIYXMIc3QIdCkIKSB0CHRvCG8g4oiSCOKIkjkIOSAoCChvCG9yCHIg4oiSCOKIkuKIkgjiiJJiCGJlCGVzCHN0CHQpCCkKLSAgICAgICAgICAgICAgU2V0IHRoZSBibG9jayBzaXplIHRvIDEwMCBrLCAyMDAgayAuLiAgOTAwICBrICB3aGVuCi0gICAgICAgICAgICAgIGNvbXByZXNzaW5nLiAgIEhhcyAgbm8gIGVmZmVjdCAgd2hlbiBkZWNvbXByZXNzaW5nLgotICAgICAgICAgICAgICBTZWUgTUVNT1JZIE1BTkFHRU1FTlQgYmVsb3cuICBUaGUg4oiS4oiSZmFzdCBhbmQg4oiS4oiSYmVzdAotICAgICAgICAgICAgICBhbGlhc2VzICBhcmUgIHByaW1hcmlseSBmb3IgR05VIGd6aXAgY29tcGF0aWJpbGl0eS4KLSAgICAgICAgICAgICAgSW4gcGFydGljdWxhciwg4oiS4oiSZmFzdCBkb2VzbuKAmXQgbWFrZSB0aGluZ3MgIHNpZ25pZmnCrQotICAgICAgICAgICAgICBjYW50bHkgIGZhc3Rlci4gICBBbmQgIOKIkuKIkmJlc3QgIG1lcmVseSAgc2VsZWN0cyAgdGhlCi0gICAgICAgICAgICAgIGRlZmF1bHQgYmVoYXZpb3VyLgotCi0gICAgICAg4oiSCOKIkuKAkAjigJAgICAgIFRyZWF0cyBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgYXMgZmlsZSBuYW1lcywgZXZlbgotICAgICAgICAgICAgICBpZiB0aGV5IHN0YXJ0IHdpdGggYSBkYXNoLiAgVGhpcyBpcyBzbyB5b3UgY2FuIGhhbsKtCi0gICAgICAgICAgICAgIGRsZSBmaWxlcyB3aXRoIG5hbWVzIGJlZ2lubmluZyAgd2l0aCAgYSAgZGFzaCwgIGZvcgotICAgICAgICAgICAgICBleGFtcGxlOiBiemlwMiDiiJLigJAg4oiSbXlmaWxlbmFtZS4KLQotICAgICAgIOKIkgjiiJLigJAI4oCQcghyZQhlcAhwZQhldAh0aQhpdAh0aQhpdgh2ZQhl4oCQCOKAkGYIZmEIYXMIc3QIdCDigJAI4oCQ4oCQCOKAkHIIcmUIZXAIcGUIZXQIdGkIaXQIdGkIaXYIdmUIZeKAkAjigJBiCGJlCGVzCHN0CHQKLSAgICAgICAgICAgICAgVGhlc2UgIGZsYWdzICBhcmUgIHJlZHVuZGFudCAgaW4gdmVyc2lvbnMgMC45LjUgYW5kCi0gICAgICAgICAgICAgIGFib3ZlLiAgVGhleSBwcm92aWRlZCBzb21lIGNvYXJzZSBjb250cm9sIG92ZXIgIHRoZQotICAgICAgICAgICAgICBiZWhhdmlvdXIgIG9mIHRoZSBzb3J0aW5nIGFsZ29yaXRobSBpbiBlYXJsaWVyIHZlcsKtCi0gICAgICAgICAgICAgIHNpb25zLCB3aGljaCB3YXMgc29tZXRpbWVzIHVzZWZ1bC4gIDAuOS41IGFuZCBhYm92ZQotICAgICAgICAgICAgICBoYXZlICBhbiAgaW1wcm92ZWQgIGFsZ29yaXRobSAgd2hpY2ggIHJlbmRlcnMgdGhlc2UKLSAgICAgICAgICAgICAgZmxhZ3MgaXJyZWxldmFudC4KLQotCi1NCE1FCEVNCE1PCE9SCFJZCFkgTQhNQQhBTghOQQhBRwhHRQhFTQhNRQhFTghOVAhUCi0gICAgICAgXwhiXwh6XwhpXwhwXwgyIGNvbXByZXNzZXMgbGFyZ2UgZmlsZXMgaW4gYmxvY2tzLiAgIFRoZSAgYmxvY2sgIHNpemUKLSAgICAgICBhZmZlY3RzICBib3RoICB0aGUgIGNvbXByZXNzaW9uICByYXRpbyAgYWNoaWV2ZWQsICBhbmQgdGhlCi0gICAgICAgYW1vdW50IG9mIG1lbW9yeSBuZWVkZWQgZm9yIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uLgotICAgICAgIFRoZSAgZmxhZ3MgIOKIkjEgIHRocm91Z2ggIOKIkjkgIHNwZWNpZnkgIHRoZSBibG9jayBzaXplIHRvIGJlCi0gICAgICAgMTAwLDAwMCBieXRlcyB0aHJvdWdoIDkwMCwwMDAgYnl0ZXMgKHRoZSBkZWZhdWx0KSAgcmVzcGVjwq0KLSAgICAgICB0aXZlbHkuICAgQXQgIGRlY29tcHJlc3Npb24gIHRpbWUsIHRoZSBibG9jayBzaXplIHVzZWQgZm9yCi0gICAgICAgY29tcHJlc3Npb24gaXMgcmVhZCBmcm9tICB0aGUgIGhlYWRlciAgb2YgIHRoZSAgY29tcHJlc3NlZAotICAgICAgIGZpbGUsIGFuZCBfCGJfCHVfCG5fCHpfCGlfCHBfCDIgdGhlbiBhbGxvY2F0ZXMgaXRzZWxmIGp1c3QgZW5vdWdoIG1lbW9yeQotICAgICAgIHRvIGRlY29tcHJlc3MgdGhlIGZpbGUuICBTaW5jZSBibG9jayBzaXplcyBhcmUgIHN0b3JlZCAgaW4KLSAgICAgICBjb21wcmVzc2VkICBmaWxlcywgIGl0IGZvbGxvd3MgdGhhdCB0aGUgZmxhZ3Mg4oiSMSB0byDiiJI5IGFyZQotICAgICAgIGlycmVsZXZhbnQgdG8gYW5kIHNvIGlnbm9yZWQgZHVyaW5nIGRlY29tcHJlc3Npb24uCi0KLSAgICAgICBDb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiByZXF1aXJlbWVudHMsIGluIGJ5dGVzLCAgY2FuCi0gICAgICAgYmUgZXN0aW1hdGVkIGFzOgotCi0gICAgICAgICAgICAgIENvbXByZXNzaW9uOiAgIDQwMGsgKyAoIDggeCBibG9jayBzaXplICkKLQotICAgICAgICAgICAgICBEZWNvbXByZXNzaW9uOiAxMDBrICsgKCA0IHggYmxvY2sgc2l6ZSApLCBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDBrICsgKCAyLjUgeCBibG9jayBzaXplICkKLQotICAgICAgIExhcmdlciAgYmxvY2sgIHNpemVzICBnaXZlICByYXBpZGx5ICBkaW1pbmlzaGluZyAgbWFyZ2luYWwKLSAgICAgICByZXR1cm5zLiAgTW9zdCBvZiB0aGUgY29tcHJlc3Npb24gY29tZXMgZnJvbSB0aGUgZmlyc3QgdHdvCi0gICAgICAgb3IgIHRocmVlIGh1bmRyZWQgayBvZiBibG9jayBzaXplLCBhIGZhY3Qgd29ydGggYmVhcmluZyBpbgotICAgICAgIG1pbmQgd2hlbiB1c2luZyBfCGJfCHpfCGlfCHBfCDIgIG9uICBzbWFsbCAgbWFjaGluZXMuICAgSXQgIGlzICBhbHNvCi0gICAgICAgaW1wb3J0YW50ICB0byAgYXBwcmVjaWF0ZSAgdGhhdCAgdGhlICBkZWNvbXByZXNzaW9uIG1lbW9yeQotICAgICAgIHJlcXVpcmVtZW50IGlzIHNldCBhdCBjb21wcmVzc2lvbiB0aW1lIGJ5ICB0aGUgIGNob2ljZSAgb2YKLSAgICAgICBibG9jayBzaXplLgotCi0gICAgICAgRm9yICBmaWxlcyAgY29tcHJlc3NlZCAgd2l0aCAgdGhlIGRlZmF1bHQgOTAwayBibG9jayBzaXplLAotICAgICAgIF8IYl8IdV8Ibl8Iel8IaV8IcF8IMiB3aWxsIHJlcXVpcmUgYWJvdXQgMzcwMCBrYnl0ZXMgdG8gZGVjb21wcmVzcy4gICBUbwotICAgICAgIHN1cHBvcnQgZGVjb21wcmVzc2lvbiBvZiBhbnkgZmlsZSBvbiBhIDQgbWVnYWJ5dGUgbWFjaGluZSwKLSAgICAgICBfCGJfCHVfCG5fCHpfCGlfCHBfCDIgaGFzIGFuIG9wdGlvbiB0byAgZGVjb21wcmVzcyAgdXNpbmcgIGFwcHJveGltYXRlbHkKLSAgICAgICBoYWxmIHRoaXMgYW1vdW50IG9mIG1lbW9yeSwgYWJvdXQgMjMwMCBrYnl0ZXMuICBEZWNvbXByZXPCrQotICAgICAgIHNpb24gc3BlZWQgaXMgYWxzbyBoYWx2ZWQsIHNvIHlvdSBzaG91bGQgdXNlICB0aGlzICBvcHRpb24KLSAgICAgICBvbmx5IHdoZXJlIG5lY2Vzc2FyeS4gIFRoZSByZWxldmFudCBmbGFnIGlzIOKAkHMuCi0KLSAgICAgICBJbiBnZW5lcmFsLCB0cnkgYW5kIHVzZSB0aGUgbGFyZ2VzdCBibG9jayBzaXplIG1lbW9yeSBjb27CrQotICAgICAgIHN0cmFpbnRzICBhbGxvdywgIHNpbmNlICB0aGF0ICBtYXhpbWlzZXMgIHRoZSAgY29tcHJlc3Npb24KLSAgICAgICBhY2hpZXZlZC4gICBDb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBzcGVlZCBhcmUgdmlydHXCrQotICAgICAgIGFsbHkgdW5hZmZlY3RlZCBieSBibG9jayBzaXplLgotCi0gICAgICAgQW5vdGhlciBzaWduaWZpY2FudCBwb2ludCBhcHBsaWVzIHRvIGZpbGVzIHdoaWNoIGZpdCBpbiAgYQotICAgICAgIHNpbmdsZSAgYmxvY2sgIOKAkOKAkCAgdGhhdCAgbWVhbnMgIG1vc3QgZmlsZXMgeW914oCZZCBlbmNvdW50ZXIKLSAgICAgICB1c2luZyBhIGxhcmdlIGJsb2NrICBzaXplLiAgIFRoZSAgYW1vdW50ICBvZiAgcmVhbCAgbWVtb3J5Ci0gICAgICAgdG91Y2hlZCBpcyBwcm9wb3J0aW9uYWwgdG8gdGhlIHNpemUgb2YgdGhlIGZpbGUsIHNpbmNlIHRoZQotICAgICAgIGZpbGUgaXMgc21hbGxlciB0aGFuIGEgYmxvY2suICBGb3IgZXhhbXBsZSwgY29tcHJlc3NpbmcgIGEKLSAgICAgICBmaWxlICAyMCwwMDAgIGJ5dGVzICBsb25nICB3aXRoIHRoZSBmbGFnIOKAkDkgd2lsbCBjYXVzZSB0aGUKLSAgICAgICBjb21wcmVzc29yIHRvIGFsbG9jYXRlIGFyb3VuZCA3NjAwayBvZiAgbWVtb3J5LCAgYnV0ICBvbmx5Ci0gICAgICAgdG91Y2ggNDAwayArIDIwMDAwICogOCA9IDU2MCBrYnl0ZXMgb2YgaXQuICBTaW1pbGFybHksIHRoZQotICAgICAgIGRlY29tcHJlc3NvciB3aWxsIGFsbG9jYXRlIDM3MDBrIGJ1dCAgb25seSAgdG91Y2ggIDEwMGsgICsKLSAgICAgICAyMDAwMCAqIDQgPSAxODAga2J5dGVzLgotCi0gICAgICAgSGVyZSAgaXMgYSB0YWJsZSB3aGljaCBzdW1tYXJpc2VzIHRoZSBtYXhpbXVtIG1lbW9yeSB1c2FnZQotICAgICAgIGZvciBkaWZmZXJlbnQgYmxvY2sgc2l6ZXMuICBBbHNvICByZWNvcmRlZCAgaXMgIHRoZSAgdG90YWwKLSAgICAgICBjb21wcmVzc2VkICBzaXplIGZvciAxNCBmaWxlcyBvZiB0aGUgQ2FsZ2FyeSBUZXh0IENvbXByZXPCrQotICAgICAgIHNpb24gQ29ycHVzIHRvdGFsbGluZyAzLDE0MSw2MjIgYnl0ZXMuICBUaGlzIGNvbHVtbiAgZ2l2ZXMKLSAgICAgICBzb21lICBmZWVsICBmb3IgIGhvdyAgY29tcHJlc3Npb24gIHZhcmllcyB3aXRoIGJsb2NrIHNpemUuCi0gICAgICAgVGhlc2UgZmlndXJlcyB0ZW5kIHRvIHVuZGVyc3RhdGUgdGhlIGFkdmFudGFnZSAgb2YgIGxhcmdlcgotICAgICAgIGJsb2NrICBzaXplcyAgZm9yICBsYXJnZXIgZmlsZXMsIHNpbmNlIHRoZSBDb3JwdXMgaXMgZG9tacKtCi0gICAgICAgbmF0ZWQgYnkgc21hbGxlciBmaWxlcy4KLQotICAgICAgICAgICAgICAgICAgQ29tcHJlc3MgICBEZWNvbXByZXNzICAgRGVjb21wcmVzcyAgIENvcnB1cwotICAgICAgICAgICBGbGFnICAgICB1c2FnZSAgICAgIHVzYWdlICAgICAgIOKAkHMgdXNhZ2UgICAgIFNpemUKLQotICAgICAgICAgICAg4oCQMSAgICAgIDEyMDBrICAgICAgIDUwMGsgICAgICAgICAzNTBrICAgICAgOTE0NzA0Ci0gICAgICAgICAgICDigJAyICAgICAgMjAwMGsgICAgICAgOTAwayAgICAgICAgIDYwMGsgICAgICA4Nzc3MDMKLSAgICAgICAgICAgIOKAkDMgICAgICAyODAwayAgICAgIDEzMDBrICAgICAgICAgODUwayAgICAgIDg2MDMzOAotICAgICAgICAgICAg4oCQNCAgICAgIDM2MDBrICAgICAgMTcwMGsgICAgICAgIDExMDBrICAgICAgODQ2ODk5Ci0gICAgICAgICAgICDigJA1ICAgICAgNDQwMGsgICAgICAyMTAwayAgICAgICAgMTM1MGsgICAgICA4NDUxNjAKLSAgICAgICAgICAgIOKAkDYgICAgICA1MjAwayAgICAgIDI1MDBrICAgICAgICAxNjAwayAgICAgIDgzODYyNgotICAgICAgICAgICAg4oCQNyAgICAgIDYxMDBrICAgICAgMjkwMGsgICAgICAgIDE4NTBrICAgICAgODM0MDk2Ci0gICAgICAgICAgICDigJA4ICAgICAgNjgwMGsgICAgICAzMzAwayAgICAgICAgMjEwMGsgICAgICA4Mjg2NDIKLSAgICAgICAgICAgIOKAkDkgICAgICA3NjAwayAgICAgIDM3MDBrICAgICAgICAyMzUwayAgICAgIDgyODY0MgotCi0KLVIIUkUIRUMIQ08IT1YIVkUIRVIIUkkISU4ITkcIRyBECERBCEFUCFRBCEEgRghGUghSTwhPTQhNIEQIREEIQU0ITUEIQUcIR0UIRUQIRCBGCEZJCElMCExFCEVTCFMKLSAgICAgICBfCGJfCHpfCGlfCHBfCDIgY29tcHJlc3NlcyBmaWxlcyBpbiBibG9ja3MsIHVzdWFsbHkgOTAwa2J5dGVzICBsb25nLgotICAgICAgIEVhY2ggYmxvY2sgaXMgaGFuZGxlZCBpbmRlcGVuZGVudGx5LiAgSWYgYSBtZWRpYSBvciB0cmFuc8KtCi0gICAgICAgbWlzc2lvbiBlcnJvciBjYXVzZXMgYSBtdWx0aeKAkGJsb2NrICAuYnoyICBmaWxlICB0byAgYmVjb21lCi0gICAgICAgZGFtYWdlZCwgIGl0ICBtYXkgIGJlICBwb3NzaWJsZSAgdG8gIHJlY292ZXIgZGF0YSBmcm9tIHRoZQotICAgICAgIHVuZGFtYWdlZCBibG9ja3MgaW4gdGhlIGZpbGUuCi0KLSAgICAgICBUaGUgY29tcHJlc3NlZCByZXByZXNlbnRhdGlvbiBvZiBlYWNoIGJsb2NrICBpcyAgZGVsaW1pdGVkCi0gICAgICAgYnkgIGEgIDQ44oCQYml0IHBhdHRlcm4sIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGZpbmQgdGhlCi0gICAgICAgYmxvY2sgYm91bmRhcmllcyB3aXRoIHJlYXNvbmFibGUgIGNlcnRhaW50eS4gICBFYWNoICBibG9jawotICAgICAgIGFsc28gIGNhcnJpZXMgaXRzIG93biAzMuKAkGJpdCBDUkMsIHNvIGRhbWFnZWQgYmxvY2tzIGNhbiBiZQotICAgICAgIGRpc3Rpbmd1aXNoZWQgZnJvbSB1bmRhbWFnZWQgb25lcy4KLQotICAgICAgIF8IYl8Iel8IaV8IcF8IMl8Icl8IZV8IY18Ib18Idl8IZV8IciBpcyBhICBzaW1wbGUgIHByb2dyYW0gIHdob3NlICBwdXJwb3NlICBpcyAgdG8KLSAgICAgICBzZWFyY2ggIGZvciBibG9ja3MgaW4gLmJ6MiBmaWxlcywgYW5kIHdyaXRlIGVhY2ggYmxvY2sgb3V0Ci0gICAgICAgaW50byBpdHMgb3duIC5iejIgZmlsZS4gIFlvdSBjYW4gdGhlbiB1c2UgXwhiXwh6XwhpXwhwXwgyIOKIknQgdG8gdGVzdAotICAgICAgIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHJlc3VsdGluZyBmaWxlcywgYW5kIGRlY29tcHJlc3MgdGhvc2UKLSAgICAgICB3aGljaCBhcmUgdW5kYW1hZ2VkLgotCi0gICAgICAgXwhiXwh6XwhpXwhwXwgyXwhyXwhlXwhjXwhvXwh2XwhlXwhyIHRha2VzIGEgc2luZ2xlIGFyZ3VtZW50LCB0aGUgbmFtZSBvZiB0aGUgZGFtwq0KLSAgICAgICBhZ2VkICAgIGZpbGUsICAgIGFuZCAgICB3cml0ZXMgICAgYSAgICBudW1iZXIgICBvZiAgIGZpbGVzCi0gICAgICAgInJlYzAwMDAxZmlsZS5iejIiLCAgInJlYzAwMDAyZmlsZS5iejIiLCAgZXRjLCAgY29udGFpbmluZwotICAgICAgIHRoZSAgIGV4dHJhY3RlZCAgIGJsb2Nrcy4gICBUaGUgICBvdXRwdXQgICBmaWxlbmFtZXMgICBhcmUKLSAgICAgICBkZXNpZ25lZCAgc28gIHRoYXQgdGhlIHVzZSBvZiB3aWxkY2FyZHMgaW4gc3Vic2VxdWVudCBwcm/CrQotICAgICAgIGNlc3NpbmcgIOKAkOKAkCBmb3IgZXhhbXBsZSwgImJ6aXAyIOKAkGRjICByZWMqZmlsZS5iejIgPiByZWNvdsKtCi0gICAgICAgZXJlZF9kYXRhIiDigJDigJAgcHJvY2Vzc2VzIHRoZSBmaWxlcyBpbiB0aGUgY29ycmVjdCBvcmRlci4KLQotICAgICAgIF8IYl8Iel8IaV8IcF8IMl8Icl8IZV8IY18Ib18Idl8IZV8IciBzaG91bGQgYmUgb2YgbW9zdCB1c2UgZGVhbGluZyB3aXRoIGxhcmdlIC5iejIKLSAgICAgICBmaWxlcywgIGFzICB0aGVzZSB3aWxsIGNvbnRhaW4gbWFueSBibG9ja3MuICBJdCBpcyBjbGVhcmx5Ci0gICAgICAgZnV0aWxlIHRvIHVzZSBpdCBvbiBkYW1hZ2VkIHNpbmdsZeKAkGJsb2NrICBmaWxlcywgIHNpbmNlICBhCi0gICAgICAgZGFtYWdlZCAgYmxvY2sgIGNhbm5vdCAgYmUgcmVjb3ZlcmVkLiAgSWYgeW91IHdpc2ggdG8gbWluwq0KLSAgICAgICBpbWlzZSBhbnkgcG90ZW50aWFsIGRhdGEgbG9zcyB0aHJvdWdoIG1lZGlhICBvciAgdHJhbnNtaXPCrQotICAgICAgIHNpb24gZXJyb3JzLCB5b3UgbWlnaHQgY29uc2lkZXIgY29tcHJlc3Npbmcgd2l0aCBhIHNtYWxsZXIKLSAgICAgICBibG9jayBzaXplLgotCi0KLVAIUEUIRVIIUkYIRk8IT1IIUk0ITUEIQU4ITkMIQ0UIRSBOCE5PCE9UCFRFCEVTCFMKLSAgICAgICBUaGUgc29ydGluZyBwaGFzZSBvZiBjb21wcmVzc2lvbiBnYXRoZXJzIHRvZ2V0aGVyICBzaW1pbGFyCi0gICAgICAgc3RyaW5ncyAgaW4gIHRoZSAgZmlsZS4gIEJlY2F1c2Ugb2YgdGhpcywgZmlsZXMgY29udGFpbmluZwotICAgICAgIHZlcnkgbG9uZyBydW5zIG9mICByZXBlYXRlZCAgc3ltYm9scywgIGxpa2UgICJhYWJhYWJhYWJhYWIKLSAgICAgICAuLi4iICAgKHJlcGVhdGVkICBzZXZlcmFsIGh1bmRyZWQgdGltZXMpIG1heSBjb21wcmVzcyBtb3JlCi0gICAgICAgc2xvd2x5IHRoYW4gbm9ybWFsLiAgVmVyc2lvbnMgMC45LjUgYW5kICBhYm92ZSAgZmFyZSAgbXVjaAotICAgICAgIGJldHRlciAgdGhhbiBwcmV2aW91cyB2ZXJzaW9ucyBpbiB0aGlzIHJlc3BlY3QuICBUaGUgcmF0aW8KLSAgICAgICBiZXR3ZWVuIHdvcnN04oCQY2FzZSBhbmQgYXZlcmFnZeKAkGNhc2UgY29tcHJlc3Npb24gdGltZSBpcyBpbgotICAgICAgIHRoZSAgcmVnaW9uICBvZiAgMTA6MS4gIEZvciBwcmV2aW91cyB2ZXJzaW9ucywgdGhpcyBmaWd1cmUKLSAgICAgICB3YXMgbW9yZSBsaWtlIDEwMDoxLiAgWW91IGNhbiB1c2UgdGhlIOKIknZ2dnYgb3B0aW9uIHRvIG1vbsKtCi0gICAgICAgaXRvciBwcm9ncmVzcyBpbiBncmVhdCBkZXRhaWwsIGlmIHlvdSB3YW50LgotCi0gICAgICAgRGVjb21wcmVzc2lvbiBzcGVlZCBpcyB1bmFmZmVjdGVkIGJ5IHRoZXNlIHBoZW5vbWVuYS4KLQotICAgICAgIF8IYl8Iel8IaV8IcF8IMiAgdXN1YWxseSAgYWxsb2NhdGVzICBzZXZlcmFsICBtZWdhYnl0ZXMgb2YgbWVtb3J5IHRvCi0gICAgICAgb3BlcmF0ZSBpbiwgYW5kIHRoZW4gY2hhcmdlcyBhbGwgb3ZlciBpdCBpbiBhIGZhaXJseSAgcmFuwq0KLSAgICAgICBkb20gIGZhc2hpb24uICAgVGhpcyBtZWFucyB0aGF0IHBlcmZvcm1hbmNlLCBib3RoIGZvciBjb23CrQotICAgICAgIHByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nLCBpcyBsYXJnZWx5IGRldGVybWluZWQgIGJ5ICB0aGUKLSAgICAgICBzcGVlZCAgYXQgIHdoaWNoICB5b3VyICBtYWNoaW5lICBjYW4gc2VydmljZSBjYWNoZSBtaXNzZXMuCi0gICAgICAgQmVjYXVzZSBvZiB0aGlzLCBzbWFsbCBjaGFuZ2VzIHRvIHRoZSBjb2RlIHRvICByZWR1Y2UgIHRoZQotICAgICAgIG1pc3MgIHJhdGUgIGhhdmUgIGJlZW4gb2JzZXJ2ZWQgdG8gZ2l2ZSBkaXNwcm9wb3J0aW9uYXRlbHkKLSAgICAgICBsYXJnZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuICBJIGltYWdpbmUgXwhiXwh6XwhpXwhwXwgyIHdpbGwgcGVywq0KLSAgICAgICBmb3JtIGJlc3Qgb24gbWFjaGluZXMgd2l0aCB2ZXJ5IGxhcmdlIGNhY2hlcy4KLQotCi1DCENBCEFWCFZFCEVBCEFUCFRTCFMKLSAgICAgICBJL08gIGVycm9yICBtZXNzYWdlcyAgYXJlIG5vdCBhcyBoZWxwZnVsIGFzIHRoZXkgY291bGQgYmUuCi0gICAgICAgXwhiXwh6XwhpXwhwXwgyIHRyaWVzIGhhcmQgdG8gZGV0ZWN0IEkvTyBlcnJvcnMgIGFuZCAgZXhpdCAgY2xlYW5seSwKLSAgICAgICBidXQgIHRoZSAgZGV0YWlscyAgb2YgIHdoYXQgIHRoZSBwcm9ibGVtIGlzIHNvbWV0aW1lcyBzZWVtCi0gICAgICAgcmF0aGVyIG1pc2xlYWRpbmcuCi0KLSAgICAgICBUaGlzIG1hbnVhbCBwYWdlIHBlcnRhaW5zIHRvIHZlcnNpb24gMS4wLjQgb2YgXwhiXwh6XwhpXwhwXwgyXwguICBDb23CrQotICAgICAgIHByZXNzZWQgIGRhdGEgY3JlYXRlZCBieSB0aGlzIHZlcnNpb24gaXMgZW50aXJlbHkgZm9yd2FyZHMKLSAgICAgICBhbmQgIGJhY2t3YXJkcyAgY29tcGF0aWJsZSAgd2l0aCAgIHRoZSAgIHByZXZpb3VzICAgcHVibGljCi0gICAgICAgcmVsZWFzZXMsICB2ZXJzaW9ucyAgMC4xcGwyLCAgMC45LjAsICAwLjkuNSwgMS4wLjAsIDEuMC4xLCAKLSAgICAgICAxLjAuMiBhbmQgMS4wLjMsIGJ1dCB3aXRoIHRoZSAgZm9sbG93aW5nICBleGNlcHRpb246IDAuOS4wCi0gICAgICAgYW5kIGFib3ZlIGNhbiAgY29ycmVjdGx5IGRlY29tcHJlc3MgIG11bHRpcGxlIGNvbmNhdGVuYXRlZAotICAgICAgIGNvbXByZXNzZWQgZmlsZXMuICAwLjFwbDIgIGNhbm5vdCBkbyB0aGlzOyAgaXQgIHdpbGwgIHN0b3AgCi0gICAgICAgYWZ0ZXIgIGRlY29tcHJlc3NpbmcganVzdCB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgc3RyZWFtLgotCi0gICAgICAgXwhiXwh6XwhpXwhwXwgyXwhyXwhlXwhjXwhvXwh2XwhlXwhyICB2ZXJzaW9ucyBwcmlvciB0byAxLjAuMiB1c2VkIDMy4oCQYml0IGludGVnZXJzCi0gICAgICAgdG8gcmVwcmVzZW50IGJpdCBwb3NpdGlvbnMgaW4gY29tcHJlc3NlZCAgZmlsZXMsICBzbyAgdGhleQotICAgICAgIGNvdWxkICBub3QgaGFuZGxlIGNvbXByZXNzZWQgZmlsZXMgbW9yZSB0aGFuIDUxMiBtZWdhYnl0ZXMKLSAgICAgICBsb25nLiAgVmVyc2lvbnMgMS4wLjIgYW5kIGFib3ZlIHVzZSA2NOKAkGJpdCAgaW50cyAgb24gIHNvbWUKLSAgICAgICBwbGF0Zm9ybXMgIHdoaWNoICBzdXBwb3J0IHRoZW0gKEdOVSBzdXBwb3J0ZWQgdGFyZ2V0cywgYW5kCi0gICAgICAgV2luZG93cykuICBUbyBlc3RhYmxpc2ggd2hldGhlciBvciAgbm90ICBiemlwMnJlY292ZXIgIHdhcwotICAgICAgIGJ1aWx0ICB3aXRoICBzdWNoICBhIGxpbWl0YXRpb24sIHJ1biBpdCB3aXRob3V0IGFyZ3VtZW50cy4KLSAgICAgICBJbiBhbnkgZXZlbnQgeW91IGNhbiBidWlsZCB5b3Vyc2VsZiBhbiAgdW5saW1pdGVkICB2ZXJzaW9uCi0gICAgICAgaWYgIHlvdSAgY2FuICByZWNvbXBpbGUgIGl0ICB3aXRoIE1heWJlVUludDY0IHNldCB0byBiZSBhbgotICAgICAgIHVuc2lnbmVkIDY04oCQYml0IGludGVnZXIuCi0KLQotCi0KLUEIQVUIVVQIVEgISE8IT1IIUgotICAgICAgIEp1bGlhbiBTZXdhcmQsIGpzZXdhcmRiemlwLm9yZy4KLQotICAgICAgIGh0dHA6Ly93d3cuYnppcC5vcmcKLQotICAgICAgIFRoZSBpZGVhcyBlbWJvZGllZCBpbiBfCGJfCHpfCGlfCHBfCDIgYXJlIGR1ZSB0byAoYXQgbGVhc3QpIHRoZSBmb2zCrQotICAgICAgIGxvd2luZyAgcGVvcGxlOiBNaWNoYWVsIEJ1cnJvd3MgYW5kIERhdmlkIFdoZWVsZXIgKGZvciB0aGUKLSAgICAgICBibG9jayBzb3J0aW5nIHRyYW5zZm9ybWF0aW9uKSwgRGF2aWQgV2hlZWxlciAgKGFnYWluLCAgZm9yCi0gICAgICAgdGhlIEh1ZmZtYW4gY29kZXIpLCBQZXRlciBGZW53aWNrIChmb3IgdGhlIHN0cnVjdHVyZWQgY29kwq0KLSAgICAgICBpbmcgbW9kZWwgaW4gdGhlIG9yaWdpbmFsIF8IYl8Iel8IaV8IcF8ILCBhbmQgbWFueSByZWZpbmVtZW50cyksIGFuZAotICAgICAgIEFsaXN0YWlyICBNb2ZmYXQsICBSYWRmb3JkICBOZWFsICBhbmQgIElhbiBXaXR0ZW4gKGZvciB0aGUKLSAgICAgICBhcml0aG1ldGljICBjb2RlciAgaW4gIHRoZSAgb3JpZ2luYWwgIF8IYl8Iel8IaV8IcF8IKV8ILiAgIEkgIGFtICBtdWNoCi0gICAgICAgaW5kZWJ0ZWQgZm9yIHRoZWlyIGhlbHAsIHN1cHBvcnQgYW5kIGFkdmljZS4gIFNlZSB0aGUgbWFuwq0KLSAgICAgICB1YWwgaW4gdGhlIHNvdXJjZSBkaXN0cmlidXRpb24gZm9yIHBvaW50ZXJzIHRvIHNvdXJjZXMgIG9mCi0gICAgICAgZG9jdW1lbnRhdGlvbi4gIENocmlzdGlhbiB2b24gUm9xdWVzIGVuY291cmFnZWQgbWUgdG8gbG9vawotICAgICAgIGZvciBmYXN0ZXIgc29ydGluZyBhbGdvcml0aG1zLCBzbyBhcyB0byBzcGVlZCB1cCAgY29tcHJlc8KtCi0gICAgICAgc2lvbi4gIEJlbGEgTHVia2luIGVuY291cmFnZWQgbWUgdG8gaW1wcm92ZSB0aGUgd29yc3TigJBjYXNlCi0gICAgICAgY29tcHJlc3Npb24gcGVyZm9ybWFuY2UuICBEb25uYSBSb2JpbnNvbiBYTUxpc2VkIHRoZSBkb2N1wq0KLSAgICAgICBtZW50YXRpb24uICAgVGhlIGJ6KiBzY3JpcHRzIGFyZSBkZXJpdmVkIGZyb20gdGhvc2Ugb2YgR05VCi0gICAgICAgZ3ppcC4gIE1hbnkgcGVvcGxlIHNlbnQgcGF0Y2hlcywgaGVscGVkICB3aXRoICBwb3J0YWJpbGl0eQotICAgICAgIHByb2JsZW1zLCAgbGVudCAgbWFjaGluZXMsICBnYXZlIGFkdmljZSBhbmQgd2VyZSBnZW5lcmFsbHkKLSAgICAgICBoZWxwZnVsLgotCi0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnppcDIoMSkKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6aXAyLmMgYi9VdGlsaXRpZXMvY21iemlwMi9iemlwMi5jCmluZGV4IDg4ZTVmMDkuLmQ5NWQyODAgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6aXAyLmMKKysrIGIvVXRpbGl0aWVzL2NtYnppcDIvYnppcDIuYwpAQCAtNyw4ICs3LDggQEAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJ6aXAyL2xpYmJ6aXAyLCBhIHByb2dyYW0gYW5kIGxpYnJhcnkgZm9yCiAgICBsb3NzbGVzcywgYmxvY2stc29ydGluZyBkYXRhIGNvbXByZXNzaW9uLgogCi0gICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcKLSAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDA3IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYnppcC5vcmc+CisgICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC44IG9mIDEzIEp1bHkgMjAxOQorICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMTkgSnVsaWFuIFNld2FyZCA8anNld2FyZEBhY20ub3JnPgogCiAgICBQbGVhc2UgcmVhZCB0aGUgV0FSTklORywgRElTQ0xBSU1FUiBhbmQgUEFURU5UUyBzZWN0aW9ucyBpbiB0aGUgCiAgICBSRUFETUUgZmlsZS4KQEAgLTEyOCwxMiArMTI4LDEyIEBACiAjaWYgQlpfTENDV0lOMzIKICMgICBpbmNsdWRlIDxpby5oPgogIyAgIGluY2x1ZGUgPGZjbnRsLmg+Ci0jICAgaW5jbHVkZSA8c3lzXHN0YXQuaD4KKyMgICBpbmNsdWRlIDxzeXMvc3RhdC5oPgogCiAjICAgZGVmaW5lIE5PUkVUVVJOICAgICAgIC8qKi8KICMgICBkZWZpbmUgUEFUSF9TRVAgICAgICAgJ1xcJwotIyAgIGRlZmluZSBNWV9MU1RBVCAgICAgICBfc3RhdAotIyAgIGRlZmluZSBNWV9TVEFUICAgICAgICBfc3RhdAorIyAgIGRlZmluZSBNWV9MU1RBVCAgICAgICBfc3RhdGk2NAorIyAgIGRlZmluZSBNWV9TVEFUICAgICAgICBfc3RhdGk2NAogIyAgIGRlZmluZSBNWV9TX0lTUkVHKHgpICAoKHgpICYgX1NfSUZSRUcpCiAjICAgZGVmaW5lIE1ZX1NfSVNESVIoeCkgICgoeCkgJiBfU19JRkRJUikKIApAQCAtMzgwLDI3ICszODAsMjcgQEAKIAogICAgaWYgKHZlcmJvc2l0eSA+PSAxKSB7CiAgICAgICBpZiAobmJ5dGVzX2luX2xvMzIgPT0gMCAmJiBuYnl0ZXNfaW5faGkzMiA9PSAwKSB7Ci0gICAgIGZwcmludGYgKCBzdGRlcnIsICIgbm8gZGF0YSBjb21wcmVzc2VkLlxuIik7CisJIGZwcmludGYgKCBzdGRlcnIsICIgbm8gZGF0YSBjb21wcmVzc2VkLlxuIik7CiAgICAgICB9IGVsc2UgewotICAgICBDaGFyICAgYnVmX25pblszMl0sIGJ1Zl9ub3V0WzMyXTsKLSAgICAgVUludDY0IG5ieXRlc19pbiwgICBuYnl0ZXNfb3V0OwotICAgICBkb3VibGUgbmJ5dGVzX2luX2QsIG5ieXRlc19vdXRfZDsKLSAgICAgdUludDY0X2Zyb21fVUludDMycyAoICZuYnl0ZXNfaW4sIAotICAgICAgICAgICAgICAgICAgIG5ieXRlc19pbl9sbzMyLCBuYnl0ZXNfaW5faGkzMiApOwotICAgICB1SW50NjRfZnJvbV9VSW50MzJzICggJm5ieXRlc19vdXQsIAotICAgICAgICAgICAgICAgICAgIG5ieXRlc19vdXRfbG8zMiwgbmJ5dGVzX291dF9oaTMyICk7Ci0gICAgIG5ieXRlc19pbl9kICA9IHVJbnQ2NF90b19kb3VibGUgKCAmbmJ5dGVzX2luICk7Ci0gICAgIG5ieXRlc19vdXRfZCA9IHVJbnQ2NF90b19kb3VibGUgKCAmbmJ5dGVzX291dCApOwotICAgICB1SW50NjRfdG9Bc2NpaSAoIGJ1Zl9uaW4sICZuYnl0ZXNfaW4gKTsKLSAgICAgdUludDY0X3RvQXNjaWkgKCBidWZfbm91dCwgJm5ieXRlc19vdXQgKTsKLSAgICAgZnByaW50ZiAoIHN0ZGVyciwgIiU2LjNmOjEsICU2LjNmIGJpdHMvYnl0ZSwgIgotICAgICAgICAgICAiJTUuMmYlJSBzYXZlZCwgJXMgaW4sICVzIG91dC5cbiIsCi0gICAgICAgICAgIG5ieXRlc19pbl9kIC8gbmJ5dGVzX291dF9kLAotICAgICAgICAgICAoOC4wICogbmJ5dGVzX291dF9kKSAvIG5ieXRlc19pbl9kLAotICAgICAgICAgICAxMDAuMCAqICgxLjAgLSBuYnl0ZXNfb3V0X2QgLyBuYnl0ZXNfaW5fZCksCi0gICAgICAgICAgIGJ1Zl9uaW4sCi0gICAgICAgICAgIGJ1Zl9ub3V0Ci0gICAgICAgICApOworCSBDaGFyICAgYnVmX25pblszMl0sIGJ1Zl9ub3V0WzMyXTsKKwkgVUludDY0IG5ieXRlc19pbiwgICBuYnl0ZXNfb3V0OworCSBkb3VibGUgbmJ5dGVzX2luX2QsIG5ieXRlc19vdXRfZDsKKwkgdUludDY0X2Zyb21fVUludDMycyAoICZuYnl0ZXNfaW4sIAorCQkJICAgICAgIG5ieXRlc19pbl9sbzMyLCBuYnl0ZXNfaW5faGkzMiApOworCSB1SW50NjRfZnJvbV9VSW50MzJzICggJm5ieXRlc19vdXQsIAorCQkJICAgICAgIG5ieXRlc19vdXRfbG8zMiwgbmJ5dGVzX291dF9oaTMyICk7CisJIG5ieXRlc19pbl9kICA9IHVJbnQ2NF90b19kb3VibGUgKCAmbmJ5dGVzX2luICk7CisJIG5ieXRlc19vdXRfZCA9IHVJbnQ2NF90b19kb3VibGUgKCAmbmJ5dGVzX291dCApOworCSB1SW50NjRfdG9Bc2NpaSAoIGJ1Zl9uaW4sICZuYnl0ZXNfaW4gKTsKKwkgdUludDY0X3RvQXNjaWkgKCBidWZfbm91dCwgJm5ieXRlc19vdXQgKTsKKwkgZnByaW50ZiAoIHN0ZGVyciwgIiU2LjNmOjEsICU2LjNmIGJpdHMvYnl0ZSwgIgorCQkgICAiJTUuMmYlJSBzYXZlZCwgJXMgaW4sICVzIG91dC5cbiIsCisJCSAgIG5ieXRlc19pbl9kIC8gbmJ5dGVzX291dF9kLAorCQkgICAoOC4wICogbmJ5dGVzX291dF9kKSAvIG5ieXRlc19pbl9kLAorCQkgICAxMDAuMCAqICgxLjAgLSBuYnl0ZXNfb3V0X2QgLyBuYnl0ZXNfaW5fZCksCisJCSAgIGJ1Zl9uaW4sCisJCSAgIGJ1Zl9ub3V0CisJCSApOwogICAgICAgfQogICAgfQogCkBAIC01MDUsMTEgKzUwNSwxMSBAQAogICAgaWYgKGZvcmNlT3ZlcndyaXRlKSB7CiAgICAgICByZXdpbmQoelN0cmVhbSk7CiAgICAgICB3aGlsZSAoVHJ1ZSkgewotICAgICAgICAgaWYgKG15ZmVvZih6U3RyZWFtKSkgYnJlYWs7Ci0gICAgICAgICBucmVhZCA9IGZyZWFkICggb2J1Ziwgc2l6ZW9mKFVDaGFyKSwgNTAwMCwgelN0cmVhbSApOwotICAgICAgICAgaWYgKGZlcnJvcih6U3RyZWFtKSkgZ290byBlcnJoYW5kbGVyX2lvOwotICAgICAgICAgaWYgKG5yZWFkID4gMCkgZndyaXRlICggb2J1Ziwgc2l6ZW9mKFVDaGFyKSwgbnJlYWQsIHN0cmVhbSApOwotICAgICAgICAgaWYgKGZlcnJvcihzdHJlYW0pKSBnb3RvIGVycmhhbmRsZXJfaW87CisgICAgICAJIGlmIChteWZlb2YoelN0cmVhbSkpIGJyZWFrOworICAgICAgCSBucmVhZCA9IGZyZWFkICggb2J1Ziwgc2l6ZW9mKFVDaGFyKSwgNTAwMCwgelN0cmVhbSApOworICAgICAgCSBpZiAoZmVycm9yKHpTdHJlYW0pKSBnb3RvIGVycmhhbmRsZXJfaW87CisgICAgICAJIGlmIChucmVhZCA+IDApIGZ3cml0ZSAoIG9idWYsIHNpemVvZihVQ2hhciksIG5yZWFkLCBzdHJlYW0gKTsKKyAgICAgIAkgaWYgKGZlcnJvcihzdHJlYW0pKSBnb3RvIGVycmhhbmRsZXJfaW87CiAgICAgICB9CiAgICAgICBnb3RvIGNsb3Nlb2s7CiAgICB9CkBAIC01NTQsNyArNTU0LDcgQEAKIEJvb2wgdGVzdFN0cmVhbSAoIEZJTEUgKnpTdHJlYW0gKQogewogICAgQlpGSUxFKiBiemYgPSBOVUxMOwotICAgSW50MzIgICBiemVyciwgYnplcnJfZHVtbXksIHJldCwgbnJlYWQsIHN0cmVhbU5vLCBpOworICAgSW50MzIgICBiemVyciwgYnplcnJfZHVtbXksIHJldCwgc3RyZWFtTm8sIGk7CiAgICBVQ2hhciAgIG9idWZbNTAwMF07CiAgICBVQ2hhciAgIHVudXNlZFtCWl9NQVhfVU5VU0VEXTsKICAgIEludDMyICAgblVudXNlZDsKQEAgLTU3Nyw3ICs1NzcsNyBAQAogICAgICAgc3RyZWFtTm8rKzsKIAogICAgICAgd2hpbGUgKGJ6ZXJyID09IEJaX09LKSB7Ci0gICAgICAgICBucmVhZCA9IEJaMl9ielJlYWQgKCAmYnplcnIsIGJ6Ziwgb2J1ZiwgNTAwMCApOworICAgICAgICAgQloyX2J6UmVhZCAoICZiemVyciwgYnpmLCBvYnVmLCA1MDAwICk7CiAgICAgICAgICBpZiAoYnplcnIgPT0gQlpfREFUQV9FUlJPUl9NQUdJQykgZ290byBlcnJoYW5kbGVyOwogICAgICAgfQogICAgICAgaWYgKGJ6ZXJyICE9IEJaX1NUUkVBTV9FTkQpIGdvdG8gZXJyaGFuZGxlcjsKQEAgLTc0OCw4ICs3NDgsOCBAQAogICAgZnByaW50ZiAoIHN0ZGVyciwKICAgICAgICAgICAgICAiXG4lczogUEFOSUMgLS0gaW50ZXJuYWwgY29uc2lzdGVuY3kgZXJyb3I6XG4iCiAgICAgICAgICAgICAgIlx0JXNcbiIKLSAgICAgICAgICAgICAiXHRUaGlzIGlzIGEgQlVHLiAgUGxlYXNlIHJlcG9ydCBpdCB0byBtZSBhdDpcbiIKLSAgICAgICAgICAgICAiXHRqc2V3YXJkQGJ6aXAub3JnXG4iLAorICAgICAgICAgICAgICJcdFRoaXMgaXMgYSBCVUcuICBQbGVhc2UgcmVwb3J0IGl0IHRvOlxuIgorICAgICAgICAgICAgICJcdGJ6aXAyLWRldmVsQHNvdXJjZXdhcmUub3JnXG4iLAogICAgICAgICAgICAgIHByb2dOYW1lLCBzICk7CiAgICBzaG93RmlsZU5hbWVzKCk7CiAgICBjbGVhblVwQW5kRmFpbCggMyApOwpAQCAtNzc1LDkgKzc3NSw5IEBACiB7CiAgIGlmIChub2lzeSkgewogICAgIGZwcmludGYgKCBzdGRlcnIsCi0gICAgICAgICAgIlxuJXM6IENvbXByZXNzZWQgZmlsZSBlbmRzIHVuZXhwZWN0ZWRseTtcblx0IgotICAgICAgICAgICJwZXJoYXBzIGl0IGlzIGNvcnJ1cHRlZD8gICpQb3NzaWJsZSogcmVhc29uIGZvbGxvd3MuXG4iLAotICAgICAgICAgIHByb2dOYW1lICk7CisJICAgICAgIlxuJXM6IENvbXByZXNzZWQgZmlsZSBlbmRzIHVuZXhwZWN0ZWRseTtcblx0IgorCSAgICAgICJwZXJoYXBzIGl0IGlzIGNvcnJ1cHRlZD8gICpQb3NzaWJsZSogcmVhc29uIGZvbGxvd3MuXG4iLAorCSAgICAgIHByb2dOYW1lICk7CiAgICAgcGVycm9yICggcHJvZ05hbWUgKTsKICAgICBzaG93RmlsZU5hbWVzKCk7CiAgICAgY2FkdmlzZSgpOwpAQCAtODI5LDcgKzgyOSw3IEBACiAgICAgICAiICAgVGhlIHVzZXIncyBtYW51YWwsIFNlY3Rpb24gNC4zLCBoYXMgbW9yZSBpbmZvIG9uICgxKSBhbmQgKDIpLlxuIgogICAgICAgIiAgIFxuIgogICAgICAgIiAgIElmIHlvdSBzdXNwZWN0IHRoaXMgaXMgYSBidWcgaW4gYnppcDIsIG9yIGFyZSB1bnN1cmUgYWJvdXQgKDEpXG4iCi0gICAgICAiICAgb3IgKDIpLCBmZWVsIGZyZWUgdG8gcmVwb3J0IGl0IHRvIG1lIGF0OiBqc2V3YXJkQGJ6aXAub3JnLlxuIgorICAgICAgIiAgIG9yICgyKSwgZmVlbCBmcmVlIHRvIHJlcG9ydCBpdCB0bzogYnppcDItZGV2ZWxAc291cmNld2FyZS5vcmcuXG4iCiAgICAgICAiICAgU2VjdGlvbiA0LjMgb2YgdGhlIHVzZXIncyBtYW51YWwgZGVzY3JpYmVzIHRoZSBpbmZvIGEgdXNlZnVsXG4iCiAgICAgICAiICAgYnVnIHJlcG9ydCBzaG91bGQgaGF2ZS4gIElmIHRoZSBtYW51YWwgaXMgYXZhaWxhYmxlIG9uIHlvdXJcbiIKICAgICAgICIgICBzeXN0ZW0sIHBsZWFzZSB0cnkgYW5kIHJlYWQgaXQgYmVmb3JlIG1haWxpbmcgbWUuICBJZiB5b3UgZG9uJ3RcbiIKQEAgLTg1Miw3ICs4NTIsNyBAQAogICAgICAgIiAgIFRoZSB1c2VyJ3MgbWFudWFsLCBTZWN0aW9uIDQuMywgaGFzIG1vcmUgaW5mbyBvbiAoMikgYW5kICgzKS5cbiIKICAgICAgICIgICBcbiIKICAgICAgICIgICBJZiB5b3Ugc3VzcGVjdCB0aGlzIGlzIGEgYnVnIGluIGJ6aXAyLCBvciBhcmUgdW5zdXJlIGFib3V0ICgyKVxuIgotICAgICAgIiAgIG9yICgzKSwgZmVlbCBmcmVlIHRvIHJlcG9ydCBpdCB0byBtZSBhdDoganNld2FyZEBiemlwLm9yZy5cbiIKKyAgICAgICIgICBvciAoMyksIGZlZWwgZnJlZSB0byByZXBvcnQgaXQgdG86IGJ6aXAyLWRldmVsQHNvdXJjZXdhcmUub3JnLlxuIgogICAgICAgIiAgIFNlY3Rpb24gNC4zIG9mIHRoZSB1c2VyJ3MgbWFudWFsIGRlc2NyaWJlcyB0aGUgaW5mbyBhIHVzZWZ1bFxuIgogICAgICAgIiAgIGJ1ZyByZXBvcnQgc2hvdWxkIGhhdmUuICBJZiB0aGUgbWFudWFsIGlzIGF2YWlsYWJsZSBvbiB5b3VyXG4iCiAgICAgICAiICAgc3lzdGVtLCBwbGVhc2UgdHJ5IGFuZCByZWFkIGl0IGJlZm9yZSBtYWlsaW5nIG1lLiAgSWYgeW91IGRvbid0XG4iCkBAIC0xMjAwLDEyICsxMjAwLDEyIEBACiAgICB9CiAgICBpZiAoIHNyY01vZGUgPT0gU01fRjJGICYmIGZpbGVFeGlzdHMgKCBvdXROYW1lICkgKSB7CiAgICAgICBpZiAoZm9yY2VPdmVyd3JpdGUpIHsKLSAgICAgcmVtb3ZlKG91dE5hbWUpOworCSByZW1vdmUob3V0TmFtZSk7CiAgICAgICB9IGVsc2UgewotICAgICBmcHJpbnRmICggc3RkZXJyLCAiJXM6IE91dHB1dCBmaWxlICVzIGFscmVhZHkgZXhpc3RzLlxuIiwKLSAgICAgICAgICAgcHJvZ05hbWUsIG91dE5hbWUgKTsKLSAgICAgc2V0RXhpdCgxKTsKLSAgICAgcmV0dXJuOworCSBmcHJpbnRmICggc3RkZXJyLCAiJXM6IE91dHB1dCBmaWxlICVzIGFscmVhZHkgZXhpc3RzLlxuIiwKKwkJICAgcHJvZ05hbWUsIG91dE5hbWUgKTsKKwkgc2V0RXhpdCgxKTsKKwkgcmV0dXJuOwogICAgICAgfQogICAgfQogICAgaWYgKCBzcmNNb2RlID09IFNNX0YyRiAmJiAhZm9yY2VPdmVyd3JpdGUgJiYKQEAgLTEzODYsNyArMTM4Niw3IEBACiAgICB9ICAgCiAgICBpZiAoIHNyY01vZGUgPT0gU01fRjJGICYmIGZpbGVFeGlzdHMgKCBvdXROYW1lICkgKSB7CiAgICAgICBpZiAoZm9yY2VPdmVyd3JpdGUpIHsKLSAgICByZW1vdmUob3V0TmFtZSk7CisJcmVtb3ZlKG91dE5hbWUpOwogICAgICAgfSBlbHNlIHsKICAgICAgICAgZnByaW50ZiAoIHN0ZGVyciwgIiVzOiBPdXRwdXQgZmlsZSAlcyBhbHJlYWR5IGV4aXN0cy5cbiIsCiAgICAgICAgICAgICAgICAgICBwcm9nTmFtZSwgb3V0TmFtZSApOwpAQCAtMTYwNSwxMSArMTYwNSwxMSBAQAogICAgICJiemlwMiwgYSBibG9jay1zb3J0aW5nIGZpbGUgY29tcHJlc3Nvci4gICIKICAgICAiVmVyc2lvbiAlcy5cbiIKICAgICAiICAgXG4iCi0gICAgIiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDA3IGJ5IEp1bGlhbiBTZXdhcmQuXG4iCisgICAgIiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDE5IGJ5IEp1bGlhbiBTZXdhcmQuXG4iCiAgICAgIiAgIFxuIgogICAgICIgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuIgogICAgICIgICBpdCB1bmRlciB0aGUgdGVybXMgc2V0IG91dCBpbiB0aGUgTElDRU5TRSBmaWxlLCB3aGljaCBpcyBpbmNsdWRlZFxuIgotICAgICIgICBpbiB0aGUgYnppcDItMS4wLjUgc291cmNlIGRpc3RyaWJ1dGlvbi5cbiIKKyAgICAiICAgaW4gdGhlIGJ6aXAyIHNvdXJjZSBkaXN0cmlidXRpb24uXG4iCiAgICAgIiAgIFxuIgogICAgICIgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiIKICAgICAiICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiIKQEAgLTE5OTcsMTggKzE5OTcsMjAgQEAKICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBkZWNvZGUgPSBUcnVlOwogICAgICAgICAgZm9yIChhYSA9IGFyZ0xpc3Q7IGFhICE9IE5VTEw7IGFhID0gYWEtPmxpbmspIHsKLSAgICAgICAgaWYgKElTRkxBRygiLS0iKSkgeyBkZWNvZGUgPSBGYWxzZTsgY29udGludWU7IH0KKwkgICAgaWYgKElTRkxBRygiLS0iKSkgeyBkZWNvZGUgPSBGYWxzZTsgY29udGludWU7IH0KICAgICAgICAgICAgIGlmIChhYS0+bmFtZVswXSA9PSAnLScgJiYgZGVjb2RlKSBjb250aW51ZTsKICAgICAgICAgICAgIG51bUZpbGVzUHJvY2Vzc2VkKys7CiAgICAgICAgICAgICB0ZXN0ZiAoIGFhLT5uYW1lICk7Ci0gICAgIH0KKwkgfQogICAgICAgfQotICAgICAgaWYgKHRlc3RGYWlsc0V4aXN0ICYmIG5vaXN5KSB7Ci0gICAgICAgICBmcHJpbnRmICggc3RkZXJyLAotICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICJZb3UgY2FuIHVzZSB0aGUgYGJ6aXAycmVjb3ZlcicgcHJvZ3JhbSB0byBhdHRlbXB0IHRvIHJlY292ZXJcbiIKLSAgICAgICAgICAgImRhdGEgZnJvbSB1bmRhbWFnZWQgc2VjdGlvbnMgb2YgY29ycnVwdGVkIGZpbGVzLlxuXG4iCi0gICAgICAgICApOworICAgICAgaWYgKHRlc3RGYWlsc0V4aXN0KSB7CisJIGlmIChub2lzeSkgeworICAgICAgICAgICAgZnByaW50ZiAoIHN0ZGVyciwKKyAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICJZb3UgY2FuIHVzZSB0aGUgYGJ6aXAycmVjb3ZlcicgcHJvZ3JhbSB0byBhdHRlbXB0IHRvIHJlY292ZXJcbiIKKyAgICAgICAgICAgICAgICJkYXRhIGZyb20gdW5kYW1hZ2VkIHNlY3Rpb25zIG9mIGNvcnJ1cHRlZCBmaWxlcy5cblxuIgorICAgICAgICAgICAgKTsKKwkgfQogICAgICAgICAgc2V0RXhpdCgyKTsKICAgICAgICAgIGV4aXQoZXhpdFZhbHVlKTsKICAgICAgIH0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6aXAyLnR4dCBiL1V0aWxpdGllcy9jbWJ6aXAyL2J6aXAyLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZiOWM3NC4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9iemlwMi50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzOTEgKzAsMCBAQAotCi1OQU1FCi0gICAgICAgYnppcDIsIGJ1bnppcDIgLSBhIGJsb2NrLXNvcnRpbmcgZmlsZSBjb21wcmVzc29yLCB2MS4wLjQKLSAgICAgICBiemNhdCAtIGRlY29tcHJlc3NlcyBmaWxlcyB0byBzdGRvdXQKLSAgICAgICBiemlwMnJlY292ZXIgLSByZWNvdmVycyBkYXRhIGZyb20gZGFtYWdlZCBiemlwMiBmaWxlcwotCi0KLVNZTk9QU0lTCi0gICAgICAgYnppcDIgWyAtY2Rma3FzdHZ6VkwxMjM0NTY3ODkgXSBbIGZpbGVuYW1lcyAuLi4gIF0KLSAgICAgICBidW56aXAyIFsgLWZrdnNWTCBdIFsgZmlsZW5hbWVzIC4uLiAgXQotICAgICAgIGJ6Y2F0IFsgLXMgXSBbIGZpbGVuYW1lcyAuLi4gIF0KLSAgICAgICBiemlwMnJlY292ZXIgZmlsZW5hbWUKLQotCi1ERVNDUklQVElPTgotICAgICAgIGJ6aXAyICBjb21wcmVzc2VzICBmaWxlcyAgdXNpbmcgIHRoZSBCdXJyb3dzLVdoZWVsZXIgYmxvY2sKLSAgICAgICBzb3J0aW5nIHRleHQgY29tcHJlc3Npb24gYWxnb3JpdGhtLCAgYW5kICBIdWZmbWFuICBjb2RpbmcuCi0gICAgICAgQ29tcHJlc3Npb24gIGlzICBnZW5lcmFsbHkgIGNvbnNpZGVyYWJseSAgYmV0dGVyIHRoYW4gdGhhdAotICAgICAgIGFjaGlldmVkIGJ5IG1vcmUgY29udmVudGlvbmFsIExaNzcvTFo3OC1iYXNlZCBjb21wcmVzc29ycywKLSAgICAgICBhbmQgIGFwcHJvYWNoZXMgIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUFBNIGZhbWlseSBvZiBzdGEtCi0gICAgICAgdGlzdGljYWwgY29tcHJlc3NvcnMuCi0KLSAgICAgICBUaGUgY29tbWFuZC1saW5lIG9wdGlvbnMgYXJlIGRlbGliZXJhdGVseSB2ZXJ5IHNpbWlsYXIgIHRvCi0gICAgICAgdGhvc2Ugb2YgR05VIGd6aXAsIGJ1dCB0aGV5IGFyZSBub3QgaWRlbnRpY2FsLgotCi0gICAgICAgYnppcDIgIGV4cGVjdHMgIGEgbGlzdCBvZiBmaWxlIG5hbWVzIHRvIGFjY29tcGFueSB0aGUgY29tLQotICAgICAgIG1hbmQtbGluZSBmbGFncy4gIEVhY2ggZmlsZSBpcyByZXBsYWNlZCAgYnkgIGEgIGNvbXByZXNzZWQKLSAgICAgICB2ZXJzaW9uICBvZiAgaXRzZWxmLCAgd2l0aCAgdGhlICBuYW1lICJvcmlnaW5hbF9uYW1lLmJ6MiIuCi0gICAgICAgRWFjaCBjb21wcmVzc2VkIGZpbGUgaGFzIHRoZSBzYW1lIG1vZGlmaWNhdGlvbiBkYXRlLCAgcGVyLQotICAgICAgIG1pc3Npb25zLCBhbmQsIHdoZW4gcG9zc2libGUsIG93bmVyc2hpcCBhcyB0aGUgY29ycmVzcG9uZC0KLSAgICAgICBpbmcgb3JpZ2luYWwsIHNvIHRoYXQgdGhlc2UgcHJvcGVydGllcyAgY2FuICBiZSAgY29ycmVjdGx5Ci0gICAgICAgcmVzdG9yZWQgIGF0ICBkZWNvbXByZXNzaW9uICB0aW1lLiAgIEZpbGUgbmFtZSBoYW5kbGluZyBpcwotICAgICAgIG5haXZlIGluIHRoZSBzZW5zZSB0aGF0IHRoZXJlIGlzIG5vIG1lY2hhbmlzbSBmb3IgcHJlc2Vydi0KLSAgICAgICBpbmcgIG9yaWdpbmFsIGZpbGUgbmFtZXMsIHBlcm1pc3Npb25zLCBvd25lcnNoaXBzIG9yIGRhdGVzCi0gICAgICAgaW4gZmlsZXN5c3RlbXMgd2hpY2ggbGFjayB0aGVzZSBjb25jZXB0cywgb3IgaGF2ZSAgc2VyaW91cwotICAgICAgIGZpbGUgbmFtZSBsZW5ndGggcmVzdHJpY3Rpb25zLCBzdWNoIGFzIE1TLURPUy4KLQotICAgICAgIGJ6aXAyICBhbmQgIGJ1bnppcDIgd2lsbCBieSBkZWZhdWx0IG5vdCBvdmVyd3JpdGUgZXhpc3RpbmcKLSAgICAgICBmaWxlcy4gIElmIHlvdSB3YW50IHRoaXMgdG8gaGFwcGVuLCBzcGVjaWZ5IHRoZSAtZiBmbGFnLgotCi0gICAgICAgSWYgbm8gZmlsZSBuYW1lcyAgYXJlICBzcGVjaWZpZWQsICBiemlwMiAgY29tcHJlc3NlcyAgZnJvbQotICAgICAgIHN0YW5kYXJkICBpbnB1dCAgdG8gIHN0YW5kYXJkIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgYnppcDIKLSAgICAgICB3aWxsIGRlY2xpbmUgdG8gd3JpdGUgY29tcHJlc3NlZCBvdXRwdXQgdG8gYSB0ZXJtaW5hbCwgIGFzCi0gICAgICAgdGhpcyAgd291bGQgIGJlICBlbnRpcmVseSAgaW5jb21wcmVoZW5zaWJsZSAgYW5kIHRoZXJlZm9yZQotICAgICAgIHBvaW50bGVzcy4KLQotICAgICAgIGJ1bnppcDIgKG9yIGJ6aXAyIC1kKSBkZWNvbXByZXNzZXMgIGFsbCAgc3BlY2lmaWVkICBmaWxlcy4KLSAgICAgICBGaWxlcyB3aGljaCB3ZXJlIG5vdCBjcmVhdGVkIGJ5IGJ6aXAyIHdpbGwgYmUgZGV0ZWN0ZWQgYW5kCi0gICAgICAgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpc3N1ZWQuICBiemlwMiAgYXR0ZW1wdHMgIHRvICBndWVzcwotICAgICAgIHRoZSAgZmlsZW5hbWUgIGZvciAgdGhlIGRlY29tcHJlc3NlZCBmaWxlIGZyb20gdGhhdCBvZiB0aGUKLSAgICAgICBjb21wcmVzc2VkIGZpbGUgYXMgZm9sbG93czoKLQotICAgICAgICAgICAgICBmaWxlbmFtZS5iejIgICAgYmVjb21lcyAgIGZpbGVuYW1lCi0gICAgICAgICAgICAgIGZpbGVuYW1lLmJ6ICAgICBiZWNvbWVzICAgZmlsZW5hbWUKLSAgICAgICAgICAgICAgZmlsZW5hbWUudGJ6MiAgIGJlY29tZXMgICBmaWxlbmFtZS50YXIKLSAgICAgICAgICAgICAgZmlsZW5hbWUudGJ6ICAgIGJlY29tZXMgICBmaWxlbmFtZS50YXIKLSAgICAgICAgICAgICAgYW55b3RoZXJuYW1lICAgIGJlY29tZXMgICBhbnlvdGhlcm5hbWUub3V0Ci0KLSAgICAgICBJZiB0aGUgZmlsZSBkb2VzIG5vdCBlbmQgaW4gb25lIG9mIHRoZSByZWNvZ25pc2VkIGVuZGluZ3MsCi0gICAgICAgLmJ6MiwgIC5ieiwgIC50YnoyIG9yIC50YnosIGJ6aXAyIGNvbXBsYWlucyB0aGF0IGl0IGNhbm5vdAotICAgICAgIGd1ZXNzIHRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBmaWxlLCBhbmQgdXNlcyB0aGUgb3JpZ2luYWwKLSAgICAgICBuYW1lIHdpdGggLm91dCBhcHBlbmRlZC4KLQotICAgICAgIEFzICB3aXRoIGNvbXByZXNzaW9uLCBzdXBwbHlpbmcgbm8gZmlsZW5hbWVzIGNhdXNlcyBkZWNvbS0KLSAgICAgICBwcmVzc2lvbiBmcm9tIHN0YW5kYXJkIGlucHV0IHRvIHN0YW5kYXJkIG91dHB1dC4KLQotICAgICAgIGJ1bnppcDIgd2lsbCBjb3JyZWN0bHkgZGVjb21wcmVzcyBhIGZpbGUgd2hpY2ggaXMgdGhlIGNvbi0KLSAgICAgICBjYXRlbmF0aW9uIG9mIHR3byBvciBtb3JlIGNvbXByZXNzZWQgZmlsZXMuICBUaGUgcmVzdWx0IGlzCi0gICAgICAgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIGNvcnJlc3BvbmRpbmcgdW5jb21wcmVzc2VkIGZpbGVzLgotICAgICAgIEludGVncml0eSB0ZXN0aW5nICgtdCkgb2YgY29uY2F0ZW5hdGVkIGNvbXByZXNzZWQgZmlsZXMgaXMKLSAgICAgICBhbHNvIHN1cHBvcnRlZC4KLQotICAgICAgIFlvdSBjYW4gYWxzbyBjb21wcmVzcyBvciBkZWNvbXByZXNzIGZpbGVzIHRvIHRoZSAgc3RhbmRhcmQKLSAgICAgICBvdXRwdXQgIGJ5IGdpdmluZyB0aGUgLWMgZmxhZy4gIE11bHRpcGxlIGZpbGVzIG1heSBiZSBjb20tCi0gICAgICAgcHJlc3NlZCBhbmQgZGVjb21wcmVzc2VkIGxpa2UgdGhpcy4gIFRoZSByZXN1bHRpbmcgb3V0cHV0cwotICAgICAgIGFyZSAgZmVkICBzZXF1ZW50aWFsbHkgdG8gc3Rkb3V0LiAgQ29tcHJlc3Npb24gb2YgbXVsdGlwbGUKLSAgICAgICBmaWxlcyBpbiB0aGlzIG1hbm5lciBnZW5lcmF0ZXMgYSBzdHJlYW0gY29udGFpbmluZyAgbXVsdGktCi0gICAgICAgcGxlIGNvbXByZXNzZWQgZmlsZSByZXByZXNlbnRhdGlvbnMuICBTdWNoIGEgc3RyZWFtIGNhbiBiZQotICAgICAgIGRlY29tcHJlc3NlZCBjb3JyZWN0bHkgb25seSAgYnkgIGJ6aXAyICB2ZXJzaW9uICAwLjkuMCAgb3IKLSAgICAgICBsYXRlci4gICBFYXJsaWVyICB2ZXJzaW9ucyBvZiBiemlwMiB3aWxsIHN0b3AgYWZ0ZXIgZGVjb20tCi0gICAgICAgcHJlc3NpbmcgdGhlIGZpcnN0IGZpbGUgaW4gdGhlIHN0cmVhbS4KLQotICAgICAgIGJ6Y2F0IChvciBiemlwMiAtZGMpIGRlY29tcHJlc3NlcyBhbGwgc3BlY2lmaWVkICBmaWxlcyAgdG8KLSAgICAgICB0aGUgc3RhbmRhcmQgb3V0cHV0LgotCi0gICAgICAgYnppcDIgIHdpbGwgIHJlYWQgYXJndW1lbnRzIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcwotICAgICAgIEJaSVAyIGFuZCBCWklQLCBpbiAgdGhhdCAgb3JkZXIsICBhbmQgIHdpbGwgIHByb2Nlc3MgIHRoZW0KLSAgICAgICBiZWZvcmUgIGFueSAgYXJndW1lbnRzICByZWFkICBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBUaGlzCi0gICAgICAgZ2l2ZXMgYSBjb252ZW5pZW50IHdheSB0byBzdXBwbHkgZGVmYXVsdCBhcmd1bWVudHMuCi0KLSAgICAgICBDb21wcmVzc2lvbiBpcyBhbHdheXMgcGVyZm9ybWVkLCBldmVuICBpZiAgdGhlICBjb21wcmVzc2VkCi0gICAgICAgZmlsZSAgaXMgc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gdGhlIG9yaWdpbmFsLiAgRmlsZXMgb2YgbGVzcwotICAgICAgIHRoYW4gYWJvdXQgb25lIGh1bmRyZWQgYnl0ZXMgdGVuZCB0byBnZXQgbGFyZ2VyLCBzaW5jZSB0aGUKLSAgICAgICBjb21wcmVzc2lvbiAgbWVjaGFuaXNtICBoYXMgIGEgIGNvbnN0YW50ICBvdmVyaGVhZCAgaW4gdGhlCi0gICAgICAgcmVnaW9uIG9mIDUwIGJ5dGVzLiAgUmFuZG9tIGRhdGEgKGluY2x1ZGluZyB0aGUgb3V0cHV0ICBvZgotICAgICAgIG1vc3QgIGZpbGUgIGNvbXByZXNzb3JzKSAgaXMgIGNvZGVkIGF0IGFib3V0IDguMDUgYml0cyBwZXIKLSAgICAgICBieXRlLCBnaXZpbmcgYW4gZXhwYW5zaW9uIG9mIGFyb3VuZCAwLjUlLgotCi0gICAgICAgQXMgYSBzZWxmLWNoZWNrIGZvciB5b3VyICBwcm90ZWN0aW9uLCAgYnppcDIgIHVzZXMgIDMyLWJpdAotICAgICAgIENSQ3MgIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNvbXByZXNzZWQgdmVyc2lvbiBvZiBhIGZpbGUKLSAgICAgICBpcyBpZGVudGljYWwgdG8gdGhlIG9yaWdpbmFsLiAgVGhpcyBndWFyZHMgYWdhaW5zdCBjb3JydXAtCi0gICAgICAgdGlvbiAgb2YgIHRoZSBjb21wcmVzc2VkIGRhdGEsIGFuZCBhZ2FpbnN0IHVuZGV0ZWN0ZWQgYnVncwotICAgICAgIGluIGJ6aXAyIChob3BlZnVsbHkgdmVyeSB1bmxpa2VseSkuICBUaGUgY2hhbmNlcyAgb2YgIGRhdGEKLSAgICAgICBjb3JydXB0aW9uICBnb2luZyAgdW5kZXRlY3RlZCAgaXMgIG1pY3Jvc2NvcGljLCAgYWJvdXQgb25lCi0gICAgICAgY2hhbmNlIGluIGZvdXIgYmlsbGlvbiBmb3IgZWFjaCBmaWxlIHByb2Nlc3NlZC4gIEJlIGF3YXJlLAotICAgICAgIHRob3VnaCwgIHRoYXQgIHRoZSAgY2hlY2sgb2NjdXJzIHVwb24gZGVjb21wcmVzc2lvbiwgc28gaXQKLSAgICAgICBjYW4gb25seSB0ZWxsIHlvdSB0aGF0IHNvbWV0aGluZyBpcyB3cm9uZy4gIEl0IGNhbid0ICBoZWxwCi0gICAgICAgeW91ICByZWNvdmVyICB0aGUgb3JpZ2luYWwgdW5jb21wcmVzc2VkIGRhdGEuICBZb3UgY2FuIHVzZQotICAgICAgIGJ6aXAycmVjb3ZlciB0byB0cnkgdG8gcmVjb3ZlciBkYXRhIGZyb20gZGFtYWdlZCBmaWxlcy4KLQotICAgICAgIFJldHVybiB2YWx1ZXM6IDAgZm9yIGEgbm9ybWFsIGV4aXQsICAxICBmb3IgIGVudmlyb25tZW50YWwKLSAgICAgICBwcm9ibGVtcyAgKGZpbGUgbm90IGZvdW5kLCBpbnZhbGlkIGZsYWdzLCBJL08gZXJyb3JzLCAmYyksCi0gICAgICAgMiB0byBpbmRpY2F0ZSBhIGNvcnJ1cHQgY29tcHJlc3NlZCBmaWxlLCAzIGZvciBhbiBpbnRlcm5hbAotICAgICAgIGNvbnNpc3RlbmN5IGVycm9yIChlZywgYnVnKSB3aGljaCBjYXVzZWQgYnppcDIgdG8gcGFuaWMuCi0KLQotT1BUSU9OUwotICAgICAgIC1jIC0tc3Rkb3V0Ci0gICAgICAgICAgICAgIENvbXByZXNzIG9yIGRlY29tcHJlc3MgdG8gc3RhbmRhcmQgb3V0cHV0LgotCi0gICAgICAgLWQgLS1kZWNvbXByZXNzCi0gICAgICAgICAgICAgIEZvcmNlICBkZWNvbXByZXNzaW9uLiAgYnppcDIsIGJ1bnppcDIgYW5kIGJ6Y2F0IGFyZQotICAgICAgICAgICAgICByZWFsbHkgdGhlIHNhbWUgcHJvZ3JhbSwgIGFuZCAgdGhlICBkZWNpc2lvbiAgYWJvdXQKLSAgICAgICAgICAgICAgd2hhdCAgYWN0aW9ucyB0byB0YWtlIGlzIGRvbmUgb24gdGhlIGJhc2lzIG9mIHdoaWNoCi0gICAgICAgICAgICAgIG5hbWUgaXMgdXNlZC4gIFRoaXMgZmxhZyBvdmVycmlkZXMgdGhhdCAgbWVjaGFuaXNtLAotICAgICAgICAgICAgICBhbmQgZm9yY2VzIGJ6aXAyIHRvIGRlY29tcHJlc3MuCi0KLSAgICAgICAteiAtLWNvbXByZXNzCi0gICAgICAgICAgICAgIFRoZSAgIGNvbXBsZW1lbnQgICB0byAgIC1kOiAgIGZvcmNlcyAgIGNvbXByZXNzaW9uLAotICAgICAgICAgICAgICByZWdhcmRsZXNzIG9mIHRoZSBpbnZvY2F0aW9uIG5hbWUuCi0KLSAgICAgICAtdCAtLXRlc3QKLSAgICAgICAgICAgICAgQ2hlY2sgaW50ZWdyaXR5IG9mIHRoZSBzcGVjaWZpZWQgZmlsZShzKSwgYnV0IGRvbid0Ci0gICAgICAgICAgICAgIGRlY29tcHJlc3MgIHRoZW0uICAgVGhpcyAgcmVhbGx5ICBwZXJmb3JtcyAgYSB0cmlhbAotICAgICAgICAgICAgICBkZWNvbXByZXNzaW9uIGFuZCB0aHJvd3MgYXdheSB0aGUgcmVzdWx0LgotCi0gICAgICAgLWYgLS1mb3JjZQotICAgICAgICAgICAgICBGb3JjZSBvdmVyd3JpdGUgb2Ygb3V0cHV0IGZpbGVzLiAgIE5vcm1hbGx5LCAgYnppcDIKLSAgICAgICAgICAgICAgd2lsbCAgbm90ICBvdmVyd3JpdGUgIGV4aXN0aW5nICBvdXRwdXQgZmlsZXMuICBBbHNvCi0gICAgICAgICAgICAgIGZvcmNlcyBiemlwMiB0byBicmVhayBoYXJkIGxpbmtzIHRvIGZpbGVzLCB3aGljaCBpdAotICAgICAgICAgICAgICBvdGhlcndpc2Ugd291bGRuJ3QgZG8uCi0KLSAgICAgICAgICAgICAgYnppcDIgIG5vcm1hbGx5ICBkZWNsaW5lcyB0byBkZWNvbXByZXNzIGZpbGVzIHdoaWNoCi0gICAgICAgICAgICAgIGRvbid0IGhhdmUgdGhlICBjb3JyZWN0ICBtYWdpYyAgaGVhZGVyICBieXRlcy4gICBJZgotICAgICAgICAgICAgICBmb3JjZWQgICgtZiksICBob3dldmVyLCAgaXQgIHdpbGwgIHBhc3MgIHN1Y2ggZmlsZXMKLSAgICAgICAgICAgICAgdGhyb3VnaCB1bm1vZGlmaWVkLiAgVGhpcyBpcyBob3cgR05VIGd6aXAgIGJlaGF2ZXMuCi0KLSAgICAgICAtayAtLWtlZXAKLSAgICAgICAgICAgICAgS2VlcCAgKGRvbid0IGRlbGV0ZSkgaW5wdXQgZmlsZXMgZHVyaW5nIGNvbXByZXNzaW9uCi0gICAgICAgICAgICAgIG9yIGRlY29tcHJlc3Npb24uCi0KLSAgICAgICAtcyAtLXNtYWxsCi0gICAgICAgICAgICAgIFJlZHVjZSBtZW1vcnkgdXNhZ2UsIGZvciBjb21wcmVzc2lvbiwgZGVjb21wcmVzc2lvbgotICAgICAgICAgICAgICBhbmQgIHRlc3RpbmcuICAgRmlsZXMgIGFyZSAgZGVjb21wcmVzc2VkIGFuZCB0ZXN0ZWQKLSAgICAgICAgICAgICAgdXNpbmcgYSBtb2RpZmllZCBhbGdvcml0aG0gd2hpY2ggb25seSByZXF1aXJlcyAgMi41Ci0gICAgICAgICAgICAgIGJ5dGVzICBwZXIgIGJsb2NrIGJ5dGUuICBUaGlzIG1lYW5zIGFueSBmaWxlIGNhbiBiZQotICAgICAgICAgICAgICBkZWNvbXByZXNzZWQgaW4gMjMwMGsgb2YgbWVtb3J5LCAgYWxiZWl0ICBhdCAgYWJvdXQKLSAgICAgICAgICAgICAgaGFsZiB0aGUgbm9ybWFsIHNwZWVkLgotCi0gICAgICAgICAgICAgIER1cmluZyAgY29tcHJlc3Npb24sICAtcyAgc2VsZWN0cyAgYSAgYmxvY2sgc2l6ZSBvZgotICAgICAgICAgICAgICAyMDBrLCB3aGljaCBsaW1pdHMgbWVtb3J5IHVzZSB0byAgYXJvdW5kICB0aGUgIHNhbWUKLSAgICAgICAgICAgICAgZmlndXJlLCAgYXQgIHRoZSBleHBlbnNlIG9mIHlvdXIgY29tcHJlc3Npb24gcmF0aW8uCi0gICAgICAgICAgICAgIEluIHNob3J0LCBpZiB5b3VyICBtYWNoaW5lICBpcyAgbG93ICBvbiAgbWVtb3J5ICAoOAotICAgICAgICAgICAgICBtZWdhYnl0ZXMgIG9yICBsZXNzKSwgIHVzZSAgLXMgZm9yIGV2ZXJ5dGhpbmcuICBTZWUKLSAgICAgICAgICAgICAgTUVNT1JZIE1BTkFHRU1FTlQgYmVsb3cuCi0KLSAgICAgICAtcSAtLXF1aWV0Ci0gICAgICAgICAgICAgIFN1cHByZXNzIG5vbi1lc3NlbnRpYWwgd2FybmluZyBtZXNzYWdlcy4gICBNZXNzYWdlcwotICAgICAgICAgICAgICBwZXJ0YWluaW5nICB0byBJL08gZXJyb3JzIGFuZCBvdGhlciBjcml0aWNhbCBldmVudHMKLSAgICAgICAgICAgICAgd2lsbCBub3QgYmUgc3VwcHJlc3NlZC4KLQotICAgICAgIC12IC0tdmVyYm9zZQotICAgICAgICAgICAgICBWZXJib3NlIG1vZGUgLS0gc2hvdyB0aGUgY29tcHJlc3Npb24gcmF0aW8gZm9yIGVhY2gKLSAgICAgICAgICAgICAgZmlsZSAgcHJvY2Vzc2VkLiAgIEZ1cnRoZXIgIC12J3MgIGluY3JlYXNlIHRoZSB2ZXItCi0gICAgICAgICAgICAgIGJvc2l0eSBsZXZlbCwgc3Bld2luZyBvdXQgbG90cyBvZiBpbmZvcm1hdGlvbiB3aGljaAotICAgICAgICAgICAgICBpcyBwcmltYXJpbHkgb2YgaW50ZXJlc3QgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMuCi0KLSAgICAgICAtTCAtLWxpY2Vuc2UgLVYgLS12ZXJzaW9uCi0gICAgICAgICAgICAgIERpc3BsYXkgIHRoZSAgc29mdHdhcmUgIHZlcnNpb24sICBsaWNlbnNlIHRlcm1zIGFuZAotICAgICAgICAgICAgICBjb25kaXRpb25zLgotCi0gICAgICAgLTEgKG9yIC0tZmFzdCkgdG8gLTkgKG9yIC0tYmVzdCkKLSAgICAgICAgICAgICAgU2V0IHRoZSBibG9jayBzaXplIHRvIDEwMCBrLCAyMDAgayAuLiAgOTAwICBrICB3aGVuCi0gICAgICAgICAgICAgIGNvbXByZXNzaW5nLiAgIEhhcyAgbm8gIGVmZmVjdCAgd2hlbiBkZWNvbXByZXNzaW5nLgotICAgICAgICAgICAgICBTZWUgTUVNT1JZIE1BTkFHRU1FTlQgYmVsb3cuICBUaGUgLS1mYXN0IGFuZCAtLWJlc3QKLSAgICAgICAgICAgICAgYWxpYXNlcyAgYXJlICBwcmltYXJpbHkgZm9yIEdOVSBnemlwIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIC0tZmFzdCBkb2Vzbid0IG1ha2UgdGhpbmdzICBzaWduaWZpLQotICAgICAgICAgICAgICBjYW50bHkgIGZhc3Rlci4gICBBbmQgIC0tYmVzdCAgbWVyZWx5ICBzZWxlY3RzICB0aGUKLSAgICAgICAgICAgICAgZGVmYXVsdCBiZWhhdmlvdXIuCi0KLSAgICAgICAtLSAgICAgVHJlYXRzIGFsbCBzdWJzZXF1ZW50IGFyZ3VtZW50cyBhcyBmaWxlIG5hbWVzLCBldmVuCi0gICAgICAgICAgICAgIGlmIHRoZXkgc3RhcnQgd2l0aCBhIGRhc2guICBUaGlzIGlzIHNvIHlvdSBjYW4gaGFuLQotICAgICAgICAgICAgICBkbGUgZmlsZXMgd2l0aCBuYW1lcyBiZWdpbm5pbmcgIHdpdGggIGEgIGRhc2gsICBmb3IKLSAgICAgICAgICAgICAgZXhhbXBsZTogYnppcDIgLS0gLW15ZmlsZW5hbWUuCi0KLSAgICAgICAtLXJlcGV0aXRpdmUtZmFzdCAtLXJlcGV0aXRpdmUtYmVzdAotICAgICAgICAgICAgICBUaGVzZSAgZmxhZ3MgIGFyZSAgcmVkdW5kYW50ICBpbiB2ZXJzaW9ucyAwLjkuNSBhbmQKLSAgICAgICAgICAgICAgYWJvdmUuICBUaGV5IHByb3ZpZGVkIHNvbWUgY29hcnNlIGNvbnRyb2wgb3ZlciAgdGhlCi0gICAgICAgICAgICAgIGJlaGF2aW91ciAgb2YgdGhlIHNvcnRpbmcgYWxnb3JpdGhtIGluIGVhcmxpZXIgdmVyLQotICAgICAgICAgICAgICBzaW9ucywgd2hpY2ggd2FzIHNvbWV0aW1lcyB1c2VmdWwuICAwLjkuNSBhbmQgYWJvdmUKLSAgICAgICAgICAgICAgaGF2ZSAgYW4gIGltcHJvdmVkICBhbGdvcml0aG0gIHdoaWNoICByZW5kZXJzIHRoZXNlCi0gICAgICAgICAgICAgIGZsYWdzIGlycmVsZXZhbnQuCi0KLQotTUVNT1JZIE1BTkFHRU1FTlQKLSAgICAgICBiemlwMiBjb21wcmVzc2VzIGxhcmdlIGZpbGVzIGluIGJsb2Nrcy4gICBUaGUgIGJsb2NrICBzaXplCi0gICAgICAgYWZmZWN0cyAgYm90aCAgdGhlICBjb21wcmVzc2lvbiAgcmF0aW8gIGFjaGlldmVkLCAgYW5kIHRoZQotICAgICAgIGFtb3VudCBvZiBtZW1vcnkgbmVlZGVkIGZvciBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbi4KLSAgICAgICBUaGUgIGZsYWdzICAtMSAgdGhyb3VnaCAgLTkgIHNwZWNpZnkgIHRoZSBibG9jayBzaXplIHRvIGJlCi0gICAgICAgMTAwLDAwMCBieXRlcyB0aHJvdWdoIDkwMCwwMDAgYnl0ZXMgKHRoZSBkZWZhdWx0KSAgcmVzcGVjLQotICAgICAgIHRpdmVseS4gICBBdCAgZGVjb21wcmVzc2lvbiAgdGltZSwgdGhlIGJsb2NrIHNpemUgdXNlZCBmb3IKLSAgICAgICBjb21wcmVzc2lvbiBpcyByZWFkIGZyb20gIHRoZSAgaGVhZGVyICBvZiAgdGhlICBjb21wcmVzc2VkCi0gICAgICAgZmlsZSwgYW5kIGJ1bnppcDIgdGhlbiBhbGxvY2F0ZXMgaXRzZWxmIGp1c3QgZW5vdWdoIG1lbW9yeQotICAgICAgIHRvIGRlY29tcHJlc3MgdGhlIGZpbGUuICBTaW5jZSBibG9jayBzaXplcyBhcmUgIHN0b3JlZCAgaW4KLSAgICAgICBjb21wcmVzc2VkICBmaWxlcywgIGl0IGZvbGxvd3MgdGhhdCB0aGUgZmxhZ3MgLTEgdG8gLTkgYXJlCi0gICAgICAgaXJyZWxldmFudCB0byBhbmQgc28gaWdub3JlZCBkdXJpbmcgZGVjb21wcmVzc2lvbi4KLQotICAgICAgIENvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIHJlcXVpcmVtZW50cywgaW4gYnl0ZXMsICBjYW4KLSAgICAgICBiZSBlc3RpbWF0ZWQgYXM6Ci0KLSAgICAgICAgICAgICAgQ29tcHJlc3Npb246ICAgNDAwayArICggOCB4IGJsb2NrIHNpemUgKQotCi0gICAgICAgICAgICAgIERlY29tcHJlc3Npb246IDEwMGsgKyAoIDQgeCBibG9jayBzaXplICksIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMGsgKyAoIDIuNSB4IGJsb2NrIHNpemUgKQotCi0gICAgICAgTGFyZ2VyICBibG9jayAgc2l6ZXMgIGdpdmUgIHJhcGlkbHkgIGRpbWluaXNoaW5nICBtYXJnaW5hbAotICAgICAgIHJldHVybnMuICBNb3N0IG9mIHRoZSBjb21wcmVzc2lvbiBjb21lcyBmcm9tIHRoZSBmaXJzdCB0d28KLSAgICAgICBvciAgdGhyZWUgaHVuZHJlZCBrIG9mIGJsb2NrIHNpemUsIGEgZmFjdCB3b3J0aCBiZWFyaW5nIGluCi0gICAgICAgbWluZCB3aGVuIHVzaW5nIGJ6aXAyICBvbiAgc21hbGwgIG1hY2hpbmVzLiAgIEl0ICBpcyAgYWxzbwotICAgICAgIGltcG9ydGFudCAgdG8gIGFwcHJlY2lhdGUgIHRoYXQgIHRoZSAgZGVjb21wcmVzc2lvbiBtZW1vcnkKLSAgICAgICByZXF1aXJlbWVudCBpcyBzZXQgYXQgY29tcHJlc3Npb24gdGltZSBieSAgdGhlICBjaG9pY2UgIG9mCi0gICAgICAgYmxvY2sgc2l6ZS4KLQotICAgICAgIEZvciAgZmlsZXMgIGNvbXByZXNzZWQgIHdpdGggIHRoZSBkZWZhdWx0IDkwMGsgYmxvY2sgc2l6ZSwKLSAgICAgICBidW56aXAyIHdpbGwgcmVxdWlyZSBhYm91dCAzNzAwIGtieXRlcyB0byBkZWNvbXByZXNzLiAgIFRvCi0gICAgICAgc3VwcG9ydCBkZWNvbXByZXNzaW9uIG9mIGFueSBmaWxlIG9uIGEgNCBtZWdhYnl0ZSBtYWNoaW5lLAotICAgICAgIGJ1bnppcDIgaGFzIGFuIG9wdGlvbiB0byAgZGVjb21wcmVzcyAgdXNpbmcgIGFwcHJveGltYXRlbHkKLSAgICAgICBoYWxmIHRoaXMgYW1vdW50IG9mIG1lbW9yeSwgYWJvdXQgMjMwMCBrYnl0ZXMuICBEZWNvbXByZXMtCi0gICAgICAgc2lvbiBzcGVlZCBpcyBhbHNvIGhhbHZlZCwgc28geW91IHNob3VsZCB1c2UgIHRoaXMgIG9wdGlvbgotICAgICAgIG9ubHkgd2hlcmUgbmVjZXNzYXJ5LiAgVGhlIHJlbGV2YW50IGZsYWcgaXMgLXMuCi0KLSAgICAgICBJbiBnZW5lcmFsLCB0cnkgYW5kIHVzZSB0aGUgbGFyZ2VzdCBibG9jayBzaXplIG1lbW9yeSBjb24tCi0gICAgICAgc3RyYWludHMgIGFsbG93LCAgc2luY2UgIHRoYXQgIG1heGltaXNlcyAgdGhlICBjb21wcmVzc2lvbgotICAgICAgIGFjaGlldmVkLiAgIENvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIHNwZWVkIGFyZSB2aXJ0dS0KLSAgICAgICBhbGx5IHVuYWZmZWN0ZWQgYnkgYmxvY2sgc2l6ZS4KLQotICAgICAgIEFub3RoZXIgc2lnbmlmaWNhbnQgcG9pbnQgYXBwbGllcyB0byBmaWxlcyB3aGljaCBmaXQgaW4gIGEKLSAgICAgICBzaW5nbGUgIGJsb2NrICAtLSAgdGhhdCAgbWVhbnMgIG1vc3QgZmlsZXMgeW91J2QgZW5jb3VudGVyCi0gICAgICAgdXNpbmcgYSBsYXJnZSBibG9jayAgc2l6ZS4gICBUaGUgIGFtb3VudCAgb2YgIHJlYWwgIG1lbW9yeQotICAgICAgIHRvdWNoZWQgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBzaXplIG9mIHRoZSBmaWxlLCBzaW5jZSB0aGUKLSAgICAgICBmaWxlIGlzIHNtYWxsZXIgdGhhbiBhIGJsb2NrLiAgRm9yIGV4YW1wbGUsIGNvbXByZXNzaW5nICBhCi0gICAgICAgZmlsZSAgMjAsMDAwICBieXRlcyAgbG9uZyAgd2l0aCB0aGUgZmxhZyAtOSB3aWxsIGNhdXNlIHRoZQotICAgICAgIGNvbXByZXNzb3IgdG8gYWxsb2NhdGUgYXJvdW5kIDc2MDBrIG9mICBtZW1vcnksICBidXQgIG9ubHkKLSAgICAgICB0b3VjaCA0MDBrICsgMjAwMDAgKiA4ID0gNTYwIGtieXRlcyBvZiBpdC4gIFNpbWlsYXJseSwgdGhlCi0gICAgICAgZGVjb21wcmVzc29yIHdpbGwgYWxsb2NhdGUgMzcwMGsgYnV0ICBvbmx5ICB0b3VjaCAgMTAwayAgKwotICAgICAgIDIwMDAwICogNCA9IDE4MCBrYnl0ZXMuCi0KLSAgICAgICBIZXJlICBpcyBhIHRhYmxlIHdoaWNoIHN1bW1hcmlzZXMgdGhlIG1heGltdW0gbWVtb3J5IHVzYWdlCi0gICAgICAgZm9yIGRpZmZlcmVudCBibG9jayBzaXplcy4gIEFsc28gIHJlY29yZGVkICBpcyAgdGhlICB0b3RhbAotICAgICAgIGNvbXByZXNzZWQgIHNpemUgZm9yIDE0IGZpbGVzIG9mIHRoZSBDYWxnYXJ5IFRleHQgQ29tcHJlcy0KLSAgICAgICBzaW9uIENvcnB1cyB0b3RhbGxpbmcgMywxNDEsNjIyIGJ5dGVzLiAgVGhpcyBjb2x1bW4gIGdpdmVzCi0gICAgICAgc29tZSAgZmVlbCAgZm9yICBob3cgIGNvbXByZXNzaW9uICB2YXJpZXMgd2l0aCBibG9jayBzaXplLgotICAgICAgIFRoZXNlIGZpZ3VyZXMgdGVuZCB0byB1bmRlcnN0YXRlIHRoZSBhZHZhbnRhZ2UgIG9mICBsYXJnZXIKLSAgICAgICBibG9jayAgc2l6ZXMgIGZvciAgbGFyZ2VyIGZpbGVzLCBzaW5jZSB0aGUgQ29ycHVzIGlzIGRvbWktCi0gICAgICAgbmF0ZWQgYnkgc21hbGxlciBmaWxlcy4KLQotICAgICAgICAgICAgICAgICAgQ29tcHJlc3MgICBEZWNvbXByZXNzICAgRGVjb21wcmVzcyAgIENvcnB1cwotICAgICAgICAgICBGbGFnICAgICB1c2FnZSAgICAgIHVzYWdlICAgICAgIC1zIHVzYWdlICAgICBTaXplCi0KLSAgICAgICAgICAgIC0xICAgICAgMTIwMGsgICAgICAgNTAwayAgICAgICAgIDM1MGsgICAgICA5MTQ3MDQKLSAgICAgICAgICAgIC0yICAgICAgMjAwMGsgICAgICAgOTAwayAgICAgICAgIDYwMGsgICAgICA4Nzc3MDMKLSAgICAgICAgICAgIC0zICAgICAgMjgwMGsgICAgICAxMzAwayAgICAgICAgIDg1MGsgICAgICA4NjAzMzgKLSAgICAgICAgICAgIC00ICAgICAgMzYwMGsgICAgICAxNzAwayAgICAgICAgMTEwMGsgICAgICA4NDY4OTkKLSAgICAgICAgICAgIC01ICAgICAgNDQwMGsgICAgICAyMTAwayAgICAgICAgMTM1MGsgICAgICA4NDUxNjAKLSAgICAgICAgICAgIC02ICAgICAgNTIwMGsgICAgICAyNTAwayAgICAgICAgMTYwMGsgICAgICA4Mzg2MjYKLSAgICAgICAgICAgIC03ICAgICAgNjEwMGsgICAgICAyOTAwayAgICAgICAgMTg1MGsgICAgICA4MzQwOTYKLSAgICAgICAgICAgIC04ICAgICAgNjgwMGsgICAgICAzMzAwayAgICAgICAgMjEwMGsgICAgICA4Mjg2NDIKLSAgICAgICAgICAgIC05ICAgICAgNzYwMGsgICAgICAzNzAwayAgICAgICAgMjM1MGsgICAgICA4Mjg2NDIKLQotCi1SRUNPVkVSSU5HIERBVEEgRlJPTSBEQU1BR0VEIEZJTEVTCi0gICAgICAgYnppcDIgY29tcHJlc3NlcyBmaWxlcyBpbiBibG9ja3MsIHVzdWFsbHkgOTAwa2J5dGVzICBsb25nLgotICAgICAgIEVhY2ggYmxvY2sgaXMgaGFuZGxlZCBpbmRlcGVuZGVudGx5LiAgSWYgYSBtZWRpYSBvciB0cmFucy0KLSAgICAgICBtaXNzaW9uIGVycm9yIGNhdXNlcyBhIG11bHRpLWJsb2NrICAuYnoyICBmaWxlICB0byAgYmVjb21lCi0gICAgICAgZGFtYWdlZCwgIGl0ICBtYXkgIGJlICBwb3NzaWJsZSAgdG8gIHJlY292ZXIgZGF0YSBmcm9tIHRoZQotICAgICAgIHVuZGFtYWdlZCBibG9ja3MgaW4gdGhlIGZpbGUuCi0KLSAgICAgICBUaGUgY29tcHJlc3NlZCByZXByZXNlbnRhdGlvbiBvZiBlYWNoIGJsb2NrICBpcyAgZGVsaW1pdGVkCi0gICAgICAgYnkgIGEgIDQ4LWJpdCBwYXR0ZXJuLCB3aGljaCBtYWtlcyBpdCBwb3NzaWJsZSB0byBmaW5kIHRoZQotICAgICAgIGJsb2NrIGJvdW5kYXJpZXMgd2l0aCByZWFzb25hYmxlICBjZXJ0YWludHkuICAgRWFjaCAgYmxvY2sKLSAgICAgICBhbHNvICBjYXJyaWVzIGl0cyBvd24gMzItYml0IENSQywgc28gZGFtYWdlZCBibG9ja3MgY2FuIGJlCi0gICAgICAgZGlzdGluZ3Vpc2hlZCBmcm9tIHVuZGFtYWdlZCBvbmVzLgotCi0gICAgICAgYnppcDJyZWNvdmVyIGlzIGEgIHNpbXBsZSAgcHJvZ3JhbSAgd2hvc2UgIHB1cnBvc2UgIGlzICB0bwotICAgICAgIHNlYXJjaCAgZm9yIGJsb2NrcyBpbiAuYnoyIGZpbGVzLCBhbmQgd3JpdGUgZWFjaCBibG9jayBvdXQKLSAgICAgICBpbnRvIGl0cyBvd24gLmJ6MiBmaWxlLiAgWW91IGNhbiB0aGVuIHVzZSBiemlwMiAtdCB0byB0ZXN0Ci0gICAgICAgdGhlIGludGVncml0eSBvZiB0aGUgcmVzdWx0aW5nIGZpbGVzLCBhbmQgZGVjb21wcmVzcyB0aG9zZQotICAgICAgIHdoaWNoIGFyZSB1bmRhbWFnZWQuCi0KLSAgICAgICBiemlwMnJlY292ZXIgdGFrZXMgYSBzaW5nbGUgYXJndW1lbnQsIHRoZSBuYW1lIG9mIHRoZSBkYW0tCi0gICAgICAgYWdlZCAgICBmaWxlLCAgICBhbmQgICAgd3JpdGVzICAgIGEgICAgbnVtYmVyICAgb2YgICBmaWxlcwotICAgICAgICJyZWMwMDAwMWZpbGUuYnoyIiwgICJyZWMwMDAwMmZpbGUuYnoyIiwgIGV0YywgIGNvbnRhaW5pbmcKLSAgICAgICB0aGUgICBleHRyYWN0ZWQgICBibG9ja3MuICAgVGhlICAgb3V0cHV0ICAgZmlsZW5hbWVzICAgYXJlCi0gICAgICAgZGVzaWduZWQgIHNvICB0aGF0IHRoZSB1c2Ugb2Ygd2lsZGNhcmRzIGluIHN1YnNlcXVlbnQgcHJvLQotICAgICAgIGNlc3NpbmcgIC0tIGZvciBleGFtcGxlLCAiYnppcDIgLWRjICByZWMqZmlsZS5iejIgPiByZWNvdi0KLSAgICAgICBlcmVkX2RhdGEiIC0tIHByb2Nlc3NlcyB0aGUgZmlsZXMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuCi0KLSAgICAgICBiemlwMnJlY292ZXIgc2hvdWxkIGJlIG9mIG1vc3QgdXNlIGRlYWxpbmcgd2l0aCBsYXJnZSAuYnoyCi0gICAgICAgZmlsZXMsICBhcyAgdGhlc2Ugd2lsbCBjb250YWluIG1hbnkgYmxvY2tzLiAgSXQgaXMgY2xlYXJseQotICAgICAgIGZ1dGlsZSB0byB1c2UgaXQgb24gZGFtYWdlZCBzaW5nbGUtYmxvY2sgIGZpbGVzLCAgc2luY2UgIGEKLSAgICAgICBkYW1hZ2VkICBibG9jayAgY2Fubm90ICBiZSByZWNvdmVyZWQuICBJZiB5b3Ugd2lzaCB0byBtaW4tCi0gICAgICAgaW1pc2UgYW55IHBvdGVudGlhbCBkYXRhIGxvc3MgdGhyb3VnaCBtZWRpYSAgb3IgIHRyYW5zbWlzLQotICAgICAgIHNpb24gZXJyb3JzLCB5b3UgbWlnaHQgY29uc2lkZXIgY29tcHJlc3Npbmcgd2l0aCBhIHNtYWxsZXIKLSAgICAgICBibG9jayBzaXplLgotCi0KLVBFUkZPUk1BTkNFIE5PVEVTCi0gICAgICAgVGhlIHNvcnRpbmcgcGhhc2Ugb2YgY29tcHJlc3Npb24gZ2F0aGVycyB0b2dldGhlciAgc2ltaWxhcgotICAgICAgIHN0cmluZ3MgIGluICB0aGUgIGZpbGUuICBCZWNhdXNlIG9mIHRoaXMsIGZpbGVzIGNvbnRhaW5pbmcKLSAgICAgICB2ZXJ5IGxvbmcgcnVucyBvZiAgcmVwZWF0ZWQgIHN5bWJvbHMsICBsaWtlICAiYWFiYWFiYWFiYWFiCi0gICAgICAgLi4uIiAgIChyZXBlYXRlZCAgc2V2ZXJhbCBodW5kcmVkIHRpbWVzKSBtYXkgY29tcHJlc3MgbW9yZQotICAgICAgIHNsb3dseSB0aGFuIG5vcm1hbC4gIFZlcnNpb25zIDAuOS41IGFuZCAgYWJvdmUgIGZhcmUgIG11Y2gKLSAgICAgICBiZXR0ZXIgIHRoYW4gcHJldmlvdXMgdmVyc2lvbnMgaW4gdGhpcyByZXNwZWN0LiAgVGhlIHJhdGlvCi0gICAgICAgYmV0d2VlbiB3b3JzdC1jYXNlIGFuZCBhdmVyYWdlLWNhc2UgY29tcHJlc3Npb24gdGltZSBpcyBpbgotICAgICAgIHRoZSAgcmVnaW9uICBvZiAgMTA6MS4gIEZvciBwcmV2aW91cyB2ZXJzaW9ucywgdGhpcyBmaWd1cmUKLSAgICAgICB3YXMgbW9yZSBsaWtlIDEwMDoxLiAgWW91IGNhbiB1c2UgdGhlIC12dnZ2IG9wdGlvbiB0byBtb24tCi0gICAgICAgaXRvciBwcm9ncmVzcyBpbiBncmVhdCBkZXRhaWwsIGlmIHlvdSB3YW50LgotCi0gICAgICAgRGVjb21wcmVzc2lvbiBzcGVlZCBpcyB1bmFmZmVjdGVkIGJ5IHRoZXNlIHBoZW5vbWVuYS4KLQotICAgICAgIGJ6aXAyICB1c3VhbGx5ICBhbGxvY2F0ZXMgIHNldmVyYWwgIG1lZ2FieXRlcyBvZiBtZW1vcnkgdG8KLSAgICAgICBvcGVyYXRlIGluLCBhbmQgdGhlbiBjaGFyZ2VzIGFsbCBvdmVyIGl0IGluIGEgZmFpcmx5ICByYW4tCi0gICAgICAgZG9tICBmYXNoaW9uLiAgIFRoaXMgbWVhbnMgdGhhdCBwZXJmb3JtYW5jZSwgYm90aCBmb3IgY29tLQotICAgICAgIHByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nLCBpcyBsYXJnZWx5IGRldGVybWluZWQgIGJ5ICB0aGUKLSAgICAgICBzcGVlZCAgYXQgIHdoaWNoICB5b3VyICBtYWNoaW5lICBjYW4gc2VydmljZSBjYWNoZSBtaXNzZXMuCi0gICAgICAgQmVjYXVzZSBvZiB0aGlzLCBzbWFsbCBjaGFuZ2VzIHRvIHRoZSBjb2RlIHRvICByZWR1Y2UgIHRoZQotICAgICAgIG1pc3MgIHJhdGUgIGhhdmUgIGJlZW4gb2JzZXJ2ZWQgdG8gZ2l2ZSBkaXNwcm9wb3J0aW9uYXRlbHkKLSAgICAgICBsYXJnZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuICBJIGltYWdpbmUgYnppcDIgd2lsbCBwZXItCi0gICAgICAgZm9ybSBiZXN0IG9uIG1hY2hpbmVzIHdpdGggdmVyeSBsYXJnZSBjYWNoZXMuCi0KLQotQ0FWRUFUUwotICAgICAgIEkvTyAgZXJyb3IgIG1lc3NhZ2VzICBhcmUgbm90IGFzIGhlbHBmdWwgYXMgdGhleSBjb3VsZCBiZS4KLSAgICAgICBiemlwMiB0cmllcyBoYXJkIHRvIGRldGVjdCBJL08gZXJyb3JzICBhbmQgIGV4aXQgIGNsZWFubHksCi0gICAgICAgYnV0ICB0aGUgIGRldGFpbHMgIG9mICB3aGF0ICB0aGUgcHJvYmxlbSBpcyBzb21ldGltZXMgc2VlbQotICAgICAgIHJhdGhlciBtaXNsZWFkaW5nLgotCi0gICAgICAgVGhpcyBtYW51YWwgcGFnZSBwZXJ0YWlucyB0byB2ZXJzaW9uIDEuMC40IG9mIGJ6aXAyLiAgQ29tLQotICAgICAgIHByZXNzZWQgIGRhdGEgY3JlYXRlZCBieSB0aGlzIHZlcnNpb24gaXMgZW50aXJlbHkgZm9yd2FyZHMKLSAgICAgICBhbmQgIGJhY2t3YXJkcyAgY29tcGF0aWJsZSAgd2l0aCAgIHRoZSAgIHByZXZpb3VzICAgcHVibGljCi0gICAgICAgcmVsZWFzZXMsICB2ZXJzaW9ucyAgMC4xcGwyLCAgMC45LjAsICAwLjkuNSwgMS4wLjAsIDEuMC4xLAotICAgICAgIDEuMC4yIGFuZCAxLjAuMywgYnV0IHdpdGggdGhlICBmb2xsb3dpbmcgIGV4Y2VwdGlvbjogMC45LjAKLSAgICAgICBhbmQgYWJvdmUgY2FuICBjb3JyZWN0bHkgZGVjb21wcmVzcyAgbXVsdGlwbGUgY29uY2F0ZW5hdGVkCi0gICAgICAgY29tcHJlc3NlZCBmaWxlcy4gIDAuMXBsMiAgY2Fubm90IGRvIHRoaXM7ICBpdCAgd2lsbCAgc3RvcAotICAgICAgIGFmdGVyICBkZWNvbXByZXNzaW5nIGp1c3QgdGhlIGZpcnN0IGZpbGUgaW4gdGhlIHN0cmVhbS4KLQotICAgICAgIGJ6aXAycmVjb3ZlciAgdmVyc2lvbnMgcHJpb3IgdG8gMS4wLjIgdXNlZCAzMi1iaXQgaW50ZWdlcnMKLSAgICAgICB0byByZXByZXNlbnQgYml0IHBvc2l0aW9ucyBpbiBjb21wcmVzc2VkICBmaWxlcywgIHNvICB0aGV5Ci0gICAgICAgY291bGQgIG5vdCBoYW5kbGUgY29tcHJlc3NlZCBmaWxlcyBtb3JlIHRoYW4gNTEyIG1lZ2FieXRlcwotICAgICAgIGxvbmcuICBWZXJzaW9ucyAxLjAuMiBhbmQgYWJvdmUgdXNlIDY0LWJpdCAgaW50cyAgb24gIHNvbWUKLSAgICAgICBwbGF0Zm9ybXMgIHdoaWNoICBzdXBwb3J0IHRoZW0gKEdOVSBzdXBwb3J0ZWQgdGFyZ2V0cywgYW5kCi0gICAgICAgV2luZG93cykuICBUbyBlc3RhYmxpc2ggd2hldGhlciBvciAgbm90ICBiemlwMnJlY292ZXIgIHdhcwotICAgICAgIGJ1aWx0ICB3aXRoICBzdWNoICBhIGxpbWl0YXRpb24sIHJ1biBpdCB3aXRob3V0IGFyZ3VtZW50cy4KLSAgICAgICBJbiBhbnkgZXZlbnQgeW91IGNhbiBidWlsZCB5b3Vyc2VsZiBhbiAgdW5saW1pdGVkICB2ZXJzaW9uCi0gICAgICAgaWYgIHlvdSAgY2FuICByZWNvbXBpbGUgIGl0ICB3aXRoIE1heWJlVUludDY0IHNldCB0byBiZSBhbgotICAgICAgIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyLgotCi0KLUFVVEhPUgotICAgICAgIEp1bGlhbiBTZXdhcmQsIGpzZXdhcmRiemlwLm9yZy4KLQotICAgICAgIGh0dHA6Ly93d3cuYnppcC5vcmcKLQotICAgICAgIFRoZSBpZGVhcyBlbWJvZGllZCBpbiBiemlwMiBhcmUgZHVlIHRvIChhdCBsZWFzdCkgdGhlIGZvbC0KLSAgICAgICBsb3dpbmcgIHBlb3BsZTogTWljaGFlbCBCdXJyb3dzIGFuZCBEYXZpZCBXaGVlbGVyIChmb3IgdGhlCi0gICAgICAgYmxvY2sgc29ydGluZyB0cmFuc2Zvcm1hdGlvbiksIERhdmlkIFdoZWVsZXIgIChhZ2FpbiwgIGZvcgotICAgICAgIHRoZSBIdWZmbWFuIGNvZGVyKSwgUGV0ZXIgRmVud2ljayAoZm9yIHRoZSBzdHJ1Y3R1cmVkIGNvZC0KLSAgICAgICBpbmcgbW9kZWwgaW4gdGhlIG9yaWdpbmFsIGJ6aXAsIGFuZCBtYW55IHJlZmluZW1lbnRzKSwgYW5kCi0gICAgICAgQWxpc3RhaXIgIE1vZmZhdCwgIFJhZGZvcmQgIE5lYWwgIGFuZCAgSWFuIFdpdHRlbiAoZm9yIHRoZQotICAgICAgIGFyaXRobWV0aWMgIGNvZGVyICBpbiAgdGhlICBvcmlnaW5hbCAgYnppcCkuICAgSSAgYW0gIG11Y2gKLSAgICAgICBpbmRlYnRlZCBmb3IgdGhlaXIgaGVscCwgc3VwcG9ydCBhbmQgYWR2aWNlLiAgU2VlIHRoZSBtYW4tCi0gICAgICAgdWFsIGluIHRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uIGZvciBwb2ludGVycyB0byBzb3VyY2VzICBvZgotICAgICAgIGRvY3VtZW50YXRpb24uICBDaHJpc3RpYW4gdm9uIFJvcXVlcyBlbmNvdXJhZ2VkIG1lIHRvIGxvb2sKLSAgICAgICBmb3IgZmFzdGVyIHNvcnRpbmcgYWxnb3JpdGhtcywgc28gYXMgdG8gc3BlZWQgdXAgIGNvbXByZXMtCi0gICAgICAgc2lvbi4gIEJlbGEgTHVia2luIGVuY291cmFnZWQgbWUgdG8gaW1wcm92ZSB0aGUgd29yc3QtY2FzZQotICAgICAgIGNvbXByZXNzaW9uIHBlcmZvcm1hbmNlLiAgRG9ubmEgUm9iaW5zb24gWE1MaXNlZCB0aGUgZG9jdS0KLSAgICAgICBtZW50YXRpb24uICAgVGhlIGJ6KiBzY3JpcHRzIGFyZSBkZXJpdmVkIGZyb20gdGhvc2Ugb2YgR05VCi0gICAgICAgZ3ppcC4gIE1hbnkgcGVvcGxlIHNlbnQgcGF0Y2hlcywgaGVscGVkICB3aXRoICBwb3J0YWJpbGl0eQotICAgICAgIHByb2JsZW1zLCAgbGVudCAgbWFjaGluZXMsICBnYXZlIGFkdmljZSBhbmQgd2VyZSBnZW5lcmFsbHkKLSAgICAgICBoZWxwZnVsLgotCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9iemlwMnJlY292ZXIuYyBiL1V0aWxpdGllcy9jbWJ6aXAyL2J6aXAycmVjb3Zlci5jCmluZGV4IDZlNDdiNjAuLmE4MTMxZTAgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6aXAycmVjb3Zlci5jCisrKyBiL1V0aWxpdGllcy9jbWJ6aXAyL2J6aXAycmVjb3Zlci5jCkBAIC03LDggKzcsOCBAQAogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgYnppcDIvbGliYnppcDIsIGEgcHJvZ3JhbSBhbmQgbGlicmFyeSBmb3IKICAgIGxvc3NsZXNzLCBibG9jay1zb3J0aW5nIGRhdGEgY29tcHJlc3Npb24uCiAKLSAgIGJ6aXAyL2xpYmJ6aXAyIHZlcnNpb24gMS4wLjUgb2YgMTAgRGVjZW1iZXIgMjAwNwotICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDcgSnVsaWFuIFNld2FyZCA8anNld2FyZEBiemlwLm9yZz4KKyAgIGJ6aXAyL2xpYmJ6aXAyIHZlcnNpb24gMS4wLjggb2YgMTMgSnVseSAyMDE5CisgICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxOSBKdWxpYW4gU2V3YXJkIDxqc2V3YXJkQGFjbS5vcmc+CiAKICAgIFBsZWFzZSByZWFkIHRoZSBXQVJOSU5HLCBESVNDTEFJTUVSIGFuZCBQQVRFTlRTIHNlY3Rpb25zIGluIHRoZSAKICAgIFJFQURNRSBmaWxlLgpAQCAtMTgsNyArMTgsNyBAQAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIFRoaXMgcHJvZ3JhbSBpcyBhIGNvbXBsZXRlIGhhY2sgYW5kIHNob3VsZCBiZSByZXdyaXR0ZW4gcHJvcGVybHkuCi0gICAgIEl0IGlzbid0IHZlcnkgY29tcGxpY2F0ZWQuICovCisJIEl0IGlzbid0IHZlcnkgY29tcGxpY2F0ZWQuICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGVycm5vLmg+CkBAIC0zMDksMTEgKzMwOSwxMiBAQAogICAgVUludDMyICAgICAgYnVmZkhpLCBidWZmTG8sIGJsb2NrQ1JDOwogICAgQ2hhciogICAgICAgcDsKIAotICAgc3RyY3B5ICggcHJvZ05hbWUsIGFyZ3ZbMF0gKTsKKyAgIHN0cm5jcHkgKCBwcm9nTmFtZSwgYXJndlswXSwgQlpfTUFYX0ZJTEVOQU1FLTEpOworICAgcHJvZ05hbWVbQlpfTUFYX0ZJTEVOQU1FLTFdPSdcMCc7CiAgICBpbkZpbGVOYW1lWzBdID0gb3V0RmlsZU5hbWVbMF0gPSAwOwogCiAgICBmcHJpbnRmICggc3RkZXJyLCAKLSAgICAgICAgICAgICAiYnppcDJyZWNvdmVyIDEuMC41OiBleHRyYWN0cyBibG9ja3MgZnJvbSBkYW1hZ2VkIC5iejIgZmlsZXMuXG4iICk7CisgICAgICAgICAgICAgImJ6aXAycmVjb3ZlciAxLjAuODogZXh0cmFjdHMgYmxvY2tzIGZyb20gZGFtYWdlZCAuYnoyIGZpbGVzLlxuIiApOwogCiAgICBpZiAoYXJnYyAhPSAyKSB7CiAgICAgICBmcHJpbnRmICggc3RkZXJyLCAiJXM6IHVzYWdlIGlzIGAlcyBkYW1hZ2VkX2ZpbGVfbmFtZScuXG4iLApAQCAtMzkzLDcgKzM5NCw3IEBACiAgICAgICAgICAgICBiRW5kW2N1cnJCbG9ja10gPSAwOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGN1cnJCbG9jayA+IDAgJiYKLSAgICAgICAgIChiRW5kW2N1cnJCbG9ja10gLSBiU3RhcnRbY3VyckJsb2NrXSkgPj0gMTMwKSB7CisJICAgICAoYkVuZFtjdXJyQmxvY2tdIC0gYlN0YXJ0W2N1cnJCbG9ja10pID49IDEzMCkgewogICAgICAgICAgICAgZnByaW50ZiAoIHN0ZGVyciwgIiAgIGJsb2NrICVkIHJ1bnMgZnJvbSAiIE1heWJlVUludDY0X0ZNVCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgdG8gIiBNYXliZVVJbnQ2NF9GTVQgIlxuIiwKICAgICAgICAgICAgICAgICAgICAgICByYkN0cisxLCAgYlN0YXJ0W2N1cnJCbG9ja10sIGJFbmRbY3VyckJsb2NrXSApOwpAQCAtNDU3LDYgKzQ1OCw3IEBACiAgICAgICAgICAgICBic1B1dFVDaGFyICggYnNXciwgMHg1MCApOyBic1B1dFVDaGFyICggYnNXciwgMHg5MCApOwogICAgICAgICAgICAgYnNQdXRVSW50MzIgKCBic1dyLCBibG9ja0NSQyApOwogICAgICAgICAgICAgYnNDbG9zZSAoIGJzV3IgKTsKKyAgICAgICAgICAgIG91dEZpbGUgPSBOVUxMOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHdyQmxvY2sgPj0gcmJDdHIpIGJyZWFrOwogICAgICAgICAgd3JCbG9jaysrOwpAQCAtNDc0LDggKzQ3Niw4IEBACiAgICAgICAgICAgICBzcGxpdCA9IG91dEZpbGVOYW1lOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICsrc3BsaXQ7Ci0gICAgIH0KLSAgICAgLyogTm93IHNwbGl0IHBvaW50cyB0byB0aGUgc3RhcnQgb2YgdGhlIGJhc2VuYW1lLiAqLworCSB9CisJIC8qIE5vdyBzcGxpdCBwb2ludHMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBiYXNlbmFtZS4gKi8KICAgICAgICAgIG9mcyAgPSBzcGxpdCAtIG91dEZpbGVOYW1lOwogICAgICAgICAgc3ByaW50ZiAoc3BsaXQsICJyZWMlNWQiLCB3ckJsb2NrKzEpOwogICAgICAgICAgZm9yIChwID0gc3BsaXQ7ICpwICE9IDA7IHArKykgaWYgKCpwID09ICcgJykgKnAgPSAnMCc7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9iemxpYi5jIGIvVXRpbGl0aWVzL2NtYnppcDIvYnpsaWIuYwppbmRleCBhZWVjZWYxLi4yMTc4NjU1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9iemxpYi5jCisrKyBiL1V0aWxpdGllcy9jbWJ6aXAyL2J6bGliLmMKQEAgLTgsOCArOCw4IEBACiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBiemlwMi9saWJiemlwMiwgYSBwcm9ncmFtIGFuZCBsaWJyYXJ5IGZvcgogICAgbG9zc2xlc3MsIGJsb2NrLXNvcnRpbmcgZGF0YSBjb21wcmVzc2lvbi4KIAotICAgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuNSBvZiAxMCBEZWNlbWJlciAyMDA3Ci0gICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNyBKdWxpYW4gU2V3YXJkIDxqc2V3YXJkQGJ6aXAub3JnPgorICAgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuOCBvZiAxMyBKdWx5IDIwMTkKKyAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDE5IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYWNtLm9yZz4KIAogICAgUGxlYXNlIHJlYWQgdGhlIFdBUk5JTkcsIERJU0NMQUlNRVIgYW5kIFBBVEVOVFMgc2VjdGlvbnMgaW4gdGhlIAogICAgUkVBRE1FIGZpbGUuCkBAIC00MywxMiArNDMsMTIgQEAKICAgIGZwcmludGYoc3RkZXJyLCAKICAgICAgICJcblxuYnppcDIvbGliYnppcDI6IGludGVybmFsIGVycm9yIG51bWJlciAlZC5cbiIKICAgICAgICJUaGlzIGlzIGEgYnVnIGluIGJ6aXAyL2xpYmJ6aXAyLCAlcy5cbiIKLSAgICAgICJQbGVhc2UgcmVwb3J0IGl0IHRvIG1lIGF0OiBqc2V3YXJkQGJ6aXAub3JnLiAgSWYgdGhpcyBoYXBwZW5lZFxuIgorICAgICAgIlBsZWFzZSByZXBvcnQgaXQgdG86IGJ6aXAyLWRldmVsQHNvdXJjZXdhcmUub3JnLiAgSWYgdGhpcyBoYXBwZW5lZFxuIgogICAgICAgIndoZW4geW91IHdlcmUgdXNpbmcgc29tZSBwcm9ncmFtIHdoaWNoIHVzZXMgbGliYnppcDIgYXMgYVxuIgogICAgICAgImNvbXBvbmVudCwgeW91IHNob3VsZCBhbHNvIHJlcG9ydCB0aGlzIGJ1ZyB0byB0aGUgYXV0aG9yKHMpXG4iCiAgICAgICAib2YgdGhhdCBwcm9ncmFtLiAgUGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHJlcG9ydCB0aGlzIGJ1ZztcbiIKICAgICAgICJ0aW1lbHkgYW5kIGFjY3VyYXRlIGJ1ZyByZXBvcnRzIGV2ZW50dWFsbHkgbGVhZCB0byBoaWdoZXJcbiIKLSAgICAgICJxdWFsaXR5IHNvZnR3YXJlLiAgVGhhbmtzLiAgSnVsaWFuIFNld2FyZCwgMTAgRGVjZW1iZXIgMjAwNy5cblxuIiwKKyAgICAgICJxdWFsaXR5IHNvZnR3YXJlLiAgVGhhbmtzLlxuXG4iLAogICAgICAgZXJyY29kZSwKICAgICAgIEJaMl9iemxpYlZlcnNpb24oKQogICAgKTsKQEAgLTEwMiw3ICsxMDIsNiBAQAogdm9pZCogZGVmYXVsdF9iemFsbG9jICggdm9pZCogb3BhcXVlLCBJbnQzMiBpdGVtcywgSW50MzIgc2l6ZSApCiB7CiAgICB2b2lkKiB2ID0gbWFsbG9jICggaXRlbXMgKiBzaXplICk7Ci0gICh2b2lkKW9wYXF1ZTsKICAgIHJldHVybiB2OwogfQogCkBAIC0xMTAsNyArMTA5LDYgQEAKIHZvaWQgZGVmYXVsdF9iemZyZWUgKCB2b2lkKiBvcGFxdWUsIHZvaWQqIGFkZHIgKQogewogICAgaWYgKGFkZHIgIT0gTlVMTCkgZnJlZSAoIGFkZHIgKTsKLSAgKHZvaWQpb3BhcXVlOwogfQogCiAKQEAgLTQyNyw3ICs0MjUsNyBAQAogICAgICAgICAgICAgcmV0dXJuIHByb2dyZXNzID8gQlpfUlVOX09LIDogQlpfUEFSQU1fRVJST1I7CiAgICAgICAgICB9IAogICAgICAgICAgZWxzZQotICAgICBpZiAoYWN0aW9uID09IEJaX0ZMVVNIKSB7CisJIGlmIChhY3Rpb24gPT0gQlpfRkxVU0gpIHsKICAgICAgICAgICAgIHMtPmF2YWlsX2luX2V4cGVjdCA9IHN0cm0tPmF2YWlsX2luOwogICAgICAgICAgICAgcy0+bW9kZSA9IEJaX01fRkxVU0hJTkc7CiAgICAgICAgICAgICBnb3RvIHByZXN3aXRjaDsKQEAgLTE1MDcsNyArMTUwNSw2IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiBpbnQgQlpfQVBJKEJaMl9iemZsdXNoKSAoQlpGSUxFICpiKQogewotICAodm9pZCkgYjsKICAgIC8qIGRvIG5vdGhpbmcgbm93Li4uICovCiAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6bGliLmggYi9VdGlsaXRpZXMvY21iemlwMi9iemxpYi5oCmluZGV4IGM1Yjc1ZDYuLjg5NjZhNmMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6bGliLmgKKysrIGIvVXRpbGl0aWVzL2NtYnppcDIvYnpsaWIuaApAQCAtOCw4ICs4LDggQEAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJ6aXAyL2xpYmJ6aXAyLCBhIHByb2dyYW0gYW5kIGxpYnJhcnkgZm9yCiAgICBsb3NzbGVzcywgYmxvY2stc29ydGluZyBkYXRhIGNvbXByZXNzaW9uLgogCi0gICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcKLSAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDA3IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYnppcC5vcmc+CisgICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC44IG9mIDEzIEp1bHkgMjAxOQorICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMTkgSnVsaWFuIFNld2FyZCA8anNld2FyZEBhY20ub3JnPgogCiAgICBQbGVhc2UgcmVhZCB0aGUgV0FSTklORywgRElTQ0xBSU1FUiBhbmQgUEFURU5UUyBzZWN0aW9ucyBpbiB0aGUgCiAgICBSRUFETUUgZmlsZS4KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6bGliX3ByaXZhdGUuaCBiL1V0aWxpdGllcy9jbWJ6aXAyL2J6bGliX3ByaXZhdGUuaAppbmRleCAwMmE2NjdmLi5iYTBmNTg5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9iemxpYl9wcml2YXRlLmgKKysrIGIvVXRpbGl0aWVzL2NtYnppcDIvYnpsaWJfcHJpdmF0ZS5oCkBAIC04LDggKzgsOCBAQAogICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgYnppcDIvbGliYnppcDIsIGEgcHJvZ3JhbSBhbmQgbGlicmFyeSBmb3IKICAgIGxvc3NsZXNzLCBibG9jay1zb3J0aW5nIGRhdGEgY29tcHJlc3Npb24uCiAKLSAgIGJ6aXAyL2xpYmJ6aXAyIHZlcnNpb24gMS4wLjUgb2YgMTAgRGVjZW1iZXIgMjAwNwotICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDcgSnVsaWFuIFNld2FyZCA8anNld2FyZEBiemlwLm9yZz4KKyAgIGJ6aXAyL2xpYmJ6aXAyIHZlcnNpb24gMS4wLjggb2YgMTMgSnVseSAyMDE5CisgICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxOSBKdWxpYW4gU2V3YXJkIDxqc2V3YXJkQGFjbS5vcmc+CiAKICAgIFBsZWFzZSByZWFkIHRoZSBXQVJOSU5HLCBESVNDTEFJTUVSIGFuZCBQQVRFTlRTIHNlY3Rpb25zIGluIHRoZSAKICAgIFJFQURNRSBmaWxlLgpAQCAtMzIsMjggKzMyLDEzIEBACiAKICNpbmNsdWRlICJiemxpYi5oIgogCi0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLSMgcHJhZ21hIHdhcm4gLTgwMDQgLyogQXNzaWduZWQgdmFsdWUgbmV2ZXIgdXNlZC4gICovCi0jIHByYWdtYSB3YXJuIC04MDA4IC8qIENvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZS9mYWxzZS4gICovCi0jIHByYWdtYSB3YXJuIC04MDY2IC8qIFVucmVhY2hhYmxlIGNvZGUuICAqLwotIyBwcmFnbWEgd2FybiAtODA1NyAvKiBVbnVzZWQgcGFyYW1ldGVyLiAgKi8KLSNlbmRpZgogI2lmIGRlZmluZWQoX01TQ19WRVIpCi0vKiAnaW50ZWdyYWwgc2l6ZSBtaXNtYXRjaCBpbiBhcmd1bWVudDsgY29udmVyc2lvbiBzdXBwbGllZCAqLwotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpCi0vKiBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ29mZl90JywgcG9zc2libGUgbG9zcyBvZiBkYXRhICovCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI2NykKLS8qIHdhcm5pbmcgQzQxMjc6IGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQqLwotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSMgcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdjYXN0LWFsaWduIgorIyBwcmFnbWEgd2FybmluZyhwdXNoLDEpCiAjZW5kaWYKIAogLyotLSBHZW5lcmFsIHN0dWZmLiAtLSovCiAKLSNkZWZpbmUgQlpfVkVSU0lPTiAgIjEuMC41LCAxMC1EZWMtMjAwNyIKKyNkZWZpbmUgQlpfVkVSU0lPTiAgIjEuMC44LCAxMy1KdWwtMjAxOSIKIAogdHlwZWRlZiBjaGFyICAgICAgICAgICAgQ2hhcjsKIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgIEJvb2w7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9iem1vcmUgYi9VdGlsaXRpZXMvY21iemlwMi9iem1vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYjFkZTYuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvYnptb3JlCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotIyEvYmluL3NoCi0KLSMgQnptb3JlIHdyYXBwZWQgZm9yIGJ6aXAyLCAKLSMgYWRhcHRlZCBmcm9tIHptb3JlIGJ5IFBoaWxpcHBlIFRyb2luIDxwaGlsQGZpZmkub3JnPiBmb3IgRGViaWFuIEdOVS9MaW51eC4KLQotUEFUSD0iL3Vzci9iaW46JFBBVEgiOyBleHBvcnQgUEFUSAotCi1wcm9nPWBlY2hvICQwIHwgc2VkICdzfC4qL3x8J2AKLWNhc2UgIiRwcm9nIiBpbgotICAgICpsZXNzKSAgbW9yZT1sZXNzICAgOzsKLSAgICAqKSAgbW9yZT1tb3JlICAgICAgIDs7Ci1lc2FjCi0KLWlmIHRlc3QgImBlY2hvIC1uIGFgIiA9ICItbiBhIjsgdGhlbgotICAjIGxvb2tzIGxpa2UgYSBTeXNWIHN5c3RlbToKLSAgbjE9Jyc7IG4yPSdcYycKLWVsc2UKLSAgbjE9Jy1uJzsgbjI9JycKLWZpCi1vbGR0dHk9YHN0dHkgLWcgMj4vZGV2L251bGxgCi1pZiBzdHR5IC1jYnJlYWsgMj4vZGV2L251bGw7IHRoZW4KLSAgY2I9J2NicmVhayc7IG5jYj0nLWNicmVhaycKLWVsc2UKLSAgIyAnc3R0eSBtaW4gMScgcmVzZXRzIGVvZiB0byBeYSBvbiBib3RoIFN1bk9TIGFuZCBTeXNWIQotICBjYj0nbWluIDEgLWljYW5vbic7IG5jYj0naWNhbm9uIGVvZiBeZCcKLWZpCi1pZiB0ZXN0ICQ/IC1lcSAwIC1hIC1uICIkb2xkdHR5IjsgdGhlbgotICAgdHJhcCAnc3R0eSAkb2xkdHR5IDI+L2Rldi9udWxsOyBleGl0JyAwIDIgMyA1IDEwIDEzIDE1Ci1lbHNlCi0gICB0cmFwICdzdHR5ICRuY2IgZWNobyAyPi9kZXYvbnVsbDsgZXhpdCcgMCAyIDMgNSAxMCAxMyAxNQotZmkKLQotaWYgdGVzdCAkIyA9IDA7IHRoZW4KLSAgICBpZiB0ZXN0IC10IDA7IHRoZW4KLSAgICBlY2hvIHVzYWdlOiAkcHJvZyBmaWxlcy4uLgotICAgIGVsc2UKLSAgICBiemlwMiAtY2RmcSB8IGV2YWwgJG1vcmUKLSAgICBmaQotZWxzZQotICAgIEZJUlNUPTEKLSAgICBmb3IgRklMRQotICAgIGRvCi0gICAgaWYgdGVzdCAkRklSU1QgLWVxIDA7IHRoZW4KLSAgICAgICAgZWNobyAkbjEgIi0tTW9yZS0tKE5leHQgZmlsZTogJEZJTEUpJG4yIgotICAgICAgICBzdHR5ICRjYiAtZWNobyAyPi9kZXYvbnVsbAotICAgICAgICBBTlM9YGRkIGJzPTEgY291bnQ9MSAyPi9kZXYvbnVsbGAgCi0gICAgICAgIHN0dHkgJG5jYiBlY2hvIDI+L2Rldi9udWxsCi0gICAgICAgIGVjaG8gIiAiCi0gICAgICAgIGlmIHRlc3QgIiRBTlMiID0gJ2UnIC1vICIkQU5TIiA9ICdxJzsgdGhlbgotICAgICAgICAgICAgZXhpdAotICAgICAgICBmaQotICAgIGZpCi0gICAgaWYgdGVzdCAiJEFOUyIgIT0gJ3MnOyB0aGVuCi0gICAgICAgIGVjaG8gIi0tLS0tLT4gJEZJTEUgPC0tLS0tLSIKLSAgICAgICAgYnppcDIgLWNkZnEgIiRGSUxFIiB8IGV2YWwgJG1vcmUKLSAgICBmaQotICAgIGlmIHRlc3QgLXQ7IHRoZW4KLSAgICAgICAgRklSU1Q9MAotICAgIGZpCi0gICAgZG9uZQotZmkKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL2J6bW9yZS4xIGIvVXRpbGl0aWVzL2NtYnppcDIvYnptb3JlLjEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ODY4ZWQuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvYnptb3JlLjEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLlwiU2hhbWVsZXNzbHkgY29waWVkIGZyb20gem1vcmUuMSBieSBQaGlsaXBwZSBUcm9pbiA8cGhpbEBmaWZpLm9yZz4KLS5cImZvciBEZWJpYW4gR05VL0xpbnV4Ci0uVEggQlpNT1JFIDEKLS5TSCBOQU1FCi1iem1vcmUsIGJ6bGVzcyBcLSBmaWxlIHBlcnVzYWwgZmlsdGVyIGZvciBjcnQgdmlld2luZyBvZiBiemlwMiBjb21wcmVzc2VkIHRleHQKLS5TSCBTWU5PUFNJUwotLkIgYnptb3JlCi1bIG5hbWUgLi4uICBdCi0uYnIKLS5CIGJ6bGVzcwotWyBuYW1lIC4uLiAgXQotLlNIIE5PVEUKLUluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24sCi0uSSBiemxlc3MKLWFuZAotLkkgbGVzcwotY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHdpdGgKLS5JIGJ6bW9yZQotYW5kCi0uSSBtb3JlLgotLlNIIERFU0NSSVBUSU9OCi0uSSAgQnptb3JlCi1pcyBhIGZpbHRlciB3aGljaCBhbGxvd3MgZXhhbWluYXRpb24gb2YgY29tcHJlc3NlZCBvciBwbGFpbiB0ZXh0IGZpbGVzCi1vbmUgc2NyZWVuZnVsIGF0IGEgdGltZSBvbiBhIHNvZnQtY29weSB0ZXJtaW5hbC4KLS5JIGJ6bW9yZQotd29ya3Mgb24gZmlsZXMgY29tcHJlc3NlZCB3aXRoCi0uSSBiemlwMgotYW5kIGFsc28gb24gdW5jb21wcmVzc2VkIGZpbGVzLgotSWYgYSBmaWxlIGRvZXMgbm90IGV4aXN0LAotLkkgYnptb3JlCi1sb29rcyBmb3IgYSBmaWxlIG9mIHRoZSBzYW1lIG5hbWUgd2l0aCB0aGUgYWRkaXRpb24gb2YgYSAuYnoyIHN1ZmZpeC4KLS5QUAotLkkgQnptb3JlCi1ub3JtYWxseSBwYXVzZXMgYWZ0ZXIgZWFjaCBzY3JlZW5mdWwsIHByaW50aW5nIC0tTW9yZS0tCi1hdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uCi1JZiB0aGUgdXNlciB0aGVuIHR5cGVzIGEgY2FycmlhZ2UgcmV0dXJuLCBvbmUgbW9yZSBsaW5lIGlzIGRpc3BsYXllZC4KLUlmIHRoZSB1c2VyIGhpdHMgYSBzcGFjZSwKLWFub3RoZXIgc2NyZWVuZnVsIGlzIGRpc3BsYXllZC4gIE90aGVyIHBvc3NpYmlsaXRpZXMgYXJlIGVudW1lcmF0ZWQgbGF0ZXIuCi0uUFAKLS5JIEJ6bW9yZQotbG9va3MgaW4gdGhlIGZpbGUKLS5JIC9ldGMvdGVybWNhcAotdG8gZGV0ZXJtaW5lIHRlcm1pbmFsIGNoYXJhY3RlcmlzdGljcywKLWFuZCB0byBkZXRlcm1pbmUgdGhlIGRlZmF1bHQgd2luZG93IHNpemUuCi1PbiBhIHRlcm1pbmFsIGNhcGFibGUgb2YgZGlzcGxheWluZyAyNCBsaW5lcywKLXRoZSBkZWZhdWx0IHdpbmRvdyBzaXplIGlzIDIyIGxpbmVzLgotT3RoZXIgc2VxdWVuY2VzIHdoaWNoIG1heSBiZSB0eXBlZCB3aGVuCi0uSSBiem1vcmUKLXBhdXNlcywgYW5kIHRoZWlyIGVmZmVjdHMsIGFyZSBhcyBmb2xsb3dzIChcZklpXGZQIGlzIGFuIG9wdGlvbmFsIGludGVnZXIKLWFyZ3VtZW50LCBkZWZhdWx0aW5nIHRvIDEpIDoKLS5QUAotLklQIFxmSWlcfFxmUDxzcGFjZT4KLWRpc3BsYXkKLS5JIGkKLW1vcmUgbGluZXMsIChvciBhbm90aGVyIHNjcmVlbmZ1bCBpZiBubyBhcmd1bWVudCBpcyBnaXZlbikKLS5QUAotLklQIF5ECi1kaXNwbGF5IDExIG1vcmUgbGluZXMgKGEgYGBzY3JvbGwnJykuCi1JZgotLkkgaQotaXMgZ2l2ZW4sIHRoZW4gdGhlIHNjcm9sbCBzaXplIGlzIHNldCB0byBcZklpXHxcZlAuCi0uUFAKLS5JUCBkCi1zYW1lIGFzIF5EIChjb250cm9sLUQpCi0uUFAKLS5JUCBcZklpXHxcZlB6Ci1zYW1lIGFzIHR5cGluZyBhIHNwYWNlIGV4Y2VwdCB0aGF0IFxmSWlcfFxmUCwgaWYgcHJlc2VudCwgYmVjb21lcyB0aGUgbmV3Ci13aW5kb3cgc2l6ZS4gIE5vdGUgdGhhdCB0aGUgd2luZG93IHNpemUgcmV2ZXJ0cyBiYWNrIHRvIHRoZSBkZWZhdWx0IGF0IHRoZQotZW5kIG9mIHRoZSBjdXJyZW50IGZpbGUuCi0uUFAKLS5JUCBcZklpXHxcZlBzCi1za2lwIFxmSWlcfFxmUCBsaW5lcyBhbmQgcHJpbnQgYSBzY3JlZW5mdWwgb2YgbGluZXMKLS5QUAotLklQIFxmSWlcfFxmUGYKLXNraXAgXGZJaVxmUCBzY3JlZW5mdWxzIGFuZCBwcmludCBhIHNjcmVlbmZ1bCBvZiBsaW5lcwotLlBQCi0uSVAgInEgb3IgUSIKLXF1aXQgcmVhZGluZyB0aGUgY3VycmVudCBmaWxlOyBnbyBvbiB0byB0aGUgbmV4dCAoaWYgYW55KQotLlBQCi0uSVAgImUgb3IgcSIKLVdoZW4gdGhlIHByb21wdCAtLU1vcmUtLShOZXh0IGZpbGU6IAotLklSIGZpbGUgKQotaXMgcHJpbnRlZCwgdGhpcyBjb21tYW5kIGNhdXNlcyBiem1vcmUgdG8gZXhpdC4KLS5QUAotLklQIHMKLVdoZW4gdGhlIHByb21wdCAtLU1vcmUtLShOZXh0IGZpbGU6IAotLklSIGZpbGUgKQotaXMgcHJpbnRlZCwgdGhpcyBjb21tYW5kIGNhdXNlcyBiem1vcmUgdG8gc2tpcCB0aGUgbmV4dCBmaWxlIGFuZCBjb250aW51ZS4KLS5QUCAKLS5JUCA9Ci1EaXNwbGF5IHRoZSBjdXJyZW50IGxpbmUgbnVtYmVyLgotLlBQCi0uSVAgXGZJaVx8XGZQL2V4cHIKLXNlYXJjaCBmb3IgdGhlIFxmSWlcfFxmUC10aCBvY2N1cnJlbmNlIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gXGZJZXhwci5cZlAKLUlmIHRoZSBwYXR0ZXJuIGlzIG5vdCBmb3VuZCwKLS5JIGJ6bW9yZQotZ29lcyBvbiB0byB0aGUgbmV4dCBmaWxlIChpZiBhbnkpLgotT3RoZXJ3aXNlLCBhIHNjcmVlbmZ1bCBpcyBkaXNwbGF5ZWQsIHN0YXJ0aW5nIHR3byBsaW5lcyBiZWZvcmUgdGhlIHBsYWNlCi13aGVyZSB0aGUgZXhwcmVzc2lvbiB3YXMgZm91bmQuCi1UaGUgdXNlcidzIGVyYXNlIGFuZCBraWxsIGNoYXJhY3RlcnMgbWF5IGJlIHVzZWQgdG8gZWRpdCB0aGUgcmVndWxhcgotZXhwcmVzc2lvbi4KLUVyYXNpbmcgYmFjayBwYXN0IHRoZSBmaXJzdCBjb2x1bW4gY2FuY2VscyB0aGUgc2VhcmNoIGNvbW1hbmQuCi0uUFAKLS5JUCBcZklpXHxcZlBuCi1zZWFyY2ggZm9yIHRoZSBcZklpXHxcZlAtdGggb2NjdXJyZW5jZSBvZiB0aGUgbGFzdCByZWd1bGFyIGV4cHJlc3Npb24gZW50ZXJlZC4KLS5QUAotLklQICFjb21tYW5kCi1pbnZva2UgYSBzaGVsbCB3aXRoIFxmSWNvbW1hbmRcfFxmUC4gCi1UaGUgY2hhcmFjdGVyIGAhJyBpbiAiY29tbWFuZCIgYXJlIHJlcGxhY2VkIHdpdGggdGhlCi1wcmV2aW91cyBzaGVsbCBjb21tYW5kLiAgVGhlIHNlcXVlbmNlICJcXCEiIGlzIHJlcGxhY2VkIGJ5ICIhIi4KLS5QUAotLklQICI6cSBvciA6USIKLXF1aXQgcmVhZGluZyB0aGUgY3VycmVudCBmaWxlOyBnbyBvbiB0byB0aGUgbmV4dCAoaWYgYW55KQotKHNhbWUgYXMgcSBvciBRKS4KLS5QUAotLklQIC4KLShkb3QpIHJlcGVhdCB0aGUgcHJldmlvdXMgY29tbWFuZC4KLS5QUAotVGhlIGNvbW1hbmRzIHRha2UgZWZmZWN0IGltbWVkaWF0ZWx5LCBpLmUuLCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvCi10eXBlIGEgY2FycmlhZ2UgcmV0dXJuLgotVXAgdG8gdGhlIHRpbWUgd2hlbiB0aGUgY29tbWFuZCBjaGFyYWN0ZXIgaXRzZWxmIGlzIGdpdmVuLAotdGhlIHVzZXIgbWF5IGhpdCB0aGUgbGluZSBraWxsIGNoYXJhY3RlciB0byBjYW5jZWwgdGhlIG51bWVyaWNhbAotYXJndW1lbnQgYmVpbmcgZm9ybWVkLgotSW4gYWRkaXRpb24sIHRoZSB1c2VyIG1heSBoaXQgdGhlIGVyYXNlIGNoYXJhY3RlciB0byByZWRpc3BsYXkgdGhlCi0tLU1vcmUtLSBtZXNzYWdlLgotLlBQCi1BdCBhbnkgdGltZSB3aGVuIG91dHB1dCBpcyBiZWluZyBzZW50IHRvIHRoZSB0ZXJtaW5hbCwgdGhlIHVzZXIgY2FuCi1oaXQgdGhlIHF1aXQga2V5IChub3JtYWxseSBjb250cm9sXC1cXCkuCi0uSSBCem1vcmUKLXdpbGwgc3RvcCBzZW5kaW5nIG91dHB1dCwgYW5kIHdpbGwgZGlzcGxheSB0aGUgdXN1YWwgLS1Nb3JlLS0KLXByb21wdC4KLVRoZSB1c2VyIG1heSB0aGVuIGVudGVyIG9uZSBvZiB0aGUgYWJvdmUgY29tbWFuZHMgaW4gdGhlIG5vcm1hbCBtYW5uZXIuCi1VbmZvcnR1bmF0ZWx5LCBzb21lIG91dHB1dCBpcyBsb3N0IHdoZW4gdGhpcyBpcyBkb25lLCBkdWUgdG8gdGhlCi1mYWN0IHRoYXQgYW55IGNoYXJhY3RlcnMgd2FpdGluZyBpbiB0aGUgdGVybWluYWwncyBvdXRwdXQgcXVldWUKLWFyZSBmbHVzaGVkIHdoZW4gdGhlIHF1aXQgc2lnbmFsIG9jY3Vycy4KLS5QUAotVGhlIHRlcm1pbmFsIGlzIHNldCB0bwotLkkgbm9lY2hvCi1tb2RlIGJ5IHRoaXMgcHJvZ3JhbSBzbyB0aGF0IHRoZSBvdXRwdXQgY2FuIGJlIGNvbnRpbnVvdXMuCi1XaGF0IHlvdSB0eXBlIHdpbGwgdGh1cyBub3Qgc2hvdyBvbiB5b3VyIHRlcm1pbmFsLCBleGNlcHQgZm9yIHRoZSAvIGFuZCAhCi1jb21tYW5kcy4KLS5QUAotSWYgdGhlIHN0YW5kYXJkIG91dHB1dCBpcyBub3QgYSB0ZWxldHlwZSwgdGhlbgotLkkgYnptb3JlCi1hY3RzIGp1c3QgbGlrZQotLkkgYnpjYXQsCi1leGNlcHQgdGhhdCBhIGhlYWRlciBpcyBwcmludGVkIGJlZm9yZSBlYWNoIGZpbGUuCi0uU0ggRklMRVMKLS5EVAotL2V0Yy90ZXJtY2FwICAgICAgICBUZXJtaW5hbCBkYXRhIGJhc2UKLS5TSCAiU0VFIEFMU08iCi1tb3JlKDEpLCBsZXNzKDEpLCBiemlwMigxKSwgYnpkaWZmKDEpLCBiemdyZXAoMSkKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL2NvbXByZXNzLmMgYi9VdGlsaXRpZXMvY21iemlwMi9jb21wcmVzcy5jCmluZGV4IGZlZWEyMzMuLjVkZmEwMDIgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL2NvbXByZXNzLmMKKysrIGIvVXRpbGl0aWVzL2NtYnppcDIvY29tcHJlc3MuYwpAQCAtOCw4ICs4LDggQEAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJ6aXAyL2xpYmJ6aXAyLCBhIHByb2dyYW0gYW5kIGxpYnJhcnkgZm9yCiAgICBsb3NzbGVzcywgYmxvY2stc29ydGluZyBkYXRhIGNvbXByZXNzaW9uLgogCi0gICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcKLSAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDA3IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYnppcC5vcmc+CisgICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC44IG9mIDEzIEp1bHkgMjAxOQorICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMTkgSnVsaWFuIFNld2FyZCA8anNld2FyZEBhY20ub3JnPgogCiAgICBQbGVhc2UgcmVhZCB0aGUgV0FSTklORywgRElTQ0xBSU1FUiBhbmQgUEFURU5UUyBzZWN0aW9ucyBpbiB0aGUgCiAgICBSRUFETUUgZmlsZS4KQEAgLTIzOSw3ICsyMzksNyBAQAogdm9pZCBzZW5kTVRGVmFsdWVzICggRVN0YXRlKiBzICkKIHsKICAgIEludDMyIHYsIHQsIGksIGosIGdzLCBnZSwgdG90YywgYnQsIGJjLCBpdGVyOwotICAgSW50MzIgblNlbGVjdG9ycyA9IDAsIGFscGhhU2l6ZSwgbWluTGVuLCBtYXhMZW4sIHNlbEN0cjsKKyAgIEludDMyIG5TZWxlY3RvcnMsIGFscGhhU2l6ZSwgbWluTGVuLCBtYXhMZW4sIHNlbEN0cjsKICAgIEludDMyIG5Hcm91cHMsIG5CeXRlczsKIAogICAgLyotLQpAQCAtMzI5LDE0ICszMjksMTQgQEAKIAogICAgICAgLyotLS0KICAgICAgICAgU2V0IHVwIGFuIGF1eGlsaWFyeSBsZW5ndGggdGFibGUgd2hpY2ggaXMgdXNlZCB0byBmYXN0LXRyYWNrCi0gICAgdGhlIGNvbW1vbiBjYXNlIChuR3JvdXBzID09IDYpLiAKKwl0aGUgY29tbW9uIGNhc2UgKG5Hcm91cHMgPT0gNikuIAogICAgICAgLS0tKi8KICAgICAgIGlmIChuR3JvdXBzID09IDYpIHsKICAgICAgICAgIGZvciAodiA9IDA7IHYgPCBhbHBoYVNpemU7IHYrKykgewogICAgICAgICAgICAgcy0+bGVuX3BhY2tbdl1bMF0gPSAocy0+bGVuWzFdW3ZdIDw8IDE2KSB8IHMtPmxlblswXVt2XTsKICAgICAgICAgICAgIHMtPmxlbl9wYWNrW3ZdWzFdID0gKHMtPmxlblszXVt2XSA8PCAxNikgfCBzLT5sZW5bMl1bdl07CiAgICAgICAgICAgICBzLT5sZW5fcGFja1t2XVsyXSA9IChzLT5sZW5bNV1bdl0gPDwgMTYpIHwgcy0+bGVuWzRdW3ZdOwotICAgICB9CisJIH0KICAgICAgIH0KIAogICAgICAgblNlbGVjdG9ycyA9IDA7CkBAIC0zODUsNyArMzg1LDcgQEAKICAgICAgICAgICAgIGNvc3RbNF0gPSBjb3N0NDUgJiAweGZmZmY7IGNvc3RbNV0gPSBjb3N0NDUgPj4gMTY7CiAKICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qLS0tIHNsb3cgdmVyc2lvbiB3aGljaCBjb3JyZWN0bHkgaGFuZGxlcyBhbGwgc2l0dWF0aW9ucyAtLS0qLworCSAgICAvKi0tLSBzbG93IHZlcnNpb24gd2hpY2ggY29ycmVjdGx5IGhhbmRsZXMgYWxsIHNpdHVhdGlvbnMgLS0tKi8KICAgICAgICAgICAgIGZvciAoaSA9IGdzOyBpIDw9IGdlOyBpKyspIHsgCiAgICAgICAgICAgICAgICBVSW50MTYgaWN2ID0gbXRmdltpXTsKICAgICAgICAgICAgICAgIGZvciAodCA9IDA7IHQgPCBuR3JvdXBzOyB0KyspIGNvc3RbdF0gKz0gcy0+bGVuW3RdW2ljdl07CkBAIC00MjYsNyArNDI2LDcgQEAKICMgICAgICAgICAgIHVuZGVmIEJaX0lUVVIKIAogICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgLyotLS0gc2xvdyB2ZXJzaW9uIHdoaWNoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBzaXR1YXRpb25zIC0tLSovCisJICAgIC8qLS0tIHNsb3cgdmVyc2lvbiB3aGljaCBjb3JyZWN0bHkgaGFuZGxlcyBhbGwgc2l0dWF0aW9ucyAtLS0qLwogICAgICAgICAgICAgZm9yIChpID0gZ3M7IGkgPD0gZ2U7IGkrKykKICAgICAgICAgICAgICAgIHMtPnJmcmVxW2J0XVsgbXRmdltpXSBdKys7CiAgICAgICAgICB9CkBAIC00NTQsNyArNDU0LDcgQEAKIAogICAgQXNzZXJ0SCggbkdyb3VwcyA8IDgsIDMwMDIgKTsKICAgIEFzc2VydEgoIG5TZWxlY3RvcnMgPCAzMjc2OCAmJgotICAgICAgICAgICAgblNlbGVjdG9ycyA8PSAoMiArICg5MDAwMDAgLyBCWl9HX1NJWkUpKSwKKyAgICAgICAgICAgIG5TZWxlY3RvcnMgPD0gQlpfTUFYX1NFTEVDVE9SUywKICAgICAgICAgICAgIDMwMDMgKTsKIAogCkBAIC01NzksNyArNTc5LDcgQEAKICMgICAgICAgICAgIHVuZGVmIEJaX0lUQUgKIAogICAgICAgfSBlbHNlIHsKLSAgICAgLyotLS0gc2xvdyB2ZXJzaW9uIHdoaWNoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBzaXR1YXRpb25zIC0tLSovCisJIC8qLS0tIHNsb3cgdmVyc2lvbiB3aGljaCBjb3JyZWN0bHkgaGFuZGxlcyBhbGwgc2l0dWF0aW9ucyAtLS0qLwogICAgICAgICAgZm9yIChpID0gZ3M7IGkgPD0gZ2U7IGkrKykgewogICAgICAgICAgICAgYnNXICggcywgCiAgICAgICAgICAgICAgICAgICBzLT5sZW4gIFtzLT5zZWxlY3RvcltzZWxDdHJdXSBbbXRmdltpXV0sCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9jcmN0YWJsZS5jIGIvVXRpbGl0aWVzL2NtYnppcDIvY3JjdGFibGUuYwppbmRleCAyMTU2ODdiLi4yYjMzYzI1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9jcmN0YWJsZS5jCisrKyBiL1V0aWxpdGllcy9jbWJ6aXAyL2NyY3RhYmxlLmMKQEAgLTgsOCArOCw4IEBACiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBiemlwMi9saWJiemlwMiwgYSBwcm9ncmFtIGFuZCBsaWJyYXJ5IGZvcgogICAgbG9zc2xlc3MsIGJsb2NrLXNvcnRpbmcgZGF0YSBjb21wcmVzc2lvbi4KIAotICAgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuNSBvZiAxMCBEZWNlbWJlciAyMDA3Ci0gICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNyBKdWxpYW4gU2V3YXJkIDxqc2V3YXJkQGJ6aXAub3JnPgorICAgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuOCBvZiAxMyBKdWx5IDIwMTkKKyAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDE5IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYWNtLm9yZz4KIAogICAgUGxlYXNlIHJlYWQgdGhlIFdBUk5JTkcsIERJU0NMQUlNRVIgYW5kIFBBVEVOVFMgc2VjdGlvbnMgaW4gdGhlIAogICAgUkVBRE1FIGZpbGUuCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9kZWNvbXByZXNzLmMgYi9VdGlsaXRpZXMvY21iemlwMi9kZWNvbXByZXNzLmMKaW5kZXggYmJhNWUwZi4uYTFhMGJhYyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvZGVjb21wcmVzcy5jCisrKyBiL1V0aWxpdGllcy9jbWJ6aXAyL2RlY29tcHJlc3MuYwpAQCAtOCw4ICs4LDggQEAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJ6aXAyL2xpYmJ6aXAyLCBhIHByb2dyYW0gYW5kIGxpYnJhcnkgZm9yCiAgICBsb3NzbGVzcywgYmxvY2stc29ydGluZyBkYXRhIGNvbXByZXNzaW9uLgogCi0gICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcKLSAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDA3IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYnppcC5vcmc+CisgICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC44IG9mIDEzIEp1bHkgMjAxOQorICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMTkgSnVsaWFuIFNld2FyZCA8anNld2FyZEBhY20ub3JnPgogCiAgICBQbGVhc2UgcmVhZCB0aGUgV0FSTklORywgRElTQ0xBSU1FUiBhbmQgUEFURU5UUyBzZWN0aW9ucyBpbiB0aGUgCiAgICBSRUFETUUgZmlsZS4KQEAgLTI4NSw3ICsyODUsNyBAQAogCiAgICAgICAvKi0tLSBOb3cgdGhlIHNlbGVjdG9ycyAtLS0qLwogICAgICAgR0VUX0JJVFMoQlpfWF9TRUxFQ1RPUl8xLCBuR3JvdXBzLCAzKTsKLSAgICAgIGlmIChuR3JvdXBzIDwgMiB8fCBuR3JvdXBzID4gNikgUkVUVVJOKEJaX0RBVEFfRVJST1IpOworICAgICAgaWYgKG5Hcm91cHMgPCAyIHx8IG5Hcm91cHMgPiBCWl9OX0dST1VQUykgUkVUVVJOKEJaX0RBVEFfRVJST1IpOwogICAgICAgR0VUX0JJVFMoQlpfWF9TRUxFQ1RPUl8yLCBuU2VsZWN0b3JzLCAxNSk7CiAgICAgICBpZiAoblNlbGVjdG9ycyA8IDEpIFJFVFVSTihCWl9EQVRBX0VSUk9SKTsKICAgICAgIGZvciAoaSA9IDA7IGkgPCBuU2VsZWN0b3JzOyBpKyspIHsKQEAgLTI5Niw4ICsyOTYsMTQgQEAKICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgIGlmIChqID49IG5Hcm91cHMpIFJFVFVSTihCWl9EQVRBX0VSUk9SKTsKICAgICAgICAgIH0KLSAgICAgICAgIHMtPnNlbGVjdG9yTXRmW2ldID0gajsKKyAgICAgICAgIC8qIEhhdmluZyBtb3JlIHRoYW4gQlpfTUFYX1NFTEVDVE9SUyBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZQorICAgICAgICAgICAgc2luY2UgdGhleSB3aWxsIG5ldmVyIGJlIHVzZWQsIGJ1dCBzb21lIGltcGxlbWVudGF0aW9ucyBtaWdodAorICAgICAgICAgICAgInJvdW5kIHVwIiB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycywgc28ganVzdCBpZ25vcmUgdGhvc2UuICovCisgICAgICAgICBpZiAoaSA8IEJaX01BWF9TRUxFQ1RPUlMpCisgICAgICAgICAgIHMtPnNlbGVjdG9yTXRmW2ldID0gajsKICAgICAgIH0KKyAgICAgIGlmIChuU2VsZWN0b3JzID4gQlpfTUFYX1NFTEVDVE9SUykKKyAgICAgICAgblNlbGVjdG9ycyA9IEJaX01BWF9TRUxFQ1RPUlM7CiAKICAgICAgIC8qLS0tIFVuZG8gdGhlIE1URiB2YWx1ZXMgZm9yIHRoZSBzZWxlY3RvcnMuIC0tLSovCiAgICAgICB7CkBAIC0zODEsNiArMzg3LDEzIEBACiAgICAgICAgICAgICBlcyA9IC0xOwogICAgICAgICAgICAgTiA9IDE7CiAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAvKiBDaGVjayB0aGF0IE4gZG9lc24ndCBnZXQgdG9vIGJpZywgc28gdGhhdCBlcyBkb2Vzbid0CisgICAgICAgICAgICAgICAgICBnbyBuZWdhdGl2ZS4gIFRoZSBtYXhpbXVtIHZhbHVlIHRoYXQgY2FuIGJlCisgICAgICAgICAgICAgICAgICBSVU5BL1JVTkIgZW5jb2RlZCBpcyBlcXVhbCB0byB0aGUgYmxvY2sgc2l6ZSAocG9zdAorICAgICAgICAgICAgICAgICAgdGhlIGluaXRpYWwgUkxFKSwgdml6LCA5MDBrLCBzbyBib3VuZGluZyBOIGF0IDIKKyAgICAgICAgICAgICAgICAgIG1pbGxpb24gc2hvdWxkIGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cgd2l0aG91dAorICAgICAgICAgICAgICAgICAgcmVqZWN0aW5nIGFueSBsZWdpdGltYXRlIGlucHV0cy4gKi8KKyAgICAgICAgICAgICAgIGlmIChOID49IDIqMTAyNCoxMDI0KSBSRVRVUk4oQlpfREFUQV9FUlJPUik7CiAgICAgICAgICAgICAgICBpZiAobmV4dFN5bSA9PSBCWl9SVU5BKSBlcyA9IGVzICsgKDArMSkgKiBOOyBlbHNlCiAgICAgICAgICAgICAgICBpZiAobmV4dFN5bSA9PSBCWl9SVU5CKSBlcyA9IGVzICsgKDErMSkgKiBOOwogICAgICAgICAgICAgICAgTiA9IE4gKiAyOwpAQCAtNDg1LDE1ICs0OTgsMjggQEAKICAgICAgICAgIFJFVFVSTihCWl9EQVRBX0VSUk9SKTsKIAogICAgICAgLyotLSBTZXQgdXAgY2Z0YWIgdG8gZmFjaWxpdGF0ZSBnZW5lcmF0aW9uIG9mIFReKC0xKSAtLSovCisgICAgICAvKiBDaGVjazogdW56ZnRhYiBlbnRyaWVzIGluIHJhbmdlLiAqLworICAgICAgZm9yIChpID0gMDsgaSA8PSAyNTU7IGkrKykgeworICAgICAgICAgaWYgKHMtPnVuemZ0YWJbaV0gPCAwIHx8IHMtPnVuemZ0YWJbaV0gPiBuYmxvY2spCisgICAgICAgICAgICBSRVRVUk4oQlpfREFUQV9FUlJPUik7CisgICAgICB9CisgICAgICAvKiBBY3R1YWxseSBnZW5lcmF0ZSBjZnRhYi4gKi8KICAgICAgIHMtPmNmdGFiWzBdID0gMDsKICAgICAgIGZvciAoaSA9IDE7IGkgPD0gMjU2OyBpKyspIHMtPmNmdGFiW2ldID0gcy0+dW56ZnRhYltpLTFdOwogICAgICAgZm9yIChpID0gMTsgaSA8PSAyNTY7IGkrKykgcy0+Y2Z0YWJbaV0gKz0gcy0+Y2Z0YWJbaS0xXTsKKyAgICAgIC8qIENoZWNrOiBjZnRhYiBlbnRyaWVzIGluIHJhbmdlLiAqLwogICAgICAgZm9yIChpID0gMDsgaSA8PSAyNTY7IGkrKykgewogICAgICAgICAgaWYgKHMtPmNmdGFiW2ldIDwgMCB8fCBzLT5jZnRhYltpXSA+IG5ibG9jaykgewogICAgICAgICAgICAgLyogcy0+Y2Z0YWJbaV0gY2FuIGxlZ2l0aW1hdGVseSBiZSA9PSBuYmxvY2sgKi8KICAgICAgICAgICAgIFJFVFVSTihCWl9EQVRBX0VSUk9SKTsKICAgICAgICAgIH0KICAgICAgIH0KKyAgICAgIC8qIENoZWNrOiBjZnRhYiBlbnRyaWVzIG5vbi1kZXNjZW5kaW5nLiAqLworICAgICAgZm9yIChpID0gMTsgaSA8PSAyNTY7IGkrKykgeworICAgICAgICAgaWYgKHMtPmNmdGFiW2ktMV0gPiBzLT5jZnRhYltpXSkgeworICAgICAgICAgICAgUkVUVVJOKEJaX0RBVEFfRVJST1IpOworICAgICAgICAgfQorICAgICAgfQogCiAgICAgICBzLT5zdGF0ZV9vdXRfbGVuID0gMDsKICAgICAgIHMtPnN0YXRlX291dF9jaCAgPSAwOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvZGxsdGVzdC5jIGIvVXRpbGl0aWVzL2NtYnppcDIvZGxsdGVzdC5jCmluZGV4IDRlMjdkYTIuLjAzZmExNDYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL2RsbHRlc3QuYworKysgYi9VdGlsaXRpZXMvY21iemlwMi9kbGx0ZXN0LmMKQEAgLTEsMTc1ICsxLDE3NSBAQAotLyoKLSAgIG1pbmliejIKLSAgICAgIGxpYmJ6Mi5kbGwgdGVzdCBwcm9ncmFtLgotICAgICAgYnkgWW9zaGlva2EgVHN1bmVvICh0c3VuZW9AcnIuaWlqNHUub3IuanApCi0gICAgICBUaGlzIGZpbGUgaXMgUHVibGljIERvbWFpbi4gIFdlbGNvbWUgYW55IGVtYWlsIHRvIG1lLgotCi0gICB1c2FnZTogbWluaWJ6MiBbLWRdIFstezEsMiwuLjl9XSBbW3NyY2ZpbGVuYW1lXSBkZXN0ZmlsZW5hbWVdCi0qLwotCi0jZGVmaW5lIEJaX0lNUE9SVAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSAiYnpsaWIuaCIKLSNpZmRlZiBfV0lOMzIKLSNpbmNsdWRlIDxpby5oPgotI2VuZGlmCi0KLQotI2lmZGVmIF9XSU4zMgotCi0jZGVmaW5lIEJaMl9MSUJOQU1FICJsaWJiejItMS4wLjIuRExMIiAKLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLXN0YXRpYyBpbnQgQloyRExMTG9hZGVkID0gMDsKLXN0YXRpYyBISU5TVEFOQ0UgQloyRExMaExpYjsKLWludCBCWjJETExMb2FkTGlicmFyeSh2b2lkKQotewotICAgSElOU1RBTkNFIGhMaWI7Ci0KLSAgIGlmKEJaMkRMTExvYWRlZD09MSl7cmV0dXJuIDA7fQotICAgaExpYj1Mb2FkTGlicmFyeShCWjJfTElCTkFNRSk7Ci0gICBpZihoTGliID09IE5VTEwpewotICAgICAgZnByaW50ZihzdGRlcnIsIkNhbid0IGxvYWQgJXNcbiIsQloyX0xJQk5BTUUpOwotICAgICAgcmV0dXJuIC0xOwotICAgfQotICAgQloyX2J6bGliVmVyc2lvbj1HZXRQcm9jQWRkcmVzcyhoTGliLCJCWjJfYnpsaWJWZXJzaW9uIik7Ci0gICBCWjJfYnpvcGVuPUdldFByb2NBZGRyZXNzKGhMaWIsIkJaMl9iem9wZW4iKTsKLSAgIEJaMl9iemRvcGVuPUdldFByb2NBZGRyZXNzKGhMaWIsIkJaMl9iemRvcGVuIik7Ci0gICBCWjJfYnpyZWFkPUdldFByb2NBZGRyZXNzKGhMaWIsIkJaMl9ienJlYWQiKTsKLSAgIEJaMl9iendyaXRlPUdldFByb2NBZGRyZXNzKGhMaWIsIkJaMl9iendyaXRlIik7Ci0gICBCWjJfYnpmbHVzaD1HZXRQcm9jQWRkcmVzcyhoTGliLCJCWjJfYnpmbHVzaCIpOwotICAgQloyX2J6Y2xvc2U9R2V0UHJvY0FkZHJlc3MoaExpYiwiQloyX2J6Y2xvc2UiKTsKLSAgIEJaMl9iemVycm9yPUdldFByb2NBZGRyZXNzKGhMaWIsIkJaMl9iemVycm9yIik7Ci0KLSAgIGlmICghQloyX2J6bGliVmVyc2lvbiB8fCAhQloyX2J6b3BlbiB8fCAhQloyX2J6ZG9wZW4KLSAgICAgICB8fCAhQloyX2J6cmVhZCB8fCAhQloyX2J6d3JpdGUgfHwgIUJaMl9iemZsdXNoCi0gICAgICAgfHwgIUJaMl9iemNsb3NlIHx8ICFCWjJfYnplcnJvcikgewotICAgICAgZnByaW50ZihzdGRlcnIsIkdldFByb2NBZGRyZXNzIGZhaWxlZC5cbiIpOwotICAgICAgcmV0dXJuIC0xOwotICAgfQotICAgQloyRExMTG9hZGVkPTE7Ci0gICBCWjJETExoTGliPWhMaWI7Ci0gICByZXR1cm4gMDsKLQotfQotaW50IEJaMkRMTEZyZWVMaWJyYXJ5KHZvaWQpCi17Ci0gICBpZihCWjJETExMb2FkZWQ9PTApe3JldHVybiAwO30KLSAgIEZyZWVMaWJyYXJ5KEJaMkRMTGhMaWIpOwotICAgQloyRExMTG9hZGVkPTA7Ci19Ci0jZW5kaWYgLyogV0lOMzIgKi8KLQotdm9pZCB1c2FnZSh2b2lkKQotewotICAgcHV0cygidXNhZ2U6IG1pbmliejIgWy1kXSBbLXsxLDIsLi45fV0gW1tzcmNmaWxlbmFtZV0gZGVzdGZpbGVuYW1lXSIpOwotfQotCi1pbnQgbWFpbihpbnQgYXJnYyxjaGFyICphcmd2W10pCi17Ci0gICBpbnQgZGVjb21wcmVzcyA9IDA7Ci0gICBpbnQgbGV2ZWwgPSA5OwotICAgY2hhciAqZm5fciA9IE5VTEw7Ci0gICBjaGFyICpmbl93ID0gTlVMTDsKLQotI2lmZGVmIF9XSU4zMgotICAgaWYoQloyRExMTG9hZExpYnJhcnkoKTwwKXsKLSAgICAgIGZwcmludGYoc3RkZXJyLCJMb2FkaW5nIG9mICVzIGZhaWxlZC4gIEdpdmluZyB1cC5cbiIsIEJaMl9MSUJOQU1FKTsKLSAgICAgIGV4aXQoMSk7Ci0gICB9Ci0gICBwcmludGYoIkxvYWRpbmcgb2YgJXMgc3VjY2VlZGVkLiAgTGlicmFyeSB2ZXJzaW9uIGlzICVzLlxuIiwKLSAgICAgICAgICBCWjJfTElCTkFNRSwgQloyX2J6bGliVmVyc2lvbigpICk7Ci0jZW5kaWYKLSAgIHdoaWxlKCsrYXJndiwtLWFyZ2MpewotICAgICAgaWYoKiphcmd2ID09Jy0nIHx8ICoqYXJndj09Jy8nKXsKLSAgICAgICAgIGNoYXIgKnA7Ci0KLSAgICAgICAgIGZvcihwPSphcmd2KzE7KnA7cCsrKXsKLSAgICAgICAgICAgIGlmKCpwPT0nZCcpewotICAgICAgICAgICAgICAgZGVjb21wcmVzcyA9IDE7Ci0gICAgICAgICAgICB9ZWxzZSBpZignMSc8PSpwICYmICpwPD0nOScpewotICAgICAgICAgICAgICAgbGV2ZWwgPSAqcCAtICcwJzsKLSAgICAgICAgICAgIH1lbHNlewotICAgICAgICAgICAgICAgdXNhZ2UoKTsKLSAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICB9ZWxzZXsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgfQotICAgaWYoYXJnYz49MSl7Ci0gICAgICBmbl9yID0gKmFyZ3Y7Ci0gICAgICBhcmdjLS07YXJndisrOwotICAgfWVsc2V7Ci0gICAgICBmbl9yID0gTlVMTDsKLSAgIH0KLSAgIGlmKGFyZ2M+PTEpewotICAgICAgZm5fdyA9ICphcmd2OwotICAgICAgYXJnYy0tO2FyZ3YrKzsKLSAgIH1lbHNlewotICAgICAgZm5fdyA9IE5VTEw7Ci0gICB9Ci0gICB7Ci0gICAgICBpbnQgbGVuOwotICAgICAgY2hhciBidWZmWzB4MTAwMF07Ci0gICAgICBjaGFyIG1vZGVbMTBdOwotCi0gICAgICBpZihkZWNvbXByZXNzKXsKLSAgICAgICAgIEJaRklMRSAqQloyZnBfciA9IE5VTEw7Ci0gICAgICAgICBGSUxFICpmcF93ID0gTlVMTDsKLQotICAgICAgICAgaWYoZm5fdyl7Ci0gICAgICAgICAgICBpZigoZnBfdyA9IGZvcGVuKGZuX3csIndiIikpPT1OVUxMKXsKLSAgICAgICAgICAgICAgIHByaW50ZigiY2FuJ3Qgb3BlbiBbJXNdXG4iLGZuX3cpOwotICAgICAgICAgICAgICAgcGVycm9yKCJyZWFzb246Iik7Ci0gICAgICAgICAgICAgICBleGl0KDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgfWVsc2V7Ci0gICAgICAgICAgICBmcF93ID0gc3Rkb3V0OwotICAgICAgICAgfQotICAgICAgICAgaWYoKGZuX3IgPT0gTlVMTCAmJiAoQloyZnBfciA9IEJaMl9iemRvcGVuKGZpbGVubyhzdGRpbiksInJiIikpPT1OVUxMKQotICAgICAgICAgICAgfHwgKGZuX3IgIT0gTlVMTCAmJiAoQloyZnBfciA9IEJaMl9iem9wZW4oZm5fciwicmIiKSk9PU5VTEwpKXsKLSAgICAgICAgICAgIHByaW50ZigiY2FuJ3QgYnoyb3BlbnN0cmVhbVxuIik7Ci0gICAgICAgICAgICBleGl0KDEpOwotICAgICAgICAgfQotICAgICAgICAgd2hpbGUoKGxlbj1CWjJfYnpyZWFkKEJaMmZwX3IsYnVmZiwweDEwMDApKT4wKXsKLSAgICAgICAgICAgIGZ3cml0ZShidWZmLDEsbGVuLGZwX3cpOwotICAgICAgICAgfQotICAgICAgICAgQloyX2J6Y2xvc2UoQloyZnBfcik7Ci0gICAgICAgICBpZihmcF93ICE9IHN0ZG91dCkgZmNsb3NlKGZwX3cpOwotICAgICAgfWVsc2V7Ci0gICAgICAgICBCWkZJTEUgKkJaMmZwX3cgPSBOVUxMOwotICAgICAgICAgRklMRSAqZnBfciA9IE5VTEw7Ci0KLSAgICAgICAgIGlmKGZuX3IpewotICAgICAgICAgICAgaWYoKGZwX3IgPSBmb3Blbihmbl9yLCJyYiIpKT09TlVMTCl7Ci0gICAgICAgICAgICAgICBwcmludGYoImNhbid0IG9wZW4gWyVzXVxuIixmbl9yKTsKLSAgICAgICAgICAgICAgIHBlcnJvcigicmVhc29uOiIpOwotICAgICAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH1lbHNlewotICAgICAgICAgICAgZnBfciA9IHN0ZGluOwotICAgICAgICAgfQotICAgICAgICAgbW9kZVswXT0ndyc7Ci0gICAgICAgICBtb2RlWzFdID0gJzAnICsgbGV2ZWw7Ci0gICAgICAgICBtb2RlWzJdID0gJ1wwJzsKLQotICAgICAgICAgaWYoKGZuX3cgPT0gTlVMTCAmJiAoQloyZnBfdyA9IEJaMl9iemRvcGVuKGZpbGVubyhzdGRvdXQpLG1vZGUpKT09TlVMTCkKLSAgICAgICAgICAgIHx8IChmbl93ICE9TlVMTCAmJiAoQloyZnBfdyA9IEJaMl9iem9wZW4oZm5fdyxtb2RlKSk9PU5VTEwpKXsKLSAgICAgICAgICAgIHByaW50ZigiY2FuJ3QgYnoyb3BlbnN0cmVhbVxuIik7Ci0gICAgICAgICAgICBleGl0KDEpOwotICAgICAgICAgfQotICAgICAgICAgd2hpbGUoKGxlbj1mcmVhZChidWZmLDEsMHgxMDAwLGZwX3IpKT4wKXsKLSAgICAgICAgICAgIEJaMl9iendyaXRlKEJaMmZwX3csYnVmZixsZW4pOwotICAgICAgICAgfQotICAgICAgICAgQloyX2J6Y2xvc2UoQloyZnBfdyk7Ci0gICAgICAgICBpZihmcF9yIT1zdGRpbilmY2xvc2UoZnBfcik7Ci0gICAgICB9Ci0gICB9Ci0jaWZkZWYgX1dJTjMyCi0gICBCWjJETExGcmVlTGlicmFyeSgpOwotI2VuZGlmCi0gICByZXR1cm4gMDsKLX0KKy8qDQorICAgbWluaWJ6Mg0KKyAgICAgIGxpYmJ6Mi5kbGwgdGVzdCBwcm9ncmFtLg0KKyAgICAgIGJ5IFlvc2hpb2thIFRzdW5lbyAodHN1bmVvQHJyLmlpajR1Lm9yLmpwKQ0KKyAgICAgIFRoaXMgZmlsZSBpcyBQdWJsaWMgRG9tYWluLiAgV2VsY29tZSBhbnkgZW1haWwgdG8gbWUuDQorDQorICAgdXNhZ2U6IG1pbmliejIgWy1kXSBbLXsxLDIsLi45fV0gW1tzcmNmaWxlbmFtZV0gZGVzdGZpbGVuYW1lXQ0KKyovDQorDQorI2RlZmluZSBCWl9JTVBPUlQNCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgImJ6bGliLmgiDQorI2lmZGVmIF9XSU4zMg0KKyNpbmNsdWRlIDxpby5oPg0KKyNlbmRpZg0KKw0KKw0KKyNpZmRlZiBfV0lOMzINCisNCisjZGVmaW5lIEJaMl9MSUJOQU1FICJsaWJiejItMS4wLjIuRExMIiANCisNCisjaW5jbHVkZSA8d2luZG93cy5oPg0KK3N0YXRpYyBpbnQgQloyRExMTG9hZGVkID0gMDsNCitzdGF0aWMgSElOU1RBTkNFIEJaMkRMTGhMaWI7DQoraW50IEJaMkRMTExvYWRMaWJyYXJ5KHZvaWQpDQorew0KKyAgIEhJTlNUQU5DRSBoTGliOw0KKw0KKyAgIGlmKEJaMkRMTExvYWRlZD09MSl7cmV0dXJuIDA7fQ0KKyAgIGhMaWI9TG9hZExpYnJhcnkoQloyX0xJQk5BTUUpOw0KKyAgIGlmKGhMaWIgPT0gTlVMTCl7DQorICAgICAgZnByaW50ZihzdGRlcnIsIkNhbid0IGxvYWQgJXNcbiIsQloyX0xJQk5BTUUpOw0KKyAgICAgIHJldHVybiAtMTsNCisgICB9DQorICAgQloyX2J6bGliVmVyc2lvbj1HZXRQcm9jQWRkcmVzcyhoTGliLCJCWjJfYnpsaWJWZXJzaW9uIik7DQorICAgQloyX2J6b3Blbj1HZXRQcm9jQWRkcmVzcyhoTGliLCJCWjJfYnpvcGVuIik7DQorICAgQloyX2J6ZG9wZW49R2V0UHJvY0FkZHJlc3MoaExpYiwiQloyX2J6ZG9wZW4iKTsNCisgICBCWjJfYnpyZWFkPUdldFByb2NBZGRyZXNzKGhMaWIsIkJaMl9ienJlYWQiKTsNCisgICBCWjJfYnp3cml0ZT1HZXRQcm9jQWRkcmVzcyhoTGliLCJCWjJfYnp3cml0ZSIpOw0KKyAgIEJaMl9iemZsdXNoPUdldFByb2NBZGRyZXNzKGhMaWIsIkJaMl9iemZsdXNoIik7DQorICAgQloyX2J6Y2xvc2U9R2V0UHJvY0FkZHJlc3MoaExpYiwiQloyX2J6Y2xvc2UiKTsNCisgICBCWjJfYnplcnJvcj1HZXRQcm9jQWRkcmVzcyhoTGliLCJCWjJfYnplcnJvciIpOw0KKw0KKyAgIGlmICghQloyX2J6bGliVmVyc2lvbiB8fCAhQloyX2J6b3BlbiB8fCAhQloyX2J6ZG9wZW4NCisgICAgICAgfHwgIUJaMl9ienJlYWQgfHwgIUJaMl9iendyaXRlIHx8ICFCWjJfYnpmbHVzaA0KKyAgICAgICB8fCAhQloyX2J6Y2xvc2UgfHwgIUJaMl9iemVycm9yKSB7DQorICAgICAgZnByaW50ZihzdGRlcnIsIkdldFByb2NBZGRyZXNzIGZhaWxlZC5cbiIpOw0KKyAgICAgIHJldHVybiAtMTsNCisgICB9DQorICAgQloyRExMTG9hZGVkPTE7DQorICAgQloyRExMaExpYj1oTGliOw0KKyAgIHJldHVybiAwOw0KKw0KK30NCitpbnQgQloyRExMRnJlZUxpYnJhcnkodm9pZCkNCit7DQorICAgaWYoQloyRExMTG9hZGVkPT0wKXtyZXR1cm4gMDt9DQorICAgRnJlZUxpYnJhcnkoQloyRExMaExpYik7DQorICAgQloyRExMTG9hZGVkPTA7DQorfQ0KKyNlbmRpZiAvKiBXSU4zMiAqLw0KKw0KK3ZvaWQgdXNhZ2Uodm9pZCkNCit7DQorICAgcHV0cygidXNhZ2U6IG1pbmliejIgWy1kXSBbLXsxLDIsLi45fV0gW1tzcmNmaWxlbmFtZV0gZGVzdGZpbGVuYW1lXSIpOw0KK30NCisNCitpbnQgbWFpbihpbnQgYXJnYyxjaGFyICphcmd2W10pDQorew0KKyAgIGludCBkZWNvbXByZXNzID0gMDsNCisgICBpbnQgbGV2ZWwgPSA5Ow0KKyAgIGNoYXIgKmZuX3IgPSBOVUxMOw0KKyAgIGNoYXIgKmZuX3cgPSBOVUxMOw0KKw0KKyNpZmRlZiBfV0lOMzINCisgICBpZihCWjJETExMb2FkTGlicmFyeSgpPDApew0KKyAgICAgIGZwcmludGYoc3RkZXJyLCJMb2FkaW5nIG9mICVzIGZhaWxlZC4gIEdpdmluZyB1cC5cbiIsIEJaMl9MSUJOQU1FKTsNCisgICAgICBleGl0KDEpOw0KKyAgIH0NCisgICBwcmludGYoIkxvYWRpbmcgb2YgJXMgc3VjY2VlZGVkLiAgTGlicmFyeSB2ZXJzaW9uIGlzICVzLlxuIiwNCisgICAgICAgICAgQloyX0xJQk5BTUUsIEJaMl9iemxpYlZlcnNpb24oKSApOw0KKyNlbmRpZg0KKyAgIHdoaWxlKCsrYXJndiwtLWFyZ2Mpew0KKyAgICAgIGlmKCoqYXJndiA9PSctJyB8fCAqKmFyZ3Y9PScvJyl7DQorICAgICAgICAgY2hhciAqcDsNCisNCisgICAgICAgICBmb3IocD0qYXJndisxOypwO3ArKyl7DQorICAgICAgICAgICAgaWYoKnA9PSdkJyl7DQorICAgICAgICAgICAgICAgZGVjb21wcmVzcyA9IDE7DQorICAgICAgICAgICAgfWVsc2UgaWYoJzEnPD0qcCAmJiAqcDw9JzknKXsNCisgICAgICAgICAgICAgICBsZXZlbCA9ICpwIC0gJzAnOw0KKyAgICAgICAgICAgIH1lbHNlew0KKyAgICAgICAgICAgICAgIHVzYWdlKCk7DQorICAgICAgICAgICAgICAgZXhpdCgxKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgfQ0KKyAgICAgIH1lbHNlew0KKyAgICAgICAgIGJyZWFrOw0KKyAgICAgIH0NCisgICB9DQorICAgaWYoYXJnYz49MSl7DQorICAgICAgZm5fciA9ICphcmd2Ow0KKyAgICAgIGFyZ2MtLTthcmd2Kys7DQorICAgfWVsc2V7DQorICAgICAgZm5fciA9IE5VTEw7DQorICAgfQ0KKyAgIGlmKGFyZ2M+PTEpew0KKyAgICAgIGZuX3cgPSAqYXJndjsNCisgICAgICBhcmdjLS07YXJndisrOw0KKyAgIH1lbHNlew0KKyAgICAgIGZuX3cgPSBOVUxMOw0KKyAgIH0NCisgICB7DQorICAgICAgaW50IGxlbjsNCisgICAgICBjaGFyIGJ1ZmZbMHgxMDAwXTsNCisgICAgICBjaGFyIG1vZGVbMTBdOw0KKw0KKyAgICAgIGlmKGRlY29tcHJlc3Mpew0KKyAgICAgICAgIEJaRklMRSAqQloyZnBfciA9IE5VTEw7DQorICAgICAgICAgRklMRSAqZnBfdyA9IE5VTEw7DQorDQorICAgICAgICAgaWYoZm5fdyl7DQorICAgICAgICAgICAgaWYoKGZwX3cgPSBmb3Blbihmbl93LCJ3YiIpKT09TlVMTCl7DQorICAgICAgICAgICAgICAgcHJpbnRmKCJjYW4ndCBvcGVuIFslc11cbiIsZm5fdyk7DQorICAgICAgICAgICAgICAgcGVycm9yKCJyZWFzb246Iik7DQorICAgICAgICAgICAgICAgZXhpdCgxKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgfWVsc2V7DQorICAgICAgICAgICAgZnBfdyA9IHN0ZG91dDsNCisgICAgICAgICB9DQorICAgICAgICAgaWYoKGZuX3IgPT0gTlVMTCAmJiAoQloyZnBfciA9IEJaMl9iemRvcGVuKGZpbGVubyhzdGRpbiksInJiIikpPT1OVUxMKQ0KKyAgICAgICAgICAgIHx8IChmbl9yICE9IE5VTEwgJiYgKEJaMmZwX3IgPSBCWjJfYnpvcGVuKGZuX3IsInJiIikpPT1OVUxMKSl7DQorICAgICAgICAgICAgcHJpbnRmKCJjYW4ndCBiejJvcGVuc3RyZWFtXG4iKTsNCisgICAgICAgICAgICBleGl0KDEpOw0KKyAgICAgICAgIH0NCisgICAgICAgICB3aGlsZSgobGVuPUJaMl9ienJlYWQoQloyZnBfcixidWZmLDB4MTAwMCkpPjApew0KKyAgICAgICAgICAgIGZ3cml0ZShidWZmLDEsbGVuLGZwX3cpOw0KKyAgICAgICAgIH0NCisgICAgICAgICBCWjJfYnpjbG9zZShCWjJmcF9yKTsNCisgICAgICAgICBpZihmcF93ICE9IHN0ZG91dCkgZmNsb3NlKGZwX3cpOw0KKyAgICAgIH1lbHNlew0KKyAgICAgICAgIEJaRklMRSAqQloyZnBfdyA9IE5VTEw7DQorICAgICAgICAgRklMRSAqZnBfciA9IE5VTEw7DQorDQorICAgICAgICAgaWYoZm5fcil7DQorICAgICAgICAgICAgaWYoKGZwX3IgPSBmb3Blbihmbl9yLCJyYiIpKT09TlVMTCl7DQorICAgICAgICAgICAgICAgcHJpbnRmKCJjYW4ndCBvcGVuIFslc11cbiIsZm5fcik7DQorICAgICAgICAgICAgICAgcGVycm9yKCJyZWFzb246Iik7DQorICAgICAgICAgICAgICAgZXhpdCgxKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgfWVsc2V7DQorICAgICAgICAgICAgZnBfciA9IHN0ZGluOw0KKyAgICAgICAgIH0NCisgICAgICAgICBtb2RlWzBdPSd3JzsNCisgICAgICAgICBtb2RlWzFdID0gJzAnICsgbGV2ZWw7DQorICAgICAgICAgbW9kZVsyXSA9ICdcMCc7DQorDQorICAgICAgICAgaWYoKGZuX3cgPT0gTlVMTCAmJiAoQloyZnBfdyA9IEJaMl9iemRvcGVuKGZpbGVubyhzdGRvdXQpLG1vZGUpKT09TlVMTCkNCisgICAgICAgICAgICB8fCAoZm5fdyAhPU5VTEwgJiYgKEJaMmZwX3cgPSBCWjJfYnpvcGVuKGZuX3csbW9kZSkpPT1OVUxMKSl7DQorICAgICAgICAgICAgcHJpbnRmKCJjYW4ndCBiejJvcGVuc3RyZWFtXG4iKTsNCisgICAgICAgICAgICBleGl0KDEpOw0KKyAgICAgICAgIH0NCisgICAgICAgICB3aGlsZSgobGVuPWZyZWFkKGJ1ZmYsMSwweDEwMDAsZnBfcikpPjApew0KKyAgICAgICAgICAgIEJaMl9iendyaXRlKEJaMmZwX3csYnVmZixsZW4pOw0KKyAgICAgICAgIH0NCisgICAgICAgICBCWjJfYnpjbG9zZShCWjJmcF93KTsNCisgICAgICAgICBpZihmcF9yIT1zdGRpbilmY2xvc2UoZnBfcik7DQorICAgICAgfQ0KKyAgIH0NCisjaWZkZWYgX1dJTjMyDQorICAgQloyRExMRnJlZUxpYnJhcnkoKTsNCisjZW5kaWYNCisgICByZXR1cm4gMDsNCit9DQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvZW50aXRpZXMueG1sIGIvVXRpbGl0aWVzL2NtYnppcDIvZW50aXRpZXMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWUwNTUzLi4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL2VudGl0aWVzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotPCEtLSBtaXNjLiBzdHJpbmdzIC0tPgotPCFFTlRJVFkgYnotdXJsICJodHRwOi8vd3d3LmJ6aXAub3JnIj4KLTwhRU5USVRZIGJ6LWVtYWlsICJqc2V3YXJkQGJ6aXAub3JnIj4KLTwhRU5USVRZIGJ6LWxpZmVzcGFuICIxOTk2LTIwMDciPgotCi08IUVOVElUWSBiei12ZXJzaW9uICIxLjAuNSI+Ci08IUVOVElUWSBiei1kYXRlICIxMCBEZWNlbWJlciAyMDA3Ij4KLQotPCFFTlRJVFkgbWFudWFsLXRpdGxlICJiemlwMiBNYW51YWwiPgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvZm9ybWF0LnBsIGIvVXRpbGl0aWVzL2NtYnppcDIvZm9ybWF0LnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyYjM5MWRhLi4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL2Zvcm1hdC5wbAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybCAtdwotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgYnppcDIvbGliYnppcDIsIGEgcHJvZ3JhbSBhbmQgbGlicmFyeSBmb3IKLSMgbG9zc2xlc3MsIGJsb2NrLXNvcnRpbmcgZGF0YSBjb21wcmVzc2lvbi4KLSMKLSMgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuNSBvZiAxMCBEZWNlbWJlciAyMDA3Ci0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDA3IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYnppcC5vcmc+Ci0jCi0jIFBsZWFzZSByZWFkIHRoZSBXQVJOSU5HLCBESVNDTEFJTUVSIGFuZCBQQVRFTlRTIHNlY3Rpb25zIGluIHRoZSAKLSMgUkVBRE1FIGZpbGUuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyByZWxlYXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIGxpY2Vuc2UgY29udGFpbmVkCi0jIGluIHRoZSBmaWxlIExJQ0VOU0UuCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwotdXNlIHN0cmljdDsKLQotIyBnZXQgY29tbWFuZCBsaW5lIHZhbHVlczoKLWlmICggJCNBUkdWICE9MSApIHsKLSAgICBkaWUgIlVzYWdlOiAgJDAgeG1sX2luZmlsZSB4bWxfb3V0ZmlsZVxuIjsKLX0KLQotbXkgJGluZmlsZSA9IHNoaWZ0OwotIyBjaGVjayBpbmZpbGUgZXhpc3RzCi1kaWUgIkNhbid0IGZpbmQgZmlsZSBcIiRpbmZpbGVcIiIKLSAgdW5sZXNzIC1mICRpbmZpbGU7Ci0jIGNoZWNrIHdlIGNhbiByZWFkIGluZmlsZQotaWYgKCEgLXIgJGluZmlsZSkgewotICAgIGRpZSAiQ2FuJ3QgcmVhZCBpbnB1dCAkaW5maWxlXG4iOwotfQotIyBjaGVjayB3ZSBjYW4gb3BlbiBpbmZpbGUKLW9wZW4oIElORklMRSwiPCRpbmZpbGUiICkgb3IgCi0gICAgZGllICJDYW4ndCBpbnB1dCAkaW5maWxlICQhIjsKLQotI215ICRvdXRmaWxlID0gJ2ZtdC1tYW51YWwueG1sJzsKLW15ICRvdXRmaWxlID0gc2hpZnQ7Ci0jcHJpbnQgIkluZmlsZTogJGluZmlsZSwgT3V0ZmlsZTogJG91dGZpbGVcbiI7Ci0jIGNoZWNrIHdlIGNhbiB3cml0ZSB0byBvdXRmaWxlCi1vcGVuKCBPVVRGSUxFLCI+JG91dGZpbGUiICkgb3IgCi0gICAgZGllICJDYW4ndCBvdXRwdXQgJG91dGZpbGUgJCEgZm9yIHdyaXRpbmciOwotCi1teSAoJHByZXYsICRjdXJyLCAkc3RyKTsKLSRwcmV2ID0gJyc7ICRjdXJyID0gJyc7Ci13aGlsZSAoIDxJTkZJTEU+ICkgewotCi0gICAgICAgIHByaW50IE9VVEZJTEUgJHByZXY7Ci0gICAgJHByZXYgPSAkY3VycjsKLSAgICAkY3VyciA9ICRfOwotICAgICRzdHIgPSAnJzsKLQotICAgIGlmICggJHByZXYgPX4gLzxwcm9ncmFtbGlzdGluZz4kfDxzY3JlZW4+JC8gKSB7Ci0gICAgICAgIGNob21wICRwcmV2OwotICAgICAgICAkY3VyciA9IGpvaW4oICcnLCAkcHJldiwgIjwhW0NEQVRBWyIsICRjdXJyICk7Ci0gICAgICAgICAgICAgICAgJHByZXYgPSAnJzsKLSAgICAgICAgbmV4dDsKLSAgICB9Ci0gICAgZWxzaWYgKCAkY3VyciA9fiAvPFwvcHJvZ3JhbWxpc3Rpbmc+fDxcL3NjcmVlbj4vICkgewotICAgICAgICBjaG9tcCAkcHJldjsKLSAgICAgICAgJGN1cnIgPSBqb2luKCAnJywgJHByZXYsICJdXT4iLCAkY3VyciApOwotICAgICAgICAgICAgICAgICRwcmV2ID0gJyc7Ci0gICAgICAgIG5leHQ7Ci0gICAgfQotfQotcHJpbnQgT1VURklMRSAkY3VycjsKLWNsb3NlIElORklMRTsKLWNsb3NlIE9VVEZJTEU7Ci1leGl0OwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvaHVmZm1hbi5jIGIvVXRpbGl0aWVzL2NtYnppcDIvaHVmZm1hbi5jCmluZGV4IDg3ZTc5ZTMuLjQzYTE4OTkgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL2h1ZmZtYW4uYworKysgYi9VdGlsaXRpZXMvY21iemlwMi9odWZmbWFuLmMKQEAgLTgsOCArOCw4IEBACiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBiemlwMi9saWJiemlwMiwgYSBwcm9ncmFtIGFuZCBsaWJyYXJ5IGZvcgogICAgbG9zc2xlc3MsIGJsb2NrLXNvcnRpbmcgZGF0YSBjb21wcmVzc2lvbi4KIAotICAgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuNSBvZiAxMCBEZWNlbWJlciAyMDA3Ci0gICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNyBKdWxpYW4gU2V3YXJkIDxqc2V3YXJkQGJ6aXAub3JnPgorICAgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuOCBvZiAxMyBKdWx5IDIwMTkKKyAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDE5IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYWNtLm9yZz4KIAogICAgUGxlYXNlIHJlYWQgdGhlIFdBUk5JTkcsIERJU0NMQUlNRVIgYW5kIFBBVEVOVFMgc2VjdGlvbnMgaW4gdGhlIAogICAgUkVBRE1FIGZpbGUuCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9saWJiejIuZGVmIGIvVXRpbGl0aWVzL2NtYnppcDIvbGliYnoyLmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlmZWY1NC4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9saWJiejIuZGVmCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotTElCUkFSWSAgICAgICAgIExJQkJaMgotREVTQ1JJUFRJT04gICAgICJsaWJiemlwMjogbGlicmFyeSBmb3IgZGF0YSBjb21wcmVzc2lvbiIKLUVYUE9SVFMKLSAgICBCWjJfYnpDb21wcmVzc0luaXQKLSAgICBCWjJfYnpDb21wcmVzcwotICAgIEJaMl9iekNvbXByZXNzRW5kCi0gICAgQloyX2J6RGVjb21wcmVzc0luaXQKLSAgICBCWjJfYnpEZWNvbXByZXNzCi0gICAgQloyX2J6RGVjb21wcmVzc0VuZAotICAgIEJaMl9ielJlYWRPcGVuCi0gICAgQloyX2J6UmVhZENsb3NlCi0gICAgQloyX2J6UmVhZEdldFVudXNlZAotICAgIEJaMl9ielJlYWQKLSAgICBCWjJfYnpXcml0ZU9wZW4KLSAgICBCWjJfYnpXcml0ZQotICAgIEJaMl9ieldyaXRlQ2xvc2UKLSAgICBCWjJfYnpXcml0ZUNsb3NlNjQKLSAgICBCWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3MKLSAgICBCWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzcwotICAgIEJaMl9iemxpYlZlcnNpb24KLSAgICBCWjJfYnpvcGVuCi0gICAgQloyX2J6ZG9wZW4KLSAgICBCWjJfYnpyZWFkCi0gICAgQloyX2J6d3JpdGUKLSAgICBCWjJfYnpmbHVzaAotICAgIEJaMl9iemNsb3NlCi0gICAgQloyX2J6ZXJyb3IKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL2xpYmJ6Mi5saWIgYi9VdGlsaXRpZXMvY21iemlwMi9saWJiejIubGliCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTk3YTc1Li4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL2xpYmJ6Mi5saWIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9tYWtlZmlsZS5tc2MgYi9VdGlsaXRpZXMvY21iemlwMi9tYWtlZmlsZS5tc2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ZjJlNTkuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvbWFrZWZpbGUubXNjCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotIyBNYWtlZmlsZSBmb3IgTWljcm9zb2Z0IFZpc3VhbCBDKysgNi4wCi0jIHVzYWdlOiBubWFrZSAtZiBtYWtlZmlsZS5tc2MKLSMgSy5NLiBTeXJpbmcgKHN5cmluZ0Bnc2YuZGUpCi0jIEZpeGVkIHVwIGJ5IEpSUyBmb3IgYnppcDItMC45LjVkIHJlbGVhc2UuCi0KLUNDPWNsCi1DRkxBR1M9IC1EV0lOMzIgLU1EIC1PeCAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1ub2xvZ28KLQotT0JKUz0gYmxvY2tzb3J0Lm9iaiAgXAotICAgICAgaHVmZm1hbi5vYmogICAgXAotICAgICAgY3JjdGFibGUub2JqICAgXAotICAgICAgcmFuZHRhYmxlLm9iaiAgXAotICAgICAgY29tcHJlc3Mub2JqICAgXAotICAgICAgZGVjb21wcmVzcy5vYmogXAotICAgICAgYnpsaWIub2JqCi0KLWFsbDogbGliIGJ6aXAyIHRlc3QKLQotYnppcDI6IGxpYgotICAgICQoQ0MpICQoQ0ZMQUdTKSAtbyBiemlwMiBiemlwMi5jIGxpYmJ6Mi5saWIgc2V0YXJndi5vYmoKLSAgICAkKENDKSAkKENGTEFHUykgLW8gYnppcDJyZWNvdmVyIGJ6aXAycmVjb3Zlci5jCi0KLWxpYjogJChPQkpTKQotICAgIGxpYiAvb3V0OmxpYmJ6Mi5saWIgJChPQkpTKQotCi10ZXN0OiBiemlwMgotICAgIHR5cGUgd29yZHMxCi0gICAgLlxcYnppcDIgLTEgIDwgc2FtcGxlMS5yZWYgPiBzYW1wbGUxLnJiMgotICAgIC5cXGJ6aXAyIC0yICA8IHNhbXBsZTIucmVmID4gc2FtcGxlMi5yYjIKLSAgICAuXFxiemlwMiAtMyAgPCBzYW1wbGUzLnJlZiA+IHNhbXBsZTMucmIyCi0gICAgLlxcYnppcDIgLWQgIDwgc2FtcGxlMS5iejIgPiBzYW1wbGUxLnRzdAotICAgIC5cXGJ6aXAyIC1kICA8IHNhbXBsZTIuYnoyID4gc2FtcGxlMi50c3QKLSAgICAuXFxiemlwMiAtZHMgPCBzYW1wbGUzLmJ6MiA+IHNhbXBsZTMudHN0Ci0gICAgQGVjaG8gQWxsIHNpeCBvZiB0aGUgZmMncyBzaG91bGQgZmluZCBubyBkaWZmZXJlbmNlcy4KLSAgICBAZWNobyBJZiBmYyBmaW5kcyBhbiBlcnJvciBvbiBzYW1wbGUzLmJ6MiwgdGhpcyBjb3VsZCBiZQotICAgIEBlY2hvIGJlY2F1c2UgV2luWmlwJ3MgJ1RBUiBmaWxlIHNtYXJ0IENSL0xGIGNvbnZlcnNpb24nCi0gICAgQGVjaG8gaXMgdG9vIGNsZXZlciBmb3IgaXRzIG93biBnb29kLiAgRGlzYWJsZSB0aGlzIG9wdGlvbi4KLSAgICBAZWNobyBUaGUgY29ycmVjdCBzaXplIGZvciBzYW1wbGUzLnJlZiBpcyAxMjAsMjQ0LiAgSWYgaXQKLSAgICBAZWNobyBpcyAxNTAsMjUxLCBXaW5aaXAgaGFzIG1lc3NlZCBpdCB1cC4KLSAgICBmYyBzYW1wbGUxLmJ6MiBzYW1wbGUxLnJiMiAKLSAgICBmYyBzYW1wbGUyLmJ6MiBzYW1wbGUyLnJiMgotICAgIGZjIHNhbXBsZTMuYnoyIHNhbXBsZTMucmIyCi0gICAgZmMgc2FtcGxlMS50c3Qgc2FtcGxlMS5yZWYKLSAgICBmYyBzYW1wbGUyLnRzdCBzYW1wbGUyLnJlZgotICAgIGZjIHNhbXBsZTMudHN0IHNhbXBsZTMucmVmCi0KLQotCi1jbGVhbjogCi0gICAgZGVsICoub2JqCi0gICAgZGVsIGxpYmJ6Mi5saWIgCi0gICAgZGVsIGJ6aXAyLmV4ZQotICAgIGRlbCBiemlwMnJlY292ZXIuZXhlCi0gICAgZGVsIHNhbXBsZTEucmIyIAotICAgIGRlbCBzYW1wbGUyLnJiMiAKLSAgICBkZWwgc2FtcGxlMy5yYjIKLSAgICBkZWwgc2FtcGxlMS50c3QgCi0gICAgZGVsIHNhbXBsZTIudHN0Ci0gICAgZGVsIHNhbXBsZTMudHN0Ci0KLS5jLm9iajogCi0gICAgJChDQykgJChDRkxBR1MpIC1jICQqLmMgLW8gJCoub2JqCi0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL21hbnVhbC5odG1sIGIvVXRpbGl0aWVzL2NtYnppcDIvbWFudWFsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNDQ5NTMuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvbWFudWFsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQwICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTx0aXRsZT5iemlwMiBhbmQgbGliYnppcDIsIHZlcnNpb24gMS4wLjU8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS42OS4xIj4KLTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+LyogQ29sb3VyczoKLSM3NDI0MGYgIGRhcmsgYnJvd24gICAgICBoMSwgaDIsIGgzLCBoNAotIzMzNjY5OSAgbWVkaXVtIGJsdWUgICAgIGxpbmtzCi0jMzM5OTk5ICB0dXJxdW9pc2UgICAgICAgbGluayBob3ZlciBjb2xvdXIKLSMyMDIwMjAgIGFsbW9zdCBibGFjayAgICBnZW5lcmFsIHRleHQKLSM3NjE1OTYgIHB1cnBsZSAgICAgICAgICBtZDVzdW0gdGV4dAotIzYyNjI2MiAgZGFyayBncmF5ICAgICAgIHByZSBib3JkZXIKLSNlZWVlZWUgIHZlcnkgbGlnaHQgZ3JheSBwcmUgYmFja2dyb3VuZAotI2YyZjJmOSAgdmVyeSBsaWdodCBibHVlIG5hdiB0YWJsZSBiYWNrZ3JvdW5kCi0jMzM2NmNjICBtZWRpdW0gYmx1ZSAgICAgbmF2IHRhYmxlIGJvcmRlcgotKi8KLQotYSwgYTpsaW5rLCBhOnZpc2l0ZWQsIGE6YWN0aXZlIHsgY29sb3I6ICMzMzY2OTk7IH0KLWE6aG92ZXIgeyBjb2xvcjogIzMzOTk5OTsgfQotCi1ib2R5IHsgZm9udDogODAlLzEyNiUgc2Fucy1zZXJpZjsgfQotaDEsIGgyLCBoMywgaDQgeyBjb2xvcjogIzc0MjQwZjsgfQotCi1kdCB7IGNvbG9yOiAjMzM2Njk5OyBmb250LXdlaWdodDogYm9sZCB9Ci1kZCB7IAotIG1hcmdpbi1sZWZ0OiAxLjVlbTsgCi0gcGFkZGluZy1ib3R0b206IDAuOGVtOwotfQotCi0vKiAtLSBydWxlciAtLSAqLwotZGl2LmhyX2JsdWUgeyAKLSAgaGVpZ2h0OiAgM3B4OyAKLSAgYmFja2dyb3VuZDojZmZmZmZmIHVybCgiL2ltYWdlcy9ocl9ibHVlLnBuZyIpIHJlcGVhdC14OyB9Ci1kaXYuaHJfYmx1ZSBociB7IGRpc3BsYXk6bm9uZTsgfQotCi0vKiByZWxlYXNlIHN0eWxlcyAqLwotI3JlbGVhc2UgcCB7IG1hcmdpbi10b3A6IDAuNGVtOyB9Ci0jcmVsZWFzZSAubWQ1c3VtIHsgY29sb3I6ICM3NjE1OTY7IH0KLQotCi0vKiAtLS0tLS0gc3R5bGVzIGZvciBkb2NzfG1hbnVhbHN8aG93dG8gLS0tLS0tICovCi0vKiAtLSBsaXN0cyAtLSAqLwotdWwgIHsgCi0gbWFyZ2luOiAgICAgMHB4IDRweCAxNnB4IDE2cHg7Ci0gcGFkZGluZzogICAgMHB4OwotIGxpc3Qtc3R5bGU6IHVybCgiL2ltYWdlcy9saS1ibHVlLnBuZyIpOyAKLX0KLXVsIGxpIHsgCi0gbWFyZ2luLWJvdHRvbTogMTBweDsKLX0KLXVsIHVsICAgeyAKLSBsaXN0LXN0eWxlLXR5cGU6ICBub25lOyAKLSBsaXN0LXN0eWxlLWltYWdlOiBub25lOyAKLSBtYXJnaW4tbGVmdDogICAgICAwcHg7IAotfQotCi0vKiBoZWFkZXIgLyBmb290ZXIgbmF2IHRhYmxlcyAqLwotdGFibGUubmF2IHsKLSBib3JkZXI6ICAgICBzb2xpZCAxcHggIzMzNjZjYzsKLSBiYWNrZ3JvdW5kOiAjZjJmMmY5OwotIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjk7Ci0gbWFyZ2luLWJvdHRvbTogMC41ZW07Ci19Ci0vKiBkb24ndCBoYXZlIHVuZGVybGluZWQgbGlua3MgaW4gY2h1bmtlZCBuYXYgbWVudXMgKi8KLXRhYmxlLm5hdiBhIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9Ci10YWJsZS5uYXYgYTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9Ci10YWJsZS5uYXYgdGQgeyBmb250LXNpemU6IDg1JTsgfQotCi1jb2RlLCB0dCwgcHJlIHsgZm9udC1zaXplOiAxMjAlOyB9Ci1jb2RlLCB0dCB7IGNvbG9yOiAjNzYxNTk2OyB9Ci0KLWRpdi5saXRlcmFsbGF5b3V0LCBwcmUucHJvZ3JhbWxpc3RpbmcsIHByZS5zY3JlZW4gewotIGNvbG9yOiAgICAgICMwMDAwMDA7Ci0gcGFkZGluZzogICAgMC41ZW07Ci0gYmFja2dyb3VuZDogI2VlZWVlZTsKLSBib3JkZXI6ICAgICAxcHggc29saWQgIzYyNjI2MjsKLSBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwotIG1hcmdpbjogNHB4IDBweCA0cHggMHB4OyAKLX0KLTwvc3R5bGU+Ci08L2hlYWQ+Ci08Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+PGRpdiBjbGFzcz0iYm9vayIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KLTxkaXY+Ci08ZGl2PjxoMSBjbGFzcz0idGl0bGUiPgotPGEgbmFtZT0idXNlcm1hbiI+PC9hPmJ6aXAyIGFuZCBsaWJiemlwMiwgdmVyc2lvbiAxLjAuNTwvaDE+PC9kaXY+Ci08ZGl2PjxoMiBjbGFzcz0ic3VidGl0bGUiPkEgcHJvZ3JhbSBhbmQgbGlicmFyeSBmb3IgZGF0YSBjb21wcmVzc2lvbjwvaDI+PC9kaXY+Ci08ZGl2PjxkaXYgY2xhc3M9ImF1dGhvcmdyb3VwIj48ZGl2IGNsYXNzPSJhdXRob3IiPgotPGgzIGNsYXNzPSJhdXRob3IiPgotPHNwYW4gY2xhc3M9ImZpcnN0bmFtZSI+SnVsaWFuPC9zcGFuPiA8c3BhbiBjbGFzcz0ic3VybmFtZSI+U2V3YXJkPC9zcGFuPgotPC9oMz4KLTxkaXYgY2xhc3M9ImFmZmlsaWF0aW9uIj48c3BhbiBjbGFzcz0ib3JnbmFtZSI+aHR0cDovL3d3dy5iemlwLm9yZzxicj48L3NwYW4+PC9kaXY+Ci08L2Rpdj48L2Rpdj48L2Rpdj4KLTxkaXY+PHAgY2xhc3M9InJlbGVhc2VpbmZvIj5WZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDc8L3A+PC9kaXY+Ci08ZGl2PjxwIGNsYXNzPSJjb3B5cmlnaHQiPkNvcHlyaWdodCCpIDE5OTYtMjAwNyBKdWxpYW4gU2V3YXJkPC9wPjwvZGl2PgotPGRpdj48ZGl2IGNsYXNzPSJsZWdhbG5vdGljZSI+Ci08YSBuYW1lPSJpZDI0OTk4MzMiPjwvYT48cD5UaGlzIHByb2dyYW0sIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+LCB0aGUKLSAgYXNzb2NpYXRlZCBsaWJyYXJ5IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+LCBhbmQKLSAgYWxsIGRvY3VtZW50YXRpb24sIGFyZSBjb3B5cmlnaHQgqSAxOTk2LTIwMDcgSnVsaWFuIFNld2FyZC4KLSAgQWxsIHJpZ2h0cyByZXNlcnZlZC48L3A+Ci08cD5SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoCi0gIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlCi0gIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6PC9wPgotPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iYnVsbGV0Ij4KLTxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5SZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlCi0gICBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCi0gICBmb2xsb3dpbmcgZGlzY2xhaW1lci48L3A+PC9saT4KLTxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5UaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUKLSAgIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsCi0gICBzb2Z0d2FyZS4gIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuCi0gICBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlCi0gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLjwvcD48L2xpPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPkFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQKLSAgIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwKLSAgIHNvZnR3YXJlLjwvcD48L2xpPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPlRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvCi0gICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLjwvcD48L2xpPgotPC91bD48L2Rpdj4KLTxwPlRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiAiQVMgSVMiIEFORCBBTlkKLSAgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQotICBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAotICBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSAgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcKLSAgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLjwvcD4KLTxwPlBBVEVOVFM6IFRvIHRoZSBiZXN0IG9mIG15IGtub3dsZWRnZSwKLSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBhbmQKLSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPiBkbyBub3QgdXNlIGFueSBwYXRlbnRlZAotIGFsZ29yaXRobXMuICBIb3dldmVyLCBJIGRvIG5vdCBoYXZlIHRoZSByZXNvdXJjZXMgdG8gY2FycnkKLSBvdXQgYSBwYXRlbnQgc2VhcmNoLiAgVGhlcmVmb3JlIEkgY2Fubm90IGdpdmUgYW55IGd1YXJhbnRlZSBvZgotIHRoZSBhYm92ZSBzdGF0ZW1lbnQuCi0gPC9wPgotPC9kaXY+PC9kaXY+Ci08L2Rpdj4KLTxocj4KLTwvZGl2PgotPGRpdiBjbGFzcz0idG9jIj4KLTxwPjxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPjwvcD4KLTxkbD4KLTxkdD48c3BhbiBjbGFzcz0iY2hhcHRlciI+PGEgaHJlZj0iI2ludHJvIj4xLiBJbnRyb2R1Y3Rpb248L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9ImNoYXB0ZXIiPjxhIGhyZWY9IiN1c2luZyI+Mi4gSG93IHRvIHVzZSBiemlwMjwvYT48L3NwYW4+PC9kdD4KLTxkZD48ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbmFtZSI+Mi4xLiBOQU1FPC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3N5bm9wc2lzIj4yLjIuIFNZTk9QU0lTPC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2Rlc2NyaXB0aW9uIj4yLjMuIERFU0NSSVBUSU9OPC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI29wdGlvbnMiPjIuNC4gT1BUSU9OUzwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNtZW1vcnktbWFuYWdlbWVudCI+Mi41LiBNRU1PUlkgTUFOQUdFTUVOVDwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNyZWNvdmVyaW5nIj4yLjYuIFJFQ09WRVJJTkcgREFUQSBGUk9NIERBTUFHRUQgRklMRVM8L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcGVyZm9ybWFuY2UiPjIuNy4gUEVSRk9STUFOQ0UgTk9URVM8L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjY2F2ZWF0cyI+Mi44LiBDQVZFQVRTPC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2F1dGhvciI+Mi45LiBBVVRIT1I8L2E+PC9zcGFuPjwvZHQ+Ci08L2RsPjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9ImNoYXB0ZXIiPjxhIGhyZWY9IiNsaWJwcm9nIj4zLiAKLVByb2dyYW1taW5nIHdpdGggPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4KLTwvYT48L3NwYW4+PC9kdD4KLTxkZD48ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjdG9wLWxldmVsIj4zLjEuIFRvcC1sZXZlbCBzdHJ1Y3R1cmU8L2E+PC9zcGFuPjwvZHQ+Ci08ZGQ+PGRsPgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2xsLXN1bW1hcnkiPjMuMS4xLiBMb3ctbGV2ZWwgc3VtbWFyeTwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNobC1zdW1tYXJ5Ij4zLjEuMi4gSGlnaC1sZXZlbCBzdW1tYXJ5PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI3V0aWwtZm5zLXN1bW1hcnkiPjMuMS4zLiBVdGlsaXR5IGZ1bmN0aW9ucyBzdW1tYXJ5PC9hPjwvc3Bhbj48L2R0PgotPC9kbD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2Vyci1oYW5kbGluZyI+My4yLiBFcnJvciBoYW5kbGluZzwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNsb3ctbGV2ZWwiPjMuMy4gTG93LWxldmVsIGludGVyZmFjZTwvYT48L3NwYW4+PC9kdD4KLTxkZD48ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpjb21wcmVzcy1pbml0Ij4zLjMuMS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6Q29tcHJlc3MiPjMuMy4yLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekNvbXByZXNzLWVuZCI+My4zLjMuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NFbmQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6RGVjb21wcmVzcy1pbml0Ij4zLjMuNC4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpEZWNvbXByZXNzIj4zLjMuNS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekRlY29tcHJlc3MtZW5kIj4zLjMuNi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzRW5kPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTwvZGw+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNobC1pbnRlcmZhY2UiPjMuNC4gSGlnaC1sZXZlbCBpbnRlcmZhY2U8L2E+PC9zcGFuPjwvZHQ+Ci08ZGQ+PGRsPgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZG9wZW4iPjMuNC4xLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRPcGVuPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNienJlYWQiPjMuNC4yLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZGdldHVudXNlZCI+My40LjMuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZEdldFVudXNlZDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpyZWFkY2xvc2UiPjMuNC40LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT48L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnp3cml0ZW9wZW4iPjMuNC41LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT48L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnp3cml0ZSI+My40LjYuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGU8L2NvZGU+PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6d3JpdGVjbG9zZSI+My40LjcuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT48L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjZW1iZWQiPjMuNC44LiBIYW5kbGluZyBlbWJlZGRlZCBjb21wcmVzc2VkIGRhdGEgc3RyZWFtczwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNzdGQtcmR3ciI+My40LjkuIFN0YW5kYXJkIGZpbGUtcmVhZGluZy93cml0aW5nIGNvZGU8L2E+PC9zcGFuPjwvZHQ+Ci08L2RsPjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjdXRpbC1mbnMiPjMuNS4gVXRpbGl0eSBmdW5jdGlvbnM8L2E+PC9zcGFuPjwvZHQ+Ci08ZGQ+PGRsPgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6YnVmZnRvYnVmZmNvbXByZXNzIj4zLjUuMS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3M8L2NvZGU+PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6YnVmZnRvYnVmZmRlY29tcHJlc3MiPjMuNS4yLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTwvZGw+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiN6bGliLWNvbXBhdCI+My42LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWI8L2NvZGU+IGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zPC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3N0ZGlvLWZyZWUiPjMuNy4gVXNpbmcgdGhlIGxpYnJhcnkgaW4gYSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZGlvPC9jb2RlPi1mcmVlIGVudmlyb25tZW50PC9hPjwvc3Bhbj48L2R0PgotPGRkPjxkbD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNzdGRpby1ieWUiPjMuNy4xLiBHZXR0aW5nIHJpZCBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZGlvPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNjcml0aWNhbC1lcnJvciI+My43LjIuIENyaXRpY2FsIGVycm9yIGhhbmRsaW5nPC9hPjwvc3Bhbj48L2R0PgotPC9kbD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3dpbi1kbGwiPjMuOC4gTWFraW5nIGEgV2luZG93cyBETEw8L2E+PC9zcGFuPjwvZHQ+Ci08L2RsPjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9ImNoYXB0ZXIiPjxhIGhyZWY9IiNtaXNjIj40LiBNaXNjZWxsYW5lYTwvYT48L3NwYW4+PC9kdD4KLTxkZD48ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbGltaXRzIj40LjEuIExpbWl0YXRpb25zIG9mIHRoZSBjb21wcmVzc2VkIGZpbGUgZm9ybWF0PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3BvcnQtaXNzdWVzIj40LjIuIFBvcnRhYmlsaXR5IGlzc3VlczwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNidWdzIj40LjMuIFJlcG9ydGluZyBidWdzPC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3BhY2thZ2UiPjQuNC4gRGlkIHlvdSBnZXQgdGhlIHJpZ2h0IHBhY2thZ2U/PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3JlYWRpbmciPjQuNS4gRnVydGhlciBSZWFkaW5nPC9hPjwvc3Bhbj48L2R0PgotPC9kbD48L2RkPgotPC9kbD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY2hhcHRlciIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSI+Ci08YSBuYW1lPSJpbnRybyI+PC9hPjEuoEludHJvZHVjdGlvbjwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wcmVzc2VzIGZpbGVzCi11c2luZyB0aGUgQnVycm93cy1XaGVlbGVyIGJsb2NrLXNvcnRpbmcgdGV4dCBjb21wcmVzc2lvbgotYWxnb3JpdGhtLCBhbmQgSHVmZm1hbiBjb2RpbmcuICBDb21wcmVzc2lvbiBpcyBnZW5lcmFsbHkKLWNvbnNpZGVyYWJseSBiZXR0ZXIgdGhhbiB0aGF0IGFjaGlldmVkIGJ5IG1vcmUgY29udmVudGlvbmFsCi1MWjc3L0xaNzgtYmFzZWQgY29tcHJlc3NvcnMsIGFuZCBhcHByb2FjaGVzIHRoZSBwZXJmb3JtYW5jZSBvZgotdGhlIFBQTSBmYW1pbHkgb2Ygc3RhdGlzdGljYWwgY29tcHJlc3NvcnMuPC9wPgotPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gaXMgYnVpbHQgb24gdG9wIG9mCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPiwgYSBmbGV4aWJsZSBsaWJyYXJ5IGZvcgotaGFuZGxpbmcgY29tcHJlc3NlZCBkYXRhIGluIHRoZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0LiAgVGhpcyBtYW51YWwKLWRlc2NyaWJlcyBib3RoIGhvdyB0byB1c2UgdGhlIHByb2dyYW0gYW5kIGhvdyB0byB3b3JrIHdpdGggdGhlCi1saWJyYXJ5IGludGVyZmFjZS4gIE1vc3Qgb2YgdGhlIG1hbnVhbCBpcyBkZXZvdGVkIHRvIHRoaXMKLWxpYnJhcnksIG5vdCB0aGUgcHJvZ3JhbSwgd2hpY2ggaXMgZ29vZCBuZXdzIGlmIHlvdXIgaW50ZXJlc3QgaXMKLW9ubHkgaW4gdGhlIHByb2dyYW0uPC9wPgotPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iYnVsbGV0Ij4KLTxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48YSBocmVmPSIjdXNpbmciPkhvdyB0byB1c2UgYnppcDI8L2E+IGRlc2NyaWJlcyBob3cgdG8gdXNlCi0gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT47IHRoaXMgaXMgdGhlIG9ubHkgcGFydAotIHlvdSBuZWVkIHRvIHJlYWQgaWYgeW91IGp1c3Qgd2FudCB0byBrbm93IGhvdyB0byBvcGVyYXRlIHRoZQotIHByb2dyYW0uPC9wPjwvbGk+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGEgaHJlZj0iI2xpYnByb2ciPlByb2dyYW1taW5nIHdpdGggbGliYnppcDI8L2E+IGRlc2NyaWJlcyB0aGUKLSBwcm9ncmFtbWluZyBpbnRlcmZhY2VzIGluIGRldGFpbCwgYW5kPC9wPjwvbGk+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGEgaHJlZj0iI21pc2MiPk1pc2NlbGxhbmVhPC9hPiByZWNvcmRzIHNvbWUKLSBtaXNjZWxsYW5lb3VzIG5vdGVzIHdoaWNoIEkgdGhvdWdodCBvdWdodCB0byBiZSByZWNvcmRlZAotIHNvbWV3aGVyZS48L3A+PC9saT4KLTwvdWw+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNoYXB0ZXIiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiPgotPGEgbmFtZT0idXNpbmciPjwvYT4yLqBIb3cgdG8gdXNlIGJ6aXAyPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KLTxkaXYgY2xhc3M9InRvYyI+Ci08cD48Yj5UYWJsZSBvZiBDb250ZW50czwvYj48L3A+Ci08ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbmFtZSI+Mi4xLiBOQU1FPC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3N5bm9wc2lzIj4yLjIuIFNZTk9QU0lTPC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2Rlc2NyaXB0aW9uIj4yLjMuIERFU0NSSVBUSU9OPC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI29wdGlvbnMiPjIuNC4gT1BUSU9OUzwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNtZW1vcnktbWFuYWdlbWVudCI+Mi41LiBNRU1PUlkgTUFOQUdFTUVOVDwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNyZWNvdmVyaW5nIj4yLjYuIFJFQ09WRVJJTkcgREFUQSBGUk9NIERBTUFHRUQgRklMRVM8L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcGVyZm9ybWFuY2UiPjIuNy4gUEVSRk9STUFOQ0UgTk9URVM8L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjY2F2ZWF0cyI+Mi44LiBDQVZFQVRTPC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2F1dGhvciI+Mi45LiBBVVRIT1I8L2E+PC9zcGFuPjwvZHQ+Ci08L2RsPgotPC9kaXY+Ci08cD5UaGlzIGNoYXB0ZXIgY29udGFpbnMgYSBjb3B5IG9mIHRoZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gbWFuIHBhZ2UsIGFuZCBub3RoaW5nCi1lbHNlLjwvcD4KLTxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgotPGEgbmFtZT0ibmFtZSI+PC9hPjIuMS6gTkFNRTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Ci08ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJidWxsZXQiPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+LAotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1bnppcDI8L2NvZGU+IC0gYSBibG9jay1zb3J0aW5nIGZpbGUKLSAgY29tcHJlc3NvciwgdjEuMC40PC9wPjwvbGk+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemNhdDwvY29kZT4gLQotICAgZGVjb21wcmVzc2VzIGZpbGVzIHRvIHN0ZG91dDwvcD48L2xpPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPiAtCi0gICByZWNvdmVycyBkYXRhIGZyb20gZGFtYWdlZCBiemlwMiBmaWxlczwvcD48L2xpPgotPC91bD48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+Ci08YSBuYW1lPSJzeW5vcHNpcyI+PC9hPjIuMi6gU1lOT1BTSVM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2PgotPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iYnVsbGV0Ij4KLTxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBbCi0gIC1jZGZrcXN0dnpWTDEyMzQ1Njc4OSBdIFsgZmlsZW5hbWVzIC4uLiAgXTwvcD48L2xpPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gWwotICAtZmt2c1ZMIF0gWyBmaWxlbmFtZXMgLi4uICBdPC9wPjwvbGk+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemNhdDwvY29kZT4gWyAtcyBdIFsKLSAgZmlsZW5hbWVzIC4uLiAgXTwvcD48L2xpPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPgotICBmaWxlbmFtZTwvcD48L2xpPgotPC91bD48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+Ci08YSBuYW1lPSJkZXNjcmlwdGlvbiI+PC9hPjIuMy6gREVTQ1JJUFRJT048L2gyPjwvZGl2PjwvZGl2PjwvZGl2PgotPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gY29tcHJlc3NlcyBmaWxlcwotdXNpbmcgdGhlIEJ1cnJvd3MtV2hlZWxlciBibG9jayBzb3J0aW5nIHRleHQgY29tcHJlc3Npb24KLWFsZ29yaXRobSwgYW5kIEh1ZmZtYW4gY29kaW5nLiAgQ29tcHJlc3Npb24gaXMgZ2VuZXJhbGx5Ci1jb25zaWRlcmFibHkgYmV0dGVyIHRoYW4gdGhhdCBhY2hpZXZlZCBieSBtb3JlIGNvbnZlbnRpb25hbAotTFo3Ny9MWjc4LWJhc2VkIGNvbXByZXNzb3JzLCBhbmQgYXBwcm9hY2hlcyB0aGUgcGVyZm9ybWFuY2Ugb2YKLXRoZSBQUE0gZmFtaWx5IG9mIHN0YXRpc3RpY2FsIGNvbXByZXNzb3JzLjwvcD4KLTxwPlRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBhcmUgZGVsaWJlcmF0ZWx5IHZlcnkgc2ltaWxhciB0bwotdGhvc2Ugb2YgR05VIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Z3ppcDwvY29kZT4sIGJ1dCB0aGV5IGFyZQotbm90IGlkZW50aWNhbC48L3A+Ci08cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBleHBlY3RzIGEgbGlzdCBvZgotZmlsZSBuYW1lcyB0byBhY2NvbXBhbnkgdGhlIGNvbW1hbmQtbGluZSBmbGFncy4gIEVhY2ggZmlsZSBpcwotcmVwbGFjZWQgYnkgYSBjb21wcmVzc2VkIHZlcnNpb24gb2YgaXRzZWxmLCB3aXRoIHRoZSBuYW1lCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm9yaWdpbmFsX25hbWUuYnoyPC9jb2RlPi4gIEVhY2gKLWNvbXByZXNzZWQgZmlsZSBoYXMgdGhlIHNhbWUgbW9kaWZpY2F0aW9uIGRhdGUsIHBlcm1pc3Npb25zLCBhbmQsCi13aGVuIHBvc3NpYmxlLCBvd25lcnNoaXAgYXMgdGhlIGNvcnJlc3BvbmRpbmcgb3JpZ2luYWwsIHNvIHRoYXQKLXRoZXNlIHByb3BlcnRpZXMgY2FuIGJlIGNvcnJlY3RseSByZXN0b3JlZCBhdCBkZWNvbXByZXNzaW9uIHRpbWUuCi1GaWxlIG5hbWUgaGFuZGxpbmcgaXMgbmFpdmUgaW4gdGhlIHNlbnNlIHRoYXQgdGhlcmUgaXMgbm8KLW1lY2hhbmlzbSBmb3IgcHJlc2VydmluZyBvcmlnaW5hbCBmaWxlIG5hbWVzLCBwZXJtaXNzaW9ucywKLW93bmVyc2hpcHMgb3IgZGF0ZXMgaW4gZmlsZXN5c3RlbXMgd2hpY2ggbGFjayB0aGVzZSBjb25jZXB0cywgb3IKLWhhdmUgc2VyaW91cyBmaWxlIG5hbWUgbGVuZ3RoIHJlc3RyaWN0aW9ucywgc3VjaCBhcwotTVMtRE9TLjwvcD4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idW56aXAyPC9jb2RlPiB3aWxsIGJ5IGRlZmF1bHQgbm90Ci1vdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMuICBJZiB5b3Ugd2FudCB0aGlzIHRvIGhhcHBlbiwgc3BlY2lmeQotdGhlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LWY8L2NvZGU+IGZsYWcuPC9wPgotPHA+SWYgbm8gZmlsZSBuYW1lcyBhcmUgc3BlY2lmaWVkLAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gY29tcHJlc3NlcyBmcm9tIHN0YW5kYXJkCi1pbnB1dCB0byBzdGFuZGFyZCBvdXRwdXQuICBJbiB0aGlzIGNhc2UsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB3aWxsIGRlY2xpbmUgdG8gd3JpdGUKLWNvbXByZXNzZWQgb3V0cHV0IHRvIGEgdGVybWluYWwsIGFzIHRoaXMgd291bGQgYmUgZW50aXJlbHkKLWluY29tcHJlaGVuc2libGUgYW5kIHRoZXJlZm9yZSBwb2ludGxlc3MuPC9wPgotPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idW56aXAyPC9jb2RlPiAob3IKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIgLWQ8L2NvZGU+KSBkZWNvbXByZXNzZXMgYWxsCi1zcGVjaWZpZWQgZmlsZXMuICBGaWxlcyB3aGljaCB3ZXJlIG5vdCBjcmVhdGVkIGJ5Ci08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB3aWxsIGJlIGRldGVjdGVkIGFuZAotaWdub3JlZCwgYW5kIGEgd2FybmluZyBpc3N1ZWQuCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBhdHRlbXB0cyB0byBndWVzcyB0aGUKLWZpbGVuYW1lIGZvciB0aGUgZGVjb21wcmVzc2VkIGZpbGUgZnJvbSB0aGF0IG9mIHRoZSBjb21wcmVzc2VkCi1maWxlIGFzIGZvbGxvd3M6PC9wPgotPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iYnVsbGV0Ij4KLTxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLmJ6MiA8L2NvZGU+Ci0gIGJlY29tZXMKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlbmFtZTwvY29kZT48L3A+PC9saT4KLTxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLmJ6IDwvY29kZT4KLSAgYmVjb21lcwotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lPC9jb2RlPjwvcD48L2xpPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZW5hbWUudGJ6MjwvY29kZT4KLSAgYmVjb21lcwotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLnRhcjwvY29kZT48L3A+PC9saT4KLTxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLnRieiA8L2NvZGU+Ci0gIGJlY29tZXMKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlbmFtZS50YXI8L2NvZGU+PC9wPjwvbGk+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hbnlvdGhlcm5hbWUgPC9jb2RlPgotICBiZWNvbWVzCi0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YW55b3RoZXJuYW1lLm91dDwvY29kZT48L3A+PC9saT4KLTwvdWw+PC9kaXY+Ci08cD5JZiB0aGUgZmlsZSBkb2VzIG5vdCBlbmQgaW4gb25lIG9mIHRoZSByZWNvZ25pc2VkIGVuZGluZ3MsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5iejI8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYno8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4udGJ6MjwvY29kZT4gb3IKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LnRiejwvY29kZT4sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wbGFpbnMgdGhhdCBpdCBjYW5ub3QKLWd1ZXNzIHRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBmaWxlLCBhbmQgdXNlcyB0aGUgb3JpZ2luYWwgbmFtZQotd2l0aCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5vdXQ8L2NvZGU+IGFwcGVuZGVkLjwvcD4KLTxwPkFzIHdpdGggY29tcHJlc3Npb24sIHN1cHBseWluZyBubyBmaWxlbmFtZXMgY2F1c2VzCi1kZWNvbXByZXNzaW9uIGZyb20gc3RhbmRhcmQgaW5wdXQgdG8gc3RhbmRhcmQgb3V0cHV0LjwvcD4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gd2lsbCBjb3JyZWN0bHkKLWRlY29tcHJlc3MgYSBmaWxlIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHR3byBvciBtb3JlCi1jb21wcmVzc2VkIGZpbGVzLiAgVGhlIHJlc3VsdCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUKLWNvcnJlc3BvbmRpbmcgdW5jb21wcmVzc2VkIGZpbGVzLiAgSW50ZWdyaXR5IHRlc3RpbmcKLSg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi10PC9jb2RlPikgb2YgY29uY2F0ZW5hdGVkIGNvbXByZXNzZWQKLWZpbGVzIGlzIGFsc28gc3VwcG9ydGVkLjwvcD4KLTxwPllvdSBjYW4gYWxzbyBjb21wcmVzcyBvciBkZWNvbXByZXNzIGZpbGVzIHRvIHRoZSBzdGFuZGFyZAotb3V0cHV0IGJ5IGdpdmluZyB0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tYzwvY29kZT4gZmxhZy4KLU11bHRpcGxlIGZpbGVzIG1heSBiZSBjb21wcmVzc2VkIGFuZCBkZWNvbXByZXNzZWQgbGlrZSB0aGlzLiAgVGhlCi1yZXN1bHRpbmcgb3V0cHV0cyBhcmUgZmVkIHNlcXVlbnRpYWxseSB0byBzdGRvdXQuICBDb21wcmVzc2lvbiBvZgotbXVsdGlwbGUgZmlsZXMgaW4gdGhpcyBtYW5uZXIgZ2VuZXJhdGVzIGEgc3RyZWFtIGNvbnRhaW5pbmcKLW11bHRpcGxlIGNvbXByZXNzZWQgZmlsZSByZXByZXNlbnRhdGlvbnMuICBTdWNoIGEgc3RyZWFtIGNhbiBiZQotZGVjb21wcmVzc2VkIGNvcnJlY3RseSBvbmx5IGJ5Ci08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB2ZXJzaW9uIDAuOS4wIG9yIGxhdGVyLgotRWFybGllciB2ZXJzaW9ucyBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB3aWxsCi1zdG9wIGFmdGVyIGRlY29tcHJlc3NpbmcgdGhlIGZpcnN0IGZpbGUgaW4gdGhlIHN0cmVhbS48L3A+Ci08cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6Y2F0PC9jb2RlPiAob3IKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIgLWRjPC9jb2RlPikgZGVjb21wcmVzc2VzIGFsbAotc3BlY2lmaWVkIGZpbGVzIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQuPC9wPgotPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gd2lsbCByZWFkIGFyZ3VtZW50cwotZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaSVAyPC9jb2RlPiBhbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpJUDwvY29kZT4sIGluIHRoYXQgb3JkZXIsIGFuZCB3aWxsCi1wcm9jZXNzIHRoZW0gYmVmb3JlIGFueSBhcmd1bWVudHMgcmVhZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCi1UaGlzIGdpdmVzIGEgY29udmVuaWVudCB3YXkgdG8gc3VwcGx5IGRlZmF1bHQgYXJndW1lbnRzLjwvcD4KLTxwPkNvbXByZXNzaW9uIGlzIGFsd2F5cyBwZXJmb3JtZWQsIGV2ZW4gaWYgdGhlIGNvbXByZXNzZWQKLWZpbGUgaXMgc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gdGhlIG9yaWdpbmFsLiAgRmlsZXMgb2YgbGVzcyB0aGFuCi1hYm91dCBvbmUgaHVuZHJlZCBieXRlcyB0ZW5kIHRvIGdldCBsYXJnZXIsIHNpbmNlIHRoZSBjb21wcmVzc2lvbgotbWVjaGFuaXNtIGhhcyBhIGNvbnN0YW50IG92ZXJoZWFkIGluIHRoZSByZWdpb24gb2YgNTAgYnl0ZXMuCi1SYW5kb20gZGF0YSAoaW5jbHVkaW5nIHRoZSBvdXRwdXQgb2YgbW9zdCBmaWxlIGNvbXByZXNzb3JzKSBpcwotY29kZWQgYXQgYWJvdXQgOC4wNSBiaXRzIHBlciBieXRlLCBnaXZpbmcgYW4gZXhwYW5zaW9uIG9mIGFyb3VuZAotMC41JS48L3A+Ci08cD5BcyBhIHNlbGYtY2hlY2sgZm9yIHlvdXIgcHJvdGVjdGlvbiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHVzZXMgMzItYml0IENSQ3MgdG8gbWFrZQotc3VyZSB0aGF0IHRoZSBkZWNvbXByZXNzZWQgdmVyc2lvbiBvZiBhIGZpbGUgaXMgaWRlbnRpY2FsIHRvIHRoZQotb3JpZ2luYWwuICBUaGlzIGd1YXJkcyBhZ2FpbnN0IGNvcnJ1cHRpb24gb2YgdGhlIGNvbXByZXNzZWQgZGF0YSwKLWFuZCBhZ2FpbnN0IHVuZGV0ZWN0ZWQgYnVncyBpbgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gKGhvcGVmdWxseSB2ZXJ5IHVubGlrZWx5KS4KLVRoZSBjaGFuY2VzIG9mIGRhdGEgY29ycnVwdGlvbiBnb2luZyB1bmRldGVjdGVkIGlzIG1pY3Jvc2NvcGljLAotYWJvdXQgb25lIGNoYW5jZSBpbiBmb3VyIGJpbGxpb24gZm9yIGVhY2ggZmlsZSBwcm9jZXNzZWQuICBCZQotYXdhcmUsIHRob3VnaCwgdGhhdCB0aGUgY2hlY2sgb2NjdXJzIHVwb24gZGVjb21wcmVzc2lvbiwgc28gaXQKLWNhbiBvbmx5IHRlbGwgeW91IHRoYXQgc29tZXRoaW5nIGlzIHdyb25nLiAgSXQgY2FuJ3QgaGVscCB5b3UKLXJlY292ZXIgdGhlIG9yaWdpbmFsIHVuY29tcHJlc3NlZCBkYXRhLiAgWW91IGNhbiB1c2UKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPiB0byB0cnkgdG8gcmVjb3ZlcgotZGF0YSBmcm9tIGRhbWFnZWQgZmlsZXMuPC9wPgotPHA+UmV0dXJuIHZhbHVlczogMCBmb3IgYSBub3JtYWwgZXhpdCwgMSBmb3IgZW52aXJvbm1lbnRhbAotcHJvYmxlbXMgKGZpbGUgbm90IGZvdW5kLCBpbnZhbGlkIGZsYWdzLCBJL08gZXJyb3JzLCBldGMuKSwgMgotdG8gaW5kaWNhdGUgYSBjb3JydXB0IGNvbXByZXNzZWQgZmlsZSwgMyBmb3IgYW4gaW50ZXJuYWwKLWNvbnNpc3RlbmN5IGVycm9yIChlZywgYnVnKSB3aGljaCBjYXVzZWQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHRvIHBhbmljLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+Ci08YSBuYW1lPSJvcHRpb25zIj48L2E+Mi40LqBPUFRJT05TPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PGRsPgotPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1jIC0tc3Rkb3V0PC9jb2RlPjwvc3Bhbj48L2R0PgotPGRkPjxwPkNvbXByZXNzIG9yIGRlY29tcHJlc3MgdG8gc3RhbmRhcmQKLSAgb3V0cHV0LjwvcD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1kIC0tZGVjb21wcmVzczwvY29kZT48L3NwYW4+PC9kdD4KLTxkZD48cD5Gb3JjZSBkZWNvbXByZXNzaW9uLgotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiwKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idW56aXAyPC9jb2RlPiBhbmQKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemNhdDwvY29kZT4gYXJlIHJlYWxseSB0aGUgc2FtZQotICBwcm9ncmFtLCBhbmQgdGhlIGRlY2lzaW9uIGFib3V0IHdoYXQgYWN0aW9ucyB0byB0YWtlIGlzIGRvbmUgb24KLSAgdGhlIGJhc2lzIG9mIHdoaWNoIG5hbWUgaXMgdXNlZC4gIFRoaXMgZmxhZyBvdmVycmlkZXMgdGhhdAotICBtZWNoYW5pc20sIGFuZCBmb3JjZXMgYnppcDIgdG8gZGVjb21wcmVzcy48L3A+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4teiAtLWNvbXByZXNzPC9jb2RlPjwvc3Bhbj48L2R0PgotPGRkPjxwPlRoZSBjb21wbGVtZW50IHRvCi0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LWQ8L2NvZGU+OiBmb3JjZXMgY29tcHJlc3Npb24sCi0gIHJlZ2FyZGxlc3Mgb2YgdGhlIGludm9rYXRpb24gbmFtZS48L3A+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tdCAtLXRlc3Q8L2NvZGU+PC9zcGFuPjwvZHQ+Ci08ZGQ+PHA+Q2hlY2sgaW50ZWdyaXR5IG9mIHRoZSBzcGVjaWZpZWQgZmlsZShzKSwgYnV0Ci0gIGRvbid0IGRlY29tcHJlc3MgdGhlbS4gIFRoaXMgcmVhbGx5IHBlcmZvcm1zIGEgdHJpYWwKLSAgZGVjb21wcmVzc2lvbiBhbmQgdGhyb3dzIGF3YXkgdGhlIHJlc3VsdC48L3A+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZiAtLWZvcmNlPC9jb2RlPjwvc3Bhbj48L2R0PgotPGRkPgotPHA+Rm9yY2Ugb3ZlcndyaXRlIG9mIG91dHB1dCBmaWxlcy4gIE5vcm1hbGx5LAotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB3aWxsIG5vdCBvdmVyd3JpdGUKLSAgZXhpc3Rpbmcgb3V0cHV0IGZpbGVzLiAgQWxzbyBmb3JjZXMKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gdG8gYnJlYWsgaGFyZCBsaW5rcyB0bwotICBmaWxlcywgd2hpY2ggaXQgb3RoZXJ3aXNlIHdvdWxkbid0IGRvLjwvcD4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IG5vcm1hbGx5IGRlY2xpbmVzCi0gIHRvIGRlY29tcHJlc3MgZmlsZXMgd2hpY2ggZG9uJ3QgaGF2ZSB0aGUgY29ycmVjdCBtYWdpYyBoZWFkZXIKLSAgYnl0ZXMuIElmIGZvcmNlZCAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZjwvY29kZT4pLAotICBob3dldmVyLCBpdCB3aWxsIHBhc3Mgc3VjaCBmaWxlcyB0aHJvdWdoIHVubW9kaWZpZWQuIFRoaXMgaXMKLSAgaG93IEdOVSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmd6aXA8L2NvZGU+IGJlaGF2ZXMuPC9wPgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tayAtLWtlZXA8L2NvZGU+PC9zcGFuPjwvZHQ+Ci08ZGQ+PHA+S2VlcCAoZG9uJ3QgZGVsZXRlKSBpbnB1dCBmaWxlcyBkdXJpbmcKLSAgY29tcHJlc3Npb24gb3IgZGVjb21wcmVzc2lvbi48L3A+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tcyAtLXNtYWxsPC9jb2RlPjwvc3Bhbj48L2R0PgotPGRkPgotPHA+UmVkdWNlIG1lbW9yeSB1c2FnZSwgZm9yIGNvbXByZXNzaW9uLAotICBkZWNvbXByZXNzaW9uIGFuZCB0ZXN0aW5nLiAgRmlsZXMgYXJlIGRlY29tcHJlc3NlZCBhbmQgdGVzdGVkCi0gIHVzaW5nIGEgbW9kaWZpZWQgYWxnb3JpdGhtIHdoaWNoIG9ubHkgcmVxdWlyZXMgMi41IGJ5dGVzIHBlcgotICBibG9jayBieXRlLiAgVGhpcyBtZWFucyBhbnkgZmlsZSBjYW4gYmUgZGVjb21wcmVzc2VkIGluIDIzMDBrCi0gIG9mIG1lbW9yeSwgYWxiZWl0IGF0IGFib3V0IGhhbGYgdGhlIG5vcm1hbCBzcGVlZC48L3A+Ci08cD5EdXJpbmcgY29tcHJlc3Npb24sIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXM8L2NvZGU+Ci0gIHNlbGVjdHMgYSBibG9jayBzaXplIG9mIDIwMGssIHdoaWNoIGxpbWl0cyBtZW1vcnkgdXNlIHRvIGFyb3VuZAotICB0aGUgc2FtZSBmaWd1cmUsIGF0IHRoZSBleHBlbnNlIG9mIHlvdXIgY29tcHJlc3Npb24gcmF0aW8uICBJbgotICBzaG9ydCwgaWYgeW91ciBtYWNoaW5lIGlzIGxvdyBvbiBtZW1vcnkgKDggbWVnYWJ5dGVzIG9yIGxlc3MpLAotICB1c2UgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tczwvY29kZT4gZm9yIGV2ZXJ5dGhpbmcuICBTZWUKLSAgPGEgaHJlZj0iI21lbW9yeS1tYW5hZ2VtZW50Ij5NRU1PUlkgTUFOQUdFTUVOVDwvYT4gYmVsb3cuPC9wPgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tcSAtLXF1aWV0PC9jb2RlPjwvc3Bhbj48L2R0PgotPGRkPjxwPlN1cHByZXNzIG5vbi1lc3NlbnRpYWwgd2FybmluZyBtZXNzYWdlcy4KLSAgTWVzc2FnZXMgcGVydGFpbmluZyB0byBJL08gZXJyb3JzIGFuZCBvdGhlciBjcml0aWNhbCBldmVudHMKLSAgd2lsbCBub3QgYmUgc3VwcHJlc3NlZC48L3A+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tdiAtLXZlcmJvc2U8L2NvZGU+PC9zcGFuPjwvZHQ+Ci08ZGQ+PHA+VmVyYm9zZSBtb2RlIC0tIHNob3cgdGhlIGNvbXByZXNzaW9uIHJhdGlvIGZvcgotICBlYWNoIGZpbGUgcHJvY2Vzc2VkLiAgRnVydGhlcgotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi12PC9jb2RlPidzIGluY3JlYXNlIHRoZSB2ZXJib3NpdHkKLSAgbGV2ZWwsIHNwZXdpbmcgb3V0IGxvdHMgb2YgaW5mb3JtYXRpb24gd2hpY2ggaXMgcHJpbWFyaWx5IG9mCi0gIGludGVyZXN0IGZvciBkaWFnbm9zdGljIHB1cnBvc2VzLjwvcD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1MIC0tbGljZW5zZSAtViAtLXZlcnNpb248L2NvZGU+PC9zcGFuPjwvZHQ+Ci08ZGQ+PHA+RGlzcGxheSB0aGUgc29mdHdhcmUgdmVyc2lvbiwgbGljZW5zZSB0ZXJtcyBhbmQKLSAgY29uZGl0aW9ucy48L3A+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tMTwvY29kZT4gKG9yCi0gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tLWZhc3Q8L2NvZGU+KSB0bwotIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LTk8L2NvZGU+IChvcgotIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LWJlc3Q8L2NvZGU+KTwvc3Bhbj48L2R0PgotPGRkPjxwPlNldCB0aGUgYmxvY2sgc2l6ZSB0byAxMDAgaywgMjAwIGsgLi4uICA5MDAgawotICB3aGVuIGNvbXByZXNzaW5nLiAgSGFzIG5vIGVmZmVjdCB3aGVuIGRlY29tcHJlc3NpbmcuICBTZWUgPGEgaHJlZj0iI21lbW9yeS1tYW5hZ2VtZW50Ij5NRU1PUlkgTUFOQUdFTUVOVDwvYT4gYmVsb3cuICBUaGUKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tLWZhc3Q8L2NvZGU+IGFuZAotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0tYmVzdDwvY29kZT4gYWxpYXNlcyBhcmUgcHJpbWFyaWx5Ci0gIGZvciBHTlUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5nemlwPC9jb2RlPiBjb21wYXRpYmlsaXR5LgotICBJbiBwYXJ0aWN1bGFyLCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0tZmFzdDwvY29kZT4gZG9lc24ndAotICBtYWtlIHRoaW5ncyBzaWduaWZpY2FudGx5IGZhc3Rlci4gIEFuZAotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0tYmVzdDwvY29kZT4gbWVyZWx5IHNlbGVjdHMgdGhlCi0gIGRlZmF1bHQgYmVoYXZpb3VyLjwvcD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0tPC9jb2RlPjwvc3Bhbj48L2R0PgotPGRkPjxwPlRyZWF0cyBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgYXMgZmlsZSBuYW1lcywKLSAgZXZlbiBpZiB0aGV5IHN0YXJ0IHdpdGggYSBkYXNoLiAgVGhpcyBpcyBzbyB5b3UgY2FuIGhhbmRsZQotICBmaWxlcyB3aXRoIG5hbWVzIGJlZ2lubmluZyB3aXRoIGEgZGFzaCwgZm9yIGV4YW1wbGU6Ci0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIgLS0KLSAgLW15ZmlsZW5hbWU8L2NvZGU+LjwvcD48L2RkPgotPGR0PgotPHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LS1yZXBldGl0aXZlLWZhc3Q8L2NvZGU+LCA8L3NwYW4+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LS1yZXBldGl0aXZlLWJlc3Q8L2NvZGU+PC9zcGFuPgotPC9kdD4KLTxkZD48cD5UaGVzZSBmbGFncyBhcmUgcmVkdW5kYW50IGluIHZlcnNpb25zIDAuOS41IGFuZAotICBhYm92ZS4gIFRoZXkgcHJvdmlkZWQgc29tZSBjb2Fyc2UgY29udHJvbCBvdmVyIHRoZSBiZWhhdmlvdXIgb2YKLSAgdGhlIHNvcnRpbmcgYWxnb3JpdGhtIGluIGVhcmxpZXIgdmVyc2lvbnMsIHdoaWNoIHdhcyBzb21ldGltZXMKLSAgdXNlZnVsLiAgMC45LjUgYW5kIGFib3ZlIGhhdmUgYW4gaW1wcm92ZWQgYWxnb3JpdGhtIHdoaWNoCi0gIHJlbmRlcnMgdGhlc2UgZmxhZ3MgaXJyZWxldmFudC48L3A+PC9kZD4KLTwvZGw+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgotPGEgbmFtZT0ibWVtb3J5LW1hbmFnZW1lbnQiPjwvYT4yLjUuoE1FTU9SWSBNQU5BR0VNRU5UPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGNvbXByZXNzZXMgbGFyZ2UKLWZpbGVzIGluIGJsb2Nrcy4gIFRoZSBibG9jayBzaXplIGFmZmVjdHMgYm90aCB0aGUgY29tcHJlc3Npb24KLXJhdGlvIGFjaGlldmVkLCBhbmQgdGhlIGFtb3VudCBvZiBtZW1vcnkgbmVlZGVkIGZvciBjb21wcmVzc2lvbgotYW5kIGRlY29tcHJlc3Npb24uICBUaGUgZmxhZ3MgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tMTwvY29kZT4KLXRocm91Z2ggPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tOTwvY29kZT4gc3BlY2lmeSB0aGUgYmxvY2sKLXNpemUgdG8gYmUgMTAwLDAwMCBieXRlcyB0aHJvdWdoIDkwMCwwMDAgYnl0ZXMgKHRoZSBkZWZhdWx0KQotcmVzcGVjdGl2ZWx5LiAgQXQgZGVjb21wcmVzc2lvbiB0aW1lLCB0aGUgYmxvY2sgc2l6ZSB1c2VkIGZvcgotY29tcHJlc3Npb24gaXMgcmVhZCBmcm9tIHRoZSBoZWFkZXIgb2YgdGhlIGNvbXByZXNzZWQgZmlsZSwgYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1bnppcDI8L2NvZGU+IHRoZW4gYWxsb2NhdGVzIGl0c2VsZgotanVzdCBlbm91Z2ggbWVtb3J5IHRvIGRlY29tcHJlc3MgdGhlIGZpbGUuICBTaW5jZSBibG9jayBzaXplcyBhcmUKLXN0b3JlZCBpbiBjb21wcmVzc2VkIGZpbGVzLCBpdCBmb2xsb3dzIHRoYXQgdGhlIGZsYWdzCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0xPC9jb2RlPiB0bwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tOTwvY29kZT4gYXJlIGlycmVsZXZhbnQgdG8gYW5kIHNvCi1pZ25vcmVkIGR1cmluZyBkZWNvbXByZXNzaW9uLjwvcD4KLTxwPkNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIHJlcXVpcmVtZW50cywgaW4gYnl0ZXMsIGNhbiBiZQotZXN0aW1hdGVkIGFzOjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5Db21wcmVzc2lvbjogICA0MDBrICsgKCA4IHggYmxvY2sgc2l6ZSApCi0KLURlY29tcHJlc3Npb246IDEwMGsgKyAoIDQgeCBibG9jayBzaXplICksIG9yCi0gICAgICAgICAgICAgICAxMDBrICsgKCAyLjUgeCBibG9jayBzaXplICk8L3ByZT4KLTxwPkxhcmdlciBibG9jayBzaXplcyBnaXZlIHJhcGlkbHkgZGltaW5pc2hpbmcgbWFyZ2luYWwKLXJldHVybnMuICBNb3N0IG9mIHRoZSBjb21wcmVzc2lvbiBjb21lcyBmcm9tIHRoZSBmaXJzdCB0d28gb3IKLXRocmVlIGh1bmRyZWQgayBvZiBibG9jayBzaXplLCBhIGZhY3Qgd29ydGggYmVhcmluZyBpbiBtaW5kIHdoZW4KLXVzaW5nIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IG9uIHNtYWxsIG1hY2hpbmVzLgotSXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gYXBwcmVjaWF0ZSB0aGF0IHRoZSBkZWNvbXByZXNzaW9uIG1lbW9yeQotcmVxdWlyZW1lbnQgaXMgc2V0IGF0IGNvbXByZXNzaW9uIHRpbWUgYnkgdGhlIGNob2ljZSBvZiBibG9jawotc2l6ZS48L3A+Ci08cD5Gb3IgZmlsZXMgY29tcHJlc3NlZCB3aXRoIHRoZSBkZWZhdWx0IDkwMGsgYmxvY2sgc2l6ZSwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gd2lsbCByZXF1aXJlIGFib3V0IDM3MDAKLWtieXRlcyB0byBkZWNvbXByZXNzLiAgVG8gc3VwcG9ydCBkZWNvbXByZXNzaW9uIG9mIGFueSBmaWxlIG9uIGEKLTQgbWVnYWJ5dGUgbWFjaGluZSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idW56aXAyPC9jb2RlPiBoYXMKLWFuIG9wdGlvbiB0byBkZWNvbXByZXNzIHVzaW5nIGFwcHJveGltYXRlbHkgaGFsZiB0aGlzIGFtb3VudCBvZgotbWVtb3J5LCBhYm91dCAyMzAwIGtieXRlcy4gIERlY29tcHJlc3Npb24gc3BlZWQgaXMgYWxzbyBoYWx2ZWQsCi1zbyB5b3Ugc2hvdWxkIHVzZSB0aGlzIG9wdGlvbiBvbmx5IHdoZXJlIG5lY2Vzc2FyeS4gIFRoZSByZWxldmFudAotZmxhZyBpcyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1zPC9jb2RlPi48L3A+Ci08cD5JbiBnZW5lcmFsLCB0cnkgYW5kIHVzZSB0aGUgbGFyZ2VzdCBibG9jayBzaXplIG1lbW9yeQotY29uc3RyYWludHMgYWxsb3csIHNpbmNlIHRoYXQgbWF4aW1pc2VzIHRoZSBjb21wcmVzc2lvbiBhY2hpZXZlZC4KLUNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIHNwZWVkIGFyZSB2aXJ0dWFsbHkgdW5hZmZlY3RlZCBieQotYmxvY2sgc2l6ZS48L3A+Ci08cD5Bbm90aGVyIHNpZ25pZmljYW50IHBvaW50IGFwcGxpZXMgdG8gZmlsZXMgd2hpY2ggZml0IGluIGEKLXNpbmdsZSBibG9jayAtLSB0aGF0IG1lYW5zIG1vc3QgZmlsZXMgeW91J2QgZW5jb3VudGVyIHVzaW5nIGEKLWxhcmdlIGJsb2NrIHNpemUuICBUaGUgYW1vdW50IG9mIHJlYWwgbWVtb3J5IHRvdWNoZWQgaXMKLXByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiB0aGUgZmlsZSwgc2luY2UgdGhlIGZpbGUgaXMgc21hbGxlcgotdGhhbiBhIGJsb2NrLiAgRm9yIGV4YW1wbGUsIGNvbXByZXNzaW5nIGEgZmlsZSAyMCwwMDAgYnl0ZXMgbG9uZwotd2l0aCB0aGUgZmxhZyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi05PC9jb2RlPiB3aWxsIGNhdXNlIHRoZQotY29tcHJlc3NvciB0byBhbGxvY2F0ZSBhcm91bmQgNzYwMGsgb2YgbWVtb3J5LCBidXQgb25seSB0b3VjaAotNDAwayArIDIwMDAwICogOCA9IDU2MCBrYnl0ZXMgb2YgaXQuICBTaW1pbGFybHksIHRoZSBkZWNvbXByZXNzb3IKLXdpbGwgYWxsb2NhdGUgMzcwMGsgYnV0IG9ubHkgdG91Y2ggMTAwayArIDIwMDAwICogNCA9IDE4MAota2J5dGVzLjwvcD4KLTxwPkhlcmUgaXMgYSB0YWJsZSB3aGljaCBzdW1tYXJpc2VzIHRoZSBtYXhpbXVtIG1lbW9yeSB1c2FnZQotZm9yIGRpZmZlcmVudCBibG9jayBzaXplcy4gIEFsc28gcmVjb3JkZWQgaXMgdGhlIHRvdGFsIGNvbXByZXNzZWQKLXNpemUgZm9yIDE0IGZpbGVzIG9mIHRoZSBDYWxnYXJ5IFRleHQgQ29tcHJlc3Npb24gQ29ycHVzCi10b3RhbGxpbmcgMywxNDEsNjIyIGJ5dGVzLiAgVGhpcyBjb2x1bW4gZ2l2ZXMgc29tZSBmZWVsIGZvciBob3cKLWNvbXByZXNzaW9uIHZhcmllcyB3aXRoIGJsb2NrIHNpemUuICBUaGVzZSBmaWd1cmVzIHRlbmQgdG8KLXVuZGVyc3RhdGUgdGhlIGFkdmFudGFnZSBvZiBsYXJnZXIgYmxvY2sgc2l6ZXMgZm9yIGxhcmdlciBmaWxlcywKLXNpbmNlIHRoZSBDb3JwdXMgaXMgZG9taW5hdGVkIGJ5IHNtYWxsZXIgZmlsZXMuPC9wPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAgICAgICAgQ29tcHJlc3MgICBEZWNvbXByZXNzICAgRGVjb21wcmVzcyAgIENvcnB1cwotRmxhZyAgICAgdXNhZ2UgICAgICB1c2FnZSAgICAgICAtcyB1c2FnZSAgICAgU2l6ZQotCi0gLTEgICAgICAxMjAwayAgICAgICA1MDBrICAgICAgICAgMzUwayAgICAgIDkxNDcwNAotIC0yICAgICAgMjAwMGsgICAgICAgOTAwayAgICAgICAgIDYwMGsgICAgICA4Nzc3MDMKLSAtMyAgICAgIDI4MDBrICAgICAgMTMwMGsgICAgICAgICA4NTBrICAgICAgODYwMzM4Ci0gLTQgICAgICAzNjAwayAgICAgIDE3MDBrICAgICAgICAxMTAwayAgICAgIDg0Njg5OQotIC01ICAgICAgNDQwMGsgICAgICAyMTAwayAgICAgICAgMTM1MGsgICAgICA4NDUxNjAKLSAtNiAgICAgIDUyMDBrICAgICAgMjUwMGsgICAgICAgIDE2MDBrICAgICAgODM4NjI2Ci0gLTcgICAgICA2MTAwayAgICAgIDI5MDBrICAgICAgICAxODUwayAgICAgIDgzNDA5NgotIC04ICAgICAgNjgwMGsgICAgICAzMzAwayAgICAgICAgMjEwMGsgICAgICA4Mjg2NDIKLSAtOSAgICAgIDc2MDBrICAgICAgMzcwMGsgICAgICAgIDIzNTBrICAgICAgODI4NjQyPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgotPGEgbmFtZT0icmVjb3ZlcmluZyI+PC9hPjIuNi6gUkVDT1ZFUklORyBEQVRBIEZST00gREFNQUdFRCBGSUxFUzwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wcmVzc2VzIGZpbGVzIGluCi1ibG9ja3MsIHVzdWFsbHkgOTAwa2J5dGVzIGxvbmcuICBFYWNoIGJsb2NrIGlzIGhhbmRsZWQKLWluZGVwZW5kZW50bHkuICBJZiBhIG1lZGlhIG9yIHRyYW5zbWlzc2lvbiBlcnJvciBjYXVzZXMgYQotbXVsdGktYmxvY2sgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYnoyPC9jb2RlPiBmaWxlIHRvIGJlY29tZQotZGFtYWdlZCwgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIHJlY292ZXIgZGF0YSBmcm9tIHRoZSB1bmRhbWFnZWQKLWJsb2NrcyBpbiB0aGUgZmlsZS48L3A+Ci08cD5UaGUgY29tcHJlc3NlZCByZXByZXNlbnRhdGlvbiBvZiBlYWNoIGJsb2NrIGlzIGRlbGltaXRlZCBieQotYSA0OC1iaXQgcGF0dGVybiwgd2hpY2ggbWFrZXMgaXQgcG9zc2libGUgdG8gZmluZCB0aGUgYmxvY2sKLWJvdW5kYXJpZXMgd2l0aCByZWFzb25hYmxlIGNlcnRhaW50eS4gIEVhY2ggYmxvY2sgYWxzbyBjYXJyaWVzCi1pdHMgb3duIDMyLWJpdCBDUkMsIHNvIGRhbWFnZWQgYmxvY2tzIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGZyb20KLXVuZGFtYWdlZCBvbmVzLjwvcD4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPiBpcyBhIHNpbXBsZQotcHJvZ3JhbSB3aG9zZSBwdXJwb3NlIGlzIHRvIHNlYXJjaCBmb3IgYmxvY2tzIGluCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5iejI8L2NvZGU+IGZpbGVzLCBhbmQgd3JpdGUgZWFjaCBibG9jawotb3V0IGludG8gaXRzIG93biA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5iejI8L2NvZGU+IGZpbGUuICBZb3UKLWNhbiB0aGVuIHVzZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyIC10PC9jb2RlPiB0byB0ZXN0Ci10aGUgaW50ZWdyaXR5IG9mIHRoZSByZXN1bHRpbmcgZmlsZXMsIGFuZCBkZWNvbXByZXNzIHRob3NlIHdoaWNoCi1hcmUgdW5kYW1hZ2VkLjwvcD4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPiB0YWtlcyBhCi1zaW5nbGUgYXJndW1lbnQsIHRoZSBuYW1lIG9mIHRoZSBkYW1hZ2VkIGZpbGUsIGFuZCB3cml0ZXMgYQotbnVtYmVyIG9mIGZpbGVzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+cmVjMDAwMWZpbGUuYnoyPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+cmVjMDAwMmZpbGUuYnoyPC9jb2RlPiwgZXRjLCBjb250YWluaW5nCi10aGUgZXh0cmFjdGVkIGJsb2Nrcy4gIFRoZSBvdXRwdXQgZmlsZW5hbWVzIGFyZSBkZXNpZ25lZCBzbyB0aGF0Ci10aGUgdXNlIG9mIHdpbGRjYXJkcyBpbiBzdWJzZXF1ZW50IHByb2Nlc3NpbmcgLS0gZm9yIGV4YW1wbGUsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyIC1kYyByZWMqZmlsZS5iejIgJmd0OwotcmVjb3ZlcmVkX2RhdGE8L2NvZGU+IC0tIGxpc3RzIHRoZSBmaWxlcyBpbiB0aGUgY29ycmVjdAotb3JkZXIuPC9wPgotPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMnJlY292ZXI8L2NvZGU+IHNob3VsZCBiZSBvZgotbW9zdCB1c2UgZGVhbGluZyB3aXRoIGxhcmdlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LmJ6MjwvY29kZT4KLWZpbGVzLCBhcyB0aGVzZSB3aWxsIGNvbnRhaW4gbWFueSBibG9ja3MuICBJdCBpcyBjbGVhcmx5IGZ1dGlsZQotdG8gdXNlIGl0IG9uIGRhbWFnZWQgc2luZ2xlLWJsb2NrIGZpbGVzLCBzaW5jZSBhIGRhbWFnZWQgYmxvY2sKLWNhbm5vdCBiZSByZWNvdmVyZWQuICBJZiB5b3Ugd2lzaCB0byBtaW5pbWlzZSBhbnkgcG90ZW50aWFsIGRhdGEKLWxvc3MgdGhyb3VnaCBtZWRpYSBvciB0cmFuc21pc3Npb24gZXJyb3JzLCB5b3UgbWlnaHQgY29uc2lkZXIKLWNvbXByZXNzaW5nIHdpdGggYSBzbWFsbGVyIGJsb2NrIHNpemUuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KLTxhIG5hbWU9InBlcmZvcm1hbmNlIj48L2E+Mi43LqBQRVJGT1JNQU5DRSBOT1RFUzwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cD5UaGUgc29ydGluZyBwaGFzZSBvZiBjb21wcmVzc2lvbiBnYXRoZXJzIHRvZ2V0aGVyIHNpbWlsYXIKLXN0cmluZ3MgaW4gdGhlIGZpbGUuICBCZWNhdXNlIG9mIHRoaXMsIGZpbGVzIGNvbnRhaW5pbmcgdmVyeSBsb25nCi1ydW5zIG9mIHJlcGVhdGVkIHN5bWJvbHMsIGxpa2UgImFhYmFhYmFhYmFhYiAuLi4iICAocmVwZWF0ZWQKLXNldmVyYWwgaHVuZHJlZCB0aW1lcykgbWF5IGNvbXByZXNzIG1vcmUgc2xvd2x5IHRoYW4gbm9ybWFsLgotVmVyc2lvbnMgMC45LjUgYW5kIGFib3ZlIGZhcmUgbXVjaCBiZXR0ZXIgdGhhbiBwcmV2aW91cyB2ZXJzaW9ucwotaW4gdGhpcyByZXNwZWN0LiAgVGhlIHJhdGlvIGJldHdlZW4gd29yc3QtY2FzZSBhbmQgYXZlcmFnZS1jYXNlCi1jb21wcmVzc2lvbiB0aW1lIGlzIGluIHRoZSByZWdpb24gb2YgMTA6MS4gIEZvciBwcmV2aW91cwotdmVyc2lvbnMsIHRoaXMgZmlndXJlIHdhcyBtb3JlIGxpa2UgMTAwOjEuICBZb3UgY2FuIHVzZSB0aGUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXZ2dnY8L2NvZGU+IG9wdGlvbiB0byBtb25pdG9yIHByb2dyZXNzCi1pbiBncmVhdCBkZXRhaWwsIGlmIHlvdSB3YW50LjwvcD4KLTxwPkRlY29tcHJlc3Npb24gc3BlZWQgaXMgdW5hZmZlY3RlZCBieSB0aGVzZQotcGhlbm9tZW5hLjwvcD4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHVzdWFsbHkgYWxsb2NhdGVzCi1zZXZlcmFsIG1lZ2FieXRlcyBvZiBtZW1vcnkgdG8gb3BlcmF0ZSBpbiwgYW5kIHRoZW4gY2hhcmdlcyBhbGwKLW92ZXIgaXQgaW4gYSBmYWlybHkgcmFuZG9tIGZhc2hpb24uICBUaGlzIG1lYW5zIHRoYXQgcGVyZm9ybWFuY2UsCi1ib3RoIGZvciBjb21wcmVzc2luZyBhbmQgZGVjb21wcmVzc2luZywgaXMgbGFyZ2VseSBkZXRlcm1pbmVkIGJ5Ci10aGUgc3BlZWQgYXQgd2hpY2ggeW91ciBtYWNoaW5lIGNhbiBzZXJ2aWNlIGNhY2hlIG1pc3Nlcy4KLUJlY2F1c2Ugb2YgdGhpcywgc21hbGwgY2hhbmdlcyB0byB0aGUgY29kZSB0byByZWR1Y2UgdGhlIG1pc3MKLXJhdGUgaGF2ZSBiZWVuIG9ic2VydmVkIHRvIGdpdmUgZGlzcHJvcG9ydGlvbmF0ZWx5IGxhcmdlCi1wZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuICBJIGltYWdpbmUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHdpbGwgcGVyZm9ybSBiZXN0IG9uCi1tYWNoaW5lcyB3aXRoIHZlcnkgbGFyZ2UgY2FjaGVzLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+Ci08YSBuYW1lPSJjYXZlYXRzIj48L2E+Mi44LqBDQVZFQVRTPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPkkvTyBlcnJvciBtZXNzYWdlcyBhcmUgbm90IGFzIGhlbHBmdWwgYXMgdGhleSBjb3VsZCBiZS4KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHRyaWVzIGhhcmQgdG8gZGV0ZWN0IEkvTwotZXJyb3JzIGFuZCBleGl0IGNsZWFubHksIGJ1dCB0aGUgZGV0YWlscyBvZiB3aGF0IHRoZSBwcm9ibGVtIGlzCi1zb21ldGltZXMgc2VlbSByYXRoZXIgbWlzbGVhZGluZy48L3A+Ci08cD5UaGlzIG1hbnVhbCBwYWdlIHBlcnRhaW5zIHRvIHZlcnNpb24gMS4wLjUgb2YKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+LiAgQ29tcHJlc3NlZCBkYXRhIGNyZWF0ZWQgYnkKLXRoaXMgdmVyc2lvbiBpcyBlbnRpcmVseSBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aCB0aGUKLXByZXZpb3VzIHB1YmxpYyByZWxlYXNlcywgdmVyc2lvbnMgMC4xcGwyLCAwLjkuMCBhbmQgMC45LjUsIDEuMC4wLAotMS4wLjEsIDEuMC4yIGFuZCAxLjAuMywgYnV0IHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb246IDAuOS4wIGFuZAotYWJvdmUgY2FuIGNvcnJlY3RseSBkZWNvbXByZXNzIG11bHRpcGxlIGNvbmNhdGVuYXRlZCBjb21wcmVzc2VkIGZpbGVzLgotMC4xcGwyIGNhbm5vdCBkbyB0aGlzOyBpdCB3aWxsIHN0b3AgYWZ0ZXIgZGVjb21wcmVzc2luZyBqdXN0IHRoZSBmaXJzdAotZmlsZSBpbiB0aGUgc3RyZWFtLjwvcD4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPiB2ZXJzaW9ucwotcHJpb3IgdG8gMS4wLjIgdXNlZCAzMi1iaXQgaW50ZWdlcnMgdG8gcmVwcmVzZW50IGJpdCBwb3NpdGlvbnMgaW4KLWNvbXByZXNzZWQgZmlsZXMsIHNvIGl0IGNvdWxkIG5vdCBoYW5kbGUgY29tcHJlc3NlZCBmaWxlcyBtb3JlCi10aGFuIDUxMiBtZWdhYnl0ZXMgbG9uZy4gIFZlcnNpb25zIDEuMC4yIGFuZCBhYm92ZSB1c2UgNjQtYml0IGludHMKLW9uIHNvbWUgcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgdGhlbSAoR05VIHN1cHBvcnRlZCB0YXJnZXRzLCBhbmQKLVdpbmRvd3MpLiBUbyBlc3RhYmxpc2ggd2hldGhlciBvciBub3QKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPiB3YXMgYnVpbHQgd2l0aCBzdWNoCi1hIGxpbWl0YXRpb24sIHJ1biBpdCB3aXRob3V0IGFyZ3VtZW50cy4gSW4gYW55IGV2ZW50IHlvdSBjYW4KLWJ1aWxkIHlvdXJzZWxmIGFuIHVubGltaXRlZCB2ZXJzaW9uIGlmIHlvdSBjYW4gcmVjb21waWxlIGl0IHdpdGgKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+TWF5YmVVSW50NjQ8L2NvZGU+IHNldCB0byBiZSBhbgotdW5zaWduZWQgNjQtYml0IGludGVnZXIuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KLTxhIG5hbWU9ImF1dGhvciI+PC9hPjIuOS6gQVVUSE9SPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPkp1bGlhbiBTZXdhcmQsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmpzZXdhcmRAYnppcC5vcmc8L2NvZGU+PC9wPgotPHA+VGhlIGlkZWFzIGVtYm9kaWVkIGluCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBhcmUgZHVlIHRvIChhdCBsZWFzdCkgdGhlCi1mb2xsb3dpbmcgcGVvcGxlOiBNaWNoYWVsIEJ1cnJvd3MgYW5kIERhdmlkIFdoZWVsZXIgKGZvciB0aGUKLWJsb2NrIHNvcnRpbmcgdHJhbnNmb3JtYXRpb24pLCBEYXZpZCBXaGVlbGVyIChhZ2FpbiwgZm9yIHRoZQotSHVmZm1hbiBjb2RlciksIFBldGVyIEZlbndpY2sgKGZvciB0aGUgc3RydWN0dXJlZCBjb2RpbmcgbW9kZWwgaW4KLXRoZSBvcmlnaW5hbCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXA8L2NvZGU+LCBhbmQgbWFueQotcmVmaW5lbWVudHMpLCBhbmQgQWxpc3RhaXIgTW9mZmF0LCBSYWRmb3JkIE5lYWwgYW5kIElhbiBXaXR0ZW4KLShmb3IgdGhlIGFyaXRobWV0aWMgY29kZXIgaW4gdGhlIG9yaWdpbmFsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXA8L2NvZGU+KS4gIEkgYW0gbXVjaCBpbmRlYnRlZCBmb3IKLXRoZWlyIGhlbHAsIHN1cHBvcnQgYW5kIGFkdmljZS4gIFNlZSB0aGUgbWFudWFsIGluIHRoZSBzb3VyY2UKLWRpc3RyaWJ1dGlvbiBmb3IgcG9pbnRlcnMgdG8gc291cmNlcyBvZiBkb2N1bWVudGF0aW9uLiAgQ2hyaXN0aWFuCi12b24gUm9xdWVzIGVuY291cmFnZWQgbWUgdG8gbG9vayBmb3IgZmFzdGVyIHNvcnRpbmcgYWxnb3JpdGhtcywKLXNvIGFzIHRvIHNwZWVkIHVwIGNvbXByZXNzaW9uLiAgQmVsYSBMdWJraW4gZW5jb3VyYWdlZCBtZSB0bwotaW1wcm92ZSB0aGUgd29yc3QtY2FzZSBjb21wcmVzc2lvbiBwZXJmb3JtYW5jZS4gIAotRG9ubmEgUm9iaW5zb24gWE1MaXNlZCB0aGUgZG9jdW1lbnRhdGlvbi4KLU1hbnkgcGVvcGxlIHNlbnQKLXBhdGNoZXMsIGhlbHBlZCB3aXRoIHBvcnRhYmlsaXR5IHByb2JsZW1zLCBsZW50IG1hY2hpbmVzLCBnYXZlCi1hZHZpY2UgYW5kIHdlcmUgZ2VuZXJhbGx5IGhlbHBmdWwuPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNoYXB0ZXIiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiPgotPGEgbmFtZT0ibGlicHJvZyI+PC9hPjMuoAotUHJvZ3JhbW1pbmcgd2l0aCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPgotPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KLTxkaXYgY2xhc3M9InRvYyI+Ci08cD48Yj5UYWJsZSBvZiBDb250ZW50czwvYj48L3A+Ci08ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjdG9wLWxldmVsIj4zLjEuIFRvcC1sZXZlbCBzdHJ1Y3R1cmU8L2E+PC9zcGFuPjwvZHQ+Ci08ZGQ+PGRsPgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2xsLXN1bW1hcnkiPjMuMS4xLiBMb3ctbGV2ZWwgc3VtbWFyeTwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNobC1zdW1tYXJ5Ij4zLjEuMi4gSGlnaC1sZXZlbCBzdW1tYXJ5PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI3V0aWwtZm5zLXN1bW1hcnkiPjMuMS4zLiBVdGlsaXR5IGZ1bmN0aW9ucyBzdW1tYXJ5PC9hPjwvc3Bhbj48L2R0PgotPC9kbD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2Vyci1oYW5kbGluZyI+My4yLiBFcnJvciBoYW5kbGluZzwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNsb3ctbGV2ZWwiPjMuMy4gTG93LWxldmVsIGludGVyZmFjZTwvYT48L3NwYW4+PC9kdD4KLTxkZD48ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpjb21wcmVzcy1pbml0Ij4zLjMuMS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6Q29tcHJlc3MiPjMuMy4yLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekNvbXByZXNzLWVuZCI+My4zLjMuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NFbmQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6RGVjb21wcmVzcy1pbml0Ij4zLjMuNC4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpEZWNvbXByZXNzIj4zLjMuNS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekRlY29tcHJlc3MtZW5kIj4zLjMuNi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzRW5kPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTwvZGw+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNobC1pbnRlcmZhY2UiPjMuNC4gSGlnaC1sZXZlbCBpbnRlcmZhY2U8L2E+PC9zcGFuPjwvZHQ+Ci08ZGQ+PGRsPgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZG9wZW4iPjMuNC4xLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRPcGVuPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNienJlYWQiPjMuNC4yLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZGdldHVudXNlZCI+My40LjMuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZEdldFVudXNlZDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpyZWFkY2xvc2UiPjMuNC40LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT48L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnp3cml0ZW9wZW4iPjMuNC41LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT48L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnp3cml0ZSI+My40LjYuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGU8L2NvZGU+PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6d3JpdGVjbG9zZSI+My40LjcuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT48L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjZW1iZWQiPjMuNC44LiBIYW5kbGluZyBlbWJlZGRlZCBjb21wcmVzc2VkIGRhdGEgc3RyZWFtczwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNzdGQtcmR3ciI+My40LjkuIFN0YW5kYXJkIGZpbGUtcmVhZGluZy93cml0aW5nIGNvZGU8L2E+PC9zcGFuPjwvZHQ+Ci08L2RsPjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjdXRpbC1mbnMiPjMuNS4gVXRpbGl0eSBmdW5jdGlvbnM8L2E+PC9zcGFuPjwvZHQ+Ci08ZGQ+PGRsPgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6YnVmZnRvYnVmZmNvbXByZXNzIj4zLjUuMS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3M8L2NvZGU+PC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6YnVmZnRvYnVmZmRlY29tcHJlc3MiPjMuNS4yLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTwvZGw+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiN6bGliLWNvbXBhdCI+My42LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWI8L2NvZGU+IGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zPC9hPjwvc3Bhbj48L2R0PgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3N0ZGlvLWZyZWUiPjMuNy4gVXNpbmcgdGhlIGxpYnJhcnkgaW4gYSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZGlvPC9jb2RlPi1mcmVlIGVudmlyb25tZW50PC9hPjwvc3Bhbj48L2R0PgotPGRkPjxkbD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNzdGRpby1ieWUiPjMuNy4xLiBHZXR0aW5nIHJpZCBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZGlvPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNjcml0aWNhbC1lcnJvciI+My43LjIuIENyaXRpY2FsIGVycm9yIGhhbmRsaW5nPC9hPjwvc3Bhbj48L2R0PgotPC9kbD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3dpbi1kbGwiPjMuOC4gTWFraW5nIGEgV2luZG93cyBETEw8L2E+PC9zcGFuPjwvZHQ+Ci08L2RsPgotPC9kaXY+Ci08cD5UaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIHRoZSBwcm9ncmFtbWluZyBpbnRlcmZhY2UgdG8KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+LjwvcD4KLTxwPkZvciBnZW5lcmFsIGJhY2tncm91bmQgaW5mb3JtYXRpb24sIHBhcnRpY3VsYXJseSBhYm91dAotbWVtb3J5IHVzZSBhbmQgcGVyZm9ybWFuY2UgYXNwZWN0cywgeW91J2QgYmUgd2VsbCBhZHZpc2VkIHRvIHJlYWQKLTxhIGhyZWY9IiN1c2luZyI+SG93IHRvIHVzZSBiemlwMjwvYT4gYXMgd2VsbC48L3A+Ci08ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KLTxhIG5hbWU9InRvcC1sZXZlbCI+PC9hPjMuMS6gVG9wLWxldmVsIHN0cnVjdHVyZTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPiBpcyBhIGZsZXhpYmxlCi1saWJyYXJ5IGZvciBjb21wcmVzc2luZyBhbmQgZGVjb21wcmVzc2luZyBkYXRhIGluIHRoZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZGF0YSBmb3JtYXQuICBBbHRob3VnaAotcGFja2FnZWQgYXMgYSBzaW5nbGUgZW50aXR5LCBpdCBoZWxwcyB0byByZWdhcmQgdGhlIGxpYnJhcnkgYXMKLXRocmVlIHNlcGFyYXRlIHBhcnRzOiB0aGUgbG93IGxldmVsIGludGVyZmFjZSwgYW5kIHRoZSBoaWdoIGxldmVsCi1pbnRlcmZhY2UsIGFuZCBzb21lIHV0aWxpdHkgZnVuY3Rpb25zLjwvcD4KLTxwPlRoZSBzdHJ1Y3R1cmUgb2YKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+J3MgaW50ZXJmYWNlcyBpcyBzaW1pbGFyCi10byB0aGF0IG9mIEplYW4tbG91cCBHYWlsbHkncyBhbmQgTWFyayBBZGxlcidzIGV4Y2VsbGVudAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij56bGliPC9jb2RlPiBsaWJyYXJ5LjwvcD4KLTxwPkFsbCBleHRlcm5hbGx5IHZpc2libGUgc3ltYm9scyBoYXZlIG5hbWVzIGJlZ2lubmluZwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfPC9jb2RlPi4gIFRoaXMgaXMgbmV3IGluIHZlcnNpb24KLTEuMC4gIFRoZSBpbnRlbnRpb24gaXMgdG8gbWluaW1pc2UgcG9sbHV0aW9uIG9mIHRoZSBuYW1lc3BhY2VzIG9mCi1saWJyYXJ5IGNsaWVudHMuPC9wPgotPHA+VG8gdXNlIGFueSBwYXJ0IG9mIHRoZSBsaWJyYXJ5LCB5b3UgbmVlZCB0bwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4jaW5jbHVkZSAmbHQ7YnpsaWIuaCZndDs8L2NvZGU+Ci1pbnRvIHlvdXIgc291cmNlcy48L3A+Ci08ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+Ci08YSBuYW1lPSJsbC1zdW1tYXJ5Ij48L2E+My4xLjEuoExvdy1sZXZlbCBzdW1tYXJ5PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPlRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIHNlcnZpY2VzIGZvciBjb21wcmVzc2luZyBhbmQKLWRlY29tcHJlc3NpbmcgZGF0YSBpbiBtZW1vcnkuICBUaGVyZSdzIG5vIHByb3Zpc2lvbiBmb3IgZGVhbGluZwotd2l0aCBmaWxlcywgc3RyZWFtcyBvciBhbnkgb3RoZXIgSS9PIG1lY2hhbmlzbXMsIGp1c3Qgc3RyYWlnaHQKLW1lbW9yeS10by1tZW1vcnkgd29yay4gIEluIGZhY3QsIHRoaXMgcGFydCBvZiB0aGUgbGlicmFyeSBjYW4gYmUKLWNvbXBpbGVkIHdpdGhvdXQgaW5jbHVzaW9uIG9mCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZGlvLmg8L2NvZGU+LCB3aGljaCBtYXkgYmUgaGVscGZ1bAotZm9yIGVtYmVkZGVkIGFwcGxpY2F0aW9ucy48L3A+Ci08cD5UaGUgbG93LWxldmVsIHBhcnQgb2YgdGhlIGxpYnJhcnkgaGFzIG5vIGdsb2JhbCB2YXJpYWJsZXMKLWFuZCBpcyB0aGVyZWZvcmUgdGhyZWFkLXNhZmUuPC9wPgotPHA+U2l4IHJvdXRpbmVzIG1ha2UgdXAgdGhlIGxvdyBsZXZlbCBpbnRlcmZhY2U6Ci08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiwgYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPiBmb3IKLWNvbXByZXNzaW9uLCBhbmQgYSBjb3JyZXNwb25kaW5nIHRyaW8KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiBhbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0VuZDwvY29kZT4gZm9yCi1kZWNvbXByZXNzaW9uLiAgVGhlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KkluaXQ8L2NvZGU+Ci1mdW5jdGlvbnMgYWxsb2NhdGUgbWVtb3J5IGZvciBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGFuZCBkbwotb3RoZXIgaW5pdGlhbGlzYXRpb25zLCB3aGlsc3QgdGhlCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPipFbmQ8L2NvZGU+IGZ1bmN0aW9ucyBjbG9zZSBkb3duCi1vcGVyYXRpb25zIGFuZCByZWxlYXNlIG1lbW9yeS48L3A+Ci08cD5UaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPi4gIFRoZXNlCi1jb21wcmVzcyBhbmQgZGVjb21wcmVzcyBkYXRhIGZyb20gYSB1c2VyLXN1cHBsaWVkIGlucHV0IGJ1ZmZlciB0bwotYSB1c2VyLXN1cHBsaWVkIG91dHB1dCBidWZmZXIuICBUaGVzZSBidWZmZXJzIGNhbiBiZSBhbnkgc2l6ZTsKLWFyYml0cmFyeSBxdWFudGl0aWVzIG9mIGRhdGEgYXJlIGhhbmRsZWQgYnkgbWFraW5nIHJlcGVhdGVkIGNhbGxzCi10byB0aGVzZSBmdW5jdGlvbnMuICBUaGlzIGlzIGEgZmxleGlibGUgbWVjaGFuaXNtIGFsbG93aW5nIGEKLWNvbnN1bWVyLXB1bGwgc3R5bGUgb2YgYWN0aXZpdHksIG9yIHByb2R1Y2VyLXB1c2gsIG9yIGEgbWl4dHVyZQotb2YgYm90aC48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KLTxhIG5hbWU9ImhsLXN1bW1hcnkiPjwvYT4zLjEuMi6gSGlnaC1sZXZlbCBzdW1tYXJ5PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPlRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIHNvbWUgaGFuZHkgd3JhcHBlcnMgYXJvdW5kIHRoZQotbG93LWxldmVsIGludGVyZmFjZSB0byBmYWNpbGl0YXRlIHJlYWRpbmcgYW5kIHdyaXRpbmcKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGZvcm1hdCBmaWxlcwotKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LmJ6MjwvY29kZT4gZmlsZXMpLiAgVGhlIHJvdXRpbmVzCi1wcm92aWRlIGhvb2tzIHRvIGZhY2lsaXRhdGUgcmVhZGluZyBmaWxlcyBpbiB3aGljaCB0aGUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGRhdGEgc3RyZWFtIGlzIGVtYmVkZGVkCi13aXRoaW4gc29tZSBsYXJnZXItc2NhbGUgZmlsZSBzdHJ1Y3R1cmUsIG9yIHdoZXJlIHRoZXJlIGFyZQotbXVsdGlwbGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZGF0YSBzdHJlYW1zCi1jb25jYXRlbmF0ZWQgZW5kLXRvLWVuZC48L3A+Ci08cD5Gb3IgcmVhZGluZyBmaWxlcywKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPiBhbmQgCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvZGU+IGFyZQotc3VwcGxpZWQuICBGb3Igd3JpdGluZyBmaWxlcywKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVPcGVuPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGU8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUZpbmlzaDwvY29kZT4gYXJlCi1hdmFpbGFibGUuPC9wPgotPHA+QXMgd2l0aCB0aGUgbG93LWxldmVsIGxpYnJhcnksIG5vIGdsb2JhbCB2YXJpYWJsZXMgYXJlIHVzZWQKLXNvIHRoZSBsaWJyYXJ5IGlzIHBlciBzZSB0aHJlYWQtc2FmZS4gIEhvd2V2ZXIsIGlmIEkvTyBlcnJvcnMKLW9jY3VyIHdoaWxzdCByZWFkaW5nIG9yIHdyaXRpbmcgdGhlIHVuZGVybHlpbmcgY29tcHJlc3NlZCBmaWxlcywKLXlvdSBtYXkgaGF2ZSB0byBjb25zdWx0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZXJybm88L2NvZGU+IHRvCi1kZXRlcm1pbmUgdGhlIGNhdXNlIG9mIHRoZSBlcnJvci4gIEluIHRoYXQgY2FzZSwgeW91J2QgbmVlZCBhIEMKLWxpYnJhcnkgd2hpY2ggY29ycmVjdGx5IHN1cHBvcnRzCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmVycm5vPC9jb2RlPiBpbiBhIG11bHRpdGhyZWFkZWQKLWVudmlyb25tZW50LjwvcD4KLTxwPlRvIG1ha2UgdGhlIGxpYnJhcnkgYSBsaXR0bGUgc2ltcGxlciBhbmQgbW9yZSBwb3J0YWJsZSwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZU9wZW48L2NvZGU+IHJlcXVpcmUgeW91IHRvCi1wYXNzIHRoZW0gZmlsZSBoYW5kbGVzICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkZJTEUqPC9jb2RlPnMpCi13aGljaCBoYXZlIHByZXZpb3VzbHkgYmVlbiBvcGVuZWQgZm9yIHJlYWRpbmcgb3Igd3JpdGluZwotcmVzcGVjdGl2ZWx5LiAgVGhhdCBhdm9pZHMgcG9ydGFiaWxpdHkgcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoCi1maWxlIG9wZXJhdGlvbnMgYW5kIGZpbGUgYXR0cmlidXRlcywgd2hpbHN0IG5vdCBiZWluZyBtdWNoIG9mIGFuCi1pbXBvc2l0aW9uIG9uIHRoZSBwcm9ncmFtbWVyLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgotPGEgbmFtZT0idXRpbC1mbnMtc3VtbWFyeSI+PC9hPjMuMS4zLqBVdGlsaXR5IGZ1bmN0aW9ucyBzdW1tYXJ5PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPkZvciB2ZXJ5IHNpbXBsZSBuZWVkcywKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9jb2RlPiBhbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+IGFyZQotcHJvdmlkZWQuICBUaGVzZSBjb21wcmVzcyBkYXRhIGluIG1lbW9yeSBmcm9tIG9uZSBidWZmZXIgdG8KLWFub3RoZXIgYnVmZmVyIGluIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuICBZb3Ugc2hvdWxkIGFzc2Vzcwotd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgZnVsZmlsbCB5b3VyIG1lbW9yeS10by1tZW1vcnkKLWNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gcmVxdWlyZW1lbnRzIGJlZm9yZSBpbnZlc3RpbmcgZWZmb3J0IGluCi11bmRlcnN0YW5kaW5nIHRoZSBtb3JlIGdlbmVyYWwgYnV0IG1vcmUgY29tcGxleCBsb3ctbGV2ZWwKLWludGVyZmFjZS48L3A+Ci08cD5Zb3NoaW9rYSBUc3VuZW8KLSg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRzdW5lb0Byci5paWo0dS5vci5qcDwvY29kZT4pIGhhcwotY29udHJpYnV0ZWQgc29tZSBmdW5jdGlvbnMgdG8gZ2l2ZSBiZXR0ZXIKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+emxpYjwvY29kZT4gY29tcGF0aWJpbGl0eS4gIFRoZXNlCi1mdW5jdGlvbnMgYXJlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6b3BlbjwvY29kZT4sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ienJlYWQ8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnp3cml0ZTwvY29kZT4sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemZsdXNoPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Y2xvc2U8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnplcnJvcjwvY29kZT4gYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemxpYlZlcnNpb248L2NvZGU+LiAgWW91IG1heSBmaW5kCi10aGVzZSBmdW5jdGlvbnMgbW9yZSBjb252ZW5pZW50IGZvciBzaW1wbGUgZmlsZSByZWFkaW5nIGFuZAotd3JpdGluZywgdGhhbiB0aG9zZSBpbiB0aGUgaGlnaC1sZXZlbCBpbnRlcmZhY2UuICBUaGVzZSBmdW5jdGlvbnMKLWFyZSBub3QgKHlldCkgb2ZmaWNpYWxseSBwYXJ0IG9mIHRoZSBsaWJyYXJ5LCBhbmQgYXJlIG1pbmltYWxseQotZG9jdW1lbnRlZCBoZXJlLiAgSWYgdGhleSBicmVhaywgeW91IGdldCB0byBrZWVwIGFsbCB0aGUgcGllY2VzLgotSSBob3BlIHRvIGRvY3VtZW50IHRoZW0gcHJvcGVybHkgd2hlbiB0aW1lIHBlcm1pdHMuPC9wPgotPHA+WW9zaGlva2EgYWxzbyBjb250cmlidXRlZCBtb2RpZmljYXRpb25zIHRvIGFsbG93IHRoZQotbGlicmFyeSB0byBiZSBidWlsdCBhcyBhIFdpbmRvd3MgRExMLjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KLTxhIG5hbWU9ImVyci1oYW5kbGluZyI+PC9hPjMuMi6gRXJyb3IgaGFuZGxpbmc8L2gyPjwvZGl2PjwvZGl2PjwvZGl2PgotPHA+VGhlIGxpYnJhcnkgaXMgZGVzaWduZWQgdG8gcmVjb3ZlciBjbGVhbmx5IGluIGFsbAotc2l0dWF0aW9ucywgaW5jbHVkaW5nIHRoZSB3b3JzdC1jYXNlIHNpdHVhdGlvbiBvZiBkZWNvbXByZXNzaW5nCi1yYW5kb20gZGF0YS4gIEknbSBub3QgMTAwJSBzdXJlIHRoYXQgaXQgY2FuIGFsd2F5cyBkbyB0aGlzLCBzbwoteW91IG1pZ2h0IHdhbnQgdG8gYWRkIGEgc2lnbmFsIGhhbmRsZXIgdG8gY2F0Y2ggc2VnbWVudGF0aW9uCi12aW9sYXRpb25zIGR1cmluZyBkZWNvbXByZXNzaW9uIGlmIHlvdSBhcmUgZmVlbGluZyBlc3BlY2lhbGx5Ci1wYXJhbm9pZC4gIEkgd291bGQgYmUgaW50ZXJlc3RlZCBpbiBoZWFyaW5nIG1vcmUgYWJvdXQgdGhlCi1yb2J1c3RuZXNzIG9mIHRoZSBsaWJyYXJ5IHRvIGNvcnJ1cHRlZCBjb21wcmVzc2VkIGRhdGEuPC9wPgotPHA+VmVyc2lvbiAxLjAuMyBtb3JlIHJvYnVzdCBpbiB0aGlzIHJlc3BlY3QgdGhhbiBhbnkKLXByZXZpb3VzIHZlcnNpb24uICBJbnZlc3RpZ2F0aW9ucyB3aXRoIFZhbGdyaW5kIChhIHRvb2wgZm9yIGRldGVjdGluZwotcHJvYmxlbXMgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCkgaW5kaWNhdGUKLXRoYXQsIGF0IGxlYXN0IGZvciB0aGUgZmV3IGZpbGVzIEkgdGVzdGVkLCBhbGwgc2luZ2xlLWJpdCBlcnJvcnMKLWluIHRoZSBkZWNvbXByZXNzZWQgZGF0YSBhcmUgY2F1Z2h0IHByb3Blcmx5LCB3aXRoIG5vCi1zZWdtZW50YXRpb24gZmF1bHRzLCBubyB1c2VzIG9mIHVuaW5pdGlhbGlzZWQgZGF0YSwgbm8gb3V0IG9mCi1yYW5nZSByZWFkcyBvciB3cml0ZXMsIGFuZCBubyBpbmZpbml0ZSBsb29waW5nIGluIHRoZSBkZWNvbXByZXNzb3IuCi1TbyBpdCdzIGNlcnRhaW5seSBwcmV0dHkgcm9idXN0LCBhbHRob3VnaAotSSB3b3VsZG4ndCBjbGFpbSBpdCB0byBiZSB0b3RhbGx5IGJvbWJwcm9vZi48L3A+Ci08cD5UaGUgZmlsZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6bGliLmg8L2NvZGU+IGNvbnRhaW5zCi1hbGwgZGVmaW5pdGlvbnMgbmVlZGVkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEluIHBhcnRpY3VsYXIsIHlvdQotc2hvdWxkIGRlZmluaXRlbHkgbm90IGluY2x1ZGUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpsaWJfcHJpdmF0ZS5oPC9jb2RlPi48L3A+Ci08cD5JbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6bGliLmg8L2NvZGU+LCB0aGUgdmFyaW91cwotcmV0dXJuIHZhbHVlcyBhcmUgZGVmaW5lZC4gIFRoZSBmb2xsb3dpbmcgbGlzdCBpcyBub3QgaW50ZW5kZWQgYXMKLWFuIGV4aGF1c3RpdmUgZGVzY3JpcHRpb24gb2YgdGhlIGNpcmN1bXN0YW5jZXMgaW4gd2hpY2ggYSBnaXZlbgotdmFsdWUgbWF5IGJlIHJldHVybmVkIC0tIHRob3NlIGRlc2NyaXB0aW9ucyBhcmUgZ2l2ZW4gbGF0ZXIuCi1SYXRoZXIsIGl0IGlzIGludGVuZGVkIHRvIGNvbnZleSB0aGUgcm91Z2ggbWVhbmluZyBvZiBlYWNoIHJldHVybgotdmFsdWUuICBUaGUgZmlyc3QgZml2ZSBhY3Rpb25zIGFyZSBub3JtYWwgYW5kIG5vdCBpbnRlbmRlZCB0bwotZGVub3RlIGFuIGVycm9yIHNpdHVhdGlvbi48L3A+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjxkbD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9PSzwvY29kZT48L3NwYW4+PC9kdD4KLTxkZD48cD5UaGUgcmVxdWVzdGVkIGFjdGlvbiB3YXMgY29tcGxldGVkCi0gICBzdWNjZXNzZnVsbHkuPC9wPjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfUlVOX09LLCBCWl9GTFVTSF9PSywKLSAgICBCWl9GSU5JU0hfT0s8L2NvZGU+PC9zcGFuPjwvZHQ+Ci08ZGQ+PHA+SW4gCi0gICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiwgdGhlIHJlcXVlc3RlZAotICAgZmx1c2gvZmluaXNoL25vdGhpbmctc3BlY2lhbCBhY3Rpb24gd2FzIGNvbXBsZXRlZAotICAgc3VjY2Vzc2Z1bGx5LjwvcD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+PC9zcGFuPjwvZHQ+Ci08ZGQ+PHA+Q29tcHJlc3Npb24gb2YgZGF0YSB3YXMgY29tcGxldGVkLCBvciB0aGUKLSAgIGxvZ2ljYWwgc3RyZWFtIGVuZCB3YXMgZGV0ZWN0ZWQgZHVyaW5nCi0gICBkZWNvbXByZXNzaW9uLjwvcD48L2RkPgotPC9kbD48L2Rpdj4KLTxwPlRoZSBmb2xsb3dpbmcgcmV0dXJuIHZhbHVlcyBpbmRpY2F0ZSBhbiBlcnJvciBvZiBzb21lCi1raW5kLjwvcD4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PGRsPgotPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX0NPTkZJR19FUlJPUjwvY29kZT48L3NwYW4+PC9kdD4KLTxkZD48cD5JbmRpY2F0ZXMgdGhhdCB0aGUgbGlicmFyeSBoYXMgYmVlbiBpbXByb3Blcmx5Ci0gICBjb21waWxlZCBvbiB5b3VyIHBsYXRmb3JtIC0tIGEgbWFqb3IgY29uZmlndXJhdGlvbiBlcnJvci4KLSAgIFNwZWNpZmljYWxseSwgaXQgbWVhbnMgdGhhdAotICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zaXplb2YoY2hhcik8L2NvZGU+LAotICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zaXplb2Yoc2hvcnQpPC9jb2RlPiBhbmQKLSAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c2l6ZW9mKGludCk8L2NvZGU+IGFyZSBub3QgMSwgMiBhbmQKLSAgIDQgcmVzcGVjdGl2ZWx5LCBhcyB0aGV5IHNob3VsZCBiZS4gIE5vdGUgdGhhdCB0aGUgbGlicmFyeQotICAgc2hvdWxkIHN0aWxsIHdvcmsgcHJvcGVybHkgb24gNjQtYml0IHBsYXRmb3JtcyB3aGljaCBmb2xsb3cKLSAgIHRoZSBMUDY0IHByb2dyYW1taW5nIG1vZGVsIC0tIHRoYXQgaXMsIHdoZXJlCi0gICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNpemVvZihsb25nKTwvY29kZT4gYW5kCi0gICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNpemVvZih2b2lkKik8L2NvZGU+IGFyZSA4LiAgVW5kZXIKLSAgIExQNjQsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c2l6ZW9mKGludCk8L2NvZGU+IGlzIHN0aWxsIDQsCi0gICBzbyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPiwgd2hpY2ggZG9lc24ndAotICAgdXNlIHRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxvbmc8L2NvZGU+IHR5cGUsIGlzCi0gICBPSy48L3A+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TRVFVRU5DRV9FUlJPUjwvY29kZT48L3NwYW4+PC9kdD4KLTxkZD48cD5XaGVuIHVzaW5nIHRoZSBsaWJyYXJ5LCBpdCBpcyBpbXBvcnRhbnQgdG8gY2FsbAotICAgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgY29ycmVjdCBzZXF1ZW5jZSBhbmQgd2l0aCBkYXRhIHN0cnVjdHVyZXMKLSAgIChidWZmZXJzIGV0YykgaW4gdGhlIGNvcnJlY3Qgc3RhdGVzLgotICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4gY2hlY2tzIGFzIG11Y2ggYXMgaXQKLSAgIGNhbiB0byBlbnN1cmUgdGhpcyBpcyBoYXBwZW5pbmcsIGFuZCByZXR1cm5zCi0gICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPiBpZiBub3QuCi0gICBDb2RlIHdoaWNoIGNvbXBsaWVzIHByZWNpc2VseSB3aXRoIHRoZSBmdW5jdGlvbiBzZW1hbnRpY3MsIGFzCi0gICBkZXRhaWxlZCBiZWxvdywgc2hvdWxkIG5ldmVyIHJlY2VpdmUgdGhpcyB2YWx1ZTsgc3VjaCBhbiBldmVudAotICAgZGVub3RlcyBidWdneSBjb2RlIHdoaWNoIHlvdSBzaG91bGQKLSAgIGludmVzdGlnYXRlLjwvcD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1BBUkFNX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0PgotPGRkPjxwPlJldHVybmVkIHdoZW4gYSBwYXJhbWV0ZXIgdG8gYSBmdW5jdGlvbiBjYWxsIGlzCi0gICBvdXQgb2YgcmFuZ2Ugb3Igb3RoZXJ3aXNlIG1hbmlmZXN0bHkgaW5jb3JyZWN0LiAgQXMgd2l0aAotICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TRVFVRU5DRV9FUlJPUjwvY29kZT4sIHRoaXMKLSAgIGRlbm90ZXMgYSBidWcgaW4gdGhlIGNsaWVudCBjb2RlLiAgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4KLSAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfUEFSQU1fRVJST1I8L2NvZGU+IGFuZAotICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TRVFVRU5DRV9FUlJPUjwvY29kZT4gaXMgYSBiaXQKLSAgIGhhenksIGJ1dCBzdGlsbCB3b3J0aCBtYWtpbmcuPC9wPjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUVNX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0PgotPGRkPjxwPlJldHVybmVkIHdoZW4gYSByZXF1ZXN0IHRvIGFsbG9jYXRlIG1lbW9yeQotICAgZmFpbGVkLiAgTm90ZSB0aGF0IHRoZSBxdWFudGl0eSBvZiBtZW1vcnkgbmVlZGVkIHRvIGRlY29tcHJlc3MKLSAgIGEgc3RyZWFtIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHVudGlsIHRoZSBzdHJlYW0ncyBoZWFkZXIgaGFzCi0gICBiZWVuIHJlYWQuICBTbwotICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiBhbmQKLSAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gbWF5IHJldHVybgotICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NRU1fRVJST1I8L2NvZGU+IGV2ZW4gdGhvdWdoIHNvbWUKLSAgIG9mIHRoZSBjb21wcmVzc2VkIGRhdGEgaGFzIGJlZW4gcmVhZC4gIFRoZSBzYW1lIGlzIG5vdCB0cnVlCi0gICBmb3IgY29tcHJlc3Npb247IG9uY2UKLSAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPiBvcgotICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZU9wZW48L2NvZGU+IGhhdmUKLSAgIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQsCi0gICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01FTV9FUlJPUjwvY29kZT4gY2Fubm90Ci0gICBvY2N1ci48L3A+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9EQVRBX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0PgotPGRkPjxwPlJldHVybmVkIHdoZW4gYSBkYXRhIGludGVncml0eSBlcnJvciBpcwotICAgZGV0ZWN0ZWQgZHVyaW5nIGRlY29tcHJlc3Npb24uICBNb3N0IGltcG9ydGFudGx5LCB0aGlzIG1lYW5zCi0gICB3aGVuIHN0b3JlZCBhbmQgY29tcHV0ZWQgQ1JDcyBmb3IgdGhlIGRhdGEgZG8gbm90IG1hdGNoLiAgVGhpcwotICAgdmFsdWUgaXMgYWxzbyByZXR1cm5lZCB1cG9uIGRldGVjdGlvbiBvZiBhbnkgb3RoZXIgYW5vbWFseSBpbgotICAgdGhlIGNvbXByZXNzZWQgZGF0YS48L3A+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9EQVRBX0VSUk9SX01BR0lDPC9jb2RlPjwvc3Bhbj48L2R0PgotPGRkPjxwPkFzIGEgc3BlY2lhbCBjYXNlIG9mCi0gICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX0RBVEFfRVJST1I8L2NvZGU+LCBpdCBpcwotICAgc29tZXRpbWVzIHVzZWZ1bCB0byBrbm93IHdoZW4gdGhlIGNvbXByZXNzZWQgc3RyZWFtIGRvZXMgbm90Ci0gICBzdGFydCB3aXRoIHRoZSBjb3JyZWN0IG1hZ2ljIGJ5dGVzICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPidCJyAnWicKLSAgICdoJzwvY29kZT4pLjwvcD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX0lPX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0PgotPGRkPjxwPlJldHVybmVkIGJ5Ci0gICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+IGFuZAotICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZTwvY29kZT4gd2hlbiB0aGVyZSBpcyBhbgotICAgZXJyb3IgcmVhZGluZyBvciB3cml0aW5nIGluIHRoZSBjb21wcmVzc2VkIGZpbGUsIGFuZCBieQotICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkT3BlbjwvY29kZT4gYW5kCi0gICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT4gZm9yIGF0dGVtcHRzCi0gICB0byB1c2UgYSBmaWxlIGZvciB3aGljaCB0aGUgZXJyb3IgaW5kaWNhdG9yICh2aXosCi0gICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZlcnJvcihmKTwvY29kZT4pIGlzIHNldC4gIE9uCi0gICByZWNlaXB0IG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfSU9fRVJST1I8L2NvZGU+LCB0aGUKLSAgIGNhbGxlciBzaG91bGQgY29uc3VsdCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmVycm5vPC9jb2RlPgotICAgYW5kL29yIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+cGVycm9yPC9jb2RlPiB0byBhY3F1aXJlCi0gICBvcGVyYXRpbmctc3lzdGVtIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHRoZQotICAgcHJvYmxlbS48L3A+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9VTkVYUEVDVEVEX0VPRjwvY29kZT48L3NwYW4+PC9kdD4KLTxkZD48cD5SZXR1cm5lZCBieQotICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiB3aGVuIHRoZQotICAgY29tcHJlc3NlZCBmaWxlIGZpbmlzaGVzIGJlZm9yZSB0aGUgbG9naWNhbCBlbmQgb2Ygc3RyZWFtIGlzCi0gICBkZXRlY3RlZC48L3A+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9PVVRCVUZGX0ZVTEw8L2NvZGU+PC9zcGFuPjwvZHQ+Ci08ZGQ+PHA+UmV0dXJuZWQgYnkKLSAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9jb2RlPiBhbmQKLSAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+IHRvCi0gICBpbmRpY2F0ZSB0aGF0IHRoZSBvdXRwdXQgZGF0YSB3aWxsIG5vdCBmaXQgaW50byB0aGUgb3V0cHV0Ci0gICBidWZmZXIgcHJvdmlkZWQuPC9wPjwvZGQ+Ci08L2RsPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KLTxhIG5hbWU9Imxvdy1sZXZlbCI+PC9hPjMuMy6gTG93LWxldmVsIGludGVyZmFjZTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Ci08ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+Ci08YSBuYW1lPSJiemNvbXByZXNzLWluaXQiPjwvYT4zLjMuMS6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7Ci0gIGNoYXIgKm5leHRfaW47Ci0gIHVuc2lnbmVkIGludCBhdmFpbF9pbjsKLSAgdW5zaWduZWQgaW50IHRvdGFsX2luX2xvMzI7Ci0gIHVuc2lnbmVkIGludCB0b3RhbF9pbl9oaTMyOwotCi0gIGNoYXIgKm5leHRfb3V0OwotICB1bnNpZ25lZCBpbnQgYXZhaWxfb3V0OwotICB1bnNpZ25lZCBpbnQgdG90YWxfb3V0X2xvMzI7Ci0gIHVuc2lnbmVkIGludCB0b3RhbF9vdXRfaGkzMjsKLQotICB2b2lkICpzdGF0ZTsKLQotICB2b2lkICooKmJ6YWxsb2MpKHZvaWQgKixpbnQsaW50KTsKLSAgdm9pZCAoKmJ6ZnJlZSkodm9pZCAqLHZvaWQgKik7Ci0gIHZvaWQgKm9wYXF1ZTsKLX0gYnpfc3RyZWFtOwotCi1pbnQgQloyX2J6Q29tcHJlc3NJbml0ICggYnpfc3RyZWFtICpzdHJtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxvY2tTaXplMTAwaywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcmJvc2l0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd29ya0ZhY3RvciApOzwvcHJlPgotPHA+UHJlcGFyZXMgZm9yIGNvbXByZXNzaW9uLiAgVGhlCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6X3N0cmVhbTwvY29kZT4gc3RydWN0dXJlIGhvbGRzIGFsbAotZGF0YSBwZXJ0YWluaW5nIHRvIHRoZSBjb21wcmVzc2lvbiBhY3Rpdml0eS4gIEEKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Ynpfc3RyZWFtPC9jb2RlPiBzdHJ1Y3R1cmUgc2hvdWxkIGJlCi1hbGxvY2F0ZWQgYW5kIGluaXRpYWxpc2VkIHByaW9yIHRvIHRoZSBjYWxsLiAgVGhlIGZpZWxkcyBvZgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iel9zdHJlYW08L2NvZGU+IGNvbXByaXNlIHRoZSBlbnRpcmV0eQotb2YgdGhlIHVzZXItdmlzaWJsZSBkYXRhLiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGF0ZTwvY29kZT4KLWlzIGEgcG9pbnRlciB0byB0aGUgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZXMgcmVxdWlyZWQgZm9yCi1jb21wcmVzc2lvbi48L3A+Ci08cD5DdXN0b20gbWVtb3J5IGFsbG9jYXRvcnMgYXJlIHN1cHBvcnRlZCwgdmlhIGZpZWxkcwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemFsbG9jPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpmcmVlPC9jb2RlPiwgYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm9wYXF1ZTwvY29kZT4uICBUaGUgdmFsdWUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+b3BhcXVlPC9jb2RlPiBpcyBwYXNzZWQgdG8gYXMgdGhlIGZpcnN0Ci1hcmd1bWVudCB0byBhbGwgY2FsbHMgdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemFsbG9jPC9jb2RlPgotYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpmcmVlPC9jb2RlPiwgYnV0IGlzIG90aGVyd2lzZQotaWdub3JlZCBieSB0aGUgbGlicmFyeS4gIFRoZSBjYWxsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnphbGxvYyAoCi1vcGFxdWUsIG4sIG0gKTwvY29kZT4gaXMgZXhwZWN0ZWQgdG8gcmV0dXJuIGEgcG9pbnRlcgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5wPC9jb2RlPiB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm4gKgotbTwvY29kZT4gYnl0ZXMgb2YgbWVtb3J5LCBhbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemZyZWUgKAotb3BhcXVlLCBwICk8L2NvZGU+IHNob3VsZCBmcmVlIHRoYXQgbWVtb3J5LjwvcD4KLTxwPklmIHlvdSBkb24ndCB3YW50IHRvIHVzZSBhIGN1c3RvbSBtZW1vcnkgYWxsb2NhdG9yLCBzZXQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnphbGxvYzwvY29kZT4sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZnJlZTwvY29kZT4gYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm9wYXF1ZTwvY29kZT4gdG8KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+TlVMTDwvY29kZT4sIGFuZCB0aGUgbGlicmFyeSB3aWxsIHRoZW4KLXVzZSB0aGUgc3RhbmRhcmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5tYWxsb2M8L2NvZGU+IC8KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZnJlZTwvY29kZT4gcm91dGluZXMuPC9wPgotPHA+QmVmb3JlIGNhbGxpbmcKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPiwgZmllbGRzCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6YWxsb2M8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemZyZWU8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5vcGFxdWU8L2NvZGU+IHNob3VsZCBiZSBmaWxsZWQKLWFwcHJvcHJpYXRlbHksIGFzIGp1c3QgZGVzY3JpYmVkLiAgVXBvbiByZXR1cm4sIHRoZSBpbnRlcm5hbAotc3RhdGUgd2lsbCBoYXZlIGJlZW4gYWxsb2NhdGVkIGFuZCBpbml0aWFsaXNlZCwgYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX2luX2xvMzI8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9pbl9oaTMyPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfb3V0X2xvMzI8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9vdXRfaGkzMjwvY29kZT4gd2lsbCBoYXZlIGJlZW4KLXNldCB0byB6ZXJvLiAgVGhlc2UgZm91ciBmaWVsZHMgYXJlIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gaW5mb3JtCi10aGUgY2FsbGVyIG9mIHRoZSB0b3RhbCBhbW91bnQgb2YgZGF0YSBwYXNzZWQgaW50byBhbmQgb3V0IG9mIHRoZQotbGlicmFyeSwgcmVzcGVjdGl2ZWx5LiAgWW91IHNob3VsZCBub3QgdHJ5IHRvIGNoYW5nZSB0aGVtLiAgQXMgb2YKLXZlcnNpb24gMS4wLCA2NC1iaXQgY291bnRzIGFyZSBtYWludGFpbmVkLCBldmVuIG9uIDMyLWJpdAotcGxhdGZvcm1zLCB1c2luZyB0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5faGkzMjwvY29kZT4KLWZpZWxkcyB0byBzdG9yZSB0aGUgdXBwZXIgMzIgYml0cyBvZiB0aGUgY291bnQuICBTbywgZm9yIGV4YW1wbGUsCi10aGUgdG90YWwgYW1vdW50IG9mIGRhdGEgaW4gaXMgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4odG90YWxfaW5faGkzMgotJmx0OyZsdDsgMzIpICsgdG90YWxfaW5fbG8zMjwvY29kZT4uPC9wPgotPHA+UGFyYW1ldGVyIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YmxvY2tTaXplMTAwazwvY29kZT4KLXNwZWNpZmllcyB0aGUgYmxvY2sgc2l6ZSB0byBiZSB1c2VkIGZvciBjb21wcmVzc2lvbi4gIEl0IHNob3VsZAotYmUgYSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIDkgaW5jbHVzaXZlLCBhbmQgdGhlIGFjdHVhbCBibG9jayBzaXplCi11c2VkIGlzIDEwMDAwMCB4IHRoaXMgZmlndXJlLiAgOSBnaXZlcyB0aGUgYmVzdCBjb21wcmVzc2lvbiBidXQKLXRha2VzIG1vc3QgbWVtb3J5LjwvcD4KLTxwPlBhcmFtZXRlciA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcmJvc2l0eTwvY29kZT4gc2hvdWxkCi1iZSBzZXQgdG8gYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA0IGluY2x1c2l2ZS4gIDAgaXMgc2lsZW50LCBhbmQKLWdyZWF0ZXIgbnVtYmVycyBnaXZlIGluY3JlYXNpbmdseSB2ZXJib3NlIG1vbml0b3JpbmcvZGVidWdnaW5nCi1vdXRwdXQuICBJZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBjb21waWxlZCB3aXRoCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1EQlpfTk9fU1RESU88L2NvZGU+LCBubyBzdWNoIG91dHB1dAotd2lsbCBhcHBlYXIgZm9yIGFueSB2ZXJib3NpdHkgc2V0dGluZy48L3A+Ci08cD5QYXJhbWV0ZXIgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij53b3JrRmFjdG9yPC9jb2RlPgotY29udHJvbHMgaG93IHRoZSBjb21wcmVzc2lvbiBwaGFzZSBiZWhhdmVzIHdoZW4gcHJlc2VudGVkIHdpdGgKLXdvcnN0IGNhc2UsIGhpZ2hseSByZXBldGl0aXZlLCBpbnB1dCBkYXRhLiAgSWYgY29tcHJlc3Npb24gcnVucwotaW50byBkaWZmaWN1bHRpZXMgY2F1c2VkIGJ5IHJlcGV0aXRpdmUgZGF0YSwgdGhlIGxpYnJhcnkgc3dpdGNoZXMKLWZyb20gdGhlIHN0YW5kYXJkIHNvcnRpbmcgYWxnb3JpdGhtIHRvIGEgZmFsbGJhY2sgYWxnb3JpdGhtLiAgVGhlCi1mYWxsYmFjayBpcyBzbG93ZXIgdGhhbiB0aGUgc3RhbmRhcmQgYWxnb3JpdGhtIGJ5IHBlcmhhcHMgYQotZmFjdG9yIG9mIHRocmVlLCBidXQgYWx3YXlzIGJlaGF2ZXMgcmVhc29uYWJseSwgbm8gbWF0dGVyIGhvdyBiYWQKLXRoZSBpbnB1dC48L3A+Ci08cD5Mb3dlciB2YWx1ZXMgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij53b3JrRmFjdG9yPC9jb2RlPgotcmVkdWNlIHRoZSBhbW91bnQgb2YgZWZmb3J0IHRoZSBzdGFuZGFyZCBhbGdvcml0aG0gd2lsbCBleHBlbmQKLWJlZm9yZSByZXNvcnRpbmcgdG8gdGhlIGZhbGxiYWNrLiAgWW91IHNob3VsZCBzZXQgdGhpcyBwYXJhbWV0ZXIKLWNhcmVmdWxseTsgdG9vIGxvdywgYW5kIG1hbnkgaW5wdXRzIHdpbGwgYmUgaGFuZGxlZCBieSB0aGUKLWZhbGxiYWNrIGFsZ29yaXRobSBhbmQgc28gY29tcHJlc3MgcmF0aGVyIHNsb3dseSwgdG9vIGhpZ2gsIGFuZAoteW91ciBhdmVyYWdlLXRvLXdvcnN0IGNhc2UgY29tcHJlc3Npb24gdGltZXMgY2FuIGJlY29tZSB2ZXJ5Ci1sYXJnZS4gIFRoZSBkZWZhdWx0IHZhbHVlIG9mIDMwIGdpdmVzIHJlYXNvbmFibGUgYmVoYXZpb3VyIG92ZXIgYQotd2lkZSByYW5nZSBvZiBjaXJjdW1zdGFuY2VzLjwvcD4KLTxwPkFsbG93YWJsZSB2YWx1ZXMgcmFuZ2UgZnJvbSAwIHRvIDI1MCBpbmNsdXNpdmUuICAwIGlzIGEKLXNwZWNpYWwgY2FzZSwgZXF1aXZhbGVudCB0byB1c2luZyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAzMC48L3A+Ci08cD5Ob3RlIHRoYXQgdGhlIGNvbXByZXNzZWQgb3V0cHV0IGdlbmVyYXRlZCBpcyB0aGUgc2FtZQotcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgZmFsbGJhY2sgYWxnb3JpdGhtIGlzCi11c2VkLjwvcD4KLTxwPkJlIGF3YXJlIGFsc28gdGhhdCB0aGlzIHBhcmFtZXRlciBtYXkgZGlzYXBwZWFyIGVudGlyZWx5IGluCi1mdXR1cmUgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkuICBJbiBwcmluY2lwbGUgaXQgc2hvdWxkIGJlCi1wb3NzaWJsZSB0byBkZXZpc2UgYSBnb29kIHdheSB0byBhdXRvbWF0aWNhbGx5IGNob29zZSB3aGljaAotYWxnb3JpdGhtIHRvIHVzZS4gIFN1Y2ggYSBtZWNoYW5pc20gd291bGQgcmVuZGVyIHRoZSBwYXJhbWV0ZXIKLW9ic29sZXRlLjwvcD4KLTxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX0NPTkZJR19FUlJPUgotICBpZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBtaXMtY29tcGlsZWQKLUJaX1BBUkFNX0VSUk9SCi0gIGlmIHN0cm0gaXMgTlVMTCAKLSAgb3IgYmxvY2tTaXplICZsdDsgMSBvciBibG9ja1NpemUgJmd0OyA5Ci0gIG9yIHZlcmJvc2l0eSAmbHQ7IDAgb3IgdmVyYm9zaXR5ICZndDsgNAotICBvciB3b3JrRmFjdG9yICZsdDsgMCBvciB3b3JrRmFjdG9yICZndDsgMjUwCi1CWl9NRU1fRVJST1IgCi0gIGlmIG5vdCBlbm91Z2ggbWVtb3J5IGlzIGF2YWlsYWJsZQotQlpfT0sgCi0gIG90aGVyd2lzZTwvcHJlPgotPHA+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QloyX2J6Q29tcHJlc3MKLSAgaWYgQlpfT0sgaXMgcmV0dXJuZWQKLSAgbm8gc3BlY2lmaWMgYWN0aW9uIG5lZWRlZCBpbiBjYXNlIG9mIGVycm9yPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KLTxhIG5hbWU9ImJ6Q29tcHJlc3MiPjwvYT4zLjMuMi6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2PgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCBCWjJfYnpDb21wcmVzcyAoIGJ6X3N0cmVhbSAqc3RybSwgaW50IGFjdGlvbiApOzwvcHJlPgotPHA+UHJvdmlkZXMgbW9yZSBpbnB1dCBhbmQvb3Igb3V0cHV0IGJ1ZmZlciBzcGFjZSBmb3IgdGhlCi1saWJyYXJ5LiAgVGhlIGNhbGxlciBtYWludGFpbnMgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLCBhbmQKLWNhbGxzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHRvIHRyYW5zZmVyCi1kYXRhIGJldHdlZW4gdGhlbS48L3A+Ci08cD5CZWZvcmUgZWFjaCBjYWxsIHRvCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9pbjwvY29kZT4gc2hvdWxkIHBvaW50IGF0IHRoZSBkYXRhCi10byBiZSBjb21wcmVzc2VkLCBhbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4KLXNob3VsZCBpbmRpY2F0ZSBob3cgbWFueSBieXRlcyB0aGUgbGlicmFyeSBtYXkgcmVhZC4KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHVwZGF0ZXMKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9pbjwvY29kZT4sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX2luPC9jb2RlPiBhbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfaW48L2NvZGU+IHRvIHJlZmxlY3QgdGhlIG51bWJlcgotb2YgYnl0ZXMgaXQgaGFzIHJlYWQuPC9wPgotPHA+U2ltaWxhcmx5LCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5leHRfb3V0PC9jb2RlPiBzaG91bGQKLXBvaW50IHRvIGEgYnVmZmVyIGluIHdoaWNoIHRoZSBjb21wcmVzc2VkIGRhdGEgaXMgdG8gYmUgcGxhY2VkLAotd2l0aCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX291dDwvY29kZT4gaW5kaWNhdGluZyBob3cKLW11Y2ggb3V0cHV0IHNwYWNlIGlzIGF2YWlsYWJsZS4KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHVwZGF0ZXMKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9vdXQ8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9vdXQ8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9vdXQ8L2NvZGU+IHRvIHJlZmxlY3QgdGhlIG51bWJlcgotb2YgYnl0ZXMgb3V0cHV0LjwvcD4KLTxwPllvdSBtYXkgcHJvdmlkZSBhbmQgcmVtb3ZlIGFzIGxpdHRsZSBvciBhcyBtdWNoIGRhdGEgYXMgeW91Ci1saWtlIG9uIGVhY2ggY2FsbCBvZgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4uICBJbiB0aGUgbGltaXQsCi1pdCBpcyBhY2NlcHRhYmxlIHRvIHN1cHBseSBhbmQgcmVtb3ZlIGRhdGEgb25lIGJ5dGUgYXQgYSB0aW1lLAotYWx0aG91Z2ggdGhpcyB3b3VsZCBiZSB0ZXJyaWJseSBpbmVmZmljaWVudC4gIFlvdSBzaG91bGQgYWx3YXlzCi1lbnN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgYnl0ZSBvZiBvdXRwdXQgc3BhY2UgaXMgYXZhaWxhYmxlIGF0Ci1lYWNoIGNhbGwuPC9wPgotPHA+QSBzZWNvbmQgcHVycG9zZSBvZgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gaXMgdG8gcmVxdWVzdCBhCi1jaGFuZ2Ugb2YgbW9kZSBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uPC9wPgotPHA+Q29uY2VwdHVhbGx5LCBhIGNvbXByZXNzZWQgc3RyZWFtIGNhbiBiZSBpbiBvbmUgb2YgZm91cgotc3RhdGVzOiBJRExFLCBSVU5OSU5HLCBGTFVTSElORyBhbmQgRklOSVNISU5HLiAgQmVmb3JlCi1pbml0aWFsaXNhdGlvbgotKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPikgYW5kIGFmdGVyCi10ZXJtaW5hdGlvbiAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0VuZDwvY29kZT4pLAotYSBzdHJlYW0gaXMgcmVnYXJkZWQgYXMgSURMRS48L3A+Ci08cD5VcG9uIGluaXRpYWxpc2F0aW9uCi0oPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+KSwgdGhlIHN0cmVhbQotaXMgcGxhY2VkIGluIHRoZSBSVU5OSU5HIHN0YXRlLiAgU3Vic2VxdWVudCBjYWxscyB0bwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gc2hvdWxkIHBhc3MKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfUlVOPC9jb2RlPiBhcyB0aGUgcmVxdWVzdGVkIGFjdGlvbjsKLW90aGVyIGFjdGlvbnMgYXJlIGlsbGVnYWwgYW5kIHdpbGwgcmVzdWx0IGluCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPi48L3A+Ci08cD5BdCBzb21lIHBvaW50LCB0aGUgY2FsbGluZyBwcm9ncmFtIHdpbGwgaGF2ZSBwcm92aWRlZCBhbGwKLXRoZSBpbnB1dCBkYXRhIGl0IHdhbnRzIHRvLiAgSXQgd2lsbCB0aGVuIHdhbnQgdG8gZmluaXNoIHVwIC0tIGluCi1lZmZlY3QsIGFza2luZyB0aGUgbGlicmFyeSB0byBwcm9jZXNzIGFueSBkYXRhIGl0IG1pZ2h0IGhhdmUKLWJ1ZmZlcmVkIGludGVybmFsbHkuICBJbiB0aGlzIHN0YXRlLAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gd2lsbCBubyBsb25nZXIKLWF0dGVtcHQgdG8gcmVhZCBkYXRhIGZyb20KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9pbjwvY29kZT4sIGJ1dCBpdCB3aWxsIHdhbnQgdG8KLXdyaXRlIGRhdGEgdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X291dDwvY29kZT4uICBCZWNhdXNlCi10aGUgb3V0cHV0IGJ1ZmZlciBzdXBwbGllZCBieSB0aGUgdXNlciBjYW4gYmUgYXJiaXRyYXJpbHkgc21hbGwsCi10aGUgZmluaXNoaW5nLXVwIG9wZXJhdGlvbiBjYW5ub3QgbmVjZXNzYXJpbHkgYmUgZG9uZSB3aXRoIGEKLXNpbmdsZSBjYWxsIG9mCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPi48L3A+Ci08cD5JbnN0ZWFkLCB0aGUgY2FsbGluZyBwcm9ncmFtIHBhc3NlcwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9GSU5JU0g8L2NvZGU+IGFzIGFuIGFjdGlvbiB0bwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4uICBUaGlzIGNoYW5nZXMKLXRoZSBzdHJlYW0ncyBzdGF0ZSB0byBGSU5JU0hJTkcuICBBbnkgcmVtYWluaW5nIGlucHV0IChpZSwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9pblswIC4uIGF2YWlsX2luLTFdPC9jb2RlPikgaXMKLWNvbXByZXNzZWQgYW5kIHRyYW5zZmVycmVkIHRvIHRoZSBvdXRwdXQgYnVmZmVyLiAgVG8gZG8gdGhpcywKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IG11c3QgYmUgY2FsbGVkCi1yZXBlYXRlZGx5IHVudGlsIGFsbCB0aGUgb3V0cHV0IGhhcyBiZWVuIGNvbnN1bWVkLiAgQXQgdGhhdAotcG9pbnQsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHJldHVybnMKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4sIGFuZCB0aGUgc3RyZWFtJ3MKLXN0YXRlIGlzIHNldCBiYWNrIHRvIElETEUuCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPiBzaG91bGQgdGhlbiBiZQotY2FsbGVkLjwvcD4KLTxwPkp1c3QgdG8gbWFrZSBzdXJlIHRoZSBjYWxsaW5nIHByb2dyYW0gZG9lcyBub3QgY2hlYXQsIHRoZQotbGlicmFyeSBtYWtlcyBhIG5vdGUgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4KLWF0IHRoZSB0aW1lIG9mIHRoZSBmaXJzdCBjYWxsIHRvCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiB3aGljaCBoYXMKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRklOSVNIPC9jb2RlPiBhcyBhbiBhY3Rpb24gKGllLCBhdAotdGhlIHRpbWUgdGhlIHByb2dyYW0gaGFzIGFubm91bmNlZCBpdHMgaW50ZW50aW9uIHRvIG5vdCBzdXBwbHkKLWFueSBtb3JlIGlucHV0KS4gIEJ5IGNvbXBhcmluZyB0aGlzIHZhbHVlIHdpdGggdGhhdCBvZgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4gb3ZlciBzdWJzZXF1ZW50IGNhbGxzCi10byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiwgdGhlIGxpYnJhcnkKLWNhbiBkZXRlY3QgYW55IGF0dGVtcHRzIHRvIHNsaXAgaW4gbW9yZSBkYXRhIHRvIGNvbXByZXNzLiAgQW55Ci1jYWxscyBmb3Igd2hpY2ggdGhpcyBpcyBkZXRlY3RlZCB3aWxsIHJldHVybgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TRVFVRU5DRV9FUlJPUjwvY29kZT4uICBUaGlzCi1pbmRpY2F0ZXMgYSBwcm9ncmFtbWluZyBtaXN0YWtlIHdoaWNoIHNob3VsZCBiZSBjb3JyZWN0ZWQuPC9wPgotPHA+SW5zdGVhZCBvZiBhc2tpbmcgdG8gZmluaXNoLCB0aGUgY2FsbGluZyBwcm9ncmFtIG1heSBhc2sKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHRvIHRha2UgYWxsIHRoZQotcmVtYWluaW5nIGlucHV0LCBjb21wcmVzcyBpdCBhbmQgdGVybWluYXRlIHRoZSBjdXJyZW50Ci0oQnVycm93cy1XaGVlbGVyKSBjb21wcmVzc2lvbiBibG9jay4gIFRoaXMgY291bGQgYmUgdXNlZnVsIGZvcgotZXJyb3IgY29udHJvbCBwdXJwb3Nlcy4gIFRoZSBtZWNoYW5pc20gaXMgYW5hbG9nb3VzIHRvIHRoYXQgZm9yCi1maW5pc2hpbmc6IGNhbGwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4KLXdpdGggYW4gYWN0aW9uIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRkxVU0g8L2NvZGU+LAotcmVtb3ZlIG91dHB1dCBkYXRhLCBhbmQgcGVyc2lzdCB3aXRoIHRoZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9GTFVTSDwvY29kZT4gYWN0aW9uIHVudGlsIHRoZSB2YWx1ZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9SVU48L2NvZGU+IGlzIHJldHVybmVkLiAgQXMgd2l0aAotZmluaXNoaW5nLCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPgotZGV0ZWN0cyBhbnkgYXR0ZW1wdCB0byBwcm92aWRlIG1vcmUgaW5wdXQgZGF0YSBvbmNlIHRoZSBmbHVzaCBoYXMKLWJlZ3VuLjwvcD4KLTxwPk9uY2UgdGhlIGZsdXNoIGlzIGNvbXBsZXRlLCB0aGUgc3RyZWFtIHJldHVybnMgdG8gdGhlCi1ub3JtYWwgUlVOTklORyBzdGF0ZS48L3A+Ci08cD5UaGlzIGFsbCBzb3VuZHMgcHJldHR5IGNvbXBsZXgsIGJ1dCBpc24ndCByZWFsbHkuICBIZXJlJ3MgYQotdGFibGUgd2hpY2ggc2hvd3Mgd2hpY2ggYWN0aW9ucyBhcmUgYWxsb3dhYmxlIGluIGVhY2ggc3RhdGUsIHdoYXQKLWFjdGlvbiB3aWxsIGJlIHRha2VuLCB3aGF0IHRoZSBuZXh0IHN0YXRlIGlzLCBhbmQgd2hhdCB0aGUKLW5vbi1lcnJvciByZXR1cm4gdmFsdWVzIGFyZS4gIE5vdGUgdGhhdCB5b3UgY2FuJ3QgZXhwbGljaXRseSBhc2sKLXdoYXQgc3RhdGUgdGhlIHN0cmVhbSBpcyBpbiwgYnV0IG5vciBkbyB5b3UgbmVlZCB0byAtLSBpdCBjYW4gYmUKLWluZmVycmVkIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4uPC9wPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPklETEUvYW55Ci0gIElsbGVnYWwuICBJRExFIHN0YXRlIG9ubHkgZXhpc3RzIGFmdGVyIEJaMl9iekNvbXByZXNzRW5kIG9yCi0gIGJlZm9yZSBCWjJfYnpDb21wcmVzc0luaXQuCi0gIFJldHVybiB2YWx1ZSA9IEJaX1NFUVVFTkNFX0VSUk9SCi0KLVJVTk5JTkcvQlpfUlVOCi0gIENvbXByZXNzIGZyb20gbmV4dF9pbiB0byBuZXh0X291dCBhcyBtdWNoIGFzIHBvc3NpYmxlLgotICBOZXh0IHN0YXRlID0gUlVOTklORwotICBSZXR1cm4gdmFsdWUgPSBCWl9SVU5fT0sKLQotUlVOTklORy9CWl9GTFVTSAotICBSZW1lbWJlciBjdXJyZW50IHZhbHVlIG9mIG5leHRfaW4uIENvbXByZXNzIGZyb20gbmV4dF9pbgotICB0byBuZXh0X291dCBhcyBtdWNoIGFzIHBvc3NpYmxlLCBidXQgZG8gbm90IGFjY2VwdCBhbnkgbW9yZSBpbnB1dC4KLSAgTmV4dCBzdGF0ZSA9IEZMVVNISU5HCi0gIFJldHVybiB2YWx1ZSA9IEJaX0ZMVVNIX09LCi0KLVJVTk5JTkcvQlpfRklOSVNICi0gIFJlbWVtYmVyIGN1cnJlbnQgdmFsdWUgb2YgbmV4dF9pbi4gQ29tcHJlc3MgZnJvbSBuZXh0X2luCi0gIHRvIG5leHRfb3V0IGFzIG11Y2ggYXMgcG9zc2libGUsIGJ1dCBkbyBub3QgYWNjZXB0IGFueSBtb3JlIGlucHV0LgotICBOZXh0IHN0YXRlID0gRklOSVNISU5HCi0gIFJldHVybiB2YWx1ZSA9IEJaX0ZJTklTSF9PSwotCi1GTFVTSElORy9CWl9GTFVTSAotICBDb21wcmVzcyBmcm9tIG5leHRfaW4gdG8gbmV4dF9vdXQgYXMgbXVjaCBhcyBwb3NzaWJsZSwgCi0gIGJ1dCBkbyBub3QgYWNjZXB0IGFueSBtb3JlIGlucHV0LgotICBJZiBhbGwgdGhlIGV4aXN0aW5nIGlucHV0IGhhcyBiZWVuIHVzZWQgdXAgYW5kIGFsbCBjb21wcmVzc2VkCi0gIG91dHB1dCBoYXMgYmVlbiByZW1vdmVkCi0gICAgTmV4dCBzdGF0ZSA9IFJVTk5JTkc7IFJldHVybiB2YWx1ZSA9IEJaX1JVTl9PSwotICBlbHNlCi0gICAgTmV4dCBzdGF0ZSA9IEZMVVNISU5HOyBSZXR1cm4gdmFsdWUgPSBCWl9GTFVTSF9PSwotCi1GTFVTSElORy9vdGhlciAgICAgCi0gIElsbGVnYWwuCi0gIFJldHVybiB2YWx1ZSA9IEJaX1NFUVVFTkNFX0VSUk9SCi0KLUZJTklTSElORy9CWl9GSU5JU0gKLSAgQ29tcHJlc3MgZnJvbSBuZXh0X2luIHRvIG5leHRfb3V0IGFzIG11Y2ggYXMgcG9zc2libGUsCi0gIGJ1dCB0byBub3QgYWNjZXB0IGFueSBtb3JlIGlucHV0LiAgCi0gIElmIGFsbCB0aGUgZXhpc3RpbmcgaW5wdXQgaGFzIGJlZW4gdXNlZCB1cCBhbmQgYWxsIGNvbXByZXNzZWQKLSAgb3V0cHV0IGhhcyBiZWVuIHJlbW92ZWQKLSAgICBOZXh0IHN0YXRlID0gSURMRTsgUmV0dXJuIHZhbHVlID0gQlpfU1RSRUFNX0VORAotICBlbHNlCi0gICAgTmV4dCBzdGF0ZSA9IEZJTklTSElORzsgUmV0dXJuIHZhbHVlID0gQlpfRklOSVNIX09LCi0KLUZJTklTSElORy9vdGhlcgotICBJbGxlZ2FsLgotICBSZXR1cm4gdmFsdWUgPSBCWl9TRVFVRU5DRV9FUlJPUjwvcHJlPgotPHA+VGhhdCBzdGlsbCBsb29rcyBjb21wbGljYXRlZD8gIFdlbGwsIGZhaXIgZW5vdWdoLiAgVGhlCi11c3VhbCBzZXF1ZW5jZSBvZiBjYWxscyBmb3IgY29tcHJlc3NpbmcgYSBsb2FkIG9mIGRhdGEgaXM6PC9wPgotPGRpdiBjbGFzcz0ib3JkZXJlZGxpc3QiPjxvbCB0eXBlPSIxIj4KLTxsaT48cD5HZXQgc3RhcnRlZCB3aXRoCi0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPi48L3A+PC9saT4KLTxsaT48cD5TaG92ZWwgZGF0YSBpbiBhbmQgc2hsdXJwIG91dCBpdHMgY29tcHJlc3NlZCBmb3JtCi0gIHVzaW5nIHplcm8gb3IgbW9yZSBjYWxscyBvZgotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiB3aXRoIGFjdGlvbiA9Ci0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfUlVOPC9jb2RlPi48L3A+PC9saT4KLTxsaT48cD5GaW5pc2ggdXAuIFJlcGVhdGVkbHkgY2FsbAotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiB3aXRoIGFjdGlvbiA9Ci0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRklOSVNIPC9jb2RlPiwgY29weWluZyBvdXQgdGhlCi0gIGNvbXByZXNzZWQgb3V0cHV0LCB1bnRpbAotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+IGlzCi0gIHJldHVybmVkLjwvcD48L2xpPgotPGxpPjxwPkNsb3NlIHVwIGFuZCBnbyBob21lLiAgQ2FsbAotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPi48L3A+PC9saT4KLTwvb2w+PC9kaXY+Ci08cD5JZiB0aGUgZGF0YSB5b3Ugd2FudCB0byBjb21wcmVzcyBmaXRzIGludG8geW91ciBpbnB1dAotYnVmZmVyIGFsbCBhdCBvbmNlLCB5b3UgY2FuIHNraXAgdGhlIGNhbGxzIG9mCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzICggLi4uLCBCWl9SVU4gKTwvY29kZT4KLWFuZCBqdXN0IGRvIHRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzICggLi4uLCBCWl9GSU5JU0gKLSk8L2NvZGU+IGNhbGxzLjwvcD4KLTxwPkFsbCByZXF1aXJlZCBtZW1vcnkgaXMgYWxsb2NhdGVkIGJ5Ci08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4uICBUaGUKLWNvbXByZXNzaW9uIGxpYnJhcnkgY2FuIGFjY2VwdCBhbnkgZGF0YSBhdCBhbGwgKG9idmlvdXNseSkuICBTbwoteW91IHNob3VsZG4ndCBnZXQgYW55IGVycm9yIHJldHVybiB2YWx1ZXMgZnJvbSB0aGUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IGNhbGxzLiAgSWYgeW91Ci1kbywgdGhleSB3aWxsIGJlCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPiwgYW5kIGluZGljYXRlCi1hIGJ1ZyBpbiB5b3VyIHByb2dyYW1taW5nLjwvcD4KLTxwPlRyaXZpYWwgb3RoZXIgcG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKLSAgaWYgc3RybSBpcyBOVUxMLCBvciBzdHJtLSZndDtzIGlzIE5VTEw8L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgotPGEgbmFtZT0iYnpDb21wcmVzcy1lbmQiPjwvYT4zLjMuMy6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0VuZDwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2PgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCBCWjJfYnpDb21wcmVzc0VuZCAoIGJ6X3N0cmVhbSAqc3RybSApOzwvcHJlPgotPHA+UmVsZWFzZXMgYWxsIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSBjb21wcmVzc2lvbgotc3RyZWFtLjwvcD4KLTxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1BBUkFNX0VSUk9SICBpZiBzdHJtIGlzIE5VTEwgb3Igc3RybS0mZ3Q7cyBpcyBOVUxMCi1CWl9PSyAgICAgICAgICAgb3RoZXJ3aXNlPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KLTxhIG5hbWU9ImJ6RGVjb21wcmVzcy1pbml0Ij48L2E+My4zLjQuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6RGVjb21wcmVzc0luaXQgKCBiel9zdHJlYW0gKnN0cm0sIGludCB2ZXJib3NpdHksIGludCBzbWFsbCApOzwvcHJlPgotPHA+UHJlcGFyZXMgZm9yIGRlY29tcHJlc3Npb24uICBBcyB3aXRoCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4sIGEKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Ynpfc3RyZWFtPC9jb2RlPiByZWNvcmQgc2hvdWxkIGJlCi1hbGxvY2F0ZWQgYW5kIGluaXRpYWxpc2VkIGJlZm9yZSB0aGUgY2FsbC4gIEZpZWxkcwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemFsbG9jPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpmcmVlPC9jb2RlPiBhbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+b3BhcXVlPC9jb2RlPiBzaG91bGQgYmUgc2V0IGlmIGEgY3VzdG9tCi1tZW1vcnkgYWxsb2NhdG9yIGlzIHJlcXVpcmVkLCBvciBtYWRlCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPk5VTEw8L2NvZGU+IGZvciB0aGUgbm9ybWFsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm1hbGxvYzwvY29kZT4gLwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mcmVlPC9jb2RlPiByb3V0aW5lcy4gIFVwb24gcmV0dXJuLCB0aGUKLWludGVybmFsIHN0YXRlIHdpbGwgaGF2ZSBiZWVuIGluaXRpYWxpc2VkLCBhbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfaW48L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9vdXQ8L2NvZGU+IHdpbGwgYmUgemVyby48L3A+Ci08cD5Gb3IgdGhlIG1lYW5pbmcgb2YgcGFyYW1ldGVyCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcmJvc2l0eTwvY29kZT4sIHNlZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+LjwvcD4KLTxwPklmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c21hbGw8L2NvZGU+IGlzIG5vbnplcm8sIHRoZQotbGlicmFyeSB3aWxsIHVzZSBhbiBhbHRlcm5hdGl2ZSBkZWNvbXByZXNzaW9uIGFsZ29yaXRobSB3aGljaAotdXNlcyBsZXNzIG1lbW9yeSBidXQgYXQgdGhlIGNvc3Qgb2YgZGVjb21wcmVzc2luZyBtb3JlIHNsb3dseQotKHJvdWdobHkgc3BlYWtpbmcsIGhhbGYgdGhlIHNwZWVkLCBidXQgdGhlIG1heGltdW0gbWVtb3J5Ci1yZXF1aXJlbWVudCBkcm9wcyB0byBhcm91bmQgMjMwMGspLiAgU2VlIDxhIGhyZWY9IiN1c2luZyI+SG93IHRvIHVzZSBiemlwMjwvYT4KLWZvciBtb3JlIGluZm9ybWF0aW9uIG9uIG1lbW9yeSBtYW5hZ2VtZW50LjwvcD4KLTxwPk5vdGUgdGhhdCB0aGUgYW1vdW50IG9mIG1lbW9yeSBuZWVkZWQgdG8gZGVjb21wcmVzcyBhCi1zdHJlYW0gY2Fubm90IGJlIGRldGVybWluZWQgdW50aWwgdGhlIHN0cmVhbSdzIGhlYWRlciBoYXMgYmVlbgotcmVhZCwgc28gZXZlbiBpZgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29kZT4gc3VjY2VlZHMsIGEKLXN1YnNlcXVlbnQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPgotY291bGQgZmFpbCB3aXRoCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01FTV9FUlJPUjwvY29kZT4uPC9wPgotPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfQ09ORklHX0VSUk9SCi0gIGlmIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIG1pcy1jb21waWxlZAotQlpfUEFSQU1fRVJST1IKLSAgaWYgKCBzbWFsbCAhPSAwICZhbXA7JmFtcDsgc21hbGwgIT0gMSApCi0gIG9yICh2ZXJib3NpdHkgJmx0OzsgMCB8fCB2ZXJib3NpdHkgJmd0OyA0KQotQlpfTUVNX0VSUk9SCi0gIGlmIGluc3VmZmljaWVudCBtZW1vcnkgaXMgYXZhaWxhYmxlPC9wcmU+Ci08cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWjJfYnpEZWNvbXByZXNzCi0gIGlmIEJaX09LIHdhcyByZXR1cm5lZAotICBubyBzcGVjaWZpYyBhY3Rpb24gcmVxdWlyZWQgaW4gY2FzZSBvZiBlcnJvcjwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+Ci08YSBuYW1lPSJiekRlY29tcHJlc3MiPjwvYT4zLjMuNS6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9iekRlY29tcHJlc3MgKCBiel9zdHJlYW0gKnN0cm0gKTs8L3ByZT4KLTxwPlByb3ZpZGVzIG1vcmUgaW5wdXQgYW5kL291dCBvdXRwdXQgYnVmZmVyIHNwYWNlIGZvciB0aGUKLWxpYnJhcnkuICBUaGUgY2FsbGVyIG1haW50YWlucyBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMsIGFuZCB1c2VzCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IHRvIHRyYW5zZmVyCi1kYXRhIGJldHdlZW4gdGhlbS48L3A+Ci08cD5CZWZvcmUgZWFjaCBjYWxsIHRvCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X2luPC9jb2RlPiBzaG91bGQgcG9pbnQgYXQgdGhlCi1jb21wcmVzc2VkIGRhdGEsIGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX2luPC9jb2RlPgotc2hvdWxkIGluZGljYXRlIGhvdyBtYW55IGJ5dGVzIHRoZSBsaWJyYXJ5IG1heSByZWFkLgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiB1cGRhdGVzCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5leHRfaW48L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4gYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX2luPC9jb2RlPiB0byByZWZsZWN0IHRoZSBudW1iZXIKLW9mIGJ5dGVzIGl0IGhhcyByZWFkLjwvcD4KLTxwPlNpbWlsYXJseSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X291dDwvY29kZT4gc2hvdWxkCi1wb2ludCB0byBhIGJ1ZmZlciBpbiB3aGljaCB0aGUgdW5jb21wcmVzc2VkIG91dHB1dCBpcyB0byBiZQotcGxhY2VkLCB3aXRoIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXZhaWxfb3V0PC9jb2RlPgotaW5kaWNhdGluZyBob3cgbXVjaCBvdXRwdXQgc3BhY2UgaXMgYXZhaWxhYmxlLgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gdXBkYXRlcwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X291dDwvY29kZT4sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX291dDwvY29kZT4gYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX291dDwvY29kZT4gdG8gcmVmbGVjdCB0aGUgbnVtYmVyCi1vZiBieXRlcyBvdXRwdXQuPC9wPgotPHA+WW91IG1heSBwcm92aWRlIGFuZCByZW1vdmUgYXMgbGl0dGxlIG9yIGFzIG11Y2ggZGF0YSBhcyB5b3UKLWxpa2Ugb24gZWFjaCBjYWxsIG9mCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+LiAgSW4gdGhlIGxpbWl0LAotaXQgaXMgYWNjZXB0YWJsZSB0byBzdXBwbHkgYW5kIHJlbW92ZSBkYXRhIG9uZSBieXRlIGF0IGEgdGltZSwKLWFsdGhvdWdoIHRoaXMgd291bGQgYmUgdGVycmlibHkgaW5lZmZpY2llbnQuICBZb3Ugc2hvdWxkIGFsd2F5cwotZW5zdXJlIHRoYXQgYXQgbGVhc3Qgb25lIGJ5dGUgb2Ygb3V0cHV0IHNwYWNlIGlzIGF2YWlsYWJsZSBhdAotZWFjaCBjYWxsLjwvcD4KLTxwPlVzZSBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IGlzCi1zaW1wbGVyIHRoYW4KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LjwvcD4KLTxwPllvdSBzaG91bGQgcHJvdmlkZSBpbnB1dCBhbmQgcmVtb3ZlIG91dHB1dCBhcyBkZXNjcmliZWQKLWFib3ZlLCBhbmQgcmVwZWF0ZWRseSBjYWxsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IHVudGlsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+IGlzIHJldHVybmVkLgotQXBwZWFyYW5jZSBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+Ci1kZW5vdGVzIHRoYXQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPgotaGFzIGRldGVjdGVkIHRoZSBsb2dpY2FsIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IHdpbGwgbm90Ci1wcm9kdWNlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gdW50aWwgYWxsCi1vdXRwdXQgZGF0YSBoYXMgYmVlbiBwbGFjZWQgaW50byB0aGUgb3V0cHV0IGJ1ZmZlciwgc28gb25jZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPiBhcHBlYXJzLCB5b3UgYXJlCi1ndWFyYW50ZWVkIHRvIGhhdmUgYXZhaWxhYmxlIGFsbCB0aGUgZGVjb21wcmVzc2VkIG91dHB1dCwgYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NFbmQ8L2NvZGU+IGNhbiBzYWZlbHkKLWJlIGNhbGxlZC48L3A+Ci08cD5JZiBjYXNlIG9mIGFuIGVycm9yIHJldHVybiB2YWx1ZSwgeW91IHNob3VsZCBjYWxsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NFbmQ8L2NvZGU+IHRvIGNsZWFuIHVwCi1hbmQgcmVsZWFzZSBtZW1vcnkuPC9wPgotPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKLSAgaWYgc3RybSBpcyBOVUxMIG9yIHN0cm0tJmd0O3MgaXMgTlVMTAotICBvciBzdHJtLSZndDthdmFpbF9vdXQgJmx0OyAxCi1CWl9EQVRBX0VSUk9SCi0gIGlmIGEgZGF0YSBpbnRlZ3JpdHkgZXJyb3IgaXMgZGV0ZWN0ZWQgaW4gdGhlIGNvbXByZXNzZWQgc3RyZWFtCi1CWl9EQVRBX0VSUk9SX01BR0lDCi0gIGlmIHRoZSBjb21wcmVzc2VkIHN0cmVhbSBkb2Vzbid0IGJlZ2luIHdpdGggdGhlIHJpZ2h0IG1hZ2ljIGJ5dGVzCi1CWl9NRU1fRVJST1IKLSAgaWYgdGhlcmUgd2Fzbid0IGVub3VnaCBtZW1vcnkgYXZhaWxhYmxlCi1CWl9TVFJFQU1fRU5ECi0gIGlmIHRoZSBsb2dpY2FsIGVuZCBvZiB0aGUgZGF0YSBzdHJlYW0gd2FzIGRldGVjdGVkIGFuZCBhbGwKLSAgb3V0cHV0IGluIGhhcyBiZWVuIGNvbnN1bWVkLCBlZyBzLS0mZ3Q7YXZhaWxfb3V0ICZndDsgMAotQlpfT0sKLSAgb3RoZXJ3aXNlPC9wcmU+Ci08cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWjJfYnpEZWNvbXByZXNzCi0gIGlmIEJaX09LIHdhcyByZXR1cm5lZAotQloyX2J6RGVjb21wcmVzc0VuZAotICBvdGhlcndpc2U8L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgotPGEgbmFtZT0iYnpEZWNvbXByZXNzLWVuZCI+PC9hPjMuMy42LqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NFbmQ8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6RGVjb21wcmVzc0VuZCAoIGJ6X3N0cmVhbSAqc3RybSApOzwvcHJlPgotPHA+UmVsZWFzZXMgYWxsIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSBkZWNvbXByZXNzaW9uCi1zdHJlYW0uPC9wPgotPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKLSAgaWYgc3RybSBpcyBOVUxMIG9yIHN0cm0tJmd0O3MgaXMgTlVMTAotQlpfT0sKLSAgb3RoZXJ3aXNlPC9wcmU+Ci08cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIE5vbmUuPC9wcmU+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+Ci08YSBuYW1lPSJobC1pbnRlcmZhY2UiPjwvYT4zLjQuoEhpZ2gtbGV2ZWwgaW50ZXJmYWNlPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPlRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0IGZpbGVzLiAgRmlyc3QsIHNvbWUKLWdlbmVyYWwgcG9pbnRzLjwvcD4KLTxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImJ1bGxldCI+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+QWxsIG9mIHRoZSBmdW5jdGlvbnMgdGFrZSBhbgotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmludCo8L2NvZGU+IGZpcnN0IGFyZ3VtZW50LAotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+LiAgQWZ0ZXIgZWFjaCBjYWxsLAotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IHNob3VsZCBiZSBjb25zdWx0ZWQKLSAgZmlyc3QgdG8gZGV0ZXJtaW5lIHRoZSBvdXRjb21lIG9mIHRoZSBjYWxsLiAgSWYKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiBpcwotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09LPC9jb2RlPiwgdGhlIGNhbGwgY29tcGxldGVkCi0gIHN1Y2Nlc3NmdWxseSwgYW5kIG9ubHkgdGhlbiBzaG91bGQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUKLSAgZnVuY3Rpb24gKGlmIGFueSkgYmUgY29uc3VsdGVkLiAgSWYKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiBpcwotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX0lPX0VSUk9SPC9jb2RlPiwgdGhlcmUgd2FzIGFuCi0gIGVycm9yIHJlYWRpbmcvd3JpdGluZyB0aGUgdW5kZXJseWluZyBjb21wcmVzc2VkIGZpbGUsIGFuZCB5b3UKLSAgc2hvdWxkIHRoZW4gY29uc3VsdCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmVycm5vPC9jb2RlPiAvCi0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+cGVycm9yPC9jb2RlPiB0byBkZXRlcm1pbmUgdGhlIGNhdXNlCi0gIG9mIHRoZSBkaWZmaWN1bHR5LiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPgotICBtYXkgYWxzbyBiZSBzZXQgdG8gdmFyaW91cyBvdGhlciB2YWx1ZXM7IHByZWNpc2UgZGV0YWlscyBhcmUKLSAgZ2l2ZW4gb24gYSBwZXItZnVuY3Rpb24gYmFzaXMgYmVsb3cuPC9wPjwvbGk+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+SWYgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiBpbmRpY2F0ZXMKLSAgYW4gZXJyb3IgKGllLCBhbnl0aGluZyBleGNlcHQKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9PSzwvY29kZT4gYW5kCi0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4pLCB5b3Ugc2hvdWxkCi0gIGltbWVkaWF0ZWx5IGNhbGwKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+IChvcgotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlQ2xvc2U8L2NvZGU+LCBkZXBlbmRpbmcgb24KLSAgd2hldGhlciB5b3UgYXJlIGF0dGVtcHRpbmcgdG8gcmVhZCBvciB0byB3cml0ZSkgdG8gZnJlZSB1cCBhbGwKLSAgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3RyZWFtLiAgT25jZSBhbiBlcnJvciBoYXMgYmVlbgotICBpbmRpY2F0ZWQsIGJlaGF2aW91ciBvZiBhbGwgY2FsbHMgZXhjZXB0Ci0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPgotICAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlPC9jb2RlPikgaXMKLSAgdW5kZWZpbmVkLiAgVGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgKDEpCi0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gc2hvdWxkIGJlIGNoZWNrZWQKLSAgYWZ0ZXIgZWFjaCBjYWxsLCBhbmQgKDIpIGlmCi0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gaW5kaWNhdGVzIGFuIGVycm9yLAotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4KLSAgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT4pIHNob3VsZCB0aGVuCi0gIGJlIGNhbGxlZCB0byBjbGVhbiB1cC48L3A+PC9saT4KLTxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5UaGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5GSUxFKjwvY29kZT4gYXJndW1lbnRzCi0gIHBhc3NlZCB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRPcGVuPC9jb2RlPiAvCi0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVPcGVuPC9jb2RlPiBzaG91bGQgYmUgc2V0Ci0gIHRvIGJpbmFyeSBtb2RlLiAgTW9zdCBVbml4IHN5c3RlbXMgd2lsbCBkbyB0aGlzIGJ5IGRlZmF1bHQsIGJ1dAotICBvdGhlciBwbGF0Zm9ybXMsIGluY2x1ZGluZyBXaW5kb3dzIGFuZCBNYWMsIHdpbGwgbm90LiAgSWYgeW91Ci0gIG9taXQgdGhpcywgeW91IG1heSBlbmNvdW50ZXIgcHJvYmxlbXMgd2hlbiBtb3ZpbmcgY29kZSB0byBuZXcKLSAgcGxhdGZvcm1zLjwvcD48L2xpPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPk1lbW9yeSBhbGxvY2F0aW9uIHJlcXVlc3RzIGFyZSBoYW5kbGVkIGJ5Ci0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bWFsbG9jPC9jb2RlPiAvCi0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZnJlZTwvY29kZT4uICBBdCBwcmVzZW50IHRoZXJlIGlzIG5vCi0gIGZhY2lsaXR5IGZvciB1c2VyLWRlZmluZWQgbWVtb3J5IGFsbG9jYXRvcnMgaW4gdGhlIGZpbGUgSS9PCi0gIGZ1bmN0aW9ucyAoY291bGQgZWFzaWx5IGJlIGFkZGVkLCB0aG91Z2gpLjwvcD48L2xpPgotPC91bD48L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KLTxhIG5hbWU9ImJ6cmVhZG9wZW4iPjwvYT4zLjQuMS6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkT3BlbjwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2PgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgdm9pZCBCWkZJTEU7Ci0KLUJaRklMRSAqQloyX2J6UmVhZE9wZW4oIGludCAqYnplcnJvciwgRklMRSAqZiwgCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyYm9zaXR5LCBpbnQgc21hbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1bnVzZWQsIGludCBuVW51c2VkICk7PC9wcmU+Ci08cD5QcmVwYXJlIHRvIHJlYWQgY29tcHJlc3NlZCBkYXRhIGZyb20gZmlsZSBoYW5kbGUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZjwvY29kZT4uCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmY8L2NvZGU+IHNob3VsZCByZWZlciB0byBhIGZpbGUgd2hpY2gKLWhhcyBiZWVuIG9wZW5lZCBmb3IgcmVhZGluZywgYW5kIGZvciB3aGljaCB0aGUgZXJyb3IgaW5kaWNhdG9yCi0oPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZXJyb3IoZik8L2NvZGU+KWlzIG5vdCBzZXQuICBJZgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zbWFsbDwvY29kZT4gaXMgMSwgdGhlIGxpYnJhcnkgd2lsbCB0cnkKLXRvIGRlY29tcHJlc3MgdXNpbmcgbGVzcyBtZW1vcnksIGF0IHRoZSBleHBlbnNlIG9mIHNwZWVkLjwvcD4KLTxwPkZvciByZWFzb25zIGV4cGxhaW5lZCBiZWxvdywKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gd2lsbCBkZWNvbXByZXNzIHRoZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uVW51c2VkPC9jb2RlPiBieXRlcyBzdGFydGluZyBhdAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij51bnVzZWQ8L2NvZGU+LCBiZWZvcmUgc3RhcnRpbmcgdG8gcmVhZAotZnJvbSB0aGUgZmlsZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmY8L2NvZGU+LiAgQXQgbW9zdAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NQVhfVU5VU0VEPC9jb2RlPiBieXRlcyBtYXkgYmUKLXN1cHBsaWVkIGxpa2UgdGhpcy4gIElmIHRoaXMgZmFjaWxpdHkgaXMgbm90IHJlcXVpcmVkLCB5b3Ugc2hvdWxkCi1wYXNzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+TlVMTDwvY29kZT4gYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjA8L2NvZGU+IGZvcgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij51bnVzZWQ8L2NvZGU+IGFuZAotbjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+VW51c2VkPC9jb2RlPiByZXNwZWN0aXZlbHkuPC9wPgotPHA+Rm9yIHRoZSBtZWFuaW5nIG9mIHBhcmFtZXRlcnMKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c21hbGw8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52ZXJib3NpdHk8L2NvZGU+LCBzZWUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvZGU+LjwvcD4KLTxwPlRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBkZWNvbXByZXNzIGEgZmlsZSBjYW5ub3QgYmUKLWRldGVybWluZWQgdW50aWwgdGhlIGZpbGUncyBoZWFkZXIgaGFzIGJlZW4gcmVhZC4gIFNvIGl0IGlzCi1wb3NzaWJsZSB0aGF0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+Ci1yZXR1cm5zIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT0s8L2NvZGU+IGJ1dCBhIHN1YnNlcXVlbnQKLWNhbGwgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiB3aWxsIHJldHVybgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NRU1fRVJST1I8L2NvZGU+LjwvcD4KLTxwPlBvc3NpYmxlIGFzc2lnbm1lbnRzIHRvCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+OjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9DT05GSUdfRVJST1IKLSAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCi1CWl9QQVJBTV9FUlJPUgotICBpZiBmIGlzIE5VTEwKLSAgb3Igc21hbGwgaXMgbmVpdGhlciAwIG5vciAxCi0gIG9yICggdW51c2VkID09IE5VTEwgJmFtcDsmYW1wOyBuVW51c2VkICE9IDAgKQotICBvciAoIHVudXNlZCAhPSBOVUxMICZhbXA7JmFtcDsgISgwICZsdDs9IG5VbnVzZWQgJmx0Oz0gQlpfTUFYX1VOVVNFRCkgKQotQlpfSU9fRVJST1IKLSAgaWYgZmVycm9yKGYpIGlzIG5vbnplcm8KLUJaX01FTV9FUlJPUgotICBpZiBpbnN1ZmZpY2llbnQgbWVtb3J5IGlzIGF2YWlsYWJsZQotQlpfT0sKLSAgb3RoZXJ3aXNlLjwvcHJlPgotPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+UG9pbnRlciB0byBhbiBhYnN0cmFjdCBCWkZJTEUKLSAgaWYgYnplcnJvciBpcyBCWl9PSwotTlVMTAotICBvdGhlcndpc2U8L3ByZT4KLTxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaMl9ielJlYWQKLSAgaWYgYnplcnJvciBpcyBCWl9PSwotQloyX2J6Q2xvc2UKLSAgb3RoZXJ3aXNlPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KLTxhIG5hbWU9ImJ6cmVhZCI+PC9hPjMuNC4yLqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6UmVhZCAoIGludCAqYnplcnJvciwgQlpGSUxFICpiLCB2b2lkICpidWYsIGludCBsZW4gKTs8L3ByZT4KLTxwPlJlYWRzIHVwIHRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGVuPC9jb2RlPgotKHVuY29tcHJlc3NlZCkgYnl0ZXMgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmI8L2NvZGU+IGludG8gdGhlIGJ1ZmZlcgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idWY8L2NvZGU+LiAgSWYgdGhlIHJlYWQgd2FzCi1zdWNjZXNzZnVsLCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IGlzIHNldCB0bwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9PSzwvY29kZT4gYW5kIHRoZSBudW1iZXIgb2YgYnl0ZXMKLXJlYWQgaXMgcmV0dXJuZWQuICBJZiB0aGUgbG9naWNhbCBlbmQtb2Ytc3RyZWFtIHdhcyBkZXRlY3RlZCwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gd2lsbCBiZSBzZXQgdG8KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4sIGFuZCB0aGUgbnVtYmVyIG9mCi1ieXRlcyByZWFkIGlzIHJldHVybmVkLiAgQWxsIG90aGVyCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IHZhbHVlcyBkZW5vdGUgYW4KLWVycm9yLjwvcD4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gd2lsbCBzdXBwbHkKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGVuPC9jb2RlPiBieXRlcywgdW5sZXNzIHRoZSBsb2dpY2FsCi1zdHJlYW0gZW5kIGlzIGRldGVjdGVkIG9yIGFuIGVycm9yIG9jY3Vycy4gIEJlY2F1c2Ugb2YgdGhpcywgaXQKLWlzIHBvc3NpYmxlIHRvIGRldGVjdCB0aGUgc3RyZWFtIGVuZCBieSBvYnNlcnZpbmcgd2hlbiB0aGUgbnVtYmVyCi1vZiBieXRlcyByZXR1cm5lZCBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciByZXF1ZXN0ZWQuCi1OZXZlcnRoZWxlc3MsIHRoaXMgaXMgcmVnYXJkZWQgYXMgaW5hZHZpc2FibGU7IHlvdSBzaG91bGQgaW5zdGVhZAotY2hlY2sgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiBhZnRlciBldmVyeSBjYWxsCi1hbmQgd2F0Y2ggb3V0IGZvcgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPi48L3A+Ci08cD5JbnRlcm5hbGx5LCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+Ci1jb3BpZXMgZGF0YSBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUgaW4gY2h1bmtzIG9mIHNpemUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUFYX1VOVVNFRDwvY29kZT4gYnl0ZXMgYmVmb3JlCi1kZWNvbXByZXNzaW5nIGl0LiAgSWYgdGhlIGZpbGUgY29udGFpbnMgbW9yZSBieXRlcyB0aGFuIHN0cmljdGx5Ci1uZWVkZWQgdG8gcmVhY2ggdGhlIGxvZ2ljYWwgZW5kLW9mLXN0cmVhbSwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gd2lsbCBhbG1vc3QgY2VydGFpbmx5Ci1yZWFkIHNvbWUgb2YgdGhlIHRyYWlsaW5nIGRhdGEgYmVmb3JlIHNpZ25hbGxpbmcKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU0VRVUVOQ0VfRU5EPC9jb2RlPi4gIFRvIGNvbGxlY3QgdGhlCi1yZWFkIGJ1dCB1bnVzZWQgZGF0YSBvbmNlCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VORDwvY29kZT4gaGFzIGFwcGVhcmVkLAotY2FsbCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvZGU+Ci1pbW1lZGlhdGVseSBiZWZvcmUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPi48L3A+Ci08cD5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPjo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKLSAgaWYgYiBpcyBOVUxMIG9yIGJ1ZiBpcyBOVUxMIG9yIGxlbiAmbHQ7IDAKLUJaX1NFUVVFTkNFX0VSUk9SCi0gIGlmIGIgd2FzIG9wZW5lZCB3aXRoIEJaMl9ieldyaXRlT3BlbgotQlpfSU9fRVJST1IKLSAgaWYgdGhlcmUgaXMgYW4gZXJyb3IgcmVhZGluZyBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUKLUJaX1VORVhQRUNURURfRU9GCi0gIGlmIHRoZSBjb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIAotICB0aGUgbG9naWNhbCBlbmQtb2Ytc3RyZWFtIHdhcyBkZXRlY3RlZAotQlpfREFUQV9FUlJPUgotICBpZiBhIGRhdGEgaW50ZWdyaXR5IGVycm9yIHdhcyBkZXRlY3RlZCBpbiB0aGUgY29tcHJlc3NlZCBzdHJlYW0KLUJaX0RBVEFfRVJST1JfTUFHSUMKLSAgaWYgdGhlIHN0cmVhbSBkb2VzIG5vdCBiZWdpbiB3aXRoIHRoZSByZXF1aXNpdGUgaGVhZGVyIGJ5dGVzIAotICAoaWUsIGlzIG5vdCBhIGJ6aXAyIGRhdGEgZmlsZSkuICBUaGlzIGlzIHJlYWxseSAKLSAgYSBzcGVjaWFsIGNhc2Ugb2YgQlpfREFUQV9FUlJPUi4KLUJaX01FTV9FUlJPUgotICBpZiBpbnN1ZmZpY2llbnQgbWVtb3J5IHdhcyBhdmFpbGFibGUKLUJaX1NUUkVBTV9FTkQKLSAgaWYgdGhlIGxvZ2ljYWwgZW5kIG9mIHN0cmVhbSB3YXMgZGV0ZWN0ZWQuCi1CWl9PSwotICBvdGhlcndpc2UuPC9wcmU+Ci08cD5Qb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5udW1iZXIgb2YgYnl0ZXMgcmVhZAotICBpZiBiemVycm9yIGlzIEJaX09LIG9yIEJaX1NUUkVBTV9FTkQKLXVuZGVmaW5lZAotICBvdGhlcndpc2U8L3ByZT4KLTxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbGxlY3QgZGF0YSBmcm9tIGJ1ZiwgdGhlbiBCWjJfYnpSZWFkIG9yIEJaMl9ielJlYWRDbG9zZQotICBpZiBiemVycm9yIGlzIEJaX09LCi1jb2xsZWN0IGRhdGEgZnJvbSBidWYsIHRoZW4gQloyX2J6UmVhZENsb3NlIG9yIEJaMl9ielJlYWRHZXRVbnVzZWQKLSAgaWYgYnplcnJvciBpcyBCWl9TRVFVRU5DRV9FTkQKLUJaMl9ielJlYWRDbG9zZQotICBvdGhlcndpc2U8L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgotPGEgbmFtZT0iYnpyZWFkZ2V0dW51c2VkIj48L2E+My40LjMuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZEdldFVudXNlZDwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2PgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnZvaWQgQloyX2J6UmVhZEdldFVudXNlZCggaW50KiBiemVycm9yLCBCWkZJTEUgKmIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiogdW51c2VkLCBpbnQqIG5VbnVzZWQgKTs8L3ByZT4KLTxwPlJldHVybnMgZGF0YSB3aGljaCB3YXMgcmVhZCBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUgYnV0Ci13YXMgbm90IG5lZWRlZCB0byBnZXQgdG8gdGhlIGxvZ2ljYWwgZW5kLW9mLXN0cmVhbS4KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KnVudXNlZDwvY29kZT4gaXMgc2V0IHRvIHRoZSBhZGRyZXNzIG9mCi10aGUgZGF0YSwgYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Km5VbnVzZWQ8L2NvZGU+IHRvIHRoZQotbnVtYmVyIG9mIGJ5dGVzLiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qblVudXNlZDwvY29kZT4gd2lsbAotYmUgc2V0IHRvIGEgdmFsdWUgYmV0d2VlbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjA8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NQVhfVU5VU0VEPC9jb2RlPiBpbmNsdXNpdmUuPC9wPgotPHA+VGhpcyBmdW5jdGlvbiBtYXkgb25seSBiZSBjYWxsZWQgb25jZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiBoYXMgc2lnbmFsbGVkCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+IGJ1dCBiZWZvcmUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPi48L3A+Ci08cD5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPjo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKLSAgaWYgYiBpcyBOVUxMCi0gIG9yIHVudXNlZCBpcyBOVUxMIG9yIG5VbnVzZWQgaXMgTlVMTAotQlpfU0VRVUVOQ0VfRVJST1IKLSAgaWYgQlpfU1RSRUFNX0VORCBoYXMgbm90IGJlZW4gc2lnbmFsbGVkCi0gIG9yIGlmIGIgd2FzIG9wZW5lZCB3aXRoIEJaMl9ieldyaXRlT3BlbgotQlpfT0sKLSAgb3RoZXJ3aXNlPC9wcmU+Ci08cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWjJfYnpSZWFkQ2xvc2U8L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgotPGEgbmFtZT0iYnpyZWFkY2xvc2UiPjwvYT4zLjQuNC6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkIEJaMl9ielJlYWRDbG9zZSAoIGludCAqYnplcnJvciwgQlpGSUxFICpiICk7PC9wcmU+Ci08cD5SZWxlYXNlcyBhbGwgbWVtb3J5IHBlcnRhaW5pbmcgdG8gdGhlIGNvbXByZXNzZWQgZmlsZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iPC9jb2RlPi4KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPiBkb2VzIG5vdCBjYWxsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZjbG9zZTwvY29kZT4gb24gdGhlIHVuZGVybHlpbmcgZmlsZQotaGFuZGxlLCBzbyB5b3Ugc2hvdWxkIGRvIHRoYXQgeW91cnNlbGYgaWYgYXBwcm9wcmlhdGUuCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4gc2hvdWxkIGJlIGNhbGxlZAotdG8gY2xlYW4gdXAgYWZ0ZXIgYWxsIGVycm9yIHNpdHVhdGlvbnMuPC9wPgotPHA+UG9zc2libGUgYXNzaWdubWVudHMgdG8KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT46PC9wPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1NFUVVFTkNFX0VSUk9SCi0gIGlmIGIgd2FzIG9wZW5lZCB3aXRoIEJaMl9iek9wZW5Xcml0ZQotQlpfT0sKLSAgb3RoZXJ3aXNlPC9wcmU+Ci08cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5ub25lPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KLTxhIG5hbWU9ImJ6d3JpdGVvcGVuIj48L2E+My40LjUuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVPcGVuPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpGSUxFICpCWjJfYnpXcml0ZU9wZW4oIGludCAqYnplcnJvciwgRklMRSAqZiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsb2NrU2l6ZTEwMGssIGludCB2ZXJib3NpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdvcmtGYWN0b3IgKTs8L3ByZT4KLTxwPlByZXBhcmUgdG8gd3JpdGUgY29tcHJlc3NlZCBkYXRhIHRvIGZpbGUgaGFuZGxlCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmY8L2NvZGU+LgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mPC9jb2RlPiBzaG91bGQgcmVmZXIgdG8gYSBmaWxlIHdoaWNoCi1oYXMgYmVlbiBvcGVuZWQgZm9yIHdyaXRpbmcsIGFuZCBmb3Igd2hpY2ggdGhlIGVycm9yIGluZGljYXRvcgotKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmVycm9yKGYpPC9jb2RlPilpcyBub3Qgc2V0LjwvcD4KLTxwPkZvciB0aGUgbWVhbmluZyBvZiBwYXJhbWV0ZXJzCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJsb2NrU2l6ZTEwMGs8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52ZXJib3NpdHk8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij53b3JrRmFjdG9yPC9jb2RlPiwgc2VlCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4uPC9wPgotPHA+QWxsIHJlcXVpcmVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYXQgdGhpcyBzdGFnZSwgc28gaWYgdGhlCi1jYWxsIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHksCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01FTV9FUlJPUjwvY29kZT4gY2Fubm90IGJlIHNpZ25hbGxlZAotYnkgYSBzdWJzZXF1ZW50IGNhbGwgdG8KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGU8L2NvZGU+LjwvcD4KLTxwPlBvc3NpYmxlIGFzc2lnbm1lbnRzIHRvCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+OjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9DT05GSUdfRVJST1IKLSAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCi1CWl9QQVJBTV9FUlJPUgotICBpZiBmIGlzIE5VTEwKLSAgb3IgYmxvY2tTaXplMTAwayAmbHQ7IDEgb3IgYmxvY2tTaXplMTAwayAmZ3Q7IDkKLUJaX0lPX0VSUk9SCi0gIGlmIGZlcnJvcihmKSBpcyBub256ZXJvCi1CWl9NRU1fRVJST1IKLSAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSBpcyBhdmFpbGFibGUKLUJaX09LCi0gIG90aGVyd2lzZTwvcHJlPgotPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+UG9pbnRlciB0byBhbiBhYnN0cmFjdCBCWkZJTEUKLSAgaWYgYnplcnJvciBpcyBCWl9PSwotTlVMTAotICBvdGhlcndpc2U8L3ByZT4KLTxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaMl9ieldyaXRlCi0gIGlmIGJ6ZXJyb3IgaXMgQlpfT0sKLSAgKHlvdSBjb3VsZCBnbyBkaXJlY3RseSB0byBCWjJfYnpXcml0ZUNsb3NlLCBidXQgdGhpcyB3b3VsZCBiZSBwcmV0dHkgcG9pbnRsZXNzKQotQloyX2J6V3JpdGVDbG9zZQotICBvdGhlcndpc2U8L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgotPGEgbmFtZT0iYnp3cml0ZSI+PC9hPjMuNC42LqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dm9pZCBCWjJfYnpXcml0ZSAoIGludCAqYnplcnJvciwgQlpGSUxFICpiLCB2b2lkICpidWYsIGludCBsZW4gKTs8L3ByZT4KLTxwPkFic29yYnMgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5sZW48L2NvZGU+IGJ5dGVzIGZyb20gdGhlCi1idWZmZXIgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idWY8L2NvZGU+LCBldmVudHVhbGx5IHRvIGJlCi1jb21wcmVzc2VkIGFuZCB3cml0dGVuIHRvIHRoZSBmaWxlLjwvcD4KLTxwPlBvc3NpYmxlIGFzc2lnbm1lbnRzIHRvCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+OjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9QQVJBTV9FUlJPUgotICBpZiBiIGlzIE5VTEwgb3IgYnVmIGlzIE5VTEwgb3IgbGVuICZsdDsgMAotQlpfU0VRVUVOQ0VfRVJST1IKLSAgaWYgYiB3YXMgb3BlbmVkIHdpdGggQloyX2J6UmVhZE9wZW4KLUJaX0lPX0VSUk9SCi0gIGlmIHRoZXJlIGlzIGFuIGVycm9yIHdyaXRpbmcgdGhlIGNvbXByZXNzZWQgZmlsZS4KLUJaX09LCi0gIG90aGVyd2lzZTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+Ci08YSBuYW1lPSJiendyaXRlY2xvc2UiPjwvYT4zLjQuNy6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dm9pZCBCWjJfYnpXcml0ZUNsb3NlKCBpbnQgKmJ6ZXJyb3IsIEJaRklMRSogZiwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50IGFiYW5kb24sCi0gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogbmJ5dGVzX2luLAotICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIG5ieXRlc19vdXQgKTsKLQotdm9pZCBCWjJfYnpXcml0ZUNsb3NlNjQoIGludCAqYnplcnJvciwgQlpGSUxFKiBmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhYmFuZG9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogbmJ5dGVzX2luX2xvMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBuYnl0ZXNfaW5faGkzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIG5ieXRlc19vdXRfbG8zMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIG5ieXRlc19vdXRfaGkzMiApOzwvcHJlPgotPHA+Q29tcHJlc3NlcyBhbmQgZmx1c2hlcyB0byB0aGUgY29tcHJlc3NlZCBmaWxlIGFsbCBkYXRhIHNvCi1mYXIgc3VwcGxpZWQgYnkgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZTwvY29kZT4uCi1UaGUgbG9naWNhbCBlbmQtb2Ytc3RyZWFtIG1hcmtlcnMgYXJlIGFsc28gd3JpdHRlbiwgc28gc3Vic2VxdWVudAotY2FsbHMgdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZTwvY29kZT4gYXJlCi1pbGxlZ2FsLiAgQWxsIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXByZXNzZWQgZmlsZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iPC9jb2RlPiBpcyByZWxlYXNlZC4KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmZsdXNoPC9jb2RlPiBpcyBjYWxsZWQgb24gdGhlCi1jb21wcmVzc2VkIGZpbGUsIGJ1dCBpdCBpcyBub3QKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmNsb3NlPC9jb2RlPidkLjwvcD4KLTxwPklmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT4gaXMKLWNhbGxlZCB0byBjbGVhbiB1cCBhZnRlciBhbiBlcnJvciwgdGhlIG9ubHkgYWN0aW9uIGlzIHRvIHJlbGVhc2UKLXRoZSBtZW1vcnkuICBUaGUgbGlicmFyeSByZWNvcmRzIHRoZSBlcnJvciBjb2RlcyBpc3N1ZWQgYnkKLXByZXZpb3VzIGNhbGxzLCBzbyB0aGlzIHNpdHVhdGlvbiB3aWxsIGJlIGRldGVjdGVkIGF1dG9tYXRpY2FsbHkuCi1UaGVyZSBpcyBubyBhdHRlbXB0IHRvIGNvbXBsZXRlIHRoZSBjb21wcmVzc2lvbiBvcGVyYXRpb24sIG5vciB0bwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZmx1c2g8L2NvZGU+IHRoZSBjb21wcmVzc2VkIGZpbGUuICBZb3UKLWNhbiBmb3JjZSB0aGlzIGJlaGF2aW91ciB0byBoYXBwZW4gZXZlbiBpbiB0aGUgY2FzZSBvZiBubyBlcnJvciwKLWJ5IHBhc3NpbmcgYSBub256ZXJvIHZhbHVlIHRvCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmFiYW5kb248L2NvZGU+LjwvcD4KLTxwPklmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmJ5dGVzX2luPC9jb2RlPiBpcyBub24tbnVsbCwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Km5ieXRlc19pbjwvY29kZT4gd2lsbCBiZSBzZXQgdG8gYmUgdGhlCi10b3RhbCB2b2x1bWUgb2YgdW5jb21wcmVzc2VkIGRhdGEgaGFuZGxlZC4gIFNpbWlsYXJseSwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmJ5dGVzX291dDwvY29kZT4gd2lsbCBiZSBzZXQgdG8gdGhlCi10b3RhbCB2b2x1bWUgb2YgY29tcHJlc3NlZCBkYXRhIHdyaXR0ZW4uICBGb3IgY29tcGF0aWJpbGl0eSB3aXRoCi1vbGRlciB2ZXJzaW9ucyBvZiB0aGUgbGlicmFyeSwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT4gb25seSB5aWVsZHMgdGhlCi1sb3dlciAzMiBiaXRzIG9mIHRoZXNlIGNvdW50cy4gIFVzZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlNjQ8L2NvZGU+IGlmIHlvdSB3YW50Ci10aGUgZnVsbCA2NCBiaXQgY291bnRzLiAgVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3RoZXJ3aXNlCi1hYnNvbHV0ZWx5IGlkZW50aWNhbC48L3A+Ci08cD5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPjo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfU0VRVUVOQ0VfRVJST1IKLSAgaWYgYiB3YXMgb3BlbmVkIHdpdGggQloyX2J6UmVhZE9wZW4KLUJaX0lPX0VSUk9SCi0gIGlmIHRoZXJlIGlzIGFuIGVycm9yIHdyaXRpbmcgdGhlIGNvbXByZXNzZWQgZmlsZQotQlpfT0sKLSAgb3RoZXJ3aXNlPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KLTxhIG5hbWU9ImVtYmVkIj48L2E+My40LjguoEhhbmRsaW5nIGVtYmVkZGVkIGNvbXByZXNzZWQgZGF0YSBzdHJlYW1zPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPlRoZSBoaWdoLWxldmVsIGxpYnJhcnkgZmFjaWxpdGF0ZXMgdXNlIG9mCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBkYXRhIHN0cmVhbXMgd2hpY2ggZm9ybQotc29tZSBwYXJ0IG9mIGEgc3Vycm91bmRpbmcsIGxhcmdlciBkYXRhIHN0cmVhbS48L3A+Ci08ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJidWxsZXQiPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPkZvciB3cml0aW5nLCB0aGUgbGlicmFyeSB0YWtlcyBhbiBvcGVuIGZpbGUgaGFuZGxlLAotICB3cml0ZXMgY29tcHJlc3NlZCBkYXRhIHRvIGl0LAotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZmbHVzaDwvY29kZT5lcyBpdCBidXQgZG9lcyBub3QKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mY2xvc2U8L2NvZGU+IGl0LiAgVGhlIGNhbGxpbmcKLSAgYXBwbGljYXRpb24gY2FuIHdyaXRlIGl0cyBvd24gZGF0YSBiZWZvcmUgYW5kIGFmdGVyIHRoZQotICBjb21wcmVzc2VkIGRhdGEgc3RyZWFtLCB1c2luZyB0aGF0IHNhbWUgZmlsZSBoYW5kbGUuPC9wPjwvbGk+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+UmVhZGluZyBpcyBtb3JlIGNvbXBsZXgsIGFuZCB0aGUgZmFjaWxpdGllcyBhcmUgbm90IGFzCi0gIGdlbmVyYWwgYXMgdGhleSBjb3VsZCBiZSBzaW5jZSBnZW5lcmFsaXR5IGlzIGhhcmQgdG8gcmVjb25jaWxlCi0gIHdpdGggZWZmaWNpZW5jeS4gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4KLSAgcmVhZHMgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlIGluIGJsb2NrcyBvZiBzaXplCi0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUFYX1VOVVNFRDwvY29kZT4gYnl0ZXMsIGFuZCBpbgotICBkb2luZyBzbyBwcm9iYWJseSB3aWxsIG92ZXJzaG9vdCB0aGUgbG9naWNhbCBlbmQgb2YgY29tcHJlc3NlZAotICBzdHJlYW0uICBUbyByZWNvdmVyIHRoaXMgZGF0YSBvbmNlIGRlY29tcHJlc3Npb24gaGFzIGVuZGVkLAotICBjYWxsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZEdldFVudXNlZDwvY29kZT4gYWZ0ZXIKLSAgdGhlIGxhc3QgY2FsbCBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+Ci0gICh0aGUgb25lIHJldHVybmluZwotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+KSBidXQgYmVmb3JlCi0gIGNhbGxpbmcKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+LjwvcD48L2xpPgotPC91bD48L2Rpdj4KLTxwPlRoaXMgbWVjaGFuaXNtIG1ha2VzIGl0IGVhc3kgdG8gZGVjb21wcmVzcyBtdWx0aXBsZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gc3RyZWFtcyBwbGFjZWQgZW5kLXRvLWVuZC4KLUFzIHRoZSBlbmQgb2Ygb25lIHN0cmVhbSwgd2hlbgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiByZXR1cm5zCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+LCBjYWxsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvZGU+IHRvIGNvbGxlY3QKLXRoZSB1bnVzZWQgZGF0YSAoY29weSBpdCBpbnRvIHlvdXIgb3duIGJ1ZmZlciBzb21ld2hlcmUpLiAgVGhhdAotZGF0YSBmb3JtcyB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY29tcHJlc3NlZCBzdHJlYW0uICBUbyBzdGFydAotdW5jb21wcmVzc2luZyB0aGF0IG5leHQgc3RyZWFtLCBjYWxsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRPcGVuPC9jb2RlPiBhZ2FpbiwgZmVlZGluZyBpbgotdGhlIHVudXNlZCBkYXRhIHZpYSB0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij51bnVzZWQ8L2NvZGU+IC8KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+blVudXNlZDwvY29kZT4gcGFyYW1ldGVycy4gIEtlZXAgZG9pbmcKLXRoaXMgdW50aWwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPiByZXR1cm4KLWNvaW5jaWRlcyB3aXRoIHRoZSBwaHlzaWNhbCBlbmQgb2YgZmlsZQotKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmVvZihmKTwvY29kZT4pLiAgSW4gdGhpcyBzaXR1YXRpb24KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZEdldFVudXNlZDwvY29kZT4gd2lsbCBvZgotY291cnNlIHJldHVybiBubyBkYXRhLjwvcD4KLTxwPlRoaXMgc2hvdWxkIGdpdmUgc29tZSBmZWVsIGZvciBob3cgdGhlIGhpZ2gtbGV2ZWwgaW50ZXJmYWNlCi1jYW4gYmUgdXNlZC4gIElmIHlvdSByZXF1aXJlIGV4dHJhIGZsZXhpYmlsaXR5LCB5b3UnbGwgaGF2ZSB0bwotYml0ZSB0aGUgYnVsbGV0IGFuZCBnZXQgdG8gZ3JpcHMgd2l0aCB0aGUgbG93LWxldmVsCi1pbnRlcmZhY2UuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+Ci08YSBuYW1lPSJzdGQtcmR3ciI+PC9hPjMuNC45LqBTdGFuZGFyZCBmaWxlLXJlYWRpbmcvd3JpdGluZyBjb2RlPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPkhlcmUncyBob3cgeW91J2Qgd3JpdGUgZGF0YSB0byBhIGNvbXByZXNzZWQgZmlsZTo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+RklMRSogICBmOwotQlpGSUxFKiBiOwotaW50ICAgICBuQnVmOwotY2hhciAgICBidWZbIC8qIHdoYXRldmVyIHNpemUgeW91IGxpa2UgKi8gXTsKLWludCAgICAgYnplcnJvcjsKLWludCAgICAgbldyaXR0ZW47Ci0KLWYgPSBmb3BlbiAoICJteWZpbGUuYnoyIiwgInciICk7Ci1pZiAoICFmICkgewotIC8qIGhhbmRsZSBlcnJvciAqLwotfQotYiA9IEJaMl9ieldyaXRlT3BlbiggJmFtcDtiemVycm9yLCBmLCA5ICk7Ci1pZiAoYnplcnJvciAhPSBCWl9PSykgewotIEJaMl9ieldyaXRlQ2xvc2UgKCBiICk7Ci0gLyogaGFuZGxlIGVycm9yICovCi19Ci0KLXdoaWxlICggLyogY29uZGl0aW9uICovICkgewotIC8qIGdldCBkYXRhIHRvIHdyaXRlIGludG8gYnVmLCBhbmQgc2V0IG5CdWYgYXBwcm9wcmlhdGVseSAqLwotIG5Xcml0dGVuID0gQloyX2J6V3JpdGUgKCAmYW1wO2J6ZXJyb3IsIGIsIGJ1ZiwgbkJ1ZiApOwotIGlmIChiemVycm9yID09IEJaX0lPX0VSUk9SKSB7IAotICAgQloyX2J6V3JpdGVDbG9zZSAoICZhbXA7YnplcnJvciwgYiApOwotICAgLyogaGFuZGxlIGVycm9yICovCi0gfQotfQotCi1CWjJfYnpXcml0ZUNsb3NlKCAmYW1wO2J6ZXJyb3IsIGIgKTsKLWlmIChiemVycm9yID09IEJaX0lPX0VSUk9SKSB7Ci0gLyogaGFuZGxlIGVycm9yICovCi19PC9wcmU+Ci08cD5BbmQgdG8gcmVhZCBmcm9tIGEgY29tcHJlc3NlZCBmaWxlOjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5GSUxFKiAgIGY7Ci1CWkZJTEUqIGI7Ci1pbnQgICAgIG5CdWY7Ci1jaGFyICAgIGJ1ZlsgLyogd2hhdGV2ZXIgc2l6ZSB5b3UgbGlrZSAqLyBdOwotaW50ICAgICBiemVycm9yOwotaW50ICAgICBuV3JpdHRlbjsKLQotZiA9IGZvcGVuICggIm15ZmlsZS5iejIiLCAiciIgKTsKLWlmICggIWYgKSB7Ci0gIC8qIGhhbmRsZSBlcnJvciAqLwotfQotYiA9IEJaMl9ielJlYWRPcGVuICggJmFtcDtiemVycm9yLCBmLCAwLCBOVUxMLCAwICk7Ci1pZiAoIGJ6ZXJyb3IgIT0gQlpfT0sgKSB7Ci0gIEJaMl9ielJlYWRDbG9zZSAoICZhbXA7YnplcnJvciwgYiApOwotICAvKiBoYW5kbGUgZXJyb3IgKi8KLX0KLQotYnplcnJvciA9IEJaX09LOwotd2hpbGUgKCBiemVycm9yID09IEJaX09LICZhbXA7JmFtcDsgLyogYXJiaXRyYXJ5IG90aGVyIGNvbmRpdGlvbnMgKi8pIHsKLSAgbkJ1ZiA9IEJaMl9ielJlYWQgKCAmYW1wO2J6ZXJyb3IsIGIsIGJ1ZiwgLyogc2l6ZSBvZiBidWYgKi8gKTsKLSAgaWYgKCBiemVycm9yID09IEJaX09LICkgewotICAgIC8qIGRvIHNvbWV0aGluZyB3aXRoIGJ1ZlswIC4uIG5CdWYtMV0gKi8KLSAgfQotfQotaWYgKCBiemVycm9yICE9IEJaX1NUUkVBTV9FTkQgKSB7Ci0gICBCWjJfYnpSZWFkQ2xvc2UgKCAmYW1wO2J6ZXJyb3IsIGIgKTsKLSAgIC8qIGhhbmRsZSBlcnJvciAqLwotfSBlbHNlIHsKLSAgIEJaMl9ielJlYWRDbG9zZSAoICZhbXA7YnplcnJvciwgYiApOwotfTwvcHJlPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgotPGEgbmFtZT0idXRpbC1mbnMiPjwvYT4zLjUuoFV0aWxpdHkgZnVuY3Rpb25zPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KLTxhIG5hbWU9ImJ6YnVmZnRvYnVmZmNvbXByZXNzIj48L2E+My41LjEuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzcyggY2hhciogICAgICAgICBkZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBkZXN0TGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogICAgICAgICBzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgIHNvdXJjZUxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgYmxvY2tTaXplMTAwaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgdmVyYm9zaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICB3b3JrRmFjdG9yICk7PC9wcmU+Ci08cD5BdHRlbXB0cyB0byBjb21wcmVzcyB0aGUgZGF0YSBpbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNvdXJjZVswCi0uLiBzb3VyY2VMZW4tMV08L2NvZGU+IGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGVzdFswIC4uICpkZXN0TGVuLTFdPC9jb2RlPi4gIElmIHRoZQotZGVzdGluYXRpb24gYnVmZmVyIGlzIGJpZyBlbm91Z2gsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPipkZXN0TGVuPC9jb2RlPiBpcyBzZXQgdG8gdGhlIHNpemUgb2YKLXRoZSBjb21wcmVzc2VkIGRhdGEsIGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09LPC9jb2RlPgotaXMgcmV0dXJuZWQuICBJZiB0aGUgY29tcHJlc3NlZCBkYXRhIHdvbid0IGZpdCwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KmRlc3RMZW48L2NvZGU+IGlzIHVuY2hhbmdlZCwgYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09VVEJVRkZfRlVMTDwvY29kZT4gaXMKLXJldHVybmVkLjwvcD4KLTxwPkNvbXByZXNzaW9uIGluIHRoaXMgbWFubmVyIGlzIGEgb25lLXNob3QgZXZlbnQsIGRvbmUgd2l0aCBhCi1zaW5nbGUgY2FsbCB0byB0aGlzIGZ1bmN0aW9uLiAgVGhlIHJlc3VsdGluZyBjb21wcmVzc2VkIGRhdGEgaXMgYQotY29tcGxldGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0IGRhdGEKLXN0cmVhbS4gIFRoZXJlIGlzIG5vIG1lY2hhbmlzbSBmb3IgbWFraW5nIGFkZGl0aW9uYWwgY2FsbHMgdG8KLXByb3ZpZGUgZXh0cmEgaW5wdXQgZGF0YS4gIElmIHlvdSB3YW50IHRoYXQga2luZCBvZiBtZWNoYW5pc20sCi11c2UgdGhlIGxvdy1sZXZlbCBpbnRlcmZhY2UuPC9wPgotPHA+Rm9yIHRoZSBtZWFuaW5nIG9mIHBhcmFtZXRlcnMKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YmxvY2tTaXplMTAwazwvY29kZT4sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcmJvc2l0eTwvY29kZT4gYW5kCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPndvcmtGYWN0b3I8L2NvZGU+LCBzZWUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPi48L3A+Ci08cD5UbyBndWFyYW50ZWUgdGhhdCB0aGUgY29tcHJlc3NlZCBkYXRhIHdpbGwgZml0IGluIGl0cwotYnVmZmVyLCBhbGxvY2F0ZSBhbiBvdXRwdXQgYnVmZmVyIG9mIHNpemUgMSUgbGFyZ2VyIHRoYW4gdGhlCi11bmNvbXByZXNzZWQgZGF0YSwgcGx1cyBzaXggaHVuZHJlZCBleHRyYSBieXRlcy48L3A+Ci08cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPgotd2lsbCBub3Qgd3JpdGUgZGF0YSBhdCBvciBiZXlvbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGVzdFsqZGVzdExlbl08L2NvZGU+LCBldmVuIGluIGNhc2Ugb2YKLWJ1ZmZlciBvdmVyZmxvdy48L3A+Ci08cD5Qb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9DT05GSUdfRVJST1IKLSAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCi1CWl9QQVJBTV9FUlJPUgotICBpZiBkZXN0IGlzIE5VTEwgb3IgZGVzdExlbiBpcyBOVUxMCi0gIG9yIGJsb2NrU2l6ZTEwMGsgJmx0OyAxIG9yIGJsb2NrU2l6ZTEwMGsgJmd0OyA5Ci0gIG9yIHZlcmJvc2l0eSAmbHQ7IDAgb3IgdmVyYm9zaXR5ICZndDsgNAotICBvciB3b3JrRmFjdG9yICZsdDsgMCBvciB3b3JrRmFjdG9yICZndDsgMjUwCi1CWl9NRU1fRVJST1IKLSAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSBpcyBhdmFpbGFibGUgCi1CWl9PVVRCVUZGX0ZVTEwKLSAgaWYgdGhlIHNpemUgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBleGNlZWRzICpkZXN0TGVuCi1CWl9PSwotICBvdGhlcndpc2U8L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgotPGEgbmFtZT0iYnpidWZmdG9idWZmZGVjb21wcmVzcyI+PC9hPjMuNS4yLqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzKCBjaGFyKiAgICAgICAgIGRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogZGVzdExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogICAgICAgICBzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAgc291cmNlTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgIHNtYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgIHZlcmJvc2l0eSApOzwvcHJlPgotPHA+QXR0ZW1wdHMgdG8gZGVjb21wcmVzcyB0aGUgZGF0YSBpbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNvdXJjZVswCi0uLiBzb3VyY2VMZW4tMV08L2NvZGU+IGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGVzdFswIC4uICpkZXN0TGVuLTFdPC9jb2RlPi4gIElmIHRoZQotZGVzdGluYXRpb24gYnVmZmVyIGlzIGJpZyBlbm91Z2gsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPipkZXN0TGVuPC9jb2RlPiBpcyBzZXQgdG8gdGhlIHNpemUgb2YKLXRoZSB1bmNvbXByZXNzZWQgZGF0YSwgYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT0s8L2NvZGU+Ci1pcyByZXR1cm5lZC4gIElmIHRoZSBjb21wcmVzc2VkIGRhdGEgd29uJ3QgZml0LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qZGVzdExlbjwvY29kZT4gaXMgdW5jaGFuZ2VkLCBhbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT1VUQlVGRl9GVUxMPC9jb2RlPiBpcwotcmV0dXJuZWQuPC9wPgotPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zb3VyY2U8L2NvZGU+IGlzIGFzc3VtZWQgdG8gaG9sZAotYSBjb21wbGV0ZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBmb3JtYXQgZGF0YQotc3RyZWFtLgotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29kZT4gdHJpZXMKLXRvIGRlY29tcHJlc3MgdGhlIGVudGlyZXR5IG9mIHRoZSBzdHJlYW0gaW50byB0aGUgb3V0cHV0Ci1idWZmZXIuPC9wPgotPHA+Rm9yIHRoZSBtZWFuaW5nIG9mIHBhcmFtZXRlcnMKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c21hbGw8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52ZXJib3NpdHk8L2NvZGU+LCBzZWUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvZGU+LjwvcD4KLTxwPkJlY2F1c2UgdGhlIGNvbXByZXNzaW9uIHJhdGlvIG9mIHRoZSBjb21wcmVzc2VkIGRhdGEgY2Fubm90Ci1iZSBrbm93biBpbiBhZHZhbmNlLCB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBndWFyYW50ZWUgdGhhdCB0aGUKLW91dHB1dCBidWZmZXIgd2lsbCBiZSBiaWcgZW5vdWdoLiAgWW91IG1heSBvZiBjb3Vyc2UgbWFrZQotYXJyYW5nZW1lbnRzIGluIHlvdXIgY29kZSB0byByZWNvcmQgdGhlIHNpemUgb2YgdGhlIHVuY29tcHJlc3NlZAotZGF0YSwgYnV0IHN1Y2ggYSBtZWNoYW5pc20gaXMgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzCi1saWJyYXJ5LjwvcD4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+Ci13aWxsIG5vdCB3cml0ZSBkYXRhIGF0IG9yIGJleW9uZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5kZXN0WypkZXN0TGVuXTwvY29kZT4sIGV2ZW4gaW4gY2FzZSBvZgotYnVmZmVyIG92ZXJmbG93LjwvcD4KLTxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX0NPTkZJR19FUlJPUgotICBpZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBtaXMtY29tcGlsZWQKLUJaX1BBUkFNX0VSUk9SCi0gIGlmIGRlc3QgaXMgTlVMTCBvciBkZXN0TGVuIGlzIE5VTEwKLSAgb3Igc21hbGwgIT0gMCAmYW1wOyZhbXA7IHNtYWxsICE9IDEKLSAgb3IgdmVyYm9zaXR5ICZsdDsgMCBvciB2ZXJib3NpdHkgJmd0OyA0Ci1CWl9NRU1fRVJST1IKLSAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSBpcyBhdmFpbGFibGUgCi1CWl9PVVRCVUZGX0ZVTEwKLSAgaWYgdGhlIHNpemUgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBleGNlZWRzICpkZXN0TGVuCi1CWl9EQVRBX0VSUk9SCi0gIGlmIGEgZGF0YSBpbnRlZ3JpdHkgZXJyb3Igd2FzIGRldGVjdGVkIGluIHRoZSBjb21wcmVzc2VkIGRhdGEKLUJaX0RBVEFfRVJST1JfTUFHSUMKLSAgaWYgdGhlIGNvbXByZXNzZWQgZGF0YSBkb2Vzbid0IGJlZ2luIHdpdGggdGhlIHJpZ2h0IG1hZ2ljIGJ5dGVzCi1CWl9VTkVYUEVDVEVEX0VPRgotICBpZiB0aGUgY29tcHJlc3NlZCBkYXRhIGVuZHMgdW5leHBlY3RlZGx5Ci1CWl9PSwotICBvdGhlcndpc2U8L3ByZT4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KLTxhIG5hbWU9InpsaWItY29tcGF0Ij48L2E+My42LqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWI8L2NvZGU+IGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPllvc2hpb2thIFRzdW5lbyBoYXMgY29udHJpYnV0ZWQgc29tZSBmdW5jdGlvbnMgdG8gZ2l2ZQotYmV0dGVyIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+emxpYjwvY29kZT4gY29tcGF0aWJpbGl0eS4KLVRoZXNlIGZ1bmN0aW9ucyBhcmUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpvcGVuPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6cmVhZDwvY29kZT4sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iendyaXRlPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Zmx1c2g8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpjbG9zZTwvY29kZT4sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemVycm9yPC9jb2RlPiBhbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6bGliVmVyc2lvbjwvY29kZT4uICBUaGVzZQotZnVuY3Rpb25zIGFyZSBub3QgKHlldCkgb2ZmaWNpYWxseSBwYXJ0IG9mIHRoZSBsaWJyYXJ5LiAgSWYgdGhleQotYnJlYWssIHlvdSBnZXQgdG8ga2VlcCBhbGwgdGhlIHBpZWNlcy4gIE5ldmVydGhlbGVzcywgSSB0aGluawotdGhleSB3b3JrIG9rLjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHZvaWQgQlpGSUxFOwotCi1jb25zdCBjaGFyICogQloyX2J6bGliVmVyc2lvbiAoIHZvaWQgKTs8L3ByZT4KLTxwPlJldHVybnMgYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgbGlicmFyeSB2ZXJzaW9uLjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWkZJTEUgKiBCWjJfYnpvcGVuICAoIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUgKTsKLUJaRklMRSAqIEJaMl9iemRvcGVuICggaW50ICAgICAgICBmZCwgICAgY29uc3QgY2hhciAqbW9kZSApOzwvcHJlPgotPHA+T3BlbnMgYSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5iejI8L2NvZGU+IGZpbGUgZm9yCi1yZWFkaW5nIG9yIHdyaXRpbmcsIHVzaW5nIGVpdGhlciBpdHMgbmFtZSBvciBhIHByZS1leGlzdGluZyBmaWxlCi1kZXNjcmlwdG9yLiAgQW5hbG9nb3VzIHRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Zm9wZW48L2NvZGU+Ci1hbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZG9wZW48L2NvZGU+LjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6cmVhZCAgKCBCWkZJTEUqIGIsIHZvaWQqIGJ1ZiwgaW50IGxlbiApOwotaW50IEJaMl9iendyaXRlICggQlpGSUxFKiBiLCB2b2lkKiBidWYsIGludCBsZW4gKTs8L3ByZT4KLTxwPlJlYWRzL3dyaXRlcyBkYXRhIGZyb20vdG8gYSBwcmV2aW91c2x5IG9wZW5lZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWkZJTEU8L2NvZGU+LiAgQW5hbG9nb3VzIHRvCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZyZWFkPC9jb2RlPiBhbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZndyaXRlPC9jb2RlPi48L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50ICBCWjJfYnpmbHVzaCAoIEJaRklMRSogYiApOwotdm9pZCBCWjJfYnpjbG9zZSAoIEJaRklMRSogYiApOzwvcHJlPgotPHA+Rmx1c2hlcy9jbG9zZXMgYSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaRklMRTwvY29kZT4uCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemZsdXNoPC9jb2RlPiBkb2Vzbid0IGFjdHVhbGx5IGRvCi1hbnl0aGluZy4gIEFuYWxvZ291cyB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZmbHVzaDwvY29kZT4KLWFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZjbG9zZTwvY29kZT4uPC9wPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IGNoYXIgKiBCWjJfYnplcnJvciAoIEJaRklMRSAqYiwgaW50ICplcnJudW0gKTwvcHJlPgotPHA+UmV0dXJucyBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBtb3JlIHJlY2VudCBlcnJvciBzdGF0dXMgb2YKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YjwvY29kZT4sIGFuZCBhbHNvIHNldHMKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KmVycm51bTwvY29kZT4gdG8gaXRzIG51bWVyaWNhbAotdmFsdWUuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KLTxhIG5hbWU9InN0ZGlvLWZyZWUiPjwvYT4zLjcuoFVzaW5nIHRoZSBsaWJyYXJ5IGluIGEgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGRpbzwvY29kZT4tZnJlZSBlbnZpcm9ubWVudDwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Ci08ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgotPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+Ci08YSBuYW1lPSJzdGRpby1ieWUiPjwvYT4zLjcuMS6gR2V0dGluZyByaWQgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGRpbzwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2PgotPHA+SW4gYSBkZWVwbHkgZW1iZWRkZWQgYXBwbGljYXRpb24sIHlvdSBtaWdodCB3YW50IHRvIHVzZQotanVzdCB0aGUgbWVtb3J5LXRvLW1lbW9yeSBmdW5jdGlvbnMuICBZb3UgY2FuIGRvIHRoaXMKLWNvbnZlbmllbnRseSBieSBjb21waWxpbmcgdGhlIGxpYnJhcnkgd2l0aCBwcmVwcm9jZXNzb3Igc3ltYm9sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX05PX1NURElPPC9jb2RlPiBkZWZpbmVkLiAgRG9pbmcgdGhpcwotZ2l2ZXMgeW91IGEgbGlicmFyeSBjb250YWluaW5nIG9ubHkgdGhlIGZvbGxvd2luZyBlaWdodAotZnVuY3Rpb25zOjwvcD4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0VuZDwvY29kZT4KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0VuZDwvY29kZT4KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+PC9wPgotPHA+V2hlbiBjb21waWxlZCBsaWtlIHRoaXMsIGFsbCBmdW5jdGlvbnMgd2lsbCBpZ25vcmUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dmVyYm9zaXR5PC9jb2RlPiBzZXR0aW5ncy48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KLTxhIG5hbWU9ImNyaXRpY2FsLWVycm9yIj48L2E+My43LjIuoENyaXRpY2FsIGVycm9yIGhhbmRsaW5nPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+IGNvbnRhaW5zIGEgbnVtYmVyCi1vZiBpbnRlcm5hbCBhc3NlcnRpb24gY2hlY2tzIHdoaWNoIHNob3VsZCwgbmVlZGxlc3MgdG8gc2F5LCBuZXZlcgotYmUgYWN0aXZhdGVkLiAgTmV2ZXJ0aGVsZXNzLCBpZiBhbiBhc3NlcnRpb24gc2hvdWxkIGZhaWwsCi1iZWhhdmlvdXIgZGVwZW5kcyBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgbGlicmFyeSB3YXMgY29tcGlsZWQgd2l0aAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9OT19TVERJTzwvY29kZT4gc2V0LjwvcD4KLTxwPkZvciBhIG5vcm1hbCBjb21waWxlLCBhbiBhc3NlcnRpb24gZmFpbHVyZSB5aWVsZHMgdGhlCi1tZXNzYWdlOjwvcD4KLTxkaXYgY2xhc3M9ImJsb2NrcXVvdGUiPjxibG9ja3F1b3RlIGNsYXNzPSJibG9ja3F1b3RlIj4KLTxwPmJ6aXAyL2xpYmJ6aXAyOiBpbnRlcm5hbCBlcnJvciBudW1iZXIgTi48L3A+Ci08cD5UaGlzIGlzIGEgYnVnIGluIGJ6aXAyL2xpYmJ6aXAyLCAxLjAuNSBvZiAxMCBEZWNlbWJlciAyMDA3LgotUGxlYXNlIHJlcG9ydCBpdCB0byBtZSBhdDoganNld2FyZEBiemlwLm9yZy4gIElmIHRoaXMgaGFwcGVuZWQKLXdoZW4geW91IHdlcmUgdXNpbmcgc29tZSBwcm9ncmFtIHdoaWNoIHVzZXMgbGliYnppcDIgYXMgYQotY29tcG9uZW50LCB5b3Ugc2hvdWxkIGFsc28gcmVwb3J0IHRoaXMgYnVnIHRvIHRoZSBhdXRob3IocykKLW9mIHRoYXQgcHJvZ3JhbS4gIFBsZWFzZSBtYWtlIGFuIGVmZm9ydCB0byByZXBvcnQgdGhpcyBidWc7Ci10aW1lbHkgYW5kIGFjY3VyYXRlIGJ1ZyByZXBvcnRzIGV2ZW50dWFsbHkgbGVhZCB0byBoaWdoZXIKLXF1YWxpdHkgc29mdHdhcmUuICBUaGFua3MuICBKdWxpYW4gU2V3YXJkLCAxMCBEZWNlbWJlciAyMDA3LgotPC9wPgotPC9ibG9ja3F1b3RlPjwvZGl2PgotPHA+d2hlcmUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5OPC9jb2RlPiBpcyBzb21lIGVycm9yIGNvZGUKLW51bWJlci4gIElmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+TiA9PSAxMDA3PC9jb2RlPiwgaXQgYWxzbwotcHJpbnRzIHNvbWUgZXh0cmEgdGV4dCBhZHZpc2luZyB0aGUgcmVhZGVyIHRoYXQgdW5yZWxpYWJsZSBtZW1vcnkKLWlzIG9mdGVuIGFzc29jaWF0ZWQgd2l0aCBpbnRlcm5hbCBlcnJvciAxMDA3LiAoVGhpcyBpcyBhCi1mcmVxdWVudGx5LW9ic2VydmVkLXBoZW5vbWVub24gd2l0aCB2ZXJzaW9ucyAxLjAuMC8xLjAuMSkuPC9wPgotPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5leGl0KDMpPC9jb2RlPiBpcyB0aGVuCi1jYWxsZWQuPC9wPgotPHA+Rm9yIGEgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGRpbzwvY29kZT4tZnJlZSBsaWJyYXJ5LAotYXNzZXJ0aW9uIGZhaWx1cmVzIHJlc3VsdCBpbiBhIGNhbGwgdG8gYSBmdW5jdGlvbiBkZWNsYXJlZAotYXM6PC9wPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmV4dGVybiB2b2lkIGJ6X2ludGVybmFsX2Vycm9yICggaW50IGVycmNvZGUgKTs8L3ByZT4KLTxwPlRoZSByZWxldmFudCBjb2RlIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlci4gIFlvdSBzaG91bGQKLXN1cHBseSBzdWNoIGEgZnVuY3Rpb24uPC9wPgotPHA+SW4gZWl0aGVyIGNhc2UsIG9uY2UgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaGFzIG9jY3VycmVkLCBhbnkKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Ynpfc3RyZWFtPC9jb2RlPiByZWNvcmRzIGludm9sdmVkIGNhbgotYmUgcmVnYXJkZWQgYXMgaW52YWxpZC4gIFlvdSBzaG91bGQgbm90IGF0dGVtcHQgdG8gcmVzdW1lIG5vcm1hbAotb3BlcmF0aW9uIHdpdGggdGhlbS48L3A+Ci08cD5Zb3UgbWF5LCBvZiBjb3Vyc2UsIGNoYW5nZSBjcml0aWNhbCBlcnJvciBoYW5kbGluZyB0byBzdWl0Ci15b3VyIG5lZWRzLiAgQXMgSSBzYWlkIGFib3ZlLCBjcml0aWNhbCBlcnJvcnMgaW5kaWNhdGUgYnVncyBpbgotdGhlIGxpYnJhcnkgYW5kIHNob3VsZCBub3Qgb2NjdXIuICBBbGwgIm5vcm1hbCIgZXJyb3Igc2l0dWF0aW9ucwotYXJlIGluZGljYXRlZCB2aWEgZXJyb3IgcmV0dXJuIGNvZGVzIGZyb20gZnVuY3Rpb25zLCBhbmQgY2FuIGJlCi1yZWNvdmVyZWQgZnJvbS48L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+Ci08YSBuYW1lPSJ3aW4tZGxsIj48L2E+My44LqBNYWtpbmcgYSBXaW5kb3dzIERMTDwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cD5FdmVyeXRoaW5nIHJlbGF0ZWQgdG8gV2luZG93cyBoYXMgYmVlbiBjb250cmlidXRlZCBieQotWW9zaGlva2EgVHN1bmVvCi0oPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50c3VuZW9AcnIuaWlqNHUub3IuanA8L2NvZGU+KSwgc28KLXlvdSBzaG91bGQgc2VuZCB5b3VyIHF1ZXJpZXMgdG8gaGltIChidXQgcGVyaGFwcyBDYzogbWUsCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmpzZXdhcmRAYnppcC5vcmc8L2NvZGU+KS48L3A+Ci08cD5NeSB2YWd1ZSB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdG8gZG8gaXM6IHVzaW5nIFZpc3VhbCBDKysKLTUuMCwgb3BlbiB0aGUgcHJvamVjdCBmaWxlCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6Mi5kc3A8L2NvZGU+LCBhbmQgYnVpbGQuICBUaGF0J3MKLWFsbC48L3A+Ci08cD5JZiB5b3UgY2FuJ3Qgb3BlbiB0aGUgcHJvamVjdCBmaWxlIGZvciBzb21lIHJlYXNvbiwgbWFrZSBhCi1uZXcgb25lLCBuYW1pbmcgdGhlc2UgZmlsZXM6Ci08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJsb2Nrc29ydC5jPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpsaWIuYzwvY29kZT4sCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmNvbXByZXNzLmM8L2NvZGU+LAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5jcmN0YWJsZS5jPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGVjb21wcmVzcy5jPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+aHVmZm1hbi5jPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+cmFuZHRhYmxlLmM8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiejIuZGVmPC9jb2RlPi4gIFlvdSB3aWxsIGFsc28gbmVlZAotdG8gbmFtZSB0aGUgaGVhZGVyIGZpbGVzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpsaWIuaDwvY29kZT4KLWFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6bGliX3ByaXZhdGUuaDwvY29kZT4uPC9wPgotPHA+SWYgeW91IGRvbid0IHVzZSBWQysrLCB5b3UgbWF5IG5lZWQgdG8gZGVmaW5lIHRoZQotcHJvcHJvY2Vzc29yIHN5bWJvbAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5fV0lOMzI8L2NvZGU+LjwvcD4KLTxwPkZpbmFsbHksIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGxsdGVzdC5jPC9jb2RlPiBpcyBhCi1zYW1wbGUgcHJvZ3JhbSB1c2luZyB0aGUgRExMLiAgSXQgaGFzIGEgcHJvamVjdCBmaWxlLAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5kbGx0ZXN0LmRzcDwvY29kZT4uPC9wPgotPHA+SWYgeW91IGp1c3Qgd2FudCBhIG1ha2VmaWxlIGZvciBWaXN1YWwgQywgaGF2ZSBhIGxvb2sgYXQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bWFrZWZpbGUubXNjPC9jb2RlPi48L3A+Ci08cD5CZSBhd2FyZSB0aGF0IGlmIHlvdSBjb21waWxlCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBpdHNlbGYgb24gV2luMzIsIHlvdSBtdXN0Ci1zZXQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9VTklYPC9jb2RlPiB0byAwIGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9MQ0NXSU4zMjwvY29kZT4gdG8gMSwgaW4gdGhlIGZpbGUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIuYzwvY29kZT4sIGJlZm9yZSBjb21waWxpbmcuCi1PdGhlcndpc2UgdGhlIHJlc3VsdGluZyBiaW5hcnkgd29uJ3Qgd29yayBjb3JyZWN0bHkuPC9wPgotPHA+SSBoYXZlbid0IHRyaWVkIGFueSBvZiB0aGlzIHN0dWZmIG15c2VsZiwgYnV0IGl0IGFsbCBsb29rcwotcGxhdXNpYmxlLjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJjaGFwdGVyIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIj4KLTxhIG5hbWU9Im1pc2MiPjwvYT40LqBNaXNjZWxsYW5lYTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Ci08ZGl2IGNsYXNzPSJ0b2MiPgotPHA+PGI+VGFibGUgb2YgQ29udGVudHM8L2I+PC9wPgotPGRsPgotPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2xpbWl0cyI+NC4xLiBMaW1pdGF0aW9ucyBvZiB0aGUgY29tcHJlc3NlZCBmaWxlIGZvcm1hdDwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNwb3J0LWlzc3VlcyI+NC4yLiBQb3J0YWJpbGl0eSBpc3N1ZXM8L2E+PC9zcGFuPjwvZHQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjYnVncyI+NC4zLiBSZXBvcnRpbmcgYnVnczwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNwYWNrYWdlIj40LjQuIERpZCB5b3UgZ2V0IHRoZSByaWdodCBwYWNrYWdlPzwvYT48L3NwYW4+PC9kdD4KLTxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNyZWFkaW5nIj40LjUuIEZ1cnRoZXIgUmVhZGluZzwvYT48L3NwYW4+PC9kdD4KLTwvZGw+Ci08L2Rpdj4KLTxwPlRoZXNlIGFyZSBqdXN0IHNvbWUgcmFuZG9tIHRob3VnaHRzIG9mIG1pbmUuICBZb3VyIG1pbGVhZ2UKLW1heSB2YXJ5LjwvcD4KLTxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgotPGEgbmFtZT0ibGltaXRzIj48L2E+NC4xLqBMaW1pdGF0aW9ucyBvZiB0aGUgY29tcHJlc3NlZCBmaWxlIGZvcm1hdDwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLTEuMC5YPC9jb2RlPiwKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+MC45LjU8L2NvZGU+IGFuZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4wLjkuMDwvY29kZT4gdXNlIGV4YWN0bHkgdGhlIHNhbWUgZmlsZQotZm9ybWF0IGFzIHRoZSBvcmlnaW5hbCB2ZXJzaW9uLAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMi0wLjE8L2NvZGU+LiAgVGhpcyBkZWNpc2lvbiB3YXMKLW1hZGUgaW4gdGhlIGludGVyZXN0cyBvZiBzdGFiaWxpdHkuICBDcmVhdGluZyB5ZXQgYW5vdGhlcgotaW5jb21wYXRpYmxlIGNvbXByZXNzZWQgZmlsZSBmb3JtYXQgd291bGQgY3JlYXRlIGZ1cnRoZXIKLWNvbmZ1c2lvbiBhbmQgZGlzcnVwdGlvbiBmb3IgdXNlcnMuPC9wPgotPHA+TmV2ZXJ0aGVsZXNzLCB0aGlzIGlzIG5vdCBhIHBhaW5sZXNzIGRlY2lzaW9uLiAgRGV2ZWxvcG1lbnQKLXdvcmsgc2luY2UgdGhlIHJlbGVhc2Ugb2YKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDItMC4xPC9jb2RlPiBpbiBBdWd1c3QgMTk5NyBoYXMKLXNob3duIGNvbXBsZXhpdGllcyBpbiB0aGUgZmlsZSBmb3JtYXQgd2hpY2ggc2xvdyBkb3duCi1kZWNvbXByZXNzaW9uIGFuZCwgaW4gcmV0cm9zcGVjdCwgYXJlIHVubmVjZXNzYXJ5LiAgVGhlc2UKLWFyZTo8L3A+Ci08ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJidWxsZXQiPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPlRoZSBydW4tbGVuZ3RoIGVuY29kZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCBvZiB0aGUKLSAgIGNvbXByZXNzaW9uIHRyYW5zZm9ybWF0aW9ucywgaXMgZW50aXJlbHkgaXJyZWxldmFudC4gIFRoZQotICAgb3JpZ2luYWwgcHVycG9zZSB3YXMgdG8gcHJvdGVjdCB0aGUgc29ydGluZyBhbGdvcml0aG0gZnJvbSB0aGUKLSAgIHZlcnkgd29yc3QgY2FzZSBpbnB1dDogYSBzdHJpbmcgb2YgcmVwZWF0ZWQgc3ltYm9scy4gIEJ1dAotICAgYWxnb3JpdGhtIHN0ZXBzIFE2YSBhbmQgUTZiIGluIHRoZSBvcmlnaW5hbCBCdXJyb3dzLVdoZWVsZXIKLSAgIHRlY2huaWNhbCByZXBvcnQgKFNSQy0xMjQpIHNob3cgaG93IHJlcGVhdHMgY2FuIGJlIGhhbmRsZWQKLSAgIHdpdGhvdXQgZGlmZmljdWx0eSBpbiBibG9jayBzb3J0aW5nLjwvcD48L2xpPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgotPHA+VGhlIHJhbmRvbWlzYXRpb24gbWVjaGFuaXNtIGRvZXNuJ3QgcmVhbGx5IG5lZWQgdG8gYmUKLSAgIHRoZXJlLiAgVWRpIE1hbmJlciBhbmQgR2VuZSBNeWVycyBwdWJsaXNoZWQgYSBzdWZmaXggYXJyYXkKLSAgIGNvbnN0cnVjdGlvbiBhbGdvcml0aG0gYSBmZXcgeWVhcnMgYmFjaywgd2hpY2ggY2FuIGJlIGVtcGxveWVkCi0gICB0byBzb3J0IGFueSBibG9jaywgbm8gbWF0dGVyIGhvdyByZXBldGl0aXZlLCBpbiBPKE4gbG9nIE4pCi0gICB0aW1lLiAgU3Vic2VxdWVudCB3b3JrIGJ5IEt1bmloaWtvIFNhZGFrYW5lIGhhcyBwcm9kdWNlZCBhCi0gICBkZXJpdmF0aXZlIE8oTiAobG9nIE4pXjIpIGFsZ29yaXRobSB3aGljaCB1c3VhbGx5IG91dHBlcmZvcm1zCi0gICB0aGUgTWFuYmVyLU15ZXJzIGFsZ29yaXRobS48L3A+Ci08cD5JIGNvdWxkIGhhdmUgY2hhbmdlZCB0byBTYWRha2FuZSdzIGFsZ29yaXRobSwgYnV0IEkgZmluZAotICAgaXQgdG8gYmUgc2xvd2VyIHRoYW4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4ncwotICAgZXhpc3RpbmcgYWxnb3JpdGhtIGZvciBtb3N0IGlucHV0cywgYW5kIHRoZSByYW5kb21pc2F0aW9uCi0gICBtZWNoYW5pc20gcHJvdGVjdHMgYWRlcXVhdGVseSBhZ2FpbnN0IGJhZCBjYXNlcy4gIEkgZGlkbid0Ci0gICB0aGluayBpdCB3YXMgYSBnb29kIHRyYWRlb2ZmIHRvIG1ha2UuICBQYXJ0bHkgdGhpcyBpcyBkdWUgdG8KLSAgIHRoZSBmYWN0IHRoYXQgSSB3YXMgbm90IGZsb29kZWQgd2l0aCBlbWFpbCBjb21wbGFpbnRzIGFib3V0Ci0gICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLTAuMTwvY29kZT4ncyBwZXJmb3JtYW5jZSBvbgotICAgcmVwZXRpdGl2ZSBkYXRhLCBzbyBwZXJoYXBzIGl0IGlzbid0IGEgcHJvYmxlbSBmb3IgcmVhbAotICAgaW5wdXRzLjwvcD4KLTxwPlByb2JhYmx5IHRoZSBiZXN0IGxvbmctdGVybSBzb2x1dGlvbiwgYW5kIHRoZSBvbmUgSSBoYXZlCi0gICBpbmNvcnBvcmF0ZWQgaW50byAwLjkuNSBhbmQgYWJvdmUsIGlzIHRvIHVzZSB0aGUgZXhpc3RpbmcKLSAgIHNvcnRpbmcgYWxnb3JpdGhtIGluaXRpYWxseSwgYW5kIGZhbGwgYmFjayB0byBhIE8oTiAobG9nIE4pXjIpCi0gICBhbGdvcml0aG0gaWYgdGhlIHN0YW5kYXJkIGFsZ29yaXRobSBnZXRzIGludG8KLSAgIGRpZmZpY3VsdGllcy48L3A+Ci08L2xpPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPlRoZSBjb21wcmVzc2VkIGZpbGUgZm9ybWF0IHdhcyBuZXZlciBkZXNpZ25lZCB0byBiZQotICAgaGFuZGxlZCBieSBhIGxpYnJhcnksIGFuZCBJIGhhdmUgaGFkIHRvIGp1bXAgdGhvdWdoIHNvbWUgaG9vcHMKLSAgIHRvIHByb2R1Y2UgYW4gZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIGRlY29tcHJlc3Npb24uICBJdCdzCi0gICBhIGJpdCBoYWlyeS4gIFRyeSBwYXNzaW5nCi0gICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmRlY29tcHJlc3MuYzwvY29kZT4gdGhyb3VnaCB0aGUgQwotICAgcHJlcHJvY2Vzc29yIGFuZCB5b3UnbGwgc2VlIHdoYXQgSSBtZWFuLiAgTXVjaCBvZiB0aGlzCi0gICBjb21wbGV4aXR5IGNvdWxkIGhhdmUgYmVlbiBhdm9pZGVkIGlmIHRoZSBjb21wcmVzc2VkIHNpemUgb2YKLSAgIGVhY2ggYmxvY2sgb2YgZGF0YSB3YXMgcmVjb3JkZWQgaW4gdGhlIGRhdGEgc3RyZWFtLjwvcD48L2xpPgotPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPkFuIEFkbGVyLTMyIGNoZWNrc3VtLCByYXRoZXIgdGhhbiBhIENSQzMyIGNoZWNrc3VtLAotICAgd291bGQgYmUgZmFzdGVyIHRvIGNvbXB1dGUuPC9wPjwvbGk+Ci08L3VsPjwvZGl2PgotPHA+SXQgd291bGQgYmUgZmFpciB0byBzYXkgdGhhdCB0aGUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGZvcm1hdCB3YXMgZnJvemVuIGJlZm9yZSBJCi1wcm9wZXJseSBhbmQgZnVsbHkgdW5kZXJzdG9vZCB0aGUgcGVyZm9ybWFuY2UgY29uc2VxdWVuY2VzIG9mCi1kb2luZyBzby48L3A+Ci08cD5JbXByb3ZlbWVudHMgd2hpY2ggSSB3YXMgYWJsZSB0byBpbmNvcnBvcmF0ZSBpbnRvIDAuOS4wLAotZGVzcGl0ZSB1c2luZyB0aGUgc2FtZSBmaWxlIGZvcm1hdCwgYXJlOjwvcD4KLTxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImJ1bGxldCI+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+U2luZ2xlIGFycmF5IGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnZlcnNlIEJXVC4gIFRoaXMKLSAgc2lnbmlmaWNhbnRseSBzcGVlZHMgdXAgZGVjb21wcmVzc2lvbiwgcHJlc3VtYWJseSBiZWNhdXNlIGl0Ci0gIHJlZHVjZXMgdGhlIG51bWJlciBvZiBjYWNoZSBtaXNzZXMuPC9wPjwvbGk+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+RmFzdGVyIGludmVyc2UgTVRGIHRyYW5zZm9ybSBmb3IgbGFyZ2UgTVRGIHZhbHVlcy4KLSAgVGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiB0aGUgbm90aW9uIG9mIHNsaWRpbmcgYmxvY2tzCi0gIG9mIHZhbHVlcy48L3A+PC9saT4KLTxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLTAuOS4wPC9jb2RlPiBub3cgcmVhZHMKLSAgYW5kIHdyaXRlcyBmaWxlcyB3aXRoIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZnJlYWQ8L2NvZGU+Ci0gIGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZ3cml0ZTwvY29kZT47IHZlcnNpb24gMC4xIHVzZWQKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5wdXRjPC9jb2RlPiBhbmQKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5nZXRjPC9jb2RlPi4gIER1aCEgIFdlbGwsIHlvdSBsaXZlCi0gIGFuZCBsZWFybi48L3A+PC9saT4KLTwvdWw+PC9kaXY+Ci08cD5GdXJ0aGVyIGFoZWFkLCBpdCB3b3VsZCBiZSBuaWNlIHRvIGJlIGFibGUgdG8gZG8gcmFuZG9tCi1hY2Nlc3MgaW50byBmaWxlcy4gIFRoaXMgd2lsbCByZXF1aXJlIHNvbWUgY2FyZWZ1bCBkZXNpZ24gb2YKLWNvbXByZXNzZWQgZmlsZSBmb3JtYXRzLjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+Ci08YSBuYW1lPSJwb3J0LWlzc3VlcyI+PC9hPjQuMi6gUG9ydGFiaWxpdHkgaXNzdWVzPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPkFmdGVyIHNvbWUgY29uc2lkZXJhdGlvbiwgSSBoYXZlIGRlY2lkZWQgbm90IHRvIHVzZSBHTlUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXV0b2NvbmY8L2NvZGU+IHRvIGNvbmZpZ3VyZSAwLjkuNSBvcgotMS4wLjwvcD4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXV0b2NvbmY8L2NvZGU+LCBhZG1pcmFibGUgYW5kCi13b25kZXJmdWwgdGhvdWdoIGl0IGlzLCBtYWlubHkgYXNzaXN0cyB3aXRoIHBvcnRhYmlsaXR5IHByb2JsZW1zCi1iZXR3ZWVuIFVuaXgtbGlrZSBwbGF0Zm9ybXMuICBCdXQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGRvZXNuJ3QgaGF2ZSBtdWNoIGluIHRoZQotd2F5IG9mIHBvcnRhYmlsaXR5IHByb2JsZW1zIG9uIFVuaXg7IG1vc3Qgb2YgdGhlIGRpZmZpY3VsdGllcwotYXBwZWFyIHdoZW4gcG9ydGluZyB0byB0aGUgTWFjLCBvciB0byBNaWNyb3NvZnQncyBvcGVyYXRpbmcKLXN5c3RlbXMuICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF1dG9jb25mPC9jb2RlPiBkb2Vzbid0IGhlbHAKLWluIHRob3NlIGNhc2VzLCBhbmQgYnJpbmdzIGluIGEgd2hvbGUgbG9hZCBvZiBuZXcKLWNvbXBsZXhpdHkuPC9wPgotPHA+TW9zdCBwZW9wbGUgc2hvdWxkIGJlIGFibGUgdG8gY29tcGlsZSB0aGUgbGlicmFyeSBhbmQKLXByb2dyYW0gdW5kZXIgVW5peCBzdHJhaWdodCBvdXQtb2YtdGhlLWJveCwgc28gdG8gc3BlYWssCi1lc3BlY2lhbGx5IGlmIHlvdSBoYXZlIGEgdmVyc2lvbiBvZiBHTlUgQyBhdmFpbGFibGUuPC9wPgotPHA+VGhlcmUgYXJlIGEgY291cGxlIG9mCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPl9faW5saW5lX188L2NvZGU+IGRpcmVjdGl2ZXMgaW4gdGhlCi1jb2RlLiAgR05VIEMgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Z2NjPC9jb2RlPikgc2hvdWxkIGJlCi1hYmxlIHRvIGhhbmRsZSB0aGVtLiAgSWYgeW91J3JlIG5vdCB1c2luZyBHTlUgQywgeW91ciBDIGNvbXBpbGVyCi1zaG91bGRuJ3Qgc2VlIHRoZW0gYXQgYWxsLiAgSWYgeW91ciBjb21waWxlciBkb2VzLCBmb3Igc29tZQotcmVhc29uLCBzZWUgdGhlbSBhbmQgZG9lc24ndCBsaWtlIHRoZW0sIGp1c3QKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+I2RlZmluZTwvY29kZT4KLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+X19pbmxpbmVfXzwvY29kZT4gdG8gYmUKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LyogKi88L2NvZGU+LiAgT25lIGVhc3kgd2F5IHRvIGRvIHRoaXMKLWlzIHRvIGNvbXBpbGUgd2l0aCB0aGUgZmxhZwotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tRF9faW5saW5lX189PC9jb2RlPiwgd2hpY2ggc2hvdWxkIGJlCi11bmRlcnN0b29kIGJ5IG1vc3QgVW5peCBjb21waWxlcnMuPC9wPgotPHA+SWYgeW91IHN0aWxsIGhhdmUgZGlmZmljdWx0aWVzLCB0cnkgY29tcGlsaW5nIHdpdGggdGhlCi1tYWNybyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUklDVF9BTlNJPC9jb2RlPiBkZWZpbmVkLgotVGhpcyBzaG91bGQgZW5hYmxlIHlvdSB0byBidWlsZCB0aGUgbGlicmFyeSBpbiBhIHN0cmljdGx5IEFOU0kKLWNvbXBsaWFudCBlbnZpcm9ubWVudC4gIEJ1aWxkaW5nIHRoZSBwcm9ncmFtIGl0c2VsZiBsaWtlIHRoaXMgaXMKLWRhbmdlcm91cyBhbmQgbm90IHN1cHBvcnRlZCwgc2luY2UgeW91IHJlbW92ZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4ncyBjaGVja3MgYWdhaW5zdAotY29tcHJlc3NpbmcgZGlyZWN0b3JpZXMsIHN5bWJvbGljIGxpbmtzLCBkZXZpY2VzLCBhbmQgb3RoZXIKLW5vdC1yZWFsbHktYS1maWxlIGVudGl0aWVzLiAgVGhpcyBjb3VsZCBjYXVzZSBmaWxlc3lzdGVtCi1jb3JydXB0aW9uITwvcD4KLTxwPk9uZSBvdGhlciB0aGluZzogaWYgeW91IGNyZWF0ZSBhCi08Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBiaW5hcnkgZm9yIHB1YmxpYyBkaXN0cmlidXRpb24sCi1wbGVhc2UgY29uc2lkZXIgbGlua2luZyBpdCBzdGF0aWNhbGx5ICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmdjYwotLXN0YXRpYzwvY29kZT4pLiAgVGhpcyBhdm9pZHMgYWxsIHNvcnRzIG9mIGxpYnJhcnktdmVyc2lvbgotaXNzdWVzIHRoYXQgb3RoZXJzIG1heSBlbmNvdW50ZXIgbGF0ZXIgb24uPC9wPgotPHA+SWYgeW91IGJ1aWxkIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IG9uCi1XaW4zMiwgeW91IG11c3Qgc2V0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfVU5JWDwvY29kZT4gdG8gMAotYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTENDV0lOMzI8L2NvZGU+IHRvIDEsIGluIHRoZQotZmlsZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLmM8L2NvZGU+LCBiZWZvcmUgY29tcGlsaW5nLgotT3RoZXJ3aXNlIHRoZSByZXN1bHRpbmcgYmluYXJ5IHdvbid0IHdvcmsgY29ycmVjdGx5LjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+Ci08YSBuYW1lPSJidWdzIj48L2E+NC4zLqBSZXBvcnRpbmcgYnVnczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Ci08cD5JIHRyaWVkIHByZXR0eSBoYXJkIHRvIG1ha2Ugc3VyZQotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gaXMgYnVnIGZyZWUsIGJvdGggYnkKLWRlc2lnbiBhbmQgYnkgdGVzdGluZy4gIEhvcGVmdWxseSB5b3UnbGwgbmV2ZXIgbmVlZCB0byByZWFkIHRoaXMKLXNlY3Rpb24gZm9yIHJlYWwuPC9wPgotPHA+TmV2ZXJ0aGVsZXNzLCBpZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBkaWVzCi13aXRoIGEgc2VnbWVudGF0aW9uIGZhdWx0LCBhIGJ1cyBlcnJvciBvciBhbiBpbnRlcm5hbCBhc3NlcnRpb24KLWZhaWx1cmUsIGl0IHdpbGwgYXNrIHlvdSB0byBlbWFpbCBtZSBhIGJ1ZyByZXBvcnQuICBFeHBlcmllbmNlIGZyb20KLXllYXJzIG9mIGZlZWRiYWNrIG9mIGJ6aXAyIHVzZXJzIGluZGljYXRlcyB0aGF0IGFsbW9zdCBhbGwgdGhlc2UKLXByb2JsZW1zIGNhbiBiZSB0cmFjZWQgdG8gZWl0aGVyIGNvbXBpbGVyIGJ1Z3Mgb3IgaGFyZHdhcmUKLXByb2JsZW1zLjwvcD4KLTxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImJ1bGxldCI+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+Ci08cD5SZWNvbXBpbGUgdGhlIHByb2dyYW0gd2l0aCBubyBvcHRpbWlzYXRpb24sIGFuZAotICBzZWUgaWYgaXQgd29ya3MuICBBbmQvb3IgdHJ5IGEgZGlmZmVyZW50IGNvbXBpbGVyLiAgSSBoZWFyZCBhbGwKLSAgc29ydHMgb2Ygc3RvcmllcyBhYm91dCB2YXJpb3VzIGZsYXZvdXJzIG9mIEdOVSBDIChhbmQgb3RoZXIKLSAgY29tcGlsZXJzKSBnZW5lcmF0aW5nIGJhZCBjb2RlIGZvcgotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiwgYW5kIEkndmUgcnVuIGFjcm9zcyB0d28KLSAgc3VjaCBleGFtcGxlcyBteXNlbGYuPC9wPgotPHA+Mi43LlggdmVyc2lvbnMgb2YgR05VIEMgYXJlIGtub3duIHRvIGdlbmVyYXRlIGJhZCBjb2RlCi0gIGZyb20gdGltZSB0byB0aW1lLCBhdCBoaWdoIG9wdGltaXNhdGlvbiBsZXZlbHMuICBJZiB5b3UgZ2V0Ci0gIHByb2JsZW1zLCB0cnkgdXNpbmcgdGhlIGZsYWdzCi0gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LU8yPC9jb2RlPgotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1mb21pdC1mcmFtZS1wb2ludGVyPC9jb2RlPgotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1mbm8tc3RyZW5ndGgtcmVkdWNlPC9jb2RlPi4gIFlvdQotICBzaG91bGQgc3BlY2lmaWNhbGx5IDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPm5vdDwvZW0+PC9zcGFuPiB1c2UKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZnVucm9sbC1sb29wczwvY29kZT4uPC9wPgotPHA+WW91IG1heSBub3RpY2UgdGhhdCB0aGUgTWFrZWZpbGUgcnVucyBzaXggdGVzdHMgYXMgcGFydAotICBvZiB0aGUgYnVpbGQgcHJvY2Vzcy4gIElmIHRoZSBwcm9ncmFtIHBhc3NlcyBhbGwgb2YgdGhlc2UsIGl0J3MKLSAgYSBwcmV0dHkgZ29vZCAoYnV0IG5vdCAxMDAlKSBpbmRpY2F0aW9uIHRoYXQgdGhlIGNvbXBpbGVyIGhhcwotICBkb25lIGl0cyBqb2IgY29ycmVjdGx5LjwvcD4KLTwvbGk+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+Ci08cD5JZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPgotICBjcmFzaGVzIHJhbmRvbWx5LCBhbmQgdGhlIGNyYXNoZXMgYXJlIG5vdCByZXBlYXRhYmxlLCB5b3UgbWF5Ci0gIGhhdmUgYSBmbGFreSBtZW1vcnkgc3Vic3lzdGVtLgotICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiByZWFsbHkgaGFtbWVycyB5b3VyCi0gIG1lbW9yeSBoaWVyYXJjaHksIGFuZCBpZiBpdCdzIGEgYml0IG1hcmdpbmFsLCB5b3UgbWF5IGdldCB0aGVzZQotICBwcm9ibGVtcy4gIERpdHRvIGlmIHlvdXIgZGlzayBvciBJL08gc3Vic3lzdGVtIGlzIHNsb3dseQotICBmYWlsaW5nLiAgWXVwLCB0aGlzIHJlYWxseSBkb2VzIGhhcHBlbi48L3A+Ci08cD5UcnkgdXNpbmcgYSBkaWZmZXJlbnQgbWFjaGluZSBvZiB0aGUgc2FtZSB0eXBlLCBhbmQgc2VlCi0gIGlmIHlvdSBjYW4gcmVwZWF0IHRoZSBwcm9ibGVtLjwvcD4KLTwvbGk+Ci08bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+VGhpcyBpc24ndCByZWFsbHkgYSBidWcsIGJ1dCAuLi4gSWYKLSAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gdGVsbHMgeW91IHlvdXIgZmlsZSBpcwotICBjb3JydXB0ZWQgb24gZGVjb21wcmVzc2lvbiwgYW5kIHlvdSBvYnRhaW5lZCB0aGUgZmlsZSB2aWEgRlRQLAotICB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgeW91IGZvcmdvdCB0byB0ZWxsIEZUUCB0byBkbyBhCi0gIGJpbmFyeSBtb2RlIHRyYW5zZmVyLiAgVGhhdCBhYnNvbHV0ZWx5IHdpbGwgY2F1c2UgdGhlIGZpbGUgdG8KLSAgYmUgbm9uLWRlY29tcHJlc3NpYmxlLiAgWW91J2xsIGhhdmUgdG8gdHJhbnNmZXIgaXQKLSAgYWdhaW4uPC9wPjwvbGk+Ci08L3VsPjwvZGl2PgotPHA+SWYgeW91J3ZlIGluY29ycG9yYXRlZAotPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4gaW50byB5b3VyIG93biBwcm9ncmFtCi1hbmQgYXJlIGdldHRpbmcgcHJvYmxlbXMsIHBsZWFzZSwgcGxlYXNlLCBwbGVhc2UsIGNoZWNrIHRoYXQgdGhlCi1wYXJhbWV0ZXJzIHlvdSBhcmUgcGFzc2luZyBpbiBjYWxscyB0byB0aGUgbGlicmFyeSwgYXJlIGNvcnJlY3QsCi1hbmQgaW4gYWNjb3JkYW5jZSB3aXRoIHdoYXQgdGhlIGRvY3VtZW50YXRpb24gc2F5cyBpcyBhbGxvd2FibGUuCi1JIGhhdmUgdHJpZWQgdG8gbWFrZSB0aGUgbGlicmFyeSByb2J1c3QgYWdhaW5zdCBzdWNoIHByb2JsZW1zLAotYnV0IEknbSBzdXJlIEkgaGF2ZW4ndCBzdWNjZWVkZWQuPC9wPgotPHA+RmluYWxseSwgaWYgdGhlIGFib3ZlIGNvbW1lbnRzIGRvbid0IGhlbHAsIHlvdSdsbCBoYXZlIHRvCi1zZW5kIG1lIGEgYnVnIHJlcG9ydC4gIE5vdywgaXQncyBqdXN0IGFtYXppbmcgaG93IG1hbnkgcGVvcGxlCi13aWxsIHNlbmQgbWUgYSBidWcgcmVwb3J0IHNheWluZyBzb21ldGhpbmcgbGlrZTo8L3A+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+YnppcDIgY3Jhc2hlZCB3aXRoIHNlZ21lbnRhdGlvbiBmYXVsdCBvbiBteSBtYWNoaW5lPC9wcmU+Ci08cD5hbmQgYWJzb2x1dGVseSBub3RoaW5nIGVsc2UuICBOZWVkbGVzcyB0byBzYXksIGEgc3VjaCBhCi1yZXBvcnQgaXMgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+dG90YWxseSwgdXR0ZXJseSwgY29tcGxldGVseSBhbmQKLWNvbXByZWhlbnNpdmVseSAxMDAlIHVzZWxlc3M7IGEgd2FzdGUgb2YgeW91ciB0aW1lLCBteSB0aW1lLCBhbmQKLW5ldCBiYW5kd2lkdGg8L2VtPjwvc3Bhbj4uICBXaXRoIG5vIGRldGFpbHMgYXQgYWxsLCB0aGVyZSdzIG5vIHdheQotSSBjYW4gcG9zc2libHkgYmVnaW4gdG8gZmlndXJlIG91dCB3aGF0IHRoZSBwcm9ibGVtIGlzLjwvcD4KLTxwPlRoZSBydWxlcyBvZiB0aGUgZ2FtZSBhcmU6IGZhY3RzLCBmYWN0cywgZmFjdHMuICBEb24ndCBvbWl0Ci10aGVtIGJlY2F1c2UgIm9oLCB0aGV5IHdvbid0IGJlIHJlbGV2YW50Ii4gIEF0IHRoZSBiYXJlCi1taW5pbXVtOjwvcD4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5NYWNoaW5lIHR5cGUuICBPcGVyYXRpbmcgc3lzdGVtIHZlcnNpb24uICAKLUV4YWN0IHZlcnNpb24gb2YgYnppcDIgKGRvIGJ6aXAyIC1WKS4gIAotRXhhY3QgdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIgdXNlZC4gIAotRmxhZ3MgcGFzc2VkIHRvIHRoZSBjb21waWxlci48L3ByZT4KLTxwPkhvd2V2ZXIsIHRoZSBtb3N0IGltcG9ydGFudCBzaW5nbGUgdGhpbmcgdGhhdCB3aWxsIGhlbHAgbWUKLWlzIHRoZSBmaWxlIHRoYXQgeW91IHdlcmUgdHJ5aW5nIHRvIGNvbXByZXNzIG9yIGRlY29tcHJlc3MgYXQgdGhlCi10aW1lIHRoZSBwcm9ibGVtIGhhcHBlbmVkLiAgV2l0aG91dCB0aGF0LCBteSBhYmlsaXR5IHRvIGRvCi1hbnl0aGluZyBtb3JlIHRoYW4gc3BlY3VsYXRlIGFib3V0IHRoZSBjYXVzZSwgaXMgbGltaXRlZC48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+Ci08ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgotPGEgbmFtZT0icGFja2FnZSI+PC9hPjQuNC6gRGlkIHlvdSBnZXQgdGhlIHJpZ2h0IHBhY2thZ2U/PC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KLTxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGlzIGEgcmVzb3VyY2UgaG9nLgotSXQgc29ha3MgdXAgbGFyZ2UgYW1vdW50cyBvZiBDUFUgY3ljbGVzIGFuZCBtZW1vcnkuICBBbHNvLCBpdAotZ2l2ZXMgdmVyeSBsYXJnZSBsYXRlbmNpZXMuICBJbiB0aGUgd29yc3QgY2FzZSwgeW91IGNhbiBmZWVkIG1hbnkKLW1lZ2FieXRlcyBvZiB1bmNvbXByZXNzZWQgZGF0YSBpbnRvIHRoZSBsaWJyYXJ5IGJlZm9yZSBnZXR0aW5nCi1hbnkgY29tcHJlc3NlZCBvdXRwdXQsIHNvIHRoaXMgcHJvYmFibHkgcnVsZXMgb3V0IGFwcGxpY2F0aW9ucwotcmVxdWlyaW5nIGludGVyYWN0aXZlIGJlaGF2aW91ci48L3A+Ci08cD5UaGVzZSBhcmVuJ3QgZmF1bHRzIG9mIG15IGltcGxlbWVudGF0aW9uLCBJIGhvcGUsIGJ1dCBtb3JlCi1hbiBpbnRyaW5zaWMgcHJvcGVydHkgb2YgdGhlIEJ1cnJvd3MtV2hlZWxlciB0cmFuc2Zvcm0KLSh1bmZvcnR1bmF0ZWx5KS4gIE1heWJlIHRoaXMgaXNuJ3Qgd2hhdCB5b3Ugd2FudC48L3A+Ci08cD5JZiB5b3Ugd2FudCBhIGNvbXByZXNzb3IgYW5kL29yIGxpYnJhcnkgd2hpY2ggaXMgZmFzdGVyLAotdXNlcyBsZXNzIG1lbW9yeSBidXQgZ2V0cyBwcmV0dHkgZ29vZCBjb21wcmVzc2lvbiwgYW5kIGhhcwotbWluaW1hbCBsYXRlbmN5LCBjb25zaWRlciBKZWFuLWxvdXAgR2FpbGx5J3MgYW5kIE1hcmsgQWRsZXIncwotd29yaywgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij56bGliLTEuMi4xPC9jb2RlPiBhbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Z3ppcC0xLjIuNDwvY29kZT4uICBMb29rIGZvciB0aGVtIGF0IAotPGEgaHJlZj0iaHR0cDovL3d3dy56bGliLm9yZyIgdGFyZ2V0PSJfdG9wIj5odHRwOi8vd3d3LnpsaWIub3JnPC9hPiBhbmQgCi08YSBocmVmPSJodHRwOi8vd3d3Lmd6aXAub3JnIiB0YXJnZXQ9Il90b3AiPmh0dHA6Ly93d3cuZ3ppcC5vcmc8L2E+Ci1yZXNwZWN0aXZlbHkuPC9wPgotPHA+Rm9yIHNvbWV0aGluZyBmYXN0ZXIgYW5kIGxpZ2h0ZXIgc3RpbGwsIHlvdSBtaWdodCB0cnkgTWFya3VzIEYKLVggSiBPYmVyaHVtZXIncyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkxaTzwvY29kZT4gcmVhbC10aW1lCi1jb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnksIGF0IAotPGEgaHJlZj0iaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UiIHRhcmdldD0iX3RvcCI+aHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2U8L2E+LjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KLTxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+Ci08YSBuYW1lPSJyZWFkaW5nIj48L2E+NC41LqBGdXJ0aGVyIFJlYWRpbmc8L2gyPjwvZGl2PjwvZGl2PjwvZGl2PgotPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gaXMgbm90IHJlc2VhcmNoCi13b3JrLCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBkb2Vzbid0IHByZXNlbnQgYW55IG5ldyBpZGVhcy4KLVJhdGhlciwgaXQncyBhbiBlbmdpbmVlcmluZyBleGVyY2lzZSBiYXNlZCBvbiBleGlzdGluZwotaWRlYXMuPC9wPgotPHA+Rm91ciBkb2N1bWVudHMgZGVzY3JpYmUgZXNzZW50aWFsbHkgYWxsIHRoZSBpZGVhcyBiZWhpbmQKLTxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+OjwvcD4KLTxkaXYgY2xhc3M9ImxpdGVyYWxsYXlvdXQiPjxwPk1pY2hhZWygQnVycm93c6BhbmSgRC6gSi6gV2hlZWxlcjo8YnI+Ci2goCJBoGJsb2NrLXNvcnRpbmegbG9zc2xlc3OgZGF0YaBjb21wcmVzc2lvbqBhbGdvcml0aG0iPGJyPgotoKCgMTB0aKBNYXmgMTk5NC6gPGJyPgotoKCgRGlnaXRhbKBTUkOgUmVzZWFyY2igUmVwb3J0oDEyNC48YnI+Ci2goKBmdHA6Ly9mdHAuZGlnaXRhbC5jb20vcHViL0RFQy9TUkMvcmVzZWFyY2gtcmVwb3J0cy9TUkMtMTI0LnBzLmd6PGJyPgotoKCgSWageW91oGhhdmWgdHJvdWJsZaBmaW5kaW5noGl0LKB0cnmgc2VhcmNoaW5noGF0oHRoZTxicj4KLaCgoE5ld6BaZWFsYW5koERpZ2l0YWygTGlicmFyeSygaHR0cDovL3d3dy5uemRsLm9yZy48YnI+Ci08YnI+Ci1EYW5pZWygUy6gSGlyc2NoYmVyZ6BhbmSgRGVicmGgQS6gTGVMZXdlcjxicj4KLaCgIkVmZmljaWVudKBEZWNvZGluZ6BvZqBQcmVmaXigQ29kZXMiPGJyPgotoKCgQ29tbXVuaWNhdGlvbnOgb2agdGhloEFDTSygQXByaWygMTk5MCygVm9soDMzLKBOdW1iZXKgNC48YnI+Ci2goKBZb3WgbWlnaHSgYmWgYWJsZaB0b6BnZXSgYW6gZWxlY3Ryb25pY6Bjb3B5oG9moHRoaXM8YnI+Ci2goKBmcm9toHRoZaBBQ02gRGlnaXRhbKBMaWJyYXJ5Ljxicj4KLTxicj4KLURhdmlkoEouoFdoZWVsZXI8YnI+Ci2goKBQcm9ncmFtoGJyZWQzLmOgYW5koGFjY29tcGFueWluZ6Bkb2N1bWVudKBicmVkMy5wcy48YnI+Ci2goKBUaGlzoGNvbnRhaW5zoHRoZaBpZGVhoGJlaGluZKB0aGWgbXVsdGktdGFibGWgSHVmZm1hbqBjb2Rpbmegc2NoZW1lLjxicj4KLaCgoGZ0cDovL2Z0cC5jbC5jYW0uYWMudWsvdXNlcnMvZGp3My88YnI+Ci08YnI+Ci1Kb26gTC6gQmVudGxleaBhbmSgUm9iZXJ0oFNlZGdld2ljazxicj4KLaCgIkZhc3SgQWxnb3JpdGhtc6Bmb3KgU29ydGluZ6BhbmSgU2VhcmNoaW5noFN0cmluZ3MiPGJyPgotoKCgQXZhaWxhYmxloGZyb22gU2VkZ2V3aWNrJ3Ogd2VioHBhZ2UsPGJyPgotoKCgd3d3LmNzLnByaW5jZXRvbi5lZHUvfnJzPGJyPgotPC9wPjwvZGl2PgotPHA+VGhlIGZvbGxvd2luZyBwYXBlciBnaXZlcyB2YWx1YWJsZSBhZGRpdGlvbmFsIGluc2lnaHRzIGludG8KLXRoZSBhbGdvcml0aG0sIGJ1dCBpcyBub3QgaW1tZWRpYXRlbHkgdGhlIGJhc2lzIG9mIGFueSBjb2RlIHVzZWQKLWluIGJ6aXAyLjwvcD4KLTxkaXYgY2xhc3M9ImxpdGVyYWxsYXlvdXQiPjxwPlBldGVyoEZlbndpY2s6PGJyPgotoKCgQmxvY2ugU29ydGluZ6BUZXh0oENvbXByZXNzaW9uPGJyPgotoKCgUHJvY2VlZGluZ3Ogb2agdGhloDE5dGigQXVzdHJhbGFzaWFuoENvbXB1dGVyoFNjaWVuY2WgQ29uZmVyZW5jZSw8YnI+Ci2goKCgoE1lbGJvdXJuZSygQXVzdHJhbGlhLqCgSmFuoDMxoC2gRmVioDIsoDE5OTYuPGJyPgotoKCgZnRwOi8vZnRwLmNzLmF1Y2tsYW5kLmFjLm56L3B1Yi9wZXRlci1mL0FDU0M5NnBhcGVyLnBzPC9wPjwvZGl2PgotPHA+S3VuaWhpa28gU2FkYWthbmUncyBzb3J0aW5nIGFsZ29yaXRobSwgbWVudGlvbmVkIGFib3ZlLCBpcwotYXZhaWxhYmxlIGZyb206PC9wPgotPGRpdiBjbGFzcz0ibGl0ZXJhbGxheW91dCI+PHA+aHR0cDovL25hb21pLmlzLnMudS10b2t5by5hYy5qcC9+c2FkYS9wYXBlcnMvU2FkYTk4Yi5wcy5nejxicj4KLTwvcD48L2Rpdj4KLTxwPlRoZSBNYW5iZXItTXllcnMgc3VmZml4IGFycmF5IGNvbnN0cnVjdGlvbiBhbGdvcml0aG0gaXMKLWRlc2NyaWJlZCBpbiBhIHBhcGVyIGF2YWlsYWJsZSBmcm9tOjwvcD4KLTxkaXYgY2xhc3M9ImxpdGVyYWxsYXlvdXQiPjxwPmh0dHA6Ly93d3cuY3MuYXJpem9uYS5lZHUvcGVvcGxlL2dlbmUvUEFQRVJTL3N1ZmZpeC5wczxicj4KLTwvcD48L2Rpdj4KLTxwPkZpbmFsbHksIHRoZSBmb2xsb3dpbmcgcGFwZXJzIGRvY3VtZW50IHNvbWUKLWludmVzdGlnYXRpb25zIEkgbWFkZSBpbnRvIHRoZSBwZXJmb3JtYW5jZSBvZiBzb3J0aW5nCi1hbmQgZGVjb21wcmVzc2lvbiBhbGdvcml0aG1zOjwvcD4KLTxkaXYgY2xhc3M9ImxpdGVyYWxsYXlvdXQiPjxwPkp1bGlhbqBTZXdhcmQ8YnI+Ci2goKBPbqB0aGWgUGVyZm9ybWFuY2Wgb2agQldUoFNvcnRpbmegQWxnb3JpdGhtczxicj4KLaCgoFByb2NlZWRpbmdzoG9moHRoZaBJRUVFoERhdGGgQ29tcHJlc3Npb26gQ29uZmVyZW5jZaAyMDAwPGJyPgotoKCgoKBTbm93YmlyZCygVXRhaC6goDI4LTMwoE1hcmNooDIwMDAuPGJyPgotPGJyPgotSnVsaWFuoFNld2FyZDxicj4KLaCgoFNwYWNlLXRpbWWgVHJhZGVvZmZzoGluoHRoZaBJbnZlcnNloEItV6BUcmFuc2Zvcm08YnI+Ci2goKBQcm9jZWVkaW5nc6BvZqB0aGWgSUVFRaBEYXRhoENvbXByZXNzaW9uoENvbmZlcmVuY2WgMjAwMTxicj4KLaCgoKCgU25vd2JpcmQsoFV0YWguoKAyNy0yOaBNYXJjaKAyMDAxLjxicj4KLTwvcD48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj48L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9tYW51YWwucGRmIGIvVXRpbGl0aWVzL2NtYnppcDIvbWFudWFsLnBkZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBjMTBkZS4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9tYW51YWwucGRmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvbWFudWFsLnBzIGIvVXRpbGl0aWVzL2NtYnppcDIvbWFudWFsLnBzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGI2MTBjLi4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL21hbnVhbC5wcworKysgL2Rldi9udWxsCkBAIC0xLDgyOTAwICswLDAgQEAKLSUhUFMtQWRvYmUtMy4wCi0lJUNyZWF0b3I6IHhwZGYvcGRmdG9wcyAzLjAxCi0lJUxhbmd1YWdlTGV2ZWw6IDIKLSUlRG9jdW1lbnRTdXBwbGllZFJlc291cmNlczogKGF0ZW5kKQotJSVEb2N1bWVudE1lZGlhOiBwbGFpbiA2MTIgNzkyIDAgKCkgKCkKLSUlQm91bmRpbmdCb3g6IDAgMCA2MTIgNzkyCi0lJVBhZ2VzOiAzOAotJSVFbmRDb21tZW50cwotJSVCZWdpbkRlZmF1bHRzCi0lJVBhZ2VNZWRpYTogcGxhaW4KLSUlRW5kRGVmYXVsdHMKLSUlQmVnaW5Qcm9sb2cKLSUlQmVnaW5SZXNvdXJjZTogcHJvY3NldCB4cGRmIDMuMDEgMAotL3hwZGYgNzUgZGljdCBkZWYgeHBkZiBiZWdpbgotJSBQREYgc3BlY2lhbCBzdGF0ZQotL3BkZkRpY3RTaXplIDE1IGRlZgotL3BkZlNldHVwIHsKLSAgMyAxIHJvbGwgMiBhcnJheSBhc3RvcmUKLSAgL3NldHBhZ2VkZXZpY2Ugd2hlcmUgewotICAgIHBvcCAzIGRpY3QgYmVnaW4KLSAgICAgIC9QYWdlU2l6ZSBleGNoIGRlZgotICAgICAgL0ltYWdpbmdCQm94IG51bGwgZGVmCi0gICAgICAvUG9saWNpZXMgMSBkaWN0IGR1cCBiZWdpbiAvUGFnZVNpemUgMyBkZWYgZW5kIGRlZgotICAgICAgeyAvRHVwbGV4IHRydWUgZGVmIH0gaWYKLSAgICBjdXJyZW50ZGljdCBlbmQgc2V0cGFnZWRldmljZQotICB9IHsKLSAgICBwb3AgcG9wCi0gIH0gaWZlbHNlCi19IGRlZgotL3BkZlN0YXJ0UGFnZSB7Ci0gIHBkZkRpY3RTaXplIGRpY3QgYmVnaW4KLSAgL3BkZkZpbGxDUyBbXSBkZWYKLSAgL3BkZkZpbGxYZm9ybSB7fSBkZWYKLSAgL3BkZlN0cm9rZUNTIFtdIGRlZgotICAvcGRmU3Ryb2tlWGZvcm0ge30gZGVmCi0gIC9wZGZGaWxsIFswXSBkZWYKLSAgL3BkZlN0cm9rZSBbMF0gZGVmCi0gIC9wZGZGaWxsT1AgZmFsc2UgZGVmCi0gIC9wZGZTdHJva2VPUCBmYWxzZSBkZWYKLSAgL3BkZkxhc3RGaWxsIGZhbHNlIGRlZgotICAvcGRmTGFzdFN0cm9rZSBmYWxzZSBkZWYKLSAgL3BkZlRleHRNYXQgWzEgMCAwIDEgMCAwXSBkZWYKLSAgL3BkZkZvbnRTaXplIDAgZGVmCi0gIC9wZGZDaGFyU3BhY2luZyAwIGRlZgotICAvcGRmVGV4dFJlbmRlciAwIGRlZgotICAvcGRmVGV4dFJpc2UgMCBkZWYKLSAgL3BkZldvcmRTcGFjaW5nIDAgZGVmCi0gIC9wZGZIb3JpelNjYWxpbmcgMSBkZWYKLSAgL3BkZlRleHRDbGlwUGF0aCBbXSBkZWYKLX0gZGVmCi0vcGRmRW5kUGFnZSB7IGVuZCB9IGRlZgotJSBQREYgY29sb3Igc3RhdGUKLS9jcyB7IC9wZGZGaWxsWGZvcm0gZXhjaCBkZWYgZHVwIC9wZGZGaWxsQ1MgZXhjaCBkZWYKLSAgICAgIHNldGNvbG9yc3BhY2UgfSBkZWYKLS9DUyB7IC9wZGZTdHJva2VYZm9ybSBleGNoIGRlZiBkdXAgL3BkZlN0cm9rZUNTIGV4Y2ggZGVmCi0gICAgICBzZXRjb2xvcnNwYWNlIH0gZGVmCi0vc2MgeyBwZGZMYXN0RmlsbCBub3QgeyBwZGZGaWxsQ1Mgc2V0Y29sb3JzcGFjZSB9IGlmCi0gICAgICBkdXAgL3BkZkZpbGwgZXhjaCBkZWYgYWxvYWQgcG9wIHBkZkZpbGxYZm9ybSBzZXRjb2xvcgotICAgICAvcGRmTGFzdEZpbGwgdHJ1ZSBkZWYgL3BkZkxhc3RTdHJva2UgZmFsc2UgZGVmIH0gZGVmCi0vU0MgeyBwZGZMYXN0U3Ryb2tlIG5vdCB7IHBkZlN0cm9rZUNTIHNldGNvbG9yc3BhY2UgfSBpZgotICAgICAgZHVwIC9wZGZTdHJva2UgZXhjaCBkZWYgYWxvYWQgcG9wIHBkZlN0cm9rZVhmb3JtIHNldGNvbG9yCi0gICAgIC9wZGZMYXN0U3Ryb2tlIHRydWUgZGVmIC9wZGZMYXN0RmlsbCBmYWxzZSBkZWYgfSBkZWYKLS9vcCB7IC9wZGZGaWxsT1AgZXhjaCBkZWYKLSAgICAgIHBkZkxhc3RGaWxsIHsgcGRmRmlsbE9QIHNldG92ZXJwcmludCB9IGlmIH0gZGVmCi0vT1AgeyAvcGRmU3Ryb2tlT1AgZXhjaCBkZWYKLSAgICAgIHBkZkxhc3RTdHJva2UgeyBwZGZTdHJva2VPUCBzZXRvdmVycHJpbnQgfSBpZiB9IGRlZgotL2ZDb2wgewotICBwZGZMYXN0RmlsbCBub3QgewotICAgIHBkZkZpbGxDUyBzZXRjb2xvcnNwYWNlCi0gICAgcGRmRmlsbCBhbG9hZCBwb3AgcGRmRmlsbFhmb3JtIHNldGNvbG9yCi0gICAgcGRmRmlsbE9QIHNldG92ZXJwcmludAotICAgIC9wZGZMYXN0RmlsbCB0cnVlIGRlZiAvcGRmTGFzdFN0cm9rZSBmYWxzZSBkZWYKLSAgfSBpZgotfSBkZWYKLS9zQ29sIHsKLSAgcGRmTGFzdFN0cm9rZSBub3QgewotICAgIHBkZlN0cm9rZUNTIHNldGNvbG9yc3BhY2UKLSAgICBwZGZTdHJva2UgYWxvYWQgcG9wIHBkZlN0cm9rZVhmb3JtIHNldGNvbG9yCi0gICAgcGRmU3Ryb2tlT1Agc2V0b3ZlcnByaW50Ci0gICAgL3BkZkxhc3RTdHJva2UgdHJ1ZSBkZWYgL3BkZkxhc3RGaWxsIGZhbHNlIGRlZgotICB9IGlmCi19IGRlZgotJSBidWlsZCBhIGZvbnQKLS9wZGZNYWtlRm9udCB7Ci0gIDQgMyByb2xsIGZpbmRmb250Ci0gIDQgMiByb2xsIG1hdHJpeCBzY2FsZSBtYWtlZm9udAotICBkdXAgbGVuZ3RoIGRpY3QgYmVnaW4KLSAgICB7IDEgaW5kZXggL0ZJRCBuZSB7IGRlZiB9IHsgcG9wIHBvcCB9IGlmZWxzZSB9IGZvcmFsbAotICAgIC9FbmNvZGluZyBleGNoIGRlZgotICAgIGN1cnJlbnRkaWN0Ci0gIGVuZAotICBkZWZpbmVmb250IHBvcAotfSBkZWYKLS9wZGZNYWtlRm9udDE2IHsKLSAgZXhjaCBmaW5kZm9udAotICBkdXAgbGVuZ3RoIGRpY3QgYmVnaW4KLSAgICB7IDEgaW5kZXggL0ZJRCBuZSB7IGRlZiB9IHsgcG9wIHBvcCB9IGlmZWxzZSB9IGZvcmFsbAotICAgIC9XTW9kZSBleGNoIGRlZgotICAgIGN1cnJlbnRkaWN0Ci0gIGVuZAotICBkZWZpbmVmb250IHBvcAotfSBkZWYKLSUgZ3JhcGhpY3Mgc3RhdGUgb3BlcmF0b3JzCi0vcSB7IGdzYXZlIHBkZkRpY3RTaXplIGRpY3QgYmVnaW4gfSBkZWYKLS9RIHsKLSAgZW5kIGdyZXN0b3JlCi0gIC9wZGZMYXN0RmlsbCB3aGVyZSB7Ci0gICAgcG9wCi0gICAgcGRmTGFzdEZpbGwgewotICAgICAgcGRmRmlsbE9QIHNldG92ZXJwcmludAotICAgIH0gewotICAgICAgcGRmU3Ryb2tlT1Agc2V0b3ZlcnByaW50Ci0gICAgfSBpZmVsc2UKLSAgfSBpZgotfSBkZWYKLS9jbSB7IGNvbmNhdCB9IGRlZgotL2QgeyBzZXRkYXNoIH0gZGVmCi0vaSB7IHNldGZsYXQgfSBkZWYKLS9qIHsgc2V0bGluZWpvaW4gfSBkZWYKLS9KIHsgc2V0bGluZWNhcCB9IGRlZgotL00geyBzZXRtaXRlcmxpbWl0IH0gZGVmCi0vdyB7IHNldGxpbmV3aWR0aCB9IGRlZgotJSBwYXRoIHNlZ21lbnQgb3BlcmF0b3JzCi0vbSB7IG1vdmV0byB9IGRlZgotL2wgeyBsaW5ldG8gfSBkZWYKLS9jIHsgY3VydmV0byB9IGRlZgotL3JlIHsgNCAyIHJvbGwgbW92ZXRvIDEgaW5kZXggMCBybGluZXRvIDAgZXhjaCBybGluZXRvCi0gICAgICBuZWcgMCBybGluZXRvIGNsb3NlcGF0aCB9IGRlZgotL2ggeyBjbG9zZXBhdGggfSBkZWYKLSUgcGF0aCBwYWludGluZyBvcGVyYXRvcnMKLS9TIHsgc0NvbCBzdHJva2UgfSBkZWYKLS9TZiB7IGZDb2wgc3Ryb2tlIH0gZGVmCi0vZiB7IGZDb2wgZmlsbCB9IGRlZgotL2YqIHsgZkNvbCBlb2ZpbGwgfSBkZWYKLSUgY2xpcHBpbmcgb3BlcmF0b3JzCi0vVyB7IGNsaXAgbmV3cGF0aCB9IGRlZgotL1cqIHsgZW9jbGlwIG5ld3BhdGggfSBkZWYKLSUgdGV4dCBzdGF0ZSBvcGVyYXRvcnMKLS9UYyB7IC9wZGZDaGFyU3BhY2luZyBleGNoIGRlZiB9IGRlZgotL1RmIHsgZHVwIC9wZGZGb250U2l6ZSBleGNoIGRlZgotICAgICAgZHVwIHBkZkhvcml6U2NhbGluZyBtdWwgZXhjaCBtYXRyaXggc2NhbGUKLSAgICAgIHBkZlRleHRNYXQgbWF0cml4IGNvbmNhdG1hdHJpeCBkdXAgNCAwIHB1dCBkdXAgNSAwIHB1dAotICAgICAgZXhjaCBmaW5kZm9udCBleGNoIG1ha2Vmb250IHNldGZvbnQgfSBkZWYKLS9UciB7IC9wZGZUZXh0UmVuZGVyIGV4Y2ggZGVmIH0gZGVmCi0vVHMgeyAvcGRmVGV4dFJpc2UgZXhjaCBkZWYgfSBkZWYKLS9UdyB7IC9wZGZXb3JkU3BhY2luZyBleGNoIGRlZiB9IGRlZgotL1R6IHsgL3BkZkhvcml6U2NhbGluZyBleGNoIGRlZiB9IGRlZgotJSB0ZXh0IHBvc2l0aW9uaW5nIG9wZXJhdG9ycwotL1RkIHsgcGRmVGV4dE1hdCB0cmFuc2Zvcm0gbW92ZXRvIH0gZGVmCi0vVG0geyAvcGRmVGV4dE1hdCBleGNoIGRlZiB9IGRlZgotJSB0ZXh0IHN0cmluZyBvcGVyYXRvcnMKLS9jc2hvdyB3aGVyZSB7Ci0gIHBvcAotICAvY3Nob3cyIHsKLSAgICBkdXAgewotICAgICAgcG9wIHBvcAotICAgICAgMSBzdHJpbmcgZHVwIDAgMyBpbmRleCBwdXQgMyBpbmRleCBleGVjCi0gICAgfSBleGNoIGNzaG93Ci0gICAgcG9wIHBvcAotICB9IGRlZgotfXsKLSAgL2NzaG93MiB7Ci0gICAgY3VycmVudGZvbnQgL0ZvbnRUeXBlIGdldCAwIGVxIHsKLSAgICAgIDAgMiAyIGluZGV4IGxlbmd0aCAxIHN1YiB7Ci0gICAgICAgIDIgY29weSBnZXQgZXhjaCAxIGFkZCAyIGluZGV4IGV4Y2ggZ2V0Ci0gICAgICAgIDIgY29weSBleGNoIDI1NiBtdWwgYWRkCi0gICAgICAgIDIgc3RyaW5nIGR1cCAwIDYgNSByb2xsIHB1dCBkdXAgMSA1IDQgcm9sbCBwdXQKLSAgICAgICAgMyBpbmRleCBleGVjCi0gICAgICB9IGZvcgotICAgIH0gewotICAgICAgZHVwIHsKLSAgICAgICAgMSBzdHJpbmcgZHVwIDAgMyBpbmRleCBwdXQgMyBpbmRleCBleGVjCi0gICAgICB9IGZvcmFsbAotICAgIH0gaWZlbHNlCi0gICAgcG9wIHBvcAotICB9IGRlZgotfSBpZmVsc2UKLS9hd2NwIHsKLSAgZXhjaCB7Ci0gICAgZmFsc2UgY2hhcnBhdGgKLSAgICA1IGluZGV4IDUgaW5kZXggcm1vdmV0bwotICAgIDYgaW5kZXggZXEgeyA3IGluZGV4IDcgaW5kZXggcm1vdmV0byB9IGlmCi0gIH0gZXhjaCBjc2hvdzIKLSAgNiB7cG9wfSByZXBlYXQKLX0gZGVmCi0vVGogewotICBmQ29sCi0gIDEgaW5kZXggc3RyaW5nd2lkdGggcGRmVGV4dE1hdCBpZHRyYW5zZm9ybSBwb3AKLSAgc3ViIDEgaW5kZXggbGVuZ3RoIGR1cCAwIG5lIHsgZGl2IH0geyBwb3AgcG9wIDAgfSBpZmVsc2UKLSAgcGRmV29yZFNwYWNpbmcgcGRmSG9yaXpTY2FsaW5nIG11bCAwIHBkZlRleHRNYXQgZHRyYW5zZm9ybSAzMgotICA0IDMgcm9sbCBwZGZDaGFyU3BhY2luZyBwZGZIb3JpelNjYWxpbmcgbXVsIGFkZCAwCi0gIHBkZlRleHRNYXQgZHRyYW5zZm9ybQotICA2IDUgcm9sbCBUajEKLX0gZGVmCi0vVGoxNiB7Ci0gIGZDb2wKLSAgMiBpbmRleCBzdHJpbmd3aWR0aCBwZGZUZXh0TWF0IGlkdHJhbnNmb3JtIHBvcAotICBzdWIgZXhjaCBkaXYKLSAgcGRmV29yZFNwYWNpbmcgcGRmSG9yaXpTY2FsaW5nIG11bCAwIHBkZlRleHRNYXQgZHRyYW5zZm9ybSAzMgotICA0IDMgcm9sbCBwZGZDaGFyU3BhY2luZyBwZGZIb3JpelNjYWxpbmcgbXVsIGFkZCAwCi0gIHBkZlRleHRNYXQgZHRyYW5zZm9ybQotICA2IDUgcm9sbCBUajEKLX0gZGVmCi0vVGoxNlYgewotICBmQ29sCi0gIDIgaW5kZXggc3RyaW5nd2lkdGggcGRmVGV4dE1hdCBpZHRyYW5zZm9ybSBleGNoIHBvcAotICBzdWIgZXhjaCBkaXYKLSAgMCBwZGZXb3JkU3BhY2luZyBwZGZUZXh0TWF0IGR0cmFuc2Zvcm0gMzIKLSAgNCAzIHJvbGwgcGRmQ2hhclNwYWNpbmcgYWRkIDAgZXhjaAotICBwZGZUZXh0TWF0IGR0cmFuc2Zvcm0KLSAgNiA1IHJvbGwgVGoxCi19IGRlZgotL1RqMSB7Ci0gIDAgcGRmVGV4dFJpc2UgcGRmVGV4dE1hdCBkdHJhbnNmb3JtIHJtb3ZldG8KLSAgY3VycmVudHBvaW50IDggMiByb2xsCi0gIHBkZlRleHRSZW5kZXIgMSBhbmQgMCBlcSB7Ci0gICAgNiBjb3B5IGF3aWR0aHNob3cKLSAgfSBpZgotICBwZGZUZXh0UmVuZGVyIDMgYW5kIGR1cCAxIGVxIGV4Y2ggMiBlcSBvciB7Ci0gICAgNyBpbmRleCA3IGluZGV4IG1vdmV0bwotICAgIDYgY29weQotICAgIGN1cnJlbnRmb250IC9Gb250VHlwZSBnZXQgMyBlcSB7IGZDb2wgfSB7IHNDb2wgfSBpZmVsc2UKLSAgICBmYWxzZSBhd2NwIGN1cnJlbnRwb2ludCBzdHJva2UgbW92ZXRvCi0gIH0gaWYKLSAgcGRmVGV4dFJlbmRlciA0IGFuZCAwIG5lIHsKLSAgICA4IDYgcm9sbCBtb3ZldG8KLSAgICBmYWxzZSBhd2NwCi0gICAgL3BkZlRleHRDbGlwUGF0aCBbIHBkZlRleHRDbGlwUGF0aCBhbG9hZCBwb3AKLSAgICAgIHsvbW92ZXRvIGN2eH0KLSAgICAgIHsvbGluZXRvIGN2eH0KLSAgICAgIHsvY3VydmV0byBjdnh9Ci0gICAgICB7L2Nsb3NlcGF0aCBjdnh9Ci0gICAgcGF0aGZvcmFsbCBdIGRlZgotICAgIGN1cnJlbnRwb2ludCBuZXdwYXRoIG1vdmV0bwotICB9IHsKLSAgICA4IHtwb3B9IHJlcGVhdAotICB9IGlmZWxzZQotICAwIHBkZlRleHRSaXNlIG5lZyBwZGZUZXh0TWF0IGR0cmFuc2Zvcm0gcm1vdmV0bwotfSBkZWYKLS9USm0geyBwZGZGb250U2l6ZSAwLjAwMSBtdWwgbXVsIG5lZyAwCi0gICAgICAgcGRmVGV4dE1hdCBkdHJhbnNmb3JtIHJtb3ZldG8gfSBkZWYKLS9USm1WIHsgcGRmRm9udFNpemUgMC4wMDEgbXVsIG11bCBuZWcgMCBleGNoCi0gICAgICAgIHBkZlRleHRNYXQgZHRyYW5zZm9ybSBybW92ZXRvIH0gZGVmCi0vVGNsaXAgeyBwZGZUZXh0Q2xpcFBhdGggY3Z4IGV4ZWMgY2xpcCBuZXdwYXRoCi0gICAgICAgICAvcGRmVGV4dENsaXBQYXRoIFtdIGRlZiB9IGRlZgotJSBMZXZlbCAyIGltYWdlIG9wZXJhdG9ycwotL3BkZkltQnVmIDEwMCBzdHJpbmcgZGVmCi0vcGRmSW0gewotICBpbWFnZQotICB7IGN1cnJlbnRmaWxlIHBkZkltQnVmIHJlYWRsaW5lCi0gICAgbm90IHsgcG9wIGV4aXQgfSBpZgotICAgICglLUVPRC0pIGVxIHsgZXhpdCB9IGlmIH0gbG9vcAotfSBkZWYKLS9wZGZJbU0gewotICBmQ29sIGltYWdlbWFzawotICB7IGN1cnJlbnRmaWxlIHBkZkltQnVmIHJlYWRsaW5lCi0gICAgbm90IHsgcG9wIGV4aXQgfSBpZgotICAgICglLUVPRC0pIGVxIHsgZXhpdCB9IGlmIH0gbG9vcAotfSBkZWYKLS9wZGZJbUNsaXAgewotICBnc2F2ZQotICAwIDIgNCBpbmRleCBsZW5ndGggMSBzdWIgewotICAgIGR1cCA0IGluZGV4IGV4Y2ggMiBjb3B5Ci0gICAgZ2V0IDUgaW5kZXggZGl2IHB1dAotICAgIDEgYWRkIDMgaW5kZXggZXhjaCAyIGNvcHkKLSAgICBnZXQgMyBpbmRleCBkaXYgcHV0Ci0gIH0gZm9yCi0gIHBvcCBwb3AgcmVjdGNsaXAKLX0gZGVmCi0vcGRmSW1DbGlwRW5kIHsgZ3Jlc3RvcmUgfSBkZWYKLSUgc2hhZGluZyBvcGVyYXRvcnMKLS9jb2xvcmRlbHRhIHsKLSAgZmFsc2UgMCAxIDMgaW5kZXggbGVuZ3RoIDEgc3ViIHsKLSAgICBkdXAgNCBpbmRleCBleGNoIGdldCAzIGluZGV4IDMgMiByb2xsIGdldCBzdWIgYWJzIDAuMDA0IGd0IHsKLSAgICAgIHBvcCB0cnVlCi0gICAgfSBpZgotICB9IGZvcgotICBleGNoIHBvcCBleGNoIHBvcAotfSBkZWYKLS9mdW5jQ29sIHsgZnVuYyBuIGFycmF5IGFzdG9yZSB9IGRlZgotL2Z1bmNTSCB7Ci0gIGR1cCAwIGVxIHsKLSAgICB0cnVlCi0gIH0gewotICAgIGR1cCA2IGVxIHsKLSAgICAgIGZhbHNlCi0gICAgfSB7Ci0gICAgICA0IGluZGV4IDQgaW5kZXggZnVuY0NvbCBkdXAKLSAgICAgIDYgaW5kZXggNCBpbmRleCBmdW5jQ29sIGR1cAotICAgICAgMyAxIHJvbGwgY29sb3JkZWx0YSAzIDEgcm9sbAotICAgICAgNSBpbmRleCA1IGluZGV4IGZ1bmNDb2wgZHVwCi0gICAgICAzIDEgcm9sbCBjb2xvcmRlbHRhIDMgMSByb2xsCi0gICAgICA2IGluZGV4IDggaW5kZXggZnVuY0NvbCBkdXAKLSAgICAgIDMgMSByb2xsIGNvbG9yZGVsdGEgMyAxIHJvbGwKLSAgICAgIGNvbG9yZGVsdGEgb3Igb3Igb3IKLSAgICB9IGlmZWxzZQotICB9IGlmZWxzZQotICB7Ci0gICAgMSBhZGQKLSAgICA0IGluZGV4IDMgaW5kZXggYWRkIDAuNSBtdWwgZXhjaCA0IGluZGV4IDMgaW5kZXggYWRkIDAuNSBtdWwgZXhjaAotICAgIDYgaW5kZXggNiBpbmRleCA0IGluZGV4IDQgaW5kZXggNCBpbmRleCBmdW5jU0gKLSAgICAyIGluZGV4IDYgaW5kZXggNiBpbmRleCA0IGluZGV4IDQgaW5kZXggZnVuY1NICi0gICAgNiBpbmRleCAyIGluZGV4IDQgaW5kZXggNiBpbmRleCA0IGluZGV4IGZ1bmNTSAotICAgIDUgMyByb2xsIDMgMiByb2xsIGZ1bmNTSCBwb3AgcG9wCi0gIH0gewotICAgIHBvcCAzIGluZGV4IDIgaW5kZXggYWRkIDAuNSBtdWwgMyBpbmRleCAgMiBpbmRleCBhZGQgMC41IG11bAotICAgIGZ1bmNDb2wgc2MKLSAgICBkdXAgNCBpbmRleCBleGNoIG1hdCB0cmFuc2Zvcm0gbQotICAgIDMgaW5kZXggMyBpbmRleCBtYXQgdHJhbnNmb3JtIGwKLSAgICAxIGluZGV4IDMgaW5kZXggbWF0IHRyYW5zZm9ybSBsCi0gICAgbWF0IHRyYW5zZm9ybSBsIHBvcCBwb3AgaCBmKgotICB9IGlmZWxzZQotfSBkZWYKLS9heGlhbENvbCB7Ci0gIGR1cCAwIGx0IHsKLSAgICBwb3AgdDAKLSAgfSB7Ci0gICAgZHVwIDEgZ3QgewotICAgICAgcG9wIHQxCi0gICAgfSB7Ci0gICAgICBkdCBtdWwgdDAgYWRkCi0gICAgfSBpZmVsc2UKLSAgfSBpZmVsc2UKLSAgZnVuYyBuIGFycmF5IGFzdG9yZQotfSBkZWYKLS9heGlhbFNIIHsKLSAgZHVwIDAgZXEgewotICAgIHRydWUKLSAgfSB7Ci0gICAgZHVwIDggZXEgewotICAgICAgZmFsc2UKLSAgICB9IHsKLSAgICAgIDIgaW5kZXggYXhpYWxDb2wgMiBpbmRleCBheGlhbENvbCBjb2xvcmRlbHRhCi0gICAgfSBpZmVsc2UKLSAgfSBpZmVsc2UKLSAgewotICAgIDEgYWRkIDMgMSByb2xsIDIgY29weSBhZGQgMC41IG11bAotICAgIGR1cCA0IDMgcm9sbCBleGNoIDQgaW5kZXggYXhpYWxTSAotICAgIGV4Y2ggMyAyIHJvbGwgYXhpYWxTSAotICB9IHsKLSAgICBwb3AgMiBjb3B5IGFkZCAwLjUgbXVsIGF4aWFsQ29sIHNjCi0gICAgZXhjaCBkdXAgZHggbXVsIHgwIGFkZCBleGNoIGR5IG11bCB5MCBhZGQKLSAgICAzIDIgcm9sbCBkdXAgZHggbXVsIHgwIGFkZCBleGNoIGR5IG11bCB5MCBhZGQKLSAgICBkeCBhYnMgZHkgYWJzIGdlIHsKLSAgICAgIDIgY29weSB5TWluIHN1YiBkeSBtdWwgZHggZGl2IGFkZCB5TWluIG0KLSAgICAgIHlNYXggc3ViIGR5IG11bCBkeCBkaXYgYWRkIHlNYXggbAotICAgICAgMiBjb3B5IHlNYXggc3ViIGR5IG11bCBkeCBkaXYgYWRkIHlNYXggbAotICAgICAgeU1pbiBzdWIgZHkgbXVsIGR4IGRpdiBhZGQgeU1pbiBsCi0gICAgICBoIGYqCi0gICAgfSB7Ci0gICAgICBleGNoIDIgY29weSB4TWluIHN1YiBkeCBtdWwgZHkgZGl2IGFkZCB4TWluIGV4Y2ggbQotICAgICAgeE1heCBzdWIgZHggbXVsIGR5IGRpdiBhZGQgeE1heCBleGNoIGwKLSAgICAgIGV4Y2ggMiBjb3B5IHhNYXggc3ViIGR4IG11bCBkeSBkaXYgYWRkIHhNYXggZXhjaCBsCi0gICAgICB4TWluIHN1YiBkeCBtdWwgZHkgZGl2IGFkZCB4TWluIGV4Y2ggbAotICAgICAgaCBmKgotICAgIH0gaWZlbHNlCi0gIH0gaWZlbHNlCi19IGRlZgotL3JhZGlhbENvbCB7Ci0gIGR1cCB0MCBsdCB7Ci0gICAgcG9wIHQwCi0gIH0gewotICAgIGR1cCB0MSBndCB7Ci0gICAgICBwb3AgdDEKLSAgICB9IGlmCi0gIH0gaWZlbHNlCi0gIGZ1bmMgbiBhcnJheSBhc3RvcmUKLX0gZGVmCi0vcmFkaWFsU0ggewotICBkdXAgMCBlcSB7Ci0gICAgdHJ1ZQotICB9IHsKLSAgICBkdXAgOCBlcSB7Ci0gICAgICBmYWxzZQotICAgIH0gewotICAgICAgMiBpbmRleCBkdCBtdWwgdDAgYWRkIHJhZGlhbENvbAotICAgICAgMiBpbmRleCBkdCBtdWwgdDAgYWRkIHJhZGlhbENvbCBjb2xvcmRlbHRhCi0gICAgfSBpZmVsc2UKLSAgfSBpZmVsc2UKLSAgewotICAgIDEgYWRkIDMgMSByb2xsIDIgY29weSBhZGQgMC41IG11bAotICAgIGR1cCA0IDMgcm9sbCBleGNoIDQgaW5kZXggcmFkaWFsU0gKLSAgICBleGNoIDMgMiByb2xsIHJhZGlhbFNICi0gIH0gewotICAgIHBvcCAyIGNvcHkgYWRkIDAuNSBtdWwgZHQgbXVsIHQwIGFkZCBheGlhbENvbCBzYwotICAgIGV4Y2ggZHVwIGR4IG11bCB4MCBhZGQgZXhjaCBkdXAgZHkgbXVsIHkwIGFkZCBleGNoIGRyIG11bCByMCBhZGQKLSAgICAwIDM2MCBhcmMgaAotICAgIGR1cCBkeCBtdWwgeDAgYWRkIGV4Y2ggZHVwIGR5IG11bCB5MCBhZGQgZXhjaCBkciBtdWwgcjAgYWRkCi0gICAgMCAzNjAgYXJjIGggZioKLSAgfSBpZmVsc2UKLX0gZGVmCi1lbmQKLSUlRW5kUmVzb3VyY2UKLSUlRW5kUHJvbG9nCi0lJUJlZ2luU2V0dXAKLXhwZGYgYmVnaW4KLSUlQmVnaW5SZXNvdXJjZTogZm9udCBEVFVVSFArTmltYnVzU2FuTC1Cb2xkCi0lIVBTLUFkb2JlRm9udC0xLjA6IE5pbWJ1c1NhbkwtQm9sZCAxLjA1Ci0lJUNyZWF0aW9uRGF0ZTogV2VkIERlYyAyMiAxOTk5Ci0lIENvcHlyaWdodCAoVVJXKSsrLENvcHlyaWdodCAxOTk5IGJ5IChVUlcpKysgRGVzaWduICYgRGV2ZWxvcG1lbnQKLSUgKFVSVykrKyxDb3B5cmlnaHQgMTk5OSBieSAoVVJXKSsrIERlc2lnbiAmIERldmVsb3BtZW50Ci0lIFNlZSB0aGUgZmlsZSBDT1BZSU5HIChHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkgZm9yIGxpY2Vuc2UgY29uZGl0aW9ucy4KLSUgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgcGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGluY2x1ZGUgdGhpcyBmb250Ci0lIHByb2dyYW0gaW4gYSBQb3N0c2NyaXB0IG9yIFBERiBmaWxlIHRoYXQgY29uc2lzdHMgb2YgYSBkb2N1bWVudCB0aGF0Ci0lIGNvbnRhaW5zIHRleHQgdG8gYmUgZGlzcGxheWVkIG9yIHByaW50ZWQgdXNpbmcgdGhpcyBmb250LCByZWdhcmRsZXNzCi0lIG9mIHRoZSBjb25kaXRpb25zIG9yIGxpY2Vuc2UgYXBwbHlpbmcgdG8gdGhlIGRvY3VtZW50IGl0c2VsZi4KLTEyIGRpY3QgYmVnaW4KLS9Gb250SW5mbyAxMCBkaWN0IGR1cCBiZWdpbgotL3ZlcnNpb24gKDEuMDUpIHJlYWRvbmx5IGRlZgotL05vdGljZSAoKFVSVykrKyxDb3B5cmlnaHQgMTk5OSBieSAoVVJXKSsrIERlc2lnbiAmIERldmVsb3BtZW50LiBTZWUgdGhlIGZpbGUgQ09QWUlORyAoR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpIGZvciBsaWNlbnNlIGNvbmRpdGlvbnMuIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBpbmNsdWRlIHRoaXMgZm9udCBwcm9ncmFtIGluIGEgUG9zdHNjcmlwdCBvciBQREYgZmlsZSB0aGF0IGNvbnNpc3RzIG9mIGEgZG9jdW1lbnQgdGhhdCBjb250YWlucyB0ZXh0IHRvIGJlIGRpc3BsYXllZCBvciBwcmludGVkIHVzaW5nIHRoaXMgZm9udCwgcmVnYXJkbGVzcyBvZiB0aGUgY29uZGl0aW9ucyBvciBsaWNlbnNlIGFwcGx5aW5nIHRvIHRoZSBkb2N1bWVudCBpdHNlbGYuKSByZWFkb25seSBkZWYKLS9Db3B5cmlnaHQgKENvcHlyaWdodCAoVVJXKSsrLENvcHlyaWdodCAxOTk5IGJ5IChVUlcpKysgRGVzaWduICYgRGV2ZWxvcG1lbnQpIHJlYWRvbmx5IGRlZgotL0Z1bGxOYW1lIChOaW1idXMgU2FucyBMIEJvbGQpIHJlYWRvbmx5IGRlZgotL0ZhbWlseU5hbWUgKE5pbWJ1cyBTYW5zIEwpIHJlYWRvbmx5IGRlZgotL1dlaWdodCAoQm9sZCkgcmVhZG9ubHkgZGVmCi0vSXRhbGljQW5nbGUgMC4wIGRlZgotL2lzRml4ZWRQaXRjaCBmYWxzZSBkZWYKLS9VbmRlcmxpbmVQb3NpdGlvbiAtMTU1IGRlZgotL1VuZGVybGluZVRoaWNrbmVzcyA2OSBkZWYKLWVuZCByZWFkb25seSBkZWYKLS9Gb250TmFtZSAvRFRVVUhQK05pbWJ1c1NhbkwtQm9sZCBkZWYKLS9QYWludFR5cGUgMCBkZWYKLS9XTW9kZSAwIGRlZgotL0ZvbnRCQm94IHstMTczIC0zMDcgMTAwMyA5NDl9IHJlYWRvbmx5IGRlZgotL0ZvbnRUeXBlIDEgZGVmCi0vRm9udE1hdHJpeCBbMC4wMDEgMC4wIDAuMCAwLjAwMSAwLjAgMC4wXSByZWFkb25seSBkZWYKLS9FbmNvZGluZyBTdGFuZGFyZEVuY29kaW5nIGRlZgotY3VycmVudGRpY3QgZW5kCi1jdXJyZW50ZmlsZSBlZXhlYwotZDlkNjZmNjMzYjg0NmE5ODliOTk3NGIwMTc5ZmM2Y2M0NDViYzJjMDMxMDNjNjg1NzBhN2IzNTRhNGEyODBhZQotNmZiZjdmOTg4OGUwMzlhYjYwZmNhZjg1MmViNGNlM2FmZWI5NzlkNWVhNzBmZGU0NGEyYWU1YzhjMDE2NmMyNwotYmY5NjY1ZWVhMTFjN2QyMzI5YzFhMjExZGQyNmJiMzcyYmU1ODIyZjVlYTcwZDk5ZWI1NzhjN2JlZmQ0NGNkZgotMDQ1YTM2MzA1NmU1ZTFjYzUxNTI1ZWE2ZmMwNjFkY2ViYjMzNzIwOGVmZjcyOTgwMjM3NmEyODAxNDI0ZjY3MAotMGU3ZTYzOTdiMjhmMTViYzEwYjQwMDEyYjBhM2VhZWIyNjkzZThmN2Y2MjdjNGM5YzdjNmM1YmZmMTA1YzFlNAotMWIyYjllOGYwOTI1M2I3NjA0MGQyNjhiODA3MTllMWIzZjVhNTVhYjdiOGQ2MmE2MzE5M2M0YWU5NGMwODZjMQotNTUyODMzZGRkOGYxMTZiNWRmMzMyMDVhZTcwOWIzYWE2M2RhN2JlYmIxNjViNjcyODE4MjdiNDhmYjVlZGJlZAotMDJhMWE1YzA3ODRmYzU3ZDM0ODdkYWE1OTUyMGJhZGExYmUzZmI5Nzk1NjY5OTI0MzIxY2U0ZjQ2NmNkOGUzZgotN2U4ZWMyNDk0YWVlODBlMmRkN2E0OGE2ODYxYWY1YjlmMGNjYWE0YTJmZTJiMDM0OThlYWNhY2Q2YjljMzljNgotYThmMmUzOWUwNmJiYjA2MWNmMmVjMzgwYTMyZWZhZDBiNzkwOTc0YmI1Y2MzZGFmMDk5MjQ3MTQ1Njk2NzM2MgotNzdkZTM0ODEzZjI3YWJlOTkzMDJmODZiYjRkMjkzYTM3Zjg0NjY3ZTdmM2RmZWU0Y2ZlOWQxYTY3NmE1NzI4YwotYWViNTIyMmZmNTBkYTk3ZTc0YjJjZGViZjcyNWZiY2E3MDE1YTE4ODg5MWM4YTM3NmI5ZGQ4YTY0MmM0YjE4NAotYjFiYmYzZjM3NmE2ZDZlMzFlZjFjODM1NGRkZjgwMzljYjIwZmFhYmNiMzRkNDc0OWIzYzhjOGQ2OTcyY2ViMQotMDZiOGE1YWFlM2FlNDBhOTFmMWYyYjExNTU2ODFhOWNjOTMzZjg3NTI4Yzk5YTJiMDI2OGI0M2EzZTgyOWU3ZgotM2JkODYzY2I1Mjk1MDc3M2JkOWIwNzMxZGM0OTkyNTQxZDdkZTdhMDU1Y2E2NWRkZDIzMTdmMTcwNWMyMGQxZgotOTMyOTFiY2MyNTRjYmFiYTQyNWMwMzJiM2IxNTA1MGQ0MWRhMTRmZmUxYjNkNjg0ZWVhNDI4MDk1YTAxZTkzMQotOThkNGY4NDliMjM5YWQ5ZDc5ZjQ1MDJmMDI3MWFmZmIwYzI5N2YyZjM0N2JmYjljMTM3NzgyNjQ2ZjY0OGY3NwotMDA3NmI4NWY1YTkyOWZjZGVhMjcwMzMzM2Y2OTE4YjhmMTI1NjI3ZjhiNTA1YzY4OGUzMGYyNThkZWQxYWVjZgotMmM4NmVkY2Q4OGMyOTI0OWE4MDgxNzMxNzM3MTk1ZmFiN2FkYmI1NDc0M2JkNjY1MTExOTRkZWUyNTE2OTU5YgotYTIwNzAxZTJkOTczNDIyNDgyOTc0MjU0OTFmNmM5NDcxZWM5YTk4ZTYzMGQ3MzRkYWMxOTcyMWYwYjMyNDQzMgotYzhkN2EwYjc1MTQ1M2Y4OWY3MDA4YmEzN2JjNDhlMDgzMWVlM2VjYmQ4YTBhMjkyZDYzY2ZjODkwYjI4ZjY5NQotOWUyOWFjM2I0ZGRiNzhhNjg4M2I5MjcyY2UzNGEwMTJhODJhZGVjMGI2YjY0MWUzOTQwYTQzOGEwOThjY2ZiZgotYzUwNTQ0Yjk0ZmFjZmQ5ZDdhZTA5YWQwNjMyMDE1ZjgxZDJmNzdmYzZkODBhNDJlYzExZDY3ZDhhOTFjMzc2YwotMTNjOGUzNDQ0Y2RmZGU0ZDJhMWVkMDIxNDEwZjRkNmE0ZTk3ODA0YWU5NDliZDkxMzA5NGQyMzEwOGM5ZDM4NAotNTZmMTEwMjVlMmQyNDkzOTExNGI2YmNmNTc5YTAzMTVjNTJmM2NhMWJjYzI4NjBmYzFhMGI5ZmI4YTM3YWUyZgotYzIwYzBmZDQ0ZDIxNWZjMmFmNzM3ZmQwMzM5YjA3MGQ1NGU2NjQwMjEyNDAwNzFjNjY1ZGU0MTcwZGZhMTgyZAotNGUzODU2ODVmYjQxYTJkODU4ODhiMTE0OWU5YTc2NmNiNGYzMDliNGUyYmFhMjhjZjFmOGNjMTJjNGIxOWUzMwotZjA0NmNlOTdiNTNkZWI1NDlmZWE5NmNmNmNlNjYzNTdjNDkwNGI3OTMyZjViMWNlMDNjZmUzYTEwYzk3NmI5YwotYzlhZDExZDdhMDI4MTZmOGUxMTY2NmNhOGIzZWUxNDExZGYyY2E5NDE3MjY1OWJhZDkyOWUzZTNlNTI0OGY0OAotMDY5MGNlYzZkOGY3MDYxNjA4Y2YyNjcyZjY1YWJkYzk2YjRmY2E4NGQ1Yzg0NzQ0MGNmOTUyM2QzYmYyM2Y2YgotZDQzNjU1ODJlNGIxODdiNmExYTAyODJlZDMyM2JmMjIxZWRkMGE0Y2UxMWNlN2VkYTczOGQxYWY0OGIyZTE5ZgotZWIzZGExNjY0ZGU5OWM0NDdjMzVkZmQ0NTA2OWZkZWQxZmNkNzBiNGE2ODU1ZTkxZmZiZDcxNDZlZmU4ODAxMgotMGJmZjFkNmQxYWNiNTNkNWUwN2ZiNTc5NWY1NjFhNGEzZTk1M2JiYTdjMDNhOTc2MmFkYWUxOGU1OGRjZTZiMwotYjFhNzAzMTIyZWYzYjE2OTYzYWM3Y2I5NjgyY2U2MGUxNzk0N2U3ZTY3NWQxOTkwMWM3ZTgyNzJjZTRjOWZkZgotNTM2YWJkZmZhNDI5YjgyMGE4MmFlZTlhNzNkN2RjZjc3ZGRlNGQ4ZTI1MWNiM2IzYTViMGE5MWMwZmNkN2ZiYgotZWFkN2E4MTJmZjE5NGZkMDQ5ZjI4YjgyZjRjMmQ3M2U0MWNjNzNjMWM5ZjY2ODkzMWEyYzdlYmE1NDAwYTFiOQotMDkwMmVmZTY3OTJmMjA3MTM2ZTFlMTZiNDE3OTRlNmNiZjczMTY4ODlhNjAyZDM1YzM3ZWYzNmRlYzk1YWYyNgotZTliYjA5MDA0NTZmMmViZjI3MDVlY2NlN2IyZWQ5MDM0M2QyM2UwMDZlY2IyODJkNGIzNjI5YmIwYzM4OTJmMwotZmY5YzE3ZmU2YzVmYWI2ODM1OGUxY2Q0NGFmZjAyMTk0OGFjOWZiODQxMGEzZGUyMmUwYTAxZTM2N2M1MjQ3MAotMmE4Y2ZkMjg0Y2Y5ZThmNTA1ZDVkYmQ3YmJlMjQyZmUwNzFmZWEwMDk0YTU1ZWQxY2Q3YzliZTZiN2M1NmM5OAotMTZhZDE5ODVmYjc2MjRmNWU0OGNmNmMwYzJlZDg1YjQ2NmY2NGM1MmYwMTdiMjBjZGFiYjg1ZDI0NDUyZTA4NgotMzk0MjM2MmU3NjRhMmJkYTBmNmMxYjI0NDI2ZTMwMmRkYzQ0MDNhMDg3ZWZiMjg1MGNmMzI3NWM3YjI0Mjc1YQotYWUyNzBmMjEyODMxZjRjNGE1ZDk1ZGVhYjYxOTIzY2ExMjZlNTg3ZThmNWVkNGYyZDU3MzhmMDZlOGM0ZjkxMQotYjM0NmI4ZWNkYWM0ODFkZWRkMmY1NDYzMDVhN2NkNjNjYjY3ZDQwMDkzYzYxOGZiYmRmNDk4YzhkN2VhZDhjNwotMWY1ZjAyMmQwYmJjZmFhODY3MGUzYjNiOTk5YTE2OTdjOTQ3YWYzOGQ3ZTFhMzYwZTNmMDgyNWE5YWE3Nzg0MAotZDdhOWRmZDU3NWNlMmYwNGQzMDhmN2M1NTNlYmY1NjlhYzg0ZjJjMTJhYTA4NjljZTEwN2M3MTNhM2NjZTYyNAotNTA1OWJmYjNmNWFhMjdkMTBlMzM3MDg2MTQ0YWIwOTI4NmJlMzgyNWEzNDgyYzU0MjI0NTRjNmE5Y2JiZjIwNQotODMzMzE2NzgwZWI4ODMwMjc5NmZjNDI3YTBmYjllNTNhN2JmMjQ1NzdmZWIzZmE1ZDg1Y2I2MzQ0ZjkwODAwNwotMTgzNTIyZDNjNzYwYzExZmM3ZGE4ZDE0YmI1ZGQ4MDA1NzZhNmI0ZDFiOTkxYzFiZjNkYjBmOWNhMmFjNWQyMgotOTEwNzlhMTk5ZjJmNmU2ZGM2ODIxM2QzM2VhODkzYjc0ZjZhZmYzMGVkMWI1MWY4YjUzYTAxNWZmZDRkMjA3NgotYjcxZjczMjI1YjE1MWNmY2YxMWUyYTI5MTdjZjFiM2Y2MGUyYjRkNDQyMzA3YzM5NGUxNjI1ZjdlNjBlYjEyYQotZjJlYjljYTdiMTdiMDgyZjE2NjRkMDljYjdhM2YzOGFlYTk5YTEzZjY1OTA4OTQyNjEyNmY0N2ZhZDViNmRjNwotNjQxMDFjZDQzN2RhM2MyMmJjNDNlN2E4ZGUwNzI1M2ViMzcxNDcwZWUxZTRlNDJhNWQxZmEyYzRkYjU1NjVhZAotNzlkNjI3MWFlMjhlOGZkZTVkNGNiMjQwNjRjMTQ1ZGU0NGVkNDg2YTFlN2RmMmRmOTIxZjJiMWJlNWZkYjEyMAotZDhiNzgxYzM2NTVlYTcyZGMyMmEyYTJkMzc1NzlmMGFmNjBiNDIzMjBhYjI1YzhkNzY5MTI0MzUyNDQ4YTE1NAotN2EzODFiMzg4YTRkOWE1NGU4MmYxOTliYTM1ZjFhMzk4MTgyM2FiNjk4ZTNmODdkMzhkMzJhZGRkNGYxMzgzMgotNzdmY2M5YWNlZTdmYmQzMjg1ZjY4OWE4NWI3NmQwZmViOWU3MGYwOWJhZDBjZTE0NDc3MGE2Y2MyMDNjZTQwZQotMTU5MTJkZTBlMzQ2NWRiYzc5MThlM2VhNDlhZGU1N2VlOGM0OGM3NTkzN2Y1ZDI1NDk4YzQ1MTcwNjkzMDY3ZQotNjkwMjkzN2M5YjQzYWI2MDgwMTExNjYzZDVkYzZkODhmNzJhMzljNWU3YmFkNjc3MjI5NDk4MzIzYTNlN2EyMgotMmZlMjU1MmIwMGNiOTFjZTI4NDhhMWE1MzUzOGI3YWYyNTAzYTM2NzE5MDNlMTBkZjBlOTY0MWRiYjcwNTc3YQotZTgyOGRkM2NhZTk4ZmE5ZTFhNzRmNDM3N2Y5MDhkM2NkNzk0NjE0MDhlZDI5ODMyYmM0Yzk4NjU1NTBjY2IwMAotNDUzNTkyODIyNTUwNTdhNGJkNDg1OTkxNWNmMWU0NWVjZGI3MzI5ZjkwYmJmNjNlMGEyMmE1NGIwNWM1YWNkMQotOWM3YzRkZmMyNTQ4MmEyN2EyMGM3YWI5MDg1NDZjMzU3N2U4N2FkZTkzZWE0NjQzNjMxNGEwYTdjNTI0Yjg5MgotNGIwMTIyMzllNzdjZDY1YWUyOTQ5YmJmN2U0NmE1YTIyNjliN2ZmYjFjZjhhNWJjN2VlYTE5NDRkMmIwYmYzNwotYmZjMzZhZGFkOWE1OTlmYTEzM2Y3NzkzNWYyNGVmNTE4ODE5ZDA1NDM0NWRmMTQ0NzMxZGQyMzMyYjBmN2Y1ZQotODRjNDZhZjQ4Njk0MWNmMTI5M2U4NmVlNzE5YzliYWI2MjYzNDcwYzcwMDljMzkzM2YxODU3YjBhODYzZTM2YwotMjg4ZDM3ZTZhYzg1ZTZhMWI0ZTZlOTFjMGE5ZmUzNjdiZWM0MjdlYTM3MTNlOGQxZjA1MjNlY2ZmNjA2NzcxNwotMjQ0Y2EyMWMxNzc5Njg1ODM4MTVmMDIzNDIwYTY2MGY3YWE0Y2RjOGJmMjVhYzNiM2U0Mjk5NDJiOWY1MTIzZAotODQyMzRjMTg2ZDkyMjY0ODdjNzZkZmVmNWQyNjE2NTc3MWMwZTc1ZjBhY2U3ZTM4ODJlNDlkZTgzMWI0NmMxMgotZTMwZGMzNzM5NTI0MWQ3NjE5YzA1YWJjNDBmNWEzNmY4MDQyYjQ2MWZiNmMzYTUxODFmNzdiMTRlOWU2ZDk3OAotMzczNTZiNGIzMWZhYzM4NTBkZjE4NjkwNjM3MjQzMTYxMDRjNzk5YjZhMmY0MmMzNjFhMzc1ZTRkMjllYmE3ZgotODUwZmUyOWVmYmMyY2VmNjI3YTI1ZGI1NDlhNGQ0YzQ4ZjlmYzlhMmYzMmZhNTBjMWNlNmI1YTU0NWE5NWY3ZQotYmYyZTllZDcxMGFlOTFhY2UxMjgxYTQ0ZTQ5YWVlNDEzM2NjYzA0OTI2YTZkYmEyNGI3MjFjMjExODhjODlhNQotMmE0OTc0NTUwMWNmYWE0MzY0Y2Y0OWUzZWMyYTU5ZDllZTQ2ZjMzMzYyNjM0Zjk3NTg4MjdiMTk5ZmQwN2RiYQotOTM5YmQ3Mzg3MTI0NjU2ODMxODYyZjcwYTk3YzVhMDU5NTk1NzJjNzQ4NjVmNTkwMmU5NTA5M2ZlY2RiZWEzYgotYmJhOWI0N2RhY2U4MDcyNjJkZTBjN2VmMDQ4NDMyNTlmNThhMzIzNDcxMjM3Y2Q1NzMyOThjNWQwYTA2NTBhZAotMmFjYWJkNzFjYjQ0YzYzNjc1MTkyODQ1ZTNkMDFiM2IyOGFmODcxZjM0N2Q0YTQ2MGNjMjhkOWU5NDQwOTQ0MwotMzBlODkzZDI3YjA2MTMyMDYzYWI3MjdhMzhmNDQ3YTJhNDYzM2QyOWFkYWMwMWJkY2NjNzYzNGU2NGRmZGM1NQotOTE0MWY2OWUxMjAyYzRhMGZkNDg0NzliMGVkOTVhNzYwNWM5NDkwMTM3M2UxMTAwYTZjYmZjMTEzZmNjZTQ0NQotZTAzMTdjYzk0YTg1MDdkZDYzN2MzNzY3Njk1NGI5ZDM0YzY3MjdhYWNmMTcyODU4NzZkYjE2ZGQwZTExMzg0YwotMmI5OTZlODVlODJmZDhmZDJiOGY5YjgzYmNjYjM5OGI5OTczNjRmMGRkYjcxZTYwY2NjNTBjZGQ1ZDEyMmVlYwotYzM2Yjg2YTg5ZmJiYjViZmIyMjdmYmEzYTdiN2RlN2M5MDdlNTg3ODBmYzI3NmMyNGZmMDY2OTgyNjkxYTk3YQotNTBkMTQzNjJkMjdkNzkwMzc1YTQ3MTYyZGVjYzUzYzVjMTFlOGE3NDk5Nzg4ZGZkODZhZWZmZmU3ZTY3NGFlZAotMjY3MDZlMmQwNzllOWE1NzFjNmEzMmFjY2M4YzBkY2YyMzUwOGY1ODQ3N2QwNWY5YTFmYzY3OWMwZGE2NDI1NAotMjdhZTMzMjkzZDAyYzllY2EwMWRhZjJkMGExYjA3ZTU1MTVkMzZlMThjYWEzYWIxYjZjNTczNmRmZGVmZTM4NAotZGJjZDI0NGYwYzExMDg3YTg3M2M0NTAxYzZkZTJhNWE1N2UzNDZmZDNmOTJhMDQ1MWU2M2ZmZjZiOTljNmRmYwotNjRlZDg2NzNkYzU0ZWY2NTA5ZDBkMDQzOTI1YmNlMzkwNzJmYzY0ZGRmMmM0OWI4NjAyZDFhNTFlZTgyMmYxOQotZDdiMjEzNWFhODQ2MjZiZmUzZmYzMjFhNmJlYzNhMDAzYWQ5N2U3Njk5Y2ZhMzRiZjQxZjljMmIzOGRmNDc5NAotY2I1YWUzNmM5NWY0MmI0NDIxMmRlNjdhOTZjYTlkMDQ3NTg3OTk4NjM2NjczYTAzMWM0ZWIwM2NmMWE1NTMyNgotZjVkOTRkZGU3NTA4NmI0NGYwOTVlZGUwMDY4ZmI2YjlkMjU2NzU5MDQxY2RhMDRlY2FjYmQ4ZDc3ODQxNTlhZgotYWUzMWE5YzYzN2Q5YTVjMGM2ODQwZGQ5ZTMwZWFjYzY2ZDRkNmZkNmYxMmE2MDNhYTJkYjNlOTg2NjY5MzA3MAotMGQ2OWNkZGM0MTZkNGI3NmNmNmI4MzVjN2JlYmY5MTQ4MTZiODdlZGNkNWEyNGUzNDZlYmEyZGRlZDMwZjVhMAotZGMwMzNlOTNiMDQwYTZlZTdmOGFiM2M0NGM2MTAxN2M3NThjMTFjMmUyZmUzYzRmMTg5OTYyODdhNDhmYTlmOAotZmQwNjhjNDJkMGQzMzg0ZmYyN2M1YTg4ZWY2MzAxMjU1NjI2NjNlZTk1YTY2YjdiNTg4YjQxN2IyMGQzYWU4NAotNmVjZjI2OTM5NDBkNDczM2Y5ZTcwYjA0NTViNjA5N2U3MzU1M2VlZDM0ZGY4ZGE3MTJjMjlkNzYzMjY2NzBiNwotMTNmMTlkNGI1YWRhMTgzM2Q0NmZkNmNmYjkyYjg1ZWI5NDZjYzc0MjUyNzE4Y2M1ZTYwNWNkNmMzYzVhNDZlOAotNTE1MzZjZGRjYzNjYjI0NGM3OGU2MjlmYWI3ODRmZDc2MzcyY2E5NDE3ZmE2N2YyOTJhN2U3ODBiNzgxODZkNwotZjM5MWNkOTFiNjIyMmU4OGMwYmNmZjY2MjA4ODE0OTY1NTExOTY3YjJlZDBkMDc1Yzc3YjU3NzAxNjA4YjY0NwotYjRlNDYyZDNlNTZlMDZjMDQwM2Y4NTg1ODJhNzU0ZGNiZjg4NDFmZTgxZDM5MzU5ZDhjNWE3N2M4YWU2Yjc5NQotYzExYjg0ZjcwMmRlMDlmMjI0OThhMTg5YTRjNjlkNzI2YTYzMjYwNzg0MDY2NTYyYTUwNTQ0ZTVkMDdhZWJiNQotODI2NWMxYzY2MDdiZmM2MDA4ZjJlZGZjOWQwZGU3MTY0NjU0OGU1OWJiMzc0OTk2YTQ0MTJhYzIyYWI0N2RjOAotMzU3MTUzYzdjOTA2MWU5NTk1MmE3MjlhODBmYjQ1ZjM2NTBmYjBjODRhMDdjMTk1NmRjYzA4NTZkN2IwZmE3MQotM2YwOWMxYjk5NWIwYzQ4YzU3YzkzNjdjMDYwMWE0NmNkYWVmZDA0NjA3MzU2ODJkNWFhZmU4NTQ1Y2JhNTg3YgotY2E2ZTgxNDRmZjE0YTI1YjJmY2U5YjIzZDhlYmY3MTVjNWE1NDRiZDY0NmQ1NDYwZDJmOGNiZDQ0YjZkODIwMwotNTRlNGI3Mzc3ZGIzNTFmZjI2YjdiOTMzNmE3ZGNhM2E2MTBkM2E5MjU0MTA1NGM1NDQwNjQ0NDdhYzZkMWExNQotY2YxZDFhMzc5N2NmZTg1ZmI1NWI1NmFjMDFmYmI2ZjQ3ZTljOGU1YzI5MjliZGM3ZWUxNGY2ZDg2ODQ2NDQ5MwotZGY0NzU5Y2M4MDQwNWVmMjcwYTgxNjYwN2YyNDhjNWMxZDVjNTYwMzVhOGZmYzFmYzFiNWY2OWFhYmUyZjk2NAotY2JhNGMwZWQ1NDE2YTIwZjEwMmM4MmJkZmU1OWRkYjRhMTYxNDBjODVkNTVhZjJhYTUyYzkyZWU4NWMzNzg4MQotOWM5NTg2NTcwNGIzY2MzOWRhNjI3MGRmYWNhOGMzNjExZWRiYjZkYTc2N2JiNTBhMDNkNmEwNmVkOTg5MDEwNAotZGEyYTU3NWVhNDVlMTZkYTJlMWZkY2Q2MDNjOTFhZjZiZWI5MzRlYTMzMDIzMTUyYzI1YzI3YzNjNzcxYjU1MwotMWE5YWExYWU2ODRlMTUzOWU1NDk5NzJjOTczMjFmYTA3MTA3NTliNmQ0YjllNTVlZjFiNDFiZGEwMWQ3Nzc4NgotODdjMjJjYjc5MzEwYTkwMDBiYWRlNzRhOGFjOTdiM2ViMmZmMDI0YmZkNjBjMGFkN2ZkZWRiMjNjODA1ZjY0ZQotZmQxMzllMDE1ZTBkMWQzNTkxYmU1OTMwYzM1NmU2YjhjMWE0ZjBhZDlhZjk0ZWRlZDRlZTlhYWE0MzZkNGNmOQotNThjNTg5N2QwNmI3Yzk3Y2RlYzIyNzQ1YzQ2ZTdiMzc2OTVhOGM2NjE0MGY3Zjg0MjExMzg4OTJmNDg1MWMzZgotZDM1NWIxZGUxZDMyMTQ1ZDM5MjQzZDA1OTBhOTBmMWM0ZWMyYzI0NmQzZjM3NzliMzE5YzM4ZDQyMjE1NzZiZQotZmQxN2Q4YmM4ODE5Y2Y4ZWMzMDA3NTMwNWY4NjM3ZDFkZGYwZjcyNTVhZDQ1NmNjMjkwZjEwZWMzOWRkYzJmNQotMjkwMDkyNzE4ZTdkMjY4NTMxYWFlYjM3NzcwMWRhZmE5MzNiOTRjZTc2M2MxOTU0ZWYwY2NlMTlkNzdjOTIwOAotMTU3YzM4YjI3OWM1NzhjNTZiN2U1MjNhZmNjYzkxZmU2ODE5NDgzZGUxOGNlZWJiZTc0YjgxODQ0ZGRiODRjNgotMjJkNGYyOTY2MWU4OWU1NDE3Y2U0M2MyODAyOGU5ZTFjNTQwNjNhZmQ3MTYwODhiNmU4ZmUwY2QxNzAyYzJjMwotMzEyNzM1NzNmNWMzZDc2MGM4YTJjN2NiYjM2MmVkNjUwZWE4ZmY1NGYxOWUwOTdmMTRhZjk3Mzk4ODVhZjE1YgotNDZlZDMxY2RlZjczZGI2NzFiMjJlZmQ0MWZmM2Y2YmJkMjk2MjVmYWU3NTcxZjk1NDJmYzA2Yzc3ZTI4ZDJmNgotM2JhMmM5Y2Y4OWRhNTY0ZGUzYTZmYjNmMGZmOTgxYzVjNDgyYTFlMWRlNzMwMDQxYjdmMWM4OTBjNDUyOGJmMQotOGU3OWYyZmE0ZWQ4YTczOGYwOWE2OGE1YjUzZWRmNmNiY2Y4ODYxMDAzOTE3YTg5OTg5MTQ2YWY3YWIyZTVhMgotODM2Mjc5NjQzOTAwYzI3YTkwNDYzNjc5YTIyZjBjYTUwNzc3MjhmNmFlOGEyODMyNGY5YWRjYzE5ZmE0OTNiNQotZTI0NjVjNmQ5OGNiNjA4ZjhkYzUyY2RkNmM1MmJhZDFhMTUwMjc3OWI2MzhkZjkzMzZlMTJmMDM1YjNjMzEwYwotYjkyYjNhZGQwNDczNjVmMmQyNWIwZWM3ZTA1Y2M0NmYzMWMwNTc1ZWFmNGViZWEwYjY2MGFhMjBkOWU3ZWRmOQotMGFhMDc3ZTMwMDBlMjUxNzYwMzhjY2M5MmQ0ZjlmZGJhZTZiMDVhYTJlMTdhZDAwNGUxMzMwODQ2NGEyMGNkZAotMDI3MWVkMGY5NjRlNzNjYjExZjE4YzJiNzk1ZGJhMzFjM2ZmZDU2NDhjNjNkYWIzOTUyMzhiYTdjMGNjN2RiNgotYjIwNmU2MTc5YzZhZDdjMjUzNGM0NmEyYjljMWQ3ZmU2YmM2OTNkZjM1MTE4YjcwODkzMzY3N2FiM2E3NmNlZQotOWFjMDMwM2MyYzA5NjdkNzE4YTE2OTFmNmE5MjJhYmI2YjM3NjI1ZmMwMTkwOGMxMDI0MjczMWI3OWExYTgyYwotZmNlOWVmYmQxYzZiZDQ4M2ZkODY3YmMyOTM4NjA5ZWU1MmMwMjcxYTdlZDFmZGUxYjg2NjdiOThlMjJmZDQ1MAotODZmNTE1ZmQyYWMyYzExYzUwZmNlOTVmM2U1MDZhYzY1MThkZDRlNTMyZGRiMTAwZDg3YTkyNDBiZGNkYWZjMgotMGM4YmVjNDY3ZDc2MjYxMTY1ZTlkOGJkYWM5MTk3ZWM3OThjODFjZmU4MGUzNjE5ZjQzMjY3NGNhZGY0NGZmNAotM2Y2MTA4OWFiZWIxM2Q2NjVlNzkwMWY0YTFiYTg0MTE1MzMzMjEwMDA5ZDU1ZTA1MWI2OTJhZWJlZTlkOWJmMwotZDAyMTljMjkwMTkxYzE3ZjczMTdhYWY0MDJiODhiYTM1M2MyNWYxMjZlMmQzMmJlZjczZDUyOGM2NWFmMDg0MAotM2VkNDA4NmRhZmY1NzQ3NjI1MzE3OTRmZGJmNjM3Yjc2NTI3MzkxMTI5N2I3NTMzODY5MWU5ZWY0ZDJhZDQ1MgotMjI0NTRjNmE5Y2JiZjIwNTAzOWQ2ZDM1YzA5YTBjZTI4NGU5YTc3Njc3M2E5OGUwOWU2YTgxNmRkNzFkODBjMwotZDgwYWJjYjAwNjM1M2I0YjdjNDhjNzZiZDljMWVkOWRiNzhiZjYyZTlhZDIyMjJlNWJlZTlmZGUwMjgxZjBlNgotMTFmZDZmODk5OTM4Y2VlNzI5YTE4NGJlN2NiZGIwYjg0ZmM5YzM4MGQ2YzY5Y2RkNmUwZjNmNjc4MGFmNjg0YgotY2VjNjM2MTY3Mzg1M2I0MDBmNDdlMDAxNzdmZjFlZTdmOWViOGMyODVhNDllMTM3ZTA4ZDVkNzY2M2RmNzFhYgotNzFjYTcxYWRjMDg1NzA1NTY4NmEwNDc3N2EyZTE0MDhjZTYyOWUwMThjOTc1MjRhZjU1ODg5OTFiZTkyZTRmYQotNGEyNzc0NWFhOTUwYTcyZDQ3OWM0OGQ2ZjhjMzBkNDI1OGE4ODJmMTk5YjQzNTlmOTJhOTYzZmM2NTAyMzBjNQotNzllZGY3NDNmMmNmZTg2YTE5NzI5NmRkNjc1YmYwNWYyNWVkOTY5ZGU3N2JmZGQwYjUxOGNiYjVjMzBiNGU0MgotMjdjNTExN2YyMzViMzRmN2ZjMzI0MTNhOTgwYTM4OTY4ZmY5YjgxNTEyODBhMDI1OTIxNDc5MGU0MjFkMGYzOQotZWVlYmU5OGFkYmE4MjA0MDFjMmQ0N2Q0MTMyY2M2OGNhZTBmNTliMDQ5ZDc0ODlmNjIyNTliZmM1NTA5MWM4MQotODllMjQ4MGRjYjc3ZjY4OTk2NTE1MWI3ZjY3MDZhZjY3NWE4NzEzNzBkMjE5NWIwNzQ1N2FmODgwOWY3YWJmZQotN2QzNjcyZDc2YTc0ZjU1ZWM3NDllZjQwZjc1NWEzZWVkOTZjY2UwMDA2NDRjYTBjNDk3YWZhYWI3Mjk0YWZkYwotMTNjMzIzOWY1NGYzZWVlZTgwOWJjZDkzNmZmNDQ3Mjc3ZDJmMzYxMzkzNmU3YjM5ZTY4M2YyNWI2MDUwNWYyYgotZjQzNDNlZDA5MDJiYWRlYjYyNDk1Y2VmNTM3ODliOWU3NGJhZjg2NmJlMzNlZmU2NmMxYzVmYWE5NWY2MGFjOQotMTU2YTI2YmI5ZjcyY2I3M2U4OTFlZTRiOTA1ZjcyODQ1YjNhZTA1ZTAyNTg3OWYwN2E3YjkxZmQwNjIwNDE0OAotNjA4MzJkNjRiNmJkNWFiZTA0NzJhYTdhZmYwN2ZhMDVkMjNhMDEyMzhiNmY2MjRhZThkYjI1YmI3MWRkZDg5MwotMWZjNjAwM2YyMzI5MmE0MjhhNWE5OWRmNTg2MWUwYWU4NThjMzk4ZDY2ZDAyN2EzMmE3MWQ2ZTYyZDYyYjZhMQotYTFkYjg2YjFlYTMwMDVhMjAxNjE4ZjIyODk5Y2IxZTdkNzBmNjVmZGNmYmY3OTYyZWUwZDBkMTU0MTJkMDA2YwotY2ZlYmQwZTA4OTI4ODhmMjYyMzhiZDFmN2YwOTBkZTAzYzQxZWU0YmE1MzU0OGY0NjlmZGEyZDk0ZjZiM2RhOAotYTYwNmZjYzM1NTRlM2YyNjFiODQ5MGEzYjhjZGUzZWU4NDY1NDI2NjhjZTNiMzcxMzE4Zjk4NjRjNDVhNDIyMwotZmEyYTg2ZTEyMDM0YmJhODY3YzRhYmViNDYxYzYwOWM4ZDQ3ZTE4NDcwM2JkNmM4OTFmMzkwNzZlZTA2YmZkMwotYmZmYTY3OWRlMDdkOGM4ZWVkOWI0YjI0ZmY3NGM2ZGIyY2Y4NDEwOGYyOGU0ZjBmZGI3OGUwZTcyNmE5YmQzZgotMmExYjk0ZGFlZTE4ZmQyMGYyYzkwMmNiZWJhMTNjMWIyODFkMGExMWE5NmIyMDgwMGU0Y2Y5MzlkZDMyYmRhOAotMjVhYTYzZDlmODZmMzgwYWY0ZGQzNzlkODA0NDFkYzRmYmMwNzE5YTY5ZWJjMTZlMTYxNzk0MGExOWViMGI0NAotOTY1ODE5ODJkNDViMDhlNTEyMDAwZTM5MTU0OTBhMWE3OWI5MDhlMWU2M2FlMTI5NzUwZmE0NWRkMzNjMGU5ZQotMmU3NjdhODljNmYxMWUzM2YxOTNkYTE4ZGM2YzgyMGRiZWQ4ZDM3MDQ5MmMxOWFkOWQ2NDA3ZTUwY2I2MjQ0NgotZDNhYjAwOWQ5ZThmM2M1MWVhYzIxMzlhYjY0ZmZhMTliNzA0MDU4MTM2NTJmYmJlMzNmYmU1YmM5NWQ0MGI1ZgotOWVmODMzYTRiMWI1MWU1NjA2NWFiZmVmMTAzNmVlYWI4ZTA0ZjA5NmFhYzBkMjgxM2MyZTcyMWUwZGI5NzM2OAotYzE3ZjBjYzk3MWM5Y2ExOGEyZGIxMTc0NWY2N2Q0MmNlNTE0OGUyZThiMmMwZTEzZTRiYjE2YTI3ODlmMGM0YwotZTdiNjViZTQ1NGVhNjIzMjEyYmIyY2U1YWZjNmI1YjNhZDViZmVkNjUwNjMzNTRiZWNiYzE1MzEzODk5NzdlNAotNjU5OTg5NmQ5ZGRiZGYzYWQ2ZmRkOGE0NGIxNGVjOGNjOWYxMzFkNzNjYmE5MWUyOGNiNTRiMzc2NTVlNGI0NAotZGIwNDU3YWU3YmZkM2M2YjczYmFjZjA5ODYxYTdmZTRiNjY0OTI4MjMwZmEwM2NiOTllYmI3NjM3MDNmZjhkMgotNjg4NzdjM2EzYjFjZjkxNTg5MTU3OGFlYzYwYzFmN2QxZTQ0N2ZjNzc3ZDhlYjM1NzNiYTJhOWNlNDdjOTljYQotYTlkNTJmMmYxMmIxMDFmZTQ4NjU4ZWRjNzU0M2VmODVkZmUwMWI3MmRjNGRkYTU5Nzk1MWVhNDI5OGZkNDQ0YQotZWUzM2IxNGZmMmY5MWI3Mjk3OTIyZGFhN2UzNDY0OTMwODA4NjhmNTZhYWEyMTc2YzlmMmMxMjg0ZTRiMjY3MgotYTNiNzVmYWNlMzlkZjFjOGI3YTgyNWEzYTVjMjU4NzFkMTkwZTQ4NTc0ZTFkMDNhNWZiMDk0ZDQxOGM0N2FjMQotNjg3ZTgzNDcwMzZjYzQ0ZmVkM2Q4NGZlNWQ0Yjg0YTYxZmFjOTk2OGI4ZDAwNGMyODUzOWEzNjgxNDc2YWM0NQotNTY1Mzg5MDFmZjI3NjRjMWM0NmY1ZmZlMDQ4Y2QzYTdlYWZjNmE5ZmU5OGZmOWIzY2ZkZjNhYzAzNWE5ZDNmNgotOGQ3NTQ0MGQ0M2ExODQyY2MxZThiNmI5YjZkNDlhOWJkMDkzNjIwNzM1YzljN2MxMWMyMTY1MmE1MjYyYTg2ZgotYzEwNDEzYTM3M2E5ZTAyYTQ4OGJkOWExNmE1MWZiNTFiMDI3YjJjNWNkZTM1Y2IxYWVkOTFjZTU4NzAzZTFlOQotZWJkYzFhMTYxZDc1NGVlNDM3NDEyMTgyZjdkNTMyNDI2ODQxZTI0NTVhZGQyMmMwMzFhMjE3MTQyNjg4MWJiZQotNDA5MGQxY2JmYzQ5OGVmNDY3NDkzMDhiNzNlYmY0ZGM1YTA2YWRkZTZmODNiZmIzNjgzODhiZjdjMmQ5MDBjZgotNTc5MzJiYTRjOWRiMGYxNWZhZmY3Y2JkNzAxMDUwYTFkYjk4YmRjOWE1ZjlmNDI4OTgwZWNmYjFlOTk5ZjQ2MAotMjMxZTU5YjVjNjJjNzg3OTI3OGYxMGY2YTYxZjc5Y2M5ZGEyNGQzNWEyZDI2OTk2ZDhhNGExMDZlMDgxYjhjOAotM2ZjYzAxNWI3NzVhY2IwMGY3ODk1M2E4MzQwMThjMTQ2YzY1Y2Q3MTViZmI1ZjkwYzAzZmVhYzAxODM5YzZiYQotMTU2ZTMyN2M5NzM1MGQyODUxZGQ3N2U4MjYzYjk2Nzc0MjQ3MmRjMWUzYjhmMGU5ODBkZTlmMTgxNTAwN2NlYQotNTE2MTlkODQzNzViNzc3ZDVjZjMyYTE0NGFmZmQ4ZWYwZjRmZWUyZGYxZjgzOWIyYTVkOTAwZWM4ZTc2MzYzZAotYzgyOWYxZDAzZDIxMTE3NWFiOTgyMjI2NjE2YjE5YzUxODAwZTRiNWQ0YjI4YWJhODI5ODBlYWFjNjEzMTk0MAotMDI2ZTNjMjI5N2UxOTdmYjhmMTMwZmIxNWQyYzQwOThiOTdjODQwNzRkNGU1MGI1YzY2MDZiYjBmMzIzMDkzMQotNTJiMzlhNTg5NjRiNGNhNDRjYWY0NWY2M2FmNDliMzMwYWIzZGQ4NjNmNWViZmE4YWIwZGI2Y2MzNzgzOGE2NAotNzJjNjAxYzIxNTAzN2U5NGFjODk0MjBmZWExM2Q1MjE3NGVkNWM5MzNlOGM4NTI1Zjg4ZTZjZTQ4MjY2MTg2MQotNThiOTA0YmE3ZmRiODY0Y2ZlMDRiZDdjZTYwNzBmYzVlZjU3NmIxZGU5ODVhOGM0ZWVjYTdmZTMyYjkwZDMyMAotOTA5MWQ4OTMxYmMyMWM2Zjk2OTI4OGIxY2FiNDRiYzUzNzU1ZDhkOGYyNTc0NjY4MDNkZmQ1NzI1ZGJiNTgzMAotNGJlNmM3ODRmYjZmOGM1ZTY2ODAyMDI4NzU5YzA1OTcyNDZmYzEwM2ViNjNiNThmMzYxYjE0NDY2ODcxMzU3MAotOGM2YmUwNzFiNTFmZGU0MjVhMGFhNTcyNDk4NmNhNjdlODdlYWNiOGY1MTdmYjMxMDNlNTI1OTViYTAwMmUwMgotODJlNTRjYjgyYjA0Yzk5M2Q5OTFkNzBiNWVhYWM3YTYzOTIxM2VjMGY4MmExZDc3NTBmM2Y2ZTk0ZDhhYzdhMAotOGE1ODZiODE2YTlmYmU3OGZmOTZiZjFlM2NkNTI3OTgwODlmMjc5YTBhMGQ5M2UwMzE0ODgzOTg4YmJhMGY3OAotN2NlNTc0NWY4YjA3ZWIzYjc1MGMxZDBhMTNmYTRiMDMzODM0NjIyMGZmOWZmMTBjZmUwNGYyOWUyYzI0YWVmMAotZjc3ZjY3NDhiNjNiMGM2ZDUzNDYxNTM2MDM0NDUwODIwYzczMTE2Y2M2NmZlYjljN2Y3ZDA4ZTBhNDdkNGM5MgotZWM2MWM1MzQyMDk5YzI3ZDkzYTc5ZDljOWYyNzgxNDJiYTAzYjUxZDZlMWUwMzk0NGFiZTA2M2JhYWMzMjYyOQotMWI1ZGMzMGRlODUxMmYwY2IzYTk3M2NjNDNhZmMyYmU1MzJlZDAxMmMzZWI1ODI2NmNiZWViZjYxMWY5MWFhMQotNDg5ZDAxNzRlNzEzYjk3NmYzYTBiMzZjNTc1ZGY1OTdhM2Q4YjEyZDRjNTQ0MWUzYTQ3OGYwOTMzZWIxMjllYQotZTQ0NDg0ZTA4NGJkZGU3ZDJkOWJhMjNhNmJmMWJiZGQ1MWQ5NmJhNGE1MjA3YWYxMDQ0ZTkxNzE4NmI3ZTY2ZAotYWNjZGUxMjk1YjYxNWYzN2YxMzk1ODI3ZTI5ZTNhMTcxMWZiMmI2YzUwMzc0ZGY0NjhiZTQyMWNjNTMxZWFlNAotYjNjZDI0NzNjOTc5ZDExYzExYmVhZjE0YWE5YjZjY2U0YWNjODIwOGYyMmY5ZmJiNjcxM2JiODMwNmU1YjVhNAotZDQ2ZDExZTYwNDExNGQ5YTVhNGJlMDYxNWE4NDNkMTBkZTU0YWQ2MmQ1ODIzMDJmZmZjZmFiN2Y3ODViMTFjNAotODMwODEyODZjZmEwNDMwMmY3YjkyZjY0ZGJiNDJmM2Y5N2NkZTBjMDQ3NjYyYmU2YTNlNTg5ODZjNTRiN2MzZQotMmFjMWIwZDE5YmMxNDkwMzExMTUwOTMxYWVkMzQ5N2FiYWE3NDMwM2QzZjBhM2YzYWY4NjY3YzRiMGI5MTM4NQotY2RjOWJkMmFlOThhYzMyYTJkOTQzZTA1ODNhMGYzYzc0ZmNiODAzNTU5ZmVhMjExMDk4YjQ4Mzg1ZDNkOGQzMgotOWUyY2RhNjFkNzU4OWU1MzgzZmEzMmFiZmNhYzUwMzU1NTQ5ZjFlODE5ZWIzMTUzMWRhZGM0N2Y1ZTc1OTc5MAotZDM1NTQ0NGYxZWZhNmIxZGZjNzcxM2Q0NDYwMDgyMjU4MDhmZmZiZGM4MWEzYjFiMzc0YzdmMjkwMWUyN2UyYwotNDFjNDc3ZGUwZTUyZTkwMDUyODhiNzE3NTExN2IzMmMzMjZiM2FkMmI5ZjkzNDI4NjVkMGJkZDBiYTYwNDRhYwotMzk1YzJjNjliZjgyYTdhYTliNzc4NDJhM2JjN2I0YTY3NWIwYzMyYTRlNDUwNGQyYTlmZTg3NjIxNzBmNTRjMwotNGRjMzYyMGNkZWE5ZDE4NzdmMjc0NTU5YWM2ZDM3YWE4M2Y5MDM0NjEzMDQ3Mjc3NTg1OGMxODc0NmRiNDU1OAotNGYyZmE3Njk4OTI2YzRmYjJlZWYwOTUxNTc5ZGFlNjNjMmQzYzdiOWUxZmM4MTFlZTVkZGE0ZGM1YjVlNjFmZAotYzBlZDIxNzI0OTAyNTMyMDg3ZGJlZjExYjFmZDBkNzFlY2E5ZjI3MWEzZDFiZjhkZWQ1ZGYxOWRiNjc2MTU0NwotOTdkMGExMmY5NDE0N2Q2NGJhZGU1MjcwNGY4ODBkMGZjYjg5ZjQ5NTg1NDdjNjgzOWM5ZTExMTg5Mjc5N2YyOQotNGU2NWY3YTU0ZTE0ZWEzZDNmNTA3MTI5NzlmODQ4NTJlNTdiOWMxZDcwNDc0YTM1OTNkNTNmMjE2MDNlMDBlMAotZTc5ZmYzNTU5MTRmOWEzZDRhYjFlMTQ0MTBlYWM5OTI2OTI4ZTcxNDI0ODUzNWIxNzhkNmZlOWUwZTg0Y2U5OQotNTlmNjZmYjUyZjM3YTRlM2RmYTU0ODhiNzZkOWFlMmY2MmQ0NDk1YmNhMTFjYzE0OGRjMjBlMjlhNjk0ZmFiZAotZTY1Yzc2MjllYmM0MGZmMGMwZmExMDk2MzE2NTVkM2VmOTg0OGUxNmFhN2M3M2NmZDRhZWQwMmY4ZjEyNWFiNQotMGQ2MjhjZTUyZmNhZTU3N2M3ZWYwYWI2ODhhMmY0ZmE5YTBlMmE5YjEwYjkzMTMwZjBiMzU3ZjQ2NzljMWY3YwotOWJkMjcwZjM0ZjBiZmQ4NjQ1OWI0MDJjNzQyMjRhNjIxZGZhZDZlZDMxNmQwNWUxNWQzMTcwN2ZhZTdhOWI2MgotZjhmNzU1MzczMjY3NDJmMWU5ZDBjNzQ4MzQ4OWY0ZjRmYTM4ZTBmMzI3ZjI0ZmJmYjI2MzA3ZWFkMjcyMGJkOQotNjc4ZjQ1ODc1ZWIwNTAzNjM0MWJhMzg2NjA2MzBiN2QwMDUzMDRkNDM4OGZmN2ViM2JlOWMyNjM1YzIxYWYwYQotMDJkMTJmZDE5YTRlNTIxODFhOWM3ZjIzNTZiMmExNmVhZTRlOGVkNWIxZWEwYzAxNTY1YzI2ODU2Nzg3ZmRmYwotMmFhYWYxMTk1OGZmMzQxNGFiNjJjYTE5ZTk0N2RiNmI3ODAzMGUyYzUyOGYzZDFjMDIxNWNhZGJiMGMzNGY3MgotNjc1MWRhMDNjNjA0YmFlN2I5N2YzNzk4NjRiYjU0YmU5Nzk5YmQzODdlODhkNmM3MDUzZjgzZGJhZTFjZmIwNAotZjJhYzg3ZDEyZGNiZTE3YTUxODM3ODBmYWI0NTg5ZThiMGQ3MDkzNGU4NTZmMTE2MjlhOTFlNmQxM2RhNzcwNAotNzNjYzgwZTBiODBiZGQ0MmE3MWVlZTVmNDNhNGRhYjk5NGVlN2NmZWZmODNkMDgxNjlhYTI5OGM5OGE4NTQ3NwotZGZjNzI5ZWQ2ZGIwOThiNGFlNDdhMjViOGFlNzU4N2I4Y2IyZDU5Y2MwOTg5YzA2MTI5ZmMyMDFlN2M5Yjc2MwotZjhiM2Y2NTFhNWM3MzVlZGM5NzVjZWM0Y2U0NjFlODFhYzlkNWUzYjA4YTcwOGZjNTM2YjQ2Yjk1NjZhNThjMwotMDQwMmFhZmQyYjYwMThkZDA2Mzg3N2I4ODBmODVlMDk4OTVkZDRjOWQ4OWI1ZjI2NGFkNzJjYmVhNDM4YzE1MwotMDU0ZTFhNWVjZTIwOTFlMWQ0MTA1ZjQ2YjA0N2I3NWZmM2JlODY0OTFlNjk0YzFlMmUwM2JmZjM2ODEyZDE0OAotZDk5MjNmNWQ4OWEyOGZiYzRmNDVmYmMzZGI3NGNjMzdiZjNjZjQxYjA3MGQ3MmE0Y2Q1NzE1MjRmYTZkZjc4OAotMzE1M2U3NzgxODY0MTI4N2FlMjJiMWM3MjMzMWZiZmYwMTljY2VjYmMxNzA5NjE1YWQ3NDlkYzc3Y2I2YjMzMQotMzBjYTNkMGZhMDVjYzQ3NDQ3YzE3ZDk2Y2Y2ZGVkNzgyZmY2YjUwNTE5MzkxNWFlYmUzMWYxZjdiOTVkYzlmZAotOTFhMTI0Zjk1NTEyMjQxMTcxNzRhZTFlMDU3NTRkZWRjZWM4MTNhOGFhNDkzNGI3M2RlMWIyMGQ3YzEwYTIwZAotODNhOGIwODVjYzJkNDMxYjg3Mzk3ZTVmODI4NmMwYTgwNzA0MTAxNDc1ZWM5ODQ1YjJiZjdlY2I5YWU0NTdmZAotYWJhZDA5ZTRlOGVlNDExZDRhMjA1MTg1OTdiMDhkNWRkNjZhZmViYmEwM2Y2MzJmZjJlZDUyMDI3MDg5M2YwMAotMzVjZjA3MTZmNGEwOTJmYWY4YTBjMmEzZjczY2E0NmFmZDJhODI1ZWVlMDQxYmJjMmI2NDkzMzBmZTgyMTgwNwotNzA3YTA2ZWQ5MTg0N2I0MzRkMzQ3NDI4NDQ5NDdkNTRlODA0MjJmNWI1YjU2ZjZkYmRhOTM0MDg5YzMyYWQxMgotMzc1YjMxYWY5YWE5MTMyOWMyNTNmYWZkM2NmZjQ4NThjMzlhZTVlZmJlZDRkNTkwODE5ZDJmNTk2M2I3ZTA4YQotOTllMTU3Y2ExYzE4YjIwYzYyYThmN2JkMjc4ZjU2MGU4NzFiNjEyNmQ5Y2RjZWM1MmM2ODM5NDE3YmM3MGRkMgotNDlmYTM3M2NhNmRkNTU3NTQwOTA2NzI5ZjJmYzU0NzZjMzg1OTVkOTU4YWIyYjZjMTQ2MjlmOWUxNmEyYTljZQotOWY2ZTJkZDc2MGU1NWEzOGEzNDMyZTc0MTI2MTM1MzY0Y2VjMDBhN2I2ZGJmMGNkNDg1NTVkZjlmMzFlNzFhYQotOWQ1NzNiYjA3NzA4NTAzMGFhMzE0NmQwNjkzZmU2ODM4ODRhYjM4MGYwNTJjMzhiMzFiMGUzNDgzZDEyMmM0ZAotZDE1YTZhOTNlYWZlYzM1MjNmNGIyNzQ0OTM1ZGU5ZDE2NjBmYjRkOGE3NmQ4MjA0NTg2MmI1OWVhMjE4Mzk2MQotZjk4NjhiZjAzZTRhNzFkYjYxZTAzZmFlOTNiZWExMDkyYWM1ZWM4M2Q3MWRhZDEyM2Q1NjYzMTQ5ZDRiZDBiZQotZTY0MzQzNWFhYmM5MTk5NDJiYmM2MGQ0YWI1NmVjZGVjYWQzMGQyNzA1ODk3NzVhM2ZmNzE4Y2VmMGUyZWE0NgotYjhjNzVmYTkxMTc1MmVmMTM0MTAxODVlNWNlYTI1YWVlNmZhZTc0NDg5MzU1ZDMzMjhlMGNiZThkNGM1NWQ0NgotNDExNGI0YTRjODUzMDlkZmY0ZjJhNWMyYjE0ZmM0ZjQ3NzlmNGUzYThiZDI5MDc2YmFlYzM1Y2Q1OWVjYWRjYQotMDllOTNkOGRkNDc4NjA1MmQ5NzA0ODRlYTNjYjQ1YjM3YzRhNmY3NDI0OWU5ZjVlYjc1ODNiMDE4ZGNkYWJmZQotNjcyNTk3NjlhZTFhOTA0ZjIwYjNlZjM1MmNkMTkxYmJlZDk5OGY0YjJjMDY0NjVkNzM1NWU4MmZmYTcxOGUwOAotOWRmYTVjOGZkYWFjOTVkOGUwNWNmOGI1YTg5OWI4NDg0YzVlYTEwNGVlZjNlNWIyMTQzNmVkMzk2NjYyMjIyYwotOGNmZDAwYjVhODU0YmE5MzM4ZGEyMDVmMTZlNWMwZjQ1MWJjMWM2Y2YzNGYwZGEwNjlhZjVjY2ZiNDYwY2NjYgotYjZmMzkzYTk5ZjYxMzhlMGVjZTI5OWUwYzBmN2YxZDBjODNlMGI5MzZjYWMyZGMzOGYwODI5MjI0NWU3YWZkYwotNjUzOGM0ZmVjYzdkNzEyZWY4Mzk5NzA4OGY3M2FlNmZmMGFiODNkMGFlNzZhNzgxMWNjMDdiNDFhNTdkMWQzNAotMDQ2ODE1MjZkMzI3YjQ4OTA5NGRkOTYxZjJmNjBhMGM2YzI3NWYwOWYwYTE3MWU4ODA1NmY1ODczNWQyZjUwMgotNjVhMTY3ZDEyZmYzMzk1ZGY1OGMzYjkwMWE2OGYwZDk2ZjhlZjU0YWM1NTQ4MDg2MjI5YWRhYzQ5NWZiYzI1NgotYWZlODMyOTkxZjE4MzlhZWRkZjFhODdhYmMyMTc4MzVlNThhZjQxOTk4MjMxNjVmYjk4OTlmYzgzMWI0N2JmZQotNGMzYzFmNWEyNjk2ZTlhNWYzMTBhZmI4MTM4ZWVhMDZmZGEwNjg4ZTBkMGQ3Y2QxY2VmZjkzYTcyYzU3Mjg5ZAotMzMyNTI1YzNiYzYwZTUxYWIyNTUyNmE0ODc2YWZmYjJjNjQ2NTdjYWYxNGIzNGZjYTQ2YTc4ZTQxYjBjMTk1NQotMDFmYTFhMGMwZDc3ZDVmNzAyNjIzNGFmNDg5YjMxNjg3MmU2NGI0ZDQ0OWVmYzU0MGZiMGRhNTUzMDYzYTcxYgotZDhlZTQ0YjBmOWEyMGFkYjlmNjBiOTk4MDNmMTc2MGMwY2RlMzU3Nzg0ZTg3MDQyMTMzYWEwODVlOWEzN2E1YgotYjU2ODVlNzMzNTRjYTBlOWE0OGQ4ODZmZDEyODQxNjc0YmMwNzEzZDQzMzAxODgzZjFjMmY2MTkwYjQ3YTRiOQotOTk2YzBlNTI4YjY1NzJjOTYyMzJlY2JjNTdjNTcwNzM0NjNhZTM2YjViMjk3NDE2M2NmZjc1ODI4YTIwYzQ3ZgotOTI2ZTk5ZmFhYjUxZjE5ZmRiZTBmODliYjcxZmZiYTllYjk1YTgyYjNhNzEyYjU0NTc4ZjY2NWE4OWVkZjE5MwotZDU3NWVkOTViYjg4M2Y5ZDY3OTcwMjlmZjBjYzhhNzU0NTlmYWMwY2NhNDUzMGUxN2Q5M2M5ODM0YThkOWM5YgotMzc2ZDNlNDBmM2U0NGU2ZTg5NWYyNWM5MGE4MDNjZjhiMGYzMDU2MDM3ODA5ZTNlZDYxODQ3NWMxOTlmNDNjYgotYTdlZWZmODRkMzhmNDlhYWZhNGU0NjlhYTc4Y2RkYjg3ZWE3NmE4N2RhMWI4ODhjMzhlMjI1NDk5ZDFiYjA4OQotMzJkNTk5OTE4MjI3Yzk3YjFlNGRlNTIxNDYwZjFhMTc1ZmYyZmM1MDBiYjk1NTc0ZDllYWM2NGNkMDA4OTZmNgotMjc1ODlmZTUzNTFmNDZhNDZkMWZlOGFlMTZmZGM5NDVkZWNiMDhjMGI3ZDg0MWM1NTE2NTM1YWI2NWI4NDcyNAotMDQ3OTZiZDdiNzA4M2E2MDY5NzczMTZkZmZhZWVjMGU4NjgxYzEwZGY0ZGVlZjYzMzU0MDNlNWIwODg4OTU1OAotNDhiZmIxYjg3MDhhNWM0MWM1MTQ3ZmJlZDM5NDJhYzI2Y2U2NjM1N2M0OTA0Yjc5MTQ3ZGNhNTVmMDM5YjY0OAotYWUxOGQwZDZkMzMwYTYyMTMwMWUzYzFkNmU0NzhmYzZmY2VlNGMzMzgyZDQ2MzQ5MWExNjc1OTZmZjUxZjE3ZAotMWFmZGQ0ZWU3YWI4ZjFiMjdiNGVmMmI2NjVjYjY4MTg2MzdiNWU5ODI0NDdmNmQ3YWIyODA2Zjc2OWQyNTRmOQotZjU5ODE4MTJhOTQ1OGEzOWY1MTM2Njc3M2E4OTgwYzdjNmRjZWQ0NDhkODc4YWYzYmMwODgyMzc4MTVkMjcyNwotNDAwOTNjYjdjM2E0ZTZlODZlYzZjZDYxZmE4YWQxM2IyMGUyNzBmOTdlZTViZTE3OTlmMjk2NmEwY2EyYTdjOQotMzJkZTA4YmIwMjFhZGY5NDY2ZjFiODhmZmVmMzE1YjgxODk1NDA1Nzg3N2QzZDU5ZjE3M2MxYjE4NzRmZmZkZAotZTM3NDlhMGRiYTdkNjJkNzA0ODNiMWE3Yzc3MjBjMWU5NWM1OWZhZWVkMGM4YmUxOTEzMTc3YzZkYmFhNjkwNQotYTZiZDFhMTUzOTA2YWExYjY5MTllYmQxYmVmYjlhNTRkOWI4NGNkOWQ1NDhiMWFiZTgzOTMzNjcwZWE3MTliOAotNjMzN2QwMTI4M2I5NTMwNmRiOTJmZTA1OWRhNTJkMTA3ZWM0NzgxOWJkMTYzYjM4MzBjOTg5ZGY0MDUyNjE0YQotOTg2NmIwNTdhZWFlZDQ1NWZjOTg2NGRmMTk2MGU5NzgwNmNmOTUwMTEzOTRlMjA1Mjg2MTE1MjAyNDk2OTgzNgotNzdiZTgwMDhjMjQ2ZjE0YWVhMWMyNmU2MjBmYjMzMWY5NmNkMzJhMjNiMWM4N2Q1MzRkNjc4MTgxYTE5ODc1OAotNGJmZmUwNjlmYjVhMGM2YjYzY2E4YTljZmI2YzNmZDZlY2YwN2M1YmM1OTcxMmVjN2QwMmE1Yjk4OGMzZmJiZgotNjk1ZmM3MDY4YTY0NGQ4ODg1Y2NkODg5ODc1MzI1MzllNWNlZmM2NGZiOTdlYzEzNzZlZjBhOTc5NzBkYjUxMAotNGMxOWI3YTY0YTFiNGY3ZWVkZmVjMjUxNTk5NjIzOGRhZGJiZmE4YWZkODAwNGYxMjg2N2RlMjA5MTJjMjc3NAotMWNlY2E2ZjI5NTZiMzQwY2NiNWUzMGYyYjFmNWY2Mzc2ZTZkM2EyNzJiZTA1YzI5MTI1ZjZkNzRiYmVlNzg3OQotODgzNmVlNjczOTcxYWI3MjRkYzg5ODY3ZDVhOTM5ZGEwY2I0MTY3OGZiYjhkOGVkMzVlZmEyOGRlODY3MjhmNwotOTUzYzljNTg5NmI4NjdlNGI3ZGYzMzIyNTYzYWZmOGEzMWNjYTg5MDFiNTU0MmFmMmM3MjU0NTQ3YzdjMDlkMAotMTViYWE3Y2JkYzczNTI5NjBhYzY1MGE1NDNmMDVlMjkwMzQxZDI0NWRkZDMzMWE1NTZhYzdmYzBlZTdlYjI0NgotNzE4YjcxMDczYjlhMzI3NzZmNjIxNWZkOGZhMjI5N2EyZTliZTIzNzI4Y2JiMjRjNTNlYTEwYTQ1NDRkZGZiNQotN2Q2MjkyNjQwODQwYzc3YmYwMzcyOGMzZTVkMjY2NWVkN2RiNzQxMGM5ZWNiMzJjMjQ5YTQ1NjY0ZjcyZjhmNAotMmU4MWEyZTA4NmI1MzVmNjQ3M2IxYTMzMTlkMTM0MzE3ZWRiZDE4NjRjYmE3Yjc5Zjg5ZWY5OWQxNmM4ODcxYQotMjhmYmM0Y2I0NWY5ODJiYWM2ZGU4MWVmNjM3YTdlMTAyMmE1NTc5ZjczODY3ZTQwZTMxZWM4OTAzNjMyZTMzZgotYjI0YWJlNTNiMWYzYTMwOTc3NzliOTc3YmJlYjQxYzIxODU3OTA5ZDNlMjVmN2JjODhlNmQzZmU2ZjE4M2RhMAotMDEzM2E5OWFlMzkwODAwMTJkZjg0OThiOWNlMzIyZWE5Yjc2MzQzYzJlOGJlMzY3NmYwODYwMjQ3MGRhMjc2MQotZWQ5ZGU0MDdmYmEzOGJlODJkZTYyNGUxNTUyYmU0MGEwZTEwYjU1YWQ3NDM2N2I5MWM4MGI4YmM1Y2Y1OWY2NAotYjc5MDcyMzY5ZDllNDkyZWU2YjlmOWRmMGI5MWFlNjA4YTQ0MDIwZWQ2ODc0MDM4OTc0Y2NjOWFmYTg4ZDZiNwotODExNGFmNGRlMDllNzdlNGIwYTFhMWZiMjdlMjI2YTYyMzg1Yjk2OWJiZWJiNjU3ZWE5MjdmZDg2ZTA1MGZmMQotM2ViZDAwMWEwMjIzMzNmOGNhY2ExM2M1NGY5YjM0NWNkNWI2NTUzYzkwYjRmN2ZiOTQ5ZDdkNjVkOWJmOWZkOQotNDZhM2M3YzUzMWY2YTY0NzlhYWIwZDVhNzAxNWI1Njk1OTc3Nzg5MmZlZWE3OTkwZWRiZDJiNDIzZjZlOWNlNAotNTgzY2FhYzEyNGMyNjg2MjhhOWNiNzAzZGQ5NmFhY2QzNWIxMDMxZTA4YTc0MWQwMmFkZmQ1NzkyNjdkZjc5MAotNWVmMjZhZjE0YjJiYmRjMjJhMWViMzNiNTg3MTlhMWU4NDYzZjI4Nzg0ZjRjMTVjYjNjMjVjZmIyZTIwYTUwOAotNzg1NGE1M2Y0YWIzOThiMDIxNzdkZTUwMGEwNDlkNmM5ZmFhMTNmZDQwYzE5MTc4ZTg3OGYxY2MyNjIyMWM1OQotYjQwNTQ1ZjVmNDQ0MmFiYmEwNjY1NmVhZDVhZmQ5MzhhZGViM2VhNTBjNjk5ODYyZDQ4ZTc2N2MyMjNjMWYyMgotMjQ2ZTU4YzU2OTRkMWUyMzUxMTcxMDgxN2E5ZmQxOGExNjIwY2M2NTEzNDVlNmQzMzAyZDg1MTM5ZjdhNTczNAotN2U0MjNiZTE0NWUxNjViYWY0NjAxOWZlODMxZjk3NjAyZWM4N2IzY2RmYjhmZWExMjg2OWM5OGYxMTVkMWI2NgotNWFhNTg4ZmE4MjQ4NGFjZGVkN2NhMmMxM2ExN2JkYTMwNWY2M2VlMjI2ZWUxZjM3Y2YyNDdmMWFlYTlmZjkyZQotMmZhNGMxZTA0NDhhNWRkZTQ1Mjk0Njk5YTk0OTBhNWVhOTRjZjgxYzUzNDkxZmMxOWUyYWRlNWFmMDA1YzMwMAotYTVmYzk5Yjg5M2VkMWQ0Njk3ODhlOTRkZTgyMzAwNmY4ODQ4ZGM5ZDAyMWYxOWI5MzQyNzhkNDRlOGM3M2RhOQotMzcyOGYzODk1NjNlMTBhZTYwMTdjNWNhZjNiNGIzNDBiZTFkN2QyYjdmMjRhOGNmY2MxZWQxZWI5MjBjZDM2NgotNmZhMTJmMzVlNDU2NzNmYjEyYjQ1YTZlZDdlODQ5Mzc1NzZlNTMyN2M4MmQ3ZjI3ZjZjMDI1NWY3NWVmNGIwMgotY2Q0OTJiMjNlYzFmMzQ2YmRmOGUwMDcwNDJhODJhYjczMGFiMjgwNTU2OWQ3Yjk3OGE0YjExNDU3NzUxNDU0OAotMGQ0MjZkYzRhOGFkODZkZTg1YjIzYWI1YWE4YTUwYTMwYmJkZDhlZjVlOWZmOGU3OTU0YTY5OTg3ZmI1NDAxZQotYTlkMDM5ZDVlMDVlZjI0NWUzYzcwYTg1MjM2OTY5ZjMyYmQxZTVkMjlkNzFhMjAxMzQ5Mzk0NWU4MDM4MzhkYwotNzI0MWE3M2M0YzFmMTQ1NDhlYWFkY2JhNjRhZWJjMjlmZDIyNTNmYTU5YjZiMDM5YmIyZWRjOWU0YTdjOGU4MwotMzE3ZWMzOWEwN2I4YzgyOTdlNGIwOGQ0ZTZmMDFhNTNlM2Q2OTBmMWQxZGI0OWYxOTY0MGMxNjQ0MWJlNmFlOAotZDFjYmRmODUzMzk0Y2Y2NjVmNzQxOTM4NzMzZmJjNzAwZThkODJjNGNmMWQ3MjQ1NjAwOGEwZmU1NWM4YjY3NwotYTRmM2UxOTdhYWM5Yjk3NjM0MzkyM2RkNGM1YTE4MTQ1NDMxOWZjNTA5ZDQ5OWJmMTQ3NDBlZjEzODdmMzU0ZAotZDcxYzNiYzViOWQ0ZDJkOWUwZTdhM2JjNjBjNzljOGU2ZDM0NGJlYmViM2IyZGMyYzM2MDVmZGYxMDAyZjA2MQotZDUyZjcxOGI1N2QxZjZjMTQwNmIxZmRmMmNlMzdlZTQ1NjkzYmE3MjI4NGM1NjUyYjJkODhiMjlhZDU1ZDliZAotNzgwMzJhNzZhZTY0MjdjMTk3NDljYTE1MDNmZGZhNmVkYTQ4NjFmMGIwYzcyNjg0NTg5ZWZlNmMwMWQ5Yzk2NAotMTIwMWI3OWM1Y2UwMzUyMDUxMGUxM2JjNTQ2MWZhM2QyODk3ZTJiN2M2NWViYjU3MWUyZDBjZTMxOTI0OGQ0YQotZmNkZTZkNzBjMzhkMjVmNmJiZjBjMDliNjQ1NTNjM2ZkYWRjNjRjMjkzZGVkYTZlMmVkOGMxOTFkN2Y0MzJhYwotNWJjYzFhYzMxODNjOTJkNTQ1YWJiZDRkYTdlNzY4MTQwYjlmNWE1MDc3YjA4ZGM4ZWFlNjQ3MjdlYWRlM2U1YwotMDVlMDcwMzZiMDhjMzFiYTVhZTM2NmM2NDJmODE2YjVmYTYwZTE0ODc5NWQzZDRjZTA1MGYwOWM0NDNkNmZlMAotZDQ0Zjg4NTlkNDNkYTM5NjQzZDRmYjhjNWUyZTM0ZjFiMzIxNDJkZGVmMDdiMWMwMmMwOWY0Y2M5NTA5ZWFiZQotOTkzNTBjY2QzYTlkMmQ2ZmI4MDkwMTZkYmUwYzFhMjlmZDFkMjVjYzgzMTI1YmE3ZDAxNDNlMDkyMDNmOWUzNAotOTljNmQwN2NjNzhiZmRiODJmNzJjNTc3YWZmMTA0NWNkMmNlMmUzZGUwMzAwMjgzYWU1YWM1NDBkNDk4ZTQ2NwotMGUzNzE4ZTNkYWM2ZGNkZjFjN2FiMmQ1Zjc1YzViNmU1NmJjMzJkOGRkYWNlNGNlN2Y5MjcyYWFlMTg4ZjNiNwotZDZkMzFiMzgwNTkyY2ZjMGRlNDVlYWJkZDg3Y2ZhYTE1MTQzY2NlNzM4ZWRlNDBiZDlhMDZkYjBiM2Q1ZjU3MAotYmU1YjIxYjMyOGIzYWM0ZmY0NmFiYjE5MGVjMTdlNzNkMzFhZjM4OWRjOGU4ODcyODBmODRjYWY3YjMxN2MyNwotMzg1OTMwMDVhYTU4NmIzYzQ5MThmYTk1YTk0MzVlNDVkYjQwYmI1MmQyZjYwMzQ2ODY0NjNjODcyODBiODA4NQotODc3Mjk3YTg3MWRkMTFmYTFkNzgyNTY4ZmU4MTNjYmRhYjZkYWJhODI4YzFjMjY0YzNkYjgwOWNiOWRhNjYzNQotNjQwYzNlOTkxZGM0MWNiMTg0MWVhMTU1NmI3NTYwZDQ3NTI2YmRjMDEyYThmMWRhY2IzMGYzOGVkMGY0NzIxYgotYjk4YjEwNzUyNjI1OGQ2NjgwNGZiMGRkNGM1MmQ4Mjc4NTBkOGYwYTc2NGE1M2NkODFmNjYyNjlhOGNjMTE0YwotMDY0ODJhNWIyYjc1MjQxNjcwN2QyOGU4ODI5MWJjYTAyYjc3NDYxNjE3OTQ0MzdmNjFlN2UzMzUzZWNjOTJjNAotMTUxYWY5YTJmMGIwZTBlN2I4YmUzMTA2ZmE4YjQ1NWU2MGQxYjhlN2EzMGE0NTkyMmZlMDBmN2FjOTAzMWJlMwotYjllMWRjYWU4MzAxN2ZmYTI3ZjE5NmUxYjhkYTZjZmYxYmMyNWMwZDc3NmRiZjY3NTgzOGMyNGM1N2EzMDc4YwotZDJmNmRhZDg3MjJhYTg5OTcwNzhmMjJiZmFiN2U4Zjk5NTUzODE3NGQ1NzdjMjhkMTY2MGU1NDg0MjcwZTYzYgotOTBmZjI5MTExYTcxYmNmZGRhMjA0MDM0YWQ2ZGYwMjZiYTlmZTYxYzAyYmM5OWUwNTUzY2FlODJmYzFmODRhNgotZjhjNzQ0Y2YzNGE5MmIzZmEyMzliMjNmYTJhYTQ2OWM1NzY1YzAyYWJlZWEyNzJmYzkyOGQyNDcxNGMxNGVhMQotMmRjNjg3MWE4Mjk3M2YxYjU3YTIwNjMzNzlkYzQ3MWYwZGQwNjg0YWI1Y2U5YWI4MDg4NTEyYjU0OGMwZTk2YwotNTlmMzE0ZWU4MWY5YmEwYTc5MzA3MjMyNWQ1YjJhNDc4ZWNhMDQ3Mzk3NDYKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLWNsZWFydG9tYXJrCi0lJUVuZFJlc291cmNlCi0vRjEyMl8wIC9EVFVVSFArTmltYnVzU2FuTC1Cb2xkIDEgMQotWyAvLm5vdGRlZi9kb3RhY2NlbnQvZmkvZmwvZnJhY3Rpb24vaHVuZ2FydW1sYXV0L0xzbGFzaC9sc2xhc2gKLSAgL29nb25lay9yaW5nLy5ub3RkZWYvYnJldmUvbWludXMvLm5vdGRlZi9aY2Fyb24vemNhcm9uCi0gIC9jYXJvbi9kb3RsZXNzaS9kb3RsZXNzai9mZi9mZmkvZmZsL25vdGVxdWFsL2luZmluaXR5Ci0gIC9sZXNzZXF1YWwvZ3JlYXRlcmVxdWFsL3BhcnRpYWxkaWZmL3N1bW1hdGlvbi9wcm9kdWN0L3BpL2dyYXZlL3F1b3Rlc2luZ2xlCi0gIC9zcGFjZS9leGNsYW0vcXVvdGVkYmwvbnVtYmVyc2lnbi9kb2xsYXIvcGVyY2VudC9hbXBlcnNhbmQvcXVvdGVyaWdodAotICAvcGFyZW5sZWZ0L3BhcmVucmlnaHQvYXN0ZXJpc2svcGx1cy9jb21tYS9oeXBoZW4vcGVyaW9kL3NsYXNoCi0gIC96ZXJvL29uZS90d28vdGhyZWUvZm91ci9maXZlL3NpeC9zZXZlbgotICAvZWlnaHQvbmluZS9jb2xvbi9zZW1pY29sb24vbGVzcy9lcXVhbC9ncmVhdGVyL3F1ZXN0aW9uCi0gIC9hdC9BL0IvQy9EL0UvRi9HCi0gIC9IL0kvSi9LL0wvTS9OL08KLSAgL1AvUS9SL1MvVC9VL1YvVwotICAvWC9ZL1ovYnJhY2tldGxlZnQvYmFja3NsYXNoL2JyYWNrZXRyaWdodC9hc2NpaWNpcmN1bS91bmRlcnNjb3JlCi0gIC9xdW90ZWxlZnQvYS9iL2MvZC9lL2YvZwotICAvaC9pL2ovay9sL20vbi9vCi0gIC9wL3Evci9zL3QvdS92L3cKLSAgL3gveS96L2JyYWNlbGVmdC9iYXIvYnJhY2VyaWdodC9hc2NpaXRpbGRlLy5ub3RkZWYKLSAgL0V1cm8vaW50ZWdyYWwvcXVvdGVzaW5nbGJhc2UvZmxvcmluL3F1b3RlZGJsYmFzZS9lbGxpcHNpcy9kYWdnZXIvZGFnZ2VyZGJsCi0gIC9jaXJjdW1mbGV4L3BlcnRob3VzYW5kL1NjYXJvbi9ndWlsc2luZ2xsZWZ0L09FL09tZWdhL3JhZGljYWwvYXBwcm94ZXF1YWwKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmL3F1b3RlZGJsbGVmdC9xdW90ZWRibHJpZ2h0L2J1bGxldC9lbmRhc2gvZW1kYXNoCi0gIC90aWxkZS90cmFkZW1hcmsvc2Nhcm9uL2d1aWxzaW5nbHJpZ2h0L29lL0RlbHRhL2xvemVuZ2UvWWRpZXJlc2lzCi0gIC8ubm90ZGVmL2V4Y2xhbWRvd24vY2VudC9zdGVybGluZy9jdXJyZW5jeS95ZW4vYnJva2VuYmFyL3NlY3Rpb24KLSAgL2RpZXJlc2lzL2NvcHlyaWdodC9vcmRmZW1pbmluZS9ndWlsbGVtb3RsZWZ0L2xvZ2ljYWxub3QvaHlwaGVuL3JlZ2lzdGVyZWQvbWFjcm9uCi0gIC9kZWdyZWUvcGx1c21pbnVzL3R3b3N1cGVyaW9yL3RocmVlc3VwZXJpb3IvYWN1dGUvbXUvcGFyYWdyYXBoL3BlcmlvZGNlbnRlcmVkCi0gIC9jZWRpbGxhL29uZXN1cGVyaW9yL29yZG1hc2N1bGluZS9ndWlsbGVtb3RyaWdodC9vbmVxdWFydGVyL29uZWhhbGYvdGhyZWVxdWFydGVycy9xdWVzdGlvbmRvd24KLSAgL0FncmF2ZS9BYWN1dGUvQWNpcmN1bWZsZXgvQXRpbGRlL0FkaWVyZXNpcy9BcmluZy9BRS9DY2VkaWxsYQotICAvRWdyYXZlL0VhY3V0ZS9FY2lyY3VtZmxleC9FZGllcmVzaXMvSWdyYXZlL0lhY3V0ZS9JY2lyY3VtZmxleC9JZGllcmVzaXMKLSAgL0V0aC9OdGlsZGUvT2dyYXZlL09hY3V0ZS9PY2lyY3VtZmxleC9PdGlsZGUvT2RpZXJlc2lzL211bHRpcGx5Ci0gIC9Pc2xhc2gvVWdyYXZlL1VhY3V0ZS9VY2lyY3VtZmxleC9VZGllcmVzaXMvWWFjdXRlL1Rob3JuL2dlcm1hbmRibHMKLSAgL2FncmF2ZS9hYWN1dGUvYWNpcmN1bWZsZXgvYXRpbGRlL2FkaWVyZXNpcy9hcmluZy9hZS9jY2VkaWxsYQotICAvZWdyYXZlL2VhY3V0ZS9lY2lyY3VtZmxleC9lZGllcmVzaXMvaWdyYXZlL2lhY3V0ZS9pY2lyY3VtZmxleC9pZGllcmVzaXMKLSAgL2V0aC9udGlsZGUvb2dyYXZlL29hY3V0ZS9vY2lyY3VtZmxleC9vdGlsZGUvb2RpZXJlc2lzL2RpdmlkZQotICAvb3NsYXNoL3VncmF2ZS91YWN1dGUvdWNpcmN1bWZsZXgvdWRpZXJlc2lzL3lhY3V0ZS90aG9ybi95ZGllcmVzaXNdCi1wZGZNYWtlRm9udAotJSVCZWdpblJlc291cmNlOiBmb250IFZYQU1SVitOaW1idXNSb21ObzlMLVJlZ3UKLSUhUFMtQWRvYmVGb250LTEuMDogTmltYnVzUm9tTm85TC1SZWd1IDEuMDUKLSUlQ3JlYXRpb25EYXRlOiBXZWQgRGVjIDIyIDE5OTkKLSUgQ29weXJpZ2h0IChVUlcpKyssQ29weXJpZ2h0IDE5OTkgYnkgKFVSVykrKyBEZXNpZ24gJiBEZXZlbG9wbWVudAotJSAoVVJXKSsrLENvcHlyaWdodCAxOTk5IGJ5IChVUlcpKysgRGVzaWduICYgRGV2ZWxvcG1lbnQKLSUgU2VlIHRoZSBmaWxlIENPUFlJTkcgKEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSBmb3IgbGljZW5zZSBjb25kaXRpb25zLgotJSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBwZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gaW5jbHVkZSB0aGlzIGZvbnQKLSUgcHJvZ3JhbSBpbiBhIFBvc3RzY3JpcHQgb3IgUERGIGZpbGUgdGhhdCBjb25zaXN0cyBvZiBhIGRvY3VtZW50IHRoYXQKLSUgY29udGFpbnMgdGV4dCB0byBiZSBkaXNwbGF5ZWQgb3IgcHJpbnRlZCB1c2luZyB0aGlzIGZvbnQsIHJlZ2FyZGxlc3MKLSUgb2YgdGhlIGNvbmRpdGlvbnMgb3IgbGljZW5zZSBhcHBseWluZyB0byB0aGUgZG9jdW1lbnQgaXRzZWxmLgotMTIgZGljdCBiZWdpbgotL0ZvbnRJbmZvIDEwIGRpY3QgZHVwIGJlZ2luCi0vdmVyc2lvbiAoMS4wNSkgcmVhZG9ubHkgZGVmCi0vTm90aWNlICgoVVJXKSsrLENvcHlyaWdodCAxOTk5IGJ5IChVUlcpKysgRGVzaWduICYgRGV2ZWxvcG1lbnQuIFNlZSB0aGUgZmlsZSBDT1BZSU5HIChHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkgZm9yIGxpY2Vuc2UgY29uZGl0aW9ucy4gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgcGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGluY2x1ZGUgdGhpcyBmb250IHByb2dyYW0gaW4gYSBQb3N0c2NyaXB0IG9yIFBERiBmaWxlIHRoYXQgY29uc2lzdHMgb2YgYSBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIHRleHQgdG8gYmUgZGlzcGxheWVkIG9yIHByaW50ZWQgdXNpbmcgdGhpcyBmb250LCByZWdhcmRsZXNzIG9mIHRoZSBjb25kaXRpb25zIG9yIGxpY2Vuc2UgYXBwbHlpbmcgdG8gdGhlIGRvY3VtZW50IGl0c2VsZi4pIHJlYWRvbmx5IGRlZgotL0NvcHlyaWdodCAoQ29weXJpZ2h0IChVUlcpKyssQ29weXJpZ2h0IDE5OTkgYnkgKFVSVykrKyBEZXNpZ24gJiBEZXZlbG9wbWVudCkgcmVhZG9ubHkgZGVmCi0vRnVsbE5hbWUgKE5pbWJ1cyBSb21hbiBObzkgTCBSZWd1bGFyKSByZWFkb25seSBkZWYKLS9GYW1pbHlOYW1lIChOaW1idXMgUm9tYW4gTm85IEwpIHJlYWRvbmx5IGRlZgotL1dlaWdodCAoUmVndWxhcikgcmVhZG9ubHkgZGVmCi0vSXRhbGljQW5nbGUgMC4wIGRlZgotL2lzRml4ZWRQaXRjaCBmYWxzZSBkZWYKLS9VbmRlcmxpbmVQb3NpdGlvbiAtMTAwIGRlZgotL1VuZGVybGluZVRoaWNrbmVzcyA1MCBkZWYKLWVuZCByZWFkb25seSBkZWYKLS9Gb250TmFtZSAvVlhBTVJWK05pbWJ1c1JvbU5vOUwtUmVndSBkZWYKLS9QYWludFR5cGUgMCBkZWYKLS9XTW9kZSAwIGRlZgotL0ZvbnRCQm94IHstMTY4IC0yODEgMTAwMCA5MjR9IHJlYWRvbmx5IGRlZgotL0ZvbnRUeXBlIDEgZGVmCi0vRm9udE1hdHJpeCBbMC4wMDEgMC4wIDAuMCAwLjAwMSAwLjAgMC4wXSByZWFkb25seSBkZWYKLS9FbmNvZGluZyBTdGFuZGFyZEVuY29kaW5nIGRlZgotY3VycmVudGRpY3QgZW5kCi1jdXJyZW50ZmlsZSBlZXhlYwotZDlkNjZmNjMzYjg0NmE5ODliOTk3NGIwMTc5ZmM2Y2M0NDViYzJjMDMxMDNjNjg1NzBhN2IzNTRhNGEyODBhZQotNmZiZjdmOTg4OGUwMzlhYjYwZmNhZjg1MmViNGNlM2FmZWI5NzlkNWVhNzBmZGU0NGEyYWU1YzhjMDE2NmMyNwotYmY5NjY1ZWVhMTFjN2QyMzI5YzFhMjExZGQyNmJiMzcyYmU1ODIyZjVlYTcwZDk5ZWI1NzhjN2JlZmQ0NGNkZgotMDQ1YTM2MzA1NmU1ZTFjYzUxNTI1ZWE2ZmMwNjFkY2ViYjMzNzIwOGVmZjcyOTgwMjM3NmEyODAxNDI0ZjY3MAotMGU3ZTYzOTdiMjhmMTViYzEwYjQwMDEyYjBhM2VhZWIyNjkzZThmN2Y2MjdjNGM5YzdjNmM1YmZmMTA1YzFlNAotMWIyYjllOGYwOTI1M2I3NjA0MGQyNjhiODA3MTllMWIzZjVhNTVhYjdiOGUxNTJhNDBlNTkwNDE5MjQ5ZjJlNAotYzM2MTU5ZjhlNTRiNTMyNDY4ZTM2OTY1YTM4NjQ2NzgxYWIwYjdmNmEzZTg1MWZkMTBjYWE0OWFkZmMxZTU0NgotMmZkMmVjNjE1MGRjNmUxOTUyMzA1MGY2MTQ4MzQ4YTU2MWFkOGQyZTI3MjFlZmY4YTU3MGNiMzM0NjBhNzQ1YgotOTI2Yzg4OTMwNGMwOTc1M2MyZDc4ZmIwY2E5NWRjNmRlNWI4YzUyNDc1MmM4MzYwMWU3ZTlmNzNkZjY2MDY3NAotZjA1YWQ4M2ExNjZkYTliZTg5ZjIyZmVhYmQ0YjI2NjU5NjBmNmZiNWJjMzI5MjhlMTIzMGMyMTJlNWQ2OWNlZQotMGIzMzExYTE3MzhhMTE3NDdhZTI2MzEwNjkxNmQ4ZTk1ZjI1YjI1YjRiYzZhZmIwM2I3OWFiYjk1ZGRhNTE4YgotNDFhNDk0NTgxMTFkMmExNDMzYzA0MzYyN2VmOTQ2MGQzMjRmZmUyMjkzNWY0ZjZkYTg4YjhiOTFhZTk1YjM0ZQotMDg0MDhhMzRlYzhlYWMzZjY1YjZhZTNlM2UyNTI0ODY3ZWU5ZDI5MDY4ZjgxZTQzNzJmNDQ3MGJlZWI0ZDZiZQotZWU0ZGY5NTZiZWNjMGNiNzdmODQ5MDExN2IyMmIyZmI3NWM5MzhlZDBhNWUyMDhkODhiYzM4YjJhYjhiOWNmYgotZjFkNTMwODRiNmY0M2RmMzM2NDgxZWNhMGFhMmQ1MzE3YmM4M2ZjMGUxZDRkYjAxZDBiNzcwN2VlZjIxN2U5NAotYTdmOTg1MTAyZGVkMjdkOGU4YjAwOWY3ZWY2ZGI5MWI5MWU3OGJmYWU3YmQ2ODhlMTBiM2RjOWFjNzdjZGVlOAotNDdhYTRkYzhlYzc4MjQxZTU5M2QyNmVjN2E2MDY5NjE1MWEyYWU1MzI1ZDczNmU5OWUwMWJkY2JkZTY5NTc5ZgotOTJlZWVjMjI0YjY3NTdlZWRjNjRhNzU0NTViYjY2NWRmNDJhMGU0Y2U3Yjk5YmYzZTdkNjZmOGZmYzhjMTNmOQotZDdhMWZmN2E5ZDVmZjdhYzQzMzk2Nzc5ZjExYzliMDA4YzMzYTIwNDNkNDhiNjFiODhiMDMxMDRiMTQyNWYwOQotNjc1YjU1OWNhNDMwMmMwMDFlZTgwZDJiNzM5Y2MwZmQxMDIzYmY0ZjFmZjljMDFlODkyZTU5Y2NhN2MyNjAxMQotYjhlMGI2ZDI5Y2MyOWZjNzI3OTJmZGE1ZTdkNWQ4OGVmOThmOWRiYTk2MGM5NjUzNGMzOTljNTQ4NjVlYWI4NgotMGZhMmUwZDZjN2M0NGI1NTNlYWMxNTc0ZDU1ZTc5NzA3NDRkNDc5MmZmZmJkY2U2ZmI0MzY1YmRiYzI5NjViYgotMmU5ZWRhZDllMGViZjBiNjIwZGI0MTVhZDk4Mjk3ZjVhZTgzZDljNzEwNDM2NjU3ZTc0ZDI2ZTgzOTU3Yzc0NQotODk4MzQzMzcwMzVhNzUwMTgwMzk0N2Y2ODgwYjcwZTU2YTNhNDA0YzYyZDU3Yjg0OWQyODgwNGNiZTBmNTg4NAotNDM1YTBlMTJkY2M5YmE0MTRhYmI3MzJiZmJhZTIzNzAwMWY1NTdkZWE1ZTk3MmJhMDgzOGEzYzdjOWViNzVhYQotNGEwNTBkYTBhNTI5YmRmZmJmOTAxMWMzNjA1NjRmZDE3YTAyYzE4ODYwYWY2Yjg2ZWZkNGUyYzEyNTY4NmM5YQotNWUxMTRlOTVjNzFmYzg5YTVkZTljNTg5YmZlNWFjMDQ4MGNmZjcxNjM0NTI2NWQyNDM1ZWRhZTY3Y2ZjNDgwMQotNWJjMDhlN2E0OGQ2ODNhY2RiOTFlMDVmNDY5YzBjODkxOWQ3M2E1ZDA3YTFjY2IxNzNlMzBlNzY2ODBhY2IwOQotMDJhNDBhM2UxMTkxNjE5OGJkNjlmMWEyNmU4ODMzMGY1MDY5MmQwZDU5MTdlOTllN2EwMWIzMjc0MTNlMjRhYQotZTk4ZWE0ODRlNDU4OTdlNmFlNGQ2OTk3YjZlOGJiZjYxYzk0MDZlOTE2ZDU2OTg1Y2IyYmQyOTdlOGFjZmM2ZQotY2YyZDIyODFhZDg0Njk2YjdjNmNiNTg0YmQ4NWNjMjBiYTE0YWRkM2JjM2UyNWRiOTExMjRjMGFjZjIyZTkwMgotM2NmYmYwNGNjNDBkZTMzMTk5MWU5MDc1ZDIyYWI1ZWUwZTg0OWIzNDAwNTBlNmM0MTdjNjY0YTc4MmQwNTU0OQotZGIyZWY1NzJmMTkzYjFjMTJiNDYzNWMyYjM1ODc0NzA0NmRlNTg1OGVjMzJiM2IyZTc5ZDQyNzUwNjU3OTc3ZgotYWNkZDJlZTVhN2M5MzIwZDkwNzQzOGRiYTYzYWEwNWVkNDEwZmM3MDAwZjUzNTQ5MDkxYmU3MWJlNDVkYTRhYgotYTMxNWY5NWI3MjRhNjBmMTdjNzA4MzNlODg5Y2ZlN2VhMjA2YTdhYmM0MzkzY2I2ZWY0N2JlMzcwMGJhNTYzOAotNjgzMTM5MTgwOWVmODM4NGFlYThjMjI3MzVlODA2MmE5ZjkxMDFhZGQxMjVhMzIxZmI2NTM5OWNiY2Q5YzllNgotMGY0NmZiZjI3MWIyYjFlYzgwODMyY2MwNTRiYWI1Y2E4MGQ0NTYxZGEwYTM4MGQ1NmQ1Y2IzZDkwYWU4OWExOQotNDhjZDgyNGViMWU3YWM2MTI3YTZkYmEzZThlYTQwZjAwYWRkODk3NDlkNzdlYzBlZWJlMjZmZDZlYTVkOGNjZQotZjcyMzk2ODFiM2Q5NDg5ODIzNmFlOTJmZjM5MTJlMGFmZTg0YjZjN2UwODEzNGMxNThiNjQwYjRhZWNhYjVmMgotYTkwMDI4ZTY3ZDMzZGYzMWI0NjFhMjg0NmY4M2Q5MDk3OWJiMjI2MThlMmExN2M1ZDE1OWZiNTlkNTE3N2UxMgotZWRmMTMyMGY1OTZlN2E0YzM3OTMyOWFkYjM2N2Y5MmJmMjg2OWE5YTk3Mzk4ZTBjMjBmNWYwMTdjYTlkYjdiYQotYjNiYWI3MmI4N2E3YjZiZjRmZWJkMDMxMzJmOTA3NWMyNzFmMjA1NDA3ODM5NmRmODQwM2RjOTE0NjEzMjVmNgotMTJjZjE0MjFmMzA5OWNjZDc5OWMyYzA5OTQ5MmM0ZjA3MTMzNmQ5ODVjMGMzNjBiMmY1YTU4NzdmZDAwYjZmOQotMmU1OTExZGRkZmIzMWQxN2E2MDEyNGVlOGRhNmNiZGE5NDE5NmQ3ZWQ0MjgwNDYxMGU0ZjczMGRhZjJmMmQ1YQotYjc2N2MzMjBjNjI1NDNlMjY1MzQzMTRmYWNhZTAwNmJhMjA2NDYyMzkwMmM4YWM0NzllZWViYjYwOWU4YzNlNAotMTUxNmNlNDEyY2I0MTBiZDAyNjIzMWUyMmE5Y2QwZjY2NGQ3NjllNGU0NWNiYjc1YjczNDFmMDZkOGUzNzI4NQotYmVhYTlhYjcxYWFiZTNjYmZlNWEzNDg2ODFhYTI0NjA0N2NhMjljYTZiNDQyZmVhZGUyNTRjNzU4MmQzMmQzYwotNzFiNWU2NDVjODJlOTJmMDU3ZWI1Zjg1OWJlZTIzZGFhOTVjNTc1ZWRhYWY5ODk2ZDZjMTA5ODBhMDlkYjM0ZQotMDg0YzhhNzU0ZTMxYjYxOGM2OTkxYmFhODU2Y2I4Njg3NzA0NGUxMGMyZjE4OWIyODRlMzE5NWEyZGI2YjkxMAotMjU3NGUyNDYxZDJmYWU2NWI3MzIxYzAwOTNhMmEzNDk5NmMwYjc3MTIzNTAzZTllZGM2MjNkZDAyYzQ0ZmI3NgotM2M1NTA4NDBiZGY5Njk1ODJkMjI2NTEwZWJmODk5NDRlNTk2ODRlYjJlMmM0NjNlNjk3MDIyNjZmYmNmOGQxZAotNGMwYmU0MDA0OTVlMjI3YjljYjIxYzgwODZmMzI4NzgyY2E3Mjk0ZGNmM2VjZGMxYTYyNzE0MTQzYTRjMWI5OAotZTVkZTFkZDU1NGZiYTYwNTcxMTg4YTU4ZjAzNTRhNmI5ZWY1ODA2ODliNzhhMGM4NTE1Y2EwNWEzNTgzMjYxNgotN2UwYTkwZjY4ZjNjMzA2YWI2MGFhYjIwODcyZmIxNjc2NzNmNDFlOGU4N2ZmMDExMWY1NzljYmQwZGE2OGI1NgotM2UzNWQyZWJmOWYyOGIxMDQwODJlMzYxODczNzNlZmM3YTMzZjYyZDNmZTRhMzkwYjYzYTc2ZTliMjUzMTg3MQotNmJkNTk4NjFmNTFiNTYxZGNjMTE1MTkyYTZmYzIyZDE1YTVhZjAzYmEwOWNkZmE2NmI2NjBjZjQyODhlOWQ3OQotMjZlNzk3MjU2NjU5YjBmZjY0YmI1ZDkwMDk5MGMzY2I1ODhlMWUxODgxMGJjYjAwOWE5MWU1ZjRmOGQ5ZGIxYQotZjJhMDYzYmRhYmQ5YzMzMzJmNGJkYjcwMWJiOTRiNGZkMjQ1NzBiNDQwYWU3NGI4ZDkyNGU0OGU3YzJkZWZiMAotNTNhMTllNWI0ZGYzOWFiZjRmNmZjNjE2MGI1ZmNjYTAwNjA4NDIyYTMwOTFjZDAzZTcyNmIxZWExZDIwM2IzZgotYzQ0MTczNDYwYjQ5MDQ5OGVkYTMxMjE4ODFlYmQyMWNiNWI1NzFkMjFhNjIyOGNjMGExYjAzNWViZTk3ZjI2YgotMGI1ODE3OWJkMjJhYzk1MGVjM2E5ODQ1ODA1MWE4NzQyOTdjZDZiZmU3MzFjNWI0MTM4MTk1MDMxMTFmMWY2ZQotZWJmYjU2MjhjOTU1ZjVmY2FlZDc2ZjI0MDJjZTM1MWY3N2U0NzFkMWM5ODIxZGFkNjI3ZmYyNTEzMTU5MDU3NwotNWZmOTMzNWRkMjhkODVhMTFiZjE1NTc2NTYzMmIzNGEzYWExZGY5YzAxMTM0YmQ4ZmU5MjdlMDA2NDMxOTk1MQotZTJjMWQzNzRjOWFjZmMzMDkzMjcxMmE1YzNlMGZlM2M3ZTM1NWUzMzU2ZTkxMzVhMTQzZjFiNGUyNzM4ZTIwOAotOGY0NDYzM2RkOTMwMGJhZmM3NzA2MjVhNjRiMmJkMjBkNGY2NzI3MDEzMTBlNWQxZDViMmRkNTAyODAyNTM5YQotNjUzNDQ2MDE5MjRjNDczYjc2MThmOWI4N2JmNmViNDk0NzRmZTYyODkxMDk3YjliMzgxZGZjOWRkMjJmNmNlYgotMzQwZWZkOTUwYjc0ZTYxNGEyOTA4ZWVhN2IwZDM5NWUxNTk0M2QwYTkwNzJlMmMwZTZjOTFkOTE0MWM4NDI4MQotNmE1OWYwMjExMTMzMzcyM2RiNzhjMmMyODc2NzVkNzMxNTJlZTNjNjMzOTdmNWVhNjIwM2M3MDc1NjgxMzdlMAotMTI0MzhiODZlYWQxNmQ3MWEwYTU2ZDAwZTZhY2U5ZDgwYWZmNjQ2YjA1ZDgyOWRjZjA4ZGNlMmZlZDFhMTdkMwotODNhN2M5ZTdjMmE1Y2FlYjM4YmRhODAyZTY2OTZiYWIxN2E1ZDFlNWQ2YzUxYjYzNzFjNjQyZDU1ODhhMjk0NQotMWYzYzhiMGNkNTY4MDY1MzE1NzlmN2MwZDEwYTlmYmUyNTRlYTkxMDUyMmQ5NTVjODZkZGQ2OTNiODY2MGJiZAotMTdiMmIyM2ZlYTU3YWYxNWIxNzIwZTQyYzZkZTUzNzA3NGMwNzFjNTBjMTE0YWM1NGM0NWJhMmZlZTAwZDEzYQotMjU3M2JiOTI0MzY0OGExYmUyNTY5Y2Y2OGZmNzhlNGNhY2FjZGIzNGRhZDkxOGEzMDAwNWMzMWYxNzc4MTYzMwotNmI3NGFmOGI5OTMxYmVjMGMxODkyNzgwMDIwYzFhOTI0NzBlM2FkN2YxYmI2ZWYyNmM4MzVmMTNhOWM1NmRlZAotNTFkZjRhNzg0N2M5OTNiODhiOWZkYTlhODk1NWQ4YmRiZjZiYTc3M2QwNjY0NWUyOTJjZTI2ZDlkZjRiYmQ0ZgotM2QyMGY1MjE2MTg1MzgyNzgzN2M4MzdmMzM0MjU5OTA4MThiOTU4YWRjYzNhZTc5YjU3OTFmZjA0ZGFhMzJmZQotNTQwNTBhYTlkMzQ2MDZmMTZjNzc2M2RlNzcwY2MzM2M5YWNiNjBlNTM1NGQ1YTI3YTY4N2NhNmUwZmQ3NGE0YgotNWNmZmVhZGY2YWQwYmE4N2I5MDZjMDkyMDFmZjY1Y2U2YzNmNjIwYmJmYWFjY2JlNTRkYTg4NGI4N2U5MDZiNQotZjUyODVkMzg0MWVjZjc4ZjBhMWVlNGE4MDcyNGRhM2E0ZmQ0OWZmYmFhNjZiZTM0MDJhMjQ4MGE2ZjhmYzE2NAotMzQzYTM2OWUyYjg5NDdmZDVmNThhNDY5NzIzNGM3NDI2ODU0MjFjZTNkNTczOThjNWVkNmY2YjA0OWZkZjM5ZgotNjg3MDIzNjc1MWQ5ZWYyMjEwZTY4MGI0ZDhhNmRhYWI3NThiZDdmYTdkYTk2ODA2MDRlNWJmODVkMTgyNjYxMQotMmNhMDhlODkyMmExZDQ2YWM4NTNmNGJkY2EzN2Y3ZmU4MGQyZDI3ODU0MDEyZTRhOGY3MGJkODU0ZWE0YzE4OQotZWE2OTM5MDk2YjU2MTY4YWViOTcxYWFhZmUxYmNhNjY3MTM3YTc2NzYxY2JhMmZiZmZjZWFmZTNlOThkNTU5MAotZGIzZGJjNDRiM2Y5ZDRlZjA0MTljYWUyMzA4Njg5OGJiMjVhMjIyZWVhMTljMWE3NjAzODk2NzI5MzNlYTdjMgotOGIzMTAyNTYxOWJkMTA4Yjc5ZDUxZDU0ZTIzZjQwMWY0MjE2NWYwZDUxM2JiMjQwOWNlNjZiYTNlODNmYzAwMAotNDM3Mjg3M2ViOGI0NDA1YThmNWJkODhjYzJmMjFkMmQ2MGZhNDAyNDcwNzg2OWM1ZmQ0MGQ5NDAyOGVkMTNiMgotNTc2MmNjNzkyNGQxMDBkM2NlMGRkMzJjZmNhMTI0ZWMxZmNlNGNjZThjMTM3MDcwYTE4ZjA1Y2Q3MzgwOTQ0OQotYmNkZWIwYWMyNGRjZjYzNjc5ZDQ2YWE4YjNhNGE1ZDBkYmZhOTM0MjcxNjYxOWNkMzY4M2RmYTdhOWQ2NjgzZQotNWE3YTAzZGRiNDc4MzNmZGZmODkzNWYyZjAwNGY1OGVkZTY0NDdhZGNlNGZkYTFiNzM0Yzc1YzUyZDE2YzQwNgotOTQyOGNkZjY4ODU1OTQ2MDE0NTg0ZjdmZTQ5YjAzZjg5NmUwMDU0Y2ZmZmY1ZGE0NzI4YmY0Y2UxZDg5MjA1MgotNzAxYjQ4YjgxZjU4ZjVlYTM0NGU4ZWJmZTEzYmFhNzBjYjQzY2U0YTk3OWQ4MjI1ZWQ3ODQxNzY0ODY3MmU2MQotMDdlYjdiMzFmODFjZjUyYjQxMzYyODgyMDBlNjQwNjU0ZTgzNTM0ZWFkZjA1MzAxZmFmMmYzYTg1OTc3MmMzYQotNTQ1ZmMyMDQyOTExOWZmMDBjMjU5YWE1ODJhZjRlM2NkZTFjOTk3NjlmNGU0MzNkOWIxNzhlZGNlY2YxNDJhZAotZmZhYTZkYTAwNGE5MGY1M2U3MDA0OGFhOGQxNWEyNmJmY2Y3YjAyZWQ3MGJjMjYyZDE2NWU5OWY4N2NhNzQyNAotMGViOThmM2Q3ZmMwZDQ5MjZhZTQzYzhkMzIyYmI5ZWNhMjRhNGM0NWY3ZGJiMGZlYWE5YTkwMGUzNTIxZDZiMwotODdiNTJhMzBhY2IyOWM5MTRiMDY3OTNmMTlhMWVmYmUzYmU3ZDBiOGUyMGNhZDk5ZDI5MmMzMTViMTIzNzZkNQotNjU1MTIxMTg5YTgzMzEzMjcxNTc2MmNhNzExODY4NTgxNGY3MWFhYTA4Yjg5ZTQ2NmM3NDY4YmNhMDFiZDk4YgotNjNlYzdjYzNhYzQxZGQwNmM1YmJkYTg2MjI3YWZjYzFmNzc5NmI1Zjg3ODk0NmMxMzViZmE3NWE5OGRiMWI1NwotMGYzOGM0OTc3MGFlMjM5ODZmZmFlZGJmNjY0NGRmNThhMjUyYzI5YWM4MjFmNDU4NGI5NmI1ZGRhZmE5YjNhMQotYWEwZWY2ZDE3ZmMxZTc1OTE2NzUzYmM4Yzc5OTQ5N2UxMjc5ZWM3ODNlYTg2ZGYzMDdjZDU0YjU4YzJiM2ViYgotZmQ3MjIwMDZkMTI3ODM0YjA4OTY3MGU1ZjFlN2JhOGJjNGEwZjYxODFiYjRlZmJiOGY5OWU0NDc1MTgxNDQ5ZgotMmZjYjI1NWRhNDIzM2Y3YWIwOTdlZjAxMDhiYTNmYzEyY2RhMDYxODg3MGVhY2I5ZmU0MTk1ZGZhYjE4MjI0MgotYmFlMDk1NmQwOWUzODhkMTBkYTJmOTQwMTg2ZTI1Yzk5MjY4ODZlOTgwNmM3MDEwNWRjNzUyNTlmYjFlNWRhMgotNjc1ZTRlMTE0Zjg0ODYyZTZiODIyYTEwYTlkMzY0YjFjZDEzZGNhM2QzODViODM0OTljNzE1ZWNkNzU5ODc2NgotYjIxNTkxMGYwMDIzNThkNTkyZmMzNmQwYmQ0ODJlZTljYzMzODM3OGVhMTU2NjgzOTUyNmE1NzgzZjI1MDgxOAotMDc4Yjk3ZDczYjFkNjJhMWFhZDNkNWE5NzUzYmZlZjIzZjdiM2U2ZDViZDMxOGM0NjNhYTA0NDkwYjkwNjNhMAotZTgzZTNlNjgxMDliMTgyNzIwZDJiMWMxM2I0OThmOGY0OTU2NjFjMGY0ZTY0NTViOTZhNmE5MmZmODA2ZjFjYgotM2IxYzZlYWM4MmQ5YTY4N2I4M2M1NzJjNDJkZjIyYmVhZTMxZDEyMzk3MTkxODZmMTRlZjYzN2ZlNGU3YzdiMQotZmU4ZjRmMWJkODM2N2Q3NmQ0NjdiZTk1YzM5NGE4MTgxOThkOTIyYmNhZWVlZTM3MWZlMTdlMzk2YjI3Y2VjNQotZjA1NTQ3Nzg1ODdmYzdkNzhhY2RmMzE3YThlZmRmYzgyYzJmNTdiNjQxMWIzYWI2OGY5NmUzZTdjZDMyMWE2ZAotNDc4MzQzNTA1NmFiNWEwMDk1NzI2NDM1YmU2ODg1YmYyNzg0ZmIyY2JlZmZjMGY4MjQ4ZGNkNTk0ZDM0YjIxYwotOThlNjdkZTUwYjY4NzZjM2Q2ZDRkNGNhN2NlMGI5MDEzZWJlNzU0YjEwNGRjZmMwNzE5YTEwY2RkOTk4NWUxOQotMmNkZjRlODg4NzZjMmRkNGU3OWUyM2FmYTcwYWI1YjQ3NThhZjMyZWU4N2I4NDE1Yjg4MWFjMTVjNWMzZTFiYwotZDE3YTViOTYxZWZiM2E4ZGM5ODdkZWRlZDZmMjhhMjQwZDY2ZjAwNGFkMDVjZTFjNTUxZTI5YjQ1NjY4ZGIyYgotMzA1YzliMWFmNWNkNTM4OGEwODAyZDgwZjE4ZTBmNGJjODA2NWJhZjM5M2ZmYWI5YTRkNjc0MzEyYzIwMzNkMgotN2M3OGI1ZTk0NjFmYjA5YjliMmNhYWFiNzBjZWIzYWZhNTc0Yzg5YmM2MjAzMjgyMTFjODU2NTZmNjNhOGRkZAotOTdjODI3Mjk3MzI3Yjc5ODBjMmZlMGFjYjFjMzQ4NjZhYTNjNWQ3NDA4ZTI1N2ViYTNjNTNkZTgzMzhiZGY5NgotY2I3YmE1NWZlMzFiZGRiZjc4MDcxNDhjMGExMzJiZGJiZThhMmMyMWEyM2UxMTg4OWRhMTNlNDI5OTE0ZjdmNQotNzEzMjkzNjM1OWEwY2M2NWU1OTkzY2FmNTI5MDJmNzZmNzVkNmNiNDZkZDIwYTNjMGJlODBkNDVmMmM3NDZiZgotMjM2NzMzNDYyMDgwZmJkYzhjNWMxZGJlOTc4MWY0NWFiYTc0YWY4MDMzYTZlZjJiZGIxNmY3YjA5MzBkNmI2ZQotN2NhN2ZhYzhjZmIyZGZhYjhjMDYzZDk2MTA3NzU4NWQyNGU4ZmJiNWUwYjBiZWU5YzQ1MDliMjMzNjFkZDA2YQotZGQyNTc2NzgzM2I5YTc3MDc4MGIzMTFmNjA4Y2FlN2FkZGUwMDAyOTdhMjY3MjIxMWYwZGU4Y2Y3ZjVmYmM2MgotNzhmYWJhMjVkMDM1ZmUzYTdjYzNhNDc0M2MwZWZlMWM0YTVlOWNhZGYxZTA1YmM3OTgyNjQ4ZDVjOWZiMjk5MgotNGE5ZWUxNTcwYmEyYWIwNjhjY2UxNjg1NTIyOTkzNjFkNjJhMmJjMmMwZGE0OGVlOTRkMWNlZGYxZTJkMjliYgotNDM4NjRhYjViNzcwYTE0Yzk4YTQzMmFiNzZjMTc5OTg5MDRmMDUyYTUwZWY4NDUxMDA1MzNiYTVjZmIyNGM4NAotZGE1MzU4MWVjNGYyMjAxY2E5ZmRhZTc2ZWYzNjU1MTUxODhhY2U0Y2ZjOTM5YWQ2ZDE5MzQxM2NhN2VlMjI1YgotMDEzN2Y0NjM3ZjA5OTUyMjEzYmU3MjVjYzdhZWM1NzliMmZlODVmN2M2YWYxOGQ3MGM0ZmRhMDU1NzU2N2U2NAotZDQzMGYwOWFjYTdiZjI4OTg0OTc3YmEwZjU4NDlhNWE4NjcyOWQ1NjQwYmJlNGMzMGIxN2FiMDMyNjJhMDJiZAotOGVlMDc3ZWFkN2ZkYWVmZDM3YWYxNjAwN2Q4MzcxNGFjYTA3ZmNmODgyYWRjNDc5MjU4M2FhYmIyNzk1NzlkZgotNjc0MWY2MzdjZGY4NTk4ZmI1ODI3NTI4NzcxNDQ0YjBhYTgyZGQ1ZTAwZTcwZWRlZmE3NDA1YTFkOGE3Nzk3YgotZWYwMjFhNTNiYTY4YzdmZjY3ODBjOTRmMTM5M2QxNzQ1YWIxZmQ3YzcyOGM2MTEyNzY2YTNjMmUyMWRmZjAwMgotOWU0NWE1YzU2NjhmOGIwODRmMjJjZDZhNmNmYjA1NmNmMGY0MDJhNzNiMmMwMjExODI1OTM1MmVmZjZkNjgwYgotODc3Y2UzMDI0YzM3ZDUzMmMxODZmM2Q0YTk3NjAzNzA0Y2MwZGRiMjVjYWMwMGFlYjRjZjYwMWY2ZmI0NTY1NQotODkzOWFiOTYyY2I5ZTE2YTI0MDA5MzhkMjI2MDU2NTM1ZWJlNTcwN2NmMGE4Njc4YjU0ZTZlM2ExMDNiMmVmZgotMGJiNzMwNmQ3YzdjM2Y1MjNiMmFlYzI2N2E1ZjFlM2Y5OTIwOGQ4ZWM5YWIyN2Q2NThjMjZmNjM1YzI5ODRhYgotNWE0ZDIxNDc2OGM2ZGM3NzViY2M2MTY4MzgxNTlhYTEwZDViZDkzY2ZjOGIyZDgzNmVhZTVlZDQ4MGZiNmRkYgotMjQyNTNhNjJhMWI3OThiZmE1MWIwNjhiNjg4OGI3NmQyMjMzYjZmYjExNzk0ZjE2NjI1NGNiM2FjOGNmYjY1MAotNDI5ODY2ZGJlYjhkMDllNmQwMzg4OTg5OWE0ZThiZmM5YTg1NWVhNDY2MGY5MjhkMGFhZTgyNDdlZWMxNjY4YwotOGU3OTgzOThkNTNlNTJhNTY4NGNhYTU5YzQ3Y2IzOGM4ZjEwMDlhOGFhMTJhMjY5YTU4NzU5Mzg3NGMyZGM3OAotMGJhOTg5MDc4OTEwZjNkNzAyMTExNDc3NTFlOWY3MjY0ZDZlNjRmMWIwNTQxMGVkMzQyN2JiN2QwNzA0NDQzZQotZjJiYWViMGZiOWUzZjFjMWMxNGIxNzhlNzE2ZmViNDY0NDI0MDQ0N2EzZjAyMjExMzUwZTM2ZTFhNTg2YTA0MgotOWFiMzM2YzZiNDRjMGQyOTc3Mjk0ZTcwNGU4Njk1YjZkYWYwNzliY2EwMzNiNmJkMzQ4NWViN2E3ODU4MmZiOQotMzczNzE2MTM2YzYzZWFkYmFiM2EyNTc3NzM4ZjU1M2Y4MTEzNTgyOWY5MTE4ZjRiZmUyMGNkNTExOTBiZDdjNQotMTcwMzVlYmU5N2YyNmIwYjU4OTczZWE5YjVlMGQxMTFkOWVhY2YyZmE1NGIyMjNjNGY0MGMxMzlhYjg5MWE0MQotYzdkNWJhNTMzOGJmZDU4MDkwZWE3MjdjM2ZkOWQwYzAyMTdjMDU3OTg3ODc4ODFkMDdjZWZlMDE5NTE4Y2NkZAotYTdhZDcyMzA1ZjA2YTk4NzE3Y2RhODBjNWRhYWFmYzUwZTNjNmQ3OGQyYjVkODUxYmVlYzQ2NzMxYTZjMjllZAotZGRjYjkwODlkZTVjYzJkZGI2OTZkM2I3ZGUzYjY3ZjA2NjUyN2FlMjJjYzFhZTYyODVkZDFhZDQyZTA4MDllZQotNjU4MTIyNjhkMjhlNzEwNTg1OTI2MmU5MzY4YTNhYTdmZDAyMDdkNDdkZTVlYTU1OTE5MjdmNWU1NjgzODZkMwotYTYxZmNiZTg3Mjk0NWEyNzJjNzUzODRiZTFlODViMjZhYTA5NDcwNDcxNWYxOTU3ZGUzN2EyZmRlMjU3N2JhMwotODUwMDBkMDcwOGZjOTE4ZDUyMzYwY2RhODI4Y2VkZDE3Y2I3ZDYyNTE1NWNlYjY5MzFhMjkwMjViNDRlYzhmYwotMzY3OGZhMDgwMjdiMjBmYjk2NDlkMDdmMDE0ODRmMmZkMmUxNzQ2ZjI5MGUzMjQzNGZjZDRkMTVhY2YwNzA4YgotZWUzZmU5OTQ4ZDNhZTE0MTc0OWI0NzgxMDU1OGQ3MWQ1OTI3MzVjMWM4NmVlMzc1YmU3NDEzYjJjZjQ2MjY2MAotMGIxMTVjZDA0M2VkZTU2MTJhYjg5NWNlZTA5MDlkYThkMTY1NDA4Y2Q1YzRjMzQxMTRlZTRkN2ZhYjRjMzdiNgotYTMxY2I4MjljNGJhYjJkZDA0YjFhNzA5N2RlYzI0YzY0MjljMTM0ODI2NjcxMTY1MjJmOTRlZGM5OWRlNTUxYwotYTY5MzM2MmJlNGQyNzdlMTI4MjliYzQ2NmUxM2QwOTg0MWI1ZDlhZjUwNGJlNGVhNTllOWMyNDU5ZWVhNWFjMgotYzY3OGUzZmEzMGNkZmM1YWI4NTVkNTZjMWFkODM3NGY5NzY5YTZiNTc1YTFkZWU1YWFhYWI0ZjcxNmRjZWJlMAotMGZhYjhiMGI1NTIyMjk0Y2UzMTY0Zjg0NDY2NzlmY2M3YWZmNWJmNDkwNjJjZWE1OGY1YzY2MWE4OTVhZTc1MwotODg5MTUzNjA2NmY4NDE2ZmY1ZTM1N2ZjMzRjYzM0ZDZiNjhhYmUyZmIyYzU0MGE3MTIzYmJmOTBkMjY3MWY2NQotOTA1MTViOTZjZGQxYmQyYzEzOTZiYzE1NTAzY2FhNGNjZDNjZTI4ZTAzNjE4MDFiZGM1ZGE5ODg4N2IyYzM5ZAotYjg0YTBhNGRlNzg1OWM3ZGEzOTRhY2M0OTc2NDFlY2UxMmFkOGE3ZDYyYWM1ZjhlNmJkYTA1NzdmZTY0ZDU4MQotMzUzOTBhMzdhMTU3MGNiMjViMjNiNzQ3YjIzNmYzZjI2MDZhM2ZmNmU0ODdhNzgwNjlhMDY4ZTdhZjEzYThlOQotMzE1MDE2ZWJiMjU1MmY2NDQwNjU0MDhhNjlmMWJiNmZlZDUwNDg2YjJhMDVkNDAzY2Q1NmVjNWQzNjcxYzljZQotMDkxOTk1ZDM4NDQ5MWI2NWVlYWYzMzA3ODUyOTIzODM0MmMzMmE0YjgxNzg4YzMxZTYyYmEwNjE0YmFmY2Y5YwotM2MxY2Q0MjJjNjA1NzQwYTg5Mzk0ODdlMjZiYjkyMzNkNGNkZTY4YWZlN2EwY2FkYzNhZWNkNzM5YzljNDI1ZAotMDljYjUwYjRiNGJlMjgxMTViYTdmYzU5YjU0MTUxM2NkNmZkMDgwMzljZjQwYTFmNWI5MGE4YmQxMjYzODA2ZgotZWMzNWFhYTQxMDBlY2MwNTQxNmVjZTJmMDYxY2ZkYmMzMjFjZjMzMjRmMWVkYTkxOTc2Y2FiYjhkMmQ5YWNjOQotYjkzYzU3NWMzNjNmYTY5MWUxODIxNTMxMTQzMTg0MWRlODE4N2EyMGQ2NjY0MzQ4YzdhOGFkYjA2ZTg2N2QwMgotMDdiZDQ4ZmU4MDY3MTY4YzQ0MTJmYzgwY2RiYTYyZjhiOTIwOWY1NDA3NjcwYTI2ZGIxZjdmNWQ2N2M0ZDIyNwotOTBiY2QwZjFlODY0MGU1ZjkyODhjNDEwNDg3MjkwODA4Yjg4Zjk0MjFkNTA2Mzg2YWM5NWNkOTU5ZmQxZWQwNwotNzc4ZGUyZjYyOTU4ZmY0MDlkMzczMzJhYTRiYTg4YzczNWYyYTU2ZTRlNzQ2ZWU5OGI5NjY3MDcyODc0YjIxYQotNWY5ODIyNWFlZWNhYmY1Y2M4MThmM2ZhNTRlZGRlMTc4YjQwYTFiMWQ2ZTJmOTAwMzY1ZTJiNTAzMzQ2YjIxMwotZGRiNDNhMjY5YzVhOTczZDMwM2RiZjYxNWFjM2NhYWJmYzM5ZmUyMTQ0NjgxZTdjZDYzMzA1NmJjNzdkOTVhOQotMTZmNTQyOTE1NzVhZmY3YTNhNGMxM2VjYTYxYThkMjYxYjNhNzQzMDdhYWMzOGI1MGMwZTU1MjIyNjI2ZTcxNwotZGI2ZTEyMjU0N2IzYjhhNzY2ZmI4NzdkZWVlYTUyZWNlMmU3NGJhMDJjYTc2NzZmMGUwMzdjZmZhZjI4NzM0MAotYzE5YmJmZDkzNzhkOGU4OTgyMjVlZGEzZmJmODE0YWQ1MWY5NzYyNDFhNzI4NWRiY2M2MjYxMGZlOTk4ZWJjOQotN2RjNTk2MWFmOWQ3MGE2Nzg2ZTg5MjJlNzkzMmE1MzlmMTYwNjEwMTQ0MGM2ODU1ZjIyODRlYjM0YTg5NWNhZQotNDQ2MzdiNmEwYjFjNjM4NmMyMWYxMWYyZTdlZTJhZGYwMTJlYTZmZjM1MzE0OTgxMjI2NTA1YmQ0YjBlYTI1ZAotMzcxYmU5ZmI2ZmMwNDI1ZDhmMzc0Y2M1MWZjYjE1NjAwZmY3YTQ5YTQxMDRiYzI5YTM2OWM4MzM2NDM4YmQ0YQotNDViN2M4ZmQ1MjU3N2E0OWFjZGIzOTRjYmJjMTZjODQ0YWQ5OWY4NWI1YWYxZTgwMTg5MDBkNTA4NjJkN2M3YgotMDQ1ZWU0YmY3OTcyZWIwNWFhNTY5NmEwMDRmM2VjOWJlOTVjNGMxNDE4MGM3YzgwOThhM2EwNDQzYzBkZmFhZAotOTFlOWMzYTM3NTA5YjI5MDY2YWYxMTJkYjc3MTA3YjlkYWYyZTQ1ZTcyZGNkNzg2NjBkNWQ1NjAxOGNkZjFlNAotY2E3ODc1OTNjMzFhMmQ2ZWY5MjVlMzdlNGVlNzdlNjg3ZTE0OWJmNTA2NjY0OTc1Y2NiZjVmZGMyMGI1YzMwNgotOTg0MjA4ZmZiOWVjMmY3OWU3NmE3YTAyOWNmNTk4MWZkMmQwNzE3NjA4M2Q3ZmEwZDlmYTdiMWU2YzZkYTlmZQotNDIzYmYyOTAxMTQ3OGJhMzlmYmRjN2U3N2JhMjMwZWU3Yjg5NzI4YzkzMTI2MDJkZGEzNTlmMWVlNjViYTM2MgotZDFmMzY2NTc5NDMyNTVkNjJmMGM4NGZlOGE2MzAyMDRhOGU2NGQ4Zjk0MGU5ZGRhZjNjMmRkYzE2ZmQxMzFjNwotZjMwMmEyZjlmYjY1ZWNjY2FkNDYxNjk3N2IyZWM3MjRmYzZhNGMzOTQxNzk2MmUwZGUxZGNmYTY5YWVjOGEwMgotMDcxNzkyNjY5MzViNjU1ZDIwYWYzZDQ1MjI4YWMzNzk2ZmQyYjdiNmUwNTgwOTA0YTI3ZmUwYzgwMjNmNGZhMAotZmQ3MGU0NjllNWYzMDk2OTBjNmFiNzM3ZTllMGRkMWRiNTdmYjMxMjM2MmI2NGZmMTk1NTQwMTM5NWI0MjA4NgotMDdlN2Y5NDQ5YTg5NTMxNDlmMzI0YjRkNTc4NWMyYTBhNGMyOGViNDg3ZmQwYmZkNjU0NjJhMWE0YTc0MWJlMQotYjE4NzYzMzA5MTJlZGVmY2FjZTFkZmFjZWE3NjI4ZDE2YTQ3MTZkMzk4OWUxYjMxODMwY2JjMmJmOWZjZTE0NAotOWYwZTgwYmRjYmNmY2Y0NzdhMmMzMGE3MmVjMjI3YjIwYTBhZjE2ZmNiODM1NmJjMjA1ZjE4YzYwODhjMWQ2ZAotYzU3OWYxZGNkMjNmZmExNDdkNzI4MjFiN2E2M2ZjMDExZDU3MThmZWQ0MWIxNmVhMWQ4M2VjZDhkMmFkZTI4OQotNTRlYWExMDVmODJmNzc3YjY2MzVjMTYwZDBlM2Q2N2ZiZmYyMDgwZGIyYTk5ZDQ4OWEwNzBkODY1YzM5YWM5ZAotMmE4OGFiNWZiY2UwMTA5MTllZGMwYWIyMTNhMDkwMzhmYWM2ZDNjODFhNDk3MmUzYzU2ODNmNDk0ODBmYTVmZQotYjhjZDMyNzkzOTgwMjhkYWI2M2VmN2U4ZTFkZjg1YTYzZjkzMjczZjE4N2Y4Zjg2MTljMTRhYjgyNGM5N2MzYwotNzBkMDZmYmMwYTFiNGJlMWIyYjdmMTFlZjQ2OWFkZWY3MTYxN2IzMDRiNTFjNDYyYWIzYzZjMGU4MzFjOWFkMwotY2I4MGM1ZTBkMGZhZmQwNzlkN2Y0ZjI0NWQ1NDJlYTg5MmM2ZmUzYzNkNmQxYWMyYzkyMzcxYjdhMzNhYWI1YQotYWI4Mzc1YjRjYWU5NjYxYzlkMzE0OTk5MDkzYjJhMDRlYTFjYjY3MWM5ZjA3ZWNlZmJhNjE1ZTAyM2NiMGY3MgotYjZlZWQyMzFhZDMxYjFmNGQwM2U4MDdlNTZjMWUxNjYzOTg2ZWVkNjVlM2VlNDdhMmRkMTFjMTIxMTIzNjk3MwotNGI0NjA3YTY1NzBmNTM0ZGViYzcyYWMwNmRiYjIxNDlmOWVmYjc5M2E5MTdiM2I2MDQyNzFmYjc2NGZhYjg3MQotZjdhYTVhNWZjYzU0NTMzOTUxNDU0ZmU3YWZhMjljZGRlZjk2ZTk1MWFhYTliOGVlYjNmOWI0MThiZDEzMjk3NAotYzYwMWI2ZmEyOTQ3MWRjMzQ4MTRmYzgxYTFlMWE1MTU1OTUxYzEyMDIyYWFkY2U1ODI2MzAyMjIwYjE4ZGZjMwotZDMwYjIyNzdkMDhlN2NjN2E4N2JmMWI4ZWM0NTA3YjQzY2VmYjExNzExOWQ4NmRlM2JlNTFiZjg3MDM5MGVhMwotZDhkYWEzZjc0Y2NkMzcxMmQxYzAwMjYxZTg1M2RjMzA3OGRkNDExMTg5ODcyYTUwZDg1ZDU4Y2VlOGZmZmIxZgotMDI4ODAyOTQ5MDQxMmYzZTU4ZjgzZGFkYTA4ZmE2OTViMThlZmQwYTRmMjg5NzA1Mzg1YTQxMWZjYjJkN2E0NwotZmZlMzg5NzdmY2UxODE4OGMwMDQzYzQ0OGQyN2UxNjBlZTc1MmJlMGQ0NGQwZjgzYjZiZjY0MmM2OTRhYTUzMAotZTIyM2FlZmEzZmRiMTdlZTdhZWFiYTc1YjlhODZkN2NiMGY1MGFkNGQ1Y2U2OGQ0ZWQ0OGNiMGMxODhmOWRjNAotMzQ1NDhiNDg0MDMwNzhmNjMwNzliY2U4NTI5ZjkxMGFiMjgwZWJjYWU3ZGY5ZjgyNGRjYTc1NmY5ZDY0N2RjNAotZDQyZGE0MTIyMzBhNjIzMTMwN2U3NDk1NDI0Zjk4YzlmMTI5Y2M0YTMyNmEzZGQ4ZTQ3NmUxOGQ2NjZmOTRmZQotNTNlZGM4N2U0N2Y2ZDg0YWJiNjQzZmYzYjQwODQ0MzdkYTI2YjRhMjk4ZjgxOWY0YjY4MjNlZGRhYzExYmM4NQotYjlmNWM1ZDBhYTFlN2IwZGRjYTgyYzhlMDE5NDRiM2VhNDg5NzhjMWI4ZjRmZjQ3Nzc5YTU1MjNmNjAwZDMzYgotODk2YjY1OWMzMWY0ZjZmN2RlY2JhZTBmZTFmODNkZGUxOGY3N2Y1M2RiMTQwYTM2YjBmNmY0Yjg4M2ViY2JiMgotYjZkMzUzYmYyY2E2MTAyMTczYjZkZmJhMGY0NTJkMDExZjZjZjdkNjYxYTQ3MGMzYzVkZDE4OWMxZTgzZmM0YgotOTM3MmVkNjdlZjRlZDlhNWI5OGY4NWM4ZDczZDQ5MDEzM2I3MzYyYWI5NzZhMzg1Y2VjNzA1YTJlYjg5ZDdmMwotMmZiZDYwYzA4Yjg2YTMwMjE5YWEyOTg4Zjc5ZTYzODYwNjJiZTgzOWMxZjlkMzBhZmZkZTgyY2FkZTM0OTRlZQotMTMwNDE3NTVlNzZjYzA3Y2NiM2E0YTcwMTQ2MTI5MGI1Yjc5NzI4ZWRkZmM2M2IyZWQ1Y2Q0YmJlMGM0YzM2NQotNzU0ODhkNTkwMjU4Y2UyMDg0Zjg5OGQ3YzU4YjNmNjViMDlkZWEyZjhkNGY3MWU4MGIyYTJmOGYzMWQ1ZmNlZgotN2E3NzQ0YjY0ZDdiYWE3MDFlNDczYjg1YzY1ODE0YjBhOTNlM2ZmYmQ3YjJhZjg1ZTAwZmZiZmFiOWJiNzc2NgotZjQ0NDcwOWE0NzkwMmM5MTliZDJhNGJlY2RjZTA3YjY0MDUzYWVhMTA1OGUyNjAyNGI0NjE1M2Q2YmI5MmMwYgotNTk4NjFiMmRkYWYzZDM4ZGJlYTViZmVkY2M0OTkzOGViOTgxODhhM2M0ZGNlZWZhMWYzMDg1NTlmNzcxMmNjZgotMjg4MjE5YzZhM2Q0ZWVmYjgxYTJjNWYxNTQ5OTBmZDhmMDk3MTNhMDUzMTAxN2Q3NGI0N2UxZjk3YWE2ZjBmMwotOTJjZTViYjc0NzVjNjc2MjQ3ZDU3YmIxNGZmNjc2ZjExYTRiNWI1NjRhYzI2YmZhOWQ4NWM5Y2IwNDE0ZmFmYgotYzM1YjQ2ZWFjZjc0ZGQ5NjRmYmRkYWIyOGZkN2JiMzA0YjliZjRlMTJjZDE1YjNiYmIxNjNkZDY2ZTg5ZjI0ZQotNjQ4NWM2ZWE2MzM2NWQyOTkwN2Y2YmE5NmQzMTNmOWIyYWI3ZDE3NWQ1NDlmNDIzNTY1M2VmOTc5YTVjNjNjYgotNmVlNTBjYzMzMzM4N2EwZWQ4OGQzMGQ5ZmQyMTk3ZDMxYTA4OTRlZDBhNDdiMTVkOTJkY2E0NjNhOGM4NGIzYQotOTg2ZDM5NmU2NTMwYjJlOWJhMTI3YmI1NjYyY2E5NDhhOGYwYzU2M2I5Yzg2ODY0NGI4ZDAxMDY0ZGI2YWE3MgotMDkwZGRhMDUyMWU2ZDc3ODE5MmE4YzZkNGQ0NjM5ZTgwZTMwOTE5NGNiNzZmYzVkNDYxNWYzOTZkZDg1YjA2ZgotNzFkZmM3ZjM5YTI1OWUzMjJjNWU3ZDI4NjQ2MzEwZWFjOTJlNWY2YWZkZDYwNzFiMjFlNjY2NGUxY2RkMzg0OAotYzg2NGNlMGUzODBmZGM0OGIyNTFkNTJiNTA5NGVhZDY0ZDM4MGI2ODE4ZTJjOGIxYTRlYjhmOWMxOGFkZGU2ZAotNmU0Y2UxZGVmMmFlOGYyNjQ5ZjFlNWFhYTA1NzIwYTM1OGE3NGUxODE1NjhhMTBiNTM2ZjY4YjdhMDI5Mjc4NwotMTJjMzRhY2ZhNWJiYWZjNGFhM2VhYTRkOGViYjI2ZTIwYmIwMGQyMjhiNGVhYzRhMTYzZTBiNzI4OTk4NzRhMwotZjg1ZTgyYzM5NmQ5ZTI4OTFkOGUwZDZlNTU3MWQ0ZWYxMTY4NzljZDJmNTQ4NWRkZTRiOWQ0MGY2MzhhM2E5NQotZGU1ZGRkMTRhZGJlNzJmNWJiYWRmMGQ5OTUwYTE5NWY2NGZkMzIwOWM2ZDQ3YjQ2Yjc3MDhmODU1ZGE5NmNiNQotZTllMTI2MGY2Njk5ZDk0NWE2MTFhN2VhMzQ4ZGIzYzg2YmU0YjMyZmMyNjg3ZjE1YzRjODY5NTcwMThkNDI4ZAotZjYyNDRhMWZiNmE5OTEyMmJmODlkN2FkZDAxYzgwZjJiMmJiMmM3MTY4YjAyYzQwMGJmYzk4ZDY1Mzk0OTQ4ZAotYzczNjc0MWY5ZTAyNDRmZTA5NjU3MWYwODdjNWQ2ZDdkMDIyYzcyNmE0Y2VjZjM3Y2YyZGRlYjFlOWQ3NzA5OAotNjBjNWQ0MzEyMWJjMmU0YjcyYTJkODk1YTVhZDJmNDQ5MTk2YWVmZThjMDE3ODQzMjNkZTM4MDQzNjNiODhjOQotMWM4NjEyNGY0MzFlNmRkMDc0NGMzZDA3M2ZmZjRiYmMyYjk4YmRlZjcxM2JkZWZjMmRhNGUwZTIyZWRhNzZkMAotMzQ0MjRjZTEzNTI5YmMwNGMwNzhkZmJmOGIzZWZkOTZjZjY2MmM0ZTE1MWYxNWQ0ZjhlYTUyNjQxNjg5ZDRhMAotNWY3YzllYzRlZmE1MTE5ZGI5ZTNhNjFlNGE2NjljMjkzNDhhMWU3MTM4MmMwOTM0OTljZDM1ZDdkMTIyN2E1ZgotNWJjM2RiOTY4MjNjMTY3MTAwMDc0YzcwMDQwYTU1MTQyMTQ4MTk2NTY3YzIwYzdlZWNiYjI1ZWQ2ZTMxZjU2MwotOWFkZDI0ZDUyYWNlZWE0Yjg4MTE0ZWI2ZGJhOTQ2MWMyZTUyNjJmYjk1MjllOWY2ZjBiZGUyMGQzZTIwOWE4ZgotMGM5ZmQ4MWI5OWIwMGQyNjhmNzY0NTkzYmFhODk0ZjdhZTUwNjM0NzY2YzkyMmY3NTFlZDE4M2FhY2FlYzAzZAotYjdkOTZkMDEyY2QwZDExMTkwNDI0NWJlOTUzN2VkYjBmODc2OWFkMWE4YWJiZDhkMWNiYmU1ZTc5YzUzYzAwZAotOTgzYzY5ZDg4NjVlOTNiNjQ5NWEyZjE1YWQ5YWIxZGE3NTAzYmQ1Yjg1ZWJlMjdhYmEwMWY3MWU1NjQ4MmJlOQotZDQzNDJhYzI1NjJkOGU2ZDFlNDE0NjQ0NzU2MWVmNTA2OGQxNzMwNmQ2NmE1MmZhNDE2NDQ4OTdhOWIxNjFjOAotNWRkNDE2MWFhM2Q5NTZlNzk2MWFhODAyMDQ2N2U3NmE4MzNlMDFjOTc0ZTMyYWEyYjhjZjI3ZDYyZmM4MWVlNAotZDc0NjQ5YmY5NTMwMzA2NDgxZjQzMGE1MzlhOTVkY2MyNTAyZjcxMjk0N2Y2YTY4ZGRhMDA1ODllZjQwNDEzMgotMWRiYzhiOTRhZmQ4MjdiYmQ1Zjc3ODIwMzUzZmRkZWM1ZDk4ZmRkMjU2ZTg1ODU4MTA1NDc4OTc4MWFiMDkwYQotODE2ZTY1YWQzZGM0YTY4YjRlZjIzNTZlN2NkMmY5MDZhODU5ZGFkNjgwZDY0OTQ1N2JhZTE1OWY5MTgwNWQ1MgotZmI2ZGNmYTVkMGFjNjM3M2ZhODMyNWE4MTc1NjNiYzllZDg5YTE3ZDhjZGVlOWI3NTE2ZjM4OTA4ZTQyNmYwNQotMTUxN2VlYzc5NDFjYmFkYjIyMzkwZTNlMmUxN2Q2MmNhNjdmMzdkMDEzNzdjNWExZTA5YmVmNWI3OTViNDQ0NgotNTRiMzgzMTkzMzUxZTA1ZWQ4YmJkOGIwYjEzOGNmNjJhNDI4Yzc4NzQ0NTgyZWVjOTBhNDFjM2JkNDRhNGU3MwotYzliMzJlYTQ5MzZjMjExMjY5YmE1Zjg4M2Q0NWIxNjY4MWY4YWZhMDY0NmE0MDMxZWY2OWNmNDkzNjMwNTMzNgotNTc1OGY1MDUzNGU2OTc0MzQyZjRkMjMyYjUwMjRkYmEwZWIyOTdlM2FhM2U5ZWYwOTM1YmQ0Nzk5ODM3MDQyMAotZWFkODQ0YzdlMzM2Mjg4MzU2NzE1Y2ViOGNiODQ5MmVjZGM4ZmQ4ZjExODMzNjBmYTMyODUwMDUxNDQyZjRkNwotYzAyNTBkNjU4YzYzM2RlMjEwNDhmNDY3NmExODc1ZGY2YThhNjFmMGZjN2MyNWRkNWFjZDAyMjA3OThjYTcwZQotZjA5YTcyYjE5NTk1MTcyYWZiOTA4NWI5YTU5NzFhZDFiOWEzYTI1MDg4ODRhM2JjZTg4Yzk4NGY1ODM4OTYyMAotOTU1ODQ4NjZjNTlmODkxMjBjN2Y0OTFjZGUzNWI5ZDE3OWYxMWRiMGQzYzMwMzcwMTM4ODUyMDUwY2YxNGIxOAotYzA2ZGFkYzIxODMzNWJiNDY1ZGQ4ODMwNGYxYzFjZDExMDYyY2E3MjY0OTQ5MWZkYzYyZDU3MWMwODJjYzgxNgotMjYxNDQ0OTA2ZDM5OTc2MDE1OWY2YjFlNmRmNGI0MmE3YTg0NzUwYWE2MWMwMzRiMTFhNmU3ZWRkY2RlYjU0ZAotZTFmNTE1MTA0MmE4ZTlmNmEyM2E4MWEyMzVmYmMzOTA4YTg1YTZiMDVkODE2MmJiZGYzYTY3MjcxNWI2ZmNjZQotNTU0ZTk4ZGYxZjQ1ODNlMDNlNDU2NDY5ODkwZjA3ZjgzYmMwYTg5NTRmYzVlZGM3ODk4ZjIxZjY5MTdkMzBmYQotMzZmYWVlOThmNjIyZWYzMTNjYzg0MzE5MzFkODNkMjcxY2VmODgwZGJhMDdiODMyYTAxMzg0OTk0ZTk2NDIzMwotZjJlMjlkZTMwNWMzODYzMTkxZjg3N2RmYmE0NDIxNGRhNjhiZGJmYmRlMWUzYjhiOTY1OWQ3ODAwZGY1YmQxOQotMjhiYjE0MjVhNTFhYmMzMTdlZmRkYTA5ZDI5ZTA0ZWM4YjE3YmQzYjc4MDg1NTk1MTIwYjU4ZmI0MjE5MTZjNgotYWY0YjkyNzc2ZWY4YTgyMTFjYzM3NmEzNzU2NjQyMmJmMmUyYTg0MGJlNTdhMzU3YWI5YjlhZGFhMjA2MDBkNQotYzQ5ZjIyOGQyZjdiYjYwNmZjZmE4NjczNDI4ODRmY2Q0MjZhNzJjYTRjNWQwOTYxMmJiZTI2YTJkOWQzYzhmZQotMTVhNTVlMDk1YjY3MDVmMmEyZjJhMDBjOWYxY2JhZTE2YjkxZTEzNzk4Yjk2ZDVhZTY2YjVhOGQxY2Q3NTFjYwotOTc0N2JkOTUxYTU1ZWMzZmNjMTFmNThmOGFmYjQwOTEzMTY2YWI2MGEwMWI2OTc1MDdmZTA3NTNkMDg1ZTVhOAotODE1M2NmY2JiNzBlMjliNzA3M2FiMzNmN2JlMmI2YmQwNzBlZDk3NGQwY2ZlNGQ0MWY3ZjU3ZjA1Y2VmMzhjNAotMjUxYWE4MjZlNGExZDM3NDU5MjEyYzFiNDExYjZiNTFmYWE1NjRkYTBmZjQ4ZWU2NDAyYjNjOWZiNzdkNTAyZgotNjFmZWViMzI2MDJkYTJiNWZhODgwYzUzN2Y2MGUxMzk0NTcxMzkyYzNmYmE0ZDExMGZmNDdhNDJkOTIzYzE1MwotZjdhODNiYzFmZmU2N2NkMTFmZjFhNzYzOTUwZjJkN2I2ZDk1NzVmNDU1NjJjM2E5ZGU2ZDRlYmY1OTQ4MmQ3YQotNzE2ZjM5ZWNhOTdmZDY4YmU3MWFhNzM5ODdkNTcwY2UyZGRmOTUzYzZlYzk3Y2JiNzZiMTQ3Y2ViODk3MzU2NAotN2VlMTU5NDM0ZTNhZjY1ODhmNDdmZjk3MjJiN2U5MGY0ZDlmZDBjNWI5ZTlmM2ExNGY5YmZiYTYwY2E2NTU2YgotMDQ3M2RjMDczYTk2MTczMWQzMjIxNjE1MDBlMTVhZGEzNzNkNTAzNTUyYzBiNzZmYzY1NzYwODhlNjMwY2YyOQotYjliMGM4MmNiMzQ4MjU5ZWRkNDgyNTIwYTg0OTY1YTUzY2Q2NzMxMzhhYTU3YzMyZTQxZmNmNTBmZTI0YTQ0NwotNGVkMjM0MDFmNDNmNTIwNmRlN2ZiM2I2ZDE3NTAyMjMxMTU5MTlkODViNTRlYWU4Mjk4YTE5MjEyZTVjNjZlMAotYzA1YzZkZDdkN2Y4ZGQ4NzcxMjMyMDViN2UzOTFhMTg5ZTExZmMzMGZkYzY1MzJmY2E4Nzc3MDk4NWIzNTdhNAotZmJmOWM1ZDI2MWE0Yzk5OGUyZmU4ZWI5NmUyN2RhYzlkYWYxZDNmMGVjNzQyMmE4NWQ5YzdiMjQxODU3MjA5YwotZjM3MmMwM2MxMTAwZDhlYmYzY2U0YWIzYzBlZmMxZjk3OWM1OTk5YmFjNmQ0YWJiNmFiYWIxZDA1OWM1M2Y3ZQotMzRmOTcyZjU2ZGYzMjliZGI4NDg1ZTM5Y2M5OGNiZjIwY2NiNzBhMmEzY2ZkYWQ0ZGViMzI2NzU3OGIwMmYwYgotMDM0MGY0MmJhYzc0OTQ2NTk1MTE5OGQyZWEyYmY3OTk1ODUyYTUwYjU4NzY1OTdlNTVlMWExOTc3YjllMmYwYgotOGE4ZmIwZjAzODM5ZGNmNmJkNTU0MjgyNzIwOGQ0NDNlZDRiOWMwMTQ1ZTQ1MjIyNzRhMDJlNDQyMGY3MzhlNwotOTYyYzZkOWZlZTE3NTIwZWNmNmQ2NzcyZTVlNzdkNmVkMzk1MzA0Njk5ZGQ2NWQ3YTYxMGQ3OTNlMzhjZTNkYwotZTQ2MTg0M2Q1YWYxZTI3YmVkNTY1MmJiODRkNWU4NTYyMmI0OGJlYzcyZTE2MjJhYjExNTA2YWRlNzAyY2IyZQotOGNhM2ZmYjhhZGQ1YzI0NzAyMDdiZWQ3NGYyYjM0ZmFmOGNiNjFkZDVlMGJmNTRmMmI4ZTFjN2VhMWZlZTgxZQotMGUwYTE2NzQ3NDQzNjMwYjA0OTkwZWUxYmU5ZGI1NzY0YTU4MDIyMmIyNzMzMjA3MmU3NGE2MGFiN2I3ODlkYQotYWVlNzQxZWI1MzhlM2FjN2UzOGIzMzNjN2Y2ZGFkY2FkNWI5MzgzYWI0MzMzNTk4NjJkY2IzMGJhNTNhNDEzYgotNWU5OTQ3ZWI2MzdlNzhlZWRjNGI4YjE3Y2VjNmI4MmY0Y2I4ZDJkNzFhMzc5MjFlNjlkNDI4NzIzODIzZWM5NQotMGY2ODNhNmJmYjU1ZDIyZGZiMTYxZTFkNmI2ZGI0OWRhY2VjZTZlNDNhZDJjNTFhNzBlNjM0MmE4NTE2OWZkZQotZjgwNjBkN2RhN2UyMGI0ZGIxNzZiYjg2MmMyOTc0OTA3N2Q3MTA0YmNiMzEzZTVjODg2YTAxY2IxNmYxMWY2MgotOTg0YzVmODUzNTE2YzE0MTlkZjkyOWQyOWVhZjQ0OTBhM2FlYmQyNDM1OGVhYzAwNmE1OTRhZmNiODM5Nzc4ZgotZDA5MjVlMmRhYWJlNzRjN2RkY2NlOWE0ZjQ1NDYzM2I1MmI0NDVmZWE5OTEwNWZiMDY5OTQ4NTk1NmZjNzM3ZgotMjU2MjVkNTNkY2YwYjllMjM4NmJiZjA5MDBlMGUwMTFlOGFkZmUxNjJkNTg3NmE4NTBhNjUwNzUxMjY5MGQyZAotZDFmMDA5OTJmNGRiYmNhMmM2M2NkNzBiMTZkY2UxNWQxYzEyOGI5ZDY4ODFmM2Y3ZmZlYjY4ZDcxNzRhZTc2OQotM2I2ZjVlMDI1MjNjN2YwNDZkZTI5NGUxODI1NWI2ODlkMmVmNTI5ZTZkZmU0ODk5NTZhZmM5MDkyODRhNGQ0MwotYjBjYTFkOWY4YjliZTRlNGRhNTM1NTIyY2Q5YjZlNjQ4NDFjODExMzhlZTM1OGVmNjc2OGU3Zjc4YWY4MDMzYQotNjg4NTQ1N2RhNmJhNDJjYjRiZGQ0ZjM1MjMzYjhlNWFjMDJiN2Q4ZmJmMjA5MmJiOGNlODkwZGVjYjZlOTljYQotMTUyZDJhYTU2YzVhYjQxNzliYTc5MzZjNzRkZDZjMzQyYTM5MjEzMWZiOTZjMTRjM2IyNGQ5ZjBlNGQ4YjFjYgotODYyZWE1ZTdiMTNlMjA0YzkxNGJmOTVmNTVmZjMyZTQzMDhmZTViMjk0OWZhNDU0NTYwZThkZWM0NzRlZjUyYgotNjViYmJlZDAxN2Q1ZWFlZDBkODlhM2M4NmZjNjNiZjAxZDNhNmExMGE1ZmUzODliMWFmMDEzZWJjYmZmMmExNwotN2Y2ZTg1NGRmZWM1ZGJmMTlkNGU5NzdhMDdhNDIyODdhMmRiZDQyYTc4ZTU4OWEwMDJjY2E0N2ViODY1YmQ1ZQotNjAxYTk4YmIzYTg1NzJmMjBlZjFjMGEyYjM1MDBmNjE1YjFiOGY5YjA0MjE1ZjkxYWNlYzQ1NDMxMmVjMWRjZQotMDhmNDEzYjllMmRkZGRjZmQyYmQ4NTEyNWRjNWEwNDNhNDVjMGI5ZDNjODZhYzMwYjIxZjM0Y2FlMmQzNDdhMQotZTkzNTg2ZWI5NWZkZDNkMWRiNzE1N2IyMWI3ZWQxNzAyZDMxODc2YTFjZmNlNThkNjE5YTY2ZGY4Y2NjMzExNgotMzE5ODU0YTU3OTY1ZmUyM2QyZDJkN2UwMmY0ZDk1ZDgxMGU4YTEzZDI5ODcyMjc0ZmE2ZjQ4YjczMzNiNzQzYwotN2FmNDE4YzFmZGFmNDY3YWNkNTQ4M2E0N2M1ZTk5YTdiZDgxZTE4ZWY5ODc2M2VjYzA4ODIwMTc2YTEwOTE0NQotYWYxODM4NzBmYWYxNzFhM2MyNGY2MDM2NTQ4OTZlMmQxYjBhYzYyMjRjZmM3NjViZjc0N2UxOTRjZDE4Yzc0MAotNmM2MWZkMTBiNmI3ZGNlOWMwYTY1NzdhODdhZTg0MGU4OGY5OWNiZjFjMWQ2Y2M4MzYyM2QyZmU4MGJkNzEwYwotZWM3OTI1NmY4OWYyNmI0NWY3NTI4MWQzZGU5NjM2YTEzNGY2M2UyNDRkZjRhNjIzYzYzYTg5NWZlNjZlMTQ2NAotMTk1OTY1NWYyMzViZDA1NmQ2NWUzYTUwZjU1YTA0MTQ0NzU5NDQyMmVlZmZhY2NlNmFmN2NjOTc2OGY3MjE1OAotMThlZDQwOGU0NzM1OGFkNDVmY2UyMGU0ODQ4Y2MzOGY3MDk0Mzc1NWU5MjMzYWM3MTFlNjYzZjJjN2Q3N2I0NgotYzg3OGU3MDY2OWFkMzBlZDE4YjZmODMyZTRkN2Y1NGEyM2M4MzdlZDQ0MGFlOTc4ODMzNDhhMGI1ZmU5NTIzMgotNzc5MTg3ZTQyOWI2Zjg1NWVkN2NmZmNjYzhkNjc4NGQ4YmNkOTI1NDhlMzI1N2FjODcyMzFjMzZmMTE5ZGRmYgotZjI4YWI4ZGM4YjI1M2ExZmEwOWYwMTY4ODdmYzI5YjY2NTliNDBiZjNkZDlkYjZlYWQ4YzhjM2U1MDRiMTBmOAotMzdkYWM4MmE4MTZlMDY3MjIzOTc4NjdkZjMyZmEyNWRhMDcxM2U5MmVkZTllNGQ0MTU3N2VmNThhYzcwYjQwMgotYTQ0MjdhN2M4NmY3YzFkN2YzNzhiNjJkYjQzY2E0YmMzYTg2NjlmNmU5MjRkNzE5ZjE4Nzk5ZDFhOWU1OTY5ZAotNzZiZGU0ZmM5NzYwNzRmMmQ2MjM3MjFkMzhlM2Y1YzczNDI4ZDY4MjQwNDlkZWE5NDE2YTQ1MGJlMDJkY2I1NQotOTA4ZTM3ZmFmNGE1NmEzNjUxOTMxMWRkYjNkMWNiNjY4MzdjMjk2NGEyZGQwZDM0YTIzZGRlNDNlYjMwYzg4ZAotYjZlYTU0MTk1NmI5MDRkYjkxMWQwMDlmMGIyMDliZmRjMTM5ZjQ4ODc4YzgxMWVjMzhhMjE2OTJmOWI4NjZjMAotYTU5ZDlkNzM2ZDQyOWRlMGRiNGIwNTI2NDYzZDAzNDgxNTcwMTlhMjYyYjJjM2UwYmY1NDA5NWQwNjExMDU5MwotMzY0NmZjZDI0MTM0ZDZiM2EyYTkwNmE4OTExODc2OTI5NjdlOTNmNjlhNTRmZjNhYjgwNTA0MTg1ODVlZDFmNQotOTgyMmIxMzRmODg0MTU4OWZlMTQ2ZDA1YWIwMGM4ZTIyNjUxYzQzNzIzMjE2YzA1Mzg1MWE1ZDFmOWJkZmFmOAotNTljNTU1MjNhY2YxZTM5NGQyNzUwMGExY2RkNTUxYzc3M2M5YTZkN2IzODgyZjMxZjI5YzI4MWZiNmM2MjUwZAotOGExYzNjOGRkMTEwYzE5MTAwMTRkYTZmZDFkNTdiOGFlMTAyYjI2MWZiNjVhMzAxOWJkNzVlODFjY2ViZGUzZgotM2UyMzc2NGU5YTVkYmU2NDBjYTk4NTg1ZGEyYTRhZjlkZTVhNTA0NTU5OGE5MDVlZTdiODJiYmFhYmRkMGQ5MgotYmI1MzUxZDNhMGIzMDcxZTg2NjZmY2U0NTIwMmFmNjAwMDc5MGMxYzFkMGE1YmYwYzQ2MjNiOTgxNWI4ZDNiNwotN2MzOTk3MGE1MDlkYjZhNGEwZmZhY2UzOGE2MGUyZGNjYWI3ZjViN2FkMWMwZjQyYTc0ZGExNjE0NzU4OWEyZAotM2RhZGRlOWJiMWE2M2E0MDQ3ZWEyMGRkZTExMDlmODg1NmJiODExODRmNDI1Njk5NGI1MDA1ZDY1NGU0OTA4NgotN2JiODM5NmZjOGQ4MDdlYmRlZmJiNzRlOTg5NGJmMGVjNzkzNjk5ZjBlNjgyNjM4ODU1ODFhMTdjODdkNzA4MgotMzcxZDNkNDg4NGI1MGUxMjk1YzUxN2ZjNTZiOTFlYmI2YjRjMjNiMTUwZDU0MmNkMDc2ODkyNDIzMmE1YWMwMAotOGE5OGY1Y2U5YWRjOGRkM2U2NWYwODViMzU2NDA5MTk3NjcyMzdkMGY5NzAzY2JkNjkxYTk4N2EwYWEwNDQ0YQotNWVhMGQ4ODc4Mzc0ODJhNzI0ODg2NWNkNzhiNmY2NjUzMDFjYjY3Y2NlYjFmNjg5MTk4ODIxMjI3YzFhY2Q4MQotM2QwYTUwNjc0ODMyYmQzM2IyNjcyNzU2ZDUxODZjODk1MjgxODBlMTkwZDE1MjVjM2U4MDZjYWRkYzFlNDE1NwotNDYwNTU5MTBjZWU0ZjYwZjQwYjEwNjVmNDM1YmU4YTM5ZWI0NTRkODhmNWJjNDViYTgxOGU1YjAwNmU1YTM4ZAotMjk5NzRmNjhlZTE5NjI0NDhmN2E5ZmQ4M2M3ZjEwN2M3Nzg4ZWI4OTc1ZGVkZWU3NTlhMmJiY2E0MGM4MTFiOQotZDg1N2NmOGU1MTAzNzZkNDhhYmQ2MDU2N2YzMDdkNmVjNDcxZjk5YjAzY2M3YjVlODE0MGRjMDQ1MGFmMzgzMgotMjQyYTM1MzUxNWI1YjM0Nzc3NGYzMmI4YjZjMDMzYWRjNDNiMmJmNzE4NTQ4MGU0N2M4NjgzMDhmMzkwNmJlZQotZTQ0MTMxYjExYjJiMTRlNzdmMzM2ODYzMDc4NDIzMzdjZDFmOTY5NTQ5MWJiYmRmMjcxYjUzNDVjNDRkNmE3NQotNThjNTlkNmQ1YmY4YjI0YWYzODI0ODM2ODY0NGUzMzFhODhjZjczZDBlYmE5ZGZhNmY4MGYxMWFmMDI5M2JiOAotNDBkOTc1NTU0MGFmZDE4ZmIwM2UwYjI2YjY0MzIyNzc0MzQxNjYxMjNkODAwNDQ4MDhmNmYxMTE1Y2E1NWI4NwotNjBmODI1MjBlYjgxMTY2ZjgzNjNiMTUwYmFjN2Y0NTk4M2QxZjRlYTBiNTAzZmE4ZDA0MTI2MWUyZmQxNGNhYQotYzdkYjhlNWIxYmRiMDRhNjVjYmI2NjA1MjZkOGIyMWVlZmY2ODEwNTQ4NjQ3NDgwM2FjYzk2ZTdiODgyYmM5ZgotNWExZDVmMWUzMzNiMmIyYWFjZjQyNzJhMDVhNDFhZWEwNGIyYzE4YTgyYjFjNjZhNDA3NTNhMzY5MGFlZjA4OQotYjlmZTgzZGQwZDg2ZmI3YjcwNDVmMDQxYjY5MDkyOGI3YjJiNjcxNjJhMWY1NTY0MTE3NjUyZmE3ODk5YTQ0NAotYmNjYzIzMTE4OWM2MGNlYjcyYWJiNDAzOGQ3ZDBhYjVhMDI3YmVhN2VlNzU1NDI0MTZiMTJhMTZlZTAwOTAwYwotZGI5NGIyYzg5YjIzNDVkMjA5Y2Q2ODMwN2UxMDFjZDA2ZGJiNzllNzZjNzI1ZGM3MTgwYmVjY2EwZWFiOWY4YwotYWUxNzE0YzU3YmVlN2U3ZjU0Yzg0ZTdhMmFiOWEyYjFkZGQ0ZDE2MGNiNDgyNWI2OWMxYmY1ZWUyNmIxODM5MQotYWNkNmZhYjNmODkwZDhjYmZmNWJhMzY2NmI4ZDc4NTM2NTJkYTJiZDVkYjc5YWQ4ZGUzNThlNTVhNWUwMjI3MAotZTFhMmQwOWFkZmVkNzUwODhhNzE1OTNmZjBmNTRkNWM1Mjc1MThjYzc2NzU4NGU0MzgwYjhmY2U1OGIwNGNhMgotMDVhNjllZTI4MGRhNjU1MTY5MDI5YTE2YTNkZjNiODZmYzRhYjYzNTMwMDM5Nzc2N2M3ZDllYzNiM2ZiZDYwYQotYmJmNTFhZDRhM2NiMzQ4NTM5ZmI5YjdlYjA3MmVjZTlhZmIyYjNjMDBlMmI5MWJiNDBhODJkMmRkZmE1OGU5ZAotZjQwNjk5MDM4YzlhN2JmOTMwYTgzOTk2YWZlOTU4MGM1MzM4NDA1MTA4YWMwNGZkNzEzYmIyMmNhMjAyNDQ3NQotZjU0MGZlMTQyOTBhYjE4MThkOWJiMTk0ODNhYmEyZjM5YTk1OGVhNDE3ZWM3Mzc5MjIzM2FiNTM4Y2I3MGUwYQotNDU1YzZiN2UwYmM4NmVhYjFkZjczZWVjMWUxNmE2Zjk1Y2QyM2I4ZjY5NWZkMmI5MTlkZDI4MmJkMTEyOWJhYQotOTNmYjY4MDgwZDkwYzI5Nzc2YmYyN2ZhNDJkYzA3MjFlMzgwZWNmODgyODY0ODQ0MTc2NjRlNDFjNWIyNTdjYQotYmQ0ODM1YzFkNjQzMTg1MDdkZTVkYzJmMTA2MDY0NGIyYjEyNWYxN2FmZjFiOTVhMzdiOWI2Njc5MDZkNDhjMAotOWZhN2Q4NzVkNTljYjZmN2ZlZjJlMzdlYzQxODU0MGY4ZjEzYzJkNzBjYmU5NTY2Mjk5ZGZiODBjMDZkZjk5ZQotYjA0NWRkM2JhZWZkODdiMjQzMTY3MDBmYTFjOWY3MjE1N2I5MjcwNTJjZGEzZmQyYjQ4MGRmNzUwMjk4ZDY0NQotN2M0MTJjYTM5ZjYzMjVkNjZjNzdiZTM4YmQ4ZTQ5MWQ4ZjcxMGM1ZjkxZjQzMmUxM2Y4OTA1Njk0MDAyOTUzMgotZGIwNjUzMjk3ODI1NzliNzlkOWY2YmE2MDU1MmRiZDZhMzAyZTYyOGY3NWUwZDM1ODJkMjVlYjAzZTdkZWIzMwotNTQ3OTBiMDI1MjE1NTNlYjBjMjg2Y2I0MTVjZGUyMjViNWQ2NWNiNzlkYjA2MGQxM2FmZTg2MmQ1ODg1YjU2NwotMjQzMDQ4MTYyMDQ3NWY1MDU0NmFjNzgyMzcwZTNlYTFjOTU2MDBhNTI0ZDI4OGI1ZDQwMjhiZTdjZmJlYTg1NQotNTI4OTUzZTYwNzcyMWI3NDg4ZjdkN2Y5ZGQ1YWQxNDMzMmIzMmJiZWY3MjI0MDAzNmEzZTE2NDZmZTU0MThhNwotMWZkMjA2YWQzZmM3NWI3ZGNkOTgxM2NhZjVkMjlkZGJiMTJkN2ZmOTRlMzdiY2NkNzJiYTEwODZkYzQzMWI1YgotNzEzZWQxNGFiN2U5ZjFiZmY3ZGRkZmE5YmYyMjYyNGU0Y2FmM2NjMGQ0MTk0ZjBiNmEzNmIxYzY3ZTQzZjExNwotNGJiMjMwNTRlZDAxMjA5ZDI4YmM1NTIyNDAyODY0OGE0YTMwNzNkNTY4MzVhZmE5ZTAwNGZiOTk5MzcyZjI5YQotZDc2ZGI2NjNjMmEyOWI1NjM4NTY3MDU4OTA0YTQ5MzNiZTg4ZTc1Y2ExZjM2NTczOWE2NWMyN2JkYzE5NWU3ZQotMDljZmIyNDI2ZmE4MjljYTM4NTkzMDZiNTU2ZDFiZmFkYjVkOTQ5M2M2NmUzNGRkN2Y2MzU4M2U0NTMyYTA3NQotNTMyY2VlMmQ4OTc2Zjc4NWQ3OTA5MDkzNzg3ZThhYTVmYzc5MTJjYThmYTg5ZDM0NjYzNGVmNzFmOThjOWZhMwotY2RmZDkzMWNjYzY5OWNhYTMxNGM0MDJlYmNkNmJiY2ZjZDNlZjdlZGUxOWU2YzhiNWVhOWJiZTczYWUzNWI3MgotZTIxNDk3NGIyYmJiMjZhMTE1NzUwMzI3ZDIwNzMyYjZmNjc5NWMyNWU0YzBiMWE2M2I1MDU0MzgzZDQyOGQyYgotODVhYzFmNzE5Y2UzNWExOGRlNmY0NzUzY2I2MTVhZWM2MjEyYTI3MmQ4OWIzNzUwODYzNTM2ZmNmNWY3OTFkYgotM2I3YjM5YTY2ZWJiZTlmYjE4NzZiYjA4OWVjMmNiYTA5MmQyOTFhYWM4OGYwOWM3MjBhYWM0ZGQ4ZmRjMjJkNgotNDM2N2M0YzUzMzBkNGUwZWQ3ZDQ1NDcyOGFmMmI0ODAxNjE4ZWRhZGE0ZmEzZTUzNTdmYjkxNDU4ZGMxMzI4OAotNzY1MDQwMWJiY2ExNmQ3M2JlYThjZDUxMjc3OTdmOTJjOGI1MzE0NjYzZTAyY2VmYWJkMWVkZDg5ZTQ0ODZiYQotNGQzNzExMzhlYTZhMDdjZTM1OGQzMWJjOWVjYWU2NGY0MDk1NDZlOTEwMWZmZjdlYzcxMGI0NWY5MTA1MTBhYQotYjUxZWIyMzc0OTkyMDA5YTI4MjYyYTM3MGQ0MjEwOWEwYWE1ZWJiYzE2ZDJlYzVkNThlMGE1ZTdlNmY4MGEwMgotNWNmOGE1ODFmM2JiZjk4NzUyZWRmNjRmZWJhNTg1ZmJlYjU2YjI3YTc5Mzg0YTIyYzg2ODY5M2MwNTA4NDQyMwotZjdjZDM5NmNiNDhlNjhmNzZiYWI2NTEyZjc2ZGEyNzcyZjNkMTM3ODgxZWJhZjFkM2NhNmUxYzk4ZDU0NzMyYQotZmMyNGJmZTI5ZWZjZDcwM2M0ODlkZDhkY2M2OWRhNGI4NmI1NjUwNzg4YmZlYWI4YmY2NmM1YzFkZjc2OTdhZgotYWIzM2QwYzE0Y2FmMTZiOTgxMGVhNzRjMzJjY2I1YmJhYzI2MTNjNmEzZDk0NjQzNmNjZjkzNGEyMGI4MWNmZQotNWU3MTI3NjVkMTk4M2JkNzdjYzQ1NjEyYTMxYzg5M2E1NTgzMjM4Yzk0NGY5MWYyZDZkMTA2OTM4NjYyMTEwOAotMTA4YjBlNjViNGY2ZDc2YmZkMGUxMTU4MDA1ZThiYTUzYWI0OGU4NjVlOWY2ZDA3ODM1ZDRlOWUxMjRiMDFiNgotNDFiYWFhNmNmZjQxM2U3ZWY4ZWVkNzNmMWNjY2FlZjU1YTg3ZDcxYWZiMzA5YmExNjJkM2UxNWRkYTZmMDRkYQotMmRlOGRiNTgzYmVhYmFjMWU1NjgwZGY0M2JjMDYzMDk1ZGUwNDNiMmFkNGM4NjAwZWY2M2E4MDkwYjY0Nzg1ZQotNTI4ODg5MmI2M2E4N2Q4YzgwNWQxMDAwYjY1MjQxMDlhNDFlMDVlNTE3ZTA3ZjBhNzY0NjYxMjU2NTBiM2Q5NwotMDA4MDU3ZGUzZDMzODBiMGMzNTJlNzBhYzA0ZmNjMjExMDhlNjE5YTcwN2ZiZjdmNTk4NjljYzlhMmQ1NzFjOQotZjc3MTE0MjUwYzFjNDFkY2Q1MjczMjNlZGIyZmI4ODNkYWJmMzcxZGNjZjQyMzg5YTI2MGZiZjUzNDY0YmQyNAotZDVhZTViZTQ4MTYzZjE0MjczM2IyMDVlMTEwZDc3ZGU1Y2MwNzExN2Q3ZDZkMzQ3Y2M4YjAzNWZhMzg3YjI0OQotZmRlM2JlZWVhYzg0M2M4OWJiYjg3MTExNGY1MzEzNDM3YTc4NGMwNTFlMDIxZGE0ZjgwYWRiMmQ1ZTM5MmYwZQotNDYwNjhkZjY3ZjQ2YWZlY2EwNTIzNzhkOTc1OTdmMjFjMzlkYjZhMmNhN2MxMGM1NzQyMTQ5OWRhOGQ1YmRlYwotMTI4MTA5NDMyZjg2YTBjZTYzY2EyYmU3ZmQ2NGUyOWU4MzkyYmRkMDAxM2Q0OTkwODg0ZjdjZjQ5ZTdiODhhZAotODQ2YWYzOWEzYWExZWMzYzg1ZjIxZGIwNzk1MmQxYjQ1Y2ZjMjBkNjg0ODUzNmI2M2QyNTcyZjQ0ZmY3MThhZAotYzJjZmFjYWYzOTVjYzY0YjM0MjkwYmYxOWExOWQ3NTZiMzgxNDJjNmE3NDcxYWI0MzZjNmI4MWFiZWQ4NmZiZgotODU1M2RkOGQ1YTA1MmY0ZDUzZDYxMjRlYTRkZGYyMzVmNGE3OTJmOGFhNDg1ZmIwNjhkMzljNjgyZWRhMzdjMwotMmZjYzU4ZGE1MWY3NGMyNGJhYzhkYjVjZjgyNTQwN2Y4OGRhYmE3OGY0MWQ4YmEwNzhmY2ViMDIzNmMyZGVmZgotZTYxY2MwYWJiZGJlYzNiZmEwOTliNDljZDEyMThkYmZmODVjYzcwNTczMGVhNTQ1Y2RmZjQ0MjFlZTVhNTM1NQotOWNjZWEyY2Y2MjU3Yjc1N2U0YzZiODUzYTQ3NmYwYzk3ZWNlODBhNDFmZWU0OTk0YjA1ZWVjNTc1Zjg3YmJhNgotOTA2NmVjZWIyOGFjOTJlMWY0NDgzZjg3NDRlZGUwNmEwNWVhMDM4NTY1MDk2NDU4Nzg1NDUzYjI0NjJkMTAzZgotMzAwYWZmMzc4M2Y3YTJlZTFhMjdjYjIyM2U3MTQ1YjZiNzRmYjVhOTVhNTQ0NWI1ODAwZDBiN2U0NDUxYmU4MwotOGE3Njc5ZTNhMjljOWJkNzliZTBjZTkwMGY4Y2VkZTRmNWZiZmNmNDZiNjM1NDI2ODA4N2JiMDIwOTE0ZjI0NgotZmUwNmQxOGNjN2U5Y2IxMDAzYmM5NmZiNTk2MTA0M2Q5MTljOTI5OGU2MWRjNWM3Y2IzOTg4NmU2NTkzOWZjOQotMDM3ZTA0ODRiNjJkMWVlMzU4NDJiM2RkYjg3OWE3ZmUxNzVmMDc0NTFjNDQ1NjM2MWJiNjQ2ZTVkZDg3YWQ2ZAotZGVkODM4OGZhNzg4MDZmOGM5OTNiZjE2ZjUzOWE0NTI2NTAzZDhiYWY4M2QxZjBhNTk0ZGI3ZmIxYTExZTdkYQotZDJmOWRiOThjNWQ4MjA2ZWE0YTQ0ZWQxMzRkNzg0YjA1YWMwY2EyNDViMmE1YWRiZDkzZWZhNGE1NjZlOTNjNAotODRmYWM3ZWYwYWQ0NjI1NDEwMWIzMDhkYzRlMzljNTQ5OTQyYWY4NWM5NmE1ZGQzMWU1ZDlhOTkxNDlmNDlmZgotOTljZmM1NzgzZDJjZjljMzIwNjQwYTUwMjliYmQ2MWM4NmQ0YTZhZTlmZWU2OTBjNWFjNWU5MmQ2YjA3YWVhMAotMzFjNjExMGRmNDFlNjNiZDcwMzlkNmJhOGVhOWVmMzNiZWIzY2RiNDE1ZjQ0OTcyNDU2MDY5NjNkYTYwMTk0YQotODM4MzY2M2JhM2YzYmUyZDZlMGI0ODY1ZGRkZGI0ODRmNjI1YmViNTdlYWRmYzY5NDEyNWVlMzU0ODBlZmFkZAotNzAyNDgwMzdiZjQwMTg3ZjU0Y2I1M2E1MWZkMGE5MTZkMGIxYTU0MzExZjQzY2IzOTg1NmI1ZTRlMTdkZGYwZQotNTQ0NjZhZDM0Y2RiZWQ4ZmVlMTdjODdmMDBiZmU0ODMyZWVhMmFjYWY5ZTkzYWE1MDkxYjYyZmViZmJhOWIwMQotNTk2MDYxOGQ3MTM1YWQ1NDZjZjRkMDBjOGM3MjVjNmRhNjk3NDA2ODkxYjc1MzYxYzgxY2ZjMmQxM2EwMzgzNgotOGYyYmMwNDU0OTVhMWQyNDYyODYwNjk5MGYzNTFiNmY2ZjE5N2VjN2I1MjE2OTQ5NWJjMDA0NzMzNWM0YTNkNgotMWE3YWFhNjNmYmExYWNhNzMwYmExZmE5MGNhMDRhMGZhYjI3YjE0NWIyZGQwYjRjMDNmMDFjNzliYjc3NzU4YgotZmE2MzBkMDJhNTIwMGM0ODQ5OTk2NGZkYWM3MDVkMWY2YjBhYWRkYzU4YjQ3YTM1MDc3ZjVlZTJmYmNhYjk1NwotOTE5ZTViZjYxNGExNDY4MjA3NTkyYmZjMzZiZGQ2MmVhOTM4OTE0MjM1MGQwODM1MjQzZjQ4NWM5OWE0OWVlMAotYjZmY2UzM2U5ZjFjYTU4NmY3MDRkMjdjNTk2MjEyMDZhYmU3MGFjMzE2MDhjYTY3YTUxMmRkNjBmMDc1MTBjYwotZTBhYjc3MTVmM2E2NjJmODI0YTAxMWVjNDdlNjBmODQ2NjRlNDc0YTI1NTcxMmFhZDBiYmIxYzdjMTQ4OGE0OQotMGE3NTQ0N2U5ZmVhYmE0NTFmY2QxMTA2ZDdkYTUzNWFkODI3NTc0OTQ2MjBhMTk1YjJmMGIxNjIyYzYyMzUxZAotODliNjJmNGY5YmI4MTJmZWQyNTY5NTI5MjhkODY0MTQ3MTc2ZmYwZTAzYmRkMmJhNzU5NzdjYmQwYjVlYzM3MQotNDQ3OGM0N2Q5NzYwMTI4MDU2NmQ5MzcyNDNhMGM4YjBiMzM0NTA3NzM4OTdlZDU1MzViZWE2ZDdlYWZkNTQxMwotNWM0YTQ5NzZlZTAxNTNmNGViOTEzYWVkOGExNDk3Yjc0M2U1ZTFhY2U2MjU5MzZiM2RhNzQxMTliNDliYjUzNgotMWE2ZmVmYzBlYjk1OTM5NGJkNzQ1Y2VhOTE5YjFlNjJjOGNhYzc3NzU0YzU5YjcyNWEyNmM2MDZhN2M1YjNjMQotNDVmYTNlMjRlNWZkOTZlMjMwNDk3YTAxNzhmMjFjZGQ1M2M3MzNhNmJmMjk2MDU4NzlmNjFjZDRiN2FkMTExNwotMTQxMmIwM2VmNDJlNGY4MjYxZGYxNTQ0MTM4OTU4YjNlOTZhYzQ1ZTNhNDVjMWJiZDBhNmQzZjFmYzRkZjA1NwotZDAwMTNiZDNkZWE4NjE0NTNlNTRlYjQ3MjExMjRlZTI3N2ZhMGVlZDFiZGI2Y2EzN2UzMGRmZjA0ZTkxYjg4ZgotMzA4ZWRkNDNjYjdkZDdlOTcyMmU1N2RjYzdmMzYzMzIwOTUwNTQwOWExZjk4YTEzMzg3NDg5NWUwMGIzMmMwMQotODViYWVmZGIwYjRlOTdmNzU0ODhlYTBmNzY0MjRkOTE5NmEyNDM3ZmM5ZjY3ZmUyOTMzZmYzNDIzMjc2OGVhYwotNzIyYTg0YTdmYzUyZmRmM2FkMjQ4YzY5ZmQ3ZDRjNDVmYzMzZmZjNmEwNGI1NjJjZTM2N2Q5NmIwM2MwZmY4ZAotNzUxNzRkYmRjMDliZGIzNWE5ZjQ4NDBhNmFkYzU1NWY0MmQyMGJmNWUyZDNkYTM0YTk5MWY2MzY0OGViZTg2ZgotM2UxNTU1MTRhZmI4MmMxYjNlMzdmY2RjZjhjNTk0YWNmNjVmZGZjZjU5NjVmNDJjYjM1NTQzZmZiMWExZTQwZgotNjIyZTZlZDIwYjQ5NzlhMzc4MzVjZjA4ZTQwYjhiY2IwMTVkYjhlYjFhMDQ0ZGNlZDhmNmJmNjM2MGQwZmEyMAotZTY1NmQ5MGVmYmY0NjFkYTQ1MTg1MmY1ODQzOWRiOTI4MWY2MGVkZjVkZTRhZjAxNmY4NzE1ZWVlODNlYjY2NgotZDQ4Nzg0ZDM5NzY0ZTMzMDA4ZTVkOTE5NWVmNjI0MzlmM2FmMWI5ODliZDk1MmZlMGEwZDMwYTg1NzA4YmIxYgotYTM1M2VmZDY1OTRhM2NhMjAxMTE1YjM2NTlkYzFhODA2MTlmMTU1YzY2NDlmOTQ0ZGZhM2U1NDM5NzFmOGRkMgotYjBhMzBhZmU3NzY1OGFiODJlNjMwYmNkNGZjYzMzYWY4ODEwZGExMzYwNzMwMDU1MjU1YWFjYzc3ZmJlMDlkZAotOWIxM2Q0NGE0MWUwYTFkMzc4OWQ5NGJkNzg0OTRhMzNhZTYwYjlhZDcyOTBlNGQxZWQ2OTI0ODIwMTQwZTJhOAotYWU1MTM3ZmU3YzI1NzBhZjEyNDI2M2I5OWQxMWVjZTQ1Y2Y4MGE2ZTExZjU2ZGM2ZDc3ZTUwZmFiNTA2MDhmYQotMDllYjE1MjBmMjJlYzE2NTcxZTkyYTE5M2YxNjk5ZjgxZTM1MmJjZDllMGM4MzhhOGMxZDViZmU4MGQ3Njk1NwotNzEyOWM5YzQ2ZmRhNzIzNWRjYzM0ZjYwNDE3MWE3NWYwNjlmOWUwMGFkZjU2ZTg0YWIxZjc0ZjA5M2JiNjk5NQotNzQzZjllMDI3ZmM0ZDllNmJjZDY0N2IyZWM3ZjBkN2FmMmUyZWZkMmRiYmI2OGM4M2NlYjFjNzYwZmE3MWVkNQotMDM5NGQzODk2M2ZkY2JmMzg5MTkzNGE0Y2JkYWI4MDEwNzc3OGE2M2YxMTAxMDE3YmVjZDIzM2JhMGMyZTYwMgotZTkwNzVjNWU1MDlmMmFjZTdiN2Q1YzM0NmRmYjU4ZDBiYTNlMDA1ZTM4ZWE3NDI4ZGZkMDEwMGI3ZTFmZGRiMgotN2ZlOGNjYTk2YjA0ZjliMzQ5NjkzYWNiYTkwNGQ0NGUxNDNlMDNlODJkMTYxNThiZWIzNmRmYTIxZjU3YTAzOQotZDZiYjliZGQxYTc4N2ZiOWRmOTY4MDA0Mzg4Zjg2NTVlOWQ4YjZmNDM1MTE3ODM2YmM5MTA2OTdhYTE3MzdkMAotNTVjNzNmY2YyM2Y4YjU2YjU4YjA5MTk1YjdjYmZmNTc0YTI0MThiMWFiOWY3NGRjNjA3MDY2ZmNiNzk4Yjg4MAotNWZiMGQ3NjFjZDVjY2E1MWY5ZmYwZDJlNjdjYWJkYjAyNmYyYTliMjkyZmE0NzJiOTdhYjg5YWY2MGNiYTk3NAotNzFmZGVmMTQxN2IxNGU2ZmY1NDQwODY3YWNlZDJmZjk4MzdjMWNkMWUxYWVhMjNiYzNjZjM0NDRlMzVmN2NiNQotOTdjMmY4ZDU1NzZmZmVhYTgzZTA2YTllNjM4M2U5MjI1ZmZlMGRiNGIxNTc1ZTFmODdmMjhiMzczNzE2YjY2OAotNGYzZTllNjk0ZDZkNTY0OTVkMjE2NzNkMTY1Y2ZhZTVjNmNhMTEyZDE2YTQwMjQ3MjE2ZGE0ZGViYWJiN2U4ZAotMzRmY2I4NTg3MDdkODJjYjg4NjhkY2Q4ZTk1NmQxZGRmOGJiZjZjZDU3YzI5M2Y4ZTM0MjdmMTRjOTllOTEwZAotYTdiZWYyNmMwOWUzMWNhNjY1NTA0OTY1NzRjMGM4ZjcwZTdlZmM5Zjc0YmI0NWZiMWZmMTNiMzFkODk4MmI0NAotMDM4YzEyMThiODc0YWM5NWFiOTA3ZDAxYmNhNzhmMDBmZGVjNTM3NzMwNjRiZTQ1M2E4MmVmYTNjZTMzNmM0NgotNjkzNDVlMTcyNzYzNDEzZjAyMWQ3NTU3MGRkYjBhMTZjODA2ZTQ0NGQ4Yjk4OTVhZjk5N2VlNzQyNWQyYWUyOQotMWQ1N2Q5YWE5MWE1ZDllOTkyYTcyNzUzODFhYzMzMmEyMzk2OTAwZTRkODIxZjY5YTM0OWQ0OGE1MTk3Zjk4ZgotMzUzNGFiMmE0NzkyNmVkYWNmYzUyODFjMDllYThkZGZmN2NjYmRlYzViOTU4NTdjOWIyZDgyODI5Mzc2YmVjOQotNzlhNmVkNTNjNDJmNmJlMGM4MGE5ZmU2YjkwYzA2NjI0YTI5YWRjMGUyNjgyNDFlMTQ1YjE4ZGVhNjA5Y2Y4ZQotZTc5NzIwZDAzMTY5MWY1OTEyYzdiNGMxZmQ0MzU4YTZlZDA3YWJlMjM5NzNmNWIyOTZlYTNlMzZkODA4MWQ2NAotNTA4MzVlODRmZTk1YTU2NzY0MTE3Nzg1YmFmOGIwOGFjNDBkY2Y3NDUzZjRjNjcxMDA0NDVlYTZhNzdhYjc1NQotZTNiNDg4MmRkMGE5ZDc0MzMyZjcyMzIyZDM2YWI5ZGJmMjE5OTAyOGViNmM2ZDBmNDNlNzkwNjVlMGZhNDdhNwotNjhiZmU4NjA5ZmU2YWQ4MmU3YTFmYWRiZTgyN2Q4NmFiNmYzZGI4ZDA2NTBjMzFlODBjN2I1YWUyNGM3MDNkYQotMTA0ZWJiNGNiZjBkNjNiMDI0OGFjMWM0N2E4ZWYxNGEwOTVkOTAyYmIzOTBjNDg3NjBiYTdkYTZmZTU2ZmI0NAotZGYwMmVlMTY2YjUyMmE1NTBlZmFiMjAwNmU4MTRmNDA1M2QwZjIxZjNlZTc5MGNhNmQxN2U4ZWE1YWUzMTA4MwotNTg4OWMyY2E2YjNmY2QyNjcxMzFkMzNmM2Y3MWJiYWE1ZDQxNDQ3OWZkNmM5ZTg0YWU0ODFkZWZhNGVhY2Y5OQotOTNhNmZlNGZmNTdmNWUwOWZiOTliOGZjZTcxYjk1ODA4MDk3MWU2MWJmMGNjYmRkMmE4NjQ0ODc4MmFhOTg3MQotMGNiNjg2MDEzNTQ4ZmIzZjY5MTQzNjUwMTU0NWQyZGRiNDZhMzQyNGI2NDM1OTBkYTliMzA2OWQ3NmVlZmVkYQotOTQ2YjZhZTRhNTMxZjdkOGIzYmY5OGFiMzVkMzdjYTViMzY3Mjk1NDhjMDZkMjMwYjU5N2FiMmNmZDEyZGQwMQotN2ZkMjM5ODgzMGRiNGI0ZjJkZDI5OGU5NDU2NTlhNTY0NDcwYjIyNjU2ZTI4YTJkZWZiNjM3MTRiNWRjZWMxYQotNWNjYTRmOWYzYTA3MDc3Yzg3YzA2YmNjMTQ1ZWRlYTg0MjRkOWY0NGVmOGU3M2ZhOThmZDIxNmNmM2ZkODQwOAotNTJlYzU5ODhhNzc0OWYwZDY5MjNmNmMwZWY1MGU5YjJhN2E2MWMwMDYzMTZiNDljNTFhMDEyNzAwNDU2NmQ4MQotMDY2ZTdmMWVkMDJmNWY1NzBjZWYwN2RmMDcwZWU5OGQ4MzZhZDYwNDhmYTc3Yzg4ODhkYWRlYTY0YjcyZDRlZgotMTQwNDYzNGI1OWNiNTkwZTUxMTNkMzg0ZTQzZGRjZWE0NTlkZWM2MGMzZjFjYmVjMTBlMzMxMDBiYzdlYjhiYwotN2UzMzkxNzcxMDVhZDZhNDc4ZWQ5ZTA5NjQ3NzYwMTM0N2U5N2MzOTE2YTM5ODE5MjBiMTZiZjRkNjRkOGZiOAotNjk0MzQxZGI0OTliOWNhM2NmMzRlMTQwZDdkYjRkNmM1YzI5MWYxMDBjMmQ0MTk3NTJlODliYTdmYWMzZThmNwotNWI0YTYzNjE2MTk3YmNhY2FlM2UwMTcwYjc0Njc2NzBmNjdhY2QxYWNhYjJlMDUwMmYwMmY0MTZiODUxYTVjZgotNmY4M2MzY2Q5OTkyZGM5MjViMzg4Y2Y3NWI0MjNlZGYxZDVkMjM0YTM0MWFkZjEyY2ZmODhiZWMxZGE5NWFkNQotZGNmZjkyYjNjY2E3NDE4Y2M4NmFiMWYxOTY5ZWE4NTgyNGQyNDNiYzVjZjRmYWZkOGY0MjY1NTZkZDkwMTdlZQotMDI0MjA0NmY5MDlhY2FlZDNmZjJhOTE1NjQzMDNkMTNjOGRmMjBmZjUyZTI1ZTYwY2I3MTY4OTAyZGFhYzY3OQotYjc5NGVmNThlMGVjOWE1YjVhOTdhMTE0M2IwOTE1N2M5N2Y5OTQ2ZDk4MDc3ZGUyOGU4OTA4Yjg0ZjczYTAxOAotZTBjM2JjNmY0YTZlZTA4OGVkZGU2ZjFlMGY1Njg3OTlkODY3NjVkODQzOTY1MzgxNDY3YTk5YzhiOTE2MzJlNQotZWVkNTNmZGViODY3M2JkNmM5YjM3NTc3NzNmZWJiZjg2ZWU0MjhkNGIzODY5ODVlODEwZGI4MTI0ZjViZjk3NAotZGY5OWFmYWQ2MzJmMDNlMzM4NjQyYzkzMTI3ODdhYzQ3YTlkMmY0YTEwZmM1Mzk5YjZhZTkwMjlhMDMzNmQ4OQotMmFhYmIwOTBlNTgxYjc0OTQ3M2ZmMjA4MTUyNzc4ODFmOTg1MTQ2YTAyOGY2ZGZiMGFjZDE5OTU0YTBiZGJiOAotYjRlZDFhNjVkM2I5ODY2ZGFjMjljNmFhOGFlZDM5ZDk1NjQzM2JhNjQ5ZjI4M2FhZWE4NDhmNmNmOGY5NjI2OAotY2M2Njk2MTM5ODFlNDcwNWQ5MjIwOTcwNjA4ZTY3MDI4ZGU3OWQwYjM2NjhiNGEzZGI3MGY2MWM5ZmMwMTA3OAotMzdlYzUxZWFiNzBkOTJhMDE3ZDk2Y2Q4ODkzZWNjYmUyMzA4MWRhZmVhZjgxY2EyYzlkNDVkMzhjZjU1NGM4NAotOTlhNmI0NzllYmZiZDk2YmU4ZjdmNDU5OWIxMGRkNDViNGFjODYwZWE2YWE0MTBmMTYxZGYyYjMzYzA4NTg2ZAotODcyMThhNzkwNTA5ODAwMTY0YjQxZTNjZDBhN2QzMGQ5NTg0ODEzYzQyZmUzOTM1ZWU1NmM2ZjIyY2RlOWZkNAotMDU2MTVhYjJhYmFjOWRmY2FjNTUwMTQwYzQ1NDBkNmRmZjllZDY3ZjUzMDU3MDc0NGQwYmUzZTU2MDQxZTFkOAotY2ViNWE2OTI1YjNiYzUyYzIwNmY2ZGQ4N2YyYzRkZTcwZWMxOTQ4N2QyZGRhZjIwZWY2YjI2ZmNkNjA2MzFiYQotYjE2NzdkMGFiNjk1ZGQ2OGIyYTNiMjdhNzBiMGI0OGZjYzg3Mjk5MWJkMGI5Njg4YTk2NmU3MjIzOWI1OGQzYgotMmU1ODg2MmViNGRiMzkwZTE2OTEwMGU1MzljMjM4Mjk5NDQ5YmRhMzU2YTA5NjhjODY2YmEwZTBiZjNiODhmNwotNmNmZDM5ZmUxMGFlMzBlYjZjYTcxNDliNDFlNDEyY2Y1NTY5NjliNGM4MTZhMTk0NWMwODc4ZTJhNzllN2VjZQotN2U1Mjc1NGM4ZGZhNzU1ZDc5ZmIxNWU1NTc2YTg4NDYzMDc1Mjc0NjBiNmQ5MTgyMTU0ZTIzYjg0ZWE5ZDQ0MwotN2ZjYmI0NzBlOTgzM2QyZjNmOTBhYTg4ZDBlNDRiMTc1YTkzNThhZDBkODQ2YWU2NzQ0YzRiNjlhNWUyNDY5MgotZWIzN2I1Yjk2Nzg3MjliZTg4Y2I5Zjg0ZDI3NzNiYTk5YjI5YWQyMDU2NDIwMzI4MTE2ODQwY2NiNDc1YWI3NgotMjdiYzdlZmQyZGJlNmRjZGY1OTZlOTRjMDlhYTk1OWYyZDQzZDQ4YTgwY2UyZmFhN2MzMGJlMzI0ZDE4YjhmOAotNzBmNzdiZTcyMTk5ZTkzMWQ1ZDVmM2FjZjQ4ZmY4MDYwZTE2OGI0OGQwNjZiMjM1NGZlYTU4NzEzYzFhNTM2NwotMzMwYzk0OTFmZGI2ZmU5NjU0YThmZDY2ODAzZmRiMTk5MGJjZjViZjJkODY2NTk4MGQxNjJmMWJlMTc2NjNmNgotODU3NTYzMzcxYjEwNTYxNDRjZjU0YWQzMGYxZmFlNTcwN2Y3YmJlODdmYWU0MWQyYzY4M2U4YTAyOTMxZGUyNAotMjllNjZmMzUxODhmZjM1OTRmMzdmN2VjNTAyMWU4Y2NmMDAyNDhiZTQ1OWY4MGVmOWE0NmQwMzQ0ZTE1Mzc4OQotNjk3MjkxOTQ3MzFhNDkxMzVhZTc3MWFhYzY2M2MwMDM3ZGI2NzIwMGM5Njc3YmYxZjM5YWJiYmM1NDgwMjc0MQotMjNkMzZhMzVmMTI4YzFjMzVkZmFjMWEyOWE5YzFhNDg4ZjZkN2RmMjM5MzM0ODhjODU4NjY3YmZlMjQ5NDhkYgotODZiZDAwODdmOTRiMGM2MzI1YTQwM2RlNGE0MzRiZjc2N2MxMzdmMjQ4Yzg1MjU3YTcyZTM5YjUxMzUxZDQwMQotOGI1MzA5MTNlYThiZThiZmJlYjAzOTIzM2JjMzQzMmRiMGI2MWFhMjgxYTBjZTJmMDFiMDM5OWIwNjZmZGU3ZQotYWJjYWZkZDQ2YzRkNmJjZjI5MjRkZTJlZDM5NzJjMDFhZTAyMTNkYzE1NTM5Mjg4OTVjMmI1NDFiMWIyNTRlNwotYTFhZTQ2MDY5YTExMGM1NWRlMTJmNjYzNTg4MTVjZmIwN2NmMGRlNTk4NjViZTg1ZjFhOGYyYjYxZDBlYmFlMgotN2QzNDFiZGMzN2VhYjM0MmFmMTQ4YTA1ZDBmYTQxNWI4NmNkYTcwNjc0NmM3NWUwZmI3MWE2MTBlNDU1YTY0YQotZDg1MTU3MDVlYzhkMjY1ZjNlNGVkOWMwMjAzNzQ0Yzg2YTFmZTU1ZmY1MmI2YzhmNGJhNzFlMGEyNjY1MWNkNQotZmMzOGQ5M2IyMzcwYjFlMzhjMjkzNDNjOTZkZDliM2Q0YTM5Yjc4ZjdiYzdmMmVlZDczNWY0NmJiNDZmOTZiMQotYmVjYmNhYTdjZDk5ZWYyM2QxNmJjYjNmMzhhNjA1ZGJiOTA4YjI4YjEwMzlkMmVhMWZjNWQ3YWZjMTFmMWFhMwotNzk4YjQwN2VjMjM2NDIxY2NjYTE4ZmMxZjI3YTEyZDdlMGIyNTMwMzk4MjcxMDQ0NjFjNTFjY2IyMjgzYzllMgotNmZjYjgxOWI2NTZhMWFhZjFiMjk4MjFiY2VjYzUwYjkxMWQxYTA1MzMwYzQzYTBjNjAyNWVjOTBkYzEzNDA0MgotNzdhZDk0MjRjMmQyZTY0MmExMjIzZGM3NGZmMTZmNzBiNTRjMGZmNTc4MTU3ZjBjNzAxMjc5ZmFjYWViMjU2MwotY2IzODU1ODcyZDM5MzNjMGE3YmU3YjYzM2U3ZTNlZjA1M2UxMjEzZTRjZDdlMWM1NzgwNGVjY2Q4MDI2ZTU4MQotYmViNGMyZmM1OWNhY2I0YzFlNzY5NmQxNjUzMTZkN2YzMzkxZWRlNDQzODczYzdhYzQ4Mjc3ZTQ3ZWViYzY0ZQotMzAyM2QwNmZmY2NiMDVhMWE3MWI2NGI3ZGE0Y2UxYjYyNTZjNDk3MGIxNzljOTFlMWI1ZDZhZGU4MWMxNTFkNAotZGMzY2NjZmYxZDZlYmQxMTgyODVkNTZmZjc2MzFmMmM3ZTJiODljZDcwYjJlZjdhMzg5NDM2NmZkMTc3YzA2YQotMzllMzk3MTc0N2Y2NzE4OThhMDEwOTAwOGUzMTkwYjBhZWY5MDk1OTdmZmU5MWQ3YzdjMjA2OWI1NjgwMjk4ZQotZWVlN2MwNGU1OGNkMzI4YzFiYWZhYzJhOGJjYjYzZjZkOWE2YTU2ZjI5ZjM1NTFjZTFkMjUxMmI1ODg1ZDFiNwotODM5N2U0NjRiNWY4MWY0ODAzZWViZmMwY2M2MzJmYjY1M2Y1MmZjN2ViZTJmNjRhYjVjZTE2ZTg0MGJkMDU3NwotY2RmYTI0YTkyOGUyODg4ZWY2MTcxZTQzYWVkYWY4ODYxNjM0NGNkNjRiM2EyYzA4NzNkYmJmOGViMWZkYzA4YwotY2Q4NmYzMjQ3NzU2NzJiYzU1MDI0MWQxMzliZGVjYTllNmVlMzZkNDlmYmIxMTdlYjVlYjQ1NmQ5OTI1ODA2NwotOTRiYTI3Y2M1MDU4NWQyNTQ0YjJmMWYxNmMxOWJhNDFiMGNiMzA4YzRmNTAwMzlhODQzZTY2YjIwZTA0ZGIxZQotYjBlOTlmYWEzNTU2ZDhlOTVmNDUyNmYwYTEwNWQ0Yjc2MWRmNDE1MTQ4MDUxYzYwNDA3N2NlMjAyNTczMjE1MgotZTZkYjcyZDgxMGJiOGQ4MWM3MzNiYTc4YzBkZWI4Nzk5YWJhYTIwZDNkNzcxNTJiMmRkMTA5ZDcwZWZiMmJkZAotN2YxN2MxYjc5YmNlY2Y2YjMwY2YwZjg1MmFjNjExOTdlMGY2MDFkMjYwMjIwNWJjMzc3MDhmYjQzMDZhNzgyYgotMWYyYTM5YmIwMzU1NGExZDEwMTAwMjIxZjk5Y2NiNDViNTM4YmYyYTk0ZGRmOGM0ZTBiMTBjNjJmNGFmNzEyYwotYTQ0Mzg3YjAwMzhiZjI0NzRkYmQyMjQyYzczNWRiMGQ3OTI0NmQ3M2E0MzEzN2Q1MzVlZWU1MjU1MDJlZTQ0MAotOTAyMWFlMjQxNGU5ZjQ0Mzc0MGNkYWNkYWFiY2ZhYTAwODRhNjBhYzM0MzAzZGQ1NTkyNjllYjA4OGUyOTI1YwotNjMyYmRhYWU0NGRhZTBhZTU3ZjMwODBiZTQ0OGM1NmFhNTQ5YjYyMGQxNzI5YjZjYzI5NzRlNTcxYTU2OTdiMAotNGZmM2U2ZjY1NDJjNGZjYjJhYmM5MjYxZDk3ZDZlNmU2MDUzOGQ2OWIzNmM4MTg5NDkxYTk3OGE3ZDAwYjliNgotM2U2MmExZjUxZDYwMDJlMTJkMDYwNGQ1M2FmMDE4OGU1NjVjZWVjOGJhNTcyYmZkZTEyMjI0OWRhY2M5ZDlkNwotNzUwNDdjNjllZjA0ODVhZGY5ZjBkY2VjMGYwYzkyNmFiOTFiNTUxZWJkOWI4ZjRhYTAzODE3YzI1Y2E5MjM5NQotNTE4MzA0YmU5NGI1ZDU2YmJkYjgzM2NlZTkyYzMyYjc5MmM2YTMxZjM3NDQ4YjMxOTg4MGU0Y2FjMzVkMmVkZgotZGZmNTMwZDBmNzc3M2U1MTQ4ZDQxYWU1NmUwMjYzMzc4MWNiMmFiYjE1ZWMyZDk0YWU1MmQzYzhmY2ZkMzA5NwotNDVkOTVmNjdiNTYwMTY1ZjU3MzkzYTQyZmM3NDc0YjUyODRjN2NjMGI4OTNmODRmODczMzc2ODI2NGZmYThkZAotMGJlZDgzZDk5YzAzNWJkMWE4MzU5N2YwZDYxNDc5N2M1ODNlYzhjNWI5NmI5NzM5ZjMwNGVkZmUxZTAwYWI0MgotMzhmMzUzYTgyZTdjNzFkNzQ4NzdkODUxOWFkZDliOGM3OGY2MTExNzQ1OTk1MTJmMTFjMjJjMTBjYjM2MDMwNwotYjI2MmYxZjc4YzdmOWE4NWYxZmQyMWU5NGQ3MmFiZDQxMzY1MGVhNmE2OWIwNTdlMDIxYWRhOTc4N2QwNjE4NQotYzU3YzA5NDdmOWEyYTgxODIyMDU0ZTg1NWY4MDIxNjA2NDllMjVkZGM4Mjk2OWQ5NGMwNTJjMjg5ZjM1YmI1NwotYzc3ZGU1ZGZjNjM3MTZjNWIwYTg3YmM3ZWQ4NTk2NjNjNDU3ZjA4MDA4OWUzZDcyOWI5YmIxMjk5MDUwNzg4YQotNzlhZGExOWRiMjEwMTFiMDFhNDdiMjc4NjE1YmU1MzU5ZTcxZWNlYzdjMDZhNjdjNDk0M2U2MTA2ZTE1MjgyNAotY2NiMWZkMzljNDg1ZTkwZWZlYmIxYjIxOTJkOTNjOGJjNTJlMzU2ZTUxZTVmYzgwNWNkN2U0MzU0M2U5YzUwMAotZDBhYzg1YjcyMzAzNTBmOWY0MDMzNDBhMTZiYmRiYmMzYmRmMGY3YTU3MWFhZWM0ZDZmZGJlY2IyODhjMjEwZgotYjdjMjQ0ZjE5MDgzMDVhMGIxNjMyYTgxMjMwMDExNzVlMzYxMjRiNTQzZmY5MmMxNjU3NmQzNzNiOWJkZWNlNwotNjc4ODkxMjhmZmEzNDk3ZmY4NDZmOGJlZmFmNWRlM2I3YzMzOWYwNDlhZGM5MTE2YzlhN2JiOGJhZTQzNTc5OAotMDhkY2EyZDljMTUxZDkzMjljMzQ1OTE5OTMwZTg0MzcwNTQ1MDFiYmEzOGMyYmQ1MTAyYTIwZTQyOTEyMDNmNgotZWVjZTJmNzBiZmYzZGYwOGFlYjhkZGYxODA2ZTk2NTdlZTRhNWUzZmQ1YThmZDk3OWQ5MGQ0NTczNGYxNGY3MQotNWQzMzlhYzkxYjdmYTE4YTE3YmU4MTU4M2MwODU0NGE4YTMyNzI5YzE3OTc1MDE0ZDYyOWIxMzljMGIzYzIzNgotYmM5YTk5MjMxZmZiMzM5Yjc3NjFhMjU4NmVhYzU2NGJlNzM0ZWYzNzk5MmNlYzZjMDZjMmM5M2RlMmIzNDBmYgotM2EyN2E1MmRhYmU2OWQ5MTc4ZDlhNTQ0NDMwY2ZmMjI5MzM1ZWRkNmY4MTdiYzUyYzY5MDkxN2ZiZjMyMjg1MgotZDRhN2E3MDlhNTkzNzA0NTY4Y2YxNDJiNDVlZmYxNjRkODE3ODgwY2M5Mzc4MmMyMjMyNDdjNjVmYTk5YWNhMwotNWM2NmEyNjA5M2Y5ZmZiYzI1Y2E5YjNjZjZiOGJhNDc4Njk1YzY4MjEyZTgwZTM4NjhhMGRiMWExYzg0YmNkYwotZGYwNWZlMDU0NzMzYTFiNzk0ZWQxY2M0ODNhNTdiOTdjYTJlOTdmY2IxY2ViOWNjMmFlN2Q1ZTBlMDY0Y2M4ZQotMDFjYzYyODE4MDM1OTc0OTYyMmFjMWNmYmI1N2Q1MWIyNTk3NGVjYjE1ZGM4M2Y5OWRiZmJhMmQ3NzlhZGFmOQotNmE5MzA3YmYzZmFlZjVkMmJhNTEzNWExNWQxM2M0MjE1NTcwZTc3MjM3NmE0YTRhM2E1ZWM0MDI4ZWYxMTAwNAotYjkzYWNhZjM4MTI4ZGU5NDUzMWMyM2YxMTRmZWM0MWNiMmUyMDI3ZThlZTEzOGFlZjZhZDAxN2Y1ZDk3YTYwMAotMTA2M2JlNzA2YjY1ZGEwZWRhMjIzNGU3ZTlhOWMyN2MwODRjNDU2NGIzNjJmZmE5M2VjOTEyN2NiYzkzNjZjZQotN2I3NDgwNTk0M2M5OTYxYmU1YTViNWVjODc2NzViMDJmNzU2YWYxYjcwMDc0ZDAzMzc0YWU5MzFjZmYzMTc1NwotNDE0NWFmNDE2YTkwOThiYmE4NGVkMmQzZWQ0NDAxOTI1N2MwZjM0ZTdmOTRkYmQxMGZkMDRmZDE1ZmZkMWI2NAotZjY1YjJjMDJlNTgxMTc1NDM2MTUwYTA3NGRlNDNmOGUxMWZiYzU2ZTgwNjQ4NjY2NWNlZGJjZjM4NzUwNGQ2ZgotMDY4N2ExM2Q2NjhjNjlkZGRiYzM3YWRmOTFhZDAwOTFhNzcwZWUyMzg1MGFlMmZjYmQ2YjlkZTlkOGE4YzhiOAotZWNjZGU2NmI3MTIyYzdiOTYwMmRiZDBmNmI3ZjdlNDg5MDkzMzQ1MWM3YTM5MDQzODJkNzgwMWJjZDk5MmY3NgotNGNkNDFkNzRiYzg3MjNlYmEyNjQ3ZGI3ZjgxM2I0NjVkMTEwNTJlMGY0ZWY1OTMwNDk5NDI5MTVjNjE0ZWRlMwotNGY4ZjJiNzdiZWRlYzYzNWViMzQ2MWQ2NmNiZmQ0YmUxNjg5YTgzOWIxZmVhYTQxYzBmMGZhMjM2Njk4MDZiYgotNTJmZWExZmE1YWI1MjRhNDQ3ZWYzY2ZlYTQ1ODNhNzc5MGJhYTQxOGZmODkxNzM4OGRhYWRjNWEzZDFhOWZjYwotN2Y0YTgyNmM5MTJlYmE1ZDRiODJkNGMyOWI2MzlkNTY1MzJiMzdlZTlhZWQ2YmYwNjEzN2EzYWY4OTljNzBhMQotY2U0Yzk5NDBlNmVhODdiNmUyNzQ2OTZjNGExNWQ2YWEzYzE3ZjkzMzRhYTg0ZmNmMWVkYjQ4ZTMwNjY0MGU1NwotODkyYjI1ZTY3YzZmODdlNGU0Y2RmMWE5Y2YxMmY2OWMwMDI4YjVmYjc2OGU4MzllMWI4Zjc1ZjNhYjJkOTc2MwotNmUxYmU4YzVhNzNiZmE4Njc1ODUzNjk1ZWUzMjg4N2RkNmRmNWYwM2Y4OGU2MzdkNDVmNzUyZDIyZjZjNzZiMwotNzFiOWE1MTQwNzhjMzIwMGRkZDJlOTk4ZjMzZjFhZTVjMGE1ZmRjOTMyZjdjNDcyNzUxMmNhZWMyMzJhNjgxZgotYmJkZWMxYTkxOWJkZGFlYmY1ZWZiZDA2ODY5YmNmZTA2MzdiNzJjZWZhYWMxM2Y5MTVmMjVjZDNhOTI2YzBhNQotNDg3NTQzNWVlNmE0MTNlMjU1NGZlNGVjZmNiOTZjMWI1ZDg3MTllODRkZDM0OTM5ZGZkNzc5NWVlZGVjYmNlYgotNzg2ZGYzMmI2MzYwYmZmZWQ1NTNhNzRiNDQ0YTM1ZTBhYjA1MTdjZjdhYTljNGU0MjBlNWJlYTRhNWFhYzk1MAotNTRjZmI1NWQxYTFlNTdiNThiOGZiMzgyZThlYTJhY2JmYjliNDNkMWFiNjdlMGMxNDUwZWQzMDkxNzU4YzFiMwotODE1NWZkNjk5NjUwMGE1NWZhNWQxMzRmMTdlNTU5NzhkOTMwNDI1ZTBjMDM3NDgzNjRjNDZkM2JlZjY4YTM5MAotNjQ5ZTA5ZTQ4YzJmYWI5MjEwOGVlZjg2MDNjNzBhOTc3YTM4OGQ0ZDI0OTcxMjk2YWFhYmNiOTMyYmM5NjAzMwotZjY0OGE2YWRhMjY1YWNhOTM4YTY1MTJmNDU2ZmRjMTk0ZjcxODY4MDhkZWIzYzE2NzY5ZDNmYWE4NTBmNzhmYgotNTg2MTBjNzc2YzJlZjNmMjA4NDA0ZGVmMjk0MGU0ODRhODAxY2RjNDVhZWFjODhmYTk4NTJkMTMxOTE1OTM0MAotMzQ3OGIxYjdmMjA0ZmYyOTdiNjdiZGRmMWQzOGUyNTZmODY0ZDNhODNkNjkxOWNhN2RiMWJiYjFmNWI4ZjZlNwotOGJhMjcyZDFmYjI4ZDc2MDYxOGRhYzZmNTYzM2I5NDgxNjQ1YzliOGViM2EzMzg0NTE4MTAzY2M2OGFjZWIwNQotNWE5MWRkOGRlZjA0YjQ5ZDM2M2IwYzZkYWY2M2FlZjVkODViMWU3OTUwNGMyM2IzYmI1MGE0YjcxOTQ4MzhkNgotYjQxN2IwY2NiY2Q5NWE0NjgzNGY5YmJiMmFjMzBmYjJkOWI5YzMxY2Y0YjYwOGUxMzc5Mzk5YTk1ZjhkZmE5NAotNTM5OThhNzQzYzVhNWJmMzNlZDFlMTAxNzdkYzRhMmEzNDdmNWZhNGQwOTQ3MGNiNWQ3MWIwN2JmNDU5YzgwMAotMDExOWEyMTY0YjE0M2YwM2ZjZTM2YzE5Mzg0YTAxY2VjNWI5MDgwNDkxYjgyYjlmZjExNWY3OTVkOTY5ZjQ4MAotYjcyMzJkMDM3NWE5ZDQ2ZmFmZjMxZmVjYzkzNTFiNDI5MjNlOWFiNjIwN2QyNzIzOTE1ZDc4NDNkYjI3OTUwNQotMjgwZDcwZDljODBhMTgyMWEyNTdhZWM3NjRiN2U4NWExZThkYTdjNDBkNDJhMGY3NzM4NWVhNjZhNzY0MzQzNQotZTIwYWY3MDg0NzBmNjQ1MDQ2YmJlYWMxMmQ4NDBmZTMyNjBjZTc1ZTIwNTYzMDE0ZDllMmViZGFhNTdlZjA2YwotMGRkYjU1ZmRmNmVjM2UwNjQzMTJkMTNlMjUyOTliMTUzMTY5Nzg4ZThhNGRlY2MwOTVlYjM3ZWFmOGU4Y2UyYwotY2Q3MTc0ZjQ0ZWU4ZjM4NzVjNWEzZGUzYzdjZTIyMjk2ZTk5YzQ0NjI4ZjUyY2QzZDE4ZWI5MjE1YzM0ZTU2MwotMGJhODViNWZjZjNhMjExMDIxYTE5OTQ1NTEwYzdlMzlhYjU2ZDk3N2Y3NGZkNTBiYThhNzBkZWY4MmZhNjc3NwotNjkzMDM5MDcwMGI0NjM2MzMwYTk5OGI1MzUxMjZkNjEwZThhMWNiNjNmNjE4ZDY5ODk2ZmI0NzU3Njg1N2Y1ZgotODkyNmRkYjQ4MzM5NjY2OTVhMjY0MDJhZWNjNDhiYmNhZGMwNGMyODMzYWZjZWRlZWUxNDI1NGE5ZTc3NjAzYQotNWJiN2I5ZGUzYzk3MDA3OTAxMTQzYTc5MDFjMDBiNzdhMTNlNzI5NDBhNjUwN2E3NjE2NDk4OWU3MWQ5MWViMgotMzA4MGM1ODViZTJmODczNDkwOWZhMWVmYTdmYzZhMjQ2NGQ5NWU0YzUwNTFmYjhkNjA2NWE3ZDlhNDUzY2JkZAotMDMzNjI2NTQ0YjcyMTA4ZTRjNGMwODdiNGU0ZGQ5NzI4OTMzNzFiYTdiOGU4MjkxZWE0Zjk4ZDAzYzYxY2U2ZAotZDU2NzM0ZjE3YTY2Njk3ZjIyNjBhZjliM2Y4YjlhMzY3MTdiNDkwZTFjZTY0OWQ4MzlhNjYxMzNkYTc3NDJkMgotZGJjYWEyMmZmOTE1ZmNhZGZmYTAzODNjZjM0YzIyOTBmYTQyZmUyMzEyOGUyOWU3YmIxYzU5ZTU1YjdhYzM0NwotZmU2NjQ4MWY0ODVkN2JkMDlmNTVjYjUxZDIwOGQwNzY1YTUxMGQ1ZjY5NThmY2QzZmY1YTVlZDI3ZDA2YTAyYQotZjdlY2FkY2U0YjRhYzVmMWQwMjEwYzU2MzdmMDczODIxOTNkNzc5NDVlMjQ5ZDJjNDk3M2FhNDNkZWE0MWRjMAotNTFjZDcyNjQzYmRhNGY3NDlkZDU4NDZhOWQzYTczNDZkMzlmNzhlYWFkNzM4ZDJkMjU1ZGYwZjBjYWI1ZmIxMAotOTZhMGFjODZiYjAxMzk4MGRlZGZjODRkZGZlZjA4MTcwMGZjM2M2NmI2ZDVhMTI1YzllODNkZjE3ZDkyNjU4YwotMTBkNzlhOGFhYTIyMjAwNGMyMGFhYWU2MTI4MTMyYzY0Zjk2YTdhN2M4Njk0ODlhNjM4NjBjMTVkNTNmOTU4YgotZDZmYjgxY2QxNjViZjI1M2Q5OTZjMTUyOTVmN2MyZmM1MmMxM2I1MWFkZWQxYzc3NGNiMzVhMGFiMjU4YmNhMwotYWI0Mzg3ODZmZjdlNjQ4ZjQyYWI1NjhmZGQ5Y2Q1OThjNTJiNTc0OGIwYzQ0NDU4ZDRlMGI4MDgwYWQxOWNiYwotNTVkOGFhMWE3OGNhZmVkN2JkNDFhODY0NDg4ZDhhYjBiYzEyZjY2ODkwMjdjNjVjNzBhMmIyNmJkMjU5MDAyNgotM2U4MGJhNjE4OTY3MmFkZmUzNzdlOWZiNTE2Y2M2YmJiMGYyZTM0MWRjOWUyZjM0YThiYjAwYjQwNzllYTI4ZgotN2M4MTM4YzQxNTMwNmUwMGJkZDhlNzExNzZmYWYwNmZhYzkyZTM4ZThlMTVkYzZlYzZjZGIzODlkMWExNTMxMAotY2E2NzQwOGE5Njg2ZjIxYmY2ZmJiZmE3Y2UwMzI5NzRlMmI4NjBhM2E3MjU2MTUwOGJjZjIyZWRlNDEyMjE4NQotYjgzNTMyNDQ0MTM0YWYyYmFjNWNlZDE5MzJjOWNjMDZiNzAxNjBkMGNlZmM4Zjc2ZWQxMTA4YjYyOWU4MTA2MAotY2U2YzMwZTBiYzlhYzIzMmZlZjdhYjFjOTllMjE3OTI5MjFiZGRjMjBmMmFmZDNiMDgzZGJhMjk2NDE0NThhMQotMWJhODA2MTM2MTBiMDE1NDNkMzM2ZWJjNDVhZTE1YzI3NmM5ZmYxOGZlY2RjMGNkZTNiZTE4ZTA0NDQ5NzIxNwotYjlhODEyZDkyNjUzOGZjNDI4NzFmNDM5MjgyYzE3MTc4MzMxNzBiZGJmZmJkN2UyMDM0ZDc5NGVlZTkxNzdlZAotMjgwNDViMmRjNDU5NTk0MjZlMzVkMzBmZGUKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLWNsZWFydG9tYXJrCi0lJUVuZFJlc291cmNlCi0vRjEzMF8wIC9WWEFNUlYrTmltYnVzUm9tTm85TC1SZWd1IDEgMQotWyAvLm5vdGRlZi9kb3RhY2NlbnQvZmkvZmwvZnJhY3Rpb24vaHVuZ2FydW1sYXV0L0xzbGFzaC9sc2xhc2gKLSAgL29nb25lay9yaW5nLy5ub3RkZWYvYnJldmUvbWludXMvLm5vdGRlZi9aY2Fyb24vemNhcm9uCi0gIC9jYXJvbi9kb3RsZXNzaS9kb3RsZXNzai9mZi9mZmkvZmZsL25vdGVxdWFsL2luZmluaXR5Ci0gIC9sZXNzZXF1YWwvZ3JlYXRlcmVxdWFsL3BhcnRpYWxkaWZmL3N1bW1hdGlvbi9wcm9kdWN0L3BpL2dyYXZlL3F1b3Rlc2luZ2xlCi0gIC9zcGFjZS9leGNsYW0vcXVvdGVkYmwvbnVtYmVyc2lnbi9kb2xsYXIvcGVyY2VudC9hbXBlcnNhbmQvcXVvdGVyaWdodAotICAvcGFyZW5sZWZ0L3BhcmVucmlnaHQvYXN0ZXJpc2svcGx1cy9jb21tYS9oeXBoZW4vcGVyaW9kL3NsYXNoCi0gIC96ZXJvL29uZS90d28vdGhyZWUvZm91ci9maXZlL3NpeC9zZXZlbgotICAvZWlnaHQvbmluZS9jb2xvbi9zZW1pY29sb24vbGVzcy9lcXVhbC9ncmVhdGVyL3F1ZXN0aW9uCi0gIC9hdC9BL0IvQy9EL0UvRi9HCi0gIC9IL0kvSi9LL0wvTS9OL08KLSAgL1AvUS9SL1MvVC9VL1YvVwotICAvWC9ZL1ovYnJhY2tldGxlZnQvYmFja3NsYXNoL2JyYWNrZXRyaWdodC9hc2NpaWNpcmN1bS91bmRlcnNjb3JlCi0gIC9xdW90ZWxlZnQvYS9iL2MvZC9lL2YvZwotICAvaC9pL2ovay9sL20vbi9vCi0gIC9wL3Evci9zL3QvdS92L3cKLSAgL3gveS96L2JyYWNlbGVmdC9iYXIvYnJhY2VyaWdodC9hc2NpaXRpbGRlLy5ub3RkZWYKLSAgL0V1cm8vaW50ZWdyYWwvcXVvdGVzaW5nbGJhc2UvZmxvcmluL3F1b3RlZGJsYmFzZS9lbGxpcHNpcy9kYWdnZXIvZGFnZ2VyZGJsCi0gIC9jaXJjdW1mbGV4L3BlcnRob3VzYW5kL1NjYXJvbi9ndWlsc2luZ2xsZWZ0L09FL09tZWdhL3JhZGljYWwvYXBwcm94ZXF1YWwKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmL3F1b3RlZGJsbGVmdC9xdW90ZWRibHJpZ2h0L2J1bGxldC9lbmRhc2gvZW1kYXNoCi0gIC90aWxkZS90cmFkZW1hcmsvc2Nhcm9uL2d1aWxzaW5nbHJpZ2h0L29lL0RlbHRhL2xvemVuZ2UvWWRpZXJlc2lzCi0gIC8ubm90ZGVmL2V4Y2xhbWRvd24vY2VudC9zdGVybGluZy9jdXJyZW5jeS95ZW4vYnJva2VuYmFyL3NlY3Rpb24KLSAgL2RpZXJlc2lzL2NvcHlyaWdodC9vcmRmZW1pbmluZS9ndWlsbGVtb3RsZWZ0L2xvZ2ljYWxub3QvaHlwaGVuL3JlZ2lzdGVyZWQvbWFjcm9uCi0gIC9kZWdyZWUvcGx1c21pbnVzL3R3b3N1cGVyaW9yL3RocmVlc3VwZXJpb3IvYWN1dGUvbXUvcGFyYWdyYXBoL3BlcmlvZGNlbnRlcmVkCi0gIC9jZWRpbGxhL29uZXN1cGVyaW9yL29yZG1hc2N1bGluZS9ndWlsbGVtb3RyaWdodC9vbmVxdWFydGVyL29uZWhhbGYvdGhyZWVxdWFydGVycy9xdWVzdGlvbmRvd24KLSAgL0FncmF2ZS9BYWN1dGUvQWNpcmN1bWZsZXgvQXRpbGRlL0FkaWVyZXNpcy9BcmluZy9BRS9DY2VkaWxsYQotICAvRWdyYXZlL0VhY3V0ZS9FY2lyY3VtZmxleC9FZGllcmVzaXMvSWdyYXZlL0lhY3V0ZS9JY2lyY3VtZmxleC9JZGllcmVzaXMKLSAgL0V0aC9OdGlsZGUvT2dyYXZlL09hY3V0ZS9PY2lyY3VtZmxleC9PdGlsZGUvT2RpZXJlc2lzL211bHRpcGx5Ci0gIC9Pc2xhc2gvVWdyYXZlL1VhY3V0ZS9VY2lyY3VtZmxleC9VZGllcmVzaXMvWWFjdXRlL1Rob3JuL2dlcm1hbmRibHMKLSAgL2FncmF2ZS9hYWN1dGUvYWNpcmN1bWZsZXgvYXRpbGRlL2FkaWVyZXNpcy9hcmluZy9hZS9jY2VkaWxsYQotICAvZWdyYXZlL2VhY3V0ZS9lY2lyY3VtZmxleC9lZGllcmVzaXMvaWdyYXZlL2lhY3V0ZS9pY2lyY3VtZmxleC9pZGllcmVzaXMKLSAgL2V0aC9udGlsZGUvb2dyYXZlL29hY3V0ZS9vY2lyY3VtZmxleC9vdGlsZGUvb2RpZXJlc2lzL2RpdmlkZQotICAvb3NsYXNoL3VncmF2ZS91YWN1dGUvdWNpcmN1bWZsZXgvdWRpZXJlc2lzL3lhY3V0ZS90aG9ybi95ZGllcmVzaXNdCi1wZGZNYWtlRm9udAotJSVCZWdpblJlc291cmNlOiBmb250IE1GRUNVUitOaW1idXNNb25MLVJlZ3UKLSUhUFMtQWRvYmVGb250LTEuMDogTmltYnVzTW9uTC1SZWd1IDEuMDUKLSUlQ3JlYXRpb25EYXRlOiBXZWQgRGVjIDIyIDE5OTkKLSUgQ29weXJpZ2h0IChVUlcpKyssQ29weXJpZ2h0IDE5OTkgYnkgKFVSVykrKyBEZXNpZ24gJiBEZXZlbG9wbWVudAotJSAoVVJXKSsrLENvcHlyaWdodCAxOTk5IGJ5IChVUlcpKysgRGVzaWduICYgRGV2ZWxvcG1lbnQKLSUgU2VlIHRoZSBmaWxlIENPUFlJTkcgKEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSBmb3IgbGljZW5zZSBjb25kaXRpb25zLgotJSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBwZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gaW5jbHVkZSB0aGlzIGZvbnQKLSUgcHJvZ3JhbSBpbiBhIFBvc3RzY3JpcHQgb3IgUERGIGZpbGUgdGhhdCBjb25zaXN0cyBvZiBhIGRvY3VtZW50IHRoYXQKLSUgY29udGFpbnMgdGV4dCB0byBiZSBkaXNwbGF5ZWQgb3IgcHJpbnRlZCB1c2luZyB0aGlzIGZvbnQsIHJlZ2FyZGxlc3MKLSUgb2YgdGhlIGNvbmRpdGlvbnMgb3IgbGljZW5zZSBhcHBseWluZyB0byB0aGUgZG9jdW1lbnQgaXRzZWxmLgotMTIgZGljdCBiZWdpbgotL0ZvbnRJbmZvIDEwIGRpY3QgZHVwIGJlZ2luCi0vdmVyc2lvbiAoMS4wNSkgcmVhZG9ubHkgZGVmCi0vTm90aWNlICgoVVJXKSsrLENvcHlyaWdodCAxOTk5IGJ5IChVUlcpKysgRGVzaWduICYgRGV2ZWxvcG1lbnQuIFNlZSB0aGUgZmlsZSBDT1BZSU5HIChHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkgZm9yIGxpY2Vuc2UgY29uZGl0aW9ucy4gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgcGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGluY2x1ZGUgdGhpcyBmb250IHByb2dyYW0gaW4gYSBQb3N0c2NyaXB0IG9yIFBERiBmaWxlIHRoYXQgY29uc2lzdHMgb2YgYSBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIHRleHQgdG8gYmUgZGlzcGxheWVkIG9yIHByaW50ZWQgdXNpbmcgdGhpcyBmb250LCByZWdhcmRsZXNzIG9mIHRoZSBjb25kaXRpb25zIG9yIGxpY2Vuc2UgYXBwbHlpbmcgdG8gdGhlIGRvY3VtZW50IGl0c2VsZi4pIHJlYWRvbmx5IGRlZgotL0NvcHlyaWdodCAoQ29weXJpZ2h0IChVUlcpKyssQ29weXJpZ2h0IDE5OTkgYnkgKFVSVykrKyBEZXNpZ24gJiBEZXZlbG9wbWVudCkgcmVhZG9ubHkgZGVmCi0vRnVsbE5hbWUgKE5pbWJ1cyBNb25vIEwgUmVndWxhcikgcmVhZG9ubHkgZGVmCi0vRmFtaWx5TmFtZSAoTmltYnVzIE1vbm8gTCkgcmVhZG9ubHkgZGVmCi0vV2VpZ2h0IChSZWd1bGFyKSByZWFkb25seSBkZWYKLS9JdGFsaWNBbmdsZSAwLjAgZGVmCi0vaXNGaXhlZFBpdGNoIGZhbHNlIGRlZgotL1VuZGVybGluZVBvc2l0aW9uIC0xMDAgZGVmCi0vVW5kZXJsaW5lVGhpY2tuZXNzIDUwIGRlZgotZW5kIHJlYWRvbmx5IGRlZgotL0ZvbnROYW1lIC9NRkVDVVIrTmltYnVzTW9uTC1SZWd1IGRlZgotL1BhaW50VHlwZSAwIGRlZgotL1dNb2RlIDAgZGVmCi0vRm9udEJCb3ggey0xMiAtMjM3IDY1MCA4MTF9IHJlYWRvbmx5IGRlZgotL0ZvbnRUeXBlIDEgZGVmCi0vRm9udE1hdHJpeCBbMC4wMDEgMC4wIDAuMCAwLjAwMSAwLjAgMC4wXSByZWFkb25seSBkZWYKLS9FbmNvZGluZyBTdGFuZGFyZEVuY29kaW5nIGRlZgotY3VycmVudGRpY3QgZW5kCi1jdXJyZW50ZmlsZSBlZXhlYwotZDlkNjZmNjMzYjg0NmE5ODliOTk3NGIwMTc5ZmM2Y2M0NDViYzJjMDMxMDNjNjg1NzBhN2IzNTRhNGEyODBhZQotNmZiZjdmOTg4OGUwMzlhYjYwZmNhZjg1MmViNGNlM2FmZWI5NzlkNWVhNzBmZGU0NGEyYWU1YzhjMDE2NmMyNwotYmY5NjY1ZWVhMTFjN2QyMzI5YzFhMjExZGQyNmJiMzcyYmU1ODIyZjVlYTcwZDk5ZWI1NzhjN2JlZmQ0NGNkZgotMDQ1YTM2MzA1NmU1ZTFjYzUxNTI1ZWE2ZmMwNjFkY2ViYjMzNzIwOGVmZjcyOTgwMjM3NmEyODAxNDI0ZjY3MAotMGU3ZTYzOTdiMjhmMTViYzEwYjQwMDEyYjBhM2VhZWIyNjkzZThmN2Y2MjdjNGM5YzdjNmM1YmZmMTA1YzFlNAotMWIyYjllOGYwOTI1M2I3NjA0MGQyNjhiODA3MTllMWIzZjVhNTVhYjdiODkyOTA2OTliNTBjMWJmMWJhZWZmZQotMWY1N2JlN2I1ZWEwMjUyNDFhMjQ4YTZkNGNmYTUwNjdhMWRhNmViYTRjZmM5NDA1OTliYTNmM2M5MzRkNzI0OAotYjhlNGFjNTgxNmYwZDJjZThiM2M0MTkzY2UzOWQxOWZmZmRiNzUyNTQ1NzMxNzNjYjUxY2NkODNjMmYyZDA2YgotMjQ4M2NmOWIwN2IyMWVjNmY1MDJmMDI4YzI3Mzg4N2JiMDZkYWUyYWZhYzEwZTlmZDNjN2NmNTFiY2E3YjI3NwotYjcwNmU0MjUzMDJkYzc4OTc1YWMwZTQzYjg3MDczMjU3YTVjZDc0MjRiNjg2NWZjYTg5ZDg4NmU4Zjk1YzRmNgotZDQ1NzYyM2RiYmMwZDE2YmFmZWI0YzY0OWY1ZDcyYjA5YjE4NTAyZWVhYjY4N2U5MTVlOWI1MzZhMzYxYjRmMQotNDRjM2NkNGNjNjgzYjVmMDVhNGVjYjQ4MjNhNWViNTE3OWJiN2VlZThiNzZjMjFiMjQ5MWE5NzgwOGY2MzE4YgotNTg1YjBiYWQ5OGY0MmZiNGE3NTViY2I3NGNkMzU0Zjc5NGM4YmVhNWI5MGZiOTY4MWJkNTg0OWQ0NTI0N2UzOQotOTMwYzg4MjQ5MDIzMGUxNjYyZDM5Y2NhODc1YmZmZWFjM2U3OWE3OGRlNmUxMjk4YWJlOTgxN2FlOTg2NzVjNAotMTYyMjBhZDBkM2EzNjU4MGVlMmYyYTE3YWFhMTI0NmM0MTZkNThhNGM1MmZiYjI2YWFmM2I2Zjc1ODMzYWY4ZQotM2FhOTk2MjE4ZGFmYTU3MWZiYzdjYWQ5MGVjZTljODgzYzgxM2Q4ZjE2OGM1ZTg2YmJmYTBmMGE1Y2IzNmUzNQotMmRlNGNhYTBmOGQzMjI3ZjcyYzUwNTZiZmI1YmNhNmJmOWM2MGUwMzdhMGU0NDY3MGE4ZDNjYmM5YTE5ZjM3OQotY2E4ZGIzMGI3MTFmNTE4YThjNzU2OTIxMWFjNzBjNDZlZWQyYWY2MmEzN2YyMzhiZDBiZDEyZDYwMzMyZTY3MwotYzZlNzg0YjNlYmEzZjJlNzFlOTk5M2I5N2U4YTM4Zjg1MDQ4OTM3ZTk1OGYxY2Q4ZmM2ZTY2MTA0ODU0NjEzNQotNTZiODEwZmExZmY2MTFiOTY0OTUwODFjMDQ1NDJkZjdmZWYwODVkZWM2MTlkYzhjODRjYzU3NjgzZDIxMjgxMwotOWQxNDcyOGFhMzI3MjNlMWQxNWYyYWY4ZjAzNDIyY2ZhZmQ4ZWE0YzkyZGFiZmUwMGU2MTEwYmNhMzlmYzU1NQotYmMwNjZlZjg0OGU0MzdiNTA2ODhkYWYyNmQwMDFhZWQ3ZTc0NjA1ZGRmOWMwZWQzNmJlNDU0NTVhZWY5MjY4OQotOGNmMzJiYWYyNDE4ZTAyMTE4NTkzZjU0ZmUxODU3ODA3YmZhMGI5M2I1Y2RjY2Q4MWQyOGJlZGUyMmNkYTZlZQotMmUzMjQyMmMxZThkYTg4NjZlNTI2MzAwZjkwNTllODVjYTU0MTIyZWNiZmZkYzAxMTQ2MDkxM2UwZDI4ZjdmNQotZmJjOWQ3ZjlmNjkzNGIzZDhlZmMxYTkxY2JhNDEyOGY2YmJjNWViNTVlNWU3YjczNjQ3YmZmNzA2NjJiYWZiYgotMTQ1Y2ZhNjVkZjNkYjg1OGJjM2ZjNTc3YjFiZDhiYzc0ZmI4YTYxYmZhNzFiODMwNGFlZWIzNmQ4ZWZlMTJmYQotNmY1ZWVlMGVhZTA4MzBlNTE3N2RjNzQ1MjUwZmMzNjJmNzgyMzFmYzNhYzk4NjQ1NTlkYmE5MmRkYTJmZWI5NgotMjYyOTI5MzQzNWJmNGE4OWY5MTNmZDE1NzAyY2YzMjU5ODFjYTNhMDhiMzI3ZjdlZTM1Nzk0YTllODgzMjZlMAotMjQ1NTliNTQ3ZmM2ZGE2MWI3YTNiOTM1N2Y3MmM3NjdiYWE5Yzc5YzRlN2I3N2Y3MGVjMDFhYzBiODU5NjQyNQotNWY3MzQ2ZGM4Y2VkYzcwMmQzZDU3YjA5ZWY4OWNkZDMzNzU2NjE5YWY1OWFjYjlkMTdhM2FiZWFhNmM2NTIxOAotNmQ2ODU1MzQ4YTEwOTU3NDZiMzRhZjE1ZGYzMTMwOTFjNTllNWJmOWU3OWIxNTZjZDc5MDNjMWM0MmUxMTVlOQotYzUyMDMwMzdjODA4YmQyOTUxOTVlMDc0ZmM0YTQ2ZmJiMWZmMDFjODE0ODc4ZjBjMTc3ZjU1MmJkYzliYjY5OAotMzQ5ZDczYWVjMTc5OTczNzRlYzkwYjY5MjkzYTA2NDQ0MjE0MWE0NGM2ZmU4ZTNjMjgzYzAyYTQ2NTVjNTc5YgotZjIxYjUzZDFmZDM3OTk2YzY4Mjc0NTYwMDc4NWM3YjUyYzRlZWI0N2ZhNWZkNjQwNzM5ZTFmMDlkNWM1ZGQyYgotYjc1MTVhNGNjZTBhMjEyODFkMzE1NTYzODk1OTcyYmVlODhiYmM3NDAxYmU5ZTIwY2IxNjBiNmJjODFlZDQ2OQotNmQ2NjE2OWJkYzY0OGFhYWU4YTk0OTViMDcyOTExY2M4MTRjMTlkNTNiOTVkZTAwNzFlM2E0MzlkM2MwOWMzYwotMWNkNDIyYzYwNTc0MGE4OTM5NDg3ZTI2YmI5MjMzZDRjZGVmY2NhNDliYmViMWI5MTM1NzBhNTFiMmY5NmQzMAotMmVmODkxM2M2YmI2MGI1NGY3ZWE0YjhjYTE2YWQzYjQxOTRkY2JhMjg0MzllYjMxYTk0NDNjYWYwNjFjNGQ4OAotYzIyY2VjOGQ5ZDhkODVkN2FhMjI1ZmQ2NGJmYWU3Mzc2YWJkNDBmODIyYmExZWNjOTMzOWUwOTQwMzE5NTc1MgotZmMwM2E1YzQ3NDJhZDkzMDY0ZDk3NTkwNmVkNjNhY2I0OTVhYWUzMjQ0MDNkM2JjYTExODE3OWUxMDI1NjU0MwotMWJjODRkNDdlMGMwMTYyMzRlZWMwYzUyMjU1YWU3ODM0MTc5NDFjYzg4NGVmYWRiNjNmODI2OTg3NmYwMGE4ZQotMWUxZjE5ZWFmZmZhMDA0NTMyMDNhMDc1Mjc1MGY4Yzg3NmFhZjg3ODI2YmFmNzdiODFkMzM2ZmZjMjkyNDljOQotYTZhNDRmNDAzODEyOTQ0NDc4NDA2MzJlZTU5YTNjNDUzMDM5MWYzNWRhNDVjMTZhMDAxZjc5Mzc4MmJlNDg4YgotNWUwMWQ3Zjc1ZGJkNTNmYjMxZjk1NmYxNjIwMmQzZDk0YTMwMDg2NjgxNGJhNDRjNzk3NjRjYzI1YWNiNTdmMgotMzMzZGZjZjNkOTdhOThmY2E5NDliMWRhNzFhYjI3ODg1MTgzZDhiYWFmYzliYzc0MzE0M2YyZjEwMDJhZDc1MgotMWU1NWQyMDdkZTIzZTk3ZDE3NjBjZDkxOGE1NTE0OGUzN2UwNWY2MzQ3ZThjYzI5OWVlZDI4ZDczMTlhYmNkZgotYTRhMjc5ZDVmNjRjYzIxNTFmOTFhMGJlOWU4MzgyYTM1YjUzNWE2YjVmNDFmMzcwODE2OTg4MWMyNDMzOTFjNgotNjdkOTEyMWJhMjFmNmJiMjJiZTFlYzk5MzNkOWFmMWRkZTk2OTNkNzcwNGMxMTQxY2UyYjk3N2ZmNTE4MTI5OQotNmE1N2Y3ODA2ODE0NDQwYTI4YjFkZmI2MmM0ZGVkYjgyZjBlYmFhYmVmMzM2N2JlYmNkNDMyNDZkNTRkOGViNgotN2FmMDdiMTY0Mzc0OTk4ZjA2YTBiN2UyNzFhZDZlYTk3NDY5OGE4MDYwMDIzNzRkMjcwYzZkZDVjOWRmZDVkYgotZTA1NmZlMWIzZDU4NDgyYTBjYzk4ZDRkNTYwM2M1OWVjMmUxM2I0NDYwMjM2OTJiOWFjMmRkN2NmNzY3ZDJkYwotYTdjNjJiYjM1Nzg4NDcwODVjYWI3OWYxMzliZDMxMmNiMDdjZTEzZTM4YzNmYjhmNjk1YmNmNDAyMWMyODJiMAotOWIyMGJhNjdmMzc4Y2JiODgzMjc1MWI4ZjNlZWQzNzBhNTcyMTM5NDMxYjkxODc4OTNiNTkyNTI5ZmIxYjZjNQotMTlmNTE3OThiY2U5ZTU2Y2E1MDE4NWQ0MmZiZDg1ODE5YzNhMTE1M2Q2NTk5NzUxMWIxOWFjZjg3ZTY5YzA3ZAotMmNhMWE3NDAxYzJiMjNmOTljMTlmOTVkYTBkZjEzNjQ3MmY5ZmI1NzRiMjFhZWJiZjBjMmY4OTJiOTI2MDAwMQotOWE5MTczZjEwOGU3MmMzZWI0YTkzNzE5MjkzZThiZTAyNmI4MzNjZDcwOWM3YzA1YzFhMmU3MjUwY2FkMjU4NgotY2E3MGZiN2Q5MjdlMzZhMmU0YTZmMzRlNzU0YzhkZDhlYTI1NzFjZDgyMDU0NzAwZDM4NmNkZjM0MjBmMzdiYwotYjZhNzBiOWE5MmU0NmNlYmVlMTNmNjY0MWM2N2JjNDA5NzlmOWI4NmUwNTIxNjQ2MTJkM2RjZTdiZTY3ZmE3MQotYjI2ZWU5ZjQyNWI1NGIzNTc3Y2I0YWNmM2RhZDAyZjJlNTVkMjk4NmRlYTg4YTVhMTk1NWI3OGMwY2Q1ZGVjZAotMjEzYzU1YzljNTcxODNhN2RkNTgzMmQ0OWVlODE3MjRhMTlhYmI3ZGEwNzc5ZjFhYTZhNzdkNWQzMTQzNGEwOQotYzZmNTNiN2UyNzEyM2RhYzA0MmY1OGRjMjc2NTNkOTQwMzU4YmI4MTAwYjQxNmI5MjBhZWUyMDY3MjU1OWY2MgotOGIyMGM2ODdkNzdmZjgzY2NhNDQ5ZTk0ZmNmNGYwNjYxNGZjNTM5ODAyMzQwNjE5ZTNhNzkxYTE4NTgxZmZiNgotOWJiNTk2MWQxZTcwZTU1NjE1Y2NlNWM5ZTE0NjZkNzc0MzVlNDg2ZjE1MTc1Y2Y4N2ZmZjY1ZTU4MTI3YjVjMwotMDI0YjkzYzFjMjk2YWFiMjRmMjk0ODNhZWJhMDA3MzZlZDMwYmU1YmI1Mjg0ZDdhZmM0MzI5NGI5MjdiZWMxYgotODY4MTRhNWFjMjVhM2I5Y2QxZjI1YzgxM2NhZTc5MWY5MzczNzVlMDEzMTU5NjI0YTM2MDk1NWE1OGU4ZmE5NAotZTQ5NTkzYTk3MTUwNzAyYzcxZGQ4ZGJmYzM3NzQwOTRkZjkzMDQxNGZmYzY4Y2JkNGI0YTI1MDQxY2IzYjY1NwotYTU0YzliZjc4MDE0MmQyNTg2ZWI1ZGQ5ZWNjMWViNWVhNjkyNDVkNWQ5YzJhZjg2ODk3NGFlNWQ0NmUzYTU0NAotNzRlOTY3ODBhZTY2MDIzNzc4NjU5ZDlhNDU4NTNjMjRkYTE4ZGQ1Y2EwNDg5Y2NjZWZmMjUzYjAwOWMwNmNmNQotODI2YWRiZDBlOGZjZjIzZWRkNzVjM2QzZGU4YTRjNzg5YTg5NWUwNmQyMDYwNmU0ZjhlM2MxYmQ3Nzk3NmU3MQotZGU0MDkyMDNlZjEzNDJiZGJmMmMxMWJiYWI0YWY1YTcwOWYwNDYyYWE4ZmEzYTAyY2JlZDZmMjNmYjRkNWUzZAotMTc1MWFjYmQ0MWVlY2Q4NTcxNTE4YTllMTM4ODljMjIxYmE1NTY4Y2FkZjczMGY5ZGEwMjZmYjM4ZTMwYTI1ZQotODdlZjZhMTM0ODRkNmVlMzFjMTc0YmZhNGI4MGNjMzgxMzRkN2IxOGM4NWM4M2I0ZjE0ZDNjN2IwYTBiNzA2OQotN2JhYTFhMzk3MjUyYWM0N2I2NzMwNmU0NWQ2NDA2MTUzNWQwNTU0MGM4NmI5NTk5ZGY5MDllMTA1YmI1NTEwMAotM2EwMjcxYzI1YmM1ZDU5NmRhMmE0NDZlMzVjMDE5YjVkZWFkN2IyODk2MTRiZDUwODVkNDllY2QwNDY0YjQ5NAotY2QxYWI1NjRhOTNhYzljYmY0MzhmYTU1OGJiZWY3MWMyZmUwMDM1NzNhMDM5NzlhMTBmZThiZDU0YTA1MzcyNAotYTUyOWY0NmZmZTU1Y2VjOGQ2YmJhZjFmNTdkMTYxODU1OTVjODJhMWVmNDJlM2M4MWNiYzU1YmY1MDU4NzYzMAotNDA0YjIwOTBkZjZkOWQyNTQ2OGMxZWI3YTRiMmIzZGE3ZjViNzE4MTU3ZWY4YjVmMjNhZjA4ODMwMWU0NjQxMQotYjUxZTZlMGQ0NjQwOTZjZTIyYmJjMjAyODQ4OGQ5YWY0OTc5MmI0YTE3Y2JiYmE4YWNlOGZjNTFlMWRlMDFiMAotOTdlNmRiMDU0NjZiZjY2OTc4MzA1NjQyYjY3OTBjMDhlNTlhNzA1NWY5NDQyY2MyY2ZjMjMwOTVkZjJjMjdlYQotZGVjYzFiYTU0ZDZiODFlY2M4NzNhOWM3MTc5NmExZWNlNzU3NjViODc4ZDEyZTRkYTllMTlkMDI2YWM0NGRmYQotMmRjN2U1NDA1MDY1NDZhYWM3MGU3YjgyYWU3ZmE5OGJmMzY1NDlmNGQ1NDBmZmZkNTNhYmFmN2VkOTA0NGNhNQotNmI0ZTkwNDRhMmIyM2MzZTdjNzAxNTJlOTZmNGU2NGY2YjE5MTg5NDY3ODlkNGY3MDM2NzVmM2RkNmU4ZTVhOAotZjBhZGQ1ZjdlNDQyYzM1Y2M3ODJjOTJkYjIwMDc1OTZlYzFhNzZkMmQyMmNhNWIwMGY3ZjlhYTk4MTkzMjdhNAotZGI4ZDBiMDMzNjlhMDVkZTk2YjhjNGVhZWMyNTRjYmEwZjM5ZWY2Y2EwMDVjNTNhZmQwZWMzMmYxYzA5MjM2NwotZWZkOWY3NzNiZDAwYjk1YTYwNTIzYmMwMzkyYjA1MGIxNWFkNzBmN2NiNDJmNmQzNjU4NzE0NGNhZTI0NDdhYgotYWE0YjRkOTM3N2E3ZTg2YWM0ODk2ODU4MzNlMWMxNGMzZTE3NjM4YjAwODg0YTQ2YzFlZmEyYjE1OGY2MjM5YgotMWJiZWQ2ZmM2OGZmNjA2Mjc4ZmQ0MjE2YzJhNmQ3ODg4ZjBmMGU1ZGZjOTk1MDk2MmQ0OTY0OTAxYTQ3ZDZjYwotMmUzMjQzZTFkZGU5Y2U3ZjQzNWE3ZGZiMTkzNDlhMzAxN2NlNDRiODdkYzZiYWVjMTgzNTRhMjA0MmM4N2VkNgotYzFlM2ExYTUwNWNjNjc5ZTMyNzg5Zjc1NzgwZjg0MDgyY2M2NTNhMDEwZDE0ZGJhODRkYTAxOTFhNTEwMzU5YwotMWQyNGQ3MDBjNThlNTQ3MThmMWQ4NTM5NmU3YzVkM2EzNjU2MzcwODViNmY3OWMwNjFkZjE3YmZjZDI2MGVhMAotNmI4NDE2YzkwNDJjMjgzMWViMDQxMzQ2YTIyYmM1NGY5ZDdiYTQzZjhjNDQ4N2ZjMjQwYmFlYzIwYWQ0YWFhOAotYzAzZjE4MGI2MTRjNTlkYjZlNWVjMTUzMWFlZmM5MDhjNDZiOTM0MTliOWY1YjJkNGViYTBhNjdiYTQzZDY4NQotMWFkNDRkNGI0M2I3Nzk2ZGU1YzlhMTFmNzI2YTkwZmIxYTM4OWEzNDIxNDNmOThmNDkyMzdmYjQ1MWM0M2ViNQotOTgxNTYyZDkyM2Q2ODQ5MjNkY2FlZTcxYjUyYWI0Y2U2MjY5MTY5YTM1ZjU0NWU3NDU4NGZhNDQwYzQxZWI4MgotNDFhYjE5NGM3OGE1Yjk4MGQwMjFiM2ViNzk5NDg0NmQ5NjNiNzhlYjZlMTQ5Y2NhNzcxM2MxMmY3NzAyMzAwMgotYjhhNzk3YzljY2QwYzJiZDcwZGJlNDRmODFmOWQyNzRhNWZmMzgyNGVlMzRjYjQzMTdmYTQ5NzFkNjdkOTBhMgotZjNkMWIxYjg0OTYwZjBmYmVlNDBlNjM0MWM1MjcxYjViOTQ1YjkwOThmMzA5NTk4NmFiN2RiMmUwNzE0Y2NhMAotMzAxZjZiODM3ODU1OWQ4NmYwYjBkOTVjMmRmZTk0YWM4ZTEwZGYwYzhjMTZkYmExMjUwNWEwZDQ2N2RjY2I4NAotMTZiZmViMTg3ODRiZGMxMDYyNGYxNWRhMWE4ODBmZmJjYmFmYmVkMGUxYzczNjA5NjI0NzgwMDZkYjU5Yzc4YgotZGRjZWU1MjRiNmY5YjE1YTg4NDllZTE5YWEwMGZhM2Y3MWEzYzJjOTZlNjhkZDAyNDhhOTRlY2M0M2E2MGFjMwotODhlNDllMDA1MjUwNzA2ODgwNDg1ZGYxMDljZTE1MDZjMGE0ZWRjNDBmNWFlNWZlMzQ3ZDUyZmY2M2IyNmM3YwotMTg1YTY5OGUxNzEyNDRhYTEwOTU2MjA0OTQ5NDlkNTI2Mjc2MTc1YTdlMTIwMzQwZDMyNDdjYmNhNGUzZGY1MwotNjQxZDZkMzkyYWJjNjFjODVhMjJlMDZjZGJjODljZjM3YmZmZGY4YTc5MzYxYzZkZDY5ZTY3NzQ3NzJmNjk5YgotOTJmN2E3MTg0YTAwZmRkN2YzNmZiOGEwOGNjZGU1YmJjYWIzNzMxMzY2YzNiNzQwNzIwNDRkM2VmMmViYzFjYgotMzMxMThiOGMwOWMwNDE3NGJhZWY4ZGYxYmI0YTFlMWY4NDhjMWE1MTc4ZWM1OGVhNjIxZjZmOGE2M2QwZmNmMwotMTNkYjc5Zjg4NWFjNjU5Yzg4MWFiN2U0MDc5OGE0MzM5ZTZhNzhiYTI3Y2Q5ZTY4MDNjM2Q0ZGYxOTZjNDYyYgotZDA4NTU1YmVkNTFkN2NmNTgyMTIwNDcyODM1NmNmODEzZjU1NDUxN2FjNWUyOGU2YzQwNDdjMDEwMDYxMDYzNQotN2QyNWMzMzMzMDc1OGY3MWJkMTA0MzM2NWJkYTVkMWQ5MjE0YzhiMTU5ZDBmOGZiNjllNDBlNmZiNGVmNDY2OAotYTIyODkzODQzNmRkMjA5ZGRhNTkyNTU5NzE1MWY4NjMzMjk3ODYyNzk5MTUyYjAzMTdiZjIxZjk1NzJmNTAzYgotYjEwODI2YWE3ZjhkMTVmNWQ3ODBlYTI3ZjFiOGNhMGJhM2RkNzMyZDNlM2VmZmNmYWQ2ZTZhZDg3NjlkYjZjMQotZGYyMmFjZTg0Njc0ODFkMTZlOGFmNmY1NjAzMmM5MGM4ZjI1MDBjZTY2YWZiOTRkMzc4ZDg5M2U4NDIwODA0OAotZWMwY2Y5MDA1MDdmMDJlNDBkYTNlOTkzODZmOTM5ZTA1ZDk3MzdiMGIxMWI3ZGZhZTQ3MzQ5NmQwNTZiZTVlMAotN2YxY2QyNTQ1NGY0YjI5MGNjNDNkOTM2NDUwYzNkNjc1Y2VlZjVkYTUzM2RiMjVlYzA3YWRkYzdlODM1NWQ4YgotOGFiYjA5NWRkZDYxYzkxZGEyZGJlYWMwNTc0ZTllYzlkMzE2ZWQxM2RmMDNjOTk3ZDdhNGE5YzdhNmEzYTE2NQotZWMxY2UzMTZlODIwZTEzMjkxMTMyYWU5MTY2MGQ1ZDE4MTIxNDZhYmZhMTM3NzI2ZTg3MDAzOTViNDI3NDUwMgotN2Q1M2IxZTVjYmE4MTdiZWI1NzdiZGRjYjk1NmU4OWFhMmQxYWIyNDEyOGI5YWU4ZTA2ZDlmMGE2ZGFiOTNiZAotZjdlZThlMmZmOTE4MjU1YzM3MjJhOGIwZTg1MjBkZDAyYmE3YzkyYWJhMTNlYmFkOWNlMGFkMGYxNmY3MjhkMAotYWQ0OWJjYjEyYjQyOTgxMWQ4Y2ExYjVhZTI5YjdkNTM5MzQwMWViNTgwMmRiNGQ0NDk3Y2FkNDNlYWQyMThlYwotYzY3NGY0MjE0M2JjMTc0YzUyNWJkNzM2Yjc3ZGMyOGJmYzdlMTA3MzY2ZWI5MDkxZWVkYTYwNjY0YTc3MTc4MgotY2I0MTUwNjQwNmRmZDI5Yzk3NGM1YTE4ZGE4OGI0NzNhZTU4YTJmMWZiZTU2ODBhNDAxMzhhOWQyZmI3OTU1YgotM2ZkZGEyM2IyY2JlN2UyN2MxZGM0YWVhMzA2OWIxZTdlMjUwNjhjOTA1MTY3MmI4YzlhM2EzN2Q2ZTZmZGIyNAotM2JjMjBkMzAzMTk4ZjliOGFkODE1NGIzZjRhNGYyYWNiMTdjMzFhMDQ4OWMxMzY2ZWI4YTEzMDEyYzZiOGNjYQotNGQ0MTZiOTExZGU3ODE1NjNlMjZjMDg1MzhlMDM4ZGQ4ZWY5MjQzNWEwNTQzNDhhZGQ4MTU2ODdkZGI5OWRkYQotODhmMWUyYzU4ODc3MDdjZDRiZTQ3ZjcxYWI4MWEzZDZjYzNlMDM5YmQwOTY5NzczNDg0MGY4YmQwYjg4YWFjNgotMTkxYzZkYjA4OTk0M2Y5OWVlNDE3NGU1ZmFiM2JhZjNhODQyOWUyNzNjNGQxYTUxNDBlMDA3M2Y4NjEwNTQwMgotM2Y2MGRmNjllNjU4MDliN2ExYTVhOGFlZTRkMjViZGRlOWZkNmQwNWEzZmNmNGJlNWYyNTNlNDFmYzQ5ZTEyMQotZGY4OWYyNTliYTk4MWQyNjE3MjA5YjUzZWJkOTJlNDMwYTY5NjY4OTk1OTYxMTc3YjE1OTkzMzUwMTc3MTkwNQotMDhmNjI1YjI2YjUwODVjMDRiMzI1ZTdmYjZiYjQ1ZWViZTNiYzlmNWM1MTE0ZWIzN2YxOTkzNzYzNWQ3MWE3MgotMzlhMDAzOTAwMzc2NGQxMGNiNDAzYjU4YzYxYmY0MTFhYThmNWQ3MTdiY2ZmMjNmYjMzOGRhNThkMTNjYTgxZgotYWNiMzMxNmQyYjViNjc1ZTg2YTk1Y2ZiNTI1MTk5YTIxYWYyNDhhMTI0NWM5MmVlMzc2ODhjNmU3NmE5NTE4NwotM2I0MTE2OTdhMWVhNjY5NGU2Y2NhZGRlZjNkNTcxMTRjZmRlNzA2MDlkZTY3OTcyZWRkMWRiOTVkOTIzZTA3NwotNGJjZTdjYzc3NjA1ZjliYTUyMjZmYjc5MjgyOWIxYjhlYWExNTM2MWZmNzhmMTkwYTA1NjNmZDYxYWFjNDQ1MgotZWUxYjBkMjkzZTY5NTQxNmM2Njc3MzVkZDg4NmQxMGU0NDY3YjYxM2RkOWJiODk5ZjJiZDc1ZjJmMTMxOTNmMAotNDgxZmNkM2I0ZTJhYWVjNmNmMjgyOWIxNTIxZGQ0YjY0NzFiYTMxYWEwYWE0ZDYzYTY0NTYyMDM4OTZhMTExYgotODljMTA2ZjFlYTg1YmZlMGMwMTA0YjEyOTJhMWY4ZDQ5MzM0NTc4Mzc1YjU1ZGVhZTJkNzM4MWY1Y2ZjYzAyMwotNWRkZmIzZDg1NDYwNTRhMGU2ZDVkODFlNDI1NDM4MzM4NWJhNTkzYTdkM2E4ZTBiZWIzNDI4NWRkOTVkOTdjYQotM2ViNTk4YjY0MzgzNDY0NGI2MTFlNmRiNGI4YjQzNjBjODQ3MTIwMDM4NzY4ZTIxODAzMWUwOTdiYTBiZGVhNwotNzMyZjdlNDYwMTU1YTQ5NmI5MWIzMjQxYzc0ZjllZTBjOTllYzdhZGY2YTg3YjcwMWEwY2ViMDdmZWY1ZmE0NAotNDRlMTI3ZGUzZTc3N2MyM2E4ZDkzOGY5ODc5ZGYxZGFiYjdhZGIzMTI0N2E1MzE3NGY5MTlhMmE1YTRmOTIwYwotOTQxNWYzOTc2YThmNGI3MzllMTE0YjJjNDlkNjdiY2VkYzE4NTI2ODZjYjA0MWUzZWU5NGVmOTRkOWYyMDk2ZQotNzZmMWM1NThmNDA4MTI0NDRjNmYwZjRkYWMzYTRiZDIyYjgyZTMyZDhiYmYxNTA0ZjgyMzJlZjAwZGQyZjNmZgotNWM0YjgzNDlhOWQxYmVjYjhjNTlhOWY0NzYzZjI1NjZhN2E1MTNhNmMxMWY1NGQxZmRjMTg2N2FiNzQxZjNjNgotZTJiNDRhYTk1NDc5ZTRlOTgxMzM1MDQ3M2JjNzg5N2I5ZWM1OTJmMDFmOTc2OTdhMTc5NjdkMzQ0YTRiYzlhNQotNjI3ODZmMjhmODdlMzYzOWQwOTE5MjJmNDk5NDY3MWIyMmVmZDQxZmYzZjZiOGE2NTExMTdkMGEyYTk3Y2NmYwotODBhNjljOTc0ZmIyY2NiMzZkZDZhNDg5N2JmODhlYmM2N2JmZDg5MmUzNWU2OTQwZTk0ODkzZTFjZGZkMjc5OQotOGNmY2YyYjM3MzdhNjIzMmU0NzgzZWI0YThhZTU2YjgzZWQ3NjYxMzc3YjMwMjI1YTc1YTFiOTBiNzMwNzllMgotNmFhMzNmZDM3YjgxZjdkNjBkZTYyOTMxYjZiZTlkMTYzNjdhNWZhYjFkMTRkMjgxZDNlOGQwOWRjNTI1ZjU0OQotZWQwM2E0NDlkZjQ2NTU4MDJiYzMyNjUwMTBmMjg2ZGY4NjYwMjc0MGQ4YTg2YWFhMjI4YjljNDdlM2U3OGMwYgotMjJkMjYwMGQ1Y2Q1NWEzMTE2MDU4ZGFhN2UzNDE3NDE0NGY3OGE4ZjcyZTBkY2I4Y2M2NGFkZGNjNTJkZjBkZgotM2Y4YzIxZDljYzA0ZTE4N2JlNTNmOGZlZDRmMzM2MzNiYTAzYWZhMTc4ZmE1Y2U3NjlhN2ViMGUxYjliZjViZAotZGUwZWE3NGRjOTk1OThhNjY2OTZiZjZkNTA3MWRhOTk1YTMwYjgxNDRhY2RlYTExNmNmYzQ0NzI1NWE5OWNjZQotNGVjMDFiYzhhMGIzNTVjMDg4MWY2ZTllYjQ4NzI1ZDYxZWUwYjI0NWUwZjdjYzM1YjllNzZmZTExZjY4MTAxNwotZjc5NGVkOGQ0YzRjN2EwMmUxN2JkMTZhMDIzNDdmMjgzMThjY2FhZmUwNTc1NzM0MDU4MTIxZTNhZDgwNjRlYwotYTAwODZhNThmMjE2MDIwYTJkY2EyOTM3Njk4MWEyNTk1YmZhYzJhMDM5NGQ0NDg5NDliNTJmZmI0N2U1YzVlMAotZDYzNzFjYjRhNDE3YWM4MzRkNmM5ZmEwMDE4YzVlZmIxNmUzOWUzMmM4NTA4OGIyNjZkNzRhZjU2MzBiMjU0NAotZDRjZjQwMzQ4MmM0OTBmODZkMzVmODFjYzQ0YjM0MjAwNDAwYzEwYzZkZmYwMzU0MjNlNzI1ZDQxZDJiNWVlMAotYzNmMDNhNjAzYTE2MTcxMzIxNmFmOTcwMzZlZDM4ZmY4ZDliMDlmMTg5YWQxOTFhMGQwMzM2OWMzZmNkNWEzYQotZjg4YTU3MzM4OTcxZDdiY2I1ZjNmYmY4NzM1YWQ4NDU5NTI0ZDkzYTkyZWFjMWMyYmY1ZjBlNmUxY2Y2NzVmMQotNmQ3MmIzNWNlYWYzNGQ4ZmFjMTc4YTFkZDgyM2NhMDQ0OGVlMWZhMmY2MTZiODAzYzM4Yjg5MjM4YWFhMWFlNwotY2IwNTdlY2RiYWQyODE0N2RhNDZhMzRiOGExZjFkMzg5ZTA4MmNjM2U4ZWIxYTdlNWMwYzkzMjM0MTgyNGMyMQotNTcwZTAwM2Q4YzExYzg3ZDcwODIzNzFkM2Q0ODA0ZGEzMmZkZTExOGM2YzViNWIwODgyOGU1NzgzMjAwYzZlYQotMGE3YWI3MzM0M2Y1ZmQ2ODFhMzExNmZkODE4YzcwNTRhNTE5OTIxMmViMGYzYTlhMGQ4N2JjMzY0NjcwZWUyZgotN2E1MDgxYTFlNDhhNTg3NDhkMjk3ZTAxNGRkNWRiN2ZhYWY3YTI3NDU5ZjExNTc0MWJmNGZhY2ZhMWIzOTVlMwotZTk3NDUyYmRhZmY5MDZhZjljNTJjNTkwODc0OGYxZTEzY2M4NWQxNjViYzg5M2MxZWJhNzI4NDU4YjcwOGY4YQotOWU4OTkwYTZmMjU4YmRhMDk4OWFhZDA5NTllNzMyNmQxZDZiY2NiNTBjNGZhYjE1YTZlYTNjYmU5NDcyNGZjMgotOGYxNzRkZjkzZmJmZjQxYWRiYjlkNGZhYzAxMjRkMzMxNTFkMDY3NTNkNGQ4NzlhYzRmMTVhZWM1ZDFjYzBiNwotYTllODYxZjc5MGExNmViMDgyMWIyYTdiN2I0MmQ2ZjNlMzg5YzUxYTFkN2M2NTI4NTlmZmJlNjY2NDZkNDE5OQotYTYyZWQyOGEzMGM4OTMyZGM0ZDI4NTVlN2U2MzExZDc5Y2VkYmE4YmVlZmUyY2Q1MjlmNGI0NTM4MmYzZTZlNgotYTc2NTlkYTliNzg2ZmU3YmMyZTQzMWVlM2YxMTg3M2FiMjcwOTIwMGI3MTUzNDNjYzI1YzUzNjVkMDZiZTlhYwotODI5NDU4ZmY3N2Y0ZDUwOWQ5YzM5MTcyMzdkNzU5ZGE2Nzc1ZTA5YzJlYWY0Y2U5NjZhMTQxNTdlYTI3ODBiYwotZTMyNDk0NDY1NzNjODJiMzNlYzVjYTE1MDAyMmE4MzMwMWYwMGY0MWVlYTM2OTQwNTliMTRiMmE5YWJjZWEzMAotNjVjZmQwNmI5ZGNlMzgyMzQ3N2JmODA5MzhkMzU1NDI3NjY2YTgyODdhNjVlMjMxYTIzNTdhZWQ4MGQyN2E2MQotNTgxNDBjMmNkYjFmNDRjYWVmZDZiNjI5ZmE2NjE0NDBjMzYxZGRlNzgxNzE1NDA1MjQzNmEzNmJiYzFiZjM4MgotZTMwMjg1OTc5YzQ1NjhiMTgwNDE3NzQwYTE3MTUwOTUyZTNlYjQwOTFmNTgzMDgzZDc1YTA1YTJkOTEwMDlkZQotNDZkYTM5Njc5NGRiYjUyODhlMmEyZTYxOTFkM2YyMmUzMzVmMDI3NWYzM2U5YWYyMTU0Y2RkYmNjOTliMTQ5YwotNmQ3YWFkN2ZkZWRiMjNjODA1ZjA5NzI1YjYwYjVlYzc3ZThhYzk5NTNhMzU3OGIyM2M2MDIzYTE5NmYzNTMzMwotYTM2ZmFiMmNhMTk1ZTM5N2ZjODIzMTg0MzRlOWYyODQ0ZDE3YmJkYzE3Nzk4OWZkOGFmNjFkZGI0NjUxMmQyYwotZjVkNzgyMTk0MWIxOGI3YzFmMWJlMTZkZjZlNmJlZDRhMTY1NWVkY2FmNjMwMGZhODc2NWU5MDNiMDNhOTVhNwotMGE3ZTZkNTU0NTdmNDUxYTgxNzdlMGU5YzlmM2FlYzhkMTc0ODQzZTNhOTllZDY5ODY4OTAxOWU5NmNiNDY4MwotYmIyNGM3MWUyMmY0ODk1NjU2YWNjNjdlY2Q2NzE5NjNhYmVmZmVmNTM3MjRhNjQ1Yjk4ZTVkMjY4MDI5N2ZlNQotMmQ0M2RkZmRmZDU1MzZmN2MyMzlhNTA5MjA3NjUxMmEyYTk4MjFmMTIzMzhlMzg4YmQ1MTE1ZmY0ZjRkMmMwMQotZDc0MWY4MjE4NzQzODA4Mzg5ODhjMTdiZDk3NWZjMzg4YTI1M2M4YzAwNmM2Nzk2M2NlM2M0NDA0YmFhMDc1MAotYzU2NzYwZTM2N2I1NjZlZDEyOTkxMWViMDU2YmVlNDJmMTJiZWM5OTgwMTc3ZjFiMzcxMzA2ODA3M2NmMzRjMwotNzBkNmVlMjAyYzQ5YjQyODA5YWZkMWY4Nzg2ZTE0YTZjNjM3OTRlYjJkZGY0OWQ1YTA2ZjM0ZGUyMzM1NjI2MAotOTZlYTI2ZDU3Yjk0YTkyOGU1MzEyMTQ3ZWNjNDBiYmM2YTIwNGM0YjNlZTlkNGY0MzYxZjhkZjllMWMxYWU2OAotZWY2MGZiZWI5OTMzOTg0MmU2NTI0NzkzNjJiMTlkMzNkZTA4MGY5NjI1YjVjMTY3YmYyYjExNzc1OTI5YjEyYwotZmE5ZTlhODljZjg0ZjI0OWExMDc4ZjU1ODQ0MjVlMmFkOGFjODJhZGMyOTg4NjdlYmVhMWVjNmMwNDI4ZmRjNQotMDFkY2NkZTM5ZTVmYzE0Nzk1OWVhMjU0MjE3MTUzYzBiNTUwZWY5NmMyMjk2NjRjMjIyODZhNzgyN2ViYmYxNQotYzdmY2RjNTdkYmI1OTE0YmIwNDYwYjZlMGMwZjU4Yzk4YjI2NDkyNWQ5OTk2ZDllMGQzMWZiNzBlNjZlYjllNAotZDkyODAxNWYyYzEyYWNkYjdkNzdhNjY0MDhmMjc2N2MwNWY5MzI5MmZhZTQ1NDkyZTVkY2VhMzM3Y2JhYjM0NgotZGE4MmM5MDVkZGIwMTZiYmE1ZDMxZTc0MGI4MTNjM2Q3MDlkNzhkN2FjNTAzMjZmOTBkMmU0YWY0YzFkZDg5MwotZTI2Zjk3NjdkYjQzN2I1MmE3NThkNjIzN2U1MmM0YTJhNzE2MjRkMmIxZjc5ZGJlODNiNmI3ODM5ZGViNDEzYgotZjM0YjkxYjNkZmJjODhiN2IwYjc4YWI1Nzk1OTRhYzNkNTc0NzEwNzRmNzhlNTlhNjRkNzViNGU2ZWQzY2YyMgotMzNmNmViYzg2ZTI4OTQwMmRlYTM5MDdiMGEyNDA2MTg4MjQ2ZThlNDQwNTRmODE4NTRkYWUwZmVkYWVmODk1MgotYzA1YzhmNWM0NTkxNjczMTAyYTBmMjRmN2RlZWE3ZTE5ZTI3ODYzYTI3YzAwYjUxMDY5MGIzMzE0MTNkZjgzOQotNWFlNWEzN2Y4YzZiMjUwODIwNzNiY2VkZTdjOGVjZGJiYmEyYzA5NDY3YWZjZWJiNDhmNGE0ZTI1Y2IwNjljMgotYjdhY2MyNjVmOTg4OTU1YTc5YmE5NWIzZjRkOGM2Y2Y5NDE2NDk0MTcyMzYwMTkyMzQwOWU5ZDgxYmE4YWVlYQotNjRlOGYxZjA5Nzk0Nzc5YTEyNjIwMjBiYzMwMWIxOTY2YTc4OWZhMmYzN2Q3NTIxZGI1MzZjMGM4ZGEzNmI3ZAotOTA2Mzk4YThhNDEyMzBjZGE5NzUwODhmYTVhNjA3MGQ4ODg4MmRkOGRlZTdhZjY5NmVmNWJhMmM1YTUyNWQ2MQotZDM1YTY4MzQ5MDdjNDg0NmNmYzY5YjE3ZWRmNzdjNThlNTAxYTA2MDBhMDRhYjRiMzZkOTAwN2FjNTRjY2ZiNQotMTRhNDcxOTNlZDAxZDRmZDVlM2M4Y2YwNGIzZTM4YzQ4OTVkZTNlZWUxNGRmYmU2MzUxYmJiZWE2NTMwMDQ2ZgotODllOTEzZDAyMmMwY2FmZTUyOGEzM2M0ZTg0ZDQ2NWZlNmZiMDMxYjQ4ZDkwNGM1MTIwZDQ1MmE2YzFmZGZiOQotMDhlMjQyYTA1ZDAxNWE5YWIyNTM2ZGJhZGYwZmZkMDE5MGQzNTVlZGNkMzE3NGNmZGRhMDk3NGUyYTMzY2JmYgotMmEzZDU1N2VkMmY2ZjI4NGNiM2M5OTBjMzA3MWI3ZWZjNjc4YTVkMjc1MThlYzE5MTJjYmFhODkwZGQ2YmJjOAotODI0ZWIxZTdhYzYxMjdhNjdlNjg0MjhmZmQ2N2U2NTBmZDQ0YzllYzQ0OGEzMDkwNTZjZTQ1ZTRhNGEyYjc2OQotODE4M2FjNDE4OTgxZjYxN2RjNDY5YTU2NmU3MTNhZWRjZTJiYmM3Y2RkZGYxZjdhZmZjNmQxMWU5NDc1NzEzMAotYzRlYzdiNTVkYmE3MzU2YjIxZTUyNjdjNWVkOTlmNDI3YTE5ZGFmNDc2ZTQ4OTkzZTg1NmM4NTJkMzVjYTFiYgotYjMyZDU5Y2U2ODhlZDE4NGZhOWVhMTYyMmMzMDZjZDc4OGQ2MzcyYzViNGE5NGIwMDFmMTk4ZTMzMjA5YmI1OQotNDZhZjFlZjdiMDY2ZDA0OTgyNWJiNzgzMThhMzhjYTIzZWM5YTkzYmM0YjRiMTI4MDZjMWEwZTViZTE3OWUzZAotMGMwZTViZGE2NTRlNTA2ZTc0ZTBlZjFhOGIxMmMxOGJjM2YwNDFkNWU2MWE4ZjAzNDM2ZjE0NmU0ZGFhZTNiOQotNmI4YzdhZTEzOWY0MmU4ZGNmNzcyY2I1NzQyMTA0YWFmNzc2ZjNkZDE5YmFkOTIwZGY3N2I0MmFhYzY1NGQzMgotMmRlMzc3OWM0MjYzOWI1MDA1OWQxM2I4MWMzOTA0ZGY3NmEwYWI0NzA0NmEwMTMyMzc4ZjkyMDEzNTlmNzFjOAotMTJlYjQ4MzdiY2JmM2YxNDk4YmY4YzdiMjI5OGU2YjJlNTI4Zjk4OThkZGZhZjc1YjUzNThhNzNhNjdlNjMwNwotNzA3ZmIxM2IyMzYwZmZkYzU2NTllZDhlNzBlY2JhYjcxMWQ4OWY4YzY1NTg2MjJkNjc3MzdiMTEwOGFkNTEzOQotYjEyNmE2YzdiZThiMjU3MDlmYTdjYzJhNjI1YTA3OTZiN2QwOGIxMWYwOThlZGI4MGY4YWEwOGE1NjY4YWU5MQotNGZmMWM0NzBkYmNjNzc3NWE3M2ZiZDg1N2NkYjlhNWQwYzEyMmQ0NzY1Y2FhOGQ5ZDM1NTE0MzkwYzliMzM5YQotYzA0YTc4MzQyZTE4NmU1YzQ5ZGJhNGNkOWFiMTY1YjRjMTM5ZTc2Yjg4YzgwN2NjNGI1ZGI3YjUwNjNjMmY4MQotMTY3MjE2NzA0OTdhMDE4M2M2NDNjNWE3MGFiMjQwNWQ1ZDhiNjc3M2E0YTJkMzliM2NkMGQ3NjNjMTJlYzI5NgotOWIzYzNhYjkxNjY1NmZjY2E1ZDcxNWU3ZGFjNzk2OTM3YjJiNmQ0YWRiMjUxZmI3OWIxODNlNmVhYjIzNzk2YQotMGJkMGJmNWJjYWIwMzUyOTQ2N2EyNjU3ODE3MTZiMDE4NjU3M2I4NjJiMmEyMDU3YzQyN2Q4NWQ3YjU0N2M3YQotOWU3ZmRmN2E2NzQ1ODdkZjcwOWZmZDBhNjNkMDg1MmVhMGQwMmMxM2U4MDM4NzYyZGU4MjM2MjczOWRlOWVkZQotMGRiNDI5NjQyMWQ0NjJkODI4NmUyMTUyYWE2NzI5OGM5ZmY1MTFlOGRlMWEyNjA4OWQzODNiZGJiZjI3MDY2YgotZjMyMjczOGNkMmNmMTk4YmRlZmU1NjZjZWQxODA4ZGFmYzAxNWM4YWU5NzIxMTc3NzY1OTRlOWM1MDZhMzIyMwotZDRjZWQ0OTVkNjIyOWM5YmVjMTdjNDcwNzE0MTVmODA0ODJmOWVjYWFlYmE2YTEzNWQyMTczMjU0ZGRlNmJlMwotZjBjZTlhN2E4MWVjMmU5YWY0YWRkODU1YjA4MzA5ZDM0ZTc4MGFkZjBmN2M5MDI5ZDJjZTBkNWY4MDdlZjBlZQotNTMxMjE3NDUwYzgyYjdmMzY0MzQ1Njc3MjU0OWFjYzJiYTZhNTkzOGM1MTdmZDc3NTExNGVkNDRlYzY5YTQ1ZgotZDkxMTBjOTY5ZWRkOWU2ZjhiNGJmYjk1M2FlZDc5YTFkYWY0N2M3MjM4ODcxZTRkNTM3MTAwYzRkODk4MWQ4MgotYTIzNDRlYjdkZjViYWViYWQyOGUzNDg3MGQ1MmQ5N2E2NmRmYzc1NzQwY2RhNmI0MDNjMTk2NGMwZmViMDM0ZAotZDNlNWM4YjRhMzdhY2I5ZjU3MThmN2I2YTNkMjY3Njk0ZGY4YmFhYWJkMzgxNTRkMTZjMTYyZWJlNDNiNDczZgotZWMxZjA2MDg0NmVlODQwMmQ2Nzk0MmVlMDgwZGFjOWIxOGViOGIwOWQzODRhYzI0Zjg1ZDI4N2VhM2UyYzU5YQotMGYyYzFkNmJhZDM2ZTI2MmUwMzFhY2QzOTlhMmI5YTc5NDA5MDhkNjVmMTQyZmIyMDk0MTZlODkxYTZhYmVlYgotMzg5ZTJkZjAwMjQzNmQ0M2ZhMTE2MWI3MTM4MmQxODQyNzg4YWYxYTllNmYzOWVkNTZlOGJmNjM5OTFmYTc5MAotYTUyY2UzMTJhYWVkZTkwZGYxYmU1N2UzYzExNTFkZDAzNTBmZmU3ZTQ3NmNhYzVmMzRjZjg1MDViY2JkMjVmMwotMjlhZWVkM2E1MmJmZTFmMTAzNjZkZmM0YTE1ZmUyMTJiMWNjOWRhNzZjODI3MmQ3Y2U4NWMyOTMwZDc5N2I4MgotNGE2N2RlNTVjNTBkNDVjYjM2NDBkYjJhNzllY2I2NDdhMmZkMmQ5NDgxMTRlZWE5YmFkNjMxMjMxOWY4ZGI1YQotYTI5ZDYwYjIyNDM5ZDQ1NzYwNzUxOTA0ZjVkZTVkOGM1YzlkMDIxMWFjOWQzMGI5NDU5ZGQwNWVlZWEyNDBmMAotOTdmMGMyMzkwNjhjNTE0YjgyMTM2MDkwMTRlNmJjNTA2MzNkMGVjZjc3NGMyMTBhZWU3Yzc1YTViYWMyNGU2MgotODEzMTgxZTRkMDQwYWQxYmQ0YmQ0ZWM3Yjk5YjhhMzdhYmQ2OTRjYjY3NDgzZDFjNWRkNWMxN2Y1NGVhN2YyMAotNTBkMGVhOGNlMWNiZmE1Mzk1ZTYyZTEwYzVkMTdhNDIzYWM3NmJmYmEyNWEzOGZkNDc0YjViNDExN2NjZmNjZAotMzBhMmZmYTQ4NGFmNDI5MTY4YjFiNTY3OWI2NzU0Mjc1NWU5ODliMzkzODdmY2Q5YjFkOGY4YmEzMTNhNzU4YwotNTg2NDFmMzRjY2JjOGYyNTU2YWQxYjE3YzMzZjYwMWVhNzZhYzc1ZWU2YjY4MWFlZjEyYzA3MTJhMTRlN2I4ZQotYThhNWJkMzE2MjIzZDUxNDJlOGI1M2E2ZjgxYThhNjA4YTNkYzMyZjIwYzVlNDE3YTZhZmYwZjcyNWRkNzg2NwotNDI5ZmRjZGMxNmEyMmVmNjExMmZkZmM1MjgyYzYxYTFhYTliMTM0YzFiNDIwZGU3YjM1OWJlODM3M2NmMzcxNgotZDdiM2FlODMyZWMxNWUzMDVmZjZjOGU5ZDQxOTdmOGIwMTUwYjMwZTFiOWU3ZjE1Mjc1YjRiN2E2NWRmYzYxMQotOTdjMGU1ZjkxNTYxZjNlNjIwMzk1MGVkZmQ2Y2VhMjBkMDY0OTA3MTQ0MmIyOTE2ZWJjZTVmNGQzZGE3MzkxNAotNWEyYmZlNmQwNTU1ODBhZjEzNGI3ZGRkYmI5YmFmOTQ3NzQ1NGVlZThhYmM3YjMzZWVhNTAwMTAyZTM5NTIxMgotNzhkMDhjMDhhZTQ1NWJjMGZjNWJmNWEwYTU3N2U1ZjVmYzcxNDkwYWRkNWE2MjNjY2NhMTM0YjYyYzE5ZDNhNgotNDAxOTQxNWVjZWUwMTY4NjIxYmUyYjQ4NTZlZjNiMzk0NGMwZGI5YWVmN2QzZTkzM2EwMzQxODQ5MzRiZmQ0ZQotM2ZlMjFkNGQyNjI1ZTY0NjRlOWZmOWNjMjVlNzkzZWI3Yjg3MDFkM2ZhMDdmZjlhMzAyMGY3NmQ2NjhkMDgzZgotNTljNmY2NzUxMTc5ZDYwZWIxN2I5YzRlMzVmMzgxNWFhNWVkMzc5M2EyMDMwZDMxN2YxNjEwMjE1ZmE5MjBhNQotNWZmMjlhNjdlOGU2ZjE4NmYwMGI1Y2UxNjQ2NzdlYjE5NjFlZWVlMzViNWE3ODkxZDQyOTY5NjdhOWQwOTZiYwotNzZiMGQwNzJlYWJhYjdlYTc1OGRhODlmYmRjMjViODI2MWQ5ZmEwODA5OWI2ZTg0NDk0ZmUwMzRjM2VkZDVmMAotYzQ1ZTY3ZmZlNTg4YjI1MzJlZmIzZGQxYzM0YmU5Y2UyOTk3MTJlYWMwZTRjNGNiZWU2ZjMwZTk1OGM5ZGVhMAotMTVjNWM0ZmVmN2NkNDQwZWE5ODJmOTFjMDc5Mjg0NjM4MDdmZTA3ZjI3ZWY2MWE1ZGVlZmE0Nzg3OTg0NzgzNQotZDRlNTBhYTFkZDBhZDJiM2QwMTA2OWNjN2I0NzQxYjNmNjgwMTMxZjdkNWNhZmM2YjM5NzhjM2MxZDYwOGFjOQotZDI0MzQyMDkyNzQ2NjI4Y2I3MWZhMDFlM2M2NzVmMTQ0NjNmOWVkZDRjMzM5YWRhNDFiYTRiNmEwZmFhNTExNwotMjA0NDYzYmM3Yjk0ZDAxZWRjMWIzZDU3ODE4OThjODU1MTY2MTdmMjliNGRjZTJkMzJjMjY4NmRkYmZkYjgzOAotZjY3YjA5N2JlNjAwZjZhZWVmYjZlY2E1ZjcyOWI0NWJlMzA3MjMyZjkyNzMxYzEwYzMzMzA2NzJjOTU4NDE0MQotNzE5MmU2MmEwZWJhZTgyOGZhZGQ3N2JmYzJlY2RjMWU1NjJkYWY1NjYwMzU0ZTBlZGQ1YjcxNzdiZDhlOWQyNAotZjc3ZTUyNmU2NDkwNDRjZmQ0OTYzM2Q0OGNlYTY0ZGU3MTRlNTk0MzhhZDk4MGUwYjFmZmQ1MWVlMTk2OTJlZAotNjY1ZTJmZjMzMmJiNTRiZGJmNzUzMTZjNGIxYTM5YzUzODMxMmZkNjQ5ZThjNDYyOTk0ZGM4ZjE0YmYwNTZmZgotMDgwNGRlNzY0NzRkMGVlMDg0ZTM2M2M4YjcwODFiMWMwOGUyNTJlMDVlNDk2NzllNmM3YWM4MWY0MmU5MzcyZAotZTVhZjY0ZjU5YzRmYjYyZjNlMmU3YjE2ZmY1M2JiYmMwMDZlM2Q5YjBmMjk0MzRkYjVhNjMyMTA5NDQwNTNkYQotYWI1NmIxMDc1YTBjMzgzMjIyMDc1MmQxMDRmYTE3NzBkM2FjZmJjMzE3MDRhMWI3ODUyYzA3NzA1OGY2MTZlMAotYTQzNzNjMWM5MmM3YjYwNTY2NjkxNTczNTAyZTlhOTJkNTgzYTMxNjNiZjMxZmMxMDBjOTJlNjQwNWVlNGQ1NAotMDlkMjNhODMyMjViZjZkMWRlMmM3YmVhZDAxMWFkNjQ1NDdkNjgzNWFjOWE3Mzc4MDMzYzg1NTkyYTBjMzQ5NwotYTAzYzE2MTkwZWJkYWJiNzkyY2EwYmY4MDNkY2JjM2JkZjBmN2E1NzFhYWUwMGY1OTZlZTAxZWI0NzZiYWQ5NwotM2EyN2EyMTlhYWZjYzBmYTI0NWM2NzMxYTJlOGU1NjFjNjNiN2JjMzE0N2I5NDMzYTgyMDNmZGRiNzEzOGIwYwotMTYxMWM3ZTYyMzc1ZjJhMTE0ZjdiZmFiMzZjYjFhOTRiOWUxMGNhNjM4MzNhYjI0NWFmNTk1MjE3Nzc5YmM3ZgotZDEyZTY4YTY1OTE5ZWNhNGZhZTcyZjc1NTY2OTU4MGFiMDAwOTQ1MmJmMDg2ZWE4MzVmOTFhMGQ1YjM4NGI0MAotODJiZDUxNWYwMDY4NjViYmVlMmM1MGRiNDNiNDQ1N2E3OTM2OTM4MDZiODZmNjhhMmIyNDE5ZmMzZTkzN2E3MgotYzZmNDE0ZGUxNDhkMmE2MmE3MWVlOWZjYWI3MTBkNmRjMDhhZDZjNGFjNDQzMzY1ZTdhNzg4NDNmODBjZDc2OQotYzU2ZWZlY2MyZDYzNDg3YjVmY2VhZDFhYWFmOTQ4MWE3MzYxNzIzMzg4ZjViNTFjMmQ5Y2VhOTA0ODZjYjlmOQotNzlmNmY1ZWU3MThkNGE0OWVkOTFjYjA5MWFkY2JkMGU3YjNhZDk2MzM2OGM5Y2RlODc3NjY2YTc0MmNmNTA3MwotYWFmNzk0MjhiMzA5NWY5ODlmYzFmYTZmNWFiMWQ3MjRkOTJjMzNjMTMyNWMwNWEzOTQyM2I4YTgzYmJhOTM1OQotOTc3OTNmZGEyODA3NDBhZWI2YmUzMTkzYmU1ZjRmZWVjYTJhOGYyOGVmYTljOGUwMTZmMGZjODdjOGYzMzkyZAotNTcxNWI5YjlhN2FhM2M2MWFjODQ0NjFlMmMzMjIwMzcyNTY4YWFlZDg1MWYxY2M0MDQ4MWUzMjYxOTdlY2FiMQotZjNjZDc5MmZiZWIyN2E1OGE1Zjg4OWE1ZjYzMjE0NzMxNDhjNmQzMTFjYTg5YmU5NjAzOWFjOTQyMzcwMGQ4NwotYWIwZDdlOGI4OTcxN2QxYTYyY2ExNGUwMWY1MWJkNzc4MzJiYjZkYmY3NmIyMDFhMDRkMjIyODUyMDUwY2M1YwotYzZhNDk5Njc4OWEwYmZkNmNlMzY0NTkyMzAwMjgyZjEwMmU2NmY0YWU5ZTUwZDYwZDg4NmNhY2IwOTlkZjk2MAotYzQyZTIyMTMwMTdjNTY3ZjI3MzI2ZTY3N2JiZDA0YTIzOTYzMTk1MGI1NjZlYjM5ZTRmNjc1ZDJlOTg5ZjU2ZgotNzRkYTNhMDQ2OWQ5ODhlYTAxMjJlY2MzNjcwZDQ1OGFkODJiY2Y3YWQwNGJmM2NhOWIwMGQ3NmVlNTY5Zjk4YgotYTM3NTI4NWExYWJiZmYyNTNiOGYxNzlmNzFmNDk2Mjg2MzMwZTM2NDA0OWM3MmVjYWQ0ZDgyYTkzM2FmMDE4OQotMDNkZTVlNGFiY2ZjNjM3ODAzMTY3ZTU2OTExZjgyNjczNWE3YzQxZTc5MzZmNGJlYTE0ODM5N2JjZmIxOGNkYQotZmIwMzE4MmVkN2M1MTFhYTlkZTBjNmU2YzgwYjI0Y2I1MzVmMDNlZTE2YmJjYjUxNGQ2NWNhOWFjMmVmMTVjMQotYWExODI1NzU5ZmM0ZWNhZmM3YzBkOTQwMWYxMzliM2YyMGVlOTE1OTU1MjY4NTc4YTkzM2IxODRhODZmMjAxNwotMDNjYmY0ZGI3OWJlMThjMDljOGNiMDdkODU3MzliODY1M2FkMzdiOGMwYjY0NzE2MWU1Y2FjNzQ2YjNjMGI5NAotMmFlMmEwNTQwZjM4ZGJlZTEyMmNhZDBjZjczOWVmMWI0OWI2ZGJiZDVkMDhjOTdjMDRkY2EzMzAzMGYxODcxOAotNTgzMzM3YTAxNTM5NWUxZmE5MzJkZjAzMjhjN2RkZDk1NDZiNzgxMmJhMDZkODJhMzVmODExMGQ1NWZhMzc3ZAotZmE2ODgwZjUyNjQ1ODkwZDU4NDc4ZTRlZTNiNzJmMDhiMmQ3MTEzYjI0NTM3MjliMzdlNGZmZmFkMTNjNWY2MgotMDZiM2M3NjdhNDVjODBiZDQ3OWQxZTI0ZGY2NjBlNDZjODNjNDgxNjZmY2NlYzEzYjljYzRlNjJhNmFhYTgxMwotN2M0MjQ4ODVmODNkNzY0N2I4MDg0OWMwYTc3YmVkNTYyZjEzNDAzNGNkYTlmZDZlOGQ3ZGVjOWU0M2YwYzAxOAotOTI4N2RlNzU5Njc2ZjIwMDA1NTU2Y2VkYzY3YzMxNTA5YThiZjU2YTVjOTcyYjVkMjQ3ZjIxZDhiNmE1ODk1MwotN2Q5MjEwMTg0MTE2NmQ3NzgxZDRkODBjZGMzNWNhMzgyZDhjMmRhYzNlYTNhMzRmOTNkY2UwZmY4Yzc2ZWYxMgotMzkwZDVkNTdkODhmM2JjMDBkNDY1MTNmMDM1OGM0M2EyMmM0MTNkOWE2YmE2YjNlMTM5MTM0NzRiOWU1M2JmNQotMzExMzZhNWVkZjkxOTI5NjVhY2E5OGUwNjMxNmMwNWZkM2Q2ZTg4ZmUwOWNjMDhlMzI3ZWQwMjdiODFlYjE0NgotNjNlMzA3M2VhNWQxZDU5Yjc0MTQ5YzVmNTI0MmQzY2IyNTNjMzZhODRjYzgzN2Q3NmIyYmEzNjEwNGFlZjBkOAotZjlmNDQwNGQ2M2M0MmYzZDYzNWRjOTE5NWVhNTgyYjU4OWNiNWI1NGFiMDFhZjlhZTUzZjNlYzk1OTkyYzA5ZgotYTViZmU4NmU2ZWY2OTQ4YmMzODc3MzBhOWNmZjBjZGQzNjU2NTBhZWFhNWUxZDUyZDhmODhkZDQ5ZDM2ZTZmMAotNzg2YzdmNGVmOGMyYTVhMjQyZTg0Y2ZkNGRjNTBhZGZlYTBjMmFjMjc4Mzk2OTliOTJmYThmZWI2NDM2ZjJhYQotZDAyNzEwNzc3MDgzNzIzY2E3ZTQ4MWY4M2I2MzdmMTlmZmI3NTExZGUyMjNhMGEyNjEzMjQxODllZGIzOGQ4OAotNmZmNWNiMTM1NmU4ZDU2N2FmZTc2Zjk2Y2I3MmY4ODAxNmUzOWU5OWFmNmFhZDQ5OWFjNjBjOGEzMjA1ZjI1MwotODJjMDMxMmUxZjJiNmVlN2IzN2QxNzhiZDRlNjc1NTAyNzZhNzQyMWI0ZjUxNGZkMjkzYWQzMmJiMTEyMTIzNAotYmZmOTNkMjI5N2RkMzJkZmRkN2U3YmE5MWMwNTQ0Zjc5ZGZlYTk2NWY0ZjY3NDk0ZjNkZGQ5N2Q3ODgxZmNmYgotMjBlZDcxZjZiNWNkMjdiMTJkMDQwOThhOTI5M2UyNzMxNDg1OTBmYmI2NWY2ZmJhNjNlN2JjZjE0ZGZlNmYwYgotNTFmODcwYmUyMDE3NGY5OTEzMjlhNWVmM2QzYzlmY2UyMDY3OTlhMDFjYTEwMmVlNzk5OWMyYTk3YTE5ZTc5NgotYmI1Zjg4OTIyYjc2ZjkyMmQzMDJkZDgzM2VjNTMyMDIyYjEzZWM1NzNiMzc1Y2Y3NWU0OTcxOGIyMjc4ZjJiMgotNGNlOTg2NWYyMDkwMmQ2MzU4NDQwZWZjOWVhYjZlMGUwNjlhYzdjMTkzYzg4YTA0NGNmMzNmNmEzOTM4OGY2YQotMjk2ZjQyYzYzNzUzM2NjNTAzYWRmYzcxYzVmODk4YzQwOGE3ZTU0Nzk4NjhlYmQyOWM5ZWQwMjkzOWZmZDQ5YQotMjgxMmJhYTM1NWJlNDI5ODU4ZTBjNmFhYzYwODE3ZDY4NDc3OGI3MWZiOWE3M2U3YWM0ZmNiMDc4YmIxYTc1YQotYjQyNWVhMDlhZDg1ODVhYjNmYWQ3OTQyOTMyMWE4Zjk2ZTJlMWYwMmFkNzBlMmZkYmVlZTYyNWJiNDM0YjBiZQotZjhlYjk1N2Y4MTdjNTY5OWM3MjkzZTQ3ZGFhNGVhZDZkNDdmMDBmYmI2Yzg2NzRlZjFmNzcyOWNkYjE5NzQ5YQotY2E5Y2QzOTlhNGFiY2YyOGZmNzFlZGVjZWNiMmE5NTVmZmJlOWViZjRiZGFiNTYyNTZlN2NkNjYzMDRlZDRhYgotMWIzZmRkZjY0MzEyOTZhYTY0MWE4Nzk1YTQwMDZhMDQ5ZmQzYjM1MDc0YTg2NWM5MDE2MzZiNzA2MTllYzI2ZAotYWFhYThjOGM5MDYwOTM4MzM3MTQ0MjA5ZjNlM2RlMDFlOTIyOTNjYTg5NTgzY2JiNGMyZWRlYzA3NGJiNGMwNQotMTUxMzBjM2ViZmQ3OGRjNjg3ZjBhZDA5ODFjMGQyN2ZjYWViMjhmNDcwMTkzY2ExM2Q5ODI3N2RiZmNmYmYzOAotZjgzNTNkYmQwNDM4MGFiZWY3MTc2YjBiNDE5OWQ3MzE5ZWJmZDg4ZWNlMjE5YmE2ZWRlYzU5ZmQxNTg5ODdlOAotOWFkYzAzNWI4ZmIyMTQxYmUwZTBmMjVkNTZlMDc3ZTU5OTJlNGY5NTY0MGFiY2E3YWVhYzNkOTI5YmUwMmQ0MAotOWE4NmRiY2MwNDM2MzdjNWUwZjFhNWExMjU3OWU1N2IwNDJiMzg2YmU5NmM5YThiM2M0ZTc5YzhkZDI4YTUyYgotYTExNTk3Mjg3ODVhNzVmMmU1NzliODY2OWEzNmE5ZjllNzgwN2ZmOWQ1YWEwZDg2NTI2MDlhNDcyNjRhMjAwMwotZmQyMDJiYzhmZTljZjgwZTJlZjA1ZWE1ZTVmYmFlNjc2YTc3YmJkYzQzMDhhYjkyZWIwZGQ5YTk2MGY0ODY1YgotODMwNWVlZjQ3YWJjMjM1MzI4N2Y1MmM3NjZlYTFjMWI4NmZkYWNmMDk4NmU1NmE4NzQ2MmFjODIwZTYxMDUxZQotN2YyMmNkOGVhN2RjYzc4MzhhNDVhMDhlYTNmZWMxMDVkODBmZTVlZTVlODc3MzJiZmMyZTlkNjY0YTdhYjQzYgotMDUzMjE1NTdkNjljZWVkNmI2Nzk3OTdhNjdhMGMzOGI5ZDEwMWJiZTg3MGQ3NDY1NjgzMjVjNTJkNGNhMjU1YgotYjIzZjk2NzJjZTJiNGUzZmU5NDRmNWRiYzM4OGU1NzVhYmQ4OTdkOTY5YWMyYTgxOTE1ZTNmZWMzZDc0MDllZAotMTRkZTFlNGNmNzczN2I2ZTQ2ZjZjNzExNDJkYjA2YTc5OWE3MjA4NTM5YzY0OTI0NGNlNzNhNThmMjI0N2U4MQotNGYyNDFhYmE3NGQ2YWU1OTNkNDdjMjI3MTM3Y2NkZGNmMWY1MjNhNzMwYTIzNGM5MWFjM2FlOGE0NTZjYWQxZQotOTFhOTQ4MGM0MzhiMDQ3YmU0MGJiMmU0MDM4ZjhlYmMzNGVjYzNhODAzNzQ1NGI3MzQyYzMxNzg3MWZjMWQ5NwotNDJmMjZlM2Q5NTZkYTc2NzlhMDcyY2FiOTZiMjdmYjJkZGY0ODBkMmY0MGVkODhiMmU1YjBiODI4OTJjODMxNAotY2VjOWJkYzEyNDMzMTU5NzE0ODkxYjg1OTFhMDUxY2YyY2NlNzU4MGFmNzRkNTA5NmY1M2E2NTM0NzQ4OGJjYgotOTQ4ZmIwMjhmMzEwNTc1ZDM0MjkxMjNlYmVjZDliMDlkODNmMzBhYjhjOGFiNjVkNDlkNjkxZmFjMjdlMzYxMgotNjZlYTA4NjM0ZjRjN2QzYTY0OGVjMDY4YzJjZjMxZjExNjk1MTkzNDg2NGRjYTI3NTVkYWFjYjZkMjI4MDNmMAotOTQ4ODExN2VmNjZlOWIxMjY2M2RhOWQwMGEzZWIwMjgwYmE0MTJlNGI2ZjYzOTdlZTc4MDBmMjUwZmJmYTAyMwotMzE2MmFkZGNjYTRkYzIzMTkwYTUyMzk3Y2RhMzI4NTI5MTg0MmEyYjI2OWM0ZTA3ZjE3YTAwMzVmY2JlNzg1YgotNmE1NzBlNGI3NTY5MjY1OGVkNDdiNmRiZjI5N2FkZjFiM2IxNjQ3NDBkMWU4NTFmMDhkZWNhOWMwNWEyNjNhOAotMzM2NGM1NDRjZWNlNzA2ZTc3YTMyZjZkNWQxMGY4ZDQxNzBkNTI0NmQ5MmMyYzlmYWU0NTdlMGY1ZTRlY2Q0ZAotMDhiNGVkZmQ0MmExNzkxY2NhNDEwNzhkNWU1MjA4MDc4MTcyMDYxOTNkOGE2NDllYjM5YjY0YzgwZTEyNmZlYgotMjQwZTE3ODRkYTNjNjYzNzgxOTY4MjgxMDRjNDllNWZiODY0NzVhODBjMjFkZTcxZTBhYTM2YWM1ZTUyOWFkZQotNDI3YzAzYzIyMzZkYjBkZWNhOTljN2M0ODZmZjQ2M2E3MjcyM2VmYjUxOTI2MzkxNmU3M2MyNWRhNjI1ZDBmYgotZTQ1MjU4YWQyYWJmMzQ0NWI3MmNiZjNlN2U2NGQ1MDcxOThmNjY2ZWRlYzAwMmUyMzNjYzBhZjZhOGMxMDk1YwotM2NkMjMyZTJlYzUwYjJlZGUzZTA5YjYxZTI1OTk2YjRhNjRjMGVlYzlkNTUwMjViMWY0N2U1M2UwYjEyOGJlZgotYTM0NjQ2YjRlMmMxMzY5OWQxMTJjOTU4NTkwMDU4ZTZiNjA2Y2JkOTc4Y2JiMGVmNjllZWUzNTBiYmY3MWZmMQotODIxM2E0MmQxMzVlNzdlMmM1M2E4MTIxYWEzZGQxZTkwM2RjMGU5NjE4MTBkMTAzYmQ3MGEyYjQ0OGYyOWVjNQotYzNkOTA3ZDcyNDNkNzZjNmFlMDRjMjJhOGZiYzZjMWEwNWY5YjllYzk3Y2JiMGU3NjkyOGY0YWEyNmM5MTNlMAotM2Y4YzM3MWVmYjYxZjM3MDc1MWVlYTZhZjI1YTNkZjRhYjNkYTNlNGFhMjYzYzI0NzczNDNlNGIxOTkxNTIxOQotYzRjNTJjZjQzZGJmMzczYzMxNmI4MDYxOWY0NzlkOWI1MzFlNjJmMjZlZjlmYzZkYTEzZTljZjBiY2U3NGQxMwotYzI4MzJmMWM5ZDk0MzI0MzdkMjUzZGNjZjczY2Q2OTkzNDI1MjFhM2NmZThmODVjY2RjZDIzZTliMjQwYzk2MQotZmNlMTVlZjc3ZmFkODQzODY3NGI1NWRhNjM4ZGYyNDkyYjI5ZmMxYTAwMzg1OWYzODJhNzc2MjYwYWU1MDY3ZgotOTNkZDE3NjE4MWMxMGM0YTQ1ZThmMjM3YzVjOTc4MWUwMWQyZTFlMDg5MGUxYTZlNzVlMmJiZmRhNGQyOTYxMwotZWZkY2RmYjIxMzE3ZDc3MGZhNmMxYWMzODAwZjMyOGJkYjgyYjQ4YjczMjBkZGNmNjRhZGQyMzM3NDk3MWFmMQotNTA0NzBmZDAwMmMwMWVmNDEyYzViYjQ5ODQ3Mzc4NDBkYTVjOWUwZTRkNGIyYjc3NDcwNTZhMzg2NWFmNmRiNAotZjRiOWNkODRkMjdkZDJlNDVhYTBkOWYzMmQwY2Y1OGE1ZjFiYWEzNzQzNTkyMjNjZmRkMDdjMTgwMTc2NjBhMgotOTIyNzQwNGVlZjBhYmJkMGUyOWJkODY5ODc1MmU4NTQ0OGE1YzNjZjU5NmRjODA1YTg3ZmY5MDNmZjg5MGU0OAotYjc5NzE3NjRmY2Q4ZjkyMWVlZmNjNTViMmQyMGNkNTkwOGE2ZmEzNWQ1NmJlYTk2YTM5YWI1MjFkOTg1YzUwYwotNGUwMjEzYjMwMzI1ZDI5NWEwMGQzMmQ5N2U5NTY0Njg2NzEyMmRiZWYzN2EzYzg2NmZkNzJlMmYyOWVkODc1OAotYTM2MmE0ZjE3ODc1Y2JhOGJlMjNkMDRhMzU3MTRkNGMyN2M0NDE3MDM5ZmM4YmNkMjUzNjVjOGE0YmI0MTgxNQotY2UxZjc0OTQ5ZDZiNmFhNThmZWYwYzRjYmI4ZDU0Y2U5MmQ2NWQwYTY1ZjEzYWM2MDYzZGU0YTU1YmE1NTYxZAotNTA5ZjJmZWMxNTViMjE4MWExNjllY2YxNGYxZmFiNTg3NTY5ZjI2MGMwY2FjZGVkODAyMWVkOGQ3Y2FlNWFkMQotMzMyZjEwNjFlMTY2Njg2YjQxMjc3NDk1NTk3YzE2ZTcyOGQ2YThmZjQ5ZjgyNGRmNTAzYTYzMzIyYjQ0MjE4MgotNjY1YTEyOTAwZGQ0OGQxMzYxMzQyNTc1ZmRkNWM5ZDlkZGQ3YmM3M2E5MzdiMmFjNjI1NzI1NTQxNDAyOWE2NQotOTAwMTE5OWU5ZTFmMTZjZjNjZjg3NmJlZTAwMDMwMjkzNTQ5M2FlOTk3ZTNmMTEyNDIwZDdkM2YwNjczOWI3OQotZWRkYzFiZjdlY2ZjNTMxNjU0OWQyZmYyMjhhNGUyOGI1MjJkNmNmYWFlMzE0OGJlYTI3NTVhNDViYzI3ZGZjNQotMTI4YTlhMzg3NzdjZDNiMDdmOTFlZGFjZWRiYTI1NjViNTUyMThkNzg5MWRhODYzMjQzY2Y2OGU3ODAwYjgyZgotMDM0MTc0MGExZjVkYzZkY2YwMTI1Y2RhODQ0ODY3ZmU0OTQ1MzI2ZjEzYTk1NDQzMDc1M2EyOGVhODQ5MWJkZAotYzU0NWU3MWU0ZDUyY2FiYzNmMDVkY2U0MzQxMDFkMzZhNjIzMjhjNWZlNmI1ZGYzODY0ZjlmNWFlYzIyZjM5OQotNDNmNzJmZWQwODFkMzcyNDMwNjQ3N2EwNmViOWI2ZmNjOWZhZWI3N2U2MmVlNGUyMGNjNTE2MDBiMWJiMDgxYQotMWM1YTAwZTA2NGQ1NzU1ODM4YjI1MTgwN2FlNTdjODU2NzVjZjA0YjY5YTY2YmVmMGMxOWMzNjQ5NjlkMzU0NwotNTVlZmNmMzFmOGFlMzQ2NTgyNDYyZTk4NmUzYTFkNjUzYzIwNWU1ZDU4ZDIxZGU0NTUzODMyYzg4NWU1NDNiZAotMTFlZWEyZDNjMDhmODgzMDAwOTY2Yzk5MjgxMjUxZmJjMjkyMDkxNzcwMDAzNzI3OGQ0OTM0ZjM0NDFkZDUzNQotYmRkM2M1MjExMWVkMGIyODJjYTIzY2ZhOTdhYjI1Yzg3MjZhY2IxM2Q1MDU5OTI0NWU1MzI0MzI1NzJjMzVhYwotYjkzOTE2ODVkOWUxZGVlZDFmOTVmY2IxNTE1OTRjZDYzZTc5NjkxYjU5NzJiYTJjM2EwYzBhMmZmYWYzYzlmYQotNWFjNDdkOTE3N2E2OTE3NDJlNDYzNGRiNjYzMWM4Njk2ZDBhMzBiY2UxZDg2YTRmYjczN2FiODUyOTZlYTQ3OQotZmU5MGM1MWNjZTU0ZDY0MDg3YmZjODBhZTU2YWJiNWQwNGY1NTE2YmZmYjY4MWU2YjM5ZjQ4MDc2N2YyMTIwZQotOTdkMWU4NDg4ZjFmNTQwZTJlYmY2M2ViNzQ1OTY2NzBmNTg5MmY0YzMyNzk3MWY2OTdjNzUzMDc3OGMzNjc2ZgotMjc5MjI4OWNiMTI0ODY5MzVjNDQ3ZDRlYWY0YWZlYzY1ZmU2YzY5NjIzMDY0NDllMzNmYjE5ZmI5ODA2Zjg3YQotOGI5MTg3NGRkZjNlMzEzODQ4MWZkYzcxMWYwOTU0ZDczZjExZmJhMzllZmRlYjU1ZWQxM2IxNmI5MzI1MjVlOQotOWYzYzg2YWU2MGY5MDk2ZWZkNDk2ODc1OWRlZjhkNjI5ZmYyODM4ZGVjYmU0YzY4ODMzYmEwZDY0ZDFkMzMzMAotYjg0Y2ZlOGNlYjIzZjRiNWQ1NWFhNWE5YjUxZWU1OTVhZWUwY2Q2NjhiMjBjNjg3ZDc3ZmY4M2M4MDNhYjk5NAotYzc0M2I0M2Q5ODgyODM3YzQyYTU4Y2Y3MDQ0OTBmZGRjYjU2NDZkNDhjZmQyZTMwNDY0ZDcxMGMxNDQwNTEzZgotNDQxN2RmZDY2ZDM5ZTBmYTZjNTk2ZTE3ZDA3OTY0ZWJmMmNhZWNkMGE5ZmQ3OGUwMDM1NDFiYTUzNDY4ZTcxOQotYjdkYWMyNjg1Y2NiOWI3ZDg1N2FmZjFkNDQzMmE3MmY2MTgyOTAxMDkyNDc4MWY1ZDE1ZmZjZjhkNTA0ZTM2MQotNmY4NmM2NjM4NDY5ZGI0YWQyODFkOGVjMzY1ODQ4YjZmN2FlMTA0NzExNGEyY2QzY2YzZDFlNDZlMGI0ZjQwZQotMWE4ZDNlMWRmMWMxYjY3NzcwMmQ3ZmJkNWE1OTI0ZjkxYzcyNmRlMmUzN2I0MzYyNTBlYjcxNjEwZGQ4MmNkNQotNWMwNDlmZDA0NGI0NDA3Nzg0ZmQ4MzM4N2ViNmE3ODgxMDM0MzBmYWI0ZjY4MjI5NGIyODdkYWM0M2YzMDYxZQotZDk5Yzc0MzA5YWU5NzNiYjk5OGJiYjJhNjkxNDAyODQzYTFhMjhlZTYyYWU4ZThiYWY0ZDY0NWQxNTZiOTRhYgotMzQ2ODAwOTU0MjVhZDhiNGRjMjcyODllM2M2ODE4ZDYwMzJmOTE1MzU0NTlkNzU5NWIyYjliZmMyZjQ0ZTc4MgotMzBmMGFmNDljMGEyMjIzZTFjZWU5ZTEyODlmNjgyZWQ1ZThlYTdkYjk5NjYzYTIzNDcxOTY2N2JjZmZhODA3NwotZTAxMThiMGI5NzAyNTM4NDIxZGZhZGEwMWQ5N2Q3YThmMjMyNDY0YjlmYzIwOWNmMjc4YmQ1ZmVmODBjMTRiZQotMDExYTlmNmZjNzhkZDIwYWIwMTJhMzA3ODBkYjI1MDdmNGQ1ZTFlNDkzZjMwODE0YWIxYzcwY2RhNzVjZTk1OQotYjVkNTE1YjJlZTg2NDBkZDRiY2RhNjcxMDcwM2E5ZTU2NzBhYmFkYWU4NTZiODZlZjhlNDE0M2E1ZjAzZmMxNgotYTZjNTdhYzdjM2E5NmM1MGU0NTE5MWIwYjFjNGY2YWNkNjIyYzQwMGNkMGYyYWU5ZTlkNTEyMzZmMWI5NDVkMwotNzFhZGM1ZmVhYjhhYTg0MjJhMjg3NTViNjM5NzhhYWZmNzg3MTU4YTY4YzI2ZmQyOWFiNmU4NDliMDc2Yjg1MgotMjE5MGNhZWYxYTg2NjYzZjRlMTJjZGYyNWJhN2JmODgyZWYyZTBlMjFjNzdjMTRmZGY5NDA3OTJkN2JiMjhmOAotODkyYTljYTBiYmFiZTFjNzBjMTUyZjMwZjM2NmJjODZiNWJiMWViM2I1NDQyNTYxNzY4MmE1NDYzMjM4Yzk5OQotYWJhM2E3YmY3ODhhMjk3ZDJhNTU1ZGJiMjE4YjE5Y2U1MDFhYWM0M2Q5NGEwYmI2YWUyOTA2Mjg4MjFlZmIwYwotODRjZWVjYjMwYzE0MDkxN2E0NThkYjZmZDAxMWYzY2JmYjRhMWNiNWVhMDE5ZGI2MjhjMTA2ZTJhNTVmMWMxMwotNDQ4ZWRkNGE5YTE1OWViYjM2OWQ1MDlkYTI5NmRhNzI0ZjcyOWZjNzU2MGMwMGM0MWY0MzA5ZTMyZWE2ZmI3MQotMTZmNjIzMjVhNWFmMzE3ZjEwNmE4ZDhjMmMwMWVjY2U2Nzc1ZDQ1ZmRiZWZkZjY5MjVlOWE0NDYwNGRkYTEzYgotMjdjYzlhOTYwYTIxZWVhMmFmOWJkZjZiM2NkMzU3ZDYwOTdhZDQwZGY3NDAzMDA1NzQ2YTMwODMzZTgxNGVhYwotOGRiNzJjMzgzZmE0MmJhOWZkMDA3YTI2M2NlM2I3NGMxMzU2YmQ1MjJkMjYxMWU0ZTk2MGM5ZmY1MjA0ZDQ2ZgotZWUzMzJmOWYxMzRlNzVjNzkxYTZkMjA5MjNlY2U4ZDRkZmVkY2Y5NmFiNDVkZmQ3NTE3MzlkYmQ0N2I0ODYzYQotZjBmZGExNzI4NDhjZDI3OWFmZDlmYWMzY2M1NzQ0YzFmYThhNWZiNDk1NWM2YzFjOTUyZjU2ZGEwNjQzMGFlZQotMDg0NTA3NjY0ZjkzYzcxZDg4MWI2MzA0MWNkZWM1ODMwNjEwMGEwZThjNzc0MjFkNzU2NzljZTMzZTJhMGE2MwotYWMyZjgxMzAwNmNlYTY5ZTAwMzUyZmZkNWY1OTE0YjYzZGJhZDU5MDVhNTkwY2UwOTAzZWQ5Yjk2Nzk3NzllMgotZDlkYTYyZjQ3ODc2ODc3NmExNzM4MzJhOGYzY2Q2NmI2YjYyNDg0ZDE5MGJhZjJkODM0MjQxMDAwYjBlZWM3OQotZjFlNTNiNDJhNzRiMTU5YmY3ODFlZTQ0MTVhYjZhY2ZmODZjNWIwNTkzY2Y0NjNiZjk1ZDhmYTgyMjkzYTU0OAotODRiYjIyNmY0MGYyNDU5MWU1YWQ0NjNhZTRiNjcyOTA1ZTdhNDIyMmVkZjk3NmU4YWQ4ODllNzE5ODZiMzgxOAotYmQzZWViNmEwYzk2Nzg3YzZmZGYzYTRmYWVkOTRmMGJhMDI2OWZkMDgyYWM0NTE1MzFlM2IwYzAxZjk5NjA5MAotM2Y4MjFkY2Q2NDY0Mjg2OGYwN2FhMGZlYWRhMzQwODhhODVlNjY0NGVmMDdmNDQwMmI0YjI5MzA3M2U5ZDMwOAotYmIyOThiMGU0NGJlMzZiZGRhMjE4MjU5YjRmNDhmMWI2MzhmNTAwN2QzYWE4ZWNlODAyYjQ4NWU3ZTkwNzVkMgotNmVjODgxZmJkZWNiM2NmNThjOGEzYWZlMGQ5ODM1ZTdiNDY4YzY0OGU1MmIyZWRkYjgxZGNiYTRlOTY3OGJmNAotYjE3MzU0MWRiZWMzODI0MjNlODA4NzdiYTJkZjk0YTYwNWJiYzJjZGNhMmI3NmY3NGQyZWI0MjVkODE5MTk1OAotODA0NjE3ZjIxMTcyZjM5N2JiNzYyYWE3ZGZkMDQ4NWNkMDIwMzk3YTVkM2U5ZmM5NDA1ZWM3ZWRjY2JjYmRmNAotMjk1YTAwNTdiNzY4NGE3MDFiYjdlYTAxZTg5NzhmYjMzNjdlY2QwODliZTE5YWFiMjgyOGY2ODI1ZDI3NWQzZgotNjA2NjJjMWUyZWM1ZTk4ZWNiOTlhOTZkNmZlMzc5ZTJmZDE1OGE3MTA2YjIxOTA5MDJmMGVkNzE5NjliNmRhZgotM2Y5ZTQ2MGYxNmYxYjQwY2MyYWEwODMzMGI5ZmMyZTI0ODAyYmVkMDM0YjcxZGU0NDVhMTRiYjMzZjY0Mjk4OQotNGY3NjMxOWVkZGVlMzI4MzE5ZWU5NTc3NzQwZmM4MDNiODE3MTRhOTliZjBhNTcyMjk4MTQyN2JhMDg1ODU0NgotYzBmNzdmMzkxOTA3MDA2MDcwNGMzYmQ5OTFkOTQ5MDlkMjAxMjE0NmI4OGMwZDM1ZmJhN2MyZGU4NjRlMzViNwotY2FmMDA5OWM0NjMwNDQzNjI1YmUzNzY5YjAxNTI2ZjNmMGM4YzgyMWRhOWQ1NDZiYzI1OGMwMDRhNGQyYjQ2YgotODg2ZjFlZjkxNmY1MGQzZjVmZDEzOWUwNTcwYjQxNTFkZDQxZjFmMWI1ZGFiMGRiNzc4NzEwNWM3N2I4NjkwMQotNzNjNTYyZDNlZWY2ZWY3NDEwNzg2NTk0NjdmMzMzNDUwZDdkODBjNjdjOTFhMjZiYThjNzdhZGNlZTZmNGM1NgotYzdmMjQ4ZGQ5MjUyMGRiMzU3NjhlNzAzZjdiZDE3MWY5ZTY2M2I5ZGFlYmViOTYxMWNmNDg0MjViNmIzNWMxZQotOGJjN2EwYjQ1NDQxYWQzODU0YWM5YjM3MDYxODM5ZjU3ODI1NmE4ZTQxNzY2ZDFhNmIyOWE5OWEwMTk1NjIwZgotYTA5MGQwZWY0MTIwNjY3OTAyYjA1ODc5NDYyMDZmMjk0Yjc4Nzc1ZDYwZWJlYzY2OGY2ZTRmYjljYTg5N2U4NQotNzYxNTFiMjQ1YWZmODIzMmE5MGY5N2E1YTkzZTkzNWM4ODU3OWRjMGYyZTlkYTdjYmQwMjQyNmIzYjE1ZWQ1MAotMzBhY2Y1MDEwN2Y3YjRkNGUyYzMyZGQ3NWQ2ZDhjNDUzOTE3NmEyMjQ0ZTc2MWViZjFmZmJmOTdkMzM2ZmRkNgotZWY5Y2YxMzgzMjZlMTBiZGI1NzYzODIzNTM0OGVlZjhmZmQzM2M4NGI0MjZlYzFjODFmZDhkNGEzOTA3ZDUyZAotMWJhN2U5YjY0ZGQ1NmI4ZmJjMjM2MmUzMGYyNDUxYjY5YjBkN2NiZWExZjMxMDFhZmNkNDQyNDJkM2ZmNWI2NgotODlhN2MwNTQ0OWIyODEwMzVlOTgzYzZiOGM2ODg1OTczNGIyMzJhNzM5OTZhMTlkMTE2YWM0YTk0ZjdiNDgyZQotMWY5ODQzNzFlN2U5OTE5YzMxMjI1MGMzNWY2ZjdmZWUyNWVjMjNlNTYyZGNjMjVjYjI5ZWE3OWRmZjBlN2M4YwotZmExOTI4MDI4OGMyNmRkNWMzMmY0YWViOThjODVhZmRhNTMzMTkxODA5MjY3ZjA1NTU0OThkYTU2ODhiN2MyMAotMjE5YTA1OGVmYWE1OTcxMjU1MzU4NzE5MjJmZjliMjBjZmJmNGM0YjM1YmRmYTRiZGU3M2NhOGNlNmFiZjE0YwotNTEwZWQyMDcyYTAxYzhhZGZhZGEwMDY0Nzc3NTA5ZDRmOTdiZDJiYWY2NmU3MTUxYWRlNzZlNDA3MDY2ZWZkZAotMmUwOGExNTc5MGM4MWQ1NDViMzQwMDE5YmQzNTBjN2I5MGIzNmFkYzg2NThjMTg0ODAyMGE3N2Y5MThlMTUyNwotYjM5NzQ3MTBhZjUwM2E3OWQ3OTQ3ZGNlOTNiZDgxMTYxY2Q3ZTBiMTEyNWQyZmUwZWRhZWI5MWJhZjEyNzllNwotMzEyZmJlZDY0NjQ3MmIzNTIzMTBmZGZiZWZkY2M0YzIwY2NmZWQwZDY2MjYwODNiMDI2MWQ3YzQ3ZDk2Njk4NAotOGRjYTQyOThiOWRkYjU4ZmUyMWJiMzkxYzdkNDVkOWI1NjJkMzhjNGRjMjNhY2I1YWE4N2UzZGRmNTllZTIzOAotYzkxMzE4ZGIyNDkxYTI0MTEwYWY5MDUzOWExNjk0MDE0MWQxZWZkZjRhMTNkMjAyZjliOTQwMWJjODlkNzI5NwotNTI2OWNkNTUxNWY5YTYxODZhNmVmODY2Y2ZhMDM3MzBmNzI2ZDdhNDA3NWUwYmM2ZjA5NGU5NTg0YTg0Y2YxZQotNzg0ODliYjY4ZGMwOWVlM2YxMzU2ZjRlNDViODYyMWUwNjA3OGE2NzI3ZWI3MmMzNmZjYTgwNTIxM2MxNjc1ZAotNDM2NTI1NWQ5MDE2NGYzM2NlNmIyMjMxMTEzZjY0ZmRjZjVhNzg5Y2Q2MTAwMmIyYTM4ZDJjYTViZjFmNTM2MQotYzlhZTBmNGVmYjUxMzM3ZTM0NGZiN2NlMTVmOGVkYmRjOWVjODJhOTQzNTE3NWY1OWI2YzE5YWUyZGQwYjEwYQotOTQ0NTY1ZTRiMTRiZDFkY2RhMDJkNDJiZTI3ZmI5ZjAzMzA2MzYwOTEyMjhlM2I4OTcwOWM4MTQ4OTMyYTVmOAotYzViYTViZmVjZmVmNmRlODNlYjQxNGFkYzYxM2Q4NTM0YzRlNDUyOGQ5MzRjMzdlNzY4ZDA4ZTEwM2I4ZWQyYQotZTFlNDliYjFiM2U2Y2JjZGMzZmY2M2RhYzc5OTRiOGMwOTIwM2Q4MmE5OTcxMDQ0OTI3N2MyMGEzNGUwMTUzOAotNjdjNWQ1ZTZhYmViYmE2NTBjNDQxZDNmZTU2ZGU5OTdlOTI4MTkzNjgyZTVmMWZhYTkzYTViYzgwMDg2MjEzMgotZWQzYjZjMDA1Y2MwZTYwNDIzMWUzZTYxZDE3MjE0Y2EzODE0OGM4NzVjMjY4YTg2MWExNGI1NGU2NTlkZDkzMgotY2JlNmVhNzEwOWIyNzM5NzVkNmNlZWQzNTFmMGIwODc2YTBiNjQ3OTQ2ZDI5MDk3ZGQ5OGI1ZjZiZGE3YjQzYQotZTY0ODFmMTc3NDNmZGE1MDNiMzRhMTIwYzhjMDZmNDc5OGMxZmNkNGU1MjFhMzBkNzZmMjM0MGRmNTYyYjYzZAotZGQ0YjI3ZGE4YjU4MzU0N2QyODVmMzg0OGJiOWZkZGI2MGQwZWQyMmE0Y2IyN2EyNzg0ZThkNzY2MmU4NGZmYQotZWVhNTBhZmMwM2IwODE1YjcyYmJlOTU1OGM4OTU5ZDBjY2MwMGE4YzhjOWY3NDBmOTViNjcxYTY2ZGZkZmM2OAotNzdmYWMxMmMxOTk1ZDk3NzQ5NWM5Y2NhY2Q5MjRlNDVhNjZmODczOWRlMTU2ZWU2OTYyYzc5MzBmOGFhYzM3NAotODk0ZjhiYzM5NmZmNjlmMjI0OTM5MmM3YzQyNDhmOWNmOWZmZmY5ZWFmNjM1ZTY2YTM0NTExZjM5YTA2NmI4OAotNDg2NmU3NzZiOGQ2ZWNhMDMxOWYyM2NhNjA0ZWFkNzQyYmI2ZjZmM2IwNDY0NTRhMWMwZmMyNDI1NTExMTJiNQotYzc0NWU5YjhmMTI3MjM4NjdiMmI4OTVjMGY5M2M5OWRmMWQ1NDJiODZjMWM5ZGI0NzM5MGYyZDZjM2I1N2VjYwotNjZiMWE2YWI1MTRhNDdmZDlhYTYyNDBiNDZjNTRhOTJmZGY4MGZjNDRlZWVkNGI4YTEzNmZiODhiMWZhNWI5YwotYTJmZTY4MmNjYTRkMGM1YTNlOTk0Y2ZlYmRjMjcwZjQ4ZTNhZjkxYWU2YmM5MTcyYmQ5YzczMDUzYTc2MTM2NAotNmVmOWU2OGVmNThjNzE4YTQ3OGU3ZDgxZTU3ZjM0YTc5MWMyNjI2OTgxOWM3ODU3NGQ3Y2MxMjYzMjY4NDIxOQotYTFmOGUxYzVjZThiMzU4ZDZmYmYyMzk4NGU1OWQ5NTMzYWQzMTBkMTU4YWI1YmFhOWZlZGEwODcxN2E3ZjVlMAotNTc2ODRjNDU1YTdlM2Q4MzNmODJiNGUxM2U5YTkyYjBiOGZiYTVjZGQ3MmE3ZTQ2NzA5MDc0ZGRjODJlNDQ5YQotYzkwNjQ3NDQ0MTA2NmZkZDljYjdmMzQxZjNhMmVlOWYyZmJmNWU0ZTFhMzUwYTQ1ZmNhZDZiMmUwNTgyNWI2YwotODkwNzdkNzQyNjE5Y2YxZjg0MzRhM2I1Y2M0NDk5ODE3NjY2N2NmZDVjNWY0ZWU1MTMyNmQxZWUzZTQ0OTkxNQotMDBiZGFmNTdjODhhMTA3YWM0OWMxNGNlYmYxOGQwMTBjNWIzMjA2ZWM4OGZkMDZlM2M1MTE0NTgxZWU1YTVlOAotYzRlZTVhNWMzZDQ4NjUzZmIyM2QyOGYyNjg2MmM0MzNlZDA4M2FmMDFlZDNkZjhlMTQ3NTQ4ZjljZGQ4ODJmOAotY2EzMDg4MTA2YjljNzNiOWUyODc4NmZmYTY0M2MzNDNhOTQwYmY4NTBmMzEyNjY2ZTYzNWI4ZGI5NWM2ZjcwYgotODNkNjQ1ZmQ5NDdmNmRmMzIyZDI2ZjhmOTA4MWNhZTcxYmE4YjlkMGRlNjdkNTM1YjYxMTQ2Yzk1NjgwMWQ2YgotZmY5YTY5MzY1YmRhOWJjOTdkOGQ5MzE0MmQ0YzM2N2Q1MjU1NTg3YWRhMjVlNGZiMDYxZjhlNDMwZjczZDJhOQotNzE0MmQ5ZTRjMTc0MzViNzg4MDU5NDZlNGZkZTYyNGVhNWQ5YjVjNTExYzlhZmUyY2ZhZjQ0N2NmMDgyMzViOAotNTc1ZGRhYjhhZjkzNTg4ZTBjODIwNmYwOGY4ODMxNzBlZDQ0NjNkYTMxYTUzY2VmNjdmMDFhYWI4ZjY0NWFjYwotYzJjNzY0ZjI0YmY4MzFkY2YwMDU4MzNjY2QxMjk2MDI1MzY4YjNkNTFhMDRlZmQwOTVmZDEzNTVlOTNkZTU2MwotZTcxZGQwNDdlZjQ5ZjViZjhjMTdiMDFiMjg4NDg3MjI1N2Q3NDNhYzZmZGQ4ZjU0ZTI3YTI0MWQ3Yzc1YjM4NwotYTg4NDFkOGNlZGU2NzZlMzVkNGYwMWFjYmEyYWNlYmQ4YjIyMTEzYmZiZWY4MGQ1ZWFiMWU4Y2Y1NmY2NDlhNAotNTE2ZWMwOTc4NzJhNTk3ZTgzNTE5ZmMxMzk3YzdkNGE0ZjZkYjdkYWYwNDQ4MzViMTdkMDg1NTc4ZjVhMzc3NgotZmQ1ZWQ5MjM1YzAxODM1NGU4MDFmYWMzMzhhYTdlZTU4MWU5N2Q5MWRmMDE5NmVhNGJjYjA5ZjBlNmYyZTJiZgotYjU0NzA4MjdmMWI2YmIwYjcxMzNjMTliZjQzYmJlODI0ZWJkYWY5NTI2YWIxNWZmOGFlODg0OGJmMGRlY2IzZgotY2ZhN2QzZjVlZDcxMTkxODk0YzcwNWEyN2NkOWFhMzBmZDM4NGNlNmE1ZjBiYzUxYzU2NTFkZDI1MTBhMzQ4MQotZDA4NmFhODc1OTVmODg1YzRjMGFmY2IwMmIxODM3Y2VkZjg1YzVlNjRkNDQwZTM2NTgxODc0YTExNzA0M2I3NQotNzhkYTk0YTA2OWNmMmJkNTdhZTcwYzIzMGU4ZDFhMGQ0NjM3MjIzZDE0YTk4Njg4MzVkODkyM2ZlYjQwNDMyMwotNDNjMjJkMGYwZTgyMDFjMjAyNDdjNzhhYmY5MjY3OTE1MDY5ZDY0NzE4NjJjMmEwYzUxZWUzY2UzMTUzZTMwNQotNGE0ZWM2ZWE1MmRjYjU1ZGYzNThkMWEwZDhhYWZhNzlmZTA4ZWJlNGQyMmU5ZWNiOWQyZTUwYTdmMzY3Y2RlZAotNzE2OWY4NDI4NWM0ODJmYzFlZmZiZGU2ZmVlYTQyNGVjZGRhMjQ5NDEyN2M3Yjg5NmRkMDVmNWU2MmY1ZmQxYwotMDMxZGU5NjBkNmVjNTk5NTRlODQwNTA4MTYwMWRmNzQxZWRkOTdmMjI3ZmQ0MjZlMDk5OGNhN2I5YjQ5OGJlYgotNGNkYTlhMTY3MTVjYjY5OWM0NmQxMzg2NDY5OTU4MDc5ZGRmNWZmMTc0ZDcwMzM4MjA2MjA4ZjBiOWFkZTM4NgotMDNlOGRjZjMxZTA5ZjQ0OTc2YzFhZDc2Mjg5NmE2MTVkOWJmZTU0OTc4YjdjMzkxNDQ1OGM4YWY0ZDMzZGM2MgotOWY5YWY1MTcxZGYzYjllNTQ4YjI0MDExZWM1ZjAyZTMxZGMzNzk1ODJlMTZmM2M5OTlmMDQ3YjgyZTdmMjdmMAotNGJmZGQ4MjdjOWExZDE5ZTQyMzA2OTVkNGVjNDk5YWZkYjYxNDcxNDZjYjZmNWE4YTI2ZWZiZDZkMGM1ZjIwNQotMzRjYjljMzdmYTRjNGI2MTIyZjU1YmFjYjc1NjE3MzI4MmFiZDZhMmU1MjE5YzI1Yjg2YTUxODEwMjFmMGJhYwotNmYxN2Y4OWYzYjhmNzRjMjgxYWVlYTdjMWQ0ZmZhYzYwMmMyMzY0YzllMWVjOGIwYTYyM2JkMzU0MTc2NWNmNwotYWE1ZmViYmI2ZTg1NzgxMGE1NjQ4NTAyNTlhYzRjZTZkNjQxZjdiNzY1ZGQ0NjU4NGM0M2M4MTEzYzg1ODNmOQotZTc3NjNkM2Y0ZjgzNjQ5ZTEyZTE1NTU3ZjQ4ZGNiMGE2MzcxNDBiMmY3NDc5Zjc4ZjFmNjRiY2Y4YTA3YWNjMAotNDNiOWQ5YWMxZjhiMmMzYjAwYzM2YjQ2ZDhlNTE0Yzk5OGZjZDQ3MzU0YjM2NGU4YzI0MzRlNzc0YWM3MDk4YgotMjRjM2JmYWRiYWFiNWJkYjhhYjBhNmI5NzczYWVhNDE3NTYxNTI0MTI0OWEyYTU4MjIyZGY4YzUzYzMyZDAxZAotNmFkYzVmYjRhOTMzNjA1ZmZmOThjN2QwMTEyNjYzODBiMzA1NDAzYTc5ODY3OTM2MTU2MjQwYTVjNTU1MTA1YgotOTVjZWMzODczNTMwZmE2ZDM3ZThjZmMyODYxMThhOTYxOGM2MGQ2MjgyNDEyZDBjY2M1YThlM2FmNDdhNDJlYwotMjljZWUwMTc2ZDFjNDgwMjE0NDYxOWE1YmYxY2RmOWVjNWI4ZDZmODdjMzc5YzQ3NmFiOTQxZGEyNDQyMGE4NgotMDRhMGIxYWQ3ODg0YjVlMDUxMzYxMzlhZmNjZjBiNzEwMWNhZTRiOGYwYmZkYmUyNzZhYWQxYjk1ZTJjMGQ1NwotMzkwMmJmZGVlNjUxYTIwMmI5OTE4OWNhZGExNzZhMjJmYWNkMDUzYmJjNzNhZjFjOTBjYmRhMTA2MzU3OThlOQotOGRlMDVjMzM4ZTkwYjNkYzRhZmI4ZDI5MDEwNTkwYjY0MWRiNGE5YWI3MDcyOTRlNTVlNDRjOTdlMjc1YjUyZgotYjg4ZjUyYTZjN2U1NDVjZGM3M2RlNDZkYTY5OWM4YzNkODk1ODgwMzY4YWEwMzVhMTM3ZmE4Njg2ZWY0ZjY0ZQotMDkxNjdiOWU1MjMzMTJiMTc1YTE2NmRlNWUxMjk3YzYwZGIzNjFkOTUwNWMxMmI0OGMxNzgwYTAwYmUyYTlhMQotNDNiYzYzNjJjNzMxZWIyNmE2MTA5N2M2MmMyOGQyY2M4ZDc1YmEzYzYzZTMxYTQ5YjljYjViOGI3ZmUxZmJiYgotNjE1M2JjODdiNDUzOGVmNWNkNDkxOTgxMTMyOWFlOTMzZDg2ZWY1NTY4ODMzMjNlZDVhNmRiNWM5OGMxMWIyYwotY2MwNGM0ZjkzNzI4OTU5MGU1ZjdlZThkNTc5NDBmMjEzNzNhODFiOGI5MmViN2NhOTc4YzFhMDdhZjdiMTA2NQotM2U2NDk4YTZlMmZhNzM0MjY5ZDYxY2YwZGVkZDY0N2VkZGJiZTM5NWUxZTgxOTA1NTJmOWE0MzMyMDgyYmVlMAotODdmMjhmZDZiYjE5ZTQ4ZGU4YWQ2NjJmNDFiNGE1ZGU2NTc1MTFmMjMyOWZlNmI1NDFmNTBlYzQzYmUyNGQ1ZQotZTczMzY3MTI1MzVlY2U2YTU5MDQyNmUxMDQyMmQxMzBmNGZkOGIwZmUzMTRjOWZlMDY4YzZhNDU4MzU5OTRhZQotN2JmZGE4YWU0OWZhYjIzOTA1ZTRkOGIzNzRmYzY1NGYzMzZiMzZiMjA4MGRmNjFhYmMyODhiMjZiOWNhN2I0MgotNjhlNDZmMTIwYjgyY2RjYjc0NzE1ZTZkMDlhYWMwOTZmZDExN2FjZTMzODNiZWFjYTUyYWEyNDhjZmUzMDdjYQotODkzMGEzNGI3MDYyZmIxNTNkOTY4YzkzMTY5ZGQyMjM0NDljYTY4NzY1NDgwY2ZkYzVkZjM5YmU0NTA1NWQzNwotOGJhMTRkYWE1YTQ3NDVhOWY3Yjc2YWI2NjRlZjNkNWIyZmJhMjljNjBhMDZkMWEwODhjMDVlZWM2ZDk1YzA4MAotMTk3NGVjMzQ0YjI0ZGZkODkyZGI3ODc0ZTNlOWRmMGZkNjFlZjhmNTliNTI1ZjkyZjJiMzc0OTk5ZjkyM2YzNAotNjY4ZTU1Y2M5MGZmMjg5MDEwN2E3NTI4ODUzZjQ0MTc3ZmE1MmEwNzFmMGNlOTk3YWU5NGI1OTAyODk0MTFlNAotYzA2NjljOTM2ZDRiODg1ZGU4NDI3YjYwYjJmODgyMGJjOWQ2NzgxYmYyNzVhOTU5MjFkOGNmNGY1NWNjOGNjNwotNzNmZjdkMDAxZjRmYzVjNDFlYTFjNzU1ZWU0OGM1NTUwNjc3NzU1YWVlMDYxYTNhYzg1YmMwZDljMWU1YjQxMAotZjM4ZGRiODc3ZmVmNGFkNDE0MmM4N2M0MmI2ZmVhZDg3ZjFkYWE5OWVlMGZiZTdlN2VlZTk0ODY3MjM3M2EzZgotN2FjZTI0NDQ2MDc5MjFjNjFjZWZhNzM2MGYzMTk0Njg1YWNmODM2MTY1ZTE5Mzk1YzJiMmM5Y2I1Nzc4ZDlhMgotNmYzNWY5MWQ2MWU1ZTQ4MzhhYTIzOTA5YjQ2YTg5OWExZTAyZTI3ZWJmYjUzNjhmMTA4MDI3MmY2YWU5YWRjNQotNDRmNTEyMTkxYmYxN2RiYTNlYjIyZDk4YjliOTM0ZjM1OWZjODZjOWU0NTFkMmQ0MTk0NjMyYTdkYjViMTI3MAotNmE1OGNlYTQ3MzkyZmE4Y2MyNGY2YjRlYzVkMTcyZTllNTYwMTYxN2Q4ZTIyZTgzN2MwYjM1YjQyODEzNjRlNQotODE3NTdlMmZjY2I5OGZhODg4NzlkN2NjYzU2OGZhOWIxODM1MDRiNDkxMzI5MzIwYzk2OGI1NjExZWIxZjMzNwotYTZlNTBkNmZhYWM1OTFkYTk5NGFhNDc3NjE4NjVhYjg0NjUxYzMyOGJmMjU5YmU1OWJkNzUyZjExMGY4OTA4MQotNzU1MzgyM2NjNjdlMzY3MjFlOTVmMWM0ZTJlMzcyZTAyMGYyYjJmZmIwNDVhYTcwY2E0ZGQ2ZDU1ZDg4ZTMyZAotYzhhMTc0OTJlZjI4YTQ0ZDRhNTM2ZmNhOGJkNzViM2RjMzkyZmMyOTYzNzdiMmM0NzQzODk3YzMyZWI2NTI4MwotZTc3NmU4ZjhmZDk3YzY2MWM2N2MzZjBkOTczNDNhZjE0MWJmNmI3NzQ5OWExM2FmNDYwNWUzNmQzZjRjM2ZhYgotMTJiYzVkYWE1ZGIxZDEyZGZlNTkxNWFjZjE0NDA5ZTkzMDJiMWJiYzhjNTg2MTk0OGVhZTMyOWVhMzExMzJkZgotODQ5NDU2MGU1NjRiYzE2MDczYzdhNzc3ZmVmYjMwY2FjNmY0Yjg5NDNjNzAxOTUyODk5NDZhNjBmMDZkNDMwNgotNDUzNmMyNzQwOTk1YjcyNDc0NTFjOWUxNjE5ZjdlMjc3YWY0YmNiZmZmNmI2ODU1M2FlMjNlZWY3YjE3OWMxNgotY2FiNmFhZTdiNmY1ZmM3MmUwZDdjYWMzNDYxMWQxMzUzNzE2NTgwOTQ4YmE2OWRjNTM0YTNmYTU5Mjk4NDI0NAotYzFiYmQwYTZkM2YxZmM0ZDljOGZmNDhlNzcwZjVjNjViZTNiNWE5NjFlMmFiODkzMWU3M2M4MjIyZTZlYjQ4MQotODZlOTI5MDZiZjJiNDRmZWY1YTU5YjQ2MGJjODhhZDE4Mzc3MzA1MTVkODJjMzM3YzM0OWNkMDg3MzI5ZmZmZgotMDcxOGUyMmJkM2YwOWZlZGU3MDQyOTkyYTE5MTU3NTAwODg5MGM1OTY2ZjEyMzBhYjE4NmYwMTlmMTc5NDY3MQotOGU2MTljZTg3MDZmZDk0YmYwZmIxZDZlYzIyNTEzMTUwYzFiOTQ5Njc0MmE5NGUwNDhkZjA3OWJkZTVkN2JmMwotOWRiODI2NjhlNWY1NDUzOTYyOTkwZjRlM2UwMjQ1Y2QyZTc2N2M1Y2YzNzU0YzEzNzFiYjM3YmI3ZTE0ZGI3NQotYTkwZmNkNWRlMWE3ZDc1NzQ4Mjg5MTc3ZWJlNjVhMzk3NzYyYjViMWRiZDQ2OGU3Y2JiM2ZlYzY2YTZiM2YyZQotOGU5YTE4MDJiYjJjYzQ1MDZiM2FkMTYzMmQ2NzRmMWQ1NGEwYzFjMDg3ODdmMjc0YjQ4ZDYwZTkxMTFkODAzNQotYmUzYWY0NGEzYTEyZTE2MTc1ZWJiYWZkZWU1Y2ZjZTJhOWEyNmNiOTgyNmM4NjIwN2Y4ZWE4OTVlNWMyZmQ2NgotMjE2YmU4M2Y4MWZhNDdmMzlkYmFmZjM3ODk4NjViMWJlZjYzYmFlNDYzYjdkMTY2ZGZiYTVlM2U5OTY3Njk3ZAotZjZjOTFjN2RiYjc2NWJkYjkxZjRlZTU5MjA1NjdhOTQxOTk0MTY0ODRlNzVjYjZiMWMwZDFiZGQ2MmU4MzFmMgotNGI2ZDdiMTAwOWJlYTE0Yzc4Y2E2YjhmMTAyMGNiMDVjOWJmZDEzMDc2ZDVmMzM1ZDBiOGFlNDE3ZmEyNmM3NQotZDA0YTI4YTc3OGQ4ODU4ZTY0NzM2ZmEwYTViYTc4OWI1OGI0ZDA1NTQwZWNkZjI4ZWUwNDRlYTE4NzA0MDc2ZgotYzNjOTIwOTBkMTE5YmM2NzU5NDAyMWFhYTRlODlhMDYzYWMwZTY0ZjIxOThjNWNkYjM5NTFjNzY4MWFiYWJiZgotNmU5NjY2NmY0NjdhMGZkYzcyOWVmY2QyZjFkOTRlMTkzZDhmZDU2ODAyMDYzODQwNjk2ZjNlY2EzOTRjMjg0MQotNmI3ZTZiZDQ3NTlhYWNlZWJkZjgyYmI0NzNkNDkyNTZlNjUzOTQzNDY5ZGI3MTc5NGFlOTZiM2QxMzBiZjk3ZAotNzUyYTliM2JjNDQ0OWJiNzU2MDM5NjA5YTRmOWZjYzYzYzYzN2Q4NjcyZjJmMjRkYmQ0OWE1ZjlmNTEzOWM1NAotMjNjNGExY2JhMzQ1Nzg0ZjI4Yjc5MzNkZDNkMmM5OTM4YjM1ZTYzNjc4YjA0NWVjMzE0ZmQ5ZTkxODhmMWIxOAotY2EwMzRhMjZmNWQ3ZTJlNzc5Y2ZlNGQxNjU2MGVkMmU0ZjNhYzJiZjFiNTMyNGM2YjM0MmUyOWI1YmEzYzllMAotN2JmMWJmZjUxOWY5MWJkOWNiZDRjMTk4ZjBiOTg0MzFkODNkNzMwOWQwYTRiNjJiY2Q0NTBkNjI2NDllNWI0MQotMzM1ZDg3YzI5N2QyODg5NDJhNjM3OTk5YzJkYmRhYWFlZGE0ZjY4ZDE2NjI2NWEzN2RmMDAxYjFhNGE1ZjU2MQotNjRhOWE3YWY4MTA4NTFkOThhZjNlMDFiMGU0YmJjZGYzM2QzMDM1Yjk4MTE4YjQ4YzY0NTJkYTBjYWVjY2ExMAotMjI4YTMwOGEwYTM4NDRkNTc2MjhiMmRmZDcxODlmMWZkMjUyZWExY2UzY2JiYWI3ZTcxMzI5Yjg4NmNjMzZlZgotYjQwZjY0MmFhNTQ2OThlODdmNGNlOGIzMTBmMGVlMjk5NjhhZTA0ZGUwMDNmYmFmZjg0ZDg2NmU0MjIwYjYwNwotM2IzYzVmZGZlZjg4MzU0YTU0ZDQzMThkZDg1MmZmZWI5YmU4MTYzMGM2NzNlNDI1ZmQzYmI2ZGRlYzlmMjk4ZgotYTk5ODJmOGE1ODU5Yjk4M2JjYzA5Yjk4OWY0YTcxZWU0YTU0ZDM4YTIyMGMzY2U3NDkxZTdkOTk2ZDhiMGUxMQotYjA4NWFjYjhmMjE3YmUzNWYzZWI3ZmEwOGJkOGVhOGM2NmRmOGFkMDBlMzI5YWU3MzJjZTEyODAxYWE4YjFhOQotNDBkYjFhN2IzMDM5NjdjMTg1YjkwMjI5YTExODhlZWRhM2ExNTY1ZGFkMWMwODE4MWZiMzViYTAzNjY3ZDUxMwotOWYyYjZhNzFkZDI3ZTExYzdkYjlhN2VjZWQ2NDA0Y2IwOTI1MGZhMGFlMmYwZmU3ZmE2MTE0NzAzOWNiODY4NQotZTdhMTU2NmUyNWI0MGIxZjIzZmZkYTU1MTVjMTA3ZTM0ODdlZGUwYTE0OGYyZDg1MDBmMTAyYjRmNTE3Yzk1NgotODdiMmUwMzk5Mzg3ZjRhOTA2N2VjYzcyNWJjYjMyN2JhNWU5OGQ1YzY4ZmI1NGFjOTk4MzQxNDZiYmQ3ZTkxYwotYjA0ZDk1NzZiYjE2ZTM5NjA4YzE0YzI1YWFlNDQ2ZDI1MGIzODg2MTBiMjcxNDc1NzYzMWMxOGZlYjcwMDA1NwotYzAwMjI0NTZjOWVhMjgxNDBhMTUwZGM2ZmVhMDMzM2VjZjljMjkxZDk1NTA1ZGUzYzA1M2MxZjk1N2Y3NmEwNgotYTVlOTZmNzkyMjAwZWI1ZjE4MTFlODZkNzBjOWJmMWUwZDI4ZGEyOGI4YzYwNDI1NTVhMjdkZGQwYWExNjhiMAotMGYzYzExMzIxN2Q5OTBmNmVhZDBhNmVjYzRmZjRjOTJjNTc3MTIxZDJiMWRjYmZmNTQ3YzAzMTg0MzYwYTZiNgotMzc4ODkxOWQyMDMwMmYwYzM1NTQxYjQ4Y2I2ZTkyNmJlMDg3YjFmNzMwODA0MWRjOGNiOGYxNjFkOGE4YmQzMgotZWNjODYxZWZkNmViZTE2NTY4ZGQ0N2I4MmZkMWEwMjIwMDczM2ZlZjQxNzZhNzQ3NzE4NWQ3OWU0NGMxMjhmZAotYzU0ZjRmMjhjZWU3NmRjZGVkNzM5OWJjZmViYmZhNjIwYTZmNWU0ZGY1MzUwZmU2MDA1Zjg0NTQxYTZlNzdjZAotOTdkZGNmNzA0NDU1Zjk2NDM1ZWRiMzY2NmQ5Y2I1NzUyMWYzNWUyNThlZWIyMTYzOTQ0YzkwY2JkYjNkNGE3MAotYzk0YjlkMzkwNWZmZjQyOWYxNjU2MGM2YmM0NGFhMjdiYjQ4MWUyNGQwM2YyOWYxMzVlZWYzOGQ5NzNkMTJlOQotYzI1MWRlMWQ5Yjk3NmQ0ZDdiYjdiNGY2MmRjN2E2MDkzZDE4NmQyNDBkYjc5NzQzMmRmYjVlNzFmOGZhMDlkMQotYjliNmNiZGU3YjQ2NzRiYjNmMzg5NjcwOTFiOGIzNzVjMGU3ZGZkZGMwYTIwNmIwZDg5MDg3MDc1MjEyNTRhMwotMzViZTQ4NTI4Njc0Yzg1OTc4MjJhMGE5ZTljYTg0ZjBiM2QyYTQ0ZWM5ZGVjYTBkYjUxZmEyZWYzZGIxNjg1MQotNzkzOWViZWY1MmI1YWY3OTlmZjZmZTg2YjBjYzQ1OWJlOTQxODdhZjQ3OWU5NTY1MTIzM2YyNTE1ZTAxY2NjOQotNTcxMzBiMDFlNmU5N2RmMzc1Mzk2Zjg0OTk1MzVhMWZjYzBkYWU5MjBkYjI1ZGI0MTQ3NzI2M2E4NDdiNTc4ZQotOGFjOTRlNTlmY2I2OWI5N2ExZWJmOGQ4NGUyZmFiNjkyNWJkMTYwNzdkNWE1ODQwMzUzOWFjYjQwYWRiYjg5YQotNTU2MjNkN2UwOWE4NDgxZTcxYjQ3NDE2NzUxZjAxODgxZWNlNGQ5NGVhOWNmZjZkYWJiMzU0NmZmMmNkZTRjZgotMWJhNzdlY2FkY2Q0NDk5NjM3ZTI2YzUwNjRhMzQyZDcxY2Y1MGQ3MjVjNDAyODZhZDM1MmJmOTdlMGRhNTIxZAotNTgwNTVmZjk3YzY4NzY4YjQ0MzVkYjM3MmYwYjNkMjM4NDVkNzcwOWFjNDdiMmE5NjUzMjdmNjI1NzNhOGZlOQotZTljNWM0MzVkZGYxMjQ3OGJjZGZkZTQxYzBlNDMwM2IwMzk0OTQ0NmVjOTI5MWM1NTNlZWJkOWFkZDZiZmI5YQotNDUxNjVjZTM4MjBhZjQyNjRkZDNiNTRhYzQxZTRiMmRmNmVkZTEyODY5NzM2NjBlMzcyODFjNzU0MGJlYjY5ZAotMTZhODZhZTAzYjhjNWNlN2FjMTQyNTg1ZjcyYTBjYmE4Y2ZhM2M3MWE1NGRiNjBkMTMwNTc5MGZmYmFlZWUxZgotZjMxNzc0OTI2YTFkYTk2YTM3NTc0YzlhNWI2NmRhYWQwYTY4YWRmOWYxMDQxMjM5NDFhYzRkMzM0MmMxM2JhYwotYjliMTI0ZWM5ZGI5MTcwMzJlM2Y0OTUxMDdmM2NhYjkzZDU3NzUxZTg4YTUzNjllMjczNThlY2Y0ZjkzNDhlYQotNTQzZmI1NWMwNDkyODYyY2UyOGNmYjFmMjhlMGU1ZmZhYTMyZGY4ZmRjYTI0MWRiNTU1NjE5NTgzZmFkNzZkNQotMDRlZjU5OWYyMzNjNDI0MzU5NzY4ZjZlOGYwY2VhOTU3NzQ5MDE1NzcyNzdkZmQ4ZjkwNDE4NTk4ZQotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotY2xlYXJ0b21hcmsKLSUlRW5kUmVzb3VyY2UKLS9GMTM0XzAgL01GRUNVUitOaW1idXNNb25MLVJlZ3UgMSAxCi1bIC8ubm90ZGVmL2RvdGFjY2VudC9maS9mbC9mcmFjdGlvbi9odW5nYXJ1bWxhdXQvTHNsYXNoL2xzbGFzaAotICAvb2dvbmVrL3JpbmcvLm5vdGRlZi9icmV2ZS9taW51cy8ubm90ZGVmL1pjYXJvbi96Y2Fyb24KLSAgL2Nhcm9uL2RvdGxlc3NpL2RvdGxlc3NqL2ZmL2ZmaS9mZmwvbm90ZXF1YWwvaW5maW5pdHkKLSAgL2xlc3NlcXVhbC9ncmVhdGVyZXF1YWwvcGFydGlhbGRpZmYvc3VtbWF0aW9uL3Byb2R1Y3QvcGkvZ3JhdmUvcXVvdGVzaW5nbGUKLSAgL3NwYWNlL2V4Y2xhbS9xdW90ZWRibC9udW1iZXJzaWduL2RvbGxhci9wZXJjZW50L2FtcGVyc2FuZC9xdW90ZXJpZ2h0Ci0gIC9wYXJlbmxlZnQvcGFyZW5yaWdodC9hc3Rlcmlzay9wbHVzL2NvbW1hL2h5cGhlbi9wZXJpb2Qvc2xhc2gKLSAgL3plcm8vb25lL3R3by90aHJlZS9mb3VyL2ZpdmUvc2l4L3NldmVuCi0gIC9laWdodC9uaW5lL2NvbG9uL3NlbWljb2xvbi9sZXNzL2VxdWFsL2dyZWF0ZXIvcXVlc3Rpb24KLSAgL2F0L0EvQi9DL0QvRS9GL0cKLSAgL0gvSS9KL0svTC9NL04vTwotICAvUC9RL1IvUy9UL1UvVi9XCi0gIC9YL1kvWi9icmFja2V0bGVmdC9iYWNrc2xhc2gvYnJhY2tldHJpZ2h0L2FzY2lpY2lyY3VtL3VuZGVyc2NvcmUKLSAgL3F1b3RlbGVmdC9hL2IvYy9kL2UvZi9nCi0gIC9oL2kvai9rL2wvbS9uL28KLSAgL3AvcS9yL3MvdC91L3YvdwotICAveC95L3ovYnJhY2VsZWZ0L2Jhci9icmFjZXJpZ2h0L2FzY2lpdGlsZGUvLm5vdGRlZgotICAvRXVyby9pbnRlZ3JhbC9xdW90ZXNpbmdsYmFzZS9mbG9yaW4vcXVvdGVkYmxiYXNlL2VsbGlwc2lzL2RhZ2dlci9kYWdnZXJkYmwKLSAgL2NpcmN1bWZsZXgvcGVydGhvdXNhbmQvU2Nhcm9uL2d1aWxzaW5nbGxlZnQvT0UvT21lZ2EvcmFkaWNhbC9hcHByb3hlcXVhbAotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvcXVvdGVkYmxsZWZ0L3F1b3RlZGJscmlnaHQvYnVsbGV0L2VuZGFzaC9lbWRhc2gKLSAgL3RpbGRlL3RyYWRlbWFyay9zY2Fyb24vZ3VpbHNpbmdscmlnaHQvb2UvRGVsdGEvbG96ZW5nZS9ZZGllcmVzaXMKLSAgLy5ub3RkZWYvZXhjbGFtZG93bi9jZW50L3N0ZXJsaW5nL2N1cnJlbmN5L3llbi9icm9rZW5iYXIvc2VjdGlvbgotICAvZGllcmVzaXMvY29weXJpZ2h0L29yZGZlbWluaW5lL2d1aWxsZW1vdGxlZnQvbG9naWNhbG5vdC9oeXBoZW4vcmVnaXN0ZXJlZC9tYWNyb24KLSAgL2RlZ3JlZS9wbHVzbWludXMvdHdvc3VwZXJpb3IvdGhyZWVzdXBlcmlvci9hY3V0ZS9tdS9wYXJhZ3JhcGgvcGVyaW9kY2VudGVyZWQKLSAgL2NlZGlsbGEvb25lc3VwZXJpb3Ivb3JkbWFzY3VsaW5lL2d1aWxsZW1vdHJpZ2h0L29uZXF1YXJ0ZXIvb25laGFsZi90aHJlZXF1YXJ0ZXJzL3F1ZXN0aW9uZG93bgotICAvQWdyYXZlL0FhY3V0ZS9BY2lyY3VtZmxleC9BdGlsZGUvQWRpZXJlc2lzL0FyaW5nL0FFL0NjZWRpbGxhCi0gIC9FZ3JhdmUvRWFjdXRlL0VjaXJjdW1mbGV4L0VkaWVyZXNpcy9JZ3JhdmUvSWFjdXRlL0ljaXJjdW1mbGV4L0lkaWVyZXNpcwotICAvRXRoL050aWxkZS9PZ3JhdmUvT2FjdXRlL09jaXJjdW1mbGV4L090aWxkZS9PZGllcmVzaXMvbXVsdGlwbHkKLSAgL09zbGFzaC9VZ3JhdmUvVWFjdXRlL1VjaXJjdW1mbGV4L1VkaWVyZXNpcy9ZYWN1dGUvVGhvcm4vZ2VybWFuZGJscwotICAvYWdyYXZlL2FhY3V0ZS9hY2lyY3VtZmxleC9hdGlsZGUvYWRpZXJlc2lzL2FyaW5nL2FlL2NjZWRpbGxhCi0gIC9lZ3JhdmUvZWFjdXRlL2VjaXJjdW1mbGV4L2VkaWVyZXNpcy9pZ3JhdmUvaWFjdXRlL2ljaXJjdW1mbGV4L2lkaWVyZXNpcwotICAvZXRoL250aWxkZS9vZ3JhdmUvb2FjdXRlL29jaXJjdW1mbGV4L290aWxkZS9vZGllcmVzaXMvZGl2aWRlCi0gIC9vc2xhc2gvdWdyYXZlL3VhY3V0ZS91Y2lyY3VtZmxleC91ZGllcmVzaXMveWFjdXRlL3Rob3JuL3lkaWVyZXNpc10KLXBkZk1ha2VGb250Ci0lJUJlZ2luUmVzb3VyY2U6IGZvbnQgWk9WTVJEK0NNTUkxMAotJSFQUy1BZG9iZUZvbnQtMS4xOiBDTU1JMTAgMS4xMDAKLSUlQ3JlYXRpb25EYXRlOiAxOTk2IEp1bCAyMyAwNzo1Mzo1NwotJSBDb3B5cmlnaHQgKEMpIDE5OTcgQW1lcmljYW4gTWF0aGVtYXRpY2FsIFNvY2lldHkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0xMSBkaWN0IGJlZ2luCi0vRm9udEluZm8gNyBkaWN0IGR1cCBiZWdpbgotL3ZlcnNpb24gKDEuMTAwKSByZWFkb25seSBkZWYKLS9Ob3RpY2UgKENvcHlyaWdodCAoQykgMTk5NyBBbWVyaWNhbiBNYXRoZW1hdGljYWwgU29jaWV0eS4gQWxsIFJpZ2h0cyBSZXNlcnZlZCkgcmVhZG9ubHkgZGVmCi0vRnVsbE5hbWUgKENNTUkxMCkgcmVhZG9ubHkgZGVmCi0vRmFtaWx5TmFtZSAoQ29tcHV0ZXIgTW9kZXJuKSByZWFkb25seSBkZWYKLS9XZWlnaHQgKE1lZGl1bSkgcmVhZG9ubHkgZGVmCi0vSXRhbGljQW5nbGUgLTE0LjA0IGRlZgotL2lzRml4ZWRQaXRjaCBmYWxzZSBkZWYKLWVuZCByZWFkb25seSBkZWYKLS9Gb250TmFtZSAvWk9WTVJEK0NNTUkxMCBkZWYKLS9QYWludFR5cGUgMCBkZWYKLS9Gb250VHlwZSAxIGRlZgotL0ZvbnRNYXRyaXggWzAuMDAxIDAgMCAwLjAwMSAwIDBdIHJlYWRvbmx5IGRlZgotL0VuY29kaW5nIDI1NiBhcnJheQotMCAxIDI1NSB7MSBpbmRleCBleGNoIC8ubm90ZGVmIHB1dH0gZm9yCi1kdXAgNDUgL2Fycm93aG9va3JpZ2h0IHB1dAotZHVwIDU4IC9wZXJpb2QgcHV0Ci1yZWFkb25seSBkZWYKLS9Gb250QkJveHstMzIgLTI1MCAxMDQ4IDc1MH1yZWFkb25seSBkZWYKLWN1cnJlbnRkaWN0IGVuZAotY3VycmVudGZpbGUgZWV4ZWMKLWQ5ZDY2ZjYzM2I4NDZhOTdiNjg2YTk3ZTQ1YTNkMGFhMDUyOTczMWM5OWE3ODRjY2JlODViNDk5M2IyZWViZGUKLTNiMTJkNDcyYjdjZjU0NjUxZWYyMTE4NTExNmE2OWFiMTA5NmVkNGJhZDJmNjQ2NjM1ZTAxOWI2NDE3Y2M3N2IKLTUzMmY4NWQ4MTFjNzBkMTQyOWExOWE1MzA3ZWY2M2ViNWM1ZTAyYzg5ZmM2YzIwZjZkOWQ4OWU3ZDkxZmU0NzAKLWI3MmJlZmRhMjNmNWRmNzZiZTA1YWY0Y2U5MzEzN2EyMTllZDhhMDRhOWQ3ZDZmZGYzN2U2YjdmY2RlMGQ5MGIKLTk4NjQyM2U1OTYwYTVkOWZiYjRjOTU2NTU2ZThkZjkwY2JmYWVjNDc2ZmEzNmZkOWE1YzgxNzVjOWFmNTEzZmUKLWQ5MTljMmRkZDI2YmRjMGQ5OTM5OGI5ZjRkMDNkNTk5M2RmYzA5MzAyOTc4NjZlMWNkMGEzMTliNmIxZmQ5NTgKLTllMzk0YTUzM2EwODFjMzZkNDU2YTA5OTIwMDAxYTNkMjE5OTU4M2ViOWI4NGI0ZGVlMDhlM2QxMjkzOWUzMjEKLTk5MGNkMjQ5ODI3ZDk2NDg1NzQ5NTVmNjFiYWFhMTEyNjNhOTFiNmMzZDQ3YTUxOTAxNjViMGMyNWFiZjZkM2UKLTZlYzE4N2U0YjA1MTgyMTI2YmIwZDAzMjNkOTQzMTcwYjc5NTI1NTI2MGY5ZmQyNWYyMjQ4ZDA0ZjQ1ZGZiZmIKLWRlZjdmZjhiMTliZmVmNjM3YjIxMDAxOGFlMDI1NzJiMzg5YjNmNzYyODJiZWIyOWNjMzAxOTA1ZDM4OGM3MjEKLTU5NjE2ODkzZTc3NDQxM2Y0OGRlMGI0MDhiYzY2ZGNlM2ZlMTdjYjlmODRkMjA1ODM5ZDU4MDE0ZDZhODg4MjMKLWQ5MzIwYWU5M2FmOTZkOTdhMDJjNGQ1YTJiYjJiOGM3OTI1YzQ1NzgwMDM5NTljNDZlM2NlMWEyZjBlYWM0YmYKLThiOWIzMjVlNDY0MzViZGU2MGJjNTRkNzJiYzhhY2I1YzBhMzQ0MTNhYzg3MDQ1ZGM3Yjg0NjQ2YTMyNGI4MDgKLTZmZDhlMzQyMTcyMTNlMTMxYzNiMTUxMDQxNWNlNDU0MjA2ODhlZDljMWQyNzg5MGVjNjhiZDdjMTIzNWZhZjkKLTFkYWIzYTM2OWRkMmZjM2JlNWNmOTY1NWM3YjdlZGE3MzYxZDdlMDVlNTgzMWI2YjhlMmVlYzU0MmE3YjM4ZWUKLTAzYmU0YmFjNjA3OWQwMzhhY2IzYzdjOTE2Mjc5NzY0NTQ3YzJkNTE5NzZiYWJhOTRiYTk4NjZkNzlmMTM5MDkKLTk1YWEzOWIwZjAzMTAzYTA3Y2JkZjQ0MWI4YzU2NjlmNzI5MDIwYWYyODRiN2ZmNTJhMjljNjI1NWZjYWFjZjEKLTc0MTA5MDUwZmJhMjYwMmU3MjU5M2ZiY2JmYzI2ZTcyNmVlNGFlZjk3Yjc2MzJiYzRmNWYzNTNiNWM2N2ZlZDIKLTNlYTc1MmE0YTU3YjhmN2ZlZmYxZDczNDFkODk1ZjBhM2EwYmUxZDhlMzM5MTk3MDQ1N2E5NjdlZmY4NGY2ZDgKLTQ3NzUwYjExNDViOGNjNWJkOTZlZTdhYTk5ZGRjOWUwNjkzOWUzODNiZGE0MTE3NTIzM2Q1OGFkMjYzZWJmMTkKLWFmYzBlMmY4NDA1MTJkMzIxMTY2NTQ3YjMwNmM1OTJiOGEwMWUxZmEyNTY0YjlhMjZkYWMxNDI1NjQxNGU0YzgKLTQyNjE2NzI4ZDkxOGM3NGQxM2MzNDlmNDE4NmVjN2I5NzA4Yjg2NDY3NDI1YTZmZGIzYTM5NjU2MmY3ZWU0ZDgKLTQwYjQzNjIxNzQ0Y2Y4YTIzYTZlNTMyNjQ5YjY2YzJhMDAwMmRkMDRmOGYzOTYxOGU0ZjU3MjgxOWRkMzQ4MzcKLWI1YTA4ZTY0M2ZkY2ExNTA1YWY2YTFmYTNkZGZkMWZhNzU4MDEzY2FlZDhhY2RkYmJiMzM0ZDY2NGRmZjViNTMKLTk1NjAxNzY2Nzc3OTc4ZDAxNjc3YjhkMTllMWIxMGEwNzg0MzJkMjg4NGJiNDJkMWYyMjQ5NzYzMjU4ODM2NTcKLTA1YWNiMDIyZDFlOWNiNTU2ZTM3YWY5MTkxN2M3OGU5ODIyOWUzYTRkYmYwM2FlNzQxOTk4NTQyOTc3YWQ2ZGYKLTE3NjBmYzFmMWE0Nzk0NjQ5MjJhZmRhMmNiYTc5NjFlOWRhNjk2YjcxMjA1ZTE5YzU0MmM5N2YyNTQxOWM0M2MKLWZhMWEwNDJiYTBjZjU2MjJmZmJkM2U3NzVkMGQ1NjQxMzVkOTliOWZmYmEwMTFlZWJjNDA2NmIwMDNjZTJmODgKLTgyNTkzNmQ3MzkzZDA1ZDM4MDQ2MDFjZWU5ZDEyMzEyMGZkZjczNjI0YTlkNGUzNjFhMjhlOTk4YWNlYzUzZjgKLTdhNjJhMGFlZTMzYmUyZTk2NTQyNTM0YThhZjI0NDk3ZDFjMzc3Y2Q3ZjcyMzc2N2I0NDg1N2Q5NGM2Y2RhN2EKLWMzZDZmMDA4N2ZhMzY2NTVkZDJiODFlYWVjYjMxZmU0ZjRhMmZiMWVhOWZiZThiODNkMzU4MjZhYzkzZmJiNGYKLTJiZWUwMTRmNDFmOGYyNzY1MTBjZjVjZTM1YzM5NTRlOGNhZmM1MjFkMGMzYWI4MGVhOGM3ZmMyOTQyN2ExZDQKLTQyZDZmNmMxODAwOTE5ZTU4ZGU5YWUxMjMwNGQ3MThhZDgwZmViYmI0MTJkYTU0MTUzNDY5Y2Q1MWEyODg2MjgKLWFkMTA5YmFhNzc5ODE1MjViM2Q5YjBlZmU1OTM1MzdmY2JiODUyMGQzOGNjY2JkNWRiMTcxYTAzODVhNDMyYzEKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLWNsZWFydG9tYXJrCi0lJUVuZFJlc291cmNlCi0vRjE0N18wIC9aT1ZNUkQrQ01NSTEwIDEgMQotWyAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi9hcnJvd2hvb2tyaWdodC8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmL3BlcmlvZC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWZdCi1wZGZNYWtlRm9udAotJSVCZWdpblJlc291cmNlOiBmb250IEVSVkJGVCtOaW1idXNNb25MLUJvbGQKLSUhUFMtQWRvYmVGb250LTEuMDogTmltYnVzTW9uTC1Cb2xkIDEuMDUKLSUlQ3JlYXRpb25EYXRlOiBXZWQgRGVjIDIyIDE5OTkKLSUgQ29weXJpZ2h0IChVUlcpKyssQ29weXJpZ2h0IDE5OTkgYnkgKFVSVykrKyBEZXNpZ24gJiBEZXZlbG9wbWVudAotJSAoVVJXKSsrLENvcHlyaWdodCAxOTk5IGJ5IChVUlcpKysgRGVzaWduICYgRGV2ZWxvcG1lbnQKLSUgU2VlIHRoZSBmaWxlIENPUFlJTkcgKEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSBmb3IgbGljZW5zZSBjb25kaXRpb25zLgotJSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBwZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gaW5jbHVkZSB0aGlzIGZvbnQKLSUgcHJvZ3JhbSBpbiBhIFBvc3RzY3JpcHQgb3IgUERGIGZpbGUgdGhhdCBjb25zaXN0cyBvZiBhIGRvY3VtZW50IHRoYXQKLSUgY29udGFpbnMgdGV4dCB0byBiZSBkaXNwbGF5ZWQgb3IgcHJpbnRlZCB1c2luZyB0aGlzIGZvbnQsIHJlZ2FyZGxlc3MKLSUgb2YgdGhlIGNvbmRpdGlvbnMgb3IgbGljZW5zZSBhcHBseWluZyB0byB0aGUgZG9jdW1lbnQgaXRzZWxmLgotMTIgZGljdCBiZWdpbgotL0ZvbnRJbmZvIDEwIGRpY3QgZHVwIGJlZ2luCi0vdmVyc2lvbiAoMS4wNSkgcmVhZG9ubHkgZGVmCi0vTm90aWNlICgoVVJXKSsrLENvcHlyaWdodCAxOTk5IGJ5IChVUlcpKysgRGVzaWduICYgRGV2ZWxvcG1lbnQuIFNlZSB0aGUgZmlsZSBDT1BZSU5HIChHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkgZm9yIGxpY2Vuc2UgY29uZGl0aW9ucy4gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgcGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGluY2x1ZGUgdGhpcyBmb250IHByb2dyYW0gaW4gYSBQb3N0c2NyaXB0IG9yIFBERiBmaWxlIHRoYXQgY29uc2lzdHMgb2YgYSBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIHRleHQgdG8gYmUgZGlzcGxheWVkIG9yIHByaW50ZWQgdXNpbmcgdGhpcyBmb250LCByZWdhcmRsZXNzIG9mIHRoZSBjb25kaXRpb25zIG9yIGxpY2Vuc2UgYXBwbHlpbmcgdG8gdGhlIGRvY3VtZW50IGl0c2VsZi4pIHJlYWRvbmx5IGRlZgotL0NvcHlyaWdodCAoQ29weXJpZ2h0IChVUlcpKyssQ29weXJpZ2h0IDE5OTkgYnkgKFVSVykrKyBEZXNpZ24gJiBEZXZlbG9wbWVudCkgcmVhZG9ubHkgZGVmCi0vRnVsbE5hbWUgKE5pbWJ1cyBNb25vIEwgQm9sZCkgcmVhZG9ubHkgZGVmCi0vRmFtaWx5TmFtZSAoTmltYnVzIE1vbm8gTCkgcmVhZG9ubHkgZGVmCi0vV2VpZ2h0IChCb2xkKSByZWFkb25seSBkZWYKLS9JdGFsaWNBbmdsZSAwLjAgZGVmCi0vaXNGaXhlZFBpdGNoIGZhbHNlIGRlZgotL1VuZGVybGluZVBvc2l0aW9uIC0xMDAgZGVmCi0vVW5kZXJsaW5lVGhpY2tuZXNzIDUwIGRlZgotZW5kIHJlYWRvbmx5IGRlZgotL0ZvbnROYW1lIC9FUlZCRlQrTmltYnVzTW9uTC1Cb2xkIGRlZgotL1BhaW50VHlwZSAwIGRlZgotL1dNb2RlIDAgZGVmCi0vRm9udEJCb3ggey00MyAtMjc4IDY4MSA4NzF9IHJlYWRvbmx5IGRlZgotL0ZvbnRUeXBlIDEgZGVmCi0vRm9udE1hdHJpeCBbMC4wMDEgMC4wIDAuMCAwLjAwMSAwLjAgMC4wXSByZWFkb25seSBkZWYKLS9FbmNvZGluZyBTdGFuZGFyZEVuY29kaW5nIGRlZgotY3VycmVudGRpY3QgZW5kCi1jdXJyZW50ZmlsZSBlZXhlYwotZDlkNjZmNjMzYjg0NmE5ODliOTk3NGIwMTc5ZmM2Y2M0NDViYzJjMDMxMDNjNjg1NzBhN2IzNTRhNGEyODBhZQotNmZiZjdmOTg4OGUwMzlhYjYwZmNhZjg1MmViNGNlM2FmZWI5NzlkNWVhNzBmZGU0NGEyYWU1YzhjMDE2NmMyNwotYmY5NjY1ZWVhMTFjN2QyMzI5YzFhMjExZGQyNmJiMzcyYmU1ODIyZjVlYTcwZDk5ZWI1NzhjN2JlZmQ0NGNkZgotMDQ1YTM2MzA1NmU1ZTFjYzUxNTI1ZWE2ZmMwNjFkY2ViYjMzNzIwOGVmZjcyOTgwMjM3NmEyODAxNDI0ZjY3MAotMGU3ZTYzOTdiMjhmMTViYzEwYjQwMDEyYjBhM2VhZWIyNjkzZThmN2Y2MjdjNGM5YzdjNmM1YmZmMTA1YzFlNAotMWIyYjllOGYwOTI1M2I3NjA0MGQyNjhiODA3MTllMWIzZjVhNTVhYjdiODkyYWQ1ZTY5YWNhY2M2YzE2NDBlYgotMzA2N2JmYzY0OTM4ZjQxNjM2ZGI4ODMxODgzYmRkYWJjNjc3N2RlZTE3ZjJlODRmMWQ1MzBiYzc2ZjUxYzYyMQotNzVlYzZiNzI3YTgyYzE5M2QxYzA4MDFhYzQ5MmJiZTI4MWI0NjYyNmJkMjFmMmFkYmJmZDE0NDc5M2VmNzU0YQotZWE1ZjFjZGEzMzEwZTgzZDc4YTA5ODE2MGM2NmQ2YjBjNjhkNDk3Njg5OGQ5ZGMxYTA4ZDAxNzQwYWMzZTdmNgotOGQzY2UwYTdlMTA5MTA0MjQ4Y2I4NjMxODQwMGJkODJlZjg5NGVmZDljOTQ1NmU5NzA1NTI4NmMxNDRkM2VmYwotZDI2MjUxMTBmMWFlNzYyNDEwNzliZWMxOTkzOWFjOTYyZTBiYTgxMzM1OWMxNWIwN2M3NGQ1ZTk4NjhlMjE2NwotZWExMTk5ZDIxY2E4ODI3Y2RkZjFiZTgzNTcyNjFiZDMyZTc5ZmVhNmJjNDc1NTc3YzVmNjg0ODM0NWJjZTU4ZAotZjU0MzUyODE1NzJhZTZiMzNiNTM2MDdlYmVlNmY4NjJkNGM3NTJhZWU0M2MwMGNkYmZkMjU4Yzc3NjViMTM1OAotNWQ2MTY1ZWUwMzRlNTgxNWRlNzljYzI2YzRhNzIwNjA3YmFmYTYwNDk3MTBlZTM3ODJiYzJjZDg0ZmUyNDczZgotMTMzNWQyMGEzYjZlOWU4MzU1YWYzNjY3M2NkYmU2M2MyN2Q0ZjBlMTgzZmVkYWIxMDAzMWIxZWUzM2I5NTczYQotMmUxOTYxYjdjNmJhYTQxZjdjM2VlNzA3ZmU4NjA3MWVkZTU3NTZhMDBkN2IzYmYwYTIxYjdjM2NmNDEwOTNjZAotNjZlY2NjY2MyMmY0NTM0OTEyY2I5MDBiMDhlNjk1NzRiMDdmMjQ2MzA1ZGNiYzIzODc4MDI3OGFlYjhjOWU1NQotM2QwOTZhOTQ0ZWM3YWE5ZjY5N2YzNTRhYTEzN2RmOTBhOTU0N2VmZWMxY2JkNTY4Y2I5OTk5NzlmNWFlYzZhZgotYTg0ZWRhZWUxNTY0ZDE3ODU0MWNmNDYzMTA4MTc4MTYwOGZkMzg5NjQyNTdjZjg5YjFjOGUwMTIwYjNmNmFmMAotNzkzNTk3YWQ1NTNjZWU1Y2NjZDVjNGYwOWNiMGI0ZTk5OGU2ZTc2MjQzMTkxYWY3ZTkzODMzZDA2NzgzM2YwZQotNTM2NzBkN2U5OTZlZDY3Y2ZlNjY5OWE2ZTM4MTU5MzJhZDI3MmFmNDgyOWMyZWUwOGEzMGQzOTM4YzkyOGQxYwotZTg5YWY3MTE5MmVjMTI0N2NhMjMzMDkzYWFmYTU0ZmZhNThmNGFhZjNmZTljNjIzMDJlNTk4ZjRmZjhjYzMyYwotNGQzMTgzOTFmN2EzNmQwZDhiNDE2ZGQzNmQ3NzZiMzAxNDI1Y2JhZjgyZDUyMDE0MTIzODc4MTExMWExNGNjZQotNzkyN2UyYWYyMWVmODM3NTU4MDAyNTM5YWFlYjE3MGZhN2U3ZTM3ZWZkNDQ3YzM3ZGI0NTVkMmYwODUzMzE1NQotNTNmM2M1YzNiZTQ4MTc2ODBlZmQwYmEzYTExNGRiNmFhYmE2YzRkMGQ1N2IwOWVmOGJhYWQ0NjM5OTY3MThjMQotOWQxNTVhNjJkN2FlODJlYWU0YzgyNzYwYzU5NGE2YmEzYzdlZTQyOTBmMGQ4OThiYjNlNDA0Y2NhYTkxZmVhNAotZWFhMjE0NmFjNmEyM2Y2YzVhOGFhZTgzNGEwNTg3ZDk5MDAyNGJiZThkZTQ4NWM3MWI5MTZhZDk2ZGQ2Njc5MgotYTczMmExODhlNmE1N2M0NTllYmJkNzc1NmNmZDU0NzcwZTJhOGQ4MWJkNDYxOGQ5MTZhMzBlYzcwODRiMjQ5MgotNWY3N2FiMTQxNjk1NDdlZWRmZWZiNmYwM2M3ZDUzNjVjZWY1MTJkZjE5NDYyOGQ1ZmJlYTZjZjU2ZDBmNTM0NgotYjZiNmMxZGExZGQ4ZDgzMjFiODg4MDdiNTc5YmI2YTBjOGY2OWNkOTE5ZTMxMWI2YWRlOTAzYjQ3MGY0ZTBhMwotZGQ1MDE1YzY0MzI0NTJlY2VjMDQ4ZGNkMTQ4MTRlNDdkZWY0YTUzYzVjYTZmYTllOTFkOGEyOGM3MTlmOTM0OAotNTA5YzBlMTdkNjMyZjhjYjNmNzQ2OGJiMGU3ZjdmNjUyNWMwODZkYzdlZmI5OTdhNjBlMDU5ZDNkNDkzODQ4OQotMjNlNjBmN2M2N2ZhNmFhODA2MjU5NGYxMjJhNDhjNTRhYTdjMDQ5ODU5OTI4YTNkZmM3Mjc1MmFjYWQwNzRhYQotNDE2YzY2N2ZjZDE3NmRhNGQ3ZDMxYTlmNmJlNmYxNDZkNGE5ZGM3OGY0MTlmYWI3YzllNmM3NGQ0MGVhNjU5YwotMjQwOTgwODhiZWEyNmJmNWE3MjVmZTU2MDI1ZDFmY2Y4NDY1ZWQ3MTAzNzAyYWVmNzQ5NzNmNmZiNjk3ZTY0NQotZTkwMmQ2NTM1NGE0NGJiMzQ4OTAwN2M1NTVhNmEwOGJiMDU3ZWNhMjdjOTNiZmNlZTlkZTQyZTI3ODJmZWQ0ZAotNjY0YWQ3ZjJkMjM4YjdlZGExY2E0YWQ0NzNiYjk1NTllMTFhOWYyMTRlMjU4Y2UxYTJhNjA1MTI5NzViMTEyYgotMzM2ODY0MjM4YTM2NzMyYzNhZGFjYmZkNTJjODVhMGRjODA5ZmY5NTVmOWM4MTQwMWY3MjEwN2YzZDI2Mzk5OQotYTY5ODM2ZDc2ZDIyOGFiNGY5NTRiMDBkYTA3YmM0YTRlMTY1ZjJkYzVlY2Q4MTM4Y2M0MDhhYzIyMjE3YjE1ZAotOGJhZjA0NDA4ZDRiNDdlNTUxMjliMGU1OTZjOTNkMTBjZDQyMzcyMjkyZTFmZjQ4Mzg2OGU4NTEwMDc2ZjdmMQotZWQ4ZWFkMWJkZWUyYjQ5NTMzZjg3ZGRiZWYyYWJkY2JjYTQzMjMwN2Y3YWQwYjNjM2Q0NzIxZjNlNjdlNjA5YgotYjA2ZjhiN2U2NmFmN2M4NDNhYTFmNzFiZGFkZjBmNGZiNmJhYWM4NDgxNWM4MTU0YTAwMjNjZmI2ODI4MmI0YwotOGUyNGU0NzhmODFmOGQyNmVmODJkNmQwZTFkYTRhNjU0NzhmNGExZjY1YTdkZmI0ZDE3MDAyMDc4NTBjMzNmOAotMTQ4MTU4YTc4NGI0NTJhYzY4NzQwODAwMzllMjI1OTQzMWMwNWM0NTIyZjFkNjc1MjJlMjczYjQ0M2FlOTgyMAotYWRiNTMwM2NkMGQ4MzlmZmQxN2ViMWZjNjk1NzE1OWE1NjlmNjQ4NzNiNGIzYmY5OTM0OWM0ODZhM2FmMmIyMAotYjZiOWM0MTI2MzMwMGFiMDg0NGQyNGRhZjc4MGI0ZjMyNGVkYTg1NGQ0ZTIxMGRhZWRjMGUzNGY0YjY3ZmNhMgotMTI2NWVhMzc2NGY4Zjc1NTAwN2I2MmU5ZTE4ZTgwYmQzMGYzYjk2MTI0MDY1MTk4YzBhNTk4NWJhMjE3MjU1MAotOGM4ZWFiZTc3YjI2ZGY0NDUxZjUwNjg5NTZmY2UxMTEwNDFhN2QyM2Y2ODFmZjJjMWI5MzM0NGZlNjg4NzA4YgotNjFhNDc2NzRjMzE4ZDA3OGZjNGJmNzkyMTc2NTk5ODdkY2QxYmRhMWUxYjc0MDY4OTYwMDM2YzQ3MjkwNjE1MgotY2FmZTRhOGE3MDJkMjcxYTAyYzc5MGVhM2U0NDBlNGY0MTU1NTZlYzcwM2EyM2I3YWFmN2JjNTBjNWEzMmY3ZgotZmVlNjQyNjQzM2U5NDVjMjhiZTAzOGNiZTVlZTBlNzkzMzk0NWYwNTI3NTdkNDgwYzU4ZDRkN2RjNGFiOTI0ZgotOTg1ZTA1NGZkNTUzZDFjMDM3YmVhYmEyOWIxNGU4MjNhNDA5MWIwOGVkNjAyYTY5ZDFjM2ViMGZkNjNmYWE5MwotMzZkYjIyZTY1ODhkM2QyZmE3Mjc5MTYxNjMwMzA5NThjYzg5YjNjZTk5ZGRlZGE2MTkwZjk3ZTAzOWY5ODIxZAotYWI0ZTRkOWExNWNiNTA5NDA0MTc5MGI5OTVkODk1MDQxMmJiZjA0OWJkMWQ4YWZlYjhiZGRhZmM2YWVmNzQ4YQotZjI1MjNiODMxM2UxM2Y5MGY5NjZjMTM0ZTM5ZDUyZTEwYjYzZTMwYWFkY2E0MmJiYWM1OTYyZTRlM2Y3MTMzNwotYmMyZmQ0MDY3OWJlYjQ0ZTExMTI1MDM1MmYwNGNiMDQwNDE1OGJhZDlmNzQ0MTZjOTQwMDNiZDEyYzg4ZDllOQotNWNhYzNhM2ViNTc1NzMzZWI0NGEzYzMyOTQ2ZGFjZGIzNDA1ZjViNGEyNTEzZmRmOWU2YmIyZTZlMjFjNTM4NQotNmM1MjdjY2MxMjBlYWY5NWQ0MDA4NDdkZmM5ZTZhNDA4MDYzMzA0NDJlMTg5NWI1M2E2MTg4ZTU3YzY1YjQ2NgotZGEyMDM3ODVmYzMyMmVmZDY0ZjJlNmY2NmY5OTZiZjdjYTAzNWJiMjExNzY0OGE4ODU3ZjFiMTA0NjlhZWUxMAotZGQyMmQ3ODVkZTI3ZjAxZjFkNzI1YjU2YjM4MDkxNzAwNGEwNmFmYzAwNDYzMzVmOTdhMmZmMjBlYTQ0Zjc5NAotYzFkZmQ2YjEwNzU0OWUzOTI0N2E1Y2IzZjljMzdhZjg0OWU5YzVmMDYyMTRhNTcwMTEzZDkxYWQ0ZTE0ZDljYgotYWFkZjhlZjkzYTkzMzc5NWMwY2JmYjcyMDRkYzYwNWI0YjNiOTViOWZlZDAzNzJkOGRmNjM0ZjcyOTMyOThhMwotNmFhNGFiZDFmMjEyZWNkNWQ0YWM0OWQ0Njc1NjczODVmODBlMTYzYjk0NjRmNjU1NGU0OGZmNzhkNDVhYTQwMgotYjVlZTA5M2E4Zjk2ZGE0NTUwNGU0MWJmYjFhNzJmNTc5MDMxZWZhODAxNjkwYTMyZjRlMjQ4YTVmNzczMDI3ZAotZGEzZjM3MjFkNGZiNDgxZmQxYjhlODEwNTRhYTRhNzAwZTk5NjRhODc4NzFlMDFmMDNmZTgwYWM0MjE1Y2RmMgotN2E0OTQ0Y2Y4OWE4OTM2Mzg3MzA2MzEyNjExMTRmOGFhYjk2N2ZlMjllMjgwMTI0ZmE4ZDUxZmM5NGIxYzU1MgotZGI1OGUwMzgwOTcxNzJkNWY2MzRjZWFmYjg3N2Q3Y2FjYTAzNDM2Y2Y2YmY0MGFmZTRkYzk5Y2UwOGQzNjA1YQotNzhlMmM5MGZmZTc2NmZkM2FjMGU4YjJhYjI0N2MzZjY4OWE1NWUzNTBjYmU4MGE5YTQ1MmJmODY2NmQ1NzEwYQotNmZiYmM0NWU0NjkwYWZjNjI1YmI3YThhMjliYzE3YWE1ODJiNmUyMDBiZDUxMjNlMjZiMmQ0NDU5OTJhM2E1ZgotN2FhMTI4YzNmNjIzMDU4OGM0MWM2YzQ1NjY1NTk2MWI4MjNlNjVkNzQ3MWFkMTZmOWFlYTA3YzJiM2QzOWM0NQotNzI2ZjAyM2VhNDc4MDcxOWEzNjU2YWUxODY3MGRhYTNiYzA4NGU2MGZkZjJiYTFmZjAyMDRmMjg1ZDcyZDlhOAotMjY5NDMwZTQwNmNkMzY3NDFiYjIyN2ExYWEyOGNlZGY5NDg0Njg5YTc4ZGQ1NDk1MzM3YmRlNjZiNWE3OTBmZQotNGFmNzYxYzBiNTA1ZmY5NzRlNGM3ZjY3MzQ4ZWIxODg3YjViOTMxNWE3YjM0NTVkMzY3N2JjNzdiNjFkNDhlYwotZjVlYmRjNzNiMjVlZWFmMTJhNmM4OTZhNTRiNDk5YmE1ZjI4OTdiN2RhOTQ2NWMzNDU2MWIyM2UwZTc0MGVlYwotZmM3YWRmOTQ0MzI5ZTAwM2Y1MjY2Yjk0YTQyNWYzODY0YjE2N2EzNGQwYjlkMjU5ZmNkOGQ3NDFjOWRjMGZiNQotYmZmYjhjOGNlZjQ3MGY5MjNkNzk2MmNiNTgwNmM2Nzc2MzM1OGE5ZjZjY2Y3ODIyMGYyOGU0NWE4NGIwZmYzNQotYzU4NWMxOGIxOWM2MWI1MWNiZTU4MDA3ZmI4NTJlMGE5MmVkNmQ3MDRmMTVmZjBmODYzNTI4ZGI3MmVhM2RkNAotM2VhMGFmNDY2ZmE1YjYwYWM0NDkwYWE1ZGIxOGE2NDljNDQyYTYwYjRmODI0ZTkxNDkxNTM3NmExMjdkYmUzMAotODVhM2M1NmVmNDIzMzU3OWI3NTZlYjYyZTA0ZmVhMGE1NTUwM2Y4OGJmZGYwMTE0MzZkOWQ1MDg4ZTAyN2MyNgotZGFhODE2NTg0MmE0ZGRkNDNmYzNhYjhkYWRiYjRkNTNjNWJhOWE1YjUxZjMzZDUwNWZlM2VkMTY4MTA5ZjFmMwotOWFjNWMzMzU3ZTQ4Y2Q5ZTNhZGNjZjJkYWFhZDgzMTAwMGUyNzMwN2Q2Y2IyYWE2ZWNmNWY5MmNmZjM5YjI2NgotNzNiMWQzNTg3ZTAyOTMxMzEwMWE5MDc1YWIzNWRlMjYwZjIzZjNkM2JhYjVmN2E2MTM0ZmQwN2MwNzZkY2Q5OQotN2JmMmU3YzQwZmYwYzBmYTEwOTYzMTJiNzkxZDYzOGIwMDM4MTM4ZWQ1YzU3OGU1MTMwOTQ0NDY5MWMxYjE4MgotOGIzNDZmZTAyODZlMTNlMzkwN2JlZGExMzA0NDE3N2M3ODhiNDk0OGE0ZGQzOThhYTlmYzMxNzY2NWIyNTBhMQotMzU3MGE3ODM4MjFkYjU4MTU5YjgyNWIxNGMyYTYzOWY2Mjk5NWEwNDllZWViODkwNDIyNmE4ZjhlMTRhNzk1OQotNzMxYTc0ZGM0YjIxNWQ3ZWMwOTVlYmU4NmEzYmYwNzA4MGNkYjBkY2U2ZDA2ZmNjMmUzYTU3YmIwNDk0NGY5MAotOGYzOTViZDY1MTE3OTg0YzE1OTYzMDNjMjc4MWUzOTk3YmJmYjZhYjlmMzU0ZWJjZWE3NDA0Nzg1ZDhkZmIwNAotYjE5YTNhNjc5MjgwN2ZlNWRlYmQ2ZWVlYzFiYTliYTlhMzc0NzNkNmM0MzViZGVmZDViMmVhOWMyMWQ5ZWM3OQotMDA0M2I1YWQxYjBhNTBmOWEyNDU5NGQwMGY4ZmQxNTU2ODFjMzNkZjhmMGMwYjNjZDVhNGZjMjc1ZGE2NWRmYwotNmM2NWVkODcxMzk1NmJiOTRiNjI4MWE0ZjM5YzhlZjcyYjkzMmFkZjNmNmVjZmE2OTdmZjdkODRmOTNlN2EyOQotOGZhYjdiNDgxNzJlMzJiYTdiMzEzNWY0YTI1MDE5NjFmNGExYzUwNDAzZmMzOGM3MTU3NDNiNTUwOTVlY2MxYQotMzhmMTFmMTQ3NTUyMWZhMDBmOTUwNzc2Mjc5ZThhMzc3ZmI0Y2E0ODcwYzhkYWE0ZmM2N2VmZTRkYjhlMzdjMAotZDU2YWQ5M2NkMzM0ZWJlMThkZDZkOTJhM2VhNDhiMjllN2U3NmVlYzVlOGFhMGRiMjBhZDY5MDg2OTA1MzQyMgotODU2N2M0YjcyYmUyMDkzNDI2Njc3OTg4ZjhhYzlmN2ZjZGUwZGFjOGJhZTE3NTA2NmE0ODVmM2IxZDBjMjEyOQotOWUzOGE5Mzk5NmEwZWI3YTMzNTdlZTQzYmNkZjg3NDliY2ZkN2U3ZTBhMjNjN2Q5ZTExOGM0ZGE3ZmZmNTY2MQotMDc0NTRmYzFhYjI4YTg3NWFmN2U1MTJiMjQzMjI1NmM0MDFlYTQ2MmQ5YWViMGEyZjk3MjcwY2YyYWE4ZWM1MwotMWU1MjQ4YWQ1MmIxYjc0YTM3NmZhYWY3NzcyZTk0OGY0MzNjZWEyZjBlZDRkYWJlYzAwODU1YTM5NGZlZGI4MwotMWRhZmYxZDk3N2U5YjgxNmViZDI3ODAxNTA1ZGNhYTUxZjlhYjUzMWU2YzEzNThiMjc1ZDNhNmJhMzhmNGY0YwotNTI4ZjJkY2VlYTNhNDA0YTYzNjJlM2NmZWY5ZDkwNGI1NzM1NzFhNGU2MzRkNDg1MmYzYjkyMjQ5NWFmMTljMwotYzYzYzczNmQxZThhNWIxNWNmYzRkYTU4ZjI2ZjIyYmUyMzNiNDU3OTM3NzIyNzExMGY4ZmU1YjBkZjU3YjQ5NQotMmMxNGQyMDExYjYyMTViODU1YzM2ZDkwMWYwMDFlMjQyNjEwODlmNWVkZDM5ZjdlNWJiYjJiZjkwYzZmNWM1ZQotN2JhODkyODQzNGY1MjY4OTM2NWVkNDgxMjM0MTRlYWQyZTAwZjg4NjBlNjBhZmI1ZjU5ZDI3MTVjNGVlMmIzYgotMmIxMDM5OWNhMWMzZjcwMjU5YzYzNzYyZjY0YTVhMWNiNmIxOTk1MDMwYTdkNzc1YTA0Y2Q3N2E5NTQzNmU0YgotYzNiMWYzZDE5NTlkZWQ5ZjM1ZmRkN2ZjZGU5YjA1MTI0NTQ0NmRjYWMxMWZiM2QwMjI4Y2U0YzAxMmEyZjIwMQotODFlYzNkZDJhYTFiZDY2ZWMwMmM5M2U0Nzg0MjY4Zjc1NGM5ZjBlYmE0MmQyN2I3NTViYzU4YWQwMGUwOWUwNAotZTA1ZmQyMWVkMGMxNjAzNTNkMmY1NDY3YjU5MDNiNGUxZDFiODY2NmFjY2UwNmFkYTk5YzA2M2M2ODRkODczOAotM2QzMzhjNTc5NTk1ZDFlMmFiMzAxYzQyMzYxODNjZjJjM2JlMDMyMGVlODNjZGU0ZWEwNTAxNjBiNTg3ODdmMgotYmFkODE1NDgyNWM5YjI5Y2MxNDY4MmUxNWRiNWY1M2FiYTEwOTc5OWMxMGYyNWZhMmU1NDU2MGZkYWZlNmM5MQotYzI0NmFlNTZlZGViZTBhYTMwZTE1MmI2MWZhNjRlNTE3ZjZjYzQxYWM3YjNjMjVlY2FkYTMzZTNmNmQ2ZWU1ZgotNTYyNTQyZTBlNjZkOWMwN2FhOTg4OTUwNWQ1MTQ1MmNjMmVlNzNlMzY4M2UzZmFiZTI2ZjAwM2I4N2Q5ZmJkYwotYTM3NmU4NWFkOTU0N2MyM2U0NjNmYTA3MzQyOWQzMmNhMGU1ODMyNjM4NWE4OTEwNmQ1YjcyY2RlM2MwMGMxMQotYzVmNDBkMWU4YjYxZTZjYjFjYzY0MTZlMjhhZmE2Y2FhNDY5NjgyZWM4MzY1MDgxYTIxZDc3YThiMWRmNzE2NwotNjM0NDIyNmJiOWE3NTMzYzBmZGZlMTUzODc4YTNhZjMwODhlNTIwYjk0OTMzZDAwOTljMmZmODk5NzRiZjc5NQotZDg3MWI5ZTVkNDBjZDdhYWM3MmE5OWYzNTFkODI0Zjg2ZDMzY2M4OWJkNzBkZDQxZjFhODY2NjU3YmFjM2E1OAotYTRlZWRmOTk3ZWI0OWY4ZDk2N2UxNDhmMzgxZTc1M2Q1ZTY3MDgwZDI4NDNkNDRhMzU4NWUwNzg2MTViZWE0NwotNmM4ODI3NzNkOTk1ZjQxNTRmZGI3NzNhN2Q5ZTI5ZmU0NmU0NjRlNjAyY2QyMDYwNjNjOTZmYzUxYzMwZmZlZAotY2VjZGZhMjhhOTUxZGQ1MjExYWNkNjg0ZWQzZWZkOWZlYWE1YWE5OGIwOTFhZWNlODY4MTk5OWQ3YzhjZTcwOAotMWM2NGYwOWUxOGU2NDE5OGI4NDFkNzgyNGUwM2RlMTExMDE0OTM5NzVlY2IxYjdkNTU2NzE0NzI1YTE0YmRiNAotNWQ5MjM3ZWNmNjkzMjAyMTk4OTY0YzE1NTRhMDRhYjM0ODViYmY5ZmY4NjM0NDFkYTM1MTFkOGZlNjM2M2UzMgotYTM4YTExZjRkYzZhMWVlMThiZmEzYTFjMmM5M2E5MDY3NWIwYzIxOTU5MDU0YjE3YjFhZjRkNTMzYzg3YWM2OQotMDhkMGMzNDRmZTgxN2Q2ODE3YTc0ZmRiNDZmMzVkM2I0OGI5MTI4Nzg0ZjQzYTY4ZDgwOTQyNWM2NTcwYzYwMAotOWE3NjE5OTExMWU4OGExYzk4MDJkZTU1ODMzMjAwMGRiYjlkMTIxMTkyOWQ1MDlhZjU5MTViN2FlOGVhMWMzZAotZDI1OThmNTAwN2RlOGU3MzgzZjc0NTNmYzZhOWMwYjkxYzgwZTliMTc0MmJmNjQxOGRjYTY5NDUwNzg1ZmI3MwotMTJkZDIyODg4OWNmYmMzZjY3MTFhMjYwMjJiMjlmOTI5NWVlMWNhODQ1OTMwNWZiZjJiOTNjYjNmZmY1YjZlNwotMmI1YzFkMmM0ZDQ1M2YwYjlhNTNiNmYzNjExMzZiMTA0OGIzMGU3YzkwZTBkZThlZGRhNDIzZTU1Y2NiMmUyZQotZWU3YjUwMmFmMmJhZjMwYTkyYWY1NDI4NjliOGYyNmVlMjg1MDlkYzAxNDkyMDk1ZTBjMjdjY2FhMzBlMGRiNgotM2YwMmYxMWRjMGNlOGE5NGI4YThhN2VmNzM1ZTRmYWIwNDgzMGVmMDc3YThkNzg4YjIyNGMxODQzMzkyNzRmZAotNWY3YjU0N2I3N2Y4MWJhZDk4NWM3M2IwNWE3OWQzYzg2NjFhOWMyYjcxYzczMTNkOGI5Y2I1MGFlMDNhZWU5NQotMmRiZjFhZmM5ZGRmYzAwZDU5ZTZmOTkwMjFkZmZiYjY2YWNkZGFlZGY0OGRmNTQ2MmZjNTI4ZGZkYWZhNWU1YgotYTAzOWQ2YmI5YmRkMWE3OGU0NzY4NGEzYzUzY2EzMDdhYmQ1NjYwOTNjMmE0ZjZiOWYwYmU1MmQ0ZjFmMjc1OAotZWM0ODM3MGVhYjRlMWU2YWIzOTNhMjMzNThiYWU1MmZlZDNiMjcwMTI0NjM5ZGQwYTU2Y2E2YWZjZTc3NDk0YgotMzRmNDY0MzNjYWM5MGViNjNlN2UwZDI1ZGU2YzhhMDY3MGIxNGU4M2QwOGE1MzFjZjIxNDgwMDJmOWE2ZGYxOQotN2Y4N2M5ODliODMxYzUwOWRmMjMwNTdiM2VjNTY5ZWI1ZjVmNTMwZWRkMDQ3YTUzYjViNTlmNDgzNzAzYmRjZgotYjU3OGZkYzQ0Y2E3NDg3ZTNkMzk0NzljYTQ3NjA0NTdlNzAxOGFmMDExMTZiMjliYmRmN2MzZTBmNWMwN2E4ZgotN2Y1MDJjMTUwNTlkOTYzNWI3Y2U2MzAxOTQ5NjJlNDE4M2MzODM4ZDk0MDEyNjBhNzQzZDhlYmFlMTY2NWNlOAotNzNiY2ZlNWQwOTBhODk4NGU5ODAzMGZlNmIyMWRiY2I0OTM5OGI2OTA1ZWMwNGVkMzEwZTM3Y2QwNjlhODVkMwotN2NkOWUzYTAyZGQ4ZTAzNmIyYTc5MTkyZWMwMzZjZjdlMTA2NTNlMDg5MjhjYjhiZjQ5MTExMjJkMjdlMTk1ZgotNDhkM2RmYWEzNDEyMmVmMmRmOGUwMjNjOWVhMWYyNDZhZjI4NzlmNWRmNjMyNzE5YmY3YTkxZjI2NmQ4MjNhYQotY2FlZmNlMDY3YmY3NGVlMGQ2MjVjZjEyOGMzOTMwYWI4MzUyMTM4MGUwY2ViNWRhYTIzODRkYTRhYjIzYzM0ZAotMGRiOGE0YWNjZTFhMzNiNmRlZWEzNTgxZWZlNTIxMjc5MTQ3YWMxYjM2ZTRmNmIyYzA4ZGYyYjJkYmFiMDUxZAotMjY0YTI1MGEwNmVkMDZhYTkwNmMyNjgyYWQyZWNkY2NiZmQ4ODA5NDFiZDgyNGQwMjFmMDg2NTYwYmZiYjM1OQotZTI1MTlhMjcwOGE0OTc2ZjQyOTEzNDY1ZTE4ODcyYTkzY2RhODA5YTg1NzMwYTQ5MzBlZjFlM2U3MzMyOTJjOAotMDZjODBjODg2NTY0NWM2YTY5YjEyOGIxMzMzYzNhYzhjNjE2ZDNlM2EwMTYzYWJhNTRjN2E1MWEwNjNmYmNlMQotNDAxOGNhYmUxYjFlYmRhZmFlZmMyN2QyYjIyYWZjOTY0NDljZDUxNWNjZWQ2NzFiYWE4OGQ1MWM1Yzc3OGJmZQotMDAyMDgxMjdmMWZjMzVkYjljNmFmZTRmYzkxZGQwYmIxMjc3MTgxNTA4ZDdiOTg2OGEwNTUwMjVjNjUzOTRlOQotYWI3YTk1NDk0MTE4ZDIwZmJkZDdjZTBiNWYxMTQ5MmRmNWU4YzU0YzFjZTFlY2QyZTcyNzllMDdmZTZhNjJkNQotNjNkN2ZmZDM4ZjA0YmE3NTA1N2NmMTkwMzE5NjM0ZjU3YWEyNDZmMDNmNWY5MDRmZjk1MmQ3YjEwMDZkNDNiYwotY2U4OGQ4OWFkZTUyZTg2MWFlZmFkNTM4YjY0NDk0MmI2Yjk3ZTc3ODAwMGRlMmYyYWMyYjIyODBkODVhODIzYQotMTc2ZDgzODdjYTQyMGE0NDE5ODBkM2U4NjY2MDQzMjU5MTdmNzg1NzJlYzliYTE0YTA5NDRlMzc0ODBhZDNmZgotOWMxMDU5MGMwNzA1ODQwZDA5YzhiYjA3NmE1YWFlODFiNWUzMTVjYTkwMWUyNjJiNzczMTQzYTU1NDM2MGZkYQotM2RjNzk5ZmQwNzQ4MjY2NmY0N2MxN2Q4YTViYWQ2ZWZhNTNmMjA3MDc4NjljNWZkNDBkOTQwYTg4NTMxMGNkNgotZDVjYTljMzUxNzMxZmE2OWZkZjBiZmIxNDhlMTdhYzI2ZmY0M2JmYmIzOGMxMDE4NjdlZDk1ZDc4OWVkMmIwZgotNjE4MjAyNDliMzk4ZmFjMGM1ZWVlMzIwMzI5ODQzMDJlYjE4MDRiODJiYWQ1MTVkNzIxMjEzNzMyYWQ0M2I5NQotZDRhMDJlMTdiMjIxNTljYTI5ZTMwMDA0MjgwNGI3NTgwNzc4MmI5YmRhNDkyNTVjY2NmNGUzNWM0NjFmZjU5YgotNjVlMzZmNmM2MzQ1ZGJiMmU4YzJmNTQ0NTAzMTk5OWMyZDhmMDQ0NGNmNDE5OGFjMTdkYjQ4MTk5YzNiM2ZlYwotMDJhMTMwZDIzMGFiYTQ1NjQwNmUxMDcwMTc4YmRhYWZjNDIyMzQzZWQ5ZWRiZjQ3MWM5NjVkMmI4OTE1ODZkYgotYTM0YmIyZDY2Zjk4ZjcxNmU2MDU3OTlmMzgwMGM2ODAwMDk0MWE1MmQ2OTE2NDA1ODNjY2UxMWI5NGNiNTU5OQotMjlmZDBkNWU4YTkzMDc4MzFmZTE1ZmNkMjMyZWIzNjE3MjFkMGRhOWU3Y2UxMTFmZjFlYmMyNTZhNDA3MzcyYQotMjUzMTgwZTUxZjE4MDBmZmIwMzEzYzJjM2YzYzRmY2RkZDU5ZjgyNGRjZDBlYWExZTU5ODM3NDg3Mjg4YjU1OAotN2Y4ZTZkMjc5NTQyMDhmYjgxNWVkMWQ1NGEzNjQ3NmE5NWM2NjA3NTFhMmNlN2Q0NzVjNzJmZjE3ODRjMzYzZgotYTY0MTU5NWViOTJlNjVkOWU3YmZlMThlZWZmZWRkZmU4MmQ5ZjZmMGNlZTM3ZTZhOWU2MGI0NDkzOTI2MzI3MgotNDgxNmRmNDBlZDI0NTUxZjBkMDdkODEzYWJhNDlhODBiZDM1NjAxODhlNWQwMTcwMzg1ZmQxNWMzNGI0NTQ2NQotM2Q1ZDU5YmY3NjI0YWIxMTY0NTJhYzI4ZGM5MjE3YjExYzc1YTA4ZDY4ZTU1YjEwZTk1NjdhOWQzZDhkNWRhOAotODkxMTYzMThhZmYyNWVmYWI2MTFkYTY5ZTEzMmJhMmZmODg4ZDY4Yzg0YzA1NjU0NGMwZmU5MTM3ZmFhODM0NAotNDAwODQ4N2MzNGZmMmMyMzc2NTU4Y2UyMDEwOGY3NjU4Mjk2NWZiMDZjMjEyOWU2MDdhMGU2MDg4OWQ5N2ZhYwotMmM3MWEwMjYyOTliMDcxZWE3Zjk5OTVhNTQyYjdlMzFlZmVkZThhNGQzNDEyMTBhMzdmN2I0YmI5NmFhN2MzMQotYzg3M2NjMGMzZWRmZjdiMjNkOGEyMmU3ZTYwMWZmYmJhYjBmNjcxYjAyYmE0ODdjZjZiNTg4ZWJlY2QyNmY5YgotYjdlOGRlMGNiZGE4NzA2NjJiY2NhOTA3MTZjMGZmNzY4YTljN2M2OWMxZGNiNDA4NmYxZTg4MWM2ZGQ1YjNmNQotMGFjNTE3Y2EwOTZmMjhiMWM3YWM5MTk1Zjk5ZTQ0ZDQ0NDAxN2EzYmQ1NGE2OGY0NTg4ZjBhNzU2MjU1MzA1MwotOGJmYWY3Nzg4YTcyNDNjMzA0NDYyMTNiYzk4N2UzMzgzOTEzZjI0YjM2YjMzZTRiMDgyZTUwN2NhZTYzMzU4YwotOTY3NTU5OWY2ZDc0NjMwNWE0MTdmZTg4NDhmMzdiZjg1ZjQ1MzVlMjhkZGJjNTg2OGRkNmRiZDMxNDhjZGMxZgotMmMyZDIyNGYwMGMzYWY0YzFkZGJmZDg4YmY3OWVlYzc2ZTQ1ZWY1NDZjYWU1NDg4MjVhMGJjYTZiZjkzYjBiMQotMzczYWY2MGE3YjI0YTc1MDc5ZDY2NDVkMDkwOGE5ZjU1ZWQwZmU3Mzk3MTAwYTczMGE2ZjRlNTU2Nzg3MTRiZAotOTBjODg3ZTQ2YTJjNzcwM2IxM2IxZGRhNzRhODE5Yjk3YWJmZTYyNzVhMjRlNzM5MDE1NDAxNjg3MzdhOGIzMgotY2ExOTAyYjc1NzdiODc2MWIzYzRhNmI2MGRmYWQ0OTBlMzVkNzFjNWYzNWQ4ZWYzODJmZTY2NDMzMzM2OTUxZAotZTRlZTk4MWY5ODAxNjg4NTM0Mzg3NTVmMTM1YzMzM2I4NzIzZDU3NzhlMmUzMDY3ZGM3M2I3ZmQ5OWFhZmJlMQotZDVhMmQxY2Y0NDM5MDVmYjQ1NzMwY2U4ZmZmMTQ2NzRhYmRlZDlmOTRiNDU3NTZhNjQ2YjRjYjFmNzg5YzdlOAotMDc0OGYzNjQxYTIyYzAxYjEwYWRiZGM3Nzc2MGMwZTJhMGI5MDU1YzRmOTEwN2Q5MzVmNWMyZmIyZmRkMjg0NQotNmQ2ZDJkMjA5NmU0YmFmMTRiY2M4ZDcxNmFkZjA1M2JmZTQwODQ1ZjAyYzBkMThmY2NjNDUzZjNmOGU0NTQ1OAotNjlmODAyZjUwNmNhMjFkMGZhYjI0ZDdmM2Q2ZDZjMjE5NjM3YTJkY2JjNTg2MTRjMTQ1NmE5YzZiMGIwZjU3ZAotMDljY2U2NzVmZmY0ZjYyNmIxYjY4YzBhNjNmYjlhMTYxNDVkNTgxNzZjZjI3ZmY1ZDM1MTNkYmVjNjAxNGYzYQotMmI1ZGU3Y2U2OWM4YWMyZmMxODRiYWQyMzk1MGIyOGNmMDQxNDgwMTc2NDk2N2ZmOTcwMjJjZDQ4NjVkOTk0ZQotNTg1ZmYyYzk5MmQ0ODBkZTMxZjU0OWYyNmExOGU0NzIxMTMzZjNkODgzMTY5NzZiZGFlNDE0MzFkNDRlYzhkNwotNGVhY2IyOWFlYjEzMmZmNDllM2M2NDZlZjAyNWViNTQxZGNjNTRmMzhiOGFlYjU2Mjg4N2VkNmNkZDA3ZmZhNgotY2YzYjJmODllNGIwZmJiNTIyNjcwMjA2OGI4MDQzYjZlMmYyODRlNDM1MGM5N2E3NDk4ZTY0NDBiYzNjOGQyZAotMjdkOGFhMWVhYzk4MGU5NjA2MTMxODBhZTQyMjQ2MjRiMmM2ZjkyZWQ0NjY2ZTM5MWFlNWUxNTljMGNlMjA3YQotNzQzM2U0NjJjZDkyYWViNjdlYjg5ZmRjZDIwZTQ2ZjE3ZjNkMTVlZTY3OWMwNjQxNzZhMmRiMGFkNWMzOGVlZAotNzU5NWNmNmFiOTc1MGZjYTc2ZThlNWVhMjQ0M2I5ZDEzZGEzNzVjYTJhMmRjODdmYmQzZDgxZWQ1OGUzNjZlZgotOTQ5NTJjYmQ5MTgxMzRlYTA4ZjkwNTE2ODU0MjA3YTJmZDkyNzk5YzQxMGVkMWZiNmE5YzM2ODc3ZDBiNzc3ZQotZWY1OWIwM2YxOWJjNmI4ZmRhOTFhYjhhZTIxYzg5ZDExNzgyNWExNTk1NDY2ZGExMGYyMGI4NmQ2ZDIyM2NkYgotNjk3NjMxMmM3ZmI3YmZmYjU4ZmVhZGZjZDAxOWJhY2VkY2U5NmVjMjM5YjVhNzk5MDA1ZTk0YmRlZmI5ZWM0MAotZTcxN2E1OTczMjZiNTMzMGYzOGZiZjcwOGQwMDJjOWViOGQ4ZWEwODM0MjQxYTM1ZTNhMDdhNThhMDMwZTY3OAotNTgxMmJiNWRlMWNiNTExNDI2Y2Y0OWZmMzk2NDdkYjY1ZDhhN2YyZjg3Y2E1ZTkwM2ViMTQ3ODk4NGFiY2MxNwotYzdlZTBiMWY3ZDFlOWUzYjgxYzY2M2FiY2NlNzdhOTBmMWNmZjFiMDFmMTE2ZDI5OTVlNjVjYmEwYjNmMWEzZQotODAwNzllY2UyZmMyNWUwZjVjZjI0NTA3Yzk5ZTViNmU4N2E0MTdjZGYyOWExYThjNThhYTc0N2FmYTk2MmMyNQotMTQ2NzFmYmU0NjdlMjI5MzFhNzIzYTIzNmFlZGZmNTY3NmFjZGU2ZWU3MWRjOWVlYzExMzAxYWY5NjkyNzI3NAotYTczMjgxM2E0OWE0NzNlZGI3ZTk4ODZiNmM0NTYwNTY4MWE1NjNmMzI3NDVkNjBjYjRhMjZhNzA2NDQwNjc1NgotYzlhZGQ3MjRlOWI0MDAwOTczNzcyNThlODFjZmUwODViMWFiZGIzYTAwMzU0MzUzYjUwYzliZDExYTZlNjU1YQotZDI2NGEyMDM3MDhmNzM5YTQ2ZTQzMjJhMWE4MjA0ZTMyYWUzODVkNGY3Njk0ZDZhZDYzZjk3NTk4NmZmZDg2OQotMzU1YjdlYTljMGZlZWY4ZjZkN2JjY2UzMTI4YTBlNDU4NTNkZTBhNWY0NDJiYjgwNTE2NmM3OTA2YzlmMTAyMwotZGY3MGJjYTY4MzkwN2EwYmJjMTEyNDk2NzBmODFjNTIyNDQxYWE2ZmM0ZTc4ODlhMzhkMTVlYWQ4Y2FkNGNjZgotZTk1ZmY1NDM4ZDBlZGM0NTBlNjM5OWYwMjI4ZWEzMThkYzI5NzllN2U1YTM2ZWI3NmY5ZDgxMDYxZWM4YzYxNQotMjE3ZDlkYzdhMWQwOTI0ZGQ5NTNhZDJiNzQxZTQ4MzU3OTUzZDQzMTg2ZGE3NWYzNDBjNThiN2QyYTZjN2VhYQotMzAzOGZhNGI2NmIwY2NlYTUxYWY5NjEwZTU1NThkODJiZjc5YTMwMWQ3M2Q1N2I2ZmVhZWYzMmQ2ZjE5ZTgwMQotZTM3YTNjMWVhMzQxYmVlMDg4ZTMyMmZhZjlhYjVhYjE5MzRiNzBmODk0ODUzOTg0YWJkNWYzNGM0ZDNmZWEwNQotNWFiNGZjNzAxNzljYzlmMTM3OWY5OGIzZDFmNTI5ZjNjMmFhNGFlNjNiOGQyYmZkNDZhZmRiY2RhOGVhMTFiZQotZjMyYzkzZWI0ZDQzNWZjMzc0ODZhMWNiYWFkYzNjOThkZTU4MWViYWQxOGYzNTE3NWQ3YjNlNjdjOTE5NGQ1YgotYmIzY2QxOTE4ZTg2ZGFhY2I4NjA1NWE1NDhmYWIwN2NlN2M5MzNiZDk4NGViNzEzNDA1ZDJiM2Y0ODEyNDQzMgotYTg4ZTEwYjk3ZjdiZTNhMjcwNDA1NTk0ZDNlMDZjMTdiNDc3MTllMjY3OGYwZjA2OWZmMWFiZmU3ZDM2NzJkNwotNmE3NDhhOWUyNzdmZmRkMjVmNTQ3N2QwYzlkNjBkN2U4ZGE5ZTBlZjMwZTVmZDZjNzBkNDdkMzE2MzdiYzBjZAotNGQ2N2Y1ZWQyYjEwMzg4OWE2MWZkMTEwNzVhYWJjZTlmMjUxN2VjOWI1M2Q3ZGI1YjI3NzkwZDliYjFlMTljMwotZDdjM2E3ZTFiOTU1MTZlZTM4MDYyZDRlYTc1OTE1MWU0ZGUwNDQ5ZTZhYWU3OTUwMGM0MmI0ZWZlNDkzNmQwZAotMDAwZmIzMzkxMzMwYzAzNWQ5ZDZiOWUyNTY3MWY5YWM1OTlhNDBjMzdiMjQzOWMwNmZkZmQ5ODhhYmNiYWY3NwotMGU0MmQzMjRlOGNhNzg2MTNmMzVlYTY0YWE4OGMzYzQzZTUxY2ViZThlZDEwNjdjYWQ5NGVhMDM4Nzc4M2UwMwotZTc2YWY0NzRmNzM5YjkyNDlkMWU5NWVlZjg1YWI1MjhlOGNkMmRhOTllMzNjN2VmMGVlOWRmNjk0ZGI0M2YzZAotZmU0NjdlNmZkMWI1MjkxZWNiZjZiMWFjN2EyNWMwMDJkZWU4YmUwNzI3ZWM1NDM5NzE1YmZkOGY4NTQ4NDNlYQotMWQwODA2NzdmNjQ4ODlkNzAxNjVmMWJhZDExMGE4YmFmMzg4NTYyOWY4ZGRiYzNkM2IwOWM1N2RlYTI4YjRmNgotN2EzYzA0MmNlNjRkNjM2ZDBiZGVmOTIwYWI1ZWY5NTQ0ZjUyYWQ1MzM4Mzc4NjdjNDkzMGZkNGRkMzIxM2UxOAotYWUyY2E2MjJlMGUyMThiMWJkNTRiZDYwZTAxZDRjZGRmYzJlOWI2NGM2Yzk5ZTc5YWIyYzNlNTJjYmVmYTU5OAotNDM0MjEzZDQ3NWI2MjkyMTkwYjg5YmU5NWIzYzY2NjAxMzNlMWI0OThiZDdmZjJmZDE0YWFiMmFjYTBkZmZhZgotNjJkOWRmMzBjMTljYTBlOTQ5MDA3ZGNmODQ1M2U3MGU2MGE1MTk2NzRkMzA1NTIzZDMzYmZjMzExOTAzNzIzNgotMTljYzRhYjE3MDdkYjJjNDk4NGM2ZDRmYjQzMTA5MzJlOWVkZTc4MDhjZmM3ZDM0M2E3ZmRhMDgwNjg5NjZkNAotNzg3N2Q3ZGU3YzBmNWZmYmZhYWU1NjY2YmUzYmRiNDhkZTMxYzVhYjZiY2ZhN2QzNTgxNmU1ODYyYmM0YTEzYwotZWNmMjM1NTkzNTA0MGZhYzM3MTQxZjdiZWY3ZTU4ZjdiMDI1ZTE4N2RmMzk1MGVkZmQ2Y2VhMjBkMDY0OTA3MQotNDQyYjI5MTZlYmNlNWY0ZDNjZTA1NWVmZGFiZjFjMmRjMzQ4YWMwYWU2Nzc3ZjY3OWUyZjYyYTBhM2VlOTEyNAotN2ZjODU1YmZjNmYwYzMzN2E3NGM0NGVhMWY1ZGQzMmNlNjE4M2E0YzgwYTZiOTY3ODYxZjYxMDFjMjhiNzJkYQotZDZhYTExMjhmMTk2NjI3ZTI0MTc5YzE4ZjM4NGUyN2NmN2Y4MWY0MzEzODM4MWQxNzdmOTNmODA4MmNjOWQ1NgotMWIzYzk5ZjFiZWEwNzNhMWE4MWY4YmNlYTEzMWUzNTg3YjM5NzkzN2M0MDI5ZDQ4NmZlNjg0MmE3MDk1NThmNwotNDNjZDE2YzhmMGE1ZTRmYmIzZTUyMjY2M2I4MmUyNTQ0YTZmZWNlZmQzZDhhMmIyMjIzMDFmZDQ5ODhjMDEzNgotODU5ZTg2MDg3ZmFkNjMyOTJiYzQxODc0MTI3MzFhOTY2NzEwY2E5Y2NiODYzMjk1NjBkNjRiZTMxY2E0YjUyNgotODIyNDVjMWE0ODcwNDZhZDIxZGQ5YTI3MGUzZmFlNzJmZWNkY2Y5NjA4Nzg0ZjY0OWEyNTQ3NDAzNGFjNzQ0ZAotNDRlMTRlNzJkMDJmZjE3YjIyNTJhYTUyNzNkZTNiYTNjZDcxYTk1MDcwYTlmZWQwZGZmODA2NTNiM2QzNDZjNwotNTYxMTk1MjllNWJjYjYwMTFkMzQxZTM2ODgyN2NkZGYyMmQ0Zjk5ZjE3ODE4MjlkZjgwODUwN2UyYjRjZWIxMwotMjExYjA4ZjU1NDQ0ZTc1YTAwNTYzOWEyMGMzMzcwNmY4OTg1ZjMzMDhjMDhmNzdlNzJkYmZiZTA0OWFlODE3NwotYzJkYTJlNjJlYjU4ZjBmYmIzNjlmNWJhYjBmZmY0OWY5ZDQ3NjVmOTMxZmU2NmY4YWExMDdkODExNmJlY2RmYgotNDY2ZDI4MjUyN2JhYjZmYTI5NzIxNjc4ODM3Y2I0NmQ2MDE0OGE3ZmQ5Y2FlNjNkNmFhNjM0ZDIzZWUyMTE2MQotZWY5ZTgzNDUyMGYzNjc5MDNhNjViZWY3OTk2YWI3N2QzN2JhOTdhZWIyYTdhOGMzNTAyYWFjOTg4ZTdhMDQzMAotOWQ2N2EwNmRiNGE5MDcxNGZkMWE5MzM0MDJkZjA4MzAwMjY5MjBiZjFmNzFjYjAzNzliZGE4NzE0NDE1YzliYwotZTc3OTVmYTRlYmMzN2U4MTliM2Q4ZWU2NTM3NWJmZGQ2YjM2YmRhNDFiNzc5MTg2NDM4OWU5YjU4OTkxOWVlNgotMjg3MmJhYzJlMjIxYjI4MTUwZDMwMjRhOTg0MDMzODk5ZTUzNzJhYjQ3NGI5YjQ0OTRmN2JiNDMzMWI2MjEzZQotNzk1MzU2NWYzNWQyZWE2ZGEyMTI5NTZkYWIwMTU3MWNiZWVlZjg2MjkzYzU4YTI1OTg2MGUyOTRmNjk3MzBlNgotZjE0MTY4MGNmNzVkNDBlODI5Zjk2NzllOTgzNDFmZDFlMDgxN2NiOGU0MGNkNmM0ZmE2OTFhYzY5MWZiNTlkZgotYjc4ZTg3YWRkOTUxZWFjNDFhZDFiNGY0ZmE0NWQyZTM0NmUwZmE3MzE1N2E3ZDJiMmRmODllYTU2YTgwZTg4NQotOWUwZDAzMzFkMjE2ZGI0ZjFiOTVkNjYyYmFkNDBlNDcyZjIxYmJlMDU1NzZjZTRhMmQyN2FmMDE4ODBmNDM4YQotMzBjMTdiYzY1ZmI0NjBhYzFiM2UwMWFhNDNhYTM2NzdiYTA1YTQzN2ZjY2EzY2U0YzI4NjRkOTljNzAxZDc5ZQotM2ExOTlkYmM3ZTJmMDBiZThkNDM0N2Y5NmI2MWJhMGY4OGU5MGI0OWQ0MTJkMGVkMTYyZTgyNzE1ZWEwNGMyNwotYWYzZmViMGE3YjNlNGRkMTdjODc1YTUxZTliYmVkM2M5ZTEwZWFhYmVlYzBmMDI5ZDk0ZmE5MGQ2MDYwNWI1MgotMmRjZmY1MzlmYmMzMjNlN2YwZTFjYmZjMWExOTJhNDQzNDVlZmMwNzBiZDVkNTkzOWQ5ZjQzODM4OTc3MDRmMAotZTc4NTEyNmFiZDlmNTgyZjFhZmU4OGE3Mjc3ODRhZmRhYzNkY2E0OTg5MmM2YmViNTJjYjFhZGVlMTgwMzRlOAotZTg4YTQ0MTg5MDE3NTU3NTk1MWZkODc1OTRiNjM3NTFlNjkxNjU0OTZkNTY2YmQyM2M4ZGI0YjkyMzliYmFhOQotZWY1MDU4ZjViNTFjNzRjZjcwNjMyZjg4ZjFhMDVlMWI0MDA3OGMxODNlYTg0MzM0MjdmNjNhNWY2OGExYjgxYwotYmQ0NjYyNWI4YmEyY2Y3MTNjMDAxY2NhNGM3NGExODZmOTNhYWEzODY5YTUxN2RkNjRmMWU4MWM3MTgyMzIzOQotMTkzNGZhZWE2MDRjZjRkOWRkZjk3NGZiMDljNTc4NmJkZTA1OTc4YmIyNTIwOWI1Yzc2NDg2MDJkZDYyYzMyYwotNjFlYzRiNWNlMTE3NzE4NTM1NGRkNWNkZjE1NTQwMTIxYjZkODI0NTdmZjMxMTFkYjFhYWIxODg5ZmIwZTNjOAotMzhjYmM3YTY3MWJhMTZhNGJjNTY3ZDljZGQ0MjcyMDVlOGY0ZGU3ZWRjNjRjMDBiYjYwODAwNzExMzBiNDNkMwotNmU3OTE5YTViN2MyOWM2OGFjNTA1ZmYxMDdkMWUyYWI2NmEzNDE3NjEyYmEyZjQ2MTU0OGYxZTcyYzcwMmExOQotN2E2MzExZGFlNjQ5ZTQ2NzY4ZDg1ZDc1OTI4MTQyOWI5N2EzNTM3OWI4NGM3NjNkMzVjZmQ0MzRhNGUzYmJiOAotNGM2ZTVlZThkZmYzYTc0NDliZWMxNGM3ODViY2UxZDRjNjE3MjE3ZWU2MzE1ZmRhMDAwZjBjNTRkMTA1NGU4MAotYzhmOWY0NTJkYWFhNDY1ZjYzM2ZmYzNlZWRhOWM3NmU3YTc3MDI0ZWFmMzliZDViYzk1NjJmYTQ0ZjNkYTlhZQotN2U2NjVhMzNiZDIyYWFlNmRiYzFkOWVmYWI2Mzc0MWUzMDc3NWVlZmZiODE5ZmY5MzMzNDJjOGU2Yjk3OGY4YQotMmFhMjBjMmYyODEwMDcyYzRmMjQzN2U3Y2MxMzg2MTAwMmFiNmQ1ZWU4NGE2ZjgwNTQ5NjgzYTM0ZGEzY2VjOQotZTM0NzFkMTEyMzMyZWEyNjAxNTM4MzZmYTI0ZTIyZWVjMGNkYjBhNWIzYjA3NzNjZmQyMzdkYWE2N2M1NWFhNAotY2JmMWNjMzBmNDMxODNhOTNiZjdkNzA2OGVhZDMyYWM4MDY0YmIxZjBhOGJiNjFjZjU0NzJiY2FiMzYwY2Y3MQotYjYxYzM0NDNlYWU0ZjFlYzdmYzBkODgzNTU5ZjhhMmZmMjUyMmRjZDdkYWQ1ZjM5NWU5YWIyNDU0Y2NhNmRhZAotMDdiYjU4YmRlYjFlNTRmNzU4MTZkYWJlYThkMTcwOTc0OTA5YjJmYWQ1M2Y5YTY5ZDk3ZWIxMWZmMjBjNmFlZgotZWI2ZDc2ZTlmYTkzYzMxNzExNTYwMmRiOTAzNTliZTYzOGRhMzgzZDllMDFmNmJkYWNiNWFjNWJkN2M3N2Q0MgotZDgwNjQ2YWNlOWYyMzg0Nzc0NjEwZjYzZjk3ZDcwYzRlODFhMjg3MWJlMGE1YjAyOGM4OGFmZDgyYTNiNjM3NgotNWQ1MDY0YTY3ODZhODI5YTZlNjMyMDEyMDM5NWIxNTQxYmZkNmUzZWMxODJkNTA5ODJkN2JlYzQxNDBmMTQ2YQotMDY4OTBhNzliODVhNmYyMGY5YmY2MTZmNWY1NmUwMjc1MmM1ZDE3N2E0OGFhMmY4ZWNiNjdlNDJlMjMxNDg1MAotZDIxMDljMDk2NWE1NWQxZTBmNDcwMzcxNDQzOTkxZjliODg1OWFjNzBiZDZmMDQ5ZGJmNTdjY2M4ZTJlM2M2NwotZWI4ZDFiNGYzNmM2NjA3NDYwMDg0NjBlYmMwZjcyODRjODAyOTI1MjA2Yjk2ODQ3N2E1MDNkZmE2ODc5Nzk0ZQotN2VkODJmY2M1ODQ0M2ZhMWQ5NWZkNTYxYmM5ZDNhMmNjYjJiZmExOTkxNmQ4YTg4ZTZmN2VmZjBjZTBhN2Q0ZAotOTBjNzdmNjNiYzc1ZjMzNjhmN2E5N2RlYTlkOTM5MmUzZjQ5OWFlNGI4ZTUzNjAyNjM2Y2Q1M2ViZGI0MjIxMwotYzI2NjhhM2M2MThhNzZmNmY1YTk2ZmMzM2MwZTQxZWY2MjBhNjNlM2M1MjUxMmM2NmI1OWY4MTBjNmI4NTkyMwotZDgxZmY4NjE4ZjQyZWUxOWIxMGQ0ZDA4OGJkNmI3ODRlNGY5YmQ2YmZmZTA4MzE2MTE4MWIyZjc5YjM3NGZkNAotYjg0NjY1MGQ0Yjk1YjZjM2U1ODQ0OWQ4ZjBhMjAxYWVjNzJkODc1ODhjNTRmYmIzMTEyMDQ1MDQwMTA5YTNkMgotZDk4Yzc3OGVkM2ZlMDdmNTQwMTA3NzNiNjI4YmFmMjlhZDNiOTEwNzJmYmRlZjdjZGUwYjk2OWQwYjY5NWJmMgotNWQzODZjNmI4NjQ3YmZkNTVjMTY5Mzc0YzU3ZDViZDhmYjI5YWY1YzVhNjcxOGQ3Y2VlMzE4YTA2YWQzNWQ5NgotZmJmODc5OTI5ZTI4YmQ0M2I1ODNhZmYyNzY5Njg4ZTA4N2IwMGVhOTViMjg2MjlhNzFjNmVhODQ3Zjk4ODM1NwotZGE5ZTIzNDIyZmUyZWJjNGMzM2YxODM2NzkyMzNlMGQxZDgxNTBlYzU4Y2E2Y2EwYmRhMmE1MjllNmY2ZDE0NgotOTIwMTBiMWVkYTYzNjBhYWM5NDBlZDIzNDEwNDU1MjA5MzgzYjY4YzNhMWZkNjhhMGVmOTJkMTZjZDRkZWRhOQotOWRiZWRiMWNlMThhNzk4MTdmYjNkMDQzZjkxOWYxYjk4YzYyZWNjNzBkYzI3ODg2YjI1ODQyOGFlMmQxMDc1ZQotZWY4YzEyMjVmOTZiZTVlZTNjMWI0ZTEyN2QyNmJjMmFiYzZkNDU3MzMzYTBkNWNjZTk5ZGZmMDBmM2Y0MWUwYgotYTlmZDdiYWM5ZTk2NjkxY2QzMTZhYmU5MTNhNmVkZjk1YzZjNWQzNzA4NmNmM2NiOTYwYjgyNjg0Y2U0NzNlZAotNTc0ZmQ4YzZjYTA1OWJkNjc5NDQxYzIyZTZjMzkzNzZkM2EzM2M4MDExMzYxYzgzNGJiZDdiODdjMzQ1YTlmMAotYzZjYzEzMjhiNWFmOTI2Zjc2M2JlYmMxM2JlOTIyMzhkYTE3MTEyNGRlMTE5YTA5N2Q2NWU1ZDYyM2NiZjE1NwotYTRlOTNlMjUwYTZiYzM0YmM1NGZlYjI4ODlkYTNmNTk5M2VmZjBiZjM4ZWY2ZTQ0MGQwYmRiNDA1NzQ2YWE3MAotNGU1ZGU1NzBiMDM0N2Q1MmIyNWFlOWUwZmZkNzU4YjhkNmRhMWE1N2U0NzI4OWEyNmQwZWQzMGUzMTQ3NDI3MwotYzIzMTVjNzRhMzllNmIyNmY1NThkZWMxNDBkMzg0Y2QzYmJkNzI0NmJmNDZhMGY3YmVjY2U0NWZlMGMzNDNjZQotNzgwMTYyMDRlODE0ZGNjYzU4MDYxZDQ4ZmZjODA4NDIzNDUyOTg1YjEyZDI4Yzk0ZWFiYTg5ZWRhNzkzZjdiMgotOGQ5ZmRlMTFmMzA0MzRiZGY3M2M0ODQ4NGE4MTRlYmU1NDFmNGU2ZWI4MTdkZTQzMTQ2YWU0ZTA0ZmE3MTI5YQotZWMwZTRiOTJhZTIyYTFkMjM0NDM3NWY2ODMxNGQ4MzlhYWRlNTljNGFjMWQ1NTY1MzhmZDdhOWY3ZWU5YTEzOQotZjM2MjA5NTJjNmM0NWY3MTgxYTY0NDhhODA3YTFiZjYyY2I1OWY0NDAxOTkyOTdjYmM4YTM2MGQwMTY4YzE1MwotN2M2YjNiYTU2ZGQwZjdmMTA0MjcxMTM4ODQ2YTZmMzA1ZjJjOGE3NTM2NTEyYzU0YTFjNDYyMzI2MDZhNjY0OQotODFhODA4M2Q1OWE0YjVlOGNhMmNkMGI3MGRkMGI0NGJlZjFjMmFlOWViY2JhZWVjYmM3YzRiZmIyY2UzMDlmNwotODMwYmEwNmYzYzhlNzlmZGRmNzM3NDUxYTY3ZDhjNDQyNWM1MWUxMWY4MzJkOTkxOThjMTZkZWU4NjRiNGM5YQotZTQ4ODYzZjVhM2NkMGU2ZjNjNWIzMWE2YmZmNTI3YmNlMjYwYWVmYmM0MGIxZDgwNjVkMmY4OGY5N2RkOWZmNAotOGIyMWQwNjlhZThjZWJhYTUxMWYwZDAwYzFkYTc2MjA3ODIxODU5YmIxOTFkNWY5MjYxYWRmZjNlNjQxNzc4OAotNWI0OTNkYjQ5NDIwZjQ3MjQ5NmE4MjA3ZDNmMmQ2NGZhMzMwNGRlMGU3OGQ2MjU5YTYyNmQ4ZmRmODFjNTFkMAotZjgxZWY4YzYxOTUwN2YwNTQ0ZWJkM2FhOGQxZjIwMGE1Y2UyNDBhMTE3MTQ0MTQzOGQ2YmJiMTljMDg1MGJkZgotNGEwMTQ3YmFmNDc4NzUxMzc1MmU0ZTA1MmEwOWQ2Yjk0YmVjOTYxMDdlNjRmNmIyNjkyYmVkZjJhMzg4NjNlMQotMTVhYzI1NjRjMGViMTBmYjkyM2VmM2Q1MDVmNzUwYmZiNjQwNzg1NjQwNmNjOTJlOWIyYTNhODEwZmI0OWVmOAotZThmNDQ1YzJlMzJiMzBkMzUyZmJhNmZlMzQ1YzhhZjI0MTMwN2U3NmMxM2VkMzc2NTU0Yjg1N2IyM2YyYjEwZQotOWY0ZjFkNmIyNWVlODUwZDc0NDMzMmZiNzMzNDk3OTA0MjZiYzNhZGY4MTE5OThmODRmNDcyMTI0N2VkOWRjMgotY2IzM2QzNDNlZDlmY2JkZDAwMWQ5NzcwODQwOGE0ODg1ZWYwNTkwODMzMzU0NjE2Nzg1OTc4ODEyNGY1MGVhZgotN2Y5Y2Q1YjdhOWY0YTc3YjIzMzdmNTE1NjlmZTNmYjQ1ZTQxZGM1MDM5NGVjOTYzODUxZmVmNzZlZDY3NTkyYwotYmFjNjhlMzc4MDQzZDc3MTM3OTc0Y2I2MTc3MjIyOGQ2M2Q0NmQ5MjgyMTY2MjIwM2RjYzBkZDFkYjM3NWJkNgotOTVjOTE1M2M3MjI2MjAyZWU1NDVhYTM2YjBiZmJhNDliYmE1OWU5MThlM2JjYWQzNzdjYjQ2MWQ1MjQ0MmI5YwotZDE1OTc2NDA5MGVmYWEwYTg4N2ExMmIwYzk4ODRkNGViMGNiYWU4YjJiNWZlMWQ2OGI4YjEzYWJjZGU3MzIyMwotMjM0MDYzOTA3YTgwMTIxMzRkYzQyMzM3ZjEzMWNlMDEyYTk4ZTU4MmZjYzUwYzk1MDdjMWY4N2I4M2Q2MmRmYwotYmI5NTFkZDQ4YzNmYjA3OGFhZWJmYTI1YWUxOTA4Zjg3ZDk3OTE1ZDg2YmVhNTNlMjNjMmM0ZmQ0MjYyMTBjYgotYTUxN2VlMzY4MTE4M2QzMjdhNWFiNDJjMDI5NzdjMzIyMTIxM2U3NmVkNWY5ODZhZDZiY2MxNGY1MDY1MTM2NwotZjE0MmE0ZGM2Mzc5MjEzOTc0ZmI5MGE3YmUKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLWNsZWFydG9tYXJrCi0lJUVuZFJlc291cmNlCi0vRjM5Ml8wIC9FUlZCRlQrTmltYnVzTW9uTC1Cb2xkIDEgMQotWyAvLm5vdGRlZi9kb3RhY2NlbnQvZmkvZmwvZnJhY3Rpb24vaHVuZ2FydW1sYXV0L0xzbGFzaC9sc2xhc2gKLSAgL29nb25lay9yaW5nLy5ub3RkZWYvYnJldmUvbWludXMvLm5vdGRlZi9aY2Fyb24vemNhcm9uCi0gIC9jYXJvbi9kb3RsZXNzaS9kb3RsZXNzai9mZi9mZmkvZmZsL25vdGVxdWFsL2luZmluaXR5Ci0gIC9sZXNzZXF1YWwvZ3JlYXRlcmVxdWFsL3BhcnRpYWxkaWZmL3N1bW1hdGlvbi9wcm9kdWN0L3BpL2dyYXZlL3F1b3Rlc2luZ2xlCi0gIC9zcGFjZS9leGNsYW0vcXVvdGVkYmwvbnVtYmVyc2lnbi9kb2xsYXIvcGVyY2VudC9hbXBlcnNhbmQvcXVvdGVyaWdodAotICAvcGFyZW5sZWZ0L3BhcmVucmlnaHQvYXN0ZXJpc2svcGx1cy9jb21tYS9oeXBoZW4vcGVyaW9kL3NsYXNoCi0gIC96ZXJvL29uZS90d28vdGhyZWUvZm91ci9maXZlL3NpeC9zZXZlbgotICAvZWlnaHQvbmluZS9jb2xvbi9zZW1pY29sb24vbGVzcy9lcXVhbC9ncmVhdGVyL3F1ZXN0aW9uCi0gIC9hdC9BL0IvQy9EL0UvRi9HCi0gIC9IL0kvSi9LL0wvTS9OL08KLSAgL1AvUS9SL1MvVC9VL1YvVwotICAvWC9ZL1ovYnJhY2tldGxlZnQvYmFja3NsYXNoL2JyYWNrZXRyaWdodC9hc2NpaWNpcmN1bS91bmRlcnNjb3JlCi0gIC9xdW90ZWxlZnQvYS9iL2MvZC9lL2YvZwotICAvaC9pL2ovay9sL20vbi9vCi0gIC9wL3Evci9zL3QvdS92L3cKLSAgL3gveS96L2JyYWNlbGVmdC9iYXIvYnJhY2VyaWdodC9hc2NpaXRpbGRlLy5ub3RkZWYKLSAgL0V1cm8vaW50ZWdyYWwvcXVvdGVzaW5nbGJhc2UvZmxvcmluL3F1b3RlZGJsYmFzZS9lbGxpcHNpcy9kYWdnZXIvZGFnZ2VyZGJsCi0gIC9jaXJjdW1mbGV4L3BlcnRob3VzYW5kL1NjYXJvbi9ndWlsc2luZ2xsZWZ0L09FL09tZWdhL3JhZGljYWwvYXBwcm94ZXF1YWwKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmL3F1b3RlZGJsbGVmdC9xdW90ZWRibHJpZ2h0L2J1bGxldC9lbmRhc2gvZW1kYXNoCi0gIC90aWxkZS90cmFkZW1hcmsvc2Nhcm9uL2d1aWxzaW5nbHJpZ2h0L29lL0RlbHRhL2xvemVuZ2UvWWRpZXJlc2lzCi0gIC8ubm90ZGVmL2V4Y2xhbWRvd24vY2VudC9zdGVybGluZy9jdXJyZW5jeS95ZW4vYnJva2VuYmFyL3NlY3Rpb24KLSAgL2RpZXJlc2lzL2NvcHlyaWdodC9vcmRmZW1pbmluZS9ndWlsbGVtb3RsZWZ0L2xvZ2ljYWxub3QvaHlwaGVuL3JlZ2lzdGVyZWQvbWFjcm9uCi0gIC9kZWdyZWUvcGx1c21pbnVzL3R3b3N1cGVyaW9yL3RocmVlc3VwZXJpb3IvYWN1dGUvbXUvcGFyYWdyYXBoL3BlcmlvZGNlbnRlcmVkCi0gIC9jZWRpbGxhL29uZXN1cGVyaW9yL29yZG1hc2N1bGluZS9ndWlsbGVtb3RyaWdodC9vbmVxdWFydGVyL29uZWhhbGYvdGhyZWVxdWFydGVycy9xdWVzdGlvbmRvd24KLSAgL0FncmF2ZS9BYWN1dGUvQWNpcmN1bWZsZXgvQXRpbGRlL0FkaWVyZXNpcy9BcmluZy9BRS9DY2VkaWxsYQotICAvRWdyYXZlL0VhY3V0ZS9FY2lyY3VtZmxleC9FZGllcmVzaXMvSWdyYXZlL0lhY3V0ZS9JY2lyY3VtZmxleC9JZGllcmVzaXMKLSAgL0V0aC9OdGlsZGUvT2dyYXZlL09hY3V0ZS9PY2lyY3VtZmxleC9PdGlsZGUvT2RpZXJlc2lzL211bHRpcGx5Ci0gIC9Pc2xhc2gvVWdyYXZlL1VhY3V0ZS9VY2lyY3VtZmxleC9VZGllcmVzaXMvWWFjdXRlL1Rob3JuL2dlcm1hbmRibHMKLSAgL2FncmF2ZS9hYWN1dGUvYWNpcmN1bWZsZXgvYXRpbGRlL2FkaWVyZXNpcy9hcmluZy9hZS9jY2VkaWxsYQotICAvZWdyYXZlL2VhY3V0ZS9lY2lyY3VtZmxleC9lZGllcmVzaXMvaWdyYXZlL2lhY3V0ZS9pY2lyY3VtZmxleC9pZGllcmVzaXMKLSAgL2V0aC9udGlsZGUvb2dyYXZlL29hY3V0ZS9vY2lyY3VtZmxleC9vdGlsZGUvb2RpZXJlc2lzL2RpdmlkZQotICAvb3NsYXNoL3VncmF2ZS91YWN1dGUvdWNpcmN1bWZsZXgvdWRpZXJlc2lzL3lhY3V0ZS90aG9ybi95ZGllcmVzaXNdCi1wZGZNYWtlRm9udAotJSVCZWdpblJlc291cmNlOiBmb250IEJaWElFQitDTVNZMTAKLSUhUFMtQWRvYmVGb250LTEuMTogQ01TWTEwIDEuMAotJSVDcmVhdGlvbkRhdGU6IDE5OTEgQXVnIDE1IDA3OjIwOjU3Ci0lIENvcHlyaWdodCAoQykgMTk5NyBBbWVyaWNhbiBNYXRoZW1hdGljYWwgU29jaWV0eS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLTExIGRpY3QgYmVnaW4KLS9Gb250SW5mbyA3IGRpY3QgZHVwIGJlZ2luCi0vdmVyc2lvbiAoMS4wKSByZWFkb25seSBkZWYKLS9Ob3RpY2UgKENvcHlyaWdodCAoQykgMTk5NyBBbWVyaWNhbiBNYXRoZW1hdGljYWwgU29jaWV0eS4gQWxsIFJpZ2h0cyBSZXNlcnZlZCkgcmVhZG9ubHkgZGVmCi0vRnVsbE5hbWUgKENNU1kxMCkgcmVhZG9ubHkgZGVmCi0vRmFtaWx5TmFtZSAoQ29tcHV0ZXIgTW9kZXJuKSByZWFkb25seSBkZWYKLS9XZWlnaHQgKE1lZGl1bSkgcmVhZG9ubHkgZGVmCi0vSXRhbGljQW5nbGUgLTE0LjAzNSBkZWYKLS9pc0ZpeGVkUGl0Y2ggZmFsc2UgZGVmCi1lbmQgcmVhZG9ubHkgZGVmCi0vRm9udE5hbWUgL0JaWElFQitDTVNZMTAgZGVmCi0vUGFpbnRUeXBlIDAgZGVmCi0vRm9udFR5cGUgMSBkZWYKLS9Gb250TWF0cml4IFswLjAwMSAwIDAgMC4wMDEgMCAwXSByZWFkb25seSBkZWYKLS9FbmNvZGluZyAyNTYgYXJyYXkKLTAgMSAyNTUgezEgaW5kZXggZXhjaCAvLm5vdGRlZiBwdXR9IGZvcgotZHVwIDMyIC9hcnJvd2xlZnQgcHV0Ci1yZWFkb25seSBkZWYKLS9Gb250QkJveHstMjkgLTk2MCAxMTE2IDc3NX1yZWFkb25seSBkZWYKLWN1cnJlbnRkaWN0IGVuZAotY3VycmVudGZpbGUgZWV4ZWMKLWQ5ZDY2ZjYzM2I4NDZhOTdiNjg2YTk3ZTQ1YTNkMGFhMDUyZjA5ZjljOGFkZTlkOTA3YzA1OGI4N2U5YjY5NjQKLTdkNTMzNTllNTEyMTY3NzRhNGVhYTFlMmI1OGVjMzE3NmJkMTE4NGE2MzNiOTUxMzcyYjQxOThkNGU4YzVlZjQKLWEyMTNhY2I1OGFhMGE2NTg5MDgwMzViZjJlZDg1MzE3Nzk4MzhhOTYwZGZlMmIyN2VhNDljMzcxNTY5ODljODUKLWUyMWIzYWJmNzJlMzlhODkyMzJjZDlmNDIzN2ZjODBjOWU2NGU4NDI1YWEzYmVmN2RlZDYwYjEyMmE1MjkyMmEKLTIyMWEzN2Q5YTgwN2RkMDExNjE3NzlkZGU3ZDMxZmYyYjg3Zjk3YzczZDYzZWVjZGRhNGM0OTUwMTc3MzQ2OGEKLTI3ZDE2NjNlMGI2MmY0NjFmNmU0MGE1ZDY2NzZkMWQxMmI1MWU2NDFjMWQ0ZThlMjc3MTg2NGZjMTA0ZjhjYmYKLTViNzhlYzFkODgyMjg3MjVmMWM0NTNhNjc4ZjU4YTdlMWI3YmQ3Y2E3MDA3MTdkMjg4ZWI4ZGExZjU3YzRmMDkKLTBhYmYxZDQyYzVkZGQwYzM4NGM3ZTIyZjhmODA0N2JlMWQ0YzFjYzhlMzMzNjhmYjFhYzgyYjRlOTYxNDY3MzAKLWRlMzMwMmIyZTZiODE5Y2I2YWU0NTViMWFmMzE4N2ZmZTgwNzFhYTU3ZWY4YTY2MTZiOWNiNzk0MWQ0NGVjN2EKLTcxYTdiYjNkZjc1NTE3OGQ3ZDJlNGJiNjk4NTllZmE0YmJjMzBiZDZiYjE1MzExMzNmZDRkOTQzOGZmOTlmMDkKLTRlY2MwNjhhMzI0ZDc1YjVmNjk2Yjg2ODhlZWIyZjE3ZTVlZDM0Y2NkNmQwNDdhNGUzODA2ZDAwMGMxOTlkN2MKLTUxNWRiNzBhOGQ0ZjYxNDZmZTA2OGRjMWU1ZGU4YmM1NzAzNzExZGEwOTAzMTJiYTNmYzAwYTA4YzQ1M2M2MDkKLWM2MjdhOGJkOThkOWU4MjZmOTY0NzIxZTkyYmJkYzk3OGU4OGVlYTBhOWMxNDgwMmViY2M0MWY4MTA0MjhmYTgKLWI5OTcyMDMyYTAxNzY5YTdjNzJkMWE2NTI3NmY0MTRkZWVkYWYxZDIyYmUyM2Y0NzA1YmY1ZWYzMWI2YTNiNjkKLTBjODk2MzIwZjA5ZTk4NzViNTAyMjBhNWJkYmJkNTdjMDQxYjVlYTk3ZjQyMTY4NWE3MjU2YjBkOTc1NWVkYmUKLWQwNTE5MGRhYmYxYzNkYmY1NTgyNTgxNjNjODIzMWQ4OTE2N2E4MTZiYmE1NWZiMWYxNGFkMDQzMjBhZTM4MWQKLWY3ODNhOWVhY2VlOGFlNWMxODM4Nzc1ZmUyMzgwYmRkMWYzYWZjY2NjOTZkMmEyZGZjOTk5YjUyYTY2ODljNTEKLWFmODJiOGQ2MzIwNWIzMzkxMDMxMzRkYWM3ZTNjNDVlNjY5Mzk0MDI3NjA0MWJiMDdlYmRiOWI3MjllOGVmMGQKLWVlOGJmNDUwZmE0MjU1MWJlNjUyMTdmZWE5MDJlMjhkZWNjMDk1ODBiNTA0ZjBmNTJmMWU4ZmM1Y2U3YWMyOGQKLWM0ZTQ3ZjkwOGZkYWViYTIzODI3YTk3YTBhYTc0MWFhNzcwOGY3YmJmZWM2ZmE2OWNjNGY3YzNiZDQKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLWNsZWFydG9tYXJrCi0lJUVuZFJlc291cmNlCi0vRjU2NF8wIC9CWlhJRUIrQ01TWTEwIDEgMQotWyAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC9hcnJvd2xlZnQvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZgotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmCi0gIC8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYKLSAgLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvLm5vdGRlZl0KLXBkZk1ha2VGb250Ci0lJUJlZ2luUmVzb3VyY2U6IGZvbnQgV1dXVVRVK05pbWJ1c1JvbU5vOUwtUmVndUl0YWwKLSUhUFMtQWRvYmVGb250LTEuMDogTmltYnVzUm9tTm85TC1SZWd1SXRhbCAxLjA1Ci0lJUNyZWF0aW9uRGF0ZTogV2VkIERlYyAyMiAxOTk5Ci0lIENvcHlyaWdodCAoVVJXKSsrLENvcHlyaWdodCAxOTk5IGJ5IChVUlcpKysgRGVzaWduICYgRGV2ZWxvcG1lbnQKLSUgKFVSVykrKyxDb3B5cmlnaHQgMTk5OSBieSAoVVJXKSsrIERlc2lnbiAmIERldmVsb3BtZW50Ci0lIFNlZSB0aGUgZmlsZSBDT1BZSU5HIChHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkgZm9yIGxpY2Vuc2UgY29uZGl0aW9ucy4KLSUgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgcGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGluY2x1ZGUgdGhpcyBmb250Ci0lIHByb2dyYW0gaW4gYSBQb3N0c2NyaXB0IG9yIFBERiBmaWxlIHRoYXQgY29uc2lzdHMgb2YgYSBkb2N1bWVudCB0aGF0Ci0lIGNvbnRhaW5zIHRleHQgdG8gYmUgZGlzcGxheWVkIG9yIHByaW50ZWQgdXNpbmcgdGhpcyBmb250LCByZWdhcmRsZXNzCi0lIG9mIHRoZSBjb25kaXRpb25zIG9yIGxpY2Vuc2UgYXBwbHlpbmcgdG8gdGhlIGRvY3VtZW50IGl0c2VsZi4KLTEyIGRpY3QgYmVnaW4KLS9Gb250SW5mbyAxMCBkaWN0IGR1cCBiZWdpbgotL3ZlcnNpb24gKDEuMDUpIHJlYWRvbmx5IGRlZgotL05vdGljZSAoKFVSVykrKyxDb3B5cmlnaHQgMTk5OSBieSAoVVJXKSsrIERlc2lnbiAmIERldmVsb3BtZW50LiBTZWUgdGhlIGZpbGUgQ09QWUlORyAoR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpIGZvciBsaWNlbnNlIGNvbmRpdGlvbnMuIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBpbmNsdWRlIHRoaXMgZm9udCBwcm9ncmFtIGluIGEgUG9zdHNjcmlwdCBvciBQREYgZmlsZSB0aGF0IGNvbnNpc3RzIG9mIGEgZG9jdW1lbnQgdGhhdCBjb250YWlucyB0ZXh0IHRvIGJlIGRpc3BsYXllZCBvciBwcmludGVkIHVzaW5nIHRoaXMgZm9udCwgcmVnYXJkbGVzcyBvZiB0aGUgY29uZGl0aW9ucyBvciBsaWNlbnNlIGFwcGx5aW5nIHRvIHRoZSBkb2N1bWVudCBpdHNlbGYuKSByZWFkb25seSBkZWYKLS9Db3B5cmlnaHQgKENvcHlyaWdodCAoVVJXKSsrLENvcHlyaWdodCAxOTk5IGJ5IChVUlcpKysgRGVzaWduICYgRGV2ZWxvcG1lbnQpIHJlYWRvbmx5IGRlZgotL0Z1bGxOYW1lIChOaW1idXMgUm9tYW4gTm85IEwgUmVndWxhciBJdGFsaWMpIHJlYWRvbmx5IGRlZgotL0ZhbWlseU5hbWUgKE5pbWJ1cyBSb21hbiBObzkgTCkgcmVhZG9ubHkgZGVmCi0vV2VpZ2h0IChSZWd1bGFyKSByZWFkb25seSBkZWYKLS9JdGFsaWNBbmdsZSAtMTUuNSBkZWYKLS9pc0ZpeGVkUGl0Y2ggZmFsc2UgZGVmCi0vVW5kZXJsaW5lUG9zaXRpb24gLTEwMCBkZWYKLS9VbmRlcmxpbmVUaGlja25lc3MgNTAgZGVmCi1lbmQgcmVhZG9ubHkgZGVmCi0vRm9udE5hbWUgL1dXV1VUVStOaW1idXNSb21ObzlMLVJlZ3VJdGFsIGRlZgotL1BhaW50VHlwZSAwIGRlZgotL1dNb2RlIDAgZGVmCi0vRm9udEJCb3ggey0xNjkgLTI3MCAxMDEwIDkyNH0gcmVhZG9ubHkgZGVmCi0vRm9udFR5cGUgMSBkZWYKLS9Gb250TWF0cml4IFswLjAwMSAwLjAgMC4wIDAuMDAxIDAuMCAwLjBdIHJlYWRvbmx5IGRlZgotL0VuY29kaW5nIFN0YW5kYXJkRW5jb2RpbmcgZGVmCi1jdXJyZW50ZGljdCBlbmQKLWN1cnJlbnRmaWxlIGVleGVjCi1kOWQ2NmY2MzNiODQ2YTk4OWI5OTc0YjAxNzlmYzZjYzQ0NWJjMmMwMzEwM2M2ODU3MGE3YjM1NGE0YTI4MGFlCi02ZmJmN2Y5ODg4ZTAzOWFiNjBmY2FmODUyZWI0Y2UzYWZlYjk3OWQ1ZWE3MGZkZTQ0YTJhZTVjOGMwMTY2YzI3Ci1iZjk2NjVlZWExMWM3ZDIzMjljMWEyMTFkZDI2YmIzNzJiZTU4MjJmNWVhNzBkOTllYjU3OGM3YmVmZDQ0Y2RmCi0wNDVhMzYzMDU2ZTVlMWNjNTE1MjVlYTZmYzA2MWRjZWJiMzM3MjA4ZWZmNzI5ODAyMzc2YTI4MDE0MjRmNjcwCi0wZTdlNjM5N2IyOGYxNWJjMTBiNDAwMTJiMGEzZWFlYjI2OTNlOGY3ZjYyN2M0YzljN2M2YzViZmYxMDVjMWU0Ci0xYjJiOWU4ZjA5MjUzYjc2MDQwZDI2OGI4MDcxOWUxYjNmNWE1NWFiN2I4ZTEzNGQ0Y2I1YWJjZWQzOWFjNjM1Ci1kYTAwMWU5OTM0YzE5OGE3ZjliOWVkMDAyOGE4NWU5YWUwMDQyMWRmZDhlYWEzYmIzYjRiNGNlNDVkMjA5MzAzCi0yMzdiZDUxODA5ZmU0ZDg4MDkwMGIxZWViMjM2YWNhODdiOWZmNmViZTZiOTk0YTYwYWY1ZDY3Y2NjNDJiZDU2Ci03NzI5NWMzNDZlYjRjNjJiZGMxZWYyMmVlMDdkYWFkOTI4ZGZiNzM0NTVmMDkxZjMyNDA4ZWQ2NDMwYjk3NDE3Ci02ODNhZjI3YTAzNzE4YTE1NmUzZjZlN2I2ZTRmMmU4MTc3NTAzY2Q4MmRkYmY0NTU3YTNjY2ZmNGM4NThhZTdhCi1mN2VmZWQ2Y2M1MjFhMjgzNDI0MzZiOTUzZTQ2NTBiNTc5MmJlODVlYTJmOTg5ZWI2ZDk4NjkwNWE2MWZhMzhiCi05NmUxYmJjODMwYjc0NDY5MTUwZmIwYjU5OGE3OTRmZDgwZDEwODcwMDg0YTg3NzI3M2E5NTAyYzM0NTZlNWVmCi03NDM1MGU2ZTNiZTU4NjNlOGJhMTg1ZWI1OWZiODdiMzY1NjZhZjcxMjAwYjZlZDM4OWQxMjg3ZDRlOTI1ZTMzCi1iMjM4M2VkMDVkODdkNDg1ODZlNjk4ZmJjNWQ1NjJlZDlkOGEwOWVjM2VhYTFiMWYzMDAyMjRhZjIwYzIzZjI2Ci1hMmVhZGM3NDU2MjU3MWRhODRiMzkxNGQxZDgwYjEyN2M2ZmY0NzA2YzcwNDZiYmIzNzJhMDAxM2UwYWI5NGYwCi1jMjc5NDY1ODM4NzFkMjcyYmY0ZjIwZmE4NGU4OWQ3NDVkZTdiYmE4ODVjYzA5YmE3MmUwZjUzMGVkNGVmN2QxCi04NjRiM2M2NzAwN2VkOTg4MDAyODQyMzUzNzJmMGE3MGM5MTJlMjFlODUxYWZiZjgxMjE2NWI4ZGY5MTJjZDFhCi0wMTNlMjcxZjBiMzQ3OTY3ODc2YzY4YWU0YzQxMDdlZjhhZDFmMTcwOTE2MjEwMDM0YzY2Mzk0YTlkOTcxYjY4Ci1mYmZjMTEzMWUzN2ZjMTc4ZWI5N2MxYjJhMGY1NzNhZGQ5ZDdjMGJmOTQ0ZTY1Mjk3MzRkZjhhN2VmNTQ0ODViCi1hMzM3NWNjMzBlOWUzMjg5NDM3MzNjYmQzNTJiYzE1YjA2Yzg1YmZiNGE5Njk5NDI5MWM3MmEwZWFlODRmYjAxCi0wZjFiMjRkMDEyNWZiOGMxNmQ2MDU2MWRmOGJiN2FhN2RkZmU5NTQ5YWZiNzBjMWU4OTQyNDIxNDYwOWZkZTQxCi05YTE0Mjg5MmUzMGYwMjc1NGZkMjM0Y2ViM2M1OWEyYTA0YzA2YmFiN2FlNDBlOGZkZWM1MDU1OWI4MzQ3Njg0Ci0zOTFjNzUwOTg3ODAyZDU0NTJjNDdjMWUwYjVmMjIyZGU5YTBlZWFmZWUxOWQ3OTZmZjM3NWExZTFlZjBhZWVkCi0xYmNhYzRmNDg1ZmNhZWUxOGFlYzU4NWQxYTlkODBmNDE4NzFkZGE0NWZlZjFlYWU4MmM1ODkzMTE4OTg3YmViCi00ZDllMzQ1YzI3Yzc0MTlmZTY1ZTQ4NTNiNDA1MzdkODIyZTM0ZmYxZTBiZDI4MTlkMjFlZjYwNzk4MTI1OWU4Ci05ZjEwNDBhMmQ3MDhkNzQ2Mzg1OGFhNTM4MTc1OWFjNDlkZjRkZGRlYjIwOWEyNzhmZTYwYmQyNTA4YWNhMGY0Ci02YTI0OWEwNWI2NTJlNGM3YmYxYjY3Njk0M2NkYzQ2MDI5MTBmYTNlYTc2MzY5ODVhMTBmNjM3ODMyYTVhYmFiCi05YzdhNTgwZDYwNTkyOWQ2ZDcxNTQ1MDYyMTcyNTJhNzU1YmViODQ2MmQzMGE3OThmZmE5YjI2ZTUwMGVhYjI0Ci03ZTlmZDYxMmM3NzZhZTYwNDIzOTk1ZGMxODUyNjg2Y2IwNDFlNjYzNTdhOWFjZDRiNmE0ZTk4NDZiMWRjODAzCi0yM2RhYjZiNzc2NTIwNWQ4MmI1MGNjNjM5NGU3MjVjMTlkZjAwZjdkYjQyNzM0MWQ1MTQwNDdlNGJjNTk0ZWZiCi1hMjYyZWIyYzQxNGU0M2Q4YWNjOWNiMTk1ZDEyZjNiMmE5NzQ4ZjM4ZWRiM2FjMzQ0N2QyN2QyMGQxZTYyYmJlCi0yMmY2Mzc4ZTUwOGYwY2Q2ZjE3ZWYxYzUwMDQwN2Y2ZDQ0MmU5MmVmMmUwMGI4ZGU3ODY2MGQ4N2ZkMWM3MjA5Ci1lYTY3Y2RiMzcwNzZlMWVhYWVkMTI4ODE0YTk0OGUyN2UxZjJmYTgxZmU1NGJlNmM1N2VmOGMyYjJlNDYwZjA4Ci02ZmYxYmI1MjljOTEwMGIxZDg3OGRjOWEwNzdkMjE4MDVlODlkOGIwZmJjMmEwNzRlNGI1NWE4NjljOTZmY2E3Ci04MTE3MzQ3YjljZmE0ODBmZjRhMzdiMzRiMDQwYTk5ZmJhOTk5NDJiZDg2Y2U0YjQ2ZmY1YzY5YmFiY2E3YTNhCi1mNTAxOGRhMDU1NTZiZmY3MWVjYzg0NGIyYjcxODU5OGYwODI1Y2RhM2QxOWQ3MTRmYjY2NDcyNjIxMTEzYWQ3Ci1iYjI0MGRlN2RmYmQxZjE3ZmZkOGYyZWY0Yjg1YThlYjZlMWJmZGYyNmM3Zjk4MTY4MTk3YzAyYzRhYTUzNWMyCi0wZjllZjliN2NiN2YxZDE3NGIyZTk0OTUzZjU0MWMzYjg0ZDQzMzY2ZTBlMDBhMDI4Yjk4Zjk5MGI0ZDAxNTE1Ci0zY2NjMmUxODUzNDczYmI5YjI1ODU3ZTRiOGY5ZDY2OTVlZjMzMmJkM2JhYTllZTU1MWE0YjE0MmRlZmI3ZjAzCi05N2NkMDc1ZWY5Y2Q0MTA4MmNjYmY2M2U4NDljNDg4MzVlMTA1OTIzZTcyNWQ0MWQyYjVlZTBjM2YwM2E2MDNhCi0xNjE3MTMyMTZhZjk3YmQyMWFhODdlM2E4MGQ3NTM4MzYwMzE1MjAxMTUzMGI4YWJkMjI5NGQwNDFlOTBhMDQwCi1mNjFiYWY4NmJlOTdmOGRhYTgzMjZlYjFhMmI0NTExNDI1Nzg1ZjM1Zjc1ODM1NjgzNTE1YWY2Y2QwZTczMTk0Ci0yYjI1ZDVmYThjN2UxMmNjZGUzM2FhMTkzZDYxYTM1ZWJhN2Y3ZTEwMTg0M2UzNWRmZGYzZTA3YTE0NDJiMGViCi1mMmE5MDg0NjM0NzM2YTIxMTI4ODQzZGY0OWM4NGIxMDYxZDA4MjY3NzdhNzU0MDc2YzRjM2QwYTY4YjMyZGJhCi1lZDRiNWMwNzQ2ZGRlY2RkNzlmYmNjN2E0NDI1ZWRkYWE3ZjQ5MjU3MTQ4ZjA1ZmY1MmZmNmJhYzcxY2I2NWNhCi04YWQ1ODY5Y2M5ZmQ3YzRjMTk0YWU4ZDVkMjBhNzMwYTAzNTIzNGQ4ZjlhNjM2M2U3YTQ5ZmMyMmJiZDM0ZDA4Ci1lYjdmZDQzYTY3OGJlNTJiOTVlY2NmMDI5YTZiMThhNTEyZDMwY2ViMGI2YWRmODBmZjEyMzJkZmRhMWE1NzUyCi1iNTIyMmVkZDkwMTJiNDVjZjBkZjA2NDRiMmU3MTNhZmVmMjEyNTVhMDgyMzJlZmJkNWQ1Zjc1MDZiZmQwNTBhCi1mMGRhZjU1YjVkYjU5NWQyOTM2MWY4MjUzYzI2YzM3ZTA5YjRmODcwNTZlZGQ4YzkwZTBkZjRmYzc0MDcyNTQxCi04YWQ4Y2NlYTU2MmU0Y2U3MmFjYzhlOWYzOTI4NGZjYTI3NGM1NzJmZmVjMjRiYTMwZWY5ZGIwNzA1NDk2NWJkCi0yMjA1ZDcxN2M5YjNiMDcyMzA2MWNkNzRlYzY4OGI5MTVhYjY2ODk5MDRkNTc2MjYyOWM4OTFmMmZjMGNkZmIxCi04ZDhhNGQyMjYwZGM5M2Q3YWMxMTA3YjE5N2Q3ZTg0MThiYmFjZmM2NjBkODg4Njk3Mjk2YjdjYzY1ODEwMjRjCi1lNTgzYjAxMTRmZmUzYjNhOTYwZDYwMWZmMjNjMGY2MzNlMmI4NTMwMDA0MmY3MTdjNDcxOGMwNTQ3ZmQ5YjE5Ci1lNzRkMGUxOGY2OTA4ZTQ1MjgwNjU4ODhjMTM2ZGM4NzY3Yjc0MDI1ZWY1ZmFmNDcwYTI3MmY1N2Y1NDhkNzM4Ci1jNWQyZmY2ZGVmNDM2NmMxYzA4ZTBiMDk4NTVlMDRlYzNiYmQ4Y2I2Yjc3MGY2MzhhYzdkODUyYjdiMjI1MGY2Ci1jZmJiNTY2OWM5MTEyZmJmNzM1NDZhOWMxZTk2OGExZTFhMDYxMjhlZmVlNjQyMmU0MWRmMTUxOWM3MzQ2NjM1Ci0zMWZlYTQxOWJiYTgwNjdjNmQwZTk2NDE0M2EwOTA2NzYyMTk3YjhkZTk1NTAyYWU5YmI1NGNlZDE3ZGU1Y2U4Ci05ZDYyODcxNmJmMWUzMDZhYWQwOWJkN2Y4Y2IyYjdkYWU1YmZhOWVmNTNlNzE2ZDVhYTJjYTAxNGVhZTgzN2M2Ci1jMGYyZDVmNTM1YWU5MzY4MmU4NTViMWJkZDZjZTk1NTYyNzI4NGE0NzEyZjY3YzFkNmRlOWY4MGQ0ZGRhNDNhCi05ZmUzNGZlNGZhYjU0NDQ1OWExZGZhMGQxMzgzYzUwYmIzZTZjM2RmMDc4YWNiODhkYjM3ZWNiMzhhYWFiYmIzCi1jYzU5ZDNmYmU2YTg0ZjFmOTUyMWI2ZTA1ZDBhMGIyZTBmY2VhZThlZWVhNGY0MTk3Njk0NTUwMWYzMmJiMzgzCi00NTU0NjdkMjE3Nzc3OTY2ODhlNTdhZTliN2IzOTJkMTY3YjYzYmZkYzExMDI1NjU2NDliNTM2OTRmMWViM2U4Ci01ZWMyZjA5NGFiMDZkNDI3YjVlMWU3NDEyYjMzNjkzMzZjNzY2YTdmYzc3ODE5MGRkNWFlZWJlZjliNmEwMzRlCi0xMzMzMTRjYjUxMjY2N2YxYTRlZWY5MGExMjUxY2E5ZThhYWY3OTY2ZWM5NjAwNGMwOWM0ZGZhY2JiMGQ0YzQ1Ci02MGQ4ZGY0MTgzZDM1OThmYjk1ODRhNDQzM2M5MTMxZjg2MDI0NzRmMjdlNDkxNmI0M2RlODBlZDFkMDJmNmU0Ci1kMjA4YjAxNGMwYTQ0ZDk0ZWY3MDk5MzBlY2E2NDZiMmYwN2Q4MzU4ZDQ4ZDBhNzY4YjZmMTM0OTJlM2NiODc3Ci1mZTM4YzU4YTdmNTQ2OGFmNTJmZmMxMWI4YzAyYmQ5MTQ4NGNkYzAyMmFiZTY3OGE3ZjJlMjk4YTdmYWQ5NjdhCi0yZWE3ZGM0MjdlNmFjMTU0NzY2Y2E0YWUxNWZkNDE0YTc2MDY0ODIzZjMxNDU3MjQxODRlMzBlYzRmMTQ5NGM4Ci03OGY3ZjYzZWRlYTYwZGFmMjQ0OGRlOGE3OTgwMWVjZmQ4NmEwNmVmMTIyNDUxZGQyMzgwYmIxYTQyNTZhN2VhCi04MDZkMTMxZTY2ZDVhNmUzMDc5ZjdjMmQ3YzE0M2UyODc5ZjUzMTZmZmViYjFiZmExNjZhMDg4YjhmYTljYjdmCi00YTVmMDg3NWE4ZmY1ZDM3OGU5ZTgyMDVjNjE1NWVhODU3NTY0NzVjYTUxNDllYjcyNjQzYjRhZTFmOTA3YzBjCi1mYzhmNjMxNTBjZGM2MjA5YjE5NTFhZjIzZmY2ODE4ODM2MDkzOTUwMTc3MGVhYzM5ZWQ1NWRhZGM0ZGZiMWM1Ci1iMmVmMzljOTNkMDMyNmE4MDRmNjJlOGYxODdhMjI0NDQ0MDk4ODM1ZmY2NzBhZDU1YjQ5ZjNjZDBhYmEyOTAxCi0yOTNhZTA0NDI3OTE2ZWUxNGM4MWY0MDQ0YTA1ZDljOGFkMTRhZDRiNTU2N2U4ZTAxNDc3ODBhMGJkMjk0YzVhCi0xMGE1MGE1Y2M3NjU2ZjkwMTU4ODQxOTEwOGQyNTcwZTgwNGE1ZTU5MDAwNDAwODc3NmM4Y2YyMGI1NmQ1ZWYxCi1mYTMyNTM4YzQ4MGJjYzE5NTUzMjFmOTU0MDA4ODcxYmExODAxNzdkZWE5NTJmZWZlYzUzNmY2NTIyNTgyNjQ3Ci1iYzIwNWRkMTM5YTE4ZDJhNDE5NTZiYWE0YjAwMjE2OWNmMDQyYWIyZWJmOTFmZjIwM2RjMmUyNTU5MTcxOTEwCi0yMTE5ZTk0NjczYTI3NWQ3M2YzOTA5ZDA4MzRiMTcwZTJiNjJiZWVkY2NhMjdhZmI0NGEzNWFjNTFkY2I1NzE5Ci04MjcwNmYxMDFiMjE2YjRhZjM1MjM5NzQzNzhhMDVjMzI3NzAyYjEzMjMzNWZmMjg4YWRmNjI1NzhmMzBjZGNjCi1jZjgyNjg5ODM2MWJkNDkyMzhmMzY4YWUyMTgyZmJiNjMxZTM3NWU5MDNlZDllZmI5MTFhMDQ3MTE5YjQwODMwCi1hMzk5MDk0OTRlODZhZWUyMTY5NDIyM2RmMWE1N2FjOGU1YjRmMDQ2NWQwODY4OTM5YWM3N2NjYjQ0OGQzZjU4Ci0zNjYzMWNlYmRjMDZiZjI4NjVjNTg0Mzc1NjhjZDczNGVmYmZhODcwMjE0ODUzMjMyY2NiNDhjYzU3YzhjMzJlCi05N2NkZWI4OWNmNWUwYzAzMmU4MWRlMzc3YjM2OGY3ZDU3MTg3ZjA4Mjg2NzVhNTIzODJkNDFkZTZjZDlmYjUyCi0yYTFjY2ZkZTMxOTJjNjUwZmNkN2QxZjg2ZGIwM2M0MDFlNmVlYmQwZDQwYmYyM2MxMGUwMjFlZDY2YmM1YjdjCi1hZTU3ZDA5MDViZDI0OTI1Yzg1NzNmMDY5MTM5ODgzYmJkZTEzZGYzYWUwNWJlYzE3NzFlZGRiOWIwMDM1NTVmCi05ZDY5NjU3YWM3MThjMDY1YTMyZWY3Y2E4YTFmZjU4ODBmYzY2MTk2ZTgxMjMwNTBhNDdlYmU0ZGQ1YzFhNGE3Ci00MGNlMWNmMzQwYmYwODAyMWZjZWVmODE3MmQ5Y2RlYjA2M2Y0ZTRjMjIwNWFlNDUwM2M3MWFlYzE4MzZmOWJmCi05NmNjZDBhNzEyZTMzNDA3NDQ2Y2VhYjk2MjIxZDdiM2Y0MzQyZmM3NGFhZmE4MDI0ODFhY2VjZWU3MjQzODA3Ci0zOTBiMmQxMmM4NDQxOTM1NjA3MzhlNTc2ZDI3YjBmNWE5MGIyNWUxYjVhMjdkZThhMmM3NGIzMzAzNTI2MTkxCi01ZWUwMjUxMDY1NDc1ZjI2YmYwYmJjYTU1NDlmMTNlMTM1Nzc5N2E1NzI4YjQ2YmE5NTcwYzA5NWQ5MzgxMTJjCi1iM2JhMjEyYzI2Y2Q2YmI1NjllYTI3NmUxZDgzOTc1NjlmOGQ0Yzc4NTI4NDkwMTg3YTE3MmQyZTMwZGQwMjI4Ci1kNjlmZGFhMjVmYmRiNDc3Yzg4ZDUyZjBiYTEzNzI4MGQ2ODY1NjAzNmMxN2I4ODUyYjAzYzIxNjIxZDBiMjFjCi02YzAxNmYxOGNhY2ZhOWE5OThlOTcyZjQwZWRhMDcyNzhkYTU0ZmU1MTE5YmFiZjAxNDVkNjgyNGYwNTFjZDYzCi05MWJjOTM0NzJmNzgwZjAwZTI2MWRjNzRkNjY3M2RhMzdkOGQ5MjkxZTI1YWYyNzk4MjlmOGQ0N2JiNTI0YzE5Ci04YjU5OGNlMWM1NzZhYzg1NDJiNWVhZDk5YjAzOWFjMjk5NmE2ZDc5MWEyMmE1ZDViYjBmYTNlYjY1ZDFmYTAxCi00MDFkNWM3ZDQ0YTljZmUwODJlOTMxNGFkYTZmNGFjOGVjZWE1YmU4ZTVhMWNiNmExZGJhMWM2MTVlNjllYzliCi0wZjIzMWI2NGFjMzFjNTQ1ODU5ZjAxOTViYjliNDAzMTIxZGY3YmUxZWExNDg4YjQxMzgyNWQ4ZTFkN2FmYmZjCi1lNWE4ZTFlNTJkOWMzZWE2ZGUzY2U3NWQwMTNjYjczOTZlODI1YmFjM2E1MGQwYmZmZDJkMzBjNmYxYzVkYzBkCi04M2MxYjY4ZGQ4YjYwNDIzODIyODU4MTIwOTNkYjRjNWQ3ZjZlYWE4YTRhY2JlYmE3OTRmNjM2MTA0NTZhNjQxCi00MmZkZmQwYzRjNWYwYzQ0ODZhNjE3MGI3NzAxY2E2NGNkMTQwOGY2ODZmYmQyYWZiNTZiYTMwNzcyMmIyYmJhCi1jNTQyMTIzZjc2NjE3MWI0M2FhZTVhYzA1MzA5NGEwNGFjNGZhYTNjYmRhZGNlYzgxYWI1YWFhYzU4ZDNhN2I3Ci0xZGJlZGNmZTYzZDA2MmIxMWRiY2FjZWZlYTg5YzZmODkxNjM4OWQzZjdkOTNkYTg5ZWJkOGMzNzQxNGM3ZGI2Ci1kNjUxMmE0ZThjNzYxNDVhYzE3MGZhZjEzNmEwMjNiM2MzMWNiYWU5Nzc1ZTQzNmQ2Y2IyODM1Yjc3YjU2NDU4Ci02OTA1ZDU1OGEzY2ZhYjBmMWYzNDI2NTU3YTY2YmY3NzUyOTJkZjA1NmNmYWFjYThjMDg3YjRjMGJjYzJhYWUxCi1mYTQ5ZjM0NjYwMjM4NGY3NDNiZTZiMWFhMjYxMzRiYTI4NzIzNjZjMTdmMWRkMzU2MjIxODM4YTQwYmUzYTRkCi0wYjg1MDJhOTY0ZDM2MGVhOWJjNThlNGZmYmYyODNjODI5NDY3OTE5N2ZhZjVkMjNhYWQxYzg5YzNkYTg0OTAyCi1jOTU2MTlmYTBhYjc2Y2EwYzdhZTcyNWExYzVkOWM0MGU4NGNjODRlYmE4ZmM5NTM2MWYzYTczOGRkYmNiNTkzCi1iMzExMGRiMmY2OWVjZjlkYTIxZDc4OGQzNmExYmY5ODZlMmRkNzhjOWU2MmY2NDNlNjY3N2Y4MDk5MWY5MGEwCi04YmQzNTQ4NGZjNGFlZjMyNDNiYzNiNDYwZjU3YmY2ZjBhNTAzYjU3Zjg0NzIzNzM4ZTFiOTRjMzAyOTUyMGMxCi1mOGQ3ODdmOTkzMDVlZjg3ZmU2NDI5M2I1ZmJmMGEzNzgzMDY0NTljMDIyZjQxMjdmMmUyMjA3YmE4MThhYWM0Ci0xYzg2MGI3MDgzM2I5MmNiNzIyOGFiMmM4ZjY4ZDAzYjZlY2I2N2Q0ZjgzY2IxNjBjMTcwMjk4ZTFiZmYzMzlmCi0zMDY1MDVlYTRmZTg2OTI5ZjExNWIzYzU1YzdmYmRiN2YwOWViMzhmN2M4Y2E4NmM5Yzg5ZDliOTJkYWUzN2E5Ci01ODM5YTE4MWU2ZTU1ODM1ZGEzZTgxYzg4NDY5ODBlYzVjMTY2NDZhMzFiYmZmZTU0YTg1MDVlMDA1YzkyMDBjCi1jYjJiNDc2MDgzZDdlNTVlNjM2NDgxNDZlOGU2MTVkMzQ5ZWQ3NzliNzg3MjMyNjA1YmViMzgzNDZlMzU3OGJmCi1kMDQzNzk3ZWRjMDBmNmRmOTFjOWEwMjk1OGVhMDFmNTVmMDBkNTc2YzhhOGQyMzZlODFiNTllYWY5NmJkZmUzCi00ZGU0MTI1YTM4OTNhY2VhOTdhYThkNjM3M2I3MzZkNGNjMDE2NjA5NWJiYjc1YjczNDFmMDZkOGUzZmI3MzJhCi01NTM5ZmE4YTI3YWJjMWQ4MmYxYTg2YTc2ODcwNDUwZmRlYmJlODg5ZGQwNDhjYmYyZjE4NGRjY2E1Mzc3NjQ5Ci05Y2EwMDUzYWE5YTg4YWI0ZDZmMjc5ZjhhM2JhNzA0ZWQwNTdkYzJhMzYxZDA3ZTVhZjZjOWM4Y2U0YjA4YzA1Ci1kMDY2MzVhZmNlMWNkN2ZiMTI4OGRmOWNhMWY5YTU1NmQxYTEyMDY5MTI5N2Q4MTM0MjE0ZGExNGRiNDVjZGJmCi01NTQ1YWJiNzUxMzRkNDUyNTdiMWUzNzNlYWYyM2ZiNjAwMzcwY2Y4ZTdkZTAyZTcyMTE2MzliMTFmOGZhMGQ1Ci02NjI3YzU3MThmNTU0Y2EzMzUxYWM5NWMwNGRiZTg5NGUyMDY5MjA2NWFmMmM3YTllMjM5NDQ5ZGY0YTY1OTE3Ci0yZTBmYTJiZDNlYmZmYmZmZDkwOTM1Njk4NTFhMzFkYjQ2YzhjMzBjMWZiODMzOWE3Zjc0MmEyYzg5MjEyODMxCi0xNTQ1OTg0NDI5ODk3MmI4YjA2ZTJjNjk5ZDZhY2FhZjMzMWEwMjMwNDdlNWIyMDQxZmMzOWQ4MzBiMDg1MWE1Ci04ZWYxZTMyOWI2ODgwMzRmOWM5MTkyN2NiYWFlMmVjMmM4NGY4NTAyMTI3MDU1YWRlNDQ4ZDZkZDdlZWEzYWFlCi0zOTJkY2UwMzM0NzE0MWIzYjg1ZjMwMThiMzM5NmI5ZmIxZTRhNTljNTBkOWU4YjgyNjEwMDg4NTc1ZWVjNjYzCi01Njg2ZTcyMzRlNzJlNDY5MGNlMzg2ZmNmOWQxNmI1NGM5YzY5MmU5MzI0NDI3ZGVlN2UwOTZiNmQ0YzQ1NTAxCi1kYTJkMGVkYTY2YTFmMjllOTBjMDBmZDJjNjJhZTQzYTk3ZjYxMTc5NGM0NzA0ZDE3OWNlMGJkNjNmZmM0ZjUwCi1hYjNjYTcwODZiZjk0MjI4M2ZiMGQxNzU4ODhhMTNlNTI3OGFhYWEyNWEyNmUzZGY0ZmJmMTNlNjQ1MTlhZDk0Ci00NGFmMTcxMjA3ZjNmODliMzY5Y2NkNjE2MmMwYmExMzIwZDMwZDNhNTk2ZDlmNTg5NzZmOTQ0MzRjMWZiNzczCi1lNzBiZTg3NTI4YTliZDVmYjdlNDk0ZTZjZGJhMGEzY2FiYWI4ZGMyMDczZWE3ZjViOTU2YmY1ZDVjYTFiMjU4Ci0yNWE3M2UwODI0Y2U4ZDAwZjRjOTQ1YzBhZmRjNGI1N2Y3YzAxNjJhMTRiMzAxNTRiNjFhYjAzMGE3MzY3OWFmCi1kNDNlMzIyYTA0ZmM3YjNjODE0ZjNiMmQwNzU4NWVhZTZhNTI1NGI0M2JjODM2YzYwMDBiZjIzYTU2ZmJmYmZlCi04NDc4ZjFjZDAwMTUwZWUzOWYwYWFkMmM3YWUzMzEzYjhkNjE5Yjg0ZGRkOGNkMzg3OGE0YjMwNjk1MDg3M2RhCi05YTU5MmY1MjBiN2Q3ZTBjZjliOWM5N2QzNTEzOWVlZjljMzI5NzYzODY5ZTY0ZDg5YTUyZmVkMDE2ZTFjZDQwCi00NDk3MzU5ZDlkNGQ2YmI3MDIyMjQxODI4MmNkOWVkN2YxMmMxNmNjMWFhNmIzZWVhOWM4MTJiN2MzOTEwMjA5Ci0yODMxYjBmMDVlNjQ0ZjU4ZTg3OGMxZWFhM2Q1ODdjODliMjZkYjhiOTk1MmUwYmVhZDEyYzdkYjZhYTVhMDQyCi05ZTMzMDEyZGIwNTUxZmU2YTU4OWJhYTgwMDkwNWE3Y2IzNWQyMjBlZmJiNjc1YTk2NDQ0ZWRkMThhZDg5ZGJjCi1lYmM0MDg3MTYyZTk3N2I0Y2M2ODBhMGUzNDkwYmZhZjI4YTU1NmMzYmI5Mjk5OTM1MDk3ZTNlMDQ4Njc5ODQ5Ci1hODVjZTkwNmY1NWJkZjU2NGYzY2NhMmIwYTcwYjQwNGQwMjUyMGI3NzYxNGU1NzcyMzFjYjIzMTBkZGUxYmE1Ci1jZWExZWY5MjZhZDE5MWM5OGEyMWVkNzZlYmI4ZjQwN2VhMmFlMmZmNTYwMTQyMTZhYmIxMThjMDIxODU5MGY1Ci1mMzI4NGY5YTE4N2E4NWIzZjUwOTFmMDViMjFkNzQ3ZjZmZTczODRhMjdhZTZhOGRkYjkyM2RmNGY2MTkwMGU5Ci1hZGI4YmU1ZDMzODYxM2UxNDg2ZDcxMGU4OTJiNWI3MzMwNjE5NTFkMTY0YWUyMzMwMjNhNjllMDI0NTdlOTBkCi1kZmI2ZDhhNTNlYTBhNTdmM2M5ZTI3NjE0NjMzYWNlM2M2Y2Y1N2RjOGM4MWQwYzA3OTY0MmM0YTA3NDVkMjgxCi0yYmM2YWM0NTg3YTU2ZTY1ZDY5NTVlNTBmNDM4MGQ5NGY5NjI4YzEzMDEwMmUyYTMzMjVkNjk0ODY1YTBkZDkwCi0wMWFiMTE4ZjM5M2ZkODZkMDFhZWRiNTYxMmZjYjQ5ZThiODFmYTZmYWRmN2I2OTY1MGZjZWY0NWEwYTcyNGQ5Ci1lY2Y4Y2VkNWNmNTY5MTNmYjY4YTM5YzcxMzUwYWNkODU1NDMzY2MyNWIyNWFkZTE5OGNkYTQ2YmZjY2YxZmFjCi1mMWM4NDFhMWU2MDU4YTczZTI2ZTU4MGNiNDYzODQ4ODVjNDE3Nzk5ZDkyODIyNjg5YzJmNThiYzFlMGEwNDBhCi05ZDdkM2Q3M2RlM2MxODY4OGQ2MjU4MWQ1NGEwZWFkZjlkZWZmYjNkYjM0YTlmMDUyYmNlMzNkNWZlOGU4YWU5Ci03OGU0YjBiZGNjMmE4ZmZkY2FhNWI0YzBmNGEwMjU2ZDk0MzY0ZTcwZTE3NDlkYmMyYjE0N2Q2OWVjNTM5YjQ3Ci1lZjg2OGFjNDgwN2Y3YWMxZjAxYzkzYjMzNjE5NDI5MTU1ODFlZmM3NTQ0NTNmMjIxZjRhNzBiYjkwM2VjMzEwCi02MmNjYTdhYzM5MmY2ZjcwYjYxZjQ5ODIyY2ZkNjVjNjY4MDcwYmFiYzExMDIzMjJlNGNmMjI0OTAyZjBjYzZlCi0yNmJiMmMxMTljM2M2NjQzNGY0YTg1MTY0YzQ5ZWQ1MTA4NGExZjA3OTVlYjYzMWY2ZDM4MTIzNjE5Y2M1Y2VkCi1jOGM2OTA4ZjM4MGE0YTNmNzkzOWQwYjAzMTg3ZTQ0OGZhNDQzMzNlZDhkOGMyNTA0YzNmY2UwMjM1Nzk1ZDg2Ci1mN2E3YmI0MjNkMWE3Y2E4MWIyN2I0ZjgxYzkzYWM5NWJhMzM2YTBkOGU2YmI5MGM5NmFlNzc1ZWUzNGMwN2RhCi01Y2QwMTlhNzNiNzk0NDQyNGQyNDJkZDdkOTZlYTAzNDkzMDdlZDQyNmZlMGM3ZmI4YjVjYmUzZDI5NWEzMDY5Ci1iOTc1ZmFmYmU3ODEwOWNhYjM1YWMyZmE1MTU0ZjY2YWY5YjllYTUyMmNkNDg0NzQwOGQxY2UyNGNmN2ZjNzcwCi00ZjIyMmZlZGM5NjJmZjIxZDA5YWEyYWU2Y2MxYjE0Y2ZiY2FiNWQwMDE2NjA3MzYyZDNjOGY2MzQ3ZjdhNTRlCi04MjEzMjdkZGQ0NzUzOTZiNDY1YjFiZjU4OTQ3MDNjNmRlMWU5OTQ3ZTY0ODY3ZTY4ZWZiMjYyMGM3ZjQ2MzY3Ci1jMGMzNDVmMjk0Yjc4MTk0M2YwYzk2NTAwNjg4YTA4MzQ3YjAyNzJjNjBlNWQ2YTc4MTBhNDRjNGU1NjU0ZDA5Ci0wNTkzMWE1N2UxZmU2ZmY3ZWRkMWU3N2ExZTFjMzkwNzBiNDllNGQ3MmE2MmYwNjM0MGY5YTc2ZDA1NTM5MDViCi0zNWU1NzExNDM0ZDI1Y2MzYjE0NTU3YmJhZjY2YTgyYTZlZjU0M2JiZmQxNGMzMTRkZGVlMGVlOTkwOTA0ODJmCi1jMWRkMDZlZWNmMjAzZWM5NTExYTNhZDZjY2VjZGQxMTM5Y2NmMzFkYzcyZTQwNzg1M2QxNTljMTYyMjEzMWRmCi1mNTYwYmQ4NGMzMGM1ODQzOWIwNmFlZjc5YmY1M2ZmYWE5MGFiMzcyN2U1OWYxNjQyNzFhNjljNWJmMzZmMGQ4Ci0zZjljMDA5OTkzM2I2YmRmYzJmNjEzZDRmMzU2NWRmYmQwYzg1ZTg3MjM0OTFlYWQxMzY5N2Y4OTQ1ZjYzYTZhCi02MTI5OTA2MTNiNTRiYjdhMTljMWQzYTEzYzE0ZjE5Njk0ZTNiMTI5MzI5M2E1MWM2NGViZTQzNjczOGViNjFlCi0yY2NlZjA5Y2E3N2VlYjM1YzdiZjEwZGIyYTliMWVhYmJlNGZiODhjY2VmZWFlNjM1OWJmNWUxMzZlZTk3NGVhCi1hMWE1YzcxNTJkNTRkZThkZmFiODk0MjI5NDNhZDUwZTU4ODRmMzMwYWQ0MDc4NzYzZWEwNzFjNjI2NWU1NTVkCi1hNjEwZDI0NjEzMzQzNWRiMTFjMzdlNzg2MzAyZTNlODg4OWVjZTFkOWVjMzY3MGQ4MmJhYmZlZDdiZTJmYjdlCi1mZGI3OGUxYjZlMWM2ODJiOTMwZjQ4YmYwYTI4MzAxYjQ2M2E1Y2E3N2MzNjhmN2Q1NzE4N2YwODI4Njc1YTUyCi0zODJkNDFkZTZjZDlmYjUyMmNmNTJkODc5Mjc5NmZjY2FjNDhkOTUyOGQ2YmE2NWNjYTc3NWVlYTBkOWUyNzJjCi0wODRmODAxN2JiNGZmNzc5YjYxNWE0NjUxOGIyNTZiMmM0M2IyN2UyOGI5ODhiZjZiNjBkNzgzZDU2OTA1YTVkCi03Nzk0OTA0YzBjYjk1ZTJhYTgzNTEyZjQ3ZDJjMzkzYjc3OGI3NjExMDUzZDMxYmJjNDY3MGM2ZmZlNDVmZjI1Ci0yYjcwNjRlNDc0MGU4ODk1MTY5NjA3ZDU3Yzg5OTU2YjUyNmE2NjRiMjhhMmE5ZjdjNDJkNmE0MGM0YTk1YWE2Ci02YmU5ODk2N2Y1MmE4NTVkYjAyYzQ5OGYxNDFmZDZhZmZmYzBhNjliMTRiYmQwMDlhMGMwZjAyM2Q0ZDY3MDZjCi1jYzA1NDAxYWE5NmQ1NTBiNmNlMDE5MDI4MWJhNGNlYmYxNmFjZmE0ZmQ5NDczMGNkOTc3ZDZjMTIwYzEyNGJhCi1lZjg0ODllMjJhMTNjMzA1NTIxOTZlOTkwNDYyMDFjY2ZmMTFjYjNhZmY5MmE2M2U0N2ExMGEzYTY0MzNiZmMwCi1lNzcwNDc0NTNiNzE1MjdmMjA5YzkzOWQ4NTE2MTgyY2E1ZjA5NjZjY2JmOTcxZmVkZTI1ZTNmZWZkOTJjZjhiCi1mZDExYWM1OWRmZjM2YzI1YWFhOGM3NzFhODNkOWNiYjdkY2NiMzdmNGY3NTcyZjExZjcwMmJjMjdlYTk1MTBiCi1hMmQ0YmFhOTRmNTk1M2JlYjkyN2FhZjI0MjY0MjFmMDA5M2M2MDNiZDYzODI3ZTI4ZjE3ZDU3Y2VmNDc2NTc3Ci1jMWYxM2ViOGJlZWFkYTQyYTFlYjIyMWNhYzNkY2NkNWQ4NGE2Zjc0ZmEyYjI4OWMzY2FiNmUyZmM5NGRkOTJiCi1kOTZhMDE1YjIxOGNhN2ZhY2JlMThmOWM3YTU4MDYxMDkwNTg0N2E2NDllNDQ3Nzc3M2I4NzY4NmY3ZjI4YjMzCi0yNDE0OGY0MjEzY2NhYWM0ODNiNDNiZTJhOTc2M2ZkYmJkYmJkNTBhMGY5ZDU5ZmMzMWY1YjdiMmFjMGY5MTVhCi04OWFiZDY0ZDg0ZmFhNjJhNGMzMTY3ZmJiZjY1MWE2MjM2ZWFkNmFkOTMxYzExNDM1OTIxY2JkYzRlZDY2ZjY3Ci1mZTgzYmMwNTlmYTBjNjI1MDAxYWQ1YjNiZjYzODI5MzY0NmQzMzA3NmYzYWZhZmE4YjhmZDczMDdkYTVjNTNiCi01ODQ1OTk5YzE2MjRlOWVkMzBjZDQ4NDgzNDAzZjlhZmRhYmJjYmU4MGZhNTAyNWJlYTJjYmMwODFlMmIzMmM3Ci00MjY4NTQyMWNlM2Q1NzRhNDE0YjM0MDA3NWNiMDJlODBkNzQyN2Q0Y2M1MDNlZTAyZjViMzNlNTA5ZDc2ZTBiCi0yMWI1ZDVhMjUyNzU3YzRiNzg5M2RkOTg3MGY5MzcxZWNhNTdhZTc4YWM2ODhlZTI4YzMxZDU5N2JjMDE4NDk2Ci0zZmE1NGE4ZTE2MGE3N2RjOGIwNjI3ZDczMTk4ODVmYjJhZTBlMmUyYzlmYmNkZTRiNWE3YWNiMDRiZjFlNjExCi1iNzNiMGRlZTNhYzhmNDRjNGNhMTVkYmVjYTIwYzM1YTdhODgwNWYzYzIyZTZmYmE4ZTliMjI3MjJkZDI1YWUzCi1iYTJkZWMyYTBjOWExMzUwOWY0YzlmZDNkYmEwM2VmNmU0OWE2MzJiZjdkZTVlYzQ1YjY0YTFmNGUzYTM2OTc2Ci0xYjdhOWM3Yjk1YmQyOWIwOWI5MzBiMGQ4MmYyYzM5ZjliYzNjMjRkOTljNThhNjY0ZDRhZGVkZjdiNzRlMTNlCi02ZDg1ZTAzZTYxNWE2MGEyYWVlOWY3OTBjNmQwYTJlNmU4MmU2ODQwZTUxYjM4YzQ1NzlmYjk1MzM3NDIzZmJhCi00MzdkOTdhYjQyYmFmYjEwOTdiMmUyOTUyZTg2Yzg4ZTk0YmE3MDIwZTgzMTYzYjVkODEwZGU4ZjU3NjI1ODE5Ci1kODZkN2FlODM0ZDcxMzVlMzBmMmUyMWRkMDYxZmYxNWYyMmRlNmM5MjQzZDJjYWFhNWFiZjY3YWJlZTNhNmY1Ci0zMDYyNzMwMzdhZGNkMTBlOGYwMDgxOGVlODhhZDJlYTk4ZDZiN2YxZWU3ZTNkMWRiNDlhNTdmYTM1MDY2NGQ2Ci0wMjEwNzhlZTFlYmZiZGJlNWFlZTllZmFiMmFjZDk4MDljY2ZiMTgwZjgwMTdhODRiYTZiZmMxYmE1OTQwZWNhCi0zMDc2Yzg2M2Y4ZDlkZjNlNGFmYjMyMzYxYWNhYjEzYmFjZDNlNDY1ZDA5NGI2NGJlY2U5ODdiZTY2ZmE1MDFkCi01ZGViYTg5MzM2OGVhM2ZkZDNiM2E0MjAxZDNiZDY4YjM0NjRlYWQxMGM2ZjBkZGY1MTNhNjMwZTAxMzNmZWM4Ci0wODYzMGU0YjNjOGIwYWFkMWJiZWVkNTA4ZTdlMDNkNDFiM2QwNjBhOTJiMTk1ODQwNzg0M2U0Y2FiZDc4ZDc5Ci1mZjcyZmMwZTkyZjQ5MDNjZmQwNTg1NmY0NTdkZDE1YjFhYWI5OWMxZDI5ODA0ZDJmMzEzNGM5ODE3ZjQ1ZmQyCi1lZmViYjkyNTQ1ZjA1NmY0Y2E3NmVhNzRhZDQ2NGNkMDQxYjdjYmI4ODkyZjJkYmE4MzMxMThiODNlMjBjMDM5Ci05OTkzOWZmYzZjYzUwNTAzYmI4NzE1NjU3OTdlYzUzN2UyNmViNjIyZmQzMDMwMzI3Mzc0OGFmMmFmZDk3ZTA3Ci1hOWMyYTk2ZjRlZjg3NTRkYzNlYThmMzM0OGNiMzBkNzZiZGFhODRkMmU5MzNjOTRjOTlkMTNlNzRmMTk5NzBmCi01ZDJiZDE5NzEyOTI2ZTIzMGRkMDJhZWFlNjQ2MWVkZDgzYWM5MzVlYzJmNDIwNjQ5ZjgyZDQxNjBhMDcyNzAwCi0xMDE0MTYwMmMzYTY1NzI3NDBkOGU5N2ZkMDhlNTZiOTg3MDYyYmI1NzIzN2JiYjMwNTZhMzZlOTdlMzk5YTdhCi1jZjk2NTM3NDNhOTk4NGVmMzYyNTRkNjA3NzJhMGVlZGNhODAwOTIzNDYxYTNlNDQ0M2E1ZWY0NjlhZWZjZWVjCi1hYTE4MzFlNTZiMGQ4ZWE2Y2NiNzZiYjlkYmI2YWI3NTg0ZWUyNjhiZGQwZjVmMGQ1N2VkZGJhOWI5N2Q3NGEyCi05MTBmMTc4ZjM4OGE1MGZhMzJhYWQ3Yjg3YjMyMzVlZmNhYmQ0YjUwMDkxOTBkMTJlOGM3NzBmNmU3MGRiZTEwCi1lNzQ3ZTE5ODRhMWM0MWQ3MDFlNjIyMGIwMDFmZTI1YjlhNjc3Yzk5NmY4ZmQ5MWJkNDBmYTdlMDdmNTdlOGJkCi01ZDIzODE0NDJiMzM3OTI0ZTU2ZGU0ZDE4Y2RjMzUyMzE0Y2FlYmYwNjVmNjEwYjAwYjUwMzAyYmFlM2FkNjEyCi1kYWQ5MDU5YTNkN2YzYmQ2MzgyN2UyOGYxN2Q1N2NlZjRhOGNiOGFmMWYwODBhOTkzYzNjNzQ4NzFlNGI3YmRiCi0yNjAyZDA3NTg3YWVkMDJhYTc4M2Q4MDIzNGI2ZWVjYzc3ZDE2Mzg0N2U2M2QzYzlhYTQxMmQxMGFjZWE3YTVjCi01ZWNlNWI4OTNiYjMwMzFmYWNlZTcyNzAxYWNkMjI1ZDZiNmE3NTJjYjJmODRkZTNjZWFiMmI5N2I2MDZhMGJmCi1jNjg3NDg2OWE4NmUzYTU1YTRlMWQ3YWJkOTQ3MTlmNjA0ZWE2OGIxMTA4ZWJiNWJlYmMzZWY0NjViZGQyY2RiCi04NjRlY2ZlMGQ2OTU5ZDUxMTRlYWFmMTYxMmM5NzBjYWEyYzk0NzI5MTc4ZTZhZjEzMGExZGYyMTFhMzc5NWE5Ci1iNWZiOTM0ZTQ3ZjZjNDgxNTVhMTlhY2NlNzg4MDM2YjQ4NjdmOTBkNDBjMWU0ZmY3NDYwMzk5ZjFmMDhmOThhCi0wYWEzZTBkOGUzNTQxOTVhMjU2Mzc1OWRmZTAxODNjOGQ2N2I0NDk1MTZlZDhmNWNmMzI4OGY3Mjk4ZDYyMDkyCi05MjJmMDcwMjczNTJiYzdjOTYxMmNmY2E0NmYxY2YyZWQxNDE3YWI4NjNjMjYxNWYyZDI2ZWUxM2Q3YTA0YTE4Ci04MzM2ZWM5OTYxZTc2YWYyZjUwNmUzZGIzZDY3YTJhNGZiMmRiYmIwY2EzNGJlNmRiOTc4OWExY2RhNjA3ZDliCi0zNWYwZWFjNDdmNDg4YmJlNzRmOGYwNGI0OWRjNDkyZWM4ZjA5NmU2NzEwYWQ1OWQyNDhhMGM5ODQ5NzU0MWQ4Ci01ZjkxMzRkNTIxNWIwYTA1ZmMyOWRiMWFhNzFlNDMyYTJjMGIwMDEwNmJmMzEyNGRmMGI3MmMxNDQzNzVhMjgwCi05Y2M1ZWQ4MzM1YjNlOTcwZWFhZDkxNzhmNDMwMTFiNTVkN2YzZTExZDg5YmUxMDU4MzYxODkzMDE2MjU0NDQwCi0zNTNiODgxNjJhNGU3OTEzNzIxMDkyZTA1NTczNDk3ZWQ2OTNmMzEyMDE3NmRjMDgyNTNkMjM1NjU1OTA0MWQ4Ci03NDFhNmI5YzQxZjhlYjY5NTM2OTYzMzYzMmZmYzM1YTFlMmU0ZWQ2MjU4ZjBhOGVlZjBiZjZiYjAyOGVmZWQ4Ci1hNjc5YmU0YmMxOTdjYzg2ODI1NWY3NDhjYTk1MzMxMmVlZjU1NmQ4ZmRhZTRlOTcwNmMzMTE2ZTc2MTQwNTg3Ci1kYjE4NDkyNzMwYTE0ZTk2YzIxMWZjZDBhZWIwZDQzMjRiMWI0YWJkMDE1MDYzN2M2YzEzNWZjY2ExODIzZmRlCi0yMDQ4MmRiYmFiNTM2Zjg3ZTFkM2YwYWM0YjUxNTRlMzNiZmFhZGUzYWM0YWY4YjhkMjA4MjY1OGQzNWEyNTFlCi1hMGQ3MThmNzAyZWQ4ZDk1NzU1NTMzMWM5NTkzYWJiZjY0YjIxOTRkYWM5ZjA5ODc3M2VmNDMxM2NkOGE0OGU3Ci00ZDYwNTEzZDZlZTFjMTMyZTU5ZWJmNWRjZTIzNTliNjFlZmQxNmZiNGNjZTgxMDE3MmFiYjM5MzllODc0NzkyCi1hODYyNDYyYzcyODk1NDYxZWQ0ZGQyNjVhYmJmNTJjMTFjNTBlNjA3ZmQzYmViZWZmMDM5NzM5OGY2NTYwNjZjCi01ZjY0ZmM0ZTY3Y2Y1Zjk4NGZlODE4Yzk1MDBjYjEwYmVhZGMxYWM1MTNjMGM4ZTYwNzAxMTQ0Yjk0OWNlNjdkCi0wOGNlYzFhZGViNzBmYjAxZjQ4YWJmZWEyMjQxMmY0YjA3YjcxMGE4ZDc3NDIyOGFlMTU2YmZkZDU1NmMwZjQ5Ci1iZGEwNzJjMDkyNmEwODE1MGY3N2VlMzM4YjNiNDMwM2JkMjE4NmRhMjFiODlkZjgwNGNkNTMxYzQ5OWVmOTUzCi05YjFlZDMyNWU1ZWY5NTJhZjA1Y2Y2N2E5ZmU2NGIxYWY5NzVjMTgzNDg4MDkxNjFhZDM4MmRlYmZkZTQ1NDk1Ci01YjMyNDcyZWRmNTA5OGI2ZDFmOGZjODgwN2Y4MWVlNWJlMzY1OWJkMGY0NzU0MmVlODFlMjBjYmFlZjE2OGRkCi00Yjk5MTA2OWNkYTJmODUwYjFmYWE0MGU3NGZhZDc5ZWQ1Zjc0YTBmZGUxYzA2MDk5NmEyMjgwZTljOWQyMWY1Ci1kMjMxNzRkM2VmNGQ5ZWI2ZTMzN2Q0NDNjZmNjYWVhYjhiMDAxNWU2NDI3Zjk0MzljODQ3M2ExMzY0ZmFmNzgyCi1mNThiZDhiZDc3NTg5OTA5Mjg0NGJhNTcwYzQyN2RmZjQ3YjhjYzQ4NTlmZDkwNDJjZTc4YWEyN2ZmZWE4YjVhCi1jNTJiZTBkOTdjZDAxYzcyNTBhNmVkYTQ4OWI1YTE3ZTIzMTY3MjM5ZTBkN2ZkOGYzNDI5NTI5ZWYwMjU0OGU5Ci1iN2JjMWRjZmM3Mjk2MDBmZjk4ZDlmOWIzM2VjZGQxMGZmNzhiYWEzMTNiN2UzNWM1MWRmZThjNmExNzU2OGZkCi1iZmJkNDM0ODYwYThlZjM4MjFiMzM2NzgzZmEzMjgyNzljMDViMDVhYmEzN2Y4ZDI2ZGE0MzM5MWM5Y2ZiZDcxCi02YjI0MDE0ODk5NWEwMDU0NDhhZmJlNDVlZjJjMjg1M2FhM2MxY2YzYmE2NDM0ZWM3OWU4ZGJhY2VmNDQzNTY5Ci04ZTZlZjE3YmRmOTYwZTlhMzdmMGIzNGY0YWEzOTY0MTQ5MmJjY2U5NWFmZTU1ZDE2OGU1MTBmOTM0Mjg4ZGE3Ci1jNjFlYjNlMWE0MmYxOGFiYzYwODk5NWNkOGM5YWZjYzU5MTc1MWJjZDk3NTkzODdkMzkyNDc1MWIxYTJjNzlhCi0wY2YxOGI1M2QzZWQ4MDk2ZTJjNTU5ZGQwMDFlOGJmNjgyNGIzZWVkYWZlZGQ4Yjg5ZmEyM2Y0YWVlZDE0NDM1Ci1hN2QwNWRhN2IwNjA3ZWRmMmFhYjA4MTZlODY2ZjY3OTFlODM0YmZmNWY1YzY2OTllZGI5N2RmMTk5NTQ5ZDU0Ci0zZDAzOTY3MWE0ODFkMDk0MzUyZWM3NmQyZjdlNTExOTg4N2VlM2FkMTExN2Y3NDlhODViM2I2ZjM3ZTNkMjVmCi0yNTM5N2QxZDAxOWRhOWM1YzZmYmJmYmFlYjRmZGYwYTQyM2Y2Mzk0OTY4ZjJlYWJjNTYwZjc2ZTc1YjA3YjU0Ci1hNmQ4NzMyODYwNGZjODZiZTM3YTFlOGU1NzkwZWI4NDVjY2E4OGJiYzJlMDFlYWIyOGE2ZDY2MTUyMjk2NThiCi03NTU0YTg1MDY0YWFjZjY5ODk0OWU0ZjU2ZjJiZDYxYmQ1YWYzMWJkNjAxMmVmMGMxYmI2MjdjYmVlYzcxYjUyCi1lOTlhZjk1ZjY5OTYxN2E4NDYyZTE0ZTE0NDQyNGE2NGU0YzFjZGE4MGExM2NmN2IyMDkyOTA0MWIyZGY2Njg2Ci0xNWMyZjc3YTczZjljZGJjYTMzY2QxMTE4OGE5YTYwOGIyNDBiMjdlN2NmYzUyMzRmZGFkNmRiNWQ2NTY1Nzg3Ci1kOTlmNDU3MDk2NzQ2OTBlZTcwNGRlNGNlNmFjY2MzNzM0M2VhYWMwMmRkOGNhMzY4MjIxZDYwN2M0ZWEyNGRjCi0wNWFhYTUxNjIxMjAzMDFhOGZiNGMzMTY2ZWYwZTgxM2FhYjUzNjIwMGE4ZDU0ZDNlMDY3OWNiYWQ1OWNhZTBkCi1kOWMyNTEwMTYzMzZjNjMyNDNiNDJmNGE0MzlhZjBmMWI0ZDRjYzNlZTljMjRkYWU1ZWM4N2MxMGI0YjA0NmViCi0zODc3ZWFlNjM2MTAxYzMyMzEzMTk5NTc2OTBjZjdjZDU2MmZiNDhlNDRhYmQ0NmJmZDg2NDBkZTUzNDhhMDFkCi04Mzg5ZGJlMjYxNjU3MjljM2VhMTAyM2IzNTRjYzZiNjkyODkyMmNmZmIyZGY5ZWE2MGQ4NTNhNzQwNjdiNDQyCi1hN2Q0OTM4Mjk2ZTJmZmRlZWU4YjMzZGFlMmVjZjViZTI0NTFmYmUzODI5ZjljMWQ0NTgyMGM5ODQ5MTc2YTQzCi0yMjY5NGYwNTkzNjc2NzBkNjhhZDEyMDgwYTg0NjAzODIxZjg2N2NhMzdkYzcyN2MzYzUyNTQxMDNhZjIxY2Q5Ci0wMzRmNjc5YWVhNWQ0YmM4MTM2NjI0NTcyNWZhNDZjZDY3MWFjOTI1MTgxN2U4YWJiZTlmMDZmMTgyYjczOGU5Ci0wNTc2OWIwZDZhNTA0MTcwMzM0ZDA5YmI3YjgwOWMyNDljYTk2Nzg2NThiMzZmZWY5OGEwZjg5MzZjYzkxNjdmCi0zMTgzN2ZiMmU5MjMxOWI4ZTRkZjUxNjg0OTRmZTkwYTEyYTg4YjkzYmFlMDk4ZmFjMmYzYWYyYzA4Nzc1OWNmCi0wZmRjM2Q5MDFlOTIxMjIyYTE5ZTUzYzY1NGQxM2U1MmE2ZjI3MmJkNjVlM2RlZWUxNGUzZTU5YzZkZDliNzk0Ci1kYmQ0NzZjY2Q0ZGViNTBlOTRkMjA3MTIzYTViYjYyNzZlNDAxNzdjMTNhZGVlOTIyN2UyODNiNTFiZGM4ZTUwCi0yYWY4ZDlmM2Q0Y2RmNjFhOWJmZmRiNTA0N2FhMzA1ZjdjNjFmYmI0OTQ0MGI3MDk5M2M5NjIwMDIwZmFkZjE1Ci00YjUyNDhlOGUyYTZmZDU2MzhhNDQ3YTU5M2IzMjAwMzllYjUzYTcwOWU5OTJhNDgxYzBkZTVmMTk2NDBjMTdmCi1jZGNmYWNmYmY3YjUyNTJjMDI3NGM1M2Y2ZGU3OGExMWRiNjQwMDc2ZTAxYTExYmU2YTYzYzNhOGJlMGUzZmIwCi1mMGMxZjQwYjM3OWI4MDM5OTc3MWIwYjIzYWEwZmI5MzRlZTMxODRmMGMxOGQ1Y2I0MDI4NTUxMGE0ZWI5MmYxCi02ZjA4OWNlM2NmMzJiNTJhZGQyM2IwZjZhNDM2NjM3YTE3YTcxZjkwZThjOTFhZGVhZmY3ZWI5NzIyMGExN2I3Ci0zNTRlYTgwYzY3OGUxNThjMWVjZDU4NmYwZTJlNmQ3YWI1YTE3OTUwMGQ0MDRlMTlhNjVkYjZjOTU2OGIwNzk5Ci0zMzBkNjliMjU0ZDI5ZTcwNDE5Njk2NDU1MzgxN2FiNDI4YmUyNTdjNWQ1MWFhYzYxZWU5Y2ZmY2QzZWM0NjE1Ci0xZDZlOTk5MmFkOTFhNzkxZDFjMjQ2NWRmMjQ3NTdkY2JjNjRmMzc4OGIxNTg2OGI5MDVlNTNjY2QwNDYyNWM3Ci1mMDRmYTI2N2Q2OGE2YWViNTk0NDNlYWQ5YmMxNzFmODQ1YjJiMGQ3YWM3ZTc4OGMyMTQxMWExZDRiMzkzNWQ2Ci1lZjIwOTMzMzNjZTA5MmRhNWQwNmZjZjZjMWYxYWZjNjhkYjAwY2MxZDAwOTBmMjEwNDZiNTQ2OTRmNTE2MmNjCi1jYjA3YWM2ZTgxYTNiNjU3ODcxZGIwNjkyY2Q3MGVkY2ZiNjQ1YzMzNTE2N2UwOGViMTVjYWE2Y2JmNjQxOWIwCi0xY2IyOGQzYmViOGM1YWI2YzhmNzc2NjNhMmMyNTgxNzdhMWZlYjlhYmI1NjBlOTAzYjQ1YTFkMTQ2NDRhMDhkCi03NzhhMGRiOTE4YjM2ZWQ1YTJkNmQ0MDlhZGY0MWEyMWIxMzIxMTY3OTA5NGNmMjkwYzQ2NTI2MzNkODYxZTFlCi0yY2YyMGI2OWNjZGNmMTdhYzdkNGJjMTVmZWJlMDM3OTk4Yjk4YzE3NjM2OWQyMjU5OTVlNTc4ZjYyZjZlNTQ4Ci0wNDlkYTkyOTY4NmNhZjhiNThiZjFiYWY5OWJmZDcxOTZjODA4NDQxOWQzODEwNzhhZDBiYzZiZmZiZTE2M2RlCi0xNWE0ZDBlNmZiNTMyMDhhZmYwNmYwODk2Nzg4MmIxN2MwNjk2ZjA2MDIxOGFlMDM3NjgyMDM2Y2IzOTM2NWI3Ci0zM2Q4YzJiMGYyNDE0ZjNjOTE5NDczYTZhYmM4ZDQxOWY3MGI1NDFhNjIwODI2MDI5OTBjM2MzNWE1NTIxN2Q1Ci05NmZlYTgyMDQ4MTgxOTUwNzc5YTNmYzVmNjdiZGFkOGRmODRlNTQzM2ZhNjdiY2NkMDVlYzg4NmQ4NTdiNzg5Ci0xOGZmYmYwODNmYTBiOWY5OGNmNWNmYzlhZTI5ZDYwN2QyZWQxMWZhMDIxMzFmZDdjMjU4NDMxYjIwZjdiMTEzCi1jMzE2YjcxNjM2NDRmZGVmMDI5ZDMzMzY2MjAwZTljNGI1NzI3OTQwNDkwYTgxYWExMzlkZGRmOTQ5M2Y2YjMyCi0wZWU4NDk1MGE2YTU0OTQ2MDAzMmQwYmE3ZmIzYjJkZWQyZTQwMjhiZDNlZjQ1NjAwNWJmYzE0NTZjNjgxZjI1Ci04MmRhZDZkYTE1MTI3YTFlZjE0NTUwZDk1NTdiODZjMmJjMzc0NDBkNTM4ZWU1MTQ2ZjMyMGM5ZGIwN2FlZDY4Ci03MGY2ZmE3NDhhNWI4N2ZkZTBlM2VmNGNmMTU2N2U3NDNlZWEyNjA3NmJhNjY4YjQ2ZjNmN2FkOTlmNGRmMzY3Ci1mZDQwZDg3Y2NhMzUyNjdhMDlhM2EzM2Y4MjEyNjU1Yjc0NzMyM2U5ZDVmMTg0Y2RlNzY2OTA2ZjZmODVlZjJiCi0zYWQwZGMwZWRjZDE1MGU1ODlkYWU5YzBlMTlkNDY0YWQ2MThjMzJlMTRhNWRiY2FhNmVjYmNkOTkwY2M0OWFkCi1jNmRlMTkxMjlkZWJkMmRlOTliNTA2YWRmNGRiZGVhNGZmMTM2NGUzMDA0NDdjOWMwZGVkYTJjZGYxZDM2NDhiCi0xYTgzYmQ0YmU0NmUxNzk3ZmI1YjYyMTYwNzdhNTRmMTJjN2FjZTljMjgzMjAwMjZhMTk0OTJlNTgxOTNkMDgyCi1jMGI1NDczYTVhNjAzY2UyMmVhMzc3NTExYjcyNWFkOWMyM2IxYTFiOTA2YjQ2NWZhMDJkMGZiNjIwZTIzMDc0Ci02NmM5ZDA3NzczMDkxNjg1MGNkMmFiY2MyNDEyYTM2NGY0YTBlZmRlM2ZiNzQxZGVhOTFmYmJhMTM4ZTc0ZGNiCi04MDk2MjcyODJiZTMxN2Q4ZjFkYmIyMjIyMGM5Njk2YmYzOWEyN2ZjMzhhZmY5MGVhZjQ1ODE1MWEwMGE4YTg4Ci05ZDRmNWQ5MzNiMWVlZTYzMDU0YzY1Nzk4YWQzMjA3OWNlNTczZDUzYzYyMGI2YTBmODFmZDkzMWI1YTI0NzA3Ci1lYmIzMGNmMDFiMGM2M2I1NWVlOGMwOGI4MDVhOWE0NWFlYThhYWNmNDk5ODJjZTZkM2U4NzI2YzZhMTIyNDM3Ci0xYjliMTE2YTU2ZGU2MDU0ODI0NDlkYWJiYjgzZDM1M2ViZGYzNTVmY2I4Y2RlNTY1OGM2OTliOGE1NTcxOGE4Ci02ZTA1MWI0MjIyMWRkYTQ4MjU3ZTlmNTZkMDlmMzFhNzc2MzA5MzBhYmIwZmNlMGQ0OWVjOWNiMjdjNmNlNDgwCi00YzNiMzZkNDVlYzE5NWU3Zjc4ZGM5MzAzNzBlZDY2Y2Q0YjY3NjMwODVlYzRjNjI2NjkzZTY5YjM5ZTk5M2IxCi03MGIyMjg5ZjI5ZGNmOTRkNWQyNzYzYTgyMTFhOTJjNDA0NDIzNzFhYTJmNDI5N2M5OTU4YzgzMzQyMWVlNjkzCi1hNzRiMjU2ZTQyNTk3OWFmZTg2YjI4NmJiZGEwOTgzZTE0MTk0MjUwZDlmZWNkMDNhOGJhMWZlNjE1ZTkzYWUxCi1kNjBkNDNmNjg1OGVhOWNkNDdkZGY4OGExYmZiNWU5MGI2MGEyOGNkYjI2OWQ5ZTFlNDNiMGNmNDcwYTk1YjQ4Ci1hYTUyOTllNzE1OWU3Y2NiMTgyMDA5MTRiOTNjM2IwZGY3OWYxODE3ODlmZGZkNjY5MzYxM2QwZDQyNzc4ODgzCi04ODg0NzkyN2Y1OWQ0MGYwY2I1MzM0ZjYyZWFmZTRmMzgwMDc2Y2ZiNzcyMDE3NGVjZWFiMWViNTA1MGVhMTJjCi1lNDI5M2RiMTE1YzRmOWJkNGQyMTkxMGE2OWQ1NjZhNzA2ZjVjMGUxYmNiMzQ0MjAzNTAzODU1ZTY2NDNiMTI1Ci0xN2I2ZGIwM2M0MWYxM2EzNDdhZDM5ZTQ3YTQ2ZDYyNmY4YTMxYTE2M2JkYTZkMjMyNjQ2NTdiNDEyYmRlYzk5Ci1jODdhMTAzZDI2Ci0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi1jbGVhcnRvbWFyawotJSVFbmRSZXNvdXJjZQotL0Y2MzdfMCAvV1dXVVRVK05pbWJ1c1JvbU5vOUwtUmVndUl0YWwgMSAxCi1bIC8ubm90ZGVmL2RvdGFjY2VudC9maS9mbC9mcmFjdGlvbi9odW5nYXJ1bWxhdXQvTHNsYXNoL2xzbGFzaAotICAvb2dvbmVrL3JpbmcvLm5vdGRlZi9icmV2ZS9taW51cy8ubm90ZGVmL1pjYXJvbi96Y2Fyb24KLSAgL2Nhcm9uL2RvdGxlc3NpL2RvdGxlc3NqL2ZmL2ZmaS9mZmwvbm90ZXF1YWwvaW5maW5pdHkKLSAgL2xlc3NlcXVhbC9ncmVhdGVyZXF1YWwvcGFydGlhbGRpZmYvc3VtbWF0aW9uL3Byb2R1Y3QvcGkvZ3JhdmUvcXVvdGVzaW5nbGUKLSAgL3NwYWNlL2V4Y2xhbS9xdW90ZWRibC9udW1iZXJzaWduL2RvbGxhci9wZXJjZW50L2FtcGVyc2FuZC9xdW90ZXJpZ2h0Ci0gIC9wYXJlbmxlZnQvcGFyZW5yaWdodC9hc3Rlcmlzay9wbHVzL2NvbW1hL2h5cGhlbi9wZXJpb2Qvc2xhc2gKLSAgL3plcm8vb25lL3R3by90aHJlZS9mb3VyL2ZpdmUvc2l4L3NldmVuCi0gIC9laWdodC9uaW5lL2NvbG9uL3NlbWljb2xvbi9sZXNzL2VxdWFsL2dyZWF0ZXIvcXVlc3Rpb24KLSAgL2F0L0EvQi9DL0QvRS9GL0cKLSAgL0gvSS9KL0svTC9NL04vTwotICAvUC9RL1IvUy9UL1UvVi9XCi0gIC9YL1kvWi9icmFja2V0bGVmdC9iYWNrc2xhc2gvYnJhY2tldHJpZ2h0L2FzY2lpY2lyY3VtL3VuZGVyc2NvcmUKLSAgL3F1b3RlbGVmdC9hL2IvYy9kL2UvZi9nCi0gIC9oL2kvai9rL2wvbS9uL28KLSAgL3AvcS9yL3MvdC91L3YvdwotICAveC95L3ovYnJhY2VsZWZ0L2Jhci9icmFjZXJpZ2h0L2FzY2lpdGlsZGUvLm5vdGRlZgotICAvRXVyby9pbnRlZ3JhbC9xdW90ZXNpbmdsYmFzZS9mbG9yaW4vcXVvdGVkYmxiYXNlL2VsbGlwc2lzL2RhZ2dlci9kYWdnZXJkYmwKLSAgL2NpcmN1bWZsZXgvcGVydGhvdXNhbmQvU2Nhcm9uL2d1aWxzaW5nbGxlZnQvT0UvT21lZ2EvcmFkaWNhbC9hcHByb3hlcXVhbAotICAvLm5vdGRlZi8ubm90ZGVmLy5ub3RkZWYvcXVvdGVkYmxsZWZ0L3F1b3RlZGJscmlnaHQvYnVsbGV0L2VuZGFzaC9lbWRhc2gKLSAgL3RpbGRlL3RyYWRlbWFyay9zY2Fyb24vZ3VpbHNpbmdscmlnaHQvb2UvRGVsdGEvbG96ZW5nZS9ZZGllcmVzaXMKLSAgLy5ub3RkZWYvZXhjbGFtZG93bi9jZW50L3N0ZXJsaW5nL2N1cnJlbmN5L3llbi9icm9rZW5iYXIvc2VjdGlvbgotICAvZGllcmVzaXMvY29weXJpZ2h0L29yZGZlbWluaW5lL2d1aWxsZW1vdGxlZnQvbG9naWNhbG5vdC9oeXBoZW4vcmVnaXN0ZXJlZC9tYWNyb24KLSAgL2RlZ3JlZS9wbHVzbWludXMvdHdvc3VwZXJpb3IvdGhyZWVzdXBlcmlvci9hY3V0ZS9tdS9wYXJhZ3JhcGgvcGVyaW9kY2VudGVyZWQKLSAgL2NlZGlsbGEvb25lc3VwZXJpb3Ivb3JkbWFzY3VsaW5lL2d1aWxsZW1vdHJpZ2h0L29uZXF1YXJ0ZXIvb25laGFsZi90aHJlZXF1YXJ0ZXJzL3F1ZXN0aW9uZG93bgotICAvQWdyYXZlL0FhY3V0ZS9BY2lyY3VtZmxleC9BdGlsZGUvQWRpZXJlc2lzL0FyaW5nL0FFL0NjZWRpbGxhCi0gIC9FZ3JhdmUvRWFjdXRlL0VjaXJjdW1mbGV4L0VkaWVyZXNpcy9JZ3JhdmUvSWFjdXRlL0ljaXJjdW1mbGV4L0lkaWVyZXNpcwotICAvRXRoL050aWxkZS9PZ3JhdmUvT2FjdXRlL09jaXJjdW1mbGV4L090aWxkZS9PZGllcmVzaXMvbXVsdGlwbHkKLSAgL09zbGFzaC9VZ3JhdmUvVWFjdXRlL1VjaXJjdW1mbGV4L1VkaWVyZXNpcy9ZYWN1dGUvVGhvcm4vZ2VybWFuZGJscwotICAvYWdyYXZlL2FhY3V0ZS9hY2lyY3VtZmxleC9hdGlsZGUvYWRpZXJlc2lzL2FyaW5nL2FlL2NjZWRpbGxhCi0gIC9lZ3JhdmUvZWFjdXRlL2VjaXJjdW1mbGV4L2VkaWVyZXNpcy9pZ3JhdmUvaWFjdXRlL2ljaXJjdW1mbGV4L2lkaWVyZXNpcwotICAvZXRoL250aWxkZS9vZ3JhdmUvb2FjdXRlL29jaXJjdW1mbGV4L290aWxkZS9vZGllcmVzaXMvZGl2aWRlCi0gIC9vc2xhc2gvdWdyYXZlL3VhY3V0ZS91Y2lyY3VtZmxleC91ZGllcmVzaXMveWFjdXRlL3Rob3JuL3lkaWVyZXNpc10KLXBkZk1ha2VGb250Ci02MTIgNzkyIGZhbHNlIHBkZlNldHVwCi0lJUVuZFNldHVwCi0lJVBhZ2U6IDEgMQotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzU2XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjMuMDE5IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC03MjBdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExNy40MzYgNzAxLjkxNiBUZAotL0YxMjJfMCAyNC43OTAyIFRmCi0oYnppcDIpIDYzLjM2MzggVGoKLS0yNzggVEptCi0oYW5kKSA0NC4wNzcgVGoKLS0yNzggVEptCi0obGliYnppcDIsKSA5OS4xODU2IFRqCi0tMjc4IFRKbQotKHZlcikgMzcuMjEwMSBUagotMTUgVEptCi0oc2lvbikgNTAuOTY4NyBUagotLTI3OCBUSm0KLSgxLjAuNSkgNTUuMTMzNCBUagotWzEgMCAwIDEgNzIgNjk2Ljc4NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTE1LjQ5MzldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY4MS4yOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAuNDkyOSA2NjEuNjMxIFRkCi0vRjEyMl8wIDIwLjY1ODUgVGYKLShBKSAxNC45MTU0IFRqCi0tMjc4IFRKbQotKHByKSAyMC42NTg1IFRqCi0yMCBUSm0KLShvZ3JhbSkgNjMuMTMyNCBUagotLTI3OCBUSm0KLShhbmQpIDM2LjczMDggVGoKLS0yNzggVEptCi0obGlicmFyKSA1MS42NjY5IFRqCi0tMTAgVEptCi0oeSkgMTEuNDg2MSBUagotLTI3OCBUSm0KLShmKSA2Ljg3OTI4IFRqCi0yMCBUSm0KLShvcikgMjAuNjU4NSBUagotLTI3OCBUSm0KLShkYXRhKSA0Mi40NzM5IFRqCi0tMjc4IFRKbQotKGNvbXByZXNzaW9uKSAxMjguNTc5IFRqCi1bMSAwIDAgMSA3MiA2NTcuMDM1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTQ0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01MTMuMDM1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDcuNjc2IDUwMy4yODUgVGQKLS9GMTIyXzAgMTEuOTU1MiBUZgotKEopIDYuNjQ3MDkgVGoKLTIwIFRKbQotKHVsaWFuKSAyNy45MDM0IFRqCi0tMjc4IFRKbQotKFNlKSAxNC42MjEyIFRqCi0xNSBUSm0KLSh3YXIpIDIwLjU5ODggVGoKLTIwIFRKbQotKGQsKSAxMC42MjgyIFRqCi0tMjc4IFRKbQotKGh0dHA6Ly93d3cpIDYxLjEwMyBUagotNDAgVEptCi0oLmJ6aXAub3IpIDQyLjUxMjcgVGoKLTE1IFRKbQotKGcpIDcuMzA0NjMgVGoKLVsxIDAgMCAxIDcyIDUwMC42MjVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC00MzUuODI2XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjMuMDE5IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDIgMgotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE0MC4zOTggMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDAuMzk4IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtMTMuOTQ3N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTIxLjU1NDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTcyMF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNzA5LjUzNCBUZAotL0YxMjJfMCAxNC4zNDYyIFRmCi0oYnppcDIpIDM2LjY2ODkgVGoKLS00ODkgVEptCi0oYW5kKSAyNS41MDc1IFRqCi0tNDg4IFRKbQotKGxpYmJ6aXAyLCkgNTcuMzk5MSBUagotLTU0MiBUSm0KLSh2ZXIpIDIxLjUzMzYgVGoKLTE1IFRKbQotKHNpb24pIDI5LjQ5NTggVGoKLS00ODggVEptCi0oMS4wLjU6KSAzNi42ODMyIFRqCi0tNzY2IFRKbQotKEEpIDEwLjM1OCBUagotLTQ4OCBUSm0KLShwcikgMTQuMzQ2MiBUagotMjAgVEptCi0ob2dyYW0pIDQzLjg0MiBUagotLTQ4OSBUSm0KLShhbmQpIDI1LjUwNzUgVGoKLS00ODkgVEptCi0obGlicmFyKSAzNS44Nzk4IFRqCi0tMTAgVEptCi0oeSkgNy45NzY0OSBUagotLTQ4OCBUSm0KLShmKSA0Ljc3NzI4IFRqCi0yMCBUSm0KLShvcikgMTQuMzQ2MiBUagotLTQ4OSBUSm0KLShkYXRhKSAyOS40OTU4IFRqCi03MiA2OTIuMzE5IFRkCi0oY29tcHJlc3Npb24pIDg5LjI5MDcgVGoKLVsxIDAgMCAxIDcyIDY4OS4zNDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY4OS4zNDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDY4MC4zNjQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYnkpIDkuOTYyNiBUagotLTI1MCBUSm0KLShKdWxpYW4pIDIzLjgwMDcgVGoKLS0yNTAgVEptCi0oU2UpIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFyZCkgMTIuNzIyMiBUagotWzEgMCAwIDEgNzIgNjc4LjIwN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjc4LjIwN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjY4LjQwOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShDb3ApIDE2LjYwNzcgVGoKLTEwIFRKbQotKHlyaWdodCkgMjMuODAwNyBUagotWzEgMCAwIDEgMTE0Ljc5OSA2NjguNDA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExNC43OTkgLTY2OC40MDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExNC43OTkgNjY4LjQwOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMjUxKSA3LjU3MTU4IFRqCi1bMSAwIDAgMSAxMjIuMzcxIDY2OC40MDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTIyLjM3MSAtNjY4LjQwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTI0Ljg2MSA2NjguNDA5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDE5OTYtMjAwNykgNDMuMTY3OSBUagotLTI1MCBUSm0KLShKdWxpYW4pIDIzLjgwMDcgVGoKLS0yNTAgVEptCi0oU2UpIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFyZCkgMTIuNzIyMiBUagotWzEgMCAwIDEgNzIgNjY2LjI1Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTcuOTcwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjU4LjI4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjUwLjg3NSBUZAotL0YxMzBfMCA3Ljk3MDEgVGYKLShUaGlzKSAxNC4xNzA4IFRqCi0tMjUwIFRKbQotKHByb2dyYW0sKSAyOC45OTUyIFRqCi1bMSAwIDAgMSAxMTkuMTUxIDY1MC44NzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE5LjE1MSAtNjUwLjg3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE5LjE1MSA2NTAuODc1IFRkCi0vRjEzNF8wIDcuOTcwMSBUZgotKGJ6aXAyKSAyMy45MTAzIFRqCi1bMSAwIDAgMSAxNDMuMDYxIDY1MC44NzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQzLjA2MSAtNjUwLjg3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQzLjA2MSA2NTAuODc1IFRkCi0vRjEzMF8wIDcuOTcwMSBUZgotKCwpIDEuOTkyNTMgVGoKLS0yNTAgVEptCi0odGhlKSA5LjczOTQ2IFRqCi0tMjUwIFRKbQotKGFzc29jaWF0ZWQpIDMyLjc1NzEgVGoKLS0yNTAgVEptCi0obGlicmFyeSkgMjEuMjQ4MyBUagotWzEgMCAwIDEgMjE2Ljc2OCA2NTAuODc1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxNi43NjggLTY1MC44NzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxNi43NjggNjUwLjg3NSBUZAotL0YxMzRfMCA3Ljk3MDEgVGYKLShsaWJiemlwMikgMzguMjU2NSBUagotWzEgMCAwIDEgMjU1LjAyNCA2NTAuODc1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1NS4wMjQgLTY1MC44NzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1NS4wMjQgNjUwLjg3NSBUZAotL0YxMzBfMCA3Ljk3MDEgVGYKLSgsKSAxLjk5MjUzIFRqCi0tMjUwIFRKbQotKGFuZCkgMTEuNTA4OCBUagotLTI1MCBUSm0KLShhbGwpIDcuOTcwMSBUagotLTI1MCBUSm0KLShkb2N1bWVudGF0aW9uLCkgNDkuMzY2OCBUagotLTI1MCBUSm0KLShhcmUpIDkuNzMxNDkgVGoKLS0yNTAgVEptCi0oY29wKSAxMS41MDg4IFRqCi0xMCBUSm0KLSh5cmlnaHQpIDE5LjA0MDYgVGoKLS0yNTAgVEptCi0oXDI1MSkgNi4wNTcyOCBUagotLTI1MCBUSm0KLSgxOTk2LTIwMDcpIDM0LjUzNDQgVGoKLS0yNTAgVEptCi0oSnVsaWFuKSAxOS4wNDA2IFRqCi0tMjUwIFRKbQotKFNlKSA3Ljk3MDEgVGoKLTI1IFRKbQotKHcpIDUuNzU0NDEgVGoKLTEwIFRKbQotKGFyZC4pIDEyLjE3MDMgVGoKLS0zMTAgVEptCi0oQWxsKSAxMC4xODU4IFRqCi0tMjUwIFRKbQotKHJpZ2h0cykgMTguMTU1OSBUagotLTI1MCBUSm0KLShyZXNlcnYpIDE5LjQ3MSBUagotMTUgVEptCi0oZWQuKSA5LjUxNjMgVGoKLVsxIDAgMCAxIDcyIDY0OS4xNDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC03Ljk3MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY0MS4xNzldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYzMy4zNCBUZAotL0YxMzBfMCA3Ljk3MDEgVGYKLShSZWRpc3RyaWIpIDI5LjIyNjQgVGoKLTIwIFRKbQotKHV0aW9uKSAxNi4zODY1IFRqCi0tMjUwIFRKbQotKGFuZCkgMTEuNTA4OCBUagotLTI1MCBUSm0KLSh1c2UpIDEwLjYyNDEgVGoKLS0yNTAgVEptCi0oaW4pIDYuMjAwNzQgVGoKLS0yNTAgVEptCi0oc291cmNlKSAyMC44MDIgVGoKLS0yNTAgVEptCi0oYW5kKSAxMS41MDg4IFRqCi0tMjUwIFRKbQotKGJpbmFyeSkgMjAuMzYzNiBUagotLTI1MCBUSm0KLShmb3JtcywpIDIwLjU4NjggVGoKLS0yNTAgVEptCi0od2l0aCkgMTQuMTcwOCBUagotLTI1MCBUSm0KLShvcikgNi42MzkwOSBUagotLTI1MCBUSm0KLSh3aXRob3V0KSAyNC4zNTY2IFRqCi0tMjUwIFRKbQotKG1vZGlcMDAyY2F0aW9uLCkgNDIuMjg5NCBUagotLTI1MCBUSm0KLShhcmUpIDkuNzMxNDkgVGoKLS0yNTAgVEptCi0ocGVybWl0dGVkKSAzMC41NDk0IFRqCi0tMjUwIFRKbQotKHBybykgMTAuNjI0MSBUagotMTUgVEptCi0odmlkZWQpIDE3LjcwOTYgVGoKLS0yNTAgVEptCi0odGhhdCkgMTEuOTU1MSBUagotLTI1MCBUSm0KLSh0aGUpIDkuNzM5NDYgVGoKLS0yNTAgVEptCi0oZm9sbG8pIDE1LjA1NTUgVGoKLTI1IFRKbQotKHdpbmcpIDE1Ljk0MDIgVGoKLS0yNTAgVEptCi0oY29uZGl0aW9ucykgMzMuMjExNCBUagotLTI1MCBUSm0KLShhcmUpIDkuNzMxNDkgVGoKLS0yNTAgVEptCi0obWV0OikgMTQuMTcwOCBUagotWzEgMCAwIDEgNzIgNjMxLjYxNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTIzLjc3ODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA1LjU3OTEgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03Ny41NzkxIC02MDcuODM2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03Ny41NzkxIDYwNy44MzYgVGQKLS9GMTMwXzAgNy45NzAxIFRmCi0oXDIyNSkgMi43ODk1NCBUagotWzEgMCAwIDEgODAuMzY4NiA2MDcuODM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS45OTI2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjU5NCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTgzLjk1NTIgLTYwNy44MzZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTgzLjk1NTIgNjA3LjgzNiBUZAotL0YxMzBfMCA3Ljk3MDEgVGYKLShSZWRpc3RyaWIpIDI5LjIyNjQgVGoKLTIwIFRKbQotKHV0aW9ucykgMTkuNDg2OSBUagotLTI1MCBUSm0KLShvZikgNi42MzkwOSBUagotLTI1MCBUSm0KLShzb3VyY2UpIDIwLjgwMiBUagotLTI1MCBUSm0KLShjb2RlKSAxNS4wNDc1IFRqCi0tMjUwIFRKbQotKG11c3QpIDE1LjUwMTggVGoKLS0yNTAgVEptCi0ocmV0YWluKSAxOC4xNDc5IFRqCi0tMjUwIFRKbQotKHRoZSkgOS43Mzk0NiBUagotLTI1MCBUSm0KLShhYm8pIDExLjUwODggVGoKLTE1IFRKbQotKHYpIDMuOTg1MDUgVGoKLTE1IFRKbQotKGUpIDMuNTM4NzIgVGoKLS0yNTAgVEptCi0oY29wKSAxMS41MDg4IFRqCi0xMCBUSm0KLSh5cmlnaHQpIDE5LjA0MDYgVGoKLS0yNTAgVEptCi0obm90aWNlLCkgMjEuNDcxNCBUagotLTI1MCBUSm0KLSh0aGlzKSAxMS41MTY4IFRqCi0tMjUwIFRKbQotKGxpc3QpIDkuNzQ3NDMgVGoKLS0yNTAgVEptCi0ob2YpIDYuNjM5MDkgVGoKLS0yNTAgVEptCi0oY29uZGl0aW9ucykgMzMuMjExNCBUagotLTI1MCBUSm0KLShhbmQpIDExLjUwODggVGoKLS0yNTAgVEptCi0odGhlKSA5LjczOTQ2IFRqCi0tMjUwIFRKbQotKGZvbGxvKSAxNS4wNTU1IFRqCi0yNSBUSm0KLSh3aW5nKSAxNS45NDAyIFRqCi0tMjUwIFRKbQotKGRpc2NsYWltZXIpIDMzLjIwMzQgVGoKLTU1IFRKbQotKC4pIDEuOTkyNTMgVGoKLVsxIDAgMCAxIDQ3MC45MDggNjA3LjgzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTguOTA4IC0xNy41MzQzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNS41NzkxIDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzcuNTc5MSAtNTkwLjMwMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzcuNTc5MSA1OTAuMzAyIFRkCi0vRjEzMF8wIDcuOTcwMSBUZgotKFwyMjUpIDIuNzg5NTQgVGoKLVsxIDAgMCAxIDgwLjM2ODYgNTkwLjMwMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS41OTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04My45NTUyIC01OTAuMzAyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04My45NTUyIDU5MC4zMDIgVGQKLS9GMTMwXzAgNy45NzAxIFRmCi0oVGhlKSAxMi4zOTM1IFRqCi0tMjcwIFRKbQotKG9yaWdpbikgMTkuMDQwNiBUagotLTI3MCBUSm0KLShvZikgNi42MzkwOSBUagotLTI3MCBUSm0KLSh0aGlzKSAxMS41MTY4IFRqCi0tMjcwIFRKbQotKHNvZnR3KSAxNy43MDk2IFRqCi0xMCBUSm0KLShhcmUpIDkuNzMxNDkgVGoKLS0yNzAgVEptCi0obXVzdCkgMTUuNTAxOCBUagotLTI3MCBUSm0KLShub3QpIDEwLjE4NTggVGoKLS0yNzAgVEptCi0oYmUpIDcuNTIzNzcgVGoKLS0yNzAgVEptCi0obWlzcmVwcmVzZW50ZWQ7KSA1MC40NjY3IFRqCi0tMjc5IFRKbQotKHlvdSkgMTEuOTU1MSBUagotLTI3MCBUSm0KLShtdXN0KSAxNS41MDE4IFRqCi0tMjcwIFRKbQotKG5vdCkgMTAuMTg1OCBUagotLTI3MCBUSm0KLShjbGFpbSkgMTcuNzA5NiBUagotLTI3MCBUSm0KLSh0aGF0KSAxMS45NTUxIFRqCi0tMjcwIFRKbQotKHlvdSkgMTEuOTU1MSBUagotLTI3MCBUSm0KLSh3cm90ZSkgMTguMTQ3OSBUagotLTI3MCBUSm0KLSh0aGUpIDkuNzM5NDYgVGoKLS0yNzAgVEptCi0ob3JpZ2luYWwpIDI0Ljc5NSBUagotLTI3MCBUSm0KLShzb2Z0dykgMTcuNzA5NiBUagotMTAgVEptCi0oYXJlLikgMTEuNzI0IFRqCi0tNzQwIFRKbQotKElmKSA1LjMwODA5IFRqCi0tMjcwIFRKbQotKHlvdSkgMTEuOTU1MSBUagotLTI3MCBUSm0KLSh1c2UpIDEwLjYyNDEgVGoKLS0yNzAgVEptCi0odGhpcykgMTEuNTE2OCBUagotLTI3MCBUSm0KLShzb2Z0dykgMTcuNzA5NiBUagotMTAgVEptCi0oYXJlKSA5LjczMTQ5IFRqCi0tMjcwIFRKbQotKGluKSA2LjIwMDc0IFRqCi0tMjY5IFRKbQotKGEpIDMuNTM4NzIgVGoKLTgzLjk1NTIgNTgwLjczNyBUZAotKHByb2R1Y3QsKSAyNi4zNDEyIFRqCi0tMjUwIFRKbQotKGFuKSA3LjUyMzc3IFRqCi0tMjUwIFRKbQotKGFja25vKSAxOS4wMzI2IFRqCi0yNSBUSm0KLSh3bGVkZ21lbnQpIDM1LjQxOTEgVGoKLS0yNTAgVEptCi0oaW4pIDYuMjAwNzQgVGoKLS0yNTAgVEptCi0odGhlKSA5LjczOTQ2IFRqCi0tMjUwIFRKbQotKHByb2R1Y3QpIDI0LjM0ODcgVGoKLS0yNTAgVEptCi0oZG9jdW1lbnRhdGlvbikgNDcuMzc0MyBUagotLTI1MCBUSm0KLSh3KSA1Ljc1NDQxIFRqCi0xMCBUSm0KLShvdWxkKSAxNC4xNzA4IFRqCi0tMjUwIFRKbQotKGJlKSA3LjUyMzc3IFRqCi0tMjUwIFRKbQotKGFwcHJlY2lhdGVkKSAzNi43MzQyIFRqCi0tMjUwIFRKbQotKGIpIDMuOTg1MDUgVGoKLTIwIFRKbQotKHV0KSA2LjIwMDc0IFRqCi0tMjUwIFRKbQotKGlzKSA1LjMxNjA2IFRqCi0tMjUwIFRKbQotKG5vdCkgMTAuMTg1OCBUagotLTI1MCBUSm0KLShyZXF1aXJlZC4pIDI4LjU0ODkgVGoKLVsxIDAgMCAxIDQwMy44MTcgNTgwLjczN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMzEuODE3IC0xNy41MzQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNS41NzkxIDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzcuNTc5MSAtNTYzLjIwM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzcuNTc5MSA1NjMuMjAzIFRkCi0vRjEzMF8wIDcuOTcwMSBUZgotKFwyMjUpIDIuNzg5NTQgVGoKLVsxIDAgMCAxIDgwLjM2ODYgNTYzLjIwM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS41OTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04My45NTUyIC01NjMuMjAzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04My45NTUyIDU2My4yMDMgVGQKLS9GMTMwXzAgNy45NzAxIFRmCi0oQWx0ZXJlZCkgMjMuOTAyMyBUagotLTI1MCBUSm0KLShzb3VyY2UpIDIwLjgwMiBUagotLTI1MCBUSm0KLSh2KSAzLjk4NTA1IFRqCi0xNSBUSm0KLShlcnNpb25zKSAyMi41NzkzIFRqCi0tMjUwIFRKbQotKG11c3QpIDE1LjUwMTggVGoKLS0yNTAgVEptCi0oYmUpIDcuNTIzNzcgVGoKLS0yNTAgVEptCi0ocGxhaW5seSkgMjIuMTQwOSBUagotLTI1MCBUSm0KLShtYXJrKSAxNi4zNzg2IFRqCi0xMCBUSm0KLShlZCkgNy41MjM3NyBUagotLTI1MCBUSm0KLShhcykgNi42MzkwOSBUagotLTI1MCBUSm0KLShzdWNoLCkgMTYuNjAxNyBUagotLTI1MCBUSm0KLShhbmQpIDExLjUwODggVGoKLS0yNTAgVEptCi0obXVzdCkgMTUuNTAxOCBUagotLTI1MCBUSm0KLShub3QpIDEwLjE4NTggVGoKLS0yNTAgVEptCi0oYmUpIDcuNTIzNzcgVGoKLS0yNTAgVEptCi0obWlzcmVwcmVzZW50ZWQpIDQ4LjI1MSBUagotLTI1MCBUSm0KLShhcykgNi42MzkwOSBUagotLTI1MCBUSm0KLShiZWluZykgMTcuNzA5NiBUagotLTI1MCBUSm0KLSh0aGUpIDkuNzM5NDYgVGoKLS0yNTAgVEptCi0ob3JpZ2luYWwpIDI0Ljc5NSBUagotLTI1MCBUSm0KLShzb2Z0dykgMTcuNzA5NiBUagotMTAgVEptCi0oYXJlLikgMTEuNzI0IFRqCi1bMSAwIDAgMSA0NjQuNDA1IDU2My4yMDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzkyLjQwNSAtMTcuNTM0M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDUuNTc5MSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc3LjU3OTEgLTU0NS42NjldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc3LjU3OTEgNTQ1LjY2OSBUZAotL0YxMzBfMCA3Ljk3MDEgVGYKLShcMjI1KSAyLjc4OTU0IFRqCi1bMSAwIDAgMSA4MC4zNjg2IDU0NS42NjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuNTk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODMuOTU1MiAtNTQ1LjY2OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODMuOTU1MiA1NDUuNjY5IFRkCi0vRjEzMF8wIDcuOTcwMSBUZgotKFRoZSkgMTIuMzkzNSBUagotLTI1MCBUSm0KLShuYW1lKSAxNy4yNjMyIFRqCi0tMjUwIFRKbQotKG9mKSA2LjYzOTA5IFRqCi0tMjUwIFRKbQotKHRoZSkgOS43Mzk0NiBUagotLTI1MCBUSm0KLShhdXRob3IpIDIwLjM2MzYgVGoKLS0yNTAgVEptCi0obWF5KSAxMy43MjQ1IFRqCi0tMjUwIFRKbQotKG5vdCkgMTAuMTg1OCBUagotLTI1MCBUSm0KLShiZSkgNy41MjM3NyBUagotLTI1MCBUSm0KLSh1c2VkKSAxNC42MDkyIFRqCi0tMjUwIFRKbQotKHRvKSA2LjIwMDc0IFRqCi0tMjUwIFRKbQotKGVuZG9yc2UpIDI0Ljc4NyBUagotLTI1MCBUSm0KLShvcikgNi42MzkwOSBUagotLTI1MCBUSm0KLShwcm9tb3RlKSAyNi41NjQzIFRqCi0tMjUwIFRKbQotKHByb2R1Y3RzKSAyNy40NDkgVGoKLS0yNTAgVEptCi0oZGVyaSkgMTIuMzkzNSBUagotMjUgVEptCi0odikgMy45ODUwNSBUagotMTUgVEptCi0oZWQpIDcuNTIzNzcgVGoKLS0yNTAgVEptCi0oZnJvbSkgMTUuNDkzOSBUagotLTI1MCBUSm0KLSh0aGlzKSAxMS41MTY4IFRqCi0tMjUwIFRKbQotKHNvZnR3KSAxNy43MDk2IFRqCi0xMCBUSm0KLShhcmUpIDkuNzMxNDkgVGoKLS0yNTAgVEptCi0od2l0aG91dCkgMjQuMzU2NiBUagotLTI1MCBUSm0KLShzcGVjaVwwMDJjKSAyNC4zNDg3IFRqCi0tMjUwIFRKbQotKHByaW9yKSAxNS40OTM5IFRqCi0tMjUwIFRKbQotKHdyaXR0ZW4pIDIyLjU3OTMgVGoKLS0yNTAgVEptCi0ocGVybWlzc2lvbi4pIDM2Ljk3MzMgVGoKLVsxIDAgMCAxIDUzMy41NzcgNTQ1LjY2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjEuNTc3IC05LjY5NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTUzNS45NzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDUyOC4xMzUgVGQKLS9GMTMwXzAgNy45NzAxIFRmCi0oVEhJUykgMTcuNzA5NiBUagotLTQwMSBUSm0KLShTT0ZUVykgMjcuMDEwNyBUagotMTIwIFRKbQotKEFSRSkgMTUuOTQwMiBUagotLTQwMSBUSm0KLShJUykgNy4wODU0MiBUagotLTQwMCBUSm0KLShQUikgOS43NDc0MyBUagotNDAgVEptCi0oTykgNS43NTQ0MSBUagotNTAgVEptCi0oVklERUQpIDI0Ljc4NyBUagotLTQwMSBUSm0KLShCWSkgMTEuMDcwNSBUagotLTQwMSBUSm0KLShUSEUpIDE1LjQ5MzkgVGoKLS00MDEgVEptCi0oQSkgNS43NTQ0MSBUagotNTUgVEptCi0oVVRIT1IpIDI3LjQ0OSBUagotLTQwMSBUSm0KLSgiQVMpIDEzLjQzNzYgVGoKLS00MDEgVEptCi0oSVMiKSAxMC4zMzcyIFRqCi0tNDAxIFRKbQotKEFORCkgMTcuMjYzMiBUagotLTQwMCBUSm0KLShBTlkpIDE3LjI2MzIgVGoKLS00MDEgVEptCi0oRVhQUkVTUykgMzQuMTA0MSBUagotLTQwMSBUSm0KLShPUikgMTEuMDcwNSBUagotLTQwMSBUSm0KLShJTVBMSUVEKSAzMi4zMTg4IFRqCi0tNDAxIFRKbQotKFcpIDcuNTIzNzcgVGoKLTEyMCBUSm0KLShBUlJBTlRJRVMsKSA0Ni43MTI4IFRqCi0tNDAxIFRKbQotKElOQ0xVRElORywpIDQ2LjI1ODUgVGoKLS00MDAgVEptCi0oQikgNS4zMTYwNiBUagotMTAgVEptCi0oVVQpIDEwLjYyNDEgVGoKLTcyIDUxOC41NzEgVGQKLShOTykgMTEuNTA4OCBUagotNDAgVEptCi0oVCkgNC44Njk3MyBUagotLTMwNCBUSm0KLShMSU1JVEVEKSAzMi43NTcxIFRqCi0tMzA0IFRKbQotKFQpIDQuODY5NzMgVGoKLTE4IFRKbQotKE8sKSA3Ljc0Njk0IFRqCi0tMzA1IFRKbQotKFRIRSkgMTUuNDkzOSBUagotLTMwNCBUSm0KLShJTVBMSUVEKSAzMi4zMTg4IFRqCi0tMzA0IFRKbQotKFcpIDcuNTIzNzcgVGoKLTEyMCBUSm0KLShBUlJBTlRJRVMpIDQ0LjcyMDIgVGoKLS0zMDQgVEptCi0oT0YpIDEwLjE4NTggVGoKLS0zMDQgVEptCi0oTUVSQ0hBTlQpIDQ0LjcyMDIgVGoKLTkzIFRKbQotKEFCSUxJVFkpIDMxLjg3MjQgVGoKLS0zMDQgVEptCi0oQU5EKSAxNy4yNjMyIFRqCi0tMzA1IFRKbQotKEZJVE5FU1MpIDMxLjQ0MiBUagotLTMwNCBUSm0KLShGT1IpIDE1LjUwMTggVGoKLS0zMDQgVEptCi0oQSkgNS43NTQ0MSBUagotLTMwNCBUSm0KLShQKSA0LjQzMTM4IFRqCi05MiBUSm0KLShBUikgMTEuMDcwNSBUagotNjAgVEptCi0oVElDVUxBUikgMzQuNTM0NCBUagotLTMwNCBUSm0KLShQVVJQT1NFKSAzNC45ODg3IFRqCi0tMzA0IFRKbQotKEFSRSkgMTUuOTQwMiBUagotLTMwNSBUSm0KLShESSkgOC40MDg0NiBUagotMSBUSm0KLShTLSkgNy4wODU0MiBUagotNzIgNTA5LjAwNiBUZAotKENMQUlNRUQuKSAzOC4yOTYzIFRqCi0tNTc2IFRKbQotKElOKSA4LjQwODQ2IFRqCi0tMjg3IFRKbQotKE5PKSAxMS41MDg4IFRqCi0tMjg4IFRKbQotKEVWRU5UKSAyNi4xMTggVGoKLS0yODggVEptCi0oU0hBTEwpIDI1LjY3OTcgVGoKLS0yODggVEptCi0oVEhFKSAxNS40OTM5IFRqCi0tMjg3IFRKbQotKEEpIDUuNzU0NDEgVGoKLTU1IFRKbQotKFVUSE9SKSAyNy40NDkgVGoKLS0yODggVEptCi0oQkUpIDEwLjE4NTggVGoKLS0yODggVEptCi0oTElBQkxFKSAyOC4zMzM3IFRqCi0tMjg4IFRKbQotKEZPUikgMTUuNTAxOCBUagotLTI4OCBUSm0KLShBTlkpIDE3LjI2MzIgVGoKLS0yODcgVEptCi0oRElSRUNUKSAyOC43OCBUagotNzQgVEptCi0oLCkgMS45OTI1MyBUagotLTI4OCBUSm0KLShJTkRJUkVDVCkgMzcuMTg4NSBUagotNzQgVEptCi0oLCkgMS45OTI1MyBUagotLTI4OCBUSm0KLShJTkNJREVOVCkgMzcuNjI2OCBUagotOTMgVEptCi0oQUwsKSAxMi42MTY3IFRqCi0tMjg4IFRKbQotKFNQRUNJQUwsKSAzNC4zMTkzIFRqCi0tMjg4IFRKbQotKEVYRU1QTEFSKSA0Mi45NTA5IFRqCi02NSBUSm0KLShZKSA1Ljc1NDQxIFRqCi0xMjkgVEptCi0oLCkgMS45OTI1MyBUagotNzIgNDk5LjQ0MiBUZAotKE9SKSAxMS4wNzA1IFRqCi0tMjk5IFRKbQotKENPTlNFUSkgMzEuODgwNCBUagotMTAgVEptCi0oVUVOVElBTCkgMzQuNTI2NSBUagotLTMwMCBUSm0KLShEKSA1Ljc1NDQxIFRqCi00MCBUSm0KLShBTUEpIDE4LjU5NDIgVGoKLTQwIFRKbQotKEdFUykgMTUuMDU1NSBUagotLTI5OSBUSm0KLShcKElOQ0xVRElORywpIDQ4LjkxMjUgVGoKLS0yOTkgVEptCi0oQikgNS4zMTYwNiBUagotMTAgVEptCi0oVVQpIDEwLjYyNDEgVGoKLS0yOTkgVEptCi0oTk8pIDExLjUwODggVGoKLTQwIFRKbQotKFQpIDQuODY5NzMgVGoKLS0zMDAgVEptCi0oTElNSVRFRCkgMzIuNzU3MSBUagotLTI5OSBUSm0KLShUKSA0Ljg2OTczIFRqCi0xOCBUSm0KLShPLCkgNy43NDY5NCBUagotLTI5OSBUSm0KLShQUikgOS43NDc0MyBUagotNDAgVEptCi0oT0NVUkVNRU5UKSA0OS41OSBUagotLTI5OSBUSm0KLShPRikgMTAuMTg1OCBUagotLTMwMCBUSm0KLShTVUJTVElUVVRFKSA0Ny44MjA2IFRqCi0tMjk5IFRKbQotKEdPT0RTKSAyNy40NDkgVGoKLS0yOTkgVEptCi0oT1IpIDExLjA3MDUgVGoKLS0zMDAgVEptCi0oU0VSKSAxNC42MTcyIFRqCi04MCBUSm0KLShWSUNFUykgMjMuMDI1NiBUagotMSBUSm0KLSg7KSAyLjIxNTY5IFRqCi03MiA0ODkuODc4IFRkCi0oTE9TUykgMTkuNDg2OSBUagotLTM2MCBUSm0KLShPRikgMTAuMTg1OCBUagotLTM2MCBUSm0KLShVU0UsKSAxNy4wNDggVGoKLS0zNjAgVEptCi0oRCkgNS43NTQ0MSBUagotNDAgVEptCi0oQSkgNS43NTQ0MSBUagotMTExIFRKbQotKFQpIDQuODY5NzMgVGoKLTkzIFRKbQotKEEsKSA3Ljc0Njk0IFRqCi0tMzYwIFRKbQotKE9SKSAxMS4wNzA1IFRqCi0tMzU5IFRKbQotKFBSKSA5Ljc0NzQzIFRqCi00MCBUSm0KLShPRklUUzspIDI0LjM1NjYgVGoKLS0zNjAgVEptCi0oT1IpIDExLjA3MDUgVGoKLS0zNjAgVEptCi0oQikgNS4zMTYwNiBUagotMTAgVEptCi0oVVNJTkVTUykgMzIuMzI2NyBUagotLTM2MCBUSm0KLShJTlRFUlIpIDI4Ljc4IFRqCi00MCBUSm0KLShVUFRJT05cKSkgMzEuODcyNCBUagotLTM2MCBUSm0KLShITykgMTEuNTA4OCBUagotMzUgVEptCi0oV0VWRVIpIDI4LjMzMzcgVGoKLS0zNjAgVEptCi0oQ0EpIDExLjA3MDUgVGoKLTU1IFRKbQotKFVTRUQpIDIwLjgwOTkgVGoKLS0zNTkgVEptCi0oQU5EKSAxNy4yNjMyIFRqCi0tMzYwIFRKbQotKE9OKSAxMS41MDg4IFRqCi0tMzYwIFRKbQotKEFOWSkgMTcuMjYzMiBUagotLTM2MCBUSm0KLShUSEVPUikgMjYuNTY0MyBUagotNjUgVEptCi0oWSkgNS43NTQ0MSBUagotLTM2MCBUSm0KLShPRikgMTAuMTg1OCBUagotLTM2MCBUSm0KLShMSUFCKSAxOC41OTQyIFRqCi0xIFRKbQotKElMSVRZKSAyMC44MDIgVGoKLTEyOCBUSm0KLSgsKSAxLjk5MjUzIFRqCi03MiA0ODAuMzE0IFRkCi0oV0hFVEhFUikgMzguOTU3OCBUagotLTI0NyBUSm0KLShJTikgOC40MDg0NiBUagotLTI0NyBUSm0KLShDT05UUkEpIDMyLjc2NTEgVGoKLTQwIFRKbQotKENUKSAxMC4xODU4IFRqCi03NCBUSm0KLSgsKSAxLjk5MjUzIFRqCi0tMjQ3IFRKbQotKFNUUklDVCkgMjcuNDU3IFRqCi0tMjQ3IFRKbQotKExJQUJJTElUWSkgMzkuMzk2MiBUagotMTI5IFRKbQotKCwpIDEuOTkyNTMgVGoKLS0yNDYgVEptCi0oT1IpIDExLjA3MDUgVGoKLS0yNDcgVEptCi0oVCkgNC44Njk3MyBUagotMTggVEptCi0oT1IpIDExLjA3MDUgVGoKLTYwIFRKbQotKFQpIDQuODY5NzMgVGoKLS0yNDcgVEptCi0oXChJTkNMVURJTkcpIDQ2LjkyIFRqCi0tMjQ3IFRKbQotKE5FR0xJR0VOQ0UpIDUwLjQ2NjcgVGoKLS0yNDcgVEptCi0oT1IpIDExLjA3MDUgVGoKLS0yNDcgVEptCi0oTykgNS43NTQ0MSBUagotNDAgVEptCi0oVEhFUikgMjAuODA5OSBUagotNTUgVEptCi0oV0lTRVwpKSAyMi4xMzMgVGoKLS0yNDcgVEptCi0oQVJJU0lORykgMzIuMzE4OCBUagotLTI0NyBUSm0KLShJTikgOC40MDg0NiBUagotLTI0NyBUSm0KLShBTlkpIDE3LjI2MzIgVGoKLS0yNDcgVEptCi0oVykgNy41MjM3NyBUagotMTIwIFRKbQotKEEpIDUuNzU0NDEgVGoKLTEwNSBUSm0KLShZKSA1Ljc1NDQxIFRqCi0tMjQ3IFRKbQotKE9VVCkgMTYuMzc4NiBUagotNzIgNDcwLjc1IFRkCi0oT0YpIDEwLjE4NTggVGoKLS0yNTAgVEptCi0oVEhFKSAxNS40OTM5IFRqCi0tMjUwIFRKbQotKFVTRSkgMTUuMDU1NSBUagotLTI1MCBUSm0KLShPRikgMTAuMTg1OCBUagotLTI1MCBUSm0KLShUSElTKSAxNy43MDk2IFRqCi0tMjUwIFRKbQotKFNPRlRXKSAyNy4wMTA3IFRqCi0xMjAgVEptCi0oQVJFLCkgMTcuOTMyNyBUagotLTI1MCBUSm0KLShFVkVOKSAyMS4yNDgzIFRqCi0tMjUwIFRKbQotKElGKSA3LjA4NTQyIFRqCi0tMjUwIFRKbQotKEFEKSAxMS41MDg4IFRqCi00MCBUSm0KLShWSVNFRCkgMjMuNDY0IFRqCi0tMjUwIFRKbQotKE9GKSAxMC4xODU4IFRqCi0tMjUwIFRKbQotKFRIRSkgMTUuNDkzOSBUagotLTI1MCBUSm0KLShQT1NTSUJJTElUWSkgNDcuODIwNiBUagotLTI1MCBUSm0KLShPRikgMTAuMTg1OCBUagotLTI1MCBUSm0KLShTVUNIKSAyMS4yNTYzIFRqCi0tMjUwIFRKbQotKEQpIDUuNzU0NDEgVGoKLTQwIFRKbQotKEFNQSkgMTguNTk0MiBUagotNDAgVEptCi0oR0UuKSAxMi42MTY3IFRqCi1bMSAwIDAgMSA3MiA0NjkuNTk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtNy45NzAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00NjEuNjI4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NTMuMjE2IFRkCi0vRjEzMF8wIDcuOTcwMSBUZgotKFApIDQuNDMxMzggVGoKLTkyIFRKbQotKEEpIDUuNzU0NDEgVGoKLTExMSBUSm0KLShURU5UUzopIDI3LjAxMDcgVGoKLS0yOTYgVEptCi0oVCkgNC44Njk3MyBUagotODAgVEptCi0obykgMy45ODUwNSBUagotLTI5NSBUSm0KLSh0aGUpIDkuNzM5NDYgVGoKLS0yOTYgVEptCi0oYmVzdCkgMTIuODM5OCBUagotLTI5NSBUSm0KLShvZikgNi42MzkwOSBUagotLTI5NiBUSm0KLShteSkgMTAuMTg1OCBUagotLTI5NSBUSm0KLShrbm8pIDExLjk1NTEgVGoKLTI1IFRKbQotKHdsZWRnZSwpIDI1LjAxMDIgVGoKLVsxIDAgMCAxIDIwOC41NDQgNDUzLjIxNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDguNTQ0IC00NTMuMjE2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDguNTQ0IDQ1My4yMTYgVGQKLS9GMTM0XzAgNy45NzAxIFRmCi0oYnppcDIpIDIzLjkxMDMgVGoKLVsxIDAgMCAxIDIzMi40NTQgNDUzLjIxNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzIuNDU0IC00NTMuMjE2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzQuODEgNDUzLjIxNiBUZAotL0YxMzBfMCA3Ljk3MDEgVGYKLShhbmQpIDExLjUwODggVGoKLVsxIDAgMCAxIDI0OC42NzQgNDUzLjIxNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNDguNjc0IC00NTMuMjE2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNDguNjc0IDQ1My4yMTYgVGQKLS9GMTM0XzAgNy45NzAxIFRmCi0obGliYnppcDIpIDM4LjI1NjUgVGoKLVsxIDAgMCAxIDI4Ni45MzEgNDUzLjIxNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODYuOTMxIC00NTMuMjE2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODkuMjg2IDQ1My4yMTYgVGQKLS9GMTMwXzAgNy45NzAxIFRmCi0oZG8pIDcuOTcwMSBUagotLTI5NiBUSm0KLShub3QpIDEwLjE4NTggVGoKLS0yOTUgVEptCi0odXNlKSAxMC42MjQxIFRqCi0tMjk2IFRKbQotKGFuKSA3LjUyMzc3IFRqCi0xNSBUSm0KLSh5KSAzLjk4NTA1IFRqCi0tMjk1IFRKbQotKHBhdGVudGVkKSAyNy4wMDI3IFRqCi0tMjk2IFRKbQotKGFsZ29yaXRobXMuKSAzNi4wODg2IFRqCi0tODkzIFRKbQotKEhvKSA5LjczOTQ2IFRqCi0yNSBUSm0KLSh3ZSkgOS4yOTMxNCBUagotMjUgVEptCi0odikgMy45ODUwNSBUagotMTUgVEptCi0oZXIpIDYuMTkyNzcgVGoKLTQwIFRKbQotKCwpIDEuOTkyNTMgVGoKLS0zMDcgVEptCi0oSSkgMi42NTQwNCBUagotLTI5NSBUSm0KLShkbykgNy45NzAxIFRqCi0tMjk2IFRKbQotKG5vdCkgMTAuMTg1OCBUagotLTI5NSBUSm0KLShoYSkgNy41MjM3NyBUagotMjAgVEptCi0odikgMy45ODUwNSBUagotMTUgVEptCi0oZSkgMy41Mzg3MiBUagotLTI5NiBUSm0KLSh0aGUpIDkuNzM5NDYgVGoKLS0yOTUgVEptCi0ocmVzb3VyY2VzKSAzMC4wOTUxIFRqCi0tMjk2IFRKbQotKHRvKSA2LjIwMDc0IFRqCi03MiA0NDMuNjUyIFRkCi0oY2FycnkpIDE2LjM3MDYgVGoKLS0yNTAgVEptCi0ob3V0KSAxMC4xODU4IFRqCi0tMjUwIFRKbQotKGEpIDMuNTM4NzIgVGoKLS0yNTAgVEptCi0ocGF0ZW50KSAxOS40Nzg5IFRqCi0tMjUwIFRKbQotKHNlYXJjaC4pIDIyLjM0ODIgVGoKLS02MjAgVEptCi0oVGhlcmVmb3JlKSAzMS40MTgxIFRqCi0tMjUwIFRKbQotKEkpIDIuNjU0MDQgVGoKLS0yNTAgVEptCi0oY2Fubm90KSAyMS4yNDgzIFRqCi0tMjUwIFRKbQotKGdpKSA2LjIwMDc0IFRqCi0yNSBUSm0KLSh2KSAzLjk4NTA1IFRqCi0xNSBUSm0KLShlKSAzLjUzODcyIFRqCi0tMjUwIFRKbQotKGFuKSA3LjUyMzc3IFRqCi0xNSBUSm0KLSh5KSAzLjk4NTA1IFRqCi0tMjUwIFRKbQotKGd1YXJhbnRlZSkgMzAuOTc5OCBUagotLTI1MCBUSm0KLShvZikgNi42MzkwOSBUagotLTI1MCBUSm0KLSh0aGUpIDkuNzM5NDYgVGoKLS0yNTAgVEptCi0oYWJvKSAxMS41MDg4IFRqCi0xNSBUSm0KLSh2KSAzLjk4NTA1IFRqCi0xNSBUSm0KLShlKSAzLjUzODcyIFRqCi0tMjUwIFRKbQotKHN0YXRlbWVudC4pIDMyLjU0MTkgVGoKLVsxIDAgMCAxIDcyIDQ0MS45MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zOTEuMDc0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDYuNzk5MyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2Ljc5OTMgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDMgMwotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE0MC4zOTggMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDAuMzk4IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtMTMuOTQ3N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC00NjggLTIxLjU1NDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTcyMF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNzA3LjQ0MSBUZAotL0YxMjJfMCAxNy4yMTU0IFRmCi0oVCkgMTAuNTE4NiBUagotODAgVEptCi0oYWIpIDIwLjA5MDQgVGoKLTEwIFRKbQotKGxlKSAxNC4zNTc2IFRqCi0tMjc4IFRKbQotKG9mKSAxNi4yNTEzIFRqCi0tMjc4IFRKbQotKENvbnRlbnRzKSA3NC41OTQzIFRqCi1bMSAwIDAgMSA3MiA2OTguNjE5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTEuNzQwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjg2Ljg3OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjg2Ljg3OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxLikgNy40NzE5NSBUagotLTMxMCBUSm0KLShJbnRyb2R1Y3Rpb24pIDQ5LjI1NTEgVGoKLVsxIDAgMCAxIDEzMS44MTUgNjg2Ljg3OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTM2Ljc5NiAtNjg2Ljg3OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQ1LjczMyA2ODYuODc5IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTExLjEwOCA2ODYuODc5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUxMS4xMDggLTY4Ni44NzldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUxMS4xMDggNjg2Ljg3OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxKSA0Ljk4MTMgVGoKLVsxIDAgMCAxIDUxNi4wOSA2ODYuODc5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMC4wOTk2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTEuODU1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjc0LjkyM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjc0LjkyMyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyLikgNy40NzE5NSBUagotLTMxMCBUSm0KLShIbykgMTIuMTc0MyBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oYnppcDIpIDIyLjEzNjkgVGoKLVsxIDAgMCAxIDE1Mi4zMTggNjc0LjkyM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU3LjMgLTY3NC45MjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE2Ny4wNTQgNjc0LjkyMyBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MTEuMTA4IDY3NC45MjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTExLjEwOCAtNjc0LjkyM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTExLjEwOCA2NzQuOTIzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIpIDQuOTgxMyBUagotWzEgMCAwIDEgNTE2LjA5IDY3NC45MjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY2Mi45NjhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDY2Mi45NjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi4xLikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShOKSA3LjE5MyBUagotMzUgVEptCi0oQU1FKSAyMi4xMzY5IFRqCi1bMSAwIDAgMSAxMTkuMDE0IDY2Mi45NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEyMy45OTUgLTY2Mi45NjhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzMi42OTEgNjYyLjk2OCBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNjYyLjk2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC02NjIuOTY4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDY2Mi45NjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMikgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNjYyLjk2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY1MS4wMTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDY1MS4wMTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi4yLikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShTWU5PUFNJUykgNDcuMDUzNCBUagotWzEgMCAwIDEgMTM3LjA4NSA2NTEuMDEzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDIuMDY3IC02NTEuMDEzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTAuNTgyIDY1MS4wMTMgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNjUxLjAxM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC02NTEuMDEzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDY1MS4wMTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMikgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNjUxLjAxM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYzOS4wNThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYzOS4wNTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi4zLikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShERVNDUklQVElPTikgNjQuNzU2OSBUagotWzEgMCAwIDEgMTU0Ljc4OSA2MzkuMDU4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTkuNzcgLTYzOS4wNThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE2OC4yOSA2MzkuMDU4IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNjM5LjA1OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC02MzkuMDU4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDYzOS4wNTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMykgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNjM5LjA1OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYyNy4xMDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYyNy4xMDMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi40LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShPUFRJT05TKSA0Mi4wNjIxIFRqCi1bMSAwIDAgMSAxMzIuMDk0IDYyNy4xMDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzNy4wNzYgLTYyNy4xMDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE0NS44NzMgNjI3LjEwMyBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNjI3LjEwM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC02MjcuMTAzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDYyNy4xMDMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNCkgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNjI3LjEwM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYxNS4xNDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYxNS4xNDcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi41LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShNRU1PUikgMzcuNjM4NyBUagotNjUgVEptCi0oWSkgNy4xOTMgVGoKLS0yNTAgVEptCi0oTUFOKSAyMy4yNDI3IFRqCi0zNSBUSm0KLShBKSA3LjE5MyBUagotNDAgVEptCi0oR0VNRU5UKSA0MS41MDQyIFRqCi1bMSAwIDAgMSAyMDcuOSA2MTUuMTQ3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTIuODgxIC02MTUuMTQ3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjEuNDEyIDYxNS4xNDcgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTExLjEwOCA2MTUuMTQ3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUxMS4xMDggLTYxNS4xNDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUxMS4xMDggNjE1LjE0NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSg1KSA0Ljk4MTMgVGoKLVsxIDAgMCAxIDUxNi4wOSA2MTUuMTQ3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMC4wOTk2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTEuODU1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjAzLjE5Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjAzLjE5MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyLjYuKSAxNC45NDM5IFRqCi0tMzEwIFRKbQotKFJFQ08pIDI2LjU3MDMgVGoKLTUwIFRKbQotKFZFUklORykgMzcuNjI4NyBUagotLTI1MCBUSm0KLShEKSA3LjE5MyBUagotNDAgVEptCi0oQSkgNy4xOTMgVGoKLTExMSBUSm0KLShUKSA2LjA4NzE1IFRqCi05MyBUSm0KLShBKSA3LjE5MyBUagotLTI1MCBUSm0KLShGUikgMTIuMTg0MyBUagotNDAgVEptCi0oT00pIDE2LjA0OTcgVGoKLS0yNTAgVEptCi0oRCkgNy4xOTMgVGoKLTQwIFRKbQotKEFNQSkgMjMuMjQyNyBUagotNDAgVEptCi0oR0VEKSAyMC40NzMxIFRqCi0tMjUwIFRKbQotKEZJTEVTKSAyNi41NzAzIFRqCi1bMSAwIDAgMSAyOTMuNDQ5IDYwMy4xOTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5OC40MyAtNjAzLjE5Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzA4LjQ2NCA2MDMuMTkyIFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MTEuMTA4IDYwMy4xOTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTExLjEwOCAtNjAzLjE5Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTExLjEwOCA2MDMuMTkyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDYpIDQuOTgxMyBUagotWzEgMCAwIDEgNTE2LjA5IDYwMy4xOTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0wLjA5OTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMS44NTU3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01OTEuMjM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1OTEuMjM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIuNy4pIDE0Ljk0MzkgVGoKLS0zMTAgVEptCi0oUEVSRk9STUFOQ0UpIDczLjYyMzYgVGoKLS0yNTAgVEptCi0oTk8pIDE0LjM4NiBUagotNDAgVEptCi0oVEVTKSAxNy43MTM1IFRqCi1bMSAwIDAgMSAxOTcuODQ3IDU5MS4yMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwMi44MjkgLTU5MS4yMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxMS45NTggNTkxLjIzNyBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNTkxLjIzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC01OTEuMjM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDU5MS4yMzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNikgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNTkxLjIzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU3OS4yODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU3OS4yODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi44LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShDQSkgMTMuODM4MSBUagotMTM1IFRKbQotKFZFQSkgMjAuNDczMSBUagotMTExIFRKbQotKFRTKSAxMS42MjY0IFRqCi1bMSAwIDAgMSAxMzMuNTE5IDU3OS4yODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzOC41IC01NzkuMjgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDguNzk5IDU3OS4yODIgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNTc5LjI4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC01NzkuMjgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDU3OS4yODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNykgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNTc5LjI4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU2Ny4zMjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU2Ny4zMjcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi45LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShBKSA3LjE5MyBUagotNTUgVEptCi0oVVRIT1IpIDM0LjMxMTIgVGoKLVsxIDAgMCAxIDEzMC45ODkgNTY3LjMyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTM1Ljk3IC01NjcuMzI3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDUuMzIgNTY3LjMyNyBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNTY3LjMyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC01NjcuMzI3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDU2Ny4zMjcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNykgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNTY3LjMyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMjE5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjczNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTU1LjM3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTU1LjM3MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLikgNy40NzE5NSBUagotLTMxMCBUSm0KLShQcm9ncmFtbWluZykgNTQuNzk0MyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSAxNjAuMDQ5IDU1NS4zNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTYwLjA0OSAtNTU1LjM3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTYwLjA0OSA1NTUuMzcyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGxpYmJ6aXAyKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSAyMDcuODcgNTU1LjM3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTUuMzQyIC01NTUuMzcyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjQuODU2IDU1NS4zNzIgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MTEuMTA4IDU1NS4zNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTExLjEwOCAtNTU1LjM3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTExLjEwOCA1NTUuMzcyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDgpIDQuOTgxMyBUagotWzEgMCAwIDEgNTE2LjA5IDU1NS4zNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU0My40MTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU0My40MTYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy4xLikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShUKSA2LjA4NzE1IFRqCi04MCBUSm0KLShvcC1sZSkgMjAuNDczMSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbCkgNy4xOTMgVGoKLS0yNTAgVEptCi0oc3RydWN0dXJlKSAzNC44NTkxIFRqCi1bMSAwIDAgMSAxNjQuOTIxIDU0My40MTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2OS45MDIgLTU0My40MTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3OS45OTcgNTQzLjQxNiBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MTEuMTA4IDU0My40MTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTExLjEwOCAtNTQzLjQxNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTExLjEwOCA1NDMuNDE2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDgpIDQuOTgxMyBUagotWzEgMCAwIDEgNTE2LjA5IDU0My40MTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTUzMS40NjFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDUzMS40NjEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy4xLjEuKSAyMi40MTU5IFRqCi0tMzEwIFRKbQotKExvKSAxMS4wNjg0IFRqCi0yNSBUSm0KLSh3LWxlKSAxNy43MDM1IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVsKSA3LjE5MyBUagotLTI1MCBUSm0KLShzdW1tYXJ5KSAzNy4wODA4IFRqCi1bMSAwIDAgMSAxNzcuMzc0IDUzMS40NjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE4Mi4zNTUgLTUzMS40NjFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5Mi44NjYgNTMxLjQ2MSBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MTEuMTA4IDUzMS40NjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTExLjEwOCAtNTMxLjQ2MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTExLjEwOCA1MzEuNDYxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDkpIDQuOTgxMyBUagotWzEgMCAwIDEgNTE2LjA5IDUzMS40NjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTUxOS41MDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDUxOS41MDYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy4xLjIuKSAyMi40MTU5IFRqCi0tMzEwIFRKbQotKEhpZ2gtbGUpIDMwLjQzNTcgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWwpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHN1bW1hcnkpIDM3LjA4MDggVGoKLVsxIDAgMCAxIDE3OS4yODcgNTE5LjUwNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTg0LjI2OCAtNTE5LjUwNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTkzLjgyMiA1MTkuNTA2IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNTE5LjUwNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC01MTkuNTA2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDUxOS41MDYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOSkgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNTE5LjUwNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTA3LjU1MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTA3LjU1MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjEuMy4pIDIyLjQxNTkgVGoKLS0zMTAgVEptCi0oVXRpbGl0eSkgMjYuMDIyMyBUagotLTI1MCBUSm0KLShmdW5jdGlvbnMpIDM3LjA4MDggVGoKLS0yNTAgVEptCi0oc3VtbWFyeSkgMzcuMDgwOCBUagotWzEgMCAwIDEgMjAyLjY2OSA1MDcuNTUxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDcuNjUgLTUwNy41NTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxNi41ODIgNTA3LjU1MSBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTExLjEwOCA1MDcuNTUxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUxMS4xMDggLTUwNy41NTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUxMS4xMDggNTA3LjU1MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSg5KSA0Ljk4MTMgVGoKLVsxIDAgMCAxIDUxNi4wOSA1MDcuNTUxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43OTgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00OTUuNTk2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0OTUuNTk2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuMi4pIDE0Ljk0MzkgVGoKLS0zMTAgVEptCi0oRXJyb3IpIDIxLjAyMTEgVGoKLS0yNTAgVEptCi0oaGFuZGxpbmcpIDM0Ljg2OTEgVGoKLVsxIDAgMCAxIDE0OC40MTMgNDk1LjU5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTUzLjM5NCAtNDk1LjU5Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTYyLjYxMSA0OTUuNTk2IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNDk1LjU5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC00OTUuNTk2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDQ5NS41OTYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMTApIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDQ5NS41OTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQ4My42NDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQ4My42NDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy4zLikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShMbykgMTEuMDY4NCBUagotMjUgVEptCi0ody1sZSkgMTcuNzAzNSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbCkgNy4xOTMgVGoKLS0yNTAgVEptCi0oaW50ZXJmKSAyMS41NzkgVGoKLTEwIFRKbQotKGFjZSkgMTMuMjcwMiBUagotWzEgMCAwIDEgMTY3LjU3MSA0ODMuNjQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzIuNTUyIC00ODMuNjQxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODEuMDQ1IDQ4My42NDEgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDQ4My42NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtNDgzLjY0MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyA0ODMuNjQxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDExKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSA0ODMuNjQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMC4wOTk1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTEuODU1N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDcxLjY4NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDcxLjY4NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjMuMS4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgNDcxLjY4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC00NzEuNjg1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDQ3MS42ODUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3NJbml0KSAxMDcuNTk2IFRqCi1bMSAwIDAgMSAyMDUuMTAxIDQ3MS42ODVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxMC4wODIgLTQ3MS42ODVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxOS43MzYgNDcxLjY4NSBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNDcxLjY4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC00NzEuNjg1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDQ3MS42ODUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMTEpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDQ3MS42ODVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0xLjUzNDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMC40MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQ1OS43M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDU5LjczIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuMy4yLikgMjIuNDE1OSBUagotWzEgMCAwIDEgOTcuNTA0MyA0NTkuNzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTcuNTA0MyAtNDU5LjczXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDQ1OS43MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMTgxLjE5IDQ1OS43M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTg2LjE3MiAtNDU5LjczXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xOTQuNDk3IDQ1OS43MyBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNDU5LjczXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTQ1OS43M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyA0NTkuNzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMTMpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDQ1OS43M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTEuNTM0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjQyMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDQ3Ljc3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDQ3Ljc3NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjMuMy4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgNDQ3Ljc3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC00NDcuNzc1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDQ0Ny43NzUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3NFbmQpIDEwMS42MTkgVGoKLVsxIDAgMCAxIDE5OS4xMjMgNDQ3Ljc3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjA0LjEwNSAtNDQ3Ljc3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjE0LjUzMyA0NDcuNzc1IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNDQ3Ljc3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC00NDcuNzc1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDQ0Ny43NzUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMTYpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDQ0Ny43NzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0xLjUzNDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMC40MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQzNS44Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDM1LjgyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuMy40LikgMjIuNDE1OSBUagotWzEgMCAwIDEgOTcuNTA0MyA0MzUuODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTcuNTA0MyAtNDM1LjgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDQzNS44MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpEZWNvbXByZXNzSW5pdCkgMTE5LjU1MSBUagotWzEgMCAwIDEgMjE3LjA1NiA0MzUuODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIyMi4wMzcgLTQzNS44Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjMyLjM1NSA0MzUuODIgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDQzNS44Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC00MzUuODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgNDM1LjgyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDE2KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSA0MzUuODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0xLjUzNDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMC40MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQyMy44NjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQyMy44NjUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy4zLjUuKSAyMi40MTU5IFRqCi1bMSAwIDAgMSA5Ny41MDQzIDQyMy44NjVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTcuNTA0MyAtNDIzLjg2NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTcuNTA0MyA0MjMuODY1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekRlY29tcHJlc3MpIDk1LjY0MSBUagotWzEgMCAwIDEgMTkzLjE0NiA0MjMuODY1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTguMTI3IC00MjMuODY1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDcuMTE2IDQyMy44NjUgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDQyMy44NjVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtNDIzLjg2NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyA0MjMuODY1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDE3KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSA0MjMuODY1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMS41MzQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTAuNDIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00MTEuOTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQxMS45MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjMuNi4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgNDExLjkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTk3LjUwNDMgLTQxMS45MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTcuNTA0MyA0MTEuOTEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzc0VuZCkgMTEzLjU3NCBUagotWzEgMCAwIDEgMjExLjA3OCA0MTEuOTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxNi4wNiAtNDExLjkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjQuOTM4IDQxMS45MSBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyA0MTEuOTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtNDExLjkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDQxMS45MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxOCkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgNDExLjkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMS41MzQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTAuNDIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zOTkuOTU0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzOTkuOTU0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuNC4pIDE0Ljk0MzkgVGoKLS0zMTAgVEptCi0oSGlnaC1sZSkgMzAuNDM1NyBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbCkgNy4xOTMgVGoKLS0yNTAgVEptCi0oaW50ZXJmKSAyMS41NzkgVGoKLTEwIFRKbQotKGFjZSkgMTMuMjcwMiBUagotWzEgMCAwIDEgMTY5LjQ4MyAzOTkuOTU0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzQuNDY1IC0zOTkuOTU0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODQuMjE2IDM5OS45NTQgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgMzk5Ljk1NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC0zOTkuOTU0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDM5OS45NTQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMTgpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDM5OS45NTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM4Ny45OTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM4Ny45OTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy40LjEuKSAyMi40MTU5IFRqCi1bMSAwIDAgMSA5Ny41MDQzIDM4Ny45OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTcuNTA0MyAtMzg3Ljk5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTcuNTA0MyAzODcuOTk5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRPcGVuKSA4My42ODU4IFRqCi1bMSAwIDAgMSAxODEuMTkgMzg3Ljk5OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTg2LjE3MiAtMzg3Ljk5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTk0LjQ5NyAzODcuOTk5IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAzODcuOTk5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTM4Ny45OTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMzg3Ljk5OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxOSkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMzg3Ljk5OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTEuNTM0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjQyMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzc2LjA0NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzc2LjA0NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjQuMi4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgMzc2LjA0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC0zNzYuMDQ0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDM3Ni4wNDQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6UmVhZCkgNTkuNzc1NiBUagotWzEgMCAwIDEgMTU3LjI4IDM3Ni4wNDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2Mi4yNjEgLTM3Ni4wNDRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3MS40NzIgMzc2LjA0NCBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAzNzYuMDQ0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTM3Ni4wNDRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMzc2LjA0NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyMCkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMzc2LjA0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTEuMzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMC42NDUyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zNjQuMDg5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzNjQuMDg5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuNC4zLikgMjIuNDE1OSBUagotWzEgMCAwIDEgOTcuNTA0MyAzNjQuMDg5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTk3LjUwNDMgLTM2NC4wODldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTk3LjUwNDMgMzY0LjA4OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkR2V0VW51c2VkKSAxMTMuNTc0IFRqCi1bMSAwIDAgMSAyMTEuMDc4IDM2NC4wODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxNi4wNiAtMzY0LjA4OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjI0LjkzOCAzNjQuMDg5IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDM2NC4wODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtMzY0LjA4OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyAzNjQuMDg5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIxKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSAzNjQuMDg5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMS4zMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjY0NTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM1Mi4xMzRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM1Mi4xMzQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy40LjQuKSAyMi40MTU5IFRqCi1bMSAwIDAgMSA5Ny41MDQzIDM1Mi4xMzRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTcuNTA0MyAtMzUyLjEzNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTcuNTA0MyAzNTIuMTM0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRDbG9zZSkgODkuNjYzNCBUagotWzEgMCAwIDEgMTg3LjE2OCAzNTIuMTM0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTIuMTQ5IC0zNTIuMTM0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDEuOTE0IDM1Mi4xMzQgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAzNTIuMTM0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTM1Mi4xMzRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMzUyLjEzNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyMikgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMzUyLjEzNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTEuMzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMC42NDUxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zNDAuMTc5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzNDAuMTc5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuNC41LikgMjIuNDE1OSBUagotWzEgMCAwIDEgOTcuNTA0MyAzNDAuMTc5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTk3LjUwNDMgLTM0MC4xNzldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTk3LjUwNDMgMzQwLjE3OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpXcml0ZU9wZW4pIDg5LjY2MzQgVGoKLVsxIDAgMCAxIDE4Ny4xNjggMzQwLjE3OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTkyLjE0OSAtMzQwLjE3OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjAxLjkxNCAzNDAuMTc5IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgMzQwLjE3OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC0zNDAuMTc5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDM0MC4xNzkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjIpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDM0MC4xNzldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0xLjUzNDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMC40MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTMyOC4yMjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDMyOC4yMjMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy40LjYuKSAyMi40MTU5IFRqCi1bMSAwIDAgMSA5Ny41MDQzIDMyOC4yMjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTcuNTA0MyAtMzI4LjIyM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTcuNTA0MyAzMjguMjIzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ieldyaXRlKSA2NS43NTMyIFRqCi1bMSAwIDAgMSAxNjMuMjU4IDMyOC4yMjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2OC4yMzkgLTMyOC4yMjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3Ni42NzUgMzI4LjIyMyBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDMyOC4yMjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtMzI4LjIyM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyAzMjguMjIzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIzKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSAzMjguMjIzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMS4zMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjY0NTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTMxNi4yNjhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDMxNi4yNjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy40LjcuKSAyMi40MTU5IFRqCi1bMSAwIDAgMSA5Ny41MDQzIDMxNi4yNjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTcuNTA0MyAtMzE2LjI2OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTcuNTA0MyAzMTYuMjY4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ieldyaXRlQ2xvc2UpIDk1LjY0MSBUagotWzEgMCAwIDEgMTkzLjE0NiAzMTYuMjY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTguMTI3IC0zMTYuMjY4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDcuMTE2IDMxNi4yNjggVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDMxNi4yNjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtMzE2LjI2OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyAzMTYuMjY4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIzKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSAzMTYuMjY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMS4zMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjY0NTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTMwNC4zMTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDMwNC4zMTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy40LjguKSAyMi40MTU5IFRqCi0tMzEwIFRKbQotKEhhbmRsaW5nKSAzNy4wODA4IFRqCi0tMjUwIFRKbQotKGVtYmVkZGVkKSA0MC45NDYzIFRqCi0tMjUwIFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yNTAgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI1MCBUSm0KLShzdHJlYW1zKSAzMC40MzU3IFRqCi1bMSAwIDAgMSAyNzkuNTYgMzA0LjMxM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjg0LjU0MSAtMzA0LjMxM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjk0LjYwMSAzMDQuMzEzIFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgMzA0LjMxM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC0zMDQuMzEzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDMwNC4zMTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjQpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDMwNC4zMTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTI5Mi4zNThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI5Mi4zNTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy40LjkuKSAyMi40MTU5IFRqCi0tMzEwIFRKbQotKFN0YW5kYXJkKSAzNS40MTcgVGoKLS0yNTAgVEptCi0oXDAwMmxlLXJlYWRpbmcvd3JpdGluZykgNzcuNDc5MSBUagotLTI1MCBUSm0KLShjb2RlKSAxOC44MDk0IFRqCi1bMSAwIDAgMSAyMzQuMTkgMjkyLjM1OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjM5LjE3MiAtMjkyLjM1OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjQ3LjU2NCAyOTIuMzU4IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAyOTIuMzU4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTI5Mi4zNThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMjkyLjM1OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyNSkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMjkyLjM1OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjgwLjQwM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjgwLjQwMyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjUuKSAxNC45NDM5IFRqCi0tMzEwIFRKbQotKFV0aWxpdHkpIDI2LjAyMjMgVGoKLS0yNTAgVEptCi0oZnVuY3Rpb25zKSAzNy4wODA4IFRqCi1bMSAwIDAgMSAxNTUuNjI1IDI4MC40MDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2MC42MDcgLTI4MC40MDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3MC42NDUgMjgwLjQwMyBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAyODAuNDAzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTI4MC40MDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMjgwLjQwMyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyNikgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMjgwLjQwM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjY4LjQ0OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjY4LjQ0OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjUuMS4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgMjY4LjQ0OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC0yNjguNDQ4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDI2OC40NDggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6QnVmZlRvQnVmZkNvbXByZXNzKSAxNDMuNDYxIFRqCi1bMSAwIDAgMSAyNDAuOTY2IDI2OC40NDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0NS45NDggLTI2OC40NDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1NS4zOCAyNjguNDQ4IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgMjY4LjQ0OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC0yNjguNDQ4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDI2OC40NDggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjYpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDI2OC40NDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0xLjUzNDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMC40MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTI1Ni40OTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI1Ni40OTIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy41LjIuKSAyMi40MTU5IFRqCi1bMSAwIDAgMSA5Ny41MDQzIDI1Ni40OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTcuNTA0MyAtMjU2LjQ5Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTcuNTA0MyAyNTYuNDkyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzKSAxNTUuNDE3IFRqCi1bMSAwIDAgMSAyNTIuOTIyIDI1Ni40OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1Ny45MDMgLTI1Ni40OTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI2Ny45OTkgMjU2LjQ5MiBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDI1Ni40OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtMjU2LjQ5Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyAyNTYuNDkyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDI3KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSAyNTYuNDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMS41MzQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTAuNDIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yNDQuNTM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyNDQuNTM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuNi4pIDE0Ljk0MzkgVGoKLVsxIDAgMCAxIDkwLjAzMjQgMjQ0LjUzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MC4wMzI0IC0yNDQuNTM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MC4wMzI0IDI0NC41MzcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oemxpYikgMjMuOTEwMiBUagotWzEgMCAwIDEgMTEzLjk0MyAyNDQuNTM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExMy45NDMgLTI0NC41MzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExNi40MzMgMjQ0LjUzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShjb21wYXRpYmlsaXR5KSA1My4xNDA1IFRqCi0tMjUwIFRKbQotKGZ1bmN0aW9ucykgMzcuMDgwOCBUagotWzEgMCAwIDEgMjA5LjE0NCAyNDQuNTM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTQuMTI2IC0yNDQuNTM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjMuOTcxIDI0NC41MzcgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgMjQ0LjUzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC0yNDQuNTM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDI0NC41MzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjgpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDI0NC41MzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIzMi41ODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDIzMi41ODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy43LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShVc2luZykgMjMuODAwNyBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLVsxIDAgMCAxIDE3Ny4xOTUgMjMyLjU4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzcuMTk1IC0yMzIuNTgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzcuMTk1IDIzMi41ODIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oc3RkaW8pIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDIwNy4wODMgMjMyLjU4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDcuMDgzIC0yMzIuNTgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDcuMDgzIDIzMi41ODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLWZyZWUpIDE4Ljc5OTQgVGoKLS0yNTAgVEptCi0oZW4pIDkuNDA0NjkgVGoKLTQwIFRKbQotKHZpcm9ubWVudCkgNDAuOTU2MiBUagotWzEgMCAwIDEgMjc4LjMzNSAyMzIuNTgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODMuMzE2IC0yMzIuNTgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTEuNzc1IDIzMi41ODIgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgMjMyLjU4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC0yMzIuNTgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDIzMi41ODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjgpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDIzMi41ODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIyMC42MjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDIyMC42MjcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy43LjEuKSAyMi40MTU5IFRqCi0tMzEwIFRKbQotKEdldHRpbmcpIDI5Ljg4NzggVGoKLS0yNTAgVEptCi0ocmlkKSAxMS4wNjg0IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi1bMSAwIDAgMSAxNTQuMjMxIDIyMC42MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU0LjIzMSAtMjIwLjYyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTU0LjIzMSAyMjAuNjI3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHN0ZGlvKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAxODQuMTE5IDIyMC42MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE4OS4xIC0yMjAuNjI3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xOTguMTc1IDIyMC42MjcgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgMjIwLjYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC0yMjAuNjI3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDIyMC42MjcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjkpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDIyMC42MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIwOC42NzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDIwOC42NzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy43LjIuKSAyMi40MTU5IFRqCi0tMzEwIFRKbQotKENyaXRpY2FsKSAyOS44ODc4IFRqCi0tMjUwIFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi0tMjUwIFRKbQotKGhhbmRsaW5nKSAzNC44NjkxIFRqCi1bMSAwIDAgMSAxODYuNTk5IDIwOC42NzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5MS41OCAtMjA4LjY3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjAxLjYyOSAyMDguNjcyIFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgMjA4LjY3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC0yMDguNjcyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDIwOC42NzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjkpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDIwOC42NzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTE5Ni43MTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE5Ni43MTcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy44LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShNYWtpbmcpIDMwLjk5MzYgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShXKSA5LjQwNDY5IFRqCi00MCBUSm0KLShpbmRvKSAxNy43MTM1IFRqCi0yNSBUSm0KLSh3cykgMTEuMDY4NCBUagotLTI1MCBUSm0KLShETEwpIDE5LjM2NzMgVGoKLVsxIDAgMCAxIDE4OS44MjggMTk2LjcxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTk0LjgwOSAtMTk2LjcxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjAzLjI0MyAxOTYuNzE3IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgMTk2LjcxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC0xOTYuNzE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDE5Ni43MTcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjkpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDE5Ni43MTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTE4NC43NjFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE4NC43NjEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNC4pIDcuNDcxOTUgVGoKLS0zMTAgVEptCi0oTWlzY2VsbGFuZWEpIDQ4LjEzOTMgVGoKLVsxIDAgMCAxIDEzMC42OTkgMTg0Ljc2MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTM1LjY4IC0xODQuNzYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDQuODk4IDE4NC43NjEgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgMTg0Ljc2MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC0xODQuNzYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDE4NC43NjEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMzEpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDE4NC43NjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0wLjA5OTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMS44NTU3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xNzIuODA2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxNzIuODA2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDQuMS4pIDE0Ljk0MzkgVGoKLS0zMTAgVEptCi0oTGltaXRhdGlvbnMpIDQ1Ljk0NzUgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yNTAgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMjUwIFRKbQotKGZvcm1hdCkgMjYuNTYwMyBUagotWzEgMCAwIDEgMjU1LjIzMSAxNzIuODA2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNjAuMjEyIC0xNzIuODA2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNjkuMTU0IDE3Mi44MDYgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAxNzIuODA2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTE3Mi44MDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMTcyLjgwNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzMSkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMTcyLjgwNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTYwLjg1MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTYwLjg1MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSg0LjIuKSAxNC45NDM5IFRqCi0tMzEwIFRKbQotKFBvcnRhYmlsaXR5KSA0Mi4wNzIxIFRqCi0tMjUwIFRKbQotKGlzc3VlcykgMjMuODAwNyBUagotWzEgMCAwIDEgMTU4LjM5NSAxNjAuODUxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjMuMzc2IC0xNjAuODUxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzIuMDMgMTYwLjg1MSBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAxNjAuODUxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTE2MC44NTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMTYwLjg1MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzMikgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMTYwLjg1MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTQ4Ljg5Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTQ4Ljg5NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSg0LjMuKSAxNC45NDM5IFRqCi0tMzEwIFRKbQotKFJlcG9ydGluZykgMzkuODUwNCBUagotLTI1MCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVncykgMTMuODM4MSBUagotWzEgMCAwIDEgMTUwLjk5MyAxNDguODk2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTUuOTc1IC0xNDguODk2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjYuMTE1IDE0OC44OTYgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDE0OC44OTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtMTQ4Ljg5Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyAxNDguODk2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMyKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSAxNDguODk2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43OTg0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xMzYuOTQxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxMzYuOTQxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDQuNC4pIDE0Ljk0MzkgVGoKLS0zMTAgVEptCi0oRGlkKSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI1MCBUSm0KLShnZXQpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHJpZ2h0KSAxOC44MTk0IFRqCi0tMjUwIFRKbQotKHBhY2thZ2U/KSAzNy4wNjA5IFRqCi1bMSAwIDAgMSAyMTIuNjAyIDEzNi45NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzLjA4ODQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDMuMDg4NCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxOC43NzggLTEzNi45NDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIyOS4xMDkgMTM2Ljk0MSBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDEzNi45NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtMTM2Ljk0MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyAxMzYuOTQxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMzKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSAxMzYuOTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43OTgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xMjQuOTg2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxMjQuOTg2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDQuNS4pIDE0Ljk0MzkgVGoKLS0zMTAgVEptCi0oRnVydGhlcikgMjkuMzI5OSBUagotLTI1MCBUSm0KLShSZWFkaW5nKSAzMy4yMDUzIFRqCi1bMSAwIDAgMSAxNTUuMDU4IDEyNC45ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2MC4wMzkgLTEyNC45ODZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3MC4zNjEgMTI0Ljk4NiBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAxMjQuOTg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTEyNC45ODZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMTI0Ljk4NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzNCkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMTI0Ljk4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDAgLTYyLjAxNDNdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMzc0LjM5NCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDYuNzU0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQxLjM5OTcgLTYuNzU0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTQuNjY4IC01MC44NTE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MzYuMDY4IDUwLjg1MTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaWlpKSA4LjMwODgxIFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiA0IDQKLSUlQmVnaW5QYWdlU2V0dXAKLSUlUGFnZU9yaWVudGF0aW9uOiBQb3J0cmFpdAotcGRmU3RhcnRQYWdlCi0wIDAgNjEyIDc5MiByZSBXCi0lJUVuZFBhZ2VTZXR1cAotW10gMCBkCi0xIGkKLTAgagotMCBKCi0xMCBNCi0xIHcKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLWZhbHNlIG9wCi1mYWxzZSBPUAotMCAwIDYxMiA3OTIgcmUKLVcKLXEKLVsxIDAgMCAxIDcyIDc0MS41NTRdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAxNC40NDU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTg3LjE5NyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxNDAuMzk4IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQwLjM5OCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTEzLjk0NzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0wLjQ5ODFdIGNtCi1xCi1bXSAwIGQKLTAgSgotMC40OTgxIHcKLTAgMC4yNDkxIG0KLTQ3NS40NjUgMC4yNDkxIGwKLVMKLVEKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ3OS4yNTEgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtNDY4IC0yMS41NTQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC03MjBdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDcwMS45MTYgVGQKLS9GMTIyXzAgMjQuNzkwMiBUZgotKDEuKSAyMC42NzUgVGoKLS0yNzggVEptCi0oSW50cikgMzkuOTM3IFRqCi0yMCBUSm0KLShvZHVjdGlvbikgMTA0LjY2NCBUagotWzEgMCAwIDEgNzIgNzAxLjYwNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjkxLjY0M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjc5Ljk5OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMTAxLjg4OCA2NzkuOTk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEwMS44ODggLTY3OS45OThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwNC41MDcgNjc5Ljk5OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShjb21wcmVzc2VzKSA0NS45Mjc2IFRqCi0tMjYzIFRKbQotKFwwMDJsZXMpIDE2LjYwNzcgVGoKLS0yNjMgVEptCi0odXNpbmcpIDIxLjU4OSBUagotLTI2MyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjIgVEptCi0oQnVycm8pIDIzLjI0MjcgVGoKLTI1IFRKbQotKHdzLVdoZWVsZXIpIDQ4LjEyOTMgVGoKLS0yNjMgVEptCi0oYmxvY2stc29ydGluZykgNTMuMTMwNSBUagotLTI2MyBUSm0KLSh0ZSkgNy4xOTMgVGoKLTE1IFRKbQotKHh0KSA3Ljc1MDkgVGoKLS0yNjMgVEptCi0oY29tcHJlc3Npb24pIDUwLjM2MDkgVGoKLS0yNjMgVEptCi0oYWxnb3JpdGhtLCkgNDEuMjM1MiBUagotLTI2NiBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI2MyBUSm0KLShIdWYpIDE1LjQ5MTggVGoKLTI1IFRKbQotKGZtYW4pIDIwLjQ3MzEgVGoKLS0yNjMgVEptCi0oY29kaW5nLikgMjkuNjA4OCBUagotNzIgNjY4LjA0MyBUZAotKENvbXByZXNzaW9uKSA1Mi41ODI2IFRqCi0tMjAzIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjA0IFRKbQotKGdlbmVyYWxseSkgMzcuMDcwOCBUagotLTIwMyBUSm0KLShjb25zaWRlcmFibHkpIDUwLjkwODkgVGoKLS0yMDMgVEptCi0oYmV0dGVyKSAyMi42ODQ4IFRqCi0tMjA0IFRKbQotKHQpIDIuNzY5NiBUagotMSBUSm0KLShoYW4pIDE0LjM4NiBUagotLTIwNCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjAzIFRKbQotKGFjaGllKSAyMS4wMjExIFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVkKSA5LjQwNDY5IFRqCi0tMjAzIFRKbQotKGJ5KSA5Ljk2MjYgVGoKLS0yMDQgVEptCi0obW9yZSkgMjAuNDczMSBUagotLTIwMyBUSm0KLShjb24pIDE0LjM4NiBUagotNDAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbnRpb25hbCkgMzIuMDk5NSBUagotLTIwMyBUSm0KLShMWjc3L0xaNzgtYmFzZWQpIDczLjA0NTggVGoKLS0yMDQgVEptCi0oY29tcHJlc3NvcnMsKSA1Mi4yOTM3IFRqCi03MiA2NTYuMDg3IFRkCi0oYW5kKSAxNC4zODYgVGoKLS0yNTAgVEptCi0oYXBwcm9hY2hlcykgNDQuODExOCBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0ocGVyZm9ybWFuY2UpIDUwLjM0MSBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oUFBNKSAxOS45MzUyIFRqCi0tMjUwIFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFtaWx5KSAyMi42OTQ4IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHN0YXRpc3RpY2FsKSAzNy42Mzg3IFRqCi0tMjUwIFRKbQotKGNvbXByZXNzb3JzLikgNTIuMjkzNyBUagotWzEgMCAwIDEgNzIgNjUzLjkzMV0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjQzLjk2OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjM0LjE3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAxMDEuODg4IDYzNC4xN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMDEuODg4IC02MzQuMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwNS4wNzMgNjM0LjE3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMzIwIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWlsdCkgMTMuMjkwMSBUagotLTMxOSBUSm0KLShvbikgOS45NjI2IFRqCi0tMzIwIFRKbQotKHRvcCkgMTIuNzMyMiBUagotLTMyMCBUSm0KLShvZikgOC4yOTg4NSBUagotWzEgMCAwIDEgMTc2LjcxMiA2MzQuMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTc2LjcxMiAtNjM0LjE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzYuNzEyIDYzNC4xNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShsaWJiemlwMikgNDcuODIwNSBUagotWzEgMCAwIDEgMjI0LjUzMyA2MzQuMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjI0LjUzMyAtNjM0LjE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjQuNTMzIDYzNC4xNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMzM3IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zMjAgVEptCi0oXDAwM2UpIDkuOTYyNiBUagotMTUgVEptCi0oeGlibGUpIDE5LjkyNTIgVGoKLS0zMjAgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTMxOSBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0zMjAgVEptCi0oaGFuZGxpbmcpIDM0Ljg2OTEgVGoKLS0zMjAgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTMyMCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMzE5IFRKbQotKGluKSA3Ljc1MDkgVGoKLS0zMjAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi1bMSAwIDAgMSA0NDkuODE2IDYzNC4xN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDkuODE2IC02MzQuMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ0OS44MTYgNjM0LjE3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSA0NzkuNzA0IDYzNC4xN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzkuNzA0IC02MzQuMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ4Mi44ODkgNjM0LjE3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGZvcm1hdC4pIDI5LjA1MDkgVGoKLS0xMDM5IFRKbQotKFRoaXMpIDE3LjcxMzUgVGoKLTcyIDYyMi4yMTQgVGQKLShtYW51YWwpIDI5LjMyOTkgVGoKLS0zMTYgVEptCi0oZGVzY3JpYmVzKSAzNy4wNzA4IFRqCi0tMzE2IFRKbQotKGJvdGgpIDE3LjcxMzUgVGoKLS0zMTcgVEptCi0oaG8pIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0zMTYgVEptCi0odG8pIDcuNzUwOSBUagotLTMxNiBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0zMTYgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzE2IFRKbQotKHByb2dyYW0pIDMzLjc1MzMgVGoKLS0zMTYgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0zMTcgVEptCi0oaG8pIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0zMTYgVEptCi0odG8pIDcuNzUwOSBUagotLTMxNiBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0ob3JrKSAxMy4yODAxIFRqCi0tMzE2IFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0zMTYgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzE3IFRKbQotKGxpYnJhcnkpIDI2LjU2MDMgVGoKLS0zMTYgVEptCi0oaW50ZXJmKSAyMS41NzkgVGoKLTEwIFRKbQotKGFjZS4pIDE1Ljc2MDggVGoKLS0xMDE3IFRKbQotKE1vc3QpIDIwLjQ4MzEgVGoKLS0zMTYgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zMTYgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzE3IFRKbQotKG1hbnVhbCkgMjkuMzI5OSBUagotLTMxNiBUSm0KLShpcykgNi42NDUwNSBUagotNzIgNjEwLjI1OSBUZAotKGRlKSA5LjQwNDY5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTIwIFRKbQotKG90ZWQpIDE3LjE1NTYgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNTAgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTI1MCBUSm0KLShub3QpIDEyLjczMjIgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHByb2dyYW0sKSAzNi4yNDM5IFRqCi0tMjUwIFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKGdvb2QpIDE5LjkyNTIgVGoKLS0yNTAgVEptCi0obmUpIDkuNDA0NjkgVGoKLTI1IFRKbQotKHdzKSAxMS4wNjg0IFRqCi0tMjUwIFRKbQotKGlmKSA2LjA4NzE1IFRqCi0tMjUwIFRKbQotKHlvdXIpIDE4LjI2MTQgVGoKLS0yNTAgVEptCi0oaW50ZXJlc3QpIDI5LjMyOTkgVGoKLS0yNTAgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0ob25seSkgMTcuNzEzNSBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShwcm9ncmFtLikgMzYuMjQzOSBUagotWzEgMCAwIDEgNzIgNjA4LjEwMl0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDAgLTI5LjcyMzZdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSA2Ljk3MzkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03OC45NzM5IC01NzguMzc5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03OC45NzM5IDU3OC4zNzkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDIyNSkgMy40ODY5MSBUagotWzEgMCAwIDEgODIuNDYwOCA1NzguMzc5XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLVsxIDAgMCAxIC04Ni45NDQgLTU3OC4zNzldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCA1NzguMzc5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEhvKSAxMi4xNzQzIFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotLTI1OSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjYwIFRKbQotKHVzZSkgMTMuMjgwMSBUagotLTI1OSBUSm0KLShiemlwMikgMjIuMTM2OSBUagotWzEgMCAwIDEgMTU2Ljk4NSA1NzguMzc5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAxXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAxXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAxXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAxXSBTQwotWzEgMCAwIDEgLTE1Ni45ODUgLTU3OC4zNzldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1OS41NyA1NzguMzc5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFsyXSkgMTEuNjE2NCBUagotWzEgMCAwIDEgMTcxLjE4NiA1NzguMzc5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAxXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAxXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3MS4xODYgLTU3OC4zNzldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3My43NzEgNTc4LjM3OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShkZXNjcmliZXMpIDM3LjA3MDggVGoKLS0yNTkgVEptCi0oaG8pIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yNjAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1OSBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLVsxIDAgMCAxIDI1OS4xMTkgNTc4LjM3OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNTkuMTE5IC01NzguMzc5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNTkuMTE5IDU3OC4zNzkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDI4OS4wMDcgNTc4LjM3OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODkuMDA3IC01NzguMzc5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODkuMDA3IDU3OC4zNzkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOykgMi43Njk2IFRqCi0tMjY0IFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTI2MCBUSm0KLShpcykgNi42NDUwNSBUagotLTI1OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjAgVEptCi0ob25seSkgMTcuNzEzNSBUagotLTI1OSBUSm0KLShwYXJ0KSAxNS40OTE4IFRqCi0tMjU5IFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI2MCBUSm0KLShuZWVkKSAxOC44MDk0IFRqCi0tMjU5IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNjAgVEptCi0ocmVhZCkgMTcuMTQ1NiBUagotLTI1OSBUSm0KLShpZikgNi4wODcxNSBUagotLTI2MCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNTkgVEptCi0oanVzdCkgMTQuMzk2IFRqCi0tMjYwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhbnQpIDEyLjE3NDMgVGoKLS0yNTkgVEptCi0odG8pIDcuNzUwOSBUagotLTI2MCBUSm0KLShrbm8pIDE0Ljk0MzkgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi04Ni45NDQgNTY2LjQyNCBUZAotKGhvKSA5Ljk2MjYgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0ob3BlcmF0ZSkgMjkuMzE5OSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0ocHJvZ3JhbS4pIDM2LjI0MzkgVGoKLVsxIDAgMCAxIDE5OS4zMDIgNTY2LjQyNF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMjcuMzAyIC0yMS45MTc4XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgNi45NzM5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzguOTczOSAtNTQ0LjUwNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzguOTczOSA1NDQuNTA2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwyMjUpIDMuNDg2OTEgVGoKLVsxIDAgMCAxIDgyLjQ2MDggNTQ0LjUwNl0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS45OTI1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDFdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDFdIFNDCi1bMSAwIDAgMSAtODYuOTQ0IC01NDQuNTA2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgNTQ0LjUwNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm9ncmFtbWluZykgNTQuNzk0MyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMjUwIFRKbQotKGxpYmJ6aXAyKSAzMi42NTc0IFRqCi1bMSAwIDAgMSAxOTcuMDkgNTQ0LjUwNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLVsxIDAgMCAxIC0xOTcuMDkgLTU0NC41MDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5OS41OCA1NDQuNTA2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFs4XSkgMTEuNjE2NCBUagotWzEgMCAwIDEgMjExLjE5NyA1NDQuNTA2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAxXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAxXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxMS4xOTcgLTU0NC41MDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxMy42ODcgNTQ0LjUwNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShkZXNjcmliZXMpIDM3LjA3MDggVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHByb2dyYW1taW5nKSA1NC4yMzY0IFRqCi0tMjUwIFRKbQotKGludGVyZikgMjEuNTc5IFRqCi0xMCBUSm0KLShhY2VzKSAxNy4xNDU2IFRqCi0tMjUwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oZGV0YWlsLCkgMjQuNjI3NSBUagotLTI1MCBUSm0KLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNDE3LjUwMSA1NDQuNTA2XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTM0NS41MDEgLTIxLjkxNzhdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSA2Ljk3MzkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03OC45NzM5IC01MjIuNTg4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03OC45NzM5IDUyMi41ODggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDIyNSkgMy40ODY5MSBUagotWzEgMCAwIDEgODIuNDYwOCA1MjIuNTg4XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLVsxIDAgMCAxIC04Ni45NDQgLTUyMi41ODhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCA1MjIuNTg4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKE1pc2NlbGxhbmVhKSA0OC4xMzkzIFRqCi1bMSAwIDAgMSAxMzUuMDgzIDUyMi41ODhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDFdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDFdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDFdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDFdIFNDCi1bMSAwIDAgMSAtMTM1LjA4MyAtNTIyLjU4OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTM3LjU3MyA1MjIuNTg4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFszMV0pIDE2LjU5NzcgVGoKLVsxIDAgMCAxIDE1NC4xNzEgNTIyLjU4OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTQuMTcxIC01MjIuNTg4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTYuNjYyIDUyMi41ODggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0ocmVjb3JkcykgMjkuMzE5OSBUagotLTI1MCBUSm0KLShzb21lKSAyMS4wMzEgVGoKLS0yNTAgVEptCi0obWlzY2VsbGFuZW91cykgNTYuNDQ4MSBUagotLTI1MCBUSm0KLShub3RlcykgMjEuMDMxIFRqCi0tMjUwIFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKEkpIDMuMzE3NTUgVGoKLS0yNTAgVEptCi0odGhvdWdodCkgMzAuNDQ1NyBUagotLTI1MCBUSm0KLShvdWdodCkgMjIuNjk0OCBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKHJlY29yZGVkKSAzNC44NDkyIFRqCi0tMjUwIFRKbQotKHNvbWUpIDIxLjAzMSBUagotMjUgVEptCi0od2hlcmUuKSAyNi44MjkzIFRqCi1bMSAwIDAgMSA0OTIuMzEgNTIyLjU4OF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC00MjAuMzEgLTQ3MS43MzZdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMzc0LjM5NCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDYuNzU0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQzLjA2MzMgLTYuNzU0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTYuMzMyIC01MC44NTE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MzkuMzk1IDUwLjg1MTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMSkgNC45ODEzIFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiA1IDUKLSUlQmVnaW5QYWdlU2V0dXAKLSUlUGFnZU9yaWVudGF0aW9uOiBQb3J0cmFpdAotcGRmU3RhcnRQYWdlCi0wIDAgNjEyIDc5MiByZSBXCi0lJUVuZFBhZ2VTZXR1cAotW10gMCBkCi0xIGkKLTAgagotMCBKCi0xMCBNCi0xIHcKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLWZhbHNlIG9wCi1mYWxzZSBPUAotMCAwIDYxMiA3OTIgcmUKLVcKLXEKLVsxIDAgMCAxIDcyIDc0MS41NTRdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAxNC40NDU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTg3LjE5NyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxNDAuMzk4IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQwLjM5OCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTEzLjk0NzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0wLjQ5ODFdIGNtCi1xCi1bXSAwIGQKLTAgSgotMC40OTgxIHcKLTAgMC4yNDkxIG0KLTQ3NS40NjUgMC4yNDkxIGwKLVMKLVEKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ3OS4yNTEgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0yMS41NTQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC03MjBdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDcwMS45MTYgVGQKLS9GMTIyXzAgMjQuNzkwMiBUZgotKDIuKSAyMC42NzUgVGoKLS0yNzggVEptCi0oSG8pIDMzLjA0NTMgVGoKLTE1IFRKbQotKHcpIDE5LjI4NjggVGoKLS0yNzggVEptCi0odG8pIDIzLjQwMTkgVGoKLS0yNzggVEptCi0odXNlKSA0Mi43MTM1IFRqCi0tMjc4IFRKbQotKGJ6aXAyKSA2My4zNjM4IFRqCi1bMSAwIDAgMSA3MiA2OTYuNzg0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTQuOTQ0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02NzEuODc3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2NTYuMzUgVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKFQpIDEwLjUxODYgVGoKLTgwIFRKbQotKGFiKSAyMC4wOTA0IFRqCi0xMCBUSm0KLShsZSkgMTQuMzU3NiBUagotLTI3OCBUSm0KLShvZikgMTYuMjUxMyBUagotLTI3OCBUSm0KLShDb250ZW50cykgNzQuNTk0MyBUagotWzEgMCAwIDEgNzIgNjQ3LjUyOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjc0MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYzNS43ODhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYzNS43ODggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi4xLikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShOKSA3LjE5MyBUagotMzUgVEptCi0oQU1FKSAyMi4xMzY5IFRqCi1bMSAwIDAgMSAxMTkuMDE0IDYzNS43ODhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEyMy45OTUgLTYzNS43ODhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzMi42OTEgNjM1Ljc4OCBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNjM1Ljc4OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC02MzUuNzg4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDYzNS43ODggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMikgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNjM1Ljc4OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYyMy44MzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYyMy44MzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi4yLikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShTWU5PUFNJUykgNDcuMDUzNCBUagotWzEgMCAwIDEgMTM3LjA4NSA2MjMuODMyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDIuMDY3IC02MjMuODMyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTAuNTgyIDYyMy44MzIgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNjIzLjgzMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC02MjMuODMyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDYyMy44MzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMikgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNjIzLjgzMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYxMS44NzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYxMS44NzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi4zLikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShERVNDUklQVElPTikgNjQuNzU2OSBUagotWzEgMCAwIDEgMTU0Ljc4OSA2MTEuODc3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTkuNzcgLTYxMS44NzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE2OC4yOSA2MTEuODc3IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNjExLjg3N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC02MTEuODc3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDYxMS44NzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMykgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNjExLjg3N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU5OS45MjJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU5OS45MjIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi40LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShPUFRJT05TKSA0Mi4wNjIxIFRqCi1bMSAwIDAgMSAxMzIuMDk0IDU5OS45MjJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzNy4wNzYgLTU5OS45MjJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE0NS44NzMgNTk5LjkyMiBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNTk5LjkyMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC01OTkuOTIyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDU5OS45MjIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNCkgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNTk5LjkyMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU4Ny45NjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU4Ny45NjcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi41LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShNRU1PUikgMzcuNjM4NyBUagotNjUgVEptCi0oWSkgNy4xOTMgVGoKLS0yNTAgVEptCi0oTUFOKSAyMy4yNDI3IFRqCi0zNSBUSm0KLShBKSA3LjE5MyBUagotNDAgVEptCi0oR0VNRU5UKSA0MS41MDQyIFRqCi1bMSAwIDAgMSAyMDcuOSA1ODcuOTY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTIuODgxIC01ODcuOTY3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjEuNDEyIDU4Ny45NjcgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTExLjEwOCA1ODcuOTY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUxMS4xMDggLTU4Ny45NjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUxMS4xMDggNTg3Ljk2NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSg1KSA0Ljk4MTMgVGoKLVsxIDAgMCAxIDUxNi4wOSA1ODcuOTY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMC4wOTk2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTEuODU1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTc2LjAxMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTc2LjAxMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyLjYuKSAxNC45NDM5IFRqCi0tMzEwIFRKbQotKFJFQ08pIDI2LjU3MDMgVGoKLTUwIFRKbQotKFZFUklORykgMzcuNjI4NyBUagotLTI1MCBUSm0KLShEKSA3LjE5MyBUagotNDAgVEptCi0oQSkgNy4xOTMgVGoKLTExMSBUSm0KLShUKSA2LjA4NzE1IFRqCi05MyBUSm0KLShBKSA3LjE5MyBUagotLTI1MCBUSm0KLShGUikgMTIuMTg0MyBUagotNDAgVEptCi0oT00pIDE2LjA0OTcgVGoKLS0yNTAgVEptCi0oRCkgNy4xOTMgVGoKLTQwIFRKbQotKEFNQSkgMjMuMjQyNyBUagotNDAgVEptCi0oR0VEKSAyMC40NzMxIFRqCi0tMjUwIFRKbQotKEZJTEVTKSAyNi41NzAzIFRqCi1bMSAwIDAgMSAyOTMuNDQ5IDU3Ni4wMTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5OC40MyAtNTc2LjAxMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzA4LjQ2NCA1NzYuMDEyIFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MTEuMTA4IDU3Ni4wMTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTExLjEwOCAtNTc2LjAxMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTExLjEwOCA1NzYuMDEyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDYpIDQuOTgxMyBUagotWzEgMCAwIDEgNTE2LjA5IDU3Ni4wMTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0wLjA5OTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMS44NTU3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01NjQuMDU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1NjQuMDU2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIuNy4pIDE0Ljk0MzkgVGoKLS0zMTAgVEptCi0oUEVSRk9STUFOQ0UpIDczLjYyMzYgVGoKLS0yNTAgVEptCi0oTk8pIDE0LjM4NiBUagotNDAgVEptCi0oVEVTKSAxNy43MTM1IFRqCi1bMSAwIDAgMSAxOTcuODQ3IDU2NC4wNTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwMi44MjkgLTU2NC4wNTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxMS45NTggNTY0LjA1NiBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNTY0LjA1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC01NjQuMDU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDU2NC4wNTYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNikgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNTY0LjA1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU1Mi4xMDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU1Mi4xMDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi44LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShDQSkgMTMuODM4MSBUagotMTM1IFRKbQotKFZFQSkgMjAuNDczMSBUagotMTExIFRKbQotKFRTKSAxMS42MjY0IFRqCi1bMSAwIDAgMSAxMzMuNTE5IDU1Mi4xMDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzOC41IC01NTIuMTAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDguNzk5IDU1Mi4xMDEgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNTUyLjEwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC01NTIuMTAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDU1Mi4xMDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNykgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNTUyLjEwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMDk5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjg1NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU0MC4xNDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU0MC4xNDYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMi45LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShBKSA3LjE5MyBUagotNTUgVEptCi0oVVRIT1IpIDM0LjMxMTIgVGoKLVsxIDAgMCAxIDEzMC45ODkgNTQwLjE0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTM1Ljk3IC01NDAuMTQ2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDUuMzIgNTQwLjE0NiBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNTQwLjE0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC01NDAuMTQ2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDU0MC4xNDYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNykgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNTQwLjE0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTAuMjE5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTIwLjAwMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTA4LjI2NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGlzKSAxNy43MTM1IFRqCi0tMjUwIFRKbQotKGNoYXB0ZXIpIDI5LjMxOTkgVGoKLS0yNTAgVEptCi0oY29udGFpbnMpIDMzLjIwNTMgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShjb3ApIDE0LjM4NiBUagotMTAgVEptCi0oeSkgNC45ODEzIFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotWzEgMCAwIDEgMjEzLjgzNyA1MDguMjY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxMy44MzcgLTUwOC4yNjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxMy44MzcgNTA4LjI2NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMjQzLjcyNSA1MDguMjY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0My43MjUgLTUwOC4yNjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI0Ni4yMTUgNTA4LjI2NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShtYW4pIDE3LjE1NTYgVGoKLS0yNTAgVEptCi0ocGFnZSwpIDIxLjMgVGoKLS0yNTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNTAgVEptCi0obm90aGluZykgMzAuNDQ1NyBUagotLTI1MCBUSm0KLShlbHNlLikgMTcuOTgyNSBUagotWzEgMCAwIDEgNzIgNTA2LjEwOV0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDk2LjE0Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDczLjUxMyBUZAotL0YxMjJfMCAyMC42NTg1IFRmCi0oMi4xLikgMzQuNDU4NCBUagotLTI3OCBUSm0KLShOQU1FKSA2MC44MTg2IFRqCi1bMSAwIDAgMSA3MiA0NzMuNTEzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMzEuODgwNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuOTczOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc4Ljk3MzkgLTQ0MS42MzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc4Ljk3MzkgNDQxLjYzMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMjI1KSAzLjQ4NjkxIFRqCi1bMSAwIDAgMSA4Mi40NjA4IDQ0MS42MzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtNDQxLjYzMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDQ0MS42MzIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDExNi44MzIgNDQxLjYzMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTYuODMyIC00NDEuNjMyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTYuODMyIDQ0MS42MzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMTIxLjgxMyA0NDEuNjMyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEyMS44MTMgLTQ0MS42MzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEyMS44MTMgNDQxLjYzMiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShidW56aXAyKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAxNjMuNjU2IDQ0MS42MzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTYzLjY1NiAtNDQxLjYzMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY2LjE0NyA0NDEuNjMyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC0pIDMuMzE3NTUgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShibG9jay1zb3J0aW5nKSA1My4xMzA1IFRqCi0tMjUwIFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI1MCBUSm0KLShjb21wcmVzc29yKSA0NS45Mjc2IFRqCi00MCBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjUwIFRKbQotKHYxLjAuNCkgMjQuOTA2NSBUagotWzEgMCAwIDEgMzI1LjEyOSA0NDEuNjMyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1My4xMjkgLTIxLjkxNzldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2Ljk3MzkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03OC45NzM5IC00MTkuNzE1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03OC45NzM5IDQxOS43MTUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDIyNSkgMy40ODY5MSBUagotWzEgMCAwIDEgODIuNDYwOCA0MTkuNzE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04Ni45NDQgLTQxOS43MTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCA0MTkuNzE1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6Y2F0KSAyOS44ODc4IFRqCi1bMSAwIDAgMSAxMTYuODMyIDQxOS43MTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE2LjgzMiAtNDE5LjcxNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE5LjMyMiA0MTkuNzE1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC0pIDMuMzE3NTUgVGoKLS0yNTAgVEptCi0oZGVjb21wcmVzc2VzKSA1NS4zMzIzIFRqCi0tMjUwIFRKbQotKFwwMDJsZXMpIDE2LjYwNzcgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShzdGRvdXQpIDI0LjM1ODYgVGoKLVsxIDAgMCAxIDIzNi42NTEgNDE5LjcxNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjQuNjUxIC0yMS45MTc4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi45NzM5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzguOTczOSAtMzk3Ljc5N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzguOTczOSAzOTcuNzk3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwyMjUpIDMuNDg2OTEgVGoKLVsxIDAgMCAxIDgyLjQ2MDggMzk3Ljc5N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS45OTI1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODYuOTQ0IC0zOTcuNzk3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgMzk3Ljc5NyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMnJlY292ZXIpIDcxLjczMDcgVGoKLVsxIDAgMCAxIDE1OC42NzUgMzk3Ljc5N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTguNjc1IC0zOTcuNzk3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjEuMTY2IDM5Ny43OTcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLSkgMy4zMTc1NSBUagotLTI1MCBUSm0KLShyZWNvKSAxNy4xNDU2IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVycykgMTEuNjE2NCBUagotLTI1MCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS0yNTAgVEptCi0oZGFtYWdlZCkgMzUuOTY1IFRqCi0tMjUwIFRKbQotKGJ6aXAyKSAyMi4xMzY5IFRqCi0tMjUwIFRKbQotKFwwMDJsZXMpIDE2LjYwNzcgVGoKLVsxIDAgMCAxIDMyMy41NDUgMzk3Ljc5N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNTEuNTQ1IC0xMi4xMTk1XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zNzUuNzE1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzNTMuMDgxIFRkCi0vRjEyMl8wIDIwLjY1ODUgVGYKLSgyLjIuKSAzNC40NTg0IFRqCi0tMjc4IFRKbQotKFNZTk9QU0lTKSAxMDUuNjI3IFRqCi1bMSAwIDAgMSA3MiAzNTIuODIzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMzEuNjIyM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuOTczOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc4Ljk3MzkgLTMyMS4yMDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc4Ljk3MzkgMzIxLjIwMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMjI1KSAzLjQ4NjkxIFRqCi1bMSAwIDAgMSA4Mi40NjA4IDMyMS4yMDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtMzIxLjIwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDMyMS4yMDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDExNi44MzIgMzIxLjIwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTYuODMyIC0zMjEuMjAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTkuMzIyIDMyMS4yMDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oWykgMy4zMTc1NSBUagotLTI1MCBUSm0KLSgtY2Rma3FzdHZ6VkwxMjM0NTY3ODkpIDEwMC4xNjQgVGoKLS0yNTAgVEptCi0oXSkgMy4zMTc1NSBUagotLTI1MCBUSm0KLShbKSAzLjMxNzU1IFRqCi0tMjUwIFRKbQotKFwwMDJsZW5hbWVzKSAzOC4xODY2IFRqCi0tMjUwIFRKbQotKC4uLikgNy40NzE5NSBUagotLTYyMCBUSm0KLShdKSAzLjMxNzU1IFRqCi1bMSAwIDAgMSAyOTcuMDQ1IDMyMS4yMDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjI1LjA0NSAtMjEuOTE3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuOTczOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc4Ljk3MzkgLTI5OS4yODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc4Ljk3MzkgMjk5LjI4MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMjI1KSAzLjQ4NjkxIFRqCi1bMSAwIDAgMSA4Mi40NjA4IDI5OS4yODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtMjk5LjI4M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDI5OS4yODMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnVuemlwMikgNDEuODQyOSBUagotWzEgMCAwIDEgMTI4Ljc4NyAyOTkuMjgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEyOC43ODcgLTI5OS4yODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzMS4yNzggMjk5LjI4MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShbKSAzLjMxNzU1IFRqCi0tMjUwIFRKbQotKC1ma3ZzVkwpIDMzLjc1MzMgVGoKLS0yNTAgVEptCi0oXSkgMy4zMTc1NSBUagotLTI1MCBUSm0KLShbKSAzLjMxNzU1IFRqCi0tMjUwIFRKbQotKFwwMDJsZW5hbWVzKSAzOC4xODY2IFRqCi0tMjUwIFRKbQotKC4uLikgNy40NzE5NSBUagotLTYyMCBUSm0KLShdKSAzLjMxNzU1IFRqCi1bMSAwIDAgMSAyNDIuNTg5IDI5OS4yODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTcwLjU4OSAtMjEuOTE3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuOTczOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc4Ljk3MzkgLTI3Ny4zNjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc4Ljk3MzkgMjc3LjM2NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMjI1KSAzLjQ4NjkxIFRqCi1bMSAwIDAgMSA4Mi40NjA4IDI3Ny4zNjVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtMjc3LjM2NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDI3Ny4zNjUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnpjYXQpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDExNi44MzIgMjc3LjM2NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTYuODMyIC0yNzcuMzY1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTkuMzIyIDI3Ny4zNjUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oWykgMy4zMTc1NSBUagotLTI1MCBUSm0KLSgtcykgNy4xOTMgVGoKLS0yNTAgVEptCi0oXSkgMy4zMTc1NSBUagotLTI1MCBUSm0KLShbKSAzLjMxNzU1IFRqCi0tMjUwIFRKbQotKFwwMDJsZW5hbWVzKSAzOC4xODY2IFRqCi0tMjUwIFRKbQotKC4uLikgNy40NzE5NSBUagotLTYyMCBUSm0KLShdKSAzLjMxNzU1IFRqCi1bMSAwIDAgMSAyMDQuMDc0IDI3Ny4zNjVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTMyLjA3NCAtMjEuOTE3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuOTczOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc4Ljk3MzkgLTI1NS40NDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc4Ljk3MzkgMjU1LjQ0NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMjI1KSAzLjQ4NjkxIFRqCi1bMSAwIDAgMSA4Mi40NjA4IDI1NS40NDddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtMjU1LjQ0N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDI1NS40NDcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDJyZWNvdmVyKSA3MS43MzA3IFRqCi1bMSAwIDAgMSAxNTguNjc1IDI1NS40NDddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU4LjY3NSAtMjU1LjQ0N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTYxLjE2NiAyNTUuNDQ3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwwMDJsZW5hbWUpIDM0LjMxMTIgVGoKLVsxIDAgMCAxIDE5NS40NzYgMjU1LjQ0N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMjMuNDc3IC0yMDQuNTk2XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljc1NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0My4wNjMzIC02Ljc1NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjMzMiAtNTAuODUxOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM5LjM5NSA1MC44NTE5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIpIDQuOTgxMyBUagotWzEgMCAwIDEgNDUzLjI2OSA1MC44NTE5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgOTMuNTk4NSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi4yNzY1IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotUQotc2hvd3BhZ2UKLSUlUGFnZVRyYWlsZXIKLXBkZkVuZFBhZ2UKLSUlUGFnZTogNiA2Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxMDUuNTE5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzcxLjU5IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NzcuMTA5IDc0OS4yNDUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSG8pIDEyLjE3NDMgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKGJ6aXAyKSAyMi4xMzY5IFRqCi1bMSAwIDAgMSAyNjYuMDcxIDc0Ny4wODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMjEuNTU0Ml0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNzIwXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA3MDQuOTMgVGQKLS9GMTIyXzAgMjAuNjU4NSBUZgotKDIuMy4pIDM0LjQ1ODQgVGoKLS0yNzggVEptCi0oREVTQ1JJUFRJT04pIDE0MS4xOCBUagotWzEgMCAwIDEgNzIgNzA0LjY3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjk0LjcwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjgzLjAxMiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMTAxLjg4OCA2ODMuMDEyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEwMS44ODggLTY4My4wMTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwNC41NiA2ODMuMDEyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGNvbXByZXNzZXMpIDQ1LjkyNzYgVGoKLS0yNjggVEptCi0oXDAwMmxlcykgMTYuNjA3NyBUagotLTI2OCBUSm0KLSh1c2luZykgMjEuNTg5IFRqCi0tMjY4IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI2OSBUSm0KLShCdXJybykgMjMuMjQyNyBUagotMjUgVEptCi0od3MtV2hlZWxlcikgNDguMTI5MyBUagotLTI2OCBUSm0KLShibG9jaykgMjIuMTM2OSBUagotLTI2OCBUSm0KLShzb3J0aW5nKSAyNy42NzYxIFRqCi0tMjY4IFRKbQotKHRlKSA3LjE5MyBUagotMTUgVEptCi0oeHQpIDcuNzUwOSBUagotLTI2OCBUSm0KLShjb21wcmVzc2lvbikgNTAuMzYwOSBUagotLTI2OCBUSm0KLShhbGdvcml0aG0sKSA0MS4yMzUyIFRqCi0tMjczIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjY4IFRKbQotKEh1ZikgMTUuNDkxOCBUagotMjUgVEptCi0oZm1hbikgMjAuNDczMSBUagotLTI2OSBUSm0KLShjKSA0LjQyMzM5IFRqCi0xIFRKbQotKG9kKSA5Ljk2MjYgVGoKLS0xIFRKbQotKGkpIDIuNzY5NiBUagotMSBUSm0KLShuZy4pIDEyLjQ1MzMgVGoKLTcyIDY3MS4wNTcgVGQKLShDb21wcmVzc2lvbikgNTIuNTgyNiBUagotLTIwMyBUSm0KLShpcykgNi42NDUwNSBUagotLTIwNCBUSm0KLShnZW5lcmFsbHkpIDM3LjA3MDggVGoKLS0yMDMgVEptCi0oY29uc2lkZXJhYmx5KSA1MC45MDg5IFRqCi0tMjAzIFRKbQotKGJldHRlcikgMjIuNjg0OCBUagotLTIwNCBUSm0KLSh0KSAyLjc2OTYgVGoKLTEgVEptCi0oaGFuKSAxNC4zODYgVGoKLS0yMDQgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTIwMyBUSm0KLShhY2hpZSkgMjEuMDIxMSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlZCkgOS40MDQ2OSBUagotLTIwMyBUSm0KLShieSkgOS45NjI2IFRqCi0tMjA0IFRKbQotKG1vcmUpIDIwLjQ3MzEgVGoKLS0yMDMgVEptCi0oY29uKSAxNC4zODYgVGoKLTQwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW50aW9uYWwpIDMyLjA5OTUgVGoKLS0yMDMgVEptCi0oTFo3Ny9MWjc4LWJhc2VkKSA3My4wNDU4IFRqCi0tMjA0IFRKbQotKGNvbXByZXNzb3JzLCkgNTIuMjkzNyBUagotNzIgNjU5LjEwMSBUZAotKGFuZCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKGFwcHJvYWNoZXMpIDQ0LjgxMTggVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHBlcmZvcm1hbmNlKSA1MC4zNDEgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKFBQTSkgMTkuOTM1MiBUagotLTI1MCBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhbWlseSkgMjIuNjk0OCBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShzdGF0aXN0aWNhbCkgMzcuNjM4NyBUagotLTI1MCBUSm0KLShjb21wcmVzc29ycy4pIDUyLjI5MzcgVGoKLVsxIDAgMCAxIDcyIDY1Ni45NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY0Ni45ODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYzNy4xODQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oVGhlKSAxNS40OTE4IFRqCi0tMjUwIFRKbQotKGNvbW1hbmQtbGluZSkgNTcuNTUzOSBUagotLTI1MCBUSm0KLShvcHRpb25zKSAyOS4zMzk5IFRqCi0tMjUwIFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTI1MCBUSm0KLShkZWxpYmVyYXRlbHkpIDQ3LjAzMzQgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnkpIDEyLjcyMjIgVGoKLS0yNTAgVEptCi0oc2ltaWxhcikgMjcuNjc2MSBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKHRob3NlKSAyMS4wMzEgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0oR05VKSAyMS41NzkgVGoKLVsxIDAgMCAxIDM2NC44NjkgNjM3LjE4NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNjQuODY5IC02MzcuMTg0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNjQuODY5IDYzNy4xODQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZ3ppcCkgMjMuOTEwMiBUagotWzEgMCAwIDEgMzg4Ljc3OSA2MzcuMTg0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM4OC43NzkgLTYzNy4xODRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM4OC43NzkgNjM3LjE4NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMjUwIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI1MCBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yNTAgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMjUwIFRKbQotKGlkZW50aWNhbC4pIDM2LjgwMTggVGoKLVsxIDAgMCAxIDcyIDYzNS4wMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYyNS4wNjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYxNS4yNjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDEwMS44ODggNjE1LjI2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMDEuODg4IC02MTUuMjY2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDUuMTc1IDYxNS4yNjYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeHBlY3RzKSAyNS40NTQ0IFRqCi0tMzMwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zMzAgVEptCi0obGlzdCkgMTIuMTg0MyBUagotLTMzMCBUSm0KLShvZikgOC4yOTg4NSBUagotLTMzMCBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0zMjkgVEptCi0obmFtZXMpIDI1LjQ1NDQgVGoKLS0zMzAgVEptCi0odG8pIDcuNzUwOSBUagotLTMzMCBUSm0KLShhY2NvbXBhbikgNDAuMzg4NCBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMzMwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMzMCBUSm0KLShjb21tYW5kLWxpbmUpIDU3LjU1MzkgVGoKLS0zMzAgVEptCi0oXDAwM2Fncy4pIDIxLjMxIFRqCi0tMTA5OSBUSm0KLShFYWNoKSAxOS45MTUyIFRqCi0tMzMwIFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTMzMCBUSm0KLShpcykgNi42NDUwNSBUagotLTMzMCBUSm0KLShyZXBsYWNlZCkgMzMuNzQzMyBUagotLTMzMCBUSm0KLShieSkgOS45NjI2IFRqCi0tMzMwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zMzAgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotNzIgNjAzLjMxMSBUZAotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9uKSAyNC4zNDg2IFRqCi0tMzQ5IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzQ4IFRKbQotKGl0c2VsZiwpIDIyLjQxNTkgVGoKLS0zNzMgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTM0OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNDkgVEptCi0obmFtZSkgMjEuNTc5IFRqCi1bMSAwIDAgMSAyMDQuNDQ0IDYwMy4zMTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjA0LjQ0NCAtNjAzLjMxMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjA0LjQ0NCA2MDMuMzExIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKG9yaWdpbmFsX25hbWUuYnoyKSAxMDEuNjE5IFRqCi1bMSAwIDAgMSAzMDYuMDYzIDYwMy4zMTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzA2LjA2MyAtNjAzLjMxMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzA2LjA2MyA2MDMuMzExIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC4pIDIuNDkwNjUgVGoKLS0xMjEyIFRKbQotKEVhY2gpIDE5LjkxNTIgVGoKLS0zNDggVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTM0OSBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0zNDggVEptCi0oaGFzKSAxMy4yODAxIFRqCi0tMzQ5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM0OCBUSm0KLShzYW1lKSAyMC40NzMxIFRqCi0tMzQ5IFRKbQotKG1vZGlcMDAyY2F0aW9uKSA1MC4zNzA5IFRqCi0tMzQ5IFRKbQotKGRhdGUsKSAxOS4wODgzIFRqCi03MiA1OTEuMzU2IFRkCi0ocGVybWlzc2lvbnMsKSA1MC4wOTIgVGoKLS0zNDQgVEptCi0oYW5kLCkgMTYuODc2NiBUagotLTM0NCBUSm0KLSh3aGVuKSAyMS41NzkgVGoKLS0zMjUgVEptCi0ocG9zc2libGUsKSAzNS4xNDgxIFRqCi0tMzQ0IFRKbQotKG8pIDQuOTgxMyBUagotMjUgVEptCi0od25lcnNoaXApIDM2LjUyMjkgVGoKLS0zMjUgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0zMjUgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzI2IFRKbQotKGNvcnJlc3BvbmRpbmcpIDU2Ljk5NiBUagotLTMyNSBUSm0KLShvcmlnaW5hbCwpIDMzLjQ4NDMgVGoKLS0zNDQgVEptCi0oc28pIDguODU2NzUgVGoKLS0zMjUgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTMyNSBUSm0KLSh0aGVzZSkgMjAuNDczMSBUagotLTMyNSBUSm0KLShwcm9wZXJ0aWVzKSAzOS44NDA0IFRqCi0tMzI1IFRKbQotKGNhbikgMTMuODI4MSBUagotLTMyNiBUSm0KLShiZSkgOS40MDQ2OSBUagotLTMyNSBUSm0KLShjb3JyZWN0bHkpIDM1LjQwNzEgVGoKLTcyIDU3OS40IFRkCi0ocmVzdG9yZWQpIDMyLjA4OTUgVGoKLS0zMDggVEptCi0oYXQpIDcuMTkzIFRqCi0tMzA4IFRKbQotKGRlY29tcHJlc3Npb24pIDU5Ljc2NTYgVGoKLS0zMDcgVEptCi0odGltZS4pIDIwLjIwNDIgVGoKLS00ODQgVEptCi0oRmlsZSkgMTUuNTAxOCBUagotLTMwOCBUSm0KLShuYW1lKSAyMS41NzkgVGoKLS0zMDggVEptCi0oaGFuZGxpbmcpIDM0Ljg2OTEgVGoKLS0zMDggVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0zMDcgVEptCi0obmFpKSAxMi4xNzQzIFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0zMDggVEptCi0oaW4pIDcuNzUwOSBUagotLTMwOCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDggVEptCi0oc2Vuc2UpIDIxLjU3OSBUagotLTMwOCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMzA4IFRKbQotKHRoZXJlKSAxOS45MTUyIFRqCi0tMzA3IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzA4IFRKbQotKG5vKSA5Ljk2MjYgVGoKLS0zMDggVEptCi0obWVjaGFuaXNtKSA0NS4zNzk2IFRqCi0tMzA4IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTMwOCBUSm0KLShwcmVzZXJ2aW5nKSA0Mi4wNTIxIFRqCi03MiA1NjcuNDQ1IFRkCi0ob3JpZ2luYWwpIDMwLjk5MzYgVGoKLS0zMzQgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMzMzIFRKbQotKG5hbWVzLCkgMjcuOTQ1MSBUagotLTM1NSBUSm0KLShwZXJtaXNzaW9ucywpIDUwLjA5MiBUagotLTM1NSBUSm0KLShvKSA0Ljk4MTMgVGoKLTI1IFRKbQotKHduZXJzaGlwcykgNDAuMzk4MyBUagotLTMzMyBUSm0KLShvcikgOC4yOTg4NSBUagotLTMzNCBUSm0KLShkYXRlcykgMjAuNDczMSBUagotLTMzNCBUSm0KLShpbikgNy43NTA5IFRqCi0tMzMzIFRKbQotKFwwMDJsZXN5c3RlbXMpIDQ0LjI4MzggVGoKLS0zMzQgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0zMzQgVEptCi0obGFjaykgMTYuNTk3NyBUagotLTMzMyBUSm0KLSh0aGVzZSkgMjAuNDczMSBUagotLTMzNCBUSm0KLShjb25jZXB0cywpIDM3LjM0OTggVGoKLS0zNTUgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0zMzMgVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTMzNCBUSm0KLShzZXJpb3VzKSAyOC4yMjQgVGoKLS0zMzQgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi03MiA1NTUuNDkgVGQKLShuYW1lKSAyMS41NzkgVGoKLS0yNTAgVEptCi0obGVuZ3RoKSAyNC45MDY1IFRqCi0tMjUwIFRKbQotKHJlc3RyaWN0aW9ucywpIDQ2Ljc2NDQgVGoKLS0yNTAgVEptCi0oc3VjaCkgMTguMjYxNCBUagotLTI1MCBUSm0KLShhcykgOC4yOTg4NSBUagotLTI1MCBUSm0KLShNUy1ET1MuKSA0MC4xMjk0IFRqCi1bMSAwIDAgMSA3MiA1NTMuMzMzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01NDMuMzcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1MzMuNTcyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAxMDEuODg4IDUzMy41NzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTAxLjg4OCAtNTMzLjU3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA0LjM3OSA1MzMuNTcyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAxMjEuMjU1IDUzMy41NzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTIxLjI1NSAtNTMzLjU3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTIxLjI1NSA1MzMuNTcyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ1bnppcDIpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDE2My4wOTggNTMzLjU3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjMuMDk4IC01MzMuNTcyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjUuNTg5IDUzMy41NzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0od2lsbCkgMTUuNTAxOCBUagotLTI1MCBUSm0KLShieSkgOS45NjI2IFRqCi0tMjUwIFRKbQotKGRlZikgMTIuNzIyMiBUagotMTAgVEptCi0oYXVsdCkgMTQuOTQzOSBUagotLTI1MCBUSm0KLShub3QpIDEyLjczMjIgVGoKLS0yNTAgVEptCi0obykgNC45ODEzIFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyd3JpdGUpIDI4LjIxNDEgVGoKLS0yNTAgVEptCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeGlzdGluZykgMjcuMTI4MiBUagotLTI1MCBUSm0KLShcMDAybGVzLikgMTkuMDk4MyBUagotLTYyMCBUSm0KLShJZikgNi42MzUwOSBUagotLTI1MCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFudCkgMTIuMTc0MyBUagotLTI1MCBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShoYXBwZW4sKSAzMS4yNjI2IFRqCi0tMjUwIFRKbQotKHNwZWNpZnkpIDI4Ljc3MiBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLVsxIDAgMCAxIDQ5NS45NzcgNTMzLjU3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTUuOTc3IC01MzMuNTcyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTUuOTc3IDUzMy41NzIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLWYpIDExLjk1NTEgVGoKLVsxIDAgMCAxIDUwNy45MzIgNTMzLjU3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDcuOTMyIC01MzMuNTcyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTAuNDIzIDUzMy41NzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDAwM2FnLikgMTcuNDM0NiBUagotWzEgMCAwIDEgNzIgNTMxLjQxNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTIxLjQ1M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTExLjY1NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJZikgNi42MzUwOSBUagotLTI4NCBUSm0KLShubykgOS45NjI2IFRqCi0tMjg1IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI4NCBUSm0KLShuYW1lcykgMjUuNDU0NCBUagotLTI4NCBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yODQgVEptCi0oc3BlY2lcMDAyZWQsKSAzNy45MDc3IFRqCi1bMSAwIDAgMSAxOTMuOTM1IDUxMS42NTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTkzLjkzNSAtNTExLjY1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTkzLjkzNSA1MTEuNjU0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAyMjMuODIzIDUxMS42NTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjIzLjgyMyAtNTExLjY1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjI2LjY1NSA1MTEuNjU0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGNvbXByZXNzZXMpIDQ1LjkyNzYgVGoKLS0yODQgVEptCi0oZnJvbSkgMTkuMzY3MyBUagotLTI4NSBUSm0KLShzdGFuZGFyZCkgMzMuNzUzMyBUagotLTI4NCBUSm0KLShpbnB1dCkgMjAuNDgzMSBUagotLTI4NCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjg0IFRKbQotKHN0YW5kYXJkKSAzMy43NTMzIFRqCi0tMjg1IFRKbQotKG91dHB1dC4pIDI3Ljk1NTEgVGoKLS04MjUgVEptCi0oSW4pIDguMjk4ODUgVGoKLS0yODUgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjg0IFRKbQotKGNhc2UsKSAxOS42MzYzIFRqCi1bMSAwIDAgMSA0OTEuNzc4IDUxMS42NTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkxLjc3OCAtNTExLjY1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDkxLjc3OCA1MTEuNjU0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSA1MjEuNjY2IDUxMS42NTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTIxLjY2NiAtNTExLjY1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTI0LjQ5OSA1MTEuNjU0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLTcyIDQ5OS42OTkgVGQKLShkZWNsaW5lKSAyOC43NzIgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLSh3cml0ZSkgMjAuNDczMSBUagotLTI1MCBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjUwIFRKbQotKG91dHB1dCkgMjUuNDY0NCBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0odGVybWluYWwsKSAzNS42OTYgVGoKLS0yNTAgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjUwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvdWxkKSAxNy43MTM1IFRqCi0tMjUwIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKGVudGlyZWx5KSAzMC40MzU3IFRqCi0tMjUwIFRKbQotKGluY29tcHJlaGVuc2libGUpIDcwLjgzNDEgVGoKLS0yNTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNTAgVEptCi0odGhlcmVmb3JlKSAzNS45NTUgVGoKLS0yNTAgVEptCi0ocG9pbnRsZXNzLikgMzcuOTE3NyBUagotWzEgMCAwIDEgNzIgNDk3LjU0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDg3LjU4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NzcuNzgxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ1bnppcDIpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDExMy44NDMgNDc3Ljc4MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTMuODQzIC00NzcuNzgxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTYuMTc2IDQ3Ny43ODEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXChvcikgMTEuNjE2NCBUagotWzEgMCAwIDEgMTMwLjEyNSA0NzcuNzgxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzMC4xMjUgLTQ3Ny43ODFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzMC4xMjUgNDc3Ljc4MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotLTYwMCBUSm0KLSgtZCkgMTEuOTU1MSBUagotWzEgMCAwIDEgMTc3Ljk0NiA0NzcuNzgxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3Ny45NDYgLTQ3Ny43ODFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3Ny45NDYgNDc3Ljc4MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcKSkgMy4zMTc1NSBUagotLTIzNCBUSm0KLShkZWNvbXByZXNzZXMpIDU1LjMzMjMgVGoKLS0yMzQgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS0yMzQgVEptCi0oc3BlY2lcMDAyZWQpIDM1LjQxNyBUagotLTIzNSBUSm0KLShcMDAybGVzLikgMTkuMDk4MyBUagotLTYwOSBUSm0KLShGaWxlcykgMTkuMzc3MyBUagotLTIzNCBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTIzNCBUSm0KLSh3ZXJlKSAxOS4zNTczIFRqCi0tMjM0IFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTIzNSBUSm0KLShjcmVhdGVkKSAyOC43NjIgVGoKLS0yMzQgVEptCi0oYnkpIDkuOTYyNiBUagotWzEgMCAwIDEgNDQ1LjAxMiA0NzcuNzgxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NS4wMTIgLTQ3Ny43ODFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ0NS4wMTIgNDc3Ljc4MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgNDc0LjkgNDc3Ljc4MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzQuOSAtNDc3Ljc4MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDc3LjIzMyA0NzcuNzgxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLS0yMzQgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yMzQgVEptCi0oZGV0ZWN0ZWQpIDMzLjE5NTQgVGoKLTcyIDQ2NS44MjYgVGQKLShhbmQpIDE0LjM4NiBUagotLTI4MCBUSm0KLShpKSAyLjc2OTYgVGoKLTEgVEptCi0oZ25vcmVkLCkgMzAuMTU2OCBUagotLTI4NyBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI4MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjc5IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhcm5pbmcpIDI1LjQ1NDQgVGoKLS0yODAgVEptCi0oaXNzdWVkLikgMjcuMzk3MiBUagotWzEgMCAwIDEgMjE2LjAzMyA0NjUuODI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxNi4wMzMgLTQ2NS44MjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxNi4wMzMgNDY1LjgyNiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMjQ1LjkyMSA0NjUuODI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0NS45MjEgLTQ2NS44MjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI0OC43MDUgNDY1LjgyNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhdHRlbXB0cykgMzMuNzYzMyBUagotLTI3OSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjgwIFRKbQotKGd1ZXNzKSAyMi4xMzY5IFRqCi0tMjc5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI4MCBUSm0KLShcMDAybGVuYW1lKSAzNC4zMTEyIFRqCi0tMjc5IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI4MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNzkgVEptCi0oZGVjb21wcmVzc2VkKSA1Ni40MzgxIFRqCi0tMjgwIFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI3OSBUSm0KLShmcm9tKSAxOS4zNjczIFRqCi0tMjgwIFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0yNzkgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yODAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi03MiA0NTMuODcxIFRkCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI1MCBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yNTAgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0oZm9sbG8pIDE4LjgxOTQgVGoKLTI1IFRKbQotKHdzOikgMTMuODM4MSBUagotWzEgMCAwIDEgNzIgNDUxLjcxNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTI5LjcyMzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2Ljk3MzkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03OC45NzM5IC00MjEuOTkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03OC45NzM5IDQyMS45OTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDIyNSkgMy40ODY5MSBUagotWzEgMCAwIDEgODIuNDYwOCA0MjEuOTkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04Ni45NDQgLTQyMS45OTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCA0MjEuOTkxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGZpbGVuYW1lLmJ6MikgNzEuNzMwNyBUagotWzEgMCAwIDEgMTY0LjY1MyA0MjEuOTkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2NC42NTMgLTQyMS45OTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE2Ny4xNDMgNDIxLjk5MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShiZWNvbWVzKSAzNC44NTkxIFRqCi1bMSAwIDAgMSAyMDQuNDkzIDQyMS45OTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjA0LjQ5MyAtNDIxLjk5MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjA0LjQ5MyA0MjEuOTkxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGZpbGVuYW1lKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSAyNTIuMzEzIDQyMS45OTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTgwLjMxMyAtMjEuOTE3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuOTczOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc4Ljk3MzkgLTQwMC4wNzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc4Ljk3MzkgNDAwLjA3MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMjI1KSAzLjQ4NjkxIFRqCi1bMSAwIDAgMSA4Mi40NjA4IDQwMC4wNzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtNDAwLjA3M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDQwMC4wNzMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZmlsZW5hbWUuYnopIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDE1OC42NzUgNDAwLjA3M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTguNjc1IC00MDAuMDczXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjEuMTY2IDQwMC4wNzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYmVjb21lcykgMzQuODU5MSBUagotWzEgMCAwIDEgMTk4LjUxNSA0MDAuMDczXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5OC41MTUgLTQwMC4wNzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5OC41MTUgNDAwLjA3MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmaWxlbmFtZSkgNDcuODIwNSBUagotWzEgMCAwIDEgMjQ2LjMzNiA0MDAuMDczXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3NC4zMzYgLTIxLjkxNzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2Ljk3MzkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03OC45NzM5IC0zNzguMTU1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03OC45NzM5IDM3OC4xNTUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDIyNSkgMy40ODY5MSBUagotWzEgMCAwIDEgODIuNDYwOCAzNzguMTU1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04Ni45NDQgLTM3OC4xNTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCAzNzguMTU1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGZpbGVuYW1lLnRiejIpIDc3LjcwODMgVGoKLVsxIDAgMCAxIDE2NC42NTMgMzc4LjE1NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjQuNjUzIC0zNzguMTU1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjcuMTQzIDM3OC4xNTUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYmVjb21lcykgMzQuODU5MSBUagotWzEgMCAwIDEgMjA0LjQ5MyAzNzguMTU1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwNC40OTMgLTM3OC4xNTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwNC40OTMgMzc4LjE1NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmaWxlbmFtZS50YXIpIDcxLjczMDcgVGoKLVsxIDAgMCAxIDI3Ni4yMjQgMzc4LjE1NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDQuMjI0IC0yMS45MTc4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi45NzM5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzguOTczOSAtMzU2LjIzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzguOTczOSAzNTYuMjM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwyMjUpIDMuNDg2OTEgVGoKLVsxIDAgMCAxIDgyLjQ2MDggMzU2LjIzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS45OTI1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODYuOTQ0IC0zNTYuMjM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgMzU2LjIzNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmaWxlbmFtZS50YnopIDcxLjczMDcgVGoKLVsxIDAgMCAxIDE2NC42NTMgMzU2LjIzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjQuNjUzIC0zNTYuMjM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjcuMTQzIDM1Ni4yMzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYmVjb21lcykgMzQuODU5MSBUagotWzEgMCAwIDEgMjA0LjQ5MyAzNTYuMjM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwNC40OTMgLTM1Ni4yMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwNC40OTMgMzU2LjIzNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmaWxlbmFtZS50YXIpIDcxLjczMDcgVGoKLVsxIDAgMCAxIDI3Ni4yMjQgMzU2LjIzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDQuMjI0IC0yMS45MTc4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi45NzM5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzguOTczOSAtMzM0LjMxOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzguOTczOSAzMzQuMzE5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwyMjUpIDMuNDg2OTEgVGoKLVsxIDAgMCAxIDgyLjQ2MDggMzM0LjMxOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS45OTI1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODYuOTQ0IC0zMzQuMzE5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgMzM0LjMxOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShhbnlvdGhlcm5hbWUpIDcxLjczMDcgVGoKLVsxIDAgMCAxIDE2NC42NTMgMzM0LjMxOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjQuNjUzIC0zMzQuMzE5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjcuMTQzIDMzNC4zMTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYmVjb21lcykgMzQuODU5MSBUagotWzEgMCAwIDEgMjA0LjQ5MyAzMzQuMzE5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwNC40OTMgLTMzNC4zMTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwNC40OTMgMzM0LjMxOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShhbnlvdGhlcm5hbWUub3V0KSA5NS42NDEgVGoKLVsxIDAgMCAxIDMwMC4xMzQgMzM0LjMxOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMjguMTM0IC0xMS40OTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zMjIuODIzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzMTIuNDAyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKElmKSA2LjYzNTA5IFRqCi0tMzQyIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM0MiBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0zNDIgVEptCi0oZG9lcykgMTguMjYxNCBUagotLTM0MiBUSm0KLShub3QpIDEyLjczMjIgVGoKLS0zNDMgVEptCi0oZW5kKSAxNC4zODYgVGoKLS0zNDIgVEptCi0oaW4pIDcuNzUwOSBUagotLTM0MiBUSm0KLShvbmUpIDE0LjM4NiBUagotLTM0MiBUSm0KLShvZikgOC4yOTg4NSBUagotLTM0MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNDIgVEptCi0ocmVjb2duaXNlZCkgNDMuMTU4IFRqCi0tMzQyIFRKbQotKGVuZGluZ3MsKSAzMy40ODQzIFRqCi1bMSAwIDAgMSAzMDkuMzA1IDMxMi40MDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzA5LjMwNSAtMzEyLjQwMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzA5LjMwNSAzMTIuNDAyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC5iejIpIDIzLjkxMDIgVGoKLVsxIDAgMCAxIDMzMy4yMTUgMzEyLjQwMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMzMuMjE1IC0zMTIuNDAyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMzMuMjE1IDMxMi40MDIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMzM5LjM0NCAzMTIuNDAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzOS4zNDQgLTMxMi40MDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzOS4zNDQgMzEyLjQwMiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSguYnopIDE3LjkzMjcgVGoKLVsxIDAgMCAxIDM1Ny4yNzYgMzEyLjQwMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNTcuMjc2IC0zMTIuNDAyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNTcuMjc2IDMxMi40MDIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMzYzLjQwNSAzMTIuNDAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM2My40MDUgLTMxMi40MDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM2My40MDUgMzEyLjQwMiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgudGJ6MikgMjkuODg3OCBUagotWzEgMCAwIDEgMzkzLjI5MyAzMTIuNDAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM5My4yOTMgLTMxMi40MDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM5Ni43MDEgMzEyLjQwMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShvcikgOC4yOTg4NSBUagotWzEgMCAwIDEgNDA4LjQwOSAzMTIuNDAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQwOC40MDkgLTMxMi40MDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQwOC40MDkgMzEyLjQwMiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgudGJ6KSAyMy45MTAyIFRqCi1bMSAwIDAgMSA0MzIuMzE5IDMxMi40MDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDMyLjMxOSAtMzEyLjQwMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDMyLjMxOSAzMTIuNDAyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDQzOC40NDggMzEyLjQwMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MzguNDQ4IC0zMTIuNDAyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MzguNDQ4IDMxMi40MDIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDQ2OC4zMzYgMzEyLjQwMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjguMzM2IC0zMTIuNDAyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NzEuNzQ0IDMxMi40MDIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oY29tcGxhaW5zKSA0MC45NTYyIFRqCi0tMzQyIFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0zNDIgVEptCi0oaXQpIDUuNTM5MjEgVGoKLTcyIDMwMC40NDYgVGQKLShjYW5ub3QpIDI2LjU2MDMgVGoKLS0yNTAgVEptCi0oZ3Vlc3MpIDIyLjEzNjkgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKG5hbWUpIDIxLjU3OSBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0ob3JpZ2luYWwpIDMwLjk5MzYgVGoKLS0yNTAgVEptCi0oXDAwMmxlLCkgMTUuMjIyOSBUagotLTI1MCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI1MCBUSm0KLSh1c2VzKSAxNy4xNTU2IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShvcmlnaW5hbCkgMzAuOTkzNiBUagotLTI1MCBUSm0KLShuYW1lKSAyMS41NzkgVGoKLS0yNTAgVEptCi0od2l0aCkgMTcuNzEzNSBUagotWzEgMCAwIDEgMzcwLjAwOSAzMDAuNDQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM3MC4wMDkgLTMwMC40NDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM3MC4wMDkgMzAwLjQ0NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgub3V0KSAyMy45MTAyIFRqCi1bMSAwIDAgMSAzOTMuOTIgMzAwLjQ0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTMuOTIgLTMwMC40NDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM5Ni40MSAzMDAuNDQ2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFwcGVuZGVkLikgNDAuNjY3MyBUagotWzEgMCAwIDEgNzIgMjk4LjI5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yODguMzI3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyNzguNTI5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEFzKSAxMS4wNjg0IFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yNTAgVEptCi0oY29tcHJlc3Npb24sKSA1Mi44NTE2IFRqCi0tMjUwIFRKbQotKHN1cHBseWluZykgMzkuMzAyNSBUagotLTI1MCBUSm0KLShubykgOS45NjI2IFRqCi0tMjUwIFRKbQotKFwwMDJsZW5hbWVzKSAzOC4xODY2IFRqCi0tMjUwIFRKbQotKGNhdXNlcykgMjYuMDAyNCBUagotLTI1MCBUSm0KLShkZWNvbXByZXNzaW9uKSA1OS43NjU2IFRqCi0tMjUwIFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS0yNTAgVEptCi0oc3RhbmRhcmQpIDMzLjc1MzMgVGoKLS0yNTAgVEptCi0oaW5wdXQpIDIwLjQ4MzEgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShzdGFuZGFyZCkgMzMuNzUzMyBUagotLTI1MCBUSm0KLShvdXRwdXQuKSAyNy45NTUxIFRqCi1bMSAwIDAgMSA3MiAyNzYuMzcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yNjYuNDA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyNTYuNjExIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ1bnppcDIpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDExMy44NDMgMjU2LjYxMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTMuODQzIC0yNTYuNjExXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTYuNDA5IDI1Ni42MTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0od2lsbCkgMTUuNTAxOCBUagotLTI1NyBUSm0KLShjb3JyZWN0bHkpIDM1LjQwNzEgVGoKLS0yNTggVEptCi0oZGVjb21wcmVzcykgNDcuMDMzNCBUagotLTI1NyBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjU4IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI1NyBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTI1OCBUSm0KLShpcykgNi42NDUwNSBUagotLTI1OCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTcgVEptCi0oY29uY2F0ZW5hdGlvbikgNTUuMzMyMyBUagotLTI1OCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1NyBUSm0KLSh0dykgOS45NjI2IFRqCi0xMCBUSm0KLShvKSA0Ljk4MTMgVGoKLS0yNTggVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yNTcgVEptCi0obW9yZSkgMjAuNDczMSBUagotLTI1OCBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjU3IFRKbQotKFwwMDJsZXMuKSAxOS4wOTgzIFRqCi0tNjY1IFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTI1OCBUSm0KLShyZXN1bHQpIDIyLjEzNjkgVGoKLS0yNTcgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLTcyIDI0NC42NTYgVGQKLSh0aGUpIDEyLjE3NDMgVGoKLS0yMzkgVEptCi0oY29uY2F0ZW5hdGlvbikgNTUuMzMyMyBUagotLTIzOCBUSm0KLShvZikgOC4yOTg4NSBUagotLTIzOSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMzkgVEptCi0oY29ycmVzcG9uZGluZykgNTYuOTk2IFRqCi0tMjM5IFRKbQotKHVuY29tcHJlc3NlZCkgNTYuOTk2IFRqCi0tMjM4IFRKbQotKFwwMDJsZXMuKSAxOS4wOTgzIFRqCi0tNjEzIFRKbQotKEludGUpIDE1LjQ5MTggVGoKLTE1IFRKbQotKGdyaXR5KSAxOC44MTk0IFRqCi0tMjM4IFRKbQotKHRlc3RpbmcpIDI2LjU3MDMgVGoKLS0yMzkgVEptCi0oXCgpIDMuMzE3NTUgVGoKLVsxIDAgMCAxIDM4Mi4yNDcgMjQ0LjY1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zODIuMjQ3IC0yNDQuNjU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zODIuMjQ3IDI0NC42NTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLXQpIDExLjk1NTEgVGoKLVsxIDAgMCAxIDM5NC4yMDIgMjQ0LjY1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTQuMjAyIC0yNDQuNjU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zOTQuMjAyIDI0NC42NTYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXCkpIDMuMzE3NTUgVGoKLS0yMzkgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yMzggVEptCi0oY29uY2F0ZW5hdGVkKSA1Mi4wMDQ4IFRqCi0tMjM5IFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yMzkgVEptCi0oXDAwMmxlcykgMTYuNjA3NyBUagotLTIzOSBUSm0KLShpcykgNi42NDUwNSBUagotNzIgMjMyLjcgVGQKLShhbHNvKSAxNi4wNDk3IFRqCi0tMjUwIFRKbQotKHN1cHBvcnRlZC4pIDQxLjc4MzEgVGoKLVsxIDAgMCAxIDcyIDIzMC41NDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIyMC41ODFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDIxMC43ODMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oWSkgNy4xOTMgVGoKLTExMCBUSm0KLShvdSkgOS45NjI2IFRqCi0tMzk5IFRKbQotKGNhbikgMTMuODI4MSBUagotLTM5OSBUSm0KLShhbHNvKSAxNi4wNDk3IFRqCi0tMzk5IFRKbQotKGNvbXByZXNzKSAzNy42Mjg3IFRqCi0tNDAwIFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMzk5IFRKbQotKGRlY29tcHJlc3MpIDQ3LjAzMzQgVGoKLS0zOTkgVEptCi0oXDAwMmxlcykgMTYuNjA3NyBUagotLTM5OSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzk5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM5OSBUSm0KLShzdGFuZGFyZCkgMzMuNzUzMyBUagotLTM5OSBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS0zOTkgVEptCi0oYnkpIDkuOTYyNiBUagotLTQwMCBUSm0KLShnaSkgNy43NTA5IFRqCi0yNSBUSm0KLSh2aW5nKSAxNy43MTM1IFRqCi0tMzk5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotWzEgMCAwIDEgNDA5LjY3IDIxMC43ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDA5LjY3IC0yMTAuNzgzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MDkuNjcgMjEwLjc4MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgtYykgMTEuOTU1MSBUagotWzEgMCAwIDEgNDIxLjYyNSAyMTAuNzgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQyMS42MjUgLTIxMC43ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQyNS42MDIgMjEwLjc4MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMDAzYWcuKSAxNy40MzQ2IFRqCi0tNzU3IFRKbQotKE11bHRpcGxlKSAzNC4zMjEyIFRqCi0tNDAwIFRKbQotKFwwMDJsKSA4LjMwODgxIFRqCi0xIFRKbQotKGVzKSA4LjI5ODg1IFRqCi0tNDAwIFRKbQotKG1heSkgMTcuMTU1NiBUagotLTM5OSBUSm0KLShiZSkgOS40MDQ2OSBUagotNzIgMTk4LjgyOCBUZAotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0zNjcgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0zNjcgVEptCi0oZGVjb21wcmVzc2VkKSA1Ni40MzgxIFRqCi0tMzY3IFRKbQotKGxpaykgMTAuNTIwNSBUagotMTAgVEptCi0oZSkgNC40MjMzOSBUagotLTM2NyBUSm0KLSh0aGlzLikgMTYuODg2NiBUagotLTEzMjEgVEptCi0oVGhlKSAxNS40OTE4IFRqCi0tMzY3IFRKbQotKHJlc3VsdGluZykgMzQuODY5MSBUagotLTM2NyBUSm0KLShvdXRwdXRzKSAyOS4zMzk5IFRqCi0tMzY3IFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTM2NyBUSm0KLShmZWQpIDEyLjcyMjIgVGoKLS0zNjcgVEptCi0oc2VxdWVudGlhbGx5KSA0OC4xNDkyIFRqCi0tMzY2IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zNjcgVEptCi0oc3Rkb3V0LikgMjYuODQ5MiBUagotLTEzMjIgVEptCi0oQ29tcHJlc3Npb24pIDUyLjU4MjYgVGoKLS0zNjcgVEptCi0ob2YpIDguMjk4ODUgVGoKLTcyIDE4Ni44NzIgVGQKLShtdWx0aXBsZSkgMzMuMjE1MyBUagotLTI4OSBUSm0KLShcMDAybGVzKSAxNi42MDc3IFRqCi0tMjg5IFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yODkgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjg5IFRKbQotKG1hbm5lcikgMjkuODc3OCBUagotLTI4OCBUSm0KLShnZW5lcmF0ZXMpIDM3LjYxODggVGoKLS0yODkgVEptCi0oYSkgNC40MjMzOSBUagotLTI4OSBUSm0KLShzdHJlYW0pIDI2LjU2MDMgVGoKLS0yODkgVEptCi0oY29udGFpbmluZykgNDIuMDYyMSBUagotLTI4OSBUSm0KLShtdWx0aXBsZSkgMzMuMjE1MyBUagotLTI4OSBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjg5IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI4OSBUSm0KLShyZXByZXNlbnRhdGlvbnMuKSA2Mi44MDQyIFRqCi0tODUzIFRKbQotKFN1Y2gpIDE5LjkyNTIgVGoKLS0yODkgVEptCi0oYSkgNC40MjMzOSBUagotLTI4OSBUSm0KLShzdHJlYW0pIDI2LjU2MDMgVGoKLTcyIDE3NC45MTcgVGQKLShjYW4pIDEzLjgyODEgVGoKLS0zOTEgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0zOTEgVEptCi0oZGVjb21wcmVzc2VkKSA1Ni40MzgxIFRqCi0tMzkwIFRKbQotKGNvcnJlY3RseSkgMzUuNDA3MSBUagotLTM5MSBUSm0KLShvbmx5KSAxNy43MTM1IFRqCi0tMzkxIFRKbQotKGJ5KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDIzOC4xMTYgMTc0LjkxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzguMTE2IC0xNzQuOTE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzguMTE2IDE3NC45MTcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDI2OC4wMDQgMTc0LjkxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNjguMDA0IC0xNzQuOTE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNzEuODk3IDE3NC45MTcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnNpb24pIDI0LjM0ODYgVGoKLS0zOTEgVEptCi0oMC45LjApIDE5LjkyNTIgVGoKLS0zOTEgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0zOTEgVEptCi0obCkgMi43Njk2IFRqCi0xIFRKbQotKGF0ZXIpIDE0LjkzMzkgVGoKLTU1IFRKbQotKC4pIDIuNDkwNjUgVGoKLS03MzMgVEptCi0oRWFybGllcikgMjcuMTA4MiBUagotLTM5MSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyc2lvbnMpIDI4LjIyNCBUagotLTM5MSBUSm0KLShvZikgOC4yOTg4NSBUagotWzEgMCAwIDEgNDQ4LjA3MSAxNzQuOTE3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0OC4wNzEgLTE3NC45MTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ0OC4wNzEgMTc0LjkxNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgNDc3Ljk1OCAxNzQuOTE3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Ny45NTggLTE3NC45MTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ4MS44NTIgMTc0LjkxNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aWxsKSAxNS41MDE4IFRqCi0tMzkxIFRKbQotKHN0b3ApIDE2LjYwNzcgVGoKLS0zOTEgVEptCi0oYWZ0ZXIpIDE4LjI1MTUgVGoKLTcyIDE2Mi45NjIgVGQKLShkZWNvbXByZXNzaW5nKSA1OS43NjU2IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShcMDAycnN0KSAxNS41MDE4IFRqCi0tMjUwIFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShzdHJlYW0uKSAyOS4wNTA5IFRqCi1bMSAwIDAgMSA3MiAxNjAuODA1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xNTAuODQzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxNDEuMDQ0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6Y2F0KSAyOS44ODc4IFRqCi1bMSAwIDAgMSAxMDEuODg4IDE0MS4wNDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTAxLjg4OCAtMTQxLjA0NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA0LjM3OSAxNDEuMDQ0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwob3IpIDExLjYxNjQgVGoKLVsxIDAgMCAxIDExOC40ODYgMTQxLjA0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTguNDg2IC0xNDEuMDQ0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTguNDg2IDE0MS4wNDQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLS02MDAgVEptCi0oLWRjKSAxNy45MzI3IFRqCi1bMSAwIDAgMSAxNzIuMjg0IDE0MS4wNDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTcyLjI4NCAtMTQxLjA0NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTcyLjI4NCAxNDEuMDQ0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwpKSAzLjMxNzU1IFRqCi0tMjUwIFRKbQotKGRlY29tcHJlc3NlcykgNTUuMzMyMyBUagotLTI1MCBUSm0KLShhbGwpIDkuOTYyNiBUagotLTI1MCBUSm0KLShzcGVjaVwwMDJlZCkgMzUuNDE3IFRqCi0tMjUwIFRKbQotKFwwMDJsZXMpIDE2LjYwNzcgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oc3RhbmRhcmQpIDMzLjc1MzMgVGoKLS0yNTAgVEptCi0ob3V0cHV0LikgMjcuOTU1MSBUagotWzEgMCAwIDEgNzIgMTM4Ljg4N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTI4LjkyNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTE5LjEyNiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMTAxLjg4OCAxMTkuMTI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEwMS44ODggLTExOS4xMjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwNC44NjYgMTE5LjEyNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aWxsKSAxNS41MDE4IFRqCi0tMjk5IFRKbQotKHJlYWQpIDE3LjE0NTYgVGoKLS0yOTkgVEptCi0oYXIpIDcuNzQwOTQgVGoKLTE4IFRKbQotKGd1bWVudHMpIDMzLjc2MzMgVGoKLS0yOTkgVEptCi0oZnJvbSkgMTkuMzY3MyBUagotLTI5OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yOTkgVEptCi0oZW4pIDkuNDA0NjkgVGoKLTQwIFRKbQotKHZpcm9ubWVudCkgNDAuOTU2MiBUagotLTI5OCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFyaWFibGVzKSAzMC45ODM3IFRqCi1bMSAwIDAgMSAzMTYuOTAzIDExOS4xMjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzE2LjkwMyAtMTE5LjEyNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzE2LjkwMyAxMTkuMTI2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaSVAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAzNDYuNzkxIDExOS4xMjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQ2Ljc5MSAtMTE5LjEyNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzQ5Ljc2OSAxMTkuMTI2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAzNjcuMTMzIDExOS4xMjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzY3LjEzMyAtMTE5LjEyNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzY3LjEzMyAxMTkuMTI2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaSVApIDIzLjkxMDIgVGoKLVsxIDAgMCAxIDM5MS4wNDMgMTE5LjEyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTEuMDQzIC0xMTkuMTI2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zOTEuMDQzIDExOS4xMjYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTI5OSBUSm0KLShpbikgNy43NTA5IFRqCi0tMjk5IFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0yOTkgVEptCi0ob3JkZXIpIDIxLjAyMTEgVGoKLTQwIFRKbQotKCwpIDIuNDkwNjUgVGoKLS0zMTEgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yOTkgVEptCi0od2lsbCkgMTUuNTAxOCBUagotLTI5OSBUSm0KLShwcm9jZXNzKSAyOS44Nzc4IFRqCi0tMjk5IFRKbQotKHRoZW0pIDE5LjkyNTIgVGoKLTcyIDEwNy4xNzEgVGQKLShiZWZvcmUpIDI1LjQ0NDUgVGoKLS0yNTAgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI1MCBUSm0KLShhcikgNy43NDA5NCBUagotMTggVEptCi0oZ3VtZW50cykgMzMuNzYzMyBUagotLTI1MCBUSm0KLShyZWFkKSAxNy4xNDU2IFRqCi0tMjUwIFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGNvbW1hbmQpIDM5LjI5MjUgVGoKLS0yNTAgVEptCi0obGluZS4pIDE3LjQzNDYgVGoKLS0zMTAgVEptCi0oVGhpcykgMTcuNzEzNSBUagotLTI1MCBUSm0KLShnaSkgNy43NTA5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVzKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oY29uKSAxNC4zODYgVGoKLTQwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW5pZW50KSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShheSkgOS40MDQ2OSBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKHN1cHBseSkgMjYuNTcwMyBUagotLTI1MCBUSm0KLShkZWYpIDEyLjcyMjIgVGoKLTEwIFRKbQotKGF1bHQpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0oYXIpIDcuNzQwOTQgVGoKLTE4IFRKbQotKGd1bWVudHMuKSAzNi4yNTM5IFRqCi1bMSAwIDAgMSA3MiAxMDUuMDE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC05NS4wNTE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA4NS4yNTM0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKENvbXByZXNzaW9uKSA1Mi41ODI2IFRqCi0tMjk0IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjk0IFRKbQotKGFsKSA3LjE5MyBUagotMTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGF5cykgMTMuMjgwMSBUagotLTI5NCBUSm0KLShwZXJmb3JtZWQsKSA0My45ODQ5IFRqCi0tMzA1IFRKbQotKGUpIDQuNDIzMzkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW4pIDkuNDA0NjkgVGoKLS0yOTQgVEptCi0oaWYpIDYuMDg3MTUgVGoKLS0yOTQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjk0IFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yOTQgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMjkzIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjk0IFRKbQotKHNsaWdodGx5KSAyOS44OTc4IFRqCi0tMjk0IFRKbQotKGxhcikgMTAuNTEwNSBUagotMTggVEptCi0oZ2VyKSAxMi43MjIyIFRqCi0tMjk0IFRKbQotKHRoYW4pIDE3LjE1NTYgVGoKLS0yOTQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjk0IFRKbQotKG9yaWdpbmFsLikgMzMuNDg0MyBUagotLTg4NCBUSm0KLShGaWxlcykgMTkuMzc3MyBUagotLTI5NCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI5NCBUSm0KLShsZXNzKSAxNC45NDM5IFRqCi0tMjk0IFRKbQotKHRoYW4pIDE3LjE1NTYgVGoKLTcyIDczLjI5ODIgVGQKLShhYm91dCkgMjIuMTM2OSBUagotLTI0NiBUSm0KLShvbmUpIDE0LjM4NiBUagotLTI0NiBUSm0KLShodW5kcmVkKSAzMi42NDc0IFRqCi0tMjQ1IFRKbQotKGJ5dGVzKSAyMS4wMzEgVGoKLS0yNDYgVEptCi0odGVuZCkgMTcuMTU1NiBUagotLTI0NiBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjQ2IFRKbQotKGdldCkgMTIuMTc0MyBUagotLTI0NiBUSm0KLShsKSAyLjc2OTYgVGoKLTEgVEptCi0oYXIpIDcuNzQwOTQgVGoKLTE4IFRKbQotKGdlcikgMTIuNzIyMiBUagotNDAgVEptCi0oLCkgMi40OTA2NSBUagotLTI0NyBUSm0KLShzaW5jZSkgMjAuNDczMSBUagotLTI0NiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDYgVEptCi0oY29tcHJlc3Npb24pIDUwLjM2MDkgVGoKLS0yNDUgVEptCi0obWVjaGFuaXNtKSA0NS4zNzk2IFRqCi0tMjQ2IFRKbQotKGhhcykgMTMuMjgwMSBUagotLTI0NiBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjQ2IFRKbQotKGNvbnN0YW50KSAzMy4yMDUzIFRqCi0tMjQ2IFRKbQotKG8pIDQuOTgxMyBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcmhlYWQpIDI2LjU1MDMgVGoKLS0yNDUgVEptCi0oaW4pIDcuNzUwOSBUagotLTI0NiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDYgVEptCi0ocmUpIDcuNzQwOTQgVGoKLTE1IFRKbQotKGdpb24pIDE3LjcxMzUgVGoKLS0yNDYgVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDcyIDUwLjg1MThdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMzc0LjM5NCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDYuODU0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQzLjA2MzMgLTYuNzU0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTYuMzMyIC01MC45NTE0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MzkuMzk1IDUwLjk1MTQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMykgNC45ODEzIFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiA3IDcKLSUlQmVnaW5QYWdlU2V0dXAKLSUlUGFnZU9yaWVudGF0aW9uOiBQb3J0cmFpdAotcGRmU3RhcnRQYWdlCi0wIDAgNjEyIDc5MiByZSBXCi0lJUVuZFBhZ2VTZXR1cAotW10gMCBkCi0xIGkKLTAgagotMCBKCi0xMCBNCi0xIHcKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLWZhbHNlIG9wCi1mYWxzZSBPUAotMCAwIDYxMiA3OTIgcmUKLVcKLXEKLVsxIDAgMCAxIDcyIDc0MS41NTRdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAxNC40NDU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTg3LjE5NyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IC04LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEwNS41MTkgLTYuNzU0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNzEuNTkgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ3Ny4xMDkgNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShIbykgMTIuMTc0MyBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oYnppcDIpIDIyLjEzNjkgVGoKLVsxIDAgMCAxIDI2Ni4wNzEgNzQ3LjA4OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDI4MC43OTYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzIuOTc0IC01LjAzNjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0wLjQ5ODFdIGNtCi1xCi1bXSAwIGQKLTAgSgotMC40OTgxIHcKLTAgMC4yNDkxIG0KLTQ3NS40NjUgMC4yNDkxIGwKLVMKLVEKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ3OS4yNTEgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTQwIC03NDEuNTU0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA3MTAuMDM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDUwKSA5Ljk2MjYgVGoKLS0yNjQgVEptCi0oYnl0ZXMuKSAyMy41MjE3IFRqCi0tMzUxIFRKbQotKFJhbmRvbSkgMzMuNzYzMyBUagotLTI2NCBUSm0KLShkYXQpIDEyLjE3NDMgVGoKLTEgVEptCi0oYSkgNC40MjMzOSBUagotLTI2NCBUSm0KLShcKGluY2x1ZGluZykgNDAuOTU2MiBUagotLTI2NCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjQgVEptCi0ob3V0cHV0KSAyNS40NjQ0IFRqCi0tMjYzIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjY0IFRKbQotKG1vc3QpIDE5LjM3NzMgVGoKLS0yNjQgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMjYzIFRKbQotKGNvbXByZXNzb3JzXCkpIDUzLjEyMDYgVGoKLS0yNjQgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNjQgVEptCi0oY29kZWQpIDIzLjc5MDcgVGoKLS0yNjMgVEptCi0oYXQpIDcuMTkzIFRqCi0tMjY0IFRKbQotKGFib3V0KSAyMi4xMzY5IFRqCi0tMjY0IFRKbQotKDguMDUpIDE3LjQzNDYgVGoKLS0yNjMgVEptCi0oYml0cykgMTQuMzk2IFRqCi0tMjY0IFRKbQotKHBlcikgMTIuNzIyMiBUagotLTI2NCBUSm0KLShieXRlLCkgMTkuNjQ2MiBUagotLTI2NyBUSm0KLShnaSkgNy43NTA5IFRqCi0yNSBUSm0KLSh2aW5nKSAxNy43MTM1IFRqCi0tMjY0IFRKbQotKGFuKSA5LjQwNDY5IFRqCi03MiA2OTguMDgyIFRkCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeHBhbnNpb24pIDM1Ljk3NDkgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0oYXJvdW5kKSAyNy42NjYxIFRqCi0tMjUwIFRKbQotKDAuNSUuKSAyMy4yNDI3IFRqCi1bMSAwIDAgMSA3MiA2OTUuOTI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44NDQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02ODYuMDgxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2NzYuMjgzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEFzKSAxMS4wNjg0IFRqCi0tMjY4IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNjggVEptCi0oc2VsZi1jaGVjaykgNDAuOTM2MyBUagotLTI2OSBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNjggVEptCi0oeW91cikgMTguMjYxNCBUagotLTI2OCBUSm0KLShwcm90ZWN0aW9uLCkgNDIuODg5IFRqCi1bMSAwIDAgMSAyMTcuMjczIDY3Ni4yODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjE3LjI3MyAtNjc2LjI4M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjE3LjI3MyA2NzYuMjgzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAyNDcuMTYxIDY3Ni4yODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjQ3LjE2MSAtNjc2LjI4M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjQ5LjgzMyA2NzYuMjgzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHVzZXMpIDE3LjE1NTYgVGoKLS0yNjggVEptCi0oMzItYml0KSAyMy44MDA3IFRqCi0tMjY4IFRKbQotKENSQ3MpIDIzLjgxMDYgVGoKLS0yNjkgVEptCi0odG8pIDcuNzUwOSBUagotLTI2OCBUSm0KLShtYWspIDE3LjE1NTYgVGoKLTEwIFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yNjggVEptCi0oc3VyZSkgMTYuNTk3NyBUagotLTI2OCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjY4IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI2OSBUSm0KLShkZWNvbXByZXNzZWQpIDU2LjQzODEgVGoKLS0yNjggVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnNpb24pIDI0LjM0ODYgVGoKLS0yNjggVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNjggVEptCi0oYSkgNC40MjMzOSBUagotLTI2OCBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yNjkgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLTcyIDY2NC4zMjggVGQKLShpZGVudGljYWwpIDM0LjMxMTIgVGoKLS0yMDAgVEptCi0odG8pIDcuNzUwOSBUagotLTE5OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMDAgVEptCi0ob3JpZ2luYWwuKSAzMy40ODQzIFRqCi0tNTg2IFRKbQotKFRoaXMpIDE3LjcxMzUgVGoKLS0yMDAgVEptCi0oZ3VhcmRzKSAyNi41NjAzIFRqCi0tMTk5IFRKbQotKGFnKSA5LjQwNDY5IFRqCi01IFRKbQotKGFpbnN0KSAxOC44MTk0IFRqCi0tMjAwIFRKbQotKGNvcnJ1cHRpb24pIDQxLjUwNDIgVGoKLS0xOTkgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yMDAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjAwIFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0xOTkgVEptCi0oZGF0YSwpIDE5LjA4ODMgVGoKLS0yMTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0xOTkgVEptCi0oYWcpIDkuNDA0NjkgVGoKLTUgVEptCi0oYWluc3QpIDE4LjgxOTQgVGoKLS0yMDAgVEptCi0odW5kZXRlY3RlZCkgNDMuMTU4IFRqCi0tMjAwIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWdzKSAxMy44MzgxIFRqCi0tMTk5IFRKbQotKGluKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDUxMC4xMTIgNjY0LjMyOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTAuMTEyIC02NjQuMzI4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTAuMTEyIDY2NC4zMjggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDU0MCA2NjQuMzI4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtNjY0LjMyOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjUyLjM3MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcKGhvcGVmdWxseSkgNDEuNTA0MiBUagotLTI3NSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyeSkgMTIuNzIyMiBUagotLTI3NCBUSm0KLSh1bmxpaykgMjAuNDgzMSBUagotMTAgVEptCi0oZWx5XCkuKSAxNy45ODI1IFRqCi0tMzg0IFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTI3NSBUSm0KLShjaGFuY2VzKSAzMS41MzE2IFRqCi0tMjc1IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjc1IFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNzQgVEptCi0oY29ycnVwdGlvbikgNDEuNTA0MiBUagotLTI3NSBUSm0KLShnb2luZykgMjIuNjk0OCBUagotLTI3NSBUSm0KLSh1bmRldGVjdGVkKSA0My4xNTggVGoKLS0yNzQgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNzUgVEptCi0obWljcm9zY29waWMsKSA1MS4xODc4IFRqCi0tMjgxIFRKbQotKGFib3V0KSAyMi4xMzY5IFRqCi0tMjc1IFRKbQotKG9uZSkgMTQuMzg2IFRqCi0tMjc0IFRKbQotKGNoYW5jZSkgMjcuNjU2MiBUagotLTI3NSBUSm0KLShpbikgNy43NTA5IFRqCi0tMjc1IFRKbQotKGZvdXIpIDE2LjU5NzcgVGoKLTcyIDY0MC40MTcgVGQKLShiaWxsaW9uKSAyNi4wMjIzIFRqCi0tMjc5IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI3OSBUSm0KLShlYWNoKSAxOC4yNTE1IFRqCi0tMjc5IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI4MCBUSm0KLShwcm9jZXNzZWQuKSA0MS43NzMyIFRqCi0tNzk1IFRKbQotKEJlKSAxMS4wNjg0IFRqCi0tMjc5IFRKbQotKGEpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhcmUsKSAxNC42NTUgVGoKLS0yODYgVEptCi0odGhvdWdoLCkgMzAuMTY2OCBUagotLTI4NyBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjc5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI3OSBUSm0KLShjaGVjaykgMjMuMjMyOCBUagotLTI3OSBUSm0KLShvY2N1cnMpIDI2LjAwMjQgVGoKLS0yNzkgVEptCi0odXBvbikgMTkuOTI1MiBUagotLTI3OSBUSm0KLShkZWNvbXByZXNzaW9uLCkgNjIuMjU2MyBUagotLTI4NyBUSm0KLShzbykgOC44NTY3NSBUagotLTI3OSBUSm0KLShpdCkgNS41MzkyMSBUagotLTI3OSBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0yNzkgVEptCi0ob25seSkgMTcuNzEzNSBUagotLTI4MCBUSm0KLSh0ZWxsKSAxMi43MzIyIFRqCi0tMjc5IFRKbQotKHlvdSkgMTQuOTQzOSBUagotNzIgNjI4LjQ2MiBUZAotKHRoYXQpIDE0Ljk0MzkgVGoKLS0yMzcgVEptCi0oc29tZXRoaW5nKSA0MS41MTQyIFRqCi0tMjM2IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjM3IFRKbQotKHdyb25nLikgMjcuOTQ1MSBUagotLTYxMSBUSm0KLShJdCkgNi4wODcxNSBUagotLTIzNyBUSm0KLShjYW4nKSAxNy4xNDU2IFRqCi0xOCBUSm0KLSh0KSAyLjc2OTYgVGoKLS0yMzcgVEptCi0oaGVscCkgMTcuMTU1NiBUagotLTIzNyBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yMzYgVEptCi0ocmVjbykgMTcuMTQ1NiBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcikgNy43NDA5NCBUagotLTIzNyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMzcgVEptCi0ob3JpZ2luYWwpIDMwLjk5MzYgVGoKLS0yMzcgVEptCi0odW5jb21wcmVzc2VkKSA1Ni45OTYgVGoKLS0yMzYgVEptCi0oZGF0YS4pIDE5LjA4ODMgVGoKLS02MTIgVEptCi0oWSkgNy4xOTMgVGoKLTExMCBUSm0KLShvdSkgOS45NjI2IFRqCi0tMjM2IFRKbQotKGNhbikgMTMuODI4MSBUagotLTIzNyBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLVsxIDAgMCAxIDQ1OC4xNTkgNjI4LjQ2Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NTguMTU5IC02MjguNDYyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NTguMTU5IDYyOC40NjIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDJyZWNvdmVyKSA3MS43MzA3IFRqCi1bMSAwIDAgMSA1MjkuODkgNjI4LjQ2Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MjkuODkgLTYyOC40NjJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzMi4yNDkgNjI4LjQ2MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0bykgNy43NTA5IFRqCi03MiA2MTYuNTA3IFRkCi0odHJ5KSAxMS4wNjg0IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0ocmVjbykgMTcuMTQ1NiBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcikgNy43NDA5NCBUagotLTI1MCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS0yNTAgVEptCi0oZGFtYWdlZCkgMzUuOTY1IFRqCi0tMjUwIFRKbQotKFwwMDJsZXMuKSAxOS4wOTgzIFRqCi1bMSAwIDAgMSA3MiA2MTQuMzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg0NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYwNC41MDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU5NC43MDggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUmV0dXJuKSAyNy4xMTgyIFRqCi0tMjk4IFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZXM6KSAyMy4yNDI3IFRqCi0tNDA2IFRKbQotKDApIDQuOTgxMyBUagotLTI5OCBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yOTggVEptCi0oYSkgNC40MjMzOSBUagotLTI5OCBUSm0KLShub3JtYWwpIDI4LjIyNCBUagotLTI5OCBUSm0KLShlKSA0LjQyMzM5IFRqCi0xNSBUSm0KLSh4aXQsKSAxMy4wMTEyIFRqCi0tMzEwIFRKbQotKDEpIDQuOTgxMyBUagotLTI5OCBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yOTcgVEptCi0oZW4pIDkuNDA0NjkgVGoKLTQwIFRKbQotKHZpcm9ubWVudGFsKSA0OC4xNDkyIFRqCi0tMjk4IFRKbQotKHByb2JsZW1zKSAzNy4wODA4IFRqCi0tMjk4IFRKbQotKFwoXDAwMmxlKSAxNi4wNDk3IFRqCi0tMjk4IFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTI5OCBUSm0KLShmb3VuZCwpIDI1LjczMzQgVGoKLS0zMTAgVEptCi0oaW4pIDcuNzUwOSBUagotNDAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbGlkKSAxNC45NDM5IFRqCi0tMjk4IFRKbQotKFwwMDNhZ3MsKSAyMS4zMSBUagotLTMxMCBUSm0KLShJL08pIDEzLjI4MDEgVGoKLS0yOTggVEptCi0oZXJyb3JzLCkgMjUuNzIzNCBUagotLTMxMCBUSm0KLShldGMuXCksKSAxOS45MTUyIFRqCi0tMzEwIFRKbQotKDIpIDQuOTgxMyBUagotLTI5OCBUSm0KLSh0bykgNy43NTA5IFRqCi03MiA1ODIuNzUzIFRkCi0oaW5kaWNhdGUpIDMxLjU0MTYgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShjb3JydXB0KSAyOC43NzIgVGoKLS0yNTAgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI1MCBUSm0KLShcMDAybGUsKSAxNS4yMjI5IFRqCi0tMjUwIFRKbQotKDMpIDQuOTgxMyBUagotLTI1MCBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNTAgVEptCi0oYW4pIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oaW50ZXJuYWwpIDMwLjQzNTcgVGoKLS0yNTAgVEptCi0oY29uc2lzdGVuYykgNDEuNTA0MiBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMjUwIFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi0tMjUwIFRKbQotKFwoZSkgNy43NDA5NCBUagotMTUgVEptCi0oZywpIDcuNDcxOTUgVGoKLS0yNTAgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1Z1wpKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKGNhdXNlZCkgMjcuMTA4MiBUagotWzEgMCAwIDEgNDQzLjA2NSA1ODIuNzUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0My4wNjUgLTU4Mi43NTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ0My4wNjUgNTgyLjc1MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgNDcyLjk1MyA1ODIuNzUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NTMgLTU4Mi43NTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ3NS40NDQgNTgyLjc1MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKHBhbmljLikgMjQuMDY5NiBUagotWzEgMCAwIDEgNzIgNTgwLjU5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuODQ0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTcwLjc1Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTQ4LjExOCBUZAotL0YxMjJfMCAyMC42NTg1IFRmCi0oMi40LikgMzQuNDU4NCBUagotLTI3OCBUSm0KLShPUFRJT05TKSA5Mi45ODM5IFRqCi1bMSAwIDAgMSA3MiA1NDcuODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg0NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg0NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTUyOC4xNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDUxNi40NzUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLWMpIDExLjk1NTEgVGoKLS02MDAgVEptCi0oLS1zdGRvdXQpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDEzNy43NTMgNTE2LjQ3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTY4LjI0NDEgLTAuMTU0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTE2LjMyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDggNTA0LjUyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKENvbXByZXNzKSAzOS44NTA0IFRqCi0tMjUwIFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGRlY29tcHJlc3MpIDQ3LjAzMzQgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShzdGFuZGFyZCkgMzMuNzUzMyBUagotLTI1MCBUSm0KLShvdXRwdXQuKSAyNy45NTUxIFRqCi1bMSAwIDAgMSA3MiA1MDIuMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMy44NjY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44NDQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00ODguNjUyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NzguODU0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC1kKSAxMS45NTUxIFRqCi0tNjAwIFRKbQotKC0tZGVjb21wcmVzcykgNzEuNzMwNyBUagotWzEgMCAwIDEgMTYxLjY2NCA0NzguODU0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTIuMTU0NCAtMS41MzQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00NzcuMzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA0NjYuODk5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEYpIDUuNTM5MjEgVGoKLTE1IFRKbQotKG9yY2UpIDE3LjE0NTYgVGoKLS0yOTYgVEptCi0oZGVjb21wcmVzc2lvbi4pIDYyLjI1NjMgVGoKLVsxIDAgMCAxIDIwMC4yMTQgNDY2Ljg5OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDAuMjE0IC00NjYuODk5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDAuMjE0IDQ2Ni44OTkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDIzMC4xMDIgNDY2Ljg5OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzAuMTAyIC00NjYuODk5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzAuMTAyIDQ2Ni44OTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMjM1LjY1OSA0NjYuODk5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIzNS42NTkgLTQ2Ni44OTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIzNS42NTkgNDY2Ljg5OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShidW56aXAyKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAyNzcuNTAyIDQ2Ni44OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc3LjUwMiAtNDY2Ljg5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjgwLjQ1NCA0NjYuODk5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAyOTcuNzkxIDQ2Ni44OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjk3Ljc5MSAtNDY2Ljg5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjk3Ljc5MSA0NjYuODk5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6Y2F0KSAyOS44ODc4IFRqCi1bMSAwIDAgMSAzMjcuNjc5IDQ2Ni44OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzI3LjY3OSAtNDY2Ljg5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzMwLjYzMSA0NjYuODk5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFyZSkgMTIuMTY0MyBUagotLTI5NiBUSm0KLShyZWFsbHkpIDIyLjY4NDggVGoKLS0yOTYgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjk3IFRKbQotKHNhbWUpIDIwLjQ3MzEgVGoKLS0yOTYgVEptCi0ocHJvZ3JhbSwpIDM2LjI0MzkgVGoKLS0zMDggVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yOTYgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjk2IFRKbQotKGRlY2lzaW9uKSAzMy4yMDUzIFRqCi0tMjk3IFRKbQotKGFib3V0KSAyMi4xMzY5IFRqCi0xMDggNDU0Ljk0NCBUZAotKHdoYXQpIDE5LjM2NzMgVGoKLS0zMDMgVEptCi0oYWN0aW9ucykgMjguMjI0IFRqCi0tMzAzIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zMDMgVEptCi0odGFrKSAxMi4xNzQzIFRqCi0xMCBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMzAzIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzAzIFRKbQotKGRvbmUpIDE5LjM2NzMgVGoKLS0zMDMgVEptCi0ob24pIDkuOTYyNiBUagotLTMwNCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDMgVEptCi0oYmFzaXMpIDE5LjkyNTIgVGoKLS0zMDMgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zMDMgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0zMDMgVEptCi0obmFtZSkgMjEuNTc5IFRqCi0tMzAzIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzAzIFRKbQotKHVzZWQuKSAyMC43NTIxIFRqCi0tOTM5IFRKbQotKFRoaXMpIDE3LjcxMzUgVGoKLS0zMDMgVEptCi0oXDAwM2FnKSAxNC45NDM5IFRqCi0tMzAzIFRKbQotKG8pIDQuOTgxMyBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnJpZGVzKSAyNy4xMDgyIFRqCi0tMzAzIFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0zMDMgVEptCi0obWVjaGFuaXNtLCkgNDcuODcwMyBUagotLTMxNiBUSm0KLShhbmQpIDE0LjM4NiBUagotMTA4IDQ0Mi45ODggVGQKLShmb3JjZXMpIDI0LjMzODYgVGoKLS0yNTAgVEptCi0oYnppcDIpIDIyLjEzNjkgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShkZWNvbXByZXNzLikgNDkuNTI0MSBUagotWzEgMCAwIDEgNzIgNDQwLjgzMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTMuODY2NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuODQ0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDI3LjEyMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDE3LjMyMyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgteikgMTEuOTU1MSBUagotLTYwMCBUSm0KLSgtLWNvbXByZXNzKSA1OS43NzU2IFRqCi1bMSAwIDAgMSAxNDkuNzA5IDQxNy4zMjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04MC4xOTkzIC0xLjUzNDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQxNS43ODldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA0MDUuMzY4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoZSkgMTUuNDkxOCBUagotLTI1MCBUSm0KLShjb21wbGVtZW50KSA0OS4yNTUxIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDE4Ny45NjkgNDA1LjM2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODcuOTY5IC00MDUuMzY4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODcuOTY5IDQwNS4zNjggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLWQpIDExLjk1NTEgVGoKLVsxIDAgMCAxIDE5OS45MjQgNDA1LjM2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTkuOTI0IC00MDUuMzY4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xOTkuOTI0IDQwNS4zNjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMzEwIFRKbQotKGZvcmNlcykgMjQuMzM4NiBUagotLTI1MCBUSm0KLShjb21wcmVzc2lvbiwpIDUyLjg1MTYgVGoKLS0yNTAgVEptCi0ocmUpIDcuNzQwOTQgVGoKLTE1IFRKbQotKGcpIDQuOTgxMyBUagotNSBUSm0KLShhcmRsZXNzKSAyNy42NjYxIFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi00MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTIwIFRKbQotKG9rYXRpb24pIDI5Ljg4NzggVGoKLS0yNTAgVEptCi0obmFtZS4pIDI0LjA2OTYgVGoKLVsxIDAgMCAxIDcyIDQwMy4yMTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zLjg2NjVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg0NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM4OS41XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzNzkuNzAyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC10KSAxMS45NTUxIFRqCi0tNjAwIFRKbQotKC0tdGVzdCkgMzUuODY1NCBUagotWzEgMCAwIDEgMTI1Ljc5OCAzNzkuNzAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTYuMjg4OSAtMC4xNTQ0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zNzkuNTQ4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDggMzY3Ljc0NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShDaGVjaykgMjUuNDU0NCBUagotLTI3MCBUSm0KLShpbnRlKSAxNC45NDM5IFRqCi0xNSBUSm0KLShncml0eSkgMTguODE5NCBUagotLTI3MSBUSm0KLShvZikgOC4yOTg4NSBUagotLTI3MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNzEgVEptCi0oc3BlY2lcMDAyZWQpIDM1LjQxNyBUagotLTI3MCBUSm0KLShcMDAybGVcKHNcKSwpIDI1LjczMzQgVGoKLS0yNzYgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1dCkgNy43NTA5IFRqCi0tMjcwIFRKbQotKGRvbicpIDE4LjI2MTQgVGoKLTE4IFRKbQotKHQpIDIuNzY5NiBUagotLTI3MCBUSm0KLShkZWNvbXByZXNzKSA0Ny4wMzM0IFRqCi0tMjcxIFRKbQotKHRoZW0uKSAyMi40MTU5IFRqCi0tNzQyIFRKbQotKFRoaXMpIDE3LjcxMzUgVGoKLS0yNzEgVEptCi0ocmVhbGx5KSAyMi42ODQ4IFRqCi0tMjcwIFRKbQotKHBlcmZvcm1zKSAzNS45NjUgVGoKLS0yNzAgVEptCi0oYSkgNC40MjMzOSBUagotLTI3MSBUSm0KLSh0cmlhbCkgMTYuMDQ5NyBUagotLTI3MCBUSm0KLShkZWNvbXByZXMtKSA0Ni40NzU1IFRqCi0xMDggMzU1Ljc5MSBUZAotKHNpb24pIDE2LjYwNzcgVGoKLS0yNTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNTAgVEptCi0odGhybykgMTYuMDQ5NyBUagotMjUgVEptCi0od3MpIDExLjA2ODQgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotMTUgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGF5KSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShyZXN1bHQuKSAyNC42Mjc1IFRqCi1bMSAwIDAgMSA3MiAzNTMuNjM1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMy44NjY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44NDQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zMzkuOTI0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzMzAuMTI2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC1mKSAxMS45NTUxIFRqCi0tNjAwIFRKbQotKC0tZm9yY2UpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDEzMS43NzYgMzMwLjEyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTYyLjI2NjUgLTAuMTU0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzI5Ljk3MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA4IDMxOC4xNzEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oRikgNS41MzkyMSBUagotMTUgVEptCi0ob3JjZSkgMTcuMTQ1NiBUagotLTMzOCBUSm0KLShvKSA0Ljk4MTMgVGoKLTE1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJ3cml0ZSkgMjguMjE0MSBUagotLTMzOSBUSm0KLShvZikgOC4yOTg4NSBUagotLTMzOCBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS0zMzggVEptCi0oXDAwMmxlcy4pIDE5LjA5ODMgVGoKLS0xMTUwIFRKbQotKE5vcm1hbGx5KSAzOC4xODY2IFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAyODkuODMxIDMxOC4xNzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjg5LjgzMSAtMzE4LjE3MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjg5LjgzMSAzMTguMTcxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAzMTkuNzE5IDMxOC4xNzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzE5LjcxOSAtMzE4LjE3MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzIzLjA4OSAzMTguMTcxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLS0zMzggVEptCi0obm90KSAxMi43MzIyIFRqCi0tMzM5IFRKbQotKG8pIDQuOTgxMyBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcndyaXRlKSAyOC4yMTQxIFRqCi0tMzM4IFRKbQotKGUpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHhpc3RpbmcpIDI3LjEyODIgVGoKLS0zMzggVEptCi0ob3V0cHV0KSAyNS40NjQ0IFRqCi0tMzM4IFRKbQotKFwwMDJsZXMuKSAxOS4wOTgzIFRqCi0tMTE1MCBUSm0KLShBbHNvKSAxOC44MTk0IFRqCi0tMzM5IFRKbQotKGZvcmNlcykgMjQuMzM4NiBUagotWzEgMCAwIDEgMTA4IDMwNi4yMTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTA4IC0zMDYuMjE1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDggMzA2LjIxNSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMTM3Ljg4OCAzMDYuMjE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzNy44ODggLTMwNi4yMTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE0MC4zNzkgMzA2LjIxNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKGJyZWFrKSAyMi4xMjY5IFRqCi0tMjUwIFRKbQotKGhhcmQpIDE3LjcwMzUgVGoKLS0yNTAgVEptCi0obGlua3MpIDE5LjM3NzMgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShcMDAybGVzLCkgMTkuMDk4MyBUagotLTI1MCBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTI1MCBUSm0KLShpdCkgNS41MzkyMSBUagotLTI1MCBUSm0KLShvdGhlcndpc2UpIDM4LjczNDYgVGoKLS0yNTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG91bGRuJykgMjYuMDEyMyBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMjUwIFRKbQotKGRvLikgMTIuNDUzMyBUagotWzEgMCAwIDEgNzIgMzA0LjY4MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuODQ0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjk0LjgzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA4IDI4NC40MTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDEzNy44ODggMjg0LjQxNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMzcuODg4IC0yODQuNDE2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDEuMjExIDI4NC40MTYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0obm9ybWFsbHkpIDM1Ljk3NDkgVGoKLS0zMzQgVEptCi0oZGVjbGluZXMpIDMyLjY0NzQgVGoKLS0zMzMgVEptCi0odG8pIDcuNzUwOSBUagotLTMzNCBUSm0KLShkZWNvbXByZXNzKSA0Ny4wMzM0IFRqCi0tMzMzIFRKbQotKFwwMDJsZXMpIDE2LjYwNzcgVGoKLS0zMzQgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0zMzMgVEptCi0oZG9uJykgMTguMjYxNCBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMzM0IFRKbQotKGhhKSA5LjQwNDY5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0zMzMgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzM0IFRKbQotKGNvcnJlY3QpIDI3LjY1NjIgVGoKLS0zMzMgVEptCi0obWFnaWMpIDI0LjM0ODYgVGoKLS0zMzQgVEptCi0oaGVhZGVyKSAyNi41NTAzIFRqCi0tMzMzIFRKbQotKGJ5dGVzLikgMjMuNTIxNyBUagotLTU2MSBUSm0KLShJZikgNi42MzUwOSBUagotLTMzNCBUSm0KLShmb3JjZWQpIDI1LjQ0NDUgVGoKLTEwOCAyNzIuNDYxIFRkCi0oXCgpIDMuMzE3NTUgVGoKLVsxIDAgMCAxIDExMS4zMTggMjcyLjQ2MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTEuMzE4IC0yNzIuNDYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTEuMzE4IDI3Mi40NjEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLWYpIDExLjk1NTEgVGoKLVsxIDAgMCAxIDEyMy4yNzMgMjcyLjQ2MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMjMuMjczIC0yNzIuNDYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMjMuMjczIDI3Mi40NjEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXCksKSA1LjgwODIgVGoKLS0yNTAgVEptCi0oaG8pIDkuOTYyNiBUagotMjUgVEptCi0od2UpIDExLjYxNjQgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXIpIDcuNzQwOTQgVGoKLTQwIFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yNTAgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0yNTAgVEptCi0od2lsbCkgMTUuNTAxOCBUagotLTI1MCBUSm0KLShwYXNzKSAxNy4xNTU2IFRqCi0tMjUwIFRKbQotKHN1Y2gpIDE4LjI2MTQgVGoKLS0yNTAgVEptCi0oXDAwMmxlcykgMTYuNjA3NyBUagotLTI1MCBUSm0KLSh0aHJvdWdoKSAzMC45OTM2IFRqCi0tMjUwIFRKbQotKHVubW9kaVwwMDJlZC4pIDQ3Ljg4MDMgVGoKLS0zMTAgVEptCi0oVGhpcykgMTcuNzEzNSBUagotLTI1MCBUSm0KLShpcykgNi42NDUwNSBUagotLTI1MCBUSm0KLShobykgOS45NjI2IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotLTI1MCBUSm0KLShHTlUpIDIxLjU3OSBUagotWzEgMCAwIDEgNDEyLjU4NSAyNzIuNDYxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQxMi41ODUgLTI3Mi40NjFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxMi41ODUgMjcyLjQ2MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShnemlwKSAyMy45MTAyIFRqCi1bMSAwIDAgMSA0MzYuNDk2IDI3Mi40NjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDM2LjQ5NiAtMjcyLjQ2MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDM4Ljk4NiAyNzIuNDYxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGJlaGEpIDE4LjgwOTQgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXMuKSAxMC43ODk1IFRqCi1bMSAwIDAgMSA3MiAyNzAuMzA0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMy44NjY1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44NDQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yNTYuNTk0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyNDYuNzk1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC1rKSAxMS45NTUxIFRqCi0tNjAwIFRKbQotKC0ta2VlcCkgMzUuODY1NCBUagotWzEgMCAwIDEgMTI1Ljc5OCAyNDYuNzk1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTYuMjg4OSAtMS41MzQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yNDUuMjYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDggMjM0Ljg0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEspIDcuMTkzIFRqCi0yNSBUSm0KLShlZXApIDEzLjgyODEgVGoKLS0yNTAgVEptCi0oXChkb24nKSAyMS41NzkgVGoKLTE4IFRKbQotKHQpIDIuNzY5NiBUagotLTI1MCBUSm0KLShkZWxldGVcKSkgMjcuMTA4MiBUagotLTI1MCBUSm0KLShpbnB1dCkgMjAuNDgzMSBUagotLTI1MCBUSm0KLShcMDAybGVzKSAxNi42MDc3IFRqCi0tMjUwIFRKbQotKGR1cmluZykgMjYuMDEyMyBUagotLTI1MCBUSm0KLShjb21wcmVzc2lvbikgNTAuMzYwOSBUagotLTI1MCBUSm0KLShvcikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShkZWNvbXByZXNzaW9uLikgNjIuMjU2MyBUagotWzEgMCAwIDEgNzIgMjMyLjY4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTMuODY2NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuODQ0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjE4Ljk3M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjA5LjE3NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgtcykgMTEuOTU1MSBUagotLTYwMCBUSm0KLSgtLXNtYWxsKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAxMzEuNzc2IDIwOS4xNzRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC02Mi4yNjY1IC0wLjE1NDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIwOS4wMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA4IDE5Ny4yMTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUmVkdWNlKSAyOS44Nzc4IFRqCi0tMzQ3IFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotLTM0NyBUSm0KLSh1c2FnZSwpIDI1LjE3NTUgVGoKLS0zNzEgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMzQ2IFRKbQotKGNvbXByZXNzaW9uLCkgNTIuODUxNiBUagotLTM3MSBUSm0KLShkZWNvbXByZXNzaW9uKSA1OS43NjU2IFRqCi0tMzQ3IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzQ3IFRKbQotKHRlc3RpbmcuKSAyOS4wNjA5IFRqCi0tMTIwMSBUSm0KLShGaWxlcykgMTkuMzc3MyBUagotLTM0NyBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0zNDcgVEptCi0oZGVjb21wcmVzc2VkKSA1Ni40MzgxIFRqCi0tMzQ2IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzQ3IFRKbQotKHRlc3RlZCkgMjMuMjQyNyBUagotMTA4IDE4NS4yNjQgVGQKLSh1c2luZykgMjEuNTg5IFRqCi0tMzg4IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zODggVEptCi0obW9kaVwwMDJlZCkgMzUuNDI3IFRqCi0tMzg4IFRKbQotKGFsZ29yaXRobSkgMzguNzQ0NiBUagotLTM4OSBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTM4OCBUSm0KLShvbmx5KSAxNy43MTM1IFRqCi0tMzg4IFRKbQotKHJlcXVpcmVzKSAzMi4wODk1IFRqCi0tMzg4IFRKbQotKDIuNSkgMTIuNDUzMyBUagotLTM4OCBUSm0KLShieXRlcykgMjEuMDMxIFRqCi0tMzg4IFRKbQotKHBlcikgMTIuNzIyMiBUagotLTM4OCBUSm0KLShibG9jaykgMjIuMTM2OSBUagotLTM4OSBUSm0KLShieXRlLikgMTkuNjQ2MiBUagotLTE0NDggVEptCi0oVGhpcykgMTcuNzEzNSBUagotLTM4OSBUSm0KLShtZWFucykgMjUuNDU0NCBUagotLTM4OCBUSm0KLShhbikgOS40MDQ2OSBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMzg4IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTM4OCBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0zODggVEptCi0oYmUpIDkuNDA0NjkgVGoKLTEwOCAxNzMuMzA5IFRkCi0oZGVjb21wcmVzc2VkKSA1Ni40MzgxIFRqCi0tMjUwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oMjMwMGspIDI0LjkwNjUgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjUwIFRKbQotKGFsYmVpdCkgMjIuMTM2OSBUagotLTI1MCBUSm0KLShhdCkgNy4xOTMgVGoKLS0yNTAgVEptCi0oYWJvdXQpIDIyLjEzNjkgVGoKLS0yNTAgVEptCi0oaGFsZikgMTUuNDkxOCBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0obm9ybWFsKSAyOC4yMjQgVGoKLS0yNTAgVEptCi0oc3BlZWQuKSAyNS4xNzU1IFRqCi1bMSAwIDAgMSA3MiAxNzEuMTUyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44NDQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xNjEuMzA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDggMTUxLjUxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKER1cmluZykgMjguMjI0IFRqCi0tMjUyIFRKbQotKGNvbXByKSAyNS40NTQ0IFRqCi0xIFRKbQotKGVzc2lvbiwpIDI3LjM5NzIgVGoKLVsxIDAgMCAxIDE5NC4wOSAxNTEuNTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTk0LjA5IC0xNTEuNTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5NC4wOSAxNTEuNTEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLXMpIDExLjk1NTEgVGoKLVsxIDAgMCAxIDIwNi4wNDYgMTUxLjUxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwNi4wNDYgLTE1MS41MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjA4LjU1MSAxNTEuNTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc2VsZWN0cykgMjYuNTYwMyBUagotLTI1MSBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUyIFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjUxIFRKbQotKHNpemUpIDE1LjQ5MTggVGoKLS0yNTIgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTIgVEptCi0oMjAwaywpIDIyLjQxNTkgVGoKLS0yNTEgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0yNTIgVEptCi0obGltaXRzKSAyMi43MDQ4IFRqCi0tMjUxIFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotLTI1MiBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0yNTEgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MiBUSm0KLShhcm91bmQpIDI3LjY2NjEgVGoKLS0yNTEgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUyIFRKbQotKHNhbWUpIDIwLjQ3MzEgVGoKLS0yNTEgVEptCi0oXDAwMmd1cmUsKSAyNS43MzM0IFRqCi0tMjUyIFRKbQotKGF0KSA3LjE5MyBUagotMTA4IDEzOS41NTQgVGQKLSh0aGUpIDEyLjE3NDMgVGoKLS0yODcgVEptCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeHBlbnNlKSAyNy42NjYxIFRqCi0tMjg3IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjg4IFRKbQotKHlvdXIpIDE4LjI2MTQgVGoKLS0yODcgVEptCi0oY29tcHJlc3Npb24pIDUwLjM2MDkgVGoKLS0yODcgVEptCi0ocmF0aW8uKSAyMC43NTIxIFRqCi0tODQzIFRKbQotKEluKSA4LjI5ODg1IFRqCi0tMjg3IFRKbQotKHNob3J0LCkgMjIuNDE1OSBUagotLTI5NyBUSm0KLShpZikgNi4wODcxNSBUagotLTI4NyBUSm0KLSh5b3VyKSAxOC4yNjE0IFRqCi0tMjg3IFRKbQotKG1hY2hpbmUpIDMzLjc1MzMgVGoKLS0yODcgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yODcgVEptCi0obG8pIDcuNzUwOSBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yODcgVEptCi0ob24pIDkuOTYyNiBUagotLTI4OCBUSm0KLShtZW1vcnkpIDMzLjIwNTMgVGoKLS0yODcgVEptCi0oXCg4KSA4LjI5ODg1IFRqCi0tMjg3IFRKbQotKG1lKSAxMi4xNzQzIFRqCi0xNSBUSm0KLShnKSA0Ljk4MTMgVGoKLTUgVEptCi0oYWJ5dGVzKSAyNS40NTQ0IFRqCi0tMjg3IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjg3IFRKbQotKGxlc3NcKSwpIDIwLjc1MjEgVGoKLTEwOCAxMjcuNTk5IFRkCi0odXNlKSAxMy4yODAxIFRqCi1bMSAwIDAgMSAxMjMuNzcxIDEyNy41OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTIzLjc3MSAtMTI3LjU5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTIzLjc3MSAxMjcuNTk5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC1zKSAxMS45NTUxIFRqCi1bMSAwIDAgMSAxMzUuNzI2IDEyNy41OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTM1LjcyNiAtMTI3LjU5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTM4LjIxNiAxMjcuNTk5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGZvcikgMTEuNjE2NCBUagotLTI1MCBUSm0KLShlKSA0LjQyMzM5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyeXRoaW5nLikgMzUuNjk2IFRqCi0tNjIwIFRKbQotKFNlZSkgMTQuMzg2IFRqCi1bMSAwIDAgMSAyMjAuMDc5IDEyNy41OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDFdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDFdIFNDCi1bMSAwIDAgMSAtMjIwLjA3OSAtMTI3LjU5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjIwLjA3OSAxMjcuNTk5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKE1FTU9SKSAzNy42Mzg3IFRqCi02NSBUSm0KLShZKSA3LjE5MyBUagotLTI1MCBUSm0KLShNQU4pIDIzLjI0MjcgVGoKLTM1IFRKbQotKEEpIDcuMTkzIFRqCi00MCBUSm0KLShHRU1FTlQpIDQxLjUwNDIgVGoKLVsxIDAgMCAxIDMzNy45NDYgMTI3LjU5OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLVsxIDAgMCAxIC0zMzcuOTQ2IC0xMjcuNTk5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNDAuNDM3IDEyNy41OTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oWzVdKSAxMS42MTY0IFRqCi1bMSAwIDAgMSAzNTIuMDUzIDEyNy41OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDFdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDFdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzUyLjA1MyAtMTI3LjU5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzU0LjU0NCAxMjcuNTk5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGJlbG8pIDE3LjE1NTYgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAxMjUuNDQzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMy44NjY1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44NDQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xMTEuNzMyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxMDEuOTM0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC1xKSAxMS45NTUxIFRqCi0tNjAwIFRKbQotKC0tcXVpZXQpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDEzMS43NzYgMTAxLjkzNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTYyLjI2NjUgLTEuNTM0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTAwLjM5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA4IDg5Ljk3ODQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oU3VwcHJlc3MpIDM1Ljk3NDkgVGoKLS0yMjEgVEptCi0obm9uLWVzc2VudGlhbCkgNTIuNTcyNiBUagotLTIyMCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXJuaW5nKSAyNS40NTQ0IFRqCi0tMjIxIFRKbQotKG1lc3NhZ2VzLikgNDAuMTE5NCBUagotLTMwMCBUSm0KLShNZXNzYWdlcykgMzguNzM0NiBUagotLTIyMSBUSm0KLShwZXJ0YWluaW5nKSA0MC4zOTgzIFRqCi0tMjIxIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yMjAgVEptCi0oSS9PKSAxMy4yODAxIFRqCi0tMjIxIFRKbQotKGVycm9ycykgMjMuMjMyOCBUagotLTIyMSBUSm0KLShhbmQpIDE0LjM4NiBUagotLTIyMCBUSm0KLShvdGhlcikgMjAuNDczMSBUagotLTIyMSBUSm0KLShjcml0aWNhbCkgMjcuNjY2MSBUagotLTIyMSBUSm0KLShlKSA0LjQyMzM5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVudHMpIDE2LjA0OTcgVGoKLS0yMjEgVEptCi0od2kpIDkuOTYyNiBUagotMSBUSm0KLShsbCkgNS41MzkyMSBUagotLTIyMSBUSm0KLShub3QpIDEyLjczMjIgVGoKLTEwOCA3OC4wMjMyIFRkCi0oYmUpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oc3VwcHJlc3NlZC4pIDQ2LjIwNjUgVGoKLVsxIDAgMCAxIDcyIDc1Ljg2NjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zLjg2NjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yMS4xNDgyXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0My4wNjMzIC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjMzMiAtNTAuODUxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM5LjM5NSA1MC44NTE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDQpIDQuOTgxMyBUagotWzEgMCAwIDEgNDUzLjI2OSA1MC44NTE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgOTMuNTk4NSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi4yNzY1IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotUQotc2hvd3BhZ2UKLSUlUGFnZVRyYWlsZXIKLXBkZkVuZFBhZ2UKLSUlUGFnZTogOCA4Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxMDUuNTE5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzcxLjU5IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NzcuMTA5IDc0OS4yNDUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSG8pIDEyLjE3NDMgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKGJ6aXAyKSAyMi4xMzY5IFRqCi1bMSAwIDAgMSAyNjYuMDcxIDc0Ny4wODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMjEuNTU0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNzIwXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA3MTAuMDM3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC12KSAxMS45NTUxIFRqCi0tNjAwIFRKbQotKC0tdmVyYm9zZSkgNTMuNzk4IFRqCi1bMSAwIDAgMSAxNDMuNzMxIDcxMC4wMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03NC4yMjE3IC0wLjE1NDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTcwOS44ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA2OTguMDgyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFYpIDcuMTkzIFRqCi0xMTEgVEptCi0oZXJib3NlKSAyNi4wMDI0IFRqCi0tMzIzIFRKbQotKG1vZGUpIDIyLjEzNjkgVGoKLS0zMjIgVEptCi0oLS0pIDYuNjM1MDkgVGoKLS0zMjMgVEptCi0oc2hvKSAxMy44MzgxIFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotLTMyMiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMjMgVEptCi0oY29tcHJlc3Npb24pIDUwLjM2MDkgVGoKLS0zMjMgVEptCi0ocmF0aW8pIDE4LjI2MTQgVGoKLS0zMjIgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMzIzIFRKbQotKGVhY2gpIDE4LjI1MTUgVGoKLS0zMjIgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMzIzIFRKbQotKHByb2Nlc3NlZC4pIDQxLjc3MzIgVGoKLS0xMDU2IFRKbQotKEZ1cnRoZXIpIDI5LjMyOTkgVGoKLVsxIDAgMCAxIDQzMC4wMTUgNjk4LjA4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MzAuMDE1IC02OTguMDgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MzAuMDE1IDY5OC4wODIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLXYpIDExLjk1NTEgVGoKLVsxIDAgMCAxIDQ0MS45NyA2OTguMDgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0MS45NyAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDQxLjk3IDY5OC4wODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oJykgMy4zMTc1NSBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTMyMyBUSm0KLShpbmNyZWFzZSkgMzIuNjM3NSBUagotLTMyMiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMjMgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcmJvc2l0eSkgMzIuMDk5NSBUagotMTA4IDY4Ni4xMjcgVGQKLShsZSkgNy4xOTMgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWwsKSA5LjY4MzY1IFRqCi0tMjUwIFRKbQotKHNwZSkgMTMuMjgwMSBUagotMjUgVEptCi0od2luZykgMTkuOTI1MiBUagotLTI1MCBUSm0KLShvdXQpIDEyLjczMjIgVGoKLS0yNTAgVEptCi0obG90cykgMTQuMzk2IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGluZm9ybWF0aW9uKSA0Ny4wNDM0IFRqCi0tMjUwIFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKHByaW1hcmlseSkgMzcuMDgwOCBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShpbnRlcmVzdCkgMjkuMzI5OSBUagotLTI1MCBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNTAgVEptCi0oZGlhZ25vc3RpYykgNDAuOTU2MiBUagotLTI1MCBUSm0KLShwdXJwb3Nlcy4pIDM3LjkwNzcgVGoKLVsxIDAgMCAxIDcyIDY4My45N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTMuOTg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02NzAuMDIzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2NjAuMjI0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC1MKSAxMS45NTUxIFRqCi0tNjAwIFRKbQotKC0tbGljZW5zZSkgNTMuNzk4IFRqCi0tNjAwIFRKbQotKC1WKSAxMS45NTUxIFRqCi0tNjAwIFRKbQotKC0tdmVyc2lvbikgNTMuNzk4IFRqCi1bMSAwIDAgMSAyMjEuNDQgNjYwLjIyNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1MS45MyAtMC4xNTQ0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02NjAuMDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA2NDguMjY5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKERpc3BsYXkpIDMwLjk5MzYgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHNvZnR3KSAyMi4xMzY5IFRqCi0xMCBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnNpb24sKSAyNi44MzkyIFRqCi0tMjUwIFRKbQotKGxpY2Vuc2UpIDI3LjY2NjEgVGoKLS0yNTAgVEptCi0odGVybXMpIDIyLjEzNjkgVGoKLS0yNTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNTAgVEptCi0oY29uZGl0aW9ucy4pIDQ0LjAwNDggVGoKLVsxIDAgMCAxIDcyIDY0Ni4xMTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zLjk4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjMyLjE2NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjIyLjM2NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgtMSkgMTEuOTU1MSBUagotWzEgMCAwIDEgODMuOTU1MiA2MjIuMzY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTgzLjk1NTIgLTYyMi4zNjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2LjQ0NTggNjIyLjM2NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcKG9yKSAxMS42MTY0IFRqCi1bMSAwIDAgMSAxMDAuNTUzIDYyMi4zNjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTAwLjU1MyAtNjIyLjM2Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTAwLjU1MyA2MjIuMzY2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC0tZmFzdCkgMzUuODY1NCBUagotWzEgMCAwIDEgMTM2LjQxOCA2MjIuMzY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzNi40MTggLTYyMi4zNjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzNi40MTggNjIyLjM2NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcKSkgMy4zMTc1NSBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi1bMSAwIDAgMSAxNTIuNDY4IDYyMi4zNjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTUyLjQ2OCAtNjIyLjM2Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTUyLjQ2OCA2MjIuMzY2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC05KSAxMS45NTUxIFRqCi1bMSAwIDAgMSAxNjQuNDIzIDYyMi4zNjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY0LjQyMyAtNjIyLjM2Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY2LjkxNCA2MjIuMzY2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwob3IpIDExLjYxNjQgVGoKLVsxIDAgMCAxIDE4MS4wMjEgNjIyLjM2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODEuMDIxIC02MjIuMzY2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODEuMDIxIDYyMi4zNjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLWJlc3QpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDIxMC45MDkgNjIyLjM2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTAuOTA5IC02MjIuMzY2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTAuOTA5IDYyMi4zNjYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXCkpIDMuMzE3NTUgVGoKLVsxIDAgMCAxIDIxNC4yMjYgNjIyLjM2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDIuMjI2IC0xLjc4MzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYyMC41ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA2MTAuNDExIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFNldCkgMTIuNzMyMiBUagotLTI4OCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yODkgVEptCi0oYmxvY2spIDIyLjEzNjkgVGoKLS0yODggVEptCi0oc2l6ZSkgMTUuNDkxOCBUagotLTI4OCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjg4IFRKbQotKDEwMCkgMTQuOTQzOSBUagotLTI4OSBUSm0KLShrLCkgNy40NzE5NSBUagotLTI5OCBUSm0KLSgyMDApIDE0Ljk0MzkgVGoKLS0yODggVEptCi0oaykgNC45ODEzIFRqCi0tMjg4IFRKbQotKC4uLikgNy40NzE5NSBUagotLTg1MCBUSm0KLSg5MDApIDE0Ljk0MzkgVGoKLS0yODggVEptCi0oaykgNC45ODEzIFRqCi0tMjg4IFRKbQotKHdoZW4pIDIxLjU3OSBUagotLTI4OSBUSm0KLShjb21wcmVzc2luZy4pIDUyLjg1MTYgVGoKLS04NDkgVEptCi0oSGFzKSAxNS40OTE4IFRqCi0tMjg5IFRKbQotKG5vKSA5Ljk2MjYgVGoKLS0yODggVEptCi0oZWYpIDcuNzQwOTQgVGoKLTI1IFRKbQotKGZlY3QpIDE0LjkzMzkgVGoKLS0yODggVEptCi0od2hlbikgMjEuNTc5IFRqCi0tMjg4IFRKbQotKGRlY29tcHJlc3NpbmcuKSA2Mi4yNTYzIFRqCi0tODUwIFRKbQotKFNlZSkgMTQuMzg2IFRqCi1bMSAwIDAgMSAxMDggNTk4LjQ1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLVsxIDAgMCAxIC0xMDggLTU5OC40NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA1OTguNDU2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKE1FTU9SKSAzNy42Mzg3IFRqCi02NSBUSm0KLShZKSA3LjE5MyBUagotLTI5NyBUSm0KLShNQU4pIDIzLjI0MjcgVGoKLTM1IFRKbQotKEEpIDcuMTkzIFRqCi00MCBUSm0KLShHRU1FTlQpIDQxLjUwNDIgVGoKLVsxIDAgMCAxIDIyNi4zMzggNTk4LjQ1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLVsxIDAgMCAxIC0yMjYuMzM4IC01OTguNDU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjkuMyA1OTguNDU2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFs1XSkgMTEuNjE2NCBUagotWzEgMCAwIDEgMjQwLjkxNiA1OTguNDU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAxXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAxXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0MC45MTYgLTU5OC40NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI0My44NzggNTk4LjQ1NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShiZWxvKSAxNy4xNTU2IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTkwNCBUSm0KLShUaGUpIDE1LjQ5MTggVGoKLVsxIDAgMCAxIDI5Ny4yNzggNTk4LjQ1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yOTcuMjc4IC01OTguNDU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTcuMjc4IDU5OC40NTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLS1mYXN0KSAzNS44NjU0IFRqCi1bMSAwIDAgMSAzMzMuMTQ0IDU5OC40NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzMzLjE0NCAtNTk4LjQ1Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzM2LjEwNiA1OTguNDU2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAzNTMuNDU0IDU5OC40NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzUzLjQ1NCAtNTk4LjQ1Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzUzLjQ1NCA1OTguNDU2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC0tYmVzdCkgMzUuODY1NCBUagotWzEgMCAwIDEgMzg5LjMxOSA1OTguNDU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM4OS4zMTkgLTU5OC40NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM5Mi4yODEgNTk4LjQ1NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbGlhc2VzKSAyNi41NjAzIFRqCi0tMjk3IFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTI5OCBUSm0KLShwcmltYXJpbHkpIDM3LjA4MDggVGoKLS0yOTcgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMjk3IFRKbQotKEdOVSkgMjEuNTc5IFRqCi1bMSAwIDAgMSA1MTYuMDkgNTk4LjQ1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTYuMDkgLTU5OC40NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUxNi4wOSA1OTguNDU2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGd6aXApIDIzLjkxMDIgVGoKLVsxIDAgMCAxIDU0MCA1OTguNDU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtNTk4LjQ1Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA4IDU4Ni41MDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oY29tcGF0aWJpbGl0eSkgNTMuMTQwNSBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTM1NiBUSm0KLShJbikgOC4yOTg4NSBUagotLTI2NSBUSm0KLShwYXJ0aWN1bGFyKSAzOC4xNzY3IFRqCi00MCBUSm0KLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAyMjAuNDIzIDU4Ni41MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjIwLjQyMyAtNTg2LjUwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjIwLjQyMyA1ODYuNTAxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC0tZmFzdCkgMzUuODY1NCBUagotWzEgMCAwIDEgMjU2LjI4OCA1ODYuNTAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1Ni4yODggLTU4Ni41MDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1OC45MzIgNTg2LjUwMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShkb2VzbicpIDI2LjU2MDMgVGoKLTE4IFRKbQotKHQpIDIuNzY5NiBUagotLTI2NSBUSm0KLShtYWspIDE3LjE1NTYgVGoKLTEwIFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yNjYgVEptCi0odGhpbmdzKSAyNC4zNTg2IFRqCi0tMjY1IFRKbQotKHNpZ25pXDAwMmNhbnRseSkgNDkuMjY1MSBUagotLTI2NSBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhc3RlcikgMTguODA5NCBUagotNTUgVEptCi0oLikgMi40OTA2NSBUagotLTcxMiBUSm0KLShBbmQpIDE3LjE1NTYgVGoKLVsxIDAgMCAxIDQ0NC42MjIgNTg2LjUwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuNjIyIC01ODYuNTAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDQuNjIyIDU4Ni41MDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLS1iZXN0KSAzNS44NjU0IFRqCi1bMSAwIDAgMSA0ODAuNDg3IDU4Ni41MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDgwLjQ4NyAtNTg2LjUwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDgzLjEzMSA1ODYuNTAxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKG1lcmVseSkgMjcuNjY2MSBUagotLTI2NSBUSm0KLShzZWxlY3RzKSAyNi41NjAzIFRqCi0xMDggNTc0LjU0NiBUZAotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShkZWYpIDEyLjcyMjIgVGoKLTEwIFRKbQotKGF1bHQpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0oYmVoYSkgMTguODA5NCBUagotMjAgVEptCi0odmlvdXIpIDIxLjAzMSBUagotNTUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgNTc0LjQ0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTMuOTg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01NjAuNDk4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1NDguNjQzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC0tKSAxMS45NTUxIFRqCi1bMSAwIDAgMSA4My45NTUyIDU0OC42NDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNC40NDU4IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU0OC42NDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA1MzYuNjg4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFQpIDYuMDg3MTUgVGoKLTM1IFRKbQotKHJlYXRzKSAxOC44MDk0IFRqCi0tMjYxIFRKbQotKGFsbCkgOS45NjI2IFRqCi0tMjYxIFRKbQotKHN1YnNlcXVlbnQpIDQ0LjI3MzggVGoKLS0yNjAgVEptCi0oYXIpIDcuNzQwOTQgVGoKLTE4IFRKbQotKGd1bWVudHMpIDMzLjc2MzMgVGoKLS0yNjEgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yNjEgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMjYxIFRKbQotKG5hbWVzLCkgMjcuOTQ1MSBUagotLTI2MyBUSm0KLShlKSA0LjQyMzM5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVuKSA5LjQwNDY5IFRqCi0tMjYxIFRKbQotKGlmKSA2LjA4NzE1IFRqCi0tMjYxIFRKbQotKHRoZSkgMTIuMTc0MyBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMjYwIFRKbQotKHN0YXJ0KSAxNy4xNTU2IFRqCi0tMjYxIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yNjEgVEptCi0oYSkgNC40MjMzOSBUagotLTI2MSBUSm0KLShkYXNoLikgMjAuNzUyMSBUagotLTY4NSBUSm0KLShUaGlzKSAxNy43MTM1IFRqCi0tMjYwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjYxIFRKbQotKHNvKSA4Ljg1Njc1IFRqCi0tMjYxIFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI2MSBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0yNjAgVEptCi0oaGFuZGxlKSAyNi41NjAzIFRqCi0tMjYxIFRKbQotKFwwMDJsZXMpIDE2LjYwNzcgVGoKLTEwOCA1MjQuNzMyIFRkCi0od2l0aCkgMTcuNzEzNSBUagotLTI1MCBUSm0KLShuYW1lcykgMjUuNDU0NCBUagotLTI1MCBUSm0KLShiZSkgOS40MDQ2OSBUagotMTUgVEptCi0oZ2lubmluZykgMzAuNDQ1NyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oZGFzaCwpIDIwLjc1MjEgVGoKLS0yNTAgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMjUwIFRKbQotKGUpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHhhbXBsZTopIDMyLjA5OTUgVGoKLVsxIDAgMCAxIDMwMi4yNyA1MjQuNzMyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMwMi4yNyAtNTI0LjczMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzAyLjI3IDUyNC43MzIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLS02MDAgVEptCi0oLS0pIDExLjk1NTEgVGoKLS02MDAgVEptCi0oLW15ZmlsZW5hbWUpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDQyMS44MjEgNTI0LjczMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MjEuODIxIC01MjQuNzMyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MjEuODIxIDUyNC43MzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgNTIyLjU3Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTMuOTg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01MDguNjI4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0OTguODMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLS1yZXBldGl0aXZlLWZhc3QpIDEwMS42MTkgVGoKLVsxIDAgMCAxIDE3My42MTkgNDk4LjgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3My42MTkgLTQ5OC44M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTczLjYxOSA0OTguODMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMTc4LjYgNDk4LjgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODMuNTgyIC00OTguODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE4My41ODIgNDk4LjgzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC0tcmVwZXRpdGl2ZS1iZXN0KSAxMDEuNjE5IFRqCi1bMSAwIDAgMSAyODUuMiA0OTguODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTUuNjkxIC0xLjUzNDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQ5Ny4yOTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA0ODYuODc0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoZXNlKSAyMy43OTA3IFRqCi0tMjA3IFRKbQotKFwwMDNhZ3MpIDE4LjgxOTQgVGoKLS0yMDYgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMjA3IFRKbQotKHJlZHVuZGFudCkgMzkuODQwNCBUagotLTIwNyBUSm0KLShpbikgNy43NTA5IFRqCi0tMjA2IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9ucykgMjguMjI0IFRqCi0tMjA3IFRKbQotKDAuOS41KSAxOS45MjUyIFRqCi0tMjA3IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjA2IFRKbQotKGFibykgMTQuMzg2IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUuKSA2LjkxNDA0IFRqCi0tNTkxIFRKbQotKFRoZSkgMTUuNDkxOCBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMjA3IFRKbQotKHBybykgMTMuMjgwMSBUagotMTUgVEptCi0odmlkZWQpIDIyLjEzNjkgVGoKLS0yMDcgVEptCi0oc29tZSkgMjEuMDMxIFRqCi0tMjA3IFRKbQotKGMpIDQuNDIzMzkgVGoKLTEgVEptCi0obykgNC45ODEzIFRqCi0tMSBUSm0KLShhKSA0LjQyMzM5IFRqCi0xIFRKbQotKHJzZSkgMTEuNjE2NCBUagotLTIwNyBUSm0KLShjb250cm9sKSAyOC4yMjQgVGoKLS0yMDcgVEptCi0obykgNC45ODEzIFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyKSA3Ljc0MDk0IFRqCi0tMjA3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIwNiBUSm0KLShiZWhhKSAxOC44MDk0IFRqCi0yMCBUSm0KLSh2aW91cikgMjEuMDMxIFRqCi0xMDggNDc0LjkxOSBUZAotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MSBUSm0KLShzb3J0aW5nKSAyNy42NzYxIFRqCi0tMjUwIFRKbQotKGFsZ29yaXRobSkgMzguNzQ0NiBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjUxIFRKbQotKGVhcmxpZXIpIDI1LjQ0NDUgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnNpb25zLCkgMzAuNzE0NyBUagotLTI1MCBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTI1MSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0oc29tZXRpbWVzKSA0Mi42MiBUagotLTI1MCBUSm0KLSh1c2VmdWwuKSAyNi44MzkyIFRqCi0tNjIyIFRKbQotKDAuOS41KSAxOS45MjUyIFRqCi0tMjUxIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKGFibykgMTQuMzg2IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI1MSBUSm0KLShhbikgOS40MDQ2OSBUagotLTI1MCBUSm0KLShpbXBybykgMjMuODAwNyBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlZCkgOS40MDQ2OSBUagotMTA4IDQ2Mi45NjQgVGQKLShhbGdvcml0aG0pIDM4Ljc0NDYgVGoKLS0yNTAgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0yNTAgVEptCi0ocmVuZGVycykgMjkuMzE5OSBUagotLTI1MCBUSm0KLSh0aGVzZSkgMjAuNDczMSBUagotLTI1MCBUSm0KLShcMDAzYWdzKSAxOC44MTk0IFRqCi0tMjUwIFRKbQotKGlycmVsZSkgMjEuMDIxMSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbnQuKSAxNC42NjQ5IFRqCi1bMSAwIDAgMSA3MiA0NjAuODA3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMy45ODVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQzNi44OTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQxNC4yNjQgVGQKLS9GMTIyXzAgMjAuNjU4NSBUZgotKDIuNS4pIDM0LjQ1ODQgVGoKLS0yNzggVEptCi0oTUVNT1IpIDc5LjE4NCBUagotNTAgVEptCi0oWSkgMTMuNzc5MiBUagotLTI3OCBUSm0KLShNQU5BKSA2MS45NTQ4IFRqCi01MCBUSm0KLShHRU1FTlQpIDg4LjM3NzEgVGoKLVsxIDAgMCAxIDcyIDQxNC4wMDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQwNC4wNDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM5Mi4zNDYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDEwMS44ODggMzkyLjM0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMDEuODg4IC0zOTIuMzQ2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDQuNDU0IDM5Mi4zNDYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oY29tcHJlc3NlcykgNDUuOTI3NiBUagotLTI1OCBUSm0KLShsYXIpIDEwLjUxMDUgVGoKLTE4IFRKbQotKGdlKSA5LjQwNDY5IFRqCi0tMjU3IFRKbQotKFwwMDJsZXMpIDE2LjYwNzcgVGoKLS0yNTggVEptCi0oaW4pIDcuNzUwOSBUagotLTI1NyBUSm0KLShibG9ja3MuKSAyOC41MDMgVGoKLS02NjYgVEptCi0oVGhlKSAxNS40OTE4IFRqCi0tMjU3IFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjU4IFRKbQotKHNpemUpIDE1LjQ5MTggVGoKLS0yNTggVEptCi0oYWYpIDcuNzQwOTQgVGoKLTI1IFRKbQotKGZlY3RzKSAxOC44MDk0IFRqCi0tMjU3IFRKbQotKGJvdGgpIDE3LjcxMzUgVGoKLS0yNTggVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjU3IFRKbQotKGNvbXByZXNzaW9uKSA1MC4zNjA5IFRqCi0tMjU4IFRKbQotKHJhdGlvKSAxOC4yNjE0IFRqCi0tMjU3IFRKbQotKGFjaGllKSAyMS4wMjExIFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVkLCkgMTEuODk1MyBUagotLTI2MCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI1OCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTcgVEptCi0oYW1vdW50KSAyOS44ODc4IFRqCi03MiAzODAuMzkxIFRkCi0ob2YpIDguMjk4ODUgVGoKLS0yMTUgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMjE1IFRKbQotKG5lZWRlZCkgMjguMjE0MSBUagotLTIxNSBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yMTUgVEptCi0oY29tcHJlc3Npb24pIDUwLjM2MDkgVGoKLS0yMTQgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yMTUgVEptCi0oZGVjb21wcmVzc2lvbi4pIDYyLjI1NjMgVGoKLS01OTcgVEptCi0oVGhlKSAxNS40OTE4IFRqCi0tMjE1IFRKbQotKFwwMDNhZ3MpIDE4LjgxOTQgVGoKLVsxIDAgMCAxIDMzNy43MTkgMzgwLjM5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMzcuNzE5IC0zODAuMzkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMzcuNzE5IDM4MC4zOTEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLTEpIDExLjk1NTEgVGoKLVsxIDAgMCAxIDM0OS42NzQgMzgwLjM5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNDkuNjc0IC0zODAuMzkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNTEuODE1IDM4MC4zOTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odGhyb3VnaCkgMzAuOTkzNiBUagotWzEgMCAwIDEgMzg0Ljk1IDM4MC4zOTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzg0Ljk1IC0zODAuMzkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zODQuOTUgMzgwLjM5MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgtOSkgMTEuOTU1MSBUagotWzEgMCAwIDEgMzk2LjkwNSAzODAuMzkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM5Ni45MDUgLTM4MC4zOTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM5OS4wNDYgMzgwLjM5MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShzcGVjaWZ5KSAyOC43NzIgVGoKLS0yMTUgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjE1IFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjE1IFRKbQotKHNpemUpIDE1LjQ5MTggVGoKLS0yMTUgVEptCi0odG8pIDcuNzUwOSBUagotLTIxNCBUSm0KLShiZSkgOS40MDQ2OSBUagotLTIxNSBUSm0KLSgxMDAsMDAwKSAzMi4zNzg1IFRqCi03MiAzNjguNDM1IFRkCi0oYnl0ZXMpIDIxLjAzMSBUagotLTI3OCBUSm0KLSh0aHJvdWdoKSAzMC45OTM2IFRqCi0tMjc3IFRKbQotKDkwMCwwMDApIDMyLjM3ODUgVGoKLS0yNzggVEptCi0oYnl0ZXMpIDIxLjAzMSBUagotLTI3OCBUSm0KLShcKHRoZSkgMTUuNDkxOCBUagotLTI3NyBUSm0KLShkZWYpIDEyLjcyMjIgVGoKLTEwIFRKbQotKGF1bHRcKSkgMTguMjYxNCBUagotLTI3OCBUSm0KLShyZXNwZWN0aSkgMzAuOTgzNyBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbHkpIDEyLjE3NDMgVGoKLTY1IFRKbQotKC4pIDIuNDkwNjUgVGoKLS03ODYgVEptCi0oQXQpIDkuOTYyNiBUagotLTI3OCBUSm0KLShkZWNvbXByZXNzaW9uKSA1OS43NjU2IFRqCi0tMjc4IFRKbQotKHRpbWUsKSAyMC4yMDQyIFRqCi0tMjg0IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI3OCBUSm0KLShibG9jaykgMjIuMTM2OSBUagotLTI3OCBUSm0KLShzaXplKSAxNS40OTE4IFRqCi0tMjc3IFRKbQotKHVzZWQpIDE4LjI2MTQgVGoKLS0yNzggVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMjc4IFRKbQotKGNvbXByZXNzaW9uKSA1MC4zNjA5IFRqCi03MiAzNTYuNDggVGQKLShpcykgNi42NDUwNSBUagotLTI0MyBUSm0KLShyZWFkKSAxNy4xNDU2IFRqCi0tMjQyIFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS0yNDMgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjQyIFRKbQotKGhlYWRlcikgMjYuNTUwMyBUagotLTI0MyBUSm0KLShvZikgOC4yOTg4NSBUagotLTI0MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDMgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI0MiBUSm0KLShcMDAybGUsKSAxNS4yMjI5IFRqCi0tMjQ0IFRKbQotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAyNzUuMTc0IDM1Ni40OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzUuMTc0IC0zNTYuNDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3NS4xNzQgMzU2LjQ4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ1bnppcDIpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDMxNy4wMTcgMzU2LjQ4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMxNy4wMTcgLTM1Ni40OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzE5LjQzMyAzNTYuNDggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odGhlbikgMTcuMTU1NiBUagotLTI0MyBUSm0KLShhbGwpIDkuOTYyNiBUagotMSBUSm0KLShvKSA0Ljk4MTMgVGoKLS0xIFRKbQotKGMpIDQuNDIzMzkgVGoKLTEgVEptCi0oYXRlcykgMTUuNDkxOCBUagotLTI0MyBUSm0KLShpdHNlbGYpIDE5LjkyNTIgVGoKLS0yNDIgVEptCi0oanVzdCkgMTQuMzk2IFRqCi0tMjQzIFRKbQotKGVub3VnaCkgMjkuMzI5OSBUagotLTI0MyBUSm0KLShtZW1vcnkpIDMzLjIwNTMgVGoKLS0yNDIgVEptCi0odG8pIDcuNzUwOSBUagotLTI0MyBUSm0KLShkZWNvbXByZXNzKSA0Ny4wMzM0IFRqCi03MiAzNDQuNTI1IFRkCi0odGhlKSAxMi4xNzQzIFRqCi0tMzAzIFRKbQotKFwwMDJsZS4pIDE1LjIyMjkgVGoKLS05NDAgVEptCi0oU2luY2UpIDIyLjEzNjkgVGoKLS0zMDQgVEptCi0oYmxvY2spIDIyLjEzNjkgVGoKLS0zMDMgVEptCi0oc2l6ZXMpIDE5LjM2NzMgVGoKLS0zMDMgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMzAzIFRKbQotKHN0b3JlZCkgMjQuMzQ4NiBUagotLTMwNCBUSm0KLShpbikgNy43NTA5IFRqCi0tMzAzIFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0zMDMgVEptCi0oXDAwMmxlcywpIDE5LjA5ODMgVGoKLS0zMTcgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0zMDMgVEptCi0oZm9sbG8pIDE4LjgxOTQgVGoKLTI1IFRKbQotKHdzKSAxMS4wNjg0IFRqCi0tMzA0IFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0zMDMgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzAzIFRKbQotKFwwMDNhZ3MpIDE4LjgxOTQgVGoKLVsxIDAgMCAxIDQwNi4zNSAzNDQuNTI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQwNi4zNSAtMzQ0LjUyNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDA2LjM1IDM0NC41MjUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLTEpIDExLjk1NTEgVGoKLVsxIDAgMCAxIDQxOC4zMDUgMzQ0LjUyNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MTguMzA1IC0zNDQuNTI1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MjEuMzI3IDM0NC41MjUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odG8pIDcuNzUwOSBUagotWzEgMCAwIDEgNDMyLjEgMzQ0LjUyNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MzIuMSAtMzQ0LjUyNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDMyLjEgMzQ0LjUyNSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgtOSkgMTEuOTU1MSBUagotWzEgMCAwIDEgNDQ0LjA1NSAzNDQuNTI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wNTUgLTM0NC41MjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ0Ny4wNzcgMzQ0LjUyNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhcmUpIDEyLjE2NDMgVGoKLS0zMDMgVEptCi0oaXJyZWxlKSAyMS4wMjExIFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFudCkgMTIuMTc0MyBUagotLTMwNCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzAzIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzAzIFRKbQotKHNvKSA4Ljg1Njc1IFRqCi03MiAzMzIuNTcgVGQKLShpZ25vcmVkKSAzMC40MzU3IFRqCi0tMjUwIFRKbQotKGR1cmluZykgMjYuMDEyMyBUagotLTI1MCBUSm0KLShkZWNvbXByZXNzaW9uLikgNjIuMjU2MyBUagotWzEgMCAwIDEgNzIgMzMwLjQxM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzIwLjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzMTAuNjUyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKENvbXByZXNzaW9uKSA1Mi41ODI2IFRqCi0tMjUwIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKGRlY29tcHJlc3Npb24pIDU5Ljc2NTYgVGoKLS0yNTAgVEptCi0ocmVxdWlyZW1lbnRzLCkgNTQuNTA1NCBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjUwIFRKbQotKGJ5dGVzLCkgMjMuNTIxNyBUagotLTI1MCBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0yNTAgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oZXN0aW1hdGVkKSAzOC4xODY2IFRqCi0tMjUwIFRKbQotKGFzOikgMTEuMDY4NCBUagotWzEgMCAwIDEgNzIgMzA4LjQ5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTYwLjc3MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggNTkuNzc1OCByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDU2LjE4OTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC0yOTkuMTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDI5OS4xMyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShDb21wcmVzc2lvbjopIDcxLjczMDcgVGoKLS0xMjc4IFRKbQotKDQwMGspIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oKykgNS45Nzc1NiBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSg4KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKHgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oYmxvY2spIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oc2l6ZSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShcKSkgNS45Nzc1NiBUagotOTAgMjc1LjIyIFRkCi0oRGVjb21wcmVzc2lvbjopIDgzLjY4NTggVGoKLS00MjYgVEptCi0oMTAwaykgMjMuOTEwMiBUagotLTQyNiBUSm0KLSgrKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKDQpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oeCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShibG9jaykgMjkuODg3OCBUagotLTQyNiBUSm0KLShzaXplKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKFwpLCkgMTEuOTU1MSBUagotLTQyNiBUSm0KLShvcikgMTEuOTU1MSBUagotMTUzLjY2IDI2My4yNjUgVGQKLSgxMDBrKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKCspIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oMi41KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKHgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oYmxvY2spIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oc2l6ZSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShcKSkgNS45Nzc1NiBUagotWzEgMCAwIDEgNzIgMjQ3LjcyM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yMzcuNzYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyMjUuODA1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKExhcikgMTMuODI4MSBUagotMTggVEptCi0oZ2VyKSAxMi43MjIyIFRqCi0tMjkyIFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjkyIFRKbQotKHNpemVzKSAxOS4zNjczIFRqCi0tMjkxIFRKbQotKGdpKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI5MiBUSm0KLShyYXBpZGx5KSAyOC4yMjQgVGoKLS0yOTIgVEptCi0oZGltaW5pc2hpbmcpIDQ3LjYxMTMgVGoKLS0yOTIgVEptCi0obWFyKSAxNS40OTE4IFRqCi0xOCBUSm0KLShnaW5hbCkgMTkuOTI1MiBUagotLTI5MSBUSm0KLShyZXR1cm5zLikgMzAuMTU2OCBUagotLTg3MSBUSm0KLShNb3N0KSAyMC40ODMxIFRqCi0tMjkyIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjkxIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5MiBUSm0KLShjb21wcmVzc2lvbikgNTAuMzYwOSBUagotLTI5MiBUSm0KLShjb21lcykgMjUuNDU0NCBUagotLTI5MiBUSm0KLShmcm9tKSAxOS4zNjczIFRqCi0tMjkxIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5MiBUSm0KLShcMDAycnN0KSAxNS41MDE4IFRqCi0tMjkyIFRKbQotKHR3KSA5Ljk2MjYgVGoKLTEwIFRKbQotKG8pIDQuOTgxMyBUagotLTI5MiBUSm0KLShvcikgOC4yOTg4NSBUagotNzIgMjEzLjg1IFRkCi0odGhyZWUpIDE5LjkxNTIgVGoKLS0yMzIgVEptCi0oaHVuZHJlZCkgMzIuNjQ3NCBUagotLTIzMiBUSm0KLShrKSA0Ljk4MTMgVGoKLS0yMzIgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yMzIgVEptCi0oYmxvY2spIDIyLjEzNjkgVGoKLS0yMzIgVEptCi0oc2l6ZSwpIDE3Ljk4MjUgVGoKLS0yMzUgVEptCi0oYSkgNC40MjMzOSBUagotLTIzMiBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhY3QpIDExLjYxNjQgVGoKLS0yMzIgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG9ydGgpIDE2LjA0OTcgVGoKLS0yMzIgVEptCi0oYmVhcmluZykgMjkuODc3OCBUagotLTIzMiBUSm0KLShpbikgNy43NTA5IFRqCi0tMjMyIFRKbQotKG1pbmQpIDIwLjQ4MzEgVGoKLS0yMzIgVEptCi0od2hlbikgMjEuNTc5IFRqCi0tMjMxIFRKbQotKHVzaW5nKSAyMS41ODkgVGoKLVsxIDAgMCAxIDM1NC4wMjUgMjEzLjg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM1NC4wMjUgLTIxMy44NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzU0LjAyNSAyMTMuODUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDM4My45MTMgMjEzLjg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM4My45MTMgLTIxMy44NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzg2LjIyMyAyMTMuODUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0ob24pIDkuOTYyNiBUagotLTIzMiBUSm0KLShzbWFsbCkgMjEuNTg5IFRqCi0tMjMyIFRKbQotKG1hY2hpbmVzLikgNDAuMTE5NCBUagotLTMwNCBUSm0KLShJdCkgNi4wODcxNSBUagotLTIzMiBUSm0KLShpcykgNi42NDUwNSBUagotLTIzMiBUSm0KLShhbHNvKSAxNi4wNDk3IFRqCi0tMjMxIFRKbQotKGltcG9ydGFudCkgMzguNzQ0NiBUagotNzIgMjAxLjg5NSBUZAotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oYXBwcmVjaWF0ZSkgNDAuOTM2MyBUagotLTI1MCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShkZWNvbXByZXNzaW9uKSA1OS43NjU2IFRqCi0tMjUwIFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotLTI1MCBUSm0KLShyZXF1aXJlbWVudCkgNDguMTM5MyBUagotLTI1MCBUSm0KLShpcykgNi42NDUwNSBUagotLTI1MCBUSm0KLShzZXQpIDExLjA2ODQgVGoKLS0yNTAgVEptCi0oYXQpIDcuMTkzIFRqCi0tMjUwIFRKbQotKGNvbXByZXNzaW9uKSA1MC4zNjA5IFRqCi0tMjUwIFRKbQotKHRpbWUpIDE3LjcxMzUgVGoKLS0yNTAgVEptCi0oYnkpIDkuOTYyNiBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oY2hvaWNlKSAyNi4wMDI0IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjUwIFRKbQotKHNpemUuKSAxNy45ODI1IFRqCi1bMSAwIDAgMSA3MiAxOTkuNzM4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xODkuNzc2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxNzkuOTc3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEYpIDUuNTM5MjEgVGoKLTE1IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMzg4IFRKbQotKFwwMDJsZXMpIDE2LjYwNzcgVGoKLS0zODkgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTM4OCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMzg5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM4OCBUSm0KLShkZWYpIDEyLjcyMjIgVGoKLTEwIFRKbQotKGF1bHQpIDE0Ljk0MzkgVGoKLS0zODkgVEptCi0oOTAwaykgMTkuOTI1MiBUagotLTM4OCBUSm0KLShibG9jaykgMjIuMTM2OSBUagotLTM4OSBUSm0KLShzaXplLCkgMTcuOTgyNSBUagotWzEgMCAwIDEgMzAyLjAwMiAxNzkuOTc3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMwMi4wMDIgLTE3OS45NzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMwMi4wMDIgMTc5Ljk3NyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShidW56aXAyKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAzNDMuODQ2IDE3OS45NzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQzLjg0NiAtMTc5Ljk3N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzQ3LjcxNSAxNzkuOTc3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLS0zODggVEptCi0ocmVxdWlyZSkgMjguMjE0MSBUagotLTM4OSBUSm0KLShhYm91dCkgMjIuMTM2OSBUagotLTM4OCBUSm0KLSgzNzAwKSAxOS45MjUyIFRqCi0tMzg5IFRKbQotKGtieXRlcykgMjYuMDEyMyBUagotLTM4OCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzg5IFRKbQotKGRlY29tcHJlc3MuKSA0OS41MjQxIFRqCi03MiAxNjguMDIyIFRkCi0oVCkgNi4wODcxNSBUagotODAgVEptCi0obykgNC45ODEzIFRqCi0tNDI0IFRKbQotKHN1cHBvcnQpIDI5Ljg4NzggVGoKLS00MjUgVEptCi0oZGVjb21wcmVzc2lvbikgNTkuNzY1NiBUagotLTQyNCBUSm0KLShvZikgOC4yOTg4NSBUagotLTQyNCBUSm0KLShhbikgOS40MDQ2OSBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tNDI1IFRKbQotKFwwMDJsKSA4LjMwODgxIFRqCi0xIFRKbQotKGUpIDQuNDIzMzkgVGoKLS00MjUgVEptCi0ob24pIDkuOTYyNiBUagotLTQyNCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tNDI0IFRKbQotKDQpIDQuOTgxMyBUagotLTQyNSBUSm0KLShtZSkgMTIuMTc0MyBUagotMTUgVEptCi0oZykgNC45ODEzIFRqCi01IFRKbQotKGFieXRlKSAyMS41NzkgVGoKLS00MjQgVEptCi0obWFjaGluZSwpIDM2LjI0MzkgVGoKLVsxIDAgMCAxIDM0OC4yNzIgMTY4LjAyMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNDguMjcyIC0xNjguMDIyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNDguMjcyIDE2OC4wMjIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnVuemlwMikgNDEuODQyOSBUagotWzEgMCAwIDEgMzkwLjExNSAxNjguMDIyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM5MC4xMTUgLTE2OC4wMjJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM5NC4zNDIgMTY4LjAyMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShoYXMpIDEzLjI4MDEgVGoKLS00MjQgVEptCi0oYW4pIDkuNDA0NjkgVGoKLS00MjUgVEptCi0ob3B0aW9uKSAyNS40NjQ0IFRqCi0tNDI0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS00MjQgVEptCi0oZGVjb21wcmVzcykgNDcuMDMzNCBUagotLTQyNCBUSm0KLSh1c2luZykgMjEuNTg5IFRqCi03MiAxNTYuMDY3IFRkCi0oYXBwcm94aW1hdGVseSkgNTcuNTUzOSBUagotLTI4MSBUSm0KLShoYWxmKSAxNS40OTE4IFRqCi0tMjgxIFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTI4MCBUSm0KLShhbW91bnQpIDI5Ljg4NzggVGoKLS0yODEgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yODEgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjg4IFRKbQotKGFib3V0KSAyMi4xMzY5IFRqCi0tMjgxIFRKbQotKDIzMDApIDE5LjkyNTIgVGoKLS0yODEgVEptCi0oa2J5dGVzLikgMjguNTAzIFRqCi0tODA1IFRKbQotKERlY29tcHJlc3Npb24pIDYxLjk3NzMgVGoKLS0yODAgVEptCi0oc3BlZWQpIDIyLjY4NDggVGoKLS0yODEgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yODEgVEptCi0oYWxzbykgMTYuMDQ5NyBUagotLTI4MSBUSm0KLShoYWx2KSAxNy4xNTU2IFRqCi0xNSBUSm0KLShlZCwpIDExLjg5NTMgVGoKLS0yODggVEptCi0oc28pIDguODU2NzUgVGoKLS0yODEgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjgxIFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotNzIgMTQ0LjExMiBUZAotKHVzZSkgMTMuMjgwMSBUagotLTI1MCBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNTAgVEptCi0ob3B0aW9uKSAyNS40NjQ0IFRqCi0tMjUwIFRKbQotKG9ubHkpIDE3LjcxMzUgVGoKLS0yNTAgVEptCi0od2hlcmUpIDI0LjMzODYgVGoKLS0yNTAgVEptCi0obmVjZXNzYXJ5KSAzOC43MjQ2IFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0tNjIwIFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTI1MCBUSm0KLShyZWxlKSAxNC45MzM5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFudCkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShcMDAzYWcpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLVsxIDAgMCAxIDMwNS4wMjQgMTQ0LjExMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDUuMDI0IC0xNDQuMTEyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMDUuMDI0IDE0NC4xMTIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLXMpIDExLjk1NTEgVGoKLVsxIDAgMCAxIDMxNi45NzkgMTQ0LjExMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMTYuOTc5IC0xNDQuMTEyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMTYuOTc5IDE0NC4xMTIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMTQxLjk1NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTMxLjk5Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTIyLjE5NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJbikgOC4yOTg4NSBUagotLTIwNCBUSm0KLShnZW5lcmFsLCkgMzEuODEwNiBUagotLTIxNCBUSm0KLSh0cnkpIDExLjA2ODQgVGoKLS0yMDQgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yMDUgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjA0IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIwNCBUSm0KLShsYXIpIDEwLjUxMDUgVGoKLTE4IFRKbQotKGdlc3QpIDE2LjA0OTcgVGoKLS0yMDUgVEptCi0oYmxvY2spIDIyLjEzNjkgVGoKLS0yMDQgVEptCi0oc2l6ZSkgMTUuNDkxOCBUagotLTIwNSBUSm0KLShtZW1vcnkpIDMzLjIwNTMgVGoKLS0yMDQgVEptCi0oY29uc3RyYWludHMpIDQzLjE2NzkgVGoKLS0yMDQgVEptCi0oYWxsbykgMTQuOTQzOSBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yMTQgVEptCi0oc2luY2UpIDIwLjQ3MzEgVGoKLS0yMDQgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTIwNSBUSm0KLShtYXhpbWlzZXMpIDQyLjYyIFRqCi0tMjA0IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIwNCBUSm0KLShjb21wcmVzc2lvbikgNTAuMzYwOSBUagotLTIwNSBUSm0KLShhY2hpZSkgMjEuMDIxMSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlZC4pIDExLjg5NTMgVGoKLTcyIDExMC4yMzkgVGQKLShDb21wcmVzc2lvbikgNTIuNTgyNiBUagotLTI1MCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI1MCBUSm0KLShkZWNvbXByZXNzaW9uKSA1OS43NjU2IFRqCi0tMjUwIFRKbQotKHNwZWVkKSAyMi42ODQ4IFRqCi0tMjUwIFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTI1MCBUSm0KLSh2aXJ0dWFsbHkpIDMzLjc2MzMgVGoKLS0yNTAgVEptCi0odW5hZikgMTcuNzAzNSBUagotMjUgVEptCi0oZmVjdGVkKSAyNC4zMzg2IFRqCi0tMjUwIFRKbQotKGJ5KSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oYmxvY2spIDIyLjEzNjkgVGoKLS0yNTAgVEptCi0oc2l6ZS4pIDE3Ljk4MjUgVGoKLVsxIDAgMCAxIDcyIDEwOC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTk4LjExOTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDg4LjMyMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBbm90aGVyKSAzMi42NDc0IFRqCi0tMjk2IFRKbQotKHNpZ25pXDAwMmNhbnQpIDQxLjUxNDIgVGoKLS0yOTYgVEptCi0ocG9pbnQpIDIwLjQ4MzEgVGoKLS0yOTUgVEptCi0oYXBwbGllcykgMjguMjI0IFRqCi0tMjk2IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yOTYgVEptCi0oXDAwMmxlcykgMTYuNjA3NyBUagotLTI5NiBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTI5NiBUSm0KLShcMDAydCkgOC4zMDg4MSBUagotLTI5NiBUSm0KLShpbikgNy43NTA5IFRqCi0tMjk2IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yOTUgVEptCi0oc2luZ2xlKSAyMy44MDA3IFRqCi0tMjk2IFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjk2IFRKbQotKC0tKSA2LjYzNTA5IFRqCi0tMjk2IFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0yOTYgVEptCi0obWVhbnMpIDI1LjQ1NDQgVGoKLS0yOTYgVEptCi0obW9zdCkgMTkuMzc3MyBUagotLTI5NSBUSm0KLShcMDAybGVzKSAxNi42MDc3IFRqCi0tMjk2IFRKbQotKHlvdScpIDE4LjI2MTQgVGoKLTUwIFRKbQotKGQpIDQuOTgxMyBUagotLTI5NiBUSm0KLShlbmNvdW50ZXIpIDM5LjI4MjUgVGoKLS0yOTYgVEptCi0odXNpbmcpIDIxLjU4OSBUagotLTI5NiBUSm0KLShhKSA0LjQyMzM5IFRqCi03MiA3Ni4zNjU4IFRkCi0obGFyKSAxMC41MTA1IFRqCi0xOCBUSm0KLShnZSkgOS40MDQ2OSBUagotLTI5MCBUSm0KLShibG9jaykgMjIuMTM2OSBUagotLTI5MCBUSm0KLShzaXplLikgMTcuOTgyNSBUagotLTg1OSBUSm0KLShUaGUpIDE1LjQ5MTggVGoKLS0yOTAgVEptCi0oYW1vdW50KSAyOS44ODc4IFRqCi0tMjkwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjkwIFRKbQotKHJlYWwpIDE0LjkzMzkgVGoKLS0yOTAgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMjg5IFRKbQotKHRvdWNoZWQpIDMxLjU0MTYgVGoKLS0yOTAgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yOTAgVEptCi0ocHJvcG9ydGlvbmFsKSA0OS4yNTUxIFRqCi0tMjkwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yOTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjkwIFRKbQotKHNpemUpIDE1LjQ5MTggVGoKLS0yOTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yOTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjg5IFRKbQotKFwwMDJsZSwpIDE1LjIyMjkgVGoKLS0zMDAgVEptCi0oc2luY2UpIDIwLjQ3MzEgVGoKLS0yOTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjkwIFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI5MCBUSm0KLShpcykgNi42NDUwNSBUagotLTI5MCBUSm0KLShzbWFsbGVyKSAyOS4zMjk5IFRqCi1bMSAwIDAgMSA3MiA1MC44NTE4XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0My4wNjMzIC02Ljc1NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjMzMiAtNTAuOTUxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM5LjM5NSA1MC45NTE0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDUpIDQuOTgxMyBUagotWzEgMCAwIDEgNDUzLjI2OSA1MC44NTE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgOTMuNTk4NSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi4yNzY1IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotUQotc2hvd3BhZ2UKLSUlUGFnZVRyYWlsZXIKLXBkZkVuZFBhZ2UKLSUlUGFnZTogOSA5Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxMDUuNTE5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzcxLjU5IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NzcuMTA5IDc0OS4yNDUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSG8pIDEyLjE3NDMgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKGJ6aXAyKSAyMi4xMzY5IFRqCi1bMSAwIDAgMSAyNjYuMDcxIDc0Ny4wODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtNzQxLjU1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0aGFuKSAxNy4xNTU2IFRqCi0tMzYyIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zNjIgVEptCi0oYmxvY2suKSAyNC42Mjc1IFRqCi0tMTI5MyBUSm0KLShGKSA1LjUzOTIxIFRqCi0xNSBUSm0KLShvcikgOC4yOTg4NSBUagotLTM2MiBUSm0KLShlKSA0LjQyMzM5IFRqCi0xNSBUSm0KLSh4YW1wbGUsKSAzMS44MjA1IFRqCi0tMzkwIFRKbQotKGNvbXByZXNzaW5nKSA1MC4zNjA5IFRqCi0tMzYyIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zNjIgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMzYyIFRKbQotKDIwLDAwMCkgMjcuMzk3MiBUagotLTM2MiBUSm0KLShieXRlcykgMjEuMDMxIFRqCi0tMzYyIFRKbQotKGxvbmcpIDE3LjcxMzUgVGoKLS0zNjIgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTM2MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNjIgVEptCi0oXDAwM2FnKSAxNC45NDM5IFRqCi1bMSAwIDAgMSA0MDYuNTI4IDcxMC4wMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDA2LjUyOCAtNzEwLjAzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDA2LjUyOCA3MTAuMDM3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC05KSAxMS45NTUxIFRqCi1bMSAwIDAgMSA0MTguNDgzIDcxMC4wMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDE4LjQ4MyAtNzEwLjAzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDIyLjA5IDcxMC4wMzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0od2lsbCkgMTUuNTAxOCBUagotLTM2MiBUSm0KLShjYXVzZSkgMjIuMTI2OSBUagotLTM2MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNjIgVEptCi0oY29tcHJlc3NvcikgNDUuOTI3NiBUagotLTM2MiBUSm0KLSh0bykgNy43NTA5IFRqCi03MiA2OTguMDgyIFRkCi0oYWxsb2NhdGUpIDMwLjk4MzcgVGoKLS0yNzEgVEptCi0oYXJvdW5kKSAyNy42NjYxIFRqCi0tMjcyIFRKbQotKDc2MDBrKSAyNC45MDY1IFRqCi0tMjcxIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjcyIFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTI3NyBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHV0KSA3Ljc1MDkgVGoKLS0yNzEgVEptCi0ob25seSkgMTcuNzEzNSBUagotLTI3MiBUSm0KLSh0b3VjaCkgMjIuMTM2OSBUagotLTI3MSBUSm0KLSg0MDBrKSAxOS45MjUyIFRqCi0tMjcyIFRKbQotKCspIDUuNjE4OTEgVGoKLS0yNzEgVEptCi0oMjAwMDApIDI0LjkwNjUgVGoKLS0yNzIgVEptCi0oKikgNC45ODEzIFRqCi0tMjcxIFRKbQotKDgpIDQuOTgxMyBUagotLTI3MiBUSm0KLSg9KSA1LjYxODkxIFRqCi0tMjcxIFRKbQotKDU2MCkgMTQuOTQzOSBUagotLTI3MiBUSm0KLShrYnl0ZXMpIDI2LjAxMjMgVGoKLS0yNzEgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNzIgVEptCi0oaXQuKSA4LjAyOTg2IFRqCi0tNzQ4IFRKbQotKFNpbWlsYXJseSkgMzcuMDkwOCBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTI3NyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNzIgVEptCi0oZGVjb21wcmVzc29yKSA1NS4zMzIzIFRqCi03MiA2ODYuMTI3IFRkCi0od2lsbCkgMTUuNTAxOCBUagotLTI1MCBUSm0KLShhbGxvY2F0ZSkgMzAuOTgzNyBUagotLTI1MCBUSm0KLSgzNzAwaykgMjQuOTA2NSBUagotLTI1MCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHV0KSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0ob25seSkgMTcuNzEzNSBUagotLTI1MCBUSm0KLSh0b3VjaCkgMjIuMTM2OSBUagotLTI1MCBUSm0KLSgxMDBrKSAxOS45MjUyIFRqCi0tMjUwIFRKbQotKCspIDUuNjE4OTEgVGoKLS0yNTAgVEptCi0oMjAwMDApIDI0LjkwNjUgVGoKLS0yNTAgVEptCi0oKikgNC45ODEzIFRqCi0tMjUwIFRKbQotKDQpIDQuOTgxMyBUagotLTI1MCBUSm0KLSg9KSA1LjYxODkxIFRqCi0tMjUwIFRKbQotKDE4MCkgMTQuOTQzOSBUagotLTI1MCBUSm0KLShrYnl0ZXMuKSAyOC41MDMgVGoKLVsxIDAgMCAxIDcyIDY4My45N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjc0LjAwOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjY0LjIwOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShIZXJlKSAxOS4zNTczIFRqCi0tMjkzIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjk0IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yOTMgVEptCi0odGFibGUpIDE5LjM2NzMgVGoKLS0yOTQgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0yOTMgVEptCi0oc3VtbWFyaXNlcykgNDcuMDQzNCBUagotLTI5NCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yOTMgVEptCi0obWF4aW11bSkgNDAuNDA4MyBUagotLTI5NCBUSm0KLShtZW1vcnkpIDMzLjIwNTMgVGoKLS0yOTMgVEptCi0odXNhZ2UpIDIyLjY4NDggVGoKLS0yOTQgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMjkzIFRKbQotKGRpZikgMTEuMDY4NCBUagotMjUgVEptCi0oZmVyZW50KSAyMy4yMzI4IFRqCi0tMjk0IFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjkzIFRKbQotKHNpemVzLikgMjEuODU3OSBUagotLTg4MSBUSm0KLShBbHNvKSAxOC44MTk0IFRqCi0tMjkzIFRKbQotKHJlY29yZGVkKSAzNC44NDkyIFRqCi0tMjk0IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjkzIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5NCBUSm0KLSh0b3RhbCkgMTcuNzEzNSBUagotNzIgNjUyLjI1NCBUZAotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yODkgVEptCi0oc2l6ZSkgMTUuNDkxOCBUagotLTI4OSBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yODkgVEptCi0oMTQpIDkuOTYyNiBUagotLTI4OSBUSm0KLShcMDAybGVzKSAxNi42MDc3IFRqCi0tMjkwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjg5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI4OSBUSm0KLShDYWxnKSAxOC44MTk0IFRqCi01IFRKbQotKGFyeSkgMTIuNzIyMiBUagotLTI4OSBUSm0KLShUKSA2LjA4NzE1IFRqCi03MCBUSm0KLShlKSA0LjQyMzM5IFRqCi0xNSBUSm0KLSh4dCkgNy43NTA5IFRqCi0tMjg5IFRKbQotKENvbXByZXNzaW9uKSA1Mi41ODI2IFRqCi0tMjg5IFRKbQotKENvcnB1cykgMjguNzgyIFRqCi0tMjg5IFRKbQotKHRvdGFsbGluZykgMzMuMjE1MyBUagotLTI4OSBUSm0KLSgzLDE0MSw2MjIpIDM5Ljg1MDQgVGoKLS0yOTAgVEptCi0oYnl0ZXMuKSAyMy41MjE3IFRqCi0tODU0IFRKbQotKFRoaXMpIDE3LjcxMzUgVGoKLS0yOTAgVEptCi0oY29sdW1uKSAyOS44ODc4IFRqCi0tMjg5IFRKbQotKGdpKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXMpIDguMjk4ODUgVGoKLTcyIDY0MC4yOTkgVGQKLShzb21lKSAyMS4wMzEgVGoKLS0yNTMgVEptCi0oZmVlbCkgMTQuOTMzOSBUagotLTI1MyBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNTMgVEptCi0oaG8pIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yNTMgVEptCi0oY29tcHJlc3Npb24pIDUwLjM2MDkgVGoKLS0yNTMgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhcmllcykgMTguODA5NCBUagotLTI1MyBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMjUzIFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjUzIFRKbQotKHNpemUuKSAxNy45ODI1IFRqCi0tNjM4IFRKbQotKFRoZXNlKSAyMy43OTA3IFRqCi0tMjUzIFRKbQotKFwwMDJndXJlcykgMjcuMTE4MiBUagotLTI1MyBUSm0KLSh0ZW5kKSAxNy4xNTU2IFRqCi0tMjU0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTMgVEptCi0odW5kZXJzdGF0ZSkgNDAuOTQ2MyBUagotLTI1MyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTMgVEptCi0oYWR2KSAxNC4zODYgVGoKLTI1IFRKbQotKGFudGFnZSkgMjYuMDAyNCBUagotLTI1MyBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MyBUSm0KLShsYXIpIDEwLjUxMDUgVGoKLTE4IFRKbQotKGdlcikgMTIuNzIyMiBUagotLTI1MyBUSm0KLShibG9jaykgMjIuMTM2OSBUagotNzIgNjI4LjM0NCBUZAotKHNpemVzKSAxOS4zNjczIFRqCi0tMjUwIFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI1MCBUSm0KLShsYXIpIDEwLjUxMDUgVGoKLTE4IFRKbQotKGdlcikgMTIuNzIyMiBUagotLTI1MCBUSm0KLShcMDAybGVzLCkgMTkuMDk4MyBUagotLTI1MCBUSm0KLShzaW5jZSkgMjAuNDczMSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oQ29ycHVzKSAyOC43ODIgVGoKLS0yNTAgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0oZG9taW5hdGVkKSA0Mi4wNjIxIFRqCi0tMjUwIFRKbQotKGJ5KSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oc21hbGxlcikgMjkuMzI5OSBUagotLTI1MCBUSm0KLShcMDAybGVzLikgMTkuMDk4MyBUagotWzEgMCAwIDEgNzIgNjI2LjE4N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTE1Ni40MTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMTU1LjQxNyByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDE1MS44MzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC02MTYuODIyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMjMuOTUyIDYxNi44MjIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQ29tcHJlc3MpIDQ3LjgyMDUgVGoKLS0xMjc4IFRKbQotKERlY29tcHJlc3MpIDU5Ljc3NTYgVGoKLS0xMjc4IFRKbQotKERlY29tcHJlc3MpIDU5Ljc3NTYgVGoKLS0xMjc4IFRKbQotKENvcnB1cykgMzUuODY1NCBUagotOTAgNjA0Ljg2NyBUZAotKEZsYWcpIDIzLjkxMDIgVGoKLS0yMTMwIFRKbQotKHVzYWdlKSAyOS44ODc4IFRqCi0tMjU1NiBUSm0KLSh1c2FnZSkgMjkuODg3OCBUagotLTI5ODIgVEptCi0oLXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odXNhZ2UpIDI5Ljg4NzggVGoKLS0yMTMwIFRKbQotKFNpemUpIDIzLjkxMDIgVGoKLTk0LjI0NCA1ODAuOTU2IFRkCi0oLTEpIDExLjk1NTEgVGoKLS0yNTU2IFRKbQotKDEyMDBrKSAyOS44ODc4IFRqCi0tMjk4MiBUSm0KLSg1MDBrKSAyMy45MTAyIFRqCi0tMzgzNCBUSm0KLSgzNTBrKSAyMy45MTAyIFRqCi0tMjU1NiBUSm0KLSg5MTQ3MDQpIDM1Ljg2NTQgVGoKLTk0LjI0NCA1NjkuMDAxIFRkCi0oLTIpIDExLjk1NTEgVGoKLS0yNTU2IFRKbQotKDIwMDBrKSAyOS44ODc4IFRqCi0tMjk4MiBUSm0KLSg5MDBrKSAyMy45MTAyIFRqCi0tMzgzNCBUSm0KLSg2MDBrKSAyMy45MTAyIFRqCi0tMjU1NiBUSm0KLSg4Nzc3MDMpIDM1Ljg2NTQgVGoKLTk0LjI0NCA1NTcuMDQ2IFRkCi0oLTMpIDExLjk1NTEgVGoKLS0yNTU2IFRKbQotKDI4MDBrKSAyOS44ODc4IFRqCi0tMjU1NiBUSm0KLSgxMzAwaykgMjkuODg3OCBUagotLTM4MzQgVEptCi0oODUwaykgMjMuOTEwMiBUagotLTI1NTYgVEptCi0oODYwMzM4KSAzNS44NjU0IFRqCi05NC4yNDQgNTQ1LjA5MSBUZAotKC00KSAxMS45NTUxIFRqCi0tMjU1NiBUSm0KLSgzNjAwaykgMjkuODg3OCBUagotLTI1NTYgVEptCi0oMTcwMGspIDI5Ljg4NzggVGoKLS0zNDA4IFRKbQotKDExMDBrKSAyOS44ODc4IFRqCi0tMjU1NiBUSm0KLSg4NDY4OTkpIDM1Ljg2NTQgVGoKLTk0LjI0NCA1MzMuMTM2IFRkCi0oLTUpIDExLjk1NTEgVGoKLS0yNTU2IFRKbQotKDQ0MDBrKSAyOS44ODc4IFRqCi0tMjU1NiBUSm0KLSgyMTAwaykgMjkuODg3OCBUagotLTM0MDggVEptCi0oMTM1MGspIDI5Ljg4NzggVGoKLS0yNTU2IFRKbQotKDg0NTE2MCkgMzUuODY1NCBUagotOTQuMjQ0IDUyMS4xODEgVGQKLSgtNikgMTEuOTU1MSBUagotLTI1NTYgVEptCi0oNTIwMGspIDI5Ljg4NzggVGoKLS0yNTU2IFRKbQotKDI1MDBrKSAyOS44ODc4IFRqCi0tMzQwOCBUSm0KLSgxNjAwaykgMjkuODg3OCBUagotLTI1NTYgVEptCi0oODM4NjI2KSAzNS44NjU0IFRqCi05NC4yNDQgNTA5LjIyNSBUZAotKC03KSAxMS45NTUxIFRqCi0tMjU1NiBUSm0KLSg2MTAwaykgMjkuODg3OCBUagotLTI1NTYgVEptCi0oMjkwMGspIDI5Ljg4NzggVGoKLS0zNDA4IFRKbQotKDE4NTBrKSAyOS44ODc4IFRqCi0tMjU1NiBUSm0KLSg4MzQwOTYpIDM1Ljg2NTQgVGoKLTk0LjI0NCA0OTcuMjcgVGQKLSgtOCkgMTEuOTU1MSBUagotLTI1NTYgVEptCi0oNjgwMGspIDI5Ljg4NzggVGoKLS0yNTU2IFRKbQotKDMzMDBrKSAyOS44ODc4IFRqCi0tMzQwOCBUSm0KLSgyMTAwaykgMjkuODg3OCBUagotLTI1NTYgVEptCi0oODI4NjQyKSAzNS44NjU0IFRqCi05NC4yNDQgNDg1LjMxNSBUZAotKC05KSAxMS45NTUxIFRqCi0tMjU1NiBUSm0KLSg3NjAwaykgMjkuODg3OCBUagotLTI1NTYgVEptCi0oMzcwMGspIDI5Ljg4NzggVGoKLS0zNDA4IFRKbQotKDIzNTBrKSAyOS44ODc4IFRqCi0tMjU1NiBUSm0KLSg4Mjg2NDIpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDcyIDQ2OS43NzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMy41ODY2XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00NTkuODExXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0MzUuMDIxIFRkCi0vRjEyMl8wIDIwLjY1ODUgVGYKLSgyLjYuKSAzNC40NTg0IFRqCi0tMjc4IFRKbQotKFJFQ08pIDU5LjY4MjQgVGoKLTUwIFRKbQotKFZFUklORykgNzkuMjA0NyBUagotLTI3OCBUSm0KLShEKSAxNC45MTU0IFRqCi00MCBUSm0KLShBKSAxNC45MTU0IFRqCi05MCBUSm0KLShUKSAxMi42MjIzIFRqCi05MCBUSm0KLShBKSAxNC45MTU0IFRqCi0tMjc4IFRKbQotKEZSKSAyNy41Mzc4IFRqCi0yMCBUSm0KLShPTSkgMzMuMjgwOCBUagotLTI3OCBUSm0KLShEKSAxNC45MTU0IFRqCi00MCBUSm0KLShBTUEpIDQ3LjAzOTQgVGoKLTUwIFRKbQotKEdFRCkgNDQuNzY3IFRqCi03MiA0MTAuMjMgVGQKLShGSUxFUykgNTguNTQ2MiBUagotWzEgMCAwIDEgNzIgNDA5Ljk3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDAwLjAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzODguMzEyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAxMDEuODg4IDM4OC4zMTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTAxLjg4OCAtMzg4LjMxMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA1LjEzOCAzODguMzEyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGNvbXByZXNzZXMpIDQ1LjkyNzYgVGoKLS0zMjYgVEptCi0oXDAwMmxlcykgMTYuNjA3NyBUagotLTMyNiBUSm0KLShpbikgNy43NTA5IFRqCi0tMzI2IFRKbQotKGJsb2NrcywpIDI4LjUwMyBUagotLTM0NiBUSm0KLSh1c3VhbGx5KSAyOC43ODIgVGoKLS0zMjYgVEptCi0oOTAwa2J5dGVzKSA0MC45NTYyIFRqCi0tMzI2IFRKbQotKGxvbmcuKSAyMC4yMDQyIFRqCi0tMTA3NyBUSm0KLShFYWNoKSAxOS45MTUyIFRqCi0tMzI2IFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMzI3IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzI2IFRKbQotKGhhbmRsZWQpIDMxLjU0MTYgVGoKLS0zMjYgVEptCi0oaW5kZXBlbmRlbnRseSkgNTYuNDQ4MSBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTEwNzcgVEptCi0oSWYpIDYuNjM1MDkgVGoKLS0zMjYgVEptCi0oYSkgNC40MjMzOSBUagotLTMyNiBUSm0KLShtZWRpYSkgMjQuMzQ4NiBUagotLTMyNiBUSm0KLShvcikgOC4yOTg4NSBUagotNzIgMzc2LjM1NyBUZAotKHRyYW5zbWlzc2lvbikgNTAuMzcwOSBUagotLTMxOSBUSm0KLShlcnJvcikgMTkuMzU3MyBUagotLTMxOCBUSm0KLShjYXVzZXMpIDI2LjAwMjQgVGoKLS0zMTkgVEptCi0oYSkgNC40MjMzOSBUagotLTMxOCBUSm0KLShtdWx0aS1ibG9jaykgNDYuNDk1NSBUagotWzEgMCAwIDEgMjM0LjUxOCAzNzYuMzU3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIzNC41MTggLTM3Ni4zNTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIzNC41MTggMzc2LjM1NyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSguYnoyKSAyMy45MTAyIFRqCi1bMSAwIDAgMSAyNTguNDI5IDM3Ni4zNTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjU4LjQyOSAtMzc2LjM1N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjYxLjYwMyAzNzYuMzU3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwwMDJsZSkgMTIuNzMyMiBUagotLTMxOSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzE4IFRKbQotKGJlY29tZSkgMzAuOTgzNyBUagotLTMxOSBUSm0KLShkYW1hZ2VkLCkgMzguNDU1NiBUagotLTMzNiBUSm0KLShpdCkgNS41MzkyMSBUagotLTMxOCBUSm0KLShtYXkpIDE3LjE1NTYgVGoKLS0zMTkgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0zMTggVEptCi0ocG9zc2libGUpIDMyLjY1NzQgVGoKLS0zMTkgVEptCi0odG8pIDcuNzUwOSBUagotLTMxOCBUSm0KLShyZWNvKSAxNy4xNDU2IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyKSA3Ljc0MDk0IFRqCi0tMzE5IFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0zMTkgVEptCi0oZnJvbSkgMTkuMzY3MyBUagotLTMxOCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTcyIDM2NC40MDIgVGQKLSh1bmRhbWFnZWQpIDQ1LjkyNzYgVGoKLS0yNTAgVEptCi0oYmxvY2tzKSAyNi4wMTIzIFRqCi0tMjUwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKFwwMDJsZS4pIDE1LjIyMjkgVGoKLVsxIDAgMCAxIDcyIDM2Mi4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM1Mi4yODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM0Mi40ODQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oVGhlKSAxNS40OTE4IFRqCi0tMzU4IFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0zNTcgVEptCi0ocmVwcmVzZW50YXRpb24pIDU2LjQzODEgVGoKLS0zNTggVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zNTcgVEptCi0oZWFjaCkgMTguMjUxNSBUagotLTM1OCBUSm0KLShibG9jaykgMjIuMTM2OSBUagotLTM1OCBUSm0KLShpcykgNi42NDUwNSBUagotLTM1NyBUSm0KLShkZWxpbWl0ZWQpIDM3LjYzODcgVGoKLS0zNTggVEptCi0oYnkpIDkuOTYyNiBUagotLTM1NyBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMzU4IFRKbQotKDQ4LWJpdCkgMjMuODAwNyBUagotLTM1OCBUSm0KLShwYXR0ZXJuLCkgMzAuMTU2OCBUagotLTM4NCBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTM1OCBUSm0KLShtYWspIDE3LjE1NTYgVGoKLTEwIFRKbQotKGVzKSA4LjI5ODg1IFRqCi0tMzU3IFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMzU4IFRKbQotKHBvc3NpYmxlKSAzMi42NTc0IFRqCi0tMzU3IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zNTggVEptCi0oXDAwMm5kKSAxNS41MDE4IFRqCi0tMzU4IFRKbQotKHRoZSkgMTIuMTc0MyBUagotNzIgMzMwLjUyOSBUZAotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjg2IFRKbQotKGJvdW5kYXJpZXMpIDQzLjcxNTkgVGoKLS0yODYgVEptCi0od2l0KSAxMi43MzIyIFRqCi0xIFRKbQotKGgpIDQuOTgxMyBUagotLTI4NiBUSm0KLShyZWFzb25hYmxlKSA0Mi42MDAxIFRqCi0tMjg2IFRKbQotKGNlcnRhaW50eSkgMzQuODU5MSBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTgzNSBUSm0KLShFYWNoKSAxOS45MTUyIFRqCi0tMjg1IFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjg2IFRKbQotKGFsc28pIDE2LjA0OTcgVGoKLS0yODYgVEptCi0oY2FycmllcykgMjYuNTUwMyBUagotLTI4NiBUSm0KLShpdHMpIDkuNDE0NjYgVGoKLS0yODUgVEptCi0obykgNC45ODEzIFRqCi0yNSBUSm0KLSh3bikgMTIuMTc0MyBUagotLTI4NiBUSm0KLSgzMi1iaXQpIDIzLjgwMDcgVGoKLS0yODYgVEptCi0oQ1JDLCkgMjIuNDI1OCBUagotLTI4NiBUSm0KLShzbykgOC44NTY3NSBUagotLTI4NSBUSm0KLShkYW1hZ2VkKSAzNS45NjUgVGoKLS0yODYgVEptCi0oYmxvY2tzKSAyNi4wMTIzIFRqCi0tMjg2IFRKbQotKGNhbikgMTMuODI4MSBUagotLTI4NiBUSm0KLShiZSkgOS40MDQ2OSBUagotNzIgMzE4LjU3NCBUZAotKGRpc3Rpbmd1aXNoZWQpIDUzLjE0MDUgVGoKLS0yNTAgVEptCi0oZnJvbSkgMTkuMzY3MyBUagotLTI1MCBUSm0KLSh1bmRhbWFnZWQpIDQ1LjkyNzYgVGoKLS0yNTAgVEptCi0ob25lcy4pIDIwLjc1MjEgVGoKLVsxIDAgMCAxIDcyIDMxNi40MTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTMwNi40NTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI5Ni42NTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDJyZWNvdmVyKSA3MS43MzA3IFRqCi1bMSAwIDAgMSAxNDMuNzMxIDI5Ni42NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQzLjczMSAtMjk2LjY1Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQ2LjQ0OCAyOTYuNjU2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMjczIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNzIgVEptCi0oc2ltcGxlKSAyNi41NzAzIFRqCi0tMjczIFRKbQotKHByb2dyYW0pIDMzLjc1MzMgVGoKLS0yNzMgVEptCi0od2hvc2UpIDI1LjQ1NDQgVGoKLS0yNzIgVEptCi0ocHVycG9zZSkgMzEuNTQxNiBUagotLTI3MyBUSm0KLShpcykgNi42NDUwNSBUagotLTI3MyBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjcyIFRKbQotKHNlYXJjaCkgMjUuNDQ0NSBUagotLTI3MyBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNzMgVEptCi0oYmxvY2tzKSAyNi4wMTIzIFRqCi0tMjcyIFRKbQotKGluKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDM5Mi42NTUgMjk2LjY1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTIuNjU1IC0yOTYuNjU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zOTIuNjU1IDI5Ni42NTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLmJ6MikgMjMuOTEwMiBUagotWzEgMCAwIDEgNDE2LjU2NiAyOTYuNjU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQxNi41NjYgLTI5Ni42NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxOS4yODIgMjk2LjY1NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMDAybGVzLCkgMTkuMDk4MyBUagotLTI3OCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI3MyBUSm0KLSh3cml0ZSkgMjAuNDczMSBUagotLTI3MyBUSm0KLShlYWNoKSAxOC4yNTE1IFRqCi0tMjcyIFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjczIFRKbQotKG91dCkgMTIuNzMyMiBUagotNzIgMjg0LjcwMSBUZAotKGludG8pIDE1LjUwMTggVGoKLS0yNTQgVEptCi0oaXRzKSA5LjQxNDY2IFRqCi0tMjU1IFRKbQotKG8pIDQuOTgxMyBUagotMjUgVEptCi0od24pIDEyLjE3NDMgVGoKLVsxIDAgMCAxIDEyMS40MyAyODQuNzAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEyMS40MyAtMjg0LjcwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTIxLjQzIDI4NC43MDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLmJ6MikgMjMuOTEwMiBUagotWzEgMCAwIDEgMTQ1LjM0IDI4NC43MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQ1LjM0IC0yODQuNzAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDcuODc1IDI4NC43MDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDAwMmxlLikgMTUuMjIyOSBUagotLTY0NyBUSm0KLShZKSA3LjE5MyBUagotMTEwIFRKbQotKG91KSA5Ljk2MjYgVGoKLS0yNTUgVEptCi0oY2FuKSAxMy44MjgxIFRqCi0tMjU0IFRKbQotKHRoZW4pIDE3LjE1NTYgVGoKLS0yNTUgVEptCi0odXNlKSAxMy4yODAxIFRqCi1bMSAwIDAgMSAyNDAuMDEgMjg0LjcwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNDAuMDEgLTI4NC43MDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI0MC4wMSAyODQuNzAxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi0tNjAwIFRKbQotKC10KSAxMS45NTUxIFRqCi1bMSAwIDAgMSAyODcuODMxIDI4NC43MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjg3LjgzMSAtMjg0LjcwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjkwLjM2NyAyODQuNzAxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHRvKSA3Ljc1MDkgVGoKLS0yNTUgVEptCi0odCkgMi43Njk2IFRqCi0xIFRKbQotKGVzdCkgMTEuMDY4NCBUagotLTI1NSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTQgVEptCi0oaW50ZSkgMTQuOTQzOSBUagotMTUgVEptCi0oZ3JpdHkpIDE4LjgxOTQgVGoKLS0yNTUgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjU1IFRKbQotKHJlc3VsdGluZykgMzQuODY5MSBUagotLTI1NCBUSm0KLShcMDAybGVzLCkgMTkuMDk4MyBUagotLTI1NiBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI1NSBUSm0KLShkZWNvbXByZXNzKSA0Ny4wMzM0IFRqCi0tMjU0IFRKbQotKHRob3NlKSAyMS4wMzEgVGoKLTcyIDI3Mi43NDYgVGQKLSh3aGljaCkgMjQuMzQ4NiBUagotLTI1MCBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yNTAgVEptCi0odW5kYW1hZ2VkLikgNDguNDE4MiBUagotWzEgMCAwIDEgNzIgMjcwLjU4OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjYwLjYyNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjUwLjgyOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMnJlY292ZXIpIDcxLjczMDcgVGoKLVsxIDAgMCAxIDE0My43MzEgMjUwLjgyOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDMuNzMxIC0yNTAuODI4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTAuMDk5IDI1MC44MjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odGFrKSAxMi4xNzQzIFRqCi0xMCBUSm0KLShlcykgOC4yOTg4NSBUagotLTYzOSBUSm0KLShhKSA0LjQyMzM5IFRqCi0tNjM5IFRKbQotKHNpbmdsZSkgMjMuODAwNyBUagotLTYzOSBUSm0KLShhcikgNy43NDA5NCBUagotMTggVEptCi0oZ3VtZW50LCkgMzIuMzc4NSBUagotLTczNyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS02MzkgVEptCi0obmFtZSkgMjEuNTc5IFRqCi0tNjM5IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tNjM5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTYzOSBUSm0KLShkYW1hZ2VkKSAzNS45NjUgVGoKLS02MzkgVEptCi0oXDAwMmxlLCkgMTUuMjIyOSBUagotLTczNyBUSm0KLShhbmQpIDE0LjM4NiBUagotLTYzOSBUSm0KLSh3cml0ZXMpIDI0LjM0ODYgVGoKLS02MzkgVEptCi0oYSkgNC40MjMzOSBUagotLTYzOSBUSm0KLShudW1iZXIpIDMwLjQzNTcgVGoKLS02MzkgVEptCi0ob2YpIDguMjk4ODUgVGoKLS02NDAgVEptCi0oXDAwMmxlcykgMTYuNjA3NyBUagotWzEgMCAwIDEgNzIgMjM4Ljg3M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjM4Ljg3M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjM4Ljg3MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShyZWMwMDAxZmlsZS5iejIpIDg5LjY2MzQgVGoKLVsxIDAgMCAxIDE2MS42NjQgMjM4Ljg3M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjEuNjY0IC0yMzguODczXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjEuNjY0IDIzOC44NzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMTY5LjA3MiAyMzguODczXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2OS4wNzIgLTIzOC44NzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE2OS4wNzIgMjM4Ljg3MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShyZWMwMDAyZmlsZS5iejIpIDg5LjY2MzQgVGoKLVsxIDAgMCAxIDI1OC43MzYgMjM4Ljg3M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNTguNzM2IC0yMzguODczXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNTguNzM2IDIzOC44NzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTQ5NCBUSm0KLShldGMsKSAxNC4xMDcgVGoKLS00OTMgVEptCi0oY29udGFpbmluZykgNDIuMDYyMSBUagotLTQ0NSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS00NDUgVEptCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeHRyYWN0ZWQpIDMyLjA4OTUgVGoKLS00NDUgVEptCi0oYmxvY2tzLikgMjguNTAzIFRqCi0tMTc4OSBUSm0KLShUaGUpIDE1LjQ5MTggVGoKLS00NDUgVEptCi0ob3V0cHV0KSAyNS40NjQ0IFRqCi0tNDQ1IFRKbQotKFwwMDJsZW5hbWVzKSAzOC4xODY2IFRqCi0tNDQ1IFRKbQotKGFyZSkgMTIuMTY0MyBUagotNzIgMjI2LjkxOCBUZAotKGRlc2lnbmVkKSAzNS40MTcgVGoKLS0zMzcgVEptCi0oc28pIDguODU2NzUgVGoKLS0zMzcgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTMzNyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMzcgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMzM3IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzM3IFRKbQotKHdpbGRjKSAyMi4xMzY5IFRqCi0xIFRKbQotKGFyZHMpIDE2LjU5NzcgVGoKLS0zMzcgVEptCi0oaW4pIDcuNzUwOSBUagotLTMzNyBUSm0KLShzdWJzZXF1ZW50KSA0NC4yNzM4IFRqCi0tMzM3IFRKbQotKHByb2Nlc3NpbmcpIDQyLjYxIFRqCi0tMzM3IFRKbQotKC0tKSA2LjYzNTA5IFRqCi0tMzM3IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTMzNyBUSm0KLShlKSA0LjQyMzM5IFRqCi0xNSBUSm0KLSh4YW1wbGUsKSAzMS44MjA1IFRqCi1bMSAwIDAgMSAzOTYuNTM4IDIyNi45MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzk2LjUzOCAtMjI2LjkxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzk2LjUzOCAyMjYuOTE4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi0tNjAwIFRKbQotKC1kYykgMTcuOTMyNyBUagotLTYwMCBUSm0KLShyZWMpIDE3LjkzMjcgVGoKLTQ3NC4yNDcgMjI1LjE3NCBUZAotKCopIDUuOTc3NTYgVGoKLTQ4MC4yMjQgMjI2LjkxOCBUZAotKGZpbGUuYnoyKSA0Ny44MjA1IFRqCi0tNjAwIFRKbQotKD4pIDUuOTc3NTYgVGoKLTcyIDIxNC45NjMgVGQKLShyZWNvdmVyZWRfZGF0YSkgODMuNjg1OCBUagotWzEgMCAwIDEgMTU1LjY4NiAyMTQuOTYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1NS42ODYgLTIxNC45NjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1OC4xNzcgMjE0Ljk2MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgtLSkgNi42MzUwOSBUagotLTI1MCBUSm0KLShsaXN0cykgMTYuMDU5NyBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oXDAwMmxlcykgMTYuNjA3NyBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShjb3JyZWN0KSAyNy42NTYyIFRqCi0tMjUwIFRKbQotKG9yZGVyKSAyMS4wMjExIFRqCi01NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAyMTMuNjUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yMDMuNjldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE5My4wNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDJyZWNvdmVyKSA3MS43MzA3IFRqCi1bMSAwIDAgMSAxNDMuNzMxIDE5My4wNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQzLjczMSAtMTkzLjA0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQ1LjkzIDE5My4wNDUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMjIxIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjIwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjIxIFRKbQotKG1vc3QpIDE5LjM3NzMgVGoKLS0yMjEgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjIwIFRKbQotKGRlYWxpbmcpIDI5LjMyOTkgVGoKLS0yMjEgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTIyMSBUSm0KLShsYXIpIDEwLjUxMDUgVGoKLTE4IFRKbQotKGdlKSA5LjQwNDY5IFRqCi1bMSAwIDAgMSAzMDcuMjI5IDE5My4wNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzA3LjIyOSAtMTkzLjA0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzA3LjIyOSAxOTMuMDQ1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC5iejIpIDIzLjkxMDIgVGoKLVsxIDAgMCAxIDMzMS4xNCAxOTMuMDQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzMS4xNCAtMTkzLjA0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzMzLjMzOCAxOTMuMDQ1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwwMDJsZXMsKSAxOS4wOTgzIFRqCi0tMjI3IFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjIwIFRKbQotKHRoZXNlKSAyMC40NzMxIFRqCi0tMjIxIFRKbQotKHdpbGwpIDE1LjUwMTggVGoKLS0yMjEgVEptCi0oY29udGFpbikgMjkuMzI5OSBUagotLTIyMCBUSm0KLShtYW4pIDE3LjE1NTYgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTIyMSBUSm0KLShibG9ja3MuKSAyOC41MDMgVGoKLS02MDAgVEptCi0oSXQpIDYuMDg3MTUgVGoKLS0yMjEgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yMjEgVEptCi0oY2xlYXJseSkgMjcuMTA4MiBUagotNzIgMTgxLjA5IFRkCi0oZnV0aWxlKSAyMS4wMzEgVGoKLS0yODkgVEptCi0odG8pIDcuNzUwOSBUagotLTI4OSBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0yODkgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0yODkgVEptCi0ob24pIDkuOTYyNiBUagotLTI4OSBUSm0KLShkYW1hZ2VkKSAzNS45NjUgVGoKLS0yODkgVEptCi0oc2luZ2xlLWJsb2NrKSA0OS4yNTUxIFRqCi0tMjkwIFRKbQotKFwwMDJsZXMpIDE2LjYwNzcgVGoKLTEgVEptCi0oLCkgMi40OTA2NSBUagotLTI5OSBUSm0KLShzaW5jZSkgMjAuNDczMSBUagotLTI4OSBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjkwIFRKbQotKGRhbWFnZWQpIDM1Ljk2NSBUagotLTI4OSBUSm0KLShibG9jaykgMjIuMTM2OSBUagotLTI4OSBUSm0KLShjYW5ub3QpIDI2LjU2MDMgVGoKLS0yODkgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yODkgVEptCi0ocmVjbykgMTcuMTQ1NiBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcmVkLikgMTkuNjM2MyBUagotLTg1NCBUSm0KLShJZikgNi42MzUwOSBUagotLTI4OSBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yOTAgVEptCi0od2lzaCkgMTguODE5NCBUagotLTI4OSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjg5IFRKbQotKG1pbmltaXNlKSAzNy4wOTA4IFRqCi03MiAxNjkuMTM1IFRkCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTMyMCBUSm0KLShwb3RlbnRpYWwpIDM0Ljg2OTEgVGoKLS0zMjAgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTMxOSBUSm0KLShsb3NzKSAxNS41MDE4IFRqCi0tMzIwIFRKbQotKHRocm91Z2gpIDMwLjk5MzYgVGoKLS0zMjAgVEptCi0obWVkaWEpIDI0LjM0ODYgVGoKLS0zMjAgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0zMTkgVEptCi0odHJhbnNtaXNzaW9uKSA1MC4zNzA5IFRqCi0tMzIwIFRKbQotKGVycm9ycywpIDI1LjcyMzQgVGoKLS0zMzcgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMzIwIFRKbQotKG1pZ2h0KSAyMy4yNTI3IFRqCi0tMzIwIFRKbQotKGNvbnNpZGVyKSAzMy43NTMzIFRqCi0tMzIwIFRKbQotKGNvbXByZXNzaW5nKSA1MC4zNjA5IFRqCi0tMzE5IFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0zMjAgVEptCi0oYSkgNC40MjMzOSBUagotLTMyMCBUSm0KLShzbWFsbGVyKSAyOS4zMjk5IFRqCi0tMzIwIFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi03MiAxNTcuMTc5IFRkCi0oc2l6ZS4pIDE3Ljk4MjUgVGoKLVsxIDAgMCAxIDcyIDE1Ny4wOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTQ3LjExN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTIyLjQyNiBUZAotL0YxMjJfMCAyMC42NTg1IFRmCi0oMi43LikgMzQuNDU4NCBUagotLTI3OCBUSm0KLShQRVJGT1JNQU5DRSkgMTYxLjgxOCBUagotLTI3OCBUSm0KLShOTykgMzAuOTg3NyBUagotNDAgVEptCi0oVEVTKSA0MC4xODA4IFRqCi1bMSAwIDAgMSA3MiAxMjIuMTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xMTIuMjA2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxMDAuNTA5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoZSkgMTUuNDkxOCBUagotLTMwNSBUSm0KLShzb3J0aW5nKSAyNy42NzYxIFRqCi0tMzA0IFRKbQotKHBoYXNlKSAyMi42ODQ4IFRqCi0tMzA1IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzA0IFRKbQotKGNvbXByZXNzaW9uKSA1MC4zNjA5IFRqCi0tMzA1IFRKbQotKGcpIDQuOTgxMyBUagotNSBUSm0KLShhdGhlcnMpIDIzLjc5MDcgVGoKLS0zMDQgVEptCi0odG9nZXRoZXIpIDMyLjY0NzQgVGoKLS0zMDUgVEptCi0oc2ltaWxhcikgMjcuNjc2MSBUagotLTMwNCBUSm0KLShzdHJpbmdzKSAyNi41NzAzIFRqCi0tMzA1IFRKbQotKGluKSA3Ljc1MDkgVGoKLS0zMDQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzA1IFRKbQotKFwwMDJsZS4pIDE1LjIyMjkgVGoKLS05NDcgVEptCi0oQmVjYXVzZSkgMzMuMTk1NCBUagotLTMwNSBUSm0KLShvZikgOC4yOTg4NSBUagotLTMwNCBUSm0KLSh0aGlzLCkgMTYuODg2NiBUagotLTMxOSBUSm0KLShcMDAybGVzKSAxNi42MDc3IFRqCi0tMzA0IFRKbQotKGNvbnRhaW5pbmcpIDQyLjA2MjEgVGoKLS0zMDUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnkpIDEyLjcyMjIgVGoKLTcyIDg4LjU1MzQgVGQKLShsb25nKSAxNy43MTM1IFRqCi0tMjg2IFRKbQotKHJ1bnMpIDE3LjE1NTYgVGoKLS0yODUgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yODYgVEptCi0ocmVwZWF0ZWQpIDMzLjc0MzMgVGoKLS0yODUgVEptCi0oc3ltYm9scywpIDM1LjcwNiBUagotLTI5NSBUSm0KLShsaWspIDEwLjUyMDUgVGoKLTEwIFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yODYgVEptCi0oImFhYmFhYmFhYmFhYikgNTkuMzc3MSBUagotLTI4NSBUSm0KLSguLi4iKSAxMS41MzY3IFRqCi0tNTcxIFRKbQotKFwocmVwZWF0ZWQpIDM3LjA2MDkgVGoKLS0yODYgVEptCi0oc2UpIDguMjk4ODUgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJhbCkgMTQuOTMzOSBUagotLTI4NiBUSm0KLShodW5kcmVkKSAzMi42NDc0IFRqCi0tMjg1IFRKbQotKHRpbWVzXCkpIDI0LjkwNjUgVGoKLS0yODYgVEptCi0obWF5KSAxNy4xNTU2IFRqCi0tMjg2IFRKbQotKGNvbSkgMTcuMTU1NiBUagotMSBUSm0KLShwcmVzcykgMjAuNDczMSBUagotLTI4NiBUSm0KLShtb3JlKSAyMC40NzMxIFRqCi0tMjg2IFRKbQotKHNsbykgMTEuNjI2NCBUagotMjUgVEptCi0od2x5KSAxNC45NDM5IFRqCi03MiA3Ni41OTgzIFRkCi0odGhhbikgMTcuMTU1NiBUagotLTMyMiBUSm0KLShub3JtYWwuKSAzMC43MTQ3IFRqCi0tNTI0IFRKbQotKFYpIDcuMTkzIFRqCi0xMTEgVEptCi0oZXJzaW9ucykgMjguMjI0IFRqCi0tMzIyIFRKbQotKDAuOS41KSAxOS45MjUyIFRqCi0tMzIxIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzIyIFRKbQotKGFibykgMTQuMzg2IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0zMjIgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMzIxIFRKbQotKG11Y2gpIDIyLjEzNjkgVGoKLS0zMjIgVEptCi0oYmV0dGVyKSAyMi42ODQ4IFRqCi0tMzIxIFRKbQotKHRoYW4pIDE3LjE1NTYgVGoKLS0zMjIgVEptCi0ocHJlKSAxMi43MjIyIFRqCi0yNSBUSm0KLSh2aW91cykgMjEuNTg5IFRqCi0tMzIxIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9ucykgMjguMjI0IFRqCi0tMzIyIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0zMjIgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMzIxIFRKbQotKHJlc3BlY3QuKSAzMC43MDQ3IFRqCi0tMTA1MCBUSm0KLShUaGUpIDE1LjQ5MTggVGoKLS0zMjEgVEptCi0ocmF0aW8pIDE4LjI2MTQgVGoKLS0zMjIgVEptCi0oYmV0d2VlbikgMzMuMTk1NCBUagotWzEgMCAwIDEgNzIgNTAuODUxOF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDMuMDYzMyAtNi43NTQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5Ni4zMzIgLTUwLjk1MTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzOS4zOTUgNTAuOTUxNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSg2KSA0Ljk4MTMgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDEwIDEwCi0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxMDUuNTE5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzcxLjU5IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NzcuMTA5IDc0OS4yNDUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSG8pIDEyLjE3NDMgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKGJ6aXAyKSAyMi4xMzY5IFRqCi1bMSAwIDAgMSAyNjYuMDcxIDc0Ny4wODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTU0MCAtNzQxLjU1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3KSA3LjE5MyBUagotMTAgVEptCi0ob3JzdC1jYXNlKSAzNS40MDcxIFRqCi0tMjg5IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjkwIFRKbQotKGEpIDQuNDIzMzkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJhZ2UtY2FzZSkgNDIuMDMyMiBUagotLTI4OSBUSm0KLShjb21wcmVzc2lvbikgNTAuMzYwOSBUagotLTI5MCBUSm0KLSh0aW1lKSAxNy43MTM1IFRqCi0tMjg5IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjkwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yODkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjkwIFRKbQotKHJlKSA3Ljc0MDk0IFRqCi0xNSBUSm0KLShnaW9uKSAxNy43MTM1IFRqCi0tMjg5IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjg5IFRKbQotKDEwOjEuKSAyMC4yMDQyIFRqCi0tODU3IFRKbQotKEYpIDUuNTM5MjEgVGoKLTE1IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjkwIFRKbQotKHByZSkgMTIuNzIyMiBUagotMjUgVEptCi0odmlvdXMpIDIxLjU4OSBUagotLTI4OSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyc2lvbnMsKSAzMC43MTQ3IFRqCi0tMjk5IFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTI5MCBUSm0KLShcMDAyZ3VyZSkgMjMuMjQyNyBUagotLTI4OSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yOTAgVEptCi0obW9yZSkgMjAuNDczMSBUagotNzIgNjk4LjA4MiBUZAotKGxpaykgMTAuNTIwNSBUagotMTAgVEptCi0oZSkgNC40MjMzOSBUagotLTI1MCBUSm0KLSgxMDA6MS4pIDI1LjE4NTUgVGoKLS02MjAgVEptCi0oWSkgNy4xOTMgVGoKLTExMCBUSm0KLShvdSkgOS45NjI2IFRqCi0tMjUwIFRKbQotKGNhbikgMTMuODI4MSBUagotLTI1MCBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi1bMSAwIDAgMSAxODYuMDAyIDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTg2LjAwMiAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTg2LjAwMiA2OTguMDgyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC12dnZ2KSAyOS44ODc4IFRqCi1bMSAwIDAgMSAyMTUuODg5IDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjE1Ljg4OSAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjE4LjM4IDY5OC4wODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0ob3B0aW9uKSAyNS40NjQ0IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0obW9uaXRvcikgMzEuNTUxNiBUagotLTI1MCBUSm0KLShwcm9ncmVzcykgMzMuNzUzMyBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjUwIFRKbQotKGdyZWF0KSAxOS45MTUyIFRqCi0tMjUwIFRKbQotKGRldGFpbCwpIDI0LjYyNzUgVGoKLS0yNTAgVEptCi0oaWYpIDYuMDg3MTUgVGoKLS0yNTAgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhbnQuKSAxNC42NjQ5IFRqCi1bMSAwIDAgMSA3MiA2OTUuOTI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02ODUuOTYzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2NzYuMTY0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKERlY29tcHJlc3Npb24pIDYxLjk3NzMgVGoKLS0yNTAgVEptCi0oc3BlZWQpIDIyLjY4NDggVGoKLS0yNTAgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0odW5hZikgMTcuNzAzNSBUagotMjUgVEptCi0oZmVjdGVkKSAyNC4zMzg2IFRqCi0tMjUwIFRKbQotKGJ5KSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0odGhlc2UpIDIwLjQ3MzEgVGoKLS0yNTAgVEptCi0ocGhlbm9tZW5hLikgNDguNDE4MiBUagotWzEgMCAwIDEgNzIgNjc0LjAwN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjY0LjA0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjU0LjI0NyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMTAxLjg4OCA2NTQuMjQ3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEwMS44ODggLTY1NC4yNDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwNC44NjMgNjU0LjI0NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh1c3VhbGx5KSAyOC43ODIgVGoKLS0yOTkgVEptCi0oYWxsb2NhdGVzKSAzNC44NTkxIFRqCi0tMjk4IFRKbQotKHNlKSA4LjI5ODg1IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyYWwpIDE0LjkzMzkgVGoKLS0yOTkgVEptCi0obWUpIDEyLjE3NDMgVGoKLTE1IFRKbQotKGcpIDQuOTgxMyBUagotNSBUSm0KLShhYnl0ZXMpIDI1LjQ1NDQgVGoKLS0yOTggVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yOTkgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMjk5IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yOTggVEptCi0ob3BlcmF0ZSkgMjkuMzE5OSBUagotLTI5OSBUSm0KLShpbiwpIDEwLjI0MTYgVGoKLS0zMTEgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yOTggVEptCi0odGhlbikgMTcuMTU1NiBUagotLTI5OSBUSm0KLShjaGFyKSAxNy4xNDU2IFRqCi0xOCBUSm0KLShnZXMpIDEzLjI4MDEgVGoKLS0yOTggVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS0yOTkgVEptCi0obykgNC45ODEzIFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyKSA3Ljc0MDk0IFRqCi0tMjk5IFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMjk4IFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yOTkgVEptCi0oYSkgNC40MjMzOSBUagotLTI5OCBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhaXJseSkgMTguMjYxNCBUagotLTI5OSBUSm0KLShyYW5kb20pIDMwLjQzNTcgVGoKLTcyIDY0Mi4yOTEgVGQKLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhc2hpb24uKSAyOC41MDMgVGoKLS03NDMgVEptCi0oVGhpcykgMTcuNzEzNSBUagotLTI3MCBUSm0KLShtZWFucykgMjUuNDU0NCBUagotLTI3MSBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjcwIFRKbQotKHBlcmZvcm1hbmNlLCkgNTIuODMxNyBUagotLTI3NiBUSm0KLShib3RoKSAxNy43MTM1IFRqCi0tMjcwIFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI3MSBUSm0KLShjb21wcmVzc2luZykgNTAuMzYwOSBUagotLTI3MCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI3MSBUSm0KLShkZWNvbXByZXNzaW5nLCkgNjIuMjU2MyBUagotLTI3NSBUSm0KLShpcykgNi42NDUwNSBUagotLTI3MSBUSm0KLShsYXIpIDEwLjUxMDUgVGoKLTE4IFRKbQotKGdlbHkpIDE3LjE1NTYgVGoKLS0yNzAgVEptCi0oZGV0ZXJtaW5lZCkgNDQuODIxNyBUagotLTI3MSBUSm0KLShieSkgOS45NjI2IFRqCi0tMjcwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI3MSBUSm0KLShzcGVlZCkgMjIuNjg0OCBUagotNzIgNjMwLjMzNiBUZAotKGF0KSA3LjE5MyBUagotLTI5NCBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTI5NCBUSm0KLSh5b3VyKSAxOC4yNjE0IFRqCi0tMjk0IFRKbQotKG1hY2hpbmUpIDMzLjc1MzMgVGoKLS0yOTUgVEptCi0oY2EpIDguODQ2NzkgVGoKLTEgVEptCi0obikgNC45ODEzIFRqCi0tMjk1IFRKbQotKHNlcnZpY2UpIDI4LjIxNDEgVGoKLS0yOTQgVEptCi0oY2FjaGUpIDIyLjY3NDkgVGoKLS0yOTQgVEptCi0obWlzc2VzLikgMjkuMDYwOSBUagotLTQ0MiBUSm0KLShCZWNhdXNlKSAzMy4xOTU0IFRqCi0tMjk0IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjk0IFRKbQotKHRoaXMsKSAxNi44ODY2IFRqCi0tMzA2IFRKbQotKHNtYWxsKSAyMS41ODkgVGoKLS0yOTQgVEptCi0oY2hhbmdlcykgMzIuMDg5NSBUagotLTI5NCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjk0IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5NCBUSm0KLShjb2RlKSAxOC44MDk0IFRqCi0tMjk0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yOTQgVEptCi0ocmVkdWNlKSAyNi41NTAzIFRqCi0tMjk0IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5NSBUSm0KLShtaXNzKSAxOC4yNzE0IFRqCi0tMjk0IFRKbQotKHJhdGUpIDE0LjkzMzkgVGoKLTcyIDYxOC4zODEgVGQKLShoYSkgOS40MDQ2OSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjUzIFRKbQotKGJlZW4pIDE4LjgwOTQgVGoKLS0yNTMgVEptCi0ob2JzZXJ2KSAyNi41NjAzIFRqCi0xNSBUSm0KLShlZCkgOS40MDQ2OSBUagotLTI1MyBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUzIFRKbQotKGdpKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI1MyBUSm0KLShkaXNwcm9wb3J0aW9uYXRlbHkpIDczLjA1NTcgVGoKLS0yNTMgVEptCi0obGFyKSAxMC41MTA1IFRqCi0xOCBUSm0KLShnZSkgOS40MDQ2OSBUagotLTI1MyBUSm0KLShwZXJmb3JtYW5jZSkgNTAuMzQxIFRqCi0tMjUzIFRKbQotKGltcHJvKSAyMy44MDA3IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVtZW50cy4pIDMwLjcxNDcgVGoKLS02MzkgVEptCi0oSSkgMy4zMTc1NSBUagotLTI1MyBUSm0KLShpbWFnaW5lKSAzMi4wOTk1IFRqCi1bMSAwIDAgMSA0MzguOTA5IDYxOC4zODFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDM4LjkwOSAtNjE4LjM4MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDM4LjkwOSA2MTguMzgxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSA0NjguNzk2IDYxOC4zODFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4Ljc5NiAtNjE4LjM4MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDcxLjMxOCA2MTguMzgxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLS0yNTMgVEptCi0ocGVyZm9ybSkgMzIuMDg5NSBUagotLTI1MyBUSm0KLShiZXN0KSAxNi4wNDk3IFRqCi03MiA2MDYuNDI2IFRkCi0ob24pIDkuOTYyNiBUagotLTI1MCBUSm0KLShtYWNoaW5lcykgMzcuNjI4NyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMjUwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJ5KSAxMi43MjIyIFRqCi0tMjUwIFRKbQotKGxhcikgMTAuNTEwNSBUagotMTggVEptCi0oZ2UpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oY2FjaGVzLikgMjkuMDQxIFRqCi1bMSAwIDAgMSA3MiA2MDQuMjY5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01OTQuMzA2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1NzEuNjczIFRkCi0vRjEyMl8wIDIwLjY1ODUgVGYKLSgyLjguKSAzNC40NTg0IFRqCi0tMjc4IFRKbQotKENBKSAyOS44MzA5IFRqCi04MCBUSm0KLShWRUEpIDQyLjQ3MzkgVGoKLTkwIFRKbQotKFRTKSAyNi40MDE2IFRqCi1bMSAwIDAgMSA3MiA1NzEuNDE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01NjEuNDUyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1NDkuNzU1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEkvTykgMTMuMjgwMSBUagotLTI2OCBUSm0KLShlcnJvcikgMTkuMzU3MyBUagotLTI2NyBUSm0KLShtZXNzYWdlcykgMzcuNjI4NyBUagotLTI2OCBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yNjggVEptCi0obm90KSAxMi43MzIyIFRqCi0tMjY4IFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjY3IFRKbQotKGhlbHBmdWwpIDI4LjIyNCBUagotLTI2OCBUSm0KLShhcykgOC4yOTg4NSBUagotLTI2OCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI2NyBUSm0KLShjb3VsZCkgMjIuMTM2OSBUagotLTI2OCBUSm0KLShiZS4pIDExLjg5NTMgVGoKLVsxIDAgMCAxIDI5My4zMTMgNTQ5Ljc1NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yOTMuMzEzIC01NDkuNzU1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTMuMzEzIDU0OS43NTUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDMyMy4yMDEgNTQ5Ljc1NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMjMuMjAxIC01NDkuNzU1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMjUuODY4IDU0OS43NTUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odHJpZXMpIDE3LjE1NTYgVGoKLS0yNjggVEptCi0oaGFyZCkgMTcuNzAzNSBUagotLTI2NyBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjY4IFRKbQotKGRldGVjdCkgMjMuNzkwNyBUagotLTI2OCBUSm0KLShJL08pIDEzLjI4MDEgVGoKLS0yNjggVEptCi0oZXJyb3JzKSAyMy4yMzI4IFRqCi0tMjY3IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjY4IFRKbQotKGUpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHhpdCkgMTAuNTIwNSBUagotLTI2OCBUSm0KLShjbGVhbmx5KSAyOC43NzIgVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yNzIgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1dCkgNy43NTA5IFRqCi0tMjY4IFRKbQotKHRoZSkgMTIuMTc0MyBUagotNzIgNTM3LjggVGQKLShkZXRhaWxzKSAyNi4wMTIzIFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHdoYXQpIDE5LjM2NzMgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHByb2JsZW0pIDMzLjIwNTMgVGoKLS0yNTAgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0oc29tZXRpbWVzKSA0Mi42MiBUagotLTI1MCBUSm0KLShzZWVtKSAyMC40NzMxIFRqCi0tMjUwIFRKbQotKHJhdGhlcikgMjMuMjMyOCBUagotLTI1MCBUSm0KLShtaXNsZWFkaW5nLikgNDYuMjE2NSBUagotWzEgMCAwIDEgNzIgNTM1LjY0M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTI1LjY4MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTE1Ljg4MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGlzKSAxNy43MTM1IFRqCi0tMjgwIFRKbQotKG1hbnVhbCkgMjkuMzI5OSBUagotLTI3OSBUSm0KLShwYWdlKSAxOC44MDk0IFRqCi0tMjgwIFRKbQotKHBlcnRhaW5zKSAzMS41NDE2IFRqCi0tMjgwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNzkgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnNpb24pIDI0LjM0ODYgVGoKLS0yODAgVEptCi0oMS4wLjUpIDE5LjkyNTIgVGoKLS0yODAgVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDI1Ni44NCA1MTUuODgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1Ni44NCAtNTE1Ljg4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjU2Ljg0IDUxNS44ODIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDI4Ni43MjggNTE1Ljg4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODYuNzI4IC01MTUuODgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODYuNzI4IDUxNS44ODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotLTc5OCBUSm0KLShDb21wcmVzc2VkKSA0OS4yNTUxIFRqCi0tMjgwIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNzkgVEptCi0oY3JlYXRlZCkgMjguNzYyIFRqCi0tMjgwIFRKbQotKGJ5KSA5Ljk2MjYgVGoKLS0yODAgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjc5IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9uKSAyNC4zNDg2IFRqCi0tMjgwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjgwIFRKbQotKGVudGlyZWx5KSAzMC40MzU3IFRqCi0tMjc5IFRKbQotKGZvcncpIDE4LjgwOTQgVGoKLTEwIFRKbQotKGFyZHMpIDE2LjU5NzcgVGoKLTcyIDUwMy45MjcgVGQKLShhbmQpIDE0LjM4NiBUagotLTI5NCBUSm0KLShiYWNrdykgMjYuMDAyNCBUagotMTAgVEptCi0oYXJkcykgMTYuNTk3NyBUagotLTI5MyBUSm0KLShjb21wYXRpYmxlKSA0NC4yNzM4IFRqCi0tMjk0IFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yOTQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjkzIFRKbQotKHByZSkgMTIuNzIyMiBUagotMjUgVEptCi0odmlvdXMpIDIxLjU4OSBUagotLTI5NCBUSm0KLShwdWJsaWMpIDI0LjkwNjUgVGoKLS0yOTQgVEptCi0ocmVsZWFzZXMsKSAzNC4wMjIzIFRqCi0tMzA0IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9ucykgMjguMjI0IFRqCi0tMjk0IFRKbQotKDAuMXBsMiwpIDI3LjY3NjEgVGoKLS0zMDUgVEptCi0oMC45LjApIDE5LjkyNTIgVGoKLS0yOTMgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yOTQgVEptCi0oMC45LjUsKSAyMi40MTU5IFRqCi0tMzA1IFRKbQotKDEuMC4wLCkgMjIuNDE1OSBUagotLTMwNCBUSm0KLSgxLjAuMSwpIDIyLjQxNTkgVGoKLS0zMDUgVEptCi0oMS4wLjIpIDE5LjkyNTIgVGoKLS0yOTQgVEptCi0oYW5kKSAxNC4zODYgVGoKLTcyIDQ5MS45NzIgVGQKLSgxLjAuMywpIDIyLjQxNTkgVGoKLS0yNjMgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1dCkgNy43NTA5IFRqCi0tMjYwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yNjAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjYwIFRKbQotKGZvbGxvKSAxOC44MTk0IFRqCi0yNSBUSm0KLSh3aW5nKSAxOS45MjUyIFRqCi0tMjYwIFRKbQotKGUpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHhjZXB0aW9uOikgMzcuMDgwOCBUagotLTMzMCBUSm0KLSgwLjkuMCkgMTkuOTI1MiBUagotLTI2MCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI2MCBUSm0KLShhYm8pIDE0LjM4NiBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjYwIFRKbQotKGNhbikgMTMuODI4MSBUagotLTI2MCBUSm0KLShjb3JyZWN0bHkpIDM1LjQwNzEgVGoKLS0yNjAgVEptCi0oZGVjb21wcmVzcykgNDcuMDMzNCBUagotLTI2MCBUSm0KLShtdWx0aXBsZSkgMzMuMjE1MyBUagotLTI2MCBUSm0KLShjb25jYXRlbmF0ZWQpIDUyLjAwNDggVGoKLS0yNjAgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotNzIgNDgwLjAxNyBUZAotKFwwMDJsZXMuKSAxOS4wOTgzIFRqCi0tMzEwIFRKbQotKDAuMXBsMikgMjUuMTg1NSBUagotLTI1MCBUSm0KLShjYW5ub3QpIDI2LjU2MDMgVGoKLS0yNTAgVEptCi0oZG8pIDkuOTYyNiBUagotLTI1MCBUSm0KLSh0aGlzOykgMTcuMTY1NiBUagotLTI1MCBUSm0KLShpdCkgNS41MzkyMSBUagotLTI1MCBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMjUwIFRKbQotKHN0b3ApIDE2LjYwNzcgVGoKLS0yNTAgVEptCi0oYWZ0ZXIpIDE4LjI1MTUgVGoKLS0yNTAgVEptCi0oZGVjb21wcmVzc2luZykgNTkuNzY1NiBUagotLTI1MCBUSm0KLShqdXN0KSAxNC4zOTYgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKFwwMDJyc3QpIDE1LjUwMTggVGoKLS0yNTAgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMjUwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHN0cmVhbS4pIDI5LjA1MDkgVGoKLVsxIDAgMCAxIDcyIDQ3Ny44Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDY3Ljg5N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDU4LjA5OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMnJlY292ZXIpIDcxLjczMDcgVGoKLVsxIDAgMCAxIDE0My43MzEgNDU4LjA5OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDMuNzMxIC00NTguMDk5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDYuMTc0IDQ1OC4wOTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnNpb25zKSAyOC4yMjQgVGoKLS0yNDUgVEptCi0ocHJpb3IpIDE5LjM2NzMgVGoKLS0yNDUgVEptCi0odG8pIDcuNzUwOSBUagotLTI0NSBUSm0KLSgxLjAuMikgMTkuOTI1MiBUagotLTI0NiBUSm0KLSh1c2VkKSAxOC4yNjE0IFRqCi0tMjQ1IFRKbQotKDMyLWJpdCkgMjMuODAwNyBUagotLTI0NSBUSm0KLShpbnRlKSAxNC45NDM5IFRqCi0xNSBUSm0KLShnZXJzKSAxNi41OTc3IFRqCi0tMjQ1IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNDUgVEptCi0ocmVwcmVzZW50KSAzNi41MTI5IFRqCi0tMjQ1IFRKbQotKGJpdCkgMTAuNTIwNSBUagotLTI0NiBUSm0KLShwb3NpdGlvbnMpIDM1Ljk4NDkgVGoKLS0yNDUgVEptCi0oaW4pIDcuNzUwOSBUagotLTI0NSBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjQ1IFRKbQotKFwwMDJsZXMsKSAxOS4wOTgzIFRqCi0tMjQ2IFRKbQotKHNvKSA4Ljg1Njc1IFRqCi0tMjQ1IFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMjQ1IFRKbQotKGNvdWxkKSAyMi4xMzY5IFRqCi03MiA0NDYuMTQ0IFRkCi0obm90KSAxMi43MzIyIFRqCi0tMzg0IFRKbQotKGhhbmRsZSkgMjYuNTYwMyBUagotLTM4MyBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMzg0IFRKbQotKFwwMDJsZXMpIDE2LjYwNzcgVGoKLS0zODMgVEptCi0obW9yZSkgMjAuNDczMSBUagotLTM4NCBUSm0KLSh0aGFuKSAxNy4xNTU2IFRqCi0tMzgzIFRKbQotKDUxMikgMTQuOTQzOSBUagotLTM4NCBUSm0KLShtZSkgMTIuMTc0MyBUagotMTUgVEptCi0oZykgNC45ODEzIFRqCi01IFRKbQotKGFieXRlcykgMjUuNDU0NCBUagotLTM4MyBUSm0KLShsb25nLikgMjAuMjA0MiBUagotLTE0MjEgVEptCi0oVikgNy4xOTMgVGoKLTExMSBUSm0KLShlcnNpb25zKSAyOC4yMjQgVGoKLS0zODQgVEptCi0oMS4wLjIpIDE5LjkyNTIgVGoKLS0zODMgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0zODQgVEptCi0oYWJvKSAxNC4zODYgVGoKLTE1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTM4NCBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0zODMgVEptCi0oNjQtYml0KSAyMy44MDA3IFRqCi0tMzg0IFRKbQotKGludHMpIDE0LjM5NiBUagotLTM4MyBUSm0KLShvbikgOS45NjI2IFRqCi0tMzg0IFRKbQotKHNvbWUpIDIxLjAzMSBUagotNzIgNDM0LjE4OSBUZAotKHBsYXRmb3JtcykgMzguMTg2NiBUagotLTI0NSBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTI0NiBUSm0KLShzdXBwb3J0KSAyOS44ODc4IFRqCi0tMjQ1IFRKbQotKHRoZW0pIDE5LjkyNTIgVGoKLS0yNDYgVEptCi0oXChHTlUpIDI0Ljg5NjUgVGoKLS0yNDUgVEptCi0oc3VwcG9ydGVkKSAzOS4yOTI1IFRqCi0tMjQ1IFRKbQotKHRhcikgMTAuNTEwNSBUagotMTggVEptCi0oZ2V0cywpIDE4LjU0MDQgVGoKLS0yNDcgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNDUgVEptCi0oVykgOS40MDQ2OSBUagotNDAgVEptCi0oaW5kbykgMTcuNzEzNSBUagotMjUgVEptCi0od3NcKS4pIDE2Ljg3NjYgVGoKLS0zMDkgVEptCi0oVCkgNi4wODcxNSBUagotODAgVEptCi0obykgNC45ODEzIFRqCi0tMjQ1IFRKbQotKGVzdGFibGlzaCkgMzQuODY5MSBUagotLTI0NSBUSm0KLSh3aGV0aGVyKSAzMi4wODk1IFRqCi0tMjQ2IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjQ1IFRKbQotKG5vdCkgMTIuNzMyMiBUagotWzEgMCAwIDEgNDY4LjI2OSA0MzQuMTg5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OC4yNjkgLTQzNC4xODldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ2OC4yNjkgNDM0LjE4OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMnJlY292ZXIpIDcxLjczMDcgVGoKLVsxIDAgMCAxIDU0MCA0MzQuMTg5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtNDM0LjE4OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDIyLjIzMyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yNTUgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1aWx0KSAxMy4yOTAxIFRqCi0tMjU1IFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yNTUgVEptCi0oc3VjaCkgMTguMjYxNCBUagotLTI1NSBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjU1IFRKbQotKGxpbWl0YXRpb24sKSA0MS4yNDUyIFRqCi0tMjU2IFRKbQotKHJ1bikgMTMuMjgwMSBUagotLTI1NSBUSm0KLShpdCkgNS41MzkyMSBUagotLTI1NSBUSm0KLSh3aXRob3V0KSAzMC40NDU3IFRqCi0tMjU1IFRKbQotKGFyKSA3Ljc0MDk0IFRqCi0xOCBUSm0KLShndW1lbnRzLikgMzYuMjUzOSBUagotLTMyNSBUSm0KLShJbikgOC4yOTg4NSBUagotLTI1NSBUSm0KLShhbikgOS40MDQ2OSBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMjU2IFRKbQotKGUpIDQuNDIzMzkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW50KSAxMi4xNzQzIFRqCi0tMjU1IFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI1NSBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0yNTUgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1aWxkKSAxNS41MDE4IFRqCi0tMjU1IFRKbQotKHlvdXJzZWxmKSAzMi42NDc0IFRqCi0tMjU1IFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tMjU1IFRKbQotKHVubGltaXRlZCkgMzguMTk2NiBUagotLTI1NSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyc2lvbikgMjQuMzQ4NiBUagotLTI1NSBUSm0KLShpZikgNi4wODcxNSBUagotNzIgNDEwLjI3OCBUZAotKHlvdSkgMTQuOTQzOSBUagotLTI1MCBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0yNTAgVEptCi0ocmVjb21waWxlKSAzOS44NDA0IFRqCi0tMjUwIFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDE3Ni4zMTggNDEwLjI3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzYuMzE4IC00MTAuMjc4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzYuMzE4IDQxMC4yNzggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oTWF5YmVVSW50NjQpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDI0Mi4wNzEgNDEwLjI3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNDIuMDcxIC00MTAuMjc4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNDQuNTYyIDQxMC4yNzggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc2V0KSAxMS4wNjg0IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oYW4pIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0odW5zaWduZWQpIDM1Ljk3NDkgVGoKLS0yNTAgVEptCi0oNjQtYml0KSAyMy44MDA3IFRqCi0tMjUwIFRKbQotKGludGUpIDE0Ljk0MzkgVGoKLTE1IFRKbQotKGdlcikgMTIuNzIyMiBUagotNTUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgNDA4LjEyMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzk4LjE1OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzc1LjUyNSBUZAotL0YxMjJfMCAyMC42NTg1IFRmCi0oMi45LikgMzQuNDU4NCBUagotLTI3OCBUSm0KLShBKSAxNC45MTU0IFRqCi01MCBUSm0KLShVVEhPUikgNzMuNDQxIFRqCi1bMSAwIDAgMSA3MiAzNzUuMjY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zNjUuMzA1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzNTMuNjA4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEp1bGlhbikgMjMuODAwNyBUagotLTI1MCBUSm0KLShTZSkgOS45NjI2IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXJkLCkgMTUuMjEyOSBUagotWzEgMCAwIDEgMTMyLjgwMSAzNTMuNjA4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzMi44MDEgLTM1My42MDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzMi44MDEgMzUzLjYwOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShqc2V3YXJkQGJ6aXAub3JnKSA5NS42NDEgVGoKLVsxIDAgMCAxIDIyOC40NDMgMzUzLjYwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTYuNDQzIC0xLjUzNDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM0Mi4xMTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDMzMS42OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGUpIDE1LjQ5MTggVGoKLS0yOTkgVEptCi0oaWRlYXMpIDIwLjQ3MzEgVGoKLS0zMDAgVEptCi0oZW1ib2RpZWQpIDM5LjI5MjUgVGoKLS0yOTkgVEptCi0oaW4pIDcuNzUwOSBUagotWzEgMCAwIDEgMTY2Ljk0MiAzMzEuNjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY2Ljk0MiAtMzMxLjY5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjYuOTQyIDMzMS42OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMTk2LjgzIDMzMS42OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTYuODMgLTMzMS42OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTk5LjgxMyAzMzEuNjkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYXJlKSAxMi4xNjQzIFRqCi0tMjk5IFRKbQotKGR1ZSkgMTQuMzg2IFRqCi0tMzAwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yOTkgVEptCi0oXChhdCkgMTAuNTEwNSBUagotLTMwMCBUSm0KLShsZWFzdFwpKSAyMS41NzkgVGoKLS0yOTkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzAwIFRKbQotKGZvbGxvKSAxOC44MTk0IFRqCi0yNSBUSm0KLSh3aW5nKSAxOS45MjUyIFRqCi0tMjk5IFRKbQotKHBlb3BsZTopIDI5LjMyOTkgVGoKLS00MDkgVEptCi0oTWljaGFlbCkgMzIuNjQ3NCBUagotLTMwMCBUSm0KLShCdXJybykgMjMuMjQyNyBUagotMjUgVEptCi0od3MpIDExLjA2ODQgVGoKLS0yOTkgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yOTkgVEptCi0oRGEpIDExLjYxNjQgVGoKLTIwIFRKbQotKHZpZCkgMTIuNzMyMiBUagotLTMwMCBUSm0KLShXaGVlbGVyKSAzMy43NDMzIFRqCi0tMjk5IFRKbQotKFwoZm9yKSAxNC45MzM5IFRqCi03MiAzMTkuNzM1IFRkCi0odGhlKSAxMi4xNzQzIFRqCi0tMzEyIFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMzEzIFRKbQotKHNvcnRpbmcpIDI3LjY3NjEgVGoKLS0zMTIgVEptCi0odHJhbnNmb3JtYXRpb25cKSwpIDY0LjQ2OCBUagotLTMyOCBUSm0KLShEYSkgMTEuNjE2NCBUagotMjAgVEptCi0odmlkKSAxMi43MzIyIFRqCi0tMzEyIFRKbQotKFdoZWVsZXIpIDMzLjc0MzMgVGoKLS0zMTMgVEptCi0oXChhZykgMTIuNzIyMiBUagotNSBUSm0KLShhaW4sKSAxNC42NjQ5IFRqCi0tMzI3IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTMxMyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMTIgVEptCi0oSHVmKSAxNS40OTE4IFRqCi0yNSBUSm0KLShmbWFuKSAyMC40NzMxIFRqCi0tMzEyIFRKbQotKGNvZGVyXCksKSAyNy45MzUxIFRqCi0tMzI4IFRKbQotKFBldGVyKSAyMC40NzMxIFRqCi0tMzEzIFRKbQotKEZlbndpY2spIDM0LjMxMTIgVGoKLS0zMTIgVEptCi0oXChmb3IpIDE0LjkzMzkgVGoKLS0zMTIgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzEzIFRKbQotKHN0cnVjdHVyZWQpIDM5Ljg0MDQgVGoKLTcyIDMwNy43OCBUZAotKGNvZGluZykgMjcuMTE4MiBUagotLTMyNSBUSm0KLShtb2RlbCkgMjQuOTA2NSBUagotLTMyNiBUSm0KLShpbikgNy43NTA5IFRqCi0tMzI1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMyNiBUSm0KLShvcmlnaW5hbCkgMzAuOTkzNiBUagotWzEgMCAwIDEgMTkxLjE1NiAzMDcuNzc5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5MS4xNTYgLTMwNy43NzldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5MS4xNTYgMzA3Ljc3OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwKSAyMy45MTAyIFRqCi1bMSAwIDAgMSAyMTUuMDY3IDMwNy43NzldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjE1LjA2NyAtMzA3Ljc3OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjE1LjA2NyAzMDcuNzc5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0zNDQgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0zMjYgVEptCi0obWFuKSAxNy4xNTU2IFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLS0zMjUgVEptCi0ocmVcMDAybmVtZW50c1wpLCkgNTIuMjkzNyBUagotLTM0NSBUSm0KLShhbmQpIDE0LjM4NiBUagotLTMyNSBUSm0KLShBbGlzdGFpcikgMjkuODg3OCBUagotLTMyNiBUSm0KLShNb2YpIDE3LjE1NTYgVGoKLTI1IFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGF0LCkgOS42ODM2NSBUagotLTM0NCBUSm0KLShSYWRmb3JkKSAzMi42NDc0IFRqCi0tMzI1IFRKbQotKE5lYWwpIDE4LjgwOTQgVGoKLS0zMjYgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0zMjUgVEptCi0oSWFuKSAxMi43MjIyIFRqCi0tMzI2IFRKbQotKFcpIDkuNDA0NjkgVGoKLTQwIFRKbQotKGl0dGVuKSAxNy43MTM1IFRqCi0tMzI1IFRKbQotKFwoZm9yKSAxNC45MzM5IFRqCi03MiAyOTUuODI0IFRkCi0odGhlKSAxMi4xNzQzIFRqCi0tMjc3IFRKbQotKGFyaXRobWV0aWMpIDQwLjM5ODMgVGoKLS0yNzcgVEptCi0oY29kZXIpIDIyLjEyNjkgVGoKLS0yNzcgVEptCi0oaW4pIDcuNzUwOSBUagotLTI3NyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNzcgVEptCi0ob3JpZ2luYWwpIDMwLjk5MzYgVGoKLVsxIDAgMCAxIDIxNC4xNzEgMjk1LjgyNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTQuMTcxIC0yOTUuODI0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTQuMTcxIDI5NS44MjQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcCkgMjMuOTEwMiBUagotWzEgMCAwIDEgMjM4LjA4MiAyOTUuODI0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIzOC4wODIgLTI5NS44MjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIzOC4wODIgMjk1LjgyNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcKS4pIDUuODA4MiBUagotLTc4MiBUSm0KLShJKSAzLjMxNzU1IFRqCi0tMjc3IFRKbQotKGFtKSAxMi4xNzQzIFRqCi0tMjc2IFRKbQotKG11Y2gpIDIyLjEzNjkgVGoKLS0yNzcgVEptCi0oaW5kZWJ0ZWQpIDM0LjMxMTIgVGoKLS0yNzcgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMjc3IFRKbQotKHRoZWlyKSAxOC4yNjE0IFRqCi0tMjc3IFRKbQotKGhlbHAsKSAxOS42NDYyIFRqCi0tMjg0IFRKbQotKHN1cHBvcnQpIDI5Ljg4NzggVGoKLS0yNzcgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNzcgVEptCi0oYWR2aWNlLikgMjguNDkzIFRqCi0tNzgxIFRKbQotKFNlZSkgMTQuMzg2IFRqCi0tMjc3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI3NyBUSm0KLShtYW51YWwpIDI5LjMyOTkgVGoKLTcyIDI4My44NjkgVGQKLShpbikgNy43NTA5IFRqCi0tMzMwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMzMCBUSm0KLShzb3VyY2UpIDI2LjAwMjQgVGoKLS0zMzAgVEptCi0oZGlzdHJpYikgMjUuNDY0NCBUagotMjAgVEptCi0odXRpb24pIDIwLjQ4MzEgVGoKLS0zMzAgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMzI5IFRKbQotKHBvaW50ZXJzKSAzMi4wOTk1IFRqCi0tMzMwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zMzAgVEptCi0oc291cmNlcykgMjkuODc3OCBUagotLTMzMCBUSm0KLShvZikgOC4yOTg4NSBUagotLTMzMCBUSm0KLShkb2N1bWVudGF0aW9uLikgNjEuNzA4MyBUagotLTEwOTkgVEptCi0oQ2hyaXN0aWFuKSAzNi41MzI5IFRqCi0tMzMwIFRKbQotKHYpIDQuOTgxMyBUagotMjAgVEptCi0ob24pIDkuOTYyNiBUagotLTMzMCBUSm0KLShSb3F1ZXMpIDI5Ljg4NzggVGoKLS0zMzAgVEptCi0oZW5jb3VyYWdlZCkgNDUuOTE3NiBUagotLTMzMCBUSm0KLShtZSkgMTIuMTc0MyBUagotLTMzMCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzMwIFRKbQotKGxvb2spIDE3LjcxMzUgVGoKLTcyIDI3MS45MTQgVGQKLShmb3IpIDExLjYxNjQgVGoKLS0yNzEgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYXN0ZXIpIDE4LjgwOTQgVGoKLS0yNzEgVEptCi0oc29ydGluZykgMjcuNjc2MSBUagotLTI3MSBUSm0KLShhbGdvcml0aG1zLCkgNDUuMTEwNyBUagotLTI3NiBUSm0KLShzbykgOC44NTY3NSBUagotLTI3MiBUSm0KLShhcykgOC4yOTg4NSBUagotLTI3MSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjcxIFRKbQotKHNwZWVkKSAyMi42ODQ4IFRqCi0tMjcxIFRKbQotKHVwKSA5Ljk2MjYgVGoKLS0yNzEgVEptCi0oY29tcHJlc3Npb24uKSA1Mi44NTE2IFRqCi0tNzQ2IFRKbQotKEJlbGEpIDE4LjI2MTQgVGoKLS0yNzEgVEptCi0oTHVia2luKSAyOC43ODIgVGoKLS0yNzEgVEptCi0oZW5jb3VyYWdlZCkgNDUuOTE3NiBUagotLTI3MSBUSm0KLShtZSkgMTIuMTc0MyBUagotLTI3MiBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjcxIFRKbQotKGltcHJvKSAyMy44MDA3IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yNzEgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjcxIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvcnN0LWNhc2UpIDM1LjQwNzEgVGoKLTcyIDI1OS45NTkgVGQKLShjb21wcmVzc2lvbikgNTAuMzYwOSBUagotLTM0MCBUSm0KLShwZXJmb3JtYW5jZS4pIDUyLjgzMTcgVGoKLS01ODAgVEptCi0oRG9ubmEpIDI2LjU2MDMgVGoKLS0zMzkgVEptCi0oUm9iaW5zb24pIDM4LjE5NjYgVGoKLS0zNDAgVEptCi0oWE1MaXNlZCkgMzguMTg2NiBUagotLTM0MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNDAgVEptCi0oZG9jdW1lbnRhdGlvbi4pIDYxLjcwODMgVGoKLS01ODAgVEptCi0oTWFuKSAxOC4yNjE0IFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLS0zNDAgVEptCi0ocGVvcGxlKSAyNi41NjAzIFRqCi0tMzQwIFRKbQotKHNlbnQpIDE2LjA0OTcgVGoKLS0zMzkgVEptCi0ocGF0Y2hlcywpIDMyLjM2ODUgVGoKLS0zNjMgVEptCi0oaGVscGVkKSAyNi41NjAzIFRqCi0tMzQwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLTcyIDI0OC4wMDQgVGQKLShwb3J0YWJpbGl0eSkgNDEuNTE0MiBUagotLTI1MCBUSm0KLShwcm9ibGVtcywpIDM5LjU3MTQgVGoKLS0yNTAgVEptCi0obGVudCkgMTQuOTQzOSBUagotLTI1MCBUSm0KLShtYWNoaW5lcywpIDQwLjExOTQgVGoKLS0yNTAgVEptCi0oZykgNC45ODEzIFRqCi01IFRKbQotKGEpIDQuNDIzMzkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShhZHZpY2UpIDI2LjAwMjQgVGoKLS0yNTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNTAgVEptCi0od2VyZSkgMTkuMzU3MyBUagotLTI1MCBUSm0KLShnZW5lcmFsbHkpIDM3LjA3MDggVGoKLS0yNTAgVEptCi0oaGVscGZ1bC4pIDMwLjcxNDcgVGoKLVsxIDAgMCAxIDcyIDI0NS44NDddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAwIC0xOTQuOTk1XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2LjU4NTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0My4wNjMzIC02LjQ4NTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjMzMiAtNTAuOTUxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM5LjM5NSA1MC45NTE0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDcpIDQuOTgxMyBUagotWzEgMCAwIDEgNDUzLjI2OSA1MC44NTE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgOTMuNTk4NSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi4yNzY1IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotUQotc2hvd3BhZ2UKLSUlUGFnZVRyYWlsZXIKLXBkZkVuZFBhZ2UKLSUlUGFnZTogMTEgMTEKLSUlQmVnaW5QYWdlU2V0dXAKLSUlUGFnZU9yaWVudGF0aW9uOiBQb3J0cmFpdAotcGRmU3RhcnRQYWdlCi0wIDAgNjEyIDc5MiByZSBXCi0lJUVuZFBhZ2VTZXR1cAotW10gMCBkCi0xIGkKLTAgagotMCBKCi0xMCBNCi0xIHcKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLWZhbHNlIG9wCi1mYWxzZSBPUAotMCAwIDYxMiA3OTIgcmUKLVcKLXEKLVsxIDAgMCAxIDcyIDc0MS41NTRdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQuMzgzNiAxNC40NDU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTg3LjE5NyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxNDEuNjQzIDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQxLjY0MyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTEzLjk0NzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0wLjQ5ODFdIGNtCi1xCi1bXSAwIGQKLTAgSgotMC40OTgxIHcKLTAgMC4yNDkxIG0KLTQ3NS40NjUgMC4yNDkxIGwKLVMKLVEKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ3OS4yNTEgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xNS4wMzY1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0yMS41NTQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC03MjBdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDcwMS45MTYgVGQKLS9GMTIyXzAgMjQuNzkwMiBUZgotKDMuKSAyMC42NzUgVGoKLS01NTYgVEptCi0oUHIpIDI2LjE3ODUgVGoKLTIwIFRKbQotKG9ncmFtbWluZykgMTM0Ljk4MyBUagotLTI3OCBUSm0KLSh3aXRoKSA0OS41ODA0IFRqCi1bMSAwIDAgMSAzMzAuNDg0IDcwMS45MTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzMwLjQ4NCAtNzAxLjkxNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzMwLjQ4NCA3MDEuOTE2IFRkCi0vRjM5Ml8wIDI0Ljc5MDIgVGYKLShsaWJiemlwMikgMTE4Ljk5MyBUagotWzEgMCAwIDEgNDQ5LjQ3NyA3MDEuOTE2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM3Ny40NzcgLTUuNTE1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTE0Ljk0MzldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY3MS40OTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDY1Ni4zNSBUZAotL0YxMjJfMCAxNy4yMTU0IFRmCi0oVCkgMTAuNTE4NiBUagotODAgVEptCi0oYWIpIDIwLjA5MDQgVGoKLTEwIFRKbQotKGxlKSAxNC4zNTc2IFRqCi0tMjc4IFRKbQotKG9mKSAxNi4yNTEzIFRqCi0tMjc4IFRKbQotKENvbnRlbnRzKSA3NC41OTQzIFRqCi1bMSAwIDAgMSA3MiA2NDcuNTI4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTEuNzQwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjM1Ljc4OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjM1Ljc4OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjEuKSAxNC45NDM5IFRqCi0tMzEwIFRKbQotKFQpIDYuMDg3MTUgVGoKLTgwIFRKbQotKG9wLWxlKSAyMC40NzMxIFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVsKSA3LjE5MyBUagotLTI1MCBUSm0KLShzdHJ1Y3R1cmUpIDM0Ljg1OTEgVGoKLVsxIDAgMCAxIDE2NC45MjEgNjM1Ljc4OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY5LjkwMiAtNjM1Ljc4OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTc5Ljk5NyA2MzUuNzg4IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNjM1Ljc4OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC02MzUuNzg4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDYzNS43ODggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOCkgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNjM1Ljc4OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjIzLjgzMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjIzLjgzMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjEuMS4pIDIyLjQxNTkgVGoKLS0zMTAgVEptCi0oTG8pIDExLjA2ODQgVGoKLTI1IFRKbQotKHctbGUpIDE3LjcwMzUgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWwpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHN1bW1hcnkpIDM3LjA4MDggVGoKLVsxIDAgMCAxIDE3Ny4zNzQgNjIzLjgzMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTgyLjM1NSAtNjIzLjgzMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTkyLjg2NiA2MjMuODMyIFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUxMS4xMDggNjIzLjgzMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTEuMTA4IC02MjMuODMyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTEuMTA4IDYyMy44MzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOSkgNC45ODEzIFRqCi1bMSAwIDAgMSA1MTYuMDkgNjIzLjgzMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjExLjg3N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjExLjg3NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjEuMi4pIDIyLjQxNTkgVGoKLS0zMTAgVEptCi0oSGlnaC1sZSkgMzAuNDM1NyBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbCkgNy4xOTMgVGoKLS0yNTAgVEptCi0oc3VtbWFyeSkgMzcuMDgwOCBUagotWzEgMCAwIDEgMTc5LjI4NyA2MTEuODc3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODQuMjY4IC02MTEuODc3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xOTMuODIyIDYxMS44NzcgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTExLjEwOCA2MTEuODc3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUxMS4xMDggLTYxMS44NzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUxMS4xMDggNjExLjg3NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSg5KSA0Ljk4MTMgVGoKLVsxIDAgMCAxIDUxNi4wOSA2MTEuODc3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43OTg0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01OTkuOTIyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1OTkuOTIyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuMS4zLikgMjIuNDE1OSBUagotLTMxMCBUSm0KLShVdGlsaXR5KSAyNi4wMjIzIFRqCi0tMjUwIFRKbQotKGZ1bmN0aW9ucykgMzcuMDgwOCBUagotLTI1MCBUSm0KLShzdW1tYXJ5KSAzNy4wODA4IFRqCi1bMSAwIDAgMSAyMDIuNjY5IDU5OS45MjJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwNy42NSAtNTk5LjkyMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjE2LjU4MiA1OTkuOTIyIFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MTEuMTA4IDU5OS45MjJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTExLjEwOCAtNTk5LjkyMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTExLjEwOCA1OTkuOTIyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDkpIDQuOTgxMyBUagotWzEgMCAwIDEgNTE2LjA5IDU5OS45MjJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU4Ny45NjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU4Ny45NjcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy4yLikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShFcnJvcikgMjEuMDIxMSBUagotLTI1MCBUSm0KLShoYW5kbGluZykgMzQuODY5MSBUagotWzEgMCAwIDEgMTQ4LjQxMyA1ODcuOTY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTMuMzk0IC01ODcuOTY3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjIuNjExIDU4Ny45NjcgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyA1ODcuOTY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTU4Ny45NjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgNTg3Ljk2NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxMCkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgNTg3Ljk2N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTc2LjAxMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTc2LjAxMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjMuKSAxNC45NDM5IFRqCi0tMzEwIFRKbQotKExvKSAxMS4wNjg0IFRqCi0yNSBUSm0KLSh3LWxlKSAxNy43MDM1IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVsKSA3LjE5MyBUagotLTI1MCBUSm0KLShpbnRlcmYpIDIxLjU3OSBUagotMTAgVEptCi0oYWNlKSAxMy4yNzAyIFRqCi1bMSAwIDAgMSAxNjcuNTcxIDU3Ni4wMTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3Mi41NTIgLTU3Ni4wMTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE4MS4wNDUgNTc2LjAxMiBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNTc2LjAxMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC01NzYuMDEyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDU3Ni4wMTIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMTEpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDU3Ni4wMTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0wLjA5OTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMS44NTU3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01NjQuMDU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1NjQuMDU2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuMy4xLikgMjIuNDE1OSBUagotWzEgMCAwIDEgOTcuNTA0MyA1NjQuMDU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTk3LjUwNDMgLTU2NC4wNTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTk3LjUwNDMgNTY0LjA1NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzc0luaXQpIDEwNy41OTYgVGoKLVsxIDAgMCAxIDIwNS4xMDEgNTY0LjA1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjEwLjA4MiAtNTY0LjA1Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjE5LjczNiA1NjQuMDU2IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyA1NjQuMDU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTU2NC4wNTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgNTY0LjA1NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxMSkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgNTY0LjA1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTEuNTM0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjQyMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTUyLjEwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTUyLjEwMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjMuMi4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgNTUyLjEwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC01NTIuMTAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDU1Mi4xMDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3MpIDgzLjY4NTggVGoKLVsxIDAgMCAxIDE4MS4xOSA1NTIuMTAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODYuMTcyIC01NTIuMTAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xOTQuNDk3IDU1Mi4xMDEgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDU1Mi4xMDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtNTUyLjEwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyA1NTIuMTAxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDEzKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSA1NTIuMTAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMS41MzQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTAuNDIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01NDAuMTQ2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1NDAuMTQ2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuMy4zLikgMjIuNDE1OSBUagotWzEgMCAwIDEgOTcuNTA0MyA1NDAuMTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTk3LjUwNDMgLTU0MC4xNDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTk3LjUwNDMgNTQwLjE0NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzc0VuZCkgMTAxLjYxOSBUagotWzEgMCAwIDEgMTk5LjEyMyA1NDAuMTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDQuMTA1IC01NDAuMTQ2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTQuNTMzIDU0MC4xNDYgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyA1NDAuMTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTU0MC4xNDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgNTQwLjE0NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxNikgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgNTQwLjE0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTEuNTM0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjQyMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTI4LjE5MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTI4LjE5MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjMuNC4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgNTI4LjE5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC01MjguMTkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDUyOC4xOTEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzc0luaXQpIDExOS41NTEgVGoKLVsxIDAgMCAxIDIxNy4wNTYgNTI4LjE5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjIyLjAzNyAtNTI4LjE5MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjMyLjM1NSA1MjguMTkxIFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyA1MjguMTkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTUyOC4xOTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgNTI4LjE5MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxNikgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgNTI4LjE5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTEuNTM0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjQyMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTE2LjIzNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTE2LjIzNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjMuNS4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgNTE2LjIzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC01MTYuMjM2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDUxNi4yMzYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzcykgOTUuNjQxIFRqCi1bMSAwIDAgMSAxOTMuMTQ2IDUxNi4yMzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5OC4xMjcgLTUxNi4yMzZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwNy4xMTYgNTE2LjIzNiBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNTE2LjIzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC01MTYuMjM2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDUxNi4yMzYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMTcpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDUxNi4yMzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0xLjUzNDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMC40MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTUwNC4yODFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDUwNC4yODEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy4zLjYuKSAyMi40MTU5IFRqCi1bMSAwIDAgMSA5Ny41MDQzIDUwNC4yODFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTcuNTA0MyAtNTA0LjI4MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTcuNTA0MyA1MDQuMjgxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekRlY29tcHJlc3NFbmQpIDExMy41NzQgVGoKLVsxIDAgMCAxIDIxMS4wNzggNTA0LjI4MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjE2LjA2IC01MDQuMjgxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjQuOTM4IDUwNC4yODEgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNTA0LjI4MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC01MDQuMjgxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDUwNC4yODEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMTgpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDUwNC4yODFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0xLjUzNDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMC40MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQ5Mi4zMjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQ5Mi4zMjUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy40LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShIaWdoLWxlKSAzMC40MzU3IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVsKSA3LjE5MyBUagotLTI1MCBUSm0KLShpbnRlcmYpIDIxLjU3OSBUagotMTAgVEptCi0oYWNlKSAxMy4yNzAyIFRqCi1bMSAwIDAgMSAxNjkuNDgzIDQ5Mi4zMjVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3NC40NjUgLTQ5Mi4zMjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE4NC4yMTYgNDkyLjMyNSBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyA0OTIuMzI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTQ5Mi4zMjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgNDkyLjMyNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxOCkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgNDkyLjMyNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDgwLjM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0ODAuMzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy40LjEuKSAyMi40MTU5IFRqCi1bMSAwIDAgMSA5Ny41MDQzIDQ4MC4zN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC00ODAuMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTk3LjUwNDMgNDgwLjM3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRPcGVuKSA4My42ODU4IFRqCi1bMSAwIDAgMSAxODEuMTkgNDgwLjM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODYuMTcyIC00ODAuMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5NC40OTcgNDgwLjM3IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyA0ODAuMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtNDgwLjM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDQ4MC4zNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxOSkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgNDgwLjM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMS41MzQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTAuNDIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00NjguNDE1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NjguNDE1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuNC4yLikgMjIuNDE1OSBUagotWzEgMCAwIDEgOTcuNTA0MyA0NjguNDE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTk3LjUwNDMgLTQ2OC40MTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTk3LjUwNDMgNDY4LjQxNSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkKSA1OS43NzU2IFRqCi1bMSAwIDAgMSAxNTcuMjggNDY4LjQxNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTYyLjI2MSAtNDY4LjQxNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTcxLjQ3MiA0NjguNDE1IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDQ2OC40MTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtNDY4LjQxNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyA0NjguNDE1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIwKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSA0NjguNDE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMS4zMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjY0NTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQ1Ni40Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDU2LjQ2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuNC4zLikgMjIuNDE1OSBUagotWzEgMCAwIDEgOTcuNTA0MyA0NTYuNDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTcuNTA0MyAtNDU2LjQ2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDQ1Ni40NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkR2V0VW51c2VkKSAxMTMuNTc0IFRqCi1bMSAwIDAgMSAyMTEuMDc4IDQ1Ni40Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjE2LjA2IC00NTYuNDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIyNC45MzggNDU2LjQ2IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDQ1Ni40Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC00NTYuNDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgNDU2LjQ2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIxKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSA0NTYuNDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0xLjMxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTAuNjQ1Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDQ0LjUwNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDQ0LjUwNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjQuNC4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgNDQ0LjUwNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC00NDQuNTA1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDQ0NC41MDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6UmVhZENsb3NlKSA4OS42NjM0IFRqCi1bMSAwIDAgMSAxODcuMTY4IDQ0NC41MDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5Mi4xNDkgLTQ0NC41MDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwMS45MTQgNDQ0LjUwNSBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDQ0NC41MDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtNDQ0LjUwNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyA0NDQuNTA1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIyKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSA0NDQuNTA1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMS4zMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjY0NTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQzMi41NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDMyLjU1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuNC41LikgMjIuNDE1OSBUagotWzEgMCAwIDEgOTcuNTA0MyA0MzIuNTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTcuNTA0MyAtNDMyLjU1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDQzMi41NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpXcml0ZU9wZW4pIDg5LjY2MzQgVGoKLVsxIDAgMCAxIDE4Ny4xNjggNDMyLjU1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTIuMTQ5IC00MzIuNTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwMS45MTQgNDMyLjU1IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNDMyLjU1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTQzMi41NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyA0MzIuNTUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjIpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDQzMi41NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTEuNTM0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjQyMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDIwLjU5NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDIwLjU5NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjQuNi4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgNDIwLjU5NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC00MjAuNTk0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDQyMC41OTQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6V3JpdGUpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDE2My4yNTggNDIwLjU5NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY4LjIzOSAtNDIwLjU5NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTc2LjY3NSA0MjAuNTk0IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNDIwLjU5NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC00MjAuNTk0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDQyMC41OTQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjMpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDQyMC41OTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0xLjMxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTAuNjQ1Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDA4LjYzOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDA4LjYzOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjQuNy4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgNDA4LjYzOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC00MDguNjM5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDQwOC42MzkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6V3JpdGVDbG9zZSkgOTUuNjQxIFRqCi1bMSAwIDAgMSAxOTMuMTQ2IDQwOC42MzldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5OC4xMjcgLTQwOC42MzldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwNy4xMTYgNDA4LjYzOSBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNDA4LjYzOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC00MDguNjM5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDQwOC42MzkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjMpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDQwOC42MzldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0xLjMxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTAuNjQ1MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzk2LjY4NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzk2LjY4NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjQuOC4pIDIyLjQxNTkgVGoKLS0zMTAgVEptCi0oSGFuZGxpbmcpIDM3LjA4MDggVGoKLS0yNTAgVEptCi0oZW1iZWRkZWQpIDQwLjk0NjMgVGoKLS0yNTAgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI1MCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKHN0cmVhbXMpIDMwLjQzNTcgVGoKLVsxIDAgMCAxIDI3OS41NiAzOTYuNjg0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODQuNTQxIC0zOTYuNjg0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTQuNjAxIDM5Ni42ODQgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAzOTYuNjg0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTM5Ni42ODRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMzk2LjY4NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyNCkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMzk2LjY4NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzg0LjcyOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzg0LjcyOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjQuOS4pIDIyLjQxNTkgVGoKLS0zMTAgVEptCi0oU3RhbmRhcmQpIDM1LjQxNyBUagotLTI1MCBUSm0KLShcMDAybGUtcmVhZGluZy93cml0aW5nKSA3Ny40NzkxIFRqCi0tMjUwIFRKbQotKGNvZGUpIDE4LjgwOTQgVGoKLVsxIDAgMCAxIDIzNC4xOSAzODQuNzI5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzkuMTcyIC0zODQuNzI5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNDcuNTY0IDM4NC43MjkgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDM4NC43MjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtMzg0LjcyOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyAzODQuNzI5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDI1KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSAzODQuNzI5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43OTg0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zNzIuNzc0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzNzIuNzc0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuNS4pIDE0Ljk0MzkgVGoKLS0zMTAgVEptCi0oVXRpbGl0eSkgMjYuMDIyMyBUagotLTI1MCBUSm0KLShmdW5jdGlvbnMpIDM3LjA4MDggVGoKLVsxIDAgMCAxIDE1NS42MjUgMzcyLjc3NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTYwLjYwNyAtMzcyLjc3NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTcwLjY0NSAzNzIuNzc0IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDM3Mi43NzRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtMzcyLjc3NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyAzNzIuNzc0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDI2KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSAzNzIuNzc0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43OTgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zNjAuODE5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzNjAuODE5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMuNS4xLikgMjIuNDE1OSBUagotWzEgMCAwIDEgOTcuNTA0MyAzNjAuODE5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTk3LjUwNDMgLTM2MC44MTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTk3LjUwNDMgMzYwLjgxOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3MpIDE0My40NjEgVGoKLVsxIDAgMCAxIDI0MC45NjYgMzYwLjgxOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjQ1Ljk0OCAtMzYwLjgxOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjU1LjM4IDM2MC44MTkgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAzNjAuODE5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTM2MC44MTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMzYwLjgxOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyNikgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMzYwLjgxOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTEuNTM0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTEwLjQyMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzQ4Ljg2M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzQ4Ljg2MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjUuMi4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDk3LjUwNDMgMzQ4Ljg2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Ny41MDQzIC0zNDguODYzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05Ny41MDQzIDM0OC44NjMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3MpIDE1NS40MTcgVGoKLVsxIDAgMCAxIDI1Mi45MjIgMzQ4Ljg2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjU3LjkwMyAtMzQ4Ljg2M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjY3Ljk5OSAzNDguODYzIFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgMzQ4Ljg2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC0zNDguODYzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDM0OC44NjMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMjcpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDM0OC44NjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0xLjUzNDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMC40MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTMzNi45MDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDMzNi45MDggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMy42LikgMTQuOTQzOSBUagotWzEgMCAwIDEgOTAuMDMyNCAzMzYuOTA4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwLjAzMjQgLTMzNi45MDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwLjAzMjQgMzM2LjkwOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh6bGliKSAyMy45MTAyIFRqCi1bMSAwIDAgMSAxMTMuOTQzIDMzNi45MDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTEzLjk0MyAtMzM2LjkwOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE2LjQzMyAzMzYuOTA4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGNvbXBhdGliaWxpdHkpIDUzLjE0MDUgVGoKLS0yNTAgVEptCi0oZnVuY3Rpb25zKSAzNy4wODA4IFRqCi1bMSAwIDAgMSAyMDkuMTQ0IDMzNi45MDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxNC4xMjYgLTMzNi45MDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIyMy45NzEgMzM2LjkwOCBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAzMzYuOTA4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTMzNi45MDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMzM2LjkwOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyOCkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMzM2LjkwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzI0Ljk1M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzI0Ljk1MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjcuKSAxNC45NDM5IFRqCi0tMzEwIFRKbQotKFVzaW5nKSAyMy44MDA3IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMjUwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotWzEgMCAwIDEgMTc3LjE5NSAzMjQuOTUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3Ny4xOTUgLTMyNC45NTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3Ny4xOTUgMzI0Ljk1MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShzdGRpbykgMjkuODg3OCBUagotWzEgMCAwIDEgMjA3LjA4MyAzMjQuOTUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwNy4wODMgLTMyNC45NTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwNy4wODMgMzI0Ljk1MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgtZnJlZSkgMTguNzk5NCBUagotLTI1MCBUSm0KLShlbikgOS40MDQ2OSBUagotNDAgVEptCi0odmlyb25tZW50KSA0MC45NTYyIFRqCi1bMSAwIDAgMSAyNzguMzM1IDMyNC45NTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI4My4zMTYgLTMyNC45NTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI5MS43NzUgMzI0Ljk1MyBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAzMjQuOTUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTMyNC45NTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMzI0Ljk1MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyOCkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMzI0Ljk1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzEyLjk5OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzEyLjk5OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjcuMS4pIDIyLjQxNTkgVGoKLS0zMTAgVEptCi0oR2V0dGluZykgMjkuODg3OCBUagotLTI1MCBUSm0KLShyaWQpIDExLjA2ODQgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDE1NC4yMzEgMzEyLjk5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTQuMjMxIC0zMTIuOTk4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTQuMjMxIDMxMi45OTggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oc3RkaW8pIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDE4NC4xMTkgMzEyLjk5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTg5LjEgLTMxMi45OThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5OC4xNzUgMzEyLjk5OCBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAzMTIuOTk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTMxMi45OThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMzEyLjk5OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyOSkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMzEyLjk5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzAxLjA0M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzAxLjA0MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjcuMi4pIDIyLjQxNTkgVGoKLS0zMTAgVEptCi0oQ3JpdGljYWwpIDI5Ljg4NzggVGoKLS0yNTAgVEptCi0oZXJyb3IpIDE5LjM1NzMgVGoKLS0yNTAgVEptCi0oaGFuZGxpbmcpIDM0Ljg2OTEgVGoKLVsxIDAgMCAxIDE4Ni41OTkgMzAxLjA0M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTkxLjU4IC0zMDEuMDQzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDEuNjI5IDMwMS4wNDMgVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAzMDEuMDQzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTMwMS4wNDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMzAxLjA0MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyOSkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMzAxLjA0M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzk4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjg5LjA4OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjg5LjA4OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLjguKSAxNC45NDM5IFRqCi0tMzEwIFRKbQotKE1ha2luZykgMzAuOTkzNiBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKFcpIDkuNDA0NjkgVGoKLTQwIFRKbQotKGluZG8pIDE3LjcxMzUgVGoKLTI1IFRKbQotKHdzKSAxMS4wNjg0IFRqCi0tMjUwIFRKbQotKERMTCkgMTkuMzY3MyBUagotWzEgMCAwIDEgMTg5LjgyOCAyODkuMDg4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTQuODA5IC0yODkuMDg4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDMuMjQzIDI4OS4wODggVGQKLS9GMTQ3XzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNTA2LjEyNyAyODkuMDg4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNi4xMjcgLTI4OS4wODhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNi4xMjcgMjg5LjA4OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyOSkgOS45NjI2IFRqCi1bMSAwIDAgMSA1MTYuMDkgMjg5LjA4OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMDkgLTIuMTU2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjY3LjAwNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjU3LjIwNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGlzKSAxNy43MTM1IFRqCi0tMjUwIFRKbQotKGNoYXB0ZXIpIDI5LjMxOTkgVGoKLS0yNTAgVEptCi0oZGVzY3JpYmVzKSAzNy4wNzA4IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShwcm9ncmFtbWluZykgNTQuMjM2NCBUagotLTI1MCBUSm0KLShpbnRlcmYpIDIxLjU3OSBUagotMTAgVEptCi0oYWNlKSAxMy4yNzAyIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDI4Mi40NDggMjU3LjIwN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODIuNDQ4IC0yNTcuMjA3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODIuNDQ4IDI1Ny4yMDcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDMzMC4yNjkgMjU3LjIwN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMzAuMjY5IC0yNTcuMjA3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMzAuMjY5IDI1Ny4yMDcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMjU1LjA1XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yNDUuMDg4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyMzUuMjg5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEYpIDUuNTM5MjEgVGoKLTE1IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjczIFRKbQotKGdlbmVyYWwpIDI5LjMxOTkgVGoKLS0yNzIgVEptCi0oYmFja2dyb3VuZCkgNDcuMDMzNCBUagotLTI3MyBUSm0KLShpbmZvcm1hdGlvbiwpIDQ5LjUzNCBUagotLTI3OCBUSm0KLShwYXJ0aWN1bGFybHkpIDQ1LjkyNzYgVGoKLS0yNzMgVEptCi0oYWJvdXQpIDIyLjEzNjkgVGoKLS0yNzMgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMjcyIFRKbQotKHVzZSkgMTMuMjgwMSBUagotLTI3MyBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI3MyBUSm0KLShwZXJmb3JtYW5jZSkgNTAuMzQxIFRqCi0tMjcyIFRKbQotKGFzcGVjdHMsKSAzMS4yNjI2IFRqCi0tMjc5IFRKbQotKHlvdScpIDE4LjI2MTQgVGoKLTUwIFRKbQotKGQpIDQuOTgxMyBUagotLTI3MiBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI3MyBUSm0KLSh3ZWxsKSAxNy4xNTU2IFRqCi0tMjczIFRKbQotKGFkdmlzZWQpIDMwLjQzNTcgVGoKLTcyIDIyMy4zMzQgVGQKLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKHJlYWQpIDE3LjE0NTYgVGoKLVsxIDAgMCAxIDEwMS44NzggMjIzLjMzNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLVsxIDAgMCAxIC0xMDEuODc4IC0yMjMuMzM0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDEuODc4IDIyMy4zMzQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSG8pIDEyLjE3NDMgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKGJ6aXAyKSAyMi4xMzY5IFRqCi1bMSAwIDAgMSAxNzEuNjM2IDIyMy4zMzRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDFdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDFdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDFdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDFdIFNDCi1bMSAwIDAgMSAtMTcxLjYzNiAtMjIzLjMzNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTc0LjEyNiAyMjMuMzM0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFsyXSkgMTEuNjE2NCBUagotWzEgMCAwIDEgMTg1Ljc0MyAyMjMuMzM0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAxXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAxXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE4NS43NDMgLTIyMy4zMzRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE4OC4yMzMgMjIzLjMzNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhcykgOC4yOTg4NSBUagotLTI1MCBUSm0KLSh3ZWxsLikgMTkuNjQ2MiBUagotWzEgMCAwIDEgNzIgMjIxLjE3N10gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjExLjIxNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTg4LjU4MSBUZAotL0YxMjJfMCAyMC42NTg1IFRmCi0oMy4xLikgMzQuNDU4NCBUagotLTI3OCBUSm0KLShUKSAxMi42MjIzIFRqCi04MCBUSm0KLShvcC1sZSkgNDkuMzUzMiBUagotMTUgVEptCi0odmVsKSAyOC43MTUzIFRqCi0tMjc4IFRKbQotKHN0cnVjdHVyZSkgODkuNTMzOSBUagotWzEgMCAwIDEgNzIgMTg0LjMwNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTc0LjM0M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTY2LjY2NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShsaWJiemlwMikgNDcuODIwNSBUagotWzEgMCAwIDEgMTE5LjgyMSAxNjYuNjY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS44MjEgLTE2Ni42NjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEyMy42MDggMTY2LjY2NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpcykgNi42NDUwNSBUagotLTM4MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMzgwIFRKbQotKFwwMDNlKSA5Ljk2MjYgVGoKLTE1IFRKbQotKHhpYmxlKSAxOS45MjUyIFRqCi0tMzgxIFRKbQotKGxpYnJhcnkpIDI2LjU2MDMgVGoKLS0zODAgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMzgwIFRKbQotKGNvbXByZXNzaW5nKSA1MC4zNjA5IFRqCi0tMzgwIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzgwIFRKbQotKGRlY29tcHJlc3NpbmcpIDU5Ljc2NTYgVGoKLS0zODAgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTM4MSBUSm0KLShpbikgNy43NTA5IFRqCi0tMzgwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotWzEgMCAwIDEgNDA1LjI5MSAxNjYuNjY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQwNS4yOTEgLTE2Ni42NjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQwNS4yOTEgMTY2LjY2NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgNDM1LjE3OCAxNjYuNjY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQzNS4xNzggLTE2Ni42NjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQzOC45NjYgMTY2LjY2NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShkYXRhKSAxNi41OTc3IFRqCi0tMzgwIFRKbQotKGZvcm1hdC4pIDI5LjA1MDkgVGoKLS0xNDAxIFRKbQotKEFsdGhvdWdoKSAzNy42Mzg3IFRqCi03MiAxNTQuNzA4IFRkCi0ocGFja2FnZWQpIDM3LjYxODggVGoKLS0yODUgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yODQgVEptCi0oYSkgNC40MjMzOSBUagotLTI4NSBUSm0KLShzaW5nbGUpIDIzLjgwMDcgVGoKLS0yODUgVEptCi0oZW50aXR5KSAyMi42OTQ4IFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjkzIFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMjg1IFRKbQotKGhlbHBzKSAyMS4wMzEgVGoKLS0yODUgVEptCi0odG8pIDcuNzUwOSBUagotLTI4NCBUSm0KLShyZSkgNy43NDA5NCBUagotMTUgVEptCi0oZykgNC45ODEzIFRqCi01IFRKbQotKGFyZCkgMTIuNzIyMiBUagotLTI4NSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yODUgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTI4NCBUSm0KLShhcykgOC4yOTg4NSBUagotLTI4NSBUSm0KLSh0aHJlZSkgMTkuOTE1MiBUagotLTI4NSBUSm0KLShzZXBhcmF0ZSkgMzIuNjM3NSBUagotLTI4NCBUSm0KLShwYXJ0czopIDIyLjEzNjkgVGoKLS0zODAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjg1IFRKbQotKGxvKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjg0IFRKbQotKGxlKSA3LjE5MyBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbCkgNy4xOTMgVGoKLS0yODUgVEptCi0oaW50ZXJmKSAyMS41NzkgVGoKLTEwIFRKbQotKGFjZSwpIDE1Ljc2MDggVGoKLS0yOTMgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yODUgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjg1IFRKbQotKGhpZ2gpIDE3LjcxMzUgVGoKLTcyIDE0Mi43NTMgVGQKLShsZSkgNy4xOTMgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWwpIDcuMTkzIFRqCi0tMjUwIFRKbQotKGludGVyZikgMjEuNTc5IFRqCi0xMCBUSm0KLShhY2UsKSAxNS43NjA4IFRqCi0tMjUwIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKHNvbWUpIDIxLjAzMSBUagotLTI1MCBUSm0KLSh1dGlsaXR5KSAyMy44MTA2IFRqCi0tMjUwIFRKbQotKGZ1bmN0aW9ucy4pIDM5LjU3MTQgVGoKLVsxIDAgMCAxIDcyIDE0MC41OTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTEzMC42MzRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDEyMC44MzUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oVGhlKSAxNS40OTE4IFRqCi0tMzQ5IFRKbQotKHN0cnVjdHVyZSkgMzQuODU5MSBUagotLTM0OSBUSm0KLShvZikgOC4yOTg4NSBUagotWzEgMCAwIDEgMTQxLjA4MiAxMjAuODM1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE0MS4wODIgLTEyMC44MzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE0MS4wODIgMTIwLjgzNSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShsaWJiemlwMikgNDcuODIwNSBUagotWzEgMCAwIDEgMTg4LjkwMyAxMjAuODM1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE4OC45MDMgLTEyMC44MzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE4OC45MDMgMTIwLjgzNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgnKSAzLjMxNzU1IFRqCi01NSBUSm0KLShzKSAzLjg3NTQ1IFRqCi0tMzQ5IFRKbQotKGludGVyZikgMjEuNTc5IFRqCi0xMCBUSm0KLShhY2VzKSAxNy4xNDU2IFRqCi0tMzQ5IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzQ5IFRKbQotKHNpbWlsYXIpIDI3LjY3NjEgVGoKLS0zNDkgVEptCi0odG8pIDcuNzUwOSBUagotLTM0OSBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMzQ5IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzQ5IFRKbQotKEplYW4tbG91cCkgMzguNzM0NiBUagotLTM0OSBUSm0KLShHYWlsbHknKSAyOC4yMjQgVGoKLTU1IFRKbQotKHMpIDMuODc1NDUgVGoKLS0zNDkgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0zNDkgVEptCi0oTWFyaykgMjEuNTc5IFRqCi0tMzQ5IFRKbQotKEFkbGVyJykgMjYuMDAyNCBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTM0OSBUSm0KLShlKSA0LjQyMzM5IFRqCi0xNSBUSm0KLSh4Y2VsbGVudCkgMzEuNTQxNiBUagotWzEgMCAwIDEgNTE2LjA5IDEyMC44MzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTE2LjA5IC0xMjAuODM1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTYuMDkgMTIwLjgzNSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh6bGliKSAyMy45MTAyIFRqCi1bMSAwIDAgMSA1NDAgMTIwLjgzNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01NDAgLTEyMC44MzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDEwOC44OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShsaWJyYXJ5KSAyNi41NjAzIFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAxMDYuNzIzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC05Ni43NjA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA4Ni45NjI0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEFsbCkgMTIuNzMyMiBUagotLTI0MiBUSm0KLShlKSA0LjQyMzM5IFRqCi0xNSBUSm0KLSh4dGVybmFsbHkpIDM1LjQxNyBUagotLTI0MiBUSm0KLSh2aXNpYmxlKSAyNi41NzAzIFRqCi0tMjQxIFRKbQotKHN5bWJvbHMpIDMzLjIxNTMgVGoKLS0yNDIgVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI0MiBUSm0KLShuYW1lcykgMjUuNDU0NCBUagotLTI0MiBUSm0KLShiZSkgOS40MDQ2OSBUagotMTUgVEptCi0oZ2lubmluZykgMzAuNDQ1NyBUagotWzEgMCAwIDEgMjg0LjY4NyA4Ni45NjI0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI4NC42ODcgLTg2Ljk2MjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI4NC42ODcgODYuOTYyNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfKSAyMy45MTAyIFRqCi1bMSAwIDAgMSAzMDguNTk3IDg2Ljk2MjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzA4LjU5NyAtODYuOTYyNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzA4LjU5NyA4Ni45NjI0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC4pIDIuNDkwNjUgVGoKLS02MTUgVEptCi0oVGhpcykgMTcuNzEzNSBUagotLTI0MSBUSm0KLShpcykgNi42NDUwNSBUagotLTI0MiBUSm0KLShuZSkgOS40MDQ2OSBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yNDIgVEptCi0oaW4pIDcuNzUwOSBUagotLTI0MiBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyc2lvbikgMjQuMzQ4NiBUagotLTI0MiBUSm0KLSgxLjAuKSAxNC45NDM5IFRqCi0tNjE0IFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTI0MiBUSm0KLShpbnRlbnRpb24pIDM1LjQyNyBUagotLTI0MiBUSm0KLShpcykgNi42NDUwNSBUagotLTI0MSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjQyIFRKbQotKG1pbmltaXNlKSAzNy4wOTA4IFRqCi03MiA3NS4wMDczIFRkCi0ocG9sbHV0aW9uKSAzNS45ODQ5IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShuYW1lc3BhY2VzKSA0Ny41ODE0IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGxpYnJhcnkpIDI2LjU2MDMgVGoKLS0yNTAgVEptCi0oY2xpZW50cy4pIDI4LjUwMyBUagotWzEgMCAwIDEgNzIgNzIuODUwNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTIxLjk5ODddIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQuMzgzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMzc0LjM5NCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDYuODU0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQzLjA2MzMgLTYuNzU0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTguMjI1IC01MC45NTE0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01NDEuMjg4IDUwLjk1MTQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOCkgNC45ODEzIFRqCi1bMSAwIDAgMSA0NTUuMTYxIDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xNS4wMzY2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAxMiAxMgotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNC4zODM2IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgLTguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNzYuNDk3OSAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0NC40NjIgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQyMC45NiA3NDkuMjQ1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFByb2dyYW1taW5nKSA1NC43OTQzIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ5OC40NDkgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTguNDQ5IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTguNDQ5IDc0OS4yNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDU0Ni4yNjkgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguMzA1IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTUuMDM2NSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMjEuNTU0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNzIwXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA3MTAuMDM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFQpIDYuMDg3MTUgVGoKLTgwIFRKbQotKG8pIDQuOTgxMyBUagotLTI1MCBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI1MCBUSm0KLShwYXJ0KSAxNS40OTE4IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjUwIFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI1MCBUSm0KLShuZWVkKSAxOC44MDk0IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDI0MC41NjcgNzEwLjAzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNDAuNTY3IC03MTAuMDM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNDAuNTY3IDcxMC4wMzcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oI2luY2x1ZGUpIDQ3LjgyMDUgVGoKLS02MDAgVEptCi0oPGJ6bGliLmg+KSA1My43OTggVGoKLVsxIDAgMCAxIDM0OC4xNjMgNzEwLjAzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNDguMTYzIC03MTAuMDM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNTAuNjU0IDcxMC4wMzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaW50bykgMTUuNTAxOCBUagotLTI1MCBUSm0KLSh5b3VyKSAxOC4yNjE0IFRqCi0tMjUwIFRKbQotKHNvdXJjZXMuKSAzMi4zNjg1IFRqCi1bMSAwIDAgMSA3MiA3MDcuODhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY5Ny45MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDY3OS40MTYgVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKDMuMS4xLikgNDMuMDcyOSBUagotLTI3OCBUSm0KLShMbykgMjEuMDM3MiBUagotMTUgVEptCi0ody1sZSkgMzMuNDg0IFRqCi0xNSBUSm0KLSh2ZWwpIDIzLjkyOTQgVGoKLS0yNzggVEptCi0oc3VtbWFyKSA2Ni45Njc5IFRqCi0tMTAgVEptCi0oeSkgOS41NzE3NiBUagotWzEgMCAwIDEgNzIgNjc1Ljg1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjY1Ljg5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2NTcuNDk4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoaXMpIDE3LjcxMzUgVGoKLS0yMTIgVEptCi0oaW50ZXJmKSAyMS41NzkgVGoKLTEwIFRKbQotKGFjZSkgMTMuMjcwMiBUagotLTIxMiBUSm0KLShwcm8pIDEzLjI4MDEgVGoKLTE1IFRKbQotKHZpZGVzKSAyMS4wMzEgVGoKLS0yMTIgVEptCi0oc2VydmljZXMpIDMyLjA4OTUgVGoKLS0yMTIgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMjEyIFRKbQotKGNvbXByZXNzaW5nKSA1MC4zNjA5IFRqCi0tMjEyIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjEyIFRKbQotKGRlY29tcHJlc3MpIDQ3LjAzMzQgVGoKLTEgVEptCi0oaW5nKSAxMi43MzIyIFRqCi0tMjEyIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yMTIgVEptCi0oaW4pIDcuNzUwOSBUagotLTIxMiBUSm0KLShtZW1vcnkpIDMzLjIwNTMgVGoKLTY1IFRKbQotKC4pIDIuNDkwNjUgVGoKLS01OTUgVEptCi0oVGhlcmUnKSAyNi41NTAzIFRqCi01NSBUSm0KLShzKSAzLjg3NTQ1IFRqCi0tMjEyIFRKbQotKG5vKSA5Ljk2MjYgVGoKLS0yMTIgVEptCi0ocHJvKSAxMy4yODAxIFRqCi0xNSBUSm0KLSh2aXNpb24pIDI0LjM1ODYgVGoKLS0yMTIgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMjEyIFRKbQotKGRlYWxpbmcpIDI5LjMyOTkgVGoKLTcyIDY0NS41NDMgVGQKLSh3aXRoKSAxNy43MTM1IFRqCi0tMjEzIFRKbQotKFwwMDJsZXMsKSAxOS4wOTgzIFRqCi0tMjIwIFRKbQotKHN0cmVhbXMpIDMwLjQzNTcgVGoKLS0yMTMgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yMTMgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTIxMyBUSm0KLShvdGhlcikgMjAuNDczMSBUagotLTIxMyBUSm0KLShJL08pIDEzLjI4MDEgVGoKLS0yMTMgVEptCi0obWVjaGFuaXNtcywpIDUxLjc0NTcgVGoKLS0yMjEgVEptCi0oanVzdCkgMTQuMzk2IFRqCi0tMjEzIFRKbQotKHN0cmFpZ2h0KSAyOS44ODc4IFRqCi0tMjEzIFRKbQotKG1lbW9yeS10by1tZW1vcnkpIDgwLjc5NjcgVGoKLS0yMTMgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG9yay4pIDE1Ljc3MDggVGoKLS01OTUgVEptCi0oSW4pIDguMjk4ODUgVGoKLS0yMTMgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYWN0LCkgMTQuMTA3IFRqCi0tMjIxIFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTIxMyBUSm0KLShwYXJ0KSAxNS40OTE4IFRqCi0tMjEzIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjEzIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIxMyBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi03MiA2MzMuNTg4IFRkCi0oY2FuKSAxMy44MjgxIFRqCi0tMjUwIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKGNvbXBpbGVkKSAzNy4wODA4IFRqCi0tMjUwIFRKbQotKHdpdGhvdXQpIDMwLjQ0NTcgVGoKLS0yNTAgVEptCi0oaW5jbHVzaW9uKSAzNi41MzI5IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi1bMSAwIDAgMSAyMjIuNTM0IDYzMy41ODhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjIyLjUzNCAtNjMzLjU4OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjIyLjUzNCA2MzMuNTg4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHN0ZGlvLmgpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDI2NC4zNzcgNjMzLjU4OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNjQuMzc3IC02MzMuNTg4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNjQuMzc3IDYzMy41ODggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTI1MCBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTI1MCBUSm0KLShtYXkpIDE3LjE1NTYgVGoKLS0yNTAgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oaGVscGZ1bCkgMjguMjI0IFRqCi0tMjUwIFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI1MCBUSm0KLShlbWJlZGRlZCkgNDAuOTQ2MyBUagotLTI1MCBUSm0KLShhcHBsaWNhdGlvbnMuKSA1MC42Mzk5IFRqCi1bMSAwIDAgMSA3MiA2MzEuNDMxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02MjEuNDY5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2MTEuNjcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oVGhlKSAxNS40OTE4IFRqCi0tMjUwIFRKbQotKGxvKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHctbGUpIDE3LjcwMzUgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWwpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHBhcnQpIDE1LjQ5MTggVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGxpYnJhcnkpIDI2LjU2MDMgVGoKLS0yNTAgVEptCi0oaGFzKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKG5vKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oZ2xvYmFsKSAyNC45MDY1IFRqCi0tMjUwIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYXJpYWJsZXMpIDMwLjk4MzcgVGoKLS0yNTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNTAgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0odGhlcmVmb3JlKSAzNS45NTUgVGoKLS0yNTAgVEptCi0odGhyZWFkLXNhZmUuKSA0Ni43NDQ1IFRqCi1bMSAwIDAgMSA3MiA2MDkuNTEzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01OTkuNTUxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1ODkuNzUyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFNpeCkgMTMuMjkwMSBUagotLTg3NSBUSm0KLShyb3V0aW5lcykgMzIuMDk5NSBUagotLTg3NiBUSm0KLShtYWspIDE3LjE1NTYgVGoKLTEwIFRKbQotKGUpIDQuNDIzMzkgVGoKLS04NzUgVEptCi0odXApIDkuOTYyNiBUagotLTg3NiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS04NzUgVEptCi0obG8pIDcuNzUwOSBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS04NzYgVEptCi0obGUpIDcuMTkzIFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVsKSA3LjE5MyBUagotLTg3NSBUSm0KLShpbnRlcmYpIDIxLjU3OSBUagotMTAgVEptCi0oYWNlOikgMTYuMDM5OCBUagotWzEgMCAwIDEgMzA4Ljc5MSA1ODkuNzUyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMwOC43OTEgLTU4OS43NTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMwOC43OTEgNTg5Ljc1MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzc0luaXQpIDEwNy41OTYgVGoKLVsxIDAgMCAxIDQxNi4zODcgNTg5Ljc1Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MTYuMzg3IC01ODkuNzUyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MTYuMzg3IDU4OS43NTIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgNDI5LjE1OCA1ODkuNzUyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQyOS4xNTggLTU4OS43NTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQyOS4xNTggNTg5Ljc1MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgNTEyLjg0NCA1ODkuNzUyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUxMi44NDQgLTU4OS43NTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUxMi44NDQgNTg5Ljc1MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMTAzMiBUSm0KLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNzIgNTc3Ljc5N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTc3Ljc5N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTc3Ljc5NyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzc0VuZCkgMTAxLjYxOSBUagotWzEgMCAwIDEgMTczLjYxOSA1NzcuNzk3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3My42MTkgLTU3Ny43OTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE4Ni4xNSA1NzcuNzk3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGZvcikgMTEuNjE2NCBUagotLTEyNTggVEptCi0oY29tcHJlc3Npb24sKSA1Mi44NTE2IFRqCi0tMTUxMCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTEyNTcgVEptCi0oYSkgNC40MjMzOSBUagotLTEyNTggVEptCi0oY29ycmVzcG9uZGluZykgNTYuOTk2IFRqCi0tMTI1OCBUSm0KLSh0cmlvKSAxMy44MzgxIFRqCi1bMSAwIDAgMSA0MTcuOTU4IDU3Ny43OTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDE3Ljk1OCAtNTc3Ljc5N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE3Ljk1OCA1NzcuNzk3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekRlY29tcHJlc3NJbml0KSAxMTkuNTUxIFRqCi1bMSAwIDAgMSA1MzcuNTA5IDU3Ny43OTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTM3LjUwOSAtNTc3Ljc5N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM3LjUwOSA1NzcuNzk3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDU2NS44NDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU2NS44NDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU2NS44NDIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzcykgOTUuNjQxIFRqCi1bMSAwIDAgMSAxNjcuNjQxIDU2NS44NDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY3LjY0MSAtNTY1Ljg0Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTcyLjcwNyA1NjUuODQyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAxOTIuMTU4IDU2NS44NDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTkyLjE1OCAtNTY1Ljg0Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTkyLjE1OCA1NjUuODQyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekRlY29tcHJlc3NFbmQpIDExMy41NzQgVGoKLVsxIDAgMCAxIDMwNS43MzIgNTY1Ljg0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDUuNzMyIC01NjUuODQyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMTAuNzk4IDU2NS44NDIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oZm9yKSAxMS42MTY0IFRqCi0tNTA4IFRKbQotKGRlY29tcHJlc3Npb24uKSA2Mi4yNTYzIFRqCi0tMjE3MSBUSm0KLShUaGUpIDE1LjQ5MTggVGoKLVsxIDAgMCAxIDQzMS45MTggNTY1Ljg0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MzEuOTE4IC01NjUuODQyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MzEuOTE4IDU2NC4wOTkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oKikgNS45Nzc1NiBUagotNDM3Ljg5NSA1NjUuODQyIFRkCi0oSW5pdCkgMjMuOTEwMiBUagotWzEgMCAwIDEgNDYxLjgwNSA1NjUuODQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2MS44MDUgLTU2NS44NDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ2Ni44NzEgNTY1Ljg0MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShmdW5jdGlvbnMpIDM3LjA4MDggVGoKLS01MDggVEptCi0oYWxsb2NhdGUpIDMwLjk4MzcgVGoKLTcyIDU1My44ODcgVGQKLShtZW1vcnkpIDMzLjIwNTMgVGoKLS01NzQgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tNTczIFRKbQotKGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24pIDExMi44OTYgVGoKLS01NzQgVEptCi0oYW5kKSAxNC4zODYgVGoKLS01NzQgVEptCi0oZG8pIDkuOTYyNiBUagotLTU3MyBUSm0KLShvdGhlcikgMjAuNDczMSBUagotLTU3NCBUSm0KLShpbml0aWFsaXNhdGlvbnMsKSA1Ni4xODkxIFRqCi0tNjU0IFRKbQotKHdoaWxzdCkgMjQuMzU4NiBUagotLTU3NCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLVsxIDAgMCAxIDQxOS41MDIgNTUzLjg4N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MTkuNTAyIC01NTMuODg3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MTkuNTAyIDU1Mi4xNDQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oKikgNS45Nzc1NiBUagotNDI1LjQ4IDU1My44ODcgVGQKLShFbmQpIDE3LjkzMjcgVGoKLVsxIDAgMCAxIDQ0My40MTMgNTUzLjg4N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDMuNDEzIC01NTMuODg3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDkuMTI4IDU1My44ODcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oZnVuY3Rpb25zKSAzNy4wODA4IFRqCi0tNTc0IFRKbQotKGNsb3NlKSAyMC40NzMxIFRqCi0tNTczIFRKbQotKGRvKSA5Ljk2MjYgVGoKLTI1IFRKbQotKHduKSAxMi4xNzQzIFRqCi03MiA1NDEuOTMyIFRkCi0ob3BlcmF0aW9ucykgNDEuNTA0MiBUagotLTI1MCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI1MCBUSm0KLShyZWxlYXNlKSAyNy42NTYyIFRqCi0tMjUwIFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgNTM5Ljc3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTI5LjgxMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTIwLjAxNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGUpIDE1LjQ5MTggVGoKLS0zMDMgVEptCi0ocmVhbCkgMTQuOTMzOSBUagotLTMwMyBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0ob3JrKSAxMy4yODAxIFRqCi0tMzAzIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzAzIFRKbQotKGRvbmUpIDE5LjM2NzMgVGoKLS0zMDMgVEptCi0oYnkpIDkuOTYyNiBUagotWzEgMCAwIDEgMTc2Ljg5MiA1MjAuMDE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3Ni44OTIgLTUyMC4wMTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3Ni44OTIgNTIwLjAxNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMjYwLjU3OCA1MjAuMDE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2MC41NzggLTUyMC4wMTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI2My41OTggNTIwLjAxNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMjgxLjAwMyA1MjAuMDE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI4MS4wMDMgLTUyMC4wMTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI4MS4wMDMgNTIwLjAxNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpEZWNvbXByZXNzKSA5NS42NDEgVGoKLVsxIDAgMCAxIDM3Ni42NDUgNTIwLjAxNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNzYuNjQ1IC01MjAuMDE0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNzYuNjQ1IDUyMC4wMTQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotLTkzOSBUSm0KLShUaGVzZSkgMjMuNzkwNyBUagotLTMwMyBUSm0KLShjb21wcmVzcykgMzcuNjI4NyBUagotLTMwMyBUSm0KLShhbmQpIDE0LjM4NiBUagotLTMwMyBUSm0KLShkZWNvbXByZXNzKSA0Ny4wMzM0IFRqCi0tMzAzIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLTcyIDUwOC4wNTkgVGQKLShmcm9tKSAxOS4zNjczIFRqCi0tMjA1IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yMDUgVEptCi0odXNlcikgMTYuNTk3NyBUagotMjAgVEptCi0oLXN1cHBsaWVkKSAzNy4wODA4IFRqCi0tMjA1IFRKbQotKGlucHV0KSAyMC40ODMxIFRqCi0tMjA2IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWYpIDguMjk4ODUgVGoKLTI1IFRKbQotKGZlcikgMTEuMDU4NSBUagotLTIwNSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjA1IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yMDUgVEptCi0odXNlcikgMTYuNTk3NyBUagotMjAgVEptCi0oLXN1cHBsaWVkKSAzNy4wODA4IFRqCi0tMjA1IFRKbQotKG91dHB1dCkgMjUuNDY0NCBUagotLTIwNSBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVmKSA4LjI5ODg1IFRqCi0yNSBUSm0KLShmZXIpIDExLjA1ODUgVGoKLTU1IFRKbQotKC4pIDIuNDkwNjUgVGoKLS01OTEgVEptCi0oVGhlc2UpIDIzLjc5MDcgVGoKLS0yMDUgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVycykgMTQuOTMzOSBUagotLTIwNSBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0yMDUgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yMDUgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTIwNSBUSm0KLShzaXplOykgMTguMjYxNCBUagotLTIyMCBUSm0KLShhcmJpdHJhcnkpIDM0LjMwMTIgVGoKLS0yMDYgVEptCi0ocXVhbnRpdGllcykgMzguNzQ0NiBUagotLTIwNSBUSm0KLShvZikgOC4yOTg4NSBUagotNzIgNDk2LjEwNCBUZAotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNTggVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMjU4IFRKbQotKGhhbmRsZWQpIDMxLjU0MTYgVGoKLS0yNTggVEptCi0oYnkpIDkuOTYyNiBUagotLTI1NyBUSm0KLShtYWtpbmcpIDI5Ljg4NzggVGoKLS0yNTggVEptCi0ocmVwZWF0ZWQpIDMzLjc0MzMgVGoKLS0yNTggVEptCi0oY2FsbHMpIDE4LjI2MTQgVGoKLS0yNTggVEptCi0odG8pIDcuNzUwOSBUagotLTI1OCBUSm0KLSh0aGVzZSkgMjAuNDczMSBUagotLTI1OCBUSm0KLShmdW5jdGlvbnMuKSAzOS41NzE0IFRqCi0tNjY3IFRKbQotKFRoaXMpIDE3LjcxMzUgVGoKLS0yNTggVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTggVEptCi0oYSkgNC40MjMzOSBUagotLTI1NyBUSm0KLShcMDAzZSkgOS45NjI2IFRqCi0xNSBUSm0KLSh4aWJsZSkgMTkuOTI1MiBUagotLTI1OCBUSm0KLShtZWNoYW5pc20pIDQ1LjM3OTYgVGoKLS0yNTggVEptCi0oYWxsbykgMTQuOTQzOSBUagotMjUgVEptCi0od2luZykgMTkuOTI1MiBUagotLTI1OCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjU4IFRKbQotKGNvbnN1bWVyKSAzOC43MzQ2IFRqCi0yMCBUSm0KLSgtcHVsbCkgMTguODE5NCBUagotNzIgNDg0LjE0OCBUZAotKHN0eWxlKSAxOC44MTk0IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGFjdGkpIDE0LjM4NiBUagotMjUgVEptCi0odml0eSkgMTUuNTAxOCBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTI1MCBUSm0KLShvcikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShwcm9kdWNlcikgMzUuNDA3MSBUagotMjAgVEptCi0oLXB1c2gsKSAyNC42Mjc1IFRqCi0tMjUwIFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0obWl4dHVyZSkgMzAuOTkzNiBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShib3RoLikgMjAuMjA0MiBUagotWzEgMCAwIDEgNzIgNDgxLjk5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDcyLjAyOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDUzLjUyNyBUZAotL0YxMjJfMCAxNy4yMTU0IFRmCi0oMy4xLjIuKSA0My4wNzI5IFRqCi0tMjc4IFRKbQotKEhpZ2gtbGUpIDU4LjM0MyBUagotMTUgVEptCi0odmVsKSAyMy45Mjk0IFRqCi0tMjc4IFRKbQotKHN1bW1hcikgNjYuOTY3OSBUagotLTEwIFRKbQotKHkpIDkuNTcxNzYgVGoKLVsxIDAgMCAxIDcyIDQ0OS42OTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQzOS43MzRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQzMS42MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGlzKSAxNy43MTM1IFRqCi0tMjg0IFRKbQotKGludGVyZikgMjEuNTc5IFRqCi0xMCBUSm0KLShhY2UpIDEzLjI3MDIgVGoKLS0yODQgVEptCi0ocHJvKSAxMy4yODAxIFRqCi0xNSBUSm0KLSh2aWRlcykgMjEuMDMxIFRqCi0tMjg1IFRKbQotKHNvbWUpIDIxLjAzMSBUagotLTI4NCBUSm0KLShoYW5keSkgMjQuMzQ4NiBUagotLTI4NCBUSm0KLSh3cmFwcGVycykgMzYuNTEyOSBUagotLTI4NCBUSm0KLShhcm91bmQpIDI3LjY2NjEgVGoKLS0yODQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjg0IFRKbQotKGxvKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHctbGUpIDE3LjcwMzUgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWwpIDcuMTkzIFRqCi0tMjg1IFRKbQotKGludGVyZikgMjEuNTc5IFRqCi0xMCBUSm0KLShhY2UpIDEzLjI3MDIgVGoKLS0yODQgVEptCi0odG8pIDcuNzUwOSBUagotLTI4NCBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhY2lsaXRhdGUpIDMxLjU0MTYgVGoKLS0yODQgVEptCi0ocmVhZGluZykgMjkuODc3OCBUagotLTI4NCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI4NSBUSm0KLSh3cml0KSAxNi4wNDk3IFRqCi0xIFRKbQotKGluZykgMTIuNzMyMiBUagotWzEgMCAwIDEgNTEwLjExMiA0MzEuNjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTEwLjExMiAtNDMxLjYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTAuMTEyIDQzMS42MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgNTQwIDQzMS42MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01NDAgLTQzMS42MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDE5LjY1NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShmb3JtYXQpIDI2LjU2MDMgVGoKLS0zNDcgVEptCi0oXDAwMmxlcykgMTYuNjA3NyBUagotLTM0NiBUSm0KLShcKCkgMy4zMTc1NSBUagotWzEgMCAwIDEgMTI1LjM5MSA0MTkuNjU0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEyNS4zOTEgLTQxOS42NTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEyNS4zOTEgNDE5LjY1NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSguYnoyKSAyMy45MTAyIFRqCi1bMSAwIDAgMSAxNDkuMzAxIDQxOS42NTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQ5LjMwMSAtNDE5LjY1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTUyLjc1NCA0MTkuNjU0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwwMDJsZXNcKS4pIDIyLjQxNTkgVGoKLS0xMjAwIFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTM0NiBUSm0KLShyb3V0aW5lcykgMzIuMDk5NSBUagotLTM0NyBUSm0KLShwcm8pIDEzLjI4MDEgVGoKLTE1IFRKbQotKHZpZGUpIDE3LjE1NTYgVGoKLS0zNDYgVEptCi0oaG9va3MpIDIzLjgwMDcgVGoKLS0zNDcgVEptCi0odG8pIDcuNzUwOSBUagotLTM0NiBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhY2lsaXRhdGUpIDMxLjU0MTYgVGoKLS0zNDcgVEptCi0ocmVhZGluZykgMjkuODc3OCBUagotLTM0NyBUSm0KLShcMDAybGVzKSAxNi42MDc3IFRqCi0tMzQ2IFRKbQotKGluKSA3Ljc1MDkgVGoKLS0zNDcgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0zNDYgVEptCi0odGhlKSAxMi4xNzQzIFRqCi1bMSAwIDAgMSA0NjAuMDQ5IDQxOS42NTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDYwLjA0OSAtNDE5LjY1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDYwLjA0OSA0MTkuNjU0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSA0ODkuOTM3IDQxOS42NTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDg5LjkzNyAtNDE5LjY1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDkzLjM5IDQxOS42NTQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oZGF0YSkgMTYuNTk3NyBUagotLTM0NyBUSm0KLShzdHJlYW0pIDI2LjU2MDMgVGoKLTcyIDQwNy42OTkgVGQKLShpcykgNi42NDUwNSBUagotLTMzOSBUSm0KLShlbWJlZGRlZCkgNDAuOTQ2MyBUagotLTMzOSBUSm0KLSh3aXRoaW4pIDI1LjQ2NDQgVGoKLS0zMzkgVEptCi0oc29tZSkgMjEuMDMxIFRqCi0tMzM5IFRKbQotKGxhcikgMTAuNTEwNSBUagotMTggVEptCi0oZ2VyKSAxMi43MjIyIFRqCi0yMCBUSm0KLSgtc2NhbGUpIDIzLjIzMjggVGoKLS0zMzkgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMzM5IFRKbQotKHN0cnVjdHVyZSwpIDM3LjM0OTggVGoKLS0zNjEgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0zMzkgVEptCi0od2gpIDEyLjE3NDMgVGoKLS0xIFRKbQotKGUpIDQuNDIzMzkgVGoKLTEgVEptCi0ocmUpIDcuNzQwOTQgVGoKLS0zNDAgVEptCi0odGhlcmUpIDE5LjkxNTIgVGoKLS0zMzkgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMzM5IFRKbQotKG11bHRpcGxlKSAzMy4yMTUzIFRqCi1bMSAwIDAgMSA0MDAuOTQxIDQwNy42OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDAwLjk0MSAtNDA3LjY5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDAwLjk0MSA0MDcuNjk5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSA0MzAuODI5IDQwNy42OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDMwLjgyOSAtNDA3LjY5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDM0LjIwNyA0MDcuNjk5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGRhdGEpIDE2LjU5NzcgVGoKLS0zMzkgVEptCi0oc3RyZWFtcykgMzAuNDM1NyBUagotLTMzOSBUSm0KLShjb25jYXRlbmF0ZWQpIDUyLjAwNDggVGoKLTcyIDM5NS43NDQgVGQKLShlbmQtdG8tZW5kLikgNDUuNjQ4NiBUagotWzEgMCAwIDEgNzIgMzk1LjY0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzg1LjY4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzczLjgyNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShGKSA1LjUzOTIxIFRqCi0xNSBUSm0KLShvcikgOC4yOTg4NSBUagotLTMzMiBUSm0KLShyZWFkaW5nKSAyOS44Nzc4IFRqCi0tMzMzIFRKbQotKFwwMDJsZXMsKSAxOS4wOTgzIFRqCi1bMSAwIDAgMSAxNDQuODAzIDM3My44MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQ0LjgwMyAtMzczLjgyNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQ0LjgwMyAzNzMuODI2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRPcGVuKSA4My42ODU4IFRqCi1bMSAwIDAgMSAyMjguNDg5IDM3My44MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjI4LjQ4OSAtMzczLjgyNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjI4LjQ4OSAzNzMuODI2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDIzNC40OTYgMzczLjgyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzQuNDk2IC0zNzMuODI2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzQuNDk2IDM3My44MjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6UmVhZCkgNTkuNzc1NiBUagotWzEgMCAwIDEgMjk0LjI3MiAzNzMuODI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5NC4yNzIgLTM3My44MjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI5NC4yNzIgMzczLjgyNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAzMDAuMjc5IDM3My44MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzAwLjI3OSAtMzczLjgyNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzAwLjI3OSAzNzMuODI2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRDbG9zZSkgODkuNjYzNCBUagotWzEgMCAwIDEgMzg5Ljk0MiAzNzMuODI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM4OS45NDIgLTM3My44MjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM5My4yNTMgMzczLjgyNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNDEwLjk1MSAzNzMuODI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQxMC45NTEgLTM3My44MjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxMC45NTEgMzczLjgyNiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkR2V0VW51c2VkKSAxMTMuNTc0IFRqCi1bMSAwIDAgMSA1MjQuNTI1IDM3My44MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTI0LjUyNSAtMzczLjgyNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTI3LjgzNiAzNzMuODI2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFyZSkgMTIuMTY0MyBUagotNzIgMzYxLjg3MSBUZAotKHN1cHBsaWVkLikgMzYuMjUzOSBUagotLTYyMCBUSm0KLShGKSA1LjUzOTIxIFRqCi0xNSBUSm0KLShvcikgOC4yOTg4NSBUagotLTI1MCBUSm0KLSh3cml0aW5nKSAyOC43ODIgVGoKLS0yNTAgVEptCi0oXDAwMmxlcywpIDE5LjA5ODMgVGoKLVsxIDAgMCAxIDE4My40NzEgMzYxLjg3MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODMuNDcxIC0zNjEuODcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODMuNDcxIDM2MS44NzEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6V3JpdGVPcGVuKSA4OS42NjM0IFRqCi1bMSAwIDAgMSAyNzMuMTM1IDM2MS44NzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjczLjEzNSAtMzYxLjg3MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjczLjEzNSAzNjEuODcxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDI3OC4xMTYgMzYxLjg3MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguMTE2IC0zNjEuODcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNzguMTE2IDM2MS44NzEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6V3JpdGUpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDM0My44NjkgMzYxLjg3MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNDMuODY5IC0zNjEuODcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNDYuMzYgMzYxLjg3MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMzYzLjIzNyAzNjEuODcxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM2My4yMzcgLTM2MS44NzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM2My4yMzcgMzYxLjg3MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpXcml0ZUZpbmlzaCkgMTAxLjYxOSBUagotWzEgMCAwIDEgNDY0Ljg1NiAzNjEuODcxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2NC44NTYgLTM2MS44NzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ2Ny4zNDYgMzYxLjg3MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhcmUpIDEyLjE2NDMgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhaWxhYmxlLikgMjkuMDUwOSBUagotWzEgMCAwIDEgNzIgMzU5LjcxNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzQ5Ljc1MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzM5Ljk1MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBcykgMTEuMDY4NCBUagotLTM3NCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMzc0IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM3NSBUSm0KLShsbykgNy43NTA5IFRqCi0yNSBUSm0KLSh3LWxlKSAxNy43MDM1IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVsKSA3LjE5MyBUagotLTM3NCBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tNDA1IFRKbQotKG5vKSA5Ljk2MjYgVGoKLS0zNzQgVEptCi0oZ2xvYmFsKSAyNC45MDY1IFRqCi0tMzc0IFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYXJpYWJsZXMpIDMwLjk4MzcgVGoKLS0zNzUgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMzc0IFRKbQotKHVzZWQpIDE4LjI2MTQgVGoKLS0zNzQgVEptCi0oc28pIDguODU2NzUgVGoKLS0zNzQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzc0IFRKbQotKGxpYnJhcnkpIDI2LjU2MDMgVGoKLS0zNzUgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0zNzQgVEptCi0ocGVyKSAxMi43MjIyIFRqCi0tMzc0IFRKbQotKHNlKSA4LjI5ODg1IFRqCi0tMzc0IFRKbQotKHRocmVhZC1zYWZlLikgNDYuNzQ0NSBUagotLTEzNjUgVEptCi0oSG8pIDEyLjE3NDMgVGoKLTI1IFRKbQotKHdlKSAxMS42MTY0IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyKSA3Ljc0MDk0IFRqCi00MCBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tNDA2IFRKbQotKGlmKSA2LjA4NzE1IFRqCi0tMzc0IFRKbQotKEkvTykgMTMuMjgwMSBUagotNzIgMzI3Ljk5OCBUZAotKGVycm9ycykgMjMuMjMyOCBUagotLTI2NyBUSm0KLShvY2N1cikgMjIuMTI2OSBUagotLTI2NyBUSm0KLSh3aGlsc3QpIDI0LjM1ODYgVGoKLS0yNjcgVEptCi0ocmVhZGluZykgMjkuODc3OCBUagotLTI2NyBUSm0KLShvcikgOC4yOTg4NSBUagotLTI2NyBUSm0KLSh3cml0aW5nKSAyOC43ODIgVGoKLS0yNjcgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjY4IFRKbQotKHVuZGVybHlpbmcpIDQzLjE2NzkgVGoKLS0yNjcgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI2NyBUSm0KLShcMDAybGVzLCkgMTkuMDk4MyBUagotLTI3MSBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNjcgVEptCi0obWF5KSAxNy4xNTU2IFRqCi0tMjY3IFRKbQotKGhhKSA5LjQwNDY5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yNjcgVEptCi0odG8pIDcuNzUwOSBUagotLTI2NyBUSm0KLShjb25zdWx0KSAyOC43ODIgVGoKLVsxIDAgMCAxIDQ1Ny4xOTkgMzI3Ljk5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NTcuMTk5IC0zMjcuOTk4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NTcuMTk5IDMyNy45OTggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZXJybm8pIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDQ4Ny4wODcgMzI3Ljk5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00ODcuMDg3IC0zMjcuOTk4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00ODkuNzQ4IDMyNy45OTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odG8pIDcuNzUwOSBUagotLTI2NyBUSm0KLShkZXRlcm1pbmUpIDM5Ljg0MDQgVGoKLTcyIDMxNi4wNDMgVGQKLSh0aGUpIDEyLjE3NDMgVGoKLS0zNjYgVEptCi0oY2F1c2UpIDIyLjEyNjkgVGoKLS0zNjUgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zNjYgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzY1IFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi01NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0tMTMxNCBUSm0KLShJbikgOC4yOTg4NSBUagotLTM2NiBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMzY1IFRKbQotKGNhc2UsKSAxOS42MzYzIFRqCi0tMzk1IFRKbQotKHlvdScpIDE4LjI2MTQgVGoKLTUwIFRKbQotKGQpIDQuOTgxMyBUagotLTM2NiBUSm0KLShuZWVkKSAxOC44MDk0IFRqCi0tMzY1IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zNjYgVEptCi0oQykgNi42NDUwNSBUagotLTM2NSBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMzY2IFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMzY2IFRKbQotKGNvcnJlY3RseSkgMzUuNDA3MSBUagotLTM2NSBUSm0KLShzdXBwb3J0cykgMzMuNzYzMyBUagotWzEgMCAwIDEgNDMxLjY2OCAzMTYuMDQzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQzMS42NjggLTMxNi4wNDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQzMS42NjggMzE2LjA0MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShlcnJubykgMjkuODg3OCBUagotWzEgMCAwIDEgNDYxLjU1NiAzMTYuMDQzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2MS41NTYgLTMxNi4wNDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ2NS4xOTkgMzE2LjA0MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpbikgNy43NTA5IFRqCi0tMzY2IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zNjUgVEptCi0obXVsdGl0aHJlYWRlZCkgNTUuMzQyMiBUagotNzIgMzA0LjA4OCBUZAotKGVuKSA5LjQwNDY5IFRqCi00MCBUSm0KLSh2aXJvbm1lbnQuKSA0My40NDY5IFRqCi1bMSAwIDAgMSA3MiAzMDMuOTg4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yOTQuMDI1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyODIuMTcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oVCkgNi4wODcxNSBUagotODAgVEptCi0obykgNC45ODEzIFRqCi0tMjQzIFRKbQotKG1haykgMTcuMTU1NiBUagotMTAgVEptCi0oZSkgNC40MjMzOSBUagotLTI0MyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDIgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTI0MyBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjQzIFRKbQotKGxpdHRsZSkgMTguMjcxNCBUagotLTI0MiBUSm0KLShzaW1wbGVyKSAyOS44ODc4IFRqCi0tMjQzIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjQzIFRKbQotKG1vcmUpIDIwLjQ3MzEgVGoKLS0yNDMgVEptCi0ocG9ydGFibGUsKSAzNS4xMzgxIFRqCi1bMSAwIDAgMSAyODkuMjYzIDI4Mi4xN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODkuMjYzIC0yODIuMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI4OS4yNjMgMjgyLjE3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRPcGVuKSA4My42ODU4IFRqCi1bMSAwIDAgMSAzNzIuOTQ5IDI4Mi4xN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNzIuOTQ5IC0yODIuMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM3NS4zNjggMjgyLjE3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAzOTIuMTcyIDI4Mi4xN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTIuMTcyIC0yODIuMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM5Mi4xNzIgMjgyLjE3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ieldyaXRlT3BlbikgODkuNjYzNCBUagotWzEgMCAwIDEgNDgxLjgzNiAyODIuMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDgxLjgzNiAtMjgyLjE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00ODQuMjU0IDI4Mi4xNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShyZXF1aXJlKSAyOC4yMTQxIFRqCi0tMjQzIFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI0MiBUSm0KLSh0bykgNy43NTA5IFRqCi03MiAyNzAuMjE1IFRkCi0ocGFzcykgMTcuMTU1NiBUagotLTI0NyBUSm0KLSh0aGVtKSAxOS45MjUyIFRqCi0tMjQ4IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI0NyBUSm0KLShoYW5kbGVzKSAzMC40MzU3IFRqCi0tMjQ3IFRKbQotKFwoKSAzLjMxNzU1IFRqCi1bMSAwIDAgMSAxNjUuNDIxIDI3MC4yMTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY1LjQyMSAtMjcwLjIxNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY1LjQyMSAyNzAuMjE1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEZJTEUpIDIzLjkxMDIgVGoKLTE4OS4zMzEgMjY4LjQ3MSBUZAotKCopIDUuOTc3NTYgVGoKLVsxIDAgMCAxIDE5NS4zMDkgMjcwLjIxNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTUuMzA5IC0yNzAuMjE1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xOTUuMzA5IDI3MC4yMTUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc1wpKSA3LjE5MyBUagotLTI0NyBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTI0OCBUSm0KLShoYSkgOS40MDQ2OSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjQ3IFRKbQotKHByZSkgMTIuNzIyMiBUagotMjUgVEptCi0odmlvdXNseSkgMjkuMzM5OSBUagotLTI0NyBUSm0KLShiZWVuKSAxOC44MDk0IFRqCi0tMjQ4IFRKbQotKG9wZW5lZCkgMjguNzcyIFRqCi0tMjQ3IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI0NyBUSm0KLShyZWFkaW5nKSAyOS44Nzc4IFRqCi0tMjQ3IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjQ4IFRKbQotKHdyaXRpbmcpIDI4Ljc4MiBUagotLTI0NyBUSm0KLShyZXNwZWN0aSkgMzAuOTgzNyBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbHkpIDEyLjE3NDMgVGoKLTY1IFRKbQotKC4pIDIuNDkwNjUgVGoKLS02MTggVEptCi0oVGhhdCkgMTguMjYxNCBUagotLTI0OCBUSm0KLShhKSA0LjQyMzM5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTIwIFRKbQotKG9pZHMpIDE2LjYwNzcgVGoKLTcyIDI1OC4yNiBUZAotKHBvcnRhYmlsaXR5KSA0MS41MTQyIFRqCi0tMjcyIFRKbQotKHByb2JsZW1zKSAzNy4wODA4IFRqCi0tMjczIFRKbQotKGFzc29jaWF0ZWQpIDQwLjk0NjMgVGoKLS0yNzIgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTI3MiBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yNzMgVEptCi0ob3BlcmF0aW9ucykgNDEuNTA0MiBUagotLTI3MiBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI3MiBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yNzMgVEptCi0oYXR0cmliKSAyMS4wMzEgVGoKLTIwIFRKbQotKHV0ZXMsKSAxOC41NDA0IFRqCi0tMjc4IFRKbQotKHdoaWxzdCkgMjQuMzU4NiBUagotLTI3MiBUSm0KLShub3QpIDEyLjczMjIgVGoKLS0yNzIgVEptCi0oYmVpbmcpIDIyLjEzNjkgVGoKLS0yNzMgVEptCi0obXVjaCkgMjIuMTM2OSBUagotLTI3MiBUSm0KLShvZikgOC4yOTg4NSBUagotLTI3MyBUSm0KLShhbikgOS40MDQ2OSBUagotLTI3MiBUSm0KLShpbXBvc2l0aW9uKSA0Mi42MyBUagotLTI3MiBUSm0KLShvbikgOS45NjI2IFRqCi0tMjczIFRKbQotKHRoZSkgMTIuMTc0MyBUagotNzIgMjQ2LjMwNCBUZAotKHByb2dyYW1tZXIpIDQ5LjI0NTEgVGoKLTU1IFRKbQotKC4pIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDI0NC4xNDddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIzNC4xODVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDIxNS42ODMgVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKDMuMS4zLikgNDMuMDcyOSBUagotLTI3OCBUSm0KLShVdGlsaXR5KSA0Ny44MjQ0IFRqCi0tMjc4IFRKbQotKGZ1bmN0aW9ucykgNzcuNDY5MyBUagotLTI3OCBUSm0KLShzdW1tYXIpIDY2Ljk2NzkgVGoKLS0xMCBUSm0KLSh5KSA5LjU3MTc2IFRqCi1bMSAwIDAgMSA3MiAyMTIuMTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIwMi4xNTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE5My43NjUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oRikgNS41MzkyMSBUagotMTUgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yNzMgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnkpIDEyLjcyMjIgVGoKLS0yNzMgVEptCi0oc2ltcGxlKSAyNi41NzAzIFRqCi0tMjczIFRKbQotKG5lZWRzLCkgMjUuMTc1NSBUagotWzEgMCAwIDEgMTY1LjkyOSAxOTMuNzY1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2NS45MjkgLTE5My43NjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE2NS45MjkgMTkzLjc2NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3MpIDE0My40NjEgVGoKLVsxIDAgMCAxIDMwOS4zOTEgMTkzLjc2NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDkuMzkxIC0xOTMuNzY1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMTIuMTEyIDE5My43NjUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDMyOS4yMTkgMTkzLjc2NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMjkuMjE5IC0xOTMuNzY1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMjkuMjE5IDE5My43NjUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3MpIDE1NS40MTcgVGoKLVsxIDAgMCAxIDQ4NC42MzYgMTkzLjc2NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00ODQuNjM2IC0xOTMuNzY1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00ODcuMzU3IDE5My43NjUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYXJlKSAxMi4xNjQzIFRqCi0tMjczIFRKbQotKHBybykgMTMuMjgwMSBUagotMTUgVEptCi0odmlkZWQuKSAyNC42Mjc1IFRqCi03MiAxODEuODEgVGQKLShUaGVzZSkgMjMuNzkwNyBUagotLTM3NCBUSm0KLShjb21wcmVzcykgMzcuNjI4NyBUagotLTM3MyBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMzc0IFRKbQotKGluKSA3Ljc1MDkgVGoKLS0zNzMgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMzc0IFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS0zNzMgVEptCi0ob25lKSAxNC4zODYgVGoKLS0zNzQgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVyKSAxMS4wNTg1IFRqCi0tMzczIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zNzQgVEptCi0oYW5vdGhlcikgMjkuODc3OCBUagotLTM3NCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVmKSA4LjI5ODg1IFRqCi0yNSBUSm0KLShmZXIpIDExLjA1ODUgVGoKLS0zNzMgVEptCi0oaW4pIDcuNzUwOSBUagotLTM3NCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMzczIFRKbQotKHNpbmdsZSkgMjMuODAwNyBUagotLTM3NCBUSm0KLShmdW5jdGlvbikgMzMuMjA1MyBUagotLTM3MyBUSm0KLShjYWxsLikgMTYuODc2NiBUagotLTEzNjIgVEptCi0oWSkgNy4xOTMgVGoKLTExMCBUSm0KLShvdSkgOS45NjI2IFRqCi0tMzczIFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotLTM3NCBUSm0KLShhc3Nlc3MpIDI0LjM0ODYgVGoKLTcyIDE2OS44NTUgVGQKLSh3aGV0aGVyKSAzMi4wODk1IFRqCi0tMzQ0IFRKbQotKHRoZXNlKSAyMC40NzMxIFRqCi0tMzQzIFRKbQotKGZ1bmN0aW9ucykgMzcuMDgwOCBUagotLTM0NCBUSm0KLShmdWxcMDAybGwpIDIyLjE0NjkgVGoKLS0zNDQgVEptCi0oeW91cikgMTguMjYxNCBUagotLTM0MyBUSm0KLShtZW1vcnktdG8tbWVtb3J5KSA4MC43OTY3IFRqCi0tMzQ0IFRKbQotKGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24pIDExMi44OTYgVGoKLS0zNDMgVEptCi0ocmVxdWlyZW1lbnRzKSA1Mi4wMTQ3IFRqCi0tMzQ0IFRKbQotKGJlZm9yZSkgMjUuNDQ0NSBUagotLTM0NCBUSm0KLShpbikgNy43NTA5IFRqCi00MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVzdGluZykgMjMuODAwNyBUagotNzIgMTU3LjkgVGQKLShlZikgNy43NDA5NCBUagotMjUgVEptCi0oZm9ydCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odW5kZXJzdGFuZGluZykgNTYuNDQ4MSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0obW9yZSkgMjAuNDczMSBUagotLTI1MCBUSm0KLShnZW5lcmFsKSAyOS4zMTk5IFRqCi0tMjUwIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTI1MCBUSm0KLShtb3JlKSAyMC40NzMxIFRqCi0tMjUwIFRKbQotKGNvbXBsZSkgMjkuMzI5OSBUagotMTUgVEptCi0oeCkgNC45ODEzIFRqCi0tMjUwIFRKbQotKGxvKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHctbGUpIDE3LjcwMzUgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWwpIDcuMTkzIFRqCi0tMjUwIFRKbQotKGludGVyZikgMjEuNTc5IFRqCi0xMCBUSm0KLShhY2UuKSAxNS43NjA4IFRqCi1bMSAwIDAgMSA3MiAxNTUuNzQzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xNDUuNzhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDEzNS45ODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oWSkgNy4xOTMgVGoKLTExMCBUSm0KLShvc2hpb2thKSAzMC45OTM2IFRqCi0tNDIzIFRKbQotKFRzdW5lbykgMjkuMzI5OSBUagotLTQyMiBUSm0KLShcKCkgMy4zMTc1NSBUagotWzEgMCAwIDEgMTUwLjE2IDEzNS45ODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTUwLjE2IC0xMzUuOTgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTAuMTYgMTM1Ljk4MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh0c3VuZW9AcnIuaWlqNHUub3IuanApIDEyNS41MjkgVGoKLVsxIDAgMCAxIDI3NS42OSAxMzUuOTgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3NS42OSAtMTM1Ljk4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjc1LjY5IDEzNS45ODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXCkpIDMuMzE3NTUgVGoKLS00MjMgVEptCi0oaGFzKSAxMy4yODAxIFRqCi0tNDIyIFRKbQotKGNvbnRyaWIpIDI4LjIyNCBUagotMjAgVEptCi0odXRlZCkgMTcuMTU1NiBUagotLTQyMyBUSm0KLShzb21lKSAyMS4wMzEgVGoKLS00MjMgVEptCi0oZnVuY3Rpb25zKSAzNy4wODA4IFRqCi0tNDIyIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS00MjMgVEptCi0oZ2kpIDcuNzUwOSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tNDIzIFRKbQotKGJldHRlcikgMjIuNjg0OCBUagotWzEgMCAwIDEgNDc2LjQ2MiAxMzUuOTgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Ni40NjIgLTEzNS45ODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ3Ni40NjIgMTM1Ljk4MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh6bGliKSAyMy45MTAyIFRqCi1bMSAwIDAgMSA1MDAuMzcyIDEzNS45ODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTAwLjM3MiAtMTM1Ljk4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA0LjU4MyAxMzUuOTgyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGNvbXBhdGktKSAzNS40MTcgVGoKLTcyIDEyNC4wMjcgVGQKLShiaWxpdHkpIDIxLjA0MSBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTE0NDYgVEptCi0oVGhlc2UpIDIzLjc5MDcgVGoKLS0zODggVEptCi0oZnVuY3Rpb25zKSAzNy4wODA4IFRqCi0tMzg3IFRKbQotKGFyZSkgMTIuMTY0MyBUagotWzEgMCAwIDEgMTkzLjkxMyAxMjQuMDI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5My45MTMgLTEyNC4wMjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5My45MTMgMTI0LjAyNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpvcGVuKSA1OS43NzU2IFRqCi1bMSAwIDAgMSAyNTMuNjg5IDEyNC4wMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjUzLjY4OSAtMTI0LjAyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjUzLjY4OSAxMjQuMDI3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDI2MC4zODUgMTI0LjAyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNjAuMzg1IC0xMjQuMDI3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNjAuMzg1IDEyNC4wMjcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6cmVhZCkgNTkuNzc1NiBUagotWzEgMCAwIDEgMzIwLjE2MSAxMjQuMDI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMyMC4xNjEgLTEyNC4wMjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMyMC4xNjEgMTI0LjAyNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAzMjYuODU3IDEyNC4wMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzI2Ljg1NyAtMTI0LjAyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzI2Ljg1NyAxMjQuMDI3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iendyaXRlKSA2NS43NTMyIFRqCi1bMSAwIDAgMSAzOTIuNjExIDEyNC4wMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzkyLjYxMSAtMTI0LjAyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzkyLjYxMSAxMjQuMDI3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDM5OS4zMDYgMTI0LjAyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTkuMzA2IC0xMjQuMDI3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zOTkuMzA2IDEyNC4wMjcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Zmx1c2gpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDQ2NS4wNiAxMjQuMDI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2NS4wNiAtMTI0LjAyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDY1LjA2IDEyNC4wMjcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgNDcxLjc1NiAxMjQuMDI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3MS43NTYgLTEyNC4wMjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ3MS43NTYgMTI0LjAyNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpjbG9zZSkgNjUuNzUzMiBUagotWzEgMCAwIDEgNTM3LjUwOSAxMjQuMDI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUzNy41MDkgLTEyNC4wMjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNy41MDkgMTI0LjAyNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAxMTIuMDcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xMTIuMDcyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxMTIuMDcyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iemVycm9yKSA2NS43NTMyIFRqCi1bMSAwIDAgMSAxMzcuNzUzIDExMi4wNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTM3Ljc1MyAtMTEyLjA3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQwLjQwOCAxMTIuMDcyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAxNTcuNDQ5IDExMi4wNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU3LjQ0OSAtMTEyLjA3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTU3LjQ0OSAxMTIuMDcyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iemxpYlZlcnNpb24pIDk1LjY0MSBUagotWzEgMCAwIDEgMjUzLjA5MSAxMTIuMDcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1My4wOTEgLTExMi4wNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1My4wOTEgMTEyLjA3MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi0tNzE5IFRKbQotKFkpIDcuMTkzIFRqCi0xMTAgVEptCi0ob3UpIDkuOTYyNiBUagotLTI2NiBUSm0KLShtYXkpIDE3LjE1NTYgVGoKLS0yNjcgVEptCi0oXDAwMm5kKSAxNS41MDE4IFRqCi0tMjY2IFRKbQotKHRoZXNlKSAyMC40NzMxIFRqCi0tMjY3IFRKbQotKGZ1bmN0aW9ucykgMzcuMDgwOCBUagotLTI2NiBUSm0KLShtb3JlKSAyMC40NzMxIFRqCi0tMjY3IFRKbQotKGNvbikgMTQuMzg2IFRqCi00MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVuaWVudCkgMjQuMzQ4NiBUagotLTI2NiBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNjcgVEptCi0oc2ltcGxlKSAyNi41NzAzIFRqCi0tMjY2IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI2NyBUSm0KLShyZWFkaW5nKSAyOS44Nzc4IFRqCi03MiAxMDAuMTE3IFRkCi0oYW5kKSAxNC4zODYgVGoKLS0yNzAgVEptCi0od3JpKSAxMy4yODAxIFRqCi0xIFRKbQotKHRpbmcsKSAxNy45OTI1IFRqCi0tMjc1IFRKbQotKHRoYW4pIDE3LjE1NTYgVGoKLS0yNjkgVEptCi0odGhvc2UpIDIxLjAzMSBUagotLTI3MCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjY5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI3MCBUSm0KLShoaWdoLWxlKSAyOC4yMjQgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWwpIDcuMTkzIFRqCi0tMjY5IFRKbQotKGludGVyZikgMjEuNTc5IFRqCi0xMCBUSm0KLShhY2UuKSAxNS43NjA4IFRqCi0tNzM3IFRKbQotKFRoZXNlKSAyMy43OTA3IFRqCi0tMjcwIFRKbQotKGZ1bmN0aW9ucykgMzcuMDgwOCBUagotLTI2OSBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yNzAgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMjY5IFRKbQotKFwoeWV0XCkpIDE4LjgwOTQgVGoKLS0yNzAgVEptCi0ob2YpIDguMjk4ODUgVGoKLTI1IFRKbQotKFwwMDJjaWFsbHkpIDI3LjY3NjEgVGoKLS0yNjkgVEptCi0ocGFydCkgMTUuNDkxOCBUagotLTI3MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI2OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNzAgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTI3NCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI3MCBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLTcyIDg4LjE2MTQgVGQKLShtaW5pbWFsbHkpIDQwLjk2NjIgVGoKLS0yOTEgVEptCi0oZG9jdW1lbnRlZCkgNDguNjk3MiBUagotLTI5MSBUSm0KLShoZXJlLikgMTkuNjM2MyBUagotLTg2NyBUSm0KLShJZikgNi42MzUwOSBUagotLTI5MSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI5MSBUSm0KLShicmVhaywpIDI0LjYxNzYgVGoKLS0zMDEgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjkxIFRKbQotKGdldCkgMTIuMTc0MyBUagotLTI5MiBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjkxIFRKbQotKGspIDQuOTgxMyBUagotMTAgVEptCi0oZWVwKSAxMy44MjgxIFRqCi0tMjkxIFRKbQotKGFsbCkgOS45NjI2IFRqCi0tMjkxIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5MSBUSm0KLShwaWVjZXMuKSAyNy4zODcyIFRqCi0tNDMzIFRKbQotKEkpIDMuMzE3NTUgVGoKLS0yOTEgVEptCi0oaG9wZSkgMTkuMzY3MyBUagotLTI5MSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjkxIFRKbQotKGRvY3VtZW50KSAzOS4yOTI1IFRqCi0tMjkyIFRKbQotKHRoZW0pIDE5LjkyNTIgVGoKLS0yOTEgVEptCi0ocHJvcGVybHkpIDMzLjc1MzMgVGoKLS0yOTEgVEptCi0od2hlbikgMjEuNTc5IFRqCi03MiA3Ni4yMDYyIFRkCi0odGltZSkgMTcuNzEzNSBUagotLTI1MCBUSm0KLShwZXJtaXRzLikgMzIuMzc4NSBUagotWzEgMCAwIDEgNzIgNzQuMDQ5NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTIzLjE5NzZdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQuMzgzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMzc0LjM5NCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDYuOTczN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQzLjA2MzMgLTYuNzU0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTguMjI1IC01MS4wNzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTU0MS4yODggNTEuMDcxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDkpIDQuOTgxMyBUagotWzEgMCAwIDEgNDU1LjE2MSA1MC44NTE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgOTMuNTk4NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi4yNzY1IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTUuMDM2NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotUQotc2hvd3BhZ2UKLSUlUGFnZVRyYWlsZXIKLXBkZkVuZFBhZ2UKLSUlUGFnZTogMTMgMTMKLSUlQmVnaW5QYWdlU2V0dXAKLSUlUGFnZU9yaWVudGF0aW9uOiBQb3J0cmFpdAotcGRmU3RhcnRQYWdlCi0wIDAgNjEyIDc5MiByZSBXCi0lJUVuZFBhZ2VTZXR1cAotW10gMCBkCi0xIGkKLTAgagotMCBKCi0xMCBNCi0xIHcKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLWZhbHNlIG9wCi1mYWxzZSBPUAotMCAwIDYxMiA3OTIgcmUKLVcKLXEKLVsxIDAgMCAxIDcyIDc0MS41NTRdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAxNC40NDU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTg3LjE5NyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IC04LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDc2LjQ5NzkgLTYuNzU0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNDIuNTY5IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MTkuMDY3IDc0OS4yNDUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUHJvZ3JhbW1pbmcpIDU0Ljc5NDMgVGoKLS0yNTAgVEptCi0od2l0aCkgMTcuNzEzNSBUagotWzEgMCAwIDEgNDk2LjU1NiA3NDkuMjQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5Ni41NTYgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ5Ni41NTYgNzQ5LjI0NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShsaWJiemlwMikgNDcuODIwNSBUagotWzEgMCAwIDEgNTQ0LjM3NiA3NDkuMjQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3OC4zMDUgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDI4MC43OTYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzIuOTc0IC01LjAzNjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0wLjQ5ODFdIGNtCi1xCi1bXSAwIGQKLTAgSgotMC40OTgxIHcKLTAgMC4yNDkxIG0KLTQ3NS40NjUgMC4yNDkxIGwKLVMKLVEKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ3OS4yNTEgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0yMS41NTQyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC03MjBdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDcxMC4wMzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oWSkgNy4xOTMgVGoKLTExMCBUSm0KLShvc2hpb2thKSAzMC45OTM2IFRqCi0tMjUwIFRKbQotKGFsc28pIDE2LjA0OTcgVGoKLS0yNTAgVEptCi0oY29udHJpYikgMjguMjI0IFRqCi0yMCBUSm0KLSh1dGVkKSAxNy4xNTU2IFRqCi0tMjUwIFRKbQotKG1vZGlcMDAyY2F0aW9ucykgNTQuMjQ2NCBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKGFsbG8pIDE0Ljk0MzkgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1aWx0KSAxMy4yOTAxIFRqCi0tMjUwIFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oVykgOS40MDQ2OSBUagotNDAgVEptCi0oaW5kbykgMTcuNzEzNSBUagotMjUgVEptCi0od3MpIDExLjA2ODQgVGoKLS0yNTAgVEptCi0oRExMLikgMjEuODU3OSBUagotWzEgMCAwIDEgNzIgNzA3Ljg4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43NDM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02OTguMTM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2NzUuNTA0IFRkCi0vRjEyMl8wIDIwLjY1ODUgVGYKLSgzLjIuKSAzNC40NTg0IFRqCi0tMjc4IFRKbQotKEVycikgMjkuODUxNSBUagotMjAgVEptCi0ob3IpIDIwLjY1ODUgVGoKLS0yNzggVEptCi0oaGFuZGxpbmcpIDg2LjA4NCBUagotWzEgMCAwIDEgNzIgNjcwLjkwN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzQzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjYxLjE2NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjUzLjgwNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGUpIDE1LjQ5MTggVGoKLS0yMTQgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTIxNSBUSm0KLShpcykgNi42NDUwNSBUagotLTIxNCBUSm0KLShkZXNpZ25lZCkgMzUuNDE3IFRqCi0tMjE1IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yMTQgVEptCi0ocmVjbykgMTcuMTQ1NiBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcikgNy43NDA5NCBUagotLTIxNSBUSm0KLShjbGVhbmx5KSAyOC43NzIgVGoKLS0yMTQgVEptCi0oaW4pIDcuNzUwOSBUagotLTIxNSBUSm0KLShhbGwpIDkuOTYyNiBUagotLTIxNCBUSm0KLShzaXR1YXRpb25zLCkgNDAuNjg3MyBUagotLTIyMiBUSm0KLShpbmNsdWRpbmcpIDM3LjYzODcgVGoKLS0yMTQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjE1IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvcnN0LWNhc2UpIDM1LjQwNzEgVGoKLS0yMTQgVEptCi0oc2l0dWF0aW9uKSAzNC4zMjEyIFRqCi0tMjE1IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjE0IFRKbQotKGRlY29tcHJlc3NpbmcpIDU5Ljc2NTYgVGoKLS0yMTUgVEptCi0ocmFuZG9tKSAzMC40MzU3IFRqCi03MiA2NDEuODUgVGQKLShkYXRhLikgMTkuMDg4MyBUagotLTc2NCBUSm0KLShJJ20pIDE0LjM4NiBUagotLTI3NCBUSm0KLShub3QpIDEyLjczMjIgVGoKLS0yNzUgVEptCi0oMTAwJSkgMjMuMjQyNyBUagotLTI3NCBUSm0KLShzdXJlKSAxNi41OTc3IFRqCi0tMjc0IFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0yNzQgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0yNzQgVEptCi0oY2FuKSAxMy44MjgxIFRqCi0tMjc0IFRKbQotKGFsKSA3LjE5MyBUagotMTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGF5cykgMTMuMjgwMSBUagotLTI3NCBUSm0KLShkbykgOS45NjI2IFRqCi0tMjc0IFRKbQotKHRoaXMsKSAxNi44ODY2IFRqCi0tMjgwIFRKbQotKHNvKSA4Ljg1Njc1IFRqCi0tMjc0IFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI3NCBUSm0KLShtaWdodCkgMjMuMjUyNyBUagotLTI3NCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYW50KSAxMi4xNzQzIFRqCi0tMjc0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNzQgVEptCi0oYWRkKSAxNC4zODYgVGoKLS0yNzQgVEptCi0oYSkgNC40MjMzOSBUagotLTI3NSBUSm0KLShzKSAzLjg3NTQ1IFRqCi0xIFRKbQotKGlnbmFsKSAxOS45MjUyIFRqCi0tMjc1IFRKbQotKGhhbmRsZXIpIDI5Ljg3NzggVGoKLS0yNzQgVEptCi0odG8pIDcuNzUwOSBUagotLTI3NCBUSm0KLShjYXRjaCkgMjEuMDIxMSBUagotLTI3NCBUSm0KLShzZSkgOC4yOTg4NSBUagotMTUgVEptCi0oZ21lbnRhdGlvbikgNDQuODMxNyBUagotNzIgNjI5Ljg5NCBUZAotKHZpb2xhdGlvbnMpIDM5LjMwMjUgVGoKLS0yNzMgVEptCi0oZHVyaW5nKSAyNi4wMTIzIFRqCi0tMjczIFRKbQotKGRlY29tcHJlc3Npb24pIDU5Ljc2NTYgVGoKLS0yNzMgVEptCi0oaWYpIDYuMDg3MTUgVGoKLS0yNzMgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjczIFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTI3MyBUSm0KLShmZWVsaW5nKSAyNy42NjYxIFRqCi0tMjc0IFRKbQotKGVzcGVjaWFsbCkgMzQuODU5MSBUagotMSBUSm0KLSh5KSA0Ljk4MTMgVGoKLS0yNzQgVEptCi0ocGFyYW5vaWQuKSAzNy4zNDk4IFRqCi0tNzU4IFRKbQotKEkpIDMuMzE3NTUgVGoKLS0yNzMgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG91bGQpIDE3LjcxMzUgVGoKLS0yNzMgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNzMgVEptCi0oaW50ZXJlc3RlZCkgMzguNzM0NiBUagotLTI3MyBUSm0KLShpbikgNy43NTA5IFRqCi0tMjc0IFRKbQotKGhlYXJpbmcpIDI5Ljg3NzggVGoKLS0yNzMgVEptCi0obW9yZSkgMjAuNDczMSBUagotLTI3MyBUSm0KLShhYm91dCkgMjIuMTM2OSBUagotNzIgNjE3LjkzOSBUZAotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShyb2IpIDEzLjI4MDEgVGoKLTIwIFRKbQotKHVzdG5lc3MpIDI4Ljc4MiBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKGNvcnJ1cHRlZCkgMzguMTc2NyBUagotLTI1MCBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjUwIFRKbQotKGRhdGEuKSAxOS4wODgzIFRqCi1bMSAwIDAgMSA3MiA2MTUuNzgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43NDM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02MDYuMDM5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1OTYuMjQxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFYpIDcuMTkzIFRqCi0xMTEgVEptCi0oZXJzaW9uKSAyNC4zNDg2IFRqCi0tMjUxIFRKbQotKDEuMC4zKSAxOS45MjUyIFRqCi0tMjUxIFRKbQotKG1vcmUpIDIwLjQ3MzEgVGoKLS0yNTEgVEptCi0ocm9iKSAxMy4yODAxIFRqCi0yMCBUSm0KLSh1c3QpIDExLjYyNjQgVGoKLS0yNTEgVEptCi0oaW4pIDcuNzUwOSBUagotLTI1MSBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNTEgVEptCi0ocmVzcGVjdCkgMjguMjE0MSBUagotLTI1MiBUSm0KLSh0aGFuKSAxNy4xNTU2IFRqCi0tMjUxIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLS0yNTEgVEptCi0ocHJlKSAxMi43MjIyIFRqCi0yNSBUSm0KLSh2aW91cykgMjEuNTg5IFRqCi0tMjUxIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9uLikgMjYuODM5MiBUagotLTYyNiBUSm0KLShJbikgOC4yOTg4NSBUagotNDAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlc3RpZykgMTguODE5NCBUagotNSBUSm0KLShhdGlvbnMpIDIzLjgwMDcgVGoKLS0yNTEgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTI1MSBUSm0KLShWKSA3LjE5MyBUagotMTExIFRKbQotKGFsZ3JpbmQpIDI4LjIyNCBUagotLTI1MSBUSm0KLShcKGEpIDcuNzQwOTQgVGoKLS0yNTIgVEptCi0odG9vbCkgMTUuNTAxOCBUagotLTI1MSBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNTEgVEptCi0oZGV0ZWN0aW5nKSAzNi41MjI5IFRqCi03MiA1ODQuMjg1IFRkCi0ocHJvYmxlbXMpIDM3LjA4MDggVGoKLS00MjIgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTQyMSBUSm0KLShtZW1vcnkpIDMzLjIwNTMgVGoKLS00MjIgVEptCi0obWFuYWdlbWVudFwpKSA1NC4yMjY0IFRqCi0tNDIxIFRKbQotKGluZGljYXRlKSAzMS41NDE2IFRqCi0tNDIyIFRKbQotKHRoYXQsKSAxNy40MzQ2IFRqCi0tNDY0IFRKbQotKGF0KSA3LjE5MyBUagotLTQyMiBUSm0KLShsZWFzdCkgMTguMjYxNCBUagotLTQyMSBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS00MjIgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tNDIyIFRKbQotKGYpIDMuMzE3NTUgVGoKLTEgVEptCi0oZSkgNC40MjMzOSBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS00MjIgVEptCi0oXDAwMmxlcykgMTYuNjA3NyBUagotLTQyMiBUSm0KLShJKSAzLjMxNzU1IFRqCi0tNDIxIFRKbQotKHRlc3RlZCwpIDI1LjczMzQgVGoKLS00NjQgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS00MjIgVEptCi0oc2luZ2xlLWJpdCkgMzcuNjM4NyBUagotLTQyMiBUSm0KLShlcnJvcnMpIDIzLjIzMjggVGoKLS00MjEgVEptCi0oaW4pIDcuNzUwOSBUagotLTQyMiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTcyIDU3Mi4zMyBUZAotKGRlY29tcHJlc3NlZCkgNTYuNDM4MSBUagotLTM0MiBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMzQxIFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTM0MiBUSm0KLShjYXVnaHQpIDI2LjU2MDMgVGoKLS0zNDIgVEptCi0ocHJvcGVybHkpIDMzLjc1MzMgVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0zNjUgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTM0MSBUSm0KLShubykgOS45NjI2IFRqCi0tMzQyIFRKbQotKHNlKSA4LjI5ODg1IFRqCi0xNSBUSm0KLShnbWVudGF0aW9uKSA0NC44MzE3IFRqCi0tMzQyIFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGF1bHRzLCkgMjEuMzEgVGoKLS0zNjUgVEptCi0obm8pIDkuOTYyNiBUagotLTM0MSBUSm0KLSh1c2VzKSAxNy4xNTU2IFRqCi0tMzQyIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzQyIFRKbQotKHVuaW5pdGlhbGlzZWQpIDQ5LjI2NTEgVGoKLS0zNDIgVEptCi0oZGF0YSwpIDE5LjA4ODMgVGoKLS0zNjQgVEptCi0obm8pIDkuOTYyNiBUagotLTM0MiBUSm0KLShvdXQpIDEyLjczMjIgVGoKLS0zNDIgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zNDIgVEptCi0ocmFuZ2UpIDIyLjEyNjkgVGoKLTcyIDU2MC4zNzUgVGQKLShyZWFkcykgMjEuMDIxMSBUagotLTI2MSBUSm0KLShvcikgOC4yOTg4NSBUagotLTI2MCBUSm0KLSh3cml0ZXMsKSAyNi44MzkyIFRqCi0tMjYzIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjYxIFRKbQotKG5vKSA5Ljk2MjYgVGoKLS0yNjEgVEptCi0oaW5cMDAybml0KSAyMy44MTA2IFRqCi0xIFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yNjEgVEptCi0obG9vcGluZykgMzAuNDQ1NyBUagotLTI2MSBUSm0KLShpbikgNy43NTA5IFRqCi0tMjYwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI2MSBUSm0KLShkZWNvbXByZXNzb3IpIDU1LjMzMjMgVGoKLTU1IFRKbQotKC4pIDIuNDkwNjUgVGoKLS0zNDIgVEptCi0oU28pIDEwLjUyMDUgVGoKLS0yNjAgVEptCi0oaXQnKSA4Ljg1Njc1IFRqCi01NSBUSm0KLShzKSAzLjg3NTQ1IFRqCi0tMjYxIFRKbQotKGNlcnRhaW5seSkgMzQuODU5MSBUagotLTI2MCBUSm0KLShwcmV0dHkpIDIzLjI0MjcgVGoKLS0yNjEgVEptCi0ocm9iKSAxMy4yODAxIFRqCi0yMCBUSm0KLSh1c3QsKSAxNC4xMTcgVGoKLS0yNjMgVEptCi0oYWx0aG91Z2gpIDM0Ljg2OTEgVGoKLS0yNjEgVEptCi0oSSkgMy4zMTc1NSBUagotLTI2MCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0ob3VsZG4nKSAyNi4wMTIzIFRqCi0xOCBUSm0KLSh0KSAyLjc2OTYgVGoKLS0yNjEgVEptCi0oY2xhaW0pIDIyLjEzNjkgVGoKLTcyIDU0OC40MiBUZAotKGl0KSA1LjUzOTIxIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0odG90YWxseSkgMjUuNDY0NCBUagotLTI1MCBUSm0KLShib21icHJvb2YuKSA0Ni43NjQ0IFRqCi1bMSAwIDAgMSA3MiA1NDYuMjYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43NDM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01MzYuNTE5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1MjYuNzIxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoZSkgMTUuNDkxOCBUagotLTI4MiBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLVsxIDAgMCAxIDEwNS44NCA1MjYuNzIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEwNS44NCAtNTI2LjcyMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA1Ljg0IDUyNi43MjEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnpsaWIuaCkgNDEuODQyOSBUagotWzEgMCAwIDEgMTQ3LjY4MyA1MjYuNzIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE0Ny42ODMgLTUyNi43MjFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1MC40OTEgNTI2LjcyMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShjb250YWlucykgMzMuMjA1MyBUagotLTI4MiBUSm0KLShhbGwpIDkuOTYyNiBUagotLTI4MiBUSm0KLShkZVwwMDJuaXRpb25zKSA0Mi4wNzIxIFRqCi0tMjgyIFRKbQotKG5lZSkgMTMuODI4MSBUagotMSBUSm0KLShkZWQpIDE0LjM4NiBUagotLTI4MiBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjgyIFRKbQotKHVzZSkgMTMuMjgwMSBUagotLTI4MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yODIgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTgxMSBUSm0KLShJbikgOC4yOTg4NSBUagotLTI4MiBUSm0KLShwYXJ0aWN1bGFyKSAzOC4xNzY3IFRqCi00MCBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjkwIFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI4MiBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yODEgVEptCi0oZGVcMDAybml0ZWx5KSAzNy42Mzg3IFRqCi0tMjgyIFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTI4MiBUSm0KLShpbmNsdWRlKSAyOS4zMjk5IFRqCi1bMSAwIDAgMSA3MiA1MTQuNzY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01MTQuNzY2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1MTQuNzY2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6bGliX3ByaXZhdGUuaCkgODkuNjYzNCBUagotWzEgMCAwIDEgMTYxLjY2NCA1MTQuNzY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2MS42NjQgLTUxNC43NjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE2MS42NjQgNTE0Ljc2NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiA1MTMuMjMyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43NDM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01MDMuNDg4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0OTMuMDY3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEluKSA4LjI5ODg1IFRqCi1bMSAwIDAgMSA4Mi44MDc1IDQ5My4wNjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODIuODA3NSAtNDkzLjA2N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODIuODA3NSA0OTMuMDY3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6bGliLmgpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDEyNC42NTEgNDkzLjA2N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMjQuNjUxIC00OTMuMDY3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMjQuNjUxIDQ5My4wNjcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTI1MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTIgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhcmlvdXMpIDI0LjM0ODYgVGoKLS0yNTIgVEptCi0ocmV0dXJuKSAyMy43OTA3IFRqCi0tMjUyIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZXMpIDIwLjQ3MzEgVGoKLS0yNTEgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMjUyIFRKbQotKGRlXDAwMm5lZC4pIDMxLjgyMDUgVGoKLS02MzEgVEptCi0oVGhlKSAxNS40OTE4IFRqCi0tMjUyIFRKbQotKGZvbGxvKSAxOC44MTk0IFRqCi0yNSBUSm0KLSh3aW5nKSAxOS45MjUyIFRqCi0tMjUyIFRKbQotKGxpc3QpIDEyLjE4NDMgVGoKLS0yNTEgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTIgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMjUyIFRKbQotKGludGVuZGVkKSAzNC4zMTEyIFRqCi0tMjUyIFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjUyIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tMjUxIFRKbQotKGUpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHhoYXVzdGkpIDI4Ljc4MiBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjUyIFRKbQotKGRlc2NyaXB0aW9uKSA0NC4yNzM4IFRqCi0tMjUyIFRKbQotKG9mKSA4LjI5ODg1IFRqCi03MiA0ODEuMTEyIFRkCi0odGhlKSAxMi4xNzQzIFRqCi0tMjM2IFRKbQotKGNpcmN1bXN0YW5jZXMpIDU2LjQzODEgVGoKLS0yMzYgVEptCi0oaW4pIDcuNzUwOSBUagotLTIzNyBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTIzNiBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjM2IFRKbQotKGdpKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW4pIDkuNDA0NjkgVGoKLS0yMzYgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlKSAxNi41OTc3IFRqCi0tMjM2IFRKbQotKG1heSkgMTcuMTU1NiBUagotLTIzNyBUSm0KLShiZSkgOS40MDQ2OSBUagotLTIzNiBUSm0KLShyZXR1cm5lZCkgMzMuMTk1NCBUagotLTIzNiBUSm0KLSgtLSkgNi42MzUwOSBUagotLTIzNiBUSm0KLSh0aG9zZSkgMjEuMDMxIFRqCi0tMjM2IFRKbQotKGRlc2NyaXB0aW9ucykgNDguMTQ5MiBUagotLTIzNiBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yMzcgVEptCi0oZ2kpIDcuNzUwOSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbikgOS40MDQ2OSBUagotLTIzNiBUSm0KLShsYXRlcikgMTcuNzAzNSBUagotNTUgVEptCi0oLikgMi40OTA2NSBUagotLTMwNSBUSm0KLShSYXRoZXIpIDI2LjU2MDMgVGoKLTQwIFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yMzkgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0yMzYgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yMzcgVEptCi0oaW50ZW5kZWQpIDM0LjMxMTIgVGoKLS0yMzYgVEptCi0odG8pIDcuNzUwOSBUagotNzIgNDY5LjE1NyBUZAotKGNvbikgMTQuMzg2IFRqCi00MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI2NiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjUgVEptCi0ocm91Z2gpIDIzLjI0MjcgVGoKLS0yNjYgVEptCi0obWVhbmluZykgMzQuMzExMiBUagotLTI2NSBUSm0KLShvZikgOC4yOTg4NSBUagotLTI2NiBUSm0KLShlYWNoKSAxOC4yNTE1IFRqCi0tMjY2IFRKbQotKHJldHVybikgMjMuNzkwNyBUagotLTI2NSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFsdWUuKSAxOS4wODgzIFRqCi0tNzE0IFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTI2NSBUSm0KLShcMDAycnN0KSAxNS41MDE4IFRqCi0tMjY2IFRKbQotKFwwMDIpIDUuNTM5MjEgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI2NSBUSm0KLShhY3Rpb25zKSAyOC4yMjQgVGoKLS0yNjYgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMjY2IFRKbQotKG5vcm1hbCkgMjguMjI0IFRqCi0tMjY1IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjY2IFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTI2NSBUSm0KLShpbnRlbmRlZCkgMzQuMzExMiBUagotLTI2NiBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjY2IFRKbQotKGRlbm90ZSkgMjYuNTYwMyBUagotLTI2NSBUSm0KLShhbikgOS40MDQ2OSBUagotLTI2NiBUSm0KLShlcnJvcikgMTkuMzU3MyBUagotNzIgNDU3LjIwMiBUZAotKHNpdHVhdGlvbi4pIDM2LjgxMTggVGoKLVsxIDAgMCAxIDcyIDQ1Ny4xMDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc0MzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc0MzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQzNy42MTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQyNS43NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9PSykgMjkuODg3OCBUagotWzEgMCAwIDEgMTAxLjg4OCA0MjUuNzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMi4zNzg2IC0xLjMxMDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQyNC40NDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA0MTMuODA0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoZSkgMTUuNDkxOCBUagotLTI1MCBUSm0KLShyZXF1ZXN0ZWQpIDM4LjE3NjcgVGoKLS0yNTAgVEptCi0oYWN0aW9uKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhcykgOC4yOTg4NSBUagotLTI1MCBUSm0KLShjb21wbGV0ZWQpIDQxLjUwNDIgVGoKLS0yNTAgVEptCi0oc3VjY2Vzc2Z1bGx5KSA0OC42OTcyIFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiA0MTEuNjQ4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMy43NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc0MzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM5OC4xMzhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM4OC4zNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9SVU5fT0ssKSA1OS43NzU2IFRqCi0tNjAwIFRKbQotKEJaX0ZMVVNIX09LLCkgNzEuNzMwNyBUagotLTYwMCBUSm0KLShCWl9GSU5JU0hfT0spIDcxLjczMDcgVGoKLVsxIDAgMCAxIDI4Ny4xOTMgMzg4LjM0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjE3LjY4NCAtMS4zMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzg3LjAzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDggMzc2LjM4NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJbikgOC4yOTg4NSBUagotWzEgMCAwIDEgMTE4Ljc5IDM3Ni4zODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE4Ljc5IC0zNzYuMzg0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTguNzkgMzc2LjM4NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMjAyLjQ3NiAzNzYuMzg0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwMi40NzYgLTM3Ni4zODRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwMi40NzYgMzc2LjM4NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShyZXF1ZXN0ZWQpIDM4LjE3NjcgVGoKLS0yNTAgVEptCi0oXDAwM3VzaC9cMDAybmlzaC9ub3RoaW5nLXNwZWNpYWwpIDEwOC40OTMgVGoKLS0yNTAgVEptCi0oYWN0aW9uKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhcykgOC4yOTg4NSBUagotLTI1MCBUSm0KLShjb21wbGV0ZWQpIDQxLjUwNDIgVGoKLS0yNTAgVEptCi0oc3VjY2Vzc2Z1bGx5KSA0OC42OTcyIFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAzNzQuMjI4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMy43NjU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43NDM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zNjAuNzE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzNTAuOTIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfU1RSRUFNX0VORCkgNzcuNzA4MyBUagotWzEgMCAwIDEgMTQ5LjcwOSAzNTAuOTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04MC4xOTkzIC0xLjMxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zNDkuNjFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCAzMzguOTY1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKENvbXByZXNzaW9uKSA1Mi41ODI2IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGNvbXBsZXRlZCwpIDQzLjk5NDggVGoKLS0yNTAgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGxvZ2ljYWwpIDI3LjExODIgVGoKLS0yNTAgVEptCi0oc3RyZWFtKSAyNi41NjAzIFRqCi0tMjUwIFRKbQotKGVuZCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhcykgOC4yOTg4NSBUagotLTI1MCBUSm0KLShkZXRlY3RlZCkgMzMuMTk1NCBUagotLTI1MCBUSm0KLShkdXJpbmcpIDI2LjAxMjMgVGoKLS0yNTAgVEptCi0oZGVjb21wcmVzc2lvbi4pIDYyLjI1NjMgVGoKLVsxIDAgMCAxIDcyIDMzNi44MDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zLjc2NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc0MzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc0MzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTMxMy41NTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDMwMy43NTYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oVGhlKSAxNS40OTE4IFRqCi0tMjUwIFRKbQotKGZvbGxvKSAxOC44MTk0IFRqCi0yNSBUSm0KLSh3aW5nKSAxOS45MjUyIFRqCi0tMjUwIFRKbQotKHJldHVybikgMjMuNzkwNyBUagotLTI1MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFsdWVzKSAyMC40NzMxIFRqCi0tMjUwIFRKbQotKGluZGljYXRlKSAzMS41NDE2IFRqCi0tMjUwIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHNvbWUpIDIxLjAzMSBUagotLTI1MCBUSm0KLShraW5kLikgMjAuMjA0MiBUagotWzEgMCAwIDEgNzIgMzAxLjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc0MzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc0MzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTI4Mi4xMTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI3Mi4zMTQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfQ09ORklHX0VSUk9SKSA4OS42NjM0IFRqCi1bMSAwIDAgMSAxNjEuNjY0IDI3Mi4zMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05Mi4xNTQ0IC0xLjMxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yNzEuMDA0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDggMjYwLjM1OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJbmRpY2F0ZXMpIDM1Ljk2NSBUagotLTM4NiBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMzg1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM4NiBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMzg2IFRKbQotKGhhcykgMTMuMjgwMSBUagotLTM4NiBUSm0KLShiZWVuKSAxOC44MDk0IFRqCi0tMzg1IFRKbQotKGltcHJvcGVybHkpIDQ0LjI3MzggVGoKLS0zODYgVEptCi0oY29tcGlsZWQpIDM3LjA4MDggVGoKLS0zODYgVEptCi0ob24pIDkuOTYyNiBUagotLTM4NiBUSm0KLSh5b3VyKSAxOC4yNjE0IFRqCi0tMzg1IFRKbQotKHBsYXRmb3JtKSAzNC4zMTEyIFRqCi0tMzg2IFRKbQotKC0tKSA2LjYzNTA5IFRqCi0tMzg2IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zODYgVEptCi0obWFqb3IpIDIzLjI0MjcgVGoKLS0zODUgVEptCi0oY29uXDAwMmd1cmF0aW9uKSA1My4xMzA1IFRqCi0tMzg2IFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi01NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0xMDggMjQ4LjQwNCBUZAotKFNwZWNpXDAwMmNhbGx5KSA0Ny4wNDM0IFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tNDgxIFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tNDM1IFRKbQotKG1lYW5zKSAyNS40NTQ0IFRqCi0tNDM1IFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLVsxIDAgMCAxIDIyMC42MTQgMjQ4LjQwNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMjAuNjE0IC0yNDguNDA0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjAuNjE0IDI0OC40MDQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oc2l6ZW9mXChjaGFyXCkpIDcxLjczMDcgVGoKLVsxIDAgMCAxIDI5Mi4zNDUgMjQ4LjQwNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yOTIuMzQ1IC0yNDguNDA0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTIuMzQ1IDI0OC40MDQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMjk5LjYyOCAyNDguNDA0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5OS42MjggLTI0OC40MDRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI5OS42MjggMjQ4LjQwNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShzaXplb2ZcKHNob3J0XCkpIDc3LjcwODMgVGoKLVsxIDAgMCAxIDM3Ny4zMzcgMjQ4LjQwNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNzcuMzM3IC0yNDguNDA0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zODEuNjY5IDI0OC40MDQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDQwMC4zODggMjQ4LjQwNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MDAuMzg4IC0yNDguNDA0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MDAuMzg4IDI0OC40MDQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oc2l6ZW9mXChpbnRcKSkgNjUuNzUzMiBUagotWzEgMCAwIDEgNDY2LjE0MSAyNDguNDA0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2Ni4xNDEgLTI0OC40MDRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ3MC40NzQgMjQ4LjQwNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhcmUpIDEyLjE2NDMgVGoKLS00MzUgVEptCi0obm90KSAxMi43MzIyIFRqCi0tNDM1IFRKbQotKDEsKSA3LjQ3MTk1IFRqCi0tNDgxIFRKbQotKDIpIDQuOTgxMyBUagotLTQzNSBUSm0KLShhbmQpIDE0LjM4NiBUagotMTA4IDIzNi40NDkgVGQKLSg0KSA0Ljk4MTMgVGoKLS0zODkgVEptCi0ocmVzcGVjdGkpIDMwLjk4MzcgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWx5KSAxMi4xNzQzIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tNDI0IFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMzkwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMzg5IFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotLTM4OSBUSm0KLShiZS4pIDExLjg5NTMgVGoKLS0xNDU2IFRKbQotKE5vdGUpIDE5LjM2NzMgVGoKLS0zODkgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTM4OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zODkgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTM5MCBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0zODkgVEptCi0oc3RpbGwpIDE0Ljk1MzkgVGoKLS0zODkgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG9yaykgMTMuMjgwMSBUagotLTM4OSBUSm0KLShwcm9wZXJseSkgMzMuNzUzMyBUagotLTM5MCBUSm0KLShvbikgOS45NjI2IFRqCi0tMzg5IFRKbQotKDY0LWJpdCkgMjMuODAwNyBUagotLTM4OSBUSm0KLShwbGF0Zm9ybXMpIDM4LjE4NjYgVGoKLTEwOCAyMjQuNDkzIFRkCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0yOTIgVEptCi0oZm9sbG8pIDE4LjgxOTQgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjkyIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5MiBUSm0KLShMUDY0KSAyMS41ODkgVGoKLS0yOTIgVEptCi0ocHJvZ3JhbW1pbmcpIDU0LjIzNjQgVGoKLS0yOTMgVEptCi0obW9kZWwpIDI0LjkwNjUgVGoKLS0yOTIgVEptCi0oLS0pIDYuNjM1MDkgVGoKLS0yOTIgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTI5MiBUSm0KLShpcywpIDkuMTM1NyBUagotLTMwMyBUSm0KLSh3aGVyZSkgMjQuMzM4NiBUagotWzEgMCAwIDEgMzU1LjI3OSAyMjQuNDkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM1NS4yNzkgLTIyNC40OTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM1NS4yNzkgMjI0LjQ5MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShzaXplb2ZcKGxvbmdcKSkgNzEuNzMwNyBUagotWzEgMCAwIDEgNDI3LjAxIDIyNC40OTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDI3LjAxIC0yMjQuNDkzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MjkuOTIgMjI0LjQ5MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNDQ3LjIxNyAyMjQuNDkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0Ny4yMTcgLTIyNC40OTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ0Ny4yMTcgMjI0LjQ5MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShzaXplb2ZcKHZvaWQpIDY1Ljc1MzIgVGoKLTUxMi45NyAyMjIuNzUgVGQKLSgqKSA1Ljk3NzU2IFRqCi01MTguOTQ4IDIyNC40OTMgVGQKLShcKSkgNS45Nzc1NiBUagotWzEgMCAwIDEgNTI0LjkyNSAyMjQuNDkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUyNC45MjUgLTIyNC40OTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUyNy44MzYgMjI0LjQ5MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhcmUpIDEyLjE2NDMgVGoKLTEwOCAyMTIuNTM4IFRkCi0oOC4pIDcuNDcxOTUgVGoKLS02MjAgVEptCi0oVW5kZXIpIDI0Ljg5NjUgVGoKLS0yNTAgVEptCi0oTFA2NCwpIDI0LjA3OTYgVGoKLVsxIDAgMCAxIDE3NS42MDYgMjEyLjUzOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzUuNjA2IC0yMTIuNTM4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzUuNjA2IDIxMi41MzggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oc2l6ZW9mXChpbnRcKSkgNjUuNzUzMiBUagotWzEgMCAwIDEgMjQxLjM2IDIxMi41MzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjQxLjM2IC0yMTIuNTM4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNDMuODUgMjEyLjUzOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpcykgNi42NDUwNSBUagotLTI1MCBUSm0KLShzdGlsbCkgMTQuOTUzOSBUagotLTI1MCBUSm0KLSg0LCkgNy40NzE5NSBUagotLTI1MCBUSm0KLShzbykgOC44NTY3NSBUagotWzEgMCAwIDEgMjkxLjc0IDIxMi41MzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjkxLjc0IC0yMTIuNTM4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTEuNzQgMjEyLjUzOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShsaWJiemlwMikgNDcuODIwNSBUagotWzEgMCAwIDEgMzM5LjU2IDIxMi41MzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzM5LjU2IC0yMTIuNTM4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMzkuNTYgMjEyLjUzOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMjUwIFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKGRvZXNuJykgMjYuNTYwMyBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMjUwIFRKbQotKHVzZSkgMTMuMjgwMSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLVsxIDAgMCAxIDQzMy40NTggMjEyLjUzOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MzMuNDU4IC0yMTIuNTM4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MzMuNDU4IDIxMi41MzggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obG9uZykgMjMuOTEwMiBUagotWzEgMCAwIDEgNDU3LjM2OCAyMTIuNTM4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ1Ny4zNjggLTIxMi41MzhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ1OS44NTkgMjEyLjUzOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0eXBlLCkgMTkuNjQ2MiBUagotLTI1MCBUSm0KLShpcykgNi42NDUwNSBUagotLTI1MCBUSm0KLShPSy4pIDE2Ljg3NjYgVGoKLVsxIDAgMCAxIDcyIDIxMC4zODFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zLjc2NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc0MzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTE5Ni44NzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE4Ny4wNzQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfU0VRVUVOQ0VfRVJST1IpIDEwMS42MTkgVGoKLVsxIDAgMCAxIDE3My42MTkgMTg3LjA3NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEwNC4xMSAtMS4zMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTg1Ljc2NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA4IDE3NS4xMTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oV2hlbikgMjMuNzkwNyBUagotLTI5MSBUSm0KLSh1c2luZykgMjEuNTg5IFRqCi0tMjkwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5MSBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMzAwIFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMjkxIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjkwIFRKbQotKGltcG9ydGFudCkgMzguNzQ0NiBUagotLTI5MSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjkwIFRKbQotKGNhbGwpIDE0LjM4NiBUagotLTI5MSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yOTAgVEptCi0oZnVuY3Rpb25zKSAzNy4wODA4IFRqCi0tMjkxIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yOTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjkxIFRKbQotKGNvcnJlY3QpIDI3LjY1NjIgVGoKLS0yOTAgVEptCi0oc2VxdWVuY2UpIDM2LjUxMjkgVGoKLS0yOTEgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yOTAgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTI5MSBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjkwIFRKbQotKHN0cnVjdHVyZXMpIDM4LjczNDYgVGoKLTEwOCAxNjMuMTYzIFRkCi0oXChiKSA4LjI5ODg1IFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVycykgMTQuOTMzOSBUagotLTIwNiBUSm0KLShldGNcKSkgMTQuOTMzOSBUagotLTIwNSBUSm0KLShpbikgNy43NTA5IFRqCi0tMjA2IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIwNSBUSm0KLShjb3JyZWN0KSAyNy42NTYyIFRqCi0tMjA2IFRKbQotKHN0YXRlcy4pIDI0LjYyNzUgVGoKLVsxIDAgMCAxIDIzOS40MDkgMTYzLjE2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzkuNDA5IC0xNjMuMTYzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzkuNDA5IDE2My4xNjMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDI4Ny4yMyAxNjMuMTYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI4Ny4yMyAtMTYzLjE2M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjg5LjI3OCAxNjMuMTYzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGNoZWNrcykgMjcuMTA4MiBUagotLTIwNiBUSm0KLShhcykgOC4yOTg4NSBUagotLTIwNSBUSm0KLShtdWNoKSAyMi4xMzY5IFRqCi0tMjA2IFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjA1IFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMjA2IFRKbQotKGNhbikgMTMuODI4MSBUagotLTIwNiBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjA1IFRKbQotKGVuc3VyZSkgMjYuMDAyNCBUagotLTIwNiBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yMDYgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yMDUgVEptCi0oaGFwcGVuaW5nLCkgNDMuOTk0OCBUagotLTIxNSBUSm0KLShhbmQpIDE0LjM4NiBUagotLTIwNSBUSm0KLShyZXR1cm5zKSAyNy42NjYxIFRqCi1bMSAwIDAgMSAxMDggMTUxLjIwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMDggLTE1MS4yMDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCAxNTEuMjA4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1NFUVVFTkNFX0VSUk9SKSAxMDEuNjE5IFRqCi1bMSAwIDAgMSAyMDkuNjE5IDE1MS4yMDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjA5LjYxOSAtMTUxLjIwOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjEzLjI3IDE1MS4yMDggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaWYpIDYuMDg3MTUgVGoKLS0zNjcgVEptCi0obm90LikgMTUuMjIyOSBUagotLTY1OSBUSm0KLShDb2RlKSAyMS4wMzEgVGoKLS0zNjcgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0zNjcgVEptCi0oY29tcGxpZXMpIDM1Ljk3NDkgVGoKLS0zNjYgVEptCi0ocHJlY2lzZWx5KSAzNS45NjUgVGoKLS0zNjcgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTM2NiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNjcgVEptCi0oZnVuY3Rpb24pIDMzLjIwNTMgVGoKLS0zNjYgVEptCi0oc2VtYW50aWNzLCkgNDEuNzgzMSBUagotLTM5NiBUSm0KLShhcykgOC4yOTg4NSBUagotLTM2NyBUSm0KLShkZXRhaWxlZCkgMzEuNTQxNiBUagotMTA4IDEzOS4yNTMgVGQKLShiZWxvKSAxNy4xNTU2IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTI1MCBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yNTAgVEptCi0obmUpIDkuNDA0NjkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXIpIDcuNzQwOTQgVGoKLS0yNTAgVEptCi0ocmVjZWkpIDE5LjM1NzMgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI1MCBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlOykgMTkuMzY3MyBUagotLTI1MCBUSm0KLShzdWNoKSAxOC4yNjE0IFRqCi0tMjUwIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKGUpIDQuNDIzMzkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW50KSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGRlbm90ZXMpIDMwLjQzNTcgVGoKLS0yNTAgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1Z2d5KSAxOS45MjUyIFRqCi0tMjUwIFRKbQotKGNvZGUpIDE4LjgwOTQgVGoKLS0yNTAgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0yNTAgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi00MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVzdGlnKSAxOC44MTk0IFRqCi01IFRKbQotKGF0ZS4pIDE0LjEwNyBUagotWzEgMCAwIDEgNzIgMTM3LjA5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTMuNzY1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuNzQzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTIzLjU4N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTEzLjc4OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9QQVJBTV9FUlJPUikgODMuNjg1OCBUagotWzEgMCAwIDEgMTU1LjY4NiAxMTMuNzg4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODYuMTc2OCAtMS4zMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTEyLjQ3OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA4IDEwMS44MzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUmV0dXJuZWQpIDM2LjUyMjkgVGoKLS00MzQgVEptCi0od2hlbikgMjEuNTc5IFRqCi0tNDM0IFRKbQotKGEpIDQuNDIzMzkgVGoKLS00MzQgVEptCi0ocGFyYW1ldGVyKSAzOS44MzA1IFRqCi0tNDM0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS00MzQgVEptCi0oYSkgNC40MjMzOSBUagotLTQzMyBUSm0KLShmdW5jdGlvbikgMzMuMjA1MyBUagotLTQzNCBUSm0KLShjYWxsKSAxNC4zODYgVGoKLS00MzQgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS00MzQgVEptCi0ob3V0KSAxMi43MzIyIFRqCi0tNDM0IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tNDM0IFRKbQotKHJhbmdlKSAyMi4xMjY5IFRqCi0tNDM0IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tNDM0IFRKbQotKG90aGVyd2lzZSkgMzguNzM0NiBUagotLTQzNCBUSm0KLShtYW5pZmVzdGx5KSA0Mi4wNjIxIFRqCi0tNDM0IFRKbQotKGluY29ycmVjdC4pIDM3Ljg5NzcgVGoKLS0xNzIzIFRKbQotKEFzKSAxMS4wNjg0IFRqCi0xMDggODkuODc3OCBUZAotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDEzMS42NDQgODkuODc3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMzEuNjQ0IC04OS44Nzc4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMzEuNjQ0IDg5Ljg3NzggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfU0VRVUVOQ0VfRVJST1IpIDEwMS42MTkgVGoKLVsxIDAgMCAxIDIzMy4yNjMgODkuODc3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzMuMjYzIC04OS44Nzc4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzMuMjYzIDg5Ljg3NzggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTU5NSBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS01OTYgVEptCi0oZGVub3RlcykgMzAuNDM1NyBUagotLTU5NSBUSm0KLShhKSA0LjQyMzM5IFRqCi0tNTk1IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWcpIDkuOTYyNiBUagotLTU5NiBUSm0KLShpbikgNy43NTA5IFRqCi0tNTk1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTU5NSBUSm0KLShjbGllbnQpIDIyLjEzNjkgVGoKLS01OTUgVEptCi0oY29kZS4pIDIxLjMgVGoKLS0yNjkyIFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTU5NiBUSm0KLShkaXN0aW5jdGlvbikgNDIuMDcyMSBUagotLTU5NSBUSm0KLShiZXR3ZWVuKSAzMy4xOTU0IFRqCi1bMSAwIDAgMSAxMDggNzcuOTIyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMDggLTc3LjkyMjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA3Ny45MjI3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1BBUkFNX0VSUk9SKSA4My42ODU4IFRqCi1bMSAwIDAgMSAxOTEuNjg2IDc3LjkyMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTkxLjY4NiAtNzcuOTIyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTk0LjE3NyA3Ny45MjI3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAyMTEuMDUzIDc3LjkyMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjExLjA1MyAtNzcuOTIyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjExLjA1MyA3Ny45MjI3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1NFUVVFTkNFX0VSUk9SKSAxMDEuNjE5IFRqCi1bMSAwIDAgMSAzMTIuNjcyIDc3LjkyMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzEyLjY3MiAtNzcuOTIyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzE1LjE2MyA3Ny45MjI3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oYml0KSAxMC41MjA1IFRqCi0tMjUwIFRKbQotKGhhenkpIDE4LjgwOTQgVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yNTAgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1dCkgNy43NTA5IFRqCi0tMjUwIFRKbQotKHN0aWxsKSAxNC45NTM5IFRqCi0tMjUwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvcnRoKSAxNi4wNDk3IFRqCi0tMjUwIFRKbQotKG1ha2luZy4pIDMyLjM3ODUgVGoKLVsxIDAgMCAxIDcyIDc1Ljc2NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zLjc2NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yMS4xNDgyXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuOTUxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC45NTE0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDEwKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDE0IDE0Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA3Ni40OTc5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjU2OSAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE5LjA2NyA3NDkuMjQ1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFByb2dyYW1taW5nKSA1NC43OTQzIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ5Ni41NTYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTYuNTU2IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTYuNTU2IDc0OS4yNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDU0NC4zNzYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguMzA1IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMjEuNTU0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNzIwXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA3MTAuMDM3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX01FTV9FUlJPUikgNzEuNzMwNyBUagotWzEgMCAwIDEgMTQzLjczMSA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzQuMjIxNyAtMS4zMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNzA4LjcyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA4IDY5OC4wODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUmV0dXJuZWQpIDM2LjUyMjkgVGoKLS0yMjggVEptCi0od2hlbikgMjEuNTc5IFRqCi0tMjI3IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yMjggVEptCi0ocmVxdWVzdCkgMjguNzcyIFRqCi0tMjI3IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yMjggVEptCi0oYWxsb2NhdGUpIDMwLjk4MzcgVGoKLS0yMjggVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMjI3IFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFpbGVkLikgMjEuODU3OSBUagotLTYwNSBUSm0KLShOb3RlKSAxOS4zNjczIFRqCi0tMjI4IFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0yMjggVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjI3IFRKbQotKHF1YW50aXR5KSAzMi42NTc0IFRqCi0tMjI4IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjI3IFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotLTIyOCBUSm0KLShuZWVkZWQpIDI4LjIxNDEgVGoKLS0yMjggVEptCi0odG8pIDcuNzUwOSBUagotLTIyNyBUSm0KLShkZWNvbXByZXNzKSA0Ny4wMzM0IFRqCi0xMDggNjg2LjEyNyBUZAotKGEpIDQuNDIzMzkgVGoKLS0zNTEgVEptCi0oc3RyZWFtKSAyNi41NjAzIFRqCi0tMzUyIFRKbQotKGNhbm5vdCkgMjYuNTYwMyBUagotLTM1MSBUSm0KLShiZSkgOS40MDQ2OSBUagotLTM1MiBUSm0KLShkZXRlcm1pbmVkKSA0NC44MjE3IFRqCi0tMzUxIFRKbQotKHVudGlsKSAxOC4yNzE0IFRqCi0tMzUyIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM1MSBUSm0KLShzdHJlYW0nKSAyOS44Nzc4IFRqCi01NSBUSm0KLShzKSAzLjg3NTQ1IFRqCi0tMzUxIFRKbQotKGhlYWRlcikgMjYuNTUwMyBUagotLTM1MiBUSm0KLShoYXMpIDEzLjI4MDEgVGoKLS0zNTEgVEptCi0oYmVlbikgMTguODA5NCBUagotLTM1MiBUSm0KLShyZWFkLikgMTkuNjM2MyBUagotLTEyMjggVEptCi0oU28pIDEwLjUyMDUgVGoKLVsxIDAgMCAxIDQyNi40NzEgNjg2LjEyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MjYuNDcxIC02ODYuMTI3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MjYuNDcxIDY4Ni4xMjcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzcykgOTUuNjQxIFRqCi1bMSAwIDAgMSA1MjIuMTEzIDY4Ni4xMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTIyLjExMyAtNjg2LjEyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTI1LjYxNCA2ODYuMTI3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAxMDggNjc0LjE3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMDggLTY3NC4xNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA2NzQuMTcyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWQpIDU5Ljc3NTYgVGoKLVsxIDAgMCAxIDE2Ny43NzYgNjc0LjE3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjcuNzc2IC02NzQuMTcyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzIuMTMgNjc0LjE3MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShtYXkpIDE3LjE1NTYgVGoKLS00MzcgVEptCi0ocmV0dXJuKSAyMy43OTA3IFRqCi1bMSAwIDAgMSAyMjEuNzg0IDY3NC4xNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjIxLjc4NCAtNjc0LjE3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjIxLjc4NCA2NzQuMTcyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX01FTV9FUlJPUikgNzEuNzMwNyBUagotWzEgMCAwIDEgMjkzLjUxNSA2NzQuMTcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5My41MTUgLTY3NC4xNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI5Ny44NjcgNjc0LjE3MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShlKSA0LjQyMzM5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVuKSA5LjQwNDY5IFRqCi0tNDM3IFRKbQotKHRob3VnaCkgMjcuNjc2MSBUagotLTQzNyBUSm0KLShzb21lKSAyMS4wMzEgVGoKLS00MzcgVEptCi0ob2YpIDguMjk4ODUgVGoKLS00MzcgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tNDM3IFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS00MzcgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTQzNyBUSm0KLShoYXMpIDEzLjI4MDEgVGoKLS00MzcgVEptCi0oYmVlbikgMTguODA5NCBUagotLTQzNyBUSm0KLShyZWFkLikgMTkuNjM2MyBUagotMTA4IDY2Mi4yMTcgVGQKLShUaGUpIDE1LjQ5MTggVGoKLS00NzkgVEptCi0oc2FtZSkgMjAuNDczMSBUagotLTQ3OCBUSm0KLShpcykgNi42NDUwNSBUagotLTQ3OSBUSm0KLShub3QpIDEyLjczMjIgVGoKLS00NzggVEptCi0odHJ1ZSkgMTUuNDkxOCBUagotLTQ3OSBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS00NzkgVEptCi0oY29tcHJlc3Npb247KSA1My4xMzA1IFRqCi0tNTkzIFRKbQotKG9uY2UpIDE4LjgwOTQgVGoKLVsxIDAgMCAxIDMwMS42NzUgNjYyLjIxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDEuNjc1IC02NjIuMjE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMDEuNjc1IDY2Mi4yMTcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3NJbml0KSAxMDcuNTk2IFRqCi1bMSAwIDAgMSA0MDkuMjcxIDY2Mi4yMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDA5LjI3MSAtNjYyLjIxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE0LjA0IDY2Mi4yMTcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0ob3IpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDQyNy4xMDcgNjYyLjIxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MjcuMTA3IC02NjIuMjE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MjcuMTA3IDY2Mi4yMTcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6V3JpdGVPcGVuKSA4OS42NjM0IFRqCi1bMSAwIDAgMSA1MTYuNzcxIDY2Mi4yMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTE2Ljc3MSAtNjYyLjIxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTIxLjUzOSA2NjIuMjE3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGhhKSA5LjQwNDY5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLTEwOCA2NTAuMjYyIFRkCi0oc3VjY2Vzc2Z1bGx5KSA0OC42OTcyIFRqCi0tMjUwIFRKbQotKGNvbXBsZXRlZCwpIDQzLjk5NDggVGoKLVsxIDAgMCAxIDIwNS42NzIgNjUwLjI2MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDUuNjcyIC02NTAuMjYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDUuNjcyIDY1MC4yNjEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfTUVNX0VSUk9SKSA3MS43MzA3IFRqCi1bMSAwIDAgMSAyNzcuNDAzIDY1MC4yNjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc3LjQwMyAtNjUwLjI2MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjc5Ljg5NCA2NTAuMjYxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGNhbm5vdCkgMjYuNTYwMyBUagotLTI1MCBUSm0KLShvY2N1cikgMjIuMTI2OSBUagotNTUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgNjQ4LjEwNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTMuOTg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02MzQuMTU3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2MjQuMzU5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX0RBVEFfRVJST1IpIDc3LjcwODMgVGoKLVsxIDAgMCAxIDE0OS43MDkgNjI0LjM1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTgwLjE5OTMgLTEuMzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYyMy4wNDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA2MTIuNDA0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFJldHVybmVkKSAzNi41MjI5IFRqCi0tMjY2IFRKbQotKHdoZW4pIDIxLjU3OSBUagotLTI2NSBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjY2IFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNjUgVEptCi0oaW50ZSkgMTQuOTQzOSBUagotMTUgVEptCi0oZ3JpdHkpIDE4LjgxOTQgVGoKLS0yNjYgVEptCi0oZXJyb3IpIDE5LjM1NzMgVGoKLS0yNjYgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNjUgVEptCi0oZGV0ZWN0ZWQpIDMzLjE5NTQgVGoKLS0yNjYgVEptCi0oZHVyaW5nKSAyNi4wMTIzIFRqCi0tMjY1IFRKbQotKGRlY29tcHJlc3Npb24uKSA2Mi4yNTYzIFRqCi0tNzE0IFRKbQotKE1vc3QpIDIwLjQ4MzEgVGoKLS0yNjYgVEptCi0oaW1wb3J0YW50bCkgNDEuNTE0MiBUagotMSBUSm0KLSh5KSA0Ljk4MTMgVGoKLTY0IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yNjkgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjY2IFRKbQotKG1lYW5zKSAyNS40NTQ0IFRqCi0tMjY1IFRKbQotKHdoZW4pIDIxLjU3OSBUagotMTA4IDYwMC40NDggVGQKLShzdG9yZWQpIDI0LjM0ODYgVGoKLS0yMjIgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yMjMgVEptCi0oY29tcHV0ZWQpIDM5LjI5MjUgVGoKLS0yMjIgVEptCi0oQ1JDcykgMjMuODEwNiBUagotLTIyMiBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yMjIgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjIzIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yMjIgVEptCi0oZG8pIDkuOTYyNiBUagotLTIyMiBUSm0KLShub3QpIDEyLjczMjIgVGoKLS0yMjIgVEptCi0obWF0Y2guKSAyNi44MzkyIFRqCi0tNjAyIFRKbQotKFRoaXMpIDE3LjcxMzUgVGoKLS0yMjIgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlKSAxNi41OTc3IFRqCi0tMjIyIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjIzIFRKbQotKGFsc28pIDE2LjA0OTcgVGoKLS0yMjIgVEptCi0ocmV0dXJuZWQpIDMzLjE5NTQgVGoKLS0yMjIgVEptCi0odXBvbikgMTkuOTI1MiBUagotLTIyMiBUSm0KLShkZXRlY3Rpb24pIDM2LjUyMjkgVGoKLS0yMjMgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yMjIgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTIyMiBUSm0KLShvdGhlcikgMjAuNDczMSBUagotMTA4IDU4OC40OTMgVGQKLShhbm9tYWx5KSAzNC4zMTEyIFRqCi0tMjUwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yNTAgVEptCi0oZGF0YS4pIDE5LjA4ODMgVGoKLVsxIDAgMCAxIDcyIDU4Ni4zMzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zLjk4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTcyLjM4OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTYyLjU5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX0RBVEFfRVJST1JfTUFHSUMpIDExMy41NzQgVGoKLVsxIDAgMCAxIDE4NS41NzQgNTYyLjU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE2LjA2NSAtMS4zMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTYxLjI4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDggNTUwLjYzNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBcykgMTEuMDY4NCBUagotLTMwNiBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMzA2IFRKbQotKHNwZWNpYWwpIDI3LjY2NjEgVGoKLS0zMDYgVEptCi0oY2FzZSkgMTcuMTQ1NiBUagotLTMwNyBUSm0KLShvZikgOC4yOTg4NSBUagotWzEgMCAwIDEgMTkxLjg1MiA1NTAuNjM1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5MS44NTIgLTU1MC42MzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5MS44NTIgNTUwLjYzNSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9EQVRBX0VSUk9SKSA3Ny43MDgzIFRqCi1bMSAwIDAgMSAyNjkuNTYxIDU1MC42MzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjY5LjU2MSAtNTUwLjYzNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjY5LjU2MSA1NTAuNjM1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0zMDYgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0zMDYgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0zMDYgVEptCi0oc29tZXRpbWVzKSA0Mi42MiBUagotLTMwNyBUSm0KLSh1c2VmKSAxNi41OTc3IFRqCi0xIFRKbQotKHVsKSA3Ljc1MDkgVGoKLS0zMDcgVEptCi0odG8pIDcuNzUwOSBUagotLTMwNiBUSm0KLShrbm8pIDE0Ljk0MzkgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMzA2IFRKbQotKHdoZW4pIDIxLjU3OSBUagotLTMwNiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDYgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTMwNiBUSm0KLShzdHJlYW0pIDI2LjU2MDMgVGoKLS0zMDYgVEptCi0oZG9lcykgMTguMjYxNCBUagotMTA4IDUzOC42OCBUZAotKG5vdCkgMTIuNzMyMiBUagotLTI1MCBUSm0KLShzdGFydCkgMTcuMTU1NiBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShjb3JyZWN0KSAyNy42NTYyIFRqCi0tMjUwIFRKbQotKG1hZ2ljKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKGJ5dGVzKSAyMS4wMzEgVGoKLS0yNTAgVEptCi0oXCgpIDMuMzE3NTUgVGoKLVsxIDAgMCAxIDI2MS41NjIgNTM4LjY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2MS41NjIgLTUzOC42OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjYxLjU2MiA1MzguNjggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oJ0InKSAxNy45MzI3IFRqCi0tNjAwIFRKbQotKCdaJykgMTcuOTMyNyBUagotLTYwMCBUSm0KLSgnaCcpIDE3LjkzMjcgVGoKLVsxIDAgMCAxIDMyNy4zMTYgNTM4LjY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMyNy4zMTYgLTUzOC42OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzI3LjMxNiA1MzguNjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXCkuKSA1LjgwODIgVGoKLVsxIDAgMCAxIDcyIDUzNi41MjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zLjk4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTIyLjU3Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTEyLjc3NyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9JT19FUlJPUikgNjUuNzUzMiBUagotWzEgMCAwIDEgMTM3Ljc1MyA1MTIuNzc3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNjguMjQ0MSAtMS4zMTAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01MTEuNDY3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDggNTAwLjgyMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShSZXR1cm5lZCkgMzYuNTIyOSBUagotLTIzMyBUSm0KLShieSkgOS45NjI2IFRqCi1bMSAwIDAgMSAxNTkuMTIzIDUwMC44MjJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU5LjEyMyAtNTAwLjgyMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTU5LjEyMyA1MDAuODIyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWQpIDU5Ljc3NTYgVGoKLVsxIDAgMCAxIDIxOC44OTkgNTAwLjgyMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTguODk5IC01MDAuODIyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjEuMjE4IDUwMC44MjIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDIzNy45MjMgNTAwLjgyMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzcuOTIzIC01MDAuODIyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzcuOTIzIDUwMC44MjIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6V3JpdGUpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDMwMy42NzYgNTAwLjgyMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDMuNjc2IC01MDAuODIyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMDUuOTk1IDUwMC44MjIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0od2hlbikgMjEuNTc5IFRqCi0tMjMzIFRKbQotKHRoZXJlKSAxOS45MTUyIFRqCi0tMjMyIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjMzIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tMjMzIFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi0tMjMzIFRKbQotKHJlYWRpbmcpIDI5Ljg3NzggVGoKLS0yMzIgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yMzMgVEptCi0od3JpdGluZykgMjguNzgyIFRqCi0tMjMzIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yMzMgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjMyIFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLTEwOCA0ODguODY3IFRkCi0oXDAwMmxlLCkgMTUuMjIyOSBUagotLTM4NCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTM1NyBUSm0KLShieSkgOS45NjI2IFRqCi1bMSAwIDAgMSAxNTguNTExIDQ4OC44NjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU4LjUxMSAtNDg4Ljg2N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTU4LjUxMSA0ODguODY3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRPcGVuKSA4My42ODU4IFRqCi1bMSAwIDAgMSAyNDIuMTk3IDQ4OC44NjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjQyLjE5NyAtNDg4Ljg2N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjQ1Ljc1NSA0ODguODY3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAyNjMuNjk4IDQ4OC44NjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjYzLjY5OCAtNDg4Ljg2N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjYzLjY5OCA0ODguODY3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ieldyaXRlT3BlbikgODkuNjYzNCBUagotWzEgMCAwIDEgMzUzLjM2MiA0ODguODY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM1My4zNjIgLTQ4OC44NjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM1Ni45MiA0ODguODY3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGZvcikgMTEuNjE2NCBUagotLTM1NyBUSm0KLShhdHRlbXB0cykgMzMuNzYzMyBUagotLTM1NyBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzU3IFRKbQotKHVzZSkgMTMuMjgwMSBUagotLTM1NyBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMzU3IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTM1NyBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0zNTggVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0zNTcgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzU3IFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi0xMDggNDc2LjkxMiBUZAotKGluZGljYXRvcikgMzUuNDE3IFRqCi0tMjYwIFRKbQotKFwodml6LCkgMTcuOTgyNSBUagotWzEgMCAwIDEgMTY2LjYwMyA0NzYuOTEyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2Ni42MDMgLTQ3Ni45MTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE2Ni42MDMgNDc2LjkxMiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmZXJyb3JcKGZcKSkgNTMuNzk4IFRqCi1bMSAwIDAgMSAyMjAuNDAxIDQ3Ni45MTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjIwLjQwMSAtNDc2LjkxMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjIwLjQwMSA0NzYuOTEyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwpKSAzLjMxNzU1IFRqCi0tMjYwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjYwIFRKbQotKHNldC4pIDEzLjU1OTEgVGoKLS02NzkgVEptCi0oT24pIDEyLjE3NDMgVGoKLS0yNjAgVEptCi0ocmVjZWlwdCkgMjcuMTA4MiBUagotLTI2MCBUSm0KLShvZikgOC4yOTg4NSBUagotWzEgMCAwIDEgMzExLjIyMyA0NzYuOTEyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMxMS4yMjMgLTQ3Ni45MTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMxMS4yMjMgNDc2LjkxMiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9JT19FUlJPUikgNjUuNzUzMiBUagotWzEgMCAwIDEgMzc2Ljk3NiA0NzYuOTEyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM3Ni45NzYgLTQ3Ni45MTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM3Ni45NzYgNDc2LjkxMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMjYwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI2MCBUSm0KLShjYWxsZXIpIDIyLjEyNjkgVGoKLS0yNjAgVEptCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMjYwIFRKbQotKGNvbnN1bHQpIDI4Ljc4MiBUagotWzEgMCAwIDEgNDgyLjA2OCA0NzYuOTEyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ4Mi4wNjggLTQ3Ni45MTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ4Mi4wNjggNDc2LjkxMiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShlcnJubykgMjkuODg3OCBUagotWzEgMCAwIDEgNTExLjk1NiA0NzYuOTEyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUxMS45NTYgLTQ3Ni45MTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUxNC41NDYgNDc2LjkxMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQvb3IpIDI1LjQ1NDQgVGoKLVsxIDAgMCAxIDEwOCA0NjQuOTU3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEwOCAtNDY0Ljk1N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA4IDQ2NC45NTcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0ocGVycm9yKSAzNS44NjU0IFRqCi1bMSAwIDAgMSAxNDMuODY1IDQ2NC45NTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQzLjg2NSAtNDY0Ljk1N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQ2LjM1NiA0NjQuOTU3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oYWNxdWlyZSkgMjkuMzE5OSBUagotLTI1MCBUSm0KLShvcGVyYXRpbmctc3lzdGVtKSA2OC42MjI0IFRqCi0tMjUwIFRKbQotKHNwZWNpXDAwMmMpIDMwLjQzNTcgVGoKLS0yNTAgVEptCi0oaW5mb3JtYXRpb24pIDQ3LjA0MzQgVGoKLS0yNTAgVEptCi0oYWJvdXQpIDIyLjEzNjkgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHByb2JsZW0uKSAzNS42OTYgVGoKLVsxIDAgMCAxIDcyIDQ2Mi44XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMy45ODQ5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00NDguODUyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0MzkuMDU0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1VORVhQRUNURURfRU9GKSAxMDEuNjE5IFRqCi1bMSAwIDAgMSAxNzMuNjE5IDQzOS4wNTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMDQuMTEgLTEuMzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQzNy43NDRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwOCA0MjcuMDk5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFJldHVybmVkKSAzNi41MjI5IFRqCi0tMjUwIFRKbQotKGJ5KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDE1OS40NjcgNDI3LjA5OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTkuNDY3IC00MjcuMDk5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTkuNDY3IDQyNy4wOTkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6UmVhZCkgNTkuNzc1NiBUagotWzEgMCAwIDEgMjE5LjI0MiA0MjcuMDk5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxOS4yNDIgLTQyNy4wOTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIyMS43MzMgNDI3LjA5OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aGVuKSAyMS41NzkgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yNTAgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMjUwIFRKbQotKFwwMDJuaXNoZXMpIDMwLjQ0NTcgVGoKLS0yNTAgVEptCi0oYmVmb3JlKSAyNS40NDQ1IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShsb2dpY2FsKSAyNy4xMTgyIFRqCi0tMjUwIFRKbQotKGVuZCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHN0cmVhbSkgMjYuNTYwMyBUagotLTI1MCBUSm0KLShpcykgNi42NDUwNSBUagotLTI1MCBUSm0KLShkZXRlY3RlZC4pIDM1LjY4NiBUagotWzEgMCAwIDEgNzIgNDI0Ljk0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTMuOTg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00MTAuOTk0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0MDEuMTk2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX09VVEJVRkZfRlVMTCkgODkuNjYzNCBUagotWzEgMCAwIDEgMTYxLjY2NCA0MDEuMTk2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTIuMTU0NCAtMS4zMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzk5Ljg4Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA4IDM4OS4yNDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUmV0dXJuZWQpIDM2LjUyMjkgVGoKLS0yNTggVEptCi0oYnkpIDkuOTYyNiBUagotWzEgMCAwIDEgMTU5LjYzMiAzODkuMjQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1OS42MzIgLTM4OS4yNDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1OS42MzIgMzg5LjI0MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3MpIDE0My40NjEgVGoKLVsxIDAgMCAxIDMwMy4wOTQgMzg5LjI0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDMuMDk0IC0zODkuMjQxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMDUuNjY4IDM4OS4yNDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDMyMi42MjcgMzg5LjI0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMjIuNjI3IC0zODkuMjQxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMjIuNjI3IDM4OS4yNDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3MpIDE1NS40MTcgVGoKLVsxIDAgMCAxIDQ3OC4wNDQgMzg5LjI0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzguMDQ0IC0zODkuMjQxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00ODAuNjE4IDM4OS4yNDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odG8pIDcuNzUwOSBUagotLTI1OCBUSm0KLShpbmRpY2F0ZSkgMzEuNTQxNiBUagotLTI1OSBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0xMDggMzc3LjI4NiBUZAotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS0yNTAgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI1MCBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMjUwIFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTI1MCBUSm0KLShcMDAydCkgOC4zMDg4MSBUagotLTI1MCBUSm0KLShpbnRvKSAxNS41MDE4IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS0yNTAgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVyKSAxMS4wNTg1IFRqCi0tMjUwIFRKbQotKHBybykgMTMuMjgwMSBUagotMTUgVEptCi0odmlkZWQuKSAyNC42Mjc1IFRqCi1bMSAwIDAgMSA3MiAzNzUuMTI5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMy45ODVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM1MS4yMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDMyOC41ODUgVGQKLS9GMTIyXzAgMjAuNjU4NSBUZgotKDMuMy4pIDM0LjQ1ODQgVGoKLS0yNzggVEptCi0oTG8pIDI1LjI0NDcgVGoKLTE1IFRKbQotKHctbGUpIDQwLjE4MDggVGoKLTE1IFRKbQotKHZlbCkgMjguNzE1MyBUagotLTI3OCBUSm0KLShpbnRlcmZhY2UpIDg2LjEwNDYgVGoKLVsxIDAgMCAxIDcyIDMyOC4zMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTMxOC4zNjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI5Ny45NjQgVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKDMuMy4xLikgNDMuMDcyOSBUagotWzEgMCAwIDEgMTE5Ljg1OCAyOTcuOTY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS44NTggLTI5Ny45NjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExOS44NTggMjk3Ljk2NCBUZAotL0YzOTJfMCAxNy4yMTU0IFRmCi0oQloyX2J6Q29tcHJlc3NJbml0KSAxODUuOTI2IFRqCi1bMSAwIDAgMSAzMDUuNzg1IDI5Ny45NjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjMzLjc4NSAtMi4zMzI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMjQ0Ljc3OV0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDAuNTcyNiAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5My44NDEgLTUwLjg1MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNC40MTQgNTAuODUxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxMSkgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAxNSAxNQotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgLTguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNzYuNDk3OSAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0Mi41NjkgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxOS4wNjcgNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm9ncmFtbWluZykgNTQuNzk0MyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSA0OTYuNTU2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjU1NiAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDk2LjU1NiA3NDkuMjQ1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGxpYmJ6aXAyKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA1NDQuMzc2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc4LjMwNSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTUuMDM2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTI5Ni41MjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMjc0Ljk2OSByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDI3MS4zODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC03MTEuNjMxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA3MTEuNjMxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHR5cGVkZWYpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oc3RydWN0KSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKHspIDUuOTc3NTYgVGoKLTk4LjQ4NzkgNjk5LjY3NiBUZAotKGNoYXIpIDIzLjkxMDIgVGoKLTEyNi42NDIgNjk3LjkzMyBUZAotKCopIDUuOTc3NTYgVGoKLTEzMi42MiA2OTkuNjc2IFRkCi0obmV4dF9pbjspIDQ3LjgyMDUgVGoKLTk4LjQ4NzkgNjg3LjcyMSBUZAotKHVuc2lnbmVkKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShhdmFpbF9pbjspIDUzLjc5OCBUagotOTguNDg3OSA2NzUuNzY2IFRkCi0odW5zaWduZWQpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKHRvdGFsX2luX2xvMzI7KSA4My42ODU4IFRqCi05OC40ODc5IDY2My44MTEgVGQKLSh1bnNpZ25lZCkgNDcuODIwNSBUagotLTQyNiBUSm0KLShpbnQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0odG90YWxfaW5faGkzMjspIDgzLjY4NTggVGoKLTk4LjQ4NzkgNjM5LjkgVGQKLShjaGFyKSAyMy45MTAyIFRqCi0xMjYuNjQyIDYzOC4xNTcgVGQKLSgqKSA1Ljk3NzU2IFRqCi0xMzIuNjIgNjM5LjkgVGQKLShuZXh0X291dDspIDUzLjc5OCBUagotOTguNDg3OSA2MjcuOTQ1IFRkCi0odW5zaWduZWQpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGF2YWlsX291dDspIDU5Ljc3NTYgVGoKLTk4LjQ4NzkgNjE1Ljk5IFRkCi0odW5zaWduZWQpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKHRvdGFsX291dF9sbzMyOykgODkuNjYzNCBUagotOTguNDg3OSA2MDQuMDM1IFRkCi0odW5zaWduZWQpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKHRvdGFsX291dF9oaTMyOykgODkuNjYzNCBUagotOTguNDg3OSA1ODAuMTI1IFRkCi0odm9pZCkgMjMuOTEwMiBUagotMTI2LjY0MiA1NzguMzgxIFRkCi0oKikgNS45Nzc1NiBUagotMTMyLjYyIDU4MC4xMjUgVGQKLShzdGF0ZTspIDM1Ljg2NTQgVGoKLTk4LjQ4NzkgNTU2LjIxNCBUZAotKHZvaWQpIDIzLjkxMDIgVGoKLTEyNi42NDIgNTU0LjQ3MSBUZAotKCopIDUuOTc3NTYgVGoKLTEzMi42MiA1NTYuMjE0IFRkCi0oXCgpIDUuOTc3NTYgVGoKLTEzOC41OTcgNTU0LjQ3MSBUZAotKCopIDUuOTc3NTYgVGoKLTE0NC41NzUgNTU2LjIxNCBUZAotKGJ6YWxsb2NcKVwodm9pZCkgNzcuNzA4MyBUagotMjI2LjUyNyA1NTQuNDcxIFRkCi0oKikgNS45Nzc1NiBUagotMjMyLjUwNSA1NTYuMjE0IFRkCi0oLGludCxpbnRcKTspIDU5Ljc3NTYgVGoKLTk4LjQ4NzkgNTQ0LjI1OSBUZAotKHZvaWQpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLTEzMi42MiA1NDIuNTE2IFRkCi0oKikgNS45Nzc1NiBUagotMTM4LjU5NyA1NDQuMjU5IFRkCi0oYnpmcmVlXClcKHZvaWQpIDcxLjczMDcgVGoKLTIxNC41NzIgNTQyLjUxNiBUZAotKCopIDUuOTc3NTYgVGoKLTIyMC41NSA1NDQuMjU5IFRkCi0oLHZvaWQpIDI5Ljg4NzggVGoKLTI1NC42ODIgNTQyLjUxNiBUZAotKCopIDUuOTc3NTYgVGoKLTI2MC42NTkgNTQ0LjI1OSBUZAotKFwpOykgMTEuOTU1MSBUagotOTguNDg3OSA1MzIuMzA0IFRkCi0odm9pZCkgMjMuOTEwMiBUagotMTI2LjY0MiA1MzAuNTYgVGQKLSgqKSA1Ljk3NzU2IFRqCi0xMzIuNjIgNTMyLjMwNCBUZAotKG9wYXF1ZTspIDQxLjg0MjkgVGoKLTg5Ljk5OTkgNTIwLjM0OSBUZAotKH0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oYnpfc3RyZWFtOykgNTkuNzc1NiBUagotODkuOTk5OSA0OTYuNDM4IFRkCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKEJaMl9iekNvbXByZXNzSW5pdCkgMTA3LjU5NiBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShiel9zdHJlYW0pIDUzLjc5OCBUagotMjkyLjI4MSA0OTQuNjk1IFRkCi0oKikgNS45Nzc1NiBUagotMjk4LjI1OCA0OTYuNDM4IFRkCi0oc3RybSwpIDI5Ljg4NzggVGoKLTE5Ni4wOTkgNDg0LjQ4MyBUZAotKGludCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShibG9ja1NpemUxMDBrLCkgODMuNjg1OCBUagotMTk2LjA5OSA0NzIuNTI4IFRkCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKHZlcmJvc2l0eSwpIDU5Ljc3NTYgVGoKLTE5Ni4wOTkgNDYwLjU3MyBUZAotKGludCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLSh3b3JrRmFjdG9yKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKFwpOykgMTEuOTU1MSBUagotWzEgMCAwIDEgNzIgNDQ1LjAzMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00MzUuMDY4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0MjMuMTEzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFByZXBhcmVzKSAzNC4zMDEyIFRqCi0tMzU2IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTM1NiBUSm0KLShjb21wcmVzc2lvbi4pIDUyLjg1MTYgVGoKLS0xMjU2IFRKbQotKFRoZSkgMTUuNDkxOCBUagotWzEgMCAwIDEgMjA5LjQwOSA0MjMuMTEzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwOS40MDkgLTQyMy4xMTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwOS40MDkgNDIzLjExMyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiel9zdHJlYW0pIDUzLjc5OCBUagotWzEgMCAwIDEgMjYzLjIwOCA0MjMuMTEzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2My4yMDggLTQyMy4xMTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI2Ni43NTQgNDIzLjExMyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShzdHJ1Y3R1cmUpIDM0Ljg1OTEgVGoKLS0zNTYgVEptCi0oaG9sZHMpIDIxLjU4OSBUagotLTM1NiBUSm0KLShhbGwpIDkuOTYyNiBUagotLTM1NiBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMzU2IFRKbQotKHBlcnRhaW5pbmcpIDQwLjM5ODMgVGoKLS0zNTYgVEptCi0odG8pIDcuNzUwOSBUagotLTM1NiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNTYgVEptCi0oY29tcHJlc3Npb24pIDUwLjM2MDkgVGoKLS0zNTUgVEptCi0oYWN0aSkgMTQuMzg2IFRqCi0yNSBUSm0KLSh2aXR5KSAxNS41MDE4IFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0tMTI1NiBUSm0KLShBKSA3LjE5MyBUagotWzEgMCAwIDEgNzIgNDExLjE1OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDExLjE1OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDExLjE1OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiel9zdHJlYW0pIDUzLjc5OCBUagotWzEgMCAwIDEgMTI1Ljc5OCA0MTEuMTU4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEyNS43OTggLTQxMS4xNThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEyOC41ODEgNDExLjE1OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShzdHJ1Y3R1cmUpIDM0Ljg1OTEgVGoKLS0yNzkgVEptCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMjgwIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjc5IFRKbQotKGFsbG9jYXRlZCkgMzUuOTY1IFRqCi0tMjc5IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjgwIFRKbQotKGluaXRpYWxpc2VkKSAzOS4zMDI1IFRqCi0tMjc5IFRKbQotKHByaW9yKSAxOS4zNjczIFRqCi0tMjc5IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNzkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjgwIFRKbQotKGNhbGwuKSAxNi44NzY2IFRqCi0tNzk2IFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTI3OSBUSm0KLShcMDAyZWxkcykgMjEuNTg5IFRqCi0tMjc5IFRKbQotKG9mKSA4LjI5ODg1IFRqCi1bMSAwIDAgMSA0MzEuOTM5IDQxMS4xNThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDMxLjkzOSAtNDExLjE1OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDMxLjkzOSA0MTEuMTU4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6X3N0cmVhbSkgNTMuNzk4IFRqCi1bMSAwIDAgMSA0ODUuNzM4IDQxMS4xNThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDg1LjczOCAtNDExLjE1OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDg4LjUyIDQxMS4xNTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oY29tcHJpc2UpIDM2LjUyMjkgVGoKLS0yNzkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi03MiAzOTkuMjAzIFRkCi0oZW50aXJldHkpIDMwLjQzNTcgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHVzZXIpIDE2LjU5NzcgVGoKLTIwIFRKbQotKC12aXNpYmxlKSAyOS44ODc4IFRqCi0tMjUwIFRKbQotKGRhdGEuKSAxOS4wODgzIFRqCi1bMSAwIDAgMSAyMDQuNDIyIDM5OS4yMDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjA0LjQyMiAtMzk5LjIwM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjA0LjQyMiAzOTkuMjAzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHN0YXRlKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAyMzQuMzEgMzk5LjIwM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzQuMzEgLTM5OS4yMDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIzNi44IDM5OS4yMDMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShwb2ludGVyKSAyOC4yMjQgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0ocHJpKSAxMS4wNjg0IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGF0ZSkgMTEuNjE2NCBUagotLTI1MCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKHN0cnVjdHVyZXMpIDM4LjczNDYgVGoKLS0yNTAgVEptCi0ocmVxdWlyZWQpIDMzLjE5NTQgVGoKLS0yNTAgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMjUwIFRKbQotKGNvbXByZXNzaW9uLikgNTIuODUxNiBUagotWzEgMCAwIDEgNzIgMzk3LjA0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzg3LjA4M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzc3LjI4NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShDdXN0b20pIDMxLjAwMzYgVGoKLS0zNzIgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMzcyIFRKbQotKGFsbG9jYXRvcnMpIDM4LjczNDYgVGoKLS0zNzIgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMzcyIFRKbQotKHN1cHBvcnRlZCwpIDQxLjc4MzEgVGoKLS00MDMgVEptCi0odmlhKSAxMi4xNzQzIFRqCi0tMzcyIFRKbQotKFwwMDJlbGRzKSAyMS41ODkgVGoKLVsxIDAgMCAxIDI4OC45MDggMzc3LjI4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODguOTA4IC0zNzcuMjg1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODguOTA4IDM3Ny4yODUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnphbGxvYykgNDEuODQyOSBUagotWzEgMCAwIDEgMzMwLjc1MSAzNzcuMjg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzMC43NTEgLTM3Ny4yODVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzMC43NTEgMzc3LjI4NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAzMzcuMjUzIDM3Ny4yODVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzM3LjI1MyAtMzc3LjI4NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzM3LjI1MyAzNzcuMjg1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6ZnJlZSkgMzUuODY1NCBUagotWzEgMCAwIDEgMzczLjExOCAzNzcuMjg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM3My4xMTggLTM3Ny4yODVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM3My4xMTggMzc3LjI4NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tNDAzIFRKbQotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAzOTcuNzE0IDM3Ny4yODVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzk3LjcxNCAtMzc3LjI4NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzk3LjcxNCAzNzcuMjg1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKG9wYXF1ZSkgMzUuODY1NCBUagotWzEgMCAwIDEgNDMzLjU3OSAzNzcuMjg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQzMy41NzkgLTM3Ny4yODVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQzMy41NzkgMzc3LjI4NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi0tMTM1MyBUSm0KLShUaGUpIDE1LjQ5MTggVGoKLS0zNzIgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlKSAxNi41OTc3IFRqCi1bMSAwIDAgMSA0OTMuNzgyIDM3Ny4yODVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjc4MiAtMzc3LjI4NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDkzLjc4MiAzNzcuMjg1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKG9wYXF1ZSkgMzUuODY1NCBUagotWzEgMCAwIDEgNTI5LjY0OCAzNzcuMjg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUyOS42NDggLTM3Ny4yODVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzMy4zNTUgMzc3LjI4NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpcykgNi42NDUwNSBUagotNzIgMzY1LjMzIFRkCi0ocGFzc2VkKSAyNi41NjAzIFRqCi0tMzA2IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zMDYgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0zMDYgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzA2IFRKbQotKFwwMDJyc3QpIDE1LjUwMTggVGoKLS0zMDYgVEptCi0oYXIpIDcuNzQwOTQgVGoKLTE4IFRKbQotKGd1bWVudCkgMjkuODg3OCBUagotLTMwNiBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzA2IFRKbQotKGFsbCkgOS45NjI2IFRqCi0tMzA2IFRKbQotKGNhbGxzKSAxOC4yNjE0IFRqCi0tMzA1IFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDI1My45NDEgMzY1LjMzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1My45NDEgLTM2NS4zM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjUzLjk0MSAzNjUuMzMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnphbGxvYykgNDEuODQyOSBUagotWzEgMCAwIDEgMjk1Ljc4NCAzNjUuMzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjk1Ljc4NCAtMzY1LjMzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTguODMyIDM2NS4zMyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMzE2LjI2NiAzNjUuMzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzE2LjI2NiAtMzY1LjMzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMTYuMjY2IDM2NS4zMyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemZyZWUpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDM1Mi4xMzIgMzY1LjMzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM1Mi4xMzIgLTM2NS4zM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzUyLjEzMiAzNjUuMzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTMyMCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHV0KSA3Ljc1MDkgVGoKLS0zMDYgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0zMDYgVEptCi0ob3RoZXJ3aXNlKSAzOC43MzQ2IFRqCi0tMzA2IFRKbQotKGlnbm9yZWQpIDMwLjQzNTcgVGoKLS0zMDYgVEptCi0oYnkpIDkuOTYyNiBUagotLTMwNiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDYgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTk1NSBUSm0KLShUaGUpIDE1LjQ5MTggVGoKLTcyIDM1My4zNzUgVGQKLShjYWxsKSAxNC4zODYgVGoKLVsxIDAgMCAxIDg5LjQzMDkgMzUzLjM3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04OS40MzA5IC0zNTMuMzc1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04OS40MzA5IDM1My4zNzUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnphbGxvYykgNDEuODQyOSBUagotLTYwMCBUSm0KLShcKCkgNS45Nzc1NiBUagotLTYwMCBUSm0KLShvcGFxdWUsKSA0MS44NDI5IFRqCi0tNjAwIFRKbQotKG4sKSAxMS45NTUxIFRqCi0tNjAwIFRKbQotKG0pIDUuOTc3NTYgVGoKLS02MDAgVEptCi0oXCkpIDUuOTc3NTYgVGoKLVsxIDAgMCAxIDIzMi44OTMgMzUzLjM3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzIuODkzIC0zNTMuMzc1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzUuOTM4IDM1My4zNzUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaXMpIDYuNjQ1MDUgVGoKLS0zMDYgVEptCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeHBlY3RlZCkgMzAuOTgzNyBUagotLTMwNSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzA2IFRKbQotKHJldHVybikgMjMuNzkwNyBUagotLTMwNiBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMzA1IFRKbQotKHBvaW50ZXIpIDI4LjIyNCBUagotWzEgMCAwIDEgMzYwLjMgMzUzLjM3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNjAuMyAtMzUzLjM3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzYwLjMgMzUzLjM3NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShwKSA1Ljk3NzU2IFRqCi1bMSAwIDAgMSAzNjYuMjc3IDM1My4zNzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzY2LjI3NyAtMzUzLjM3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzY5LjMyMiAzNTMuMzc1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDM4MC4xMTggMzUzLjM3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zODAuMTE4IC0zNTMuMzc1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zODAuMTE4IDM1My4zNzUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obikgNS45Nzc1NiBUagotMzkyLjA3MyAzNTEuNjMxIFRkCi0oKikgNS45Nzc1NiBUagotNDA0LjAyOSAzNTMuMzc1IFRkCi0obSkgNS45Nzc1NiBUagotWzEgMCAwIDEgNDEwLjAwNiAzNTMuMzc1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQxMC4wMDYgLTM1My4zNzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxMy4wNTEgMzUzLjM3NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShieXRlcykgMjEuMDMxIFRqCi0tMzA2IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzA1IFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTMyMCBUSm0KLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNTA0LjEzNSAzNTMuMzc1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNC4xMzUgLTM1My4zNzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNC4xMzUgMzUzLjM3NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemZyZWUpIDM1Ljg2NTQgVGoKLTcyIDM0MS40MiBUZAotKFwoKSA1Ljk3NzU2IFRqCi0tNjAwIFRKbQotKG9wYXF1ZSwpIDQxLjg0MjkgVGoKLS02MDAgVEptCi0ocCkgNS45Nzc1NiBUagotLTYwMCBUSm0KLShcKSkgNS45Nzc1NiBUagotWzEgMCAwIDEgMTQ5LjcwOSAzNDEuNDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQ5LjcwOSAtMzQxLjQyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTIuMTk5IDM0MS40MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yNTAgVEptCi0oZnJlZSkgMTUuNDgxOSBUagotLTI1MCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMzM5LjI2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzI5LjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDMxOS41MDIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSWYpIDYuNjM1MDkgVGoKLS0yODAgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjgwIFRKbQotKGRvbicpIDE4LjI2MTQgVGoKLTE4IFRKbQotKHQpIDIuNzY5NiBUagotLTI4MCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYW50KSAxMi4xNzQzIFRqCi0tMjc5IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yODAgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjgwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yODAgVEptCi0oY3VzdG9tKSAyOC43ODIgVGoKLS0yODAgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMjc5IFRKbQotKGFsbG9jYXRvcikgMzQuODU5MSBUagotNDAgVEptCi0oLCkgMi40OTA2NSBUagotLTI4OCBUSm0KLShzZXQpIDExLjA2ODQgVGoKLVsxIDAgMCAxIDI5OS45IDMxOS41MDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjk5LjkgLTMxOS41MDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI5OS45IDMxOS41MDIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnphbGxvYykgNDEuODQyOSBUagotWzEgMCAwIDEgMzQxLjc0MyAzMTkuNTAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0MS43NDMgLTMxOS41MDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM0MS43NDMgMzE5LjUwMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAzNDcuMDk2IDMxOS41MDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQ3LjA5NiAtMzE5LjUwMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzQ3LjA5NiAzMTkuNTAyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6ZnJlZSkgMzUuODY1NCBUagotWzEgMCAwIDEgMzgyLjk2MSAzMTkuNTAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM4Mi45NjEgLTMxOS41MDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM4NS43NDkgMzE5LjUwMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNDAyLjkyMyAzMTkuNTAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQwMi45MjMgLTMxOS41MDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQwMi45MjMgMzE5LjUwMiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShvcGFxdWUpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDQzOC43ODggMzE5LjUwMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MzguNzg4IC0zMTkuNTAyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDEuNTc2IDMxOS41MDIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odG8pIDcuNzUwOSBUagotWzEgMCAwIDEgNDUyLjExNSAzMTkuNTAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ1Mi4xMTUgLTMxOS41MDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ1Mi4xMTUgMzE5LjUwMiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShOVUxMKSAyMy45MTAyIFRqCi1bMSAwIDAgMSA0NzYuMDI1IDMxOS41MDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDc2LjAyNSAtMzE5LjUwMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDc2LjAyNSAzMTkuNTAyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0yODAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yODAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjc5IFRKbQotKGxpYnJhcnkpIDI2LjU2MDMgVGoKLTcyIDMwNy41NDcgVGQKLSh3aWxsKSAxNS41MDE4IFRqCi0tMjUwIFRKbQotKHRoZW4pIDE3LjE1NTYgVGoKLS0yNTAgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShzdGFuZGFyZCkgMzMuNzUzMyBUagotWzEgMCAwIDEgMTc2LjMxOCAzMDcuNTQ3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3Ni4zMTggLTMwNy41NDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3Ni4zMTggMzA3LjU0NyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShtYWxsb2MpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDIxMi4xODMgMzA3LjU0N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTIuMTgzIC0zMDcuNTQ3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTQuNjc0IDMwNy41NDcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLykgMi43Njk2IFRqCi1bMSAwIDAgMSAyMTkuOTM0IDMwNy41NDddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjE5LjkzNCAtMzA3LjU0N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjE5LjkzNCAzMDcuNTQ3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGZyZWUpIDIzLjkxMDIgVGoKLVsxIDAgMCAxIDI0My44NDQgMzA3LjU0N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNDMuODQ0IC0zMDcuNTQ3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNDYuMzM1IDMwNy41NDcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0ocm91dGluZXMuKSAzNC41OTAxIFRqCi1bMSAwIDAgMSA3MiAzMDcuMzkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yOTcuNDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI4NS42MjkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oQmVmb3JlKSAyNy4xMDgyIFRqCi0tMzYyIFRKbQotKGNhbGxpbmcpIDI3LjExODIgVGoKLVsxIDAgMCAxIDEzMy40MzggMjg1LjYyOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMzMuNDM4IC0yODUuNjI5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMzMuNDM4IDI4NS42MjkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3NJbml0KSAxMDcuNTk2IFRqCi1bMSAwIDAgMSAyNDEuMDM1IDI4NS42MjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjQxLjAzNSAtMjg1LjYyOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjQxLjAzNSAyODUuNjI5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0zOTAgVEptCi0oXDAwMmVsZHMpIDIxLjU4OSBUagotWzEgMCAwIDEgMjcyLjYwNiAyODUuNjI5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3Mi42MDYgLTI4NS42MjldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3Mi42MDYgMjg1LjYyOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemFsbG9jKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAzMTQuNDQ5IDI4NS42MjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzE0LjQ0OSAtMjg1LjYyOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzE0LjQ0OSAyODUuNjI5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDMyMC44MjUgMjg1LjYyOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMjAuODI1IC0yODUuNjI5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMjAuODI1IDI4NS42MjkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnpmcmVlKSAzNS44NjU0IFRqCi1bMSAwIDAgMSAzNTYuNjkgMjg1LjYyOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNTYuNjkgLTI4NS42MjldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM2MC4yOTYgMjg1LjYyOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMzc4LjI4OCAyODUuNjI5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM3OC4yODggLTI4NS42MjldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM3OC4yODggMjg1LjYyOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShvcGFxdWUpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDQxNC4xNTQgMjg1LjYyOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MTQuMTU0IC0yODUuNjI5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MTcuNzYgMjg1LjYyOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShzaG91bGQpIDI2LjU3MDMgVGoKLS0zNjIgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0zNjIgVEptCi0oXDAwMmxsZWQpIDIwLjQ4MzEgVGoKLS0zNjIgVEptCi0oYXBwcm9wcmlhdGVseSkgNTMuMTIwNiBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotNzIgMjczLjY3NCBUZAotKGFzKSA4LjI5ODg1IFRqCi0tMzIyIFRKbQotKGp1c3QpIDE0LjM5NiBUagotLTMyMyBUSm0KLShkZXNjcmliZWQuKSA0MC42NjczIFRqCi0tMTA1NSBUSm0KLShVcG9uKSAyMi4xMzY5IFRqCi0tMzIyIFRKbQotKHJldHVybiwpIDI2LjI4MTMgVGoKLS0zNDEgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzIyIFRKbQotKGludGVybmFsKSAzMC40MzU3IFRqCi0tMzIzIFRKbQotKHN0YXRlKSAxOC4yNjE0IFRqCi0tMzIyIFRKbQotKHdpbGwpIDE1LjUwMTggVGoKLS0zMjMgVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTMyMiBUSm0KLShiZWVuKSAxOC44MDk0IFRqCi0tMzIzIFRKbQotKGFsbG9jYXRlZCkgMzUuOTY1IFRqCi0tMzIyIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzIzIFRKbQotKGluaXRpYWxpc2VkLCkgNDEuNzkzMSBUagotLTM0MCBUSm0KLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNDU5LjgwMSAyNzMuNjc0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ1OS44MDEgLTI3My42NzRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ1OS44MDEgMjczLjY3NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh0b3RhbF9pbl9sbzMyKSA3Ny43MDgzIFRqCi1bMSAwIDAgMSA1MzcuNTA5IDI3My42NzRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTM3LjUwOSAtMjczLjY3NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM3LjUwOSAyNzMuNjc0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDI2MS43MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTI2MS43MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI2MS43MTggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0odG90YWxfaW5faGkzMikgNzcuNzA4MyBUagotWzEgMCAwIDEgMTQ5LjcwOSAyNjEuNzE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE0OS43MDkgLTI2MS43MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE0OS43MDkgMjYxLjcxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAxNTUuMDA2IDI2MS43MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU1LjAwNiAtMjYxLjcxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTU1LjAwNiAyNjEuNzE4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHRvdGFsX291dF9sbzMyKSA4My42ODU4IFRqCi1bMSAwIDAgMSAyMzguNjkyIDI2MS43MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjM4LjY5MiAtMjYxLjcxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjQxLjQzNSAyNjEuNzE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAyNTguNTY0IDI2MS43MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjU4LjU2NCAtMjYxLjcxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjU4LjU2NCAyNjEuNzE4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHRvdGFsX291dF9oaTMyKSA4My42ODU4IFRqCi1bMSAwIDAgMSAzNDIuMjUgMjYxLjcxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNDIuMjUgLTI2MS43MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM0NC45OTQgMjYxLjcxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aWxsKSAxNS41MDE4IFRqCi0tMjc1IFRKbQotKGhhKSA5LjQwNDY5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yNzYgVEptCi0oYmVlbikgMTguODA5NCBUagotLTI3NSBUSm0KLShzZXQpIDExLjA2ODQgVGoKLS0yNzUgVEptCi0odG8pIDcuNzUwOSBUagotLTI3NiBUSm0KLSh6ZXJvLikgMTkuNjM2MyBUagotLTc3MiBUSm0KLShUaGVzZSkgMjMuNzkwNyBUagotLTI3NSBUSm0KLShmb3VyKSAxNi41OTc3IFRqCi0tMjc2IFRKbQotKFwwMDJlbGRzKSAyMS41ODkgVGoKLS0yNzUgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi03MiAyNDkuNzYzIFRkCi0odXNlZCkgMTguMjYxNCBUagotLTM0MCBUSm0KLShieSkgOS45NjI2IFRqCi0tMzM5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM0MCBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMzM5IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zNDAgVEptCi0oaW5mb3JtKSAyNy4xMTgyIFRqCi0tMzM5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM0MCBUSm0KLShjYWxsZXIpIDIyLjEyNjkgVGoKLS0zMzkgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zNDAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzM5IFRKbQotKHRvdGFsKSAxNy43MTM1IFRqCi0tMzQwIFRKbQotKGFtb3VudCkgMjkuODg3OCBUagotLTMzOSBUSm0KLShvZikgOC4yOTg4NSBUagotLTM0MCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMzQwIFRKbQotKHBhc3NlZCkgMjYuNTYwMyBUagotLTMzOSBUSm0KLShpbnRvKSAxNS41MDE4IFRqCi0tMzQwIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzM5IFRKbQotKG91dCkgMTIuNzMyMiBUagotLTM0MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTMzOSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNDAgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTM2MiBUSm0KLShyZXNwZWN0aSkgMzAuOTgzNyBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbHkpIDEyLjE3NDMgVGoKLTY1IFRKbQotKC4pIDIuNDkwNjUgVGoKLTcyIDIzNy44MDggVGQKLShZKSA3LjE5MyBUagotMTEwIFRKbQotKG91KSA5Ljk2MjYgVGoKLS0zNzYgVEptCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMzc3IFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTM3NiBUSm0KLSh0cnkpIDExLjA2ODQgVGoKLS0zNzYgVEptCi0odG8pIDcuNzUwOSBUagotLTM3NyBUSm0KLShjaGFuZ2UpIDI4LjIxNDEgVGoKLS0zNzYgVEptCi0odGhlbS4pIDIyLjQxNTkgVGoKLS0xMzc4IFRKbQotKEFzKSAxMS4wNjg0IFRqCi0tMzc3IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzc2IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9uKSAyNC4zNDg2IFRqCi0tMzc3IFRKbQotKDEuMCwpIDE0Ljk0MzkgVGoKLS00MDggVEptCi0oNjQtYml0KSAyMy44MDA3IFRqCi0tMzc2IFRKbQotKGNvdW50cykgMjYuMDEyMyBUagotLTM3NiBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0zNzcgVEptCi0obWFpbnRhaW5lZCwpIDQ2Ljc2NDQgVGoKLS00MDggVEptCi0oZSkgNC40MjMzOSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbikgOS40MDQ2OSBUagotLTM3NiBUSm0KLShvbikgOS45NjI2IFRqCi0tMzc2IFRKbQotKDMyLWJpdCkgMjMuODAwNyBUagotLTM3NyBUSm0KLShwbGF0Zm9ybXMsKSA0MC42NzczIFRqCi03MiAyMjUuODUzIFRkCi0odXNpbmcpIDIxLjU4OSBUagotLTM3MSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLVsxIDAgMCAxIDExMy4xNDggMjI1Ljg1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTMuMTQ4IC0yMjUuODUzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTMuMTQ4IDIyNS44NTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oX2hpMzIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDE0My4wMzYgMjI1Ljg1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDMuMDM2IC0yMjUuODUzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDYuNzI5IDIyNS44NTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDAwMmVsZHMpIDIxLjU4OSBUagotLTM3MSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzcwIFRKbQotKHN0b3JlKSAxOS4zNjczIFRqCi0tMzcxIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM3MSBUSm0KLSh1cHBlcikgMjIuNjg0OCBUagotLTM3MCBUSm0KLSgzMikgOS45NjI2IFRqCi0tMzcxIFRKbQotKGJpdHMpIDE0LjM5NiBUagotLTM3MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTM3MSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNzEgVEptCi0oY291bnQuKSAyNC42Mjc1IFRqCi0tMTM0NCBUSm0KLShTbywpIDEzLjAxMTIgVGoKLS00MDAgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMzcxIFRKbQotKGUpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHhhbXBsZSwpIDMxLjgyMDUgVGoKLS00MDEgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzcxIFRKbQotKHRvdGFsKSAxNy43MTM1IFRqCi0tMzcwIFRKbQotKGFtb3VudCkgMjkuODg3OCBUagotLTM3MSBUSm0KLShvZikgOC4yOTg4NSBUagotLTM3MCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMzcxIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0zNzEgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLVsxIDAgMCAxIDcyIDIxMy44OThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIxMy44OThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDIxMy44OTggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oXCh0b3RhbF9pbl9oaTMyKSA4My42ODU4IFRqCi0tNjAwIFRKbQotKDw8KSAxMS45NTUxIFRqCi0tNjAwIFRKbQotKDMyXCkpIDE3LjkzMjcgVGoKLS02MDAgVEptCi0oKykgNS45Nzc1NiBUagotLTYwMCBUSm0KLSh0b3RhbF9pbl9sbzMyKSA3Ny43MDgzIFRqCi1bMSAwIDAgMSAyOTMuMTcxIDIxMy44OThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjkzLjE3MSAtMjEzLjg5OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjkzLjE3MSAyMTMuODk4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC4pIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDIxMi41ODhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIwMi42MjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE5MS45OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQKSA1LjUzOTIxIFRqCi0xNSBUSm0KLShhcmFtZXRlcikgMzQuODQ5MiBUagotWzEgMCAwIDEgMTE1LjM2NyAxOTEuOThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE1LjM2NyAtMTkxLjk4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTUuMzY3IDE5MS45OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShibG9ja1NpemUxMDBrKSA3Ny43MDgzIFRqCi1bMSAwIDAgMSAxOTMuMDc2IDE5MS45OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTMuMDc2IC0xOTEuOThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5Ni4yMDQgMTkxLjk4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHNwZWNpXDAwMmVzKSAzNC4zMTEyIFRqCi0tMzE0IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMxNCBUSm0KLShibG9jaykgMjIuMTM2OSBUagotLTMxNCBUSm0KLShzaXplKSAxNS40OTE4IFRqCi0tMzE0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zMTQgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0zMTQgVEptCi0odXNlZCkgMTguMjYxNCBUagotLTMxNCBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0zMTQgVEptCi0oY29tcHJlc3Npb24uKSA1Mi44NTE2IFRqCi0tMTAwNCBUSm0KLShJdCkgNi4wODcxNSBUagotLTMxNCBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0zMTQgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0zMTUgVEptCi0oYSkgNC40MjMzOSBUagotLTMxNCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFsdWUpIDE2LjU5NzcgVGoKLS0zMTQgVEptCi0oYmV0d2VlbikgMzMuMTk1NCBUagotLTMxNCBUSm0KLSgxKSA0Ljk4MTMgVGoKLTcyIDE4MC4wMjUgVGQKLShhbmQpIDE0LjM4NiBUagotLTI4OSBUSm0KLSg5KSA0Ljk4MTMgVGoKLS0yODkgVEptCi0oaW5jbHVzaSkgMjYuNTcwMyBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlLCkgNi45MTQwNCBUagotLTI5OSBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI4OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yODkgVEptCi0oYWN0dWFsKSAyMy43OTA3IFRqCi0tMjg5IFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjg5IFRKbQotKHNpemUpIDE1LjQ5MTggVGoKLS0yODkgVEptCi0odXNlZCkgMTguMjYxNCBUagotLTI4OSBUSm0KLShpcykgNi42NDUwNSBUagotLTI4OSBUSm0KLSgxMDAwMDApIDI5Ljg4NzggVGoKLS0yODkgVEptCi0oeCkgNC45ODEzIFRqCi0tMjg5IFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTI4OSBUSm0KLShcMDAyZ3VyZS4pIDI1LjczMzQgVGoKLS04NTQgVEptCi0oOSkgNC45ODEzIFRqCi0tMjkwIFRKbQotKGdpKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXMpIDguMjk4ODUgVGoKLS0yODkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjg5IFRKbQotKGJlc3QpIDE2LjA0OTcgVGoKLS0yODkgVEptCi0oY29tcHJlc3Npb24pIDUwLjM2MDkgVGoKLS0yODkgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1dCkgNy43NTA5IFRqCi0tMjg5IFRKbQotKHRhaykgMTIuMTc0MyBUagotMTAgVEptCi0oZXMpIDguMjk4ODUgVGoKLS0yODkgVEptCi0obW9zdCkgMTkuMzc3MyBUagotNzIgMTY4LjA3IFRkCi0obWVtb3J5KSAzMy4yMDUzIFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAxNjUuOTEzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xNTUuOTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE0Ni4xNTIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUCkgNS41MzkyMSBUagotMTUgVEptCi0oYXJhbWV0ZXIpIDM0Ljg0OTIgVGoKLVsxIDAgMCAxIDExNS4wOTUgMTQ2LjE1Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTUuMDk1IC0xNDYuMTUyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTUuMDk1IDE0Ni4xNTIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0odmVyYm9zaXR5KSA1My43OTggVGoKLVsxIDAgMCAxIDE2OC44OTMgMTQ2LjE1Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjguODkzIC0xNDYuMTUyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzEuNzUgMTQ2LjE1MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yODcgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yODYgVEptCi0oc2V0KSAxMS4wNjg0IFRqCi0tMjg3IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yODcgVEptCi0oYSkgNC40MjMzOSBUagotLTI4NyBUSm0KLShudW1iZXIpIDMwLjQzNTcgVGoKLS0yODYgVEptCi0oYmV0d2VlbikgMzMuMTk1NCBUagotLTI4NyBUSm0KLSgwKSA0Ljk4MTMgVGoKLS0yODcgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yODcgVEptCi0oNCkgNC45ODEzIFRqCi0tMjg2IFRKbQotKGluY2x1c2kpIDI2LjU3MDMgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZS4pIDYuOTE0MDQgVGoKLS04NDEgVEptCi0oMCkgNC45ODEzIFRqCi0tMjg2IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjg3IFRKbQotKHNpbGVudCwpIDI0LjA3OTYgVGoKLS0yOTYgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yODcgVEptCi0oZ3JlYXRlcikgMjcuNjU2MiBUagotLTI4NyBUSm0KLShudW1iZXJzKSAzNC4zMTEyIFRqCi0tMjg2IFRKbQotKGdpKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotNzIgMTM0LjE5NyBUZAotKGluY3JlYXNpbmdseSkgNDguNjk3MiBUagotLTM0MiBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyYm9zZSkgMjYuMDAyNCBUagotLTM0MiBUSm0KLShtb25pdG9yaW5nL2RlYikgNjEuNDM5NCBUagotMjAgVEptCi0odWdnaW5nKSAyNy42NzYxIFRqCi0tMzQyIFRKbQotKG91dHB1dC4pIDI3Ljk1NTEgVGoKLS0xMTczIFRKbQotKElmKSA2LjYzNTA5IFRqCi0tMzQzIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM0MiBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMzQyIFRKbQotKGhhcykgMTMuMjgwMSBUagotLTM0MiBUSm0KLShiZWVuKSAxOC44MDk0IFRqCi0tMzQyIFRKbQotKGNvbXBpbGVkKSAzNy4wODA4IFRqCi0tMzQyIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ0Ni40MjkgMTM0LjE5N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDYuNDI5IC0xMzQuMTk3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDYuNDI5IDEzNC4xOTcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLURCWl9OT19TVERJTykgNzcuNzA4MyBUagotWzEgMCAwIDEgNTI0LjEzOCAxMzQuMTk3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUyNC4xMzggLTEzNC4xOTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUyNC4xMzggMTM0LjE5NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMzQyIFRKbQotKG5vKSA5Ljk2MjYgVGoKLTcyIDEyMi4yNDIgVGQKLShzdWNoKSAxOC4yNjE0IFRqCi0tMjUwIFRKbQotKG91dHB1dCkgMjUuNDY0NCBUagotLTI1MCBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMjUwIFRKbQotKGFwcGVhcikgMjYuNTUwMyBUagotLTI1MCBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNTAgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI1MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyYm9zaXR5KSAzMi4wOTk1IFRqCi0tMjUwIFRKbQotKHNldHRpbmcuKSAyOS4wNjA5IFRqCi1bMSAwIDAgMSA3MiAxMjAuMDg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xMTAuMTIyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxMDAuMzI0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFApIDUuNTM5MjEgVGoKLTE1IFRKbQotKGFyYW1ldGVyKSAzNC44NDkyIFRqCi1bMSAwIDAgMSAxMTYuNjE5IDEwMC4zMjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE2LjYxOSAtMTAwLjMyNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE2LjYxOSAxMDAuMzI0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHdvcmtGYWN0b3IpIDU5Ljc3NTYgVGoKLVsxIDAgMCAxIDE3Ni4zOTQgMTAwLjMyNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzYuMzk0IC0xMDAuMzI0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODAuNzc1IDEwMC4zMjQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oY29udHJvbHMpIDMyLjA5OTUgVGoKLS00NDAgVEptCi0oaG8pIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS00MzkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tNDQwIFRKbQotKGNvbXByZXNzaW9uKSA1MC4zNjA5IFRqCi0tNDQwIFRKbQotKHBoYXNlKSAyMi42ODQ4IFRqCi0tNDM5IFRKbQotKGJlaGEpIDE4LjgwOTQgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXMpIDguMjk4ODUgVGoKLS00NDAgVEptCi0od2hlbikgMjEuNTc5IFRqCi0tNDM5IFRKbQotKHByZXNlbnRlZCkgMzguMTc2NyBUagotLTQ0MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tNDQwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvcnN0KSAxNC45NDM5IFRqCi0tNDM5IFRKbQotKGNhc2UsKSAxOS42MzYzIFRqCi0tNDg3IFRKbQotKGhpZ2hseSkgMjUuNDY0NCBUagotNzIgODguMzY4NiBUZAotKHJlcGV0aXRpKSAyOC4yMjQgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSwpIDYuOTE0MDQgVGoKLS00MzMgVEptCi0oaW5wdXQpIDIwLjQ4MzEgVGoKLS0zOTYgVEptCi0oZGF0YS4pIDE5LjA4ODMgVGoKLS0xNDk2IFRKbQotKElmKSA2LjYzNTA5IFRqCi0tMzk2IFRKbQotKGNvbXByZXNzaW9uKSA1MC4zNjA5IFRqCi0tMzk2IFRKbQotKHJ1bnMpIDE3LjE1NTYgVGoKLS0zOTcgVEptCi0oaSkgMi43Njk2IFRqCi0xIFRKbQotKG50bykgMTIuNzMyMiBUagotLTM5NyBUSm0KLShkaWYpIDExLjA2ODQgVGoKLTI1IFRKbQotKFwwMDJjdWx0aWVzKSAzMS41NTE2IFRqCi0tMzk2IFRKbQotKGNhdXNlZCkgMjcuMTA4MiBUagotLTM5NiBUSm0KLShieSkgOS45NjI2IFRqCi0tMzk2IFRKbQotKHJlcGV0aXRpKSAyOC4yMjQgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTM5NiBUSm0KLShkYXRhLCkgMTkuMDg4MyBUagotLTQzMiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zOTcgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTM5NiBUSm0KLShzd2l0Y2hlcykgMzQuMzExMiBUagotLTM5NiBUSm0KLShmcm9tKSAxOS4zNjczIFRqCi1bMSAwIDAgMSA3MiA1MC44NTE4XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuODUxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC44NTE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDEyKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDE2IDE2Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA3Ni40OTc5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjU2OSAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE5LjA2NyA3NDkuMjQ1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFByb2dyYW1taW5nKSA1NC43OTQzIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ5Ni41NTYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTYuNTU2IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTYuNTU2IDc0OS4yNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDU0NC4zNzYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguMzA1IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtNzQxLjU1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTUgVEptCi0oc3RhbmRhcmQpIDMzLjc1MzMgVGoKLS0yNTQgVEptCi0oc29ydGluZykgMjcuNjc2MSBUagotLTI1NSBUSm0KLShhbGdvcml0aG0pIDM4Ljc0NDYgVGoKLS0yNTQgVEptCi0odG8pIDcuNzUwOSBUagotLTI1NSBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjU1IFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFsbGJhY2spIDI4Ljc3MiBUagotLTI1NCBUSm0KLShhbGdvcml0aG0uKSA0MS4yMzUyIFRqCi0tNjQ4IFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTI1NSBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhbGxiYWNrKSAyOC43NzIgVGoKLS0yNTQgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTUgVEptCi0oc2xvKSAxMS42MjY0IFRqCi0yNSBUSm0KLSh3ZXIpIDE0LjkzMzkgVGoKLS0yNTUgVEptCi0odGhhbikgMTcuMTU1NiBUagotLTI1NCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTUgVEptCi0oc3RhbmRhcmQpIDMzLjc1MzMgVGoKLS0yNTQgVEptCi0oYWxnb3JpdGhtKSAzOC43NDQ2IFRqCi0tMjU1IFRKbQotKGJ5KSA5Ljk2MjYgVGoKLS0yNTUgVEptCi0ocGVyaGFwcykgMzAuOTgzNyBUagotNzIgNjk4LjA4MiBUZAotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYWN0b3IpIDE5LjkxNTIgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odGhyZWUsKSAyMi40MDU5IFRqCi0tMjUwIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTI1MCBUSm0KLShhbCkgNy4xOTMgVGoKLTEwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShheXMpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oYmVoYSkgMTguODA5NCBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcykgOC4yOTg4NSBUagotLTI1MCBUSm0KLShyZWFzb25hYmx5KSA0My4xNTggVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yNTAgVEptCi0obm8pIDkuOTYyNiBUagotLTI1MCBUSm0KLShtYXR0ZXIpIDI1LjQ1NDQgVGoKLS0yNTAgVEptCi0oaG8pIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yNTAgVEptCi0oYmFkKSAxNC4zODYgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGlucHV0LikgMjIuOTczOCBUagotWzEgMCAwIDEgNzIgNjk1LjkyNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjg1Ljk2NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjc2LjE2NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShMbykgMTEuMDY4NCBUagotMjUgVEptCi0od2VyKSAxNC45MzM5IFRqCi0tMjQwIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZXMpIDIwLjQ3MzEgVGoKLS0yMzkgVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDEzOC40MjEgNjc2LjE2NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMzguNDIxIC02NzYuMTY1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMzguNDIxIDY3Ni4xNjUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0od29ya0ZhY3RvcikgNTkuNzc1NiBUagotWzEgMCAwIDEgMTk4LjE5NyA2NzYuMTY1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5OC4xOTcgLTY3Ni4xNjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwMC41ODUgNjc2LjE2NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShyZWR1Y2UpIDI2LjU1MDMgVGoKLS0yNDAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjM5IFRKbQotKGFtb3VudCkgMjkuODg3OCBUagotLTI0MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI0MCBUSm0KLShlZikgNy43NDA5NCBUagotMjUgVEptCi0oZm9ydCkgMTQuMzg2IFRqCi0tMjM5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI0MCBUSm0KLShzdGFuZGFyZCkgMzMuNzUzMyBUagotLTI0MCBUSm0KLShhbGdvcml0aG0pIDM4Ljc0NDYgVGoKLS0yMzkgVEptCi0od2lsbCkgMTUuNTAxOCBUagotLTI0MCBUSm0KLShlKSA0LjQyMzM5IFRqCi0xNSBUSm0KLSh4cGVuZCkgMjQuMzQ4NiBUagotLTI0MCBUSm0KLShiZWZvcmUpIDI1LjQ0NDUgVGoKLS0yNDAgVEptCi0ocmVzb3J0aW5nKSAzNS40MTcgVGoKLS0yMzkgVEptCi0odG8pIDcuNzUwOSBUagotLTI0MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTcyIDY2NC4yMSBUZAotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFsbGJhY2suKSAzMS4yNjI2IFRqCi0tNjE4IFRKbQotKFkpIDcuMTkzIFRqCi0xMTAgVEptCi0ob3UpIDkuOTYyNiBUagotLTI0OCBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yNDcgVEptCi0oc2V0KSAxMS4wNjg0IFRqCi0tMjQ4IFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTI0NyBUSm0KLShwYXJhbWV0ZXIpIDM5LjgzMDUgVGoKLS0yNDggVEptCi0oY2FyZWZ1bGx5OykgMzguMTc2NyBUagotLTI0OCBUSm0KLSh0b28pIDEyLjczMjIgVGoKLS0yNDggVEptCi0obG8pIDcuNzUwOSBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yNDggVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNDcgVEptCi0obWFuKSAxNy4xNTU2IFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLS0yNDggVEptCi0oaW5wdXRzKSAyNC4zNTg2IFRqCi0tMjQ4IFRKbQotKHdpbGwpIDE1LjUwMTggVGoKLS0yNDcgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNDggVEptCi0oaGFuZGxlZCkgMzEuNTQxNiBUagotLTI0NyBUSm0KLShieSkgOS45NjI2IFRqCi0tMjQ4IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI0NyBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhbGxiYWNrKSAyOC43NzIgVGoKLS0yNDggVEptCi0oYWxnb3JpdGhtKSAzOC43NDQ2IFRqCi03MiA2NTIuMjU1IFRkCi0oYW5kKSAxNC4zODYgVGoKLS0zMDggVEptCi0oc28pIDguODU2NzUgVGoKLS0zMDggVEptCi0oY29tcHJlc3MpIDM3LjYyODcgVGoKLS0zMDggVEptCi0ocmF0aGVyKSAyMy4yMzI4IFRqCi0tMzA5IFRKbQotKHNsbykgMTEuNjI2NCBUagotMjUgVEptCi0od2x5KSAxNC45NDM5IFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMzIyIFRKbQotKHRvbykgMTIuNzMyMiBUagotLTMwOSBUSm0KLShoaWdoLCkgMjAuMjA0MiBUagotLTMyMiBUSm0KLShhbmQpIDE0LjM4NiBUagotLTMwOCBUSm0KLSh5b3VyKSAxOC4yNjE0IFRqCi0tMzA5IFRKbQotKGEpIDQuNDIzMzkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJhZ2UtdG8tdykgNDMuMTQ4IFRqCi0xMCBUSm0KLShvcnN0KSAxNC45NDM5IFRqCi0tMzA4IFRKbQotKGNhc2UpIDE3LjE0NTYgVGoKLS0zMDggVEptCi0oY29tcHJlc3Npb24pIDUwLjM2MDkgVGoKLS0zMDggVEptCi0odGltZXMpIDIxLjU4OSBUagotLTMwOCBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0zMDggVEptCi0oYmVjb21lKSAzMC45ODM3IFRqCi0tMzA5IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJ5KSAxMi43MjIyIFRqCi0tMzA4IFRKbQotKGxhcikgMTAuNTEwNSBUagotMTggVEptCi0oZ2UuKSAxMS44OTUzIFRqCi03MiA2NDAuMyBUZAotKFRoZSkgMTUuNDkxOCBUagotLTI1MCBUSm0KLShkZWYpIDEyLjcyMjIgVGoKLTEwIFRKbQotKGF1bHQpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKDMwKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oZ2kpIDcuNzUwOSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcykgOC4yOTg4NSBUagotLTI1MCBUSm0KLShyZWFzb25hYmxlKSA0Mi42MDAxIFRqCi0tMjUwIFRKbQotKGJlaGEpIDE4LjgwOTQgVGoKLTIwIFRKbQotKHZpb3VyKSAyMS4wMzEgVGoKLS0yNTAgVEptCi0obykgNC45ODEzIFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyKSA3Ljc0MDk0IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0od2lkZSkgMTkuMzY3MyBUagotLTI1MCBUSm0KLShyYW5nZSkgMjIuMTI2OSBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShjaXJjdW1zdGFuY2VzLikgNTguOTI4OCBUagotWzEgMCAwIDEgNzIgNjM4LjE0M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjI4LjE4MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjE4LjM4MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBbGxvKSAxNy43MTM1IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYWJsZSkgMTYuNTk3NyBUagotLTI1MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFsdWVzKSAyMC40NzMxIFRqCi0tMjUwIFRKbQotKHJhbmdlKSAyMi4xMjY5IFRqCi0tMjUwIFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS0yNTAgVEptCi0oMCkgNC45ODEzIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oMjUwKSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKGluY2x1c2kpIDI2LjU3MDMgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZS4pIDYuOTE0MDQgVGoKLS02MjAgVEptCi0oMCkgNC45ODEzIFRqCi0tMjUwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oc3BlY2lhbCkgMjcuNjY2MSBUagotLTI1MCBUSm0KLShjYXNlLCkgMTkuNjM2MyBUagotLTI1MCBUSm0KLShlcXVpKSAxNy4xNTU2IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFsZW50KSAxOS4zNjczIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odXNpbmcpIDIxLjU4OSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oZGVmKSAxMi43MjIyIFRqCi0xMCBUSm0KLShhdWx0KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZSkgMTYuNTk3NyBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLSgzMC4pIDEyLjQ1MzMgVGoKLVsxIDAgMCAxIDcyIDYxNi4yMjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYwNi4yNjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU5Ni40NjYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oTm90ZSkgMTkuMzY3MyBUagotLTI1MCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjUwIFRKbQotKG91dHB1dCkgMjUuNDY0NCBUagotLTI1MCBUSm0KLShnZW5lcmF0ZWQpIDM4LjcyNDYgVGoKLS0yNTAgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHNhbWUpIDIwLjQ3MzEgVGoKLS0yNTAgVEptCi0ocmUpIDcuNzQwOTQgVGoKLTE1IFRKbQotKGcpIDQuOTgxMyBUagotNSBUSm0KLShhcmRsZXNzKSAyNy42NjYxIFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHdoZXRoZXIpIDMyLjA4OTUgVGoKLS0yNTAgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhbGxiYWNrKSAyOC43NzIgVGoKLS0yNTAgVEptCi0oYWxnb3JpdGhtKSAzOC43NDQ2IFRqCi0tMjUwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKHVzZWQuKSAyMC43NTIxIFRqCi1bMSAwIDAgMSA3MiA1OTQuMzA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjE3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01ODQuMzQ4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1NzQuNTQ5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEJlKSAxMS4wNjg0IFRqCi0tMzAzIFRKbQotKGEpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0zMDMgVEptCi0oYWxzbykgMTYuMDQ5NyBUagotLTMwMyBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMzAzIFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTMwNCBUSm0KLShwYXJhbWV0ZXIpIDM5LjgzMDUgVGoKLS0zMDMgVEptCi0obWF5KSAxNy4xNTU2IFRqCi0tMzAzIFRKbQotKGRpc2FwcGVhcikgMzguMTc2NyBUagotLTMwMyBUSm0KLShlbnRpcmVseSkgMzAuNDM1NyBUagotLTMwMyBUSm0KLShpbikgNy43NTA5IFRqCi0tMzAzIFRKbQotKGZ1dHVyZSkgMjMuNzkwNyBUagotLTMwMyBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyc2lvbnMpIDI4LjIyNCBUagotLTMwMyBUSm0KLShvZikgOC4yOTg4NSBUagotLTMwMyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDQgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTkzOCBUSm0KLShJbikgOC4yOTg4NSBUagotLTMwMyBUSm0KLShwcmluY2lwbGUpIDM1LjQxNyBUagotLTMwMyBUSm0KLShpdCkgNS41MzkyMSBUagotLTMwNCBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0zMDMgVEptCi0oYmUpIDkuNDA0NjkgVGoKLTcyIDU2Mi41OTQgVGQKLShwb3NzaWJsZSkgMzIuNjU3NCBUagotLTI3MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjcwIFRKbQotKGRlKSA5LjQwNDY5IFRqCi0yNSBUSm0KLSh2aXNlKSAxNi4wNDk3IFRqCi0tMjcwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNzAgVEptCi0oZ29vZCkgMTkuOTI1MiBUagotLTI3MCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXkpIDkuNDA0NjkgVGoKLS0yNzAgVEptCi0odG8pIDcuNzUwOSBUagotLTI3MSBUSm0KLShhdXRvbWF0KSAzMi4wOTk1IFRqCi0xIFRKbQotKGljYWxseSkgMjIuMTM2OSBUagotLTI3MSBUSm0KLShjaG9vc2UpIDI3LjY2NjEgVGoKLS0yNzAgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0yNzAgVEptCi0oYWxnb3JpdGhtKSAzOC43NDQ2IFRqCi0tMjcwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNzAgVEptCi0odXNlLikgMTUuNzcwOCBUagotLTc0MCBUSm0KLShTdWNoKSAxOS45MjUyIFRqCi0tMjcwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNzEgVEptCi0obSkgNy43NTA5IFRqCi0xIFRKbQotKGVjaGFuaXNtKSAzNy42Mjg3IFRqCi0tMjcxIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvdWxkKSAxNy43MTM1IFRqCi0tMjcwIFRKbQotKHJlbmRlcikgMjUuNDQ0NSBUagotLTI3MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTcyIDU1MC42MzkgVGQKLShwYXJhbWV0ZXIpIDM5LjgzMDUgVGoKLS0yNTAgVEptCi0ob2Jzb2xldGUuKSAzNS42OTYgVGoKLVsxIDAgMCAxIDcyIDU0OC40ODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTUzOC41MjFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDUyOC43MjIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUG9zc2libGUpIDMzLjIxNTMgVGoKLS0yNTAgVEptCi0ocmV0dXJuKSAyMy43OTA3IFRqCi0tMjUwIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZXM6KSAyMy4yNDI3IFRqCi1bMSAwIDAgMSA3MiA1MjguNjIzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTQ0LjQ1OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAxNDMuNDYyIHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMTM5Ljg3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTUxOS4yNThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDUxOS4yNTggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfQ09ORklHX0VSUk9SKSA4OS42NjM0IFRqCi05OC40ODc5IDUwNy4zMDMgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh0aGUpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0obGlicmFyeSkgNDEuODQyOSBUagotLTQyNiBUSm0KLShoYXMpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oYmVlbikgMjMuOTEwMiBUagotLTQyNiBUSm0KLShtaXMtY29tcGlsZWQpIDcxLjczMDcgVGoKLTkwIDQ5NS4zNDggVGQKLShCWl9QQVJBTV9FUlJPUikgODMuNjg1OCBUagotOTguNDg3OSA0ODMuMzkyIFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oc3RybSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShOVUxMKSAyMy45MTAyIFRqCi05OC40ODc5IDQ3MS40MzcgVGQKLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShibG9ja1NpemUpIDUzLjc5OCBUagotLTQyNiBUSm0KLSg8KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKDEpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYmxvY2tTaXplKSA1My43OTggVGoKLS00MjYgVEptCi0oPikgNS45Nzc1NiBUagotLTQyNiBUSm0KLSg5KSA1Ljk3NzU2IFRqCi05OC40ODc5IDQ1OS40ODIgVGQKLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh2ZXJib3NpdHkpIDUzLjc5OCBUagotLTQyNiBUSm0KLSg8KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKDApIDUuOTc3NTYgVGoKLS00MjYgVEptCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odmVyYm9zaXR5KSA1My43OTggVGoKLS00MjYgVEptCi0oPikgNS45Nzc1NiBUagotLTQyNiBUSm0KLSg0KSA1Ljk3NzU2IFRqCi05OC40ODc5IDQ0Ny41MjcgVGQKLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh3b3JrRmFjdG9yKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKDwpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oMCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh3b3JrRmFjdG9yKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKD4pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oMjUwKSAxNy45MzI3IFRqCi05MCA0MzUuNTcyIFRkCi0oQlpfTUVNX0VSUk9SKSA3MS43MzA3IFRqCi05OC40ODc5IDQyMy42MTcgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShub3QpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oZW5vdWdoKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKG1lbW9yeSkgMzUuODY1NCBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShhdmFpbGFibGUpIDUzLjc5OCBUagotOTAgNDExLjY2MSBUZAotKEJaX09LKSAyOS44ODc4IFRqCi05OC40ODc5IDM5OS43MDYgVGQKLShvdGhlcndpc2UpIDUzLjc5OCBUagotWzEgMCAwIDEgNzIgMzg0LjE2NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zNzQuMjAzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzNjIuMjQ4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEFsbG8pIDE3LjcxMzUgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhYmxlKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKG5lKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh4dCkgNy43NTA5IFRqCi0tMjUwIFRKbQotKGFjdGlvbnM6KSAzMC45OTM2IFRqCi1bMSAwIDAgMSA3MiAzNjIuMTQ4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtNDguODE2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCA0Ny44MjA3IHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNDQuMjM0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTM1Mi43ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDM1Mi43ODMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3MpIDgzLjY4NTggVGoKLTk4LjQ4NzkgMzQwLjgyOCBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKEJaX09LKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHJldHVybmVkKSA0Ny44MjA1IFRqCi05OC40ODc5IDMyOC44NzMgVGQKLShubykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShzcGVjaWZpYykgNDcuODIwNSBUagotLTQyNiBUSm0KLShhY3Rpb24pIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0obmVlZGVkKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKGluKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGNhc2UpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0ob2YpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oZXJyb3IpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDcyIDMxMy4zMzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjE2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zMDMuMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI4Mi43MTEgVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKDMuMy4yLikgNDMuMDcyOSBUagotWzEgMCAwIDEgMTE5Ljg1OCAyODIuNzExXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS44NTggLTI4Mi43MTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExOS44NTggMjgyLjcxMSBUZAotL0YzOTJfMCAxNy4yMTU0IFRmCi0oQloyX2J6Q29tcHJlc3MpIDE0NC42MDkgVGoKLVsxIDAgMCAxIDI2NC40NjggMjgyLjcxMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTIuNDY4IC0yLjMzMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yNC45MDY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDIzLjkxMDMgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAyMC4zMjM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtMjcxLjAxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgMjcxLjAxNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShpbnQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oQloyX2J6Q29tcHJlc3MpIDgzLjY4NTggVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oYnpfc3RyZWFtKSA1My43OTggVGoKLTI2OC4zNzEgMjY5LjI3IFRkCi0oKikgNS45Nzc1NiBUagotMjc0LjM0OCAyNzEuMDE0IFRkCi0oc3RybSwpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGFjdGlvbikgMzUuODY1NCBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLVsxIDAgMCAxIDcyIDI1NS40NzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjQ1LjUxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyMzMuNTU1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFBybykgMTMuODM4MSBUagotMTUgVEptCi0odmlkZXMpIDIxLjAzMSBUagotLTIyMiBUSm0KLShtb3JlKSAyMC40NzMxIFRqCi0tMjIxIFRKbQotKGlucHV0KSAyMC40ODMxIFRqCi0tMjIyIFRKbQotKGFuZC9vcikgMjUuNDU0NCBUagotLTIyMiBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS0yMjIgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVyKSAxMS4wNTg1IFRqCi0tMjIxIFRKbQotKHNwYWNlKSAyMi4xMjY5IFRqCi0tMjIyIFRKbQotKGZvcikgMTEuNjE2NCBUagotLTIyMiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMjEgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTYwMSBUSm0KLShUaGUpIDE1LjQ5MTggVGoKLS0yMjIgVEptCi0oY2FsbGVyKSAyMi4xMjY5IFRqCi0tMjIyIFRKbQotKG1haW50YWlucykgMzguNzQ0NiBUagotLTIyMiBUSm0KLShpbnB1dCkgMjAuNDgzMSBUagotLTIyMSBUSm0KLShhbmQpIDE0LjM4NiBUagotLTIyMiBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS0yMjIgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVycywpIDE3LjQyNDYgVGoKLS0yMjcgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yMjIgVEptCi0oY2FsbHMpIDE4LjI2MTQgVGoKLVsxIDAgMCAxIDcyIDIyMS42XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yMjEuNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjIxLjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3MpIDgzLjY4NTggVGoKLVsxIDAgMCAxIDE1NS42ODYgMjIxLjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU1LjY4NiAtMjIxLjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1OC4xNzcgMjIxLjYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLSh0cmFuc2ZlcikgMzAuNDI1OCBUagotLTI1MCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKGJldHdlZW4pIDMzLjE5NTQgVGoKLS0yNTAgVEptCi0odGhlbS4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDcyIDIyMC4wNjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIxMC4xMDRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE5OS42ODMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oQmVmb3JlKSAyNy4xMDgyIFRqCi0tMjEyIFRKbQotKGVhY2gpIDE4LjI1MTUgVGoKLS0yMTMgVEptCi0oY2FsbCkgMTQuMzg2IFRqCi0tMjEyIFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDE0Ny45NjEgMTk5LjY4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDcuOTYxIC0xOTkuNjgzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDcuOTYxIDE5OS42ODMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3MpIDgzLjY4NTggVGoKLVsxIDAgMCAxIDIzMS42NDcgMTk5LjY4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzEuNjQ3IC0xOTkuNjgzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzEuNjQ3IDE5OS42ODMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMjM2LjMyOSAxOTkuNjgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIzNi4zMjkgLTE5OS42ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIzNi4zMjkgMTk5LjY4MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShuZXh0X2luKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAyNzguMTcyIDE5OS42ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc4LjE3MiAtMTk5LjY4M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjgwLjI4OCAxOTkuNjgzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHNob3VsZCkgMjYuNTcwMyBUagotLTIxMiBUSm0KLShwb2ludCkgMjAuNDgzMSBUagotLTIxMyBUSm0KLShhdCkgNy4xOTMgVGoKLS0yMTIgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjEzIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yMTIgVEptCi0odG8pIDcuNzUwOSBUagotLTIxMiBUSm0KLShiZSkgOS40MDQ2OSBUagotLTIxMyBUSm0KLShjb21wcmVzc2VkLCkgNDkuNTI0MSBUagotLTIyMCBUSm0KLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNDYzLjQ5MyAxOTkuNjgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2My40OTMgLTE5OS42ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ2My40OTMgMTk5LjY4MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShhdmFpbF9pbikgNDcuODIwNSBUagotWzEgMCAwIDEgNTExLjMxNCAxOTkuNjgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUxMS4zMTQgLTE5OS42ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUxMy40MyAxOTkuNjgzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHNob3VsZCkgMjYuNTcwMyBUagotNzIgMTg3LjcyOCBUZAotKGluZGljYXRlKSAzMS41NDE2IFRqCi0tMjQ2IFRKbQotKGhvKSA5Ljk2MjYgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjQ3IFRKbQotKG0pIDcuNzUwOSBUagotMSBUSm0KLShhbikgOS40MDQ2OSBUagotMTQgVEptCi0oeSkgNC45ODEzIFRqCi0tMjQ2IFRKbQotKGJ5dGVzKSAyMS4wMzEgVGoKLS0yNDYgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjQ2IFRKbQotKGxpYnJhcnkpIDI2LjU2MDMgVGoKLS0yNDcgVEptCi0obWF5KSAxNy4xNTU2IFRqCi0tMjQ2IFRKbQotKHJlYWQuKSAxOS42MzYzIFRqCi1bMSAwIDAgMSAyNTkuMjQyIDE4Ny43MjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjU5LjI0MiAtMTg3LjcyOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjU5LjI0MiAxODcuNzI4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekNvbXByZXNzKSA4My42ODU4IFRqCi1bMSAwIDAgMSAzNDIuOTI5IDE4Ny43MjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjkyOSAtMTg3LjcyOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzQ1LjM4MiAxODcuNzI4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHVwZGF0ZXMpIDMwLjQzNTcgVGoKLVsxIDAgMCAxIDM3OC4yNzEgMTg3LjcyOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNzguMjcxIC0xODcuNzI4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNzguMjcxIDE4Ny43MjggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obmV4dF9pbikgNDEuODQyOSBUagotWzEgMCAwIDEgNDIwLjExNCAxODcuNzI4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQyMC4xMTQgLTE4Ny43MjhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQyMC4xMTQgMTg3LjcyOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA0MjUuMDY2IDE4Ny43MjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDI1LjA2NiAtMTg3LjcyOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDI1LjA2NiAxODcuNzI4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGF2YWlsX2luKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA0NzIuODg2IDE4Ny43MjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjg4NiAtMTg3LjcyOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDc1LjM0IDE4Ny43MjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDQ5Mi4xNzkgMTg3LjcyOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTIuMTc5IC0xODcuNzI4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTIuMTc5IDE4Ny43MjggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0odG90YWxfaW4pIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDU0MCAxODcuNzI4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtMTg3LjcyOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTc1Ljc3MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKHJlXDAwM2VjdCkgMjQuODk2NSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0obnVtYmVyKSAzMC40MzU3IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGJ5dGVzKSAyMS4wMzEgVGoKLS0yNTAgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0yNTAgVEptCi0oaGFzKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKHJlYWQuKSAxOS42MzYzIFRqCi1bMSAwIDAgMSA3MiAxNzMuNjE2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjE2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xNjMuNjU0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxNTMuODU2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFNpbWlsYXJseSkgMzcuMDkwOCBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMTEzLjYxMSAxNTMuODU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExMy42MTEgLTE1My44NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExMy42MTEgMTUzLjg1NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShuZXh0X291dCkgNDcuODIwNSBUagotWzEgMCAwIDEgMTYxLjQzMiAxNTMuODU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2MS40MzIgLTE1My44NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE2NC4wNzIgMTUzLjg1NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yNjUgVEptCi0ocG9pbnQpIDIwLjQ4MzEgVGoKLS0yNjUgVEptCi0odG8pIDcuNzUwOSBUagotLTI2NSBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjY1IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWYpIDguMjk4ODUgVGoKLTI1IFRKbQotKGZlcikgMTEuMDU4NSBUagotLTI2NSBUSm0KLShpbikgNy43NTA5IFRqCi0tMjY1IFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjY1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI2NSBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjY1IFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNjUgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNjUgVEptCi0odG8pIDcuNzUwOSBUagotLTI2NSBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI2NSBUSm0KLShwbGFjZWQsKSAyOC40OTMgVGoKLS0yNjkgVEptCi0od2l0aCkgMTcuNzEzNSBUagotWzEgMCAwIDEgNDY0Ljc0MiAxNTMuODU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2NC43NDIgLTE1My44NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ2NC43NDIgMTUzLjg1NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShhdmFpbF9vdXQpIDUzLjc5OCBUagotWzEgMCAwIDEgNTE4LjU0IDE1My44NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTE4LjU0IC0xNTMuODU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MjEuMTgxIDE1My44NTYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaW5kaS0pIDE4LjgxOTQgVGoKLTcyIDE0MS45MDEgVGQKLShjYXRpbmcpIDI0LjM0ODYgVGoKLS0yMDkgVEptCi0oaG8pIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yMDkgVEptCi0obXVjaCkgMjIuMTM2OSBUagotLTIwOSBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS0yMDkgVEptCi0oc3BhY2UpIDIyLjEyNjkgVGoKLS0yMDkgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yMTAgVEptCi0oYSkgNC40MjMzOSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhaWxhYmxlLikgMjkuMDUwOSBUagotWzEgMCAwIDEgMjQzLjA4NyAxNDEuOTAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0My4wODcgLTE0MS45MDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI0My4wODcgMTQxLjkwMSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMzI2Ljc3MyAxNDEuOTAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMyNi43NzMgLTE0MS45MDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMyOC44NTYgMTQxLjkwMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh1cGRhdGVzKSAzMC40MzU3IFRqCi1bMSAwIDAgMSAzNjEuMzc1IDE0MS45MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzYxLjM3NSAtMTQxLjkwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzYxLjM3NSAxNDEuOTAxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKG5leHRfb3V0KSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA0MDkuMTk2IDE0MS45MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDA5LjE5NiAtMTQxLjkwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDA5LjE5NiAxNDEuOTAxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDQxMy44NTEgMTQxLjkwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MTMuODUxIC0xNDEuOTAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MTMuODUxIDE0MS45MDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYXZhaWxfb3V0KSA1My43OTggVGoKLVsxIDAgMCAxIDQ2Ny42NDkgMTQxLjkwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjcuNjQ5IC0xNDEuOTAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NjkuNzMyIDE0MS45MDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDQ4Ni4yMDIgMTQxLjkwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00ODYuMjAyIC0xNDEuOTAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00ODYuMjAyIDE0MS45MDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0odG90YWxfb3V0KSA1My43OTggVGoKLVsxIDAgMCAxIDU0MCAxNDEuOTAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtMTQxLjkwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTI5Ljk0NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKHJlXDAwM2VjdCkgMjQuODk2NSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0obnVtYmVyKSAzMC40MzU3IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGJ5dGVzKSAyMS4wMzEgVGoKLS0yNTAgVEptCi0ob3V0cHV0LikgMjcuOTU1MSBUagotWzEgMCAwIDEgNzIgMTI3Ljc4OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTE3LjgyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTA4LjAyOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShZKSA3LjE5MyBUagotMTEwIFRKbQotKG91KSA5Ljk2MjYgVGoKLS0yNzIgVEptCi0obWF5KSAxNy4xNTU2IFRqCi0tMjcyIFRKbQotKHBybykgMTMuMjgwMSBUagotMTUgVEptCi0odmlkZSkgMTcuMTU1NiBUagotLTI3MiBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI3MiBUSm0KLShyZW1vKSAyMC40NzMxIFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yNzIgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yNzIgVEptCi0obGl0dGxlKSAxOC4yNzE0IFRqCi0tMjcyIFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjcyIFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjcyIFRKbQotKG11Y2gpIDIyLjEzNjkgVGoKLS0yNzEgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI3MiBUSm0KLShhcykgOC4yOTg4NSBUagotLTI3MiBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNzIgVEptCi0obGlrKSAxMC41MjA1IFRqCi0xMCBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjcyIFRKbQotKG9uKSA5Ljk2MjYgVGoKLS0yNzIgVEptCi0oZWFjaCkgMTguMjUxNSBUagotLTI3MiBUSm0KLShjYWxsKSAxNC4zODYgVGoKLS0yNzIgVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDM5OS4xMjMgMTA4LjAyOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTkuMTIzIC0xMDguMDI5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zOTkuMTIzIDEwOC4wMjkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3MpIDgzLjY4NTggVGoKLVsxIDAgMCAxIDQ4Mi44MDkgMTA4LjAyOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00ODIuODA5IC0xMDguMDI5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00ODIuODA5IDEwOC4wMjkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotLTc1MiBUSm0KLShJbikgOC4yOTg4NSBUagotLTI3MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNzIgVEptCi0obGltaXQsKSAyMS4zMiBUagotNzIgOTYuMDczNiBUZAotKGl0KSA1LjUzOTIxIFRqCi0tMjY2IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjY1IFRKbQotKGFjY2VwdGFibGUpIDQyLjA0MjIgVGoKLS0yNjYgVEptCi0odG8pIDcuNzUwOSBUagotLTI2NiBUSm0KLShzdXBwbHkpIDI2LjU3MDMgVGoKLS0yNjYgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNjUgVEptCi0ocmVtbykgMjAuNDczMSBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjY2IFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNjYgVEptCi0ob25lKSAxNC4zODYgVGoKLS0yNjUgVEptCi0oYnl0ZSkgMTcuMTU1NiBUagotLTI2NiBUSm0KLShhdCkgNy4xOTMgVGoKLS0yNjYgVEptCi0oYSkgNC40MjMzOSBUagotLTI2NiBUSm0KLSh0aW1lLCkgMjAuMjA0MiBUagotLTI2OSBUSm0KLShhbHRob3VnaCkgMzQuODY5MSBUagotLTI2NiBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNjYgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG91bGQpIDE3LjcxMzUgVGoKLS0yNjUgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNjYgVEptCi0odGVycmlibHkpIDI5LjMyOTkgVGoKLS0yNjYgVEptCi0oaW5lZikgMTUuNDkxOCBUagotMjUgVEptCi0oXDAwMmNpZW50LikgMjcuMzk3MiBUagotLTcxNCBUSm0KLShZKSA3LjE5MyBUagotMTEwIFRKbQotKG91KSA5Ljk2MjYgVGoKLS0yNjYgVEptCi0oc2hvdWxkKSAyNi41NzAzIFRqCi03MiA4NC4xMTg0IFRkCi0oYWwpIDcuMTkzIFRqCi0xMCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXlzKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKGVuc3VyZSkgMjYuMDAyNCBUagotLTI1MCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKGF0KSA3LjE5MyBUagotLTI1MCBUSm0KLShsZWFzdCkgMTguMjYxNCBUagotLTI1MCBUSm0KLShvbmUpIDE0LjM4NiBUagotLTI1MCBUSm0KLShieXRlKSAxNy4xNTU2IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKG91dHB1dCkgMjUuNDY0NCBUagotLTI1MCBUSm0KLShzcGFjZSkgMjIuMTI2OSBUagotLTI1MCBUSm0KLShpcykgNi42NDUwNSBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFpbGFibGUpIDI2LjU2MDMgVGoKLS0yNTAgVEptCi0oYXQpIDcuMTkzIFRqCi0tMjUwIFRKbQotKGVhY2gpIDE4LjI1MTUgVGoKLS0yNTAgVEptCi0oY2FsbC4pIDE2Ljg3NjYgVGoKLVsxIDAgMCAxIDcyIDgxLjk2MTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yMS4xNDgyXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuOTUxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC45NTE0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDEzKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDE3IDE3Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA3Ni40OTc5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjU2OSAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE5LjA2NyA3NDkuMjQ1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFByb2dyYW1taW5nKSA1NC43OTQzIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ5Ni41NTYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTYuNTU2IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTYuNTU2IDc0OS4yNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDU0NC4zNzYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguMzA1IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtNzQxLjU1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBKSA3LjE5MyBUagotLTI1MCBUSm0KLShzZWNvbmQpIDI3LjY2NjEgVGoKLS0yNTAgVEptCi0ocHVycG9zZSkgMzEuNTQxNiBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotWzEgMCAwIDEgMTU2LjY2MiA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1Ni42NjIgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1Ni42NjIgNzEwLjAzNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMjQwLjM0OCA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0MC4zNDggLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI0Mi44MzkgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpcykgNi42NDUwNSBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKHJlcXVlc3QpIDI4Ljc3MiBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKGNoYW5nZSkgMjguMjE0MSBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShtb2RlKSAyMi4xMzY5IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjUwIFRKbQotKHN0cmVhbS4pIDI5LjA1MDkgVGoKLVsxIDAgMCAxIDcyIDcwNy44OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjk3LjkxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjg4LjEyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKENvbmNlcHR1YWxseSkgNTMuMTMwNSBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTIxNyBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjEwIFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yMDkgVEptCi0oc3RyZWFtKSAyNi41NjAzIFRqCi0tMjA5IFRKbQotKGNhbikgMTMuODI4MSBUagotLTIwOSBUSm0KLShiZSkgOS40MDQ2OSBUagotLTIxMCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjA5IFRKbQotKG9uZSkgMTQuMzg2IFRqCi0tMjA5IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjA5IFRKbQotKGZvdXIpIDE2LjU5NzcgVGoKLS0yMTAgVEptCi0oc3RhdGVzOikgMjQuOTA2NSBUagotLTI4OSBUSm0KLShJRExFLCkgMjUuMTc1NSBUagotLTIwOSBUSm0KLShSKSA2LjY0NTA1IFRqCi00MCBUSm0KLShVTk5JTkcsKSA0MS43NzMyIFRqCi0tMjEwIFRKbQotKEZMVVNISU5HKSA0OS4yNTUxIFRqCi0tMjA5IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjA5IFRKbQotKEZJTklTSElORy4pIDUyLjI5MzcgVGoKLS00MTkgVEptCi0oQmUtKSAxNC4zODYgVGoKLTcyIDY3Ni4xNjQgVGQKLShmb3JlKSAxNi4wMzk4IFRqCi0tMjY0IFRKbQotKGluaXRpYWxpc2F0aW9uKSA0OS44MjMgVGoKLS0yNjMgVEptCi0oXCgpIDMuMzE3NTUgVGoKLVsxIDAgMCAxIDE0Ni40MzQgNjc2LjE2NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDYuNDM0IC02NzYuMTY0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDYuNDM0IDY3Ni4xNjQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3NJbml0KSAxMDcuNTk2IFRqCi1bMSAwIDAgMSAyNTQuMDMxIDY3Ni4xNjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjU0LjAzMSAtNjc2LjE2NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjU0LjAzMSA2NzYuMTY0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwpKSAzLjMxNzU1IFRqCi0tMjY0IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjYzIFRKbQotKGFmdGVyKSAxOC4yNTE1IFRqCi0tMjY0IFRKbQotKHRlcm1pbmF0aW9uKSA0NS45Mzc1IFRqCi0tMjY0IFRKbQotKFwoKSAzLjMxNzU1IFRqCi1bMSAwIDAgMSAzNDkuNzUgNjc2LjE2NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNDkuNzUgLTY3Ni4xNjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM0OS43NSA2NzYuMTY0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekNvbXByZXNzRW5kKSAxMDEuNjE5IFRqCi1bMSAwIDAgMSA0NTEuMzY5IDY3Ni4xNjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDUxLjM2OSAtNjc2LjE2NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDUxLjM2OSA2NzYuMTY0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwpLCkgNS44MDgyIFRqCi0tMjY3IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNjQgVEptCi0oc3RyZWFtKSAyNi41NjAzIFRqCi0tMjY0IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjYzIFRKbQotKHJlKSA3Ljc0MDk0IFRqCi0xNSBUSm0KLShnKSA0Ljk4MTMgVGoKLTUgVEptCi0oYXJkZWQpIDIyLjEyNjkgVGoKLTcyIDY2NC4yMDkgVGQKLShhcykgOC4yOTg4NSBUagotLTI1MCBUSm0KLShJRExFLikgMjUuMTc1NSBUagotWzEgMCAwIDEgNzIgNjY0LjExXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02NTQuMTQ3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2NDIuMjkxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFVwb24pIDIyLjEzNjkgVGoKLS0zODkgVEptCi0oaW5pdGlhbGlzYXRpb24pIDQ5LjgyMyBUagotLTM5MCBUSm0KLShcKCkgMy4zMTc1NSBUagotWzEgMCAwIDEgMTU1LjAzNiA2NDIuMjkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1NS4wMzYgLTY0Mi4yOTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1NS4wMzYgNjQyLjI5MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzc0luaXQpIDEwNy41OTYgVGoKLVsxIDAgMCAxIDI2Mi42MzIgNjQyLjI5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNjIuNjMyIC02NDIuMjkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNjIuNjMyIDY0Mi4yOTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXCksKSA1LjgwODIgVGoKLS00MjQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzkwIFRKbQotKHN0cmVhbSkgMjYuNTYwMyBUagotLTM4OSBUSm0KLShpcykgNi42NDUwNSBUagotLTM4OSBUSm0KLShwbGFjZWQpIDI2LjAwMjQgVGoKLS0zOTAgVEptCi0oaW4pIDcuNzUwOSBUagotLTM4OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zOTAgVEptCi0oUikgNi42NDUwNSBUagotNDAgVEptCi0oVU5OSU5HKSAzOS4yODI1IFRqCi0tMzg5IFRKbQotKHN0YXRlLikgMjAuNzUyMSBUagotLTE0NTcgVEptCi0oU3Vic2VxdWVudCkgNDUuOTM3NSBUagotLTM4OSBUSm0KLShjYWxscykgMTguMjYxNCBUagotNzIgNjMwLjMzNiBUZAotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDgzLjgxOCA2MzAuMzM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTgzLjgxOCAtNjMwLjMzNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODMuODE4IDYzMC4zMzYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3MpIDgzLjY4NTggVGoKLVsxIDAgMCAxIDE2Ny41MDQgNjMwLjMzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjcuNTA0IC02MzAuMzM2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzEuNTcxIDYzMC4zMzYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tNDA4IFRKbQotKHBhc3MpIDE3LjE1NTYgVGoKLVsxIDAgMCAxIDIyMy40MzEgNjMwLjMzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMjMuNDMxIC02MzAuMzM2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjMuNDMxIDYzMC4zMzYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfUlVOKSAzNS44NjU0IFRqCi1bMSAwIDAgMSAyNTkuMjk3IDYzMC4zMzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjU5LjI5NyAtNjMwLjMzNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjYzLjM2MyA2MzAuMzM2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFzKSA4LjI5ODg1IFRqCi0tNDA4IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTQwOCBUSm0KLShyZXF1ZXN0ZWQpIDM4LjE3NjcgVGoKLS00MDkgVEptCi0oYWN0aW9uOykgMjcuMTE4MiBUagotLTQ4NyBUSm0KLShvdGhlcikgMjAuNDczMSBUagotLTQwOCBUSm0KLShhY3Rpb25zKSAyOC4yMjQgVGoKLS00MDggVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tNDA5IFRKbQotKGlsbGUpIDEyLjczMjIgVGoKLTE1IFRKbQotKGcpIDQuOTgxMyBUagotNSBUSm0KLShhbCkgNy4xOTMgVGoKLS00MDggVEptCi0oYW5kKSAxNC4zODYgVGoKLS00MDggVEptCi0od2lsbCkgMTUuNTAxOCBUagotLTQwOCBUSm0KLShyZXN1bHQpIDIyLjEzNjkgVGoKLS00MDkgVEptCi0oaW4pIDcuNzUwOSBUagotWzEgMCAwIDEgNzIgNjE4LjM4MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjE4LjM4MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjE4LjM4MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9TRVFVRU5DRV9FUlJPUikgMTAxLjYxOSBUagotWzEgMCAwIDEgMTczLjYxOSA2MTguMzgxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3My42MTkgLTYxOC4zODFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3My42MTkgNjE4LjM4MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiA2MTcuMDcxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02MDcuMTA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1OTYuNDYzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEF0KSA5Ljk2MjYgVGoKLS0yNzkgVEptCi0oc29tZSkgMjEuMDMxIFRqCi0tMjc5IFRKbQotKHBvaW50LCkgMjIuOTczOCBUagotLTI4NiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNzkgVEptCi0oY2FsbGluZykgMjcuMTE4MiBUagotLTI3OSBUSm0KLShwcm9ncmFtKSAzMy43NTMzIFRqCi0tMjc5IFRKbQotKHdpbGwpIDE1LjUwMTggVGoKLS0yNzkgVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI3OCBUSm0KLShwcm8pIDEzLjI4MDEgVGoKLTE0IFRKbQotKHZpKSA3Ljc1MDkgVGoKLTEgVEptCi0oZGVkKSAxNC4zODYgVGoKLS0yNzkgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS0yNzkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjc5IFRKbQotKGlucHV0KSAyMC40ODMxIFRqCi0tMjc5IFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNzkgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0yNzkgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFudHMpIDE2LjA0OTcgVGoKLS0yNzkgVEptCi0odG8uKSAxMC4yNDE2IFRqCi0tNzkzIFRKbQotKEl0KSA2LjA4NzE1IFRqCi0tMjc5IFRKbQotKHdpbGwpIDE1LjUwMTggVGoKLS0yNzkgVEptCi0odGhlbikgMTcuMTU1NiBUagotLTI3OSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYW50KSAxMi4xNzQzIFRqCi0tMjc5IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNzkgVEptCi0oXDAwMm5pc2gpIDIyLjE0NjkgVGoKLS0yNzkgVEptCi0odXApIDkuOTYyNiBUagotLTI3OSBUSm0KLSgtLSkgNi42MzUwOSBUagotNzIgNTg0LjUwOCBUZAotKGluKSA3Ljc1MDkgVGoKLS0yODcgVEptCi0oZWYpIDcuNzQwOTQgVGoKLTI1IFRKbQotKGZlY3QsKSAxNy40MjQ2IFRqCi0tMjk3IFRKbQotKGFza2luZykgMjYuMDEyMyBUagotLTI4OCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yODcgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTI4NyBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjg4IFRKbQotKHByb2Nlc3MpIDI5Ljg3NzggVGoKLS0yODcgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI4OCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjg3IFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMjg3IFRKbQotKG1pZ2h0KSAyMy4yNTI3IFRqCi0tMjg4IFRKbQotKGhhKSA5LjQwNDY5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yODcgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVyZWQpIDIwLjQ2MzIgVGoKLS0yODggVEptCi0oaW50ZXJuYWxseSkgMzguMTg2NiBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTg0NCBUSm0KLShJbikgOC4yOTg4NSBUagotLTI4OCBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yODcgVEptCi0oc3RhdGUsKSAyMC43NTIxIFRqCi1bMSAwIDAgMSA0NTYuMzE0IDU4NC41MDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDU2LjMxNCAtNTg0LjUwOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDU2LjMxNCA1ODQuNTA4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekNvbXByZXNzKSA4My42ODU4IFRqCi1bMSAwIDAgMSA1NDAgNTg0LjUwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01NDAgLTU4NC41MDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU3Mi41NTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0od2lsbCkgMTUuNTAxOCBUagotLTI1OCBUSm0KLShubykgOS45NjI2IFRqCi0tMjU3IFRKbQotKGxvbmdlcikgMjUuNDU0NCBUagotLTI1OCBUSm0KLShhdHRlbXB0KSAyOS44ODc4IFRqCi0tMjU4IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTggVEptCi0ocmVhZCkgMTcuMTQ1NiBUagotLTI1NyBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjU4IFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLVsxIDAgMCAxIDIzNC4yMDcgNTcyLjU1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzQuMjA3IC01NzIuNTUzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzQuMjA3IDU3Mi41NTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obmV4dF9pbikgNDEuODQyOSBUagotWzEgMCAwIDEgMjc2LjA1MSA1NzIuNTUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3Ni4wNTEgLTU3Mi41NTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3Ni4wNTEgNTcyLjU1MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMjYwIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTI1NyBUSm0KLShpdCkgNS41MzkyMSBUagotLTI1OCBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMjU4IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhbnQpIDEyLjE3NDMgVGoKLS0yNTcgVEptCi0odG8pIDcuNzUwOSBUagotLTI1OCBUSm0KLSh3cml0ZSkgMjAuNDczMSBUagotLTI1OCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjU4IFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDQwNy4wODIgNTcyLjU1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MDcuMDgyIC01NzIuNTUzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MDcuMDgyIDU3Mi41NTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obmV4dF9vdXQpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDQ1NC45MDIgNTcyLjU1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NTQuOTAyIC01NzIuNTUzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NTQuOTAyIDU3Mi41NTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotLTY2NiBUSm0KLShCZWNhdXNlKSAzMy4xOTU0IFRqCi0tMjU4IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1OCBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLTcyIDU2MC41OTggVGQKLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVmKSA4LjI5ODg1IFRqCi0yNSBUSm0KLShmZXIpIDExLjA1ODUgVGoKLS0yMjggVEptCi0oc3VwcGxpZWQpIDMzLjc2MzMgVGoKLS0yMjggVEptCi0oYnkpIDkuOTYyNiBUagotLTIyOSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMjggVEptCi0odXNlcikgMTYuNTk3NyBUagotLTIyOCBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0yMjggVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yMjggVEptCi0oYXJiaXRyYXJpbHkpIDM5Ljg0MDQgVGoKLS0yMjkgVEptCi0oc21hKSAxNi4wNDk3IFRqCi0xIFRKbQotKGxsLCkgOC4wMjk4NiBUagotLTIzMyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMjggVEptCi0oXDAwMm5pc2hpbmctdXApIDQ4LjE1OTIgVGoKLS0yMjggVEptCi0ob3BlcmF0aW9uKSAzNy42Mjg3IFRqCi0tMjI5IFRKbQotKGNhbm5vdCkgMjYuNTYwMyBUagotLTIyOCBUSm0KLShuZWNlc3NhcmlseSkgNDQuMjYzOCBUagotLTIyOCBUSm0KLShiZSkgOS40MDQ2OSBUagotLTIyOCBUSm0KLShkb25lKSAxOS4zNjczIFRqCi0tMjI4IFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yMjkgVEptCi0oYSkgNC40MjMzOSBUagotLTIyOCBUSm0KLShzaW5nbGUpIDIzLjgwMDcgVGoKLTcyIDU0OC42NDMgVGQKLShjYWxsKSAxNC4zODYgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDk5LjY2NTkgNTQ4LjY0M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05OS42NjU5IC01NDguNjQzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05OS42NjU5IDU0OC42NDMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3MpIDgzLjY4NTggVGoKLVsxIDAgMCAxIDE4My4zNTIgNTQ4LjY0M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODMuMzUyIC01NDguNjQzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODMuMzUyIDU0OC42NDMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgNTQ3LjEwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTM3LjE0Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTI2LjcyNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJbnN0ZWFkLCkgMzEuMjYyNiBUagotLTM0NiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMjcgVEptCi0oY2FsbGluZykgMjcuMTE4MiBUagotLTMyNiBUSm0KLShwcm9ncmFtKSAzMy43NTMzIFRqCi0tMzI3IFRKbQotKHBhc3NlcykgMjUuNDU0NCBUagotWzEgMCAwIDEgMjE4LjIzMSA1MjYuNzI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxOC4yMzEgLTUyNi43MjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxOC4yMzEgNTI2LjcyNSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9GSU5JU0gpIDUzLjc5OCBUagotWzEgMCAwIDEgMjcyLjAyOSA1MjYuNzI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3Mi4wMjkgLTUyNi43MjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3NS4yODQgNTI2LjcyNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhcykgOC4yOTg4NSBUagotLTMyNyBUSm0KLShhbikgOS40MDQ2OSBUagotLTMyNyBUSm0KLShhY3Rpb24pIDI0LjM0ODYgVGoKLS0zMjYgVEptCi0odG8pIDcuNzUwOSBUagotWzEgMCAwIDEgMzM4LjEwOCA1MjYuNzI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzOC4xMDggLTUyNi43MjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzOC4xMDggNTI2LjcyNSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgNDIxLjc5NSA1MjYuNzI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQyMS43OTUgLTUyNi43MjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQyMS43OTUgNTI2LjcyNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi0tMTA4MSBUSm0KLShUaGlzKSAxNy43MTM1IFRqCi0tMzI2IFRKbQotKGNoYW5nZXMpIDMyLjA4OTUgVGoKLS0zMjcgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzI3IFRKbQotKHN0cmVhbScpIDI5Ljg3NzggVGoKLTU1IFRKbQotKHMpIDMuODc1NDUgVGoKLTcyIDUxNC43NyBUZAotKHN0YXRlKSAxOC4yNjE0IFRqCi0tMjkxIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yOTAgVEptCi0oRklOSVNISU5HLikgNTIuMjkzNyBUagotLTU4MSBUSm0KLShBbikgMTIuMTc0MyBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMjkxIFRKbQotKHJlbWFpbmluZykgNDAuMzk4MyBUagotLTI5MCBUSm0KLShpbnB1dCkgMjAuNDgzMSBUagotLTI5MSBUSm0KLShcKGllLCkgMTMuMDAxMiBUagotWzEgMCAwIDEgMjY0LjQ1MiA1MTQuNzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjY0LjQ1MiAtNTE0Ljc3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNjQuNDUyIDUxNC43NyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShuZXh0X2luWzApIDUzLjc5OCBUagotLTYwMCBUSm0KLSguLikgMTEuOTU1MSBUagotLTEyMDAgVEptCi0oYXZhaWxfaW4tMV0pIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDQxMy44OTIgNTE0Ljc3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQxMy44OTIgLTUxNC43N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDEzLjg5MiA1MTQuNzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXCkpIDMuMzE3NTUgVGoKLS0yOTEgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yOTAgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI5MSBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI5MCBUSm0KLSh0cmFuc2ZlcnJlZCkgNDMuMTQ4IFRqCi03MiA1MDIuODE0IFRkCi0odG8pIDcuNzUwOSBUagotLTQyMSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS00MjEgVEptCi0ob3V0cHV0KSAyNS40NjQ0IFRqCi0tNDIxIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWYpIDguMjk4ODUgVGoKLTI1IFRKbQotKGZlcikgMTEuMDU4NSBUagotNTUgVEptCi0oLikgMi40OTA2NSBUagotLTE2NDYgVEptCi0oVCkgNi4wODcxNSBUagotODAgVEptCi0obykgNC45ODEzIFRqCi0tNDIxIFRKbQotKGRvKSA5Ljk2MjYgVGoKLS00MjIgVEptCi0odGhpcykgMTQuMzk2IFRqCi0xIFRKbQotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDIyMi4zMzkgNTAyLjgxNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMjIuMzM5IC01MDIuODE0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjIuMzM5IDUwMi44MTQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3MpIDgzLjY4NTggVGoKLVsxIDAgMCAxIDMwNi4wMjUgNTAyLjgxNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDYuMDI1IC01MDIuODE0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMTAuMjIgNTAyLjgxNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShtdXN0KSAxOS4zNzczIFRqCi0tNDIxIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tNDIxIFRKbQotKGNhbGxlZCkgMjMuNzkwNyBUagotLTQyMSBUSm0KLShyZXBlYXRlZGx5KSA0MS40OTQyIFRqCi0tNDIxIFRKbQotKHVudGlsKSAxOC4yNzE0IFRqCi0tNDIxIFRKbQotKGFsbCkgOS45NjI2IFRqCi0tNDIxIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTQyMSBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS00MjEgVEptCi0oaGFzKSAxMy4yODAxIFRqCi0tNDIxIFRKbQotKGJlZW4pIDE4LjgwOTQgVGoKLTcyIDQ5MC44NTkgVGQKLShjb25zdW1lZC4pIDQyLjg4OSBUagotLTEzOTcgVEptCi0oQXQpIDkuOTYyNiBUagotLTM3OSBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMzgwIFRKbQotKHBvaW50LCkgMjIuOTczOCBUagotWzEgMCAwIDEgMTg4LjM0NiA0OTAuODU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE4OC4zNDYgLTQ5MC44NTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE4OC4zNDYgNDkwLjg1OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMjcyLjAzMyA0OTAuODU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3Mi4wMzMgLTQ5MC44NTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3NS44MTMgNDkwLjg1OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShyZXR1cm5zKSAyNy42NjYxIFRqCi1bMSAwIDAgMSAzMDcuMjU5IDQ5MC44NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzA3LjI1OSAtNDkwLjg1OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzA3LjI1OSA0OTAuODU5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1NUUkVBTV9FTkQpIDc3LjcwODMgVGoKLVsxIDAgMCAxIDM4NC45NjggNDkwLjg1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zODQuOTY4IC00OTAuODU5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zODQuOTY4IDQ5MC44NTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTM3OSBUSm0KLShhbmQpIDE0LjM4NiBUagotLTM4MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNzkgVEptCi0oc3RyZWFtJykgMjkuODc3OCBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTM4MCBUSm0KLShzdGF0ZSkgMTguMjYxNCBUagotLTM3OSBUSm0KLShpcykgNi42NDUwNSBUagotLTM4MCBUSm0KLShzZXQpIDExLjA2ODQgVGoKLS0zNzkgVEptCi0oYmFjaykgMTguODA5NCBUagotLTM3OSBUSm0KLSh0bykgNy43NTA5IFRqCi03MiA0NzguOTA0IFRkCi0oSURMRS4pIDI1LjE3NTUgVGoKLVsxIDAgMCAxIDk5LjY2NjIgNDc4LjkwNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05OS42NjYyIC00NzguOTA0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05OS42NjYyIDQ3OC45MDQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3NFbmQpIDEwMS42MTkgVGoKLVsxIDAgMCAxIDIwMS4yODUgNDc4LjkwNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDEuMjg1IC00NzguOTA0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDMuNzc2IDQ3OC45MDQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMjUwIFRKbQotKHRoZW4pIDE3LjE1NTYgVGoKLS0yNTAgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oY2FsbGVkLikgMjYuMjgxMyBUagotWzEgMCAwIDEgNzIgNDc3LjM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00NjcuNDA3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NTYuOTg2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEp1c3QpIDE1LjUwMTggVGoKLS0zODAgVEptCi0odG8pIDcuNzUwOSBUagotLTM4MCBUSm0KLShtYWspIDE3LjE1NTYgVGoKLTEwIFRKbQotKGUpIDQuNDIzMzkgVGoKLS0zNzkgVEptCi0oc3VyZSkgMTYuNTk3NyBUagotLTM4MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zODAgVEptCi0oY2FsbGluZykgMjcuMTE4MiBUagotLTM4MCBUSm0KLShwcm9ncmFtKSAzMy43NTMzIFRqCi0tMzc5IFRKbQotKGRvZXMpIDE4LjI2MTQgVGoKLS0zODAgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMzgwIFRKbQotKGNoZWF0LCkgMjMuNTExNyBUagotLTQxMiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zODAgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTM4MCBUSm0KLShtYWspIDE3LjE1NTYgVGoKLTEwIFRKbQotKGVzKSA4LjI5ODg1IFRqCi0tMzc5IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zODAgVEptCi0obm90ZSkgMTcuMTU1NiBUagotLTM4MCBUSm0KLShvZikgOC4yOTg4NSBUagotWzEgMCAwIDEgNDE1LjcwOCA0NTYuOTg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQxNS43MDggLTQ1Ni45ODZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxNS43MDggNDU2Ljk4NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShhdmFpbF9pbikgNDcuODIwNSBUagotWzEgMCAwIDEgNDYzLjUyOCA0NTYuOTg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2My41MjggLTQ1Ni45ODZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ2Ny4zMTIgNDU2Ljk4NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhdCkgNy4xOTMgVGoKLS0zODAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzgwIFRKbQotKHRpbWUpIDE3LjcxMzUgVGoKLS0zNzkgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zODAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi03MiA0NDUuMDMxIFRkCi0oXDAwMnJzdCkgMTUuNTAxOCBUagotLTI4NiBUSm0KLShjYWxsKSAxNC4zODYgVGoKLS0yODYgVEptCi0odCkgMi43Njk2IFRqCi0xIFRKbQotKG8pIDQuOTgxMyBUagotWzEgMCAwIDEgMTE4LjE3OSA0NDUuMDMxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOC4xNzkgLTQ0NS4wMzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExOC4xNzkgNDQ1LjAzMSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMjAxLjg2NSA0NDUuMDMxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwMS44NjUgLTQ0NS4wMzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwNC43MTMgNDQ1LjAzMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aGljaCkgMjQuMzQ4NiBUagotLTI4NiBUSm0KLShoYXMpIDEzLjI4MDEgVGoKLVsxIDAgMCAxIDI0OC4wMzUgNDQ1LjAzMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNDguMDM1IC00NDUuMDMxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNDguMDM1IDQ0NS4wMzEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfRklOSVNIKSA1My43OTggVGoKLVsxIDAgMCAxIDMwMS44MzMgNDQ1LjAzMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDEuODMzIC00NDUuMDMxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMDQuNjggNDQ1LjAzMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhcykgOC4yOTg4NSBUagotLTI4NiBUSm0KLShhbikgOS40MDQ2OSBUagotLTI4NiBUSm0KLShhY3Rpb24pIDI0LjM0ODYgVGoKLS0yODUgVEptCi0oXChpZSwpIDEzLjAwMTIgVGoKLS0yOTUgVEptCi0oYXQpIDcuMTkzIFRqCi0tMjg2IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI4NiBUSm0KLSh0aW1lKSAxNy43MTM1IFRqCi0tMjg1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI4NiBUSm0KLShwcm9ncmFtKSAzMy43NTMzIFRqCi0tMjg2IFRKbQotKGhhcykgMTMuMjgwMSBUagotLTI4NiBUSm0KLShhbm5vdW5jZWQpIDQzLjE1OCBUagotLTI4NSBUSm0KLShpdHMpIDkuNDE0NjYgVGoKLTcyIDQzMy4wNzYgVGQKLShpbnRlbnRpb24pIDM1LjQyNyBUagotLTI5MiBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjkyIFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTI5MSBUSm0KLShzdXBwbHkpIDI2LjU3MDMgVGoKLS0yOTIgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI5MiBUSm0KLShtb3JlKSAyMC40NzMxIFRqCi0tMjkyIFRKbQotKGlucHV0XCkuKSAyNi4yOTEzIFRqCi0tODcwIFRKbQotKEJ5KSAxMS42MjY0IFRqCi0tMjkyIFRKbQotKGNvbXBhcmluZykgNDIuNjEgVGoKLS0yOTIgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjkyIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZSkgMTYuNTk3NyBUagotLTI5MSBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMjkyIFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0yOTIgVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDM5Mi44NjIgNDMzLjA3Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTIuODYyIC00MzMuMDc2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zOTIuODYyIDQzMy4wNzYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYXZhaWxfaW4pIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDQ0MC42ODIgNDMzLjA3Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDAuNjgyIC00MzMuMDc2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDMuNTg5IDQzMy4wNzYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0obykgNC45ODEzIFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyKSA3Ljc0MDk0IFRqCi0tMjkyIFRKbQotKHN1YnNlcXVlbnQpIDQ0LjI3MzggVGoKLS0yOTIgVEptCi0oY2FsbHMpIDE4LjI2MTQgVGoKLS0yOTEgVEptCi0odG8pIDcuNzUwOSBUagotWzEgMCAwIDEgNzIgNDIxLjEyMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDIxLjEyMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDIxLjEyMSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMTU1LjY4NiA0MjEuMTIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1NS42ODYgLTQyMS4xMjFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1NS42ODYgNDIxLjEyMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMjQ3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI0NyBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMjQ2IFRKbQotKGNhbikgMTMuODI4MSBUagotLTI0NyBUSm0KLShkZXRlY3QpIDIzLjc5MDcgVGoKLS0yNDYgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI0NyBUSm0KLShhdHQpIDkuOTYyNiBUagotMSBUSm0KLShlbXB0cykgMjMuODAwNyBUagotLTI0NyBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjQ2IFRKbQotKHNsaXApIDE0LjM5NiBUagotLTI0NyBUSm0KLShpbikgNy43NTA5IFRqCi0tMjQ2IFRKbQotKG1vcmUpIDIwLjQ3MzEgVGoKLS0yNDcgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI0NiBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjQ3IFRKbQotKGNvbXByZXNzLikgNDAuMTE5NCBUagotLTYxNyBUSm0KLShBbikgMTIuMTc0MyBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMjQ3IFRKbQotKGNhbGxzKSAxOC4yNjE0IFRqCi0tMjQ2IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI0NyBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTI0NiBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNDcgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLTcyIDQwOS4xNjYgVGQKLShkZXRlY3RlZCkgMzMuMTk1NCBUagotLTI1MCBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMjUwIFRKbQotKHJldHVybikgMjMuNzkwNyBUagotWzEgMCAwIDEgMTUxLjk1OSA0MDkuMTY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1MS45NTkgLTQwOS4xNjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1MS45NTkgNDA5LjE2NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9TRVFVRU5DRV9FUlJPUikgMTAxLjYxOSBUagotWzEgMCAwIDEgMjUzLjU3OCA0MDkuMTY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1My41NzggLTQwOS4xNjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1My41NzggNDA5LjE2NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi0tNTAwIFRKbQotKFRoaXMpIDE3LjcxMzUgVGoKLS0yNTAgVEptCi0oaW5kaWNhdGVzKSAzNS40MTcgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShwcm9ncmFtbWluZykgNTQuMjM2NCBUagotLTI1MCBUSm0KLShtaXN0YWspIDI2LjU3MDMgVGoKLTEwIFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0yNTAgVEptCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMjUwIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKGNvcnJlY3RlZC4pIDM5LjU1MTUgVGoKLVsxIDAgMCAxIDcyIDQwNy4wMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM5Ny4wNDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM4Ny4yNDggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSW5zdGVhZCkgMjguNzcyIFRqCi0tMjI0IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjIzIFRKbQotKGFza2luZykgMjYuMDEyMyBUagotLTIyNCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjIzIFRKbQotKFwwMDJuaXNoLCkgMjQuNjM3NSBUagotLTIyOSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMjQgVEptCi0oY2FsbGluZykgMjcuMTE4MiBUagotLTIyMyBUSm0KLShwcm9ncmFtKSAzMy43NTMzIFRqCi0tMjI0IFRKbQotKG1heSkgMTcuMTU1NiBUagotLTIyNCBUSm0KLShhc2spIDEzLjI4MDEgVGoKLVsxIDAgMCAxIDI5My4yODIgMzg3LjI0OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yOTMuMjgyIC0zODcuMjQ4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTMuMjgyIDM4Ny4yNDggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3MpIDgzLjY4NTggVGoKLVsxIDAgMCAxIDM3Ni45NjggMzg3LjI0OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNzYuOTY4IC0zODcuMjQ4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNzkuMTk2IDM4Ny4yNDggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odG8pIDcuNzUwOSBUagotLTIyNCBUSm0KLSh0YWspIDEyLjE3NDMgVGoKLTEwIFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yMjMgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS0yMjQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjIzIFRKbQotKHJlbWFpbmluZykgNDAuMzk4MyBUagotLTIyNCBUSm0KLShpbnB1dCwpIDIyLjk3MzggVGoKLS0yMjkgVEptCi0oY29tcHJlc3MpIDM3LjYyODcgVGoKLTcyIDM3NS4yOTMgVGQKLShpdCkgNS41MzkyMSBUagotLTI3OCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI3OCBUSm0KLSh0ZXJtaW5hdGUpIDM3LjYyODcgVGoKLS0yNzggVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjc4IFRKbQotKGN1cnJlbnQpIDI4LjIxNDEgVGoKLS0yNzcgVEptCi0oXChCdXJybykgMjYuNTYwMyBUagotMjUgVEptCi0od3MtV2hlZWxlclwpKSA1MS40NDY5IFRqCi0tMjc4IFRKbQotKGNvbXByZXNzaW9uKSA1MC4zNjA5IFRqCi0tMjc4IFRKbQotKGJsb2NrLikgMjQuNjI3NSBUagotLTc4NyBUSm0KLShUaCkgMTEuMDY4NCBUagotLTEgVEptCi0oaSkgMi43Njk2IFRqCi0xIFRKbQotKHMpIDMuODc1NDUgVGoKLS0yNzggVEptCi0oY291bGQpIDIyLjEzNjkgVGoKLS0yNzggVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNzggVEptCi0odXNlZnVsKSAyNC4zNDg2IFRqCi0tMjc4IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI3OCBUSm0KLShlcnJvcikgMTkuMzU3MyBUagotLTI3OCBUSm0KLShjb250cm9sKSAyOC4yMjQgVGoKLS0yNzggVEptCi0ocHVycG9zZXMuKSAzNy45MDc3IFRqCi03MiAzNjMuMzM4IFRkCi0oVGhlKSAxNS40OTE4IFRqCi0tMzI4IFRKbQotKG1lY2hhbmlzbSkgNDUuMzc5NiBUagotLTMyOCBUSm0KLShpcykgNi42NDUwNSBUagotLTMyOCBUSm0KLShhbmFsb2dvdXMpIDQwLjM5ODMgVGoKLS0zMjggVEptCi0odG8pIDcuNzUwOSBUagotLTMyOCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMzI4IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTMyOCBUSm0KLShcMDAybmlzaGluZzopIDM3LjY0ODcgVGoKLS00NjYgVEptCi0oY2FsbCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAyOTcuMDQ5IDM2My4zMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjk3LjA0OSAtMzYzLjMzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjk3LjA0OSAzNjMuMzM3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekNvbXByZXNzKSA4My42ODU4IFRqCi1bMSAwIDAgMSAzODAuNzM1IDM2My4zMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzgwLjczNSAtMzYzLjMzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzg0LjAwMyAzNjMuMzM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpdGgpIDE3LjcxMzUgVGoKLS0zMjggVEptCi0oYW4pIDkuNDA0NjkgVGoKLS0zMjggVEptCi0oYWN0aW9uKSAyNC4zNDg2IFRqCi0tMzI4IFRKbQotKG9mKSA4LjI5ODg1IFRqCi1bMSAwIDAgMSA0NTYuODQxIDM2My4zMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDU2Ljg0MSAtMzYzLjMzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDU2Ljg0MSAzNjMuMzM3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX0ZMVVNIKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA1MDQuNjYyIDM2My4zMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA0LjY2MiAtMzYzLjMzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA0LjY2MiAzNjMuMzM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0zMjggVEptCi0ocmVtbykgMjAuNDczMSBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi03MiAzNTEuMzgyIFRkCi0ob3V0cHV0KSAyNS40NjQ0IFRqCi0tNDQ1IFRKbQotKGRhdGEsKSAxOS4wODgzIFRqCi0tNDk0IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tNDQ2IFRKbQotKHBlcnNpc3QpIDI2LjAxMjMgVGoKLS00NDUgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTQ0NSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLVsxIDAgMCAxIDIxMy45NCAzNTEuMzgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxMy45NCAtMzUxLjM4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjEzLjk0IDM1MS4zODIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfRkxVU0gpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDI2MS43NjEgMzUxLjM4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNjEuNzYxIC0zNTEuMzgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNjYuMTk1IDM1MS4zODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYWN0aW9uKSAyNC4zNDg2IFRqCi0tNDQ1IFRKbQotKHVudGlsKSAxOC4yNzE0IFRqCi0tNDQ1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTQ0NiBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFsdWUpIDE2LjU5NzcgVGoKLVsxIDAgMCAxIDM2MC4wNjIgMzUxLjM4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNjAuMDYyIC0zNTEuMzgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNjAuMDYyIDM1MS4zODIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfUlVOKSAzNS44NjU0IFRqCi1bMSAwIDAgMSAzOTUuOTI4IDM1MS4zODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzk1LjkyOCAtMzUxLjM4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDAwLjM2MiAzNTEuMzgyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tNDQ1IFRKbQotKHJldHVybmVkLikgMzUuNjg2IFRqCi0tMTc5MiBUSm0KLShBcykgMTEuMDY4NCBUagotLTQ0NSBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tNDQ1IFRKbQotKFwwMDJuaXNoaW5nLCkgMzcuMzY5NyBUagotWzEgMCAwIDEgNzIgMzM5LjQyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzM5LjQyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzM5LjQyNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMTU1LjY4NiAzMzkuNDI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1NS42ODYgLTMzOS40MjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1OC4xNzcgMzM5LjQyNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShkZXRlY3RzKSAyNy42NjYxIFRqCi0tMjUwIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLS0yNTAgVEptCi0oYXR0ZW1wdCkgMjkuODg3OCBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKHBybykgMTMuMjgwMSBUagotMTUgVEptCi0odmlkZSkgMTcuMTU1NiBUagotLTI1MCBUSm0KLShtb3JlKSAyMC40NzMxIFRqCi0tMjUwIFRKbQotKGlucHV0KSAyMC40ODMxIFRqCi0tMjUwIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNTAgVEptCi0ob25jZSkgMTguODA5NCBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oXDAwM3VzaCkgMTkuMzc3MyBUagotLTI1MCBUSm0KLShoYXMpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oYmUpIDkuNDA0NjkgVGoKLTE1IFRKbQotKGd1bi4pIDE3LjQzNDYgVGoKLVsxIDAgMCAxIDcyIDMzNy4yN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzI3LjMwOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzE3LjUwOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShPbmNlKSAyMS4wMjExIFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShcMDAzdXNoKSAxOS4zNzczIFRqCi0tMjUwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKGNvbXBsZXRlLCkgMzkuMDEzNSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oc3RyZWFtKSAyNi41NjAzIFRqCi0tMjUwIFRKbQotKHJldHVybnMpIDI3LjY2NjEgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0obm9ybWFsKSAyOC4yMjQgVGoKLS0yNTAgVEptCi0oUikgNi42NDUwNSBUagotNDAgVEptCi0oVU5OSU5HKSAzOS4yODI1IFRqCi0tMjUwIFRKbQotKHN0YXRlLikgMjAuNzUyMSBUagotWzEgMCAwIDEgNzIgMzE1LjM1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzA1LjM5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyOTUuNTkxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoaXMpIDE3LjcxMzUgVGoKLS0zNDQgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS0zNDMgVEptCi0oc291bmRzKSAyNy42NzYxIFRqCi0tMzQ0IFRKbQotKHByZXR0eSkgMjMuMjQyNyBUagotLTM0NCBUSm0KLShjb21wbGUpIDI5LjMyOTkgVGoKLTE1IFRKbQotKHgsKSA3LjQ3MTk1IFRqCi0tMzY3IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTM0NCBUSm0KLShpc24nKSAxNC45NDM5IFRqCi0xOCBUSm0KLSh0KSAyLjc2OTYgVGoKLS0zNDQgVEptCi0ocmVhbGx5KSAyMi42ODQ4IFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0tMTE4MiBUSm0KLShIZXJlJykgMjIuNjc0OSBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTM0NCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMzQ0IFRKbQotKHRhYmxlKSAxOS4zNjczIFRqCi0tMzQzIFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMzQ0IFRKbQotKHNobykgMTMuODM4MSBUagotMjUgVEptCi0od3MpIDExLjA2ODQgVGoKLS0zNDQgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0zNDQgVEptCi0oYWN0aW9ucykgMjguMjI0IFRqCi0tMzQzIFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTM0NCBUSm0KLShhbGxvKSAxNC45NDM5IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYWJsZSkgMTYuNTk3NyBUagotLTM0NCBUSm0KLShpbikgNy43NTA5IFRqCi0tMzQ0IFRKbQotKGVhY2gpIDE4LjI1MTUgVGoKLTcyIDI4My42MzYgVGQKLShzdGF0ZSwpIDIwLjc1MjEgVGoKLS0yODEgVEptCi0od2hhdCkgMTkuMzY3MyBUagotLTI3NCBUSm0KLShhY3Rpb24pIDI0LjM0ODYgVGoKLS0yNzUgVEptCi0od2lsbCkgMTUuNTAxOCBUagotLTI3NCBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI3NSBUSm0KLSh0YWspIDEyLjE3NDMgVGoKLTEwIFRKbQotKGVuLCkgMTEuODk1MyBUagotLTI4MCBUSm0KLSh3aGF0KSAxOS4zNjczIFRqCi0tMjc1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI3NCBUSm0KLShuZSkgOS40MDQ2OSBUagotMTUgVEptCi0oeHQpIDcuNzUwOSBUagotLTI3NSBUSm0KLShzdGF0ZSkgMTguMjYxNCBUagotLTI3NCBUSm0KLShpcywpIDkuMTM1NyBUagotLTI4MSBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI3NCBUSm0KLSh3aGF0KSAxOS4zNjczIFRqCi0tMjc1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI3NSBUSm0KLShub24tZXJyb3IpIDM3LjYxODggVGoKLS0yNzQgVEptCi0ocmV0dXJuKSAyMy43OTA3IFRqCi0tMjc1IFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZXMpIDIwLjQ3MzEgVGoKLS0yNzQgVEptCi0oYXJlLikgMTQuNjU1IFRqCi0tNzY3IFRKbQotKE5vdGUpIDE5LjM2NzMgVGoKLS0yNzUgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTI3NCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNzUgVEptCi0oY2FuJykgMTcuMTQ1NiBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi03MiAyNzEuNjgxIFRkCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeHBsaWNpdGx5KSAzMy4yMTUzIFRqCi0tMzQ3IFRKbQotKGFzaykgMTMuMjgwMSBUagotLTM0OCBUSm0KLSh3aGF0KSAxOS4zNjczIFRqCi0tMzQ3IFRKbQotKHN0YXRlKSAxOC4yNjE0IFRqCi0tMzQ4IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM0NyBUSm0KLShzdHJlYW0pIDI2LjU2MDMgVGoKLS0zNDggVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0zNDcgVEptCi0oaW4sKSAxMC4yNDE2IFRqCi0tMzcyIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTM0NyBUSm0KLShub3IpIDEzLjI4MDEgVGoKLS0zNDggVEptCi0oZG8pIDkuOTYyNiBUagotLTM0NyBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0zNDggVEptCi0obmVlZCkgMTguODA5NCBUagotLTM0NyBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzQ4IFRKbQotKC0tKSA2LjYzNTA5IFRqCi0tMzQ3IFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMzQ4IFRKbQotKGNhbikgMTMuODI4MSBUagotLTM0NyBUSm0KLShiZSkgOS40MDQ2OSBUagotLTM0NyBUSm0KLShpbmZlcnJlZCkgMzEuNTMxNiBUagotLTM0OCBUSm0KLShmcm9tKSAxOS4zNjczIFRqCi0tMzQ3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM0OCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFsdWVzKSAyMC40NzMxIFRqCi0tMzQ3IFRKbQotKHJldHVybmVkKSAzMy4xOTU0IFRqCi0tMzQ4IFRKbQotKGJ5KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDcyIDI1OS43MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTI1OS43MjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI1OS43MjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3MpIDgzLjY4NTggVGoKLVsxIDAgMCAxIDE1NS42ODYgMjU5LjcyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTUuNjg2IC0yNTkuNzI2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTUuNjg2IDI1OS43MjYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMjU4LjE5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTIwNy4zNF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDAuNTcyNiAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5My44NDEgLTUwLjg1MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNC40MTQgNTAuODUxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxNCkgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAxOCAxOAotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgLTguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNzYuNDk3OSAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0Mi41NjkgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxOS4wNjcgNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm9ncmFtbWluZykgNTQuNzk0MyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSA0OTYuNTU2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjU1NiAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDk2LjU1NiA3NDkuMjQ1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGxpYmJ6aXAyKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA1NDQuMzc2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc4LjMwNSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTUuMDM2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTU5NS40MDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggNTczLjg0OCByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDU3MC4yNjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC03MTEuNjMxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA3MTEuNjMxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKElETEUvYW55KSA0Ny44MjA1IFRqCi05OC40ODc5IDY5OS42NzYgVGQKLShJbGxlZ2FsLikgNDcuODIwNSBUagotLTg1MiBUSm0KLShJRExFKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHN0YXRlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKG9ubHkpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oZXhpc3RzKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKGFmdGVyKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKEJaMl9iekNvbXByZXNzRW5kKSAxMDEuNjE5IFRqCi0tNDI2IFRKbQotKG9yKSAxMS45NTUxIFRqCi05OC40ODc5IDY4Ny43MjEgVGQKLShiZWZvcmUpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oQloyX2J6Q29tcHJlc3NJbml0LikgMTEzLjU3NCBUagotOTguNDg3OSA2NzUuNzY2IFRkCi0oUmV0dXJuKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKHZhbHVlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oQlpfU0VRVUVOQ0VfRVJST1IpIDEwMS42MTkgVGoKLTkwIDY1MS44NTYgVGQKLShSVU5OSU5HL0JaX1JVTikgODMuNjg1OCBUagotOTguNDg3OSA2MzkuOSBUZAotKENvbXByZXNzKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGZyb20pIDIzLjkxMDIgVGoKLS00MjYgVEptCi0obmV4dF9pbikgNDEuODQyOSBUagotLTQyNiBUSm0KLSh0bykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShuZXh0X291dCkgNDcuODIwNSBUagotLTQyNiBUSm0KLShhcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShtdWNoKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGFzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHBvc3NpYmxlLikgNTMuNzk4IFRqCi05OC40ODc5IDYyNy45NDUgVGQKLShOZXh0KSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHN0YXRlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oUlVOTklORykgNDEuODQyOSBUagotOTguNDg3OSA2MTUuOTkgVGQKLShSZXR1cm4pIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0odmFsdWUpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oPSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShCWl9SVU5fT0spIDUzLjc5OCBUagotOTAgNTkyLjA4IFRkCi0oUlVOTklORy9CWl9GTFVTSCkgOTUuNjQxIFRqCi05OC40ODc5IDU4MC4xMjUgVGQKLShSZW1lbWJlcikgNDcuODIwNSBUagotLTQyNiBUSm0KLShjdXJyZW50KSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKHZhbHVlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKG9mKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKG5leHRfaW4uKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKENvbXByZXNzKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGZyb20pIDIzLjkxMDIgVGoKLS00MjYgVEptCi0obmV4dF9pbikgNDEuODQyOSBUagotOTguNDg3OSA1NjguMTY5IFRkCi0odG8pIDExLjk1NTEgVGoKLS00MjYgVEptCi0obmV4dF9vdXQpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oYXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0obXVjaCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShhcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShwb3NzaWJsZSwpIDUzLjc5OCBUagotLTQyNiBUSm0KLShidXQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oZG8pIDExLjk1NTEgVGoKLS00MjYgVEptCi0obm90KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGFjY2VwdCkgMzUuODY1NCBUagotLTQyNiBUSm0KLShhbnkpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0obW9yZSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShpbnB1dC4pIDM1Ljg2NTQgVGoKLTk4LjQ4NzkgNTU2LjIxNCBUZAotKE5leHQpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oc3RhdGUpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oPSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShGTFVTSElORykgNDcuODIwNSBUagotOTguNDg3OSA1NDQuMjU5IFRkCi0oUmV0dXJuKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKHZhbHVlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oQlpfRkxVU0hfT0spIDY1Ljc1MzIgVGoKLTkwIDUyMC4zNDkgVGQKLShSVU5OSU5HL0JaX0ZJTklTSCkgMTAxLjYxOSBUagotOTguNDg3OSA1MDguMzk0IFRkCi0oUmVtZW1iZXIpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oY3VycmVudCkgNDEuODQyOSBUagotLTQyNiBUSm0KLSh2YWx1ZSkgMjkuODg3OCBUagotLTQyNiBUSm0KLShvZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShuZXh0X2luLikgNDcuODIwNSBUagotLTQyNiBUSm0KLShDb21wcmVzcykgNDcuODIwNSBUagotLTQyNiBUSm0KLShmcm9tKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG5leHRfaW4pIDQxLjg0MjkgVGoKLTk4LjQ4NzkgNDk2LjQzOCBUZAotKHRvKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKG5leHRfb3V0KSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGFzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKG11Y2gpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oYXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0ocG9zc2libGUsKSA1My43OTggVGoKLS00MjYgVEptCi0oYnV0KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGRvKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKG5vdCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShhY2NlcHQpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oYW55KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKG1vcmUpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oaW5wdXQuKSAzNS44NjU0IFRqCi05OC40ODc5IDQ4NC40ODMgVGQKLShOZXh0KSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHN0YXRlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oRklOSVNISU5HKSA1My43OTggVGoKLTk4LjQ4NzkgNDcyLjUyOCBUZAotKFJldHVybikgMzUuODY1NCBUagotLTQyNiBUSm0KLSh2YWx1ZSkgMjkuODg3OCBUagotLTQyNiBUSm0KLSg9KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKEJaX0ZJTklTSF9PSykgNzEuNzMwNyBUagotOTAgNDQ4LjYxOCBUZAotKEZMVVNISU5HL0JaX0ZMVVNIKSAxMDEuNjE5IFRqCi05OC40ODc5IDQzNi42NjMgVGQKLShDb21wcmVzcykgNDcuODIwNSBUagotLTQyNiBUSm0KLShmcm9tKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG5leHRfaW4pIDQxLjg0MjkgVGoKLS00MjYgVEptCi0odG8pIDExLjk1NTEgVGoKLS00MjYgVEptCi0obmV4dF9vdXQpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oYXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0obXVjaCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShhcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShwb3NzaWJsZSwpIDUzLjc5OCBUagotOTguNDg3OSA0MjQuNzA3IFRkCi0oYnV0KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGRvKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKG5vdCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShhY2NlcHQpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oYW55KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKG1vcmUpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oaW5wdXQuKSAzNS44NjU0IFRqCi05OC40ODc5IDQxMi43NTIgVGQKLShJZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShhbGwpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGV4aXN0aW5nKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGlucHV0KSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKGhhcykgMTcuOTMyNyBUagotLTQyNiBUSm0KLShiZWVuKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHVzZWQpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0odXApIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYW5kKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGFsbCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShjb21wcmVzc2VkKSA1OS43NzU2IFRqCi05OC40ODc5IDQwMC43OTcgVGQKLShvdXRwdXQpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oaGFzKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGJlZW4pIDIzLjkxMDIgVGoKLS00MjYgVEptCi0ocmVtb3ZlZCkgNDEuODQyOSBUagotMTA2Ljk3NiAzODguODQyIFRkCi0oTmV4dCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShzdGF0ZSkgMjkuODg3OCBUagotLTQyNiBUSm0KLSg9KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKFJVTk5JTkc7KSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKFJldHVybikgMzUuODY1NCBUagotLTQyNiBUSm0KLSh2YWx1ZSkgMjkuODg3OCBUagotLTQyNiBUSm0KLSg9KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKEJaX1JVTl9PSykgNTMuNzk4IFRqCi05OC40ODc5IDM3Ni44ODcgVGQKLShlbHNlKSAyMy45MTAyIFRqCi0xMDYuOTc2IDM2NC45MzIgVGQKLShOZXh0KSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHN0YXRlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oRkxVU0hJTkc7KSA1My43OTggVGoKLS00MjYgVEptCi0oUmV0dXJuKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKHZhbHVlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oQlpfRkxVU0hfT0spIDY1Ljc1MzIgVGoKLTkwIDM0MS4wMjEgVGQKLShGTFVTSElORy9vdGhlcikgODMuNjg1OCBUagotOTguNDg3OSAzMjkuMDY2IFRkCi0oSWxsZWdhbC4pIDQ3LjgyMDUgVGoKLTk4LjQ4NzkgMzE3LjExMSBUZAotKFJldHVybikgMzUuODY1NCBUagotLTQyNiBUSm0KLSh2YWx1ZSkgMjkuODg3OCBUagotLTQyNiBUSm0KLSg9KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKEJaX1NFUVVFTkNFX0VSUk9SKSAxMDEuNjE5IFRqCi05MCAyOTMuMjAxIFRkCi0oRklOSVNISU5HL0JaX0ZJTklTSCkgMTEzLjU3NCBUagotOTguNDg3OSAyODEuMjQ1IFRkCi0oQ29tcHJlc3MpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oZnJvbSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShuZXh0X2luKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKHRvKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKG5leHRfb3V0KSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGFzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKG11Y2gpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oYXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0ocG9zc2libGUsKSA1My43OTggVGoKLTk4LjQ4NzkgMjY5LjI5IFRkCi0oYnV0KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKHRvKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKG5vdCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShhY2NlcHQpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oYW55KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKG1vcmUpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oaW5wdXQuKSAzNS44NjU0IFRqCi05OC40ODc5IDI1Ny4zMzUgVGQKLShJZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShhbGwpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGV4aXN0aW5nKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGlucHV0KSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKGhhcykgMTcuOTMyNyBUagotLTQyNiBUSm0KLShiZWVuKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHVzZWQpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0odXApIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYW5kKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGFsbCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShjb21wcmVzc2VkKSA1OS43NzU2IFRqCi05OC40ODc5IDI0NS4zOCBUZAotKG91dHB1dCkgMzUuODY1NCBUagotLTQyNiBUSm0KLShoYXMpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oYmVlbikgMjMuOTEwMiBUagotLTQyNiBUSm0KLShyZW1vdmVkKSA0MS44NDI5IFRqCi0xMDYuOTc2IDIzMy40MjUgVGQKLShOZXh0KSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHN0YXRlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oSURMRTspIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oUmV0dXJuKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKHZhbHVlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oQlpfU1RSRUFNX0VORCkgNzcuNzA4MyBUagotOTguNDg3OSAyMjEuNDcgVGQKLShlbHNlKSAyMy45MTAyIFRqCi0xMDYuOTc2IDIwOS41MTQgVGQKLShOZXh0KSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHN0YXRlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oRklOSVNISU5HOykgNTkuNzc1NiBUagotLTQyNiBUSm0KLShSZXR1cm4pIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0odmFsdWUpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oPSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShCWl9GSU5JU0hfT0spIDcxLjczMDcgVGoKLTkwIDE4NS42MDQgVGQKLShGSU5JU0hJTkcvb3RoZXIpIDg5LjY2MzQgVGoKLTk4LjQ4NzkgMTczLjY0OSBUZAotKElsbGVnYWwuKSA0Ny44MjA1IFRqCi05OC40ODc5IDE2MS42OTQgVGQKLShSZXR1cm4pIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0odmFsdWUpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oPSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShCWl9TRVFVRU5DRV9FUlJPUikgMTAxLjYxOSBUagotWzEgMCAwIDEgNzIgMTQ2LjE1Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xMzYuMTg5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxMjQuMjM0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoYXQpIDE4LjI2MTQgVGoKLS0yNTAgVEptCi0oc3RpbGwpIDE0Ljk1MzkgVGoKLS0yNTAgVEptCi0obG9va3MpIDIxLjU4OSBUagotLTI1MCBUSm0KLShjb21wbGljYXRlZD8pIDUzLjEyMDYgVGoKLS02MjAgVEptCi0oVykgOS40MDQ2OSBUagotODAgVEptCi0oZWxsLCkgMTIuNDUzMyBUagotLTI1MCBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhaXIpIDEwLjUxMDUgVGoKLS0yNTAgVEptCi0oZW5vdWdoLikgMzEuODIwNSBUagotLTYyMCBUSm0KLShUaGUpIDE1LjQ5MTggVGoKLS0yNTAgVEptCi0odXN1YWwpIDIxLjAzMSBUagotLTI1MCBUSm0KLShzZXF1ZW5jZSkgMzYuNTEyOSBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShjYWxscykgMTguMjYxNCBUagotLTI1MCBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNTAgVEptCi0oY29tcHJlc3NpbmcpIDUwLjM2MDkgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShsb2FkKSAxNy4xNTU2IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNTAgVEptCi0oaXM6KSA5LjQxNDY2IFRqCi1bMSAwIDAgMSA3MiAxMjIuMDc3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMjkuNzIzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDcuMzcyNCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc5LjM3MjQgLTkyLjM1MzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc5LjM3MjQgOTIuMzUzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxLikgNy40NzE5NSBUagotWzEgMCAwIDEgODYuODQ0NCA5Mi4zNTM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMy4wODg0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MS45MjUzIC05Mi4zNTM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MS45MjUzIDkyLjM1MzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oR2V0KSAxNC4zODYgVGoKLS0yNTAgVEptCi0oc3RhcnRlZCkgMjYuNTYwMyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSAxNTguMDU2IDkyLjM1MzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU4LjA1NiAtOTIuMzUzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTU4LjA1NiA5Mi4zNTM3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekNvbXByZXNzSW5pdCkgMTA3LjU5NiBUagotWzEgMCAwIDEgMjY1LjY1MyA5Mi4zNTM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2NS42NTMgLTkyLjM1MzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI2NS42NTMgOTIuMzUzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAyNjguMTQ0IDkyLjM1MzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTk2LjE0NCAtNDEuNTAxOV0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkzIDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuOTUxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC45NTE0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDE1KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDE5IDE5Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA3Ni40OTc5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjU2OSAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE5LjA2NyA3NDkuMjQ1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFByb2dyYW1taW5nKSA1NC43OTQzIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ5Ni41NTYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTYuNTU2IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTYuNTU2IDc0OS4yNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDU0NC4zNzYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguMzA1IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMzEuNTE2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDcuMzcyNCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc5LjM3MjQgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc5LjM3MjQgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyLikgNy40NzE5NSBUagotWzEgMCAwIDEgODYuODQ0NCA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMy4wODg0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MS45MjUzIC03MTAuMDM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MS45MjUzIDcxMC4wMzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oU2hvKSAxNS41MDE4IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVsKSA3LjE5MyBUagotLTI0MCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjQwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNDEgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNDAgVEptCi0oc2hsdXJwKSAyNC45MDY1IFRqCi0tMjQwIFRKbQotKG91dCkgMTIuNzMyMiBUagotLTI0MCBUSm0KLShpdHMpIDkuNDE0NjYgVGoKLS0yNDAgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI0MSBUSm0KLShmb3JtKSAxOS4zNjczIFRqCi0tMjQwIFRKbQotKHVzaW5nKSAyMS41ODkgVGoKLS0yNDAgVEptCi0oemVybykgMTcuMTQ1NiBUagotLTI0MCBUSm0KLShvcikgOC4yOTg4NSBUagotLTI0MCBUSm0KLShtb3JlKSAyMC40NzMxIFRqCi0tMjQxIFRKbQotKGNhbGxzKSAxOC4yNjE0IFRqCi0tMjQwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi1bMSAwIDAgMSA0MDEuNDU0IDcxMC4wMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDAxLjQ1NCAtNzEwLjAzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDAxLjQ1NCA3MTAuMDM3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekNvbXByZXNzKSA4My42ODU4IFRqCi1bMSAwIDAgMSA0ODUuMTQgNzEwLjAzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00ODUuMTQgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ4Ny41MzMgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aXRoKSAxNy43MTM1IFRqCi0tMjQwIFRKbQotKGFjdGlvbikgMjQuMzQ4NiBUagotLTI0MCBUSm0KLSg9KSA1LjYxODkxIFRqCi1bMSAwIDAgMSA5MS45MjUzIDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTEuOTI1MyAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTEuOTI1MyA2OTguMDgyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1JVTikgMzUuODY1NCBUagotWzEgMCAwIDEgMTI3Ljc5MSA2OTguMDgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEyNy43OTEgLTY5OC4wODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEyNy43OTEgNjk4LjA4MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAxMzAuMjgxIDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTguMjgxNCAtMjEuOTE3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDcuMzcyNCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc5LjM3MjQgLTY3Ni4xNjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc5LjM3MjQgNjc2LjE2NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzLikgNy40NzE5NSBUagotWzEgMCAwIDEgODYuODQ0NCA2NzYuMTY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMy4wODg0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MS45MjUzIC02NzYuMTY0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MS45MjUzIDY3Ni4xNjQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oRmluaXNoKSAyNC45MTY1IFRqCi0tMjQyIFRKbQotKHVwLikgMTIuNDUzMyBUagotLTMwNyBUSm0KLShSZXBlYXRlZGx5KSA0NC44MjE3IFRqCi0tMjQxIFRKbQotKGNhbGwpIDE0LjM4NiBUagotWzEgMCAwIDEgMTk4Ljc4NCA2NzYuMTY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5OC43ODQgLTY3Ni4xNjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5OC43ODQgNjc2LjE2NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMjgyLjQ3MSA2NzYuMTY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI4Mi40NzEgLTY3Ni4xNjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI4NC44NzggNjc2LjE2NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aXRoKSAxNy43MTM1IFRqCi0tMjQyIFRKbQotKGFjdGlvbikgMjQuMzQ4NiBUagotLTI0MSBUSm0KLSg9KSA1LjYxODkxIFRqCi1bMSAwIDAgMSAzMzkuNzggNjc2LjE2NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMzkuNzggLTY3Ni4xNjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzOS43OCA2NzYuMTY0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX0ZJTklTSCkgNTMuNzk4IFRqCi1bMSAwIDAgMSAzOTMuNTc5IDY3Ni4xNjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzkzLjU3OSAtNjc2LjE2NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzkzLjU3OSA2NzYuMTY0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0yNDIgVEptCi0oY29wKSAxNC4zODYgVGoKLTEwIFRKbQotKHlpbmcpIDE3LjcxMzUgVGoKLS0yNDEgVEptCi0ob3V0KSAxMi43MzIyIFRqCi0tMjQyIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI0MiBUSm0KLShjb21wcmVzKSAzMy43NTMzIFRqCi0xIFRKbQotKHNlZCkgMTMuMjgwMSBUagotLTI0MiBUSm0KLShvdXRwdXQsKSAyNy45NTUxIFRqCi05MS45MjUzIDY2NC4yMDkgVGQKLSh1bnRpbCkgMTguMjcxNCBUagotWzEgMCAwIDEgMTEyLjY4NyA2NjQuMjA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExMi42ODcgLTY2NC4yMDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExMi42ODcgNjY0LjIwOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9TVFJFQU1fRU5EKSA3Ny43MDgzIFRqCi1bMSAwIDAgMSAxOTAuMzk2IDY2NC4yMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTkwLjM5NiAtNjY0LjIwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTkyLjg4NiA2NjQuMjA5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKHJldHVybmVkLikgMzUuNjg2IFRqCi1bMSAwIDAgMSAyMzcuNzA4IDY2NC4yMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY1LjcwOCAtMjEuOTE3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDcuMzcyNCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc5LjM3MjQgLTY0Mi4yOTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc5LjM3MjQgNjQyLjI5MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSg0LikgNy40NzE5NSBUagotWzEgMCAwIDEgODYuODQ0NCA2NDIuMjkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMy4wODg0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MS45MjUzIC02NDIuMjkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MS45MjUzIDY0Mi4yOTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oQ2xvc2UpIDIyLjY5NDggVGoKLS0yNTAgVEptCi0odXApIDkuOTYyNiBUagotLTI1MCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI1MCBUSm0KLShnbykgOS45NjI2IFRqCi0tMjUwIFRKbQotKGhvbWUuKSAyNC42Mjc1IFRqCi0tNjIwIFRKbQotKENhbGwpIDE2LjYwNzcgVGoKLVsxIDAgMCAxIDIwOC43OTYgNjQyLjI5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDguNzk2IC02NDIuMjkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDguNzk2IDY0Mi4yOTEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3NFbmQpIDEwMS42MTkgVGoKLVsxIDAgMCAxIDMxMC40MTUgNjQyLjI5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMTAuNDE1IC02NDIuMjkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMTAuNDE1IDY0Mi4yOTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgMzEyLjkwNiA2NDIuMjkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0MC45MDYgLTEyLjExOTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYzMC4xNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYyMC4zNzQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSWYpIDYuNjM1MDkgVGoKLS0yNjkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjcwIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNjkgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjcwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhbnQpIDEyLjE3NDMgVGoKLS0yNjkgVEptCi0odG8pIDcuNzUwOSBUagotLTI3MCBUSm0KLShjb21wcmVzcykgMzcuNjI4NyBUagotLTI2OSBUSm0KLShcMDAydHMpIDEyLjE4NDMgVGoKLS0yNzAgVEptCi0oaW50bykgMTUuNTAxOCBUagotLTI2OSBUSm0KLSh5b3VyKSAxOC4yNjE0IFRqCi0tMjcwIFRKbQotKGlucHV0KSAyMC40ODMxIFRqCi0tMjY5IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWYpIDguMjk4ODUgVGoKLTI1IFRKbQotKGZlcikgMTEuMDU4NSBUagotLTI3MCBUSm0KLShhbGwpIDkuOTYyNiBUagotLTI2OSBUSm0KLShhdCkgNy4xOTMgVGoKLS0yNzAgVEptCi0ob25jZSwpIDIxLjMgVGoKLS0yNzQgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjY5IFRKbQotKGNhbikgMTMuODI4MSBUagotLTI3MCBUSm0KLShza2lwKSAxNi42MDc3IFRqCi0tMjY5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI3MCBUSm0KLShjYWxscykgMTguMjYxNCBUagotLTI2OSBUSm0KLShvZikgOC4yOTg4NSBUagotWzEgMCAwIDEgNDU2LjMxNCA2MjAuMzc0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ1Ni4zMTQgLTYyMC4zNzRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ1Ni4zMTQgNjIwLjM3NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotNzIgNjA4LjQxOCBUZAotKFwoKSA1Ljk3NzU2IFRqCi0tNjAwIFRKbQotKC4uLiwpIDIzLjkxMDIgVGoKLS02MDAgVEptCi0oQlpfUlVOKSAzNS44NjU0IFRqCi0tNjAwIFRKbQotKFwpKSA1Ljk3NzU2IFRqCi1bMSAwIDAgMSAxNjEuNjY0IDYwOC40MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTYxLjY2NCAtNjA4LjQxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY0LjE1NCA2MDguNDE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKGp1c3QpIDE0LjM5NiBUagotLTI1MCBUSm0KLShkbykgOS45NjI2IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotWzEgMCAwIDEgMjI1LjAzNiA2MDguNDE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIyNS4wMzYgLTYwOC40MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIyNS4wMzYgNjA4LjQxOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotLTYwMCBUSm0KLShcKCkgNS45Nzc1NiBUagotLTYwMCBUSm0KLSguLi4sKSAyMy45MTAyIFRqCi0tNjAwIFRKbQotKEJaX0ZJTklTSCkgNTMuNzk4IFRqCi0tNjAwIFRKbQotKFwpKSA1Ljk3NzU2IFRqCi1bMSAwIDAgMSA0MjIuMjk2IDYwOC40MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDIyLjI5NiAtNjA4LjQxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDI0Ljc4NiA2MDguNDE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGNhbGxzLikgMjAuNzUyMSBUagotWzEgMCAwIDEgNzIgNjA2LjI2Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTk2LjI5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTg2LjUwMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBbGwpIDEyLjczMjIgVGoKLS0yNzggVEptCi0ocmVxdWlyZWQpIDMzLjE5NTQgVGoKLS0yNzcgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMjc4IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjc3IFRKbQotKGFsbG9jYXRlZCkgMzUuOTY1IFRqCi0tMjc4IFRKbQotKGJ5KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDIyMC4yOTUgNTg2LjUwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMjAuMjk1IC01ODYuNTAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjAuMjk1IDU4Ni41MDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3NJbml0KSAxMDcuNTk2IFRqCi1bMSAwIDAgMSAzMjcuODkxIDU4Ni41MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzI3Ljg5MSAtNTg2LjUwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzI3Ljg5MSA1ODYuNTAxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC4pIDIuNDkwNjUgVGoKLS03ODUgVEptCi0oVGhlKSAxNS40OTE4IFRqCi0tMjc4IFRKbQotKGNvbXByZXNzaW9uKSA1MC4zNjA5IFRqCi0tMjc3IFRKbQotKGxpYnJhcnkpIDI2LjU2MDMgVGoKLS0yNzggVEptCi0oY2FuKSAxMy44MjgxIFRqCi0tMjc3IFRKbQotKGFjY2VwdCkgMjUuNDQ0NSBUagotLTI3OCBUSm0KLShhbikgOS40MDQ2OSBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMjc3IFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNzggVEptCi0oYXQpIDcuMTkzIFRqCi0tMjc4IFRKbQotKGFsbCkgOS45NjI2IFRqCi03MiA1NzQuNTQ1IFRkCi0oXChvYikgMTMuMjgwMSBUagotMTUgVEptCi0odmlvdXNseVwpLikgMzUuMTQ4MSBUagotLTYxMiBUSm0KLShTbykgMTAuNTIwNSBUagotLTIzOCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yMzcgVEptCi0oc2hvdWxkbicpIDM0Ljg2OTEgVGoKLTE4IFRKbQotKHQpIDIuNzY5NiBUagotLTIzOCBUSm0KLShnZXQpIDEyLjE3NDMgVGoKLS0yMzggVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTIzNyBUSm0KLShlcnJvcikgMTkuMzU3MyBUagotLTIzOCBUSm0KLShyZXR1cm4pIDIzLjc5MDcgVGoKLS0yMzggVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlcykgMjAuNDczMSBUagotLTIzOCBUSm0KLShmcm9tKSAxOS4zNjczIFRqCi0tMjM3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotWzEgMCAwIDEgMzM5LjI4NyA1NzQuNTQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzOS4yODcgLTU3NC41NDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzOS4yODcgNTc0LjU0NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgNDIyLjk3MyA1NzQuNTQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQyMi45NzMgLTU3NC41NDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQyNS4zNDIgNTc0LjU0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShjYWxscy4pIDIwLjc1MjEgVGoKLS02MTIgVEptCi0oSWYpIDYuNjM1MDkgVGoKLS0yMzggVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjM3IFRKbQotKGRvLCkgMTIuNDUzMyBUagotLTI0MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTIzOCBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMjM4IFRKbQotKGJlKSA5LjQwNDY5IFRqCi1bMSAwIDAgMSA3MiA1NjIuNTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU2Mi41OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTYyLjU5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1NFUVVFTkNFX0VSUk9SKSAxMDEuNjE5IFRqCi1bMSAwIDAgMSAxNzMuNjE5IDU2Mi41OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzMuNjE5IC01NjIuNTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3My42MTkgNTYyLjU5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0yNTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNTAgVEptCi0oaW5kaWNhdGUpIDMxLjU0MTYgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVnKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oaW4pIDcuNzUwOSBUagotLTI1MCBUSm0KLSh5b3VyKSAxOC4yNjE0IFRqCi0tMjUwIFRKbQotKHByb2dyYW1taW5nLikgNTYuNzI3IFRqCi1bMSAwIDAgMSA3MiA1NjAuNDMzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01NTAuNDcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1NDAuNjczIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFQpIDYuMDg3MTUgVGoKLTM1IFRKbQotKHJpKSA2LjA4NzE1IFRqCi0yNSBUSm0KLSh2aWFsKSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKG90aGVyKSAyMC40NzMxIFRqCi0tMjUwIFRKbQotKHBvc3NpYmxlKSAzMi42NTc0IFRqCi0tMjUwIFRKbQotKHJldHVybikgMjMuNzkwNyBUagotLTI1MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFsdWVzOikgMjMuMjQyNyBUagotWzEgMCAwIDEgNzIgNTM4LjUxNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTM2Ljg2MTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMzUuODY1NSByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMyLjI3ODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC01MjkuMTUxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA1MjkuMTUxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1BBUkFNX0VSUk9SKSA4My42ODU4IFRqCi05OC40ODc5IDUxNy4xOTYgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShzdHJtKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKE5VTEwsKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKG9yKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHN0cm0tPnMpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oTlVMTCkgMjMuOTEwMiBUagotWzEgMCAwIDEgNzIgNTAxLjY1NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0zLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQ5MS42OTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQ3MS4wMzMgVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKDMuMy4zLikgNDMuMDcyOSBUagotWzEgMCAwIDEgMTE5Ljg1OCA0NzEuMDMzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS44NTggLTQ3MS4wMzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExOS44NTggNDcxLjAzMyBUZAotL0YzOTJfMCAxNy4yMTU0IFRmCi0oQloyX2J6Q29tcHJlc3NFbmQpIDE3NS41OTcgVGoKLVsxIDAgMCAxIDI5NS40NTUgNDcxLjAzM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMjMuNDU1IC0yLjMzMjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yNC45MDY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDIzLjkxMDMgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAyMC4zMjM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtNDU5LjMzNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgNDU5LjMzNSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShpbnQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oQloyX2J6Q29tcHJlc3NFbmQpIDEwMS42MTkgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oYnpfc3RyZWFtKSA1My43OTggVGoKLTI4Ni4zMDMgNDU3LjU5MiBUZAotKCopIDUuOTc3NTYgVGoKLTI5Mi4yODEgNDU5LjMzNSBUZAotKHN0cm0pIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi1bMSAwIDAgMSA3MiA0NDMuNzkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQzMy44MzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQyMS44NzYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUmVsZWFzZXMpIDM0Ljg1OTEgVGoKLS0yNTAgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMjUwIFRKbQotKGFzc29jaWF0ZWQpIDQwLjk0NjMgVGoKLS0yNTAgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKGNvbXByZXNzaW9uKSA1MC4zNjA5IFRqCi0tMjUwIFRKbQotKHN0cmVhbS4pIDI5LjA1MDkgVGoKLVsxIDAgMCAxIDcyIDQxOS43MTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQwOS43NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM5OS45NTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUG9zc2libGUpIDMzLjIxNTMgVGoKLS0yNTAgVEptCi0ocmV0dXJuKSAyMy43OTA3IFRqCi0tMjUwIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZXM6KSAyMy4yNDI3IFRqCi1bMSAwIDAgMSA3MiAzOTkuODU4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMzYuODYxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAzNS44NjU1IHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMzIuMjc4OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTM5MC40OTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDM5MC40OTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfUEFSQU1fRVJST1IpIDgzLjY4NTggVGoKLS04NTIgVEptCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oc3RybSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShOVUxMKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG9yKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHN0cm0tPnMpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oTlVMTCkgMjMuOTEwMiBUagotOTAgMzc4LjUzOCBUZAotKEJaX09LKSAyOS44ODc4IFRqCi0tNDY4NiBUSm0KLShvdGhlcndpc2UpIDUzLjc5OCBUagotWzEgMCAwIDEgNzIgMzYyLjk5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0zLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM1My4wMzRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDMzMi4zNzUgVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKDMuMy40LikgNDMuMDcyOSBUagotWzEgMCAwIDEgMTE5Ljg1OCAzMzIuMzc1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS44NTggLTMzMi4zNzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExOS44NTggMzMyLjM3NSBUZAotL0YzOTJfMCAxNy4yMTU0IFRmCi0oQloyX2J6RGVjb21wcmVzc0luaXQpIDIwNi41ODUgVGoKLVsxIDAgMCAxIDMyNi40NDMgMzMyLjM3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNTQuNDQzIC0yLjMzMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yNC45MDY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDIzLjkxMDMgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAyMC4zMjM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtMzIwLjY3OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgMzIwLjY3OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShpbnQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oQloyX2J6RGVjb21wcmVzc0luaXQpIDExOS41NTEgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oYnpfc3RyZWFtKSA1My43OTggVGoKLTMwNC4yMzYgMzE4LjkzNCBUZAotKCopIDUuOTc3NTYgVGoKLTMxMC4yMTQgMzIwLjY3OCBUZAotKHN0cm0sKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLSh2ZXJib3NpdHksKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShzbWFsbCkgMjkuODg3OCBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLVsxIDAgMCAxIDcyIDMwNS4xMzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjk1LjE3M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjgzLjIxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcmVwYXJlcykgMzQuMzAxMiBUagotLTM1MSBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0zNTEgVEptCi0oZGVjb21wcmVzc2lvbi4pIDYyLjI1NjMgVGoKLS0xMjI4IFRKbQotKEFzKSAxMS4wNjg0IFRqCi0tMzUxIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDIzNS4xNzcgMjgzLjIxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzUuMTc3IC0yODMuMjE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzUuMTc3IDI4My4yMTggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Q29tcHJlc3NJbml0KSAxMDcuNTk2IFRqCi1bMSAwIDAgMSAzNDIuNzczIDI4My4yMThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjc3MyAtMjgzLjIxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzQyLjc3MyAyODMuMjE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0zNzcgVEptCi0oYSkgNC40MjMzOSBUagotWzEgMCAwIDEgMzU2LjkzNyAyODMuMjE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM1Ni45MzcgLTI4My4yMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM1Ni45MzcgMjgzLjIxOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiel9zdHJlYW0pIDUzLjc5OCBUagotWzEgMCAwIDEgNDEwLjczNiAyODMuMjE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQxMC43MzYgLTI4My4yMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxNC4yMzUgMjgzLjIxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShyZWNvcmQpIDI1LjQ0NDUgVGoKLS0zNTEgVEptCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMzUxIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMzUyIFRKbQotKGFsbG9jYXRlZCkgMzUuOTY1IFRqCi0tMzUxIFRKbQotKGFuZCkgMTQuMzg2IFRqCi03MiAyNzEuMjYzIFRkCi0oaW5pdGlhbGlzZWQpIDM5LjMwMjUgVGoKLS0zMDYgVEptCi0oYmVmb3JlKSAyNS40NDQ1IFRqCi0tMzA1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMwNiBUSm0KLShjYWxsLikgMTYuODc2NiBUagotLTk1MyBUSm0KLShGaWVsZHMpIDI0LjM1ODYgVGoKLVsxIDAgMCAxIDIxMS44MzMgMjcxLjI2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTEuODMzIC0yNzEuMjYzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTEuODMzIDI3MS4yNjMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnphbGxvYykgNDEuODQyOSBUagotWzEgMCAwIDEgMjUzLjY3NiAyNzEuMjYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1My42NzYgLTI3MS4yNjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1My42NzYgMjcxLjI2MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAyNTkuMzUgMjcxLjI2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNTkuMzUgLTI3MS4yNjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1OS4zNSAyNzEuMjYzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6ZnJlZSkgMzUuODY1NCBUagotWzEgMCAwIDEgMjk1LjIxNSAyNzEuMjYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5NS4yMTUgLTI3MS4yNjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI5OC4yNiAyNzEuMjYzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAzMTUuNjkgMjcxLjI2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMTUuNjkgLTI3MS4yNjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMxNS42OSAyNzEuMjYzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKG9wYXF1ZSkgMzUuODY1NCBUagotWzEgMCAwIDEgMzUxLjU1NiAyNzEuMjYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM1MS41NTYgLTI3MS4yNjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM1NC42IDI3MS4yNjMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMzA2IFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMzA1IFRKbQotKHNldCkgMTEuMDY4NCBUagotLTMwNiBUSm0KLShpZikgNi4wODcxNSBUagotLTMwNSBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMzA2IFRKbQotKGN1c3RvbSkgMjguNzgyIFRqCi0tMzA1IFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotLTMwNiBUSm0KLShhbGxvY2F0b3IpIDM0Ljg1OTEgVGoKLS0zMDYgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLTcyIDI1OS4zMDggVGQKLShyZXF1aXJlZCwpIDM1LjY4NiBUagotLTM1MCBUSm0KLShvcikgOC4yOTg4NSBUagotLTMzMSBUSm0KLShtYWRlKSAyMS41NzkgVGoKLVsxIDAgMCAxIDE0Ny42MzUgMjU5LjMwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDcuNjM1IC0yNTkuMzA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDcuNjM1IDI1OS4zMDggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oTlVMTCkgMjMuOTEwMiBUagotWzEgMCAwIDEgMTcxLjU0NiAyNTkuMzA4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3MS41NDYgLTI1OS4zMDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3NC44MzUgMjU5LjMwOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShmb3IpIDExLjYxNjQgVGoKLS0zMzAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzMxIFRKbQotKG5vcm1hbCkgMjguMjI0IFRqCi1bMSAwIDAgMSAyMzYuNzIyIDI1OS4zMDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjM2LjcyMiAtMjU5LjMwOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjM2LjcyMiAyNTkuMzA4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKG1hbGxvYykgMzUuODY1NCBUagotWzEgMCAwIDEgMjcyLjU4NyAyNTkuMzA4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3Mi41ODcgLTI1OS4zMDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3NS44NzggMjU5LjMwOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgvKSAyLjc2OTYgVGoKLVsxIDAgMCAxIDI4MS45MzggMjU5LjMwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODEuOTM4IC0yNTkuMzA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODEuOTM4IDI1OS4zMDggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZnJlZSkgMjMuOTEwMiBUagotWzEgMCAwIDEgMzA1Ljg0OCAyNTkuMzA4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMwNS44NDggLTI1OS4zMDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMwOS4xMzkgMjU5LjMwOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShyb3V0aW5lcy4pIDM0LjU5MDEgVGoKLS0xMTAyIFRKbQotKFVwb24pIDIyLjEzNjkgVGoKLS0zMzAgVEptCi0ocmV0dXJuLCkgMjYuMjgxMyBUagotLTM1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMzEgVEptCi0oaW50ZXJuYWwpIDMwLjQzNTcgVGoKLS0zMzAgVEptCi0oc3RhdGUpIDE4LjI2MTQgVGoKLS0zMzAgVEptCi0od2lsbCkgMTUuNTAxOCBUagotLTMzMCBUSm0KLShoYSkgOS40MDQ2OSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMzMxIFRKbQotKGJlZW4pIDE4LjgwOTQgVGoKLTcyIDI0Ny4zNTMgVGQKLShpbml0aWFsaXNlZCwpIDQxLjc5MzEgVGoKLS0yNTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDEzMy4xNiAyNDcuMzUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzMy4xNiAtMjQ3LjM1M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTMzLjE2IDI0Ny4zNTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0odG90YWxfaW4pIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDE4MC45OCAyNDcuMzUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE4MC45OCAtMjQ3LjM1M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTgzLjQ3MSAyNDcuMzUzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAyMDAuMzQ4IDI0Ny4zNTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjAwLjM0OCAtMjQ3LjM1M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjAwLjM0OCAyNDcuMzUzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHRvdGFsX291dCkgNTMuNzk4IFRqCi1bMSAwIDAgMSAyNTQuMTQ2IDI0Ny4zNTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjU0LjE0NiAtMjQ3LjM1M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjU2LjYzNyAyNDcuMzUzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLS0yNTAgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oemVyby4pIDE5LjYzNjMgVGoKLVsxIDAgMCAxIDcyIDI0NS45MTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIzNS45NTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDIyNS40MzUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oRikgNS41MzkyMSBUagotMTUgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKG1lYW5pbmcpIDM0LjMxMTIgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0ocGFyYW1ldGVyKSAzOS44MzA1IFRqCi1bMSAwIDAgMSAxOTIuNzU2IDIyNS40MzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTkyLjc1NiAtMjI1LjQzNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTkyLjc1NiAyMjUuNDM1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHZlcmJvc2l0eSkgNTMuNzk4IFRqCi1bMSAwIDAgMSAyNDYuNTU0IDIyNS40MzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjQ2LjU1NCAtMjI1LjQzNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjQ2LjU1NCAyMjUuNDM1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0yNTAgVEptCi0oc2VlKSAxMi43MjIyIFRqCi1bMSAwIDAgMSAyNjYuNzQ4IDIyNS40MzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjY2Ljc0OCAtMjI1LjQzNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjY2Ljc0OCAyMjUuNDM1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekNvbXByZXNzSW5pdCkgMTA3LjU5NiBUagotWzEgMCAwIDEgMzc0LjM0NSAyMjUuNDM1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM3NC4zNDUgLTIyNS40MzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM3NC4zNDUgMjI1LjQzNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAyMjMuMjc4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yMTMuMzE1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyMDMuNTE3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKElmKSA2LjYzNTA5IFRqCi1bMSAwIDAgMSA4MS40OTc1IDIwMy41MTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODEuNDk3NSAtMjAzLjUxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODEuNDk3NSAyMDMuNTE3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHNtYWxsKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAxMTEuMzg1IDIwMy41MTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTExLjM4NSAtMjAzLjUxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE0LjI0OCAyMDMuNTE3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMjg3IFRKbQotKG5vbnplcm8sKSAzNC41ODAyIFRqCi0tMjk3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI4NyBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMjg4IFRKbQotKHdpbGwpIDE1LjUwMTggVGoKLS0yODcgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjg3IFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tMjg3IFRKbQotKGFsdGVybmF0aSkgMzIuNjQ3NCBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjg4IFRKbQotKGRlY29tcHJlc3Npb24pIDU5Ljc2NTYgVGoKLS0yODcgVEptCi0oYWxnb3JpdGhtKSAzOC43NDQ2IFRqCi0tMjg3IFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjg4IFRKbQotKHVzZXMpIDE3LjE1NTYgVGoKLS0yODcgVEptCi0obGVzcykgMTQuOTQzOSBUagotLTI4NyBUSm0KLShtZW1vcnkpIDMzLjIwNTMgVGoKLS0yODcgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1dCkgNy43NTA5IFRqCi0tMjg4IFRKbQotKGF0KSA3LjE5MyBUagotLTI4NyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTcyIDE5MS41NjIgVGQKLShjb3N0KSAxNi4wNDk3IFRqCi0tMjg5IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjkwIFRKbQotKGRlY29tcHJlc3NpbmcpIDU5Ljc2NTYgVGoKLS0yODkgVEptCi0obW9yZSkgMjAuNDczMSBUagotLTI4OSBUSm0KLShzbG8pIDExLjYyNjQgVGoKLTI1IFRKbQotKHdseSkgMTQuOTQzOSBUagotLTI5MCBUSm0KLShcKHJvdWdobHkpIDM0LjMxMTIgVGoKLS0yODkgVEptCi0oc3BlYWtpbmcsKSAzNy45MDc3IFRqCi0tMjk5IFRKbQotKGhhbGYpIDE1LjQ5MTggVGoKLS0yOTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjg5IFRKbQotKHNwZWVkLCkgMjUuMTc1NSBUagotLTI5OSBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHV0KSA3Ljc1MDkgVGoKLS0yODkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjkwIFRKbQotKG1heGltdW0pIDQwLjQwODMgVGoKLS0yODkgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMjg5IFRKbQotKHJlcXVpcmVtZW50KSA0OC4xMzkzIFRqCi0tMjkwIFRKbQotKGRyb3BzKSAyMi4xMzY5IFRqCi03MiAxNzkuNjA3IFRkCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShhcm91bmQpIDI3LjY2NjEgVGoKLS0yNTAgVEptCi0oMjMwMGtcKS4pIDMwLjcxNDcgVGoKLS02MjAgVEptCi0oU2VlKSAxNC4zODYgVGoKLVsxIDAgMCAxIDE2Ni4xNjYgMTc5LjYwN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMV0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMV0gU0MKLVsxIDAgMCAxIC0xNjYuMTY2IC0xNzkuNjA3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjYuMTY2IDE3OS42MDcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSG8pIDEyLjE3NDMgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKGJ6aXAyKSAyMi4xMzY5IFRqCi1bMSAwIDAgMSAyMzUuOTI0IDE3OS42MDddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDFdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDFdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDFdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDFdIFNDCi1bMSAwIDAgMSAtMjM1LjkyNCAtMTc5LjYwN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjM4LjQxNSAxNzkuNjA3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFsyXSkgMTEuNjE2NCBUagotWzEgMCAwIDEgMjUwLjAzMSAxNzkuNjA3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAxXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAxXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1MC4wMzEgLTE3OS42MDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1Mi41MjIgMTc5LjYwNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShmb3IpIDExLjYxNjQgVGoKLS0yNTAgVEptCi0obW9yZSkgMjAuNDczMSBUagotLTI1MCBUSm0KLShpbmZvcm1hdGlvbikgNDcuMDQzNCBUagotLTI1MCBUSm0KLShvbikgOS45NjI2IFRqCi0tMjUwIFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotLTI1MCBUSm0KLShtYW5hZ2VtZW50LikgNTMuMzk5NSBUagotWzEgMCAwIDEgNzIgMTc3LjQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xNjcuNDg3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxNTcuNjg5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKE5vdGUpIDE5LjM2NzMgVGoKLS0yODkgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTI5MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yODkgVEptCi0oYW1vdW50KSAyOS44ODc4IFRqCi0tMjg5IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjg5IFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotLTI5MCBUSm0KLShuZWVkZWQpIDI4LjIxNDEgVGoKLS0yODkgVEptCi0odG8pIDcuNzUwOSBUagotLTI4OSBUSm0KLShkZWNvbXByZXNzKSA0Ny4wMzM0IFRqCi0tMjg5IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yOTAgVEptCi0oc3RyZWFtKSAyNi41NjAzIFRqCi0tMjg5IFRKbQotKGNhbm5vdCkgMjYuNTYwMyBUagotLTI4OSBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI4OSBUSm0KLShkZXRlcm1pbmVkKSA0NC44MjE3IFRqCi0tMjkwIFRKbQotKHVudGlsKSAxOC4yNzE0IFRqCi0tMjg5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI4OSBUSm0KLShzdHJlYW0nKSAyOS44Nzc4IFRqCi01NSBUSm0KLShzKSAzLjg3NTQ1IFRqCi0tMjg5IFRKbQotKGhlYWRlcikgMjYuNTUwMyBUagotLTI5MCBUSm0KLShoYXMpIDEzLjI4MDEgVGoKLTcyIDE0NS43MzQgVGQKLShiZWVuKSAxOC44MDk0IFRqCi0tMzQyIFRKbQotKHJlYWQsKSAxOS42MzYzIFRqCi0tMzY2IFRKbQotKHNvKSA4Ljg1Njc1IFRqCi0tMzQyIFRKbQotKGUpIDQuNDIzMzkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW4pIDkuNDA0NjkgVGoKLS0zNDIgVEptCi0oaWYpIDYuMDg3MTUgVGoKLVsxIDAgMCAxIDE2MS4wODEgMTQ1LjczNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjEuMDgxIC0xNDUuNzM0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjEuMDgxIDE0NS43MzQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzc0luaXQpIDExOS41NTEgVGoKLVsxIDAgMCAxIDI4MC42MzMgMTQ1LjczNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODAuNjMzIC0xNDUuNzM0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODQuMDQzIDE0NS43MzQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc3VjY2VlZHMsKSAzNy44OTc3IFRqCi0tMzY1IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zNDMgVEptCi0oc3Vic2VxdWVudCkgNDQuMjczOCBUagotWzEgMCAwIDEgMzgxLjA5OCAxNDUuNzM0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM4MS4wOTggLTE0NS43MzRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM4MS4wOTggMTQ1LjczNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpEZWNvbXByZXNzKSA5NS42NDEgVGoKLVsxIDAgMCAxIDQ3Ni43MzkgMTQ1LjczNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzYuNzM5IC0xNDUuNzM0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00ODAuMTQ5IDE0NS43MzQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oY291bGQpIDIyLjEzNjkgVGoKLS0zNDIgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYWlsKSA5Ljk2MjYgVGoKLS0zNDMgVEptCi0od2l0aCkgMTcuNzEzNSBUagotWzEgMCAwIDEgNzIgMTMzLjc3OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTMzLjc3OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTMzLjc3OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9NRU1fRVJST1IpIDcxLjczMDcgVGoKLVsxIDAgMCAxIDE0My43MzEgMTMzLjc3OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDMuNzMxIC0xMzMuNzc5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDMuNzMxIDEzMy43NzkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMTMyLjQ2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTIyLjUwNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTExLjg2MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQb3NzaWJsZSkgMzMuMjE1MyBUagotLTI1MCBUSm0KLShyZXR1cm4pIDIzLjc5MDcgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlczopIDIzLjI0MjcgVGoKLVsxIDAgMCAxIDcyIDExMS43NjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC02MC45MDk1XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuOTUxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC45NTE0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDE2KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDIwIDIwCi0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA3Ni40OTc5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjU2OSAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE5LjA2NyA3NDkuMjQ1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFByb2dyYW1taW5nKSA1NC43OTQzIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ5Ni41NTYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTYuNTU2IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTYuNTU2IDc0OS4yNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDU0NC4zNzYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguMzA1IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTE3LjE5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCA5NS42NDEzIHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOTIuMDU0N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTcxMS42MzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDcxMS42MzEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfQ09ORklHX0VSUk9SKSA4OS42NjM0IFRqCi05OC40ODc5IDY5OS42NzYgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh0aGUpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0obGlicmFyeSkgNDEuODQyOSBUagotLTQyNiBUSm0KLShoYXMpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oYmVlbikgMjMuOTEwMiBUagotLTQyNiBUSm0KLShtaXMtY29tcGlsZWQpIDcxLjczMDcgVGoKLTkwIDY4Ny43MjEgVGQKLShCWl9QQVJBTV9FUlJPUikgODMuNjg1OCBUagotOTguNDg3OSA2NzUuNzY2IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oc21hbGwpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oIT0pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oMCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSgmJikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShzbWFsbCkgMjkuODg3OCBUagotLTQyNiBUSm0KLSghPSkgMTEuOTU1MSBUagotLTQyNiBUSm0KLSgxKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKFwpKSA1Ljk3NzU2IFRqCi05OC40ODc5IDY2My44MTEgVGQKLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShcKHZlcmJvc2l0eSkgNTkuNzc1NiBUagotLTQyNiBUSm0KLSg8OykgMTEuOTU1MSBUagotLTQyNiBUSm0KLSgwKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKHx8KSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHZlcmJvc2l0eSkgNTMuNzk4IFRqCi0tNDI2IFRKbQotKD4pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oNFwpKSAxMS45NTUxIFRqCi05MCA2NTEuODU2IFRkCi0oQlpfTUVNX0VSUk9SKSA3MS43MzA3IFRqCi05OC40ODc5IDYzOS45IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oaW5zdWZmaWNpZW50KSA3MS43MzA3IFRqCi0tNDI2IFRKbQotKG1lbW9yeSkgMzUuODY1NCBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShhdmFpbGFibGUpIDUzLjc5OCBUagotWzEgMCAwIDEgNzIgNjI0LjM1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02MTQuMzk2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2MDIuNDQxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEFsbG8pIDE3LjcxMzUgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhYmxlKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKG5lKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh4dCkgNy43NTA5IFRqCi0tMjUwIFRKbQotKGFjdGlvbnM6KSAzMC45OTM2IFRqCi1bMSAwIDAgMSA3MiA2MDIuMzQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtNDguODE2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCA0Ny44MjA3IHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNDQuMjM0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTU5Mi45NzZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDU5Mi45NzYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzcykgOTUuNjQxIFRqCi05OC40ODc5IDU4MS4wMjEgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShCWl9PSykgMjkuODg3OCBUagotLTQyNiBUSm0KLSh3YXMpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0ocmV0dXJuZWQpIDQ3LjgyMDUgVGoKLTk4LjQ4NzkgNTY5LjA2NiBUZAotKG5vKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHNwZWNpZmljKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGFjdGlvbikgMzUuODY1NCBUagotLTQyNiBUSm0KLShyZXF1aXJlZCkgNDcuODIwNSBUagotLTQyNiBUSm0KLShpbikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShjYXNlKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG9mKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGVycm9yKSAyOS44ODc4IFRqCi1bMSAwIDAgMSA3MiA1NTMuNTI0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTQzLjU2Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTIyLjkwMyBUZAotL0YxMjJfMCAxNy4yMTU0IFRmCi0oMy4zLjUuKSA0My4wNzI5IFRqCi1bMSAwIDAgMSAxMTkuODU4IDUyMi45MDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE5Ljg1OCAtNTIyLjkwM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE5Ljg1OCA1MjIuOTAzIFRkCi0vRjM5Ml8wIDE3LjIxNTQgVGYKLShCWjJfYnpEZWNvbXByZXNzKSAxNjUuMjY4IFRqCi1bMSAwIDAgMSAyODUuMTI2IDUyMi45MDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjEzLjEyNiAtMi4zMzI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMjQuOTA2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAyMy45MTAzIHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMjAuMzIzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTUxMS4yMDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDUxMS4yMDYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKEJaMl9iekRlY29tcHJlc3MpIDk1LjY0MSBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShiel9zdHJlYW0pIDUzLjc5OCBUagotMjgwLjMyNiA1MDkuNDYyIFRkCi0oKikgNS45Nzc1NiBUagotMjg2LjMwMyA1MTEuMjA2IFRkCi0oc3RybSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLVsxIDAgMCAxIDcyIDQ5NS42NjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDg1LjcwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDczLjc0NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm8pIDEzLjgzODEgVGoKLTE1IFRKbQotKHZpZGVzKSAyMS4wMzEgVGoKLS0zMDEgVEptCi0obW9yZSkgMjAuNDczMSBUagotLTMwMiBUSm0KLShpbnB1dCkgMjAuNDgzMSBUagotLTMwMSBUSm0KLShhbmQvb3V0KSAyOS44ODc4IFRqCi0tMzAyIFRKbQotKG91dHB1dCkgMjUuNDY0NCBUagotLTMwMSBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVmKSA4LjI5ODg1IFRqCi0yNSBUSm0KLShmZXIpIDExLjA1ODUgVGoKLS0zMDEgVEptCi0oc3BhY2UpIDIyLjEyNjkgVGoKLS0zMDIgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMzAxIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMwMiBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0tOTI4IFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTMwMSBUSm0KLShjYWxsZXIpIDIyLjEyNjkgVGoKLS0zMDIgVEptCi0obWFpbnRhaW5zKSAzOC43NDQ2IFRqCi0tMzAxIFRKbQotKGlucHV0KSAyMC40ODMxIFRqCi0tMzAyIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzAxIFRKbQotKG91dHB1dCkgMjUuNDY0NCBUagotLTMwMSBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVmKSA4LjI5ODg1IFRqCi0yNSBUSm0KLShmZXJzLCkgMTcuNDI0NiBUagotLTMxNSBUSm0KLShhbmQpIDE0LjM4NiBUagotNzIgNDYxLjc5MSBUZAotKHVzZXMpIDE3LjE1NTYgVGoKLVsxIDAgMCAxIDkxLjY0NjEgNDYxLjc5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MS42NDYxIC00NjEuNzkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MS42NDYxIDQ2MS43OTEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzcykgOTUuNjQxIFRqCi1bMSAwIDAgMSAxODcuMjg3IDQ2MS43OTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTg3LjI4NyAtNDYxLjc5MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTg5Ljc3OCA0NjEuNzkxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odHJhbnNmZXIpIDMwLjQyNTggVGoKLS0yNTAgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI1MCBUSm0KLShiZXR3ZWVuKSAzMy4xOTU0IFRqCi0tMjUwIFRKbQotKHRoZW0uKSAyMi40MTU5IFRqCi1bMSAwIDAgMSA3MiA0NjAuMjU3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00NTAuMjk0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0MzkuODczIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEJlZm9yZSkgMjcuMTA4MiBUagotLTQ5OCBUSm0KLShlYWNoKSAxOC4yNTE1IFRqCi0tNDk5IFRKbQotKGNhbGwpIDE0LjM4NiBUagotLTQ5OCBUSm0KLSh0bykgNy43NTA5IFRqCi1bMSAwIDAgMSAxNTkuMzU2IDQzOS44NzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU5LjM1NiAtNDM5Ljg3M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTU5LjM1NiA0MzkuODczIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekRlY29tcHJlc3MpIDk1LjY0MSBUagotWzEgMCAwIDEgMjU0Ljk5NyA0MzkuODczXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1NC45OTcgLTQzOS44NzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1NC45OTcgNDM5Ljg3MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAyNjMuMDcxIDQzOS44NzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjYzLjA3MSAtNDM5Ljg3M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjYzLjA3MSA0MzkuODczIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKG5leHRfaW4pIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDMwNC45MTQgNDM5Ljg3M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDQuOTE0IC00MzkuODczXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMDkuODc5IDQzOS44NzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tNDk4IFRKbQotKHBvaW50KSAyMC40ODMxIFRqCi0tNDk5IFRKbQotKGF0KSA3LjE5MyBUagotLTQ5OCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS00OTggVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTQ5OSBUSm0KLShkYXRhLCkgMTkuMDg4MyBUagotLTU2MCBUSm0KLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNDkyLjE3OSA0MzkuODczXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5Mi4xNzkgLTQzOS44NzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ5Mi4xNzkgNDM5Ljg3MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShhdmFpbF9pbikgNDcuODIwNSBUagotWzEgMCAwIDEgNTQwIDQzOS44NzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTQwIC00MzkuODczXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0MjcuOTE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHNob3VsZCkgMjYuNTcwMyBUagotLTMwOCBUSm0KLShpbmRpY2F0ZSkgMzEuNTQxNiBUagotLTMwOCBUSm0KLShobykgOS45NjI2IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotLTMwOSBUSm0KLShtYW4pIDE3LjE1NTYgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTMwOCBUSm0KLShieXRlcykgMjEuMDMxIFRqCi0tMzA4IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMwOCBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMzA4IFRKbQotKG1heSkgMTcuMTU1NiBUagotLTMwOSBUSm0KLShyZWFkLikgMTkuNjM2MyBUagotWzEgMCAwIDEgMjk0Ljk1NSA0MjcuOTE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5NC45NTUgLTQyNy45MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI5NC45NTUgNDI3LjkxOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpEZWNvbXByZXNzKSA5NS42NDEgVGoKLVsxIDAgMCAxIDM5MC41OTcgNDI3LjkxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTAuNTk3IC00MjcuOTE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zOTMuNjY3IDQyNy45MTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odXBkYXRlcykgMzAuNDM1NyBUagotWzEgMCAwIDEgNDI3LjE3MyA0MjcuOTE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQyNy4xNzMgLTQyNy45MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQyNy4xNzMgNDI3LjkxOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShuZXh0X2luKSA0MS44NDI5IFRqCi1bMSAwIDAgMSA0NjkuMDE2IDQyNy45MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY5LjAxNiAtNDI3LjkxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDY5LjAxNiA0MjcuOTE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDQ3NC43MjMgNDI3LjkxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzQuNzIzIC00MjcuOTE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NzQuNzIzIDQyNy45MTggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYXZhaWxfaW4pIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDUyMi41NDMgNDI3LjkxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MjIuNTQzIC00MjcuOTE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MjUuNjE0IDQyNy45MTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDcyIDQxNS45NjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQxNS45NjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQxNS45NjMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0odG90YWxfaW4pIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDExOS44MjEgNDE1Ljk2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTkuODIxIC00MTUuOTYzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMjIuMzExIDQxNS45NjMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShyZVwwMDNlY3QpIDI0Ljg5NjUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKG51bWJlcikgMzAuNDM1NyBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShieXRlcykgMjEuMDMxIFRqCi0tMjUwIFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMjUwIFRKbQotKGhhcykgMTMuMjgwMSBUagotLTI1MCBUSm0KLShyZWFkLikgMTkuNjM2MyBUagotWzEgMCAwIDEgNzIgNDEzLjgwNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDAzLjg0M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzk0LjA0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShTaW1pbGFybHkpIDM3LjA5MDggVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDExMy43OTkgMzk0LjA0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTMuNzk5IC0zOTQuMDQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTMuNzk5IDM5NC4wNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obmV4dF9vdXQpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDE2MS42MiAzOTQuMDQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2MS42MiAtMzk0LjA0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY0LjQxIDM5NC4wNDUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMjgwIFRKbQotKHBvaW50KSAyMC40ODMxIFRqCi0tMjgwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yODAgVEptCi0oYSkgNC40MjMzOSBUagotLTI4MCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVmKSA4LjI5ODg1IFRqCi0yNSBUSm0KLShmZXIpIDExLjA1ODUgVGoKLS0yODAgVEptCi0oaW4pIDcuNzUwOSBUagotLTI4MSBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTI4MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yODAgVEptCi0odW5jb21wcmVzc2VkKSA1Ni45OTYgVGoKLS0yODAgVEptCi0ob3V0cHV0KSAyNS40NjQ0IFRqCi0tMjgwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjgwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yODAgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yODAgVEptCi0ocGxhY2VkLCkgMjguNDkzIFRqCi0tMjg4IFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ4Ni4yMDIgMzk0LjA0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00ODYuMjAyIC0zOTQuMDQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00ODYuMjAyIDM5NC4wNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYXZhaWxfb3V0KSA1My43OTggVGoKLVsxIDAgMCAxIDU0MCAzOTQuMDQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtMzk0LjA0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzgyLjA5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGluZGljYXRpbmcpIDM5Ljg1MDQgVGoKLS01MjUgVEptCi0oaG8pIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS01MjQgVEptCi0obXVjaCkgMjIuMTM2OSBUagotLTUyNSBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS01MjQgVEptCi0oc3BhY2UpIDIyLjEyNjkgVGoKLS01MjUgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS01MjUgVEptCi0oYSkgNC40MjMzOSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhaWxhYmxlLikgMjkuMDUwOSBUagotWzEgMCAwIDEgMjg1Ljc5MiAzODIuMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjg1Ljc5MiAtMzgyLjA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODUuNzkyIDM4Mi4wOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMzY5LjQ3OCAzODIuMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzY5LjQ3OCAtMzgyLjA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNzQuNzA1IDM4Mi4wOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh1cGRhdGVzKSAzMC40MzU3IFRqCi1bMSAwIDAgMSA0MTAuMzY3IDM4Mi4wOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MTAuMzY3IC0zODIuMDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxMC4zNjcgMzgyLjA5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKG5leHRfb3V0KSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA0NTguMTg4IDM4Mi4wOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NTguMTg4IC0zODIuMDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ1OC4xODggMzgyLjA5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDQ2Ni41ODkgMzgyLjA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2Ni41ODkgLTM4Mi4wOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDY2LjU4OSAzODIuMDkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYXZhaWxfb3V0KSA1My43OTggVGoKLVsxIDAgMCAxIDUyMC4zODcgMzgyLjA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUyMC4zODcgLTM4Mi4wOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTI1LjYxNCAzODIuMDkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDcyIDM3MC4xMzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM3MC4xMzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM3MC4xMzUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0odG90YWxfb3V0KSA1My43OTggVGoKLVsxIDAgMCAxIDEyNS43OTggMzcwLjEzNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMjUuNzk4IC0zNzAuMTM1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMjguMjg5IDM3MC4xMzUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShyZVwwMDNlY3QpIDI0Ljg5NjUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKG51bWJlcikgMzAuNDM1NyBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShieXRlcykgMjEuMDMxIFRqCi0tMjUwIFRKbQotKG91dHB1dC4pIDI3Ljk1NTEgVGoKLVsxIDAgMCAxIDcyIDM2Ny45NzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM1OC4wMTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM0OC4yMTcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oWSkgNy4xOTMgVGoKLTExMCBUSm0KLShvdSkgOS45NjI2IFRqCi0tMzIwIFRKbQotKG1heSkgMTcuMTU1NiBUagotLTMyMSBUSm0KLShwcm8pIDEzLjI4MDEgVGoKLTE1IFRKbQotKHZpZGUpIDE3LjE1NTYgVGoKLS0zMjAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0zMjEgVEptCi0ocmVtbykgMjAuNDczMSBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMzIwIFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMzIxIFRKbQotKGxpdHRsZSkgMTguMjcxNCBUagotLTMyMCBUSm0KLShvcikgOC4yOTg4NSBUagotLTMyMCBUSm0KLShhcykgOC4yOTg4NSBUagotLTMyMSBUSm0KLShtdWNoKSAyMi4xMzY5IFRqCi0tMzIwIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0zMjEgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0zMjAgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMzIxIFRKbQotKGxpaykgMTAuNTIwNSBUagotMTAgVEptCi0oZSkgNC40MjMzOSBUagotLTMyMCBUSm0KLShvbikgOS45NjI2IFRqCi0tMzIwIFRKbQotKGVhY2gpIDE4LjI1MTUgVGoKLS0zMjEgVEptCi0oY2FsbCkgMTQuMzg2IFRqCi0tMzIwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi1bMSAwIDAgMSA0MDcuODE2IDM0OC4yMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDA3LjgxNiAtMzQ4LjIxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDA3LjgxNiAzNDguMjE3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekRlY29tcHJlc3MpIDk1LjY0MSBUagotWzEgMCAwIDEgNTAzLjQ1NyAzNDguMjE3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwMy40NTcgLTM0OC4yMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwMy40NTcgMzQ4LjIxNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi0tMTA0MyBUSm0KLShJbikgOC4yOTg4NSBUagotLTMyMCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTcyIDMzNi4yNjIgVGQKLShsaW1pdCwpIDIxLjMyIFRqCi0tMjk1IFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMjg2IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjg3IFRKbQotKGFjY2VwdGFibGUpIDQyLjA0MjIgVGoKLS0yODYgVEptCi0odG8pIDcuNzUwOSBUagotLTI4NiBUSm0KLShzdXBwbHkpIDI2LjU3MDMgVGoKLS0yODYgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yODcgVEptCi0ocmVtbykgMjAuNDczMSBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjg2IFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yODYgVEptCi0ob25lKSAxNC4zODYgVGoKLS0yODYgVEptCi0oYnl0ZSkgMTcuMTU1NiBUagotLTI4NyBUSm0KLShhdCkgNy4xOTMgVGoKLS0yODYgVEptCi0oYSkgNC40MjMzOSBUagotLTI4NiBUSm0KLSh0aW1lLCkgMjAuMjA0MiBUagotLTI5NSBUSm0KLShhbHRob3VnaCkgMzQuODY5MSBUagotLTI4NiBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yODcgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG91bGQpIDE3LjcxMzUgVGoKLS0yODYgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yODYgVEptCi0odGVycmlibHkpIDI5LjMyOTkgVGoKLS0yODYgVEptCi0oaW5lZikgMTUuNDkxOCBUagotMjUgVEptCi0oXDAwMmNpZW50LikgMjcuMzk3MiBUagotLTgzOCBUSm0KLShZKSA3LjE5MyBUagotMTEwIFRKbQotKG91KSA5Ljk2MjYgVGoKLTcyIDMyNC4zMDYgVGQKLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yNTAgVEptCi0oYWwpIDcuMTkzIFRqCi0xMCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXlzKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKGVuc3VyZSkgMjYuMDAyNCBUagotLTI1MCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKGF0KSA3LjE5MyBUagotLTI1MCBUSm0KLShsZWFzdCkgMTguMjYxNCBUagotLTI1MCBUSm0KLShvbmUpIDE0LjM4NiBUagotLTI1MCBUSm0KLShieXRlKSAxNy4xNTU2IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKG91dHB1dCkgMjUuNDY0NCBUagotLTI1MCBUSm0KLShzcGFjZSkgMjIuMTI2OSBUagotLTI1MCBUSm0KLShpcykgNi42NDUwNSBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFpbGFibGUpIDI2LjU2MDMgVGoKLS0yNTAgVEptCi0oYXQpIDcuMTkzIFRqCi0tMjUwIFRKbQotKGVhY2gpIDE4LjI1MTUgVGoKLS0yNTAgVEptCi0oY2FsbC4pIDE2Ljg3NjYgVGoKLVsxIDAgMCAxIDcyIDMyMi4xNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzEyLjE4N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzAyLjM4OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShVc2UpIDE1LjQ5MTggVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDEwMC43NzIgMzAyLjM4OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMDAuNzcyIC0zMDIuMzg5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDAuNzcyIDMwMi4zODkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzcykgOTUuNjQxIFRqCi1bMSAwIDAgMSAxOTYuNDEzIDMwMi4zODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTk2LjQxMyAtMzAyLjM4OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTk4LjkwNCAzMDIuMzg5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKHNpbXBsZXIpIDI5Ljg4NzggVGoKLS0yNTAgVEptCi0odGhhbikgMTcuMTU1NiBUagotWzEgMCAwIDEgMjYwLjA2NCAzMDIuMzg5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2MC4wNjQgLTMwMi4zODldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI2MC4wNjQgMzAyLjM4OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMzQzLjc1IDMwMi4zODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQzLjc1IC0zMDIuMzg5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNDMuNzUgMzAyLjM4OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAzMDAuMjMyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yOTAuMjY5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyODAuNDcxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFkpIDcuMTkzIFRqCi0xMTAgVEptCi0ob3UpIDkuOTYyNiBUagotLTM0NiBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0zNDcgVEptCi0ocHJvKSAxMy4yODAxIFRqCi0xNSBUSm0KLSh2aWRlKSAxNy4xNTU2IFRqCi0tMzQ2IFRKbQotKGlucHV0KSAyMC40ODMxIFRqCi0tMzQ2IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzQ2IFRKbQotKHJlbW8pIDIwLjQ3MzEgVGoKLTE1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTM0NyBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS0zNDYgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0zNDYgVEptCi0oZGVzY3JpYmVkKSAzOC4xNzY3IFRqCi0tMzQ2IFRKbQotKGFibykgMTQuMzg2IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUsKSA2LjkxNDA0IFRqCi0tMzcxIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzQ2IFRKbQotKHJlcGVhdGVkbHkpIDQxLjQ5NDIgVGoKLS0zNDYgVEptCi0oY2FsbCkgMTQuMzg2IFRqCi1bMSAwIDAgMSA0MjIuNjM4IDI4MC40NzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDIyLjYzOCAtMjgwLjQ3MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDIyLjYzOCAyODAuNDcxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekRlY29tcHJlc3MpIDk1LjY0MSBUagotWzEgMCAwIDEgNTE4LjI3OSAyODAuNDcxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUxOC4yNzkgLTI4MC40NzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUyMS43MjkgMjgwLjQ3MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh1bnRpbCkgMTguMjcxNCBUagotWzEgMCAwIDEgNzIgMjY4LjUxNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjY4LjUxNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjY4LjUxNiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9TVFJFQU1fRU5EKSA3Ny43MDgzIFRqCi1bMSAwIDAgMSAxNDkuNzA5IDI2OC41MTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQ5LjcwOSAtMjY4LjUxNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTUyLjMxNCAyNjguNTE2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMjYyIFRKbQotKHJldHVybmVkLikgMzUuNjg2IFRqCi0tMzQ0IFRKbQotKEFwcGVhcmFuY2UpIDQ3LjU3MTQgVGoKLS0yNjIgVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDI2MS43NjcgMjY4LjUxNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNjEuNzY3IC0yNjguNTE2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNjEuNzY3IDI2OC41MTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfU1RSRUFNX0VORCkgNzcuNzA4MyBUagotWzEgMCAwIDEgMzM5LjQ3NSAyNjguNTE2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzOS40NzUgLTI2OC41MTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM0Mi4wODEgMjY4LjUxNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShkZW5vdGVzKSAzMC40MzU3IFRqCi0tMjYyIFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLVsxIDAgMCAxIDM5Mi42NzIgMjY4LjUxNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTIuNjcyIC0yNjguNTE2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zOTIuNjcyIDI2OC41MTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzcykgOTUuNjQxIFRqCi1bMSAwIDAgMSA0ODguMzEzIDI2OC41MTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDg4LjMxMyAtMjY4LjUxNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDkwLjkxOSAyNjguNTE2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGhhcykgMTMuMjgwMSBUagotLTI2MiBUSm0KLShkZXRlY3RlZCkgMzMuMTk1NCBUagotNzIgMjU2LjU2MSBUZAotKHRoZSkgMTIuMTc0MyBUagotLTIxMiBUSm0KLShsb2dpY2FsKSAyNy4xMTgyIFRqCi0tMjEyIFRKbQotKGVuZCkgMTQuMzg2IFRqCi0tMjExIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjEyIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIxMiBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjEyIFRKbQotKHN0cmVhbS4pIDI5LjA1MDkgVGoKLVsxIDAgMCAxIDIzNy44NTggMjU2LjU2MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzcuODU4IC0yNTYuNTYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzcuODU4IDI1Ni41NjEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzcykgOTUuNjQxIFRqCi1bMSAwIDAgMSAzMzMuNDk5IDI1Ni41NjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzMzLjQ5OSAtMjU2LjU2MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzM1LjYwOSAyNTYuNTYxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLS0yMTIgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMjEyIFRKbQotKHByb2R1Y2UpIDMyLjA4OTUgVGoKLVsxIDAgMCAxIDQwMi4yNjMgMjU2LjU2MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MDIuMjYzIC0yNTYuNTYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MDIuMjYzIDI1Ni41NjEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfU1RSRUFNX0VORCkgNzcuNzA4MyBUagotWzEgMCAwIDEgNDc5Ljk3MiAyNTYuNTYxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3OS45NzIgLTI1Ni41NjFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ4Mi4wODIgMjU2LjU2MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh1bnRpbCkgMTguMjcxNCBUagotLTIxMiBUSm0KLShhbGwpIDkuOTYyNiBUagotLTIxMiBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLTcyIDI0NC42MDUgVGQKLShkYXRhKSAxNi41OTc3IFRqCi0tMjU2IFRKbQotKGhhcykgMTMuMjgwMSBUagotLTI1NiBUSm0KLShiZWVuKSAxOC44MDk0IFRqCi0tMjU1IFRKbQotKHBsYWNlZCkgMjYuMDAyNCBUagotLTI1NiBUSm0KLShpbnRvKSAxNS41MDE4IFRqCi0tMjU2IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1NiBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS0yNTYgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVyKSAxMS4wNTg1IFRqCi00MCBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjU3IFRKbQotKHNvKSA4Ljg1Njc1IFRqCi0tMjU2IFRKbQotKG9uY2UpIDE4LjgwOTQgVGoKLVsxIDAgMCAxIDI3OC45NzggMjQ0LjYwNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguOTc4IC0yNDQuNjA1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNzguOTc4IDI0NC42MDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfU1RSRUFNX0VORCkgNzcuNzA4MyBUagotWzEgMCAwIDEgMzU2LjY4NyAyNDQuNjA1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM1Ni42ODcgLTI0NC42MDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM1OS4yMzYgMjQ0LjYwNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhcHBlYXJzLCkgMzIuOTE2NCBUagotLTI1NyBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNTYgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMjU2IFRKbQotKGd1YXJhbnRlZWQpIDQzLjcwNTkgVGoKLS0yNTYgVEptCi0odG8pIDcuNzUwOSBUagotLTI1NiBUSm0KLShoYSkgOS40MDQ2OSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjU1IFRKbQotKGEpIDQuNDIzMzkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWlsYWJsZSkgMjYuNTYwMyBUagotNzIgMjMyLjY1IFRkCi0oYWxsKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGRlY29tcHJlc3NlZCkgNTYuNDM4MSBUagotLTI1MCBUSm0KLShvdXRwdXQsKSAyNy45NTUxIFRqCi0tMjUwIFRKbQotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAyMDUuMzY5IDIzMi42NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDUuMzY5IC0yMzIuNjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwNS4zNjkgMjMyLjY1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekRlY29tcHJlc3NFbmQpIDExMy41NzQgVGoKLVsxIDAgMCAxIDMxOC45NDMgMjMyLjY1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMxOC45NDMgLTIzMi42NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzIxLjQzMyAyMzIuNjUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oY2FuKSAxMy44MjgxIFRqCi0tMjUwIFRKbQotKHNhZmVseSkgMjMuNzkwNyBUagotLTI1MCBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI1MCBUSm0KLShjYWxsZWQuKSAyNi4yODEzIFRqCi1bMSAwIDAgMSA3MiAyMzAuNDkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yMjAuNTMxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyMTAuNzMyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKElmKSA2LjYzNTA5IFRqCi0tMjUwIFRKbQotKGNhc2UpIDE3LjE0NTYgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0oYW4pIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oZXJyb3IpIDE5LjM1NzMgVGoKLS0yNTAgVEptCi0ocmV0dXJuKSAyMy43OTA3IFRqCi0tMjUwIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZSwpIDE5LjA4ODMgVGoKLS0yNTAgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotLTI1MCBUSm0KLShjYWxsKSAxNC4zODYgVGoKLVsxIDAgMCAxIDI2MS4yNTkgMjEwLjczMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNjEuMjU5IC0yMTAuNzMyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNjEuMjU5IDIxMC43MzIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzc0VuZCkgMTEzLjU3NCBUagotWzEgMCAwIDEgMzc0LjgzMyAyMTAuNzMyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM3NC44MzMgLTIxMC43MzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM3Ny4zMjMgMjEwLjczMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKGNsZWFuKSAyMS4wMjExIFRqCi0tMjUwIFRKbQotKHVwKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNTAgVEptCi0ocmVsZWFzZSkgMjcuNjU2MiBUagotLTI1MCBUSm0KLShtZW1vcnkpIDMzLjIwNTMgVGoKLTY1IFRKbQotKC4pIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDIwOC41NzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTE5OC42MTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE4OC44MTUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUG9zc2libGUpIDMzLjIxNTMgVGoKLS0yNTAgVEptCi0ocmV0dXJuKSAyMy43OTA3IFRqCi0tMjUwIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZXM6KSAyMy4yNDI3IFRqCi1bMSAwIDAgMSA3MiAxODguNzE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTM3Ljg2M10gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDAuNTcyNiAtNi43NTQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5My44NDEgLTUwLjk1MTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNC40MTQgNTAuOTUxNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgxNykgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAyMSAyMQotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgLTguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNzYuNDk3OSAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0Mi41NjkgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxOS4wNjcgNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm9ncmFtbWluZykgNTQuNzk0MyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSA0OTYuNTU2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjU1NiAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDk2LjU1NiA3NDkuMjQ1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGxpYmJ6aXAyKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA1NDQuMzc2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc4LjMwNSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTUuMDM2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTIwMC44ODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMTc5LjMyOCByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDE3NS43NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC03MTEuNjMxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA3MTEuNjMxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1BBUkFNX0VSUk9SKSA4My42ODU4IFRqCi05OC40ODc5IDY5OS42NzYgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShzdHJtKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKE5VTEwpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oc3RybS0+cykgNDEuODQyOSBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShOVUxMKSAyMy45MTAyIFRqCi05OC40ODc5IDY4Ny43MjEgVGQKLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShzdHJtLT5hdmFpbF9vdXQpIDg5LjY2MzQgVGoKLS00MjYgVEptCi0oPCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSgxKSA1Ljk3NzU2IFRqCi05MCA2NzUuNzY2IFRkCi0oQlpfREFUQV9FUlJPUikgNzcuNzA4MyBUagotOTguNDg3OSA2NjMuODExIFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShkYXRhKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGludGVncml0eSkgNTMuNzk4IFRqCi0tNDI2IFRKbQotKGVycm9yKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGRldGVjdGVkKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGluKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShjb21wcmVzc2VkKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKHN0cmVhbSkgMzUuODY1NCBUagotOTAgNjUxLjg1NiBUZAotKEJaX0RBVEFfRVJST1JfTUFHSUMpIDExMy41NzQgVGoKLTk4LjQ4NzkgNjM5LjkgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh0aGUpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oY29tcHJlc3NlZCkgNTkuNzc1NiBUagotLTQyNiBUSm0KLShzdHJlYW0pIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oZG9lc24ndCkgNDEuODQyOSBUagotLTQyNiBUSm0KLShiZWdpbikgMjkuODg3OCBUagotLTQyNiBUSm0KLSh3aXRoKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShyaWdodCkgMjkuODg3OCBUagotLTQyNiBUSm0KLShtYWdpYykgMjkuODg3OCBUagotLTQyNiBUSm0KLShieXRlcykgMjkuODg3OCBUagotOTAgNjI3Ljk0NSBUZAotKEJaX01FTV9FUlJPUikgNzEuNzMwNyBUagotOTguNDg3OSA2MTUuOTkgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh0aGVyZSkgMjkuODg3OCBUagotLTQyNiBUSm0KLSh3YXNuJ3QpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oZW5vdWdoKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKG1lbW9yeSkgMzUuODY1NCBUagotLTQyNiBUSm0KLShhdmFpbGFibGUpIDUzLjc5OCBUagotOTAgNjA0LjAzNSBUZAotKEJaX1NUUkVBTV9FTkQpIDc3LjcwODMgVGoKLTk4LjQ4NzkgNTkyLjA4IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGxvZ2ljYWwpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oZW5kKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKG9mKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShkYXRhKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHN0cmVhbSkgMzUuODY1NCBUagotLTQyNiBUSm0KLSh3YXMpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oZGV0ZWN0ZWQpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oYW5kKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGFsbCkgMTcuOTMyNyBUagotOTguNDg3OSA1ODAuMTI1IFRkCi0ob3V0cHV0KSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKGluKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGhhcykgMTcuOTMyNyBUagotLTQyNiBUSm0KLShiZWVuKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGNvbnN1bWVkLCkgNTMuNzk4IFRqCi0tNDI2IFRKbQotKGVnKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHMtLT5hdmFpbF9vdXQpIDc3LjcwODMgVGoKLS00MjYgVEptCi0oPikgNS45Nzc1NiBUagotLTQyNiBUSm0KLSgwKSA1Ljk3NzU2IFRqCi05MCA1NjguMTY5IFRkCi0oQlpfT0spIDI5Ljg4NzggVGoKLTk4LjQ4NzkgNTU2LjIxNCBUZAotKG90aGVyd2lzZSkgNTMuNzk4IFRqCi1bMSAwIDAgMSA3MiA1NDAuNjczXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTUzMC43MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTE4Ljc1NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBbGxvKSAxNy43MTM1IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYWJsZSkgMTYuNTk3NyBUagotLTI1MCBUSm0KLShuZSkgOS40MDQ2OSBUagotMTUgVEptCi0oeHQpIDcuNzUwOSBUagotLTI1MCBUSm0KLShhY3Rpb25zOikgMzAuOTkzNiBUagotWzEgMCAwIDEgNzIgNTE4LjY1NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTYwLjc3MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggNTkuNzc1OCByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDU2LjE4OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC01MDkuMjldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDUwOS4yOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpEZWNvbXByZXNzKSA5NS42NDEgVGoKLTk4LjQ4NzkgNDk3LjMzNSBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKEJaX09LKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKHdhcykgMTcuOTMyNyBUagotLTQyNiBUSm0KLShyZXR1cm5lZCkgNDcuODIwNSBUagotOTAgNDg1LjM4IFRkCi0oQloyX2J6RGVjb21wcmVzc0VuZCkgMTEzLjU3NCBUagotOTguNDg3OSA0NzMuNDI1IFRkCi0ob3RoZXJ3aXNlKSA1My43OTggVGoKLVsxIDAgMCAxIDcyIDQ1Ny44ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00NDcuOTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQyNy4yNjIgVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKDMuMy42LikgNDMuMDcyOSBUagotWzEgMCAwIDEgMTE5Ljg1OCA0MjcuMjYyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS44NTggLTQyNy4yNjJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExOS44NTggNDI3LjI2MiBUZAotL0YzOTJfMCAxNy4yMTU0IFRmCi0oQloyX2J6RGVjb21wcmVzc0VuZCkgMTk2LjI1NiBUagotWzEgMCAwIDEgMzE2LjExNCA0MjcuMjYyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0NC4xMTQgLTIuMzMyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTI0LjkwNjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMjMuOTEwMyByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDIwLjMyMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC00MTUuNTY0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA0MTUuNTY0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGludCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShCWjJfYnpEZWNvbXByZXNzRW5kKSAxMTMuNTc0IFRqCi0tNDI2IFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKGJ6X3N0cmVhbSkgNTMuNzk4IFRqCi0yOTguMjU5IDQxMy44MjEgVGQKLSgqKSA1Ljk3NzU2IFRqCi0zMDQuMjM2IDQxNS41NjQgVGQKLShzdHJtKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKFwpOykgMTEuOTU1MSBUagotWzEgMCAwIDEgNzIgNDAwLjAyM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zOTAuMDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM3OC4xMDUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUmVsZWFzZXMpIDM0Ljg1OTEgVGoKLS0yNTAgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMjUwIFRKbQotKGFzc29jaWF0ZWQpIDQwLjk0NjMgVGoKLS0yNTAgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKGRlY29tcHJlc3Npb24pIDU5Ljc2NTYgVGoKLS0yNTAgVEptCi0oc3RyZWFtLikgMjkuMDUwOSBUagotWzEgMCAwIDEgNzIgMzc1Ljk0OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzY1Ljk4NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzU2LjE4NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQb3NzaWJsZSkgMzMuMjE1MyBUagotLTI1MCBUSm0KLShyZXR1cm4pIDIzLjc5MDcgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlczopIDIzLjI0MjcgVGoKLVsxIDAgMCAxIDcyIDM1Ni4wODddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC02MC43NzIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDU5Ljc3NTggcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA1Ni4xODkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtMzQ2LjcyM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgMzQ2LjcyMyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9QQVJBTV9FUlJPUikgODMuNjg1OCBUagotOTguNDg3OSAzMzQuNzY3IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oc3RybSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShOVUxMKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG9yKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHN0cm0tPnMpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oTlVMTCkgMjMuOTEwMiBUagotOTAgMzIyLjgxMiBUZAotKEJaX09LKSAyOS44ODc4IFRqCi05OC40ODc5IDMxMC44NTcgVGQKLShvdGhlcndpc2UpIDUzLjc5OCBUagotWzEgMCAwIDEgNzIgMjk1LjMxNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yODUuMzUzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyNzMuMzk3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEFsbG8pIDE3LjcxMzUgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhYmxlKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKG5lKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh4dCkgNy43NTA5IFRqCi0tMjUwIFRKbQotKGFjdGlvbnM6KSAzMC45OTM2IFRqCi1bMSAwIDAgMSA3MiAyNzMuMjk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMjQuOTA2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAyMy45MTAzIHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMjAuMzIzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTI2My45MzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTk4LjQ4NzkgMjYzLjkzMyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShOb25lLikgMjkuODg3OCBUagotWzEgMCAwIDEgNzIgMjQ4LjM5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0zLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIzOC40MjldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDIxMy42MzkgVGQKLS9GMTIyXzAgMjAuNjU4NSBUZgotKDMuNC4pIDM0LjQ1ODQgVGoKLS0yNzggVEptCi0oSGlnaC1sZSkgNzAuMDExNyBUagotMTUgVEptCi0odmVsKSAyOC43MTUzIFRqCi0tMjc4IFRKbQotKGludGVyZmFjZSkgODYuMTA0NiBUagotWzEgMCAwIDEgNzIgMjA5LjA0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTk5LjA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxOTEuNzIxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoaXMpIDE3LjcxMzUgVGoKLS0yNTAgVEptCi0oaW50ZXJmKSAyMS41NzkgVGoKLTEwIFRKbQotKGFjZSkgMTMuMjcwMiBUagotLTI1MCBUSm0KLShwcm8pIDEzLjI4MDEgVGoKLTE1IFRKbQotKHZpZGVzKSAyMS4wMzEgVGoKLS0yNTAgVEptCi0oZnVuY3Rpb25zKSAzNy4wODA4IFRqCi0tMjUwIFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI1MCBUSm0KLShyZWFkaW5nKSAyOS44Nzc4IFRqCi0tMjUwIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKHdyaXRpbmcpIDI4Ljc4MiBUagotWzEgMCAwIDEgMzAwLjI5MiAxOTEuNzIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMwMC4yOTIgLTE5MS43MjFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMwMC4yOTIgMTkxLjcyMSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMzMwLjE4IDE5MS43MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzMwLjE4IC0xOTEuNzIxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMzIuNjcgMTkxLjcyMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShmb3JtYXQpIDI2LjU2MDMgVGoKLS0yNTAgVEptCi0oXDAwMmxlcy4pIDE5LjA5ODMgVGoKLS02MjAgVEptCi0oRmlyc3QsKSAyMC43NjIxIFRqCi0tMjUwIFRKbQotKHNvbWUpIDIxLjAzMSBUagotLTI1MCBUSm0KLShnZW5lcmFsKSAyOS4zMTk5IFRqCi0tMjUwIFRKbQotKHBvaW50cy4pIDI2Ljg0OTIgVGoKLVsxIDAgMCAxIDcyIDE4OS41NjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yOS43MjM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi45NzM5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzguOTczOSAtMTU5Ljg0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03OC45NzM5IDE1OS44NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMjI1KSAzLjQ4NjkxIFRqCi1bMSAwIDAgMSA4Mi40NjA4IDE1OS44NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS45OTI1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODYuOTQ0IC0xNTkuODRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCAxNTkuODQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oQWxsKSAxMi43MzIyIFRqCi0tMzMyIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzMxIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMzMiBUSm0KLShmdW5jdGlvbnMpIDM3LjA4MDggVGoKLS0zMzIgVEptCi0odGFrKSAxMi4xNzQzIFRqCi0xMCBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMzMxIFRKbQotKGFuKSA5LjQwNDY5IFRqCi1bMSAwIDAgMSAyMDIuOTU4IDE1OS44NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDIuOTU4IC0xNTkuODRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwMi45NTggMTU5Ljg0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGludCkgMTcuOTMyNyBUagotMjIwLjg5MSAxNTguMDk3IFRkCi0oKikgNS45Nzc1NiBUagotWzEgMCAwIDEgMjI2Ljg2OCAxNTkuODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjI2Ljg2OCAtMTU5Ljg0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzAuMTcyIDE1OS44NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMDAycnN0KSAxNS41MDE4IFRqCi0tMzMyIFRKbQotKGFyKSA3Ljc0MDk0IFRqCi0xOCBUSm0KLShndW1lbnQsKSAzMi4zNzg1IFRqCi1bMSAwIDAgMSAyOTIuNDI2IDE1OS44NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yOTIuNDI2IC0xNTkuODRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI5Mi40MjYgMTU5Ljg0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6ZXJyb3IpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDMzNC4yNjkgMTU5Ljg0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzNC4yNjkgLTE1OS44NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzM0LjI2OSAxNTkuODQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotLTExMTAgVEptCi0oQWZ0ZXIpIDIxLjAyMTEgVGoKLS0zMzIgVEptCi0oZWFjaCkgMTguMjUxNSBUagotLTMzMSBUSm0KLShjYWxsLCkgMTYuODc2NiBUagotWzEgMCAwIDEgNDE0LjA4MyAxNTkuODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDE0LjA4MyAtMTU5Ljg0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MTQuMDgzIDE1OS44NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemVycm9yKSA0MS44NDI5IFRqCi1bMSAwIDAgMSA0NTUuOTI2IDE1OS44NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NTUuOTI2IC0xNTkuODRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ1OS4yMyAxNTkuODQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMzMyIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMzMxIFRKbQotKGNvbnN1bHRlZCkgMzguMTg2NiBUagotODYuOTQ0IDE0Ny44ODUgVGQKLShcMDAycnN0KSAxNS41MDE4IFRqCi0tMzQ5IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zNDkgVEptCi0oZGV0ZXJtaW5lKSAzOS44NDA0IFRqCi0tMzQ4IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM0OSBUSm0KLShvdXRjb21lKSAzNC4zMTEyIFRqCi0tMzQ5IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzQ5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM0OCBUSm0KLShjYWxsLikgMTYuODc2NiBUagotLTEyMTMgVEptCi0oSWYpIDYuNjM1MDkgVGoKLVsxIDAgMCAxIDI4MC4zODYgMTQ3Ljg4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODAuMzg2IC0xNDcuODg1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODAuMzg2IDE0Ny44ODUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnplcnJvcikgNDEuODQyOSBUagotWzEgMCAwIDEgMzIyLjIyOSAxNDcuODg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMyMi4yMjkgLTE0Ny44ODVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMyNS43MDQgMTQ3Ljg4NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpcykgNi42NDUwNSBUagotWzEgMCAwIDEgMzM1LjgyNCAxNDcuODg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzNS44MjQgLTE0Ny44ODVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzNS44MjQgMTQ3Ljg4NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9PSykgMjkuODg3OCBUagotWzEgMCAwIDEgMzY1LjcxMSAxNDcuODg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM2NS43MTEgLTE0Ny44ODVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM2NS43MTEgMTQ3Ljg4NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMzQ5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM0OSBUSm0KLShjYWxsKSAxNC4zODYgVGoKLS0zNDggVEptCi0oY29tcGxldGVkKSA0MS41MDQyIFRqCi0tMzQ5IFRKbQotKHN1Y2Nlc3NmdWxseSkgNDguNjk3MiBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTM3NCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTM0OCBUSm0KLShvbmx5KSAxNy43MTM1IFRqCi04Ni45NDQgMTM1LjkzIFRkCi0odGhlbikgMTcuMTU1NiBUagotLTI3MSBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yNzAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjcxIFRKbQotKHJldHVybikgMjMuNzkwNyBUagotLTI3MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFsdWUpIDE2LjU5NzcgVGoKLS0yNzEgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNzEgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjcwIFRKbQotKGZ1bmN0aW9uKSAzMy4yMDUzIFRqCi0tMjcxIFRKbQotKFwoaWYpIDkuNDA0NjkgVGoKLS0yNzAgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHlcKSkgOC4yOTg4NSBUagotLTI3MSBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI3MSBUSm0KLShjb25zKSAxOC4yNjE0IFRqCi0xIFRKbQotKHUpIDQuOTgxMyBUagotLTEgVEptCi0obCkgMi43Njk2IFRqCi0xIFRKbQotKHRlZC4pIDE0LjY2NDkgVGoKLS03NDQgVEptCi0oSWYpIDYuNjM1MDkgVGoKLVsxIDAgMCAxIDM2NS4wNzcgMTM1LjkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM2NS4wNzcgLTEzNS45M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzY1LjA3NyAxMzUuOTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnplcnJvcikgNDEuODQyOSBUagotWzEgMCAwIDEgNDA2LjkyIDEzNS45M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MDYuOTIgLTEzNS45M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDA5LjYxNiAxMzUuOTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaXMpIDYuNjQ1MDUgVGoKLVsxIDAgMCAxIDQxOC45NTYgMTM1LjkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQxOC45NTYgLTEzNS45M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE4Ljk1NiAxMzUuOTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfSU9fRVJST1IpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDQ4NC43MSAxMzUuOTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDg0LjcxIC0xMzUuOTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ4NC43MSAxMzUuOTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTI3MSBUSm0KLSh0aGVyZSkgMTkuOTE1MiBUagotLTI3MCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yNzEgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTg2Ljk0NCAxMjMuOTc1IFRkCi0oZXJyb3IpIDE5LjM1NzMgVGoKLS0yNDYgVEptCi0ocmVhZGluZy93cml0aW5nKSA2MS40Mjk0IFRqCi0tMjQ1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI0NiBUSm0KLSh1bmRlcmx5aW5nKSA0My4xNjc5IFRqCi0tMjQ2IFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yNDUgVEptCi0oXDAwMmxlLCkgMTUuMjIyOSBUagotLTI0NyBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI0NSBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNDYgVEptCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMjQ2IFRKbQotKHRoZW4pIDE3LjE1NTYgVGoKLS0yNDUgVEptCi0oY29uc3VsdCkgMjguNzgyIFRqCi1bMSAwIDAgMSA0MTQuMDk2IDEyMy45NzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDE0LjA5NiAtMTIzLjk3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE0LjA5NiAxMjMuOTc1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGVycm5vKSAyOS44ODc4IFRqCi1bMSAwIDAgMSA0NDMuOTg0IDEyMy45NzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQzLjk4NCAtMTIzLjk3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDQ2LjQzMiAxMjMuOTc1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC8pIDIuNzY5NiBUagotWzEgMCAwIDEgNDUxLjY0OSAxMjMuOTc1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ1MS42NDkgLTEyMy45NzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ1MS42NDkgMTIzLjk3NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShwZXJyb3IpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDQ4Ny41MTQgMTIzLjk3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00ODcuNTE0IC0xMjMuOTc1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00ODkuOTYyIDEyMy45NzUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odG8pIDcuNzUwOSBUagotLTI0NiBUSm0KLShkZXRlcm1pbmUpIDM5Ljg0MDQgVGoKLTg2Ljk0NCAxMTIuMDIgVGQKLSh0aGUpIDEyLjE3NDMgVGoKLS0zNTYgVEptCi0oY2F1c2UpIDIyLjEyNjkgVGoKLS0zNTYgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zNTUgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzU2IFRKbQotKGRpZikgMTEuMDY4NCBUagotMjUgVEptCi0oXDAwMmN1bHR5KSAyNS40NjQ0IFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAyMDYuNTI4IDExMi4wMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDYuNTI4IC0xMTIuMDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwNi41MjggMTEyLjAyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6ZXJyb3IpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDI0OC4zNzEgMTEyLjAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0OC4zNzEgLTExMi4wMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjUxLjkxNiAxMTIuMDIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0obWF5KSAxNy4xNTU2IFRqCi0tMzU2IFRKbQotKGFsc28pIDE2LjA0OTcgVGoKLS0zNTYgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0zNTUgVEptCi0oc2V0KSAxMS4wNjg0IFRqCi0tMzU2IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zNTYgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhcmlvdXMpIDI0LjM0ODYgVGoKLS0zNTYgVEptCi0ob3RoZXIpIDIwLjQ3MzEgVGoKLS0zNTYgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlczspIDIzLjI0MjcgVGoKLS00MDggVEptCi0ocHJlY2lzZSkgMjguMjE0MSBUagotLTM1NiBUSm0KLShkZXRhaWxzKSAyNi4wMTIzIFRqCi0tMzU2IFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTM1NiBUSm0KLShnaSkgNy43NTA5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVuKSA5LjQwNDY5IFRqCi0tMzU2IFRKbQotKG9uKSA5Ljk2MjYgVGoKLS0zNTYgVEptCi0oYSkgNC40MjMzOSBUagotODYuOTQ0IDEwMC4wNjQgVGQKLShwZXIpIDEyLjcyMjIgVGoKLTIwIFRKbQotKC1mdW5jdGlvbikgMzYuNTIyOSBUagotLTI1MCBUSm0KLShiYXNpcykgMTkuOTI1MiBUagotLTI1MCBUSm0KLShiZWxvKSAxNy4xNTU2IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgMTg2LjgzOSAxMDAuMDY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExNC44MzggLTQ5LjIxMjZdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMzc0LjM5NCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDYuODU0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQwLjU3MjYgLTYuNzU0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTMuODQxIC01MC45NTE0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MzQuNDE0IDUwLjk1MTQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMTgpIDkuOTYyNiBUagotWzEgMCAwIDEgNDUzLjI2OSA1MC44NTE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgOTMuNTk4NSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi4yNzY1IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotUQotc2hvd3BhZ2UKLSUlUGFnZVRyYWlsZXIKLXBkZkVuZFBhZ2UKLSUlUGFnZTogMjIgMjIKLSUlQmVnaW5QYWdlU2V0dXAKLSUlUGFnZU9yaWVudGF0aW9uOiBQb3J0cmFpdAotcGRmU3RhcnRQYWdlCi0wIDAgNjEyIDc5MiByZSBXCi0lJUVuZFBhZ2VTZXR1cAotW10gMCBkCi0xIGkKLTAgagotMCBKCi0xMCBNCi0xIHcKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLWZhbHNlIG9wCi1mYWxzZSBPUAotMCAwIDYxMiA3OTIgcmUKLVcKLXEKLVsxIDAgMCAxIDcyIDc0MS41NTRdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAxNC40NDU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTg3LjE5NyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IC04LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDc2LjQ5NzkgLTYuNzU0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNDIuNTY5IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MTkuMDY3IDc0OS4yNDUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUHJvZ3JhbW1pbmcpIDU0Ljc5NDMgVGoKLS0yNTAgVEptCi0od2l0aCkgMTcuNzEzNSBUagotWzEgMCAwIDEgNDk2LjU1NiA3NDkuMjQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5Ni41NTYgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ5Ni41NTYgNzQ5LjI0NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShsaWJiemlwMikgNDcuODIwNSBUagotWzEgMCAwIDEgNTQ0LjM3NiA3NDkuMjQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3OC4zMDUgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDI4MC43OTYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzIuOTc0IC01LjAzNjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0wLjQ5ODFdIGNtCi1xCi1bXSAwIGQKLTAgSgotMC40OTgxIHcKLTAgMC4yNDkxIG0KLTQ3NS40NjUgMC4yNDkxIGwKLVMKLVEKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ3OS4yNTEgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0zMS41MTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi45NzM5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzguOTczOSAtNzEwLjAzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzguOTczOSA3MTAuMDM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwyMjUpIDMuNDg2OTEgVGoKLVsxIDAgMCAxIDgyLjQ2MDggNzEwLjAzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS45OTI1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODYuOTQ0IC03MTAuMDM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJZikgNi42MzUwOSBUagotWzEgMCAwIDEgOTUuOTU3NiA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTk1Ljk1NzYgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTk1Ljk1NzYgNzEwLjAzNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemVycm9yKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAxMzcuODAxIDcxMC4wMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTM3LjgwMSAtNzEwLjAzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQwLjE3OSA3MTAuMDM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGluZGljYXRlcykgMzUuNDE3IFRqCi0tMjM5IFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tMjM4IFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi0tMjM5IFRKbQotKFwoaWUsKSAxMy4wMDEyIFRqCi0tMjQxIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh5dGhpbmcpIDI1LjQ2NDQgVGoKLS0yMzkgVEptCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeGNlcHQpIDIxLjU3OSBUagotWzEgMCAwIDEgMjkyLjIyNSA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5Mi4yMjUgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI5Mi4yMjUgNzEwLjAzNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9PSykgMjkuODg3OCBUagotWzEgMCAwIDEgMzIyLjExMyA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMyMi4xMTMgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMyNC40OTIgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMzQxLjI1NiA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0MS4yNTYgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM0MS4yNTYgNzEwLjAzNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9TVFJFQU1fRU5EKSA3Ny43MDgzIFRqCi1bMSAwIDAgMSA0MTguOTY1IDcxMC4wMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDE4Ljk2NSAtNzEwLjAzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE4Ljk2NSA3MTAuMDM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwpLCkgNS44MDgyIFRqCi0tMjM5IFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTIzOSBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yMzggVEptCi0oaW1tZWRpYXRlbHkpIDQ5LjgxMyBUagotLTIzOSBUSm0KLShjYWxsKSAxNC4zODYgVGoKLVsxIDAgMCAxIDg2Ljk0NCA2OTguMDgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDY5OC4wODIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6UmVhZENsb3NlKSA4OS42NjM0IFRqCi1bMSAwIDAgMSAxNzYuNjA4IDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTc2LjYwOCAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTc5LjM0MyA2OTguMDgyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwob3IpIDExLjYxNjQgVGoKLVsxIDAgMCAxIDE5My42OTUgNjk4LjA4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTMuNjk1IC02OTguMDgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xOTMuNjk1IDY5OC4wODIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6V3JpdGVDbG9zZSkgOTUuNjQxIFRqCi1bMSAwIDAgMSAyODkuMzM3IDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjg5LjMzNyAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjg5LjMzNyA2OTguMDgyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0yODEgVEptCi0oZGVwZW5kaW5nKSA0MS41MDQyIFRqCi0tMjc0IFRKbQotKG9uKSA5Ljk2MjYgVGoKLS0yNzUgVEptCi0od2hldGhlcikgMzIuMDg5NSBUagotLTI3NCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNzUgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMjc1IFRKbQotKGF0dGVtcHRpbmcpIDQyLjYyIFRqCi0tMjc0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNzUgVEptCi0ocmVhZCkgMTcuMTQ1NiBUagotLTI3NCBUSm0KLShvcikgOC4yOTg4NSBUagotLTI3NSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjc0IFRKbQotKHdyaXRlXCkpIDIzLjc5MDcgVGoKLTg2Ljk0NCA2ODYuMTI3IFRkCi0odG8pIDcuNzUwOSBUagotLTI0MiBUSm0KLShmcmVlKSAxNS40ODE5IFRqCi0tMjQyIFRKbQotKHVwKSA5Ljk2MjYgVGoKLS0yNDEgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS0yNDIgVEptCi0ocmVzb3VyY2VzKSAzNy42MTg4IFRqCi0tMjQyIFRKbQotKGFzc29jaWF0ZWQpIDQwLjk0NjMgVGoKLS0yNDIgVEptCi0od2kpIDkuOTYyNiBUagotMSBUSm0KLSh0aCkgNy43NTA5IFRqCi0tMjQyIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI0MiBUSm0KLShzdHJlYW0uKSAyOS4wNTA5IFRqCi0tNjE0IFRKbQotKE9uY2UpIDIxLjAyMTEgVGoKLS0yNDIgVEptCi0oYW4pIDkuNDA0NjkgVGoKLS0yNDIgVEptCi0oZXJyb3IpIDE5LjM1NzMgVGoKLS0yNDIgVEptCi0oaGFzKSAxMy4yODAxIFRqCi0tMjQyIFRKbQotKGJlZW4pIDE4LjgwOTQgVGoKLS0yNDEgVEptCi0oaW5kaWNhdGVkLCkgMzkuMDEzNSBUagotLTI0NCBUSm0KLShiZWhhKSAxOC44MDk0IFRqCi0yMCBUSm0KLSh2aW91cikgMjEuMDMxIFRqCi0tMjQxIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjQyIFRKbQotKGFsbCkgOS45NjI2IFRqCi0tMjQyIFRKbQotKGNhbGxzKSAxOC4yNjE0IFRqCi0tMjQyIFRKbQotKGUpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHhjZXB0KSAyMS41NzkgVGoKLVsxIDAgMCAxIDg2Ljk0NCA2NzQuMTcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtNjc0LjE3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDY3NC4xNzIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6UmVhZENsb3NlKSA4OS42NjM0IFRqCi1bMSAwIDAgMSAxNzYuNjA4IDY3NC4xNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTc2LjYwOCAtNjc0LjE3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTc5LjcwNSA2NzQuMTcyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwoKSAzLjMxNzU1IFRqCi1bMSAwIDAgMSAxODMuMDIyIDY3NC4xNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTgzLjAyMiAtNjc0LjE3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTgzLjAyMiA2NzQuMTcyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ieldyaXRlQ2xvc2UpIDk1LjY0MSBUagotWzEgMCAwIDEgMjc4LjY2NCA2NzQuMTcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3OC42NjQgLTY3NC4xNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3OC42NjQgNjc0LjE3MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcKSkgMy4zMTc1NSBUagotLTMxMSBUSm0KLShpcykgNi42NDUwNSBUagotLTMxMSBUSm0KLSh1bmRlXDAwMm5lZC4pIDQxLjc4MzEgVGoKLS05ODUgVEptCi0oVGhlKSAxNS40OTE4IFRqCi0tMzExIFRKbQotKGltcGxpY2F0aW9uKSA0NS4zODk2IFRqCi0tMzEwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzExIFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0zMTEgVEptCi0oXCgxXCkpIDExLjYxNjQgVGoKLVsxIDAgMCAxIDQ1NS45ODggNjc0LjE3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NTUuOTg4IC02NzQuMTcyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NTUuOTg4IDY3NC4xNzIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnplcnJvcikgNDEuODQyOSBUagotWzEgMCAwIDEgNDk3LjgzMSA2NzQuMTcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5Ny44MzEgLTY3NC4xNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwMC45MjggNjc0LjE3MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShzaG91bGQpIDI2LjU3MDMgVGoKLS0zMTEgVEptCi0oYmUpIDkuNDA0NjkgVGoKLTg2Ljk0NCA2NjIuMjE3IFRkCi0oY2hlY2spIDIzLjIzMjggVGoKLTEwIFRKbQotKGVkKSA5LjQwNDY5IFRqCi0tMjkxIFRKbQotKGFmdGVyKSAxOC4yNTE1IFRqCi0tMjkxIFRKbQotKGVhY2gpIDE4LjI1MTUgVGoKLS0yOTEgVEptCi0oY2FsbCwpIDE2Ljg3NjYgVGoKLS0zMDEgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yOTEgVEptCi0oXCgyXCkpIDExLjYxNjQgVGoKLS0yOTEgVEptCi0oaWYpIDYuMDg3MTUgVGoKLVsxIDAgMCAxIDIyNS4zNDcgNjYyLjIxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMjUuMzQ3IC02NjIuMjE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjUuMzQ3IDY2Mi4yMTcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnplcnJvcikgNDEuODQyOSBUagotWzEgMCAwIDEgMjY3LjE5IDY2Mi4yMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjY3LjE5IC02NjIuMjE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNzAuMDkgNjYyLjIxNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpbmRpY2F0ZXMpIDM1LjQxNyBUagotLTI5MSBUSm0KLShhbikgOS40MDQ2OSBUagotLTI5MSBUSm0KLShlcnJvcikgMTkuMzU3MyBUagotNDAgVEptCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMzQ1LjE2MSA2NjIuMjE3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0NS4xNjEgLTY2Mi4yMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM0NS4xNjEgNjYyLjIxNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkQ2xvc2UpIDg5LjY2MzQgVGoKLVsxIDAgMCAxIDQzNC44MjQgNjYyLjIxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MzQuODI0IC02NjIuMjE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MzcuNzI0IDY2Mi4yMTcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXCgpIDMuMzE3NTUgVGoKLVsxIDAgMCAxIDQ0MS4wNDEgNjYyLjIxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDEuMDQxIC02NjIuMjE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDEuMDQxIDY2Mi4yMTcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6V3JpdGVDbG9zZSkgOTUuNjQxIFRqCi1bMSAwIDAgMSA1MzYuNjgzIDY2Mi4yMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTM2LjY4MyAtNjYyLjIxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM2LjY4MyA2NjIuMjE3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwpKSAzLjMxNzU1IFRqCi04Ni45NDQgNjUwLjI2MiBUZAotKHNob3VsZCkgMjYuNTcwMyBUagotLTI1MCBUSm0KLSh0aGVuKSAxNy4xNTU2IFRqCi0tMjUwIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKGNhbGxlZCkgMjMuNzkwNyBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKGNsZWFuKSAyMS4wMjExIFRqCi0tMjUwIFRKbQotKHVwLikgMTIuNDUzMyBUagotWzEgMCAwIDEgMjIwLjAzNCA2NTAuMjYxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE0OC4wMzQgLTIxLjkxNzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2Ljk3MzkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03OC45NzM5IC02MjguMzQ0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03OC45NzM5IDYyOC4zNDQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDIyNSkgMy40ODY5MSBUagotWzEgMCAwIDEgODIuNDYwOCA2MjguMzQ0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04Ni45NDQgLTYyOC4zNDRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCA2MjguMzQ0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoZSkgMTUuNDkxOCBUagotWzEgMCAwIDEgMTA2LjM2MiA2MjguMzQ0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEwNi4zNjIgLTYyOC4zNDRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwNi4zNjIgNjI4LjM0NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShGSUxFKSAyMy45MTAyIFRqCi0xMzAuMjczIDYyNi42IFRkCi0oKikgNS45Nzc1NiBUagotWzEgMCAwIDEgMTM2LjI1IDYyOC4zNDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTM2LjI1IC02MjguMzQ0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDAuMTc3IDYyOC4zNDQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYXIpIDcuNzQwOTQgVGoKLTE4IFRKbQotKGd1bWVudHMpIDMzLjc2MzMgVGoKLS0zOTQgVEptCi0ocGFzc2VkKSAyNi41NjAzIFRqCi0tMzk0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDIyNy41OTIgNjI4LjM0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMjcuNTkyIC02MjguMzQ0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjcuNTkyIDYyOC4zNDQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6UmVhZE9wZW4pIDgzLjY4NTggVGoKLVsxIDAgMCAxIDMxMS4yNzggNjI4LjM0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMTEuMjc4IC02MjguMzQ0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMTUuMjA1IDYyOC4zNDQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLykgMi43Njk2IFRqCi1bMSAwIDAgMSAzMjEuOTAxIDYyOC4zNDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzIxLjkwMSAtNjI4LjM0NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzIxLjkwMSA2MjguMzQ0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ieldyaXRlT3BlbikgODkuNjYzNCBUagotWzEgMCAwIDEgNDExLjU2NSA2MjguMzQ0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQxMS41NjUgLTYyOC4zNDRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxNS40OTEgNjI4LjM0NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShzaG91bGQpIDI2LjU3MDMgVGoKLS0zOTQgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0zOTQgVEptCi0oc2V0KSAxMS4wNjg0IFRqCi0tMzk0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zOTQgVEptCi0oYmluYXJ5KSAyNS40NTQ0IFRqCi0tMzk1IFRKbQotKG1vZGUuKSAyNC42Mjc1IFRqCi04Ni45NDQgNjE2LjM4OSBUZAotKE1vc3QpIDIwLjQ4MzEgVGoKLS0yMjkgVEptCi0oVW5peCkgMTkuOTI1MiBUagotLTIyOSBUSm0KLShzeXN0ZW1zKSAzMS41NTE2IFRqCi0tMjI4IFRKbQotKHdpbGwpIDE1LjUwMTggVGoKLS0yMjkgVEptCi0oZG8pIDkuOTYyNiBUagotLTIyOSBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yMjkgVEptCi0oYnkpIDkuOTYyNiBUagotLTIyOSBUSm0KLShkZWYpIDEyLjcyMjIgVGoKLTEwIFRKbQotKGF1bHQsKSAxNy40MzQ2IFRqCi0tMjMzIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTIyOSBUSm0KLShvdGhlcikgMjAuNDczMSBUagotLTIyOSBUSm0KLShwbGF0Zm9ybXMsKSA0MC42NzczIFRqCi0tMjMzIFRKbQotKGluY2x1ZGluZykgMzcuNjM4NyBUagotLTIyOSBUSm0KLShXKSA5LjQwNDY5IFRqCi00MCBUSm0KLShpbmRvKSAxNy43MTM1IFRqCi0yNSBUSm0KLSh3cykgMTEuMDY4NCBUagotLTIyOCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTIyOSBUSm0KLShNYWMsKSAyMC4xOTQyIFRqCi0tMjMzIFRKbQotKHdpbGwpIDE1LjUwMTggVGoKLS0yMjkgVEptCi0obm90LikgMTUuMjIyOSBUagotLTYwNiBUSm0KLShJZikgNi42MzUwOSBUagotLTIyOSBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yMjkgVEptCi0ob21pdCkgMTguMjcxNCBUagotODYuOTQ0IDYwNC40MzMgVGQKLSh0aGlzLCkgMTYuODg2NiBUagotLTI1MCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0obWF5KSAxNy4xNTU2IFRqCi0tMjUwIFRKbQotKGVuY291bnRlcikgMzkuMjgyNSBUagotLTI1MCBUSm0KLShwcm9ibGVtcykgMzcuMDgwOCBUagotLTI1MCBUSm0KLSh3aGVuKSAyMS41NzkgVGoKLS0yNTAgVEptCi0obW8pIDEyLjczMjIgVGoKLTE1IFRKbQotKHZpbmcpIDE3LjcxMzUgVGoKLS0yNTAgVEptCi0oY29kZSkgMTguODA5NCBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKG5lKSA5LjQwNDY5IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotLTI1MCBUSm0KLShwbGF0Zm9ybXMuKSA0MC42NzczIFRqCi1bMSAwIDAgMSAzNzIuNjYgNjA0LjQzM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDAuNjYgLTIxLjkxNzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2Ljk3MzkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03OC45NzM5IC01ODIuNTE2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03OC45NzM5IDU4Mi41MTYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDIyNSkgMy40ODY5MSBUagotWzEgMCAwIDEgODIuNDYwOCA1ODIuNTE2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04Ni45NDQgLTU4Mi41MTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCA1ODIuNTE2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKE1lbW9yeSkgMzQuMzExMiBUagotLTM0OCBUSm0KLShhbGxvY2F0aW9uKSAzOS4yOTI1IFRqCi0tMzQ4IFRKbQotKHJlcXVlc3RzKSAzMi42NDc0IFRqCi0tMzQ4IFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTM0OCBUSm0KLShoYW5kbGVkKSAzMS41NDE2IFRqCi0tMzQ4IFRKbQotKGJ5KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDI2Ny42NyA1ODIuNTE2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2Ny42NyAtNTgyLjUxNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjY3LjY3IDU4Mi41MTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obWFsbG9jKSAzNS44NjU0IFRqCi1bMSAwIDAgMSAzMDMuNTM1IDU4Mi41MTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzAzLjUzNSAtNTgyLjUxNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzA3LjAwMyA1ODIuNTE2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC8pIDIuNzY5NiBUagotWzEgMCAwIDEgMzEzLjI0MSA1ODIuNTE2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMxMy4yNDEgLTU4Mi41MTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMxMy4yNDEgNTgyLjUxNiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmcmVlKSAyMy45MTAyIFRqCi1bMSAwIDAgMSAzMzcuMTUxIDU4Mi41MTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzM3LjE1MSAtNTgyLjUxNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzM3LjE1MSA1ODIuNTE2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC4pIDIuNDkwNjUgVGoKLS0xMjA5IFRKbQotKEF0KSA5Ljk2MjYgVGoKLS0zNDggVEptCi0ocHJlc2VudCkgMjguNzcyIFRqCi0tMzQ4IFRKbQotKHRoZXJlKSAxOS45MTUyIFRqCi0tMzQ4IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzQ4IFRKbQotKG5vKSA5Ljk2MjYgVGoKLS0zNDggVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYWNpbGl0eSkgMjQuOTA2NSBUagotLTM0OCBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0zNDggVEptCi0odXNlcikgMTYuNTk3NyBUagotMjAgVEptCi0oLWRlXDAwMm5lZCkgMzIuNjQ3NCBUagotODYuOTQ0IDU3MC41NiBUZAotKG1lbW9yeSkgMzMuMjA1MyBUagotLTI1MCBUSm0KLShhbGxvY2F0b3JzKSAzOC43MzQ2IFRqCi0tMjUwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI1MCBUSm0KLShJL08pIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oZnVuY3Rpb25zKSAzNy4wODA4IFRqCi0tMjUwIFRKbQotKFwoY291bGQpIDI1LjQ1NDQgVGoKLS0yNTAgVEptCi0oZWFzaWx5KSAyMy4yNDI3IFRqCi0tMjUwIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKGFkZGVkLCkgMjYuMjgxMyBUagotLTI1MCBUSm0KLSh0aG91Z2hcKS4pIDMzLjQ4NDMgVGoKLVsxIDAgMCAxIDM4Ny4xNjUgNTcwLjU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMxNS4xNjUgLTEyLjExOTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU0OC40NzhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDUyOS45NzcgVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKDMuNC4xLikgNDMuMDcyOSBUagotWzEgMCAwIDEgMTE5Ljg1OCA1MjkuOTc3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS44NTggLTUyOS45NzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExOS44NTggNTI5Ljk3NyBUZAotL0YzOTJfMCAxNy4yMTU0IFRmCi0oQloyX2J6UmVhZE9wZW4pIDE0NC42MDkgVGoKLVsxIDAgMCAxIDI2NC40NjggNTI5Ljk3N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTIuNDY4IC0yLjMzMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC03Mi43MjcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDcxLjczMSByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDY4LjE0NDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC01MTguMjc5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA1MTguMjc5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHR5cGVkZWYpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0odm9pZCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShCWkZJTEU7KSA0MS44NDI5IFRqCi05MCA0OTQuMzY5IFRkCi0oQlpGSUxFKSAzNS44NjU0IFRqCi0xMzAuMTA5IDQ5Mi42MjUgVGQKLSgqKSA1Ljk3NzU2IFRqCi0xMzYuMDg3IDQ5NC4zNjkgVGQKLShCWjJfYnpSZWFkT3BlblwoKSA4OS42NjM0IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotMjUyLjE3MSA0OTIuNjI1IFRkCi0oKikgNS45Nzc1NiBUagotMjU4LjE0OSA0OTQuMzY5IFRkCi0oYnplcnJvciwpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oRklMRSkgMjMuOTEwMiBUagotMzM4LjM2OCA0OTIuNjI1IFRkCi0oKikgNS45Nzc1NiBUagotMzQ0LjM0NiA0OTQuMzY5IFRkCi0oZiwpIDExLjk1NTEgVGoKLTE5MS44NTUgNDgyLjQxNCBUZAotKGludCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLSh2ZXJib3NpdHksKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShzbWFsbCwpIDM1Ljg2NTQgVGoKLTE5MS44NTUgNDcwLjQ1OCBUZAotKHZvaWQpIDIzLjkxMDIgVGoKLTIyMC4wMSA0NjguNzE1IFRkCi0oKikgNS45Nzc1NiBUagotMjI1Ljk4NyA0NzAuNDU4IFRkCi0odW51c2VkLCkgNDEuODQyOSBUagotLTQyNiBUSm0KLShpbnQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oblVudXNlZCkgNDEuODQyOSBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLVsxIDAgMCAxIDcyIDQ1NC45MTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDQ0Ljk1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDMyLjk5OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcmVwYXJlKSAzMC40MjU4IFRqCi0tMjkwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yODkgVEptCi0ocmVhZCkgMTcuMTQ1NiBUagotLTI5MCBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjkwIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yODkgVEptCi0oZnJvbSkgMTkuMzY3MyBUagotLTI5MCBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yODkgVEptCi0oaGFuZGxlKSAyNi41NjAzIFRqCi1bMSAwIDAgMSAyNzIuNjk3IDQzMi45OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjcyLjY5NyAtNDMyLjk5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjcyLjY5NyA0MzIuOTk5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGYpIDUuOTc3NTYgVGoKLVsxIDAgMCAxIDI3OC42NzUgNDMyLjk5OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguNjc1IC00MzIuOTk5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNzguNjc1IDQzMi45OTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgMjg1LjQzOSA0MzIuOTk5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI4NS40MzkgLTQzMi45OTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI4NS40MzkgNDMyLjk5OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmKSA1Ljk3NzU2IFRqCi1bMSAwIDAgMSAyOTEuNDE3IDQzMi45OTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjkxLjQxNyAtNDMyLjk5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjk0LjMwMyA0MzIuOTk5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHNob3VsZCkgMjYuNTcwMyBUagotLTI5MCBUSm0KLShyZWZlcikgMTguNzk5NCBUagotLTI4OSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjkwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yOTAgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMjg5IFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjkwIFRKbQotKGhhcykgMTMuMjgwMSBUagotLTI4OSBUSm0KLShiZWVuKSAxOC44MDk0IFRqCi0tMjkwIFRKbQotKG9wZW5lZCkgMjguNzcyIFRqCi0tMjkwIFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI4OSBUSm0KLShyZWFkaW5nLCkgMzIuMzY4NSBUagotLTMwMCBUSm0KLShhbmQpIDE0LjM4NiBUagotNzIgNDIxLjA0NCBUZAotKGZvcikgMTEuNjE2NCBUagotLTMwNiBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTMwNSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDYgVEptCi0oZXJyb3IpIDE5LjM1NzMgVGoKLS0zMDYgVEptCi0oaW5kaWNhdG9yKSAzNS40MTcgVGoKLS0zMDUgVEptCi0oXCgpIDMuMzE3NTUgVGoKLVsxIDAgMCAxIDE5My40NTcgNDIxLjA0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTMuNDU3IC00MjEuMDQ0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xOTMuNDU3IDQyMS4wNDQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZmVycm9yXChmXCkpIDUzLjc5OCBUagotWzEgMCAwIDEgMjQ3LjI1NSA0MjEuMDQ0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0Ny4yNTUgLTQyMS4wNDRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI0Ny4yNTUgNDIxLjA0NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcKWlzKSA5Ljk2MjYgVGoKLS0zMDYgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMzA1IFRKbQotKHNldC4pIDEzLjU1OTEgVGoKLS05NTQgVEptCi0oSWYpIDYuNjM1MDkgVGoKLVsxIDAgMCAxIDMwOC43ODQgNDIxLjA0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDguNzg0IC00MjEuMDQ0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMDguNzg0IDQyMS4wNDQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oc21hbGwpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDMzOC42NzEgNDIxLjA0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMzguNjcxIC00MjEuMDQ0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNDEuNzE3IDQyMS4wNDQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaXMpIDYuNjQ1MDUgVGoKLS0zMDYgVEptCi0oMSwpIDcuNDcxOTUgVGoKLS0zMTkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzA2IFRKbQotKGxpYnJhcnkpIDI2LjU2MDMgVGoKLS0zMDYgVEptCi0od2lsbCkgMTUuNTAxOCBUagotLTMwNSBUSm0KLSh0cnkpIDExLjA2ODQgVGoKLS0zMDYgVEptCi0odG8pIDcuNzUwOSBUagotLTMwNiBUSm0KLShkZWMpIDEzLjgyODEgVGoKLTEgVEptCi0ob21wcmVzcykgMzMuMjA1MyBUagotLTMwNiBUSm0KLSh1c2luZykgMjEuNTg5IFRqCi0tMzA2IFRKbQotKGxlc3MpIDE0Ljk0MzkgVGoKLTcyIDQwOS4wODkgVGQKLShtZW1vcnkpIDMzLjIwNTMgVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yNTAgVEptCi0oYXQpIDcuMTkzIFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShlKSA0LjQyMzM5IFRqCi0xNSBUSm0KLSh4cGVuc2UpIDI3LjY2NjEgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0oc3BlZWQuKSAyNS4xNzU1IFRqCi1bMSAwIDAgMSA3MiA0MDYuOTMyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zOTYuOTY5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzODcuMTcxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEYpIDUuNTM5MjEgVGoKLTE1IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjI3IFRKbQotKHJlYXNvbnMpIDI5Ljg3NzggVGoKLS0yMjcgVEptCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeHBsYWluZWQpIDM0LjMxMTIgVGoKLS0yMjggVEptCi0oYmVsbykgMTcuMTU1NiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDE4OS4xOTMgMzg3LjE3MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODkuMTkzIC0zODcuMTcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODkuMTkzIDM4Ny4xNzEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6UmVhZCkgNTkuNzc1NiBUagotWzEgMCAwIDEgMjQ4Ljk2OSAzODcuMTcxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0OC45NjkgLTM4Ny4xNzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1MS4yMzIgMzg3LjE3MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aWxsKSAxNS41MDE4IFRqCi0tMjI3IFRKbQotKGRlY29tcHJlc3MpIDQ3LjAzMzQgVGoKLS0yMjcgVEptCi0odGhlKSAxMi4xNzQzIFRqCi1bMSAwIDAgMSAzMzIuNzMyIDM4Ny4xNzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzMyLjczMiAtMzg3LjE3MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzMyLjczMiAzODcuMTcxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKG5VbnVzZWQpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDM3NC41NzUgMzg3LjE3MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNzQuNTc1IC0zODcuMTcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNzYuODM4IDM4Ny4xNzEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYnl0ZXMpIDIxLjAzMSBUagotLTIyNyBUSm0KLShzdGFydGluZykgMjkuODg3OCBUagotLTIyNyBUSm0KLShhdCkgNy4xOTMgVGoKLVsxIDAgMCAxIDQ0MS43NCAzODcuMTcxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0MS43NCAtMzg3LjE3MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDQxLjc0IDM4Ny4xNzEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0odW51c2VkKSAzNS44NjU0IFRqCi1bMSAwIDAgMSA0NzcuNjA1IDM4Ny4xNzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDc3LjYwNSAtMzg3LjE3MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDc3LjYwNSAzODcuMTcxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0yMzIgVEptCi0oYmVmb3JlKSAyNS40NDQ1IFRqCi0tMjI3IFRKbQotKHN0YXJ0aW5nKSAyOS44ODc4IFRqCi03MiAzNzUuMjE2IFRkCi0odG8pIDcuNzUwOSBUagotLTI4MCBUSm0KLShyZWFkKSAxNy4xNDU2IFRqCi0tMjc5IFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS0yODAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjc5IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotWzEgMCAwIDEgMTU1LjA5NCAzNzUuMjE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1NS4wOTQgLTM3NS4yMTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1NS4wOTQgMzc1LjIxNSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmKSA1Ljk3NzU2IFRqCi1bMSAwIDAgMSAxNjEuMDcyIDM3NS4yMTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTYxLjA3MiAtMzc1LjIxNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTYxLjA3MiAzNzUuMjE1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC4pIDIuNDkwNjUgVGoKLS03OTcgVEptCi0oQXQpIDkuOTYyNiBUagotLTI4MCBUSm0KLShtb3N0KSAxOS4zNzczIFRqCi1bMSAwIDAgMSAyMDYuNDE0IDM3NS4yMTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjA2LjQxNCAtMzc1LjIxNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjA2LjQxNCAzNzUuMjE1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX01BWF9VTlVTRUQpIDc3LjcwODMgVGoKLVsxIDAgMCAxIDI4NC4xMjIgMzc1LjIxNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODQuMTIyIC0zNzUuMjE1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODYuOTA3IDM3NS4yMTUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYnl0ZXMpIDIxLjAzMSBUagotLTI4MCBUSm0KLShtYXkpIDE3LjE1NTYgVGoKLS0yNzkgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yODAgVEptCi0oc3VwcGxpZWQpIDMzLjc2MzMgVGoKLS0yNzkgVEptCi0obGlrKSAxMC41MjA1IFRqCi0xMCBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjgwIFRKbQotKHRoaXMuKSAxNi44ODY2IFRqCi0tNzk3IFRKbQotKElmKSA2LjYzNTA5IFRqCi0tMjc5IFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTI4MCBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhY2lsaXR5KSAyNC45MDY1IFRqCi0tMjc5IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjgwIFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTI3OSBUSm0KLShyZXF1aXJlZCwpIDM1LjY4NiBUagotNzIgMzYzLjI2IFRkCi0oeW91KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotLTI1MCBUSm0KLShwYXNzKSAxNy4xNTU2IFRqCi1bMSAwIDAgMSAxMzguMTQxIDM2My4yNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMzguMTQxIC0zNjMuMjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzOC4xNDEgMzYzLjI2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKE5VTEwpIDIzLjkxMDIgVGoKLVsxIDAgMCAxIDE2Mi4wNTIgMzYzLjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2Mi4wNTIgLTM2My4yNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY0LjU0MiAzNjMuMjYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDE4MS40MTkgMzYzLjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE4MS40MTkgLTM2My4yNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTgxLjQxOSAzNjMuMjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oMCkgNS45Nzc1NiBUagotWzEgMCAwIDEgMTg3LjM5NyAzNjMuMjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTg3LjM5NyAtMzYzLjI2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODkuODg3IDM2My4yNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShmb3IpIDExLjYxNjQgVGoKLVsxIDAgMCAxIDIwMy45OTQgMzYzLjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIwMy45OTQgLTM2My4yNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjAzLjk5NCAzNjMuMjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0odW51c2VkKSAzNS44NjU0IFRqCi1bMSAwIDAgMSAyMzkuODYgMzYzLjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIzOS44NiAtMzYzLjI2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNDIuMzUxIDM2My4yNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotLTI1MCBUSm0KLShuKSA0Ljk4MTMgVGoKLVsxIDAgMCAxIDI2NC4yMDggMzYzLjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2NC4yMDggLTM2My4yNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjY0LjIwOCAzNjMuMjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oVW51c2VkKSAzNS44NjU0IFRqCi1bMSAwIDAgMSAzMDAuMDc0IDM2My4yNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDAuMDc0IC0zNjMuMjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMwMi41NjUgMzYzLjI2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHJlc3BlY3RpKSAzMC45ODM3IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVseSkgMTIuMTc0MyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMzYxLjEwM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzUxLjE0MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzQxLjM0MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShGKSA1LjUzOTIxIFRqCi0xNSBUSm0KLShvcikgOC4yOTg4NSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0obWVhbmluZykgMzQuMzExMiBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShwYXJhbWV0ZXJzKSA0My43MDU5IFRqCi1bMSAwIDAgMSAxOTYuNjMxIDM0MS4zNDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTk2LjYzMSAtMzQxLjM0M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTk2LjYzMSAzNDEuMzQzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHNtYWxsKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAyMjYuNTE5IDM0MS4zNDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjI2LjUxOSAtMzQxLjM0M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjI5LjAxIDM0MS4zNDMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDI0NS44ODcgMzQxLjM0M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNDUuODg3IC0zNDEuMzQzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNDUuODg3IDM0MS4zNDMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0odmVyYm9zaXR5KSA1My43OTggVGoKLVsxIDAgMCAxIDI5OS42ODUgMzQxLjM0M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yOTkuNjg1IC0zNDEuMzQzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTkuNjg1IDM0MS4zNDMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTI1MCBUSm0KLShzZWUpIDEyLjcyMjIgVGoKLVsxIDAgMCAxIDMxOS44NzkgMzQxLjM0M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMTkuODc5IC0zNDEuMzQzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMTkuODc5IDM0MS4zNDMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzc0luaXQpIDExOS41NTEgVGoKLVsxIDAgMCAxIDQzOS40MzEgMzQxLjM0M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MzkuNDMxIC0zNDEuMzQzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MzkuNDMxIDM0MS4zNDMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMzM5LjE4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzI5LjIyM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzE5LjQyNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGUpIDE1LjQ5MTggVGoKLS00MDIgVEptCi0oYW1vdW50KSAyOS44ODc4IFRqCi0tNDAyIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tNDAyIFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotLTQwMiBUSm0KLShuZWVkZWQpIDI4LjIxNDEgVGoKLS00MDIgVEptCi0odG8pIDcuNzUwOSBUagotLTQwMiBUSm0KLShkZWNvbXByZXNzKSA0Ny4wMzM0IFRqCi0tNDAyIFRKbQotKGEpIDQuNDIzMzkgVGoKLS00MDEgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tNDAyIFRKbQotKGNhbm5vdCkgMjYuNTYwMyBUagotLTQwMiBUSm0KLShiZSkgOS40MDQ2OSBUagotLTQwMiBUSm0KLShkZXRlcm1pbmVkKSA0NC44MjE3IFRqCi0tNDAyIFRKbQotKHVudGlsKSAxOC4yNzE0IFRqCi0tNDAyIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTQwMiBUSm0KLShcMDAybGUnKSAxNi4wNDk3IFRqCi01NSBUSm0KLShzKSAzLjg3NTQ1IFRqCi0tNDAyIFRKbQotKGhlYWRlcikgMjYuNTUwMyBUagotLTQwMiBUSm0KLShoYXMpIDEzLjI4MDEgVGoKLS00MDIgVEptCi0oYmVlbikgMTguODA5NCBUagotLTQwMiBUSm0KLShyZWFkLikgMTkuNjM2MyBUagotNzIgMzA3LjQ3IFRkCi0oU28pIDEwLjUyMDUgVGoKLS00OTIgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS00OTEgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS00OTIgVEptCi0ocG9zc2libGUpIDMyLjY1NzQgVGoKLS00OTIgVEptCi0odGhhdCkgMTQuOTQzOSBUagotWzEgMCAwIDEgMTY2Ljc5NyAzMDcuNDddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY2Ljc5NyAtMzA3LjQ3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjYuNzk3IDMwNy40NyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkT3BlbikgODMuNjg1OCBUagotWzEgMCAwIDEgMjUwLjQ4MyAzMDcuNDddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjUwLjQ4MyAtMzA3LjQ3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNTUuMzgxIDMwNy40NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShyZXR1cm5zKSAyNy42NjYxIFRqCi1bMSAwIDAgMSAyODcuOTQ1IDMwNy40N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODcuOTQ1IC0zMDcuNDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI4Ny45NDUgMzA3LjQ3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX09LKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAzMTcuODMzIDMwNy40N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMTcuODMzIC0zMDcuNDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMyMi43MjkgMzA3LjQ3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTQ5MiBUSm0KLShhKSA0LjQyMzM5IFRqCi0tNDkxIFRKbQotKHN1YnNlcXVlbnQpIDQ0LjI3MzggVGoKLS00OTIgVEptCi0oY2FsbCkgMTQuMzg2IFRqCi0tNDkyIFRKbQotKG9mKSA4LjI5ODg1IFRqCi1bMSAwIDAgMSA0MzEuMTM1IDMwNy40N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MzEuMTM1IC0zMDcuNDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQzMS4xMzUgMzA3LjQ3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWQpIDU5Ljc3NTYgVGoKLVsxIDAgMCAxIDQ5MC45MTEgMzA3LjQ3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5MC45MTEgLTMwNy40N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDk1LjgxIDMwNy40NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aWxsKSAxNS41MDE4IFRqCi0tNDkyIFRKbQotKHJldHVybikgMjMuNzkwNyBUagotWzEgMCAwIDEgNzIgMjk1LjUxNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjk1LjUxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjk1LjUxNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9NRU1fRVJST1IpIDcxLjczMDcgVGoKLVsxIDAgMCAxIDE0My43MzEgMjk1LjUxNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDMuNzMxIC0yOTUuNTE0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNDMuNzMxIDI5NS41MTQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMjk0LjIwNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjg0LjI0Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjczLjU5NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQb3NzaWJsZSkgMzMuMjE1MyBUagotLTI1MCBUSm0KLShhc3NpZ25tZW50cykgNDguNzA3MiBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi1bMSAwIDAgMSAxNjkuMTQ0IDI3My41OTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY5LjE0NCAtMjczLjU5N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY5LjE0NCAyNzMuNTk3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6ZXJyb3IpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDIxMC45ODcgMjczLjU5N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTAuOTg3IC0yNzMuNTk3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTAuOTg3IDI3My41OTcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA3MiAyNzEuNDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xNjguMzY5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDE2Ny4zNzIgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAxNjMuNzg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtMjYyLjA3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgMjYyLjA3NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9DT05GSUdfRVJST1IpIDg5LjY2MzQgVGoKLTk4LjQ4NzkgMjUwLjEyIFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGxpYnJhcnkpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oaGFzKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGJlZW4pIDIzLjkxMDIgVGoKLS00MjYgVEptCi0obWlzLWNvbXBpbGVkKSA3MS43MzA3IFRqCi05MCAyMzguMTY1IFRkCi0oQlpfUEFSQU1fRVJST1IpIDgzLjY4NTggVGoKLTk4LjQ4NzkgMjI2LjIwOSBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGYpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oTlVMTCkgMjMuOTEwMiBUagotOTguNDg3OSAyMTQuMjU0IFRkCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oc21hbGwpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0obmVpdGhlcikgNDEuODQyOSBUagotLTQyNiBUSm0KLSgwKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKG5vcikgMTcuOTMyNyBUagotLTQyNiBUSm0KLSgxKSA1Ljk3NzU2IFRqCi05OC40ODc5IDIwMi4yOTkgVGQKLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSh1bnVzZWQpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oPT0pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oTlVMTCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLSgmJikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShuVW51c2VkKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKCE9KSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKDApIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oXCkpIDUuOTc3NTYgVGoKLTk4LjQ4NzkgMTkwLjM0NCBUZAotKG9yKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKHVudXNlZCkgMzUuODY1NCBUagotLTQyNiBUSm0KLSghPSkgMTEuOTU1MSBUagotLTQyNiBUSm0KLShOVUxMKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKCYmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKCFcKDApIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oPD0pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oblVudXNlZCkgNDEuODQyOSBUagotLTQyNiBUSm0KLSg8PSkgMTEuOTU1MSBUagotLTQyNiBUSm0KLShCWl9NQVhfVU5VU0VEXCkpIDgzLjY4NTggVGoKLS00MjYgVEptCi0oXCkpIDUuOTc3NTYgVGoKLTkwIDE3OC4zODkgVGQKLShCWl9JT19FUlJPUikgNjUuNzUzMiBUagotOTguNDg3OSAxNjYuNDM0IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oZmVycm9yXChmXCkpIDUzLjc5OCBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShub256ZXJvKSA0MS44NDI5IFRqCi05MCAxNTQuNDc4IFRkCi0oQlpfTUVNX0VSUk9SKSA3MS43MzA3IFRqCi05OC40ODc5IDE0Mi41MjMgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShpbnN1ZmZpY2llbnQpIDcxLjczMDcgVGoKLS00MjYgVEptCi0obWVtb3J5KSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGF2YWlsYWJsZSkgNTMuNzk4IFRqCi05MCAxMzAuNTY4IFRkCi0oQlpfT0spIDI5Ljg4NzggVGoKLTk4LjQ4NzkgMTE4LjYxMyBUZAotKG90aGVyd2lzZS4pIDU5Ljc3NTYgVGoKLVsxIDAgMCAxIDcyIDEwMy4wNzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtOTMuMTA4NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgODEuMTUzMyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQb3NzaWJsZSkgMzMuMjE1MyBUagotLTI1MCBUSm0KLShyZXR1cm4pIDIzLjc5MDcgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlczopIDIzLjI0MjcgVGoKLVsxIDAgMCAxIDcyIDgxLjA1MzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zMC4yMDJdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAxLjg5MjkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMzc0LjM5NCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDYuOTczN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQwLjU3MjYgLTYuNzU0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTMuODQxIC01MS4wNzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNC40MTQgNTEuMDcxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDE5KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDIzIDIzCi0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA3Ni40OTc5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjU2OSAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE5LjA2NyA3NDkuMjQ1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFByb2dyYW1taW5nKSA1NC43OTQzIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ5Ni41NTYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTYuNTU2IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTYuNTU2IDc0OS4yNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDU0NC4zNzYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguMzA1IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtODEuMzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggNTkuNzc1OCByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDU2LjE4OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC03MTEuNjMxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA3MTEuNjMxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKFBvaW50ZXIpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0odG8pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYW4pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYWJzdHJhY3QpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oQlpGSUxFKSAzNS44NjU0IFRqCi05OC40ODc5IDY5OS42NzYgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShiemVycm9yKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKEJaX09LKSAyOS44ODc4IFRqCi05MCA2ODcuNzIxIFRkCi0oTlVMTCkgMjMuOTEwMiBUagotOTguNDg3OSA2NzUuNzY2IFRkCi0ob3RoZXJ3aXNlKSA1My43OTggVGoKLVsxIDAgMCAxIDcyIDY2MC4yMjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjUwLjI2MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjM4LjMwNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBbGxvKSAxNy43MTM1IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYWJsZSkgMTYuNTk3NyBUagotLTI1MCBUSm0KLShuZSkgOS40MDQ2OSBUagotMTUgVEptCi0oeHQpIDcuNzUwOSBUagotLTI1MCBUSm0KLShhY3Rpb25zOikgMzAuOTkzNiBUagotWzEgMCAwIDEgNzIgNjM4LjIwN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTYwLjc3MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggNTkuNzc1OCByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDU2LjE4OTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC02MjguODQyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA2MjguODQyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWQpIDU5Ljc3NTYgVGoKLTk4LjQ4NzkgNjE2Ljg4NyBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGJ6ZXJyb3IpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oQlpfT0spIDI5Ljg4NzggVGoKLTkwIDYwNC45MzIgVGQKLShCWjJfYnpDbG9zZSkgNjUuNzUzMiBUagotOTguNDg3OSA1OTIuOTc2IFRkCi0ob3RoZXJ3aXNlKSA1My43OTggVGoKLVsxIDAgMCAxIDcyIDU3Ny40MzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01NjcuNDcyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1NDYuODEzIFRkCi0vRjEyMl8wIDE3LjIxNTQgVGYKLSgzLjQuMi4pIDQzLjA3MjkgVGoKLVsxIDAgMCAxIDExOS44NTggNTQ2LjgxM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTkuODU4IC01NDYuODEzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTkuODU4IDU0Ni44MTMgVGQKLS9GMzkyXzAgMTcuMjE1NCBUZgotKEJaMl9ielJlYWQpIDEwMy4yOTIgVGoKLVsxIDAgMCAxIDIyMy4xNSA1NDYuODEzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1MS4xNSAtMi4zMzI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMjQuOTA2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAyMy45MTAzIHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMjAuMzIzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTUzNS4xMTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDUzNS4xMTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKEJaMl9ielJlYWQpIDU5Ljc3NTYgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0yMDguNTk1IDUzMy4zNzMgVGQKLSgqKSA1Ljk3NzU2IFRqCi0yMTQuNTcyIDUzNS4xMTYgVGQKLShiemVycm9yLCkgNDcuODIwNSBUagotLTQyNiBUSm0KLShCWkZJTEUpIDM1Ljg2NTQgVGoKLTMwNi43NDcgNTMzLjM3MyBUZAotKCopIDUuOTc3NTYgVGoKLTMxMi43MjQgNTM1LjExNiBUZAotKGIsKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHZvaWQpIDIzLjkxMDIgVGoKLTM1Ny4wNzcgNTMzLjM3MyBUZAotKCopIDUuOTc3NTYgVGoKLTM2My4wNTUgNTM1LjExNiBUZAotKGJ1ZiwpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGxlbikgMTcuOTMyNyBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLVsxIDAgMCAxIDcyIDUxOS41NzRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTA5LjYxMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDk3LjY1NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShSZWFkcykgMjQuMzQ4NiBUagotLTI4NSBUSm0KLSh1cCkgOS45NjI2IFRqCi0tMjg0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDEyMi41NjkgNDk3LjY1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMjIuNTY5IC00OTcuNjU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMjIuNTY5IDQ5Ny42NTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGVuKSAxNy45MzI3IFRqCi1bMSAwIDAgMSAxNDAuNTAxIDQ5Ny42NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQwLjUwMSAtNDk3LjY1Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQzLjMzNyA0OTcuNjU2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwodW5jb21wcmVzc2VkXCkpIDYzLjYzMTEgVGoKLS0yODUgVEptCi0oYnl0ZXMpIDIxLjAzMSBUagotLTI4NCBUSm0KLShmcm9tKSAxOS4zNjczIFRqCi0tMjg1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI4NCBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjg1IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotWzEgMCAwIDEgMzM2LjMxOSA0OTcuNjU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzNi4zMTkgLTQ5Ny42NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzNi4zMTkgNDk3LjY1NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiKSA1Ljk3NzU2IFRqCi1bMSAwIDAgMSAzNDIuMjk2IDQ5Ny42NTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjI5NiAtNDk3LjY1Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzQ1LjEzMiA0OTcuNjU2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGludG8pIDE1LjUwMTggVGoKLS0yODUgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjg0IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWYpIDguMjk4ODUgVGoKLTI1IFRKbQotKGZlcikgMTEuMDU4NSBUagotWzEgMCAwIDEgNDA1LjIwNSA0OTcuNjU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQwNS4yMDUgLTQ5Ny42NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQwNS4yMDUgNDk3LjY1NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShidWYpIDE3LjkzMjcgVGoKLVsxIDAgMCAxIDQyMy4xMzcgNDk3LjY1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MjMuMTM3IC00OTcuNjU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MjMuMTM3IDQ5Ny42NTYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotLTgyOCBUSm0KLShJZikgNi42MzUwOSBUagotLTI4NCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yODUgVEptCi0ocmVhZCkgMTcuMTQ1NiBUagotLTI4NSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yODQgVEptCi0oc3VjY2Vzc2Z1bCwpIDQzLjQzNjkgVGoKLVsxIDAgMCAxIDcyIDQ4NS43MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQ4NS43MDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQ4NS43MDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnplcnJvcikgNDEuODQyOSBUagotWzEgMCAwIDEgMTEzLjg0MyA0ODUuNzAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExMy44NDMgLTQ4NS43MDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExNy4zNiA0ODUuNzAxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMzUzIFRKbQotKHNldCkgMTEuMDY4NCBUagotLTM1MyBUSm0KLSh0bykgNy43NTA5IFRqCi1bMSAwIDAgMSAxNTMuMzc0IDQ4NS43MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTUzLjM3NCAtNDg1LjcwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTUzLjM3NCA0ODUuNzAxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX09LKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAxODMuMjYyIDQ4NS43MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTgzLjI2MiAtNDg1LjcwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTg2Ljc3OCA0ODUuNzAxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi0tMzUzIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTM1MyBUSm0KLShudW1iZXIpIDMwLjQzNTcgVGoKLS0zNTMgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zNTMgVEptCi0oYnl0ZXMpIDIxLjAzMSBUagotLTM1MyBUSm0KLShyZWFkKSAxNy4xNDU2IFRqCi0tMzUzIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzUzIFRKbQotKHJldHVybmVkLikgMzUuNjg2IFRqCi0tMTIzOCBUSm0KLShJZikgNi42MzUwOSBUagotLTM1MyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNTMgVEptCi0obG9naWNhbCkgMjcuMTE4MiBUagotLTM1MyBUSm0KLShlbmQtb2Ytc3RyZWFtKSA1NS44ODAyIFRqCi0tMzUzIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhcykgOC4yOTg4NSBUagotLTM1MyBUSm0KLShkZXRlY3RlZCwpIDM1LjY4NiBUagotWzEgMCAwIDEgNzIgNDczLjc0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDczLjc0Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDczLjc0NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemVycm9yKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAxMTMuODQzIDQ3My43NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTEzLjg0MyAtNDczLjc0Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE2Ljc5NSA0NzMuNzQ2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLS0yOTYgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yOTcgVEptCi0oc2V0KSAxMS4wNjg0IFRqCi0tMjk2IFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDE3Mi4zMjkgNDczLjc0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzIuMzI5IC00NzMuNzQ2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzIuMzI5IDQ3My43NDYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfU1RSRUFNX0VORCkgNzcuNzA4MyBUagotWzEgMCAwIDEgMjUwLjAzNyA0NzMuNzQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1MC4wMzcgLTQ3My43NDZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1MC4wMzcgNDczLjc0NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMjk2IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjk3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5NiBUSm0KLShudW1iZXIpIDMwLjQzNTcgVGoKLS0yOTYgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yOTcgVEptCi0oYnl0ZXMpIDIxLjAzMSBUagotLTI5NiBUSm0KLShyZWFkKSAxNy4xNDU2IFRqCi0tMjk2IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjk2IFRKbQotKHJldHVybmVkLikgMzUuNjg2IFRqCi0tODk4IFRKbQotKEFsbCkgMTIuNzMyMiBUagotLTI5NyBUSm0KLShvdGhlcikgMjAuNDczMSBUagotWzEgMCAwIDEgNDcwIDQ3My43NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcwIC00NzMuNzQ2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NzAgNDczLjc0NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemVycm9yKSA0MS44NDI5IFRqCi1bMSAwIDAgMSA1MTEuODQzIDQ3My43NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTExLjg0MyAtNDczLjc0Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTE0Ljc5NSA0NzMuNzQ2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZXMpIDIwLjQ3MzEgVGoKLTcyIDQ2MS43OTEgVGQKLShkZW5vdGUpIDI2LjU2MDMgVGoKLS0yNTAgVEptCi0oYW4pIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oZXJyb3IpIDE5LjM1NzMgVGoKLTU1IFRKbQotKC4pIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDQ2MS42OTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQ1MS43MjldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQzOS44NzMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6UmVhZCkgNTkuNzc1NiBUagotWzEgMCAwIDEgMTMxLjc3NiA0MzkuODczXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzMS43NzYgLTQzOS44NzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzNC4yMjQgNDM5Ljg3MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aWxsKSAxNS41MDE4IFRqCi0tMjQ2IFRKbQotKHN1cHBseSkgMjYuNTcwMyBUagotWzEgMCAwIDEgMTgxLjE5MyA0MzkuODczXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE4MS4xOTMgLTQzOS44NzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE4MS4xOTMgNDM5Ljg3MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShsZW4pIDE3LjkzMjcgVGoKLVsxIDAgMCAxIDE5OS4xMjYgNDM5Ljg3M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTkuMTI2IC00MzkuODczXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDEuNTc1IDQzOS44NzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYnl0ZXMsKSAyMy41MjE3IFRqCi0tMjQ3IFRKbQotKHVubGVzcykgMjQuOTA2NSBUagotLTI0NSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDYgVEptCi0obG9naWNhbCkgMjcuMTE4MiBUagotLTI0NiBUSm0KLShzdHJlYW0pIDI2LjU2MDMgVGoKLS0yNDYgVEptCi0oZW5kKSAxNC4zODYgVGoKLS0yNDUgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNDYgVEptCi0oZGV0ZWN0ZWQpIDMzLjE5NTQgVGoKLS0yNDYgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yNDYgVEptCi0oYW4pIDkuNDA0NjkgVGoKLS0yNDYgVEptCi0oZXJyb3IpIDE5LjM1NzMgVGoKLS0yNDUgVEptCi0ob2NjdXJzLikgMjguNDkzIFRqCi0tNjE3IFRKbQotKEJlY2F1c2UpIDMzLjE5NTQgVGoKLS0yNDYgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNDYgVEptCi0odGhpcywpIDE2Ljg4NjYgVGoKLS0yNDcgVEptCi0oaXQpIDUuNTM5MjEgVGoKLTcyIDQyNy45MTggVGQKLShpcykgNi42NDUwNSBUagotLTIzMSBUSm0KLShwb3NzaWJsZSkgMzIuNjU3NCBUagotLTIzMSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjMxIFRKbQotKGRldGVjdCkgMjMuNzkwNyBUagotLTIzMSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMzEgVEptCi0oc3RyZWFtKSAyNi41NjAzIFRqCi0tMjMxIFRKbQotKGVuZCkgMTQuMzg2IFRqCi0tMjMyIFRKbQotKGJ5KSA5Ljk2MjYgVGoKLS0yMzEgVEptCi0ob2JzZXJ2aW5nKSAzOS4yOTI1IFRqCi0tMjMxIFRKbQotKHdoZW4pIDIxLjU3OSBUagotLTIzMSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMzEgVEptCi0obnVtYmVyKSAzMC40MzU3IFRqCi0tMjMxIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjMxIFRKbQotKGJ5dGVzKSAyMS4wMzEgVGoKLS0yMzEgVEptCi0ocmV0dXJuZWQpIDMzLjE5NTQgVGoKLS0yMzEgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yMzEgVEptCi0obGVzcykgMTQuOTQzOSBUagotLTIzMSBUSm0KLSh0aGFuKSAxNy4xNTU2IFRqCi0tMjMyIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIzMSBUSm0KLShudW1iZXIpIDMwLjQzNTcgVGoKLS0yMzEgVEptCi0ocmVxdWVzdGVkLikgNDAuNjY3MyBUagotNzIgNDE1Ljk2MyBUZAotKE5lKSAxMS42MTY0IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVydGhlbGVzcywpIDM3LjM0OTggVGoKLS0zMDkgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjk3IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjk4IFRKbQotKHJlKSA3Ljc0MDk0IFRqCi0xNSBUSm0KLShnKSA0Ljk4MTMgVGoKLTUgVEptCi0oYXJkZWQpIDIyLjEyNjkgVGoKLS0yOTcgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yOTcgVEptCi0oaW5hZHZpc2FibGU7KSA0OC4xNDkyIFRqCi0tMzIxIFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI5OCBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yOTcgVEptCi0oaW5zdGVhZCkgMjguMjI0IFRqCi0tMjk3IFRKbQotKGNoZWNrKSAyMy4yMzI4IFRqCi1bMSAwIDAgMSAzNjAuNjMxIDQxNS45NjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzYwLjYzMSAtNDE1Ljk2M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzYwLjYzMSA0MTUuOTYzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6ZXJyb3IpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDQwMi40NzUgNDE1Ljk2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MDIuNDc1IC00MTUuOTYzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MDUuNDM3IDQxNS45NjMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYWZ0ZXIpIDE4LjI1MTUgVGoKLS0yOTcgVEptCi0oZSkgNC40MjMzOSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnkpIDEyLjcyMjIgVGoKLS0yOTggVEptCi0oY2FsbCkgMTQuMzg2IFRqCi0tMjk3IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjk3IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhdGNoKSAxNi41OTc3IFRqCi0tMjk4IFRKbQotKG91dCkgMTIuNzMyMiBUagotLTI5NyBUSm0KLShmb3IpIDExLjYxNjQgVGoKLVsxIDAgMCAxIDcyIDQwNC4wMDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQwNC4wMDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQwNC4wMDggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfU1RSRUFNX0VORCkgNzcuNzA4MyBUagotWzEgMCAwIDEgMTQ5LjcwOSA0MDQuMDA4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE0OS43MDkgLTQwNC4wMDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE0OS43MDkgNDA0LjAwOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiA0MDIuNjk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zOTIuNzM1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzODIuMDkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSW50ZXJuYWxseSkgMzguNzM0NiBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMTE3LjU0MSAzODIuMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE3LjU0MSAtMzgyLjA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTcuNTQxIDM4Mi4wOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkKSA1OS43NzU2IFRqCi1bMSAwIDAgMSAxNzcuMzE3IDM4Mi4wOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzcuMzE3IC0zODIuMDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE4MS43ODYgMzgyLjA5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGNvcGllcykgMjUuNDU0NCBUagotLTQ0OSBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tNDQ4IFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS00NDkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tNDQ4IFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS00NDkgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tNDQ4IFRKbQotKGluKSA3Ljc1MDkgVGoKLS00NDkgVEptCi0oY2h1bmtzKSAyOC4yMjQgVGoKLS00NDkgVEptCi0ob2YpIDguMjk4ODUgVGoKLS00NDggVEptCi0oc2l6ZSkgMTUuNDkxOCBUagotWzEgMCAwIDEgNDE5LjYwMiAzODIuMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDE5LjYwMiAtMzgyLjA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MTkuNjAyIDM4Mi4wOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9NQVhfVU5VU0VEKSA3Ny43MDgzIFRqCi1bMSAwIDAgMSA0OTcuMzEgMzgyLjA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5Ny4zMSAtMzgyLjA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDEuNzc4IDM4Mi4wOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShieXRlcykgMjEuMDMxIFRqCi0tNDQ5IFRKbQotKGJlLSkgMTIuNzIyMiBUagotNzIgMzcwLjEzNSBUZAotKGZvcmUpIDE2LjAzOTggVGoKLS00MTQgVEptCi0oZGVjb21wcmVzc2luZykgNTkuNzY1NiBUagotLTQxNCBUSm0KLShpdC4pIDguMDI5ODYgVGoKLS0xNjA1IFRKbQotKElmKSA2LjYzNTA5IFRqCi0tNDE1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTQxNCBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS00MTQgVEptCi0oY29udGFpbnMpIDMzLjIwNTMgVGoKLS00MTQgVEptCi0obW9yZSkgMjAuNDczMSBUagotLTQxNCBUSm0KLShieXRlcykgMjEuMDMxIFRqCi0tNDE1IFRKbQotKHRoYW4pIDE3LjE1NTYgVGoKLS00MTQgVEptCi0oc3RyaWN0bHkpIDI3LjY3NjEgVGoKLS00MTQgVEptCi0obmVlZGVkKSAyOC4yMTQxIFRqCi0tNDE0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS00MTQgVEptCi0ocmVhY2gpIDIxLjU2OSBUagotLTQxNCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS00MTUgVEptCi0obG9naWNhbCkgMjcuMTE4MiBUagotLTQxNCBUSm0KLShlbmQtb2Ytc3RyZWFtLCkgNTguMzcwOSBUagotWzEgMCAwIDEgNzIgMzU4LjE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0zNTguMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM1OC4xOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkKSA1OS43NzU2IFRqCi1bMSAwIDAgMSAxMzEuNzc2IDM1OC4xOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMzEuNzc2IC0zNTguMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzNC43NDkgMzU4LjE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLS0yOTggVEptCi0oYWxtb3N0KSAyNi41NzAzIFRqCi0tMjk5IFRKbQotKGNlcnRhaW5seSkgMzQuODU5MSBUagotLTI5OCBUSm0KLShyZWFkKSAxNy4xNDU2IFRqCi0tMjk5IFRKbQotKHNvbWUpIDIxLjAzMSBUagotLTI5OCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI5OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yOTggVEptCi0odHJhaWxpbmcpIDI4Ljc4MiBUagotLTI5OCBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjk5IFRKbQotKGJlZm9yZSkgMjUuNDQ0NSBUagotLTI5OCBUSm0KLShzaWduYWxsaW5nKSAzOS4zMDI1IFRqCi1bMSAwIDAgMSA0MTMuMTYyIDM1OC4xOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MTMuMTYyIC0zNTguMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxMy4xNjIgMzU4LjE4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1NFUVVFTkNFX0VORCkgODkuNjYzNCBUagotWzEgMCAwIDEgNTAyLjgyNiAzNTguMThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTAyLjgyNiAtMzU4LjE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDIuODI2IDM1OC4xOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi0tNTk3IFRKbQotKFQpIDYuMDg3MTUgVGoKLTgwIFRKbQotKG8pIDQuOTgxMyBUagotLTI5OCBUSm0KLShjb2wtKSAxNS40OTE4IFRqCi03MiAzNDYuMjI0IFRkCi0obGVjdCkgMTQuMzg2IFRqCi0tMjQyIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI0MiBUSm0KLShyZWFkKSAxNy4xNDU2IFRqCi0tMjQzIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTI0MiBUSm0KLSh1bnVzZWQpIDI4LjIyNCBUagotLTI0MiBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjQyIFRKbQotKG9uY2UpIDE4LjgwOTQgVGoKLVsxIDAgMCAxIDIwOC43NTkgMzQ2LjIyNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDguNzU5IC0zNDYuMjI0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDguNzU5IDM0Ni4yMjQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfU0VRVUVOQ0VfRU5EKSA4OS42NjM0IFRqCi1bMSAwIDAgMSAyOTguNDIzIDM0Ni4yMjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjk4LjQyMyAtMzQ2LjIyNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzAwLjgzNSAzNDYuMjI0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGhhcykgMTMuMjgwMSBUagotLTI0MiBUSm0KLShhcHBlYXJlZCwpIDM4LjQ0NTcgVGoKLS0yNDQgVEptCi0oY2FsbCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAzNzQuMjAxIDM0Ni4yMjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzc0LjIwMSAtMzQ2LjIyNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzc0LjIwMSAzNDYuMjI0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRHZXRVbnVzZWQpIDExMy41NzQgVGoKLVsxIDAgMCAxIDQ4Ny43NzUgMzQ2LjIyNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00ODcuNzc1IC0zNDYuMjI0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTAuMTg4IDM0Ni4yMjQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaW1tZWRpYXRlbHkpIDQ5LjgxMyBUagotNzIgMzM0LjI2OSBUZAotKGJlZm9yZSkgMjUuNDQ0NSBUagotWzEgMCAwIDEgOTkuOTM1IDMzNC4yNjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTkuOTM1IC0zMzQuMjY5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05OS45MzUgMzM0LjI2OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkQ2xvc2UpIDg5LjY2MzQgVGoKLVsxIDAgMCAxIDE4OS41OTkgMzM0LjI2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODkuNTk5IC0zMzQuMjY5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODkuNTk5IDMzNC4yNjkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMzMyLjk1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzIyLjk5Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzEyLjM1MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQb3NzaWJsZSkgMzMuMjE1MyBUagotLTI1MCBUSm0KLShhc3NpZ25tZW50cykgNDguNzA3MiBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi1bMSAwIDAgMSAxNjkuMTQ0IDMxMi4zNTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY5LjE0NCAtMzEyLjM1MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY5LjE0NCAzMTIuMzUxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6ZXJyb3IpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDIxMC45ODcgMzEyLjM1MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTAuOTg3IC0zMTIuMzUxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTAuOTg3IDMxMi4zNTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA3MiAzMTAuMTk1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMjU5LjM0M10gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDAuNTcyNiAtNi43NTQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5My44NDEgLTUwLjk1MTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNC40MTQgNTAuOTUxNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyMCkgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAyNCAyNAotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgLTguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNzYuNDk3OSAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0Mi41NjkgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxOS4wNjcgNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm9ncmFtbWluZykgNTQuNzk0MyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSA0OTYuNTU2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjU1NiAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDk2LjU1NiA3NDkuMjQ1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGxpYmJ6aXAyKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA1NDQuMzc2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc4LjMwNSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTUuMDM2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTI4NC41NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMjYzLjAxNCByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDI1OS40MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC03MTEuNjMxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA3MTEuNjMxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1BBUkFNX0VSUk9SKSA4My42ODU4IFRqCi05OC40ODc5IDY5OS42NzYgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShiKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKE5VTEwpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYnVmKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKE5VTEwpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0obGVuKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKDwpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oMCkgNS45Nzc1NiBUagotOTAgNjg3LjcyMSBUZAotKEJaX1NFUVVFTkNFX0VSUk9SKSAxMDEuNjE5IFRqCi05OC40ODc5IDY3NS43NjYgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShiKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKHdhcykgMTcuOTMyNyBUagotLTQyNiBUSm0KLShvcGVuZWQpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0od2l0aCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShCWjJfYnpXcml0ZU9wZW4pIDg5LjY2MzQgVGoKLTkwIDY2My44MTEgVGQKLShCWl9JT19FUlJPUikgNjUuNzUzMiBUagotOTguNDg3OSA2NTEuODU2IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odGhlcmUpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYW4pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oZXJyb3IpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0ocmVhZGluZykgNDEuODQyOSBUagotLTQyNiBUSm0KLShmcm9tKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShjb21wcmVzc2VkKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKGZpbGUpIDIzLjkxMDIgVGoKLTkwIDYzOS45IFRkCi0oQlpfVU5FWFBFQ1RFRF9FT0YpIDEwMS42MTkgVGoKLTk4LjQ4NzkgNjI3Ljk0NSBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShjb21wcmVzc2VkKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKGZpbGUpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oZW5kZWQpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oYmVmb3JlKSAzNS44NjU0IFRqCi05OC40ODc5IDYxNS45OSBUZAotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShsb2dpY2FsKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKGVuZC1vZi1zdHJlYW0pIDc3LjcwODMgVGoKLS00MjYgVEptCi0od2FzKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGRldGVjdGVkKSA0Ny44MjA1IFRqCi05MCA2MDQuMDM1IFRkCi0oQlpfREFUQV9FUlJPUikgNzcuNzA4MyBUagotOTguNDg3OSA1OTIuMDggVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShhKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKGRhdGEpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oaW50ZWdyaXR5KSA1My43OTggVGoKLS00MjYgVEptCi0oZXJyb3IpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0od2FzKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGRldGVjdGVkKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGluKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShjb21wcmVzc2VkKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKHN0cmVhbSkgMzUuODY1NCBUagotOTAgNTgwLjEyNSBUZAotKEJaX0RBVEFfRVJST1JfTUFHSUMpIDExMy41NzQgVGoKLTk4LjQ4NzkgNTY4LjE2OSBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShzdHJlYW0pIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oZG9lcykgMjMuOTEwMiBUagotLTQyNiBUSm0KLShub3QpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oYmVnaW4pIDI5Ljg4NzggVGoKLS00MjYgVEptCi0od2l0aCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLSh0aGUpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0ocmVxdWlzaXRlKSA1My43OTggVGoKLS00MjYgVEptCi0oaGVhZGVyKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKGJ5dGVzKSAyOS44ODc4IFRqCi05OC40ODc5IDU1Ni4yMTQgVGQKLShcKGllLCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShub3QpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oYSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShiemlwMikgMjkuODg3OCBUagotLTQyNiBUSm0KLShkYXRhKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGZpbGVcKS4pIDM1Ljg2NTQgVGoKLS04NTIgVEptCi0oVGhpcykgMjMuOTEwMiBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShyZWFsbHkpIDM1Ljg2NTQgVGoKLTk4LjQ4NzkgNTQ0LjI1OSBUZAotKGEpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oc3BlY2lhbCkgNDEuODQyOSBUagotLTQyNiBUSm0KLShjYXNlKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG9mKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKEJaX0RBVEFfRVJST1IuKSA4My42ODU4IFRqCi05MCA1MzIuMzA0IFRkCi0oQlpfTUVNX0VSUk9SKSA3MS43MzA3IFRqCi05OC40ODc5IDUyMC4zNDkgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShpbnN1ZmZpY2llbnQpIDcxLjczMDcgVGoKLS00MjYgVEptCi0obWVtb3J5KSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKHdhcykgMTcuOTMyNyBUagotLTQyNiBUSm0KLShhdmFpbGFibGUpIDUzLjc5OCBUagotOTAgNTA4LjM5NCBUZAotKEJaX1NUUkVBTV9FTkQpIDc3LjcwODMgVGoKLTk4LjQ4NzkgNDk2LjQzOCBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShsb2dpY2FsKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKGVuZCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShvZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShzdHJlYW0pIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0od2FzKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGRldGVjdGVkLikgNTMuNzk4IFRqCi05MCA0ODQuNDgzIFRkCi0oQlpfT0spIDI5Ljg4NzggVGoKLTk4LjQ4NzkgNDcyLjUyOCBUZAotKG90aGVyd2lzZS4pIDU5Ljc3NTYgVGoKLVsxIDAgMCAxIDcyIDQ1Ni45ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDQ3LjAyNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDM1LjA2OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQb3NzaWJsZSkgMzMuMjE1MyBUagotLTI1MCBUSm0KLShyZXR1cm4pIDIzLjc5MDcgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlczopIDIzLjI0MjcgVGoKLVsxIDAgMCAxIDcyIDQzNC45NjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC02MC43NzIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDU5Ljc3NTggcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA1Ni4xODkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtNDI1LjYwNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgNDI1LjYwNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShudW1iZXIpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0ob2YpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYnl0ZXMpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0ocmVhZCkgMjMuOTEwMiBUagotOTguNDg3OSA0MTMuNjQ5IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYnplcnJvcikgNDEuODQyOSBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShCWl9PSykgMjkuODg3OCBUagotLTQyNiBUSm0KLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShCWl9TVFJFQU1fRU5EKSA3Ny43MDgzIFRqCi05MCA0MDEuNjk0IFRkCi0odW5kZWZpbmVkKSA1My43OTggVGoKLTk4LjQ4NzkgMzg5LjczOSBUZAotKG90aGVyd2lzZSkgNTMuNzk4IFRqCi1bMSAwIDAgMSA3MiAzNzQuMTk3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM2NC4yMzRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM1Mi4yNzkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oQWxsbykgMTcuNzEzNSBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFibGUpIDE2LjU5NzcgVGoKLS0yNTAgVEptCi0obmUpIDkuNDA0NjkgVGoKLTE1IFRKbQotKHh0KSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oYWN0aW9uczopIDMwLjk5MzYgVGoKLVsxIDAgMCAxIDcyIDM1Mi4xOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTg0LjY4MjVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggODMuNjg2MiByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDgwLjA5OTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC0zNDIuODE1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCAzNDIuODE1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGNvbGxlY3QpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oZGF0YSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShmcm9tKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGJ1ZiwpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0odGhlbikgMjMuOTEwMiBUagotLTQyNiBUSm0KLShCWjJfYnpSZWFkKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKG9yKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKEJaMl9ielJlYWRDbG9zZSkgODkuNjYzNCBUagotOTguNDg3OSAzMzAuODU5IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYnplcnJvcikgNDEuODQyOSBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShCWl9PSykgMjkuODg3OCBUagotOTAgMzE4LjkwNCBUZAotKGNvbGxlY3QpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oZGF0YSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShmcm9tKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGJ1ZiwpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0odGhlbikgMjMuOTEwMiBUagotLTQyNiBUSm0KLShCWjJfYnpSZWFkQ2xvc2UpIDg5LjY2MzQgVGoKLS00MjYgVEptCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oQloyX2J6UmVhZEdldFVudXNlZCkgMTEzLjU3NCBUagotOTguNDg3OSAzMDYuOTQ5IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYnplcnJvcikgNDEuODQyOSBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShCWl9TRVFVRU5DRV9FTkQpIDg5LjY2MzQgVGoKLTkwIDI5NC45OTQgVGQKLShCWjJfYnpSZWFkQ2xvc2UpIDg5LjY2MzQgVGoKLTk4LjQ4NzkgMjgzLjAzOSBUZAotKG90aGVyd2lzZSkgNTMuNzk4IFRqCi1bMSAwIDAgMSA3MiAyNjcuNDk3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjU3LjUzNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjM2Ljg3NiBUZAotL0YxMjJfMCAxNy4yMTU0IFRmCi0oMy40LjMuKSA0My4wNzI5IFRqCi1bMSAwIDAgMSAxMTkuODU4IDIzNi44NzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE5Ljg1OCAtMjM2Ljg3Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE5Ljg1OCAyMzYuODc2IFRkCi0vRjM5Ml8wIDE3LjIxNTQgVGYKLShCWjJfYnpSZWFkR2V0VW51c2VkKSAxOTYuMjU2IFRqCi1bMSAwIDAgMSAzMTYuMTE0IDIzNi44NzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjQ0LjExNCAtMi4zMzI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMzYuODYxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAzNS44NjU1IHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMzIuMjc4OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTIyNS4xNzhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDIyNS4xNzggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0odm9pZCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShCWjJfYnpSZWFkR2V0VW51c2VkXCgpIDExOS41NTEgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0yNTkuODgzIDIyMy40MzUgVGQKLSgqKSA1Ljk3NzU2IFRqCi0yNzAuMTA0IDIyNS4xNzggVGQKLShiemVycm9yLCkgNDcuODIwNSBUagotLTQyNiBUSm0KLShCWkZJTEUpIDM1Ljg2NTQgVGoKLTM2Mi4yNzggMjIzLjQzNSBUZAotKCopIDUuOTc3NTYgVGoKLTM2OC4yNTYgMjI1LjE3OCBUZAotKGIsKSAxMS45NTUxIFRqCi0yMDAuMzQzIDIxMy4yMjMgVGQKLSh2b2lkKSAyMy45MTAyIFRqCi0yMjQuMjU0IDIxMS40OCBUZAotKCoqKSAxMS45NTUxIFRqCi0yNDAuNDUzIDIxMy4yMjMgVGQKLSh1bnVzZWQsKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotMzA0LjQ3MyAyMTEuNDggVGQKLSgqKSA1Ljk3NzU2IFRqCi0zMTQuNjk0IDIxMy4yMjMgVGQKLShuVW51c2VkKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKFwpOykgMTEuOTU1MSBUagotWzEgMCAwIDEgNzIgMTk3LjY4MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xODcuNzE5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxNzUuNzY0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFJldHVybnMpIDMwLjk5MzYgVGoKLS00MzUgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTQzNSBUSm0KLSh3aGljaCkgMjQuMzQ4NiBUagotLTQzNSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXMpIDguMjk4ODUgVGoKLS00MzUgVEptCi0ocmVhZCkgMTcuMTQ1NiBUagotLTQzNSBUSm0KLShmcm9tKSAxOS4zNjczIFRqCi0tNDM1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTQzNSBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tNDM1IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTQzNSBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHV0KSA3Ljc1MDkgVGoKLS00MzUgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tNDM1IFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTQzNSBUSm0KLShuZWVkZWQpIDI4LjIxNDEgVGoKLS00MzUgVEptCi0odG8pIDcuNzUwOSBUagotLTQzNSBUSm0KLShnZXQpIDEyLjE3NDMgVGoKLS00MzUgVEptCi0odG8pIDcuNzUwOSBUagotLTQzNSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS00MzUgVEptCi0obG9naWNhbCkgMjcuMTE4MiBUagotLTQzNSBUSm0KLShlbmQtb2Ytc3RyZWFtLikgNTguMzcwOSBUagotWzEgMCAwIDEgNzIgMTYzLjgwOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTYzLjgwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTYyLjA2NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgqKSA1Ljk3NzU2IFRqCi03Ny45Nzc2IDE2My44MDkgVGQKLSh1bnVzZWQpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDExMy44NDMgMTYzLjgwOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTMuODQzIC0xNjMuODA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTcuMiAxNjMuODA5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMzM3IFRKbQotKHNldCkgMTEuMDY4NCBUagotLTMzNyBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzM3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMzNyBUSm0KLShhZGRyZXNzKSAyOS44Nzc4IFRqCi0tMzM3IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzM2IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMzNyBUSm0KLShkYXRhLCkgMTkuMDg4MyBUagotLTM1OSBUSm0KLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMjY5LjA4OSAxNjMuODA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2OS4wODkgLTE2My44MDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI2OS4wODkgMTYyLjA2NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgqKSA1Ljk3NzU2IFRqCi0yNzUuMDY3IDE2My44MDkgVGQKLShuVW51c2VkKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAzMTYuOTEgMTYzLjgwOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMTYuOTEgLTE2My44MDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMyMC4yNjcgMTYzLjgwOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0bykgNy43NTA5IFRqCi0tMzM3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMzNyBUSm0KLShudW1iZXIpIDMwLjQzNTcgVGoKLS0zMzcgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zMzcgVEptCi0oYnl0ZXMuKSAyMy41MjE3IFRqCi1bMSAwIDAgMSA0MjcuMjQ3IDE2My44MDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDI3LjI0NyAtMTYzLjgwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDI3LjI0NyAxNjIuMDY1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKCopIDUuOTc3NTYgVGoKLTQzMy4yMjUgMTYzLjgwOSBUZAotKG5VbnVzZWQpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDQ3NS4wNjggMTYzLjgwOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzUuMDY4IC0xNjMuODA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NzguNDI1IDE2My44MDkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0od2lsbCkgMTUuNTAxOCBUagotLTMzNyBUSm0KLShiZSkgOS40MDQ2OSBUagotLTMzNyBUSm0KLShzZXQpIDExLjA2ODQgVGoKLS0zMzcgVEptCi0odG8pIDcuNzUwOSBUagotLTMzNyBUSm0KLShhKSA0LjQyMzM5IFRqCi03MiAxNTEuODUzIFRkCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKGJldHdlZW4pIDMzLjE5NTQgVGoKLVsxIDAgMCAxIDEzMS41MDYgMTUxLjg1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMzEuNTA2IC0xNTEuODUzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMzEuNTA2IDE1MS44NTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oMCkgNS45Nzc1NiBUagotWzEgMCAwIDEgMTM3LjQ4NCAxNTEuODUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzNy40ODQgLTE1MS44NTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzOS45NzUgMTUxLjg1MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMTU2Ljg1MSAxNTEuODUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1Ni44NTEgLTE1MS44NTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1Ni44NTEgMTUxLjg1MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9NQVhfVU5VU0VEKSA3Ny43MDgzIFRqCi1bMSAwIDAgMSAyMzQuNTYgMTUxLjg1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzQuNTYgLTE1MS44NTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIzNy4wNSAxNTEuODUzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGluY2x1c2kpIDI2LjU3MDMgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZS4pIDYuOTE0MDQgVGoKLVsxIDAgMCAxIDcyIDE1MC41NDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTE0MC41ODFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDEyOS45MzUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oVGhpcykgMTcuNzEzNSBUagotLTg4MiBUSm0KLShmdW5jdGlvbikgMzMuMjA1MyBUagotLTg4MyBUSm0KLShtYXkpIDE3LjE1NTYgVGoKLS04ODIgVEptCi0ob25seSkgMTcuNzEzNSBUagotLTg4MyBUSm0KLShiZSkgOS40MDQ2OSBUagotLTg4MiBUSm0KLShjYWxsZWQpIDIzLjc5MDcgVGoKLS04ODMgVEptCi0ob25jZSkgMTguODA5NCBUagotWzEgMCAwIDEgMjcxLjMzMiAxMjkuOTM1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3MS4zMzIgLTEyOS45MzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3MS4zMzIgMTI5LjkzNSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkKSA1OS43NzU2IFRqCi1bMSAwIDAgMSAzMzEuMTA4IDEyOS45MzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzMxLjEwOCAtMTI5LjkzNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzM5LjkgMTI5LjkzNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShoYXMpIDEzLjI4MDEgVGoKLS04ODIgVEptCi0oc2lnbmFsbGVkKSAzNS45NzQ5IFRqCi1bMSAwIDAgMSA0MDYuNzM3IDEyOS45MzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDA2LjczNyAtMTI5LjkzNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDA2LjczNyAxMjkuOTM1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1NUUkVBTV9FTkQpIDc3LjcwODMgVGoKLVsxIDAgMCAxIDQ4NC40NDYgMTI5LjkzNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00ODQuNDQ2IC0xMjkuOTM1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTMuMjMxIDEyOS45MzUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1dCkgNy43NTA5IFRqCi0tODgyIFRKbQotKGJlZm9yZSkgMjUuNDQ0NSBUagotWzEgMCAwIDEgNzIgMTE3Ljk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xMTcuOThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDExNy45OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkQ2xvc2UpIDg5LjY2MzQgVGoKLVsxIDAgMCAxIDE2MS42NjQgMTE3Ljk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2MS42NjQgLTExNy45OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTYxLjY2NCAxMTcuOTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMTE2LjY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xMDYuNzA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA5Ni4wNjI1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFBvc3NpYmxlKSAzMy4yMTUzIFRqCi0tMjUwIFRKbQotKGFzc2lnbm1lbnRzKSA0OC43MDcyIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDE2OS4xNDQgOTYuMDYyNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjkuMTQ0IC05Ni4wNjI1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjkuMTQ0IDk2LjA2MjUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnplcnJvcikgNDEuODQyOSBUagotWzEgMCAwIDEgMjEwLjk4NyA5Ni4wNjI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxMC45ODcgLTk2LjA2MjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxMC45ODcgOTYuMDYyNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDcyIDkzLjkwNTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC00My4wNTM5XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuODUxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC44NTE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIxKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDI1IDI1Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA3Ni40OTc5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjU2OSAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE5LjA2NyA3NDkuMjQ1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFByb2dyYW1taW5nKSA1NC43OTQzIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ5Ni41NTYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTYuNTU2IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTYuNTU2IDc0OS4yNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDU0NC4zNzYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguMzA1IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTI5LjE1MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAxMDcuNTk3IHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMTA0LjAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtNzExLjYzMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgNzExLjYzMSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9QQVJBTV9FUlJPUikgODMuNjg1OCBUagotOTguNDg3OSA2OTkuNjc2IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYikgNS45Nzc1NiBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShOVUxMKSAyMy45MTAyIFRqCi05OC40ODc5IDY4Ny43MjEgVGQKLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh1bnVzZWQpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oTlVMTCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShuVW51c2VkKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKE5VTEwpIDIzLjkxMDIgVGoKLTkwIDY3NS43NjYgVGQKLShCWl9TRVFVRU5DRV9FUlJPUikgMTAxLjYxOSBUagotOTguNDg3OSA2NjMuODExIFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oQlpfU1RSRUFNX0VORCkgNzcuNzA4MyBUagotLTQyNiBUSm0KLShoYXMpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0obm90KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGJlZW4pIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oc2lnbmFsbGVkKSA1My43OTggVGoKLTk4LjQ4NzkgNjUxLjg1NiBUZAotKG9yKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGIpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0od2FzKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKG9wZW5lZCkgMzUuODY1NCBUagotLTQyNiBUSm0KLSh3aXRoKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKEJaMl9ieldyaXRlT3BlbikgODkuNjYzNCBUagotOTAgNjM5LjkgVGQKLShCWl9PSykgMjkuODg3OCBUagotOTguNDg3OSA2MjcuOTQ1IFRkCi0ob3RoZXJ3aXNlKSA1My43OTggVGoKLVsxIDAgMCAxIDcyIDYxMi40MDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjAyLjQ0MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTkwLjQ4NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBbGxvKSAxNy43MTM1IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYWJsZSkgMTYuNTk3NyBUagotLTI1MCBUSm0KLShuZSkgOS40MDQ2OSBUagotMTUgVEptCi0oeHQpIDcuNzUwOSBUagotLTI1MCBUSm0KLShhY3Rpb25zOikgMzAuOTkzNiBUagotWzEgMCAwIDEgNzIgNTkwLjM4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTI0LjkwNjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMjMuOTEwMyByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDIwLjMyMzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC01ODEuMDIxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA1ODEuMDIxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRDbG9zZSkgODkuNjYzNCBUagotWzEgMCAwIDEgNzIgNTY1LjQ4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTU1LjUxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTM0Ljg1OCBUZAotL0YxMjJfMCAxNy4yMTU0IFRmCi0oMy40LjQuKSA0My4wNzI5IFRqCi1bMSAwIDAgMSAxMTkuODU4IDUzNC44NThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE5Ljg1OCAtNTM0Ljg1OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE5Ljg1OCA1MzQuODU4IFRkCi0vRjM5Ml8wIDE3LjIxNTQgVGYKLShCWjJfYnpSZWFkQ2xvc2UpIDE1NC45MzkgVGoKLVsxIDAgMCAxIDI3NC43OTcgNTM0Ljg1OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDIuNzk3IC0yLjMzMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yNC45MDY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDIzLjkxMDMgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAyMC4zMjM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtNTIzLjE2MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgNTIzLjE2MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh2b2lkKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKEJaMl9ielJlYWRDbG9zZSkgODkuNjYzNCBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShpbnQpIDE3LjkzMjcgVGoKLTI0NC40NiA1MjEuNDE3IFRkCi0oKikgNS45Nzc1NiBUagotMjUwLjQzOCA1MjMuMTYxIFRkCi0oYnplcnJvciwpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oQlpGSUxFKSAzNS44NjU0IFRqCi0zNDIuNjEyIDUyMS40MTcgVGQKLSgqKSA1Ljk3NzU2IFRqCi0zNDguNTkgNTIzLjE2MSBUZAotKGIpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi1bMSAwIDAgMSA3MiA1MDcuNjE5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQ5Ny42NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQ4NS43MDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUmVsZWFzZXMpIDM0Ljg1OTEgVGoKLS00MzAgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS00MjkgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tNDMwIFRKbQotKHBlcnRhaW5pbmcpIDQwLjM5ODMgVGoKLS00MjkgVEptCi0odG8pIDcuNzUwOSBUagotLTQzMCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS00MjkgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTQzMCBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLVsxIDAgMCAxIDMwNC4zNTIgNDg1LjcwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDQuMzUyIC00ODUuNzAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMDQuMzUyIDQ4NS43MDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYikgNS45Nzc1NiBUagotWzEgMCAwIDEgMzEwLjMzIDQ4NS43MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzEwLjMzIC00ODUuNzAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMTAuMzMgNDg1LjcwMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAzMjEuMjc2IDQ4NS43MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzIxLjI3NiAtNDg1LjcwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzIxLjI3NiA0ODUuNzAxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRDbG9zZSkgODkuNjYzNCBUagotWzEgMCAwIDEgNDEwLjk0IDQ4NS43MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDEwLjk0IC00ODUuNzAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MTUuMjIgNDg1LjcwMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShkb2VzKSAxOC4yNjE0IFRqCi0tNDMwIFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTQyOSBUSm0KLShjYWxsKSAxNC4zODYgVGoKLVsxIDAgMCAxIDQ3My40MzggNDg1LjcwMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzMuNDM4IC00ODUuNzAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NzMuNDM4IDQ4NS43MDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZmNsb3NlKSAzNS44NjU0IFRqCi1bMSAwIDAgMSA1MDkuMzA0IDQ4NS43MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA5LjMwNCAtNDg1LjcwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTEzLjU4NCA0ODUuNzAxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKG9uKSA5Ljk2MjYgVGoKLS00MzAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi03MiA0NzMuNzQ2IFRkCi0odW5kZXJseWluZykgNDMuMTY3OSBUagotLTI2NCBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yNjQgVEptCi0oaGFuZGxlLCkgMjkuMDUwOSBUagotLTI2NyBUSm0KLShzbykgOC44NTY3NSBUagotLTI2NCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNjQgVEptCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMjY0IFRKbQotKGRvKSA5Ljk2MjYgVGoKLS0yNjQgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTI2NCBUSm0KLSh5b3Vyc2VsZikgMzIuNjQ3NCBUagotLTI2NCBUSm0KLShpZikgNi4wODcxNSBUagotLTI2MyBUSm0KLShhcHByb3ByaWF0ZS4pIDQ3Ljg2MDMgVGoKLVsxIDAgMCAxIDM0OC42NTMgNDczLjc0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNDguNjUzIC00NzMuNzQ2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNDguNjUzIDQ3My43NDYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6UmVhZENsb3NlKSA4OS42NjM0IFRqCi1bMSAwIDAgMSA0MzguMzE3IDQ3My43NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDM4LjMxNyAtNDczLjc0Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDQwLjk0NiA0NzMuNzQ2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHNob3VsZCkgMjYuNTcwMyBUagotLTI2NCBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI2NCBUSm0KLShjYWxsZWQpIDIzLjc5MDcgVGoKLS0yNjQgVEptCi0odG8pIDcuNzUwOSBUagotLTI2NCBUSm0KLShjbGVhbikgMjEuMDIxMSBUagotNzIgNDYxLjc5MSBUZAotKHVwKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oYWZ0ZXIpIDE4LjI1MTUgVGoKLS0yNTAgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oZXJyb3IpIDE5LjM1NzMgVGoKLS0yNTAgVEptCi0oc2l0dWF0aW9ucy4pIDQwLjY4NzMgVGoKLVsxIDAgMCAxIDcyIDQ1OS42MzRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQ0OS42NzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQzOS44NzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUG9zc2libGUpIDMzLjIxNTMgVGoKLS0yNTAgVEptCi0oYXNzaWdubWVudHMpIDQ4LjcwNzIgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotWzEgMCAwIDEgMTY5LjE0NCA0MzkuODczXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2OS4xNDQgLTQzOS44NzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE2OS4xNDQgNDM5Ljg3MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemVycm9yKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAyMTAuOTg3IDQzOS44NzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjEwLjk4NyAtNDM5Ljg3M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjEwLjk4NyA0MzkuODczIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotWzEgMCAwIDEgNzIgNDM3LjcxNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTYwLjc3MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggNTkuNzc1OCByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDU2LjE4OTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC00MjguMzUxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA0MjguMzUxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1NFUVVFTkNFX0VSUk9SKSAxMDEuNjE5IFRqCi05OC40ODc5IDQxNi4zOTYgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShiKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKHdhcykgMTcuOTMyNyBUagotLTQyNiBUSm0KLShvcGVuZWQpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0od2l0aCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShCWjJfYnpPcGVuV3JpdGUpIDg5LjY2MzQgVGoKLTkwIDQwNC40NDEgVGQKLShCWl9PSykgMjkuODg3OCBUagotOTguNDg3OSAzOTIuNDg2IFRkCi0ob3RoZXJ3aXNlKSA1My43OTggVGoKLVsxIDAgMCAxIDcyIDM3Ni45NDRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzY2Ljk4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzU1LjAyNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBbGxvKSAxNy43MTM1IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYWJsZSkgMTYuNTk3NyBUagotLTI1MCBUSm0KLShuZSkgOS40MDQ2OSBUagotMTUgVEptCi0oeHQpIDcuNzUwOSBUagotLTI1MCBUSm0KLShhY3Rpb25zOikgMzAuOTkzNiBUagotWzEgMCAwIDEgNzIgMzU0LjkyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTI0LjkwNjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMjMuOTEwMyByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDIwLjMyMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC0zNDUuNTYyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCAzNDUuNTYyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKG5vbmUpIDIzLjkxMDIgVGoKLVsxIDAgMCAxIDcyIDMzMC4wMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0zLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTMyMC4wNThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI5OS4zOTkgVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKDMuNC41LikgNDMuMDcyOSBUagotWzEgMCAwIDEgMTE5Ljg1OCAyOTkuMzk5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS44NTggLTI5OS4zOTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExOS44NTggMjk5LjM5OSBUZAotL0YzOTJfMCAxNy4yMTU0IFRmCi0oQloyX2J6V3JpdGVPcGVuKSAxNTQuOTM5IFRqCi1bMSAwIDAgMSAyNzQuNzk3IDI5OS4zOTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjAyLjc5NyAtMi4zMzI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtNDguODE2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCA0Ny44MjA3IHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNDQuMjM0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTI4Ny43MDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDI4Ny43MDIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpGSUxFKSAzNS44NjU0IFRqCi0xMzAuMTA5IDI4NS45NTggVGQKLSgqKSA1Ljk3NzU2IFRqCi0xMzYuMDg3IDI4Ny43MDIgVGQKLShCWjJfYnpXcml0ZU9wZW5cKCkgOTUuNjQxIFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotMjU4LjE0OSAyODUuOTU4IFRkCi0oKikgNS45Nzc1NiBUagotMjY0LjEyNyAyODcuNzAyIFRkCi0oYnplcnJvciwpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oRklMRSkgMjMuOTEwMiBUagotMzQ0LjM0NiAyODUuOTU4IFRkCi0oKikgNS45Nzc1NiBUagotMzUwLjMyMyAyODcuNzAyIFRkCi0oZiwpIDExLjk1NTEgVGoKLTE5Ni4wOTkgMjc1Ljc0NiBUZAotKGludCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShibG9ja1NpemUxMDBrLCkgODMuNjg1OCBUagotLTQyNiBUSm0KLShpbnQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0odmVyYm9zaXR5LCkgNTkuNzc1NiBUagotMTk2LjA5OSAyNjMuNzkxIFRkCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKHdvcmtGYWN0b3IpIDU5Ljc3NTYgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi1bMSAwIDAgMSA3MiAyNDguMjQ5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIzOC4yODddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDIyNi4zMzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUHJlcGFyZSkgMzAuNDI1OCBUagotLTI2OCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjY5IFRKbQotKHdyaXRlKSAyMC40NzMxIFRqCi0tMjY4IFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yNjkgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI2OCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjY5IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI2OCBUSm0KLShoYW5kbGUpIDI2LjU2MDMgVGoKLVsxIDAgMCAxIDI2Mi43MiAyMjYuMzMyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2Mi43MiAtMjI2LjMzMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjYyLjcyIDIyNi4zMzIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZikgNS45Nzc1NiBUagotWzEgMCAwIDEgMjY4LjY5OCAyMjYuMzMyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2OC42OTggLTIyNi4zMzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI2OC42OTggMjI2LjMzMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAyNzQuODI5IDIyNi4zMzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc0LjgyOSAtMjI2LjMzMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjc0LjgyOSAyMjYuMzMyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGYpIDUuOTc3NTYgVGoKLVsxIDAgMCAxIDI4MC44MDcgMjI2LjMzMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODAuODA3IC0yMjYuMzMyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODMuNDgxIDIyNi4zMzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMjY4IFRKbQotKHJlZmVyKSAxOC43OTk0IFRqCi0tMjY5IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNjggVEptCi0oYSkgNC40MjMzOSBUagotLTI2OSBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yNjggVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0yNjkgVEptCi0oaGFzKSAxMy4yODAxIFRqCi0tMjY4IFRKbQotKGJlZW4pIDE4LjgwOTQgVGoKLS0yNjkgVEptCi0ob3BlbmVkKSAyOC43NzIgVGoKLS0yNjggVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMjY5IFRKbQotKHdyaXRpbmcsKSAzMS4yNzI2IFRqCi0tMjczIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjY4IFRKbQotKGZvcikgMTEuNjE2NCBUagotNzIgMjE0LjM3NyBUZAotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShlcnJvcikgMTkuMzU3MyBUagotLTI1MCBUSm0KLShpbmRpY2F0b3IpIDM1LjQxNyBUagotLTI1MCBUSm0KLShcKCkgMy4zMTc1NSBUagotWzEgMCAwIDEgMTc2LjU3NyAyMTQuMzc2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3Ni41NzcgLTIxNC4zNzZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3Ni41NzcgMjE0LjM3NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmZXJyb3JcKGZcKSkgNTMuNzk4IFRqCi1bMSAwIDAgMSAyMzAuMzc1IDIxNC4zNzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjMwLjM3NSAtMjE0LjM3Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjMwLjM3NSAyMTQuMzc2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwpaXMpIDkuOTYyNiBUagotLTI1MCBUSm0KLShub3QpIDEyLjczMjIgVGoKLS0yNTAgVEptCi0oc2V0LikgMTMuNTU5MSBUagotWzEgMCAwIDEgNzIgMjEyLjU5M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjAyLjYzMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTkyLjQ1OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShGKSA1LjUzOTIxIFRqCi0xNSBUSm0KLShvcikgOC4yOTg4NSBUagotLTIyMyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMjQgVEptCi0obWVhbmluZykgMzQuMzExMiBUagotLTIyMyBUSm0KLShvZikgOC4yOTg4NSBUagotLTIyNCBUSm0KLShwYXJhbWV0ZXJzKSA0My43MDU5IFRqCi1bMSAwIDAgMSAxOTUuMzA2IDE5Mi40NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTk1LjMwNiAtMTkyLjQ1OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTk1LjMwNiAxOTIuNDU5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJsb2NrU2l6ZTEwMGspIDc3LjcwODMgVGoKLVsxIDAgMCAxIDI3My4wMTUgMTkyLjQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzMuMDE1IC0xOTIuNDU5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNzMuMDE1IDE5Mi40NTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMjc3Ljc4NCAxOTIuNDU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3Ny43ODQgLTE5Mi40NTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3Ny43ODQgMTkyLjQ1OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh2ZXJib3NpdHkpIDUzLjc5OCBUagotWzEgMCAwIDEgMzMxLjU4MyAxOTIuNDU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzMS41ODMgLTE5Mi40NTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzMy44MDggMTkyLjQ1OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMzUwLjQyIDE5Mi40NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzUwLjQyIC0xOTIuNDU5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNTAuNDIgMTkyLjQ1OSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh3b3JrRmFjdG9yKSA1OS43NzU2IFRqCi1bMSAwIDAgMSA0MTAuMTk2IDE5Mi40NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDEwLjE5NiAtMTkyLjQ1OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDEwLjE5NiAxOTIuNDU5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0yMjkgVEptCi0oc2VlKSAxMi43MjIyIFRqCi1bMSAwIDAgMSA0MjkuOTEzIDE5Mi40NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDI5LjkxMyAtMTkyLjQ1OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDI5LjkxMyAxOTIuNDU5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekNvbXByZXNzSW5pdCkgMTA3LjU5NiBUagotWzEgMCAwIDEgNTM3LjUwOSAxOTIuNDU5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUzNy41MDkgLTE5Mi40NTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNy41MDkgMTkyLjQ1OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAxOTAuMzAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xODAuMzM5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxNzAuNTQxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEFsbCkgMTIuNzMyMiBUagotLTM4MiBUSm0KLShyZXF1aXJlZCkgMzMuMTk1NCBUagotLTM4MiBUSm0KLShtZW1vcnkpIDMzLjIwNTMgVGoKLS0zODIgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0zODIgVEptCi0oYWxsb2NhdGVkKSAzNS45NjUgVGoKLS0zODMgVEptCi0oYXQpIDcuMTkzIFRqCi0tMzgyIFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTM4MiBUSm0KLShzdGFnZSwpIDIyLjk2MzggVGoKLS00MTUgVEptCi0oc28pIDguODU2NzUgVGoKLS0zODIgVEptCi0oaWYpIDYuMDg3MTUgVGoKLS0zODIgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzgyIFRKbQotKGNhbGwpIDE0LjM4NiBUagotLTM4MiBUSm0KLShjb21wbGV0ZXMpIDQwLjM5ODMgVGoKLS0zODIgVEptCi0oc3VjY2Vzc2Z1bGx5KSA0OC42OTcyIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA0MjQuNjkxIDE3MC41NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDI0LjY5MSAtMTcwLjU0MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDI0LjY5MSAxNzAuNTQxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX01FTV9FUlJPUikgNzEuNzMwNyBUagotWzEgMCAwIDEgNDk2LjQyMiAxNzAuNTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5Ni40MjIgLTE3MC41NDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwMC4yMjggMTcwLjU0MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShjYW5ub3QpIDI2LjU2MDMgVGoKLS0zODIgVEptCi0oYmUpIDkuNDA0NjkgVGoKLTcyIDE1OC41ODYgVGQKLShzaWduYWxsZWQpIDM1Ljk3NDkgVGoKLS0yNTAgVEptCi0oYnkpIDkuOTYyNiBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKHN1YnNlcXVlbnQpIDQ0LjI3MzggVGoKLS0yNTAgVEptCi0oY2FsbCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDIwMy43MTUgMTU4LjU4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDMuNzE1IC0xNTguNTg2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDMuNzE1IDE1OC41ODYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6V3JpdGUpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDI2OS40NjggMTU4LjU4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNjkuNDY4IC0xNTguNTg2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNjkuNDY4IDE1OC41ODYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMTU2LjQyOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTQ2LjQ2Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTM2LjY2OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQb3NzaWJsZSkgMzMuMjE1MyBUagotLTI1MCBUSm0KLShhc3NpZ25tZW50cykgNDguNzA3MiBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi1bMSAwIDAgMSAxNjkuMTQ0IDEzNi42NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY5LjE0NCAtMTM2LjY2OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY5LjE0NCAxMzYuNjY4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6ZXJyb3IpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDIxMC45ODcgMTM2LjY2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTAuOTg3IC0xMzYuNjY4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTAuOTg3IDEzNi42NjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA3MiAxMzQuNTExXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtODMuNjU5M10gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDAuNTcyNiAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5My44NDEgLTUwLjg1MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNC40MTQgNTAuODUxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyMikgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAyNiAyNgotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgLTguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNzYuNDk3OSAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0Mi41NjkgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxOS4wNjcgNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm9ncmFtbWluZykgNTQuNzk0MyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSA0OTYuNTU2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjU1NiAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDk2LjU1NiA3NDkuMjQ1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGxpYmJ6aXAyKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA1NDQuMzc2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc4LjMwNSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTUuMDM2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTE2NS4wMTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMTQzLjQ2MiByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDEzOS44NzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC03MTEuNjMxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA3MTEuNjMxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX0NPTkZJR19FUlJPUikgODkuNjYzNCBUagotOTguNDg3OSA2OTkuNjc2IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGxpYnJhcnkpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oaGFzKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGJlZW4pIDIzLjkxMDIgVGoKLS00MjYgVEptCi0obWlzLWNvbXBpbGVkKSA3MS43MzA3IFRqCi05MCA2ODcuNzIxIFRkCi0oQlpfUEFSQU1fRVJST1IpIDgzLjY4NTggVGoKLTk4LjQ4NzkgNjc1Ljc2NiBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGYpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oTlVMTCkgMjMuOTEwMiBUagotOTguNDg3OSA2NjMuODExIFRkCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYmxvY2tTaXplMTAwaykgNzcuNzA4MyBUagotLTQyNiBUSm0KLSg8KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKDEpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYmxvY2tTaXplMTAwaykgNzcuNzA4MyBUagotLTQyNiBUSm0KLSg+KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKDkpIDUuOTc3NTYgVGoKLTkwIDY1MS44NTYgVGQKLShCWl9JT19FUlJPUikgNjUuNzUzMiBUagotOTguNDg3OSA2MzkuOSBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGZlcnJvclwoZlwpKSA1My43OTggVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0obm9uemVybykgNDEuODQyOSBUagotOTAgNjI3Ljk0NSBUZAotKEJaX01FTV9FUlJPUikgNzEuNzMwNyBUagotOTguNDg3OSA2MTUuOTkgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShpbnN1ZmZpY2llbnQpIDcxLjczMDcgVGoKLS00MjYgVEptCi0obWVtb3J5KSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGF2YWlsYWJsZSkgNTMuNzk4IFRqCi05MCA2MDQuMDM1IFRkCi0oQlpfT0spIDI5Ljg4NzggVGoKLTk4LjQ4NzkgNTkyLjA4IFRkCi0ob3RoZXJ3aXNlKSA1My43OTggVGoKLVsxIDAgMCAxIDcyIDU3Ni41MzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTY2LjU3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTU0LjYyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFBvc3NpYmxlKSAzMy4yMTUzIFRqCi0tMjUwIFRKbQotKHJldHVybikgMjMuNzkwNyBUagotLTI1MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFsdWVzOikgMjMuMjQyNyBUagotWzEgMCAwIDEgNzIgNTU0LjUyMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTYwLjc3MjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggNTkuNzc1OCByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDU2LjE4OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC01NDUuMTU2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA1NDUuMTU2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKFBvaW50ZXIpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0odG8pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYW4pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYWJzdHJhY3QpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oQlpGSUxFKSAzNS44NjU0IFRqCi05OC40ODc5IDUzMy4yMDEgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShiemVycm9yKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKEJaX09LKSAyOS44ODc4IFRqCi05MCA1MjEuMjQ1IFRkCi0oTlVMTCkgMjMuOTEwMiBUagotOTguNDg3OSA1MDkuMjkgVGQKLShvdGhlcndpc2UpIDUzLjc5OCBUagotWzEgMCAwIDEgNzIgNDkzLjc0OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00ODMuNzg2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NzEuODMxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEFsbG8pIDE3LjcxMzUgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhYmxlKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKG5lKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh4dCkgNy43NTA5IFRqCi0tMjUwIFRKbQotKGFjdGlvbnM6KSAzMC45OTM2IFRqCi1bMSAwIDAgMSA3MiA0NzEuNzMxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtODQuNjgyNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCA4My42ODYyIHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgODAuMDk5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTQ2Mi4zNjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDQ2Mi4zNjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6V3JpdGUpIDY1Ljc1MzIgVGoKLTk4LjQ4NzkgNDUwLjQxMSBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGJ6ZXJyb3IpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oQlpfT0spIDI5Ljg4NzggVGoKLTk4LjQ4NzkgNDM4LjQ1NiBUZAotKFwoeW91KSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGNvdWxkKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKGdvKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGRpcmVjdGx5KSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKHRvKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKEJaMl9ieldyaXRlQ2xvc2UsKSAxMDEuNjE5IFRqCi0tNDI2IFRKbQotKGJ1dCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLSh0aGlzKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHdvdWxkKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKGJlKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHByZXR0eSkgMzUuODY1NCBUagotNDg1LjUwNSA0MzQuMjEyIFRkCi0vRjU2NF8wIDkuOTYyNiBUZgotKCApIDkuOTYyNiBUagotNDkzLjgwOCA0MzQuMjEyIFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKC0pIDIuNzY5NiBUagotOTAgNDI2LjUwMSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShwb2ludGxlc3NcKSkgNTkuNzc1NiBUagotOTAgNDE0LjU0NiBUZAotKEJaMl9ieldyaXRlQ2xvc2UpIDk1LjY0MSBUagotOTguNDg3OSA0MDIuNTkgVGQKLShvdGhlcndpc2UpIDUzLjc5OCBUagotWzEgMCAwIDEgNzIgMzg3LjA0OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0zLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTM3Ny4wODZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDM1Ni40MjggVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKDMuNC42LikgNDMuMDcyOSBUagotWzEgMCAwIDEgMTE5Ljg1OCAzNTYuNDI4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS44NTggLTM1Ni40MjhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExOS44NTggMzU2LjQyOCBUZAotL0YzOTJfMCAxNy4yMTU0IFRmCi0oQloyX2J6V3JpdGUpIDExMy42MjIgVGoKLVsxIDAgMCAxIDIzMy40OCAzNTYuNDI4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2MS40OCAtMi4zMzI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMjQuOTA2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAyMy45MTAzIHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMjAuMzIzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTM0NC43M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgMzQ0LjczIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHZvaWQpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oQloyX2J6V3JpdGUpIDY1Ljc1MzIgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0yMjAuNTUgMzQyLjk4NyBUZAotKCopIDUuOTc3NTYgVGoKLTIyNi41MjggMzQ0LjczIFRkCi0oYnplcnJvciwpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oQlpGSUxFKSAzNS44NjU0IFRqCi0zMTguNzAyIDM0Mi45ODcgVGQKLSgqKSA1Ljk3NzU2IFRqCi0zMjQuNjc5IDM0NC43MyBUZAotKGIsKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHZvaWQpIDIzLjkxMDIgVGoKLTM2OS4wMzMgMzQyLjk4NyBUZAotKCopIDUuOTc3NTYgVGoKLTM3NS4wMSAzNDQuNzMgVGQKLShidWYsKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShsZW4pIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi1bMSAwIDAgMSA3MiAzMjkuMTg4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTMxOS4yMjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDMwNy4yNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBYnNvcmJzKSAzMy4yMDUzIFRqCi1bMSAwIDAgMSAxMDcuNjk2IDMwNy4yN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMDcuNjk2IC0zMDcuMjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwNy42OTYgMzA3LjI3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGxlbikgMTcuOTMyNyBUagotWzEgMCAwIDEgMTI1LjYyOSAzMDcuMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTI1LjYyOSAtMzA3LjI3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMjguMTE5IDMwNy4yNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShieXRlcykgMjEuMDMxIFRqCi0tMjUwIFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWYpIDguMjk4ODUgVGoKLTI1IFRKbQotKGZlcikgMTEuMDU4NSBUagotWzEgMCAwIDEgMjE0LjU0NCAzMDcuMjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjE0LjU0NCAtMzA3LjI3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTQuNTQ0IDMwNy4yNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShidWYpIDE3LjkzMjcgVGoKLVsxIDAgMCAxIDIzMi40NzcgMzA3LjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIzMi40NzcgLTMwNy4yN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjMyLjQ3NyAzMDcuMjcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTI1MCBUSm0KLShlKSA0LjQyMzM5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVudHVhbGx5KSAzMi4wOTk1IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI1MCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI1MCBUSm0KLSh3cml0dGVuKSAyOC4yMjQgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oXDAwMmxlLikgMTUuMjIyOSBUagotWzEgMCAwIDEgNzIgMzA1LjExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjk1LjE1MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjg1LjM1MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQb3NzaWJsZSkgMzMuMjE1MyBUagotLTI1MCBUSm0KLShhc3NpZ25tZW50cykgNDguNzA3MiBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi1bMSAwIDAgMSAxNjkuMTQ0IDI4NS4zNTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY5LjE0NCAtMjg1LjM1M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY5LjE0NCAyODUuMzUzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6ZXJyb3IpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDIxMC45ODcgMjg1LjM1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTAuOTg3IC0yODUuMzUzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTAuOTg3IDI4NS4zNTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA3MiAyODMuMTk2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTA4LjU5M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAxMDcuNTk3IHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMTA0LjAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtMjczLjgzMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgMjczLjgzMSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9QQVJBTV9FUlJPUikgODMuNjg1OCBUagotOTguNDg3OSAyNjEuODc2IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYikgNS45Nzc1NiBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShOVUxMKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG9yKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGJ1ZikgMTcuOTMyNyBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShOVUxMKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG9yKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGxlbikgMTcuOTMyNyBUagotLTQyNiBUSm0KLSg8KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKDApIDUuOTc3NTYgVGoKLTkwIDI0OS45MjEgVGQKLShCWl9TRVFVRU5DRV9FUlJPUikgMTAxLjYxOSBUagotOTguNDg3OSAyMzcuOTY1IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYikgNS45Nzc1NiBUagotLTQyNiBUSm0KLSh3YXMpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0ob3BlbmVkKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKHdpdGgpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oQloyX2J6UmVhZE9wZW4pIDgzLjY4NTggVGoKLTkwIDIyNi4wMSBUZAotKEJaX0lPX0VSUk9SKSA2NS43NTMyIFRqCi05OC40ODc5IDIxNC4wNTUgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh0aGVyZSkgMjkuODg3OCBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShhbikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShlcnJvcikgMjkuODg3OCBUagotLTQyNiBUSm0KLSh3cml0aW5nKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShjb21wcmVzc2VkKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKGZpbGUuKSAyOS44ODc4IFRqCi05MCAyMDIuMSBUZAotKEJaX09LKSAyOS44ODc4IFRqCi05OC40ODc5IDE5MC4xNDUgVGQKLShvdGhlcndpc2UpIDUzLjc5OCBUagotWzEgMCAwIDEgNzIgMTc0LjYwM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0zLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTE2NC42NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTQzLjk4MiBUZAotL0YxMjJfMCAxNy4yMTU0IFRmCi0oMy40LjcuKSA0My4wNzI5IFRqCi1bMSAwIDAgMSAxMTkuODU4IDE0My45ODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE5Ljg1OCAtMTQzLjk4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE5Ljg1OCAxNDMuOTgyIFRkCi0vRjM5Ml8wIDE3LjIxNTQgVGYKLShCWjJfYnpXcml0ZUNsb3NlKSAxNjUuMjY4IFRqCi1bMSAwIDAgMSAyODUuMTI2IDE0My45ODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjEzLjEyNiAtMi4zMzI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOTAuNzk3NV0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDAuNTcyNiAtNi43NTQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5My44NDEgLTUwLjk1MTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNC40MTQgNTAuOTUxNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyMykgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAyNyAyNwotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgLTguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNzYuNDk3OSAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0Mi41NjkgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxOS4wNjcgNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm9ncmFtbWluZykgNTQuNzk0MyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSA0OTYuNTU2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjU1NiAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDk2LjU1NiA3NDkuMjQ1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGxpYmJ6aXAyKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA1NDQuMzc2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc4LjMwNSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTUuMDM2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTE2NS4wMTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMTQzLjQ2MiByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDEzOS44NzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC03MTEuNjMxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA3MTEuNjMxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHZvaWQpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oQloyX2J6V3JpdGVDbG9zZVwoKSAxMDEuNjE5IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotMjQ2LjE5NCA3MDkuODg4IFRkCi0oKikgNS45Nzc1NiBUagotMjUyLjE3MSA3MTEuNjMxIFRkCi0oYnplcnJvciwpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oQlpGSUxFKSAzNS44NjU0IFRqCi0zNDAuMTAyIDcwOS44ODggVGQKLSgqKSA1Ljk3NzU2IFRqCi0zNTAuMzIzIDcxMS42MzEgVGQKLShmLCkgMTEuOTU1MSBUagotMTg3LjYxMSA2OTkuNjc2IFRkCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGFiYW5kb24sKSA0Ny44MjA1IFRqCi0xODcuNjExIDY4Ny43MjEgVGQKLSh1bnNpZ25lZCkgNDcuODIwNSBUagotLTQyNiBUSm0KLShpbnQpIDE3LjkzMjcgVGoKLTI1Ny42MDkgNjg1Ljk3OCBUZAotKCopIDUuOTc3NTYgVGoKLTI2Ny44MyA2ODcuNzIxIFRkCi0obmJ5dGVzX2luLCkgNTkuNzc1NiBUagotMTg3LjYxMSA2NzUuNzY2IFRkCi0odW5zaWduZWQpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0yNTcuNjA5IDY3NC4wMjMgVGQKLSgqKSA1Ljk3NzU2IFRqCi0yNjcuODMgNjc1Ljc2NiBUZAotKG5ieXRlc19vdXQpIDU5Ljc3NTYgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi05MCA2NTEuODU2IFRkCi0odm9pZCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShCWjJfYnpXcml0ZUNsb3NlNjRcKCkgMTEzLjU3NCBUagotLTQyNiBUSm0KLShpbnQpIDE3LjkzMjcgVGoKLTI1OC4xNDkgNjUwLjExMiBUZAotKCopIDUuOTc3NTYgVGoKLTI2NC4xMjcgNjUxLjg1NiBUZAotKGJ6ZXJyb3IsKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKEJaRklMRSkgMzUuODY1NCBUagotMzUyLjA1NyA2NTAuMTEyIFRkCi0oKikgNS45Nzc1NiBUagotMzYyLjI3OCA2NTEuODU2IFRkCi0oZiwpIDExLjk1NTEgVGoKLTE5Ni4wOTkgNjM5LjkgVGQKLShpbnQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oYWJhbmRvbiwpIDQ3LjgyMDUgVGoKLTE5Ni4wOTkgNjI3Ljk0NSBUZAotKHVuc2lnbmVkKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotMjY2LjA5NyA2MjYuMjAyIFRkCi0oKikgNS45Nzc1NiBUagotMjc2LjMxOCA2MjcuOTQ1IFRkCi0obmJ5dGVzX2luX2xvMzIsKSA4OS42NjM0IFRqCi0xOTYuMDk5IDYxNS45OSBUZAotKHVuc2lnbmVkKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotMjY2LjA5NyA2MTQuMjQ3IFRkCi0oKikgNS45Nzc1NiBUagotMjc2LjMxOCA2MTUuOTkgVGQKLShuYnl0ZXNfaW5faGkzMiwpIDg5LjY2MzQgVGoKLTE5Ni4wOTkgNjA0LjAzNSBUZAotKHVuc2lnbmVkKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotMjY2LjA5NyA2MDIuMjkyIFRkCi0oKikgNS45Nzc1NiBUagotMjc2LjMxOCA2MDQuMDM1IFRkCi0obmJ5dGVzX291dF9sbzMyLCkgOTUuNjQxIFRqCi0xOTYuMDk5IDU5Mi4wOCBUZAotKHVuc2lnbmVkKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotMjY2LjA5NyA1OTAuMzM2IFRkCi0oKikgNS45Nzc1NiBUagotMjc2LjMxOCA1OTIuMDggVGQKLShuYnl0ZXNfb3V0X2hpMzIpIDg5LjY2MzQgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi1bMSAwIDAgMSA3MiA1NzYuNTM4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU2Ni41NzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU1NC42MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShDb21wcmVzc2VzKSA0OC4xNDkyIFRqCi0tNDAzIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tNDAyIFRKbQotKFwwMDN1c2hlcykgMjcuNjc2MSBUagotLTQwMyBUSm0KLSh0bykgNy43NTA5IFRqCi0tNDAzIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTQwMiBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tNDAzIFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTQwMyBUSm0KLShhKSA0LjQyMzM5IFRqCi0xIFRKbQotKGxsKSA1LjUzOTIxIFRqCi0tNDAzIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS00MDMgVEptCi0oc28pIDguODU2NzUgVGoKLS00MDIgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYXIpIDcuNzQwOTQgVGoKLS00MDMgVEptCi0oc3VwcGxpZWQpIDMzLjc2MzMgVGoKLS00MDMgVEptCi0oYnkpIDkuOTYyNiBUagotWzEgMCAwIDEgMzg0LjE1MiA1NTQuNjJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzg0LjE1MiAtNTU0LjYyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zODQuMTUyIDU1NC42MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpXcml0ZSkgNjUuNzUzMiBUagotWzEgMCAwIDEgNDQ5LjkwNiA1NTQuNjJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ5LjkwNiAtNTU0LjYyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDkuOTA2IDU1NC42MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi0tNzY4IFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTQwMyBUSm0KLShsb2dpY2FsKSAyNy4xMTgyIFRqCi0tNDAyIFRKbQotKGVuZC1vZi0pIDI5LjMxOTkgVGoKLTcyIDU0Mi42NjUgVGQKLShzdHJlYW0pIDI2LjU2MDMgVGoKLS0zNTIgVEptCi0obWFyaykgMjAuNDczMSBUagotMTAgVEptCi0oZXJzKSAxMS42MTY0IFRqCi0tMzUyIFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTM1MyBUSm0KLShhbHNvKSAxNi4wNDk3IFRqCi0tMzUyIFRKbQotKHdyaXR0ZW4sKSAzMC43MTQ3IFRqCi0tMzc4IFRKbQotKHNvKSA4Ljg1Njc1IFRqCi0tMzUyIFRKbQotKHN1YnNlcXVlbnQpIDQ0LjI3MzggVGoKLS0zNTIgVEptCi0oY2FsbHMpIDE4LjI2MTQgVGoKLS0zNTIgVEptCi0odG8pIDcuNzUwOSBUagotWzEgMCAwIDEgMzAwLjQ1NiA1NDIuNjY1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMwMC40NTYgLTU0Mi42NjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMwMC40NTYgNTQyLjY2NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpXcml0ZSkgNjUuNzUzMiBUagotWzEgMCAwIDEgMzY2LjIwOSA1NDIuNjY1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM2Ni4yMDkgLTU0Mi42NjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM2OS43MTggNTQyLjY2NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhcmUpIDEyLjE2NDMgVGoKLS0zNTIgVEptCi0oaWxsZSkgMTIuNzMyMiBUagotMTUgVEptCi0oZykgNC45ODEzIFRqCi01IFRKbQotKGFsLikgOS42ODM2NSBUagotLTEyMzQgVEptCi0oQWxsKSAxMi43MzIyIFRqCi0tMzUyIFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotLTM1MiBUSm0KLShhc3NvY2lhdGVkKSA0MC45NDYzIFRqCi0tMzUyIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLTcyIDUzMC43MSBUZAotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjUwIFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotWzEgMCAwIDEgMTUxLjQxMSA1MzAuNzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTUxLjQxMSAtNTMwLjcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTEuNDExIDUzMC43MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiKSA1Ljk3NzU2IFRqCi1bMSAwIDAgMSAxNTcuMzg5IDUzMC43MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTcuMzg5IC01MzAuNzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1OS44NzkgNTMwLjcxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKHJlbGVhc2VkLikgMzUuMTI4MSBUagotWzEgMCAwIDEgMjA3LjIzMSA1MzAuNzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjA3LjIzMSAtNTMwLjcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDcuMjMxIDUzMC43MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmZmx1c2gpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDI0My4wOTcgNTMwLjcxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0My4wOTcgLTUzMC43MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjQ1LjU4NyA1MzAuNzEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0oY2FsbGVkKSAyMy43OTA3IFRqCi0tMjUwIFRKbQotKG9uKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yNTAgVEptCi0oXDAwMmxlLCkgMTUuMjIyOSBUagotLTI1MCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHV0KSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0yNTAgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0obm90KSAxMi43MzIyIFRqCi1bMSAwIDAgMSA0MjIuNzcxIDUzMC43MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MjIuNzcxIC01MzAuNzFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQyMi43NzEgNTMwLjcxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGZjbG9zZSkgMzUuODY1NCBUagotWzEgMCAwIDEgNDU4LjYzNiA1MzAuNzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDU4LjYzNiAtNTMwLjcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NTguNjM2IDUzMC43MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgnKSAzLjMxNzU1IFRqCi01MCBUSm0KLShkLikgNy40NzE5NSBUagotWzEgMCAwIDEgNzIgNTI4LjU1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTE4LjU5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1MDguNzkyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKElmKSA2LjYzNTA5IFRqCi1bMSAwIDAgMSA4MS41NzQzIDUwOC43OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODEuNTc0MyAtNTA4Ljc5Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODEuNTc0MyA1MDguNzkyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ieldyaXRlQ2xvc2UpIDk1LjY0MSBUagotWzEgMCAwIDEgMTc3LjIxNiA1MDguNzkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3Ny4yMTYgLTUwOC43OTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE4MC4xNTUgNTA4Ljc5MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpcykgNi42NDUwNSBUagotLTI5NSBUSm0KLShjYWxsZWQpIDIzLjc5MDcgVGoKLS0yOTUgVEptCi0odG8pIDcuNzUwOSBUagotLTI5NSBUSm0KLShjbGVhbikgMjEuMDIxMSBUagotLTI5NSBUSm0KLSh1cCkgOS45NjI2IFRqCi0tMjk1IFRKbQotKGFmdGVyKSAxOC4yNTE1IFRqCi0tMjk1IFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tMjk1IFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi00MCBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMzA2IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5NSBUSm0KLShvbmx5KSAxNy43MTM1IFRqCi0tMjk1IFRKbQotKGFjdGlvbikgMjQuMzQ4NiBUagotLTI5NSBUSm0KLShpcykgNi42NDUwNSBUagotLTI5NSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjk1IFRKbQotKHJlbGVhc2UpIDI3LjY1NjIgVGoKLS0yOTUgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjk1IFRKbQotKG1lbW9yeSkgMzMuMjA1MyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTg5MSBUSm0KLShUaGUpIDE1LjQ5MTggVGoKLS0yOTUgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNzIgNDk2LjgzNyBUZAotKHJlY29yZHMpIDI5LjMxOTkgVGoKLS0yODkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjg5IFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi0tMjg5IFRKbQotKGNvZGVzKSAyMi42ODQ4IFRqCi0tMjg5IFRKbQotKGlzc3VlZCkgMjQuOTA2NSBUagotLTI4OSBUSm0KLShieSkgOS45NjI2IFRqCi0tMjg5IFRKbQotKHByZSkgMTIuNzIyMiBUagotMjUgVEptCi0odmlvdXMpIDIxLjU4OSBUagotLTI4OSBUSm0KLShjYWxscywpIDIwLjc1MjEgVGoKLS0yOTkgVEptCi0oc28pIDguODU2NzUgVGoKLS0yODkgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjg5IFRKbQotKHNpdHVhdGlvbikgMzQuMzIxMiBUagotLTI4OSBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMjg5IFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjg5IFRKbQotKGRldGVjdGVkKSAzMy4xOTU0IFRqCi0tMjg5IFRKbQotKGF1dG9tYXRpY2FsbHkpIDU0LjIzNjQgVGoKLTY1IFRKbQotKC4pIDIuNDkwNjUgVGoKLS00MjcgVEptCi0oVGhlcmUpIDIzLjIzMjggVGoKLS0yODkgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yODkgVEptCi0obm8pIDkuOTYyNiBUagotLTI4OSBUSm0KLShhdHRlbXB0KSAyOS44ODc4IFRqCi03MiA0ODQuODgyIFRkCi0odG8pIDcuNzUwOSBUagotLTI2MyBUSm0KLShjb21wbGV0ZSkgMzYuNTIyOSBUagotLTI2MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjMgVEptCi0oY29tcHJlc3Npb24pIDUwLjM2MDkgVGoKLS0yNjMgVEptCi0ob3BlcmF0aW9uLCkgNDAuMTE5NCBUagotLTI2NSBUSm0KLShub3IpIDEzLjI4MDEgVGoKLS0yNjMgVEptCi0odG8pIDcuNzUwOSBUagotWzEgMCAwIDEgMjU4LjMwOCA0ODQuODgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1OC4zMDggLTQ4NC44ODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1OC4zMDggNDg0Ljg4MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmZmx1c2gpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDI5NC4xNzMgNDg0Ljg4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yOTQuMTczIC00ODQuODgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTYuNzkgNDg0Ljg4MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjMgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI2MiBUSm0KLShcMDAybGUuKSAxNS4yMjI5IFRqCi0tNjk2IFRKbQotKFkpIDcuMTkzIFRqCi0xMTAgVEptCi0ob3UpIDkuOTYyNiBUagotLTI2MyBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0yNjMgVEptCi0oZm9yY2UpIDIwLjQ2MzIgVGoKLS0yNjIgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjYzIFRKbQotKGJlaGEpIDE4LjgwOTQgVGoKLTIwIFRKbQotKHZpb3VyKSAyMS4wMzEgVGoKLS0yNjMgVEptCi0odG8pIDcuNzUwOSBUagotLTI2MiBUSm0KLShoYXBwZW4pIDI4Ljc3MiBUagotNzIgNDcyLjkyNiBUZAotKGUpIDQuNDIzMzkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW4pIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oaW4pIDcuNzUwOSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oY2FzZSkgMTcuMTQ1NiBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShubykgOS45NjI2IFRqCi0tMjUwIFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi00MCBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjUwIFRKbQotKGJ5KSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0ocGFzc2luZykgMjkuODg3OCBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKG5vbnplcm8pIDMyLjA4OTUgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDMwNS4wMTQgNDcyLjkyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDUuMDE0IC00NzIuOTI2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMDUuMDE0IDQ3Mi45MjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYWJhbmRvbikgNDEuODQyOSBUagotWzEgMCAwIDEgMzQ2Ljg1OCA0NzIuOTI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0Ni44NTggLTQ3Mi45MjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM0Ni44NTggNDcyLjkyNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiA0NzAuNzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQ2MC44MDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQ1MS4wMDkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSWYpIDYuNjM1MDkgVGoKLVsxIDAgMCAxIDgwLjU5NzQgNDUxLjAwOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04MC41OTc0IC00NTEuMDA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04MC41OTc0IDQ1MS4wMDkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obmJ5dGVzX2luKSA1My43OTggVGoKLVsxIDAgMCAxIDEzNC4zOTYgNDUxLjAwOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMzQuMzk2IC00NTEuMDA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMzYuMzU4IDQ1MS4wMDkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaXMpIDYuNjQ1MDUgVGoKLS0xOTcgVEptCi0obm9uLW51bGwsKSAzNi4yNTM5IFRqCi1bMSAwIDAgMSAxODMuMjg3IDQ1MS4wMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTgzLjI4NyAtNDUxLjAwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTgzLjI4NyA0NDkuMjY1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKCopIDUuOTc3NTYgVGoKLTE4OS4yNjUgNDUxLjAwOSBUZAotKG5ieXRlc19pbikgNTMuNzk4IFRqCi1bMSAwIDAgMSAyNDMuMDYzIDQ1MS4wMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjQzLjA2MyAtNDUxLjAwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjQ1LjAyNSA0NTEuMDA5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLS0xOTcgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0xOTcgVEptCi0oc2V0KSAxMS4wNjg0IFRqCi0tMTk3IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0xOTcgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0xOTcgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMTk3IFRKbQotKHRvdGFsKSAxNy43MTM1IFRqCi0tMTk3IFRKbQotKHYpIDQuOTgxMyBUagotMjAgVEptCi0ob2x1bWUpIDI0LjkwNjUgVGoKLS0xOTcgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0xOTcgVEptCi0odW5jb21wcmVzc2VkKSA1Ni45OTYgVGoKLS0xOTcgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTE5NyBUSm0KLShoYW5kbGVkLikgMzQuMDMyMiBUagotLTU4NCBUSm0KLShTaW1pbGFybHkpIDM3LjA5MDggVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDQzOS4wNTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQzOS4wNTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQzOS4wNTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obmJ5dGVzX291dCkgNTkuNzc1NiBUagotWzEgMCAwIDEgMTMxLjc3NiA0MzkuMDUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzMS43NzYgLTQzOS4wNTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzNC43MTYgNDM5LjA1MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aWxsKSAxNS41MDE4IFRqCi0tMjk1IFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjk1IFRKbQotKHNldCkgMTEuMDY4NCBUagotLTI5NSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjk1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5NSBUSm0KLSh0b3RhbCkgMTcuNzEzNSBUagotLTI5NSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTIwIFRKbQotKG9sdW1lKSAyNC45MDY1IFRqCi0tMjk2IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjk1IFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yOTUgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI5NSBUSm0KLSh3cml0dGVuLikgMzAuNzE0NyBUagotLTg5MCBUSm0KLShGKSA1LjUzOTIxIFRqCi0xNSBUSm0KLShvcikgOC4yOTg4NSBUagotLTI5NSBUSm0KLShjb21wYXRpYmlsaXR5KSA1My4xNDA1IFRqCi0tMjk1IFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yOTUgVEptCi0ob2xkZXIpIDIwLjQ3MzEgVGoKLS0yOTYgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnNpb25zKSAyOC4yMjQgVGoKLS0yOTUgVEptCi0ob2YpIDguMjk4ODUgVGoKLTcyIDQyNy4wOTggVGQKLSh0aGUpIDEyLjE3NDMgVGoKLS0yODMgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMTE4LjI5NCA0MjcuMDk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOC4yOTQgLTQyNy4wOThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExOC4yOTQgNDI3LjA5OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpXcml0ZUNsb3NlKSA5NS42NDEgVGoKLVsxIDAgMCAxIDIxMy45MzYgNDI3LjA5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTMuOTM2IC00MjcuMDk4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTYuNzUzIDQyNy4wOTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0ob25seSkgMTcuNzEzNSBUagotLTI4MyBUSm0KLSh5aWVsZHMpIDIzLjgwMDcgVGoKLS0yODMgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjgyIFRKbQotKGxvKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHdlcikgMTQuOTMzOSBUagotLTI4MyBUSm0KLSgzMikgOS45NjI2IFRqCi0tMjgzIFRKbQotKGJpdHMpIDE0LjM5NiBUagotLTI4MyBUSm0KLShvZikgOC4yOTg4NSBUagotLTI4MyBUSm0KLSh0aGVzZSkgMjAuNDczMSBUagotLTI4MiBUSm0KLShjb3VudHMuKSAyOC41MDMgVGoKLS04MTcgVEptCi0oVXNlKSAxNS40OTE4IFRqCi1bMSAwIDAgMSA0MjMuNDk5IDQyNy4wOThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDIzLjQ5OSAtNDI3LjA5OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDIzLjQ5OSA0MjcuMDk4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ieldyaXRlQ2xvc2U2NCkgMTA3LjU5NiBUagotWzEgMCAwIDEgNTMxLjA5NSA0MjcuMDk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUzMS4wOTUgLTQyNy4wOThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzMy45MTMgNDI3LjA5OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpZikgNi4wODcxNSBUagotNzIgNDE1LjE0MyBUZAotKHlvdSkgMTQuOTQzOSBUagotLTI1MCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYW50KSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShmdWxsKSAxMy44MzgxIFRqCi0tMjUwIFRKbQotKDY0KSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oYml0KSAxMC41MjA1IFRqCi0tMjUwIFRKbQotKGNvdW50cy4pIDI4LjUwMyBUagotLTYyMCBUSm0KLShUaGVzZSkgMjMuNzkwNyBUagotLTI1MCBUSm0KLSh0dykgOS45NjI2IFRqCi0xMCBUSm0KLShvKSA0Ljk4MTMgVGoKLS0yNTAgVEptCi0oZnVuY3Rpb25zKSAzNy4wODA4IFRqCi0tMjUwIFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTI1MCBUSm0KLShvdGhlcndpc2UpIDM4LjczNDYgVGoKLS0yNTAgVEptCi0oYWJzb2x1dGVseSkgNDAuOTU2MiBUagotLTI1MCBUSm0KLShpZGVudGljYWwuKSAzNi44MDE4IFRqCi1bMSAwIDAgMSA3MiA0MTIuOTg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00MDMuMDI0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzOTMuMjI1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFBvc3NpYmxlKSAzMy4yMTUzIFRqCi0tMjUwIFRKbQotKGFzc2lnbm1lbnRzKSA0OC43MDcyIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLVsxIDAgMCAxIDE2OS4xNDQgMzkzLjIyNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjkuMTQ0IC0zOTMuMjI1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjkuMTQ0IDM5My4yMjUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnplcnJvcikgNDEuODQyOSBUagotWzEgMCAwIDEgMjEwLjk4NyAzOTMuMjI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxMC45ODcgLTM5My4yMjVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxMC45ODcgMzkzLjIyNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDcyIDM5MS4wNjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC04NC42ODI1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDgzLjY4NjIgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4MC4wOTk2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtMzgxLjcwNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgMzgxLjcwNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9TRVFVRU5DRV9FUlJPUikgMTAxLjYxOSBUagotOTguNDg3OSAzNjkuNzQ4IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYikgNS45Nzc1NiBUagotLTQyNiBUSm0KLSh3YXMpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0ob3BlbmVkKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKHdpdGgpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oQloyX2J6UmVhZE9wZW4pIDgzLjY4NTggVGoKLTkwIDM1Ny43OTMgVGQKLShCWl9JT19FUlJPUikgNjUuNzUzMiBUagotOTguNDg3OSAzNDUuODM4IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odGhlcmUpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oaXMpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYW4pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oZXJyb3IpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0od3JpdGluZykgNDEuODQyOSBUagotLTQyNiBUSm0KLSh0aGUpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oY29tcHJlc3NlZCkgNTkuNzc1NiBUagotLTQyNiBUSm0KLShmaWxlKSAyMy45MTAyIFRqCi05MCAzMzMuODgzIFRkCi0oQlpfT0spIDI5Ljg4NzggVGoKLTk4LjQ4NzkgMzIxLjkyOCBUZAotKG90aGVyd2lzZSkgNTMuNzk4IFRqCi1bMSAwIDAgMSA3MiAzMDYuMzg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjk2LjQyM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjc1Ljc2NSBUZAotL0YxMjJfMCAxNy4yMTU0IFRmCi0oMy40LjguKSA0My4wNzI5IFRqCi0tMjc4IFRKbQotKEhhbmRsaW5nKSA3My42NDc1IFRqCi0tMjc4IFRKbQotKGVtYmVkKSA1NS40ODUyIFRqCi0xMCBUSm0KLShkZWQpIDMwLjYwOSBUagotLTI3OCBUSm0KLShjb21wcmVzc2VkKSAxMDEuNDE2IFRqCi0tMjc4IFRKbQotKGRhdGEpIDM1LjM5NDkgVGoKLS0yNzggVEptCi0oc3RyZWFtcykgNjYuMDIxMSBUagotWzEgMCAwIDEgNzIgMjcxLjkzNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjYxLjk3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjUzLjg0NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGUpIDE1LjQ5MTggVGoKLS0yMDMgVEptCi0oaGlnaC1sZSkgMjguMjI0IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVsKSA3LjE5MyBUagotLTIwMyBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMjAzIFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFjaWxpdGF0ZXMpIDM1LjQxNyBUagotLTIwMyBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0yMDMgVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDIyNi40MDQgMjUzLjg0N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMjYuNDA0IC0yNTMuODQ3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjYuNDA0IDI1My44NDcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDI1Ni4yOTIgMjUzLjg0N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNTYuMjkyIC0yNTMuODQ3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNTguMzE2IDI1My44NDcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oZGF0YSkgMTYuNTk3NyBUagotLTIwMyBUSm0KLShzdHJlYW1zKSAzMC40MzU3IFRqCi0tMjAzIFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjAzIFRKbQotKGZvcm0pIDE5LjM2NzMgVGoKLS0yMDMgVEptCi0oc29tZSkgMjEuMDMxIFRqCi0tMjAzIFRKbQotKHBhcnQpIDE1LjQ5MTggVGoKLS0yMDMgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yMDQgVEptCi0oYSkgNC40MjMzOSBUagotLTIwMyBUSm0KLShzdXJyb3VuZGluZywpIDUwLjYzOTkgVGoKLS0yMTIgVEptCi0obGFyKSAxMC41MTA1IFRqCi0xOCBUSm0KLShnZXIpIDEyLjcyMjIgVGoKLS0yMDMgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTIwMyBUSm0KLShzdHJlYW0uKSAyOS4wNTA5IFRqCi1bMSAwIDAgMSA3MiAyNTEuNjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yOS43MjM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi45NzM5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzguOTczOSAtMjIxLjk2N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzguOTczOSAyMjEuOTY3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwyMjUpIDMuNDg2OTEgVGoKLVsxIDAgMCAxIDgyLjQ2MDggMjIxLjk2N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS45OTI1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODYuOTQ0IC0yMjEuOTY3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgMjIxLjk2NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShGKSA1LjUzOTIxIFRqCi0xNSBUSm0KLShvcikgOC4yOTg4NSBUagotLTI0MCBUSm0KLSh3cml0aW5nLCkgMzEuMjcyNiBUagotLTI0MyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDAgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTI0MSBUSm0KLSh0YWspIDEyLjE3NDMgVGoKLTEwIFRKbQotKGVzKSA4LjI5ODg1IFRqCi0tMjQwIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tMjQxIFRKbQotKG9wZW4pIDE5LjM2NzMgVGoKLS0yNDAgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMjQxIFRKbQotKGhhbmRsZSwpIDI5LjA1MDkgVGoKLS0yNDIgVEptCi0od3JpdGVzKSAyNC4zNDg2IFRqCi0tMjQxIFRKbQotKGNvbXByZXMpIDMzLjc1MzMgVGoKLTEgVEptCi0oc2VkKSAxMy4yODAxIFRqCi0tMjQxIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNDAgVEptCi0odG8pIDcuNzUwOSBUagotLTI0MSBUSm0KLShpdCwpIDguMDI5ODYgVGoKLVsxIDAgMCAxIDM5OC45MjYgMjIxLjk2N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zOTguOTI2IC0yMjEuOTY3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zOTguOTI2IDIyMS45NjcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZmZsdXNoKSAzNS44NjU0IFRqCi1bMSAwIDAgMSA0MzQuNzkxIDIyMS45NjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDM0Ljc5MSAtMjIxLjk2N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDM0Ljc5MSAyMjEuOTY3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGVzKSA4LjI5ODg1IFRqCi0tMjQwIFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMjQxIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTI0MCBUSm0KLShkb2VzKSAxOC4yNjE0IFRqCi0tMjQxIFRKbQotKG5vdCkgMTIuNzMyMiBUagotWzEgMCAwIDEgNTA0LjEzNSAyMjEuOTY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwNC4xMzUgLTIyMS45NjddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwNC4xMzUgMjIxLjk2NyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmY2xvc2UpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDU0MCAyMjEuOTY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtMjIxLjk2N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDIxMC4wMTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaXQuKSA4LjAyOTg2IFRqCi0tNjEwIFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTIzNSBUSm0KLShjYWxsaW5nKSAyNy4xMTgyIFRqCi0tMjM1IFRKbQotKGFwcGxpY2F0aW9uKSA0NC4yNzM4IFRqCi0tMjM1IFRKbQotKGNhbikgMTMuODI4MSBUagotLTIzNSBUSm0KLSh3cml0ZSkgMjAuNDczMSBUagotLTIzNSBUSm0KLShpdHMpIDkuNDE0NjYgVGoKLS0yMzUgVEptCi0obykgNC45ODEzIFRqCi0yNSBUSm0KLSh3bikgMTIuMTc0MyBUagotLTIzNSBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjM1IFRKbQotKGJlZm9yZSkgMjUuNDQ0NSBUagotLTIzNSBUSm0KLShhbmQpIDE0LjM4NiBUagotLTIzNSBUSm0KLShhZnRlcikgMTguMjUxNSBUagotLTIzNSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMzUgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTIzNSBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjM1IFRKbQotKHN0cmVhbSwpIDI5LjA1MDkgVGoKLS0yMzggVEptCi0odXNpbmcpIDIxLjU4OSBUagotLTIzNSBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjM1IFRKbQotKHNhbWUpIDIwLjQ3MzEgVGoKLS0yMzUgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi04Ni45NDQgMTk4LjA1NiBUZAotKGhhbmRsZS4pIDI5LjA1MDkgVGoKLVsxIDAgMCAxIDExNS45OTUgMTk4LjA1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00My45OTQ4IC0yMS45MTc4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi45NzM5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzguOTczOSAtMTc2LjEzOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzguOTczOSAxNzYuMTM5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwyMjUpIDMuNDg2OTEgVGoKLVsxIDAgMCAxIDgyLjQ2MDggMTc2LjEzOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS45OTI1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODYuOTQ0IC0xNzYuMTM5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgMTc2LjEzOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShSZWFkaW5nKSAzMy4yMDUzIFRqCi0tMjM2IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjM2IFRKbQotKG1vcmUpIDIwLjQ3MzEgVGoKLS0yMzYgVEptCi0oY29tcGxlKSAyOS4zMjk5IFRqCi0xNSBUSm0KLSh4LCkgNy40NzE5NSBUagotLTIzOCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTIzNiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMzYgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYWNpbGl0aWVzKSAzMC45OTM2IFRqCi0tMjM2IFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTIzNiBUSm0KLShub3QpIDEyLjczMjIgVGoKLS0yMzUgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yMzYgVEptCi0oZ2VuZXJhbCkgMjkuMzE5OSBUagotLTIzNiBUSm0KLShhcykgOC4yOTg4NSBUagotLTIzNiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTIzNiBUSm0KLShjb3VsZCkgMjIuMTM2OSBUagotLTIzNiBUSm0KLShiZSkgOS40MDQ2OSBUagotLTIzNiBUSm0KLShzaW5jZSkgMjAuNDczMSBUagotLTIzNSBUSm0KLShnZW5lcmFsaXR5KSAzOS44NDA0IFRqCi0tMjM2IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjM2IFRKbQotKGhhcmQpIDE3LjcwMzUgVGoKLS0yMzYgVEptCi0odG8pIDcuNzUwOSBUagotLTIzNiBUSm0KLShyZWNvbmNpbGUpIDM2LjUxMjkgVGoKLTg2Ljk0NCAxNjQuMTgzIFRkCi0od2l0aCkgMTcuNzEzNSBUagotLTQwNCBUSm0KLShlZikgNy43NDA5NCBUagotMjUgVEptCi0oXDAwMmNpZW5jKSAyNi41NjAzIFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLTY1IFRKbQotKC4pIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDE2NC44MTEgMTY0LjE4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjQuODExIC0xNjQuMTgzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjQuODExIDE2NC4xODMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6UmVhZCkgNTkuNzc1NiBUagotWzEgMCAwIDEgMjI0LjU4NyAxNjQuMTgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIyNC41ODcgLTE2NC4xODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIyOC42MTQgMTY0LjE4MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShyZWFkcykgMjEuMDIxMSBUagotLTQwNCBUSm0KLShmcm9tKSAxOS4zNjczIFRqCi0tNDA1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTQwNCBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tNDA0IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTQwNCBUSm0KLShpbikgNy43NTA5IFRqCi0tNDA1IFRKbQotKGJsb2NrcykgMjYuMDEyMyBUagotLTQwNCBUSm0KLShvZikgOC4yOTg4NSBUagotLTQwNCBUSm0KLShzaXplKSAxNS40OTE4IFRqCi1bMSAwIDAgMSA0MzQuNzQ0IDE2NC4xODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDM0Ljc0NCAtMTY0LjE4M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDM0Ljc0NCAxNjQuMTgzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX01BWF9VTlVTRUQpIDc3LjcwODMgVGoKLVsxIDAgMCAxIDUxMi40NTIgMTY0LjE4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTIuNDUyIC0xNjQuMTgzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTYuNDc5IDE2NC4xODMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYnl0ZXMsKSAyMy41MjE3IFRqCi04Ni45NDQgMTUyLjIyOCBUZAotKGFuZCkgMTQuMzg2IFRqCi0tNDEzIFRKbQotKGluKSA3Ljc1MDkgVGoKLS00MTMgVEptCi0oZG9pbmcpIDIyLjY5NDggVGoKLS00MTMgVEptCi0oc28pIDguODU2NzUgVGoKLS00MTMgVEptCi0ocHJvYmFibHkpIDM1LjQxNyBUagotLTQxMyBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tNDEzIFRKbQotKG8pIDQuOTgxMyBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnNob290KSAyOS4zMjk5IFRqCi0tNDEzIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTQxMyBUSm0KLShsb2dpY2FsKSAyNy4xMTgyIFRqCi0tNDEzIFRKbQotKGVuZCkgMTQuMzg2IFRqCi0tNDEzIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tNDEzIFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS00MTMgVEptCi0oc3RyZWFtLikgMjkuMDUwOSBUagotLTE1OTggVEptCi0oVCkgNi4wODcxNSBUagotODAgVEptCi0obykgNC45ODEzIFRqCi0tNDEzIFRKbQotKHJlY28pIDE3LjE0NTYgVGoKLTE1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXIpIDcuNzQwOTQgVGoKLS00MTMgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tNDEzIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS00MTMgVEptCi0ob25jZSkgMTguODA5NCBUagotODYuOTQ0IDE0MC4yNzMgVGQKLShkZWNvbXByZXNzaW9uKSA1OS43NjU2IFRqCi0tMjUyIFRKbQotKGhhcykgMTMuMjgwMSBUagotLTI1MiBUSm0KLShlbmRlZCwpIDI2LjI4MTMgVGoKLS0yNTMgVEptCi0oY2FsbCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAyMTAuNzA1IDE0MC4yNzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjEwLjcwNSAtMTQwLjI3M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjEwLjcwNSAxNDAuMjczIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRHZXRVbnVzZWQpIDExMy41NzQgVGoKLVsxIDAgMCAxIDMyNC4yNzkgMTQwLjI3M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMjQuMjc5IC0xNDAuMjczXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMjYuNzg5IDE0MC4yNzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYWZ0ZXIpIDE4LjI1MTUgVGoKLS0yNTIgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUyIFRKbQotKGxhc3QpIDEzLjgzODEgVGoKLS0yNTIgVEptCi0oY2FsbCkgMTQuMzg2IFRqCi0tMjUyIFRKbQotKG9mKSA4LjI5ODg1IFRqCi1bMSAwIDAgMSA0MDYuMjkxIDE0MC4yNzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDA2LjI5MSAtMTQwLjI3M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDA2LjI5MSAxNDAuMjczIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWQpIDU5Ljc3NTYgVGoKLVsxIDAgMCAxIDQ2Ni4wNjcgMTQwLjI3M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjYuMDY3IC0xNDAuMjczXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NjguNTc4IDE0MC4yNzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXCh0aGUpIDE1LjQ5MTggVGoKLS0yNTIgVEptCi0ob25lKSAxNC4zODYgVGoKLS0yNTIgVEptCi0ocmV0dXJuaW5nKSAzNi41MjI5IFRqCi1bMSAwIDAgMSA4Ni45NDQgMTI4LjMxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04Ni45NDQgLTEyOC4zMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCAxMjguMzE4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1NUUkVBTV9FTkQpIDc3LjcwODMgVGoKLVsxIDAgMCAxIDE2NC42NTMgMTI4LjMxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjQuNjUzIC0xMjguMzE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjQuNjUzIDEyOC4zMTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXCkpIDMuMzE3NTUgVGoKLS0yNTAgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1dCkgNy43NTA5IFRqCi0tMjUwIFRKbQotKGJlZm9yZSkgMjUuNDQ0NSBUagotLTI1MCBUSm0KLShjYWxsaW5nKSAyNy4xMTgyIFRqCi1bMSAwIDAgMSAyNDMuMDI4IDEyOC4zMThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjQzLjAyOCAtMTI4LjMxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjQzLjAyOCAxMjguMzE4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRDbG9zZSkgODkuNjYzNCBUagotWzEgMCAwIDEgMzMyLjY5MiAxMjguMzE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzMi42OTIgLTEyOC4zMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzMi42OTIgMTI4LjMxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAzMzUuMTgyIDEyOC4zMThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjYzLjE4MiAtNzcuNDY2XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljc1NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuODUxOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC44NTE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDI0KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDI4IDI4Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA3Ni40OTc5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjU2OSAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE5LjA2NyA3NDkuMjQ1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFByb2dyYW1taW5nKSA1NC43OTQzIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ5Ni41NTYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTYuNTU2IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTYuNTU2IDc0OS4yNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDU0NC4zNzYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguMzA1IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMjEuNTU0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNzIwXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA3MTAuMDM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoaXMpIDE3LjcxMzUgVGoKLS0yNzEgVEptCi0obWVjaGFuaXNtKSA0NS4zNzk2IFRqCi0tMjcyIFRKbQotKG1haykgMTcuMTU1NiBUagotMTAgVEptCi0oZXMpIDguMjk4ODUgVGoKLS0yNzEgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0yNzEgVEptCi0oZWFzeSkgMTcuNzAzNSBUagotLTI3MSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjcyIFRKbQotKGRlY29tcHJlc3MpIDQ3LjAzMzQgVGoKLS0yNzEgVEptCi0obXVsdGlwbGUpIDMzLjIxNTMgVGoKLVsxIDAgMCAxIDI5My4zMTIgNzEwLjAzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yOTMuMzEyIC03MTAuMDM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTMuMzEyIDcxMC4wMzcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDMyMy4yIDcxMC4wMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzIzLjIgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMyNS45MDMgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShzdHJlYW1zKSAzMC40MzU3IFRqCi0tMjcxIFRKbQotKHBsYWNlZCkgMjYuMDAyNCBUagotLTI3MiBUSm0KLShlbmQtdG8tZW5kLikgNDUuNjQ4NiBUagotLTM3NCBUSm0KLShBcykgMTEuMDY4NCBUagotLTI3MSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNzEgVEptCi0oZW5kKSAxNC4zODYgVGoKLS0yNzEgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNzIgVEptCi0ob25lKSAxNC4zODYgVGoKLS0yNzEgVEptCi0oc3RyZWFtLCkgMjkuMDUwOSBUagotNzIgNjk4LjA4MiBUZAotKHdoZW4pIDIxLjU3OSBUagotWzEgMCAwIDEgOTYuMTk0OCA2OTguMDgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTk2LjE5NDggLTY5OC4wODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTk2LjE5NDggNjk4LjA4MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkKSA1OS43NzU2IFRqCi1bMSAwIDAgMSAxNTUuOTcxIDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU1Ljk3MSAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTU4LjU4NiA2OTguMDgyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHJldHVybnMpIDI3LjY2NjEgVGoKLVsxIDAgMCAxIDE4OC44NjggNjk4LjA4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODguODY4IC02OTguMDgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODguODY4IDY5OC4wODIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfU1RSRUFNX0VORCkgNzcuNzA4MyBUagotWzEgMCAwIDEgMjY2LjU3NyA2OTguMDgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2Ni41NzcgLTY5OC4wODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI2Ni41NzcgNjk4LjA4MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMjYzIFRKbQotKGNhbGwpIDE0LjM4NiBUagotWzEgMCAwIDEgMjg4LjY4NSA2OTguMDgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI4OC42ODUgLTY5OC4wODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI4OC42ODUgNjk4LjA4MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkR2V0VW51c2VkKSAxMTMuNTc0IFRqCi1bMSAwIDAgMSA0MDIuMjU5IDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDAyLjI1OSAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDA0Ljg3NSA2OTguMDgyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHRvKSA3Ljc1MDkgVGoKLS0yNjMgVEptCi0oY29sbGVjdCkgMjYuNTYwMyBUagotLTI2MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjMgVEptCi0odW51c2VkKSAyOC4yMjQgVGoKLS0yNjIgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI2MyBUSm0KLShcKGNvcCkgMTcuNzAzNSBUagotMTAgVEptCi0oeSkgNC45ODEzIFRqCi0tMjYyIFRKbQotKGl0KSA1LjUzOTIxIFRqCi03MiA2ODYuMTI3IFRkCi0oaW50bykgMTUuNTAxOCBUagotLTI2NSBUSm0KLSh5b3VyKSAxOC4yNjE0IFRqCi0tMjY1IFRKbQotKG8pIDQuOTgxMyBUagotMjUgVEptCi0od24pIDEyLjE3NDMgVGoKLS0yNjUgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVyKSAxMS4wNTg1IFRqCi0tMjY1IFRKbQotKHNvbWUpIDIxLjAzMSBUagotMjUgVEptCi0od2hlcmVcKS4pIDMwLjE0NjggVGoKLS03MTEgVEptCi0oVGhhdCkgMTguMjYxNCBUagotLTI2NSBUSm0KLShkYXRhKSAxNi41OTc3IFRqCi0tMjY1IFRKbQotKGZvcm1zKSAyMy4yNDI3IFRqCi0tMjY1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI2NSBUSm0KLShzdGFydCkgMTcuMTU1NiBUagotLTI2NSBUSm0KLShvZikgOC4yOTg4NSBUagotLTI2NSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjUgVEptCi0obmUpIDkuNDA0NjkgVGoKLTE1IFRKbQotKHh0KSA3Ljc1MDkgVGoKLS0yNjUgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI2NSBUSm0KLShzdHJlYW0uKSAyOS4wNTA5IFRqCi0tNzExIFRKbQotKFQpIDYuMDg3MTUgVGoKLTgwIFRKbQotKG8pIDQuOTgxMyBUagotLTI2NSBUSm0KLShzdGFydCkgMTcuMTU1NiBUagotLTI2NSBUSm0KLSh1bmNvbXByZXNzaW5nKSA2MC4zMjM1IFRqCi03MiA2NzQuMTcyIFRkCi0odGhhdCkgMTQuOTQzOSBUagotLTI0NiBUSm0KLShuZSkgOS40MDQ2OSBUagotMTUgVEptCi0oeHQpIDcuNzUwOSBUagotLTI0NiBUSm0KLShzdHJlYW0sKSAyOS4wNTA5IFRqCi0tMjQ3IFRKbQotKGNhbGwpIDE0LjM4NiBUagotWzEgMCAwIDEgMTU3LjIwNSA2NzQuMTcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1Ny4yMDUgLTY3NC4xNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1Ny4yMDUgNjc0LjE3MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpSZWFkT3BlbikgODMuNjg1OCBUagotWzEgMCAwIDEgMjQwLjg5MSA2NzQuMTcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0MC44OTEgLTY3NC4xNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI0My4zNDQgNjc0LjE3MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhZykgOS40MDQ2OSBUagotNSBUSm0KLShhaW4sKSAxNC42NjQ5IFRqCi0tMjQ3IFRKbQotKGZlZWRpbmcpIDI5Ljg3NzggVGoKLS0yNDYgVEptCi0oaW4pIDcuNzUwOSBUagotLTI0NiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDcgVEptCi0odW51c2VkKSAyOC4yMjQgVGoKLS0yNDYgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI0NiBUSm0KLSh2aWEpIDEyLjE3NDMgVGoKLS0yNDYgVEptCi0odGhlKSAxMi4xNzQzIFRqCi1bMSAwIDAgMSA0MDUuOTY3IDY3NC4xNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDA1Ljk2NyAtNjc0LjE3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDA1Ljk2NyA2NzQuMTcyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHVudXNlZCkgMzUuODY1NCBUagotWzEgMCAwIDEgNDQxLjgzMyA2NzQuMTcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0MS44MzMgLTY3NC4xNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ0NC4yODYgNjc0LjE3MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgvKSAyLjc2OTYgVGoKLVsxIDAgMCAxIDQ0OS41MDggNjc0LjE3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDkuNTA4IC02NzQuMTcyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDkuNTA4IDY3NC4xNzIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oblVudXNlZCkgNDEuODQyOSBUagotWzEgMCAwIDEgNDkxLjM1MSA2NzQuMTcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5MS4zNTEgLTY3NC4xNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ5My44MDQgNjc0LjE3MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShwYXJhbWV0ZXJzLikgNDYuMTk2NiBUagotNzIgNjYyLjIxNyBUZAotKEspIDcuMTkzIFRqCi0yNSBUSm0KLShlZXApIDEzLjgyODEgVGoKLS0yNjMgVEptCi0oZG9pbmcpIDIyLjY5NDggVGoKLS0yNjMgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjY0IFRKbQotKHVudGlsKSAxOC4yNzE0IFRqCi1bMSAwIDAgMSAxNTguNjIyIDY2Mi4yMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU4LjYyMiAtNjYyLjIxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTU4LjYyMiA2NjIuMjE3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1NUUkVBTV9FTkQpIDc3LjcwODMgVGoKLVsxIDAgMCAxIDIzNi4zMyA2NjIuMjE3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIzNi4zMyAtNjYyLjIxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjM4Ljk1MiA2NjIuMjE3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHJldHVybikgMjMuNzkwNyBUagotLTI2MyBUSm0KLShjb2luY2lkZXMpIDM3LjYyODcgVGoKLS0yNjMgVEptCi0od2l0aCkgMTcuNzEzNSBUagotLTI2MyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjQgVEptCi0ocGgpIDkuOTYyNiBUagotNSBUSm0KLSh5c2ljYWwpIDIzLjI0MjcgVGoKLS0yNjMgVEptCi0oZW5kKSAxNC4zODYgVGoKLS0yNjMgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNjMgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMjYzIFRKbQotKFwoKSAzLjMxNzU1IFRqCi1bMSAwIDAgMSA0MjMuMTI1IDY2Mi4yMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDIzLjEyNSAtNjYyLjIxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDIzLjEyNSA2NjIuMjE3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGZlb2ZcKGZcKSkgNDEuODQyOSBUagotWzEgMCAwIDEgNDY0Ljk2OCA2NjIuMjE3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2NC45NjggLTY2Mi4yMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ2NC45NjggNjYyLjIxNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcKS4pIDUuODA4MiBUagotLTY5OSBUSm0KLShJbikgOC4yOTg4NSBUagotLTI2MyBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNjMgVEptCi0oc2l0dWF0aW9uKSAzNC4zMjEyIFRqCi1bMSAwIDAgMSA3MiA2NTAuMjYxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02NTAuMjYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2NTAuMjYxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ielJlYWRHZXRVbnVzZWQpIDExMy41NzQgVGoKLVsxIDAgMCAxIDE4NS41NzQgNjUwLjI2MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xODUuNTc0IC02NTAuMjYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xODguMDY1IDY1MC4yNjEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0od2lsbCkgMTUuNTAxOCBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShjb3Vyc2UpIDI2LjAwMjQgVGoKLS0yNTAgVEptCi0ocmV0dXJuKSAyMy43OTA3IFRqCi0tMjUwIFRKbQotKG5vKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oZGF0YS4pIDE5LjA4ODMgVGoKLVsxIDAgMCAxIDcyIDY0OC45NTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYzOC45ODldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYyOC4zNDQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oVGhpcykgMTcuNzEzNSBUagotLTI0MCBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yNDEgVEptCi0oZ2kpIDcuNzUwOSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjQwIFRKbQotKHNvbWUpIDIxLjAzMSBUagotLTI0MSBUSm0KLShmZWVsKSAxNC45MzM5IFRqCi0tMjQwIFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI0MSBUSm0KLShobykgOS45NjI2IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotLTI0MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDAgVEptCi0oaGlnaC1sZSkgMjguMjI0IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVsKSA3LjE5MyBUagotLTI0MSBUSm0KLShpbnRlcmYpIDIxLjU3OSBUagotMTAgVEptCi0oYWNlKSAxMy4yNzAyIFRqCi0tMjQwIFRKbQotKGNhbikgMTMuODI4MSBUagotLTI0MSBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI0MCBUSm0KLSh1c2VkLikgMjAuNzUyMSBUagotLTYxNCBUSm0KLShJZikgNi42MzUwOSBUagotLTI0MCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNDEgVEptCi0ocmVxdWlyZSkgMjguMjE0MSBUagotLTI0MCBUSm0KLShlKSA0LjQyMzM5IFRqCi0xNSBUSm0KLSh4dHJhKSAxNS40OTE4IFRqCi0tMjQxIFRKbQotKFwwMDNlKSA5Ljk2MjYgVGoKLTE1IFRKbQotKHhpYmkpIDE1LjUwMTggVGoKLTEgVEptCi0obGl0eSkgMTMuMjkwMSBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTI0MyBUSm0KLSh5b3UnKSAxOC4yNjE0IFRqCi0xMCBUSm0KLShsbCkgNS41MzkyMSBUagotLTI0MCBUSm0KLShoYSkgOS40MDQ2OSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjQxIFRKbQotKHRvKSA3Ljc1MDkgVGoKLTcyIDYxNi4zODkgVGQKLShiaXRlKSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVsbGV0KSAxNy43MTM1IFRqCi0tMjUwIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKGdldCkgMTIuMTc0MyBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKGdyaXBzKSAxOS45MjUyIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGxvKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHctbGUpIDE3LjcwMzUgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWwpIDcuMTkzIFRqCi0tMjUwIFRKbQotKGludGVyZikgMjEuNTc5IFRqCi0xMCBUSm0KLShhY2UuKSAxNS43NjA4IFRqCi1bMSAwIDAgMSA3MiA2MTQuMjMyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02MDQuMjY5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1ODUuNzY3IFRkCi0vRjEyMl8wIDE3LjIxNTQgVGYKLSgzLjQuOS4pIDQzLjA3MjkgVGoKLS0yNzggVEptCi0oU3RhbmRhcikgNjQuMDkyOSBUagotMjAgVEptCi0oZCkgMTAuNTE4NiBUagotLTI3OCBUSm0KLShcMDAybGUtcmVhZGluZy93cml0aW5nKSAxNTQuMDA5IFRqCi0tMjc4IFRKbQotKGNvZGUpIDQwLjE4MDcgVGoKLVsxIDAgMCAxIDcyIDU4MS45MzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU3MS45NzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU2My44NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShIZXJlJykgMjIuNjc0OSBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTI1MCBUSm0KLShobykgOS45NjI2IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotLTI1MCBUSm0KLSh5b3UnKSAxOC4yNjE0IFRqCi01MCBUSm0KLShkKSA0Ljk4MTMgVGoKLS0yNTAgVEptCi0od3JpdGUpIDIwLjQ3MzEgVGoKLS0yNTAgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI1MCBUSm0KLShcMDAybGU6KSAxNS41MDE4IFRqCi1bMSAwIDAgMSA3MiA1NjEuNjkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMzcxLjYwNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAzNzAuNjEgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzNjcuMDI0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtNTUyLjMyOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgNTUyLjMyOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShGSUxFKSAyMy45MTAyIFRqCi0xMTMuOTEgNTUwLjU4NCBUZAotKCopIDUuOTc3NTYgVGoKLTEzMi42MiA1NTIuMzI4IFRkCi0oZjspIDExLjk1NTEgVGoKLTkwIDU0MC4zNzMgVGQKLShCWkZJTEUpIDM1Ljg2NTQgVGoKLTEyNS44NjUgNTM4LjYyOSBUZAotKCopIDUuOTc3NTYgVGoKLTEzNi4wODcgNTQwLjM3MyBUZAotKGI7KSAxMS45NTUxIFRqCi05MCA1MjguNDE4IFRkCi0oaW50KSAxNy45MzI3IFRqCi0tMjEzMCBUSm0KLShuQnVmOykgMjkuODg3OCBUagotOTAgNTE2LjQ2MiBUZAotKGNoYXIpIDIzLjkxMDIgVGoKLS0xNzA0IFRKbQotKGJ1ZlspIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oLykgNS45Nzc1NiBUagotMTY1LjAxOCA1MTQuNzE5IFRkCi0oKikgNS45Nzc1NiBUagotMTc1LjI0IDUxNi40NjIgVGQKLSh3aGF0ZXZlcikgNDcuODIwNSBUagotLTQyNiBUSm0KLShzaXplKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHlvdSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShsaWtlKSAyMy45MTAyIFRqCi0zMDUuNzkgNTE0LjcxOSBUZAotKCopIDUuOTc3NTYgVGoKLTMxMS43NjcgNTE2LjQ2MiBUZAotKC8pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oXTspIDExLjk1NTEgVGoKLTkwIDUwNC41MDcgVGQKLShpbnQpIDE3LjkzMjcgVGoKLS0yMTMwIFRKbQotKGJ6ZXJyb3I7KSA0Ny44MjA1IFRqCi05MCA0OTIuNTUyIFRkCi0oaW50KSAxNy45MzI3IFRqCi0tMjEzMCBUSm0KLShuV3JpdHRlbjspIDUzLjc5OCBUagotOTAgNDY4LjY0MiBUZAotKGYpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oPSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShmb3BlbikgMjkuODg3OCBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSgibXlmaWxlLmJ6MiIsKSA3Ny43MDgzIFRqCi0tNDI2IFRKbQotKCJ3IikgMTcuOTMyNyBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLTkwIDQ1Ni42ODcgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSghZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShcKSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSh7KSA1Ljk3NzU2IFRqCi05NC4yNDQgNDQ0LjczMSBUZAotKC8pIDUuOTc3NTYgVGoKLTEwMC4yMjIgNDQyLjk4OCBUZAotKCopIDUuOTc3NTYgVGoKLTExMC40NDMgNDQ0LjczMSBUZAotKGhhbmRsZSkgMzUuODY1NCBUagotLTQyNiBUSm0KLShlcnJvcikgMjkuODg3OCBUagotMTg0LjY4NSA0NDIuOTg4IFRkCi0oKikgNS45Nzc1NiBUagotMTkwLjY2MiA0NDQuNzMxIFRkCi0oLykgNS45Nzc1NiBUagotOTAgNDMyLjc3NiBUZAotKH0pIDUuOTc3NTYgVGoKLTkwIDQyMC44MjEgVGQKLShiKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oQloyX2J6V3JpdGVPcGVuXCgpIDk1LjY0MSBUagotLTQyNiBUSm0KLSgmYnplcnJvciwpIDUzLjc5OCBUagotLTQyNiBUSm0KLShmLCkgMTEuOTU1MSBUagotLTQyNiBUSm0KLSg5KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKFwpOykgMTEuOTU1MSBUagotOTAgNDA4Ljg2NiBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKFwoYnplcnJvcikgNDcuODIwNSBUagotLTQyNiBUSm0KLSghPSkgMTEuOTU1MSBUagotLTQyNiBUSm0KLShCWl9PS1wpKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKHspIDUuOTc3NTYgVGoKLTk0LjI0NCAzOTYuOTExIFRkCi0oQloyX2J6V3JpdGVDbG9zZSkgOTUuNjQxIFRqCi0tNDI2IFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKGIpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi05NC4yNDQgMzg0Ljk1NiBUZAotKC8pIDUuOTc3NTYgVGoKLTEwMC4yMjIgMzgzLjIxMiBUZAotKCopIDUuOTc3NTYgVGoKLTExMC40NDMgMzg0Ljk1NiBUZAotKGhhbmRsZSkgMzUuODY1NCBUagotLTQyNiBUSm0KLShlcnJvcikgMjkuODg3OCBUagotMTg0LjY4NSAzODMuMjEyIFRkCi0oKikgNS45Nzc1NiBUagotMTkwLjY2MiAzODQuOTU2IFRkCi0oLykgNS45Nzc1NiBUagotOTAgMzczIFRkCi0ofSkgNS45Nzc1NiBUagotOTAgMzQ5LjA5IFRkCi0od2hpbGUpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oLykgNS45Nzc1NiBUagotMTQwLjMzMSAzNDcuMzQ3IFRkCi0oKikgNS45Nzc1NiBUagotMTUwLjU1MyAzNDkuMDkgVGQKLShjb25kaXRpb24pIDUzLjc5OCBUagotMjA4LjU5NSAzNDcuMzQ3IFRkCi0oKikgNS45Nzc1NiBUagotMjE0LjU3MiAzNDkuMDkgVGQKLSgvKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKFwpKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKHspIDUuOTc3NTYgVGoKLTk0LjI0NCAzMzcuMTM1IFRkCi0oLykgNS45Nzc1NiBUagotMTAwLjIyMiAzMzUuMzkxIFRkCi0oKikgNS45Nzc1NiBUagotMTEwLjQ0MyAzMzcuMTM1IFRkCi0oZ2V0KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGRhdGEpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0odG8pIDExLjk1NTEgVGoKLS00MjYgVEptCi0od3JpdGUpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oaW50bykgMjMuOTEwMiBUagotLTQyNiBUSm0KLShidWYsKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGFuZCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShzZXQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0obkJ1ZikgMjMuOTEwMiBUagotLTQyNiBUSm0KLShhcHByb3ByaWF0ZWx5KSA3Ny43MDgzIFRqCi00MjEuODc0IDMzNS4zOTEgVGQKLSgqKSA1Ljk3NzU2IFRqCi00MjcuODUyIDMzNy4xMzUgVGQKLSgvKSA1Ljk3NzU2IFRqCi05NC4yNDM5IDMyNS4xOCBUZAotKG5Xcml0dGVuKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oQloyX2J6V3JpdGUpIDY1Ljc1MzIgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oJmJ6ZXJyb3IsKSA1My43OTggVGoKLS00MjYgVEptCi0oYiwpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYnVmLCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShuQnVmKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKFwpOykgMTEuOTU1MSBUagotOTQuMjQzOSAzMTMuMjI1IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oXChiemVycm9yKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKD09KSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKEJaX0lPX0VSUk9SXCkpIDcxLjczMDcgVGoKLS00MjYgVEptCi0oeykgNS45Nzc1NiBUagotMTAyLjczMiAzMDEuMjY5IFRkCi0oQloyX2J6V3JpdGVDbG9zZSkgOTUuNjQxIFRqCi0tNDI2IFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKCZiemVycm9yLCkgNTMuNzk4IFRqCi0tNDI2IFRKbQotKGIpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi0xMDIuNzMyIDI4OS4zMTQgVGQKLSgvKSA1Ljk3NzU2IFRqCi0xMDguNzA5IDI4Ny41NzEgVGQKLSgqKSA1Ljk3NzU2IFRqCi0xMTguOTMxIDI4OS4zMTQgVGQKLShoYW5kbGUpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oZXJyb3IpIDI5Ljg4NzggVGoKLTE5My4xNzIgMjg3LjU3MSBUZAotKCopIDUuOTc3NTYgVGoKLTE5OS4xNSAyODkuMzE0IFRkCi0oLykgNS45Nzc1NiBUagotOTQuMjQzOSAyNzcuMzU5IFRkCi0ofSkgNS45Nzc1NiBUagotOTAgMjY1LjQwNCBUZAotKH0pIDUuOTc3NTYgVGoKLTkwIDI0MS40OTQgVGQKLShCWjJfYnpXcml0ZUNsb3NlXCgpIDEwMS42MTkgVGoKLS00MjYgVEptCi0oJmJ6ZXJyb3IsKSA1My43OTggVGoKLS00MjYgVEptCi0oYikgNS45Nzc1NiBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLTkwIDIyOS41MzggVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShcKGJ6ZXJyb3IpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oPT0pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oQlpfSU9fRVJST1JcKSkgNzEuNzMwNyBUagotLTQyNiBUSm0KLSh7KSA1Ljk3NzU2IFRqCi05NC4yNDM5IDIxNy41ODMgVGQKLSgvKSA1Ljk3NzU2IFRqCi0xMDAuMjIxIDIxNS44NCBUZAotKCopIDUuOTc3NTYgVGoKLTExMC40NDMgMjE3LjU4MyBUZAotKGhhbmRsZSkgMzUuODY1NCBUagotLTQyNiBUSm0KLShlcnJvcikgMjkuODg3OCBUagotMTg0LjY4NCAyMTUuODQgVGQKLSgqKSA1Ljk3NzU2IFRqCi0xOTAuNjYyIDIxNy41ODMgVGQKLSgvKSA1Ljk3NzU2IFRqCi04OS45OTk5IDIwNS42MjggVGQKLSh9KSA1Ljk3NzU2IFRqCi1bMSAwIDAgMSA3MiAxOTAuMDg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTE4MC4xMjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE2OC4xNjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oQW5kKSAxNy4xNTU2IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0ocmVhZCkgMTcuMTQ1NiBUagotLTI1MCBUSm0KLShmcm9tKSAxOS4zNjczIFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI1MCBUSm0KLShcMDAybGU6KSAxNS41MDE4IFRqCi1bMSAwIDAgMSA3MiAxNjYuMDEyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTE1LjE2XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuOTUxM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC45NTEzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDI1KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDI5IDI5Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA3Ni40OTc5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQyLjU2OSAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE5LjA2NyA3NDkuMjQ1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFByb2dyYW1taW5nKSA1NC43OTQzIFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLVsxIDAgMCAxIDQ5Ni41NTYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTYuNTU2IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTYuNTU2IDc0OS4yNDUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDU0NC4zNzYgNzQ5LjI0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzguMzA1IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtNS4wMzYzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMC40OTgxXSBjbQotcQotW10gMCBkCi0wIEoKLTAuNDk4MSB3Ci0wIDAuMjQ5MSBtCi00NzUuNDY1IDAuMjQ5MSBsCi1TCi1RCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NzkuMjUxIDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1bMSAwIDAgMSAtMTMuMTQzNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMzkyLjE2NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAzNzAuNjEgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzNjcuMDI0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtNzExLjYzMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgNzExLjYzMSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShGSUxFKSAyMy45MTAyIFRqCi0xMTMuOTEgNzA5Ljg4OCBUZAotKCopIDUuOTc3NTYgVGoKLTEzMi42MiA3MTEuNjMxIFRkCi0oZjspIDExLjk1NTEgVGoKLTkwIDY5OS42NzYgVGQKLShCWkZJTEUpIDM1Ljg2NTQgVGoKLTEyNS44NjUgNjk3LjkzMyBUZAotKCopIDUuOTc3NTYgVGoKLTEzNi4wODcgNjk5LjY3NiBUZAotKGI7KSAxMS45NTUxIFRqCi05MCA2ODcuNzIxIFRkCi0oaW50KSAxNy45MzI3IFRqCi0tMjEzMCBUSm0KLShuQnVmOykgMjkuODg3OCBUagotOTAgNjc1Ljc2NiBUZAotKGNoYXIpIDIzLjkxMDIgVGoKLS0xNzA0IFRKbQotKGJ1ZlspIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oLykgNS45Nzc1NiBUagotMTY1LjAxOCA2NzQuMDIzIFRkCi0oKikgNS45Nzc1NiBUagotMTc1LjI0IDY3NS43NjYgVGQKLSh3aGF0ZXZlcikgNDcuODIwNSBUagotLTQyNiBUSm0KLShzaXplKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHlvdSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShsaWtlKSAyMy45MTAyIFRqCi0zMDUuNzkgNjc0LjAyMyBUZAotKCopIDUuOTc3NTYgVGoKLTMxMS43NjcgNjc1Ljc2NiBUZAotKC8pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oXTspIDExLjk1NTEgVGoKLTkwIDY2My44MTEgVGQKLShpbnQpIDE3LjkzMjcgVGoKLS0yMTMwIFRKbQotKGJ6ZXJyb3I7KSA0Ny44MjA1IFRqCi05MCA2NTEuODU2IFRkCi0oaW50KSAxNy45MzI3IFRqCi0tMjEzMCBUSm0KLShuV3JpdHRlbjspIDUzLjc5OCBUagotOTAgNjI3Ljk0NSBUZAotKGYpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oPSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShmb3BlbikgMjkuODg3OCBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSgibXlmaWxlLmJ6MiIsKSA3Ny43MDgzIFRqCi0tNDI2IFRKbQotKCJyIikgMTcuOTMyNyBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLTkwIDYxNS45OSBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKCFmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKFwpKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKHspIDUuOTc3NTYgVGoKLTk4LjQ4OCA2MDQuMDM1IFRkCi0oLykgNS45Nzc1NiBUagotMTA0LjQ2NiA2MDIuMjkyIFRkCi0oKikgNS45Nzc1NiBUagotMTE0LjY4NyA2MDQuMDM1IFRkCi0oaGFuZGxlKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKGVycm9yKSAyOS44ODc4IFRqCi0xODguOTI5IDYwMi4yOTIgVGQKLSgqKSA1Ljk3NzU2IFRqCi0xOTQuOTA2IDYwNC4wMzUgVGQKLSgvKSA1Ljk3NzU2IFRqCi05MCA1OTIuMDggVGQKLSh9KSA1Ljk3NzU2IFRqCi05MCA1ODAuMTI1IFRkCi0oYikgNS45Nzc1NiBUagotLTQyNiBUSm0KLSg9KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKEJaMl9ielJlYWRPcGVuKSA4My42ODU4IFRqCi0tNDI2IFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKCZiemVycm9yLCkgNTMuNzk4IFRqCi0tNDI2IFRKbQotKGYsKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKDAsKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKE5VTEwsKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKDApIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi05MCA1NjguMTY5IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oYnplcnJvcikgNDEuODQyOSBUagotLTQyNiBUSm0KLSghPSkgMTEuOTU1MSBUagotLTQyNiBUSm0KLShCWl9PSykgMjkuODg3OCBUagotLTQyNiBUSm0KLShcKSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSh7KSA1Ljk3NzU2IFRqCi05OC40ODggNTU2LjIxNCBUZAotKEJaMl9ielJlYWRDbG9zZSkgODkuNjYzNCBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSgmYnplcnJvciwpIDUzLjc5OCBUagotLTQyNiBUSm0KLShiKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKFwpOykgMTEuOTU1MSBUagotOTguNDg4IDU0NC4yNTkgVGQKLSgvKSA1Ljk3NzU2IFRqCi0xMDQuNDY2IDU0Mi41MTYgVGQKLSgqKSA1Ljk3NzU2IFRqCi0xMTQuNjg3IDU0NC4yNTkgVGQKLShoYW5kbGUpIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oZXJyb3IpIDI5Ljg4NzggVGoKLTE4OC45MjkgNTQyLjUxNiBUZAotKCopIDUuOTc3NTYgVGoKLTE5NC45MDYgNTQ0LjI1OSBUZAotKC8pIDUuOTc3NTYgVGoKLTkwIDUzMi4zMDQgVGQKLSh9KSA1Ljk3NzU2IFRqCi05MCA1MDguMzk0IFRkCi0oYnplcnJvcikgNDEuODQyOSBUagotLTQyNiBUSm0KLSg9KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKEJaX09LOykgMzUuODY1NCBUagotOTAgNDk2LjQzOCBUZAotKHdoaWxlKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKGJ6ZXJyb3IpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oPT0pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oQlpfT0spIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oJiYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oLykgNS45Nzc1NiBUagotMjUyLjk0OCA0OTQuNjk1IFRkCi0oKikgNS45Nzc1NiBUagotMjYzLjE3IDQ5Ni40MzggVGQKLShhcmJpdHJhcnkpIDUzLjc5OCBUagotLTQyNiBUSm0KLShvdGhlcikgMjkuODg3OCBUagotLTQyNiBUSm0KLShjb25kaXRpb25zKSA1OS43NzU2IFRqCi00MTkuMzY0IDQ5NC42OTUgVGQKLSgqKSA1Ljk3NzU2IFRqCi00MjUuMzQxIDQ5Ni40MzggVGQKLSgvXCkpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oeykgNS45Nzc1NiBUagotOTguNDg4IDQ4NC40ODMgVGQKLShuQnVmKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKD0pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oQloyX2J6UmVhZCkgNTkuNzc1NiBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSgmYnplcnJvciwpIDUzLjc5OCBUagotLTQyNiBUSm0KLShiLCkgMTEuOTU1MSBUagotLTQyNiBUSm0KLShidWYsKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKC8pIDUuOTc3NTYgVGoKLTMxOS40NzggNDgyLjc0IFRkCi0oKikgNS45Nzc1NiBUagotMzI5LjcgNDg0LjQ4MyBUZAotKHNpemUpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0ob2YpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYnVmKSAxNy45MzI3IFRqCi0zOTYuMjMgNDgyLjc0IFRkCi0oKikgNS45Nzc1NiBUagotNDAyLjIwOCA0ODQuNDgzIFRkCi0oLykgNS45Nzc1NiBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLTk4LjQ4OCA0NzIuNTI4IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oYnplcnJvcikgNDEuODQyOSBUagotLTQyNiBUSm0KLSg9PSkgMTEuOTU1MSBUagotLTQyNiBUSm0KLShCWl9PSykgMjkuODg3OCBUagotLTQyNiBUSm0KLShcKSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSh7KSA1Ljk3NzU2IFRqCi0xMDYuOTc2IDQ2MC41NzMgVGQKLSgvKSA1Ljk3NzU2IFRqCi0xMTIuOTUzIDQ1OC44MjkgVGQKLSgqKSA1Ljk3NzU2IFRqCi0xMjMuMTc1IDQ2MC41NzMgVGQKLShkbykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShzb21ldGhpbmcpIDUzLjc5OCBUagotLTQyNiBUSm0KLSh3aXRoKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGJ1ZlswKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKC4uKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKG5CdWYtMV0pIDQxLjg0MjkgVGoKLTMyMS45ODkgNDU4LjgyOSBUZAotKCopIDUuOTc3NTYgVGoKLTMyNy45NjYgNDYwLjU3MyBUZAotKC8pIDUuOTc3NTYgVGoKLTk4LjQ4NzkgNDQ4LjYxOCBUZAotKH0pIDUuOTc3NTYgVGoKLTkwIDQzNi42NjMgVGQKLSh9KSA1Ljk3NzU2IFRqCi05MCA0MjQuNzA3IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oYnplcnJvcikgNDEuODQyOSBUagotLTQyNiBUSm0KLSghPSkgMTEuOTU1MSBUagotLTQyNiBUSm0KLShCWl9TVFJFQU1fRU5EKSA3Ny43MDgzIFRqCi0tNDI2IFRKbQotKFwpKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKHspIDUuOTc3NTYgVGoKLTEwMi43MzIgNDEyLjc1MiBUZAotKEJaMl9ielJlYWRDbG9zZSkgODkuNjYzNCBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSgmYnplcnJvciwpIDUzLjc5OCBUagotLTQyNiBUSm0KLShiKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKFwpOykgMTEuOTU1MSBUagotMTAyLjczMiA0MDAuNzk3IFRkCi0oLykgNS45Nzc1NiBUagotMTA4LjcwOSAzOTkuMDU0IFRkCi0oKikgNS45Nzc1NiBUagotMTE4LjkzMSA0MDAuNzk3IFRkCi0oaGFuZGxlKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKGVycm9yKSAyOS44ODc4IFRqCi0xOTMuMTcyIDM5OS4wNTQgVGQKLSgqKSA1Ljk3NzU2IFRqCi0xOTkuMTUgNDAwLjc5NyBUZAotKC8pIDUuOTc3NTYgVGoKLTkwIDM4OC44NDIgVGQKLSh9KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKGVsc2UpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oeykgNS45Nzc1NiBUagotMTAyLjczMiAzNzYuODg3IFRkCi0oQloyX2J6UmVhZENsb3NlKSA4OS42NjM0IFRqCi0tNDI2IFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKCZiemVycm9yLCkgNTMuNzk4IFRqCi0tNDI2IFRKbQotKGIpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi05MCAzNjQuOTMyIFRkCi0ofSkgNS45Nzc1NiBUagotWzEgMCAwIDEgNzIgMzQ5LjM5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzM5LjQyN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzE0LjYzNyBUZAotL0YxMjJfMCAyMC42NTg1IFRmCi0oMy41LikgMzQuNDU4NCBUagotLTI3OCBUSm0KLShVdGlsaXR5KSA1Ny4zODkzIFRqCi0tMjc4IFRKbQotKGZ1bmN0aW9ucykgOTIuOTYzMyBUagotWzEgMCAwIDEgNzIgMzEwLjM2MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzAwLjM5OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjg0LjAxNiBUZAotL0YxMjJfMCAxNy4yMTU0IFRmCi0oMy41LjEuKSA0My4wNzI5IFRqCi1bMSAwIDAgMSAxMTkuODU4IDI4NC4wMTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE5Ljg1OCAtMjg0LjAxNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE5Ljg1OCAyODQuMDE2IFRkCi0vRjM5Ml8wIDE3LjIxNTQgVGYKLShCWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3MpIDI0Ny45MDIgVGoKLVsxIDAgMCAxIDM2Ny43NiAyODQuMDE2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5NS43NiAtMi4zMzI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOTYuNjM3Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCA5NS42NDEzIHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOTIuMDU0OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTI3Mi4zMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDI3Mi4zMTggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKEJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzc1woKSAxNDkuNDM5IFRqCi0tNDI2IFRKbQotKGNoYXIpIDIzLjkxMDIgVGoKLTI4OS43NzEgMjcwLjU3NSBUZAotKCopIDUuOTc3NTYgVGoKLTMzMy45NDQgMjcyLjMxOCBUZAotKGRlc3QsKSAyOS44ODc4IFRqCi0yMTcuMzE5IDI2MC4zNjMgVGQKLSh1bnNpZ25lZCkgNDcuODIwNSBUagotLTQyNiBUSm0KLShpbnQpIDE3LjkzMjcgVGoKLTI4Ny4zMTcgMjU4LjYyIFRkCi0oKikgNS45Nzc1NiBUagotMjk3LjUzOCAyNjAuMzYzIFRkCi0oZGVzdExlbiwpIDQ3LjgyMDUgVGoKLTIxNy4zMTkgMjQ4LjQwOCBUZAotKGNoYXIpIDIzLjkxMDIgVGoKLTI0MS4yMyAyNDYuNjY0IFRkCi0oKikgNS45Nzc1NiBUagotMjg1LjQwMyAyNDguNDA4IFRkCi0oc291cmNlLCkgNDEuODQyOSBUagotMjE3LjMxOSAyMzYuNDUzIFRkCi0odW5zaWduZWQpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0tODUyIFRKbQotKHNvdXJjZUxlbiwpIDU5Ljc3NTYgVGoKLTIxNy4zMTkgMjI0LjQ5OCBUZAotKGludCkgMTcuOTMyNyBUagotLTQ2ODYgVEptCi0oYmxvY2tTaXplMTAwaywpIDgzLjY4NTggVGoKLTIxNy4zMTkgMjEyLjU0MiBUZAotKGludCkgMTcuOTMyNyBUagotLTQ2ODYgVEptCi0odmVyYm9zaXR5LCkgNTkuNzc1NiBUagotMjE3LjMxOSAyMDAuNTg3IFRkCi0oaW50KSAxNy45MzI3IFRqCi0tNDY4NiBUSm0KLSh3b3JrRmFjdG9yKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKFwpOykgMTEuOTU1MSBUagotWzEgMCAwIDEgNzIgMTg1LjA0NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xNzUuMDgzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxNjMuMTI4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEF0dGVtcHRzKSAzNi41MzI5IFRqCi0tNDQyIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS00NDIgVEptCi0oY29tcHJlc3MpIDM3LjYyODcgVGoKLS00NDMgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tNDQyIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS00NDIgVEptCi0oaW4pIDcuNzUwOSBUagotWzEgMCAwIDEgMjE2Ljg3IDE2My4xMjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjE2Ljg3IC0xNjMuMTI4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTYuODcgMTYzLjEyOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShzb3VyY2VbMCkgNDcuODIwNSBUagotLTYwMCBUSm0KLSguLikgMTEuOTU1MSBUagotLTEyMDAgVEptCi0oc291cmNlTGVuLTFdKSA3MS43MzA3IFRqCi1bMSAwIDAgMSAzNjYuMzEgMTYzLjEyOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNjYuMzEgLTE2My4xMjhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM3MC43MTUgMTYzLjEyOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpbnRvKSAxNS41MDE4IFRqCi0tNDQyIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTQ0MiBUSm0KLShkZXN0aW5hdGlvbikgNDMuNzI1OSBUagotLTQ0MyBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVmKSA4LjI5ODg1IFRqCi0yNSBUSm0KLShmZXIpIDExLjA1ODUgVGoKLTQwIFRKbQotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDQ4Ni4yMDIgMTYzLjEyOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00ODYuMjAyIC0xNjMuMTI4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00ODYuMjAyIDE2My4xMjggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZGVzdFswKSAzNS44NjU0IFRqCi0tNjAwIFRKbQotKC4uKSAxMS45NTUxIFRqCi03MiAxNDkuNDI5IFRkCi0oKikgNS45Nzc1NiBUagotNzcuOTc3NiAxNTEuMTczIFRkCi0oZGVzdExlbi0xXSkgNTkuNzc1NiBUagotWzEgMCAwIDEgMTM3Ljc1MyAxNTEuMTcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzNy43NTMgLTE1MS4xNzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzNy43NTMgMTUxLjE3MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi0tMTM5MyBUSm0KLShJZikgNi42MzUwOSBUagotLTM3OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNzkgVEptCi0oZGVzdGluYXRpb24pIDQzLjcyNTkgVGoKLS0zNzkgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVyKSAxMS4wNTg1IFRqCi0tMzc4IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzc5IFRKbQotKGJpZykgMTIuNzMyMiBUagotLTM3OSBUSm0KLShlbm91Z2gsKSAzMS44MjA1IFRqCi1bMSAwIDAgMSAzMTguNDg2IDE1MS4xNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzE4LjQ4NiAtMTUxLjE3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzE4LjQ4NiAxNDkuNDI5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKCopIDUuOTc3NTYgVGoKLTMyNC40NjQgMTUxLjE3MyBUZAotKGRlc3RMZW4pIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDM2Ni4zMDcgMTUxLjE3Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNjYuMzA3IC0xNTEuMTcyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNzAuMDgxIDE1MS4xNzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaXMpIDYuNjQ1MDUgVGoKLS0zNzkgVEptCi0oc2V0KSAxMS4wNjg0IFRqCi0tMzc5IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zNzggVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzc5IFRKbQotKHNpemUpIDE1LjQ5MTggVGoKLS0zNzkgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zNzkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzc5IFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0zNzkgVEptCi0oZGF0YSwpIDE5LjA4ODMgVGoKLTcyIDEzOS4yMTcgVGQKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgODkuNTI3MyAxMzkuMjE3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg5LjUyNzMgLTEzOS4yMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg5LjUyNzMgMTM5LjIxNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9PSykgMjkuODg3OCBUagotWzEgMCAwIDEgMTE5LjQxNSAxMzkuMjE3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS40MTUgLTEzOS4yMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEyMi41NTYgMTM5LjIxNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpcykgNi42NDUwNSBUagotLTMxNSBUSm0KLShyZXR1cm5lZC4pIDM1LjY4NiBUagotLTEwMTIgVEptCi0oSWYpIDYuNjM1MDkgVGoKLS0zMTUgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzE2IFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0zMTUgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTMxNSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0ob24nKSAxMy4yODAxIFRqCi0xOCBUSm0KLSh0KSAyLjc2OTYgVGoKLS0zMTYgVEptCi0oXDAwMnQsKSAxMC43OTk1IFRqCi1bMSAwIDAgMSAzMTMuMzIyIDEzOS4yMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzEzLjMyMiAtMTM5LjIxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzEzLjMyMiAxMzcuNDc0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKCopIDUuOTc3NTYgVGoKLTMxOS4zIDEzOS4yMTcgVGQKLShkZXN0TGVuKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAzNjEuMTQzIDEzOS4yMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzYxLjE0MyAtMTM5LjIxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzY0LjI4NCAxMzkuMjE3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMzE1IFRKbQotKHVuY2hhbmdlZCwpIDQ1LjY0ODYgVGoKLS0zMzIgVEptCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDQ0MC41NTEgMTM5LjIxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDAuNTUxIC0xMzkuMjE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDAuNTUxIDEzOS4yMTcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfT1VUQlVGRl9GVUxMKSA4OS42NjM0IFRqCi1bMSAwIDAgMSA1MzAuMjE1IDEzOS4yMTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTMwLjIxNSAtMTM5LjIxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTMzLjM1NSAxMzkuMjE3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi03MiAxMjcuMjYyIFRkCi0ocmV0dXJuZWQuKSAzNS42ODYgVGoKLVsxIDAgMCAxIDcyIDEyNy4xNjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTExNy4yXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxMDUuMzQ0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKENvbXByZXNzaW9uKSA1Mi41ODI2IFRqCi0tMjk3IFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yOTcgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjk3IFRKbQotKG1hbm5lcikgMjkuODc3OCBUagotLTI5NyBUSm0KLShpcykgNi42NDUwNSBUagotLTI5NyBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjk3IFRKbQotKG9uZS1zaG90KSAzNC4zMTEyIFRqCi0tMjk3IFRKbQotKGUpIDQuNDIzMzkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW50LCkgMTQuNjY0OSBUagotLTMwOSBUSm0KLShkb25lKSAxOS4zNjczIFRqCi0tMjk3IFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yOTcgVEptCi0oYSkgNC40MjMzOSBUagotLTI5NyBUSm0KLShzaW5nbGUpIDIzLjgwMDcgVGoKLS0yOTcgVEptCi0oY2FsbCkgMTQuMzg2IFRqCi0tMjk3IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yOTcgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjk3IFRKbQotKGZ1bmN0aW9uLikgMzUuNjk2IFRqCi0tOTAzIFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTI5NyBUSm0KLShyZXN1bHRpbmcpIDM0Ljg2OTEgVGoKLS0yOTcgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotNzIgOTMuMzg5MiBUZAotKGRhdGEpIDE2LjU5NzcgVGoKLS0yOTYgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yOTYgVEptCi0oYSkgNC40MjMzOSBUagotLTI5NiBUSm0KLShjb21wbGV0ZSkgMzYuNTIyOSBUagotWzEgMCAwIDEgMTQ3Ljk4OCA5My4zODkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE0Ny45ODggLTkzLjM4OTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE0Ny45ODggOTMuMzg5MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMTc3Ljg3NSA5My4zODkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3Ny44NzUgLTkzLjM4OTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE4MC44MjUgOTMuMzg5MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShmb3JtYXQpIDI2LjU2MDMgVGoKLS0yOTYgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI5NiBUSm0KLShzdHJlYW0uKSAyOS4wNTA5IFRqCi0tODk3IFRKbQotKFRoZXJlKSAyMy4yMzI4IFRqCi0tMjk2IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjk2IFRKbQotKG5vKSA5Ljk2MjYgVGoKLS0yOTYgVEptCi0obWVjaGFuaXNtKSA0NS4zNzk2IFRqCi0tMjk2IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI5NiBUSm0KLShtYWtpbmcpIDI5Ljg4NzggVGoKLS0yOTYgVEptCi0oYWRkaXRpb25hbCkgMzkuODUwNCBUagotLTI5NiBUSm0KLShjYWxscykgMTguMjYxNCBUagotLTI5NiBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjk2IFRKbQotKHBybykgMTMuMjgwMSBUagotMTUgVEptCi0odmlkZSkgMTcuMTU1NiBUagotLTI5NiBUSm0KLShlKSA0LjQyMzM5IFRqCi0xNSBUSm0KLSh4dHJhKSAxNS40OTE4IFRqCi03MiA4MS40MzQgVGQKLShpbnB1dCkgMjAuNDgzMSBUagotLTI1MCBUSm0KLShkYXRhLikgMTkuMDg4MyBUagotLTYyMCBUSm0KLShJZikgNi42MzUwOSBUagotLTI1MCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFudCkgMTIuMTc0MyBUagotLTI1MCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKGtpbmQpIDE3LjcxMzUgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0obWVjaGFuaXNtLCkgNDcuODcwMyBUagotLTI1MCBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGxvKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHctbGUpIDE3LjcwMzUgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWwpIDcuMTkzIFRqCi0tMjUwIFRKbQotKGludGVyZikgMjEuNTc5IFRqCi0xMCBUSm0KLShhY2UuKSAxNS43NjA4IFRqCi1bMSAwIDAgMSA3MiA3OS4yNzcyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMjguNDI1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDAuNTcyNiAtNi43NTQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5My44NDEgLTUwLjk1MTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNC40MTQgNTAuOTUxNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyNikgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAzMCAzMAotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgLTguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNzYuNDk3OSAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0Mi41NjkgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxOS4wNjcgNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm9ncmFtbWluZykgNTQuNzk0MyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSA0OTYuNTU2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjU1NiAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDk2LjU1NiA3NDkuMjQ1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGxpYmJ6aXAyKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA1NDQuMzc2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc4LjMwNSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTUuMDM2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTIxLjU1NDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTcyMF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShGKSA1LjUzOTIxIFRqCi0xNSBUSm0KLShvcikgOC4yOTg4NSBUagotLTIyMyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yMjQgVEptCi0obWVhbmluZykgMzQuMzExMiBUagotLTIyMyBUSm0KLShvZikgOC4yOTg4NSBUagotLTIyNCBUSm0KLShwYXJhbWV0ZXJzKSA0My43MDU5IFRqCi1bMSAwIDAgMSAxOTUuMzA2IDcxMC4wMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTk1LjMwNiAtNzEwLjAzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTk1LjMwNiA3MTAuMDM3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJsb2NrU2l6ZTEwMGspIDc3LjcwODMgVGoKLVsxIDAgMCAxIDI3My4wMTUgNzEwLjAzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNzMuMDE1IC03MTAuMDM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNzMuMDE1IDcxMC4wMzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMjc3Ljc4NCA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3Ny43ODQgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3Ny43ODQgNzEwLjAzNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh2ZXJib3NpdHkpIDUzLjc5OCBUagotWzEgMCAwIDEgMzMxLjU4MyA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzMS41ODMgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzMy44MDggNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMzUwLjQyIDcxMC4wMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzUwLjQyIC03MTAuMDM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNTAuNDIgNzEwLjAzNyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh3b3JrRmFjdG9yKSA1OS43NzU2IFRqCi1bMSAwIDAgMSA0MTAuMTk2IDcxMC4wMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDEwLjE5NiAtNzEwLjAzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDEwLjE5NiA3MTAuMDM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0yMjkgVEptCi0oc2VlKSAxMi43MjIyIFRqCi1bMSAwIDAgMSA0MjkuOTEzIDcxMC4wMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDI5LjkxMyAtNzEwLjAzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDI5LjkxMyA3MTAuMDM3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekNvbXByZXNzSW5pdCkgMTA3LjU5NiBUagotWzEgMCAwIDEgNTM3LjUwOSA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUzNy41MDkgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNy41MDkgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiA3MDcuODhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY5Ny45MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDY4OC4xMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUKSA2LjA4NzE1IFRqCi04MCBUSm0KLShvKSA0Ljk4MTMgVGoKLS00MTAgVEptCi0oZ3VhcmFudGVlKSAzOC43MjQ2IFRqCi0tNDEwIFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS00MTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tNDEwIFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS00MTAgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTQxMCBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tNDEwIFRKbQotKFwwMDJ0KSA4LjMwODgxIFRqCi0tNDEwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS00MTAgVEptCi0oaXRzKSA5LjQxNDY2IFRqCi0tNDEwIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWYpIDguMjk4ODUgVGoKLTI1IFRKbQotKGZlcikgMTEuMDU4NSBUagotNDAgVEptCi0oLCkgMi40OTA2NSBUagotLTQ1MCBUSm0KLShhbGxvY2F0ZSkgMzAuOTgzNyBUagotLTQxMCBUSm0KLShhbikgOS40MDQ2OSBUagotLTQxMCBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS00MTAgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVyKSAxMS4wNTg1IFRqCi0tNDExIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tNDEwIFRKbQotKHNpemUpIDE1LjQ5MTggVGoKLS00MTAgVEptCi0oMSUpIDEzLjI4MDEgVGoKLS00MTAgVEptCi0obGFyKSAxMC41MTA1IFRqCi0xOCBUSm0KLShnZXIpIDEyLjcyMjIgVGoKLS00MTAgVEptCi0odGhhbikgMTcuMTU1NiBUagotLTQxMCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTcyIDY3Ni4xNjQgVGQKLSh1bmNvbXByZXNzZWQpIDU2Ljk5NiBUagotLTI1MCBUSm0KLShkYXRhLCkgMTkuMDg4MyBUagotLTI1MCBUSm0KLShwbHVzKSAxNi42MDc3IFRqCi0tMjUwIFRKbQotKHNpeCkgMTEuNjI2NCBUagotLTI1MCBUSm0KLShodW5kcmVkKSAzMi42NDc0IFRqCi0tMjUwIFRKbQotKGUpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHh0cmEpIDE1LjQ5MTggVGoKLS0yNTAgVEptCi0oYnl0ZXMuKSAyMy41MjE3IFRqCi1bMSAwIDAgMSA3MiA2NzQuMDA3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02NjQuMDQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2NTQuMjQ3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzKSAxNTUuNDE3IFRqCi1bMSAwIDAgMSAyMjcuNDE3IDY1NC4yNDddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjI3LjQxNyAtNjU0LjI0N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjMwLjU1MyA2NTQuMjQ3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLS0zMTUgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMzE1IFRKbQotKHdyaXRlKSAyMC40NzMxIFRqCi0tMzE0IFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0zMTUgVEptCi0oYXQpIDcuMTkzIFRqCi0tMzE1IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMzE1IFRKbQotKGJlKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh5b25kKSAxOS45MjUyIFRqCi1bMSAwIDAgMSAzNjIuNDg0IDY1NC4yNDddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzYyLjQ4NCAtNjU0LjI0N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzYyLjQ4NCA2NTQuMjQ3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGRlc3RbKSAyOS44ODc4IFRqCi0zOTIuMzcyIDY1Mi41MDMgVGQKLSgqKSA1Ljk3NzU2IFRqCi0zOTguMzQ5IDY1NC4yNDcgVGQKLShkZXN0TGVuXSkgNDcuODIwNSBUagotWzEgMCAwIDEgNDQ2LjE3IDY1NC4yNDddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ2LjE3IC02NTQuMjQ3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDYuMTcgNjU0LjI0NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMzMxIFRKbQotKGUpIDQuNDIzMzkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW4pIDkuNDA0NjkgVGoKLS0zMTUgVEptCi0oaW4pIDcuNzUwOSBUagotLTMxNSBUSm0KLShjYXNlKSAxNy4xNDU2IFRqCi0tMzE0IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzE1IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWYpIDguMjk4ODUgVGoKLTI1IFRKbQotKGZlcikgMTEuMDU4NSBUagotNzIgNjQyLjI5MSBUZAotKG8pIDQuOTgxMyBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlclwwMDNvKSAxOC4yNjE0IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgNjQyLjE5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjMyLjIyOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjIwLjM3NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQb3NzaWJsZSkgMzMuMjE1MyBUagotLTI1MCBUSm0KLShyZXR1cm4pIDIzLjc5MDcgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlczopIDIzLjI0MjcgVGoKLVsxIDAgMCAxIDcyIDYyMC4yNzRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xNjguMzY5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDE2Ny4zNzIgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAxNjMuNzg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtNjEwLjkwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgNjEwLjkwOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9DT05GSUdfRVJST1IpIDg5LjY2MzQgVGoKLTk4LjQ4NzkgNTk4Ljk1NCBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShsaWJyYXJ5KSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKGhhcykgMTcuOTMyNyBUagotLTQyNiBUSm0KLShiZWVuKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG1pcy1jb21waWxlZCkgNzEuNzMwNyBUagotOTAgNTg2Ljk5OSBUZAotKEJaX1BBUkFNX0VSUk9SKSA4My42ODU4IFRqCi05OC40ODc5IDU3NS4wNDQgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShkZXN0KSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKE5VTEwpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oZGVzdExlbikgNDEuODQyOSBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShOVUxMKSAyMy45MTAyIFRqCi05OC40ODc5IDU2My4wODggVGQKLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShibG9ja1NpemUxMDBrKSA3Ny43MDgzIFRqCi0tNDI2IFRKbQotKDwpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oMSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShibG9ja1NpemUxMDBrKSA3Ny43MDgzIFRqCi0tNDI2IFRKbQotKD4pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oOSkgNS45Nzc1NiBUagotOTguNDg3OSA1NTEuMTMzIFRkCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odmVyYm9zaXR5KSA1My43OTggVGoKLS00MjYgVEptCi0oPCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLSgwKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKG9yKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHZlcmJvc2l0eSkgNTMuNzk4IFRqCi0tNDI2IFRKbQotKD4pIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oNCkgNS45Nzc1NiBUagotOTguNDg3OSA1MzkuMTc4IFRkCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0od29ya0ZhY3RvcikgNTkuNzc1NiBUagotLTQyNiBUSm0KLSg8KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKDApIDUuOTc3NTYgVGoKLS00MjYgVEptCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0od29ya0ZhY3RvcikgNTkuNzc1NiBUagotLTQyNiBUSm0KLSg+KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKDI1MCkgMTcuOTMyNyBUagotOTAgNTI3LjIyMyBUZAotKEJaX01FTV9FUlJPUikgNzEuNzMwNyBUagotOTguNDg3OSA1MTUuMjY4IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oaW5zdWZmaWNpZW50KSA3MS43MzA3IFRqCi0tNDI2IFRKbQotKG1lbW9yeSkgMzUuODY1NCBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShhdmFpbGFibGUpIDUzLjc5OCBUagotOTAgNTAzLjMxMyBUZAotKEJaX09VVEJVRkZfRlVMTCkgODkuNjYzNCBUagotOTguNDg3OSA0OTEuMzU3IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKHNpemUpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0ob2YpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGNvbXByZXNzZWQpIDU5Ljc3NTYgVGoKLS00MjYgVEptCi0oZGF0YSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShleGNlZWRzKSA0MS44NDI5IFRqCi0zNDEuNjU1IDQ4OS42MTQgVGQKLSgqKSA1Ljk3NzU2IFRqCi0zNDcuNjMzIDQ5MS4zNTcgVGQKLShkZXN0TGVuKSA0MS44NDI5IFRqCi05MCA0NzkuNDAyIFRkCi0oQlpfT0spIDI5Ljg4NzggVGoKLTk4LjQ4NzkgNDY3LjQ0NyBUZAotKG90aGVyd2lzZSkgNTMuNzk4IFRqCi1bMSAwIDAgMSA3MiA0NTEuOTA1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDQxLjk0M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDIxLjI4NCBUZAotL0YxMjJfMCAxNy4yMTU0IFRmCi0oMy41LjIuKSA0My4wNzI5IFRqCi1bMSAwIDAgMSAxMTkuODU4IDQyMS4yODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTE5Ljg1OCAtNDIxLjI4NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTE5Ljg1OCA0MjEuMjg0IFRkCi0vRjM5Ml8wIDE3LjIxNTQgVGYKLShCWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzcykgMjY4LjU2IFRqCi1bMSAwIDAgMSAzODguNDE5IDQyMS4yODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzE2LjQxOSAtMi4zMzI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtODQuNjgyNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCA4My42ODYyIHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgODAuMDk5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTQwOS41ODddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDQwOS41ODcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKEJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzXCgpIDE2MS4zOTQgVGoKLS00MjYgVEptCi0oY2hhcikgMjMuOTEwMiBUagotMzAxLjcyNiA0MDcuODQzIFRkCi0oKikgNS45Nzc1NiBUagotMzQ1Ljg5OSA0MDkuNTg3IFRkCi0oZGVzdCwpIDI5Ljg4NzggVGoKLTIyNS44MDcgMzk3LjYzMiBUZAotKHVuc2lnbmVkKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotMjk1LjgwNSAzOTUuODg4IFRkCi0oKikgNS45Nzc1NiBUagotMzA2LjAyNiAzOTcuNjMyIFRkCi0oZGVzdExlbiwpIDQ3LjgyMDUgVGoKLTIyNS44MDcgMzg1LjY3NiBUZAotKGNoYXIpIDIzLjkxMDIgVGoKLTI0OS43MTggMzgzLjkzMyBUZAotKCopIDUuOTc3NTYgVGoKLTI5My44OTEgMzg1LjY3NiBUZAotKHNvdXJjZSwpIDQxLjg0MjkgVGoKLTIyNS44MDcgMzczLjcyMSBUZAotKHVuc2lnbmVkKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotLTg1MiBUSm0KLShzb3VyY2VMZW4sKSA1OS43NzU2IFRqCi0yMjUuODA3IDM2MS43NjYgVGQKLShpbnQpIDE3LjkzMjcgVGoKLS00Njg2IFRKbQotKHNtYWxsLCkgMzUuODY1NCBUagotMjI1LjgwNyAzNDkuODExIFRkCi0oaW50KSAxNy45MzI3IFRqCi0tNDY4NiBUSm0KLSh2ZXJib3NpdHkpIDUzLjc5OCBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLVsxIDAgMCAxIDcyIDMzNC4yNjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzI0LjMwNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzEyLjM1MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBdHRlbXB0cykgMzYuNTMyOSBUagotLTM1OCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzU5IFRKbQotKGRlY29tcHJlc3MpIDQ3LjAzMzQgVGoKLS0zNTggVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzU4IFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0zNTkgVEptCi0oaW4pIDcuNzUwOSBUagotWzEgMCAwIDEgMjIxLjI1OSAzMTIuMzUxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIyMS4yNTkgLTMxMi4zNTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIyMS4yNTkgMzEyLjM1MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShzb3VyY2VbMCkgNDcuODIwNSBUagotLTYwMCBUSm0KLSguLikgMTEuOTU1MSBUagotLTEyMDAgVEptCi0oc291cmNlTGVuLTFdKSA3MS43MzA3IFRqCi1bMSAwIDAgMSAzNzAuNjk4IDMxMi4zNTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzcwLjY5OCAtMzEyLjM1MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzc0LjI2OCAzMTIuMzUxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGludG8pIDE1LjUwMTggVGoKLS0zNTggVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzU5IFRKbQotKGRlc3RpbmF0aW9uKSA0My43MjU5IFRqCi0tMzU4IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWYpIDguMjk4ODUgVGoKLTI1IFRKbQotKGZlcikgMTEuMDU4NSBUagotNDAgVEptCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgNDg2LjIwMiAzMTIuMzUxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ4Ni4yMDIgLTMxMi4zNTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ4Ni4yMDIgMzEyLjM1MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShkZXN0WzApIDM1Ljg2NTQgVGoKLS02MDAgVEptCi0oLi4pIDExLjk1NTEgVGoKLTcyIDI5OC42NTMgVGQKLSgqKSA1Ljk3NzU2IFRqCi03Ny45Nzc2IDMwMC4zOTYgVGQKLShkZXN0TGVuLTFdKSA1OS43NzU2IFRqCi1bMSAwIDAgMSAxMzcuNzUzIDMwMC4zOTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTM3Ljc1MyAtMzAwLjM5Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTM3Ljc1MyAzMDAuMzk2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC4pIDIuNDkwNjUgVGoKLS0xMTIzIFRKbQotKElmKSA2LjYzNTA5IFRqCi0tMzM0IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMzNCBUSm0KLShkZXN0aW5hdGlvbikgNDMuNzI1OSBUagotLTMzNCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVmKSA4LjI5ODg1IFRqCi0yNSBUSm0KLShmZXIpIDExLjA1ODUgVGoKLS0zMzQgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0zMzQgVEptCi0oYmlnKSAxMi43MzIyIFRqCi0tMzM0IFRKbQotKGVub3VnaCwpIDMxLjgyMDUgVGoKLVsxIDAgMCAxIDMxMi41NTQgMzAwLjM5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMTIuNTU0IC0zMDAuMzk2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMTIuNTU0IDI5OC42NTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oKikgNS45Nzc1NiBUagotMzE4LjUzMSAzMDAuMzk2IFRkCi0oZGVzdExlbikgNDEuODQyOSBUagotWzEgMCAwIDEgMzYwLjM3NCAzMDAuMzk2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM2MC4zNzQgLTMwMC4zOTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM2My43MDEgMzAwLjM5NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpcykgNi42NDUwNSBUagotLTMzNCBUSm0KLShzZXQpIDExLjA2ODQgVGoKLS0zMzQgVEptCi0odG8pIDcuNzUwOSBUagotLTMzNCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMzQgVEptCi0oc2l6ZSkgMTUuNDkxOCBUagotLTMzMyBUSm0KLShvZikgOC4yOTg4NSBUagotLTMzNCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMzQgVEptCi0odW5jb21wcmVzc2VkKSA1Ni45OTYgVGoKLS0zMzQgVEptCi0oZGF0YSwpIDE5LjA4ODMgVGoKLTcyIDI4OC40NDEgVGQKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgODkuNTI3MyAyODguNDQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg5LjUyNzMgLTI4OC40NDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg5LjUyNzMgMjg4LjQ0MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9PSykgMjkuODg3OCBUagotWzEgMCAwIDEgMTE5LjQxNSAyODguNDQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS40MTUgLTI4OC40NDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEyMi41NTYgMjg4LjQ0MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpcykgNi42NDUwNSBUagotLTMxNSBUSm0KLShyZXR1cm5lZC4pIDM1LjY4NiBUagotLTEwMTIgVEptCi0oSWYpIDYuNjM1MDkgVGoKLS0zMTUgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzE2IFRKbQotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0zMTUgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTMxNSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0ob24nKSAxMy4yODAxIFRqCi0xOCBUSm0KLSh0KSAyLjc2OTYgVGoKLS0zMTYgVEptCi0oXDAwMnQsKSAxMC43OTk1IFRqCi1bMSAwIDAgMSAzMTMuMzIyIDI4OC40NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzEzLjMyMiAtMjg4LjQ0MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzEzLjMyMiAyODYuNjk4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKCopIDUuOTc3NTYgVGoKLTMxOS4zIDI4OC40NDEgVGQKLShkZXN0TGVuKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAzNjEuMTQzIDI4OC40NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzYxLjE0MyAtMjg4LjQ0MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzY0LjI4NCAyODguNDQxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMzE1IFRKbQotKHVuY2hhbmdlZCwpIDQ1LjY0ODYgVGoKLS0zMzIgVEptCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDQ0MC41NTEgMjg4LjQ0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDAuNTUxIC0yODguNDQxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDAuNTUxIDI4OC40NDEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfT1VUQlVGRl9GVUxMKSA4OS42NjM0IFRqCi1bMSAwIDAgMSA1MzAuMjE1IDI4OC40NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTMwLjIxNSAtMjg4LjQ0MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTMzLjM1NSAyODguNDQxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi03MiAyNzYuNDg2IFRkCi0ocmV0dXJuZWQuKSAzNS42ODYgVGoKLVsxIDAgMCAxIDcyIDI3Ni4zODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTI2Ni40MjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI1NC41NjggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oc291cmNlKSAzNS44NjU0IFRqCi1bMSAwIDAgMSAxMDcuODY1IDI1NC41NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTA3Ljg2NSAtMjU0LjU2OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTEwLjk4MSAyNTQuNTY4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMzEzIFRKbQotKGFzc3VtZWQpIDM0LjMxMTIgVGoKLS0zMTIgVEptCi0odG8pIDcuNzUwOSBUagotLTMxMyBUSm0KLShob2xkKSAxNy43MTM1IFRqCi0tMzEzIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zMTMgVEptCi0oY29tcGxldGUpIDM2LjUyMjkgVGoKLVsxIDAgMCAxIDIzNy4wNCAyNTQuNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIzNy4wNCAtMjU0LjU2OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjM3LjA0IDI1NC41NjggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDI2Ni45MjggMjU0LjU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNjYuOTI4IC0yNTQuNTY4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNzAuMDQ0IDI1NC41NjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oZm9ybWF0KSAyNi41NjAzIFRqCi0tMzEzIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0zMTIgVEptCi0oc3RyZWFtLikgMjkuMDUwOSBUagotWzEgMCAwIDEgMzUzLjQ0NiAyNTQuNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM1My40NDYgLTI1NC41NjhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM1My40NDYgMjU0LjU2OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzcykgMTU1LjQxNyBUagotWzEgMCAwIDEgNTA4Ljg2MyAyNTQuNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwOC44NjMgLTI1NC41NjhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUxMS45NzggMjU0LjU2OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0cmllcykgMTcuMTU1NiBUagotLTMxMyBUSm0KLSh0bykgNy43NTA5IFRqCi03MiAyNDIuNjEzIFRkCi0oZGVjb21wcmVzcykgNDcuMDMzNCBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oZW50aXJldHkpIDMwLjQzNTcgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHN0cmVhbSkgMjYuNTYwMyBUagotLTI1MCBUSm0KLShpbnRvKSAxNS41MDE4IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShvdXRwdXQpIDI1LjQ2NDQgVGoKLS0yNTAgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZikgOC4yOTg4NSBUagotMjUgVEptCi0oZmVyKSAxMS4wNTg1IFRqCi01NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAyNDAuNDU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yMzAuNDkzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyMjAuNjk1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEYpIDUuNTM5MjEgVGoKLTE1IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShtZWFuaW5nKSAzNC4zMTEyIFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHBhcmFtZXRlcnMpIDQzLjcwNTkgVGoKLVsxIDAgMCAxIDE5Ni42MzEgMjIwLjY5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xOTYuNjMxIC0yMjAuNjk1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xOTYuNjMxIDIyMC42OTUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oc21hbGwpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDIyNi41MTkgMjIwLjY5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMjYuNTE5IC0yMjAuNjk1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjkuMDEgMjIwLjY5NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMjQ1Ljg4NyAyMjAuNjk1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0NS44ODcgLTIyMC42OTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI0NS44ODcgMjIwLjY5NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh2ZXJib3NpdHkpIDUzLjc5OCBUagotWzEgMCAwIDEgMjk5LjY4NSAyMjAuNjk1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5OS42ODUgLTIyMC42OTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI5OS42ODUgMjIwLjY5NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMjUwIFRKbQotKHNlZSkgMTIuNzIyMiBUagotWzEgMCAwIDEgMzE5Ljg3OSAyMjAuNjk1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMxOS44NzkgLTIyMC42OTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMxOS44NzkgMjIwLjY5NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpEZWNvbXByZXNzSW5pdCkgMTE5LjU1MSBUagotWzEgMCAwIDEgNDM5LjQzMSAyMjAuNjk1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQzOS40MzEgLTIyMC42OTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQzOS40MzEgMjIwLjY5NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAyMTguNTM4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yMDguNTc2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxOTguNzc3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEJlY2F1c2UpIDMzLjE5NTQgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjQ5IFRKbQotKGNvbXByZXNzaW9uKSA1MC4zNjA5IFRqCi0tMjUwIFRKbQotKHJhdGlvKSAxOC4yNjE0IFRqCi0tMjQ5IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI0OSBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjUwIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNDkgVEptCi0oY2Fubm90KSAyNi41NjAzIFRqCi0tMjUwIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKGtubykgMTQuOTQzOSBUagotMjUgVEptCi0od24pIDEyLjE3NDMgVGoKLS0yNDkgVEptCi0oaW4pIDcuNzUwOSBUagotLTI1MCBUSm0KLShhZHYpIDE0LjM4NiBUagotMjUgVEptCi0oYW5jZSwpIDIwLjc0MjEgVGoKLS0yNDkgVEptCi0odGhlcmUpIDE5LjkxNTIgVGoKLS0yNTAgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNDkgVEptCi0obm8pIDkuOTYyNiBUagotLTI1MCBUSm0KLShlYXN5KSAxNy43MDM1IFRqCi0tMjUwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShheSkgOS40MDQ2OSBUagotLTI0OSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKGd1YXJhbnRlZSkgMzguNzI0NiBUagotNzIgMTg2LjgyMiBUZAotKHRoYXQpIDE0Ljk0MzkgVGoKLS0yODYgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjg3IFRKbQotKG91dHB1dCkgMjUuNDY0NCBUagotLTI4NiBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVmKSA4LjI5ODg1IFRqCi0yNSBUSm0KLShmZXIpIDExLjA1ODUgVGoKLS0yODcgVEptCi0od2lsbCkgMTUuNTAxOCBUagotLTI4NiBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI4NiBUSm0KLShiaWcpIDEyLjczMjIgVGoKLS0yODcgVEptCi0oZW5vdWdoLikgMzEuODIwNSBUagotLTgzOCBUSm0KLShZKSA3LjE5MyBUagotMTEwIFRKbQotKG91KSA5Ljk2MjYgVGoKLS0yODcgVEptCi0obWF5KSAxNy4xNTU2IFRqCi0tMjg2IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjg3IFRKbQotKGNvdXJzZSkgMjYuMDAyNCBUagotLTI4NiBUSm0KLShtYWspIDE3LjE1NTYgVGoKLTEwIFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yODYgVEptCi0oYXJyYW5nZW1lbnRzKSA1My42Njg1IFRqCi0tMjg3IFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yODYgVEptCi0oeW91cikgMTguMjYxNCBUagotLTI4NyBUSm0KLShjb2RlKSAxOC44MDk0IFRqCi0tMjg2IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yODYgVEptCi0ocmVjb3JkKSAyNS40NDQ1IFRqCi0tMjg3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI4NiBUSm0KLShzaXplKSAxNS40OTE4IFRqCi0tMjg3IFRKbQotKG9mKSA4LjI5ODg1IFRqCi03MiAxNzQuODY3IFRkCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHVuY29tcHJlc3NlZCkgNTYuOTk2IFRqCi0tMjUwIFRKbQotKGRhdGEsKSAxOS4wODgzIFRqCi0tMjUwIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTI1MCBUSm0KLShzdWNoKSAxOC4yNjE0IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0obWVjaGFuaXNtKSA0NS4zNzk2IFRqCi0tMjUwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh5b25kKSAxOS45MjUyIFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShzY29wZSkgMjIuNjg0OCBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNTAgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMTcyLjcxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xNjIuNzQ3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxNTIuOTQ5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzKSAxNTUuNDE3IFRqCi1bMSAwIDAgMSAyMjcuNDE3IDE1Mi45NDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjI3LjQxNyAtMTUyLjk0OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjMwLjU1MyAxNTIuOTQ5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHdpbGwpIDE1LjUwMTggVGoKLS0zMTUgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMzE1IFRKbQotKHdyaXRlKSAyMC40NzMxIFRqCi0tMzE0IFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0zMTUgVEptCi0oYXQpIDcuMTkzIFRqCi0tMzE1IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMzE1IFRKbQotKGJlKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh5b25kKSAxOS45MjUyIFRqCi1bMSAwIDAgMSAzNjIuNDg0IDE1Mi45NDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzYyLjQ4NCAtMTUyLjk0OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzYyLjQ4NCAxNTIuOTQ5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGRlc3RbKSAyOS44ODc4IFRqCi0zOTIuMzcyIDE1MS4yMDYgVGQKLSgqKSA1Ljk3NzU2IFRqCi0zOTguMzQ5IDE1Mi45NDkgVGQKLShkZXN0TGVuXSkgNDcuODIwNSBUagotWzEgMCAwIDEgNDQ2LjE3IDE1Mi45NDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ2LjE3IC0xNTIuOTQ5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDYuMTcgMTUyLjk0OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMzMxIFRKbQotKGUpIDQuNDIzMzkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW4pIDkuNDA0NjkgVGoKLS0zMTUgVEptCi0oaW4pIDcuNzUwOSBUagotLTMxNSBUSm0KLShjYXNlKSAxNy4xNDU2IFRqCi0tMzE0IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzE1IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWYpIDguMjk4ODUgVGoKLTI1IFRKbQotKGZlcikgMTEuMDU4NSBUagotNzIgMTQwLjk5NCBUZAotKG8pIDQuOTgxMyBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlclwwMDNvKSAxOC4yNjE0IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMTQwLjg5NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTMwLjkzMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTE5LjA3NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQb3NzaWJsZSkgMzMuMjE1MyBUagotLTI1MCBUSm0KLShyZXR1cm4pIDIzLjc5MDcgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVlczopIDIzLjI0MjcgVGoKLVsxIDAgMCAxIDcyIDExOC45NzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC02OC4xMjQ4XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuOTUxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC45NTE0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDI3KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDMxIDMxCi0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0LjM4MzYgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAtOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA4LjkxMTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA3Ni40OTc5IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzQ0LjQ2MiAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDIwLjk2IDc0OS4yNDUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUHJvZ3JhbW1pbmcpIDU0Ljc5NDMgVGoKLS0yNTAgVEptCi0od2l0aCkgMTcuNzEzNSBUagotWzEgMCAwIDEgNDk4LjQ0OSA3NDkuMjQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5OC40NDkgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ5OC40NDkgNzQ5LjI0NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShsaWJiemlwMikgNDcuODIwNSBUagotWzEgMCAwIDEgNTQ2LjI2OSA3NDkuMjQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3OC4zMDUgLTIuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDI4MC43OTYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzIuOTc0IC01LjAzNjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0wLjQ5ODFdIGNtCi1xCi1bXSAwIGQKLTAgSgotMC40OTgxIHcKLTAgMC4yNDkxIG0KLTQ3NS40NjUgMC4yNDkxIGwKLVMKLVEKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ3OS4yNTEgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xNS4wMzY1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0yNDguNzAyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDIyNy4xNDggcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAyMjMuNTYyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtNzExLjYzMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgNzExLjYzMSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9DT05GSUdfRVJST1IpIDg5LjY2MzQgVGoKLTk4LjQ4NzkgNjk5LjY3NiBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShsaWJyYXJ5KSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKGhhcykgMTcuOTMyNyBUagotLTQyNiBUSm0KLShiZWVuKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG1pcy1jb21waWxlZCkgNzEuNzMwNyBUagotOTAgNjg3LjcyMSBUZAotKEJaX1BBUkFNX0VSUk9SKSA4My42ODU4IFRqCi05OC40ODc5IDY3NS43NjYgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShkZXN0KSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKE5VTEwpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0ob3IpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oZGVzdExlbikgNDEuODQyOSBUagotLTQyNiBUSm0KLShpcykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShOVUxMKSAyMy45MTAyIFRqCi05OC40ODc5IDY2My44MTEgVGQKLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShzbWFsbCkgMjkuODg3OCBUagotLTQyNiBUSm0KLSghPSkgMTEuOTU1MSBUagotLTQyNiBUSm0KLSgwKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKCYmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHNtYWxsKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKCE9KSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKDEpIDUuOTc3NTYgVGoKLTk4LjQ4NzkgNjUxLjg1NiBUZAotKG9yKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHZlcmJvc2l0eSkgNTMuNzk4IFRqCi0tNDI2IFRKbQotKDwpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oMCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShvcikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh2ZXJib3NpdHkpIDUzLjc5OCBUagotLTQyNiBUSm0KLSg+KSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKDQpIDUuOTc3NTYgVGoKLTkwIDYzOS45IFRkCi0oQlpfTUVNX0VSUk9SKSA3MS43MzA3IFRqCi05OC40ODc5IDYyNy45NDUgVGQKLShpZikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShpbnN1ZmZpY2llbnQpIDcxLjczMDcgVGoKLS00MjYgVEptCi0obWVtb3J5KSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKGlzKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGF2YWlsYWJsZSkgNTMuNzk4IFRqCi05MCA2MTUuOTkgVGQKLShCWl9PVVRCVUZGX0ZVTEwpIDg5LjY2MzQgVGoKLTk4LjQ4NzkgNjA0LjAzNSBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShzaXplKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG9mKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShjb21wcmVzc2VkKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKGRhdGEpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oZXhjZWVkcykgNDEuODQyOSBUagotMzQxLjY1NSA2MDIuMjkxIFRkCi0oKikgNS45Nzc1NiBUagotMzQ3LjYzMyA2MDQuMDM1IFRkCi0oZGVzdExlbikgNDEuODQyOSBUagotOTAgNTkyLjA4IFRkCi0oQlpfREFUQV9FUlJPUikgNzcuNzA4MyBUagotOTguNDg3OSA1ODAuMTI1IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYSkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShkYXRhKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGludGVncml0eSkgNTMuNzk4IFRqCi0tNDI2IFRKbQotKGVycm9yKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKHdhcykgMTcuOTMyNyBUagotLTQyNiBUSm0KLShkZXRlY3RlZCkgNDcuODIwNSBUagotLTQyNiBUSm0KLShpbikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh0aGUpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oY29tcHJlc3NlZCkgNTkuNzc1NiBUagotLTQyNiBUSm0KLShkYXRhKSAyMy45MTAyIFRqCi05MCA1NjguMTY5IFRkCi0oQlpfREFUQV9FUlJPUl9NQUdJQykgMTEzLjU3NCBUagotOTguNDg3OSA1NTYuMjE0IFRkCi0oaWYpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGNvbXByZXNzZWQpIDU5Ljc3NTYgVGoKLS00MjYgVEptCi0oZGF0YSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShkb2Vzbid0KSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKGJlZ2luKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKHdpdGgpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKHJpZ2h0KSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKG1hZ2ljKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKGJ5dGVzKSAyOS44ODc4IFRqCi05MCA1NDQuMjU5IFRkCi0oQlpfVU5FWFBFQ1RFRF9FT0YpIDEwMS42MTkgVGoKLTk4LjQ4NzkgNTMyLjMwNCBUZAotKGlmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShjb21wcmVzc2VkKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKGRhdGEpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oZW5kcykgMjMuOTEwMiBUagotLTQyNiBUSm0KLSh1bmV4cGVjdGVkbHkpIDcxLjczMDcgVGoKLTkwIDUyMC4zNDkgVGQKLShCWl9PSykgMjkuODg3OCBUagotOTguNDg3OSA1MDguMzk0IFRkCi0ob3RoZXJ3aXNlKSA1My43OTggVGoKLVsxIDAgMCAxIDcyIDQ5Mi44NTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00ODIuODg5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NTguMDk5IFRkCi0vRjEyMl8wIDIwLjY1ODUgVGYKLSgzLjYuKSAzNC40NTg0IFRqCi1bMSAwIDAgMSAxMTIuMjAxIDQ1OC4wOTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTEyLjIwMSAtNDU4LjA5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTEyLjIwMSA0NTguMDk5IFRkCi0vRjM5Ml8wIDIwLjY1ODUgVGYKLSh6bGliKSA0OS41ODA0IFRqCi1bMSAwIDAgMSAxNjEuNzgxIDQ1OC4wOTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTYxLjc4MSAtNDU4LjA5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY3LjUyNCA0NTguMDk5IFRkCi0vRjEyMl8wIDIwLjY1ODUgVGYKLShjb21wYXRpYmlsaXR5KSAxMjcuNDIyIFRqCi0tMjc4IFRKbQotKGZ1bmN0aW9ucykgOTIuOTYzMyBUagotWzEgMCAwIDEgNzIgNDUzLjgyM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDQzLjg2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0MzYuMTgxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFkpIDcuMTkzIFRqCi0xMTAgVEptCi0ob3NoaW9rYSkgMzAuOTkzNiBUagotLTYwNCBUSm0KLShUc3VuZW8pIDI5LjMyOTkgVGoKLS02MDQgVEptCi0oaGFzKSAxMy4yODAxIFRqCi0tNjA0IFRKbQotKGNvbnRyaWIpIDI4LjIyNCBUagotMjAgVEptCi0odXRlZCkgMTcuMTU1NiBUagotLTYwNCBUSm0KLShzb21lKSAyMS4wMzEgVGoKLS02MDQgVEptCi0oZnVuY3Rpb25zKSAzNy4wODA4IFRqCi0tNjA0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS02MDQgVEptCi0oZ2kpIDcuNzUwOSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tNjA0IFRKbQotKGJldHRlcikgMjIuNjg0OCBUagotWzEgMCAwIDEgMzU2LjM0NyA0MzYuMTgxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM1Ni4zNDcgLTQzNi4xODFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM1Ni4zNDcgNDM2LjE4MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh6bGliKSAyMy45MTAyIFRqCi1bMSAwIDAgMSAzODAuMjU3IDQzNi4xODFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzgwLjI1NyAtNDM2LjE4MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzg2LjI3NSA0MzYuMTgxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGNvbXBhdGliaWxpdHkpIDUzLjE0MDUgVGoKLTY1IFRKbQotKC4pIDIuNDkwNjUgVGoKLS0xMzcyIFRKbQotKFRoZXNlKSAyMy43OTA3IFRqCi0tNjA0IFRKbQotKGZ1bmN0aW9ucykgMzcuMDgwOCBUagotLTYwNCBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLVsxIDAgMCAxIDcyIDQyNC4yMjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTQyNC4yMjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDQyNC4yMjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6b3BlbikgNTkuNzc1NiBUagotWzEgMCAwIDEgMTMxLjc3NiA0MjQuMjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzMS43NzYgLTQyNC4yMjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzMS43NzYgNDI0LjIyNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAxNDQuMjgzIDQyNC4yMjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQ0LjI4MyAtNDI0LjIyNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQ0LjI4MyA0MjQuMjI2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9ienJlYWQpIDU5Ljc3NTYgVGoKLVsxIDAgMCAxIDIwNC4wNTkgNDI0LjIyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDQuMDU5IC00MjQuMjI2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDQuMDU5IDQyNC4yMjYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMjE2LjU2NiA0MjQuMjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxNi41NjYgLTQyNC4yMjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIxNi41NjYgNDI0LjIyNiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnp3cml0ZSkgNjUuNzUzMiBUagotWzEgMCAwIDEgMjgyLjMyIDQyNC4yMjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjgyLjMyIC00MjQuMjI2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODIuMzIgNDI0LjIyNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAyOTQuODI3IDQyNC4yMjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjk0LjgyNyAtNDI0LjIyNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjk0LjgyNyA0MjQuMjI2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iemZsdXNoKSA2NS43NTMyIFRqCi1bMSAwIDAgMSAzNjAuNTgxIDQyNC4yMjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzYwLjU4MSAtNDI0LjIyNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzYwLjU4MSA0MjQuMjI2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDM3My4wODggNDI0LjIyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNzMuMDg4IC00MjQuMjI2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNzMuMDg4IDQyNC4yMjYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6Y2xvc2UpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDQzOC44NDIgNDI0LjIyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MzguODQyIC00MjQuMjI2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MzguODQyIDQyNC4yMjYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgNDUxLjM0OSA0MjQuMjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ1MS4zNDkgLTQyNC4yMjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ1MS4zNDkgNDI0LjIyNiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnplcnJvcikgNjUuNzUzMiBUagotWzEgMCAwIDEgNTE3LjEwMiA0MjQuMjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUxNy4xMDIgLTQyNC4yMjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUyNS42MTQgNDI0LjIyNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNzIgNDEyLjI3MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDEyLjI3MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDEyLjI3MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpsaWJWZXJzaW9uKSA5NS42NDEgVGoKLVsxIDAgMCAxIDE2Ny42NDEgNDEyLjI3MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjcuNjQxIC00MTIuMjcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjcuNjQxIDQxMi4yNzEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotLTE0MjAgVEptCi0oVGhlcykgMTkuMzY3MyBUagotMSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMzg0IFRKbQotKGZ1bmN0aW9ucykgMzcuMDgwOCBUagotLTM4MyBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0zODMgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMzgzIFRKbQotKFwoeWV0XCkpIDE4LjgwOTQgVGoKLS0zODQgVEptCi0ob2YpIDguMjk4ODUgVGoKLTI1IFRKbQotKFwwMDJjaWFsbHkpIDI3LjY3NjEgVGoKLS0zODMgVEptCi0ocGFydCkgMTUuNDkxOCBUagotLTM4MyBUSm0KLShvZikgOC4yOTg4NSBUagotLTM4MyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zODQgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotLTE0MTkgVEptCi0oSWYpIDYuNjM1MDkgVGoKLS0zODMgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLS0zODQgVEptCi0oYnJlYWssKSAyNC42MTc2IFRqCi0tNDE2IFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTM4MyBUSm0KLShnZXQpIDEyLjE3NDMgVGoKLS0zODQgVEptCi0odG8pIDcuNzUwOSBUagotNzIgNDAwLjMxNiBUZAotKGspIDQuOTgxMyBUagotMTAgVEptCi0oZWVwKSAxMy44MjgxIFRqCi0tMjUwIFRKbQotKGFsbCkgOS45NjI2IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShwaWVjZXMuKSAyNy4zODcyIFRqCi0tNjIwIFRKbQotKE5lKSAxMS42MTY0IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVydGhlbGVzcywpIDM3LjM0OTggVGoKLS0yNTAgVEptCi0oSSkgMy4zMTc1NSBUagotLTI1MCBUSm0KLSh0aGluaykgMjAuNDgzMSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI1MCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0ob3JrKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKG9rLikgMTIuNDUzMyBUagotWzEgMCAwIDEgNzIgMzk4LjE1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTQ4LjgxNjldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggNDcuODIwNyByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDQ0LjIzNDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC0zODguNzk0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCAzODguNzk0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHR5cGVkZWYpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0odm9pZCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShCWkZJTEU7KSA0MS44NDI5IFRqCi05MCAzNjQuODg0IFRkCi0oY29uc3QpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oY2hhcikgMjMuOTEwMiBUagotMTUyLjI4NiAzNjMuMTQgVGQKLSgqKSA1Ljk3NzU2IFRqCi0xNjIuNTA4IDM2NC44ODQgVGQKLShCWjJfYnpsaWJWZXJzaW9uKSA5NS42NDEgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0odm9pZCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLVsxIDAgMCAxIDcyIDM0OS4zNDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzM5LjM3OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzI3LjQyNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShSZXR1cm5zKSAzMC45OTM2IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oc3RyaW5nKSAyMi42OTQ4IFRqCi0tMjUwIFRKbQotKGluZGljYXRpbmcpIDM5Ljg1MDQgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGxpYnJhcnkpIDI2LjU2MDMgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnNpb24uKSAyNi44MzkyIFRqCi1bMSAwIDAgMSA3MiAzMjUuMjY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMzYuODYxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCAzNS44NjU1IHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMzIuMjc4OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTMxNS45MDJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDMxNS45MDIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpGSUxFKSAzNS44NjU0IFRqCi0xMzAuMTA5IDMxNC4xNTkgVGQKLSgqKSA1Ljk3NzU2IFRqCi0xNDAuMzMxIDMxNS45MDIgVGQKLShCWjJfYnpvcGVuKSA1OS43NzU2IFRqCi0tODUyIFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKGNvbnN0KSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKGNoYXIpIDIzLjkxMDIgVGoKLTI4MS4xMDMgMzE0LjE1OSBUZAotKCopIDUuOTc3NTYgVGoKLTI4Ny4wOCAzMTUuOTAyIFRkCi0ocGF0aCwpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oY29uc3QpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oY2hhcikgMjMuOTEwMiBUagotMzgzLjQ5OCAzMTQuMTU5IFRkCi0oKikgNS45Nzc1NiBUagotMzg5LjQ3NiAzMTUuOTAyIFRkCi0obW9kZSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLTkwIDMwMy45NDcgVGQKLShCWkZJTEUpIDM1Ljg2NTQgVGoKLTEzMC4xMDkgMzAyLjIwNCBUZAotKCopIDUuOTc3NTYgVGoKLTE0MC4zMzEgMzAzLjk0NyBUZAotKEJaMl9iemRvcGVuKSA2NS43NTMyIFRqCi0tNDI2IFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotLTM0MDggVEptCi0oZmQsKSAxNy45MzI3IFRqCi0tMTcwNCBUSm0KLShjb25zdCkgMjkuODg3OCBUagotLTQyNiBUSm0KLShjaGFyKSAyMy45MTAyIFRqCi0zNjkuNjI5IDMwMi4yMDQgVGQKLSgqKSA1Ljk3NzU2IFRqCi0zNzUuNjA3IDMwMy45NDcgVGQKLShtb2RlKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKFwpOykgMTEuOTU1MSBUagotWzEgMCAwIDEgNzIgMjg4LjQwNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yNzguNDQzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyNjYuNDg4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKE9wZW5zKSAyNS40NTQ0IFRqCi0tMjQzIFRKbQotKGEpIDQuNDIzMzkgVGoKLVsxIDAgMCAxIDEwNi43MTMgMjY2LjQ4OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMDYuNzEzIC0yNjYuNDg4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMDYuNzEzIDI2Ni40ODggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLmJ6MikgMjMuOTEwMiBUagotWzEgMCAwIDEgMTMwLjYyNCAyNjYuNDg4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzMC42MjQgLTI2Ni40ODhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzMy4wNDEgMjY2LjQ4OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMDAybGUpIDEyLjczMjIgVGoKLS0yNDMgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMjQyIFRKbQotKHJlYWRpbmcpIDI5Ljg3NzggVGoKLS0yNDMgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yNDMgVEptCi0od3JpdGluZywpIDMxLjI3MjYgVGoKLS0yNDQgVEptCi0odXNpbmcpIDIxLjU4OSBUagotLTI0MyBUSm0KLShlaSkgNy4xOTMgVGoKLTEgVEptCi0odGhlcikgMTUuNDkxOCBUagotLTI0MyBUSm0KLShpdHMpIDkuNDE0NjYgVGoKLS0yNDMgVEptCi0obmFtZSkgMjEuNTc5IFRqCi0tMjQyIFRKbQotKG8pIDQuOTgxMyBUagotLTEgVEptCi0ocikgMy4zMTc1NSBUagotLTI0MiBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjQzIFRKbQotKHByZS1lKSAyMC40NjMyIFRqCi0xNSBUSm0KLSh4aXN0aW5nKSAyNy4xMjgyIFRqCi0tMjQzIFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI0MiBUSm0KLShkZXNjcmlwdG9yKSAzOS44NDA0IFRqCi01NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0tNjE1IFRKbQotKEFuYWxvZ291cykgNDMuMTY3OSBUagotLTI0MyBUSm0KLSh0bykgNy43NTA5IFRqCi1bMSAwIDAgMSA1MTAuMTEyIDI2Ni40ODhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTEwLjExMiAtMjY2LjQ4OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTEwLjExMiAyNjYuNDg4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGZvcGVuKSAyOS44ODc4IFRqCi1bMSAwIDAgMSA1NDAgMjY2LjQ4OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01NDAgLTI2Ni40ODhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDI1NC41MzIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDg4Ljg3NjcgMjU0LjUzMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04OC44NzY3IC0yNTQuNTMyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04OC44NzY3IDI1NC41MzIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZmRvcGVuKSAzNS44NjU0IFRqCi1bMSAwIDAgMSAxMjQuNzQyIDI1NC41MzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTI0Ljc0MiAtMjU0LjUzMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTI0Ljc0MiAyNTQuNTMyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC4pIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDI1Mi45OThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zNi44NjE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDM1Ljg2NTUgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzMi4yNzg5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtMjQzLjYzM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgMjQzLjYzMyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShpbnQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oQloyX2J6cmVhZCkgNTkuNzc1NiBUagotLTg1MiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShCWkZJTEUpIDM1Ljg2NTQgVGoKLTIyNi41MjggMjQxLjg5IFRkCi0oKikgNS45Nzc1NiBUagotMjM2Ljc0OSAyNDMuNjMzIFRkCi0oYiwpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odm9pZCkgMjMuOTEwMiBUagotMjc2Ljg1OSAyNDEuODkgVGQKLSgqKSA1Ljk3NzU2IFRqCi0yODcuMDggMjQzLjYzMyBUZAotKGJ1ZiwpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGxlbikgMTcuOTMyNyBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLTkwIDIzMS42NzggVGQKLShpbnQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oQloyX2J6d3JpdGUpIDY1Ljc1MzIgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oQlpGSUxFKSAzNS44NjU0IFRqCi0yMjguMjYxIDIyOS45MzUgVGQKLSgqKSA1Ljk3NzU2IFRqCi0yMzguNDgzIDIzMS42NzggVGQKLShiLCkgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh2b2lkKSAyMy45MTAyIFRqCi0yNzguNTkyIDIyOS45MzUgVGQKLSgqKSA1Ljk3NzU2IFRqCi0yODguODE0IDIzMS42NzggVGQKLShidWYsKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKGludCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShsZW4pIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi1bMSAwIDAgMSA3MiAyMTYuMTM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIwNi4xNzRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE5NC4yMTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oUmVhZHMvd3JpdGVzKSA1MS40NjY4IFRqCi0tMjUwIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNTAgVEptCi0oZnJvbS90bykgMjkuODg3OCBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKHByZSkgMTIuNzIyMiBUagotMjUgVEptCi0odmlvdXNseSkgMjkuMzM5OSBUagotLTI1MCBUSm0KLShvcGVuZWQpIDI4Ljc3MiBUagotWzEgMCAwIDEgMjU5LjkwMyAxOTQuMjE5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI1OS45MDMgLTE5NC4yMTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI1OS45MDMgMTk0LjIxOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWkZJTEUpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDI5NS43NjkgMTk0LjIxOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yOTUuNzY5IC0xOTQuMjE5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTUuNzY5IDE5NC4yMTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotLTUwMCBUSm0KLShBbmFsb2dvdXMpIDQzLjE2NzkgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotWzEgMCAwIDEgMzU5LjE0MSAxOTQuMjE5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM1OS4xNDEgLTE5NC4yMTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM1OS4xNDEgMTk0LjIxOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmcmVhZCkgMjkuODg3OCBUagotWzEgMCAwIDEgMzg5LjAyOSAxOTQuMjE5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM4OS4wMjkgLTE5NC4yMTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM5MS41MTkgMTk0LjIxOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNDA4LjM5NiAxOTQuMjE5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQwOC4zOTYgLTE5NC4yMTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQwOC4zOTYgMTk0LjIxOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmd3JpdGUpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDQ0NC4yNjEgMTk0LjIxOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NDQuMjYxIC0xOTQuMjE5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NDQuMjYxIDE5NC4yMTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMTkyLjA2Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTM2Ljg2MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMzUuODY1NSByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMyLjI3ODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC0xODIuNjk3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCAxODIuNjk3IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGludCkgMTcuOTMyNyBUagotLTg1MiBUSm0KLShCWjJfYnpmbHVzaCkgNjUuNzUzMiBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShCWkZJTEUpIDM1Ljg2NTQgVGoKLTIzMi41MDUgMTgwLjk1NCBUZAotKCopIDUuOTc3NTYgVGoKLTI0Mi43MjcgMTgyLjY5NyBUZAotKGIpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi05MCAxNzAuNzQyIFRkCi0odm9pZCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShCWjJfYnpjbG9zZSkgNjUuNzUzMiBUagotLTQyNiBUSm0KLShcKCkgNS45Nzc1NiBUagotLTQyNiBUSm0KLShCWkZJTEUpIDM1Ljg2NTQgVGoKLTIzNC4yMzkgMTY4Ljk5OCBUZAotKCopIDUuOTc3NTYgVGoKLTI0NC40NiAxNzAuNzQyIFRkCi0oYikgNS45Nzc1NiBUagotLTQyNiBUSm0KLShcKTspIDExLjk1NTEgVGoKLVsxIDAgMCAxIDcyIDE1NS4yXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTE0NS4yMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDEzMy4yODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oRmx1c2hlcy9jbG9zZXMpIDU3LjU2MzkgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotWzEgMCAwIDEgMTM4Ljk2OCAxMzMuMjgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzOC45NjggLTEzMy4yODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEzOC45NjggMTMzLjI4MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWkZJTEUpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDE3NC44MzMgMTMzLjI4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzQuODMzIC0xMzMuMjgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzQuODMzIDEzMy4yODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgMTc5LjgxNSAxMzMuMjgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3OS44MTUgLTEzMy4yODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3OS44MTUgMTMzLjI4MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpmbHVzaCkgNjUuNzUzMiBUagotWzEgMCAwIDEgMjQ1LjU2OCAxMzMuMjgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0NS41NjggLTEzMy4yODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI0OC4wNTkgMTMzLjI4MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShkb2VzbicpIDI2LjU2MDMgVGoKLTE4IFRKbQotKHQpIDIuNzY5NiBUagotLTI1MCBUSm0KLShhY3R1YWxseSkgMzEuNTQxNiBUagotLTI1MCBUSm0KLShkbykgOS45NjI2IFRqCi0tMjUwIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh5dGhpbmcuKSAyNy45NTUxIFRqCi0tNjIwIFRKbQotKEFuYWxvZ291cykgNDMuMTY3OSBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi1bMSAwIDAgMSA0MjUuNDcyIDEzMy4yODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDI1LjQ3MiAtMTMzLjI4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDI1LjQ3MiAxMzMuMjgyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGZmbHVzaCkgMzUuODY1NCBUagotWzEgMCAwIDEgNDYxLjMzOCAxMzMuMjgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2MS4zMzggLTEzMy4yODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ2My44MjggMTMzLjI4MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNDgwLjcwNSAxMzMuMjgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ4MC43MDUgLTEzMy4yODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ4MC43MDUgMTMzLjI4MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmY2xvc2UpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDUxNi41NyAxMzMuMjgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUxNi41NyAtMTMzLjI4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTE2LjU3IDEzMy4yODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMTMxLjEyNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTI0LjkwNjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gU0MKLTAgMCA0NjggMjMuOTEwMyByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDIwLjMyMzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC0xMjEuNzYxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCAxMjEuNzYxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGNvbnN0KSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKGNoYXIpIDIzLjkxMDIgVGoKLTE1Mi4yODYgMTIwLjAxNyBUZAotKCopIDUuOTc3NTYgVGoKLTE2Mi41MDggMTIxLjc2MSBUZAotKEJaMl9iemVycm9yKSA2NS43NTMyIFRqCi0tNDI2IFRKbQotKFwoKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKEJaRklMRSkgMzUuODY1NCBUagotMjgyLjgzNiAxMjAuMDE3IFRkCi0oKikgNS45Nzc1NiBUagotMjg4LjgxNCAxMjEuNzYxIFRkCi0oYiwpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0zMjcuMTkgMTIwLjAxNyBUZAotKCopIDUuOTc3NTYgVGoKLTMzMy4xNjcgMTIxLjc2MSBUZAotKGVycm51bSkgMzUuODY1NCBUagotLTQyNiBUSm0KLShcKSkgNS45Nzc1NiBUagotWzEgMCAwIDEgNzIgMTA2LjIxOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC05Ni4yNTYzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA4NC4zMDExIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFJldHVybnMpIDMwLjk5MzYgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShzdHJpbmcpIDIyLjY5NDggVGoKLS0yNTAgVEptCi0oZGVzY3JpYmluZykgNDEuNTA0MiBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0obW9yZSkgMjAuNDczMSBUagotLTI1MCBUSm0KLShyZWNlbnQpIDI0LjMzODYgVGoKLS0yNTAgVEptCi0oZXJyb3IpIDE5LjM1NzMgVGoKLS0yNTAgVEptCi0oc3RhdHVzKSAyMi42OTQ4IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi1bMSAwIDAgMSAzMDMuODU4IDg0LjMwMTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzAzLjg1OCAtODQuMzAxMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzAzLjg1OCA4NC4zMDExIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGIpIDUuOTc3NTYgVGoKLVsxIDAgMCAxIDMwOS44MzUgODQuMzAxMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDkuODM1IC04NC4zMDExXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMDkuODM1IDg0LjMwMTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTI1MCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI1MCBUSm0KLShhbHNvKSAxNi4wNDk3IFRqCi0tMjUwIFRKbQotKHNldHMpIDE0Ljk0MzkgVGoKLVsxIDAgMCAxIDM2Ny42NjggODQuMzAxMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNjcuNjY4IC04NC4zMDExXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNjcuNjY4IDgyLjU1NzYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oKikgNS45Nzc1NiBUagotMzczLjY0NSA4NC4zMDExIFRkCi0oZXJybnVtKSAzNS44NjU0IFRqCi1bMSAwIDAgMSA0MDkuNTExIDg0LjMwMTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDA5LjUxMSAtODQuMzAxMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDEyLjAwMSA4NC4zMDExIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oaXRzKSA5LjQxNDY2IFRqCi0tMjUwIFRKbQotKG51bWVyaWNhbCkgMzkuODQwNCBUagotLTI1MCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFsdWUuKSAxOS4wODgzIFRqCi1bMSAwIDAgMSA3MiA4Mi4xNDQzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMjEuMzI5OF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNC4zODM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDAuNTcyNiAtNi43NTQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5NS43MzQgLTUwLjk1MTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNi4zMDcgNTAuOTUxNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyOCkgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTUuMTYxIDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xNS4wMzY1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAzMiAzMgotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgLTguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNzYuNDk3OSAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0Mi41NjkgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxOS4wNjcgNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm9ncmFtbWluZykgNTQuNzk0MyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSA0OTYuNTU2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjU1NiAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDk2LjU1NiA3NDkuMjQ1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGxpYmJ6aXAyKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA1NDQuMzc2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc4LjMwNSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTUuMDM2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01NDAgLTc0MS41NTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDcwNC45MyBUZAotL0YxMjJfMCAyMC42NTg1IFRmCi0oMy43LikgMzQuNDU4NCBUagotLTI3OCBUSm0KLShVc2luZykgNTcuMzg5MyBUagotLTI3OCBUSm0KLSh0aGUpIDMwLjk4NzcgVGoKLS0yNzggVEptCi0obGlicmFyKSA1MS42NjY5IFRqCi0tMTAgVEptCi0oeSkgMTEuNDg2MSBUagotLTI3OCBUSm0KLShpbikgMTguMzY1NCBUagotLTI3OCBUSm0KLShhKSAxMS40ODYxIFRqCi1bMSAwIDAgMSAzMjIuNTAxIDcwNC45M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMjIuNTAxIC03MDQuOTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMyMi41MDEgNzA0LjkzIFRkCi0vRjM5Ml8wIDIwLjY1ODUgVGYKLShzdGRpbykgNjEuOTc1NSBUagotWzEgMCAwIDEgMzg0LjQ3NyA3MDQuOTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzg0LjQ3NyAtNzA0LjkzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zODQuNDc3IDcwNC45MyBUZAotL0YxMjJfMCAyMC42NTg1IFRmCi0oLWZyZWUpIDQ0Ljc2NyBUagotNzIgNjgwLjEzOSBUZAotKGVuKSAyNC4xMDg1IFRqCi00MCBUSm0KLSh2aXIpIDI1LjI2NTMgVGoKLTIwIFRKbQotKG9ubWVudCkgNzQuNTk3OCBUagotWzEgMCAwIDEgNzIgNjc5Ljg4MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuODk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02NjkuOTgzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2NDkuNTgzIFRkCi0vRjEyMl8wIDE3LjIxNTQgVGYKLSgzLjcuMS4pIDQzLjA3MjkgVGoKLS0yNzggVEptCi0oR2V0dGluZykgNjAuMjUzOSBUagotLTI3OCBUSm0KLShyaWQpIDIyLjAwMTMgVGoKLS0yNzggVEptCi0ob2YpIDE2LjI1MTMgVGoKLVsxIDAgMCAxIDIzMi43MjEgNjQ5LjU4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzIuNzIxIC02NDkuNTgzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzIuNzIxIDY0OS41ODMgVGQKLS9GMzkyXzAgMTcuMjE1NCBUZgotKHN0ZGlvKSA1MS42NDYyIFRqCi1bMSAwIDAgMSAyODQuMzY3IDY0OS41ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjEyLjM2NyAtMy44MzAzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44OThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYzNS44NTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYyNy43MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJbikgOC4yOTg4NSBUagotLTMxOSBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMzE5IFRKbQotKGRlZXBseSkgMjYuNTYwMyBUagotLTMxOSBUSm0KLShlbWJlZGRlZCkgNDAuOTQ2MyBUagotLTMxOSBUSm0KLShhcHBsaWNhdGlvbiwpIDQ2Ljc2NDQgVGoKLS0zMzYgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMzE5IFRKbQotKG1pZ2h0KSAyMy4yNTI3IFRqCi0tMzE5IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhbnQpIDEyLjE3NDMgVGoKLS0zMTkgVEptCi0odG8pIDcuNzUwOSBUagotLTMxOSBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0zMTkgVEptCi0oanVzdCkgMTQuMzk2IFRqCi0tMzE5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMxOSBUSm0KLShtZW1vcnktdG8tbWVtb3J5KSA4MC43OTY3IFRqCi0tMzE5IFRKbQotKGZ1bmN0aW9ucy4pIDM5LjU3MTQgVGoKLS0xMDM1IFRKbQotKFkpIDcuMTkzIFRqCi0xMTAgVEptCi0ob3UpIDkuOTYyNiBUagotLTMxOSBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0zMTkgVEptCi0oZG8pIDkuOTYyNiBUagotLTMxOSBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLTcyIDYxNS43NzUgVGQKLShjb24pIDE0LjM4NiBUagotNDAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbmllbnRseSkgMzIuMDk5NSBUagotLTMyNyBUSm0KLShieSkgOS45NjI2IFRqCi0tMzI3IFRKbQotKGNvbXBpbGluZykgNDAuNDA4MyBUagotLTMyNyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMjcgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTMyNyBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMzI4IFRKbQotKHByZXByb2NlcykgMzguNzI0NiBUagotMSBUSm0KLShzb3IpIDEyLjE3NDMgVGoKLS0zMjggVEptCi0oc3ltYm9sKSAyOS4zMzk5IFRqCi1bMSAwIDAgMSAzMzYuMDQ2IDYxNS43NzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzM2LjA0NiAtNjE1Ljc3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzM2LjA0NiA2MTUuNzc1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX05PX1NURElPKSA2NS43NTMyIFRqCi1bMSAwIDAgMSA0MDEuNzk5IDYxNS43NzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDAxLjc5OSAtNjE1Ljc3NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDA1LjA1NyA2MTUuNzc1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGRlXDAwMm5lZC4pIDMxLjgyMDUgVGoKLS0xMDgzIFRKbQotKERvaW5nKSAyNC45MDY1IFRqCi0tMzI3IFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTMyNyBUSm0KLShnaSkgNy43NTA5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVzKSA4LjI5ODg1IFRqCi0tMzI3IFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTMyNyBUSm0KLShhKSA0LjQyMzM5IFRqCi03MiA2MDMuODE5IFRkCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTI1MCBUSm0KLShjb250YWluaW5nKSA0Mi4wNjIxIFRqCi0tMjUwIFRKbQotKG9ubHkpIDE3LjcxMzUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGZvbGxvKSAxOC44MTk0IFRqCi0yNSBUSm0KLSh3aW5nKSAxOS45MjUyIFRqCi0tMjUwIFRKbQotKGVpZ2h0KSAxOS45MjUyIFRqCi0tMjUwIFRKbQotKGZ1bmN0aW9uczopIDM5Ljg1MDQgVGoKLVsxIDAgMCAxIDcyIDYwMS42NjJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTkxLjc2NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTgxLjk2NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzc0luaXQpIDEwNy41OTYgVGoKLVsxIDAgMCAxIDE3OS41OTYgNTgxLjk2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzkuNTk2IC01ODEuOTY2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzkuNTk2IDU4MS45NjYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMTk5LjA3OSA1ODEuOTY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5OS4wNzkgLTU4MS45NjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5OS4wNzkgNTgxLjk2NiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWjJfYnpDb21wcmVzcykgODMuNjg1OCBUagotWzEgMCAwIDEgMjgyLjc2NSA1ODEuOTY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI4Mi43NjUgLTU4MS45NjZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI4Mi43NjUgNTgxLjk2NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAzMDIuMjQ3IDU4MS45NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzAyLjI0NyAtNTgxLjk2Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzAyLjI0NyA1ODEuOTY2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekNvbXByZXNzRW5kKSAxMDEuNjE5IFRqCi1bMSAwIDAgMSA0MDMuODY2IDU4MS45NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxNC4wOTE1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDE3Ljk1OCAtNTgxLjk2Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE3Ljk1OCA1ODEuOTY2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekRlY29tcHJlc3NJbml0KSAxMTkuNTUxIFRqCi1bMSAwIDAgMSA1MzcuNTA5IDU4MS45NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTM3LjUwOSAtNTgxLjk2Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM3LjUwOSA1ODEuOTY2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDU3MC4wMTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU3MC4wMTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU3MC4wMTEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzcykgOTUuNjQxIFRqCi1bMSAwIDAgMSAxNjcuNjQxIDU3MC4wMTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY3LjY0MSAtNTcwLjAxMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTY3LjY0MSA1NzAuMDExIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDE3Mi4xNDQgNTcwLjAxMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNzIuMTQ0IC01NzAuMDExXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNzIuMTQ0IDU3MC4wMTEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQloyX2J6RGVjb21wcmVzc0VuZCkgMTEzLjU3NCBUagotWzEgMCAwIDEgMjg1LjcxOSA1NzAuMDExXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjg3LjYxMSAtNTcwLjAxMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjg3LjYxMSA1NzAuMDExIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzcykgMTQzLjQ2MSBUagotWzEgMCAwIDEgNDMxLjA3MyA1NzAuMDExXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQzMS4wNzMgLTU3MC4wMTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQzMS4wNzMgNTcwLjAxMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA0MzUuNTc3IDU3MC4wMTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDM1LjU3NyAtNTcwLjAxMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDM1LjU3NyA1NzAuMDExIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzKSAxNTUuNDE3IFRqCi1bMSAwIDAgMSA1OTAuOTk0IDU3MC4wMTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTE4Ljk5NCAtMS41MzQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44OTgxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01NTguNTc5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1NDguMTU4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFdoZW4pIDIzLjc5MDcgVGoKLS0yNTAgVEptCi0oY29tcGlsZWQpIDM3LjA4MDggVGoKLS0yNTAgVEptCi0obGlrKSAxMC41MjA1IFRqCi0xMCBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKHRoaXMsKSAxNi44ODY2IFRqCi0tMjUwIFRKbQotKGFsbCkgOS45NjI2IFRqCi0tMjUwIFRKbQotKGZ1bmN0aW9ucykgMzcuMDgwOCBUagotLTI1MCBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMjUwIFRKbQotKGlnbm9yZSkgMjUuNDU0NCBUagotWzEgMCAwIDEgMjcyLjUyNiA1NDguMTU4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3Mi41MjYgLTU0OC4xNThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3Mi41MjYgNTQ4LjE1OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh2ZXJib3NpdHkpIDUzLjc5OCBUagotWzEgMCAwIDEgMzI2LjMyNCA1NDguMTU4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMyNi4zMjQgLTU0OC4xNThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMyOC44MTUgNTQ4LjE1OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShzZXR0aW5ncy4pIDMyLjkzNjQgVGoKLVsxIDAgMCAxIDcyIDU0Ni4wMDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTM2LjEwM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTE3LjYwMSBUZAotL0YxMjJfMCAxNy4yMTU0IFRmCi0oMy43LjIuKSA0My4wNzI5IFRqCi0tMjc4IFRKbQotKENyaXRpY2FsKSA1OC4zNjAyIFRqCi0tMjc4IFRKbQotKGVycikgMjIuOTY1MyBUagotMjAgVEptCi0ob3IpIDE3LjIxNTQgVGoKLS0yNzggVEptCi0oaGFuZGxpbmcpIDcxLjczNjYgVGoKLVsxIDAgMCAxIDcyIDUxMy43NzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTAzLjg3M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDk1Ljc0OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShsaWJiemlwMikgNDcuODIwNSBUagotWzEgMCAwIDEgMTE5LjgyMSA0OTUuNzQ4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS44MjEgLTQ5NS43NDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEyNC41MjkgNDk1Ljc0OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShjb250YWlucykgMzMuMjA1MyBUagotLTQ3MyBUSm0KLShhKSA0LjQyMzM5IFRqCi0tNDcyIFRKbQotKG51bWJlcikgMzAuNDM1NyBUagotLTQ3MyBUSm0KLShvZikgOC4yOTg4NSBUagotLTQ3MiBUSm0KLShpbnRlcm5hbCkgMzAuNDM1NyBUagotLTQ3MyBUSm0KLShhc3NlcnRpb24pIDM1LjQxNyBUagotLTQ3MiBUSm0KLShjaGVja3MpIDI3LjEwODIgVGoKLS00NzMgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS00NzIgVEptCi0oc2hvdWxkLCkgMjkuMDYwOSBUagotLTUyOSBUSm0KLShuZWVkbGVzcykgMzMuNzUzMyBUagotLTQ3MiBUSm0KLSh0bykgNy43NTA5IFRqCi0tNDczIFRKbQotKHNheSkgMTMuMjgwMSBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTUyOCBUSm0KLShuZSkgOS40MDQ2OSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcikgNy43NDA5NCBUagotLTQ3MyBUSm0KLShiZSkgOS40MDQ2OSBUagotLTQ3MiBUSm0KLShhY3RpKSAxNC4zODYgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYXRlZC4pIDE5LjA4ODMgVGoKLTcyIDQ4My43OTMgVGQKLShOZSkgMTEuNjE2NCBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnRoZWxlc3MsKSAzNy4zNDk4IFRqCi0tNTMzIFRKbQotKGlmKSA2LjA4NzE1IFRqCi0tNDc2IFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tNDc2IFRKbQotKGFzc2VydGlvbikgMzUuNDE3IFRqCi0tNDc2IFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotLTQ3NiBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhaWwsKSAxMi40NTMzIFRqCi0tNTMyIFRKbQotKGJlaGEpIDE4LjgwOTQgVGoKLTIwIFRKbQotKHZpb3VyKSAyMS4wMzEgVGoKLS00NzYgVEptCi0oZGVwZW5kcykgMzIuNjQ3NCBUagotLTQ3NiBUSm0KLShvbikgOS45NjI2IFRqCi0tNDc2IFRKbQotKHdoZXRoZXIpIDMyLjA4OTUgVGoKLS00NzYgVEptCi0ob3IpIDguMjk4ODUgVGoKLS00NzcgVEptCi0obm90KSAxMi43MzIyIFRqCi0tNDc2IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTQ3NiBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tNDc2IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhcykgOC4yOTg4NSBUagotLTQ3NiBUSm0KLShjb21waWxlZCkgMzcuMDgwOCBUagotLTQ3NiBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSA3MiA0NzEuODM4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00NzEuODM4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NzEuODM4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX05PX1NURElPKSA2NS43NTMyIFRqCi1bMSAwIDAgMSAxMzcuNzUzIDQ3MS44MzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTM3Ljc1MyAtNDcxLjgzOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQwLjI0NCA0NzEuODM4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHNldC4pIDEzLjU1OTEgVGoKLVsxIDAgMCAxIDcyIDQ3MC41MjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDYwLjYzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NDkuOTg1IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEYpIDUuNTM5MjEgVGoKLTE1IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0obm9ybWFsKSAyOC4yMjQgVGoKLS0yNTAgVEptCi0oY29tcGlsZSwpIDM0LjU5MDEgVGoKLS0yNTAgVEptCi0oYW4pIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0oYXNzZXJ0aW9uKSAzNS40MTcgVGoKLS0yNTAgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYWlsdXJlKSAyMi42ODQ4IFRqCi0tMjUwIFRKbQotKHlpZWxkcykgMjMuODAwNyBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0obWVzc2FnZTopIDM2LjUyMjkgVGoKLVsxIDAgMCAxIDcyIDQ0Ny44MjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDM3LjkzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0MjguMTMxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGJ6aXAyL2xpYmJ6aXAyOikgNjAuMzMzNSBUagotLTMxMCBUSm0KLShpbnRlcm5hbCkgMzAuNDM1NyBUagotLTI1MCBUSm0KLShlcnJvcikgMTkuMzU3MyBUagotLTI1MCBUSm0KLShudW1iZXIpIDMwLjQzNTcgVGoKLS0yNTAgVEptCi0oTi4pIDkuNjgzNjUgVGoKLVsxIDAgMCAxIDcyIDQyNS45NzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDE2LjA3N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDA2LjI3OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGlzKSAxNy43MTM1IFRqCi0tMzMyIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzMxIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zMzIgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZykgOS45NjI2IFRqCi0tMzMyIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0zMzEgVEptCi0oYnppcDIvbGliYnppcDIsKSA2MC4wNTQ2IFRqCi0tMzUyIFRKbQotKDEuMC41KSAxOS45MjUyIFRqCi0tMzMyIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzMyIFRKbQotKDEwKSA5Ljk2MjYgVGoKLS0zMzIgVEptCi0oRGVjZW1iZXIpIDQwLjkzNjMgVGoKLS0zMzEgVEptCi0oMjAwNy4pIDIyLjQxNTkgVGoKLS01NTUgVEptCi0oUGxlYXNlKSAyNS40NTQ0IFRqCi0tMzMyIFRKbQotKHJlcG9ydCkgMjMuNzkwNyBUagotLTMzMiBUSm0KLShpdCkgNS41MzkyMSBUagotLTMzMSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzMyIFRKbQotKG1lKSAxMi4xNzQzIFRqCi0tMzMyIFRKbQotKGF0OikgOS45NjI2IFRqCi0tNDczIFRKbQotKGpzZSkgMTEuMDY4NCBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFyZEBiemlwLm9yKSA0OS44NDI5IFRqCi0xOCBUSm0KLShnLikgNy40NzE5NSBUagotLTExMTAgVEptCi0oSWYpIDYuNjM1MDkgVGoKLS0zMzIgVEptCi0odGhpcykgMTQuMzk2IFRqCi03MiAzOTQuMzIzIFRkCi0oaGFwcGVuZWQpIDM4LjE3NjcgVGoKLS0yOTcgVEptCi0od2hlbikgMjEuNTc5IFRqCi0tMjk4IFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI5NyBUSm0KLSh3ZXJlKSAxOS4zNTczIFRqCi0tMjk3IFRKbQotKHVzaW5nKSAyMS41ODkgVGoKLS0yOTcgVEptCi0oc29tZSkgMjEuMDMxIFRqCi0tMjk4IFRKbQotKHByb2dyYW0pIDMzLjc1MzMgVGoKLS0yOTcgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0yOTcgVEptCi0odXNlcykgMTcuMTU1NiBUagotLTI5NyBUSm0KLShsaWJiemlwMikgMzIuNjU3NCBUagotLTI5OCBUSm0KLShhcykgOC4yOTg4NSBUagotLTI5NyBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjk3IFRKbQotKGNvbXBvbmVudCwpIDQ2Ljc2NDQgVGoKLS0zMDkgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjk4IFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotLTI5NyBUSm0KLShhbHNvKSAxNi4wNDk3IFRqCi0tMjk3IFRKbQotKHJlcG9ydCkgMjMuNzkwNyBUagotLTI5NyBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yOTggVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZykgOS45NjI2IFRqCi03MiAzODIuMzY4IFRkCi0odG8pIDcuNzUwOSBUagotLTI2NCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjQgVEptCi0oYXV0aG9yXChzXCkpIDM1Ljk2NSBUagotLTI2NCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI2NCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjY0IFRKbQotKHByb2dyYW0uKSAzNi4yNDM5IFRqCi0tNzAzIFRKbQotKFBsZWFzZSkgMjUuNDU0NCBUagotLTI2NCBUSm0KLShtYWspIDE3LjE1NTYgVGoKLTEwIFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yNjQgVEptCi0oYW4pIDkuNDA0NjkgVGoKLS0yNjQgVEptCi0oZWYpIDcuNzQwOTQgVGoKLTI1IFRKbQotKGZvcnQpIDE0LjM4NiBUagotLTI2NCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjY0IFRKbQotKHJlcG9ydCkgMjMuNzkwNyBUagotLTI2MyBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNjQgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZzspIDEyLjczMjIgVGoKLS0yNzEgVEptCi0odGltZWx5KSAyNS40NjQ0IFRqCi0tMjY0IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjY0IFRKbQotKGFjY3VyYXRlKSAzMy4xODU0IFRqCi0tMjY0IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWcpIDkuOTYyNiBUagotLTI2NCBUSm0KLShyZXBvcnRzKSAyNy42NjYxIFRqCi0tMjY0IFRKbQotKGUpIDQuNDIzMzkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZW50dWFsbHkpIDMyLjA5OTUgVGoKLTcyIDM3MC40MTMgVGQKLShsZWFkKSAxNi41OTc3IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oaGlnaGVyKSAyNS40NTQ0IFRqCi0tMjUwIFRKbQotKHF1YWxpdHkpIDI3LjY3NjEgVGoKLS0yNTAgVEptCi0oc29mdHcpIDIyLjEzNjkgVGoKLTEwIFRKbQotKGFyZS4pIDE0LjY1NSBUagotLTYyMCBUSm0KLShUaGFua3MuKSAzMS44MjA1IFRqCi0tNjIwIFRKbQotKEp1bGlhbikgMjMuODAwNyBUagotLTI1MCBUSm0KLShTZSkgOS45NjI2IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXJkLCkgMTUuMjEyOSBUagotLTI1MCBUSm0KLSgxMCkgOS45NjI2IFRqCi0tMjUwIFRKbQotKERlY2VtYmVyKSA0MC45MzYzIFRqCi0tMjUwIFRKbQotKDIwMDcuKSAyMi40MTU5IFRqCi1bMSAwIDAgMSA3MiAzNjguMjU2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzQ4LjU1N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzM4Ljc1OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh3aGVyZSkgMjQuMzM4NiBUagotWzEgMCAwIDEgOTguODMxMiAzMzguNzU4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTk4LjgzMTIgLTMzOC43NThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTk4LjgzMTIgMzM4Ljc1OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShOKSA1Ljk3NzU2IFRqCi1bMSAwIDAgMSAxMDQuODA5IDMzOC43NThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTA0LjgwOSAtMzM4Ljc1OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA3LjMwMiAzMzguNzU4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKHNvbWUpIDIxLjAzMSBUagotLTI1MCBUSm0KLShlcnJvcikgMTkuMzU3MyBUagotLTI1MSBUSm0KLShjb2RlKSAxOC44MDk0IFRqCi0tMjUwIFRKbQotKG51bWJlcikgMzAuNDM1NyBUagotNTUgVEptCi0oLikgMi40OTA2NSBUagotLTYyMSBUSm0KLShJZikgNi42MzUwOSBUagotWzEgMCAwIDEgMjMwLjgxIDMzOC43NThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjMwLjgxIC0zMzguNzU4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzAuODEgMzM4Ljc1OCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShOKSA1Ljk3NzU2IFRqCi0tNjAwIFRKbQotKD09KSAxMS45NTUxIFRqCi0tNjAwIFRKbQotKDEwMDcpIDIzLjkxMDIgVGoKLVsxIDAgMCAxIDI4NC42MDggMzM4Ljc1OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yODQuNjA4IC0zMzguNzU4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODQuNjA4IDMzOC43NTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTI1MCBUSm0KLShpdCkgNS41MzkyMSBUagotLTI1MCBUSm0KLShhbHNvKSAxNi4wNDk3IFRqCi0tMjUxIFRKbQotKHByaW50cykgMjIuNjk0OCBUagotLTI1MCBUSm0KLShzb21lKSAyMS4wMzEgVGoKLS0yNTAgVEptCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeHRyYSkgMTUuNDkxOCBUagotLTI1MCBUSm0KLSh0ZSkgNy4xOTMgVGoKLTE1IFRKbQotKHh0KSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oYWR2aXNpbmcpIDMzLjc2MzMgVGoKLS0yNTEgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHJlYWRlcikgMjQuODg2NiBUagotLTI1MCBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKHVucmVsaWFibGUpIDM5Ljg0MDQgVGoKLTcyIDMyNi44MDMgVGQKLShtZW1vcnkpIDMzLjIwNTMgVGoKLS00MjUgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS00MjQgVEptCi0ob2Z0ZW4pIDIwLjQ3MzEgVGoKLS00MjUgVEptCi0oYXNzb2NpYXRlZCkgNDAuOTQ2MyBUagotLTQyNSBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tNDI0IFRKbQotKGludGVybmFsKSAzMC40MzU3IFRqCi0tNDI1IFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi0tNDI0IFRKbQotKDEwMDcuKSAyMi40MTU5IFRqCi0tODM0IFRKbQotKFwoVGhpcykgMjEuMDMxIFRqCi0tNDI1IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tNDI1IFRKbQotKGEpIDQuNDIzMzkgVGoKLS00MjQgVEptCi0oZnJlcXVlbnRseS1vYnNlcnYpIDcwLjgyNDEgVGoKLTE1IFRKbQotKGVkLXBoZW5vbWVub24pIDY0LjE4OSBUagotLTQyNSBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tNDI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9ucykgMjguMjI0IFRqCi03MiAzMTQuODQ4IFRkCi0oMS4wLjAvMS4wLjFcKS4pIDQ4LjQyODIgVGoKLVsxIDAgMCAxIDcyIDMxMy4wNjVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljg5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzAzLjE2N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjkyLjk5NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShleGl0XCgzXCkpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDExMy44NDMgMjkyLjk5NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTMuODQzIC0yOTIuOTk1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMTYuMzM0IDI5Mi45OTUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0odGhlbikgMTcuMTU1NiBUagotLTI1MCBUSm0KLShjYWxsZWQuKSAyNi4yODEzIFRqCi1bMSAwIDAgMSA3MiAyOTEuODk5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44OTgxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yODIuMDAxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyNzEuMTQyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEYpIDUuNTM5MjEgVGoKLTE1IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLVsxIDAgMCAxIDk1LjA5MzMgMjcxLjE0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05NS4wOTMzIC0yNzEuMTQyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05NS4wOTMzIDI3MS4xNDIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oc3RkaW8pIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDEyNC45ODEgMjcxLjE0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMjQuOTgxIC0yNzEuMTQyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMjQuOTgxIDI3MS4xNDIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLWZyZWUpIDE4Ljc5OTQgVGoKLS0yNTAgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTI1MCBUSm0KLShhc3NlcnRpb24pIDM1LjQxNyBUagotLTI1MCBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhaWx1cmVzKSAyNi41NjAzIFRqCi0tMjUwIFRKbQotKHJlc3VsdCkgMjIuMTM2OSBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oY2FsbCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShmdW5jdGlvbikgMzMuMjA1MyBUagotLTI1MCBUSm0KLShkZWNsYXJlZCkgMzMuNzQzMyBUagotLTI1MCBUSm0KLShhczopIDExLjA2ODQgVGoKLVsxIDAgMCAxIDcyIDI2OC45ODVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yNC45MDY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDIzLjkxMDMgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAyMC4zMjM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtMjU5LjYyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCAyNTkuNjIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZXh0ZXJuKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKHZvaWQpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oYnpfaW50ZXJuYWxfZXJyb3IpIDEwMS42MTkgVGoKLS00MjYgVEptCi0oXCgpIDUuOTc3NTYgVGoKLS00MjYgVEptCi0oaW50KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGVycmNvZGUpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oXCk7KSAxMS45NTUxIFRqCi1bMSAwIDAgMSA3MiAyNDQuMDc4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjQ4NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIzNC4xOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjIyLjIyNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGUpIDE1LjQ5MTggVGoKLS0yNTAgVEptCi0ocmVsZSkgMTQuOTMzOSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbnQpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oY29kZSkgMTguODA5NCBUagotLTI1MCBUSm0KLShpcykgNi42NDUwNSBUagotLTI1MCBUSm0KLShwYXNzZWQpIDI2LjU2MDMgVGoKLS0yNTAgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShwYXJhbWV0ZXIpIDM5LjgzMDUgVGoKLTU1IFRKbQotKC4pIDIuNDkwNjUgVGoKLS02MjAgVEptCi0oWSkgNy4xOTMgVGoKLTExMCBUSm0KLShvdSkgOS45NjI2IFRqCi0tMjUwIFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotLTI1MCBUSm0KLShzdXBwbHkpIDI2LjU3MDMgVGoKLS0yNTAgVEptCi0oc3VjaCkgMTguMjYxNCBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKGZ1bmN0aW9uLikgMzUuNjk2IFRqCi1bMSAwIDAgMSA3MiAyMjAuMDY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44OThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTIxMC4xN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjAwLjM3MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJbikgOC4yOTg4NSBUagotLTI5NCBUSm0KLShlaXRoZXIpIDIyLjY4NDggVGoKLS0yOTQgVEptCi0oY2FzZSwpIDE5LjYzNjMgVGoKLS0zMDYgVEptCi0ob25jZSkgMTguODA5NCBUagotLTI5NCBUSm0KLShhbikgOS40MDQ2OSBUagotLTI5NCBUSm0KLShhc3NlcnRpb24pIDM1LjQxNyBUagotLTI5NCBUSm0KLShmKSAzLjMxNzU1IFRqCi0xMCBUSm0KLShhaWx1cmUpIDIyLjY4NDggVGoKLS0yOTQgVEptCi0oaGFzKSAxMy4yODAxIFRqCi0tMjk1IFRKbQotKG9jY3VycmVkLCkgMzcuMzM5OCBUagotLTMwNSBUSm0KLShhbikgOS40MDQ2OSBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi1bMSAwIDAgMSAzMDYuNTQxIDIwMC4zNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzA2LjU0MSAtMjAwLjM3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzA2LjU0MSAyMDAuMzcyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6X3N0cmVhbSkgNTMuNzk4IFRqCi1bMSAwIDAgMSAzNjAuMzM5IDIwMC4zNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzYwLjMzOSAtMjAwLjM3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzYzLjI3MSAyMDAuMzcyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHJlY29yZHMpIDI5LjMxOTkgVGoKLS0yOTQgVEptCi0oaW4pIDcuNzUwOSBUagotNDAgVEptCi0odikgNC45ODEzIFRqCi0yMCBUSm0KLShvbHYpIDEyLjczMjIgVGoKLTE1IFRKbQotKGVkKSA5LjQwNDY5IFRqCi0tMjk0IFRKbQotKGNhbikgMTMuODI4MSBUagotLTI5NSBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI5NCBUSm0KLShyZSkgNy43NDA5NCBUagotMTUgVEptCi0oZykgNC45ODEzIFRqCi01IFRKbQotKGFyZGVkKSAyMi4xMjY5IFRqCi0tMjk0IFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjk0IFRKbQotKGluKSA3Ljc1MDkgVGoKLTQwIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWxpZC4pIDE3LjQzNDYgVGoKLTcyIDE4OC40MTcgVGQKLShZKSA3LjE5MyBUagotMTEwIFRKbQotKG91KSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMjUwIFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTI1MCBUSm0KLShhdHRlbXB0KSAyOS44ODc4IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0ocmVzdW1lKSAyOC43NzIgVGoKLS0yNTAgVEptCi0obm9ybWFsKSAyOC4yMjQgVGoKLS0yNTAgVEptCi0ob3BlcmF0aW9uKSAzNy42Mjg3IFRqCi0tMjUwIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yNTAgVEptCi0odGhlbS4pIDIyLjQxNTkgVGoKLVsxIDAgMCAxIDcyIDE4Ni4yNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuODk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xNzYuMzYyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxNjYuNTY0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFkpIDcuMTkzIFRqCi0xMTAgVEptCi0ob3UpIDkuOTYyNiBUagotLTI5OSBUSm0KLShtYXkpIDE3LjE1NTYgVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0zMTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yOTkgVEptCi0oY291cnNlLCkgMjguNDkzIFRqCi0tMzExIFRKbQotKGNoYW5nZSkgMjguMjE0MSBUagotLTI5OCBUSm0KLShjcml0aWNhbCkgMjcuNjY2MSBUagotLTI5OSBUSm0KLShlcnJvcikgMTkuMzU3MyBUagotLTI5OCBUSm0KLShoYW5kbGluZykgMzQuODY5MSBUagotLTI5OSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjk4IFRKbQotKHN1aXQpIDE0LjM5NiBUagotLTI5OSBUSm0KLSh5b3VyKSAxOC4yNjE0IFRqCi0tMjk4IFRKbQotKG5lZWRzLikgMjUuMTc1NSBUagotLTkxMiBUSm0KLShBcykgMTEuMDY4NCBUagotLTI5OCBUSm0KLShJKSAzLjMxNzU1IFRqCi0tMjk5IFRKbQotKHNhaWQpIDE2LjA0OTcgVGoKLS0yOTggVEptCi0oYWJvKSAxNC4zODYgVGoKLTE1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSwpIDYuOTE0MDQgVGoKLS0zMTEgVEptCi0oY3JpdGljYWwpIDI3LjY2NjEgVGoKLS0yOTkgVEptCi0oZXJyb3JzKSAyMy4yMzI4IFRqCi0tMjk4IFRKbQotKGluZGljYXRlKSAzMS41NDE2IFRqCi0tMjk5IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWdzKSAxMy44MzgxIFRqCi03MiAxNTQuNjA4IFRkCi0oaW4pIDcuNzUwOSBUagotLTI2MyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjMgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTI2MyBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI2MyBUSm0KLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yNjMgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMjYzIFRKbQotKG9jY3VyKSAyMi4xMjY5IFRqCi01NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0tNjk3IFRKbQotKEFsbCkgMTIuNzMyMiBUagotLTI2MyBUSm0KLSgibm9ybWFsIikgMzYuMzUzNSBUagotLTI2MyBUSm0KLShlcnJvcikgMTkuMzU3MyBUagotLTI2MyBUSm0KLShzaXR1YXRpb25zKSAzOC4xOTY2IFRqCi0tMjYzIFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTI2MyBUSm0KLShpbmRpY2F0ZWQpIDM2LjUyMjkgVGoKLS0yNjMgVEptCi0odmlhKSAxMi4xNzQzIFRqCi0tMjYzIFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi0tMjYzIFRKbQotKHJldHVybikgMjMuNzkwNyBUagotLTI2MyBUSm0KLShjb2RlcykgMjIuNjg0OCBUagotLTI2MyBUSm0KLShmcm9tKSAxOS4zNjczIFRqCi0tMjYzIFRKbQotKGZ1bmN0aW9ucywpIDM5LjU3MTQgVGoKLTcyIDE0Mi42NTMgVGQKLShhbmQpIDE0LjM4NiBUagotLTI1MCBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0yNTAgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0ocmVjbykgMTcuMTQ1NiBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcmVkKSAxNy4xNDU2IFRqCi0tMjUwIFRKbQotKGZyb20uKSAyMS44NTc5IFRqCi1bMSAwIDAgMSA3MiAxNDIuNTU0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS44OThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTEzMi42NTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDEwNy45NjUgVGQKLS9GMTIyXzAgMjAuNjU4NSBUZgotKDMuOC4pIDM0LjQ1ODQgVGoKLS0yNzggVEptCi0oTWFraW5nKSA3MS4xNjg1IFRqCi0tMjc4IFRKbQotKGEpIDExLjQ4NjEgVGoKLS0yNzggVEptCi0oV2luZG8pIDYzLjExMTcgVGoKLTE1IFRKbQotKHdzKSAyNy41NTg0IFRqCi0tMjc4IFRKbQotKERMTCkgNDAuMTYwMSBUagotWzEgMCAwIDEgNzIgMTAzLjM2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuODk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC05My40NzA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA4Ni4xMTIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oRXYpIDExLjA2ODQgVGoKLTE1IFRKbQotKGVyeXRoaW5nKSAzMy4yMDUzIFRqCi0tMzI4IFRKbQotKHJlbGF0ZWQpIDI3LjEwODIgVGoKLS0zMjcgVEptCi0odG8pIDcuNzUwOSBUagotLTMyOCBUSm0KLShXKSA5LjQwNDY5IFRqCi00MCBUSm0KLShpbmRvKSAxNy43MTM1IFRqCi0yNSBUSm0KLSh3cykgMTEuMDY4NCBUagotLTMyOCBUSm0KLShoYXMpIDEzLjI4MDEgVGoKLS0zMjcgVEptCi0oYmVlbikgMTguODA5NCBUagotLTMyOCBUSm0KLShjb250cmliKSAyOC4yMjQgVGoKLTIwIFRKbQotKHV0ZWQpIDE3LjE1NTYgVGoKLS0zMjggVEptCi0oYnkpIDkuOTYyNiBUagotLTMyNyBUSm0KLShZKSA3LjE5MyBUagotMTEwIFRKbQotKG9zaGlva2EpIDMwLjk5MzYgVGoKLS0zMjggVEptCi0oVHN1bmVvKSAyOS4zMjk5IFRqCi0tMzI4IFRKbQotKFwoKSAzLjMxNzU1IFRqCi1bMSAwIDAgMSAzNzguMTM5IDg2LjExMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNzguMTM5IC04Ni4xMTJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM3OC4xMzkgODYuMTEyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHRzdW5lb0Byci5paWo0dS5vci5qcCkgMTI1LjUyOSBUagotWzEgMCAwIDEgNTAzLjY2OCA4Ni4xMTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTAzLjY2OCAtODYuMTEyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDMuNjY4IDg2LjExMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcKSwpIDUuODA4MiBUagotLTM0NyBUSm0KLShzbykgOC44NTY3NSBUagotLTMyOCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLTcyIDc0LjE1NjggVGQKLShzaG91bGQpIDI2LjU3MDMgVGoKLS0yNTAgVEptCi0oc2VuZCkgMTguMjYxNCBUagotLTI1MCBUSm0KLSh5b3VyKSAxOC4yNjE0IFRqCi0tMjUwIFRKbQotKHF1ZXJpZXMpIDI4Ljc3MiBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKGhpbSkgMTUuNTAxOCBUagotLTI1MCBUSm0KLShcKGIpIDguMjk4ODUgVGoKLTIwIFRKbQotKHV0KSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0ocGVyaGFwcykgMzAuOTgzNyBUagotLTI1MCBUSm0KLShDYzopIDEzLjgzODEgVGoKLS0zMTAgVEptCi0obWUsKSAxNC42NjQ5IFRqCi1bMSAwIDAgMSAyODcuOTU4IDc0LjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjg3Ljk1OCAtNzQuMTU2OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjg3Ljk1OCA3NC4xNTY4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGpzZXdhcmRAYnppcC5vcmcpIDk1LjY0MSBUagotWzEgMCAwIDEgMzgzLjYgNzQuMTU2OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zODMuNiAtNzQuMTU2OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzgzLjYgNzQuMTU2OCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcKS4pIDUuODA4MiBUagotWzEgMCAwIDEgNzIgNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yMS4xNDgyXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljk3MzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTEuMDcxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MzQuNDE0IDUxLjA3MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgyOSkgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAzMyAzMwotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgLTguOTExNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgOC45MTE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNzYuNDk3OSAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0Mi41NjkgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxOS4wNjcgNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm9ncmFtbWluZykgNTQuNzk0MyBUagotLTI1MCBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi1bMSAwIDAgMSA0OTYuNTU2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk2LjU1NiAtNzQ5LjI0NV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDk2LjU1NiA3NDkuMjQ1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGxpYmJ6aXAyKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA1NDQuMzc2IDc0OS4yNDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc4LjMwNSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTUuMDM2M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC00NjggLTIxLjU1NDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTcyMF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShNeSkgMTMuODM4MSBUagotLTM2NyBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGFndWUpIDE4LjgwOTQgVGoKLS0zNjcgVEptCi0odW5kZXJzdGFuZGluZykgNTYuNDQ4MSBUagotLTM2NyBUSm0KLShvZikgOC4yOTg4NSBUagotLTM2NyBUSm0KLSh3aGF0KSAxOS4zNjczIFRqCi0tMzY4IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zNjcgVEptCi0oZG8pIDkuOTYyNiBUagotLTM2NyBUSm0KLShpczopIDkuNDE0NjYgVGoKLS01NDQgVEptCi0odXNpbmcpIDIxLjU4OSBUagotLTM2NyBUSm0KLShWKSA3LjE5MyBUagotNjAgVEptCi0oaXN1YWwpIDE4LjgxOTQgVGoKLS0zNjcgVEptCi0oQysrKSAxNy44ODI5IFRqCi0tMzY3IFRKbQotKDUuMCwpIDE0Ljk0MzkgVGoKLS0zOTcgVEptCi0ob3BlbikgMTkuMzY3MyBUagotLTM2NyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zNjcgVEptCi0ocHJvamVjdCkgMjcuNjY2MSBUagotLTM2NyBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLVsxIDAgMCAxIDQzMi45NjYgNzEwLjAzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MzIuOTY2IC03MTAuMDM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MzIuOTY2IDcxMC4wMzcgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnoyLmRzcCkgNTkuNzc1NiBUagotWzEgMCAwIDEgNDkyLjc0MiA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5Mi43NDIgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ5Mi43NDIgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMzk2IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzY4IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWlsZC4pIDE3Ljk5MjUgVGoKLTcyIDY5OC4wODIgVGQKLShUaGF0JykgMjEuNTc5IFRqCi01NSBUSm0KLShzKSAzLjg3NTQ1IFRqCi0tMjUwIFRKbQotKGFsbC4pIDEyLjQ1MzMgVGoKLVsxIDAgMCAxIDcyIDY5Ny45ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY4OC4wMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjc2LjE2NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJZikgNi42MzUwOSBUagotLTI4NCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yODQgVEptCi0oY2FuJykgMTcuMTQ1NiBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMjg1IFRKbQotKG9wZW4pIDE5LjM2NzMgVGoKLS0yODQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjg0IFRKbQotKHByb2plY3QpIDI3LjY2NjEgVGoKLS0yODQgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMjg0IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI4NSBUSm0KLShzb21lKSAyMS4wMzEgVGoKLS0yODQgVEptCi0ocmVhc29uLCkgMjguNDkzIFRqCi0tMjkzIFRKbQotKG1haykgMTcuMTU1NiBUagotMTAgVEptCi0oZSkgNC40MjMzOSBUagotLTI4NCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjg0IFRKbQotKG5lKSA5LjQwNDY5IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotLTI4NCBUSm0KLShvbmUsKSAxNi44NzY2IFRqCi0tMjkzIFRKbQotKG5hbWluZykgMjkuODg3OCBUagotLTI4NCBUSm0KLSh0aGVzZSkgMjAuNDczMSBUagotLTI4NCBUSm0KLShcMDAybGVzOikgMTkuMzc3MyBUagotWzEgMCAwIDEgNDI0LjUwNSA2NzYuMTY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQyNC41MDUgLTY3Ni4xNjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQyNC41MDUgNjc2LjE2NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShibG9ja3NvcnQuYykgNjUuNzUzMiBUagotWzEgMCAwIDEgNDkwLjI1OSA2NzYuMTY0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5MC4yNTkgLTY3Ni4xNjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ5MC4yNTkgNjc2LjE2NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA0OTUuNjY2IDY3Ni4xNjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDk1LjY2NiAtNjc2LjE2NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDk1LjY2NiA2NzYuMTY0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6bGliLmMpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDUzNy41MDkgNjc2LjE2NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MzcuNTA5IC02NzYuMTY0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MzcuNTA5IDY3Ni4xNjQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgNjY0LjIwOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjY0LjIwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNjY0LjIwOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShjb21wcmVzcy5jKSA1OS43NzU2IFRqCi1bMSAwIDAgMSAxMzEuNzc2IDY2NC4yMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTMxLjc3NiAtNjY0LjIwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTMxLjc3NiA2NjQuMjA5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDEzNi40MzYgNjY0LjIwOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMzYuNDM2IC02NjQuMjA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMzYuNDM2IDY2NC4yMDkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oY3JjdGFibGUuYykgNTkuNzc1NiBUagotWzEgMCAwIDEgMTk2LjIxMSA2NjQuMjA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5Ni4yMTEgLTY2NC4yMDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5Ni4yMTEgNjY0LjIwOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAyMDAuODcxIDY2NC4yMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjAwLjg3MSAtNjY0LjIwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjAwLjg3MSA2NjQuMjA5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGRlY29tcHJlc3MuYykgNzEuNzMwNyBUagotWzEgMCAwIDEgMjcyLjYwMiA2NjQuMjA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3Mi42MDIgLTY2NC4yMDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3Mi42MDIgNjY0LjIwOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAyNzcuMjYyIDY2NC4yMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc3LjI2MiAtNjY0LjIwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjc3LjI2MiA2NjQuMjA5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGh1ZmZtYW4uYykgNTMuNzk4IFRqCi1bMSAwIDAgMSAzMzEuMDYgNjY0LjIwOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMzEuMDYgLTY2NC4yMDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzMS4wNiA2NjQuMjA5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDMzNS43MiA2NjQuMjA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzNS43MiAtNjY0LjIwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzM1LjcyIDY2NC4yMDkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0ocmFuZHRhYmxlLmMpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDQwMS40NzMgNjY0LjIwOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MDEuNDczIC02NjQuMjA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MDMuNTYyIDY2NC4yMDkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDQyMC4wMzcgNjY0LjIwOV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MjAuMDM3IC02NjQuMjA5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MjAuMDM3IDY2NC4yMDkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnoyLmRlZikgNTkuNzc1NiBUagotWzEgMCAwIDEgNDc5LjgxMiA2NjQuMjA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3OS44MTIgLTY2NC4yMDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ3OS44MTIgNjY0LjIwOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi0tNTkzIFRKbQotKFkpIDcuMTkzIFRqCi0xMTAgVEptCi0ob3UpIDkuOTYyNiBUagotLTIxMCBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMjA5IFRKbQotKGFsc28pIDE2LjA0OTcgVGoKLTcyIDY1Mi4yNTQgVGQKLShuZWVkKSAxOC44MDk0IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0obmFtZSkgMjEuNTc5IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShoZWFkZXIpIDI2LjU1MDMgVGoKLS0yNTAgVEptCi0oXDAwMmxlcykgMTYuNjA3NyBUagotWzEgMCAwIDEgMTkwLjQxNSA2NTIuMjU0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5MC40MTUgLTY1Mi4yNTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5MC40MTUgNjUyLjI1NCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemxpYi5oKSA0MS44NDI5IFRqCi1bMSAwIDAgMSAyMzIuMjU4IDY1Mi4yNTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjMyLjI1OCAtNjUyLjI1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjM0Ljc0OCA2NTIuMjU0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSAyNTEuNjI1IDY1Mi4yNTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjUxLjYyNSAtNjUyLjI1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjUxLjYyNSA2NTIuMjU0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6bGliX3ByaXZhdGUuaCkgODkuNjYzNCBUagotWzEgMCAwIDEgMzQxLjI4OSA2NTIuMjU0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM0MS4yODkgLTY1Mi4yNTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM0MS4yODkgNjUyLjI1NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiA2NTAuNzJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY0MC43NTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYzMC4zMzYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSWYpIDYuNjM1MDkgVGoKLS0yNTAgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKGRvbicpIDE4LjI2MTQgVGoKLTE4IFRKbQotKHQpIDIuNzY5NiBUagotLTI1MCBUSm0KLSh1c2UpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oVkMrKywpIDI3LjU2NjUgVGoKLS0yNTAgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKG1heSkgMTcuMTU1NiBUagotLTI1MCBUSm0KLShuZWVkKSAxOC44MDk0IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oZGVcMDAybmUpIDI0LjM0ODYgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHByb3Byb2Nlc3NvcikgNTEuNDU2OCBUagotLTI1MCBUSm0KLShzeW1ib2wpIDI5LjMzOTkgVGoKLVsxIDAgMCAxIDM2My42MzQgNjMwLjMzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNjMuNjM0IC02MzAuMzM2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNjMuNjM0IDYzMC4zMzYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oX1dJTjMyKSAzNS44NjU0IFRqCi1bMSAwIDAgMSAzOTkuNSA2MzAuMzM2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM5OS41IC02MzAuMzM2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zOTkuNSA2MzAuMzM2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC4pIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDYyOC4xNzldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYxOC4yMTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYwOC40MTggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oRmluYWxseSkgMjguMjM0IFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSAxMDQuNTY4IDYwOC40MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTA0LjU2OCAtNjA4LjQxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA0LjU2OCA2MDguNDE4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGRsbHRlc3QuYykgNTMuNzk4IFRqCi1bMSAwIDAgMSAxNTguMzY2IDYwOC40MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTU4LjM2NiAtNjA4LjQxOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTYwLjg1NiA2MDguNDE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oc2FtcGxlKSAyOC4yMjQgVGoKLS0yNTAgVEptCi0ocHJvZ3JhbSkgMzMuNzUzMyBUagotLTI1MCBUSm0KLSh1c2luZykgMjEuNTg5IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShETEwuKSAyMS44NTc5IFRqCi0tNTAwIFRKbQotKEl0KSA2LjA4NzE1IFRqCi0tMjUwIFRKbQotKGhhcykgMTMuMjgwMSBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKHByb2plY3QpIDI3LjY2NjEgVGoKLS0yNTAgVEptCi0oXDAwMmxlLCkgMTUuMjIyOSBUagotWzEgMCAwIDEgMzg4LjU4IDYwOC40MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzg4LjU4IC02MDguNDE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zODguNTggNjA4LjQxOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShkbGx0ZXN0LmRzcCkgNjUuNzUzMiBUagotWzEgMCAwIDEgNDU0LjMzMyA2MDguNDE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ1NC4zMzMgLTYwOC40MThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ1NC4zMzMgNjA4LjQxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiA2MDYuMjYyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01OTYuMjk5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1ODYuNTAxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKElmKSA2LjYzNTA5IFRqCi0tMjUwIFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI1MCBUSm0KLShqdXN0KSAxNC4zOTYgVGoKLS0yNTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFudCkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKG1haykgMTcuMTU1NiBUagotMTAgVEptCi0oZVwwMDJsZSkgMTcuMTU1NiBUagotLTI1MCBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNTAgVEptCi0oVikgNy4xOTMgVGoKLTYwIFRKbQotKGlzdWFsKSAxOC44MTk0IFRqCi0tMjUwIFRKbQotKEMsKSA5LjEzNTcgVGoKLS0yNTAgVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKGxvb2spIDE3LjcxMzUgVGoKLS0yNTAgVEptCi0oYXQpIDcuMTkzIFRqCi1bMSAwIDAgMSAyOTIuMjEyIDU4Ni41MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjkyLjIxMiAtNTg2LjUwMV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjkyLjIxMiA1ODYuNTAxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKG1ha2VmaWxlLm1zYykgNzEuNzMwNyBUagotWzEgMCAwIDEgMzYzLjk0MyA1ODYuNTAxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM2My45NDMgLTU4Ni41MDFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM2My45NDMgNTg2LjUwMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiA1ODQuMzQ0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01NzQuMzgxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA1NjQuNTgzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEJlKSAxMS4wNjg0IFRqCi0tMjkxIFRKbQotKGEpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yOTEgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTI5MSBUSm0KLShpZikgNi4wODcxNSBUagotLTI5MSBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yOTEgVEptCi0oY29tcGlsZSkgMzIuMDk5NSBUagotWzEgMCAwIDEgMTkyLjA2OSA1NjQuNTgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5Mi4wNjkgLTU2NC41ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE5Mi4wNjkgNTY0LjU4MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMjIxLjk1OCA1NjQuNTgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIyMS45NTggLTU2NC41ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIyNC44NTcgNTY0LjU4MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpdHNlbGYpIDE5LjkyNTIgVGoKLS0yOTEgVEptCi0ob24pIDkuOTYyNiBUagotLTI5MSBUSm0KLShXKSA5LjQwNDY5IFRqCi00MCBUSm0KLShpbjMyLCkgMjAuMjA0MiBUagotLTMwMSBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yOTEgVEptCi0obXVzdCkgMTkuMzc3MyBUagotLTI5MSBUSm0KLShzZXQpIDExLjA2ODQgVGoKLVsxIDAgMCAxIDM0Ni44NDEgNTY0LjU4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNDYuODQxIC01NjQuNTgzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNDYuODQxIDU2NC41ODMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfVU5JWCkgNDEuODQyOSBUagotWzEgMCAwIDEgMzg4LjY4NSA1NjQuNTgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM4OC42ODUgLTU2NC41ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM5MS41ODMgNTY0LjU4MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0bykgNy43NTA5IFRqCi0tMjkxIFRKbQotKDApIDQuOTgxMyBUagotLTI5MSBUSm0KLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgNDI3LjM5OSA1NjQuNTgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQyNy4zOTkgLTU2NC41ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQyNy4zOTkgNTY0LjU4MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShCWl9MQ0NXSU4zMikgNjUuNzUzMiBUagotWzEgMCAwIDEgNDkzLjE1MyA1NjQuNTgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5My4xNTMgLTU2NC41ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ5Ni4wNTIgNTY0LjU4MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0bykgNy43NTA5IFRqCi0tMjkxIFRKbQotKDEsKSA3LjQ3MTk1IFRqCi0tMzAxIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yOTEgVEptCi0odGhlKSAxMi4xNzQzIFRqCi03MiA1NTIuNjI4IFRkCi0oXDAwMmxlKSAxMi43MzIyIFRqCi1bMSAwIDAgMSA4Ny4yMjI3IDU1Mi42MjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODcuMjIyNyAtNTUyLjYyOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODcuMjIyNyA1NTIuNjI4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyLmMpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDEyOS4wNjYgNTUyLjYyOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMjkuMDY2IC01NTIuNjI4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMjkuMDY2IDU1Mi42MjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotLTI1MCBUSm0KLShiZWZvcmUpIDI1LjQ0NDUgVGoKLS0yNTAgVEptCi0oY29tcGlsaW5nLikgNDIuODk5IFRqCi0tMzEwIFRKbQotKE90aGVyd2lzZSkgNDAuOTQ2MyBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0ocmVzdWx0aW5nKSAzNC44NjkxIFRqCi0tMjUwIFRKbQotKGJpbmFyeSkgMjUuNDU0NCBUagotLTI1MCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0ob24nKSAxMy4yODAxIFRqCi0xOCBUSm0KLSh0KSAyLjc2OTYgVGoKLS0yNTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG9yaykgMTMuMjgwMSBUagotLTI1MCBUSm0KLShjb3JyZWN0bHkpIDM1LjQwNzEgVGoKLTY1IFRKbQotKC4pIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDU1MC40NzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU0MC41MDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDUzMC43MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJKSAzLjMxNzU1IFRqCi0tMjUwIFRKbQotKGhhKSA5LjQwNDY5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVuJykgMTIuNzIyMiBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMjUwIFRKbQotKHRyaWVkKSAxOC4yNjE0IFRqCi0tMjUwIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjUwIFRKbQotKHN0dWYpIDE0Ljk0MzkgVGoKLTI1IFRKbQotKGYpIDMuMzE3NTUgVGoKLS0yNTAgVEptCi0obXlzZWxmLCkgMjkuNjA4OCBUagotLTI1MCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHV0KSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0yNTAgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0obG9va3MpIDIxLjU4OSBUagotLTI1MCBUSm0KLShwbGF1c2libGUuKSAzOC40NjU2IFRqCi1bMSAwIDAgMSA3MiA1MjguNTUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMCAtNDc3LjcwMV0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDAuNTcyNiAtNi43NTQ1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5My44NDEgLTUwLjk1MTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNC40MTQgNTAuOTUxNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzMCkgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAzNCAzNAotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE0MC4zOTggMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNDAuMzk4IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyODAuNzk2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjk3NCAtMTMuOTQ3N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTIxLjU1NDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTcyMF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNzAxLjkxNiBUZAotL0YxMjJfMCAyNC43OTAyIFRmCi0oNC4pIDIwLjY3NSBUagotLTI3OCBUSm0KLShNaXNjZWxsYW5lYSkgMTM5LjE3MiBUagotWzEgMCAwIDEgNzIgNzAxLjYwNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDAgLTkuMTM0N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTE0LjExNjFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY3OC4zNTVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDY1OC4wMDYgVGQKLS9GMTIyXzAgMTcuMjE1NCBUZgotKFQpIDEwLjUxODYgVGoKLTgwIFRKbQotKGFiKSAyMC4wOTA0IFRqCi0xMCBUSm0KLShsZSkgMTQuMzU3NiBUagotLTI3OCBUSm0KLShvZikgMTYuMjUxMyBUagotLTI3OCBUSm0KLShDb250ZW50cykgNzQuNTk0MyBUagotWzEgMCAwIDEgNzIgNjQ5LjE4M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTExLjc0MDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYzNy40NDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYzNy40NDMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNC4xLikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShMaW1pdGF0aW9ucykgNDUuOTQ3NSBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI1MCBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yNTAgVEptCi0oZm9ybWF0KSAyNi41NjAzIFRqCi1bMSAwIDAgMSAyNTUuMjMxIDYzNy40NDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2MC4yMTIgLTYzNy40NDNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI2OS4xNTQgNjM3LjQ0MyBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDYzNy40NDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtNjM3LjQ0M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyA2MzcuNDQzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMxKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSA2MzcuNDQzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43OTg0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02MjUuNDg4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2MjUuNDg4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDQuMi4pIDE0Ljk0MzkgVGoKLS0zMTAgVEptCi0oUG9ydGFiaWxpdHkpIDQyLjA3MjEgVGoKLS0yNTAgVEptCi0oaXNzdWVzKSAyMy44MDA3IFRqCi1bMSAwIDAgMSAxNTguMzk1IDYyNS40ODhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2My4zNzYgLTYyNS40ODhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3Mi4wMyA2MjUuNDg4IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDYyNS40ODhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtNjI1LjQ4OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyA2MjUuNDg4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMyKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSA2MjUuNDg4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS43OTg0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02MTMuNTMzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2MTMuNTMzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDQuMy4pIDE0Ljk0MzkgVGoKLS0zMTAgVEptCi0oUmVwb3J0aW5nKSAzOS44NTA0IFRqCi0tMjUwIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWdzKSAxMy44MzgxIFRqCi1bMSAwIDAgMSAxNTAuOTkzIDYxMy41MzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE1NS45NzUgLTYxMy41MzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE2Ni4xMTUgNjEzLjUzMyBUZAotL0YxNDdfMCA5Ljk2MjYgVGYKLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNjEzLjUzM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC02MTMuNTMzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDYxMy41MzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMzIpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDYxMy41MzNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTYwMS41NzhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDYwMS41NzggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNC40LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShEaWQpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjUwIFRKbQotKGdldCkgMTIuMTc0MyBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0ocmlnaHQpIDE4LjgxOTQgVGoKLS0yNTAgVEptCi0ocGFja2FnZT8pIDM3LjA2MDkgVGoKLVsxIDAgMCAxIDIxMi42MDIgNjAxLjU3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDMuMDg4NCAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMy4wODg0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjE4Ljc3OCAtNjAxLjU3OF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjI5LjEwOSA2MDEuNTc4IFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLVsxIDAgMCAxIDUwNi4xMjcgNjAxLjU3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MDYuMTI3IC02MDEuNTc4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MDYuMTI3IDYwMS41NzggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oMzMpIDkuOTYyNiBUagotWzEgMCAwIDEgNTE2LjA5IDYwMS41NzhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQ0LjA5IC0yLjE1NjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljc5ODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU4OS42MjNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU4OS42MjMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oNC41LikgMTQuOTQzOSBUagotLTMxMCBUSm0KLShGdXJ0aGVyKSAyOS4zMjk5IFRqCi0tMjUwIFRKbQotKFJlYWRpbmcpIDMzLjIwNTMgVGoKLVsxIDAgMCAxIDE1NS4wNTggNTg5LjYyM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTYwLjAzOSAtNTg5LjYyM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTcwLjM2MSA1ODkuNjIzIFRkCi0vRjE0N18wIDkuOTYyNiBUZgotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi0tMTY2IFRKbQotKDopIDIuNzY5NiBUagotLTE2NyBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjYgVEptCi0oOikgMi43Njk2IFRqCi0tMTY3IFRKbQotKDopIDIuNzY5NiBUagotLTE2NiBUSm0KLSg6KSAyLjc2OTYgVGoKLS0xNjcgVEptCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA1MDYuMTI3IDU4OS42MjNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTA2LjEyNyAtNTg5LjYyM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTA2LjEyNyA1ODkuNjIzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDM0KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDUxNi4wOSA1ODkuNjIzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ0NC4wOSAtMi4xNTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS4xMzQ4XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMCAtOS42MzE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC01NjguN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTU4LjkwMSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGVzZSkgMjMuNzkwNyBUagotLTI1MCBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yNTAgVEptCi0oanVzdCkgMTQuMzk2IFRqCi0tMjUwIFRKbQotKHNvbWUpIDIxLjAzMSBUagotLTI1MCBUSm0KLShyYW5kb20pIDMwLjQzNTcgVGoKLS0yNTAgVEptCi0odGhvdWdodHMpIDM0LjMyMTIgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0obWluZS4pIDIyLjQxNTkgVGoKLS02MjAgVEptCi0oWSkgNy4xOTMgVGoKLTExMCBUSm0KLShvdXIpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0obWlsZWFnZSkgMzEuNTQxNiBUagotLTI1MCBUSm0KLShtYXkpIDE3LjE1NTYgVGoKLS0yNTAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhcnkpIDEyLjcyMjIgVGoKLTY1IFRKbQotKC4pIDIuNDkwNjUgVGoKLVsxIDAgMCAxIDcyIDU1Ni43NDRdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05LjYzMTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU0Ny4xMTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDUyNC40OCBUZAotL0YxMjJfMCAyMC42NTg1IFRmCi0oNC4xLikgMzQuNDU4NCBUagotLTI3OCBUSm0KLShMaW1pdGF0aW9ucykgMTEwLjE5MiBUagotLTI3OCBUSm0KLShvZikgMTkuNTAxNiBUagotLTI3OCBUSm0KLSh0aGUpIDMwLjk4NzcgVGoKLS0yNzggVEptCi0oY29tcHJlc3NlZCkgMTIxLjY5OSBUagotLTI3OCBUSm0KLShcMDAybGUpIDI5Ljg1MTUgVGoKLS0yNzggVEptCi0oZikgNi44NzkyOCBUagotMjAgVEptCi0ob3JtYXQpIDU3LjM4OTMgVGoKLVsxIDAgMCAxIDcyIDUyMC4yMDNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05LjYzMTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTUxMC41NzJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDUwMi44OTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDItMS4wLlgpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDEzNy43NTMgNTAyLjg5M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMzcuNzUzIC01MDIuODkzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMzcuNzUzIDUwMi44OTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLCkgMi40OTA2NSBUagotWzEgMCAwIDEgMTQzLjQwNSA1MDIuODkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE0My40MDUgLTUwMi44OTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE0My40MDUgNTAyLjg5MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgwLjkuNSkgMjkuODg3OCBUagotWzEgMCAwIDEgMTczLjI5MyA1MDIuODkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3My4yOTMgLTUwMi44OTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE3Ni40NTMgNTAyLjg5MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMTk0IDUwMi44OTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTk0IC01MDIuODkzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xOTQgNTAyLjg5MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgwLjkuMCkgMjkuODg3OCBUagotWzEgMCAwIDEgMjIzLjg4OCA1MDIuODkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIyMy44ODggLTUwMi44OTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIyNy4wNDggNTAyLjg5MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh1c2UpIDEzLjI4MDEgVGoKLS0zMTcgVEptCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeGFjdGx5KSAyNC4zNDg2IFRqCi0tMzE3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMxOCBUSm0KLShzYW1lKSAyMC40NzMxIFRqCi0tMzE3IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTMxNyBUSm0KLShmb3JtYXQpIDI2LjU2MDMgVGoKLS0zMTcgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0zMTggVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzE3IFRKbQotKG9yaWdpbmFsKSAzMC45OTM2IFRqCi0tMzE3IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9uLCkgMjYuODM5MiBUagotWzEgMCAwIDEgNDU1LjgwMSA1MDIuODkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ1NS44MDEgLTUwMi44OTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ1NS44MDEgNTAyLjg5MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMi0wLjEpIDUzLjc5OCBUagotWzEgMCAwIDEgNTA5LjU5OSA1MDIuODkzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwOS41OTkgLTUwMi44OTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwOS41OTkgNTAyLjg5MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi0tMTAyMyBUSm0KLShUaGlzKSAxNy43MTM1IFRqCi03MiA0OTAuOTM4IFRkCi0oZGVjaXNpb24pIDMzLjIwNTMgVGoKLS0yMjIgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjIyIFRKbQotKG1hZGUpIDIxLjU3OSBUagotLTIyMiBUSm0KLShpbikgNy43NTA5IFRqCi0tMjIxIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIyMiBUSm0KLShpbnRlcmVzdHMpIDMzLjIwNTMgVGoKLS0yMjIgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yMjIgVEptCi0oc3RhYmlsaXR5KSAzMi4xMDk1IFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0tNjAxIFRKbQotKENyZWF0aW5nKSAzNC4zMTEyIFRqCi0tMjIyIFRKbQotKHlldCkgMTIuMTc0MyBUagotLTIyMiBUSm0KLShhbm90aGVyKSAyOS44Nzc4IFRqCi0tMjIyIFRKbQotKGluY29tcGF0aWJsZSkgNTIuMDI0NyBUagotLTIyMSBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjIyIFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTIyMiBUSm0KLShmb3JtYXQpIDI2LjU2MDMgVGoKLS0yMjIgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG91bGQpIDE3LjcxMzUgVGoKLS0yMjIgVEptCi0oY3JlYXRlKSAyMy43ODA3IFRqCi03MiA0NzguOTgzIFRkCi0oZnVydGhlcikgMjcuMTA4MiBUagotLTI1MCBUSm0KLShjb25mdXNpb24pIDM5LjI5MjUgVGoKLS0yNTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNTAgVEptCi0oZGlzcnVwdGlvbikgNDAuNDA4MyBUagotLTI1MCBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNTAgVEptCi0odXNlcnMuKSAyMi45NjM4IFRqCi1bMSAwIDAgMSA3MiA0NzYuODI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS42MzE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00NjcuMTk0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NTcuMzk2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKE5lKSAxMS42MTY0IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVydGhlbGVzcywpIDM3LjM0OTggVGoKLS0yMzQgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjI5IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjMwIFRKbQotKG5vdCkgMTIuNzMyMiBUagotLTIyOSBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjMwIFRKbQotKHBhaW5sZXNzKSAzMi4wOTk1IFRqCi0tMjI5IFRKbQotKGRlY2lzaW9uLikgMzUuNjk2IFRqCi0tNjA2IFRKbQotKERlKSAxMS42MTY0IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVsb3BtZW50KSAzNy4wODA4IFRqCi0tMjMwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvcmspIDEzLjI4MDEgVGoKLS0yMzAgVEptCi0oc2luY2UpIDIwLjQ3MzEgVGoKLS0yMjkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjMwIFRKbQotKHJlbGVhc2UpIDI3LjY1NjIgVGoKLS0yMjkgVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDQwNy4zMTcgNDU3LjM5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MDcuMzE3IC00NTcuMzk2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MDcuMzE3IDQ1Ny4zOTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDItMC4xKSA1My43OTggVGoKLVsxIDAgMCAxIDQ2MS4xMTUgNDU3LjM5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjEuMTE1IC00NTcuMzk2XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NjMuNDAyIDQ1Ny4zOTYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaW4pIDcuNzUwOSBUagotLTIzMCBUSm0KLShBdWd1c3QpIDI4Ljc4MiBUagotLTIyOSBUSm0KLSgxOTk3KSAxOS45MjUyIFRqCi0tMjMwIFRKbQotKGhhcykgMTMuMjgwMSBUagotNzIgNDQ1LjQ0MSBUZAotKHNobykgMTMuODM4MSBUagotMjUgVEptCi0od24pIDEyLjE3NDMgVGoKLS0yMjYgVEptCi0oY29tcGxlKSAyOS4zMjk5IFRqCi0xNSBUSm0KLSh4aXRpZXMpIDIxLjU4OSBUagotLTIyNiBUSm0KLShpbikgNy43NTA5IFRqCi0tMjI1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIyNiBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yMjYgVEptCi0oZm9ybWF0KSAyNi41NjAzIFRqCi0tMjI2IFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjI2IFRKbQotKHNsbykgMTEuNjI2NCBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yMjUgVEptCi0oZG8pIDkuOTYyNiBUagotMjUgVEptCi0od24pIDEyLjE3NDMgVGoKLS0yMjYgVEptCi0oZGVjb21wcmVzc2lvbikgNTkuNzY1NiBUagotLTIyNiBUSm0KLShhbmQsKSAxNi44NzY2IFRqCi0tMjMxIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yMjYgVEptCi0ocmV0cm9zcGVjdCwpIDQxLjc3MzIgVGoKLS0yMzAgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMjI2IFRKbQotKHVubmVjZXNzYXJ5KSA0OC42ODcyIFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0tNjA0IFRKbQotKFRoZXNlKSAyMy43OTA3IFRqCi0tMjI2IFRKbQotKGFyZTopIDE0LjkzMzkgVGoKLVsxIDAgMCAxIDcyIDQ0My4yODRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yOS4wNjEzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi45NzM5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzguOTczOSAtNDE0LjIyMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzguOTczOSA0MTQuMjIyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwyMjUpIDMuNDg2OTEgVGoKLVsxIDAgMCAxIDgyLjQ2MDggNDE0LjIyMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS45OTI1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODYuOTQ0IC00MTQuMjIyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgNDE0LjIyMiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGUpIDE1LjQ5MTggVGoKLS0yNjUgVEptCi0ocnVuLWxlbmd0aCkgNDEuNTA0MiBUagotLTI2NiBUSm0KLShlbmNvZGVyKSAzMS41MzE2IFRqCi00MCBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjY5IFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjY1IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjY1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI2NiBUSm0KLShcMDAycnN0KSAxNS41MDE4IFRqCi0tMjY1IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjY1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI2NiBUSm0KLShjb21wcmVzc2lvbikgNTAuMzYwOSBUagotLTI2NSBUSm0KLSh0cmFuc2Zvcm1hdGlvbnMsKSA2NS4wMjU5IFRqCi0tMjY5IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjY1IFRKbQotKGVudGlyZWx5KSAzMC40MzU3IFRqCi0tMjY2IFRKbQotKGlycmVsZSkgMjEuMDIxMSBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbnQuKSAxNC42NjQ5IFRqCi0tNzExIFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTI2NiBUSm0KLShvcmlnaW5hbCkgMzAuOTkzNiBUagotODYuOTQ0IDQwMi4yNjcgVGQKLShwdXJwb3NlKSAzMS41NDE2IFRqCi0tMzAxIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhcykgOC4yOTg4NSBUagotLTMwMSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMzAxIFRKbQotKHByb3RlY3QpIDI3LjY2NjEgVGoKLS0zMDEgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzAxIFRKbQotKHNvcnRpbmcpIDI3LjY3NjEgVGoKLS0zMDEgVEptCi0oYWxnb3JpdGhtKSAzOC43NDQ2IFRqCi0tMzAxIFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS0zMDEgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzAxIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJ5KSAxMi43MjIyIFRqCi0tMzAxIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvcnN0KSAxNC45NDM5IFRqCi0tMzAxIFRKbQotKGNhc2UpIDE3LjE0NTYgVGoKLS0zMDEgVEptCi0oaW5wdXQ6KSAyMy4yNTI3IFRqCi0tNDEyIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zMDEgVEptCi0oc3RyaW5nKSAyMi42OTQ4IFRqCi0tMzAxIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzAxIFRKbQotKHJlcGVhdGVkKSAzMy43NDMzIFRqCi0tMzAxIFRKbQotKHN5bWJvbHMuKSAzNS43MDYgVGoKLS05MjcgVEptCi0oQnV0KSAxNC4zOTYgVGoKLTg2Ljk0NCAzOTAuMzEyIFRkCi0oYWxnb3JpdGhtKSAzOC43NDQ2IFRqCi0tMjc0IFRKbQotKHN0ZXBzKSAxOS45MjUyIFRqCi0tMjc1IFRKbQotKFE2YSkgMTYuNTk3NyBUagotLTI3NCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI3NCBUSm0KLShRNmIpIDE3LjE1NTYgVGoKLS0yNzUgVEptCi0oaW4pIDcuNzUwOSBUagotLTI3NCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNzQgVEptCi0ob3JpZ2luYWwpIDMwLjk5MzYgVGoKLS0yNzUgVEptCi0oQnVycm8pIDIzLjI0MjcgVGoKLTI1IFRKbQotKHdzLVdoZWVsKSA0MC4zODg0IFRqCi0xIFRKbQotKGVyKSA3Ljc0MDk0IFRqCi0tMjc1IFRKbQotKHRlY2huaWNhbCkgMzUuOTY1IFRqCi0tMjc0IFRKbQotKHJlcG9ydCkgMjMuNzkwNyBUagotLTI3NCBUSm0KLShcKFNSQy0xMjRcKSkgNDMuNzI1OSBUagotLTI3NSBUSm0KLShzaG8pIDEzLjgzODEgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjc0IFRKbQotKGhvKSA5Ljk2MjYgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjc0IFRKbQotKHJlcGVhdHMpIDI4LjIxNDEgVGoKLS0yNzUgVEptCi0oY2FuKSAxMy44MjgxIFRqCi04Ni45NDQgMzc4LjM1NyBUZAotKGJlKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKGhhbmRsZWQpIDMxLjU0MTYgVGoKLS0yNTAgVEptCi0od2l0aG91dCkgMzAuNDQ1NyBUagotLTI1MCBUSm0KLShkaWYpIDExLjA2ODQgVGoKLTI1IFRKbQotKFwwMDJjdWx0eSkgMjUuNDY0NCBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjUwIFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjUwIFRKbQotKHNvcnRpbmcuKSAzMC4xNjY4IFRqCi1bMSAwIDAgMSAyNjkuNjE3IDM3OC4zNTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTk3LjYxNyAtMjEuNTg2N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuOTczOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc4Ljk3MzkgLTM1Ni43N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzguOTczOSAzNTYuNzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDIyNSkgMy40ODY5MSBUagotWzEgMCAwIDEgODIuNDYwOCAzNTYuNzddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtMzU2Ljc3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgMzU2Ljc3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoZSkgMTUuNDkxOCBUagotLTI5MyBUSm0KLShyYW5kb21pc2F0aW9uKSA1Ny4wMDYgVGoKLS0yOTMgVEptCi0obWVjaGFuaXNtKSA0NS4zNzk2IFRqCi0tMjkzIFRKbQotKGRvZXNuJykgMjYuNTYwMyBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMjk0IFRKbQotKHJlYWxseSkgMjIuNjg0OCBUagotLTI5MyBUSm0KLShuZWVkKSAxOC44MDk0IFRqCi0tMjkzIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yOTMgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yOTMgVEptCi0odGhlcmUuKSAyMi40MDU5IFRqCi0tODc5IFRKbQotKFVkaSkgMTQuOTQzOSBUagotLTI5NCBUSm0KLShNYW5iZXIpIDMwLjk4MzcgVGoKLS0yOTMgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yOTMgVEptCi0oR2VuZSkgMjEuMDIxMSBUagotLTI5MyBUSm0KLShNeWVycykgMjUuNDU0NCBUagotLTI5MyBUSm0KLShwdWJsaXNoZWQpIDM4Ljc0NDYgVGoKLS0yOTQgVEptCi0oYSkgNC40MjMzOSBUagotLTI5MyBUSm0KLShzdWYpIDEyLjE3NDMgVGoKLTI1IFRKbQotKFwwMDJ4KSAxMC41MjA1IFRqCi04Ni45NDQgMzQ0LjgxNSBUZAotKGFycmF5KSAyMC40NjMyIFRqCi0tMjM4IFRKbQotKGNvbnN0cnVjdGlvbikgNDkuMjU1MSBUagotLTIzOSBUSm0KLShhbGdvcml0aG0pIDM4Ljc0NDYgVGoKLS0yMzggVEptCi0oYSkgNC40MjMzOSBUagotLTIzOCBUSm0KLShmZSkgNy43NDA5NCBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yMzkgVEptCi0oeWVhcnMpIDIxLjAyMTEgVGoKLS0yMzggVEptCi0oYmFjaywpIDIxLjMgVGoKLS0yNDEgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0yMzggVEptCi0oY2FuKSAxMy44MjgxIFRqCi0tMjM4IFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjM5IFRKbQotKGVtcGxvKSAyNC45MDY1IFRqCi0xMCBUSm0KLSh5ZWQpIDE0LjM4NiBUagotLTIzOCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjM4IFRKbQotKHNvcnQpIDE0Ljk0MzkgVGoKLS0yMzkgVEptCi0oYW4pIDkuNDA0NjkgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTIzOCBUSm0KLShibG9jaywpIDI0LjYyNzUgVGoKLS0yNDEgVEptCi0obm8pIDkuOTYyNiBUagotLTIzOCBUSm0KLShtYXR0ZXIpIDI1LjQ1NDQgVGoKLS0yMzggVEptCi0oaG8pIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yMzkgVEptCi0ocmVwZXRpdGkpIDI4LjIyNCBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlLCkgNi45MTQwNCBUagotODYuOTQ0IDMzMi44NiBUZAotKGluKSA3Ljc1MDkgVGoKLS0yMjkgVEptCi0oT1woTikgMTcuNzAzNSBUagotLTIzMCBUSm0KLShsb2cpIDEyLjczMjIgVGoKLS0yMjkgVEptCi0oTlwpKSAxMC41MTA1IFRqCi0tMjMwIFRKbQotKHRpbWUuKSAyMC4yMDQyIFRqCi0tNjA2IFRKbQotKFN1YnNlcXVlbnQpIDQ1LjkzNzUgVGoKLS0yMzAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG9yaykgMTMuMjgwMSBUagotLTIyOSBUSm0KLShieSkgOS45NjI2IFRqCi0tMjMwIFRKbQotKEspIDcuMTkzIFRqCi0xNSBUSm0KLSh1bmloaWspIDI1LjQ2NDQgVGoKLTEwIFRKbQotKG8pIDQuOTgxMyBUagotLTIyOSBUSm0KLShTYWRha2FuZSkgMzguMTc2NyBUagotLTIyOSBUSm0KLShoYXMpIDEzLjI4MDEgVGoKLS0yMzAgVEptCi0ocHJvZHVjZWQpIDM3LjA3MDggVGoKLS0yMjkgVEptCi0oYSkgNC40MjMzOSBUagotLTIzMCBUSm0KLShkZXJpKSAxNS40OTE4IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTI1IFRKbQotKGF0aSkgOS45NjI2IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yMjkgVEptCi0oT1woTikgMTcuNzAzNSBUagotLTIzMCBUSm0KLShcKGxvZykgMTYuMDQ5NyBUagotLTIyOSBUSm0KLShOXCleMlwpKSAyMy40ODE4IFRqCi0tMjMwIFRKbQotKGFsZ29yaXRobSkgMzguNzQ0NiBUagotODYuOTQ0IDMyMC45MDUgVGQKLSh3aGljaCkgMjQuMzQ4NiBUagotLTI1MCBUSm0KLSh1c3VhbGx5KSAyOC43ODIgVGoKLS0yNTAgVEptCi0ob3V0cGVyZm9ybXMpIDQ4LjY5NzIgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKE1hbmJlcikgMzAuOTgzNyBUagotMjAgVEptCi0oLU15ZXJzKSAyOC43NzIgVGoKLS0yNTAgVEptCi0oYWxnb3JpdGhtLikgNDEuMjM1MiBUagotWzEgMCAwIDEgMzE0LjE4OSAzMjAuOTA1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI0Mi4xODkgLTExLjc4ODNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTMwOS4xMTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCAyOTkuMzE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEkpIDMuMzE3NTUgVGoKLS0yNDggVEptCi0oY291bGQpIDIyLjEzNjkgVGoKLS0yNDggVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI0OCBUSm0KLShjaGFuZ2VkKSAzMy4xOTU0IFRqCi0tMjQ4IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNDggVEptCi0oU2FkYWthbmUnKSA0MS40OTQyIFRqCi01NSBUSm0KLShzKSAzLjg3NTQ1IFRqCi0tMjQ4IFRKbQotKGFsZ29yaXRobSwpIDQxLjIzNTIgVGoKLS0yNDkgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1dCkgNy43NTA5IFRqCi0tMjQ4IFRKbQotKEkpIDMuMzE3NTUgVGoKLS0yNDggVEptCi0oXDAwMm5kKSAxNS41MDE4IFRqCi0tMjQ4IFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMjQ4IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNDggVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0yNDggVEptCi0oc2xvKSAxMS42MjY0IFRqCi0yNSBUSm0KLSh3ZXIpIDE0LjkzMzkgVGoKLS0yNDggVEptCi0odGhhbikgMTcuMTU1NiBUagotWzEgMCAwIDEgMzkyLjQ0NCAyOTkuMzE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM5Mi40NDQgLTI5OS4zMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM5Mi40NDQgMjk5LjMxOCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgNDIyLjMzMiAyOTkuMzE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQyMi4zMzIgLTI5OS4zMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQyMi4zMzIgMjk5LjMxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgnKSAzLjMxNzU1IFRqCi01NSBUSm0KLShzKSAzLjg3NTQ1IFRqCi0tMjQ4IFRKbQotKGUpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHhpc3RpbmcpIDI3LjEyODIgVGoKLS0yNDggVEptCi0oYWxnb3JpdGhtKSAzOC43NDQ2IFRqCi0tMjQ4IFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI0OCBUSm0KLShtb3N0KSAxOS4zNzczIFRqCi04Ni45NDQgMjg3LjM2MyBUZAotKGlucHV0cywpIDI2Ljg0OTIgVGoKLS0zNzAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0zNDUgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzQ2IFRKbQotKHJhbmRvbWlzYXRpb24pIDU3LjAwNiBUagotLTM0NiBUSm0KLShtZWNoYW5pc20pIDQ1LjM3OTYgVGoKLS0zNDUgVEptCi0ocHJvdGVjdHMpIDMxLjU0MTYgVGoKLS0zNDYgVEptCi0oYWRlcXVhdGVseSkgNDMuMTU4IFRqCi0tMzQ1IFRKbQotKGFnKSA5LjQwNDY5IFRqCi01IFRKbQotKGFpbnN0KSAxOC44MTk0IFRqCi0tMzQ2IFRKbQotKGJhZCkgMTQuMzg2IFRqCi0tMzQ2IFRKbQotKGNhc2VzLikgMjMuNTExNyBUagotLTExOTQgVEptCi0oSSkgMy4zMTc1NSBUagotLTM0NSBUSm0KLShkaWRuJykgMjEuMDMxIFRqCi0xOCBUSm0KLSh0KSAyLjc2OTYgVGoKLS0zNDYgVEptCi0odGhpbmspIDIwLjQ4MzEgVGoKLS0zNDYgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0zNDUgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMzQ2IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zNDYgVEptCi0oZ29vZCkgMTkuOTI1MiBUagotODYuOTQ0IDI3NS40MDggVGQKLSh0cmFkZW9mKSAyOC4yMTQxIFRqCi0yNSBUSm0KLShmKSAzLjMxNzU1IFRqCi0tMjYyIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNjEgVEptCi0obWFrKSAxNy4xNTU2IFRqCi0xMCBUSm0KLShlLikgNi45MTQwNCBUagotLTY5MCBUSm0KLShQKSA1LjUzOTIxIFRqCi0xNSBUSm0KLShhcnRseSkgMTguMjYxNCBUagotLTI2MiBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNjEgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNjIgVEptCi0oZHVlKSAxNC4zODYgVGoKLS0yNjEgVEptCi0odG8pIDcuNzUwOSBUagotLTI2MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjIgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYWN0KSAxMS42MTY0IFRqCi0tMjYxIFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0yNjIgVEptCi0oSSkgMy4zMTc1NSBUagotLTI2MSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0yNjIgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMjYyIFRKbQotKFwwMDNvb2RlZCkgMjkuODg3OCBUagotLTI2MSBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMjYyIFRKbQotKGVtYWlsKSAyMi4xMzY5IFRqCi0tMjYxIFRKbQotKGNvbXBsYWludHMpIDQzLjcyNTkgVGoKLS0yNjIgVEptCi0oYWJvdXQpIDIyLjEzNjkgVGoKLVsxIDAgMCAxIDQ3OS41NTcgMjc1LjQwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzkuNTU3IC0yNzUuNDA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NzkuNTU3IDI3NS40MDggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDItMC4xKSA1My43OTggVGoKLVsxIDAgMCAxIDUzMy4zNTUgMjc1LjQwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MzMuMzU1IC0yNzUuNDA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MzMuMzU1IDI3NS40MDggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oJykgMy4zMTc1NSBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotODYuOTQ0IDI2My40NTMgVGQKLShwZXJmb3JtYW5jZSkgNTAuMzQxIFRqCi0tMjUwIFRKbQotKG9uKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0ocmVwZXRpdGkpIDI4LjIyNCBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKGRhdGEsKSAxOS4wODgzIFRqCi0tMjUwIFRKbQotKHNvKSA4Ljg1Njc1IFRqCi0tMjUwIFRKbQotKHBlcmhhcHMpIDMwLjk4MzcgVGoKLS0yNTAgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0yNTAgVEptCi0oaXNuJykgMTQuOTQzOSBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0ocHJvYmxlbSkgMzMuMjA1MyBUagotLTI1MCBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNTAgVEptCi0ocmVhbCkgMTQuOTMzOSBUagotLTI1MCBUSm0KLShpbnB1dHMuKSAyNi44NDkyIFRqCi1bMSAwIDAgMSA3MiAyNjEuMjk2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS42MzE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yNTEuNjY0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgMjQxLjg2NiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShQcm9iYWJseSkgMzUuOTc0OSBUagotLTI4OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yODggVEptCi0oYmVzdCkgMTYuMDQ5NyBUagotLTI4OSBUSm0KLShsb25nLXRlcm0pIDM5LjI5MjUgVGoKLS0yODkgVEptCi0oc29sdXRpb24sKSAzNC42MDAxIFRqCi0tMjk4IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjg5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI4OSBUSm0KLShvbmUpIDE0LjM4NiBUagotLTI4OCBUSm0KLShJKSAzLjMxNzU1IFRqCi0tMjg5IFRKbQotKGhhKSA5LjQwNDY5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yODkgVEptCi0oaW5jb3Jwb3JhdGVkKSA1MC4zNTEgVGoKLS0yODggVEptCi0oaW50bykgMTUuNTAxOCBUagotLTI4OSBUSm0KLSgwLjkuNSkgMTkuOTI1MiBUagotLTI4OSBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI4OCBUSm0KLShhYm8pIDE0LjM4NiBUagotMTUgVEptCi0odikgNC45ODEzIFRqCi0xNCBUSm0KLShlLCkgNi45MTQwNCBUagotLTI5OCBUSm0KLShpcykgNi42NDUwNSBUagotLTI4OSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjg4IFRKbQotKHVzZSkgMTMuMjgwMSBUagotLTI4OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yODkgVEptCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeGlzdGluZykgMjcuMTI4MiBUagotODYuOTQ0IDIyOS45MTEgVGQKLShzb3J0aW5nKSAyNy42NzYxIFRqCi0tNDUxIFRKbQotKGFsZ29yaXRobSkgMzguNzQ0NiBUagotLTQ1MiBUSm0KLShpbml0aWFsbHkpIDMxLjAwMzYgVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS01MDEgVEptCi0oYW5kKSAxNC4zODYgVGoKLS00NTIgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS00NTEgVEptCi0oYmFjaykgMTguODA5NCBUagotLTQ1MiBUSm0KLSh0bykgNy43NTA5IFRqCi0tNDUxIFRKbQotKGEpIDQuNDIzMzkgVGoKLS00NTEgVEptCi0oT1woTikgMTcuNzAzNSBUagotLTQ1MiBUSm0KLShcKGxvZykgMTYuMDQ5NyBUagotLTQ1MSBUSm0KLShOXCleMlwpKSAyMy40ODE4IFRqCi0tNDUxIFRKbQotKGFsZ29yaXRobSkgMzguNzQ0NiBUagotLTQ1MiBUSm0KLShpZikgNi4wODcxNSBUagotLTQ1MSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS00NTIgVEptCi0oc3RhbmRhcmQpIDMzLjc1MzMgVGoKLS00NTEgVEptCi0oYWxnb3JpdGhtKSAzOC43NDQ2IFRqCi0tNDUxIFRKbQotKGdldHMpIDE2LjA0OTcgVGoKLS00NTIgVEptCi0oaW50bykgMTUuNTAxOCBUagotODYuOTQ0IDIxNy45NTYgVGQKLShkaWYpIDExLjA2ODQgVGoKLTI1IFRKbQotKFwwMDJjdWx0aWVzLikgMzQuMDQyMiBUagotWzEgMCAwIDEgNzIgMjE3Ljg1Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTIxLjQ4NzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2Ljk3MzkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03OC45NzM5IC0xOTYuMzY5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03OC45NzM5IDE5Ni4zNjkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDIyNSkgMy40ODY5MSBUagotWzEgMCAwIDEgODIuNDYwOCAxOTYuMzY5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04Ni45NDQgLTE5Ni4zNjldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCAxOTYuMzY5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoZSkgMTUuNDkxOCBUagotLTI5OSBUSm0KLShjb21wcmVzc2VkKSA0Ny4wMzM0IFRqCi0tMjk5IFRKbQotKFwwMDJsZSkgMTIuNzMyMiBUagotLTI5OSBUSm0KLShmb3JtYXQpIDI2LjU2MDMgVGoKLS0yOTkgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMzAwIFRKbQotKG5lKSA5LjQwNDY5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyKSA3Ljc0MDk0IFRqCi0tMjk5IFRKbQotKGRlc2lnbmVkKSAzNS40MTcgVGoKLS0yOTkgVEptCi0odG8pIDcuNzUwOSBUagotLTI5OSBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI5OSBUSm0KLShoYW5kbGVkKSAzMS41NDE2IFRqCi0tMjk5IFRKbQotKGJ5KSA5Ljk2MjYgVGoKLS0yOTkgVEptCi0oYSkgNC40MjMzOSBUagotLTI5OSBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMzEyIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjk5IFRKbQotKEkpIDMuMzE3NTUgVGoKLS0yOTkgVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI5OSBUSm0KLShoYWQpIDE0LjM4NiBUagotLTI5OSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjk5IFRKbQotKGp1bXApIDIwLjQ4MzEgVGoKLS0zMDAgVEptCi0odGhvdWdoKSAyNy42NzYxIFRqCi0tMjk5IFRKbQotKHNvbWUpIDIxLjAzMSBUagotODYuOTQ0IDE4NC40MTQgVGQKLShob29wcykgMjMuODAwNyBUagotLTI3OCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjc3IFRKbQotKHByb2R1Y2UpIDMyLjA4OTUgVGoKLS0yNzggVEptCi0oYW4pIDkuNDA0NjkgVGoKLS0yNzggVEptCi0oZWYpIDcuNzQwOTQgVGoKLTI1IFRKbQotKFwwMDJjaWVudCkgMjQuOTA2NSBUagotLTI3NyBUSm0KLShpbXBsZW1lbnRhdGlvbikgNjIuNTQ1MiBUagotLTI3OCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI3OCBUSm0KLShkZWNvbXByZXNzaW9uLikgNjIuMjU2MyBUagotLTc4NiBUSm0KLShJdCcpIDkuNDA0NjkgVGoKLTU1IFRKbQotKHMpIDMuODc1NDUgVGoKLS0yNzggVEptCi0oYSkgNC40MjMzOSBUagotLTI3NyBUSm0KLShiaXQpIDEwLjUyMDUgVGoKLS0yNzggVEptCi0oaGFpcnkpIDIwLjQ3MzEgVGoKLTY1IFRKbQotKC4pIDIuNDkwNjUgVGoKLS03ODYgVEptCi0oVCkgNi4wODcxNSBUagotMzUgVEptCi0ocnkpIDguMjk4ODUgVGoKLS0yNzggVEptCi0ocGFzc2luZykgMjkuODg3OCBUagotWzEgMCAwIDEgNDY4LjI2OSAxODQuNDE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OC4yNjkgLTE4NC40MTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ2OC4yNjkgMTg0LjQxNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShkZWNvbXByZXNzLmMpIDcxLjczMDcgVGoKLVsxIDAgMCAxIDU0MCAxODQuNDE0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtMTg0LjQxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDE3Mi40NTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odGhyb3VnaCkgMzAuOTkzNiBUagotLTI2OCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNjggVEptCi0oQykgNi42NDUwNSBUagotLTI2OCBUSm0KLShwcmVwcm9jZXNzb3IpIDUwLjg5ODkgVGoKLS0yNjkgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNjggVEptCi0oeW91JykgMTguMjYxNCBUagotMTAgVEptCi0obGwpIDUuNTM5MjEgVGoKLS0yNjggVEptCi0oc2VlKSAxMi43MjIyIFRqCi0tMjY4IFRKbQotKHdoYXQpIDE5LjM2NzMgVGoKLS0yNjggVEptCi0oSSkgMy4zMTc1NSBUagotLTI2OCBUSm0KLShtZWFuLikgMjQuMDY5NiBUagotLTcyOSBUSm0KLShNdWNoKSAyMy4yNDI3IFRqCi0tMjY4IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjY5IFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTI2OCBUSm0KLShjb21wbGUpIDI5LjMyOTkgVGoKLTE1IFRKbQotKHhpdHkpIDE1LjUwMTggVGoKLS0yNjggVEptCi0oY291bGQpIDIyLjEzNjkgVGoKLS0yNjggVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI2OCBUSm0KLShiZWVuKSAxOC44MDk0IFRqCi0tMjY4IFRKbQotKGEpIDQuNDIzMzkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMjAgVEptCi0ob2lkZWQpIDIyLjEzNjkgVGoKLS0yNjkgVEptCi0oaWYpIDYuMDg3MTUgVGoKLS0yNjggVEptCi0odGhlKSAxMi4xNzQzIFRqCi04Ni45NDQgMTYwLjUwMyBUZAotKGNvbXByZXNzZWQpIDQ3LjAzMzQgVGoKLS0yNTAgVEptCi0oc2l6ZSkgMTUuNDkxOCBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShlYWNoKSAxOC4yNTE1IFRqCi0tMjUwIFRKbQotKGJsb2NrKSAyMi4xMzY5IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHJlY29yZGVkKSAzNC44NDkyIFRqCi0tMjUwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKGRhdGEpIDE2LjU5NzcgVGoKLS0yNTAgVEptCi0oc3RyZWFtLikgMjkuMDUwOSBUagotWzEgMCAwIDEgMzY4Ljc1NCAxNjAuNTAzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5Ni43NTQgLTIxLjU4NjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2Ljk3MzkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03OC45NzM5IC0xMzguOTE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03OC45NzM5IDEzOC45MTcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDIyNSkgMy40ODY5MSBUagotWzEgMCAwIDEgODIuNDYwOCAxMzguOTE3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04Ni45NDQgLTEzOC45MTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCAxMzguOTE3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEFuKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKEFkbGVyKSAyMi42ODQ4IFRqCi0yMCBUSm0KLSgtMzIpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oY2hlY2tzdW0sKSA0Mi4zMzExIFRqCi0tMjUwIFRKbQotKHJhdGhlcikgMjMuMjMyOCBUagotLTI1MCBUSm0KLSh0aGFuKSAxNy4xNTU2IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oQ1JDMzIpIDI5Ljg5NzggVGoKLS0yNTAgVEptCi0oY2hlY2tzdW0sKSA0Mi4zMzExIFRqCi0tMjUwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvdWxkKSAxNy43MTM1IFRqCi0tMjUwIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFzdGVyKSAxOC44MDk0IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oY29tcHV0ZS4pIDM2LjgwMTggVGoKLVsxIDAgMCAxIDQyNC45MzQgMTM4LjkxN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNTIuOTM0IC0xMS43ODgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xMjcuMTI4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxMTcuMzMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSXQpIDYuMDg3MTUgVGoKLS0zNDkgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG91bGQpIDE3LjcxMzUgVGoKLS0zNDkgVEptCi0oYmUpIDkuNDA0NjkgVGoKLS0zNDkgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYWlyKSAxMC41MTA1IFRqCi0tMzQ4IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zNDkgVEptCi0oc2F5KSAxMy4yODAxIFRqCi0tMzQ5IFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0zNDkgVEptCi0odGhlKSAxMi4xNzQzIFRqCi1bMSAwIDAgMSAyMDEuOTc5IDExNy4zM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDEuOTc5IC0xMTcuMzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIwMS45NzkgMTE3LjMzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAyMzEuODY3IDExNy4zM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzEuODY3IC0xMTcuMzNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIzNS4zNDIgMTE3LjMzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGZvcm1hdCkgMjYuNTYwMyBUagotLTM0OSBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0oYXMpIDguMjk4ODUgVGoKLS0zNDkgVEptCi0oZnJvemVuKSAyNS40NDQ1IFRqCi0tMzQ4IFRKbQotKGJlZm9yZSkgMjUuNDQ0NSBUagotLTM0OSBUSm0KLShJKSAzLjMxNzU1IFRqCi0tMzQ5IFRKbQotKHByb3Blcmx5KSAzMy43NTMzIFRqCi0tMzQ5IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMzQ5IFRKbQotKGZ1bGx5KSAxOC44MTk0IFRqCi0tMzQ5IFRKbQotKHVuZGVyc3Rvb2QpIDQ0LjI3MzggVGoKLS0zNDggVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzQ5IFRKbQotKHBlcmZvcm1hbmNlKSA1MC4zNDEgVGoKLTcyIDEwNS4zNzUgVGQKLShjb25zZXF1ZW5jZXMpIDU0Ljc3NDQgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0oZG9pbmcpIDIyLjY5NDggVGoKLS0yNTAgVEptCi0oc28uKSAxMS4zNDc0IFRqCi1bMSAwIDAgMSA3MiAxMDMuMjE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS42MzE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC05My41ODY3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA4My43ODgzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEltcHJvKSAyNC4zNDg2IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVtZW50cykgMjguMjI0IFRqCi0tMjUwIFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKEkpIDMuMzE3NTUgVGoKLS0yNTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKGFibGUpIDE2LjU5NzcgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShpbmNvcnBvcmF0ZSkgNDUuMzY5NyBUagotLTI1MCBUSm0KLShpbnRvKSAxNS41MDE4IFRqCi0tMjUwIFRKbQotKDAuOS4wLCkgMjIuNDE1OSBUagotLTI1MCBUSm0KLShkZXNwaXRlKSAyOC4yMjQgVGoKLS0yNTAgVEptCi0odXNpbmcpIDIxLjU4OSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oc2FtZSkgMjAuNDczMSBUagotLTI1MCBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yNTAgVEptCi0oZm9ybWF0LCkgMjkuMDUwOSBUagotLTI1MCBUSm0KLShhcmU6KSAxNC45MzM5IFRqCi1bMSAwIDAgMSA3MiA4MS42MzE1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMzAuNzc5Nl0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDAuNTcyNiAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5My44NDEgLTUwLjk1MTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNC40MTQgNTAuOTUxNCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzMSkgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVQYWdlOiAzNSAzNQotJSVCZWdpblBhZ2VTZXR1cAotJSVQYWdlT3JpZW50YXRpb246IFBvcnRyYWl0Ci1wZGZTdGFydFBhZ2UKLTAgMCA2MTIgNzkyIHJlIFcKLSUlRW5kUGFnZVNldHVwCi1bXSAwIGQKLTEgaQotMCBqCi0wIEoKLTEwIE0KLTEgdwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotZmFsc2Ugb3AKLWZhbHNlIE9QCi0wIDAgNjEyIDc5MiByZQotVwotcQotWzEgMCAwIDEgNzIgNzQxLjU1NF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDE0LjQ0NTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxODcuMTk3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgLTYuODU0MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTE2LjMyOCAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM4Mi40IC03NDkuMjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTguNzI4IDc0OS4yNDUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oTWlzY2VsbGFuZWEpIDQ4LjEzOTMgVGoKLVsxIDAgMCAxIDI2Ni4wNzEgNzQ5LjE0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDI4MC43OTYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NzIuOTc0IC03LjA5MzZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0wLjQ5ODFdIGNtCi1xCi1bXSAwIGQKLTAgSgotMC40OTgxIHcKLTAgMC4yNDkxIG0KLTQ3NS40NjUgMC4yNDkxIGwKLVMKLVEKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ3OS4yNTEgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0zMS41MTY4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi45NzM5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzguOTczOSAtNzEwLjAzN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzguOTczOSA3MTAuMDM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwyMjUpIDMuNDg2OTEgVGoKLVsxIDAgMCAxIDgyLjQ2MDggNzEwLjAzN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS45OTI1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODYuOTQ0IC03MTAuMDM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgNzEwLjAzNyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShTaW5nbGUpIDI1LjQ2NDQgVGoKLS0yMDIgVEptCi0oYXJyYXkpIDIwLjQ2MzIgVGoKLS0yMDEgVEptCi0oaW1wbGVtZW50YXRpb24pIDYyLjU0NTIgVGoKLS0yMDIgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yMDIgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjAxIFRKbQotKGluKSA3Ljc1MDkgVGoKLTQwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzZSkgMTYuMDM5OCBUagotLTIwMiBUSm0KLShCV1QpIDIyLjEzNjkgVGoKLTc0IFRKbQotKC4pIDIuNDkwNjUgVGoKLS00MDMgVEptCi0oVGhpcykgMTcuNzEzNSBUagotLTIwMiBUSm0KLShzaWduaVwwMDJjYW50bHkpIDQ5LjI2NTEgVGoKLS0yMDEgVEptCi0oc3BlZWRzKSAyNi41NjAzIFRqCi0tMjAyIFRKbQotKHVwKSA5Ljk2MjYgVGoKLS0yMDIgVEptCi0oZGVjb21wcmVzc2lvbiwpIDYyLjI1NjMgVGoKLS0yMTEgVEptCi0ocHJlc3VtYWJseSkgNDYuNDg1NSBUagotLTIwMiBUSm0KLShiZWNhdXNlKSAzMS41MzE2IFRqCi04Ni45NDQgNjk4LjA4MiBUZAotKGl0KSA1LjUzOTIxIFRqCi0tMjUwIFRKbQotKHJlZHVjZXMpIDMwLjQyNTggVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKG51bWJlcikgMzAuNDM1NyBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShjYWNoZSkgMjIuNjc0OSBUagotLTI1MCBUSm0KLShtaXNzZXMuKSAyOS4wNjA5IFRqCi1bMSAwIDAgMSAyNDAuNDk2IDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTY4LjQ5NiAtMjEuOTE3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuOTczOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc4Ljk3MzkgLTY3Ni4xNjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc4Ljk3MzkgNjc2LjE2NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMjI1KSAzLjQ4NjkxIFRqCi1bMSAwIDAgMSA4Mi40NjA4IDY3Ni4xNjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtNjc2LjE2NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDY3Ni4xNjQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oRikgNS41MzkyMSBUagotMTUgVEptCi0oYXN0ZXIpIDE4LjgwOTQgVGoKLS0zMTQgVEptCi0oaW4pIDcuNzUwOSBUagotNDAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlcnNlKSAxNi4wMzk4IFRqCi0tMzE1IFRKbQotKE1URikgMjAuNDgzMSBUagotLTMxNCBUSm0KLSh0cmFuc2Zvcm0pIDM4LjczNDYgVGoKLS0zMTUgVEptCi0oZm9yKSAxMS42MTY0IFRqCi0tMzE0IFRKbQotKGxhcikgMTAuNTEwNSBUagotMTggVEptCi0oZ2UpIDkuNDA0NjkgVGoKLS0zMTUgVEptCi0oTVRGKSAyMC40ODMxIFRqCi0tMzE0IFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZXMuKSAyMi45NjM4IFRqCi0tNTA0IFRKbQotKFRoZSkgMTUuNDkxOCBUagotLTMxNCBUSm0KLShuZSkgOS40MDQ2OSBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0zMTQgVEptCi0oaW1wbGVtZW50YXRpb24pIDYyLjU0NTIgVGoKLS0zMTUgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0zMTQgVEptCi0oYmFzZWQpIDIyLjY4NDggVGoKLS0zMTUgVEptCi0ob24pIDkuOTYyNiBUagotLTMxNCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMTUgVEptCi0obm90aW9uKSAyNS40NjQ0IFRqCi0tMzE0IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzE1IFRKbQotKHNsaWRpbmcpIDI3LjEyODIgVGoKLTg2Ljk0NCA2NjQuMjA5IFRkCi0oYmxvY2tzKSAyNi4wMTIzIFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWx1ZXMuKSAyMi45NjM4IFRqCi1bMSAwIDAgMSAxNTMuOTMyIDY2NC4yMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODEuOTMyMSAtMjEuOTE3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuOTczOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc4Ljk3MzkgLTY0Mi4yOTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc4Ljk3MzkgNjQyLjI5MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMjI1KSAzLjQ4NjkxIFRqCi1bMSAwIDAgMSA4Mi40NjA4IDY0Mi4yOTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtNjQyLjI5MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDY0Mi4yOTEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDItMC45LjApIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDE1Mi42OTcgNjQyLjI5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTIuNjk3IC02NDIuMjkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTUuNDEyIDY0Mi4yOTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0obm8pIDkuOTYyNiBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLS0yNzIgVEptCi0ocmVhZHMpIDIxLjAyMTEgVGoKLS0yNzMgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNzIgVEptCi0od3JpdGVzKSAyNC4zNDg2IFRqCi0tMjczIFRKbQotKFwwMDJsZXMpIDE2LjYwNzcgVGoKLS0yNzIgVEptCi0od2l0aCkgMTcuNzEzNSBUagotWzEgMCAwIDEgMjgyLjY4IDY0Mi4yOTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjgyLjY4IC02NDIuMjkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yODIuNjggNjQyLjI5MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmcmVhZCkgMjkuODg3OCBUagotWzEgMCAwIDEgMzEyLjU2OCA2NDIuMjkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMxMi41NjggLTY0Mi4yOTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMxNS4yODIgNjQyLjI5MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotWzEgMCAwIDEgMzMyLjM4MyA2NDIuMjkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzMi4zODMgLTY0Mi4yOTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMzMi4zODMgNjQyLjI5MSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShmd3JpdGUpIDM1Ljg2NTQgVGoKLVsxIDAgMCAxIDM2OC4yNDggNjQyLjI5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNjguMjQ4IC02NDIuMjkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNjguMjQ4IDY0Mi4yOTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOykgMi43Njk2IFRqCi0tMjg0IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9uKSAyNC4zNDg2IFRqCi0tMjcyIFRKbQotKDAuMSkgMTIuNDUzMyBUagotLTI3MyBUSm0KLSh1c2VkKSAxOC4yNjE0IFRqCi1bMSAwIDAgMSA0NDEuODgyIDY0Mi4yOTFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDQxLjg4MiAtNjQyLjI5MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDQxLjg4MiA2NDIuMjkxIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKHB1dGMpIDIzLjkxMDIgVGoKLVsxIDAgMCAxIDQ2NS43OTIgNjQyLjI5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjUuNzkyIC02NDIuMjkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NjguNTA3IDY0Mi4yOTEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDQ4NS42MDcgNjQyLjI5MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00ODUuNjA3IC02NDIuMjkxXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00ODUuNjA3IDY0Mi4yOTEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZ2V0YykgMjMuOTEwMiBUagotWzEgMCAwIDEgNTA5LjUxNyA2NDIuMjkxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwOS41MTcgLTY0Mi4yOTFdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwOS41MTcgNjQyLjI5MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSguKSAyLjQ5MDY1IFRqCi0tNzU1IFRKbQotKER1aCEpIDIwLjQ3MzEgVGoKLTg2Ljk0NCA2MzAuMzM2IFRkCi0oVykgOS40MDQ2OSBUagotODAgVEptCi0oZWxsLCkgMTIuNDUzMyBUagotLTI1MCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0obGkpIDUuNTM5MjEgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI1MCBUSm0KLShsZWFybi4pIDIyLjQwNTkgVGoKLVsxIDAgMCAxIDE4NC4yNDggNjMwLjMzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMTIuMjQ4IC0xMi4xMTk1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02MTguMjE3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2MDguNDE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKEZ1cnRoZXIpIDI5LjMyOTkgVGoKLS0zMDQgVEptCi0oYWhlYWQsKSAyNS43MjM0IFRqCi0tMzE4IFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMzA1IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvdWxkKSAxNy43MTM1IFRqCi0tMzA0IFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMzA1IFRKbQotKG5pY2UpIDE2LjU5NzcgVGoKLS0zMDQgVEptCi0odG8pIDcuNzUwOSBUagotLTMwNSBUSm0KLShiZSkgOS40MDQ2OSBUagotLTMwNCBUSm0KLShhYmxlKSAxNi41OTc3IFRqCi0tMzA0IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zMDUgVEptCi0oZG8pIDkuOTYyNiBUagotLTMwNCBUSm0KLShyYW5kb20pIDMwLjQzNTcgVGoKLS0zMDUgVEptCi0oYWNjZXNzKSAyNS40NDQ1IFRqCi0tMzA0IFRKbQotKGludG8pIDE1LjUwMTggVGoKLS0zMDUgVEptCi0oXDAwMmxlcy4pIDE5LjA5ODMgVGoKLS05NDYgVEptCi0oVGhpcykgMTcuNzEzNSBUagotLTMwNSBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMzA0IFRKbQotKHJlcXVpcmUpIDI4LjIxNDEgVGoKLS0zMDQgVEptCi0oc29tZSkgMjEuMDMxIFRqCi0tMzA1IFRKbQotKGNhcmVmdWwpIDI3LjY1NjIgVGoKLS0zMDQgVEptCi0oZGVzaWduKSAyNi4wMTIzIFRqCi0tMzA1IFRKbQotKG9mKSA4LjI5ODg1IFRqCi03MiA1OTYuNDYzIFRkCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotLTI1MCBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yNTAgVEptCi0oZm9ybWF0cy4pIDMyLjkyNjQgVGoKLVsxIDAgMCAxIDcyIDU5NC4zMDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU4NC4zNDRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU2MS43MSBUZAotL0YxMjJfMCAyMC42NTg1IFRmCi0oNC4yLikgMzQuNDU4NCBUagotLTI3OCBUSm0KLShQKSAxMy43NzkyIFRqCi00MCBUSm0KLShvcikgMjAuNjU4NSBUagotLTIwIFRKbQotKHRhYmlsaXR5KSA2Ni41ODIzIFRqCi0tMjc4IFRKbQotKGlzc3VlcykgNjQuMzA5OSBUagotWzEgMCAwIDEgNzIgNTU3LjQzNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTQ3LjQ3Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTM5Ljc5MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShBZnRlcikgMjEuMDIxMSBUagotLTI1MCBUSm0KLShzb21lKSAyMS4wMzEgVGoKLS0yNTAgVEptCi0oY29uc2lkZXJhdGlvbiwpIDU2LjE2OTEgVGoKLS0yNTAgVEptCi0oSSkgMy4zMTc1NSBUagotLTI1MCBUSm0KLShoYSkgOS40MDQ2OSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKGRlY2lkZWQpIDMwLjk4MzcgVGoKLS0yNTAgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odXNlKSAxMy4yODAxIFRqCi0tMjUwIFRKbQotKEdOVSkgMjEuNTc5IFRqCi1bMSAwIDAgMSAzMDMuMjMxIDUzOS43OTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzAzLjIzMSAtNTM5Ljc5M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzAzLjIzMSA1MzkuNzkzIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGF1dG9jb25mKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSAzNTEuMDUyIDUzOS43OTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzUxLjA1MiAtNTM5Ljc5M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzUzLjU0MiA1MzkuNzkzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oY29uXDAwMmd1cmUpIDM3LjYyODcgVGoKLS0yNTAgVEptCi0oMC45LjUpIDE5LjkyNTIgVGoKLS0yNTAgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0oMS4wLikgMTQuOTQzOSBUagotWzEgMCAwIDEgNzIgNTM3LjYzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNTI3LjY3M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTE3Ljg3NSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShhdXRvY29uZikgNDcuODIwNSBUagotWzEgMCAwIDEgMTE5LjgyMSA1MTcuODc1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExOS44MjEgLTUxNy44NzVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExOS44MjEgNTE3Ljg3NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tNTAyIFRKbQotKGFkbWlyYWJsZSkgMzkuODQwNCBUagotLTQ1MiBUSm0KLShhbmQpIDE0LjM4NiBUagotLTQ1MiBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0ob25kZXJmdWwpIDMzLjc1MzMgVGoKLS00NTIgVEptCi0odGhvdWdoKSAyNy42NzYxIFRqCi0tNDUyIFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tNDUyIFRKbQotKGlzLCkgOS4xMzU3IFRqCi0tNTAyIFRKbQotKG1haW5seSkgMjcuNjc2MSBUagotLTQ1MiBUSm0KLShhc3Npc3RzKSAyNS40NjQ0IFRqCi0tNDUyIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS00NTIgVEptCi0ocG9ydGFiaWxpdHkpIDQxLjUxNDIgVGoKLS00NTIgVEptCi0ocHJvYmxlbXMpIDM3LjA4MDggVGoKLS00NTIgVEptCi0oYmV0d2VlbikgMzMuMTk1NCBUagotLTQ1MiBUSm0KLShVbml4LWxpaykgMzMuNzYzMyBUagotMTAgVEptCi0oZSkgNC40MjMzOSBUagotNzIgNTA1LjkyIFRkCi0ocGxhdGZvcm1zLikgNDAuNjc3MyBUagotLTEzOTggVEptCi0oQnV0KSAxNC4zOTYgVGoKLVsxIDAgMCAxIDE0NC43ODQgNTA1LjkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE0NC43ODQgLTUwNS45Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQ0Ljc4NCA1MDUuOTIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDE3NC42NzIgNTA1LjkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE3NC42NzIgLTUwNS45Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTc4LjQ1NSA1MDUuOTIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oZG9lc24nKSAyNi41NjAzIFRqCi0xOCBUSm0KLSh0KSAyLjc2OTYgVGoKLS0zODAgVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTM3OSBUSm0KLShtdWNoKSAyMi4xMzY5IFRqCi0tMzgwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0zODAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzc5IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShheSkgOS40MDQ2OSBUagotLTM4MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTM4MCBUSm0KLShwb3J0YWJpbGl0eSkgNDEuNTE0MiBUagotLTM3OSBUSm0KLShwcm9ibGVtcykgMzcuMDgwOCBUagotLTM4MCBUSm0KLShvbikgOS45NjI2IFRqCi0tMzgwIFRKbQotKFVuaXg7KSAyMi42OTQ4IFRqCi0tNDQ0IFRKbQotKG1vc3QpIDE5LjM3NzMgVGoKLS0zODAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0zODAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzc5IFRKbQotKGRpZikgMTEuMDY4NCBUagotMjUgVEptCi0oXDAwMmN1bHRpZXMpIDMxLjU1MTYgVGoKLTcyIDQ5My45NjQgVGQKLShhcHBlYXIpIDI2LjU1MDMgVGoKLS0yOTcgVEptCi0od2hlbikgMjEuNTc5IFRqCi0tMjk2IFRKbQotKHBvKSA5Ljk2MjYgVGoKLS0xIFRKbQotKHIpIDMuMzE3NTUgVGoKLTEgVEptCi0odGluZykgMTUuNTAxOCBUagotLTI5NyBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjk3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5NyBUSm0KLShNYWMsKSAyMC4xOTQyIFRqCi0tMzA4IFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMjk3IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yOTcgVEptCi0oTWljcm9zb2Z0JykgNDIuNjEgVGoKLTU1IFRKbQotKHMpIDMuODc1NDUgVGoKLS0yOTYgVEptCi0ob3BlcmF0aW5nKSAzNy42Mjg3IFRqCi0tMjk3IFRKbQotKHN5c3RlbXMuKSAzNC4wNDIyIFRqCi1bMSAwIDAgMSAzNjEuMzM5IDQ5My45NjRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzYxLjMzOSAtNDkzLjk2NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzYxLjMzOSA0OTMuOTY0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGF1dG9jb25mKSA0Ny44MjA1IFRqCi1bMSAwIDAgMSA0MDkuMTYgNDkzLjk2NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MDkuMTYgLTQ5My45NjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQxMi4xMTYgNDkzLjk2NCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShkb2VzbicpIDI2LjU2MDMgVGoKLTE4IFRKbQotKHQpIDIuNzY5NiBUagotLTI5NyBUSm0KLShoZWxwKSAxNy4xNTU2IFRqCi0tMjk2IFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yOTcgVEptCi0odGhvc2UpIDIxLjAzMSBUagotLTI5NyBUSm0KLShjYXNlcywpIDIzLjUxMTcgVGoKLS0zMDggVEptCi0oYW5kKSAxNC4zODYgVGoKLTcyIDQ4Mi4wMDkgVGQKLShicmluZ3MpIDI0LjkwNjUgVGoKLS0yNTAgVEptCi0oaW4pIDcuNzUwOSBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKHdob2xlKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKGxvYWQpIDE3LjE1NTYgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0obmUpIDkuNDA0NjkgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi0tMjUwIFRKbQotKGNvbXBsZSkgMjkuMzI5OSBUagotMTUgVEptCi0oeGl0eSkgMTUuNTAxOCBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgNDc5Ljg1Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDY5Ljg5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NjAuMDkxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKE1vc3QpIDIwLjQ4MzEgVGoKLS0zOTIgVEptCi0ocGVvcGxlKSAyNi41NjAzIFRqCi0tMzkyIFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotLTM5MyBUSm0KLShiZSkgOS40MDQ2OSBUagotLTM5MiBUSm0KLShhYmxlKSAxNi41OTc3IFRqCi0tMzkyIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zOTIgVEptCi0oY29tcGlsZSkgMzIuMDk5NSBUagotLTM5MyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zOTIgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTM5MiBUSm0KLShhbmQpIDE0LjM4NiBUagotLTM5MiBUSm0KLShwcm9ncmFtKSAzMy43NTMzIFRqCi0tMzkzIFRKbQotKHVuZGVyKSAyMi42ODQ4IFRqCi0tMzkyIFRKbQotKFVuaXgpIDE5LjkyNTIgVGoKLS0zOTIgVEptCi0oc3RyYWlnaHQpIDI5Ljg4NzggVGoKLS0zOTIgVEptCi0ob3V0LW9mLXRoZS1ib3gsKSA2MC41OTI1IFRqCi0tNDI4IFRKbQotKHNvKSA4Ljg1Njc1IFRqCi0tMzkyIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0zOTMgVEptCi0oc3BlYWssKSAyNS4xNzU1IFRqCi03MiA0NDguMTM2IFRkCi0oZXNwZWNpYWxseSkgMzkuODQwNCBUagotLTI1MCBUSm0KLShpZikgNi4wODcxNSBUagotLTI1MCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9uKSAyNC4zNDg2IFRqCi0tMjUwIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKEdOVSkgMjEuNTc5IFRqCi0tMjUwIFRKbQotKEMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhaWxhYmxlLikgMjkuMDUwOSBUagotWzEgMCAwIDEgNzIgNDQ1Ljk3OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDM2LjAxN10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDI2LjIxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGVyZSkgMjMuMjMyOCBUagotLTI1OSBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yNTggVEptCi0oYSkgNC40MjMzOSBUagotLTI1OSBUSm0KLShjb3VwbGUpIDI2LjU2MDMgVGoKLS0yNTggVEptCi0ob2YpIDguMjk4ODUgVGoKLVsxIDAgMCAxIDE1OS41NjEgNDI2LjIxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNTkuNTYxIC00MjYuMjE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNTkuNTYxIDQyNi4yMTggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oX19pbmxpbmVfXykgNTkuNzc1NiBUagotWzEgMCAwIDEgMjE5LjMzNyA0MjYuMjE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTIxOS4zMzcgLTQyNi4yMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTIyMS45MTMgNDI2LjIxOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShkaXJlY3RpKSAyNS40NTQ0IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVzKSA4LjI5ODg1IFRqCi0tMjU5IFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNTggVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjU5IFRKbQotKGNvZGUuKSAyMS4zIFRqCi0tNjcxIFRKbQotKEdOVSkgMjEuNTc5IFRqCi0tMjU5IFRKbQotKEMpIDYuNjQ1MDUgVGoKLS0yNTggVEptCi0oXCgpIDMuMzE3NTUgVGoKLVsxIDAgMCAxIDM1Mi41ODcgNDI2LjIxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNTIuNTg3IC00MjYuMjE4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNTIuNTg3IDQyNi4yMTggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZ2NjKSAxNy45MzI3IFRqCi1bMSAwIDAgMSAzNzAuNTIgNDI2LjIxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNzAuNTIgLTQyNi4yMThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM3MC41MiA0MjYuMjE4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwpKSAzLjMxNzU1IFRqCi0tMjU5IFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotLTI1OCBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI1OSBUSm0KLShhYmxlKSAxNi41OTc3IFRqCi0tMjU4IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTkgVEptCi0oaGFuZGxlKSAyNi41NjAzIFRqCi0tMjU5IFRKbQotKHRoZW0uKSAyMi40MTU5IFRqCi0tNjcxIFRKbQotKElmKSA2LjYzNTA5IFRqCi0tMjU5IFRKbQotKHlvdScpIDE4LjI2MTQgVGoKLTUwIFRKbQotKHJlKSA3Ljc0MDk0IFRqCi03MiA0MTQuMjYzIFRkCi0obm90KSAxMi43MzIyIFRqCi0tMjc5IFRKbQotKHVzaW5nKSAyMS41ODkgVGoKLS0yNzkgVEptCi0oR05VKSAyMS41NzkgVGoKLS0yNzkgVEptCi0oQywpIDkuMTM1NyBUagotLTI3OSBUSm0KLSh5b3VyKSAxOC4yNjE0IFRqCi0tMjc5IFRKbQotKEMpIDYuNjQ1MDUgVGoKLS0yNzkgVEptCi0oY29tcGlsZXIpIDM1LjQxNyBUagotLTI3OSBUSm0KLShzaG91bGRuJykgMzQuODY5MSBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMjc5IFRKbQotKHNlZSkgMTIuNzIyMiBUagotLTI3OSBUSm0KLSh0aGVtKSAxOS45MjUyIFRqCi0tMjc5IFRKbQotKGF0KSA3LjE5MyBUagotLTI3OSBUSm0KLShhbGwuKSAxMi40NTMzIFRqCi0tNzk0IFRKbQotKElmKSA2LjYzNTA5IFRqCi0tMjc5IFRKbQotKHlvdXIpIDE4LjI2MTQgVGoKLS0yNzkgVEptCi0oY29tcGlsZXIpIDM1LjQxNyBUagotLTI3OSBUSm0KLShkb2VzLCkgMjAuNzUyMSBUagotLTI4NiBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0yNzkgVEptCi0oc29tZSkgMjEuMDMxIFRqCi0tMjc5IFRKbQotKHJlYXNvbiwpIDI4LjQ5MyBUagotLTI4NyBUSm0KLShzZWUpIDEyLjcyMjIgVGoKLS0yNzkgVEptCi0odGhlbSkgMTkuOTI1MiBUagotLTI3OSBUSm0KLShhbmQpIDE0LjM4NiBUagotNzIgNDAyLjMwOCBUZAotKGRvZXNuJykgMjYuNTYwMyBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMjgzIFRKbQotKGxpaykgMTAuNTIwNSBUagotMTAgVEptCi0oZSkgNC40MjMzOSBUagotLTI4MyBUSm0KLSh0aGVtLCkgMjIuNDE1OSBUagotLTI5MSBUSm0KLShqdXN0KSAxNC4zOTYgVGoKLVsxIDAgMCAxIDE2NC4xNjcgNDAyLjMwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjQuMTY3IC00MDIuMzA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjQuMTY3IDQwMi4zMDggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oI2RlZmluZSkgNDEuODQyOSBUagotWzEgMCAwIDEgMjA2LjAxIDQwMi4zMDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjgxOTYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDguODI5IC00MDIuMzA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDguODI5IDQwMi4zMDggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oX19pbmxpbmVfXykgNTkuNzc1NiBUagotWzEgMCAwIDEgMjY4LjYwNSA0MDIuMzA4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI2OC42MDUgLTQwMi4zMDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI3MS40MjUgNDAyLjMwOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0bykgNy43NTA5IFRqCi0tMjgzIFRKbQotKGJlKSA5LjQwNDY5IFRqCi1bMSAwIDAgMSAyOTQuMjIgNDAyLjMwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yOTQuMjIgLTQwMi4zMDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI5NC4yMiA0MDIuMzA4IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC8pIDUuOTc3NTYgVGoKLTMwMC4xOTcgNDAwLjU2NSBUZAotKCopIDUuOTc3NTYgVGoKLS02MDAgVEptCi0oKikgNS45Nzc1NiBUagotMzE4LjEzIDQwMi4zMDggVGQKLSgvKSA1Ljk3NzU2IFRqCi1bMSAwIDAgMSAzMjQuMTA4IDQwMi4zMDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzI0LjEwOCAtNDAyLjMwOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzI0LjEwOCA0MDIuMzA4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKC4pIDIuNDkwNjUgVGoKLS04MTggVEptCi0oT25lKSAxNi41OTc3IFRqCi0tMjgzIFRKbQotKGVhc3kpIDE3LjcwMzUgVGoKLS0yODMgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGF5KSA5LjQwNDY5IFRqCi0tMjgzIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yODMgVEptCi0oZG8pIDkuOTYyNiBUagotLTI4MyBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yODMgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yODMgVEptCi0odG8pIDcuNzUwOSBUagotLTI4MyBUSm0KLShjb21waWxlKSAzMi4wOTk1IFRqCi0tMjgzIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yODMgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjgzIFRKbQotKFwwMDNhZykgMTQuOTQzOSBUagotWzEgMCAwIDEgNzIgMzkwLjM1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzkwLjM1M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzkwLjM1MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSgtRF9faW5saW5lX189KSA3Ny43MDgzIFRqCi1bMSAwIDAgMSAxNDkuNzA5IDM5MC4zNTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTQ5LjcwOSAtMzkwLjM1M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTQ5LjcwOSAzOTAuMzUzIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0yNTAgVEptCi0od2hpY2gpIDI0LjM0ODYgVGoKLS0yNTAgVEptCi0oc2hvdWxkKSAyNi41NzAzIFRqCi0tMjUwIFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMjUwIFRKbQotKHVuZGVyc3Rvb2QpIDQ0LjI3MzggVGoKLS0yNTAgVEptCi0oYnkpIDkuOTYyNiBUagotLTI1MCBUSm0KLShtb3N0KSAxOS4zNzczIFRqCi0tMjUwIFRKbQotKFVuaXgpIDE5LjkyNTIgVGoKLS0yNTAgVEptCi0oY29tcGlsZXJzLikgNDEuNzgzMSBUagotWzEgMCAwIDEgNzIgMzg4LjE5Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzc4LjIzM10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzY4LjQzNSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJZikgNi42MzUwOSBUagotLTMyMSBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0zMjEgVEptCi0oc3RpbGwpIDE0Ljk1MzkgVGoKLS0zMjIgVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTMyMSBUSm0KLShkaWYpIDExLjA2ODQgVGoKLTI1IFRKbQotKFwwMDJjdWx0aWVzLCkgMzQuMDQyMiBUagotLTMzOSBUSm0KLSh0cnkpIDExLjA2ODQgVGoKLS0zMjEgVEptCi0oY29tcGlsaW5nKSA0MC40MDgzIFRqCi0tMzIxIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0zMjIgVEptCi0odCkgMi43Njk2IFRqCi0xIFRKbQotKGhlKSA5LjQwNDY5IFRqCi0tMzIyIFRKbQotKG1hY3JvKSAyNC44OTY1IFRqCi1bMSAwIDAgMSAzMTAuMjk1IDM2OC40MzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzEwLjI5NSAtMzY4LjQzNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzEwLjI5NSAzNjguNDM1IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1NUUklDVF9BTlNJKSA4My42ODU4IFRqCi1bMSAwIDAgMSAzOTMuOTgxIDM2OC40MzVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzkzLjk4MSAtMzY4LjQzNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzk3LjE4IDM2OC40MzUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oZGVcMDAybmVkLikgMzEuODIwNSBUagotLTUyNCBUSm0KLShUaGlzKSAxNy43MTM1IFRqCi0tMzIxIFRKbQotKHNob3VsZCkgMjYuNTcwMyBUagotLTMyMSBUSm0KLShlbmFibGUpIDI2LjAwMjQgVGoKLS0zMjEgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMzIyIFRKbQotKHRvKSA3Ljc1MDkgVGoKLTcyIDM1Ni40OCBUZAotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWlsZCkgMTUuNTAxOCBUagotLTMyMSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMjEgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTMyMiBUSm0KLShpbikgNy43NTA5IFRqCi0tMzIxIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zMjEgVEptCi0oc3RyaWN0bHkpIDI3LjY3NjEgVGoKLS0zMjEgVEptCi0oQU5TSSkgMjMuMjQyNyBUagotLTMyMSBUSm0KLShjb21wbGlhbnQpIDM5Ljg1MDQgVGoKLS0zMjIgVEptCi0oZW4pIDkuNDA0NjkgVGoKLTQwIFRKbQotKHZpcm9ubWVudC4pIDQzLjQ0NjkgVGoKLS0xMDQ3IFRKbQotKEJ1aWxkaW5nKSAzNC44NzkxIFRqCi0tMzIxIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTMyMSBUSm0KLShwcm9ncmFtKSAzMy43NTMzIFRqCi0tMzIyIFRKbQotKGl0c2VsZikgMTkuOTI1MiBUagotLTMyMSBUSm0KLShsaWspIDEwLjUyMDUgVGoKLTEwIFRKbQotKGUpIDQuNDIzMzkgVGoKLS0zMjEgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMzIxIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMzIxIFRKbQotKGRhbmdlcm91cykgNDAuOTQ2MyBUagotLTMyMiBUSm0KLShhbmQpIDE0LjM4NiBUagotNzIgMzQ0LjUyNSBUZAotKG5vdCkgMTIuNzMyMiBUagotLTI2MCBUSm0KLShzdXBwb3J0ZWQsKSA0MS43ODMxIFRqCi0tMjYzIFRKbQotKHNpbmNlKSAyMC40NzMxIFRqCi0tMjYwIFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI2MCBUSm0KLShyZW1vKSAyMC40NzMxIFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLVsxIDAgMCAxIDIwNC40OTggMzQ0LjUyNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMDQuNDk4IC0zNDQuNTI1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMDQuNDk4IDM0NC41MjUgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDIzNC4zODYgMzQ0LjUyNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMzQuMzg2IC0zNDQuNTI1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMzQuMzg2IDM0NC41MjUgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oJykgMy4zMTc1NSBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTI2MCBUSm0KLShjaGVja3MpIDI3LjEwODIgVGoKLS0yNjAgVEptCi0oYWcpIDkuNDA0NjkgVGoKLTUgVEptCi0oYWluc3QpIDE4LjgxOTQgVGoKLS0yNjEgVEptCi0oY29tcHJlc3NpKSA0MC4zOTgzIFRqCi0xIFRKbQotKG5nKSA5Ljk2MjYgVGoKLS0yNjEgVEptCi0oZGlyZWN0b3JpZXMsKSA0NC41NDI4IFRqCi0tMjYyIFRKbQotKHN5bWJvbGljKSAzNi41MzI5IFRqCi0tMjYxIFRKbQotKGxpbmtzLCkgMjEuODY3OSBUagotLTI2MiBUSm0KLShkZSkgOS40MDQ2OSBUagotMjUgVEptCi0odmljZXMsKSAyMi45NjM4IFRqCi0tMjYzIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjYwIFRKbQotKG90aGVyKSAyMC40NzMxIFRqCi03MiAzMzIuNTcgVGQKLShub3QtcmVhbGx5LWEtXDAwMmxlKSA2Mi41MjUzIFRqCi0tMjUwIFRKbQotKGVudGl0aWVzLikgMzEuMjcyNiBUagotLTYyMCBUSm0KLShUaGlzKSAxNy43MTM1IFRqCi0tMjUwIFRKbQotKGNvdWxkKSAyMi4xMzY5IFRqCi0tMjUwIFRKbQotKGNhdXNlKSAyMi4xMjY5IFRqCi0tMjUwIFRKbQotKFwwMDJsZXN5c3RlbSkgNDAuNDA4MyBUagotLTI1MCBUSm0KLShjb3JydXB0aW9uISkgNDQuODIxNyBUagotWzEgMCAwIDEgNzIgMzMwLjQxM10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzIwLjQ1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzMTAuNjUyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKE9uZSkgMTYuNTk3NyBUagotLTM5MiBUSm0KLShvdGhlcikgMjAuNDczMSBUagotLTM5MSBUSm0KLSh0aGluZzopIDIzLjI1MjcgVGoKLS01OTQgVEptCi0oaWYpIDYuMDg3MTUgVGoKLS0zOTEgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMzkyIFRKbQotKGNyZWF0ZSkgMjMuNzgwNyBUagotLTM5MSBUSm0KLShhKSA0LjQyMzM5IFRqCi1bMSAwIDAgMSAyMTAuODc5IDMxMC42NTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjEwLjg3OSAtMzEwLjY1Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjEwLjg3OSAzMTAuNjUyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAyNDAuNzY3IDMxMC42NTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjQwLjc2NyAtMzEwLjY1Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjQ0LjY2OSAzMTAuNjUyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGJpbmFyeSkgMjUuNDU0NCBUagotLTM5MiBUSm0KLShmb3IpIDExLjYxNjQgVGoKLS0zOTEgVEptCi0ocHVibGljKSAyNC45MDY1IFRqCi0tMzkyIFRKbQotKGRpc3RyaWIpIDI1LjQ2NDQgVGoKLTIwIFRKbQotKHV0aW9uLCkgMjIuOTczOCBUagotLTQyNyBUSm0KLShwbGVhc2UpIDI0Ljg5NjUgVGoKLS0zOTIgVEptCi0oY29uc2lkZXIpIDMzLjc1MzMgVGoKLS0zOTEgVEptCi0obGlua2luZykgMjguMjM0IFRqCi0tMzkyIFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMzkxIFRKbQotKHN0YXRpY2FsbHkpIDM1Ljk3NDkgVGoKLS0zOTIgVEptCi0oXCgpIDMuMzE3NTUgVGoKLVsxIDAgMCAxIDUyMi4wNjcgMzEwLjY1Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MjIuMDY3IC0zMTAuNjUyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MjIuMDY3IDMxMC42NTIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oZ2NjKSAxNy45MzI3IFRqCi03MiAyOTguNjk3IFRkCi0oLXN0YXRpYykgNDEuODQyOSBUagotWzEgMCAwIDEgMTEzLjg0MyAyOTguNjk3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTExMy44NDMgLTI5OC42OTddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTExMy44NDMgMjk4LjY5NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcKS4pIDUuODA4MiBUagotLTYyMCBUSm0KLShUaGlzKSAxNy43MTM1IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMjAgVEptCi0ob2lkcykgMTYuNjA3NyBUagotLTI1MCBUSm0KLShhbGwpIDkuOTYyNiBUagotLTI1MCBUSm0KLShzb3J0cykgMTguODE5NCBUagotLTI1MCBUSm0KLShvZikgOC4yOTg4NSBUagotLTI1MCBUSm0KLShsaWJyYXJ5LXYpIDM0Ljg1OTEgVGoKLTE1IFRKbQotKGVyc2lvbikgMjQuMzQ4NiBUagotLTI1MCBUSm0KLShpc3N1ZXMpIDIzLjgwMDcgVGoKLS0yNTAgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTI1MCBUSm0KLShvdGhlcnMpIDI0LjM0ODYgVGoKLS0yNTAgVEptCi0obWF5KSAxNy4xNTU2IFRqCi0tMjUwIFRKbQotKGVuY291bnRlcikgMzkuMjgyNSBUagotLTI1MCBUSm0KLShsYXRlcikgMTcuNzAzNSBUagotLTI1MCBUSm0KLShvbi4pIDEyLjQ1MzMgVGoKLVsxIDAgMCAxIDcyIDI5Ni41NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjg2LjU3N10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjc2Ljc3OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJZikgNi42MzUwOSBUagotLTI5NiBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yOTYgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1aWxkKSAxNS41MDE4IFRqCi1bMSAwIDAgMSAxMjIuNzA5IDI3Ni43NzldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTIyLjcwOSAtMjc2Ljc3OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTIyLjcwOSAyNzYuNzc5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAxNTIuNTk2IDI3Ni43NzldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTUyLjU5NiAtMjc2Ljc3OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTU1LjU0NSAyNzYuNzc5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKG9uKSA5Ljk2MjYgVGoKLS0yOTYgVEptCi0oVykgOS40MDQ2OSBUagotNDAgVEptCi0oaW4zMiwpIDIwLjIwNDIgVGoKLS0zMDcgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjk2IFRKbQotKG11c3QpIDE5LjM3NzMgVGoKLS0yOTYgVEptCi0oc2V0KSAxMS4wNjg0IFRqCi1bMSAwIDAgMSAyNTQuOTY1IDI3Ni43NzldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjU0Ljk2NSAtMjc2Ljc3OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjU0Ljk2NSAyNzYuNzc5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKEJaX1VOSVgpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDI5Ni44MDggMjc2Ljc3OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yOTYuODA4IC0yNzYuNzc5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yOTkuNzU2IDI3Ni43NzkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odG8pIDcuNzUwOSBUagotLTI5NiBUSm0KLSgwKSA0Ljk4MTMgVGoKLS0yOTYgVEptCi0oYW5kKSAxNC4zODYgVGoKLVsxIDAgMCAxIDMzNS43MiAyNzYuNzc5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMzNS43MiAtMjc2Ljc3OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzM1LjcyIDI3Ni43NzkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oQlpfTENDV0lOMzIpIDY1Ljc1MzIgVGoKLVsxIDAgMCAxIDQwMS40NzMgMjc2Ljc3OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00MDEuNDczIC0yNzYuNzc5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00MDQuNDIyIDI3Ni43NzkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0odG8pIDcuNzUwOSBUagotLTI5NiBUSm0KLSgxLCkgNy40NzE5NSBUagotLTMwNyBUSm0KLShpbikgNy43NTA5IFRqCi0tMjk2IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5NiBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLVsxIDAgMCAxIDQ2Ny4xNTkgMjc2Ljc3OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjcuMTU5IC0yNzYuNzc5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00NjcuMTU5IDI3Ni43NzkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIuYykgNDEuODQyOSBUagotWzEgMCAwIDEgNTA5LjAwMiAyNzYuNzc5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTUwOS4wMDIgLTI3Ni43NzldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUwOS4wMDIgMjc2Ljc3OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgsKSAyLjQ5MDY1IFRqCi0tMzA3IFRKbQotKGJlZm9yZSkgMjUuNDQ0NSBUagotNzIgMjY0LjgyNCBUZAotKGNvbXBpbGluZy4pIDQyLjg5OSBUagotLTMxMCBUSm0KLShPdGhlcndpc2UpIDQwLjk0NjMgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHJlc3VsdGluZykgMzQuODY5MSBUagotLTI1MCBUSm0KLShiaW5hcnkpIDI1LjQ1NDQgVGoKLS0yNTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG9uJykgMTMuMjgwMSBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMjUwIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvcmspIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oY29ycmVjdGx5KSAzNS40MDcxIFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiAyNjIuNjY3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yNTIuNzA0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyMzAuMDcxIFRkCi0vRjEyMl8wIDIwLjY1ODUgVGYKLSg0LjMuKSAzNC40NTg0IFRqCi0tMjc4IFRKbQotKFJlcG9yKSA1OS42ODI0IFRqCi0tMjAgVEptCi0odGluZykgMzcuODY3IFRqCi0tMjc4IFRKbQotKGIpIDEyLjYyMjMgVGoKLTIwIFRKbQotKHVncykgMzYuNzMwOCBUagotWzEgMCAwIDEgNzIgMjI1LjQ3NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjE1LjUxMl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjA4LjE1MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShJKSAzLjMxNzU1IFRqCi0tMjI4IFRKbQotKHRyaWVkKSAxOC4yNjE0IFRqCi0tMjI4IFRKbQotKHByZXR0eSkgMjMuMjQyNyBUagotLTIyOCBUSm0KLShoYXJkKSAxNy43MDM1IFRqCi0tMjI4IFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yMjggVEptCi0obWFrKSAxNy4xNTU2IFRqCi0xMCBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjI4IFRKbQotKHN1cmUpIDE2LjU5NzcgVGoKLVsxIDAgMCAxIDE5Ni4yNSAyMDguMTUzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE5Ni4yNSAtMjA4LjE1M10gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTk2LjI1IDIwOC4xNTMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDIyNi4xMzggMjA4LjE1M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMjYuMTM4IC0yMDguMTUzXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMjguNDA5IDIwOC4xNTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oaXMpIDYuNjQ1MDUgVGoKLS0yMjggVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZykgOS45NjI2IFRqCi0tMjI4IFRKbQotKGZyZWUsKSAxNy45NzI1IFRqCi0tMjMyIFRKbQotKGJvdGgpIDE3LjcxMzUgVGoKLS0yMjggVEptCi0oYnkpIDkuOTYyNiBUagotLTIyOCBUSm0KLShkZXNpZ24pIDI2LjAxMjMgVGoKLS0yMjggVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yMjggVEptCi0oYnkpIDkuOTYyNiBUagotLTIyOCBUSm0KLSh0ZXN0aW5nLikgMjkuMDYwOSBUagotLTYwNSBUSm0KLShIb3BlZnVsbHkpIDQwLjM5ODMgVGoKLS0yMjggVEptCi0oeW91JykgMTguMjYxNCBUagotMTAgVEptCi0obGwpIDUuNTM5MjEgVGoKLS0yMjggVEptCi0obmUpIDkuNDA0NjkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXIpIDcuNzQwOTQgVGoKLS0yMjggVEptCi0obmVlZCkgMTguODA5NCBUagotLTIyOCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjI4IFRKbQotKHJlYWQpIDE3LjE0NTYgVGoKLTcyIDE5Ni4xOTggVGQKLSh0aGlzKSAxNC4zOTYgVGoKLS0yNTAgVEptCi0oc2VjdGlvbikgMjguMjI0IFRqCi0tMjUwIFRKbQotKGZvcikgMTEuNjE2NCBUagotLTI1MCBUSm0KLShyZWFsLikgMTcuNDI0NiBUagotWzEgMCAwIDEgNzIgMTk2LjA5OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTg2LjEzNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMTc0LjI4IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKE5lKSAxMS42MTY0IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVydGhlbGVzcywpIDM3LjM0OTggVGoKLS0zMTMgVEptCi0oaWYpIDYuMDg3MTUgVGoKLVsxIDAgMCAxIDEzNy43NTEgMTc0LjI4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEzNy43NTEgLTE3NC4yOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTM3Ljc1MSAxNzQuMjggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDE2Ny42MzkgMTc0LjI4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2Ny42MzkgLTE3NC4yOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTcwLjYzNCAxNzQuMjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oZGllcykgMTYuMDQ5NyBUagotLTMwMSBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMzAwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zMDEgVEptCi0oc2UpIDguMjk4ODUgVGoKLTE1IFRKbQotKGdtZW50YXRpb24pIDQ0LjgzMTcgVGoKLS0zMDAgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYXVsdCwpIDE3LjQzNDYgVGoKLS0zMTQgVEptCi0oYSkgNC40MjMzOSBUagotLTMwMCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVzKSA4Ljg1Njc1IFRqCi0tMzAxIFRKbQotKGVycm9yKSAxOS4zNTczIFRqCi0tMzAwIFRKbQotKG9yKSA4LjI5ODg1IFRqCi0tMzAxIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tMzAxIFRKbQotKGludGVybmFsKSAzMC40MzU3IFRqCi0tMzAwIFRKbQotKGFzc2VydGlvbikgMzUuNDE3IFRqCi0tMzAxIFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFpbHVyZSwpIDI1LjE3NTUgVGoKLS0zMTMgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0zMDEgVEptCi0od2lsKSAxMi43MzIyIFRqCi0xIFRKbQotKGwpIDIuNzY5NiBUagotLTMwMSBUSm0KLShhc2spIDEzLjI4MDEgVGoKLS0zMDEgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMzAwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLTcyIDE2Mi4zMjUgVGQKLShlbWFpbCkgMjIuMTM2OSBUagotLTI0MiBUSm0KLShtZSkgMTIuMTc0MyBUagotLTI0MyBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjQyIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWcpIDkuOTYyNiBUagotLTI0MyBUSm0KLShyZXBvcnQuKSAyNi4yODEzIFRqCi0tNjE1IFRKbQotKEV4cGVyaWVuY2UpIDQ0LjgxMTggVGoKLS0yNDIgVEptCi0oZnJvbSkgMTkuMzY3MyBUagotLTI0MyBUSm0KLSh5ZWFycykgMjEuMDIxMSBUagotLTI0MiBUSm0KLShvZikgOC4yOTg4NSBUagotLTI0MiBUSm0KLShmZWVkYmFjaykgMzUuOTU1IFRqCi0tMjQzIFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjQyIFRKbQotKGJ6aXAyKSAyMi4xMzY5IFRqCi0tMjQzIFRKbQotKHVzZXJzKSAyMC40NzMxIFRqCi0tMjQyIFRKbQotKGluZGljYXRlcykgMzUuNDE3IFRqCi0tMjQzIFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0yNDIgVEptCi0oYWxtb3N0KSAyNi41NzAzIFRqCi0tMjQyIFRKbQotKGFsbCkgOS45NjI2IFRqCi0tMjQzIFRKbQotKHRoZXNlKSAyMC40NzMxIFRqCi0tMjQyIFRKbQotKHByb2JsZW1zKSAzNy4wODA4IFRqCi0tMjQzIFRKbQotKGNhbikgMTMuODI4MSBUagotNzIgMTUwLjM3IFRkCi0oYmUpIDkuNDA0NjkgVGoKLS0yNTAgVEptCi0odHJhY2VkKSAyNC4zMzg2IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oZWl0aGVyKSAyMi42ODQ4IFRqCi0tMjUwIFRKbQotKGNvbXBpbGVyKSAzNS40MTcgVGoKLS0yNTAgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1Z3MpIDEzLjgzODEgVGoKLS0yNTAgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0oaGFyZHcpIDI0Ljg5NjUgVGoKLTEwIFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTI1MCBUSm0KLShwcm9ibGVtcy4pIDM5LjU3MTQgVGoKLVsxIDAgMCAxIDcyIDE0OC4yMTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ny4zNjExXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuOTUxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC45NTE0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMyKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDM2IDM2Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxMTYuMzI4IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzgyLjQgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ5OC43MjggNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShNaXNjZWxsYW5lYSkgNDguMTM5MyBUagotWzEgMCAwIDEgMjY2LjA3MSA3NDkuMTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTcuMDkzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTMxLjUxNjhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2Ljk3MzkgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03OC45NzM5IC03MTAuMDM3XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03OC45NzM5IDcxMC4wMzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oXDIyNSkgMy40ODY5MSBUagotWzEgMCAwIDEgODIuNDYwOCA3MTAuMDM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxLjk5MjUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC04Ni45NDQgLTcxMC4wMzddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCA3MTAuMDM3IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFJlY29tcGlsZSkgNDMuMTY3OSBUagotLTMwNiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDYgVEptCi0ocHJvZ3JhbSkgMzMuNzUzMyBUagotLTMwNiBUSm0KLSh3aXRoKSAxNy43MTM1IFRqCi0tMzA2IFRKbQotKG5vKSA5Ljk2MjYgVGoKLS0zMDYgVEptCi0ob3B0aW1pc2F0aW9uLCkgNTIuMzEzNiBUagotLTMyMCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTMwNiBUSm0KLShzZWUpIDEyLjcyMjIgVGoKLS0zMDYgVEptCi0oaWYpIDYuMDg3MTUgVGoKLS0zMDYgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0zMDYgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG9ya3MuKSAxOS42NDYyIFRqCi0tOTU2IFRKbQotKEFuZC9vcikgMjguMjI0IFRqCi0tMzA2IFRKbQotKHRyeSkgMTEuMDY4NCBUagotLTMwNiBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMzA2IFRKbQotKGRpZikgMTEuMDY4NCBUagotMjUgVEptCi0oZmVyZW50KSAyMy4yMzI4IFRqCi0tMzA2IFRKbQotKGNvbXBpbGVyKSAzNS40MTcgVGoKLTU1IFRKbQotKC4pIDIuNDkwNjUgVGoKLS05NTYgVEptCi0oSSkgMy4zMTc1NSBUagotLTMwNiBUSm0KLShoZWFyZCkgMjIuMTI2OSBUagotLTMwNiBUSm0KLShhbGwpIDkuOTYyNiBUagotODYuOTQ0IDY5OC4wODIgVGQKLShzb3J0cykgMTguODE5NCBUagotLTI4MiBUSm0KLShvZikgOC4yOTg4NSBUagotLTI4MiBUSm0KLShzdG9yaWVzKSAyNi4wMTIzIFRqCi0tMjgyIFRKbQotKGFib3V0KSAyMi4xMzY5IFRqCi0tMjgzIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYXJpb3VzKSAyNC4zNDg2IFRqCi0tMjgyIFRKbQotKFwwMDNhKSA5Ljk2MjYgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMjAgVEptCi0ob3VycykgMTcuMTU1NiBUagotLTI4MiBUSm0KLShvZikgOC4yOTg4NSBUagotLTI4MiBUSm0KLShHTlUpIDIxLjU3OSBUagotLTI4MiBUSm0KLShDKSA2LjY0NTA1IFRqCi0tMjgyIFRKbQotKFwoYW5kKSAxNy43MDM1IFRqCi0tMjgyIFRKbQotKG90aGVyKSAyMC40NzMxIFRqCi0tMjgzIFRKbQotKGNvbXBpbGVyc1wpKSA0Mi42MSBUagotLTI4MiBUSm0KLShnZW5lcmF0aW5nKSA0Mi4wNTIxIFRqCi0tMjgyIFRKbQotKGJhZCkgMTQuMzg2IFRqCi0tMjgyIFRKbQotKGNvZGUpIDE4LjgwOTQgVGoKLS0yODIgVEptCi0oZm9yKSAxMS42MTY0IFRqCi1bMSAwIDAgMSA0NzIuMTQxIDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDcyLjE0MSAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDcyLjE0MSA2OTguMDgyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSA1MDIuMDI5IDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNTAyLjAyOSAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTAyLjAyOSA2OTguMDgyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKCwpIDIuNDkwNjUgVGoKLS0yOTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yODIgVEptCi0oSScpIDYuNjM1MDkgVGoKLTUwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotODYuOTQ0IDY4Ni4xMjcgVGQKLShydW4pIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oYWNyb3NzKSAyNC44OTY1IFRqCi0tMjUwIFRKbQotKHR3KSA5Ljk2MjYgVGoKLTEwIFRKbQotKG8pIDQuOTgxMyBUagotLTI1MCBUSm0KLShzdWNoKSAxOC4yNjE0IFRqCi0tMjUwIFRKbQotKGUpIDQuNDIzMzkgVGoKLTE1IFRKbQotKHhhbXBsZXMpIDMzLjIwNTMgVGoKLS0yNTAgVEptCi0obXlzZWxmLikgMjkuNjA4OCBUagotWzEgMCAwIDEgMjM3Ljc2NyA2ODYuMTI3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE2NS43NjcgLTEyLjExOTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY3NC4wMDddIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCA2NjQuMjA5IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDIuNy5YKSAyMi4xMzY5IFRqCi0tMjgwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJzaW9ucykgMjguMjI0IFRqCi0tMjc5IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMjgwIFRKbQotKEdOVSkgMjEuNTc5IFRqCi0tMjc5IFRKbQotKEMpIDYuNjQ1MDUgVGoKLS0yODAgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMjc5IFRKbQotKGtubykgMTQuOTQzOSBUagotMjUgVEptCi0od24pIDEyLjE3NDMgVGoKLS0yODAgVEptCi0odG8pIDcuNzUwOSBUagotLTI4MCBUSm0KLShnZW5lcmF0ZSkgMzMuNzQzMyBUagotLTI3OSBUSm0KLShiYWQpIDE0LjM4NiBUagotLTI4MCBUSm0KLShjb2RlKSAxOC44MDk0IFRqCi0tMjc5IFRKbQotKGZyb20pIDE5LjM2NzMgVGoKLS0yODAgVEptCi0odGltZSkgMTcuNzEzNSBUagotLTI3OSBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjgwIFRKbQotKHRpbWUsKSAyMC4yMDQyIFRqCi0tMjg3IFRKbQotKGF0KSA3LjE5MyBUagotLTI4MCBUSm0KLShoaWdoKSAxNy43MTM1IFRqCi0tMjc5IFRKbQotKG9wdGltaXNhdGlvbikgNDkuODIzIFRqCi0tMjgwIFRKbQotKGxlKSA3LjE5MyBUagotMjUgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlbHMuKSAxMy41NTkxIFRqCi0tNzk3IFRKbQotKElmKSA2LjYzNTA5IFRqCi0tMjgwIFRKbQotKHlvdSkgMTQuOTQzOSBUagotODYuOTQ0IDY1Mi4yNTQgVGQKLShnZXQpIDEyLjE3NDMgVGoKLS0yOTUgVEptCi0ocHJvYmxlbXMsKSAzOS41NzE0IFRqCi0tMzA3IFRKbQotKHRyeSkgMTEuMDY4NCBUagotLTI5NiBUSm0KLSh1c2luZykgMjEuNTg5IFRqCi0tMjk1IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI5NiBUSm0KLShcMDAzYWdzKSAxOC44MTk0IFRqCi1bMSAwIDAgMSAyMjAuMTE2IDY1Mi4yNTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjIwLjExNiAtNjUyLjI1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjIwLjExNiA2NTIuMjU0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC1PMikgMTcuOTMyNyBUagotWzEgMCAwIDEgMjM4LjA0OSA2NTIuMjU0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi45NDM4IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjQwLjk5MyAtNjUyLjI1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjQwLjk5MyA2NTIuMjU0IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKC1mb21pdC1mcmFtZS1wb2ludGVyKSAxMTkuNTUxIFRqCi1bMSAwIDAgMSAzNjAuNTQ0IDY1Mi4yNTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjk0MzggMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zNjMuNDg4IC02NTIuMjU0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zNjMuNDg4IDY1Mi4yNTQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLWZuby1zdHJlbmd0aC1yZWR1Y2UpIDExOS41NTEgVGoKLVsxIDAgMCAxIDQ4My4wNCA2NTIuMjU0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ4My4wNCAtNjUyLjI1NF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDgzLjA0IDY1Mi4yNTQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotLTg5MyBUSm0KLShZKSA3LjE5MyBUagotMTEwIFRKbQotKG91KSA5Ljk2MjYgVGoKLS0yOTUgVEptCi0oc2hvdWxkKSAyNi41NzAzIFRqCi04Ni45NDQgNjQwLjI5OSBUZAotKHNwZWNpXDAwMmNhbGx5KSA0NS4zNzk2IFRqCi1bMSAwIDAgMSAxMzQuODE0IDY0MC4yOTldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTM0LjgxNCAtNjQwLjI5OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTM0LjgxNCA2NDAuMjk5IFRkCi0vRjYzN18wIDkuOTYyNiBUZgotKG5vdCkgMTIuNzMyMiBUagotWzEgMCAwIDEgMTQ3LjU0NiA2NDAuMjk5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTE0Ny41NDYgLTY0MC4yOTldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTE1MC4wMzYgNjQwLjI5OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh1c2UpIDEzLjI4MDEgVGoKLVsxIDAgMCAxIDE2NS44MDcgNjQwLjI5OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjUuODA3IC02NDAuMjk5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjUuODA3IDY0MC4yOTkgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oLWZ1bnJvbGwtbG9vcHMpIDgzLjY4NTggVGoKLVsxIDAgMCAxIDI0OS40OTMgNjQwLjI5OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNDkuNDkzIC02NDAuMjk5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yNDkuNDkzIDY0MC4yOTkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgNjM4LjE0Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjI4LjE3OV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDYxOC4zODEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oWSkgNy4xOTMgVGoKLTExMCBUSm0KLShvdSkgOS45NjI2IFRqCi0tMjQ5IFRKbQotKG1heSkgMTcuMTU1NiBUagotLTI0OSBUSm0KLShub3RpY2UpIDI0LjM0ODYgVGoKLS0yNDggVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTI0OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDkgVEptCi0oTWFrKSAxOC4yNjE0IFRqCi0xMCBUSm0KLShlXDAwMmxlKSAxNy4xNTU2IFRqCi0tMjQ5IFRKbQotKHJ1bnMpIDE3LjE1NTYgVGoKLS0yNDggVEptCi0oc2l4KSAxMS42MjY0IFRqCi0tMjQ5IFRKbQotKHRlc3RzKSAxNy43MTM1IFRqCi0tMjQ5IFRKbQotKGFzKSA4LjI5ODg1IFRqCi0tMjQ5IFRKbQotKHBhcnQpIDE1LjQ5MTggVGoKLS0yNDkgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNDggVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjQ5IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odWlsZCkgMTUuNTAxOCBUagotLTI0OSBUSm0KLShwcm9jZXNzLikgMzIuMzY4NSBUagotLTYxOSBUSm0KLShJZikgNi42MzUwOSBUagotLTI0OSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDkgVEptCi0ocHJvZ3JhbSkgMzMuNzUzMyBUagotLTI0OCBUSm0KLShwYXNzZXMpIDI1LjQ1NDQgVGoKLS0yNDkgVEptCi0oYWxsKSA5Ljk2MjYgVGoKLS0yNDkgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNDkgVEptCi0odGhlc2UsKSAyMi45NjM4IFRqCi0tMjQ5IFRKbQotKGl0JykgOC44NTY3NSBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotODYuOTQ0IDYwNi40MjYgVGQKLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKHByZXR0eSkgMjMuMjQyNyBUagotLTI1MCBUSm0KLShnb29kKSAxOS45MjUyIFRqCi0tMjUwIFRKbQotKFwoYikgOC4yOTg4NSBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTI1MCBUSm0KLShub3QpIDEyLjczMjIgVGoKLS0yNTAgVEptCi0oMTAwJVwpKSAyNi41NjAzIFRqCi0tMjUwIFRKbQotKGluZGljYXRpb24pIDM5Ljg1MDQgVGoKLS0yNTAgVEptCi0odGhhdCkgMTQuOTQzOSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oY29tcGlsZXIpIDM1LjQxNyBUagotLTI1MCBUSm0KLShoYXMpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oZG9uZSkgMTkuMzY3MyBUagotLTI1MCBUSm0KLShpdHMpIDkuNDE0NjYgVGoKLS0yNTAgVEptCi0oam9iKSAxMi43MzIyIFRqCi0tMjUwIFRKbQotKGNvcnJlY3RseSkgMzUuNDA3MSBUagotNjUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgNjA0LjI2OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTE5Ljc2MV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuOTczOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTc4Ljk3MzkgLTU4NC41MDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTc4Ljk3MzkgNTg0LjUwOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShcMjI1KSAzLjQ4NjkxIFRqCi1bMSAwIDAgMSA4Mi40NjA4IDU4NC41MDhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDEuOTkyNSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTg2Ljk0NCAtNTg0LjUwOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDU4NC41MDggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSWYpIDYuNjM1MDkgVGoKLVsxIDAgMCAxIDk1Ljk1NTggNTg0LjUwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05NS45NTU4IC01ODQuNTA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05NS45NTU4IDU4NC41MDggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDEyNS44NDQgNTg0LjUwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xMjUuODQ0IC01ODQuNTA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xMjguMjIgNTg0LjUwOCBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShjcmFzaGVzKSAyOS4zMTk5IFRqCi0tMjM5IFRKbQotKHJhbmRvbWx5KSAzOC4xODY2IFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjQwIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjM5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIzOSBUSm0KLShjcmFzaGUpIDI1LjQ0NDUgVGoKLTEgVEptCi0ocykgMy44NzU0NSBUagotLTIzOSBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yMzkgVEptCi0obm90KSAxMi43MzIyIFRqCi0tMjM4IFRKbQotKHJlcGVhdGFibGUsKSA0My40MjcgVGoKLS0yNDEgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjM5IFRKbQotKG1heSkgMTcuMTU1NiBUagotLTIzOCBUSm0KLShoYSkgOS40MDQ2OSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjM5IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yMzggVEptCi0oXDAwM2FrKSAxNC45NDM5IFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLS0yMzkgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi0tMjM4IFRKbQotKHN1YnN5c3RlbS4pIDQ0LjAwNDggVGoKLVsxIDAgMCAxIDUxMC4xMTIgNTg0LjUwOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01MTAuMTEyIC01ODQuNTA4XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi01MTAuMTEyIDU4NC41MDggVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDU0MCA1ODQuNTA4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTU0MCAtNTg0LjUwOF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotODYuOTQ0IDU3Mi41NTMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0ocmVhbGx5KSAyMi42ODQ4IFRqCi0tMjU0IFRKbQotKGhhbW1lcnMpIDM2LjUyMjkgVGoKLS0yNTMgVEptCi0oeW91cikgMTguMjYxNCBUagotLTI1NCBUSm0KLShtZW1vcnkpIDMzLjIwNTMgVGoKLS0yNTMgVEptCi0oaGllcmFyY2gpIDMyLjYzNzUgVGoKLTUgVEptCi0oeSkgNC45ODEzIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjU1IFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjUzIFRKbQotKGlmKSA2LjA4NzE1IFRqCi0tMjU0IFRKbQotKGl0JykgOC44NTY3NSBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTI1NCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUzIFRKbQotKGJpdCkgMTAuNTIwNSBUagotLTI1NCBUSm0KLShtYXIpIDE1LjQ5MTggVGoKLTE4IFRKbQotKGdpbmFsLCkgMjIuNDE1OSBUagotLTI1NCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNTQgVEptCi0obWF5KSAxNy4xNTU2IFRqCi0tMjUzIFRKbQotKGdldCkgMTIuMTc0MyBUagotLTI1NCBUSm0KLSh0aGVzZSkgMjAuNDczMSBUagotLTI1MyBUSm0KLShwcm9ibGVtcy4pIDM5LjU3MTQgVGoKLS02NDIgVEptCi0oRGl0dG8pIDIwLjQ4MzEgVGoKLS0yNTQgVEptCi0oaWYpIDYuMDg3MTUgVGoKLS0yNTMgVEptCi0oeW91cikgMTguMjYxNCBUagotLTI1NCBUSm0KLShkaXNrKSAxNi42MDc3IFRqCi04Ni45NDQgNTYwLjU5OCBUZAotKG9yKSA4LjI5ODg1IFRqCi0tMjUwIFRKbQotKEkvTykgMTMuMjgwMSBUagotLTI1MCBUSm0KLShzdWJzeXN0ZW0pIDQxLjUxNDIgVGoKLS0yNTAgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0oc2xvKSAxMS42MjY0IFRqCi0yNSBUSm0KLSh3bHkpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0oZikgMy4zMTc1NSBUagotMTAgVEptCi0oYWlsaW5nLikgMjUuMTg1NSBUagotLTYyMCBUSm0KLShZKSA3LjE5MyBUagotMTExIFRKbQotKHVwLCkgMTIuNDUzMyBUagotLTI1MCBUSm0KLSh0aGlzKSAxNC4zOTYgVGoKLS0yNTAgVEptCi0ocmVhbGx5KSAyMi42ODQ4IFRqCi0tMjUwIFRKbQotKGRvZXMpIDE4LjI2MTQgVGoKLS0yNTAgVEptCi0oaGFwcGVuLikgMzEuMjYyNiBUagotWzEgMCAwIDEgMzQ1LjE0MyA1NjAuNTk4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI3My4xNDMgLTEyLjExOTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU0OC40NzhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTg2Ljk0NCA1MzguNjggVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oVCkgNi4wODcxNSBUagotMzUgVEptCi0ocnkpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odXNpbmcpIDIxLjU4OSBUagotLTI1MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKGRpZikgMTEuMDY4NCBUagotMjUgVEptCi0oZmVyZW50KSAyMy4yMzI4IFRqCi0tMjUwIFRKbQotKG1hY2hpbmUpIDMzLjc1MzMgVGoKLS0yNTAgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUwIFRKbQotKHNhbWUpIDIwLjQ3MzEgVGoKLS0yNTAgVEptCi0odHlwZSwpIDE5LjY0NjIgVGoKLS0yNTAgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNTAgVEptCi0oc2VlKSAxMi43MjIyIFRqCi0tMjUwIFRKbQotKGlmKSA2LjA4NzE1IFRqCi0tMjUwIFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI1MCBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0yNTAgVEptCi0ocmVwZWF0KSAyNC4zMzg2IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShwcm9ibGVtLikgMzUuNjk2IFRqCi1bMSAwIDAgMSA3MiA1MzYuNTIzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMTkuNzYxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNi45NzM5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzguOTczOSAtNTE2Ljc2Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzguOTczOSA1MTYuNzYyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFwyMjUpIDMuNDg2OTEgVGoKLVsxIDAgMCAxIDgyLjQ2MDggNTE2Ljc2Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMS45OTI1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtODYuOTQ0IC01MTYuNzYyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi04Ni45NDQgNTE2Ljc2MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGlzKSAxNy43MTM1IFRqCi0tMjI5IFRKbQotKGlzbicpIDE0Ljk0MzkgVGoKLTE4IFRKbQotKHQpIDIuNzY5NiBUagotLTIzMCBUSm0KLShyZWFsbHkpIDIyLjY4NDggVGoKLS0yMjkgVEptCi0oYSkgNC40MjMzOSBUagotLTIyOSBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVnLCkgMTIuNDUzMyBUagotLTIzNCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHV0KSA3Ljc1MDkgVGoKLS0yMjkgVEptCi0oLi4uKSA3LjQ3MTk1IFRqCi0tMzAzIFRKbQotKElmKSA2LjYzNTA5IFRqCi1bMSAwIDAgMSAyMTIuMjMyIDUxNi43NjJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjEyLjIzMiAtNTE2Ljc2Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjEyLjIzMiA1MTYuNzYyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAyNDIuMTIgNTE2Ljc2Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yNDIuMTIgLTUxNi43NjJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTI0NC40MDUgNTE2Ljc2MiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSh0ZWxscykgMTYuNjA3NyBUagotLTIyOSBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yMzAgVEptCi0oeW91cikgMTguMjYxNCBUagotLTIyOSBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yMjkgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yMzAgVEptCi0oY29ycnVwdGVkKSAzOC4xNzY3IFRqCi0tMjI5IFRKbQotKG9uKSA5Ljk2MjYgVGoKLS0yMzAgVEptCi0oZGVjb21wcmVzc2lvbiwpIDYyLjI1NjMgVGoKLS0yMzMgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yMjkgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjMwIFRKbQotKG9idGFpbmVkKSAzNC4zMTEyIFRqCi0tMjI5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIyOSBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLTg2Ljk0NCA1MDQuODA3IFRkCi0odmlhKSAxMi4xNzQzIFRqCi0tMjYyIFRKbQotKEZUUCkgMTcuMTY1NiBUagotMTExIFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yNjMgVEptCi0odGhlcmUpIDE5LjkxNTIgVGoKLS0yNjIgVEptCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNjIgVEptCi0oYSkgNC40MjMzOSBUagotLTI2MiBUSm0KLShwb3NzaWJpbGl0eSkgNDEuNTI0MSBUagotLTI2MyBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMjYyIFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI2MiBUSm0KLShmb3IpIDExLjYxNjQgVGoKLTE4IFRKbQotKGdvdCkgMTIuNzMyMiBUagotLTI2MyBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjYyIFRKbQotKHRlbGwpIDEyLjczMjIgVGoKLS0yNjIgVEptCi0oRlRQKSAxNy4xNjU2IFRqCi0tMjYzIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNjIgVEptCi0oZG8pIDkuOTYyNiBUagotLTI2MiBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjYyIFRKbQotKGJpbmFyeSkgMjUuNDU0NCBUagotLTI2MyBUSm0KLShtb2RlKSAyMi4xMzY5IFRqCi0tMjYyIFRKbQotKHRyYW5zZmVyKSAzMC40MjU4IFRqCi01NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0tNjk0IFRKbQotKFRoYXQpIDE4LjI2MTQgVGoKLS0yNjIgVEptCi0oYWJzb2x1dGVseSkgNDAuOTU2MiBUagotLTI2MiBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMjYzIFRKbQotKGNhdXNlKSAyMi4xMjY5IFRqCi04Ni45NDQgNDkyLjg1MiBUZAotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShcMDAybGUpIDEyLjczMjIgVGoKLS0yNTAgVEptCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShiZSkgOS40MDQ2OSBUagotLTI1MCBUSm0KLShub24tZGVjb21wcmVzc2libGUuKSA4Mi43Mjk0IFRqCi0tNjIwIFRKbQotKFkpIDcuMTkzIFRqCi0xMTAgVEptCi0ob3UnKSAxMy4yODAxIFRqCi0xMCBUSm0KLShsbCkgNS41MzkyMSBUagotLTI1MCBUSm0KLShoYSkgOS40MDQ2OSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0xNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0tMjUwIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0odHJhbnNmZXIpIDMwLjQyNTggVGoKLS0yNTAgVEptCi0oaXQpIDUuNTM5MjEgVGoKLS0yNTAgVEptCi0oYWcpIDkuNDA0NjkgVGoKLTUgVEptCi0oYWluLikgMTQuNjY0OSBUagotWzEgMCAwIDEgMzUxLjM0IDQ5Mi44NTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMjc5LjM0IC0xMi4xMTk1XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC00ODAuNzMyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA0NzAuOTM0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKElmKSA2LjYzNTA5IFRqCi0tMjM1IFRKbQotKHlvdScpIDE4LjI2MTQgVGoKLTUwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTIzNiBUSm0KLShpbmNvcikgMjAuNDczMSBUagotMSBUSm0KLShwKSA0Ljk4MTMgVGoKLS0xIFRKbQotKG9yKSA4LjI5ODg1IFRqCi0xIFRKbQotKGF0ZWQpIDE2LjU5NzcgVGoKLVsxIDAgMCAxIDE2My4wMzYgNDcwLjkzNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0xNjMuMDM2IC00NzAuOTM0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0xNjMuMDM2IDQ3MC45MzQgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0obGliYnppcDIpIDQ3LjgyMDUgVGoKLVsxIDAgMCAxIDIxMC44NTYgNDcwLjkzNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0yMTAuODU2IC00NzAuOTM0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0yMTMuMiA0NzAuOTM0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGludG8pIDE1LjUwMTggVGoKLS0yMzUgVEptCi0oeW91cikgMTguMjYxNCBUagotLTIzNSBUSm0KLShvKSA0Ljk4MTMgVGoKLTI1IFRKbQotKHduKSAxMi4xNzQzIFRqCi0tMjM2IFRKbQotKHByb2dyYW0pIDMzLjc1MzMgVGoKLS0yMzUgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yMzUgVEptCi0oYXJlKSAxMi4xNjQzIFRqCi0tMjM2IFRKbQotKGdldCkgMTIuMTc0MyBUagotMSBUSm0KLSh0aW5nKSAxNS41MDE4IFRqCi0tMjM2IFRKbQotKHByb2JsZW1zLCkgMzkuNTcxNCBUagotLTIzOCBUSm0KLShwbGVhc2UsKSAyNy4zODcyIFRqCi0tMjM4IFRKbQotKHBsZWFzZSwpIDI3LjM4NzIgVGoKLS0yMzggVEptCi0ocGxlYXNlLCkgMjcuMzg3MiBUagotLTIzOCBUSm0KLShjaGVjaykgMjMuMjMyOCBUagotLTIzNiBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi03MiA0NTguOTc5IFRkCi0odGhlKSAxMi4xNzQzIFRqCi0tMjQyIFRKbQotKHBhcmFtZXRlcnMpIDQzLjcwNTkgVGoKLS0yNDMgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjQyIFRKbQotKGFyZSkgMTIuMTY0MyBUagotLTI0MiBUSm0KLShwYXNzaW5nKSAyOS44ODc4IFRqCi0tMjQzIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNDIgVEptCi0oY2FsbHMpIDE4LjI2MTQgVGoKLS0yNDIgVEptCi0odG8pIDcuNzUwOSBUagotLTI0MyBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDIgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotNjUgVEptCi0oLCkgMi40OTA2NSBUagotLTI0NCBUSm0KLShhcmUpIDEyLjE2NDMgVGoKLS0yNDIgVEptCi0oY29ycmVjdCwpIDMwLjE0NjggVGoKLS0yNDQgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNDMgVEptCi0oaW4pIDcuNzUwOSBUagotLTI0MiBUSm0KLShhY2NvcmRhbmNlKSA0NC44MDE4IFRqCi0tMjQyIFRKbQotKHdpdGgpIDE3LjcxMzUgVGoKLS0yNDMgVEptCi0od2hhdCkgMTkuMzY3MyBUagotLTI0MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNDIgVEptCi0oZG9jdW1lbnRhdGlvbikgNTkuMjE3NyBUagotLTI0MyBUSm0KLShzYXlzKSAxNy4xNTU2IFRqCi03MiA0NDcuMDI0IFRkCi0oaXMpIDYuNjQ1MDUgVGoKLS0yNTAgVEptCi0oYWxsbykgMTQuOTQzOSBUagotMjUgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFibGUuKSAxOS4wODgzIFRqCi0tMzEwIFRKbQotKEkpIDMuMzE3NTUgVGoKLS0yNTAgVEptCi0oaGEpIDkuNDA0NjkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZSkgNC40MjMzOSBUagotLTI1MCBUSm0KLSh0cmllZCkgMTguMjYxNCBUagotLTI1MCBUSm0KLSh0bykgNy43NTA5IFRqCi0tMjUwIFRKbQotKG1haykgMTcuMTU1NiBUagotMTAgVEptCi0oZSkgNC40MjMzOSBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0obGlicmFyeSkgMjYuNTYwMyBUagotLTI1MCBUSm0KLShyb2IpIDEzLjI4MDEgVGoKLTIwIFRKbQotKHVzdCkgMTEuNjI2NCBUagotLTI1MCBUSm0KLShhZykgOS40MDQ2OSBUagotNSBUSm0KLShhaW5zdCkgMTguODE5NCBUagotLTI1MCBUSm0KLShzdWNoKSAxOC4yNjE0IFRqCi0tMjUwIFRKbQotKHByb2JsZW1zLCkgMzkuNTcxNCBUagotLTI1MCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHV0KSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oSSdtKSAxNC4zODYgVGoKLS0yNTAgVEptCi0oc3VyZSkgMTYuNTk3NyBUagotLTI1MCBUSm0KLShJKSAzLjMxNzU1IFRqCi0tMjUwIFRKbQotKGhhKSA5LjQwNDY5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVuJykgMTIuNzIyMiBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMjUwIFRKbQotKHN1Y2NlZWRlZC4pIDQzLjQyNyBUagotWzEgMCAwIDEgNzIgNDQ0Ljg2N10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNDM0LjkwNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNDI1LjEwNiBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShGaW5hbGx5KSAyOC4yMzQgVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0zMjQgVEptCi0oaWYpIDYuMDg3MTUgVGoKLS0zMTAgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMzA5IFRKbQotKGFibykgMTQuMzg2IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0zMDkgVEptCi0oY29tbWVudHMpIDQwLjk1NjIgVGoKLS0zMTAgVEptCi0oZG9uJykgMTguMjYxNCBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMzA5IFRKbQotKGhlbHAsKSAxOS42NDYyIFRqCi0tMzI0IFRKbQotKHlvdScpIDE4LjI2MTQgVGoKLTEwIFRKbQotKGxsKSA1LjUzOTIxIFRqCi0tMzEwIFRKbQotKGhhKSA5LjQwNDY5IFRqCi0yMCBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0zMDkgVEptCi0odG8pIDcuNzUwOSBUagotLTMwOSBUSm0KLShzZW5kKSAxOC4yNjE0IFRqCi0tMzEwIFRKbQotKG1lKSAxMi4xNzQzIFRqCi0tMzA5IFRKbQotKGEpIDQuNDIzMzkgVGoKLS0zMDkgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1ZykgOS45NjI2IFRqCi0tMzEwIFRKbQotKHJlcG9ydC4pIDI2LjI4MTMgVGoKLS05NzYgVEptCi0oTm8pIDEyLjE3NDMgVGoKLTI1IFRKbQotKHcpIDcuMTkzIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMzI0IFRKbQotKGl0JykgOC44NTY3NSBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTMxMCBUSm0KLShqdXN0KSAxNC4zOTYgVGoKLS0zMDkgVEptCi0oYW1hemluZykgMzMuNzUzMyBUagotLTMwOSBUSm0KLShobykgOS45NjI2IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotLTMxMCBUSm0KLShtYW4pIDE3LjE1NTYgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotNzIgNDEzLjE1MSBUZAotKHBlb3BsZSkgMjYuNTYwMyBUagotLTI1MCBUSm0KLSh3aWxsKSAxNS41MDE4IFRqCi0tMjUwIFRKbQotKHNlbmQpIDE4LjI2MTQgVGoKLS0yNTAgVEptCi0obWUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotLTI1MCBUSm0KLShiKSA0Ljk4MTMgVGoKLTIwIFRKbQotKHVnKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0ocmVwb3J0KSAyMy43OTA3IFRqCi0tMjUwIFRKbQotKHNheWluZykgMjYuMDEyMyBUagotLTI1MCBUSm0KLShzb21ldGhpbmcpIDQxLjUxNDIgVGoKLS0yNTAgVEptCi0obGlrKSAxMC41MjA1IFRqCi0xMCBUSm0KLShlOikgNy4xOTMgVGoKLVsxIDAgMCAxIDcyIDQxMC45OTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yNC45MDY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTQ4OTkgMC45NDg5OSAwLjk3NjQ1Nl0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIFNDCi0wIDAgNDY4IDIzLjkxMDMgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAyMC4zMjM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtNDAxLjYyOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgNDAxLjYyOSBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotLTQyNiBUSm0KLShjcmFzaGVkKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKHdpdGgpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oc2VnbWVudGF0aW9uKSA3MS43MzA3IFRqCi0tNDI2IFRKbQotKGZhdWx0KSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKG9uKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKG15KSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKG1hY2hpbmUpIDQxLjg0MjkgVGoKLVsxIDAgMCAxIDcyIDM4Ni4wODddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzc2LjEyNV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMzY0LjE2OSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShhbmQpIDE0LjM4NiBUagotLTI0MSBUSm0KLShhYnNvbHV0ZWx5KSA0MC45NTYyIFRqCi0tMjQxIFRKbQotKG5vdGhpbmcpIDMwLjQ0NTcgVGoKLS0yNDEgVEptCi0oZWwpIDcuMTkzIFRqCi0xIFRKbQotKHNlLikgMTAuNzg5NSBUagotLTYxNCBUSm0KLShOZWVkbGVzcykgMzUuOTY1IFRqCi0tMjQxIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNDEgVEptCi0oc2F5KSAxMy4yODAxIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjQzIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNDEgVEptCi0oc3VjaCkgMTguMjYxNCBUagotLTI0MCBUSm0KLShhKSA0LjQyMzM5IFRqCi0tMjQxIFRKbQotKHJlcG9ydCkgMjMuNzkwNyBUagotLTI0MSBUSm0KLShpcykgNi42NDUwNSBUagotWzEgMCAwIDEgMzI0LjY4MSAzNjQuMTY5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMyNC42ODEgLTM2NC4xNjldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTMyNC42ODEgMzY0LjE2OSBUZAotL0Y2MzdfMCA5Ljk2MjYgVGYKLSh0b3RhbGx5KSAyNS40NjQ0IFRqCi01NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjQzIFRKbQotKHV0dGVybHkpIDI2LjAxMjMgVGoKLTU1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yNDIgVEptCi0oY29tcGxldGVseSkgNDMuMTU4IFRqCi0tMjQxIFRKbQotKGFuZCkgMTQuOTQzOSBUagotLTI0MSBUSm0KLShjb21wcikgMjUuNDU0NCBUagotMzcgVEptCi0oZWhlbnNpdmVseSkgNDEuNDk0MiBUagotLTI0MSBUSm0KLSgxMDAlKSAyMy4yNDI3IFRqCi03MiAzNTIuMjE0IFRkCi0odXNlbGVzczspIDMxLjU0MTYgVGoKLS0yNTcgVEptCi0oYSkgNC45ODEzIFRqCi0tMjU1IFRKbQotKHdhc3RlKSAyMi42OTQ4IFRqCi0tMjU1IFRKbQotKG9mKSA3Ljc1MDkgVGoKLS0yNTUgVEptCi0oeW91cikgMTguMjYxNCBUagotLTI1NSBUSm0KLSh0aW1lKSAxNy4xNTU2IFRqCi0xMCBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjU2IFRKbQotKG15KSAxMS42MTY0IFRqCi0tMjU1IFRKbQotKHRpbWUpIDE3LjE1NTYgVGoKLTEwIFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yNTYgVEptCi0oYW5kKSAxNC45NDM5IFRqCi0tMjU1IFRKbQotKG5ldCkgMTIuMTc0MyBUagotLTI1NSBUSm0KLShiYW5kd2lkdGgpIDQyLjA3MjEgVGoKLVsxIDAgMCAxIDMwMi41NzQgMzUyLjIxNF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC0zMDIuNTc0IC0zNTIuMjE0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi0zMDIuNTc0IDM1Mi4yMTQgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotLTY1MCBUSm0KLShXKSA5LjQwNDY5IFRqCi00MCBUSm0KLShpdGgpIDEwLjUyMDUgVGoKLS0yNTQgVEptCi0obm8pIDkuOTYyNiBUagotLTI1NSBUSm0KLShkZXRhaWxzKSAyNi4wMTIzIFRqCi0tMjU1IFRKbQotKGF0KSA3LjE5MyBUagotLTI1NSBUSm0KLShhbGwsKSAxMi40NTMzIFRqCi0tMjU2IFRKbQotKHRoZXJlJykgMjMuMjMyOCBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTI1NSBUSm0KLShubykgOS45NjI2IFRqCi0tMjU1IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShheSkgOS40MDQ2OSBUagotLTI1NSBUSm0KLShJKSAzLjMxNzU1IFRqCi0tMjU1IFRKbQotKGNhbikgMTMuODI4MSBUagotLTI1NSBUSm0KLShwb3NzaWJseSkgMzMuMjE1MyBUagotLTI1NSBUSm0KLShiZSkgOS40MDQ2OSBUagotMTUgVEptCi0oZ2luKSAxMi43MzIyIFRqCi03MiAzNDAuMjU5IFRkCi0odG8pIDcuNzUwOSBUagotLTI1MCBUSm0KLShcMDAyZ3VyZSkgMjMuMjQyNyBUagotLTI1MCBUSm0KLShvdXQpIDEyLjczMjIgVGoKLS0yNTAgVEptCi0od2hhdCkgMTkuMzY3MyBUagotLTI1MCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTAgVEptCi0ocHJvYmxlbSkgMzMuMjA1MyBUagotLTI1MCBUSm0KLShpcy4pIDkuMTM1NyBUagotWzEgMCAwIDEgNzIgMzM4LjEwMl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMzI4LjE0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAzMTguMzQxIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKFRoZSkgMTUuNDkxOCBUagotLTMwOSBUSm0KLShydWxlcykgMTkuMzY3MyBUagotLTMwOSBUSm0KLShvZikgOC4yOTg4NSBUagotLTMwOSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMTAgVEptCi0oZykgNC45ODEzIFRqCi01IFRKbQotKGFtZSkgMTYuNTk3NyBUagotLTMwOSBUSm0KLShhcmU6KSAxNC45MzM5IFRqCi0tNDI4IFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFjdHMsKSAxNy45ODI1IFRqCi0tMzI0IFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFjdHMsKSAxNy45ODI1IFRqCi0tMzI0IFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFjdHMuKSAxNy45ODI1IFRqCi0tOTc1IFRKbQotKERvbicpIDIwLjQ3MzEgVGoKLTE4IFRKbQotKHQpIDIuNzY5NiBUagotLTMwOSBUSm0KLShvbWl0KSAxOC4yNzE0IFRqCi0tMzA5IFRKbQotKHRoZW0pIDE5LjkyNTIgVGoKLS0zMDkgVEptCi0oYmVjYXVzZSkgMzEuNTMxNiBUagotLTMwOSBUSm0KLSgib2gsKSAxNi41MTggVGoKLS0zMjQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLS0zMDkgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG9uJykgMTMuMjgwMSBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMzA5IFRKbQotKGJlKSA5LjQwNDY5IFRqCi0tMzEwIFRKbQotKHJlbGUpIDE0LjkzMzkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYW50Ii4pIDE4LjcyOTcgVGoKLS05NzQgVEptCi0oQXQpIDkuOTYyNiBUagotLTMxMCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDkgVEptCi0oYmFyZSkgMTcuMTQ1NiBUagotNzIgMzA2LjM4NiBUZAotKG1pbmltdW06KSA0MS41MjQxIFRqCi1bMSAwIDAgMSA3MiAzMDYuMjg3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtNjAuNzcyMV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjk0ODk5IDAuOTQ4OTkgMC45NzY0NTZdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45NDg5OSAwLjk0ODk5IDAuOTc2NDU2XSBTQwotMCAwIDQ2OCA1OS43NzU4IHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNTYuMTg5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTI5Ni45MjJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDI5Ni45MjIgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oTWFjaGluZSkgNDEuODQyOSBUagotLTQyNiBUSm0KLSh0eXBlLikgMjkuODg3OCBUagotLTg1MiBUSm0KLShPcGVyYXRpbmcpIDUzLjc5OCBUagotLTQyNiBUSm0KLShzeXN0ZW0pIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0odmVyc2lvbi4pIDQ3LjgyMDUgVGoKLTkwIDI4NC45NjcgVGQKLShFeGFjdCkgMjkuODg3OCBUagotLTQyNiBUSm0KLSh2ZXJzaW9uKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKG9mKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGJ6aXAyKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKFwoZG8pIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oYnppcDIpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oLVZcKS4pIDIzLjkxMDIgVGoKLTkwIDI3My4wMTEgVGQKLShFeGFjdCkgMjkuODg3OCBUagotLTQyNiBUSm0KLSh2ZXJzaW9uKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKG9mKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShjb21waWxlcikgNDcuODIwNSBUagotLTQyNiBUSm0KLSh1c2VkLikgMjkuODg3OCBUagotOTAgMjYxLjA1NiBUZAotKEZsYWdzKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKHBhc3NlZCkgMzUuODY1NCBUagotLTQyNiBUSm0KLSh0bykgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh0aGUpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oY29tcGlsZXIuKSA1My43OTggVGoKLVsxIDAgMCAxIDcyIDI0NS41MTRdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMTMuNTQ5Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMjM1LjU1Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgMjIzLjU5NyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShIbykgMTIuMTc0MyBUagotMjUgVEptCi0od2UpIDExLjYxNjQgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXIpIDcuNzQwOTQgVGoKLTQwIFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yNTQgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUyIFRKbQotKG1vc3QpIDE5LjM3NzMgVGoKLS0yNTMgVEptCi0oaW1wb3J0YW50KSAzOC43NDQ2IFRqCi0tMjUzIFRKbQotKHNpbmdsZSkgMjMuODAwNyBUagotLTI1MyBUSm0KLSh0aGluZykgMjAuNDgzMSBUagotLTI1MyBUSm0KLSh0KSAyLjc2OTYgVGoKLTEgVEptCi0oaGF0KSAxMi4xNzQzIFRqCi0tMjUzIFRKbQotKHdpbGwpIDE1LjUwMTggVGoKLS0yNTMgVEptCi0oaGVscCkgMTcuMTU1NiBUagotLTI1MyBUSm0KLShtZSkgMTIuMTc0MyBUagotLTI1MyBUSm0KLShpcykgNi42NDUwNSBUagotLTI1MiBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0yNTMgVEptCi0oXDAwMmxlKSAxMi43MzIyIFRqCi0tMjUzIFRKbQotKHRoYXQpIDE0Ljk0MzkgVGoKLS0yNTMgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjUzIFRKbQotKHdlcmUpIDE5LjM1NzMgVGoKLS0yNTMgVEptCi0odHJ5aW5nKSAyMy44MDA3IFRqCi0tMjUyIFRKbQotKHRvKSA3Ljc1MDkgVGoKLS0yNTMgVEptCi0oY29tcHJlc3MpIDM3LjYyODcgVGoKLS0yNTMgVEptCi0ob3IpIDguMjk4ODUgVGoKLS0yNTMgVEptCi0oZGVjb21wcmVzcykgNDcuMDMzNCBUagotNzIgMjExLjY0MSBUZAotKGF0KSA3LjE5MyBUagotLTMwNCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDUgVEptCi0odGltZSkgMTcuNzEzNSBUagotLTMwNCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDQgVEptCi0ocHJvYmxlbSkgMzMuMjA1MyBUagotLTMwNSBUSm0KLShoYXBwZW5lZC4pIDQwLjY2NzMgVGoKLS05NDYgVEptCi0oVykgOS40MDQ2OSBUagotNDAgVEptCi0oaXRob3V0KSAyMy4yNTI3IFRqCi0tMzA0IFRKbQotKHRoYXQsKSAxNy40MzQ2IFRqCi0tMzE4IFRKbQotKG15KSAxMi43MzIyIFRqCi0tMzA1IFRKbQotKGFiaWxpdHkpIDI1LjQ2NDQgVGoKLS0zMDQgVEptCi0odG8pIDcuNzUwOSBUagotLTMwNCBUSm0KLShkbykgOS45NjI2IFRqCi0tMzA1IFRKbQotKGFuKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh5dGhpbmcpIDI1LjQ2NDQgVGoKLS0zMDQgVEptCi0obW9yZSkgMjAuNDczMSBUagotLTMwNCBUSm0KLSh0aGFuKSAxNy4xNTU2IFRqCi0tMzA1IFRKbQotKHNwZWN1bGF0ZSkgMzcuMDcwOCBUagotLTMwNCBUSm0KLShhYm91dCkgMjIuMTM2OSBUagotLTMwNCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDUgVEptCi0oY2F1c2UsKSAyNC42MTc2IFRqCi0tMzE4IFRKbQotKGlzKSA2LjY0NTA1IFRqCi03MiAxOTkuNjg2IFRkCi0obGltaXRlZC4pIDMwLjcyNDcgVGoKLVsxIDAgMCAxIDcyIDE5OS41ODddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTE4OS42MjRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDE2NC45MzMgVGQKLS9GMTIyXzAgMjAuNjU4NSBUZgotKDQuNC4pIDM0LjQ1ODQgVGoKLS0yNzggVEptCi0oRGlkKSAzMy4yODA4IFRqCi0tMjc4IFRKbQotKHkpIDExLjQ4NjEgVGoKLTI1IFRKbQotKG91KSAyNS4yNDQ3IFRqCi0tMjc4IFRKbQotKGcpIDEyLjYyMjMgVGoKLS0xMCBUSm0KLShldCkgMTguMzY1NCBUagotLTI3OCBUSm0KLSh0aGUpIDMwLjk4NzcgVGoKLS0yNzggVEptCi0ocmlnaHQpIDQ1LjkwMzIgVGoKLS0yNzggVEptCi0ocGFjKSAzNS41OTQ2IFRqCi0yMCBUSm0KLShrYSkgMjIuOTcyMyBUagotMTAgVEptCi0oZykgMTIuNjIyMyBUagotLTEwIFRKbQotKGU/KSAyNC4xMDg1IFRqCi1bMSAwIDAgMSA3MiAxNjAuMzM3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0xNTAuMzc0XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAxNDMuMDE2IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGJ6aXAyKSAyOS44ODc4IFRqCi1bMSAwIDAgMSAxMDEuODg4IDE0My4wMTZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMTAxLjg4OCAtMTQzLjAxNl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMTA0LjYwMyAxNDMuMDE2IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGlzKSA2LjY0NTA1IFRqCi0tMjcyIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNzMgVEptCi0ocmVzb3VyY2UpIDMzLjc0MzMgVGoKLS0yNzIgVEptCi0oaG9nLikgMTcuNDM0NiBUagotLTM3OCBUSm0KLShJdCkgNi4wODcxNSBUagotLTI3MiBUSm0KLShzb2FrcykgMjIuMTM2OSBUagotLTI3MyBUSm0KLSh1cCkgOS45NjI2IFRqCi0tMjcyIFRKbQotKGxhcikgMTAuNTEwNSBUagotMTggVEptCi0oZ2UpIDkuNDA0NjkgVGoKLS0yNzMgVEptCi0oYW1vdW50cykgMzMuNzYzMyBUagotLTI3MiBUSm0KLShvZikgOC4yOTg4NSBUagotLTI3MyBUSm0KLShDUFUpIDE5LjM3NzMgVGoKLS0yNzIgVEptCi0oYykgNC40MjMzOSBUagotMTUgVEptCi0oeWNsZXMpIDIwLjQ3MzEgVGoKLS0yNzMgVEptCi0oYW5kKSAxNC4zODYgVGoKLS0yNzIgVEptCi0obWVtb3J5KSAzMy4yMDUzIFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi0tNzU1IFRKbQotKEFsc28sKSAyMS4zMSBUagotLTI3OCBUSm0KLShpdCkgNS41MzkyMSBUagotLTI3MyBUSm0KLShnaSkgNy43NTA5IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVzKSA4LjI5ODg1IFRqCi0tMjcyIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXJ5KSAxMi43MjIyIFRqCi0tMjczIFRKbQotKGxhcikgMTAuNTEwNSBUagotMTggVEptCi0oZ2UpIDkuNDA0NjkgVGoKLS0yNzIgVEptCi0obGF0ZW5jaWVzLikgMzcuMzQ5OCBUagotNzIgMTMxLjA2IFRkCi0oSW4pIDguMjk4ODUgVGoKLS0yNTEgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjUxIFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShvcnN0KSAxNC45NDM5IFRqCi0tMjUxIFRKbQotKGNhc2UsKSAxOS42MzYzIFRqCi0tMjUxIFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTI1MSBUSm0KLShjYW4pIDEzLjgyODEgVGoKLS0yNTEgVEptCi0oZmVlZCkgMTcuMTQ1NiBUagotLTI1MSBUSm0KLShtYW4pIDE3LjE1NTYgVGoKLTE1IFRKbQotKHkpIDQuOTgxMyBUagotLTI1MSBUSm0KLShtZSkgMTIuMTc0MyBUagotMTUgVEptCi0oZykgNC45ODEzIFRqCi00IFRKbQotKGFieXQpIDE3LjE1NTYgVGoKLTEgVEptCi0oZXMpIDguMjk4ODUgVGoKLS0yNTIgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yNTEgVEptCi0odW5jb21wcmVzc2VkKSA1Ni45OTYgVGoKLS0yNTEgVEptCi0oZGF0YSkgMTYuNTk3NyBUagotLTI1MSBUSm0KLShpbnRvKSAxNS41MDE4IFRqCi0tMjUxIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MSBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMjUxIFRKbQotKGJlZm9yZSkgMjUuNDQ0NSBUagotLTI1MSBUSm0KLShnZXR0aW5nKSAyNy42NzYxIFRqCi0tMjUxIFRKbQotKGFuKSA5LjQwNDY5IFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLS0yNTEgVEptCi0oY29tcHJlc3NlZCkgNDcuMDMzNCBUagotNzIgMTE5LjEwNSBUZAotKG91dHB1dCwpIDI3Ljk1NTEgVGoKLS0yNTAgVEptCi0oc28pIDguODU2NzUgVGoKLS0yNTAgVEptCi0odGhpcykgMTQuMzk2IFRqCi0tMjUwIFRKbQotKHByb2JhYmx5KSAzNS40MTcgVGoKLS0yNTAgVEptCi0ocnVsZXMpIDE5LjM2NzMgVGoKLS0yNTAgVEptCi0ob3V0KSAxMi43MzIyIFRqCi0tMjUwIFRKbQotKGFwcGxpY2F0aW9ucykgNDguMTQ5MiBUagotLTI1MCBUSm0KLShyZXF1aXJpbmcpIDM2LjUyMjkgVGoKLS0yNTAgVEptCi0oaW50ZXJhY3RpKSAzMi42NDc0IFRqCi0yNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0oYmVoYSkgMTguODA5NCBUagotMjAgVEptCi0odmlvdXIpIDIxLjAzMSBUagotNTUgVEptCi0oLikgMi40OTA2NSBUagotWzEgMCAwIDEgNzIgMTE2Ljk0OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyN10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtMTA2Ljk4Nl0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgOTcuMTg3NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShUaGVzZSkgMjMuNzkwNyBUagotLTMwNCBUSm0KLShhcmVuJykgMjAuNDYzMiBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMzA0IFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGF1bHRzKSAxOC44MTk0IFRqCi0tMzA0IFRKbQotKG9mKSA4LjI5ODg1IFRqCi0tMzA0IFRKbQotKG15KSAxMi43MzIyIFRqCi0tMzA0IFRKbQotKGltcGxlbWVudGF0aW9uLCkgNjUuMDM1OSBUagotLTMxNyBUSm0KLShJKSAzLjMxNzU1IFRqCi0tMzA0IFRKbQotKGhvcGUsKSAyMS44NTc5IFRqCi0tMzE4IFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTMwNCBUSm0KLShtb3JlKSAyMC40NzMxIFRqCi0tMzA0IFRKbQotKGFuKSA5LjQwNDY5IFRqCi0tMzA0IFRKbQotKGludHJpbnNpYykgMzIuNjU3NCBUagotLTMwNCBUSm0KLShwcm9wZXJ0eSkgMzMuNzUzMyBUagotLTMwNCBUSm0KLShvZikgOC4yOTg4NSBUagotLTMwNCBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDQgVEptCi0oQnVycm8pIDIzLjI0MjcgVGoKLTI1IFRKbQotKHdzLVdoZWVsZXIpIDQ4LjEyOTMgVGoKLS0zMDQgVEptCi0odHJhbnNmb3JtKSAzOC43MzQ2IFRqCi03MiA4NS4yMzIzIFRkCi0oXCh1bmZvcnR1bmF0ZWx5XCkuKSA2Mi44MDQyIFRqCi0tNjIwIFRKbQotKE1heWJlKSAyNy42NjYxIFRqCi0tMjUwIFRKbQotKHRoaXMpIDE0LjM5NiBUagotLTI1MCBUSm0KLShpc24nKSAxNC45NDM5IFRqCi0xOCBUSm0KLSh0KSAyLjc2OTYgVGoKLS0yNTAgVEptCi0od2hhdCkgMTkuMzY3MyBUagotLTI1MCBUSm0KLSh5b3UpIDE0Ljk0MzkgVGoKLS0yNTAgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKGFudC4pIDE0LjY2NDkgVGoKLVsxIDAgMCAxIDcyIDgzLjA3NTVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yMi4yNjExXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuOTUxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC45NTE0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDMzKSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDM3IDM3Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxMTYuMzI4IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzgyLjQgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ5OC43MjggNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShNaXNjZWxsYW5lYSkgNDguMTM5MyBUagotWzEgMCAwIDEgMjY2LjA3MSA3NDkuMTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTcuMDkzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC01NDAgLTc0MS41NTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDcxMC4wMzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSWYpIDYuNjM1MDkgVGoKLS0yNzUgVEptCi0oeW91KSAxNC45NDM5IFRqCi0tMjc0IFRKbQotKHcpIDcuMTkzIFRqCi0xMCBUSm0KLShhbnQpIDEyLjE3NDMgVGoKLS0yNzUgVEptCi0oYSkgNC40MjMzOSBUagotLTI3NCBUSm0KLShjb21wcmVzc29yKSA0NS45Mjc2IFRqCi0tMjc1IFRKbQotKGFuZC9vcikgMjUuNDU0NCBUagotLTI3NSBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi0tMjc0IFRKbQotKHdoaWNoKSAyNC4zNDg2IFRqCi0tMjc1IFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjc0IFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFzdGVyKSAxOC44MDk0IFRqCi00MCBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjgxIFRKbQotKHVzZXMpIDE3LjE1NTYgVGoKLS0yNzUgVEptCi0obGVzcykgMTQuOTQzOSBUagotLTI3NCBUSm0KLShtZW1vcnkpIDMzLjIwNTMgVGoKLS0yNzUgVEptCi0oYikgNC45ODEzIFRqCi0yMCBUSm0KLSh1dCkgNy43NTA5IFRqCi0tMjc1IFRKbQotKGdldHMpIDE2LjA0OTcgVGoKLS0yNzQgVEptCi0ocHJldHR5KSAyMy4yNDI3IFRqCi0tMjc1IFRKbQotKGdvb2QpIDE5LjkyNTIgVGoKLS0yNzQgVEptCi0oY29tcHJlc3Npb24sKSA1Mi44NTE2IFRqCi0tMjgxIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjc1IFRKbQotKGhhcykgMTMuMjgwMSBUagotNzIgNjk4LjA4MiBUZAotKG1pbmltYWwpIDMzLjIxNTMgVGoKLS0yODggVEptCi0obGF0ZW5jKSAyMy43OTA3IFRqCi0xNSBUSm0KLSh5KSA0Ljk4MTMgVGoKLTY1IFRKbQotKCwpIDIuNDkwNjUgVGoKLS0yOTcgVEptCi0oY29uc2lkZXIpIDMzLjc1MzMgVGoKLS0yODggVEptCi0oSmVhbi1sb3VwKSAzOC43MzQ2IFRqCi0tMjg4IFRKbQotKEdhaWxseScpIDI4LjIyNCBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTI4OCBUSm0KLShhbmQpIDE0LjM4NiBUagotLTI4OCBUSm0KLShNYXJrKSAyMS41NzkgVGoKLS0yODggVEptCi0oQWRsKSAxNC45NDM5IFRqCi0xIFRKbQotKGVyJykgMTEuMDU4NSBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTI4OCBUSm0KLSh3KSA3LjE5MyBUagotMTAgVEptCi0ob3JrLCkgMTUuNzcwOCBUagotWzEgMCAwIDEgMzUzLjg3OSA2OTguMDgyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTM1My44NzkgLTY5OC4wODJdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTM1My44NzkgNjk4LjA4MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLSh6bGliLTEuMi4xKSA1OS43NzU2IFRqCi1bMSAwIDAgMSA0MTMuNjU1IDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDEzLjY1NSAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDE2LjUyMyA2OTguMDgyIFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKGFuZCkgMTQuMzg2IFRqCi1bMSAwIDAgMSA0MzMuNzc3IDY5OC4wODJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDMzLjc3NyAtNjk4LjA4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDMzLjc3NyA2OTguMDgyIFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKGd6aXAtMS4yLjQpIDU5Ljc3NTYgVGoKLVsxIDAgMCAxIDQ5My41NTMgNjk4LjA4Ml0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00OTMuNTUzIC02OTguMDgyXSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi00OTMuNTUzIDY5OC4wODIgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oLikgMi40OTA2NSBUagotLTg0NyBUSm0KLShMb29rKSAyMS4wMzEgVGoKLS0yODggVEptCi0oZm9yKSAxMS42MTY0IFRqCi03MiA2ODYuMTI3IFRkCi0odGhlbSkgMTkuOTI1MiBUagotLTI1MCBUSm0KLShhdCkgNy4xOTMgVGoKLS0yNTAgVEptCi0oaHR0cDovL3d3dykgNDUuMzg5NiBUagotNjUgVEptCi0oLnpsaWIpIDE3LjQzNDYgVGoKLTQwIFRKbQotKC5vcikgMTAuNzg5NSBUagotMTggVEptCi0oZykgNC45ODEzIFRqCi0tMjUwIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tMjUwIFRKbQotKGh0dHA6Ly93d3cpIDQ1LjM4OTYgVGoKLTY1IFRKbQotKC5nemlwLm9yKSAzMC40MzU3IFRqCi0xOCBUSm0KLShnKSA0Ljk4MTMgVGoKLS0yNTAgVEptCi0ocmVzcGVjdGkpIDMwLjk4MzcgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZWx5KSAxMi4xNzQzIFRqCi02NSBUSm0KLSguKSAyLjQ5MDY1IFRqCi1bMSAwIDAgMSA3MiA2ODMuOTddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY3NC4wMDhdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDY2NC4yMDkgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oRikgNS41MzkyMSBUagotMTUgVEptCi0ob3IpIDguMjk4ODUgVGoKLS01ODIgVEptCi0oc29tZXRoaW5nKSA0MS41MTQyIFRqCi0tNTgzIFRKbQotKGYpIDMuMzE3NTUgVGoKLTEwIFRKbQotKGFzdGVyKSAxOC44MDk0IFRqCi0tNTgyIFRKbQotKGFuZCkgMTQuMzg2IFRqCi0tNTgyIFRKbQotKGxpZ2h0ZXIpIDI2LjAxMjMgVGoKLS01ODMgVEptCi0oc3RpbGwsKSAxNy40NDQ1IFRqCi0tNjY1IFRKbQotKHlvdSkgMTQuOTQzOSBUagotLTU4MiBUSm0KLShtaWdodCkgMjMuMjUyNyBUagotLTU4MyBUSm0KLSh0cnkpIDExLjA2ODQgVGoKLS01ODIgVEptCi0oTWFya3VzKSAzMC40MzU3IFRqCi0tNTgyIFRKbQotKEYpIDUuNTM5MjEgVGoKLS01ODIgVEptCi0oWCkgNy4xOTMgVGoKLS01ODIgVEptCi0oSikgMy44NzU0NSBUagotLTU4MiBUSm0KLShPYmVyaHVtZXInKSA0OC42ODcyIFRqCi01NSBUSm0KLShzKSAzLjg3NTQ1IFRqCi1bMSAwIDAgMSA0MzcuNDMzIDY2NC4yMDldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDM3LjQzMyAtNjY0LjIwOV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNDM3LjQzMyA2NjQuMjA5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKExaTykgMTcuOTMyNyBUagotWzEgMCAwIDEgNDU1LjM2NSA2NjQuMjA5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ1NS4zNjUgLTY2NC4yMDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ2MS4xNjMgNjY0LjIwOSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShyZWFsLXRpbWUpIDM1Ljk2NSBUagotLTU4MiBUSm0KLShjb21wcmVzLSkgMzcuMDcwOCBUagotNzIgNjUyLjI1NCBUZAotKHNpb24vZGVjb21wcmVzc2lvbikgNzkuMTQyOSBUagotLTI1MCBUSm0KLShsaWJyYXJ5KSAyNi41NjAzIFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjUwIFRKbQotKGF0KSA3LjE5MyBUagotLTI1MCBUSm0KLShodHRwOi8vd3d3KSA0NS4zODk2IFRqCi02NSBUSm0KLSgub2Jlcmh1bWVyKSA0NS42NDg2IFRqCi01NSBUSm0KLSguY29tL29wZW5zb3VyY2UuKSA3MC4yNzYyIFRqCi1bMSAwIDAgMSA3MiA2NTAuMDk3XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtOS45NjI2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC02NDAuMTM1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiA2MTcuNTAxIFRkCi0vRjEyMl8wIDIwLjY1ODUgVGYKLSg0LjUuKSAzNC40NTg0IFRqCi0tMjc4IFRKbQotKEZ1cikgMzMuMjgwOCBUagotLTIwIFRKbQotKHRoZXIpIDM5LjAyMzkgVGoKLS0yNzggVEptCi0oUmVhZGluZykgODEuNDk3OCBUagotWzEgMCAwIDEgNzIgNjEyLjkwNV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTkuOTYyNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC03MiAtNjAyLjk0Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNzIgNTk1LjU4MyBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShiemlwMikgMjkuODg3OCBUagotWzEgMCAwIDEgMTAxLjg4OCA1OTUuNTgzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTEwMS44ODggLTU5NS41ODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTEwNC45MjMgNTk1LjU4MyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShpcykgNi42NDUwNSBUagotLTMwNSBUSm0KLShub3QpIDEyLjczMjIgVGoKLS0zMDQgVEptCi0ocmVzZWFyY2gpIDMzLjE4NTQgVGoKLS0zMDUgVEptCi0odykgNy4xOTMgVGoKLTEwIFRKbQotKG9yaywpIDE1Ljc3MDggVGoKLS0zMTggVEptCi0oaW4pIDcuNzUwOSBUagotLTMwNSBUSm0KLSh0aGUpIDEyLjE3NDMgVGoKLS0zMDQgVEptCi0oc2Vuc2UpIDIxLjU3OSBUagotLTMwNSBUSm0KLSh0aGF0KSAxNC45NDM5IFRqCi0tMzA0IFRKbQotKGl0KSA1LjUzOTIxIFRqCi0tMzA1IFRKbQotKGRvZXNuJykgMjYuNTYwMyBUagotMTggVEptCi0odCkgMi43Njk2IFRqCi0tMzA1IFRKbQotKHByZXNlbnQpIDI4Ljc3MiBUagotLTMwNCBUSm0KLShhbikgOS40MDQ2OSBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMzA1IFRKbQotKG5lKSA5LjQwNDY5IFRqCi0yNSBUSm0KLSh3KSA3LjE5MyBUagotLTMwNCBUSm0KLShpZGVhcy4pIDIyLjk2MzggVGoKLS00NzQgVEptCi0oUmF0aGVyKSAyNi41NjAzIFRqCi00MCBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMzE4IFRKbQotKGl0JykgOC44NTY3NSBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTMwNSBUSm0KLShhbikgOS40MDQ2OSBUagotLTMwNSBUSm0KLShlbmdpbmVlcmkpIDM3LjA3MDggVGoKLTEgVEptCi0obmcpIDkuOTYyNiBUagotLTMwNSBUSm0KLShlKSA0LjQyMzM5IFRqCi0xNSBUSm0KLSh4KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGVyY2lzZSkgMjMuMjMyOCBUagotNzIgNTgzLjYyOCBUZAotKGJhc2VkKSAyMi42ODQ4IFRqCi0tMjUwIFRKbQotKG9uKSA5Ljk2MjYgVGoKLS0yNTAgVEptCi0oZSkgNC40MjMzOSBUagotMTUgVEptCi0oeGlzdGluZykgMjcuMTI4MiBUagotLTI1MCBUSm0KLShpZGVhcy4pIDIyLjk2MzggVGoKLVsxIDAgMCAxIDcyIDU4MS40NzFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC05Ljk2MjddIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTU3MS41MDldIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDU2MS43MSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShGKSA1LjUzOTIxIFRqCi0xNSBUSm0KLShvdXIpIDEzLjI4MDEgVGoKLS0yNTAgVEptCi0oZG9jdW1lbnRzKSA0My4xNjc5IFRqCi0tMjUwIFRKbQotKGRlc2NyaWJlKSAzMy4xOTU0IFRqCi0tMjUwIFRKbQotKGVzc2VudGlhbGx5KSA0Mi4wNjIxIFRqCi0tMjUwIFRKbQotKGFsbCkgOS45NjI2IFRqCi0tMjUwIFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTI1MCBUSm0KLShpZGVhcykgMjAuNDczMSBUagotLTI1MCBUSm0KLShiZWhpbmQpIDI3LjExODIgVGoKLVsxIDAgMCAxIDI5OC43NDcgNTYxLjcxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTI5OC43NDcgLTU2MS43MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMjk4Ljc0NyA1NjEuNzEgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oYnppcDIpIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDMyOC42MzUgNTYxLjcxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTMyOC42MzUgLTU2MS43MV0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotMzI4LjYzNSA1NjEuNzEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oOikgMi43Njk2IFRqCi1bMSAwIDAgMSA3MiA1NTkuNTU0XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtMjk5Ljg3NV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjkyOTM5OCAwLjk2ODU5NyAwLjk1Njg0OF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjkyOTM5OCAwLjk2ODU5NyAwLjk1Njg0OF0gU0MKLTAgMCA0NjggMjk4Ljg3OSByZQotZgotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDI5NS4yOTNdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxOCAtOC4zNjg2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTkwIC01NTAuMTg5XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi05MCA1NTAuMTg5IFRkCi0vRjEzNF8wIDkuOTYyNiBUZgotKE1pY2hhZWwpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oQnVycm93cykgNDEuODQyOSBUagotLTQyNiBUSm0KLShhbmQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oRC4pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oSi4pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oV2hlZWxlcjopIDQ3LjgyMDUgVGoKLTk4LjQ4NzkgNTM4LjIzNCBUZAotKCJBKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKGJsb2NrLXNvcnRpbmcpIDc3LjcwODMgVGoKLS00MjYgVEptCi0obG9zc2xlc3MpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oZGF0YSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShjb21wcmVzc2lvbikgNjUuNzUzMiBUagotLTQyNiBUSm0KLShhbGdvcml0aG0iKSA1OS43NzU2IFRqCi0xMDIuNzMyIDUyNi4yNzggVGQKLSgxMHRoKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKE1heSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLSgxOTk0LikgMjkuODg3OCBUagotMTAyLjczMiA1MTQuMzIzIFRkCi0oRGlnaXRhbCkgNDEuODQyOSBUagotLTQyNiBUSm0KLShTUkMpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oUmVzZWFyY2gpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oUmVwb3J0KSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKDEyNC4pIDIzLjkxMDIgVGoKLTEwMi43MzIgNTAyLjM2OCBUZAotKGZ0cDovL2Z0cC5kaWdpdGFsLmNvbS9wdWIvREVDL1NSQy9yZXNlYXJjaC1yZXBvcnRzL1NSQy0xMjQucHMuZ1wKLXopIDM4Mi41NjQgVGoKLTEwMi43MzIgNDkwLjQxMyBUZAotKElmKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHlvdSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShoYXZlKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKHRyb3VibGUpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oZmluZGluZykgNDEuODQyOSBUagotLTQyNiBUSm0KLShpdCwpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0odHJ5KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKHNlYXJjaGluZykgNTMuNzk4IFRqCi0tNDI2IFRKbQotKGF0KSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotMTAyLjczMiA0NzguNDU4IFRkCi0oTmV3KSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKFplYWxhbmQpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oRGlnaXRhbCkgNDEuODQyOSBUagotLTQyNiBUSm0KLShMaWJyYXJ5LCkgNDcuODIwNSBUagotLTQyNiBUSm0KLShodHRwOi8vd3d3Lm56ZGwub3JnLikgMTE5LjU1MSBUagotOTAgNDU0LjU0NyBUZAotKERhbmllbCkgMzUuODY1NCBUagotLTQyNiBUSm0KLShTLikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShIaXJzY2hiZXJnKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKGFuZCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShEZWJyYSkgMjkuODg3OCBUagotLTQyNiBUSm0KLShBLikgMTEuOTU1MSBUagotLTQyNiBUSm0KLShMZUxld2VyKSA0MS44NDI5IFRqCi05OC40ODc5IDQ0Mi41OTIgVGQKLSgiRWZmaWNpZW50KSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKERlY29kaW5nKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKG9mKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKFByZWZpeCkgMzUuODY1NCBUagotLTQyNiBUSm0KLShDb2RlcyIpIDM1Ljg2NTQgVGoKLTEwMi43MzIgNDMwLjYzNyBUZAotKENvbW11bmljYXRpb25zKSA4My42ODU4IFRqCi0tNDI2IFRKbQotKG9mKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShBQ00sKSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKEFwcmlsKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKDE5OTAsKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKFZvbCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLSgzMywpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oTnVtYmVyKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKDQuKSAxMS45NTUxIFRqCi0xMDIuNzMyIDQxOC42ODIgVGQKLShZb3UpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0obWlnaHQpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oYmUpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oYWJsZSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLSh0bykgMTEuOTU1MSBUagotLTQyNiBUSm0KLShnZXQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oYW4pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oZWxlY3Ryb25pYykgNTkuNzc1NiBUagotLTQyNiBUSm0KLShjb3B5KSAyMy45MTAyIFRqCi0tNDI2IFRKbQotKG9mKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoaXMpIDIzLjkxMDIgVGoKLTEwMi43MzIgNDA2LjcyNyBUZAotKGZyb20pIDIzLjkxMDIgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKEFDTSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShEaWdpdGFsKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKExpYnJhcnkuKSA0Ny44MjA1IFRqCi05MCAzODIuODE2IFRkCi0oRGF2aWQpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oSi4pIDExLjk1NTEgVGoKLS00MjYgVEptCi0oV2hlZWxlcikgNDEuODQyOSBUagotMTAyLjczMiAzNzAuODYxIFRkCi0oUHJvZ3JhbSkgNDEuODQyOSBUagotLTQyNiBUSm0KLShicmVkMy5jKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKGFuZCkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShhY2NvbXBhbnlpbmcpIDcxLjczMDcgVGoKLS00MjYgVEptCi0oZG9jdW1lbnQpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0oYnJlZDMucHMuKSA1My43OTggVGoKLTEwMi43MzIgMzU4LjkwNiBUZAotKFRoaXMpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oY29udGFpbnMpIDQ3LjgyMDUgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKGlkZWEpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oYmVoaW5kKSAzNS44NjU0IFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShtdWx0aS10YWJsZSkgNjUuNzUzMiBUagotLTQyNiBUSm0KLShIdWZmbWFuKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKGNvZGluZykgMzUuODY1NCBUagotLTQyNiBUSm0KLShzY2hlbWUuKSA0MS44NDI5IFRqCi0xMDIuNzMyIDM0Ni45NTEgVGQKLShmdHA6Ly9mdHAuY2wuY2FtLmFjLnVrL3VzZXJzL2RqdzMvKSAyMDMuMjM3IFRqCi05MCAzMjMuMDQxIFRkCi0oSm9uKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKEwuKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKEJlbnRsZXkpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oYW5kKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKFJvYmVydCkgMzUuODY1NCBUagotLTQyNiBUSm0KLShTZWRnZXdpY2spIDUzLjc5OCBUagotOTguNDg3OSAzMTEuMDg1IFRkCi0oIkZhc3QpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oQWxnb3JpdGhtcykgNTkuNzc1NiBUagotLTQyNiBUSm0KLShmb3IpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oU29ydGluZykgNDEuODQyOSBUagotLTQyNiBUSm0KLShhbmQpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oU2VhcmNoaW5nKSA1My43OTggVGoKLS00MjYgVEptCi0oU3RyaW5ncyIpIDQ3LjgyMDUgVGoKLTEwMi43MzIgMjk5LjEzIFRkCi0oQXZhaWxhYmxlKSA1My43OTggVGoKLS00MjYgVEptCi0oZnJvbSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShTZWRnZXdpY2sncykgNjUuNzUzMiBUagotLTQyNiBUSm0KLSh3ZWIpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0ocGFnZSwpIDI5Ljg4NzggVGoKLTEwMi43MzIgMjg3LjE3NSBUZAotKHd3dy5jcy5wcmluY2V0b24uZWR1L35ycykgMTQzLjQ2MSBUagotWzEgMCAwIDEgNzIgMjU5LjY3OF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDQ2OCAzLjU4NjZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDY4IC0xMy41NDkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTcyIC0yNDkuNzE1XSBjbQotWzEgMCAwIDEgMCAwXSBUbQotMCAwIFRkCi03MiAyMzcuNzYgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oVGhlKSAxNS40OTE4IFRqCi0tMjM5IFRKbQotKGZvbGxvKSAxOC44MTk0IFRqCi0yNSBUSm0KLSh3aW5nKSAxOS45MjUyIFRqCi0tMjM4IFRKbQotKHBhcGVyKSAyMi4xMjY5IFRqCi0tMjM5IFRKbQotKGdpKSA3Ljc1MDkgVGoKLTI1IFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXMpIDguMjk4ODUgVGoKLS0yMzkgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhbHVhYmxlKSAyOC43NzIgVGoKLS0yMzggVEptCi0oYWRkaXRpb25hbCkgMzkuODUwNCBUagotLTIzOSBUSm0KLShpbnNpZ2h0cykgMzEuMDAzNiBUagotLTIzOCBUSm0KLShpbnRvKSAxNS41MDE4IFRqCi0tMjM5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIzOSBUSm0KLShhbGdvcml0aG0sKSA0MS4yMzUyIFRqCi0tMjQxIFRKbQotKGIpIDQuOTgxMyBUagotMjAgVEptCi0odXQpIDcuNzUwOSBUagotLTIzOCBUSm0KLShpcykgNi42NDUwNSBUagotLTIzOSBUSm0KLShub3QpIDEyLjczMjIgVGoKLS0yMzkgVEptCi0oaW1tZWRpKSAzMC40NDU3IFRqCi0xIFRKbQotKGF0ZWx5KSAxOS4zNjczIFRqCi0tMjM5IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIzOSBUSm0KLShiYXNpcykgMTkuOTI1MiBUagotLTIzOCBUSm0KLShvZikgOC4yOTg4NSBUagotLTIzOSBUSm0KLShhbikgOS40MDQ2OSBUagotMTUgVEptCi0oeSkgNC45ODEzIFRqCi0tMjM5IFRKbQotKGNvZGUpIDE4LjgwOTQgVGoKLTcyIDIyNS44MDUgVGQKLSh1c2VkKSAxOC4yNjE0IFRqCi0tMjUwIFRKbQotKGluKSA3Ljc1MDkgVGoKLS0yNTAgVEptCi0oYnppcDIuKSAyNC42Mjc1IFRqCi1bMSAwIDAgMSA3MiAyMjMuNjQ4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAtNzIuNzI3M10gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswLjkyOTM5OCAwLjk2ODU5NyAwLjk1Njg0OF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswLjkyOTM5OCAwLjk2ODU5NyAwLjk1Njg0OF0gU0MKLTAgMCA0NjggNzEuNzMxIHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNjguMTQ0NF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTIxNC4yODNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDIxNC4yODMgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oUGV0ZXIpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oRmVud2ljazopIDQ3LjgyMDUgVGoKLTEwMi43MzIgMjAyLjMyOCBUZAotKEJsb2NrKSAyOS44ODc4IFRqCi0tNDI2IFRKbQotKFNvcnRpbmcpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oVGV4dCkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShDb21wcmVzc2lvbikgNjUuNzUzMiBUagotMTAyLjczMiAxOTAuMzczIFRkCi0oUHJvY2VlZGluZ3MpIDY1Ljc1MzIgVGoKLS00MjYgVEptCi0ob2YpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKDE5dGgpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oQXVzdHJhbGFzaWFuKSA3MS43MzA3IFRqCi0tNDI2IFRKbQotKENvbXB1dGVyKSA0Ny44MjA1IFRqCi0tNDI2IFRKbQotKFNjaWVuY2UpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oQ29uZmVyZW5jZSwpIDY1Ljc1MzIgVGoKLTExMS4yMiAxNzguNDE4IFRkCi0oTWVsYm91cm5lLCkgNTkuNzc1NiBUagotLTQyNiBUSm0KLShBdXN0cmFsaWEuKSA1OS43NzU2IFRqCi0tODUyIFRKbQotKEphbikgMTcuOTMyNyBUagotLTQyNiBUSm0KLSgzMSkgMTEuOTU1MSBUagotLTQyNiBUSm0KLSgtKSA1Ljk3NzU2IFRqCi0tNDI2IFRKbQotKEZlYikgMTcuOTMyNyBUagotLTQyNiBUSm0KLSgyLCkgMTEuOTU1MSBUagotLTQyNiBUSm0KLSgxOTk2LikgMjkuODg3OCBUagotMTAyLjczMiAxNjYuNDYzIFRkCi0oZnRwOi8vZnRwLmNzLmF1Y2tsYW5kLmFjLm56L3B1Yi9wZXRlci1mL0FDU0M5NnBhcGVyLnBzKSAzMjIuNzg4IFRqCi1bMSAwIDAgMSA3MiAxNTAuOTIxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTE0MC45NThdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDEyOS4wMDMgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oSykgNy4xOTMgVGoKLTE1IFRKbQotKHVuaWhpaykgMjUuNDY0NCBUagotMTAgVEptCi0obykgNC45ODEzIFRqCi0tMjUwIFRKbQotKFNhZGFrYW5lJykgNDEuNDk0MiBUagotNTUgVEptCi0ocykgMy44NzU0NSBUagotLTI1MCBUSm0KLShzb3J0aW5nKSAyNy42NzYxIFRqCi0tMjUwIFRKbQotKGFsZ29yaXRobSwpIDQxLjIzNTIgVGoKLS0yNTAgVEptCi0obWVudGlvbmVkKSA0Mi4wNjIxIFRqCi0tMjUwIFRKbQotKGFibykgMTQuMzg2IFRqCi0xNSBUSm0KLSh2KSA0Ljk4MTMgVGoKLTE1IFRKbQotKGUsKSA2LjkxNDA0IFRqCi0tMjUwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLTIwIFRKbQotKHYpIDQuOTgxMyBUagotMjUgVEptCi0oYWlsYWJsZSkgMjYuNTYwMyBUagotLTI1MCBUSm0KLShmcm9tOikgMjIuMTM2OSBUagotWzEgMCAwIDEgNzIgMTI2Ljg0Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTM2Ljg2MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMC45MjkzOTggMC45Njg1OTcgMC45NTY4NDhdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMC45MjkzOTggMC45Njg1OTcgMC45NTY4NDhdIFNDCi0wIDAgNDY4IDM1Ljg2NTUgcmUKLWYKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCAzMi4yNzg5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtMTE3LjQ4Ml0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgMTE3LjQ4MiBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShodHRwOi8vbmFvbWkuaXMucy51LXRva3lvLmFjLmpwL35zYWRhL3BhcGVycy9TYWRhOThiLnBzLmd6KSAzNDYuNjk4IFRqCi1bMSAwIDAgMSA3MiA4OS45ODQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0yOS4xNzAyXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDM3NC4zOTQgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0MC41NzI2IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNDkzLjg0MSAtNTAuOTUxNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotNTM0LjQxNCA1MC45NTE0IFRkCi0vRjEzMF8wIDkuOTYyNiBUZgotKDM0KSA5Ljk2MjYgVGoKLVsxIDAgMCAxIDQ1My4yNjkgNTAuODUxOF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDkzLjU5ODUgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDYuMjc2NSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVEKLXNob3dwYWdlCi0lJVBhZ2VUcmFpbGVyCi1wZGZFbmRQYWdlCi0lJVBhZ2U6IDM4IDM4Ci0lJUJlZ2luUGFnZVNldHVwCi0lJVBhZ2VPcmllbnRhdGlvbjogUG9ydHJhaXQKLXBkZlN0YXJ0UGFnZQotMCAwIDYxMiA3OTIgcmUgVwotJSVFbmRQYWdlU2V0dXAKLVtdIDAgZAotMSBpCi0wIGoKLTAgSgotMTAgTQotMSB3Ci0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1mYWxzZSBvcAotZmFsc2UgT1AKLTAgMCA2MTIgNzkyIHJlCi1XCi1xCi1bMSAwIDAgMSA3MiA3NDEuNTU0XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMS44OTI5IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMTQuNDQ1OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4Ny4xOTcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDIuNDkwNyAtNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMCA2Ljg1NDFdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAxMTYuMzI4IC02Ljc1NDZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtMzgyLjQgLTc0OS4yNDVdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTQ5OC43MjggNzQ5LjI0NSBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLShNaXNjZWxsYW5lYSkgNDguMTM5MyBUagotWzEgMCAwIDEgMjY2LjA3MSA3NDkuMTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMjgwLjc5NiAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ3Mi45NzQgLTcuMDkzNl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgLTAuNDk4MV0gY20KLXEKLVtdIDAgZAotMCBKCi0wLjQ5ODEgdwotMCAwLjI0OTEgbQotNDc1LjQ2NSAwLjI0OTEgbAotUwotUQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDc5LjI1MSAwXSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgLTEzLjE0MzYgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC01NDAgLTc0MS41NTRdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDcxMC4wMzcgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oVGhlKSAxNS40OTE4IFRqCi0tMjUwIFRKbQotKE1hbmJlcikgMzAuOTgzNyBUagotMjAgVEptCi0oLU15ZXJzKSAyOC43NzIgVGoKLS0yNTAgVEptCi0oc3VmKSAxMi4xNzQzIFRqCi0yNSBUSm0KLShcMDAyeCkgMTAuNTIwNSBUagotLTI1MCBUSm0KLShhcnJheSkgMjAuNDYzMiBUagotLTI1MCBUSm0KLShjb25zdHJ1Y3Rpb24pIDQ5LjI1NTEgVGoKLS0yNTAgVEptCi0oYWxnb3JpdGhtKSAzOC43NDQ2IFRqCi0tMjUwIFRKbQotKGlzKSA2LjY0NTA1IFRqCi0tMjUwIFRKbQotKGRlc2NyaWJlZCkgMzguMTc2NyBUagotLTI1MCBUSm0KLShpbikgNy43NTA5IFRqCi0tMjUwIFRKbQotKGEpIDQuNDIzMzkgVGoKLS0yNTAgVEptCi0ocGFwZXIpIDIyLjEyNjkgVGoKLS0yNTAgVEptCi0oYSkgNC40MjMzOSBUagotMjAgVEptCi0odikgNC45ODEzIFRqCi0yNSBUSm0KLShhaWxhYmxlKSAyNi41NjAzIFRqCi0tMjUwIFRKbQotKGZyb206KSAyMi4xMzY5IFRqCi1bMSAwIDAgMSA3MiA3MDcuODhdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0zNi44NjE4XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTI5Mzk4IDAuOTY4NTk3IDAuOTU2ODQ4XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTI5Mzk4IDAuOTY4NTk3IDAuOTU2ODQ4XSBTQwotMCAwIDQ2OCAzNS44NjU1IHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMzIuMjc4OV0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDE4IC04LjM2ODVdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtOTAgLTY5OC41MTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTkwIDY5OC41MTYgVGQKLS9GMTM0XzAgOS45NjI2IFRmCi0oaHR0cDovL3d3dy5jcy5hcml6b25hLmVkdS9wZW9wbGUvZ2VuZS9QQVBFUlMvc3VmZml4LnBzKSAzMjIuNzg4IFRqCi1bMSAwIDAgMSA3MiA2NzEuMDE5XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDY4IDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC00NjggLTEzLjU0OTJdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAtNzIgLTY2MS4wNTZdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTcyIDY0OS4xMDEgVGQKLS9GMTMwXzAgOS45NjI2IFRmCi0oRmluYWxseSkgMjguMjM0IFRqCi02NSBUSm0KLSgsKSAyLjQ5MDY1IFRqCi0tMjI3IFRKbQotKHRoZSkgMTIuMTc0MyBUagotLTIyMSBUSm0KLShmb2xsbykgMTguODE5NCBUagotMjUgVEptCi0od2luZykgMTkuOTI1MiBUagotLTIyMiBUSm0KLShwYXBlcnMpIDI2LjAwMjQgVGoKLS0yMjEgVEptCi0oZG9jdW1lbnQpIDM5LjI5MjUgVGoKLS0yMjEgVEptCi0oc29tZSkgMjEuMDMxIFRqCi0tMjIyIFRKbQotKGluKSA3Ljc1MDkgVGoKLTQwIFRKbQotKHYpIDQuOTgxMyBUagotMTUgVEptCi0oZXN0aWcpIDE4LjgxOTQgVGoKLTUgVEptCi0oYXRpb25zKSAyMy44MDA3IFRqCi0tMjIxIFRKbQotKEkpIDMuMzE3NTUgVGoKLS0yMjEgVEptCi0obWFkZSkgMjEuNTc5IFRqCi0tMjIyIFRKbQotKGludG8pIDE1LjUwMTggVGoKLS0yMjEgVEptCi0odGhlKSAxMi4xNzQzIFRqCi0tMjIxIFRKbQotKHBlcmZvcm1hbmNlKSA1MC4zNDEgVGoKLS0yMjIgVEptCi0ob2YpIDguMjk4ODUgVGoKLS0yMjEgVEptCi0oc29ydGluZykgMjcuNjc2MSBUagotLTIyMSBUSm0KLShhbmQpIDE0LjM4NiBUagotLTIyMiBUSm0KLShkZWNvbXByZXNzaW9uKSA1OS43NjU2IFRqCi03MiA2MzcuMTQ2IFRkCi0oYWxnb3JpdGhtczopIDQ1LjM4OTYgVGoKLVsxIDAgMCAxIDcyIDYzNC45ODldIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIC0xMzIuNTAzXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAuOTI5Mzk4IDAuOTY4NTk3IDAuOTU2ODQ4XSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAuOTI5Mzk4IDAuOTY4NTk3IDAuOTU2ODQ4XSBTQwotMCAwIDQ2OCAxMzEuNTA3IHJlCi1mCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAwIDMuNTg2Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgMTI3LjkyXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMTggLTguMzY4Nl0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIC05MCAtNjI1LjYyNF0gY20KLVsxIDAgMCAxIDAgMF0gVG0KLTAgMCBUZAotOTAgNjI1LjYyNCBUZAotL0YxMzRfMCA5Ljk2MjYgVGYKLShKdWxpYW4pIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oU2V3YXJkKSAzNS44NjU0IFRqCi0xMDIuNzMyIDYxMy42NjkgVGQKLShPbikgMTEuOTU1MSBUagotLTQyNiBUSm0KLSh0aGUpIDE3LjkzMjcgVGoKLS00MjYgVEptCi0oUGVyZm9ybWFuY2UpIDY1Ljc1MzIgVGoKLS00MjYgVEptCi0ob2YpIDExLjk1NTEgVGoKLS00MjYgVEptCi0oQldUKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKFNvcnRpbmcpIDQxLjg0MjkgVGoKLS00MjYgVEptCi0oQWxnb3JpdGhtcykgNTkuNzc1NiBUagotMTAyLjczMiA2MDEuNzE0IFRkCi0oUHJvY2VlZGluZ3MpIDY1Ljc1MzIgVGoKLS00MjYgVEptCi0ob2YpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKElFRUUpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oRGF0YSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShDb21wcmVzc2lvbikgNjUuNzUzMiBUagotLTQyNiBUSm0KLShDb25mZXJlbmNlKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKDIwMDApIDIzLjkxMDIgVGoKLTExMS4yMiA1ODkuNzU5IFRkCi0oU25vd2JpcmQsKSA1My43OTggVGoKLS00MjYgVEptCi0oVXRhaC4pIDI5Ljg4NzggVGoKLS04NTIgVEptCi0oMjgtMzApIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oTWFyY2gpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oMjAwMC4pIDI5Ljg4NzggVGoKLTkwIDU2NS44NDggVGQKLShKdWxpYW4pIDM1Ljg2NTQgVGoKLS00MjYgVEptCi0oU2V3YXJkKSAzNS44NjU0IFRqCi0xMDIuNzMyIDU1My44OTMgVGQKLShTcGFjZS10aW1lKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKFRyYWRlb2ZmcykgNTMuNzk4IFRqCi0tNDI2IFRKbQotKGluKSAxMS45NTUxIFRqCi0tNDI2IFRKbQotKHRoZSkgMTcuOTMyNyBUagotLTQyNiBUSm0KLShJbnZlcnNlKSA0MS44NDI5IFRqCi0tNDI2IFRKbQotKEItVykgMTcuOTMyNyBUagotLTQyNiBUSm0KLShUcmFuc2Zvcm0pIDUzLjc5OCBUagotMTAyLjczMiA1NDEuOTM4IFRkCi0oUHJvY2VlZGluZ3MpIDY1Ljc1MzIgVGoKLS00MjYgVEptCi0ob2YpIDExLjk1NTEgVGoKLS00MjYgVEptCi0odGhlKSAxNy45MzI3IFRqCi0tNDI2IFRKbQotKElFRUUpIDIzLjkxMDIgVGoKLS00MjYgVEptCi0oRGF0YSkgMjMuOTEwMiBUagotLTQyNiBUSm0KLShDb21wcmVzc2lvbikgNjUuNzUzMiBUagotLTQyNiBUSm0KLShDb25mZXJlbmNlKSA1OS43NzU2IFRqCi0tNDI2IFRKbQotKDIwMDEpIDIzLjkxMDIgVGoKLTExMS4yMiA1MjkuOTgzIFRkCi0oU25vd2JpcmQsKSA1My43OTggVGoKLS00MjYgVEptCi0oVXRhaC4pIDI5Ljg4NzggVGoKLS04NTIgVEptCi0oMjctMjkpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oTWFyY2gpIDI5Ljg4NzggVGoKLS00MjYgVEptCi0oMjAwMS4pIDI5Ljg4NzggVGoKLVsxIDAgMCAxIDcyIDUwMi40ODZdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA0NjggMy41ODY2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ2OCAtMy41ODY2XSBjbQotL0RldmljZUdyYXkge30gY3MKLVswXSBzYwotL0RldmljZUdyYXkge30gQ1MKLVswXSBTQwotWzEgMCAwIDEgMCAtNDUxLjYzNF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIDEuODkyOSAwXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgMi40OTA3IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAzNzQuMzk0IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSAyLjQ5MDcgMF0gY20KLS9EZXZpY2VSR0Ige30gY3MKLVswIDAgMF0gc2MKLS9EZXZpY2VSR0Ige30gQ1MKLVswIDAgMF0gU0MKLVsxIDAgMCAxIDAgNi44NTQxXSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgNDAuNTcyNiAtNi43NTQ2XSBjbQotL0RldmljZVJHQiB7fSBjcwotWzAgMCAwXSBzYwotL0RldmljZVJHQiB7fSBDUwotWzAgMCAwXSBTQwotWzEgMCAwIDEgLTQ5My44NDEgLTUwLjk1MTNdIGNtCi1bMSAwIDAgMSAwIDBdIFRtCi0wIDAgVGQKLTUzNC40MTQgNTAuOTUxMyBUZAotL0YxMzBfMCA5Ljk2MjYgVGYKLSgzNSkgOS45NjI2IFRqCi1bMSAwIDAgMSA0NTMuMjY5IDUwLjg1MThdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA5My41OTg1IDBdIGNtCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi0vRGV2aWNlUkdCIHt9IGNzCi1bMCAwIDBdIHNjCi0vRGV2aWNlUkdCIHt9IENTCi1bMCAwIDBdIFNDCi1bMSAwIDAgMSA2LjI3NjUgMF0gY20KLS9EZXZpY2VHcmF5IHt9IGNzCi1bMF0gc2MKLS9EZXZpY2VHcmF5IHt9IENTCi1bMF0gU0MKLVsxIDAgMCAxIC0xMy4xNDM2IDBdIGNtCi0vRGV2aWNlR3JheSB7fSBjcwotWzBdIHNjCi0vRGV2aWNlR3JheSB7fSBDUwotWzBdIFNDCi1RCi1zaG93cGFnZQotJSVQYWdlVHJhaWxlcgotcGRmRW5kUGFnZQotJSVUcmFpbGVyCi1lbmQKLSUlRG9jdW1lbnRTdXBwbGllZFJlc291cmNlczoKLSUlKyBmb250IERUVVVIUCtOaW1idXNTYW5MLUJvbGQKLSUlKyBmb250IFZYQU1SVitOaW1idXNSb21ObzlMLVJlZ3UKLSUlKyBmb250IE1GRUNVUitOaW1idXNNb25MLVJlZ3UKLSUlKyBmb250IFpPVk1SRCtDTU1JMTAKLSUlKyBmb250IEVSVkJGVCtOaW1idXNNb25MLUJvbGQKLSUlKyBmb250IEJaWElFQitDTVNZMTAKLSUlKyBmb250IFdXV1VUVStOaW1idXNSb21ObzlMLVJlZ3VJdGFsCi0lJUVPRgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvbWFudWFsLnhtbCBiL1V0aWxpdGllcy9jbWJ6aXAyL21hbnVhbC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMjQxMzYuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvbWFudWFsLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDI5NjQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+IDwhLS0gLSotIHNnbWwgLSotIC0tPgotPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgotICAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIlsKLQotPCEtLSB2YXJpb3VzIHN0cmluZ3MsIGRhdGVzIGV0Yy4gY29tbW9uIHRvIGFsbCBkb2NzIC0tPgotPCFFTlRJVFkgJSBjb21tb24tZW50cyBTWVNURU0gImVudGl0aWVzLnhtbCI+ICVjb21tb24tZW50czsKLV0+Ci0KLTxib29rIGxhbmc9ImVuIiBpZD0idXNlcm1hbiIgeHJlZmxhYmVsPSJiemlwMiBNYW51YWwiPgotCi0gPGJvb2tpbmZvPgotICA8dGl0bGU+YnppcDIgYW5kIGxpYmJ6aXAyLCB2ZXJzaW9uIDEuMC41PC90aXRsZT4KLSAgPHN1YnRpdGxlPkEgcHJvZ3JhbSBhbmQgbGlicmFyeSBmb3IgZGF0YSBjb21wcmVzc2lvbjwvc3VidGl0bGU+Ci0gIDxjb3B5cmlnaHQ+Ci0gICA8eWVhcj4mYnotbGlmZXNwYW47PC95ZWFyPgotICAgPGhvbGRlcj5KdWxpYW4gU2V3YXJkPC9ob2xkZXI+Ci0gIDwvY29weXJpZ2h0PgotICA8cmVsZWFzZWluZm8+VmVyc2lvbiAmYnotdmVyc2lvbjsgb2YgJmJ6LWRhdGU7PC9yZWxlYXNlaW5mbz4KLQotICA8YXV0aG9yZ3JvdXA+Ci0gICA8YXV0aG9yPgotICAgIDxmaXJzdG5hbWU+SnVsaWFuPC9maXJzdG5hbWU+Ci0gICAgPHN1cm5hbWU+U2V3YXJkPC9zdXJuYW1lPgotICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgPG9yZ25hbWU+JmJ6LXVybDs8L29yZ25hbWU+Ci0gICAgPC9hZmZpbGlhdGlvbj4KLSAgIDwvYXV0aG9yPgotICA8L2F1dGhvcmdyb3VwPgotCi0gIDxsZWdhbG5vdGljZT4KLQotICA8cGFyYT5UaGlzIHByb2dyYW0sIDxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+LCB0aGUKLSAgYXNzb2NpYXRlZCBsaWJyYXJ5IDxjb21wdXRlcm91dHB1dD5saWJiemlwMjwvY29tcHV0ZXJvdXRwdXQ+LCBhbmQKLSAgYWxsIGRvY3VtZW50YXRpb24sIGFyZSBjb3B5cmlnaHQgJmNvcHk7ICZiei1saWZlc3BhbjsgSnVsaWFuIFNld2FyZC4KLSAgQWxsIHJpZ2h0cyByZXNlcnZlZC48L3BhcmE+Ci0KLSAgPHBhcmE+UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aAotICBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZQotICBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OjwvcGFyYT4KLQotICA8aXRlbWl6ZWRsaXN0IG1hcms9J2J1bGxldCc+Ci0KLSAgIDxsaXN0aXRlbT48cGFyYT5SZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlCi0gICBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCi0gICBmb2xsb3dpbmcgZGlzY2xhaW1lci48L3BhcmE+PC9saXN0aXRlbT4KLQotICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZQotICAgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwKLSAgIHNvZnR3YXJlLiAgSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4KLSAgIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUKLSAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0KLSAgIDxsaXN0aXRlbT48cGFyYT5BbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkCi0gICBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsCi0gICBzb2Z0d2FyZS48L3BhcmE+PC9saXN0aXRlbT4KLQotICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvCi0gICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAotICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLjwvcGFyYT48L2xpc3RpdGVtPgotCi0gIDwvaXRlbWl6ZWRsaXN0PgotCi0gIDxwYXJhPlRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiAiQVMgSVMiIEFORCBBTlkKLSAgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQotICBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAotICBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSAgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcKLSAgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLjwvcGFyYT4KLQotIDxwYXJhPlBBVEVOVFM6IFRvIHRoZSBiZXN0IG9mIG15IGtub3dsZWRnZSwKLSA8Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBhbmQKLSA8Y29tcHV0ZXJvdXRwdXQ+bGliYnppcDI8L2NvbXB1dGVyb3V0cHV0PiBkbyBub3QgdXNlIGFueSBwYXRlbnRlZAotIGFsZ29yaXRobXMuICBIb3dldmVyLCBJIGRvIG5vdCBoYXZlIHRoZSByZXNvdXJjZXMgdG8gY2FycnkKLSBvdXQgYSBwYXRlbnQgc2VhcmNoLiAgVGhlcmVmb3JlIEkgY2Fubm90IGdpdmUgYW55IGd1YXJhbnRlZSBvZgotIHRoZSBhYm92ZSBzdGF0ZW1lbnQuCi0gPC9wYXJhPgotCi08L2xlZ2Fsbm90aWNlPgotCi08L2Jvb2tpbmZvPgotCi0KLQotPGNoYXB0ZXIgaWQ9ImludHJvIiB4cmVmbGFiZWw9IkludHJvZHVjdGlvbiI+Ci08dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KLQotPHBhcmE+PGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gY29tcHJlc3NlcyBmaWxlcwotdXNpbmcgdGhlIEJ1cnJvd3MtV2hlZWxlciBibG9jay1zb3J0aW5nIHRleHQgY29tcHJlc3Npb24KLWFsZ29yaXRobSwgYW5kIEh1ZmZtYW4gY29kaW5nLiAgQ29tcHJlc3Npb24gaXMgZ2VuZXJhbGx5Ci1jb25zaWRlcmFibHkgYmV0dGVyIHRoYW4gdGhhdCBhY2hpZXZlZCBieSBtb3JlIGNvbnZlbnRpb25hbAotTFo3Ny9MWjc4LWJhc2VkIGNvbXByZXNzb3JzLCBhbmQgYXBwcm9hY2hlcyB0aGUgcGVyZm9ybWFuY2Ugb2YKLXRoZSBQUE0gZmFtaWx5IG9mIHN0YXRpc3RpY2FsIGNvbXByZXNzb3JzLjwvcGFyYT4KLQotPHBhcmE+PGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gaXMgYnVpbHQgb24gdG9wIG9mCi08Y29tcHV0ZXJvdXRwdXQ+bGliYnppcDI8L2NvbXB1dGVyb3V0cHV0PiwgYSBmbGV4aWJsZSBsaWJyYXJ5IGZvcgotaGFuZGxpbmcgY29tcHJlc3NlZCBkYXRhIGluIHRoZQotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gZm9ybWF0LiAgVGhpcyBtYW51YWwKLWRlc2NyaWJlcyBib3RoIGhvdyB0byB1c2UgdGhlIHByb2dyYW0gYW5kIGhvdyB0byB3b3JrIHdpdGggdGhlCi1saWJyYXJ5IGludGVyZmFjZS4gIE1vc3Qgb2YgdGhlIG1hbnVhbCBpcyBkZXZvdGVkIHRvIHRoaXMKLWxpYnJhcnksIG5vdCB0aGUgcHJvZ3JhbSwgd2hpY2ggaXMgZ29vZCBuZXdzIGlmIHlvdXIgaW50ZXJlc3QgaXMKLW9ubHkgaW4gdGhlIHByb2dyYW0uPC9wYXJhPgotCi08aXRlbWl6ZWRsaXN0IG1hcms9J2J1bGxldCc+Ci0KLSA8bGlzdGl0ZW0+PHBhcmE+PHhyZWYgbGlua2VuZD0idXNpbmciLz4gZGVzY3JpYmVzIGhvdyB0byB1c2UKLSA8Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PjsgdGhpcyBpcyB0aGUgb25seSBwYXJ0Ci0geW91IG5lZWQgdG8gcmVhZCBpZiB5b3UganVzdCB3YW50IHRvIGtub3cgaG93IHRvIG9wZXJhdGUgdGhlCi0gcHJvZ3JhbS48L3BhcmE+PC9saXN0aXRlbT4KLQotIDxsaXN0aXRlbT48cGFyYT48eHJlZiBsaW5rZW5kPSJsaWJwcm9nIi8+IGRlc2NyaWJlcyB0aGUKLSBwcm9ncmFtbWluZyBpbnRlcmZhY2VzIGluIGRldGFpbCwgYW5kPC9wYXJhPjwvbGlzdGl0ZW0+Ci0KLSA8bGlzdGl0ZW0+PHBhcmE+PHhyZWYgbGlua2VuZD0ibWlzYyIvPiByZWNvcmRzIHNvbWUKLSBtaXNjZWxsYW5lb3VzIG5vdGVzIHdoaWNoIEkgdGhvdWdodCBvdWdodCB0byBiZSByZWNvcmRlZAotIHNvbWV3aGVyZS48L3BhcmE+PC9saXN0aXRlbT4KLQotPC9pdGVtaXplZGxpc3Q+Ci0KLTwvY2hhcHRlcj4KLQotCi08Y2hhcHRlciBpZD0idXNpbmciIHhyZWZsYWJlbD0iSG93IHRvIHVzZSBiemlwMiI+Ci08dGl0bGU+SG93IHRvIHVzZSBiemlwMjwvdGl0bGU+Ci0KLTxwYXJhPlRoaXMgY2hhcHRlciBjb250YWlucyBhIGNvcHkgb2YgdGhlCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBtYW4gcGFnZSwgYW5kIG5vdGhpbmcKLWVsc2UuPC9wYXJhPgotCi08c2VjdDEgaWQ9Im5hbWUiIHhyZWZsYWJlbD0iTkFNRSI+Ci08dGl0bGU+TkFNRTwvdGl0bGU+Ci0KLTxpdGVtaXplZGxpc3QgbWFyaz0nYnVsbGV0Jz4KLQotIDxsaXN0aXRlbT48cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiwKLSAgPGNvbXB1dGVyb3V0cHV0PmJ1bnppcDI8L2NvbXB1dGVyb3V0cHV0PiAtIGEgYmxvY2stc29ydGluZyBmaWxlCi0gIGNvbXByZXNzb3IsIHYxLjAuNDwvcGFyYT48L2xpc3RpdGVtPgotCi0gPGxpc3RpdGVtPjxwYXJhPjxjb21wdXRlcm91dHB1dD5iemNhdDwvY29tcHV0ZXJvdXRwdXQ+IC0KLSAgIGRlY29tcHJlc3NlcyBmaWxlcyB0byBzdGRvdXQ8L3BhcmE+PC9saXN0aXRlbT4KLQotIDxsaXN0aXRlbT48cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnppcDJyZWNvdmVyPC9jb21wdXRlcm91dHB1dD4gLQotICAgcmVjb3ZlcnMgZGF0YSBmcm9tIGRhbWFnZWQgYnppcDIgZmlsZXM8L3BhcmE+PC9saXN0aXRlbT4KLQotPC9pdGVtaXplZGxpc3Q+Ci0KLTwvc2VjdDE+Ci0KLQotPHNlY3QxIGlkPSJzeW5vcHNpcyIgeHJlZmxhYmVsPSJTWU5PUFNJUyI+Ci08dGl0bGU+U1lOT1BTSVM8L3RpdGxlPgotCi08aXRlbWl6ZWRsaXN0IG1hcms9J2J1bGxldCc+Ci0KLSA8bGlzdGl0ZW0+PHBhcmE+PGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gWwotICAtY2Rma3FzdHZ6VkwxMjM0NTY3ODkgXSBbIGZpbGVuYW1lcyAuLi4gIF08L3BhcmE+PC9saXN0aXRlbT4KLQotIDxsaXN0aXRlbT48cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnVuemlwMjwvY29tcHV0ZXJvdXRwdXQ+IFsKLSAgLWZrdnNWTCBdIFsgZmlsZW5hbWVzIC4uLiAgXTwvcGFyYT48L2xpc3RpdGVtPgotCi0gPGxpc3RpdGVtPjxwYXJhPjxjb21wdXRlcm91dHB1dD5iemNhdDwvY29tcHV0ZXJvdXRwdXQ+IFsgLXMgXSBbCi0gIGZpbGVuYW1lcyAuLi4gIF08L3BhcmE+PC9saXN0aXRlbT4KLQotIDxsaXN0aXRlbT48cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnppcDJyZWNvdmVyPC9jb21wdXRlcm91dHB1dD4KLSAgZmlsZW5hbWU8L3BhcmE+PC9saXN0aXRlbT4KLQotPC9pdGVtaXplZGxpc3Q+Ci0KLTwvc2VjdDE+Ci0KLQotPHNlY3QxIGlkPSJkZXNjcmlwdGlvbiIgeHJlZmxhYmVsPSJERVNDUklQVElPTiI+Ci08dGl0bGU+REVTQ1JJUFRJT048L3RpdGxlPgotCi08cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBjb21wcmVzc2VzIGZpbGVzCi11c2luZyB0aGUgQnVycm93cy1XaGVlbGVyIGJsb2NrIHNvcnRpbmcgdGV4dCBjb21wcmVzc2lvbgotYWxnb3JpdGhtLCBhbmQgSHVmZm1hbiBjb2RpbmcuICBDb21wcmVzc2lvbiBpcyBnZW5lcmFsbHkKLWNvbnNpZGVyYWJseSBiZXR0ZXIgdGhhbiB0aGF0IGFjaGlldmVkIGJ5IG1vcmUgY29udmVudGlvbmFsCi1MWjc3L0xaNzgtYmFzZWQgY29tcHJlc3NvcnMsIGFuZCBhcHByb2FjaGVzIHRoZSBwZXJmb3JtYW5jZSBvZgotdGhlIFBQTSBmYW1pbHkgb2Ygc3RhdGlzdGljYWwgY29tcHJlc3NvcnMuPC9wYXJhPgotCi08cGFyYT5UaGUgY29tbWFuZC1saW5lIG9wdGlvbnMgYXJlIGRlbGliZXJhdGVseSB2ZXJ5IHNpbWlsYXIgdG8KLXRob3NlIG9mIEdOVSA8Y29tcHV0ZXJvdXRwdXQ+Z3ppcDwvY29tcHV0ZXJvdXRwdXQ+LCBidXQgdGhleSBhcmUKLW5vdCBpZGVudGljYWwuPC9wYXJhPgotCi08cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBleHBlY3RzIGEgbGlzdCBvZgotZmlsZSBuYW1lcyB0byBhY2NvbXBhbnkgdGhlIGNvbW1hbmQtbGluZSBmbGFncy4gIEVhY2ggZmlsZSBpcwotcmVwbGFjZWQgYnkgYSBjb21wcmVzc2VkIHZlcnNpb24gb2YgaXRzZWxmLCB3aXRoIHRoZSBuYW1lCi08Y29tcHV0ZXJvdXRwdXQ+b3JpZ2luYWxfbmFtZS5iejI8L2NvbXB1dGVyb3V0cHV0Pi4gIEVhY2gKLWNvbXByZXNzZWQgZmlsZSBoYXMgdGhlIHNhbWUgbW9kaWZpY2F0aW9uIGRhdGUsIHBlcm1pc3Npb25zLCBhbmQsCi13aGVuIHBvc3NpYmxlLCBvd25lcnNoaXAgYXMgdGhlIGNvcnJlc3BvbmRpbmcgb3JpZ2luYWwsIHNvIHRoYXQKLXRoZXNlIHByb3BlcnRpZXMgY2FuIGJlIGNvcnJlY3RseSByZXN0b3JlZCBhdCBkZWNvbXByZXNzaW9uIHRpbWUuCi1GaWxlIG5hbWUgaGFuZGxpbmcgaXMgbmFpdmUgaW4gdGhlIHNlbnNlIHRoYXQgdGhlcmUgaXMgbm8KLW1lY2hhbmlzbSBmb3IgcHJlc2VydmluZyBvcmlnaW5hbCBmaWxlIG5hbWVzLCBwZXJtaXNzaW9ucywKLW93bmVyc2hpcHMgb3IgZGF0ZXMgaW4gZmlsZXN5c3RlbXMgd2hpY2ggbGFjayB0aGVzZSBjb25jZXB0cywgb3IKLWhhdmUgc2VyaW91cyBmaWxlIG5hbWUgbGVuZ3RoIHJlc3RyaWN0aW9ucywgc3VjaCBhcwotTVMtRE9TLjwvcGFyYT4KLQotPHBhcmE+PGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gYW5kCi08Y29tcHV0ZXJvdXRwdXQ+YnVuemlwMjwvY29tcHV0ZXJvdXRwdXQ+IHdpbGwgYnkgZGVmYXVsdCBub3QKLW92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcy4gIElmIHlvdSB3YW50IHRoaXMgdG8gaGFwcGVuLCBzcGVjaWZ5Ci10aGUgPGNvbXB1dGVyb3V0cHV0Pi1mPC9jb21wdXRlcm91dHB1dD4gZmxhZy48L3BhcmE+Ci0KLTxwYXJhPklmIG5vIGZpbGUgbmFtZXMgYXJlIHNwZWNpZmllZCwKLTxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+IGNvbXByZXNzZXMgZnJvbSBzdGFuZGFyZAotaW5wdXQgdG8gc3RhbmRhcmQgb3V0cHV0LiAgSW4gdGhpcyBjYXNlLAotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gd2lsbCBkZWNsaW5lIHRvIHdyaXRlCi1jb21wcmVzc2VkIG91dHB1dCB0byBhIHRlcm1pbmFsLCBhcyB0aGlzIHdvdWxkIGJlIGVudGlyZWx5Ci1pbmNvbXByZWhlbnNpYmxlIGFuZCB0aGVyZWZvcmUgcG9pbnRsZXNzLjwvcGFyYT4KLQotPHBhcmE+PGNvbXB1dGVyb3V0cHV0PmJ1bnppcDI8L2NvbXB1dGVyb3V0cHV0PiAob3IKLTxjb21wdXRlcm91dHB1dD5iemlwMiAtZDwvY29tcHV0ZXJvdXRwdXQ+KSBkZWNvbXByZXNzZXMgYWxsCi1zcGVjaWZpZWQgZmlsZXMuICBGaWxlcyB3aGljaCB3ZXJlIG5vdCBjcmVhdGVkIGJ5Ci08Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiB3aWxsIGJlIGRldGVjdGVkIGFuZAotaWdub3JlZCwgYW5kIGEgd2FybmluZyBpc3N1ZWQuCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBhdHRlbXB0cyB0byBndWVzcyB0aGUKLWZpbGVuYW1lIGZvciB0aGUgZGVjb21wcmVzc2VkIGZpbGUgZnJvbSB0aGF0IG9mIHRoZSBjb21wcmVzc2VkCi1maWxlIGFzIGZvbGxvd3M6PC9wYXJhPgotCi08aXRlbWl6ZWRsaXN0IG1hcms9J2J1bGxldCc+Ci0KLSA8bGlzdGl0ZW0+PHBhcmE+PGNvbXB1dGVyb3V0cHV0PmZpbGVuYW1lLmJ6MiA8L2NvbXB1dGVyb3V0cHV0PgotICBiZWNvbWVzCi0gIDxjb21wdXRlcm91dHB1dD5maWxlbmFtZTwvY29tcHV0ZXJvdXRwdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0KLSA8bGlzdGl0ZW0+PHBhcmE+PGNvbXB1dGVyb3V0cHV0PmZpbGVuYW1lLmJ6IDwvY29tcHV0ZXJvdXRwdXQ+Ci0gIGJlY29tZXMKLSAgPGNvbXB1dGVyb3V0cHV0PmZpbGVuYW1lPC9jb21wdXRlcm91dHB1dD48L3BhcmE+PC9saXN0aXRlbT4KLQotIDxsaXN0aXRlbT48cGFyYT48Y29tcHV0ZXJvdXRwdXQ+ZmlsZW5hbWUudGJ6MjwvY29tcHV0ZXJvdXRwdXQ+Ci0gIGJlY29tZXMKLSAgPGNvbXB1dGVyb3V0cHV0PmZpbGVuYW1lLnRhcjwvY29tcHV0ZXJvdXRwdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0KLSA8bGlzdGl0ZW0+PHBhcmE+PGNvbXB1dGVyb3V0cHV0PmZpbGVuYW1lLnRieiA8L2NvbXB1dGVyb3V0cHV0PgotICBiZWNvbWVzCi0gIDxjb21wdXRlcm91dHB1dD5maWxlbmFtZS50YXI8L2NvbXB1dGVyb3V0cHV0PjwvcGFyYT48L2xpc3RpdGVtPgotCi0gPGxpc3RpdGVtPjxwYXJhPjxjb21wdXRlcm91dHB1dD5hbnlvdGhlcm5hbWUgPC9jb21wdXRlcm91dHB1dD4KLSAgYmVjb21lcwotICA8Y29tcHV0ZXJvdXRwdXQ+YW55b3RoZXJuYW1lLm91dDwvY29tcHV0ZXJvdXRwdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0KLTwvaXRlbWl6ZWRsaXN0PgotCi08cGFyYT5JZiB0aGUgZmlsZSBkb2VzIG5vdCBlbmQgaW4gb25lIG9mIHRoZSByZWNvZ25pc2VkIGVuZGluZ3MsCi08Y29tcHV0ZXJvdXRwdXQ+LmJ6MjwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0Pi5iejwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0Pi50YnoyPC9jb21wdXRlcm91dHB1dD4gb3IKLTxjb21wdXRlcm91dHB1dD4udGJ6PC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBjb21wbGFpbnMgdGhhdCBpdCBjYW5ub3QKLWd1ZXNzIHRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBmaWxlLCBhbmQgdXNlcyB0aGUgb3JpZ2luYWwgbmFtZQotd2l0aCA8Y29tcHV0ZXJvdXRwdXQ+Lm91dDwvY29tcHV0ZXJvdXRwdXQ+IGFwcGVuZGVkLjwvcGFyYT4KLQotPHBhcmE+QXMgd2l0aCBjb21wcmVzc2lvbiwgc3VwcGx5aW5nIG5vIGZpbGVuYW1lcyBjYXVzZXMKLWRlY29tcHJlc3Npb24gZnJvbSBzdGFuZGFyZCBpbnB1dCB0byBzdGFuZGFyZCBvdXRwdXQuPC9wYXJhPgotCi08cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnVuemlwMjwvY29tcHV0ZXJvdXRwdXQ+IHdpbGwgY29ycmVjdGx5Ci1kZWNvbXByZXNzIGEgZmlsZSB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0d28gb3IgbW9yZQotY29tcHJlc3NlZCBmaWxlcy4gIFRoZSByZXN1bHQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlCi1jb3JyZXNwb25kaW5nIHVuY29tcHJlc3NlZCBmaWxlcy4gIEludGVncml0eSB0ZXN0aW5nCi0oPGNvbXB1dGVyb3V0cHV0Pi10PC9jb21wdXRlcm91dHB1dD4pIG9mIGNvbmNhdGVuYXRlZCBjb21wcmVzc2VkCi1maWxlcyBpcyBhbHNvIHN1cHBvcnRlZC48L3BhcmE+Ci0KLTxwYXJhPllvdSBjYW4gYWxzbyBjb21wcmVzcyBvciBkZWNvbXByZXNzIGZpbGVzIHRvIHRoZSBzdGFuZGFyZAotb3V0cHV0IGJ5IGdpdmluZyB0aGUgPGNvbXB1dGVyb3V0cHV0Pi1jPC9jb21wdXRlcm91dHB1dD4gZmxhZy4KLU11bHRpcGxlIGZpbGVzIG1heSBiZSBjb21wcmVzc2VkIGFuZCBkZWNvbXByZXNzZWQgbGlrZSB0aGlzLiAgVGhlCi1yZXN1bHRpbmcgb3V0cHV0cyBhcmUgZmVkIHNlcXVlbnRpYWxseSB0byBzdGRvdXQuICBDb21wcmVzc2lvbiBvZgotbXVsdGlwbGUgZmlsZXMgaW4gdGhpcyBtYW5uZXIgZ2VuZXJhdGVzIGEgc3RyZWFtIGNvbnRhaW5pbmcKLW11bHRpcGxlIGNvbXByZXNzZWQgZmlsZSByZXByZXNlbnRhdGlvbnMuICBTdWNoIGEgc3RyZWFtIGNhbiBiZQotZGVjb21wcmVzc2VkIGNvcnJlY3RseSBvbmx5IGJ5Ci08Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiB2ZXJzaW9uIDAuOS4wIG9yIGxhdGVyLgotRWFybGllciB2ZXJzaW9ucyBvZiA8Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiB3aWxsCi1zdG9wIGFmdGVyIGRlY29tcHJlc3NpbmcgdGhlIGZpcnN0IGZpbGUgaW4gdGhlIHN0cmVhbS48L3BhcmE+Ci0KLTxwYXJhPjxjb21wdXRlcm91dHB1dD5iemNhdDwvY29tcHV0ZXJvdXRwdXQ+IChvcgotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyIC1kYzwvY29tcHV0ZXJvdXRwdXQ+KSBkZWNvbXByZXNzZXMgYWxsCi1zcGVjaWZpZWQgZmlsZXMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC48L3BhcmE+Ci0KLTxwYXJhPjxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+IHdpbGwgcmVhZCBhcmd1bWVudHMKLWZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcwotPGNvbXB1dGVyb3V0cHV0PkJaSVAyPC9jb21wdXRlcm91dHB1dD4gYW5kCi08Y29tcHV0ZXJvdXRwdXQ+QlpJUDwvY29tcHV0ZXJvdXRwdXQ+LCBpbiB0aGF0IG9yZGVyLCBhbmQgd2lsbAotcHJvY2VzcyB0aGVtIGJlZm9yZSBhbnkgYXJndW1lbnRzIHJlYWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgotVGhpcyBnaXZlcyBhIGNvbnZlbmllbnQgd2F5IHRvIHN1cHBseSBkZWZhdWx0IGFyZ3VtZW50cy48L3BhcmE+Ci0KLTxwYXJhPkNvbXByZXNzaW9uIGlzIGFsd2F5cyBwZXJmb3JtZWQsIGV2ZW4gaWYgdGhlIGNvbXByZXNzZWQKLWZpbGUgaXMgc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gdGhlIG9yaWdpbmFsLiAgRmlsZXMgb2YgbGVzcyB0aGFuCi1hYm91dCBvbmUgaHVuZHJlZCBieXRlcyB0ZW5kIHRvIGdldCBsYXJnZXIsIHNpbmNlIHRoZSBjb21wcmVzc2lvbgotbWVjaGFuaXNtIGhhcyBhIGNvbnN0YW50IG92ZXJoZWFkIGluIHRoZSByZWdpb24gb2YgNTAgYnl0ZXMuCi1SYW5kb20gZGF0YSAoaW5jbHVkaW5nIHRoZSBvdXRwdXQgb2YgbW9zdCBmaWxlIGNvbXByZXNzb3JzKSBpcwotY29kZWQgYXQgYWJvdXQgOC4wNSBiaXRzIHBlciBieXRlLCBnaXZpbmcgYW4gZXhwYW5zaW9uIG9mIGFyb3VuZAotMC41JS48L3BhcmE+Ci0KLTxwYXJhPkFzIGEgc2VsZi1jaGVjayBmb3IgeW91ciBwcm90ZWN0aW9uLAotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gdXNlcyAzMi1iaXQgQ1JDcyB0byBtYWtlCi1zdXJlIHRoYXQgdGhlIGRlY29tcHJlc3NlZCB2ZXJzaW9uIG9mIGEgZmlsZSBpcyBpZGVudGljYWwgdG8gdGhlCi1vcmlnaW5hbC4gIFRoaXMgZ3VhcmRzIGFnYWluc3QgY29ycnVwdGlvbiBvZiB0aGUgY29tcHJlc3NlZCBkYXRhLAotYW5kIGFnYWluc3QgdW5kZXRlY3RlZCBidWdzIGluCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiAoaG9wZWZ1bGx5IHZlcnkgdW5saWtlbHkpLgotVGhlIGNoYW5jZXMgb2YgZGF0YSBjb3JydXB0aW9uIGdvaW5nIHVuZGV0ZWN0ZWQgaXMgbWljcm9zY29waWMsCi1hYm91dCBvbmUgY2hhbmNlIGluIGZvdXIgYmlsbGlvbiBmb3IgZWFjaCBmaWxlIHByb2Nlc3NlZC4gIEJlCi1hd2FyZSwgdGhvdWdoLCB0aGF0IHRoZSBjaGVjayBvY2N1cnMgdXBvbiBkZWNvbXByZXNzaW9uLCBzbyBpdAotY2FuIG9ubHkgdGVsbCB5b3UgdGhhdCBzb21ldGhpbmcgaXMgd3JvbmcuICBJdCBjYW4ndCBoZWxwIHlvdQotcmVjb3ZlciB0aGUgb3JpZ2luYWwgdW5jb21wcmVzc2VkIGRhdGEuICBZb3UgY2FuIHVzZQotPGNvbXB1dGVyb3V0cHV0PmJ6aXAycmVjb3ZlcjwvY29tcHV0ZXJvdXRwdXQ+IHRvIHRyeSB0byByZWNvdmVyCi1kYXRhIGZyb20gZGFtYWdlZCBmaWxlcy48L3BhcmE+Ci0KLTxwYXJhPlJldHVybiB2YWx1ZXM6IDAgZm9yIGEgbm9ybWFsIGV4aXQsIDEgZm9yIGVudmlyb25tZW50YWwKLXByb2JsZW1zIChmaWxlIG5vdCBmb3VuZCwgaW52YWxpZCBmbGFncywgSS9PIGVycm9ycywgZXRjLiksIDIKLXRvIGluZGljYXRlIGEgY29ycnVwdCBjb21wcmVzc2VkIGZpbGUsIDMgZm9yIGFuIGludGVybmFsCi1jb25zaXN0ZW5jeSBlcnJvciAoZWcsIGJ1Zykgd2hpY2ggY2F1c2VkCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiB0byBwYW5pYy48L3BhcmE+Ci0KLTwvc2VjdDE+Ci0KLQotPHNlY3QxIGlkPSJvcHRpb25zIiB4cmVmbGFiZWw9Ik9QVElPTlMiPgotPHRpdGxlPk9QVElPTlM8L3RpdGxlPgotCi08dmFyaWFibGVsaXN0PgotCi0gPHZhcmxpc3RlbnRyeT4KLSA8dGVybT48Y29tcHV0ZXJvdXRwdXQ+LWMgLS1zdGRvdXQ8L2NvbXB1dGVyb3V0cHV0PjwvdGVybT4KLSA8bGlzdGl0ZW0+PHBhcmE+Q29tcHJlc3Mgb3IgZGVjb21wcmVzcyB0byBzdGFuZGFyZAotICBvdXRwdXQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gPC92YXJsaXN0ZW50cnk+Ci0KLSA8dmFybGlzdGVudHJ5PgotIDx0ZXJtPjxjb21wdXRlcm91dHB1dD4tZCAtLWRlY29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PjwvdGVybT4KLSA8bGlzdGl0ZW0+PHBhcmE+Rm9yY2UgZGVjb21wcmVzc2lvbi4KLSAgPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4sCi0gIDxjb21wdXRlcm91dHB1dD5idW56aXAyPC9jb21wdXRlcm91dHB1dD4gYW5kCi0gIDxjb21wdXRlcm91dHB1dD5iemNhdDwvY29tcHV0ZXJvdXRwdXQ+IGFyZSByZWFsbHkgdGhlIHNhbWUKLSAgcHJvZ3JhbSwgYW5kIHRoZSBkZWNpc2lvbiBhYm91dCB3aGF0IGFjdGlvbnMgdG8gdGFrZSBpcyBkb25lIG9uCi0gIHRoZSBiYXNpcyBvZiB3aGljaCBuYW1lIGlzIHVzZWQuICBUaGlzIGZsYWcgb3ZlcnJpZGVzIHRoYXQKLSAgbWVjaGFuaXNtLCBhbmQgZm9yY2VzIGJ6aXAyIHRvIGRlY29tcHJlc3MuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gPC92YXJsaXN0ZW50cnk+Ci0KLSA8dmFybGlzdGVudHJ5PgotIDx0ZXJtPjxjb21wdXRlcm91dHB1dD4teiAtLWNvbXByZXNzPC9jb21wdXRlcm91dHB1dD48L3Rlcm0+Ci0gPGxpc3RpdGVtPjxwYXJhPlRoZSBjb21wbGVtZW50IHRvCi0gIDxjb21wdXRlcm91dHB1dD4tZDwvY29tcHV0ZXJvdXRwdXQ+OiBmb3JjZXMgY29tcHJlc3Npb24sCi0gIHJlZ2FyZGxlc3Mgb2YgdGhlIGludm9rYXRpb24gbmFtZS48L3BhcmE+PC9saXN0aXRlbT4KLSA8L3Zhcmxpc3RlbnRyeT4KLQotIDx2YXJsaXN0ZW50cnk+Ci0gPHRlcm0+PGNvbXB1dGVyb3V0cHV0Pi10IC0tdGVzdDwvY29tcHV0ZXJvdXRwdXQ+PC90ZXJtPgotIDxsaXN0aXRlbT48cGFyYT5DaGVjayBpbnRlZ3JpdHkgb2YgdGhlIHNwZWNpZmllZCBmaWxlKHMpLCBidXQKLSAgZG9uJ3QgZGVjb21wcmVzcyB0aGVtLiAgVGhpcyByZWFsbHkgcGVyZm9ybXMgYSB0cmlhbAotICBkZWNvbXByZXNzaW9uIGFuZCB0aHJvd3MgYXdheSB0aGUgcmVzdWx0LjwvcGFyYT48L2xpc3RpdGVtPgotIDwvdmFybGlzdGVudHJ5PgotCi0gPHZhcmxpc3RlbnRyeT4KLSA8dGVybT48Y29tcHV0ZXJvdXRwdXQ+LWYgLS1mb3JjZTwvY29tcHV0ZXJvdXRwdXQ+PC90ZXJtPgotIDxsaXN0aXRlbT48cGFyYT5Gb3JjZSBvdmVyd3JpdGUgb2Ygb3V0cHV0IGZpbGVzLiAgTm9ybWFsbHksCi0gIDxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+IHdpbGwgbm90IG92ZXJ3cml0ZQotICBleGlzdGluZyBvdXRwdXQgZmlsZXMuICBBbHNvIGZvcmNlcwotICA8Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiB0byBicmVhayBoYXJkIGxpbmtzIHRvCi0gIGZpbGVzLCB3aGljaCBpdCBvdGhlcndpc2Ugd291bGRuJ3QgZG8uPC9wYXJhPgotICA8cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBub3JtYWxseSBkZWNsaW5lcwotICB0byBkZWNvbXByZXNzIGZpbGVzIHdoaWNoIGRvbid0IGhhdmUgdGhlIGNvcnJlY3QgbWFnaWMgaGVhZGVyCi0gIGJ5dGVzLiBJZiBmb3JjZWQgKDxjb21wdXRlcm91dHB1dD4tZjwvY29tcHV0ZXJvdXRwdXQ+KSwKLSAgaG93ZXZlciwgaXQgd2lsbCBwYXNzIHN1Y2ggZmlsZXMgdGhyb3VnaCB1bm1vZGlmaWVkLiBUaGlzIGlzCi0gIGhvdyBHTlUgPGNvbXB1dGVyb3V0cHV0Pmd6aXA8L2NvbXB1dGVyb3V0cHV0PiBiZWhhdmVzLjwvcGFyYT4KLSA8L2xpc3RpdGVtPgotIDwvdmFybGlzdGVudHJ5PgotCi0gPHZhcmxpc3RlbnRyeT4KLSA8dGVybT48Y29tcHV0ZXJvdXRwdXQ+LWsgLS1rZWVwPC9jb21wdXRlcm91dHB1dD48L3Rlcm0+Ci0gPGxpc3RpdGVtPjxwYXJhPktlZXAgKGRvbid0IGRlbGV0ZSkgaW5wdXQgZmlsZXMgZHVyaW5nCi0gIGNvbXByZXNzaW9uIG9yIGRlY29tcHJlc3Npb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gPC92YXJsaXN0ZW50cnk+Ci0KLSA8dmFybGlzdGVudHJ5PgotIDx0ZXJtPjxjb21wdXRlcm91dHB1dD4tcyAtLXNtYWxsPC9jb21wdXRlcm91dHB1dD48L3Rlcm0+Ci0gPGxpc3RpdGVtPjxwYXJhPlJlZHVjZSBtZW1vcnkgdXNhZ2UsIGZvciBjb21wcmVzc2lvbiwKLSAgZGVjb21wcmVzc2lvbiBhbmQgdGVzdGluZy4gIEZpbGVzIGFyZSBkZWNvbXByZXNzZWQgYW5kIHRlc3RlZAotICB1c2luZyBhIG1vZGlmaWVkIGFsZ29yaXRobSB3aGljaCBvbmx5IHJlcXVpcmVzIDIuNSBieXRlcyBwZXIKLSAgYmxvY2sgYnl0ZS4gIFRoaXMgbWVhbnMgYW55IGZpbGUgY2FuIGJlIGRlY29tcHJlc3NlZCBpbiAyMzAwawotICBvZiBtZW1vcnksIGFsYmVpdCBhdCBhYm91dCBoYWxmIHRoZSBub3JtYWwgc3BlZWQuPC9wYXJhPgotICA8cGFyYT5EdXJpbmcgY29tcHJlc3Npb24sIDxjb21wdXRlcm91dHB1dD4tczwvY29tcHV0ZXJvdXRwdXQ+Ci0gIHNlbGVjdHMgYSBibG9jayBzaXplIG9mIDIwMGssIHdoaWNoIGxpbWl0cyBtZW1vcnkgdXNlIHRvIGFyb3VuZAotICB0aGUgc2FtZSBmaWd1cmUsIGF0IHRoZSBleHBlbnNlIG9mIHlvdXIgY29tcHJlc3Npb24gcmF0aW8uICBJbgotICBzaG9ydCwgaWYgeW91ciBtYWNoaW5lIGlzIGxvdyBvbiBtZW1vcnkgKDggbWVnYWJ5dGVzIG9yIGxlc3MpLAotICB1c2UgPGNvbXB1dGVyb3V0cHV0Pi1zPC9jb21wdXRlcm91dHB1dD4gZm9yIGV2ZXJ5dGhpbmcuICBTZWUKLSAgPHhyZWYgbGlua2VuZD0ibWVtb3J5LW1hbmFnZW1lbnQiLz4gYmVsb3cuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gPC92YXJsaXN0ZW50cnk+Ci0KLSA8dmFybGlzdGVudHJ5PgotIDx0ZXJtPjxjb21wdXRlcm91dHB1dD4tcSAtLXF1aWV0PC9jb21wdXRlcm91dHB1dD48L3Rlcm0+Ci0gPGxpc3RpdGVtPjxwYXJhPlN1cHByZXNzIG5vbi1lc3NlbnRpYWwgd2FybmluZyBtZXNzYWdlcy4KLSAgTWVzc2FnZXMgcGVydGFpbmluZyB0byBJL08gZXJyb3JzIGFuZCBvdGhlciBjcml0aWNhbCBldmVudHMKLSAgd2lsbCBub3QgYmUgc3VwcHJlc3NlZC48L3BhcmE+PC9saXN0aXRlbT4KLSA8L3Zhcmxpc3RlbnRyeT4KLQotIDx2YXJsaXN0ZW50cnk+Ci0gPHRlcm0+PGNvbXB1dGVyb3V0cHV0Pi12IC0tdmVyYm9zZTwvY29tcHV0ZXJvdXRwdXQ+PC90ZXJtPgotIDxsaXN0aXRlbT48cGFyYT5WZXJib3NlIG1vZGUgLS0gc2hvdyB0aGUgY29tcHJlc3Npb24gcmF0aW8gZm9yCi0gIGVhY2ggZmlsZSBwcm9jZXNzZWQuICBGdXJ0aGVyCi0gIDxjb21wdXRlcm91dHB1dD4tdjwvY29tcHV0ZXJvdXRwdXQ+J3MgaW5jcmVhc2UgdGhlIHZlcmJvc2l0eQotICBsZXZlbCwgc3Bld2luZyBvdXQgbG90cyBvZiBpbmZvcm1hdGlvbiB3aGljaCBpcyBwcmltYXJpbHkgb2YKLSAgaW50ZXJlc3QgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gPC92YXJsaXN0ZW50cnk+Ci0KLSA8dmFybGlzdGVudHJ5PgotIDx0ZXJtPjxjb21wdXRlcm91dHB1dD4tTCAtLWxpY2Vuc2UgLVYgLS12ZXJzaW9uPC9jb21wdXRlcm91dHB1dD48L3Rlcm0+Ci0gPGxpc3RpdGVtPjxwYXJhPkRpc3BsYXkgdGhlIHNvZnR3YXJlIHZlcnNpb24sIGxpY2Vuc2UgdGVybXMgYW5kCi0gIGNvbmRpdGlvbnMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gPC92YXJsaXN0ZW50cnk+Ci0KLSA8dmFybGlzdGVudHJ5PgotIDx0ZXJtPjxjb21wdXRlcm91dHB1dD4tMTwvY29tcHV0ZXJvdXRwdXQ+IChvcgotIDxjb21wdXRlcm91dHB1dD4tLWZhc3Q8L2NvbXB1dGVyb3V0cHV0PikgdG8KLSA8Y29tcHV0ZXJvdXRwdXQ+LTk8L2NvbXB1dGVyb3V0cHV0PiAob3IKLSA8Y29tcHV0ZXJvdXRwdXQ+LWJlc3Q8L2NvbXB1dGVyb3V0cHV0Pik8L3Rlcm0+Ci0gPGxpc3RpdGVtPjxwYXJhPlNldCB0aGUgYmxvY2sgc2l6ZSB0byAxMDAgaywgMjAwIGsgLi4uICA5MDAgawotICB3aGVuIGNvbXByZXNzaW5nLiAgSGFzIG5vIGVmZmVjdCB3aGVuIGRlY29tcHJlc3NpbmcuICBTZWUgPHhyZWYKLSAgbGlua2VuZD0ibWVtb3J5LW1hbmFnZW1lbnQiIC8+IGJlbG93LiAgVGhlCi0gIDxjb21wdXRlcm91dHB1dD4tLWZhc3Q8L2NvbXB1dGVyb3V0cHV0PiBhbmQKLSAgPGNvbXB1dGVyb3V0cHV0Pi0tYmVzdDwvY29tcHV0ZXJvdXRwdXQ+IGFsaWFzZXMgYXJlIHByaW1hcmlseQotICBmb3IgR05VIDxjb21wdXRlcm91dHB1dD5nemlwPC9jb21wdXRlcm91dHB1dD4gY29tcGF0aWJpbGl0eS4KLSAgSW4gcGFydGljdWxhciwgPGNvbXB1dGVyb3V0cHV0Pi0tZmFzdDwvY29tcHV0ZXJvdXRwdXQ+IGRvZXNuJ3QKLSAgbWFrZSB0aGluZ3Mgc2lnbmlmaWNhbnRseSBmYXN0ZXIuICBBbmQKLSAgPGNvbXB1dGVyb3V0cHV0Pi0tYmVzdDwvY29tcHV0ZXJvdXRwdXQ+IG1lcmVseSBzZWxlY3RzIHRoZQotICBkZWZhdWx0IGJlaGF2aW91ci48L3BhcmE+PC9saXN0aXRlbT4KLSA8L3Zhcmxpc3RlbnRyeT4KLQotIDx2YXJsaXN0ZW50cnk+Ci0gPHRlcm0+PGNvbXB1dGVyb3V0cHV0Pi0tPC9jb21wdXRlcm91dHB1dD48L3Rlcm0+Ci0gPGxpc3RpdGVtPjxwYXJhPlRyZWF0cyBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgYXMgZmlsZSBuYW1lcywKLSAgZXZlbiBpZiB0aGV5IHN0YXJ0IHdpdGggYSBkYXNoLiAgVGhpcyBpcyBzbyB5b3UgY2FuIGhhbmRsZQotICBmaWxlcyB3aXRoIG5hbWVzIGJlZ2lubmluZyB3aXRoIGEgZGFzaCwgZm9yIGV4YW1wbGU6Ci0gIDxjb21wdXRlcm91dHB1dD5iemlwMiAtLQotICAtbXlmaWxlbmFtZTwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT48L2xpc3RpdGVtPgotIDwvdmFybGlzdGVudHJ5PgotCi0gPHZhcmxpc3RlbnRyeT4KLSA8dGVybT48Y29tcHV0ZXJvdXRwdXQ+LS1yZXBldGl0aXZlLWZhc3Q8L2NvbXB1dGVyb3V0cHV0PjwvdGVybT4KLSA8dGVybT48Y29tcHV0ZXJvdXRwdXQ+LS1yZXBldGl0aXZlLWJlc3Q8L2NvbXB1dGVyb3V0cHV0PjwvdGVybT4KLSA8bGlzdGl0ZW0+PHBhcmE+VGhlc2UgZmxhZ3MgYXJlIHJlZHVuZGFudCBpbiB2ZXJzaW9ucyAwLjkuNSBhbmQKLSAgYWJvdmUuICBUaGV5IHByb3ZpZGVkIHNvbWUgY29hcnNlIGNvbnRyb2wgb3ZlciB0aGUgYmVoYXZpb3VyIG9mCi0gIHRoZSBzb3J0aW5nIGFsZ29yaXRobSBpbiBlYXJsaWVyIHZlcnNpb25zLCB3aGljaCB3YXMgc29tZXRpbWVzCi0gIHVzZWZ1bC4gIDAuOS41IGFuZCBhYm92ZSBoYXZlIGFuIGltcHJvdmVkIGFsZ29yaXRobSB3aGljaAotICByZW5kZXJzIHRoZXNlIGZsYWdzIGlycmVsZXZhbnQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gPC92YXJsaXN0ZW50cnk+Ci0KLTwvdmFyaWFibGVsaXN0PgotCi08L3NlY3QxPgotCi0KLTxzZWN0MSBpZD0ibWVtb3J5LW1hbmFnZW1lbnQiIHhyZWZsYWJlbD0iTUVNT1JZIE1BTkFHRU1FTlQiPgotPHRpdGxlPk1FTU9SWSBNQU5BR0VNRU5UPC90aXRsZT4KLQotPHBhcmE+PGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gY29tcHJlc3NlcyBsYXJnZQotZmlsZXMgaW4gYmxvY2tzLiAgVGhlIGJsb2NrIHNpemUgYWZmZWN0cyBib3RoIHRoZSBjb21wcmVzc2lvbgotcmF0aW8gYWNoaWV2ZWQsIGFuZCB0aGUgYW1vdW50IG9mIG1lbW9yeSBuZWVkZWQgZm9yIGNvbXByZXNzaW9uCi1hbmQgZGVjb21wcmVzc2lvbi4gIFRoZSBmbGFncyA8Y29tcHV0ZXJvdXRwdXQ+LTE8L2NvbXB1dGVyb3V0cHV0PgotdGhyb3VnaCA8Y29tcHV0ZXJvdXRwdXQ+LTk8L2NvbXB1dGVyb3V0cHV0PiBzcGVjaWZ5IHRoZSBibG9jawotc2l6ZSB0byBiZSAxMDAsMDAwIGJ5dGVzIHRocm91Z2ggOTAwLDAwMCBieXRlcyAodGhlIGRlZmF1bHQpCi1yZXNwZWN0aXZlbHkuICBBdCBkZWNvbXByZXNzaW9uIHRpbWUsIHRoZSBibG9jayBzaXplIHVzZWQgZm9yCi1jb21wcmVzc2lvbiBpcyByZWFkIGZyb20gdGhlIGhlYWRlciBvZiB0aGUgY29tcHJlc3NlZCBmaWxlLCBhbmQKLTxjb21wdXRlcm91dHB1dD5idW56aXAyPC9jb21wdXRlcm91dHB1dD4gdGhlbiBhbGxvY2F0ZXMgaXRzZWxmCi1qdXN0IGVub3VnaCBtZW1vcnkgdG8gZGVjb21wcmVzcyB0aGUgZmlsZS4gIFNpbmNlIGJsb2NrIHNpemVzIGFyZQotc3RvcmVkIGluIGNvbXByZXNzZWQgZmlsZXMsIGl0IGZvbGxvd3MgdGhhdCB0aGUgZmxhZ3MKLTxjb21wdXRlcm91dHB1dD4tMTwvY29tcHV0ZXJvdXRwdXQ+IHRvCi08Y29tcHV0ZXJvdXRwdXQ+LTk8L2NvbXB1dGVyb3V0cHV0PiBhcmUgaXJyZWxldmFudCB0byBhbmQgc28KLWlnbm9yZWQgZHVyaW5nIGRlY29tcHJlc3Npb24uPC9wYXJhPgotCi08cGFyYT5Db21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiByZXF1aXJlbWVudHMsIGluIGJ5dGVzLCBjYW4gYmUKLWVzdGltYXRlZCBhczo8L3BhcmE+Ci08cHJvZ3JhbWxpc3Rpbmc+Ci1Db21wcmVzc2lvbjogICA0MDBrICsgKCA4IHggYmxvY2sgc2l6ZSApCi0KLURlY29tcHJlc3Npb246IDEwMGsgKyAoIDQgeCBibG9jayBzaXplICksIG9yCi0gICAgICAgICAgICAgICAxMDBrICsgKCAyLjUgeCBibG9jayBzaXplICkKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPkxhcmdlciBibG9jayBzaXplcyBnaXZlIHJhcGlkbHkgZGltaW5pc2hpbmcgbWFyZ2luYWwKLXJldHVybnMuICBNb3N0IG9mIHRoZSBjb21wcmVzc2lvbiBjb21lcyBmcm9tIHRoZSBmaXJzdCB0d28gb3IKLXRocmVlIGh1bmRyZWQgayBvZiBibG9jayBzaXplLCBhIGZhY3Qgd29ydGggYmVhcmluZyBpbiBtaW5kIHdoZW4KLXVzaW5nIDxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+IG9uIHNtYWxsIG1hY2hpbmVzLgotSXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gYXBwcmVjaWF0ZSB0aGF0IHRoZSBkZWNvbXByZXNzaW9uIG1lbW9yeQotcmVxdWlyZW1lbnQgaXMgc2V0IGF0IGNvbXByZXNzaW9uIHRpbWUgYnkgdGhlIGNob2ljZSBvZiBibG9jawotc2l6ZS48L3BhcmE+Ci0KLTxwYXJhPkZvciBmaWxlcyBjb21wcmVzc2VkIHdpdGggdGhlIGRlZmF1bHQgOTAwayBibG9jayBzaXplLAotPGNvbXB1dGVyb3V0cHV0PmJ1bnppcDI8L2NvbXB1dGVyb3V0cHV0PiB3aWxsIHJlcXVpcmUgYWJvdXQgMzcwMAota2J5dGVzIHRvIGRlY29tcHJlc3MuICBUbyBzdXBwb3J0IGRlY29tcHJlc3Npb24gb2YgYW55IGZpbGUgb24gYQotNCBtZWdhYnl0ZSBtYWNoaW5lLCA8Y29tcHV0ZXJvdXRwdXQ+YnVuemlwMjwvY29tcHV0ZXJvdXRwdXQ+IGhhcwotYW4gb3B0aW9uIHRvIGRlY29tcHJlc3MgdXNpbmcgYXBwcm94aW1hdGVseSBoYWxmIHRoaXMgYW1vdW50IG9mCi1tZW1vcnksIGFib3V0IDIzMDAga2J5dGVzLiAgRGVjb21wcmVzc2lvbiBzcGVlZCBpcyBhbHNvIGhhbHZlZCwKLXNvIHlvdSBzaG91bGQgdXNlIHRoaXMgb3B0aW9uIG9ubHkgd2hlcmUgbmVjZXNzYXJ5LiAgVGhlIHJlbGV2YW50Ci1mbGFnIGlzIDxjb21wdXRlcm91dHB1dD4tczwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+SW4gZ2VuZXJhbCwgdHJ5IGFuZCB1c2UgdGhlIGxhcmdlc3QgYmxvY2sgc2l6ZSBtZW1vcnkKLWNvbnN0cmFpbnRzIGFsbG93LCBzaW5jZSB0aGF0IG1heGltaXNlcyB0aGUgY29tcHJlc3Npb24gYWNoaWV2ZWQuCi1Db21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBzcGVlZCBhcmUgdmlydHVhbGx5IHVuYWZmZWN0ZWQgYnkKLWJsb2NrIHNpemUuPC9wYXJhPgotCi08cGFyYT5Bbm90aGVyIHNpZ25pZmljYW50IHBvaW50IGFwcGxpZXMgdG8gZmlsZXMgd2hpY2ggZml0IGluIGEKLXNpbmdsZSBibG9jayAtLSB0aGF0IG1lYW5zIG1vc3QgZmlsZXMgeW91J2QgZW5jb3VudGVyIHVzaW5nIGEKLWxhcmdlIGJsb2NrIHNpemUuICBUaGUgYW1vdW50IG9mIHJlYWwgbWVtb3J5IHRvdWNoZWQgaXMKLXByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiB0aGUgZmlsZSwgc2luY2UgdGhlIGZpbGUgaXMgc21hbGxlcgotdGhhbiBhIGJsb2NrLiAgRm9yIGV4YW1wbGUsIGNvbXByZXNzaW5nIGEgZmlsZSAyMCwwMDAgYnl0ZXMgbG9uZwotd2l0aCB0aGUgZmxhZyA8Y29tcHV0ZXJvdXRwdXQ+LTk8L2NvbXB1dGVyb3V0cHV0PiB3aWxsIGNhdXNlIHRoZQotY29tcHJlc3NvciB0byBhbGxvY2F0ZSBhcm91bmQgNzYwMGsgb2YgbWVtb3J5LCBidXQgb25seSB0b3VjaAotNDAwayArIDIwMDAwICogOCA9IDU2MCBrYnl0ZXMgb2YgaXQuICBTaW1pbGFybHksIHRoZSBkZWNvbXByZXNzb3IKLXdpbGwgYWxsb2NhdGUgMzcwMGsgYnV0IG9ubHkgdG91Y2ggMTAwayArIDIwMDAwICogNCA9IDE4MAota2J5dGVzLjwvcGFyYT4KLQotPHBhcmE+SGVyZSBpcyBhIHRhYmxlIHdoaWNoIHN1bW1hcmlzZXMgdGhlIG1heGltdW0gbWVtb3J5IHVzYWdlCi1mb3IgZGlmZmVyZW50IGJsb2NrIHNpemVzLiAgQWxzbyByZWNvcmRlZCBpcyB0aGUgdG90YWwgY29tcHJlc3NlZAotc2l6ZSBmb3IgMTQgZmlsZXMgb2YgdGhlIENhbGdhcnkgVGV4dCBDb21wcmVzc2lvbiBDb3JwdXMKLXRvdGFsbGluZyAzLDE0MSw2MjIgYnl0ZXMuICBUaGlzIGNvbHVtbiBnaXZlcyBzb21lIGZlZWwgZm9yIGhvdwotY29tcHJlc3Npb24gdmFyaWVzIHdpdGggYmxvY2sgc2l6ZS4gIFRoZXNlIGZpZ3VyZXMgdGVuZCB0bwotdW5kZXJzdGF0ZSB0aGUgYWR2YW50YWdlIG9mIGxhcmdlciBibG9jayBzaXplcyBmb3IgbGFyZ2VyIGZpbGVzLAotc2luY2UgdGhlIENvcnB1cyBpcyBkb21pbmF0ZWQgYnkgc21hbGxlciBmaWxlcy48L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLSAgICAgICAgQ29tcHJlc3MgICBEZWNvbXByZXNzICAgRGVjb21wcmVzcyAgIENvcnB1cwotRmxhZyAgICAgdXNhZ2UgICAgICB1c2FnZSAgICAgICAtcyB1c2FnZSAgICAgU2l6ZQotCi0gLTEgICAgICAxMjAwayAgICAgICA1MDBrICAgICAgICAgMzUwayAgICAgIDkxNDcwNAotIC0yICAgICAgMjAwMGsgICAgICAgOTAwayAgICAgICAgIDYwMGsgICAgICA4Nzc3MDMKLSAtMyAgICAgIDI4MDBrICAgICAgMTMwMGsgICAgICAgICA4NTBrICAgICAgODYwMzM4Ci0gLTQgICAgICAzNjAwayAgICAgIDE3MDBrICAgICAgICAxMTAwayAgICAgIDg0Njg5OQotIC01ICAgICAgNDQwMGsgICAgICAyMTAwayAgICAgICAgMTM1MGsgICAgICA4NDUxNjAKLSAtNiAgICAgIDUyMDBrICAgICAgMjUwMGsgICAgICAgIDE2MDBrICAgICAgODM4NjI2Ci0gLTcgICAgICA2MTAwayAgICAgIDI5MDBrICAgICAgICAxODUwayAgICAgIDgzNDA5NgotIC04ICAgICAgNjgwMGsgICAgICAzMzAwayAgICAgICAgMjEwMGsgICAgICA4Mjg2NDIKLSAtOSAgICAgIDc2MDBrICAgICAgMzcwMGsgICAgICAgIDIzNTBrICAgICAgODI4NjQyCi08L3Byb2dyYW1saXN0aW5nPgotCi08L3NlY3QxPgotCi0KLTxzZWN0MSBpZD0icmVjb3ZlcmluZyIgeHJlZmxhYmVsPSJSRUNPVkVSSU5HIERBVEEgRlJPTSBEQU1BR0VEIEZJTEVTIj4KLTx0aXRsZT5SRUNPVkVSSU5HIERBVEEgRlJPTSBEQU1BR0VEIEZJTEVTPC90aXRsZT4KLQotPHBhcmE+PGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gY29tcHJlc3NlcyBmaWxlcyBpbgotYmxvY2tzLCB1c3VhbGx5IDkwMGtieXRlcyBsb25nLiAgRWFjaCBibG9jayBpcyBoYW5kbGVkCi1pbmRlcGVuZGVudGx5LiAgSWYgYSBtZWRpYSBvciB0cmFuc21pc3Npb24gZXJyb3IgY2F1c2VzIGEKLW11bHRpLWJsb2NrIDxjb21wdXRlcm91dHB1dD4uYnoyPC9jb21wdXRlcm91dHB1dD4gZmlsZSB0byBiZWNvbWUKLWRhbWFnZWQsIGl0IG1heSBiZSBwb3NzaWJsZSB0byByZWNvdmVyIGRhdGEgZnJvbSB0aGUgdW5kYW1hZ2VkCi1ibG9ja3MgaW4gdGhlIGZpbGUuPC9wYXJhPgotCi08cGFyYT5UaGUgY29tcHJlc3NlZCByZXByZXNlbnRhdGlvbiBvZiBlYWNoIGJsb2NrIGlzIGRlbGltaXRlZCBieQotYSA0OC1iaXQgcGF0dGVybiwgd2hpY2ggbWFrZXMgaXQgcG9zc2libGUgdG8gZmluZCB0aGUgYmxvY2sKLWJvdW5kYXJpZXMgd2l0aCByZWFzb25hYmxlIGNlcnRhaW50eS4gIEVhY2ggYmxvY2sgYWxzbyBjYXJyaWVzCi1pdHMgb3duIDMyLWJpdCBDUkMsIHNvIGRhbWFnZWQgYmxvY2tzIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGZyb20KLXVuZGFtYWdlZCBvbmVzLjwvcGFyYT4KLQotPHBhcmE+PGNvbXB1dGVyb3V0cHV0PmJ6aXAycmVjb3ZlcjwvY29tcHV0ZXJvdXRwdXQ+IGlzIGEgc2ltcGxlCi1wcm9ncmFtIHdob3NlIHB1cnBvc2UgaXMgdG8gc2VhcmNoIGZvciBibG9ja3MgaW4KLTxjb21wdXRlcm91dHB1dD4uYnoyPC9jb21wdXRlcm91dHB1dD4gZmlsZXMsIGFuZCB3cml0ZSBlYWNoIGJsb2NrCi1vdXQgaW50byBpdHMgb3duIDxjb21wdXRlcm91dHB1dD4uYnoyPC9jb21wdXRlcm91dHB1dD4gZmlsZS4gIFlvdQotY2FuIHRoZW4gdXNlIDxjb21wdXRlcm91dHB1dD5iemlwMiAtdDwvY29tcHV0ZXJvdXRwdXQ+IHRvIHRlc3QKLXRoZSBpbnRlZ3JpdHkgb2YgdGhlIHJlc3VsdGluZyBmaWxlcywgYW5kIGRlY29tcHJlc3MgdGhvc2Ugd2hpY2gKLWFyZSB1bmRhbWFnZWQuPC9wYXJhPgotCi08cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnppcDJyZWNvdmVyPC9jb21wdXRlcm91dHB1dD4gdGFrZXMgYQotc2luZ2xlIGFyZ3VtZW50LCB0aGUgbmFtZSBvZiB0aGUgZGFtYWdlZCBmaWxlLCBhbmQgd3JpdGVzIGEKLW51bWJlciBvZiBmaWxlcyA8Y29tcHV0ZXJvdXRwdXQ+cmVjMDAwMWZpbGUuYnoyPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+cmVjMDAwMmZpbGUuYnoyPC9jb21wdXRlcm91dHB1dD4sIGV0YywgY29udGFpbmluZwotdGhlIGV4dHJhY3RlZCBibG9ja3MuICBUaGUgb3V0cHV0IGZpbGVuYW1lcyBhcmUgZGVzaWduZWQgc28gdGhhdAotdGhlIHVzZSBvZiB3aWxkY2FyZHMgaW4gc3Vic2VxdWVudCBwcm9jZXNzaW5nIC0tIGZvciBleGFtcGxlLAotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyIC1kYyByZWMqZmlsZS5iejIgJiM2MjsKLXJlY292ZXJlZF9kYXRhPC9jb21wdXRlcm91dHB1dD4gLS0gbGlzdHMgdGhlIGZpbGVzIGluIHRoZSBjb3JyZWN0Ci1vcmRlci48L3BhcmE+Ci0KLTxwYXJhPjxjb21wdXRlcm91dHB1dD5iemlwMnJlY292ZXI8L2NvbXB1dGVyb3V0cHV0PiBzaG91bGQgYmUgb2YKLW1vc3QgdXNlIGRlYWxpbmcgd2l0aCBsYXJnZSA8Y29tcHV0ZXJvdXRwdXQ+LmJ6MjwvY29tcHV0ZXJvdXRwdXQ+Ci1maWxlcywgYXMgdGhlc2Ugd2lsbCBjb250YWluIG1hbnkgYmxvY2tzLiAgSXQgaXMgY2xlYXJseSBmdXRpbGUKLXRvIHVzZSBpdCBvbiBkYW1hZ2VkIHNpbmdsZS1ibG9jayBmaWxlcywgc2luY2UgYSBkYW1hZ2VkIGJsb2NrCi1jYW5ub3QgYmUgcmVjb3ZlcmVkLiAgSWYgeW91IHdpc2ggdG8gbWluaW1pc2UgYW55IHBvdGVudGlhbCBkYXRhCi1sb3NzIHRocm91Z2ggbWVkaWEgb3IgdHJhbnNtaXNzaW9uIGVycm9ycywgeW91IG1pZ2h0IGNvbnNpZGVyCi1jb21wcmVzc2luZyB3aXRoIGEgc21hbGxlciBibG9jayBzaXplLjwvcGFyYT4KLQotPC9zZWN0MT4KLQotCi08c2VjdDEgaWQ9InBlcmZvcm1hbmNlIiB4cmVmbGFiZWw9IlBFUkZPUk1BTkNFIE5PVEVTIj4KLTx0aXRsZT5QRVJGT1JNQU5DRSBOT1RFUzwvdGl0bGU+Ci0KLTxwYXJhPlRoZSBzb3J0aW5nIHBoYXNlIG9mIGNvbXByZXNzaW9uIGdhdGhlcnMgdG9nZXRoZXIgc2ltaWxhcgotc3RyaW5ncyBpbiB0aGUgZmlsZS4gIEJlY2F1c2Ugb2YgdGhpcywgZmlsZXMgY29udGFpbmluZyB2ZXJ5IGxvbmcKLXJ1bnMgb2YgcmVwZWF0ZWQgc3ltYm9scywgbGlrZSAiYWFiYWFiYWFiYWFiIC4uLiIgIChyZXBlYXRlZAotc2V2ZXJhbCBodW5kcmVkIHRpbWVzKSBtYXkgY29tcHJlc3MgbW9yZSBzbG93bHkgdGhhbiBub3JtYWwuCi1WZXJzaW9ucyAwLjkuNSBhbmQgYWJvdmUgZmFyZSBtdWNoIGJldHRlciB0aGFuIHByZXZpb3VzIHZlcnNpb25zCi1pbiB0aGlzIHJlc3BlY3QuICBUaGUgcmF0aW8gYmV0d2VlbiB3b3JzdC1jYXNlIGFuZCBhdmVyYWdlLWNhc2UKLWNvbXByZXNzaW9uIHRpbWUgaXMgaW4gdGhlIHJlZ2lvbiBvZiAxMDoxLiAgRm9yIHByZXZpb3VzCi12ZXJzaW9ucywgdGhpcyBmaWd1cmUgd2FzIG1vcmUgbGlrZSAxMDA6MS4gIFlvdSBjYW4gdXNlIHRoZQotPGNvbXB1dGVyb3V0cHV0Pi12dnZ2PC9jb21wdXRlcm91dHB1dD4gb3B0aW9uIHRvIG1vbml0b3IgcHJvZ3Jlc3MKLWluIGdyZWF0IGRldGFpbCwgaWYgeW91IHdhbnQuPC9wYXJhPgotCi08cGFyYT5EZWNvbXByZXNzaW9uIHNwZWVkIGlzIHVuYWZmZWN0ZWQgYnkgdGhlc2UKLXBoZW5vbWVuYS48L3BhcmE+Ci0KLTxwYXJhPjxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+IHVzdWFsbHkgYWxsb2NhdGVzCi1zZXZlcmFsIG1lZ2FieXRlcyBvZiBtZW1vcnkgdG8gb3BlcmF0ZSBpbiwgYW5kIHRoZW4gY2hhcmdlcyBhbGwKLW92ZXIgaXQgaW4gYSBmYWlybHkgcmFuZG9tIGZhc2hpb24uICBUaGlzIG1lYW5zIHRoYXQgcGVyZm9ybWFuY2UsCi1ib3RoIGZvciBjb21wcmVzc2luZyBhbmQgZGVjb21wcmVzc2luZywgaXMgbGFyZ2VseSBkZXRlcm1pbmVkIGJ5Ci10aGUgc3BlZWQgYXQgd2hpY2ggeW91ciBtYWNoaW5lIGNhbiBzZXJ2aWNlIGNhY2hlIG1pc3Nlcy4KLUJlY2F1c2Ugb2YgdGhpcywgc21hbGwgY2hhbmdlcyB0byB0aGUgY29kZSB0byByZWR1Y2UgdGhlIG1pc3MKLXJhdGUgaGF2ZSBiZWVuIG9ic2VydmVkIHRvIGdpdmUgZGlzcHJvcG9ydGlvbmF0ZWx5IGxhcmdlCi1wZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuICBJIGltYWdpbmUKLTxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+IHdpbGwgcGVyZm9ybSBiZXN0IG9uCi1tYWNoaW5lcyB3aXRoIHZlcnkgbGFyZ2UgY2FjaGVzLjwvcGFyYT4KLQotPC9zZWN0MT4KLQotCi0KLTxzZWN0MSBpZD0iY2F2ZWF0cyIgeHJlZmxhYmVsPSJDQVZFQVRTIj4KLTx0aXRsZT5DQVZFQVRTPC90aXRsZT4KLQotPHBhcmE+SS9PIGVycm9yIG1lc3NhZ2VzIGFyZSBub3QgYXMgaGVscGZ1bCBhcyB0aGV5IGNvdWxkIGJlLgotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gdHJpZXMgaGFyZCB0byBkZXRlY3QgSS9PCi1lcnJvcnMgYW5kIGV4aXQgY2xlYW5seSwgYnV0IHRoZSBkZXRhaWxzIG9mIHdoYXQgdGhlIHByb2JsZW0gaXMKLXNvbWV0aW1lcyBzZWVtIHJhdGhlciBtaXNsZWFkaW5nLjwvcGFyYT4KLQotPHBhcmE+VGhpcyBtYW51YWwgcGFnZSBwZXJ0YWlucyB0byB2ZXJzaW9uICZiei12ZXJzaW9uOyBvZgotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4uICBDb21wcmVzc2VkIGRhdGEgY3JlYXRlZCBieQotdGhpcyB2ZXJzaW9uIGlzIGVudGlyZWx5IGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIHRoZQotcHJldmlvdXMgcHVibGljIHJlbGVhc2VzLCB2ZXJzaW9ucyAwLjFwbDIsIDAuOS4wIGFuZCAwLjkuNSwgMS4wLjAsCi0xLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCBidXQgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjogMC45LjAgYW5kCi1hYm92ZSBjYW4gY29ycmVjdGx5IGRlY29tcHJlc3MgbXVsdGlwbGUgY29uY2F0ZW5hdGVkIGNvbXByZXNzZWQgZmlsZXMuCi0wLjFwbDIgY2Fubm90IGRvIHRoaXM7IGl0IHdpbGwgc3RvcCBhZnRlciBkZWNvbXByZXNzaW5nIGp1c3QgdGhlIGZpcnN0Ci1maWxlIGluIHRoZSBzdHJlYW0uPC9wYXJhPgotCi08cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnppcDJyZWNvdmVyPC9jb21wdXRlcm91dHB1dD4gdmVyc2lvbnMKLXByaW9yIHRvIDEuMC4yIHVzZWQgMzItYml0IGludGVnZXJzIHRvIHJlcHJlc2VudCBiaXQgcG9zaXRpb25zIGluCi1jb21wcmVzc2VkIGZpbGVzLCBzbyBpdCBjb3VsZCBub3QgaGFuZGxlIGNvbXByZXNzZWQgZmlsZXMgbW9yZQotdGhhbiA1MTIgbWVnYWJ5dGVzIGxvbmcuICBWZXJzaW9ucyAxLjAuMiBhbmQgYWJvdmUgdXNlIDY0LWJpdCBpbnRzCi1vbiBzb21lIHBsYXRmb3JtcyB3aGljaCBzdXBwb3J0IHRoZW0gKEdOVSBzdXBwb3J0ZWQgdGFyZ2V0cywgYW5kCi1XaW5kb3dzKS4gVG8gZXN0YWJsaXNoIHdoZXRoZXIgb3Igbm90Ci08Y29tcHV0ZXJvdXRwdXQ+YnppcDJyZWNvdmVyPC9jb21wdXRlcm91dHB1dD4gd2FzIGJ1aWx0IHdpdGggc3VjaAotYSBsaW1pdGF0aW9uLCBydW4gaXQgd2l0aG91dCBhcmd1bWVudHMuIEluIGFueSBldmVudCB5b3UgY2FuCi1idWlsZCB5b3Vyc2VsZiBhbiB1bmxpbWl0ZWQgdmVyc2lvbiBpZiB5b3UgY2FuIHJlY29tcGlsZSBpdCB3aXRoCi08Y29tcHV0ZXJvdXRwdXQ+TWF5YmVVSW50NjQ8L2NvbXB1dGVyb3V0cHV0PiBzZXQgdG8gYmUgYW4KLXVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyLjwvcGFyYT4KLQotPC9zZWN0MT4KLQotCi0KLTxzZWN0MSBpZD0iYXV0aG9yIiB4cmVmbGFiZWw9IkFVVEhPUiI+Ci08dGl0bGU+QVVUSE9SPC90aXRsZT4KLQotPHBhcmE+SnVsaWFuIFNld2FyZCwKLTxjb21wdXRlcm91dHB1dD4mYnotZW1haWw7PC9jb21wdXRlcm91dHB1dD48L3BhcmE+Ci0KLTxwYXJhPlRoZSBpZGVhcyBlbWJvZGllZCBpbgotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gYXJlIGR1ZSB0byAoYXQgbGVhc3QpIHRoZQotZm9sbG93aW5nIHBlb3BsZTogTWljaGFlbCBCdXJyb3dzIGFuZCBEYXZpZCBXaGVlbGVyIChmb3IgdGhlCi1ibG9jayBzb3J0aW5nIHRyYW5zZm9ybWF0aW9uKSwgRGF2aWQgV2hlZWxlciAoYWdhaW4sIGZvciB0aGUKLUh1ZmZtYW4gY29kZXIpLCBQZXRlciBGZW53aWNrIChmb3IgdGhlIHN0cnVjdHVyZWQgY29kaW5nIG1vZGVsIGluCi10aGUgb3JpZ2luYWwgPGNvbXB1dGVyb3V0cHV0PmJ6aXA8L2NvbXB1dGVyb3V0cHV0PiwgYW5kIG1hbnkKLXJlZmluZW1lbnRzKSwgYW5kIEFsaXN0YWlyIE1vZmZhdCwgUmFkZm9yZCBOZWFsIGFuZCBJYW4gV2l0dGVuCi0oZm9yIHRoZSBhcml0aG1ldGljIGNvZGVyIGluIHRoZSBvcmlnaW5hbAotPGNvbXB1dGVyb3V0cHV0PmJ6aXA8L2NvbXB1dGVyb3V0cHV0PikuICBJIGFtIG11Y2ggaW5kZWJ0ZWQgZm9yCi10aGVpciBoZWxwLCBzdXBwb3J0IGFuZCBhZHZpY2UuICBTZWUgdGhlIG1hbnVhbCBpbiB0aGUgc291cmNlCi1kaXN0cmlidXRpb24gZm9yIHBvaW50ZXJzIHRvIHNvdXJjZXMgb2YgZG9jdW1lbnRhdGlvbi4gIENocmlzdGlhbgotdm9uIFJvcXVlcyBlbmNvdXJhZ2VkIG1lIHRvIGxvb2sgZm9yIGZhc3RlciBzb3J0aW5nIGFsZ29yaXRobXMsCi1zbyBhcyB0byBzcGVlZCB1cCBjb21wcmVzc2lvbi4gIEJlbGEgTHVia2luIGVuY291cmFnZWQgbWUgdG8KLWltcHJvdmUgdGhlIHdvcnN0LWNhc2UgY29tcHJlc3Npb24gcGVyZm9ybWFuY2UuICAKLURvbm5hIFJvYmluc29uIFhNTGlzZWQgdGhlIGRvY3VtZW50YXRpb24uCi1NYW55IHBlb3BsZSBzZW50Ci1wYXRjaGVzLCBoZWxwZWQgd2l0aCBwb3J0YWJpbGl0eSBwcm9ibGVtcywgbGVudCBtYWNoaW5lcywgZ2F2ZQotYWR2aWNlIGFuZCB3ZXJlIGdlbmVyYWxseSBoZWxwZnVsLjwvcGFyYT4KLQotPC9zZWN0MT4KLQotPC9jaGFwdGVyPgotCi0KLQotPGNoYXB0ZXIgaWQ9ImxpYnByb2ciIHhyZWZsYWJlbD0iUHJvZ3JhbW1pbmcgd2l0aCBsaWJiemlwMiI+Ci08dGl0bGU+Ci1Qcm9ncmFtbWluZyB3aXRoIDxjb21wdXRlcm91dHB1dD5saWJiemlwMjwvY29tcHV0ZXJvdXRwdXQ+Ci08L3RpdGxlPgotCi08cGFyYT5UaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIHRoZSBwcm9ncmFtbWluZyBpbnRlcmZhY2UgdG8KLTxjb21wdXRlcm91dHB1dD5saWJiemlwMjwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+Rm9yIGdlbmVyYWwgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiwgcGFydGljdWxhcmx5IGFib3V0Ci1tZW1vcnkgdXNlIGFuZCBwZXJmb3JtYW5jZSBhc3BlY3RzLCB5b3UnZCBiZSB3ZWxsIGFkdmlzZWQgdG8gcmVhZAotPHhyZWYgbGlua2VuZD0idXNpbmciLz4gYXMgd2VsbC48L3BhcmE+Ci0KLQotPHNlY3QxIGlkPSJ0b3AtbGV2ZWwiIHhyZWZsYWJlbD0iVG9wLWxldmVsIHN0cnVjdHVyZSI+Ci08dGl0bGU+VG9wLWxldmVsIHN0cnVjdHVyZTwvdGl0bGU+Ci0KLTxwYXJhPjxjb21wdXRlcm91dHB1dD5saWJiemlwMjwvY29tcHV0ZXJvdXRwdXQ+IGlzIGEgZmxleGlibGUKLWxpYnJhcnkgZm9yIGNvbXByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nIGRhdGEgaW4gdGhlCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBkYXRhIGZvcm1hdC4gIEFsdGhvdWdoCi1wYWNrYWdlZCBhcyBhIHNpbmdsZSBlbnRpdHksIGl0IGhlbHBzIHRvIHJlZ2FyZCB0aGUgbGlicmFyeSBhcwotdGhyZWUgc2VwYXJhdGUgcGFydHM6IHRoZSBsb3cgbGV2ZWwgaW50ZXJmYWNlLCBhbmQgdGhlIGhpZ2ggbGV2ZWwKLWludGVyZmFjZSwgYW5kIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMuPC9wYXJhPgotCi08cGFyYT5UaGUgc3RydWN0dXJlIG9mCi08Y29tcHV0ZXJvdXRwdXQ+bGliYnppcDI8L2NvbXB1dGVyb3V0cHV0PidzIGludGVyZmFjZXMgaXMgc2ltaWxhcgotdG8gdGhhdCBvZiBKZWFuLWxvdXAgR2FpbGx5J3MgYW5kIE1hcmsgQWRsZXIncyBleGNlbGxlbnQKLTxjb21wdXRlcm91dHB1dD56bGliPC9jb21wdXRlcm91dHB1dD4gbGlicmFyeS48L3BhcmE+Ci0KLTxwYXJhPkFsbCBleHRlcm5hbGx5IHZpc2libGUgc3ltYm9scyBoYXZlIG5hbWVzIGJlZ2lubmluZwotPGNvbXB1dGVyb3V0cHV0PkJaMl88L2NvbXB1dGVyb3V0cHV0Pi4gIFRoaXMgaXMgbmV3IGluIHZlcnNpb24KLTEuMC4gIFRoZSBpbnRlbnRpb24gaXMgdG8gbWluaW1pc2UgcG9sbHV0aW9uIG9mIHRoZSBuYW1lc3BhY2VzIG9mCi1saWJyYXJ5IGNsaWVudHMuPC9wYXJhPgotCi08cGFyYT5UbyB1c2UgYW55IHBhcnQgb2YgdGhlIGxpYnJhcnksIHlvdSBuZWVkIHRvCi08Y29tcHV0ZXJvdXRwdXQ+I2luY2x1ZGUgJmx0O2J6bGliLmgmZ3Q7PC9jb21wdXRlcm91dHB1dD4KLWludG8geW91ciBzb3VyY2VzLjwvcGFyYT4KLQotCi0KLTxzZWN0MiBpZD0ibGwtc3VtbWFyeSIgeHJlZmxhYmVsPSJMb3ctbGV2ZWwgc3VtbWFyeSI+Ci08dGl0bGU+TG93LWxldmVsIHN1bW1hcnk8L3RpdGxlPgotCi08cGFyYT5UaGlzIGludGVyZmFjZSBwcm92aWRlcyBzZXJ2aWNlcyBmb3IgY29tcHJlc3NpbmcgYW5kCi1kZWNvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5LiAgVGhlcmUncyBubyBwcm92aXNpb24gZm9yIGRlYWxpbmcKLXdpdGggZmlsZXMsIHN0cmVhbXMgb3IgYW55IG90aGVyIEkvTyBtZWNoYW5pc21zLCBqdXN0IHN0cmFpZ2h0Ci1tZW1vcnktdG8tbWVtb3J5IHdvcmsuICBJbiBmYWN0LCB0aGlzIHBhcnQgb2YgdGhlIGxpYnJhcnkgY2FuIGJlCi1jb21waWxlZCB3aXRob3V0IGluY2x1c2lvbiBvZgotPGNvbXB1dGVyb3V0cHV0PnN0ZGlvLmg8L2NvbXB1dGVyb3V0cHV0Piwgd2hpY2ggbWF5IGJlIGhlbHBmdWwKLWZvciBlbWJlZGRlZCBhcHBsaWNhdGlvbnMuPC9wYXJhPgotCi08cGFyYT5UaGUgbG93LWxldmVsIHBhcnQgb2YgdGhlIGxpYnJhcnkgaGFzIG5vIGdsb2JhbCB2YXJpYWJsZXMKLWFuZCBpcyB0aGVyZWZvcmUgdGhyZWFkLXNhZmUuPC9wYXJhPgotCi08cGFyYT5TaXggcm91dGluZXMgbWFrZSB1cCB0aGUgbG93IGxldmVsIGludGVyZmFjZToKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzc0luaXQ8L2NvbXB1dGVyb3V0cHV0PiwKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+LCBhbmQKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzc0VuZDwvY29tcHV0ZXJvdXRwdXQ+IGZvcgotY29tcHJlc3Npb24sIGFuZCBhIGNvcnJlc3BvbmRpbmcgdHJpbwotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekRlY29tcHJlc3NJbml0PC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6RGVjb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekRlY29tcHJlc3NFbmQ8L2NvbXB1dGVyb3V0cHV0PiBmb3IKLWRlY29tcHJlc3Npb24uICBUaGUgPGNvbXB1dGVyb3V0cHV0PipJbml0PC9jb21wdXRlcm91dHB1dD4KLWZ1bmN0aW9ucyBhbGxvY2F0ZSBtZW1vcnkgZm9yIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gYW5kIGRvCi1vdGhlciBpbml0aWFsaXNhdGlvbnMsIHdoaWxzdCB0aGUKLTxjb21wdXRlcm91dHB1dD4qRW5kPC9jb21wdXRlcm91dHB1dD4gZnVuY3Rpb25zIGNsb3NlIGRvd24KLW9wZXJhdGlvbnMgYW5kIHJlbGVhc2UgbWVtb3J5LjwvcGFyYT4KLQotPHBhcmE+VGhlIHJlYWwgd29yayBpcyBkb25lIGJ5Ci08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiBhbmQKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpEZWNvbXByZXNzPC9jb21wdXRlcm91dHB1dD4uICBUaGVzZQotY29tcHJlc3MgYW5kIGRlY29tcHJlc3MgZGF0YSBmcm9tIGEgdXNlci1zdXBwbGllZCBpbnB1dCBidWZmZXIgdG8KLWEgdXNlci1zdXBwbGllZCBvdXRwdXQgYnVmZmVyLiAgVGhlc2UgYnVmZmVycyBjYW4gYmUgYW55IHNpemU7Ci1hcmJpdHJhcnkgcXVhbnRpdGllcyBvZiBkYXRhIGFyZSBoYW5kbGVkIGJ5IG1ha2luZyByZXBlYXRlZCBjYWxscwotdG8gdGhlc2UgZnVuY3Rpb25zLiAgVGhpcyBpcyBhIGZsZXhpYmxlIG1lY2hhbmlzbSBhbGxvd2luZyBhCi1jb25zdW1lci1wdWxsIHN0eWxlIG9mIGFjdGl2aXR5LCBvciBwcm9kdWNlci1wdXNoLCBvciBhIG1peHR1cmUKLW9mIGJvdGguPC9wYXJhPgotCi08L3NlY3QyPgotCi0KLTxzZWN0MiBpZD0iaGwtc3VtbWFyeSIgeHJlZmxhYmVsPSJIaWdoLWxldmVsIHN1bW1hcnkiPgotPHRpdGxlPkhpZ2gtbGV2ZWwgc3VtbWFyeTwvdGl0bGU+Ci0KLTxwYXJhPlRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIHNvbWUgaGFuZHkgd3JhcHBlcnMgYXJvdW5kIHRoZQotbG93LWxldmVsIGludGVyZmFjZSB0byBmYWNpbGl0YXRlIHJlYWRpbmcgYW5kIHdyaXRpbmcKLTxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+IGZvcm1hdCBmaWxlcwotKDxjb21wdXRlcm91dHB1dD4uYnoyPC9jb21wdXRlcm91dHB1dD4gZmlsZXMpLiAgVGhlIHJvdXRpbmVzCi1wcm92aWRlIGhvb2tzIHRvIGZhY2lsaXRhdGUgcmVhZGluZyBmaWxlcyBpbiB3aGljaCB0aGUKLTxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+IGRhdGEgc3RyZWFtIGlzIGVtYmVkZGVkCi13aXRoaW4gc29tZSBsYXJnZXItc2NhbGUgZmlsZSBzdHJ1Y3R1cmUsIG9yIHdoZXJlIHRoZXJlIGFyZQotbXVsdGlwbGUgPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gZGF0YSBzdHJlYW1zCi1jb25jYXRlbmF0ZWQgZW5kLXRvLWVuZC48L3BhcmE+Ci0KLTxwYXJhPkZvciByZWFkaW5nIGZpbGVzLAotPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWRPcGVuPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZDwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWRDbG9zZTwvY29tcHV0ZXJvdXRwdXQ+IGFuZCAKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpSZWFkR2V0VW51c2VkPC9jb21wdXRlcm91dHB1dD4gYXJlCi1zdXBwbGllZC4gIEZvciB3cml0aW5nIGZpbGVzLAotPGNvbXB1dGVyb3V0cHV0PkJaMl9ieldyaXRlT3BlbjwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PkJaMl9ieldyaXRlPC9jb21wdXRlcm91dHB1dD4gYW5kCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6V3JpdGVGaW5pc2g8L2NvbXB1dGVyb3V0cHV0PiBhcmUKLWF2YWlsYWJsZS48L3BhcmE+Ci0KLTxwYXJhPkFzIHdpdGggdGhlIGxvdy1sZXZlbCBsaWJyYXJ5LCBubyBnbG9iYWwgdmFyaWFibGVzIGFyZSB1c2VkCi1zbyB0aGUgbGlicmFyeSBpcyBwZXIgc2UgdGhyZWFkLXNhZmUuICBIb3dldmVyLCBpZiBJL08gZXJyb3JzCi1vY2N1ciB3aGlsc3QgcmVhZGluZyBvciB3cml0aW5nIHRoZSB1bmRlcmx5aW5nIGNvbXByZXNzZWQgZmlsZXMsCi15b3UgbWF5IGhhdmUgdG8gY29uc3VsdCA8Y29tcHV0ZXJvdXRwdXQ+ZXJybm88L2NvbXB1dGVyb3V0cHV0PiB0bwotZGV0ZXJtaW5lIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IuICBJbiB0aGF0IGNhc2UsIHlvdSdkIG5lZWQgYSBDCi1saWJyYXJ5IHdoaWNoIGNvcnJlY3RseSBzdXBwb3J0cwotPGNvbXB1dGVyb3V0cHV0PmVycm5vPC9jb21wdXRlcm91dHB1dD4gaW4gYSBtdWx0aXRocmVhZGVkCi1lbnZpcm9ubWVudC48L3BhcmE+Ci0KLTxwYXJhPlRvIG1ha2UgdGhlIGxpYnJhcnkgYSBsaXR0bGUgc2ltcGxlciBhbmQgbW9yZSBwb3J0YWJsZSwKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpSZWFkT3BlbjwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotPGNvbXB1dGVyb3V0cHV0PkJaMl9ieldyaXRlT3BlbjwvY29tcHV0ZXJvdXRwdXQ+IHJlcXVpcmUgeW91IHRvCi1wYXNzIHRoZW0gZmlsZSBoYW5kbGVzICg8Y29tcHV0ZXJvdXRwdXQ+RklMRSo8L2NvbXB1dGVyb3V0cHV0PnMpCi13aGljaCBoYXZlIHByZXZpb3VzbHkgYmVlbiBvcGVuZWQgZm9yIHJlYWRpbmcgb3Igd3JpdGluZwotcmVzcGVjdGl2ZWx5LiAgVGhhdCBhdm9pZHMgcG9ydGFiaWxpdHkgcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoCi1maWxlIG9wZXJhdGlvbnMgYW5kIGZpbGUgYXR0cmlidXRlcywgd2hpbHN0IG5vdCBiZWluZyBtdWNoIG9mIGFuCi1pbXBvc2l0aW9uIG9uIHRoZSBwcm9ncmFtbWVyLjwvcGFyYT4KLQotPC9zZWN0Mj4KLQotCi08c2VjdDIgaWQ9InV0aWwtZm5zLXN1bW1hcnkiIHhyZWZsYWJlbD0iVXRpbGl0eSBmdW5jdGlvbnMgc3VtbWFyeSI+Ci08dGl0bGU+VXRpbGl0eSBmdW5jdGlvbnMgc3VtbWFyeTwvdGl0bGU+Ci0KLTxwYXJhPkZvciB2ZXJ5IHNpbXBsZSBuZWVkcywKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiBhbmQKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+IGFyZQotcHJvdmlkZWQuICBUaGVzZSBjb21wcmVzcyBkYXRhIGluIG1lbW9yeSBmcm9tIG9uZSBidWZmZXIgdG8KLWFub3RoZXIgYnVmZmVyIGluIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuICBZb3Ugc2hvdWxkIGFzc2Vzcwotd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgZnVsZmlsbCB5b3VyIG1lbW9yeS10by1tZW1vcnkKLWNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gcmVxdWlyZW1lbnRzIGJlZm9yZSBpbnZlc3RpbmcgZWZmb3J0IGluCi11bmRlcnN0YW5kaW5nIHRoZSBtb3JlIGdlbmVyYWwgYnV0IG1vcmUgY29tcGxleCBsb3ctbGV2ZWwKLWludGVyZmFjZS48L3BhcmE+Ci0KLTxwYXJhPllvc2hpb2thIFRzdW5lbwotKDxjb21wdXRlcm91dHB1dD50c3VuZW9AcnIuaWlqNHUub3IuanA8L2NvbXB1dGVyb3V0cHV0PikgaGFzCi1jb250cmlidXRlZCBzb21lIGZ1bmN0aW9ucyB0byBnaXZlIGJldHRlcgotPGNvbXB1dGVyb3V0cHV0PnpsaWI8L2NvbXB1dGVyb3V0cHV0PiBjb21wYXRpYmlsaXR5LiAgVGhlc2UKLWZ1bmN0aW9ucyBhcmUgPGNvbXB1dGVyb3V0cHV0PkJaMl9iem9wZW48L2NvbXB1dGVyb3V0cHV0PiwKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpyZWFkPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6d3JpdGU8L2NvbXB1dGVyb3V0cHV0PiwKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpmbHVzaDwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PkJaMl9iemNsb3NlPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6ZXJyb3I8L2NvbXB1dGVyb3V0cHV0PiBhbmQKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpsaWJWZXJzaW9uPC9jb21wdXRlcm91dHB1dD4uICBZb3UgbWF5IGZpbmQKLXRoZXNlIGZ1bmN0aW9ucyBtb3JlIGNvbnZlbmllbnQgZm9yIHNpbXBsZSBmaWxlIHJlYWRpbmcgYW5kCi13cml0aW5nLCB0aGFuIHRob3NlIGluIHRoZSBoaWdoLWxldmVsIGludGVyZmFjZS4gIFRoZXNlIGZ1bmN0aW9ucwotYXJlIG5vdCAoeWV0KSBvZmZpY2lhbGx5IHBhcnQgb2YgdGhlIGxpYnJhcnksIGFuZCBhcmUgbWluaW1hbGx5Ci1kb2N1bWVudGVkIGhlcmUuICBJZiB0aGV5IGJyZWFrLCB5b3UgZ2V0IHRvIGtlZXAgYWxsIHRoZSBwaWVjZXMuCi1JIGhvcGUgdG8gZG9jdW1lbnQgdGhlbSBwcm9wZXJseSB3aGVuIHRpbWUgcGVybWl0cy48L3BhcmE+Ci0KLTxwYXJhPllvc2hpb2thIGFsc28gY29udHJpYnV0ZWQgbW9kaWZpY2F0aW9ucyB0byBhbGxvdyB0aGUKLWxpYnJhcnkgdG8gYmUgYnVpbHQgYXMgYSBXaW5kb3dzIERMTC48L3BhcmE+Ci0KLTwvc2VjdDI+Ci0KLTwvc2VjdDE+Ci0KLQotPHNlY3QxIGlkPSJlcnItaGFuZGxpbmciIHhyZWZsYWJlbD0iRXJyb3IgaGFuZGxpbmciPgotPHRpdGxlPkVycm9yIGhhbmRsaW5nPC90aXRsZT4KLQotPHBhcmE+VGhlIGxpYnJhcnkgaXMgZGVzaWduZWQgdG8gcmVjb3ZlciBjbGVhbmx5IGluIGFsbAotc2l0dWF0aW9ucywgaW5jbHVkaW5nIHRoZSB3b3JzdC1jYXNlIHNpdHVhdGlvbiBvZiBkZWNvbXByZXNzaW5nCi1yYW5kb20gZGF0YS4gIEknbSBub3QgMTAwJSBzdXJlIHRoYXQgaXQgY2FuIGFsd2F5cyBkbyB0aGlzLCBzbwoteW91IG1pZ2h0IHdhbnQgdG8gYWRkIGEgc2lnbmFsIGhhbmRsZXIgdG8gY2F0Y2ggc2VnbWVudGF0aW9uCi12aW9sYXRpb25zIGR1cmluZyBkZWNvbXByZXNzaW9uIGlmIHlvdSBhcmUgZmVlbGluZyBlc3BlY2lhbGx5Ci1wYXJhbm9pZC4gIEkgd291bGQgYmUgaW50ZXJlc3RlZCBpbiBoZWFyaW5nIG1vcmUgYWJvdXQgdGhlCi1yb2J1c3RuZXNzIG9mIHRoZSBsaWJyYXJ5IHRvIGNvcnJ1cHRlZCBjb21wcmVzc2VkIGRhdGEuPC9wYXJhPgotCi08cGFyYT5WZXJzaW9uIDEuMC4zIG1vcmUgcm9idXN0IGluIHRoaXMgcmVzcGVjdCB0aGFuIGFueQotcHJldmlvdXMgdmVyc2lvbi4gIEludmVzdGlnYXRpb25zIHdpdGggVmFsZ3JpbmQgKGEgdG9vbCBmb3IgZGV0ZWN0aW5nCi1wcm9ibGVtcyB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50KSBpbmRpY2F0ZQotdGhhdCwgYXQgbGVhc3QgZm9yIHRoZSBmZXcgZmlsZXMgSSB0ZXN0ZWQsIGFsbCBzaW5nbGUtYml0IGVycm9ycwotaW4gdGhlIGRlY29tcHJlc3NlZCBkYXRhIGFyZSBjYXVnaHQgcHJvcGVybHksIHdpdGggbm8KLXNlZ21lbnRhdGlvbiBmYXVsdHMsIG5vIHVzZXMgb2YgdW5pbml0aWFsaXNlZCBkYXRhLCBubyBvdXQgb2YKLXJhbmdlIHJlYWRzIG9yIHdyaXRlcywgYW5kIG5vIGluZmluaXRlIGxvb3BpbmcgaW4gdGhlIGRlY29tcHJlc3Nvci4KLVNvIGl0J3MgY2VydGFpbmx5IHByZXR0eSByb2J1c3QsIGFsdGhvdWdoCi1JIHdvdWxkbid0IGNsYWltIGl0IHRvIGJlIHRvdGFsbHkgYm9tYnByb29mLjwvcGFyYT4KLQotPHBhcmE+VGhlIGZpbGUgPGNvbXB1dGVyb3V0cHV0PmJ6bGliLmg8L2NvbXB1dGVyb3V0cHV0PiBjb250YWlucwotYWxsIGRlZmluaXRpb25zIG5lZWRlZCB0byB1c2UgdGhlIGxpYnJhcnkuICBJbiBwYXJ0aWN1bGFyLCB5b3UKLXNob3VsZCBkZWZpbml0ZWx5IG5vdCBpbmNsdWRlCi08Y29tcHV0ZXJvdXRwdXQ+YnpsaWJfcHJpdmF0ZS5oPC9jb21wdXRlcm91dHB1dD4uPC9wYXJhPgotCi08cGFyYT5JbiA8Y29tcHV0ZXJvdXRwdXQ+YnpsaWIuaDwvY29tcHV0ZXJvdXRwdXQ+LCB0aGUgdmFyaW91cwotcmV0dXJuIHZhbHVlcyBhcmUgZGVmaW5lZC4gIFRoZSBmb2xsb3dpbmcgbGlzdCBpcyBub3QgaW50ZW5kZWQgYXMKLWFuIGV4aGF1c3RpdmUgZGVzY3JpcHRpb24gb2YgdGhlIGNpcmN1bXN0YW5jZXMgaW4gd2hpY2ggYSBnaXZlbgotdmFsdWUgbWF5IGJlIHJldHVybmVkIC0tIHRob3NlIGRlc2NyaXB0aW9ucyBhcmUgZ2l2ZW4gbGF0ZXIuCi1SYXRoZXIsIGl0IGlzIGludGVuZGVkIHRvIGNvbnZleSB0aGUgcm91Z2ggbWVhbmluZyBvZiBlYWNoIHJldHVybgotdmFsdWUuICBUaGUgZmlyc3QgZml2ZSBhY3Rpb25zIGFyZSBub3JtYWwgYW5kIG5vdCBpbnRlbmRlZCB0bwotZGVub3RlIGFuIGVycm9yIHNpdHVhdGlvbi48L3BhcmE+Ci0KLTx2YXJpYWJsZWxpc3Q+Ci0KLSA8dmFybGlzdGVudHJ5PgotICA8dGVybT48Y29tcHV0ZXJvdXRwdXQ+QlpfT0s8L2NvbXB1dGVyb3V0cHV0PjwvdGVybT4KLSAgPGxpc3RpdGVtPjxwYXJhPlRoZSByZXF1ZXN0ZWQgYWN0aW9uIHdhcyBjb21wbGV0ZWQKLSAgIHN1Y2Nlc3NmdWxseS48L3BhcmE+PC9saXN0aXRlbT4KLSA8L3Zhcmxpc3RlbnRyeT4KLQotIDx2YXJsaXN0ZW50cnk+Ci0gIDx0ZXJtPjxjb21wdXRlcm91dHB1dD5CWl9SVU5fT0ssIEJaX0ZMVVNIX09LLAotICAgIEJaX0ZJTklTSF9PSzwvY29tcHV0ZXJvdXRwdXQ+PC90ZXJtPgotICA8bGlzdGl0ZW0+PHBhcmE+SW4gCi0gICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiwgdGhlIHJlcXVlc3RlZAotICAgZmx1c2gvZmluaXNoL25vdGhpbmctc3BlY2lhbCBhY3Rpb24gd2FzIGNvbXBsZXRlZAotICAgc3VjY2Vzc2Z1bGx5LjwvcGFyYT48L2xpc3RpdGVtPgotIDwvdmFybGlzdGVudHJ5PgotCi0gPHZhcmxpc3RlbnRyeT4KLSAgPHRlcm0+PGNvbXB1dGVyb3V0cHV0PkJaX1NUUkVBTV9FTkQ8L2NvbXB1dGVyb3V0cHV0PjwvdGVybT4KLSAgPGxpc3RpdGVtPjxwYXJhPkNvbXByZXNzaW9uIG9mIGRhdGEgd2FzIGNvbXBsZXRlZCwgb3IgdGhlCi0gICBsb2dpY2FsIHN0cmVhbSBlbmQgd2FzIGRldGVjdGVkIGR1cmluZwotICAgZGVjb21wcmVzc2lvbi48L3BhcmE+PC9saXN0aXRlbT4KLSA8L3Zhcmxpc3RlbnRyeT4KLQotPC92YXJpYWJsZWxpc3Q+Ci0KLTxwYXJhPlRoZSBmb2xsb3dpbmcgcmV0dXJuIHZhbHVlcyBpbmRpY2F0ZSBhbiBlcnJvciBvZiBzb21lCi1raW5kLjwvcGFyYT4KLQotPHZhcmlhYmxlbGlzdD4KLQotIDx2YXJsaXN0ZW50cnk+Ci0gIDx0ZXJtPjxjb21wdXRlcm91dHB1dD5CWl9DT05GSUdfRVJST1I8L2NvbXB1dGVyb3V0cHV0PjwvdGVybT4KLSAgPGxpc3RpdGVtPjxwYXJhPkluZGljYXRlcyB0aGF0IHRoZSBsaWJyYXJ5IGhhcyBiZWVuIGltcHJvcGVybHkKLSAgIGNvbXBpbGVkIG9uIHlvdXIgcGxhdGZvcm0gLS0gYSBtYWpvciBjb25maWd1cmF0aW9uIGVycm9yLgotICAgU3BlY2lmaWNhbGx5LCBpdCBtZWFucyB0aGF0Ci0gICA8Y29tcHV0ZXJvdXRwdXQ+c2l6ZW9mKGNoYXIpPC9jb21wdXRlcm91dHB1dD4sCi0gICA8Y29tcHV0ZXJvdXRwdXQ+c2l6ZW9mKHNob3J0KTwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotICAgPGNvbXB1dGVyb3V0cHV0PnNpemVvZihpbnQpPC9jb21wdXRlcm91dHB1dD4gYXJlIG5vdCAxLCAyIGFuZAotICAgNCByZXNwZWN0aXZlbHksIGFzIHRoZXkgc2hvdWxkIGJlLiAgTm90ZSB0aGF0IHRoZSBsaWJyYXJ5Ci0gICBzaG91bGQgc3RpbGwgd29yayBwcm9wZXJseSBvbiA2NC1iaXQgcGxhdGZvcm1zIHdoaWNoIGZvbGxvdwotICAgdGhlIExQNjQgcHJvZ3JhbW1pbmcgbW9kZWwgLS0gdGhhdCBpcywgd2hlcmUKLSAgIDxjb21wdXRlcm91dHB1dD5zaXplb2YobG9uZyk8L2NvbXB1dGVyb3V0cHV0PiBhbmQKLSAgIDxjb21wdXRlcm91dHB1dD5zaXplb2Yodm9pZCopPC9jb21wdXRlcm91dHB1dD4gYXJlIDguICBVbmRlcgotICAgTFA2NCwgPGNvbXB1dGVyb3V0cHV0PnNpemVvZihpbnQpPC9jb21wdXRlcm91dHB1dD4gaXMgc3RpbGwgNCwKLSAgIHNvIDxjb21wdXRlcm91dHB1dD5saWJiemlwMjwvY29tcHV0ZXJvdXRwdXQ+LCB3aGljaCBkb2Vzbid0Ci0gICB1c2UgdGhlIDxjb21wdXRlcm91dHB1dD5sb25nPC9jb21wdXRlcm91dHB1dD4gdHlwZSwgaXMKLSAgIE9LLjwvcGFyYT48L2xpc3RpdGVtPgotIDwvdmFybGlzdGVudHJ5PgotCi0gPHZhcmxpc3RlbnRyeT4KLSAgPHRlcm0+PGNvbXB1dGVyb3V0cHV0PkJaX1NFUVVFTkNFX0VSUk9SPC9jb21wdXRlcm91dHB1dD48L3Rlcm0+Ci0gIDxsaXN0aXRlbT48cGFyYT5XaGVuIHVzaW5nIHRoZSBsaWJyYXJ5LCBpdCBpcyBpbXBvcnRhbnQgdG8gY2FsbAotICAgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgY29ycmVjdCBzZXF1ZW5jZSBhbmQgd2l0aCBkYXRhIHN0cnVjdHVyZXMKLSAgIChidWZmZXJzIGV0YykgaW4gdGhlIGNvcnJlY3Qgc3RhdGVzLgotICAgPGNvbXB1dGVyb3V0cHV0PmxpYmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gY2hlY2tzIGFzIG11Y2ggYXMgaXQKLSAgIGNhbiB0byBlbnN1cmUgdGhpcyBpcyBoYXBwZW5pbmcsIGFuZCByZXR1cm5zCi0gICA8Y29tcHV0ZXJvdXRwdXQ+QlpfU0VRVUVOQ0VfRVJST1I8L2NvbXB1dGVyb3V0cHV0PiBpZiBub3QuCi0gICBDb2RlIHdoaWNoIGNvbXBsaWVzIHByZWNpc2VseSB3aXRoIHRoZSBmdW5jdGlvbiBzZW1hbnRpY3MsIGFzCi0gICBkZXRhaWxlZCBiZWxvdywgc2hvdWxkIG5ldmVyIHJlY2VpdmUgdGhpcyB2YWx1ZTsgc3VjaCBhbiBldmVudAotICAgZGVub3RlcyBidWdneSBjb2RlIHdoaWNoIHlvdSBzaG91bGQKLSAgIGludmVzdGlnYXRlLjwvcGFyYT48L2xpc3RpdGVtPgotIDwvdmFybGlzdGVudHJ5PgotCi0gPHZhcmxpc3RlbnRyeT4KLSAgPHRlcm0+PGNvbXB1dGVyb3V0cHV0PkJaX1BBUkFNX0VSUk9SPC9jb21wdXRlcm91dHB1dD48L3Rlcm0+Ci0gIDxsaXN0aXRlbT48cGFyYT5SZXR1cm5lZCB3aGVuIGEgcGFyYW1ldGVyIHRvIGEgZnVuY3Rpb24gY2FsbCBpcwotICAgb3V0IG9mIHJhbmdlIG9yIG90aGVyd2lzZSBtYW5pZmVzdGx5IGluY29ycmVjdC4gIEFzIHdpdGgKLSAgIDxjb21wdXRlcm91dHB1dD5CWl9TRVFVRU5DRV9FUlJPUjwvY29tcHV0ZXJvdXRwdXQ+LCB0aGlzCi0gICBkZW5vdGVzIGEgYnVnIGluIHRoZSBjbGllbnQgY29kZS4gIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuCi0gICA8Y29tcHV0ZXJvdXRwdXQ+QlpfUEFSQU1fRVJST1I8L2NvbXB1dGVyb3V0cHV0PiBhbmQKLSAgIDxjb21wdXRlcm91dHB1dD5CWl9TRVFVRU5DRV9FUlJPUjwvY29tcHV0ZXJvdXRwdXQ+IGlzIGEgYml0Ci0gICBoYXp5LCBidXQgc3RpbGwgd29ydGggbWFraW5nLjwvcGFyYT48L2xpc3RpdGVtPgotIDwvdmFybGlzdGVudHJ5PgotCi0gPHZhcmxpc3RlbnRyeT4KLSAgPHRlcm0+PGNvbXB1dGVyb3V0cHV0PkJaX01FTV9FUlJPUjwvY29tcHV0ZXJvdXRwdXQ+PC90ZXJtPgotICA8bGlzdGl0ZW0+PHBhcmE+UmV0dXJuZWQgd2hlbiBhIHJlcXVlc3QgdG8gYWxsb2NhdGUgbWVtb3J5Ci0gICBmYWlsZWQuICBOb3RlIHRoYXQgdGhlIHF1YW50aXR5IG9mIG1lbW9yeSBuZWVkZWQgdG8gZGVjb21wcmVzcwotICAgYSBzdHJlYW0gY2Fubm90IGJlIGRldGVybWluZWQgdW50aWwgdGhlIHN0cmVhbSdzIGhlYWRlciBoYXMKLSAgIGJlZW4gcmVhZC4gIFNvCi0gICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6RGVjb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotICAgPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWQ8L2NvbXB1dGVyb3V0cHV0PiBtYXkgcmV0dXJuCi0gICA8Y29tcHV0ZXJvdXRwdXQ+QlpfTUVNX0VSUk9SPC9jb21wdXRlcm91dHB1dD4gZXZlbiB0aG91Z2ggc29tZQotICAgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBoYXMgYmVlbiByZWFkLiAgVGhlIHNhbWUgaXMgbm90IHRydWUKLSAgIGZvciBjb21wcmVzc2lvbjsgb25jZQotICAgPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzSW5pdDwvY29tcHV0ZXJvdXRwdXQ+IG9yCi0gICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6V3JpdGVPcGVuPC9jb21wdXRlcm91dHB1dD4gaGF2ZQotICAgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCwKLSAgIDxjb21wdXRlcm91dHB1dD5CWl9NRU1fRVJST1I8L2NvbXB1dGVyb3V0cHV0PiBjYW5ub3QKLSAgIG9jY3VyLjwvcGFyYT48L2xpc3RpdGVtPgotIDwvdmFybGlzdGVudHJ5PgotCi0gPHZhcmxpc3RlbnRyeT4KLSAgPHRlcm0+PGNvbXB1dGVyb3V0cHV0PkJaX0RBVEFfRVJST1I8L2NvbXB1dGVyb3V0cHV0PjwvdGVybT4KLSAgPGxpc3RpdGVtPjxwYXJhPlJldHVybmVkIHdoZW4gYSBkYXRhIGludGVncml0eSBlcnJvciBpcwotICAgZGV0ZWN0ZWQgZHVyaW5nIGRlY29tcHJlc3Npb24uICBNb3N0IGltcG9ydGFudGx5LCB0aGlzIG1lYW5zCi0gICB3aGVuIHN0b3JlZCBhbmQgY29tcHV0ZWQgQ1JDcyBmb3IgdGhlIGRhdGEgZG8gbm90IG1hdGNoLiAgVGhpcwotICAgdmFsdWUgaXMgYWxzbyByZXR1cm5lZCB1cG9uIGRldGVjdGlvbiBvZiBhbnkgb3RoZXIgYW5vbWFseSBpbgotICAgdGhlIGNvbXByZXNzZWQgZGF0YS48L3BhcmE+PC9saXN0aXRlbT4KLSA8L3Zhcmxpc3RlbnRyeT4KLQotIDx2YXJsaXN0ZW50cnk+Ci0gIDx0ZXJtPjxjb21wdXRlcm91dHB1dD5CWl9EQVRBX0VSUk9SX01BR0lDPC9jb21wdXRlcm91dHB1dD48L3Rlcm0+Ci0gIDxsaXN0aXRlbT48cGFyYT5BcyBhIHNwZWNpYWwgY2FzZSBvZgotICAgPGNvbXB1dGVyb3V0cHV0PkJaX0RBVEFfRVJST1I8L2NvbXB1dGVyb3V0cHV0PiwgaXQgaXMKLSAgIHNvbWV0aW1lcyB1c2VmdWwgdG8ga25vdyB3aGVuIHRoZSBjb21wcmVzc2VkIHN0cmVhbSBkb2VzIG5vdAotICAgc3RhcnQgd2l0aCB0aGUgY29ycmVjdCBtYWdpYyBieXRlcyAoPGNvbXB1dGVyb3V0cHV0PidCJyAnWicKLSAgICdoJzwvY29tcHV0ZXJvdXRwdXQ+KS48L3BhcmE+PC9saXN0aXRlbT4KLSA8L3Zhcmxpc3RlbnRyeT4KLQotIDx2YXJsaXN0ZW50cnk+Ci0gIDx0ZXJtPjxjb21wdXRlcm91dHB1dD5CWl9JT19FUlJPUjwvY29tcHV0ZXJvdXRwdXQ+PC90ZXJtPgotICA8bGlzdGl0ZW0+PHBhcmE+UmV0dXJuZWQgYnkKLSAgIDxjb21wdXRlcm91dHB1dD5CWjJfYnpSZWFkPC9jb21wdXRlcm91dHB1dD4gYW5kCi0gICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6V3JpdGU8L2NvbXB1dGVyb3V0cHV0PiB3aGVuIHRoZXJlIGlzIGFuCi0gICBlcnJvciByZWFkaW5nIG9yIHdyaXRpbmcgaW4gdGhlIGNvbXByZXNzZWQgZmlsZSwgYW5kIGJ5Ci0gICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZE9wZW48L2NvbXB1dGVyb3V0cHV0PiBhbmQKLSAgIDxjb21wdXRlcm91dHB1dD5CWjJfYnpXcml0ZU9wZW48L2NvbXB1dGVyb3V0cHV0PiBmb3IgYXR0ZW1wdHMKLSAgIHRvIHVzZSBhIGZpbGUgZm9yIHdoaWNoIHRoZSBlcnJvciBpbmRpY2F0b3IgKHZpeiwKLSAgIDxjb21wdXRlcm91dHB1dD5mZXJyb3IoZik8L2NvbXB1dGVyb3V0cHV0PikgaXMgc2V0LiAgT24KLSAgIHJlY2VpcHQgb2YgPGNvbXB1dGVyb3V0cHV0PkJaX0lPX0VSUk9SPC9jb21wdXRlcm91dHB1dD4sIHRoZQotICAgY2FsbGVyIHNob3VsZCBjb25zdWx0IDxjb21wdXRlcm91dHB1dD5lcnJubzwvY29tcHV0ZXJvdXRwdXQ+Ci0gICBhbmQvb3IgPGNvbXB1dGVyb3V0cHV0PnBlcnJvcjwvY29tcHV0ZXJvdXRwdXQ+IHRvIGFjcXVpcmUKLSAgIG9wZXJhdGluZy1zeXN0ZW0gc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlCi0gICBwcm9ibGVtLjwvcGFyYT48L2xpc3RpdGVtPgotIDwvdmFybGlzdGVudHJ5PgotCi0gPHZhcmxpc3RlbnRyeT4KLSAgPHRlcm0+PGNvbXB1dGVyb3V0cHV0PkJaX1VORVhQRUNURURfRU9GPC9jb21wdXRlcm91dHB1dD48L3Rlcm0+Ci0gIDxsaXN0aXRlbT48cGFyYT5SZXR1cm5lZCBieQotICAgPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWQ8L2NvbXB1dGVyb3V0cHV0PiB3aGVuIHRoZQotICAgY29tcHJlc3NlZCBmaWxlIGZpbmlzaGVzIGJlZm9yZSB0aGUgbG9naWNhbCBlbmQgb2Ygc3RyZWFtIGlzCi0gICBkZXRlY3RlZC48L3BhcmE+PC9saXN0aXRlbT4KLSA8L3Zhcmxpc3RlbnRyeT4KLQotIDx2YXJsaXN0ZW50cnk+Ci0gIDx0ZXJtPjxjb21wdXRlcm91dHB1dD5CWl9PVVRCVUZGX0ZVTEw8L2NvbXB1dGVyb3V0cHV0PjwvdGVybT4KLSAgPGxpc3RpdGVtPjxwYXJhPlJldHVybmVkIGJ5Ci0gICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9jb21wdXRlcm91dHB1dD4gYW5kCi0gICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiB0bwotICAgaW5kaWNhdGUgdGhhdCB0aGUgb3V0cHV0IGRhdGEgd2lsbCBub3QgZml0IGludG8gdGhlIG91dHB1dAotICAgYnVmZmVyIHByb3ZpZGVkLjwvcGFyYT48L2xpc3RpdGVtPgotIDwvdmFybGlzdGVudHJ5PgotCi08L3ZhcmlhYmxlbGlzdD4KLQotPC9zZWN0MT4KLQotCi0KLTxzZWN0MSBpZD0ibG93LWxldmVsIiB4cmVmbGFiZWw9Ij5Mb3ctbGV2ZWwgaW50ZXJmYWNlIj4KLTx0aXRsZT5Mb3ctbGV2ZWwgaW50ZXJmYWNlPC90aXRsZT4KLQotCi08c2VjdDIgaWQ9ImJ6Y29tcHJlc3MtaW5pdCIgeHJlZmxhYmVsPSJCWjJfYnpDb21wcmVzc0luaXQiPgotPHRpdGxlPjxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzc0luaXQ8L2NvbXB1dGVyb3V0cHV0PjwvdGl0bGU+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLXR5cGVkZWYgc3RydWN0IHsKLSAgY2hhciAqbmV4dF9pbjsKLSAgdW5zaWduZWQgaW50IGF2YWlsX2luOwotICB1bnNpZ25lZCBpbnQgdG90YWxfaW5fbG8zMjsKLSAgdW5zaWduZWQgaW50IHRvdGFsX2luX2hpMzI7Ci0KLSAgY2hhciAqbmV4dF9vdXQ7Ci0gIHVuc2lnbmVkIGludCBhdmFpbF9vdXQ7Ci0gIHVuc2lnbmVkIGludCB0b3RhbF9vdXRfbG8zMjsKLSAgdW5zaWduZWQgaW50IHRvdGFsX291dF9oaTMyOwotCi0gIHZvaWQgKnN0YXRlOwotCi0gIHZvaWQgKigqYnphbGxvYykodm9pZCAqLGludCxpbnQpOwotICB2b2lkICgqYnpmcmVlKSh2b2lkICosdm9pZCAqKTsKLSAgdm9pZCAqb3BhcXVlOwotfSBiel9zdHJlYW07Ci0KLWludCBCWjJfYnpDb21wcmVzc0luaXQgKCBiel9zdHJlYW0gKnN0cm0sIAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibG9ja1NpemUxMDBrLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyYm9zaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3b3JrRmFjdG9yICk7Ci08L3Byb2dyYW1saXN0aW5nPgotCi08cGFyYT5QcmVwYXJlcyBmb3IgY29tcHJlc3Npb24uICBUaGUKLTxjb21wdXRlcm91dHB1dD5iel9zdHJlYW08L2NvbXB1dGVyb3V0cHV0PiBzdHJ1Y3R1cmUgaG9sZHMgYWxsCi1kYXRhIHBlcnRhaW5pbmcgdG8gdGhlIGNvbXByZXNzaW9uIGFjdGl2aXR5LiAgQQotPGNvbXB1dGVyb3V0cHV0PmJ6X3N0cmVhbTwvY29tcHV0ZXJvdXRwdXQ+IHN0cnVjdHVyZSBzaG91bGQgYmUKLWFsbG9jYXRlZCBhbmQgaW5pdGlhbGlzZWQgcHJpb3IgdG8gdGhlIGNhbGwuICBUaGUgZmllbGRzIG9mCi08Y29tcHV0ZXJvdXRwdXQ+Ynpfc3RyZWFtPC9jb21wdXRlcm91dHB1dD4gY29tcHJpc2UgdGhlIGVudGlyZXR5Ci1vZiB0aGUgdXNlci12aXNpYmxlIGRhdGEuICA8Y29tcHV0ZXJvdXRwdXQ+c3RhdGU8L2NvbXB1dGVyb3V0cHV0PgotaXMgYSBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRhdGEgc3RydWN0dXJlcyByZXF1aXJlZCBmb3IKLWNvbXByZXNzaW9uLjwvcGFyYT4KLQotPHBhcmE+Q3VzdG9tIG1lbW9yeSBhbGxvY2F0b3JzIGFyZSBzdXBwb3J0ZWQsIHZpYSBmaWVsZHMKLTxjb21wdXRlcm91dHB1dD5iemFsbG9jPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+YnpmcmVlPC9jb21wdXRlcm91dHB1dD4sIGFuZAotPGNvbXB1dGVyb3V0cHV0Pm9wYXF1ZTwvY29tcHV0ZXJvdXRwdXQ+LiAgVGhlIHZhbHVlCi08Y29tcHV0ZXJvdXRwdXQ+b3BhcXVlPC9jb21wdXRlcm91dHB1dD4gaXMgcGFzc2VkIHRvIGFzIHRoZSBmaXJzdAotYXJndW1lbnQgdG8gYWxsIGNhbGxzIHRvIDxjb21wdXRlcm91dHB1dD5iemFsbG9jPC9jb21wdXRlcm91dHB1dD4KLWFuZCA8Y29tcHV0ZXJvdXRwdXQ+YnpmcmVlPC9jb21wdXRlcm91dHB1dD4sIGJ1dCBpcyBvdGhlcndpc2UKLWlnbm9yZWQgYnkgdGhlIGxpYnJhcnkuICBUaGUgY2FsbCA8Y29tcHV0ZXJvdXRwdXQ+YnphbGxvYyAoCi1vcGFxdWUsIG4sIG0gKTwvY29tcHV0ZXJvdXRwdXQ+IGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIHBvaW50ZXIKLTxjb21wdXRlcm91dHB1dD5wPC9jb21wdXRlcm91dHB1dD4gdG8gPGNvbXB1dGVyb3V0cHV0Pm4gKgotbTwvY29tcHV0ZXJvdXRwdXQ+IGJ5dGVzIG9mIG1lbW9yeSwgYW5kIDxjb21wdXRlcm91dHB1dD5iemZyZWUgKAotb3BhcXVlLCBwICk8L2NvbXB1dGVyb3V0cHV0PiBzaG91bGQgZnJlZSB0aGF0IG1lbW9yeS48L3BhcmE+Ci0KLTxwYXJhPklmIHlvdSBkb24ndCB3YW50IHRvIHVzZSBhIGN1c3RvbSBtZW1vcnkgYWxsb2NhdG9yLCBzZXQKLTxjb21wdXRlcm91dHB1dD5iemFsbG9jPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+YnpmcmVlPC9jb21wdXRlcm91dHB1dD4gYW5kCi08Y29tcHV0ZXJvdXRwdXQ+b3BhcXVlPC9jb21wdXRlcm91dHB1dD4gdG8KLTxjb21wdXRlcm91dHB1dD5OVUxMPC9jb21wdXRlcm91dHB1dD4sIGFuZCB0aGUgbGlicmFyeSB3aWxsIHRoZW4KLXVzZSB0aGUgc3RhbmRhcmQgPGNvbXB1dGVyb3V0cHV0Pm1hbGxvYzwvY29tcHV0ZXJvdXRwdXQ+IC8KLTxjb21wdXRlcm91dHB1dD5mcmVlPC9jb21wdXRlcm91dHB1dD4gcm91dGluZXMuPC9wYXJhPgotCi08cGFyYT5CZWZvcmUgY2FsbGluZwotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzSW5pdDwvY29tcHV0ZXJvdXRwdXQ+LCBmaWVsZHMKLTxjb21wdXRlcm91dHB1dD5iemFsbG9jPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+YnpmcmVlPC9jb21wdXRlcm91dHB1dD4gYW5kCi08Y29tcHV0ZXJvdXRwdXQ+b3BhcXVlPC9jb21wdXRlcm91dHB1dD4gc2hvdWxkIGJlIGZpbGxlZAotYXBwcm9wcmlhdGVseSwgYXMganVzdCBkZXNjcmliZWQuICBVcG9uIHJldHVybiwgdGhlIGludGVybmFsCi1zdGF0ZSB3aWxsIGhhdmUgYmVlbiBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpc2VkLCBhbmQKLTxjb21wdXRlcm91dHB1dD50b3RhbF9pbl9sbzMyPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+dG90YWxfaW5faGkzMjwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PnRvdGFsX291dF9sbzMyPC9jb21wdXRlcm91dHB1dD4gYW5kCi08Y29tcHV0ZXJvdXRwdXQ+dG90YWxfb3V0X2hpMzI8L2NvbXB1dGVyb3V0cHV0PiB3aWxsIGhhdmUgYmVlbgotc2V0IHRvIHplcm8uICBUaGVzZSBmb3VyIGZpZWxkcyBhcmUgdXNlZCBieSB0aGUgbGlicmFyeSB0byBpbmZvcm0KLXRoZSBjYWxsZXIgb2YgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhIHBhc3NlZCBpbnRvIGFuZCBvdXQgb2YgdGhlCi1saWJyYXJ5LCByZXNwZWN0aXZlbHkuICBZb3Ugc2hvdWxkIG5vdCB0cnkgdG8gY2hhbmdlIHRoZW0uICBBcyBvZgotdmVyc2lvbiAxLjAsIDY0LWJpdCBjb3VudHMgYXJlIG1haW50YWluZWQsIGV2ZW4gb24gMzItYml0Ci1wbGF0Zm9ybXMsIHVzaW5nIHRoZSA8Y29tcHV0ZXJvdXRwdXQ+X2hpMzI8L2NvbXB1dGVyb3V0cHV0PgotZmllbGRzIHRvIHN0b3JlIHRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZSBjb3VudC4gIFNvLCBmb3IgZXhhbXBsZSwKLXRoZSB0b3RhbCBhbW91bnQgb2YgZGF0YSBpbiBpcyA8Y29tcHV0ZXJvdXRwdXQ+KHRvdGFsX2luX2hpMzIKLSYjNjA7JiM2MDsgMzIpICsgdG90YWxfaW5fbG8zMjwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+UGFyYW1ldGVyIDxjb21wdXRlcm91dHB1dD5ibG9ja1NpemUxMDBrPC9jb21wdXRlcm91dHB1dD4KLXNwZWNpZmllcyB0aGUgYmxvY2sgc2l6ZSB0byBiZSB1c2VkIGZvciBjb21wcmVzc2lvbi4gIEl0IHNob3VsZAotYmUgYSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIDkgaW5jbHVzaXZlLCBhbmQgdGhlIGFjdHVhbCBibG9jayBzaXplCi11c2VkIGlzIDEwMDAwMCB4IHRoaXMgZmlndXJlLiAgOSBnaXZlcyB0aGUgYmVzdCBjb21wcmVzc2lvbiBidXQKLXRha2VzIG1vc3QgbWVtb3J5LjwvcGFyYT4KLQotPHBhcmE+UGFyYW1ldGVyIDxjb21wdXRlcm91dHB1dD52ZXJib3NpdHk8L2NvbXB1dGVyb3V0cHV0PiBzaG91bGQKLWJlIHNldCB0byBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDQgaW5jbHVzaXZlLiAgMCBpcyBzaWxlbnQsIGFuZAotZ3JlYXRlciBudW1iZXJzIGdpdmUgaW5jcmVhc2luZ2x5IHZlcmJvc2UgbW9uaXRvcmluZy9kZWJ1Z2dpbmcKLW91dHB1dC4gIElmIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIGNvbXBpbGVkIHdpdGgKLTxjb21wdXRlcm91dHB1dD4tREJaX05PX1NURElPPC9jb21wdXRlcm91dHB1dD4sIG5vIHN1Y2ggb3V0cHV0Ci13aWxsIGFwcGVhciBmb3IgYW55IHZlcmJvc2l0eSBzZXR0aW5nLjwvcGFyYT4KLQotPHBhcmE+UGFyYW1ldGVyIDxjb21wdXRlcm91dHB1dD53b3JrRmFjdG9yPC9jb21wdXRlcm91dHB1dD4KLWNvbnRyb2xzIGhvdyB0aGUgY29tcHJlc3Npb24gcGhhc2UgYmVoYXZlcyB3aGVuIHByZXNlbnRlZCB3aXRoCi13b3JzdCBjYXNlLCBoaWdobHkgcmVwZXRpdGl2ZSwgaW5wdXQgZGF0YS4gIElmIGNvbXByZXNzaW9uIHJ1bnMKLWludG8gZGlmZmljdWx0aWVzIGNhdXNlZCBieSByZXBldGl0aXZlIGRhdGEsIHRoZSBsaWJyYXJ5IHN3aXRjaGVzCi1mcm9tIHRoZSBzdGFuZGFyZCBzb3J0aW5nIGFsZ29yaXRobSB0byBhIGZhbGxiYWNrIGFsZ29yaXRobS4gIFRoZQotZmFsbGJhY2sgaXMgc2xvd2VyIHRoYW4gdGhlIHN0YW5kYXJkIGFsZ29yaXRobSBieSBwZXJoYXBzIGEKLWZhY3RvciBvZiB0aHJlZSwgYnV0IGFsd2F5cyBiZWhhdmVzIHJlYXNvbmFibHksIG5vIG1hdHRlciBob3cgYmFkCi10aGUgaW5wdXQuPC9wYXJhPgotCi08cGFyYT5Mb3dlciB2YWx1ZXMgb2YgPGNvbXB1dGVyb3V0cHV0PndvcmtGYWN0b3I8L2NvbXB1dGVyb3V0cHV0PgotcmVkdWNlIHRoZSBhbW91bnQgb2YgZWZmb3J0IHRoZSBzdGFuZGFyZCBhbGdvcml0aG0gd2lsbCBleHBlbmQKLWJlZm9yZSByZXNvcnRpbmcgdG8gdGhlIGZhbGxiYWNrLiAgWW91IHNob3VsZCBzZXQgdGhpcyBwYXJhbWV0ZXIKLWNhcmVmdWxseTsgdG9vIGxvdywgYW5kIG1hbnkgaW5wdXRzIHdpbGwgYmUgaGFuZGxlZCBieSB0aGUKLWZhbGxiYWNrIGFsZ29yaXRobSBhbmQgc28gY29tcHJlc3MgcmF0aGVyIHNsb3dseSwgdG9vIGhpZ2gsIGFuZAoteW91ciBhdmVyYWdlLXRvLXdvcnN0IGNhc2UgY29tcHJlc3Npb24gdGltZXMgY2FuIGJlY29tZSB2ZXJ5Ci1sYXJnZS4gIFRoZSBkZWZhdWx0IHZhbHVlIG9mIDMwIGdpdmVzIHJlYXNvbmFibGUgYmVoYXZpb3VyIG92ZXIgYQotd2lkZSByYW5nZSBvZiBjaXJjdW1zdGFuY2VzLjwvcGFyYT4KLQotPHBhcmE+QWxsb3dhYmxlIHZhbHVlcyByYW5nZSBmcm9tIDAgdG8gMjUwIGluY2x1c2l2ZS4gIDAgaXMgYQotc3BlY2lhbCBjYXNlLCBlcXVpdmFsZW50IHRvIHVzaW5nIHRoZSBkZWZhdWx0IHZhbHVlIG9mIDMwLjwvcGFyYT4KLQotPHBhcmE+Tm90ZSB0aGF0IHRoZSBjb21wcmVzc2VkIG91dHB1dCBnZW5lcmF0ZWQgaXMgdGhlIHNhbWUKLXJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhlIGZhbGxiYWNrIGFsZ29yaXRobSBpcwotdXNlZC48L3BhcmE+Ci0KLTxwYXJhPkJlIGF3YXJlIGFsc28gdGhhdCB0aGlzIHBhcmFtZXRlciBtYXkgZGlzYXBwZWFyIGVudGlyZWx5IGluCi1mdXR1cmUgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkuICBJbiBwcmluY2lwbGUgaXQgc2hvdWxkIGJlCi1wb3NzaWJsZSB0byBkZXZpc2UgYSBnb29kIHdheSB0byBhdXRvbWF0aWNhbGx5IGNob29zZSB3aGljaAotYWxnb3JpdGhtIHRvIHVzZS4gIFN1Y2ggYSBtZWNoYW5pc20gd291bGQgcmVuZGVyIHRoZSBwYXJhbWV0ZXIKLW9ic29sZXRlLjwvcGFyYT4KLQotPHBhcmE+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLUJaX0NPTkZJR19FUlJPUgotICBpZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBtaXMtY29tcGlsZWQKLUJaX1BBUkFNX0VSUk9SCi0gIGlmIHN0cm0gaXMgTlVMTCAKLSAgb3IgYmxvY2tTaXplIDwgMSBvciBibG9ja1NpemUgPiA5Ci0gIG9yIHZlcmJvc2l0eSA8IDAgb3IgdmVyYm9zaXR5ID4gNAotICBvciB3b3JrRmFjdG9yIDwgMCBvciB3b3JrRmFjdG9yID4gMjUwCi1CWl9NRU1fRVJST1IgCi0gIGlmIG5vdCBlbm91Z2ggbWVtb3J5IGlzIGF2YWlsYWJsZQotQlpfT0sgCi0gIG90aGVyd2lzZQotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLUJaMl9iekNvbXByZXNzCi0gIGlmIEJaX09LIGlzIHJldHVybmVkCi0gIG5vIHNwZWNpZmljIGFjdGlvbiBuZWVkZWQgaW4gY2FzZSBvZiBlcnJvcgotPC9wcm9ncmFtbGlzdGluZz4KLQotPC9zZWN0Mj4KLQotCi08c2VjdDIgaWQ9ImJ6Q29tcHJlc3MiIHhyZWZsYWJlbD0iQloyX2J6Q29tcHJlc3MiPgotPHRpdGxlPjxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+PC90aXRsZT4KLQotPHByb2dyYW1saXN0aW5nPgotaW50IEJaMl9iekNvbXByZXNzICggYnpfc3RyZWFtICpzdHJtLCBpbnQgYWN0aW9uICk7Ci08L3Byb2dyYW1saXN0aW5nPgotCi08cGFyYT5Qcm92aWRlcyBtb3JlIGlucHV0IGFuZC9vciBvdXRwdXQgYnVmZmVyIHNwYWNlIGZvciB0aGUKLWxpYnJhcnkuICBUaGUgY2FsbGVyIG1haW50YWlucyBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMsIGFuZAotY2FsbHMgPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzPC9jb21wdXRlcm91dHB1dD4gdG8gdHJhbnNmZXIKLWRhdGEgYmV0d2VlbiB0aGVtLjwvcGFyYT4KLQotPHBhcmE+QmVmb3JlIGVhY2ggY2FsbCB0bwotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+bmV4dF9pbjwvY29tcHV0ZXJvdXRwdXQ+IHNob3VsZCBwb2ludCBhdCB0aGUgZGF0YQotdG8gYmUgY29tcHJlc3NlZCwgYW5kIDxjb21wdXRlcm91dHB1dD5hdmFpbF9pbjwvY29tcHV0ZXJvdXRwdXQ+Ci1zaG91bGQgaW5kaWNhdGUgaG93IG1hbnkgYnl0ZXMgdGhlIGxpYnJhcnkgbWF5IHJlYWQuCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiB1cGRhdGVzCi08Y29tcHV0ZXJvdXRwdXQ+bmV4dF9pbjwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PmF2YWlsX2luPC9jb21wdXRlcm91dHB1dD4gYW5kCi08Y29tcHV0ZXJvdXRwdXQ+dG90YWxfaW48L2NvbXB1dGVyb3V0cHV0PiB0byByZWZsZWN0IHRoZSBudW1iZXIKLW9mIGJ5dGVzIGl0IGhhcyByZWFkLjwvcGFyYT4KLQotPHBhcmE+U2ltaWxhcmx5LCA8Y29tcHV0ZXJvdXRwdXQ+bmV4dF9vdXQ8L2NvbXB1dGVyb3V0cHV0PiBzaG91bGQKLXBvaW50IHRvIGEgYnVmZmVyIGluIHdoaWNoIHRoZSBjb21wcmVzc2VkIGRhdGEgaXMgdG8gYmUgcGxhY2VkLAotd2l0aCA8Y29tcHV0ZXJvdXRwdXQ+YXZhaWxfb3V0PC9jb21wdXRlcm91dHB1dD4gaW5kaWNhdGluZyBob3cKLW11Y2ggb3V0cHV0IHNwYWNlIGlzIGF2YWlsYWJsZS4KLTxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+IHVwZGF0ZXMKLTxjb21wdXRlcm91dHB1dD5uZXh0X291dDwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PmF2YWlsX291dDwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotPGNvbXB1dGVyb3V0cHV0PnRvdGFsX291dDwvY29tcHV0ZXJvdXRwdXQ+IHRvIHJlZmxlY3QgdGhlIG51bWJlcgotb2YgYnl0ZXMgb3V0cHV0LjwvcGFyYT4KLQotPHBhcmE+WW91IG1heSBwcm92aWRlIGFuZCByZW1vdmUgYXMgbGl0dGxlIG9yIGFzIG11Y2ggZGF0YSBhcyB5b3UKLWxpa2Ugb24gZWFjaCBjYWxsIG9mCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0Pi4gIEluIHRoZSBsaW1pdCwKLWl0IGlzIGFjY2VwdGFibGUgdG8gc3VwcGx5IGFuZCByZW1vdmUgZGF0YSBvbmUgYnl0ZSBhdCBhIHRpbWUsCi1hbHRob3VnaCB0aGlzIHdvdWxkIGJlIHRlcnJpYmx5IGluZWZmaWNpZW50LiAgWW91IHNob3VsZCBhbHdheXMKLWVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBieXRlIG9mIG91dHB1dCBzcGFjZSBpcyBhdmFpbGFibGUgYXQKLWVhY2ggY2FsbC48L3BhcmE+Ci0KLTxwYXJhPkEgc2Vjb25kIHB1cnBvc2Ugb2YKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+IGlzIHRvIHJlcXVlc3QgYQotY2hhbmdlIG9mIG1vZGUgb2YgdGhlIGNvbXByZXNzZWQgc3RyZWFtLjwvcGFyYT4KLQotPHBhcmE+Q29uY2VwdHVhbGx5LCBhIGNvbXByZXNzZWQgc3RyZWFtIGNhbiBiZSBpbiBvbmUgb2YgZm91cgotc3RhdGVzOiBJRExFLCBSVU5OSU5HLCBGTFVTSElORyBhbmQgRklOSVNISU5HLiAgQmVmb3JlCi1pbml0aWFsaXNhdGlvbgotKDxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzc0luaXQ8L2NvbXB1dGVyb3V0cHV0PikgYW5kIGFmdGVyCi10ZXJtaW5hdGlvbiAoPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzRW5kPC9jb21wdXRlcm91dHB1dD4pLAotYSBzdHJlYW0gaXMgcmVnYXJkZWQgYXMgSURMRS48L3BhcmE+Ci0KLTxwYXJhPlVwb24gaW5pdGlhbGlzYXRpb24KLSg8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3NJbml0PC9jb21wdXRlcm91dHB1dD4pLCB0aGUgc3RyZWFtCi1pcyBwbGFjZWQgaW4gdGhlIFJVTk5JTkcgc3RhdGUuICBTdWJzZXF1ZW50IGNhbGxzIHRvCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiBzaG91bGQgcGFzcwotPGNvbXB1dGVyb3V0cHV0PkJaX1JVTjwvY29tcHV0ZXJvdXRwdXQ+IGFzIHRoZSByZXF1ZXN0ZWQgYWN0aW9uOwotb3RoZXIgYWN0aW9ucyBhcmUgaWxsZWdhbCBhbmQgd2lsbCByZXN1bHQgaW4KLTxjb21wdXRlcm91dHB1dD5CWl9TRVFVRU5DRV9FUlJPUjwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+QXQgc29tZSBwb2ludCwgdGhlIGNhbGxpbmcgcHJvZ3JhbSB3aWxsIGhhdmUgcHJvdmlkZWQgYWxsCi10aGUgaW5wdXQgZGF0YSBpdCB3YW50cyB0by4gIEl0IHdpbGwgdGhlbiB3YW50IHRvIGZpbmlzaCB1cCAtLSBpbgotZWZmZWN0LCBhc2tpbmcgdGhlIGxpYnJhcnkgdG8gcHJvY2VzcyBhbnkgZGF0YSBpdCBtaWdodCBoYXZlCi1idWZmZXJlZCBpbnRlcm5hbGx5LiAgSW4gdGhpcyBzdGF0ZSwKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+IHdpbGwgbm8gbG9uZ2VyCi1hdHRlbXB0IHRvIHJlYWQgZGF0YSBmcm9tCi08Y29tcHV0ZXJvdXRwdXQ+bmV4dF9pbjwvY29tcHV0ZXJvdXRwdXQ+LCBidXQgaXQgd2lsbCB3YW50IHRvCi13cml0ZSBkYXRhIHRvIDxjb21wdXRlcm91dHB1dD5uZXh0X291dDwvY29tcHV0ZXJvdXRwdXQ+LiAgQmVjYXVzZQotdGhlIG91dHB1dCBidWZmZXIgc3VwcGxpZWQgYnkgdGhlIHVzZXIgY2FuIGJlIGFyYml0cmFyaWx5IHNtYWxsLAotdGhlIGZpbmlzaGluZy11cCBvcGVyYXRpb24gY2Fubm90IG5lY2Vzc2FyaWx5IGJlIGRvbmUgd2l0aCBhCi1zaW5nbGUgY2FsbCBvZgotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzPC9jb21wdXRlcm91dHB1dD4uPC9wYXJhPgotCi08cGFyYT5JbnN0ZWFkLCB0aGUgY2FsbGluZyBwcm9ncmFtIHBhc3NlcwotPGNvbXB1dGVyb3V0cHV0PkJaX0ZJTklTSDwvY29tcHV0ZXJvdXRwdXQ+IGFzIGFuIGFjdGlvbiB0bwotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzPC9jb21wdXRlcm91dHB1dD4uICBUaGlzIGNoYW5nZXMKLXRoZSBzdHJlYW0ncyBzdGF0ZSB0byBGSU5JU0hJTkcuICBBbnkgcmVtYWluaW5nIGlucHV0IChpZSwKLTxjb21wdXRlcm91dHB1dD5uZXh0X2luWzAgLi4gYXZhaWxfaW4tMV08L2NvbXB1dGVyb3V0cHV0PikgaXMKLWNvbXByZXNzZWQgYW5kIHRyYW5zZmVycmVkIHRvIHRoZSBvdXRwdXQgYnVmZmVyLiAgVG8gZG8gdGhpcywKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+IG11c3QgYmUgY2FsbGVkCi1yZXBlYXRlZGx5IHVudGlsIGFsbCB0aGUgb3V0cHV0IGhhcyBiZWVuIGNvbnN1bWVkLiAgQXQgdGhhdAotcG9pbnQsIDxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+IHJldHVybnMKLTxjb21wdXRlcm91dHB1dD5CWl9TVFJFQU1fRU5EPC9jb21wdXRlcm91dHB1dD4sIGFuZCB0aGUgc3RyZWFtJ3MKLXN0YXRlIGlzIHNldCBiYWNrIHRvIElETEUuCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3NFbmQ8L2NvbXB1dGVyb3V0cHV0PiBzaG91bGQgdGhlbiBiZQotY2FsbGVkLjwvcGFyYT4KLQotPHBhcmE+SnVzdCB0byBtYWtlIHN1cmUgdGhlIGNhbGxpbmcgcHJvZ3JhbSBkb2VzIG5vdCBjaGVhdCwgdGhlCi1saWJyYXJ5IG1ha2VzIGEgbm90ZSBvZiA8Y29tcHV0ZXJvdXRwdXQ+YXZhaWxfaW48L2NvbXB1dGVyb3V0cHV0PgotYXQgdGhlIHRpbWUgb2YgdGhlIGZpcnN0IGNhbGwgdG8KLTxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+IHdoaWNoIGhhcwotPGNvbXB1dGVyb3V0cHV0PkJaX0ZJTklTSDwvY29tcHV0ZXJvdXRwdXQ+IGFzIGFuIGFjdGlvbiAoaWUsIGF0Ci10aGUgdGltZSB0aGUgcHJvZ3JhbSBoYXMgYW5ub3VuY2VkIGl0cyBpbnRlbnRpb24gdG8gbm90IHN1cHBseQotYW55IG1vcmUgaW5wdXQpLiAgQnkgY29tcGFyaW5nIHRoaXMgdmFsdWUgd2l0aCB0aGF0IG9mCi08Y29tcHV0ZXJvdXRwdXQ+YXZhaWxfaW48L2NvbXB1dGVyb3V0cHV0PiBvdmVyIHN1YnNlcXVlbnQgY2FsbHMKLXRvIDxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+LCB0aGUgbGlicmFyeQotY2FuIGRldGVjdCBhbnkgYXR0ZW1wdHMgdG8gc2xpcCBpbiBtb3JlIGRhdGEgdG8gY29tcHJlc3MuICBBbnkKLWNhbGxzIGZvciB3aGljaCB0aGlzIGlzIGRldGVjdGVkIHdpbGwgcmV0dXJuCi08Y29tcHV0ZXJvdXRwdXQ+QlpfU0VRVUVOQ0VfRVJST1I8L2NvbXB1dGVyb3V0cHV0Pi4gIFRoaXMKLWluZGljYXRlcyBhIHByb2dyYW1taW5nIG1pc3Rha2Ugd2hpY2ggc2hvdWxkIGJlIGNvcnJlY3RlZC48L3BhcmE+Ci0KLTxwYXJhPkluc3RlYWQgb2YgYXNraW5nIHRvIGZpbmlzaCwgdGhlIGNhbGxpbmcgcHJvZ3JhbSBtYXkgYXNrCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiB0byB0YWtlIGFsbCB0aGUKLXJlbWFpbmluZyBpbnB1dCwgY29tcHJlc3MgaXQgYW5kIHRlcm1pbmF0ZSB0aGUgY3VycmVudAotKEJ1cnJvd3MtV2hlZWxlcikgY29tcHJlc3Npb24gYmxvY2suICBUaGlzIGNvdWxkIGJlIHVzZWZ1bCBmb3IKLWVycm9yIGNvbnRyb2wgcHVycG9zZXMuICBUaGUgbWVjaGFuaXNtIGlzIGFuYWxvZ291cyB0byB0aGF0IGZvcgotZmluaXNoaW5nOiBjYWxsIDxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+Ci13aXRoIGFuIGFjdGlvbiBvZiA8Y29tcHV0ZXJvdXRwdXQ+QlpfRkxVU0g8L2NvbXB1dGVyb3V0cHV0PiwKLXJlbW92ZSBvdXRwdXQgZGF0YSwgYW5kIHBlcnNpc3Qgd2l0aCB0aGUKLTxjb21wdXRlcm91dHB1dD5CWl9GTFVTSDwvY29tcHV0ZXJvdXRwdXQ+IGFjdGlvbiB1bnRpbCB0aGUgdmFsdWUKLTxjb21wdXRlcm91dHB1dD5CWl9SVU48L2NvbXB1dGVyb3V0cHV0PiBpcyByZXR1cm5lZC4gIEFzIHdpdGgKLWZpbmlzaGluZywgPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzPC9jb21wdXRlcm91dHB1dD4KLWRldGVjdHMgYW55IGF0dGVtcHQgdG8gcHJvdmlkZSBtb3JlIGlucHV0IGRhdGEgb25jZSB0aGUgZmx1c2ggaGFzCi1iZWd1bi48L3BhcmE+Ci0KLTxwYXJhPk9uY2UgdGhlIGZsdXNoIGlzIGNvbXBsZXRlLCB0aGUgc3RyZWFtIHJldHVybnMgdG8gdGhlCi1ub3JtYWwgUlVOTklORyBzdGF0ZS48L3BhcmE+Ci0KLTxwYXJhPlRoaXMgYWxsIHNvdW5kcyBwcmV0dHkgY29tcGxleCwgYnV0IGlzbid0IHJlYWxseS4gIEhlcmUncyBhCi10YWJsZSB3aGljaCBzaG93cyB3aGljaCBhY3Rpb25zIGFyZSBhbGxvd2FibGUgaW4gZWFjaCBzdGF0ZSwgd2hhdAotYWN0aW9uIHdpbGwgYmUgdGFrZW4sIHdoYXQgdGhlIG5leHQgc3RhdGUgaXMsIGFuZCB3aGF0IHRoZQotbm9uLWVycm9yIHJldHVybiB2YWx1ZXMgYXJlLiAgTm90ZSB0aGF0IHlvdSBjYW4ndCBleHBsaWNpdGx5IGFzawotd2hhdCBzdGF0ZSB0aGUgc3RyZWFtIGlzIGluLCBidXQgbm9yIGRvIHlvdSBuZWVkIHRvIC0tIGl0IGNhbiBiZQotaW5mZXJyZWQgZnJvbSB0aGUgdmFsdWVzIHJldHVybmVkIGJ5Ci08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0Pi48L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLUlETEUvYW55Ci0gIElsbGVnYWwuICBJRExFIHN0YXRlIG9ubHkgZXhpc3RzIGFmdGVyIEJaMl9iekNvbXByZXNzRW5kIG9yCi0gIGJlZm9yZSBCWjJfYnpDb21wcmVzc0luaXQuCi0gIFJldHVybiB2YWx1ZSA9IEJaX1NFUVVFTkNFX0VSUk9SCi0KLVJVTk5JTkcvQlpfUlVOCi0gIENvbXByZXNzIGZyb20gbmV4dF9pbiB0byBuZXh0X291dCBhcyBtdWNoIGFzIHBvc3NpYmxlLgotICBOZXh0IHN0YXRlID0gUlVOTklORwotICBSZXR1cm4gdmFsdWUgPSBCWl9SVU5fT0sKLQotUlVOTklORy9CWl9GTFVTSAotICBSZW1lbWJlciBjdXJyZW50IHZhbHVlIG9mIG5leHRfaW4uIENvbXByZXNzIGZyb20gbmV4dF9pbgotICB0byBuZXh0X291dCBhcyBtdWNoIGFzIHBvc3NpYmxlLCBidXQgZG8gbm90IGFjY2VwdCBhbnkgbW9yZSBpbnB1dC4KLSAgTmV4dCBzdGF0ZSA9IEZMVVNISU5HCi0gIFJldHVybiB2YWx1ZSA9IEJaX0ZMVVNIX09LCi0KLVJVTk5JTkcvQlpfRklOSVNICi0gIFJlbWVtYmVyIGN1cnJlbnQgdmFsdWUgb2YgbmV4dF9pbi4gQ29tcHJlc3MgZnJvbSBuZXh0X2luCi0gIHRvIG5leHRfb3V0IGFzIG11Y2ggYXMgcG9zc2libGUsIGJ1dCBkbyBub3QgYWNjZXB0IGFueSBtb3JlIGlucHV0LgotICBOZXh0IHN0YXRlID0gRklOSVNISU5HCi0gIFJldHVybiB2YWx1ZSA9IEJaX0ZJTklTSF9PSwotCi1GTFVTSElORy9CWl9GTFVTSAotICBDb21wcmVzcyBmcm9tIG5leHRfaW4gdG8gbmV4dF9vdXQgYXMgbXVjaCBhcyBwb3NzaWJsZSwgCi0gIGJ1dCBkbyBub3QgYWNjZXB0IGFueSBtb3JlIGlucHV0LgotICBJZiBhbGwgdGhlIGV4aXN0aW5nIGlucHV0IGhhcyBiZWVuIHVzZWQgdXAgYW5kIGFsbCBjb21wcmVzc2VkCi0gIG91dHB1dCBoYXMgYmVlbiByZW1vdmVkCi0gICAgTmV4dCBzdGF0ZSA9IFJVTk5JTkc7IFJldHVybiB2YWx1ZSA9IEJaX1JVTl9PSwotICBlbHNlCi0gICAgTmV4dCBzdGF0ZSA9IEZMVVNISU5HOyBSZXR1cm4gdmFsdWUgPSBCWl9GTFVTSF9PSwotCi1GTFVTSElORy9vdGhlciAgICAgCi0gIElsbGVnYWwuCi0gIFJldHVybiB2YWx1ZSA9IEJaX1NFUVVFTkNFX0VSUk9SCi0KLUZJTklTSElORy9CWl9GSU5JU0gKLSAgQ29tcHJlc3MgZnJvbSBuZXh0X2luIHRvIG5leHRfb3V0IGFzIG11Y2ggYXMgcG9zc2libGUsCi0gIGJ1dCB0byBub3QgYWNjZXB0IGFueSBtb3JlIGlucHV0LiAgCi0gIElmIGFsbCB0aGUgZXhpc3RpbmcgaW5wdXQgaGFzIGJlZW4gdXNlZCB1cCBhbmQgYWxsIGNvbXByZXNzZWQKLSAgb3V0cHV0IGhhcyBiZWVuIHJlbW92ZWQKLSAgICBOZXh0IHN0YXRlID0gSURMRTsgUmV0dXJuIHZhbHVlID0gQlpfU1RSRUFNX0VORAotICBlbHNlCi0gICAgTmV4dCBzdGF0ZSA9IEZJTklTSElORzsgUmV0dXJuIHZhbHVlID0gQlpfRklOSVNIX09LCi0KLUZJTklTSElORy9vdGhlcgotICBJbGxlZ2FsLgotICBSZXR1cm4gdmFsdWUgPSBCWl9TRVFVRU5DRV9FUlJPUgotPC9wcm9ncmFtbGlzdGluZz4KLQotCi08cGFyYT5UaGF0IHN0aWxsIGxvb2tzIGNvbXBsaWNhdGVkPyAgV2VsbCwgZmFpciBlbm91Z2guICBUaGUKLXVzdWFsIHNlcXVlbmNlIG9mIGNhbGxzIGZvciBjb21wcmVzc2luZyBhIGxvYWQgb2YgZGF0YSBpczo8L3BhcmE+Ci0KLTxvcmRlcmVkbGlzdD4KLQotIDxsaXN0aXRlbT48cGFyYT5HZXQgc3RhcnRlZCB3aXRoCi0gIDxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzc0luaXQ8L2NvbXB1dGVyb3V0cHV0Pi48L3BhcmE+PC9saXN0aXRlbT4KLQotIDxsaXN0aXRlbT48cGFyYT5TaG92ZWwgZGF0YSBpbiBhbmQgc2hsdXJwIG91dCBpdHMgY29tcHJlc3NlZCBmb3JtCi0gIHVzaW5nIHplcm8gb3IgbW9yZSBjYWxscyBvZgotICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiB3aXRoIGFjdGlvbiA9Ci0gIDxjb21wdXRlcm91dHB1dD5CWl9SVU48L2NvbXB1dGVyb3V0cHV0Pi48L3BhcmE+PC9saXN0aXRlbT4KLQotIDxsaXN0aXRlbT48cGFyYT5GaW5pc2ggdXAuIFJlcGVhdGVkbHkgY2FsbAotICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiB3aXRoIGFjdGlvbiA9Ci0gIDxjb21wdXRlcm91dHB1dD5CWl9GSU5JU0g8L2NvbXB1dGVyb3V0cHV0PiwgY29weWluZyBvdXQgdGhlCi0gIGNvbXByZXNzZWQgb3V0cHV0LCB1bnRpbAotICA8Y29tcHV0ZXJvdXRwdXQ+QlpfU1RSRUFNX0VORDwvY29tcHV0ZXJvdXRwdXQ+IGlzCi0gIHJldHVybmVkLjwvcGFyYT48L2xpc3RpdGVtPiA8bGlzdGl0ZW0+PHBhcmE+Q2xvc2UgdXAgYW5kIGdvIGhvbWUuICBDYWxsCi0gIDxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzc0VuZDwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT48L2xpc3RpdGVtPgotCi08L29yZGVyZWRsaXN0PgotCi08cGFyYT5JZiB0aGUgZGF0YSB5b3Ugd2FudCB0byBjb21wcmVzcyBmaXRzIGludG8geW91ciBpbnB1dAotYnVmZmVyIGFsbCBhdCBvbmNlLCB5b3UgY2FuIHNraXAgdGhlIGNhbGxzIG9mCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3MgKCAuLi4sIEJaX1JVTiApPC9jb21wdXRlcm91dHB1dD4KLWFuZCBqdXN0IGRvIHRoZSA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3MgKCAuLi4sIEJaX0ZJTklTSAotKTwvY29tcHV0ZXJvdXRwdXQ+IGNhbGxzLjwvcGFyYT4KLQotPHBhcmE+QWxsIHJlcXVpcmVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYnkKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzc0luaXQ8L2NvbXB1dGVyb3V0cHV0Pi4gIFRoZQotY29tcHJlc3Npb24gbGlicmFyeSBjYW4gYWNjZXB0IGFueSBkYXRhIGF0IGFsbCAob2J2aW91c2x5KS4gIFNvCi15b3Ugc2hvdWxkbid0IGdldCBhbnkgZXJyb3IgcmV0dXJuIHZhbHVlcyBmcm9tIHRoZQotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzPC9jb21wdXRlcm91dHB1dD4gY2FsbHMuICBJZiB5b3UKLWRvLCB0aGV5IHdpbGwgYmUKLTxjb21wdXRlcm91dHB1dD5CWl9TRVFVRU5DRV9FUlJPUjwvY29tcHV0ZXJvdXRwdXQ+LCBhbmQgaW5kaWNhdGUKLWEgYnVnIGluIHlvdXIgcHJvZ3JhbW1pbmcuPC9wYXJhPgotCi08cGFyYT5Ucml2aWFsIG90aGVyIHBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1CWl9QQVJBTV9FUlJPUgotICBpZiBzdHJtIGlzIE5VTEwsIG9yIHN0cm0tPnMgaXMgTlVMTAotPC9wcm9ncmFtbGlzdGluZz4KLQotPC9zZWN0Mj4KLQotCi08c2VjdDIgaWQ9ImJ6Q29tcHJlc3MtZW5kIiB4cmVmbGFiZWw9IkJaMl9iekNvbXByZXNzRW5kIj4KLTx0aXRsZT48Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3NFbmQ8L2NvbXB1dGVyb3V0cHV0PjwvdGl0bGU+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLWludCBCWjJfYnpDb21wcmVzc0VuZCAoIGJ6X3N0cmVhbSAqc3RybSApOwotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+UmVsZWFzZXMgYWxsIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSBjb21wcmVzc2lvbgotc3RyZWFtLjwvcGFyYT4KLQotPHBhcmE+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLUJaX1BBUkFNX0VSUk9SICBpZiBzdHJtIGlzIE5VTEwgb3Igc3RybS0+cyBpcyBOVUxMCi1CWl9PSyAgICAgICAgICAgb3RoZXJ3aXNlCi08L3Byb2dyYW1saXN0aW5nPgotCi08L3NlY3QyPgotCi0KLTxzZWN0MiBpZD0iYnpEZWNvbXByZXNzLWluaXQiIHhyZWZsYWJlbD0iQloyX2J6RGVjb21wcmVzc0luaXQiPgotPHRpdGxlPjxjb21wdXRlcm91dHB1dD5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29tcHV0ZXJvdXRwdXQ+PC90aXRsZT4KLQotPHByb2dyYW1saXN0aW5nPgotaW50IEJaMl9iekRlY29tcHJlc3NJbml0ICggYnpfc3RyZWFtICpzdHJtLCBpbnQgdmVyYm9zaXR5LCBpbnQgc21hbGwgKTsKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPlByZXBhcmVzIGZvciBkZWNvbXByZXNzaW9uLiAgQXMgd2l0aAotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzSW5pdDwvY29tcHV0ZXJvdXRwdXQ+LCBhCi08Y29tcHV0ZXJvdXRwdXQ+Ynpfc3RyZWFtPC9jb21wdXRlcm91dHB1dD4gcmVjb3JkIHNob3VsZCBiZQotYWxsb2NhdGVkIGFuZCBpbml0aWFsaXNlZCBiZWZvcmUgdGhlIGNhbGwuICBGaWVsZHMKLTxjb21wdXRlcm91dHB1dD5iemFsbG9jPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+YnpmcmVlPC9jb21wdXRlcm91dHB1dD4gYW5kCi08Y29tcHV0ZXJvdXRwdXQ+b3BhcXVlPC9jb21wdXRlcm91dHB1dD4gc2hvdWxkIGJlIHNldCBpZiBhIGN1c3RvbQotbWVtb3J5IGFsbG9jYXRvciBpcyByZXF1aXJlZCwgb3IgbWFkZQotPGNvbXB1dGVyb3V0cHV0Pk5VTEw8L2NvbXB1dGVyb3V0cHV0PiBmb3IgdGhlIG5vcm1hbAotPGNvbXB1dGVyb3V0cHV0Pm1hbGxvYzwvY29tcHV0ZXJvdXRwdXQ+IC8KLTxjb21wdXRlcm91dHB1dD5mcmVlPC9jb21wdXRlcm91dHB1dD4gcm91dGluZXMuICBVcG9uIHJldHVybiwgdGhlCi1pbnRlcm5hbCBzdGF0ZSB3aWxsIGhhdmUgYmVlbiBpbml0aWFsaXNlZCwgYW5kCi08Y29tcHV0ZXJvdXRwdXQ+dG90YWxfaW48L2NvbXB1dGVyb3V0cHV0PiBhbmQKLTxjb21wdXRlcm91dHB1dD50b3RhbF9vdXQ8L2NvbXB1dGVyb3V0cHV0PiB3aWxsIGJlIHplcm8uPC9wYXJhPgotCi08cGFyYT5Gb3IgdGhlIG1lYW5pbmcgb2YgcGFyYW1ldGVyCi08Y29tcHV0ZXJvdXRwdXQ+dmVyYm9zaXR5PC9jb21wdXRlcm91dHB1dD4sIHNlZQotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzSW5pdDwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+SWYgPGNvbXB1dGVyb3V0cHV0PnNtYWxsPC9jb21wdXRlcm91dHB1dD4gaXMgbm9uemVybywgdGhlCi1saWJyYXJ5IHdpbGwgdXNlIGFuIGFsdGVybmF0aXZlIGRlY29tcHJlc3Npb24gYWxnb3JpdGhtIHdoaWNoCi11c2VzIGxlc3MgbWVtb3J5IGJ1dCBhdCB0aGUgY29zdCBvZiBkZWNvbXByZXNzaW5nIG1vcmUgc2xvd2x5Ci0ocm91Z2hseSBzcGVha2luZywgaGFsZiB0aGUgc3BlZWQsIGJ1dCB0aGUgbWF4aW11bSBtZW1vcnkKLXJlcXVpcmVtZW50IGRyb3BzIHRvIGFyb3VuZCAyMzAwaykuICBTZWUgPHhyZWYgbGlua2VuZD0idXNpbmciLz4KLWZvciBtb3JlIGluZm9ybWF0aW9uIG9uIG1lbW9yeSBtYW5hZ2VtZW50LjwvcGFyYT4KLQotPHBhcmE+Tm90ZSB0aGF0IHRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBkZWNvbXByZXNzIGEKLXN0cmVhbSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bnRpbCB0aGUgc3RyZWFtJ3MgaGVhZGVyIGhhcyBiZWVuCi1yZWFkLCBzbyBldmVuIGlmCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvbXB1dGVyb3V0cHV0PiBzdWNjZWVkcywgYQotc3Vic2VxdWVudCA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6RGVjb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+Ci1jb3VsZCBmYWlsIHdpdGgKLTxjb21wdXRlcm91dHB1dD5CWl9NRU1fRVJST1I8L2NvbXB1dGVyb3V0cHV0Pi48L3BhcmE+Ci0KLTxwYXJhPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1CWl9DT05GSUdfRVJST1IKLSAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCi1CWl9QQVJBTV9FUlJPUgotICBpZiAoIHNtYWxsICE9IDAgJiYgc21hbGwgIT0gMSApCi0gIG9yICh2ZXJib3NpdHkgPDsgMCB8fCB2ZXJib3NpdHkgPiA0KQotQlpfTUVNX0VSUk9SCi0gIGlmIGluc3VmZmljaWVudCBtZW1vcnkgaXMgYXZhaWxhYmxlCi08L3Byb2dyYW1saXN0aW5nPgotCi08cGFyYT5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcGFyYT4KLQotPHByb2dyYW1saXN0aW5nPgotQloyX2J6RGVjb21wcmVzcwotICBpZiBCWl9PSyB3YXMgcmV0dXJuZWQKLSAgbm8gc3BlY2lmaWMgYWN0aW9uIHJlcXVpcmVkIGluIGNhc2Ugb2YgZXJyb3IKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTwvc2VjdDI+Ci0KLQotPHNlY3QyIGlkPSJiekRlY29tcHJlc3MiIHhyZWZsYWJlbD0iQloyX2J6RGVjb21wcmVzcyI+Ci08dGl0bGU+PGNvbXB1dGVyb3V0cHV0PkJaMl9iekRlY29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PjwvdGl0bGU+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLWludCBCWjJfYnpEZWNvbXByZXNzICggYnpfc3RyZWFtICpzdHJtICk7Ci08L3Byb2dyYW1saXN0aW5nPgotCi08cGFyYT5Qcm92aWRlcyBtb3JlIGlucHV0IGFuZC9vdXQgb3V0cHV0IGJ1ZmZlciBzcGFjZSBmb3IgdGhlCi1saWJyYXJ5LiAgVGhlIGNhbGxlciBtYWludGFpbnMgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLCBhbmQgdXNlcwotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekRlY29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiB0byB0cmFuc2ZlcgotZGF0YSBiZXR3ZWVuIHRoZW0uPC9wYXJhPgotCi08cGFyYT5CZWZvcmUgZWFjaCBjYWxsIHRvCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6RGVjb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0Pm5leHRfaW48L2NvbXB1dGVyb3V0cHV0PiBzaG91bGQgcG9pbnQgYXQgdGhlCi1jb21wcmVzc2VkIGRhdGEsIGFuZCA8Y29tcHV0ZXJvdXRwdXQ+YXZhaWxfaW48L2NvbXB1dGVyb3V0cHV0Pgotc2hvdWxkIGluZGljYXRlIGhvdyBtYW55IGJ5dGVzIHRoZSBsaWJyYXJ5IG1heSByZWFkLgotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekRlY29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiB1cGRhdGVzCi08Y29tcHV0ZXJvdXRwdXQ+bmV4dF9pbjwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PmF2YWlsX2luPC9jb21wdXRlcm91dHB1dD4gYW5kCi08Y29tcHV0ZXJvdXRwdXQ+dG90YWxfaW48L2NvbXB1dGVyb3V0cHV0PiB0byByZWZsZWN0IHRoZSBudW1iZXIKLW9mIGJ5dGVzIGl0IGhhcyByZWFkLjwvcGFyYT4KLQotPHBhcmE+U2ltaWxhcmx5LCA8Y29tcHV0ZXJvdXRwdXQ+bmV4dF9vdXQ8L2NvbXB1dGVyb3V0cHV0PiBzaG91bGQKLXBvaW50IHRvIGEgYnVmZmVyIGluIHdoaWNoIHRoZSB1bmNvbXByZXNzZWQgb3V0cHV0IGlzIHRvIGJlCi1wbGFjZWQsIHdpdGggPGNvbXB1dGVyb3V0cHV0PmF2YWlsX291dDwvY29tcHV0ZXJvdXRwdXQ+Ci1pbmRpY2F0aW5nIGhvdyBtdWNoIG91dHB1dCBzcGFjZSBpcyBhdmFpbGFibGUuCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiB1cGRhdGVzCi08Y29tcHV0ZXJvdXRwdXQ+bmV4dF9vdXQ8L2NvbXB1dGVyb3V0cHV0PiwKLTxjb21wdXRlcm91dHB1dD5hdmFpbF9vdXQ8L2NvbXB1dGVyb3V0cHV0PiBhbmQKLTxjb21wdXRlcm91dHB1dD50b3RhbF9vdXQ8L2NvbXB1dGVyb3V0cHV0PiB0byByZWZsZWN0IHRoZSBudW1iZXIKLW9mIGJ5dGVzIG91dHB1dC48L3BhcmE+Ci0KLTxwYXJhPllvdSBtYXkgcHJvdmlkZSBhbmQgcmVtb3ZlIGFzIGxpdHRsZSBvciBhcyBtdWNoIGRhdGEgYXMgeW91Ci1saWtlIG9uIGVhY2ggY2FsbCBvZgotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekRlY29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0Pi4gIEluIHRoZSBsaW1pdCwKLWl0IGlzIGFjY2VwdGFibGUgdG8gc3VwcGx5IGFuZCByZW1vdmUgZGF0YSBvbmUgYnl0ZSBhdCBhIHRpbWUsCi1hbHRob3VnaCB0aGlzIHdvdWxkIGJlIHRlcnJpYmx5IGluZWZmaWNpZW50LiAgWW91IHNob3VsZCBhbHdheXMKLWVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBieXRlIG9mIG91dHB1dCBzcGFjZSBpcyBhdmFpbGFibGUgYXQKLWVhY2ggY2FsbC48L3BhcmE+Ci0KLTxwYXJhPlVzZSBvZiA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6RGVjb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+IGlzCi1zaW1wbGVyIHRoYW4KLTxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+WW91IHNob3VsZCBwcm92aWRlIGlucHV0IGFuZCByZW1vdmUgb3V0cHV0IGFzIGRlc2NyaWJlZAotYWJvdmUsIGFuZCByZXBlYXRlZGx5IGNhbGwKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpEZWNvbXByZXNzPC9jb21wdXRlcm91dHB1dD4gdW50aWwKLTxjb21wdXRlcm91dHB1dD5CWl9TVFJFQU1fRU5EPC9jb21wdXRlcm91dHB1dD4gaXMgcmV0dXJuZWQuCi1BcHBlYXJhbmNlIG9mIDxjb21wdXRlcm91dHB1dD5CWl9TVFJFQU1fRU5EPC9jb21wdXRlcm91dHB1dD4KLWRlbm90ZXMgdGhhdCA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6RGVjb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+Ci1oYXMgZGV0ZWN0ZWQgdGhlIGxvZ2ljYWwgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4KLTxjb21wdXRlcm91dHB1dD5CWjJfYnpEZWNvbXByZXNzPC9jb21wdXRlcm91dHB1dD4gd2lsbCBub3QKLXByb2R1Y2UgPGNvbXB1dGVyb3V0cHV0PkJaX1NUUkVBTV9FTkQ8L2NvbXB1dGVyb3V0cHV0PiB1bnRpbCBhbGwKLW91dHB1dCBkYXRhIGhhcyBiZWVuIHBsYWNlZCBpbnRvIHRoZSBvdXRwdXQgYnVmZmVyLCBzbyBvbmNlCi08Y29tcHV0ZXJvdXRwdXQ+QlpfU1RSRUFNX0VORDwvY29tcHV0ZXJvdXRwdXQ+IGFwcGVhcnMsIHlvdSBhcmUKLWd1YXJhbnRlZWQgdG8gaGF2ZSBhdmFpbGFibGUgYWxsIHRoZSBkZWNvbXByZXNzZWQgb3V0cHV0LCBhbmQKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpEZWNvbXByZXNzRW5kPC9jb21wdXRlcm91dHB1dD4gY2FuIHNhZmVseQotYmUgY2FsbGVkLjwvcGFyYT4KLQotPHBhcmE+SWYgY2FzZSBvZiBhbiBlcnJvciByZXR1cm4gdmFsdWUsIHlvdSBzaG91bGQgY2FsbAotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekRlY29tcHJlc3NFbmQ8L2NvbXB1dGVyb3V0cHV0PiB0byBjbGVhbiB1cAotYW5kIHJlbGVhc2UgbWVtb3J5LjwvcGFyYT4KLQotPHBhcmE+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLUJaX1BBUkFNX0VSUk9SCi0gIGlmIHN0cm0gaXMgTlVMTCBvciBzdHJtLT5zIGlzIE5VTEwKLSAgb3Igc3RybS0+YXZhaWxfb3V0IDwgMQotQlpfREFUQV9FUlJPUgotICBpZiBhIGRhdGEgaW50ZWdyaXR5IGVycm9yIGlzIGRldGVjdGVkIGluIHRoZSBjb21wcmVzc2VkIHN0cmVhbQotQlpfREFUQV9FUlJPUl9NQUdJQwotICBpZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0gZG9lc24ndCBiZWdpbiB3aXRoIHRoZSByaWdodCBtYWdpYyBieXRlcwotQlpfTUVNX0VSUk9SCi0gIGlmIHRoZXJlIHdhc24ndCBlbm91Z2ggbWVtb3J5IGF2YWlsYWJsZQotQlpfU1RSRUFNX0VORAotICBpZiB0aGUgbG9naWNhbCBlbmQgb2YgdGhlIGRhdGEgc3RyZWFtIHdhcyBkZXRlY3RlZCBhbmQgYWxsCi0gIG91dHB1dCBpbiBoYXMgYmVlbiBjb25zdW1lZCwgZWcgcy0tPmF2YWlsX291dCA+IDAKLUJaX09LCi0gIG90aGVyd2lzZQotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLUJaMl9iekRlY29tcHJlc3MKLSAgaWYgQlpfT0sgd2FzIHJldHVybmVkCi1CWjJfYnpEZWNvbXByZXNzRW5kCi0gIG90aGVyd2lzZQotPC9wcm9ncmFtbGlzdGluZz4KLQotPC9zZWN0Mj4KLQotCi08c2VjdDIgaWQ9ImJ6RGVjb21wcmVzcy1lbmQiIHhyZWZsYWJlbD0iQloyX2J6RGVjb21wcmVzc0VuZCI+Ci08dGl0bGU+PGNvbXB1dGVyb3V0cHV0PkJaMl9iekRlY29tcHJlc3NFbmQ8L2NvbXB1dGVyb3V0cHV0PjwvdGl0bGU+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLWludCBCWjJfYnpEZWNvbXByZXNzRW5kICggYnpfc3RyZWFtICpzdHJtICk7Ci08L3Byb2dyYW1saXN0aW5nPgotCi08cGFyYT5SZWxlYXNlcyBhbGwgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBhIGRlY29tcHJlc3Npb24KLXN0cmVhbS48L3BhcmE+Ci0KLTxwYXJhPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1CWl9QQVJBTV9FUlJPUgotICBpZiBzdHJtIGlzIE5VTEwgb3Igc3RybS0+cyBpcyBOVUxMCi1CWl9PSwotICBvdGhlcndpc2UKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci0gIE5vbmUuCi08L3Byb2dyYW1saXN0aW5nPgotCi08L3NlY3QyPgotCi08L3NlY3QxPgotCi0KLTxzZWN0MSBpZD0iaGwtaW50ZXJmYWNlIiB4cmVmbGFiZWw9IkhpZ2gtbGV2ZWwgaW50ZXJmYWNlIj4KLTx0aXRsZT5IaWdoLWxldmVsIGludGVyZmFjZTwvdGl0bGU+Ci0KLTxwYXJhPlRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZwotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gZm9ybWF0IGZpbGVzLiAgRmlyc3QsIHNvbWUKLWdlbmVyYWwgcG9pbnRzLjwvcGFyYT4KLQotPGl0ZW1pemVkbGlzdCBtYXJrPSdidWxsZXQnPgotCi0gPGxpc3RpdGVtPjxwYXJhPkFsbCBvZiB0aGUgZnVuY3Rpb25zIHRha2UgYW4KLSAgPGNvbXB1dGVyb3V0cHV0PmludCo8L2NvbXB1dGVyb3V0cHV0PiBmaXJzdCBhcmd1bWVudCwKLSAgPGNvbXB1dGVyb3V0cHV0PmJ6ZXJyb3I8L2NvbXB1dGVyb3V0cHV0Pi4gIEFmdGVyIGVhY2ggY2FsbCwKLSAgPGNvbXB1dGVyb3V0cHV0PmJ6ZXJyb3I8L2NvbXB1dGVyb3V0cHV0PiBzaG91bGQgYmUgY29uc3VsdGVkCi0gIGZpcnN0IHRvIGRldGVybWluZSB0aGUgb3V0Y29tZSBvZiB0aGUgY2FsbC4gIElmCi0gIDxjb21wdXRlcm91dHB1dD5iemVycm9yPC9jb21wdXRlcm91dHB1dD4gaXMKLSAgPGNvbXB1dGVyb3V0cHV0PkJaX09LPC9jb21wdXRlcm91dHB1dD4sIHRoZSBjYWxsIGNvbXBsZXRlZAotICBzdWNjZXNzZnVsbHksIGFuZCBvbmx5IHRoZW4gc2hvdWxkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlCi0gIGZ1bmN0aW9uIChpZiBhbnkpIGJlIGNvbnN1bHRlZC4gIElmCi0gIDxjb21wdXRlcm91dHB1dD5iemVycm9yPC9jb21wdXRlcm91dHB1dD4gaXMKLSAgPGNvbXB1dGVyb3V0cHV0PkJaX0lPX0VSUk9SPC9jb21wdXRlcm91dHB1dD4sIHRoZXJlIHdhcyBhbgotICBlcnJvciByZWFkaW5nL3dyaXRpbmcgdGhlIHVuZGVybHlpbmcgY29tcHJlc3NlZCBmaWxlLCBhbmQgeW91Ci0gIHNob3VsZCB0aGVuIGNvbnN1bHQgPGNvbXB1dGVyb3V0cHV0PmVycm5vPC9jb21wdXRlcm91dHB1dD4gLwotICA8Y29tcHV0ZXJvdXRwdXQ+cGVycm9yPC9jb21wdXRlcm91dHB1dD4gdG8gZGV0ZXJtaW5lIHRoZSBjYXVzZQotICBvZiB0aGUgZGlmZmljdWx0eS4gIDxjb21wdXRlcm91dHB1dD5iemVycm9yPC9jb21wdXRlcm91dHB1dD4KLSAgbWF5IGFsc28gYmUgc2V0IHRvIHZhcmlvdXMgb3RoZXIgdmFsdWVzOyBwcmVjaXNlIGRldGFpbHMgYXJlCi0gIGdpdmVuIG9uIGEgcGVyLWZ1bmN0aW9uIGJhc2lzIGJlbG93LjwvcGFyYT48L2xpc3RpdGVtPgotCi0gPGxpc3RpdGVtPjxwYXJhPklmIDxjb21wdXRlcm91dHB1dD5iemVycm9yPC9jb21wdXRlcm91dHB1dD4gaW5kaWNhdGVzCi0gIGFuIGVycm9yIChpZSwgYW55dGhpbmcgZXhjZXB0Ci0gIDxjb21wdXRlcm91dHB1dD5CWl9PSzwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotICA8Y29tcHV0ZXJvdXRwdXQ+QlpfU1RSRUFNX0VORDwvY29tcHV0ZXJvdXRwdXQ+KSwgeW91IHNob3VsZAotICBpbW1lZGlhdGVseSBjYWxsCi0gIDxjb21wdXRlcm91dHB1dD5CWjJfYnpSZWFkQ2xvc2U8L2NvbXB1dGVyb3V0cHV0PiAob3IKLSAgPGNvbXB1dGVyb3V0cHV0PkJaMl9ieldyaXRlQ2xvc2U8L2NvbXB1dGVyb3V0cHV0PiwgZGVwZW5kaW5nIG9uCi0gIHdoZXRoZXIgeW91IGFyZSBhdHRlbXB0aW5nIHRvIHJlYWQgb3IgdG8gd3JpdGUpIHRvIGZyZWUgdXAgYWxsCi0gIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHN0cmVhbS4gIE9uY2UgYW4gZXJyb3IgaGFzIGJlZW4KLSAgaW5kaWNhdGVkLCBiZWhhdmlvdXIgb2YgYWxsIGNhbGxzIGV4Y2VwdAotICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZENsb3NlPC9jb21wdXRlcm91dHB1dD4KLSAgKDxjb21wdXRlcm91dHB1dD5CWjJfYnpXcml0ZUNsb3NlPC9jb21wdXRlcm91dHB1dD4pIGlzCi0gIHVuZGVmaW5lZC4gIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0ICgxKQotICA8Y29tcHV0ZXJvdXRwdXQ+YnplcnJvcjwvY29tcHV0ZXJvdXRwdXQ+IHNob3VsZCBiZSBjaGVja2VkCi0gIGFmdGVyIGVhY2ggY2FsbCwgYW5kICgyKSBpZgotICA8Y29tcHV0ZXJvdXRwdXQ+YnplcnJvcjwvY29tcHV0ZXJvdXRwdXQ+IGluZGljYXRlcyBhbiBlcnJvciwKLSAgPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWRDbG9zZTwvY29tcHV0ZXJvdXRwdXQ+Ci0gICg8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6V3JpdGVDbG9zZTwvY29tcHV0ZXJvdXRwdXQ+KSBzaG91bGQgdGhlbgotICBiZSBjYWxsZWQgdG8gY2xlYW4gdXAuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0KLSA8bGlzdGl0ZW0+PHBhcmE+VGhlIDxjb21wdXRlcm91dHB1dD5GSUxFKjwvY29tcHV0ZXJvdXRwdXQ+IGFyZ3VtZW50cwotICBwYXNzZWQgdG8gPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWRPcGVuPC9jb21wdXRlcm91dHB1dD4gLwotICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6V3JpdGVPcGVuPC9jb21wdXRlcm91dHB1dD4gc2hvdWxkIGJlIHNldAotICB0byBiaW5hcnkgbW9kZS4gIE1vc3QgVW5peCBzeXN0ZW1zIHdpbGwgZG8gdGhpcyBieSBkZWZhdWx0LCBidXQKLSAgb3RoZXIgcGxhdGZvcm1zLCBpbmNsdWRpbmcgV2luZG93cyBhbmQgTWFjLCB3aWxsIG5vdC4gIElmIHlvdQotICBvbWl0IHRoaXMsIHlvdSBtYXkgZW5jb3VudGVyIHByb2JsZW1zIHdoZW4gbW92aW5nIGNvZGUgdG8gbmV3Ci0gIHBsYXRmb3Jtcy48L3BhcmE+PC9saXN0aXRlbT4KLQotIDxsaXN0aXRlbT48cGFyYT5NZW1vcnkgYWxsb2NhdGlvbiByZXF1ZXN0cyBhcmUgaGFuZGxlZCBieQotICA8Y29tcHV0ZXJvdXRwdXQ+bWFsbG9jPC9jb21wdXRlcm91dHB1dD4gLwotICA8Y29tcHV0ZXJvdXRwdXQ+ZnJlZTwvY29tcHV0ZXJvdXRwdXQ+LiAgQXQgcHJlc2VudCB0aGVyZSBpcyBubwotICBmYWNpbGl0eSBmb3IgdXNlci1kZWZpbmVkIG1lbW9yeSBhbGxvY2F0b3JzIGluIHRoZSBmaWxlIEkvTwotICBmdW5jdGlvbnMgKGNvdWxkIGVhc2lseSBiZSBhZGRlZCwgdGhvdWdoKS48L3BhcmE+PC9saXN0aXRlbT4KLQotPC9pdGVtaXplZGxpc3Q+Ci0KLQotCi08c2VjdDIgaWQ9ImJ6cmVhZG9wZW4iIHhyZWZsYWJlbD0iQloyX2J6UmVhZE9wZW4iPgotPHRpdGxlPjxjb21wdXRlcm91dHB1dD5CWjJfYnpSZWFkT3BlbjwvY29tcHV0ZXJvdXRwdXQ+PC90aXRsZT4KLQotPHByb2dyYW1saXN0aW5nPgotdHlwZWRlZiB2b2lkIEJaRklMRTsKLQotQlpGSUxFICpCWjJfYnpSZWFkT3BlbiggaW50ICpiemVycm9yLCBGSUxFICpmLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCB2ZXJib3NpdHksIGludCBzbWFsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVudXNlZCwgaW50IG5VbnVzZWQgKTsKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPlByZXBhcmUgdG8gcmVhZCBjb21wcmVzc2VkIGRhdGEgZnJvbSBmaWxlIGhhbmRsZQotPGNvbXB1dGVyb3V0cHV0PmY8L2NvbXB1dGVyb3V0cHV0Pi4KLTxjb21wdXRlcm91dHB1dD5mPC9jb21wdXRlcm91dHB1dD4gc2hvdWxkIHJlZmVyIHRvIGEgZmlsZSB3aGljaAotaGFzIGJlZW4gb3BlbmVkIGZvciByZWFkaW5nLCBhbmQgZm9yIHdoaWNoIHRoZSBlcnJvciBpbmRpY2F0b3IKLSg8Y29tcHV0ZXJvdXRwdXQ+ZmVycm9yKGYpPC9jb21wdXRlcm91dHB1dD4paXMgbm90IHNldC4gIElmCi08Y29tcHV0ZXJvdXRwdXQ+c21hbGw8L2NvbXB1dGVyb3V0cHV0PiBpcyAxLCB0aGUgbGlicmFyeSB3aWxsIHRyeQotdG8gZGVjb21wcmVzcyB1c2luZyBsZXNzIG1lbW9yeSwgYXQgdGhlIGV4cGVuc2Ugb2Ygc3BlZWQuPC9wYXJhPgotCi08cGFyYT5Gb3IgcmVhc29ucyBleHBsYWluZWQgYmVsb3csCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZDwvY29tcHV0ZXJvdXRwdXQ+IHdpbGwgZGVjb21wcmVzcyB0aGUKLTxjb21wdXRlcm91dHB1dD5uVW51c2VkPC9jb21wdXRlcm91dHB1dD4gYnl0ZXMgc3RhcnRpbmcgYXQKLTxjb21wdXRlcm91dHB1dD51bnVzZWQ8L2NvbXB1dGVyb3V0cHV0PiwgYmVmb3JlIHN0YXJ0aW5nIHRvIHJlYWQKLWZyb20gdGhlIGZpbGUgPGNvbXB1dGVyb3V0cHV0PmY8L2NvbXB1dGVyb3V0cHV0Pi4gIEF0IG1vc3QKLTxjb21wdXRlcm91dHB1dD5CWl9NQVhfVU5VU0VEPC9jb21wdXRlcm91dHB1dD4gYnl0ZXMgbWF5IGJlCi1zdXBwbGllZCBsaWtlIHRoaXMuICBJZiB0aGlzIGZhY2lsaXR5IGlzIG5vdCByZXF1aXJlZCwgeW91IHNob3VsZAotcGFzcyA8Y29tcHV0ZXJvdXRwdXQ+TlVMTDwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotPGNvbXB1dGVyb3V0cHV0PjA8L2NvbXB1dGVyb3V0cHV0PiBmb3IKLTxjb21wdXRlcm91dHB1dD51bnVzZWQ8L2NvbXB1dGVyb3V0cHV0PiBhbmQKLW48Y29tcHV0ZXJvdXRwdXQ+VW51c2VkPC9jb21wdXRlcm91dHB1dD4gcmVzcGVjdGl2ZWx5LjwvcGFyYT4KLQotPHBhcmE+Rm9yIHRoZSBtZWFuaW5nIG9mIHBhcmFtZXRlcnMKLTxjb21wdXRlcm91dHB1dD5zbWFsbDwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotPGNvbXB1dGVyb3V0cHV0PnZlcmJvc2l0eTwvY29tcHV0ZXJvdXRwdXQ+LCBzZWUKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+VGhlIGFtb3VudCBvZiBtZW1vcnkgbmVlZGVkIHRvIGRlY29tcHJlc3MgYSBmaWxlIGNhbm5vdCBiZQotZGV0ZXJtaW5lZCB1bnRpbCB0aGUgZmlsZSdzIGhlYWRlciBoYXMgYmVlbiByZWFkLiAgU28gaXQgaXMKLXBvc3NpYmxlIHRoYXQgPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWRPcGVuPC9jb21wdXRlcm91dHB1dD4KLXJldHVybnMgPGNvbXB1dGVyb3V0cHV0PkJaX09LPC9jb21wdXRlcm91dHB1dD4gYnV0IGEgc3Vic2VxdWVudAotY2FsbCBvZiA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZDwvY29tcHV0ZXJvdXRwdXQ+IHdpbGwgcmV0dXJuCi08Y29tcHV0ZXJvdXRwdXQ+QlpfTUVNX0VSUk9SPC9jb21wdXRlcm91dHB1dD4uPC9wYXJhPgotCi08cGFyYT5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwotPGNvbXB1dGVyb3V0cHV0PmJ6ZXJyb3I8L2NvbXB1dGVyb3V0cHV0Pjo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLUJaX0NPTkZJR19FUlJPUgotICBpZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBtaXMtY29tcGlsZWQKLUJaX1BBUkFNX0VSUk9SCi0gIGlmIGYgaXMgTlVMTAotICBvciBzbWFsbCBpcyBuZWl0aGVyIDAgbm9yIDEKLSAgb3IgKCB1bnVzZWQgPT0gTlVMTCAmJiBuVW51c2VkICE9IDAgKQotICBvciAoIHVudXNlZCAhPSBOVUxMICYmICEoMCA8PSBuVW51c2VkIDw9IEJaX01BWF9VTlVTRUQpICkKLUJaX0lPX0VSUk9SCi0gIGlmIGZlcnJvcihmKSBpcyBub256ZXJvCi1CWl9NRU1fRVJST1IKLSAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSBpcyBhdmFpbGFibGUKLUJaX09LCi0gIG90aGVyd2lzZS4KLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1Qb2ludGVyIHRvIGFuIGFic3RyYWN0IEJaRklMRQotICBpZiBiemVycm9yIGlzIEJaX09LCi1OVUxMCi0gIG90aGVyd2lzZQotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLUJaMl9ielJlYWQKLSAgaWYgYnplcnJvciBpcyBCWl9PSwotQloyX2J6Q2xvc2UKLSAgb3RoZXJ3aXNlCi08L3Byb2dyYW1saXN0aW5nPgotCi08L3NlY3QyPgotCi0KLTxzZWN0MiBpZD0iYnpyZWFkIiB4cmVmbGFiZWw9IkJaMl9ielJlYWQiPgotPHRpdGxlPjxjb21wdXRlcm91dHB1dD5CWjJfYnpSZWFkPC9jb21wdXRlcm91dHB1dD48L3RpdGxlPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1pbnQgQloyX2J6UmVhZCAoIGludCAqYnplcnJvciwgQlpGSUxFICpiLCB2b2lkICpidWYsIGludCBsZW4gKTsKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPlJlYWRzIHVwIHRvIDxjb21wdXRlcm91dHB1dD5sZW48L2NvbXB1dGVyb3V0cHV0PgotKHVuY29tcHJlc3NlZCkgYnl0ZXMgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlCi08Y29tcHV0ZXJvdXRwdXQ+YjwvY29tcHV0ZXJvdXRwdXQ+IGludG8gdGhlIGJ1ZmZlcgotPGNvbXB1dGVyb3V0cHV0PmJ1ZjwvY29tcHV0ZXJvdXRwdXQ+LiAgSWYgdGhlIHJlYWQgd2FzCi1zdWNjZXNzZnVsLCA8Y29tcHV0ZXJvdXRwdXQ+YnplcnJvcjwvY29tcHV0ZXJvdXRwdXQ+IGlzIHNldCB0bwotPGNvbXB1dGVyb3V0cHV0PkJaX09LPC9jb21wdXRlcm91dHB1dD4gYW5kIHRoZSBudW1iZXIgb2YgYnl0ZXMKLXJlYWQgaXMgcmV0dXJuZWQuICBJZiB0aGUgbG9naWNhbCBlbmQtb2Ytc3RyZWFtIHdhcyBkZXRlY3RlZCwKLTxjb21wdXRlcm91dHB1dD5iemVycm9yPC9jb21wdXRlcm91dHB1dD4gd2lsbCBiZSBzZXQgdG8KLTxjb21wdXRlcm91dHB1dD5CWl9TVFJFQU1fRU5EPC9jb21wdXRlcm91dHB1dD4sIGFuZCB0aGUgbnVtYmVyIG9mCi1ieXRlcyByZWFkIGlzIHJldHVybmVkLiAgQWxsIG90aGVyCi08Y29tcHV0ZXJvdXRwdXQ+YnplcnJvcjwvY29tcHV0ZXJvdXRwdXQ+IHZhbHVlcyBkZW5vdGUgYW4KLWVycm9yLjwvcGFyYT4KLQotPHBhcmE+PGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWQ8L2NvbXB1dGVyb3V0cHV0PiB3aWxsIHN1cHBseQotPGNvbXB1dGVyb3V0cHV0PmxlbjwvY29tcHV0ZXJvdXRwdXQ+IGJ5dGVzLCB1bmxlc3MgdGhlIGxvZ2ljYWwKLXN0cmVhbSBlbmQgaXMgZGV0ZWN0ZWQgb3IgYW4gZXJyb3Igb2NjdXJzLiAgQmVjYXVzZSBvZiB0aGlzLCBpdAotaXMgcG9zc2libGUgdG8gZGV0ZWN0IHRoZSBzdHJlYW0gZW5kIGJ5IG9ic2VydmluZyB3aGVuIHRoZSBudW1iZXIKLW9mIGJ5dGVzIHJldHVybmVkIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIHJlcXVlc3RlZC4KLU5ldmVydGhlbGVzcywgdGhpcyBpcyByZWdhcmRlZCBhcyBpbmFkdmlzYWJsZTsgeW91IHNob3VsZCBpbnN0ZWFkCi1jaGVjayA8Y29tcHV0ZXJvdXRwdXQ+YnplcnJvcjwvY29tcHV0ZXJvdXRwdXQ+IGFmdGVyIGV2ZXJ5IGNhbGwKLWFuZCB3YXRjaCBvdXQgZm9yCi08Y29tcHV0ZXJvdXRwdXQ+QlpfU1RSRUFNX0VORDwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+SW50ZXJuYWxseSwgPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWQ8L2NvbXB1dGVyb3V0cHV0PgotY29waWVzIGRhdGEgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlIGluIGNodW5rcyBvZiBzaXplCi08Y29tcHV0ZXJvdXRwdXQ+QlpfTUFYX1VOVVNFRDwvY29tcHV0ZXJvdXRwdXQ+IGJ5dGVzIGJlZm9yZQotZGVjb21wcmVzc2luZyBpdC4gIElmIHRoZSBmaWxlIGNvbnRhaW5zIG1vcmUgYnl0ZXMgdGhhbiBzdHJpY3RseQotbmVlZGVkIHRvIHJlYWNoIHRoZSBsb2dpY2FsIGVuZC1vZi1zdHJlYW0sCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZDwvY29tcHV0ZXJvdXRwdXQ+IHdpbGwgYWxtb3N0IGNlcnRhaW5seQotcmVhZCBzb21lIG9mIHRoZSB0cmFpbGluZyBkYXRhIGJlZm9yZSBzaWduYWxsaW5nCi08Y29tcHV0ZXJvdXRwdXQ+QlpfU0VRVUVOQ0VfRU5EPC9jb21wdXRlcm91dHB1dD4uICBUbyBjb2xsZWN0IHRoZQotcmVhZCBidXQgdW51c2VkIGRhdGEgb25jZQotPGNvbXB1dGVyb3V0cHV0PkJaX1NFUVVFTkNFX0VORDwvY29tcHV0ZXJvdXRwdXQ+IGhhcyBhcHBlYXJlZCwKLWNhbGwgPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvbXB1dGVyb3V0cHV0PgotaW1tZWRpYXRlbHkgYmVmb3JlCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZENsb3NlPC9jb21wdXRlcm91dHB1dD4uPC9wYXJhPgotCi08cGFyYT5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwotPGNvbXB1dGVyb3V0cHV0PmJ6ZXJyb3I8L2NvbXB1dGVyb3V0cHV0Pjo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLUJaX1BBUkFNX0VSUk9SCi0gIGlmIGIgaXMgTlVMTCBvciBidWYgaXMgTlVMTCBvciBsZW4gPCAwCi1CWl9TRVFVRU5DRV9FUlJPUgotICBpZiBiIHdhcyBvcGVuZWQgd2l0aCBCWjJfYnpXcml0ZU9wZW4KLUJaX0lPX0VSUk9SCi0gIGlmIHRoZXJlIGlzIGFuIGVycm9yIHJlYWRpbmcgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlCi1CWl9VTkVYUEVDVEVEX0VPRgotICBpZiB0aGUgY29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSAKLSAgdGhlIGxvZ2ljYWwgZW5kLW9mLXN0cmVhbSB3YXMgZGV0ZWN0ZWQKLUJaX0RBVEFfRVJST1IKLSAgaWYgYSBkYXRhIGludGVncml0eSBlcnJvciB3YXMgZGV0ZWN0ZWQgaW4gdGhlIGNvbXByZXNzZWQgc3RyZWFtCi1CWl9EQVRBX0VSUk9SX01BR0lDCi0gIGlmIHRoZSBzdHJlYW0gZG9lcyBub3QgYmVnaW4gd2l0aCB0aGUgcmVxdWlzaXRlIGhlYWRlciBieXRlcyAKLSAgKGllLCBpcyBub3QgYSBiemlwMiBkYXRhIGZpbGUpLiAgVGhpcyBpcyByZWFsbHkgCi0gIGEgc3BlY2lhbCBjYXNlIG9mIEJaX0RBVEFfRVJST1IuCi1CWl9NRU1fRVJST1IKLSAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSB3YXMgYXZhaWxhYmxlCi1CWl9TVFJFQU1fRU5ECi0gIGlmIHRoZSBsb2dpY2FsIGVuZCBvZiBzdHJlYW0gd2FzIGRldGVjdGVkLgotQlpfT0sKLSAgb3RoZXJ3aXNlLgotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLW51bWJlciBvZiBieXRlcyByZWFkCi0gIGlmIGJ6ZXJyb3IgaXMgQlpfT0sgb3IgQlpfU1RSRUFNX0VORAotdW5kZWZpbmVkCi0gIG90aGVyd2lzZQotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLWNvbGxlY3QgZGF0YSBmcm9tIGJ1ZiwgdGhlbiBCWjJfYnpSZWFkIG9yIEJaMl9ielJlYWRDbG9zZQotICBpZiBiemVycm9yIGlzIEJaX09LCi1jb2xsZWN0IGRhdGEgZnJvbSBidWYsIHRoZW4gQloyX2J6UmVhZENsb3NlIG9yIEJaMl9ielJlYWRHZXRVbnVzZWQKLSAgaWYgYnplcnJvciBpcyBCWl9TRVFVRU5DRV9FTkQKLUJaMl9ielJlYWRDbG9zZQotICBvdGhlcndpc2UKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTwvc2VjdDI+Ci0KLQotPHNlY3QyIGlkPSJienJlYWRnZXR1bnVzZWQiIHhyZWZsYWJlbD0iQloyX2J6UmVhZEdldFVudXNlZCI+Ci08dGl0bGU+PGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvbXB1dGVyb3V0cHV0PjwvdGl0bGU+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLXZvaWQgQloyX2J6UmVhZEdldFVudXNlZCggaW50KiBiemVycm9yLCBCWkZJTEUgKmIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiogdW51c2VkLCBpbnQqIG5VbnVzZWQgKTsKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPlJldHVybnMgZGF0YSB3aGljaCB3YXMgcmVhZCBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUgYnV0Ci13YXMgbm90IG5lZWRlZCB0byBnZXQgdG8gdGhlIGxvZ2ljYWwgZW5kLW9mLXN0cmVhbS4KLTxjb21wdXRlcm91dHB1dD4qdW51c2VkPC9jb21wdXRlcm91dHB1dD4gaXMgc2V0IHRvIHRoZSBhZGRyZXNzIG9mCi10aGUgZGF0YSwgYW5kIDxjb21wdXRlcm91dHB1dD4qblVudXNlZDwvY29tcHV0ZXJvdXRwdXQ+IHRvIHRoZQotbnVtYmVyIG9mIGJ5dGVzLiAgPGNvbXB1dGVyb3V0cHV0PipuVW51c2VkPC9jb21wdXRlcm91dHB1dD4gd2lsbAotYmUgc2V0IHRvIGEgdmFsdWUgYmV0d2VlbiA8Y29tcHV0ZXJvdXRwdXQ+MDwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotPGNvbXB1dGVyb3V0cHV0PkJaX01BWF9VTlVTRUQ8L2NvbXB1dGVyb3V0cHV0PiBpbmNsdXNpdmUuPC9wYXJhPgotCi08cGFyYT5UaGlzIGZ1bmN0aW9uIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZDwvY29tcHV0ZXJvdXRwdXQ+IGhhcyBzaWduYWxsZWQKLTxjb21wdXRlcm91dHB1dD5CWl9TVFJFQU1fRU5EPC9jb21wdXRlcm91dHB1dD4gYnV0IGJlZm9yZQotPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWRDbG9zZTwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+UG9zc2libGUgYXNzaWdubWVudHMgdG8KLTxjb21wdXRlcm91dHB1dD5iemVycm9yPC9jb21wdXRlcm91dHB1dD46PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1CWl9QQVJBTV9FUlJPUgotICBpZiBiIGlzIE5VTEwKLSAgb3IgdW51c2VkIGlzIE5VTEwgb3IgblVudXNlZCBpcyBOVUxMCi1CWl9TRVFVRU5DRV9FUlJPUgotICBpZiBCWl9TVFJFQU1fRU5EIGhhcyBub3QgYmVlbiBzaWduYWxsZWQKLSAgb3IgaWYgYiB3YXMgb3BlbmVkIHdpdGggQloyX2J6V3JpdGVPcGVuCi1CWl9PSwotICBvdGhlcndpc2UKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1CWjJfYnpSZWFkQ2xvc2UKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTwvc2VjdDI+Ci0KLQotPHNlY3QyIGlkPSJienJlYWRjbG9zZSIgeHJlZmxhYmVsPSJCWjJfYnpSZWFkQ2xvc2UiPgotPHRpdGxlPjxjb21wdXRlcm91dHB1dD5CWjJfYnpSZWFkQ2xvc2U8L2NvbXB1dGVyb3V0cHV0PjwvdGl0bGU+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLXZvaWQgQloyX2J6UmVhZENsb3NlICggaW50ICpiemVycm9yLCBCWkZJTEUgKmIgKTsKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPlJlbGVhc2VzIGFsbCBtZW1vcnkgcGVydGFpbmluZyB0byB0aGUgY29tcHJlc3NlZCBmaWxlCi08Y29tcHV0ZXJvdXRwdXQ+YjwvY29tcHV0ZXJvdXRwdXQ+LgotPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWRDbG9zZTwvY29tcHV0ZXJvdXRwdXQ+IGRvZXMgbm90IGNhbGwKLTxjb21wdXRlcm91dHB1dD5mY2xvc2U8L2NvbXB1dGVyb3V0cHV0PiBvbiB0aGUgdW5kZXJseWluZyBmaWxlCi1oYW5kbGUsIHNvIHlvdSBzaG91bGQgZG8gdGhhdCB5b3Vyc2VsZiBpZiBhcHByb3ByaWF0ZS4KLTxjb21wdXRlcm91dHB1dD5CWjJfYnpSZWFkQ2xvc2U8L2NvbXB1dGVyb3V0cHV0PiBzaG91bGQgYmUgY2FsbGVkCi10byBjbGVhbiB1cCBhZnRlciBhbGwgZXJyb3Igc2l0dWF0aW9ucy48L3BhcmE+Ci0KLTxwYXJhPlBvc3NpYmxlIGFzc2lnbm1lbnRzIHRvCi08Y29tcHV0ZXJvdXRwdXQ+YnplcnJvcjwvY29tcHV0ZXJvdXRwdXQ+OjwvcGFyYT4KLQotPHByb2dyYW1saXN0aW5nPgotQlpfU0VRVUVOQ0VfRVJST1IKLSAgaWYgYiB3YXMgb3BlbmVkIHdpdGggQloyX2J6T3BlbldyaXRlCi1CWl9PSwotICBvdGhlcndpc2UKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1ub25lCi08L3Byb2dyYW1saXN0aW5nPgotCi08L3NlY3QyPgotCi0KLTxzZWN0MiBpZD0iYnp3cml0ZW9wZW4iIHhyZWZsYWJlbD0iQloyX2J6V3JpdGVPcGVuIj4KLTx0aXRsZT48Y29tcHV0ZXJvdXRwdXQ+QloyX2J6V3JpdGVPcGVuPC9jb21wdXRlcm91dHB1dD48L3RpdGxlPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1CWkZJTEUgKkJaMl9ieldyaXRlT3BlbiggaW50ICpiemVycm9yLCBGSUxFICpmLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxvY2tTaXplMTAwaywgaW50IHZlcmJvc2l0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd29ya0ZhY3RvciApOwotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+UHJlcGFyZSB0byB3cml0ZSBjb21wcmVzc2VkIGRhdGEgdG8gZmlsZSBoYW5kbGUKLTxjb21wdXRlcm91dHB1dD5mPC9jb21wdXRlcm91dHB1dD4uCi08Y29tcHV0ZXJvdXRwdXQ+ZjwvY29tcHV0ZXJvdXRwdXQ+IHNob3VsZCByZWZlciB0byBhIGZpbGUgd2hpY2gKLWhhcyBiZWVuIG9wZW5lZCBmb3Igd3JpdGluZywgYW5kIGZvciB3aGljaCB0aGUgZXJyb3IgaW5kaWNhdG9yCi0oPGNvbXB1dGVyb3V0cHV0PmZlcnJvcihmKTwvY29tcHV0ZXJvdXRwdXQ+KWlzIG5vdCBzZXQuPC9wYXJhPgotCi08cGFyYT5Gb3IgdGhlIG1lYW5pbmcgb2YgcGFyYW1ldGVycwotPGNvbXB1dGVyb3V0cHV0PmJsb2NrU2l6ZTEwMGs8L2NvbXB1dGVyb3V0cHV0PiwKLTxjb21wdXRlcm91dHB1dD52ZXJib3NpdHk8L2NvbXB1dGVyb3V0cHV0PiBhbmQKLTxjb21wdXRlcm91dHB1dD53b3JrRmFjdG9yPC9jb21wdXRlcm91dHB1dD4sIHNlZQotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzSW5pdDwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+QWxsIHJlcXVpcmVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYXQgdGhpcyBzdGFnZSwgc28gaWYgdGhlCi1jYWxsIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHksCi08Y29tcHV0ZXJvdXRwdXQ+QlpfTUVNX0VSUk9SPC9jb21wdXRlcm91dHB1dD4gY2Fubm90IGJlIHNpZ25hbGxlZAotYnkgYSBzdWJzZXF1ZW50IGNhbGwgdG8KLTxjb21wdXRlcm91dHB1dD5CWjJfYnpXcml0ZTwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+UG9zc2libGUgYXNzaWdubWVudHMgdG8KLTxjb21wdXRlcm91dHB1dD5iemVycm9yPC9jb21wdXRlcm91dHB1dD46PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1CWl9DT05GSUdfRVJST1IKLSAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCi1CWl9QQVJBTV9FUlJPUgotICBpZiBmIGlzIE5VTEwKLSAgb3IgYmxvY2tTaXplMTAwayA8IDEgb3IgYmxvY2tTaXplMTAwayA+IDkKLUJaX0lPX0VSUk9SCi0gIGlmIGZlcnJvcihmKSBpcyBub256ZXJvCi1CWl9NRU1fRVJST1IKLSAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSBpcyBhdmFpbGFibGUKLUJaX09LCi0gIG90aGVyd2lzZQotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLVBvaW50ZXIgdG8gYW4gYWJzdHJhY3QgQlpGSUxFCi0gIGlmIGJ6ZXJyb3IgaXMgQlpfT0sKLU5VTEwKLSAgb3RoZXJ3aXNlCi08L3Byb2dyYW1saXN0aW5nPgotCi08cGFyYT5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcGFyYT4KLQotPHByb2dyYW1saXN0aW5nPgotQloyX2J6V3JpdGUKLSAgaWYgYnplcnJvciBpcyBCWl9PSwotICAoeW91IGNvdWxkIGdvIGRpcmVjdGx5IHRvIEJaMl9ieldyaXRlQ2xvc2UsIGJ1dCB0aGlzIHdvdWxkIGJlIHByZXR0eSBwb2ludGxlc3MpCi1CWjJfYnpXcml0ZUNsb3NlCi0gIG90aGVyd2lzZQotPC9wcm9ncmFtbGlzdGluZz4KLQotPC9zZWN0Mj4KLQotCi08c2VjdDIgaWQ9ImJ6d3JpdGUiIHhyZWZsYWJlbD0iQloyX2J6V3JpdGUiPgotPHRpdGxlPjxjb21wdXRlcm91dHB1dD5CWjJfYnpXcml0ZTwvY29tcHV0ZXJvdXRwdXQ+PC90aXRsZT4KLQotPHByb2dyYW1saXN0aW5nPgotdm9pZCBCWjJfYnpXcml0ZSAoIGludCAqYnplcnJvciwgQlpGSUxFICpiLCB2b2lkICpidWYsIGludCBsZW4gKTsKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPkFic29yYnMgPGNvbXB1dGVyb3V0cHV0PmxlbjwvY29tcHV0ZXJvdXRwdXQ+IGJ5dGVzIGZyb20gdGhlCi1idWZmZXIgPGNvbXB1dGVyb3V0cHV0PmJ1ZjwvY29tcHV0ZXJvdXRwdXQ+LCBldmVudHVhbGx5IHRvIGJlCi1jb21wcmVzc2VkIGFuZCB3cml0dGVuIHRvIHRoZSBmaWxlLjwvcGFyYT4KLQotPHBhcmE+UG9zc2libGUgYXNzaWdubWVudHMgdG8KLTxjb21wdXRlcm91dHB1dD5iemVycm9yPC9jb21wdXRlcm91dHB1dD46PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1CWl9QQVJBTV9FUlJPUgotICBpZiBiIGlzIE5VTEwgb3IgYnVmIGlzIE5VTEwgb3IgbGVuIDwgMAotQlpfU0VRVUVOQ0VfRVJST1IKLSAgaWYgYiB3YXMgb3BlbmVkIHdpdGggQloyX2J6UmVhZE9wZW4KLUJaX0lPX0VSUk9SCi0gIGlmIHRoZXJlIGlzIGFuIGVycm9yIHdyaXRpbmcgdGhlIGNvbXByZXNzZWQgZmlsZS4KLUJaX09LCi0gIG90aGVyd2lzZQotPC9wcm9ncmFtbGlzdGluZz4KLQotPC9zZWN0Mj4KLQotCi08c2VjdDIgaWQ9ImJ6d3JpdGVjbG9zZSIgeHJlZmxhYmVsPSJCWjJfYnpXcml0ZUNsb3NlIj4KLTx0aXRsZT48Y29tcHV0ZXJvdXRwdXQ+QloyX2J6V3JpdGVDbG9zZTwvY29tcHV0ZXJvdXRwdXQ+PC90aXRsZT4KLQotPHByb2dyYW1saXN0aW5nPgotdm9pZCBCWjJfYnpXcml0ZUNsb3NlKCBpbnQgKmJ6ZXJyb3IsIEJaRklMRSogZiwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50IGFiYW5kb24sCi0gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogbmJ5dGVzX2luLAotICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIG5ieXRlc19vdXQgKTsKLQotdm9pZCBCWjJfYnpXcml0ZUNsb3NlNjQoIGludCAqYnplcnJvciwgQlpGSUxFKiBmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhYmFuZG9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogbmJ5dGVzX2luX2xvMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBuYnl0ZXNfaW5faGkzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIG5ieXRlc19vdXRfbG8zMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIG5ieXRlc19vdXRfaGkzMiApOwotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+Q29tcHJlc3NlcyBhbmQgZmx1c2hlcyB0byB0aGUgY29tcHJlc3NlZCBmaWxlIGFsbCBkYXRhIHNvCi1mYXIgc3VwcGxpZWQgYnkgPGNvbXB1dGVyb3V0cHV0PkJaMl9ieldyaXRlPC9jb21wdXRlcm91dHB1dD4uCi1UaGUgbG9naWNhbCBlbmQtb2Ytc3RyZWFtIG1hcmtlcnMgYXJlIGFsc28gd3JpdHRlbiwgc28gc3Vic2VxdWVudAotY2FsbHMgdG8gPGNvbXB1dGVyb3V0cHV0PkJaMl9ieldyaXRlPC9jb21wdXRlcm91dHB1dD4gYXJlCi1pbGxlZ2FsLiAgQWxsIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXByZXNzZWQgZmlsZQotPGNvbXB1dGVyb3V0cHV0PmI8L2NvbXB1dGVyb3V0cHV0PiBpcyByZWxlYXNlZC4KLTxjb21wdXRlcm91dHB1dD5mZmx1c2g8L2NvbXB1dGVyb3V0cHV0PiBpcyBjYWxsZWQgb24gdGhlCi1jb21wcmVzc2VkIGZpbGUsIGJ1dCBpdCBpcyBub3QKLTxjb21wdXRlcm91dHB1dD5mY2xvc2U8L2NvbXB1dGVyb3V0cHV0PidkLjwvcGFyYT4KLQotPHBhcmE+SWYgPGNvbXB1dGVyb3V0cHV0PkJaMl9ieldyaXRlQ2xvc2U8L2NvbXB1dGVyb3V0cHV0PiBpcwotY2FsbGVkIHRvIGNsZWFuIHVwIGFmdGVyIGFuIGVycm9yLCB0aGUgb25seSBhY3Rpb24gaXMgdG8gcmVsZWFzZQotdGhlIG1lbW9yeS4gIFRoZSBsaWJyYXJ5IHJlY29yZHMgdGhlIGVycm9yIGNvZGVzIGlzc3VlZCBieQotcHJldmlvdXMgY2FsbHMsIHNvIHRoaXMgc2l0dWF0aW9uIHdpbGwgYmUgZGV0ZWN0ZWQgYXV0b21hdGljYWxseS4KLVRoZXJlIGlzIG5vIGF0dGVtcHQgdG8gY29tcGxldGUgdGhlIGNvbXByZXNzaW9uIG9wZXJhdGlvbiwgbm9yIHRvCi08Y29tcHV0ZXJvdXRwdXQ+ZmZsdXNoPC9jb21wdXRlcm91dHB1dD4gdGhlIGNvbXByZXNzZWQgZmlsZS4gIFlvdQotY2FuIGZvcmNlIHRoaXMgYmVoYXZpb3VyIHRvIGhhcHBlbiBldmVuIGluIHRoZSBjYXNlIG9mIG5vIGVycm9yLAotYnkgcGFzc2luZyBhIG5vbnplcm8gdmFsdWUgdG8KLTxjb21wdXRlcm91dHB1dD5hYmFuZG9uPC9jb21wdXRlcm91dHB1dD4uPC9wYXJhPgotCi08cGFyYT5JZiA8Y29tcHV0ZXJvdXRwdXQ+bmJ5dGVzX2luPC9jb21wdXRlcm91dHB1dD4gaXMgbm9uLW51bGwsCi08Y29tcHV0ZXJvdXRwdXQ+Km5ieXRlc19pbjwvY29tcHV0ZXJvdXRwdXQ+IHdpbGwgYmUgc2V0IHRvIGJlIHRoZQotdG90YWwgdm9sdW1lIG9mIHVuY29tcHJlc3NlZCBkYXRhIGhhbmRsZWQuICBTaW1pbGFybHksCi08Y29tcHV0ZXJvdXRwdXQ+bmJ5dGVzX291dDwvY29tcHV0ZXJvdXRwdXQ+IHdpbGwgYmUgc2V0IHRvIHRoZQotdG90YWwgdm9sdW1lIG9mIGNvbXByZXNzZWQgZGF0YSB3cml0dGVuLiAgRm9yIGNvbXBhdGliaWxpdHkgd2l0aAotb2xkZXIgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnksCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6V3JpdGVDbG9zZTwvY29tcHV0ZXJvdXRwdXQ+IG9ubHkgeWllbGRzIHRoZQotbG93ZXIgMzIgYml0cyBvZiB0aGVzZSBjb3VudHMuICBVc2UKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpXcml0ZUNsb3NlNjQ8L2NvbXB1dGVyb3V0cHV0PiBpZiB5b3Ugd2FudAotdGhlIGZ1bGwgNjQgYml0IGNvdW50cy4gIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG90aGVyd2lzZQotYWJzb2x1dGVseSBpZGVudGljYWwuPC9wYXJhPgotCi08cGFyYT5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwotPGNvbXB1dGVyb3V0cHV0PmJ6ZXJyb3I8L2NvbXB1dGVyb3V0cHV0Pjo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLUJaX1NFUVVFTkNFX0VSUk9SCi0gIGlmIGIgd2FzIG9wZW5lZCB3aXRoIEJaMl9ielJlYWRPcGVuCi1CWl9JT19FUlJPUgotICBpZiB0aGVyZSBpcyBhbiBlcnJvciB3cml0aW5nIHRoZSBjb21wcmVzc2VkIGZpbGUKLUJaX09LCi0gIG90aGVyd2lzZQotPC9wcm9ncmFtbGlzdGluZz4KLQotPC9zZWN0Mj4KLQotCi08c2VjdDIgaWQ9ImVtYmVkIiB4cmVmbGFiZWw9IkhhbmRsaW5nIGVtYmVkZGVkIGNvbXByZXNzZWQgZGF0YSBzdHJlYW1zIj4KLTx0aXRsZT5IYW5kbGluZyBlbWJlZGRlZCBjb21wcmVzc2VkIGRhdGEgc3RyZWFtczwvdGl0bGU+Ci0KLTxwYXJhPlRoZSBoaWdoLWxldmVsIGxpYnJhcnkgZmFjaWxpdGF0ZXMgdXNlIG9mCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBkYXRhIHN0cmVhbXMgd2hpY2ggZm9ybQotc29tZSBwYXJ0IG9mIGEgc3Vycm91bmRpbmcsIGxhcmdlciBkYXRhIHN0cmVhbS48L3BhcmE+Ci0KLTxpdGVtaXplZGxpc3QgbWFyaz0nYnVsbGV0Jz4KLQotIDxsaXN0aXRlbT48cGFyYT5Gb3Igd3JpdGluZywgdGhlIGxpYnJhcnkgdGFrZXMgYW4gb3BlbiBmaWxlIGhhbmRsZSwKLSAgd3JpdGVzIGNvbXByZXNzZWQgZGF0YSB0byBpdCwKLSAgPGNvbXB1dGVyb3V0cHV0PmZmbHVzaDwvY29tcHV0ZXJvdXRwdXQ+ZXMgaXQgYnV0IGRvZXMgbm90Ci0gIDxjb21wdXRlcm91dHB1dD5mY2xvc2U8L2NvbXB1dGVyb3V0cHV0PiBpdC4gIFRoZSBjYWxsaW5nCi0gIGFwcGxpY2F0aW9uIGNhbiB3cml0ZSBpdHMgb3duIGRhdGEgYmVmb3JlIGFuZCBhZnRlciB0aGUKLSAgY29tcHJlc3NlZCBkYXRhIHN0cmVhbSwgdXNpbmcgdGhhdCBzYW1lIGZpbGUgaGFuZGxlLjwvcGFyYT48L2xpc3RpdGVtPgotCi0gPGxpc3RpdGVtPjxwYXJhPlJlYWRpbmcgaXMgbW9yZSBjb21wbGV4LCBhbmQgdGhlIGZhY2lsaXRpZXMgYXJlIG5vdCBhcwotICBnZW5lcmFsIGFzIHRoZXkgY291bGQgYmUgc2luY2UgZ2VuZXJhbGl0eSBpcyBoYXJkIHRvIHJlY29uY2lsZQotICB3aXRoIGVmZmljaWVuY3kuICA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZDwvY29tcHV0ZXJvdXRwdXQ+Ci0gIHJlYWRzIGZyb20gdGhlIGNvbXByZXNzZWQgZmlsZSBpbiBibG9ja3Mgb2Ygc2l6ZQotICA8Y29tcHV0ZXJvdXRwdXQ+QlpfTUFYX1VOVVNFRDwvY29tcHV0ZXJvdXRwdXQ+IGJ5dGVzLCBhbmQgaW4KLSAgZG9pbmcgc28gcHJvYmFibHkgd2lsbCBvdmVyc2hvb3QgdGhlIGxvZ2ljYWwgZW5kIG9mIGNvbXByZXNzZWQKLSAgc3RyZWFtLiAgVG8gcmVjb3ZlciB0aGlzIGRhdGEgb25jZSBkZWNvbXByZXNzaW9uIGhhcyBlbmRlZCwKLSAgY2FsbCA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZEdldFVudXNlZDwvY29tcHV0ZXJvdXRwdXQ+IGFmdGVyCi0gIHRoZSBsYXN0IGNhbGwgb2YgPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWQ8L2NvbXB1dGVyb3V0cHV0PgotICAodGhlIG9uZSByZXR1cm5pbmcKLSAgPGNvbXB1dGVyb3V0cHV0PkJaX1NUUkVBTV9FTkQ8L2NvbXB1dGVyb3V0cHV0PikgYnV0IGJlZm9yZQotICBjYWxsaW5nCi0gIDxjb21wdXRlcm91dHB1dD5CWjJfYnpSZWFkQ2xvc2U8L2NvbXB1dGVyb3V0cHV0Pi48L3BhcmE+PC9saXN0aXRlbT4KLQotPC9pdGVtaXplZGxpc3Q+Ci0KLTxwYXJhPlRoaXMgbWVjaGFuaXNtIG1ha2VzIGl0IGVhc3kgdG8gZGVjb21wcmVzcyBtdWx0aXBsZQotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gc3RyZWFtcyBwbGFjZWQgZW5kLXRvLWVuZC4KLUFzIHRoZSBlbmQgb2Ygb25lIHN0cmVhbSwgd2hlbgotPGNvbXB1dGVyb3V0cHV0PkJaMl9ielJlYWQ8L2NvbXB1dGVyb3V0cHV0PiByZXR1cm5zCi08Y29tcHV0ZXJvdXRwdXQ+QlpfU1RSRUFNX0VORDwvY29tcHV0ZXJvdXRwdXQ+LCBjYWxsCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZEdldFVudXNlZDwvY29tcHV0ZXJvdXRwdXQ+IHRvIGNvbGxlY3QKLXRoZSB1bnVzZWQgZGF0YSAoY29weSBpdCBpbnRvIHlvdXIgb3duIGJ1ZmZlciBzb21ld2hlcmUpLiAgVGhhdAotZGF0YSBmb3JtcyB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY29tcHJlc3NlZCBzdHJlYW0uICBUbyBzdGFydAotdW5jb21wcmVzc2luZyB0aGF0IG5leHQgc3RyZWFtLCBjYWxsCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6UmVhZE9wZW48L2NvbXB1dGVyb3V0cHV0PiBhZ2FpbiwgZmVlZGluZyBpbgotdGhlIHVudXNlZCBkYXRhIHZpYSB0aGUgPGNvbXB1dGVyb3V0cHV0PnVudXNlZDwvY29tcHV0ZXJvdXRwdXQ+IC8KLTxjb21wdXRlcm91dHB1dD5uVW51c2VkPC9jb21wdXRlcm91dHB1dD4gcGFyYW1ldGVycy4gIEtlZXAgZG9pbmcKLXRoaXMgdW50aWwgPGNvbXB1dGVyb3V0cHV0PkJaX1NUUkVBTV9FTkQ8L2NvbXB1dGVyb3V0cHV0PiByZXR1cm4KLWNvaW5jaWRlcyB3aXRoIHRoZSBwaHlzaWNhbCBlbmQgb2YgZmlsZQotKDxjb21wdXRlcm91dHB1dD5mZW9mKGYpPC9jb21wdXRlcm91dHB1dD4pLiAgSW4gdGhpcyBzaXR1YXRpb24KLTxjb21wdXRlcm91dHB1dD5CWjJfYnpSZWFkR2V0VW51c2VkPC9jb21wdXRlcm91dHB1dD4gd2lsbCBvZgotY291cnNlIHJldHVybiBubyBkYXRhLjwvcGFyYT4KLQotPHBhcmE+VGhpcyBzaG91bGQgZ2l2ZSBzb21lIGZlZWwgZm9yIGhvdyB0aGUgaGlnaC1sZXZlbCBpbnRlcmZhY2UKLWNhbiBiZSB1c2VkLiAgSWYgeW91IHJlcXVpcmUgZXh0cmEgZmxleGliaWxpdHksIHlvdSdsbCBoYXZlIHRvCi1iaXRlIHRoZSBidWxsZXQgYW5kIGdldCB0byBncmlwcyB3aXRoIHRoZSBsb3ctbGV2ZWwKLWludGVyZmFjZS48L3BhcmE+Ci0KLTwvc2VjdDI+Ci0KLQotPHNlY3QyIGlkPSJzdGQtcmR3ciIgeHJlZmxhYmVsPSJTdGFuZGFyZCBmaWxlLXJlYWRpbmcvd3JpdGluZyBjb2RlIj4KLTx0aXRsZT5TdGFuZGFyZCBmaWxlLXJlYWRpbmcvd3JpdGluZyBjb2RlPC90aXRsZT4KLQotPHBhcmE+SGVyZSdzIGhvdyB5b3UnZCB3cml0ZSBkYXRhIHRvIGEgY29tcHJlc3NlZCBmaWxlOjwvcGFyYT4KLQotPHByb2dyYW1saXN0aW5nPgotRklMRSogICBmOwotQlpGSUxFKiBiOwotaW50ICAgICBuQnVmOwotY2hhciAgICBidWZbIC8qIHdoYXRldmVyIHNpemUgeW91IGxpa2UgKi8gXTsKLWludCAgICAgYnplcnJvcjsKLWludCAgICAgbldyaXR0ZW47Ci0KLWYgPSBmb3BlbiAoICJteWZpbGUuYnoyIiwgInciICk7Ci1pZiAoICFmICkgewotIC8qIGhhbmRsZSBlcnJvciAqLwotfQotYiA9IEJaMl9ieldyaXRlT3BlbiggJmJ6ZXJyb3IsIGYsIDkgKTsKLWlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gQloyX2J6V3JpdGVDbG9zZSAoIGIgKTsKLSAvKiBoYW5kbGUgZXJyb3IgKi8KLX0KLQotd2hpbGUgKCAvKiBjb25kaXRpb24gKi8gKSB7Ci0gLyogZ2V0IGRhdGEgdG8gd3JpdGUgaW50byBidWYsIGFuZCBzZXQgbkJ1ZiBhcHByb3ByaWF0ZWx5ICovCi0gbldyaXR0ZW4gPSBCWjJfYnpXcml0ZSAoICZiemVycm9yLCBiLCBidWYsIG5CdWYgKTsKLSBpZiAoYnplcnJvciA9PSBCWl9JT19FUlJPUikgeyAKLSAgIEJaMl9ieldyaXRlQ2xvc2UgKCAmYnplcnJvciwgYiApOwotICAgLyogaGFuZGxlIGVycm9yICovCi0gfQotfQotCi1CWjJfYnpXcml0ZUNsb3NlKCAmYnplcnJvciwgYiApOwotaWYgKGJ6ZXJyb3IgPT0gQlpfSU9fRVJST1IpIHsKLSAvKiBoYW5kbGUgZXJyb3IgKi8KLX0KLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPkFuZCB0byByZWFkIGZyb20gYSBjb21wcmVzc2VkIGZpbGU6PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1GSUxFKiAgIGY7Ci1CWkZJTEUqIGI7Ci1pbnQgICAgIG5CdWY7Ci1jaGFyICAgIGJ1ZlsgLyogd2hhdGV2ZXIgc2l6ZSB5b3UgbGlrZSAqLyBdOwotaW50ICAgICBiemVycm9yOwotaW50ICAgICBuV3JpdHRlbjsKLQotZiA9IGZvcGVuICggIm15ZmlsZS5iejIiLCAiciIgKTsKLWlmICggIWYgKSB7Ci0gIC8qIGhhbmRsZSBlcnJvciAqLwotfQotYiA9IEJaMl9ielJlYWRPcGVuICggJmJ6ZXJyb3IsIGYsIDAsIE5VTEwsIDAgKTsKLWlmICggYnplcnJvciAhPSBCWl9PSyApIHsKLSAgQloyX2J6UmVhZENsb3NlICggJmJ6ZXJyb3IsIGIgKTsKLSAgLyogaGFuZGxlIGVycm9yICovCi19Ci0KLWJ6ZXJyb3IgPSBCWl9PSzsKLXdoaWxlICggYnplcnJvciA9PSBCWl9PSyAmJiAvKiBhcmJpdHJhcnkgb3RoZXIgY29uZGl0aW9ucyAqLykgewotICBuQnVmID0gQloyX2J6UmVhZCAoICZiemVycm9yLCBiLCBidWYsIC8qIHNpemUgb2YgYnVmICovICk7Ci0gIGlmICggYnplcnJvciA9PSBCWl9PSyApIHsKLSAgICAvKiBkbyBzb21ldGhpbmcgd2l0aCBidWZbMCAuLiBuQnVmLTFdICovCi0gIH0KLX0KLWlmICggYnplcnJvciAhPSBCWl9TVFJFQU1fRU5EICkgewotICAgQloyX2J6UmVhZENsb3NlICggJmJ6ZXJyb3IsIGIgKTsKLSAgIC8qIGhhbmRsZSBlcnJvciAqLwotfSBlbHNlIHsKLSAgIEJaMl9ielJlYWRDbG9zZSAoICZiemVycm9yLCBiICk7Ci19Ci08L3Byb2dyYW1saXN0aW5nPgotCi08L3NlY3QyPgotCi08L3NlY3QxPgotCi0KLTxzZWN0MSBpZD0idXRpbC1mbnMiIHhyZWZsYWJlbD0iVXRpbGl0eSBmdW5jdGlvbnMiPgotPHRpdGxlPlV0aWxpdHkgZnVuY3Rpb25zPC90aXRsZT4KLQotCi08c2VjdDIgaWQ9ImJ6YnVmZnRvYnVmZmNvbXByZXNzIiB4cmVmbGFiZWw9IkJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzcyI+Ci08dGl0bGU+PGNvbXB1dGVyb3V0cHV0PkJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+PC90aXRsZT4KLQotPHByb2dyYW1saXN0aW5nPgotaW50IEJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzcyggY2hhciogICAgICAgICBkZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBkZXN0TGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogICAgICAgICBzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgIHNvdXJjZUxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgYmxvY2tTaXplMTAwaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgdmVyYm9zaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICB3b3JrRmFjdG9yICk7Ci08L3Byb2dyYW1saXN0aW5nPgotCi08cGFyYT5BdHRlbXB0cyB0byBjb21wcmVzcyB0aGUgZGF0YSBpbiA8Y29tcHV0ZXJvdXRwdXQ+c291cmNlWzAKLS4uIHNvdXJjZUxlbi0xXTwvY29tcHV0ZXJvdXRwdXQ+IGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwKLTxjb21wdXRlcm91dHB1dD5kZXN0WzAgLi4gKmRlc3RMZW4tMV08L2NvbXB1dGVyb3V0cHV0Pi4gIElmIHRoZQotZGVzdGluYXRpb24gYnVmZmVyIGlzIGJpZyBlbm91Z2gsCi08Y29tcHV0ZXJvdXRwdXQ+KmRlc3RMZW48L2NvbXB1dGVyb3V0cHV0PiBpcyBzZXQgdG8gdGhlIHNpemUgb2YKLXRoZSBjb21wcmVzc2VkIGRhdGEsIGFuZCA8Y29tcHV0ZXJvdXRwdXQ+QlpfT0s8L2NvbXB1dGVyb3V0cHV0PgotaXMgcmV0dXJuZWQuICBJZiB0aGUgY29tcHJlc3NlZCBkYXRhIHdvbid0IGZpdCwKLTxjb21wdXRlcm91dHB1dD4qZGVzdExlbjwvY29tcHV0ZXJvdXRwdXQ+IGlzIHVuY2hhbmdlZCwgYW5kCi08Y29tcHV0ZXJvdXRwdXQ+QlpfT1VUQlVGRl9GVUxMPC9jb21wdXRlcm91dHB1dD4gaXMKLXJldHVybmVkLjwvcGFyYT4KLQotPHBhcmE+Q29tcHJlc3Npb24gaW4gdGhpcyBtYW5uZXIgaXMgYSBvbmUtc2hvdCBldmVudCwgZG9uZSB3aXRoIGEKLXNpbmdsZSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24uICBUaGUgcmVzdWx0aW5nIGNvbXByZXNzZWQgZGF0YSBpcyBhCi1jb21wbGV0ZSA8Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBmb3JtYXQgZGF0YQotc3RyZWFtLiAgVGhlcmUgaXMgbm8gbWVjaGFuaXNtIGZvciBtYWtpbmcgYWRkaXRpb25hbCBjYWxscyB0bwotcHJvdmlkZSBleHRyYSBpbnB1dCBkYXRhLiAgSWYgeW91IHdhbnQgdGhhdCBraW5kIG9mIG1lY2hhbmlzbSwKLXVzZSB0aGUgbG93LWxldmVsIGludGVyZmFjZS48L3BhcmE+Ci0KLTxwYXJhPkZvciB0aGUgbWVhbmluZyBvZiBwYXJhbWV0ZXJzCi08Y29tcHV0ZXJvdXRwdXQ+YmxvY2tTaXplMTAwazwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PnZlcmJvc2l0eTwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotPGNvbXB1dGVyb3V0cHV0PndvcmtGYWN0b3I8L2NvbXB1dGVyb3V0cHV0Piwgc2VlCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Q29tcHJlc3NJbml0PC9jb21wdXRlcm91dHB1dD4uPC9wYXJhPgotCi08cGFyYT5UbyBndWFyYW50ZWUgdGhhdCB0aGUgY29tcHJlc3NlZCBkYXRhIHdpbGwgZml0IGluIGl0cwotYnVmZmVyLCBhbGxvY2F0ZSBhbiBvdXRwdXQgYnVmZmVyIG9mIHNpemUgMSUgbGFyZ2VyIHRoYW4gdGhlCi11bmNvbXByZXNzZWQgZGF0YSwgcGx1cyBzaXggaHVuZHJlZCBleHRyYSBieXRlcy48L3BhcmE+Ci0KLTxwYXJhPjxjb21wdXRlcm91dHB1dD5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+Ci13aWxsIG5vdCB3cml0ZSBkYXRhIGF0IG9yIGJleW9uZAotPGNvbXB1dGVyb3V0cHV0PmRlc3RbKmRlc3RMZW5dPC9jb21wdXRlcm91dHB1dD4sIGV2ZW4gaW4gY2FzZSBvZgotYnVmZmVyIG92ZXJmbG93LjwvcGFyYT4KLQotPHBhcmE+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLUJaX0NPTkZJR19FUlJPUgotICBpZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBtaXMtY29tcGlsZWQKLUJaX1BBUkFNX0VSUk9SCi0gIGlmIGRlc3QgaXMgTlVMTCBvciBkZXN0TGVuIGlzIE5VTEwKLSAgb3IgYmxvY2tTaXplMTAwayA8IDEgb3IgYmxvY2tTaXplMTAwayA+IDkKLSAgb3IgdmVyYm9zaXR5IDwgMCBvciB2ZXJib3NpdHkgPiA0Ci0gIG9yIHdvcmtGYWN0b3IgPCAwIG9yIHdvcmtGYWN0b3IgPiAyNTAKLUJaX01FTV9FUlJPUgotICBpZiBpbnN1ZmZpY2llbnQgbWVtb3J5IGlzIGF2YWlsYWJsZSAKLUJaX09VVEJVRkZfRlVMTAotICBpZiB0aGUgc2l6ZSBvZiB0aGUgY29tcHJlc3NlZCBkYXRhIGV4Y2VlZHMgKmRlc3RMZW4KLUJaX09LCi0gIG90aGVyd2lzZQotPC9wcm9ncmFtbGlzdGluZz4KLQotPC9zZWN0Mj4KLQotCi08c2VjdDIgaWQ9ImJ6YnVmZnRvYnVmZmRlY29tcHJlc3MiIHhyZWZsYWJlbD0iQloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3MiPgotPHRpdGxlPjxjb21wdXRlcm91dHB1dD5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+PC90aXRsZT4KLQotPHByb2dyYW1saXN0aW5nPgotaW50IEJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzKCBjaGFyKiAgICAgICAgIGRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogZGVzdExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogICAgICAgICBzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAgc291cmNlTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgIHNtYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgIHZlcmJvc2l0eSApOwotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+QXR0ZW1wdHMgdG8gZGVjb21wcmVzcyB0aGUgZGF0YSBpbiA8Y29tcHV0ZXJvdXRwdXQ+c291cmNlWzAKLS4uIHNvdXJjZUxlbi0xXTwvY29tcHV0ZXJvdXRwdXQ+IGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwKLTxjb21wdXRlcm91dHB1dD5kZXN0WzAgLi4gKmRlc3RMZW4tMV08L2NvbXB1dGVyb3V0cHV0Pi4gIElmIHRoZQotZGVzdGluYXRpb24gYnVmZmVyIGlzIGJpZyBlbm91Z2gsCi08Y29tcHV0ZXJvdXRwdXQ+KmRlc3RMZW48L2NvbXB1dGVyb3V0cHV0PiBpcyBzZXQgdG8gdGhlIHNpemUgb2YKLXRoZSB1bmNvbXByZXNzZWQgZGF0YSwgYW5kIDxjb21wdXRlcm91dHB1dD5CWl9PSzwvY29tcHV0ZXJvdXRwdXQ+Ci1pcyByZXR1cm5lZC4gIElmIHRoZSBjb21wcmVzc2VkIGRhdGEgd29uJ3QgZml0LAotPGNvbXB1dGVyb3V0cHV0PipkZXN0TGVuPC9jb21wdXRlcm91dHB1dD4gaXMgdW5jaGFuZ2VkLCBhbmQKLTxjb21wdXRlcm91dHB1dD5CWl9PVVRCVUZGX0ZVTEw8L2NvbXB1dGVyb3V0cHV0PiBpcwotcmV0dXJuZWQuPC9wYXJhPgotCi08cGFyYT48Y29tcHV0ZXJvdXRwdXQ+c291cmNlPC9jb21wdXRlcm91dHB1dD4gaXMgYXNzdW1lZCB0byBob2xkCi1hIGNvbXBsZXRlIDxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+IGZvcm1hdCBkYXRhCi1zdHJlYW0uCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiB0cmllcwotdG8gZGVjb21wcmVzcyB0aGUgZW50aXJldHkgb2YgdGhlIHN0cmVhbSBpbnRvIHRoZSBvdXRwdXQKLWJ1ZmZlci48L3BhcmE+Ci0KLTxwYXJhPkZvciB0aGUgbWVhbmluZyBvZiBwYXJhbWV0ZXJzCi08Y29tcHV0ZXJvdXRwdXQ+c21hbGw8L2NvbXB1dGVyb3V0cHV0PiBhbmQKLTxjb21wdXRlcm91dHB1dD52ZXJib3NpdHk8L2NvbXB1dGVyb3V0cHV0Piwgc2VlCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvbXB1dGVyb3V0cHV0Pi48L3BhcmE+Ci0KLTxwYXJhPkJlY2F1c2UgdGhlIGNvbXByZXNzaW9uIHJhdGlvIG9mIHRoZSBjb21wcmVzc2VkIGRhdGEgY2Fubm90Ci1iZSBrbm93biBpbiBhZHZhbmNlLCB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBndWFyYW50ZWUgdGhhdCB0aGUKLW91dHB1dCBidWZmZXIgd2lsbCBiZSBiaWcgZW5vdWdoLiAgWW91IG1heSBvZiBjb3Vyc2UgbWFrZQotYXJyYW5nZW1lbnRzIGluIHlvdXIgY29kZSB0byByZWNvcmQgdGhlIHNpemUgb2YgdGhlIHVuY29tcHJlc3NlZAotZGF0YSwgYnV0IHN1Y2ggYSBtZWNoYW5pc20gaXMgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzCi1saWJyYXJ5LjwvcGFyYT4KLQotPHBhcmE+PGNvbXB1dGVyb3V0cHV0PkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb21wdXRlcm91dHB1dD4KLXdpbGwgbm90IHdyaXRlIGRhdGEgYXQgb3IgYmV5b25kCi08Y29tcHV0ZXJvdXRwdXQ+ZGVzdFsqZGVzdExlbl08L2NvbXB1dGVyb3V0cHV0PiwgZXZlbiBpbiBjYXNlIG9mCi1idWZmZXIgb3ZlcmZsb3cuPC9wYXJhPgotCi08cGFyYT5Qb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcGFyYT4KLQotPHByb2dyYW1saXN0aW5nPgotQlpfQ09ORklHX0VSUk9SCi0gIGlmIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIG1pcy1jb21waWxlZAotQlpfUEFSQU1fRVJST1IKLSAgaWYgZGVzdCBpcyBOVUxMIG9yIGRlc3RMZW4gaXMgTlVMTAotICBvciBzbWFsbCAhPSAwICYmIHNtYWxsICE9IDEKLSAgb3IgdmVyYm9zaXR5IDwgMCBvciB2ZXJib3NpdHkgPiA0Ci1CWl9NRU1fRVJST1IKLSAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSBpcyBhdmFpbGFibGUgCi1CWl9PVVRCVUZGX0ZVTEwKLSAgaWYgdGhlIHNpemUgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBleGNlZWRzICpkZXN0TGVuCi1CWl9EQVRBX0VSUk9SCi0gIGlmIGEgZGF0YSBpbnRlZ3JpdHkgZXJyb3Igd2FzIGRldGVjdGVkIGluIHRoZSBjb21wcmVzc2VkIGRhdGEKLUJaX0RBVEFfRVJST1JfTUFHSUMKLSAgaWYgdGhlIGNvbXByZXNzZWQgZGF0YSBkb2Vzbid0IGJlZ2luIHdpdGggdGhlIHJpZ2h0IG1hZ2ljIGJ5dGVzCi1CWl9VTkVYUEVDVEVEX0VPRgotICBpZiB0aGUgY29tcHJlc3NlZCBkYXRhIGVuZHMgdW5leHBlY3RlZGx5Ci1CWl9PSwotICBvdGhlcndpc2UKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTwvc2VjdDI+Ci0KLTwvc2VjdDE+Ci0KLQotPHNlY3QxIGlkPSJ6bGliLWNvbXBhdCIgeHJlZmxhYmVsPSJ6bGliIGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zIj4KLTx0aXRsZT48Y29tcHV0ZXJvdXRwdXQ+emxpYjwvY29tcHV0ZXJvdXRwdXQ+IGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zPC90aXRsZT4KLQotPHBhcmE+WW9zaGlva2EgVHN1bmVvIGhhcyBjb250cmlidXRlZCBzb21lIGZ1bmN0aW9ucyB0byBnaXZlCi1iZXR0ZXIgPGNvbXB1dGVyb3V0cHV0PnpsaWI8L2NvbXB1dGVyb3V0cHV0PiBjb21wYXRpYmlsaXR5LgotVGhlc2UgZnVuY3Rpb25zIGFyZSA8Y29tcHV0ZXJvdXRwdXQ+QloyX2J6b3BlbjwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PkJaMl9ienJlYWQ8L2NvbXB1dGVyb3V0cHV0PiwKLTxjb21wdXRlcm91dHB1dD5CWjJfYnp3cml0ZTwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PkJaMl9iemZsdXNoPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Y2xvc2U8L2NvbXB1dGVyb3V0cHV0PiwKLTxjb21wdXRlcm91dHB1dD5CWjJfYnplcnJvcjwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotPGNvbXB1dGVyb3V0cHV0PkJaMl9iemxpYlZlcnNpb248L2NvbXB1dGVyb3V0cHV0Pi4gIFRoZXNlCi1mdW5jdGlvbnMgYXJlIG5vdCAoeWV0KSBvZmZpY2lhbGx5IHBhcnQgb2YgdGhlIGxpYnJhcnkuICBJZiB0aGV5Ci1icmVhaywgeW91IGdldCB0byBrZWVwIGFsbCB0aGUgcGllY2VzLiAgTmV2ZXJ0aGVsZXNzLCBJIHRoaW5rCi10aGV5IHdvcmsgb2suPC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci10eXBlZGVmIHZvaWQgQlpGSUxFOwotCi1jb25zdCBjaGFyICogQloyX2J6bGliVmVyc2lvbiAoIHZvaWQgKTsKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPlJldHVybnMgYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgbGlicmFyeSB2ZXJzaW9uLjwvcGFyYT4KLQotPHByb2dyYW1saXN0aW5nPgotQlpGSUxFICogQloyX2J6b3BlbiAgKCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlICk7Ci1CWkZJTEUgKiBCWjJfYnpkb3BlbiAoIGludCAgICAgICAgZmQsICAgIGNvbnN0IGNoYXIgKm1vZGUgKTsKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPk9wZW5zIGEgPGNvbXB1dGVyb3V0cHV0Pi5iejI8L2NvbXB1dGVyb3V0cHV0PiBmaWxlIGZvcgotcmVhZGluZyBvciB3cml0aW5nLCB1c2luZyBlaXRoZXIgaXRzIG5hbWUgb3IgYSBwcmUtZXhpc3RpbmcgZmlsZQotZGVzY3JpcHRvci4gIEFuYWxvZ291cyB0byA8Y29tcHV0ZXJvdXRwdXQ+Zm9wZW48L2NvbXB1dGVyb3V0cHV0PgotYW5kIDxjb21wdXRlcm91dHB1dD5mZG9wZW48L2NvbXB1dGVyb3V0cHV0Pi48L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLWludCBCWjJfYnpyZWFkICAoIEJaRklMRSogYiwgdm9pZCogYnVmLCBpbnQgbGVuICk7Ci1pbnQgQloyX2J6d3JpdGUgKCBCWkZJTEUqIGIsIHZvaWQqIGJ1ZiwgaW50IGxlbiApOwotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+UmVhZHMvd3JpdGVzIGRhdGEgZnJvbS90byBhIHByZXZpb3VzbHkgb3BlbmVkCi08Y29tcHV0ZXJvdXRwdXQ+QlpGSUxFPC9jb21wdXRlcm91dHB1dD4uICBBbmFsb2dvdXMgdG8KLTxjb21wdXRlcm91dHB1dD5mcmVhZDwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotPGNvbXB1dGVyb3V0cHV0PmZ3cml0ZTwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHByb2dyYW1saXN0aW5nPgotaW50ICBCWjJfYnpmbHVzaCAoIEJaRklMRSogYiApOwotdm9pZCBCWjJfYnpjbG9zZSAoIEJaRklMRSogYiApOwotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+Rmx1c2hlcy9jbG9zZXMgYSA8Y29tcHV0ZXJvdXRwdXQ+QlpGSUxFPC9jb21wdXRlcm91dHB1dD4uCi08Y29tcHV0ZXJvdXRwdXQ+QloyX2J6Zmx1c2g8L2NvbXB1dGVyb3V0cHV0PiBkb2Vzbid0IGFjdHVhbGx5IGRvCi1hbnl0aGluZy4gIEFuYWxvZ291cyB0byA8Y29tcHV0ZXJvdXRwdXQ+ZmZsdXNoPC9jb21wdXRlcm91dHB1dD4KLWFuZCA8Y29tcHV0ZXJvdXRwdXQ+ZmNsb3NlPC9jb21wdXRlcm91dHB1dD4uPC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1jb25zdCBjaGFyICogQloyX2J6ZXJyb3IgKCBCWkZJTEUgKmIsIGludCAqZXJybnVtICkKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPlJldHVybnMgYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgbW9yZSByZWNlbnQgZXJyb3Igc3RhdHVzIG9mCi08Y29tcHV0ZXJvdXRwdXQ+YjwvY29tcHV0ZXJvdXRwdXQ+LCBhbmQgYWxzbyBzZXRzCi08Y29tcHV0ZXJvdXRwdXQ+KmVycm51bTwvY29tcHV0ZXJvdXRwdXQ+IHRvIGl0cyBudW1lcmljYWwKLXZhbHVlLjwvcGFyYT4KLQotPC9zZWN0MT4KLQotCi08c2VjdDEgaWQ9InN0ZGlvLWZyZWUiIAotICAgICAgIHhyZWZsYWJlbD0iVXNpbmcgdGhlIGxpYnJhcnkgaW4gYSBzdGRpby1mcmVlIGVudmlyb25tZW50Ij4KLTx0aXRsZT5Vc2luZyB0aGUgbGlicmFyeSBpbiBhIDxjb21wdXRlcm91dHB1dD5zdGRpbzwvY29tcHV0ZXJvdXRwdXQ+LWZyZWUgZW52aXJvbm1lbnQ8L3RpdGxlPgotCi0KLTxzZWN0MiBpZD0ic3RkaW8tYnllIiB4cmVmbGFiZWw9IkdldHRpbmcgcmlkIG9mIHN0ZGlvIj4KLTx0aXRsZT5HZXR0aW5nIHJpZCBvZiA8Y29tcHV0ZXJvdXRwdXQ+c3RkaW88L2NvbXB1dGVyb3V0cHV0PjwvdGl0bGU+Ci0KLTxwYXJhPkluIGEgZGVlcGx5IGVtYmVkZGVkIGFwcGxpY2F0aW9uLCB5b3UgbWlnaHQgd2FudCB0byB1c2UKLWp1c3QgdGhlIG1lbW9yeS10by1tZW1vcnkgZnVuY3Rpb25zLiAgWW91IGNhbiBkbyB0aGlzCi1jb252ZW5pZW50bHkgYnkgY29tcGlsaW5nIHRoZSBsaWJyYXJ5IHdpdGggcHJlcHJvY2Vzc29yIHN5bWJvbAotPGNvbXB1dGVyb3V0cHV0PkJaX05PX1NURElPPC9jb21wdXRlcm91dHB1dD4gZGVmaW5lZC4gIERvaW5nIHRoaXMKLWdpdmVzIHlvdSBhIGxpYnJhcnkgY29udGFpbmluZyBvbmx5IHRoZSBmb2xsb3dpbmcgZWlnaHQKLWZ1bmN0aW9uczo8L3BhcmE+Ci0KLTxwYXJhPjxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzc0luaXQ8L2NvbXB1dGVyb3V0cHV0PiwKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpDb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekNvbXByZXNzRW5kPC9jb21wdXRlcm91dHB1dD4KLTxjb21wdXRlcm91dHB1dD5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PkJaMl9iekRlY29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiwKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpEZWNvbXByZXNzRW5kPC9jb21wdXRlcm91dHB1dD4KLTxjb21wdXRlcm91dHB1dD5CWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3M8L2NvbXB1dGVyb3V0cHV0PiwKLTxjb21wdXRlcm91dHB1dD5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29tcHV0ZXJvdXRwdXQ+PC9wYXJhPgotCi08cGFyYT5XaGVuIGNvbXBpbGVkIGxpa2UgdGhpcywgYWxsIGZ1bmN0aW9ucyB3aWxsIGlnbm9yZQotPGNvbXB1dGVyb3V0cHV0PnZlcmJvc2l0eTwvY29tcHV0ZXJvdXRwdXQ+IHNldHRpbmdzLjwvcGFyYT4KLQotPC9zZWN0Mj4KLQotCi08c2VjdDIgaWQ9ImNyaXRpY2FsLWVycm9yIiB4cmVmbGFiZWw9IkNyaXRpY2FsIGVycm9yIGhhbmRsaW5nIj4KLTx0aXRsZT5Dcml0aWNhbCBlcnJvciBoYW5kbGluZzwvdGl0bGU+Ci0KLTxwYXJhPjxjb21wdXRlcm91dHB1dD5saWJiemlwMjwvY29tcHV0ZXJvdXRwdXQ+IGNvbnRhaW5zIGEgbnVtYmVyCi1vZiBpbnRlcm5hbCBhc3NlcnRpb24gY2hlY2tzIHdoaWNoIHNob3VsZCwgbmVlZGxlc3MgdG8gc2F5LCBuZXZlcgotYmUgYWN0aXZhdGVkLiAgTmV2ZXJ0aGVsZXNzLCBpZiBhbiBhc3NlcnRpb24gc2hvdWxkIGZhaWwsCi1iZWhhdmlvdXIgZGVwZW5kcyBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgbGlicmFyeSB3YXMgY29tcGlsZWQgd2l0aAotPGNvbXB1dGVyb3V0cHV0PkJaX05PX1NURElPPC9jb21wdXRlcm91dHB1dD4gc2V0LjwvcGFyYT4KLQotPHBhcmE+Rm9yIGEgbm9ybWFsIGNvbXBpbGUsIGFuIGFzc2VydGlvbiBmYWlsdXJlIHlpZWxkcyB0aGUKLW1lc3NhZ2U6PC9wYXJhPgotCi08YmxvY2txdW90ZT4KLTxwYXJhPmJ6aXAyL2xpYmJ6aXAyOiBpbnRlcm5hbCBlcnJvciBudW1iZXIgTi48L3BhcmE+Ci08cGFyYT5UaGlzIGlzIGEgYnVnIGluIGJ6aXAyL2xpYmJ6aXAyLCAmYnotdmVyc2lvbjsgb2YgJmJ6LWRhdGU7LgotUGxlYXNlIHJlcG9ydCBpdCB0byBtZSBhdDogJmJ6LWVtYWlsOy4gIElmIHRoaXMgaGFwcGVuZWQKLXdoZW4geW91IHdlcmUgdXNpbmcgc29tZSBwcm9ncmFtIHdoaWNoIHVzZXMgbGliYnppcDIgYXMgYQotY29tcG9uZW50LCB5b3Ugc2hvdWxkIGFsc28gcmVwb3J0IHRoaXMgYnVnIHRvIHRoZSBhdXRob3IocykKLW9mIHRoYXQgcHJvZ3JhbS4gIFBsZWFzZSBtYWtlIGFuIGVmZm9ydCB0byByZXBvcnQgdGhpcyBidWc7Ci10aW1lbHkgYW5kIGFjY3VyYXRlIGJ1ZyByZXBvcnRzIGV2ZW50dWFsbHkgbGVhZCB0byBoaWdoZXIKLXF1YWxpdHkgc29mdHdhcmUuICBUaGFua3MuICBKdWxpYW4gU2V3YXJkLCAmYnotZGF0ZTsuCi08L3BhcmE+PC9ibG9ja3F1b3RlPgotCi08cGFyYT53aGVyZSA8Y29tcHV0ZXJvdXRwdXQ+TjwvY29tcHV0ZXJvdXRwdXQ+IGlzIHNvbWUgZXJyb3IgY29kZQotbnVtYmVyLiAgSWYgPGNvbXB1dGVyb3V0cHV0Pk4gPT0gMTAwNzwvY29tcHV0ZXJvdXRwdXQ+LCBpdCBhbHNvCi1wcmludHMgc29tZSBleHRyYSB0ZXh0IGFkdmlzaW5nIHRoZSByZWFkZXIgdGhhdCB1bnJlbGlhYmxlIG1lbW9yeQotaXMgb2Z0ZW4gYXNzb2NpYXRlZCB3aXRoIGludGVybmFsIGVycm9yIDEwMDcuIChUaGlzIGlzIGEKLWZyZXF1ZW50bHktb2JzZXJ2ZWQtcGhlbm9tZW5vbiB3aXRoIHZlcnNpb25zIDEuMC4wLzEuMC4xKS48L3BhcmE+Ci0KLTxwYXJhPjxjb21wdXRlcm91dHB1dD5leGl0KDMpPC9jb21wdXRlcm91dHB1dD4gaXMgdGhlbgotY2FsbGVkLjwvcGFyYT4KLQotPHBhcmE+Rm9yIGEgPGNvbXB1dGVyb3V0cHV0PnN0ZGlvPC9jb21wdXRlcm91dHB1dD4tZnJlZSBsaWJyYXJ5LAotYXNzZXJ0aW9uIGZhaWx1cmVzIHJlc3VsdCBpbiBhIGNhbGwgdG8gYSBmdW5jdGlvbiBkZWNsYXJlZAotYXM6PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1leHRlcm4gdm9pZCBiel9pbnRlcm5hbF9lcnJvciAoIGludCBlcnJjb2RlICk7Ci08L3Byb2dyYW1saXN0aW5nPgotCi08cGFyYT5UaGUgcmVsZXZhbnQgY29kZSBpcyBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIuICBZb3Ugc2hvdWxkCi1zdXBwbHkgc3VjaCBhIGZ1bmN0aW9uLjwvcGFyYT4KLQotPHBhcmE+SW4gZWl0aGVyIGNhc2UsIG9uY2UgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaGFzIG9jY3VycmVkLCBhbnkKLTxjb21wdXRlcm91dHB1dD5iel9zdHJlYW08L2NvbXB1dGVyb3V0cHV0PiByZWNvcmRzIGludm9sdmVkIGNhbgotYmUgcmVnYXJkZWQgYXMgaW52YWxpZC4gIFlvdSBzaG91bGQgbm90IGF0dGVtcHQgdG8gcmVzdW1lIG5vcm1hbAotb3BlcmF0aW9uIHdpdGggdGhlbS48L3BhcmE+Ci0KLTxwYXJhPllvdSBtYXksIG9mIGNvdXJzZSwgY2hhbmdlIGNyaXRpY2FsIGVycm9yIGhhbmRsaW5nIHRvIHN1aXQKLXlvdXIgbmVlZHMuICBBcyBJIHNhaWQgYWJvdmUsIGNyaXRpY2FsIGVycm9ycyBpbmRpY2F0ZSBidWdzIGluCi10aGUgbGlicmFyeSBhbmQgc2hvdWxkIG5vdCBvY2N1ci4gIEFsbCAibm9ybWFsIiBlcnJvciBzaXR1YXRpb25zCi1hcmUgaW5kaWNhdGVkIHZpYSBlcnJvciByZXR1cm4gY29kZXMgZnJvbSBmdW5jdGlvbnMsIGFuZCBjYW4gYmUKLXJlY292ZXJlZCBmcm9tLjwvcGFyYT4KLQotPC9zZWN0Mj4KLQotPC9zZWN0MT4KLQotCi08c2VjdDEgaWQ9Indpbi1kbGwiIHhyZWZsYWJlbD0iTWFraW5nIGEgV2luZG93cyBETEwiPgotPHRpdGxlPk1ha2luZyBhIFdpbmRvd3MgRExMPC90aXRsZT4KLQotPHBhcmE+RXZlcnl0aGluZyByZWxhdGVkIHRvIFdpbmRvd3MgaGFzIGJlZW4gY29udHJpYnV0ZWQgYnkKLVlvc2hpb2thIFRzdW5lbwotKDxjb21wdXRlcm91dHB1dD50c3VuZW9AcnIuaWlqNHUub3IuanA8L2NvbXB1dGVyb3V0cHV0PiksIHNvCi15b3Ugc2hvdWxkIHNlbmQgeW91ciBxdWVyaWVzIHRvIGhpbSAoYnV0IHBlcmhhcHMgQ2M6IG1lLAotPGNvbXB1dGVyb3V0cHV0PiZiei1lbWFpbDs8L2NvbXB1dGVyb3V0cHV0PikuPC9wYXJhPgotCi08cGFyYT5NeSB2YWd1ZSB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdG8gZG8gaXM6IHVzaW5nIFZpc3VhbCBDKysKLTUuMCwgb3BlbiB0aGUgcHJvamVjdCBmaWxlCi08Y29tcHV0ZXJvdXRwdXQ+bGliYnoyLmRzcDwvY29tcHV0ZXJvdXRwdXQ+LCBhbmQgYnVpbGQuICBUaGF0J3MKLWFsbC48L3BhcmE+Ci0KLTxwYXJhPklmIHlvdSBjYW4ndCBvcGVuIHRoZSBwcm9qZWN0IGZpbGUgZm9yIHNvbWUgcmVhc29uLCBtYWtlIGEKLW5ldyBvbmUsIG5hbWluZyB0aGVzZSBmaWxlczoKLTxjb21wdXRlcm91dHB1dD5ibG9ja3NvcnQuYzwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PmJ6bGliLmM8L2NvbXB1dGVyb3V0cHV0PiwKLTxjb21wdXRlcm91dHB1dD5jb21wcmVzcy5jPC9jb21wdXRlcm91dHB1dD4sCi08Y29tcHV0ZXJvdXRwdXQ+Y3JjdGFibGUuYzwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PmRlY29tcHJlc3MuYzwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0Pmh1ZmZtYW4uYzwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PnJhbmR0YWJsZS5jPC9jb21wdXRlcm91dHB1dD4gYW5kCi08Y29tcHV0ZXJvdXRwdXQ+bGliYnoyLmRlZjwvY29tcHV0ZXJvdXRwdXQ+LiAgWW91IHdpbGwgYWxzbyBuZWVkCi10byBuYW1lIHRoZSBoZWFkZXIgZmlsZXMgPGNvbXB1dGVyb3V0cHV0PmJ6bGliLmg8L2NvbXB1dGVyb3V0cHV0PgotYW5kIDxjb21wdXRlcm91dHB1dD5iemxpYl9wcml2YXRlLmg8L2NvbXB1dGVyb3V0cHV0Pi48L3BhcmE+Ci0KLTxwYXJhPklmIHlvdSBkb24ndCB1c2UgVkMrKywgeW91IG1heSBuZWVkIHRvIGRlZmluZSB0aGUKLXByb3Byb2Nlc3NvciBzeW1ib2wKLTxjb21wdXRlcm91dHB1dD5fV0lOMzI8L2NvbXB1dGVyb3V0cHV0Pi48L3BhcmE+Ci0KLTxwYXJhPkZpbmFsbHksIDxjb21wdXRlcm91dHB1dD5kbGx0ZXN0LmM8L2NvbXB1dGVyb3V0cHV0PiBpcyBhCi1zYW1wbGUgcHJvZ3JhbSB1c2luZyB0aGUgRExMLiAgSXQgaGFzIGEgcHJvamVjdCBmaWxlLAotPGNvbXB1dGVyb3V0cHV0PmRsbHRlc3QuZHNwPC9jb21wdXRlcm91dHB1dD4uPC9wYXJhPgotCi08cGFyYT5JZiB5b3UganVzdCB3YW50IGEgbWFrZWZpbGUgZm9yIFZpc3VhbCBDLCBoYXZlIGEgbG9vayBhdAotPGNvbXB1dGVyb3V0cHV0Pm1ha2VmaWxlLm1zYzwvY29tcHV0ZXJvdXRwdXQ+LjwvcGFyYT4KLQotPHBhcmE+QmUgYXdhcmUgdGhhdCBpZiB5b3UgY29tcGlsZQotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gaXRzZWxmIG9uIFdpbjMyLCB5b3UgbXVzdAotc2V0IDxjb21wdXRlcm91dHB1dD5CWl9VTklYPC9jb21wdXRlcm91dHB1dD4gdG8gMCBhbmQKLTxjb21wdXRlcm91dHB1dD5CWl9MQ0NXSU4zMjwvY29tcHV0ZXJvdXRwdXQ+IHRvIDEsIGluIHRoZSBmaWxlCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDIuYzwvY29tcHV0ZXJvdXRwdXQ+LCBiZWZvcmUgY29tcGlsaW5nLgotT3RoZXJ3aXNlIHRoZSByZXN1bHRpbmcgYmluYXJ5IHdvbid0IHdvcmsgY29ycmVjdGx5LjwvcGFyYT4KLQotPHBhcmE+SSBoYXZlbid0IHRyaWVkIGFueSBvZiB0aGlzIHN0dWZmIG15c2VsZiwgYnV0IGl0IGFsbCBsb29rcwotcGxhdXNpYmxlLjwvcGFyYT4KLQotPC9zZWN0MT4KLQotPC9jaGFwdGVyPgotCi0KLQotPGNoYXB0ZXIgaWQ9Im1pc2MiIHhyZWZsYWJlbD0iTWlzY2VsbGFuZWEiPgotPHRpdGxlPk1pc2NlbGxhbmVhPC90aXRsZT4KLQotPHBhcmE+VGhlc2UgYXJlIGp1c3Qgc29tZSByYW5kb20gdGhvdWdodHMgb2YgbWluZS4gIFlvdXIgbWlsZWFnZQotbWF5IHZhcnkuPC9wYXJhPgotCi0KLTxzZWN0MSBpZD0ibGltaXRzIiB4cmVmbGFiZWw9IkxpbWl0YXRpb25zIG9mIHRoZSBjb21wcmVzc2VkIGZpbGUgZm9ybWF0Ij4KLTx0aXRsZT5MaW1pdGF0aW9ucyBvZiB0aGUgY29tcHJlc3NlZCBmaWxlIGZvcm1hdDwvdGl0bGU+Ci0KLTxwYXJhPjxjb21wdXRlcm91dHB1dD5iemlwMi0xLjAuWDwvY29tcHV0ZXJvdXRwdXQ+LAotPGNvbXB1dGVyb3V0cHV0PjAuOS41PC9jb21wdXRlcm91dHB1dD4gYW5kCi08Y29tcHV0ZXJvdXRwdXQ+MC45LjA8L2NvbXB1dGVyb3V0cHV0PiB1c2UgZXhhY3RseSB0aGUgc2FtZSBmaWxlCi1mb3JtYXQgYXMgdGhlIG9yaWdpbmFsIHZlcnNpb24sCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDItMC4xPC9jb21wdXRlcm91dHB1dD4uICBUaGlzIGRlY2lzaW9uIHdhcwotbWFkZSBpbiB0aGUgaW50ZXJlc3RzIG9mIHN0YWJpbGl0eS4gIENyZWF0aW5nIHlldCBhbm90aGVyCi1pbmNvbXBhdGlibGUgY29tcHJlc3NlZCBmaWxlIGZvcm1hdCB3b3VsZCBjcmVhdGUgZnVydGhlcgotY29uZnVzaW9uIGFuZCBkaXNydXB0aW9uIGZvciB1c2Vycy48L3BhcmE+Ci0KLTxwYXJhPk5ldmVydGhlbGVzcywgdGhpcyBpcyBub3QgYSBwYWlubGVzcyBkZWNpc2lvbi4gIERldmVsb3BtZW50Ci13b3JrIHNpbmNlIHRoZSByZWxlYXNlIG9mCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDItMC4xPC9jb21wdXRlcm91dHB1dD4gaW4gQXVndXN0IDE5OTcgaGFzCi1zaG93biBjb21wbGV4aXRpZXMgaW4gdGhlIGZpbGUgZm9ybWF0IHdoaWNoIHNsb3cgZG93bgotZGVjb21wcmVzc2lvbiBhbmQsIGluIHJldHJvc3BlY3QsIGFyZSB1bm5lY2Vzc2FyeS4gIFRoZXNlCi1hcmU6PC9wYXJhPgotCi08aXRlbWl6ZWRsaXN0IG1hcms9J2J1bGxldCc+Ci0KLSA8bGlzdGl0ZW0+PHBhcmE+VGhlIHJ1bi1sZW5ndGggZW5jb2Rlciwgd2hpY2ggaXMgdGhlIGZpcnN0IG9mIHRoZQotICAgY29tcHJlc3Npb24gdHJhbnNmb3JtYXRpb25zLCBpcyBlbnRpcmVseSBpcnJlbGV2YW50LiAgVGhlCi0gICBvcmlnaW5hbCBwdXJwb3NlIHdhcyB0byBwcm90ZWN0IHRoZSBzb3J0aW5nIGFsZ29yaXRobSBmcm9tIHRoZQotICAgdmVyeSB3b3JzdCBjYXNlIGlucHV0OiBhIHN0cmluZyBvZiByZXBlYXRlZCBzeW1ib2xzLiAgQnV0Ci0gICBhbGdvcml0aG0gc3RlcHMgUTZhIGFuZCBRNmIgaW4gdGhlIG9yaWdpbmFsIEJ1cnJvd3MtV2hlZWxlcgotICAgdGVjaG5pY2FsIHJlcG9ydCAoU1JDLTEyNCkgc2hvdyBob3cgcmVwZWF0cyBjYW4gYmUgaGFuZGxlZAotICAgd2l0aG91dCBkaWZmaWN1bHR5IGluIGJsb2NrIHNvcnRpbmcuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0KLSA8bGlzdGl0ZW0+PHBhcmE+VGhlIHJhbmRvbWlzYXRpb24gbWVjaGFuaXNtIGRvZXNuJ3QgcmVhbGx5IG5lZWQgdG8gYmUKLSAgIHRoZXJlLiAgVWRpIE1hbmJlciBhbmQgR2VuZSBNeWVycyBwdWJsaXNoZWQgYSBzdWZmaXggYXJyYXkKLSAgIGNvbnN0cnVjdGlvbiBhbGdvcml0aG0gYSBmZXcgeWVhcnMgYmFjaywgd2hpY2ggY2FuIGJlIGVtcGxveWVkCi0gICB0byBzb3J0IGFueSBibG9jaywgbm8gbWF0dGVyIGhvdyByZXBldGl0aXZlLCBpbiBPKE4gbG9nIE4pCi0gICB0aW1lLiAgU3Vic2VxdWVudCB3b3JrIGJ5IEt1bmloaWtvIFNhZGFrYW5lIGhhcyBwcm9kdWNlZCBhCi0gICBkZXJpdmF0aXZlIE8oTiAobG9nIE4pXjIpIGFsZ29yaXRobSB3aGljaCB1c3VhbGx5IG91dHBlcmZvcm1zCi0gICB0aGUgTWFuYmVyLU15ZXJzIGFsZ29yaXRobS48L3BhcmE+Ci0KLSAgIDxwYXJhPkkgY291bGQgaGF2ZSBjaGFuZ2VkIHRvIFNhZGFrYW5lJ3MgYWxnb3JpdGhtLCBidXQgSSBmaW5kCi0gICBpdCB0byBiZSBzbG93ZXIgdGhhbiA8Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PidzCi0gICBleGlzdGluZyBhbGdvcml0aG0gZm9yIG1vc3QgaW5wdXRzLCBhbmQgdGhlIHJhbmRvbWlzYXRpb24KLSAgIG1lY2hhbmlzbSBwcm90ZWN0cyBhZGVxdWF0ZWx5IGFnYWluc3QgYmFkIGNhc2VzLiAgSSBkaWRuJ3QKLSAgIHRoaW5rIGl0IHdhcyBhIGdvb2QgdHJhZGVvZmYgdG8gbWFrZS4gIFBhcnRseSB0aGlzIGlzIGR1ZSB0bwotICAgdGhlIGZhY3QgdGhhdCBJIHdhcyBub3QgZmxvb2RlZCB3aXRoIGVtYWlsIGNvbXBsYWludHMgYWJvdXQKLSAgIDxjb21wdXRlcm91dHB1dD5iemlwMi0wLjE8L2NvbXB1dGVyb3V0cHV0PidzIHBlcmZvcm1hbmNlIG9uCi0gICByZXBldGl0aXZlIGRhdGEsIHNvIHBlcmhhcHMgaXQgaXNuJ3QgYSBwcm9ibGVtIGZvciByZWFsCi0gICBpbnB1dHMuPC9wYXJhPgotCi0gICA8cGFyYT5Qcm9iYWJseSB0aGUgYmVzdCBsb25nLXRlcm0gc29sdXRpb24sIGFuZCB0aGUgb25lIEkgaGF2ZQotICAgaW5jb3Jwb3JhdGVkIGludG8gMC45LjUgYW5kIGFib3ZlLCBpcyB0byB1c2UgdGhlIGV4aXN0aW5nCi0gICBzb3J0aW5nIGFsZ29yaXRobSBpbml0aWFsbHksIGFuZCBmYWxsIGJhY2sgdG8gYSBPKE4gKGxvZyBOKV4yKQotICAgYWxnb3JpdGhtIGlmIHRoZSBzdGFuZGFyZCBhbGdvcml0aG0gZ2V0cyBpbnRvCi0gICBkaWZmaWN1bHRpZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0KLSAgPGxpc3RpdGVtPjxwYXJhPlRoZSBjb21wcmVzc2VkIGZpbGUgZm9ybWF0IHdhcyBuZXZlciBkZXNpZ25lZCB0byBiZQotICAgaGFuZGxlZCBieSBhIGxpYnJhcnksIGFuZCBJIGhhdmUgaGFkIHRvIGp1bXAgdGhvdWdoIHNvbWUgaG9vcHMKLSAgIHRvIHByb2R1Y2UgYW4gZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIGRlY29tcHJlc3Npb24uICBJdCdzCi0gICBhIGJpdCBoYWlyeS4gIFRyeSBwYXNzaW5nCi0gICA8Y29tcHV0ZXJvdXRwdXQ+ZGVjb21wcmVzcy5jPC9jb21wdXRlcm91dHB1dD4gdGhyb3VnaCB0aGUgQwotICAgcHJlcHJvY2Vzc29yIGFuZCB5b3UnbGwgc2VlIHdoYXQgSSBtZWFuLiAgTXVjaCBvZiB0aGlzCi0gICBjb21wbGV4aXR5IGNvdWxkIGhhdmUgYmVlbiBhdm9pZGVkIGlmIHRoZSBjb21wcmVzc2VkIHNpemUgb2YKLSAgIGVhY2ggYmxvY2sgb2YgZGF0YSB3YXMgcmVjb3JkZWQgaW4gdGhlIGRhdGEgc3RyZWFtLjwvcGFyYT48L2xpc3RpdGVtPgotCi0gPGxpc3RpdGVtPjxwYXJhPkFuIEFkbGVyLTMyIGNoZWNrc3VtLCByYXRoZXIgdGhhbiBhIENSQzMyIGNoZWNrc3VtLAotICAgd291bGQgYmUgZmFzdGVyIHRvIGNvbXB1dGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0KLTwvaXRlbWl6ZWRsaXN0PgotCi08cGFyYT5JdCB3b3VsZCBiZSBmYWlyIHRvIHNheSB0aGF0IHRoZQotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gZm9ybWF0IHdhcyBmcm96ZW4gYmVmb3JlIEkKLXByb3Blcmx5IGFuZCBmdWxseSB1bmRlcnN0b29kIHRoZSBwZXJmb3JtYW5jZSBjb25zZXF1ZW5jZXMgb2YKLWRvaW5nIHNvLjwvcGFyYT4KLQotPHBhcmE+SW1wcm92ZW1lbnRzIHdoaWNoIEkgd2FzIGFibGUgdG8gaW5jb3Jwb3JhdGUgaW50byAwLjkuMCwKLWRlc3BpdGUgdXNpbmcgdGhlIHNhbWUgZmlsZSBmb3JtYXQsIGFyZTo8L3BhcmE+Ci0KLTxpdGVtaXplZGxpc3QgbWFyaz0nYnVsbGV0Jz4KLQotIDxsaXN0aXRlbT48cGFyYT5TaW5nbGUgYXJyYXkgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludmVyc2UgQldULiAgVGhpcwotICBzaWduaWZpY2FudGx5IHNwZWVkcyB1cCBkZWNvbXByZXNzaW9uLCBwcmVzdW1hYmx5IGJlY2F1c2UgaXQKLSAgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIGNhY2hlIG1pc3Nlcy48L3BhcmE+PC9saXN0aXRlbT4KLQotIDxsaXN0aXRlbT48cGFyYT5GYXN0ZXIgaW52ZXJzZSBNVEYgdHJhbnNmb3JtIGZvciBsYXJnZSBNVEYgdmFsdWVzLgotICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIHRoZSBub3Rpb24gb2Ygc2xpZGluZyBibG9ja3MKLSAgb2YgdmFsdWVzLjwvcGFyYT48L2xpc3RpdGVtPgotCi0gPGxpc3RpdGVtPjxwYXJhPjxjb21wdXRlcm91dHB1dD5iemlwMi0wLjkuMDwvY29tcHV0ZXJvdXRwdXQ+IG5vdyByZWFkcwotICBhbmQgd3JpdGVzIGZpbGVzIHdpdGggPGNvbXB1dGVyb3V0cHV0PmZyZWFkPC9jb21wdXRlcm91dHB1dD4KLSAgYW5kIDxjb21wdXRlcm91dHB1dD5md3JpdGU8L2NvbXB1dGVyb3V0cHV0PjsgdmVyc2lvbiAwLjEgdXNlZAotICA8Y29tcHV0ZXJvdXRwdXQ+cHV0YzwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotICA8Y29tcHV0ZXJvdXRwdXQ+Z2V0YzwvY29tcHV0ZXJvdXRwdXQ+LiAgRHVoISAgV2VsbCwgeW91IGxpdmUKLSAgYW5kIGxlYXJuLjwvcGFyYT48L2xpc3RpdGVtPgotCi08L2l0ZW1pemVkbGlzdD4KLQotPHBhcmE+RnVydGhlciBhaGVhZCwgaXQgd291bGQgYmUgbmljZSB0byBiZSBhYmxlIHRvIGRvIHJhbmRvbQotYWNjZXNzIGludG8gZmlsZXMuICBUaGlzIHdpbGwgcmVxdWlyZSBzb21lIGNhcmVmdWwgZGVzaWduIG9mCi1jb21wcmVzc2VkIGZpbGUgZm9ybWF0cy48L3BhcmE+Ci0KLTwvc2VjdDE+Ci0KLQotPHNlY3QxIGlkPSJwb3J0LWlzc3VlcyIgeHJlZmxhYmVsPSJQb3J0YWJpbGl0eSBpc3N1ZXMiPgotPHRpdGxlPlBvcnRhYmlsaXR5IGlzc3VlczwvdGl0bGU+Ci0KLTxwYXJhPkFmdGVyIHNvbWUgY29uc2lkZXJhdGlvbiwgSSBoYXZlIGRlY2lkZWQgbm90IHRvIHVzZSBHTlUKLTxjb21wdXRlcm91dHB1dD5hdXRvY29uZjwvY29tcHV0ZXJvdXRwdXQ+IHRvIGNvbmZpZ3VyZSAwLjkuNSBvcgotMS4wLjwvcGFyYT4KLQotPHBhcmE+PGNvbXB1dGVyb3V0cHV0PmF1dG9jb25mPC9jb21wdXRlcm91dHB1dD4sIGFkbWlyYWJsZSBhbmQKLXdvbmRlcmZ1bCB0aG91Z2ggaXQgaXMsIG1haW5seSBhc3Npc3RzIHdpdGggcG9ydGFiaWxpdHkgcHJvYmxlbXMKLWJldHdlZW4gVW5peC1saWtlIHBsYXRmb3Jtcy4gIEJ1dAotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gZG9lc24ndCBoYXZlIG11Y2ggaW4gdGhlCi13YXkgb2YgcG9ydGFiaWxpdHkgcHJvYmxlbXMgb24gVW5peDsgbW9zdCBvZiB0aGUgZGlmZmljdWx0aWVzCi1hcHBlYXIgd2hlbiBwb3J0aW5nIHRvIHRoZSBNYWMsIG9yIHRvIE1pY3Jvc29mdCdzIG9wZXJhdGluZwotc3lzdGVtcy4gIDxjb21wdXRlcm91dHB1dD5hdXRvY29uZjwvY29tcHV0ZXJvdXRwdXQ+IGRvZXNuJ3QgaGVscAotaW4gdGhvc2UgY2FzZXMsIGFuZCBicmluZ3MgaW4gYSB3aG9sZSBsb2FkIG9mIG5ldwotY29tcGxleGl0eS48L3BhcmE+Ci0KLTxwYXJhPk1vc3QgcGVvcGxlIHNob3VsZCBiZSBhYmxlIHRvIGNvbXBpbGUgdGhlIGxpYnJhcnkgYW5kCi1wcm9ncmFtIHVuZGVyIFVuaXggc3RyYWlnaHQgb3V0LW9mLXRoZS1ib3gsIHNvIHRvIHNwZWFrLAotZXNwZWNpYWxseSBpZiB5b3UgaGF2ZSBhIHZlcnNpb24gb2YgR05VIEMgYXZhaWxhYmxlLjwvcGFyYT4KLQotPHBhcmE+VGhlcmUgYXJlIGEgY291cGxlIG9mCi08Y29tcHV0ZXJvdXRwdXQ+X19pbmxpbmVfXzwvY29tcHV0ZXJvdXRwdXQ+IGRpcmVjdGl2ZXMgaW4gdGhlCi1jb2RlLiAgR05VIEMgKDxjb21wdXRlcm91dHB1dD5nY2M8L2NvbXB1dGVyb3V0cHV0Pikgc2hvdWxkIGJlCi1hYmxlIHRvIGhhbmRsZSB0aGVtLiAgSWYgeW91J3JlIG5vdCB1c2luZyBHTlUgQywgeW91ciBDIGNvbXBpbGVyCi1zaG91bGRuJ3Qgc2VlIHRoZW0gYXQgYWxsLiAgSWYgeW91ciBjb21waWxlciBkb2VzLCBmb3Igc29tZQotcmVhc29uLCBzZWUgdGhlbSBhbmQgZG9lc24ndCBsaWtlIHRoZW0sIGp1c3QKLTxjb21wdXRlcm91dHB1dD4jZGVmaW5lPC9jb21wdXRlcm91dHB1dD4KLTxjb21wdXRlcm91dHB1dD5fX2lubGluZV9fPC9jb21wdXRlcm91dHB1dD4gdG8gYmUKLTxjb21wdXRlcm91dHB1dD4vKiAqLzwvY29tcHV0ZXJvdXRwdXQ+LiAgT25lIGVhc3kgd2F5IHRvIGRvIHRoaXMKLWlzIHRvIGNvbXBpbGUgd2l0aCB0aGUgZmxhZwotPGNvbXB1dGVyb3V0cHV0Pi1EX19pbmxpbmVfXz08L2NvbXB1dGVyb3V0cHV0Piwgd2hpY2ggc2hvdWxkIGJlCi11bmRlcnN0b29kIGJ5IG1vc3QgVW5peCBjb21waWxlcnMuPC9wYXJhPgotCi08cGFyYT5JZiB5b3Ugc3RpbGwgaGF2ZSBkaWZmaWN1bHRpZXMsIHRyeSBjb21waWxpbmcgd2l0aCB0aGUKLW1hY3JvIDxjb21wdXRlcm91dHB1dD5CWl9TVFJJQ1RfQU5TSTwvY29tcHV0ZXJvdXRwdXQ+IGRlZmluZWQuCi1UaGlzIHNob3VsZCBlbmFibGUgeW91IHRvIGJ1aWxkIHRoZSBsaWJyYXJ5IGluIGEgc3RyaWN0bHkgQU5TSQotY29tcGxpYW50IGVudmlyb25tZW50LiAgQnVpbGRpbmcgdGhlIHByb2dyYW0gaXRzZWxmIGxpa2UgdGhpcyBpcwotZGFuZ2Vyb3VzIGFuZCBub3Qgc3VwcG9ydGVkLCBzaW5jZSB5b3UgcmVtb3ZlCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PidzIGNoZWNrcyBhZ2FpbnN0Ci1jb21wcmVzc2luZyBkaXJlY3Rvcmllcywgc3ltYm9saWMgbGlua3MsIGRldmljZXMsIGFuZCBvdGhlcgotbm90LXJlYWxseS1hLWZpbGUgZW50aXRpZXMuICBUaGlzIGNvdWxkIGNhdXNlIGZpbGVzeXN0ZW0KLWNvcnJ1cHRpb24hPC9wYXJhPgotCi08cGFyYT5PbmUgb3RoZXIgdGhpbmc6IGlmIHlvdSBjcmVhdGUgYQotPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gYmluYXJ5IGZvciBwdWJsaWMgZGlzdHJpYnV0aW9uLAotcGxlYXNlIGNvbnNpZGVyIGxpbmtpbmcgaXQgc3RhdGljYWxseSAoPGNvbXB1dGVyb3V0cHV0PmdjYwotLXN0YXRpYzwvY29tcHV0ZXJvdXRwdXQ+KS4gIFRoaXMgYXZvaWRzIGFsbCBzb3J0cyBvZiBsaWJyYXJ5LXZlcnNpb24KLWlzc3VlcyB0aGF0IG90aGVycyBtYXkgZW5jb3VudGVyIGxhdGVyIG9uLjwvcGFyYT4KLQotPHBhcmE+SWYgeW91IGJ1aWxkIDxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+IG9uCi1XaW4zMiwgeW91IG11c3Qgc2V0IDxjb21wdXRlcm91dHB1dD5CWl9VTklYPC9jb21wdXRlcm91dHB1dD4gdG8gMAotYW5kIDxjb21wdXRlcm91dHB1dD5CWl9MQ0NXSU4zMjwvY29tcHV0ZXJvdXRwdXQ+IHRvIDEsIGluIHRoZQotZmlsZSA8Y29tcHV0ZXJvdXRwdXQ+YnppcDIuYzwvY29tcHV0ZXJvdXRwdXQ+LCBiZWZvcmUgY29tcGlsaW5nLgotT3RoZXJ3aXNlIHRoZSByZXN1bHRpbmcgYmluYXJ5IHdvbid0IHdvcmsgY29ycmVjdGx5LjwvcGFyYT4KLQotPC9zZWN0MT4KLQotCi08c2VjdDEgaWQ9ImJ1Z3MiIHhyZWZsYWJlbD0iUmVwb3J0aW5nIGJ1Z3MiPgotPHRpdGxlPlJlcG9ydGluZyBidWdzPC90aXRsZT4KLQotPHBhcmE+SSB0cmllZCBwcmV0dHkgaGFyZCB0byBtYWtlIHN1cmUKLTxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+IGlzIGJ1ZyBmcmVlLCBib3RoIGJ5Ci1kZXNpZ24gYW5kIGJ5IHRlc3RpbmcuICBIb3BlZnVsbHkgeW91J2xsIG5ldmVyIG5lZWQgdG8gcmVhZCB0aGlzCi1zZWN0aW9uIGZvciByZWFsLjwvcGFyYT4KLQotPHBhcmE+TmV2ZXJ0aGVsZXNzLCBpZiA8Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBkaWVzCi13aXRoIGEgc2VnbWVudGF0aW9uIGZhdWx0LCBhIGJ1cyBlcnJvciBvciBhbiBpbnRlcm5hbCBhc3NlcnRpb24KLWZhaWx1cmUsIGl0IHdpbGwgYXNrIHlvdSB0byBlbWFpbCBtZSBhIGJ1ZyByZXBvcnQuICBFeHBlcmllbmNlIGZyb20KLXllYXJzIG9mIGZlZWRiYWNrIG9mIGJ6aXAyIHVzZXJzIGluZGljYXRlcyB0aGF0IGFsbW9zdCBhbGwgdGhlc2UKLXByb2JsZW1zIGNhbiBiZSB0cmFjZWQgdG8gZWl0aGVyIGNvbXBpbGVyIGJ1Z3Mgb3IgaGFyZHdhcmUKLXByb2JsZW1zLjwvcGFyYT4KLQotPGl0ZW1pemVkbGlzdCBtYXJrPSdidWxsZXQnPgotCi0gPGxpc3RpdGVtPjxwYXJhPlJlY29tcGlsZSB0aGUgcHJvZ3JhbSB3aXRoIG5vIG9wdGltaXNhdGlvbiwgYW5kCi0gIHNlZSBpZiBpdCB3b3Jrcy4gIEFuZC9vciB0cnkgYSBkaWZmZXJlbnQgY29tcGlsZXIuICBJIGhlYXJkIGFsbAotICBzb3J0cyBvZiBzdG9yaWVzIGFib3V0IHZhcmlvdXMgZmxhdm91cnMgb2YgR05VIEMgKGFuZCBvdGhlcgotICBjb21waWxlcnMpIGdlbmVyYXRpbmcgYmFkIGNvZGUgZm9yCi0gIDxjb21wdXRlcm91dHB1dD5iemlwMjwvY29tcHV0ZXJvdXRwdXQ+LCBhbmQgSSd2ZSBydW4gYWNyb3NzIHR3bwotICBzdWNoIGV4YW1wbGVzIG15c2VsZi48L3BhcmE+Ci0KLSAgPHBhcmE+Mi43LlggdmVyc2lvbnMgb2YgR05VIEMgYXJlIGtub3duIHRvIGdlbmVyYXRlIGJhZCBjb2RlCi0gIGZyb20gdGltZSB0byB0aW1lLCBhdCBoaWdoIG9wdGltaXNhdGlvbiBsZXZlbHMuICBJZiB5b3UgZ2V0Ci0gIHByb2JsZW1zLCB0cnkgdXNpbmcgdGhlIGZsYWdzCi0gIDxjb21wdXRlcm91dHB1dD4tTzI8L2NvbXB1dGVyb3V0cHV0PgotICA8Y29tcHV0ZXJvdXRwdXQ+LWZvbWl0LWZyYW1lLXBvaW50ZXI8L2NvbXB1dGVyb3V0cHV0PgotICA8Y29tcHV0ZXJvdXRwdXQ+LWZuby1zdHJlbmd0aC1yZWR1Y2U8L2NvbXB1dGVyb3V0cHV0Pi4gIFlvdQotICBzaG91bGQgc3BlY2lmaWNhbGx5IDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiB1c2UKLSAgPGNvbXB1dGVyb3V0cHV0Pi1mdW5yb2xsLWxvb3BzPC9jb21wdXRlcm91dHB1dD4uPC9wYXJhPgotCi0gIDxwYXJhPllvdSBtYXkgbm90aWNlIHRoYXQgdGhlIE1ha2VmaWxlIHJ1bnMgc2l4IHRlc3RzIGFzIHBhcnQKLSAgb2YgdGhlIGJ1aWxkIHByb2Nlc3MuICBJZiB0aGUgcHJvZ3JhbSBwYXNzZXMgYWxsIG9mIHRoZXNlLCBpdCdzCi0gIGEgcHJldHR5IGdvb2QgKGJ1dCBub3QgMTAwJSkgaW5kaWNhdGlvbiB0aGF0IHRoZSBjb21waWxlciBoYXMKLSAgZG9uZSBpdHMgam9iIGNvcnJlY3RseS48L3BhcmE+PC9saXN0aXRlbT4KLQotIDxsaXN0aXRlbT48cGFyYT5JZiA8Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PgotICBjcmFzaGVzIHJhbmRvbWx5LCBhbmQgdGhlIGNyYXNoZXMgYXJlIG5vdCByZXBlYXRhYmxlLCB5b3UgbWF5Ci0gIGhhdmUgYSBmbGFreSBtZW1vcnkgc3Vic3lzdGVtLgotICA8Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiByZWFsbHkgaGFtbWVycyB5b3VyCi0gIG1lbW9yeSBoaWVyYXJjaHksIGFuZCBpZiBpdCdzIGEgYml0IG1hcmdpbmFsLCB5b3UgbWF5IGdldCB0aGVzZQotICBwcm9ibGVtcy4gIERpdHRvIGlmIHlvdXIgZGlzayBvciBJL08gc3Vic3lzdGVtIGlzIHNsb3dseQotICBmYWlsaW5nLiAgWXVwLCB0aGlzIHJlYWxseSBkb2VzIGhhcHBlbi48L3BhcmE+Ci0KLSAgPHBhcmE+VHJ5IHVzaW5nIGEgZGlmZmVyZW50IG1hY2hpbmUgb2YgdGhlIHNhbWUgdHlwZSwgYW5kIHNlZQotICBpZiB5b3UgY2FuIHJlcGVhdCB0aGUgcHJvYmxlbS48L3BhcmE+PC9saXN0aXRlbT4KLQotICA8bGlzdGl0ZW0+PHBhcmE+VGhpcyBpc24ndCByZWFsbHkgYSBidWcsIGJ1dCAuLi4gSWYKLSAgPGNvbXB1dGVyb3V0cHV0PmJ6aXAyPC9jb21wdXRlcm91dHB1dD4gdGVsbHMgeW91IHlvdXIgZmlsZSBpcwotICBjb3JydXB0ZWQgb24gZGVjb21wcmVzc2lvbiwgYW5kIHlvdSBvYnRhaW5lZCB0aGUgZmlsZSB2aWEgRlRQLAotICB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgeW91IGZvcmdvdCB0byB0ZWxsIEZUUCB0byBkbyBhCi0gIGJpbmFyeSBtb2RlIHRyYW5zZmVyLiAgVGhhdCBhYnNvbHV0ZWx5IHdpbGwgY2F1c2UgdGhlIGZpbGUgdG8KLSAgYmUgbm9uLWRlY29tcHJlc3NpYmxlLiAgWW91J2xsIGhhdmUgdG8gdHJhbnNmZXIgaXQKLSAgYWdhaW4uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0KLTwvaXRlbWl6ZWRsaXN0PgotCi08cGFyYT5JZiB5b3UndmUgaW5jb3Jwb3JhdGVkCi08Y29tcHV0ZXJvdXRwdXQ+bGliYnppcDI8L2NvbXB1dGVyb3V0cHV0PiBpbnRvIHlvdXIgb3duIHByb2dyYW0KLWFuZCBhcmUgZ2V0dGluZyBwcm9ibGVtcywgcGxlYXNlLCBwbGVhc2UsIHBsZWFzZSwgY2hlY2sgdGhhdCB0aGUKLXBhcmFtZXRlcnMgeW91IGFyZSBwYXNzaW5nIGluIGNhbGxzIHRvIHRoZSBsaWJyYXJ5LCBhcmUgY29ycmVjdCwKLWFuZCBpbiBhY2NvcmRhbmNlIHdpdGggd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIGlzIGFsbG93YWJsZS4KLUkgaGF2ZSB0cmllZCB0byBtYWtlIHRoZSBsaWJyYXJ5IHJvYnVzdCBhZ2FpbnN0IHN1Y2ggcHJvYmxlbXMsCi1idXQgSSdtIHN1cmUgSSBoYXZlbid0IHN1Y2NlZWRlZC48L3BhcmE+Ci0KLTxwYXJhPkZpbmFsbHksIGlmIHRoZSBhYm92ZSBjb21tZW50cyBkb24ndCBoZWxwLCB5b3UnbGwgaGF2ZSB0bwotc2VuZCBtZSBhIGJ1ZyByZXBvcnQuICBOb3csIGl0J3MganVzdCBhbWF6aW5nIGhvdyBtYW55IHBlb3BsZQotd2lsbCBzZW5kIG1lIGEgYnVnIHJlcG9ydCBzYXlpbmcgc29tZXRoaW5nIGxpa2U6PC9wYXJhPgotCi08cHJvZ3JhbWxpc3Rpbmc+Ci1iemlwMiBjcmFzaGVkIHdpdGggc2VnbWVudGF0aW9uIGZhdWx0IG9uIG15IG1hY2hpbmUKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0KLTxwYXJhPmFuZCBhYnNvbHV0ZWx5IG5vdGhpbmcgZWxzZS4gIE5lZWRsZXNzIHRvIHNheSwgYSBzdWNoIGEKLXJlcG9ydCBpcyA8ZW1waGFzaXM+dG90YWxseSwgdXR0ZXJseSwgY29tcGxldGVseSBhbmQKLWNvbXByZWhlbnNpdmVseSAxMDAlIHVzZWxlc3M7IGEgd2FzdGUgb2YgeW91ciB0aW1lLCBteSB0aW1lLCBhbmQKLW5ldCBiYW5kd2lkdGg8L2VtcGhhc2lzPi4gIFdpdGggbm8gZGV0YWlscyBhdCBhbGwsIHRoZXJlJ3Mgbm8gd2F5Ci1JIGNhbiBwb3NzaWJseSBiZWdpbiB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIHByb2JsZW0gaXMuPC9wYXJhPgotCi08cGFyYT5UaGUgcnVsZXMgb2YgdGhlIGdhbWUgYXJlOiBmYWN0cywgZmFjdHMsIGZhY3RzLiAgRG9uJ3Qgb21pdAotdGhlbSBiZWNhdXNlICJvaCwgdGhleSB3b24ndCBiZSByZWxldmFudCIuICBBdCB0aGUgYmFyZQotbWluaW11bTo8L3BhcmE+Ci0KLTxwcm9ncmFtbGlzdGluZz4KLU1hY2hpbmUgdHlwZS4gIE9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbi4gIAotRXhhY3QgdmVyc2lvbiBvZiBiemlwMiAoZG8gYnppcDIgLVYpLiAgCi1FeGFjdCB2ZXJzaW9uIG9mIHRoZSBjb21waWxlciB1c2VkLiAgCi1GbGFncyBwYXNzZWQgdG8gdGhlIGNvbXBpbGVyLgotPC9wcm9ncmFtbGlzdGluZz4KLQotPHBhcmE+SG93ZXZlciwgdGhlIG1vc3QgaW1wb3J0YW50IHNpbmdsZSB0aGluZyB0aGF0IHdpbGwgaGVscCBtZQotaXMgdGhlIGZpbGUgdGhhdCB5b3Ugd2VyZSB0cnlpbmcgdG8gY29tcHJlc3Mgb3IgZGVjb21wcmVzcyBhdCB0aGUKLXRpbWUgdGhlIHByb2JsZW0gaGFwcGVuZWQuICBXaXRob3V0IHRoYXQsIG15IGFiaWxpdHkgdG8gZG8KLWFueXRoaW5nIG1vcmUgdGhhbiBzcGVjdWxhdGUgYWJvdXQgdGhlIGNhdXNlLCBpcyBsaW1pdGVkLjwvcGFyYT4KLQotPC9zZWN0MT4KLQotCi08c2VjdDEgaWQ9InBhY2thZ2UiIHhyZWZsYWJlbD0iRGlkIHlvdSBnZXQgdGhlIHJpZ2h0IHBhY2thZ2U/Ij4KLTx0aXRsZT5EaWQgeW91IGdldCB0aGUgcmlnaHQgcGFja2FnZT88L3RpdGxlPgotCi08cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBpcyBhIHJlc291cmNlIGhvZy4KLUl0IHNvYWtzIHVwIGxhcmdlIGFtb3VudHMgb2YgQ1BVIGN5Y2xlcyBhbmQgbWVtb3J5LiAgQWxzbywgaXQKLWdpdmVzIHZlcnkgbGFyZ2UgbGF0ZW5jaWVzLiAgSW4gdGhlIHdvcnN0IGNhc2UsIHlvdSBjYW4gZmVlZCBtYW55Ci1tZWdhYnl0ZXMgb2YgdW5jb21wcmVzc2VkIGRhdGEgaW50byB0aGUgbGlicmFyeSBiZWZvcmUgZ2V0dGluZwotYW55IGNvbXByZXNzZWQgb3V0cHV0LCBzbyB0aGlzIHByb2JhYmx5IHJ1bGVzIG91dCBhcHBsaWNhdGlvbnMKLXJlcXVpcmluZyBpbnRlcmFjdGl2ZSBiZWhhdmlvdXIuPC9wYXJhPgotCi08cGFyYT5UaGVzZSBhcmVuJ3QgZmF1bHRzIG9mIG15IGltcGxlbWVudGF0aW9uLCBJIGhvcGUsIGJ1dCBtb3JlCi1hbiBpbnRyaW5zaWMgcHJvcGVydHkgb2YgdGhlIEJ1cnJvd3MtV2hlZWxlciB0cmFuc2Zvcm0KLSh1bmZvcnR1bmF0ZWx5KS4gIE1heWJlIHRoaXMgaXNuJ3Qgd2hhdCB5b3Ugd2FudC48L3BhcmE+Ci0KLTxwYXJhPklmIHlvdSB3YW50IGEgY29tcHJlc3NvciBhbmQvb3IgbGlicmFyeSB3aGljaCBpcyBmYXN0ZXIsCi11c2VzIGxlc3MgbWVtb3J5IGJ1dCBnZXRzIHByZXR0eSBnb29kIGNvbXByZXNzaW9uLCBhbmQgaGFzCi1taW5pbWFsIGxhdGVuY3ksIGNvbnNpZGVyIEplYW4tbG91cCBHYWlsbHkncyBhbmQgTWFyayBBZGxlcidzCi13b3JrLCA8Y29tcHV0ZXJvdXRwdXQ+emxpYi0xLjIuMTwvY29tcHV0ZXJvdXRwdXQ+IGFuZAotPGNvbXB1dGVyb3V0cHV0Pmd6aXAtMS4yLjQ8L2NvbXB1dGVyb3V0cHV0Pi4gIExvb2sgZm9yIHRoZW0gYXQgCi08dWxpbmsgdXJsPSJodHRwOi8vd3d3LnpsaWIub3JnIj5odHRwOi8vd3d3LnpsaWIub3JnPC91bGluaz4gYW5kIAotPHVsaW5rIHVybD0iaHR0cDovL3d3dy5nemlwLm9yZyI+aHR0cDovL3d3dy5nemlwLm9yZzwvdWxpbms+Ci1yZXNwZWN0aXZlbHkuPC9wYXJhPgotCi08cGFyYT5Gb3Igc29tZXRoaW5nIGZhc3RlciBhbmQgbGlnaHRlciBzdGlsbCwgeW91IG1pZ2h0IHRyeSBNYXJrdXMgRgotWCBKIE9iZXJodW1lcidzIDxjb21wdXRlcm91dHB1dD5MWk88L2NvbXB1dGVyb3V0cHV0PiByZWFsLXRpbWUKLWNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSwgYXQgCi08dWxpbmsgdXJsPSJodHRwOi8vd3d3Lm9iZXJodW1lci5jb20vb3BlbnNvdXJjZSI+aHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2U8L3VsaW5rPi48L3BhcmE+Ci0KLTwvc2VjdDE+Ci0KLQotCi08c2VjdDEgaWQ9InJlYWRpbmciIHhyZWZsYWJlbD0iRnVydGhlciBSZWFkaW5nIj4KLTx0aXRsZT5GdXJ0aGVyIFJlYWRpbmc8L3RpdGxlPgotCi08cGFyYT48Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0PiBpcyBub3QgcmVzZWFyY2gKLXdvcmssIGluIHRoZSBzZW5zZSB0aGF0IGl0IGRvZXNuJ3QgcHJlc2VudCBhbnkgbmV3IGlkZWFzLgotUmF0aGVyLCBpdCdzIGFuIGVuZ2luZWVyaW5nIGV4ZXJjaXNlIGJhc2VkIG9uIGV4aXN0aW5nCi1pZGVhcy48L3BhcmE+Ci0KLTxwYXJhPkZvdXIgZG9jdW1lbnRzIGRlc2NyaWJlIGVzc2VudGlhbGx5IGFsbCB0aGUgaWRlYXMgYmVoaW5kCi08Y29tcHV0ZXJvdXRwdXQ+YnppcDI8L2NvbXB1dGVyb3V0cHV0Pjo8L3BhcmE+Ci0KLTxsaXRlcmFsbGF5b3V0Pk1pY2hhZWwgQnVycm93cyBhbmQgRC4gSi4gV2hlZWxlcjoKLSAgIkEgYmxvY2stc29ydGluZyBsb3NzbGVzcyBkYXRhIGNvbXByZXNzaW9uIGFsZ29yaXRobSIKLSAgIDEwdGggTWF5IDE5OTQuIAotICAgRGlnaXRhbCBTUkMgUmVzZWFyY2ggUmVwb3J0IDEyNC4KLSAgIGZ0cDovL2Z0cC5kaWdpdGFsLmNvbS9wdWIvREVDL1NSQy9yZXNlYXJjaC1yZXBvcnRzL1NSQy0xMjQucHMuZ3oKLSAgIElmIHlvdSBoYXZlIHRyb3VibGUgZmluZGluZyBpdCwgdHJ5IHNlYXJjaGluZyBhdCB0aGUKLSAgIE5ldyBaZWFsYW5kIERpZ2l0YWwgTGlicmFyeSwgaHR0cDovL3d3dy5uemRsLm9yZy4KLQotRGFuaWVsIFMuIEhpcnNjaGJlcmcgYW5kIERlYnJhIEEuIExlTGV3ZXIKLSAgIkVmZmljaWVudCBEZWNvZGluZyBvZiBQcmVmaXggQ29kZXMiCi0gICBDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNLCBBcHJpbCAxOTkwLCBWb2wgMzMsIE51bWJlciA0LgotICAgWW91IG1pZ2h0IGJlIGFibGUgdG8gZ2V0IGFuIGVsZWN0cm9uaWMgY29weSBvZiB0aGlzCi0gICBmcm9tIHRoZSBBQ00gRGlnaXRhbCBMaWJyYXJ5LgotCi1EYXZpZCBKLiBXaGVlbGVyCi0gICBQcm9ncmFtIGJyZWQzLmMgYW5kIGFjY29tcGFueWluZyBkb2N1bWVudCBicmVkMy5wcy4KLSAgIFRoaXMgY29udGFpbnMgdGhlIGlkZWEgYmVoaW5kIHRoZSBtdWx0aS10YWJsZSBIdWZmbWFuIGNvZGluZyBzY2hlbWUuCi0gICBmdHA6Ly9mdHAuY2wuY2FtLmFjLnVrL3VzZXJzL2RqdzMvCi0KLUpvbiBMLiBCZW50bGV5IGFuZCBSb2JlcnQgU2VkZ2V3aWNrCi0gICJGYXN0IEFsZ29yaXRobXMgZm9yIFNvcnRpbmcgYW5kIFNlYXJjaGluZyBTdHJpbmdzIgotICAgQXZhaWxhYmxlIGZyb20gU2VkZ2V3aWNrJ3Mgd2ViIHBhZ2UsCi0gICB3d3cuY3MucHJpbmNldG9uLmVkdS9+cnMKLTwvbGl0ZXJhbGxheW91dD4KLQotPHBhcmE+VGhlIGZvbGxvd2luZyBwYXBlciBnaXZlcyB2YWx1YWJsZSBhZGRpdGlvbmFsIGluc2lnaHRzIGludG8KLXRoZSBhbGdvcml0aG0sIGJ1dCBpcyBub3QgaW1tZWRpYXRlbHkgdGhlIGJhc2lzIG9mIGFueSBjb2RlIHVzZWQKLWluIGJ6aXAyLjwvcGFyYT4KLQotPGxpdGVyYWxsYXlvdXQ+UGV0ZXIgRmVud2ljazoKLSAgIEJsb2NrIFNvcnRpbmcgVGV4dCBDb21wcmVzc2lvbgotICAgUHJvY2VlZGluZ3Mgb2YgdGhlIDE5dGggQXVzdHJhbGFzaWFuIENvbXB1dGVyIFNjaWVuY2UgQ29uZmVyZW5jZSwKLSAgICAgTWVsYm91cm5lLCBBdXN0cmFsaWEuICBKYW4gMzEgLSBGZWIgMiwgMTk5Ni4KLSAgIGZ0cDovL2Z0cC5jcy5hdWNrbGFuZC5hYy5uei9wdWIvcGV0ZXItZi9BQ1NDOTZwYXBlci5wczwvbGl0ZXJhbGxheW91dD4KLQotPHBhcmE+S3VuaWhpa28gU2FkYWthbmUncyBzb3J0aW5nIGFsZ29yaXRobSwgbWVudGlvbmVkIGFib3ZlLCBpcwotYXZhaWxhYmxlIGZyb206PC9wYXJhPgotCi08bGl0ZXJhbGxheW91dD5odHRwOi8vbmFvbWkuaXMucy51LXRva3lvLmFjLmpwL35zYWRhL3BhcGVycy9TYWRhOThiLnBzLmd6Ci08L2xpdGVyYWxsYXlvdXQ+Ci0KLTxwYXJhPlRoZSBNYW5iZXItTXllcnMgc3VmZml4IGFycmF5IGNvbnN0cnVjdGlvbiBhbGdvcml0aG0gaXMKLWRlc2NyaWJlZCBpbiBhIHBhcGVyIGF2YWlsYWJsZSBmcm9tOjwvcGFyYT4KLQotPGxpdGVyYWxsYXlvdXQ+aHR0cDovL3d3dy5jcy5hcml6b25hLmVkdS9wZW9wbGUvZ2VuZS9QQVBFUlMvc3VmZml4LnBzCi08L2xpdGVyYWxsYXlvdXQ+Ci0KLTxwYXJhPkZpbmFsbHksIHRoZSBmb2xsb3dpbmcgcGFwZXJzIGRvY3VtZW50IHNvbWUKLWludmVzdGlnYXRpb25zIEkgbWFkZSBpbnRvIHRoZSBwZXJmb3JtYW5jZSBvZiBzb3J0aW5nCi1hbmQgZGVjb21wcmVzc2lvbiBhbGdvcml0aG1zOjwvcGFyYT4KLQotPGxpdGVyYWxsYXlvdXQ+SnVsaWFuIFNld2FyZAotICAgT24gdGhlIFBlcmZvcm1hbmNlIG9mIEJXVCBTb3J0aW5nIEFsZ29yaXRobXMKLSAgIFByb2NlZWRpbmdzIG9mIHRoZSBJRUVFIERhdGEgQ29tcHJlc3Npb24gQ29uZmVyZW5jZSAyMDAwCi0gICAgIFNub3diaXJkLCBVdGFoLiAgMjgtMzAgTWFyY2ggMjAwMC4KLQotSnVsaWFuIFNld2FyZAotICAgU3BhY2UtdGltZSBUcmFkZW9mZnMgaW4gdGhlIEludmVyc2UgQi1XIFRyYW5zZm9ybQotICAgUHJvY2VlZGluZ3Mgb2YgdGhlIElFRUUgRGF0YSBDb21wcmVzc2lvbiBDb25mZXJlbmNlIDIwMDEKLSAgICAgU25vd2JpcmQsIFV0YWguICAyNy0yOSBNYXJjaCAyMDAxLgotPC9saXRlcmFsbGF5b3V0PgotCi08L3NlY3QxPgotCi08L2NoYXB0ZXI+Ci0KLTwvYm9vaz4KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL21rMjUxLmMgYi9VdGlsaXRpZXMvY21iemlwMi9tazI1MS5jCmluZGV4IDM5ZTk0YzAuLjZjNWJiZjkgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL21rMjUxLmMKKysrIGIvVXRpbGl0aWVzL2NtYnppcDIvbWsyNTEuYwpAQCAtOSw4ICs5LDggQEAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJ6aXAyL2xpYmJ6aXAyLCBhIHByb2dyYW0gYW5kIGxpYnJhcnkgZm9yCiAgICBsb3NzbGVzcywgYmxvY2stc29ydGluZyBkYXRhIGNvbXByZXNzaW9uLgogCi0gICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcKLSAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDA3IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYnppcC5vcmc+CisgICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC44IG9mIDEzIEp1bHkgMjAxOQorICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMTkgSnVsaWFuIFNld2FyZCA8anNld2FyZEBhY20ub3JnPgogCiAgICBQbGVhc2UgcmVhZCB0aGUgV0FSTklORywgRElTQ0xBSU1FUiBhbmQgUEFURU5UUyBzZWN0aW9ucyBpbiB0aGUgCiAgICBSRUFETUUgZmlsZS4KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL3JhbmR0YWJsZS5jIGIvVXRpbGl0aWVzL2NtYnppcDIvcmFuZHRhYmxlLmMKaW5kZXggMDY4Yjc2My4uYmRjNmQ0YSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvcmFuZHRhYmxlLmMKKysrIGIvVXRpbGl0aWVzL2NtYnppcDIvcmFuZHRhYmxlLmMKQEAgLTgsOCArOCw4IEBACiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBiemlwMi9saWJiemlwMiwgYSBwcm9ncmFtIGFuZCBsaWJyYXJ5IGZvcgogICAgbG9zc2xlc3MsIGJsb2NrLXNvcnRpbmcgZGF0YSBjb21wcmVzc2lvbi4KIAotICAgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuNSBvZiAxMCBEZWNlbWJlciAyMDA3Ci0gICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNyBKdWxpYW4gU2V3YXJkIDxqc2V3YXJkQGJ6aXAub3JnPgorICAgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuOCBvZiAxMyBKdWx5IDIwMTkKKyAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDE5IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYWNtLm9yZz4KIAogICAgUGxlYXNlIHJlYWQgdGhlIFdBUk5JTkcsIERJU0NMQUlNRVIgYW5kIFBBVEVOVFMgc2VjdGlvbnMgaW4gdGhlIAogICAgUkVBRE1FIGZpbGUuCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9zYW1wbGUxLnJiMiBiL1V0aWxpdGllcy9jbWJ6aXAyL3NhbXBsZTEucmIyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWRkYTM2Li4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL3NhbXBsZTEucmIyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvc2FtcGxlMS5yZWYgYi9VdGlsaXRpZXMvY21iemlwMi9zYW1wbGUxLnJlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM4NjllZS4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9zYW1wbGUxLnJlZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL3NhbXBsZTEudHN0IGIvVXRpbGl0aWVzL2NtYnppcDIvc2FtcGxlMS50c3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjODY5ZWUuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvc2FtcGxlMS50c3QKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9zYW1wbGUyLnJiMiBiL1V0aWxpdGllcy9jbWJ6aXAyL3NhbXBsZTIucmIyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTU0Mjk3Li4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL3NhbXBsZTIucmIyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvc2FtcGxlMi5yZWYgYi9VdGlsaXRpZXMvY21iemlwMi9zYW1wbGUyLnJlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBlNWI1OC4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9zYW1wbGUyLnJlZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL3NhbXBsZTIudHN0IGIvVXRpbGl0aWVzL2NtYnppcDIvc2FtcGxlMi50c3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZTViNTguLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvc2FtcGxlMi50c3QKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi9zYW1wbGUzLnJiMiBiL1V0aWxpdGllcy9jbWJ6aXAyL3NhbXBsZTMucmIyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzliMDhjLi4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL3NhbXBsZTMucmIyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvc2FtcGxlMy5yZWYgYi9VdGlsaXRpZXMvY21iemlwMi9zYW1wbGUzLnJlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc1YTJmNi4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9zYW1wbGUzLnJlZgorKysgL2Rldi9udWxsCkBAIC0xLDMwMDA3ICswLDAgQEAKLVRoaXMgZmlsZSBpcyBleGNlZWRpbmdseSBib3JpbmcuICBJZiB5b3UgZmluZCB5b3Vyc2VsZgotcmVhZGluZyBpdCwgcGxlYXNlICgxKSB0YWtlIGl0IGZyb20gbWUgdGhhdCB5b3UgY2FuIHNhZmVseQotZ3Vlc3Mgd2hhdCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBzYXlzLCBhbmQgKDIpIHNlZWsgcHJvZmVzc2lvbmFsCi1oZWxwLgotCi1wcy4gIHRoZXJlIGFyZSBubyBmdXJ0aGVyIHNhcmNhc3RpYyByZW1hcmtzIGluIHRoaXMgZmlsZS4KLQotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvc2FtcGxlMy50c3QgYi9VdGlsaXRpZXMvY21iemlwMi9zYW1wbGUzLnRzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc1YTJmNi4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi9zYW1wbGUzLnRzdAorKysgL2Rldi9udWxsCkBAIC0xLDMwMDA3ICswLDAgQEAKLVRoaXMgZmlsZSBpcyBleGNlZWRpbmdseSBib3JpbmcuICBJZiB5b3UgZmluZCB5b3Vyc2VsZgotcmVhZGluZyBpdCwgcGxlYXNlICgxKSB0YWtlIGl0IGZyb20gbWUgdGhhdCB5b3UgY2FuIHNhZmVseQotZ3Vlc3Mgd2hhdCB0aGUgcmVzdCBvZiB0aGUgZmlsZSBzYXlzLCBhbmQgKDIpIHNlZWsgcHJvZmVzc2lvbmFsCi1oZWxwLgotCi1wcy4gIHRoZXJlIGFyZSBubyBmdXJ0aGVyIHNhcmNhc3RpYyByZW1hcmtzIGluIHRoaXMgZmlsZS4KLQotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaAotdWdoCi11Z2gKLXVnaApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvc3Bld0cuYyBiL1V0aWxpdGllcy9jbWJ6aXAyL3NwZXdHLmMKaW5kZXggN2JkMTI4NC4uNjVkMjRjOCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvc3Bld0cuYworKysgYi9VdGlsaXRpZXMvY21iemlwMi9zcGV3Ry5jCkBAIC0xMywxNSArMTMsMTUgQEAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJ6aXAyL2xpYmJ6aXAyLCBhIHByb2dyYW0gYW5kIGxpYnJhcnkgZm9yCiAgICBsb3NzbGVzcywgYmxvY2stc29ydGluZyBkYXRhIGNvbXByZXNzaW9uLgogCi0gICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcKLSAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDA3IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYnppcC5vcmc+CisgICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC44IG9mIDEzIEp1bHkgMjAxOQorICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMTkgSnVsaWFuIFNld2FyZCA8anNld2FyZEBhY20ub3JnPgogCiAgICBQbGVhc2UgcmVhZCB0aGUgV0FSTklORywgRElTQ0xBSU1FUiBhbmQgUEFURU5UUyBzZWN0aW9ucyBpbiB0aGUgCiAgICBSRUFETUUgZmlsZS4KIAogICAgVGhpcyBwcm9ncmFtIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBjb250YWluZWQKICAgIGluIHRoZSBmaWxlIExJQ0VOU0UuCi0gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogCiAjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi91bnpjcmFzaC5jIGIvVXRpbGl0aWVzL2NtYnppcDIvdW56Y3Jhc2guYwppbmRleCBhMWI3NTQ2Li5jNjhmOTNjIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi91bnpjcmFzaC5jCisrKyBiL1V0aWxpdGllcy9jbWJ6aXAyL3VuemNyYXNoLmMKQEAgLTE3LDggKzE3LDggQEAKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJ6aXAyL2xpYmJ6aXAyLCBhIHByb2dyYW0gYW5kIGxpYnJhcnkgZm9yCiAgICBsb3NzbGVzcywgYmxvY2stc29ydGluZyBkYXRhIGNvbXByZXNzaW9uLgogCi0gICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDcKLSAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDA3IEp1bGlhbiBTZXdhcmQgPGpzZXdhcmRAYnppcC5vcmc+CisgICBiemlwMi9saWJiemlwMiB2ZXJzaW9uIDEuMC44IG9mIDEzIEp1bHkgMjAxOQorICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMTkgSnVsaWFuIFNld2FyZCA8anNld2FyZEBhY20ub3JnPgogCiAgICBQbGVhc2UgcmVhZCB0aGUgV0FSTklORywgRElTQ0xBSU1FUiBhbmQgUEFURU5UUyBzZWN0aW9ucyBpbiB0aGUgCiAgICBSRUFETUUgZmlsZS4KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL3dvcmRzMCBiL1V0aWxpdGllcy9jbWJ6aXAyL3dvcmRzMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJmNDQyYS4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi93b3JkczAKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLQotSWYgY29tcGlsYXRpb24gcHJvZHVjZXMgZXJyb3JzLCBvciBhIGxhcmdlIG51bWJlciBvZiB3YXJuaW5ncywKLXBsZWFzZSByZWFkIFJFQURNRS5DT01QSUxBVElPTi5QUk9CTEVNUyAtLSB5b3UgbWlnaHQgYmUgYWJsZSB0bwotYWRqdXN0IHRoZSBmbGFncyBpbiB0aGlzIE1ha2VmaWxlIHRvIGltcHJvdmUgbWF0dGVycy4KLQotQWxzbyBpbiBSRUFETUUuQ09NUElMQVRJT04uUFJPQkxFTVMgYXJlIHNvbWUgaGludHMgdGhhdCBtYXkgaGVscAotaWYgeW91ciBidWlsZCBwcm9kdWNlcyBhbiBleGVjdXRhYmxlIHdoaWNoIGlzIHVuYWJsZSB0byBjb3JyZWN0bHkKLWhhbmRsZSBzby1jYWxsZWQgJ2xhcmdlIGZpbGVzJyAtLSBmaWxlcyBvZiBzaXplIDJHQiBvciBtb3JlLgotCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21iemlwMi93b3JkczEgYi9VdGlsaXRpZXMvY21iemlwMi93b3JkczEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlODNkZTkuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtYnppcDIvd29yZHMxCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0KLURvaW5nIDYgdGVzdHMgKDMgY29tcHJlc3MsIDMgdW5jb21wcmVzcykgLi4uCi1JZiB0aGVyZSdzIGEgcHJvYmxlbSwgdGhpbmdzIG1pZ2h0IHN0b3AgYXQgdGhpcyBwb2ludC4KLSAKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL3dvcmRzMiBiL1V0aWxpdGllcy9jbWJ6aXAyL3dvcmRzMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FkZGNmNC4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21iemlwMi93b3JkczIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLQotQ2hlY2tpbmcgdGVzdCByZXN1bHRzLiAgSWYgYW55IG9mIHRoZSBmb3VyICJjbXAicyB3aGljaCBmb2xsb3cKLXJlcG9ydCBhbnkgZGlmZmVyZW5jZXMsIHNvbWV0aGluZyBpcyB3cm9uZy4gIElmIHlvdSBjYW4ndCBlYXNpbHkKLWZpZ3VyZSBvdXQgd2hhdCwgcGxlYXNlIGxldCBtZSBrbm93IChqc2V3YXJkQGJ6aXAub3JnKS4KLQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtYnppcDIvd29yZHMzIGIvVXRpbGl0aWVzL2NtYnppcDIvd29yZHMzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTcyNjY5Li4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL3dvcmRzMworKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLQotSWYgeW91IGdvdCB0aGlzIGZhciBhbmQgdGhlICdjbXAncyBkaWRuJ3QgY29tcGxhaW4sIGl0IGxvb2tzCi1saWtlIHlvdSdyZSBpbiBidXNpbmVzcy4gIAotCi1UbyBpbnN0YWxsIGluIC91c3IvbG9jYWwvYmluLCAvdXNyL2xvY2FsL2xpYiwgL3Vzci9sb2NhbC9tYW4gYW5kIAotL3Vzci9sb2NhbC9pbmNsdWRlLCB0eXBlCi0KLSAgIG1ha2UgaW5zdGFsbAotCi1UbyBpbnN0YWxsIHNvbWV3aGVyZSBlbHNlLCBlZywgL3h4eC95eXkve2JpbixsaWIsbWFuLGluY2x1ZGV9LCB0eXBlIAotCi0gICBtYWtlIGluc3RhbGwgUFJFRklYPS94eHgveXl5Ci0KLUlmIHlvdSBhcmUgKGp1c3RpZmlhYmx5KSBwYXJhbm9pZCBhbmQgd2FudCB0byBzZWUgd2hhdCAnbWFrZSBpbnN0YWxsJwotaXMgZ29pbmcgdG8gZG8sIHlvdSBjYW4gZmlyc3QgZG8KLQotICAgbWFrZSAtbiBpbnN0YWxsICAgICAgICAgICAgICAgICAgICAgIG9yCi0gICBtYWtlIC1uIGluc3RhbGwgUFJFRklYPS94eHgveXl5ICAgICAgcmVzcGVjdGl2ZWx5LgotCi1UaGUgLW4gaW5zdHJ1Y3RzIG1ha2UgdG8gc2hvdyB0aGUgY29tbWFuZHMgaXQgd291bGQgZXhlY3V0ZSwgYnV0Ci1ub3QgYWN0dWFsbHkgZXhlY3V0ZSB0aGVtLgotCi1JbnN0cnVjdGlvbnMgZm9yIHVzZSBhcmUgaW4gdGhlIHByZWZvcm1hdHRlZCBtYW51YWwgcGFnZSwgaW4gdGhlIGZpbGUKLWJ6aXAyLnR4dC4gIEZvciBtb3JlIGRldGFpbGVkIGRvY3VtZW50YXRpb24sIHJlYWQgdGhlIGZ1bGwgbWFudWFsLiAgCi1JdCBpcyBhdmFpbGFibGUgaW4gUG9zdHNjcmlwdCBmb3JtIChtYW51YWwucHMpLCBQREYgZm9ybSAobWFudWFsLnBkZiksCi1hbmQgSFRNTCBmb3JtIChtYW51YWwuaHRtbCkuCi0KLVlvdSBjYW4gYWxzbyBkbyAiYnppcDIgLS1oZWxwIiB0byBzZWUgc29tZSBoZWxwZnVsIGluZm9ybWF0aW9uLiAKLSJiemlwMiAtTCIgZGlzcGxheXMgdGhlIHNvZnR3YXJlIGxpY2Vuc2UuCi0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWJ6aXAyL3htbHByb2Muc2ggYi9VdGlsaXRpZXMvY21iemlwMi94bWxwcm9jLnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1Mzg0MTc3Li4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWJ6aXAyL3htbHByb2Muc2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotIyEvYmluL2Jhc2gKLSMgc2VlIHRoZSBSRUFETUUgZmlsZSBmb3IgdXNhZ2UgZXRjLgotIwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJ6aXAyL2xpYmJ6aXAyLCBhIHByb2dyYW0gYW5kIGxpYnJhcnkgZm9yCi0jICBsb3NzbGVzcywgYmxvY2stc29ydGluZyBkYXRhIGNvbXByZXNzaW9uLgotIwotIyAgYnppcDIvbGliYnppcDIgdmVyc2lvbiAxLjAuNSBvZiAxMCBEZWNlbWJlciAyMDA3Ci0jICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNyBKdWxpYW4gU2V3YXJkIDxqc2V3YXJkQGJ6aXAub3JnPgotIwotIyAgUGxlYXNlIHJlYWQgdGhlIFdBUk5JTkcsIERJU0NMQUlNRVIgYW5kIFBBVEVOVFMgc2VjdGlvbnMgaW4gdGhlIAotIyAgUkVBRE1FIGZpbGUuCi0jCi0jICBUaGlzIHByb2dyYW0gaXMgcmVsZWFzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBsaWNlbnNlIGNvbnRhaW5lZAotIyAgaW4gdGhlIGZpbGUgTElDRU5TRS4KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLXVzYWdlKCkgewotICBlY2hvICcnOwotICBlY2hvICdVc2FnZTogeG1scHJvYy5zaCAtW29wdGlvbl0gPGZpbGVuYW1lLnhtbD4nOwotICBlY2hvICdTcGVjaWZ5IGEgdGFyZ2V0IGZyb206JzsKLSAgZWNobyAnLXYgICAgICB2ZXJpZnkgeG1sIGZpbGUgY29uZm9ybXMgdG8gZHRkJzsKLSAgZWNobyAnLWh0bWwgICBvdXRwdXQgaW4gaHRtbCBmb3JtYXQgKHNpbmdsZSBmaWxlKSc7Ci0gIGVjaG8gJy1wcyAgICAgb3V0cHV0IGluIHBvc3RzY3JpcHQgZm9ybWF0JzsKLSAgZWNobyAnLXBkZiAgICBvdXRwdXQgaW4gcGRmIGZvcm1hdCc7Ci0gIGV4aXQ7Ci19Ci0KLWlmIHRlc3QgJCMgLW5lIDI7IHRoZW4KLSAgdXNhZ2UKLWZpCi0jIGFzc2lnbiB0aGUgdmFyaWFibGUgZm9yIHRoZSBvdXRwdXQgdHlwZQotYWN0aW9uPSQxOyBzaGlmdAotIyBhc3NpZ24gdGhlIG91dHB1dCBmaWxlbmFtZQoteG1sZmlsZT0kMTsgc2hpZnQKLSMgYW5kIGNoZWNrIHVzZXIgaW5wdXQgaXQgY29ycmVjdAotaWYgISh0ZXN0IC1mICR4bWxmaWxlKTsgdGhlbgotICBlY2hvICJObyBzdWNoIGZpbGU6ICR4bWxmaWxlIjsKLSAgZXhpdDsKLWZpCi0jIHNvbWUgb3RoZXIgc3R1ZmYgd2Ugd2lsbCB1c2UKLU9VVD1vdXRwdXQKLXhzbF9mbz1iei1mby54c2wKLXhzbF9odG1sPWJ6LWh0bWwueHNsCi0KLWJhc2VuYW1lPSR4bWxmaWxlCi1iYXNlbmFtZT0ke2Jhc2VuYW1lLy8nLnhtbCcvJyd9Ci0KLWZvZmlsZT0iJHtiYXNlbmFtZX0uZm8iCi1odG1sZmlsZT0iJHtiYXNlbmFtZX0uaHRtbCIKLXBkZmZpbGU9IiR7YmFzZW5hbWV9LnBkZiIKLXBzZmlsZT0iJHtiYXNlbmFtZX0ucHMiCi14bWxmbXRmaWxlPSIke2Jhc2VuYW1lfS5mbXQiCi0KLSMgZmlyc3QgcHJvY2VzcyB0aGUgeG1sZmlsZSB3aXRoIENEQVRBIHRhZ3MKLS4vZm9ybWF0LnBsICR4bWxmaWxlICR4bWxmbXRmaWxlCi0jIHNvIHRoZSBzaGVsbCBrbm93cyB3aGVyZSB0aGUgY2F0YWxvZ3MgbGl2ZQotZXhwb3J0IFhNTF9DQVRBTE9HX0ZJTEVTPS9ldGMveG1sL2NhdGFsb2cKLQotIyBwb3N0LXByb2Nlc3NpbmcgdGlkeSB1cAotY2xlYW51cCgpIHsKLSAgZWNobyAiQ2xlYW5pbmcgdXA6ICRAIiAKLSAgd2hpbGUgWyAkIyAhPSAwIF0KLSAgZG8KLSAgICBhcmc9JDE7IHNoaWZ0OwotICAgIGVjaG8gIiAgZGVsZXRpbmcgJGFyZyI7Ci0gICAgcm0gJGFyZwotICBkb25lCi19Ci0KLWNhc2UgJGFjdGlvbiBpbgotICAtdikKLSAgIGZsYWdzPSctLW5vb3V0IC0teGluY2x1ZGUgLS1ub2JsYW5rcyAtLXBvc3R2YWxpZCcKLSAgIGR0ZD0nLS1kdGR2YWxpZCBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQnCi0gICB4bWxsaW50ICRmbGFncyAkZHRkICR4bWxmbXRmaWxlIDI+ICRPVVQgCi0gICBlZ3JlcCAnZXJyb3InICRPVVQgCi0gICBybSAkT1VUCi0gIDs7Ci0KLSAgLWh0bWwpCi0gICBlY2hvICJDcmVhdGluZyAkaHRtbGZpbGUgLi4uIgotICAgeHNsdHByb2MgLS1ub25ldCAtLXhpbmNsdWRlICAtbyAkaHRtbGZpbGUgJHhzbF9odG1sICR4bWxmbXRmaWxlCi0gICBjbGVhbnVwICR4bWxmbXRmaWxlCi0gIDs7Ci0KLSAgLXBkZikKLSAgIGVjaG8gIkNyZWF0aW5nICRwZGZmaWxlIC4uLiIKLSAgIHhzbHRwcm9jIC0tbm9uZXQgLS14aW5jbHVkZSAtbyAkZm9maWxlICR4c2xfZm8gJHhtbGZtdGZpbGUKLSAgIHBkZnhtbHRleCAkZm9maWxlID4kT1VUIDwvZGV2L251bGwKLSAgIHBkZnhtbHRleCAkZm9maWxlID4kT1VUIDwvZGV2L251bGwKLSAgIHBkZnhtbHRleCAkZm9maWxlID4kT1VUIDwvZGV2L251bGwKLSAgIGNsZWFudXAgJE9VVCAkeG1sZm10ZmlsZSAqLmF1eCAqLmZvICoubG9nICoub3V0Ci0gIDs7Ci0KLSAgLXBzKQotICAgZWNobyAiQ3JlYXRpbmcgJHBzZmlsZSAuLi4iCi0gICB4c2x0cHJvYyAtLW5vbmV0IC0teGluY2x1ZGUgLW8gJGZvZmlsZSAkeHNsX2ZvICR4bWxmbXRmaWxlCi0gICBwZGZ4bWx0ZXggJGZvZmlsZSA+JE9VVCA8L2Rldi9udWxsCi0gICBwZGZ4bWx0ZXggJGZvZmlsZSA+JE9VVCA8L2Rldi9udWxsCi0gICBwZGZ4bWx0ZXggJGZvZmlsZSA+JE9VVCA8L2Rldi9udWxsCi0gICBwZGZ0b3BzICRwZGZmaWxlICRwc2ZpbGUKLSAgIGNsZWFudXAgJE9VVCAkeG1sZm10ZmlsZSAkcGRmZmlsZSAqLmF1eCAqLmZvICoubG9nICoub3V0Ci0jICBwYXNzaXZldGV4IGlzIGJyb2tlbiwgc28gd2UgY2FuJ3QgZ28gdGhpcyByb3V0ZSB5ZXQuCi0jICAgeG1sdGV4ICRmb2ZpbGUgPiRPVVQgPC9kZXYvbnVsbAotIyAgIHhtbHRleCAkZm9maWxlID4kT1VUIDwvZGV2L251bGwKLSMgICB4bWx0ZXggJGZvZmlsZSA+JE9VVCA8L2Rldi9udWxsCi0jICAgZHZpcHMgLVIgLXEgLW8gYnppcC1tYW51YWwucHMgKi5kdmkKLSAgOzsKLQotICAqKQotICB1c2FnZQotICA7OwotZXNhYwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9DTWFrZS9DdXJsU3ltYm9sSGlkaW5nLmNtYWtlIGIvVXRpbGl0aWVzL2NtY3VybC9DTWFrZS9DdXJsU3ltYm9sSGlkaW5nLmNtYWtlCmluZGV4IDYwZWU4ZTYuLjhlNWZkNjcgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvQ3VybFN5bWJvbEhpZGluZy5jbWFrZQorKysgYi9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0N1cmxTeW1ib2xIaWRpbmcuY21ha2UKQEAgLTExLDEzICsxMSw3IEBACiAgICAgc2V0KF9TWU1CT0xfRVhURVJOICJfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKFwiZGVmYXVsdFwiKSkpIikKICAgICBzZXQoX0NGTEFHX1NZTUJPTFNfSElERSAiLWZ2aXNpYmlsaXR5PWhpZGRlbiIpCiAgIGVsc2VpZihDTUFLRV9DT01QSUxFUl9JU19HTlVDQykKLSAgICBpZihOT1QgQ01BS0VfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMi44LjEwKQotICAgICAgc2V0KEdDQ19WRVJTSU9OICR7Q01BS0VfQ19DT01QSUxFUl9WRVJTSU9OfSkKLSAgICBlbHNlKCkKLSAgICAgIGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ19DT01QSUxFUn0gLWR1bXB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgT1VUUFVUX1ZBUklBQkxFIEdDQ19WRVJTSU9OKQotICAgIGVuZGlmKCkKLSAgICBpZihOT1QgR0NDX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDMuNCkKKyAgICBpZihOT1QgQ01BS0VfQ19DT01QSUxFUl9WRVJTSU9OIFZFUlNJT05fTEVTUyAzLjQpCiAgICAgICAjIG5vdGU6IHRoaXMgaXMgY29uc2lkZXJlZCBidWdneSBwcmlvciB0byA0LjAgYnV0IHRoZSBhdXRvdG9vbHMgZG9uJ3QgY2FyZSwgc28gbGV0J3MgaWdub3JlIHRoYXQgZmFjdAogICAgICAgc2V0KFNVUFBPUlRTX1NZTUJPTF9ISURJTkcgVFJVRSkKICAgICAgIHNldChfU1lNQk9MX0VYVEVSTiAiX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fIChcImRlZmF1bHRcIikpKSIpCkBAIC0yOSw3ICsyMyw3IEBACiAgICAgc2V0KF9DRkxBR19TWU1CT0xTX0hJREUgIi14bGRzY29wZT1oaWRkZW4iKQogICBlbHNlaWYoQ01BS0VfQ19DT01QSUxFUl9JRCBNQVRDSEVTICJJbnRlbCIgQU5EIE5PVCBDTUFLRV9DX0NPTVBJTEVSX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDkuMCkKICAgICAjIG5vdGU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IGp1c3QgY2hlY2sgZm9yIHZlcnNpb24gOS4xLjA0NSBidXQgSSdtIG5vdCAxMDAlIHN1cmUKLSAgICAjICAgICAgIHNvIGxldCdzIHRvIGl0IHRoZSBzYW1lIHdheSBhdXRvdG9vbHMgZG8uCisgICAgIyAgICAgICBzbyBsZXQncyBkbyBpdCB0aGUgc2FtZSB3YXkgYXV0b3Rvb2xzIGRvLgogICAgIHNldChTVVBQT1JUU19TWU1CT0xfSElESU5HIFRSVUUpCiAgICAgc2V0KF9TWU1CT0xfRVhURVJOICJfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKFwiZGVmYXVsdFwiKSkpIikKICAgICBzZXQoX0NGTEFHX1NZTUJPTFNfSElERSAiLWZ2aXNpYmlsaXR5PWhpZGRlbiIpCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0N1cmxUZXN0cy5jIGIvVXRpbGl0aWVzL2NtY3VybC9DTWFrZS9DdXJsVGVzdHMuYwppbmRleCAwN2I1MTZiLi4zZWYzNWYwIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0N1cmxUZXN0cy5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvQ3VybFRlc3RzLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTEyNSw2ICsxMjUsNyBAQAogI2lmICAgZGVmaW5lZChIQVZFX0dFVEhPU1RCWUFERFJfUl81KSB8fCBcCiAgICAgICBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZQUREUl9SXzVfUkVFTlRSQU5UKQogICByYyA9IGdldGhvc3RieWFkZHJfcihhZGRyZXNzLCBsZW5ndGgsIHR5cGUsICZoLCAmaGRhdGEpOworICAodm9pZClyYzsKICNlbGlmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllBRERSX1JfNykgfHwgXAogICAgICAgZGVmaW5lZChIQVZFX0dFVEhPU1RCWUFERFJfUl83X1JFRU5UUkFOVCkKICAgaHAgPSBnZXRob3N0YnlhZGRyX3IoYWRkcmVzcywgbGVuZ3RoLCB0eXBlLCAmaCwgYnVmZmVyLCA4MTkyLCAmaF9lcnJub3ApOwpAQCAtMTMyLDYgKzEzMyw3IEBACiAjZWxpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZQUREUl9SXzgpIHx8IFwKICAgICAgIGRlZmluZWQoSEFWRV9HRVRIT1NUQllBRERSX1JfOF9SRUVOVFJBTlQpCiAgIHJjID0gZ2V0aG9zdGJ5YWRkcl9yKGFkZHJlc3MsIGxlbmd0aCwgdHlwZSwgJmgsIGJ1ZmZlciwgODE5MiwgJmhwLCAmaF9lcnJub3ApOworICAodm9pZClyYzsKICNlbmRpZgogCiAjaWYgICBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzMpIHx8IFwKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvRmluZEJlYXJTU0wuY21ha2UgYi9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0ZpbmRCZWFyU1NMLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZDIzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0ZpbmRCZWFyU1NMLmNtYWtlCkBAIC0wLDAgKzEsOSBAQAorZmluZF9wYXRoKEJFQVJTU0xfSU5DTFVERV9ESVJTIGJlYXJzc2wuaCkKKworZmluZF9saWJyYXJ5KEJFQVJTU0xfTElCUkFSWSBiZWFyc3NsKQorCitpbmNsdWRlKEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRBcmdzKQorZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdzKEJFQVJTU0wgREVGQVVMVF9NU0cKKyAgICBCRUFSU1NMX0lOQ0xVREVfRElSUyBCRUFSU1NMX0xJQlJBUlkpCisKK21hcmtfYXNfYWR2YW5jZWQoQkVBUlNTTF9JTkNMVURFX0RJUlMgQkVBUlNTTF9MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9DTWFrZS9GaW5kQ0FSRVMuY21ha2UgYi9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0ZpbmRDQVJFUy5jbWFrZQppbmRleCA3MjMwNDRhLi4zZDFiYWU2IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0ZpbmRDQVJFUy5jbWFrZQorKysgYi9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0ZpbmRDQVJFUy5jbWFrZQpAQCAtNywzNCArNywxNiBAQAogIyBhbHNvIGRlZmluZWQsIGJ1dCBub3QgZm9yIGdlbmVyYWwgdXNlIGFyZQogIyBDQVJFU19MSUJSQVJZLCB3aGVyZSB0byBmaW5kIHRoZSBjLWFyZXMgbGlicmFyeS4KIAotZmluZF9wYXRoKENBUkVTX0lOQ0xVREVfRElSIGFyZXMuaAotICAvdXNyL2xvY2FsL2luY2x1ZGUKLSAgL3Vzci9pbmNsdWRlCi0gICkKK2ZpbmRfcGF0aChDQVJFU19JTkNMVURFX0RJUiBhcmVzLmgpCiAKIHNldChDQVJFU19OQU1FUyAke0NBUkVTX05BTUVTfSBjYXJlcykKIGZpbmRfbGlicmFyeShDQVJFU19MSUJSQVJZCiAgIE5BTUVTICR7Q0FSRVNfTkFNRVN9Ci0gIFBBVEhTIC91c3IvbGliIC91c3IvbG9jYWwvbGliCiAgICkKIAotaWYoQ0FSRVNfTElCUkFSWSBBTkQgQ0FSRVNfSU5DTFVERV9ESVIpCi0gIHNldChDQVJFU19MSUJSQVJJRVMgJHtDQVJFU19MSUJSQVJZfSkKLSAgc2V0KENBUkVTX0ZPVU5EICJZRVMiKQotZWxzZSgpCi0gIHNldChDQVJFU19GT1VORCAiTk8iKQotZW5kaWYoKQotCi0KLWlmKENBUkVTX0ZPVU5EKQotICBpZihOT1QgQ0FSRVNfRklORF9RVUlFVExZKQotICAgIG1lc3NhZ2UoU1RBVFVTICJGb3VuZCBjLWFyZXM6ICR7Q0FSRVNfTElCUkFSSUVTfSIpCi0gIGVuZGlmKCkKLWVsc2UoKQotICBpZihDQVJFU19GSU5EX1JFUVVJUkVEKQotICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkNvdWxkIG5vdCBmaW5kIGMtYXJlcyBsaWJyYXJ5IikKLSAgZW5kaWYoKQotZW5kaWYoKQoraW5jbHVkZShGaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKK2ZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncyhDQVJFUworICAgIFJFUVVJUkVEX1ZBUlMgQ0FSRVNfTElCUkFSWSBDQVJFU19JTkNMVURFX0RJUikKIAogbWFya19hc19hZHZhbmNlZCgKICAgQ0FSRVNfTElCUkFSWQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9DTWFrZS9GaW5kR1NTLmNtYWtlIGIvVXRpbGl0aWVzL2NtY3VybC9DTWFrZS9GaW5kR1NTLmNtYWtlCmluZGV4IDhhMjhmMmYuLmEyZjE1MGMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvRmluZEdTUy5jbWFrZQorKysgYi9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0ZpbmRHU1MuY21ha2UKQEAgLTYyLDYgKzYyLDcgQEAKICAgICAgICAgICBDT01NQU5EICR7X0dTU19DT05GSUdVUkVfU0NSSVBUfSAiLS1jZmxhZ3MiICJnc3NhcGkiCiAgICAgICAgICAgT1VUUFVUX1ZBUklBQkxFIF9HU1NfQ0ZMQUdTCiAgICAgICAgICAgUkVTVUxUX1ZBUklBQkxFIF9HU1NfQ09ORklHVVJFX0ZBSUxFRAorICAgICAgICAgIE9VVFBVVF9TVFJJUF9UUkFJTElOR19XSElURVNQQUNFCiAgICAgICApCiAgICAgbWVzc2FnZShTVEFUVVMgIkNGTEFHUzogJHtfR1NTX0NGTEFHU30iKQogICAgIGlmKE5PVCBfR1NTX0NPTkZJR1VSRV9GQUlMRUQpICMgMCBtZWFucyBzdWNjZXNzCkBAIC04NCw2ICs4NSw3IEBACiAgICAgICAgIENPTU1BTkQgJHtfR1NTX0NPTkZJR1VSRV9TQ1JJUFR9ICItLWxpYnMiICJnc3NhcGkiCiAgICAgICAgIE9VVFBVVF9WQVJJQUJMRSBfR1NTX0xJQl9GTEFHUwogICAgICAgICBSRVNVTFRfVkFSSUFCTEUgX0dTU19DT05GSUdVUkVfRkFJTEVECisgICAgICAgIE9VVFBVVF9TVFJJUF9UUkFJTElOR19XSElURVNQQUNFCiAgICAgKQogICAgIG1lc3NhZ2UoU1RBVFVTICJMREZMQUdTOiAke19HU1NfTElCX0ZMQUdTfSIpCiAKQEAgLTExMCw2ICsxMTIsNyBAQAogICAgICAgICBDT01NQU5EICR7X0dTU19DT05GSUdVUkVfU0NSSVBUfSAiLS12ZXJzaW9uIgogICAgICAgICBPVVRQVVRfVkFSSUFCTEUgX0dTU19WRVJTSU9OCiAgICAgICAgIFJFU1VMVF9WQVJJQUJMRSBfR1NTX0NPTkZJR1VSRV9GQUlMRUQKKyAgICAgICAgT1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BBQ0UKICAgICApCiAKICAgICAjIG9sZGVyIHZlcnNpb25zIG1heSBub3QgaGF2ZSB0aGUgIi0tdmVyc2lvbiIgcGFyYW1ldGVyLiBJbiB0aGlzIGNhc2Ugd2UganVzdCBkb24ndCBjYXJlLgpAQCAtMTIxLDYgKzEyNCw3IEBACiAgICAgICAgIENPTU1BTkQgJHtfR1NTX0NPTkZJR1VSRV9TQ1JJUFR9ICItLXZlbmRvciIKICAgICAgICAgT1VUUFVUX1ZBUklBQkxFIF9HU1NfVkVORE9SCiAgICAgICAgIFJFU1VMVF9WQVJJQUJMRSBfR1NTX0NPTkZJR1VSRV9GQUlMRUQKKyAgICAgICAgT1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BBQ0UKICAgICApCiAKICAgICAjIG9sZGVyIHZlcnNpb25zIG1heSBub3QgaGF2ZSB0aGUgIi0tdmVuZG9yIiBwYXJhbWV0ZXIuIEluIHRoaXMgY2FzZSB3ZSBqdXN0IGRvbid0IGNhcmUuCkBAIC0xMzQsNyArMTM4LDcgQEAKICAgICAgIGVuZGlmKCkKICAgICBlbmRpZigpCiAKLSAgZWxzZSgpICMgZWl0aGVyIHRoZXJlIGlzIG5vIGNvbmZpZyBzY3JpcHQgb3Igd2UgYXJlIG9uIHBsYXRmb3JtIHRoYXQgZG9lc24ndCBwcm92aWRlIG9uZSAoV2luZG93cz8pCisgIGVsc2UoKSAjIGVpdGhlciB0aGVyZSBpcyBubyBjb25maWcgc2NyaXB0IG9yIHdlIGFyZSBvbiBhIHBsYXRmb3JtIHRoYXQgZG9lc24ndCBwcm92aWRlIG9uZSAoV2luZG93cz8pCiAKICAgICBmaW5kX3BhdGgoX0dTU19JTkNMVURFX0RJUgogICAgICAgICBOQU1FUwpAQCAtMTY0LDcgKzE2OCw3IEBACiAgICAgICAgIHNldChDTUFLRV9SRVFVSVJFRF9ERUZJTklUSU9OUyAiIikKICAgICAgIGVuZGlmKCkKICAgICBlbHNlKCkKLSAgICAgICMgSSdtIG5vdCBjb252aWVuY2VkIGlmIHRoaXMgaXMgdGhlIHJpZ2h0IHdheSBidXQgdGhpcyBpcyB3aGF0IGF1dG90b29scyBkbyBhdCB0aGUgbW9tZW50CisgICAgICAjIEknbSBub3QgY29udmluY2VkIGlmIHRoaXMgaXMgdGhlIHJpZ2h0IHdheSBidXQgdGhpcyBpcyB3aGF0IGF1dG90b29scyBkbyBhdCB0aGUgbW9tZW50CiAgICAgICBmaW5kX3BhdGgoX0dTU19JTkNMVURFX0RJUgogICAgICAgICAgIE5BTUVTCiAgICAgICAgICAgICAgICJnc3NhcGkuaCIKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvRmluZExpYlNTSDIuY21ha2UgYi9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0ZpbmRMaWJTU0gyLmNtYWtlCmluZGV4IDg0ODIyZGIuLjkxZTE3YzEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvRmluZExpYlNTSDIuY21ha2UKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9DTWFrZS9GaW5kTGliU1NIMi5jbWFrZQpAQCAtNSwzMSArNSwxOCBAQAogIyBMSUJTU0gyX0lOQ0xVREVfRElSIC0gdGhlIGxpYnNzaDIgaW5jbHVkZSBkaXJlY3RvcnkKICMgTElCU1NIMl9MSUJSQVJZIC0gdGhlIGxpYnNzaDIgbGlicmFyeSBuYW1lCiAKLWlmKExJQlNTSDJfSU5DTFVERV9ESVIgQU5EIExJQlNTSDJfTElCUkFSWSkKLSAgc2V0KExpYlNTSDJfRklORF9RVUlFVExZIFRSVUUpCi1lbmRpZigpCitmaW5kX3BhdGgoTElCU1NIMl9JTkNMVURFX0RJUiBsaWJzc2gyLmgpCiAKLWZpbmRfcGF0aChMSUJTU0gyX0lOQ0xVREVfRElSIGxpYnNzaDIuaAotKQotCi1maW5kX2xpYnJhcnkoTElCU1NIMl9MSUJSQVJZIE5BTUVTIHNzaDIKLSkKK2ZpbmRfbGlicmFyeShMSUJTU0gyX0xJQlJBUlkgTkFNRVMgc3NoMiBsaWJzc2gyKQogCiBpZihMSUJTU0gyX0lOQ0xVREVfRElSKQotICBmaWxlKFNUUklOR1MgIiR7TElCU1NIMl9JTkNMVURFX0RJUn0vbGlic3NoMi5oIiBsaWJzc2gyX3ZlcnNpb25fc3RyIFJFR0VYICJeI2RlZmluZVtcdCBdK0xJQlNTSDJfVkVSU0lPTl9OVU1bXHQgXSsweFswLTldWzAtOV1bMC05XVswLTldWzAtOV1bMC05XS4qIikKLQotICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXi4qTElCU1NIMl9WRVJTSU9OX05VTVtcdCBdKzB4KFswLTldWzAtOV0pLiokIiAiXFwxIiBMSUJTU0gyX1ZFUlNJT05fTUFKT1IgIiR7bGlic3NoMl92ZXJzaW9uX3N0cn0iKQotICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXi4qTElCU1NIMl9WRVJTSU9OX05VTVtcdCBdKzB4WzAtOV1bMC05XShbMC05XVswLTldKS4qJCIgIlxcMSIgTElCU1NIMl9WRVJTSU9OX01JTk9SICAiJHtsaWJzc2gyX3ZlcnNpb25fc3RyfSIpCi0gIHN0cmluZyhSRUdFWCBSRVBMQUNFICJeLipMSUJTU0gyX1ZFUlNJT05fTlVNW1x0IF0rMHhbMC05XVswLTldWzAtOV1bMC05XShbMC05XVswLTldKS4qJCIgIlxcMSIgTElCU1NIMl9WRVJTSU9OX1BBVENIICIke2xpYnNzaDJfdmVyc2lvbl9zdHJ9IikKLQotICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXjAoLispIiAiXFwxIiBMSUJTU0gyX1ZFUlNJT05fTUFKT1IgIiR7TElCU1NIMl9WRVJTSU9OX01BSk9SfSIpCi0gIHN0cmluZyhSRUdFWCBSRVBMQUNFICJeMCguKykiICJcXDEiIExJQlNTSDJfVkVSU0lPTl9NSU5PUiAiJHtMSUJTU0gyX1ZFUlNJT05fTUlOT1J9IikKLSAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIl4wKC4rKSIgIlxcMSIgTElCU1NIMl9WRVJTSU9OX1BBVENIICIke0xJQlNTSDJfVkVSU0lPTl9QQVRDSH0iKQotCi0gIHNldChMSUJTU0gyX1ZFUlNJT04gIiR7TElCU1NIMl9WRVJTSU9OX01BSk9SfS4ke0xJQlNTSDJfVkVSU0lPTl9NSU5PUn0uJHtMSUJTU0gyX1ZFUlNJT05fUEFUQ0h9IikKKyAgZmlsZShTVFJJTkdTICIke0xJQlNTSDJfSU5DTFVERV9ESVJ9L2xpYnNzaDIuaCIgbGlic3NoMl92ZXJzaW9uX3N0ciBSRUdFWCAiXiNkZWZpbmVbXHQgXStMSUJTU0gyX1ZFUlNJT05bXHQgXStcIiguKilcIiIpCisgIHN0cmluZyhSRUdFWCBSRVBMQUNFICJeLipcIihbXlwiXSspXCIiICJcXDEiICBMSUJTU0gyX1ZFUlNJT04gIiR7bGlic3NoMl92ZXJzaW9uX3N0cn0iKQogZW5kaWYoKQogCiBpbmNsdWRlKEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRBcmdzKQotZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdzKExpYlNTSDIgREVGQVVMVF9NU0cgTElCU1NIMl9JTkNMVURFX0RJUiBMSUJTU0gyX0xJQlJBUlkgKQorZmluZF9wYWNrYWdlX2hhbmRsZV9zdGFuZGFyZF9hcmdzKExpYlNTSDIKKyAgICBSRVFVSVJFRF9WQVJTIExJQlNTSDJfTElCUkFSWSBMSUJTU0gyX0lOQ0xVREVfRElSCisgICAgVkVSU0lPTl9WQVIgTElCU1NIMl9WRVJTSU9OKQogCi1tYXJrX2FzX2FkdmFuY2VkKExJQlNTSDJfSU5DTFVERV9ESVIgTElCU1NIMl9MSUJSQVJZIExJQlNTSDJfVkVSU0lPTl9NQUpPUiBMSUJTU0gyX1ZFUlNJT05fTUlOT1IgTElCU1NIMl9WRVJTSU9OX1BBVENIIExJQlNTSDJfVkVSU0lPTikKK21hcmtfYXNfYWR2YW5jZWQoTElCU1NIMl9JTkNMVURFX0RJUiBMSUJTU0gyX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0ZpbmROR0hUVFAyLmNtYWtlIGIvVXRpbGl0aWVzL2NtY3VybC9DTWFrZS9GaW5kTkdIVFRQMi5jbWFrZQppbmRleCAzNDhiOTYxLi41MTM4ZTk5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0ZpbmROR0hUVFAyLmNtYWtlCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvRmluZE5HSFRUUDIuY21ha2UKQEAgLTEwLDkgKzEwLDkgQEAKICAgICBSRVFVSVJFRF9WQVJTCiAgICAgICBOR0hUVFAyX0xJQlJBUlkKICAgICAgIE5HSFRUUDJfSU5DTFVERV9ESVIKLSAgICBGQUlMX01FU1NBR0UKLSAgICAgICJDb3VsZCBOT1QgZmluZCBOR0hUVFAyIgogKQogCiBzZXQoTkdIVFRQMl9JTkNMVURFX0RJUlMgJHtOR0hUVFAyX0lOQ0xVREVfRElSfSkKIHNldChOR0hUVFAyX0xJQlJBUklFUyAke05HSFRUUDJfTElCUkFSWX0pCisKK21hcmtfYXNfYWR2YW5jZWQoTkdIVFRQMl9JTkNMVURFX0RJUlMgTkdIVFRQMl9MSUJSQVJJRVMpCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0ZpbmROU1MuY21ha2UgYi9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL0ZpbmROU1MuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA0M2NlOAotLS0gL2Rldi9udWxsCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvRmluZE5TUy5jbWFrZQpAQCAtMCwwICsxLDE3IEBACitpZihVTklYKQorICBmaW5kX3BhY2thZ2UoUGtnQ29uZmlnIFFVSUVUKQorICBwa2dfc2VhcmNoX21vZHVsZShQQ19OU1MgbnNzKQorZW5kaWYoKQoraWYoTk9UIFBDX05TU19GT1VORCkKKyAgcmV0dXJuKCkKK2VuZGlmKCkKKworc2V0KE5TU19MSUJSQVJJRVMgJHtQQ19OU1NfTElOS19MSUJSQVJJRVN9KQorc2V0KE5TU19JTkNMVURFX0RJUlMgJHtQQ19OU1NfSU5DTFVERV9ESVJTfSkKKworaW5jbHVkZShGaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKK2ZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncyhOU1MKKyAgICBSRVFVSVJFRF9WQVJTIE5TU19MSUJSQVJJRVMgTlNTX0lOQ0xVREVfRElSUworICAgIFZFUlNJT05fVkFSIFBDX05TU19WRVJTSU9OKQorCittYXJrX2FzX2FkdmFuY2VkKE5TU19JTkNMVURFX0RJUlMgTlNTX0xJQlJBUklFUykKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvT3RoZXJUZXN0cy5jbWFrZSBiL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvT3RoZXJUZXN0cy5jbWFrZQppbmRleCBjMWM5YWEzLi44YjE1MDI5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL090aGVyVGVzdHMuY21ha2UKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9DTWFrZS9PdGhlclRlc3RzLmNtYWtlCkBAIC0zMiw3ICszMiw3IEBACiAgICAgcmV0dXJuIDA7CiB9IiBjdXJsX2N2X3JlY3YpCiBpZihjdXJsX2N2X3JlY3YpCi0gIGlmKE5PVCBERUZJTkVEIGN1cmxfY3ZfZnVuY19yZWN2X2FyZ3MgT1IgIiR7Y3VybF9jdl9mdW5jX3JlY3ZfYXJnc30iIFNUUkVRVUFMICJ1bmtub3duIikKKyAgaWYoTk9UIERFRklORUQgY3VybF9jdl9mdW5jX3JlY3ZfYXJncyBPUiBjdXJsX2N2X2Z1bmNfcmVjdl9hcmdzIFNUUkVRVUFMICJ1bmtub3duIikKICAgICBmb3JlYWNoKHJlY3ZfcmV0diAiaW50IiAic3NpemVfdCIgKQogICAgICAgZm9yZWFjaChyZWN2X2FyZzEgIlNPQ0tFVCIgImludCIgKQogICAgICAgICBmb3JlYWNoKHJlY3ZfYXJnMiAiY2hhciAqIiAidm9pZCAqIiApCkBAIC04MSw3ICs4MSw3IEBACiAgICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIl5bXixdKixbXixdKixbXixdKixbXixdKiwoW14sXSopJCIgIlxcMSIgUkVDVl9UWVBFX1JFVFYgIiR7Y3VybF9jdl9mdW5jX3JlY3ZfYXJnc30iKQogICBlbmRpZigpCiAKLSAgaWYoIiR7Y3VybF9jdl9mdW5jX3JlY3ZfYXJnc30iIFNUUkVRVUFMICJ1bmtub3duIikKKyAgaWYoY3VybF9jdl9mdW5jX3JlY3ZfYXJncyBTVFJFUVVBTCAidW5rbm93biIpCiAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiQ2Fubm90IGZpbmQgcHJvcGVyIHR5cGVzIHRvIHVzZSBmb3IgcmVjdiBhcmdzIikKICAgZW5kaWYoKQogZWxzZSgpCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL1BsYXRmb3Jtcy9XaW5kb3dzQ2FjaGUuY21ha2UgYi9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL1BsYXRmb3Jtcy9XaW5kb3dzQ2FjaGUuY21ha2UKaW5kZXggMmRiZTFiYi4uNGM0YzYzYiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9DTWFrZS9QbGF0Zm9ybXMvV2luZG93c0NhY2hlLmNtYWtlCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvUGxhdGZvcm1zL1dpbmRvd3NDYWNoZS5jbWFrZQpAQCAtNyw3ICs3LDYgQEAKICAgICBzZXQoSEFWRV9MSUJOU0wgMCkKICAgICBzZXQoSEFWRV9HRVRIT1NUTkFNRSAxKQogICAgIHNldChIQVZFX0xJQlogMCkKLSAgICBzZXQoSEFWRV9MSUJDUllQVE8gMCkKIAogICAgIHNldChIQVZFX0RMT1BFTiAwKQogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL0NNYWtlL1V0aWxpdGllcy5jbWFrZSBiL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvVXRpbGl0aWVzLmNtYWtlCmluZGV4IDVjYjFkNDQuLmZmYzQxMWEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvVXRpbGl0aWVzLmNtYWtlCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvQ01ha2UvVXRpbGl0aWVzLmNtYWtlCkBAIC0yLDEyICsyLDExIEBACiAKICMgUmV0dXJucyBhIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQgZXZhbHVhdGUgdG8gdHJ1ZQogZnVuY3Rpb24oY291bnRfdHJ1ZSBvdXRwdXRfY291bnRfdmFyKQotICBzZXQobHN0KQorICBzZXQobHN0X2xlbiAwKQogICBmb3JlYWNoKG9wdGlvbl92YXIgSU4gTElTVFMgQVJHTikKICAgICBpZigke29wdGlvbl92YXJ9KQotICAgICAgbGlzdChBUFBFTkQgbHN0ICR7b3B0aW9uX3Zhcn0pCisgICAgICBtYXRoKEVYUFIgbHN0X2xlbiAiJHtsc3RfbGVufSArIDEiKQogICAgIGVuZGlmKCkKICAgZW5kZm9yZWFjaCgpCi0gIGxpc3QoTEVOR1RIIGxzdCBsc3RfbGVuKQogICBzZXQoJHtvdXRwdXRfY291bnRfdmFyfSAke2xzdF9sZW59IFBBUkVOVF9TQ09QRSkKIGVuZGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvQ01ha2VMaXN0cy50eHQgYi9VdGlsaXRpZXMvY21jdXJsL0NNYWtlTGlzdHMudHh0CmluZGV4IGJjOGE3ZGMuLjVjNzMyZWYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvQ01ha2VMaXN0cy50eHQKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9DTWFrZUxpc3RzLnR4dApAQCAtMjQsMTEgKzI0LDE0IEBACiBzZXQoQ1VSTF9ESVNBQkxFX1RGVFAgT04gQ0FDSEUgSU5URVJOQUwgIkRpc2FibGUgY3VybCB0ZnRwIHByb3RvY29sPyIpCiBzZXQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUyBPRkYgQ0FDSEUgSU5URVJOQUwgIkRvIG5vdCBkaXNhYmxlIGN1cmwgdmVyYm9zaXR5IikKIHNldChDVVJMX0hJRERFTl9TWU1CT0xTIE9GRiBDQUNIRSBJTlRFUk5BTCAiTm8gY3VybCBoaWRkZW4gc3ltYm9scyIpCitzZXQoQ1VSTF9MVE8gT0ZGIENBQ0hFIElOVEVSTkFMICJUdXJuIG9uIGNvbXBpbGVyIExpbmsgVGltZSBPcHRpbWl6YXRpb25zIikKK3NldChDVVJMX1NUQVRJQ19DUlQgT0ZGIENBQ0hFIElOVEVSTkFMICJTZXQgdG8gT04gdG8gYnVpbGQgbGliY3VybCB3aXRoIHN0YXRpYyBDUlQgb24gV2luZG93cyAoL01UKS4iKQogc2V0KENVUkxfV0VSUk9SIE9GRiBDQUNIRSBJTlRFUk5BTCAiVHVybiBjb21waWxlciB3YXJuaW5ncyBpbnRvIGVycm9ycyIpCiBzZXQoRElTQUJMRURfVEhSRUFEU0FGRSBPRkYgQ0FDSEUgSU5URVJOQUwgIkN1cmwgY2FuIHVzZSB0aHJlYWQtc2FmZSBmdW5jdGlvbnMiKQogc2V0KEVOQUJMRV9BUkVTIE9GRiBDQUNIRSBJTlRFUk5BTCAiTm8gY3VybCBjLWFyZXMgc3VwcG9ydCIpCiBzZXQoRU5BQkxFX0NVUkxERUJVRyBPRkYgQ0FDSEUgSU5URVJOQUwgIk5vIGN1cmwgVHJhY2tNZW1vcnkgZmVhdHVyZXMiKQogc2V0KEVOQUJMRV9ERUJVRyBPRkYgQ0FDSEUgSU5URVJOQUwgIk5vIGN1cmwgZGVidWcgZmVhdHVyZXMiKQorc2V0KEVOQUJMRV9JTkVUX1BUT04gT0ZGIENBQ0hFIElOVEVSTkFMICJTZXQgdG8gT0ZGIHRvIHByZXZlbnQgdXNhZ2Ugb2YgaW5ldF9wdG9uIHdoZW4gYnVpbGRpbmcgYWdhaW5zdCBtb2Rlcm4gU0RLcyB3aGlsZSBzdGlsbCByZXF1aXJpbmcgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIFdpbmRvd3MgdmVyc2lvbnMsIHN1Y2ggYXMgV2luZG93cyBYUCwgV2luZG93cyBTZXJ2ZXIgMjAwMyBldGMuIikKIHNldChFTkFCTEVfSVBWNiBPTiBDQUNIRSBJTlRFUk5BTCAiRW5hYmxlIGN1cmwgSVB2NiBzdXBwb3J0IGRldGVjdGlvbiIpCiBzZXQoRU5BQkxFX01BTlVBTCBPRkYgQ0FDSEUgSU5URVJOQUwgIk5vIGN1cmwgYnVpbHQtaW4gbWFudWFsIikKIHNldChFTkFCTEVfVEhSRUFERURfUkVTT0xWRVIgT0ZGIENBQ0hFIElOVEVSTkFMICJObyBjdXJsIFBPU0lYIHRocmVhZGVkIEROUyBsb29rdXAiKQpAQCAtNjAsNiArNjMsOCBAQAogICB1bnNldChDTUFLRV9VU0VfREFSV0lOU1NMIENBQ0hFKQogZW5kaWYoKQogc2V0KENNQUtFX1VTRV9NQkVEVExTIE9GRiBDQUNIRSBJTlRFUk5BTCAiRW5hYmxlIG1iZWRUTFMgZm9yIFNTTC9UTFMiKQorc2V0KENNQUtFX1VTRV9CRUFSU1NMIE9GRiBDQUNIRSBJTlRFUk5BTCAiRW5hYmxlIEJlYXJTU0wgZm9yIFNTTC9UTFMiKQorc2V0KENNQUtFX1VTRV9OU1MgT0ZGIENBQ0hFIElOVEVSTkFMICJFbmFibGUgTlNTIGZvciBTU0wvVExTIikKIAogIyBXaW5kb3dzIFZpc3RhIGFuZCBhYm92ZSBoYXZlIGluZXRfcHRvbiwgYnV0IHRoaXMgd2lsbCBsaW5rIG9uCiAjIG9sZGVyIHZlcnNpb25zIGFuZCB0aGVuIHRoZSBleGVjdXRhYmxlIHdpbGwgZmFpbCB0byBsYXVuY2ggYXQKQEAgLTkxLDcgKzk2LDcgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTEzNiw3ICsxNDEsNyBAQAogbWVzc2FnZShXQVJOSU5HICJ0aGUgY3VybCBjbWFrZSBidWlsZCBzeXN0ZW0gaXMgcG9vcmx5IG1haW50YWluZWQuIEJlIGF3YXJlIikKIGVuZGlmKCkKIAotZmlsZShSRUFEICR7Q1VSTF9TT1VSQ0VfRElSfS9pbmNsdWRlL2N1cmwvY3VybHZlci5oIENVUkxfVkVSU0lPTl9IX0NPTlRFTlRTKQorZmlsZShTVFJJTkdTICR7Q1VSTF9TT1VSQ0VfRElSfS9pbmNsdWRlL2N1cmwvY3VybHZlci5oIENVUkxfVkVSU0lPTl9IX0NPTlRFTlRTIFJFR0VYICIjZGVmaW5lIExJQkNVUkxfVkVSU0lPTiggfF9OVU0gKSIpCiBzdHJpbmcoUkVHRVggTUFUQ0ggIiNkZWZpbmUgTElCQ1VSTF9WRVJTSU9OIFwiW15cIl0qIgogICBDVVJMX1ZFUlNJT04gJHtDVVJMX1ZFUlNJT05fSF9DT05URU5UU30pCiBzdHJpbmcoUkVHRVggUkVQTEFDRSAiW15cIl0rXCIiICIiIENVUkxfVkVSU0lPTiAke0NVUkxfVkVSU0lPTn0pCkBAIC0xNjgsNyArMTczLDIwIEBACiBpZihXSU4zMikKICAgb3B0aW9uKENVUkxfU1RBVElDX0NSVCAiU2V0IHRvIE9OIHRvIGJ1aWxkIGxpYmN1cmwgd2l0aCBzdGF0aWMgQ1JUIG9uIFdpbmRvd3MgKC9NVCkuIiBPRkYpCiAgIG9wdGlvbihFTkFCTEVfSU5FVF9QVE9OICJTZXQgdG8gT0ZGIHRvIHByZXZlbnQgdXNhZ2Ugb2YgaW5ldF9wdG9uIHdoZW4gYnVpbGRpbmcgYWdhaW5zdCBtb2Rlcm4gU0RLcyB3aGlsZSBzdGlsbCByZXF1aXJpbmcgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIFdpbmRvd3MgdmVyc2lvbnMsIHN1Y2ggYXMgV2luZG93cyBYUCwgV2luZG93cyBTZXJ2ZXIgMjAwMyBldGMuIiBPTikKKyAgaWYoMCkgIyBUaGlzIGNvZGUgbm90IG5lZWRlZCBmb3IgYnVpbGRpbmcgd2l0aGluIENNYWtlLgorICBzZXQoQ1VSTF9UQVJHRVRfV0lORE9XU19WRVJTSU9OICIiIENBQ0hFIFNUUklORyAiTWluaW11bSB0YXJnZXQgV2luZG93cyB2ZXJzaW9uIGFzIGhleCBzdHJpbmciKQorICBpZihDVVJMX1RBUkdFVF9XSU5ET1dTX1ZFUlNJT04pCisgICAgYWRkX2RlZmluaXRpb25zKC1EX1dJTjMyX1dJTk5UPSR7Q1VSTF9UQVJHRVRfV0lORE9XU19WRVJTSU9OfSkKKyAgZWxzZWlmKEVOQUJMRV9JTkVUX1BUT04pCisgICAgIyBfV0lOMzJfV0lOTlRfVklTVEEgKDB4MDYwMCkKKyAgICBhZGRfZGVmaW5pdGlvbnMoLURfV0lOMzJfV0lOTlQ9MHgwNjAwKQorICBlbHNlKCkKKyAgICAjIF9XSU4zMl9XSU5OVF9XSU5YUCAoMHgwNTAxKQorICAgIGFkZF9kZWZpbml0aW9ucygtRF9XSU4zMl9XSU5OVD0weDA1MDEpCisgIGVuZGlmKCkKKyAgZW5kaWYoKQogZW5kaWYoKQorb3B0aW9uKENVUkxfTFRPICJUdXJuIG9uIGNvbXBpbGVyIExpbmsgVGltZSBPcHRpbWl6YXRpb25zIiBPRkYpCiAKIGlmKDApICMgVGhpcyBjb2RlIG5vdCBuZWVkZWQgZm9yIGJ1aWxkaW5nIHdpdGhpbiBDTWFrZS4KIGNtYWtlX2RlcGVuZGVudF9vcHRpb24oRU5BQkxFX1RIUkVBREVEX1JFU09MVkVSICJTZXQgdG8gT04gdG8gZW5hYmxlIHRocmVhZGVkIEROUyBsb29rdXAiCkBAIC0xODQsOCArMjAyLDkgQEAKICAgICBmb3JlYWNoKF9DQ09QVCAtcGVkYW50aWMgLVdhbGwgLVcgLVdwb2ludGVyLWFyaXRoIC1Xd3JpdGUtc3RyaW5ncyAtV3VudXNlZCAtV3NoYWRvdyAtV2lubGluZSAtV25lc3RlZC1leHRlcm5zIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVduby1sb25nLWxvbmcgLVdmbG9hdC1lcXVhbCAtV25vLW11bHRpY2hhciAtV3NpZ24tY29tcGFyZSAtV3VuZGVmIC1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwgLVdlbmRpZi1sYWJlbHMgLVdzdHJpY3QtcHJvdG90eXBlcyAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV3N0cmljdC1hbGlhc2luZz0zIC1XY2FzdC1hbGlnbiAtV3R5cGUtbGltaXRzIC1Xb2xkLXN0eWxlLWRlY2xhcmF0aW9uIC1XbWlzc2luZy1wYXJhbWV0ZXItdHlwZSAtV2VtcHR5LWJvZHkgLVdjbG9iYmVyZWQgLVdpZ25vcmVkLXF1YWxpZmllcnMgLVdjb252ZXJzaW9uIC1Xbm8tc2lnbi1jb252ZXJzaW9uIC1XdmxhIC1XZG91YmxlLXByb21vdGlvbiAtV25vLXN5c3RlbS1oZWFkZXJzIC1Xbm8tcGVkYW50aWMtbXMtZm9ybWF0KQogICAgICAgIyBzdXJwcmlzaW5nbHksIENIRUNLX0NfQ09NUElMRVJfRkxBRyBuZWVkcyBhIG5ldyB2YXJpYWJsZSB0byBzdG9yZSBlYWNoIG5ldwogICAgICAgIyB0ZXN0IHJlc3VsdCBpbi4KLSAgICAgIGNoZWNrX2NfY29tcGlsZXJfZmxhZygke19DQ09QVH0gT1BUJHtfQ0NPUFR9KQotICAgICAgaWYoT1BUJHtfQ0NPUFR9KQorICAgICAgc3RyaW5nKE1BS0VfQ19JREVOVElGSUVSICJPUFQke19DQ09QVH0iIF9vcHR2YXJuYW1lKQorICAgICAgY2hlY2tfY19jb21waWxlcl9mbGFnKCR7X0NDT1BUfSAke19vcHR2YXJuYW1lfSkKKyAgICAgIGlmKCR7X29wdHZhcm5hbWV9KQogICAgICAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAke19DQ09QVH0iKQogICAgICAgZW5kaWYoKQogICAgIGVuZGZvcmVhY2goKQpAQCAtMjE2LDcgKzIzNSw2IEBACiAgIHNldChVU0VfQVJFUyAxKQogICBmaW5kX3BhY2thZ2UoQ0FSRVMgUkVRVUlSRUQpCiAgIGxpc3QoQVBQRU5EIENVUkxfTElCUyAke0NBUkVTX0xJQlJBUll9KQotICBzZXQoQ1VSTF9MSUJTICR7Q1VSTF9MSUJTfSAke0NBUkVTX0xJQlJBUll9KQogZW5kaWYoKQogCiBpZigwKSAjIFRoaXMgY29kZSBub3QgbmVlZGVkIGZvciBidWlsZGluZyB3aXRoaW4gQ01ha2UuCkBAIC0yNjcsNiArMjg1LDcgQEAKICAgc2V0KENVUkxfRElTQUJMRV9SVFNQIE9OKQogICBzZXQoQ1VSTF9ESVNBQkxFX1BPUDMgT04pCiAgIHNldChDVVJMX0RJU0FCTEVfSU1BUCBPTikKKyAgc2V0KENVUkxfRElTQUJMRV9TTUIgT04pCiAgIHNldChDVVJMX0RJU0FCTEVfU01UUCBPTikKICAgc2V0KENVUkxfRElTQUJMRV9HT1BIRVIgT04pCiBlbmRpZigpCkBAIC0zMzIsNiArMzUxLDcgQEAKIGVuZGlmKCkKIAogIyBJbmNsdWRlIGFsbCB0aGUgbmVjZXNzYXJ5IGZpbGVzIGZvciBtYWNyb3MKK2luY2x1ZGUoQ01ha2VQdXNoQ2hlY2tTdGF0ZSkKIGluY2x1ZGUoQ2hlY2tGdW5jdGlvbkV4aXN0cykKIGluY2x1ZGUoQ2hlY2tJbmNsdWRlRmlsZSkKIGluY2x1ZGUoQ2hlY2tJbmNsdWRlRmlsZXMpCkBAIC0zNTksNyArMzc5LDcgQEAKIAogIyBDaGVjayBmb3IgYWxsIG5lZWRlZCBsaWJyYXJpZXMKIGlmKDApICMgVGhpcyBjb2RlIG5vdCBuZWVkZWQgZm9yIGJ1aWxkaW5nIHdpdGhpbiBDTWFrZS4KLWNoZWNrX2xpYnJhcnlfZXhpc3RzX2NvbmNhdCgiZGwiICAgICBkbG9wZW4gICAgICAgSEFWRV9MSUJETCkKK2NoZWNrX2xpYnJhcnlfZXhpc3RzX2NvbmNhdCgiJHtDTUFLRV9ETF9MSUJTfSIgZGxvcGVuIEhBVkVfTElCREwpCiBlbHNlKCkKICAgIyBVc2UgdGhlIGNtYWtlLWRlZmluZWQgZGwgbGlicyBhcyBkbCBpcyBzaG91bGQgbm90IGJlIHVzZWQKICAgIyBvbiBIUFVYLCBidXQgcmF0aGVyIGRsZCB0aGlzIGF2b2lkcyBhIHdhcm5pbmcKQEAgLTM5MCw3ICs0MTAsNyBAQAogZW5kaWYoKQogCiAjIGNoZWNrIFNTTCBsaWJyYXJpZXMKLSMgVE9ETyBzdXBwb3J0IEdOVVRMUywgTlNTLCBQT0xBUlNTTCwgQ1lBU1NMCisjIFRPRE8gc3VwcG9ydCBHbnVUTFMgYW5kIFdvbGZTU0wKIAogaWYoQVBQTEUpCiAgIG9wdGlvbihDTUFLRV9VU0VfU0VDVFJBTlNQICJlbmFibGUgQXBwbGUgT1MgbmF0aXZlIFNTTC9UTFMiIE9GRikKQEAgLTQwMSw5ICs0MjEsMTEgQEAKICAgICBDTUFLRV9VU0VfV0lOU1NMIE9GRikKIGVuZGlmKCkKIG9wdGlvbihDTUFLRV9VU0VfTUJFRFRMUyAiRW5hYmxlIG1iZWRUTFMgZm9yIFNTTC9UTFMiIE9GRikKK29wdGlvbihDTUFLRV9VU0VfQkVBUlNTTCAiRW5hYmxlIEJlYXJTU0wgZm9yIFNTTC9UTFMiIE9GRikKK29wdGlvbihDTUFLRV9VU0VfTlNTICJFbmFibGUgTlNTIGZvciBTU0wvVExTIiBPRkYpCiAKIHNldChvcGVuc3NsX2RlZmF1bHQgT04pCi1pZihXSU4zMiBPUiBDTUFLRV9VU0VfU0VDVFJBTlNQIE9SIENNQUtFX1VTRV9XSU5TU0wgT1IgQ01BS0VfVVNFX01CRURUTFMpCitpZihXSU4zMiBPUiBDTUFLRV9VU0VfU0VDVFJBTlNQIE9SIENNQUtFX1VTRV9XSU5TU0wgT1IgQ01BS0VfVVNFX01CRURUTFMgT1IgQ01BS0VfVVNFX05TUykKICAgc2V0KG9wZW5zc2xfZGVmYXVsdCBPRkYpCiBlbmRpZigpCiAKQEAgLTQxMiw2ICs0MzQsOCBAQAogICBDTUFLRV9VU0VfU0VDVFJBTlNQCiAgIENNQUtFX1VTRV9PUEVOU1NMCiAgIENNQUtFX1VTRV9NQkVEVExTCisgIENNQUtFX1VTRV9CRUFSU1NMCisgIENNQUtFX1VTRV9OU1MKICkKIGlmKGVuYWJsZWRfc3NsX29wdGlvbnNfY291bnQgR1JFQVRFUiAiMSIpCiAgIHNldChDVVJMX1dJVEhfTVVMVElfU1NMIE9OKQpAQCAtNDU3LDggKzQ4MSw2IEBACiAgIGVuZGlmKCkKICAgc2V0KFNTTF9FTkFCTEVEIE9OKQogICBzZXQoVVNFX09QRU5TU0wgT04pCi0gIHNldChIQVZFX0xJQkNSWVBUTyBPTikKLSAgc2V0KEhBVkVfTElCU1NMIE9OKQogICBsaXN0KEFQUEVORCBDVVJMX0xJQlMgJHtPUEVOU1NMX0xJQlJBUklFU30pCiAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtPUEVOU1NMX0lOQ0xVREVfRElSfSkKIApAQCAtNDkyLDYgKzUxNCwyNyBAQAogICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7TUJFRFRMU19JTkNMVURFX0RJUlN9KQogZW5kaWYoKQogCitpZihDTUFLRV9VU0VfQkVBUlNTTCkKKyAgZmluZF9wYWNrYWdlKEJlYXJTU0wgUkVRVUlSRUQpCisgIHNldChTU0xfRU5BQkxFRCBPTikKKyAgc2V0KFVTRV9CRUFSU1NMIE9OKQorICBsaXN0KEFQUEVORCBDVVJMX0xJQlMgJHtCRUFSU1NMX0xJQlJBUll9KQorICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7QkVBUlNTTF9JTkNMVURFX0RJUlN9KQorZW5kaWYoKQorCitpZihDTUFLRV9VU0VfTlNTKQorICBmaW5kX3BhY2thZ2UoTlNTIFJFUVVJUkVEKQorICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7TlNTX0lOQ0xVREVfRElSU30pCisgIGxpc3QoQVBQRU5EIENVUkxfTElCUyAke05TU19MSUJSQVJJRVN9KQorICBzZXQoU1NMX0VOQUJMRUQgT04pCisgIHNldChVU0VfTlNTIE9OKQorICBjbWFrZV9wdXNoX2NoZWNrX3N0YXRlKCkKKyAgc2V0KENNQUtFX1JFUVVJUkVEX0lOQ0xVREVTICR7TlNTX0lOQ0xVREVfRElSU30pCisgIHNldChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMgJHtOU1NfTElCUkFSSUVTfSkKKyAgY2hlY2tfc3ltYm9sX2V4aXN0cyhQSzExX0NyZWF0ZU1hbmFnZWRHZW5lcmljT2JqZWN0ICJwazExcHViLmgiIEhBVkVfUEsxMV9DUkVBVEVNQU5BR0VER0VORVJJQ09CSkVDVCkKKyAgY21ha2VfcG9wX2NoZWNrX3N0YXRlKCkKK2VuZGlmKCkKKwogb3B0aW9uKFVTRV9OR0hUVFAyICJVc2UgTmdodHRwMiBsaWJyYXJ5IiBPRkYpCiBpZihVU0VfTkdIVFRQMikKICAgZmluZF9wYWNrYWdlKE5HSFRUUDIgUkVRVUlSRUQpCkBAIC00OTksNiArNTQyLDEwIEBACiAgIGxpc3QoQVBQRU5EIENVUkxfTElCUyAke05HSFRUUDJfTElCUkFSSUVTfSkKIGVuZGlmKCkKIAoraWYoV0lOMzIpCisgIHNldChVU0VfV0lOMzJfQ1JZUFRPIE9OKQorZW5kaWYoKQorCiBpZihOT1QgQ1VSTF9ESVNBQkxFX0xEQVApCiAgIGlmKFdJTjMyKQogICAgIG9wdGlvbihVU0VfV0lOMzJfTERBUCAiVXNlIFdpbmRvd3MgTERBUCBpbXBsZW1lbnRhdGlvbiIgT04pCkBAIC02NTMsNyArNzAwLDcgQEAKIG9wdGlvbihDVVJMX0JST1RMSSAiU2V0IHRvIE9OIHRvIGVuYWJsZSBidWlsZGluZyBjdXJsIHdpdGggYnJvdGxpIHN1cHBvcnQuIiBPRkYpCiBzZXQoSEFWRV9CUk9UTEkgT0ZGKQogaWYoQ1VSTF9CUk9UTEkpCi0gIGZpbmRfcGFja2FnZShCUk9UTEkgUVVJRVQpCisgIGZpbmRfcGFja2FnZShCcm90bGkgUVVJRVQpCiAgIGlmKEJST1RMSV9GT1VORCkKICAgICBzZXQoSEFWRV9CUk9UTEkgT04pCiAgICAgbGlzdChBUFBFTkQgQ1VSTF9MSUJTICR7QlJPVExJX0xJQlJBUklFU30pCkBAIC03OTMsNyArODQwLDkgQEAKICAgdW5zZXQoQ1VSTF9DQV9QQVRIIENBQ0hFKQogZWxzZWlmKCIke0NVUkxfQ0FfUEFUSH0iIFNUUkVRVUFMICJhdXRvIikKICAgdW5zZXQoQ1VSTF9DQV9QQVRIIENBQ0hFKQotICBzZXQoQ1VSTF9DQV9QQVRIX0FVVE9ERVRFQ1QgVFJVRSkKKyAgaWYoTk9UIFVTRV9OU1MpCisgICAgc2V0KENVUkxfQ0FfUEFUSF9BVVRPREVURUNUIFRSVUUpCisgIGVuZGlmKCkKIGVsc2UoKQogICBzZXQoQ1VSTF9DQV9QQVRIX1NFVCBUUlVFKQogZW5kaWYoKQpAQCAtOTgzLDYgKzEwMzIsNyBAQAogY2hlY2tfc3ltYm9sX2V4aXN0cyhnZXRwd3VpZCAgICAgICIke0NVUkxfSU5DTFVERVN9IiBIQVZFX0dFVFBXVUlEKQogY2hlY2tfc3ltYm9sX2V4aXN0cyhnZXRwd3VpZF9yICAgICIke0NVUkxfSU5DTFVERVN9IiBIQVZFX0dFVFBXVUlEX1IpCiBjaGVja19zeW1ib2xfZXhpc3RzKGdldGV1aWQgICAgICAgIiR7Q1VSTF9JTkNMVURFU30iIEhBVkVfR0VURVVJRCkKK2NoZWNrX3N5bWJvbF9leGlzdHModXNsZWVwICAgICAgICAiJHtDVVJMX0lOQ0xVREVTfSIgSEFWRV9VU0xFRVApCiBjaGVja19zeW1ib2xfZXhpc3RzKHV0aW1lICAgICAgICAgIiR7Q1VSTF9JTkNMVURFU30iIEhBVkVfVVRJTUUpCiBjaGVja19zeW1ib2xfZXhpc3RzKGdtdGltZV9yICAgICAgIiR7Q1VSTF9JTkNMVURFU30iIEhBVkVfR01USU1FX1IpCiBjaGVja19zeW1ib2xfZXhpc3RzKGxvY2FsdGltZV9yICAgIiR7Q1VSTF9JTkNMVURFU30iIEhBVkVfTE9DQUxUSU1FX1IpCkBAIC0xMDEwLDYgKzEwNjAsNyBAQAogY2hlY2tfc3ltYm9sX2V4aXN0cyhnZXRwcm90b2J5bmFtZSAiJHtDVVJMX0lOQ0xVREVTfSIgSEFWRV9HRVRQUk9UT0JZTkFNRSkKIGNoZWNrX3N5bWJvbF9leGlzdHMoZ2V0cGVlcm5hbWUgICAgIiR7Q1VSTF9JTkNMVURFU30iIEhBVkVfR0VUUEVFUk5BTUUpCiBjaGVja19zeW1ib2xfZXhpc3RzKGdldHNvY2tuYW1lICAgICIke0NVUkxfSU5DTFVERVN9IiBIQVZFX0dFVFNPQ0tOQU1FKQorY2hlY2tfc3ltYm9sX2V4aXN0cyhpZl9uYW1ldG9pbmRleCAiJHtDVVJMX0lOQ0xVREVTfSIgSEFWRV9JRl9OQU1FVE9JTkRFWCkKIGNoZWNrX3N5bWJvbF9leGlzdHMoZ2V0cmxpbWl0ICAgICAgIiR7Q1VSTF9JTkNMVURFU30iIEhBVkVfR0VUUkxJTUlUKQogY2hlY2tfc3ltYm9sX2V4aXN0cyhzZXRsb2NhbGUgICAgICAiJHtDVVJMX0lOQ0xVREVTfSIgSEFWRV9TRVRMT0NBTEUpCiBjaGVja19zeW1ib2xfZXhpc3RzKHNldG1vZGUgICAgICAgICIke0NVUkxfSU5DTFVERVN9IiBIQVZFX1NFVE1PREUpCkBAIC0xMDE4LDIwICsxMDY5LDcgQEAKIGNoZWNrX3N5bWJvbF9leGlzdHMoaW9jdGwgICAgICAgICAgIiR7Q1VSTF9JTkNMVURFU30iIEhBVkVfSU9DVEwpCiBjaGVja19zeW1ib2xfZXhpc3RzKHNldHNvY2tvcHQgICAgICIke0NVUkxfSU5DTFVERVN9IiBIQVZFX1NFVFNPQ0tPUFQpCiBjaGVja19mdW5jdGlvbl9leGlzdHMobWFjaF9hYnNvbHV0ZV90aW1lIEhBVkVfTUFDSF9BQlNPTFVURV9USU1FKQotCi0jIHN5bWJvbCBleGlzdHMgaW4gd2luMzIsIGJ1dCBmdW5jdGlvbiBkb2VzIG5vdC4KLWlmKFdJTjMyKQotICBpZihFTkFCTEVfSU5FVF9QVE9OKQotICAgIGNoZWNrX2Z1bmN0aW9uX2V4aXN0cyhpbmV0X3B0b24gSEFWRV9JTkVUX1BUT04pCi0gICAgIyBfV0lOMzJfV0lOTlRfVklTVEEgKDB4MDYwMCkKLSAgICBhZGRfZGVmaW5pdGlvbnMoLURfV0lOMzJfV0lOTlQ9MHgwNjAwKQotICBlbHNlKCkKLSAgICAjIF9XSU4zMl9XSU5OVF9XSU5YUCAoMHgwNTAxKQotICAgIGFkZF9kZWZpbml0aW9ucygtRF9XSU4zMl9XSU5OVD0weDA1MDEpCi0gIGVuZGlmKCkKLWVsc2UoKQotICBjaGVja19mdW5jdGlvbl9leGlzdHMoaW5ldF9wdG9uIEhBVkVfSU5FVF9QVE9OKQotZW5kaWYoKQorY2hlY2tfc3ltYm9sX2V4aXN0cyhpbmV0X3B0b24gICAgICAiJHtDVVJMX0lOQ0xVREVTfSIgSEFWRV9JTkVUX1BUT04pCiAKIGNoZWNrX3N5bWJvbF9leGlzdHMoZnNldHhhdHRyICIke0NVUkxfSU5DTFVERVN9IiBIQVZFX0ZTRVRYQVRUUikKIGlmKEhBVkVfRlNFVFhBVFRSKQpAQCAtMTI1NSw2ICsxMjkzLDIzIEBACiAgIGVuZGlmKCkKIGVuZGlmKCkKIAoraWYoQ1VSTF9MVE8pCisgIGlmKENNQUtFX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDMuOSkKKyAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJSZXF1ZXN0ZWQgTFRPIGJ1dCB5b3VyIGNtYWtlIHZlcnNpb24gJHtDTUFLRV9WRVJTSU9OfSBpcyB0byBvbGQuIFlvdSBuZWVkIGF0IGxlYXN0IDMuOSIpCisgIGVuZGlmKCkKKworICBjbWFrZV9wb2xpY3koU0VUIENNUDAwNjkgTkVXKQorCisgIGluY2x1ZGUoQ2hlY2tJUE9TdXBwb3J0ZWQpCisgIGNoZWNrX2lwb19zdXBwb3J0ZWQoUkVTVUxUIENVUkxfSEFTX0xUTyBPVVRQVVQgQ1VSTF9MVE9fRVJST1IgTEFOR1VBR0VTIEMpCisgIGlmKENVUkxfSEFTX0xUTykKKyAgICBtZXNzYWdlKFNUQVRVUyAiTFRPIHN1cHBvcnRlZCBhbmQgZW5hYmxlZCIpCisgIGVsc2UoKQorICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkxUTyB3YXMgcmVxdWVzdGVkIC0gYnV0IGNvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCBpdFxuJHtDVVJMX0xUT19FUlJPUn0iKQorICBlbmRpZigpCitlbmRpZigpCisKKwogIyBVZ2x5IChidXQgZnVuY3Rpb25hbCkgd2F5IHRvIGluY2x1ZGUgIk1ha2VmaWxlLmluYyIgYnkgdHJhbnNmb3JtaW5nIGl0ICg9IHJlZ2VuZXJhdGUgaXQpLgogZnVuY3Rpb24odHJhbnNmb3JtX21ha2VmaWxlX2luYyBJTlBVVF9GSUxFIE9VVFBVVF9GSUxFKQogICBmaWxlKFJFQUQgJHtJTlBVVF9GSUxFfSBNQUtFRklMRV9JTkNfVEVYVCkKQEAgLTEzMDksMTQgKzEzNjQsMjIgQEAKICAgYWRkX3N1YmRpcmVjdG9yeSh0ZXN0cykKIGVuZGlmKCkKIAorIyBOVExNIHN1cHBvcnQgcmVxdWlyZXMgY3J5cHRvIGZ1bmN0aW9uIGFkYXB0aW9ucyBmcm9tIHZhcmlvdXMgU1NMIGxpYnMKKyMgVE9ETyBhbHRlcm5hdGl2ZSBTU0wgbGlicyB0ZXN0cyBmb3IgU1NQMSwgR05VVExTLCBOU1MKK2lmKE5PVCBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEggQU5EIChVU0VfT1BFTlNTTCBPUiBVU0VfV0lORE9XU19TU1BJIE9SIFVTRV9EQVJXSU5TU0wgT1IgVVNFX01CRURUTFMgT1IgVVNFX1dJTjMyX0NSWVBUTykpCisgIHNldCh1c2VfbnRsbSBPTikKK2Vsc2UoKQorICBzZXQodXNlX250bG0gT0ZGKQorZW5kaWYoKQorCiAjIEhlbHBlciB0byBwb3B1bGF0ZSBhIGxpc3QgKF9pdGVtcykgd2l0aCBhIGxhYmVsIHdoZW4gY29uZGl0aW9ucyAodGhlIHJlbWFpbmluZwogIyBhcmdzKSBhcmUgc2F0aXNmaWVkCi1mdW5jdGlvbihfYWRkX2lmIGxhYmVsKQotICAjIFRPRE8gbmVlZCB0byBkaXNhYmxlIHBvbGljeSBDTVAwMDU0IChDTWFrZSAzLjEpIHRvIGFsbG93IHRoaXMgaW5kaXJlY3Rpb24KK21hY3JvKF9hZGRfaWYgbGFiZWwpCisgICMgbmVlZHMgdG8gYmUgYSBtYWNybyB0byBhbGxvdyB0aGlzIGluZGlyZWN0aW9uCiAgIGlmKCR7QVJHTn0pCi0gICAgc2V0KF9pdGVtcyAke19pdGVtc30gIiR7bGFiZWx9IiBQQVJFTlRfU0NPUEUpCisgICAgc2V0KF9pdGVtcyAke19pdGVtc30gIiR7bGFiZWx9IikKICAgZW5kaWYoKQotZW5kZnVuY3Rpb24oKQorZW5kbWFjcm8oKQogCiAjIENsZWFyIGxpc3QgYW5kIHRyeSB0byBkZXRlY3QgYXZhaWxhYmxlIGZlYXR1cmVzCiBzZXQoX2l0ZW1zKQpAQCAtMTMzOCwxNSArMTQwMSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKEhBVkVfR1NTQVBJIE9SIFVTRV9XSU5ET1dTX1NTUEkpKQogIyBOVExNIHN1cHBvcnQgcmVxdWlyZXMgY3J5cHRvIGZ1bmN0aW9uIGFkYXB0aW9ucyBmcm9tIHZhcmlvdXMgU1NMIGxpYnMKICMgVE9ETyBhbHRlcm5hdGl2ZSBTU0wgbGlicyB0ZXN0cyBmb3IgU1NQMSwgR05VVExTLCBOU1MKLWlmKE5PVCBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEggQU5EIChVU0VfT1BFTlNTTCBPUiBVU0VfV0lORE9XU19TU1BJIE9SIFVTRV9TRUNUUkFOU1AgT1IgVVNFX01CRURUTFMpKQotICBfYWRkX2lmKCJOVExNIiAgICAgICAgMSkKLSAgIyBUT0RPIG1pc3Npbmcgb3B0aW9uIChhdXRvY29uZjogLS1lbmFibGUtbnRsbS13YikKLSAgX2FkZF9pZigiTlRMTV9XQiIgICAgIE5PVCBDVVJMX0RJU0FCTEVfSFRUUCBBTkQgTlRMTV9XQl9FTkFCTEVEKQotZW5kaWYoKQorX2FkZF9pZigiTlRMTSIgICAgICAgIHVzZV9udGxtKQorIyBUT0RPIG1pc3Npbmcgb3B0aW9uIChhdXRvY29uZjogLS1lbmFibGUtbnRsbS13YikKK19hZGRfaWYoIk5UTE1fV0IiICAgICB1c2VfbnRsbSBBTkQgTk9UIENVUkxfRElTQUJMRV9IVFRQIEFORCBOVExNX1dCX0VOQUJMRUQpCiAjIFRPRE8gbWlzc2luZyBvcHRpb24gKC0tZW5hYmxlLXRscy1zcnApLCBkZXBlbmRzIG9uIEdOVVRMU19TUlAvT1BFTlNTTF9TUlAKIF9hZGRfaWYoIlRMUy1TUlAiICAgICAgIFVTRV9UTFNfU1JQKQogIyBUT0RPIG9wdGlvbiAtLXdpdGgtbmdodHRwMiB0ZXN0cyBmb3IgbmdodHRwMiBsaWIgYW5kIG5naHR0cDIvbmdodHRwMi5oIGhlYWRlcgogX2FkZF9pZigiSFRUUDIiICAgICAgICAgVVNFX05HSFRUUDIpCitfYWRkX2lmKCJIVFRQUy1wcm94eSIgICBTU0xfRU5BQkxFRCBBTkQgKFVTRV9PUEVOU1NMIE9SIFVTRV9HTlVUTFMgT1IgVVNFX05TUykpCiBzdHJpbmcoUkVQTEFDRSAiOyIgIiAiIFNVUFBPUlRfRkVBVFVSRVMgIiR7X2l0ZW1zfSIpCiBtZXNzYWdlKFNUQVRVUyAiRW5hYmxlZCBmZWF0dXJlczogJHtTVVBQT1JUX0ZFQVRVUkVTfSIpCiAKQEAgLTEzNzEsNiArMTQzMyw4IEBACiBfYWRkX2lmKCJQT1AzUyIgICAgICAgICBOT1QgQ1VSTF9ESVNBQkxFX1BPUDMgQU5EIFNTTF9FTkFCTEVEKQogX2FkZF9pZigiSU1BUCIgICAgICAgICAgTk9UIENVUkxfRElTQUJMRV9JTUFQKQogX2FkZF9pZigiSU1BUFMiICAgICAgICAgTk9UIENVUkxfRElTQUJMRV9JTUFQIEFORCBTU0xfRU5BQkxFRCkKK19hZGRfaWYoIlNNQiIgICAgICAgICAgIE5PVCBDVVJMX0RJU0FCTEVfU01CIEFORCB1c2VfbnRsbSkKK19hZGRfaWYoIlNNQlMiICAgICAgICAgIE5PVCBDVVJMX0RJU0FCTEVfU01CIEFORCBTU0xfRU5BQkxFRCBBTkQgdXNlX250bG0pCiBfYWRkX2lmKCJTTVRQIiAgICAgICAgICBOT1QgQ1VSTF9ESVNBQkxFX1NNVFApCiBfYWRkX2lmKCJTTVRQUyIgICAgICAgICBOT1QgQ1VSTF9ESVNBQkxFX1NNVFAgQU5EIFNTTF9FTkFCTEVEKQogX2FkZF9pZigiU0NQIiAgICAgICAgICAgVVNFX0xJQlNTSDIpCkBAIC0xMzg5LDYgKzE0NTMsOCBAQAogX2FkZF9pZigiT3BlblNTTCIgICAgICAgICAgU1NMX0VOQUJMRUQgQU5EIFVTRV9PUEVOU1NMKQogX2FkZF9pZigiU2VjdXJlIFRyYW5zcG9ydCIgU1NMX0VOQUJMRUQgQU5EIFVTRV9TRUNUUkFOU1ApCiBfYWRkX2lmKCJtYmVkVExTIiAgICAgICAgICBTU0xfRU5BQkxFRCBBTkQgVVNFX01CRURUTFMpCitfYWRkX2lmKCJCZWFyU1NMIiAgICAgICAgICBTU0xfRU5BQkxFRCBBTkQgVVNFX0JFQVJTU0wpCitfYWRkX2lmKCJOU1MiICAgICAgICAgICAgICBTU0xfRU5BQkxFRCBBTkQgVVNFX05TUykKIGlmKF9pdGVtcykKICAgbGlzdChTT1JUIF9pdGVtcykKIGVuZGlmKCkKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvQ09QWUlORyBiL1V0aWxpdGllcy9jbWN1cmwvQ09QWUlORwppbmRleCAzNTI4YmQ3Li45ZDllNGFmIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL0NPUFlJTkcKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9DT1BZSU5HCkBAIC0xLDYgKzEsNiBAQAogQ09QWVJJR0hUIEFORCBQRVJNSVNTSU9OIE5PVElDRQogCi1Db3B5cmlnaHQgKGMpIDE5OTYgLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGFuZCBtYW55CitDb3B5cmlnaHQgKGMpIDE5OTYgLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGFuZCBtYW55CiBjb250cmlidXRvcnMsIHNlZSB0aGUgVEhBTktTIGZpbGUuCiAKIEFsbCByaWdodHMgcmVzZXJ2ZWQuCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2luY2x1ZGUvY3VybC9jdXJsLmggYi9VdGlsaXRpZXMvY21jdXJsL2luY2x1ZGUvY3VybC9jdXJsLmgKaW5kZXggMDg5YzQyNy4uN2U5OWQ1ZSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9pbmNsdWRlL2N1cmwvY3VybC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL2N1cmwuaApAQCAtMSw1ICsxLDUgQEAKLSNpZm5kZWYgX19DVVJMX0NVUkxfSAotI2RlZmluZSBfX0NVUkxfQ1VSTF9ICisjaWZuZGVmIENVUkxJTkNfQ1VSTF9ICisjZGVmaW5lIENVUkxJTkNfQ1VSTF9ICiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCiAgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMzgsMTIgKzM4LDEyIEBACiAjaW5jbHVkZSAic3lzdGVtLmgiICAgICAgICAgIC8qIGRldGVybWluZSB0aGluZ3MgcnVuLXRpbWUgKi8KIAogLyoKLSAqIERlZmluZSBXSU4zMiB3aGVuIGJ1aWxkIHRhcmdldCBpcyBXaW4zMiBBUEkKKyAqIERlZmluZSBDVVJMX1dJTjMyIHdoZW4gYnVpbGQgdGFyZ2V0IGlzIFdpbjMyIEFQSQogICovCiAKLSNpZiAoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSkgJiYgXAotICAgICAhZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19TWU1CSUFOMzJfXykKLSNkZWZpbmUgV0lOMzIKKyNpZiAoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKFdJTjMyKSkgJiYgICAgICAgIFwKKyAgIWRlZmluZWQoX19TWU1CSUFOMzJfXykKKyNkZWZpbmUgQ1VSTF9XSU4zMgogI2VuZGlmCiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNTgsNyArNTgsNyBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHRpbWUuaD4KIAotI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKF9XSU4zMl9XQ0UpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCisjaWYgZGVmaW5lZChDVVJMX1dJTjMyKSAmJiAhZGVmaW5lZChfV0lOMzJfV0NFKSAmJiAhZGVmaW5lZChfX0NZR1dJTl9fKQogI2lmICEoZGVmaW5lZChfV0lOU09DS0FQSV8pIHx8IGRlZmluZWQoX1dJTlNPQ0tfSCkgfHwgXAogICAgICAgZGVmaW5lZChfX0xXSVBfT1BUX0hfXykgfHwgZGVmaW5lZChMV0lQX0hEUl9PUFRfSCkpCiAvKiBUaGUgY2hlY2sgYWJvdmUgcHJldmVudHMgdGhlIHdpbnNvY2syIGluY2x1c2lvbiBpZiB3aW5zb2NrLmggYWxyZWFkeSB3YXMKQEAgLTc5LDExICs3OSwxMSBAQAogI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KICNlbmRpZgogCi0jaWYgIWRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKF9XSU4zMl9XQ0UpCisjaWYgIWRlZmluZWQoQ1VSTF9XSU4zMikgJiYgIWRlZmluZWQoX1dJTjMyX1dDRSkKICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChfX1dBVENPTUNfXykgJiYgIWRlZmluZWQoX19WWFdPUktTX18pCisjaWYgIWRlZmluZWQoQ1VSTF9XSU4zMikgJiYgIWRlZmluZWQoX19XQVRDT01DX18pICYmICFkZWZpbmVkKF9fVlhXT1JLU19fKQogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKIApAQCAtMTE0LDcgKzExNCw3IEBACiAKICNpZmRlZiBDVVJMX1NUQVRJQ0xJQgogIyAgZGVmaW5lIENVUkxfRVhURVJOCi0jZWxpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IFwKKyNlbGlmIGRlZmluZWQoQ1VSTF9XSU4zMikgfHwgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCBcCiAgICAgIChfX2hhc19kZWNsc3BlY19hdHRyaWJ1dGUoZGxsZXhwb3J0KSAmJiBcCiAgICAgICBfX2hhc19kZWNsc3BlY19hdHRyaWJ1dGUoZGxsaW1wb3J0KSkKICMgIGlmIGRlZmluZWQoQlVJTERJTkdfTElCQ1VSTCkKQEAgLTEzMCw3ICsxMzAsNyBAQAogCiAjaWZuZGVmIGN1cmxfc29ja2V0X3R5cGVkZWYKIC8qIHNvY2tldCB0eXBlZGVmICovCi0jaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19MV0lQX09QVF9IX18pICYmICFkZWZpbmVkKExXSVBfSERSX09QVF9IKQorI2lmIGRlZmluZWQoQ1VSTF9XSU4zMikgJiYgIWRlZmluZWQoX19MV0lQX09QVF9IX18pICYmICFkZWZpbmVkKExXSVBfSERSX09QVF9IKQogdHlwZWRlZiBTT0NLRVQgY3VybF9zb2NrZXRfdDsKICNkZWZpbmUgQ1VSTF9TT0NLRVRfQkFEIElOVkFMSURfU09DS0VUCiAjZWxzZQpAQCAtMTU0LDcgKzE1NCw4IEBACiAgIENVUkxTU0xCQUNLRU5EX1NFQ1VSRVRSQU5TUE9SVCA9IDksCiAgIENVUkxTU0xCQUNLRU5EX0FYVExTID0gMTAsIC8qIG5ldmVyIHVzZWQgc2luY2UgNy42My4wICovCiAgIENVUkxTU0xCQUNLRU5EX01CRURUTFMgPSAxMSwKLSAgQ1VSTFNTTEJBQ0tFTkRfTUVTQUxJTksgPSAxMgorICBDVVJMU1NMQkFDS0VORF9NRVNBTElOSyA9IDEyLAorICBDVVJMU1NMQkFDS0VORF9CRUFSU1NMID0gMTMKIH0gY3VybF9zc2xiYWNrZW5kOwogCiAvKiBhbGlhc2VzIGZvciBsaWJyYXJ5IGNsb25lcyBhbmQgcmVuYW1lcyAqLwpAQCAtMjA5LDE2ICsyMTAsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldC4gQWRkZWQgaW4gNy40Ni4wICovCiB9OwogCi0vKiBUaGlzIGlzIHRoZSBDVVJMT1BUX1BST0dSRVNTRlVOQ1RJT04gY2FsbGJhY2sgcHJvdG8uIEl0IGlzIG5vdyBjb25zaWRlcmVkCi0gICBkZXByZWNhdGVkIGJ1dCB3YXMgdGhlIG9ubHkgY2hvaWNlIHVwIHVudGlsIDcuMzEuMCAqLworCisvKiBUaGlzIGlzIGEgcmV0dXJuIGNvZGUgZm9yIHRoZSBwcm9ncmVzcyBjYWxsYmFjayB0aGF0LCB3aGVuIHJldHVybmVkLCB3aWxsCisgICBzaWduYWwgbGliY3VybCB0byBjb250aW51ZSBleGVjdXRpbmcgdGhlIGRlZmF1bHQgcHJvZ3Jlc3MgZnVuY3Rpb24gKi8KKyNkZWZpbmUgQ1VSTF9QUk9HUkVTU0ZVTkNfQ09OVElOVUUgMHgxMDAwMDAwMQorCisvKiBUaGlzIGlzIHRoZSBDVVJMT1BUX1BST0dSRVNTRlVOQ1RJT04gY2FsbGJhY2sgcHJvdG90eXBlLiBJdCBpcyBub3cKKyAgIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBidXQgd2FzIHRoZSBvbmx5IGNob2ljZSB1cCB1bnRpbCA3LjMxLjAgKi8KIHR5cGVkZWYgaW50ICgqY3VybF9wcm9ncmVzc19jYWxsYmFjaykodm9pZCAqY2xpZW50cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRsdG90YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkbG5vdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHVsdG90YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB1bG5vdyk7CiAKLS8qIFRoaXMgaXMgdGhlIENVUkxPUFRfWEZFUklORk9GVU5DVElPTiBjYWxsYmFjayBwcm90by4gSXQgd2FzIGludHJvZHVjZWQgaW4KLSAgIDcuMzIuMCwgaXQgYXZvaWRzIGZsb2F0aW5nIHBvaW50IGFuZCBwcm92aWRlcyBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uLiAqLworLyogVGhpcyBpcyB0aGUgQ1VSTE9QVF9YRkVSSU5GT0ZVTkNUSU9OIGNhbGxiYWNrIHByb3RvdHlwZS4gSXQgd2FzIGludHJvZHVjZWQKKyAgIGluIDcuMzIuMCwgYXZvaWRzIHRoZSB1c2Ugb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhbmQgcHJvdmlkZXMgbW9yZQorICAgZGV0YWlsZWQgaW5mb3JtYXRpb24uICovCiB0eXBlZGVmIGludCAoKmN1cmxfeGZlcmluZm9fY2FsbGJhY2spKHZvaWQgKmNsaWVudHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfb2ZmX3QgZGx0b3RhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9vZmZfdCBkbG5vdywKQEAgLTI4MywxMCArMjkwLDcgQEAKICNkZWZpbmUgQ1VSTEZJTkZPRkxBR19LTk9XTl9TSVpFICAgICAgICAoMTw8NikKICNkZWZpbmUgQ1VSTEZJTkZPRkxBR19LTk9XTl9ITElOS0NPVU5UICAoMTw8NykKIAotLyogQ29udGVudCBvZiB0aGlzIHN0cnVjdHVyZSBkZXBlbmRzIG9uIGluZm9ybWF0aW9uIHdoaWNoIGlzIGtub3duIGFuZCBpcwotICAgYWNoaWV2YWJsZSAoZS5nLiBieSBGVFAgTElTVCBwYXJzaW5nKS4gUGxlYXNlIHNlZSB0aGUgdXJsX2Vhc3lfc2V0b3B0KDMpIG1hbgotICAgcGFnZSBmb3IgY2FsbGJhY2tzIHJldHVybmluZyB0aGlzIHN0cnVjdHVyZSAtLSBzb21lIGZpZWxkcyBhcmUgbWFuZGF0b3J5LAotICAgc29tZSBvdGhlcnMgYXJlIG9wdGlvbmFsLiBUaGUgRkxBRyBmaWVsZCBoYXMgc3BlY2lhbCBtZWFuaW5nLiAqLworLyogSW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgZmlsZSwgdXNlZCB3aGVuIGRvaW5nIEZUUCB3aWxkY2FyZCBtYXRjaGluZyAqLwogc3RydWN0IGN1cmxfZmlsZWluZm8gewogICBjaGFyICpmaWxlbmFtZTsKICAgY3VybGZpbGV0eXBlIGZpbGV0eXBlOwpAQCAtNjAyLDYgKzYwNiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgQ1VSTEVfUkVDVVJTSVZFX0FQSV9DQUxMLCAgICAgIC8qIDkzIC0gYW4gYXBpIGZ1bmN0aW9uIHdhcyBjYWxsZWQgZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlIGEgY2FsbGJhY2sgKi8KKyAgQ1VSTEVfQVVUSF9FUlJPUiwgICAgICAgICAgICAgIC8qIDk0IC0gYW4gYXV0aGVudGljYXRpb24gZnVuY3Rpb24gcmV0dXJuZWQgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICovCisgIENVUkxFX0hUVFAzLCAgICAgICAgICAgICAgICAgICAvKiA5NSAtIEFuIEhUVFAvMyBsYXllciBwcm9ibGVtICovCisgIENVUkxFX1FVSUNfQ09OTkVDVF9FUlJPUiwgICAgICAvKiA5NiAtIFFVSUMgY29ubmVjdGlvbiBlcnJvciAqLwogICBDVVJMX0xBU1QgLyogbmV2ZXIgdXNlISAqLwogfSBDVVJMY29kZTsKIApAQCAtNjg1LDggKzY5MywxMCBAQAogdHlwZWRlZiBDVVJMY29kZSAoKmN1cmxfY29udl9jYWxsYmFjaykoY2hhciAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoKTsKIAogdHlwZWRlZiBDVVJMY29kZSAoKmN1cmxfc3NsX2N0eF9jYWxsYmFjaykoQ1VSTCAqY3VybCwgICAgLyogZWFzeSBoYW5kbGUgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNzbF9jdHgsIC8qIGFjdHVhbGx5IGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuU1NMIFNTTF9DVFggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNzbF9jdHgsIC8qIGFjdHVhbGx5IGFuIE9wZW5TU0wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIFdvbGZTU0wgU1NMX0NUWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGFuIG1iZWRUTFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYmVkdGxzX3NzbF9jb25maWcgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJwdHIpOwogCiB0eXBlZGVmIGVudW0gewpAQCAtODE5LDYgKzgyOSwxMCBAQAogICAgU1NMIGJhY2tlbmRzIHdoZXJlIHN1Y2ggYmVoYXZpb3IgaXMgcHJlc2VudC4gKi8KICNkZWZpbmUgQ1VSTFNTTE9QVF9OT19SRVZPS0UgKDE8PDEpCiAKKy8qIC0gTk9fUEFSVElBTENIQUlOIHRlbGxzIGxpYmN1cmwgdG8gKk5PVCogYWNjZXB0IGEgcGFydGlhbCBjZXJ0aWZpY2F0ZSBjaGFpbgorICAgaWYgcG9zc2libGUuIFRoZSBPcGVuU1NMIGJhY2tlbmQgaGFzIHRoaXMgYWJpbGl0eS4gKi8KKyNkZWZpbmUgQ1VSTFNTTE9QVF9OT19QQVJUSUFMQ0hBSU4gKDE8PDIpCisKIC8qIFRoZSBkZWZhdWx0IGNvbm5lY3Rpb24gYXR0ZW1wdCBkZWxheSBpbiBtaWxsaXNlY29uZHMgZm9yIGhhcHB5IGV5ZWJhbGxzLgogICAgQ1VSTE9QVF9IQVBQWV9FWUVCQUxMU19USU1FT1VUX01TLjMgYW5kIGhhcHB5LWV5ZWJhbGxzLXRpbWVvdXQtbXMuZCBkb2N1bWVudAogICAgdGhpcyB2YWx1ZSwga2VlcCB0aGVtIGluIHN5bmMuICovCkBAIC04ODMsNyArODk3LDcgQEAKIAogLyogQ1VSTEFMVFNWQ18qIGFyZSBiaXRzIGZvciB0aGUgQ1VSTE9QVF9BTFRTVkNfQ1RSTCBvcHRpb24gKi8KICNkZWZpbmUgQ1VSTEFMVFNWQ19JTU1FRElBVEVMWSAgKDE8PDApCi0jZGVmaW5lIENVUkxBTFRTVkNfQUxUVVNFRCAgICAgICgxPDwxKQorCiAjZGVmaW5lIENVUkxBTFRTVkNfUkVBRE9OTFlGSUxFICgxPDwyKQogI2RlZmluZSBDVVJMQUxUU1ZDX0gxICAgICAgICAgICAoMTw8MykKICNkZWZpbmUgQ1VSTEFMVFNWQ19IMiAgICAgICAgICAgKDE8PDQpCkBAIC05MjQsNzkgKzkzOCw2NCBAQAogICAgYnV0IDMyICovCiAjZGVmaW5lIENVUkxPUFRUWVBFX0xPTkcgICAgICAgICAgMAogI2RlZmluZSBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCAgIDEwMDAwCi0jZGVmaW5lIENVUkxPUFRUWVBFX1NUUklOR1BPSU5UICAgMTAwMDAKICNkZWZpbmUgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVCAyMDAwMAogI2RlZmluZSBDVVJMT1BUVFlQRV9PRkZfVCAgICAgICAgIDMwMDAwCiAKIC8qICpTVFJJTkdQT0lOVCBpcyBhbiBhbGlhcyBmb3IgT0JKRUNUUE9JTlQgdG8gYWxsb3cgdG9vbHMgdG8gZXh0cmFjdCB0aGUKICAgIHN0cmluZyBvcHRpb25zIGZyb20gdGhlIGhlYWRlciBmaWxlICovCiAKLS8qIG5hbWUgaXMgdXBwZXJjYXNlIENVUkxPUFRfPG5hbWU+LAotICAgdHlwZSBpcyBvbmUgb2YgdGhlIGRlZmluZWQgQ1VSTE9QVFRZUEVfPHR5cGU+Ci0gICBudW1iZXIgaXMgdW5pcXVlIGlkZW50aWZpZXIgKi8KLSNpZmRlZiBDSU5JVAotI3VuZGVmIENJTklUCi0jZW5kaWYKIAotI2lmZGVmIENVUkxfSVNPQ1BQCi0jZGVmaW5lIENJTklUKG5hLHQsbnUpIENVUkxPUFRfICMjIG5hID0gQ1VSTE9QVFRZUEVfICMjIHQgKyBudQotI2Vsc2UKLS8qIFRoZSBtYWNybyAiIyMiIGlzIElTTyBDLCB3ZSBhc3N1bWUgcHJlLUlTTyBDIGRvZXNuJ3Qgc3VwcG9ydCBpdC4gKi8KLSNkZWZpbmUgTE9ORyAgICAgICAgICBDVVJMT1BUVFlQRV9MT05HCi0jZGVmaW5lIE9CSkVDVFBPSU5UICAgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQKLSNkZWZpbmUgU1RSSU5HUE9JTlQgICBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVAotI2RlZmluZSBGVU5DVElPTlBPSU5UIENVUkxPUFRUWVBFX0ZVTkNUSU9OUE9JTlQKLSNkZWZpbmUgT0ZGX1QgICAgICAgICBDVVJMT1BUVFlQRV9PRkZfVAotI2RlZmluZSBDSU5JVChuYW1lLHR5cGUsbnVtYmVyKSBDVVJMT1BUXy8qKi9uYW1lID0gdHlwZSArIG51bWJlcgotI2VuZGlmCisjZGVmaW5lIENVUkxPUFQobmEsdCxudSkgbmEgPSB0ICsgbnUKKworLyogaGFuZHkgYWxpYXNlcyB0aGF0IG1ha2Ugbm8gcnVuLXRpbWUgZGlmZmVyZW5jZSAqLworI2RlZmluZSBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCAgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQKKyNkZWZpbmUgQ1VSTE9QVFRZUEVfU0xJU1RQT0lOVCAgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQKIAogLyoKLSAqIFRoaXMgbWFjcm8tbWFuaWEgYmVsb3cgc2V0dXBzIHRoZSBDVVJMT1BUX1t3aGF0XSBlbnVtLCB0byBiZSB1c2VkIHdpdGgKLSAqIGN1cmxfZWFzeV9zZXRvcHQoKS4gVGhlIGZpcnN0IGFyZ3VtZW50IGluIHRoZSBDSU5JVCgpIG1hY3JvIGlzIHRoZSBbd2hhdF0KLSAqIHdvcmQuCisgKiBBbGwgQ1VSTE9QVF8qIHZhbHVlcy4KICAqLwogCiB0eXBlZGVmIGVudW0gewogICAvKiBUaGlzIGlzIHRoZSBGSUxFICogb3Igdm9pZCAqIHRoZSByZWd1bGFyIG91dHB1dCBzaG91bGQgYmUgd3JpdHRlbiB0by4gKi8KLSAgQ0lOSVQoV1JJVEVEQVRBLCBPQkpFQ1RQT0lOVCwgMSksCisgIENVUkxPUFQoQ1VSTE9QVF9XUklURURBVEEsIENVUkxPUFRUWVBFX09CSkVDVFBPSU5ULCAxKSwKIAogICAvKiBUaGUgZnVsbCBVUkwgdG8gZ2V0L3B1dCAqLwotICBDSU5JVChVUkwsIFNUUklOR1BPSU5ULCAyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1VSTCwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDIpLAogCiAgIC8qIFBvcnQgbnVtYmVyIHRvIGNvbm5lY3QgdG8sIGlmIG90aGVyIHRoYW4gZGVmYXVsdC4gKi8KLSAgQ0lOSVQoUE9SVCwgTE9ORywgMyksCisgIENVUkxPUFQoQ1VSTE9QVF9QT1JULCBDVVJMT1BUVFlQRV9MT05HLCAzKSwKIAogICAvKiBOYW1lIG9mIHByb3h5IHRvIHVzZS4gKi8KLSAgQ0lOSVQoUFJPWFksIFNUUklOR1BPSU5ULCA0KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1BST1hZLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgNCksCiAKICAgLyogInVzZXI6cGFzc3dvcmQ7b3B0aW9ucyIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcuICovCi0gIENJTklUKFVTRVJQV0QsIFNUUklOR1BPSU5ULCA1KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1VTRVJQV0QsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCA1KSwKIAogICAvKiAidXNlcjpwYXNzd29yZCIgdG8gdXNlIHdpdGggcHJveHkuICovCi0gIENJTklUKFBST1hZVVNFUlBXRCwgU1RSSU5HUE9JTlQsIDYpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlVU0VSUFdELCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgNiksCiAKICAgLyogUmFuZ2UgdG8gZ2V0LCBzcGVjaWZpZWQgYXMgYW4gQVNDSUkgc3RyaW5nLiAqLwotICBDSU5JVChSQU5HRSwgU1RSSU5HUE9JTlQsIDcpLAorICBDVVJMT1BUKENVUkxPUFRfUkFOR0UsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCA3KSwKIAogICAvKiBub3QgdXNlZCAqLwogCiAgIC8qIFNwZWNpZmllZCBmaWxlIHN0cmVhbSB0byB1cGxvYWQgZnJvbSAodXNlIGFzIGlucHV0KTogKi8KLSAgQ0lOSVQoUkVBRERBVEEsIE9CSkVDVFBPSU5ULCA5KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1JFQUREQVRBLCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgOSksCiAKICAgLyogQnVmZmVyIHRvIHJlY2VpdmUgZXJyb3IgbWVzc2FnZXMgaW4sIG11c3QgYmUgYXQgbGVhc3QgQ1VSTF9FUlJPUl9TSVpFCiAgICAqIGJ5dGVzIGJpZy4gKi8KLSAgQ0lOSVQoRVJST1JCVUZGRVIsIE9CSkVDVFBPSU5ULCAxMCksCisgIENVUkxPUFQoQ1VSTE9QVF9FUlJPUkJVRkZFUiwgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDEwKSwKIAogICAvKiBGdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIHN0b3JlIHRoZSBvdXRwdXQgKGluc3RlYWQgb2YgZndyaXRlKS4gVGhlCiAgICAqIHBhcmFtZXRlcnMgd2lsbCB1c2UgZndyaXRlKCkgc3ludGF4LCBtYWtlIHN1cmUgdG8gZm9sbG93IHRoZW0uICovCi0gIENJTklUKFdSSVRFRlVOQ1RJT04sIEZVTkNUSU9OUE9JTlQsIDExKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1dSSVRFRlVOQ1RJT04sIENVUkxPUFRUWVBFX0ZVTkNUSU9OUE9JTlQsIDExKSwKIAogICAvKiBGdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIHJlYWQgdGhlIGlucHV0IChpbnN0ZWFkIG9mIGZyZWFkKS4gVGhlCiAgICAqIHBhcmFtZXRlcnMgd2lsbCB1c2UgZnJlYWQoKSBzeW50YXgsIG1ha2Ugc3VyZSB0byBmb2xsb3cgdGhlbS4gKi8KLSAgQ0lOSVQoUkVBREZVTkNUSU9OLCBGVU5DVElPTlBPSU5ULCAxMiksCisgIENVUkxPUFQoQ1VSTE9QVF9SRUFERlVOQ1RJT04sIENVUkxPUFRUWVBFX0ZVTkNUSU9OUE9JTlQsIDEyKSwKIAogICAvKiBUaW1lLW91dCB0aGUgcmVhZCBvcGVyYXRpb24gYWZ0ZXIgdGhpcyBhbW91bnQgb2Ygc2Vjb25kcyAqLwotICBDSU5JVChUSU1FT1VULCBMT05HLCAxMyksCisgIENVUkxPUFQoQ1VSTE9QVF9USU1FT1VULCBDVVJMT1BUVFlQRV9MT05HLCAxMyksCiAKICAgLyogSWYgdGhlIENVUkxPUFRfSU5GSUxFIGlzIHVzZWQsIHRoaXMgY2FuIGJlIHVzZWQgdG8gaW5mb3JtIGxpYmN1cmwgYWJvdXQKICAgICogaG93IGxhcmdlIHRoZSBmaWxlIGJlaW5nIHNlbnQgcmVhbGx5IGlzLiBUaGF0IGFsbG93cyBiZXR0ZXIgZXJyb3IKQEAgLTEwMDcsMjAgKzEwMDYsMjAgQEAKICAgICogd2hpY2ggdGFrZXMgYW4gb2ZmX3QgdHlwZSwgYWxsb3dpbmcgcGxhdGZvcm1zIHdpdGggbGFyZ2VyIG9mZl90CiAgICAqIHNpemVzIHRvIGhhbmRsZSBsYXJnZXIgZmlsZXMuICBTZWUgYmVsb3cgZm9yIElORklMRVNJWkVfTEFSR0UuCiAgICAqLwotICBDSU5JVChJTkZJTEVTSVpFLCBMT05HLCAxNCksCisgIENVUkxPUFQoQ1VSTE9QVF9JTkZJTEVTSVpFLCBDVVJMT1BUVFlQRV9MT05HLCAxNCksCiAKICAgLyogUE9TVCBzdGF0aWMgaW5wdXQgZmllbGRzLiAqLwotICBDSU5JVChQT1NURklFTERTLCBPQkpFQ1RQT0lOVCwgMTUpLAorICBDVVJMT1BUKENVUkxPUFRfUE9TVEZJRUxEUywgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDE1KSwKIAogICAvKiBTZXQgdGhlIHJlZmVycmVyIHBhZ2UgKG5lZWRlZCBieSBzb21lIENHSXMpICovCi0gIENJTklUKFJFRkVSRVIsIFNUUklOR1BPSU5ULCAxNiksCisgIENVUkxPUFQoQ1VSTE9QVF9SRUZFUkVSLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMTYpLAogCiAgIC8qIFNldCB0aGUgRlRQIFBPUlQgc3RyaW5nIChpbnRlcmZhY2UgbmFtZSwgbmFtZWQgb3IgbnVtZXJpY2FsIElQIGFkZHJlc3MpCiAgICAgIFVzZSBpLmUgJy0nIHRvIHVzZSBkZWZhdWx0IGFkZHJlc3MuICovCi0gIENJTklUKEZUUFBPUlQsIFNUUklOR1BPSU5ULCAxNyksCisgIENVUkxPUFQoQ1VSTE9QVF9GVFBQT1JULCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMTcpLAogCiAgIC8qIFNldCB0aGUgVXNlci1BZ2VudCBzdHJpbmcgKGV4YW1pbmVkIGJ5IHNvbWUgQ0dJcykgKi8KLSAgQ0lOSVQoVVNFUkFHRU5ULCBTVFJJTkdQT0lOVCwgMTgpLAorICBDVVJMT1BUKENVUkxPUFRfVVNFUkFHRU5ULCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMTgpLAogCiAgIC8qIElmIHRoZSBkb3dubG9hZCByZWNlaXZlcyBsZXNzIHRoYW4gImxvdyBzcGVlZCBsaW1pdCIgYnl0ZXMvc2Vjb25kCiAgICAqIGR1cmluZyAibG93IHNwZWVkIHRpbWUiIHNlY29uZHMsIHRoZSBvcGVyYXRpb25zIGlzIGFib3J0ZWQuCkBAIC0xMDI5LDEwICsxMDI4LDEwIEBACiAgICAqLwogCiAgIC8qIFNldCB0aGUgImxvdyBzcGVlZCBsaW1pdCIgKi8KLSAgQ0lOSVQoTE9XX1NQRUVEX0xJTUlULCBMT05HLCAxOSksCisgIENVUkxPUFQoQ1VSTE9QVF9MT1dfU1BFRURfTElNSVQsIENVUkxPUFRUWVBFX0xPTkcsIDE5KSwKIAogICAvKiBTZXQgdGhlICJsb3cgc3BlZWQgdGltZSIgKi8KLSAgQ0lOSVQoTE9XX1NQRUVEX1RJTUUsIExPTkcsIDIwKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0xPV19TUEVFRF9USU1FLCBDVVJMT1BUVFlQRV9MT05HLCAyMCksCiAKICAgLyogU2V0IHRoZSBjb250aW51YXRpb24gb2Zmc2V0LgogICAgKgpAQCAtMTA0MCw0OCArMTAzOSw0OCBAQAogICAgKiBvZmZfdCB0eXBlcywgYWxsb3dpbmcgZm9yIGxhcmdlIGZpbGUgb2Zmc2V0cyBvbiBwbGF0Zm9ybXMgd2hpY2gKICAgICogdXNlIGxhcmdlci10aGFuLTMyLWJpdCBvZmZfdCdzLiAgTG9vayBiZWxvdyBmb3IgUkVTVU1FX0ZST01fTEFSR0UuCiAgICAqLwotICBDSU5JVChSRVNVTUVfRlJPTSwgTE9ORywgMjEpLAorICBDVVJMT1BUKENVUkxPUFRfUkVTVU1FX0ZST00sIENVUkxPUFRUWVBFX0xPTkcsIDIxKSwKIAogICAvKiBTZXQgY29va2llIGluIHJlcXVlc3Q6ICovCi0gIENJTklUKENPT0tJRSwgU1RSSU5HUE9JTlQsIDIyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NPT0tJRSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDIyKSwKIAogICAvKiBUaGlzIHBvaW50cyB0byBhIGxpbmtlZCBsaXN0IG9mIGhlYWRlcnMsIHN0cnVjdCBjdXJsX3NsaXN0IGtpbmQuIFRoaXMKICAgICAgbGlzdCBpcyBhbHNvIHVzZWQgZm9yIFJUU1AgKGluIHNwaXRlIG9mIGl0cyBuYW1lKSAqLwotICBDSU5JVChIVFRQSEVBREVSLCBPQkpFQ1RQT0lOVCwgMjMpLAorICBDVVJMT1BUKENVUkxPUFRfSFRUUEhFQURFUiwgQ1VSTE9QVFRZUEVfU0xJU1RQT0lOVCwgMjMpLAogCiAgIC8qIFRoaXMgcG9pbnRzIHRvIGEgbGlua2VkIGxpc3Qgb2YgcG9zdCBlbnRyaWVzLCBzdHJ1Y3QgY3VybF9odHRwcG9zdCAqLwotICBDSU5JVChIVFRQUE9TVCwgT0JKRUNUUE9JTlQsIDI0KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0hUVFBQT1NULCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgMjQpLAogCiAgIC8qIG5hbWUgb2YgdGhlIGZpbGUga2VlcGluZyB5b3VyIHByaXZhdGUgU1NMLWNlcnRpZmljYXRlICovCi0gIENJTklUKFNTTENFUlQsIFNUUklOR1BPSU5ULCAyNSksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0xDRVJULCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjUpLAogCiAgIC8qIHBhc3N3b3JkIGZvciB0aGUgU1NMIG9yIFNTSCBwcml2YXRlIGtleSAqLwotICBDSU5JVChLRVlQQVNTV0QsIFNUUklOR1BPSU5ULCAyNiksCisgIENVUkxPUFQoQ1VSTE9QVF9LRVlQQVNTV0QsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyNiksCiAKICAgLyogc2VuZCBUWVBFIHBhcmFtZXRlcj8gKi8KLSAgQ0lOSVQoQ1JMRiwgTE9ORywgMjcpLAorICBDVVJMT1BUKENVUkxPUFRfQ1JMRiwgQ1VSTE9QVFRZUEVfTE9ORywgMjcpLAogCiAgIC8qIHNlbmQgbGlua2VkLWxpc3Qgb2YgUVVPVEUgY29tbWFuZHMgKi8KLSAgQ0lOSVQoUVVPVEUsIE9CSkVDVFBPSU5ULCAyOCksCisgIENVUkxPUFQoQ1VSTE9QVF9RVU9URSwgQ1VSTE9QVFRZUEVfU0xJU1RQT0lOVCwgMjgpLAogCiAgIC8qIHNlbmQgRklMRSAqIG9yIHZvaWQgKiB0byBzdG9yZSBoZWFkZXJzIHRvLCBpZiB5b3UgdXNlIGEgY2FsbGJhY2sgaXQKICAgICAgaXMgc2ltcGx5IHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgdW5tb2RpZmllZCAqLwotICBDSU5JVChIRUFERVJEQVRBLCBPQkpFQ1RQT0lOVCwgMjkpLAorICBDVVJMT1BUKENVUkxPUFRfSEVBREVSREFUQSwgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDI5KSwKIAogICAvKiBwb2ludCB0byBhIGZpbGUgdG8gcmVhZCB0aGUgaW5pdGlhbCBjb29raWVzIGZyb20sIGFsc28gZW5hYmxlcwogICAgICAiY29va2llIGF3YXJlbmVzcyIgKi8KLSAgQ0lOSVQoQ09PS0lFRklMRSwgU1RSSU5HUE9JTlQsIDMxKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NPT0tJRUZJTEUsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAzMSksCiAKICAgLyogV2hhdCB2ZXJzaW9uIHRvIHNwZWNpZmljYWxseSB0cnkgdG8gdXNlLgogICAgICBTZWUgQ1VSTF9TU0xWRVJTSU9OIGRlZmluZXMgYmVsb3cuICovCi0gIENJTklUKFNTTFZFUlNJT04sIExPTkcsIDMyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NTTFZFUlNJT04sIENVUkxPUFRUWVBFX0xPTkcsIDMyKSwKIAogICAvKiBXaGF0IGtpbmQgb2YgSFRUUCB0aW1lIGNvbmRpdGlvbiB0byB1c2UsIHNlZSBkZWZpbmVzICovCi0gIENJTklUKFRJTUVDT05ESVRJT04sIExPTkcsIDMzKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1RJTUVDT05ESVRJT04sIENVUkxPUFRUWVBFX0xPTkcsIDMzKSwKIAogICAvKiBUaW1lIHRvIHVzZSB3aXRoIHRoZSBhYm92ZSBjb25kaXRpb24uIFNwZWNpZmllZCBpbiBudW1iZXIgb2Ygc2Vjb25kcwogICAgICBzaW5jZSAxIEphbiAxOTcwICovCi0gIENJTklUKFRJTUVWQUxVRSwgTE9ORywgMzQpLAorICBDVVJMT1BUKENVUkxPUFRfVElNRVZBTFVFLCBDVVJMT1BUVFlQRV9MT05HLCAzNCksCiAKICAgLyogMzUgPSBPQlNPTEVURSAqLwogCkBAIC0xMDg5LDM3ICsxMDg4LDU4IEBACiAgICAgIEhUVFA6IERFTEVURSwgVFJBQ0UgYW5kIG90aGVycwogICAgICBGVFA6IHRvIHVzZSBhIGRpZmZlcmVudCBsaXN0IGNvbW1hbmQKICAgICAgKi8KLSAgQ0lOSVQoQ1VTVE9NUkVRVUVTVCwgU1RSSU5HUE9JTlQsIDM2KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NVU1RPTVJFUVVFU1QsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAzNiksCiAKICAgLyogRklMRSBoYW5kbGUgdG8gdXNlIGluc3RlYWQgb2Ygc3RkZXJyICovCi0gIENJTklUKFNUREVSUiwgT0JKRUNUUE9JTlQsIDM3KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NUREVSUiwgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDM3KSwKIAogICAvKiAzOCBpcyBub3QgdXNlZCAqLwogCiAgIC8qIHNlbmQgbGlua2VkLWxpc3Qgb2YgcG9zdC10cmFuc2ZlciBRVU9URSBjb21tYW5kcyAqLwotICBDSU5JVChQT1NUUVVPVEUsIE9CSkVDVFBPSU5ULCAzOSksCisgIENVUkxPUFQoQ1VSTE9QVF9QT1NUUVVPVEUsIENVUkxPUFRUWVBFX1NMSVNUUE9JTlQsIDM5KSwKIAotICBDSU5JVChPQlNPTEVURTQwLCBPQkpFQ1RQT0lOVCwgNDApLCAvKiBPQlNPTEVURSwgZG8gbm90IHVzZSEgKi8KKyAgIC8qIE9CU09MRVRFLCBkbyBub3QgdXNlISAqLworICBDVVJMT1BUKENVUkxPUFRfT0JTT0xFVEU0MCwgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDQwKSwKIAotICBDSU5JVChWRVJCT1NFLCBMT05HLCA0MSksICAgICAgLyogdGFsayBhIGxvdCAqLwotICBDSU5JVChIRUFERVIsIExPTkcsIDQyKSwgICAgICAgLyogdGhyb3cgdGhlIGhlYWRlciBvdXQgdG9vICovCi0gIENJTklUKE5PUFJPR1JFU1MsIExPTkcsIDQzKSwgICAvKiBzaHV0IG9mZiB0aGUgcHJvZ3Jlc3MgbWV0ZXIgKi8KLSAgQ0lOSVQoTk9CT0RZLCBMT05HLCA0NCksICAgICAgIC8qIHVzZSBIRUFEIHRvIGdldCBodHRwIGRvY3VtZW50ICovCi0gIENJTklUKEZBSUxPTkVSUk9SLCBMT05HLCA0NSksICAvKiBubyBvdXRwdXQgb24gaHR0cCBlcnJvciBjb2RlcyA+PSA0MDAgKi8KLSAgQ0lOSVQoVVBMT0FELCBMT05HLCA0NiksICAgICAgIC8qIHRoaXMgaXMgYW4gdXBsb2FkICovCi0gIENJTklUKFBPU1QsIExPTkcsIDQ3KSwgICAgICAgICAvKiBIVFRQIFBPU1QgbWV0aG9kICovCi0gIENJTklUKERJUkxJU1RPTkxZLCBMT05HLCA0OCksICAvKiBiYXJlIG5hbWVzIHdoZW4gbGlzdGluZyBkaXJlY3RvcmllcyAqLworICAvKiB0YWxrIGEgbG90ICovCisgIENVUkxPUFQoQ1VSTE9QVF9WRVJCT1NFLCBDVVJMT1BUVFlQRV9MT05HLCA0MSksCiAKLSAgQ0lOSVQoQVBQRU5ELCBMT05HLCA1MCksICAgICAgIC8qIEFwcGVuZCBpbnN0ZWFkIG9mIG92ZXJ3cml0ZSBvbiB1cGxvYWQhICovCisgIC8qIHRocm93IHRoZSBoZWFkZXIgb3V0IHRvbyAqLworICBDVVJMT1BUKENVUkxPUFRfSEVBREVSLCBDVVJMT1BUVFlQRV9MT05HLCA0MiksCisKKyAgLyogc2h1dCBvZmYgdGhlIHByb2dyZXNzIG1ldGVyICovCisgIENVUkxPUFQoQ1VSTE9QVF9OT1BST0dSRVNTLCBDVVJMT1BUVFlQRV9MT05HLCA0MyksCisKKyAgLyogdXNlIEhFQUQgdG8gZ2V0IGh0dHAgZG9jdW1lbnQgKi8KKyAgQ1VSTE9QVChDVVJMT1BUX05PQk9EWSwgQ1VSTE9QVFRZUEVfTE9ORywgNDQpLAorCisgIC8qIG5vIG91dHB1dCBvbiBodHRwIGVycm9yIGNvZGVzID49IDQwMCAqLworICBDVVJMT1BUKENVUkxPUFRfRkFJTE9ORVJST1IsIENVUkxPUFRUWVBFX0xPTkcsIDQ1KSwKKworICAvKiB0aGlzIGlzIGFuIHVwbG9hZCAqLworICBDVVJMT1BUKENVUkxPUFRfVVBMT0FELCBDVVJMT1BUVFlQRV9MT05HLCA0NiksCisKKyAgLyogSFRUUCBQT1NUIG1ldGhvZCAqLworICBDVVJMT1BUKENVUkxPUFRfUE9TVCwgQ1VSTE9QVFRZUEVfTE9ORywgNDcpLAorCisgIC8qIGJhcmUgbmFtZXMgd2hlbiBsaXN0aW5nIGRpcmVjdG9yaWVzICovCisgIENVUkxPUFQoQ1VSTE9QVF9ESVJMSVNUT05MWSwgQ1VSTE9QVFRZUEVfTE9ORywgNDgpLAorCisgIC8qIEFwcGVuZCBpbnN0ZWFkIG9mIG92ZXJ3cml0ZSBvbiB1cGxvYWQhICovCisgIENVUkxPUFQoQ1VSTE9QVF9BUFBFTkQsIENVUkxPUFRUWVBFX0xPTkcsIDUwKSwKIAogICAvKiBTcGVjaWZ5IHdoZXRoZXIgdG8gcmVhZCB0aGUgdXNlcitwYXNzd29yZCBmcm9tIHRoZSAubmV0cmMgb3IgdGhlIFVSTC4KICAgICogVGhpcyBtdXN0IGJlIG9uZSBvZiB0aGUgQ1VSTF9ORVRSQ18qIGVudW1zIGJlbG93LiAqLwotICBDSU5JVChORVRSQywgTE9ORywgNTEpLAorICBDVVJMT1BUKENVUkxPUFRfTkVUUkMsIENVUkxPUFRUWVBFX0xPTkcsIDUxKSwKIAotICBDSU5JVChGT0xMT1dMT0NBVElPTiwgTE9ORywgNTIpLCAgLyogdXNlIExvY2F0aW9uOiBMdWtlISAqLworICAvKiB1c2UgTG9jYXRpb246IEx1a2UhICovCisgIENVUkxPUFQoQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgQ1VSTE9QVFRZUEVfTE9ORywgNTIpLAogCi0gIENJTklUKFRSQU5TRkVSVEVYVCwgTE9ORywgNTMpLCAvKiB0cmFuc2ZlciBkYXRhIGluIHRleHQvQVNDSUkgZm9ybWF0ICovCi0gIENJTklUKFBVVCwgTE9ORywgNTQpLCAgICAgICAgICAvKiBIVFRQIFBVVCAqLworICAgLyogdHJhbnNmZXIgZGF0YSBpbiB0ZXh0L0FTQ0lJIGZvcm1hdCAqLworICBDVVJMT1BUKENVUkxPUFRfVFJBTlNGRVJURVhULCBDVVJMT1BUVFlQRV9MT05HLCA1MyksCisKKyAgLyogSFRUUCBQVVQgKi8KKyAgQ1VSTE9QVChDVVJMT1BUX1BVVCwgQ1VSTE9QVFRZUEVfTE9ORywgNTQpLAogCiAgIC8qIDU1ID0gT0JTT0xFVEUgKi8KIApAQCAtMTEyNywyNjUgKzExNDcsMjY3IEBACiAgICAqIEZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgaW5zdGVhZCBvZiB0aGUgaW50ZXJuYWwgcHJvZ3Jlc3MgZGlzcGxheQogICAgKiBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgZGVmaW5lZCBhcyB0aGUgY3VybF9wcm9ncmVzc19jYWxsYmFjawogICAgKiBwcm90b3R5cGUgZGVmaW5lcy4gKi8KLSAgQ0lOSVQoUFJPR1JFU1NGVU5DVElPTiwgRlVOQ1RJT05QT0lOVCwgNTYpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTiwgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVCwgNTYpLAogCiAgIC8qIERhdGEgcGFzc2VkIHRvIHRoZSBDVVJMT1BUX1BST0dSRVNTRlVOQ1RJT04gYW5kIENVUkxPUFRfWEZFUklORk9GVU5DVElPTgogICAgICBjYWxsYmFja3MgKi8KLSAgQ0lOSVQoUFJPR1JFU1NEQVRBLCBPQkpFQ1RQT0lOVCwgNTcpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPR1JFU1NEQVRBLCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgNTcpLAogI2RlZmluZSBDVVJMT1BUX1hGRVJJTkZPREFUQSBDVVJMT1BUX1BST0dSRVNTREFUQQogCiAgIC8qIFdlIHdhbnQgdGhlIHJlZmVycmVyIGZpZWxkIHNldCBhdXRvbWF0aWNhbGx5IHdoZW4gZm9sbG93aW5nIGxvY2F0aW9ucyAqLwotICBDSU5JVChBVVRPUkVGRVJFUiwgTE9ORywgNTgpLAorICBDVVJMT1BUKENVUkxPUFRfQVVUT1JFRkVSRVIsIENVUkxPUFRUWVBFX0xPTkcsIDU4KSwKIAogICAvKiBQb3J0IG9mIHRoZSBwcm94eSwgY2FuIGJlIHNldCBpbiB0aGUgcHJveHkgc3RyaW5nIGFzIHdlbGwgd2l0aDoKICAgICAgIltob3N0XTpbcG9ydF0iICovCi0gIENJTklUKFBST1hZUE9SVCwgTE9ORywgNTkpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlQT1JULCBDVVJMT1BUVFlQRV9MT05HLCA1OSksCiAKICAgLyogc2l6ZSBvZiB0aGUgUE9TVCBpbnB1dCBkYXRhLCBpZiBzdHJsZW4oKSBpcyBub3QgZ29vZCB0byB1c2UgKi8KLSAgQ0lOSVQoUE9TVEZJRUxEU0laRSwgTE9ORywgNjApLAorICBDVVJMT1BUKENVUkxPUFRfUE9TVEZJRUxEU0laRSwgQ1VSTE9QVFRZUEVfTE9ORywgNjApLAogCiAgIC8qIHR1bm5lbCBub24taHR0cCBvcGVyYXRpb25zIHRocm91Z2ggYSBIVFRQIHByb3h5ICovCi0gIENJTklUKEhUVFBQUk9YWVRVTk5FTCwgTE9ORywgNjEpLAorICBDVVJMT1BUKENVUkxPUFRfSFRUUFBST1hZVFVOTkVMLCBDVVJMT1BUVFlQRV9MT05HLCA2MSksCiAKICAgLyogU2V0IHRoZSBpbnRlcmZhY2Ugc3RyaW5nIHRvIHVzZSBhcyBvdXRnb2luZyBuZXR3b3JrIGludGVyZmFjZSAqLwotICBDSU5JVChJTlRFUkZBQ0UsIFNUUklOR1BPSU5ULCA2MiksCisgIENVUkxPUFQoQ1VSTE9QVF9JTlRFUkZBQ0UsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCA2MiksCiAKICAgLyogU2V0IHRoZSBrcmI0LzUgc2VjdXJpdHkgbGV2ZWwsIHRoaXMgYWxzbyBlbmFibGVzIGtyYjQvNSBhd2FyZW5lc3MuICBUaGlzCiAgICAqIGlzIGEgc3RyaW5nLCAnY2xlYXInLCAnc2FmZScsICdjb25maWRlbnRpYWwnIG9yICdwcml2YXRlJy4gIElmIHRoZSBzdHJpbmcKICAgICogaXMgc2V0IGJ1dCBkb2Vzbid0IG1hdGNoIG9uZSBvZiB0aGVzZSwgJ3ByaXZhdGUnIHdpbGwgYmUgdXNlZC4gICovCi0gIENJTklUKEtSQkxFVkVMLCBTVFJJTkdQT0lOVCwgNjMpLAorICBDVVJMT1BUKENVUkxPUFRfS1JCTEVWRUwsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCA2MyksCiAKICAgLyogU2V0IGlmIHdlIHNob3VsZCB2ZXJpZnkgdGhlIHBlZXIgaW4gc3NsIGhhbmRzaGFrZSwgc2V0IDEgdG8gdmVyaWZ5LiAqLwotICBDSU5JVChTU0xfVkVSSUZZUEVFUiwgTE9ORywgNjQpLAorICBDVVJMT1BUKENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIENVUkxPUFRUWVBFX0xPTkcsIDY0KSwKIAogICAvKiBUaGUgQ0FwYXRoIG9yIENBZmlsZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBwZWVyIGNlcnRpZmljYXRlCiAgICAgIHRoaXMgb3B0aW9uIGlzIHVzZWQgb25seSBpZiBTU0xfVkVSSUZZUEVFUiBpcyB0cnVlICovCi0gIENJTklUKENBSU5GTywgU1RSSU5HUE9JTlQsIDY1KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NBSU5GTywgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDY1KSwKIAogICAvKiA2NiA9IE9CU09MRVRFICovCiAgIC8qIDY3ID0gT0JTT0xFVEUgKi8KIAogICAvKiBNYXhpbXVtIG51bWJlciBvZiBodHRwIHJlZGlyZWN0cyB0byBmb2xsb3cgKi8KLSAgQ0lOSVQoTUFYUkVESVJTLCBMT05HLCA2OCksCisgIENVUkxPUFQoQ1VSTE9QVF9NQVhSRURJUlMsIENVUkxPUFRUWVBFX0xPTkcsIDY4KSwKIAogICAvKiBQYXNzIGEgbG9uZyBzZXQgdG8gMSB0byBnZXQgdGhlIGRhdGUgb2YgdGhlIHJlcXVlc3RlZCBkb2N1bWVudCAoaWYKICAgICAgcG9zc2libGUpISBQYXNzIGEgemVybyB0byBzaHV0IGl0IG9mZi4gKi8KLSAgQ0lOSVQoRklMRVRJTUUsIExPTkcsIDY5KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0ZJTEVUSU1FLCBDVVJMT1BUVFlQRV9MT05HLCA2OSksCiAKICAgLyogVGhpcyBwb2ludHMgdG8gYSBsaW5rZWQgbGlzdCBvZiB0ZWxuZXQgb3B0aW9ucyAqLwotICBDSU5JVChURUxORVRPUFRJT05TLCBPQkpFQ1RQT0lOVCwgNzApLAorICBDVVJMT1BUKENVUkxPUFRfVEVMTkVUT1BUSU9OUywgQ1VSTE9QVFRZUEVfU0xJU1RQT0lOVCwgNzApLAogCiAgIC8qIE1heCBhbW91bnQgb2YgY2FjaGVkIGFsaXZlIGNvbm5lY3Rpb25zICovCi0gIENJTklUKE1BWENPTk5FQ1RTLCBMT05HLCA3MSksCisgIENVUkxPUFQoQ1VSTE9QVF9NQVhDT05ORUNUUywgQ1VSTE9QVFRZUEVfTE9ORywgNzEpLAogCi0gIENJTklUKE9CU09MRVRFNzIsIExPTkcsIDcyKSwgLyogT0JTT0xFVEUsIGRvIG5vdCB1c2UhICovCisgIC8qIE9CU09MRVRFLCBkbyBub3QgdXNlISAqLworICBDVVJMT1BUKENVUkxPUFRfT0JTT0xFVEU3MiwgQ1VSTE9QVFRZUEVfTE9ORywgNzIpLAogCiAgIC8qIDczID0gT0JTT0xFVEUgKi8KIAogICAvKiBTZXQgdG8gZXhwbGljaXRseSB1c2UgYSBuZXcgY29ubmVjdGlvbiBmb3IgdGhlIHVwY29taW5nIHRyYW5zZmVyLgogICAgICBEbyBub3QgdXNlIHRoaXMgdW5sZXNzIHlvdSdyZSBhYnNvbHV0ZWx5IHN1cmUgb2YgdGhpcywgYXMgaXQgbWFrZXMgdGhlCiAgICAgIG9wZXJhdGlvbiBzbG93ZXIgYW5kIGlzIGxlc3MgZnJpZW5kbHkgZm9yIHRoZSBuZXR3b3JrLiAqLwotICBDSU5JVChGUkVTSF9DT05ORUNULCBMT05HLCA3NCksCisgIENVUkxPUFQoQ1VSTE9QVF9GUkVTSF9DT05ORUNULCBDVVJMT1BUVFlQRV9MT05HLCA3NCksCiAKICAgLyogU2V0IHRvIGV4cGxpY2l0bHkgZm9yYmlkIHRoZSB1cGNvbWluZyB0cmFuc2ZlcidzIGNvbm5lY3Rpb24gdG8gYmUgcmUtdXNlZAogICAgICB3aGVuIGRvbmUuIERvIG5vdCB1c2UgdGhpcyB1bmxlc3MgeW91J3JlIGFic29sdXRlbHkgc3VyZSBvZiB0aGlzLCBhcyBpdAogICAgICBtYWtlcyB0aGUgb3BlcmF0aW9uIHNsb3dlciBhbmQgaXMgbGVzcyBmcmllbmRseSBmb3IgdGhlIG5ldHdvcmsuICovCi0gIENJTklUKEZPUkJJRF9SRVVTRSwgTE9ORywgNzUpLAorICBDVVJMT1BUKENVUkxPUFRfRk9SQklEX1JFVVNFLCBDVVJMT1BUVFlQRV9MT05HLCA3NSksCiAKICAgLyogU2V0IHRvIGEgZmlsZSBuYW1lIHRoYXQgY29udGFpbnMgcmFuZG9tIGRhdGEgZm9yIGxpYmN1cmwgdG8gdXNlIHRvCiAgICAgIHNlZWQgdGhlIHJhbmRvbSBlbmdpbmUgd2hlbiBkb2luZyBTU0wgY29ubmVjdHMuICovCi0gIENJTklUKFJBTkRPTV9GSUxFLCBTVFJJTkdQT0lOVCwgNzYpLAorICBDVVJMT1BUKENVUkxPUFRfUkFORE9NX0ZJTEUsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCA3NiksCiAKICAgLyogU2V0IHRvIHRoZSBFbnRyb3B5IEdhdGhlcmluZyBEYWVtb24gc29ja2V0IHBhdGhuYW1lICovCi0gIENJTklUKEVHRFNPQ0tFVCwgU1RSSU5HUE9JTlQsIDc3KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0VHRFNPQ0tFVCwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDc3KSwKIAogICAvKiBUaW1lLW91dCBjb25uZWN0IG9wZXJhdGlvbnMgYWZ0ZXIgdGhpcyBhbW91bnQgb2Ygc2Vjb25kcywgaWYgY29ubmVjdHMgYXJlCiAgICAgIE9LIHdpdGhpbiB0aGlzIHRpbWUsIHRoZW4gZmluZS4uLiBUaGlzIG9ubHkgYWJvcnRzIHRoZSBjb25uZWN0IHBoYXNlLiAqLwotICBDSU5JVChDT05ORUNUVElNRU9VVCwgTE9ORywgNzgpLAorICBDVVJMT1BUKENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsIENVUkxPUFRUWVBFX0xPTkcsIDc4KSwKIAogICAvKiBGdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIHN0b3JlIGhlYWRlcnMgKGluc3RlYWQgb2YgZndyaXRlKS4gVGhlCiAgICAqIHBhcmFtZXRlcnMgd2lsbCB1c2UgZndyaXRlKCkgc3ludGF4LCBtYWtlIHN1cmUgdG8gZm9sbG93IHRoZW0uICovCi0gIENJTklUKEhFQURFUkZVTkNUSU9OLCBGVU5DVElPTlBPSU5ULCA3OSksCisgIENVUkxPUFQoQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVCwgNzkpLAogCiAgIC8qIFNldCB0aGlzIHRvIGZvcmNlIHRoZSBIVFRQIHJlcXVlc3QgdG8gZ2V0IGJhY2sgdG8gR0VULiBPbmx5IHJlYWxseSB1c2FibGUKICAgICAgaWYgUE9TVCwgUFVUIG9yIGEgY3VzdG9tIHJlcXVlc3QgaGF2ZSBiZWVuIHVzZWQgZmlyc3QuCiAgICAqLwotICBDSU5JVChIVFRQR0VULCBMT05HLCA4MCksCisgIENVUkxPUFQoQ1VSTE9QVF9IVFRQR0VULCBDVVJMT1BUVFlQRV9MT05HLCA4MCksCiAKICAgLyogU2V0IGlmIHdlIHNob3VsZCB2ZXJpZnkgdGhlIENvbW1vbiBuYW1lIGZyb20gdGhlIHBlZXIgY2VydGlmaWNhdGUgaW4gc3NsCiAgICAqIGhhbmRzaGFrZSwgc2V0IDEgdG8gY2hlY2sgZXhpc3RlbmNlLCAyIHRvIGVuc3VyZSB0aGF0IGl0IG1hdGNoZXMgdGhlCiAgICAqIHByb3ZpZGVkIGhvc3RuYW1lLiAqLwotICBDSU5JVChTU0xfVkVSSUZZSE9TVCwgTE9ORywgODEpLAorICBDVVJMT1BUKENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIENVUkxPUFRUWVBFX0xPTkcsIDgxKSwKIAogICAvKiBTcGVjaWZ5IHdoaWNoIGZpbGUgbmFtZSB0byB3cml0ZSBhbGwga25vd24gY29va2llcyBpbiBhZnRlciBjb21wbGV0ZWQKICAgICAgb3BlcmF0aW9uLiBTZXQgZmlsZSBuYW1lIHRvICItIiAoZGFzaCkgdG8gbWFrZSBpdCBnbyB0byBzdGRvdXQuICovCi0gIENJTklUKENPT0tJRUpBUiwgU1RSSU5HUE9JTlQsIDgyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NPT0tJRUpBUiwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDgyKSwKIAogICAvKiBTcGVjaWZ5IHdoaWNoIFNTTCBjaXBoZXJzIHRvIHVzZSAqLwotICBDSU5JVChTU0xfQ0lQSEVSX0xJU1QsIFNUUklOR1BPSU5ULCA4MyksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCA4MyksCiAKICAgLyogU3BlY2lmeSB3aGljaCBIVFRQIHZlcnNpb24gdG8gdXNlISBUaGlzIG11c3QgYmUgc2V0IHRvIG9uZSBvZiB0aGUKICAgICAgQ1VSTF9IVFRQX1ZFUlNJT04qIGVudW1zIHNldCBiZWxvdy4gKi8KLSAgQ0lOSVQoSFRUUF9WRVJTSU9OLCBMT05HLCA4NCksCisgIENVUkxPUFQoQ1VSTE9QVF9IVFRQX1ZFUlNJT04sIENVUkxPUFRUWVBFX0xPTkcsIDg0KSwKIAogICAvKiBTcGVjaWZpY2FsbHkgc3dpdGNoIG9uIG9yIG9mZiB0aGUgRlRQIGVuZ2luZSdzIHVzZSBvZiB0aGUgRVBTViBjb21tYW5kLiBCeQogICAgICBkZWZhdWx0LCB0aGF0IG9uZSB3aWxsIGFsd2F5cyBiZSBhdHRlbXB0ZWQgYmVmb3JlIHRoZSBtb3JlIHRyYWRpdGlvbmFsCiAgICAgIFBBU1YgY29tbWFuZC4gKi8KLSAgQ0lOSVQoRlRQX1VTRV9FUFNWLCBMT05HLCA4NSksCisgIENVUkxPUFQoQ1VSTE9QVF9GVFBfVVNFX0VQU1YsIENVUkxPUFRUWVBFX0xPTkcsIDg1KSwKIAogICAvKiB0eXBlIG9mIHRoZSBmaWxlIGtlZXBpbmcgeW91ciBTU0wtY2VydGlmaWNhdGUgKCJERVIiLCAiUEVNIiwgIkVORyIpICovCi0gIENJTklUKFNTTENFUlRUWVBFLCBTVFJJTkdQT0lOVCwgODYpLAorICBDVVJMT1BUKENVUkxPUFRfU1NMQ0VSVFRZUEUsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCA4NiksCiAKICAgLyogbmFtZSBvZiB0aGUgZmlsZSBrZWVwaW5nIHlvdXIgcHJpdmF0ZSBTU0wta2V5ICovCi0gIENJTklUKFNTTEtFWSwgU1RSSU5HUE9JTlQsIDg3KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NTTEtFWSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDg3KSwKIAogICAvKiB0eXBlIG9mIHRoZSBmaWxlIGtlZXBpbmcgeW91ciBwcml2YXRlIFNTTC1rZXkgKCJERVIiLCAiUEVNIiwgIkVORyIpICovCi0gIENJTklUKFNTTEtFWVRZUEUsIFNUUklOR1BPSU5ULCA4OCksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0xLRVlUWVBFLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgODgpLAogCiAgIC8qIGNyeXB0byBlbmdpbmUgZm9yIHRoZSBTU0wtc3ViIHN5c3RlbSAqLwotICBDSU5JVChTU0xFTkdJTkUsIFNUUklOR1BPSU5ULCA4OSksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0xFTkdJTkUsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCA4OSksCiAKICAgLyogc2V0IHRoZSBjcnlwdG8gZW5naW5lIGZvciB0aGUgU1NMLXN1YiBzeXN0ZW0gYXMgZGVmYXVsdAogICAgICB0aGUgcGFyYW0gaGFzIG5vIG1lYW5pbmcuLi4KICAgICovCi0gIENJTklUKFNTTEVOR0lORV9ERUZBVUxULCBMT05HLCA5MCksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVCwgQ1VSTE9QVFRZUEVfTE9ORywgOTApLAogCiAgIC8qIE5vbi16ZXJvIHZhbHVlIG1lYW5zIHRvIHVzZSB0aGUgZ2xvYmFsIGRucyBjYWNoZSAqLwotICBDSU5JVChETlNfVVNFX0dMT0JBTF9DQUNIRSwgTE9ORywgOTEpLCAvKiBERVBSRUNBVEVELCBkbyBub3QgdXNlISAqLworICAvKiBERVBSRUNBVEVELCBkbyBub3QgdXNlISAqLworICBDVVJMT1BUKENVUkxPUFRfRE5TX1VTRV9HTE9CQUxfQ0FDSEUsIENVUkxPUFRUWVBFX0xPTkcsIDkxKSwKIAogICAvKiBETlMgY2FjaGUgdGltZW91dCAqLwotICBDSU5JVChETlNfQ0FDSEVfVElNRU9VVCwgTE9ORywgOTIpLAorICBDVVJMT1BUKENVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQsIENVUkxPUFRUWVBFX0xPTkcsIDkyKSwKIAogICAvKiBzZW5kIGxpbmtlZC1saXN0IG9mIHByZS10cmFuc2ZlciBRVU9URSBjb21tYW5kcyAqLwotICBDSU5JVChQUkVRVU9URSwgT0JKRUNUUE9JTlQsIDkzKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1BSRVFVT1RFLCBDVVJMT1BUVFlQRV9TTElTVFBPSU5ULCA5MyksCiAKICAgLyogc2V0IHRoZSBkZWJ1ZyBmdW5jdGlvbiAqLwotICBDSU5JVChERUJVR0ZVTkNUSU9OLCBGVU5DVElPTlBPSU5ULCA5NCksCisgIENVUkxPUFQoQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OLCBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5ULCA5NCksCiAKICAgLyogc2V0IHRoZSBkYXRhIGZvciB0aGUgZGVidWcgZnVuY3Rpb24gKi8KLSAgQ0lOSVQoREVCVUdEQVRBLCBPQkpFQ1RQT0lOVCwgOTUpLAorICBDVVJMT1BUKENVUkxPUFRfREVCVUdEQVRBLCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgOTUpLAogCiAgIC8qIG1hcmsgdGhpcyBhcyBzdGFydCBvZiBhIGNvb2tpZSBzZXNzaW9uICovCi0gIENJTklUKENPT0tJRVNFU1NJT04sIExPTkcsIDk2KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NPT0tJRVNFU1NJT04sIENVUkxPUFRUWVBFX0xPTkcsIDk2KSwKIAogICAvKiBUaGUgQ0FwYXRoIGRpcmVjdG9yeSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBwZWVyIGNlcnRpZmljYXRlCiAgICAgIHRoaXMgb3B0aW9uIGlzIHVzZWQgb25seSBpZiBTU0xfVkVSSUZZUEVFUiBpcyB0cnVlICovCi0gIENJTklUKENBUEFUSCwgU1RSSU5HUE9JTlQsIDk3KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NBUEFUSCwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDk3KSwKIAogICAvKiBJbnN0cnVjdCBsaWJjdXJsIHRvIHVzZSBhIHNtYWxsZXIgcmVjZWl2ZSBidWZmZXIgKi8KLSAgQ0lOSVQoQlVGRkVSU0laRSwgTE9ORywgOTgpLAorICBDVVJMT1BUKENVUkxPUFRfQlVGRkVSU0laRSwgQ1VSTE9QVFRZUEVfTE9ORywgOTgpLAogCiAgIC8qIEluc3RydWN0IGxpYmN1cmwgdG8gbm90IHVzZSBhbnkgc2lnbmFsL2FsYXJtIGhhbmRsZXJzLCBldmVuIHdoZW4gdXNpbmcKICAgICAgdGltZW91dHMuIFRoaXMgb3B0aW9uIGlzIHVzZWZ1bCBmb3IgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb25zLgogICAgICBTZWUgbGliY3VybC10aGUtZ3VpZGUgZm9yIG1vcmUgYmFja2dyb3VuZCBpbmZvcm1hdGlvbi4gKi8KLSAgQ0lOSVQoTk9TSUdOQUwsIExPTkcsIDk5KSwKKyAgQ1VSTE9QVChDVVJMT1BUX05PU0lHTkFMLCBDVVJMT1BUVFlQRV9MT05HLCA5OSksCiAKICAgLyogUHJvdmlkZSBhIENVUkxTaGFyZSBmb3IgbXV0ZXhpbmcgbm9uLXRzIGRhdGEgKi8KLSAgQ0lOSVQoU0hBUkUsIE9CSkVDVFBPSU5ULCAxMDApLAorICBDVVJMT1BUKENVUkxPUFRfU0hBUkUsIENVUkxPUFRUWVBFX09CSkVDVFBPSU5ULCAxMDApLAogCiAgIC8qIGluZGljYXRlcyB0eXBlIG9mIHByb3h5LiBhY2NlcHRlZCB2YWx1ZXMgYXJlIENVUkxQUk9YWV9IVFRQIChkZWZhdWx0KSwKICAgICAgQ1VSTFBST1hZX0hUVFBTLCBDVVJMUFJPWFlfU09DS1M0LCBDVVJMUFJPWFlfU09DS1M0QSBhbmQKICAgICAgQ1VSTFBST1hZX1NPQ0tTNS4gKi8KLSAgQ0lOSVQoUFJPWFlUWVBFLCBMT05HLCAxMDEpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlUWVBFLCBDVVJMT1BUVFlQRV9MT05HLCAxMDEpLAogCiAgIC8qIFNldCB0aGUgQWNjZXB0LUVuY29kaW5nIHN0cmluZy4gVXNlIHRoaXMgdG8gdGVsbCBhIHNlcnZlciB5b3Ugd291bGQgbGlrZQogICAgICB0aGUgcmVzcG9uc2UgdG8gYmUgY29tcHJlc3NlZC4gQmVmb3JlIDcuMjEuNiwgdGhpcyB3YXMga25vd24gYXMKICAgICAgQ1VSTE9QVF9FTkNPRElORyAqLwotICBDSU5JVChBQ0NFUFRfRU5DT0RJTkcsIFNUUklOR1BPSU5ULCAxMDIpLAorICBDVVJMT1BUKENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMTAyKSwKIAogICAvKiBTZXQgcG9pbnRlciB0byBwcml2YXRlIGRhdGEgKi8KLSAgQ0lOSVQoUFJJVkFURSwgT0JKRUNUUE9JTlQsIDEwMyksCisgIENVUkxPUFQoQ1VSTE9QVF9QUklWQVRFLCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgMTAzKSwKIAogICAvKiBTZXQgYWxpYXNlcyBmb3IgSFRUUCAyMDAgaW4gdGhlIEhUVFAgUmVzcG9uc2UgaGVhZGVyICovCi0gIENJTklUKEhUVFAyMDBBTElBU0VTLCBPQkpFQ1RQT0lOVCwgMTA0KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0hUVFAyMDBBTElBU0VTLCBDVVJMT1BUVFlQRV9TTElTVFBPSU5ULCAxMDQpLAogCiAgIC8qIENvbnRpbnVlIHRvIHNlbmQgYXV0aGVudGljYXRpb24gKHVzZXIrcGFzc3dvcmQpIHdoZW4gZm9sbG93aW5nIGxvY2F0aW9ucywKICAgICAgZXZlbiB3aGVuIGhvc3RuYW1lIGNoYW5nZWQuIFRoaXMgY2FuIHBvdGVudGlhbGx5IHNlbmQgb2ZmIHRoZSBuYW1lCiAgICAgIGFuZCBwYXNzd29yZCB0byB3aGF0ZXZlciBob3N0IHRoZSBzZXJ2ZXIgZGVjaWRlcy4gKi8KLSAgQ0lOSVQoVU5SRVNUUklDVEVEX0FVVEgsIExPTkcsIDEwNSksCisgIENVUkxPUFQoQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSCwgQ1VSTE9QVFRZUEVfTE9ORywgMTA1KSwKIAogICAvKiBTcGVjaWZpY2FsbHkgc3dpdGNoIG9uIG9yIG9mZiB0aGUgRlRQIGVuZ2luZSdzIHVzZSBvZiB0aGUgRVBSVCBjb21tYW5kICgKICAgICAgaXQgYWxzbyBkaXNhYmxlcyB0aGUgTFBSVCBhdHRlbXB0KS4gQnkgZGVmYXVsdCwgdGhvc2Ugb25lcyB3aWxsIGFsd2F5cyBiZQogICAgICBhdHRlbXB0ZWQgYmVmb3JlIHRoZSBnb29kIG9sZCB0cmFkaXRpb25hbCBQT1JUIGNvbW1hbmQuICovCi0gIENJTklUKEZUUF9VU0VfRVBSVCwgTE9ORywgMTA2KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0ZUUF9VU0VfRVBSVCwgQ1VSTE9QVFRZUEVfTE9ORywgMTA2KSwKIAogICAvKiBTZXQgdGhpcyB0byBhIGJpdG1hc2sgdmFsdWUgdG8gZW5hYmxlIHRoZSBwYXJ0aWN1bGFyIGF1dGhlbnRpY2F0aW9ucwogICAgICBtZXRob2RzIHlvdSBsaWtlLiBVc2UgdGhpcyBpbiBjb21iaW5hdGlvbiB3aXRoIENVUkxPUFRfVVNFUlBXRC4KICAgICAgTm90ZSB0aGF0IHNldHRpbmcgbXVsdGlwbGUgYml0cyBtYXkgY2F1c2UgZXh0cmEgbmV0d29yayByb3VuZC10cmlwcy4gKi8KLSAgQ0lOSVQoSFRUUEFVVEgsIExPTkcsIDEwNyksCisgIENVUkxPUFQoQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTE9QVFRZUEVfTE9ORywgMTA3KSwKIAotICAvKiBTZXQgdGhlIHNzbCBjb250ZXh0IGNhbGxiYWNrIGZ1bmN0aW9uLCBjdXJyZW50bHkgb25seSBmb3IgT3BlblNTTCBzc2xfY3R4Ci0gICAgIGluIHNlY29uZCBhcmd1bWVudC4gVGhlIGZ1bmN0aW9uIG11c3QgYmUgbWF0Y2hpbmcgdGhlCi0gICAgIGN1cmxfc3NsX2N0eF9jYWxsYmFjayBwcm90by4gKi8KLSAgQ0lOSVQoU1NMX0NUWF9GVU5DVElPTiwgRlVOQ1RJT05QT0lOVCwgMTA4KSwKKyAgLyogU2V0IHRoZSBzc2wgY29udGV4dCBjYWxsYmFjayBmdW5jdGlvbiwgY3VycmVudGx5IG9ubHkgZm9yIE9wZW5TU0wgb3IKKyAgICAgV29sZlNTTCBzc2xfY3R4LCBvciBtYmVkVExTIG1iZWR0bHNfc3NsX2NvbmZpZyBpbiB0aGUgc2Vjb25kIGFyZ3VtZW50LgorICAgICBUaGUgZnVuY3Rpb24gbXVzdCBtYXRjaCB0aGUgY3VybF9zc2xfY3R4X2NhbGxiYWNrIHByb3RvdHlwZS4gKi8KKyAgQ1VSTE9QVChDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04sIENVUkxPUFRUWVBFX0ZVTkNUSU9OUE9JTlQsIDEwOCksCiAKICAgLyogU2V0IHRoZSB1c2VyZGF0YSBmb3IgdGhlIHNzbCBjb250ZXh0IGNhbGxiYWNrIGZ1bmN0aW9uJ3MgdGhpcmQKICAgICAgYXJndW1lbnQgKi8KLSAgQ0lOSVQoU1NMX0NUWF9EQVRBLCBPQkpFQ1RQT0lOVCwgMTA5KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NTTF9DVFhfREFUQSwgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDEwOSksCiAKICAgLyogRlRQIE9wdGlvbiB0aGF0IGNhdXNlcyBtaXNzaW5nIGRpcnMgdG8gYmUgY3JlYXRlZCBvbiB0aGUgcmVtb3RlIHNlcnZlci4KICAgICAgSW4gNy4xOS40IHdlIGludHJvZHVjZWQgdGhlIGNvbnZlbmllbmNlIGVudW1zIGZvciB0aGlzIG9wdGlvbiB1c2luZyB0aGUKICAgICAgQ1VSTEZUUF9DUkVBVEVfRElSIHByZWZpeC4KICAgKi8KLSAgQ0lOSVQoRlRQX0NSRUFURV9NSVNTSU5HX0RJUlMsIExPTkcsIDExMCksCisgIENVUkxPUFQoQ1VSTE9QVF9GVFBfQ1JFQVRFX01JU1NJTkdfRElSUywgQ1VSTE9QVFRZUEVfTE9ORywgMTEwKSwKIAogICAvKiBTZXQgdGhpcyB0byBhIGJpdG1hc2sgdmFsdWUgdG8gZW5hYmxlIHRoZSBwYXJ0aWN1bGFyIGF1dGhlbnRpY2F0aW9ucwogICAgICBtZXRob2RzIHlvdSBsaWtlLiBVc2UgdGhpcyBpbiBjb21iaW5hdGlvbiB3aXRoIENVUkxPUFRfUFJPWFlVU0VSUFdELgogICAgICBOb3RlIHRoYXQgc2V0dGluZyBtdWx0aXBsZSBiaXRzIG1heSBjYXVzZSBleHRyYSBuZXR3b3JrIHJvdW5kLXRyaXBzLiAqLwotICBDSU5JVChQUk9YWUFVVEgsIExPTkcsIDExMSksCisgIENVUkxPUFQoQ1VSTE9QVF9QUk9YWUFVVEgsIENVUkxPUFRUWVBFX0xPTkcsIDExMSksCiAKICAgLyogRlRQIG9wdGlvbiB0aGF0IGNoYW5nZXMgdGhlIHRpbWVvdXQsIGluIHNlY29uZHMsIGFzc29jaWF0ZWQgd2l0aAogICAgICBnZXR0aW5nIGEgcmVzcG9uc2UuICBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRyYW5zZmVyIHRpbWVvdXQgdGltZSBhbmQKICAgICAgZXNzZW50aWFsbHkgcGxhY2VzIGEgZGVtYW5kIG9uIHRoZSBGVFAgc2VydmVyIHRvIGFja25vd2xlZGdlIGNvbW1hbmRzCiAgICAgIGluIGEgdGltZWx5IG1hbm5lci4gKi8KLSAgQ0lOSVQoRlRQX1JFU1BPTlNFX1RJTUVPVVQsIExPTkcsIDExMiksCisgIENVUkxPUFQoQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVCwgQ1VSTE9QVFRZUEVfTE9ORywgMTEyKSwKICNkZWZpbmUgQ1VSTE9QVF9TRVJWRVJfUkVTUE9OU0VfVElNRU9VVCBDVVJMT1BUX0ZUUF9SRVNQT05TRV9USU1FT1VUCiAKICAgLyogU2V0IHRoaXMgb3B0aW9uIHRvIG9uZSBvZiB0aGUgQ1VSTF9JUFJFU09MVkVfKiBkZWZpbmVzIChzZWUgYmVsb3cpIHRvCiAgICAgIHRlbGwgbGliY3VybCB0byByZXNvbHZlIG5hbWVzIHRvIHRob3NlIElQIHZlcnNpb25zIG9ubHkuIFRoaXMgb25seSBoYXMKICAgICAgYWZmZWN0IG9uIHN5c3RlbXMgd2l0aCBzdXBwb3J0IGZvciBtb3JlIHRoYW4gb25lLCBpLmUgSVB2NCBfYW5kXyBJUHY2LiAqLwotICBDSU5JVChJUFJFU09MVkUsIExPTkcsIDExMyksCisgIENVUkxPUFQoQ1VSTE9QVF9JUFJFU09MVkUsIENVUkxPUFRUWVBFX0xPTkcsIDExMyksCiAKICAgLyogU2V0IHRoaXMgb3B0aW9uIHRvIGxpbWl0IHRoZSBzaXplIG9mIGEgZmlsZSB0aGF0IHdpbGwgYmUgZG93bmxvYWRlZCBmcm9tCiAgICAgIGFuIEhUVFAgb3IgRlRQIHNlcnZlci4KIAogICAgICBOb3RlIHRoZXJlIGlzIGFsc28gX0xBUkdFIHZlcnNpb24gd2hpY2ggYWRkcyBsYXJnZSBmaWxlIHN1cHBvcnQgZm9yCiAgICAgIHBsYXRmb3JtcyB3aGljaCBoYXZlIGxhcmdlciBvZmZfdCBzaXplcy4gIFNlZSBNQVhGSUxFU0laRV9MQVJHRSBiZWxvdy4gKi8KLSAgQ0lOSVQoTUFYRklMRVNJWkUsIExPTkcsIDExNCksCisgIENVUkxPUFQoQ1VSTE9QVF9NQVhGSUxFU0laRSwgQ1VSTE9QVFRZUEVfTE9ORywgMTE0KSwKIAogICAvKiBTZWUgdGhlIGNvbW1lbnQgZm9yIElORklMRVNJWkUgYWJvdmUsIGJ1dCBpbiBzaG9ydCwgc3BlY2lmaWVzCiAgICAqIHRoZSBzaXplIG9mIHRoZSBmaWxlIGJlaW5nIHVwbG9hZGVkLiAgLTEgbWVhbnMgdW5rbm93bi4KICAgICovCi0gIENJTklUKElORklMRVNJWkVfTEFSR0UsIE9GRl9ULCAxMTUpLAorICBDVVJMT1BUKENVUkxPUFRfSU5GSUxFU0laRV9MQVJHRSwgQ1VSTE9QVFRZUEVfT0ZGX1QsIDExNSksCiAKLSAgLyogU2V0cyB0aGUgY29udGludWF0aW9uIG9mZnNldC4gIFRoZXJlIGlzIGFsc28gYSBMT05HIHZlcnNpb24gb2YgdGhpczsKLSAgICogbG9vayBhYm92ZSBmb3IgUkVTVU1FX0ZST00uCisgIC8qIFNldHMgdGhlIGNvbnRpbnVhdGlvbiBvZmZzZXQuICBUaGVyZSBpcyBhbHNvIGEgQ1VSTE9QVFRZUEVfTE9ORyB2ZXJzaW9uCisgICAqIG9mIHRoaXM7IGxvb2sgYWJvdmUgZm9yIFJFU1VNRV9GUk9NLgogICAgKi8KLSAgQ0lOSVQoUkVTVU1FX0ZST01fTEFSR0UsIE9GRl9ULCAxMTYpLAorICBDVVJMT1BUKENVUkxPUFRfUkVTVU1FX0ZST01fTEFSR0UsIENVUkxPUFRUWVBFX09GRl9ULCAxMTYpLAogCiAgIC8qIFNldHMgdGhlIG1heGltdW0gc2l6ZSBvZiBkYXRhIHRoYXQgd2lsbCBiZSBkb3dubG9hZGVkIGZyb20KICAgICogYW4gSFRUUCBvciBGVFAgc2VydmVyLiAgU2VlIE1BWEZJTEVTSVpFIGFib3ZlIGZvciB0aGUgTE9ORyB2ZXJzaW9uLgogICAgKi8KLSAgQ0lOSVQoTUFYRklMRVNJWkVfTEFSR0UsIE9GRl9ULCAxMTcpLAorICBDVVJMT1BUKENVUkxPUFRfTUFYRklMRVNJWkVfTEFSR0UsIENVUkxPUFRUWVBFX09GRl9ULCAxMTcpLAogCiAgIC8qIFNldCB0aGlzIG9wdGlvbiB0byB0aGUgZmlsZSBuYW1lIG9mIHlvdXIgLm5ldHJjIGZpbGUgeW91IHdhbnQgbGliY3VybAogICAgICB0byBwYXJzZSAodXNpbmcgdGhlIENVUkxPUFRfTkVUUkMgb3B0aW9uKS4gSWYgbm90IHNldCwgbGliY3VybCB3aWxsIGRvCiAgICAgIGEgcG9vciBhdHRlbXB0IHRvIGZpbmQgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSBhbmQgY2hlY2sgZm9yIGEgLm5ldHJjCiAgICAgIGZpbGUgaW4gdGhlcmUuICovCi0gIENJTklUKE5FVFJDX0ZJTEUsIFNUUklOR1BPSU5ULCAxMTgpLAorICBDVVJMT1BUKENVUkxPUFRfTkVUUkNfRklMRSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDExOCksCiAKICAgLyogRW5hYmxlIFNTTC9UTFMgZm9yIEZUUCwgcGljayBvbmUgb2Y6CiAgICAgIENVUkxVU0VTU0xfVFJZICAgICAtIHRyeSB1c2luZyBTU0wsIHByb2NlZWQgYW55d2F5IG90aGVyd2lzZQogICAgICBDVVJMVVNFU1NMX0NPTlRST0wgLSBTU0wgZm9yIHRoZSBjb250cm9sIGNvbm5lY3Rpb24gb3IgZmFpbAogICAgICBDVVJMVVNFU1NMX0FMTCAgICAgLSBTU0wgZm9yIGFsbCBjb21tdW5pY2F0aW9uIG9yIGZhaWwKICAgKi8KLSAgQ0lOSVQoVVNFX1NTTCwgTE9ORywgMTE5KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1VTRV9TU0wsIENVUkxPUFRUWVBFX0xPTkcsIDExOSksCiAKICAgLyogVGhlIF9MQVJHRSB2ZXJzaW9uIG9mIHRoZSBzdGFuZGFyZCBQT1NURklFTERTSVpFIG9wdGlvbiAqLwotICBDSU5JVChQT1NURklFTERTSVpFX0xBUkdFLCBPRkZfVCwgMTIwKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFSR0UsIENVUkxPUFRUWVBFX09GRl9ULCAxMjApLAogCiAgIC8qIEVuYWJsZS9kaXNhYmxlIHRoZSBUQ1AgTmFnbGUgYWxnb3JpdGhtICovCi0gIENJTklUKFRDUF9OT0RFTEFZLCBMT05HLCAxMjEpLAorICBDVVJMT1BUKENVUkxPUFRfVENQX05PREVMQVksIENVUkxPUFRUWVBFX0xPTkcsIDEyMSksCiAKICAgLyogMTIyIE9CU09MRVRFLCB1c2VkIGluIDcuMTIuMy4gR29uZSBpbiA3LjEzLjAgKi8KICAgLyogMTIzIE9CU09MRVRFLiBHb25lIGluIDcuMTYuMCAqLwpAQCAtMTQwNSwxNDMgKzE0MjcsMTQzIEBACiAgICAgIENVUkxGVFBBVVRIX1NTTCAgICAgLSB0cnkgIkFVVEggU1NMIiBmaXJzdCwgdGhlbiBUTFMKICAgICAgQ1VSTEZUUEFVVEhfVExTICAgICAtIHRyeSAiQVVUSCBUTFMiIGZpcnN0LCB0aGVuIFNTTAogICAqLwotICBDSU5JVChGVFBTU0xBVVRILCBMT05HLCAxMjkpLAorICBDVVJMT1BUKENVUkxPUFRfRlRQU1NMQVVUSCwgQ1VSTE9QVFRZUEVfTE9ORywgMTI5KSwKIAotICBDSU5JVChJT0NUTEZVTkNUSU9OLCBGVU5DVElPTlBPSU5ULCAxMzApLAotICBDSU5JVChJT0NUTERBVEEsIE9CSkVDVFBPSU5ULCAxMzEpLAorICBDVVJMT1BUKENVUkxPUFRfSU9DVExGVU5DVElPTiwgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVCwgMTMwKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0lPQ1RMREFUQSwgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDEzMSksCiAKICAgLyogMTMyIE9CU09MRVRFLiBHb25lIGluIDcuMTYuMCAqLwogICAvKiAxMzMgT0JTT0xFVEUuIEdvbmUgaW4gNy4xNi4wICovCiAKICAgLyogemVybyB0ZXJtaW5hdGVkIHN0cmluZyBmb3IgcGFzcyBvbiB0byB0aGUgRlRQIHNlcnZlciB3aGVuIGFza2VkIGZvcgogICAgICAiYWNjb3VudCIgaW5mbyAqLwotICBDSU5JVChGVFBfQUNDT1VOVCwgU1RSSU5HUE9JTlQsIDEzNCksCisgIENVUkxPUFQoQ1VSTE9QVF9GVFBfQUNDT1VOVCwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDEzNCksCiAKICAgLyogZmVlZCBjb29raWUgaW50byBjb29raWUgZW5naW5lICovCi0gIENJTklUKENPT0tJRUxJU1QsIFNUUklOR1BPSU5ULCAxMzUpLAorICBDVVJMT1BUKENVUkxPUFRfQ09PS0lFTElTVCwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDEzNSksCiAKICAgLyogaWdub3JlIENvbnRlbnQtTGVuZ3RoICovCi0gIENJTklUKElHTk9SRV9DT05URU5UX0xFTkdUSCwgTE9ORywgMTM2KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSCwgQ1VSTE9QVFRZUEVfTE9ORywgMTM2KSwKIAogICAvKiBTZXQgdG8gbm9uLXplcm8gdG8gc2tpcCB0aGUgSVAgYWRkcmVzcyByZWNlaXZlZCBpbiBhIDIyNyBQQVNWIEZUUCBzZXJ2ZXIKICAgICAgcmVzcG9uc2UuIFR5cGljYWxseSB1c2VkIGZvciBGVFAtU1NMIHB1cnBvc2VzIGJ1dCBpcyBub3QgcmVzdHJpY3RlZCB0bwogICAgICB0aGF0LiBsaWJjdXJsIHdpbGwgdGhlbiBpbnN0ZWFkIHVzZSB0aGUgc2FtZSBJUCBhZGRyZXNzIGl0IHVzZWQgZm9yIHRoZQogICAgICBjb250cm9sIGNvbm5lY3Rpb24uICovCi0gIENJTklUKEZUUF9TS0lQX1BBU1ZfSVAsIExPTkcsIDEzNyksCisgIENVUkxPUFQoQ1VSTE9QVF9GVFBfU0tJUF9QQVNWX0lQLCBDVVJMT1BUVFlQRV9MT05HLCAxMzcpLAogCiAgIC8qIFNlbGVjdCAiZmlsZSBtZXRob2QiIHRvIHVzZSB3aGVuIGRvaW5nIEZUUCwgc2VlIHRoZSBjdXJsX2Z0cG1ldGhvZAogICAgICBhYm92ZS4gKi8KLSAgQ0lOSVQoRlRQX0ZJTEVNRVRIT0QsIExPTkcsIDEzOCksCisgIENVUkxPUFQoQ1VSTE9QVF9GVFBfRklMRU1FVEhPRCwgQ1VSTE9QVFRZUEVfTE9ORywgMTM4KSwKIAogICAvKiBMb2NhbCBwb3J0IG51bWJlciB0byBiaW5kIHRoZSBzb2NrZXQgdG8gKi8KLSAgQ0lOSVQoTE9DQUxQT1JULCBMT05HLCAxMzkpLAorICBDVVJMT1BUKENVUkxPUFRfTE9DQUxQT1JULCBDVVJMT1BUVFlQRV9MT05HLCAxMzkpLAogCiAgIC8qIE51bWJlciBvZiBwb3J0cyB0byB0cnksIGluY2x1ZGluZyB0aGUgZmlyc3Qgb25lIHNldCB3aXRoIExPQ0FMUE9SVC4KICAgICAgVGh1cywgc2V0dGluZyBpdCB0byAxIHdpbGwgbWFrZSBubyBhZGRpdGlvbmFsIGF0dGVtcHRzIGJ1dCB0aGUgZmlyc3QuCiAgICovCi0gIENJTklUKExPQ0FMUE9SVFJBTkdFLCBMT05HLCAxNDApLAorICBDVVJMT1BUKENVUkxPUFRfTE9DQUxQT1JUUkFOR0UsIENVUkxPUFRUWVBFX0xPTkcsIDE0MCksCiAKICAgLyogbm8gdHJhbnNmZXIsIHNldCB1cCBjb25uZWN0aW9uIGFuZCBsZXQgYXBwbGljYXRpb24gdXNlIHRoZSBzb2NrZXQgYnkKICAgICAgZXh0cmFjdGluZyBpdCB3aXRoIENVUkxJTkZPX0xBU1RTT0NLRVQgKi8KLSAgQ0lOSVQoQ09OTkVDVF9PTkxZLCBMT05HLCAxNDEpLAorICBDVVJMT1BUKENVUkxPUFRfQ09OTkVDVF9PTkxZLCBDVVJMT1BUVFlQRV9MT05HLCAxNDEpLAogCiAgIC8qIEZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY29udmVydCBmcm9tIHRoZQogICAgICBuZXR3b3JrIGVuY29kaW5nIChpbnN0ZWFkIG9mIHVzaW5nIHRoZSBpY29udiBjYWxscyBpbiBsaWJjdXJsKSAqLwotICBDSU5JVChDT05WX0ZST01fTkVUV09SS19GVU5DVElPTiwgRlVOQ1RJT05QT0lOVCwgMTQyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NPTlZfRlJPTV9ORVRXT1JLX0ZVTkNUSU9OLCBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5ULCAxNDIpLAogCiAgIC8qIEZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY29udmVydCB0byB0aGUKICAgICAgbmV0d29yayBlbmNvZGluZyAoaW5zdGVhZCBvZiB1c2luZyB0aGUgaWNvbnYgY2FsbHMgaW4gbGliY3VybCkgKi8KLSAgQ0lOSVQoQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OLCBGVU5DVElPTlBPSU5ULCAxNDMpLAorICBDVVJMT1BUKENVUkxPUFRfQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OLCBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5ULCAxNDMpLAogCiAgIC8qIEZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY29udmVydCBmcm9tIFVURjgKICAgICAgKGluc3RlYWQgb2YgdXNpbmcgdGhlIGljb252IGNhbGxzIGluIGxpYmN1cmwpCiAgICAgIE5vdGUgdGhhdCB0aGlzIGlzIHVzZWQgb25seSBmb3IgU1NMIGNlcnRpZmljYXRlIHByb2Nlc3NpbmcgKi8KLSAgQ0lOSVQoQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04sIEZVTkNUSU9OUE9JTlQsIDE0NCksCisgIENVUkxPUFQoQ1VSTE9QVF9DT05WX0ZST01fVVRGOF9GVU5DVElPTiwgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVCwgMTQ0KSwKIAogICAvKiBpZiB0aGUgY29ubmVjdGlvbiBwcm9jZWVkcyB0b28gcXVpY2tseSB0aGVuIG5lZWQgdG8gc2xvdyBpdCBkb3duICovCiAgIC8qIGxpbWl0LXJhdGU6IG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHBlciBzZWNvbmQgdG8gc2VuZCBvciByZWNlaXZlICovCi0gIENJTklUKE1BWF9TRU5EX1NQRUVEX0xBUkdFLCBPRkZfVCwgMTQ1KSwKLSAgQ0lOSVQoTUFYX1JFQ1ZfU1BFRURfTEFSR0UsIE9GRl9ULCAxNDYpLAorICBDVVJMT1BUKENVUkxPUFRfTUFYX1NFTkRfU1BFRURfTEFSR0UsIENVUkxPUFRUWVBFX09GRl9ULCAxNDUpLAorICBDVVJMT1BUKENVUkxPUFRfTUFYX1JFQ1ZfU1BFRURfTEFSR0UsIENVUkxPUFRUWVBFX09GRl9ULCAxNDYpLAogCiAgIC8qIFBvaW50ZXIgdG8gY29tbWFuZCBzdHJpbmcgdG8gc2VuZCBpZiBVU0VSL1BBU1MgZmFpbHMuICovCi0gIENJTklUKEZUUF9BTFRFUk5BVElWRV9UT19VU0VSLCBTVFJJTkdQT0lOVCwgMTQ3KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0ZUUF9BTFRFUk5BVElWRV9UT19VU0VSLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMTQ3KSwKIAogICAvKiBjYWxsYmFjayBmdW5jdGlvbiBmb3Igc2V0dGluZyBzb2NrZXQgb3B0aW9ucyAqLwotICBDSU5JVChTT0NLT1BURlVOQ1RJT04sIEZVTkNUSU9OUE9JTlQsIDE0OCksCi0gIENJTklUKFNPQ0tPUFREQVRBLCBPQkpFQ1RQT0lOVCwgMTQ5KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NPQ0tPUFRGVU5DVElPTiwgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVCwgMTQ4KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NPQ0tPUFREQVRBLCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgMTQ5KSwKIAogICAvKiBzZXQgdG8gMCB0byBkaXNhYmxlIHNlc3Npb24gSUQgcmUtdXNlIGZvciB0aGlzIHRyYW5zZmVyLCBkZWZhdWx0IGlzCiAgICAgIGVuYWJsZWQgKD09IDEpICovCi0gIENJTklUKFNTTF9TRVNTSU9OSURfQ0FDSEUsIExPTkcsIDE1MCksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLCBDVVJMT1BUVFlQRV9MT05HLCAxNTApLAogCiAgIC8qIGFsbG93ZWQgU1NIIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgKi8KLSAgQ0lOSVQoU1NIX0FVVEhfVFlQRVMsIExPTkcsIDE1MSksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0hfQVVUSF9UWVBFUywgQ1VSTE9QVFRZUEVfTE9ORywgMTUxKSwKIAogICAvKiBVc2VkIGJ5IHNjcC9zZnRwIHRvIGRvIHB1YmxpYy9wcml2YXRlIGtleSBhdXRoZW50aWNhdGlvbiAqLwotICBDSU5JVChTU0hfUFVCTElDX0tFWUZJTEUsIFNUUklOR1BPSU5ULCAxNTIpLAotICBDSU5JVChTU0hfUFJJVkFURV9LRVlGSUxFLCBTVFJJTkdQT0lOVCwgMTUzKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NTSF9QVUJMSUNfS0VZRklMRSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDE1MiksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0hfUFJJVkFURV9LRVlGSUxFLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMTUzKSwKIAogICAvKiBTZW5kIENDQyAoQ2xlYXIgQ29tbWFuZCBDaGFubmVsKSBhZnRlciBhdXRoZW50aWNhdGlvbiAqLwotICBDSU5JVChGVFBfU1NMX0NDQywgTE9ORywgMTU0KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0ZUUF9TU0xfQ0NDLCBDVVJMT1BUVFlQRV9MT05HLCAxNTQpLAogCiAgIC8qIFNhbWUgYXMgVElNRU9VVCBhbmQgQ09OTkVDVFRJTUVPVVQsIGJ1dCB3aXRoIG1zIHJlc29sdXRpb24gKi8KLSAgQ0lOSVQoVElNRU9VVF9NUywgTE9ORywgMTU1KSwKLSAgQ0lOSVQoQ09OTkVDVFRJTUVPVVRfTVMsIExPTkcsIDE1NiksCisgIENVUkxPUFQoQ1VSTE9QVF9USU1FT1VUX01TLCBDVVJMT1BUVFlQRV9MT05HLCAxNTUpLAorICBDVVJMT1BUKENVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMsIENVUkxPUFRUWVBFX0xPTkcsIDE1NiksCiAKICAgLyogc2V0IHRvIHplcm8gdG8gZGlzYWJsZSB0aGUgbGliY3VybCdzIGRlY29kaW5nIGFuZCB0aHVzIHBhc3MgdGhlIHJhdyBib2R5CiAgICAgIGRhdGEgdG8gdGhlIGFwcGxpY2F0aW9uIGV2ZW4gd2hlbiBpdCBpcyBlbmNvZGVkL2NvbXByZXNzZWQgKi8KLSAgQ0lOSVQoSFRUUF9UUkFOU0ZFUl9ERUNPRElORywgTE9ORywgMTU3KSwKLSAgQ0lOSVQoSFRUUF9DT05URU5UX0RFQ09ESU5HLCBMT05HLCAxNTgpLAorICBDVVJMT1BUKENVUkxPUFRfSFRUUF9UUkFOU0ZFUl9ERUNPRElORywgQ1VSTE9QVFRZUEVfTE9ORywgMTU3KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0hUVFBfQ09OVEVOVF9ERUNPRElORywgQ1VSTE9QVFRZUEVfTE9ORywgMTU4KSwKIAogICAvKiBQZXJtaXNzaW9uIHVzZWQgd2hlbiBjcmVhdGluZyBuZXcgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIG9uIHRoZSByZW1vdGUKICAgICAgc2VydmVyIGZvciBwcm90b2NvbHMgdGhhdCBzdXBwb3J0IGl0LCBTRlRQL1NDUC9GSUxFICovCi0gIENJTklUKE5FV19GSUxFX1BFUk1TLCBMT05HLCAxNTkpLAotICBDSU5JVChORVdfRElSRUNUT1JZX1BFUk1TLCBMT05HLCAxNjApLAorICBDVVJMT1BUKENVUkxPUFRfTkVXX0ZJTEVfUEVSTVMsIENVUkxPUFRUWVBFX0xPTkcsIDE1OSksCisgIENVUkxPUFQoQ1VSTE9QVF9ORVdfRElSRUNUT1JZX1BFUk1TLCBDVVJMT1BUVFlQRV9MT05HLCAxNjApLAogCiAgIC8qIFNldCB0aGUgYmVoYXZpb3VyIG9mIFBPU1Qgd2hlbiByZWRpcmVjdGluZy4gVmFsdWVzIG11c3QgYmUgc2V0IHRvIG9uZQogICAgICBvZiBDVVJMX1JFRElSKiBkZWZpbmVzIGJlbG93LiBUaGlzIHVzZWQgdG8gYmUgY2FsbGVkIENVUkxPUFRfUE9TVDMwMSAqLwotICBDSU5JVChQT1NUUkVESVIsIExPTkcsIDE2MSksCisgIENVUkxPUFQoQ1VSTE9QVF9QT1NUUkVESVIsIENVUkxPUFRUWVBFX0xPTkcsIDE2MSksCiAKICAgLyogdXNlZCBieSBzY3Avc2Z0cCB0byB2ZXJpZnkgdGhlIGhvc3QncyBwdWJsaWMga2V5ICovCi0gIENJTklUKFNTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1LCBTVFJJTkdQT0lOVCwgMTYyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1LCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMTYyKSwKIAogICAvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3Igb3BlbmluZyBzb2NrZXQgKGluc3RlYWQgb2Ygc29ja2V0KDIpKS4gT3B0aW9uYWxseSwKICAgICAgY2FsbGJhY2sgaXMgYWJsZSBjaGFuZ2UgdGhlIGFkZHJlc3Mgb3IgcmVmdXNlIHRvIGNvbm5lY3QgcmV0dXJuaW5nCiAgICAgIENVUkxfU09DS0VUX0JBRC4gIFRoZSBjYWxsYmFjayBzaG91bGQgaGF2ZSB0eXBlCiAgICAgIGN1cmxfb3BlbnNvY2tldF9jYWxsYmFjayAqLwotICBDSU5JVChPUEVOU09DS0VURlVOQ1RJT04sIEZVTkNUSU9OUE9JTlQsIDE2MyksCi0gIENJTklUKE9QRU5TT0NLRVREQVRBLCBPQkpFQ1RQT0lOVCwgMTY0KSwKKyAgQ1VSTE9QVChDVVJMT1BUX09QRU5TT0NLRVRGVU5DVElPTiwgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVCwgMTYzKSwKKyAgQ1VSTE9QVChDVVJMT1BUX09QRU5TT0NLRVREQVRBLCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgMTY0KSwKIAogICAvKiBQT1NUIHZvbGF0aWxlIGlucHV0IGZpZWxkcy4gKi8KLSAgQ0lOSVQoQ09QWVBPU1RGSUVMRFMsIE9CSkVDVFBPSU5ULCAxNjUpLAorICBDVVJMT1BUKENVUkxPUFRfQ09QWVBPU1RGSUVMRFMsIENVUkxPUFRUWVBFX09CSkVDVFBPSU5ULCAxNjUpLAogCiAgIC8qIHNldCB0cmFuc2ZlciBtb2RlICg7dHlwZT08YXxpPikgd2hlbiBkb2luZyBGVFAgdmlhIGFuIEhUVFAgcHJveHkgKi8KLSAgQ0lOSVQoUFJPWFlfVFJBTlNGRVJfTU9ERSwgTE9ORywgMTY2KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1BST1hZX1RSQU5TRkVSX01PREUsIENVUkxPUFRUWVBFX0xPTkcsIDE2NiksCiAKICAgLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHNlZWtpbmcgaW4gdGhlIGlucHV0IHN0cmVhbSAqLwotICBDSU5JVChTRUVLRlVOQ1RJT04sIEZVTkNUSU9OUE9JTlQsIDE2NyksCi0gIENJTklUKFNFRUtEQVRBLCBPQkpFQ1RQT0lOVCwgMTY4KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NFRUtGVU5DVElPTiwgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVCwgMTY3KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NFRUtEQVRBLCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgMTY4KSwKIAogICAvKiBDUkwgZmlsZSAqLwotICBDSU5JVChDUkxGSUxFLCBTVFJJTkdQT0lOVCwgMTY5KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NSTEZJTEUsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAxNjkpLAogCiAgIC8qIElzc3VlciBjZXJ0aWZpY2F0ZSAqLwotICBDSU5JVChJU1NVRVJDRVJULCBTVFJJTkdQT0lOVCwgMTcwKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0lTU1VFUkNFUlQsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAxNzApLAogCiAgIC8qIChJUHY2KSBBZGRyZXNzIHNjb3BlICovCi0gIENJTklUKEFERFJFU1NfU0NPUEUsIExPTkcsIDE3MSksCisgIENVUkxPUFQoQ1VSTE9QVF9BRERSRVNTX1NDT1BFLCBDVVJMT1BUVFlQRV9MT05HLCAxNzEpLAogCiAgIC8qIENvbGxlY3QgY2VydGlmaWNhdGUgY2hhaW4gaW5mbyBhbmQgYWxsb3cgaXQgdG8gZ2V0IHJldHJpZXZhYmxlIHdpdGgKICAgICAgQ1VSTElORk9fQ0VSVElORk8gYWZ0ZXIgdGhlIHRyYW5zZmVyIGlzIGNvbXBsZXRlLiAqLwotICBDSU5JVChDRVJUSU5GTywgTE9ORywgMTcyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NFUlRJTkZPLCBDVVJMT1BUVFlQRV9MT05HLCAxNzIpLAogCiAgIC8qICJuYW1lIiBhbmQgInB3ZCIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcuICovCi0gIENJTklUKFVTRVJOQU1FLCBTVFJJTkdQT0lOVCwgMTczKSwKLSAgQ0lOSVQoUEFTU1dPUkQsIFNUUklOR1BPSU5ULCAxNzQpLAorICBDVVJMT1BUKENVUkxPUFRfVVNFUk5BTUUsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAxNzMpLAorICBDVVJMT1BUKENVUkxPUFRfUEFTU1dPUkQsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAxNzQpLAogCiAgICAgLyogIm5hbWUiIGFuZCAicHdkIiB0byB1c2Ugd2l0aCBQcm94eSB3aGVuIGZldGNoaW5nLiAqLwotICBDSU5JVChQUk9YWVVTRVJOQU1FLCBTVFJJTkdQT0lOVCwgMTc1KSwKLSAgQ0lOSVQoUFJPWFlQQVNTV09SRCwgU1RSSU5HUE9JTlQsIDE3NiksCisgIENVUkxPUFQoQ1VSTE9QVF9QUk9YWVVTRVJOQU1FLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMTc1KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1BST1hZUEFTU1dPUkQsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAxNzYpLAogCiAgIC8qIENvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGhvc3RuYW1lcyBkZWZpbmluZyBuby1wcm94eSB6b25lcy4gVGhlc2Ugc2hvdWxkCiAgICAgIG1hdGNoIGJvdGggaG9zdG5hbWVzIGRpcmVjdGx5LCBhbmQgaG9zdG5hbWVzIHdpdGhpbiBhIGRvbWFpbi4gRm9yCkBAIC0xNTUwLDEwMyArMTU3MiwxMDMgQEAKICAgICAgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMsIC5sb2NhbC5jb20gd2lsbCBiZSBjb25zaWRlcmVkIHRvIGJlIHRoZSBzYW1lIGFzCiAgICAgIGxvY2FsLmNvbS4gQSBzaW5nbGUgKiBpcyB0aGUgb25seSB2YWxpZCB3aWxkY2FyZCwgYW5kIGVmZmVjdGl2ZWx5CiAgICAgIGRpc2FibGVzIHRoZSB1c2Ugb2YgcHJveHkuICovCi0gIENJTklUKE5PUFJPWFksIFNUUklOR1BPSU5ULCAxNzcpLAorICBDVVJMT1BUKENVUkxPUFRfTk9QUk9YWSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDE3NyksCiAKICAgLyogYmxvY2sgc2l6ZSBmb3IgVEZUUCB0cmFuc2ZlcnMgKi8KLSAgQ0lOSVQoVEZUUF9CTEtTSVpFLCBMT05HLCAxNzgpLAorICBDVVJMT1BUKENVUkxPUFRfVEZUUF9CTEtTSVpFLCBDVVJMT1BUVFlQRV9MT05HLCAxNzgpLAogCiAgIC8qIFNvY2tzIFNlcnZpY2UgKi8KLSAgQ0lOSVQoU09DS1M1X0dTU0FQSV9TRVJWSUNFLCBTVFJJTkdQT0lOVCwgMTc5KSwgLyogREVQUkVDQVRFRCwgZG8gbm90IHVzZSEgKi8KKyAgLyogREVQUkVDQVRFRCwgZG8gbm90IHVzZSEgKi8KKyAgQ1VSTE9QVChDVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDE3OSksCiAKICAgLyogU29ja3MgU2VydmljZSAqLwotICBDSU5JVChTT0NLUzVfR1NTQVBJX05FQywgTE9ORywgMTgwKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDLCBDVVJMT1BUVFlQRV9MT05HLCAxODApLAogCiAgIC8qIHNldCB0aGUgYml0bWFzayBmb3IgdGhlIHByb3RvY29scyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHVzZWQgZm9yIHRoZQogICAgICB0cmFuc2Zlciwgd2hpY2ggdGh1cyBoZWxwcyB0aGUgYXBwIHdoaWNoIHRha2VzIFVSTHMgZnJvbSB1c2VycyBvciBvdGhlcgogICAgICBleHRlcm5hbCBpbnB1dHMgYW5kIHdhbnQgdG8gcmVzdHJpY3Qgd2hhdCBwcm90b2NvbChzKSB0byBkZWFsCiAgICAgIHdpdGguIERlZmF1bHRzIHRvIENVUkxQUk9UT19BTEwuICovCi0gIENJTklUKFBST1RPQ09MUywgTE9ORywgMTgxKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1BST1RPQ09MUywgQ1VSTE9QVFRZUEVfTE9ORywgMTgxKSwKIAogICAvKiBzZXQgdGhlIGJpdG1hc2sgZm9yIHRoZSBwcm90b2NvbHMgdGhhdCBsaWJjdXJsIGlzIGFsbG93ZWQgdG8gZm9sbG93IHRvLAogICAgICBhcyBhIHN1YnNldCBvZiB0aGUgQ1VSTE9QVF9QUk9UT0NPTFMgb25lcy4gVGhhdCBtZWFucyB0aGUgcHJvdG9jb2wgbmVlZHMKLSAgICAgdG8gYmUgc2V0IGluIGJvdGggYml0bWFza3MgdG8gYmUgYWxsb3dlZCB0byBnZXQgcmVkaXJlY3RlZCB0by4gRGVmYXVsdHMKLSAgICAgdG8gYWxsIHByb3RvY29scyBleGNlcHQgRklMRSBhbmQgU0NQLiAqLwotICBDSU5JVChSRURJUl9QUk9UT0NPTFMsIExPTkcsIDE4MiksCisgICAgIHRvIGJlIHNldCBpbiBib3RoIGJpdG1hc2tzIHRvIGJlIGFsbG93ZWQgdG8gZ2V0IHJlZGlyZWN0ZWQgdG8uICovCisgIENVUkxPUFQoQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMsIENVUkxPUFRUWVBFX0xPTkcsIDE4MiksCiAKICAgLyogc2V0IHRoZSBTU0gga25vd25ob3N0IGZpbGUgbmFtZSB0byB1c2UgKi8KLSAgQ0lOSVQoU1NIX0tOT1dOSE9TVFMsIFNUUklOR1BPSU5ULCAxODMpLAorICBDVVJMT1BUKENVUkxPUFRfU1NIX0tOT1dOSE9TVFMsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAxODMpLAogCiAgIC8qIHNldCB0aGUgU1NIIGhvc3Qga2V5IGNhbGxiYWNrLCBtdXN0IHBvaW50IHRvIGEgY3VybF9zc2hrZXljYWxsYmFjawogICAgICBmdW5jdGlvbiAqLwotICBDSU5JVChTU0hfS0VZRlVOQ1RJT04sIEZVTkNUSU9OUE9JTlQsIDE4NCksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0hfS0VZRlVOQ1RJT04sIENVUkxPUFRUWVBFX0ZVTkNUSU9OUE9JTlQsIDE4NCksCiAKICAgLyogc2V0IHRoZSBTU0ggaG9zdCBrZXkgY2FsbGJhY2sgY3VzdG9tIHBvaW50ZXIgKi8KLSAgQ0lOSVQoU1NIX0tFWURBVEEsIE9CSkVDVFBPSU5ULCAxODUpLAorICBDVVJMT1BUKENVUkxPUFRfU1NIX0tFWURBVEEsIENVUkxPUFRUWVBFX09CSkVDVFBPSU5ULCAxODUpLAogCiAgIC8qIHNldCB0aGUgU01UUCBtYWlsIG9yaWdpbmF0b3IgKi8KLSAgQ0lOSVQoTUFJTF9GUk9NLCBTVFJJTkdQT0lOVCwgMTg2KSwKKyAgQ1VSTE9QVChDVVJMT1BUX01BSUxfRlJPTSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDE4NiksCiAKICAgLyogc2V0IHRoZSBsaXN0IG9mIFNNVFAgbWFpbCByZWNlaXZlcihzKSAqLwotICBDSU5JVChNQUlMX1JDUFQsIE9CSkVDVFBPSU5ULCAxODcpLAorICBDVVJMT1BUKENVUkxPUFRfTUFJTF9SQ1BULCBDVVJMT1BUVFlQRV9TTElTVFBPSU5ULCAxODcpLAogCiAgIC8qIEZUUDogc2VuZCBQUkVUIGJlZm9yZSBQQVNWICovCi0gIENJTklUKEZUUF9VU0VfUFJFVCwgTE9ORywgMTg4KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0ZUUF9VU0VfUFJFVCwgQ1VSTE9QVFRZUEVfTE9ORywgMTg4KSwKIAogICAvKiBSVFNQIHJlcXVlc3QgbWV0aG9kIChPUFRJT05TLCBTRVRVUCwgUExBWSwgZXRjLi4uKSAqLwotICBDSU5JVChSVFNQX1JFUVVFU1QsIExPTkcsIDE4OSksCisgIENVUkxPUFQoQ1VSTE9QVF9SVFNQX1JFUVVFU1QsIENVUkxPUFRUWVBFX0xPTkcsIDE4OSksCiAKICAgLyogVGhlIFJUU1Agc2Vzc2lvbiBpZGVudGlmaWVyICovCi0gIENJTklUKFJUU1BfU0VTU0lPTl9JRCwgU1RSSU5HUE9JTlQsIDE5MCksCisgIENVUkxPUFQoQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAxOTApLAogCiAgIC8qIFRoZSBSVFNQIHN0cmVhbSBVUkkgKi8KLSAgQ0lOSVQoUlRTUF9TVFJFQU1fVVJJLCBTVFJJTkdQT0lOVCwgMTkxKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1JUU1BfU1RSRUFNX1VSSSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDE5MSksCiAKICAgLyogVGhlIFRyYW5zcG9ydDogaGVhZGVyIHRvIHVzZSBpbiBSVFNQIHJlcXVlc3RzICovCi0gIENJTklUKFJUU1BfVFJBTlNQT1JULCBTVFJJTkdQT0lOVCwgMTkyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1JUU1BfVFJBTlNQT1JULCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMTkyKSwKIAogICAvKiBNYW51YWxseSBpbml0aWFsaXplIHRoZSBjbGllbnQgUlRTUCBDU2VxIGZvciB0aGlzIGhhbmRsZSAqLwotICBDSU5JVChSVFNQX0NMSUVOVF9DU0VRLCBMT05HLCAxOTMpLAorICBDVVJMT1BUKENVUkxPUFRfUlRTUF9DTElFTlRfQ1NFUSwgQ1VSTE9QVFRZUEVfTE9ORywgMTkzKSwKIAogICAvKiBNYW51YWxseSBpbml0aWFsaXplIHRoZSBzZXJ2ZXIgUlRTUCBDU2VxIGZvciB0aGlzIGhhbmRsZSAqLwotICBDSU5JVChSVFNQX1NFUlZFUl9DU0VRLCBMT05HLCAxOTQpLAorICBDVVJMT1BUKENVUkxPUFRfUlRTUF9TRVJWRVJfQ1NFUSwgQ1VSTE9QVFRZUEVfTE9ORywgMTk0KSwKIAogICAvKiBUaGUgc3RyZWFtIHRvIHBhc3MgdG8gSU5URVJMRUFWRUZVTkNUSU9OLiAqLwotICBDSU5JVChJTlRFUkxFQVZFREFUQSwgT0JKRUNUUE9JTlQsIDE5NSksCisgIENVUkxPUFQoQ1VSTE9QVF9JTlRFUkxFQVZFREFUQSwgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDE5NSksCiAKICAgLyogTGV0IHRoZSBhcHBsaWNhdGlvbiBkZWZpbmUgYSBjdXN0b20gd3JpdGUgbWV0aG9kIGZvciBSVFAgZGF0YSAqLwotICBDSU5JVChJTlRFUkxFQVZFRlVOQ1RJT04sIEZVTkNUSU9OUE9JTlQsIDE5NiksCisgIENVUkxPUFQoQ1VSTE9QVF9JTlRFUkxFQVZFRlVOQ1RJT04sIENVUkxPUFRUWVBFX0ZVTkNUSU9OUE9JTlQsIDE5NiksCiAKICAgLyogVHVybiBvbiB3aWxkY2FyZCBtYXRjaGluZyAqLwotICBDSU5JVChXSUxEQ0FSRE1BVENILCBMT05HLCAxOTcpLAorICBDVVJMT1BUKENVUkxPUFRfV0lMRENBUkRNQVRDSCwgQ1VSTE9QVFRZUEVfTE9ORywgMTk3KSwKIAogICAvKiBEaXJlY3RvcnkgbWF0Y2hpbmcgY2FsbGJhY2sgY2FsbGVkIGJlZm9yZSBkb3dubG9hZGluZyBvZiBhbgogICAgICBpbmRpdmlkdWFsIGZpbGUgKGNodW5rKSBzdGFydGVkICovCi0gIENJTklUKENIVU5LX0JHTl9GVU5DVElPTiwgRlVOQ1RJT05QT0lOVCwgMTk4KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NIVU5LX0JHTl9GVU5DVElPTiwgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVCwgMTk4KSwKIAogICAvKiBEaXJlY3RvcnkgbWF0Y2hpbmcgY2FsbGJhY2sgY2FsbGVkIGFmdGVyIHRoZSBmaWxlIChjaHVuaykKICAgICAgd2FzIGRvd25sb2FkZWQsIG9yIHNraXBwZWQgKi8KLSAgQ0lOSVQoQ0hVTktfRU5EX0ZVTkNUSU9OLCBGVU5DVElPTlBPSU5ULCAxOTkpLAorICBDVVJMT1BUKENVUkxPUFRfQ0hVTktfRU5EX0ZVTkNUSU9OLCBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5ULCAxOTkpLAogCiAgIC8qIENoYW5nZSBtYXRjaCAoZm5tYXRjaC1saWtlKSBjYWxsYmFjayBmb3Igd2lsZGNhcmQgbWF0Y2hpbmcgKi8KLSAgQ0lOSVQoRk5NQVRDSF9GVU5DVElPTiwgRlVOQ1RJT05QT0lOVCwgMjAwKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0ZOTUFUQ0hfRlVOQ1RJT04sIENVUkxPUFRUWVBFX0ZVTkNUSU9OUE9JTlQsIDIwMCksCiAKICAgLyogTGV0IHRoZSBhcHBsaWNhdGlvbiBkZWZpbmUgY3VzdG9tIGNodW5rIGRhdGEgcG9pbnRlciAqLwotICBDSU5JVChDSFVOS19EQVRBLCBPQkpFQ1RQT0lOVCwgMjAxKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NIVU5LX0RBVEEsIENVUkxPUFRUWVBFX09CSkVDVFBPSU5ULCAyMDEpLAogCiAgIC8qIEZOTUFUQ0hfRlVOQ1RJT04gdXNlciBwb2ludGVyICovCi0gIENJTklUKEZOTUFUQ0hfREFUQSwgT0JKRUNUUE9JTlQsIDIwMiksCisgIENVUkxPUFQoQ1VSTE9QVF9GTk1BVENIX0RBVEEsIENVUkxPUFRUWVBFX09CSkVDVFBPSU5ULCAyMDIpLAogCiAgIC8qIHNlbmQgbGlua2VkLWxpc3Qgb2YgbmFtZTpwb3J0OmFkZHJlc3Mgc2V0cyAqLwotICBDSU5JVChSRVNPTFZFLCBPQkpFQ1RQT0lOVCwgMjAzKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1JFU09MVkUsIENVUkxPUFRUWVBFX1NMSVNUUE9JTlQsIDIwMyksCiAKICAgLyogU2V0IGEgdXNlcm5hbWUgZm9yIGF1dGhlbnRpY2F0ZWQgVExTICovCi0gIENJTklUKFRMU0FVVEhfVVNFUk5BTUUsIFNUUklOR1BPSU5ULCAyMDQpLAorICBDVVJMT1BUKENVUkxPUFRfVExTQVVUSF9VU0VSTkFNRSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDIwNCksCiAKICAgLyogU2V0IGEgcGFzc3dvcmQgZm9yIGF1dGhlbnRpY2F0ZWQgVExTICovCi0gIENJTklUKFRMU0FVVEhfUEFTU1dPUkQsIFNUUklOR1BPSU5ULCAyMDUpLAorICBDVVJMT1BUKENVUkxPUFRfVExTQVVUSF9QQVNTV09SRCwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDIwNSksCiAKICAgLyogU2V0IGF1dGhlbnRpY2F0aW9uIHR5cGUgZm9yIGF1dGhlbnRpY2F0ZWQgVExTICovCi0gIENJTklUKFRMU0FVVEhfVFlQRSwgU1RSSU5HUE9JTlQsIDIwNiksCisgIENVUkxPUFQoQ1VSTE9QVF9UTFNBVVRIX1RZUEUsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyMDYpLAogCiAgIC8qIFNldCB0byAxIHRvIGVuYWJsZSB0aGUgIlRFOiIgaGVhZGVyIGluIEhUVFAgcmVxdWVzdHMgdG8gYXNrIGZvcgogICAgICBjb21wcmVzc2VkIHRyYW5zZmVyLWVuY29kZWQgcmVzcG9uc2VzLiBTZXQgdG8gMCB0byBkaXNhYmxlIHRoZSB1c2Ugb2YgVEU6CkBAIC0xNjU4LDI2OCArMTY4MCwyNzQgQEAKICAgICAgb3B0aW9uIGlzIHNldCB0byAxLgogCiAgICovCi0gIENJTklUKFRSQU5TRkVSX0VOQ09ESU5HLCBMT05HLCAyMDcpLAorICBDVVJMT1BUKENVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkcsIENVUkxPUFRUWVBFX0xPTkcsIDIwNyksCiAKICAgLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGNsb3Npbmcgc29ja2V0IChpbnN0ZWFkIG9mIGNsb3NlKDIpKS4gVGhlIGNhbGxiYWNrCiAgICAgIHNob3VsZCBoYXZlIHR5cGUgY3VybF9jbG9zZXNvY2tldF9jYWxsYmFjayAqLwotICBDSU5JVChDTE9TRVNPQ0tFVEZVTkNUSU9OLCBGVU5DVElPTlBPSU5ULCAyMDgpLAotICBDSU5JVChDTE9TRVNPQ0tFVERBVEEsIE9CSkVDVFBPSU5ULCAyMDkpLAorICBDVVJMT1BUKENVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTiwgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVCwgMjA4KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NMT1NFU09DS0VUREFUQSwgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDIwOSksCiAKICAgLyogYWxsb3cgR1NTQVBJIGNyZWRlbnRpYWwgZGVsZWdhdGlvbiAqLwotICBDSU5JVChHU1NBUElfREVMRUdBVElPTiwgTE9ORywgMjEwKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0dTU0FQSV9ERUxFR0FUSU9OLCBDVVJMT1BUVFlQRV9MT05HLCAyMTApLAogCiAgIC8qIFNldCB0aGUgbmFtZSBzZXJ2ZXJzIHRvIHVzZSBmb3IgRE5TIHJlc29sdXRpb24gKi8KLSAgQ0lOSVQoRE5TX1NFUlZFUlMsIFNUUklOR1BPSU5ULCAyMTEpLAorICBDVVJMT1BUKENVUkxPUFRfRE5TX1NFUlZFUlMsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyMTEpLAogCiAgIC8qIFRpbWUtb3V0IGFjY2VwdCBvcGVyYXRpb25zIChjdXJyZW50bHkgZm9yIEZUUCBvbmx5KSBhZnRlciB0aGlzIGFtb3VudAogICAgICBvZiBtaWxsaXNlY29uZHMuICovCi0gIENJTklUKEFDQ0VQVFRJTUVPVVRfTVMsIExPTkcsIDIxMiksCisgIENVUkxPUFQoQ1VSTE9QVF9BQ0NFUFRUSU1FT1VUX01TLCBDVVJMT1BUVFlQRV9MT05HLCAyMTIpLAogCiAgIC8qIFNldCBUQ1Aga2VlcGFsaXZlICovCi0gIENJTklUKFRDUF9LRUVQQUxJVkUsIExPTkcsIDIxMyksCisgIENVUkxPUFQoQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLCBDVVJMT1BUVFlQRV9MT05HLCAyMTMpLAogCiAgIC8qIG5vbi11bml2ZXJzYWwga2VlcGFsaXZlIGtub2JzIChMaW51eCwgQUlYLCBIUC1VWCwgbW9yZSkgKi8KLSAgQ0lOSVQoVENQX0tFRVBJRExFLCBMT05HLCAyMTQpLAotICBDSU5JVChUQ1BfS0VFUElOVFZMLCBMT05HLCAyMTUpLAorICBDVVJMT1BUKENVUkxPUFRfVENQX0tFRVBJRExFLCBDVVJMT1BUVFlQRV9MT05HLCAyMTQpLAorICBDVVJMT1BUKENVUkxPUFRfVENQX0tFRVBJTlRWTCwgQ1VSTE9QVFRZUEVfTE9ORywgMjE1KSwKIAogICAvKiBFbmFibGUvZGlzYWJsZSBzcGVjaWZpYyBTU0wgZmVhdHVyZXMgd2l0aCBhIGJpdG1hc2ssIHNlZSBDVVJMU1NMT1BUXyogKi8KLSAgQ0lOSVQoU1NMX09QVElPTlMsIExPTkcsIDIxNiksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0xfT1BUSU9OUywgQ1VSTE9QVFRZUEVfTE9ORywgMjE2KSwKIAogICAvKiBTZXQgdGhlIFNNVFAgYXV0aCBvcmlnaW5hdG9yICovCi0gIENJTklUKE1BSUxfQVVUSCwgU1RSSU5HUE9JTlQsIDIxNyksCisgIENVUkxPUFQoQ1VSTE9QVF9NQUlMX0FVVEgsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyMTcpLAogCiAgIC8qIEVuYWJsZS9kaXNhYmxlIFNBU0wgaW5pdGlhbCByZXNwb25zZSAqLwotICBDSU5JVChTQVNMX0lSLCBMT05HLCAyMTgpLAorICBDVVJMT1BUKENVUkxPUFRfU0FTTF9JUiwgQ1VSTE9QVFRZUEVfTE9ORywgMjE4KSwKIAogICAvKiBGdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGluc3RlYWQgb2YgdGhlIGludGVybmFsIHByb2dyZXNzIGRpc3BsYXkKICAgICogZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGRlZmluZWQgYXMgdGhlIGN1cmxfeGZlcmluZm9fY2FsbGJhY2sKICAgICogcHJvdG90eXBlIGRlZmluZXMuIChEZXByZWNhdGVzIENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTikgKi8KLSAgQ0lOSVQoWEZFUklORk9GVU5DVElPTiwgRlVOQ1RJT05QT0lOVCwgMjE5KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1hGRVJJTkZPRlVOQ1RJT04sIENVUkxPUFRUWVBFX0ZVTkNUSU9OUE9JTlQsIDIxOSksCiAKICAgLyogVGhlIFhPQVVUSDIgYmVhcmVyIHRva2VuICovCi0gIENJTklUKFhPQVVUSDJfQkVBUkVSLCBTVFJJTkdQT0lOVCwgMjIwKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1hPQVVUSDJfQkVBUkVSLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjIwKSwKIAogICAvKiBTZXQgdGhlIGludGVyZmFjZSBzdHJpbmcgdG8gdXNlIGFzIG91dGdvaW5nIG5ldHdvcmsKICAgICogaW50ZXJmYWNlIGZvciBETlMgcmVxdWVzdHMuCiAgICAqIE9ubHkgc3VwcG9ydGVkIGJ5IHRoZSBjLWFyZXMgRE5TIGJhY2tlbmQgKi8KLSAgQ0lOSVQoRE5TX0lOVEVSRkFDRSwgU1RSSU5HUE9JTlQsIDIyMSksCisgIENVUkxPUFQoQ1VSTE9QVF9ETlNfSU5URVJGQUNFLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjIxKSwKIAogICAvKiBTZXQgdGhlIGxvY2FsIElQdjQgYWRkcmVzcyB0byB1c2UgZm9yIG91dGdvaW5nIEROUyByZXF1ZXN0cy4KICAgICogT25seSBzdXBwb3J0ZWQgYnkgdGhlIGMtYXJlcyBETlMgYmFja2VuZCAqLwotICBDSU5JVChETlNfTE9DQUxfSVA0LCBTVFJJTkdQT0lOVCwgMjIyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0ROU19MT0NBTF9JUDQsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyMjIpLAogCiAgIC8qIFNldCB0aGUgbG9jYWwgSVB2NiBhZGRyZXNzIHRvIHVzZSBmb3Igb3V0Z29pbmcgRE5TIHJlcXVlc3RzLgogICAgKiBPbmx5IHN1cHBvcnRlZCBieSB0aGUgYy1hcmVzIEROUyBiYWNrZW5kICovCi0gIENJTklUKEROU19MT0NBTF9JUDYsIFNUUklOR1BPSU5ULCAyMjMpLAorICBDVVJMT1BUKENVUkxPUFRfRE5TX0xPQ0FMX0lQNiwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDIyMyksCiAKICAgLyogU2V0IGF1dGhlbnRpY2F0aW9uIG9wdGlvbnMgZGlyZWN0bHkgKi8KLSAgQ0lOSVQoTE9HSU5fT1BUSU9OUywgU1RSSU5HUE9JTlQsIDIyNCksCisgIENVUkxPUFQoQ1VSTE9QVF9MT0dJTl9PUFRJT05TLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjI0KSwKIAogICAvKiBFbmFibGUvZGlzYWJsZSBUTFMgTlBOIGV4dGVuc2lvbiAoaHR0cDIgb3ZlciBzc2wgbWlnaHQgZmFpbCB3aXRob3V0KSAqLwotICBDSU5JVChTU0xfRU5BQkxFX05QTiwgTE9ORywgMjI1KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NTTF9FTkFCTEVfTlBOLCBDVVJMT1BUVFlQRV9MT05HLCAyMjUpLAogCiAgIC8qIEVuYWJsZS9kaXNhYmxlIFRMUyBBTFBOIGV4dGVuc2lvbiAoaHR0cDIgb3ZlciBzc2wgbWlnaHQgZmFpbCB3aXRob3V0KSAqLwotICBDSU5JVChTU0xfRU5BQkxFX0FMUE4sIExPTkcsIDIyNiksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0xfRU5BQkxFX0FMUE4sIENVUkxPUFRUWVBFX0xPTkcsIDIyNiksCiAKICAgLyogVGltZSB0byB3YWl0IGZvciBhIHJlc3BvbnNlIHRvIGEgSFRUUCByZXF1ZXN0IGNvbnRhaW5pbmcgYW4KICAgICogRXhwZWN0OiAxMDAtY29udGludWUgaGVhZGVyIGJlZm9yZSBzZW5kaW5nIHRoZSBkYXRhIGFueXdheS4gKi8KLSAgQ0lOSVQoRVhQRUNUXzEwMF9USU1FT1VUX01TLCBMT05HLCAyMjcpLAorICBDVVJMT1BUKENVUkxPUFRfRVhQRUNUXzEwMF9USU1FT1VUX01TLCBDVVJMT1BUVFlQRV9MT05HLCAyMjcpLAogCiAgIC8qIFRoaXMgcG9pbnRzIHRvIGEgbGlua2VkIGxpc3Qgb2YgaGVhZGVycyB1c2VkIGZvciBwcm94eSByZXF1ZXN0cyBvbmx5LAogICAgICBzdHJ1Y3QgY3VybF9zbGlzdCBraW5kICovCi0gIENJTklUKFBST1hZSEVBREVSLCBPQkpFQ1RQT0lOVCwgMjI4KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1BST1hZSEVBREVSLCBDVVJMT1BUVFlQRV9TTElTVFBPSU5ULCAyMjgpLAogCiAgIC8qIFBhc3MgaW4gYSBiaXRtYXNrIG9mICJoZWFkZXIgb3B0aW9ucyIgKi8KLSAgQ0lOSVQoSEVBREVST1BULCBMT05HLCAyMjkpLAorICBDVVJMT1BUKENVUkxPUFRfSEVBREVST1BULCBDVVJMT1BUVFlQRV9MT05HLCAyMjkpLAogCiAgIC8qIFRoZSBwdWJsaWMga2V5IGluIERFUiBmb3JtIHVzZWQgdG8gdmFsaWRhdGUgdGhlIHBlZXIgcHVibGljIGtleQogICAgICB0aGlzIG9wdGlvbiBpcyB1c2VkIG9ubHkgaWYgU1NMX1ZFUklGWVBFRVIgaXMgdHJ1ZSAqLwotICBDSU5JVChQSU5ORURQVUJMSUNLRVksIFNUUklOR1BPSU5ULCAyMzApLAorICBDVVJMT1BUKENVUkxPUFRfUElOTkVEUFVCTElDS0VZLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjMwKSwKIAogICAvKiBQYXRoIHRvIFVuaXggZG9tYWluIHNvY2tldCAqLwotICBDSU5JVChVTklYX1NPQ0tFVF9QQVRILCBTVFJJTkdQT0lOVCwgMjMxKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1VOSVhfU09DS0VUX1BBVEgsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyMzEpLAogCiAgIC8qIFNldCBpZiB3ZSBzaG91bGQgdmVyaWZ5IHRoZSBjZXJ0aWZpY2F0ZSBzdGF0dXMuICovCi0gIENJTklUKFNTTF9WRVJJRllTVEFUVVMsIExPTkcsIDIzMiksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0xfVkVSSUZZU1RBVFVTLCBDVVJMT1BUVFlQRV9MT05HLCAyMzIpLAogCiAgIC8qIFNldCBpZiB3ZSBzaG91bGQgZW5hYmxlIFRMUyBmYWxzZSBzdGFydC4gKi8KLSAgQ0lOSVQoU1NMX0ZBTFNFU1RBUlQsIExPTkcsIDIzMyksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVCwgQ1VSTE9QVFRZUEVfTE9ORywgMjMzKSwKIAogICAvKiBEbyBub3Qgc3F1YXNoIGRvdC1kb3Qgc2VxdWVuY2VzICovCi0gIENJTklUKFBBVEhfQVNfSVMsIExPTkcsIDIzNCksCisgIENVUkxPUFQoQ1VSTE9QVF9QQVRIX0FTX0lTLCBDVVJMT1BUVFlQRV9MT05HLCAyMzQpLAogCiAgIC8qIFByb3h5IFNlcnZpY2UgTmFtZSAqLwotICBDSU5JVChQUk9YWV9TRVJWSUNFX05BTUUsIFNUUklOR1BPSU5ULCAyMzUpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjM1KSwKIAogICAvKiBTZXJ2aWNlIE5hbWUgKi8KLSAgQ0lOSVQoU0VSVklDRV9OQU1FLCBTVFJJTkdQT0lOVCwgMjM2KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NFUlZJQ0VfTkFNRSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDIzNiksCiAKICAgLyogV2FpdC9kb24ndCB3YWl0IGZvciBwaXBlL211dGV4IHRvIGNsYXJpZnkgKi8KLSAgQ0lOSVQoUElQRVdBSVQsIExPTkcsIDIzNyksCisgIENVUkxPUFQoQ1VSTE9QVF9QSVBFV0FJVCwgQ1VSTE9QVFRZUEVfTE9ORywgMjM3KSwKIAogICAvKiBTZXQgdGhlIHByb3RvY29sIHVzZWQgd2hlbiBjdXJsIGlzIGdpdmVuIGEgVVJMIHdpdGhvdXQgYSBwcm90b2NvbCAqLwotICBDSU5JVChERUZBVUxUX1BST1RPQ09MLCBTVFJJTkdQT0lOVCwgMjM4KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyMzgpLAogCiAgIC8qIFNldCBzdHJlYW0gd2VpZ2h0LCAxIC0gMjU2IChkZWZhdWx0IGlzIDE2KSAqLwotICBDSU5JVChTVFJFQU1fV0VJR0hULCBMT05HLCAyMzkpLAorICBDVVJMT1BUKENVUkxPUFRfU1RSRUFNX1dFSUdIVCwgQ1VSTE9QVFRZUEVfTE9ORywgMjM5KSwKIAogICAvKiBTZXQgc3RyZWFtIGRlcGVuZGVuY3kgb24gYW5vdGhlciBDVVJMIGhhbmRsZSAqLwotICBDSU5JVChTVFJFQU1fREVQRU5EUywgT0JKRUNUUE9JTlQsIDI0MCksCisgIENVUkxPUFQoQ1VSTE9QVF9TVFJFQU1fREVQRU5EUywgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDI0MCksCiAKICAgLyogU2V0IEUteGNsdXNpdmUgc3RyZWFtIGRlcGVuZGVuY3kgb24gYW5vdGhlciBDVVJMIGhhbmRsZSAqLwotICBDSU5JVChTVFJFQU1fREVQRU5EU19FLCBPQkpFQ1RQT0lOVCwgMjQxKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UsIENVUkxPUFRUWVBFX09CSkVDVFBPSU5ULCAyNDEpLAogCiAgIC8qIERvIG5vdCBzZW5kIGFueSB0ZnRwIG9wdGlvbiByZXF1ZXN0cyB0byB0aGUgc2VydmVyICovCi0gIENJTklUKFRGVFBfTk9fT1BUSU9OUywgTE9ORywgMjQyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1RGVFBfTk9fT1BUSU9OUywgQ1VSTE9QVFRZUEVfTE9ORywgMjQyKSwKIAogICAvKiBMaW5rZWQtbGlzdCBvZiBob3N0OnBvcnQ6Y29ubmVjdC10by1ob3N0OmNvbm5lY3QtdG8tcG9ydCwKICAgICAgb3ZlcnJpZGVzIHRoZSBVUkwncyBob3N0OnBvcnQgKG9ubHkgZm9yIHRoZSBuZXR3b3JrIGxheWVyKSAqLwotICBDSU5JVChDT05ORUNUX1RPLCBPQkpFQ1RQT0lOVCwgMjQzKSwKKyAgQ1VSTE9QVChDVVJMT1BUX0NPTk5FQ1RfVE8sIENVUkxPUFRUWVBFX1NMSVNUUE9JTlQsIDI0MyksCiAKICAgLyogU2V0IFRDUCBGYXN0IE9wZW4gKi8KLSAgQ0lOSVQoVENQX0ZBU1RPUEVOLCBMT05HLCAyNDQpLAorICBDVVJMT1BUKENVUkxPUFRfVENQX0ZBU1RPUEVOLCBDVVJMT1BUVFlQRV9MT05HLCAyNDQpLAogCiAgIC8qIENvbnRpbnVlIHRvIHNlbmQgZGF0YSBpZiB0aGUgc2VydmVyIHJlc3BvbmRzIGVhcmx5IHdpdGggYW4KICAgICogSFRUUCBzdGF0dXMgY29kZSA+PSAzMDAgKi8KLSAgQ0lOSVQoS0VFUF9TRU5ESU5HX09OX0VSUk9SLCBMT05HLCAyNDUpLAorICBDVVJMT1BUKENVUkxPUFRfS0VFUF9TRU5ESU5HX09OX0VSUk9SLCBDVVJMT1BUVFlQRV9MT05HLCAyNDUpLAogCiAgIC8qIFRoZSBDQXBhdGggb3IgQ0FmaWxlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIHByb3h5IGNlcnRpZmljYXRlCiAgICAgIHRoaXMgb3B0aW9uIGlzIHVzZWQgb25seSBpZiBQUk9YWV9TU0xfVkVSSUZZUEVFUiBpcyB0cnVlICovCi0gIENJTklUKFBST1hZX0NBSU5GTywgU1RSSU5HUE9JTlQsIDI0NiksCisgIENVUkxPUFQoQ1VSTE9QVF9QUk9YWV9DQUlORk8sIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyNDYpLAogCiAgIC8qIFRoZSBDQXBhdGggZGlyZWN0b3J5IHVzZWQgdG8gdmFsaWRhdGUgdGhlIHByb3h5IGNlcnRpZmljYXRlCiAgICAgIHRoaXMgb3B0aW9uIGlzIHVzZWQgb25seSBpZiBQUk9YWV9TU0xfVkVSSUZZUEVFUiBpcyB0cnVlICovCi0gIENJTklUKFBST1hZX0NBUEFUSCwgU1RSSU5HUE9JTlQsIDI0NyksCisgIENVUkxPUFQoQ1VSTE9QVF9QUk9YWV9DQVBBVEgsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyNDcpLAogCiAgIC8qIFNldCBpZiB3ZSBzaG91bGQgdmVyaWZ5IHRoZSBwcm94eSBpbiBzc2wgaGFuZHNoYWtlLAogICAgICBzZXQgMSB0byB2ZXJpZnkuICovCi0gIENJTklUKFBST1hZX1NTTF9WRVJJRllQRUVSLCBMT05HLCAyNDgpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlfU1NMX1ZFUklGWVBFRVIsIENVUkxPUFRUWVBFX0xPTkcsIDI0OCksCiAKICAgLyogU2V0IGlmIHdlIHNob3VsZCB2ZXJpZnkgdGhlIENvbW1vbiBuYW1lIGZyb20gdGhlIHByb3h5IGNlcnRpZmljYXRlIGluIHNzbAogICAgKiBoYW5kc2hha2UsIHNldCAxIHRvIGNoZWNrIGV4aXN0ZW5jZSwgMiB0byBlbnN1cmUgdGhhdCBpdCBtYXRjaGVzCiAgICAqIHRoZSBwcm92aWRlZCBob3N0bmFtZS4gKi8KLSAgQ0lOSVQoUFJPWFlfU1NMX1ZFUklGWUhPU1QsIExPTkcsIDI0OSksCisgIENVUkxPUFQoQ1VSTE9QVF9QUk9YWV9TU0xfVkVSSUZZSE9TVCwgQ1VSTE9QVFRZUEVfTE9ORywgMjQ5KSwKIAogICAvKiBXaGF0IHZlcnNpb24gdG8gc3BlY2lmaWNhbGx5IHRyeSB0byB1c2UgZm9yIHByb3h5LgogICAgICBTZWUgQ1VSTF9TU0xWRVJTSU9OIGRlZmluZXMgYmVsb3cuICovCi0gIENJTklUKFBST1hZX1NTTFZFUlNJT04sIExPTkcsIDI1MCksCisgIENVUkxPUFQoQ1VSTE9QVF9QUk9YWV9TU0xWRVJTSU9OLCBDVVJMT1BUVFlQRV9MT05HLCAyNTApLAogCiAgIC8qIFNldCBhIHVzZXJuYW1lIGZvciBhdXRoZW50aWNhdGVkIFRMUyBmb3IgcHJveHkgKi8KLSAgQ0lOSVQoUFJPWFlfVExTQVVUSF9VU0VSTkFNRSwgU1RSSU5HUE9JTlQsIDI1MSksCisgIENVUkxPUFQoQ1VSTE9QVF9QUk9YWV9UTFNBVVRIX1VTRVJOQU1FLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjUxKSwKIAogICAvKiBTZXQgYSBwYXNzd29yZCBmb3IgYXV0aGVudGljYXRlZCBUTFMgZm9yIHByb3h5ICovCi0gIENJTklUKFBST1hZX1RMU0FVVEhfUEFTU1dPUkQsIFNUUklOR1BPSU5ULCAyNTIpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlfVExTQVVUSF9QQVNTV09SRCwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDI1MiksCiAKICAgLyogU2V0IGF1dGhlbnRpY2F0aW9uIHR5cGUgZm9yIGF1dGhlbnRpY2F0ZWQgVExTIGZvciBwcm94eSAqLwotICBDSU5JVChQUk9YWV9UTFNBVVRIX1RZUEUsIFNUUklOR1BPSU5ULCAyNTMpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlfVExTQVVUSF9UWVBFLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjUzKSwKIAogICAvKiBuYW1lIG9mIHRoZSBmaWxlIGtlZXBpbmcgeW91ciBwcml2YXRlIFNTTC1jZXJ0aWZpY2F0ZSBmb3IgcHJveHkgKi8KLSAgQ0lOSVQoUFJPWFlfU1NMQ0VSVCwgU1RSSU5HUE9JTlQsIDI1NCksCisgIENVUkxPUFQoQ1VSTE9QVF9QUk9YWV9TU0xDRVJULCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjU0KSwKIAogICAvKiB0eXBlIG9mIHRoZSBmaWxlIGtlZXBpbmcgeW91ciBTU0wtY2VydGlmaWNhdGUgKCJERVIiLCAiUEVNIiwgIkVORyIpIGZvcgogICAgICBwcm94eSAqLwotICBDSU5JVChQUk9YWV9TU0xDRVJUVFlQRSwgU1RSSU5HUE9JTlQsIDI1NSksCisgIENVUkxPUFQoQ1VSTE9QVF9QUk9YWV9TU0xDRVJUVFlQRSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDI1NSksCiAKICAgLyogbmFtZSBvZiB0aGUgZmlsZSBrZWVwaW5nIHlvdXIgcHJpdmF0ZSBTU0wta2V5IGZvciBwcm94eSAqLwotICBDSU5JVChQUk9YWV9TU0xLRVksIFNUUklOR1BPSU5ULCAyNTYpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlfU1NMS0VZLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjU2KSwKIAogICAvKiB0eXBlIG9mIHRoZSBmaWxlIGtlZXBpbmcgeW91ciBwcml2YXRlIFNTTC1rZXkgKCJERVIiLCAiUEVNIiwgIkVORyIpIGZvcgogICAgICBwcm94eSAqLwotICBDSU5JVChQUk9YWV9TU0xLRVlUWVBFLCBTVFJJTkdQT0lOVCwgMjU3KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1BST1hZX1NTTEtFWVRZUEUsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyNTcpLAogCiAgIC8qIHBhc3N3b3JkIGZvciB0aGUgU1NMIHByaXZhdGUga2V5IGZvciBwcm94eSAqLwotICBDSU5JVChQUk9YWV9LRVlQQVNTV0QsIFNUUklOR1BPSU5ULCAyNTgpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlfS0VZUEFTU1dELCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjU4KSwKIAogICAvKiBTcGVjaWZ5IHdoaWNoIFNTTCBjaXBoZXJzIHRvIHVzZSBmb3IgcHJveHkgKi8KLSAgQ0lOSVQoUFJPWFlfU1NMX0NJUEhFUl9MSVNULCBTVFJJTkdQT0lOVCwgMjU5KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1BST1hZX1NTTF9DSVBIRVJfTElTVCwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDI1OSksCiAKICAgLyogQ1JMIGZpbGUgZm9yIHByb3h5ICovCi0gIENJTklUKFBST1hZX0NSTEZJTEUsIFNUUklOR1BPSU5ULCAyNjApLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlfQ1JMRklMRSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDI2MCksCiAKICAgLyogRW5hYmxlL2Rpc2FibGUgc3BlY2lmaWMgU1NMIGZlYXR1cmVzIHdpdGggYSBiaXRtYXNrIGZvciBwcm94eSwgc2VlCiAgICAgIENVUkxTU0xPUFRfKiAqLwotICBDSU5JVChQUk9YWV9TU0xfT1BUSU9OUywgTE9ORywgMjYxKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1BST1hZX1NTTF9PUFRJT05TLCBDVVJMT1BUVFlQRV9MT05HLCAyNjEpLAogCiAgIC8qIE5hbWUgb2YgcHJlIHByb3h5IHRvIHVzZS4gKi8KLSAgQ0lOSVQoUFJFX1BST1hZLCBTVFJJTkdQT0lOVCwgMjYyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1BSRV9QUk9YWSwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDI2MiksCiAKICAgLyogVGhlIHB1YmxpYyBrZXkgaW4gREVSIGZvcm0gdXNlZCB0byB2YWxpZGF0ZSB0aGUgcHJveHkgcHVibGljIGtleQogICAgICB0aGlzIG9wdGlvbiBpcyB1c2VkIG9ubHkgaWYgUFJPWFlfU1NMX1ZFUklGWVBFRVIgaXMgdHJ1ZSAqLwotICBDSU5JVChQUk9YWV9QSU5ORURQVUJMSUNLRVksIFNUUklOR1BPSU5ULCAyNjMpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlfUElOTkVEUFVCTElDS0VZLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjYzKSwKIAogICAvKiBQYXRoIHRvIGFuIGFic3RyYWN0IFVuaXggZG9tYWluIHNvY2tldCAqLwotICBDSU5JVChBQlNUUkFDVF9VTklYX1NPQ0tFVCwgU1RSSU5HUE9JTlQsIDI2NCksCisgIENVUkxPUFQoQ1VSTE9QVF9BQlNUUkFDVF9VTklYX1NPQ0tFVCwgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDI2NCksCiAKICAgLyogU3VwcHJlc3MgcHJveHkgQ09OTkVDVCByZXNwb25zZSBoZWFkZXJzIGZyb20gdXNlciBjYWxsYmFja3MgKi8KLSAgQ0lOSVQoU1VQUFJFU1NfQ09OTkVDVF9IRUFERVJTLCBMT05HLCAyNjUpLAorICBDVVJMT1BUKENVUkxPUFRfU1VQUFJFU1NfQ09OTkVDVF9IRUFERVJTLCBDVVJMT1BUVFlQRV9MT05HLCAyNjUpLAogCiAgIC8qIFRoZSByZXF1ZXN0IHRhcmdldCwgaW5zdGVhZCBvZiBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMICovCi0gIENJTklUKFJFUVVFU1RfVEFSR0VULCBTVFJJTkdQT0lOVCwgMjY2KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1JFUVVFU1RfVEFSR0VULCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjY2KSwKIAogICAvKiBiaXRtYXNrIG9mIGFsbG93ZWQgYXV0aCBtZXRob2RzIGZvciBjb25uZWN0aW9ucyB0byBTT0NLUzUgcHJveGllcyAqLwotICBDSU5JVChTT0NLUzVfQVVUSCwgTE9ORywgMjY3KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1NPQ0tTNV9BVVRILCBDVVJMT1BUVFlQRV9MT05HLCAyNjcpLAogCiAgIC8qIEVuYWJsZS9kaXNhYmxlIFNTSCBjb21wcmVzc2lvbiAqLwotICBDSU5JVChTU0hfQ09NUFJFU1NJT04sIExPTkcsIDI2OCksCisgIENVUkxPUFQoQ1VSTE9QVF9TU0hfQ09NUFJFU1NJT04sIENVUkxPUFRUWVBFX0xPTkcsIDI2OCksCiAKICAgLyogUG9zdCBNSU1FIGRhdGEuICovCi0gIENJTklUKE1JTUVQT1NULCBPQkpFQ1RQT0lOVCwgMjY5KSwKKyAgQ1VSTE9QVChDVVJMT1BUX01JTUVQT1NULCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgMjY5KSwKIAogICAvKiBUaW1lIHRvIHVzZSB3aXRoIHRoZSBDVVJMT1BUX1RJTUVDT05ESVRJT04uIFNwZWNpZmllZCBpbiBudW1iZXIgb2YKICAgICAgc2Vjb25kcyBzaW5jZSAxIEphbiAxOTcwLiAqLwotICBDSU5JVChUSU1FVkFMVUVfTEFSR0UsIE9GRl9ULCAyNzApLAorICBDVVJMT1BUKENVUkxPUFRfVElNRVZBTFVFX0xBUkdFLCBDVVJMT1BUVFlQRV9PRkZfVCwgMjcwKSwKIAogICAvKiBIZWFkIHN0YXJ0IGluIG1pbGxpc2Vjb25kcyB0byBnaXZlIGhhcHB5IGV5ZWJhbGxzLiAqLwotICBDSU5JVChIQVBQWV9FWUVCQUxMU19USU1FT1VUX01TLCBMT05HLCAyNzEpLAorICBDVVJMT1BUKENVUkxPUFRfSEFQUFlfRVlFQkFMTFNfVElNRU9VVF9NUywgQ1VSTE9QVFRZUEVfTE9ORywgMjcxKSwKIAogICAvKiBGdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGJlZm9yZSBhIHJlc29sdmVyIHJlcXVlc3QgaXMgbWFkZSAqLwotICBDSU5JVChSRVNPTFZFUl9TVEFSVF9GVU5DVElPTiwgRlVOQ1RJT05QT0lOVCwgMjcyKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1JFU09MVkVSX1NUQVJUX0ZVTkNUSU9OLCBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5ULCAyNzIpLAogCiAgIC8qIFVzZXIgZGF0YSB0byBwYXNzIHRvIHRoZSByZXNvbHZlciBzdGFydCBjYWxsYmFjay4gKi8KLSAgQ0lOSVQoUkVTT0xWRVJfU1RBUlRfREFUQSwgT0JKRUNUUE9JTlQsIDI3MyksCisgIENVUkxPUFQoQ1VSTE9QVF9SRVNPTFZFUl9TVEFSVF9EQVRBLCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgMjczKSwKIAogICAvKiBzZW5kIEhBUHJveHkgUFJPWFkgcHJvdG9jb2wgaGVhZGVyPyAqLwotICBDSU5JVChIQVBST1hZUFJPVE9DT0wsIExPTkcsIDI3NCksCisgIENVUkxPUFQoQ1VSTE9QVF9IQVBST1hZUFJPVE9DT0wsIENVUkxPUFRUWVBFX0xPTkcsIDI3NCksCiAKICAgLyogc2h1ZmZsZSBhZGRyZXNzZXMgYmVmb3JlIHVzZSB3aGVuIEROUyByZXR1cm5zIG11bHRpcGxlICovCi0gIENJTklUKEROU19TSFVGRkxFX0FERFJFU1NFUywgTE9ORywgMjc1KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0ROU19TSFVGRkxFX0FERFJFU1NFUywgQ1VSTE9QVFRZUEVfTE9ORywgMjc1KSwKIAogICAvKiBTcGVjaWZ5IHdoaWNoIFRMUyAxLjMgY2lwaGVycyBzdWl0ZXMgdG8gdXNlICovCi0gIENJTklUKFRMUzEzX0NJUEhFUlMsIFNUUklOR1BPSU5ULCAyNzYpLAotICBDSU5JVChQUk9YWV9UTFMxM19DSVBIRVJTLCBTVFJJTkdQT0lOVCwgMjc3KSwKKyAgQ1VSTE9QVChDVVJMT1BUX1RMUzEzX0NJUEhFUlMsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyNzYpLAorICBDVVJMT1BUKENVUkxPUFRfUFJPWFlfVExTMTNfQ0lQSEVSUywgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQsIDI3NyksCiAKICAgLyogRGlzYWxsb3cgc3BlY2lmeWluZyB1c2VybmFtZS9sb2dpbiBpbiBVUkwuICovCi0gIENJTklUKERJU0FMTE9XX1VTRVJOQU1FX0lOX1VSTCwgTE9ORywgMjc4KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0RJU0FMTE9XX1VTRVJOQU1FX0lOX1VSTCwgQ1VSTE9QVFRZUEVfTE9ORywgMjc4KSwKIAogICAvKiBETlMtb3Zlci1IVFRQUyBVUkwgKi8KLSAgQ0lOSVQoRE9IX1VSTCwgU1RSSU5HUE9JTlQsIDI3OSksCisgIENVUkxPUFQoQ1VSTE9QVF9ET0hfVVJMLCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCwgMjc5KSwKIAogICAvKiBQcmVmZXJyZWQgYnVmZmVyIHNpemUgdG8gdXNlIGZvciB1cGxvYWRzICovCi0gIENJTklUKFVQTE9BRF9CVUZGRVJTSVpFLCBMT05HLCAyODApLAorICBDVVJMT1BUKENVUkxPUFRfVVBMT0FEX0JVRkZFUlNJWkUsIENVUkxPUFRUWVBFX0xPTkcsIDI4MCksCiAKICAgLyogVGltZSBpbiBtcyBiZXR3ZWVuIGNvbm5lY3Rpb24gdXBrZWVwIGNhbGxzIGZvciBsb25nLWxpdmVkIGNvbm5lY3Rpb25zLiAqLwotICBDSU5JVChVUEtFRVBfSU5URVJWQUxfTVMsIExPTkcsIDI4MSksCisgIENVUkxPUFQoQ1VSTE9QVF9VUEtFRVBfSU5URVJWQUxfTVMsIENVUkxPUFRUWVBFX0xPTkcsIDI4MSksCiAKICAgLyogU3BlY2lmeSBVUkwgdXNpbmcgQ1VSTCBVUkwgQVBJLiAqLwotICBDSU5JVChDVVJMVSwgT0JKRUNUUE9JTlQsIDI4MiksCisgIENVUkxPUFQoQ1VSTE9QVF9DVVJMVSwgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDI4MiksCiAKICAgLyogYWRkIHRyYWlsaW5nIGRhdGEganVzdCBhZnRlciBubyBtb3JlIGRhdGEgaXMgYXZhaWxhYmxlICovCi0gIENJTklUKFRSQUlMRVJGVU5DVElPTiwgRlVOQ1RJT05QT0lOVCwgMjgzKSwKKyAgQ1VSTE9QVChDVVJMT1BUX1RSQUlMRVJGVU5DVElPTiwgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVCwgMjgzKSwKIAogICAvKiBwb2ludGVyIHRvIGJlIHBhc3NlZCB0byBIVFRQX1RSQUlMRVJfRlVOQ1RJT04gKi8KLSAgQ0lOSVQoVFJBSUxFUkRBVEEsIE9CSkVDVFBPSU5ULCAyODQpLAorICBDVVJMT1BUKENVUkxPUFRfVFJBSUxFUkRBVEEsIENVUkxPUFRUWVBFX09CSkVDVFBPSU5ULCAyODQpLAogCiAgIC8qIHNldCB0aGlzIHRvIDFMIHRvIGFsbG93IEhUVFAvMC45IHJlc3BvbnNlcyBvciAwTCB0byBkaXNhbGxvdyAqLwotICBDSU5JVChIVFRQMDlfQUxMT1dFRCwgTE9ORywgMjg1KSwKKyAgQ1VSTE9QVChDVVJMT1BUX0hUVFAwOV9BTExPV0VELCBDVVJMT1BUVFlQRV9MT05HLCAyODUpLAogCiAgIC8qIGFsdC1zdmMgY29udHJvbCBiaXRtYXNrICovCi0gIENJTklUKEFMVFNWQ19DVFJMLCBMT05HLCAyODYpLAorICBDVVJMT1BUKENVUkxPUFRfQUxUU1ZDX0NUUkwsIENVUkxPUFRUWVBFX0xPTkcsIDI4NiksCiAKICAgLyogYWx0LXN2YyBjYWNoZSBmaWxlIG5hbWUgdG8gcG9zc2libHkgcmVhZCBmcm9tL3dyaXRlIHRvICovCi0gIENJTklUKEFMVFNWQywgU1RSSU5HUE9JTlQsIDI4NyksCisgIENVUkxPUFQoQ1VSTE9QVF9BTFRTVkMsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyODcpLAogCiAgIC8qIG1heGltdW0gYWdlIG9mIGEgY29ubmVjdGlvbiB0byBjb25zaWRlciBpdCBmb3IgcmV1c2UgKGluIHNlY29uZHMpICovCi0gIENJTklUKE1BWEFHRV9DT05OLCBMT05HLCAyODgpLAorICBDVVJMT1BUKENVUkxPUFRfTUFYQUdFX0NPTk4sIENVUkxPUFRUWVBFX0xPTkcsIDI4OCksCisKKyAgLyogU0FTTCBhdXRob3Jpc2F0aW9uIGlkZW50aXR5ICovCisgIENVUkxPUFQoQ1VSTE9QVF9TQVNMX0FVVEhaSUQsIENVUkxPUFRUWVBFX1NUUklOR1BPSU5ULCAyODkpLAorCisgIC8qIGFsbG93IFJDUFQgVE8gY29tbWFuZCB0byBmYWlsIGZvciBzb21lIHJlY2lwaWVudHMgKi8KKyAgQ1VSTE9QVChDVVJMT1BUX01BSUxfUkNQVF9BTExMT1dGQUlMUywgQ1VSTE9QVFRZUEVfTE9ORywgMjkwKSwKIAogICBDVVJMT1BUX0xBU1RFTlRSWSAvKiB0aGUgbGFzdCB1bnVzZWQgKi8KIH0gQ1VSTG9wdGlvbjsKQEAgLTE5NzQsNyArMjAwMiw4IEBACiAgIENVUkxfSFRUUF9WRVJTSU9OXzJUTFMsIC8qIHVzZSB2ZXJzaW9uIDIgZm9yIEhUVFBTLCB2ZXJzaW9uIDEuMSBmb3IgSFRUUCAqLwogICBDVVJMX0hUVFBfVkVSU0lPTl8yX1BSSU9SX0tOT1dMRURHRSwgIC8qIHBsZWFzZSB1c2UgSFRUUCAyIHdpdGhvdXQgSFRUUC8xLjEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGdyYWRlICovCi0KKyAgQ1VSTF9IVFRQX1ZFUlNJT05fMyA9IDMwLCAvKiBNYWtlcyB1c2Ugb2YgZXhwbGljaXQgSFRUUC8zIHdpdGhvdXQgZmFsbGJhY2suCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIENVUkxPUFRfQUxUU1ZDIHRvIGVuYWJsZSBIVFRQLzMgdXBncmFkZSAqLwogICBDVVJMX0hUVFBfVkVSU0lPTl9MQVNUIC8qICpJTExFR0FMKiBodHRwIHZlcnNpb24gKi8KIH07CiAKQEAgLTIyMDAsNTIgKzIyMjksMzUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3NsaXN0ICpoZWFkZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRha2Vfb3duZXJzaGlwKTsKIAotLyogT2xkIGZvcm0gQVBJLiAqLwotLyogbmFtZSBpcyB1cHBlcmNhc2UgQ1VSTEZPUk1fPG5hbWU+ICovCi0jaWZkZWYgQ0ZJTklUCi0jdW5kZWYgQ0ZJTklUCi0jZW5kaWYKLQotI2lmZGVmIENVUkxfSVNPQ1BQCi0jZGVmaW5lIENGSU5JVChuYW1lKSBDVVJMRk9STV8gIyMgbmFtZQotI2Vsc2UKLS8qIFRoZSBtYWNybyAiIyMiIGlzIElTTyBDLCB3ZSBhc3N1bWUgcHJlLUlTTyBDIGRvZXNuJ3Qgc3VwcG9ydCBpdC4gKi8KLSNkZWZpbmUgQ0ZJTklUKG5hbWUpIENVUkxGT1JNXy8qKi9uYW1lCi0jZW5kaWYKLQogdHlwZWRlZiBlbnVtIHsKLSAgQ0ZJTklUKE5PVEhJTkcpLCAgICAgICAgLyoqKioqKioqKiB0aGUgZmlyc3Qgb25lIGlzIHVudXNlZCAqKioqKioqKioqKiovCisgIENVUkxGT1JNX05PVEhJTkcsICAgICAgICAvKioqKioqKioqIHRoZSBmaXJzdCBvbmUgaXMgdW51c2VkICoqKioqKioqKioqKi8KKyAgQ1VSTEZPUk1fQ09QWU5BTUUsCisgIENVUkxGT1JNX1BUUk5BTUUsCisgIENVUkxGT1JNX05BTUVMRU5HVEgsCisgIENVUkxGT1JNX0NPUFlDT05URU5UUywKKyAgQ1VSTEZPUk1fUFRSQ09OVEVOVFMsCisgIENVUkxGT1JNX0NPTlRFTlRTTEVOR1RILAorICBDVVJMRk9STV9GSUxFQ09OVEVOVCwKKyAgQ1VSTEZPUk1fQVJSQVksCisgIENVUkxGT1JNX09CU09MRVRFLAorICBDVVJMRk9STV9GSUxFLAogCi0gIC8qICAqLwotICBDRklOSVQoQ09QWU5BTUUpLAotICBDRklOSVQoUFRSTkFNRSksCi0gIENGSU5JVChOQU1FTEVOR1RIKSwKLSAgQ0ZJTklUKENPUFlDT05URU5UUyksCi0gIENGSU5JVChQVFJDT05URU5UUyksCi0gIENGSU5JVChDT05URU5UU0xFTkdUSCksCi0gIENGSU5JVChGSUxFQ09OVEVOVCksCi0gIENGSU5JVChBUlJBWSksCi0gIENGSU5JVChPQlNPTEVURSksCi0gIENGSU5JVChGSUxFKSwKKyAgQ1VSTEZPUk1fQlVGRkVSLAorICBDVVJMRk9STV9CVUZGRVJQVFIsCisgIENVUkxGT1JNX0JVRkZFUkxFTkdUSCwKIAotICBDRklOSVQoQlVGRkVSKSwKLSAgQ0ZJTklUKEJVRkZFUlBUUiksCi0gIENGSU5JVChCVUZGRVJMRU5HVEgpLAorICBDVVJMRk9STV9DT05URU5UVFlQRSwKKyAgQ1VSTEZPUk1fQ09OVEVOVEhFQURFUiwKKyAgQ1VSTEZPUk1fRklMRU5BTUUsCisgIENVUkxGT1JNX0VORCwKKyAgQ1VSTEZPUk1fT0JTT0xFVEUyLAogCi0gIENGSU5JVChDT05URU5UVFlQRSksCi0gIENGSU5JVChDT05URU5USEVBREVSKSwKLSAgQ0ZJTklUKEZJTEVOQU1FKSwKLSAgQ0ZJTklUKEVORCksCi0gIENGSU5JVChPQlNPTEVURTIpLAotCi0gIENGSU5JVChTVFJFQU0pLAotICBDRklOSVQoQ09OVEVOVExFTiksIC8qIGFkZGVkIGluIDcuNDYuMCwgcHJvdmlkZSBhIGN1cmxfb2ZmX3QgbGVuZ3RoICovCisgIENVUkxGT1JNX1NUUkVBTSwKKyAgQ1VSTEZPUk1fQ09OVEVOVExFTiwgLyogYWRkZWQgaW4gNy40Ni4wLCBwcm92aWRlIGEgY3VybF9vZmZfdCBsZW5ndGggKi8KIAogICBDVVJMRk9STV9MQVNURU5UUlkgLyogdGhlIGxhc3QgdW51c2VkICovCiB9IENVUkxmb3Jtb3B0aW9uOwogCi0jdW5kZWYgQ0ZJTklUIC8qIGRvbmUgKi8KLQogLyogc3RydWN0dXJlIHRvIGJlIHVzZWQgYXMgcGFyYW1ldGVyIGZvciBDVVJMRk9STV9BUlJBWSAqLwogc3RydWN0IGN1cmxfZm9ybXMgewogICBDVVJMZm9ybW9wdGlvbiBvcHRpb247CkBAIC0yNTE0LDggKzI1MjYsOCBAQAogICovCiBDVVJMX0VYVEVSTiB0aW1lX3QgY3VybF9nZXRkYXRlKGNvbnN0IGNoYXIgKnAsIGNvbnN0IHRpbWVfdCAqdW51c2VkKTsKIAotLyogaW5mbyBhYm91dCB0aGUgY2VydGlmaWNhdGUgY2hhaW4sIG9ubHkgZm9yIE9wZW5TU0wgYnVpbGRzLiBBc2tlZAotICAgZm9yIHdpdGggQ1VSTE9QVF9DRVJUSU5GTyAvIENVUkxJTkZPX0NFUlRJTkZPICovCisvKiBpbmZvIGFib3V0IHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiwgb25seSBmb3IgT3BlblNTTCwgR251VExTLCBTY2hhbm5lbCwgTlNTCisgICBhbmQgR1NLaXQgYnVpbGRzLiBBc2tlZCBmb3Igd2l0aCBDVVJMT1BUX0NFUlRJTkZPIC8gQ1VSTElORk9fQ0VSVElORk8gKi8KIHN0cnVjdCBjdXJsX2NlcnRpbmZvIHsKICAgaW50IG51bV9vZl9jZXJ0czsgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNlcnRpZmljYXRlcyB3aXRoIGluZm9ybWF0aW9uICovCiAgIHN0cnVjdCBjdXJsX3NsaXN0ICoqY2VydGluZm87IC8qIGZvciBlYWNoIGluZGV4IGluIHRoaXMgYXJyYXksIHRoZXJlJ3MgYQpAQCAtMjYxMCw4ICsyNjIyLDkgQEAKICAgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FX1QgPSBDVVJMSU5GT19PRkZfVCArIDU0LAogICBDVVJMSU5GT19SRURJUkVDVF9USU1FX1QgID0gQ1VSTElORk9fT0ZGX1QgKyA1NSwKICAgQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FX1QgPSBDVVJMSU5GT19PRkZfVCArIDU2LAorICBDVVJMSU5GT19SRVRSWV9BRlRFUiAgICAgID0gQ1VSTElORk9fT0ZGX1QgKyA1NywKIAotICBDVVJMSU5GT19MQVNUT05FICAgICAgICAgID0gNTYKKyAgQ1VSTElORk9fTEFTVE9ORSAgICAgICAgICA9IDU3CiB9IENVUkxJTkZPOwogCiAvKiBDVVJMSU5GT19SRVNQT05TRV9DT0RFIGlzIHRoZSBuZXcgbmFtZSBmb3IgdGhlIG9wdGlvbiBwcmV2aW91c2x5IGtub3duIGFzCkBAIC0yNzEwLDYgKzI3MjMsNyBAQAogICBDVVJMVkVSU0lPTl9USElSRCwKICAgQ1VSTFZFUlNJT05fRk9VUlRILAogICBDVVJMVkVSU0lPTl9GSUZUSCwKKyAgQ1VSTFZFUlNJT05fU0lYVEgsCiAgIENVUkxWRVJTSU9OX0xBU1QgLyogbmV2ZXIgYWN0dWFsbHkgdXNlIHRoaXMgKi8KIH0gQ1VSTHZlcnNpb247CiAKQEAgLTI3MTgsNyArMjczMiw3IEBACiAgICBtZWFudCB0byBiZSBhIGJ1aWx0LWluIHZlcnNpb24gbnVtYmVyIGZvciB3aGF0IGtpbmQgb2Ygc3RydWN0IHRoZSBjYWxsZXIKICAgIGV4cGVjdHMuIElmIHRoZSBzdHJ1Y3QgZXZlciBjaGFuZ2VzLCB3ZSByZWRlZmluZSB0aGUgTk9XIHRvIGFub3RoZXIgZW51bQogICAgZnJvbSBhYm92ZS4gKi8KLSNkZWZpbmUgQ1VSTFZFUlNJT05fTk9XIENVUkxWRVJTSU9OX0ZJRlRICisjZGVmaW5lIENVUkxWRVJTSU9OX05PVyBDVVJMVkVSU0lPTl9TSVhUSAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgIENVUkx2ZXJzaW9uIGFnZTsgICAgICAgICAgLyogYWdlIG9mIHRoZSByZXR1cm5lZCBzdHJ1Y3QgKi8KQEAgLTI3NDcsMTEgKzI3NjEsMTYgQEAKICAgY29uc3QgY2hhciAqbGlic3NoX3ZlcnNpb247IC8qIGh1bWFuIHJlYWRhYmxlIHN0cmluZyAqLwogCiAgIC8qIFRoZXNlIGZpZWxkcyB3ZXJlIGFkZGVkIGluIENVUkxWRVJTSU9OX0ZJRlRIICovCi0KICAgdW5zaWduZWQgaW50IGJyb3RsaV92ZXJfbnVtOyAvKiBOdW1lcmljIEJyb3RsaSB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1BSk9SIDw8IDI0KSB8IChNSU5PUiA8PCAxMikgfCBQQVRDSCAqLwogICBjb25zdCBjaGFyICpicm90bGlfdmVyc2lvbjsgLyogaHVtYW4gcmVhZGFibGUgc3RyaW5nLiAqLwogCisgIC8qIFRoZXNlIGZpZWxkcyB3ZXJlIGFkZGVkIGluIENVUkxWRVJTSU9OX1NJWFRIICovCisgIHVuc2lnbmVkIGludCBuZ2h0dHAyX3Zlcl9udW07IC8qIE51bWVyaWMgbmdodHRwMiB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChNQUpPUiA8PCAxNikgfCAoTUlOT1IgPDwgOCkgfCBQQVRDSCAqLworICBjb25zdCBjaGFyICpuZ2h0dHAyX3ZlcnNpb247IC8qIGh1bWFuIHJlYWRhYmxlIHN0cmluZy4gKi8KKyAgY29uc3QgY2hhciAqcXVpY192ZXJzaW9uOyAgICAvKiBodW1hbiByZWFkYWJsZSBxdWljICgrIEhUVFAvMykgbGlicmFyeSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvciBOVUxMICovCiB9IGN1cmxfdmVyc2lvbl9pbmZvX2RhdGE7CiAKICNkZWZpbmUgQ1VSTF9WRVJTSU9OX0lQVjYgICAgICAgICAoMTw8MCkgIC8qIElQdjYtZW5hYmxlZCAqLwpAQCAtMjc4NCw2ICsyODAzLDkgQEAKICNkZWZpbmUgQ1VSTF9WRVJTSU9OX01VTFRJX1NTTCAgICAoMTw8MjIpIC8qIE11bHRpcGxlIFNTTCBiYWNrZW5kcyBhdmFpbGFibGUgKi8KICNkZWZpbmUgQ1VSTF9WRVJTSU9OX0JST1RMSSAgICAgICAoMTw8MjMpIC8qIEJyb3RsaSBmZWF0dXJlcyBhcmUgcHJlc2VudC4gKi8KICNkZWZpbmUgQ1VSTF9WRVJTSU9OX0FMVFNWQyAgICAgICAoMTw8MjQpIC8qIEFsdC1TdmMgaGFuZGxpbmcgYnVpbHQtaW4gKi8KKyNkZWZpbmUgQ1VSTF9WRVJTSU9OX0hUVFAzICAgICAgICAoMTw8MjUpIC8qIEhUVFAzIHN1cHBvcnQgYnVpbHQtaW4gKi8KKworI2RlZmluZSBDVVJMX1ZFUlNJT05fRVNOSSAgICAgICAgICgxPDwyNikgLyogRVNOSSBzdXBwb3J0ICovCiAKICAvKgogICogTkFNRSBjdXJsX3ZlcnNpb25faW5mbygpCkBAIC0yODY2LDQgKzI4ODgsNCBAQAogI2VuZGlmIC8qIF9fU1REQ19fID49IDEgKi8KICNlbmRpZiAvKiBnY2MgPj0gNC4zICYmICFfX2NwbHVzcGx1cyAqLwogCi0jZW5kaWYgLyogX19DVVJMX0NVUkxfSCAqLworI2VuZGlmIC8qIENVUkxJTkNfQ1VSTF9IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2luY2x1ZGUvY3VybC9jdXJsdmVyLmggYi9VdGlsaXRpZXMvY21jdXJsL2luY2x1ZGUvY3VybC9jdXJsdmVyLmgKaW5kZXggMDRlZmI5My4uOGZkMDg3NCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9pbmNsdWRlL2N1cmwvY3VybHZlci5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL2N1cmx2ZXIuaApAQCAtMSw1ICsxLDUgQEAKLSNpZm5kZWYgX19DVVJMX0NVUkxWRVJfSAotI2RlZmluZSBfX0NVUkxfQ1VSTFZFUl9ICisjaWZuZGVmIENVUkxJTkNfQ1VSTFZFUl9ICisjZGVmaW5lIENVUkxJTkNfQ1VSTFZFUl9ICiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCiAgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMjYsMTYgKzI2LDE2IEBACiAgICBhIHNjcmlwdCBhdCByZWxlYXNlLXRpbWUuIFRoaXMgd2FzIG1hZGUgaXRzIG93biBoZWFkZXIgZmlsZSBpbiA3LjExLjIgKi8KIAogLyogVGhpcyBpcyB0aGUgZ2xvYmFsIHBhY2thZ2UgY29weXJpZ2h0ICovCi0jZGVmaW5lIExJQkNVUkxfQ09QWVJJR0hUICIxOTk2IC0gMjAxOSBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4uIgorI2RlZmluZSBMSUJDVVJMX0NPUFlSSUdIVCAiMTk5NiAtIDIwMjAgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LiIKIAogLyogVGhpcyBpcyB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGxpYmN1cmwgcGFja2FnZSBmcm9tIHdoaWNoIHRoaXMgaGVhZGVyCiAgICBmaWxlIG9yaWdpbnM6ICovCi0jZGVmaW5lIExJQkNVUkxfVkVSU0lPTiAiNy42NS4wIgorI2RlZmluZSBMSUJDVVJMX1ZFUlNJT04gIjcuNjkuMCIKIAogLyogVGhlIG51bWVyaWMgdmVyc2lvbiBudW1iZXIgaXMgYWxzbyBhdmFpbGFibGUgImluIHBhcnRzIiBieSB1c2luZyB0aGVzZQogICAgZGVmaW5lczogKi8KICNkZWZpbmUgTElCQ1VSTF9WRVJTSU9OX01BSk9SIDcKLSNkZWZpbmUgTElCQ1VSTF9WRVJTSU9OX01JTk9SIDY1CisjZGVmaW5lIExJQkNVUkxfVkVSU0lPTl9NSU5PUiA2OQogI2RlZmluZSBMSUJDVVJMX1ZFUlNJT05fUEFUQ0ggMAogCiAvKiBUaGlzIGlzIHRoZSBudW1lcmljIHZlcnNpb24gb2YgdGhlIGxpYmN1cmwgdmVyc2lvbiBudW1iZXIsIG1lYW50IGZvciBlYXNpZXIKQEAgLTU3LDcgKzU3LDcgQEAKICAgIENVUkxfVkVSU0lPTl9CSVRTKCkgbWFjcm8gc2luY2UgY3VybCdzIG93biBjb25maWd1cmUgc2NyaXB0IGdyZXBzIGZvciBpdAogICAgYW5kIG5lZWRzIGl0IHRvIGNvbnRhaW4gdGhlIGZ1bGwgbnVtYmVyLgogKi8KLSNkZWZpbmUgTElCQ1VSTF9WRVJTSU9OX05VTSAweDA3NDEwMAorI2RlZmluZSBMSUJDVVJMX1ZFUlNJT05fTlVNIDB4MDc0NTAwCiAKIC8qCiAgKiBUaGlzIGlzIHRoZSBkYXRlIGFuZCB0aW1lIHdoZW4gdGhlIGZ1bGwgc291cmNlIHBhY2thZ2Ugd2FzIGNyZWF0ZWQuIFRoZQpAQCAtNzQsNCArNzQsNCBAQAogI2RlZmluZSBDVVJMX0FUX0xFQVNUX1ZFUlNJT04oeCx5LHopIFwKICAgKExJQkNVUkxfVkVSU0lPTl9OVU0gPj0gQ1VSTF9WRVJTSU9OX0JJVFMoeCwgeSwgeikpCiAKLSNlbmRpZiAvKiBfX0NVUkxfQ1VSTFZFUl9IICovCisjZW5kaWYgLyogQ1VSTElOQ19DVVJMVkVSX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL2Vhc3kuaCBiL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL2Vhc3kuaAppbmRleCBmNDJhOGE5Li41OTJmNWQzIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2luY2x1ZGUvY3VybC9lYXN5LmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9pbmNsdWRlL2N1cmwvZWFzeS5oCkBAIC0xLDUgKzEsNSBAQAotI2lmbmRlZiBfX0NVUkxfRUFTWV9ICi0jZGVmaW5lIF9fQ1VSTF9FQVNZX0gKKyNpZm5kZWYgQ1VSTElOQ19FQVNZX0gKKyNkZWZpbmUgQ1VSTElOQ19FQVNZX0gKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KICAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2luY2x1ZGUvY3VybC9tcHJpbnRmLmggYi9VdGlsaXRpZXMvY21jdXJsL2luY2x1ZGUvY3VybC9tcHJpbnRmLmgKaW5kZXggZTIwZjU0Ni4uZjYxNWVkNyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9pbmNsdWRlL2N1cmwvbXByaW50Zi5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL21wcmludGYuaApAQCAtMSw1ICsxLDUgQEAKLSNpZm5kZWYgX19DVVJMX01QUklOVEZfSAotI2RlZmluZSBfX0NVUkxfTVBSSU5URl9ICisjaWZuZGVmIENVUkxJTkNfTVBSSU5URl9ICisjZGVmaW5lIENVUkxJTkNfTVBSSU5URl9ICiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCiAgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNDcsNCArNDcsNCBAQAogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiBfX0NVUkxfTVBSSU5URl9IICovCisjZW5kaWYgLyogQ1VSTElOQ19NUFJJTlRGX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL211bHRpLmggYi9VdGlsaXRpZXMvY21jdXJsL2luY2x1ZGUvY3VybC9tdWx0aS5oCmluZGV4IGIxOWRiYWYuLmJkYTliYjcgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL211bHRpLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9pbmNsdWRlL2N1cmwvbXVsdGkuaApAQCAtMSw1ICsxLDUgQEAKLSNpZm5kZWYgX19DVVJMX01VTFRJX0gKLSNkZWZpbmUgX19DVVJMX01VTFRJX0gKKyNpZm5kZWYgQ1VSTElOQ19NVUxUSV9ICisjZGVmaW5lIENVUkxJTkNfTVVMVElfSAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwogICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTcyLDYgKzcyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0ZWQgdG8gZ2V0IGFkZGVkIC0gYWdhaW4gKi8KICAgQ1VSTE1fUkVDVVJTSVZFX0FQSV9DQUxMLCAvKiBhbiBhcGkgZnVuY3Rpb24gd2FzIGNhbGxlZCBmcm9tIGluc2lkZSBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgKi8KKyAgQ1VSTE1fV0FLRVVQX0ZBSUxVUkUsICAvKiB3YWtldXAgaXMgdW5hdmFpbGFibGUgb3IgZmFpbGVkICovCisgIENVUkxNX0JBRF9GVU5DVElPTl9BUkdVTUVOVCwgIC8qIGZ1bmN0aW9uIGNhbGxlZCB3aXRoIGEgYmFkIHBhcmFtZXRlciAqLwogICBDVVJMTV9MQVNUCiB9IENVUkxNY29kZTsKIApAQCAtMTczLDYgKzE3NSwyOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGltZW91dF9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpyZXQpOwogCisvKgorICogTmFtZTogICAgIGN1cmxfbXVsdGlfcG9sbCgpCisgKgorICogRGVzYzogICAgIFBvbGwgb24gYWxsIGZkcyB3aXRoaW4gYSBDVVJMTSBzZXQgYXMgd2VsbCBhcyBhbnkKKyAqICAgICAgICAgICBhZGRpdGlvbmFsIGZkcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorICoKKyAqIFJldHVybnM6ICBDVVJMTWNvZGUgdHlwZSwgZ2VuZXJhbCBtdWx0aSBlcnJvciBjb2RlLgorICovCitDVVJMX0VYVEVSTiBDVVJMTWNvZGUgY3VybF9tdWx0aV9wb2xsKENVUkxNICptdWx0aV9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3dhaXRmZCBleHRyYV9mZHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV4dHJhX25mZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aW1lb3V0X21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnJldCk7CisKKy8qCisgKiBOYW1lOiAgICAgY3VybF9tdWx0aV93YWtldXAoKQorICoKKyAqIERlc2M6ICAgICB3YWtlcyB1cCBhIHNsZWVwaW5nIGN1cmxfbXVsdGlfcG9sbCBjYWxsLgorICoKKyAqIFJldHVybnM6ICBDVVJMTWNvZGUgdHlwZSwgZ2VuZXJhbCBtdWx0aSBlcnJvciBjb2RlLgorICovCitDVVJMX0VYVEVSTiBDVVJMTWNvZGUgY3VybF9tdWx0aV93YWtldXAoQ1VSTE0gKm11bHRpX2hhbmRsZSk7CisKICAvKgogICAqIE5hbWU6ICAgIGN1cmxfbXVsdGlfcGVyZm9ybSgpCiAgICoKQEAgLTMxOSw2OCArMzQ0LDU4IEBACiBDVVJMX0VYVEVSTiBDVVJMTWNvZGUgY3VybF9tdWx0aV90aW1lb3V0KENVUkxNICptdWx0aV9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKm1pbGxpc2Vjb25kcyk7CiAKLSN1bmRlZiBDSU5JVCAvKiByZS11c2luZyB0aGUgc2FtZSBuYW1lIGFzIGluIGN1cmwuaCAqLwotCi0jaWZkZWYgQ1VSTF9JU09DUFAKLSNkZWZpbmUgQ0lOSVQobmFtZSx0eXBlLG51bSkgQ1VSTE1PUFRfICMjIG5hbWUgPSBDVVJMT1BUVFlQRV8gIyMgdHlwZSArIG51bQotI2Vsc2UKLS8qIFRoZSBtYWNybyAiIyMiIGlzIElTTyBDLCB3ZSBhc3N1bWUgcHJlLUlTTyBDIGRvZXNuJ3Qgc3VwcG9ydCBpdC4gKi8KLSNkZWZpbmUgTE9ORyAgICAgICAgICBDVVJMT1BUVFlQRV9MT05HCi0jZGVmaW5lIE9CSkVDVFBPSU5UICAgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQKLSNkZWZpbmUgRlVOQ1RJT05QT0lOVCBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5UCi0jZGVmaW5lIE9GRl9UICAgICAgICAgQ1VSTE9QVFRZUEVfT0ZGX1QKLSNkZWZpbmUgQ0lOSVQobmFtZSx0eXBlLG51bWJlcikgQ1VSTE1PUFRfLyoqL25hbWUgPSB0eXBlICsgbnVtYmVyCi0jZW5kaWYKLQogdHlwZWRlZiBlbnVtIHsKICAgLyogVGhpcyBpcyB0aGUgc29ja2V0IGNhbGxiYWNrIGZ1bmN0aW9uIHBvaW50ZXIgKi8KLSAgQ0lOSVQoU09DS0VURlVOQ1RJT04sIEZVTkNUSU9OUE9JTlQsIDEpLAorICBDVVJMT1BUKENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OLCBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5ULCAxKSwKIAogICAvKiBUaGlzIGlzIHRoZSBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIHNvY2tldCBjYWxsYmFjayAqLwotICBDSU5JVChTT0NLRVREQVRBLCBPQkpFQ1RQT0lOVCwgMiksCisgIENVUkxPUFQoQ1VSTE1PUFRfU09DS0VUREFUQSwgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQsIDIpLAogCiAgICAgLyogc2V0IHRvIDEgdG8gZW5hYmxlIHBpcGVsaW5pbmcgZm9yIHRoaXMgbXVsdGkgaGFuZGxlICovCi0gIENJTklUKFBJUEVMSU5JTkcsIExPTkcsIDMpLAorICBDVVJMT1BUKENVUkxNT1BUX1BJUEVMSU5JTkcsIENVUkxPUFRUWVBFX0xPTkcsIDMpLAogCiAgICAvKiBUaGlzIGlzIHRoZSB0aW1lciBjYWxsYmFjayBmdW5jdGlvbiBwb2ludGVyICovCi0gIENJTklUKFRJTUVSRlVOQ1RJT04sIEZVTkNUSU9OUE9JTlQsIDQpLAorICBDVVJMT1BUKENVUkxNT1BUX1RJTUVSRlVOQ1RJT04sIENVUkxPUFRUWVBFX0ZVTkNUSU9OUE9JTlQsIDQpLAogCiAgIC8qIFRoaXMgaXMgdGhlIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgdGltZXIgY2FsbGJhY2sgKi8KLSAgQ0lOSVQoVElNRVJEQVRBLCBPQkpFQ1RQT0lOVCwgNSksCisgIENVUkxPUFQoQ1VSTE1PUFRfVElNRVJEQVRBLCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgNSksCiAKICAgLyogbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgY29ubmVjdGlvbiBjYWNoZSAqLwotICBDSU5JVChNQVhDT05ORUNUUywgTE9ORywgNiksCisgIENVUkxPUFQoQ1VSTE1PUFRfTUFYQ09OTkVDVFMsIENVUkxPUFRUWVBFX0xPTkcsIDYpLAogCiAgIC8qIG1heGltdW0gbnVtYmVyIG9mIChwaXBlbGluaW5nKSBjb25uZWN0aW9ucyB0byBvbmUgaG9zdCAqLwotICBDSU5JVChNQVhfSE9TVF9DT05ORUNUSU9OUywgTE9ORywgNyksCisgIENVUkxPUFQoQ1VSTE1PUFRfTUFYX0hPU1RfQ09OTkVDVElPTlMsIENVUkxPUFRUWVBFX0xPTkcsIDcpLAogCiAgIC8qIG1heGltdW0gbnVtYmVyIG9mIHJlcXVlc3RzIGluIGEgcGlwZWxpbmUgKi8KLSAgQ0lOSVQoTUFYX1BJUEVMSU5FX0xFTkdUSCwgTE9ORywgOCksCisgIENVUkxPUFQoQ1VSTE1PUFRfTUFYX1BJUEVMSU5FX0xFTkdUSCwgQ1VSTE9QVFRZUEVfTE9ORywgOCksCiAKICAgLyogYSBjb25uZWN0aW9uIHdpdGggYSBjb250ZW50LWxlbmd0aCBsb25nZXIgdGhhbiB0aGlzCiAgICAgIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgZm9yIHBpcGVsaW5pbmcgKi8KLSAgQ0lOSVQoQ09OVEVOVF9MRU5HVEhfUEVOQUxUWV9TSVpFLCBPRkZfVCwgOSksCisgIENVUkxPUFQoQ1VSTE1PUFRfQ09OVEVOVF9MRU5HVEhfUEVOQUxUWV9TSVpFLCBDVVJMT1BUVFlQRV9PRkZfVCwgOSksCiAKICAgLyogYSBjb25uZWN0aW9uIHdpdGggYSBjaHVuayBsZW5ndGggbG9uZ2VyIHRoYW4gdGhpcwogICAgICB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIGZvciBwaXBlbGluaW5nICovCi0gIENJTklUKENIVU5LX0xFTkdUSF9QRU5BTFRZX1NJWkUsIE9GRl9ULCAxMCksCisgIENVUkxPUFQoQ1VSTE1PUFRfQ0hVTktfTEVOR1RIX1BFTkFMVFlfU0laRSwgQ1VSTE9QVFRZUEVfT0ZGX1QsIDEwKSwKIAogICAvKiBhIGxpc3Qgb2Ygc2l0ZSBuYW1lcygrcG9ydCkgdGhhdCBhcmUgYmxhY2tsaXN0ZWQgZnJvbQogICAgICBwaXBlbGluaW5nICovCi0gIENJTklUKFBJUEVMSU5JTkdfU0lURV9CTCwgT0JKRUNUUE9JTlQsIDExKSwKKyAgQ1VSTE9QVChDVVJMTU9QVF9QSVBFTElOSU5HX1NJVEVfQkwsIENVUkxPUFRUWVBFX09CSkVDVFBPSU5ULCAxMSksCiAKICAgLyogYSBsaXN0IG9mIHNlcnZlciB0eXBlcyB0aGF0IGFyZSBibGFja2xpc3RlZCBmcm9tCiAgICAgIHBpcGVsaW5pbmcgKi8KLSAgQ0lOSVQoUElQRUxJTklOR19TRVJWRVJfQkwsIE9CSkVDVFBPSU5ULCAxMiksCisgIENVUkxPUFQoQ1VSTE1PUFRfUElQRUxJTklOR19TRVJWRVJfQkwsIENVUkxPUFRUWVBFX09CSkVDVFBPSU5ULCAxMiksCiAKICAgLyogbWF4aW11bSBudW1iZXIgb2Ygb3BlbiBjb25uZWN0aW9ucyBpbiB0b3RhbCAqLwotICBDSU5JVChNQVhfVE9UQUxfQ09OTkVDVElPTlMsIExPTkcsIDEzKSwKKyAgQ1VSTE9QVChDVVJMTU9QVF9NQVhfVE9UQUxfQ09OTkVDVElPTlMsIENVUkxPUFRUWVBFX0xPTkcsIDEzKSwKIAogICAgLyogVGhpcyBpcyB0aGUgc2VydmVyIHB1c2ggY2FsbGJhY2sgZnVuY3Rpb24gcG9pbnRlciAqLwotICBDSU5JVChQVVNIRlVOQ1RJT04sIEZVTkNUSU9OUE9JTlQsIDE0KSwKKyAgQ1VSTE9QVChDVVJMTU9QVF9QVVNIRlVOQ1RJT04sIENVUkxPUFRUWVBFX0ZVTkNUSU9OUE9JTlQsIDE0KSwKIAogICAvKiBUaGlzIGlzIHRoZSBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIHNlcnZlciBwdXNoIGNhbGxiYWNrICovCi0gIENJTklUKFBVU0hEQVRBLCBPQkpFQ1RQT0lOVCwgMTUpLAorICBDVVJMT1BUKENVUkxNT1BUX1BVU0hEQVRBLCBDVVJMT1BUVFlQRV9PQkpFQ1RQT0lOVCwgMTUpLAorCisgIC8qIG1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnQgc3RyZWFtcyB0byBzdXBwb3J0IG9uIGEgY29ubmVjdGlvbiAqLworICBDVVJMT1BUKENVUkxNT1BUX01BWF9DT05DVVJSRU5UX1NUUkVBTVMsIENVUkxPUFRUWVBFX0xPTkcsIDE2KSwKIAogICBDVVJMTU9QVF9MQVNURU5UUlkgLyogdGhlIGxhc3QgdW51c2VkICovCiB9IENVUkxNb3B0aW9uOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9pbmNsdWRlL2N1cmwvc3RkY2hlYWRlcnMuaCBiL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL3N0ZGNoZWFkZXJzLmgKaW5kZXggMDI3YjZmNC4uYTZiZGMxYSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9pbmNsdWRlL2N1cmwvc3RkY2hlYWRlcnMuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2luY2x1ZGUvY3VybC9zdGRjaGVhZGVycy5oCkBAIC0xLDUgKzEsNSBAQAotI2lmbmRlZiBfX1NURENfSEVBREVSU19ICi0jZGVmaW5lIF9fU1REQ19IRUFERVJTX0gKKyNpZm5kZWYgQ1VSTElOQ19TVERDSEVBREVSU19ICisjZGVmaW5lIENVUkxJTkNfU1REQ0hFQURFUlNfSAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwogICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTMwLDQgKzMwLDQgQEAKIGludCBzdHJjYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKIGludCBzdHJuY2FzZWNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKIAotI2VuZGlmIC8qIF9fU1REQ19IRUFERVJTX0ggKi8KKyNlbmRpZiAvKiBDVVJMSU5DX1NURENIRUFERVJTX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL3N5c3RlbS5oIGIvVXRpbGl0aWVzL2NtY3VybC9pbmNsdWRlL2N1cmwvc3lzdGVtLmgKaW5kZXggMWU1NTVlYy4uODY3YWY2MSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9pbmNsdWRlL2N1cmwvc3lzdGVtLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9pbmNsdWRlL2N1cmwvc3lzdGVtLmgKQEAgLTEsNSArMSw1IEBACi0jaWZuZGVmIF9fQ1VSTF9TWVNURU1fSAotI2RlZmluZSBfX0NVUkxfU1lTVEVNX0gKKyNpZm5kZWYgQ1VSTElOQ19TWVNURU1fSAorI2RlZmluZSBDVVJMSU5DX1NZU1RFTV9ICiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCiAgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE3LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMTM3LDE1ICsxMzcsMjYgQEAKICMgIGRlZmluZSBDVVJMX1RZUEVPRl9DVVJMX1NPQ0tMRU5fVCBpbnQKIAogI2VsaWYgZGVmaW5lZChfX0xDQ19fKQotIyAgZGVmaW5lIENVUkxfVFlQRU9GX0NVUkxfT0ZGX1QgICAgIGxvbmcKLSMgIGRlZmluZSBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICAgICAibGQiCi0jICBkZWZpbmUgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVFUgICAgImx1IgotIyAgZGVmaW5lIENVUkxfU1VGRklYX0NVUkxfT0ZGX1QgICAgIEwKLSMgIGRlZmluZSBDVVJMX1NVRkZJWF9DVVJMX09GRl9UVSAgICBVTAotIyAgZGVmaW5lIENVUkxfVFlQRU9GX0NVUkxfU09DS0xFTl9UIGludAorIyAgaWYgZGVmaW5lZChfX2Uya19fKSAvKiBNQ1NUIGVMYnJ1cyBDIENvbXBpbGVyICovCisjICAgIGRlZmluZSBDVVJMX1RZUEVPRl9DVVJMX09GRl9UICAgICBsb25nCisjICAgIGRlZmluZSBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICAgICAibGQiCisjICAgIGRlZmluZSBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UVSAgICAibHUiCisjICAgIGRlZmluZSBDVVJMX1NVRkZJWF9DVVJMX09GRl9UICAgICBMCisjICAgIGRlZmluZSBDVVJMX1NVRkZJWF9DVVJMX09GRl9UVSAgICBVTAorIyAgICBkZWZpbmUgQ1VSTF9UWVBFT0ZfQ1VSTF9TT0NLTEVOX1Qgc29ja2xlbl90CisjICAgIGRlZmluZSBDVVJMX1BVTExfU1lTX1RZUEVTX0ggICAgICAxCisjICAgIGRlZmluZSBDVVJMX1BVTExfU1lTX1NPQ0tFVF9IICAgICAxCisjICBlbHNlICAgICAgICAgICAgICAgIC8qIExvY2FsIChvciBMaXR0bGUpIEMgQ29tcGlsZXIgKi8KKyMgICAgZGVmaW5lIENVUkxfVFlQRU9GX0NVUkxfT0ZGX1QgICAgIGxvbmcKKyMgICAgZGVmaW5lIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgICAgICJsZCIKKyMgICAgZGVmaW5lIENVUkxfRk9STUFUX0NVUkxfT0ZGX1RVICAgICJsdSIKKyMgICAgZGVmaW5lIENVUkxfU1VGRklYX0NVUkxfT0ZGX1QgICAgIEwKKyMgICAgZGVmaW5lIENVUkxfU1VGRklYX0NVUkxfT0ZGX1RVICAgIFVMCisjICAgIGRlZmluZSBDVVJMX1RZUEVPRl9DVVJMX1NPQ0tMRU5fVCBpbnQKKyMgIGVuZGlmCiAKICNlbGlmIGRlZmluZWQoX19TWU1CSUFOMzJfXykKLSMgIGlmIGRlZmluZWQoX19FQUJJX18pICAvKiBUcmVhdCBhbGwgQVJNIGNvbXBpbGVycyBlcXVhbGx5ICovCisjICBpZiBkZWZpbmVkKF9fRUFCSV9fKSAvKiBUcmVhdCBhbGwgQVJNIGNvbXBpbGVycyBlcXVhbGx5ICovCiAjICAgIGRlZmluZSBDVVJMX1RZUEVPRl9DVVJMX09GRl9UICAgICBsb25nIGxvbmcKICMgICAgZGVmaW5lIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgICAgICJsbGQiCiAjICAgIGRlZmluZSBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UVSAgICAibGx1IgpAQCAtMjg4LDcgKzI5OSw2IEBACiAjICBkZWZpbmUgQ1VSTF9UWVBFT0ZfQ1VSTF9TT0NLTEVOX1QgaW50CiAKICNlbGlmIGRlZmluZWQoX19USU5ZQ19fKSAvKiBhbHNvIGtub3duIGFzIHRjYyAqLwotCiAjICBkZWZpbmUgQ1VSTF9UWVBFT0ZfQ1VSTF9PRkZfVCAgICAgbG9uZyBsb25nCiAjICBkZWZpbmUgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAgICAgImxsZCIKICMgIGRlZmluZSBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UVSAgICAibGx1IgpAQCAtMzc3LDYgKzM4Nyw3IEBACiAjICAgIGRlZmluZSBDVVJMX1NVRkZJWF9DVVJMX09GRl9UVSAgICBVTEwKICMgIGVsaWYgZGVmaW5lZChfX0xQNjRfXykgfHwgXAogICAgICAgICBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fc3BhcmM2NF9fKSB8fCBcCisgICAgICAgIGRlZmluZWQoX19lMmtfXykgfHwgXAogICAgICAgICAoZGVmaW5lZChfX1NJWkVPRl9MT05HX18pICYmIF9fU0laRU9GX0xPTkdfXyA9PSA4KSB8fCBcCiAgICAgICAgIChkZWZpbmVkKF9fTE9OR19NQVhfXykgJiYgX19MT05HX01BWF9fID09IDkyMjMzNzIwMzY4NTQ3NzU4MDdMKQogIyAgICBkZWZpbmUgQ1VSTF9UWVBFT0ZfQ1VSTF9PRkZfVCAgICAgbG9uZwpAQCAtNDczLDIxICs0ODQsMjEgQEAKICAqLwogCiAjaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPT0gMHgwNTUxKQotIyAgZGVmaW5lIF9fQ1VSTF9PRkZfVF9DX0hMUFIyKHgpIHgKLSMgIGRlZmluZSBfX0NVUkxfT0ZGX1RfQ19ITFBSMSh4KSBfX0NVUkxfT0ZGX1RfQ19ITFBSMih4KQotIyAgZGVmaW5lIENVUkxfT0ZGX1RfQyhWYWwpICBfX0NVUkxfT0ZGX1RfQ19ITFBSMShWYWwpICMjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19DVVJMX09GRl9UX0NfSExQUjEoQ1VSTF9TVUZGSVhfQ1VSTF9PRkZfVCkKLSMgIGRlZmluZSBDVVJMX09GRl9UVV9DKFZhbCkgX19DVVJMX09GRl9UX0NfSExQUjEoVmFsKSAjIyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fQ1VSTF9PRkZfVF9DX0hMUFIxKENVUkxfU1VGRklYX0NVUkxfT0ZGX1RVKQorIyAgZGVmaW5lIENVUkxJTkNfT0ZGX1RfQ19ITFBSMih4KSB4CisjICBkZWZpbmUgQ1VSTElOQ19PRkZfVF9DX0hMUFIxKHgpIENVUkxJTkNfT0ZGX1RfQ19ITFBSMih4KQorIyAgZGVmaW5lIENVUkxfT0ZGX1RfQyhWYWwpICBDVVJMSU5DX09GRl9UX0NfSExQUjEoVmFsKSAjIyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxJTkNfT0ZGX1RfQ19ITFBSMShDVVJMX1NVRkZJWF9DVVJMX09GRl9UKQorIyAgZGVmaW5lIENVUkxfT0ZGX1RVX0MoVmFsKSBDVVJMSU5DX09GRl9UX0NfSExQUjEoVmFsKSAjIyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxJTkNfT0ZGX1RfQ19ITFBSMShDVVJMX1NVRkZJWF9DVVJMX09GRl9UVSkKICNlbHNlCiAjICBpZmRlZiBDVVJMX0lTT0NQUAotIyAgICBkZWZpbmUgX19DVVJMX09GRl9UX0NfSExQUjIoVmFsLFN1ZmZpeCkgVmFsICMjIFN1ZmZpeAorIyAgICBkZWZpbmUgQ1VSTElOQ19PRkZfVF9DX0hMUFIyKFZhbCxTdWZmaXgpIFZhbCAjIyBTdWZmaXgKICMgIGVsc2UKLSMgICAgZGVmaW5lIF9fQ1VSTF9PRkZfVF9DX0hMUFIyKFZhbCxTdWZmaXgpIFZhbC8qKi9TdWZmaXgKKyMgICAgZGVmaW5lIENVUkxJTkNfT0ZGX1RfQ19ITFBSMihWYWwsU3VmZml4KSBWYWwvKiovU3VmZml4CiAjICBlbmRpZgotIyAgZGVmaW5lIF9fQ1VSTF9PRkZfVF9DX0hMUFIxKFZhbCxTdWZmaXgpIF9fQ1VSTF9PRkZfVF9DX0hMUFIyKFZhbCxTdWZmaXgpCi0jICBkZWZpbmUgQ1VSTF9PRkZfVF9DKFZhbCkgIF9fQ1VSTF9PRkZfVF9DX0hMUFIxKFZhbCxDVVJMX1NVRkZJWF9DVVJMX09GRl9UKQotIyAgZGVmaW5lIENVUkxfT0ZGX1RVX0MoVmFsKSBfX0NVUkxfT0ZGX1RfQ19ITFBSMShWYWwsQ1VSTF9TVUZGSVhfQ1VSTF9PRkZfVFUpCisjICBkZWZpbmUgQ1VSTElOQ19PRkZfVF9DX0hMUFIxKFZhbCxTdWZmaXgpIENVUkxJTkNfT0ZGX1RfQ19ITFBSMihWYWwsU3VmZml4KQorIyAgZGVmaW5lIENVUkxfT0ZGX1RfQyhWYWwpICBDVVJMSU5DX09GRl9UX0NfSExQUjEoVmFsLENVUkxfU1VGRklYX0NVUkxfT0ZGX1QpCisjICBkZWZpbmUgQ1VSTF9PRkZfVFVfQyhWYWwpIENVUkxJTkNfT0ZGX1RfQ19ITFBSMShWYWwsQ1VSTF9TVUZGSVhfQ1VSTF9PRkZfVFUpCiAjZW5kaWYKIAotI2VuZGlmIC8qIF9fQ1VSTF9TWVNURU1fSCAqLworI2VuZGlmIC8qIENVUkxJTkNfU1lTVEVNX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL3R5cGVjaGVjay1nY2MuaCBiL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL3R5cGVjaGVjay1nY2MuaAppbmRleCAyZDFkZTRkLi4wM2M4NGZjIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2luY2x1ZGUvY3VybC90eXBlY2hlY2stZ2NjLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9pbmNsdWRlL2N1cmwvdHlwZWNoZWNrLWdjYy5oCkBAIC0xLDUgKzEsNSBAQAotI2lmbmRlZiBfX0NVUkxfVFlQRUNIRUNLX0dDQ19ICi0jZGVmaW5lIF9fQ1VSTF9UWVBFQ0hFQ0tfR0NDX0gKKyNpZm5kZWYgQ1VSTElOQ19UWVBFQ0hFQ0tfR0NDX0gKKyNkZWZpbmUgQ1VSTElOQ19UWVBFQ0hFQ0tfR0NDX0gKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KICAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CkBAIC0yNSwxMCArMjUsMTAgQEAKIC8qIHdyYXBzIGN1cmxfZWFzeV9zZXRvcHQoKSB3aXRoIHR5cGVjaGVja2luZyAqLwogCiAvKiBUbyBhZGQgYSBuZXcga2luZCBvZiB3YXJuaW5nLCBhZGQgYW4KLSAqICAgaWYoX2N1cmxfaXNfc29tZXR5cGVfb3B0aW9uKF9jdXJsX29wdCkpCi0gKiAgICAgaWYoIV9jdXJsX2lzX3NvbWV0eXBlKHZhbHVlKSkKKyAqICAgaWYoY3VybGNoZWNrX3NvbWV0eXBlX29wdGlvbihfY3VybF9vcHQpKQorICogICAgIGlmKCFjdXJsY2hlY2tfc29tZXR5cGUodmFsdWUpKQogICogICAgICAgX2N1cmxfZWFzeV9zZXRvcHRfZXJyX3NvbWV0eXBlKCk7Ci0gKiBibG9jayBhbmQgZGVmaW5lIF9jdXJsX2lzX3NvbWV0eXBlX29wdGlvbiwgX2N1cmxfaXNfc29tZXR5cGUgYW5kCisgKiBibG9jayBhbmQgZGVmaW5lIGN1cmxjaGVja19zb21ldHlwZV9vcHRpb24sIGN1cmxjaGVja19zb21ldHlwZSBhbmQKICAqIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9zb21ldHlwZSBiZWxvdwogICoKICAqIE5PVEU6IFdlIHVzZSB0d28gbmVzdGVkICdpZicgc3RhdGVtZW50cyBoZXJlIGluc3RlYWQgb2YgdGhlICYmIG9wZXJhdG9yLCBpbgpAQCAtMzgsMTEyICszOCwxMTIgQEAKICAqIFRvIGFkZCBhbiBvcHRpb24gdGhhdCB1c2VzIHRoZSBzYW1lIHR5cGUgYXMgYW4gZXhpc3Rpbmcgb3B0aW9uLCB5b3UnbGwganVzdAogICogbmVlZCB0byBleHRlbmQgdGhlIGFwcHJvcHJpYXRlIF9jdXJsXypfb3B0aW9uIG1hY3JvCiAgKi8KLSNkZWZpbmUgY3VybF9lYXN5X3NldG9wdChoYW5kbGUsIG9wdGlvbiwgdmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLV9fZXh0ZW5zaW9uX18gKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgX190eXBlb2ZfXyhvcHRpb24pIF9jdXJsX29wdCA9IG9wdGlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpZihfX2J1aWx0aW5fY29uc3RhbnRfcChfY3VybF9vcHQpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKF9jdXJsX2lzX2xvbmdfb3B0aW9uKF9jdXJsX29wdCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX2xvbmcodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfbG9uZygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKF9jdXJsX2lzX29mZl90X29wdGlvbihfY3VybF9vcHQpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX29mZl90KHZhbHVlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfY3VybF9vZmZfdCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKF9jdXJsX2lzX3N0cmluZ19vcHRpb24oX2N1cmxfb3B0KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX3N0cmluZyh2YWx1ZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfc3RyaW5nKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKF9jdXJsX2lzX3dyaXRlX2NiX29wdGlvbihfY3VybF9vcHQpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX3dyaXRlX2NiKHZhbHVlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfd3JpdGVfY2FsbGJhY2soKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfUkVTT0xWRVJfU1RBUlRfRlVOQ1RJT04pICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX3Jlc29sdmVyX3N0YXJ0X2NhbGxiYWNrKHZhbHVlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfcmVzb2x2ZXJfc3RhcnRfY2FsbGJhY2soKTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfUkVBREZVTkNUSU9OKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX3JlYWRfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfcmVhZF9jYigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfSU9DVExGVU5DVElPTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX2lvY3RsX2NiKHZhbHVlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfaW9jdGxfY2IoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfU09DS09QVEZVTkNUSU9OKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX3NvY2tvcHRfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfc29ja29wdF9jYigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfT1BFTlNPQ0tFVEZVTkNUSU9OKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX29wZW5zb2NrZXRfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfb3BlbnNvY2tldF9jYigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX3Byb2dyZXNzX2NiKHZhbHVlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfcHJvZ3Jlc3NfY2IoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfREVCVUdGVU5DVElPTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX2RlYnVnX2NiKHZhbHVlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfZGVidWdfY2IoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX3NzbF9jdHhfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfc3NsX2N0eF9jYigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKF9jdXJsX2lzX2NvbnZfY2Jfb3B0aW9uKF9jdXJsX29wdCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX2NvbnZfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfY29udl9jYigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfU0VFS0ZVTkNUSU9OKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX3NlZWtfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfc2Vla19jYigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKF9jdXJsX2lzX2NiX2RhdGFfb3B0aW9uKF9jdXJsX29wdCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX2NiX2RhdGEodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfY2JfZGF0YSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfRVJST1JCVUZGRVIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX2Vycm9yX2J1ZmZlcih2YWx1ZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfZXJyb3JfYnVmZmVyKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfU1RERVJSKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX0ZJTEUodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfRklMRSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKF9jdXJsX2lzX3Bvc3RmaWVsZHNfb3B0aW9uKF9jdXJsX29wdCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX3Bvc3RmaWVsZHModmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfcG9zdGZpZWxkcygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfSFRUUFBPU1QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX2FycigodmFsdWUpLCBzdHJ1Y3QgY3VybF9odHRwcG9zdCkpICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfY3VybF9odHRwb3N0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfTUlNRVBPU1QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX3B0cigodmFsdWUpLCBjdXJsX21pbWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfY3VybF9taW1lcG9zdCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKF9jdXJsX2lzX3NsaXN0X29wdGlvbihfY3VybF9vcHQpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX2FycigodmFsdWUpLCBzdHJ1Y3QgY3VybF9zbGlzdCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfY3VybF9zbGlzdCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKChfY3VybF9vcHQpID09IENVUkxPUFRfU0hBUkUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYoIV9jdXJsX2lzX3B0cigodmFsdWUpLCBDVVJMU0gpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfY3VybF9lYXN5X3NldG9wdF9lcnJfQ1VSTFNIKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBjdXJsX2Vhc3lfc2V0b3B0KGhhbmRsZSwgX2N1cmxfb3B0LCB2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSkKKyNkZWZpbmUgY3VybF9lYXN5X3NldG9wdChoYW5kbGUsIG9wdGlvbiwgdmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgX19leHRlbnNpb25fXyh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIF9fdHlwZW9mX18ob3B0aW9uKSBfY3VybF9vcHQgPSBvcHRpb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmKF9fYnVpbHRpbl9jb25zdGFudF9wKF9jdXJsX29wdCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoY3VybGNoZWNrX2xvbmdfb3B0aW9uKF9jdXJsX29wdCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX2xvbmcodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9sb25nKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoY3VybGNoZWNrX29mZl90X29wdGlvbihfY3VybF9vcHQpKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX29mZl90KHZhbHVlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9jdXJsX29mZl90KCk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoY3VybGNoZWNrX3N0cmluZ19vcHRpb24oX2N1cmxfb3B0KSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX3N0cmluZyh2YWx1ZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9zdHJpbmcoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoY3VybGNoZWNrX3dyaXRlX2NiX29wdGlvbihfY3VybF9vcHQpKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX3dyaXRlX2NiKHZhbHVlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl93cml0ZV9jYWxsYmFjaygpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9SRVNPTFZFUl9TVEFSVF9GVU5DVElPTikgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX3Jlc29sdmVyX3N0YXJ0X2NhbGxiYWNrKHZhbHVlKSkgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9yZXNvbHZlcl9zdGFydF9jYWxsYmFjaygpOyAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9SRUFERlVOQ1RJT04pICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX3JlYWRfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9yZWFkX2NiKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9JT0NUTEZVTkNUSU9OKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX2lvY3RsX2NiKHZhbHVlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9pb2N0bF9jYigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9TT0NLT1BURlVOQ1RJT04pICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX3NvY2tvcHRfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9zb2Nrb3B0X2NiKCk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04pICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX29wZW5zb2NrZXRfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9vcGVuc29ja2V0X2NiKCk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX3Byb2dyZXNzX2NiKHZhbHVlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9wcm9ncmVzc19jYigpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX2RlYnVnX2NiKHZhbHVlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9kZWJ1Z19jYigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX3NzbF9jdHhfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9zc2xfY3R4X2NiKCk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoY3VybGNoZWNrX2NvbnZfY2Jfb3B0aW9uKF9jdXJsX29wdCkpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX2NvbnZfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9jb252X2NiKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9TRUVLRlVOQ1RJT04pICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX3NlZWtfY2IodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9zZWVrX2NiKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoY3VybGNoZWNrX2NiX2RhdGFfb3B0aW9uKF9jdXJsX29wdCkpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX2NiX2RhdGEodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9jYl9kYXRhKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9FUlJPUkJVRkZFUikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX2Vycm9yX2J1ZmZlcih2YWx1ZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9lcnJvcl9idWZmZXIoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9TVERFUlIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX0ZJTEUodmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9GSUxFKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoY3VybGNoZWNrX3Bvc3RmaWVsZHNfb3B0aW9uKF9jdXJsX29wdCkpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX3Bvc3RmaWVsZHModmFsdWUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9wb3N0ZmllbGRzKCk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9IVFRQUE9TVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX2FycigodmFsdWUpLCBzdHJ1Y3QgY3VybF9odHRwcG9zdCkpICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9jdXJsX2h0dHBvc3QoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9NSU1FUE9TVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX3B0cigodmFsdWUpLCBjdXJsX21pbWUpKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9jdXJsX21pbWVwb3N0KCk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoY3VybGNoZWNrX3NsaXN0X29wdGlvbihfY3VybF9vcHQpKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX2FycigodmFsdWUpLCBzdHJ1Y3QgY3VybF9zbGlzdCkpICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9jdXJsX3NsaXN0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYoKF9jdXJsX29wdCkgPT0gQ1VSTE9QVF9TSEFSRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZighY3VybGNoZWNrX3B0cigodmFsdWUpLCBDVVJMU0gpKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9DVVJMU0goKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGN1cmxfZWFzeV9zZXRvcHQoaGFuZGxlLCBfY3VybF9vcHQsIHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9KQogCiAvKiB3cmFwcyBjdXJsX2Vhc3lfZ2V0aW5mbygpIHdpdGggdHlwZWNoZWNraW5nICovCi0jZGVmaW5lIGN1cmxfZWFzeV9nZXRpbmZvKGhhbmRsZSwgaW5mbywgYXJnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1fX2V4dGVuc2lvbl9fICh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIF9fdHlwZW9mX18oaW5mbykgX2N1cmxfaW5mbyA9IGluZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmKF9fYnVpbHRpbl9jb25zdGFudF9wKF9jdXJsX2luZm8pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYoX2N1cmxfaXNfc3RyaW5nX2luZm8oX2N1cmxfaW5mbykpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBpZighX2N1cmxfaXNfYXJyKChhcmcpLCBjaGFyICopKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfc3RyaW5nKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYoX2N1cmxfaXNfbG9uZ19pbmZvKF9jdXJsX2luZm8pKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBpZighX2N1cmxfaXNfYXJyKChhcmcpLCBsb25nKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfbG9uZygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYoX2N1cmxfaXNfZG91YmxlX2luZm8oX2N1cmxfaW5mbykpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBpZighX2N1cmxfaXNfYXJyKChhcmcpLCBkb3VibGUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfZG91YmxlKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYoX2N1cmxfaXNfc2xpc3RfaW5mbyhfY3VybF9pbmZvKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBpZighX2N1cmxfaXNfYXJyKChhcmcpLCBzdHJ1Y3QgY3VybF9zbGlzdCAqKSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfY3VybF9zbGlzdCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYoX2N1cmxfaXNfdGxzc2Vzc2lvbmluZm9faW5mbyhfY3VybF9pbmZvKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBpZighX2N1cmxfaXNfYXJyKChhcmcpLCBzdHJ1Y3QgY3VybF90bHNzZXNzaW9uaW5mbyAqKSkgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfY3VybF90bHNzZXNzc2lvbmluZm8oKTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYoX2N1cmxfaXNfY2VydGluZm9faW5mbyhfY3VybF9pbmZvKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBpZighX2N1cmxfaXNfYXJyKChhcmcpLCBzdHJ1Y3QgY3VybF9jZXJ0aW5mbyAqKSkgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfY3VybF9jZXJ0aW5mbygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYoX2N1cmxfaXNfc29ja2V0X2luZm8oX2N1cmxfaW5mbykpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBpZighX2N1cmxfaXNfYXJyKChhcmcpLCBjdXJsX3NvY2tldF90KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfY3VybF9zb2NrZXQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYoX2N1cmxfaXNfb2ZmX3RfaW5mbyhfY3VybF9pbmZvKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBpZighX2N1cmxfaXNfYXJyKChhcmcpLCBjdXJsX29mZl90KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfY3VybF9vZmZfdCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGN1cmxfZWFzeV9nZXRpbmZvKGhhbmRsZSwgX2N1cmxfaW5mbywgYXJnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19KQorI2RlZmluZSBjdXJsX2Vhc3lfZ2V0aW5mbyhoYW5kbGUsIGluZm8sIGFyZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBfX2V4dGVuc2lvbl9fKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBfX3R5cGVvZl9fKGluZm8pIF9jdXJsX2luZm8gPSBpbmZvOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpZihfX2J1aWx0aW5fY29uc3RhbnRfcChfY3VybF9pbmZvKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmKGN1cmxjaGVja19zdHJpbmdfaW5mbyhfY3VybF9pbmZvKSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaWYoIWN1cmxjaGVja19hcnIoKGFyZyksIGNoYXIgKikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfY3VybF9lYXN5X2dldGluZm9fZXJyX3N0cmluZygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmKGN1cmxjaGVja19sb25nX2luZm8oX2N1cmxfaW5mbykpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaWYoIWN1cmxjaGVja19hcnIoKGFyZyksIGxvbmcpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfY3VybF9lYXN5X2dldGluZm9fZXJyX2xvbmcoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmKGN1cmxjaGVja19kb3VibGVfaW5mbyhfY3VybF9pbmZvKSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaWYoIWN1cmxjaGVja19hcnIoKGFyZyksIGRvdWJsZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfY3VybF9lYXN5X2dldGluZm9fZXJyX2RvdWJsZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmKGN1cmxjaGVja19zbGlzdF9pbmZvKF9jdXJsX2luZm8pKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaWYoIWN1cmxjaGVja19hcnIoKGFyZyksIHN0cnVjdCBjdXJsX3NsaXN0ICopKSAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfY3VybF9lYXN5X2dldGluZm9fZXJyX2N1cmxfc2xpc3QoKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmKGN1cmxjaGVja190bHNzZXNzaW9uaW5mb19pbmZvKF9jdXJsX2luZm8pKSAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaWYoIWN1cmxjaGVja19hcnIoKGFyZyksIHN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvICopKSAgICAgICBcCisgICAgICAgICAgICBfY3VybF9lYXN5X2dldGluZm9fZXJyX2N1cmxfdGxzc2Vzc3Npb25pbmZvKCk7ICAgICAgICAgICAgICBcCisgICAgICAgIGlmKGN1cmxjaGVja19jZXJ0aW5mb19pbmZvKF9jdXJsX2luZm8pKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaWYoIWN1cmxjaGVja19hcnIoKGFyZyksIHN0cnVjdCBjdXJsX2NlcnRpbmZvICopKSAgICAgICAgICAgICBcCisgICAgICAgICAgICBfY3VybF9lYXN5X2dldGluZm9fZXJyX2N1cmxfY2VydGluZm8oKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmKGN1cmxjaGVja19zb2NrZXRfaW5mbyhfY3VybF9pbmZvKSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaWYoIWN1cmxjaGVja19hcnIoKGFyZyksIGN1cmxfc29ja2V0X3QpKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfY3VybF9lYXN5X2dldGluZm9fZXJyX2N1cmxfc29ja2V0KCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmKGN1cmxjaGVja19vZmZfdF9pbmZvKF9jdXJsX2luZm8pKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgaWYoIWN1cmxjaGVja19hcnIoKGFyZyksIGN1cmxfb2ZmX3QpKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfY3VybF9lYXN5X2dldGluZm9fZXJyX2N1cmxfb2ZmX3QoKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhoYW5kbGUsIF9jdXJsX2luZm8sIGFyZyk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSkKIAogLyoKICAqIEZvciBub3csIGp1c3QgbWFrZSBzdXJlIHRoYXQgdGhlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHdpdGggdGhyZWUgYXJndW1lbnRzCkBAIC0xNTYsODMgKzE1Niw4MyBAQAogICogZnVuY3Rpb25zICovCiAKIC8qIFRvIGRlZmluZSBhIG5ldyB3YXJuaW5nLCB1c2UgX0NVUkxfV0FSTklORyhpZGVudGlmaWVyLCAibWVzc2FnZSIpICovCi0jZGVmaW5lIF9DVVJMX1dBUk5JTkcoaWQsIG1lc3NhZ2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKF9fd2FybmluZ19fKG1lc3NhZ2UpKSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKSAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIENVUkxXQVJOSU5HKGlkLCBtZXNzYWdlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKF9fd2FybmluZ19fKG1lc3NhZ2UpKSkgICAgICAgICAgICAgICAgICAgICBcCisgIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKSAgICAgICAgICAgICBcCiAgIGlkKHZvaWQpIHsgX19hc21fXygiIik7IH0KIAotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfbG9uZywKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9sb25nLAogICAiY3VybF9lYXN5X3NldG9wdCBleHBlY3RzIGEgbG9uZyBhcmd1bWVudCBmb3IgdGhpcyBvcHRpb24iKQotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfY3VybF9vZmZfdCwKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9jdXJsX29mZl90LAogICAiY3VybF9lYXN5X3NldG9wdCBleHBlY3RzIGEgY3VybF9vZmZfdCBhcmd1bWVudCBmb3IgdGhpcyBvcHRpb24iKQotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfc3RyaW5nLAorQ1VSTFdBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX3N0cmluZywKICAgICAgICAgICAgICAgImN1cmxfZWFzeV9zZXRvcHQgZXhwZWN0cyBhICIKICAgICAgICAgICAgICAgInN0cmluZyAoJ2NoYXIgKicgb3IgY2hhcltdKSBhcmd1bWVudCBmb3IgdGhpcyBvcHRpb24iCiAgICkKLV9DVVJMX1dBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX3dyaXRlX2NhbGxiYWNrLAorQ1VSTFdBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX3dyaXRlX2NhbGxiYWNrLAogICAiY3VybF9lYXN5X3NldG9wdCBleHBlY3RzIGEgY3VybF93cml0ZV9jYWxsYmFjayBhcmd1bWVudCBmb3IgdGhpcyBvcHRpb24iKQotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfcmVzb2x2ZXJfc3RhcnRfY2FsbGJhY2ssCitDVVJMV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfcmVzb2x2ZXJfc3RhcnRfY2FsbGJhY2ssCiAgICAgICAgICAgICAgICJjdXJsX2Vhc3lfc2V0b3B0IGV4cGVjdHMgYSAiCiAgICAgICAgICAgICAgICJjdXJsX3Jlc29sdmVyX3N0YXJ0X2NhbGxiYWNrIGFyZ3VtZW50IGZvciB0aGlzIG9wdGlvbiIKICAgKQotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfcmVhZF9jYiwKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9yZWFkX2NiLAogICAiY3VybF9lYXN5X3NldG9wdCBleHBlY3RzIGEgY3VybF9yZWFkX2NhbGxiYWNrIGFyZ3VtZW50IGZvciB0aGlzIG9wdGlvbiIpCi1fQ1VSTF9XQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9pb2N0bF9jYiwKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9pb2N0bF9jYiwKICAgImN1cmxfZWFzeV9zZXRvcHQgZXhwZWN0cyBhIGN1cmxfaW9jdGxfY2FsbGJhY2sgYXJndW1lbnQgZm9yIHRoaXMgb3B0aW9uIikKLV9DVVJMX1dBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX3NvY2tvcHRfY2IsCitDVVJMV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfc29ja29wdF9jYiwKICAgImN1cmxfZWFzeV9zZXRvcHQgZXhwZWN0cyBhIGN1cmxfc29ja29wdF9jYWxsYmFjayBhcmd1bWVudCBmb3IgdGhpcyBvcHRpb24iKQotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfb3BlbnNvY2tldF9jYiwKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9vcGVuc29ja2V0X2NiLAogICAgICAgICAgICAgICAiY3VybF9lYXN5X3NldG9wdCBleHBlY3RzIGEgIgogICAgICAgICAgICAgICAiY3VybF9vcGVuc29ja2V0X2NhbGxiYWNrIGFyZ3VtZW50IGZvciB0aGlzIG9wdGlvbiIKICAgKQotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfcHJvZ3Jlc3NfY2IsCitDVVJMV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfcHJvZ3Jlc3NfY2IsCiAgICJjdXJsX2Vhc3lfc2V0b3B0IGV4cGVjdHMgYSBjdXJsX3Byb2dyZXNzX2NhbGxiYWNrIGFyZ3VtZW50IGZvciB0aGlzIG9wdGlvbiIpCi1fQ1VSTF9XQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9kZWJ1Z19jYiwKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9kZWJ1Z19jYiwKICAgImN1cmxfZWFzeV9zZXRvcHQgZXhwZWN0cyBhIGN1cmxfZGVidWdfY2FsbGJhY2sgYXJndW1lbnQgZm9yIHRoaXMgb3B0aW9uIikKLV9DVVJMX1dBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX3NzbF9jdHhfY2IsCitDVVJMV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfc3NsX2N0eF9jYiwKICAgImN1cmxfZWFzeV9zZXRvcHQgZXhwZWN0cyBhIGN1cmxfc3NsX2N0eF9jYWxsYmFjayBhcmd1bWVudCBmb3IgdGhpcyBvcHRpb24iKQotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfY29udl9jYiwKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9jb252X2NiLAogICAiY3VybF9lYXN5X3NldG9wdCBleHBlY3RzIGEgY3VybF9jb252X2NhbGxiYWNrIGFyZ3VtZW50IGZvciB0aGlzIG9wdGlvbiIpCi1fQ1VSTF9XQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9zZWVrX2NiLAorQ1VSTFdBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX3NlZWtfY2IsCiAgICJjdXJsX2Vhc3lfc2V0b3B0IGV4cGVjdHMgYSBjdXJsX3NlZWtfY2FsbGJhY2sgYXJndW1lbnQgZm9yIHRoaXMgb3B0aW9uIikKLV9DVVJMX1dBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX2NiX2RhdGEsCitDVVJMV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfY2JfZGF0YSwKICAgICAgICAgICAgICAgImN1cmxfZWFzeV9zZXRvcHQgZXhwZWN0cyBhICIKICAgICAgICAgICAgICAgInByaXZhdGUgZGF0YSBwb2ludGVyIGFzIGFyZ3VtZW50IGZvciB0aGlzIG9wdGlvbiIpCi1fQ1VSTF9XQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9lcnJvcl9idWZmZXIsCitDVVJMV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfZXJyb3JfYnVmZmVyLAogICAgICAgICAgICAgICAiY3VybF9lYXN5X3NldG9wdCBleHBlY3RzIGEgIgogICAgICAgICAgICAgICAiY2hhciBidWZmZXIgb2YgQ1VSTF9FUlJPUl9TSVpFIGFzIGFyZ3VtZW50IGZvciB0aGlzIG9wdGlvbiIpCi1fQ1VSTF9XQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9GSUxFLAorQ1VSTFdBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX0ZJTEUsCiAgICJjdXJsX2Vhc3lfc2V0b3B0IGV4cGVjdHMgYSAnRklMRSAqJyBhcmd1bWVudCBmb3IgdGhpcyBvcHRpb24iKQotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfcG9zdGZpZWxkcywKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9wb3N0ZmllbGRzLAogICAiY3VybF9lYXN5X3NldG9wdCBleHBlY3RzIGEgJ3ZvaWQgKicgb3IgJ2NoYXIgKicgYXJndW1lbnQgZm9yIHRoaXMgb3B0aW9uIikKLV9DVVJMX1dBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX2N1cmxfaHR0cG9zdCwKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfc2V0b3B0X2Vycl9jdXJsX2h0dHBvc3QsCiAgICAgICAgICAgICAgICJjdXJsX2Vhc3lfc2V0b3B0IGV4cGVjdHMgYSAnc3RydWN0IGN1cmxfaHR0cHBvc3QgKicgIgogICAgICAgICAgICAgICAiYXJndW1lbnQgZm9yIHRoaXMgb3B0aW9uIikKLV9DVVJMX1dBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX2N1cmxfbWltZXBvc3QsCitDVVJMV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfY3VybF9taW1lcG9zdCwKICAgICAgICAgICAgICAgImN1cmxfZWFzeV9zZXRvcHQgZXhwZWN0cyBhICdjdXJsX21pbWUgKicgIgogICAgICAgICAgICAgICAiYXJndW1lbnQgZm9yIHRoaXMgb3B0aW9uIikKLV9DVVJMX1dBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX2N1cmxfc2xpc3QsCitDVVJMV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfY3VybF9zbGlzdCwKICAgImN1cmxfZWFzeV9zZXRvcHQgZXhwZWN0cyBhICdzdHJ1Y3QgY3VybF9zbGlzdCAqJyBhcmd1bWVudCBmb3IgdGhpcyBvcHRpb24iKQotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X3NldG9wdF9lcnJfQ1VSTFNILAorQ1VSTFdBUk5JTkcoX2N1cmxfZWFzeV9zZXRvcHRfZXJyX0NVUkxTSCwKICAgImN1cmxfZWFzeV9zZXRvcHQgZXhwZWN0cyBhIENVUkxTSCogYXJndW1lbnQgZm9yIHRoaXMgb3B0aW9uIikKIAotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X2dldGluZm9fZXJyX3N0cmluZywKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfc3RyaW5nLAogICAiY3VybF9lYXN5X2dldGluZm8gZXhwZWN0cyBhIHBvaW50ZXIgdG8gJ2NoYXIgKicgZm9yIHRoaXMgaW5mbyIpCi1fQ1VSTF9XQVJOSU5HKF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfbG9uZywKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfbG9uZywKICAgImN1cmxfZWFzeV9nZXRpbmZvIGV4cGVjdHMgYSBwb2ludGVyIHRvIGxvbmcgZm9yIHRoaXMgaW5mbyIpCi1fQ1VSTF9XQVJOSU5HKF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfZG91YmxlLAorQ1VSTFdBUk5JTkcoX2N1cmxfZWFzeV9nZXRpbmZvX2Vycl9kb3VibGUsCiAgICJjdXJsX2Vhc3lfZ2V0aW5mbyBleHBlY3RzIGEgcG9pbnRlciB0byBkb3VibGUgZm9yIHRoaXMgaW5mbyIpCi1fQ1VSTF9XQVJOSU5HKF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfY3VybF9zbGlzdCwKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfY3VybF9zbGlzdCwKICAgImN1cmxfZWFzeV9nZXRpbmZvIGV4cGVjdHMgYSBwb2ludGVyIHRvICdzdHJ1Y3QgY3VybF9zbGlzdCAqJyBmb3IgdGhpcyBpbmZvIikKLV9DVVJMX1dBUk5JTkcoX2N1cmxfZWFzeV9nZXRpbmZvX2Vycl9jdXJsX3Rsc3Nlc3NzaW9uaW5mbywKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfY3VybF90bHNzZXNzc2lvbmluZm8sCiAgICAgICAgICAgICAgICJjdXJsX2Vhc3lfZ2V0aW5mbyBleHBlY3RzIGEgcG9pbnRlciB0byAiCiAgICAgICAgICAgICAgICInc3RydWN0IGN1cmxfdGxzc2Vzc2lvbmluZm8gKicgZm9yIHRoaXMgaW5mbyIpCi1fQ1VSTF9XQVJOSU5HKF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfY3VybF9jZXJ0aW5mbywKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfY3VybF9jZXJ0aW5mbywKICAgICAgICAgICAgICAgImN1cmxfZWFzeV9nZXRpbmZvIGV4cGVjdHMgYSBwb2ludGVyIHRvICIKICAgICAgICAgICAgICAgIidzdHJ1Y3QgY3VybF9jZXJ0aW5mbyAqJyBmb3IgdGhpcyBpbmZvIikKLV9DVVJMX1dBUk5JTkcoX2N1cmxfZWFzeV9nZXRpbmZvX2Vycl9jdXJsX3NvY2tldCwKK0NVUkxXQVJOSU5HKF9jdXJsX2Vhc3lfZ2V0aW5mb19lcnJfY3VybF9zb2NrZXQsCiAgICJjdXJsX2Vhc3lfZ2V0aW5mbyBleHBlY3RzIGEgcG9pbnRlciB0byBjdXJsX3NvY2tldF90IGZvciB0aGlzIGluZm8iKQotX0NVUkxfV0FSTklORyhfY3VybF9lYXN5X2dldGluZm9fZXJyX2N1cmxfb2ZmX3QsCitDVVJMV0FSTklORyhfY3VybF9lYXN5X2dldGluZm9fZXJyX2N1cmxfb2ZmX3QsCiAgICJjdXJsX2Vhc3lfZ2V0aW5mbyBleHBlY3RzIGEgcG9pbnRlciB0byBjdXJsX29mZl90IGZvciB0aGlzIGluZm8iKQogCiAvKiBncm91cHMgb2YgY3VybF9lYXN5X3NldG9wcyBvcHRpb25zIHRoYXQgdGFrZSB0aGUgc2FtZSB0eXBlIG9mIGFyZ3VtZW50ICovCkBAIC0yNDQsMTQgKzI0NCwxNCBAQAogICovCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIG9wdGlvbiB0YWtlcyBhIGxvbmcgYXJndW1lbnQgKi8KLSNkZWZpbmUgX2N1cmxfaXNfbG9uZ19vcHRpb24ob3B0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX2xvbmdfb3B0aW9uKG9wdGlvbikgICAgICAgICAgICAgICAgICAgXAogICAoMCA8IChvcHRpb24pICYmIChvcHRpb24pIDwgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQpCiAKLSNkZWZpbmUgX2N1cmxfaXNfb2ZmX3Rfb3B0aW9uKG9wdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX29mZl90X29wdGlvbihvcHRpb24pICAgICAgICAgIFwKICAgKChvcHRpb24pID4gQ1VSTE9QVFRZUEVfT0ZGX1QpCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIG9wdGlvbiB0YWtlcyBhIGNoYXIqIGFyZ3VtZW50ICovCi0jZGVmaW5lIF9jdXJsX2lzX3N0cmluZ19vcHRpb24ob3B0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIGN1cmxjaGVja19zdHJpbmdfb3B0aW9uKG9wdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICgob3B0aW9uKSA9PSBDVVJMT1BUX0FCU1RSQUNUX1VOSVhfU09DS0VUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX0FDQ0VQVF9FTkNPRElORyB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX0FMVFNWQyB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0zMDAsMTUgKzMwMCwxOCBAQAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWV9TU0xLRVkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWV9TU0xLRVlUWVBFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWV9TU0xfQ0lQSEVSX0xJU1QgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWV9UTFMxM19DSVBIRVJTIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWV9UTFNBVVRIX1BBU1NXT1JEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWV9UTFNBVVRIX1VTRVJOQU1FIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWV9UTFNBVVRIX1RZUEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9QUk9YWV9UTFNBVVRIX1VTRVJOQU1FIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SQU5ET01fRklMRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SQU5HRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SRUZFUkVSIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SRVFVRVNUX1RBUkdFVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TQVNMX0FVVEhaSUQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TRVJWSUNFX05BTUUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0hfSE9TVF9QVUJMSUNfS0VZX01ENSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMzIxLDYgKzMyNCw3IEBACiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1NTTEtFWSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1NTTEtFWVRZUEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1NTTF9DSVBIRVJfTElTVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAob3B0aW9uKSA9PSBDVVJMT1BUX1RMUzEzX0NJUEhFUlMgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1RMU0FVVEhfUEFTU1dPUkQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1RMU0FVVEhfVFlQRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1RMU0FVVEhfVVNFUk5BTUUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0zMzMsMTggKzMzNywxOCBAQAogICAgMCkKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgb3B0aW9uIHRha2VzIGEgY3VybF93cml0ZV9jYWxsYmFjayBhcmd1bWVudCAqLwotI2RlZmluZSBfY3VybF9pc193cml0ZV9jYl9vcHRpb24ob3B0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoKG9wdGlvbikgPT0gQ1VSTE9QVF9IRUFERVJGVU5DVElPTiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBjdXJsY2hlY2tfd3JpdGVfY2Jfb3B0aW9uKG9wdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoKG9wdGlvbikgPT0gQ1VSTE9QVF9IRUFERVJGVU5DVElPTiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9XUklURUZVTkNUSU9OKQogCiAvKiBldmFsdWF0ZXMgdG8gdHJ1ZSBpZiBvcHRpb24gdGFrZXMgYSBjdXJsX2NvbnZfY2FsbGJhY2sgYXJndW1lbnQgKi8KLSNkZWZpbmUgX2N1cmxfaXNfY29udl9jYl9vcHRpb24ob3B0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChvcHRpb24pID09IENVUkxPUFRfQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04gfHwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX2NvbnZfY2Jfb3B0aW9uKG9wdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKChvcHRpb24pID09IENVUkxPUFRfQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OIHx8ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04gfHwgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04pCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIG9wdGlvbiB0YWtlcyBhIGRhdGEgYXJndW1lbnQgdG8gcGFzcyB0byBhIGNhbGxiYWNrICovCi0jZGVmaW5lIF9jdXJsX2lzX2NiX2RhdGFfb3B0aW9uKG9wdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIGN1cmxjaGVja19jYl9kYXRhX29wdGlvbihvcHRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICgob3B0aW9uKSA9PSBDVVJMT1BUX0NIVU5LX0RBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX0NMT1NFU09DS0VUREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX0RFQlVHREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0zNjIsMTcgKzM2NiwxNyBAQAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9TU0xfQ1RYX0RBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9XUklURURBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9SRVNPTFZFUl9TVEFSVF9EQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9DVVJMVSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgKG9wdGlvbikgPT0gQ1VSTE9QVF9UUkFJTEVSREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgMCkKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgb3B0aW9uIHRha2VzIGEgUE9TVCBkYXRhIGFyZ3VtZW50ICh2b2lkKiBvciBjaGFyKikgKi8KLSNkZWZpbmUgX2N1cmxfaXNfcG9zdGZpZWxkc19vcHRpb24ob3B0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX3Bvc3RmaWVsZHNfb3B0aW9uKG9wdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKChvcHRpb24pID09IENVUkxPUFRfUE9TVEZJRUxEUyB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfQ09QWVBPU1RGSUVMRFMgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIDApCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIG9wdGlvbiB0YWtlcyBhIHN0cnVjdCBjdXJsX3NsaXN0ICogYXJndW1lbnQgKi8KLSNkZWZpbmUgX2N1cmxfaXNfc2xpc3Rfb3B0aW9uKG9wdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX3NsaXN0X29wdGlvbihvcHRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKChvcHRpb24pID09IENVUkxPUFRfSFRUUDIwMEFMSUFTRVMgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfSFRUUEhFQURFUiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfTUFJTF9SQ1BUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTM4Miw0NSArMzg2LDQ2IEBACiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1FVT1RFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1JFU09MVkUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1RFTE5FVE9QVElPTlMgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAob3B0aW9uKSA9PSBDVVJMT1BUX0NPTk5FQ1RfVE8gfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAwKQogCiAvKiBncm91cHMgb2YgY3VybF9lYXN5X2dldGluZm8gaW5mb3MgdGhhdCB0YWtlIHRoZSBzYW1lIHR5cGUgb2YgYXJndW1lbnQgKi8KIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgaW5mbyBleHBlY3RzIGEgcG9pbnRlciB0byBjaGFyICogYXJndW1lbnQgKi8KLSNkZWZpbmUgX2N1cmxfaXNfc3RyaW5nX2luZm8oaW5mbykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX3N0cmluZ19pbmZvKGluZm8pICAgICAgICAgICAgICAgICAgICAgXAogICAoQ1VSTElORk9fU1RSSU5HIDwgKGluZm8pICYmIChpbmZvKSA8IENVUkxJTkZPX0xPTkcpCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIGluZm8gZXhwZWN0cyBhIHBvaW50ZXIgdG8gbG9uZyBhcmd1bWVudCAqLwotI2RlZmluZSBfY3VybF9pc19sb25nX2luZm8oaW5mbykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBjdXJsY2hlY2tfbG9uZ19pbmZvKGluZm8pICAgICAgICAgICAgICAgICAgICAgICBcCiAgIChDVVJMSU5GT19MT05HIDwgKGluZm8pICYmIChpbmZvKSA8IENVUkxJTkZPX0RPVUJMRSkKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgaW5mbyBleHBlY3RzIGEgcG9pbnRlciB0byBkb3VibGUgYXJndW1lbnQgKi8KLSNkZWZpbmUgX2N1cmxfaXNfZG91YmxlX2luZm8oaW5mbykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX2RvdWJsZV9pbmZvKGluZm8pICAgICAgICAgICAgICAgICAgICAgXAogICAoQ1VSTElORk9fRE9VQkxFIDwgKGluZm8pICYmIChpbmZvKSA8IENVUkxJTkZPX1NMSVNUKQogCiAvKiB0cnVlIGlmIGluZm8gZXhwZWN0cyBhIHBvaW50ZXIgdG8gc3RydWN0IGN1cmxfc2xpc3QgKiBhcmd1bWVudCAqLwotI2RlZmluZSBfY3VybF9pc19zbGlzdF9pbmZvKGluZm8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBjdXJsY2hlY2tfc2xpc3RfaW5mbyhpbmZvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAoKChpbmZvKSA9PSBDVVJMSU5GT19TU0xfRU5HSU5FUykgfHwgKChpbmZvKSA9PSBDVVJMSU5GT19DT09LSUVMSVNUKSkKIAogLyogdHJ1ZSBpZiBpbmZvIGV4cGVjdHMgYSBwb2ludGVyIHRvIHN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvICogYXJndW1lbnQgKi8KLSNkZWZpbmUgX2N1cmxfaXNfdGxzc2Vzc2lvbmluZm9faW5mbyhpbmZvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX3Rsc3Nlc3Npb25pbmZvX2luZm8oaW5mbykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICgoKGluZm8pID09IENVUkxJTkZPX1RMU19TU0xfUFRSKSB8fCAoKGluZm8pID09IENVUkxJTkZPX1RMU19TRVNTSU9OKSkKIAogLyogdHJ1ZSBpZiBpbmZvIGV4cGVjdHMgYSBwb2ludGVyIHRvIHN0cnVjdCBjdXJsX2NlcnRpbmZvICogYXJndW1lbnQgKi8KLSNkZWZpbmUgX2N1cmxfaXNfY2VydGluZm9faW5mbyhpbmZvKSAoKGluZm8pID09IENVUkxJTkZPX0NFUlRJTkZPKQorI2RlZmluZSBjdXJsY2hlY2tfY2VydGluZm9faW5mbyhpbmZvKSAoKGluZm8pID09IENVUkxJTkZPX0NFUlRJTkZPKQogCiAvKiB0cnVlIGlmIGluZm8gZXhwZWN0cyBhIHBvaW50ZXIgdG8gc3RydWN0IGN1cmxfc29ja2V0X3QgYXJndW1lbnQgKi8KLSNkZWZpbmUgX2N1cmxfaXNfc29ja2V0X2luZm8oaW5mbykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX3NvY2tldF9pbmZvKGluZm8pICAgICAgICAgICAgICAgICAgICAgXAogICAoQ1VSTElORk9fU09DS0VUIDwgKGluZm8pICYmIChpbmZvKSA8IENVUkxJTkZPX09GRl9UKQogCiAvKiB0cnVlIGlmIGluZm8gZXhwZWN0cyBhIHBvaW50ZXIgdG8gY3VybF9vZmZfdCBhcmd1bWVudCAqLwotI2RlZmluZSBfY3VybF9pc19vZmZfdF9pbmZvKGluZm8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBjdXJsY2hlY2tfb2ZmX3RfaW5mbyhpbmZvKSAgICAgICAgICAgICAgXAogICAoQ1VSTElORk9fT0ZGX1QgPCAoaW5mbykpCiAKIAogLyogdHlwZWNoZWNrIGhlbHBlcnMgLS0gY2hlY2sgd2hldGhlciBnaXZlbiBleHByZXNzaW9uIGhhcyByZXF1ZXN0ZWQgdHlwZSovCiAKLS8qIEZvciBwb2ludGVycywgeW91IGNhbiB1c2UgdGhlIF9jdXJsX2lzX3B0ci9fY3VybF9pc19hcnIgbWFjcm9zLAorLyogRm9yIHBvaW50ZXJzLCB5b3UgY2FuIHVzZSB0aGUgY3VybGNoZWNrX3B0ci9jdXJsY2hlY2tfYXJyIG1hY3JvcywKICAqIG90aGVyd2lzZSBkZWZpbmUgYSBuZXcgbWFjcm8uIFNlYXJjaCBmb3IgX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcAogICogaW4gdGhlIEdDQyBtYW51YWwuCiAgKiBOT1RFOiB0aGVzZSBtYWNyb3MgTVVTVCBOT1QgRVZBTFVBVEUgdGhlaXIgYXJndW1lbnRzISBUaGUgYXJndW1lbnQgaXMKQEAgLTQzMCwzNSArNDM1LDM1IEBACiAgKi8KIAogLyogWFhYOiBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiBleHByIGlzIGEgcG9pbnRlciAqLwotI2RlZmluZSBfY3VybF9pc19hbnlfcHRyKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBjdXJsY2hlY2tfYW55X3B0cihleHByKSAgICAgICAgICAgICAgICAgXAogICAoc2l6ZW9mKGV4cHIpID09IHNpemVvZih2b2lkICopKQogCiAvKiBldmFsdWF0ZXMgdG8gdHJ1ZSBpZiBleHByIGlzIE5VTEwgKi8KIC8qIFhYWDogbXVzdCBub3QgZXZhbHVhdGUgZXhwciwgc28gdGhpcyBjaGVjayBpcyBub3QgYWNjdXJhdGUgKi8KLSNkZWZpbmUgX2N1cmxfaXNfTlVMTChleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX05VTEwoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyhleHByKSwgX190eXBlb2ZfXyhOVUxMKSkpCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIGV4cHIgaXMgdHlwZSosIGNvbnN0IHR5cGUqIG9yIE5VTEwgKi8KLSNkZWZpbmUgX2N1cmxfaXNfcHRyKGV4cHIsIHR5cGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKF9jdXJsX2lzX05VTEwoZXhwcikgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyhleHByKSwgdHlwZSAqKSB8fCAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX3B0cihleHByLCB0eXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKGN1cmxjaGVja19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyhleHByKSwgdHlwZSAqKSB8fCAgICAgICAgICAgIFwKICAgIF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyhleHByKSwgY29uc3QgdHlwZSAqKSkKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgZXhwciBpcyBvbmUgb2YgdHlwZVtdLCB0eXBlKiwgTlVMTCBvciBjb25zdCB0eXBlKiAqLwotI2RlZmluZSBfY3VybF9pc19hcnIoZXhwciwgdHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoX2N1cmxfaXNfcHRyKChleHByKSwgdHlwZSkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBjdXJsY2hlY2tfYXJyKGV4cHIsIHR5cGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoY3VybGNoZWNrX3B0cigoZXhwciksIHR5cGUpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZl9fKGV4cHIpLCB0eXBlIFtdKSkKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgZXhwciBpcyBhIHN0cmluZyAqLwotI2RlZmluZSBfY3VybF9pc19zdHJpbmcoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoX2N1cmxfaXNfYXJyKChleHByKSwgY2hhcikgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfaXNfYXJyKChleHByKSwgc2lnbmVkIGNoYXIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfaXNfYXJyKChleHByKSwgdW5zaWduZWQgY2hhcikpCisjZGVmaW5lIGN1cmxjaGVja19zdHJpbmcoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIChjdXJsY2hlY2tfYXJyKChleHByKSwgY2hhcikgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfYXJyKChleHByKSwgc2lnbmVkIGNoYXIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfYXJyKChleHByKSwgdW5zaWduZWQgY2hhcikpCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIGV4cHIgaXMgYSBsb25nIChubyBtYXR0ZXIgdGhlIHNpZ25lZG5lc3MpCiAgKiBYWFg6IGZvciBub3csIGludCBpcyBhbHNvIGFjY2VwdGVkIChhbmQgdGhlcmVmb3JlIHNob3J0IGFuZCBjaGFyLCB3aGljaAogICogYXJlIHByb21vdGVkIHRvIGludCB3aGVuIHBhc3NlZCB0byBhIHZhcmlhZGljIGZ1bmN0aW9uKSAqLwotI2RlZmluZSBfY3VybF9pc19sb25nKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBjdXJsY2hlY2tfbG9uZyhleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAoX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZl9fKGV4cHIpLCBsb25nKSB8fCAgICAgICAgICAgICAgICAgICAgXAogICAgX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZl9fKGV4cHIpLCBzaWduZWQgbG9uZykgfHwgICAgICAgICAgICAgXAogICAgX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZl9fKGV4cHIpLCB1bnNpZ25lZCBsb25nKSB8fCAgICAgICAgICAgXApAQCAtNDczLDU5ICs0NzgsNTkgQEAKICAgIF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyhleHByKSwgdW5zaWduZWQgY2hhcikpCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIGV4cHIgaXMgb2YgdHlwZSBjdXJsX29mZl90ICovCi0jZGVmaW5lIF9jdXJsX2lzX29mZl90KGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIGN1cmxjaGVja19vZmZfdChleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAoX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZl9fKGV4cHIpLCBjdXJsX29mZl90KSkKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgZXhwciBpcyBhYnVmZmVyIHN1aXRhYmxlIGZvciBDVVJMT1BUX0VSUk9SQlVGRkVSICovCiAvKiBYWFg6IGFsc28gY2hlY2sgc2l6ZSBvZiBhbiBjaGFyW10gYXJyYXk/ICovCi0jZGVmaW5lIF9jdXJsX2lzX2Vycm9yX2J1ZmZlcihleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIChfY3VybF9pc19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICBfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKF9fdHlwZW9mX18oZXhwciksIGNoYXIgKikgfHwgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIGN1cmxjaGVja19lcnJvcl9idWZmZXIoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIChjdXJsY2hlY2tfTlVMTChleHByKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKF9fdHlwZW9mX18oZXhwciksIGNoYXIgKikgfHwgICAgICAgICAgICBcCiAgICBfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKF9fdHlwZW9mX18oZXhwciksIGNoYXJbXSkpCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIGV4cHIgaXMgb2YgdHlwZSAoY29uc3QpIHZvaWQqIG9yIChjb25zdCkgRklMRSogKi8KICNpZiAwCi0jZGVmaW5lIF9jdXJsX2lzX2NiX2RhdGEoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIChfY3VybF9pc19wdHIoKGV4cHIpLCB2b2lkKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9pc19wdHIoKGV4cHIpLCBGSUxFKSkKKyNkZWZpbmUgY3VybGNoZWNrX2NiX2RhdGEoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKGN1cmxjaGVja19wdHIoKGV4cHIpLCB2b2lkKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19wdHIoKGV4cHIpLCBGSUxFKSkKICNlbHNlIC8qIGJlIGxlc3Mgc3RyaWN0ICovCi0jZGVmaW5lIF9jdXJsX2lzX2NiX2RhdGEoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIF9jdXJsX2lzX2FueV9wdHIoZXhwcikKKyNkZWZpbmUgY3VybGNoZWNrX2NiX2RhdGEoZXhwcikgICAgICAgICAgICAgICAgIFwKKyAgY3VybGNoZWNrX2FueV9wdHIoZXhwcikKICNlbmRpZgogCiAvKiBldmFsdWF0ZXMgdG8gdHJ1ZSBpZiBleHByIGlzIG9mIHR5cGUgRklMRSogKi8KLSNkZWZpbmUgX2N1cmxfaXNfRklMRShleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKF9jdXJsX2lzX05VTEwoZXhwcikgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBjdXJsY2hlY2tfRklMRShleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoY3VybGNoZWNrX05VTEwoZXhwcikgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyhleHByKSwgRklMRSAqKSkpCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIGV4cHIgY2FuIGJlIHBhc3NlZCBhcyBQT1NUIGRhdGEgKHZvaWQqIG9yIGNoYXIqKSAqLwotI2RlZmluZSBfY3VybF9pc19wb3N0ZmllbGRzKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoX2N1cmxfaXNfcHRyKChleHByKSwgdm9pZCkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfaXNfYXJyKChleHByKSwgY2hhcikgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfaXNfYXJyKChleHByKSwgdW5zaWduZWQgY2hhcikpCisjZGVmaW5lIGN1cmxjaGVja19wb3N0ZmllbGRzKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIChjdXJsY2hlY2tfcHRyKChleHByKSwgdm9pZCkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfYXJyKChleHByKSwgY2hhcikgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfYXJyKChleHByKSwgdW5zaWduZWQgY2hhcikpCiAKIC8qIGhlbHBlcjogX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZnVuY3Rpb25zIGFuZAogICogZnVuY3Rpb24gcG9pbnRlcnMsIGhpZGUgaXQgKi8KLSNkZWZpbmUgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZShmdW5jLCB0eXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyhmdW5jKSwgdHlwZSkgfHwgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY3VybGNoZWNrX2NiX2NvbXBhdGlibGUoZnVuYywgdHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyhmdW5jKSwgdHlwZSkgfHwgICAgICAgICAgICAgIFwKICAgIF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyhmdW5jKSAqLCB0eXBlKSkKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgZXhwciBpcyBvZiB0eXBlIGN1cmxfcmVzb2x2ZXJfc3RhcnRfY2FsbGJhY2sgKi8KLSNkZWZpbmUgX2N1cmxfaXNfcmVzb2x2ZXJfc3RhcnRfY2FsbGJhY2soZXhwcikgICAgICAgXAotICAoX2N1cmxfaXNfTlVMTChleHByKSB8fCBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgY3VybF9yZXNvbHZlcl9zdGFydF9jYWxsYmFjaykpCisjZGVmaW5lIGN1cmxjaGVja19yZXNvbHZlcl9zdGFydF9jYWxsYmFjayhleHByKSAgICAgICBcCisgIChjdXJsY2hlY2tfTlVMTChleHByKSB8fCBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIGN1cmxfcmVzb2x2ZXJfc3RhcnRfY2FsbGJhY2spKQogCiAvKiBldmFsdWF0ZXMgdG8gdHJ1ZSBpZiBleHByIGlzIG9mIHR5cGUgY3VybF9yZWFkX2NhbGxiYWNrIG9yICJzaW1pbGFyIiAqLwotI2RlZmluZSBfY3VybF9pc19yZWFkX2NiKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoX2N1cmxfaXNfTlVMTChleHByKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9fdHlwZW9mX18oZnJlYWQpICopIHx8ICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIGN1cmxfcmVhZF9jYWxsYmFjaykgfHwgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3JlYWRfY2FsbGJhY2sxKSB8fCAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3JlYWRfY2FsbGJhY2syKSB8fCAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3JlYWRfY2FsbGJhY2szKSB8fCAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3JlYWRfY2FsbGJhY2s0KSB8fCAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3JlYWRfY2FsbGJhY2s1KSB8fCAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3JlYWRfY2FsbGJhY2s2KSkKKyNkZWZpbmUgY3VybGNoZWNrX3JlYWRfY2IoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKGN1cmxjaGVja19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX190eXBlb2ZfXyhmcmVhZCkgKikgfHwgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgY3VybF9yZWFkX2NhbGxiYWNrKSB8fCAgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfcmVhZF9jYWxsYmFjazEpIHx8ICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfcmVhZF9jYWxsYmFjazIpIHx8ICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfcmVhZF9jYWxsYmFjazMpIHx8ICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfcmVhZF9jYWxsYmFjazQpIHx8ICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfcmVhZF9jYWxsYmFjazUpIHx8ICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfcmVhZF9jYWxsYmFjazYpKQogdHlwZWRlZiBzaXplX3QgKCpfY3VybF9yZWFkX2NhbGxiYWNrMSkoY2hhciAqLCBzaXplX3QsIHNpemVfdCwgdm9pZCAqKTsKIHR5cGVkZWYgc2l6ZV90ICgqX2N1cmxfcmVhZF9jYWxsYmFjazIpKGNoYXIgKiwgc2l6ZV90LCBzaXplX3QsIGNvbnN0IHZvaWQgKik7CiB0eXBlZGVmIHNpemVfdCAoKl9jdXJsX3JlYWRfY2FsbGJhY2szKShjaGFyICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwpAQCAtNTM0LDE2ICs1MzksMTYgQEAKIHR5cGVkZWYgc2l6ZV90ICgqX2N1cmxfcmVhZF9jYWxsYmFjazYpKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIGV4cHIgaXMgb2YgdHlwZSBjdXJsX3dyaXRlX2NhbGxiYWNrIG9yICJzaW1pbGFyIiAqLwotI2RlZmluZSBfY3VybF9pc193cml0ZV9jYihleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoX2N1cmxfaXNfcmVhZF9jYihleHByKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9fdHlwZW9mX18oZndyaXRlKSAqKSB8fCAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIGN1cmxfd3JpdGVfY2FsbGJhY2spIHx8ICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrMSkgfHwgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrMikgfHwgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrMykgfHwgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrNCkgfHwgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrNSkgfHwgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrNikpCisjZGVmaW5lIGN1cmxjaGVja193cml0ZV9jYihleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIChjdXJsY2hlY2tfcmVhZF9jYihleHByKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIF9fdHlwZW9mX18oZndyaXRlKSAqKSB8fCAgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIGN1cmxfd3JpdGVfY2FsbGJhY2spIHx8ICAgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrMSkgfHwgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrMikgfHwgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrMykgfHwgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrNCkgfHwgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrNSkgfHwgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3dyaXRlX2NhbGxiYWNrNikpCiB0eXBlZGVmIHNpemVfdCAoKl9jdXJsX3dyaXRlX2NhbGxiYWNrMSkoY29uc3QgY2hhciAqLCBzaXplX3QsIHNpemVfdCwgdm9pZCAqKTsKIHR5cGVkZWYgc2l6ZV90ICgqX2N1cmxfd3JpdGVfY2FsbGJhY2syKShjb25zdCBjaGFyICosIHNpemVfdCwgc2l6ZV90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqKTsKQEAgLTU1NCwzNyArNTU5LDM3IEBACiB0eXBlZGVmIHNpemVfdCAoKl9jdXJsX3dyaXRlX2NhbGxiYWNrNikoY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklMRSAqKTsKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgZXhwciBpcyBvZiB0eXBlIGN1cmxfaW9jdGxfY2FsbGJhY2sgb3IgInNpbWlsYXIiICovCi0jZGVmaW5lIF9jdXJsX2lzX2lvY3RsX2NiKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIChfY3VybF9pc19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgY3VybF9pb2N0bF9jYWxsYmFjaykgfHwgICAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfaW9jdGxfY2FsbGJhY2sxKSB8fCAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfaW9jdGxfY2FsbGJhY2syKSB8fCAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfaW9jdGxfY2FsbGJhY2szKSB8fCAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfaW9jdGxfY2FsbGJhY2s0KSkKKyNkZWZpbmUgY3VybGNoZWNrX2lvY3RsX2NiKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKGN1cmxjaGVja19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgY3VybF9pb2N0bF9jYWxsYmFjaykgfHwgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfaW9jdGxfY2FsbGJhY2sxKSB8fCAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfaW9jdGxfY2FsbGJhY2syKSB8fCAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfaW9jdGxfY2FsbGJhY2szKSB8fCAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfaW9jdGxfY2FsbGJhY2s0KSkKIHR5cGVkZWYgY3VybGlvZXJyICgqX2N1cmxfaW9jdGxfY2FsbGJhY2sxKShDVVJMICosIGludCwgdm9pZCAqKTsKIHR5cGVkZWYgY3VybGlvZXJyICgqX2N1cmxfaW9jdGxfY2FsbGJhY2syKShDVVJMICosIGludCwgY29uc3Qgdm9pZCAqKTsKIHR5cGVkZWYgY3VybGlvZXJyICgqX2N1cmxfaW9jdGxfY2FsbGJhY2szKShDVVJMICosIGN1cmxpb2NtZCwgdm9pZCAqKTsKIHR5cGVkZWYgY3VybGlvZXJyICgqX2N1cmxfaW9jdGxfY2FsbGJhY2s0KShDVVJMICosIGN1cmxpb2NtZCwgY29uc3Qgdm9pZCAqKTsKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgZXhwciBpcyBvZiB0eXBlIGN1cmxfc29ja29wdF9jYWxsYmFjayBvciAic2ltaWxhciIgKi8KLSNkZWZpbmUgX2N1cmxfaXNfc29ja29wdF9jYihleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKF9jdXJsX2lzX05VTEwoZXhwcikgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIF9jdXJsX2NhbGxiYWNrX2NvbXBhdGlibGUoKGV4cHIpLCBjdXJsX3NvY2tvcHRfY2FsbGJhY2spIHx8ICAgICAgICAgICAgICAgIFwKLSAgIF9jdXJsX2NhbGxiYWNrX2NvbXBhdGlibGUoKGV4cHIpLCBfY3VybF9zb2Nrb3B0X2NhbGxiYWNrMSkgfHwgICAgICAgICAgICAgIFwKLSAgIF9jdXJsX2NhbGxiYWNrX2NvbXBhdGlibGUoKGV4cHIpLCBfY3VybF9zb2Nrb3B0X2NhbGxiYWNrMikpCisjZGVmaW5lIGN1cmxjaGVja19zb2Nrb3B0X2NiKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIChjdXJsY2hlY2tfTlVMTChleHByKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIGN1cmxfc29ja29wdF9jYWxsYmFjaykgfHwgICAgICAgICAgICBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NvY2tvcHRfY2FsbGJhY2sxKSB8fCAgICAgICAgICBcCisgICBjdXJsY2hlY2tfY2JfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NvY2tvcHRfY2FsbGJhY2syKSkKIHR5cGVkZWYgaW50ICgqX2N1cmxfc29ja29wdF9jYWxsYmFjazEpKHZvaWQgKiwgY3VybF9zb2NrZXRfdCwgY3VybHNvY2t0eXBlKTsKIHR5cGVkZWYgaW50ICgqX2N1cmxfc29ja29wdF9jYWxsYmFjazIpKGNvbnN0IHZvaWQgKiwgY3VybF9zb2NrZXRfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHNvY2t0eXBlKTsKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgZXhwciBpcyBvZiB0eXBlIGN1cmxfb3BlbnNvY2tldF9jYWxsYmFjayBvcgogICAgInNpbWlsYXIiICovCi0jZGVmaW5lIF9jdXJsX2lzX29wZW5zb2NrZXRfY2IoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIChfY3VybF9pc19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgY3VybF9vcGVuc29ja2V0X2NhbGxiYWNrKSB8fCAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfb3BlbnNvY2tldF9jYWxsYmFjazEpIHx8ICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfb3BlbnNvY2tldF9jYWxsYmFjazIpIHx8ICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfb3BlbnNvY2tldF9jYWxsYmFjazMpIHx8ICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfb3BlbnNvY2tldF9jYWxsYmFjazQpKQorI2RlZmluZSBjdXJsY2hlY2tfb3BlbnNvY2tldF9jYihleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoY3VybGNoZWNrX05VTEwoZXhwcikgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgY3VybGNoZWNrX2NiX2NvbXBhdGlibGUoKGV4cHIpLCBjdXJsX29wZW5zb2NrZXRfY2FsbGJhY2spIHx8ICAgICAgICAgXAorICAgY3VybGNoZWNrX2NiX2NvbXBhdGlibGUoKGV4cHIpLCBfY3VybF9vcGVuc29ja2V0X2NhbGxiYWNrMSkgfHwgICAgICAgXAorICAgY3VybGNoZWNrX2NiX2NvbXBhdGlibGUoKGV4cHIpLCBfY3VybF9vcGVuc29ja2V0X2NhbGxiYWNrMikgfHwgICAgICAgXAorICAgY3VybGNoZWNrX2NiX2NvbXBhdGlibGUoKGV4cHIpLCBfY3VybF9vcGVuc29ja2V0X2NhbGxiYWNrMykgfHwgICAgICAgXAorICAgY3VybGNoZWNrX2NiX2NvbXBhdGlibGUoKGV4cHIpLCBfY3VybF9vcGVuc29ja2V0X2NhbGxiYWNrNCkpCiB0eXBlZGVmIGN1cmxfc29ja2V0X3QgKCpfY3VybF9vcGVuc29ja2V0X2NhbGxiYWNrMSkKICAgKHZvaWQgKiwgY3VybHNvY2t0eXBlLCBzdHJ1Y3QgY3VybF9zb2NrYWRkciAqKTsKIHR5cGVkZWYgY3VybF9zb2NrZXRfdCAoKl9jdXJsX29wZW5zb2NrZXRfY2FsbGJhY2syKQpAQCAtNTk1LDI4ICs2MDAsMjggQEAKICAgKGNvbnN0IHZvaWQgKiwgY3VybHNvY2t0eXBlLCBjb25zdCBzdHJ1Y3QgY3VybF9zb2NrYWRkciAqKTsKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgZXhwciBpcyBvZiB0eXBlIGN1cmxfcHJvZ3Jlc3NfY2FsbGJhY2sgb3IgInNpbWlsYXIiICovCi0jZGVmaW5lIF9jdXJsX2lzX3Byb2dyZXNzX2NiKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIChfY3VybF9pc19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgY3VybF9wcm9ncmVzc19jYWxsYmFjaykgfHwgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfcHJvZ3Jlc3NfY2FsbGJhY2sxKSB8fCAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfcHJvZ3Jlc3NfY2FsbGJhY2syKSkKKyNkZWZpbmUgY3VybGNoZWNrX3Byb2dyZXNzX2NiKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKGN1cmxjaGVja19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgY3VybF9wcm9ncmVzc19jYWxsYmFjaykgfHwgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfcHJvZ3Jlc3NfY2FsbGJhY2sxKSB8fCAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfcHJvZ3Jlc3NfY2FsbGJhY2syKSkKIHR5cGVkZWYgaW50ICgqX2N1cmxfcHJvZ3Jlc3NfY2FsbGJhY2sxKSh2b2lkICosCiAgICAgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlKTsKIHR5cGVkZWYgaW50ICgqX2N1cmxfcHJvZ3Jlc3NfY2FsbGJhY2syKShjb25zdCB2b2lkICosCiAgICAgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlKTsKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgZXhwciBpcyBvZiB0eXBlIGN1cmxfZGVidWdfY2FsbGJhY2sgb3IgInNpbWlsYXIiICovCi0jZGVmaW5lIF9jdXJsX2lzX2RlYnVnX2NiKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIChfY3VybF9pc19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgY3VybF9kZWJ1Z19jYWxsYmFjaykgfHwgICAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2sxKSB8fCAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2syKSB8fCAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2szKSB8fCAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2s0KSB8fCAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2s1KSB8fCAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2s2KSB8fCAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2s3KSB8fCAgICAgICAgICAgICAgICBcCi0gICBfY3VybF9jYWxsYmFja19jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2s4KSkKKyNkZWZpbmUgY3VybGNoZWNrX2RlYnVnX2NiKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKGN1cmxjaGVja19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgY3VybF9kZWJ1Z19jYWxsYmFjaykgfHwgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2sxKSB8fCAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2syKSB8fCAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2szKSB8fCAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2s0KSB8fCAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2s1KSB8fCAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2s2KSB8fCAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2s3KSB8fCAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfZGVidWdfY2FsbGJhY2s4KSkKIHR5cGVkZWYgaW50ICgqX2N1cmxfZGVidWdfY2FsbGJhY2sxKSAoQ1VSTCAqLAogICAgIGN1cmxfaW5mb3R5cGUsIGNoYXIgKiwgc2l6ZV90LCB2b2lkICopOwogdHlwZWRlZiBpbnQgKCpfY3VybF9kZWJ1Z19jYWxsYmFjazIpIChDVVJMICosCkBAIC02MzYsMTcgKzY0MSwxNyBAQAogCiAvKiBldmFsdWF0ZXMgdG8gdHJ1ZSBpZiBleHByIGlzIG9mIHR5cGUgY3VybF9zc2xfY3R4X2NhbGxiYWNrIG9yICJzaW1pbGFyIiAqLwogLyogdGhpcyBpcyBnZXR0aW5nIGV2ZW4gbWVzc2llci4uLiAqLwotI2RlZmluZSBfY3VybF9pc19zc2xfY3R4X2NiKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoX2N1cmxfaXNfTlVMTChleHByKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIGN1cmxfc3NsX2N0eF9jYWxsYmFjaykgfHwgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NzbF9jdHhfY2FsbGJhY2sxKSB8fCAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NzbF9jdHhfY2FsbGJhY2syKSB8fCAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NzbF9jdHhfY2FsbGJhY2szKSB8fCAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NzbF9jdHhfY2FsbGJhY2s0KSB8fCAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NzbF9jdHhfY2FsbGJhY2s1KSB8fCAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NzbF9jdHhfY2FsbGJhY2s2KSB8fCAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NzbF9jdHhfY2FsbGJhY2s3KSB8fCAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NzbF9jdHhfY2FsbGJhY2s4KSkKKyNkZWZpbmUgY3VybGNoZWNrX3NzbF9jdHhfY2IoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKGN1cmxjaGVja19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgY3VybF9zc2xfY3R4X2NhbGxiYWNrKSB8fCAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfc3NsX2N0eF9jYWxsYmFjazEpIHx8ICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfc3NsX2N0eF9jYWxsYmFjazIpIHx8ICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfc3NsX2N0eF9jYWxsYmFjazMpIHx8ICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfc3NsX2N0eF9jYWxsYmFjazQpIHx8ICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfc3NsX2N0eF9jYWxsYmFjazUpIHx8ICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfc3NsX2N0eF9jYWxsYmFjazYpIHx8ICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfc3NsX2N0eF9jYWxsYmFjazcpIHx8ICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfc3NsX2N0eF9jYWxsYmFjazgpKQogdHlwZWRlZiBDVVJMY29kZSAoKl9jdXJsX3NzbF9jdHhfY2FsbGJhY2sxKShDVVJMICosIHZvaWQgKiwgdm9pZCAqKTsKIHR5cGVkZWYgQ1VSTGNvZGUgKCpfY3VybF9zc2xfY3R4X2NhbGxiYWNrMikoQ1VSTCAqLCB2b2lkICosIGNvbnN0IHZvaWQgKik7CiB0eXBlZGVmIENVUkxjb2RlICgqX2N1cmxfc3NsX2N0eF9jYWxsYmFjazMpKENVUkwgKiwgY29uc3Qgdm9pZCAqLCB2b2lkICopOwpAQCAtNjY5LDI2ICs2NzQsMjYgQEAKICNlbmRpZgogCiAvKiBldmFsdWF0ZXMgdG8gdHJ1ZSBpZiBleHByIGlzIG9mIHR5cGUgY3VybF9jb252X2NhbGxiYWNrIG9yICJzaW1pbGFyIiAqLwotI2RlZmluZSBfY3VybF9pc19jb252X2NiKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoX2N1cmxfaXNfTlVMTChleHByKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIGN1cmxfY29udl9jYWxsYmFjaykgfHwgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX2NvbnZfY2FsbGJhY2sxKSB8fCAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX2NvbnZfY2FsbGJhY2syKSB8fCAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX2NvbnZfY2FsbGJhY2szKSB8fCAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX2NvbnZfY2FsbGJhY2s0KSkKKyNkZWZpbmUgY3VybGNoZWNrX2NvbnZfY2IoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKGN1cmxjaGVja19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgY3VybF9jb252X2NhbGxiYWNrKSB8fCAgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfY29udl9jYWxsYmFjazEpIHx8ICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfY29udl9jYWxsYmFjazIpIHx8ICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfY29udl9jYWxsYmFjazMpIHx8ICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfY29udl9jYWxsYmFjazQpKQogdHlwZWRlZiBDVVJMY29kZSAoKl9jdXJsX2NvbnZfY2FsbGJhY2sxKShjaGFyICosIHNpemVfdCBsZW5ndGgpOwogdHlwZWRlZiBDVVJMY29kZSAoKl9jdXJsX2NvbnZfY2FsbGJhY2syKShjb25zdCBjaGFyICosIHNpemVfdCBsZW5ndGgpOwogdHlwZWRlZiBDVVJMY29kZSAoKl9jdXJsX2NvbnZfY2FsbGJhY2szKSh2b2lkICosIHNpemVfdCBsZW5ndGgpOwogdHlwZWRlZiBDVVJMY29kZSAoKl9jdXJsX2NvbnZfY2FsbGJhY2s0KShjb25zdCB2b2lkICosIHNpemVfdCBsZW5ndGgpOwogCiAvKiBldmFsdWF0ZXMgdG8gdHJ1ZSBpZiBleHByIGlzIG9mIHR5cGUgY3VybF9zZWVrX2NhbGxiYWNrIG9yICJzaW1pbGFyIiAqLwotI2RlZmluZSBfY3VybF9pc19zZWVrX2NiKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoX2N1cmxfaXNfTlVMTChleHByKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIGN1cmxfc2Vla19jYWxsYmFjaykgfHwgICAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NlZWtfY2FsbGJhY2sxKSB8fCAgICAgICAgICAgICAgICAgXAotICAgX2N1cmxfY2FsbGJhY2tfY29tcGF0aWJsZSgoZXhwciksIF9jdXJsX3NlZWtfY2FsbGJhY2syKSkKKyNkZWZpbmUgY3VybGNoZWNrX3NlZWtfY2IoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKGN1cmxjaGVja19OVUxMKGV4cHIpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgY3VybF9zZWVrX2NhbGxiYWNrKSB8fCAgICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfc2Vla19jYWxsYmFjazEpIHx8ICAgICAgICAgICAgIFwKKyAgIGN1cmxjaGVja19jYl9jb21wYXRpYmxlKChleHByKSwgX2N1cmxfc2Vla19jYWxsYmFjazIpKQogdHlwZWRlZiBDVVJMY29kZSAoKl9jdXJsX3NlZWtfY2FsbGJhY2sxKSh2b2lkICosIGN1cmxfb2ZmX3QsIGludCk7CiB0eXBlZGVmIENVUkxjb2RlICgqX2N1cmxfc2Vla19jYWxsYmFjazIpKGNvbnN0IHZvaWQgKiwgY3VybF9vZmZfdCwgaW50KTsKIAogCi0jZW5kaWYgLyogX19DVVJMX1RZUEVDSEVDS19HQ0NfSCAqLworI2VuZGlmIC8qIENVUkxJTkNfVFlQRUNIRUNLX0dDQ19IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2luY2x1ZGUvY3VybC91cmxhcGkuaCBiL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL3VybGFwaS5oCmluZGV4IDU4ZTg5ZDguLmYyZDA2NzcgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL3VybGFwaS5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvaW5jbHVkZS9jdXJsL3VybGFwaS5oCkBAIC0xLDUgKzEsNSBAQAotI2lmbmRlZiBfX0NVUkxfVVJMQVBJX0gKLSNkZWZpbmUgX19DVVJMX1VSTEFQSV9ICisjaWZuZGVmIENVUkxJTkNfVVJMQVBJX0gKKyNkZWZpbmUgQ1VSTElOQ19VUkxBUElfSAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwogICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKQEAgLTc3LDYgKzc3LDggQEAKICNkZWZpbmUgQ1VSTFVfVVJMRU5DT0RFICgxPDw3KSAgICAgICAgICAvKiBVUkwgZW5jb2RlIG9uIHNldCAqLwogI2RlZmluZSBDVVJMVV9BUFBFTkRRVUVSWSAoMTw8OCkgICAgICAgIC8qIGFwcGVuZCBhIGZvcm0gc3R5bGUgcGFydCAqLwogI2RlZmluZSBDVVJMVV9HVUVTU19TQ0hFTUUgKDE8PDkpICAgICAgIC8qIGxlZ2FjeSBjdXJsLXN0eWxlIGd1ZXNzaW5nICovCisjZGVmaW5lIENVUkxVX05PX0FVVEhPUklUWSAoMTw8MTApICAgICAgLyogQWxsb3cgZW1wdHkgYXV0aG9yaXR5IHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lIGlzIHVua25vd24uICovCiAKIHR5cGVkZWYgc3RydWN0IEN1cmxfVVJMIENVUkxVOwogCkBAIC0xMjAsNCArMTIyLDQgQEAKIH0gLyogZW5kIG9mIGV4dGVybiAiQyIgKi8KICNlbmRpZgogCi0jZW5kaWYKKyNlbmRpZiAvKiBDVVJMSU5DX1VSTEFQSV9IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9DTWFrZUxpc3RzLnR4dCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL0NNYWtlTGlzdHMudHh0CmluZGV4IDJhNjI3OWMuLjQ5MzU5MjYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL0NNYWtlTGlzdHMudHh0CisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL0NNYWtlTGlzdHMudHh0CkBAIC0yMCw3ICsyMCw2IEBACiAKIGlmKE1TVkMgQU5EIE5PVCBDVVJMX1NUQVRJQ0xJQikKICAgbGlzdChBUFBFTkQgQ1NPVVJDRVMgbGliY3VybC5yYykKLSAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL3dkNDEyNyIpCiBlbmRpZigpCiAKICMgU0VUKENTT1VSQ0VTCkBAIC0xMjEsNiArMTIwLDEyIEBACiBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtMSUJfTkFNRX0gUFJPUEVSVElFUyBQUkVGSVggIiIpCiBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtMSUJfTkFNRX0gUFJPUEVSVElFUyBJTVBPUlRfUFJFRklYICIiKQogCitpZihDVVJMX0hBU19MVE8pCisgIHNldF90YXJnZXRfcHJvcGVydGllcygke0xJQl9OQU1FfSBQUk9QRVJUSUVTCisgICAgSU5URVJQUk9DRURVUkFMX09QVElNSVpBVElPTl9SRUxFQVNFIFRSVUUKKyAgICBJTlRFUlBST0NFRFVSQUxfT1BUSU1JWkFUSU9OX1JFTFdJVEhERUJJTkZPIFRSVUUpCitlbmRpZigpCisKIGlmKFdJTjMyKQogICBpZihCVUlMRF9TSEFSRURfTElCUykKICAgICAjIEFkZCAiX2ltcCIgYXMgYSBzdWZmaXggYmVmb3JlIHRoZSBleHRlbnNpb24gdG8gYXZvaWQgY29uZmxpY3Rpbmcgd2l0aCB0aGUgc3RhdGljYWxseSBsaW5rZWQgImxpYmN1cmwubGliIgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvTWFrZWZpbGUuaW5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvTWFrZWZpbGUuaW5jCmluZGV4IDIzNWI4MmIuLjQ2ZGVkOTAgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL01ha2VmaWxlLmluYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9NYWtlZmlsZS5pbmMKQEAgLTUsNyArNSw3IEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0yOCwxNCArMjgsMjIgQEAKIExJQl9WQVVUSF9IRklMRVMgPSB2YXV0aC92YXV0aC5oIHZhdXRoL2RpZ2VzdC5oIHZhdXRoL250bG0uaAogCiBMSUJfVlRMU19DRklMRVMgPSB2dGxzL29wZW5zc2wuYyB2dGxzL2d0bHMuYyB2dGxzL3Z0bHMuYyB2dGxzL25zcy5jICAgICBcCi0gIHZ0bHMvcG9sYXJzc2wuYyB2dGxzL3BvbGFyc3NsX3RocmVhZGxvY2suYyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHZ0bHMvY3lhc3NsLmMgdnRscy9zY2hhbm5lbC5jIHZ0bHMvc2NoYW5uZWxfdmVyaWZ5LmMgICAgICAgICAgICAgICAgICBcCi0gIHZ0bHMvc2VjdHJhbnNwLmMgdnRscy9nc2tpdC5jIHZ0bHMvbWJlZHRscy5jIHZ0bHMvbWVzYWxpbmsuYworICB2dGxzL21iZWR0bHNfdGhyZWFkbG9jay5jIHZ0bHMvd29sZnNzbC5jIHZ0bHMvc2NoYW5uZWwuYyAgICAgICAgICAgICAgXAorICB2dGxzL3NjaGFubmVsX3ZlcmlmeS5jIHZ0bHMvc2VjdHJhbnNwLmMgdnRscy9nc2tpdC5jIHZ0bHMvbWJlZHRscy5jICAgXAorICB2dGxzL21lc2FsaW5rLmMgdnRscy9iZWFyc3NsLmMKIAotTElCX1ZUTFNfSEZJTEVTID0gdnRscy9vcGVuc3NsLmggdnRscy92dGxzLmggdnRscy9ndGxzLmggICAgICAgICAgICAgICAgXAotICB2dGxzL25zc2cuaCB2dGxzL3BvbGFyc3NsLmggdnRscy9wb2xhcnNzbF90aHJlYWRsb2NrLmggICAgICAgICAgICAgICAgXAotICB2dGxzL2N5YXNzbC5oIHZ0bHMvc2NoYW5uZWwuaCB2dGxzL3NlY3RyYW5zcC5oIHZ0bHMvZ3NraXQuaCAgICAgICAgICAgXAotICB2dGxzL21iZWR0bHMuaCB2dGxzL21lc2FsaW5rLmgKK0xJQl9WVExTX0hGSUxFUyA9IHZ0bHMvb3BlbnNzbC5oIHZ0bHMvdnRscy5oIHZ0bHMvZ3Rscy5oIHZ0bHMvbnNzZy5oICAgIFwKKyAgdnRscy9tYmVkdGxzX3RocmVhZGxvY2suaCB2dGxzL3dvbGZzc2wuaCB2dGxzL3NjaGFubmVsLmggICAgICAgICAgICAgIFwKKyAgdnRscy9zZWN0cmFuc3AuaCB2dGxzL2dza2l0LmggdnRscy9tYmVkdGxzLmggdnRscy9tZXNhbGluay5oICAgICAgICAgIFwKKyAgdnRscy9iZWFyc3NsLmgKKworTElCX1ZRVUlDX0NGSUxFUyA9IHZxdWljL25ndGNwMi5jIHZxdWljL3F1aWNoZS5jCisKK0xJQl9WUVVJQ19IRklMRVMgPSB2cXVpYy9uZ3RjcDIuaCB2cXVpYy9xdWljaGUuaAorCitMSUJfVlNTSF9DRklMRVMgPSB2c3NoL2xpYnNzaDIuYyB2c3NoL2xpYnNzaC5jIHZzc2gvd29sZnNzaC5jCisKK0xJQl9WU1NIX0hGSUxFUyA9IHZzc2gvc3NoLmgKIAogTElCX0NGSUxFUyA9IGZpbGUuYyB0aW1ldmFsLmMgYmFzZTY0LmMgaG9zdGlwLmMgcHJvZ3Jlc3MuYyBmb3JtZGF0YS5jICAgXAogICBjb29raWUuYyBodHRwLmMgc2VuZGYuYyBmdHAuYyB1cmwuYyBkaWN0LmMgaWYyaXAuYyBzcGVlZGNoZWNrLmMgICAgICAgXApAQCAtNDYsNyArNTQsNyBAQAogICBodHRwX2RpZ2VzdC5jIG1kNC5jIG1kNS5jIGh0dHBfbmVnb3RpYXRlLmMgaW5ldF9wdG9uLmMgc3RydG9vZmZ0LmMgICAgXAogICBzdHJlcnJvci5jIGFtaWdhb3MuYyBob3N0YXN5bi5jIGhvc3RpcDQuYyBob3N0aXA2LmMgaG9zdHN5bi5jICAgICAgICAgXAogICBpbmV0X250b3AuYyBwYXJzZWRhdGUuYyBzZWxlY3QuYyB0ZnRwLmMgc3BsYXkuYyBzdHJkdXAuYyBzb2Nrcy5jICAgICAgXAotICBzc2guYyBzc2gtbGlic3NoLmMgY3VybF9hZGRyaW5mby5jIHNvY2tzX2dzc2FwaS5jIHNvY2tzX3NzcGkuYyAgICAgICAgXAorICBjdXJsX2FkZHJpbmZvLmMgc29ja3NfZ3NzYXBpLmMgc29ja3Nfc3NwaS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBjdXJsX3NzcGkuYyBzbGlzdC5jIG5vbmJsb2NrLmMgY3VybF9tZW1yY2hyLmMgaW1hcC5jIHBvcDMuYyBzbXRwLmMgICAgXAogICBwaW5ncG9uZy5jIHJ0c3AuYyBjdXJsX3RocmVhZHMuYyB3YXJubGVzcy5jIGhtYWMuYyBjdXJsX3J0bXAuYyAgICAgICAgXAogICBvcGVubGRhcC5jIGN1cmxfZ2V0aG9zdG5hbWUuYyBnb3BoZXIuYyBpZG5fd2luMzIuYyAgICAgICAgICAgICAgICAgICAgXApAQCAtNTUsNyArNjMsNyBAQAogICBjdXJsX211bHRpYnl0ZS5jIGhvc3RjaGVjay5jIGNvbm5jYWNoZS5jIGRvdGRvdC5jICAgICAgICAgICAgICAgICAgICAgXAogICB4NTA5YXNuMS5jIGh0dHAyLmMgc21iLmMgY3VybF9lbmRpYW4uYyBjdXJsX2Rlcy5jIHN5c3RlbV93aW4zMi5jICAgICAgXAogICBtaW1lLmMgc2hhMjU2LmMgc2V0b3B0LmMgY3VybF9wYXRoLmMgY3VybF9jdHlwZS5jIGN1cmxfcmFuZ2UuYyBwc2wuYyAgXAotICBkb2guYyB1cmxhcGkuYyBjdXJsX2dldF9saW5lLmMgYWx0c3ZjLmMKKyAgZG9oLmMgdXJsYXBpLmMgY3VybF9nZXRfbGluZS5jIGFsdHN2Yy5jIHNvY2tldHBhaXIuYyByZW5hbWUuYwogCiBMSUJfSEZJTEVTID0gYXJwYV90ZWxuZXQuaCBuZXRyYy5oIGZpbGUuaCB0aW1ldmFsLmggaG9zdGlwLmggcHJvZ3Jlc3MuaCBcCiAgIGZvcm1kYXRhLmggY29va2llLmggaHR0cC5oIHNlbmRmLmggZnRwLmggdXJsLmggZGljdC5oIGlmMmlwLmggICAgICAgICBcCkBAIC02Niw3ICs3NCw3IEBACiAgIGh0dHBfbmVnb3RpYXRlLmggaW5ldF9wdG9uLmggYW1pZ2Fvcy5oIHN0cnRvb2ZmdC5oIHN0cmVycm9yLmggICAgICAgICBcCiAgIGluZXRfbnRvcC5oIGN1cmx4LmggY3VybF9tZW1vcnkuaCBjdXJsX3NldHVwLmggdHJhbnNmZXIuaCBzZWxlY3QuaCAgICBcCiAgIGVhc3lpZi5oIG11bHRpaWYuaCBwYXJzZWRhdGUuaCB0ZnRwLmggc29ja2FkZHIuaCBzcGxheS5oIHN0cmR1cC5oICAgICBcCi0gIHNvY2tzLmggc3NoLmggY3VybF9iYXNlNjQuaCBjdXJsX2FkZHJpbmZvLmggY3VybF9zc3BpLmggICAgICBcCisgIHNvY2tzLmggY3VybF9iYXNlNjQuaCBjdXJsX2FkZHJpbmZvLmggY3VybF9zc3BpLmggICAgICAgICAgICAgICAgICAgICBcCiAgIHNsaXN0Lmggbm9uYmxvY2suaCBjdXJsX21lbXJjaHIuaCBpbWFwLmggcG9wMy5oIHNtdHAuaCBwaW5ncG9uZy5oICAgICBcCiAgIHJ0c3AuaCBjdXJsX3RocmVhZHMuaCB3YXJubGVzcy5oIGN1cmxfaG1hYy5oIGN1cmxfcnRtcC5oICAgICAgICAgICAgICBcCiAgIGN1cmxfZ2V0aG9zdG5hbWUuaCBnb3BoZXIuaCBodHRwX3Byb3h5Lmggbm9uLWFzY2lpLmggYXN5bi5oICAgICAgICAgICBcCkBAIC03Niw5ICs4NCwxMSBAQAogICB4NTA5YXNuMS5oIGh0dHAyLmggc2lncGlwZS5oIHNtYi5oIGN1cmxfZW5kaWFuLmggY3VybF9kZXMuaCAgICAgICAgICAgXAogICBjdXJsX3ByaW50Zi5oIHN5c3RlbV93aW4zMi5oIHJhbmQuaCBtaW1lLmggY3VybF9zaGEyNTYuaCBzZXRvcHQuaCAgICAgXAogICBjdXJsX3BhdGguaCBjdXJsX2N0eXBlLmggY3VybF9yYW5nZS5oIHBzbC5oIGRvaC5oIHVybGFwaS1pbnQuaCAgICAgICAgXAotICBjdXJsX2dldF9saW5lLmggYWx0c3ZjLmgKKyAgY3VybF9nZXRfbGluZS5oIGFsdHN2Yy5oIHF1aWMuaCBzb2NrZXRwYWlyLmggcmVuYW1lLmgKIAogTElCX1JDRklMRVMgPSBsaWJjdXJsLnJjCiAKLUNTT1VSQ0VTID0gJChMSUJfQ0ZJTEVTKSAkKExJQl9WQVVUSF9DRklMRVMpICQoTElCX1ZUTFNfQ0ZJTEVTKQotSEhFQURFUlMgPSAkKExJQl9IRklMRVMpICQoTElCX1ZBVVRIX0hGSUxFUykgJChMSUJfVlRMU19IRklMRVMpCitDU09VUkNFUyA9ICQoTElCX0NGSUxFUykgJChMSUJfVkFVVEhfQ0ZJTEVTKSAkKExJQl9WVExTX0NGSUxFUykgXAorICAkKExJQl9WUVVJQ19DRklMRVMpICQoTElCX1ZTU0hfQ0ZJTEVTKQorSEhFQURFUlMgPSAkKExJQl9IRklMRVMpICQoTElCX1ZBVVRIX0hGSUxFUykgJChMSUJfVlRMU19IRklMRVMpIFwKKyAgJChMSUJfVlFVSUNfSEZJTEVTKSAkKExJQl9WU1NIX0hGSUxFUykKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2FsdHN2Yy5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvYWx0c3ZjLmMKaW5kZXggODVhNGUwMS4uYzM5ZDg2ZSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvYWx0c3ZjLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvYWx0c3ZjLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDE5IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgInBhcnNlZGF0ZS5oIgogI2luY2x1ZGUgInNlbmRmLmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKKyNpbmNsdWRlICJyYW5kLmgiCisjaW5jbHVkZSAicmVuYW1lLmgiCiAKIC8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgpAQCAtNDgsMTUgKzUwLDE5IEBACiAjZGVmaW5lIE1BWF9BTFRTVkNfQUxQTkxFTlNUUiAiMTAiCiAjZGVmaW5lIE1BWF9BTFRTVkNfQUxQTkxFTiAxMAogCisjaWYgKGRlZmluZWQoVVNFX1FVSUNIRSkgfHwgZGVmaW5lZChVU0VfTkdUQ1AyKSkgJiYgIWRlZmluZWQoVU5JVFRFU1RTKQorI2RlZmluZSBIM1ZFUlNJT04gImgzLTI3IgorI2Vsc2UKKyNkZWZpbmUgSDNWRVJTSU9OICJoMyIKKyNlbmRpZgorCiBzdGF0aWMgZW51bSBhbHBuaWQgYWxwbjJhbHBuaWQoY2hhciAqbmFtZSkKIHsKICAgaWYoc3RyY2FzZWNvbXBhcmUobmFtZSwgImgxIikpCiAgICAgcmV0dXJuIEFMUE5faDE7CiAgIGlmKHN0cmNhc2Vjb21wYXJlKG5hbWUsICJoMiIpKQogICAgIHJldHVybiBBTFBOX2gyOwotICBpZihzdHJjYXNlY29tcGFyZShuYW1lLCAiaDJjIikpCi0gICAgcmV0dXJuIEFMUE5faDJjOwotICBpZihzdHJjYXNlY29tcGFyZShuYW1lLCAiaDMiKSkKKyAgaWYoc3RyY2FzZWNvbXBhcmUobmFtZSwgSDNWRVJTSU9OKSkKICAgICByZXR1cm4gQUxQTl9oMzsKICAgcmV0dXJuIEFMUE5fbm9uZTsgLyogdW5rbm93biwgcHJvYmFibHkgcnViYmlzaCBpbnB1dCAqLwogfQpAQCAtNjksMTAgKzc1LDggQEAKICAgICByZXR1cm4gImgxIjsKICAgY2FzZSBBTFBOX2gyOgogICAgIHJldHVybiAiaDIiOwotICBjYXNlIEFMUE5faDJjOgotICAgIHJldHVybiAiaDJjIjsKICAgY2FzZSBBTFBOX2gzOgotICAgIHJldHVybiAiaDMiOworICAgIHJldHVybiBIM1ZFUlNJT047CiAgIGRlZmF1bHQ6CiAgICAgcmV0dXJuICIiOyAvKiBiYWQgKi8KICAgfQpAQCAtODEsOCArODUsOCBAQAogCiBzdGF0aWMgdm9pZCBhbHRzdmNfZnJlZShzdHJ1Y3QgYWx0c3ZjICphcykKIHsKLSAgZnJlZShhcy0+c3JjaG9zdCk7Ci0gIGZyZWUoYXMtPmRzdGhvc3QpOworICBmcmVlKGFzLT5zcmMuaG9zdCk7CisgIGZyZWUoYXMtPmRzdC5ob3N0KTsKICAgZnJlZShhcyk7CiB9CiAKQEAgLTk3LDE3ICsxMDEsMTcgQEAKICAgaWYoIWFzKQogICAgIHJldHVybiBOVUxMOwogCi0gIGFzLT5zcmNob3N0ID0gc3RyZHVwKHNyY2hvc3QpOwotICBpZighYXMtPnNyY2hvc3QpCisgIGFzLT5zcmMuaG9zdCA9IHN0cmR1cChzcmNob3N0KTsKKyAgaWYoIWFzLT5zcmMuaG9zdCkKICAgICBnb3RvIGVycm9yOwotICBhcy0+ZHN0aG9zdCA9IHN0cmR1cChkc3Rob3N0KTsKLSAgaWYoIWFzLT5kc3Rob3N0KQorICBhcy0+ZHN0Lmhvc3QgPSBzdHJkdXAoZHN0aG9zdCk7CisgIGlmKCFhcy0+ZHN0Lmhvc3QpCiAgICAgZ290byBlcnJvcjsKIAotICBhcy0+c3JjYWxwbmlkID0gc3JjYWxwbmlkOwotICBhcy0+ZHN0YWxwbmlkID0gZHN0YWxwbmlkOwotICBhcy0+c3JjcG9ydCA9IGN1cmx4X3VsdG91cyhzcmNwb3J0KTsKLSAgYXMtPmRzdHBvcnQgPSBjdXJseF91bHRvdXMoZHN0cG9ydCk7CisgIGFzLT5zcmMuYWxwbmlkID0gc3JjYWxwbmlkOworICBhcy0+ZHN0LmFscG5pZCA9IGRzdGFscG5pZDsKKyAgYXMtPnNyYy5wb3J0ID0gY3VybHhfdWx0b3VzKHNyY3BvcnQpOworICBhcy0+ZHN0LnBvcnQgPSBjdXJseF91bHRvdXMoZHN0cG9ydCk7CiAKICAgcmV0dXJuIGFzOwogICBlcnJvcjoKQEAgLTE1Niw3ICsxNjAsNyBAQAogICAgICAgICAgICAgICBkYXRlLCAmcGVyc2lzdCwgJnByaW8pOwogICBpZig5ID09IHJjKSB7CiAgICAgc3RydWN0IGFsdHN2YyAqYXM7Ci0gICAgdGltZV90IGV4cGlyZXMgPSBjdXJsX2dldGRhdGUoZGF0ZSwgTlVMTCk7CisgICAgdGltZV90IGV4cGlyZXMgPSBDdXJsX2dldGRhdGVfY2FwcGVkKGRhdGUpOwogICAgIGFzID0gYWx0c3ZjX2NyZWF0ZShzcmNob3N0LCBkc3Rob3N0LCBzcmNhbHBuLCBkc3RhbHBuLCBzcmNwb3J0LCBkc3Rwb3J0KTsKICAgICBpZihhcykgewogICAgICAgYXMtPmV4cGlyZXMgPSBleHBpcmVzOwpAQCAtMTgzLDcgKzE4NywxNiBAQAogewogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKICAgY2hhciAqbGluZSA9IE5VTEw7Ci0gIEZJTEUgKmZwID0gZm9wZW4oZmlsZSwgRk9QRU5fUkVBRFRFWFQpOworICBGSUxFICpmcDsKKworICAvKiB3ZSBuZWVkIGEgcHJpdmF0ZSBjb3B5IG9mIHRoZSBmaWxlIG5hbWUgc28gdGhhdCB0aGUgYWx0c3ZjIGNhY2hlIGZpbGUKKyAgICAgbmFtZSBzdXJ2aXZlcyBhbiBlYXN5IGhhbmRsZSByZXNldCAqLworICBmcmVlKGFzaS0+ZmlsZW5hbWUpOworICBhc2ktPmZpbGVuYW1lID0gc3RyZHVwKGZpbGUpOworICBpZighYXNpLT5maWxlbmFtZSkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICBmcCA9IGZvcGVuKGZpbGUsIEZPUEVOX1JFQURURVhUKTsKICAgaWYoZnApIHsKICAgICBsaW5lID0gbWFsbG9jKE1BWF9BTFRTVkNfTElORSk7CiAgICAgaWYoIWxpbmUpCkBAIC0yMDQsNiArMjE3LDcgQEAKICAgcmV0dXJuIHJlc3VsdDsKIAogICBmYWlsOgorICBDdXJsX3NhZmVmcmVlKGFzaS0+ZmlsZW5hbWUpOwogICBmcmVlKGxpbmUpOwogICBmY2xvc2UoZnApOwogICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKQEAgLTIyNiw4ICsyNDAsOCBAQAogICAgICAgICAgICJcIiVkJTAyZCUwMmQgIgogICAgICAgICAgICIlMDJkOiUwMmQ6JTAyZFwiICIKICAgICAgICAgICAiJXUgJWRcbiIsCi0gICAgICAgICAgQ3VybF9hbHBuaWQyc3RyKGFzLT5zcmNhbHBuaWQpLCBhcy0+c3JjaG9zdCwgYXMtPnNyY3BvcnQsCi0gICAgICAgICAgQ3VybF9hbHBuaWQyc3RyKGFzLT5kc3RhbHBuaWQpLCBhcy0+ZHN0aG9zdCwgYXMtPmRzdHBvcnQsCisgICAgICAgICAgQ3VybF9hbHBuaWQyc3RyKGFzLT5zcmMuYWxwbmlkKSwgYXMtPnNyYy5ob3N0LCBhcy0+c3JjLnBvcnQsCisgICAgICAgICAgQ3VybF9hbHBuaWQyc3RyKGFzLT5kc3QuYWxwbmlkKSwgYXMtPmRzdC5ob3N0LCBhcy0+ZHN0LnBvcnQsCiAgICAgICAgICAgc3RhbXAudG1feWVhciArIDE5MDAsIHN0YW1wLnRtX21vbiArIDEsIHN0YW1wLnRtX21kYXksCiAgICAgICAgICAgc3RhbXAudG1faG91ciwgc3RhbXAudG1fbWluLCBzdGFtcC50bV9zZWMsCiAgICAgICAgICAgYXMtPnBlcnNpc3QsIGFzLT5wcmlvKTsKQEAgLTI1Miw3ICsyNjYsNyBAQAogI2lmZGVmIFVTRV9OR0hUVFAyCiAgICAgfCBDVVJMQUxUU1ZDX0gyCiAjZW5kaWYKLSNpZmRlZiBVU0VfSFRUUDMKKyNpZmRlZiBFTkFCTEVfUVVJQwogICAgIHwgQ1VSTEFMVFNWQ19IMwogI2VuZGlmCiAgICAgOwpAQCAtMjk3LDYgKzMxMSw3IEBACiAgICAgICBuID0gZS0+bmV4dDsKICAgICAgIGFsdHN2Y19mcmVlKGFzKTsKICAgICB9CisgICAgZnJlZShhbHRzdmMtPmZpbGVuYW1lKTsKICAgICBmcmVlKGFsdHN2Yyk7CiAgIH0KIH0KQEAgLTMwNCwzNCArMzE5LDU3IEBACiAvKgogICogQ3VybF9hbHRzdmNfc2F2ZSgpIHdyaXRlcyB0aGUgYWx0c3ZjIGNhY2hlIHRvIGEgZmlsZS4KICAqLwotQ1VSTGNvZGUgQ3VybF9hbHRzdmNfc2F2ZShzdHJ1Y3QgYWx0c3ZjaW5mbyAqYWx0c3ZjLCBjb25zdCBjaGFyICpmaWxlKQorQ1VSTGNvZGUgQ3VybF9hbHRzdmNfc2F2ZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWx0c3ZjaW5mbyAqYWx0c3ZjLCBjb25zdCBjaGFyICpmaWxlKQogewogICBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50ICplOwogICBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50ICpuOwogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKICAgRklMRSAqb3V0OworICBjaGFyICp0ZW1wc3RvcmU7CisgIHVuc2lnbmVkIGNoYXIgcmFuZHN1ZmZpeFs5XTsKIAogICBpZighYWx0c3ZjKQogICAgIC8qIG5vIGNhY2hlIGFjdGl2YXRlZCAqLwogICAgIHJldHVybiBDVVJMRV9PSzsKIAotICBpZigoYWx0c3ZjLT5mbGFncyAmIENVUkxBTFRTVkNfUkVBRE9OTFlGSUxFKSB8fCAhZmlsZVswXSkKLSAgICAvKiBtYXJrZWQgYXMgcmVhZC1vbmx5IG9yIHplcm8gbGVuZ3RoIGZpbGUgbmFtZSAqLworICAvKiBpZiBub3QgbmV3IG5hbWUgaXMgZ2l2ZW4sIHVzZSB0aGUgb25lIHdlIHN0b3JlZCBmcm9tIHRoZSBsb2FkICovCisgIGlmKCFmaWxlICYmIGFsdHN2Yy0+ZmlsZW5hbWUpCisgICAgZmlsZSA9IGFsdHN2Yy0+ZmlsZW5hbWU7CisKKyAgaWYoKGFsdHN2Yy0+ZmxhZ3MgJiBDVVJMQUxUU1ZDX1JFQURPTkxZRklMRSkgfHwgIWZpbGUgfHwgIWZpbGVbMF0pCisgICAgLyogbWFya2VkIGFzIHJlYWQtb25seSwgbm8gZmlsZSBvciB6ZXJvIGxlbmd0aCBmaWxlIG5hbWUgKi8KICAgICByZXR1cm4gQ1VSTEVfT0s7Ci0gIG91dCA9IGZvcGVuKGZpbGUsIEZPUEVOX1dSSVRFVEVYVCk7CisKKyAgaWYoQ3VybF9yYW5kX2hleChkYXRhLCByYW5kc3VmZml4LCBzaXplb2YocmFuZHN1ZmZpeCkpKQorICAgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKKworICB0ZW1wc3RvcmUgPSBhcHJpbnRmKCIlcy4lcy50bXAiLCBmaWxlLCByYW5kc3VmZml4KTsKKyAgaWYoIXRlbXBzdG9yZSkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICBvdXQgPSBmb3Blbih0ZW1wc3RvcmUsIEZPUEVOX1dSSVRFVEVYVCk7CiAgIGlmKCFvdXQpCi0gICAgcmV0dXJuIENVUkxFX1dSSVRFX0VSUk9SOwotICBmcHV0cygiIyBZb3VyIGFsdC1zdmMgY2FjaGUuIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWx0LXN2Yy5odG1sXG4iCi0gICAgICAgICIjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay5cbiIsCi0gICAgICAgIG91dCk7Ci0gIGZvcihlID0gYWx0c3ZjLT5saXN0LmhlYWQ7IGU7IGUgPSBuKSB7Ci0gICAgc3RydWN0IGFsdHN2YyAqYXMgPSBlLT5wdHI7Ci0gICAgbiA9IGUtPm5leHQ7Ci0gICAgcmVzdWx0ID0gYWx0c3ZjX291dChhcywgb3V0KTsKKyAgICByZXN1bHQgPSBDVVJMRV9XUklURV9FUlJPUjsKKyAgZWxzZSB7CisgICAgZnB1dHMoIiMgWW91ciBhbHQtc3ZjIGNhY2hlLiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2FsdC1zdmMuaHRtbFxuIgorICAgICAgICAgICIjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay5cbiIsCisgICAgICAgICAgb3V0KTsKKyAgICBmb3IoZSA9IGFsdHN2Yy0+bGlzdC5oZWFkOyBlOyBlID0gbikgeworICAgICAgc3RydWN0IGFsdHN2YyAqYXMgPSBlLT5wdHI7CisgICAgICBuID0gZS0+bmV4dDsKKyAgICAgIHJlc3VsdCA9IGFsdHN2Y19vdXQoYXMsIG91dCk7CisgICAgICBpZihyZXN1bHQpCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBmY2xvc2Uob3V0KTsKKyAgICBpZighcmVzdWx0ICYmIEN1cmxfcmVuYW1lKHRlbXBzdG9yZSwgZmlsZSkpCisgICAgICByZXN1bHQgPSBDVVJMRV9XUklURV9FUlJPUjsKKwogICAgIGlmKHJlc3VsdCkKLSAgICAgIGJyZWFrOworICAgICAgdW5saW5rKHRlbXBzdG9yZSk7CiAgIH0KLSAgZmNsb3NlKG91dCk7CisgIGZyZWUodGVtcHN0b3JlKTsKICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzQzLDE1ICszODEsMTUgQEAKICAgd2hpbGUoKnAgJiYgSVNCTEFOSygqcCkpCiAgICAgcCsrOwogICBwcm90b3AgPSBwOwotICB3aGlsZSgqcCAmJiBJU0FMTlVNKCpwKSkKKyAgd2hpbGUoKnAgJiYgIUlTQkxBTksoKnApICYmICgqcCAhPSAnOycpICYmICgqcCAhPSAnPScpKQogICAgIHArKzsKICAgbGVuID0gcCAtIHByb3RvcDsKKyAgKnB0ciA9IHA7CiAKICAgaWYoIWxlbiB8fCAobGVuID49IGJ1ZmxlbikpCiAgICAgcmV0dXJuIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKICAgbWVtY3B5KGFscG5idWYsIHByb3RvcCwgbGVuKTsKICAgYWxwbmJ1ZltsZW5dID0gMDsKLSAgKnB0ciA9IHA7CiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIApAQCAtMzY1LDkgKzQwMyw5IEBACiAgIGZvcihlID0gYXNpLT5saXN0LmhlYWQ7IGU7IGUgPSBuKSB7CiAgICAgc3RydWN0IGFsdHN2YyAqYXMgPSBlLT5wdHI7CiAgICAgbiA9IGUtPm5leHQ7Ci0gICAgaWYoKHNyY2FscG5pZCA9PSBhcy0+c3JjYWxwbmlkKSAmJgotICAgICAgIChzcmNwb3J0ID09IGFzLT5zcmNwb3J0KSAmJgotICAgICAgIHN0cmNhc2Vjb21wYXJlKHNyY2hvc3QsIGFzLT5zcmNob3N0KSkgeworICAgIGlmKChzcmNhbHBuaWQgPT0gYXMtPnNyYy5hbHBuaWQpICYmCisgICAgICAgKHNyY3BvcnQgPT0gYXMtPnNyYy5wb3J0KSAmJgorICAgICAgIHN0cmNhc2Vjb21wYXJlKHNyY2hvc3QsIGFzLT5zcmMuaG9zdCkpIHsKICAgICAgIEN1cmxfbGxpc3RfcmVtb3ZlKCZhc2ktPmxpc3QsIGUsIE5VTEwpOwogICAgICAgYWx0c3ZjX2ZyZWUoYXMpOwogICAgICAgYXNpLT5udW0tLTsKQEAgLTM5Nyw2ICs0MzUsMTAgQEAKICAqCiAgKiAndmFsdWUnIHBvaW50cyB0byB0aGUgaGVhZGVyICp2YWx1ZSouIFRoYXQncyBjb250ZW50cyB0byB0aGUgcmlnaHQgb2YgdGhlCiAgKiBoZWFkZXIgbmFtZS4KKyAqCisgKiBDdXJyZW50bHkgdGhpcyBmdW5jdGlvbiByZWplY3RzIGludmFsaWQgZGF0YSB3aXRob3V0IHJldHVybmluZyBhbiBlcnJvci4KKyAqIEludmFsaWQgaG9zdCBuYW1lLCBwb3J0IG51bWJlciB3aWxsIHJlc3VsdCBpbiB0aGUgc3BlY2lmaWMgYWx0ZXJuYXRpdmUKKyAqIGJlaW5nIHJlamVjdGVkLiBVbmtub3duIHByb3RvY29scyBhcmUgc2tpcHBlZC4KICAqLwogQ1VSTGNvZGUgQ3VybF9hbHRzdmNfcGFyc2Uoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbHRzdmNpbmZvICphc2ksIGNvbnN0IGNoYXIgKnZhbHVlLApAQCAtNDEwLDEyICs0NTIsMTEgQEAKICAgY2hhciBhbHBuYnVmW01BWF9BTFRTVkNfQUxQTkxFTl0gPSAiIjsKICAgc3RydWN0IGFsdHN2YyAqYXM7CiAgIHVuc2lnbmVkIHNob3J0IGRzdHBvcnQgPSBzcmNwb3J0OyAvKiB0aGUgc2FtZSBieSBkZWZhdWx0ICovCi0gIGNvbnN0IGNoYXIgKnNlbWlwOwotICB0aW1lX3QgbWF4YWdlID0gMjQgKiAzNjAwOyAvKiBkZWZhdWx0IGlzIDI0IGhvdXJzICovCi0gIGJvb2wgcGVyc2lzdCA9IEZBTFNFOwogICBDVVJMY29kZSByZXN1bHQgPSBnZXRhbG51bSgmcCwgYWxwbmJ1Ziwgc2l6ZW9mKGFscG5idWYpKTsKLSAgaWYocmVzdWx0KQotICAgIHJldHVybiByZXN1bHQ7CisgIGlmKHJlc3VsdCkgeworICAgIGluZm9mKGRhdGEsICJFeGNlc3NpdmUgYWx0LXN2YyBoZWFkZXIsIGlnbm9yaW5nLi4uXG4iKTsKKyAgICByZXR1cm4gQ1VSTEVfT0s7CisgIH0KIAogICBERUJVR0FTU0VSVChhc2kpOwogCkBAIC00MjcsNDcgKzQ2OCwyMCBAQAogICAgIHJldHVybiBDVVJMRV9PSzsKICAgfQogCi0gIC8qIFRoZSAnbWEnIGFuZCAncGVyc2lzdCcgZmxhZ3MgYXJlIGFubm95aW5nbHkgbWVhbnQgZm9yIGFsbCBhbHRlcm5hdGl2ZXMKLSAgICAgYnV0IGFyZSBzZXQgYWZ0ZXIgdGhlIGxpc3Qgb24gdGhlIGxpbmUuIFNjYW4gZm9yIHRoZSBzZW1pY29sb25zIGFuZCBnZXQKLSAgICAgdGhvc2UgZmllbGRzIGZpcnN0ISAqLwotICBzZW1pcCA9IHA7Ci0gIGRvIHsKLSAgICBzZW1pcCA9IHN0cmNocihzZW1pcCwgJzsnKTsKLSAgICBpZihzZW1pcCkgewotICAgICAgY2hhciBvcHRpb25bMzJdOwotICAgICAgdW5zaWduZWQgbG9uZyBudW07Ci0gICAgICBjaGFyICplbmRfcHRyOwotICAgICAgc2VtaXArKzsgLyogcGFzcyB0aGUgc2VtaWNvbG9uICovCi0gICAgICByZXN1bHQgPSBnZXRhbG51bSgmc2VtaXAsIG9wdGlvbiwgc2l6ZW9mKG9wdGlvbikpOwotICAgICAgaWYocmVzdWx0KQotICAgICAgICBicmVhazsKLSAgICAgIHdoaWxlKCpzZW1pcCAmJiBJU0JMQU5LKCpzZW1pcCkpCi0gICAgICAgIHNlbWlwKys7Ci0gICAgICBpZigqc2VtaXAgIT0gJz0nKQotICAgICAgICBjb250aW51ZTsKLSAgICAgIHNlbWlwKys7Ci0gICAgICBudW0gPSBzdHJ0b3VsKHNlbWlwLCAmZW5kX3B0ciwgMTApOwotICAgICAgaWYobnVtIDwgVUxPTkdfTUFYKSB7Ci0gICAgICAgIGlmKHN0cmNhc2Vjb21wYXJlKCJtYSIsIG9wdGlvbikpCi0gICAgICAgICAgbWF4YWdlID0gbnVtOwotICAgICAgICBlbHNlIGlmKHN0cmNhc2Vjb21wYXJlKCJwZXJzaXN0Iiwgb3B0aW9uKSAmJiAobnVtID09IDEpKQotICAgICAgICAgIHBlcnNpc3QgPSBUUlVFOwotICAgICAgfQotICAgICAgc2VtaXAgPSBlbmRfcHRyOwotICAgIH0KLSAgfSB3aGlsZShzZW1pcCk7Ci0KICAgZG8gewogICAgIGlmKCpwID09ICc9JykgewogICAgICAgLyogW3Byb3RvY29sXT0iW2hvc3RdWzpwb3J0XSIgKi8KICAgICAgIGRzdGFscG5pZCA9IGFscG4yYWxwbmlkKGFscG5idWYpOwotICAgICAgaWYoIWRzdGFscG5pZCkgewotICAgICAgICBpbmZvZihkYXRhLCAiVW5rbm93biBhbHQtc3ZjIHByb3RvY29sIFwiJXNcIiwgaWdub3JpbmcuLi5cbiIsIGFscG5idWYpOwotICAgICAgICByZXR1cm4gQ1VSTEVfT0s7Ci0gICAgICB9CiAgICAgICBwKys7CiAgICAgICBpZigqcCA9PSAnXCInKSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKmRzdGhvc3Q7CisgICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlX3B0cjsKKyAgICAgICAgY2hhciBvcHRpb25bMzJdOworICAgICAgICB1bnNpZ25lZCBsb25nIG51bTsKKyAgICAgICAgY2hhciAqZW5kX3B0cjsKKyAgICAgICAgYm9vbCBxdW90ZWQgPSBGQUxTRTsKKyAgICAgICAgdGltZV90IG1heGFnZSA9IDI0ICogMzYwMDsgLyogZGVmYXVsdCBpcyAyNCBob3VycyAqLworICAgICAgICBib29sIHBlcnNpc3QgPSBGQUxTRTsKICAgICAgICAgcCsrOwogICAgICAgICBpZigqcCAhPSAnOicpIHsKICAgICAgICAgICAvKiBob3N0IG5hbWUgc3RhcnRzIGhlcmUgKi8KQEAgLTQ3NSwxMSArNDg5LDE1IEBACiAgICAgICAgICAgd2hpbGUoKnAgJiYgKElTQUxOVU0oKnApIHx8ICgqcCA9PSAnLicpIHx8ICgqcCA9PSAnLScpKSkKICAgICAgICAgICAgIHArKzsKICAgICAgICAgICBsZW4gPSBwIC0gaG9zdHA7Ci0gICAgICAgICAgaWYoIWxlbiB8fCAobGVuID49IE1BWF9BTFRTVkNfSE9TVExFTikpCi0gICAgICAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOwotICAgICAgICAgIG1lbWNweShuYW1lYnVmLCBob3N0cCwgbGVuKTsKLSAgICAgICAgICBuYW1lYnVmW2xlbl0gPSAwOwotICAgICAgICAgIGRzdGhvc3QgPSBuYW1lYnVmOworICAgICAgICAgIGlmKCFsZW4gfHwgKGxlbiA+PSBNQVhfQUxUU1ZDX0hPU1RMRU4pKSB7CisgICAgICAgICAgICBpbmZvZihkYXRhLCAiRXhjZXNzaXZlIGFsdC1zdmMgaG9zdCBuYW1lLCBpZ25vcmluZy4uLlxuIik7CisgICAgICAgICAgICBkc3RhbHBuaWQgPSBBTFBOX25vbmU7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KG5hbWVidWYsIGhvc3RwLCBsZW4pOworICAgICAgICAgICAgbmFtZWJ1ZltsZW5dID0gMDsKKyAgICAgICAgICAgIGRzdGhvc3QgPSBuYW1lYnVmOworICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAvKiBubyBkZXN0aW5hdGlvbiBuYW1lLCB1c2Ugc291cmNlIGhvc3QgKi8KQEAgLTQ4NywzMSArNTA1LDg2IEBACiAgICAgICAgIH0KICAgICAgICAgaWYoKnAgPT0gJzonKSB7CiAgICAgICAgICAgLyogYSBwb3J0IG51bWJlciAqLwotICAgICAgICAgIGNoYXIgKmVuZF9wdHI7CiAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwb3J0ID0gc3RydG91bCgrK3AsICZlbmRfcHRyLCAxMCk7CiAgICAgICAgICAgaWYocG9ydCA+IFVTSFJUX01BWCB8fCBlbmRfcHRyID09IHAgfHwgKmVuZF9wdHIgIT0gJ1wiJykgewogICAgICAgICAgICAgaW5mb2YoZGF0YSwgIlVua25vd24gYWx0LXN2YyBwb3J0IG51bWJlciwgaWdub3JpbmcuLi5cbiIpOwotICAgICAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgICAgICAgZHN0YWxwbmlkID0gQUxQTl9ub25lOwogICAgICAgICAgIH0KICAgICAgICAgICBwID0gZW5kX3B0cjsKICAgICAgICAgICBkc3Rwb3J0ID0gY3VybHhfdWx0b3VzKHBvcnQpOwogICAgICAgICB9CiAgICAgICAgIGlmKCpwKysgIT0gJ1wiJykKLSAgICAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOwotICAgICAgICBhcyA9IGFsdHN2Y19jcmVhdGVpZChzcmNob3N0LCBkc3Rob3N0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNhbHBuaWQsIGRzdGFscG5pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjcG9ydCwgZHN0cG9ydCk7Ci0gICAgICAgIGlmKGFzKSB7Ci0gICAgICAgICAgLyogVGhlIGV4cGlyZXMgdGltZSBhbHNvIG5lZWRzIHRvIHRha2UgdGhlIEFnZTogdmFsdWUgKGlmIGFueSkgaW50bwotICAgICAgICAgICAgIGFjY291bnQuIFtTZWUgUkZDIDc4Mzggc2VjdGlvbiAzLjFdICovCi0gICAgICAgICAgYXMtPmV4cGlyZXMgPSBtYXhhZ2UgKyB0aW1lKE5VTEwpOwotICAgICAgICAgIGFzLT5wZXJzaXN0ID0gcGVyc2lzdDsKLSAgICAgICAgICBDdXJsX2xsaXN0X2luc2VydF9uZXh0KCZhc2ktPmxpc3QsIGFzaS0+bGlzdC50YWlsLCBhcywgJmFzLT5ub2RlKTsKLSAgICAgICAgICBhc2ktPm51bSsrOyAvKiBvbmUgbW9yZSBlbnRyeSAqLwotICAgICAgICAgIGluZm9mKGRhdGEsICJBZGRlZCBhbHQtc3ZjOiAlczolZCBvdmVyICVzXG4iLCBkc3Rob3N0LCBkc3Rwb3J0LAotICAgICAgICAgICAgICAgIEN1cmxfYWxwbmlkMnN0cihkc3RhbHBuaWQpKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgLyogSGFuZGxlIHRoZSBvcHRpb25hbCAnbWEnIGFuZCAncGVyc2lzdCcgZmxhZ3MuIFVua25vd24gZmxhZ3MKKyAgICAgICAgICAgYXJlIHNraXBwZWQuICovCisgICAgICAgIGZvcig7OykgeworICAgICAgICAgIHdoaWxlKCpwICYmIElTQkxBTksoKnApICYmICpwICE9ICc7JyAmJiAqcCAhPSAnLCcpCisgICAgICAgICAgICBwKys7CisgICAgICAgICAgaWYoISpwIHx8ICpwID09ICcsJykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIHArKzsgLyogcGFzcyB0aGUgc2VtaWNvbG9uICovCisgICAgICAgICAgaWYoISpwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgcmVzdWx0ID0gZ2V0YWxudW0oJnAsIG9wdGlvbiwgc2l6ZW9mKG9wdGlvbikpOworICAgICAgICAgIGlmKHJlc3VsdCkgeworICAgICAgICAgICAgLyogc2tpcCBvcHRpb24gaWYgbmFtZSBpcyB0b28gbG9uZyAqLworICAgICAgICAgICAgb3B0aW9uWzBdID0gJ1wwJzsKKyAgICAgICAgICB9CisgICAgICAgICAgd2hpbGUoKnAgJiYgSVNCTEFOSygqcCkpCisgICAgICAgICAgICBwKys7CisgICAgICAgICAgaWYoKnAgIT0gJz0nKQorICAgICAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgICAgIHArKzsKKyAgICAgICAgICB3aGlsZSgqcCAmJiBJU0JMQU5LKCpwKSkKKyAgICAgICAgICAgIHArKzsKKyAgICAgICAgICBpZighKnApCisgICAgICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgICAgICAgaWYoKnAgPT0gJ1wiJykgeworICAgICAgICAgICAgLyogcXVvdGVkIHZhbHVlICovCisgICAgICAgICAgICBwKys7CisgICAgICAgICAgICBxdW90ZWQgPSBUUlVFOworICAgICAgICAgIH0KKyAgICAgICAgICB2YWx1ZV9wdHIgPSBwOworICAgICAgICAgIGlmKHF1b3RlZCkgeworICAgICAgICAgICAgd2hpbGUoKnAgJiYgKnAgIT0gJ1wiJykKKyAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgaWYoISpwKyspCisgICAgICAgICAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB3aGlsZSgqcCAmJiAhSVNCTEFOSygqcCkgJiYgKnAhPSAnOycgJiYgKnAgIT0gJywnKQorICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgfQorICAgICAgICAgIG51bSA9IHN0cnRvdWwodmFsdWVfcHRyLCAmZW5kX3B0ciwgMTApOworICAgICAgICAgIGlmKChlbmRfcHRyICE9IHZhbHVlX3B0cikgJiYgKG51bSA8IFVMT05HX01BWCkpIHsKKyAgICAgICAgICAgIGlmKHN0cmNhc2Vjb21wYXJlKCJtYSIsIG9wdGlvbikpCisgICAgICAgICAgICAgIG1heGFnZSA9IG51bTsKKyAgICAgICAgICAgIGVsc2UgaWYoc3RyY2FzZWNvbXBhcmUoInBlcnNpc3QiLCBvcHRpb24pICYmIChudW0gPT0gMSkpCisgICAgICAgICAgICAgIHBlcnNpc3QgPSBUUlVFOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZihkc3RhbHBuaWQpIHsKKyAgICAgICAgICBhcyA9IGFsdHN2Y19jcmVhdGVpZChzcmNob3N0LCBkc3Rob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2FscG5pZCwgZHN0YWxwbmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3BvcnQsIGRzdHBvcnQpOworICAgICAgICAgIGlmKGFzKSB7CisgICAgICAgICAgICAvKiBUaGUgZXhwaXJlcyB0aW1lIGFsc28gbmVlZHMgdG8gdGFrZSB0aGUgQWdlOiB2YWx1ZSAoaWYgYW55KSBpbnRvCisgICAgICAgICAgICAgICBhY2NvdW50LiBbU2VlIFJGQyA3ODM4IHNlY3Rpb24gMy4xXSAqLworICAgICAgICAgICAgYXMtPmV4cGlyZXMgPSBtYXhhZ2UgKyB0aW1lKE5VTEwpOworICAgICAgICAgICAgYXMtPnBlcnNpc3QgPSBwZXJzaXN0OworICAgICAgICAgICAgQ3VybF9sbGlzdF9pbnNlcnRfbmV4dCgmYXNpLT5saXN0LCBhc2ktPmxpc3QudGFpbCwgYXMsICZhcy0+bm9kZSk7CisgICAgICAgICAgICBhc2ktPm51bSsrOyAvKiBvbmUgbW9yZSBlbnRyeSAqLworICAgICAgICAgICAgaW5mb2YoZGF0YSwgIkFkZGVkIGFsdC1zdmM6ICVzOiVkIG92ZXIgJXNcbiIsIGRzdGhvc3QsIGRzdHBvcnQsCisgICAgICAgICAgICAgICAgICBDdXJsX2FscG5pZDJzdHIoZHN0YWxwbmlkKSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGluZm9mKGRhdGEsICJVbmtub3duIGFsdC1zdmMgcHJvdG9jb2wgXCIlc1wiLCBza2lwcGluZy4uLlxuIiwKKyAgICAgICAgICAgICAgICBhbHBuYnVmKTsKICAgICAgICAgfQogICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBicmVhazsKICAgICAgIC8qIGFmdGVyIHRoZSBkb3VibGUgcXVvdGUgdGhlcmUgY2FuIGJlIGEgY29tbWEgaWYgdGhlcmUncyBhbm90aGVyCiAgICAgICAgICBzdHJpbmcgb3IgYSBzZW1pY29sb24gaWYgbm8gbW9yZSAqLwogICAgICAgaWYoKnAgPT0gJywnKSB7CkBAIC01MTksMTEgKzU5MiwxMSBAQAogICAgICAgICBwKys7CiAgICAgICAgIHJlc3VsdCA9IGdldGFsbnVtKCZwLCBhbHBuYnVmLCBzaXplb2YoYWxwbmJ1ZikpOwogICAgICAgICBpZihyZXN1bHQpCi0gICAgICAgICAgLyogZmFpbGVkIHRvIHBhcnNlLCBidXQgc2luY2Ugd2UgYWxyZWFkeSBkaWQgYXQgbGVhc3Qgb25lIGhvc3Qgd2UKLSAgICAgICAgICAgICByZXR1cm4gT0sgKi8KLSAgICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgfQorICAgIGVsc2UKKyAgICAgIGJyZWFrOwogICB9IHdoaWxlKCpwICYmICgqcCAhPSAnOycpICYmICgqcCAhPSAnXG4nKSAmJiAoKnAgIT0gJ1xyJykpOwogCiAgIHJldHVybiBDVVJMRV9PSzsKQEAgLTUzNSwzMSArNjA4LDMxIEBACiBib29sIEN1cmxfYWx0c3ZjX2xvb2t1cChzdHJ1Y3QgYWx0c3ZjaW5mbyAqYXNpLAogICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBhbHBuaWQgc3JjYWxwbmlkLCBjb25zdCBjaGFyICpzcmNob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGFscG5pZCAqZHN0YWxwbmlkLCBjb25zdCBjaGFyICoqZHN0aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZHN0cG9ydCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbHRzdmMgKipkc3RlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCB2ZXJzaW9ucykgLyogb25lIG9yIG1vcmUgYml0cyAqLwogewogICBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50ICplOwogICBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50ICpuOwogICB0aW1lX3Qgbm93ID0gdGltZShOVUxMKTsKICAgREVCVUdBU1NFUlQoYXNpKTsKICAgREVCVUdBU1NFUlQoc3JjaG9zdCk7Ci0gIERFQlVHQVNTRVJUKGRzdGhvc3QpOworICBERUJVR0FTU0VSVChkc3RlbnRyeSk7CiAKICAgZm9yKGUgPSBhc2ktPmxpc3QuaGVhZDsgZTsgZSA9IG4pIHsKICAgICBzdHJ1Y3QgYWx0c3ZjICphcyA9IGUtPnB0cjsKICAgICBuID0gZS0+bmV4dDsKICAgICBpZihhcy0+ZXhwaXJlcyA8IG5vdykgewogICAgICAgLyogYW4gZXhwaXJlZCBlbnRyeSwgcmVtb3ZlICovCisgICAgICBDdXJsX2xsaXN0X3JlbW92ZSgmYXNpLT5saXN0LCBlLCBOVUxMKTsKICAgICAgIGFsdHN2Y19mcmVlKGFzKTsKICAgICAgIGNvbnRpbnVlOwogICAgIH0KLSAgICBpZigoYXMtPnNyY2FscG5pZCA9PSBzcmNhbHBuaWQpICYmCi0gICAgICAgc3RyY2FzZWNvbXBhcmUoYXMtPnNyY2hvc3QsIHNyY2hvc3QpICYmCi0gICAgICAgYXMtPnNyY3BvcnQgPT0gc3JjcG9ydCkgeworICAgIGlmKChhcy0+c3JjLmFscG5pZCA9PSBzcmNhbHBuaWQpICYmCisgICAgICAgc3RyY2FzZWNvbXBhcmUoYXMtPnNyYy5ob3N0LCBzcmNob3N0KSAmJgorICAgICAgIChhcy0+c3JjLnBvcnQgPT0gc3JjcG9ydCkgJiYKKyAgICAgICAodmVyc2lvbnMgJiBhcy0+ZHN0LmFscG5pZCkpIHsKICAgICAgIC8qIG1hdGNoICovCi0gICAgICAqZHN0YWxwbmlkID0gYXMtPmRzdGFscG5pZDsKLSAgICAgICpkc3Rob3N0ID0gYXMtPmRzdGhvc3Q7Ci0gICAgICAqZHN0cG9ydCA9IGFzLT5kc3Rwb3J0OworICAgICAgKmRzdGVudHJ5ID0gYXM7CiAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2FsdHN2Yy5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvYWx0c3ZjLmgKaW5kZXggZWVmYjQ1Yi4uMjQ4ZTcxZSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvYWx0c3ZjLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvYWx0c3ZjLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDE5IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMjgsMjAgKzI4LDIxIEBACiAjaW5jbHVkZSAibGxpc3QuaCIKIAogZW51bSBhbHBuaWQgewotICBBTFBOX25vbmUsCi0gIEFMUE5faDEsCi0gIEFMUE5faDIsCi0gIEFMUE5faDJjLAotICBBTFBOX2gzCisgIEFMUE5fbm9uZSA9IDAsCisgIEFMUE5faDEgPSBDVVJMQUxUU1ZDX0gxLAorICBBTFBOX2gyID0gQ1VSTEFMVFNWQ19IMiwKKyAgQUxQTl9oMyA9IENVUkxBTFRTVkNfSDMKK307CisKK3N0cnVjdCBhbHRob3N0IHsKKyAgY2hhciAqaG9zdDsKKyAgdW5zaWduZWQgc2hvcnQgcG9ydDsKKyAgZW51bSBhbHBuaWQgYWxwbmlkOwogfTsKIAogc3RydWN0IGFsdHN2YyB7Ci0gIGNoYXIgKnNyY2hvc3Q7Ci0gIGNoYXIgKmRzdGhvc3Q7Ci0gIHVuc2lnbmVkIHNob3J0IHNyY3BvcnQ7Ci0gIHVuc2lnbmVkIHNob3J0IGRzdHBvcnQ7Ci0gIGVudW0gYWxwbmlkIHNyY2FscG5pZDsKLSAgZW51bSBhbHBuaWQgZHN0YWxwbmlkOworICBzdHJ1Y3QgYWx0aG9zdCBzcmM7CisgIHN0cnVjdCBhbHRob3N0IGRzdDsKICAgdGltZV90IGV4cGlyZXM7CiAgIGJvb2wgcGVyc2lzdDsKICAgaW50IHByaW87CkBAIC01OCw3ICs1OSw4IEBACiBjb25zdCBjaGFyICpDdXJsX2FscG5pZDJzdHIoZW51bSBhbHBuaWQgaWQpOwogc3RydWN0IGFsdHN2Y2luZm8gKkN1cmxfYWx0c3ZjX2luaXQodm9pZCk7CiBDVVJMY29kZSBDdXJsX2FsdHN2Y19sb2FkKHN0cnVjdCBhbHRzdmNpbmZvICphc2ksIGNvbnN0IGNoYXIgKmZpbGUpOwotQ1VSTGNvZGUgQ3VybF9hbHRzdmNfc2F2ZShzdHJ1Y3QgYWx0c3ZjaW5mbyAqYXNpLCBjb25zdCBjaGFyICpmaWxlKTsKK0NVUkxjb2RlIEN1cmxfYWx0c3ZjX3NhdmUoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFsdHN2Y2luZm8gKmFzaSwgY29uc3QgY2hhciAqZmlsZSk7CiBDVVJMY29kZSBDdXJsX2FsdHN2Y19jdHJsKHN0cnVjdCBhbHRzdmNpbmZvICphc2ksIGNvbnN0IGxvbmcgY3RybCk7CiB2b2lkIEN1cmxfYWx0c3ZjX2NsZWFudXAoc3RydWN0IGFsdHN2Y2luZm8gKmFsdHN2Yyk7CiBDVVJMY29kZSBDdXJsX2FsdHN2Y19wYXJzZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLApAQCAtNjgsMTAgKzcwLDEwIEBACiBib29sIEN1cmxfYWx0c3ZjX2xvb2t1cChzdHJ1Y3QgYWx0c3ZjaW5mbyAqYXNpLAogICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBhbHBuaWQgc3JjYWxwbmlkLCBjb25zdCBjaGFyICpzcmNob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGFscG5pZCAqZHN0YWxwbmlkLCBjb25zdCBjaGFyICoqZHN0aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZHN0cG9ydCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWx0c3ZjICoqZHN0ZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgdmVyc2lvbnMpOyAvKiBDVVJMQUxUU1ZDX0gqIGJpdHMgKi8KICNlbHNlCiAvKiBkaXNhYmxlZCAqLwotI2RlZmluZSBDdXJsX2FsdHN2Y19zYXZlKGEsYikKKyNkZWZpbmUgQ3VybF9hbHRzdmNfc2F2ZShhLGIsYykKICNlbmRpZiAvKiBDVVJMX0RJU0FCTEVfSFRUUCB8fCBVU0VfQUxUU1ZDICovCiAjZW5kaWYgLyogSEVBREVSX0NVUkxfQUxUU1ZDX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2FzeW4tYXJlcy5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvYXN5bi1hcmVzLmMKaW5kZXggODU2MWE0Ny4uYjc2ZTY2NSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvYXN5bi1hcmVzLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvYXN5bi1hcmVzLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTI1MywxNiArMjUzLDE0IEBACiAgKi8KIAogaW50IEN1cmxfcmVzb2x2ZXJfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpCi0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MpCiB7CiAgIHN0cnVjdCB0aW1ldmFsIG1heHRpbWU7CiAgIHN0cnVjdCB0aW1ldmFsIHRpbWVidWY7CiAgIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0OwogICBsb25nIG1pbGxpOwogICBpbnQgbWF4ID0gYXJlc19nZXRzb2NrKChhcmVzX2NoYW5uZWwpY29ubi0+ZGF0YS0+c3RhdGUucmVzb2x2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGFyZXNfc29ja2V0X3QgKilzb2NrcywgbnVtc29ja3MpOworICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVzX3NvY2tldF90ICopc29ja3MsIE1BWF9TT0NLU1BFUkVBU1lIQU5ETEUpOwogCiAgIG1heHRpbWUudHZfc2VjID0gQ1VSTF9USU1FT1VUX1JFU09MVkU7CiAgIG1heHRpbWUudHZfdXNlYyA9IDA7CkBAIC02MjgsMjYgKzYyNiwxMSBAQAogewogICBjaGFyICpidWZwOwogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgc3RydWN0IGluX2FkZHIgaW47CiAgIGludCBmYW1pbHkgPSBQRl9JTkVUOwotI2lmZGVmIEVOQUJMRV9JUFY2IC8qIENVUkxSRVNfSVBWNiAqLwotICBzdHJ1Y3QgaW42X2FkZHIgaW42OwotI2VuZGlmIC8qIENVUkxSRVNfSVBWNiAqLwogCiAgICp3YWl0cCA9IDA7IC8qIGRlZmF1bHQgdG8gc3luY2hyb25vdXMgcmVzcG9uc2UgKi8KIAotICAvKiBGaXJzdCBjaGVjayBpZiB0aGlzIGlzIGFuIElQdjQgYWRkcmVzcyBzdHJpbmcgKi8KLSAgaWYoQ3VybF9pbmV0X3B0b24oQUZfSU5FVCwgaG9zdG5hbWUsICZpbikgPiAwKSB7Ci0gICAgLyogVGhpcyBpcyBhIGRvdHRlZCBJUCBhZGRyZXNzIDEyMy4xMjMuMTIzLjEyMy1zdHlsZSAqLwotICAgIHJldHVybiBDdXJsX2lwMmFkZHIoQUZfSU5FVCwgJmluLCBob3N0bmFtZSwgcG9ydCk7Ci0gIH0KLQogI2lmZGVmIEVOQUJMRV9JUFY2IC8qIENVUkxSRVNfSVBWNiAqLwotICAvKiBPdGhlcndpc2UsIGNoZWNrIGlmIHRoaXMgaXMgYW4gSVB2NiBhZGRyZXNzIHN0cmluZyAqLwotICBpZihDdXJsX2luZXRfcHRvbiAoQUZfSU5FVDYsIGhvc3RuYW1lLCAmaW42KSA+IDApCi0gICAgLyogVGhpcyBtdXN0IGJlIGFuIElQdjYgYWRkcmVzcyBsaXRlcmFsLiAgKi8KLSAgICByZXR1cm4gQ3VybF9pcDJhZGRyKEFGX0lORVQ2LCAmaW42LCBob3N0bmFtZSwgcG9ydCk7Ci0KICAgc3dpdGNoKGNvbm4tPmlwX3ZlcnNpb24pIHsKICAgZGVmYXVsdDoKICNpZiBBUkVTX1ZFUlNJT04gPj0gMHgwMTA2MDEKQEAgLTY4Niw3ICs2NjksNyBAQAogICAgIHJlcy0+bGFzdF9zdGF0dXMgPSBBUkVTX0VOT1RGT1VORDsKICNpZmRlZiBFTkFCTEVfSVBWNiAvKiBDVVJMUkVTX0lQVjYgKi8KICAgICBpZihmYW1pbHkgPT0gUEZfVU5TUEVDKSB7Ci0gICAgICBpZihDdXJsX2lwdjZ3b3JrcygpKSB7CisgICAgICBpZihDdXJsX2lwdjZ3b3Jrcyhjb25uKSkgewogICAgICAgICByZXMtPm51bV9wZW5kaW5nID0gMjsKIAogICAgICAgICAvKiBhcmVzY2hhbm5lbCBpcyBhbHJlYWR5IHNldHVwIGluIHRoZSBDdXJsX29wZW4oKSBmdW5jdGlvbiAqLwpAQCAtNzM0LDcgKzcxNywxMSBAQAogICAgIHJldHVybiBDVVJMRV9PSzsKIAogI2lmIChBUkVTX1ZFUlNJT04gPj0gMHgwMTA3MDQpCisjaWYgKEFSRVNfVkVSU0lPTiA+PSAweDAxMGIwMCkKKyAgYXJlc19yZXN1bHQgPSBhcmVzX3NldF9zZXJ2ZXJzX3BvcnRzX2NzdihkYXRhLT5zdGF0ZS5yZXNvbHZlciwgc2VydmVycyk7CisjZWxzZQogICBhcmVzX3Jlc3VsdCA9IGFyZXNfc2V0X3NlcnZlcnNfY3N2KGRhdGEtPnN0YXRlLnJlc29sdmVyLCBzZXJ2ZXJzKTsKKyNlbmRpZgogICBzd2l0Y2goYXJlc19yZXN1bHQpIHsKICAgY2FzZSBBUkVTX1NVQ0NFU1M6CiAgICAgcmVzdWx0ID0gQ1VSTEVfT0s7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9hc3luLXRocmVhZC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvYXN5bi10aHJlYWQuYwppbmRleCA1NWUwODExLi42OGRjYmIzIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9hc3luLXRocmVhZC5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2FzeW4tdGhyZWFkLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTIxLDYgKzIxLDcgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisjaW5jbHVkZSAic29ja2V0cGFpci5oIgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIE9ubHkgZm9yIHRocmVhZGVkIG5hbWUgcmVzb2x2ZXMgYnVpbGRzCkBAIC03MCwxMCArNzEsMTAgQEAKICNpbmNsdWRlICJzdHJlcnJvci5oIgogI2luY2x1ZGUgInVybC5oIgogI2luY2x1ZGUgIm11bHRpaWYuaCIKLSNpbmNsdWRlICJpbmV0X3B0b24uaCIKICNpbmNsdWRlICJpbmV0X250b3AuaCIKICNpbmNsdWRlICJjdXJsX3RocmVhZHMuaCIKICNpbmNsdWRlICJjb25uZWN0LmgiCisjaW5jbHVkZSAic29ja2V0cGFpci5oIgogLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKQEAgLTE2Myw2ICsxNjQsMTAgQEAKICAgY2hhciAqaG9zdG5hbWU7ICAgICAgICAvKiBob3N0bmFtZSB0byByZXNvbHZlLCBDdXJsX2FzeW5jLmhvc3RuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlICovCiAgIGludCBwb3J0OworI2lmZGVmIFVTRV9TT0NLRVRQQUlSCisgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubjsKKyAgY3VybF9zb2NrZXRfdCBzb2NrX3BhaXJbMl07IC8qIHNvY2tldCBwYWlyICovCisjZW5kaWYKICAgaW50IHNvY2tfZXJyb3I7CiAgIEN1cmxfYWRkcmluZm8gKnJlczsKICNpZmRlZiBIQVZFX0dFVEFERFJJTkZPCkBAIC0xOTcsNiArMjAyLDE1IEBACiAgIGlmKHRzZC0+cmVzKQogICAgIEN1cmxfZnJlZWFkZHJpbmZvKHRzZC0+cmVzKTsKIAorI2lmZGVmIFVTRV9TT0NLRVRQQUlSCisgIC8qCisgICAqIGNsb3NlIG9uZSBlbmQgb2YgdGhlIHNvY2tldCBwYWlyIChtYXkgYmUgZG9uZSBpbiByZXNvbHZlciB0aHJlYWQpOworICAgKiB0aGUgb3RoZXIgZW5kIChmb3IgcmVhZGluZykgaXMgYWx3YXlzIGNsb3NlZCBpbiB0aGUgcGFyZW50IHRocmVhZC4KKyAgICovCisgIGlmKHRzZC0+c29ja19wYWlyWzFdICE9IENVUkxfU09DS0VUX0JBRCkgeworICAgIHNjbG9zZSh0c2QtPnNvY2tfcGFpclsxXSk7CisgIH0KKyNlbmRpZgogICBtZW1zZXQodHNkLCAwLCBzaXplb2YoKnRzZCkpOwogfQogCkBAIC0yMzAsNiArMjQ0LDE0IEBACiAKICAgQ3VybF9tdXRleF9pbml0KHRzZC0+bXR4KTsKIAorI2lmZGVmIFVTRV9TT0NLRVRQQUlSCisgIC8qIGNyZWF0ZSBzb2NrZXQgcGFpciwgYXZvaWQgQUZfTE9DQUwgc2luY2UgaXQgZG9lc24ndCBidWlsZCBvbiBTb2xhcmlzICovCisgIGlmKEN1cmxfc29ja2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCwgJnRzZC0+c29ja19wYWlyWzBdKSA8IDApIHsKKyAgICB0c2QtPnNvY2tfcGFpclswXSA9IENVUkxfU09DS0VUX0JBRDsKKyAgICB0c2QtPnNvY2tfcGFpclsxXSA9IENVUkxfU09DS0VUX0JBRDsKKyAgICBnb3RvIGVycl9leGl0OworICB9CisjZW5kaWYKICAgdHNkLT5zb2NrX2Vycm9yID0gQ1VSTF9BU1lOQ19TVUNDRVNTOwogCiAgIC8qIENvcHlpbmcgaG9zdG5hbWUgc3RyaW5nIGJlY2F1c2Ugb3JpZ2luYWwgY2FuIGJlIGRlc3Ryb3llZCBieSBwYXJlbnQKQEAgLTI3Niw2ICsyOTgsOSBAQAogICBzdHJ1Y3QgdGhyZWFkX2RhdGEgKnRkID0gdHNkLT50ZDsKICAgY2hhciBzZXJ2aWNlWzEyXTsKICAgaW50IHJjOworI2lmZGVmIFVTRV9TT0NLRVRQQUlSCisgIGNoYXIgYnVmWzFdOworI2VuZGlmCiAKICAgbXNucHJpbnRmKHNlcnZpY2UsIHNpemVvZihzZXJ2aWNlKSwgIiVkIiwgdHNkLT5wb3J0KTsKIApAQCAtMjk4LDYgKzMyMywxNiBAQAogICAgIGZyZWUodGQpOwogICB9CiAgIGVsc2UgeworI2lmZGVmIFVTRV9TT0NLRVRQQUlSCisgICAgaWYodHNkLT5zb2NrX3BhaXJbMV0gIT0gQ1VSTF9TT0NLRVRfQkFEKSB7CisgICAgICAvKiBETlMgaGFzIGJlZW4gcmVzb2x2ZWQsIHNpZ25hbCBjbGllbnQgdGFzayAqLworICAgICAgYnVmWzBdID0gMTsKKyAgICAgIGlmKHN3cml0ZSh0c2QtPnNvY2tfcGFpclsxXSwgIGJ1Ziwgc2l6ZW9mKGJ1ZikpIDwgMCkgeworICAgICAgICAvKiB1cGRhdGUgc29ja19lcnJvIHRvIGVycm5vICovCisgICAgICAgIHRzZC0+c29ja19lcnJvciA9IFNPQ0tFUlJOTzsKKyAgICAgIH0KKyAgICB9CisjZW5kaWYKICAgICB0c2QtPmRvbmUgPSAxOwogICAgIEN1cmxfbXV0ZXhfcmVsZWFzZSh0c2QtPm10eCk7CiAgIH0KQEAgLTM0OCw2ICszODMsMTAgQEAKICAgaWYoYXN5bmMtPm9zX3NwZWNpZmljKSB7CiAgICAgc3RydWN0IHRocmVhZF9kYXRhICp0ZCA9IChzdHJ1Y3QgdGhyZWFkX2RhdGEqKSBhc3luYy0+b3Nfc3BlY2lmaWM7CiAgICAgaW50IGRvbmU7CisjaWZkZWYgVVNFX1NPQ0tFVFBBSVIKKyAgICBjdXJsX3NvY2tldF90IHNvY2tfcmQgPSB0ZC0+dHNkLnNvY2tfcGFpclswXTsKKyAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSB0ZC0+dHNkLmNvbm47CisjZW5kaWYKIAogICAgIC8qCiAgICAgICogaWYgdGhlIHRocmVhZCBpcyBzdGlsbCBibG9ja2luZyBpbiB0aGUgcmVzb2x2ZSBzeXNjYWxsLCBkZXRhY2ggaXQgYW5kCkBAIC0zNjksNiArNDA4LDE1IEBACiAKICAgICAgIGZyZWUoYXN5bmMtPm9zX3NwZWNpZmljKTsKICAgICB9CisjaWZkZWYgVVNFX1NPQ0tFVFBBSVIKKyAgICAvKgorICAgICAqIGVuc3VyZSBDVVJMTU9QVF9TT0NLRVRGVU5DVElPTiBmaXJlcyBDVVJMX1BPTExfUkVNT1ZFCisgICAgICogYmVmb3JlIHRoZSBGRCBpcyBpbnZhbGlkYXRlZCB0byBhdm9pZCBFQkFERiBvbiBFUE9MTF9DVExfREVMCisgICAgICovCisgICAgaWYoY29ubikKKyAgICAgIEN1cmxfbXVsdGlfY2xvc2VkKGNvbm4tPmRhdGEsIHNvY2tfcmQpOworICAgIHNjbG9zZShzb2NrX3JkKTsKKyNlbmRpZgogICB9CiAgIGFzeW5jLT5vc19zcGVjaWZpYyA9IE5VTEw7CiAKQEAgLTU2OSw4ICs2MTcsOSBAQAogICB9CiAgIGVsc2UgewogICAgIC8qIHBvbGwgZm9yIG5hbWUgbG9va3VwIGRvbmUgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIHVwIHRvIDI1MG1zICovCi0gICAgdGltZWRpZmZfdCBlbGFwc2VkID0gQ3VybF90aW1lZGlmZihDdXJsX25vdygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+cHJvZ3Jlc3MudF9zdGFydHNpbmdsZSk7CisgICAgLyogc2hvdWxkIGJlIGZpbmUgZXZlbiBpZiB0aGlzIGNvbnZlcnRzIHRvIDMyIGJpdCAqLworICAgIHRpbWVfdCBlbGFwc2VkID0gKHRpbWVfdClDdXJsX3RpbWVkaWZmKEN1cmxfbm93KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+cHJvZ3Jlc3MudF9zdGFydHNpbmdsZSk7CiAgICAgaWYoZWxhcHNlZCA8IDApCiAgICAgICBlbGFwc2VkID0gMDsKIApAQCAtNTkyLDI2ICs2NDEsNDUgQEAKIH0KIAogaW50IEN1cmxfcmVzb2x2ZXJfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzKQogeworICBpbnQgcmV0X3ZhbCA9IDA7CiAgIHRpbWVfdCBtaWxsaTsKICAgdGltZWRpZmZfdCBtczsKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIHN0cnVjdCByZXNkYXRhICpyZXNsdiA9IChzdHJ1Y3QgcmVzZGF0YSAqKWRhdGEtPnN0YXRlLnJlc29sdmVyOworI2lmZGVmIFVTRV9TT0NLRVRQQUlSCisgIHN0cnVjdCB0aHJlYWRfZGF0YSAqdGQgPSAoc3RydWN0IHRocmVhZF9kYXRhKiljb25uLT5hc3luYy5vc19zcGVjaWZpYzsKKyNlbHNlCiAgICh2b2lkKXNvY2tzOwotICAodm9pZCludW1zb2NrczsKLSAgbXMgPSBDdXJsX3RpbWVkaWZmKEN1cmxfbm93KCksIHJlc2x2LT5zdGFydCk7Ci0gIGlmKG1zIDwgMykKLSAgICBtaWxsaSA9IDA7Ci0gIGVsc2UgaWYobXMgPD0gNTApCi0gICAgbWlsbGkgPSBtcy8zOwotICBlbHNlIGlmKG1zIDw9IDI1MCkKLSAgICBtaWxsaSA9IDUwOwotICBlbHNlCi0gICAgbWlsbGkgPSAyMDA7Ci0gIEN1cmxfZXhwaXJlKGRhdGEsIG1pbGxpLCBFWFBJUkVfQVNZTkNfTkFNRSk7Ci0gIHJldHVybiAwOworI2VuZGlmCisKKyNpZmRlZiBVU0VfU09DS0VUUEFJUgorICBpZih0ZCkgeworICAgIC8qIHJldHVybiByZWFkIGZkIHRvIGNsaWVudCBmb3IgcG9sbGluZyB0aGUgRE5TIHJlc29sdXRpb24gc3RhdHVzICovCisgICAgc29ja3NbMF0gPSB0ZC0+dHNkLnNvY2tfcGFpclswXTsKKyAgICBERUJVR0FTU0VSVCh0ZC0+dHNkLmNvbm4gPT0gY29ubiB8fCAhdGQtPnRzZC5jb25uKTsKKyAgICB0ZC0+dHNkLmNvbm4gPSBjb25uOworICAgIHJldF92YWwgPSBHRVRTT0NLX1JFQURTT0NLKDApOworICB9CisgIGVsc2UgeworI2VuZGlmCisgICAgbXMgPSBDdXJsX3RpbWVkaWZmKEN1cmxfbm93KCksIHJlc2x2LT5zdGFydCk7CisgICAgaWYobXMgPCAzKQorICAgICAgbWlsbGkgPSAwOworICAgIGVsc2UgaWYobXMgPD0gNTApCisgICAgICBtaWxsaSA9ICh0aW1lX3QpbXMvMzsKKyAgICBlbHNlIGlmKG1zIDw9IDI1MCkKKyAgICAgIG1pbGxpID0gNTA7CisgICAgZWxzZQorICAgICAgbWlsbGkgPSAyMDA7CisgICAgQ3VybF9leHBpcmUoZGF0YSwgbWlsbGksIEVYUElSRV9BU1lOQ19OQU1FKTsKKyNpZmRlZiBVU0VfU09DS0VUUEFJUgorICB9CisjZW5kaWYKKworCisgIHJldHVybiByZXRfdmFsOwogfQogCiAjaWZuZGVmIEhBVkVfR0VUQUREUklORk8KQEAgLTYyMywxNiArNjkxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKndhaXRwKQogewotICBzdHJ1Y3QgaW5fYWRkciBpbjsKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIHN0cnVjdCByZXNkYXRhICpyZXNsdiA9IChzdHJ1Y3QgcmVzZGF0YSAqKWRhdGEtPnN0YXRlLnJlc29sdmVyOwogCiAgICp3YWl0cCA9IDA7IC8qIGRlZmF1bHQgdG8gc3luY2hyb25vdXMgcmVzcG9uc2UgKi8KIAotICBpZihDdXJsX2luZXRfcHRvbihBRl9JTkVULCBob3N0bmFtZSwgJmluKSA+IDApCi0gICAgLyogVGhpcyBpcyBhIGRvdHRlZCBJUCBhZGRyZXNzIDEyMy4xMjMuMTIzLjEyMy1zdHlsZSAqLwotICAgIHJldHVybiBDdXJsX2lwMmFkZHIoQUZfSU5FVCwgJmluLCBob3N0bmFtZSwgcG9ydCk7Ci0KICAgcmVzbHYtPnN0YXJ0ID0gQ3VybF9ub3coKTsKIAogICAvKiBmaXJlIHVwIGEgbmV3IHJlc29sdmVyIHRocmVhZCEgKi8KQEAgLTY1NywzMiArNzIwLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqd2FpdHApCiB7CiAgIHN0cnVjdCBhZGRyaW5mbyBoaW50czsKLSAgY2hhciBzYnVmWzEyXTsKICAgaW50IHBmID0gUEZfSU5FVDsKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIHN0cnVjdCByZXNkYXRhICpyZXNsdiA9IChzdHJ1Y3QgcmVzZGF0YSAqKWRhdGEtPnN0YXRlLnJlc29sdmVyOwogCiAgICp3YWl0cCA9IDA7IC8qIGRlZmF1bHQgdG8gc3luY2hyb25vdXMgcmVzcG9uc2UgKi8KIAotI2lmbmRlZiBVU0VfUkVTT0xWRV9PTl9JUFMKLSAgewotICAgIHN0cnVjdCBpbl9hZGRyIGluOwotICAgIC8qIEZpcnN0IGNoZWNrIGlmIHRoaXMgaXMgYW4gSVB2NCBhZGRyZXNzIHN0cmluZyAqLwotICAgIGlmKEN1cmxfaW5ldF9wdG9uKEFGX0lORVQsIGhvc3RuYW1lLCAmaW4pID4gMCkKLSAgICAgIC8qIFRoaXMgaXMgYSBkb3R0ZWQgSVAgYWRkcmVzcyAxMjMuMTIzLjEyMy4xMjMtc3R5bGUgKi8KLSAgICAgIHJldHVybiBDdXJsX2lwMmFkZHIoQUZfSU5FVCwgJmluLCBob3N0bmFtZSwgcG9ydCk7Ci0gIH0KLSNpZmRlZiBDVVJMUkVTX0lQVjYKLSAgewotICAgIHN0cnVjdCBpbjZfYWRkciBpbjY7Ci0gICAgLyogY2hlY2sgaWYgdGhpcyBpcyBhbiBJUHY2IGFkZHJlc3Mgc3RyaW5nICovCi0gICAgaWYoQ3VybF9pbmV0X3B0b24oQUZfSU5FVDYsIGhvc3RuYW1lLCAmaW42KSA+IDApCi0gICAgICAvKiBUaGlzIGlzIGFuIElQdjYgYWRkcmVzcyBsaXRlcmFsICovCi0gICAgICByZXR1cm4gQ3VybF9pcDJhZGRyKEFGX0lORVQ2LCAmaW42LCBob3N0bmFtZSwgcG9ydCk7Ci0gIH0KLSNlbmRpZiAvKiBDVVJMUkVTX0lQVjYgKi8KLSNlbmRpZiAvKiAhVVNFX1JFU09MVkVfT05fSVBTICovCi0KICNpZmRlZiBDVVJMUkVTX0lQVjYKICAgLyoKICAgICogQ2hlY2sgaWYgYSBsaW1pdGVkIG5hbWUgcmVzb2x2ZSBoYXMgYmVlbiByZXF1ZXN0ZWQuCkBAIC02OTksMTYgKzc0MiwxNSBAQAogICAgIGJyZWFrOwogICB9CiAKLSAgaWYoKHBmICE9IFBGX0lORVQpICYmICFDdXJsX2lwdjZ3b3JrcygpKQorICBpZigocGYgIT0gUEZfSU5FVCkgJiYgIUN1cmxfaXB2NndvcmtzKGNvbm4pKQogICAgIC8qIFRoZSBzdGFjayBzZWVtcyB0byBiZSBhIG5vbi1JUHY2IG9uZSAqLwogICAgIHBmID0gUEZfSU5FVDsKICNlbmRpZiAvKiBDVVJMUkVTX0lQVjYgKi8KIAogICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKICAgaGludHMuYWlfZmFtaWx5ID0gcGY7Ci0gIGhpbnRzLmFpX3NvY2t0eXBlID0gY29ubi0+c29ja3R5cGU7Ci0KLSAgbXNucHJpbnRmKHNidWYsIHNpemVvZihzYnVmKSwgIiVkIiwgcG9ydCk7CisgIGhpbnRzLmFpX3NvY2t0eXBlID0gKGNvbm4tPnRyYW5zcG9ydCA9PSBUUk5TUFJUX1RDUCk/CisgICAgU09DS19TVFJFQU0gOiBTT0NLX0RHUkFNOwogCiAgIHJlc2x2LT5zdGFydCA9IEN1cmxfbm93KCk7CiAgIC8qIGZpcmUgdXAgYSBuZXcgcmVzb2x2ZXIgdGhyZWFkISAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvYXN5bi5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvYXN5bi5oCmluZGV4IGNjZDRiMWYuLjA4MWMzZmUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2FzeW4uaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9hc3luLmgKQEAgLTExNCw4ICsxMTQsNyBAQAogICogcmV0dXJuIGJpdG1hc2sgaW5kaWNhdGluZyB3aGF0IGZpbGUgZGVzY3JpcHRvcnMgKHJlZmVycmluZyB0byBhcnJheSBpbmRleGVzCiAgKiBpbiB0aGUgJ3NvY2snIGFycmF5KSB0byB3YWl0IGZvciwgcmVhZC93cml0ZS4KICAqLwotaW50IEN1cmxfcmVzb2x2ZXJfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3QgKnNvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2Nrcyk7CitpbnQgQ3VybF9yZXNvbHZlcl9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29jayk7CiAKIC8qCiAgKiBDdXJsX3Jlc29sdmVyX2lzX3Jlc29sdmVkKCkKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2Jhc2U2NC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvYmFzZTY0LmMKaW5kZXggZmIwODFhNi4uNjQzY2VmNiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvYmFzZTY0LmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvYmFzZTY0LmMKQEAgLTI0LDggKzI0LDggQEAKIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKIAotI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9IVFRQX0FVVEgpIHx8IGRlZmluZWQoVVNFX0xJQlNTSDIpIHx8IFwKLSAgZGVmaW5lZChVU0VfTElCU1NIKSB8fCAhZGVmaW5lZChDVVJMX0RJU0FCTEVfTERBUCkgfHwgXAorI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9IVFRQX0FVVEgpIHx8IGRlZmluZWQoVVNFX1NTSCkgfHwgXAorICAhZGVmaW5lZChDVVJMX0RJU0FCTEVfTERBUCkgfHwgXAogICAhZGVmaW5lZChDVVJMX0RJU0FCTEVfRE9IKSB8fCBkZWZpbmVkKFVTRV9TU0wpCiAKICNpbmNsdWRlICJ1cmxkYXRhLmgiIC8qIGZvciB0aGUgQ3VybF9lYXN5IGRlZmluaXRpb24gKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2Nvbm5jYWNoZS5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY29ubmNhY2hlLmMKaW5kZXggNTM1MDkxOS4uY2JkM2JiMSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY29ubmNhY2hlLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY29ubmNhY2hlLmMKQEAgLTYsNyArNiw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBMaW51cyBOaWVsc2VuIEZlbHR6aW5nLCA8bGludXNAaGF4eC5zZT4KLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC00MCwyNiArNDAsNyBAQAogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAotI2lmZGVmIENVUkxERUJVRwotLyogdGhlIGRlYnVnIHZlcnNpb25zIG9mIHRoZXNlIG1hY3JvcyBtYWtlIGV4dHJhIGNlcnRhaW4gdGhhdCB0aGUgbG9jayBpcwotICAgbmV2ZXIgZG91Ymx5IGxvY2tlZCBvciB1bmxvY2tlZCAqLwotI2RlZmluZSBDT05OX0xPQ0soeCkgaWYoKHgpLT5zaGFyZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEN1cmxfc2hhcmVfbG9jaygoeCksIENVUkxfTE9DS19EQVRBX0NPTk5FQ1QsIENVUkxfTE9DS19BQ0NFU1NfU0lOR0xFKTsgXAotICAgIERFQlVHQVNTRVJUKCEoeCktPnN0YXRlLmNvbm5jYWNoZV9sb2NrKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICh4KS0+c3RhdGUuY29ubmNhY2hlX2xvY2sgPSBUUlVFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9Ci0KLSNkZWZpbmUgQ09OTl9VTkxPQ0soeCkgaWYoKHgpLT5zaGFyZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBERUJVR0FTU0VSVCgoeCktPnN0YXRlLmNvbm5jYWNoZV9sb2NrKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoeCktPnN0YXRlLmNvbm5jYWNoZV9sb2NrID0gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBDdXJsX3NoYXJlX3VubG9jaygoeCksIENVUkxfTE9DS19EQVRBX0NPTk5FQ1QpOyAgICAgICAgICAgICAgICAgICAgIFwKLSAgfQotI2Vsc2UKLSNkZWZpbmUgQ09OTl9MT0NLKHgpIGlmKCh4KS0+c2hhcmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBDdXJsX3NoYXJlX2xvY2soKHgpLCBDVVJMX0xPQ0tfREFUQV9DT05ORUNULCBDVVJMX0xPQ0tfQUNDRVNTX1NJTkdMRSkKLSNkZWZpbmUgQ09OTl9VTkxPQ0soeCkgaWYoKHgpLT5zaGFyZSkgICAgICAgICAgICAgICAgICAgXAotICAgIEN1cmxfc2hhcmVfdW5sb2NrKCh4KSwgQ1VSTF9MT0NLX0RBVEFfQ09OTkVDVCkKLSNlbmRpZgorI2RlZmluZSBIQVNIS0VZX1NJWkUgMTI4CiAKIHN0YXRpYyB2b2lkIGNvbm5fbGxpc3RfZHRvcih2b2lkICp1c2VyLCB2b2lkICplbGVtZW50KQogewpAQCAtMTIwLDYgKzEwMSw3IEBACiAgICAgfQogICAgIGN1cnIgPSBjdXJyLT5uZXh0OwogICB9CisgIERFQlVHQVNTRVJUKDApOwogICByZXR1cm4gMDsKIH0KIApAQCAtMTQxLDEwICsxMjMsOCBAQAogCiAgIHJjID0gQ3VybF9oYXNoX2luaXQoJmNvbm5jLT5oYXNoLCBzaXplLCBDdXJsX2hhc2hfc3RyLAogICAgICAgICAgICAgICAgICAgICAgIEN1cmxfc3RyX2tleV9jb21wYXJlLCBmcmVlX2J1bmRsZV9oYXNoX2VudHJ5KTsKLSAgaWYocmMpIHsKLSAgICBDdXJsX2Nsb3NlKGNvbm5jLT5jbG9zdXJlX2hhbmRsZSk7Ci0gICAgY29ubmMtPmNsb3N1cmVfaGFuZGxlID0gTlVMTDsKLSAgfQorICBpZihyYykKKyAgICBDdXJsX2Nsb3NlKCZjb25uYy0+Y2xvc3VyZV9oYW5kbGUpOwogICBlbHNlCiAgICAgY29ubmMtPmNsb3N1cmVfaGFuZGxlLT5zdGF0ZS5jb25uX2NhY2hlID0gY29ubmM7CiAKQEAgLTE1OSwyMyArMTM5LDI3IEBACiAKIC8qIGNyZWF0ZXMgYSBrZXkgdG8gZmluZCBhIGJ1bmRsZSBmb3IgdGhpcyBjb25uZWN0aW9uICovCiBzdGF0aWMgdm9pZCBoYXNoa2V5KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY2hhciAqYnVmLAotICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKSAvKiBzb21ldGhpbmcgbGlrZSAxMjggaXMgZmluZSAqLworICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLCAgLyogc29tZXRoaW5nIGxpa2UgMTI4IGlzIGZpbmUgKi8KKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmhvc3RwKQogewogICBjb25zdCBjaGFyICpob3N0bmFtZTsKKyAgbG9uZyBwb3J0ID0gY29ubi0+cmVtb3RlX3BvcnQ7CiAKLSAgaWYoY29ubi0+Yml0cy5zb2Nrc3Byb3h5KQotICAgIGhvc3RuYW1lID0gY29ubi0+c29ja3NfcHJveHkuaG9zdC5uYW1lOwotICBlbHNlIGlmKGNvbm4tPmJpdHMuaHR0cHByb3h5KQorICBpZihjb25uLT5iaXRzLmh0dHBwcm94eSAmJiAhY29ubi0+Yml0cy50dW5uZWxfcHJveHkpIHsKICAgICBob3N0bmFtZSA9IGNvbm4tPmh0dHBfcHJveHkuaG9zdC5uYW1lOworICAgIHBvcnQgPSBjb25uLT5wb3J0OworICB9CiAgIGVsc2UgaWYoY29ubi0+Yml0cy5jb25uX3RvX2hvc3QpCiAgICAgaG9zdG5hbWUgPSBjb25uLT5jb25uX3RvX2hvc3QubmFtZTsKICAgZWxzZQogICAgIGhvc3RuYW1lID0gY29ubi0+aG9zdC5uYW1lOwogCi0gIERFQlVHQVNTRVJUKGxlbiA+IDMyKTsKKyAgaWYoaG9zdHApCisgICAgLyogcmVwb3J0IGJhY2sgd2hpY2ggbmFtZSB3ZSB1c2VkICovCisgICAgKmhvc3RwID0gaG9zdG5hbWU7CiAKICAgLyogcHV0IHRoZSBudW1iZXIgZmlyc3Qgc28gdGhhdCB0aGUgaG9zdG5hbWUgZ2V0cyBjdXQgb2ZmIGlmIHRvbyBsb25nICovCi0gIG1zbnByaW50ZihidWYsIGxlbiwgIiVsZCVzIiwgY29ubi0+cG9ydCwgaG9zdG5hbWUpOworICBtc25wcmludGYoYnVmLCBsZW4sICIlbGQlcyIsIHBvcnQsIGhvc3RuYW1lKTsKIH0KIAogdm9pZCBDdXJsX2Nvbm5jYWNoZV91bmxvY2soc3RydWN0IEN1cmxfZWFzeSAqZGF0YSkKQEAgLTE5NSwzMCArMTc5LDE5IEBACiAgIHJldHVybiBudW07CiB9CiAKLS8qIFJldHVybnMgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGN1cnJlbnRseSBoZWxkIGluIHRoZSBjb25uZWN0aW9ucydzIGJ1bmRsZQotICAgTG9ja3MvdW5sb2NrcyB0aGUgY2FjaGUgaXRzZWxmIQotKi8KLXNpemVfdCBDdXJsX2Nvbm5jYWNoZV9idW5kbGVfc2l6ZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCi17Ci0gIHNpemVfdCBudW07Ci0gIENPTk5fTE9DSyhjb25uLT5kYXRhKTsKLSAgbnVtID0gY29ubi0+YnVuZGxlLT5udW1fY29ubmVjdGlvbnM7Ci0gIENPTk5fVU5MT0NLKGNvbm4tPmRhdGEpOwotICByZXR1cm4gbnVtOwotfQotCiAvKiBMb29rIHVwIHRoZSBidW5kbGUgd2l0aCBhbGwgdGhlIGNvbm5lY3Rpb25zIHRvIHRoZSBzYW1lIGhvc3QgdGhpcwogICAgY29ubmVjdGRhdGEgc3RydWN0IGlzIHNldHVwIHRvIHVzZS4KIAogICAgKipOT1RFKio6IFdoZW4gaXQgcmV0dXJucywgaXQgaG9sZHMgdGhlIGNvbm5lY3Rpb24gY2FjaGUgbG9jayEgKi8KIHN0cnVjdCBjb25uZWN0YnVuZGxlICpDdXJsX2Nvbm5jYWNoZV9maW5kX2J1bmRsZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5jYWNoZSAqY29ubmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5jYWNoZSAqY29ubmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmhvc3RwKQogewogICBzdHJ1Y3QgY29ubmVjdGJ1bmRsZSAqYnVuZGxlID0gTlVMTDsKICAgQ09OTl9MT0NLKGNvbm4tPmRhdGEpOwogICBpZihjb25uYykgewotICAgIGNoYXIga2V5WzEyOF07Ci0gICAgaGFzaGtleShjb25uLCBrZXksIHNpemVvZihrZXkpKTsKKyAgICBjaGFyIGtleVtIQVNIS0VZX1NJWkVdOworICAgIGhhc2hrZXkoY29ubiwga2V5LCBzaXplb2Yoa2V5KSwgaG9zdHApOwogICAgIGJ1bmRsZSA9IEN1cmxfaGFzaF9waWNrKCZjb25uYy0+aGFzaCwga2V5LCBzdHJsZW4oa2V5KSk7CiAgIH0KIApAQCAtMjY3LDE3ICsyNDAsMTcgQEAKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAKICAgLyogKmZpbmRfYnVuZGxlKCkgbG9ja3MgdGhlIGNvbm5lY3Rpb24gY2FjaGUgKi8KLSAgYnVuZGxlID0gQ3VybF9jb25uY2FjaGVfZmluZF9idW5kbGUoY29ubiwgZGF0YS0+c3RhdGUuY29ubl9jYWNoZSk7CisgIGJ1bmRsZSA9IEN1cmxfY29ubmNhY2hlX2ZpbmRfYnVuZGxlKGNvbm4sIGRhdGEtPnN0YXRlLmNvbm5fY2FjaGUsIE5VTEwpOwogICBpZighYnVuZGxlKSB7CiAgICAgaW50IHJjOwotICAgIGNoYXIga2V5WzEyOF07CisgICAgY2hhciBrZXlbSEFTSEtFWV9TSVpFXTsKIAogICAgIHJlc3VsdCA9IGJ1bmRsZV9jcmVhdGUoZGF0YSwgJm5ld19idW5kbGUpOwogICAgIGlmKHJlc3VsdCkgewogICAgICAgZ290byB1bmxvY2s7CiAgICAgfQogCi0gICAgaGFzaGtleShjb25uLCBrZXksIHNpemVvZihrZXkpKTsKKyAgICBoYXNoa2V5KGNvbm4sIGtleSwgc2l6ZW9mKGtleSksIE5VTEwpOwogICAgIHJjID0gY29ubmNhY2hlX2FkZF9idW5kbGUoZGF0YS0+c3RhdGUuY29ubl9jYWNoZSwga2V5LCBuZXdfYnVuZGxlKTsKIAogICAgIGlmKCFyYykgewpAQCAtNDIzLDE3ICszOTYsMTUgQEAKICAqCiAgKiBSZXR1cm4gVFJVRSBpZiBzdG9yZWQsIEZBTFNFIGlmIGNsb3NlZC4KICAqLwotYm9vbCBDdXJsX2Nvbm5jYWNoZV9yZXR1cm5fY29ubihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCitib29sIEN1cmxfY29ubmNhY2hlX3JldHVybl9jb25uKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKIHsKLSAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7Ci0KICAgLyogZGF0YS0+bXVsdGktPm1heGNvbm5lY3RzIGNhbiBiZSBuZWdhdGl2ZSwgZGVhbCB3aXRoIGl0LiAqLwogICBzaXplX3QgbWF4Y29ubmVjdHMgPQogICAgIChkYXRhLT5tdWx0aS0+bWF4Y29ubmVjdHMgPCAwKSA/IGRhdGEtPm11bHRpLT5udW1fZWFzeSAqIDQ6CiAgICAgZGF0YS0+bXVsdGktPm1heGNvbm5lY3RzOwogICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm5fY2FuZGlkYXRlID0gTlVMTDsKIAotICBjb25uLT5kYXRhID0gTlVMTDsgLyogbm8gb3duZXIgYW55bW9yZSAqLwogICBjb25uLT5sYXN0dXNlZCA9IEN1cmxfbm93KCk7IC8qIGl0IHdhcyB1c2VkIHVwIHVudGlsIG5vdyAqLwogICBpZihtYXhjb25uZWN0cyA+IDAgJiYKICAgICAgQ3VybF9jb25uY2FjaGVfc2l6ZShkYXRhKSA+IG1heGNvbm5lY3RzKSB7CkBAIC01MzYsNyArNTA3LDggQEAKICAgICB3aGlsZShjdXJyKSB7CiAgICAgICBjb25uID0gY3Vyci0+cHRyOwogCi0gICAgICBpZighQ09OTl9JTlVTRShjb25uKSAmJiAhY29ubi0+ZGF0YSkgeworICAgICAgaWYoIUNPTk5fSU5VU0UoY29ubikgJiYgIWNvbm4tPmRhdGEgJiYgIWNvbm4tPmJpdHMuY2xvc2UgJiYKKyAgICAgICAgICFjb25uLT5iaXRzLmNvbm5lY3Rfb25seSkgewogICAgICAgICAvKiBTZXQgaGlnaGVyIHNjb3JlIGZvciB0aGUgYWdlIHBhc3NlZCBzaW5jZSB0aGUgY29ubmVjdGlvbiB3YXMgdXNlZCAqLwogICAgICAgICBzY29yZSA9IEN1cmxfdGltZWRpZmYobm93LCBjb25uLT5sYXN0dXNlZCk7CiAKQEAgLTU4OCw3ICs1NjAsNyBAQAogCiAgICAgQ3VybF9ob3N0Y2FjaGVfY2xlYW4oY29ubmMtPmNsb3N1cmVfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5jLT5jbG9zdXJlX2hhbmRsZS0+ZG5zLmhvc3RjYWNoZSk7Ci0gICAgQ3VybF9jbG9zZShjb25uYy0+Y2xvc3VyZV9oYW5kbGUpOworICAgIEN1cmxfY2xvc2UoJmNvbm5jLT5jbG9zdXJlX2hhbmRsZSk7CiAgICAgc2lncGlwZV9yZXN0b3JlKCZwaXBlX3N0KTsKICAgfQogfQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY29ubmNhY2hlLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jb25uY2FjaGUuaAppbmRleCAzNWJlOWUwLi5lM2U0YzljIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jb25uY2FjaGUuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jb25uY2FjaGUuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDE1IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTQsIExpbnVzIE5pZWxzZW4gRmVsdHppbmcsIDxsaW51c0BoYXh4LnNlPgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCkBAIC00Miw2ICs0MiwyNyBAQAogI2RlZmluZSBCVU5ETEVfVU5LTk9XTiAgICAgMCAgLyogaW5pdGlhbCB2YWx1ZSAqLwogI2RlZmluZSBCVU5ETEVfTVVMVElQTEVYICAgMgogCisjaWZkZWYgQ1VSTERFQlVHCisvKiB0aGUgZGVidWcgdmVyc2lvbnMgb2YgdGhlc2UgbWFjcm9zIG1ha2UgZXh0cmEgY2VydGFpbiB0aGF0IHRoZSBsb2NrIGlzCisgICBuZXZlciBkb3VibHkgbG9ja2VkIG9yIHVubG9ja2VkICovCisjZGVmaW5lIENPTk5fTE9DSyh4KSBpZigoeCktPnNoYXJlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ3VybF9zaGFyZV9sb2NrKCh4KSwgQ1VSTF9MT0NLX0RBVEFfQ09OTkVDVCwgQ1VSTF9MT0NLX0FDQ0VTU19TSU5HTEUpOyBcCisgICAgREVCVUdBU1NFUlQoISh4KS0+c3RhdGUuY29ubmNhY2hlX2xvY2spOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKHgpLT5zdGF0ZS5jb25uY2FjaGVfbG9jayA9IFRSVUU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2RlZmluZSBDT05OX1VOTE9DSyh4KSBpZigoeCktPnNoYXJlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIERFQlVHQVNTRVJUKCh4KS0+c3RhdGUuY29ubmNhY2hlX2xvY2spOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICh4KS0+c3RhdGUuY29ubmNhY2hlX2xvY2sgPSBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEN1cmxfc2hhcmVfdW5sb2NrKCh4KSwgQ1VSTF9MT0NLX0RBVEFfQ09OTkVDVCk7ICAgICAgICAgICAgICAgICAgICAgXAorICB9CisjZWxzZQorI2RlZmluZSBDT05OX0xPQ0soeCkgaWYoKHgpLT5zaGFyZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEN1cmxfc2hhcmVfbG9jaygoeCksIENVUkxfTE9DS19EQVRBX0NPTk5FQ1QsIENVUkxfTE9DS19BQ0NFU1NfU0lOR0xFKQorI2RlZmluZSBDT05OX1VOTE9DSyh4KSBpZigoeCktPnNoYXJlKSAgICAgICAgICAgICAgICAgICBcCisgICAgQ3VybF9zaGFyZV91bmxvY2soKHgpLCBDVVJMX0xPQ0tfREFUQV9DT05ORUNUKQorI2VuZGlmCisKIHN0cnVjdCBjb25uZWN0YnVuZGxlIHsKICAgaW50IG11bHRpdXNlOyAgICAgICAgICAgICAgICAgLyogc3VwcG9ydHMgbXVsdGktdXNlICovCiAgIHNpemVfdCBudW1fY29ubmVjdGlvbnM7ICAgICAgIC8qIE51bWJlciBvZiBjb25uZWN0aW9ucyBpbiB0aGUgYnVuZGxlICovCkBAIC01NCwxMyArNzUsMTQgQEAKIAogLyogcmV0dXJuIHRoZSBjb3JyZWN0IGJ1bmRsZSwgdG8gYSBob3N0IG9yIGEgcHJveHkgKi8KIHN0cnVjdCBjb25uZWN0YnVuZGxlICpDdXJsX2Nvbm5jYWNoZV9maW5kX2J1bmRsZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5jYWNoZSAqY29ubmMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uY2FjaGUgKmNvbm5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipob3N0cCk7CiB2b2lkIEN1cmxfY29ubmNhY2hlX3VubG9jayhzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKIC8qIHJldHVybnMgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGN1cnJlbnRseSBoZWxkIGluIHRoZSBjb25uZWN0aW9uIGNhY2hlICovCiBzaXplX3QgQ3VybF9jb25uY2FjaGVfc2l6ZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKLXNpemVfdCBDdXJsX2Nvbm5jYWNoZV9idW5kbGVfc2l6ZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogCi1ib29sIEN1cmxfY29ubmNhY2hlX3JldHVybl9jb25uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7Citib29sIEN1cmxfY29ubmNhY2hlX3JldHVybl9jb25uKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiBDVVJMY29kZSBDdXJsX2Nvbm5jYWNoZV9hZGRfY29ubihzdHJ1Y3QgY29ubmNhY2hlICpjb25uYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikgV0FSTl9VTlVTRURfUkVTVUxUOwogdm9pZCBDdXJsX2Nvbm5jYWNoZV9yZW1vdmVfY29ubihzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY29ubmVjdC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY29ubmVjdC5jCmluZGV4IDAwMjUzNWIuLjBhNzQ3NWMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2Nvbm5lY3QuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jb25uZWN0LmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTc1LDYgKzc1LDggQEAKICNpbmNsdWRlICJjb25uY2FjaGUuaCIKICNpbmNsdWRlICJtdWx0aWhhbmRsZS5oIgogI2luY2x1ZGUgInN5c3RlbV93aW4zMi5oIgorI2luY2x1ZGUgInF1aWMuaCIKKyNpbmNsdWRlICJzb2Nrcy5oIgogCiAvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKQEAgLTE2NSw3ICsxNjcsNyBAQAogc3RhdGljIENVUkxjb2RlCiBzaW5nbGVpcGNvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgIGNvbnN0IEN1cmxfYWRkcmluZm8gKmFpLCAvKiBzdGFydCBjb25uZWN0aW5nIHRvIHRoaXMgKi8KLSAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrKTsKKyAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4KTsgICAgICAgICAgLyogMCBvciAxIGFtb25nIHRoZSB0ZW1wIG9uZXMgKi8KIAogLyoKICAqIEN1cmxfdGltZWxlZnQoKSByZXR1cm5zIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIGxlZnQgYWxsb3dlZCBmb3IgdGhlCkBAIC0zNjgsNiArMzcwLDExIEBACiAgICAgICAgIGluZm9mKGRhdGEsICJOYW1lICclcycgZmFtaWx5ICVpIHJlc29sdmVkIHRvICclcycgZmFtaWx5ICVpXG4iLAogICAgICAgICAgICAgICBkZXYsIGFmLCBteWhvc3QsIGgtPmFkZHItPmFpX2ZhbWlseSk7CiAgICAgICAgIEN1cmxfcmVzb2x2X3VubG9jayhkYXRhLCBoKTsKKyAgICAgICAgaWYoYWYgIT0gaC0+YWRkci0+YWlfZmFtaWx5KSB7CisgICAgICAgICAgLyogYmFkIElQIHZlcnNpb24gY29tYm8sIHNpZ25hbCB0aGUgY2FsbGVyIHRvIHRyeSBhbm90aGVyIGFkZHJlc3MKKyAgICAgICAgICAgICBmYW1pbHkgaWYgYXZhaWxhYmxlICovCisgICAgICAgICAgcmV0dXJuIENVUkxFX1VOU1VQUE9SVEVEX1BST1RPQ09MOworICAgICAgICB9CiAgICAgICAgIGRvbmUgPSAxOwogICAgICAgfQogICAgICAgZWxzZSB7CkBAIC01OTAsNyArNTk3LDcgQEAKICAgICAgIH0KIAogICAgICAgaWYoYWkpIHsKLSAgICAgICAgcmVzdWx0ID0gc2luZ2xlaXBjb25uZWN0KGNvbm4sIGFpLCAmY29ubi0+dGVtcHNvY2tbdGVtcGluZGV4XSk7CisgICAgICAgIHJlc3VsdCA9IHNpbmdsZWlwY29ubmVjdChjb25uLCBhaSwgdGVtcGluZGV4KTsKICAgICAgICAgaWYocmVzdWx0ID09IENVUkxFX0NPVUxETlRfQ09OTkVDVCkgewogICAgICAgICAgIGFpID0gYWktPmFpX25leHQ7CiAgICAgICAgICAgY29udGludWU7CkBAIC02MjAsMTMgKzYyNywxMCBAQAogICBjb25uLT5kYXRhLT5pbmZvLmNvbm5fbG9jYWxfcG9ydCA9IGNvbm4tPmxvY2FsX3BvcnQ7CiB9CiAKLVVOSVRURVNUIGJvb2wgZ2V0YWRkcmVzc2luZm8oc3RydWN0IHNvY2thZGRyICpzYSwgY2hhciAqYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqcG9ydCk7Ci0KIC8qIHJldHJpZXZlcyBpcCBhZGRyZXNzIGFuZCBwb3J0IGZyb20gYSBzb2NrYWRkciBzdHJ1Y3R1cmUuCiAgICBub3RlIGl0IGNhbGxzIEN1cmxfaW5ldF9udG9wIHdoaWNoIHNldHMgZXJybm8gb24gZmFpbCwgbm90IFNPQ0tFUlJOTy4gKi8KLVVOSVRURVNUIGJvb2wgZ2V0YWRkcmVzc2luZm8oc3RydWN0IHNvY2thZGRyICpzYSwgY2hhciAqYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqcG9ydCkKK2Jvb2wgQ3VybF9hZGRyMnN0cmluZyhzdHJ1Y3Qgc29ja2FkZHIgKnNhLCBjdXJsX3NvY2tsZW5fdCBzYWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICBjaGFyICphZGRyLCBsb25nICpwb3J0KQogewogICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpID0gTlVMTDsKICNpZmRlZiBFTkFCTEVfSVBWNgpAQCAtNjM0LDYgKzYzOCw4IEBACiAjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfU1lTX1VOX0gpICYmIGRlZmluZWQoQUZfVU5JWCkKICAgc3RydWN0IHNvY2thZGRyX3VuICpzdSA9IE5VTEw7CisjZWxzZQorICAodm9pZClzYWxlbjsKICNlbmRpZgogCiAgIHN3aXRjaChzYS0+c2FfZmFtaWx5KSB7CkBAIC02NTksOCArNjY1LDEyIEBACiAjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfU1lTX1VOX0gpICYmIGRlZmluZWQoQUZfVU5JWCkKICAgICBjYXNlIEFGX1VOSVg6Ci0gICAgICBzdSA9IChzdHJ1Y3Qgc29ja2FkZHJfdW4qKXNhOwotICAgICAgbXNucHJpbnRmKGFkZHIsIE1BWF9JUEFEUl9MRU4sICIlcyIsIHN1LT5zdW5fcGF0aCk7CisgICAgICBpZihzYWxlbiA+IChjdXJsX3NvY2tsZW5fdClzaXplb2Yoc2FfZmFtaWx5X3QpKSB7CisgICAgICAgIHN1ID0gKHN0cnVjdCBzb2NrYWRkcl91biopc2E7CisgICAgICAgIG1zbnByaW50ZihhZGRyLCBNQVhfSVBBRFJfTEVOLCAiJXMiLCBzdS0+c3VuX3BhdGgpOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBhZGRyWzBdID0gMDsgLyogc29ja2V0IHdpdGggbm8gbmFtZSAqLwogICAgICAgKnBvcnQgPSAwOwogICAgICAgcmV0dXJuIFRSVUU7CiAjZW5kaWYKQEAgLTY3OCw4ICs2ODgsOCBAQAogICAgY29ubmVjdGlvbiAqLwogdm9pZCBDdXJsX3VwZGF0ZWNvbm5pbmZvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCBzb2NrZmQpCiB7Ci0gIGlmKGNvbm4tPnNvY2t0eXBlID09IFNPQ0tfREdSQU0pCi0gICAgLyogdGhlcmUncyBubyBjb25uZWN0aW9uISAqLworICBpZihjb25uLT50cmFuc3BvcnQgIT0gVFJOU1BSVF9UQ1ApCisgICAgLyogdGhlcmUncyBubyBUQ1AgY29ubmVjdGlvbiEgKi8KICAgICByZXR1cm47CiAKICNpZiBkZWZpbmVkKEhBVkVfR0VUUEVFUk5BTUUpIHx8IGRlZmluZWQoSEFWRV9HRVRTT0NLTkFNRSkKQEAgLTY4OCwxMCArNjk4LDExIEBACiAgICAgY2hhciBidWZmZXJbU1RSRVJST1JfTEVOXTsKICAgICBzdHJ1Y3QgQ3VybF9zb2NrYWRkcl9zdG9yYWdlIHNzcmVtOwogICAgIHN0cnVjdCBDdXJsX3NvY2thZGRyX3N0b3JhZ2Ugc3Nsb2M7Ci0gICAgY3VybF9zb2NrbGVuX3QgbGVuOworICAgIGN1cmxfc29ja2xlbl90IHBsZW47CisgICAgY3VybF9zb2NrbGVuX3Qgc2xlbjsKICNpZmRlZiBIQVZFX0dFVFBFRVJOQU1FCi0gICAgbGVuID0gc2l6ZW9mKHN0cnVjdCBDdXJsX3NvY2thZGRyX3N0b3JhZ2UpOwotICAgIGlmKGdldHBlZXJuYW1lKHNvY2tmZCwgKHN0cnVjdCBzb2NrYWRkciopICZzc3JlbSwgJmxlbikpIHsKKyAgICBwbGVuID0gc2l6ZW9mKHN0cnVjdCBDdXJsX3NvY2thZGRyX3N0b3JhZ2UpOworICAgIGlmKGdldHBlZXJuYW1lKHNvY2tmZCwgKHN0cnVjdCBzb2NrYWRkciopICZzc3JlbSwgJnBsZW4pKSB7CiAgICAgICBpbnQgZXJyb3IgPSBTT0NLRVJSTk87CiAgICAgICBmYWlsZihkYXRhLCAiZ2V0cGVlcm5hbWUoKSBmYWlsZWQgd2l0aCBlcnJubyAlZDogJXMiLAogICAgICAgICAgICAgZXJyb3IsIEN1cmxfc3RyZXJyb3IoZXJyb3IsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKTsKQEAgLTY5OSw5ICs3MTAsOSBAQAogICAgIH0KICNlbmRpZgogI2lmZGVmIEhBVkVfR0VUU09DS05BTUUKLSAgICBsZW4gPSBzaXplb2Yoc3RydWN0IEN1cmxfc29ja2FkZHJfc3RvcmFnZSk7CisgICAgc2xlbiA9IHNpemVvZihzdHJ1Y3QgQ3VybF9zb2NrYWRkcl9zdG9yYWdlKTsKICAgICBtZW1zZXQoJnNzbG9jLCAwLCBzaXplb2Yoc3Nsb2MpKTsKLSAgICBpZihnZXRzb2NrbmFtZShzb2NrZmQsIChzdHJ1Y3Qgc29ja2FkZHIqKSAmc3Nsb2MsICZsZW4pKSB7CisgICAgaWYoZ2V0c29ja25hbWUoc29ja2ZkLCAoc3RydWN0IHNvY2thZGRyKikgJnNzbG9jLCAmc2xlbikpIHsKICAgICAgIGludCBlcnJvciA9IFNPQ0tFUlJOTzsKICAgICAgIGZhaWxmKGRhdGEsICJnZXRzb2NrbmFtZSgpIGZhaWxlZCB3aXRoIGVycm5vICVkOiAlcyIsCiAgICAgICAgICAgICBlcnJvciwgQ3VybF9zdHJlcnJvcihlcnJvciwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOwpAQCAtNzA5LDggKzcyMCw4IEBACiAgICAgfQogI2VuZGlmCiAjaWZkZWYgSEFWRV9HRVRQRUVSTkFNRQotICAgIGlmKCFnZXRhZGRyZXNzaW5mbygoc3RydWN0IHNvY2thZGRyKikmc3NyZW0sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnByaW1hcnlfaXAsICZjb25uLT5wcmltYXJ5X3BvcnQpKSB7CisgICAgaWYoIUN1cmxfYWRkcjJzdHJpbmcoKHN0cnVjdCBzb2NrYWRkciopJnNzcmVtLCBwbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnByaW1hcnlfaXAsICZjb25uLT5wcmltYXJ5X3BvcnQpKSB7CiAgICAgICBmYWlsZihkYXRhLCAic3NyZW0gaW5ldF9udG9wKCkgZmFpbGVkIHdpdGggZXJybm8gJWQ6ICVzIiwKICAgICAgICAgICAgIGVycm5vLCBDdXJsX3N0cmVycm9yKGVycm5vLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CiAgICAgICByZXR1cm47CkBAIC03MTgsOCArNzI5LDggQEAKICAgICBtZW1jcHkoY29ubi0+aXBfYWRkcl9zdHIsIGNvbm4tPnByaW1hcnlfaXAsIE1BWF9JUEFEUl9MRU4pOwogI2VuZGlmCiAjaWZkZWYgSEFWRV9HRVRTT0NLTkFNRQotICAgIGlmKCFnZXRhZGRyZXNzaW5mbygoc3RydWN0IHNvY2thZGRyKikmc3Nsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmxvY2FsX2lwLCAmY29ubi0+bG9jYWxfcG9ydCkpIHsKKyAgICBpZighQ3VybF9hZGRyMnN0cmluZygoc3RydWN0IHNvY2thZGRyKikmc3Nsb2MsIHNsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+bG9jYWxfaXAsICZjb25uLT5sb2NhbF9wb3J0KSkgewogICAgICAgZmFpbGYoZGF0YSwgInNzbG9jIGluZXRfbnRvcCgpIGZhaWxlZCB3aXRoIGVycm5vICVkOiAlcyIsCiAgICAgICAgICAgICBlcnJubywgQ3VybF9zdHJlcnJvcihlcnJubywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOwogICAgICAgcmV0dXJuOwpAQCAtNzM0LDYgKzc0NSw3OSBAQAogICBDdXJsX3BlcnNpc3Rjb25uaW5mbyhjb25uKTsKIH0KIAorLyogQWZ0ZXIgYSBUQ1AgY29ubmVjdGlvbiB0byB0aGUgcHJveHkgaGFzIGJlZW4gdmVyaWZpZWQsIHRoaXMgZnVuY3Rpb24gZG9lcworICAgdGhlIG5leHQgbWFnaWMgc3RlcHMuIElmICdkb25lJyBpc24ndCBzZXQgVFJVRSwgaXQgaXMgbm90IGRvbmUgeWV0IGFuZAorICAgbXVzdCBiZSBjYWxsZWQgYWdhaW4uCisKKyAgIE5vdGU6IHRoaXMgZnVuY3Rpb24ncyBzdWItZnVuY3Rpb25zIGNhbGwgZmFpbGYoKQorCisqLworc3RhdGljIENVUkxjb2RlIGNvbm5lY3RfU09DS1Moc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9uZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisKKyAgaWYoY29ubi0+Yml0cy5zb2Nrc3Byb3h5KSB7CisjaWZuZGVmIENVUkxfRElTQUJMRV9QUk9YWQorICAgIC8qIGZvciB0aGUgc2Vjb25kYXJ5IHNvY2tldCAoRlRQKSwgdXNlIHRoZSAiY29ubmVjdCB0byBob3N0IgorICAgICAqIGJ1dCBpZ25vcmUgdGhlICJjb25uZWN0IHRvIHBvcnQiICh1c2UgdGhlIHNlY29uZGFyeSBwb3J0KQorICAgICAqLworICAgIGNvbnN0IGNoYXIgKiBjb25zdCBob3N0ID0KKyAgICAgIGNvbm4tPmJpdHMuaHR0cHByb3h5ID8KKyAgICAgIGNvbm4tPmh0dHBfcHJveHkuaG9zdC5uYW1lIDoKKyAgICAgIGNvbm4tPmJpdHMuY29ubl90b19ob3N0ID8KKyAgICAgIGNvbm4tPmNvbm5fdG9faG9zdC5uYW1lIDoKKyAgICAgIHNvY2tpbmRleCA9PSBTRUNPTkRBUllTT0NLRVQgPworICAgICAgY29ubi0+c2Vjb25kYXJ5aG9zdG5hbWUgOiBjb25uLT5ob3N0Lm5hbWU7CisgICAgY29uc3QgaW50IHBvcnQgPQorICAgICAgY29ubi0+Yml0cy5odHRwcHJveHkgPyAoaW50KWNvbm4tPmh0dHBfcHJveHkucG9ydCA6CisgICAgICBzb2NraW5kZXggPT0gU0VDT05EQVJZU09DS0VUID8gY29ubi0+c2Vjb25kYXJ5X3BvcnQgOgorICAgICAgY29ubi0+Yml0cy5jb25uX3RvX3BvcnQgPyBjb25uLT5jb25uX3RvX3BvcnQgOgorICAgICAgY29ubi0+cmVtb3RlX3BvcnQ7CisgICAgc3dpdGNoKGNvbm4tPnNvY2tzX3Byb3h5LnByb3h5dHlwZSkgeworICAgIGNhc2UgQ1VSTFBST1hZX1NPQ0tTNToKKyAgICBjYXNlIENVUkxQUk9YWV9TT0NLUzVfSE9TVE5BTUU6CisgICAgICByZXN1bHQgPSBDdXJsX1NPQ0tTNShjb25uLT5zb2Nrc19wcm94eS51c2VyLCBjb25uLT5zb2Nrc19wcm94eS5wYXNzd2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0LCBwb3J0LCBzb2NraW5kZXgsIGNvbm4sIGRvbmUpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENVUkxQUk9YWV9TT0NLUzQ6CisgICAgY2FzZSBDVVJMUFJPWFlfU09DS1M0QToKKyAgICAgIHJlc3VsdCA9IEN1cmxfU09DS1M0KGNvbm4tPnNvY2tzX3Byb3h5LnVzZXIsIGhvc3QsIHBvcnQsIHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4sIGRvbmUpOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgInVua25vd24gcHJveHl0eXBlIG9wdGlvbiBnaXZlbiIpOworICAgICAgcmVzdWx0ID0gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworICAgIH0gLyogc3dpdGNoIHByb3h5dHlwZSAqLworI2Vsc2UKKyAgKHZvaWQpc29ja2luZGV4OworI2VuZGlmIC8qIENVUkxfRElTQUJMRV9QUk9YWSAqLworICB9CisgIGVsc2UKKyAgICAqZG9uZSA9IFRSVUU7IC8qIG5vIFNPQ0tTIHByb3h5LCBzbyBjb25zaWRlciB1cyBjb25uZWN0ZWQgKi8KKworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogcG9zdF9TT0NLUygpIGlzIGNhbGxlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgY29ubmVjdCB0byB0aGUgcGVlciwgd2hpY2gKKyAqICpjb3VsZCogYmUgYSBTT0NLUyBwcm94eQorICovCitzdGF0aWMgdm9pZCBwb3N0X1NPQ0tTKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqY29ubmVjdGVkKQoreworICBjb25uLT5iaXRzLnRjcGNvbm5lY3Rbc29ja2luZGV4XSA9IFRSVUU7CisKKyAgKmNvbm5lY3RlZCA9IFRSVUU7CisgIGlmKHNvY2tpbmRleCA9PSBGSVJTVFNPQ0tFVCkKKyAgICBDdXJsX3BncnNUaW1lKGNvbm4tPmRhdGEsIFRJTUVSX0NPTk5FQ1QpOyAvKiBjb25uZWN0IGRvbmUgKi8KKyAgQ3VybF91cGRhdGVjb25uaW5mbyhjb25uLCBjb25uLT5zb2NrW3NvY2tpbmRleF0pOworICBDdXJsX3ZlcmJvc2Vjb25uZWN0KGNvbm4pOworfQorCiAvKgogICogQ3VybF9pc19jb25uZWN0ZWQoKSBjaGVja3MgaWYgdGhlIHNvY2tldCBoYXMgY29ubmVjdGVkLgogICovCkBAIC03NzEsMTEgKzg1NSwzNyBAQAogICAgIHJldHVybiBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7CiAgIH0KIAorICBpZihTT0NLU19TVEFURShjb25uLT5jbm5jdC5zdGF0ZSkpIHsKKyAgICAvKiBzdGlsbCBkb2luZyBTT0NLUyAqLworICAgIHJlc3VsdCA9IGNvbm5lY3RfU09DS1MoY29ubiwgc29ja2luZGV4LCBjb25uZWN0ZWQpOworICAgIGlmKCFyZXN1bHQgJiYgKmNvbm5lY3RlZCkKKyAgICAgIHBvc3RfU09DS1MoY29ubiwgc29ja2luZGV4LCBjb25uZWN0ZWQpOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKwogICBmb3IoaSA9IDA7IGk8MjsgaSsrKSB7CiAgICAgY29uc3QgaW50IG90aGVyID0gaSBeIDE7CiAgICAgaWYoY29ubi0+dGVtcHNvY2tbaV0gPT0gQ1VSTF9TT0NLRVRfQkFEKQogICAgICAgY29udGludWU7CiAKKyNpZmRlZiBFTkFCTEVfUVVJQworICAgIGlmKGNvbm4tPnRyYW5zcG9ydCA9PSBUUk5TUFJUX1FVSUMpIHsKKyAgICAgIHJlc3VsdCA9IEN1cmxfcXVpY19pc19jb25uZWN0ZWQoY29ubiwgaSwgY29ubmVjdGVkKTsKKyAgICAgIGlmKHJlc3VsdCkgeworICAgICAgICBlcnJvciA9IFNPQ0tFUlJOTzsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICAgIH0KKyAgICAgIGlmKCpjb25uZWN0ZWQpIHsKKyAgICAgICAgLyogdXNlIHRoaXMgc29ja2V0IGZyb20gbm93IG9uICovCisgICAgICAgIGNvbm4tPnNvY2tbc29ja2luZGV4XSA9IGNvbm4tPnRlbXBzb2NrW2ldOworICAgICAgICBjb25uLT5pcF9hZGRyID0gY29ubi0+dGVtcGFkZHJbaV07CisgICAgICAgIGNvbm4tPnRlbXBzb2NrW2ldID0gQ1VSTF9TT0NLRVRfQkFEOworICAgICAgICBjb25ua2VlcChjb25uLCAiSFRUUC8zIGRlZmF1bHQiKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorI2VuZGlmCisKICNpZmRlZiBtcGVpeAogICAgIC8qIENhbGwgdGhpcyBmdW5jdGlvbiBvbmNlIG5vdywgYW5kIGlnbm9yZSB0aGUgcmVzdWx0cy4gV2UgZG8gdGhpcyB0bwogICAgICAgICJjbGVhciIgdGhlIGVycm9yIHN0YXRlIG9uIHRoZSBzb2NrZXQgc28gdGhhdCB3ZSBjYW4gbGF0ZXIgcmVhZCBpdApAQCAtNzg5LDggKzg5OSw4IEBACiAgICAgaWYocmMgPT0gMCkgeyAvKiBubyBjb25uZWN0aW9uIHlldCAqLwogICAgICAgZXJyb3IgPSAwOwogICAgICAgaWYoQ3VybF90aW1lZGlmZihub3csIGNvbm4tPmNvbm5lY3R0aW1lKSA+PSBjb25uLT50aW1lb3V0bXNfcGVyX2FkZHIpIHsKLSAgICAgICAgaW5mb2YoZGF0YSwgIkFmdGVyICVsZG1zIGNvbm5lY3QgdGltZSwgbW92ZSBvbiFcbiIsCi0gICAgICAgICAgICAgIGNvbm4tPnRpbWVvdXRtc19wZXJfYWRkcik7CisgICAgICAgIGluZm9mKGRhdGEsICJBZnRlciAlIiBDVVJMX0ZPUk1BVF9USU1FRElGRl9UCisgICAgICAgICAgICAgICJtcyBjb25uZWN0IHRpbWUsIG1vdmUgb24hXG4iLCBjb25uLT50aW1lb3V0bXNfcGVyX2FkZHIpOwogICAgICAgICBlcnJvciA9IEVUSU1FRE9VVDsKICAgICAgIH0KIApAQCAtODE5LDE4ICs5MjksMTMgQEAKICAgICAgICAgICBjb25uLT50ZW1wc29ja1tvdGhlcl0gPSBDVVJMX1NPQ0tFVF9CQUQ7CiAgICAgICAgIH0KIAotICAgICAgICAvKiBzZWUgaWYgd2UgbmVlZCB0byBkbyBhbnkgcHJveHkgbWFnaWMgZmlyc3Qgb25jZSB3ZSBjb25uZWN0ZWQgKi8KLSAgICAgICAgcmVzdWx0ID0gQ3VybF9jb25uZWN0ZWRfcHJveHkoY29ubiwgc29ja2luZGV4KTsKLSAgICAgICAgaWYocmVzdWx0KQorICAgICAgICAvKiBzZWUgaWYgd2UgbmVlZCB0byBraWNrIG9mZiBhbnkgU09DS1MgcHJveHkgbWFnaWMgb25jZSB3ZQorICAgICAgICAgICBjb25uZWN0ZWQgKi8KKyAgICAgICAgcmVzdWx0ID0gY29ubmVjdF9TT0NLUyhjb25uLCBzb2NraW5kZXgsIGNvbm5lY3RlZCk7CisgICAgICAgIGlmKHJlc3VsdCB8fCAhKmNvbm5lY3RlZCkKICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgICAgIGNvbm4tPmJpdHMudGNwY29ubmVjdFtzb2NraW5kZXhdID0gVFJVRTsKLQotICAgICAgICAqY29ubmVjdGVkID0gVFJVRTsKLSAgICAgICAgaWYoc29ja2luZGV4ID09IEZJUlNUU09DS0VUKQotICAgICAgICAgIEN1cmxfcGdyc1RpbWUoZGF0YSwgVElNRVJfQ09OTkVDVCk7IC8qIGNvbm5lY3QgZG9uZSAqLwotICAgICAgICBDdXJsX3VwZGF0ZWNvbm5pbmZvKGNvbm4sIGNvbm4tPnNvY2tbc29ja2luZGV4XSk7Ci0gICAgICAgIEN1cmxfdmVyYm9zZWNvbm5lY3QoY29ubik7CisgICAgICAgIHBvc3RfU09DS1MoY29ubiwgc29ja2luZGV4LCBjb25uZWN0ZWQpOwogCiAgICAgICAgIHJldHVybiBDVVJMRV9PSzsKICAgICAgIH0KQEAgLTgzOSw2ICs5NDQsOSBAQAogICAgIGVsc2UgaWYocmMgJiBDVVJMX0NTRUxFQ1RfRVJSKQogICAgICAgKHZvaWQpdmVyaWZ5Y29ubmVjdChjb25uLT50ZW1wc29ja1tpXSwgJmVycm9yKTsKIAorI2lmZGVmIEVOQUJMRV9RVUlDCisgICAgZXJyb3I6CisjZW5kaWYKICAgICAvKgogICAgICAqIFRoZSBjb25uZWN0aW9uIGZhaWxlZCBoZXJlLCB3ZSBzaG91bGQgYXR0ZW1wdCB0byBjb25uZWN0IHRvIHRoZSAibmV4dAogICAgICAqIGFkZHJlc3MiIGZvciB0aGUgZ2l2ZW4gaG9zdC4gQnV0IGZpcnN0IHJlbWVtYmVyIHRoZSBsYXRlc3QgZXJyb3IuCkBAIC04NDgsMTkgKzk1NiwyMSBAQAogICAgICAgU0VUX1NPQ0tFUlJOTyhlcnJvcik7CiAgICAgICBpZihjb25uLT50ZW1wYWRkcltpXSkgewogICAgICAgICBDVVJMY29kZSBzdGF0dXM7CisjaWZuZGVmIENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MKICAgICAgICAgY2hhciBpcGFkZHJlc3NbTUFYX0lQQURSX0xFTl07CiAgICAgICAgIGNoYXIgYnVmZmVyW1NUUkVSUk9SX0xFTl07CiAgICAgICAgIEN1cmxfcHJpbnRhYmxlX2FkZHJlc3MoY29ubi0+dGVtcGFkZHJbaV0sIGlwYWRkcmVzcywgTUFYX0lQQURSX0xFTik7CisjZW5kaWYKICAgICAgICAgaW5mb2YoZGF0YSwgImNvbm5lY3QgdG8gJXMgcG9ydCAlbGQgZmFpbGVkOiAlc1xuIiwKICAgICAgICAgICAgICAgaXBhZGRyZXNzLCBjb25uLT5wb3J0LAogICAgICAgICAgICAgICBDdXJsX3N0cmVycm9yKGVycm9yLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CiAKICAgICAgICAgY29ubi0+dGltZW91dG1zX3Blcl9hZGRyID0gY29ubi0+dGVtcGFkZHJbaV0tPmFpX25leHQgPT0gTlVMTCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93IDogYWxsb3cgLyAyOworICAgICAgICAgIGFsbG93IDogYWxsb3cgLyAyOwogCiAgICAgICAgIHN0YXR1cyA9IHRyeW5leHRpcChjb25uLCBzb2NraW5kZXgsIGkpOwotICAgICAgICBpZihzdGF0dXMgIT0gQ1VSTEVfQ09VTEROVF9DT05ORUNUCi0gICAgICAgICAgICB8fCBjb25uLT50ZW1wc29ja1tvdGhlcl0gPT0gQ1VSTF9TT0NLRVRfQkFEKQorICAgICAgICBpZigoc3RhdHVzICE9IENVUkxFX0NPVUxETlRfQ09OTkVDVCkgfHwKKyAgICAgICAgICAgY29ubi0+dGVtcHNvY2tbb3RoZXJdID09IENVUkxfU09DS0VUX0JBRCkKICAgICAgICAgICAvKiB0aGUgbGFzdCBhdHRlbXB0IGZhaWxlZCBhbmQgbm8gb3RoZXIgc29ja2V0cyByZW1haW4gb3BlbiAqLwogICAgICAgICAgIHJlc3VsdCA9IHN0YXR1czsKICAgICAgIH0KQEAgLTg5Miw2ICsxMDAyLDE0IEBACiAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCB0byBjb25uZWN0IHRvICVzIHBvcnQgJWxkOiAlcyIsCiAgICAgICAgICAgaG9zdG5hbWUsIGNvbm4tPnBvcnQsCiAgICAgICAgICAgQ3VybF9zdHJlcnJvcihlcnJvciwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOworCisjaWZkZWYgV1NBRVRJTUVET1VUCisgICAgaWYoV1NBRVRJTUVET1VUID09IGRhdGEtPnN0YXRlLm9zX2Vycm5vKQorICAgICAgcmVzdWx0ID0gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOworI2VsaWYgZGVmaW5lZChFVElNRURPVVQpCisgICAgaWYoRVRJTUVET1VUID09IGRhdGEtPnN0YXRlLm9zX2Vycm5vKQorICAgICAgcmVzdWx0ID0gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOworI2VuZGlmCiAgIH0KIAogICByZXR1cm4gcmVzdWx0OwpAQCAtOTAwLDE0ICsxMDE4LDEyIEBACiBzdGF0aWMgdm9pZCB0Y3Bub2RlbGF5KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCBzb2NrZmQpCiB7CiAjaWYgZGVmaW5lZChUQ1BfTk9ERUxBWSkKLSNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTKQotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSNlbmRpZgogICBjdXJsX3NvY2tsZW5fdCBvbm9mZiA9IChjdXJsX3NvY2tsZW5fdCkgMTsKICAgaW50IGxldmVsID0gSVBQUk9UT19UQ1A7CisjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUykKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIGNoYXIgYnVmZmVyW1NUUkVSUk9SX0xFTl07Ci0KLSNpZiBkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCisjZWxzZQogICAodm9pZCkgY29ubjsKICNlbmRpZgogCkBAIC05MTUsOCArMTAzMSw2IEBACiAgICAgICAgICAgICAgICAgc2l6ZW9mKG9ub2ZmKSkgPCAwKQogICAgIGluZm9mKGRhdGEsICJDb3VsZCBub3Qgc2V0IFRDUF9OT0RFTEFZOiAlc1xuIiwKICAgICAgICAgICBDdXJsX3N0cmVycm9yKFNPQ0tFUlJOTywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOwotICBlbHNlCi0gICAgaW5mb2YoZGF0YSwgIlRDUF9OT0RFTEFZIHNldFxuIik7CiAjZWxzZQogICAodm9pZCljb25uOwogICAodm9pZClzb2NrZmQ7CkBAIC05OTksNyArMTExMyw3IEBACiAgKi8KIHN0YXRpYyBDVVJMY29kZSBzaW5nbGVpcGNvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDdXJsX2FkZHJpbmZvICphaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3ApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgpCiB7CiAgIHN0cnVjdCBDdXJsX3NvY2thZGRyX2V4IGFkZHI7CiAgIGludCByYyA9IC0xOwpAQCAtMTAxNSw3ICsxMTI5LDcgQEAKICAgaW50IG9wdHZhbCA9IDE7CiAjZW5kaWYKICAgY2hhciBidWZmZXJbU1RSRVJST1JfTEVOXTsKLQorICBjdXJsX3NvY2tldF90ICpzb2NrcCA9ICZjb25uLT50ZW1wc29ja1tzb2NraW5kZXhdOwogICAqc29ja3AgPSBDVVJMX1NPQ0tFVF9CQUQ7CiAKICAgcmVzdWx0ID0gQ3VybF9zb2NrZXQoY29ubiwgYWksICZhZGRyLCAmc29ja2ZkKTsKQEAgLTEwMjYsOCArMTE0MCw4IEBACiAgICAgcmV0dXJuIENVUkxFX09LOwogCiAgIC8qIHN0b3JlIHJlbW90ZSBhZGRyZXNzIGFuZCBwb3J0IHVzZWQgaW4gdGhpcyBjb25uZWN0aW9uIGF0dGVtcHQgKi8KLSAgaWYoIWdldGFkZHJlc3NpbmZvKChzdHJ1Y3Qgc29ja2FkZHIqKSZhZGRyLnNhX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MsICZwb3J0KSkgeworICBpZighQ3VybF9hZGRyMnN0cmluZygoc3RydWN0IHNvY2thZGRyKikmYWRkci5zYV9hZGRyLCBhZGRyLmFkZHJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcywgJnBvcnQpKSB7CiAgICAgLyogbWFsZm9ybWVkIGFkZHJlc3Mgb3IgYnVnIGluIGluZXRfbnRvcCwgdHJ5IG5leHQgYWRkcmVzcyAqLwogICAgIGZhaWxmKGRhdGEsICJzYV9hZGRyIGluZXRfbnRvcCgpIGZhaWxlZCB3aXRoIGVycm5vICVkOiAlcyIsCiAgICAgICAgICAgZXJybm8sIEN1cmxfc3RyZXJyb3IoZXJybm8sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKTsKQEAgLTEwOTQsOCArMTIwOCw4IEBACiAgIGlmKGNvbm4tPm51bV9hZGRyID4gMSkKICAgICBDdXJsX2V4cGlyZShkYXRhLCBjb25uLT50aW1lb3V0bXNfcGVyX2FkZHIsIEVYUElSRV9ETlNfUEVSX05BTUUpOwogCi0gIC8qIENvbm5lY3QgVENQIHNvY2tldHMsIGJpbmQgVURQICovCi0gIGlmKCFpc2Nvbm5lY3RlZCAmJiAoY29ubi0+c29ja3R5cGUgPT0gU09DS19TVFJFQU0pKSB7CisgIC8qIENvbm5lY3QgVENQIGFuZCBRVUlDIHNvY2tldHMgKi8KKyAgaWYoIWlzY29ubmVjdGVkICYmIChjb25uLT50cmFuc3BvcnQgIT0gVFJOU1BSVF9VRFApKSB7CiAgICAgaWYoY29ubi0+Yml0cy50Y3BfZmFzdG9wZW4pIHsKICNpZiBkZWZpbmVkKENPTk5FQ1RfREFUQV9JREVNUE9URU5UKSAvKiBEYXJ3aW4gKi8KICMgIGlmIGRlZmluZWQoSEFWRV9CVUlMVElOX0FWQUlMQUJMRSkKQEAgLTExMjQsOCArMTIzOCw2IEBACiAgICAgICBpZihzZXRzb2Nrb3B0KHNvY2tmZCwgSVBQUk9UT19UQ1AsIFRDUF9GQVNUT1BFTl9DT05ORUNULAogICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSZvcHR2YWwsIHNpemVvZihvcHR2YWwpKSA8IDApCiAgICAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gZW5hYmxlIFRDUCBGYXN0IE9wZW4gb24gZmQgJWRcbiIsIHNvY2tmZCk7Ci0gICAgICBlbHNlCi0gICAgICAgIGluZm9mKGRhdGEsICJUQ1BfRkFTVE9QRU5fQ09OTkVDVCBzZXRcbiIpOwogCiAgICAgICByYyA9IGNvbm5lY3Qoc29ja2ZkLCAmYWRkci5zYV9hZGRyLCBhZGRyLmFkZHJsZW4pOwogI2VsaWYgZGVmaW5lZChNU0dfRkFTVE9QRU4pIC8qIG9sZCBMaW51eCAqLwpAQCAtMTE0MSw2ICsxMjUzLDE2IEBACiAKICAgICBpZigtMSA9PSByYykKICAgICAgIGVycm9yID0gU09DS0VSUk5POworI2lmZGVmIEVOQUJMRV9RVUlDCisgICAgZWxzZSBpZihjb25uLT50cmFuc3BvcnQgPT0gVFJOU1BSVF9RVUlDKSB7CisgICAgICAvKiBwYXNzIGluICdzb2NrZmQnIHNlcGFyYXRlbHkgc2luY2UgaXQgaGFzbid0IGJlZW4gcHV0IGludG8gdGhlCisgICAgICAgICB0ZW1wc29jayBhcnJheSBhdCB0aGlzIHBvaW50ICovCisgICAgICByZXN1bHQgPSBDdXJsX3F1aWNfY29ubmVjdChjb25uLCBzb2NrZmQsIHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyLnNhX2FkZHIsIGFkZHIuYWRkcmxlbik7CisgICAgICBpZihyZXN1bHQpCisgICAgICAgIGVycm9yID0gU09DS0VSUk5POworICAgIH0KKyNlbmRpZgogICB9CiAgIGVsc2UgewogICAgICpzb2NrcCA9IHNvY2tmZDsKQEAgLTEyMTQsNyArMTMzNiw3IEBACiAKICAgLyogc3RhcnQgY29ubmVjdGluZyB0byBmaXJzdCBJUCAqLwogICB3aGlsZShjb25uLT50ZW1wYWRkclswXSkgewotICAgIHJlc3VsdCA9IHNpbmdsZWlwY29ubmVjdChjb25uLCBjb25uLT50ZW1wYWRkclswXSwgJihjb25uLT50ZW1wc29ja1swXSkpOworICAgIHJlc3VsdCA9IHNpbmdsZWlwY29ubmVjdChjb25uLCBjb25uLT50ZW1wYWRkclswXSwgMCk7CiAgICAgaWYoIXJlc3VsdCkKICAgICAgIGJyZWFrOwogICAgIGNvbm4tPnRlbXBhZGRyWzBdID0gY29ubi0+dGVtcGFkZHJbMF0tPmFpX25leHQ7CkBAIC0xMzI2LDEyICsxNDQ4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCBzb2NrKQogewogICBpZihjb25uICYmIGNvbm4tPmZjbG9zZXNvY2tldCkgewotICAgIGlmKChzb2NrID09IGNvbm4tPnNvY2tbU0VDT05EQVJZU09DS0VUXSkgJiYKLSAgICAgICBjb25uLT5zb2NrX2FjY2VwdGVkW1NFQ09OREFSWVNPQ0tFVF0pCisgICAgaWYoKHNvY2sgPT0gY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdKSAmJiBjb25uLT5zb2NrX2FjY2VwdGVkKQogICAgICAgLyogaWYgdGhpcyBzb2NrZXQgbWF0Y2hlcyB0aGUgc2Vjb25kIHNvY2tldCwgYW5kIHRoYXQgd2FzIGNyZWF0ZWQgd2l0aAogICAgICAgICAgYWNjZXB0LCB0aGVuIHdlIE1VU1QgTk9UIGNhbGwgdGhlIGNhbGxiYWNrIGJ1dCBjbGVhciB0aGUgYWNjZXB0ZWQKICAgICAgICAgIHN0YXR1cyAqLwotICAgICAgY29ubi0+c29ja19hY2NlcHRlZFtTRUNPTkRBUllTT0NLRVRdID0gRkFMU0U7CisgICAgICBjb25uLT5zb2NrX2FjY2VwdGVkID0gRkFMU0U7CiAgICAgZWxzZSB7CiAgICAgICBpbnQgcmM7CiAgICAgICBDdXJsX211bHRpX2Nsb3NlZChjb25uLT5kYXRhLCBzb2NrKTsKQEAgLTEzODEsOCArMTUwMiw5IEBACiAgICAqLwogCiAgIGFkZHItPmZhbWlseSA9IGFpLT5haV9mYW1pbHk7Ci0gIGFkZHItPnNvY2t0eXBlID0gY29ubi0+c29ja3R5cGU7Ci0gIGFkZHItPnByb3RvY29sID0gY29ubi0+c29ja3R5cGUgPT0gU09DS19ER1JBTT9JUFBST1RPX1VEUDphaS0+YWlfcHJvdG9jb2w7CisgIGFkZHItPnNvY2t0eXBlID0gKGNvbm4tPnRyYW5zcG9ydCA9PSBUUk5TUFJUX1RDUCkgPyBTT0NLX1NUUkVBTSA6IFNPQ0tfREdSQU07CisgIGFkZHItPnByb3RvY29sID0gY29ubi0+dHJhbnNwb3J0ICE9IFRSTlNQUlRfVENQID8gSVBQUk9UT19VRFAgOgorICAgIGFpLT5haV9wcm90b2NvbDsKICAgYWRkci0+YWRkcmxlbiA9IGFpLT5haV9hZGRybGVuOwogCiAgIGlmKGFkZHItPmFkZHJsZW4gPiBzaXplb2Yoc3RydWN0IEN1cmxfc29ja2FkZHJfc3RvcmFnZSkpCkBAIC0xNDEzLDYgKzE1MzUsMTEgQEAKICAgICAvKiBubyBzb2NrZXQsIG5vIGNvbm5lY3Rpb24gKi8KICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwogCisgIGlmKGNvbm4tPnRyYW5zcG9ydCA9PSBUUk5TUFJUX1FVSUMpIHsKKyAgICAvKiBRVUlDIHNvY2tldHMgbmVlZCB0byBiZSBub25ibG9ja2luZyAqLworICAgICh2b2lkKWN1cmx4X25vbmJsb2NrKCpzb2NrZmQsIFRSVUUpOworICB9CisKICNpZiBkZWZpbmVkKEVOQUJMRV9JUFY2KSAmJiBkZWZpbmVkKEhBVkVfU09DS0FERFJfSU42X1NJTjZfU0NPUEVfSUQpCiAgIGlmKGNvbm4tPnNjb3BlX2lkICYmIChhZGRyLT5mYW1pbHkgPT0gQUZfSU5FVDYpKSB7CiAgICAgc3RydWN0IHNvY2thZGRyX2luNiAqIGNvbnN0IHNhNiA9ICh2b2lkICopJmFkZHItPnNhX2FkZHI7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jb25uZWN0LmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jb25uZWN0LmgKaW5kZXggNmE1Yzc1NS4uYjIzMDg1YSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY29ubmVjdC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2Nvbm5lY3QuaApAQCAtNTEsNiArNTEsOSBAQAogY3VybF9zb2NrZXRfdCBDdXJsX2dldGNvbm5lY3RpbmZvKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICoqY29ubnApOwogCitib29sIEN1cmxfYWRkcjJzdHJpbmcoc3RydWN0IHNvY2thZGRyICpzYSwgY3VybF9zb2NrbGVuX3Qgc2FsZW4sCisgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYWRkciwgbG9uZyAqcG9ydCk7CisKIC8qCiAgKiBDaGVjayBpZiBhIGNvbm5lY3Rpb24gc2VlbXMgdG8gYmUgYWxpdmUuCiAgKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2Nvb2tpZS5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY29va2llLmMKaW5kZXggOWE5ZTE0ZC4uNjliYzA0MiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY29va2llLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY29va2llLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTk2LDYgKzk2LDkgQEAKICNpbmNsdWRlICJjdXJsX2dldF9saW5lLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1yY2hyLmgiCiAjaW5jbHVkZSAiaW5ldF9wdG9uLmgiCisjaW5jbHVkZSAicGFyc2VkYXRlLmgiCisjaW5jbHVkZSAicmFuZC5oIgorI2luY2x1ZGUgInJlbmFtZS5oIgogCiAvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKQEAgLTUzNiw5ICs1MzksOSBAQAogICAgICAgICAgKiBvbmx5IHRlc3QgZm9yIG5hbWVzIHdoZXJlIHRoYXQgY2FuIHBvc3NpYmx5IGJlIHRydWUuCiAgICAgICAgICAqLwogICAgICAgICBpZihubGVuID4gMyAmJiBuYW1lWzBdID09ICdfJyAmJiBuYW1lWzFdID09ICdfJykgewotICAgICAgICAgIGlmKHN0cm5jYXNlY29tcGFyZSgiX19TZWN1cmUtIiwgbmFtZSwgOSkpCisgICAgICAgICAgaWYoIXN0cm5jbXAoIl9fU2VjdXJlLSIsIG5hbWUsIDkpKQogICAgICAgICAgICAgY28tPnByZWZpeCB8PSBDT09LSUVfUFJFRklYX19TRUNVUkU7Ci0gICAgICAgICAgZWxzZSBpZihzdHJuY2FzZWNvbXBhcmUoIl9fSG9zdC0iLCBuYW1lLCA3KSkKKyAgICAgICAgICBlbHNlIGlmKCFzdHJuY21wKCJfX0hvc3QtIiwgbmFtZSwgNykpCiAgICAgICAgICAgICBjby0+cHJlZml4IHw9IENPT0tJRV9QUkVGSVhfX0hPU1Q7CiAgICAgICAgIH0KIApAQCAtNzE1LDcgKzcxOCw3IEBACiAgICAgZWxzZSBpZihjby0+ZXhwaXJlc3RyKSB7CiAgICAgICAvKiBOb3RlIHRoYXQgaWYgdGhlIGRhdGUgY291bGRuJ3QgZ2V0IHBhcnNlZCBmb3Igd2hhdGV2ZXIgcmVhc29uLAogICAgICAgICAgdGhlIGNvb2tpZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBzZXNzaW9uIGNvb2tpZSAqLwotICAgICAgY28tPmV4cGlyZXMgPSBjdXJsX2dldGRhdGUoY28tPmV4cGlyZXN0ciwgTlVMTCk7CisgICAgICBjby0+ZXhwaXJlcyA9IEN1cmxfZ2V0ZGF0ZV9jYXBwZWQoY28tPmV4cGlyZXN0cik7CiAKICAgICAgIC8qIFNlc3Npb24gY29va2llcyBoYXZlIGV4cGlyZXMgc2V0IHRvIDAgc28gaWYgd2UgZ2V0IHRoYXQgYmFjawogICAgICAgICAgZnJvbSB0aGUgZGF0ZSBwYXJzZXIgbGV0J3MgYWRkIGEgc2Vjb25kIHRvIG1ha2UgaXQgYQpAQCAtODE5LDIyICs4MjIsMTQgQEAKICAgICAgICAgICBiYWRjb29raWUgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgMToKLSAgICAgICAgLyogVGhpcyBmaWVsZCBnb3QgaXRzIGV4cGxhbmF0aW9uIG9uIHRoZSAyM3JkIG9mIE1heSAyMDAxIGJ5Ci0gICAgICAgICAgIEFuZHLDqXMgR2FyY8OtYToKLQotICAgICAgICAgICBmbGFnOiBBIFRSVUUvRkFMU0UgdmFsdWUgaW5kaWNhdGluZyBpZiBhbGwgbWFjaGluZXMgd2l0aGluIGEgZ2l2ZW4KLSAgICAgICAgICAgZG9tYWluIGNhbiBhY2Nlc3MgdGhlIHZhcmlhYmxlLiBUaGlzIHZhbHVlIGlzIHNldCBhdXRvbWF0aWNhbGx5IGJ5Ci0gICAgICAgICAgIHRoZSBicm93c2VyLCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIHlvdSBzZXQgZm9yIHRoZSBkb21haW4uCi0KLSAgICAgICAgICAgQXMgZmFyIGFzIEkgY2FuIHNlZSwgaXQgaXMgc2V0IHRvIHRydWUgd2hlbiB0aGUgY29va2llIHNheXMKKyAgICAgICAgLyogZmxhZzogQSBUUlVFL0ZBTFNFIHZhbHVlIGluZGljYXRpbmcgaWYgYWxsIG1hY2hpbmVzIHdpdGhpbiBhIGdpdmVuCisgICAgICAgICAgIGRvbWFpbiBjYW4gYWNjZXNzIHRoZSB2YXJpYWJsZS4gU2V0IFRSVUUgd2hlbiB0aGUgY29va2llIHNheXMKICAgICAgICAgICAgLmRvbWFpbi5jb20gYW5kIHRvIGZhbHNlIHdoZW4gdGhlIGRvbWFpbiBpcyBjb21wbGV0ZSB3d3cuZG9tYWluLmNvbQogICAgICAgICAqLwogICAgICAgICBjby0+dGFpbG1hdGNoID0gc3RyY2FzZWNvbXBhcmUocHRyLCAiVFJVRSIpP1RSVUU6RkFMU0U7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSAyOgotICAgICAgICAvKiBJdCB0dXJucyBvdXQsIHRoYXQgc29tZXRpbWVzIHRoZSBmaWxlIGZvcm1hdCBhbGxvd3MgdGhlIHBhdGgKLSAgICAgICAgICAgZmllbGQgdG8gcmVtYWluIG5vdCBmaWxsZWQgaW4sIHdlIHRyeSB0byBkZXRlY3QgdGhpcyBhbmQgd29yawotICAgICAgICAgICBhcm91bmQgaXQhIEFuZHLDqXMgR2FyY8OtYSBtYWRlIHVzIGF3YXJlIG9mIHRoaXMuLi4gKi8KKyAgICAgICAgLyogVGhlIGZpbGUgZm9ybWF0IGFsbG93cyB0aGUgcGF0aCBmaWVsZCB0byByZW1haW4gbm90IGZpbGxlZCBpbiAqLwogICAgICAgICBpZihzdHJjbXAoIlRSVUUiLCBwdHIpICYmIHN0cmNtcCgiRkFMU0UiLCBwdHIpKSB7CiAgICAgICAgICAgLyogb25seSBpZiB0aGUgcGF0aCBkb2Vzbid0IGxvb2sgbGlrZSBhIGJvb2xlYW4gb3B0aW9uISAqLwogICAgICAgICAgIGNvLT5wYXRoID0gc3RyZHVwKHB0cik7CkBAIC0xMDUzLDcgKzEwNDgsNyBAQAogCiAgICAgICAgICpjbGlzdCA9ICpjbzsgIC8qIHRoZW4gc3RvcmUgYWxsIHRoZSBuZXcgZGF0YSAqLwogCi0gICAgICAgIGZyZWUoY28pOyAgIC8qIGZyZWUgdGhlIG5ld2x5IGFsbG9jZWQgbWVtb3J5ICovCisgICAgICAgIGZyZWUoY28pOyAgIC8qIGZyZWUgdGhlIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkgKi8KICAgICAgICAgY28gPSBjbGlzdDsgLyogcG9pbnQgdG8gdGhlIHByZXZpb3VzIHN0cnVjdCBpbnN0ZWFkICovCiAKICAgICAgICAgLyogV2UgaGF2ZSByZXBsYWNlZCBhIGNvb2tpZSwgbm93IHNraXAgdGhlIHJlc3Qgb2YgdGhlIGxpc3QgYnV0CkBAIC0xMDk4LDYgKzEwOTMsOCBAQAogICoKICAqIElmICduZXdzZXNzaW9uJyBpcyBUUlVFLCBkaXNjYXJkIGFsbCAic2Vzc2lvbiBjb29raWVzIiBvbiByZWFkIGZyb20gZmlsZS4KICAqCisgKiBOb3RlIHRoYXQgJ2RhdGEnIG1pZ2h0IGJlIGNhbGxlZCBhcyBOVUxMIHBvaW50ZXIuCisgKgogICogUmV0dXJucyBOVUxMIG9uIG91dCBvZiBtZW1vcnkuIEludmFsaWQgY29va2llcyBhcmUgaWdub3JlZC4KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogc3RydWN0IENvb2tpZUluZm8gKkN1cmxfY29va2llX2luaXQoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKQEAgLTExNjgsNiArMTE2NSw4IEBACiAgIH0KIAogICBjLT5ydW5uaW5nID0gVFJVRTsgICAgICAgICAgLyogbm93LCB3ZSdyZSBydW5uaW5nICovCisgIGlmKGRhdGEpCisgICAgZGF0YS0+c3RhdGUuY29va2llX2VuZ2luZSA9IFRSVUU7CiAKICAgcmV0dXJuIGM7CiAKQEAgLTE1MDQsMTEgKzE1MDMsMTQgQEAKICAqCiAgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyBub24temVybyBvbiB3cml0ZSBmYWlsdXJlLgogICovCi1zdGF0aWMgaW50IGNvb2tpZV9vdXRwdXQoc3RydWN0IENvb2tpZUluZm8gKmMsIGNvbnN0IGNoYXIgKmR1bXBoZXJlKQorc3RhdGljIGludCBjb29raWVfb3V0cHV0KHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IENvb2tpZUluZm8gKmMsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogICBzdHJ1Y3QgQ29va2llICpjbzsKLSAgRklMRSAqb3V0OworICBGSUxFICpvdXQgPSBOVUxMOwogICBib29sIHVzZV9zdGRvdXQgPSBGQUxTRTsKKyAgY2hhciAqdGVtcHN0b3JlID0gTlVMTDsKKyAgYm9vbCBlcnJvciA9IGZhbHNlOwogCiAgIGlmKCFjKQogICAgIC8qIG5vIGNvb2tpZSBlbmdpbmUgYWxpdmUgKi8KQEAgLTE1MTcsMTYgKzE1MTksMjQgQEAKICAgLyogYXQgZmlyc3QsIHJlbW92ZSBleHBpcmVkIGNvb2tpZXMgKi8KICAgcmVtb3ZlX2V4cGlyZWQoYyk7CiAKLSAgaWYoIXN0cmNtcCgiLSIsIGR1bXBoZXJlKSkgeworICBpZighc3RyY21wKCItIiwgZmlsZW5hbWUpKSB7CiAgICAgLyogdXNlIHN0ZG91dCAqLwogICAgIG91dCA9IHN0ZG91dDsKICAgICB1c2Vfc3Rkb3V0ID0gVFJVRTsKICAgfQogICBlbHNlIHsKLSAgICBvdXQgPSBmb3BlbihkdW1waGVyZSwgRk9QRU5fV1JJVEVURVhUKTsKLSAgICBpZighb3V0KSB7Ci0gICAgICByZXR1cm4gMTsgLyogZmFpbHVyZSAqLwotICAgIH0KKyAgICB1bnNpZ25lZCBjaGFyIHJhbmRzdWZmaXhbOV07CisKKyAgICBpZihDdXJsX3JhbmRfaGV4KGRhdGEsIHJhbmRzdWZmaXgsIHNpemVvZihyYW5kc3VmZml4KSkpCisgICAgICByZXR1cm4gMjsKKworICAgIHRlbXBzdG9yZSA9IGFwcmludGYoIiVzLiVzLnRtcCIsIGZpbGVuYW1lLCByYW5kc3VmZml4KTsKKyAgICBpZighdGVtcHN0b3JlKQorICAgICAgcmV0dXJuIDE7CisKKyAgICBvdXQgPSBmb3Blbih0ZW1wc3RvcmUsIEZPUEVOX1dSSVRFVEVYVCk7CisgICAgaWYoIW91dCkKKyAgICAgIGdvdG8gZXJyb3I7CiAgIH0KIAogICBmcHV0cygiIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlXG4iCkBAIC0xNTM2LDM1ICsxNTQ2LDMxIEBACiAKICAgaWYoYy0+bnVtY29va2llcykgewogICAgIHVuc2lnbmVkIGludCBpOwotICAgIHVuc2lnbmVkIGludCBqOworICAgIHNpemVfdCBudmFsaWQgPSAwOwogICAgIHN0cnVjdCBDb29raWUgKiphcnJheTsKIAotICAgIGFycmF5ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgQ29va2llICopICogYy0+bnVtY29va2llcyk7CisgICAgYXJyYXkgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBDb29raWUgKikgKiBjLT5udW1jb29raWVzKTsKICAgICBpZighYXJyYXkpIHsKLSAgICAgIGlmKCF1c2Vfc3Rkb3V0KQotICAgICAgICBmY2xvc2Uob3V0KTsKLSAgICAgIHJldHVybiAxOworICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBqID0gMDsKKyAgICAvKiBvbmx5IHNvcnQgdGhlIGNvb2tpZXMgd2l0aCBhIGRvbWFpbiBwcm9wZXJ0eSAqLwogICAgIGZvcihpID0gMDsgaSA8IENPT0tJRV9IQVNIX1NJWkU7IGkrKykgewogICAgICAgZm9yKGNvID0gYy0+Y29va2llc1tpXTsgY287IGNvID0gY28tPm5leHQpIHsKICAgICAgICAgaWYoIWNvLT5kb21haW4pCiAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGFycmF5W2orK10gPSBjbzsKKyAgICAgICAgYXJyYXlbbnZhbGlkKytdID0gY287CiAgICAgICB9CiAgICAgfQogCi0gICAgcXNvcnQoYXJyYXksIGMtPm51bWNvb2tpZXMsIHNpemVvZihzdHJ1Y3QgQ29va2llICopLCBjb29raWVfc29ydF9jdCk7CisgICAgcXNvcnQoYXJyYXksIG52YWxpZCwgc2l6ZW9mKHN0cnVjdCBDb29raWUgKiksIGNvb2tpZV9zb3J0X2N0KTsKIAotICAgIGZvcihpID0gMDsgaSA8IGo7IGkrKykgeworICAgIGZvcihpID0gMDsgaSA8IG52YWxpZDsgaSsrKSB7CiAgICAgICBjaGFyICpmb3JtYXRfcHRyID0gZ2V0X25ldHNjYXBlX2Zvcm1hdChhcnJheVtpXSk7CiAgICAgICBpZihmb3JtYXRfcHRyID09IE5VTEwpIHsKICAgICAgICAgZnByaW50ZihvdXQsICIjXG4jIEZhdGFsIGxpYmN1cmwgZXJyb3JcbiIpOwogICAgICAgICBmcmVlKGFycmF5KTsKLSAgICAgICAgaWYoIXVzZV9zdGRvdXQpCi0gICAgICAgICAgZmNsb3NlKG91dCk7Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICBnb3RvIGVycm9yOwogICAgICAgfQogICAgICAgZnByaW50ZihvdXQsICIlc1xuIiwgZm9ybWF0X3B0cik7CiAgICAgICBmcmVlKGZvcm1hdF9wdHIpOwpAQCAtMTU3MiwxMCArMTU3OCwyNCBAQAogCiAgICAgZnJlZShhcnJheSk7CiAgIH0KLSAgaWYoIXVzZV9zdGRvdXQpCi0gICAgZmNsb3NlKG91dCk7CiAKLSAgcmV0dXJuIDA7CisgIGlmKCF1c2Vfc3Rkb3V0KSB7CisgICAgZmNsb3NlKG91dCk7CisgICAgb3V0ID0gTlVMTDsKKyAgICBpZihDdXJsX3JlbmFtZSh0ZW1wc3RvcmUsIGZpbGVuYW1lKSkgeworICAgICAgdW5saW5rKHRlbXBzdG9yZSk7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgfQorCisgIGdvdG8gY2xlYW51cDsKK2Vycm9yOgorICBlcnJvciA9IHRydWU7CitjbGVhbnVwOgorICBpZihvdXQgJiYgIXVzZV9zdGRvdXQpCisgICAgZmNsb3NlKG91dCk7CisgIGZyZWUodGVtcHN0b3JlKTsKKyAgcmV0dXJuIGVycm9yID8gMSA6IDA7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgY3VybF9zbGlzdCAqY29va2llX2xpc3Qoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSkKQEAgLTE2MjEsNyArMTY0MSw3IEBACiAgIHJldHVybiBsaXN0OwogfQogCi12b2lkIEN1cmxfZmx1c2hfY29va2llcyhzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCBpbnQgY2xlYW51cCkKK3ZvaWQgQ3VybF9mbHVzaF9jb29raWVzKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsIGJvb2wgY2xlYW51cCkKIHsKICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfQ09PS0lFSkFSXSkgewogICAgIGlmKGRhdGEtPmNoYW5nZS5jb29raWVsaXN0KSB7CkBAIC0xNjM0LDcgKzE2NTQsNyBAQAogICAgIEN1cmxfc2hhcmVfbG9jayhkYXRhLCBDVVJMX0xPQ0tfREFUQV9DT09LSUUsIENVUkxfTE9DS19BQ0NFU1NfU0lOR0xFKTsKIAogICAgIC8qIGlmIHdlIGhhdmUgYSBkZXN0aW5hdGlvbiBmaWxlIGZvciBhbGwgdGhlIGNvb2tpZXMgdG8gZ2V0IGR1bXBlZCB0byAqLwotICAgIGlmKGNvb2tpZV9vdXRwdXQoZGF0YS0+Y29va2llcywgZGF0YS0+c2V0LnN0cltTVFJJTkdfQ09PS0lFSkFSXSkpCisgICAgaWYoY29va2llX291dHB1dChkYXRhLCBkYXRhLT5jb29raWVzLCBkYXRhLT5zZXQuc3RyW1NUUklOR19DT09LSUVKQVJdKSkKICAgICAgIGluZm9mKGRhdGEsICJXQVJOSU5HOiBmYWlsZWQgdG8gc2F2ZSBjb29raWVzIGluICVzXG4iLAogICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfQ09PS0lFSkFSXSk7CiAgIH0KQEAgLTE2NTAsNiArMTY3MCw3IEBACiAKICAgaWYoY2xlYW51cCAmJiAoIWRhdGEtPnNoYXJlIHx8IChkYXRhLT5jb29raWVzICE9IGRhdGEtPnNoYXJlLT5jb29raWVzKSkpIHsKICAgICBDdXJsX2Nvb2tpZV9jbGVhbnVwKGRhdGEtPmNvb2tpZXMpOworICAgIGRhdGEtPmNvb2tpZXMgPSBOVUxMOwogICB9CiAgIEN1cmxfc2hhcmVfdW5sb2NrKGRhdGEsIENVUkxfTE9DS19EQVRBX0NPT0tJRSk7CiB9CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jb29raWUuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2Nvb2tpZS5oCmluZGV4IGIyNzMwY2YuLmIzODY1ZTYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2Nvb2tpZS5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2Nvb2tpZS5oCkBAIC0xMDksNyArMTA5LDcgQEAKICNkZWZpbmUgQ3VybF9jb29raWVfY2xlYW51cCh4KSBDdXJsX25vcF9zdG10CiAjZGVmaW5lIEN1cmxfZmx1c2hfY29va2llcyh4LHkpIEN1cmxfbm9wX3N0bXQKICNlbHNlCi12b2lkIEN1cmxfZmx1c2hfY29va2llcyhzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCBpbnQgY2xlYW51cCk7Cit2b2lkIEN1cmxfZmx1c2hfY29va2llcyhzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCBib29sIGNsZWFudXApOwogdm9pZCBDdXJsX2Nvb2tpZV9jbGVhbnVwKHN0cnVjdCBDb29raWVJbmZvICopOwogc3RydWN0IENvb2tpZUluZm8gKkN1cmxfY29va2llX2luaXQoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgc3RydWN0IENvb2tpZUluZm8gKiwgYm9vbCk7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2Jhc2U2NC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9iYXNlNjQuaAppbmRleCA3ZTlmYzI2Li5jZmI2ZWU3IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2Jhc2U2NC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfYmFzZTY0LmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfY29uZmlnLmguY21ha2UgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2NvbmZpZy5oLmNtYWtlCmluZGV4IGIyODVjM2YuLmFiOGYyMjUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfY29uZmlnLmguY21ha2UKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9jb25maWcuaC5jbWFrZQpAQCAtNjQsNiArNjQsOSBAQAogI2RlZmluZSBDVVJMX0VYVEVSTl9TWU1CT0wKICNlbmRpZgogCisvKiBBbGxvdyBTTUIgdG8gd29yayBvbiBXaW5kb3dzICovCisjY21ha2VkZWZpbmUgVVNFX1dJTjMyX0NSWVBUTworCiAvKiBVc2UgV2luZG93cyBMREFQIGltcGxlbWVudGF0aW9uICovCiAjY21ha2VkZWZpbmUgVVNFX1dJTjMyX0xEQVAgMQogCkBAIC0xMzksOSArMTQyLDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGxmY24uaD4gaGVhZGVyIGZpbGUuICovCiAjY21ha2VkZWZpbmUgSEFWRV9ETEZDTl9IIDEKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2luZXMnIGZ1bmN0aW9uLiAqLwotI2NtYWtlZGVmaW5lIEhBVkVfRU5HSU5FX0xPQURfQlVJTFRJTl9FTkdJTkVTIDEKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlcnJuby5oPiBoZWFkZXIgZmlsZS4gKi8KICNjbWFrZWRlZmluZSBIQVZFX0VSUk5PX0ggMQogCkBAIC0yMzIsNiArMjMyLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0c29ja25hbWUnIGZ1bmN0aW9uLiAqLwogI2NtYWtlZGVmaW5lIEhBVkVfR0VUU09DS05BTUUgMQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGlmX25hbWV0b2luZGV4JyBmdW5jdGlvbi4gKi8KKyNjbWFrZWRlZmluZSBIQVZFX0lGX05BTUVUT0lOREVYIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRwd3VpZCcgZnVuY3Rpb24uICovCiAjY21ha2VkZWZpbmUgSEFWRV9HRVRQV1VJRCAxCiAKQEAgLTM5NSw5ICszOTgsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaWJzc2gyLmg+IGhlYWRlciBmaWxlLiAqLwogI2NtYWtlZGVmaW5lIEhBVkVfTElCU1NIMl9IIDEKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzc2wnIGxpYnJhcnkgKC1sc3NsKS4gKi8KLSNjbWFrZWRlZmluZSBIQVZFX0xJQlNTTCAxCi0KIC8qIGlmIHpsaWIgaXMgYXZhaWxhYmxlICovCiAjY21ha2VkZWZpbmUgSEFWRV9MSUJaIDEKIApAQCAtNDQ2LDkgKzQ0Niw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG9wZW5zc2wvY3J5cHRvLmg+IGhlYWRlciBmaWxlLiAqLwogI2NtYWtlZGVmaW5lIEhBVkVfT1BFTlNTTF9DUllQVE9fSCAxCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8b3BlbnNzbC9lbmdpbmUuaD4gaGVhZGVyIGZpbGUuICovCi0jY21ha2VkZWZpbmUgSEFWRV9PUEVOU1NMX0VOR0lORV9IIDEKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxvcGVuc3NsL2Vyci5oPiBoZWFkZXIgZmlsZS4gKi8KICNjbWFrZWRlZmluZSBIQVZFX09QRU5TU0xfRVJSX0ggMQogCkBAIC01NzUsOSArNTcyLDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc29ja2V0JyBmdW5jdGlvbi4gKi8KICNjbWFrZWRlZmluZSBIQVZFX1NPQ0tFVCAxCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgU1NMX2dldF9zaHV0ZG93bicgZnVuY3Rpb24uICovCi0jY21ha2VkZWZpbmUgSEFWRV9TU0xfR0VUX1NIVVRET1dOIDEKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzc2wuaD4gaGVhZGVyIGZpbGUuICovCiAjY21ha2VkZWZpbmUgSEFWRV9TU0xfSCAxCiAKQEAgLTg3OSwzNSArODczLDQ0IEBACiAvKiBEZWZpbmUgdG8gdGhlIGZ1bmN0aW9uIHJldHVybiB0eXBlIGZvciBzZW5kLiAqLwogI2NtYWtlZGVmaW5lIFNFTkRfVFlQRV9SRVRWICR7U0VORF9UWVBFX1JFVFZ9CiAKKy8qCisgTm90ZTogU0laRU9GXyogdmFyaWFibGVzIGFyZSBmZXRjaGVkIHdpdGggQ01ha2UgdGhyb3VnaCBjaGVja190eXBlX3NpemUoKS4KKyBBcyBwZXIgQ01ha2UgZG9jdW1lbnRhdGlvbiBvbiBDaGVja1R5cGVTaXplLCBDIHByZXByb2Nlc3NvciBjb2RlIGlzCisgZ2VuZXJhdGVkIGJ5IENNYWtlIGludG8gU0laRU9GXypfQ09ERS4gVGhpcyBpcyB3aGF0IHdlIHVzZSBpbiB0aGUKKyBmb2xsb3dpbmcgc3RhdGVtZW50cy4KKworIFJlZmVyZW5jZTogaHR0cHM6Ly9jbWFrZS5vcmcvY21ha2UvaGVscC9sYXRlc3QvbW9kdWxlL0NoZWNrVHlwZVNpemUuaHRtbAorKi8KKwogLyogVGhlIHNpemUgb2YgYGludCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KLUBTSVpFT0ZfSU5UX0NPREVACiske1NJWkVPRl9JTlRfQ09ERX0KIAogLyogVGhlIHNpemUgb2YgYHNob3J0JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwotQFNJWkVPRl9TSE9SVF9DT0RFQAorJHtTSVpFT0ZfU0hPUlRfQ09ERX0KIAogLyogVGhlIHNpemUgb2YgYGxvbmcnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCi1AU0laRU9GX0xPTkdfQ09ERUAKKyR7U0laRU9GX0xPTkdfQ09ERX0KIAogLyogVGhlIHNpemUgb2YgYGxvbmcgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KLUBTSVpFT0ZfTE9OR19MT05HX0NPREVACiske1NJWkVPRl9MT05HX0xPTkdfQ09ERX0KIAogLyogVGhlIHNpemUgb2YgYF9faW50NjQnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCi1AU0laRU9GX19fSU5UNjRfQ09ERUAKKyR7U0laRU9GX19fSU5UNjRfQ09ERX0KIAogLyogVGhlIHNpemUgb2YgYG9mZl90JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwotQFNJWkVPRl9PRkZfVF9DT0RFQAorJHtTSVpFT0ZfT0ZGX1RfQ09ERX0KIAogLyogVGhlIHNpemUgb2YgYGN1cmxfb2ZmX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCi1AU0laRU9GX0NVUkxfT0ZGX1RfQ09ERUAKKyR7U0laRU9GX0NVUkxfT0ZGX1RfQ09ERX0KIAogLyogVGhlIHNpemUgb2YgYHNpemVfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KLUBTSVpFT0ZfU0laRV9UX0NPREVACiske1NJWkVPRl9TSVpFX1RfQ09ERX0KIAogLyogVGhlIHNpemUgb2YgYHNzaXplX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCi1AU0laRU9GX1NTSVpFX1RfQ09ERUAKKyR7U0laRU9GX1NTSVpFX1RfQ09ERX0KIAogLyogVGhlIHNpemUgb2YgYHRpbWVfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KLUBTSVpFT0ZfVElNRV9UX0NPREVACiske1NJWkVPRl9USU1FX1RfQ09ERX0KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCiAjY21ha2VkZWZpbmUgU1REQ19IRUFERVJTIDEKQEAgLTkzMywxNSArOTM2LDE1IEBACiAvKiBpZiBHbnVUTFMgaXMgZW5hYmxlZCAqLwogI2NtYWtlZGVmaW5lIFVTRV9HTlVUTFMgMQogCi0vKiBpZiBQb2xhclNTTCBpcyBlbmFibGVkICovCi0jY21ha2VkZWZpbmUgVVNFX1BPTEFSU1NMIDEKLQogLyogaWYgU2VjdXJlIFRyYW5zcG9ydCBpcyBlbmFibGVkICovCiAjY21ha2VkZWZpbmUgVVNFX1NFQ1RSQU5TUCAxCiAKIC8qIGlmIG1iZWRUTFMgaXMgZW5hYmxlZCAqLwogI2NtYWtlZGVmaW5lIFVTRV9NQkVEVExTIDEKIAorLyogaWYgQmVhclNTTCBpcyBlbmFibGVkICovCisjY21ha2VkZWZpbmUgVVNFX0JFQVJTU0wgMQorCiAvKiBpZiBsaWJTU0gyIGlzIGluIHVzZSAqLwogI2NtYWtlZGVmaW5lIFVTRV9MSUJTU0gyIDEKIApAQCAtOTUxLDYgKzk1NCw5IEBACiAvKiBpZiBOU1MgaXMgZW5hYmxlZCAqLwogI2NtYWtlZGVmaW5lIFVTRV9OU1MgMQogCisvKiBpZiB5b3UgaGF2ZSB0aGUgUEsxMV9DcmVhdGVNYW5hZ2VkR2VuZXJpY09iamVjdCBmdW5jdGlvbiAqLworI2NtYWtlZGVmaW5lIEhBVkVfUEsxMV9DUkVBVEVNQU5BR0VER0VORVJJQ09CSkVDVCAxCisKIC8qIGlmIHlvdSB3YW50IHRvIHVzZSBPcGVuTERBUCBjb2RlIGluc3RlYWQgb2YgbGVnYWN5IGxkYXAgaW1wbGVtZW50YXRpb24gKi8KICNjbWFrZWRlZmluZSBVU0VfT1BFTkxEQVAgMQogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2Rlcy5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9kZXMuYwppbmRleCBiMTIzYTAwLi4zOWMwZjM1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2Rlcy5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfZGVzLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE1LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxNSAtIDIwMTksIFN0ZXZlIEhvbG1lLCA8c3RldmVfaG9sbWVAaG90bWFpbC5jb20+LgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2Rlcy5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9kZXMuaAppbmRleCAxMjkwNjBmLi5hNDJlZWI1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2Rlcy5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfZGVzLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE1LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxNSAtIDIwMTksIFN0ZXZlIEhvbG1lLCA8c3RldmVfaG9sbWVAaG90bWFpbC5jb20+LgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2VuZGlhbi5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9lbmRpYW4uYwppbmRleCBiNzU2M2IzLi5hNzc0ZDEzIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2VuZGlhbi5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfZW5kaWFuLmMKQEAgLTgxLDYgKzgxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBzaG9ydClidWZbMV0pKTsKIH0KIAorI2lmIChDVVJMX1NJWkVPRl9DVVJMX09GRl9UID4gNCkKIC8qCiAgKiB3cml0ZTMyX2xlKCkKICAqCkBAIC0xMDAsNyArMTAxLDYgQEAKICAgYnVmZmVyWzNdID0gKGNoYXIpKCh2YWx1ZSAmIDB4RkYwMDAwMDApID4+IDI0KTsKIH0KIAotI2lmIChDVVJMX1NJWkVPRl9DVVJMX09GRl9UID4gNCkKIC8qCiAgKiBDdXJsX3dyaXRlNjRfbGUoKQogICoKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfZW5kaWFuLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2VuZGlhbi5oCmluZGV4IDRmMzQ1YTYuLjk4MzBlNTggMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfZW5kaWFuLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9lbmRpYW4uaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE3LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMzEsOSArMzEsNiBAQAogLyogQ29udmVydHMgYSAxNi1iaXQgaW50ZWdlciBmcm9tIGJpZyBlbmRpYW4gKi8KIHVuc2lnbmVkIHNob3J0IEN1cmxfcmVhZDE2X2JlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1Zik7CiAKLS8qIENvbnZlcnRzIGEgMzItYml0IGludGVnZXIgdG8gbGl0dGxlIGVuZGlhbiAqLwotdm9pZCBDdXJsX3dyaXRlMzJfbGUoY29uc3QgaW50IHZhbHVlLCB1bnNpZ25lZCBjaGFyICpidWZmZXIpOwotCiAjaWYgKENVUkxfU0laRU9GX0NVUkxfT0ZGX1QgPiA0KQogLyogQ29udmVydHMgYSA2NC1iaXQgaW50ZWdlciB0byBsaXR0bGUgZW5kaWFuICovCiAjaWYgZGVmaW5lZChIQVZFX0xPTkdMT05HKQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9mbm1hdGNoLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2ZubWF0Y2guaAppbmRleCA2OWZmZTM5Li4zNGZjY2FlIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2ZubWF0Y2guaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2ZubWF0Y2guaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDA5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9nZXRob3N0bmFtZS5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9nZXRob3N0bmFtZS5oCmluZGV4IDA3NTE3YzUuLjhhZTE1ZTYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfZ2V0aG9zdG5hbWUuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2dldGhvc3RuYW1lLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfaG1hYy5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9obWFjLmgKaW5kZXggNzU2ZGM5ZS4uM2ZmNzk5YiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9obWFjLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9obWFjLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTI0LDYgKzI0LDggQEAKIAogI2lmbmRlZiBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgKIAorI2RlZmluZSBITUFDX01ENV9MRU5HVEggMTYKKwogdHlwZWRlZiB2b2lkICAgICgqIEhNQUNfaGluaXRfZnVuYykodm9pZCAqY29udGV4dCk7CiB0eXBlZGVmIHZvaWQgICAgKCogSE1BQ19odXBkYXRlX2Z1bmMpKHZvaWQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsCkBAIC02Miw2ICs2NCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbik7CiBpbnQgQ3VybF9ITUFDX2ZpbmFsKEhNQUNfY29udGV4dCAqY29udGV4dCwgdW5zaWduZWQgY2hhciAqcmVzdWx0KTsKIAorQ1VSTGNvZGUgQ3VybF9obWFjaXQoY29uc3QgSE1BQ19wYXJhbXMgKmhhc2hwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksIGNvbnN0IHNpemVfdCBrZXlsZW4sCisgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBjb25zdCBzaXplX3QgZGF0YWxlbiwKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dHB1dCk7CisKICNlbmRpZgogCiAjZW5kaWYgLyogSEVBREVSX0NVUkxfSE1BQ19IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX2xkYXAuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfbGRhcC5oCmluZGV4IDk0YzAwMjkuLjkxMmUxMzEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfbGRhcC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfbGRhcC5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX21kNC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9tZDQuaAppbmRleCAzOTIyMDNmLi5jN2JiMjA5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX21kNC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfbWQ0LmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTI0LDE0ICsyNCwxMyBAQAogCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCi0jaWYgZGVmaW5lZChVU0VfTlNTKSB8fCBkZWZpbmVkKFVTRV9PUzQwMENSWVBUTykgfHwgXAotICAgIChkZWZpbmVkKFVTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKE9QRU5TU0xfTk9fTUQ0KSkgfHwgXAotICAgIChkZWZpbmVkKFVTRV9NQkVEVExTKSAmJiAhZGVmaW5lZChNQkVEVExTX01ENF9DKSkKKyNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpCiAKLXZvaWQgQ3VybF9tZDRpdCh1bnNpZ25lZCBjaGFyICpvdXRwdXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCBzaXplX3QgbGVuKTsKKyNkZWZpbmUgTUQ0X0RJR0VTVF9MRU5HVEggMTYKIAotI2VuZGlmIC8qIGRlZmluZWQoVVNFX05TUykgfHwgZGVmaW5lZChVU0VfT1M0MDBDUllQVE8pIHx8Ci0gICAgKGRlZmluZWQoVVNFX09QRU5TU0wpICYmIGRlZmluZWQoT1BFTlNTTF9OT19NRDQpKSB8fAotICAgIChkZWZpbmVkKFVTRV9NQkVEVExTKSAmJiAhZGVmaW5lZChNQkVEVExTX01ENF9DKSkgKi8KK3ZvaWQgQ3VybF9tZDRpdCh1bnNpZ25lZCBjaGFyICpvdXRwdXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LAorICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBsZW4pOworCisjZW5kaWYgLyogIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKSAqLwogCiAjZW5kaWYgLyogSEVBREVSX0NVUkxfTUQ0X0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfbWQ1LmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX21kNS5oCmluZGV4IGFhZjI1ZjYuLmRkNDY0NDEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfbWQ1LmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9tZDUuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNDksOCArNDksOCBAQAogZXh0ZXJuIGNvbnN0IE1ENV9wYXJhbXMgQ3VybF9ESUdFU1RfTUQ1WzFdOwogZXh0ZXJuIGNvbnN0IEhNQUNfcGFyYW1zIEN1cmxfSE1BQ19NRDVbMV07CiAKLXZvaWQgQ3VybF9tZDVpdCh1bnNpZ25lZCBjaGFyICpvdXRwdXQsCi0gICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQpOwordm9pZCBDdXJsX21kNWl0KHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsCisgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGxlbik7CiAKIE1ENV9jb250ZXh0ICogQ3VybF9NRDVfaW5pdChjb25zdCBNRDVfcGFyYW1zICptZDVwYXJhbXMpOwogQ1VSTGNvZGUgQ3VybF9NRDVfdXBkYXRlKE1ENV9jb250ZXh0ICpjb250ZXh0LApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9tZW1yY2hyLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX21lbXJjaHIuaAppbmRleCA3NDc1MDljLi45MGE4YTA3IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX21lbXJjaHIuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX21lbXJjaHIuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDA5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9tdWx0aWJ5dGUuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfbXVsdGlieXRlLmMKaW5kZXggZTQ4MzM0Zi4uZTM4NDM0NCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9tdWx0aWJ5dGUuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX211bHRpYnl0ZS5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX211bHRpYnl0ZS5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9tdWx0aWJ5dGUuaAppbmRleCA2MTVmNWMwLi4zYmVjZjQxIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX211bHRpYnl0ZS5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfbXVsdGlieXRlLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTYxLDggKzYxLDEzIEBACiAKICNkZWZpbmUgQ3VybF9jb252ZXJ0X1VURjhfdG9fdGNoYXIocHRyKSBDdXJsX2NvbnZlcnRfVVRGOF90b193Y2hhcigocHRyKSkKICNkZWZpbmUgQ3VybF9jb252ZXJ0X3RjaGFyX3RvX1VURjgocHRyKSBDdXJsX2NvbnZlcnRfd2NoYXJfdG9fVVRGOCgocHRyKSkKLSNkZWZpbmUgQ3VybF91bmljb2RlZnJlZShwdHIpIFwKLSAgZG8ge2lmKChwdHIpKSB7ZnJlZSgocHRyKSk7IChwdHIpID0gTlVMTDt9fSBXSElMRV9GQUxTRQorI2RlZmluZSBDdXJsX3VuaWNvZGVmcmVlKHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZihwdHIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZnJlZShwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAocHRyKSA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9IHdoaWxlKDApCiAKIHR5cGVkZWYgdW5pb24gewogICB1bnNpZ25lZCBzaG9ydCAgICAgICAqdGNoYXJfcHRyOwpAQCAtNzYsNyArODEsNyBAQAogI2RlZmluZSBDdXJsX2NvbnZlcnRfVVRGOF90b190Y2hhcihwdHIpIChwdHIpCiAjZGVmaW5lIEN1cmxfY29udmVydF90Y2hhcl90b19VVEY4KHB0cikgKHB0cikKICNkZWZpbmUgQ3VybF91bmljb2RlZnJlZShwdHIpIFwKLSAgZG8geyhwdHIpID0gTlVMTDt9IFdISUxFX0ZBTFNFCisgIGRvIHsocHRyKSA9IE5VTEw7fSB3aGlsZSgwKQogCiB0eXBlZGVmIHVuaW9uIHsKICAgY2hhciAgICAgICAgICAgICAgICAqdGNoYXJfcHRyOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9udGxtX2NvcmUuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfbnRsbV9jb3JlLmMKaW5kZXggYjZkZjM4Zi4uZjliODIzYiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9udGxtX2NvcmUuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX250bG1fY29yZS5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC01NSwxMSArNTUsNiBAQAogI2lmZGVmIFVTRV9PUEVOU1NMCiAKICMgIGluY2x1ZGUgPG9wZW5zc2wvZGVzLmg+Ci0jICBpZm5kZWYgT1BFTlNTTF9OT19NRDQKLSMgICAgaW5jbHVkZSA8b3BlbnNzbC9tZDQuaD4KLSMgIGVsc2UKLSMgICAgaW5jbHVkZSAiY3VybF9tZDQuaCIKLSMgIGVuZGlmCiAjICBpbmNsdWRlIDxvcGVuc3NsL21kNS5oPgogIyAgaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KICMgIGluY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgpAQCAtNzksMjkgKzc0LDIzIEBACiAjZWxpZiBkZWZpbmVkKFVTRV9HTlVUTFNfTkVUVExFKQogCiAjICBpbmNsdWRlIDxuZXR0bGUvZGVzLmg+Ci0jICBpbmNsdWRlIDxuZXR0bGUvbWQ0Lmg+CiAKICNlbGlmIGRlZmluZWQoVVNFX0dOVVRMUykKIAogIyAgaW5jbHVkZSA8Z2NyeXB0Lmg+CiAjICBkZWZpbmUgTUQ1X0RJR0VTVF9MRU5HVEggMTYKLSMgIGRlZmluZSBNRDRfRElHRVNUX0xFTkdUSCAxNgogCiAjZWxpZiBkZWZpbmVkKFVTRV9OU1MpCiAKICMgIGluY2x1ZGUgPG5zcy5oPgogIyAgaW5jbHVkZSA8cGsxMXB1Yi5oPgogIyAgaW5jbHVkZSA8aGFzaHQuaD4KLSMgIGluY2x1ZGUgImN1cmxfbWQ0LmgiCiAjICBkZWZpbmUgTUQ1X0RJR0VTVF9MRU5HVEggTUQ1X0xFTkdUSAogCiAjZWxpZiBkZWZpbmVkKFVTRV9NQkVEVExTKQogCiAjICBpbmNsdWRlIDxtYmVkdGxzL2Rlcy5oPgotIyAgaW5jbHVkZSA8bWJlZHRscy9tZDQuaD4KLSMgIGlmICFkZWZpbmVkKE1CRURUTFNfTUQ0X0MpCi0jICAgIGluY2x1ZGUgImN1cmxfbWQ0LmgiCi0jICBlbmRpZgorIyAgaW5jbHVkZSAiY3VybF9tZDQuaCIKIAogI2VsaWYgZGVmaW5lZChVU0VfU0VDVFJBTlNQKQogCkBAIC0xMTAsNyArOTksNiBAQAogCiAjZWxpZiBkZWZpbmVkKFVTRV9PUzQwMENSWVBUTykKICMgIGluY2x1ZGUgImNpcGhlci5taWgiICAvKiBtaWgvY2lwaGVyICovCi0jICBpbmNsdWRlICJjdXJsX21kNC5oIgogI2VsaWYgZGVmaW5lZChVU0VfV0lOMzJfQ1JZUFRPKQogIyAgaW5jbHVkZSA8d2luY3J5cHQuaD4KICNlbHNlCkBAIC0xMjYsMTIgKzExNCwxMiBAQAogI2luY2x1ZGUgIndhcm5sZXNzLmgiCiAjaW5jbHVkZSAiY3VybF9lbmRpYW4uaCIKICNpbmNsdWRlICJjdXJsX2Rlcy5oIgorI2luY2x1ZGUgImN1cmxfbWQ0LmgiCiAvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKLSNkZWZpbmUgTlRMTV9ITUFDX01ENV9MRU4gICAgICgxNikKICNkZWZpbmUgTlRMTXYyX0JMT0JfU0lHTkFUVVJFICJceDAxXHgwMVx4MDBceDAwIgogI2RlZmluZSBOVExNdjJfQkxPQl9MRU4gICAgICAgKDQ0IC0xNiArIG50bG0tPnRhcmdldF9pbmZvX2xlbiArIDQpCiAKQEAgLTIxOCw3ICsyMDYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5XzU2KQogewogICBjb25zdCBDS19NRUNIQU5JU01fVFlQRSBtZWNoID0gQ0tNX0RFU19FQ0I7IC8qIERFUyBjaXBoZXIgaW4gRUNCIG1vZGUgKi8KLSAgUEsxMVNsb3RJbmZvICpzbG90ID0gTlVMTDsKICAgY2hhciBrZXlbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBleHBhbmRlZCA2NCBiaXQga2V5ICovCiAgIFNFQ0l0ZW0ga2V5X2l0ZW07CiAgIFBLMTFTeW1LZXkgKnN5bWtleSA9IE5VTEw7CkBAIC0yMjgsNyArMjE1LDcgQEAKICAgYm9vbCBydiA9IEZBTFNFOwogCiAgIC8qIHVzZSBpbnRlcm5hbCBzbG90IGZvciBERVMgZW5jcnlwdGlvbiAocmVxdWlyZXMgTlNTIHRvIGJlIGluaXRpYWxpemVkKSAqLwotICBzbG90ID0gUEsxMV9HZXRJbnRlcm5hbEtleVNsb3QoKTsKKyAgUEsxMVNsb3RJbmZvICpzbG90ID0gUEsxMV9HZXRJbnRlcm5hbEtleVNsb3QoKTsKICAgaWYoIXNsb3QpCiAgICAgcmV0dXJuIEZBTFNFOwogCkBAIC01NTMsNyArNTQwLDcgQEAKICAgQ1VSTGNvZGUgcmVzdWx0OwogICBpZihsZW4gPiBTSVpFX1RfTUFYLzIpIC8qIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cgKi8KICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgcHcgPSBsZW4gPyBtYWxsb2MobGVuICogMikgOiBzdHJkdXAoIiIpOworICBwdyA9IGxlbiA/IG1hbGxvYyhsZW4gKiAyKSA6ICh1bnNpZ25lZCBjaGFyICopc3RyZHVwKCIiKTsKICAgaWYoIXB3KQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCkBAIC01NjcsNTcgKzU1NCwxMCBAQAogICBpZihyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIAotICB7Ci0gICAgLyogQ3JlYXRlIE5UIGhhc2hlZCBwYXNzd29yZC4gKi8KLSNpZmRlZiBVU0VfT1BFTlNTTAotI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fTUQ0KQotICAgIE1ENF9DVFggTUQ0cHc7Ci0gICAgTUQ0X0luaXQoJk1ENHB3KTsKLSAgICBNRDRfVXBkYXRlKCZNRDRwdywgcHcsIDIgKiBsZW4pOwotICAgIE1ENF9GaW5hbChudGJ1ZmZlciwgJk1ENHB3KTsKLSNlbHNlCi0gICAgQ3VybF9tZDRpdChudGJ1ZmZlciwgcHcsIDIgKiBsZW4pOwotI2VuZGlmCi0jZWxpZiBkZWZpbmVkKFVTRV9HTlVUTFNfTkVUVExFKQotICAgIHN0cnVjdCBtZDRfY3R4IE1ENHB3OwotICAgIG1kNF9pbml0KCZNRDRwdyk7Ci0gICAgbWQ0X3VwZGF0ZSgmTUQ0cHcsICh1bnNpZ25lZCBpbnQpKDIgKiBsZW4pLCBwdyk7Ci0gICAgbWQ0X2RpZ2VzdCgmTUQ0cHcsIE1ENF9ESUdFU1RfU0laRSwgbnRidWZmZXIpOwotI2VsaWYgZGVmaW5lZChVU0VfR05VVExTKQotICAgIGdjcnlfbWRfaGRfdCBNRDRwdzsKLSAgICBnY3J5X21kX29wZW4oJk1ENHB3LCBHQ1JZX01EX01ENCwgMCk7Ci0gICAgZ2NyeV9tZF93cml0ZShNRDRwdywgcHcsIDIgKiBsZW4pOwotICAgIG1lbWNweShudGJ1ZmZlciwgZ2NyeV9tZF9yZWFkKE1ENHB3LCAwKSwgTUQ0X0RJR0VTVF9MRU5HVEgpOwotICAgIGdjcnlfbWRfY2xvc2UoTUQ0cHcpOwotI2VsaWYgZGVmaW5lZChVU0VfTlNTKQotICAgIEN1cmxfbWQ0aXQobnRidWZmZXIsIHB3LCAyICogbGVuKTsKLSNlbGlmIGRlZmluZWQoVVNFX01CRURUTFMpCi0jaWYgZGVmaW5lZChNQkVEVExTX01ENF9DKQotICAgIG1iZWR0bHNfbWQ0KHB3LCAyICogbGVuLCBudGJ1ZmZlcik7Ci0jZWxzZQotICAgIEN1cmxfbWQ0aXQobnRidWZmZXIsIHB3LCAyICogbGVuKTsKLSNlbmRpZgotI2VsaWYgZGVmaW5lZChVU0VfU0VDVFJBTlNQKQotICAgICh2b2lkKUNDX01ENChwdywgKENDX0xPTkcpKDIgKiBsZW4pLCBudGJ1ZmZlcik7Ci0jZWxpZiBkZWZpbmVkKFVTRV9PUzQwMENSWVBUTykKLSAgICBDdXJsX21kNGl0KG50YnVmZmVyLCBwdywgMiAqIGxlbik7Ci0jZWxpZiBkZWZpbmVkKFVTRV9XSU4zMl9DUllQVE8pCi0gICAgSENSWVBUUFJPViBocHJvdjsKLSAgICBpZihDcnlwdEFjcXVpcmVDb250ZXh0KCZocHJvdiwgTlVMTCwgTlVMTCwgUFJPVl9SU0FfRlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENSWVBUX1ZFUklGWUNPTlRFWFQpKSB7Ci0gICAgICBIQ1JZUFRIQVNIIGhoYXNoOwotICAgICAgaWYoQ3J5cHRDcmVhdGVIYXNoKGhwcm92LCBDQUxHX01ENCwgMCwgMCwgJmhoYXNoKSkgewotICAgICAgICBEV09SRCBsZW5ndGggPSAxNjsKLSAgICAgICAgQ3J5cHRIYXNoRGF0YShoaGFzaCwgcHcsICh1bnNpZ25lZCBpbnQpbGVuICogMiwgMCk7Ci0gICAgICAgIENyeXB0R2V0SGFzaFBhcmFtKGhoYXNoLCBIUF9IQVNIVkFMLCBudGJ1ZmZlciwgJmxlbmd0aCwgMCk7Ci0gICAgICAgIENyeXB0RGVzdHJveUhhc2goaGhhc2gpOwotICAgICAgfQotICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChocHJvdiwgMCk7Ci0gICAgfQotI2VuZGlmCisgIC8qIENyZWF0ZSBOVCBoYXNoZWQgcGFzc3dvcmQuICovCisgIEN1cmxfbWQ0aXQobnRidWZmZXIsIHB3LCAyICogbGVuKTsKIAotICAgIG1lbXNldChudGJ1ZmZlciArIDE2LCAwLCAyMSAtIDE2KTsKLSAgfQorICBtZW1zZXQobnRidWZmZXIgKyAxNiwgMCwgMjEgLSAxNik7CiAKICAgZnJlZShwdyk7CiAKQEAgLTYyNiwyNSArNTY2LDYgQEAKIAogI2lmIGRlZmluZWQoVVNFX05UTE1fVjIpICYmICFkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCiAKLS8qIFRoaXMgcmV0dXJucyB0aGUgSE1BQyBNRDUgZGlnZXN0ICovCi1zdGF0aWMgQ1VSTGNvZGUgaG1hY19tZDUoY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LCB1bnNpZ25lZCBpbnQga2V5bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBkYXRhbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dHB1dCkKLXsKLSAgSE1BQ19jb250ZXh0ICpjdHh0ID0gQ3VybF9ITUFDX2luaXQoQ3VybF9ITUFDX01ENSwga2V5LCBrZXlsZW4pOwotCi0gIGlmKCFjdHh0KQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIC8qIFVwZGF0ZSB0aGUgZGlnZXN0IHdpdGggdGhlIGdpdmVuIGNoYWxsZW5nZSAqLwotICBDdXJsX0hNQUNfdXBkYXRlKGN0eHQsIGRhdGEsIGRhdGFsZW4pOwotCi0gIC8qIEZpbmFsaXNlIHRoZSBkaWdlc3QgKi8KLSAgQ3VybF9ITUFDX2ZpbmFsKGN0eHQsIG91dHB1dCk7Ci0KLSAgcmV0dXJuIENVUkxFX09LOwotfQotCiAvKiBUaGlzIGNyZWF0ZXMgdGhlIE5UTE12MiBoYXNoIGJ5IHVzaW5nIE5UTE0gaGFzaCBhcyB0aGUga2V5IGFuZCBVbmljb2RlCiAgKiAodXBwZXJjYXNlIFVzZXJOYW1lICsgRG9tYWluKSBhcyB0aGUgZGF0YQogICovCkBAIC02NzQsOCArNTk1LDggQEAKICAgYXNjaWlfdXBwZXJjYXNlX3RvX3VuaWNvZGVfbGUoaWRlbnRpdHksIHVzZXIsIHVzZXJsZW4pOwogICBhc2NpaV90b191bmljb2RlX2xlKGlkZW50aXR5ICsgKHVzZXJsZW4gPDwgMSksIGRvbWFpbiwgZG9tbGVuKTsKIAotICByZXN1bHQgPSBobWFjX21kNShudGxtaGFzaCwgMTYsIGlkZW50aXR5LCBjdXJseF91enRvdWkoaWRlbnRpdHlfbGVuKSwKLSAgICAgICAgICAgICAgICAgICAgbnRsbXYyaGFzaCk7CisgIHJlc3VsdCA9IEN1cmxfaG1hY2l0KEN1cmxfSE1BQ19NRDUsIG50bG1oYXNoLCAxNiwgaWRlbnRpdHksIGlkZW50aXR5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgbnRsbXYyaGFzaCk7CiAgIGZyZWUoaWRlbnRpdHkpOwogCiAgIHJldHVybiByZXN1bHQ7CkBAIC03MjEsNyArNjQyLDcgQEAKIAogICB1bnNpZ25lZCBpbnQgbGVuID0gMDsKICAgdW5zaWduZWQgY2hhciAqcHRyID0gTlVMTDsKLSAgdW5zaWduZWQgY2hhciBobWFjX291dHB1dFtOVExNX0hNQUNfTUQ1X0xFTl07CisgIHVuc2lnbmVkIGNoYXIgaG1hY19vdXRwdXRbSE1BQ19NRDVfTEVOR1RIXTsKICAgY3VybF9vZmZfdCB0dzsKIAogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKQEAgLTc0MCw3ICs2NjEsNyBAQAogICAgIHR3ID0gKChjdXJsX29mZl90KXRpbWUoTlVMTCkgKyBDVVJMX09GRl9UX0MoMTE2NDQ0NzM2MDApKSAqIDEwMDAwMDAwOwogCiAgIC8qIENhbGN1bGF0ZSB0aGUgcmVzcG9uc2UgbGVuICovCi0gIGxlbiA9IE5UTE1fSE1BQ19NRDVfTEVOICsgTlRMTXYyX0JMT0JfTEVOOworICBsZW4gPSBITUFDX01ENV9MRU5HVEggKyBOVExNdjJfQkxPQl9MRU47CiAKICAgLyogQWxsb2NhdGUgdGhlIHJlc3BvbnNlICovCiAgIHB0ciA9IGNhbGxvYygxLCBsZW4pOwpAQCAtNzQ4LDcgKzY2OSw3IEBACiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKICAgLyogQ3JlYXRlIHRoZSBCTE9CIHN0cnVjdHVyZSAqLwotICBtc25wcmludGYoKGNoYXIgKilwdHIgKyBOVExNX0hNQUNfTUQ1X0xFTiwgTlRMTXYyX0JMT0JfTEVOLAorICBtc25wcmludGYoKGNoYXIgKilwdHIgKyBITUFDX01ENV9MRU5HVEgsIE5UTE12Ml9CTE9CX0xFTiwKICAgICAgICAgICAgICIlYyVjJWMlYyIgICAvKiBOVExNdjJfQkxPQl9TSUdOQVRVUkUgKi8KICAgICAgICAgICAgICIlYyVjJWMlYyIsICAvKiBSZXNlcnZlZCA9IDAgKi8KICAgICAgICAgICAgIE5UTE12Ml9CTE9CX1NJR05BVFVSRVswXSwgTlRMTXYyX0JMT0JfU0lHTkFUVVJFWzFdLApAQCAtNzYxLDcgKzY4Miw3IEBACiAKICAgLyogQ29uY2F0ZW5hdGUgdGhlIFR5cGUgMiBjaGFsbGVuZ2Ugd2l0aCB0aGUgQkxPQiBhbmQgZG8gSE1BQyBNRDUgKi8KICAgbWVtY3B5KHB0ciArIDgsICZudGxtLT5ub25jZVswXSwgOCk7Ci0gIHJlc3VsdCA9IGhtYWNfbWQ1KG50bG12Mmhhc2gsIE5UTE1fSE1BQ19NRDVfTEVOLCBwdHIgKyA4LAorICByZXN1bHQgPSBDdXJsX2htYWNpdChDdXJsX0hNQUNfTUQ1LCBudGxtdjJoYXNoLCBITUFDX01ENV9MRU5HVEgsIHB0ciArIDgsCiAgICAgICAgICAgICAgICAgICAgIE5UTE12Ml9CTE9CX0xFTiArIDgsIGhtYWNfb3V0cHV0KTsKICAgaWYocmVzdWx0KSB7CiAgICAgZnJlZShwdHIpOwpAQCAtNzY5LDcgKzY5MCw3IEBACiAgIH0KIAogICAvKiBDb25jYXRlbmF0ZSB0aGUgSE1BQyBNRDUgb3V0cHV0ICB3aXRoIHRoZSBCTE9CICovCi0gIG1lbWNweShwdHIsIGhtYWNfb3V0cHV0LCBOVExNX0hNQUNfTUQ1X0xFTik7CisgIG1lbWNweShwdHIsIGhtYWNfb3V0cHV0LCBITUFDX01ENV9MRU5HVEgpOwogCiAgIC8qIFJldHVybiB0aGUgcmVzcG9uc2UgKi8KICAgKm50cmVzcCA9IHB0cjsKQEAgLTgwNCw3ICs3MjUsOCBAQAogICBtZW1jcHkoJmRhdGFbMF0sIGNoYWxsZW5nZV9zZXJ2ZXIsIDgpOwogICBtZW1jcHkoJmRhdGFbOF0sIGNoYWxsZW5nZV9jbGllbnQsIDgpOwogCi0gIHJlc3VsdCA9IGhtYWNfbWQ1KG50bG12Mmhhc2gsIDE2LCAmZGF0YVswXSwgMTYsIGhtYWNfb3V0cHV0KTsKKyAgcmVzdWx0ID0gQ3VybF9obWFjaXQoQ3VybF9ITUFDX01ENSwgbnRsbXYyaGFzaCwgMTYsICZkYXRhWzBdLCAxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgaG1hY19vdXRwdXQpOwogICBpZihyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9udGxtX2NvcmUuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfbnRsbV9jb3JlLmgKaW5kZXggM2I0YjgwNS4uZTE2NDNkNiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9udGxtX2NvcmUuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX250bG1fY29yZS5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC00Niw5ICs0Niw5IEBACiAjZGVmaW5lIFVTRV9OVFJFU1BPTlNFUwogCiAvKiBEZWZpbmUgVVNFX05UTE0yU0VTU0lPTiBpbiBvcmRlciB0byBtYWtlIHRoZSB0eXBlLTMgbWVzc2FnZSBpbmNsdWRlIHRoZQotICAgTlRMTTJTZXNzaW9uIHJlc3BvbnNlIG1lc3NhZ2UsIHJlcXVpcmVzIFVTRV9OVFJFU1BPTlNFUyBkZWZpbmVkIHRvIDEgYW5kIGEKLSAgIENyeXB0byBlbmdpbmUgdGhhdCB3ZSBoYXZlIGN1cmxfc3NsX21kNXN1bSgpIGZvci4gKi8KLSNpZiBkZWZpbmVkKFVTRV9OVFJFU1BPTlNFUykgJiYgIWRlZmluZWQoVVNFX1dJTjMyX0NSWVBUTykKKyAgIE5UTE0yU2Vzc2lvbiByZXNwb25zZSBtZXNzYWdlLCByZXF1aXJlcyBVU0VfTlRSRVNQT05TRVMgZGVmaW5lZCB0byAxIGFuZAorICAgTUQ1IHN1cHBvcnQgKi8KKyNpZiBkZWZpbmVkKFVTRV9OVFJFU1BPTlNFUykgJiYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKQogI2RlZmluZSBVU0VfTlRMTTJTRVNTSU9OCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9udGxtX3diLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX250bG1fd2IuYwppbmRleCA4MDI2NmUyLi5mODIwYjg0IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX250bG1fd2IuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX250bG1fd2IuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNzYsMjIgKzc2LDIyIEBACiAjICBkZWZpbmUgc2Nsb3NlX25vbG9nKHgpICBjbG9zZSgoeCkpCiAjZW5kaWYKIAotdm9pZCBDdXJsX2h0dHBfYXV0aF9jbGVhbnVwX250bG1fd2Ioc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQorc3RhdGljIHZvaWQgbnRsbV93Yl9jbGVhbnVwKHN0cnVjdCBudGxtZGF0YSAqbnRsbSkKIHsKLSAgaWYoY29ubi0+bnRsbV9hdXRoX2hscHJfc29ja2V0ICE9IENVUkxfU09DS0VUX0JBRCkgewotICAgIHNjbG9zZShjb25uLT5udGxtX2F1dGhfaGxwcl9zb2NrZXQpOwotICAgIGNvbm4tPm50bG1fYXV0aF9obHByX3NvY2tldCA9IENVUkxfU09DS0VUX0JBRDsKKyAgaWYobnRsbS0+bnRsbV9hdXRoX2hscHJfc29ja2V0ICE9IENVUkxfU09DS0VUX0JBRCkgeworICAgIHNjbG9zZShudGxtLT5udGxtX2F1dGhfaGxwcl9zb2NrZXQpOworICAgIG50bG0tPm50bG1fYXV0aF9obHByX3NvY2tldCA9IENVUkxfU09DS0VUX0JBRDsKICAgfQogCi0gIGlmKGNvbm4tPm50bG1fYXV0aF9obHByX3BpZCkgeworICBpZihudGxtLT5udGxtX2F1dGhfaGxwcl9waWQpIHsKICAgICBpbnQgaTsKICAgICBmb3IoaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgIHBpZF90IHJldCA9IHdhaXRwaWQoY29ubi0+bnRsbV9hdXRoX2hscHJfcGlkLCBOVUxMLCBXTk9IQU5HKTsKLSAgICAgIGlmKHJldCA9PSBjb25uLT5udGxtX2F1dGhfaGxwcl9waWQgfHwgZXJybm8gPT0gRUNISUxEKQorICAgICAgcGlkX3QgcmV0ID0gd2FpdHBpZChudGxtLT5udGxtX2F1dGhfaGxwcl9waWQsIE5VTEwsIFdOT0hBTkcpOworICAgICAgaWYocmV0ID09IG50bG0tPm50bG1fYXV0aF9obHByX3BpZCB8fCBlcnJubyA9PSBFQ0hJTEQpCiAgICAgICAgIGJyZWFrOwogICAgICAgc3dpdGNoKGkpIHsKICAgICAgIGNhc2UgMDoKLSAgICAgICAga2lsbChjb25uLT5udGxtX2F1dGhfaGxwcl9waWQsIFNJR1RFUk0pOworICAgICAgICBraWxsKG50bG0tPm50bG1fYXV0aF9obHByX3BpZCwgU0lHVEVSTSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSAxOgogICAgICAgICAvKiBHaXZlIHRoZSBwcm9jZXNzIGFub3RoZXIgbW9tZW50IHRvIHNodXQgZG93biBjbGVhbmx5IGJlZm9yZQpAQCAtOTksMjIgKzk5LDIxIEBACiAgICAgICAgIEN1cmxfd2FpdF9tcygxKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIDI6Ci0gICAgICAgIGtpbGwoY29ubi0+bnRsbV9hdXRoX2hscHJfcGlkLCBTSUdLSUxMKTsKKyAgICAgICAga2lsbChudGxtLT5udGxtX2F1dGhfaGxwcl9waWQsIFNJR0tJTEwpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgMzoKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgfQotICAgIGNvbm4tPm50bG1fYXV0aF9obHByX3BpZCA9IDA7CisgICAgbnRsbS0+bnRsbV9hdXRoX2hscHJfcGlkID0gMDsKICAgfQogCi0gIGZyZWUoY29ubi0+Y2hhbGxlbmdlX2hlYWRlcik7Ci0gIGNvbm4tPmNoYWxsZW5nZV9oZWFkZXIgPSBOVUxMOwotICBmcmVlKGNvbm4tPnJlc3BvbnNlX2hlYWRlcik7Ci0gIGNvbm4tPnJlc3BvbnNlX2hlYWRlciA9IE5VTEw7CisgIEN1cmxfc2FmZWZyZWUobnRsbS0+Y2hhbGxlbmdlKTsKKyAgQ3VybF9zYWZlZnJlZShudGxtLT5yZXNwb25zZSk7CiB9CiAKLXN0YXRpYyBDVVJMY29kZSBudGxtX3diX2luaXQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjb25zdCBjaGFyICp1c2VycCkKK3N0YXRpYyBDVVJMY29kZSBudGxtX3diX2luaXQoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwgc3RydWN0IG50bG1kYXRhICpudGxtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCkKIHsKICAgY3VybF9zb2NrZXRfdCBzb2NrZmRzWzJdOwogICBwaWRfdCBjaGlsZF9waWQ7CkBAIC0xMjgsOSArMTI3LDEzIEBACiAjZW5kaWYKICAgY2hhciBidWZmZXJbU1RSRVJST1JfTEVOXTsKIAorI2lmIGRlZmluZWQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUykKKyAgKHZvaWQpIGRhdGE7CisjZW5kaWYKKwogICAvKiBSZXR1cm4gaWYgY29tbXVuaWNhdGlvbiB3aXRoIG50bG1fYXV0aCBhbHJlYWR5IHNldCB1cCAqLwotICBpZihjb25uLT5udGxtX2F1dGhfaGxwcl9zb2NrZXQgIT0gQ1VSTF9TT0NLRVRfQkFEIHx8Ci0gICAgIGNvbm4tPm50bG1fYXV0aF9obHByX3BpZCkKKyAgaWYobnRsbS0+bnRsbV9hdXRoX2hscHJfc29ja2V0ICE9IENVUkxfU09DS0VUX0JBRCB8fAorICAgICBudGxtLT5udGxtX2F1dGhfaGxwcl9waWQpCiAgICAgcmV0dXJuIENVUkxFX09LOwogCiAgIHVzZXJuYW1lID0gdXNlcnA7CkBAIC0xODEsMTMgKzE4NCwxMyBAQAogICAgIG50bG1fYXV0aCA9IE5UTE1fV0JfRklMRTsKIAogICBpZihhY2Nlc3MobnRsbV9hdXRoLCBYX09LKSAhPSAwKSB7Ci0gICAgZmFpbGYoY29ubi0+ZGF0YSwgIkNvdWxkIG5vdCBhY2Nlc3MgbnRsbV9hdXRoOiAlcyBlcnJubyAlZDogJXMiLAorICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3QgYWNjZXNzIG50bG1fYXV0aDogJXMgZXJybm8gJWQ6ICVzIiwKICAgICAgICAgICBudGxtX2F1dGgsIGVycm5vLCBDdXJsX3N0cmVycm9yKGVycm5vLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CiAgICAgZ290byBkb25lOwogICB9CiAKLSAgaWYoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCwgc29ja2ZkcykpIHsKLSAgICBmYWlsZihjb25uLT5kYXRhLCAiQ291bGQgbm90IG9wZW4gc29ja2V0IHBhaXIuIGVycm5vICVkOiAlcyIsCisgIGlmKEN1cmxfc29ja2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCwgc29ja2ZkcykpIHsKKyAgICBmYWlsZihkYXRhLCAiQ291bGQgbm90IG9wZW4gc29ja2V0IHBhaXIuIGVycm5vICVkOiAlcyIsCiAgICAgICAgICAgZXJybm8sIEN1cmxfc3RyZXJyb3IoZXJybm8sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKTsKICAgICBnb3RvIGRvbmU7CiAgIH0KQEAgLTE5Niw3ICsxOTksNyBAQAogICBpZihjaGlsZF9waWQgPT0gLTEpIHsKICAgICBzY2xvc2Uoc29ja2Zkc1swXSk7CiAgICAgc2Nsb3NlKHNvY2tmZHNbMV0pOwotICAgIGZhaWxmKGNvbm4tPmRhdGEsICJDb3VsZCBub3QgZm9yay4gZXJybm8gJWQ6ICVzIiwKKyAgICBmYWlsZihkYXRhLCAiQ291bGQgbm90IGZvcmsuIGVycm5vICVkOiAlcyIsCiAgICAgICAgICAgZXJybm8sIEN1cmxfc3RyZXJyb3IoZXJybm8sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKTsKICAgICBnb3RvIGRvbmU7CiAgIH0KQEAgLTIwOCwxMyArMjExLDEzIEBACiAgICAgLyogRG9uJ3QgdXNlIHNjbG9zZSBpbiB0aGUgY2hpbGQgc2luY2UgaXQgZm9vbHMgdGhlIHNvY2tldCBsZWFrIGRldGVjdG9yICovCiAgICAgc2Nsb3NlX25vbG9nKHNvY2tmZHNbMF0pOwogICAgIGlmKGR1cDIoc29ja2Zkc1sxXSwgU1RESU5fRklMRU5PKSA9PSAtMSkgewotICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgIkNvdWxkIG5vdCByZWRpcmVjdCBjaGlsZCBzdGRpbi4gZXJybm8gJWQ6ICVzIiwKKyAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3QgcmVkaXJlY3QgY2hpbGQgc3RkaW4uIGVycm5vICVkOiAlcyIsCiAgICAgICAgICAgICBlcnJubywgQ3VybF9zdHJlcnJvcihlcnJubywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOwogICAgICAgZXhpdCgxKTsKICAgICB9CiAKICAgICBpZihkdXAyKHNvY2tmZHNbMV0sIFNURE9VVF9GSUxFTk8pID09IC0xKSB7Ci0gICAgICBmYWlsZihjb25uLT5kYXRhLCAiQ291bGQgbm90IHJlZGlyZWN0IGNoaWxkIHN0ZG91dC4gZXJybm8gJWQ6ICVzIiwKKyAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3QgcmVkaXJlY3QgY2hpbGQgc3Rkb3V0LiBlcnJubyAlZDogJXMiLAogICAgICAgICAgICAgZXJybm8sIEN1cmxfc3RyZXJyb3IoZXJybm8sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKTsKICAgICAgIGV4aXQoMSk7CiAgICAgfQpAQCAtMjM0LDE0ICsyMzcsMTQgQEAKICAgICAgICAgICAgIE5VTEwpOwogCiAgICAgc2Nsb3NlX25vbG9nKHNvY2tmZHNbMV0pOwotICAgIGZhaWxmKGNvbm4tPmRhdGEsICJDb3VsZCBub3QgZXhlY2woKS4gZXJybm8gJWQ6ICVzIiwKKyAgICBmYWlsZihkYXRhLCAiQ291bGQgbm90IGV4ZWNsKCkuIGVycm5vICVkOiAlcyIsCiAgICAgICAgICAgZXJybm8sIEN1cmxfc3RyZXJyb3IoZXJybm8sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKTsKICAgICBleGl0KDEpOwogICB9CiAKICAgc2Nsb3NlKHNvY2tmZHNbMV0pOwotICBjb25uLT5udGxtX2F1dGhfaGxwcl9zb2NrZXQgPSBzb2NrZmRzWzBdOwotICBjb25uLT5udGxtX2F1dGhfaGxwcl9waWQgPSBjaGlsZF9waWQ7CisgIG50bG0tPm50bG1fYXV0aF9obHByX3NvY2tldCA9IHNvY2tmZHNbMF07CisgIG50bG0tPm50bG1fYXV0aF9obHByX3BpZCA9IGNoaWxkX3BpZDsKICAgZnJlZShkb21haW4pOwogICBmcmVlKG50bG1fYXV0aF9hbGxvYyk7CiAgIHJldHVybiBDVVJMRV9PSzsKQEAgLTI1NSwxNyArMjU4LDIxIEBACiAvKiBpZiBsYXJnZXIgdGhhbiB0aGlzLCBzb21ldGhpbmcgaXMgc2VyaW91c2x5IHdyb25nICovCiAjZGVmaW5lIE1BWF9OVExNX1dCX1JFU1BPTlNFIDEwMDAwMAogCi1zdGF0aWMgQ1VSTGNvZGUgbnRsbV93Yl9yZXNwb25zZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCitzdGF0aWMgQ1VSTGNvZGUgbnRsbV93Yl9yZXNwb25zZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCBzdHJ1Y3QgbnRsbWRhdGEgKm50bG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbnB1dCwgY3VybG50bG0gc3RhdGUpCiB7CiAgIGNoYXIgKmJ1ZiA9IG1hbGxvYyhOVExNX0JVRlNJWkUpOwogICBzaXplX3QgbGVuX2luID0gc3RybGVuKGlucHV0KSwgbGVuX291dCA9IDA7CiAKKyNpZiBkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCisgICh2b2lkKSBkYXRhOworI2VuZGlmCisKICAgaWYoIWJ1ZikKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAogICB3aGlsZShsZW5faW4gPiAwKSB7Ci0gICAgc3NpemVfdCB3cml0dGVuID0gc3dyaXRlKGNvbm4tPm50bG1fYXV0aF9obHByX3NvY2tldCwgaW5wdXQsIGxlbl9pbik7CisgICAgc3NpemVfdCB3cml0dGVuID0gc3dyaXRlKG50bG0tPm50bG1fYXV0aF9obHByX3NvY2tldCwgaW5wdXQsIGxlbl9pbik7CiAgICAgaWYod3JpdHRlbiA9PSAtMSkgewogICAgICAgLyogSW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIHJldHJ5IGl0ICovCiAgICAgICBpZihlcnJubyA9PSBFSU5UUikKQEAgLTI4MSw3ICsyODgsNyBAQAogICAgIHNzaXplX3Qgc2l6ZTsKICAgICBjaGFyICpuZXdidWY7CiAKLSAgICBzaXplID0gc3JlYWQoY29ubi0+bnRsbV9hdXRoX2hscHJfc29ja2V0LCBidWYgKyBsZW5fb3V0LCBOVExNX0JVRlNJWkUpOworICAgIHNpemUgPSBzcmVhZChudGxtLT5udGxtX2F1dGhfaGxwcl9zb2NrZXQsIGJ1ZiArIGxlbl9vdXQsIE5UTE1fQlVGU0laRSk7CiAgICAgaWYoc2l6ZSA9PSAtMSkgewogICAgICAgaWYoZXJybm8gPT0gRUlOVFIpCiAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjk3LDcgKzMwNCw3IEBACiAgICAgfQogCiAgICAgaWYobGVuX291dCA+IE1BWF9OVExNX1dCX1JFU1BPTlNFKSB7Ci0gICAgICBmYWlsZihjb25uLT5kYXRhLCAidG9vIGxhcmdlIG50bG1fd2IgcmVzcG9uc2UhIik7CisgICAgICBmYWlsZihkYXRhLCAidG9vIGxhcmdlIG50bG1fd2IgcmVzcG9uc2UhIik7CiAgICAgICBmcmVlKGJ1Zik7CiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgICB9CkBAIC0zMjUsOSArMzMyLDkgQEAKICAgICAgKGJ1ZlswXSE9J0EnIHx8IGJ1ZlsxXSE9J0YnIHx8IGJ1ZlsyXSE9JyAnKSkKICAgICBnb3RvIGRvbmU7CiAKLSAgY29ubi0+cmVzcG9uc2VfaGVhZGVyID0gYXByaW50ZigiTlRMTSAlLipzIiwgbGVuX291dCAtIDQsIGJ1ZiArIDMpOworICBudGxtLT5yZXNwb25zZSA9IGFwcmludGYoIiUuKnMiLCBsZW5fb3V0IC0gNCwgYnVmICsgMyk7CiAgIGZyZWUoYnVmKTsKLSAgaWYoIWNvbm4tPnJlc3BvbnNlX2hlYWRlcikKKyAgaWYoIW50bG0tPnJlc3BvbnNlKQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICByZXR1cm4gQ1VSTEVfT0s7CiBkb25lOgpAQCAtMzM5LDYgKzM0Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcm94eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpoZWFkZXIpCiB7CisgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSA9IHByb3h5ID8gJmNvbm4tPnByb3h5bnRsbSA6ICZjb25uLT5udGxtOwogICBjdXJsbnRsbSAqc3RhdGUgPSBwcm94eSA/ICZjb25uLT5wcm94eV9udGxtX3N0YXRlIDogJmNvbm4tPmh0dHBfbnRsbV9zdGF0ZTsKIAogICBpZighY2hlY2twcmVmaXgoIk5UTE0iLCBoZWFkZXIpKQpAQCAtMzQ5LDggKzM1Nyw4IEBACiAgICAgaGVhZGVyKys7CiAKICAgaWYoKmhlYWRlcikgewotICAgIGNvbm4tPmNoYWxsZW5nZV9oZWFkZXIgPSBzdHJkdXAoaGVhZGVyKTsKLSAgICBpZighY29ubi0+Y2hhbGxlbmdlX2hlYWRlcikKKyAgICBudGxtLT5jaGFsbGVuZ2UgPSBzdHJkdXAoaGVhZGVyKTsKKyAgICBpZighbnRsbS0+Y2hhbGxlbmdlKQogICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKICAgICAqc3RhdGUgPSBOVExNU1RBVEVfVFlQRTI7IC8qIFdlIGdvdCBhIHR5cGUtMiBtZXNzYWdlICovCkBAIC0zODksMTEgKzM5NywxMSBAQAogICBjaGFyICoqYWxsb2N1c2VycHdkOwogICAvKiBwb2ludCB0byB0aGUgbmFtZSBhbmQgcGFzc3dvcmQgZm9yIHRoaXMgKi8KICAgY29uc3QgY2hhciAqdXNlcnA7CisgIHN0cnVjdCBudGxtZGF0YSAqbnRsbTsKICAgY3VybG50bG0gKnN0YXRlOwogICBzdHJ1Y3QgYXV0aCAqYXV0aHA7CiAKICAgQ1VSTGNvZGUgcmVzID0gQ1VSTEVfT0s7Ci0gIGNoYXIgKmlucHV0OwogCiAgIERFQlVHQVNTRVJUKGNvbm4pOwogICBERUJVR0FTU0VSVChjb25uLT5kYXRhKTsKQEAgLTQwMSwxMiArNDA5LDE0IEBACiAgIGlmKHByb3h5KSB7CiAgICAgYWxsb2N1c2VycHdkID0gJmNvbm4tPmFsbG9jcHRyLnByb3h5dXNlcnB3ZDsKICAgICB1c2VycCA9IGNvbm4tPmh0dHBfcHJveHkudXNlcjsKKyAgICBudGxtID0gJmNvbm4tPnByb3h5bnRsbTsKICAgICBzdGF0ZSA9ICZjb25uLT5wcm94eV9udGxtX3N0YXRlOwogICAgIGF1dGhwID0gJmNvbm4tPmRhdGEtPnN0YXRlLmF1dGhwcm94eTsKICAgfQogICBlbHNlIHsKICAgICBhbGxvY3VzZXJwd2QgPSAmY29ubi0+YWxsb2NwdHIudXNlcnB3ZDsKICAgICB1c2VycCA9IGNvbm4tPnVzZXI7CisgICAgbnRsbSA9ICZjb25uLT5udGxtOwogICAgIHN0YXRlID0gJmNvbm4tPmh0dHBfbnRsbV9zdGF0ZTsKICAgICBhdXRocCA9ICZjb25uLT5kYXRhLT5zdGF0ZS5hdXRoaG9zdDsKICAgfQpAQCAtNDMyLDM4ICs0NDIsMzYgQEAKICAgICAgKiByZXF1ZXN0IGhhbmRsaW5nIHByb2Nlc3MuCiAgICAgICovCiAgICAgLyogQ3JlYXRlIGNvbW11bmljYXRpb24gd2l0aCBudGxtX2F1dGggKi8KLSAgICByZXMgPSBudGxtX3diX2luaXQoY29ubiwgdXNlcnApOworICAgIHJlcyA9IG50bG1fd2JfaW5pdChjb25uLT5kYXRhLCBudGxtLCB1c2VycCk7CiAgICAgaWYocmVzKQogICAgICAgcmV0dXJuIHJlczsKLSAgICByZXMgPSBudGxtX3diX3Jlc3BvbnNlKGNvbm4sICJZUlxuIiwgKnN0YXRlKTsKKyAgICByZXMgPSBudGxtX3diX3Jlc3BvbnNlKGNvbm4tPmRhdGEsIG50bG0sICJZUlxuIiwgKnN0YXRlKTsKICAgICBpZihyZXMpCiAgICAgICByZXR1cm4gcmVzOwogCiAgICAgZnJlZSgqYWxsb2N1c2VycHdkKTsKLSAgICAqYWxsb2N1c2VycHdkID0gYXByaW50ZigiJXNBdXRob3JpemF0aW9uOiAlc1xyXG4iLAorICAgICphbGxvY3VzZXJwd2QgPSBhcHJpbnRmKCIlc0F1dGhvcml6YXRpb246IE5UTE0gJXNcclxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eSA/ICJQcm94eS0iIDogIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cmVzcG9uc2VfaGVhZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBudGxtLT5yZXNwb25zZSk7CiAgICAgREVCVUdfT1VUKGZwcmludGYoc3RkZXJyLCAiKioqKiBIZWFkZXIgJXNcbiAiLCAqYWxsb2N1c2VycHdkKSk7Ci0gICAgZnJlZShjb25uLT5yZXNwb25zZV9oZWFkZXIpOworICAgIEN1cmxfc2FmZWZyZWUobnRsbS0+cmVzcG9uc2UpOwogICAgIGlmKCEqYWxsb2N1c2VycHdkKQogICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgY29ubi0+cmVzcG9uc2VfaGVhZGVyID0gTlVMTDsKICAgICBicmVhazsKIAotICBjYXNlIE5UTE1TVEFURV9UWVBFMjoKLSAgICBpbnB1dCA9IGFwcmludGYoIlRUICVzXG4iLCBjb25uLT5jaGFsbGVuZ2VfaGVhZGVyKTsKKyAgY2FzZSBOVExNU1RBVEVfVFlQRTI6IHsKKyAgICBjaGFyICppbnB1dCA9IGFwcmludGYoIlRUICVzXG4iLCBudGxtLT5jaGFsbGVuZ2UpOwogICAgIGlmKCFpbnB1dCkKICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgIHJlcyA9IG50bG1fd2JfcmVzcG9uc2UoY29ubiwgaW5wdXQsICpzdGF0ZSk7CisgICAgcmVzID0gbnRsbV93Yl9yZXNwb25zZShjb25uLT5kYXRhLCBudGxtLCBpbnB1dCwgKnN0YXRlKTsKICAgICBmcmVlKGlucHV0KTsKLSAgICBpbnB1dCA9IE5VTEw7CiAgICAgaWYocmVzKQogICAgICAgcmV0dXJuIHJlczsKIAogICAgIGZyZWUoKmFsbG9jdXNlcnB3ZCk7Ci0gICAgKmFsbG9jdXNlcnB3ZCA9IGFwcmludGYoIiVzQXV0aG9yaXphdGlvbjogJXNcclxuIiwKKyAgICAqYWxsb2N1c2VycHdkID0gYXByaW50ZigiJXNBdXRob3JpemF0aW9uOiBOVExNICVzXHJcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHkgPyAiUHJveHktIiA6ICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnJlc3BvbnNlX2hlYWRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRsbS0+cmVzcG9uc2UpOwogICAgIERFQlVHX09VVChmcHJpbnRmKHN0ZGVyciwgIioqKiogJXNcbiAiLCAqYWxsb2N1c2VycHdkKSk7CiAgICAgKnN0YXRlID0gTlRMTVNUQVRFX1RZUEUzOyAvKiB3ZSBzZW50IGEgdHlwZS0zICovCiAgICAgYXV0aHAtPmRvbmUgPSBUUlVFOwpAQCAtNDcxLDcgKzQ3OSw3IEBACiAgICAgaWYoISphbGxvY3VzZXJwd2QpCiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgICBicmVhazsKLQorICB9CiAgIGNhc2UgTlRMTVNUQVRFX1RZUEUzOgogICAgIC8qIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBhdXRoZW50aWNhdGVkLAogICAgICAqIGRvbid0IHNlbmQgYSBoZWFkZXIgaW4gZnV0dXJlIHJlcXVlc3RzICovCkBAIC00ODYsNCArNDk0LDEwIEBACiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIAordm9pZCBDdXJsX2h0dHBfYXV0aF9jbGVhbnVwX250bG1fd2Ioc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQoreworICBudGxtX3diX2NsZWFudXAoJmNvbm4tPm50bG0pOworICBudGxtX3diX2NsZWFudXAoJmNvbm4tPnByb3h5bnRsbSk7Cit9CisKICNlbmRpZiAvKiAhQ1VSTF9ESVNBQkxFX0hUVFAgJiYgVVNFX05UTE0gJiYgTlRMTV9XQl9FTkFCTEVEICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3BhdGguYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfcGF0aC5jCmluZGV4IDg1ZGRkY2UuLmY0Mjk2MzQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfcGF0aC5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfcGF0aC5jCkBAIC01NSw3ICs1NSw3IEBACiAgICAgfQogICAgIGlmKCh3b3JraW5nX3BhdGhfbGVuID4gMykgJiYgKCFtZW1jbXAod29ya2luZ19wYXRoLCAiL34vIiwgMykpKQogICAgICAgLyogSXQgaXMgcmVmZXJlbmNlZCB0byB0aGUgaG9tZSBkaXJlY3RvcnksIHNvIHN0cmlwIHRoZSBsZWFkaW5nICcvfi8nICovCi0gICAgICBtZW1jcHkocmVhbF9wYXRoLCB3b3JraW5nX3BhdGggKyAzLCA0ICsgd29ya2luZ19wYXRoX2xlbi0zKTsKKyAgICAgIG1lbWNweShyZWFsX3BhdGgsIHdvcmtpbmdfcGF0aCArIDMsIHdvcmtpbmdfcGF0aF9sZW4gLSAyKTsKICAgICBlbHNlCiAgICAgICBtZW1jcHkocmVhbF9wYXRoLCB3b3JraW5nX3BhdGgsIDEgKyB3b3JraW5nX3BhdGhfbGVuKTsKICAgfQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9ydG1wLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3J0bXAuYwppbmRleCAxNmIxZGUxLi5kZjhmMmIxIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3J0bXAuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3J0bXAuYwpAQCAtMTk5LDEzICsxOTksMTMgQEAKICAgICBSVE1QX0ZyZWUocik7CiAgICAgcmV0dXJuIENVUkxFX1VSTF9NQUxGT1JNQVQ7CiAgIH0KLSAgY29ubi0+cHJvdG8uZ2VuZXJpYyA9IHI7CisgIGNvbm4tPnByb3RvLnJ0bXAgPSByOwogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKIHN0YXRpYyBDVVJMY29kZSBydG1wX2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKQogewotICBSVE1QICpyID0gY29ubi0+cHJvdG8uZ2VuZXJpYzsKKyAgUlRNUCAqciA9IGNvbm4tPnByb3RvLnJ0bXA7CiAgIFNFVF9SQ1ZUSU1FTyh0diwgMTApOwogCiAgIHItPm1fc2Iuc2Jfc29ja2V0ID0gKGludCljb25uLT5zb2NrW0ZJUlNUU09DS0VUXTsKQEAgLTI0MCw3ICsyNDAsNyBAQAogc3RhdGljIENVUkxjb2RlIHJ0bXBfZG8oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKQogewogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgUlRNUCAqciA9IGNvbm4tPnByb3RvLmdlbmVyaWM7CisgIFJUTVAgKnIgPSBjb25uLT5wcm90by5ydG1wOwogCiAgIGlmKCFSVE1QX0Nvbm5lY3RTdHJlYW0ociwgMCkpCiAgICAgcmV0dXJuIENVUkxFX0ZBSUxFRF9JTklUOwpAQCAtMjY4LDEwICsyNjgsMTAgQEAKIHN0YXRpYyBDVVJMY29kZSBydG1wX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlYWRfY29ubmVjdGlvbikKIHsKLSAgUlRNUCAqciA9IGNvbm4tPnByb3RvLmdlbmVyaWM7CisgIFJUTVAgKnIgPSBjb25uLT5wcm90by5ydG1wOwogICAodm9pZClkZWFkX2Nvbm5lY3Rpb247CiAgIGlmKHIpIHsKLSAgICBjb25uLT5wcm90by5nZW5lcmljID0gTlVMTDsKKyAgICBjb25uLT5wcm90by5ydG1wID0gTlVMTDsKICAgICBSVE1QX0Nsb3NlKHIpOwogICAgIFJUTVBfRnJlZShyKTsKICAgfQpAQCAtMjgxLDcgKzI4MSw3IEBACiBzdGF0aWMgc3NpemVfdCBydG1wX3JlY3Yoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LCBjaGFyICpidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwgQ1VSTGNvZGUgKmVycikKIHsKLSAgUlRNUCAqciA9IGNvbm4tPnByb3RvLmdlbmVyaWM7CisgIFJUTVAgKnIgPSBjb25uLT5wcm90by5ydG1wOwogICBzc2l6ZV90IG5yZWFkOwogCiAgICh2b2lkKXNvY2tpbmRleDsgLyogdW51c2VkICovCkBAIC0zMDIsNyArMzAyLDcgQEAKIHN0YXRpYyBzc2l6ZV90IHJ0bXBfc2VuZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBDVVJMY29kZSAqZXJyKQogewotICBSVE1QICpyID0gY29ubi0+cHJvdG8uZ2VuZXJpYzsKKyAgUlRNUCAqciA9IGNvbm4tPnByb3RvLnJ0bXA7CiAgIHNzaXplX3QgbnVtOwogCiAgICh2b2lkKXNvY2tpbmRleDsgLyogdW51c2VkICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3J0bXAuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfcnRtcC5oCmluZGV4IDMzMDZlMjIuLjg2YTAxMzggMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfcnRtcC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfcnRtcC5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgSG93YXJkIENodSwgPGh5Y0BoaWdobGFuZHN1bi5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgLSAyMDE5LCBIb3dhcmQgQ2h1LCA8aHljQGhpZ2hsYW5kc3VuLmNvbT4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9zYXNsLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3Nhc2wuYwppbmRleCAwMThlNDIyLi44YzFjODY2IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3Nhc2wuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3Nhc2wuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMjcyLDYgKzI3Miw3IEBACiAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU0VSVklDRV9OQU1FXSA6CiAgICAgc2FzbC0+cGFyYW1zLT5zZXJ2aWNlOwogI2VuZGlmCisgIGNvbnN0IGNoYXIgKm9hdXRoX2JlYXJlciA9IGRhdGEtPnNldC5zdHJbU1RSSU5HX0JFQVJFUl07CiAKICAgc2FzbC0+Zm9yY2VfaXIgPSBmb3JjZV9pcjsgICAgLyogTGF0Y2ggZm9yIGZ1dHVyZSB1c2UgKi8KICAgc2FzbC0+YXV0aHVzZWQgPSAwOyAgICAgICAgICAgLyogTm8gbWVjaGFuaXNtIHVzZWQgeWV0ICovCkBAIC0zNDEsNyArMzQyLDcgQEAKICAgICAgIH0KICAgICBlbHNlCiAjZW5kaWYKLSAgICBpZigoZW5hYmxlZG1lY2hzICYgU0FTTF9NRUNIX09BVVRIQkVBUkVSKSAmJiBjb25uLT5vYXV0aF9iZWFyZXIpIHsKKyAgICBpZigoZW5hYmxlZG1lY2hzICYgU0FTTF9NRUNIX09BVVRIQkVBUkVSKSAmJiBvYXV0aF9iZWFyZXIpIHsKICAgICAgIG1lY2ggPSBTQVNMX01FQ0hfU1RSSU5HX09BVVRIQkVBUkVSOwogICAgICAgc3RhdGUxID0gU0FTTF9PQVVUSDI7CiAgICAgICBzdGF0ZTIgPSBTQVNMX09BVVRIMl9SRVNQOwpAQCAtMzUxLDE3ICszNTIsMTcgQEAKICAgICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9vYXV0aF9iZWFyZXJfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+b2F1dGhfYmVhcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9hdXRoX2JlYXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcCwgJmxlbik7CiAgICAgfQotICAgIGVsc2UgaWYoKGVuYWJsZWRtZWNocyAmIFNBU0xfTUVDSF9YT0FVVEgyKSAmJiBjb25uLT5vYXV0aF9iZWFyZXIpIHsKKyAgICBlbHNlIGlmKChlbmFibGVkbWVjaHMgJiBTQVNMX01FQ0hfWE9BVVRIMikgJiYgb2F1dGhfYmVhcmVyKSB7CiAgICAgICBtZWNoID0gU0FTTF9NRUNIX1NUUklOR19YT0FVVEgyOwogICAgICAgc3RhdGUxID0gU0FTTF9PQVVUSDI7CiAgICAgICBzYXNsLT5hdXRodXNlZCA9IFNBU0xfTUVDSF9YT0FVVEgyOwogCiAgICAgICBpZihmb3JjZV9pciB8fCBkYXRhLT5zZXQuc2FzbF9pcikKICAgICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV94b2F1dGhfYmVhcmVyX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+b2F1dGhfYmVhcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYXV0aF9iZWFyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwLCAmbGVuKTsKICAgICB9CiAgICAgZWxzZSBpZihlbmFibGVkbWVjaHMgJiBTQVNMX01FQ0hfUExBSU4pIHsKQEAgLTM3MCw4ICszNzEsOSBAQAogICAgICAgc2FzbC0+YXV0aHVzZWQgPSBTQVNMX01FQ0hfUExBSU47CiAKICAgICAgIGlmKGZvcmNlX2lyIHx8IGRhdGEtPnNldC5zYXNsX2lyKQotICAgICAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX3BsYWluX21lc3NhZ2UoZGF0YSwgTlVMTCwgY29ubi0+dXNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnBhc3N3ZCwgJnJlc3AsICZsZW4pOworICAgICAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX3BsYWluX21lc3NhZ2UoZGF0YSwgY29ubi0+c2FzbF9hdXRoemlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+dXNlciwgY29ubi0+cGFzc3dkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOwogICAgIH0KICAgICBlbHNlIGlmKGVuYWJsZWRtZWNocyAmIFNBU0xfTUVDSF9MT0dJTikgewogICAgICAgbWVjaCA9IFNBU0xfTUVDSF9TVFJJTkdfTE9HSU47CkBAIC00MzAsNiArNDMyLDcgQEAKICAgY2hhciAqc2VydmVyZGF0YTsKICNlbmRpZgogICBzaXplX3QgbGVuID0gMDsKKyAgY29uc3QgY2hhciAqb2F1dGhfYmVhcmVyID0gZGF0YS0+c2V0LnN0cltTVFJJTkdfQkVBUkVSXTsKIAogICAqcHJvZ3Jlc3MgPSBTQVNMX0lOUFJPR1JFU1M7CiAKQEAgLTQ1Myw4ICs0NTYsOSBAQAogICAgICpwcm9ncmVzcyA9IFNBU0xfRE9ORTsKICAgICByZXR1cm4gcmVzdWx0OwogICBjYXNlIFNBU0xfUExBSU46Ci0gICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9wbGFpbl9tZXNzYWdlKGRhdGEsIE5VTEwsIGNvbm4tPnVzZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnBhc3N3ZCwgJnJlc3AsICZsZW4pOworICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfcGxhaW5fbWVzc2FnZShkYXRhLCBjb25uLT5zYXNsX2F1dGh6aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnVzZXIsIGNvbm4tPnBhc3N3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOwogICAgIGJyZWFrOwogICBjYXNlIFNBU0xfTE9HSU46CiAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsICZyZXNwLCAmbGVuKTsKQEAgLTU1Niw3ICs1NjAsNyBAQAogICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9vYXV0aF9iZWFyZXJfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+b2F1dGhfYmVhcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYXV0aF9iZWFyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwLCAmbGVuKTsKIAogICAgICAgLyogRmFpbHVyZXMgbWF5YmUgc2VudCBieSB0aGUgc2VydmVyIGFzIGNvbnRpbnVhdGlvbnMgZm9yIE9BVVRIQkVBUkVSICovCkBAIC01NjQsNyArNTY4LDcgQEAKICAgICB9CiAgICAgZWxzZQogICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV94b2F1dGhfYmVhcmVyX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPm9hdXRoX2JlYXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9hdXRoX2JlYXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwLCAmbGVuKTsKICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9zZXR1cC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9zZXR1cC5oCmluZGV4IGVmYmE1ZGQuLmVjZDZhZmIgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfc2V0dXAuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3NldHVwLmgKQEAgLTI3LDYgKzI3LDE0IEBACiAjZW5kaWYKIAogLyoKKyAqIERpc2FibGUgVmlzdWFsIFN0dWRpbyB3YXJuaW5nczoKKyAqIDQxMjcgImNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQiCisgKi8KKyNpZmRlZiBfTVNDX1ZFUgorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKKyNlbmRpZgorCisvKgogICogRGVmaW5lIFdJTjMyIHdoZW4gYnVpbGQgdGFyZ2V0IGlzIFdpbjMyIEFQSQogICovCiAKQEAgLTk2LDYgKzEwNCwxMCBAQAogIyAgaW5jbHVkZSAiY29uZmlnLXZ4d29ya3MuaCIKICNlbmRpZgogCisjaWZkZWYgX19QTEFOOV9fCisjICBpbmNsdWRlICJjb25maWctcGxhbjkuaCIKKyNlbmRpZgorCiAjZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwogCiAjaWYgZGVmaW5lZChfTVNDX1ZFUikKQEAgLTQ5Nyw3ICs1MDksNiBAQAogI2lmZGVmIFdJTjMyCiAKICMgIGRlZmluZSBESVJfQ0hBUiAgICAgICJcXCIKLSMgIGRlZmluZSBET1RfQ0hBUiAgICAgICJfIgogCiAjZWxzZSAvKiBXSU4zMiAqLwogCkBAIC01MjMsMTQgKzUzNCw2IEBACiAjICBlbmRpZgogCiAjICBkZWZpbmUgRElSX0NIQVIgICAgICAiLyIKLSMgIGlmbmRlZiBET1RfQ0hBUgotIyAgICBkZWZpbmUgRE9UX0NIQVIgICAgICAiLiIKLSMgIGVuZGlmCi0KLSMgIGlmZGVmIE1TRE9TCi0jICAgIHVuZGVmIERPVF9DSEFSCi0jICAgIGRlZmluZSBET1RfQ0hBUiAgICAgICJfIgotIyAgZW5kaWYKIAogIyAgaWZuZGVmIGZpbGVubyAvKiBzdW5vcyA0IGhhdmUgdGhpcyBhcyBhIG1hY3JvISAqLwogICAgICBpbnQgZmlsZW5vKEZJTEUgKnN0cmVhbSk7CkBAIC01ODMsNiArNTg2LDEyIEBACiAgKiBNdXR1YWxseSBleGNsdXNpdmUgQ1VSTFJFU18qIGRlZmluaXRpb25zLgogICovCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9JUFY2KSAmJiBkZWZpbmVkKEhBVkVfR0VUQUREUklORk8pCisjICBkZWZpbmUgQ1VSTFJFU19JUFY2CisjZWxzZQorIyAgZGVmaW5lIENVUkxSRVNfSVBWNAorI2VuZGlmCisKICNpZmRlZiBVU0VfQVJFUwogIyAgZGVmaW5lIENVUkxSRVNfQVNZTkNICiAjICBkZWZpbmUgQ1VSTFJFU19BUkVTCkBAIC01OTcsMTIgKzYwNiw2IEBACiAjICBkZWZpbmUgQ1VSTFJFU19TWU5DSAogI2VuZGlmCiAKLSNpZmRlZiBFTkFCTEVfSVBWNgotIyAgZGVmaW5lIENVUkxSRVNfSVBWNgotI2Vsc2UKLSMgIGRlZmluZSBDVVJMUkVTX0lQVjQKLSNlbmRpZgotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qCkBAIC02NjIsOSArNjY1LDEwIEBACiAjZGVmaW5lIExJQklETl9SRVFVSVJFRF9WRVJTSU9OICIwLjQuMSIKIAogI2lmIGRlZmluZWQoVVNFX0dOVVRMUykgfHwgZGVmaW5lZChVU0VfT1BFTlNTTCkgfHwgZGVmaW5lZChVU0VfTlNTKSB8fCBcCi0gICAgZGVmaW5lZChVU0VfUE9MQVJTU0wpIHx8IGRlZmluZWQoVVNFX01CRURUTFMpIHx8IFwKLSAgICBkZWZpbmVkKFVTRV9DWUFTU0wpIHx8IGRlZmluZWQoVVNFX1NDSEFOTkVMKSB8fCBcCi0gICAgZGVmaW5lZChVU0VfU0VDVFJBTlNQKSB8fCBkZWZpbmVkKFVTRV9HU0tJVCkgfHwgZGVmaW5lZChVU0VfTUVTQUxJTkspCisgICAgZGVmaW5lZChVU0VfTUJFRFRMUykgfHwgXAorICAgIGRlZmluZWQoVVNFX1dPTEZTU0wpIHx8IGRlZmluZWQoVVNFX1NDSEFOTkVMKSB8fCBcCisgICAgZGVmaW5lZChVU0VfU0VDVFJBTlNQKSB8fCBkZWZpbmVkKFVTRV9HU0tJVCkgfHwgZGVmaW5lZChVU0VfTUVTQUxJTkspIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9CRUFSU1NMKQogI2RlZmluZSBVU0VfU1NMICAgIC8qIFNTTCBzdXBwb3J0IGhhcyBiZWVuIGVuYWJsZWQgKi8KICNlbmRpZgogCkBAIC03MzMsNyArNzM3LDcgQEAKICAqLwogCiAjaWZuZGVmIEN1cmxfbm9wX3N0bXQKLSMgIGRlZmluZSBDdXJsX25vcF9zdG10IGRvIHsgfSBXSElMRV9GQUxTRQorIyAgZGVmaW5lIEN1cmxfbm9wX3N0bXQgZG8geyB9IHdoaWxlKDApCiAjZW5kaWYKIAogLyoKQEAgLTg0Miw0ICs4NDYsOCBAQAogI2RlZmluZSBVTklUVEVTVCBzdGF0aWMKICNlbmRpZgogCisjaWYgZGVmaW5lZChVU0VfTkdUQ1AyKSB8fCBkZWZpbmVkKFVTRV9RVUlDSEUpCisjZGVmaW5lIEVOQUJMRV9RVUlDCisjZW5kaWYKKwogI2VuZGlmIC8qIEhFQURFUl9DVVJMX1NFVFVQX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfc2V0dXBfb25jZS5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9zZXR1cF9vbmNlLmgKaW5kZXggNDEzY2NlYS4uODg5MGYzOCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9zZXR1cF9vbmNlLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9zZXR1cF9vbmNlLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTMzMCwyNyArMzMwLDYgQEAKICNpbmNsdWRlICJjdXJsX2N0eXBlLmgiCiAKIC8qCi0gKiBNYWNybyBXSElMRV9GQUxTRSBtYXkgYmUgdXNlZCB0byBidWlsZCBzaW5nbGUtaXRlcmF0aW9uIGRvLXdoaWxlIGxvb3BzLAotICogYXZvaWRpbmcgY29tcGlsZXIgd2FybmluZ3MuIE1vc3RseSBpbnRlbmRlZCBmb3Igb3RoZXIgbWFjcm8gZGVmaW5pdGlvbnMuCi0gKi8KLQotI2RlZmluZSBXSElMRV9GQUxTRSAgd2hpbGUoMCkKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9fUE9DQ19fKQotIyAgdW5kZWYgV0hJTEVfRkFMU0UKLSMgIGlmIChfTVNDX1ZFUiA8IDE1MDApCi0jICAgIGRlZmluZSBXSElMRV9GQUxTRSAgd2hpbGUoMSwgMCkKLSMgIGVsc2UKLSMgICAgZGVmaW5lIFdISUxFX0ZBTFNFIFwKLV9fcHJhZ21hKHdhcm5pbmcocHVzaCkpIFwKLV9fcHJhZ21hKHdhcm5pbmcoZGlzYWJsZTo0MTI3KSkgXAotd2hpbGUoMCkgXAotX19wcmFnbWEod2FybmluZyhwb3ApKQotIyAgZW5kaWYKLSNlbmRpZgotCi0KLS8qCiAgKiBUeXBlZGVmIHRvICdpbnQnIGlmIHNpZ19hdG9taWNfdCBpcyBub3QgYW4gYXZhaWxhYmxlICd0eXBlZGVmZWQnIHR5cGUuCiAgKi8KIApAQCAtMzg3LDcgKzM2Niw3IEBACiAjaWZkZWYgREVCVUdCVUlMRAogI2RlZmluZSBERUJVR0YoeCkgeAogI2Vsc2UKLSNkZWZpbmUgREVCVUdGKHgpIGRvIHsgfSBXSElMRV9GQUxTRQorI2RlZmluZSBERUJVR0YoeCkgZG8geyB9IHdoaWxlKDApCiAjZW5kaWYKIAogCkBAIC0zOTUsMTAgKzM3NCwxMSBAQAogICogTWFjcm8gdXNlZCB0byBpbmNsdWRlIGFzc2VydGlvbiBjb2RlIG9ubHkgaW4gZGVidWcgYnVpbGRzLgogICovCiAKKyN1bmRlZiBERUJVR0FTU0VSVAogI2lmIGRlZmluZWQoREVCVUdCVUlMRCkgJiYgZGVmaW5lZChIQVZFX0FTU0VSVF9IKQogI2RlZmluZSBERUJVR0FTU0VSVCh4KSBhc3NlcnQoeCkKICNlbHNlCi0jZGVmaW5lIERFQlVHQVNTRVJUKHgpIGRvIHsgfSBXSElMRV9GQUxTRQorI2RlZmluZSBERUJVR0FTU0VSVCh4KSBkbyB7IH0gd2hpbGUoMCkKICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfc2hhMjU2LmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3NoYTI1Ni5oCmluZGV4IDZkYjRiMDQuLjM1ZDI4NmMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfc2hhMjU2LmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvY3VybF9zaGEyNTYuaApAQCAtNyw3ICs3LDggQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEwLCBGbG9yaW4gUGV0cml1YywgPHBldHJpdWMuZmxvcmluQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNywgRmxvcmluIFBldHJpdWMsIDxwZXRyaXVjLmZsb3JpbkBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0yNCw4ICsyNSwxMCBAQAogCiAjaWZuZGVmIENVUkxfRElTQUJMRV9DUllQVE9fQVVUSAogCi12b2lkIEN1cmxfc2hhMjU2aXQodW5zaWduZWQgY2hhciAqb3V0YnVmZmVyLAotICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0KTsKKyNkZWZpbmUgU0hBMjU2X0RJR0VTVF9MRU5HVEggMzIKKwordm9pZCBDdXJsX3NoYTI1Nml0KHVuc2lnbmVkIGNoYXIgKm91dGJ1ZmZlciwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGxlbik7CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3NzcGkuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfc3NwaS5jCmluZGV4IDFkMGRlNGUuLmY3Y2MxMGYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfc3NwaS5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfc3NwaS5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3NzcGkuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfc3NwaS5oCmluZGV4IDJiYmY5NDcuLmMwOTAyNmUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfc3NwaS5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfc3NwaS5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3RocmVhZHMuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfdGhyZWFkcy5jCmluZGV4IDhlNTkzN2EuLjA2NGMwNzUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfdGhyZWFkcy5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfdGhyZWFkcy5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9jdXJsX3RocmVhZHMuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfdGhyZWFkcy5oCmluZGV4IDJhOTM2NDQuLjY1ZDFhNzkgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfdGhyZWFkcy5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2N1cmxfdGhyZWFkcy5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9kaWN0LmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9kaWN0LmgKaW5kZXggMTJjMGYzMy4uMzhhNTVhYyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZGljdC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2RpY3QuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDA5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZG9oLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9kb2guYwppbmRleCA2ZDFmMzMwLi5hYWE4ZjE1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9kb2guYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9kb2guYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDE4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNzQsMTcgKzc0LDUwIEBACiAjZGVmaW5lIFVOSVRURVNUIHN0YXRpYwogI2VuZGlmCiAKKy8qIEB1bml0dGVzdCAxNjU1CisgKi8KIFVOSVRURVNUIERPSGNvZGUgZG9oX2VuY29kZShjb25zdCBjaGFyICpob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEROU3R5cGUgZG5zdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpkbnNwLCAvKiBidWZmZXIgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLCAgLyogYnVmZmVyIHNpemUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm9sZW4pIC8qIG91dHB1dCBsZW5ndGggKi8KIHsKLSAgc2l6ZV90IGhvc3RsZW4gPSBzdHJsZW4oaG9zdCk7CisgIGNvbnN0IHNpemVfdCBob3N0bGVuID0gc3RybGVuKGhvc3QpOwogICB1bnNpZ25lZCBjaGFyICpvcmlnID0gZG5zcDsKICAgY29uc3QgY2hhciAqaG9zdHAgPSBob3N0OwogCi0gIGlmKGxlbiA8ICgxMiArIGhvc3RsZW4gKyA0KSkKKyAgLyogVGhlIGV4cGVjdGVkIG91dHB1dCBsZW5ndGggaXMgMTYgYnl0ZXMgbW9yZSB0aGFuIHRoZSBsZW5ndGggb2YKKyAgICogdGhlIFFOQU1FLWVuY29kaW5nIG9mIHRoZSBob3N0IG5hbWUuCisgICAqCisgICAqIEEgdmFsaWQgRE5TIG5hbWUgbWF5IG5vdCBjb250YWluIGEgemVyby1sZW5ndGggbGFiZWwsIGV4Y2VwdCBhdAorICAgKiB0aGUgZW5kLiAgRm9yIHRoaXMgcmVhc29uLCBhIG5hbWUgYmVnaW5uaW5nIHdpdGggYSBkb3QsIG9yCisgICAqIGNvbnRhaW5pbmcgYSBzZXF1ZW5jZSBvZiB0d28gb3IgbW9yZSBjb25zZWN1dGl2ZSBkb3RzLCBpcyBpbnZhbGlkCisgICAqIGFuZCBjYW5ub3QgYmUgZW5jb2RlZCBhcyBhIFFOQU1FLgorICAgKgorICAgKiBJZiB0aGUgaG9zdCBuYW1lIGVuZHMgd2l0aCBhIHRyYWlsaW5nIGRvdCwgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICogUU5BTUUtZW5jb2RpbmcgaXMgb25lIGJ5dGUgbG9uZ2VyIHRoYW4gdGhlIGhvc3QgbmFtZS4gSWYgKGFzIGlzCisgICAqIGFsc28gdmFsaWQpIHRoZSBob3N0bmFtZSBpcyBzaG9ydGVuZWQgYnkgdGhlIG9taXNzaW9uIG9mIHRoZQorICAgKiB0cmFpbGluZyBkb3QsIHRoZW4gaXRzIFFOQU1FLWVuY29kaW5nIHdpbGwgYmUgdHdvIGJ5dGVzIGxvbmdlcgorICAgKiB0aGFuIHRoZSBob3N0IG5hbWUuCisgICAqCisgICAqIEVhY2ggWyBsYWJlbCwgZG90IF0gcGFpciBpcyBlbmNvZGVkIGFzIFsgbGVuZ3RoLCBsYWJlbCBdLAorICAgKiBwcmVzZXJ2aW5nIG92ZXJhbGwgbGVuZ3RoLiAgQSBmaW5hbCBbIGxhYmVsIF0gd2l0aG91dCBhIGRvdCBpcworICAgKiBhbHNvIGVuY29kZWQgYXMgWyBsZW5ndGgsIGxhYmVsIF0sIGluY3JlYXNpbmcgb3ZlcmFsbCBsZW5ndGgKKyAgICogYnkgb25lLiBUaGUgZW5jb2RpbmcgaXMgY29tcGxldGVkIGJ5IGFwcGVuZGluZyBhIHplcm8gYnl0ZSwKKyAgICogcmVwcmVzZW50aW5nIHRoZSB6ZXJvLWxlbmd0aCByb290IGxhYmVsLCBhZ2FpbiBpbmNyZWFzaW5nCisgICAqIHRoZSBvdmVyYWxsIGxlbmd0aCBieSBvbmUuCisgICAqLworCisgIHNpemVfdCBleHBlY3RlZF9sZW47CisgIERFQlVHQVNTRVJUKGhvc3RsZW4pOworICBleHBlY3RlZF9sZW4gPSAxMiArIDEgKyBob3N0bGVuICsgNDsKKyAgaWYoaG9zdFtob3N0bGVuLTFdIT0nLicpCisgICAgZXhwZWN0ZWRfbGVuKys7CisKKyAgaWYoZXhwZWN0ZWRfbGVuID4gKDI1NiArIDE2KSkgLyogUkZDcyAxMDM0LCAxMDM1ICovCisgICAgcmV0dXJuIERPSF9ETlNfTkFNRV9UT09fTE9ORzsKKworICBpZihsZW4gPCBleHBlY3RlZF9sZW4pCiAgICAgcmV0dXJuIERPSF9UT09fU01BTExfQlVGRkVSOwogCiAgICpkbnNwKysgPSAwOyAvKiAxNiBiaXQgaWQgKi8KQEAgLTEwMCwzOCArMTMzLDQzIEBACiAgICpkbnNwKysgPSAnXDAnOwogICAqZG5zcCsrID0gJ1wwJzsgLyogQVJDT1VOVCAqLwogCi0gIC8qIHN0b3JlIGEgUU5BTUUgKi8KLSAgZG8gewotICAgIGNoYXIgKmRvdCA9IHN0cmNocihob3N0cCwgJy4nKTsKKyAgLyogZW5jb2RlIGVhY2ggbGFiZWwgYW5kIHN0b3JlIGl0IGluIHRoZSBRTkFNRSAqLworICB3aGlsZSgqaG9zdHApIHsKICAgICBzaXplX3QgbGFiZWxsZW47Ci0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgIGlmKGRvdCkgewotICAgICAgZm91bmQgPSB0cnVlOworICAgIGNoYXIgKmRvdCA9IHN0cmNocihob3N0cCwgJy4nKTsKKyAgICBpZihkb3QpCiAgICAgICBsYWJlbGxlbiA9IGRvdCAtIGhvc3RwOwotICAgIH0KICAgICBlbHNlCiAgICAgICBsYWJlbGxlbiA9IHN0cmxlbihob3N0cCk7Ci0gICAgaWYobGFiZWxsZW4gPiA2MykgewotICAgICAgLyogdG9vIGxvbmcgbGFiZWwsIGVycm9yIG91dCAqLworICAgIGlmKChsYWJlbGxlbiA+IDYzKSB8fCAoIWxhYmVsbGVuKSkgeworICAgICAgLyogbGFiZWwgaXMgdG9vIGxvbmcgb3IgdG9vIHNob3J0LCBlcnJvciBvdXQgKi8KICAgICAgICpvbGVuID0gMDsKICAgICAgIHJldHVybiBET0hfRE5TX0JBRF9MQUJFTDsKICAgICB9CisgICAgLyogbGFiZWwgaXMgbm9uLWVtcHR5LCBwcm9jZXNzIGl0ICovCiAgICAgKmRuc3ArKyA9ICh1bnNpZ25lZCBjaGFyKWxhYmVsbGVuOwogICAgIG1lbWNweShkbnNwLCBob3N0cCwgbGFiZWxsZW4pOwogICAgIGRuc3AgKz0gbGFiZWxsZW47Ci0gICAgaG9zdHAgKz0gbGFiZWxsZW4gKyAxOwotICAgIGlmKCFmb3VuZCkgewotICAgICAgKmRuc3ArKyA9IDA7IC8qIHRlcm1pbmF0aW5nIHplcm8gKi8KLSAgICAgIGJyZWFrOwotICAgIH0KLSAgfSB3aGlsZSgxKTsKKyAgICBob3N0cCArPSBsYWJlbGxlbjsKKyAgICAvKiBhZHZhbmNlIHBhc3QgZG90LCBidXQgb25seSBpZiB0aGVyZSBpcyBvbmUgKi8KKyAgICBpZihkb3QpCisgICAgICBob3N0cCsrOworICB9IC8qIG5leHQgbGFiZWwgKi8KIAotICAqZG5zcCsrID0gJ1wwJzsgLyogdXBwZXIgOCBiaXQgVFlQRSAqLwotICAqZG5zcCsrID0gKHVuc2lnbmVkIGNoYXIpZG5zdHlwZTsKKyAgKmRuc3ArKyA9IDA7IC8qIGFwcGVuZCB6ZXJvLWxlbmd0aCBsYWJlbCBmb3Igcm9vdCAqLworCisgIC8qIFRoZXJlIGFyZSBhc3NpZ25lZCBUWVBFIGNvZGVzIGJleW9uZCAyNTU6IHVzZSByYW5nZSBbMS4uNjU1MzVdICAqLworICAqZG5zcCsrID0gKHVuc2lnbmVkIGNoYXIpKDI1NSAmIChkbnN0eXBlPj44KSk7IC8qIHVwcGVyIDggYml0IFRZUEUgKi8KKyAgKmRuc3ArKyA9ICh1bnNpZ25lZCBjaGFyKSgyNTUgJiBkbnN0eXBlKTsgICAgICAvKiBsb3dlciA4IGJpdCBUWVBFICovCisKICAgKmRuc3ArKyA9ICdcMCc7IC8qIHVwcGVyIDggYml0IENMQVNTICovCiAgICpkbnNwKysgPSBETlNfQ0xBU1NfSU47IC8qIElOIC0gInRoZSBJbnRlcm5ldCIgKi8KIAogICAqb2xlbiA9IGRuc3AgLSBvcmlnOworCisgIC8qIHZlcmlmeSB0aGF0IG91ciBlc3RpbWF0aW9uIG9mIGxlbmd0aCBpcyB2YWxpZCwgc2luY2UKKyAgICogdGhpcyBoYXMgbGVkIHRvIGJ1ZmZlciBvdmVyZmxvd3MgaW4gdGhpcyBmdW5jdGlvbiAqLworICBERUJVR0FTU0VSVCgqb2xlbiA9PSBleHBlY3RlZF9sZW4pOwogICByZXR1cm4gRE9IX09LOwogfQogCkBAIC0xODAsNyArMjE4LDcgQEAKICAgcmVzdWx0ID0gY3VybF9lYXN5X3NldG9wdChkb2gsIHgsIHkpOyAgIFwKICAgaWYocmVzdWx0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gV0hJTEVfRkFMU0UKK30gd2hpbGUoMCkKIAogc3RhdGljIENVUkxjb2RlIGRvaHByb2JlKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRuc3Byb2JlICpwLCBETlN0eXBlIGRuc3R5cGUsCkBAIC0yMjUsNyArMjYzLDEwIEBACiAgIH0KIAogICB0aW1lb3V0X21zID0gQ3VybF90aW1lbGVmdChkYXRhLCBOVUxMLCBUUlVFKTsKLQorICBpZih0aW1lb3V0X21zIDw9IDApIHsKKyAgICByZXN1bHQgPSBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7CisgICAgZ290byBlcnJvcjsKKyAgfQogICAvKiBDdXJsX29wZW4oKSBpcyB0aGUgaW50ZXJuYWwgdmVyc2lvbiBvZiBjdXJsX2Vhc3lfaW5pdCgpICovCiAgIHJlc3VsdCA9IEN1cmxfb3BlbigmZG9oKTsKICAgaWYoIXJlc3VsdCkgewpAQCAtMjQ2LDYgKzI4Nyw5IEBACiAjaWZuZGVmIENVUkxERUJVRwogICAgIC8qIGVuZm9yY2UgSFRUUFMgaWYgbm90IGRlYnVnICovCiAgICAgRVJST1JfQ0hFQ0tfU0VUT1BUKENVUkxPUFRfUFJPVE9DT0xTLCBDVVJMUFJPVE9fSFRUUFMpOworI2Vsc2UKKyAgICAvKiBpbiBkZWJ1ZyBtb2RlLCBhbHNvIGFsbG93IGh0dHAgKi8KKyAgICBFUlJPUl9DSEVDS19TRVRPUFQoQ1VSTE9QVF9QUk9UT0NPTFMsIENVUkxQUk9UT19IVFRQfENVUkxQUk9UT19IVFRQUyk7CiAjZW5kaWYKICAgICBFUlJPUl9DSEVDS19TRVRPUFQoQ1VSTE9QVF9USU1FT1VUX01TLCAobG9uZyl0aW1lb3V0X21zKTsKICAgICBpZihkYXRhLT5zZXQudmVyYm9zZSkKQEAgLTI1OSwzOCArMzAzLDQyIEBACiAgICAgICBFUlJPUl9DSEVDS19TRVRPUFQoQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVCwgMUwpOwogICAgIGlmKGRhdGEtPnNldC5zc2wucHJpbWFyeS52ZXJpZnlob3N0KQogICAgICAgRVJST1JfQ0hFQ0tfU0VUT1BUKENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDJMKTsKKyNpZm5kZWYgQ1VSTF9ESVNBQkxFX1BST1hZCiAgICAgaWYoZGF0YS0+c2V0LnByb3h5X3NzbC5wcmltYXJ5LnZlcmlmeWhvc3QpCiAgICAgICBFUlJPUl9DSEVDS19TRVRPUFQoQ1VSTE9QVF9QUk9YWV9TU0xfVkVSSUZZSE9TVCwgMkwpOwotICAgIGlmKGRhdGEtPnNldC5zc2wucHJpbWFyeS52ZXJpZnlwZWVyKQotICAgICAgRVJST1JfQ0hFQ0tfU0VUT1BUKENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDFMKTsKICAgICBpZihkYXRhLT5zZXQucHJveHlfc3NsLnByaW1hcnkudmVyaWZ5cGVlcikKICAgICAgIEVSUk9SX0NIRUNLX1NFVE9QVChDVVJMT1BUX1BST1hZX1NTTF9WRVJJRllQRUVSLCAxTCk7CisgICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NBRklMRV9QUk9YWV0pIHsKKyAgICAgIEVSUk9SX0NIRUNLX1NFVE9QVChDVVJMT1BUX1BST1hZX0NBSU5GTywKKyAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NBRklMRV9QUk9YWV0pOworICAgIH0KKyAgICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ1JMRklMRV9QUk9YWV0pIHsKKyAgICAgIEVSUk9SX0NIRUNLX1NFVE9QVChDVVJMT1BUX1BST1hZX0NSTEZJTEUsCisgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DUkxGSUxFX1BST1hZXSk7CisgICAgfQorICAgIGlmKGRhdGEtPnNldC5wcm94eV9zc2wubm9fcmV2b2tlKQorICAgICAgRVJST1JfQ0hFQ0tfU0VUT1BUKENVUkxPUFRfUFJPWFlfU1NMX09QVElPTlMsIENVUkxTU0xPUFRfTk9fUkVWT0tFKTsKKyAgICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FQQVRIX1BST1hZXSkgeworICAgICAgRVJST1JfQ0hFQ0tfU0VUT1BUKENVUkxPUFRfUFJPWFlfQ0FQQVRILAorICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FQQVRIX1BST1hZXSk7CisgICAgfQorI2VuZGlmCisgICAgaWYoZGF0YS0+c2V0LnNzbC5wcmltYXJ5LnZlcmlmeXBlZXIpCisgICAgICBFUlJPUl9DSEVDS19TRVRPUFQoQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMUwpOwogICAgIGlmKGRhdGEtPnNldC5zc2wucHJpbWFyeS52ZXJpZnlzdGF0dXMpCiAgICAgICBFUlJPUl9DSEVDS19TRVRPUFQoQ1VSTE9QVF9TU0xfVkVSSUZZU1RBVFVTLCAxTCk7CiAgICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NBRklMRV9PUklHXSkgewogICAgICAgRVJST1JfQ0hFQ0tfU0VUT1BUKENVUkxPUFRfQ0FJTkZPLAogICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FGSUxFX09SSUddKTsKICAgICB9Ci0gICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NBRklMRV9QUk9YWV0pIHsKLSAgICAgIEVSUk9SX0NIRUNLX1NFVE9QVChDVVJMT1BUX1BST1hZX0NBSU5GTywKLSAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NBRklMRV9QUk9YWV0pOwotICAgIH0KICAgICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FQQVRIX09SSUddKSB7CiAgICAgICBFUlJPUl9DSEVDS19TRVRPUFQoQ1VSTE9QVF9DQVBBVEgsCiAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DQVBBVEhfT1JJR10pOwogICAgIH0KLSAgICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FQQVRIX1BST1hZXSkgewotICAgICAgRVJST1JfQ0hFQ0tfU0VUT1BUKENVUkxPUFRfUFJPWFlfQ0FQQVRILAotICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FQQVRIX1BST1hZXSk7Ci0gICAgfQogICAgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DUkxGSUxFX09SSUddKSB7CiAgICAgICBFUlJPUl9DSEVDS19TRVRPUFQoQ1VSTE9QVF9DUkxGSUxFLAogICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ1JMRklMRV9PUklHXSk7CiAgICAgfQotICAgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DUkxGSUxFX1BST1hZXSkgewotICAgICAgRVJST1JfQ0hFQ0tfU0VUT1BUKENVUkxPUFRfUFJPWFlfQ1JMRklMRSwKLSAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NSTEZJTEVfUFJPWFldKTsKLSAgICB9CiAgICAgaWYoZGF0YS0+c2V0LnNzbC5jZXJ0aW5mbykKICAgICAgIEVSUk9SX0NIRUNLX1NFVE9QVChDVVJMT1BUX0NFUlRJTkZPLCAxTCk7CiAgICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1JBTkRPTV9GSUxFXSkgewpAQCAtMzAzLDggKzM1MSw2IEBACiAgICAgfQogICAgIGlmKGRhdGEtPnNldC5zc2wubm9fcmV2b2tlKQogICAgICAgRVJST1JfQ0hFQ0tfU0VUT1BUKENVUkxPUFRfU1NMX09QVElPTlMsIENVUkxTU0xPUFRfTk9fUkVWT0tFKTsKLSAgICBpZihkYXRhLT5zZXQucHJveHlfc3NsLm5vX3Jldm9rZSkKLSAgICAgIEVSUk9SX0NIRUNLX1NFVE9QVChDVVJMT1BUX1BST1hZX1NTTF9PUFRJT05TLCBDVVJMU1NMT1BUX05PX1JFVk9LRSk7CiAgICAgaWYoZGF0YS0+c2V0LnNzbC5mc3NsY3R4KQogICAgICAgRVJST1JfQ0hFQ0tfU0VUT1BUKENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiwgZGF0YS0+c2V0LnNzbC5mc3NsY3R4KTsKICAgICBpZihkYXRhLT5zZXQuc3NsLmZzc2xjdHhwKQpAQCAtMzI1LDcgKzM3MSw3IEBACiAKICAgZXJyb3I6CiAgIGZyZWUobnVybCk7Ci0gIEN1cmxfY2xvc2UoZG9oKTsKKyAgQ3VybF9jbG9zZSgmZG9oKTsKICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzQxLDYgKzM4Nyw3IEBACiB7CiAgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgaW50IHNsb3Q7CiAgICp3YWl0cCA9IFRSVUU7IC8qIHRoaXMgbmV2ZXIgcmV0dXJucyBzeW5jaHJvbm91c2x5ICovCiAgICh2b2lkKWNvbm47CiAgICh2b2lkKWhvc3RuYW1lOwpAQCAtMzU5LDggKzQwNiw4IEBACiAKICAgaWYoY29ubi0+aXBfdmVyc2lvbiAhPSBDVVJMX0lQUkVTT0xWRV9WNikgewogICAgIC8qIGNyZWF0ZSBJUHY0IERPSCByZXF1ZXN0ICovCi0gICAgcmVzdWx0ID0gZG9ocHJvYmUoZGF0YSwgJmRhdGEtPnJlcS5kb2gucHJvYmVbMF0sIEROU19UWVBFX0EsCi0gICAgICAgICAgICAgICAgICAgICAgaG9zdG5hbWUsIGRhdGEtPnNldC5zdHJbU1RSSU5HX0RPSF0sCisgICAgcmVzdWx0ID0gZG9ocHJvYmUoZGF0YSwgJmRhdGEtPnJlcS5kb2gucHJvYmVbRE9IX1BST0JFX1NMT1RfSVBBRERSX1Y0XSwKKyAgICAgICAgICAgICAgICAgICAgICBETlNfVFlQRV9BLCBob3N0bmFtZSwgZGF0YS0+c2V0LnN0cltTVFJJTkdfRE9IXSwKICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5tdWx0aSwgZGF0YS0+cmVxLmRvaC5oZWFkZXJzKTsKICAgICBpZihyZXN1bHQpCiAgICAgICBnb3RvIGVycm9yOwpAQCAtMzY5LDggKzQxNiw4IEBACiAKICAgaWYoY29ubi0+aXBfdmVyc2lvbiAhPSBDVVJMX0lQUkVTT0xWRV9WNCkgewogICAgIC8qIGNyZWF0ZSBJUHY2IERPSCByZXF1ZXN0ICovCi0gICAgcmVzdWx0ID0gZG9ocHJvYmUoZGF0YSwgJmRhdGEtPnJlcS5kb2gucHJvYmVbMV0sIEROU19UWVBFX0FBQUEsCi0gICAgICAgICAgICAgICAgICAgICAgaG9zdG5hbWUsIGRhdGEtPnNldC5zdHJbU1RSSU5HX0RPSF0sCisgICAgcmVzdWx0ID0gZG9ocHJvYmUoZGF0YSwgJmRhdGEtPnJlcS5kb2gucHJvYmVbRE9IX1BST0JFX1NMT1RfSVBBRERSX1Y2XSwKKyAgICAgICAgICAgICAgICAgICAgICBETlNfVFlQRV9BQUFBLCBob3N0bmFtZSwgZGF0YS0+c2V0LnN0cltTVFJJTkdfRE9IXSwKICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5tdWx0aSwgZGF0YS0+cmVxLmRvaC5oZWFkZXJzKTsKICAgICBpZihyZXN1bHQpCiAgICAgICBnb3RvIGVycm9yOwpAQCAtMzgxLDEwICs0MjgsOSBAQAogICBlcnJvcjoKICAgY3VybF9zbGlzdF9mcmVlX2FsbChkYXRhLT5yZXEuZG9oLmhlYWRlcnMpOwogICBkYXRhLT5yZXEuZG9oLmhlYWRlcnMgPSBOVUxMOwotICBjdXJsX2Vhc3lfY2xlYW51cChkYXRhLT5yZXEuZG9oLnByb2JlWzBdLmVhc3kpOwotICBkYXRhLT5yZXEuZG9oLnByb2JlWzBdLmVhc3kgPSBOVUxMOwotICBjdXJsX2Vhc3lfY2xlYW51cChkYXRhLT5yZXEuZG9oLnByb2JlWzFdLmVhc3kpOwotICBkYXRhLT5yZXEuZG9oLnByb2JlWzFdLmVhc3kgPSBOVUxMOworICBmb3Ioc2xvdCA9IDA7IHNsb3QgPCBET0hfUFJPQkVfU0xPVFM7IHNsb3QrKykgeworICAgIEN1cmxfY2xvc2UoJmRhdGEtPnJlcS5kb2gucHJvYmVbc2xvdF0uZWFzeSk7CisgIH0KICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTQxOSw4ICs0NjUsMTQgQEAKIAogc3RhdGljIHVuc2lnbmVkIGludCBnZXQzMmJpdCh1bnNpZ25lZCBjaGFyICpkb2gsIGludCBpbmRleCkKIHsKLSAgcmV0dXJuIChkb2hbaW5kZXhdIDw8IDI0KSB8IChkb2hbaW5kZXggKyAxXSA8PCAxNikgfAotICAgIChkb2hbaW5kZXggKyAyXSA8PCA4KSB8IGRvaFtpbmRleCArIDNdOworICAgLyogbWFrZSBjbGFuZyBhbmQgZ2NjIG9wdGltaXplIHRoaXMgdG8gYnN3YXAgYnkgaW5jcmVtZW50aW5nCisgICAgICB0aGUgcG9pbnRlciBmaXJzdC4gKi8KKyAgIGRvaCArPSBpbmRleDsKKworICAgLyogYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBieSBjYXN0aW5nIHRvIHVuc2lnbmVkIGJlZm9yZSBzaGlmdGluZworICAgICAgMjQgYml0cywgcG9zc2libHkgaW50byB0aGUgc2lnbiBiaXQuIGNvZGVnZW4gaXMgc2FtZSwgYnV0CisgICAgICB1YiBzYW5pdGl6ZXIgd29uJ3QgYmUgdXBzZXQgKi8KKyAgcmV0dXJuICggKHVuc2lnbmVkKWRvaFswXSA8PCAyNCkgfCAoZG9oWzFdIDw8IDE2KSB8KGRvaFsyXSA8PCA4KSB8IGRvaFszXTsKIH0KIAogc3RhdGljIERPSGNvZGUgc3RvcmVfYSh1bnNpZ25lZCBjaGFyICpkb2gsIGludCBpbmRleCwgc3RydWN0IGRvaGVudHJ5ICpkKQpAQCAtNDk2LDcgKzU0OCw3IEBACiAgICAgICBpZigoaW5kZXggKyAxKSA+PSBkb2hsZW4pCiAgICAgICAgIHJldHVybiBET0hfRE5TX09VVF9PRl9SQU5HRTsKIAotICAgICAgLyogbW92ZSB0byB0aGUgdGhlIG5ldyBpbmRleCAqLworICAgICAgLyogbW92ZSB0byB0aGUgbmV3IGluZGV4ICovCiAgICAgICBuZXdwb3MgPSAobGVuZ3RoICYgMHgzZikgPDwgOCB8IGRvaFtpbmRleCArIDFdOwogICAgICAgaW5kZXggPSBuZXdwb3M7CiAgICAgICBjb250aW51ZTsKQEAgLTU2MSw2ICs2MTMsOSBAQAogICAgIGlmKHJjKQogICAgICAgcmV0dXJuIHJjOwogICAgIGJyZWFrOworICBjYXNlIEROU19UWVBFX0ROQU1FOgorICAgIC8qIGV4cGxpY2l0IGZvciBjbGFyaXR5OyBqdXN0IHNraXA7IHJlbHkgb24gc3ludGhlc2l6ZWQgQ05BTUUgICovCisgICAgYnJlYWs7CiAgIGRlZmF1bHQ6CiAgICAgLyogdW5zdXBwb3J0ZWQgdHlwZSwganVzdCBza2lwIGl0ICovCiAgICAgYnJlYWs7CkBAIC02MjIsOCArNjc3LDEwIEBACiAgICAgICByZXR1cm4gRE9IX0ROU19PVVRfT0ZfUkFOR0U7CiAKICAgICB0eXBlID0gZ2V0MTZiaXQoZG9oLCBpbmRleCk7Ci0gICAgaWYoKHR5cGUgIT0gRE5TX1RZUEVfQ05BTUUpICYmICh0eXBlICE9IGRuc3R5cGUpKQotICAgICAgLyogTm90IHRoZSBzYW1lIHR5cGUgYXMgd2FzIGFza2VkIGZvciBub3IgQ05BTUUgKi8KKyAgICBpZigodHlwZSAhPSBETlNfVFlQRV9DTkFNRSkgICAgLyogbWF5IGJlIHN5bnRoZXNpemVkIGZyb20gRE5BTUUgKi8KKyAgICAgICAmJiAodHlwZSAhPSBETlNfVFlQRV9ETkFNRSkgLyogaWYgcHJlc2VudCwgYWNjZXB0IGFuZCBpZ25vcmUgKi8KKyAgICAgICAmJiAodHlwZSAhPSBkbnN0eXBlKSkKKyAgICAgIC8qIE5vdCB0aGUgc2FtZSB0eXBlIGFzIHdhcyBhc2tlZCBmb3Igbm9yIENOQU1FIG5vciBETkFNRSAqLwogICAgICAgcmV0dXJuIERPSF9ETlNfVU5FWFBFQ1RFRF9UWVBFOwogICAgIGluZGV4ICs9IDI7CiAKQEAgLTg4NCw0NyArOTQxLDQzIEBACiBDVVJMY29kZSBDdXJsX2RvaF9pc19yZXNvbHZlZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgQ3VybF9kbnNfZW50cnkgKipkbnNwKQogeworICBDVVJMY29kZSByZXN1bHQ7CiAgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwogICAqZG5zcCA9IE5VTEw7IC8qIGRlZmF1bHRzIHRvIG5vIHJlc3BvbnNlICovCiAKLSAgaWYoIWRhdGEtPnJlcS5kb2gucHJvYmVbMF0uZWFzeSAmJiAhZGF0YS0+cmVxLmRvaC5wcm9iZVsxXS5lYXN5KSB7CisgIGlmKCFkYXRhLT5yZXEuZG9oLnByb2JlW0RPSF9QUk9CRV9TTE9UX0lQQUREUl9WNF0uZWFzeSAmJgorICAgICAhZGF0YS0+cmVxLmRvaC5wcm9iZVtET0hfUFJPQkVfU0xPVF9JUEFERFJfVjZdLmVhc3kpIHsKICAgICBmYWlsZihkYXRhLCAiQ291bGQgbm90IERPSC1yZXNvbHZlOiAlcyIsIGNvbm4tPmFzeW5jLmhvc3RuYW1lKTsKICAgICByZXR1cm4gY29ubi0+Yml0cy5wcm94eT9DVVJMRV9DT1VMRE5UX1JFU09MVkVfUFJPWFk6CiAgICAgICBDVVJMRV9DT1VMRE5UX1JFU09MVkVfSE9TVDsKICAgfQogICBlbHNlIGlmKCFkYXRhLT5yZXEuZG9oLnBlbmRpbmcpIHsKLSAgICBET0hjb2RlIHJjOwotICAgIERPSGNvZGUgcmMyOworICAgIERPSGNvZGUgcmNbRE9IX1BST0JFX1NMT1RTXTsKICAgICBzdHJ1Y3QgZG9oZW50cnkgZGU7CisgICAgaW50IHNsb3Q7CiAgICAgLyogcmVtb3ZlIERPSCBoYW5kbGVzIGZyb20gbXVsdGkgaGFuZGxlIGFuZCBjbG9zZSB0aGVtICovCi0gICAgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKGRhdGEtPm11bHRpLCBkYXRhLT5yZXEuZG9oLnByb2JlWzBdLmVhc3kpOwotICAgIEN1cmxfY2xvc2UoZGF0YS0+cmVxLmRvaC5wcm9iZVswXS5lYXN5KTsKLSAgICBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoZGF0YS0+bXVsdGksIGRhdGEtPnJlcS5kb2gucHJvYmVbMV0uZWFzeSk7Ci0gICAgQ3VybF9jbG9zZShkYXRhLT5yZXEuZG9oLnByb2JlWzFdLmVhc3kpOwotCisgICAgZm9yKHNsb3QgPSAwOyBzbG90IDwgRE9IX1BST0JFX1NMT1RTOyBzbG90KyspIHsKKyAgICAgIGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZShkYXRhLT5tdWx0aSwgZGF0YS0+cmVxLmRvaC5wcm9iZVtzbG90XS5lYXN5KTsKKyAgICAgIEN1cmxfY2xvc2UoJmRhdGEtPnJlcS5kb2gucHJvYmVbc2xvdF0uZWFzeSk7CisgICAgfQogICAgIC8qIHBhcnNlIHRoZSByZXNwb25zZXMsIGNyZWF0ZSB0aGUgc3RydWN0IGFuZCByZXR1cm4gaXQhICovCiAgICAgaW5pdF9kb2hlbnRyeSgmZGUpOwotICAgIHJjID0gZG9oX2RlY29kZShkYXRhLT5yZXEuZG9oLnByb2JlWzBdLnNlcnZlcmRvaC5tZW1vcnksCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPnJlcS5kb2gucHJvYmVbMF0uc2VydmVyZG9oLnNpemUsCi0gICAgICAgICAgICAgICAgICAgIGRhdGEtPnJlcS5kb2gucHJvYmVbMF0uZG5zdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgJmRlKTsKLSAgICBmcmVlKGRhdGEtPnJlcS5kb2gucHJvYmVbMF0uc2VydmVyZG9oLm1lbW9yeSk7Ci0gICAgaWYocmMpIHsKLSAgICAgIGluZm9mKGRhdGEsICJET0g6ICVzIHR5cGUgJXMgZm9yICVzXG4iLCBkb2hfc3RyZXJyb3IocmMpLAotICAgICAgICAgICAgdHlwZTJuYW1lKGRhdGEtPnJlcS5kb2gucHJvYmVbMF0uZG5zdHlwZSksCi0gICAgICAgICAgICBkYXRhLT5yZXEuZG9oLmhvc3QpOwotICAgIH0KLSAgICByYzIgPSBkb2hfZGVjb2RlKGRhdGEtPnJlcS5kb2gucHJvYmVbMV0uc2VydmVyZG9oLm1lbW9yeSwKLSAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnJlcS5kb2gucHJvYmVbMV0uc2VydmVyZG9oLnNpemUsCi0gICAgICAgICAgICAgICAgICAgICBkYXRhLT5yZXEuZG9oLnByb2JlWzFdLmRuc3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAmZGUpOwotICAgIGZyZWUoZGF0YS0+cmVxLmRvaC5wcm9iZVsxXS5zZXJ2ZXJkb2gubWVtb3J5KTsKLSAgICBpZihyYzIpIHsKLSAgICAgIGluZm9mKGRhdGEsICJET0g6ICVzIHR5cGUgJXMgZm9yICVzXG4iLCBkb2hfc3RyZXJyb3IocmMyKSwKLSAgICAgICAgICAgIHR5cGUybmFtZShkYXRhLT5yZXEuZG9oLnByb2JlWzFdLmRuc3R5cGUpLAotICAgICAgICAgICAgZGF0YS0+cmVxLmRvaC5ob3N0KTsKLSAgICB9Ci0gICAgaWYoIXJjIHx8ICFyYzIpIHsKKyAgICBmb3Ioc2xvdCA9IDA7IHNsb3QgPCBET0hfUFJPQkVfU0xPVFM7IHNsb3QrKykgeworICAgICAgcmNbc2xvdF0gPSBkb2hfZGVjb2RlKGRhdGEtPnJlcS5kb2gucHJvYmVbc2xvdF0uc2VydmVyZG9oLm1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5yZXEuZG9oLnByb2JlW3Nsb3RdLnNlcnZlcmRvaC5zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnJlcS5kb2gucHJvYmVbc2xvdF0uZG5zdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGUpOworICAgICAgQ3VybF9zYWZlZnJlZShkYXRhLT5yZXEuZG9oLnByb2JlW3Nsb3RdLnNlcnZlcmRvaC5tZW1vcnkpOworICAgICAgaWYocmNbc2xvdF0pIHsKKyAgICAgICAgaW5mb2YoZGF0YSwgIkRPSDogJXMgdHlwZSAlcyBmb3IgJXNcbiIsIGRvaF9zdHJlcnJvcihyY1tzbG90XSksCisgICAgICAgICAgICAgIHR5cGUybmFtZShkYXRhLT5yZXEuZG9oLnByb2JlW3Nsb3RdLmRuc3R5cGUpLAorICAgICAgICAgICAgICBkYXRhLT5yZXEuZG9oLmhvc3QpOworICAgICAgfQorICAgIH0gLyogbmV4dCBzbG90ICovCisKKyAgICByZXN1bHQgPSBDVVJMRV9DT1VMRE5UX1JFU09MVkVfSE9TVDsgLyogdW50aWwgd2Uga25vdyBiZXR0ZXIgKi8KKyAgICBpZighcmNbRE9IX1BST0JFX1NMT1RfSVBBRERSX1Y0XSB8fCAhcmNbRE9IX1BST0JFX1NMT1RfSVBBRERSX1Y2XSkgeworICAgICAgLyogd2UgaGF2ZSBhbiBhZGRyZXNzLCBvZiBvbmUga2luZCBvciBvdGhlciAqLwogICAgICAgc3RydWN0IEN1cmxfZG5zX2VudHJ5ICpkbnM7CiAgICAgICBzdHJ1Y3QgQ3VybF9hZGRyaW5mbyAqYWk7CiAKQEAgLTk0NiwyMSArOTk5LDI2IEBACiAgICAgICBpZihkYXRhLT5zaGFyZSkKICAgICAgICAgQ3VybF9zaGFyZV91bmxvY2soZGF0YSwgQ1VSTF9MT0NLX0RBVEFfRE5TKTsKIAotICAgICAgZGVfY2xlYW51cCgmZGUpOwotICAgICAgaWYoIWRucykKKyAgICAgIGlmKCFkbnMpIHsKICAgICAgICAgLyogcmV0dXJuZWQgZmFpbHVyZSwgYmFpbCBvdXQgbmljZWx5ICovCiAgICAgICAgIEN1cmxfZnJlZWFkZHJpbmZvKGFpKTsKKyAgICAgIH0KICAgICAgIGVsc2UgewogICAgICAgICBjb25uLT5hc3luYy5kbnMgPSBkbnM7CiAgICAgICAgICpkbnNwID0gZG5zOwotICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgICAgIHJlc3VsdCA9IENVUkxFX09LOyAgICAgIC8qIGFkZHJlc3MgcmVzb2x1dGlvbiBPSyAqLwogICAgICAgfQotICAgIH0KKyAgICB9IC8qIGFkZHJlc3MgcHJvY2Vzc2luZyBkb25lICovCisKKyAgICAvKiBOb3cgcHJvY2VzcyBhbnkgYnVpbGQtc3BlY2lmaWMgYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBETlMgKi8KKworICAgIC8qIEFsbCBkb25lICovCiAgICAgZGVfY2xlYW51cCgmZGUpOworICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9SRVNPTFZFX0hPU1Q7Ci0gIH0KKyAgfSAvKiAhZGF0YS0+cmVxLmRvaC5wZW5kaW5nICovCiAKKyAgLyogZWxzZSB3YWl0IGZvciBwZW5kaW5nIERPSCB0cmFuc2FjdGlvbnMgdG8gY29tcGxldGUgKi8KICAgcmV0dXJuIENVUkxFX09LOwogfQogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9kb2guaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2RvaC5oCmluZGV4IDM0YmZhNmYuLmZjMDUzZWQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2RvaC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2RvaC5oCkBAIC00MCw4ICs0MCw3IEBACiBDVVJMY29kZSBDdXJsX2RvaF9pc19yZXNvbHZlZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgQ3VybF9kbnNfZW50cnkgKipkbnMpOwogCi1pbnQgQ3VybF9kb2hfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKK2ludCBDdXJsX2RvaF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MpOwogCiB0eXBlZGVmIGVudW0gewogICBET0hfT0ssCkBAIC01NiwxNCArNTUsMTYgQEAKICAgRE9IX0ROU19VTkVYUEVDVEVEX1RZUEUsICAvKiA5ICovCiAgIERPSF9ETlNfVU5FWFBFQ1RFRF9DTEFTUywgLyogMTAgKi8KICAgRE9IX05PX0NPTlRFTlQsICAgICAgICAgICAvKiAxMSAqLwotICBET0hfRE5TX0JBRF9JRCAgICAgICAgICAgIC8qIDEyICovCisgIERPSF9ETlNfQkFEX0lELCAgICAgICAgICAgLyogMTIgKi8KKyAgRE9IX0ROU19OQU1FX1RPT19MT05HICAgICAvKiAxMyAqLwogfSBET0hjb2RlOwogCiB0eXBlZGVmIGVudW0gewogICBETlNfVFlQRV9BID0gMSwKICAgRE5TX1RZUEVfTlMgPSAyLAogICBETlNfVFlQRV9DTkFNRSA9IDUsCi0gIEROU19UWVBFX0FBQUEgPSAyOAorICBETlNfVFlQRV9BQUFBID0gMjgsCisgIEROU19UWVBFX0ROQU1FID0gMzkgICAgICAgICAgIC8qIFJGQzY2NzIgKi8KIH0gRE5TdHlwZTsKIAogI2RlZmluZSBET0hfTUFYX0FERFIgMjQKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2RvdGRvdC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvZG90ZG90LmMKaW5kZXggMmM2MTc3YS4uZmU0ZjQ5NyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZG90ZG90LmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvZG90ZG90LmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2RvdGRvdC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvZG90ZG90LmgKaW5kZXggMTI1YWY0My4uZjcwYjFkYiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZG90ZG90LmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvZG90ZG90LmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2Vhc3kuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2Vhc3kuYwppbmRleCA0YTZmOTY1Li4xYTY5MTI3IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9lYXN5LmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvZWFzeS5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC03MiwxMCArNzIsMTEgQEAKICNpbmNsdWRlICJ3YXJubGVzcy5oIgogI2luY2x1ZGUgIm11bHRpaWYuaCIKICNpbmNsdWRlICJzaWdwaXBlLmgiCi0jaW5jbHVkZSAic3NoLmgiCisjaW5jbHVkZSAidnNzaC9zc2guaCIKICNpbmNsdWRlICJzZXRvcHQuaCIKICNpbmNsdWRlICJodHRwX2RpZ2VzdC5oIgogI2luY2x1ZGUgInN5c3RlbV93aW4zMi5oIgorI2luY2x1ZGUgImh0dHAyLmgiCiAKIC8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgpAQCAtMTU3LDIwICsxNTgsMjAgQEAKIAogICBpZighQ3VybF9zc2xfaW5pdCgpKSB7CiAgICAgREVCVUdGKGZwcmludGYoc3RkZXJyLCAiRXJyb3I6IEN1cmxfc3NsX2luaXQgZmFpbGVkXG4iKSk7Ci0gICAgcmV0dXJuIENVUkxFX0ZBSUxFRF9JTklUOworICAgIGdvdG8gZmFpbDsKICAgfQogCiAjaWZkZWYgV0lOMzIKICAgaWYoQ3VybF93aW4zMl9pbml0KGZsYWdzKSkgewogICAgIERFQlVHRihmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiB3aW4zMl9pbml0IGZhaWxlZFxuIikpOwotICAgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKKyAgICBnb3RvIGZhaWw7CiAgIH0KICNlbmRpZgogCiAjaWZkZWYgX19BTUlHQV9fCiAgIGlmKCFDdXJsX2FtaWdhX2luaXQoKSkgewogICAgIERFQlVHRihmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiBDdXJsX2FtaWdhX2luaXQgZmFpbGVkXG4iKSk7Ci0gICAgcmV0dXJuIENVUkxFX0ZBSUxFRF9JTklUOworICAgIGdvdG8gZmFpbDsKICAgfQogI2VuZGlmCiAKQEAgLTE4MiwzMyArMTgzLDMxIEBACiAKICAgaWYoQ3VybF9yZXNvbHZlcl9nbG9iYWxfaW5pdCgpKSB7CiAgICAgREVCVUdGKGZwcmludGYoc3RkZXJyLCAiRXJyb3I6IHJlc29sdmVyX2dsb2JhbF9pbml0IGZhaWxlZFxuIikpOwotICAgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKKyAgICBnb3RvIGZhaWw7CiAgIH0KIAotICAodm9pZClDdXJsX2lwdjZ3b3JrcygpOwotCi0jaWYgZGVmaW5lZChVU0VfTElCU1NIMikgJiYgZGVmaW5lZChIQVZFX0xJQlNTSDJfSU5JVCkKLSAgaWYobGlic3NoMl9pbml0KDApKSB7Ci0gICAgREVCVUdGKGZwcmludGYoc3RkZXJyLCAiRXJyb3I6IGxpYnNzaDJfaW5pdCBmYWlsZWRcbiIpKTsKLSAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CisjaWYgZGVmaW5lZChVU0VfU1NIKQorICBpZihDdXJsX3NzaF9pbml0KCkpIHsKKyAgICBnb3RvIGZhaWw7CiAgIH0KICNlbmRpZgogCi0jaWYgZGVmaW5lZChVU0VfTElCU1NIKQotICBpZihzc2hfaW5pdCgpKSB7Ci0gICAgREVCVUdGKGZwcmludGYoc3RkZXJyLCAiRXJyb3I6IGxpYnNzaF9pbml0IGZhaWxlZFxuIikpOworI2lmZGVmIFVTRV9XT0xGU1NICisgIGlmKFdTX1NVQ0NFU1MgIT0gd29sZlNTSF9Jbml0KCkpIHsKKyAgICBERUJVR0YoZnByaW50ZihzdGRlcnIsICJFcnJvcjogd29sZlNTSF9Jbml0IGZhaWxlZFxuIikpOwogICAgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKICAgfQogI2VuZGlmCiAKLSAgaWYoZmxhZ3MgJiBDVVJMX0dMT0JBTF9BQ0tfRUlOVFIpCi0gICAgQ3VybF9hY2tfZWludHIgPSAxOwotCiAgIGluaXRfZmxhZ3MgPSBmbGFnczsKIAogICBDdXJsX3ZlcnNpb25faW5pdCgpOwogCiAgIHJldHVybiBDVVJMRV9PSzsKKworICBmYWlsOgorICBpbml0aWFsaXplZC0tOyAvKiB1bmRvIHRoZSBpbmNyZWFzZSAqLworICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CiB9CiAKIApAQCAtMjc0LDEyICsyNzMsMTAgQEAKIAogICBDdXJsX2FtaWdhX2NsZWFudXAoKTsKIAotI2lmIGRlZmluZWQoVVNFX0xJQlNTSDIpICYmIGRlZmluZWQoSEFWRV9MSUJTU0gyX0VYSVQpCi0gICh2b2lkKWxpYnNzaDJfZXhpdCgpOwotI2VuZGlmCisgIEN1cmxfc3NoX2NsZWFudXAoKTsKIAotI2lmIGRlZmluZWQoVVNFX0xJQlNTSCkKLSAgKHZvaWQpc3NoX2ZpbmFsaXplKCk7CisjaWZkZWYgVVNFX1dPTEZTU0gKKyAgKHZvaWQpd29sZlNTSF9DbGVhbnVwKCk7CiAjZW5kaWYKIAogICBpbml0X2ZsYWdzICA9IDA7CkBAIC02MDIsMjcgKzU5OSwxMSBAQAogCiAgIHdoaWxlKCFkb25lICYmICFtY29kZSkgewogICAgIGludCBzdGlsbF9ydW5uaW5nID0gMDsKLSAgICBib29sIGdvdHNvY2tldCA9IEZBTFNFOwogCi0gICAgbWNvZGUgPSBDdXJsX211bHRpX3dhaXQobXVsdGksIE5VTEwsIDAsIDEwMDAsIE5VTEwsICZnb3Rzb2NrZXQpOworICAgIG1jb2RlID0gY3VybF9tdWx0aV9wb2xsKG11bHRpLCBOVUxMLCAwLCAxMDAwLCBOVUxMKTsKIAotICAgIGlmKCFtY29kZSkgewotICAgICAgaWYoIWdvdHNvY2tldCkgewotICAgICAgICBsb25nIHNsZWVwX21zOwotCi0gICAgICAgIC8qIElmIGl0IHJldHVybnMgd2l0aG91dCBhbnkgZmlsZWRlc2NyaXB0b3IgaW5zdGFudGx5LCB3ZSBuZWVkIHRvCi0gICAgICAgICAgIGF2b2lkIGJ1c3ktbG9vcGluZyBkdXJpbmcgcGVyaW9kcyB3aGVyZSBpdCBoYXMgbm90aGluZyBwYXJ0aWN1bGFyCi0gICAgICAgICAgIHRvIHdhaXQgZm9yICovCi0gICAgICAgIGN1cmxfbXVsdGlfdGltZW91dChtdWx0aSwgJnNsZWVwX21zKTsKLSAgICAgICAgaWYoc2xlZXBfbXMpIHsKLSAgICAgICAgICBpZihzbGVlcF9tcyA+IDEwMDApCi0gICAgICAgICAgICBzbGVlcF9tcyA9IDEwMDA7Ci0gICAgICAgICAgQ3VybF93YWl0X21zKChpbnQpc2xlZXBfbXMpOwotICAgICAgICB9Ci0gICAgICB9Ci0KKyAgICBpZighbWNvZGUpCiAgICAgICBtY29kZSA9IGN1cmxfbXVsdGlfcGVyZm9ybShtdWx0aSwgJnN0aWxsX3J1bm5pbmcpOwotICAgIH0KIAogICAgIC8qIG9ubHkgcmVhZCAnc3RpbGxfcnVubmluZycgaWYgY3VybF9tdWx0aV9wZXJmb3JtKCkgcmV0dXJuIE9LICovCiAgICAgaWYoIW1jb2RlICYmICFzdGlsbF9ydW5uaW5nKSB7CkBAIC03MTAsMTAgKzY5MSw2IEBACiAKICAgc2lncGlwZV9pZ25vcmUoZGF0YSwgJnBpcGVfc3QpOwogCi0gIC8qIGFzc2lnbiB0aGlzIGFmdGVyIGN1cmxfbXVsdGlfYWRkX2hhbmRsZSgpIHNpbmNlIHRoYXQgZnVuY3Rpb24gY2hlY2tzIGZvcgotICAgICBpdCBhbmQgcmVqZWN0cyB0aGlzIGhhbmRsZSBvdGhlcndpc2UgKi8KLSAgZGF0YS0+bXVsdGkgPSBtdWx0aTsKLQogICAvKiBydW4gdGhlIHRyYW5zZmVyICovCiAgIHJlc3VsdCA9IGV2ZW50cyA/IGVhc3lfZXZlbnRzKG11bHRpKSA6IGVhc3lfdHJhbnNmZXIobXVsdGkpOwogCkBAIC03NjEsNyArNzM4LDcgQEAKICAgICByZXR1cm47CiAKICAgc2lncGlwZV9pZ25vcmUoZGF0YSwgJnBpcGVfc3QpOwotICBDdXJsX2Nsb3NlKGRhdGEpOworICBDdXJsX2Nsb3NlKCZkYXRhKTsKICAgc2lncGlwZV9yZXN0b3JlKCZwaXBlX3N0KTsKIH0KIApAQCAtOTQyLDYgKzkxOSw4IEBACiAgKi8KIHZvaWQgY3VybF9lYXN5X3Jlc2V0KHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEpCiB7CisgIGxvbmcgb2xkX2J1ZmZlcl9zaXplID0gZGF0YS0+c2V0LmJ1ZmZlcl9zaXplOworCiAgIEN1cmxfZnJlZV9yZXF1ZXN0X3N0YXRlKGRhdGEpOwogCiAgIC8qIHplcm8gb3V0IFVzZXJEZWZpbmVkIGRhdGE6ICovCkBAIC05NjUsNiArOTQ0LDE4IEBACiAjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0hUVFApICYmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCkKICAgQ3VybF9odHRwX2F1dGhfY2xlYW51cF9kaWdlc3QoZGF0YSk7CiAjZW5kaWYKKworICAvKiByZXNpemUgcmVjZWl2ZSBidWZmZXIgKi8KKyAgaWYob2xkX2J1ZmZlcl9zaXplICE9IGRhdGEtPnNldC5idWZmZXJfc2l6ZSkgeworICAgIGNoYXIgKm5ld2J1ZmYgPSByZWFsbG9jKGRhdGEtPnN0YXRlLmJ1ZmZlciwgZGF0YS0+c2V0LmJ1ZmZlcl9zaXplICsgMSk7CisgICAgaWYoIW5ld2J1ZmYpIHsKKyAgICAgIERFQlVHRihmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiByZWFsbG9jIG9mIGJ1ZmZlciBmYWlsZWRcbiIpKTsKKyAgICAgIC8qIG5vdGhpbmcgd2UgY2FuIGRvIGhlcmUgZXhjZXB0IHVzZSB0aGUgb2xkIHNpemUgKi8KKyAgICAgIGRhdGEtPnNldC5idWZmZXJfc2l6ZSA9IG9sZF9idWZmZXJfc2l6ZTsKKyAgICB9CisgICAgZWxzZQorICAgICAgZGF0YS0+c3RhdGUuYnVmZmVyID0gbmV3YnVmZjsKKyAgfQogfQogCiAvKgpAQCAtOTk1LDU1ICs5ODYsNjMgQEAKICAgLyogcHV0IGl0IGJhY2sgaW4gdGhlIGtlZXBvbiAqLwogICBrLT5rZWVwb24gPSBuZXdzdGF0ZTsKIAotICBpZighKG5ld3N0YXRlICYgS0VFUF9SRUNWX1BBVVNFKSAmJiBkYXRhLT5zdGF0ZS50ZW1wY291bnQpIHsKLSAgICAvKiB0aGVyZSBhcmUgYnVmZmVycyBmb3Igc2VuZGluZyB0aGF0IGNhbiBiZSBkZWxpdmVyZWQgYXMgdGhlIHJlY2VpdmUKLSAgICAgICBwYXVzaW5nIGlzIGxpZnRlZCEgKi8KLSAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICB1bnNpZ25lZCBpbnQgY291bnQgPSBkYXRhLT5zdGF0ZS50ZW1wY291bnQ7Ci0gICAgc3RydWN0IHRlbXBidWYgd3JpdGVidWZbM107IC8qIHRoZXJlIGNhbiBvbmx5IGJlIHRocmVlICovCi0gICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gZGF0YS0+Y29ubjsKLSAgICBzdHJ1Y3QgQ3VybF9lYXN5ICpzYXZlZF9kYXRhID0gTlVMTDsKKyAgaWYoIShuZXdzdGF0ZSAmIEtFRVBfUkVDVl9QQVVTRSkpIHsKKyAgICBDdXJsX2h0dHAyX3N0cmVhbV9wYXVzZShkYXRhLCBGQUxTRSk7CiAKLSAgICAvKiBjb3B5IHRoZSBzdHJ1Y3RzIHRvIGFsbG93IGZvciBpbW1lZGlhdGUgcmUtcGF1c2luZyAqLwotICAgIGZvcihpID0gMDsgaSA8IGRhdGEtPnN0YXRlLnRlbXBjb3VudDsgaSsrKSB7Ci0gICAgICB3cml0ZWJ1ZltpXSA9IGRhdGEtPnN0YXRlLnRlbXB3cml0ZVtpXTsKLSAgICAgIGRhdGEtPnN0YXRlLnRlbXB3cml0ZVtpXS5idWYgPSBOVUxMOworICAgIGlmKGRhdGEtPnN0YXRlLnRlbXBjb3VudCkgeworICAgICAgLyogdGhlcmUgYXJlIGJ1ZmZlcnMgZm9yIHNlbmRpbmcgdGhhdCBjYW4gYmUgZGVsaXZlcmVkIGFzIHRoZSByZWNlaXZlCisgICAgICAgICBwYXVzaW5nIGlzIGxpZnRlZCEgKi8KKyAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgdW5zaWduZWQgaW50IGNvdW50ID0gZGF0YS0+c3RhdGUudGVtcGNvdW50OworICAgICAgc3RydWN0IHRlbXBidWYgd3JpdGVidWZbM107IC8qIHRoZXJlIGNhbiBvbmx5IGJlIHRocmVlICovCisgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSBkYXRhLT5jb25uOworICAgICAgc3RydWN0IEN1cmxfZWFzeSAqc2F2ZWRfZGF0YSA9IE5VTEw7CisKKyAgICAgIC8qIGNvcHkgdGhlIHN0cnVjdHMgdG8gYWxsb3cgZm9yIGltbWVkaWF0ZSByZS1wYXVzaW5nICovCisgICAgICBmb3IoaSA9IDA7IGkgPCBkYXRhLT5zdGF0ZS50ZW1wY291bnQ7IGkrKykgeworICAgICAgICB3cml0ZWJ1ZltpXSA9IGRhdGEtPnN0YXRlLnRlbXB3cml0ZVtpXTsKKyAgICAgICAgZGF0YS0+c3RhdGUudGVtcHdyaXRlW2ldLmJ1ZiA9IE5VTEw7CisgICAgICB9CisgICAgICBkYXRhLT5zdGF0ZS50ZW1wY291bnQgPSAwOworCisgICAgICAvKiBzZXQgdGhlIGNvbm5lY3Rpb24ncyBjdXJyZW50IG93bmVyICovCisgICAgICBpZihjb25uLT5kYXRhICE9IGRhdGEpIHsKKyAgICAgICAgc2F2ZWRfZGF0YSA9IGNvbm4tPmRhdGE7CisgICAgICAgIGNvbm4tPmRhdGEgPSBkYXRhOworICAgICAgfQorCisgICAgICBmb3IoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIC8qIGV2ZW4gaWYgb25lIGZ1bmN0aW9uIHJldHVybnMgZXJyb3IsIHRoaXMgbG9vcHMgdGhyb3VnaCBhbmQgZnJlZXMKKyAgICAgICAgICAgYWxsIGJ1ZmZlcnMgKi8KKyAgICAgICAgaWYoIXJlc3VsdCkKKyAgICAgICAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCB3cml0ZWJ1ZltpXS50eXBlLCB3cml0ZWJ1ZltpXS5idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVidWZbaV0ubGVuKTsKKyAgICAgICAgZnJlZSh3cml0ZWJ1ZltpXS5idWYpOworICAgICAgfQorCisgICAgICAvKiByZWNvdmVyIHByZXZpb3VzIG93bmVyIG9mIHRoZSBjb25uZWN0aW9uICovCisgICAgICBpZihzYXZlZF9kYXRhKQorICAgICAgICBjb25uLT5kYXRhID0gc2F2ZWRfZGF0YTsKKworICAgICAgaWYocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBkYXRhLT5zdGF0ZS50ZW1wY291bnQgPSAwOwotCi0gICAgLyogc2V0IHRoZSBjb25uZWN0aW9uJ3MgY3VycmVudCBvd25lciAqLwotICAgIGlmKGNvbm4tPmRhdGEgIT0gZGF0YSkgewotICAgICAgc2F2ZWRfZGF0YSA9IGNvbm4tPmRhdGE7Ci0gICAgICBjb25uLT5kYXRhID0gZGF0YTsKLSAgICB9Ci0KLSAgICBmb3IoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAvKiBldmVuIGlmIG9uZSBmdW5jdGlvbiByZXR1cm5zIGVycm9yLCB0aGlzIGxvb3BzIHRocm91Z2ggYW5kIGZyZWVzIGFsbAotICAgICAgICAgYnVmZmVycyAqLwotICAgICAgaWYoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgd3JpdGVidWZbaV0udHlwZSwgd3JpdGVidWZbaV0uYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZWJ1ZltpXS5sZW4pOwotICAgICAgZnJlZSh3cml0ZWJ1ZltpXS5idWYpOwotICAgIH0KLQotICAgIC8qIHJlY292ZXIgcHJldmlvdXMgb3duZXIgb2YgdGhlIGNvbm5lY3Rpb24gKi8KLSAgICBpZihzYXZlZF9kYXRhKQotICAgICAgY29ubi0+ZGF0YSA9IHNhdmVkX2RhdGE7Ci0KLSAgICBpZihyZXN1bHQpCi0gICAgICByZXR1cm4gcmVzdWx0OwogICB9CiAKICAgLyogaWYgdGhlcmUncyBubyBlcnJvciBhbmQgd2UncmUgbm90IHBhdXNpbmcgYm90aCBkaXJlY3Rpb25zLCB3ZSB3YW50CiAgICAgIHRvIGhhdmUgdGhpcyBoYW5kbGUgY2hlY2tlZCBzb29uICovCi0gIGlmKCFyZXN1bHQgJiYKLSAgICAgKChuZXdzdGF0ZSYoS0VFUF9SRUNWX1BBVVNFfEtFRVBfU0VORF9QQVVTRSkpICE9Ci0gICAgICAoS0VFUF9SRUNWX1BBVVNFfEtFRVBfU0VORF9QQVVTRSkpICkKKyAgaWYoKG5ld3N0YXRlICYgKEtFRVBfUkVDVl9QQVVTRXxLRUVQX1NFTkRfUEFVU0UpKSAhPQorICAgICAoS0VFUF9SRUNWX1BBVVNFfEtFRVBfU0VORF9QQVVTRSkpIHsKKyAgICBkYXRhLT5zdGF0ZS5kcmFpbisrOwogICAgIEN1cmxfZXhwaXJlKGRhdGEsIDAsIEVYUElSRV9SVU5fTk9XKTsgLyogZ2V0IHRoaXMgaGFuZGxlIGdvaW5nIGFnYWluICovCisgICAgaWYoZGF0YS0+bXVsdGkpCisgICAgICBDdXJsX3VwZGF0ZV90aW1lcihkYXRhLT5tdWx0aSk7CisgIH0KIAotICAvKiBUaGlzIHRyYW5zZmVyIG1heSBoYXZlIGJlZW4gbW92ZWQgaW4gb3Igb3V0IG9mIHRoZSBidW5kbGUsIHVwZGF0ZQotICAgICB0aGUgY29ycmVzcG9uZGluZyBzb2NrZXQgY2FsbGJhY2ssIGlmIHVzZWQgKi8KLSAgQ3VybF91cGRhdGVzb2NrZXQoZGF0YSk7CisgIGlmKCFkYXRhLT5zdGF0ZS5kb25lKQorICAgIC8qIFRoaXMgdHJhbnNmZXIgbWF5IGhhdmUgYmVlbiBtb3ZlZCBpbiBvciBvdXQgb2YgdGhlIGJ1bmRsZSwgdXBkYXRlIHRoZQorICAgICAgIGNvcnJlc3BvbmRpbmcgc29ja2V0IGNhbGxiYWNrLCBpZiB1c2VkICovCisgICAgQ3VybF91cGRhdGVzb2NrZXQoZGF0YSk7CiAKICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTExMzgsNiArMTEzNywzNSBAQAogfQogCiAvKgorICogV3JhcHBlciB0byBjYWxsIGZ1bmN0aW9ucyBpbiBDdXJsX2Nvbm5jYWNoZV9mb3JlYWNoKCkKKyAqCisgKiBSZXR1cm5zIGFsd2F5cyAwLgorICovCitzdGF0aWMgaW50IGNvbm5fdXBrZWVwKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGFyYW0pCit7CisgIC8qIFBhcmFtIGlzIHVudXNlZC4gKi8KKyAgKHZvaWQpcGFyYW07CisKKyAgaWYoY29ubi0+aGFuZGxlci0+Y29ubmVjdGlvbl9jaGVjaykgeworICAgIC8qIERvIGEgcHJvdG9jb2wtc3BlY2lmaWMga2VlcGFsaXZlIGNoZWNrIG9uIHRoZSBjb25uZWN0aW9uLiAqLworICAgIGNvbm4tPmhhbmRsZXItPmNvbm5lY3Rpb25fY2hlY2soY29ubiwgQ09OTkNIRUNLX0tFRVBBTElWRSk7CisgIH0KKworICByZXR1cm4gMDsgLyogY29udGludWUgaXRlcmF0aW9uICovCit9CisKK3N0YXRpYyBDVVJMY29kZSB1cGtlZXAoc3RydWN0IGNvbm5jYWNoZSAqY29ubl9jYWNoZSwgdm9pZCAqZGF0YSkKK3sKKyAgLyogTG9vcCBvdmVyIGV2ZXJ5IGNvbm5lY3Rpb24gYW5kIG1ha2UgY29ubmVjdGlvbiBhbGl2ZS4gKi8KKyAgQ3VybF9jb25uY2FjaGVfZm9yZWFjaChkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5fY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25uX3Vwa2VlcCk7CisgIHJldHVybiBDVVJMRV9PSzsKK30KKworLyoKICAqIFBlcmZvcm1zIGNvbm5lY3Rpb24gdXBrZWVwIGZvciB0aGUgZ2l2ZW4gc2Vzc2lvbiBoYW5kbGUuCiAgKi8KIENVUkxjb2RlIGN1cmxfZWFzeV91cGtlZXAoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSkKQEAgLTExNDgsNyArMTE3Niw3IEBACiAKICAgaWYoZGF0YS0+bXVsdGlfZWFzeSkgewogICAgIC8qIFVzZSB0aGUgY29tbW9uIGZ1bmN0aW9uIHRvIGtlZXAgY29ubmVjdGlvbnMgYWxpdmUuICovCi0gICAgcmV0dXJuIEN1cmxfdXBrZWVwKCZkYXRhLT5tdWx0aV9lYXN5LT5jb25uX2NhY2hlLCBkYXRhKTsKKyAgICByZXR1cm4gdXBrZWVwKCZkYXRhLT5tdWx0aV9lYXN5LT5jb25uX2NhY2hlLCBkYXRhKTsKICAgfQogICBlbHNlIHsKICAgICAvKiBObyBjb25uZWN0aW9ucywgc28ganVzdCByZXR1cm4gc3VjY2VzcyAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZWFzeWlmLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9lYXN5aWYuaAppbmRleCA2YmE3ZTU0Li44YTMwOWM1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9lYXN5aWYuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9lYXN5aWYuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZmlsZS5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvZmlsZS5jCmluZGV4IGQzNDljZDkuLjI0OTIzNzAgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2ZpbGUuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9maWxlLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTEzNiw3ICsxMzYsNyBAQAogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKICAgY2hhciAqcmVhbF9wYXRoOwogICBzdHJ1Y3QgRklMRVBST1RPICpmaWxlID0gZGF0YS0+cmVxLnByb3RvcDsKLSAgaW50IGZkOworICBpbnQgZmQgPSAtMTsKICNpZmRlZiBET1NfRklMRVNZU1RFTQogICBzaXplX3QgaTsKICAgY2hhciAqYWN0dWFsX3BhdGg7CkBAIC0xODEsNyArMTgxLDkgQEAKICAgICAgIHJldHVybiBDVVJMRV9VUkxfTUFMRk9STUFUOwogICAgIH0KIAotICBmZCA9IG9wZW5fcmVhZG9ubHkoYWN0dWFsX3BhdGgsIE9fUkRPTkxZfE9fQklOQVJZKTsKKyAgaWYoc3RybmNtcCgiXFxcXCIsIGFjdHVhbF9wYXRoLCAyKSkKKyAgICAvKiByZWZ1c2UgdG8gb3BlbiBwYXRoIHRoYXQgc3RhcnRzIHdpdGggdHdvIGJhY2tzbGFzaGVzICovCisgICAgZmQgPSBvcGVuX3JlYWRvbmx5KGFjdHVhbF9wYXRoLCBPX1JET05MWXxPX0JJTkFSWSk7CiAgIGZpbGUtPnBhdGggPSBhY3R1YWxfcGF0aDsKICNlbHNlCiAgIGlmKG1lbWNocihyZWFsX3BhdGgsIDAsIHJlYWxfcGF0aF9sZW4pKSB7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9maWxlLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9maWxlLmgKaW5kZXggMjA4MjhhZC4uZjZiNzRhNyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZmlsZS5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2ZpbGUuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDA5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZm9ybWRhdGEuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2Zvcm1kYXRhLmMKaW5kZXggNDI5ZDQ3OS4uNTBhMzdlMCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZm9ybWRhdGEuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9mb3JtZGF0YS5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9mdHAuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2Z0cC5jCmluZGV4IDUzNTEwZjguLjcyOTJlMDEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2Z0cC5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2Z0cC5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAidHJhbnNmZXIuaCIKICNpbmNsdWRlICJlc2NhcGUuaCIKICNpbmNsdWRlICJodHRwLmgiIC8qIGZvciBIVFRQIHByb3h5IHR1bm5lbCBzdHVmZiAqLwotI2luY2x1ZGUgInNvY2tzLmgiCiAjaW5jbHVkZSAiZnRwLmgiCiAjaW5jbHVkZSAiZmlsZWluZm8uaCIKICNpbmNsdWRlICJmdHBsaXN0cGFyc2VyLmgiCkBAIC03OCw2ICs3Nyw3IEBACiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKICNpbmNsdWRlICJodHRwX3Byb3h5LmgiCiAjaW5jbHVkZSAibm9uLWFzY2lpLmgiCisjaW5jbHVkZSAic29ja3MuaCIKIC8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCkBAIC0xMzIsMTAgKzEzMiw4IEBACiBzdGF0aWMgQ1VSTGNvZGUgZnRwX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sIGRlYWRfY29ubmVjdGlvbik7CiBzdGF0aWMgQ1VSTGNvZGUgZnRwX2RvX21vcmUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgKmNvbXBsZXRlZCk7CiBzdGF0aWMgQ1VSTGNvZGUgZnRwX211bHRpX3N0YXRlbWFjaChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpOwotc3RhdGljIGludCBmdHBfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpOwotc3RhdGljIGludCBmdHBfZG9tb3JlX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2Nrcyk7CitzdGF0aWMgaW50IGZ0cF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MpOworc3RhdGljIGludCBmdHBfZG9tb3JlX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2Nrcyk7CiBzdGF0aWMgQ1VSTGNvZGUgZnRwX2RvaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9waGFzZV9kb25lKTsKIHN0YXRpYyBDVVJMY29kZSBmdHBfc2V0dXBfY29ubmVjdGlvbihzdHJ1Y3QgY29ubmVjdGRhdGEgKiBjb25uKTsKQEAgLTI1NSwxOCArMjUzLDYgQEAKICAgQ3VybF9zYWZlZnJlZShmdHBjLT5uZXdob3N0KTsKIH0KIAotLyogUmV0dXJucyBub24temVybyBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGNvbnRhaW5zIENSIChccikgb3IgTEYgKFxuKSwKLSAgIHdoaWNoIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gUkZDIDk1OSA8c3RyaW5nPi4KLSAgIE5vdGU6IFRoZSBpbnB1dCBzdHJpbmcgaXMgaW4gdGhlIGNsaWVudCdzIGVuY29kaW5nIHdoaWNoIG1pZ2h0Ci0gICBub3QgYmUgQVNDSUksIHNvIGVzY2FwZSBzZXF1ZW5jZXMgXHIgJiBcbiBtdXN0IGJlIHVzZWQgaW5zdGVhZAotICAgb2YgaGV4IHZhbHVlcyAweDBkICYgMHgwYS4KLSovCi1zdGF0aWMgYm9vbCBpc0JhZEZ0cFN0cmluZyhjb25zdCBjaGFyICpzdHJpbmcpCi17Ci0gIHJldHVybiAoKE5VTEwgIT0gc3RyY2hyKHN0cmluZywgJ1xyJykpIHx8Ci0gICAgICAgICAgKE5VTEwgIT0gc3RyY2hyKHN0cmluZywgJ1xuJykpKSA/IFRSVUUgOiBGQUxTRTsKLX0KLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogQWNjZXB0U2VydmVyQ29ubmVjdCgpCkBAIC0zMDUsNyArMjkxLDcgQEAKIAogICBjb25uLT5zb2NrW1NFQ09OREFSWVNPQ0tFVF0gPSBzOwogICAodm9pZCljdXJseF9ub25ibG9jayhzLCBUUlVFKTsgLyogZW5hYmxlIG5vbi1ibG9ja2luZyAqLwotICBjb25uLT5zb2NrX2FjY2VwdGVkW1NFQ09OREFSWVNPQ0tFVF0gPSBUUlVFOworICBjb25uLT5zb2NrX2FjY2VwdGVkID0gVFJVRTsKIAogICBpZihkYXRhLT5zZXQuZnNvY2tvcHQpIHsKICAgICBpbnQgZXJyb3IgPSAwOwpAQCAtMzgyLDcgKzM2OCw3IEBACiAgIHN0cnVjdCBmdHBfY29ubiAqZnRwYyA9ICZjb25uLT5wcm90by5mdHBjOwogICBzdHJ1Y3QgcGluZ3BvbmcgKnBwID0gJmZ0cGMtPnBwOwogICBpbnQgcmVzdWx0OwotICB0aW1lX3QgdGltZW91dF9tczsKKyAgdGltZWRpZmZfdCB0aW1lb3V0X21zOwogICBzc2l6ZV90IG5yZWFkOwogICBpbnQgZnRwY29kZTsKIApAQCAtNDkzLDcgKzQ3OSw3IEBACiBzdGF0aWMgQ1VSTGNvZGUgQWxsb3dTZXJ2ZXJDb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqY29ubmVjdGVkKQogewogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgdGltZV90IHRpbWVvdXRfbXM7CisgIHRpbWVkaWZmX3QgdGltZW91dF9tczsKICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CiAKICAgKmNvbm5lY3RlZCA9IEZBTFNFOwpAQCAtNTI1LDcgKzUxMSw3IEBACiAgIH0KICAgZWxzZSB7CiAgICAgLyogQWRkIHRpbWVvdXQgdG8gbXVsdGkgaGFuZGxlIGFuZCBicmVhayBvdXQgb2YgdGhlIGxvb3AgKi8KLSAgICBpZighcmVzdWx0ICYmICpjb25uZWN0ZWQgPT0gRkFMU0UpIHsKKyAgICBpZigqY29ubmVjdGVkID09IEZBTFNFKSB7CiAgICAgICBDdXJsX2V4cGlyZShkYXRhLCBkYXRhLT5zZXQuYWNjZXB0dGltZW91dCA+IDAgPwogICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LmFjY2VwdHRpbWVvdXQ6IERFRkFVTFRfQUNDRVBUX1RJTUVPVVQsIDApOwogICAgIH0KQEAgLTU2NSwxMCArNTUxLDggQEAKICNpZmRlZiBIQVZFX0dTU0FQSQogICBjaGFyICogY29uc3QgYnVmID0gZGF0YS0+c3RhdGUuYnVmZmVyOwogI2VuZGlmCi0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwogICBpbnQgY29kZTsKLQotICByZXN1bHQgPSBDdXJsX3BwX3JlYWRyZXNwKHNvY2tmZCwgcHAsICZjb2RlLCBzaXplKTsKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ3VybF9wcF9yZWFkcmVzcChzb2NrZmQsIHBwLCAmY29kZSwgc2l6ZSk7CiAKICNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKQogICAvKiBoYW5kbGUgdGhlIHNlY3VyaXR5LW9yaWVudGVkIHJlc3BvbnNlcyA2eHggKioqLwpAQCAtNzg5LDkgKzc3Myw4IEBACiBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlX3VzZXIoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewogICBDVVJMY29kZSByZXN1bHQ7Ci0gIHN0cnVjdCBGVFAgKmZ0cCA9IGNvbm4tPmRhdGEtPnJlcS5wcm90b3A7CiAgIC8qIHNlbmQgVVNFUiAqLwotICBQUFNFTkRGKCZjb25uLT5wcm90by5mdHBjLnBwLCAiVVNFUiAlcyIsIGZ0cC0+dXNlcj9mdHAtPnVzZXI6IiIpOworICBQUFNFTkRGKCZjb25uLT5wcm90by5mdHBjLnBwLCAiVVNFUiAlcyIsIGNvbm4tPnVzZXI/Y29ubi0+dXNlcjoiIik7CiAKICAgc3RhdGUoY29ubiwgRlRQX1VTRVIpOwogICBjb25uLT5kYXRhLT5zdGF0ZS5mdHBfdHJ5aW5nX2FsdGVybmF0aXZlID0gRkFMU0U7CkBAIC04MTIsMjYgKzc5NSwyNCBAQAogCiAvKiBGb3IgdGhlIEZUUCAicHJvdG9jb2wgY29ubmVjdCIgYW5kICJkb2luZyIgcGhhc2VzIG9ubHkgKi8KIHN0YXRpYyBpbnQgZnRwX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKQorICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcykKIHsKLSAgcmV0dXJuIEN1cmxfcHBfZ2V0c29jaygmY29ubi0+cHJvdG8uZnRwYy5wcCwgc29ja3MsIG51bXNvY2tzKTsKKyAgcmV0dXJuIEN1cmxfcHBfZ2V0c29jaygmY29ubi0+cHJvdG8uZnRwYy5wcCwgc29ja3MpOwogfQogCiAvKiBGb3IgdGhlIEZUUCAiRE9fTU9SRSIgcGhhc2Ugb25seSAqLwotc3RhdGljIGludCBmdHBfZG9tb3JlX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKK3N0YXRpYyBpbnQgZnRwX2RvbW9yZV9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MpCiB7CiAgIHN0cnVjdCBmdHBfY29ubiAqZnRwYyA9ICZjb25uLT5wcm90by5mdHBjOwogCi0gIGlmKCFudW1zb2NrcykKLSAgICByZXR1cm4gR0VUU09DS19CTEFOSzsKLQogICAvKiBXaGVuIGluIERPX01PUkUgc3RhdGUsIHdlIGNvdWxkIGJlIGVpdGhlciB3YWl0aW5nIGZvciB1cyB0byBjb25uZWN0IHRvIGEKICAgICogcmVtb3RlIHNpdGUsIG9yIHdlIGNvdWxkIHdhaXQgZm9yIHRoYXQgc2l0ZSB0byBjb25uZWN0IHRvIHVzLiBPciBqdXN0CiAgICAqIGhhbmRsZSBvcmRpbmFyeSBjb21tYW5kcy4KICAgICovCiAKKyAgaWYoU09DS1NfU1RBVEUoY29ubi0+Y25uY3Quc3RhdGUpKQorICAgIHJldHVybiBDdXJsX1NPQ0tTX2dldHNvY2soY29ubiwgc29ja3MsIFNFQ09OREFSWVNPQ0tFVCk7CisKICAgaWYoRlRQX1NUT1AgPT0gZnRwYy0+c3RhdGUpIHsKICAgICBpbnQgYml0cyA9IEdFVFNPQ0tfUkVBRFNPQ0soMCk7CiAKQEAgLTg1OCw3ICs4MzksNyBAQAogCiAgICAgcmV0dXJuIGJpdHM7CiAgIH0KLSAgcmV0dXJuIEN1cmxfcHBfZ2V0c29jaygmY29ubi0+cHJvdG8uZnRwYy5wcCwgc29ja3MsIG51bXNvY2tzKTsKKyAgcmV0dXJuIEN1cmxfcHBfZ2V0c29jaygmY29ubi0+cHJvdG8uZnRwYy5wcCwgc29ja3MpOwogfQogCiAvKiBUaGlzIGlzIGNhbGxlZCBhZnRlciB0aGUgRlRQX1FVT1RFIHN0YXRlIGlzIHBhc3NlZC4KQEAgLTg3Niw2ICs4NTcsMTAgQEAKICAgICAvKiBhbHJlYWR5IGRvbmUgYW5kIGZpbmUgKi8KICAgICByZXN1bHQgPSBmdHBfc3RhdGVfbWR0bShjb25uKTsKICAgZWxzZSB7CisgICAgLyogRlRQRklMRV9OT0NXRCB3aXRoIGZ1bGwgcGF0aDogZXhwZWN0IGZ0cGMtPmN3ZGRvbmUhICovCisgICAgREVCVUdBU1NFUlQoKGNvbm4tPmRhdGEtPnNldC5mdHBfZmlsZW1ldGhvZCAhPSBGVFBGSUxFX05PQ1dEKSB8fAorICAgICAgICAgICAgICAgICEoZnRwYy0+ZGlyZGVwdGggJiYgZnRwYy0+ZGlyc1swXVswXSA9PSAnLycpKTsKKwogICAgIGZ0cGMtPmNvdW50MiA9IDA7IC8qIGNvdW50MiBjb3VudHMgZmFpbGVkIENXRHMgKi8KIAogICAgIC8qIGNvdW50MyBpcyBzZXQgdG8gYWxsb3cgYSBNS0QgdG8gZmFpbCBvbmNlLiBJbiB0aGUgY2FzZSB3aGVuIGZpcnN0IENXRApAQCAtODgzLDEwICs4NjgsOSBAQAogICAgICAgIGRpcikgdGhpcyB0aGVuIGFsbG93cyBmb3IgYSBzZWNvbmQgdHJ5IHRvIENXRCB0byBpdCAqLwogICAgIGZ0cGMtPmNvdW50MyA9IChjb25uLT5kYXRhLT5zZXQuZnRwX2NyZWF0ZV9taXNzaW5nX2RpcnMgPT0gMik/MTowOwogCi0gICAgaWYoKGNvbm4tPmRhdGEtPnNldC5mdHBfZmlsZW1ldGhvZCA9PSBGVFBGSUxFX05PQ1dEKSAmJiAhZnRwYy0+Y3dkY291bnQpCi0gICAgICAvKiBObyBDV0QgbmVjZXNzYXJ5ICovCi0gICAgICByZXN1bHQgPSBmdHBfc3RhdGVfbWR0bShjb25uKTsKLSAgICBlbHNlIGlmKGNvbm4tPmJpdHMucmV1c2UgJiYgZnRwYy0+ZW50cnlwYXRoKSB7CisgICAgaWYoY29ubi0+Yml0cy5yZXVzZSAmJiBmdHBjLT5lbnRyeXBhdGggJiYKKyAgICAgICAvKiBubyBuZWVkIHRvIGdvIHRvIGVudHJ5cGF0aCB3aGVuIHdlIGhhdmUgYW4gYWJzb2x1dGUgcGF0aCAqLworICAgICAgICEoZnRwYy0+ZGlyZGVwdGggJiYgZnRwYy0+ZGlyc1swXVswXSA9PSAnLycpKSB7CiAgICAgICAvKiBUaGlzIGlzIGEgcmUtdXNlZCBjb25uZWN0aW9uLiBTaW5jZSB3ZSBjaGFuZ2UgZGlyZWN0b3J5IHRvIHdoZXJlIHRoZQogICAgICAgICAgdHJhbnNmZXIgaXMgdGFraW5nIHBsYWNlLCB3ZSBtdXN0IGZpcnN0IGdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBkaXIKICAgICAgICAgIHdoZXJlIHdlIGVuZGVkIHVwIGFmdGVyIGxvZ2luOiAqLwpAQCAtOTI2LDcgKzkxMCw3IEBACiAgIHN0cnVjdCBmdHBfY29ubiAqZnRwYyA9ICZjb25uLT5wcm90by5mdHBjOwogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKICAgY3VybF9zb2NrZXRfdCBwb3J0c29jayA9IENVUkxfU09DS0VUX0JBRDsKLSAgY2hhciBteWhvc3RbMjU2XSA9ICIiOworICBjaGFyIG15aG9zdFtNQVhfSVBBRFJfTEVOICsgMV0gPSAiIjsKIAogICBzdHJ1Y3QgQ3VybF9zb2NrYWRkcl9zdG9yYWdlIHNzOwogICBDdXJsX2FkZHJpbmZvICpyZXMsICphaTsKQEAgLTkzNyw5ICs5MjEsOCBAQAogI2lmZGVmIEVOQUJMRV9JUFY2CiAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKiBjb25zdCBzYTYgPSAodm9pZCAqKXNhOwogI2VuZGlmCi0gIGNoYXIgdG1wWzEwMjRdOwogICBzdGF0aWMgY29uc3QgY2hhciBtb2RlW11bNV0gPSB7ICJFUFJUIiwgIlBPUlQiIH07Ci0gIGludCByYzsKKyAgZW51bSByZXNvbHZlX3QgcmM7CiAgIGludCBlcnJvcjsKICAgY2hhciAqaG9zdCA9IE5VTEw7CiAgIGNoYXIgKnN0cmluZ19mdHBwb3J0ID0gZGF0YS0+c2V0LnN0cltTVFJJTkdfRlRQUE9SVF07CkBAIC0xMjUyLDggKzEyMzUsMTAgQEAKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZihQT1JUID09IGZjbWQpIHsKKyAgICAgIC8qIGxhcmdlIGVub3VnaCBmb3IgW0lQIGFkZHJlc3NdLFtudW1dLFtudW1dICovCisgICAgICBjaGFyIHRhcmdldFtzaXplb2YobXlob3N0KSArIDIwXTsKICAgICAgIGNoYXIgKnNvdXJjZSA9IG15aG9zdDsKLSAgICAgIGNoYXIgKmRlc3QgPSB0bXA7CisgICAgICBjaGFyICpkZXN0ID0gdGFyZ2V0OwogCiAgICAgICAvKiB0cmFuc2xhdGUgeC54LngueCB0byB4LHgseCx4ICovCiAgICAgICB3aGlsZShzb3VyY2UgJiYgKnNvdXJjZSkgewpAQCAtMTI2Nyw3ICsxMjUyLDcgQEAKICAgICAgICpkZXN0ID0gMDsKICAgICAgIG1zbnByaW50ZihkZXN0LCAyMCwgIiwlZCwlZCIsIChpbnQpKHBvcnQ+PjgpLCAoaW50KShwb3J0JjB4ZmYpKTsKIAotICAgICAgcmVzdWx0ID0gQ3VybF9wcF9zZW5kZigmZnRwYy0+cHAsICIlcyAlcyIsIG1vZGVbZmNtZF0sIHRtcCk7CisgICAgICByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZmdHBjLT5wcCwgIiVzICVzIiwgbW9kZVtmY21kXSwgdGFyZ2V0KTsKICAgICAgIGlmKHJlc3VsdCkgewogICAgICAgICBmYWlsZihkYXRhLCAiRmFpbHVyZSBzZW5kaW5nIFBPUlQgY29tbWFuZDogJXMiLAogICAgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzdWx0KSk7CkBAIC0xNDQ1LDMxICsxNDMwLDM3IEBACiAgICAgIHNlcnZlcnMgZWl0aGVyLi4uICovCiAKICAgLyoKLSAgICAgaWYgRlRQRklMRV9OT0NXRCB3YXMgc3BlY2lmaWVkLCB3ZSBhcmUgY3VycmVudGx5IGluCi0gICAgIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnksIHNvIHdlIHNob3VsZCBhZGQgdGhlIHBhdGgKKyAgICAgaWYgRlRQRklMRV9OT0NXRCB3YXMgc3BlY2lmaWVkLCB3ZSBzaG91bGQgYWRkIHRoZSBwYXRoCiAgICAgIGFzIGFyZ3VtZW50IGZvciB0aGUgTElTVCAvIE5MU1QgLyBvciBjdXN0b20gY29tbWFuZC4KICAgICAgV2hldGhlciB0aGUgc2VydmVyIHdpbGwgc3VwcG9ydCB0aGlzLCBpcyB1bmNlcnRhaW4uCiAKICAgICAgVGhlIG90aGVyIGZ0cF9maWxlbWV0aG9kcyB3aWxsIENXRCBpbnRvIGRpci9kaXIvIGZpcnN0IGFuZAogICAgICB0aGVuIGp1c3QgZG8gTElTVCAoaW4gdGhhdCBjYXNlOiBub3RoaW5nIHRvIGRvIGhlcmUpCiAgICovCi0gIGNoYXIgKmNtZCwgKmxzdEFyZywgKnNsYXNoUG9zOwotICBjb25zdCBjaGFyICppbnBhdGggPSBmdHAtPnBhdGg7CisgIGNoYXIgKmxzdEFyZyA9IE5VTEw7CisgIGNoYXIgKmNtZDsKIAotICBsc3RBcmcgPSBOVUxMOwotICBpZigoZGF0YS0+c2V0LmZ0cF9maWxlbWV0aG9kID09IEZUUEZJTEVfTk9DV0QpICYmCi0gICAgIGlucGF0aCAmJiBpbnBhdGhbMF0gJiYgc3RyY2hyKGlucGF0aCwgJy8nKSkgewotICAgIHNpemVfdCBuID0gc3RybGVuKGlucGF0aCk7Ci0KLSAgICAvKiBDaGVjayBpZiBwYXRoIGRvZXMgbm90IGVuZCB3aXRoIC8sIGFzIHRoZW4gd2UgY3V0IG9mZiB0aGUgZmlsZSBwYXJ0ICovCi0gICAgaWYoaW5wYXRoW24gLSAxXSAhPSAnLycpIHsKLSAgICAgIC8qIGNob3Agb2ZmIHRoZSBmaWxlIHBhcnQgaWYgZm9ybWF0IGlzIGRpci9kaXIvZmlsZSAqLwotICAgICAgc2xhc2hQb3MgPSBzdHJyY2hyKGlucGF0aCwgJy8nKTsKLSAgICAgIG4gPSBzbGFzaFBvcyAtIGlucGF0aDsKLSAgICB9Ci0gICAgcmVzdWx0ID0gQ3VybF91cmxkZWNvZGUoZGF0YSwgaW5wYXRoLCBuLCAmbHN0QXJnLCBOVUxMLCBUUlVFKTsKKyAgaWYoKGRhdGEtPnNldC5mdHBfZmlsZW1ldGhvZCA9PSBGVFBGSUxFX05PQ1dEKSAmJiBmdHAtPnBhdGgpIHsKKyAgICAvKiB1cmwtZGVjb2RlIGJlZm9yZSBldmFsdWF0aW9uOiBlLmcuIHBhdGhzIHN0YXJ0aW5nL2VuZGluZyB3aXRoICUyZiAqLworICAgIGNvbnN0IGNoYXIgKnNsYXNoUG9zID0gTlVMTDsKKyAgICBjaGFyICpyYXdQYXRoID0gTlVMTDsKKyAgICByZXN1bHQgPSBDdXJsX3VybGRlY29kZShkYXRhLCBmdHAtPnBhdGgsIDAsICZyYXdQYXRoLCBOVUxMLCBUUlVFKTsKICAgICBpZihyZXN1bHQpCiAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgc2xhc2hQb3MgPSBzdHJyY2hyKHJhd1BhdGgsICcvJyk7CisgICAgaWYoc2xhc2hQb3MpIHsKKyAgICAgIC8qIGNob3Agb2ZmIHRoZSBmaWxlIHBhcnQgaWYgZm9ybWF0IGlzIGRpci9maWxlIG90aGVyd2lzZSByZW1vdmUKKyAgICAgICAgIHRoZSB0cmFpbGluZyBzbGFzaCBmb3IgZGlyL2Rpci8gZXhjZXB0IGZvciBhYnNvbHV0ZSBwYXRoIC8gKi8KKyAgICAgIHNpemVfdCBuID0gc2xhc2hQb3MgLSByYXdQYXRoOworICAgICAgaWYobiA9PSAwKQorICAgICAgICArK247CisKKyAgICAgIGxzdEFyZyA9IHJhd1BhdGg7CisgICAgICBsc3RBcmdbbl0gPSAnXDAnOworICAgIH0KKyAgICBlbHNlCisgICAgICBmcmVlKHJhd1BhdGgpOwogICB9CiAKICAgY21kID0gYXByaW50ZigiJXMlcyVzIiwKQEAgLTE0NzgsMTUgKzE0NjksMTIgQEAKICAgICAgICAgICAgICAgICAoZGF0YS0+c2V0LmZ0cF9saXN0X29ubHk/Ik5MU1QiOiJMSVNUIiksCiAgICAgICAgICAgICAgICAgbHN0QXJnPyAiICI6ICIiLAogICAgICAgICAgICAgICAgIGxzdEFyZz8gbHN0QXJnOiAiIik7CisgIGZyZWUobHN0QXJnKTsKIAotICBpZighY21kKSB7Ci0gICAgZnJlZShsc3RBcmcpOworICBpZighY21kKQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9CiAKICAgcmVzdWx0ID0gQ3VybF9wcF9zZW5kZigmY29ubi0+cHJvdG8uZnRwYy5wcCwgIiVzIiwgY21kKTsKLQotICBmcmVlKGxzdEFyZyk7CiAgIGZyZWUoY21kKTsKIAogICBpZihyZXN1bHQpCkBAIC0xNDk5LDI0ICsxNDg3LDE0IEBACiAKIHN0YXRpYyBDVVJMY29kZSBmdHBfc3RhdGVfcmV0cl9wcmVxdW90ZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotCiAgIC8qIFdlJ3ZlIHNlbnQgdGhlIFRZUEUsIG5vdyB3ZSBtdXN0IHNlbmQgdGhlIGxpc3Qgb2YgcHJlcXVvdGUgc3RyaW5ncyAqLwotCi0gIHJlc3VsdCA9IGZ0cF9zdGF0ZV9xdW90ZShjb25uLCBUUlVFLCBGVFBfUkVUUl9QUkVRVU9URSk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKKyAgcmV0dXJuIGZ0cF9zdGF0ZV9xdW90ZShjb25uLCBUUlVFLCBGVFBfUkVUUl9QUkVRVU9URSk7CiB9CiAKIHN0YXRpYyBDVVJMY29kZSBmdHBfc3RhdGVfc3Rvcl9wcmVxdW90ZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotCiAgIC8qIFdlJ3ZlIHNlbnQgdGhlIFRZUEUsIG5vdyB3ZSBtdXN0IHNlbmQgdGhlIGxpc3Qgb2YgcHJlcXVvdGUgc3RyaW5ncyAqLwotCi0gIHJlc3VsdCA9IGZ0cF9zdGF0ZV9xdW90ZShjb25uLCBUUlVFLCBGVFBfU1RPUl9QUkVRVU9URSk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKKyAgcmV0dXJuIGZ0cF9zdGF0ZV9xdW90ZShjb25uLCBUUlVFLCBGVFBfU1RPUl9QUkVRVU9URSk7CiB9CiAKIHN0YXRpYyBDVVJMY29kZSBmdHBfc3RhdGVfdHlwZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCkBAIC0xODE5LDcgKzE3OTcsNyBAQAogICBDVVJMY29kZSByZXN1bHQ7CiAgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwogICBzdHJ1Y3QgQ3VybF9kbnNfZW50cnkgKmFkZHIgPSBOVUxMOwotICBpbnQgcmM7CisgIGVudW0gcmVzb2x2ZV90IHJjOwogICB1bnNpZ25lZCBzaG9ydCBjb25uZWN0cG9ydDsgLyogdGhlIGxvY2FsIHBvcnQgY29ubmVjdCgpIHNob3VsZCB1c2UhICovCiAgIGNoYXIgKnN0ciA9ICZkYXRhLT5zdGF0ZS5idWZmZXJbNF07ICAvKiBzdGFydCBvbiB0aGUgZmlyc3QgbGV0dGVyICovCiAKQEAgLTIwNTIsMTMgKzIwMzAsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICZ5ZWFyLCAmbW9udGgsICZkYXksICZob3VyLCAmbWludXRlLCAmc2Vjb25kKSkgewogICAgICAgICAvKiB3ZSBoYXZlIGEgdGltZSwgcmVmb3JtYXQgaXQgKi8KICAgICAgICAgY2hhciB0aW1lYnVmWzI0XTsKLSAgICAgICAgdGltZV90IHNlY3MgPSB0aW1lKE5VTEwpOwotCiAgICAgICAgIG1zbnByaW50Zih0aW1lYnVmLCBzaXplb2YodGltZWJ1ZiksCiAgICAgICAgICAgICAgICAgICAiJTA0ZCUwMmQlMDJkICUwMmQ6JTAyZDolMDJkIEdNVCIsCiAgICAgICAgICAgICAgICAgICB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCk7CiAgICAgICAgIC8qIG5vdywgY29udmVydCB0aGlzIGludG8gYSB0aW1lKCkgdmFsdWU6ICovCi0gICAgICAgIGRhdGEtPmluZm8uZmlsZXRpbWUgPSBjdXJsX2dldGRhdGUodGltZWJ1ZiwgJnNlY3MpOworICAgICAgICBkYXRhLT5pbmZvLmZpbGV0aW1lID0gQ3VybF9nZXRkYXRlX2NhcHBlZCh0aW1lYnVmKTsKICAgICAgIH0KIAogI2lmZGVmIENVUkxfRlRQX0hUVFBTVFlMRV9IRUFECkBAIC0yMjYxLDkgKzIyMzcsMjUgQEAKICAgY2hhciAqYnVmID0gZGF0YS0+c3RhdGUuYnVmZmVyOwogCiAgIC8qIGdldCB0aGUgc2l6ZSBmcm9tIHRoZSBhc2NpaSBzdHJpbmc6ICovCi0gIGlmKGZ0cGNvZGUgPT0gMjEzKQorICBpZihmdHBjb2RlID09IDIxMykgeworICAgIC8qIFRvIGFsbG93IHNlcnZlcnMgdG8gcHJlcGVuZCAicnViYmlzaCIgaW4gdGhlIHJlc3BvbnNlIHN0cmluZywgd2Ugc2NhbgorICAgICAgIGZvciBhbGwgdGhlIGRpZ2l0cyBhdCB0aGUgZW5kIG9mIHRoZSByZXNwb25zZSBhbmQgcGFyc2Ugb25seSB0aG9zZSBhcyBhCisgICAgICAgbnVtYmVyLiAqLworICAgIGNoYXIgKnN0YXJ0ID0gJmJ1Zls0XTsKKyAgICBjaGFyICpmZGlnaXQgPSBzdHJjaHIoc3RhcnQsICdccicpOworICAgIGlmKGZkaWdpdCkgeworICAgICAgZG8KKyAgICAgICAgZmRpZ2l0LS07CisgICAgICB3aGlsZShJU0RJR0lUKCpmZGlnaXQpICYmIChmZGlnaXQgPiBzdGFydCkpOworICAgICAgaWYoIUlTRElHSVQoKmZkaWdpdCkpCisgICAgICAgIGZkaWdpdCsrOworICAgIH0KKyAgICBlbHNlCisgICAgICBmZGlnaXQgPSBzdGFydDsKICAgICAvKiBpZ25vcmVzIHBhcnNpbmcgZXJyb3JzLCB3aGljaCB3aWxsIG1ha2UgdGhlIHNpemUgcmVtYWluIHVua25vd24gKi8KLSAgICAodm9pZCljdXJseF9zdHJ0b29mZnQoYnVmICsgNCwgTlVMTCwgMCwgJmZpbGVzaXplKTsKKyAgICAodm9pZCljdXJseF9zdHJ0b29mZnQoZmRpZ2l0LCBOVUxMLCAwLCAmZmlsZXNpemUpOworCisgIH0KIAogICBpZihpbnN0YXRlID09IEZUUF9TSVpFKSB7CiAjaWZkZWYgQ1VSTF9GVFBfSFRUUFNUWUxFX0hFQUQKQEAgLTI1MjcsNyArMjUxOSw2IEBACiB7CiAgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgc3RydWN0IEZUUCAqZnRwID0gZGF0YS0+cmVxLnByb3RvcDsKICAgc3RydWN0IGZ0cF9jb25uICpmdHBjID0gJmNvbm4tPnByb3RvLmZ0cGM7CiAgICh2b2lkKWluc3RhdGU7IC8qIG5vIHVzZSBmb3IgdGhpcyB5ZXQgKi8KIApAQCAtMjUzNSw3ICsyNTI2LDcgQEAKICAgaWYoKGZ0cGNvZGUgPT0gMzMxKSAmJiAoZnRwYy0+c3RhdGUgPT0gRlRQX1VTRVIpKSB7CiAgICAgLyogMzMxIFBhc3N3b3JkIHJlcXVpcmVkIGZvciAuLi4KICAgICAgICAodGhlIHNlcnZlciByZXF1aXJlcyB0byBzZW5kIHRoZSB1c2VyJ3MgcGFzc3dvcmQgdG9vKSAqLwotICAgIFBQU0VOREYoJmZ0cGMtPnBwLCAiUEFTUyAlcyIsIGZ0cC0+cGFzc3dkP2Z0cC0+cGFzc3dkOiIiKTsKKyAgICBQUFNFTkRGKCZmdHBjLT5wcCwgIlBBU1MgJXMiLCBjb25uLT5wYXNzd2Q/Y29ubi0+cGFzc3dkOiIiKTsKICAgICBzdGF0ZShjb25uLCBGVFBfUEFTUyk7CiAgIH0KICAgZWxzZSBpZihmdHBjb2RlLzEwMCA9PSAyKSB7CkBAIC0zMTM0LDcgKzMxMjUsOCBAQAogICBzc2l6ZV90IG5yZWFkOwogICBpbnQgZnRwY29kZTsKICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIGNoYXIgKnBhdGggPSBOVUxMOworICBjaGFyICpyYXdQYXRoID0gTlVMTDsKKyAgc2l6ZV90IHBhdGhMZW4gPSAwOwogCiAgIGlmKCFmdHApCiAgICAgcmV0dXJuIENVUkxFX09LOwpAQCAtMzE3Miw5ICszMTY0LDYgQEAKICAgICBicmVhazsKICAgfQogCi0gIC8qIG5vdyBzdG9yZSBhIGNvcHkgb2YgdGhlIGRpcmVjdG9yeSB3ZSBhcmUgaW4gKi8KLSAgZnJlZShmdHBjLT5wcmV2cGF0aCk7Ci0KICAgaWYoZGF0YS0+c3RhdGUud2lsZGNhcmRtYXRjaCkgewogICAgIGlmKGRhdGEtPnNldC5jaHVua19lbmQgJiYgZnRwYy0+ZmlsZSkgewogICAgICAgQ3VybF9zZXRfaW5fY2FsbGJhY2soZGF0YSwgdHJ1ZSk7CkBAIC0zMTg1LDQxICszMTc0LDQxIEBACiAgIH0KIAogICBpZighcmVzdWx0KQotICAgIC8qIGdldCB0aGUgInJhdyIgcGF0aCAqLwotICAgIHJlc3VsdCA9IEN1cmxfdXJsZGVjb2RlKGRhdGEsIGZ0cC0+cGF0aCwgMCwgJnBhdGgsIE5VTEwsIFRSVUUpOworICAgIC8qIGdldCB0aGUgdXJsLWRlY29kZWQgInJhdyIgcGF0aCAqLworICAgIHJlc3VsdCA9IEN1cmxfdXJsZGVjb2RlKGRhdGEsIGZ0cC0+cGF0aCwgMCwgJnJhd1BhdGgsICZwYXRoTGVuLCBUUlVFKTsKICAgaWYocmVzdWx0KSB7CiAgICAgLyogV2UgY2FuIGxpbXAgYWxvbmcgYW55d2F5IChhbmQgc2hvdWxkIHRyeSB0byBzaW5jZSB3ZSBtYXkgYWxyZWFkeSBiZSBpbgogICAgICAqIHRoZSBlcnJvciBwYXRoKSAqLwogICAgIGZ0cGMtPmN0bF92YWxpZCA9IEZBTFNFOyAvKiBtYXJrIGNvbnRyb2wgY29ubmVjdGlvbiBhcyBiYWQgKi8KICAgICBjb25uY2xvc2UoY29ubiwgIkZUUDogb3V0IG9mIG1lbW9yeSEiKTsgLyogbWFyayBmb3IgY29ubmVjdGlvbiBjbG9zdXJlICovCisgICAgZnJlZShmdHBjLT5wcmV2cGF0aCk7CiAgICAgZnRwYy0+cHJldnBhdGggPSBOVUxMOyAvKiBubyBwYXRoIHJlbWVtYmVyaW5nICovCiAgIH0KLSAgZWxzZSB7Ci0gICAgc2l6ZV90IGZsZW4gPSBmdHBjLT5maWxlP3N0cmxlbihmdHBjLT5maWxlKTowOyAvKiBmaWxlIGlzICJyYXciIGFscmVhZHkgKi8KLSAgICBzaXplX3QgZGxlbiA9IHN0cmxlbihwYXRoKS1mbGVuOwotICAgIGlmKCFmdHBjLT5jd2RmYWlsKSB7Ci0gICAgICBmdHBjLT5wcmV2bWV0aG9kID0gZGF0YS0+c2V0LmZ0cF9maWxlbWV0aG9kOwotICAgICAgaWYoZGxlbiAmJiAoZGF0YS0+c2V0LmZ0cF9maWxlbWV0aG9kICE9IEZUUEZJTEVfTk9DV0QpKSB7Ci0gICAgICAgIGZ0cGMtPnByZXZwYXRoID0gcGF0aDsKLSAgICAgICAgaWYoZmxlbikKLSAgICAgICAgICAvKiBpZiAncGF0aCcgaXMgbm90IHRoZSB3aG9sZSBzdHJpbmcgKi8KLSAgICAgICAgICBmdHBjLT5wcmV2cGF0aFtkbGVuXSA9IDA7IC8qIHRlcm1pbmF0ZSAqLworICBlbHNlIHsgLyogcmVtZW1iZXIgd29ya2luZyBkaXJlY3RvcnkgZm9yIGNvbm5lY3Rpb24gcmV1c2UgKi8KKyAgICBpZigoZGF0YS0+c2V0LmZ0cF9maWxlbWV0aG9kID09IEZUUEZJTEVfTk9DV0QpICYmIChyYXdQYXRoWzBdID09ICcvJykpCisgICAgICBmcmVlKHJhd1BhdGgpOyAvKiBmdWxsIHBhdGggPT4gbm8gQ1dEcyBoYXBwZW5lZCA9PiBrZWVwIGZ0cGMtPnByZXZwYXRoICovCisgICAgZWxzZSB7CisgICAgICBmcmVlKGZ0cGMtPnByZXZwYXRoKTsKKworICAgICAgaWYoIWZ0cGMtPmN3ZGZhaWwpIHsKKyAgICAgICAgaWYoZGF0YS0+c2V0LmZ0cF9maWxlbWV0aG9kID09IEZUUEZJTEVfTk9DV0QpCisgICAgICAgICAgcGF0aExlbiA9IDA7IC8qIHJlbGF0aXZlIHBhdGggPT4gd29ya2luZyBkaXJlY3RvcnkgaXMgRlRQIGhvbWUgKi8KKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhdGhMZW4gLT0gZnRwYy0+ZmlsZT9zdHJsZW4oZnRwYy0+ZmlsZSk6MDsgLyogZmlsZSBpcyB1cmwtZGVjb2RlZCAqLworCisgICAgICAgIHJhd1BhdGhbcGF0aExlbl0gPSAnXDAnOworICAgICAgICBmdHBjLT5wcmV2cGF0aCA9IHJhd1BhdGg7CiAgICAgICB9CiAgICAgICBlbHNlIHsKLSAgICAgICAgZnJlZShwYXRoKTsKLSAgICAgICAgLyogd2UgbmV2ZXIgY2hhbmdlZCBkaXIgKi8KLSAgICAgICAgZnRwYy0+cHJldnBhdGggPSBzdHJkdXAoIiIpOwotICAgICAgICBpZighZnRwYy0+cHJldnBhdGgpCi0gICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgIGZyZWUocmF3UGF0aCk7CisgICAgICAgIGZ0cGMtPnByZXZwYXRoID0gTlVMTDsgLyogbm8gcGF0aCAqLwogICAgICAgfQotICAgICAgaWYoZnRwYy0+cHJldnBhdGgpCi0gICAgICAgIGluZm9mKGRhdGEsICJSZW1lbWJlcmluZyB3ZSBhcmUgaW4gZGlyIFwiJXNcIlxuIiwgZnRwYy0+cHJldnBhdGgpOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIGZ0cGMtPnByZXZwYXRoID0gTlVMTDsgLyogbm8gcGF0aCAqLwotICAgICAgZnJlZShwYXRoKTsKLSAgICB9CisKKyAgICBpZihmdHBjLT5wcmV2cGF0aCkKKyAgICAgIGluZm9mKGRhdGEsICJSZW1lbWJlcmluZyB3ZSBhcmUgaW4gZGlyIFwiJXNcIlxuIiwgZnRwYy0+cHJldnBhdGgpOwogICB9CisKICAgLyogZnJlZSB0aGUgZGlyIHRyZWUgYW5kIGZpbGUgcGFydHMgKi8KICAgZnJlZWRpcnMoZnRwYyk7CiAKQEAgLTM1MzIsMTQgKzM1MjEsMTMgQEAKIAogICAgIC8qIGlmIHdlIGdvdCBhbiBlcnJvciBvciBpZiB3ZSBkb24ndCB3YWl0IGZvciBhIGRhdGEgY29ubmVjdGlvbiByZXR1cm4KICAgICAgICBpbW1lZGlhdGVseSAqLwotICAgIGlmKHJlc3VsdCB8fCAoZnRwYy0+d2FpdF9kYXRhX2Nvbm4gIT0gVFJVRSkpCisgICAgaWYocmVzdWx0IHx8ICFmdHBjLT53YWl0X2RhdGFfY29ubikKICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBpZihmdHBjLT53YWl0X2RhdGFfY29ubikKLSAgICAgIC8qIGlmIHdlIHJlYWNoIHRoZSBlbmQgb2YgdGhlIEZUUCBzdGF0ZSBtYWNoaW5lIGhlcmUsICpjb21wbGV0ZSB3aWxsIGJlCi0gICAgICAgICBUUlVFIGJ1dCBzbyBpcyBmdHBjLT53YWl0X2RhdGFfY29ubiwgd2hpY2ggc2F5cyB3ZSBuZWVkIHRvIHdhaXQgZm9yCi0gICAgICAgICB0aGUgZGF0YSBjb25uZWN0aW9uIGFuZCB0aGVyZWZvcmUgd2UncmUgbm90IGFjdHVhbGx5IGNvbXBsZXRlICovCi0gICAgICAqY29tcGxldGVwID0gMDsKKyAgICAvKiBpZiB3ZSByZWFjaCB0aGUgZW5kIG9mIHRoZSBGVFAgc3RhdGUgbWFjaGluZSBoZXJlLCAqY29tcGxldGUgd2lsbCBiZQorICAgICAgIFRSVUUgYnV0IHNvIGlzIGZ0cGMtPndhaXRfZGF0YV9jb25uLCB3aGljaCBzYXlzIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlCisgICAgICAgZGF0YSBjb25uZWN0aW9uIGFuZCB0aGVyZWZvcmUgd2UncmUgbm90IGFjdHVhbGx5IGNvbXBsZXRlICovCisgICAgKmNvbXBsZXRlcCA9IDA7CiAgIH0KIAogICBpZihmdHAtPnRyYW5zZmVyIDw9IEZUUFRSQU5TRkVSX0lORk8pIHsKQEAgLTM1NzMsMTMgKzM1NjEsOCBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICByZXN1bHQgPSBmdHBfbXVsdGlfc3RhdGVtYWNoKGNvbm4sICZjb21wbGV0ZSk7Ci0gICAgICBpZihmdHBjLT53YWl0X2RhdGFfY29ubikKLSAgICAgICAgLyogaWYgd2UgcmVhY2ggdGhlIGVuZCBvZiB0aGUgRlRQIHN0YXRlIG1hY2hpbmUgaGVyZSwgKmNvbXBsZXRlIHdpbGwgYmUKLSAgICAgICAgICAgVFJVRSBidXQgc28gaXMgZnRwYy0+d2FpdF9kYXRhX2Nvbm4sIHdoaWNoIHNheXMgd2UgbmVlZCB0byB3YWl0IGZvcgotICAgICAgICAgICB0aGUgZGF0YSBjb25uZWN0aW9uIGFuZCB0aGVyZWZvcmUgd2UncmUgbm90IGFjdHVhbGx5IGNvbXBsZXRlICovCi0gICAgICAgICpjb21wbGV0ZXAgPSAwOwotICAgICAgZWxzZQotICAgICAgICAqY29tcGxldGVwID0gKGludCljb21wbGV0ZTsKKyAgICAgIC8qIGZ0cGMtPndhaXRfZGF0YV9jb25uIGlzIGFsd2F5cyBmYWxzZSBoZXJlICovCisgICAgICAqY29tcGxldGVwID0gKGludCljb21wbGV0ZTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAvKiBkb3dubG9hZCAqLwpAQCAtMzYxOSwxMCArMzYwMiw4IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQogCi0gIGlmKCFyZXN1bHQgJiYgKGZ0cC0+dHJhbnNmZXIgIT0gRlRQVFJBTlNGRVJfQk9EWSkpCi0gICAgLyogbm8gZGF0YSB0byB0cmFuc2Zlci4gRklYOiBpdCBmZWVscyBsaWtlIGEga2x1ZGdlIHRvIGhhdmUgdGhpcyBoZXJlCi0gICAgICAgdG9vISAqLwotICAgIEN1cmxfc2V0dXBfdHJhbnNmZXIoZGF0YSwgLTEsIC0xLCBGQUxTRSwgLTEpOworICAvKiBubyBkYXRhIHRvIHRyYW5zZmVyICovCisgIEN1cmxfc2V0dXBfdHJhbnNmZXIoZGF0YSwgLTEsIC0xLCBGQUxTRSwgLTEpOwogCiAgIGlmKCFmdHBjLT53YWl0X2RhdGFfY29ubikgewogICAgIC8qIG5vIHdhaXRpbmcgZm9yIHRoZSBkYXRhIGNvbm5lY3Rpb24gc28gdGhpcyBpcyBub3cgY29tcGxldGUgKi8KQEAgLTQxMDAsMTg2ICs0MDgxLDE0MiBAQAogICAvKiB0aGUgZnRwIHN0cnVjdCBpcyBhbHJlYWR5IGluaXRlZCBpbiBmdHBfY29ubmVjdCgpICovCiAgIHN0cnVjdCBGVFAgKmZ0cCA9IGRhdGEtPnJlcS5wcm90b3A7CiAgIHN0cnVjdCBmdHBfY29ubiAqZnRwYyA9ICZjb25uLT5wcm90by5mdHBjOwotICBjb25zdCBjaGFyICpzbGFzaF9wb3M7ICAvKiBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgJy8nIGNoYXIgaW4gY3VycG9zICovCi0gIGNvbnN0IGNoYXIgKnBhdGhfdG9fdXNlID0gZnRwLT5wYXRoOwotICBjb25zdCBjaGFyICpjdXJfcG9zOwotICBjb25zdCBjaGFyICpmaWxlbmFtZSA9IE5VTEw7Ci0KLSAgY3VyX3BvcyA9IHBhdGhfdG9fdXNlOyAvKiBjdXJyZW50IHBvc2l0aW9uIGluIHBhdGguIHBvaW50IGF0IHRoZSBiZWdpbiBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgcGF0aCBjb21wb25lbnQgKi8KKyAgY29uc3QgY2hhciAqc2xhc2hQb3MgPSBOVUxMOworICBjb25zdCBjaGFyICpmaWxlTmFtZSA9IE5VTEw7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBjaGFyICpyYXdQYXRoID0gTlVMTDsgLyogdXJsLWRlY29kZWQgInJhdyIgcGF0aCAqLworICBzaXplX3QgcGF0aExlbiA9IDA7CiAKICAgZnRwYy0+Y3RsX3ZhbGlkID0gRkFMU0U7CiAgIGZ0cGMtPmN3ZGZhaWwgPSBGQUxTRTsKIAorICAvKiB1cmwtZGVjb2RlIGZ0cCBwYXRoIGJlZm9yZSBmdXJ0aGVyIGV2YWx1YXRpb24gKi8KKyAgcmVzdWx0ID0gQ3VybF91cmxkZWNvZGUoZGF0YSwgZnRwLT5wYXRoLCAwLCAmcmF3UGF0aCwgJnBhdGhMZW4sIFRSVUUpOworICBpZihyZXN1bHQpCisgICAgcmV0dXJuIHJlc3VsdDsKKwogICBzd2l0Y2goZGF0YS0+c2V0LmZ0cF9maWxlbWV0aG9kKSB7Ci0gIGNhc2UgRlRQRklMRV9OT0NXRDoKLSAgICAvKiBmYXN0ZXN0LCBidXQgbGVzcyBzdGFuZGFyZC1jb21wbGlhbnQgKi8KKyAgICBjYXNlIEZUUEZJTEVfTk9DV0Q6IC8qIGZhc3Rlc3QsIGJ1dCBsZXNzIHN0YW5kYXJkLWNvbXBsaWFudCAqLwogCi0gICAgLyoKLSAgICAgIFRoZSBiZXN0IHRpbWUgdG8gY2hlY2sgd2hldGhlciB0aGUgcGF0aCBpcyBhIGZpbGUgb3IgZGlyZWN0b3J5IGlzIHJpZ2h0Ci0gICAgICBoZXJlLiBzbzoKLQotICAgICAgdGhlIGZpcnN0IGNvbmRpdGlvbiBpbiB0aGUgaWYoKSByaWdodCBoZXJlLCBpcyB0aGVyZSBqdXN0IGluIGNhc2UKLSAgICAgIHNvbWVvbmUgZGVjaWRlcyB0byBzZXQgcGF0aCB0byBOVUxMIG9uZSBkYXkKLSAgICovCi0gICAgaWYocGF0aF90b191c2VbMF0gJiYKLSAgICAgICAocGF0aF90b191c2Vbc3RybGVuKHBhdGhfdG9fdXNlKSAtIDFdICE9ICcvJykgKQotICAgICAgZmlsZW5hbWUgPSBwYXRoX3RvX3VzZTsgIC8qIHRoaXMgaXMgYSBmdWxsIGZpbGUgcGF0aCAqLwotICAgIC8qCi0gICAgICBlbHNlIHsKLSAgICAgICAgZnRwYy0+ZmlsZSBpcyBub3QgdXNlZCBhbnl3aGVyZSBvdGhlciB0aGFuIGZvciBvcGVyYXRpb25zIG9uIGEgZmlsZS4KLSAgICAgICAgSW4gb3RoZXIgd29yZHMsIG5ldmVyIGZvciBkaXJlY3Rvcnkgb3BlcmF0aW9ucy4KLSAgICAgICAgU28gd2UgY2FuIHNhZmVseSBsZWF2ZSBmaWxlbmFtZSBhcyBOVUxMIGhlcmUgYW5kIHVzZSBpdCBhcyBhCi0gICAgICAgIGFyZ3VtZW50IGluIGRpci9maWxlIGRlY2lzaW9ucy4KLSAgICAgIH0KLSAgICAqLwotICAgIGJyZWFrOwotCi0gIGNhc2UgRlRQRklMRV9TSU5HTEVDV0Q6Ci0gICAgLyogZ2V0IHRoZSBsYXN0IHNsYXNoICovCi0gICAgaWYoIXBhdGhfdG9fdXNlWzBdKSB7Ci0gICAgICAvKiBubyBkaXIsIG5vIGZpbGUgKi8KLSAgICAgIGZ0cGMtPmRpcmRlcHRoID0gMDsKKyAgICAgIGlmKChwYXRoTGVuID4gMCkgJiYgKHJhd1BhdGhbcGF0aExlbiAtIDFdICE9ICcvJykpCisgICAgICAgICAgZmlsZU5hbWUgPSByYXdQYXRoOyAgLyogdGhpcyBpcyBhIGZ1bGwgZmlsZSBwYXRoICovCisgICAgICAvKgorICAgICAgICBlbHNlOiBmdHBjLT5maWxlIGlzIG5vdCB1c2VkIGFueXdoZXJlIG90aGVyIHRoYW4gZm9yIG9wZXJhdGlvbnMgb24KKyAgICAgICAgICAgICAgYSBmaWxlLiBJbiBvdGhlciB3b3JkcywgbmV2ZXIgZm9yIGRpcmVjdG9yeSBvcGVyYXRpb25zLgorICAgICAgICAgICAgICBTbyB3ZSBjYW4gc2FmZWx5IGxlYXZlIGZpbGVuYW1lIGFzIE5VTEwgaGVyZSBhbmQgdXNlIGl0IGFzIGEKKyAgICAgICAgICAgICAgYXJndW1lbnQgaW4gZGlyL2ZpbGUgZGVjaXNpb25zLgorICAgICAgKi8KICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBzbGFzaF9wb3MgPSBzdHJyY2hyKGN1cl9wb3MsICcvJyk7Ci0gICAgaWYoc2xhc2hfcG9zIHx8ICEqY3VyX3BvcykgewotICAgICAgc2l6ZV90IGRpcmxlbiA9IHNsYXNoX3Bvcy1jdXJfcG9zOwotICAgICAgQ1VSTGNvZGUgcmVzdWx0OwogCi0gICAgICBmdHBjLT5kaXJzID0gY2FsbG9jKDEsIHNpemVvZihmdHBjLT5kaXJzWzBdKSk7Ci0gICAgICBpZighZnRwYy0+ZGlycykKLSAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgY2FzZSBGVFBGSUxFX1NJTkdMRUNXRDoKKyAgICAgIHNsYXNoUG9zID0gc3RycmNocihyYXdQYXRoLCAnLycpOworICAgICAgaWYoc2xhc2hQb3MpIHsKKyAgICAgICAgLyogZ2V0IHBhdGggYmVmb3JlIGxhc3Qgc2xhc2gsIGV4Y2VwdCBmb3IgLyAqLworICAgICAgICBzaXplX3QgZGlybGVuID0gc2xhc2hQb3MgLSByYXdQYXRoOworICAgICAgICBpZihkaXJsZW4gPT0gMCkKKyAgICAgICAgICAgIGRpcmxlbisrOwogCi0gICAgICBpZighZGlybGVuKQotICAgICAgICBkaXJsZW4rKzsKKyAgICAgICAgZnRwYy0+ZGlycyA9IGNhbGxvYygxLCBzaXplb2YoZnRwYy0+ZGlyc1swXSkpOworICAgICAgICBpZighZnRwYy0+ZGlycykgeworICAgICAgICAgIGZyZWUocmF3UGF0aCk7CisgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgIH0KIAotICAgICAgcmVzdWx0ID0gQ3VybF91cmxkZWNvZGUoY29ubi0+ZGF0YSwgc2xhc2hfcG9zID8gY3VyX3BvcyA6ICIvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXNoX3BvcyA/IGRpcmxlbiA6IDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnRwYy0+ZGlyc1swXSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOwotICAgICAgaWYocmVzdWx0KSB7Ci0gICAgICAgIGZyZWVkaXJzKGZ0cGMpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBmdHBjLT5kaXJzWzBdID0gY2FsbG9jKDEsIGRpcmxlbiArIDEpOworICAgICAgICBpZighZnRwYy0+ZGlyc1swXSkgeworICAgICAgICAgIGZyZWUocmF3UGF0aCk7CisgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgIH0KKworICAgICAgICBzdHJuY3B5KGZ0cGMtPmRpcnNbMF0sIHJhd1BhdGgsIGRpcmxlbik7CisgICAgICAgIGZ0cGMtPmRpcmRlcHRoID0gMTsgLyogd2UgY29uc2lkZXIgaXQgdG8gYmUgYSBzaW5nbGUgZGlyICovCisgICAgICAgIGZpbGVOYW1lID0gc2xhc2hQb3MgKyAxOyAvKiByZXN0IGlzIGZpbGUgbmFtZSAqLwogICAgICAgfQotICAgICAgZnRwYy0+ZGlyZGVwdGggPSAxOyAvKiB3ZSBjb25zaWRlciBpdCB0byBiZSBhIHNpbmdsZSBkaXIgKi8KLSAgICAgIGZpbGVuYW1lID0gc2xhc2hfcG9zID8gc2xhc2hfcG9zICsgMSA6IGN1cl9wb3M7IC8qIHJlc3QgaXMgZmlsZSBuYW1lICovCi0gICAgfQotICAgIGVsc2UKLSAgICAgIGZpbGVuYW1lID0gY3VyX3BvczsgIC8qIHRoaXMgaXMgYSBmaWxlIG5hbWUgb25seSAqLwotICAgIGJyZWFrOworICAgICAgZWxzZQorICAgICAgICBmaWxlTmFtZSA9IHJhd1BhdGg7IC8qIGZpbGUgbmFtZSBvbmx5IChvciBlbXB0eSkgKi8KKyAgICAgIGJyZWFrOwogCi0gIGRlZmF1bHQ6IC8qIGFsbG93IHByZXR0eSBtdWNoIGFueXRoaW5nICovCi0gIGNhc2UgRlRQRklMRV9NVUxUSUNXRDoKLSAgICBmdHBjLT5kaXJkZXB0aCA9IDA7Ci0gICAgZnRwYy0+ZGlyYWxsb2MgPSA1OyAvKiBkZWZhdWx0IGRpciBkZXB0aCB0byBhbGxvY2F0ZSAqLwotICAgIGZ0cGMtPmRpcnMgPSBjYWxsb2MoZnRwYy0+ZGlyYWxsb2MsIHNpemVvZihmdHBjLT5kaXJzWzBdKSk7Ci0gICAgaWYoIWZ0cGMtPmRpcnMpCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICBkZWZhdWx0OiAvKiBhbGxvdyBwcmV0dHkgbXVjaCBhbnl0aGluZyAqLworICAgIGNhc2UgRlRQRklMRV9NVUxUSUNXRDogeworICAgICAgLyogY3VycmVudCBwb3NpdGlvbjogYmVnaW4gb2YgbmV4dCBwYXRoIGNvbXBvbmVudCAqLworICAgICAgY29uc3QgY2hhciAqY3VyUG9zID0gcmF3UGF0aDsKIAotICAgIC8qIHdlIGhhdmUgYSBzcGVjaWFsIGNhc2UgZm9yIGxpc3RpbmcgdGhlIHJvb3QgZGlyIG9ubHkgKi8KLSAgICBpZighc3RyY21wKHBhdGhfdG9fdXNlLCAiLyIpKSB7Ci0gICAgICBjdXJfcG9zKys7IC8qIG1ha2UgaXQgcG9pbnQgdG8gdGhlIHplcm8gYnl0ZSAqLwotICAgICAgZnRwYy0+ZGlyc1swXSA9IHN0cmR1cCgiLyIpOwotICAgICAgZnRwYy0+ZGlyZGVwdGgrKzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAvKiBwYXJzZSB0aGUgVVJMIHBhdGggaW50byBzZXBhcmF0ZSBwYXRoIGNvbXBvbmVudHMgKi8KLSAgICAgIHdoaWxlKChzbGFzaF9wb3MgPSBzdHJjaHIoY3VyX3BvcywgJy8nKSkgIT0gTlVMTCkgewotICAgICAgICAvKiAxIG9yIDAgcG9pbnRlciBvZmZzZXQgdG8gaW5kaWNhdGUgYWJzb2x1dGUgZGlyZWN0b3J5ICovCi0gICAgICAgIHNzaXplX3QgYWJzb2x1dGVfZGlyID0gKChjdXJfcG9zIC0gZnRwLT5wYXRoID4gMCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ0cGMtPmRpcmRlcHRoID09IDApKT8xOjA7CisgICAgICBpbnQgZGlyQWxsb2MgPSAwOyAvKiBudW1iZXIgb2YgZW50cmllcyBhbGxvY2F0ZWQgZm9yIHRoZSAnZGlycycgYXJyYXkgKi8KKyAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IHJhd1BhdGg7CisgICAgICBmb3IoOyAqc3RyICE9IDA7ICsrc3RyKQorICAgICAgICBpZiAoKnN0ciA9PSAnLycpCisgICAgICAgICAgKytkaXJBbGxvYzsKIAotICAgICAgICAvKiBzZWVrIG91dCB0aGUgbmV4dCBwYXRoIGNvbXBvbmVudCAqLwotICAgICAgICBpZihzbGFzaF9wb3MtY3VyX3BvcykgeworICAgICAgaWYoZGlyQWxsb2MgPiAwKSB7CisgICAgICAgIGZ0cGMtPmRpcnMgPSBjYWxsb2MoZGlyQWxsb2MsIHNpemVvZihmdHBjLT5kaXJzWzBdKSk7CisgICAgICAgIGlmKCFmdHBjLT5kaXJzKSB7CisgICAgICAgICAgZnJlZShyYXdQYXRoKTsKKyAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHBhcnNlIHRoZSBVUkwgcGF0aCBpbnRvIHNlcGFyYXRlIHBhdGggY29tcG9uZW50cyAqLworICAgICAgICB3aGlsZSgoc2xhc2hQb3MgPSBzdHJjaHIoY3VyUG9zLCAnLycpKSAhPSBOVUxMKSB7CisgICAgICAgICAgc2l6ZV90IGNvbXBMZW4gPSBzbGFzaFBvcyAtIGN1clBvczsKKworICAgICAgICAgIC8qIHBhdGggc3RhcnRzIHdpdGggYSBzbGFzaDogYWRkIHRoYXQgYXMgYSBkaXJlY3RvcnkgKi8KKyAgICAgICAgICBpZigoY29tcExlbiA9PSAwKSAmJiAoZnRwYy0+ZGlyZGVwdGggPT0gMCkpCisgICAgICAgICAgICArK2NvbXBMZW47CisKICAgICAgICAgICAvKiB3ZSBza2lwIGVtcHR5IHBhdGggY29tcG9uZW50cywgbGlrZSAieC8veSIgc2luY2UgdGhlIEZUUCBjb21tYW5kCiAgICAgICAgICAgICAgQ1dEIHJlcXVpcmVzIGEgcGFyYW1ldGVyIGFuZCBhIG5vbi1leGlzdGVudCBwYXJhbWV0ZXIgYSkgZG9lc24ndAogICAgICAgICAgICAgIHdvcmsgb24gbWFueSBzZXJ2ZXJzIGFuZCBiKSBoYXMgbm8gZWZmZWN0IG9uIHRoZSBvdGhlcnMuICovCi0gICAgICAgICAgc2l6ZV90IGxlbiA9IHNsYXNoX3BvcyAtIGN1cl9wb3MgKyBhYnNvbHV0ZV9kaXI7Ci0gICAgICAgICAgQ1VSTGNvZGUgcmVzdWx0ID0KLSAgICAgICAgICAgIEN1cmxfdXJsZGVjb2RlKGNvbm4tPmRhdGEsIGN1cl9wb3MgLSBhYnNvbHV0ZV9kaXIsIGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZmdHBjLT5kaXJzW2Z0cGMtPmRpcmRlcHRoXSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOwotICAgICAgICAgIGlmKHJlc3VsdCkgewotICAgICAgICAgICAgZnJlZWRpcnMoZnRwYyk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBjdXJfcG9zID0gc2xhc2hfcG9zICsgMTsgLyoganVtcCB0byB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nICovCi0gICAgICAgICAgaWYoIWZ0cGMtPmRpcmRlcHRoKSB7Ci0gICAgICAgICAgICAvKiBwYXRoIHN0YXJ0cyB3aXRoIGEgc2xhc2gsIGFkZCB0aGF0IGFzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICBmdHBjLT5kaXJzW2Z0cGMtPmRpcmRlcHRoXSA9IHN0cmR1cCgiLyIpOwotICAgICAgICAgICAgaWYoIWZ0cGMtPmRpcnNbZnRwYy0+ZGlyZGVwdGgrK10pIHsgLyogcnVuIG91dCBvZiBtZW1vcnkgLi4uICovCi0gICAgICAgICAgICAgIGZhaWxmKGRhdGEsICJubyBtZW1vcnkiKTsKLSAgICAgICAgICAgICAgZnJlZWRpcnMoZnRwYyk7CisgICAgICAgICAgaWYoY29tcExlbiA+IDApIHsKKyAgICAgICAgICAgIGNoYXIgKmNvbXAgPSBjYWxsb2MoMSwgY29tcExlbiArIDEpOworICAgICAgICAgICAgaWYoIWNvbXApIHsKKyAgICAgICAgICAgICAgZnJlZShyYXdQYXRoKTsKICAgICAgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBzdHJuY3B5KGNvbXAsIGN1clBvcywgY29tcExlbik7CisgICAgICAgICAgICBmdHBjLT5kaXJzW2Z0cGMtPmRpcmRlcHRoKytdID0gY29tcDsKICAgICAgICAgICB9Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBjdXJfcG9zID0gc2xhc2hfcG9zICsgMTsgLyoganVtcCB0byB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nICovCi0gICAgICAgIGlmKCsrZnRwYy0+ZGlyZGVwdGggPj0gZnRwYy0+ZGlyYWxsb2MpIHsKLSAgICAgICAgICAvKiBlbmxhcmdlIGFycmF5ICovCi0gICAgICAgICAgY2hhciAqKmJpZ2dlcjsKLSAgICAgICAgICBmdHBjLT5kaXJhbGxvYyAqPSAyOyAvKiBkb3VibGUgdGhlIHNpemUgZWFjaCB0aW1lICovCi0gICAgICAgICAgYmlnZ2VyID0gcmVhbGxvYyhmdHBjLT5kaXJzLCBmdHBjLT5kaXJhbGxvYyAqIHNpemVvZihmdHBjLT5kaXJzWzBdKSk7Ci0gICAgICAgICAgaWYoIWJpZ2dlcikgewotICAgICAgICAgICAgZnJlZWRpcnMoZnRwYyk7Ci0gICAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZnRwYy0+ZGlycyA9IGJpZ2dlcjsKKyAgICAgICAgICBjdXJQb3MgPSBzbGFzaFBvcyArIDE7CiAgICAgICAgIH0KICAgICAgIH0KKyAgICAgIERFQlVHQVNTRVJUKGZ0cGMtPmRpcmRlcHRoIDw9IGRpckFsbG9jKTsKKyAgICAgIGZpbGVOYW1lID0gY3VyUG9zOyAvKiB0aGUgcmVzdCBpcyB0aGUgZmlsZSBuYW1lIChvciBlbXB0eSkgKi8KICAgICB9Ci0gICAgZmlsZW5hbWUgPSBjdXJfcG9zOyAgLyogdGhlIHJlc3QgaXMgdGhlIGZpbGUgbmFtZSAqLwogICAgIGJyZWFrOwogICB9IC8qIHN3aXRjaCAqLwogCi0gIGlmKGZpbGVuYW1lICYmICpmaWxlbmFtZSkgewotICAgIENVUkxjb2RlIHJlc3VsdCA9Ci0gICAgICBDdXJsX3VybGRlY29kZShjb25uLT5kYXRhLCBmaWxlbmFtZSwgMCwgICZmdHBjLT5maWxlLCBOVUxMLCBUUlVFKTsKLQotICAgIGlmKHJlc3VsdCkgewotICAgICAgZnJlZWRpcnMoZnRwYyk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgfQorICBpZihmaWxlTmFtZSAmJiAqZmlsZU5hbWUpCisgICAgZnRwYy0+ZmlsZSA9IHN0cmR1cChmaWxlTmFtZSk7CiAgIGVsc2UKLSAgICBmdHBjLT5maWxlID0gTlVMTDsgLyogaW5zdGVhZCBvZiBwb2ludCB0byBhIHplcm8gYnl0ZSwgd2UgbWFrZSBpdCBhIE5VTEwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlciAqLworICAgIGZ0cGMtPmZpbGUgPSBOVUxMOyAvKiBpbnN0ZWFkIG9mIHBvaW50IHRvIGEgemVybyBieXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlIG1ha2UgaXQgYSBOVUxMIHBvaW50ZXIgKi8KIAogICBpZihkYXRhLT5zZXQudXBsb2FkICYmICFmdHBjLT5maWxlICYmIChmdHAtPnRyYW5zZmVyID09IEZUUFRSQU5TRkVSX0JPRFkpKSB7CiAgICAgLyogV2UgbmVlZCBhIGZpbGUgbmFtZSB3aGVuIHVwbG9hZGluZy4gUmV0dXJuIGVycm9yISAqLwogICAgIGZhaWxmKGRhdGEsICJVcGxvYWRpbmcgdG8gYSBVUkwgd2l0aG91dCBhIGZpbGUgbmFtZSEiKTsKKyAgICBmcmVlKHJhd1BhdGgpOwogICAgIHJldHVybiBDVVJMRV9VUkxfTUFMRk9STUFUOwogICB9CiAKICAgZnRwYy0+Y3dkZG9uZSA9IEZBTFNFOyAvKiBkZWZhdWx0IHRvIG5vdCBkb25lICovCiAKLSAgaWYoZnRwYy0+cHJldnBhdGgpIHsKLSAgICAvKiBwcmV2cGF0aCBpcyAicmF3IiBzbyB3ZSBjb252ZXJ0IHRoZSBpbnB1dCBwYXRoIGJlZm9yZSB3ZSBjb21wYXJlIHRoZQotICAgICAgIHN0cmluZ3MgKi8KLSAgICBzaXplX3QgZGxlbjsKLSAgICBjaGFyICpwYXRoOwotICAgIENVUkxjb2RlIHJlc3VsdCA9Ci0gICAgICBDdXJsX3VybGRlY29kZShjb25uLT5kYXRhLCBmdHAtPnBhdGgsIDAsICZwYXRoLCAmZGxlbiwgVFJVRSk7Ci0gICAgaWYocmVzdWx0KSB7Ci0gICAgICBmcmVlZGlycyhmdHBjKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICBpZigoZGF0YS0+c2V0LmZ0cF9maWxlbWV0aG9kID09IEZUUEZJTEVfTk9DV0QpICYmIChyYXdQYXRoWzBdID09ICcvJykpCisgICAgZnRwYy0+Y3dkZG9uZSA9IFRSVUU7IC8qIHNraXAgQ1dEIGZvciBhYnNvbHV0ZSBwYXRocyAqLworICBlbHNlIHsgLyogbmV3bHkgY3JlYXRlZCBGVFAgY29ubmVjdGlvbnMgYXJlIGFscmVhZHkgaW4gZW50cnkgcGF0aCAqLworICAgIGNvbnN0IGNoYXIgKm9sZFBhdGggPSBjb25uLT5iaXRzLnJldXNlID8gZnRwYy0+cHJldnBhdGggOiAiIjsKKyAgICBpZihvbGRQYXRoKSB7CisgICAgICBzaXplX3QgbiA9IHBhdGhMZW47CisgICAgICBpZihkYXRhLT5zZXQuZnRwX2ZpbGVtZXRob2QgPT0gRlRQRklMRV9OT0NXRCkKKyAgICAgICAgbiA9IDA7IC8qIENXRCB0byBlbnRyeSBmb3IgcmVsYXRpdmUgcGF0aHMgKi8KKyAgICAgIGVsc2UKKyAgICAgICAgbiAtPSBmdHBjLT5maWxlP3N0cmxlbihmdHBjLT5maWxlKTowOwogCi0gICAgZGxlbiAtPSBmdHBjLT5maWxlP3N0cmxlbihmdHBjLT5maWxlKTowOwotICAgIGlmKChkbGVuID09IHN0cmxlbihmdHBjLT5wcmV2cGF0aCkpICYmCi0gICAgICAgIXN0cm5jbXAocGF0aCwgZnRwYy0+cHJldnBhdGgsIGRsZW4pICYmCi0gICAgICAgKGZ0cGMtPnByZXZtZXRob2QgPT0gZGF0YS0+c2V0LmZ0cF9maWxlbWV0aG9kKSkgewotICAgICAgaW5mb2YoZGF0YSwgIlJlcXVlc3QgaGFzIHNhbWUgcGF0aCBhcyBwcmV2aW91cyB0cmFuc2ZlclxuIik7Ci0gICAgICBmdHBjLT5jd2Rkb25lID0gVFJVRTsKKyAgICAgIGlmKChzdHJsZW4ob2xkUGF0aCkgPT0gbikgJiYgIXN0cm5jbXAocmF3UGF0aCwgb2xkUGF0aCwgbikpIHsKKyAgICAgICAgaW5mb2YoZGF0YSwgIlJlcXVlc3QgaGFzIHNhbWUgcGF0aCBhcyBwcmV2aW91cyB0cmFuc2ZlclxuIik7CisgICAgICAgIGZ0cGMtPmN3ZGRvbmUgPSBUUlVFOworICAgICAgfQogICAgIH0KLSAgICBmcmVlKHBhdGgpOwogICB9CiAKKyAgZnJlZShyYXdQYXRoKTsKICAgcmV0dXJuIENVUkxFX09LOwogfQogCkBAIC00NDIzLDE4ICs0MzYwLDYgQEAKICAgLyogZ2V0IHNvbWUgaW5pdGlhbCBkYXRhIGludG8gdGhlIGZ0cCBzdHJ1Y3QgKi8KICAgZnRwLT50cmFuc2ZlciA9IEZUUFRSQU5TRkVSX0JPRFk7CiAgIGZ0cC0+ZG93bmxvYWRzaXplID0gMDsKLQotICAvKiBObyBuZWVkIHRvIGR1cGxpY2F0ZSB1c2VyK3Bhc3N3b3JkLCB0aGUgY29ubmVjdGRhdGEgc3RydWN0IHdvbid0IGNoYW5nZQotICAgICBkdXJpbmcgYSBzZXNzaW9uLCBidXQgd2UgcmUtaW5pdCB0aGVtIGhlcmUgc2luY2Ugb24gc3Vic2VxdWVudCBpbml0cwotICAgICBzaW5jZSB0aGUgY29ubiBzdHJ1Y3QgbWF5IGhhdmUgY2hhbmdlZCBvciBiZWVuIHJlcGxhY2VkLgotICAqLwotICBmdHAtPnVzZXIgPSBjb25uLT51c2VyOwotICBmdHAtPnBhc3N3ZCA9IGNvbm4tPnBhc3N3ZDsKLSAgaWYoaXNCYWRGdHBTdHJpbmcoZnRwLT51c2VyKSkKLSAgICByZXR1cm4gQ1VSTEVfVVJMX01BTEZPUk1BVDsKLSAgaWYoaXNCYWRGdHBTdHJpbmcoZnRwLT5wYXNzd2QpKQotICAgIHJldHVybiBDVVJMRV9VUkxfTUFMRk9STUFUOwotCiAgIGNvbm4tPnByb3RvLmZ0cGMua25vd25fZmlsZXNpemUgPSAtMTsgLyogdW5rbm93biBzaXplIGZvciBub3cgKi8KIAogICByZXR1cm4gQ1VSTEVfT0s7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9mdHAuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2Z0cC5oCmluZGV4IDgyOGQ2OWEuLjk4NDM0N2YgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2Z0cC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2Z0cC5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0xMDIsOCArMTAyLDYgQEAKICAgIHBlcmhhcHMgdGhlIEN1cmxfZWFzeSBpcyBjaGFuZ2VkIGJldHdlZW4gdGhlIHRpbWVzIHRoZSBjb25uZWN0aW9uIGlzCiAgICB1c2VkLiAqLwogc3RydWN0IEZUUCB7Ci0gIGNoYXIgKnVzZXI7ICAgIC8qIHVzZXIgbmFtZSBzdHJpbmcgKi8KLSAgY2hhciAqcGFzc3dkOyAgLyogcGFzc3dvcmQgc3RyaW5nICovCiAgIGNoYXIgKnBhdGg7ICAgIC8qIHBvaW50cyB0byB0aGUgdXJscGllY2VzIHN0cnVjdCBmaWVsZCAqLwogICBjaGFyICpwYXRoYWxsb2M7IC8qIGlmIG5vbi1OVUxMIGEgcG9pbnRlciB0byBhbiBhbGxvY2F0ZWQgcGF0aCAqLwogCkBAIC0xMjEsOCArMTE5LDcgQEAKICAgY2hhciAqZW50cnlwYXRoOyAvKiB0aGUgUFdEIHJlcGx5IHdoZW4gd2UgbG9nZ2VkIG9uICovCiAgIGNoYXIgKipkaXJzOyAgIC8qIHJlYWxsb2MoKWVkIGFycmF5IGZvciBwYXRoIGNvbXBvbmVudHMgKi8KICAgaW50IGRpcmRlcHRoOyAgLyogbnVtYmVyIG9mIGVudHJpZXMgdXNlZCBpbiB0aGUgJ2RpcnMnIGFycmF5ICovCi0gIGludCBkaXJhbGxvYzsgIC8qIG51bWJlciBvZiBlbnRyaWVzIGFsbG9jYXRlZCBmb3IgdGhlICdkaXJzJyBhcnJheSAqLwotICBjaGFyICpmaWxlOyAgICAvKiBkZWNvZGVkIGZpbGUgKi8KKyAgY2hhciAqZmlsZTsgICAgLyogdXJsLWRlY29kZWQgZmlsZSBuYW1lIChvciBwYXRoKSAqLwogICBib29sIGRvbnRfY2hlY2s7ICAvKiBTZXQgdG8gVFJVRSB0byBwcmV2ZW50IHRoZSBmaW5hbCAocG9zdC10cmFuc2ZlcikKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBzaXplIGFuZCAyMjYvMjUwIHN0YXR1cyBjaGVjay4gSXQgc2hvdWxkIHN0aWxsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQgdGhlIGxpbmUsIGp1c3QgaWdub3JlIHRoZSByZXN1bHQuICovCkBAIC0xMzUsOCArMTMyLDcgQEAKICAgYm9vbCBjd2RmYWlsOyAgICAgLyogc2V0IFRSVUUgaWYgYSBDV0QgY29tbWFuZCBmYWlscywgYXMgdGhlbiB3ZSBtdXN0IHByZXZlbnQKICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGluZyB0aGUgY3VycmVudCBkaXJlY3RvcnkgKi8KICAgYm9vbCB3YWl0X2RhdGFfY29ubjsgLyogdGhpcyBpcyBzZXQgVFJVRSBpZiBkYXRhIGNvbm5lY3Rpb24gaXMgd2FpdGVkICovCi0gIGNoYXIgKnByZXZwYXRoOyAgIC8qIGNvbm4tPnBhdGggZnJvbSB0aGUgcHJldmlvdXMgdHJhbnNmZXIgKi8KLSAgY3VybF9mdHBmaWxlIHByZXZtZXRob2Q7IC8qIGZ0cCBtZXRob2QgaW4gcHJldmlvdXMgdHJhbnNmZXIgICovCisgIGNoYXIgKnByZXZwYXRoOyAgIC8qIHVybC1kZWNvZGVkIGNvbm4tPnBhdGggZnJvbSB0aGUgcHJldmlvdXMgdHJhbnNmZXIgKi8KICAgY2hhciB0cmFuc2ZlcnR5cGU7IC8qIHNldCBieSBmdHBfdHJhbnNmZXJ0eXBlIGZvciB1c2UgYnkgQ3VybF9jbGllbnRfd3JpdGUoKWEKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvdGhlcnMgKEEvSSBvciB6ZXJvKSAqLwogICBpbnQgY291bnQxOyAvKiBnZW5lcmFsIHB1cnBvc2UgY291bnRlciBmb3IgdGhlIHN0YXRlIG1hY2hpbmUgKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2Z0cGxpc3RwYXJzZXIuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2Z0cGxpc3RwYXJzZXIuYwppbmRleCBjNGViNDM3Li5mMzk5YTRjIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9mdHBsaXN0cGFyc2VyLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvZnRwbGlzdHBhcnNlci5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTgsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9mdHBsaXN0cGFyc2VyLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9mdHBsaXN0cGFyc2VyLmgKaW5kZXggODEyODg4Ny4uYjM0YWU5YiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZnRwbGlzdHBhcnNlci5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2Z0cGxpc3RwYXJzZXIuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZ2V0ZW52LmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9nZXRlbnYuYwppbmRleCA4OWQxODFkLi45Mzg1YjhmIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9nZXRlbnYuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9nZXRlbnYuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMjcsMjUgKzI3LDQ4IEBACiAKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCi1zdGF0aWMKLWNoYXIgKkdldEVudihjb25zdCBjaGFyICp2YXJpYWJsZSkKK3N0YXRpYyBjaGFyICpHZXRFbnYoY29uc3QgY2hhciAqdmFyaWFibGUpCiB7CiAjaWYgZGVmaW5lZChfV0lOMzJfV0NFKSB8fCBkZWZpbmVkKENVUkxfV0lORE9XU19BUFApCiAgICh2b2lkKXZhcmlhYmxlOwogICByZXR1cm4gTlVMTDsKLSNlbHNlCi0jaWZkZWYgV0lOMzIKLSAgY2hhciBlbnZbTUFYX1BBVEhdOyAvKiBNQVhfUEFUSCBpcyBmcm9tIHdpbmRlZi5oICovCi0gIGNoYXIgKnRlbXAgPSBnZXRlbnYodmFyaWFibGUpOwotICBlbnZbMF0gPSAnXDAnOwotICBpZih0ZW1wICE9IE5VTEwpCi0gICAgRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzQSh0ZW1wLCBlbnYsIHNpemVvZihlbnYpKTsKLSAgcmV0dXJuIChlbnZbMF0gIT0gJ1wwJyk/c3RyZHVwKGVudik6TlVMTDsKKyNlbGlmIGRlZmluZWQoV0lOMzIpCisgIC8qIFRoaXMgdXNlcyBXaW5kb3dzIEFQSSBpbnN0ZWFkIG9mIEMgcnVudGltZSBnZXRlbnYoKSB0byBnZXQgdGhlIGVudmlyb25tZW50CisgICAgIHZhcmlhYmxlIHNpbmNlIHNvbWUgY2hhbmdlcyBhcmVuJ3QgYWx3YXlzIHZpc2libGUgdG8gdGhlIGxhdHRlci4gIzQ3NzQgKi8KKyAgY2hhciAqYnVmID0gTlVMTDsKKyAgY2hhciAqdG1wOworICBEV09SRCBidWZzaXplOworICBEV09SRCByYyA9IDE7CisgIGNvbnN0IERXT1JEIG1heCA9IDMyNzY4OyAvKiBtYXggZW52IHZhciBzaXplIGZyb20gTVNDUlQgc291cmNlICovCisKKyAgZm9yKDs7KSB7CisgICAgdG1wID0gcmVhbGxvYyhidWYsIHJjKTsKKyAgICBpZighdG1wKSB7CisgICAgICBmcmVlKGJ1Zik7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBidWYgPSB0bXA7CisgICAgYnVmc2l6ZSA9IHJjOworCisgICAgLyogSXQncyBwb3NzaWJsZSBmb3IgcmMgdG8gYmUgMCBpZiB0aGUgdmFyaWFibGUgd2FzIGZvdW5kIGJ1dCBlbXB0eS4KKyAgICAgICBTaW5jZSBnZXRlbnYgZG9lc24ndCBtYWtlIHRoYXQgZGlzdGluY3Rpb24gd2UgaWdub3JlIGl0IGFzIHdlbGwuICovCisgICAgcmMgPSBHZXRFbnZpcm9ubWVudFZhcmlhYmxlQSh2YXJpYWJsZSwgYnVmLCBidWZzaXplKTsKKyAgICBpZighcmMgfHwgcmMgPT0gYnVmc2l6ZSB8fCByYyA+IG1heCkgeworICAgICAgZnJlZShidWYpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogaWYgcmMgPCBidWZzaXplIHRoZW4gcmMgaXMgYnl0ZXMgd3JpdHRlbiBub3QgaW5jbHVkaW5nIG51bGwgKi8KKyAgICBpZihyYyA8IGJ1ZnNpemUpCisgICAgICByZXR1cm4gYnVmOworCisgICAgLyogZWxzZSByYyBpcyBieXRlcyBuZWVkZWQsIHRyeSBhZ2FpbiAqLworICB9CiAjZWxzZQogICBjaGFyICplbnYgPSBnZXRlbnYodmFyaWFibGUpOwogICByZXR1cm4gKGVudiAmJiBlbnZbMF0pP3N0cmR1cChlbnYpOk5VTEw7CiAjZW5kaWYKLSNlbmRpZgogfQogCiBjaGFyICpjdXJsX2dldGVudihjb25zdCBjaGFyICp2KQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZ2V0aW5mby5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvZ2V0aW5mby5jCmluZGV4IGUxMThkYTguLjJiOGYyMzAgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2dldGluZm8uYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9nZXRpbmZvLmMKQEAgLTIzNSw2ICsyMzUsOSBAQAogICAgIGNhc2UgMjA6CiAgICAgICAqcGFyYW1fbG9uZ3AgPSBDVVJMX0hUVFBfVkVSU0lPTl8yXzA7CiAgICAgICBicmVhazsKKyAgICBjYXNlIDMwOgorICAgICAgKnBhcmFtX2xvbmdwID0gQ1VSTF9IVFRQX1ZFUlNJT05fMzsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAqcGFyYW1fbG9uZ3AgPSBDVVJMX0hUVFBfVkVSU0lPTl9OT05FOwogICAgICAgYnJlYWs7CkBAIC0yNDMsNyArMjQ2LDYgQEAKICAgY2FzZSBDVVJMSU5GT19QUk9UT0NPTDoKICAgICAqcGFyYW1fbG9uZ3AgPSBkYXRhLT5pbmZvLmNvbm5fcHJvdG9jb2w7CiAgICAgYnJlYWs7Ci0KICAgZGVmYXVsdDoKICAgICByZXR1cm4gQ1VSTEVfVU5LTk9XTl9PUFRJT047CiAgIH0KQEAgLTMwMSw3ICszMDMsOSBAQAogICBjYXNlIENVUkxJTkZPX1JFRElSRUNUX1RJTUVfVDoKICAgICAqcGFyYW1fb2ZmdCA9IGRhdGEtPnByb2dyZXNzLnRfcmVkaXJlY3Q7CiAgICAgYnJlYWs7Ci0KKyAgY2FzZSBDVVJMSU5GT19SRVRSWV9BRlRFUjoKKyAgICAqcGFyYW1fb2ZmdCA9IGRhdGEtPmluZm8ucmV0cnlfYWZ0ZXI7CisgICAgYnJlYWs7CiAgIGRlZmF1bHQ6CiAgICAgcmV0dXJuIENVUkxFX1VOS05PV05fT1BUSU9OOwogICB9CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9nZXRpbmZvLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9nZXRpbmZvLmgKaW5kZXggYWVjZjcxNy4uOGQyYWY0MiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZ2V0aW5mby5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2dldGluZm8uaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvZ29waGVyLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9nb3BoZXIuaAppbmRleCA1MDFjOTkwLi5kZWMyNTU3IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9nb3BoZXIuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9nb3BoZXIuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDA5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaGFzaC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaGFzaC5oCmluZGV4IDkwYTI1ZDEuLjU1OGQwZjQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2hhc2guaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9oYXNoLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTgwLDcgKzgwLDcgQEAKIHZvaWQgKkN1cmxfaGFzaF9waWNrKHN0cnVjdCBjdXJsX2hhc2ggKiwgdm9pZCAqa2V5LCBzaXplX3Qga2V5X2xlbik7CiB2b2lkIEN1cmxfaGFzaF9hcHBseShzdHJ1Y3QgY3VybF9oYXNoICpoLCB2b2lkICp1c2VyLAogICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmNiKSh2b2lkICp1c2VyLCB2b2lkICpwdHIpKTsKLWludCBDdXJsX2hhc2hfY291bnQoc3RydWN0IGN1cmxfaGFzaCAqaCk7CisjZGVmaW5lIEN1cmxfaGFzaF9jb3VudChoKSAoKGgpLT5zaXplKQogdm9pZCBDdXJsX2hhc2hfZGVzdHJveShzdHJ1Y3QgY3VybF9oYXNoICpoKTsKIHZvaWQgQ3VybF9oYXNoX2NsZWFuKHN0cnVjdCBjdXJsX2hhc2ggKmgpOwogdm9pZCBDdXJsX2hhc2hfY2xlYW5fd2l0aF9jcml0ZXJpdW0oc3RydWN0IGN1cmxfaGFzaCAqaCwgdm9pZCAqdXNlciwKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2htYWMuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2htYWMuYwppbmRleCBiZjQ5ZWJlLi5hZTY4ODI3IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9obWFjLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaG1hYy5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTgsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJjdXJsX2htYWMuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIndhcm5sZXNzLmgiCiAKIC8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCkBAIC0xMjksNCArMTMwLDQwIEBACiAgIHJldHVybiAwOwogfQogCisvKgorICogQ3VybF9obWFjaXQoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIEhNQUMgaGFzaCwgZm9yIHRoZSBzcGVjaWZpZWQgaW5wdXQgZGF0YSwgZ2l2ZW4KKyAqIHRoZSBzcGVjaWZpZWQgaGFzaCBmdW5jdGlvbiBhbmQga2V5LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogaGFzaHBhcmFtcyBbaW5dICAgICAtIFRoZSBoYXNoIGZ1bmN0aW9uIChDdXJsX0hNQUNfTUQ1KS4KKyAqIGtleSAgICAgICAgW2luXSAgICAgLSBUaGUga2V5IHRvIHVzZS4KKyAqIGtleWxlbiAgICAgW2luXSAgICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBrZXkuCisgKiBkYXRhICAgICAgIFtpbl0gICAgIC0gVGhlIGRhdGEgdG8gZW5jcnlwdC4KKyAqIGRhdGFsZW4gICAgW2luXSAgICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBkYXRhLgorICogb3V0cHV0ICAgICBbaW4vb3V0XSAtIFRoZSBvdXRwdXQgYnVmZmVyLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9obWFjaXQoY29uc3QgSE1BQ19wYXJhbXMgKmhhc2hwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksIGNvbnN0IHNpemVfdCBrZXlsZW4sCisgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBjb25zdCBzaXplX3QgZGF0YWxlbiwKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dHB1dCkKK3sKKyAgSE1BQ19jb250ZXh0ICpjdHh0ID0gQ3VybF9ITUFDX2luaXQoaGFzaHBhcmFtcywga2V5LCBjdXJseF91enRvdWkoa2V5bGVuKSk7CisKKyAgaWYoIWN0eHQpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgLyogVXBkYXRlIHRoZSBkaWdlc3Qgd2l0aCB0aGUgZ2l2ZW4gY2hhbGxlbmdlICovCisgIEN1cmxfSE1BQ191cGRhdGUoY3R4dCwgZGF0YSwgY3VybHhfdXp0b3VpKGRhdGFsZW4pKTsKKworICAvKiBGaW5hbGlzZSB0aGUgZGlnZXN0ICovCisgIEN1cmxfSE1BQ19maW5hbChjdHh0LCBvdXRwdXQpOworCisgIHJldHVybiBDVVJMRV9PSzsKK30KKwogI2VuZGlmIC8qIENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaG9zdGNoZWNrLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0Y2hlY2suYwppbmRleCAxMTVkMjRiLi45ZTBkYjA1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0Y2hlY2suYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0Y2hlY2suYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE4LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaG9zdGNoZWNrLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0Y2hlY2suaAppbmRleCBmNTYyZGY5Li45YzE4MDg1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0Y2hlY2suaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0Y2hlY2suaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaG9zdGlwLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0aXAuYwppbmRleCBjZjMzZWQ4Li5jMGZlYjc5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0aXAuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0aXAuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgInN0cmVycm9yLmgiCiAjaW5jbHVkZSAidXJsLmgiCiAjaW5jbHVkZSAiaW5ldF9udG9wLmgiCisjaW5jbHVkZSAiaW5ldF9wdG9uLmgiCiAjaW5jbHVkZSAibXVsdGlpZi5oIgogI2luY2x1ZGUgImRvaC5oIgogI2luY2x1ZGUgIndhcm5sZXNzLmgiCkBAIC00ODIsMTYgKzQ4MywxNiBAQAogICogQ1VSTFJFU09MVl9QRU5ESU5HICAoMSkgPSB3YWl0aW5nIGZvciByZXNwb25zZSwgbm8gcG9pbnRlcgogICovCiAKLWludCBDdXJsX3Jlc29sdihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdG5hbWUsCi0gICAgICAgICAgICAgICAgaW50IHBvcnQsCi0gICAgICAgICAgICAgICAgYm9vbCBhbGxvd0RPSCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3QgQ3VybF9kbnNfZW50cnkgKiplbnRyeSkKK2VudW0gcmVzb2x2ZV90IEN1cmxfcmVzb2x2KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFsbG93RE9ILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEN1cmxfZG5zX2VudHJ5ICoqZW50cnkpCiB7CiAgIHN0cnVjdCBDdXJsX2Ruc19lbnRyeSAqZG5zID0gTlVMTDsKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIENVUkxjb2RlIHJlc3VsdDsKLSAgaW50IHJjID0gQ1VSTFJFU09MVl9FUlJPUjsgLyogZGVmYXVsdCB0byBmYWlsdXJlICovCisgIGVudW0gcmVzb2x2ZV90IHJjID0gQ1VSTFJFU09MVl9FUlJPUjsgLyogZGVmYXVsdCB0byBmYWlsdXJlICovCiAKICAgKmVudHJ5ID0gTlVMTDsKIApAQCAtNTEyLDEzICs1MTMsMTEgQEAKICAgaWYoIWRucykgewogICAgIC8qIFRoZSBlbnRyeSB3YXMgbm90IGluIHRoZSBjYWNoZS4gUmVzb2x2ZSBpdCB0byBJUCBhZGRyZXNzICovCiAKLSAgICBDdXJsX2FkZHJpbmZvICphZGRyOworICAgIEN1cmxfYWRkcmluZm8gKmFkZHIgPSBOVUxMOwogICAgIGludCByZXNwd2FpdCA9IDA7Ci0KLSAgICAvKiBDaGVjayB3aGF0IElQIHNwZWNpZmljcyB0aGUgYXBwIGhhcyByZXF1ZXN0ZWQgYW5kIGlmIHdlIGNhbiBwcm92aWRlIGl0LgotICAgICAqIElmIG5vdCwgYmFpbCBvdXQuICovCi0gICAgaWYoIUN1cmxfaXB2YWxpZChjb25uKSkKLSAgICAgIHJldHVybiBDVVJMUkVTT0xWX0VSUk9SOworI2lmbmRlZiBVU0VfUkVTT0xWRV9PTl9JUFMKKyAgICBzdHJ1Y3QgaW5fYWRkciBpbjsKKyNlbmRpZgogCiAgICAgLyogbm90aWZ5IHRoZSByZXNvbHZlciBzdGFydCBjYWxsYmFjayAqLwogICAgIGlmKGRhdGEtPnNldC5yZXNvbHZlcl9zdGFydCkgewpAQCAtNTMxLDIwICs1MzAsNDMgQEAKICAgICAgICAgcmV0dXJuIENVUkxSRVNPTFZfRVJST1I7CiAgICAgfQogCi0gICAgaWYoYWxsb3dET0ggJiYgZGF0YS0+c2V0LmRvaCkgewotICAgICAgYWRkciA9IEN1cmxfZG9oKGNvbm4sIGhvc3RuYW1lLCBwb3J0LCAmcmVzcHdhaXQpOworI2lmbmRlZiBVU0VfUkVTT0xWRV9PTl9JUFMKKyAgICAvKiBGaXJzdCBjaGVjayBpZiB0aGlzIGlzIGFuIElQdjQgYWRkcmVzcyBzdHJpbmcgKi8KKyAgICBpZihDdXJsX2luZXRfcHRvbihBRl9JTkVULCBob3N0bmFtZSwgJmluKSA+IDApCisgICAgICAvKiBUaGlzIGlzIGEgZG90dGVkIElQIGFkZHJlc3MgMTIzLjEyMy4xMjMuMTIzLXN0eWxlICovCisgICAgICBhZGRyID0gQ3VybF9pcDJhZGRyKEFGX0lORVQsICZpbiwgaG9zdG5hbWUsIHBvcnQpOworI2lmZGVmIEVOQUJMRV9JUFY2CisgICAgaWYoIWFkZHIpIHsKKyAgICAgIHN0cnVjdCBpbjZfYWRkciBpbjY7CisgICAgICAvKiBjaGVjayBpZiB0aGlzIGlzIGFuIElQdjYgYWRkcmVzcyBzdHJpbmcgKi8KKyAgICAgIGlmKEN1cmxfaW5ldF9wdG9uKEFGX0lORVQ2LCBob3N0bmFtZSwgJmluNikgPiAwKQorICAgICAgICAvKiBUaGlzIGlzIGFuIElQdjYgYWRkcmVzcyBsaXRlcmFsICovCisgICAgICAgIGFkZHIgPSBDdXJsX2lwMmFkZHIoQUZfSU5FVDYsICZpbjYsIGhvc3RuYW1lLCBwb3J0KTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAvKiBJZiBDdXJsX2dldGFkZHJpbmZvKCkgcmV0dXJucyBOVUxMLCAncmVzcHdhaXQnIG1pZ2h0IGJlIHNldCB0byBhCi0gICAgICAgICBub24temVybyB2YWx1ZSBpbmRpY2F0aW5nIHRoYXQgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgcmVzcG9uc2UgdG8gdGhlCi0gICAgICAgICByZXNvbHZlIGNhbGwgKi8KLSAgICAgIGFkZHIgPSBDdXJsX2dldGFkZHJpbmZvKGNvbm4sCisjZW5kaWYgLyogRU5BQkxFX0lQVjYgKi8KKyNlbmRpZiAvKiAhVVNFX1JFU09MVkVfT05fSVBTICovCisKKyAgICBpZighYWRkcikgeworICAgICAgLyogQ2hlY2sgd2hhdCBJUCBzcGVjaWZpY3MgdGhlIGFwcCBoYXMgcmVxdWVzdGVkIGFuZCBpZiB3ZSBjYW4gcHJvdmlkZQorICAgICAgICogaXQuIElmIG5vdCwgYmFpbCBvdXQuICovCisgICAgICBpZighQ3VybF9pcHZhbGlkKGNvbm4pKQorICAgICAgICByZXR1cm4gQ1VSTFJFU09MVl9FUlJPUjsKKworICAgICAgaWYoYWxsb3dET0ggJiYgZGF0YS0+c2V0LmRvaCkgeworICAgICAgICBhZGRyID0gQ3VybF9kb2goY29ubiwgaG9zdG5hbWUsIHBvcnQsICZyZXNwd2FpdCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgLyogSWYgQ3VybF9nZXRhZGRyaW5mbygpIHJldHVybnMgTlVMTCwgJ3Jlc3B3YWl0JyBtaWdodCBiZSBzZXQgdG8gYQorICAgICAgICAgICBub24temVybyB2YWx1ZSBpbmRpY2F0aW5nIHRoYXQgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgcmVzcG9uc2UgdG8KKyAgICAgICAgICAgdGhlIHJlc29sdmUgY2FsbCAqLworICAgICAgICBhZGRyID0gQ3VybF9nZXRhZGRyaW5mbyhjb25uLAogI2lmZGVmIERFQlVHQlVJTEQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhLT5zZXQuc3RyW1NUUklOR19ERVZJQ0VdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXN0cmNtcChkYXRhLT5zZXQuc3RyW1NUUklOR19ERVZJQ0VdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxvY2FsSG9zdCIpKT8ibG9jYWxob3N0IjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGEtPnNldC5zdHJbU1RSSU5HX0RFVklDRV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFzdHJjbXAoZGF0YS0+c2V0LnN0cltTVFJJTkdfREVWSUNFXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxvY2FsSG9zdCIpKT8ibG9jYWxob3N0IjoKICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdG5hbWUsIHBvcnQsICZyZXNwd2FpdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RuYW1lLCBwb3J0LCAmcmVzcHdhaXQpOworICAgICAgfQogICAgIH0KICAgICBpZighYWRkcikgewogICAgICAgaWYocmVzcHdhaXQpIHsKQEAgLTYyMCwxMSArNjQyLDExIEBACiAgKiBDVVJMUkVTT0xWX1BFTkRJTkcgICgxKSA9IHdhaXRpbmcgZm9yIHJlc3BvbnNlLCBubyBwb2ludGVyCiAgKi8KIAotaW50IEN1cmxfcmVzb2x2X3RpbWVvdXQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDdXJsX2Ruc19lbnRyeSAqKmVudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZV90IHRpbWVvdXRtcykKK2VudW0gcmVzb2x2ZV90IEN1cmxfcmVzb2x2X3RpbWVvdXQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDdXJsX2Ruc19lbnRyeSAqKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lZGlmZl90IHRpbWVvdXRtcykKIHsKICNpZmRlZiBVU0VfQUxBUk1fVElNRU9VVAogI2lmZGVmIEhBVkVfU0lHQUNUSU9OCkBAIC02NDAsNyArNjYyLDcgQEAKICAgdm9sYXRpbGUgdW5zaWduZWQgaW50IHByZXZfYWxhcm0gPSAwOwogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKICNlbmRpZiAvKiBVU0VfQUxBUk1fVElNRU9VVCAqLwotICBpbnQgcmM7CisgIGVudW0gcmVzb2x2ZV90IHJjOwogCiAgICplbnRyeSA9IE5VTEw7CiAKQEAgLTc0OSw3ICs3NzEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5jcmVhdGVkKSAvIDEwMDA7CiAKICAgICAvKiB0aGUgYWxhcm0gcGVyaW9kIGlzIGNvdW50ZWQgaW4gZXZlbiBudW1iZXIgb2Ygc2Vjb25kcyAqLwotICAgIHVuc2lnbmVkIGxvbmcgYWxhcm1fc2V0ID0gcHJldl9hbGFybSAtIGVsYXBzZWRfc2VjczsKKyAgICB1bnNpZ25lZCBsb25nIGFsYXJtX3NldCA9ICh1bnNpZ25lZCBsb25nKShwcmV2X2FsYXJtIC0gZWxhcHNlZF9zZWNzKTsKIAogICAgIGlmKCFhbGFybV9zZXQgfHwKICAgICAgICAoKGFsYXJtX3NldCA+PSAweDgwMDAwMDAwKSAmJiAocHJldl9hbGFybSA8IDB4ODAwMDAwMDApKSApIHsKQEAgLTEwMjEsMjUgKzEwNDMsMjcgQEAKIENVUkxjb2RlIEN1cmxfcmVzb2x2X2NoZWNrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDdXJsX2Ruc19lbnRyeSAqKmRucykKIHsKKyNpZiBkZWZpbmVkKENVUkxfRElTQUJMRV9ET0gpICYmICFkZWZpbmVkKENVUkxSRVNfQVNZTkNIKQorICAodm9pZClkbnM7CisjZW5kaWYKKwogICBpZihjb25uLT5kYXRhLT5zZXQuZG9oKQogICAgIHJldHVybiBDdXJsX2RvaF9pc19yZXNvbHZlZChjb25uLCBkbnMpOwogICByZXR1cm4gQ3VybF9yZXNvbHZlcl9pc19yZXNvbHZlZChjb25uLCBkbnMpOwogfQogCiBpbnQgQ3VybF9yZXNvbHZfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzKQogewogI2lmZGVmIENVUkxSRVNfQVNZTkNICiAgIGlmKGNvbm4tPmRhdGEtPnNldC5kb2gpCiAgICAgLyogbm90aGluZyB0byB3YWl0IGZvciBkdXJpbmcgRE9IIHJlc29sdmUsIHRob3NlIGhhbmRsZXMgaGF2ZSB0aGVpciBvd24KICAgICAgICBzb2NrZXRzICovCiAgICAgcmV0dXJuIEdFVFNPQ0tfQkxBTks7Ci0gIHJldHVybiBDdXJsX3Jlc29sdmVyX2dldHNvY2soY29ubiwgc29ja3MsIG51bXNvY2tzKTsKKyAgcmV0dXJuIEN1cmxfcmVzb2x2ZXJfZ2V0c29jayhjb25uLCBzb2Nrcyk7CiAjZWxzZQogICAodm9pZCljb25uOwogICAodm9pZClzb2NrczsKLSAgKHZvaWQpbnVtc29ja3M7CiAgIHJldHVybiBHRVRTT0NLX0JMQU5LOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0aXAuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2hvc3RpcC5oCmluZGV4IDlkYzBkNWEuLmJhZjFlNTggMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2hvc3RpcC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2hvc3RpcC5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogI2luY2x1ZGUgImhhc2guaCIKICNpbmNsdWRlICJjdXJsX2FkZHJpbmZvLmgiCisjaW5jbHVkZSAidGltZXZhbC5oIiAvKiBmb3IgdGltZWRpZmZfdCAqLwogI2luY2x1ZGUgImFzeW4uaCIKIAogI2lmZGVmIEhBVkVfU0VUSk1QX0gKQEAgLTYxLDcgKzYyLDYgQEAKICAqIFJldHVybnMgYSBzdHJ1Y3QgY3VybF9oYXNoIHBvaW50ZXIgb24gc3VjY2VzcywgTlVMTCBvbiBmYWlsdXJlLgogICovCiBzdHJ1Y3QgY3VybF9oYXNoICpDdXJsX2dsb2JhbF9ob3N0X2NhY2hlX2luaXQodm9pZCk7Ci12b2lkIEN1cmxfZ2xvYmFsX2hvc3RfY2FjaGVfZHRvcih2b2lkKTsKIAogc3RydWN0IEN1cmxfZG5zX2VudHJ5IHsKICAgQ3VybF9hZGRyaW5mbyAqYWRkcjsKQEAgLTc5LDI2ICs3OSwyOSBAQAogICogdXNlLCBvciB3ZSdsbCBsZWFrIG1lbW9yeSEKICAqLwogLyogcmV0dXJuIGNvZGVzICovCi0jZGVmaW5lIENVUkxSRVNPTFZfVElNRURPVVQgLTIKLSNkZWZpbmUgQ1VSTFJFU09MVl9FUlJPUiAgICAtMQotI2RlZmluZSBDVVJMUkVTT0xWX1JFU09MVkVEICAwCi0jZGVmaW5lIENVUkxSRVNPTFZfUEVORElORyAgIDEKLWludCBDdXJsX3Jlc29sdihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdG5hbWUsCi0gICAgICAgICAgICAgICAgaW50IHBvcnQsCi0gICAgICAgICAgICAgICAgYm9vbCBhbGxvd0RPSCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3QgQ3VybF9kbnNfZW50cnkgKipkbnNlbnRyeSk7Ci1pbnQgQ3VybF9yZXNvbHZfdGltZW91dChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGNvbnN0IGNoYXIgKmhvc3RuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcnQsIHN0cnVjdCBDdXJsX2Ruc19lbnRyeSAqKmRuc2VudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZV90IHRpbWVvdXRtcyk7CitlbnVtIHJlc29sdmVfdCB7CisgIENVUkxSRVNPTFZfVElNRURPVVQgPSAtMiwKKyAgQ1VSTFJFU09MVl9FUlJPUiAgICA9IC0xLAorICBDVVJMUkVTT0xWX1JFU09MVkVEID0gIDAsCisgIENVUkxSRVNPTFZfUEVORElORyAgPSAgMQorfTsKK2VudW0gcmVzb2x2ZV90IEN1cmxfcmVzb2x2KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFsbG93RE9ILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEN1cmxfZG5zX2VudHJ5ICoqZG5zZW50cnkpOworZW51bSByZXNvbHZlX3QgQ3VybF9yZXNvbHZfdGltZW91dChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3RuYW1lLCBpbnQgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEN1cmxfZG5zX2VudHJ5ICoqZG5zZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVkaWZmX3QgdGltZW91dG1zKTsKIAogI2lmZGVmIENVUkxSRVNfSVBWNgogLyoKICAqIEN1cmxfaXB2NndvcmtzKCkgcmV0dXJucyBUUlVFIGlmIElQdjYgc2VlbXMgdG8gd29yay4KICAqLwotYm9vbCBDdXJsX2lwdjZ3b3Jrcyh2b2lkKTsKK2Jvb2wgQ3VybF9pcHY2d29ya3Moc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKICNlbHNlCi0jZGVmaW5lIEN1cmxfaXB2NndvcmtzKCkgRkFMU0UKKyNkZWZpbmUgQ3VybF9pcHY2d29ya3MoeCkgRkFMU0UKICNlbmRpZgogCiAvKgpAQCAtMTI0LDkgKzEyNyw2IEBACiB2b2lkIEN1cmxfcmVzb2x2X3VubG9jayhzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEN1cmxfZG5zX2VudHJ5ICpkbnMpOwogCi0vKiBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIG9ubHk6ICovCi12b2lkIEN1cmxfc2Nhbl9jYWNoZV91c2VkKHZvaWQgKnVzZXIsIHZvaWQgKnB0cik7Ci0KIC8qIGluaXQgYSBuZXcgZG5zIGNhY2hlIGFuZCByZXR1cm4gc3VjY2VzcyAqLwogaW50IEN1cmxfbWtfZG5zY2FjaGUoc3RydWN0IGN1cmxfaGFzaCAqaGFzaCk7CiAKQEAgLTIzNywxMSArMjM3LDYgQEAKIHZvaWQgQ3VybF9ob3N0Y2FjaGVfY2xlYW4oc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwgc3RydWN0IGN1cmxfaGFzaCAqaGFzaCk7CiAKIC8qCi0gKiBEZXN0cm95IHRoZSBob3N0Y2FjaGUgb2YgdGhpcyBoYW5kbGUuCi0gKi8KLXZvaWQgQ3VybF9ob3N0Y2FjaGVfZGVzdHJveShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKLQotLyoKICAqIFBvcHVsYXRlIHRoZSBjYWNoZSB3aXRoIHNwZWNpZmllZCBlbnRyaWVzIGZyb20gQ1VSTE9QVF9SRVNPTFZFLgogICovCiBDVVJMY29kZSBDdXJsX2xvYWRob3N0cGFpcnMoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSk7CkBAIC0yNDksNyArMjQ0LDYgQEAKIENVUkxjb2RlIEN1cmxfcmVzb2x2X2NoZWNrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDdXJsX2Ruc19lbnRyeSAqKmRucyk7CiBpbnQgQ3VybF9yZXNvbHZfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2Nrcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2Nrcyk7CiAKICNlbmRpZiAvKiBIRUFERVJfQ1VSTF9IT1NUSVBfSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaG9zdGlwNC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaG9zdGlwNC5jCmluZGV4IGU2YmE3MTAuLmQ1MDA5YTMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2hvc3RpcDQuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0aXA0LmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTUyLDcgKzUyLDYgQEAKICNpbmNsdWRlICJzaGFyZS5oIgogI2luY2x1ZGUgInN0cmVycm9yLmgiCiAjaW5jbHVkZSAidXJsLmgiCi0jaW5jbHVkZSAiaW5ldF9wdG9uLmgiCiAvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgpAQCAtMTI4LDI4ICsxMjcsMjIgQEAKICNlbmRpZgogICBDdXJsX2FkZHJpbmZvICphaSA9IE5VTEw7CiAgIHN0cnVjdCBob3N0ZW50ICpoID0gTlVMTDsKLSAgc3RydWN0IGluX2FkZHIgaW47CiAgIHN0cnVjdCBob3N0ZW50ICpidWYgPSBOVUxMOwogCi0gIGlmKEN1cmxfaW5ldF9wdG9uKEFGX0lORVQsIGhvc3RuYW1lLCAmaW4pID4gMCkKLSAgICAvKiBUaGlzIGlzIGEgZG90dGVkIElQIGFkZHJlc3MgMTIzLjEyMy4xMjMuMTIzLXN0eWxlICovCi0gICAgcmV0dXJuIEN1cmxfaXAyYWRkcihBRl9JTkVULCAmaW4sIGhvc3RuYW1lLCBwb3J0KTsKLQogI2lmIGRlZmluZWQoSEFWRV9HRVRBRERSSU5GT19USFJFQURTQUZFKQotICBlbHNlIHsKLSAgICBzdHJ1Y3QgYWRkcmluZm8gaGludHM7Ci0gICAgY2hhciBzYnVmWzEyXTsKLSAgICBjaGFyICpzYnVmcHRyID0gTlVMTDsKKyAgc3RydWN0IGFkZHJpbmZvIGhpbnRzOworICBjaGFyIHNidWZbMTJdOworICBjaGFyICpzYnVmcHRyID0gTlVMTDsKIAotICAgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOwotICAgIGhpbnRzLmFpX2ZhbWlseSA9IFBGX0lORVQ7Ci0gICAgaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX1NUUkVBTTsKLSAgICBpZihwb3J0KSB7Ci0gICAgICBtc25wcmludGYoc2J1Ziwgc2l6ZW9mKHNidWYpLCAiJWQiLCBwb3J0KTsKLSAgICAgIHNidWZwdHIgPSBzYnVmOwotICAgIH0KKyAgbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7CisgIGhpbnRzLmFpX2ZhbWlseSA9IFBGX0lORVQ7CisgIGhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisgIGlmKHBvcnQpIHsKKyAgICBtc25wcmludGYoc2J1Ziwgc2l6ZW9mKHNidWYpLCAiJWQiLCBwb3J0KTsKKyAgICBzYnVmcHRyID0gc2J1ZjsKKyAgfQogCi0gICAgKHZvaWQpQ3VybF9nZXRhZGRyaW5mb19leChob3N0bmFtZSwgc2J1ZnB0ciwgJmhpbnRzLCAmYWkpOworICAodm9pZClDdXJsX2dldGFkZHJpbmZvX2V4KGhvc3RuYW1lLCBzYnVmcHRyLCAmaGludHMsICZhaSk7CiAKICNlbGlmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1IpCiAgIC8qCkBAIC0xNTcsMTQ0ICsxNTAsMTQxIEBACiAgICAqIFNpbmNlIHRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgaXQsIHRoZSBmb2xsb3dpbmcgY29kZSBpcwogICAgKiBzb21ld2hhdCAjaWZkZWYtcmlkZGVuLgogICAgKi8KLSAgZWxzZSB7Ci0gICAgaW50IGhfZXJybm9wOworICBpbnQgaF9lcnJub3A7CiAKLSAgICBidWYgPSBjYWxsb2MoMSwgQ1VSTF9IT1NURU5UX1NJWkUpOwotICAgIGlmKCFidWYpCi0gICAgICByZXR1cm4gTlVMTDsgLyogbWFqb3IgZmFpbHVyZSAqLwotICAgIC8qCi0gICAgICogVGhlIGNsZWFyaW5nIG9mIHRoZSBidWZmZXIgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGdldGhvc3RieW5hbWVfciBidWcgaW4KLSAgICAgKiBxbnggbnRvIGFuZCBpdCBpcyBhbHNvIF9yZXF1aXJlZF8gZm9yIHNvbWUgb2YgdGhlc2UgZnVuY3Rpb25zIG9uIHNvbWUKLSAgICAgKiBwbGF0Zm9ybXMuCi0gICAgICovCisgIGJ1ZiA9IGNhbGxvYygxLCBDVVJMX0hPU1RFTlRfU0laRSk7CisgIGlmKCFidWYpCisgICAgcmV0dXJuIE5VTEw7IC8qIG1ham9yIGZhaWx1cmUgKi8KKyAgLyoKKyAgICogVGhlIGNsZWFyaW5nIG9mIHRoZSBidWZmZXIgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGdldGhvc3RieW5hbWVfciBidWcgaW4KKyAgICogcW54IG50byBhbmQgaXQgaXMgYWxzbyBfcmVxdWlyZWRfIGZvciBzb21lIG9mIHRoZXNlIGZ1bmN0aW9ucyBvbiBzb21lCisgICAqIHBsYXRmb3Jtcy4KKyAgICovCiAKICNpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzUpCi0gICAgLyogU29sYXJpcywgSVJJWCBhbmQgbW9yZSAqLwotICAgIGggPSBnZXRob3N0YnluYW1lX3IoaG9zdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGhvc3RlbnQgKilidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKWJ1ZiArIHNpemVvZihzdHJ1Y3QgaG9zdGVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICBDVVJMX0hPU1RFTlRfU0laRSAtIHNpemVvZihzdHJ1Y3QgaG9zdGVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAmaF9lcnJub3ApOworICAvKiBTb2xhcmlzLCBJUklYIGFuZCBtb3JlICovCisgIGggPSBnZXRob3N0YnluYW1lX3IoaG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBob3N0ZW50ICopYnVmLAorICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopYnVmICsgc2l6ZW9mKHN0cnVjdCBob3N0ZW50KSwKKyAgICAgICAgICAgICAgICAgICAgICBDVVJMX0hPU1RFTlRfU0laRSAtIHNpemVvZihzdHJ1Y3QgaG9zdGVudCksCisgICAgICAgICAgICAgICAgICAgICAgJmhfZXJybm9wKTsKIAotICAgIC8qIElmIHRoZSBidWZmZXIgaXMgdG9vIHNtYWxsLCBpdCByZXR1cm5zIE5VTEwgYW5kIHNldHMgZXJybm8gdG8KLSAgICAgKiBFUkFOR0UuIFRoZSBlcnJubyBpcyB0aHJlYWQgc2FmZSBpZiB0aGlzIGlzIGNvbXBpbGVkIHdpdGgKLSAgICAgKiAtRF9SRUVOVFJBTlQgYXMgdGhlbiB0aGUgJ2Vycm5vJyB2YXJpYWJsZSBpcyBhIG1hY3JvIGRlZmluZWQgdG8gZ2V0Ci0gICAgICogdXNlZCBwcm9wZXJseSBmb3IgdGhyZWFkcy4KLSAgICAgKi8KKyAgLyogSWYgdGhlIGJ1ZmZlciBpcyB0b28gc21hbGwsIGl0IHJldHVybnMgTlVMTCBhbmQgc2V0cyBlcnJubyB0bworICAgKiBFUkFOR0UuIFRoZSBlcnJubyBpcyB0aHJlYWQgc2FmZSBpZiB0aGlzIGlzIGNvbXBpbGVkIHdpdGgKKyAgICogLURfUkVFTlRSQU5UIGFzIHRoZW4gdGhlICdlcnJubycgdmFyaWFibGUgaXMgYSBtYWNybyBkZWZpbmVkIHRvIGdldAorICAgKiB1c2VkIHByb3Blcmx5IGZvciB0aHJlYWRzLgorICAgKi8KIAotICAgIGlmKGgpIHsKLSAgICAgIDsKLSAgICB9Ci0gICAgZWxzZQotI2VsaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl82KQotICAgIC8qIExpbnV4ICovCi0KLSAgICAodm9pZClnZXRob3N0YnluYW1lX3IoaG9zdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGhvc3RlbnQgKilidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKWJ1ZiArIHNpemVvZihzdHJ1Y3QgaG9zdGVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICBDVVJMX0hPU1RFTlRfU0laRSAtIHNpemVvZihzdHJ1Y3QgaG9zdGVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAmaCwgLyogRElGRkVSRU5DRSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgJmhfZXJybm9wKTsKLSAgICAvKiBSZWRoYXQgOCwgdXNpbmcgZ2xpYmMgMi4yLjkzIGNoYW5nZWQgdGhlIGJlaGF2aW9yLiBOb3cgYWxsIG9mIGEKLSAgICAgKiBzdWRkZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIEVBR0FJTiBpZiB0aGUgZ2l2ZW4gYnVmZmVyIHNpemUgaXMgdG9vCi0gICAgICogc21hbGwuIFByZXZpb3VzIHZlcnNpb25zIGFyZSBrbm93biB0byByZXR1cm4gRVJBTkdFIGZvciB0aGUgc2FtZQotICAgICAqIHByb2JsZW0uCi0gICAgICoKLSAgICAgKiBUaGlzIHdvdWxkbid0IGJlIHN1Y2ggYSBiaWcgcHJvYmxlbSBpZiBvbGRlciB2ZXJzaW9ucyB3b3VsZG4ndAotICAgICAqIHNvbWV0aW1lcyByZXR1cm4gRUFHQUlOIG9uIGEgY29tbW9uIGZhaWx1cmUgY2FzZS4gQWxhcywgd2UgY2FuJ3QKLSAgICAgKiBhc3N1bWUgdGhhdCBFQUdBSU4gKm9yKiBFUkFOR0UgbWVhbnMgRVJBTkdFIGZvciBhbnkgZ2l2ZW4gdmVyc2lvbiBvZgotICAgICAqIGdsaWJjLgotICAgICAqCi0gICAgICogRm9yIG5vdywgd2UgZG8gdGhhdCBhbmQgdGh1cyB3ZSBtYXkgY2FsbCB0aGUgZnVuY3Rpb24gcmVwZWF0ZWRseSBhbmQKLSAgICAgKiBmYWlsIGZvciBvbGRlciBnbGliYyB2ZXJzaW9ucyB0aGF0IHJldHVybiBFQUdBSU4sIHVudGlsIHdlIHJ1biBvdXQgb2YKLSAgICAgKiBidWZmZXIgc2l6ZSAoc3RlcF9zaXplIGdyb3dzIGJleW9uZCBDVVJMX0hPU1RFTlRfU0laRSkuCi0gICAgICoKLSAgICAgKiBJZiBhbnlvbmUgaGFzIGEgYmV0dGVyIGZpeCwgcGxlYXNlIHRlbGwgdXMhCi0gICAgICoKLSAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICoKLSAgICAgKiBPbiBPY3RvYmVyIDIzcmQgMjAwMywgRGFuIEMgZHVnIHVwIG1vcmUgZGV0YWlscyBvbiB0aGUgbXlzdGVyaWVzIG9mCi0gICAgICogZ2V0aG9zdGJ5bmFtZV9yKCkgaW4gZ2xpYmM6Ci0gICAgICoKLSAgICAgKiBJbiBnbGliYyAyLjIuNSB0aGUgaW50ZXJmYWNlIGlzIGRpZmZlcmVudCAodGhpcyBoYXMgYWxzbyBiZWVuCi0gICAgICogZGlzY292ZXJlZCBpbiBnbGliYyAyLjEuMS02IGFzIHNoaXBwZWQgYnkgUmVkaGF0IDYpLiBXaGF0IEkgY2FuJ3QKLSAgICAgKiBleHBsYWluLCBpcyB0aGF0IHRlc3RzIHBlcmZvcm1lZCBvbiBnbGliYyAyLjIuNC0zNCBhbmQgMi4yLjQtMzIKLSAgICAgKiAoc2hpcHBlZC91cGdyYWRlZCBieSBSZWRoYXQgNy4yKSBkb24ndCBzaG93IHRoaXMgYmVoYXZpb3IhCi0gICAgICoKLSAgICAgKiBJbiB0aGlzICJidWdneSIgdmVyc2lvbiwgdGhlIHJldHVybiBjb2RlIGlzIC0xIG9uIGVycm9yIGFuZCAnZXJybm8nCi0gICAgICogaXMgc2V0IHRvIHRoZSBFUkFOR0Ugb3IgRUFHQUlOIGNvZGUuIE5vdGUgdGhhdCAnZXJybm8nIGlzIG5vdCBhCi0gICAgICogdGhyZWFkLXNhZmUgdmFyaWFibGUuCi0gICAgICovCi0KLSAgICBpZighaCkgLyogZmFpbHVyZSAqLwotI2VsaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl8zKQotICAgIC8qIEFJWCwgRGlnaXRhbCBVbml4L1RydTY0LCBIUFVYIDEwLCBtb3JlPyAqLwotCi0gICAgLyogRm9yIEFJWCA0LjMgb3IgbGF0ZXIsIHdlIGRvbid0IHVzZSBnZXRob3N0YnluYW1lX3IoKSBhdCBhbGwsIGJlY2F1c2Ugb2YKLSAgICAgKiB0aGUgcGxhaW4gZmFjdCB0aGF0IGl0IGRvZXMgbm90IHJldHVybiB1bmlxdWUgZnVsbCBidWZmZXJzIG9uIGVhY2gKLSAgICAgKiBjYWxsLCBidXQgaW5zdGVhZCBzZXZlcmFsIG9mIHRoZSBwb2ludGVycyBpbiB0aGUgaG9zdGVudCBzdHJ1Y3RzIHdpbGwKLSAgICAgKiBwb2ludCB0byB0aGUgc2FtZSBhY3R1YWwgZGF0YSEgVGhpcyBoYXZlIHRoZSB1bmZvcnR1bmF0ZSBkb3duLXNpZGUgdGhhdAotICAgICAqIG91ciBjYWNoaW5nIHN5c3RlbSBicmVha3MgZG93biBob3JyaWJseS4gTHVja2lseSBmb3IgdXMgdGhvdWdoLCBBSVggNC4zCi0gICAgICogYW5kIG1vcmUgcmVjZW50IHZlcnNpb25zIGhhdmUgYSAiY29tcGxldGVseSB0aHJlYWQtc2FmZSJbKl0gbGliYyB3aGVyZQotICAgICAqIGFsbCB0aGUgZGF0YSBpcyBzdG9yZWQgaW4gdGhyZWFkLXNwZWNpZmljIG1lbW9yeSBhcmVhcyBtYWtpbmcgY2FsbHMgdG8KLSAgICAgKiB0aGUgcGxhaW4gb2xkIGdldGhvc3RieW5hbWUoKSB3b3JrIGZpbmUgZXZlbiBmb3IgbXVsdGktdGhyZWFkZWQKLSAgICAgKiBwcm9ncmFtcy4KLSAgICAgKgotICAgICAqIFRoaXMgQUlYIDQuMyBvciBsYXRlciBkZXRlY3Rpb24gaXMgYWxsIG1hZGUgaW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCi0gICAgICoKLSAgICAgKiBUcm9lbHMgV2Fsc3RlZCBIYW5zZW4gaGVscGVkIHVzIHdvcmsgdGhpcyBvdXQgb24gTWFyY2ggM3JkLCAyMDAzLgotICAgICAqCi0gICAgICogWypdID0gbXVjaCBsYXRlciB3ZSd2ZSBmb3VuZCBvdXQgdGhhdCBpdCBpc24ndCBhdCBhbGwgImNvbXBsZXRlbHkKLSAgICAgKiB0aHJlYWQtc2FmZSIsIGJ1dCBhdCBsZWFzdCB0aGUgZ2V0aG9zdGJ5bmFtZSgpIGZ1bmN0aW9uIGlzLgotICAgICAqLwotCi0gICAgaWYoQ1VSTF9IT1NURU5UX1NJWkUgPj0KLSAgICAgICAoc2l6ZW9mKHN0cnVjdCBob3N0ZW50KSArIHNpemVvZihzdHJ1Y3QgaG9zdGVudF9kYXRhKSkpIHsKLQotICAgICAgLyogQXVndXN0IDIybmQsIDIwMDA6IEFsYmVydCBDaGluLUEtWW91bmcgYnJvdWdodCBhbiB1cGRhdGVkIHZlcnNpb24KLSAgICAgICAqIHRoYXQgc2hvdWxkIHdvcmshIFNlcHRlbWJlciAyMDogUmljaGFyZCBQcmVzY290dCB3b3JrZWQgb24gdGhlIGJ1ZmZlcgotICAgICAgICogc2l6ZSBkaWxlbW1hLgotICAgICAgICovCi0KLSAgICAgIHJlcyA9IGdldGhvc3RieW5hbWVfcihob3N0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGhvc3RlbnQgKilidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBob3N0ZW50X2RhdGEgKikoKGNoYXIgKilidWYgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaG9zdGVudCkpKTsKLSAgICAgIGhfZXJybm9wID0gU09DS0VSUk5POyAvKiB3ZSBkb24ndCBkZWFsIHdpdGggdGhpcywgYnV0IHNldCBpdCBhbnl3YXkgKi8KLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmVzID0gLTE7IC8qIGZhaWx1cmUsIHRvbyBzbWFsbGlzaCBidWZmZXIgc2l6ZSAqLwotCi0gICAgaWYoIXJlcykgeyAvKiBzdWNjZXNzICovCi0KLSAgICAgIGggPSBidWY7IC8qIHJlc3VsdCBleHBlY3RlZCBpbiBoICovCi0KLSAgICAgIC8qIFRoaXMgaXMgdGhlIHdvcnN0IGtpbmQgb2YgdGhlIGRpZmZlcmVudCBnZXRob3N0YnluYW1lX3IoKSBpbnRlcmZhY2VzLgotICAgICAgICogU2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgYmlnIGJ1ZmZlciB0aGlzIHBhcnRpY3VsYXIgbG9va3VwIHJlcXVpcmVkLAotICAgICAgICogd2UgY2FuJ3QgcmVhbGxvYyBkb3duIHRoZSBodWdlIGFsbG9jIHdpdGhvdXQgZG9pbmcgY2xvc2VyIGFuYWx5c2lzIG9mCi0gICAgICAgKiB0aGUgcmV0dXJuZWQgZGF0YS4gVGh1cywgd2UgYWx3YXlzIHVzZSBDVVJMX0hPU1RFTlRfU0laRSBmb3IgZXZlcnkKLSAgICAgICAqIG5hbWUgbG9va3VwLiBGaXhpbmcgdGhpcyB3b3VsZCByZXF1aXJlIGFuIGV4dHJhIG1hbGxvYygpIGFuZCB0aGVuCi0gICAgICAgKiBjYWxsaW5nIEN1cmxfYWRkcmluZm9fY29weSgpIHRoYXQgc3Vic2VxdWVudCByZWFsbG9jKClzIGRvd24gdGhlIG5ldwotICAgICAgICogbWVtb3J5IGFyZWEgdG8gdGhlIGFjdHVhbGx5IHVzZWQgYW1vdW50LgotICAgICAgICovCi0gICAgfQotICAgIGVsc2UKLSNlbmRpZiAvKiBIQVZFXy4uLkJZTkFNRV9SXzUgfHwgSEFWRV8uLi5CWU5BTUVfUl82IHx8IEhBVkVfLi4uQllOQU1FX1JfMyAqLwotICAgIHsKLSAgICAgIGggPSBOVUxMOyAvKiBzZXQgcmV0dXJuIGNvZGUgdG8gTlVMTCAqLwotICAgICAgZnJlZShidWYpOwotICAgIH0KLSNlbHNlIC8qIEhBVkVfR0VUQUREUklORk9fVEhSRUFEU0FGRSB8fCBIQVZFX0dFVEhPU1RCWU5BTUVfUiAqLwotICAgIC8qCi0gICAgICogSGVyZSBpcyBjb2RlIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIGEgdGhyZWFkIHNhZmUKLSAgICAgKiBnZXRhZGRyaW5mbygpIG5vciBnZXRob3N0YnluYW1lX3IoKSBmdW5jdGlvbiBvciBmb3Igd2hpY2gKLSAgICAgKiBnZXRob3N0YnluYW1lKCkgaXMgdGhlIHByZWZlcnJlZCBvbmUuCi0gICAgICovCi0gIGVsc2UgewotICAgIGggPSBnZXRob3N0YnluYW1lKCh2b2lkICopaG9zdG5hbWUpOwotI2VuZGlmIC8qIEhBVkVfR0VUQUREUklORk9fVEhSRUFEU0FGRSB8fCBIQVZFX0dFVEhPU1RCWU5BTUVfUiAqLworICBpZihoKSB7CisgICAgOwogICB9CisgIGVsc2UKKyNlbGlmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNikKKyAgLyogTGludXggKi8KKworICAodm9pZClnZXRob3N0YnluYW1lX3IoaG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBob3N0ZW50ICopYnVmLAorICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopYnVmICsgc2l6ZW9mKHN0cnVjdCBob3N0ZW50KSwKKyAgICAgICAgICAgICAgICAgICAgICBDVVJMX0hPU1RFTlRfU0laRSAtIHNpemVvZihzdHJ1Y3QgaG9zdGVudCksCisgICAgICAgICAgICAgICAgICAgICAgJmgsIC8qIERJRkZFUkVOQ0UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAmaF9lcnJub3ApOworICAvKiBSZWRoYXQgOCwgdXNpbmcgZ2xpYmMgMi4yLjkzIGNoYW5nZWQgdGhlIGJlaGF2aW9yLiBOb3cgYWxsIG9mIGEKKyAgICogc3VkZGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBFQUdBSU4gaWYgdGhlIGdpdmVuIGJ1ZmZlciBzaXplIGlzIHRvbworICAgKiBzbWFsbC4gUHJldmlvdXMgdmVyc2lvbnMgYXJlIGtub3duIHRvIHJldHVybiBFUkFOR0UgZm9yIHRoZSBzYW1lCisgICAqIHByb2JsZW0uCisgICAqCisgICAqIFRoaXMgd291bGRuJ3QgYmUgc3VjaCBhIGJpZyBwcm9ibGVtIGlmIG9sZGVyIHZlcnNpb25zIHdvdWxkbid0CisgICAqIHNvbWV0aW1lcyByZXR1cm4gRUFHQUlOIG9uIGEgY29tbW9uIGZhaWx1cmUgY2FzZS4gQWxhcywgd2UgY2FuJ3QKKyAgICogYXNzdW1lIHRoYXQgRUFHQUlOICpvciogRVJBTkdFIG1lYW5zIEVSQU5HRSBmb3IgYW55IGdpdmVuIHZlcnNpb24gb2YKKyAgICogZ2xpYmMuCisgICAqCisgICAqIEZvciBub3csIHdlIGRvIHRoYXQgYW5kIHRodXMgd2UgbWF5IGNhbGwgdGhlIGZ1bmN0aW9uIHJlcGVhdGVkbHkgYW5kCisgICAqIGZhaWwgZm9yIG9sZGVyIGdsaWJjIHZlcnNpb25zIHRoYXQgcmV0dXJuIEVBR0FJTiwgdW50aWwgd2UgcnVuIG91dCBvZgorICAgKiBidWZmZXIgc2l6ZSAoc3RlcF9zaXplIGdyb3dzIGJleW9uZCBDVVJMX0hPU1RFTlRfU0laRSkuCisgICAqCisgICAqIElmIGFueW9uZSBoYXMgYSBiZXR0ZXIgZml4LCBwbGVhc2UgdGVsbCB1cyEKKyAgICoKKyAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgKgorICAgKiBPbiBPY3RvYmVyIDIzcmQgMjAwMywgRGFuIEMgZHVnIHVwIG1vcmUgZGV0YWlscyBvbiB0aGUgbXlzdGVyaWVzIG9mCisgICAqIGdldGhvc3RieW5hbWVfcigpIGluIGdsaWJjOgorICAgKgorICAgKiBJbiBnbGliYyAyLjIuNSB0aGUgaW50ZXJmYWNlIGlzIGRpZmZlcmVudCAodGhpcyBoYXMgYWxzbyBiZWVuCisgICAqIGRpc2NvdmVyZWQgaW4gZ2xpYmMgMi4xLjEtNiBhcyBzaGlwcGVkIGJ5IFJlZGhhdCA2KS4gV2hhdCBJIGNhbid0CisgICAqIGV4cGxhaW4sIGlzIHRoYXQgdGVzdHMgcGVyZm9ybWVkIG9uIGdsaWJjIDIuMi40LTM0IGFuZCAyLjIuNC0zMgorICAgKiAoc2hpcHBlZC91cGdyYWRlZCBieSBSZWRoYXQgNy4yKSBkb24ndCBzaG93IHRoaXMgYmVoYXZpb3IhCisgICAqCisgICAqIEluIHRoaXMgImJ1Z2d5IiB2ZXJzaW9uLCB0aGUgcmV0dXJuIGNvZGUgaXMgLTEgb24gZXJyb3IgYW5kICdlcnJubycKKyAgICogaXMgc2V0IHRvIHRoZSBFUkFOR0Ugb3IgRUFHQUlOIGNvZGUuIE5vdGUgdGhhdCAnZXJybm8nIGlzIG5vdCBhCisgICAqIHRocmVhZC1zYWZlIHZhcmlhYmxlLgorICAgKi8KKworICBpZighaCkgLyogZmFpbHVyZSAqLworI2VsaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl8zKQorICAvKiBBSVgsIERpZ2l0YWwgVW5peC9UcnU2NCwgSFBVWCAxMCwgbW9yZT8gKi8KKworICAvKiBGb3IgQUlYIDQuMyBvciBsYXRlciwgd2UgZG9uJ3QgdXNlIGdldGhvc3RieW5hbWVfcigpIGF0IGFsbCwgYmVjYXVzZSBvZgorICAgKiB0aGUgcGxhaW4gZmFjdCB0aGF0IGl0IGRvZXMgbm90IHJldHVybiB1bmlxdWUgZnVsbCBidWZmZXJzIG9uIGVhY2gKKyAgICogY2FsbCwgYnV0IGluc3RlYWQgc2V2ZXJhbCBvZiB0aGUgcG9pbnRlcnMgaW4gdGhlIGhvc3RlbnQgc3RydWN0cyB3aWxsCisgICAqIHBvaW50IHRvIHRoZSBzYW1lIGFjdHVhbCBkYXRhISBUaGlzIGhhdmUgdGhlIHVuZm9ydHVuYXRlIGRvd24tc2lkZSB0aGF0CisgICAqIG91ciBjYWNoaW5nIHN5c3RlbSBicmVha3MgZG93biBob3JyaWJseS4gTHVja2lseSBmb3IgdXMgdGhvdWdoLCBBSVggNC4zCisgICAqIGFuZCBtb3JlIHJlY2VudCB2ZXJzaW9ucyBoYXZlIGEgImNvbXBsZXRlbHkgdGhyZWFkLXNhZmUiWypdIGxpYmMgd2hlcmUKKyAgICogYWxsIHRoZSBkYXRhIGlzIHN0b3JlZCBpbiB0aHJlYWQtc3BlY2lmaWMgbWVtb3J5IGFyZWFzIG1ha2luZyBjYWxscyB0bworICAgKiB0aGUgcGxhaW4gb2xkIGdldGhvc3RieW5hbWUoKSB3b3JrIGZpbmUgZXZlbiBmb3IgbXVsdGktdGhyZWFkZWQKKyAgICogcHJvZ3JhbXMuCisgICAqCisgICAqIFRoaXMgQUlYIDQuMyBvciBsYXRlciBkZXRlY3Rpb24gaXMgYWxsIG1hZGUgaW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCisgICAqCisgICAqIFRyb2VscyBXYWxzdGVkIEhhbnNlbiBoZWxwZWQgdXMgd29yayB0aGlzIG91dCBvbiBNYXJjaCAzcmQsIDIwMDMuCisgICAqCisgICAqIFsqXSA9IG11Y2ggbGF0ZXIgd2UndmUgZm91bmQgb3V0IHRoYXQgaXQgaXNuJ3QgYXQgYWxsICJjb21wbGV0ZWx5CisgICAqIHRocmVhZC1zYWZlIiwgYnV0IGF0IGxlYXN0IHRoZSBnZXRob3N0YnluYW1lKCkgZnVuY3Rpb24gaXMuCisgICAqLworCisgIGlmKENVUkxfSE9TVEVOVF9TSVpFID49CisgICAgIChzaXplb2Yoc3RydWN0IGhvc3RlbnQpICsgc2l6ZW9mKHN0cnVjdCBob3N0ZW50X2RhdGEpKSkgeworCisgICAgLyogQXVndXN0IDIybmQsIDIwMDA6IEFsYmVydCBDaGluLUEtWW91bmcgYnJvdWdodCBhbiB1cGRhdGVkIHZlcnNpb24KKyAgICAgKiB0aGF0IHNob3VsZCB3b3JrISBTZXB0ZW1iZXIgMjA6IFJpY2hhcmQgUHJlc2NvdHQgd29ya2VkIG9uIHRoZSBidWZmZXIKKyAgICAgKiBzaXplIGRpbGVtbWEuCisgICAgICovCisKKyAgICByZXMgPSBnZXRob3N0YnluYW1lX3IoaG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgaG9zdGVudCAqKWJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBob3N0ZW50X2RhdGEgKikoKGNoYXIgKilidWYgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGhvc3RlbnQpKSk7CisgICAgaF9lcnJub3AgPSBTT0NLRVJSTk87IC8qIHdlIGRvbid0IGRlYWwgd2l0aCB0aGlzLCBidXQgc2V0IGl0IGFueXdheSAqLworICB9CisgIGVsc2UKKyAgICByZXMgPSAtMTsgLyogZmFpbHVyZSwgdG9vIHNtYWxsaXNoIGJ1ZmZlciBzaXplICovCisKKyAgaWYoIXJlcykgeyAvKiBzdWNjZXNzICovCisKKyAgICBoID0gYnVmOyAvKiByZXN1bHQgZXhwZWN0ZWQgaW4gaCAqLworCisgICAgLyogVGhpcyBpcyB0aGUgd29yc3Qga2luZCBvZiB0aGUgZGlmZmVyZW50IGdldGhvc3RieW5hbWVfcigpIGludGVyZmFjZXMuCisgICAgICogU2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgYmlnIGJ1ZmZlciB0aGlzIHBhcnRpY3VsYXIgbG9va3VwIHJlcXVpcmVkLAorICAgICAqIHdlIGNhbid0IHJlYWxsb2MgZG93biB0aGUgaHVnZSBhbGxvYyB3aXRob3V0IGRvaW5nIGNsb3NlciBhbmFseXNpcyBvZgorICAgICAqIHRoZSByZXR1cm5lZCBkYXRhLiBUaHVzLCB3ZSBhbHdheXMgdXNlIENVUkxfSE9TVEVOVF9TSVpFIGZvciBldmVyeQorICAgICAqIG5hbWUgbG9va3VwLiBGaXhpbmcgdGhpcyB3b3VsZCByZXF1aXJlIGFuIGV4dHJhIG1hbGxvYygpIGFuZCB0aGVuCisgICAgICogY2FsbGluZyBDdXJsX2FkZHJpbmZvX2NvcHkoKSB0aGF0IHN1YnNlcXVlbnQgcmVhbGxvYygpcyBkb3duIHRoZSBuZXcKKyAgICAgKiBtZW1vcnkgYXJlYSB0byB0aGUgYWN0dWFsbHkgdXNlZCBhbW91bnQuCisgICAgICovCisgIH0KKyAgZWxzZQorI2VuZGlmIC8qIEhBVkVfLi4uQllOQU1FX1JfNSB8fCBIQVZFXy4uLkJZTkFNRV9SXzYgfHwgSEFWRV8uLi5CWU5BTUVfUl8zICovCisgIHsKKyAgICBoID0gTlVMTDsgLyogc2V0IHJldHVybiBjb2RlIHRvIE5VTEwgKi8KKyAgICBmcmVlKGJ1Zik7CisgIH0KKyNlbHNlIC8qIEhBVkVfR0VUQUREUklORk9fVEhSRUFEU0FGRSB8fCBIQVZFX0dFVEhPU1RCWU5BTUVfUiAqLworICAvKgorICAgKiBIZXJlIGlzIGNvZGUgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IGhhdmUgYSB0aHJlYWQgc2FmZQorICAgKiBnZXRhZGRyaW5mbygpIG5vciBnZXRob3N0YnluYW1lX3IoKSBmdW5jdGlvbiBvciBmb3Igd2hpY2gKKyAgICogZ2V0aG9zdGJ5bmFtZSgpIGlzIHRoZSBwcmVmZXJyZWQgb25lLgorICAgKi8KKyAgaCA9IGdldGhvc3RieW5hbWUoKHZvaWQgKilob3N0bmFtZSk7CisjZW5kaWYgLyogSEFWRV9HRVRBRERSSU5GT19USFJFQURTQUZFIHx8IEhBVkVfR0VUSE9TVEJZTkFNRV9SICovCiAKICAgaWYoaCkgewogICAgIGFpID0gQ3VybF9oZTJhaShoLCBwb3J0KTsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2hvc3RpcDYuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2hvc3RpcDYuYwppbmRleCA1NTExZjFhLi40MWZmOTg2IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0aXA2LmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaG9zdGlwNi5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC02MiwxMyArNjIsMTkgQEAKIC8qCiAgKiBDdXJsX2lwdjZ3b3JrcygpIHJldHVybnMgVFJVRSBpZiBJUHY2IHNlZW1zIHRvIHdvcmsuCiAgKi8KLWJvb2wgQ3VybF9pcHY2d29ya3Modm9pZCkKK2Jvb2wgQ3VybF9pcHY2d29ya3Moc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewotICAvKiB0aGUgbmF0dXJlIG9mIG1vc3Qgc3lzdGVtIGlzIHRoYXQgSVB2NiBzdGF0dXMgZG9lc24ndCBjb21lIGFuZCBnbwotICAgICBkdXJpbmcgYSBwcm9ncmFtJ3MgbGlmZXRpbWUgc28gd2Ugb25seSBwcm9iZSB0aGUgZmlyc3QgdGltZSBhbmQgdGhlbiB3ZQotICAgICBoYXZlIHRoZSBpbmZvIGtlcHQgZm9yIGZhc3QgcmUtdXNlICovCi0gIHN0YXRpYyBpbnQgaXB2Nl93b3JrcyA9IC0xOwotICBpZigtMSA9PSBpcHY2X3dvcmtzKSB7CisgIGlmKGNvbm4pIHsKKyAgICAvKiB0aGUgbmF0dXJlIG9mIG1vc3Qgc3lzdGVtIGlzIHRoYXQgSVB2NiBzdGF0dXMgZG9lc24ndCBjb21lIGFuZCBnbworICAgICAgIGR1cmluZyBhIHByb2dyYW0ncyBsaWZldGltZSBzbyB3ZSBvbmx5IHByb2JlIHRoZSBmaXJzdCB0aW1lIGFuZCB0aGVuIHdlCisgICAgICAgaGF2ZSB0aGUgaW5mbyBrZXB0IGZvciBmYXN0IHJlLXVzZSAqLworICAgIERFQlVHQVNTRVJUKGNvbm4pOworICAgIERFQlVHQVNTRVJUKGNvbm4tPmRhdGEpOworICAgIERFQlVHQVNTRVJUKGNvbm4tPmRhdGEtPm11bHRpKTsKKyAgICByZXR1cm4gY29ubi0+ZGF0YS0+bXVsdGktPmlwdjZfd29ya3M7CisgIH0KKyAgZWxzZSB7CisgICAgaW50IGlwdjZfd29ya3MgPSAtMTsKICAgICAvKiBwcm9iZSB0byBzZWUgaWYgd2UgaGF2ZSBhIHdvcmtpbmcgSVB2NiBzdGFjayAqLwogICAgIGN1cmxfc29ja2V0X3QgcyA9IHNvY2tldChQRl9JTkVUNiwgU09DS19ER1JBTSwgMCk7CiAgICAgaWYocyA9PSBDVVJMX1NPQ0tFVF9CQUQpCkBAIC03OCw4ICs4NCw4IEBACiAgICAgICBpcHY2X3dvcmtzID0gMTsKICAgICAgIEN1cmxfY2xvc2Vzb2NrZXQoTlVMTCwgcyk7CiAgICAgfQorICAgIHJldHVybiAoaXB2Nl93b3Jrcz4wKT9UUlVFOkZBTFNFOwogICB9Ci0gIHJldHVybiAoaXB2Nl93b3Jrcz4wKT9UUlVFOkZBTFNFOwogfQogCiAvKgpAQCAtODksNyArOTUsNyBAQAogYm9vbCBDdXJsX2lwdmFsaWQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewogICBpZihjb25uLT5pcF92ZXJzaW9uID09IENVUkxfSVBSRVNPTFZFX1Y2KQotICAgIHJldHVybiBDdXJsX2lwdjZ3b3JrcygpOworICAgIHJldHVybiBDdXJsX2lwdjZ3b3Jrcyhjb25uKTsKIAogICByZXR1cm4gVFJVRTsKIH0KQEAgLTE1OSwxMyArMTY1LDE0IEBACiAgICAgYnJlYWs7CiAgIH0KIAotICBpZigocGYgIT0gUEZfSU5FVCkgJiYgIUN1cmxfaXB2NndvcmtzKCkpCisgIGlmKChwZiAhPSBQRl9JTkVUKSAmJiAhQ3VybF9pcHY2d29ya3MoY29ubikpCiAgICAgLyogVGhlIHN0YWNrIHNlZW1zIHRvIGJlIGEgbm9uLUlQdjYgb25lICovCiAgICAgcGYgPSBQRl9JTkVUOwogCiAgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOwogICBoaW50cy5haV9mYW1pbHkgPSBwZjsKLSAgaGludHMuYWlfc29ja3R5cGUgPSBjb25uLT5zb2NrdHlwZTsKKyAgaGludHMuYWlfc29ja3R5cGUgPSAoY29ubi0+dHJhbnNwb3J0ID09IFRSTlNQUlRfVENQKSA/CisgICAgU09DS19TVFJFQU0gOiBTT0NLX0RHUkFNOwogCiAjaWZuZGVmIFVTRV9SRVNPTFZFX09OX0lQUwogICAvKgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaG9zdHN5bi5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaG9zdHN5bi5jCmluZGV4IDNkZTY3NDYuLjllMzEwMDggMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2hvc3RzeW4uYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9ob3N0c3luLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHAuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHAuYwppbmRleCAzMzhjNTlhLi5iZmYzYWRjIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9odHRwLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cC5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC04OCw4ICs4OCw3IEBACiAgKi8KIAogc3RhdGljIGludCBodHRwX2dldHNvY2tfZG8oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MpOwogc3RhdGljIGludCBodHRwX3Nob3VsZF9mYWlsKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiAKICNpZm5kZWYgQ1VSTF9ESVNBQkxFX1BST1hZCkBAIC05OSw4ICs5OCw3IEBACiAjaWZkZWYgVVNFX1NTTAogc3RhdGljIENVUkxjb2RlIGh0dHBzX2Nvbm5lY3Rpbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKTsKIHN0YXRpYyBpbnQgaHR0cHNfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2Nrcyk7CiAjZWxzZQogI2RlZmluZSBodHRwc19jb25uZWN0aW5nKHgseSkgQ1VSTEVfQ09VTEROVF9DT05ORUNUCiAjZW5kaWYKQEAgLTE3MSwxMCArMTY5LDIyIEBACiAgIEN1cmxfbWltZV9pbml0cGFydCgmaHR0cC0+Zm9ybSwgY29ubi0+ZGF0YSk7CiAgIGRhdGEtPnJlcS5wcm90b3AgPSBodHRwOwogCi0gIGlmKCFDT05OX0lOVVNFKGNvbm4pKQotICAgIC8qIGlmIG5vdCBhbHJlYWR5IG11bHRpLXVzaW5nLCBzZXR1cCBjb25uZWN0aW9uIGRldGFpbHMgKi8KLSAgICBDdXJsX2h0dHAyX3NldHVwX2Nvbm4oY29ubik7Ci0gIEN1cmxfaHR0cDJfc2V0dXBfcmVxKGRhdGEpOworICBpZihkYXRhLT5zZXQuaHR0cHZlcnNpb24gPT0gQ1VSTF9IVFRQX1ZFUlNJT05fMykgeworICAgIGlmKGNvbm4tPmhhbmRsZXItPmZsYWdzICYgUFJPVE9QVF9TU0wpCisgICAgICAvKiBPbmx5IGdvIEhUVFAvMyBkaXJlY3RseSBvbiBIVFRQUyBVUkxzLiBJdCBuZWVkcyBhIFVEUCBzb2NrZXQgYW5kIGRvZXMKKyAgICAgICAgIHRoZSBRVUlDIGRhbmNlLiAqLworICAgICAgY29ubi0+dHJhbnNwb3J0ID0gVFJOU1BSVF9RVUlDOworICAgIGVsc2UgeworICAgICAgZmFpbGYoZGF0YSwgIkhUVFAvMyByZXF1ZXN0ZWQgZm9yIG5vbi1IVFRQUyBVUkwiKTsKKyAgICAgIHJldHVybiBDVVJMRV9VUkxfTUFMRk9STUFUOworICAgIH0KKyAgfQorICBlbHNlIHsKKyAgICBpZighQ09OTl9JTlVTRShjb25uKSkKKyAgICAgIC8qIGlmIG5vdCBhbHJlYWR5IG11bHRpLXVzaW5nLCBzZXR1cCBjb25uZWN0aW9uIGRldGFpbHMgKi8KKyAgICAgIEN1cmxfaHR0cDJfc2V0dXBfY29ubihjb25uKTsKKyAgICBDdXJsX2h0dHAyX3NldHVwX3JlcShkYXRhKTsKKyAgfQogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKQEAgLTMzNCw3ICszNDQsNyBAQAogICB1c2VycCA9ICZjb25uLT5hbGxvY3B0ci51c2VycHdkOwogICBmcmVlKCp1c2VycCk7CiAgICp1c2VycCA9IGFwcmludGYoIkF1dGhvcml6YXRpb246IEJlYXJlciAlc1xyXG4iLAotICAgICAgICAgICAgICAgICAgIGNvbm4tPm9hdXRoX2JlYXJlcik7CisgICAgICAgICAgICAgICAgICAgY29ubi0+ZGF0YS0+c2V0LnN0cltTVFJJTkdfQkVBUkVSXSk7CiAKICAgaWYoISp1c2VycCkgewogICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CkBAIC0zODMsNyArMzkzLDcgQEAKIH0KIAogLyoKLSAqIEN1cmxfaHR0cF9wZXJoYXBzcmV3aW5kKCkKKyAqIGh0dHBfcGVyaGFwc3Jld2luZCgpCiAgKgogICogSWYgd2UgYXJlIGRvaW5nIFBPU1Qgb3IgUFVUIHsKICAqICAgSWYgd2UgaGF2ZSBtb3JlIGRhdGEgdG8gc2VuZCB7CkBAIC00NDAsOSArNDUwLDYgQEAKICAgICAvKiBmaWd1cmUgb3V0IGhvdyBtdWNoIGRhdGEgd2UgYXJlIGV4cGVjdGVkIHRvIHNlbmQgKi8KICAgICBzd2l0Y2goZGF0YS0+c2V0Lmh0dHByZXEpIHsKICAgICBjYXNlIEhUVFBSRVFfUE9TVDoKLSAgICAgIGlmKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgIT0gLTEpCi0gICAgICAgIGV4cGVjdHNlbmQgPSBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplOwotICAgICAgYnJlYWs7CiAgICAgY2FzZSBIVFRQUkVRX1BVVDoKICAgICAgIGlmKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgIT0gLTEpCiAgICAgICAgIGV4cGVjdHNlbmQgPSBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplOwpAQCAtNTQ4LDcgKzU1NSw3IEBACiAgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwogICB1bnNpZ25lZCBsb25nIGF1dGhtYXNrID0gfjB1bDsKIAotICBpZighY29ubi0+b2F1dGhfYmVhcmVyKQorICBpZighZGF0YS0+c2V0LnN0cltTVFJJTkdfQkVBUkVSXSkKICAgICBhdXRobWFzayAmPSAodW5zaWduZWQgbG9uZyl+Q1VSTEFVVEhfQkVBUkVSOwogCiAgIGlmKDEwMCA8PSBkYXRhLT5yZXEuaHR0cGNvZGUgJiYgMTk5ID49IGRhdGEtPnJlcS5odHRwY29kZSkKQEAgLTU1OCw3ICs1NjUsNyBAQAogICBpZihkYXRhLT5zdGF0ZS5hdXRocHJvYmxlbSkKICAgICByZXR1cm4gZGF0YS0+c2V0Lmh0dHBfZmFpbF9vbl9lcnJvcj9DVVJMRV9IVFRQX1JFVFVSTkVEX0VSUk9SOkNVUkxFX09LOwogCi0gIGlmKChjb25uLT5iaXRzLnVzZXJfcGFzc3dkIHx8IGNvbm4tPm9hdXRoX2JlYXJlcikgJiYKKyAgaWYoKGNvbm4tPmJpdHMudXNlcl9wYXNzd2QgfHwgZGF0YS0+c2V0LnN0cltTVFJJTkdfQkVBUkVSXSkgJiYKICAgICAgKChkYXRhLT5yZXEuaHR0cGNvZGUgPT0gNDAxKSB8fAogICAgICAgKGNvbm4tPmJpdHMuYXV0aG5lZyAmJiBkYXRhLT5yZXEuaHR0cGNvZGUgPCAzMDApKSkgewogICAgIHBpY2tob3N0ID0gcGlja29uZWF1dGgoJmRhdGEtPnN0YXRlLmF1dGhob3N0LCBhdXRobWFzayk7CkBAIC02MzQsOSArNjQxLDcgQEAKIHsKICAgY29uc3QgY2hhciAqYXV0aCA9IE5VTEw7CiAgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpIHx8IGRlZmluZWQoVVNFX1NQTkVHTykKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7Ci0jZW5kaWYKIAogI2lmZGVmIENVUkxfRElTQUJMRV9DUllQVE9fQVVUSAogICAodm9pZClyZXF1ZXN0OwpAQCAtNjQ0LDcgKzY0OSw3IEBACiAjZW5kaWYKIAogI2lmZGVmIFVTRV9TUE5FR08KLSAgaWYoKGF1dGhzdGF0dXMtPnBpY2tlZCA9PSBDVVJMQVVUSF9ORUdPVElBVEUpKSB7CisgIGlmKGF1dGhzdGF0dXMtPnBpY2tlZCA9PSBDVVJMQVVUSF9ORUdPVElBVEUpIHsKICAgICBhdXRoID0gIk5lZ290aWF0ZSI7CiAgICAgcmVzdWx0ID0gQ3VybF9vdXRwdXRfbmVnb3RpYXRlKGNvbm4sIHByb3h5KTsKICAgICBpZihyZXN1bHQpCkBAIC03MDAsNyArNzA1LDcgQEAKICAgfQogICBpZihhdXRoc3RhdHVzLT5waWNrZWQgPT0gQ1VSTEFVVEhfQkVBUkVSKSB7CiAgICAgLyogQmVhcmVyICovCi0gICAgaWYoKCFwcm94eSAmJiBjb25uLT5vYXV0aF9iZWFyZXIgJiYKKyAgICBpZigoIXByb3h5ICYmIGRhdGEtPnNldC5zdHJbU1RSSU5HX0JFQVJFUl0gJiYKICAgICAgICAgIUN1cmxfY2hlY2toZWFkZXJzKGNvbm4sICJBdXRob3JpemF0aW9uOiIpKSkgewogICAgICAgYXV0aCA9ICJCZWFyZXIiOwogICAgICAgcmVzdWx0ID0gaHR0cF9vdXRwdXRfYmVhcmVyKGNvbm4pOwpAQCAtNzU4LDcgKzc2Myw3IEBACiAgIGF1dGhwcm94eSA9ICZkYXRhLT5zdGF0ZS5hdXRocHJveHk7CiAKICAgaWYoKGNvbm4tPmJpdHMuaHR0cHByb3h5ICYmIGNvbm4tPmJpdHMucHJveHlfdXNlcl9wYXNzd2QpIHx8Ci0gICAgIGNvbm4tPmJpdHMudXNlcl9wYXNzd2QgfHwgY29ubi0+b2F1dGhfYmVhcmVyKQorICAgICBjb25uLT5iaXRzLnVzZXJfcGFzc3dkIHx8IGRhdGEtPnNldC5zdHJbU1RSSU5HX0JFQVJFUl0pCiAgICAgLyogY29udGludWUgcGxlYXNlICovOwogICBlbHNlIHsKICAgICBhdXRoaG9zdC0+ZG9uZSA9IFRSVUU7CkBAIC0xMTM2LDEwICsxMTQxLDE0IEBACiAgKi8KIHZvaWQgQ3VybF9hZGRfYnVmZmVyX2ZyZWUoQ3VybF9zZW5kX2J1ZmZlciAqKmlucCkKIHsKLSAgQ3VybF9zZW5kX2J1ZmZlciAqaW4gPSAqaW5wOwotICBpZihpbikgLyogZGVhbCB3aXRoIE5VTEwgaW5wdXQgKi8KKyAgQ3VybF9zZW5kX2J1ZmZlciAqaW47CisgIGlmKCFpbnApCisgICAgcmV0dXJuOworICBpbiA9ICppbnA7CisgIGlmKGluKSB7IC8qIGRlYWwgd2l0aCBOVUxMIGlucHV0ICovCiAgICAgZnJlZShpbi0+YnVmZmVyKTsKLSAgZnJlZShpbik7CisgICAgZnJlZShpbik7CisgIH0KICAgKmlucCA9IE5VTEw7CiB9CiAKQEAgLTE0OTcsMTEgKzE1MDYsOSBAQAogICAgaW50ZXJmYWNlIGFuZCB0aGVuIHdlJ3JlIGFsd2F5cyBfc2VuZGluZ18gYSByZXF1ZXN0IGFuZCB0aHVzIHdlIHdhaXQgZm9yCiAgICB0aGUgc2luZ2xlIHNvY2tldCB0byBiZWNvbWUgd3JpdGFibGUgb25seSAqLwogc3RhdGljIGludCBodHRwX2dldHNvY2tfZG8oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcykKIHsKICAgLyogd3JpdGUgbW9kZSAqLwotICAodm9pZCludW1zb2NrczsgLyogdW51c2VkLCB3ZSB0cnVzdCBpdCB0byBiZSBhdCBsZWFzdCAxICovCiAgIHNvY2tzWzBdID0gY29ubi0+c29ja1tGSVJTVFNPQ0tFVF07CiAgIHJldHVybiBHRVRTT0NLX1dSSVRFU09DSygwKTsKIH0KQEAgLTE1NTUsNiArMTU2MiwxMyBAQAogICBDVVJMY29kZSByZXN1bHQ7CiAgIERFQlVHQVNTRVJUKChjb25uKSAmJiAoY29ubi0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX1NTTCkpOwogCisjaWZkZWYgRU5BQkxFX1FVSUMKKyAgaWYoY29ubi0+dHJhbnNwb3J0ID09IFRSTlNQUlRfUVVJQykgeworICAgICpkb25lID0gVFJVRTsKKyAgICByZXR1cm4gQ1VSTEVfT0s7CisgIH0KKyNlbmRpZgorCiAgIC8qIHBlcmZvcm0gU1NMIGluaXRpYWxpemF0aW9uIGZvciB0aGlzIHNvY2tldCAqLwogICByZXN1bHQgPSBDdXJsX3NzbF9jb25uZWN0X25vbmJsb2NraW5nKGNvbm4sIEZJUlNUU09DS0VULCBkb25lKTsKICAgaWYocmVzdWx0KQpAQCAtMTU2NCwxMSArMTU3OCwxMCBAQAogfQogCiBzdGF0aWMgaW50IGh0dHBzX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKKyAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcykKIHsKICAgaWYoY29ubi0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX1NTTCkKLSAgICByZXR1cm4gQ3VybF9zc2xfZ2V0c29jayhjb25uLCBzb2NrcywgbnVtc29ja3MpOworICAgIHJldHVybiBDdXJsX3NzbF9nZXRzb2NrKGNvbm4sIHNvY2tzKTsKICAgcmV0dXJuIEdFVFNPQ0tfQkxBTks7CiB9CiAjZW5kaWYgLyogVVNFX1NTTCAqLwpAQCAtMTYwMiw3ICsxNjE1LDggQEAKICAgICBDdXJsX2FkZF9idWZmZXJfZnJlZSgmaHR0cC0+c2VuZF9idWZmZXIpOwogICB9CiAKLSAgQ3VybF9odHRwMl9kb25lKGNvbm4sIHByZW1hdHVyZSk7CisgIEN1cmxfaHR0cDJfZG9uZShkYXRhLCBwcmVtYXR1cmUpOworICBDdXJsX3F1aWNfZG9uZShkYXRhLCBwcmVtYXR1cmUpOwogCiAgIEN1cmxfbWltZV9jbGVhbnBhcnQoJmh0dHAtPmZvcm0pOwogCkBAIC0xNjUwLDYgKzE2NjQsMTIgQEAKIHN0YXRpYyBjb25zdCBjaGFyICpnZXRfaHR0cF9zdHJpbmcoY29uc3Qgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogeworI2lmZGVmIEVOQUJMRV9RVUlDCisgIGlmKChkYXRhLT5zZXQuaHR0cHZlcnNpb24gPT0gQ1VSTF9IVFRQX1ZFUlNJT05fMykgfHwKKyAgICAgKGNvbm4tPmh0dHB2ZXJzaW9uID09IDMwKSkKKyAgICByZXR1cm4gIjMiOworI2VuZGlmCisKICNpZmRlZiBVU0VfTkdIVFRQMgogICBpZihjb25uLT5wcm90by5odHRwYy5oMikKICAgICByZXR1cm4gIjIiOwpAQCAtMTY2OSw4ICsxNjg5LDggQEAKICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CiAgIGRhdGEtPnN0YXRlLmV4cGVjdDEwMGhlYWRlciA9IEZBTFNFOyAvKiBkZWZhdWx0IHRvIGZhbHNlIHVubGVzcyBpdCBpcyBzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFRSVUUgYmVsb3cgKi8KLSAgaWYodXNlX2h0dHBfMV8xcGx1cyhkYXRhLCBjb25uKSAmJgotICAgICAoY29ubi0+aHR0cHZlcnNpb24gIT0gMjApKSB7CisgIGlmKCFkYXRhLT5zdGF0ZS5kaXNhYmxlZXhwZWN0ICYmIHVzZV9odHRwXzFfMXBsdXMoZGF0YSwgY29ubikgJiYKKyAgICAgKGNvbm4tPmh0dHB2ZXJzaW9uIDwgMjApKSB7CiAgICAgLyogaWYgbm90IGRvaW5nIEhUVFAgMS4wIG9yIHZlcnNpb24gMiwgb3IgZGlzYWJsZWQgZXhwbGljaXRseSwgd2UgYWRkIGFuCiAgICAgICAgRXhwZWN0OiAxMDAtY29udGludWUgdG8gdGhlIGhlYWRlcnMgd2hpY2ggYWN0dWFsbHkgc3BlZWRzIHVwIHBvc3QKICAgICAgICBvcGVyYXRpb25zIChhcyB0aGVyZSBpcyBvbmUgcGFja2V0IGNvbWluZyBiYWNrIGZyb20gdGhlIHdlYiBzZXJ2ZXIpICovCkBAIC0xNzAwLDcgKzE3MjAsNyBAQAogICAgd2lsbCByZXR1cm4gYW4gZXJyb3IgY29kZSBpZiBvbmUgb2YgdGhlIGhlYWRlcnMgaXMKICAgIG5vdCBmb3JtYXR0ZWQgY29ycmVjdGx5ICovCiBDVVJMY29kZSBDdXJsX2h0dHBfY29tcGlsZV90cmFpbGVycyhzdHJ1Y3QgY3VybF9zbGlzdCAqdHJhaWxlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJsX3NlbmRfYnVmZmVyICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJsX3NlbmRfYnVmZmVyICoqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEN1cmxfZWFzeSAqaGFuZGxlKQogewogICBjaGFyICpwdHIgPSBOVUxMOwpAQCAtMTcyNiw3ICsxNzQ2LDcgQEAKICAgICAvKiBvbmx5IGFkZCBjb3JyZWN0bHkgZm9ybWF0dGVkIHRyYWlsZXJzICovCiAgICAgcHRyID0gc3RyY2hyKHRyYWlsZXJzLT5kYXRhLCAnOicpOwogICAgIGlmKHB0ciAmJiAqKHB0ciArIDEpID09ICcgJykgewotICAgICAgcmVzdWx0ID0gQ3VybF9hZGRfYnVmZmVyZigmYnVmZmVyLCAiJXMlcyIsIHRyYWlsZXJzLT5kYXRhLAorICAgICAgcmVzdWx0ID0gQ3VybF9hZGRfYnVmZmVyZihidWZmZXIsICIlcyVzIiwgdHJhaWxlcnMtPmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZG9mbGluZV9uYXRpdmUpOwogICAgICAgaWYocmVzdWx0KQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTczNSw3ICsxNzU1LDcgQEAKICAgICAgIGluZm9mKGhhbmRsZSwgIk1hbGZvcm1hdHRlZCB0cmFpbGluZyBoZWFkZXIgISBTa2lwcGluZyB0cmFpbGVyLiIpOwogICAgIHRyYWlsZXJzID0gdHJhaWxlcnMtPm5leHQ7CiAgIH0KLSAgcmVzdWx0ID0gQ3VybF9hZGRfYnVmZmVyKCZidWZmZXIsIGVuZG9mbGluZV9uZXR3b3JrLAorICByZXN1bHQgPSBDdXJsX2FkZF9idWZmZXIoYnVmZmVyLCBlbmRvZmxpbmVfbmV0d29yaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihlbmRvZmxpbmVfbmV0d29yaykpOwogICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTg1MSw3ICsxODcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpb246ICovCiAgICAgICAgICAgICAgICAgICBjaGVja3ByZWZpeCgiQ29ubmVjdGlvbjoiLCBjb21wYXJlKSkKICAgICAgICAgICAgIDsKLSAgICAgICAgICBlbHNlIGlmKChjb25uLT5odHRwdmVyc2lvbiA9PSAyMCkgJiYKKyAgICAgICAgICBlbHNlIGlmKChjb25uLT5odHRwdmVyc2lvbiA+PSAyMCkgJiYKICAgICAgICAgICAgICAgICAgIGNoZWNrcHJlZml4KCJUcmFuc2Zlci1FbmNvZGluZzoiLCBjb21wYXJlKSkKICAgICAgICAgICAgIC8qIEhUVFAvMiBkb2Vzbid0IHN1cHBvcnQgY2h1bmtlZCByZXF1ZXN0cyAqLwogICAgICAgICAgICAgOwpAQCAtMTg4MSw5ICsxOTAxLDEwIEBACiB9CiAKICNpZm5kZWYgQ1VSTF9ESVNBQkxFX1BBUlNFREFURQotQ1VSTGNvZGUgQ3VybF9hZGRfdGltZWNvbmRpdGlvbihzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLAorQ1VSTGNvZGUgQ3VybF9hZGRfdGltZWNvbmRpdGlvbihjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1cmxfc2VuZF9idWZmZXIgKnJlcV9idWZmZXIpCiB7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwogICBjb25zdCBzdHJ1Y3QgdG0gKnRtOwogICBzdHJ1Y3QgdG0ga2VlcHRpbWU7CiAgIENVUkxjb2RlIHJlc3VsdDsKQEAgLTE5MTYsNiArMTkzNywxMSBAQAogICAgIGJyZWFrOwogICB9CiAKKyAgaWYoQ3VybF9jaGVja2hlYWRlcnMoY29ubiwgY29uZHApKSB7CisgICAgLyogQSBjdXN0b20gaGVhZGVyIHdhcyBzcGVjaWZpZWQ7IGl0IHdpbGwgYmUgc2VudCBpbnN0ZWFkLiAqLworICAgIHJldHVybiBDVVJMRV9PSzsKKyAgfQorCiAgIC8qIFRoZSBJZi1Nb2RpZmllZC1TaW5jZSBoZWFkZXIgZmFtaWx5IHNob3VsZCBoYXZlIHRoZWlyIHRpbWVzIHNldCBpbgogICAgKiBHTVQgYXMgUkZDMjYxNiBkZWZpbmVzOiAiQWxsIEhUVFAgZGF0ZS90aW1lIHN0YW1wcyBNVVNUIGJlCiAgICAqIHJlcHJlc2VudGVkIGluIEdyZWVud2ljaCBNZWFuIFRpbWUgKEdNVCksIHdpdGhvdXQgZXhjZXB0aW9uLiBGb3IgdGhlCkBAIC0xOTQxLDEwICsxOTY3LDEwIEBACiB9CiAjZWxzZQogLyogZGlzYWJsZWQgKi8KLUNVUkxjb2RlIEN1cmxfYWRkX3RpbWVjb25kaXRpb24oc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKK0NVUkxjb2RlIEN1cmxfYWRkX3RpbWVjb25kaXRpb24oY29uc3Qgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJsX3NlbmRfYnVmZmVyICpyZXFfYnVmZmVyKQogewotICAodm9pZClkYXRhOworICAodm9pZCljb25uOwogICAodm9pZClyZXFfYnVmZmVyOwogICByZXR1cm4gQ1VSTEVfT0s7CiB9CkBAIC0xOTc2LDU1ICsyMDAyLDU3IEBACiAgIGNvbnN0IGNoYXIgKmh0dHBzdHJpbmc7CiAgIEN1cmxfc2VuZF9idWZmZXIgKnJlcV9idWZmZXI7CiAgIGN1cmxfb2ZmX3QgcG9zdHNpemUgPSAwOyAvKiBjdXJsX29mZl90IHRvIGhhbmRsZSBsYXJnZSBmaWxlIHNpemVzICovCisgIGNoYXIgKmFsdHVzZWQgPSBOVUxMOwogCiAgIC8qIEFsd2F5cyBjb25zaWRlciB0aGUgRE8gcGhhc2UgZG9uZSBhZnRlciB0aGlzIGZ1bmN0aW9uIGNhbGwsIGV2ZW4gaWYgdGhlcmUKICAgICAgbWF5IGJlIHBhcnRzIG9mIHRoZSByZXF1ZXN0IHRoYXQgaXMgbm90IHlldCBzZW50LCBzaW5jZSB3ZSBjYW4gZGVhbCB3aXRoCiAgICAgIHRoZSByZXN0IG9mIHRoZSByZXF1ZXN0IGluIHRoZSBQRVJGT1JNIHBoYXNlLiAqLwogICAqZG9uZSA9IFRSVUU7CiAKLSAgaWYoY29ubi0+aHR0cHZlcnNpb24gPCAyMCkgeyAvKiB1bmxlc3MgdGhlIGNvbm5lY3Rpb24gaXMgcmUtdXNlZCBhbmQgYWxyZWFkeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAyICovCi0gICAgc3dpdGNoKGNvbm4tPm5lZ25wbikgewotICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMjoKLSAgICAgIGNvbm4tPmh0dHB2ZXJzaW9uID0gMjA7IC8qIHdlIGtub3cgd2UncmUgb24gSFRUUC8yIG5vdyAqLwotCi0gICAgICByZXN1bHQgPSBDdXJsX2h0dHAyX3N3aXRjaGVkKGNvbm4sIE5VTEwsIDApOwotICAgICAgaWYocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzE6Ci0gICAgICAvKiBjb250aW51ZSB3aXRoIEhUVFAvMS4xIHdoZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgKi8KLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAvKiBDaGVjayBpZiB1c2VyIHdhbnRzIHRvIHVzZSBIVFRQLzIgd2l0aCBjbGVhciBUQ1AqLwotI2lmZGVmIFVTRV9OR0hUVFAyCi0gICAgICBpZihjb25uLT5kYXRhLT5zZXQuaHR0cHZlcnNpb24gPT0KLSAgICAgICAgIENVUkxfSFRUUF9WRVJTSU9OXzJfUFJJT1JfS05PV0xFREdFKSB7Ci0gICAgICAgIGlmKGNvbm4tPmJpdHMuaHR0cHByb3h5ICYmICFjb25uLT5iaXRzLnR1bm5lbF9wcm94eSkgewotICAgICAgICAgIC8qIFdlIGRvbid0IHN1cHBvcnQgSFRUUC8yIHByb3hpZXMgeWV0LiBBbHNvIGl0J3MgZGViYXRhYmxlIHdoZXRoZXIKLSAgICAgICAgICAgICBvciBub3QgdGhpcyBzZXR0aW5nIHNob3VsZCBhcHBseSB0byBIVFRQLzIgcHJveGllcy4gKi8KLSAgICAgICAgICBpbmZvZihkYXRhLCAiSWdub3JpbmcgSFRUUC8yIHByaW9yIGtub3dsZWRnZSBkdWUgdG8gcHJveHlcbiIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgREVCVUdGKGluZm9mKGRhdGEsICJIVFRQLzIgb3ZlciBjbGVhbiBUQ1BcbiIpKTsKLSAgICAgICAgY29ubi0+aHR0cHZlcnNpb24gPSAyMDsKKyAgaWYoY29ubi0+dHJhbnNwb3J0ICE9IFRSTlNQUlRfUVVJQykgeworICAgIGlmKGNvbm4tPmh0dHB2ZXJzaW9uIDwgMjApIHsgLyogdW5sZXNzIHRoZSBjb25uZWN0aW9uIGlzIHJlLXVzZWQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGh0dHAyICovCisgICAgICBzd2l0Y2goY29ubi0+bmVnbnBuKSB7CisgICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzI6CisgICAgICAgIGNvbm4tPmh0dHB2ZXJzaW9uID0gMjA7IC8qIHdlIGtub3cgd2UncmUgb24gSFRUUC8yIG5vdyAqLwogCiAgICAgICAgIHJlc3VsdCA9IEN1cmxfaHR0cDJfc3dpdGNoZWQoY29ubiwgTlVMTCwgMCk7CiAgICAgICAgIGlmKHJlc3VsdCkKICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMV8xOgorICAgICAgICAvKiBjb250aW51ZSB3aXRoIEhUVFAvMS4xIHdoZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgKi8KKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICAvKiBDaGVjayBpZiB1c2VyIHdhbnRzIHRvIHVzZSBIVFRQLzIgd2l0aCBjbGVhciBUQ1AqLworI2lmZGVmIFVTRV9OR0hUVFAyCisgICAgICAgIGlmKGNvbm4tPmRhdGEtPnNldC5odHRwdmVyc2lvbiA9PQorICAgICAgICAgICBDVVJMX0hUVFBfVkVSU0lPTl8yX1BSSU9SX0tOT1dMRURHRSkgeworICAgICAgICAgIGlmKGNvbm4tPmJpdHMuaHR0cHByb3h5ICYmICFjb25uLT5iaXRzLnR1bm5lbF9wcm94eSkgeworICAgICAgICAgICAgLyogV2UgZG9uJ3Qgc3VwcG9ydCBIVFRQLzIgcHJveGllcyB5ZXQuIEFsc28gaXQncyBkZWJhdGFibGUKKyAgICAgICAgICAgICAgIHdoZXRoZXIgb3Igbm90IHRoaXMgc2V0dGluZyBzaG91bGQgYXBwbHkgdG8gSFRUUC8yIHByb3hpZXMuICovCisgICAgICAgICAgICBpbmZvZihkYXRhLCAiSWdub3JpbmcgSFRUUC8yIHByaW9yIGtub3dsZWRnZSBkdWUgdG8gcHJveHlcbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorCisgICAgICAgICAgREVCVUdGKGluZm9mKGRhdGEsICJIVFRQLzIgb3ZlciBjbGVhbiBUQ1BcbiIpKTsKKyAgICAgICAgICBjb25uLT5odHRwdmVyc2lvbiA9IDIwOworCisgICAgICAgICAgcmVzdWx0ID0gQ3VybF9odHRwMl9zd2l0Y2hlZChjb25uLCBOVUxMLCAwKTsKKyAgICAgICAgICBpZihyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAjZW5kaWYKLSAgICAgIGJyZWFrOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvKiBwcmVwYXJlIGZvciBhIGh0dHAyIHJlcXVlc3QgKi8KKyAgICAgIHJlc3VsdCA9IEN1cmxfaHR0cDJfc2V0dXAoY29ubik7CisgICAgICBpZihyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICB9Ci0gIGVsc2UgewotICAgIC8qIHByZXBhcmUgZm9yIGEgaHR0cDIgcmVxdWVzdCAqLwotICAgIHJlc3VsdCA9IEN1cmxfaHR0cDJfc2V0dXAoY29ubik7Ci0gICAgaWYocmVzdWx0KQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCiAgIGh0dHAgPSBkYXRhLT5yZXEucHJvdG9wOwogICBERUJVR0FTU0VSVChodHRwKTsKIApAQCAtMjIyMCwxNCArMjI0OCwxNiBAQAogICBlbHNlIHsKICAgICBpZigoY29ubi0+aGFuZGxlci0+cHJvdG9jb2wgJiBQUk9UT19GQU1JTFlfSFRUUCkgJiYKICAgICAgICAoKChodHRwcmVxID09IEhUVFBSRVFfUE9TVF9NSU1FIHx8IGh0dHByZXEgPT0gSFRUUFJFUV9QT1NUX0ZPUk0pICYmCi0gICAgICAgaHR0cC0+cG9zdHNpemUgPCAwKSB8fAotICAgICAgIChkYXRhLT5zZXQudXBsb2FkICYmIGRhdGEtPnN0YXRlLmluZmlsZXNpemUgPT0gLTEpKSkgeworICAgICAgICAgaHR0cC0+cG9zdHNpemUgPCAwKSB8fAorICAgICAgICAoKGRhdGEtPnNldC51cGxvYWQgfHwgaHR0cHJlcSA9PSBIVFRQUkVRX1BPU1QpICYmCisgICAgICAgICBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplID09IC0xKSkpIHsKICAgICAgIGlmKGNvbm4tPmJpdHMuYXV0aG5lZykKICAgICAgICAgLyogZG9uJ3QgZW5hYmxlIGNodW5rZWQgZHVyaW5nIGF1dGggbmVnICovCiAgICAgICAgIDsKICAgICAgIGVsc2UgaWYodXNlX2h0dHBfMV8xcGx1cyhkYXRhLCBjb25uKSkgewotICAgICAgICAvKiBIVFRQLCB1cGxvYWQsIHVua25vd24gZmlsZSBzaXplIGFuZCBub3QgSFRUUCAxLjAgKi8KLSAgICAgICAgZGF0YS0+cmVxLnVwbG9hZF9jaHVua3kgPSBUUlVFOworICAgICAgICBpZihjb25uLT5odHRwdmVyc2lvbiA8IDIwKQorICAgICAgICAgIC8qIEhUVFAsIHVwbG9hZCwgdW5rbm93biBmaWxlIHNpemUgYW5kIG5vdCBIVFRQIDEuMCAqLworICAgICAgICAgIGRhdGEtPnJlcS51cGxvYWRfY2h1bmt5ID0gVFJVRTsKICAgICAgIH0KICAgICAgIGVsc2UgewogICAgICAgICBmYWlsZihkYXRhLCAiQ2h1bmt5IHVwbG9hZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IEhUVFAgMS4wIik7CkBAIC0yMzI4LDcgKzIzNTgsNiBAQAogCiAgICAgLyogYW5kIG5vIGZyYWdtZW50IHBhcnQgKi8KICAgICBDVVJMVWNvZGUgdWM7Ci0gICAgY2hhciAqdXJsOwogICAgIENVUkxVICpoID0gY3VybF91cmxfZHVwKGRhdGEtPnN0YXRlLnVoKTsKICAgICBpZighaCkKICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwpAQCAtMjM1OSwxOSArMjM4OCwxNSBAQAogICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgICAgIH0KICAgICB9Ci0gICAgLyogbm93IGV4dHJhY3QgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBVUkwgKi8KLSAgICB1YyA9IGN1cmxfdXJsX2dldChoLCBDVVJMVVBBUlRfVVJMLCAmdXJsLCAwKTsKKyAgICAvKiBFeHRyYWN0IHRoZSBVUkwgdG8gdXNlIGluIHRoZSByZXF1ZXN0LiBTdG9yZSBpbiBTVFJJTkdfVEVNUF9VUkwgZm9yCisgICAgICAgY2xlYW4tdXAgcmVhc29ucyBpZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBiZWZvcmUgdGhlIGZyZWUoKSBmdXJ0aGVyCisgICAgICAgZG93bi4gKi8KKyAgICB1YyA9IGN1cmxfdXJsX2dldChoLCBDVVJMVVBBUlRfVVJMLCAmZGF0YS0+c2V0LnN0cltTVFJJTkdfVEVNUF9VUkxdLCAwKTsKICAgICBpZih1YykgewogICAgICAgY3VybF91cmxfY2xlYW51cChoKTsKICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICAgIH0KIAotICAgIGlmKGRhdGEtPmNoYW5nZS51cmxfYWxsb2MpCi0gICAgICBmcmVlKGRhdGEtPmNoYW5nZS51cmwpOwotCi0gICAgZGF0YS0+Y2hhbmdlLnVybCA9IHVybDsKLSAgICBkYXRhLT5jaGFuZ2UudXJsX2FsbG9jID0gVFJVRTsKLQogICAgIGN1cmxfdXJsX2NsZWFudXAoaCk7CiAKICAgICBpZihzdHJjYXNlY29tcGFyZSgiZnRwIiwgZGF0YS0+c3RhdGUudXAuc2NoZW1lKSkgewpAQCAtMjU1MCwxMiArMjU3NSwxNiBAQAogICAgIHF1ZXJ5ID0gTlVMTDsKICAgfQogCisjaWZuZGVmIENVUkxfRElTQUJMRV9QUk9YWQogICAvKiB1cmwgKi8KICAgaWYoY29ubi0+Yml0cy5odHRwcHJveHkgJiYgIWNvbm4tPmJpdHMudHVubmVsX3Byb3h5KSB7Ci0gICAgY2hhciAqdXJsID0gZGF0YS0+Y2hhbmdlLnVybDsKKyAgICBjaGFyICp1cmwgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19URU1QX1VSTF07CiAgICAgcmVzdWx0ID0gQ3VybF9hZGRfYnVmZmVyKCZyZXFfYnVmZmVyLCB1cmwsIHN0cmxlbih1cmwpKTsKKyAgICBDdXJsX3NhZmVmcmVlKGRhdGEtPnNldC5zdHJbU1RSSU5HX1RFTVBfVVJMXSk7CiAgIH0KLSAgZWxzZSBpZihwYXN0ZV9mdHBfdXNlcnB3ZCkKKyAgZWxzZQorI2VuZGlmCisgIGlmKHBhc3RlX2Z0cF91c2VycHdkKQogICAgIHJlc3VsdCA9IEN1cmxfYWRkX2J1ZmZlcmYoJnJlcV9idWZmZXIsICJmdHA6Ly8lczolc0AlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT51c2VyLCBjb25uLT5wYXNzd2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoICsgc2l6ZW9mKCJmdHA6Ly8iKSAtIDEpOwpAQCAtMjU2OSw2ICsyNTk4LDE0IEBACiAgIGlmKHJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0OwogCisjaWZkZWYgVVNFX0FMVFNWQworICBpZihjb25uLT5iaXRzLmFsdHVzZWQgJiYgIUN1cmxfY2hlY2toZWFkZXJzKGNvbm4sICJBbHQtVXNlZCIpKSB7CisgICAgYWx0dXNlZCA9IGFwcmludGYoIkFsdC1Vc2VkOiAlczolZFxyXG4iLAorICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmNvbm5fdG9faG9zdC5uYW1lLCBjb25uLT5jb25uX3RvX3BvcnQpOworICAgIGlmKCFhbHR1c2VkKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKyNlbmRpZgogICByZXN1bHQgPQogICAgIEN1cmxfYWRkX2J1ZmZlcmYoJnJlcV9idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAiJXMiIC8qIGZ0cCB0eXBlY29kZSAoO3R5cGU9eCkgKi8KQEAgLTI1ODMsNyArMjYyMCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAiJXMiIC8qIGFjY2VwdC1lbmNvZGluZyAqLwogICAgICAgICAgICAgICAgICAgICAgIiVzIiAvKiByZWZlcmVyICovCiAgICAgICAgICAgICAgICAgICAgICAiJXMiIC8qIFByb3h5LUNvbm5lY3Rpb24gKi8KLSAgICAgICAgICAgICAgICAgICAgICIlcyIsLyogdHJhbnNmZXItZW5jb2RpbmcgKi8KKyAgICAgICAgICAgICAgICAgICAgICIlcyIgLyogdHJhbnNmZXItZW5jb2RpbmcgKi8KKyAgICAgICAgICAgICAgICAgICAgICIlcyIsLyogQWx0LVVzZWQgKi8KIAogICAgICAgICAgICAgICAgICAgICAgZnRwX3R5cGVjb2RlLAogICAgICAgICAgICAgICAgICAgICAgaHR0cHN0cmluZywKQEAgLTI2MDksMTMgKzI2NDcsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAhY29ubi0+Yml0cy50dW5uZWxfcHJveHkgJiYKICAgICAgICAgICAgICAgICAgICAgICAhQ3VybF9jaGVja1Byb3h5aGVhZGVycyhjb25uLCAiUHJveHktQ29ubmVjdGlvbiIpKT8KICAgICAgICAgICAgICAgICAgICAgICJQcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlXHJcbiI6IiIsCi0gICAgICAgICAgICAgICAgICAgICB0ZQorICAgICAgICAgICAgICAgICAgICAgdGUsCisgICAgICAgICAgICAgICAgICAgICBhbHR1c2VkID8gYWx0dXNlZCA6ICIiCiAgICAgICApOwogCiAgIC8qIGNsZWFyIHVzZXJwd2QgYW5kIHByb3h5dXNlcnB3ZCB0byBhdm9pZCByZS11c2luZyBvbGQgY3JlZGVudGlhbHMKICAgICogZnJvbSByZS11c2VkIGNvbm5lY3Rpb25zICovCiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+YWxsb2NwdHIudXNlcnB3ZCk7CiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+YWxsb2NwdHIucHJveHl1c2VycHdkKTsKKyAgZnJlZShhbHR1c2VkKTsKIAogICBpZihyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI2MzUsNyArMjY3NSw3IEBACiAgICAgc3RydWN0IENvb2tpZSAqY28gPSBOVUxMOyAvKiBubyBjb29raWVzIGZyb20gc3RhcnQgKi8KICAgICBpbnQgY291bnQgPSAwOwogCi0gICAgaWYoZGF0YS0+Y29va2llcykgeworICAgIGlmKGRhdGEtPmNvb2tpZXMgJiYgZGF0YS0+c3RhdGUuY29va2llX2VuZ2luZSkgewogICAgICAgQ3VybF9zaGFyZV9sb2NrKGRhdGEsIENVUkxfTE9DS19EQVRBX0NPT0tJRSwgQ1VSTF9MT0NLX0FDQ0VTU19TSU5HTEUpOwogICAgICAgY28gPSBDdXJsX2Nvb2tpZV9nZXRsaXN0KGRhdGEtPmNvb2tpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+YWxsb2NwdHIuY29va2llaG9zdD8KQEAgLTI2ODMsNyArMjcyMyw3IEBACiAgIH0KICNlbmRpZgogCi0gIHJlc3VsdCA9IEN1cmxfYWRkX3RpbWVjb25kaXRpb24oZGF0YSwgcmVxX2J1ZmZlcik7CisgIHJlc3VsdCA9IEN1cmxfYWRkX3RpbWVjb25kaXRpb24oY29ubiwgcmVxX2J1ZmZlcik7CiAgIGlmKHJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0OwogCkBAIC0zMDAwLDExICszMDQwLDEyIEBACiAgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHNlbmRpbmcgSFRUUCByZXF1ZXN0Iik7CiAgICAgZWxzZQogICAgICAgLyogSFRUUCBHRVQvSEVBRCBkb3dubG9hZDogKi8KLSAgICAgIEN1cmxfc2V0dXBfdHJhbnNmZXIoZGF0YSwgRklSU1RTT0NLRVQsIC0xLCBUUlVFLAotICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwLT5wb3N0ZGF0YT9GSVJTVFNPQ0tFVDotMSk7CisgICAgICBDdXJsX3NldHVwX3RyYW5zZmVyKGRhdGEsIEZJUlNUU09DS0VULCAtMSwgVFJVRSwgLTEpOwogICB9CiAgIGlmKHJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0OworICBpZighcG9zdHNpemUpCisgICAgZGF0YS0+cmVxLnVwbG9hZF9kb25lID0gVFJVRTsKIAogICBpZihkYXRhLT5yZXEud3JpdGVieXRlY291bnQpIHsKICAgICAvKiBpZiBhIHJlcXVlc3QtYm9keSBoYXMgYmVlbiBzZW50IG9mZiwgd2UgbWFrZSBzdXJlIHRoaXMgcHJvZ3Jlc3MgaXMgbm90ZWQKQEAgLTMxNDcsNiArMzE4OCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU2luZ2xlUmVxdWVzdCAqaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgpCiB7CisgIC8qIGxlbmd0aCBpcyBhdCBtb3N0IHRoZSBzaXplIG9mIGEgZnVsbCByZWFkIGJ1ZmZlciwgZm9yIHdoaWNoIHRoZSB1cHBlcgorICAgICBib3VuZCBpcyBDVVJMX01BWF9SRUFEX1NJWkUuIFRoZXJlIGlzIHRodXMgbm8gY2hhbmNlIG9mIG92ZXJmbG93IGluIHRoaXMKKyAgICAgY2FsY3VsYXRpb24uICovCiAgIHNpemVfdCBuZXdzaXplID0gay0+aGJ1ZmxlbiArIGxlbmd0aDsKICAgaWYobmV3c2l6ZSA+IENVUkxfTUFYX0hUVFBfSEVBREVSKSB7CiAgICAgLyogVGhlIHJlYXNvbiB0byBoYXZlIGEgbWF4IGxpbWl0IGZvciB0aGlzIGlzIHRvIGF2b2lkIHRoZSByaXNrIG9mIGEgYmFkCkBAIC0zNTAxLDcgKzM1NDUsMTYgQEAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgQ3VybF9leHBpcmVfZG9uZShkYXRhLCBFWFBJUkVfMTAwX1RJTUVPVVQpOwogICAgICAgICAgICAgaWYoIWstPnVwbG9hZF9kb25lKSB7Ci0gICAgICAgICAgICAgIGlmKGRhdGEtPnNldC5odHRwX2tlZXBfc2VuZGluZ19vbl9lcnJvcikgeworICAgICAgICAgICAgICBpZigoay0+aHR0cGNvZGUgPT0gNDE3KSAmJiBkYXRhLT5zdGF0ZS5leHBlY3QxMDBoZWFkZXIpIHsKKyAgICAgICAgICAgICAgICAvKiA0MTcgRXhwZWN0YXRpb24gRmFpbGVkIC0gdHJ5IGFnYWluIHdpdGhvdXQgdGhlIEV4cGVjdAorICAgICAgICAgICAgICAgICAgIGhlYWRlciAqLworICAgICAgICAgICAgICAgIGluZm9mKGRhdGEsICJHb3QgNDE3IHdoaWxlIHdhaXRpbmcgZm9yIGEgMTAwXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5kaXNhYmxlZXhwZWN0ID0gVFJVRTsKKyAgICAgICAgICAgICAgICBERUJVR0FTU0VSVCghZGF0YS0+cmVxLm5ld3VybCk7CisgICAgICAgICAgICAgICAgZGF0YS0+cmVxLm5ld3VybCA9IHN0cmR1cChjb25uLT5kYXRhLT5jaGFuZ2UudXJsKTsKKyAgICAgICAgICAgICAgICBDdXJsX2RvbmVfc2VuZGluZyhjb25uLCBrKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIGlmKGRhdGEtPnNldC5odHRwX2tlZXBfc2VuZGluZ19vbl9lcnJvcikgewogICAgICAgICAgICAgICAgIGluZm9mKGRhdGEsICJIVFRQIGVycm9yIGJlZm9yZSBlbmQgb2Ygc2VuZCwga2VlcCBzZW5kaW5nXG4iKTsKICAgICAgICAgICAgICAgICBpZihrLT5leHAxMDAgPiBFWFAxMDBfU0VORF9EQVRBKSB7CiAgICAgICAgICAgICAgICAgICBrLT5leHAxMDAgPSBFWFAxMDBfU0VORF9EQVRBOwpAQCAtMzUxMSw4ICszNTY0LDEwIEBACiAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGluZm9mKGRhdGEsICJIVFRQIGVycm9yIGJlZm9yZSBlbmQgb2Ygc2VuZCwgc3RvcCBzZW5kaW5nXG4iKTsKICAgICAgICAgICAgICAgICBzdHJlYW1jbG9zZShjb25uLCAiU3RvcCBzZW5kaW5nIGRhdGEgYmVmb3JlIGV2ZXJ5dGhpbmcgc2VudCIpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IEN1cmxfZG9uZV9zZW5kaW5nKGNvbm4sIGspOworICAgICAgICAgICAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgay0+dXBsb2FkX2RvbmUgPSBUUlVFOwotICAgICAgICAgICAgICAgIGstPmtlZXBvbiAmPSB+S0VFUF9TRU5EOyAvKiBkb24ndCBzZW5kICovCiAgICAgICAgICAgICAgICAgaWYoZGF0YS0+c3RhdGUuZXhwZWN0MTAwaGVhZGVyKQogICAgICAgICAgICAgICAgICAgay0+ZXhwMTAwID0gRVhQMTAwX0ZBSUxFRDsKICAgICAgICAgICAgICAgfQpAQCAtMzY0OSw2ICszNzA0LDcgQEAKICAgICAgICAgICogZ3VhcmFudGVlcyBvbiBmdXR1cmUgYmVoYXZpb3JzIHNpbmNlIGl0IGlzbid0IHdpdGhpbiB0aGUgcHJvdG9jb2wuCiAgICAgICAgICAqLwogICAgICAgICBjaGFyIHNlcGFyYXRvcjsKKyAgICAgICAgY2hhciB0d29vcnRocmVlWzJdOwogICAgICAgICBuYyA9IHNzY2FuZihIRUFERVIxLAogICAgICAgICAgICAgICAgICAgICAiIEhUVFAvJTFkLiUxZCVjJTNkIiwKICAgICAgICAgICAgICAgICAgICAgJmh0dHB2ZXJzaW9uX21ham9yLApAQCAtMzY1Niw4ICszNzEyLDggQEAKICAgICAgICAgICAgICAgICAgICAgJnNlcGFyYXRvciwKICAgICAgICAgICAgICAgICAgICAgJmstPmh0dHBjb2RlKTsKIAotICAgICAgICBpZihuYyA9PSAxICYmIGh0dHB2ZXJzaW9uX21ham9yID09IDIgJiYKLSAgICAgICAgICAgMSA9PSBzc2NhbmYoSEVBREVSMSwgIiBIVFRQLzIgJWQiLCAmay0+aHR0cGNvZGUpKSB7CisgICAgICAgIGlmKG5jID09IDEgJiYgaHR0cHZlcnNpb25fbWFqb3IgPj0gMiAmJgorICAgICAgICAgICAyID09IHNzY2FuZihIRUFERVIxLCAiIEhUVFAvJTFbMjNdICVkIiwgdHdvb3J0aHJlZSwgJmstPmh0dHBjb2RlKSkgewogICAgICAgICAgIGNvbm4tPmh0dHB2ZXJzaW9uID0gMDsKICAgICAgICAgICBuYyA9IDQ7CiAgICAgICAgICAgc2VwYXJhdG9yID0gJyAnOwpAQCAtMzY5NSw3ICszNzUxLDcgQEAKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgZmFpbGYoZGF0YSwgIlVuc3VwcG9ydGVkIEhUVFAgdmVyc2lvbiBpbiByZXNwb25zZVxuIik7CisgICAgICAgICAgZmFpbGYoZGF0YSwgIlVuc3VwcG9ydGVkIEhUVFAgdmVyc2lvbiBpbiByZXNwb25zZSIpOwogICAgICAgICAgIHJldHVybiBDVVJMRV9VTlNVUFBPUlRFRF9QUk9UT0NPTDsKICAgICAgICAgfQogICAgICAgfQpAQCAtMzc2OSw2ICszODI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIkhUVFAgMS4xIG9yIGxhdGVyIHdpdGggcGVyc2lzdGVudCBjb25uZWN0aW9uXG4iKSk7CiAgICAgICAgIH0KIAorICAgICAgICBrLT5odHRwX2JvZHlsZXNzID0gay0+aHR0cGNvZGUgPj0gMTAwICYmIGstPmh0dHBjb2RlIDwgMjAwOwogICAgICAgICBzd2l0Y2goay0+aHR0cGNvZGUpIHsKICAgICAgICAgY2FzZSAzMDQ6CiAgICAgICAgICAgLyogKHF1b3RlIGZyb20gUkZDMjYxNiwgc2VjdGlvbiAxMC4zLjUpOiBUaGUgMzA0IHJlc3BvbnNlCkBAIC0zNzg2LDEwICszODQzLDkgQEAKICAgICAgICAgICAgKiBlbXB0eSBsaW5lIGFmdGVyIHRoZSBoZWFkZXIgZmllbGRzLiAqLwogICAgICAgICAgIGstPnNpemUgPSAwOwogICAgICAgICAgIGstPm1heGRvd25sb2FkID0gMDsKLSAgICAgICAgICBrLT5pZ25vcmVjbCA9IFRSVUU7IC8qIGlnbm9yZSBDb250ZW50LUxlbmd0aCBoZWFkZXJzICovCisgICAgICAgICAgay0+aHR0cF9ib2R5bGVzcyA9IFRSVUU7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgLyogbm90aGluZyAqLwogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICB9CkBAIC0zODA1LDggKzM4NjEsOCBAQAogICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIC8qIENoZWNrIGZvciBDb250ZW50LUxlbmd0aDogaGVhZGVyIGxpbmVzIHRvIGdldCBzaXplICovCi0gICAgaWYoIWstPmlnbm9yZWNsICYmICFkYXRhLT5zZXQuaWdub3JlY2wgJiYKLSAgICAgICBjaGVja3ByZWZpeCgiQ29udGVudC1MZW5ndGg6Iiwgay0+cCkpIHsKKyAgICBpZighay0+aHR0cF9ib2R5bGVzcyAmJgorICAgICAgICFkYXRhLT5zZXQuaWdub3JlY2wgJiYgY2hlY2twcmVmaXgoIkNvbnRlbnQtTGVuZ3RoOiIsIGstPnApKSB7CiAgICAgICBjdXJsX29mZl90IGNvbnRlbnRsZW5ndGg7CiAgICAgICBDVVJMb2ZmdCBvZmZ0ID0gY3VybHhfc3RydG9vZmZ0KGstPnAgKyAxNSwgTlVMTCwgMTAsICZjb250ZW50bGVuZ3RoKTsKIApAQCAtMzg5NSw3ICszOTUxLDcgQEAKICAgICAgICAqLwogICAgICAgc3RyZWFtY2xvc2UoY29ubiwgIkNvbm5lY3Rpb246IGNsb3NlIHVzZWQiKTsKICAgICB9Ci0gICAgZWxzZSBpZihjaGVja3ByZWZpeCgiVHJhbnNmZXItRW5jb2Rpbmc6Iiwgay0+cCkpIHsKKyAgICBlbHNlIGlmKCFrLT5odHRwX2JvZHlsZXNzICYmIGNoZWNrcHJlZml4KCJUcmFuc2Zlci1FbmNvZGluZzoiLCBrLT5wKSkgewogICAgICAgLyogT25lIG9yIG1vcmUgZW5jb2RpbmdzLiBXZSBjaGVjayBmb3IgY2h1bmtlZCBhbmQvb3IgYSBjb21wcmVzc2lvbgogICAgICAgICAgYWxnb3JpdGhtLiAqLwogICAgICAgLyoKQEAgLTM5MTEsNyArMzk2Nyw3IEBACiAgICAgICBpZihyZXN1bHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoIkNvbnRlbnQtRW5jb2Rpbmc6Iiwgay0+cCkgJiYKKyAgICBlbHNlIGlmKCFrLT5odHRwX2JvZHlsZXNzICYmIGNoZWNrcHJlZml4KCJDb250ZW50LUVuY29kaW5nOiIsIGstPnApICYmCiAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19FTkNPRElOR10pIHsKICAgICAgIC8qCiAgICAgICAgKiBQcm9jZXNzIENvbnRlbnQtRW5jb2RpbmcuIExvb2sgZm9yIHRoZSB2YWx1ZXM6IGlkZW50aXR5LApAQCAtMzkyNCw3ICszOTgwLDIwIEBACiAgICAgICBpZihyZXN1bHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoIkNvbnRlbnQtUmFuZ2U6Iiwgay0+cCkpIHsKKyAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJSZXRyeS1BZnRlcjoiLCBrLT5wKSkgeworICAgICAgLyogUmV0cnktQWZ0ZXIgPSBIVFRQLWRhdGUgLyBkZWxheS1zZWNvbmRzICovCisgICAgICBjdXJsX29mZl90IHJldHJ5X2FmdGVyID0gMDsgLyogemVybyBmb3IgdW5rbm93biBvciAibm93IiAqLworICAgICAgdGltZV90IGRhdGUgPSBDdXJsX2dldGRhdGVfY2FwcGVkKCZrLT5wWzEyXSk7CisgICAgICBpZigtMSA9PSBkYXRlKSB7CisgICAgICAgIC8qIG5vdCBhIGRhdGUsIHRyeSBpdCBhcyBhIGRlY2ltYWwgbnVtYmVyICovCisgICAgICAgICh2b2lkKWN1cmx4X3N0cnRvb2ZmdCgmay0+cFsxMl0sIE5VTEwsIDEwLCAmcmV0cnlfYWZ0ZXIpOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICAvKiBjb252ZXJ0IGRhdGUgdG8gbnVtYmVyIG9mIHNlY29uZHMgaW50byB0aGUgZnV0dXJlICovCisgICAgICAgIHJldHJ5X2FmdGVyID0gZGF0ZSAtIHRpbWUoTlVMTCk7CisgICAgICBkYXRhLT5pbmZvLnJldHJ5X2FmdGVyID0gcmV0cnlfYWZ0ZXI7IC8qIHN0b3JlIGl0ICovCisgICAgfQorICAgIGVsc2UgaWYoIWstPmh0dHBfYm9keWxlc3MgJiYgY2hlY2twcmVmaXgoIkNvbnRlbnQtUmFuZ2U6Iiwgay0+cCkpIHsKICAgICAgIC8qIENvbnRlbnQtUmFuZ2U6IGJ5dGVzIFtudW1dLQogICAgICAgICAgQ29udGVudC1SYW5nZTogYnl0ZXM6IFtudW1dLQogICAgICAgICAgQ29udGVudC1SYW5nZTogW251bV0tCkBAIC0zOTU0LDcgKzQwMjMsNyBAQAogICAgICAgICBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA9IDA7IC8qIGdldCBldmVyeXRoaW5nICovCiAgICAgfQogI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DT09LSUVTKQotICAgIGVsc2UgaWYoZGF0YS0+Y29va2llcyAmJgorICAgIGVsc2UgaWYoZGF0YS0+Y29va2llcyAmJiBkYXRhLT5zdGF0ZS5jb29raWVfZW5naW5lICYmCiAgICAgICAgICAgICBjaGVja3ByZWZpeCgiU2V0LUNvb2tpZToiLCBrLT5wKSkgewogICAgICAgQ3VybF9zaGFyZV9sb2NrKGRhdGEsIENVUkxfTE9DS19EQVRBX0NPT0tJRSwKICAgICAgICAgICAgICAgICAgICAgICBDVVJMX0xPQ0tfQUNDRVNTX1NJTkdMRSk7CkBAIC0zOTcwLDExICs0MDM5LDkgQEAKICAgICAgIEN1cmxfc2hhcmVfdW5sb2NrKGRhdGEsIENVUkxfTE9DS19EQVRBX0NPT0tJRSk7CiAgICAgfQogI2VuZGlmCi0gICAgZWxzZSBpZihjaGVja3ByZWZpeCgiTGFzdC1Nb2RpZmllZDoiLCBrLT5wKSAmJgorICAgIGVsc2UgaWYoIWstPmh0dHBfYm9keWxlc3MgJiYgY2hlY2twcmVmaXgoIkxhc3QtTW9kaWZpZWQ6Iiwgay0+cCkgJiYKICAgICAgICAgICAgIChkYXRhLT5zZXQudGltZWNvbmRpdGlvbiB8fCBkYXRhLT5zZXQuZ2V0X2ZpbGV0aW1lKSApIHsKLSAgICAgIHRpbWVfdCBzZWNzID0gdGltZShOVUxMKTsKLSAgICAgIGstPnRpbWVvZmRvYyA9IGN1cmxfZ2V0ZGF0ZShrLT5wICsgc3RybGVuKCJMYXN0LU1vZGlmaWVkOiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWNzKTsKKyAgICAgIGstPnRpbWVvZmRvYyA9IEN1cmxfZ2V0ZGF0ZV9jYXBwZWQoay0+cCArIHN0cmxlbigiTGFzdC1Nb2RpZmllZDoiKSk7CiAgICAgICBpZihkYXRhLT5zZXQuZ2V0X2ZpbGV0aW1lKQogICAgICAgICBkYXRhLT5pbmZvLmZpbGV0aW1lID0gay0+dGltZW9mZG9jOwogICAgIH0KQEAgLTM5OTUsNyArNDA2Miw3IEBACiAgICAgICBpZihyZXN1bHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAjaWZkZWYgVVNFX1NQTkVHTworI2lmZGVmIFVTRV9TUE5FR08KICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJQZXJzaXN0ZW50LUF1dGgiLCBrLT5wKSkgewogICAgICAgc3RydWN0IG5lZ290aWF0ZWRhdGEgKm5lZ2RhdGEgPSAmY29ubi0+bmVnb3RpYXRlOwogICAgICAgc3RydWN0IGF1dGggKmF1dGhwID0gJmRhdGEtPnN0YXRlLmF1dGhob3N0OwpAQCAtNDAwMywxNCArNDA3MCwxNSBAQAogICAgICAgICBjaGFyICpwZXJzaXN0ZW50YXV0aCA9IEN1cmxfY29weV9oZWFkZXJfdmFsdWUoay0+cCk7CiAgICAgICAgIGlmKCFwZXJzaXN0ZW50YXV0aCkKICAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgICAgICAgbmVnZGF0YS0+bm9hdXRocGVyc2lzdCA9IGNoZWNrcHJlZml4KCJmYWxzZSIsIHBlcnNpc3RlbnRhdXRoKTsKKyAgICAgICAgbmVnZGF0YS0+bm9hdXRocGVyc2lzdCA9IGNoZWNrcHJlZml4KCJmYWxzZSIsIHBlcnNpc3RlbnRhdXRoKT8KKyAgICAgICAgICBUUlVFOkZBTFNFOwogICAgICAgICBuZWdkYXRhLT5oYXZlbm9hdXRocGVyc2lzdCA9IFRSVUU7CiAgICAgICAgIGluZm9mKGRhdGEsICJOZWdvdGlhdGU6IG5vYXV0aHBlcnNpc3QgLT4gJWQsIGhlYWRlciBwYXJ0OiAlcyIsCiAgICAgICAgICAgbmVnZGF0YS0+bm9hdXRocGVyc2lzdCwgcGVyc2lzdGVudGF1dGgpOwogICAgICAgICBmcmVlKHBlcnNpc3RlbnRhdXRoKTsKICAgICAgIH0KICAgICB9Ci0gICNlbmRpZgorI2VuZGlmCiAgICAgZWxzZSBpZigoay0+aHR0cGNvZGUgPj0gMzAwICYmIGstPmh0dHBjb2RlIDwgNDAwKSAmJgogICAgICAgICAgICAgY2hlY2twcmVmaXgoIkxvY2F0aW9uOiIsIGstPnApICYmCiAgICAgICAgICAgICAhZGF0YS0+cmVxLmxvY2F0aW9uKSB7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9odHRwLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9odHRwLmgKaW5kZXggYTU5ZmU3YS4uNGMxODI1ZiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHAuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNjksMzIgKzY5LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5jbHVkZWRfYm9keV9ieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NrZXRpbmRleCk7CiAKLUNVUkxjb2RlIEN1cmxfYWRkX3RpbWVjb25kaXRpb24oc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKK0NVUkxjb2RlIEN1cmxfYWRkX3RpbWVjb25kaXRpb24oY29uc3Qgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJsX3NlbmRfYnVmZmVyICpidWYpOwogQ1VSTGNvZGUgQ3VybF9hZGRfY3VzdG9tX2hlYWRlcnMoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19jb25uZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VybF9zZW5kX2J1ZmZlciAqcmVxX2J1ZmZlcik7CiBDVVJMY29kZSBDdXJsX2h0dHBfY29tcGlsZV90cmFpbGVycyhzdHJ1Y3QgY3VybF9zbGlzdCAqdHJhaWxlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJsX3NlbmRfYnVmZmVyICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJsX3NlbmRfYnVmZmVyICoqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEN1cmxfZWFzeSAqaGFuZGxlKTsKIAogLyogcHJvdG9jb2wtc3BlY2lmaWMgZnVuY3Rpb25zIHNldCB1cCB0byBiZSBjYWxsZWQgYnkgdGhlIG1haW4gZW5naW5lICovCiBDVVJMY29kZSBDdXJsX2h0dHAoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKTsKIENVUkxjb2RlIEN1cmxfaHR0cF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqLCBDVVJMY29kZSwgYm9vbCBwcmVtYXR1cmUpOwogQ1VSTGNvZGUgQ3VybF9odHRwX2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKTsKLUNVUkxjb2RlIEN1cmxfaHR0cF9zZXR1cF9jb25uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7Ci0KLS8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGluIGh0dHBfY2h1bmtzLmMgKi8KLXZvaWQgQ3VybF9odHRwY2h1bmtfaW5pdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwotQ0hVTktjb2RlIEN1cmxfaHR0cGNodW5rX3JlYWQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjaGFyICpkYXRhcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaXplX3QgbGVuZ3RoLCBzc2l6ZV90ICp3cm90ZSk7CiAKIC8qIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW4gaHR0cC5jICovCi12b2lkIEN1cmxfaHR0cF9hdXRoX3N0YWdlKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsIGludCBzdGFnZSk7CiBDVVJMY29kZSBDdXJsX2h0dHBfaW5wdXRfYXV0aChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgcHJveHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphdXRoKTsKIENVUkxjb2RlIEN1cmxfaHR0cF9hdXRoX2FjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwotQ1VSTGNvZGUgQ3VybF9odHRwX3BlcmhhcHNyZXdpbmQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKIAogLyogSWYgb25seSB0aGUgUElDS05PTkUgYml0IGlzIHNldCwgdGhlcmUgaGFzIGJlZW4gYSByb3VuZC10cmlwIGFuZCB3ZQogICAgc2VsZWN0ZWQgdG8gdXNlIG5vIGF1dGggYXQgYWxsLiBJZSwgd2UgYWN0aXZlbHkgc2VsZWN0IG5vIGF1dGgsIGFzIG9wcG9zZWQKQEAgLTEyNCwxMSArMTE2LDE1IEBACiAgKgogICovCiAjaWZuZGVmIEVYUEVDVF8xMDBfVEhSRVNIT0xECi0jZGVmaW5lIEVYUEVDVF8xMDBfVEhSRVNIT0xEIDEwMjQKKyNkZWZpbmUgRVhQRUNUXzEwMF9USFJFU0hPTEQgKDEwMjQqMTAyNCkKICNlbmRpZgogCiAjZW5kaWYgLyogQ1VSTF9ESVNBQkxFX0hUVFAgKi8KIAorI2lmZGVmIFVTRV9OR0hUVFAzCitzdHJ1Y3QgaDNvdXQ7IC8qIHNlZSBuZ3RjcDIgKi8KKyNlbmRpZgorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogSFRUUCB1bmlxdWUgc2V0dXAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xNzUsMjAgKzE3MSw0MCBAQAogICBpbnQgc3RhdHVzX2NvZGU7IC8qIEhUVFAgc3RhdHVzIGNvZGUgKi8KICAgY29uc3QgdWludDhfdCAqcGF1c2VkYXRhOyAvKiBwb2ludGVyIHRvIGRhdGEgcmVjZWl2ZWQgaW4gb25fZGF0YV9jaHVuayAqLwogICBzaXplX3QgcGF1c2VsZW47IC8qIHRoZSBudW1iZXIgb2YgYnl0ZXMgbGVmdCBpbiBkYXRhICovCi0gIGJvb2wgY2xvc2VkOyAvKiBUUlVFIG9uIEhUVFAyIHN0cmVhbSBjbG9zZSAqLwogICBib29sIGNsb3NlX2hhbmRsZWQ7IC8qIFRSVUUgaWYgc3RyZWFtIGNsb3N1cmUgaXMgaGFuZGxlZCBieSBsaWJjdXJsICovCi0gIGNoYXIgKm1lbTsgICAgIC8qIHBvaW50cyB0byBhIGJ1ZmZlciBpbiBtZW1vcnkgdG8gc3RvcmUgcmVjZWl2ZWQgZGF0YSAqLwotICBzaXplX3QgbGVuOyAgICAvKiBzaXplIG9mIHRoZSBidWZmZXIgJ21lbScgcG9pbnRzIHRvICovCi0gIHNpemVfdCBtZW1sZW47IC8qIHNpemUgb2YgZGF0YSBjb3BpZWQgdG8gbWVtICovCi0KLSAgY29uc3QgdWludDhfdCAqdXBsb2FkX21lbTsgLyogcG9pbnRzIHRvIGEgYnVmZmVyIHRvIHJlYWQgZnJvbSAqLwotICBzaXplX3QgdXBsb2FkX2xlbjsgLyogc2l6ZSBvZiB0aGUgYnVmZmVyICd1cGxvYWRfbWVtJyBwb2ludHMgdG8gKi8KLSAgY3VybF9vZmZfdCB1cGxvYWRfbGVmdDsgLyogbnVtYmVyIG9mIGJ5dGVzIGxlZnQgdG8gdXBsb2FkICovCiAKICAgY2hhciAqKnB1c2hfaGVhZGVyczsgICAgICAgLyogYWxsb2NhdGVkIGFycmF5ICovCiAgIHNpemVfdCBwdXNoX2hlYWRlcnNfdXNlZDsgIC8qIG51bWJlciBvZiBlbnRyaWVzIGZpbGxlZCBpbiAqLwogICBzaXplX3QgcHVzaF9oZWFkZXJzX2FsbG9jOyAvKiBudW1iZXIgb2YgZW50cmllcyBhbGxvY2F0ZWQgKi8KICNlbmRpZgorI2lmIGRlZmluZWQoVVNFX05HSFRUUDIpIHx8IGRlZmluZWQoVVNFX05HSFRUUDMpCisgIGJvb2wgY2xvc2VkOyAvKiBUUlVFIG9uIEhUVFAyIHN0cmVhbSBjbG9zZSAqLworICBjaGFyICptZW07ICAgICAvKiBwb2ludHMgdG8gYSBidWZmZXIgaW4gbWVtb3J5IHRvIHN0b3JlIHJlY2VpdmVkIGRhdGEgKi8KKyAgc2l6ZV90IGxlbjsgICAgLyogc2l6ZSBvZiB0aGUgYnVmZmVyICdtZW0nIHBvaW50cyB0byAqLworICBzaXplX3QgbWVtbGVuOyAvKiBzaXplIG9mIGRhdGEgY29waWVkIHRvIG1lbSAqLworI2VuZGlmCisjaWYgZGVmaW5lZChVU0VfTkdIVFRQMikgfHwgZGVmaW5lZChFTkFCTEVfUVVJQykKKyAgLyogZmllbGRzIHVzZWQgYnkgYm90aCBIVFRQLzIgYW5kIEhUVFAvMyAqLworICBjb25zdCB1aW50OF90ICp1cGxvYWRfbWVtOyAvKiBwb2ludHMgdG8gYSBidWZmZXIgdG8gcmVhZCBmcm9tICovCisgIHNpemVfdCB1cGxvYWRfbGVuOyAvKiBzaXplIG9mIHRoZSBidWZmZXIgJ3VwbG9hZF9tZW0nIHBvaW50cyB0byAqLworICBjdXJsX29mZl90IHVwbG9hZF9sZWZ0OyAvKiBudW1iZXIgb2YgYnl0ZXMgbGVmdCB0byB1cGxvYWQgKi8KKyNlbmRpZgorCisjaWZkZWYgRU5BQkxFX1FVSUMKKyAgLyoqKioqKioqKioqIGZvciBIVFRQLzMgd2Ugc3RvcmUgc3RyZWFtLWxvY2FsIGRhdGEgaGVyZSAqKioqKioqKioqKioqLworICBpbnQ2NF90IHN0cmVhbTNfaWQ7IC8qIHN0cmVhbSB3ZSBhcmUgaW50ZXJlc3RlZCBpbiAqLworICBib29sIGZpcnN0aGVhZGVyOyAgLyogRkFMU0UgdW50aWwgaGVhZGVycyBhcnJpdmUgKi8KKyAgYm9vbCBmaXJzdGJvZHk7ICAvKiBGQUxTRSB1bnRpbCBib2R5IGFycml2ZXMgKi8KKyAgYm9vbCBoM3JlcTsgICAgLyogRkFMU0UgdW50aWwgcmVxdWVzdCBpcyBpc3N1ZWQgKi8KKyAgYm9vbCB1cGxvYWRfZG9uZTsKKyNlbmRpZgorI2lmZGVmIFVTRV9OR0hUVFAzCisgIHNpemVfdCB1bmFja2VkX3dpbmRvdzsKKyAgc3RydWN0IGgzb3V0ICpoM291dDsgLyogcGVyLXN0cmVhbSBidWZmZXJzIGZvciB1cGxvYWQgKi8KKyAgY2hhciAqb3ZlcmZsb3dfYnVmOyAvKiBleGNlc3MgZGF0YSByZWNlaXZlZCBkdXJpbmcgYSBzaW5nbGUgQ3VybF9yZWFkICovCisgIHNpemVfdCBvdmVyZmxvd19idWZsZW47IC8qIGFtb3VudCBvZiBkYXRhIGN1cnJlbnRseSBpbiBvdmVyZmxvd19idWYgKi8KKyAgc2l6ZV90IG92ZXJmbG93X2J1ZnNpemU7IC8qIHNpemUgb2YgdGhlIG92ZXJmbG93X2J1ZiBhbGxvY2F0aW9uICovCisjZW5kaWYKIH07CiAKICNpZmRlZiBVU0VfTkdIVFRQMgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cDIuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHAyLmMKaW5kZXggOGU3YmMyMS4uNzJiMzhhMyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cDIuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9odHRwMi5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC00MywxOSArNDMsMTEgQEAKIAogI2RlZmluZSBIMl9CVUZTSVpFIDMyNzY4CiAKLSNpZiAoTkdIVFRQMl9WRVJTSU9OX05VTSA8IDB4MDEwMDAwKQorI2lmIChOR0hUVFAyX1ZFUlNJT05fTlVNIDwgMHgwMTBjMDApCiAjZXJyb3IgdG9vIG9sZCBuZ2h0dHAyIHZlcnNpb24sIHVwZ3JhZGUhCiAjZW5kaWYKIAotI2lmIChOR0hUVFAyX1ZFUlNJT05fTlVNID4gMHgwMTA4MDApCi0jZGVmaW5lIE5HSFRUUDJfSEFTX0hUVFAyX1NUUkVSUk9SIDEKLSNlbmRpZgotCi0jaWYgKE5HSFRUUDJfVkVSU0lPTl9OVU0gPj0gMHgwMTA5MDApCi0vKiBuZ2h0dHAyX3Nlc3Npb25fY2FsbGJhY2tzX3NldF9lcnJvcl9jYWxsYmFjayBpcyBwcmVzZW50IGluIG5naHR0cDIgMS45LjAgb3IKLSAgIGxhdGVyICovCi0jZGVmaW5lIE5HSFRUUDJfSEFTX0VSUk9SX0NBTExCQUNLIDEKLSNlbHNlCisjaWZkZWYgQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUwogI2RlZmluZSBuZ2h0dHAyX3Nlc3Npb25fY2FsbGJhY2tzX3NldF9lcnJvcl9jYWxsYmFjayh4LHkpCiAjZW5kaWYKIApAQCAtNjMsMTIgKzU1LDEyIEBACiAjZGVmaW5lIE5HSFRUUDJfSEFTX1NFVF9MT0NBTF9XSU5ET1dfU0laRSAxCiAjZW5kaWYKIAotI2RlZmluZSBIVFRQMl9IVUdFX1dJTkRPV19TSVpFICgxIDw8IDMwKQorI2RlZmluZSBIVFRQMl9IVUdFX1dJTkRPV19TSVpFICgzMiAqIDEwMjQgKiAxMDI0KSAvKiAzMiBNQiAqLwogCiAjaWZkZWYgREVCVUdfSFRUUDIKICNkZWZpbmUgSDJCVUdGKHgpIHgKICNlbHNlCi0jZGVmaW5lIEgyQlVHRih4KSBkbyB7IH0gV0hJTEVfRkFMU0UKKyNkZWZpbmUgSDJCVUdGKHgpIGRvIHsgfSB3aGlsZSgwKQogI2VuZGlmCiAKIApAQCAtMTAwLDE2ICs5MiwxMSBAQAogfQogCiBzdGF0aWMgaW50IGh0dHAyX3BlcmZvcm1fZ2V0c29jayhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrLCAvKiBwb2ludHMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bXNvY2tzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldHMgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2spCiB7CiAgIGNvbnN0IHN0cnVjdCBodHRwX2Nvbm4gKmMgPSAmY29ubi0+cHJvdG8uaHR0cGM7CiAgIHN0cnVjdCBTaW5nbGVSZXF1ZXN0ICprID0gJmNvbm4tPmRhdGEtPnJlcTsKICAgaW50IGJpdG1hcCA9IEdFVFNPQ0tfQkxBTks7Ci0gICh2b2lkKW51bXNvY2tzOwogCiAgIHNvY2tbMF0gPSBjb25uLT5zb2NrW0ZJUlNUU09DS0VUXTsKIApAQCAtMTI2LDExICsxMTMsOSBAQAogfQogCiBzdGF0aWMgaW50IGh0dHAyX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2ssIC8qIHBvaW50cyB0byBudW1zb2NrcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBzb2NrZXRzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKQorICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzKQogewotICByZXR1cm4gaHR0cDJfcGVyZm9ybV9nZXRzb2NrKGNvbm4sIHNvY2ssIG51bXNvY2tzKTsKKyAgcmV0dXJuIGh0dHAyX3BlcmZvcm1fZ2V0c29jayhjb25uLCBzb2Nrcyk7CiB9CiAKIC8qCkBAIC0yNDAsNyArMjI1LDcgQEAKIAogICBpZihjaGVja3NfdG9fcGVyZm9ybSAmIENPTk5DSEVDS19LRUVQQUxJVkUpIHsKICAgICBzdHJ1Y3QgY3VybHRpbWUgbm93ID0gQ3VybF9ub3coKTsKLSAgICB0aW1lX3QgZWxhcHNlZCA9IEN1cmxfdGltZWRpZmYobm93LCBjaGVjay0+a2VlcGFsaXZlKTsKKyAgICB0aW1lZGlmZl90IGVsYXBzZWQgPSBDdXJsX3RpbWVkaWZmKG5vdywgY2hlY2stPmtlZXBhbGl2ZSk7CiAKICAgICBpZihlbGFwc2VkID4gY2hlY2stPnVwa2VlcF9pbnRlcnZhbF9tcykgewogICAgICAgLyogUGVyZm9ybSBhbiBIVFRQLzIgUElORyAqLwpAQCAtMjY5LDcgKzI1NCw3IEBACiAgIHJldHVybiByZXRfdmFsOwogfQogCi0vKiBjYWxsZWQgZnJvbSBDdXJsX2h0dHBfc2V0dXBfY29ubiAqLworLyogY2FsbGVkIGZyb20gaHR0cF9zZXR1cF9jb25uICovCiB2b2lkIEN1cmxfaHR0cDJfc2V0dXBfcmVxKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEpCiB7CiAgIHN0cnVjdCBIVFRQICpodHRwID0gZGF0YS0+cmVxLnByb3RvcDsKQEAgLTI4Niw3ICsyNzEsNyBAQAogICBodHRwLT5tZW1sZW4gPSAwOwogfQogCi0vKiBjYWxsZWQgZnJvbSBDdXJsX2h0dHBfc2V0dXBfY29ubiAqLworLyogY2FsbGVkIGZyb20gaHR0cF9zZXR1cF9jb25uICovCiB2b2lkIEN1cmxfaHR0cDJfc2V0dXBfY29ubihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7CiAgIGNvbm4tPnByb3RvLmh0dHBjLnNldHRpbmdzLm1heF9jb25jdXJyZW50X3N0cmVhbXMgPQpAQCAtMzUxLDM1ICszMzYsNiBAQAogICByZXR1cm4gbXNucHJpbnRmKHAsIGxlbiwgIiBuZ2h0dHAyLyVzIiwgaDItPnZlcnNpb25fc3RyKTsKIH0KIAotLyogSFRUUC8yIGVycm9yIGNvZGUgdG8gbmFtZSBiYXNlZCBvbiB0aGUgRXJyb3IgQ29kZSBSZWdpc3RyeS4KLWh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NTQwI3BhZ2UtNzcKLW5naHR0cDJfZXJyb3JfY29kZSBlbnVtcyBhcmUgaWRlbnRpY2FsLgotKi8KLXN0YXRpYyBjb25zdCBjaGFyICpodHRwMl9zdHJlcnJvcih1aW50MzJfdCBlcnIpCi17Ci0jaWZuZGVmIE5HSFRUUDJfSEFTX0hUVFAyX1NUUkVSUk9SCi0gIGNvbnN0IGNoYXIgKnN0cltdID0gewotICAgICJOT19FUlJPUiIsICAgICAgICAgICAgIC8qIDB4MCAqLwotICAgICJQUk9UT0NPTF9FUlJPUiIsICAgICAgIC8qIDB4MSAqLwotICAgICJJTlRFUk5BTF9FUlJPUiIsICAgICAgIC8qIDB4MiAqLwotICAgICJGTE9XX0NPTlRST0xfRVJST1IiLCAgIC8qIDB4MyAqLwotICAgICJTRVRUSU5HU19USU1FT1VUIiwgICAgIC8qIDB4NCAqLwotICAgICJTVFJFQU1fQ0xPU0VEIiwgICAgICAgIC8qIDB4NSAqLwotICAgICJGUkFNRV9TSVpFX0VSUk9SIiwgICAgIC8qIDB4NiAqLwotICAgICJSRUZVU0VEX1NUUkVBTSIsICAgICAgIC8qIDB4NyAqLwotICAgICJDQU5DRUwiLCAgICAgICAgICAgICAgIC8qIDB4OCAqLwotICAgICJDT01QUkVTU0lPTl9FUlJPUiIsICAgIC8qIDB4OSAqLwotICAgICJDT05ORUNUX0VSUk9SIiwgICAgICAgIC8qIDB4QSAqLwotICAgICJFTkhBTkNFX1lPVVJfQ0FMTSIsICAgIC8qIDB4QiAqLwotICAgICJJTkFERVFVQVRFX1NFQ1VSSVRZIiwgIC8qIDB4QyAqLwotICAgICJIVFRQXzFfMV9SRVFVSVJFRCIgICAgIC8qIDB4RCAqLwotICB9OwotICByZXR1cm4gKGVyciA8IHNpemVvZihzdHIpIC8gc2l6ZW9mKHN0clswXSkpID8gc3RyW2Vycl0gOiAidW5rbm93biI7Ci0jZWxzZQotICByZXR1cm4gbmdodHRwMl9odHRwMl9zdHJlcnJvcihlcnIpOwotI2VuZGlmCi19Ci0KIC8qCiAgKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgbmdodHRwMl9zZW5kX2NhbGxiYWNrIHR5cGUuIEhlcmUgd2Ugd3JpdGUgfGRhdGF8IHdpdGgKICAqIHNpemUgfGxlbmd0aHwgdG8gdGhlIG5ldHdvcmsgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5CkBAIC01MDMsMTYgKzQ1OSwxNCBAQAogICAgIC8qIHNldHVwIHRoZSByZXF1ZXN0IHN0cnVjdCAqLwogICAgIHN0cnVjdCBIVFRQICpodHRwID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgSFRUUCkpOwogICAgIGlmKCFodHRwKSB7Ci0gICAgICAodm9pZClDdXJsX2Nsb3NlKHNlY29uZCk7Ci0gICAgICBzZWNvbmQgPSBOVUxMOworICAgICAgKHZvaWQpQ3VybF9jbG9zZSgmc2Vjb25kKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICBzZWNvbmQtPnJlcS5wcm90b3AgPSBodHRwOwogICAgICAgaHR0cC0+aGVhZGVyX3JlY3ZidWYgPSBDdXJsX2FkZF9idWZmZXJfaW5pdCgpOwogICAgICAgaWYoIWh0dHAtPmhlYWRlcl9yZWN2YnVmKSB7CiAgICAgICAgIGZyZWUoaHR0cCk7Ci0gICAgICAgICh2b2lkKUN1cmxfY2xvc2Uoc2Vjb25kKTsKLSAgICAgICAgc2Vjb25kID0gTlVMTDsKKyAgICAgICAgKHZvaWQpQ3VybF9jbG9zZSgmc2Vjb25kKTsKICAgICAgIH0KICAgICAgIGVsc2UgewogICAgICAgICBDdXJsX2h0dHAyX3NldHVwX3JlcShzZWNvbmQpOwpAQCAtNTU0LDcgKzUwOCw3IEBACiAgICAgc3RyZWFtID0gZGF0YS0+cmVxLnByb3RvcDsKICAgICBpZighc3RyZWFtKSB7CiAgICAgICBmYWlsZihkYXRhLCAiSW50ZXJuYWwgTlVMTCBzdHJlYW0hXG4iKTsKLSAgICAgICh2b2lkKUN1cmxfY2xvc2UobmV3aGFuZGxlKTsKKyAgICAgICh2b2lkKUN1cmxfY2xvc2UoJm5ld2hhbmRsZSk7CiAgICAgICBydiA9IDE7CiAgICAgICBnb3RvIGZhaWw7CiAgICAgfQpAQCAtNTc2LDcgKzUzMCw3IEBACiAgICAgICAvKiBkZW5pZWQsIGtpbGwgb2ZmIHRoZSBuZXcgaGFuZGxlIGFnYWluICovCiAgICAgICBodHRwMl9zdHJlYW1fZnJlZShuZXdoYW5kbGUtPnJlcS5wcm90b3ApOwogICAgICAgbmV3aGFuZGxlLT5yZXEucHJvdG9wID0gTlVMTDsKLSAgICAgICh2b2lkKUN1cmxfY2xvc2UobmV3aGFuZGxlKTsKKyAgICAgICh2b2lkKUN1cmxfY2xvc2UoJm5ld2hhbmRsZSk7CiAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogCkBAIC01OTIsNyArNTQ2LDcgQEAKICAgICAgIGluZm9mKGRhdGEsICJmYWlsZWQgdG8gYWRkIGhhbmRsZSB0byBtdWx0aVxuIik7CiAgICAgICBodHRwMl9zdHJlYW1fZnJlZShuZXdoYW5kbGUtPnJlcS5wcm90b3ApOwogICAgICAgbmV3aGFuZGxlLT5yZXEucHJvdG9wID0gTlVMTDsKLSAgICAgIEN1cmxfY2xvc2UobmV3aGFuZGxlKTsKKyAgICAgIEN1cmxfY2xvc2UoJm5ld2hhbmRsZSk7CiAgICAgICBydiA9IDE7CiAgICAgICBnb3RvIGZhaWw7CiAgICAgfQpAQCAtODQ3LDcgKzgwMSw3IEBACiAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgSDJCVUdGKGluZm9mKGRhdGFfcywgIm9uX3N0cmVhbV9jbG9zZSgpLCAlcyAoZXJyICVkKSwgc3RyZWFtICV1XG4iLAotICAgICAgICAgICAgICAgICBodHRwMl9zdHJlcnJvcihlcnJvcl9jb2RlKSwgZXJyb3JfY29kZSwgc3RyZWFtX2lkKSk7CisgICAgICAgICAgICAgICAgIG5naHR0cDJfc3RyZXJyb3IoZXJyb3JfY29kZSksIGVycm9yX2NvZGUsIHN0cmVhbV9pZCkpOwogICAgIHN0cmVhbSA9IGRhdGFfcy0+cmVxLnByb3RvcDsKICAgICBpZighc3RyZWFtKQogICAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0NBTExCQUNLX0ZBSUxVUkU7CkBAIC04NTUsNiArODA5LDcgQEAKICAgICBzdHJlYW0tPmNsb3NlZCA9IFRSVUU7CiAgICAgaHR0cGMgPSAmY29ubi0+cHJvdG8uaHR0cGM7CiAgICAgZHJhaW5fdGhpcyhkYXRhX3MsIGh0dHBjKTsKKyAgICBDdXJsX2V4cGlyZShkYXRhX3MsIDAsIEVYUElSRV9SVU5fTk9XKTsKICAgICBodHRwYy0+ZXJyb3JfY29kZSA9IGVycm9yX2NvZGU7CiAKICAgICAvKiByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIGhhc2ggYXMgdGhlIHN0cmVhbSBpcyBub3cgZ29uZSAqLwpAQCAtOTc0LDcgKzkyOSw5IEBACiAgICAgICBpZighY2hlY2spCiAgICAgICAgIC8qIG5vIG1lbW9yeSAqLwogICAgICAgICByZXR1cm4gTkdIVFRQMl9FUlJfQ0FMTEJBQ0tfRkFJTFVSRTsKLSAgICAgIGlmKCFDdXJsX3N0cmNhc2Vjb21wYXJlKGNoZWNrLCAoY29uc3QgY2hhciAqKXZhbHVlKSkgeworICAgICAgaWYoIUN1cmxfc3RyY2FzZWNvbXBhcmUoY2hlY2ssIChjb25zdCBjaGFyICopdmFsdWUpICYmCisgICAgICAgICAoKGNvbm4tPnJlbW90ZV9wb3J0ICE9IGNvbm4tPmdpdmVuLT5kZWZwb3J0KSB8fAorICAgICAgICAgICFDdXJsX3N0cmNhc2Vjb21wYXJlKGNvbm4tPmhvc3QubmFtZSwgKGNvbnN0IGNoYXIgKil2YWx1ZSkpKSB7CiAgICAgICAgIC8qIFRoaXMgaXMgcHVzaCBpcyBub3QgZm9yIHRoZSBzYW1lIGF1dGhvcml0eSB0aGF0IHdhcyBhc2tlZCBmb3IgaW4KICAgICAgICAgICogdGhlIFVSTC4gUkZDIDc1NDAgc2VjdGlvbiA4LjIgc2F5czogIkEgY2xpZW50IE1VU1QgdHJlYXQgYQogICAgICAgICAgKiBQVVNIX1BST01JU0UgZm9yIHdoaWNoIHRoZSBzZXJ2ZXIgaXMgbm90IGF1dGhvcml0YXRpdmUgYXMgYSBzdHJlYW0KQEAgLTExNDQsOCArMTEwMSw3IEBACiAgIHJldHVybiBucmVhZDsKIH0KIAotI2lmIGRlZmluZWQoTkdIVFRQMl9IQVNfRVJST1JfQ0FMTEJBQ0spICYmICAgICAgXAotICAhZGVmaW5lZChDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTKQorI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCiBzdGF0aWMgaW50IGVycm9yX2NhbGxiYWNrKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLApAQCAtMTE2Miw5ICsxMTE4LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHR0cF9jb25uICpodHRwYykKIHsKICAgbmdodHRwMl9zZXR0aW5nc19lbnRyeSAqaXYgPSBodHRwYy0+bG9jYWxfc2V0dGluZ3M7CisgIERFQlVHQVNTRVJUKGNvbm4tPmRhdGEpOwogCiAgIGl2WzBdLnNldHRpbmdzX2lkID0gTkdIVFRQMl9TRVRUSU5HU19NQVhfQ09OQ1VSUkVOVF9TVFJFQU1TOwotICBpdlswXS52YWx1ZSA9IDEwMDsKKyAgaXZbMF0udmFsdWUgPSBDdXJsX211bHRpX21heF9jb25jdXJyZW50X3N0cmVhbXMoY29ubi0+ZGF0YS0+bXVsdGkpOwogCiAgIGl2WzFdLnNldHRpbmdzX2lkID0gTkdIVFRQMl9TRVRUSU5HU19JTklUSUFMX1dJTkRPV19TSVpFOwogICBpdlsxXS52YWx1ZSA9IEhUVFAyX0hVR0VfV0lORE9XX1NJWkU7CkBAIC0xMTc1LDExICsxMTMyLDEwIEBACiAgIGh0dHBjLT5sb2NhbF9zZXR0aW5nc19udW0gPSAzOwogfQogCi12b2lkIEN1cmxfaHR0cDJfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgcHJlbWF0dXJlKQordm9pZCBDdXJsX2h0dHAyX2RvbmUoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwgYm9vbCBwcmVtYXR1cmUpCiB7Ci0gIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwogICBzdHJ1Y3QgSFRUUCAqaHR0cCA9IGRhdGEtPnJlcS5wcm90b3A7Ci0gIHN0cnVjdCBodHRwX2Nvbm4gKmh0dHBjID0gJmNvbm4tPnByb3RvLmh0dHBjOworICBzdHJ1Y3QgaHR0cF9jb25uICpodHRwYyA9ICZkYXRhLT5jb25uLT5wcm90by5odHRwYzsKIAogICAvKiB0aGVyZSBtaWdodCBiZSBhbGxvY2F0ZWQgcmVzb3VyY2VzIGRvbmUgYmVmb3JlIHRoaXMgZ290IHRoZSAnaDInIHBvaW50ZXIKICAgICAgc2V0dXAgKi8KQEAgLTExOTksOSArMTE1NSw2IEBACiAgIGlmKCFodHRwYy0+aDIpIC8qIG5vdCBIVFRQLzIgPyAqLwogICAgIHJldHVybjsKIAotICBpZihkYXRhLT5zdGF0ZS5kcmFpbikKLSAgICBkcmFpbmVkX3RyYW5zZmVyKGRhdGEsIGh0dHBjKTsKLQogICBpZihwcmVtYXR1cmUpIHsKICAgICAvKiBSU1RfU1RSRUFNICovCiAgICAgaWYoIW5naHR0cDJfc3VibWl0X3JzdF9zdHJlYW0oaHR0cGMtPmgyLCBOR0hUVFAyX0ZMQUdfTk9ORSwKQEAgLTEyMTMsNiArMTE2NiwxMCBAQAogICAgICAgaHR0cGMtPnBhdXNlX3N0cmVhbV9pZCA9IDA7CiAgICAgfQogICB9CisKKyAgaWYoZGF0YS0+c3RhdGUuZHJhaW4pCisgICAgZHJhaW5lZF90cmFuc2ZlcihkYXRhLCBodHRwYyk7CisKICAgLyogLTEgbWVhbnMgdW5hc3NpZ25lZCBhbmQgMCBtZWFucyBjbGVhcmVkICovCiAgIGlmKGh0dHAtPnN0cmVhbV9pZCA+IDApIHsKICAgICBpbnQgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fc2V0X3N0cmVhbV91c2VyX2RhdGEoaHR0cGMtPmgyLApAQCAtMTI2Myw5ICsxMjIwLDcgQEAKICAgICAvKiBuZ2h0dHAyX29uX2hlYWRlcl9jYWxsYmFjayAqLwogICAgIG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0X29uX2hlYWRlcl9jYWxsYmFjayhjYWxsYmFja3MsIG9uX2hlYWRlcik7CiAKLSNpZm5kZWYgQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUwogICAgIG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0X2Vycm9yX2NhbGxiYWNrKGNhbGxiYWNrcywgZXJyb3JfY2FsbGJhY2spOwotI2VuZGlmCiAKICAgICAvKiBUaGUgbmdodHRwMiBzZXNzaW9uIGlzIG5vdCB5ZXQgc2V0dXAsIGRvIGl0ICovCiAgICAgcmMgPSBuZ2h0dHAyX3Nlc3Npb25fY2xpZW50X25ldygmY29ubi0+cHJvdG8uaHR0cGMuaDIsIGNhbGxiYWNrcywgY29ubik7CkBAIC0xNDYzLDcgKzE0MTgsNyBAQAogICB9CiAgIGVsc2UgaWYoaHR0cGMtPmVycm9yX2NvZGUgIT0gTkdIVFRQMl9OT19FUlJPUikgewogICAgIGZhaWxmKGRhdGEsICJIVFRQLzIgc3RyZWFtICVkIHdhcyBub3QgY2xvc2VkIGNsZWFubHk6ICVzIChlcnIgJXUpIiwKLSAgICAgICAgICBzdHJlYW0tPnN0cmVhbV9pZCwgaHR0cDJfc3RyZXJyb3IoaHR0cGMtPmVycm9yX2NvZGUpLAorICAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lkLCBuZ2h0dHAyX3N0cmVycm9yKGh0dHBjLT5lcnJvcl9jb2RlKSwKICAgICAgICAgICBodHRwYy0+ZXJyb3JfY29kZSk7CiAgICAgKmVyciA9IENVUkxFX0hUVFAyX1NUUkVBTTsKICAgICByZXR1cm4gLTE7CkBAIC0xNTQxLDYgKzE0OTYsNyBAQAogCiAgICAgSDJCVUdGKGluZm9mKGRhdGEsICJRdWV1aW5nIFBSSU9SSVRZIG9uIHN0cmVhbSAldSAoZWFzeSAlcClcbiIsCiAgICAgICAgICAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lkLCBkYXRhKSk7CisgICAgREVCVUdBU1NFUlQoc3RyZWFtLT5zdHJlYW1faWQgIT0gLTEpOwogICAgIHJ2ID0gbmdodHRwMl9zdWJtaXRfcHJpb3JpdHkoaDIsIE5HSFRUUDJfRkxBR19OT05FLCBzdHJlYW0tPnN0cmVhbV9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmlfc3BlYyk7CiAgICAgaWYocnYpCkBAIC0xNTY1LDYgKzE1MjEsMTEgQEAKICAgaWYoc2hvdWxkX2Nsb3NlX3Nlc3Npb24oaHR0cGMpKSB7CiAgICAgSDJCVUdGKGluZm9mKGRhdGEsCiAgICAgICAgICAgICAgICAgICJodHRwMl9yZWN2OiBub3RoaW5nIHRvIGRvIGluIHRoaXMgc2Vzc2lvblxuIikpOworICAgIGlmKGNvbm4tPmJpdHMuY2xvc2UpIHsKKyAgICAgIC8qIGFscmVhZHkgbWFya2VkIGZvciBjbG9zdXJlLCByZXR1cm4gT0sgYW5kIHdlJ3JlIGRvbmUgKi8KKyAgICAgICplcnIgPSBDVVJMRV9PSzsKKyAgICAgIHJldHVybiAwOworICAgIH0KICAgICAqZXJyID0gQ1VSTEVfSFRUUDI7CiAgICAgcmV0dXJuIC0xOwogICB9CkBAIC0xNTk0LDggKzE1NTUsMTIgQEAKICAgICByZXR1cm4gbmNvcHk7CiAgIH0KIAotICBIMkJVR0YoaW5mb2YoZGF0YSwgImh0dHAyX3JlY3Y6IGVhc3kgJXAgKHN0cmVhbSAldSlcbiIsCi0gICAgICAgICAgICAgICBkYXRhLCBzdHJlYW0tPnN0cmVhbV9pZCkpOworICBIMkJVR0YoaW5mb2YoZGF0YSwgImh0dHAyX3JlY3Y6IGVhc3kgJXAgKHN0cmVhbSAldSkgd2luICV1LyV1XG4iLAorICAgICAgICAgICAgICAgZGF0YSwgc3RyZWFtLT5zdHJlYW1faWQsCisgICAgICAgICAgICAgICBuZ2h0dHAyX3Nlc3Npb25fZ2V0X2xvY2FsX3dpbmRvd19zaXplKGh0dHBjLT5oMiksCisgICAgICAgICAgICAgICBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV9sb2NhbF93aW5kb3dfc2l6ZShodHRwYy0+aDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPnN0cmVhbV9pZCkKKyAgICAgICAgICAgKSk7CiAKICAgaWYoKGRhdGEtPnN0YXRlLmRyYWluKSAmJiBzdHJlYW0tPm1lbWxlbikgewogICAgIEgyQlVHRihpbmZvZihkYXRhLCAiaHR0cDJfcmVjdjogRFJBSU4gJXp1IGJ5dGVzIHN0cmVhbSAldSEhICglcCA9PiAlcClcbiIsCkBAIC0xNjI2LDcgKzE1OTEsNiBAQAogICAgIHN0cmVhbS0+cGF1c2VkYXRhICs9IG5yZWFkOwogICAgIHN0cmVhbS0+cGF1c2VsZW4gLT0gbnJlYWQ7CiAKLSAgICBpbmZvZihkYXRhLCAiJXpkIGRhdGEgYnl0ZXMgd3JpdHRlblxuIiwgbnJlYWQpOwogICAgIGlmKHN0cmVhbS0+cGF1c2VsZW4gPT0gMCkgewogICAgICAgSDJCVUdGKGluZm9mKGRhdGEsICJVbnBhdXNlZCBieSBzdHJlYW0gJXVcbiIsIHN0cmVhbS0+c3RyZWFtX2lkKSk7CiAgICAgICBERUJVR0FTU0VSVChodHRwYy0+cGF1c2Vfc3RyZWFtX2lkID09IHN0cmVhbS0+c3RyZWFtX2lkKTsKQEAgLTE2NjAsNiArMTYyNCw5IEBACiAgICAgICAgc29ja2V0IGlzIG5vdCByZWFkLiAgQnV0IGl0IHNlZW1zIHRoYXQgdXN1YWxseSBzdHJlYW1zIGFyZQogICAgICAgIG5vdGlmaWVkIHdpdGggaXRzIGRyYWluIHByb3BlcnR5LCBhbmQgc29ja2V0IGlzIHJlYWQgYWdhaW4KICAgICAgICBxdWlja2x5LiAqLworICAgIGlmKHN0cmVhbS0+Y2xvc2VkKQorICAgICAgLyogY2xvc2VkIG92ZXJyaWRlcyBwYXVzZWQgKi8KKyAgICAgIHJldHVybiAwOwogICAgIEgyQlVHRihpbmZvZihkYXRhLCAic3RyZWFtICV4IGlzIHBhdXNlZCwgcGF1c2UgaWQ6ICV4XG4iLAogICAgICAgICAgICAgICAgICBzdHJlYW0tPnN0cmVhbV9pZCwgaHR0cGMtPnBhdXNlX3N0cmVhbV9pZCkpOwogICAgICplcnIgPSBDVVJMRV9BR0FJTjsKQEAgLTE3NTQsMTQgKzE3MjEsMTYgQEAKICAgICBlbHNlIGlmKCFzdHJlYW0tPmNsb3NlZCkgewogICAgICAgZHJhaW5lZF90cmFuc2ZlcihkYXRhLCBodHRwYyk7CiAgICAgfQorICAgIGVsc2UKKyAgICAgIC8qIHRoaXMgc3RyZWFtIGlzIGNsb3NlZCwgdHJpZ2dlciBhIGFub3RoZXIgcmVhZCBBU0FQIHRvIGRldGVjdCB0aGF0ICovCisgICAgICBDdXJsX2V4cGlyZShkYXRhLCAwLCBFWFBJUkVfUlVOX05PVyk7CiAKICAgICByZXR1cm4gcmV0bGVuOwogICB9Ci0gIC8qIElmIHN0cmVhbSBpcyBjbG9zZWQsIHJldHVybiAwIHRvIHNpZ25hbCB0aGUgaHR0cCByb3V0aW5lIHRvIGNsb3NlCisgIC8qIElmIHRoaXMgc3RyZWFtIGlzIGNsb3NlZCwgcmV0dXJuIDAgdG8gc2lnbmFsIHRoZSBodHRwIHJvdXRpbmUgdG8gY2xvc2UKICAgICAgdGhlIGNvbm5lY3Rpb24gKi8KLSAgaWYoc3RyZWFtLT5jbG9zZWQpIHsKLSAgICByZXR1cm4gaHR0cDJfaGFuZGxlX3N0cmVhbV9jbG9zZShjb25uLCBkYXRhLCBzdHJlYW0sIGVycik7Ci0gIH0KKyAgaWYoc3RyZWFtLT5jbG9zZWQpCisgICAgcmV0dXJuIDA7CiAgICplcnIgPSBDVVJMRV9BR0FJTjsKICAgSDJCVUdGKGluZm9mKGRhdGEsICJodHRwMl9yZWN2IHJldHVybnMgQUdBSU4gZm9yIHN0cmVhbSAldVxuIiwKICAgICAgICAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lkKSk7CkBAIC0xNzcyLDggKzE3NDEsOSBAQAogICAgZmllbGQgbGlzdC4gKi8KICNkZWZpbmUgQVVUSE9SSVRZX0RTVF9JRFggMwogCisvKiBVU0hSVF9NQVggaXMgNjU1MzUgPT0gMHhmZmZmICovCiAjZGVmaW5lIEhFQURFUl9PVkVSRkxPVyh4KSBcCi0gICh4Lm5hbWVsZW4gPiAodWludDE2X3QpLTEgfHwgeC52YWx1ZWxlbiA+ICh1aW50MTZfdCktMSAtIHgubmFtZWxlbikKKyAgKHgubmFtZWxlbiA+IDB4ZmZmZiB8fCB4LnZhbHVlbGVuID4gMHhmZmZmIC0geC5uYW1lbGVuKQogCiAvKgogICogQ2hlY2sgaGVhZGVyIG1lbW9yeSBmb3IgdGhlIHRva2VuICJ0cmFpbGVycyIuCkBAIC0xODgwLDcgKzE4NTAsMTEgQEAKICAgICAgICBhcmUgZ29pbmcgdG8gc2VuZCBvciBzZW5kaW5nIHJlcXVlc3QgYm9keSBpbiBEQVRBIGZyYW1lICovCiAgICAgc3RyZWFtLT51cGxvYWRfbWVtID0gbWVtOwogICAgIHN0cmVhbS0+dXBsb2FkX2xlbiA9IGxlbjsKLSAgICBuZ2h0dHAyX3Nlc3Npb25fcmVzdW1lX2RhdGEoaDIsIHN0cmVhbS0+c3RyZWFtX2lkKTsKKyAgICBydiA9IG5naHR0cDJfc2Vzc2lvbl9yZXN1bWVfZGF0YShoMiwgc3RyZWFtLT5zdHJlYW1faWQpOworICAgIGlmKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7CisgICAgICAqZXJyID0gQ1VSTEVfU0VORF9FUlJPUjsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgcnYgPSBoMl9zZXNzaW9uX3NlbmQoY29ubi0+ZGF0YSwgaDIpOwogICAgIGlmKG5naHR0cDJfaXNfZmF0YWwocnYpKSB7CiAgICAgICAqZXJyID0gQ1VSTEVfU0VORF9FUlJPUjsKQEAgLTIwMTksOCArMTk5MywxMCBAQAogICAgICAgbnZhW2ldLm5hbWVsZW4gPSBzdHJsZW4oKGNoYXIgKiludmFbaV0ubmFtZSk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgbnZhW2ldLm5hbWUgPSAodW5zaWduZWQgY2hhciAqKWhkYnVmOwogICAgICAgbnZhW2ldLm5hbWVsZW4gPSAoc2l6ZV90KShlbmQgLSBoZGJ1Zik7CisgICAgICAvKiBMb3dlciBjYXNlIHRoZSBoZWFkZXIgbmFtZSBmb3IgSFRUUC8yICovCisgICAgICBDdXJsX3N0cm50b2xvd2VyKChjaGFyICopaGRidWYsIGhkYnVmLCBudmFbaV0ubmFtZWxlbik7CisgICAgICBudmFbaV0ubmFtZSA9ICh1bnNpZ25lZCBjaGFyICopaGRidWY7CiAgICAgfQogICAgIGhkYnVmID0gZW5kICsgMTsKICAgICB3aGlsZSgqaGRidWYgPT0gJyAnIHx8ICpoZGJ1ZiA9PSAnXHQnKQpAQCAtMjEzMCwxNyArMjEwNiwxNCBAQAogICAgIHJldHVybiAtMTsKICAgfQogCi0gIGlmKHN0cmVhbS0+c3RyZWFtX2lkICE9IC0xKSB7Ci0gICAgLyogSWYgd2hvbGUgSEVBREVSUyBmcmFtZSB3YXMgc2VudCBvZmYgdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0LAotICAgICAgIHRoZSBuZ2h0dHAyIGxpYnJhcnkgY2FsbHMgZGF0YV9zb3VyY2VfcmVhZF9jYWxsYmFjay4gQnV0IG9ubHkKLSAgICAgICBpdCBmb3VuZCB0aGF0IG5vIGRhdGEgYXZhaWxhYmxlLCBzbyBpdCBkZWZlcnJlZCB0aGUgREFUQQotICAgICAgIHRyYW5zbWlzc2lvbi4gV2hpY2ggbWVhbnMgdGhhdCBuZ2h0dHAyX3Nlc3Npb25fd2FudF93cml0ZSgpCi0gICAgICAgcmV0dXJucyAwIG9uIGh0dHAyX3BlcmZvcm1fZ2V0c29jaygpLCB3aGljaCByZXN1bHRzIHRoYXQgbm8KLSAgICAgICB3cml0YWJsZSBzb2NrZXQgY2hlY2sgaXMgcGVyZm9ybWVkLiBUbyB3b3JrYXJvdW5kIHRoaXMsIHdlCi0gICAgICAgaXNzdWUgbmdodHRwMl9zZXNzaW9uX3Jlc3VtZV9kYXRhKCkgaGVyZSB0byBicmluZyBiYWNrIERBVEEKLSAgICAgICB0cmFuc21pc3Npb24gZnJvbSBkZWZlcnJlZCBzdGF0ZS4gKi8KLSAgICBuZ2h0dHAyX3Nlc3Npb25fcmVzdW1lX2RhdGEoaDIsIHN0cmVhbS0+c3RyZWFtX2lkKTsKLSAgfQorICAvKiBJZiB3aG9sZSBIRUFERVJTIGZyYW1lIHdhcyBzZW50IG9mZiB0byB0aGUgdW5kZXJseWluZyBzb2NrZXQsIHRoZSBuZ2h0dHAyCisgICAgIGxpYnJhcnkgY2FsbHMgZGF0YV9zb3VyY2VfcmVhZF9jYWxsYmFjay4gQnV0IG9ubHkgaXQgZm91bmQgdGhhdCBubyBkYXRhCisgICAgIGF2YWlsYWJsZSwgc28gaXQgZGVmZXJyZWQgdGhlIERBVEEgdHJhbnNtaXNzaW9uLiBXaGljaCBtZWFucyB0aGF0CisgICAgIG5naHR0cDJfc2Vzc2lvbl93YW50X3dyaXRlKCkgcmV0dXJucyAwIG9uIGh0dHAyX3BlcmZvcm1fZ2V0c29jaygpLCB3aGljaAorICAgICByZXN1bHRzIHRoYXQgbm8gd3JpdGFibGUgc29ja2V0IGNoZWNrIGlzIHBlcmZvcm1lZC4gVG8gd29ya2Fyb3VuZCB0aGlzLAorICAgICB3ZSBpc3N1ZSBuZ2h0dHAyX3Nlc3Npb25fcmVzdW1lX2RhdGEoKSBoZXJlIHRvIGJyaW5nIGJhY2sgREFUQQorICAgICB0cmFuc21pc3Npb24gZnJvbSBkZWZlcnJlZCBzdGF0ZS4gKi8KKyAgbmdodHRwMl9zZXNzaW9uX3Jlc3VtZV9kYXRhKGgyLCBzdHJlYW0tPnN0cmVhbV9pZCk7CiAKICAgcmV0dXJuIGxlbjsKIApAQCAtMjI1NSw3ICsyMjI4LDYgQEAKICAgICB9CiAgIH0KIAotI2lmZGVmIE5HSFRUUDJfSEFTX1NFVF9MT0NBTF9XSU5ET1dfU0laRQogICBydiA9IG5naHR0cDJfc2Vzc2lvbl9zZXRfbG9jYWxfd2luZG93X3NpemUoaHR0cGMtPmgyLCBOR0hUVFAyX0ZMQUdfTk9ORSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAyX0hVR0VfV0lORE9XX1NJWkUpOwogICBpZihydiAhPSAwKSB7CkBAIC0yMjYzLDcgKzIyMzUsNiBAQAogICAgICAgICAgIG5naHR0cDJfc3RyZXJyb3IocnYpLCBydik7CiAgICAgcmV0dXJuIENVUkxFX0hUVFAyOwogICB9Ci0jZW5kaWYKIAogICAvKiB3ZSBhcmUgZ29pbmcgdG8gY29weSBtZW0gdG8gaHR0cGMtPmluYnVmLiAgVGhpcyBpcyByZXF1aXJlZCBzaW5jZQogICAgICBtZW0gaXMgcGFydCBvZiBidWZmZXIgcG9pbnRlZCBieSBzdHJlYW0tPm1lbSwgYW5kIGNhbGxiYWNrcwpAQCAtMjMyMSw2ICsyMjkyLDUxIEBACiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIAorQ1VSTGNvZGUgQ3VybF9odHRwMl9zdHJlYW1fcGF1c2Uoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwgYm9vbCBwYXVzZSkKK3sKKyAgREVCVUdBU1NFUlQoZGF0YSk7CisgIERFQlVHQVNTRVJUKGRhdGEtPmNvbm4pOworICAvKiBpZiBpdCBpc24ndCBIVFRQLzIsIHdlJ3JlIGRvbmUgKi8KKyAgaWYoIWRhdGEtPmNvbm4tPnByb3RvLmh0dHBjLmgyKQorICAgIHJldHVybiBDVVJMRV9PSzsKKyNpZmRlZiBOR0hUVFAyX0hBU19TRVRfTE9DQUxfV0lORE9XX1NJWkUKKyAgZWxzZSB7CisgICAgc3RydWN0IEhUVFAgKnN0cmVhbSA9IGRhdGEtPnJlcS5wcm90b3A7CisgICAgc3RydWN0IGh0dHBfY29ubiAqaHR0cGMgPSAmZGF0YS0+Y29ubi0+cHJvdG8uaHR0cGM7CisgICAgdWludDMyX3Qgd2luZG93ID0gIXBhdXNlICogSFRUUDJfSFVHRV9XSU5ET1dfU0laRTsKKyAgICBpbnQgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fc2V0X2xvY2FsX3dpbmRvd19zaXplKGh0dHBjLT5oMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HSFRUUDJfRkxBR19OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cpOworICAgIGlmKHJ2KSB7CisgICAgICBmYWlsZihkYXRhLCAibmdodHRwMl9zZXNzaW9uX3NldF9sb2NhbF93aW5kb3dfc2l6ZSgpIGZhaWxlZDogJXMoJWQpIiwKKyAgICAgICAgICAgIG5naHR0cDJfc3RyZXJyb3IocnYpLCBydik7CisgICAgICByZXR1cm4gQ1VSTEVfSFRUUDI7CisgICAgfQorCisgICAgLyogbWFrZSBzdXJlIHRoZSB3aW5kb3cgdXBkYXRlIGdldHMgc2VudCAqLworICAgIHJ2ID0gaDJfc2Vzc2lvbl9zZW5kKGRhdGEsIGh0dHBjLT5oMik7CisgICAgaWYocnYpCisgICAgICByZXR1cm4gQ1VSTEVfU0VORF9FUlJPUjsKKworICAgIERFQlVHRihpbmZvZihkYXRhLCAiU2V0IEhUVFAvMiB3aW5kb3cgc2l6ZSB0byAldSBmb3Igc3RyZWFtICV1XG4iLAorICAgICAgICAgICAgICAgICB3aW5kb3csIHN0cmVhbS0+c3RyZWFtX2lkKSk7CisKKyNpZmRlZiBERUJVR0JVSUxECisgICAgeworICAgICAgLyogcmVhZCBvdXQgdGhlIHN0cmVhbSBsb2NhbCB3aW5kb3cgYWdhaW4gKi8KKyAgICAgIHVpbnQzMl90IHdpbmRvdzIgPQorICAgICAgICBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV9sb2NhbF93aW5kb3dfc2l6ZShodHRwYy0+aDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lkKTsKKyAgICAgIERFQlVHRihpbmZvZihkYXRhLCAiSFRUUC8yIHdpbmRvdyBzaXplIGlzIG5vdyAldSBmb3Igc3RyZWFtICV1XG4iLAorICAgICAgICAgICAgICAgICAgIHdpbmRvdzIsIHN0cmVhbS0+c3RyZWFtX2lkKSk7CisgICAgfQorI2VuZGlmCisgIH0KKyNlbmRpZgorICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKIENVUkxjb2RlIEN1cmxfaHR0cDJfYWRkX2NoaWxkKHN0cnVjdCBDdXJsX2Vhc3kgKnBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDdXJsX2Vhc3kgKmNoaWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleGNsdXNpdmUpCkBAIC0yNDE0LDggKzI0MzAsNiBAQAogI2Vsc2UgLyogIVVTRV9OR0hUVFAyICovCiAKIC8qIFNhdGlzZnkgZXh0ZXJuYWwgcmVmZXJlbmNlcyBldmVuIGlmIGh0dHAyIGlzIG5vdCBjb21waWxlZCBpbi4gKi8KLQotI2RlZmluZSBDVVJMX0RJU0FCTEVfVFlQRUNIRUNLCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKIGNoYXIgKmN1cmxfcHVzaGhlYWRlcl9ieW51bShzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwgc2l6ZV90IG51bSkKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHAyLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9odHRwMi5oCmluZGV4IGRiNjIxN2IuLjE5ODlhZmYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHAyLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cDIuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNDIsMTYgKzQyLDE1IEBACiBDVVJMY29kZSBDdXJsX2h0dHAyX2luaXQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKIHZvaWQgQ3VybF9odHRwMl9pbml0X3N0YXRlKHN0cnVjdCBVcmxTdGF0ZSAqc3RhdGUpOwogdm9pZCBDdXJsX2h0dHAyX2luaXRfdXNlcnNldChzdHJ1Y3QgVXNlckRlZmluZWQgKnNldCk7Ci1DVVJMY29kZSBDdXJsX2h0dHAyX3NlbmRfcmVxdWVzdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogQ1VSTGNvZGUgQ3VybF9odHRwMl9yZXF1ZXN0X3VwZ3JhZGUoQ3VybF9zZW5kX2J1ZmZlciAqcmVxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKIENVUkxjb2RlIEN1cmxfaHR0cDJfc2V0dXAoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKIENVUkxjb2RlIEN1cmxfaHR0cDJfc3dpdGNoZWQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkYXRhLCBzaXplX3QgbnJlYWQpOwotLyogY2FsbGVkIGZyb20gQ3VybF9odHRwX3NldHVwX2Nvbm4gKi8KKy8qIGNhbGxlZCBmcm9tIGh0dHBfc2V0dXBfY29ubiAqLwogdm9pZCBDdXJsX2h0dHAyX3NldHVwX2Nvbm4oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKIHZvaWQgQ3VybF9odHRwMl9zZXR1cF9yZXEoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSk7Ci12b2lkIEN1cmxfaHR0cDJfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgcHJlbWF0dXJlKTsKK3ZvaWQgQ3VybF9odHRwMl9kb25lKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsIGJvb2wgcHJlbWF0dXJlKTsKIENVUkxjb2RlIEN1cmxfaHR0cDJfZG9uZV9zZW5kaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiBDVVJMY29kZSBDdXJsX2h0dHAyX2FkZF9jaGlsZChzdHJ1Y3QgQ3VybF9lYXN5ICpwYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgQ3VybF9lYXN5ICpjaGlsZCwKQEAgLTU5LDExICs1OCwxMSBAQAogdm9pZCBDdXJsX2h0dHAyX3JlbW92ZV9jaGlsZChzdHJ1Y3QgQ3VybF9lYXN5ICpwYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDdXJsX2Vhc3kgKmNoaWxkKTsKIHZvaWQgQ3VybF9odHRwMl9jbGVhbnVwX2RlcGVuZGVuY2llcyhzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKK0NVUkxjb2RlIEN1cmxfaHR0cDJfc3RyZWFtX3BhdXNlKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsIGJvb2wgcGF1c2UpOwogCiAvKiByZXR1cm5zIHRydWUgaWYgdGhlIEhUVFAvMiBzdHJlYW0gZXJyb3Igd2FzIEhUVFBfMV8xX1JFUVVJUkVEICovCiBib29sIEN1cmxfaDJfaHR0cF8xXzFfZXJyb3Ioc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKICNlbHNlIC8qIFVTRV9OR0hUVFAyICovCi0jZGVmaW5lIEN1cmxfaHR0cDJfc2VuZF9yZXF1ZXN0KHgpIENVUkxFX1VOU1VQUE9SVEVEX1BST1RPQ09MCiAjZGVmaW5lIEN1cmxfaHR0cDJfcmVxdWVzdF91cGdyYWRlKHgseSkgQ1VSTEVfVU5TVVBQT1JURURfUFJPVE9DT0wKICNkZWZpbmUgQ3VybF9odHRwMl9zZXR1cCh4KSBDVVJMRV9VTlNVUFBPUlRFRF9QUk9UT0NPTAogI2RlZmluZSBDdXJsX2h0dHAyX3N3aXRjaGVkKHgseSx6KSBDVVJMRV9VTlNVUFBPUlRFRF9QUk9UT0NPTApAQCAtNzYsNiArNzUsNyBAQAogI2RlZmluZSBDdXJsX2h0dHAyX2FkZF9jaGlsZCh4LCB5LCB6KQogI2RlZmluZSBDdXJsX2h0dHAyX3JlbW92ZV9jaGlsZCh4LCB5KQogI2RlZmluZSBDdXJsX2h0dHAyX2NsZWFudXBfZGVwZW5kZW5jaWVzKHgpCisjZGVmaW5lIEN1cmxfaHR0cDJfc3RyZWFtX3BhdXNlKHgsIHkpCiAjZGVmaW5lIEN1cmxfaDJfaHR0cF8xXzFfZXJyb3IoeCkgMAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHBfY2h1bmtzLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9odHRwX2NodW5rcy5jCmluZGV4IDE4ZGZjYjIuLmI2ZmZhNDEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHBfY2h1bmtzLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cF9jaHVua3MuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE4LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMTA5LDcgKzEwOSw4IEBACiBDSFVOS2NvZGUgQ3VybF9odHRwY2h1bmtfcmVhZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpkYXRhcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaXplX3QgZGF0YWxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaXplX3QgKndyb3RlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaXplX3QgKndyb3RlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlICpleHRyYXApCiB7CiAgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKQEAgLTEyNSw4ICsxMjYsMTAgQEAKICAgICAgY2h1bmsgcmVhZCBwcm9jZXNzLCB0byBwcm9wZXJseSBjYWxjdWxhdGUgdGhlIGNvbnRlbnQgbGVuZ3RoKi8KICAgaWYoZGF0YS0+c2V0Lmh0dHBfdGVfc2tpcCAmJiAhay0+aWdub3JlYm9keSkgewogICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIGRhdGFwLCBkYXRhbGVuKTsKLSAgICBpZihyZXN1bHQpCi0gICAgICByZXR1cm4gQ0hVTktFX1dSSVRFX0VSUk9SOworICAgIGlmKHJlc3VsdCkgeworICAgICAgKmV4dHJhcCA9IHJlc3VsdDsKKyAgICAgIHJldHVybiBDSFVOS0VfUEFTU1RIUlVfRVJST1I7CisgICAgfQogICB9CiAKICAgd2hpbGUobGVuZ3RoKSB7CkBAIC0xOTcsOCArMjAwLDEwIEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCBkYXRhcCwgcGllY2UpOwogCi0gICAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgICByZXR1cm4gQ0hVTktFX1dSSVRFX0VSUk9SOworICAgICAgICBpZihyZXN1bHQpIHsKKyAgICAgICAgICAqZXh0cmFwID0gcmVzdWx0OworICAgICAgICAgIHJldHVybiBDSFVOS0VfUEFTU1RIUlVfRVJST1I7CisgICAgICAgIH0KICAgICAgIH0KIAogICAgICAgKndyb3RlICs9IHBpZWNlOwpAQCAtMjQ0LDggKzI0OSwxMCBAQAogICAgICAgICAgIGlmKCFkYXRhLT5zZXQuaHR0cF90ZV9za2lwKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9IRUFERVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT50cmFpbGVyLCBjb25uLT50cmxQb3MpOwotICAgICAgICAgICAgaWYocmVzdWx0KQotICAgICAgICAgICAgICByZXR1cm4gQ0hVTktFX1dSSVRFX0VSUk9SOworICAgICAgICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgICAgICAgICpleHRyYXAgPSByZXN1bHQ7CisgICAgICAgICAgICAgIHJldHVybiBDSFVOS0VfUEFTU1RIUlVfRVJST1I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICAgIGNvbm4tPnRybFBvcyA9IDA7CiAgICAgICAgICAgY2gtPnN0YXRlID0gQ0hVTktfVFJBSUxFUl9DUjsKQEAgLTMzOSw4ICszNDYsOSBAQAogICAgIHJldHVybiAiSWxsZWdhbCBvciBtaXNzaW5nIGhleGFkZWNpbWFsIHNlcXVlbmNlIjsKICAgY2FzZSBDSFVOS0VfQkFEX0NIVU5LOgogICAgIHJldHVybiAiTWFsZm9ybWVkIGVuY29kaW5nIGZvdW5kIjsKLSAgY2FzZSBDSFVOS0VfV1JJVEVfRVJST1I6Ci0gICAgcmV0dXJuICJXcml0ZSBlcnJvciI7CisgIGNhc2UgQ0hVTktFX1BBU1NUSFJVX0VSUk9SOgorICAgIERFQlVHQVNTRVJUKDApOyAvKiBuZXZlciB1c2VkICovCisgICAgcmV0dXJuICIiOwogICBjYXNlIENIVU5LRV9CQURfRU5DT0RJTkc6CiAgICAgcmV0dXJuICJCYWQgY29udGVudC1lbmNvZGluZyBmb3VuZCI7CiAgIGNhc2UgQ0hVTktFX09VVF9PRl9NRU1PUlk6CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9odHRwX2NodW5rcy5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cF9jaHVua3MuaAppbmRleCBiOTY5YzU1Li44ZjRhMzNjIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9odHRwX2NodW5rcy5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHBfY2h1bmtzLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTIxLDYgKzIxLDkgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IGNvbm5lY3RkYXRhOworCiAvKgogICogVGhlIGxvbmdlc3QgcG9zc2libGUgaGV4YWRlY2ltYWwgbnVtYmVyIHdlIHN1cHBvcnQgaW4gYSBjaHVua2VkIHRyYW5zZmVyLgogICogV2VpcmQgZW5vdWdoLCBSRkMyNjE2IGRvZXNuJ3Qgc2V0IGEgbWF4aW11bSBzaXplISBTaW5jZSB3ZSB1c2Ugc3RydG91bCgpCkBAIC03MSw5ICs3NCw5IEBACiAgIENIVU5LRV9UT09fTE9OR19IRVggPSAxLAogICBDSFVOS0VfSUxMRUdBTF9IRVgsCiAgIENIVU5LRV9CQURfQ0hVTkssCi0gIENIVU5LRV9XUklURV9FUlJPUiwKICAgQ0hVTktFX0JBRF9FTkNPRElORywKICAgQ0hVTktFX09VVF9PRl9NRU1PUlksCisgIENIVU5LRV9QQVNTVEhSVV9FUlJPUiwgLyogQ3VybF9odHRwY2h1bmtfcmVhZCgpIHJldHVybnMgYSBDVVJMY29kZSB0byB1c2UgKi8KICAgQ0hVTktFX0xBU1QKIH0gQ0hVTktjb2RlOwogCkBAIC04Nyw0ICs5MCwxMCBAQAogICBzaXplX3QgZGF0YWxlZnQ7IC8qIHVudG91Y2hlZCBkYXRhIGFtb3VudCBhdCB0aGUgZW5kIG9mIHRoZSBsYXN0IGJ1ZmZlciAqLwogfTsKIAorLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaW4gaHR0cF9jaHVua3MuYyAqLwordm9pZCBDdXJsX2h0dHBjaHVua19pbml0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CitDSFVOS2NvZGUgQ3VybF9odHRwY2h1bmtfcmVhZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGNoYXIgKmRhdGFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NpemVfdCBsZW5ndGgsIHNzaXplX3QgKndyb3RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUgKnBhc3N0aHJ1KTsKKwogI2VuZGlmIC8qIEhFQURFUl9DVVJMX0hUVFBfQ0hVTktTX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHBfbmVnb3RpYXRlLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9odHRwX25lZ290aWF0ZS5jCmluZGV4IGM4ZjQwNjQuLjhlMWYzYmYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHBfbmVnb3RpYXRlLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cF9uZWdvdGlhdGUuYwpAQCAtMTQ4LDEwICsxNDgsMTAgQEAKICAgICB9CiAgICAgaWYoIW5lZ19jdHgtPmNvbnRleHQpIHsKICAgICAgIHJlc3VsdCA9IEN1cmxfaW5wdXRfbmVnb3RpYXRlKGNvbm4sIHByb3h5LCAiTmVnb3RpYXRlIik7Ci0gICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfTE9HSU5fREVOSUVEKSB7CisgICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfQVVUSF9FUlJPUikgewogICAgICAgICAvKiBuZWdvdGlhdGUgYXV0aCBmYWlsZWQsIGxldCdzIGNvbnRpbnVlIHVuYXV0aGVudGljYXRlZCB0byBzdGF5CiAgICAgICAgICAqIGNvbXBhdGlibGUgd2l0aCB0aGUgYmVoYXZpb3IgYmVmb3JlIGN1cmwtN182NF8wLTE1OC1nNmM2MDM1NTMyICovCi0gICAgICAgIGNvbm4tPmRhdGEtPnN0YXRlLmF1dGhwcm9ibGVtID0gVFJVRTsKKyAgICAgICAgYXV0aHAtPmRvbmUgPSBUUlVFOwogICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CiAgICAgICB9CiAgICAgICBlbHNlIGlmKHJlc3VsdCkKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHBfbnRsbS5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cF9udGxtLmMKaW5kZXggZTRhNGZlMC4uMzQyYjI0MiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cF9udGxtLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cF9udGxtLmMKQEAgLTQ0LDkgKzQ0LDcgQEAKIAogLyogU1NMIGJhY2tlbmQtc3BlY2lmaWMgI2lmIGJyYW5jaGVzIGluIHRoaXMgZmlsZSBtdXN0IGJlIGtlcHQgaW4gdGhlIG9yZGVyCiAgICBkb2N1bWVudGVkIGluIGN1cmxfbnRsbV9jb3JlLiAqLwotI2lmIGRlZmluZWQoTlRMTV9ORUVEU19OU1NfSU5JVCkKLSNpbmNsdWRlICJ2dGxzL25zc2cuaCIKLSNlbGlmIGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKKyNpZiBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCiAjaW5jbHVkZSAiY3VybF9zc3BpLmgiCiAjZW5kaWYKIApAQCAtMTM3LDExICsxMzUsNiBAQAogICBERUJVR0FTU0VSVChjb25uKTsKICAgREVCVUdBU1NFUlQoY29ubi0+ZGF0YSk7CiAKLSNpZiBkZWZpbmVkKE5UTE1fTkVFRFNfTlNTX0lOSVQpCi0gIGlmKENVUkxFX09LICE9IEN1cmxfbnNzX2ZvcmNlX2luaXQoY29ubi0+ZGF0YSkpCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0jZW5kaWYKLQogICBpZihwcm94eSkgewogICAgIGFsbG9jdXNlcnB3ZCA9ICZjb25uLT5hbGxvY3B0ci5wcm94eXVzZXJwd2Q7CiAgICAgdXNlcnAgPSBjb25uLT5odHRwX3Byb3h5LnVzZXI7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9odHRwX3Byb3h5LmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9odHRwX3Byb3h5LmMKaW5kZXggZDdlZDExNy4uNzVjN2E2MCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaHR0cF9wcm94eS5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2h0dHBfcHJveHkuYwpAQCAtNTgsOCArNTgsOSBAQAogICAgICAgQ3VybF9zc2xfY29ubmVjdF9ub25ibG9ja2luZyhjb25uLCBzb2NraW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25uLT5iaXRzLnByb3h5X3NzbF9jb25uZWN0ZWRbc29ja2luZGV4XSk7CiAgICAgaWYocmVzdWx0KQotICAgICAgY29ubi0+Yml0cy5jbG9zZSA9IFRSVUU7IC8qIGEgZmFpbGVkIGNvbm5lY3Rpb24gaXMgbWFya2VkIGZvciBjbG9zdXJlIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudCAoYmFkKSByZS11c2Ugb3Igc2ltaWxhciAqLworICAgICAgLyogYSBmYWlsZWQgY29ubmVjdGlvbiBpcyBtYXJrZWQgZm9yIGNsb3N1cmUgdG8gcHJldmVudCAoYmFkKSByZS11c2Ugb3IKKyAgICAgICAgIHNpbWlsYXIgKi8KKyAgICAgIGNvbm5jbG9zZShjb25uLCAiVExTIGhhbmRzaGFrZSBmYWlsZWQiKTsKICAgfQogICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKQEAgLTMyNyw3ICszMjgsNyBAQAogICAgIHsgLyogUkVBRElORyBSRVNQT05TRSBQSEFTRSAqLwogICAgICAgaW50IGVycm9yID0gU0VMRUNUX09LOwogCi0gICAgICB3aGlsZShzLT5rZWVwb24gJiYgIWVycm9yKSB7CisgICAgICB3aGlsZShzLT5rZWVwb24pIHsKICAgICAgICAgc3NpemVfdCBnb3RieXRlczsKIAogICAgICAgICAvKiBtYWtlIHN1cmUgd2UgaGF2ZSBzcGFjZSB0byByZWFkIG1vcmUgZGF0YSAqLwpAQCAtMzg0LDExICszODUsMTIgQEAKICAgICAgICAgICAgIC8qIGNodW5rZWQtZW5jb2RlZCBib2R5LCBzbyB3ZSBuZWVkIHRvIGRvIHRoZSBjaHVua2VkIGRhbmNlCiAgICAgICAgICAgICAgICBwcm9wZXJseSB0byBrbm93IHdoZW4gdGhlIGVuZCBvZiB0aGUgYm9keSBpcyByZWFjaGVkICovCiAgICAgICAgICAgICBDSFVOS2NvZGUgcjsKKyAgICAgICAgICAgIENVUkxjb2RlIGV4dHJhOwogICAgICAgICAgICAgc3NpemVfdCB0b29rY2FyZW9mID0gMDsKIAogICAgICAgICAgICAgLyogbm93IHBhcnNlIHRoZSBjaHVua2VkIHBpZWNlIG9mIGRhdGEgc28gdGhhdCB3ZSBjYW4KICAgICAgICAgICAgICAgIHByb3Blcmx5IHRlbGwgd2hlbiB0aGUgc3RyZWFtIGVuZHMgKi8KLSAgICAgICAgICAgIHIgPSBDdXJsX2h0dHBjaHVua19yZWFkKGNvbm4sIHMtPnB0ciwgMSwgJnRvb2tjYXJlb2YpOworICAgICAgICAgICAgciA9IEN1cmxfaHR0cGNodW5rX3JlYWQoY29ubiwgcy0+cHRyLCAxLCAmdG9va2NhcmVvZiwgJmV4dHJhKTsKICAgICAgICAgICAgIGlmKHIgPT0gQ0hVTktFX1NUT1ApIHsKICAgICAgICAgICAgICAgLyogd2UncmUgZG9uZSByZWFkaW5nIGNodW5rcyEgKi8KICAgICAgICAgICAgICAgaW5mb2YoZGF0YSwgImNodW5rIHJlYWRpbmcgRE9ORVxuIik7CkBAIC00NTUsNiArNDU3LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYocy0+Y2h1bmtlZF9lbmNvZGluZykgewogICAgICAgICAgICAgICBDSFVOS2NvZGUgcjsKKyAgICAgICAgICAgICAgQ1VSTGNvZGUgZXh0cmE7CiAKICAgICAgICAgICAgICAgaW5mb2YoZGF0YSwgIklnbm9yZSBjaHVua2VkIHJlc3BvbnNlLWJvZHlcbiIpOwogCkBAIC00NzIsNyArNDc1LDggQEAKIAogICAgICAgICAgICAgICAvKiBub3cgcGFyc2UgdGhlIGNodW5rZWQgcGllY2Ugb2YgZGF0YSBzbyB0aGF0IHdlIGNhbgogICAgICAgICAgICAgICAgICBwcm9wZXJseSB0ZWxsIHdoZW4gdGhlIHN0cmVhbSBlbmRzICovCi0gICAgICAgICAgICAgIHIgPSBDdXJsX2h0dHBjaHVua19yZWFkKGNvbm4sIHMtPmxpbmVfc3RhcnQgKyAxLCAxLCAmZ290Ynl0ZXMpOworICAgICAgICAgICAgICByID0gQ3VybF9odHRwY2h1bmtfcmVhZChjb25uLCBzLT5saW5lX3N0YXJ0ICsgMSwgMSwgJmdvdGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXh0cmEpOwogICAgICAgICAgICAgICBpZihyID09IENIVU5LRV9TVE9QKSB7CiAgICAgICAgICAgICAgICAgLyogd2UncmUgZG9uZSByZWFkaW5nIGNodW5rcyEgKi8KICAgICAgICAgICAgICAgICBpbmZvZihkYXRhLCAiY2h1bmsgcmVhZGluZyBET05FXG4iKTsKQEAgLTYzMiw2ICs2MzYsNyBAQAogICBjb25uLT5hbGxvY3B0ci5wcm94eXVzZXJwd2QgPSBOVUxMOwogCiAgIGRhdGEtPnN0YXRlLmF1dGhwcm94eS5kb25lID0gVFJVRTsKKyAgZGF0YS0+c3RhdGUuYXV0aHByb3h5Lm11bHRpcGFzcyA9IEZBTFNFOwogCiAgIGluZm9mKGRhdGEsICJQcm94eSByZXBsaWVkICVkIHRvIENPTk5FQ1QgcmVxdWVzdFxuIiwKICAgICAgICAgZGF0YS0+aW5mby5odHRwcHJveHljb2RlKTsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2ltYXAuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2ltYXAuYwppbmRleCBiZGNjNjljLi42NjE3MmJkIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9pbWFwLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaW1hcC5jCkBAIC05NSw4ICs5NSw3IEBACiBzdGF0aWMgQ1VSTGNvZGUgaW1hcF9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7CiBzdGF0aWMgQ1VSTGNvZGUgaW1hcF9kaXNjb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCBkZWFkKTsKIHN0YXRpYyBDVVJMY29kZSBpbWFwX211bHRpX3N0YXRlbWFjaChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpOwotc3RhdGljIGludCBpbWFwX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2Nrcyk7CitzdGF0aWMgaW50IGltYXBfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3QgKnNvY2tzKTsKIHN0YXRpYyBDVVJMY29kZSBpbWFwX2RvaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9waGFzZV9kb25lKTsKIHN0YXRpYyBDVVJMY29kZSBpbWFwX3NldHVwX2Nvbm5lY3Rpb24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKIHN0YXRpYyBjaGFyICppbWFwX2F0b20oY29uc3QgY2hhciAqc3RyLCBib29sIGVzY2FwZV9vbmx5KTsKQEAgLTQ0NCwxMCArNDQzLDggQEAKICAqLwogc3RhdGljIENVUkxjb2RlIGltYXBfcGVyZm9ybV9zdGFydHRscyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotCiAgIC8qIFNlbmQgdGhlIFNUQVJUVExTIGNvbW1hbmQgKi8KLSAgcmVzdWx0ID0gaW1hcF9zZW5kZihjb25uLCAiU1RBUlRUTFMiKTsKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gaW1hcF9zZW5kZihjb25uLCAiU1RBUlRUTFMiKTsKIAogICBpZighcmVzdWx0KQogICAgIHN0YXRlKGNvbm4sIElNQVBfU1RBUlRUTFMpOwpAQCAtNDYzLDExICs0NjAsMTAgQEAKICAqLwogc3RhdGljIENVUkxjb2RlIGltYXBfcGVyZm9ybV91cGdyYWRlX3RscyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotICBzdHJ1Y3QgaW1hcF9jb25uICppbWFwYyA9ICZjb25uLT5wcm90by5pbWFwYzsKLQogICAvKiBTdGFydCB0aGUgU1NMIGNvbm5lY3Rpb24gKi8KLSAgcmVzdWx0ID0gQ3VybF9zc2xfY29ubmVjdF9ub25ibG9ja2luZyhjb25uLCBGSVJTVFNPQ0tFVCwgJmltYXBjLT5zc2xkb25lKTsKKyAgc3RydWN0IGltYXBfY29ubiAqaW1hcGMgPSAmY29ubi0+cHJvdG8uaW1hcGM7CisgIENVUkxjb2RlIHJlc3VsdCA9IEN1cmxfc3NsX2Nvbm5lY3Rfbm9uYmxvY2tpbmcoY29ubiwgRklSU1RTT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltYXBjLT5zc2xkb25lKTsKIAogICBpZighcmVzdWx0KSB7CiAgICAgaWYoaW1hcGMtPnN0YXRlICE9IElNQVBfVVBHUkFERVRMUykKQEAgLTgyNiwxMCArODIyLDggQEAKICAqLwogc3RhdGljIENVUkxjb2RlIGltYXBfcGVyZm9ybV9sb2dvdXQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLQogICAvKiBTZW5kIHRoZSBMT0dPVVQgY29tbWFuZCAqLwotICByZXN1bHQgPSBpbWFwX3NlbmRmKGNvbm4sICJMT0dPVVQiKTsKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gaW1hcF9zZW5kZihjb25uLCAiTE9HT1VUIik7CiAKICAgaWYoIXJlc3VsdCkKICAgICBzdGF0ZShjb25uLCBJTUFQX0xPR09VVCk7CkBAIC0xMzEyLDYgKzEzMDYsNyBAQAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElNQVBfTElTVDoKKyAgICBjYXNlIElNQVBfU0VBUkNIOgogICAgICAgcmVzdWx0ID0gaW1hcF9zdGF0ZV9saXN0c2VhcmNoX3Jlc3AoY29ubiwgaW1hcGNvZGUsIGltYXBjLT5zdGF0ZSk7CiAgICAgICBicmVhazsKIApAQCAtMTMzNSwxMCArMTMzMCw2IEBACiAgICAgICByZXN1bHQgPSBpbWFwX3N0YXRlX2FwcGVuZF9maW5hbF9yZXNwKGNvbm4sIGltYXBjb2RlLCBpbWFwYy0+c3RhdGUpOwogICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIElNQVBfU0VBUkNIOgotICAgICAgcmVzdWx0ID0gaW1hcF9zdGF0ZV9saXN0c2VhcmNoX3Jlc3AoY29ubiwgaW1hcGNvZGUsIGltYXBjLT5zdGF0ZSk7Ci0gICAgICBicmVhazsKLQogICAgIGNhc2UgSU1BUF9MT0dPVVQ6CiAgICAgICAvKiBmYWxsdGhyb3VnaCwganVzdCBzdG9wISAqLwogICAgIGRlZmF1bHQ6CkBAIC0xMzk3LDEwICsxMzg4LDkgQEAKIH0KIAogLyogRm9yIHRoZSBJTUFQICJwcm90b2NvbCBjb25uZWN0IiBhbmQgImRvaW5nIiBwaGFzZXMgb25seSAqLwotc3RhdGljIGludCBpbWFwX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKK3N0YXRpYyBpbnQgaW1hcF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MpCiB7Ci0gIHJldHVybiBDdXJsX3BwX2dldHNvY2soJmNvbm4tPnByb3RvLmltYXBjLnBwLCBzb2NrcywgbnVtc29ja3MpOworICByZXR1cm4gQ3VybF9wcF9nZXRzb2NrKCZjb25uLT5wcm90by5pbWFwYy5wcCwgc29ja3MpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2ltYXAuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2ltYXAuaAppbmRleCAwZWZjZmQyLi40Nzg2ZjU2IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9pbWFwLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvaW1hcC5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAwOSAtIDIwMTcsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9pbmV0X250b3AuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2luZXRfbnRvcC5jCmluZGV4IDg1NTk4MWMuLjlhNWFmN2YgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2luZXRfbnRvcC5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2luZXRfbnRvcC5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxICBJbnRlcm5ldCBTb2Z0d2FyZSBDb25zb3J0aXVtLgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMTkgIEludGVybmV0IFNvZnR3YXJlIENvbnNvcnRpdW0uCiAgKgogICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9pbmV0X250b3AuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2luZXRfbnRvcC5oCmluZGV4IGQxNTBiYjYuLjlkM2YyMzcgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2luZXRfbnRvcC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2luZXRfbnRvcC5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9pbmV0X3B0b24uYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2luZXRfcHRvbi5jCmluZGV4IDBkNjVhZTAuLjljODdhMDUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2luZXRfcHRvbi5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2luZXRfcHRvbi5jCkBAIC0xLDYgKzEsNiBAQAogLyogVGhpcyBpcyBmcm9tIHRoZSBCSU5EIDQuOS40IHJlbGVhc2UsIG1vZGlmaWVkIHRvIGNvbXBpbGUgYnkgaXRzZWxmICovCiAKLS8qIENvcHlyaWdodCAoYykgMTk5NiBieSBJbnRlcm5ldCBTb2Z0d2FyZSBDb25zb3J0aXVtLgorLyogQ29weXJpZ2h0IChjKSAxOTk2IC0gMjAxOSBieSBJbnRlcm5ldCBTb2Z0d2FyZSBDb25zb3J0aXVtLgogICoKICAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvaW5ldF9wdG9uLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9pbmV0X3B0b24uaAppbmRleCAwMjA5YjliLi5lNjk1YWY5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9pbmV0X3B0b24uaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9pbmV0X3B0b24uaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE3LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIva3JiNS5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIva3JiNS5jCmluZGV4IDE0N2FiMDIuLjViZDhlNzEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2tyYjUuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9rcmI1LmMKQEAgLTEsOCArMSw4IEBACiAvKiBHU1NBUEkva3JiNSBzdXBwb3J0IGZvciBGVFAgLSBsb29zZWx5IGJhc2VkIG9uIG9sZCBrcmI0LmMKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTkgS3VuZ2xpZ2EgVGVrbmlza2EgSMO2Z3Nrb2xhbgorICogQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5IEt1bmdsaWdhIFRla25pc2thIEjDg8K2Z3Nrb2xhbgogICogKFJveWFsIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBTdG9ja2hvbG0sIFN3ZWRlbikuCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQgLSAyMDE3IERhbmllbCBTdGVuYmVyZworICogQ29weXJpZ2h0IChjKSAyMDA0IC0gMjAxOSBEYW5pZWwgU3RlbmJlcmcKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMjAsMTAgKzMyMCw4IEBACiAgICAgT01fdWludDMyIG1pbjsKICAgICBnc3NfY3R4X2lkX3QgKmNvbnRleHQgPSBhcHBfZGF0YTsKICAgICBpZigqY29udGV4dCAhPSBHU1NfQ19OT19DT05URVhUKSB7Ci0jaWZkZWYgREVCVUdCVUlMRAotICAgICAgT01fdWludDMyIG1haiA9Ci0jZW5kaWYKLSAgICAgIGdzc19kZWxldGVfc2VjX2NvbnRleHQoJm1pbiwgY29udGV4dCwgR1NTX0NfTk9fQlVGRkVSKTsKKyAgICAgIE9NX3VpbnQzMiBtYWogPSBnc3NfZGVsZXRlX3NlY19jb250ZXh0KCZtaW4sIGNvbnRleHQsIEdTU19DX05PX0JVRkZFUik7CisgICAgICAodm9pZCltYWo7CiAgICAgICBERUJVR0FTU0VSVChtYWogPT0gR1NTX1NfQ09NUExFVEUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL2xkYXAuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2xkYXAuYwppbmRleCBmZDMxZmFhLi43NzFlZGI0IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9sZGFwLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvbGRhcC5jCkBAIC0xMTIsMTMgKzExMiwxOSBAQAogICAjZGVmaW5lIExEQVBfVFJBQ0UoeCkgICBkbyB7IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbGRhcF90cmFjZSgiJXU6ICIsIF9fTElORV9fKTsgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sZGFwX3RyYWNlIHg7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBXSElMRV9GQUxTRQorICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDApCiAKICAgc3RhdGljIHZvaWQgX2xkYXBfdHJhY2UoY29uc3QgY2hhciAqZm10LCAuLi4pOwogI2Vsc2UKICAgI2RlZmluZSBMREFQX1RSQUNFKHgpICAgQ3VybF9ub3Bfc3RtdAogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKFVTRV9XSU4zMl9MREFQKSAmJiBkZWZpbmVkKGxkYXBfZXJyMnN0cmluZykKKy8qIFVzZSBhbnNpIGVycm9yIHN0cmluZ3MgaW4gVU5JQ09ERSBidWlsZHMgKi8KKyN1bmRlZiBsZGFwX2VycjJzdHJpbmcKKyNkZWZpbmUgbGRhcF9lcnIyc3RyaW5nIGxkYXBfZXJyMnN0cmluZ0EKKyNlbmRpZgorCiAKIHN0YXRpYyBDVVJMY29kZSBDdXJsX2xkYXAoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKTsKIApAQCAtODM4LDEwICs4NDQsMTAgQEAKIHN0YXRpYyBpbnQgX2xkYXBfdXJsX3BhcnNlMihjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIExEQVBVUkxEZXNjICpsdWRwKQogewogICBpbnQgcmMgPSBMREFQX1NVQ0NFU1M7Ci0gIGNoYXIgKnBhdGg7Ci0gIGNoYXIgKnF1ZXJ5OwogICBjaGFyICpwOwotICBjaGFyICpxOworICBjaGFyICpwYXRoOworICBjaGFyICpxID0gTlVMTDsKKyAgY2hhciAqcXVlcnkgPSBOVUxMOwogICBzaXplX3QgaTsKIAogICBpZighY29ubi0+ZGF0YSB8fApAQCAtODU5LDExICs4NjUsMTMgQEAKICAgaWYoIXBhdGgpCiAgICAgcmV0dXJuIExEQVBfTk9fTUVNT1JZOwogCi0gIC8qIER1cGxpY2F0ZSB0aGUgcXVlcnkgKi8KLSAgcSA9IHF1ZXJ5ID0gc3RyZHVwKGNvbm4tPmRhdGEtPnN0YXRlLnVwLnF1ZXJ5KTsKLSAgaWYoIXF1ZXJ5KSB7Ci0gICAgZnJlZShwYXRoKTsKLSAgICByZXR1cm4gTERBUF9OT19NRU1PUlk7CisgIC8qIER1cGxpY2F0ZSB0aGUgcXVlcnkgaWYgcHJlc2VudCAqLworICBpZihjb25uLT5kYXRhLT5zdGF0ZS51cC5xdWVyeSkgeworICAgIHEgPSBxdWVyeSA9IHN0cmR1cChjb25uLT5kYXRhLT5zdGF0ZS51cC5xdWVyeSk7CisgICAgaWYoIXF1ZXJ5KSB7CisgICAgICBmcmVlKHBhdGgpOworICAgICAgcmV0dXJuIExEQVBfTk9fTUVNT1JZOworICAgIH0KICAgfQogCiAgIC8qIFBhcnNlIHRoZSBETiAoRGlzdGluZ3Vpc2hlZCBOYW1lKSAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbGxpc3QuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2xsaXN0LmMKaW5kZXggZjg3NjljMi4uZTdjNmY1MSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbGxpc3QuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9sbGlzdC5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTcsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0xNDQsNTQgKzE0NCwzIEBACiB7CiAgIHJldHVybiBsaXN0LT5zaXplOwogfQotCi0vKgotICogQHVuaXR0ZXN0OiAxMzAwCi0gKi8KLXZvaWQgQ3VybF9sbGlzdF9tb3ZlKHN0cnVjdCBjdXJsX2xsaXN0ICpsaXN0LCBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50ICplLAotICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGN1cmxfbGxpc3QgKnRvX2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50ICp0b19lKQotewotICAvKiBSZW1vdmUgZWxlbWVudCBmcm9tIGxpc3QgKi8KLSAgaWYoZSA9PSBOVUxMIHx8IGxpc3QtPnNpemUgPT0gMCkKLSAgICByZXR1cm47Ci0KLSAgaWYoZSA9PSBsaXN0LT5oZWFkKSB7Ci0gICAgbGlzdC0+aGVhZCA9IGUtPm5leHQ7Ci0KLSAgICBpZihsaXN0LT5oZWFkID09IE5VTEwpCi0gICAgICBsaXN0LT50YWlsID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICBlLT5uZXh0LT5wcmV2ID0gTlVMTDsKLSAgfQotICBlbHNlIHsKLSAgICBlLT5wcmV2LT5uZXh0ID0gZS0+bmV4dDsKLSAgICBpZighZS0+bmV4dCkKLSAgICAgIGxpc3QtPnRhaWwgPSBlLT5wcmV2OwotICAgIGVsc2UKLSAgICAgIGUtPm5leHQtPnByZXYgPSBlLT5wcmV2OwotICB9Ci0KLSAgLS1saXN0LT5zaXplOwotCi0gIC8qIEFkZCBlbGVtZW50IHRvIHRvX2xpc3QgYWZ0ZXIgdG9fZSAqLwotICBpZih0b19saXN0LT5zaXplID09IDApIHsKLSAgICB0b19saXN0LT5oZWFkID0gZTsKLSAgICB0b19saXN0LT5oZWFkLT5wcmV2ID0gTlVMTDsKLSAgICB0b19saXN0LT5oZWFkLT5uZXh0ID0gTlVMTDsKLSAgICB0b19saXN0LT50YWlsID0gZTsKLSAgfQotICBlbHNlIHsKLSAgICBlLT5uZXh0ID0gdG9fZS0+bmV4dDsKLSAgICBlLT5wcmV2ID0gdG9fZTsKLSAgICBpZih0b19lLT5uZXh0KSB7Ci0gICAgICB0b19lLT5uZXh0LT5wcmV2ID0gZTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICB0b19saXN0LT50YWlsID0gZTsKLSAgICB9Ci0gICAgdG9fZS0+bmV4dCA9IGU7Ci0gIH0KLQotICArK3RvX2xpc3QtPnNpemU7Ci19CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9sbGlzdC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvbGxpc3QuaAppbmRleCBiOWQ0Yzg5Li4wMTc4YzQyIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9sbGlzdC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL2xsaXN0LmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTQ3LDcgKzQ3LDQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKTsKIHNpemVfdCBDdXJsX2xsaXN0X2NvdW50KHN0cnVjdCBjdXJsX2xsaXN0ICopOwogdm9pZCBDdXJsX2xsaXN0X2Rlc3Ryb3koc3RydWN0IGN1cmxfbGxpc3QgKiwgdm9pZCAqKTsKLXZvaWQgQ3VybF9sbGlzdF9tb3ZlKHN0cnVjdCBjdXJsX2xsaXN0ICosIHN0cnVjdCBjdXJsX2xsaXN0X2VsZW1lbnQgKiwKLSAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX2xsaXN0ICosIHN0cnVjdCBjdXJsX2xsaXN0X2VsZW1lbnQgKik7Ci0KICNlbmRpZiAvKiBIRUFERVJfQ1VSTF9MTElTVF9IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9tZDQuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL21kNC5jCmluZGV4IGU3Yzc3YmMuLjM4ZjFiMmIgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL21kNC5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL21kNC5jCkBAIC0xLDUgKzEsMjI1IEBACi0vKgotICogIWNoZWNrc3JjISBkaXNhYmxlIENPUFlSSUdIVAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKQorCisjaW5jbHVkZSAiY3VybF9tZDQuaCIKKyNpbmNsdWRlICJ3YXJubGVzcy5oIgorCisjaWZkZWYgVVNFX09QRU5TU0wKKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+CisjZW5kaWYgLyogVVNFX09QRU5TU0wgKi8KKworI2lmZGVmIFVTRV9NQkVEVExTCisjaW5jbHVkZSA8bWJlZHRscy9jb25maWcuaD4KKyNpbmNsdWRlIDxtYmVkdGxzL3ZlcnNpb24uaD4KKworI2lmKE1CRURUTFNfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMjA3MDAwMCkKKyAgI2RlZmluZSBIQVNfTUJFRFRMU19SRVNVTFRfQ09ERV9CQVNFRF9GVU5DVElPTlMKKyNlbmRpZgorI2VuZGlmIC8qIFVTRV9NQkVEVExTICovCisKKyNpZiBkZWZpbmVkKFVTRV9HTlVUTFNfTkVUVExFKQorCisjaW5jbHVkZSA8bmV0dGxlL21kNC5oPgorCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKworLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKwordHlwZWRlZiBzdHJ1Y3QgbWQ0X2N0eCBNRDRfQ1RYOworCitzdGF0aWMgdm9pZCBNRDRfSW5pdChNRDRfQ1RYICpjdHgpCit7CisgIG1kNF9pbml0KGN0eCk7Cit9CisKK3N0YXRpYyB2b2lkIE1ENF9VcGRhdGUoTUQ0X0NUWCAqY3R4LCBjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUpCit7CisgIG1kNF91cGRhdGUoY3R4LCBzaXplLCBkYXRhKTsKK30KKworc3RhdGljIHZvaWQgTUQ0X0ZpbmFsKHVuc2lnbmVkIGNoYXIgKnJlc3VsdCwgTUQ0X0NUWCAqY3R4KQoreworICBtZDRfZGlnZXN0KGN0eCwgTUQ0X0RJR0VTVF9TSVpFLCByZXN1bHQpOworfQorCisjZWxpZiBkZWZpbmVkKFVTRV9HTlVUTFMpCisKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKworI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLworI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKK3R5cGVkZWYgZ2NyeV9tZF9oZF90IE1ENF9DVFg7CisKK3N0YXRpYyB2b2lkIE1ENF9Jbml0KE1ENF9DVFggKmN0eCkKK3sKKyAgZ2NyeV9tZF9vcGVuKGN0eCwgR0NSWV9NRF9NRDQsIDApOworfQorCitzdGF0aWMgdm9pZCBNRDRfVXBkYXRlKE1ENF9DVFggKmN0eCwgY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKQoreworICBnY3J5X21kX3dyaXRlKCpjdHgsIGRhdGEsIHNpemUpOworfQorCitzdGF0aWMgdm9pZCBNRDRfRmluYWwodW5zaWduZWQgY2hhciAqcmVzdWx0LCBNRDRfQ1RYICpjdHgpCit7CisgIG1lbWNweShyZXN1bHQsIGdjcnlfbWRfcmVhZCgqY3R4LCAwKSwgTUQ0X0RJR0VTVF9MRU5HVEgpOworICBnY3J5X21kX2Nsb3NlKCpjdHgpOworfQorCisjZWxpZiBkZWZpbmVkKFVTRV9PUEVOU1NMKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX01ENCkKKy8qIFdoZW4gT3BlblNTTCBpcyBhdmFpbGFibGUgd2UgdXNlIHRoZSBNRDQtZnVuY3Rpb25zIGZyb20gT3BlblNTTCAqLworI2luY2x1ZGUgPG9wZW5zc2wvbWQ0Lmg+CisKKyNlbGlmIChkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCkgJiYgXAorICAgICAgICAgICAgICAoX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwNDApKSB8fCBcCisgICAgICAoZGVmaW5lZChfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEKSAmJiBcCisgICAgICAgICAgICAgIChfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEID49IDIwMDAwKSkKKworI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25EaWdlc3QuaD4KKworI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLworI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKK3R5cGVkZWYgQ0NfTUQ0X0NUWCBNRDRfQ1RYOworCitzdGF0aWMgdm9pZCBNRDRfSW5pdChNRDRfQ1RYICpjdHgpCit7CisgICh2b2lkKUNDX01ENF9Jbml0KGN0eCk7Cit9CisKK3N0YXRpYyB2b2lkIE1ENF9VcGRhdGUoTUQ0X0NUWCAqY3R4LCBjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUpCit7CisgICh2b2lkKUNDX01ENF9VcGRhdGUoY3R4LCBkYXRhLCAoQ0NfTE9ORylzaXplKTsKK30KKworc3RhdGljIHZvaWQgTUQ0X0ZpbmFsKHVuc2lnbmVkIGNoYXIgKnJlc3VsdCwgTUQ0X0NUWCAqY3R4KQoreworICAodm9pZClDQ19NRDRfRmluYWwocmVzdWx0LCBjdHgpOworfQorCisjZWxpZiBkZWZpbmVkKFVTRV9XSU4zMl9DUllQVE8pCisKKyNpbmNsdWRlIDx3aW5jcnlwdC5oPgorCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKworLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKwordHlwZWRlZiBzdHJ1Y3QgeworICBIQ1JZUFRQUk9WIGhDcnlwdFByb3Y7CisgIEhDUllQVEhBU0ggaEhhc2g7Cit9IE1ENF9DVFg7CisKK3N0YXRpYyB2b2lkIE1ENF9Jbml0KE1ENF9DVFggKmN0eCkKK3sKKyAgY3R4LT5oQ3J5cHRQcm92ID0gMDsKKyAgY3R4LT5oSGFzaCA9IDA7CisKKyAgaWYoQ3J5cHRBY3F1aXJlQ29udGV4dCgmY3R4LT5oQ3J5cHRQcm92LCBOVUxMLCBOVUxMLCBQUk9WX1JTQV9GVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgIENSWVBUX1ZFUklGWUNPTlRFWFQpKSB7CisgICAgQ3J5cHRDcmVhdGVIYXNoKGN0eC0+aENyeXB0UHJvdiwgQ0FMR19NRDQsIDAsIDAsICZjdHgtPmhIYXNoKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCBNRDRfVXBkYXRlKE1ENF9DVFggKmN0eCwgY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKQoreworICBDcnlwdEhhc2hEYXRhKGN0eC0+aEhhc2gsIChCWVRFICopZGF0YSwgKHVuc2lnbmVkIGludCkgc2l6ZSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIE1ENF9GaW5hbCh1bnNpZ25lZCBjaGFyICpyZXN1bHQsIE1ENF9DVFggKmN0eCkKK3sKKyAgdW5zaWduZWQgbG9uZyBsZW5ndGggPSAwOworCisgIENyeXB0R2V0SGFzaFBhcmFtKGN0eC0+aEhhc2gsIEhQX0hBU0hWQUwsIE5VTEwsICZsZW5ndGgsIDApOworICBpZihsZW5ndGggPT0gTUQ0X0RJR0VTVF9MRU5HVEgpCisgICAgQ3J5cHRHZXRIYXNoUGFyYW0oY3R4LT5oSGFzaCwgSFBfSEFTSFZBTCwgcmVzdWx0LCAmbGVuZ3RoLCAwKTsKKworICBpZihjdHgtPmhIYXNoKQorICAgIENyeXB0RGVzdHJveUhhc2goY3R4LT5oSGFzaCk7CisKKyAgaWYoY3R4LT5oQ3J5cHRQcm92KQorICAgIENyeXB0UmVsZWFzZUNvbnRleHQoY3R4LT5oQ3J5cHRQcm92LCAwKTsKK30KKworI2VsaWYoZGVmaW5lZChVU0VfTUJFRFRMUykgJiYgZGVmaW5lZChNQkVEVExTX01ENF9DKSkKKworI2luY2x1ZGUgPG1iZWR0bHMvbWQ0Lmg+CisKKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorCisvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCit0eXBlZGVmIHN0cnVjdCB7CisgIHZvaWQgKmRhdGE7CisgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKK30gTUQ0X0NUWDsKKworc3RhdGljIHZvaWQgTUQ0X0luaXQoTUQ0X0NUWCAqY3R4KQoreworICBjdHgtPmRhdGEgPSBOVUxMOworICBjdHgtPnNpemUgPSAwOworfQorCitzdGF0aWMgdm9pZCBNRDRfVXBkYXRlKE1ENF9DVFggKmN0eCwgY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKQoreworICBpZihjdHgtPmRhdGEgPT0gTlVMTCkgeworICAgIGN0eC0+ZGF0YSA9IG1hbGxvYyhzaXplKTsKKyAgICBpZihjdHgtPmRhdGEgIT0gTlVMTCkgeworICAgICAgbWVtY3B5KGN0eC0+ZGF0YSwgZGF0YSwgc2l6ZSk7CisgICAgICBjdHgtPnNpemUgPSBzaXplOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgdm9pZCBNRDRfRmluYWwodW5zaWduZWQgY2hhciAqcmVzdWx0LCBNRDRfQ1RYICpjdHgpCit7CisgIGlmKGN0eC0+ZGF0YSAhPSBOVUxMKSB7CisjaWYgIWRlZmluZWQoSEFTX01CRURUTFNfUkVTVUxUX0NPREVfQkFTRURfRlVOQ1RJT05TKQorICAgIG1iZWR0bHNfbWQ0KGN0eC0+ZGF0YSwgY3R4LT5zaXplLCByZXN1bHQpOworI2Vsc2UKKyAgICAodm9pZCkgbWJlZHRsc19tZDRfcmV0KGN0eC0+ZGF0YSwgY3R4LT5zaXplLCByZXN1bHQpOworI2VuZGlmCisKKyAgICBDdXJsX3NhZmVmcmVlKGN0eC0+ZGF0YSk7CisgICAgY3R4LT5zaXplID0gMDsKKyAgfQorfQorCisjZWxzZQorLyogV2hlbiBubyBvdGhlciBjcnlwdG8gbGlicmFyeSBpcyBhdmFpbGFibGUsIG9yIHRoZSBjcnlwdG8gbGlicmFyeSBkb2Vzbid0CisgKiBzdXBwb3J0IE1ENCwgd2UgdXNlIHRoaXMgY29kZSBzZWdtZW50IHRoaXMgaW1wbGVtZW50YXRpb24gb2YgaXQKKyAqCiAgKiBUaGlzIGlzIGFuIE9wZW5TU0wtY29tcGF0aWJsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUlNBIERhdGEgU2VjdXJpdHksIEluYy4KICAqIE1ENCBNZXNzYWdlLURpZ2VzdCBBbGdvcml0aG0gKFJGQyAxMzIwKS4KICAqCkBAIC0zNiwxOSArMjU2LDYgQEAKICAqIGNvbXBpbGUtdGltZSBjb25maWd1cmF0aW9uLgogICovCiAKLSNpbmNsdWRlICJjdXJsX3NldHVwLmgiCi0KLS8qIFRoZSBOU1MsIE9TLzQwMCwgYW5kIHdoZW4gbm90IGluY2x1ZGVkLCBPcGVuU1NMIGFuZCBtYmVkIFRMUyBjcnlwdG8KLSAqIGxpYnJhcmllcyBkbyBub3QgcHJvdmlkZSB0aGUgTUQ0IGhhc2ggYWxnb3JpdGhtLCBzbyB3ZSB1c2UgdGhpcwotICogaW1wbGVtZW50YXRpb24gb2YgaXQgKi8KLSNpZiBkZWZpbmVkKFVTRV9OU1MpIHx8IGRlZmluZWQoVVNFX09TNDAwQ1JZUFRPKSB8fCBcCi0gICAgKGRlZmluZWQoVVNFX09QRU5TU0wpICYmIGRlZmluZWQoT1BFTlNTTF9OT19NRDQpKSB8fCBcCi0gICAgKGRlZmluZWQoVVNFX01CRURUTFMpICYmICFkZWZpbmVkKE1CRURUTFNfTUQ0X0MpKQotCi0jaW5jbHVkZSAiY3VybF9tZDQuaCIKLSNpbmNsdWRlICJ3YXJubGVzcy5oIgotCi0jaWZuZGVmIEhBVkVfT1BFTlNTTAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKQEAgLTI5OCwxNiArNTA1LDE2IEBACiAgIG1lbXNldChjdHgsIDAsIHNpemVvZigqY3R4KSk7CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8qIENSWVBUTyBMSUJTICovCiAKLXZvaWQgQ3VybF9tZDRpdCh1bnNpZ25lZCBjaGFyICpvdXRwdXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCBzaXplX3QgbGVuKQordm9pZCBDdXJsX21kNGl0KHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsCisgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGxlbikKIHsKICAgTUQ0X0NUWCBjdHg7CisKICAgTUQ0X0luaXQoJmN0eCk7CiAgIE1ENF9VcGRhdGUoJmN0eCwgaW5wdXQsIGN1cmx4X3V6dG91aShsZW4pKTsKICAgTUQ0X0ZpbmFsKG91dHB1dCwgJmN0eCk7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKFVTRV9OU1MpIHx8IGRlZmluZWQoVVNFX09TNDAwQ1JZUFRPKSB8fAotICAgIChkZWZpbmVkKFVTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKE9QRU5TU0xfTk9fTUQ0KSkgfHwKLSAgICAoZGVmaW5lZChVU0VfTUJFRFRMUykgJiYgIWRlZmluZWQoTUJFRFRMU19NRDRfQykpICovCisjZW5kaWYgLyogQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9tZDUuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL21kNS5jCmluZGV4IDJiODFjYTQuLjNmNjAxYjMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL21kNS5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL21kNS5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0zMCw2ICszMCwxNCBAQAogI2luY2x1ZGUgImN1cmxfaG1hYy5oIgogI2luY2x1ZGUgIndhcm5sZXNzLmgiCiAKKyNpZmRlZiBVU0VfTUJFRFRMUworI2luY2x1ZGUgPG1iZWR0bHMvdmVyc2lvbi5oPgorCisjaWYoTUJFRFRMU19WRVJTSU9OX05VTUJFUiA+PSAweDAyMDcwMDAwKQorICAjZGVmaW5lIEhBU19NQkVEVExTX1JFU1VMVF9DT0RFX0JBU0VEX0ZVTkNUSU9OUworI2VuZGlmCisjZW5kaWYgLyogVVNFX01CRURUTFMgKi8KKwogI2lmIGRlZmluZWQoVVNFX0dOVVRMU19ORVRUTEUpCiAKICNpbmNsdWRlIDxuZXR0bGUvbWQ1Lmg+CkBAIC01MSw3ICs1OSw3IEBACiAgIG1kNV91cGRhdGUoY3R4LCBpbnB1dExlbiwgaW5wdXQpOwogfQogCi1zdGF0aWMgdm9pZCBNRDVfRmluYWwodW5zaWduZWQgY2hhciBkaWdlc3RbMTZdLCBNRDVfQ1RYICpjdHgpCitzdGF0aWMgdm9pZCBNRDVfRmluYWwodW5zaWduZWQgY2hhciAqZGlnZXN0LCBNRDVfQ1RYICpjdHgpCiB7CiAgIG1kNV9kaWdlc3QoY3R4LCAxNiwgZGlnZXN0KTsKIH0KQEAgLTc3LDcgKzg1LDcgQEAKICAgZ2NyeV9tZF93cml0ZSgqY3R4LCBpbnB1dCwgaW5wdXRMZW4pOwogfQogCi1zdGF0aWMgdm9pZCBNRDVfRmluYWwodW5zaWduZWQgY2hhciBkaWdlc3RbMTZdLCBNRDVfQ1RYICpjdHgpCitzdGF0aWMgdm9pZCBNRDVfRmluYWwodW5zaWduZWQgY2hhciAqZGlnZXN0LCBNRDVfQ1RYICpjdHgpCiB7CiAgIG1lbWNweShkaWdlc3QsIGdjcnlfbWRfcmVhZCgqY3R4LCAwKSwgMTYpOwogICBnY3J5X21kX2Nsb3NlKCpjdHgpOwpAQCAtOTAsNiArOTgsNDYgQEAKIC8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKKyNlbGlmIGRlZmluZWQoVVNFX01CRURUTFMpCisKKyNpbmNsdWRlIDxtYmVkdGxzL21kNS5oPgorCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKworLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKwordHlwZWRlZiBtYmVkdGxzX21kNV9jb250ZXh0IE1ENV9DVFg7CisKK3N0YXRpYyB2b2lkIE1ENV9Jbml0KE1ENV9DVFggKmN0eCkKK3sKKyNpZiAhZGVmaW5lZChIQVNfTUJFRFRMU19SRVNVTFRfQ09ERV9CQVNFRF9GVU5DVElPTlMpCisgIG1iZWR0bHNfbWQ1X3N0YXJ0cyhjdHgpOworI2Vsc2UKKyAgKHZvaWQpIG1iZWR0bHNfbWQ1X3N0YXJ0c19yZXQoY3R4KTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBNRDVfVXBkYXRlKE1ENV9DVFggKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyNpZiAhZGVmaW5lZChIQVNfTUJFRFRMU19SRVNVTFRfQ09ERV9CQVNFRF9GVU5DVElPTlMpCisgIG1iZWR0bHNfbWQ1X3VwZGF0ZShjdHgsIGRhdGEsIGxlbmd0aCk7CisjZWxzZQorICAodm9pZCkgbWJlZHRsc19tZDVfdXBkYXRlX3JldChjdHgsIGRhdGEsIGxlbmd0aCk7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgTUQ1X0ZpbmFsKHVuc2lnbmVkIGNoYXIgKmRpZ2VzdCwgTUQ1X0NUWCAqY3R4KQoreworI2lmICFkZWZpbmVkKEhBU19NQkVEVExTX1JFU1VMVF9DT0RFX0JBU0VEX0ZVTkNUSU9OUykKKyAgbWJlZHRsc19tZDVfZmluaXNoKGN0eCwgZGlnZXN0KTsKKyNlbHNlCisgICh2b2lkKSBtYmVkdGxzX21kNV9maW5pc2hfcmV0KGN0eCwgZGlnZXN0KTsKKyNlbmRpZgorfQorCiAjZWxpZiAoZGVmaW5lZChfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQpICYmIFwKICAgICAgICAgICAgICAgKF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDQwKSkgfHwgXAogICAgICAgKGRlZmluZWQoX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCkgJiYgXApAQCAtMTE5LDEyICsxNjcsMTIgQEAKICAgQ0NfTUQ1X1VwZGF0ZShjdHgsIGlucHV0LCBpbnB1dExlbik7CiB9CiAKLXN0YXRpYyB2b2lkIE1ENV9GaW5hbCh1bnNpZ25lZCBjaGFyIGRpZ2VzdFsxNl0sIE1ENV9DVFggKmN0eCkKK3N0YXRpYyB2b2lkIE1ENV9GaW5hbCh1bnNpZ25lZCBjaGFyICpkaWdlc3QsIE1ENV9DVFggKmN0eCkKIHsKICAgQ0NfTUQ1X0ZpbmFsKGRpZ2VzdCwgY3R4KTsKIH0KIAotI2VsaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoQ1VSTF9XSU5ET1dTX0FQUCkKKyNlbGlmIGRlZmluZWQoVVNFX1dJTjMyX0NSWVBUTykKIAogI2luY2x1ZGUgPHdpbmNyeXB0Lmg+CiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKQEAgLTE1MSw3ICsxOTksNyBAQAogICBDcnlwdEhhc2hEYXRhKGN0eC0+aEhhc2gsICh1bnNpZ25lZCBjaGFyICopaW5wdXQsIGlucHV0TGVuLCAwKTsKIH0KIAotc3RhdGljIHZvaWQgTUQ1X0ZpbmFsKHVuc2lnbmVkIGNoYXIgZGlnZXN0WzE2XSwgTUQ1X0NUWCAqY3R4KQorc3RhdGljIHZvaWQgTUQ1X0ZpbmFsKHVuc2lnbmVkIGNoYXIgKmRpZ2VzdCwgTUQ1X0NUWCAqY3R4KQogewogICB1bnNpZ25lZCBsb25nIGxlbmd0aCA9IDA7CiAgIENyeXB0R2V0SGFzaFBhcmFtKGN0eC0+aEhhc2gsIEhQX0hBU0hWQUwsIE5VTEwsICZsZW5ndGgsIDApOwpAQCAtMTY0LDcgKzIxMiw5IEBACiB9CiAKICNlbHNlCisKIC8qIFdoZW4gbm8gb3RoZXIgY3J5cHRvIGxpYnJhcnkgaXMgYXZhaWxhYmxlIHdlIHVzZSB0aGlzIGNvZGUgc2VnbWVudCAqLworCiAvKgogICogVGhpcyBpcyBhbiBPcGVuU1NMLWNvbXBhdGlibGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuCiAgKiBNRDUgTWVzc2FnZS1EaWdlc3QgQWxnb3JpdGhtIChSRkMgMTMyMSkuCkBAIC01MTMsMTIgKzU2MywxMyBAQAogLyoKICAqIEB1bml0dGVzdDogMTYwMQogICovCi12b2lkIEN1cmxfbWQ1aXQodW5zaWduZWQgY2hhciAqb3V0YnVmZmVyLCAvKiAxNiBieXRlcyAqLwotICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0KQordm9pZCBDdXJsX21kNWl0KHVuc2lnbmVkIGNoYXIgKm91dGJ1ZmZlciwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsCisgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGxlbikKIHsKICAgTUQ1X0NUWCBjdHg7CisKICAgTUQ1X0luaXQoJmN0eCk7Ci0gIE1ENV9VcGRhdGUoJmN0eCwgaW5wdXQsIGN1cmx4X3V6dG91aShzdHJsZW4oKGNoYXIgKilpbnB1dCkpKTsKKyAgTUQ1X1VwZGF0ZSgmY3R4LCBpbnB1dCwgY3VybHhfdXp0b3VpKGxlbikpOwogICBNRDVfRmluYWwob3V0YnVmZmVyLCAmY3R4KTsKIH0KIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbWVtZGVidWcuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL21lbWRlYnVnLmgKaW5kZXggNTIzNmY2MC4uN2NhNDQyNiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbWVtZGVidWcuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9tZW1kZWJ1Zy5oCkBAIC0xNjksNiArMTY5LDYgQEAKICAqLwogCiAjZGVmaW5lIEN1cmxfc2FmZWZyZWUocHRyKSBcCi0gIGRvIHsgZnJlZSgocHRyKSk7IChwdHIpID0gTlVMTDt9IFdISUxFX0ZBTFNFCisgIGRvIHsgZnJlZSgocHRyKSk7IChwdHIpID0gTlVMTDt9IHdoaWxlKDApCiAKICNlbmRpZiAvKiBIRUFERVJfQ1VSTF9NRU1ERUJVR19IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9taW1lLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9taW1lLmMKaW5kZXggMjEzNWY3Mi4uMjU3MTI4NyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbWltZS5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL21pbWUuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMTEzNSw2ICsxMTM1LDggQEAKICAgY29uc3QgY3VybF9taW1lcGFydCAqczsKICAgQ1VSTGNvZGUgcmVzID0gQ1VSTEVfT0s7CiAKKyAgREVCVUdBU1NFUlQoZHN0KTsKKwogICAvKiBEdXBsaWNhdGUgY29udGVudC4gKi8KICAgc3dpdGNoKHNyYy0+a2luZCkgewogICBjYXNlIE1JTUVLSU5EX05PTkU6CkBAIC0xMTg0LDIwICsxMTg2LDE4IEBACiAgICAgfQogICB9CiAKLSAgLyogRHVwbGljYXRlIG90aGVyIGZpZWxkcy4gKi8KLSAgaWYoZHN0ICE9IE5VTEwpCisgIGlmKCFyZXMpIHsKKyAgICAvKiBEdXBsaWNhdGUgb3RoZXIgZmllbGRzLiAqLwogICAgIGRzdC0+ZW5jb2RlciA9IHNyYy0+ZW5jb2RlcjsKLSAgZWxzZQotICAgIHJlcyA9IENVUkxFX1dSSVRFX0VSUk9SOwotICBpZighcmVzKQogICAgIHJlcyA9IGN1cmxfbWltZV90eXBlKGRzdCwgc3JjLT5taW1ldHlwZSk7CisgIH0KICAgaWYoIXJlcykKICAgICByZXMgPSBjdXJsX21pbWVfbmFtZShkc3QsIHNyYy0+bmFtZSk7CiAgIGlmKCFyZXMpCiAgICAgcmVzID0gY3VybF9taW1lX2ZpbGVuYW1lKGRzdCwgc3JjLT5maWxlbmFtZSk7CiAKICAgLyogSWYgYW4gZXJyb3Igb2NjdXJyZWQsIHJvbGxiYWNrLiAqLwotICBpZihyZXMgJiYgZHN0KQorICBpZihyZXMpCiAgICAgQ3VybF9taW1lX2NsZWFucGFydChkc3QpOwogCiAgIHJldHVybiByZXM7CkBAIC0xOTAxLDQgKzE5MDEsMTEgQEAKICAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKIH0KIAorQ1VSTGNvZGUgQ3VybF9taW1lX2FkZF9oZWFkZXIoc3RydWN0IGN1cmxfc2xpc3QgKipzbHAsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworICAodm9pZClzbHA7CisgICh2b2lkKWZtdDsKKyAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKK30KKwogI2VuZGlmIC8qIGlmIGRpc2FibGVkICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9taW1lLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9taW1lLmgKaW5kZXggNGM5YTVmYi4uNDMxMjEyNSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbWltZS5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL21pbWUuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMTI3LDcgKzEyNyw5IEBACiAgIG1pbWVfZW5jb2Rlcl9zdGF0ZSBlbmNzdGF0ZTsgICAgIC8qIERhdGEgZW5jb2RlciBzdGF0ZS4gKi8KIH07CiAKLSNpZiAoIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0hUVFApICYmICFkZWZpbmVkKENVUkxfRElTQUJMRV9NSU1FKSkgfHwgXAorQ1VSTGNvZGUgQ3VybF9taW1lX2FkZF9oZWFkZXIoc3RydWN0IGN1cmxfc2xpc3QgKipzbHAsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKKworI2lmICghZGVmaW5lZChDVVJMX0RJU0FCTEVfSFRUUCkgJiYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX01JTUUpKSB8fCAgICAgXAogICAhZGVmaW5lZChDVVJMX0RJU0FCTEVfU01UUCkgfHwgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0lNQVApCiAKIC8qIFByb3RvdHlwZXMuICovCkBAIC0xNDQsNyArMTQ2LDYgQEAKIHNpemVfdCBDdXJsX21pbWVfcmVhZChjaGFyICpidWZmZXIsIHNpemVfdCBzaXplLCBzaXplX3Qgbml0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmluc3RyZWFtKTsKIENVUkxjb2RlIEN1cmxfbWltZV9yZXdpbmQoY3VybF9taW1lcGFydCAqcGFydCk7Ci1DVVJMY29kZSBDdXJsX21pbWVfYWRkX2hlYWRlcihzdHJ1Y3QgY3VybF9zbGlzdCAqKnNscCwgY29uc3QgY2hhciAqZm10LCAuLi4pOwogY29uc3QgY2hhciAqQ3VybF9taW1lX2NvbnRlbnR0eXBlKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKIAogI2Vsc2UKQEAgLTE1Nyw3ICsxNTgsNiBAQAogI2RlZmluZSBDdXJsX21pbWVfc2l6ZSh4KSAoY3VybF9vZmZfdCkgLTEKICNkZWZpbmUgQ3VybF9taW1lX3JlYWQgTlVMTAogI2RlZmluZSBDdXJsX21pbWVfcmV3aW5kKHgpICgodm9pZCl4LCBDVVJMRV9OT1RfQlVJTFRfSU4pCi0jZGVmaW5lIEN1cmxfbWltZV9hZGRfaGVhZGVyKHgseSwuLi4pIENVUkxFX05PVF9CVUlMVF9JTgogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbXByaW50Zi5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvbXByaW50Zi5jCmluZGV4IGUxOTA5MzYuLmJjMDA5MTMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL21wcmludGYuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9tcHJpbnRmLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk5IC0gMjAxNywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OSAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTEwNCw3ICsxMDQsNyBAQAogICAgICAgZG9uZSsrOyBcCiAgICAgZWxzZSBcCiAgICAgIHJldHVybiBkb25lOyAvKiByZXR1cm4gaW1tZWRpYXRlbHkgb24gZmFpbHVyZSAqLyBcCi0gIH0gV0hJTEVfRkFMU0UKKyAgfSB3aGlsZSgwKQogCiAvKiBEYXRhIHR5cGUgdG8gcmVhZCBmcm9tIHRoZSBhcmdsaXN0ICovCiB0eXBlZGVmIGVudW0gewpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbXVsdGkuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL211bHRpLmMKaW5kZXggYzdjNDZlZS4uY2VmMjgwNSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbXVsdGkuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9tdWx0aS5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC00Niw2ICs0Niw4IEBACiAjaW5jbHVkZSAiY29ubmVjdC5oIgogI2luY2x1ZGUgImh0dHBfcHJveHkuaCIKICNpbmNsdWRlICJodHRwMi5oIgorI2luY2x1ZGUgInNvY2tldHBhaXIuaCIKKyNpbmNsdWRlICJzb2Nrcy5oIgogLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKQEAgLTcxLDggKzczLDYgQEAKIAogc3RhdGljIENVUkxNY29kZSBzaW5nbGVzb2NrZXQoc3RydWN0IEN1cmxfbXVsdGkgKm11bHRpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSk7Ci1zdGF0aWMgaW50IHVwZGF0ZV90aW1lcihzdHJ1Y3QgQ3VybF9tdWx0aSAqbXVsdGkpOwotCiBzdGF0aWMgQ1VSTE1jb2RlIGFkZF9uZXh0X3RpbWVvdXQoc3RydWN0IGN1cmx0aW1lIG5vdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgQ3VybF9tdWx0aSAqbXVsdGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEN1cmxfZWFzeSAqZCk7CkBAIC0xODksNyArMTg5LDcgQEAKICAqLwogCiBzdHJ1Y3QgQ3VybF9zaF9lbnRyeSB7Ci0gIHN0cnVjdCBjdXJsX2xsaXN0IGxpc3Q7IC8qIGxpc3Qgb2YgZWFzeSBoYW5kbGVzIHVzaW5nIHRoaXMgc29ja2V0ICovCisgIHN0cnVjdCBjdXJsX2hhc2ggdHJhbnNmZXJzOyAvKiBoYXNoIG9mIHRyYW5zZmVycyB1c2luZyB0aGlzIHNvY2tldCAqLwogICB1bnNpZ25lZCBpbnQgYWN0aW9uOyAgLyogd2hhdCBjb21iaW5lZCBhY3Rpb24gUkVBRC9XUklURSB0aGlzIHNvY2tldCB3YWl0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICovCiAgIHZvaWQgKnNvY2tldHA7IC8qIHNldHRhYmxlIGJ5IHVzZXJzIHdpdGggY3VybF9tdWx0aV9hc3NpZ24oKSAqLwpAQCAtMjA2LDEyICsyMDYsMzYgQEAKIHN0YXRpYyBzdHJ1Y3QgQ3VybF9zaF9lbnRyeSAqc2hfZ2V0ZW50cnkoc3RydWN0IGN1cmxfaGFzaCAqc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgcykKIHsKLSAgaWYocyAhPSBDVVJMX1NPQ0tFVF9CQUQpCisgIGlmKHMgIT0gQ1VSTF9TT0NLRVRfQkFEKSB7CiAgICAgLyogb25seSBsb29rIGZvciBwcm9wZXIgc29ja2V0cyAqLwogICAgIHJldHVybiBDdXJsX2hhc2hfcGljayhzaCwgKGNoYXIgKikmcywgc2l6ZW9mKGN1cmxfc29ja2V0X3QpKTsKKyAgfQogICByZXR1cm4gTlVMTDsKIH0KIAorI2RlZmluZSBUUkhBU0hfU0laRSAxMworc3RhdGljIHNpemVfdCB0cmhhc2godm9pZCAqa2V5LCBzaXplX3Qga2V5X2xlbmd0aCwgc2l6ZV90IHNsb3RzX251bSkKK3sKKyAgc2l6ZV90IGtleXZhbCA9IChzaXplX3QpKihzdHJ1Y3QgQ3VybF9lYXN5ICoqKWtleTsKKyAgKHZvaWQpIGtleV9sZW5ndGg7CisKKyAgcmV0dXJuIChrZXl2YWwgJSBzbG90c19udW0pOworfQorCitzdGF0aWMgc2l6ZV90IHRyaGFzaF9jb21wYXJlKHZvaWQgKmsxLCBzaXplX3QgazFfbGVuLCB2b2lkICprMiwgc2l6ZV90IGsyX2xlbikKK3sKKyAgKHZvaWQpazFfbGVuOworICAodm9pZClrMl9sZW47CisKKyAgcmV0dXJuICooc3RydWN0IEN1cmxfZWFzeSAqKilrMSA9PSAqKHN0cnVjdCBDdXJsX2Vhc3kgKiopazI7Cit9CisKK3N0YXRpYyB2b2lkIHRyaGFzaF9kdG9yKHZvaWQgKm5hZGEpCit7CisgICh2b2lkKW5hZGE7Cit9CisKKwogLyogbWFrZSBzdXJlIHRoaXMgc29ja2V0IGlzIHByZXNlbnQgaW4gdGhlIGhhc2ggZm9yIHRoaXMgaGFuZGxlICovCiBzdGF0aWMgc3RydWN0IEN1cmxfc2hfZW50cnkgKnNoX2FkZGVudHJ5KHN0cnVjdCBjdXJsX2hhc2ggKnNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90IHMpCkBAIC0yMTksMTkgKzI0MywyNSBAQAogICBzdHJ1Y3QgQ3VybF9zaF9lbnRyeSAqdGhlcmUgPSBzaF9nZXRlbnRyeShzaCwgcyk7CiAgIHN0cnVjdCBDdXJsX3NoX2VudHJ5ICpjaGVjazsKIAotICBpZih0aGVyZSkKKyAgaWYodGhlcmUpIHsKICAgICAvKiBpdCBpcyBwcmVzZW50LCByZXR1cm4gZmluZSAqLwogICAgIHJldHVybiB0aGVyZTsKKyAgfQogCiAgIC8qIG5vdCBwcmVzZW50LCBhZGQgaXQgKi8KICAgY2hlY2sgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBDdXJsX3NoX2VudHJ5KSk7CiAgIGlmKCFjaGVjaykKICAgICByZXR1cm4gTlVMTDsgLyogbWFqb3IgZmFpbHVyZSAqLwogCi0gIEN1cmxfbGxpc3RfaW5pdCgmY2hlY2stPmxpc3QsIE5VTEwpOworICBpZihDdXJsX2hhc2hfaW5pdCgmY2hlY2stPnRyYW5zZmVycywgVFJIQVNIX1NJWkUsIHRyaGFzaCwKKyAgICAgICAgICAgICAgICAgICAgdHJoYXNoX2NvbXBhcmUsIHRyaGFzaF9kdG9yKSkgeworICAgIGZyZWUoY2hlY2spOworICAgIHJldHVybiBOVUxMOworICB9CiAKICAgLyogbWFrZS9hZGQgbmV3IGhhc2ggZW50cnkgKi8KICAgaWYoIUN1cmxfaGFzaF9hZGQoc2gsIChjaGFyICopJnMsIHNpemVvZihjdXJsX3NvY2tldF90KSwgY2hlY2spKSB7CisgICAgQ3VybF9oYXNoX2Rlc3Ryb3koJmNoZWNrLT50cmFuc2ZlcnMpOwogICAgIGZyZWUoY2hlY2spOwogICAgIHJldHVybiBOVUxMOyAvKiBtYWpvciBmYWlsdXJlICovCiAgIH0KQEAgLTI0MSw4ICsyNzEsMTEgQEAKIAogCiAvKiBkZWxldGUgdGhlIGdpdmVuIHNvY2tldCArIGhhbmRsZSBmcm9tIHRoZSBoYXNoICovCi1zdGF0aWMgdm9pZCBzaF9kZWxlbnRyeShzdHJ1Y3QgY3VybF9oYXNoICpzaCwgY3VybF9zb2NrZXRfdCBzKQorc3RhdGljIHZvaWQgc2hfZGVsZW50cnkoc3RydWN0IEN1cmxfc2hfZW50cnkgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGN1cmxfaGFzaCAqc2gsIGN1cmxfc29ja2V0X3QgcykKIHsKKyAgQ3VybF9oYXNoX2Rlc3Ryb3koJmVudHJ5LT50cmFuc2ZlcnMpOworCiAgIC8qIFdlIHJlbW92ZSB0aGUgaGFzaCBlbnRyeS4gVGhpcyB3aWxsIGVuZCB1cCBpbiBhIGNhbGwgdG8KICAgICAgc2hfZnJlZWVudHJ5KCkuICovCiAgIEN1cmxfaGFzaF9kZWxldGUoc2gsIChjaGFyICopJnMsIHNpemVvZihjdXJsX3NvY2tldF90KSk7CkBAIC0zMTEsMTcgKzM0NCw2IEBACiAgIHJldHVybiBDVVJMTV9PSzsKIH0KIAotLyoKLSAqIG11bHRpX2ZyZWVhbXNnKCkKLSAqCi0gKiBDYWxsYmFjayB1c2VkIGJ5IHRoZSBsbGlzdCBzeXN0ZW0gd2hlbiBhIHNpbmdsZSBsaXN0IGVudHJ5IGlzIGRlc3Ryb3llZC4KLSAqLwotc3RhdGljIHZvaWQgbXVsdGlfZnJlZWFtc2codm9pZCAqYSwgdm9pZCAqYikKLXsKLSAgKHZvaWQpYTsKLSAgKHZvaWQpYjsKLX0KLQogc3RydWN0IEN1cmxfbXVsdGkgKkN1cmxfbXVsdGlfaGFuZGxlKGludCBoYXNoc2l6ZSwgLyogc29ja2V0IGhhc2ggKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhc2hzaXplKSAvKiBjb25uZWN0aW9uIGhhc2ggKi8KIHsKQEAgLTM0MSwxMSArMzYzLDMwIEBACiAgIGlmKEN1cmxfY29ubmNhY2hlX2luaXQoJm11bHRpLT5jb25uX2NhY2hlLCBjaGFzaHNpemUpKQogICAgIGdvdG8gZXJyb3I7CiAKLSAgQ3VybF9sbGlzdF9pbml0KCZtdWx0aS0+bXNnbGlzdCwgbXVsdGlfZnJlZWFtc2cpOwotICBDdXJsX2xsaXN0X2luaXQoJm11bHRpLT5wZW5kaW5nLCBtdWx0aV9mcmVlYW1zZyk7CisgIEN1cmxfbGxpc3RfaW5pdCgmbXVsdGktPm1zZ2xpc3QsIE5VTEwpOworICBDdXJsX2xsaXN0X2luaXQoJm11bHRpLT5wZW5kaW5nLCBOVUxMKTsKKworICBtdWx0aS0+bXVsdGlwbGV4aW5nID0gVFJVRTsKIAogICAvKiAtMSBtZWFucyBpdCBub3Qgc2V0IGJ5IHVzZXIsIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZSAqLwogICBtdWx0aS0+bWF4Y29ubmVjdHMgPSAtMTsKKyAgbXVsdGktPm1heF9jb25jdXJyZW50X3N0cmVhbXMgPSAxMDA7CisgIG11bHRpLT5pcHY2X3dvcmtzID0gQ3VybF9pcHY2d29ya3MoTlVMTCk7CisKKyNpZmRlZiBFTkFCTEVfV0FLRVVQCisgIGlmKEN1cmxfc29ja2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCwgbXVsdGktPndha2V1cF9wYWlyKSA8IDApIHsKKyAgICBtdWx0aS0+d2FrZXVwX3BhaXJbMF0gPSBDVVJMX1NPQ0tFVF9CQUQ7CisgICAgbXVsdGktPndha2V1cF9wYWlyWzFdID0gQ1VSTF9TT0NLRVRfQkFEOworICB9CisgIGVsc2UgaWYoY3VybHhfbm9uYmxvY2sobXVsdGktPndha2V1cF9wYWlyWzBdLCBUUlVFKSA8IDAgfHwKKyAgICAgICAgICBjdXJseF9ub25ibG9jayhtdWx0aS0+d2FrZXVwX3BhaXJbMV0sIFRSVUUpIDwgMCkgeworICAgIHNjbG9zZShtdWx0aS0+d2FrZXVwX3BhaXJbMF0pOworICAgIHNjbG9zZShtdWx0aS0+d2FrZXVwX3BhaXJbMV0pOworICAgIG11bHRpLT53YWtldXBfcGFpclswXSA9IENVUkxfU09DS0VUX0JBRDsKKyAgICBtdWx0aS0+d2FrZXVwX3BhaXJbMV0gPSBDVVJMX1NPQ0tFVF9CQUQ7CisgIH0KKyNlbmRpZgorCiAgIHJldHVybiBtdWx0aTsKIAogICBlcnJvcjoKQEAgLTQ1MywxNiArNDk0LDE2IEBACiAgIC8qIGluY3JlYXNlIHRoZSBhbGl2ZS1jb3VudGVyICovCiAgIG11bHRpLT5udW1fYWxpdmUrKzsKIAotICAvKiBBIHNvbWV3aGF0IGNydWRlIHdvcmstYXJvdW5kIGZvciBhIGxpdHRsZSBnbGl0Y2ggaW4gdXBkYXRlX3RpbWVyKCkgdGhhdAotICAgICBoYXBwZW5zIGlmIHRoZSBsYXN0Y2FsbCB0aW1lIGlzIHNldCB0byB0aGUgc2FtZSB0aW1lIHdoZW4gdGhlIGhhbmRsZSBpcwotICAgICByZW1vdmVkIGFzIHdoZW4gdGhlIG5leHQgaGFuZGxlIGlzIGFkZGVkLCBhcyB0aGVuIHRoZSBjaGVjayBpbgotICAgICB1cGRhdGVfdGltZXIoKSB0aGF0IHByZXZlbnRzIGNhbGxpbmcgdGhlIGFwcGxpY2F0aW9uIG11bHRpcGxlIHRpbWVzIHdpdGgKLSAgICAgdGhlIHNhbWUgdGltZXIgaW5mbyB3aWxsIG5vdCB0cmlnZ2VyIGFuZCB0aGVuIHRoZSBuZXcgaGFuZGxlJ3MgdGltZW91dAotICAgICB3aWxsIG5vdCBiZSBub3RpZmllZCB0byB0aGUgYXBwLgorICAvKiBBIHNvbWV3aGF0IGNydWRlIHdvcmstYXJvdW5kIGZvciBhIGxpdHRsZSBnbGl0Y2ggaW4gQ3VybF91cGRhdGVfdGltZXIoKQorICAgICB0aGF0IGhhcHBlbnMgaWYgdGhlIGxhc3RjYWxsIHRpbWUgaXMgc2V0IHRvIHRoZSBzYW1lIHRpbWUgd2hlbiB0aGUgaGFuZGxlCisgICAgIGlzIHJlbW92ZWQgYXMgd2hlbiB0aGUgbmV4dCBoYW5kbGUgaXMgYWRkZWQsIGFzIHRoZW4gdGhlIGNoZWNrIGluCisgICAgIEN1cmxfdXBkYXRlX3RpbWVyKCkgdGhhdCBwcmV2ZW50cyBjYWxsaW5nIHRoZSBhcHBsaWNhdGlvbiBtdWx0aXBsZSB0aW1lcworICAgICB3aXRoIHRoZSBzYW1lIHRpbWVyIGluZm8gd2lsbCBub3QgdHJpZ2dlciBhbmQgdGhlbiB0aGUgbmV3IGhhbmRsZSdzCisgICAgIHRpbWVvdXQgd2lsbCBub3QgYmUgbm90aWZpZWQgdG8gdGhlIGFwcC4KIAogICAgICBUaGUgd29yay1hcm91bmQgaXMgdGh1cyBzaW1wbHkgdG8gY2xlYXIgdGhlICdsYXN0Y2FsbCcgdmFyaWFibGUgdG8gZm9yY2UKLSAgICAgdXBkYXRlX3RpbWVyKCkgdG8gYWx3YXlzIHRyaWdnZXIgYSBjYWxsYmFjayB0byB0aGUgYXBwIHdoZW4gYSBuZXcgZWFzeQotICAgICBoYW5kbGUgaXMgYWRkZWQgKi8KKyAgICAgQ3VybF91cGRhdGVfdGltZXIoKSB0byBhbHdheXMgdHJpZ2dlciBhIGNhbGxiYWNrIHRvIHRoZSBhcHAgd2hlbiBhIG5ldworICAgICBlYXN5IGhhbmRsZSBpcyBhZGRlZCAqLwogICBtZW1zZXQoJm11bHRpLT50aW1lcl9sYXN0Y2FsbCwgMCwgc2l6ZW9mKG11bHRpLT50aW1lcl9sYXN0Y2FsbCkpOwogCiAgIC8qIFRoZSBjbG9zdXJlIGhhbmRsZSBvbmx5IGV2ZXIgaGFzIGRlZmF1bHQgdGltZW91dHMgc2V0LiBUbyBpbXByb3ZlIHRoZQpAQCAtNDc1LDcgKzUxNiw3IEBACiAgIGRhdGEtPnN0YXRlLmNvbm5fY2FjaGUtPmNsb3N1cmVfaGFuZGxlLT5zZXQubm9fc2lnbmFsID0KICAgICBkYXRhLT5zZXQubm9fc2lnbmFsOwogCi0gIHVwZGF0ZV90aW1lcihtdWx0aSk7CisgIEN1cmxfdXBkYXRlX3RpbWVyKG11bHRpKTsKICAgcmV0dXJuIENVUkxNX09LOwogfQogCkBAIC01MTAsNiArNTUxLDggQEAKICAgICAvKiBTdG9wIGlmIG11bHRpX2RvbmUoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCAqLwogICAgIHJldHVybiBDVVJMRV9PSzsKIAorICBjb25uLT5kYXRhID0gZGF0YTsgLyogZW5zdXJlIHRoZSBjb25uZWN0aW9uIHVzZXMgdGhpcyB0cmFuc2ZlciBub3cgKi8KKwogICAvKiBTdG9wIHRoZSByZXNvbHZlciBhbmQgZnJlZSBpdHMgb3duIHJlc291cmNlcyAoYnV0IG5vdCBkbnNfZW50cnkgeWV0KS4gKi8KICAgQ3VybF9yZXNvbHZlcl9raWxsKGNvbm4pOwogCkBAIC01NDYsMTUgKzU4OSwyMCBAQAogCiAgIHByb2Nlc3NfcGVuZGluZ19oYW5kbGVzKGRhdGEtPm11bHRpKTsgLyogY29ubmVjdGlvbiAvIG11bHRpcGxleCAqLwogCisgIENPTk5fTE9DSyhkYXRhKTsKICAgZGV0YWNoX2Nvbm5uZWN0aW9uKGRhdGEpOwogICBpZihDT05OX0lOVVNFKGNvbm4pKSB7CiAgICAgLyogU3RvcCBpZiBzdGlsbCB1c2VkLiAqLworICAgIC8qIGNvbm4tPmRhdGEgbXVzdCBub3QgcmVtYWluIHBvaW50aW5nIHRvIHRoaXMgdHJhbnNmZXIgc2luY2UgaXQgaXMgZ29pbmcKKyAgICAgICBhd2F5ISBGaW5kIGFub3RoZXIgdG8gb3duIGl0ISAqLworICAgIGNvbm4tPmRhdGEgPSBjb25uLT5lYXN5cS5oZWFkLT5wdHI7CisgICAgQ09OTl9VTkxPQ0soZGF0YSk7CiAgICAgREVCVUdGKGluZm9mKGRhdGEsICJDb25uZWN0aW9uIHN0aWxsIGluIHVzZSAlenUsICIKICAgICAgICAgICAgICAgICAgIm5vIG1vcmUgbXVsdGlfZG9uZSBub3chXG4iLAogICAgICAgICAgICAgICAgICBjb25uLT5lYXN5cS5zaXplKSk7CiAgICAgcmV0dXJuIENVUkxFX09LOwogICB9Ci0KKyAgY29ubi0+ZGF0YSA9IE5VTEw7IC8qIHRoZSBjb25uZWN0aW9uIG5vdyBoYXMgbm8gb3duZXIgKi8KICAgZGF0YS0+c3RhdGUuZG9uZSA9IFRSVUU7IC8qIGNhbGxlZCBqdXN0IG5vdyEgKi8KIAogICBpZihjb25uLT5kbnNfZW50cnkpIHsKQEAgLTU5Nyw3ICs2NDUsMTAgQEAKICNlbmRpZgogICAgICApIHx8IGNvbm4tPmJpdHMuY2xvc2UKICAgICAgICB8fCAocHJlbWF0dXJlICYmICEoY29ubi0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX1NUUkVBTSkpKSB7Ci0gICAgQ1VSTGNvZGUgcmVzMiA9IEN1cmxfZGlzY29ubmVjdChkYXRhLCBjb25uLCBwcmVtYXR1cmUpOworICAgIENVUkxjb2RlIHJlczI7CisgICAgY29ubmNsb3NlKGNvbm4sICJkaXNjb25uZWN0aW5nIik7CisgICAgQ09OTl9VTkxPQ0soZGF0YSk7CisgICAgcmVzMiA9IEN1cmxfZGlzY29ubmVjdChkYXRhLCBjb25uLCBwcmVtYXR1cmUpOwogCiAgICAgLyogSWYgd2UgaGFkIGFuIGVycm9yIGFscmVhZHksIG1ha2Ugc3VyZSB3ZSByZXR1cm4gdGhhdCBvbmUuIEJ1dAogICAgICAgIGlmIHdlIGdvdCBhIG5ldyBlcnJvciwgcmV0dXJuIHRoYXQuICovCkBAIC02MTQsOSArNjY1LDkgQEAKICAgICAgICAgICAgICAgY29ubi0+Yml0cy5odHRwcHJveHkgPyBjb25uLT5odHRwX3Byb3h5Lmhvc3QuZGlzcG5hbWUgOgogICAgICAgICAgICAgICBjb25uLT5iaXRzLmNvbm5fdG9faG9zdCA/IGNvbm4tPmNvbm5fdG9faG9zdC5kaXNwbmFtZSA6CiAgICAgICAgICAgICAgIGNvbm4tPmhvc3QuZGlzcG5hbWUpOwotCiAgICAgLyogdGhlIGNvbm5lY3Rpb24gaXMgbm8gbG9uZ2VyIGluIHVzZSBieSB0aGlzIHRyYW5zZmVyICovCi0gICAgaWYoQ3VybF9jb25uY2FjaGVfcmV0dXJuX2Nvbm4oY29ubikpIHsKKyAgICBDT05OX1VOTE9DSyhkYXRhKTsKKyAgICBpZihDdXJsX2Nvbm5jYWNoZV9yZXR1cm5fY29ubihkYXRhLCBjb25uKSkgewogICAgICAgLyogcmVtZW1iZXIgdGhlIG1vc3QgcmVjZW50bHkgdXNlZCBjb25uZWN0aW9uICovCiAgICAgICBkYXRhLT5zdGF0ZS5sYXN0Y29ubmVjdCA9IGNvbm47CiAgICAgICBpbmZvZihkYXRhLCAiJXNcbiIsIGJ1ZmZlcik7CkBAIC02NzQsMTkgKzcyNSwxNCBAQAogICAgIGVhc3lfb3duc19jb25uID0gVFJVRTsKICAgfQogCi0gIC8qIFRoZSB0aW1lciBtdXN0IGJlIHNodXQgZG93biBiZWZvcmUgZGF0YS0+bXVsdGkgaXMgc2V0IHRvIE5VTEwsCi0gICAgIGVsc2UgdGhlIHRpbWVub2RlIHdpbGwgcmVtYWluIGluIHRoZSBzcGxheSB0cmVlIGFmdGVyCi0gICAgIGN1cmxfZWFzeV9jbGVhbnVwIGlzIGNhbGxlZC4gKi8KLSAgQ3VybF9leHBpcmVfY2xlYXIoZGF0YSk7Ci0KICAgaWYoZGF0YS0+Y29ubikgewogCiAgICAgLyogd2UgbXVzdCBjYWxsIG11bHRpX2RvbmUoKSBoZXJlIChpZiB3ZSBzdGlsbCBvd24gdGhlIGNvbm5lY3Rpb24pIHNvIHRoYXQKICAgICAgICB3ZSBkb24ndCBsZWF2ZSBhIGhhbGYtYmFrZWQgb25lIGFyb3VuZCAqLwogICAgIGlmKGVhc3lfb3duc19jb25uKSB7CiAKLSAgICAgIC8qIG11bHRpX2RvbmUoKSBjbGVhcnMgdGhlIGNvbm4tPmRhdGEgZmllbGQgdG8gbG9zZSB0aGUgYXNzb2NpYXRpb24KLSAgICAgICAgIGJldHdlZW4gdGhlIGVhc3kgaGFuZGxlIGFuZCB0aGUgY29ubmVjdGlvbgorICAgICAgLyogbXVsdGlfZG9uZSgpIGNsZWFycyB0aGUgYXNzb2NpYXRpb24gYmV0d2VlbiB0aGUgZWFzeSBoYW5kbGUgYW5kIHRoZQorICAgICAgICAgY29ubmVjdGlvbi4KIAogICAgICAgICAgTm90ZSB0aGF0IHRoaXMgaWdub3JlcyB0aGUgcmV0dXJuIGNvZGUgc2ltcGx5IGJlY2F1c2UgdGhlcmUncwogICAgICAgICAgbm90aGluZyByZWFsbHkgdXNlZnVsIHRvIGRvIHdpdGggaXQgYW55d2F5ISAqLwpAQCAtNjk0LDYgKzc0MCwxMSBAQAogICAgIH0KICAgfQogCisgIC8qIFRoZSB0aW1lciBtdXN0IGJlIHNodXQgZG93biBiZWZvcmUgZGF0YS0+bXVsdGkgaXMgc2V0IHRvIE5VTEwsIGVsc2UgdGhlCisgICAgIHRpbWVub2RlIHdpbGwgcmVtYWluIGluIHRoZSBzcGxheSB0cmVlIGFmdGVyIGN1cmxfZWFzeV9jbGVhbnVwIGlzCisgICAgIGNhbGxlZC4gRG8gaXQgYWZ0ZXIgbXVsdGlfZG9uZSgpIGluIGNhc2UgdGhhdCBzZXRzIGFub3RoZXIgdGltZSEgKi8KKyAgQ3VybF9leHBpcmVfY2xlYXIoZGF0YSk7CisKICAgaWYoZGF0YS0+Y29ubmVjdF9xdWV1ZS5wdHIpCiAgICAgLyogdGhlIGhhbmRsZSB3YXMgaW4gdGhlIHBlbmRpbmcgbGlzdCB3YWl0aW5nIGZvciBhbiBhdmFpbGFibGUgY29ubmVjdGlvbiwKICAgICAgICBzbyBnbyBhaGVhZCBhbmQgcmVtb3ZlIGl0ICovCkBAIC03MjMsMTAgKzc3NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbmlzaCB3aXRoIHRoaXMgaGFuZGxlICovCiAKICAgLyogUmVtb3ZlIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIHRoZSBjb25uZWN0aW9uIGFuZCB0aGUgaGFuZGxlICovCi0gIGlmKGRhdGEtPmNvbm4pIHsKLSAgICBkYXRhLT5jb25uLT5kYXRhID0gTlVMTDsKKyAgaWYoZGF0YS0+Y29ubikKICAgICBkZXRhY2hfY29ubm5lY3Rpb24oZGF0YSk7Ci0gIH0KIAogI2lmZGVmIFVTRV9MSUJQU0wKICAgLyogUmVtb3ZlIHRoZSBQU0wgYXNzb2NpYXRpb24uICovCkBAIC03NjUsNyArODE0LDcgQEAKICAgICAgV2UgZG8gbm90IHRvdWNoIHRoZSBlYXN5IGhhbmRsZSBoZXJlISAqLwogICBtdWx0aS0+bnVtX2Vhc3ktLTsgLyogb25lIGxlc3MgdG8gY2FyZSBhYm91dCBub3cgKi8KIAotICB1cGRhdGVfdGltZXIobXVsdGkpOworICBDdXJsX3VwZGF0ZV90aW1lcihtdWx0aSk7CiAgIHJldHVybiBDVVJMTV9PSzsKIH0KIApAQCAtNzk3LDI1ICs4NDYsMzAgQEAKIH0KIAogc3RhdGljIGludCB3YWl0Y29ubmVjdF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrKQogewogICBpbnQgaTsKICAgaW50IHMgPSAwOwogICBpbnQgcmMgPSAwOwogCi0gIGlmKCFudW1zb2NrcykKLSAgICByZXR1cm4gR0VUU09DS19CTEFOSzsKLQogI2lmZGVmIFVTRV9TU0wKICAgaWYoQ09OTkVDVF9GSVJTVFNPQ0tFVF9QUk9YWV9TU0woKSkKLSAgICByZXR1cm4gQ3VybF9zc2xfZ2V0c29jayhjb25uLCBzb2NrLCBudW1zb2Nrcyk7CisgICAgcmV0dXJuIEN1cmxfc3NsX2dldHNvY2soY29ubiwgc29jayk7CiAjZW5kaWYKIAorICBpZihTT0NLU19TVEFURShjb25uLT5jbm5jdC5zdGF0ZSkpCisgICAgcmV0dXJuIEN1cmxfU09DS1NfZ2V0c29jayhjb25uLCBzb2NrLCBGSVJTVFNPQ0tFVCk7CisKICAgZm9yKGkgPSAwOyBpPDI7IGkrKykgewogICAgIGlmKGNvbm4tPnRlbXBzb2NrW2ldICE9IENVUkxfU09DS0VUX0JBRCkgewogICAgICAgc29ja1tzXSA9IGNvbm4tPnRlbXBzb2NrW2ldOwotICAgICAgcmMgfD0gR0VUU09DS19XUklURVNPQ0socysrKTsKKyAgICAgIHJjIHw9IEdFVFNPQ0tfV1JJVEVTT0NLKHMpOworI2lmZGVmIEVOQUJMRV9RVUlDCisgICAgICBpZihjb25uLT50cmFuc3BvcnQgPT0gVFJOU1BSVF9RVUlDKQorICAgICAgICAvKiB3aGVuIGNvbm5lY3RpbmcgUVVJQywgd2Ugd2FudCB0byByZWFkIHRoZSBzb2NrZXQgdG9vICovCisgICAgICAgIHJjIHw9IEdFVFNPQ0tfUkVBRFNPQ0socyk7CisjZW5kaWYKKyAgICAgIHMrKzsKICAgICB9CiAgIH0KIApAQCAtODIzLDEyICs4NzcsOCBAQAogfQogCiBzdGF0aWMgaW50IHdhaXRwcm94eWNvbm5lY3RfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29jaykKIHsKLSAgaWYoIW51bXNvY2tzKQotICAgIHJldHVybiBHRVRTT0NLX0JMQU5LOwotCiAgIHNvY2tbMF0gPSBjb25uLT5zb2NrW0ZJUlNUU09DS0VUXTsKIAogICAvKiB3aGVuIHdlJ3ZlIHNlbnQgYSBDT05ORUNUIHRvIGEgcHJveHksIHdlIHNob3VsZCByYXRoZXIgd2FpdCBmb3IgdGhlCkBAIC04NDAsMTkgKzg5MCwzNyBAQAogfQogCiBzdGF0aWMgaW50IGRvbW9yZV9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MpCiB7CiAgIGlmKGNvbm4gJiYgY29ubi0+aGFuZGxlci0+ZG9tb3JlX2dldHNvY2spCi0gICAgcmV0dXJuIGNvbm4tPmhhbmRsZXItPmRvbW9yZV9nZXRzb2NrKGNvbm4sIHNvY2tzLCBudW1zb2Nrcyk7CisgICAgcmV0dXJuIGNvbm4tPmhhbmRsZXItPmRvbW9yZV9nZXRzb2NrKGNvbm4sIHNvY2tzKTsKICAgcmV0dXJuIEdFVFNPQ0tfQkxBTks7CiB9CiAKLS8qIHJldHVybnMgYml0bWFwcGVkIGZsYWdzIGZvciB0aGlzIGhhbmRsZSBhbmQgaXRzIHNvY2tldHMgKi8KK3N0YXRpYyBpbnQgZG9pbmdfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MpCit7CisgIGlmKGNvbm4gJiYgY29ubi0+aGFuZGxlci0+ZG9pbmdfZ2V0c29jaykKKyAgICByZXR1cm4gY29ubi0+aGFuZGxlci0+ZG9pbmdfZ2V0c29jayhjb25uLCBzb2Nrcyk7CisgIHJldHVybiBHRVRTT0NLX0JMQU5LOworfQorCitzdGF0aWMgaW50IHByb3RvY29sX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzKQoreworICBpZihjb25uLT5oYW5kbGVyLT5wcm90b19nZXRzb2NrKQorICAgIHJldHVybiBjb25uLT5oYW5kbGVyLT5wcm90b19nZXRzb2NrKGNvbm4sIHNvY2tzKTsKKyAgLyogQmFja3VwIGdldHNvY2sgbG9naWMuIFNpbmNlIHRoZXJlIGlzIGEgbGl2ZSBzb2NrZXQgaW4gdXNlLCB3ZSBtdXN0IHdhaXQKKyAgICAgZm9yIGl0IG9yIGl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHdhdGNoaW5nIHdoZW4gdGhlIG11bHRpX3NvY2tldCBBUEkgaXMKKyAgICAgdXNlZC4gKi8KKyAgc29ja3NbMF0gPSBjb25uLT5zb2NrW0ZJUlNUU09DS0VUXTsKKyAgcmV0dXJuIEdFVFNPQ0tfUkVBRFNPQ0soMCkgfCBHRVRTT0NLX1dSSVRFU09DSygwKTsKK30KKworLyogcmV0dXJucyBiaXRtYXBwZWQgZmxhZ3MgZm9yIHRoaXMgaGFuZGxlIGFuZCBpdHMgc29ja2V0cy4gVGhlICdzb2Nrc1tdJworICAgYXJyYXkgY29udGFpbnMgTUFYX1NPQ0tTUEVSRUFTWUhBTkRMRSBlbnRyaWVzLiAqLwogc3RhdGljIGludCBtdWx0aV9nZXRzb2NrKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MsIC8qIHBvaW50cyB0byBudW1zb2NrcyBudW1iZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Ygc29ja2V0cyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKKyAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcykKIHsKICAgLyogVGhlIG5vIGNvbm5lY3Rpb24gY2FzZSBjYW4gaGFwcGVuIHdoZW4gdGhpcyBpcyBjYWxsZWQgZnJvbQogICAgICBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoKSA9PiBzaW5nbGVzb2NrZXQoKSA9PiBtdWx0aV9nZXRzb2NrKCkuCkBAIC04ODQsMzAgKzk1MiwzMCBAQAogICAgIHJldHVybiAwOwogCiAgIGNhc2UgQ1VSTE1fU1RBVEVfV0FJVFJFU09MVkU6Ci0gICAgcmV0dXJuIEN1cmxfcmVzb2x2X2dldHNvY2soZGF0YS0+Y29ubiwgc29ja3MsIG51bXNvY2tzKTsKKyAgICByZXR1cm4gQ3VybF9yZXNvbHZfZ2V0c29jayhkYXRhLT5jb25uLCBzb2Nrcyk7CiAKICAgY2FzZSBDVVJMTV9TVEFURV9QUk9UT0NPTk5FQ1Q6CiAgIGNhc2UgQ1VSTE1fU1RBVEVfU0VORFBST1RPQ09OTkVDVDoKLSAgICByZXR1cm4gQ3VybF9wcm90b2NvbF9nZXRzb2NrKGRhdGEtPmNvbm4sIHNvY2tzLCBudW1zb2Nrcyk7CisgICAgcmV0dXJuIHByb3RvY29sX2dldHNvY2soZGF0YS0+Y29ubiwgc29ja3MpOwogCiAgIGNhc2UgQ1VSTE1fU1RBVEVfRE86CiAgIGNhc2UgQ1VSTE1fU1RBVEVfRE9JTkc6Ci0gICAgcmV0dXJuIEN1cmxfZG9pbmdfZ2V0c29jayhkYXRhLT5jb25uLCBzb2NrcywgbnVtc29ja3MpOworICAgIHJldHVybiBkb2luZ19nZXRzb2NrKGRhdGEtPmNvbm4sIHNvY2tzKTsKIAogICBjYXNlIENVUkxNX1NUQVRFX1dBSVRQUk9YWUNPTk5FQ1Q6Ci0gICAgcmV0dXJuIHdhaXRwcm94eWNvbm5lY3RfZ2V0c29jayhkYXRhLT5jb25uLCBzb2NrcywgbnVtc29ja3MpOworICAgIHJldHVybiB3YWl0cHJveHljb25uZWN0X2dldHNvY2soZGF0YS0+Y29ubiwgc29ja3MpOwogCiAgIGNhc2UgQ1VSTE1fU1RBVEVfV0FJVENPTk5FQ1Q6Ci0gICAgcmV0dXJuIHdhaXRjb25uZWN0X2dldHNvY2soZGF0YS0+Y29ubiwgc29ja3MsIG51bXNvY2tzKTsKKyAgICByZXR1cm4gd2FpdGNvbm5lY3RfZ2V0c29jayhkYXRhLT5jb25uLCBzb2Nrcyk7CiAKICAgY2FzZSBDVVJMTV9TVEFURV9ET19NT1JFOgotICAgIHJldHVybiBkb21vcmVfZ2V0c29jayhkYXRhLT5jb25uLCBzb2NrcywgbnVtc29ja3MpOworICAgIHJldHVybiBkb21vcmVfZ2V0c29jayhkYXRhLT5jb25uLCBzb2Nrcyk7CiAKICAgY2FzZSBDVVJMTV9TVEFURV9ET19ET05FOiAvKiBzaW5jZSBpcyBzZXQgYWZ0ZXIgRE8gaXMgY29tcGxldGVkLCB3ZSBzd2l0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB3YWl0aW5nIGZvciB0aGUgc2FtZSBhcyB0aGUgKlBFUkZPUk0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZXMgKi8KICAgY2FzZSBDVVJMTV9TVEFURV9QRVJGT1JNOgotICAgIHJldHVybiBDdXJsX3NpbmdsZV9nZXRzb2NrKGRhdGEtPmNvbm4sIHNvY2tzLCBudW1zb2Nrcyk7CisgICAgcmV0dXJuIEN1cmxfc2luZ2xlX2dldHNvY2soZGF0YS0+Y29ubiwgc29ja3MpOwogICB9CiAKIH0KQEAgLTkzMyw3ICsxMDAxLDcgQEAKIAogICBkYXRhID0gbXVsdGktPmVhc3lwOwogICB3aGlsZShkYXRhKSB7Ci0gICAgaW50IGJpdG1hcCA9IG11bHRpX2dldHNvY2soZGF0YSwgc29ja2J1bmNoLCBNQVhfU09DS1NQRVJFQVNZSEFORExFKTsKKyAgICBpbnQgYml0bWFwID0gbXVsdGlfZ2V0c29jayhkYXRhLCBzb2NrYnVuY2gpOwogCiAgICAgZm9yKGkgPSAwOyBpPCBNQVhfU09DS1NQRVJFQVNZSEFORExFOyBpKyspIHsKICAgICAgIGN1cmxfc29ja2V0X3QgcyA9IENVUkxfU09DS0VUX0JBRDsKQEAgLTk2MywxMiArMTAzMSwxMyBAQAogCiAjZGVmaW5lIE5VTV9QT0xMU19PTl9TVEFDSyAxMAogCi1DVVJMTWNvZGUgQ3VybF9tdWx0aV93YWl0KHN0cnVjdCBDdXJsX211bHRpICptdWx0aSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGN1cmxfd2FpdGZkIGV4dHJhX2Zkc1tdLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXh0cmFfbmZkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRpbWVvdXRfbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqcmV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpnb3Rzb2NrZXQpIC8qIGlmIGFueSBzb2NrZXQgd2FzIGNoZWNrZWQgKi8KK3N0YXRpYyBDVVJMTWNvZGUgQ3VybF9tdWx0aV93YWl0KHN0cnVjdCBDdXJsX211bHRpICptdWx0aSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3dhaXRmZCBleHRyYV9mZHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleHRyYV9uZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRpbWVvdXRfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnJldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZXh0cmF3YWl0LCAvKiB3aGVuIG5vIHNvY2tldCwgd2FpdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2Vfd2FrZXVwKQogewogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhOwogICBjdXJsX3NvY2tldF90IHNvY2tidW5jaFtNQVhfU09DS1NQRVJFQVNZSEFORExFXTsKQEAgLTk4MiwxOSArMTA1MSwxOSBAQAogICBzdHJ1Y3QgcG9sbGZkIGFfZmV3X29uX3N0YWNrW05VTV9QT0xMU19PTl9TVEFDS107CiAgIHN0cnVjdCBwb2xsZmQgKnVmZHMgPSAmYV9mZXdfb25fc3RhY2tbMF07CiAKLSAgaWYoZ290c29ja2V0KQotICAgICpnb3Rzb2NrZXQgPSBGQUxTRTsKLQogICBpZighR09PRF9NVUxUSV9IQU5ETEUobXVsdGkpKQogICAgIHJldHVybiBDVVJMTV9CQURfSEFORExFOwogCiAgIGlmKG11bHRpLT5pbl9jYWxsYmFjaykKICAgICByZXR1cm4gQ1VSTE1fUkVDVVJTSVZFX0FQSV9DQUxMOwogCisgIGlmKHRpbWVvdXRfbXMgPCAwKQorICAgIHJldHVybiBDVVJMTV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CisKICAgLyogQ291bnQgdXAgaG93IG1hbnkgZmRzIHdlIGhhdmUgZnJvbSB0aGUgbXVsdGkgaGFuZGxlICovCiAgIGRhdGEgPSBtdWx0aS0+ZWFzeXA7CiAgIHdoaWxlKGRhdGEpIHsKLSAgICBiaXRtYXAgPSBtdWx0aV9nZXRzb2NrKGRhdGEsIHNvY2tidW5jaCwgTUFYX1NPQ0tTUEVSRUFTWUhBTkRMRSk7CisgICAgYml0bWFwID0gbXVsdGlfZ2V0c29jayhkYXRhLCBzb2NrYnVuY2gpOwogCiAgICAgZm9yKGkgPSAwOyBpPCBNQVhfU09DS1NQRVJFQVNZSEFORExFOyBpKyspIHsKICAgICAgIGN1cmxfc29ja2V0X3QgcyA9IENVUkxfU09DS0VUX0JBRDsKQEAgLTEwMjUsNiArMTA5NCwxMiBAQAogICBjdXJsZmRzID0gbmZkczsgLyogbnVtYmVyIG9mIGludGVybmFsIGZpbGUgZGVzY3JpcHRvcnMgKi8KICAgbmZkcyArPSBleHRyYV9uZmRzOyAvKiBhZGQgdGhlIGV4dGVybmFsbHkgcHJvdmlkZWQgb25lcyAqLwogCisjaWZkZWYgRU5BQkxFX1dBS0VVUAorICBpZih1c2Vfd2FrZXVwICYmIG11bHRpLT53YWtldXBfcGFpclswXSAhPSBDVVJMX1NPQ0tFVF9CQUQpIHsKKyAgICArK25mZHM7CisgIH0KKyNlbmRpZgorCiAgIGlmKG5mZHMgPiBOVU1fUE9MTFNfT05fU1RBQ0spIHsKICAgICAvKiAnbmZkcycgaXMgYSAzMiBiaXQgdmFsdWUgYW5kICdzdHJ1Y3QgcG9sbGZkJyBpcyB0eXBpY2FsbHkgOCBieXRlcwogICAgICAgIGJpZywgc28gYXQgMl4yOSBzb2NrZXRzIHRoaXMgdmFsdWUgbWlnaHQgd3JhcC4gV2hlbiBhIHByb2Nlc3MgZ2V0cwpAQCAtMTA0NCw3ICsxMTE5LDcgQEAKICAgICAvKiBBZGQgdGhlIGN1cmwgaGFuZGxlcyB0byBvdXIgcG9sbGZkcyBmaXJzdCAqLwogICAgIGRhdGEgPSBtdWx0aS0+ZWFzeXA7CiAgICAgd2hpbGUoZGF0YSkgewotICAgICAgYml0bWFwID0gbXVsdGlfZ2V0c29jayhkYXRhLCBzb2NrYnVuY2gsIE1BWF9TT0NLU1BFUkVBU1lIQU5ETEUpOworICAgICAgYml0bWFwID0gbXVsdGlfZ2V0c29jayhkYXRhLCBzb2NrYnVuY2gpOwogCiAgICAgICBmb3IoaSA9IDA7IGk8IE1BWF9TT0NLU1BFUkVBU1lIQU5ETEU7IGkrKykgewogICAgICAgICBjdXJsX3NvY2tldF90IHMgPSBDVVJMX1NPQ0tFVF9CQUQ7CkBAIC0xMDgzLDYgKzExNTgsMTQgQEAKICAgICArK25mZHM7CiAgIH0KIAorI2lmZGVmIEVOQUJMRV9XQUtFVVAKKyAgaWYodXNlX3dha2V1cCAmJiBtdWx0aS0+d2FrZXVwX3BhaXJbMF0gIT0gQ1VSTF9TT0NLRVRfQkFEKSB7CisgICAgdWZkc1tuZmRzXS5mZCA9IG11bHRpLT53YWtldXBfcGFpclswXTsKKyAgICB1ZmRzW25mZHNdLmV2ZW50cyA9IFBPTExJTjsKKyAgICArK25mZHM7CisgIH0KKyNlbmRpZgorCiAgIGlmKG5mZHMpIHsKICAgICBpbnQgcG9sbHJjOwogICAgIC8qIHdhaXQuLi4gKi8KQEAgLTExMDYsNiArMTE4OSwyOSBAQAogCiAgICAgICAgIGV4dHJhX2Zkc1tpXS5yZXZlbnRzID0gbWFzazsKICAgICAgIH0KKworI2lmZGVmIEVOQUJMRV9XQUtFVVAKKyAgICAgIGlmKHVzZV93YWtldXAgJiYgbXVsdGktPndha2V1cF9wYWlyWzBdICE9IENVUkxfU09DS0VUX0JBRCkgeworICAgICAgICBpZih1ZmRzW2N1cmxmZHMgKyBleHRyYV9uZmRzXS5yZXZlbnRzICYgUE9MTElOKSB7CisgICAgICAgICAgY2hhciBidWZbNjRdOworICAgICAgICAgIHdoaWxlKDEpIHsKKyAgICAgICAgICAgIC8qIHRoZSByZWFkaW5nIHNvY2tldCBpcyBub24tYmxvY2tpbmcsIHRyeSB0byByZWFkCisgICAgICAgICAgICAgICBkYXRhIGZyb20gaXQgdW50aWwgaXQgcmVjZWl2ZXMgYW4gZXJyb3IgKGV4Y2VwdCBFSU5UUikuCisgICAgICAgICAgICAgICBJbiBub3JtYWwgY2FzZXMgaXQgd2lsbCBnZXQgRUFHQUlOIG9yIEVXT1VMREJMT0NLCisgICAgICAgICAgICAgICB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgZGF0YSwgYnJlYWtpbmcgdGhlIGxvb3AuICovCisgICAgICAgICAgICBpZihzcmVhZChtdWx0aS0+d2FrZXVwX3BhaXJbMF0sIGJ1Ziwgc2l6ZW9mKGJ1ZikpIDw9IDApIHsKKyNpZm5kZWYgVVNFX1dJTlNPQ0sKKyAgICAgICAgICAgICAgaWYoRUlOVFIgPT0gU09DS0VSUk5PKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmCisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICAvKiBkbyBub3QgY291bnQgdGhlIHdha2V1cCBzb2NrZXQgaW50byB0aGUgcmV0dXJuZWQgdmFsdWUgKi8KKyAgICAgICAgICByZXRjb2RlLS07CisgICAgICAgIH0KKyAgICAgIH0KKyNlbmRpZgogICAgIH0KICAgfQogCkBAIC0xMTEzLDkgKzEyMTksMjMgQEAKICAgICBmcmVlKHVmZHMpOwogICBpZihyZXQpCiAgICAgKnJldCA9IHJldGNvZGU7Ci0gIGlmKGdvdHNvY2tldCAmJiAoZXh0cmFfZmRzIHx8IGN1cmxmZHMpKQorICBpZighZXh0cmF3YWl0IHx8IG5mZHMpCiAgICAgLyogaWYgYW55IHNvY2tldCB3YXMgY2hlY2tlZCAqLwotICAgICpnb3Rzb2NrZXQgPSBUUlVFOworICAgIDsKKyAgZWxzZSB7CisgICAgbG9uZyBzbGVlcF9tcyA9IDA7CisKKyAgICAvKiBBdm9pZCBidXN5LWxvb3Bpbmcgd2hlbiB0aGVyZSdzIG5vdGhpbmcgcGFydGljdWxhciB0byB3YWl0IGZvciAqLworICAgIGlmKCFjdXJsX211bHRpX3RpbWVvdXQobXVsdGksICZzbGVlcF9tcykgJiYgc2xlZXBfbXMpIHsKKyAgICAgIGlmKHNsZWVwX21zID4gdGltZW91dF9tcykKKyAgICAgICAgc2xlZXBfbXMgPSB0aW1lb3V0X21zOworICAgICAgLyogd2hlbiB0aGVyZSBhcmUgbm8gZWFzeSBoYW5kbGVzIGluIHRoZSBtdWx0aSwgdGhpcyBob2xkcyBhIC0xCisgICAgICAgICB0aW1lb3V0ICovCisgICAgICBlbHNlIGlmKChzbGVlcF9tcyA8IDApICYmIGV4dHJhd2FpdCkKKyAgICAgICAgc2xlZXBfbXMgPSB0aW1lb3V0X21zOworICAgICAgQ3VybF93YWl0X21zKChpbnQpc2xlZXBfbXMpOworICAgIH0KKyAgfQogCiAgIHJldHVybiBDVVJMTV9PSzsKIH0KQEAgLTExMjYsNyArMTI0Niw2NSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGltZW91dF9tcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpyZXQpCiB7Ci0gIHJldHVybiBDdXJsX211bHRpX3dhaXQobXVsdGksIGV4dHJhX2ZkcywgZXh0cmFfbmZkcywgdGltZW91dF9tcywgcmV0LCBOVUxMKTsKKyAgcmV0dXJuIEN1cmxfbXVsdGlfd2FpdChtdWx0aSwgZXh0cmFfZmRzLCBleHRyYV9uZmRzLCB0aW1lb3V0X21zLCByZXQsIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFKTsKK30KKworQ1VSTE1jb2RlIGN1cmxfbXVsdGlfcG9sbChzdHJ1Y3QgQ3VybF9tdWx0aSAqbXVsdGksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3dhaXRmZCBleHRyYV9mZHNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV4dHJhX25mZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aW1lb3V0X21zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnJldCkKK3sKKyAgcmV0dXJuIEN1cmxfbXVsdGlfd2FpdChtdWx0aSwgZXh0cmFfZmRzLCBleHRyYV9uZmRzLCB0aW1lb3V0X21zLCByZXQsIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7Cit9CisKK0NVUkxNY29kZSBjdXJsX211bHRpX3dha2V1cChzdHJ1Y3QgQ3VybF9tdWx0aSAqbXVsdGkpCit7CisgIC8qIHRoaXMgZnVuY3Rpb24gaXMgdXN1YWxseSBjYWxsZWQgZnJvbSBhbm90aGVyIHRocmVhZCwKKyAgICAgaXQgaGFzIHRvIGJlIGNhcmVmdWwgb25seSB0byBhY2Nlc3MgcGFydHMgb2YgdGhlCisgICAgIEN1cmxfbXVsdGkgc3RydWN0IHRoYXQgYXJlIGNvbnN0YW50ICovCisKKyAgLyogR09PRF9NVUxUSV9IQU5ETEUgY2FuIGJlIHNhZmVseSBjYWxsZWQgKi8KKyAgaWYoIUdPT0RfTVVMVElfSEFORExFKG11bHRpKSkKKyAgICByZXR1cm4gQ1VSTE1fQkFEX0hBTkRMRTsKKworI2lmZGVmIEVOQUJMRV9XQUtFVVAKKyAgLyogdGhlIHdha2V1cF9wYWlyIHZhcmlhYmxlIGlzIG9ubHkgd3JpdHRlbiBkdXJpbmcgaW5pdCBhbmQgY2xlYW51cCwKKyAgICAgbWFraW5nIGl0IHNhZmUgdG8gYWNjZXNzIGZyb20gYW5vdGhlciB0aHJlYWQgYWZ0ZXIgdGhlIGluaXQgcGFydAorICAgICBhbmQgYmVmb3JlIGNsZWFudXAgKi8KKyAgaWYobXVsdGktPndha2V1cF9wYWlyWzFdICE9IENVUkxfU09DS0VUX0JBRCkgeworICAgIGNoYXIgYnVmWzFdOworICAgIGJ1ZlswXSA9IDE7CisgICAgd2hpbGUoMSkgeworICAgICAgLyogc3dyaXRlKCkgaXMgbm90IHRocmVhZC1zYWZlIGluIGdlbmVyYWwsIGJlY2F1c2UgY29uY3VycmVudCBjYWxscworICAgICAgICAgY2FuIGhhdmUgdGhlaXIgbWVzc2FnZXMgaW50ZXJsZWF2ZWQsIGJ1dCBpbiB0aGlzIGNhc2UgdGhlIGNvbnRlbnQKKyAgICAgICAgIG9mIHRoZSBtZXNzYWdlcyBkb2VzIG5vdCBtYXR0ZXIsIHdoaWNoIG1ha2VzIGl0IG9rIHRvIGNhbGwuCisKKyAgICAgICAgIFRoZSB3cml0ZSBzb2NrZXQgaXMgc2V0IHRvIG5vbi1ibG9ja2luZywgdGhpcyB3YXkgdGhpcyBmdW5jdGlvbgorICAgICAgICAgY2Fubm90IGJsb2NrLCBtYWtpbmcgaXQgc2FmZSB0byBjYWxsIGV2ZW4gZnJvbSB0aGUgc2FtZSB0aHJlYWQKKyAgICAgICAgIHRoYXQgd2lsbCBjYWxsIEN1cmxfbXVsdGlfd2FpdCgpLiBJZiBzd3JpdGUoKSByZXR1cm5zIHRoYXQgaXQKKyAgICAgICAgIHdvdWxkIGJsb2NrLCBpdCdzIGNvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBiZWNhdXNlIGl0IG1lYW5zIHRoYXQKKyAgICAgICAgIHByZXZpb3VzIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gd2lsbCB3YWtlIHVwIHRoZSBwb2xsKCkuICovCisgICAgICBpZihzd3JpdGUobXVsdGktPndha2V1cF9wYWlyWzFdLCBidWYsIHNpemVvZihidWYpKSA8IDApIHsKKyAgICAgICAgaW50IGVyciA9IFNPQ0tFUlJOTzsKKyAgICAgICAgaW50IHJldHVybl9zdWNjZXNzOworI2lmZGVmIFVTRV9XSU5TT0NLCisgICAgICAgIHJldHVybl9zdWNjZXNzID0gV1NBRVdPVUxEQkxPQ0sgPT0gZXJyOworI2Vsc2UKKyAgICAgICAgaWYoRUlOVFIgPT0gZXJyKQorICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXR1cm5fc3VjY2VzcyA9IEVXT1VMREJMT0NLID09IGVyciB8fCBFQUdBSU4gPT0gZXJyOworI2VuZGlmCisgICAgICAgIGlmKCFyZXR1cm5fc3VjY2VzcykKKyAgICAgICAgICByZXR1cm4gQ1VSTE1fV0FLRVVQX0ZBSUxVUkU7CisgICAgICB9CisgICAgICByZXR1cm4gQ1VSTE1fT0s7CisgICAgfQorICB9CisjZW5kaWYKKyAgcmV0dXJuIENVUkxNX1dBS0VVUF9GQUlMVVJFOwogfQogCiAvKgpAQCAtMTE4OSw2ICsxMzY3LDcgQEAKIAogICBERUJVR0FTU0VSVChjb25uKTsKICAgREVCVUdBU1NFUlQoY29ubi0+aGFuZGxlcik7CisgIERFQlVHQVNTRVJUKGNvbm4tPmRhdGEgPT0gZGF0YSk7CiAKICAgaWYoY29ubi0+aGFuZGxlci0+ZG9faXQpIHsKICAgICAvKiBnZW5lcmljIHByb3RvY29sLXNwZWNpZmljIGZ1bmN0aW9uIHBvaW50ZXIgc2V0IGluIGN1cmxfY29ubmVjdCgpICovCkBAIC0xMjI2LDYgKzE0MDUsMTA5IEBACiAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBXZSBhcmUgZG9pbmcgcHJvdG9jb2wtc3BlY2lmaWMgY29ubmVjdGluZyBhbmQgdGhpcyBpcyBiZWluZyBjYWxsZWQgb3ZlciBhbmQKKyAqIG92ZXIgZnJvbSB0aGUgbXVsdGkgaW50ZXJmYWNlIHVudGlsIHRoZSBjb25uZWN0aW9uIHBoYXNlIGlzIGRvbmUgb24KKyAqIHByb3RvY29sIGxheWVyLgorICovCisKK3N0YXRpYyBDVVJMY29kZSBwcm90b2NvbF9jb25uZWN0aW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvbmUpCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworCisgIGlmKGNvbm4gJiYgY29ubi0+aGFuZGxlci0+Y29ubmVjdGluZykgeworICAgICpkb25lID0gRkFMU0U7CisgICAgcmVzdWx0ID0gY29ubi0+aGFuZGxlci0+Y29ubmVjdGluZyhjb25uLCBkb25lKTsKKyAgfQorICBlbHNlCisgICAgKmRvbmUgPSBUUlVFOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBXZSBhcmUgRE9JTkcgdGhpcyBpcyBiZWluZyBjYWxsZWQgb3ZlciBhbmQgb3ZlciBmcm9tIHRoZSBtdWx0aSBpbnRlcmZhY2UKKyAqIHVudGlsIHRoZSBET0lORyBwaGFzZSBpcyBkb25lIG9uIHByb3RvY29sIGxheWVyLgorICovCisKK3N0YXRpYyBDVVJMY29kZSBwcm90b2NvbF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworCisgIGlmKGNvbm4gJiYgY29ubi0+aGFuZGxlci0+ZG9pbmcpIHsKKyAgICAqZG9uZSA9IEZBTFNFOworICAgIHJlc3VsdCA9IGNvbm4tPmhhbmRsZXItPmRvaW5nKGNvbm4sIGRvbmUpOworICB9CisgIGVsc2UKKyAgICAqZG9uZSA9IFRSVUU7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFdlIGhhdmUgZGlzY292ZXJlZCB0aGF0IHRoZSBUQ1AgY29ubmVjdGlvbiBoYXMgYmVlbiBzdWNjZXNzZnVsLCB3ZSBjYW4gbm93CisgKiBwcm9jZWVkIHdpdGggc29tZSBhY3Rpb24uCisgKgorICovCitzdGF0aWMgQ1VSTGNvZGUgcHJvdG9jb2xfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpwcm90b2NvbF9kb25lKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKworICBERUJVR0FTU0VSVChjb25uKTsKKyAgREVCVUdBU1NFUlQocHJvdG9jb2xfZG9uZSk7CisKKyAgKnByb3RvY29sX2RvbmUgPSBGQUxTRTsKKworICBpZihjb25uLT5iaXRzLnRjcGNvbm5lY3RbRklSU1RTT0NLRVRdICYmIGNvbm4tPmJpdHMucHJvdG9jb25uc3RhcnQpIHsKKyAgICAvKiBXZSBhbHJlYWR5IGFyZSBjb25uZWN0ZWQsIGdldCBiYWNrLiBUaGlzIG1heSBoYXBwZW4gd2hlbiB0aGUgY29ubmVjdAorICAgICAgIHdvcmtlZCBmaW5lIGluIHRoZSBmaXJzdCBjYWxsLCBsaWtlIHdoZW4gd2UgY29ubmVjdCB0byBhIGxvY2FsIHNlcnZlcgorICAgICAgIG9yIHByb3h5LiBOb3RlIHRoYXQgd2UgZG9uJ3Qga25vdyBpZiB0aGUgcHJvdG9jb2wgaXMgYWN0dWFsbHkgZG9uZS4KKworICAgICAgIFVubGVzcyB0aGlzIHByb3RvY29sIGRvZXNuJ3QgaGF2ZSBhbnkgcHJvdG9jb2wtY29ubmVjdCBjYWxsYmFjaywgYXMKKyAgICAgICB0aGVuIHdlIGtub3cgd2UncmUgZG9uZS4gKi8KKyAgICBpZighY29ubi0+aGFuZGxlci0+Y29ubmVjdGluZykKKyAgICAgICpwcm90b2NvbF9kb25lID0gVFJVRTsKKworICAgIHJldHVybiBDVVJMRV9PSzsKKyAgfQorCisgIGlmKCFjb25uLT5iaXRzLnByb3RvY29ubnN0YXJ0KSB7CisKKyAgICByZXN1bHQgPSBDdXJsX3Byb3h5X2Nvbm5lY3QoY29ubiwgRklSU1RTT0NLRVQpOworICAgIGlmKHJlc3VsdCkKKyAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBpZihDT05ORUNUX0ZJUlNUU09DS0VUX1BST1hZX1NTTCgpKQorICAgICAgLyogd2FpdCBmb3IgSFRUUFMgcHJveHkgU1NMIGluaXRpYWxpemF0aW9uIHRvIGNvbXBsZXRlICovCisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisKKyAgICBpZihjb25uLT5iaXRzLnR1bm5lbF9wcm94eSAmJiBjb25uLT5iaXRzLmh0dHBwcm94eSAmJgorICAgICAgIEN1cmxfY29ubmVjdF9vbmdvaW5nKGNvbm4pKQorICAgICAgLyogd2hlbiB1c2luZyBhbiBIVFRQIHR1bm5lbCBwcm94eSwgYXdhaXQgY29tcGxldGUgdHVubmVsIGVzdGFibGlzaG1lbnQKKyAgICAgICAgIGJlZm9yZSBwcm9jZWVkaW5nIGZ1cnRoZXIuIFJldHVybiBDVVJMRV9PSyBzbyB3ZSdsbCBiZSBjYWxsZWQgYWdhaW4gKi8KKyAgICAgIHJldHVybiBDVVJMRV9PSzsKKworICAgIGlmKGNvbm4tPmhhbmRsZXItPmNvbm5lY3RfaXQpIHsKKyAgICAgIC8qIGlzIHRoZXJlIGEgcHJvdG9jb2wtc3BlY2lmaWMgY29ubmVjdCgpIHByb2NlZHVyZT8gKi8KKworICAgICAgLyogQ2FsbCB0aGUgcHJvdG9jb2wtc3BlY2lmaWMgY29ubmVjdCBmdW5jdGlvbiAqLworICAgICAgcmVzdWx0ID0gY29ubi0+aGFuZGxlci0+Y29ubmVjdF9pdChjb25uLCBwcm90b2NvbF9kb25lKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgKnByb3RvY29sX2RvbmUgPSBUUlVFOworCisgICAgLyogaXQgaGFzIHN0YXJ0ZWQsIHBvc3NpYmx5IGV2ZW4gY29tcGxldGVkIGJ1dCB0aGF0IGtub3dsZWRnZSBpc24ndCBzdG9yZWQKKyAgICAgICBpbiB0aGlzIGJpdCEgKi8KKyAgICBpZighcmVzdWx0KQorICAgICAgY29ubi0+Yml0cy5wcm90b2Nvbm5zdGFydCA9IFRSVUU7CisgIH0KKworICByZXR1cm4gcmVzdWx0OyAvKiBwYXNzIGJhY2sgc3RhdHVzICovCit9CisKKwogc3RhdGljIENVUkxNY29kZSBtdWx0aV9ydW5zaW5nbGUoc3RydWN0IEN1cmxfbXVsdGkgKm11bHRpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGN1cmx0aW1lIG5vdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEpCkBAIC0xMjMzLDcgKzE1MTUsNyBAQAogICBzdHJ1Y3QgQ3VybF9tZXNzYWdlICptc2cgPSBOVUxMOwogICBib29sIGNvbm5lY3RlZDsKICAgYm9vbCBhc3luYzsKLSAgYm9vbCBwcm90b2NvbF9jb25uZWN0ID0gRkFMU0U7CisgIGJvb2wgcHJvdG9jb2xfY29ubmVjdGVkID0gRkFMU0U7CiAgIGJvb2wgZG9waGFzZV9kb25lID0gRkFMU0U7CiAgIGJvb2wgZG9uZSA9IEZBTFNFOwogICBDVVJMTWNvZGUgcmM7CkBAIC0xMjUyLDYgKzE1MzQsOSBAQAogICAgIGJvb2wgc3RyZWFtX2Vycm9yID0gRkFMU0U7CiAgICAgcmMgPSBDVVJMTV9PSzsKIAorICAgIERFQlVHQVNTRVJUKChkYXRhLT5tc3RhdGUgPD0gQ1VSTE1fU1RBVEVfQ09OTkVDVCkgfHwKKyAgICAgICAgICAgICAgICAoZGF0YS0+bXN0YXRlID49IENVUkxNX1NUQVRFX0RPTkUpIHx8CisgICAgICAgICAgICAgICAgZGF0YS0+Y29ubik7CiAgICAgaWYoIWRhdGEtPmNvbm4gJiYKICAgICAgICBkYXRhLT5tc3RhdGUgPiBDVVJMTV9TVEFURV9DT05ORUNUICYmCiAgICAgICAgZGF0YS0+bXN0YXRlIDwgQ1VSTE1fU1RBVEVfRE9ORSkgewpAQCAtMTM0OSw3ICsxNjM0LDcgQEAKICAgICAgIGlmKGRhdGEtPnNldC5jb25uZWN0dGltZW91dCkKICAgICAgICAgQ3VybF9leHBpcmUoZGF0YSwgZGF0YS0+c2V0LmNvbm5lY3R0aW1lb3V0LCBFWFBJUkVfQ09OTkVDVFRJTUVPVVQpOwogCi0gICAgICByZXN1bHQgPSBDdXJsX2Nvbm5lY3QoZGF0YSwgJmFzeW5jLCAmcHJvdG9jb2xfY29ubmVjdCk7CisgICAgICByZXN1bHQgPSBDdXJsX2Nvbm5lY3QoZGF0YSwgJmFzeW5jLCAmcHJvdG9jb2xfY29ubmVjdGVkKTsKICAgICAgIGlmKENVUkxFX05PX0NPTk5FQ1RJT05fQVZBSUxBQkxFID09IHJlc3VsdCkgewogICAgICAgICAvKiBUaGVyZSB3YXMgbm8gY29ubmVjdGlvbiBhdmFpbGFibGUuIFdlIHdpbGwgZ28gdG8gdGhlIHBlbmRpbmcKICAgICAgICAgICAgc3RhdGUgYW5kIHdhaXQgZm9yIGFuIGF2YWlsYWJsZSBjb25uZWN0aW9uLiAqLwpAQCAtMTM3Nyw3ICsxNjYyLDcgQEAKICAgICAgICAgICAgICBXQUlURE8gb3IgRE8hICovCiAgICAgICAgICAgcmMgPSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk07CiAKLSAgICAgICAgICBpZihwcm90b2NvbF9jb25uZWN0KQorICAgICAgICAgIGlmKHByb3RvY29sX2Nvbm5lY3RlZCkKICAgICAgICAgICAgIG11bHRpc3RhdGUoZGF0YSwgQ1VSTE1fU1RBVEVfRE8pOwogICAgICAgICAgIGVsc2UgewogI2lmbmRlZiBDVVJMX0RJU0FCTEVfSFRUUApAQCAtMTQzMiw3ICsxNzE3LDcgQEAKICAgICAgIGlmKGRucykgewogICAgICAgICAvKiBQZXJmb3JtIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIGNvbm5lY3Rpb24gcGhhc2UsIGFuZCB0aGVuIG1vdmUgb24KICAgICAgICAgICAgdG8gdGhlIFdBSVRDT05ORUNUIHN0YXRlICovCi0gICAgICAgIHJlc3VsdCA9IEN1cmxfb25jZV9yZXNvbHZlZChkYXRhLT5jb25uLCAmcHJvdG9jb2xfY29ubmVjdCk7CisgICAgICAgIHJlc3VsdCA9IEN1cmxfb25jZV9yZXNvbHZlZChkYXRhLT5jb25uLCAmcHJvdG9jb2xfY29ubmVjdGVkKTsKIAogICAgICAgICBpZihyZXN1bHQpCiAgICAgICAgICAgLyogaWYgQ3VybF9vbmNlX3Jlc29sdmVkKCkgcmV0dXJucyBmYWlsdXJlLCB0aGUgY29ubmVjdGlvbiBzdHJ1Y3QKQEAgLTE0NDEsNyArMTcyNiw3IEBACiAgICAgICAgIGVsc2UgewogICAgICAgICAgIC8qIGNhbGwgYWdhaW4gcGxlYXNlIHNvIHRoYXQgd2UgZ2V0IHRoZSBuZXh0IHNvY2tldCBzZXR1cCAqLwogICAgICAgICAgIHJjID0gQ1VSTE1fQ0FMTF9NVUxUSV9QRVJGT1JNOwotICAgICAgICAgIGlmKHByb3RvY29sX2Nvbm5lY3QpCisgICAgICAgICAgaWYocHJvdG9jb2xfY29ubmVjdGVkKQogICAgICAgICAgICAgbXVsdGlzdGF0ZShkYXRhLCBDVVJMTV9TVEFURV9ETyk7CiAgICAgICAgICAgZWxzZSB7CiAjaWZuZGVmIENVUkxfRElTQUJMRV9IVFRQCkBAIC0xNDY2LDcgKzE3NTEsNyBAQAogICAgIGNhc2UgQ1VSTE1fU1RBVEVfV0FJVFBST1hZQ09OTkVDVDoKICAgICAgIC8qIHRoaXMgaXMgSFRUUC1zcGVjaWZpYywgYnV0IHNlbmRpbmcgQ09OTkVDVCB0byBhIHByb3h5IGlzIEhUVFAuLi4gKi8KICAgICAgIERFQlVHQVNTRVJUKGRhdGEtPmNvbm4pOwotICAgICAgcmVzdWx0ID0gQ3VybF9odHRwX2Nvbm5lY3QoZGF0YS0+Y29ubiwgJnByb3RvY29sX2Nvbm5lY3QpOworICAgICAgcmVzdWx0ID0gQ3VybF9odHRwX2Nvbm5lY3QoZGF0YS0+Y29ubiwgJnByb3RvY29sX2Nvbm5lY3RlZCk7CiAKICAgICAgIGlmKGRhdGEtPmNvbm4tPmJpdHMucHJveHlfY29ubmVjdF9jbG9zZWQpIHsKICAgICAgICAgcmMgPSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk07CkBAIC0xNTE3LDggKzE4MDIsOCBAQAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENVUkxNX1NUQVRFX1NFTkRQUk9UT0NPTk5FQ1Q6Ci0gICAgICByZXN1bHQgPSBDdXJsX3Byb3RvY29sX2Nvbm5lY3QoZGF0YS0+Y29ubiwgJnByb3RvY29sX2Nvbm5lY3QpOwotICAgICAgaWYoIXJlc3VsdCAmJiAhcHJvdG9jb2xfY29ubmVjdCkKKyAgICAgIHJlc3VsdCA9IHByb3RvY29sX2Nvbm5lY3QoZGF0YS0+Y29ubiwgJnByb3RvY29sX2Nvbm5lY3RlZCk7CisgICAgICBpZighcmVzdWx0ICYmICFwcm90b2NvbF9jb25uZWN0ZWQpCiAgICAgICAgIC8qIHN3aXRjaCB0byB3YWl0aW5nIHN0YXRlICovCiAgICAgICAgIG11bHRpc3RhdGUoZGF0YSwgQ1VSTE1fU1RBVEVfUFJPVE9DT05ORUNUKTsKICAgICAgIGVsc2UgaWYoIXJlc3VsdCkgewpAQCAtMTUzNiw4ICsxODIxLDggQEAKIAogICAgIGNhc2UgQ1VSTE1fU1RBVEVfUFJPVE9DT05ORUNUOgogICAgICAgLyogcHJvdG9jb2wtc3BlY2lmaWMgY29ubmVjdCBwaGFzZSAqLwotICAgICAgcmVzdWx0ID0gQ3VybF9wcm90b2NvbF9jb25uZWN0aW5nKGRhdGEtPmNvbm4sICZwcm90b2NvbF9jb25uZWN0KTsKLSAgICAgIGlmKCFyZXN1bHQgJiYgcHJvdG9jb2xfY29ubmVjdCkgeworICAgICAgcmVzdWx0ID0gcHJvdG9jb2xfY29ubmVjdGluZyhkYXRhLT5jb25uLCAmcHJvdG9jb2xfY29ubmVjdGVkKTsKKyAgICAgIGlmKCFyZXN1bHQgJiYgcHJvdG9jb2xfY29ubmVjdGVkKSB7CiAgICAgICAgIC8qIGFmdGVyIHRoZSBjb25uZWN0IGhhcyBjb21wbGV0ZWQsIGdvIFdBSVRETyBvciBETyAqLwogICAgICAgICBtdWx0aXN0YXRlKGRhdGEsIENVUkxNX1NUQVRFX0RPKTsKICAgICAgICAgcmMgPSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk07CkBAIC0xNjU5LDggKzE5NDQsNyBAQAogICAgIGNhc2UgQ1VSTE1fU1RBVEVfRE9JTkc6CiAgICAgICAvKiB3ZSBjb250aW51ZSBET0lORyB1bnRpbCB0aGUgRE8gcGhhc2UgaXMgY29tcGxldGUgKi8KICAgICAgIERFQlVHQVNTRVJUKGRhdGEtPmNvbm4pOwotICAgICAgcmVzdWx0ID0gQ3VybF9wcm90b2NvbF9kb2luZyhkYXRhLT5jb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG9waGFzZV9kb25lKTsKKyAgICAgIHJlc3VsdCA9IHByb3RvY29sX2RvaW5nKGRhdGEtPmNvbm4sICZkb3BoYXNlX2RvbmUpOwogICAgICAgaWYoIXJlc3VsdCkgewogICAgICAgICBpZihkb3BoYXNlX2RvbmUpIHsKICAgICAgICAgICAvKiBhZnRlciBETywgZ28gRE9fRE9ORSBvciBET19NT1JFICovCkBAIC0xOTExLDggKzIxOTUsMTMgQEAKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGVsc2UgaWYoY29tZWJhY2spCi0gICAgICAgIHJjID0gQ1VSTE1fQ0FMTF9NVUxUSV9QRVJGT1JNOworICAgICAgZWxzZSBpZihjb21lYmFjaykgeworICAgICAgICAvKiBUaGlzIGF2b2lkcyBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk0gc28gdGhhdCBhIHZlcnkgZmFzdCB0cmFuc2ZlcgorICAgICAgICAgICB3b24ndCBnZXQgc3R1Y2sgb24gdGhpcyB0cmFuc2ZlciBhdCB0aGUgZXhwZW5zZSBvZiBvdGhlciBjb25jdXJyZW50CisgICAgICAgICAgIHRyYW5zZmVycyAqLworICAgICAgICBDdXJsX2V4cGlyZShkYXRhLCAwLCBFWFBJUkVfUlVOX05PVyk7CisgICAgICAgIHJjID0gQ1VSTE1fT0s7CisgICAgICB9CiAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE5ODgsMTMgKzIyNzcsMTUgQEAKICAgICAgICAgICBpZihzdHJlYW1fZXJyb3IpIHsKICAgICAgICAgICAgIC8qIERvbid0IGF0dGVtcHQgdG8gc2VuZCBkYXRhIG92ZXIgYSBjb25uZWN0aW9uIHRoYXQgdGltZWQgb3V0ICovCiAgICAgICAgICAgICBib29sIGRlYWRfY29ubmVjdGlvbiA9IHJlc3VsdCA9PSBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7Ci0gICAgICAgICAgICAvKiBkaXNjb25uZWN0IHByb3Blcmx5ICovCi0gICAgICAgICAgICBDdXJsX2Rpc2Nvbm5lY3QoZGF0YSwgZGF0YS0+Y29ubiwgZGVhZF9jb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IGRhdGEtPmNvbm47CiAKICAgICAgICAgICAgIC8qIFRoaXMgaXMgd2hlcmUgd2UgbWFrZSBzdXJlIHRoYXQgdGhlIGNvbm4gcG9pbnRlciBpcyByZXNldC4KICAgICAgICAgICAgICAgIFdlIGRvbid0IGhhdmUgdG8gZG8gdGhpcyBpbiBldmVyeSBjYXNlIGJsb2NrIGFib3ZlIHdoZXJlIGEKICAgICAgICAgICAgICAgIGZhaWx1cmUgaXMgZGV0ZWN0ZWQgKi8KICAgICAgICAgICAgIGRldGFjaF9jb25ubmVjdGlvbihkYXRhKTsKKworICAgICAgICAgICAgLyogZGlzY29ubmVjdCBwcm9wZXJseSAqLworICAgICAgICAgICAgQ3VybF9kaXNjb25uZWN0KGRhdGEsIGNvbm4sIGRlYWRfY29ubmVjdGlvbik7CiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYoZGF0YS0+bXN0YXRlID09IENVUkxNX1NUQVRFX0NPTk5FQ1QpIHsKQEAgLTIwOTMsNyArMjM4NCw3IEBACiAgICpydW5uaW5nX2hhbmRsZXMgPSBtdWx0aS0+bnVtX2FsaXZlOwogCiAgIGlmKENVUkxNX09LID49IHJldHVybmNvZGUpCi0gICAgdXBkYXRlX3RpbWVyKG11bHRpKTsKKyAgICBDdXJsX3VwZGF0ZV90aW1lcihtdWx0aSk7CiAKICAgcmV0dXJuIHJldHVybmNvZGU7CiB9CkBAIC0yMTQ1LDYgKzI0MzYsMTEgQEAKIAogICAgIEN1cmxfaGFzaF9kZXN0cm95KCZtdWx0aS0+aG9zdGNhY2hlKTsKICAgICBDdXJsX3BzbF9kZXN0cm95KCZtdWx0aS0+cHNsKTsKKworI2lmZGVmIEVOQUJMRV9XQUtFVVAKKyAgICBzY2xvc2UobXVsdGktPndha2V1cF9wYWlyWzBdKTsKKyAgICBzY2xvc2UobXVsdGktPndha2V1cF9wYWlyWzFdKTsKKyNlbmRpZgogICAgIGZyZWUobXVsdGkpOwogCiAgICAgcmV0dXJuIENVUkxNX09LOwpAQCAtMjIxMCw3ICsyNTA2LDcgQEAKIAogICAvKiBGaWxsIGluIHRoZSAnY3VycmVudCcgc3RydWN0IHdpdGggdGhlIHN0YXRlIGFzIGl0IGlzIG5vdzogd2hhdCBzb2NrZXRzIHRvCiAgICAgIHN1cGVydmlzZSBhbmQgZm9yIHdoYXQgYWN0aW9ucyAqLwotICBjdXJyYWN0aW9uID0gbXVsdGlfZ2V0c29jayhkYXRhLCBzb2NrcywgTUFYX1NPQ0tTUEVSRUFTWUhBTkRMRSk7CisgIGN1cnJhY3Rpb24gPSBtdWx0aV9nZXRzb2NrKGRhdGEsIHNvY2tzKTsKIAogICAvKiBXZSBoYXZlIDAgLi4gTiBzb2NrZXRzIGFscmVhZHkgYW5kIHdlIGdldCB0byBrbm93IGFib3V0IHRoZSAwIC4uIE0KICAgICAgc29ja2V0cyB3ZSBzaG91bGQgaGF2ZSBmcm9tIG5vdyBvbi4gRGV0ZWN0IHRoZSBkaWZmZXJlbmNlcywgcmVtb3ZlIG5vCkBAIC0yMjM4LDE0ICsyNTM0LDE0IEBACiAgICAgYWN0aW9uc1tpXSA9IGFjdGlvbjsKICAgICBpZihlbnRyeSkgewogICAgICAgLyogY2hlY2sgaWYgbmV3IGZvciB0aGlzIHRyYW5zZmVyICovCi0gICAgICBmb3IoaSA9IDA7IGk8IGRhdGEtPm51bXNvY2tzOyBpKyspIHsKLSAgICAgICAgaWYocyA9PSBkYXRhLT5zb2NrZXRzW2ldKSB7Ci0gICAgICAgICAgcHJldmFjdGlvbiA9IGRhdGEtPmFjdGlvbnNbaV07CisgICAgICBpbnQgajsKKyAgICAgIGZvcihqID0gMDsgajwgZGF0YS0+bnVtc29ja3M7IGorKykgeworICAgICAgICBpZihzID09IGRhdGEtPnNvY2tldHNbal0pIHsKKyAgICAgICAgICBwcmV2YWN0aW9uID0gZGF0YS0+YWN0aW9uc1tqXTsKICAgICAgICAgICBzaW5jZWJlZm9yZSA9IFRSVUU7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgIH0KLQogICAgIH0KICAgICBlbHNlIHsKICAgICAgIC8qIHRoaXMgaXMgYSBzb2NrZXQgd2UgZGlkbid0IGhhdmUgYmVmb3JlLCBhZGQgaXQgdG8gdGhlIGhhc2ghICovCkBAIC0yMjczLDI5ICsyNTY5LDIyIEBACiAgICAgICBpZihhY3Rpb24gJiBDVVJMX1BPTExfT1VUKQogICAgICAgICBlbnRyeS0+d3JpdGVycysrOwogCi0gICAgICAvKiBhZGQgJ2RhdGEnIHRvIHRoZSBsaXN0IG9mIGhhbmRsZXMgdXNpbmcgdGhpcyBzb2NrZXQhICovCi0gICAgICBDdXJsX2xsaXN0X2luc2VydF9uZXh0KCZlbnRyeS0+bGlzdCwgZW50cnktPmxpc3QudGFpbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwgJmRhdGEtPnNoX3F1ZXVlKTsKKyAgICAgIC8qIGFkZCAnZGF0YScgdG8gdGhlIHRyYW5zZmVyIGhhc2ggb24gdGhpcyBzb2NrZXQhICovCisgICAgICBpZighQ3VybF9oYXNoX2FkZCgmZW50cnktPnRyYW5zZmVycywgKGNoYXIgKikmZGF0YSwgLyogaGFzaCBrZXkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgQ3VybF9lYXN5ICopLCBkYXRhKSkKKyAgICAgICAgcmV0dXJuIENVUkxNX09VVF9PRl9NRU1PUlk7CiAgICAgfQogCiAgICAgY29tYm9hY3Rpb24gPSAoZW50cnktPndyaXRlcnM/IENVUkxfUE9MTF9PVVQgOiAwKSB8CiAgICAgICAoZW50cnktPnJlYWRlcnMgPyBDVVJMX1BPTExfSU4gOiAwKTsKIAotI2lmIDAKLSAgICBpbmZvZihkYXRhLCAiLS0tIENvbWJvYWN0aW9uOiAldSByZWFkZXJzICV1IHdyaXRlcnNcbiIsCi0gICAgICAgICAgZW50cnktPnJlYWRlcnMsIGVudHJ5LT53cml0ZXJzKTsKLSNlbmRpZgotICAgIC8qIGNoZWNrIGlmIGl0IGhhcyB0aGUgc2FtZSBhY3Rpb24gc2V0ICovCi0gICAgaWYoZW50cnktPmFjdGlvbiA9PSBjb21ib2FjdGlvbikKKyAgICAvKiBzb2NrZXQgZXhpc3RlZCBiZWZvcmUgYW5kIGhhcyB0aGUgc2FtZSBhY3Rpb24gc2V0IGFzIGJlZm9yZSAqLworICAgIGlmKHNpbmNlYmVmb3JlICYmIChlbnRyeS0+YWN0aW9uID09IGNvbWJvYWN0aW9uKSkKICAgICAgIC8qIHNhbWUsIGNvbnRpbnVlICovCiAgICAgICBjb250aW51ZTsKIAotICAgIC8qIHdlIGtub3cgKGVudHJ5ICE9IE5VTEwpIGF0IHRoaXMgcG9pbnQsIHNlZSB0aGUgbG9naWMgYWJvdmUgKi8KICAgICBpZihtdWx0aS0+c29ja2V0X2NiKQotICAgICAgbXVsdGktPnNvY2tldF9jYihkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICBzLAotICAgICAgICAgICAgICAgICAgICAgICBjb21ib2FjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgbXVsdGktPnNvY2tldF91c2VycCwKKyAgICAgIG11bHRpLT5zb2NrZXRfY2IoZGF0YSwgcywgY29tYm9hY3Rpb24sIG11bHRpLT5zb2NrZXRfdXNlcnAsCiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zb2NrZXRwKTsKIAogICAgIGVudHJ5LT5hY3Rpb24gPSBjb21ib2FjdGlvbjsgLyogc3RvcmUgdGhlIGN1cnJlbnQgYWN0aW9uIHN0YXRlICovCkBAIC0yMzM1LDExICsyNjI0LDE0IEBACiAgICAgICAgICAgbXVsdGktPnNvY2tldF9jYihkYXRhLCBzLCBDVVJMX1BPTExfUkVNT1ZFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGktPnNvY2tldF91c2VycCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zb2NrZXRwKTsKLSAgICAgICAgc2hfZGVsZW50cnkoJm11bHRpLT5zb2NraGFzaCwgcyk7CisgICAgICAgIHNoX2RlbGVudHJ5KGVudHJ5LCAmbXVsdGktPnNvY2toYXNoLCBzKTsKICAgICAgIH0KICAgICAgIGVsc2UgewotICAgICAgICAvKiByZW1vdmUgdGhpcyB0cmFuc2ZlciBhcyBhIHVzZXIgb2YgdGhpcyBzb2NrZXQgKi8KLSAgICAgICAgQ3VybF9sbGlzdF9yZW1vdmUoJmVudHJ5LT5saXN0LCAmZGF0YS0+c2hfcXVldWUsIE5VTEwpOworICAgICAgICAvKiBzdGlsbCB1c2VycywgYnV0IHJlbW92ZSB0aGlzIGhhbmRsZSBhcyBhIHVzZXIgb2YgdGhpcyBzb2NrZXQgKi8KKyAgICAgICAgaWYoQ3VybF9oYXNoX2RlbGV0ZSgmZW50cnktPnRyYW5zZmVycywgKGNoYXIgKikmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IEN1cmxfZWFzeSAqKSkpIHsKKyAgICAgICAgICBERUJVR0FTU0VSVChOVUxMKTsKKyAgICAgICAgfQogICAgICAgfQogICAgIH0KICAgfSAvKiBmb3IgbG9vcCBvdmVyIG51bXNvY2tzICovCkBAIC0yMzgzLDcgKzI2NzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnNvY2tldHApOwogCiAgICAgICAgIC8qIG5vdyByZW1vdmUgaXQgZnJvbSB0aGUgc29ja2V0IGhhc2ggKi8KLSAgICAgICAgc2hfZGVsZW50cnkoJm11bHRpLT5zb2NraGFzaCwgcyk7CisgICAgICAgIHNoX2RlbGVudHJ5KGVudHJ5LCAmbXVsdGktPnNvY2toYXNoLCBzKTsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTI0NzQsNyArMjc2Niw2IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQogICBpZihzICE9IENVUkxfU09DS0VUX1RJTUVPVVQpIHsKLQogICAgIHN0cnVjdCBDdXJsX3NoX2VudHJ5ICplbnRyeSA9IHNoX2dldGVudHJ5KCZtdWx0aS0+c29ja2hhc2gsIHMpOwogCiAgICAgaWYoIWVudHJ5KQpAQCAtMjQ4NSwzNyArMjc3NiwyMiBAQAogICAgICAgICAgYW5kIGp1c3QgbW92ZSBvbi4gKi8KICAgICAgIDsKICAgICBlbHNlIHsKLSAgICAgIHN0cnVjdCBjdXJsX2xsaXN0ICpsaXN0ID0gJmVudHJ5LT5saXN0OwotICAgICAgc3RydWN0IGN1cmxfbGxpc3RfZWxlbWVudCAqZTsKLSAgICAgIFNJR1BJUEVfVkFSSUFCTEUocGlwZV9zdCk7CisgICAgICBzdHJ1Y3QgY3VybF9oYXNoX2l0ZXJhdG9yIGl0ZXI7CisgICAgICBzdHJ1Y3QgY3VybF9oYXNoX2VsZW1lbnQgKmhlOwogCiAgICAgICAvKiB0aGUgc29ja2V0IGNhbiBiZSBzaGFyZWQgYnkgbWFueSB0cmFuc2ZlcnMsIGl0ZXJhdGUgKi8KLSAgICAgIGZvcihlID0gbGlzdC0+aGVhZDsgZTsgZSA9IGUtPm5leHQpIHsKLSAgICAgICAgZGF0YSA9IChzdHJ1Y3QgQ3VybF9lYXN5ICopZS0+cHRyOwotCi0gICAgICAgIGlmKGRhdGEtPm1hZ2ljICE9IENVUkxFQVNZX01BR0lDX05VTUJFUikKLSAgICAgICAgICAvKiBiYWQgYmFkIGJhZCBiYWQgYmFkIGJhZCBiYWQgKi8KLSAgICAgICAgICByZXR1cm4gQ1VSTE1fSU5URVJOQUxfRVJST1I7CisgICAgICBDdXJsX2hhc2hfc3RhcnRfaXRlcmF0ZSgmZW50cnktPnRyYW5zZmVycywgJml0ZXIpOworICAgICAgZm9yKGhlID0gQ3VybF9oYXNoX25leHRfZWxlbWVudCgmaXRlcik7IGhlOworICAgICAgICAgIGhlID0gQ3VybF9oYXNoX25leHRfZWxlbWVudCgmaXRlcikpIHsKKyAgICAgICAgZGF0YSA9IChzdHJ1Y3QgQ3VybF9lYXN5ICopaGUtPnB0cjsKKyAgICAgICAgREVCVUdBU1NFUlQoZGF0YSk7CisgICAgICAgIERFQlVHQVNTRVJUKGRhdGEtPm1hZ2ljID09IENVUkxFQVNZX01BR0lDX05VTUJFUik7CiAKICAgICAgICAgaWYoZGF0YS0+Y29ubiAmJiAhKGRhdGEtPmNvbm4tPmhhbmRsZXItPmZsYWdzICYgUFJPVE9QVF9ESVJMT0NLKSkKICAgICAgICAgICAvKiBzZXQgc29ja2V0IGV2ZW50IGJpdG1hc2sgaWYgdGhleSdyZSBub3QgbG9ja2VkICovCiAgICAgICAgICAgZGF0YS0+Y29ubi0+Y3NlbGVjdF9iaXRzID0gZXZfYml0bWFzazsKIAotICAgICAgICBzaWdwaXBlX2lnbm9yZShkYXRhLCAmcGlwZV9zdCk7Ci0gICAgICAgIHJlc3VsdCA9IG11bHRpX3J1bnNpbmdsZShtdWx0aSwgbm93LCBkYXRhKTsKLSAgICAgICAgc2lncGlwZV9yZXN0b3JlKCZwaXBlX3N0KTsKLQotICAgICAgICBpZihkYXRhLT5jb25uICYmICEoZGF0YS0+Y29ubi0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX0RJUkxPQ0spKQotICAgICAgICAgIC8qIGNsZWFyIHRoZSBiaXRtYXNrIG9ubHkgaWYgbm90IGxvY2tlZCAqLwotICAgICAgICAgIGRhdGEtPmNvbm4tPmNzZWxlY3RfYml0cyA9IDA7Ci0KLSAgICAgICAgaWYoQ1VSTE1fT0sgPj0gcmVzdWx0KSB7Ci0gICAgICAgICAgLyogZ2V0IHRoZSBzb2NrZXQocykgYW5kIGNoZWNrIGlmIHRoZSBzdGF0ZSBoYXMgYmVlbiBjaGFuZ2VkIHNpbmNlCi0gICAgICAgICAgICAgbGFzdCAqLwotICAgICAgICAgIHJlc3VsdCA9IHNpbmdsZXNvY2tldChtdWx0aSwgZGF0YSk7Ci0gICAgICAgICAgaWYocmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQorICAgICAgICBDdXJsX2V4cGlyZShkYXRhLCAwLCBFWFBJUkVfUlVOX05PVyk7CiAgICAgICB9CiAKICAgICAgIC8qIE5vdyB3ZSBmYWxsLXRocm91Z2ggYW5kIGRvIHRoZSB0aW1lci1iYXNlZCBzdHVmZiwgc2luY2Ugd2UgZG9uJ3Qgd2FudApAQCAtMjUzMCw5ICsyODA2LDEwIEBACiAgIH0KICAgZWxzZSB7CiAgICAgLyogQXNrZWQgdG8gcnVuIGR1ZSB0byB0aW1lLW91dC4gQ2xlYXIgdGhlICdsYXN0Y2FsbCcgdmFyaWFibGUgdG8gZm9yY2UKLSAgICAgICB1cGRhdGVfdGltZXIoKSB0byB0cmlnZ2VyIGEgY2FsbGJhY2sgdG8gdGhlIGFwcCBhZ2FpbiBldmVuIGlmIHRoZSBzYW1lCi0gICAgICAgdGltZW91dCBpcyBzdGlsbCB0aGUgb25lIHRvIHJ1biBhZnRlciB0aGlzIGNhbGwuIFRoYXQgaGFuZGxlcyB0aGUgY2FzZQotICAgICAgIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGFza3MgbGliY3VybCB0byBydW4gdGhlIHRpbWVvdXQgcHJlbWF0dXJlbHkuICovCisgICAgICAgQ3VybF91cGRhdGVfdGltZXIoKSB0byB0cmlnZ2VyIGEgY2FsbGJhY2sgdG8gdGhlIGFwcCBhZ2FpbiBldmVuIGlmIHRoZQorICAgICAgIHNhbWUgdGltZW91dCBpcyBzdGlsbCB0aGUgb25lIHRvIHJ1biBhZnRlciB0aGlzIGNhbGwuIFRoYXQgaGFuZGxlcyB0aGUKKyAgICAgICBjYXNlIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGFza3MgbGliY3VybCB0byBydW4gdGhlIHRpbWVvdXQKKyAgICAgICBwcmVtYXR1cmVseS4gKi8KICAgICBtZW1zZXQoJm11bHRpLT50aW1lcl9sYXN0Y2FsbCwgMCwgc2l6ZW9mKG11bHRpLT50aW1lcl9sYXN0Y2FsbCkpOwogICB9CiAKQEAgLTI2MzEsNiArMjkwOCwxNiBAQAogICAgIGJyZWFrOwogICBjYXNlIENVUkxNT1BUX1BJUEVMSU5JTkdfU0VSVkVSX0JMOgogICAgIGJyZWFrOworICBjYXNlIENVUkxNT1BUX01BWF9DT05DVVJSRU5UX1NUUkVBTVM6CisgICAgeworICAgICAgbG9uZyBzdHJlYW1zID0gdmFfYXJnKHBhcmFtLCBsb25nKTsKKyAgICAgIGlmKHN0cmVhbXMgPCAxKQorICAgICAgICBzdHJlYW1zID0gMTAwOworICAgICAgbXVsdGktPm1heF9jb25jdXJyZW50X3N0cmVhbXMgPQorICAgICAgICAoc3RyZWFtcyA+IChsb25nKUlOSVRJQUxfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyk/CisgICAgICAgIElOSVRJQUxfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyA6ICh1bnNpZ25lZCBpbnQpc3RyZWFtczsKKyAgICB9CisgICAgYnJlYWs7CiAgIGRlZmF1bHQ6CiAgICAgcmVzID0gQ1VSTE1fVU5LTk9XTl9PUFRJT047CiAgICAgYnJlYWs7CkBAIC0yNjUwLDcgKzI5MzcsNyBAQAogICAgIHJldHVybiBDVVJMTV9SRUNVUlNJVkVfQVBJX0NBTEw7CiAgIHJlc3VsdCA9IG11bHRpX3NvY2tldChtdWx0aSwgRkFMU0UsIHMsIDAsIHJ1bm5pbmdfaGFuZGxlcyk7CiAgIGlmKENVUkxNX09LID49IHJlc3VsdCkKLSAgICB1cGRhdGVfdGltZXIobXVsdGkpOworICAgIEN1cmxfdXBkYXRlX3RpbWVyKG11bHRpKTsKICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjY2Miw3ICsyOTQ5LDcgQEAKICAgICByZXR1cm4gQ1VSTE1fUkVDVVJTSVZFX0FQSV9DQUxMOwogICByZXN1bHQgPSBtdWx0aV9zb2NrZXQobXVsdGksIEZBTFNFLCBzLCBldl9iaXRtYXNrLCBydW5uaW5nX2hhbmRsZXMpOwogICBpZihDVVJMTV9PSyA+PSByZXN1bHQpCi0gICAgdXBkYXRlX3RpbWVyKG11bHRpKTsKKyAgICBDdXJsX3VwZGF0ZV90aW1lcihtdWx0aSk7CiAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI2NzQsNyArMjk2MSw3IEBACiAgICAgcmV0dXJuIENVUkxNX1JFQ1VSU0lWRV9BUElfQ0FMTDsKICAgcmVzdWx0ID0gbXVsdGlfc29ja2V0KG11bHRpLCBUUlVFLCBDVVJMX1NPQ0tFVF9CQUQsIDAsIHJ1bm5pbmdfaGFuZGxlcyk7CiAgIGlmKENVUkxNX09LID49IHJlc3VsdCkKLSAgICB1cGRhdGVfdGltZXIobXVsdGkpOworICAgIEN1cmxfdXBkYXRlX3RpbWVyKG11bHRpKTsKICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjczNCwxNCArMzAyMSwxNCBAQAogICogVGVsbCB0aGUgYXBwbGljYXRpb24gaXQgc2hvdWxkIHVwZGF0ZSBpdHMgdGltZXJzLCBpZiBpdCBzdWJzY3JpYmVzIHRvIHRoZQogICogdXBkYXRlIHRpbWVyIGNhbGxiYWNrLgogICovCi1zdGF0aWMgaW50IHVwZGF0ZV90aW1lcihzdHJ1Y3QgQ3VybF9tdWx0aSAqbXVsdGkpCit2b2lkIEN1cmxfdXBkYXRlX3RpbWVyKHN0cnVjdCBDdXJsX211bHRpICptdWx0aSkKIHsKICAgbG9uZyB0aW1lb3V0X21zOwogCiAgIGlmKCFtdWx0aS0+dGltZXJfY2IpCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuOwogICBpZihtdWx0aV90aW1lb3V0KG11bHRpLCAmdGltZW91dF9tcykpIHsKLSAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuOwogICB9CiAgIGlmKHRpbWVvdXRfbXMgPCAwKSB7CiAgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBjdXJsdGltZSBub25lID0gezAsIDB9OwpAQCAtMjc0OSw5ICszMDM2LDEwIEBACiAgICAgICBtdWx0aS0+dGltZXJfbGFzdGNhbGwgPSBub25lOwogICAgICAgLyogdGhlcmUncyBubyB0aW1lb3V0IG5vdyBidXQgdGhlcmUgd2FzIG9uZSBwcmV2aW91c2x5LCB0ZWxsIHRoZSBhcHAgdG8KICAgICAgICAgIGRpc2FibGUgaXQgKi8KLSAgICAgIHJldHVybiBtdWx0aS0+dGltZXJfY2IobXVsdGksIC0xLCBtdWx0aS0+dGltZXJfdXNlcnApOworICAgICAgbXVsdGktPnRpbWVyX2NiKG11bHRpLCAtMSwgbXVsdGktPnRpbWVyX3VzZXJwKTsKKyAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuOwogICB9CiAKICAgLyogV2hlbiBtdWx0aV90aW1lb3V0KCkgaXMgZG9uZSwgbXVsdGktPnRpbWV0cmVlIHBvaW50cyB0byB0aGUgbm9kZSB3aXRoIHRoZQpAQCAtMjc1OSwxMSArMzA0NywxMSBAQAogICAgKiBpZiB0aGlzIGlzIHRoZSBzYW1lIChmaXhlZCkgdGltZSBhcyB3ZSBnb3QgaW4gYSBwcmV2aW91cyBjYWxsIGFuZCB0aGVuCiAgICAqIGF2b2lkIGNhbGxpbmcgdGhlIGNhbGxiYWNrIGFnYWluLiAqLwogICBpZihDdXJsX3NwbGF5Y29tcGFyZWtleXMobXVsdGktPnRpbWV0cmVlLT5rZXksIG11bHRpLT50aW1lcl9sYXN0Y2FsbCkgPT0gMCkKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm47CiAKICAgbXVsdGktPnRpbWVyX2xhc3RjYWxsID0gbXVsdGktPnRpbWV0cmVlLT5rZXk7CiAKLSAgcmV0dXJuIG11bHRpLT50aW1lcl9jYihtdWx0aSwgdGltZW91dF9tcywgbXVsdGktPnRpbWVyX3VzZXJwKTsKKyAgbXVsdGktPnRpbWVyX2NiKG11bHRpLCB0aW1lb3V0X21zLCBtdWx0aS0+dGltZXJfdXNlcnApOwogfQogCiAvKgpAQCAtMjg0MCw3ICszMTI4LDcgQEAKICAqCiAgKiBFeHBpcmUgcmVwbGFjZXMgYSBmb3JtZXIgdGltZW91dCB1c2luZyB0aGUgc2FtZSBpZCBpZiBhbHJlYWR5IHNldC4KICAqLwotdm9pZCBDdXJsX2V4cGlyZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCB0aW1lX3QgbWlsbGksIGV4cGlyZV9pZCBpZCkKK3ZvaWQgQ3VybF9leHBpcmUoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwgdGltZWRpZmZfdCBtaWxsaSwgZXhwaXJlX2lkIGlkKQogewogICBzdHJ1Y3QgQ3VybF9tdWx0aSAqbXVsdGkgPSBkYXRhLT5tdWx0aTsKICAgc3RydWN0IGN1cmx0aW1lICpub3dwID0gJmRhdGEtPnN0YXRlLmV4cGlyZXRpbWU7CkBAIC0yODU0LDcgKzMxNDIsNyBAQAogICBERUJVR0FTU0VSVChpZCA8IEVYUElSRV9MQVNUKTsKIAogICBzZXQgPSBDdXJsX25vdygpOwotICBzZXQudHZfc2VjICs9IG1pbGxpLzEwMDA7CisgIHNldC50dl9zZWMgKz0gKHRpbWVfdCkobWlsbGkvMTAwMCk7IC8qIG1pZ2h0IGJlIGEgNjQgdG8gMzIgYml0IGNvbnZlcnNpb24gKi8KICAgc2V0LnR2X3VzZWMgKz0gKHVuc2lnbmVkIGludCkobWlsbGklMTAwMCkqMTAwMDsKIAogICBpZihzZXQudHZfdXNlYyA+PSAxMDAwMDAwKSB7CkBAIC0zMDY4LDMgKzMzNTYsOSBAQAogICB9CiB9CiAjZW5kaWYKKwordW5zaWduZWQgaW50IEN1cmxfbXVsdGlfbWF4X2NvbmN1cnJlbnRfc3RyZWFtcyhzdHJ1Y3QgQ3VybF9tdWx0aSAqbXVsdGkpCit7CisgIERFQlVHQVNTRVJUKG11bHRpKTsKKyAgcmV0dXJuIG11bHRpLT5tYXhfY29uY3VycmVudF9zdHJlYW1zOworfQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbXVsdGloYW5kbGUuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL211bHRpaGFuZGxlLmgKaW5kZXggMjc5Mzc5YS4uOTFlY2ExNiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbXVsdGloYW5kbGUuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9tdWx0aWhhbmRsZS5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJjb25uY2FjaGUuaCIKICNpbmNsdWRlICJwc2wuaCIKKyNpbmNsdWRlICJzb2NrZXRwYWlyLmgiCiAKIHN0cnVjdCBDdXJsX21lc3NhZ2UgewogICBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50IGxpc3Q7CkBAIC02Niw2ICs2NywxNCBAQAogCiAjZGVmaW5lIENVUkxQSVBFX0FOWSAoQ1VSTFBJUEVfTVVMVElQTEVYKQogCisjaWYgZGVmaW5lZChVU0VfU09DS0VUUEFJUikgJiYgIWRlZmluZWQoVVNFX0JMT0NLSU5HX1NPQ0tFVFMpCisjZGVmaW5lIEVOQUJMRV9XQUtFVVAKKyNlbmRpZgorCisKKy8qIHZhbHVlIGZvciBNQVhJTVVNIENPTkNVUlJFTlQgU1RSRUFNUyB1cHBlciBsaW1pdCAqLworI2RlZmluZSBJTklUSUFMX01BWF9DT05DVVJSRU5UX1NUUkVBTVMgKCgxVSA8PCAzMSkgLSAxKQorCiAvKiBUaGlzIGlzIHRoZSBzdHJ1Y3Qga25vd24gYXMgQ1VSTE0gb24gdGhlIG91dHNpZGUgKi8KIHN0cnVjdCBDdXJsX211bHRpIHsKICAgLyogRmlyc3QgYSBzaW1wbGUgaWRlbnRpZmllciB0byBlYXNpZXIgZGV0ZWN0IGlmIGEgdXNlciBtaXggdXAKQEAgLTExMCwxMSArMTE5LDYgQEAKICAgICAgc2FtZSBhY3R1YWwgc29ja2V0KSAqLwogICBzdHJ1Y3QgY3VybF9oYXNoIHNvY2toYXNoOwogCi0gIC8qIG11bHRpcGxleGluZyB3YW50ZWQgKi8KLSAgYm9vbCBtdWx0aXBsZXhpbmc7Ci0KLSAgYm9vbCByZWNoZWNrc3RhdGU7IC8qIHNlZSBDdXJsX211bHRpX2Nvbm5jaGFuZ2VkICovCi0KICAgLyogU2hhcmVkIGNvbm5lY3Rpb24gY2FjaGUgKGJ1bmRsZXMpKi8KICAgc3RydWN0IGNvbm5jYWNoZSBjb25uX2NhY2hlOwogCkBAIC0xMzIsNyArMTM2LDE3IEBACiAgIHZvaWQgKnRpbWVyX3VzZXJwOwogICBzdHJ1Y3QgY3VybHRpbWUgdGltZXJfbGFzdGNhbGw7IC8qIHRoZSBmaXhlZCB0aW1lIGZvciB0aGUgdGltZW91dCBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBjYWxsYmFjayAqLworICB1bnNpZ25lZCBpbnQgbWF4X2NvbmN1cnJlbnRfc3RyZWFtczsKKworI2lmZGVmIEVOQUJMRV9XQUtFVVAKKyAgY3VybF9zb2NrZXRfdCB3YWtldXBfcGFpclsyXTsgLyogc29ja2V0cGFpcigpIHVzZWQgZm9yIHdha2V1cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIGlzIHVzZWQgZm9yIHJlYWQsIDEgaXMgdXNlZCBmb3Igd3JpdGUgKi8KKyNlbmRpZgorICAvKiBtdWx0aXBsZXhpbmcgd2FudGVkICovCisgIGJvb2wgbXVsdGlwbGV4aW5nOworICBib29sIHJlY2hlY2tzdGF0ZTsgLyogc2VlIEN1cmxfbXVsdGlfY29ubmNoYW5nZWQgKi8KICAgYm9vbCBpbl9jYWxsYmFjazsgICAgICAgICAgICAvKiB0cnVlIHdoaWxlIGV4ZWN1dGluZyBhIGNhbGxiYWNrICovCisgIGJvb2wgaXB2Nl93b3JrczsKIH07CiAKICNlbmRpZiAvKiBIRUFERVJfQ1VSTF9NVUxUSUhBTkRMRV9IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9tdWx0aWlmLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9tdWx0aWlmLmgKaW5kZXggZThhNWU3MC4uYmRlNzU1ZSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbXVsdGlpZi5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL211bHRpaWYuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMjcsMTAgKzI3LDEwIEBACiAgKi8KIAogdm9pZCBDdXJsX3VwZGF0ZXNvY2tldChzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKLXZvaWQgQ3VybF9leHBpcmUoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwgdGltZV90IG1pbGxpLCBleHBpcmVfaWQpOwordm9pZCBDdXJsX2V4cGlyZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCB0aW1lZGlmZl90IG1pbGxpLCBleHBpcmVfaWQpOwogdm9pZCBDdXJsX2V4cGlyZV9jbGVhcihzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKIHZvaWQgQ3VybF9leHBpcmVfZG9uZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCBleHBpcmVfaWQgaWQpOwotdm9pZCBDdXJsX2RldGFjaF9jb25ubmVjdGlvbihzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKK3ZvaWQgQ3VybF91cGRhdGVfdGltZXIoc3RydWN0IEN1cmxfbXVsdGkgKm11bHRpKTsKIHZvaWQgQ3VybF9hdHRhY2hfY29ubm5lY3Rpb24oc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKIGJvb2wgQ3VybF9tdWx0aXBsZXhfd2FudGVkKGNvbnN0IHN0cnVjdCBDdXJsX211bHRpICptdWx0aSk7CkBAIC04OSwxMSArODksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiAKLUNVUkxNY29kZSBDdXJsX211bHRpX3dhaXQoc3RydWN0IEN1cmxfbXVsdGkgKm11bHRpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF93YWl0ZmQgZXh0cmFfZmRzW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleHRyYV9uZmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGltZW91dF9tcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpyZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmdvdHNvY2tldCk7IC8qIGlmIGFueSBzb2NrZXQgd2FzIGNoZWNrZWQgKi8KKworLyogUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgQ1VSTE1PUFRfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyBvcHRpb24gKi8KK3Vuc2lnbmVkIGludCBDdXJsX211bHRpX21heF9jb25jdXJyZW50X3N0cmVhbXMoc3RydWN0IEN1cmxfbXVsdGkgKm11bHRpKTsKIAogI2VuZGlmIC8qIEhFQURFUl9DVVJMX01VTFRJSUZfSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbmV0cmMuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL25ldHJjLmMKaW5kZXggMWJkOTk4Zi4uMWM5ZGEzMSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvbmV0cmMuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9uZXRyYy5jCkBAIC00NSwyNyArNDUsMjcgQEAKICAgSE9TVFZBTElEICAgICAvKiB0aGlzIGlzICJvdXIiIG1hY2hpbmUhICovCiB9OwogCisjZGVmaW5lIE5FVFJDX0ZJTEVfTUlTU0lORyAxCisjZGVmaW5lIE5FVFJDX0ZBSUxFRCAtMQorI2RlZmluZSBORVRSQ19TVUNDRVNTIDAKKwogLyoKLSAqIEB1bml0dGVzdDogMTMwNAotICoKLSAqICpsb2dpbnAgYW5kICpwYXNzd29yZHAgTVVTVCBiZSBhbGxvY2F0ZWQgaWYgdGhleSBhcmVuJ3QgTlVMTCB3aGVuIHBhc3NlZAotICogaW4uCisgKiBSZXR1cm5zIHplcm8gb24gc3VjY2Vzcy4KICAqLwotaW50IEN1cmxfcGFyc2VuZXRyYyhjb25zdCBjaGFyICpob3N0LAotICAgICAgICAgICAgICAgICAgICBjaGFyICoqbG9naW5wLAotICAgICAgICAgICAgICAgICAgICBjaGFyICoqcGFzc3dvcmRwLAotICAgICAgICAgICAgICAgICAgICBib29sICpsb2dpbl9jaGFuZ2VkLAotICAgICAgICAgICAgICAgICAgICBib29sICpwYXNzd29yZF9jaGFuZ2VkLAotICAgICAgICAgICAgICAgICAgICBjaGFyICpuZXRyY2ZpbGUpCitzdGF0aWMgaW50IHBhcnNlbmV0cmMoY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqbG9naW5wLAorICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipwYXNzd29yZHAsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqbG9naW5fY2hhbmdlZCwKKyAgICAgICAgICAgICAgICAgICAgICBib29sICpwYXNzd29yZF9jaGFuZ2VkLAorICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm5ldHJjZmlsZSkKIHsKICAgRklMRSAqZmlsZTsKLSAgaW50IHJldGNvZGUgPSAxOworICBpbnQgcmV0Y29kZSA9IE5FVFJDX0ZJTEVfTUlTU0lORzsKICAgY2hhciAqbG9naW4gPSAqbG9naW5wOwogICBjaGFyICpwYXNzd29yZCA9ICpwYXNzd29yZHA7CiAgIGJvb2wgc3BlY2lmaWNfbG9naW4gPSAobG9naW4gJiYgKmxvZ2luICE9IDApOwogICBib29sIGxvZ2luX2FsbG9jID0gRkFMU0U7CiAgIGJvb2wgcGFzc3dvcmRfYWxsb2MgPSBGQUxTRTsKLSAgYm9vbCBuZXRyY19hbGxvYyA9IEZBTFNFOwogICBlbnVtIGhvc3RfbG9va3VwX3N0YXRlIHN0YXRlID0gTk9USElORzsKIAogICBjaGFyIHN0YXRlX2xvZ2luID0gMDsgICAgICAvKiBGb3VuZCBhIGxvZ2luIGtleXdvcmQgKi8KQEAgLTczLDUxICs3Myw5IEBACiAgIGludCBzdGF0ZV9vdXJfbG9naW4gPSBGQUxTRTsgIC8qIFdpdGggc3BlY2lmaWNfbG9naW4sIGZvdW5kICpvdXIqIGxvZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgKi8KIAotI2RlZmluZSBORVRSQyBET1RfQ0hBUiAibmV0cmMiCi0KLSAgaWYoIW5ldHJjZmlsZSkgewotICAgIGJvb2wgaG9tZV9hbGxvYyA9IEZBTFNFOwotICAgIGNoYXIgKmhvbWUgPSBjdXJsX2dldGVudigiSE9NRSIpOyAvKiBwb3J0YWJsZSBlbnZpcm9ubWVudCByZWFkZXIgKi8KLSAgICBpZihob21lKSB7Ci0gICAgICBob21lX2FsbG9jID0gVFJVRTsKLSNpZiBkZWZpbmVkKEhBVkVfR0VUUFdVSURfUikgJiYgZGVmaW5lZChIQVZFX0dFVEVVSUQpCi0gICAgfQotICAgIGVsc2UgewotICAgICAgc3RydWN0IHBhc3N3ZCBwdywgKnB3X3JlczsKLSAgICAgIGNoYXIgcHdidWZbMTAyNF07Ci0gICAgICBpZighZ2V0cHd1aWRfcihnZXRldWlkKCksICZwdywgcHdidWYsIHNpemVvZihwd2J1ZiksICZwd19yZXMpCi0gICAgICAgICAmJiBwd19yZXMpIHsKLSAgICAgICAgaG9tZSA9IHN0cmR1cChwdy5wd19kaXIpOwotICAgICAgICBpZighaG9tZSkKLSAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgICAgICAgaG9tZV9hbGxvYyA9IFRSVUU7Ci0gICAgICB9Ci0jZWxpZiBkZWZpbmVkKEhBVkVfR0VUUFdVSUQpICYmIGRlZmluZWQoSEFWRV9HRVRFVUlEKQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHN0cnVjdCBwYXNzd2QgKnB3OwotICAgICAgcHcgPSBnZXRwd3VpZChnZXRldWlkKCkpOwotICAgICAgaWYocHcpIHsKLSAgICAgICAgaG9tZSA9IHB3LT5wd19kaXI7Ci0gICAgICB9Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBpZighaG9tZSkKLSAgICAgIHJldHVybiByZXRjb2RlOyAvKiBubyBob21lIGRpcmVjdG9yeSBmb3VuZCAob3IgcG9zc2libHkgb3V0IG9mIG1lbW9yeSkgKi8KLQotICAgIG5ldHJjZmlsZSA9IGN1cmxfbWFwcmludGYoIiVzJXMlcyIsIGhvbWUsIERJUl9DSEFSLCBORVRSQyk7Ci0gICAgaWYoaG9tZV9hbGxvYykKLSAgICAgIGZyZWUoaG9tZSk7Ci0gICAgaWYoIW5ldHJjZmlsZSkgewotICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBuZXRyY19hbGxvYyA9IFRSVUU7Ci0gIH0KKyAgREVCVUdBU1NFUlQobmV0cmNmaWxlKTsKIAogICBmaWxlID0gZm9wZW4obmV0cmNmaWxlLCBGT1BFTl9SRUFEVEVYVCk7Ci0gIGlmKG5ldHJjX2FsbG9jKQotICAgIGZyZWUobmV0cmNmaWxlKTsKICAgaWYoZmlsZSkgewogICAgIGNoYXIgKnRvazsKICAgICBjaGFyICp0b2tfYnVmOwpAQCAtMTMwLDcgKzg4LDcgQEAKICAgICAgIGlmKHRvayAmJiAqdG9rID09ICcjJykKICAgICAgICAgLyogdHJlYXQgYW4gaW5pdGlhbCBoYXNoIGFzIGEgY29tbWVudCBsaW5lICovCiAgICAgICAgIGNvbnRpbnVlOwotICAgICAgd2hpbGUoIWRvbmUgJiYgdG9rKSB7CisgICAgICB3aGlsZSh0b2spIHsKIAogICAgICAgICBpZigobG9naW4gJiYgKmxvZ2luKSAmJiAocGFzc3dvcmQgJiYgKnBhc3N3b3JkKSkgewogICAgICAgICAgIGRvbmUgPSBUUlVFOwpAQCAtMTQ4LDE0ICsxMDYsMTQgQEAKICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZSBpZihzdHJjYXNlY29tcGFyZSgiZGVmYXVsdCIsIHRvaykpIHsKICAgICAgICAgICAgIHN0YXRlID0gSE9TVFZBTElEOwotICAgICAgICAgICAgcmV0Y29kZSA9IDA7IC8qIHdlIGRpZCBmaW5kIG91ciBob3N0ICovCisgICAgICAgICAgICByZXRjb2RlID0gTkVUUkNfU1VDQ0VTUzsgLyogd2UgZGlkIGZpbmQgb3VyIGhvc3QgKi8KICAgICAgICAgICB9CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSE9TVEZPVU5EOgogICAgICAgICAgIGlmKHN0cmNhc2Vjb21wYXJlKGhvc3QsIHRvaykpIHsKICAgICAgICAgICAgIC8qIGFuZCB5ZXMsIHRoaXMgaXMgb3VyIGhvc3QhICovCiAgICAgICAgICAgICBzdGF0ZSA9IEhPU1RWQUxJRDsKLSAgICAgICAgICAgIHJldGNvZGUgPSAwOyAvKiB3ZSBkaWQgZmluZCBvdXIgaG9zdCAqLworICAgICAgICAgICAgcmV0Y29kZSA9IE5FVFJDX1NVQ0NFU1M7IC8qIHdlIGRpZCBmaW5kIG91ciBob3N0ICovCiAgICAgICAgICAgfQogICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIC8qIG5vdCBvdXIgaG9zdCAqLwpAQCAtMTc0LDcgKzEzMiw3IEBACiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgbG9naW4gPSBzdHJkdXAodG9rKTsKICAgICAgICAgICAgICAgaWYoIWxvZ2luKSB7Ci0gICAgICAgICAgICAgICAgcmV0Y29kZSA9IC0xOyAvKiBhbGxvY2F0aW9uIGZhaWxlZCAqLworICAgICAgICAgICAgICAgIHJldGNvZGUgPSBORVRSQ19GQUlMRUQ7IC8qIGFsbG9jYXRpb24gZmFpbGVkICovCiAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgbG9naW5fYWxsb2MgPSBUUlVFOwpAQCAtMTkwLDcgKzE0OCw3IEBACiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgcGFzc3dvcmQgPSBzdHJkdXAodG9rKTsKICAgICAgICAgICAgICAgaWYoIXBhc3N3b3JkKSB7Ci0gICAgICAgICAgICAgICAgcmV0Y29kZSA9IC0xOyAvKiBhbGxvY2F0aW9uIGZhaWxlZCAqLworICAgICAgICAgICAgICAgIHJldGNvZGUgPSBORVRSQ19GQUlMRUQ7IC8qIGFsbG9jYXRpb24gZmFpbGVkICovCiAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgcGFzc3dvcmRfYWxsb2MgPSBUUlVFOwpAQCAtMjE1LDYgKzE3Myw3IEBACiAKICAgICBvdXQ6CiAgICAgaWYoIXJldGNvZGUpIHsKKyAgICAgIC8qIHN1Y2Nlc3MgKi8KICAgICAgICpsb2dpbl9jaGFuZ2VkID0gRkFMU0U7CiAgICAgICAqcGFzc3dvcmRfY2hhbmdlZCA9IEZBTFNFOwogICAgICAgaWYobG9naW5fYWxsb2MpIHsKQEAgLTI0Miw0ICsyMDEsNzggQEAKICAgcmV0dXJuIHJldGNvZGU7CiB9CiAKKy8qCisgKiBAdW5pdHRlc3Q6IDEzMDQKKyAqCisgKiAqbG9naW5wIGFuZCAqcGFzc3dvcmRwIE1VU1QgYmUgYWxsb2NhdGVkIGlmIHRoZXkgYXJlbid0IE5VTEwgd2hlbiBwYXNzZWQKKyAqIGluLgorICovCitpbnQgQ3VybF9wYXJzZW5ldHJjKGNvbnN0IGNoYXIgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgIGNoYXIgKipsb2dpbnAsCisgICAgICAgICAgICAgICAgICAgIGNoYXIgKipwYXNzd29yZHAsCisgICAgICAgICAgICAgICAgICAgIGJvb2wgKmxvZ2luX2NoYW5nZWQsCisgICAgICAgICAgICAgICAgICAgIGJvb2wgKnBhc3N3b3JkX2NoYW5nZWQsCisgICAgICAgICAgICAgICAgICAgIGNoYXIgKm5ldHJjZmlsZSkKK3sKKyAgaW50IHJldGNvZGUgPSAxOworICBjaGFyICpmaWxlYWxsb2MgPSBOVUxMOworCisgIGlmKCFuZXRyY2ZpbGUpIHsKKyAgICBjaGFyICpob21lID0gTlVMTDsKKyAgICBjaGFyICpob21lYSA9IGN1cmxfZ2V0ZW52KCJIT01FIik7IC8qIHBvcnRhYmxlIGVudmlyb25tZW50IHJlYWRlciAqLworICAgIGlmKGhvbWVhKSB7CisgICAgICBob21lID0gaG9tZWE7CisjaWYgZGVmaW5lZChIQVZFX0dFVFBXVUlEX1IpICYmIGRlZmluZWQoSEFWRV9HRVRFVUlEKQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN0cnVjdCBwYXNzd2QgcHcsICpwd19yZXM7CisgICAgICBjaGFyIHB3YnVmWzEwMjRdOworICAgICAgaWYoIWdldHB3dWlkX3IoZ2V0ZXVpZCgpLCAmcHcsIHB3YnVmLCBzaXplb2YocHdidWYpLCAmcHdfcmVzKQorICAgICAgICAgJiYgcHdfcmVzKSB7CisgICAgICAgIGhvbWUgPSBwdy5wd19kaXI7CisgICAgICB9CisjZWxpZiBkZWZpbmVkKEhBVkVfR0VUUFdVSUQpICYmIGRlZmluZWQoSEFWRV9HRVRFVUlEKQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHN0cnVjdCBwYXNzd2QgKnB3OworICAgICAgcHcgPSBnZXRwd3VpZChnZXRldWlkKCkpOworICAgICAgaWYocHcpIHsKKyAgICAgICAgaG9tZSA9IHB3LT5wd19kaXI7CisgICAgICB9CisjZW5kaWYKKyAgICB9CisKKyAgICBpZighaG9tZSkKKyAgICAgIHJldHVybiByZXRjb2RlOyAvKiBubyBob21lIGRpcmVjdG9yeSBmb3VuZCAob3IgcG9zc2libHkgb3V0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5KSAqLworCisgICAgZmlsZWFsbG9jID0gY3VybF9tYXByaW50ZigiJXMlcy5uZXRyYyIsIGhvbWUsIERJUl9DSEFSKTsKKyAgICBpZighZmlsZWFsbG9jKSB7CisgICAgICBmcmVlKGhvbWVhKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0Y29kZSA9IHBhcnNlbmV0cmMoaG9zdCwgbG9naW5wLCBwYXNzd29yZHAsIGxvZ2luX2NoYW5nZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmRfY2hhbmdlZCwgZmlsZWFsbG9jKTsKKyAgICBmcmVlKGZpbGVhbGxvYyk7CisjaWZkZWYgV0lOMzIKKyAgICBpZihyZXRjb2RlID09IE5FVFJDX0ZJTEVfTUlTU0lORykgeworICAgICAgLyogZmFsbGJhY2sgdG8gdGhlIG9sZC1zdHlsZSAiX25ldHJjIiBmaWxlICovCisgICAgICBmaWxlYWxsb2MgPSBjdXJsX21hcHJpbnRmKCIlcyVzX25ldHJjIiwgaG9tZSwgRElSX0NIQVIpOworICAgICAgaWYoIWZpbGVhbGxvYykgeworICAgICAgICBmcmVlKGhvbWVhKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgICAgfQorICAgICAgcmV0Y29kZSA9IHBhcnNlbmV0cmMoaG9zdCwgbG9naW5wLCBwYXNzd29yZHAsIGxvZ2luX2NoYW5nZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZF9jaGFuZ2VkLCBmaWxlYWxsb2MpOworICAgICAgZnJlZShmaWxlYWxsb2MpOworICAgIH0KKyNlbmRpZgorICAgIGZyZWUoaG9tZWEpOworICB9CisgIGVsc2UKKyAgICByZXRjb2RlID0gcGFyc2VuZXRyYyhob3N0LCBsb2dpbnAsIHBhc3N3b3JkcCwgbG9naW5fY2hhbmdlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZF9jaGFuZ2VkLCBuZXRyY2ZpbGUpOworICByZXR1cm4gcmV0Y29kZTsKK30KKwogI2VuZGlmCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9ub24tYXNjaWkuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL25vbi1hc2NpaS5jCmluZGV4IDQyYmVhZWMuLmE0OGU2N2QgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL25vbi1hc2NpaS5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL25vbi1hc2NpaS5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTcsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9ub25ibG9jay5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvbm9uYmxvY2suYwppbmRleCA0ZDEwNWMxLi5hYmViNjU5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9ub25ibG9jay5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL25vbmJsb2NrLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL25vbmJsb2NrLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9ub25ibG9jay5oCmluZGV4IGViMThlYTEuLmQ1MGQzMTUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL25vbmJsb2NrLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvbm9uYmxvY2suaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDA5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvb3BlbmxkYXAuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL29wZW5sZGFwLmMKaW5kZXggZWVhYjJjNy4uNzM0Y2E1ZiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvb3BlbmxkYXAuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9vcGVubGRhcC5jCkBAIC0xNTEsNyArMTUxLDcgQEAKICAgImJhZCBvciBtaXNzaW5nIGV4dGVuc2lvbnMiCiB9OwogCi10eXBlZGVmIHN0cnVjdCBsZGFwY29ubmluZm8geworc3RydWN0IGxkYXBjb25uaW5mbyB7CiAgIExEQVAgKmxkOwogICBDdXJsX3JlY3YgKnJlY3Y7ICAvKiBmb3Igc3RhY2tpbmcgU1NMIGhhbmRsZXIgKi8KICAgQ3VybF9zZW5kICpzZW5kOwpAQCAtMTYwLDcgKzE2MCw3IEBACiAgIGJvb2wgc3NsZG9uZTsKICAgYm9vbCBzc2xpbnN0OwogICBib29sIGRpZGJpbmQ7Ci19IGxkYXBjb25uaW5mbzsKK307CiAKIHR5cGVkZWYgc3RydWN0IGxkYXByZXFpbmZvIHsKICAgaW50IG1zZ2lkOwpAQCAtMTY5LDcgKzE2OSw3IEBACiAKIHN0YXRpYyBDVVJMY29kZSBsZGFwX3NldHVwX2Nvbm5lY3Rpb24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewotICBsZGFwY29ubmluZm8gKmxpOworICBzdHJ1Y3QgbGRhcGNvbm5pbmZvICpsaTsKICAgTERBUFVSTERlc2MgKmx1ZDsKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIGludCByYywgcHJvdG87CkBAIC0xOTAsMTEgKzE5MCwxMSBAQAogICBwcm90byA9IGxkYXBfcHZ0X3VybF9zY2hlbWUycHJvdG8obHVkLT5sdWRfc2NoZW1lKTsKICAgbGRhcF9mcmVlX3VybGRlc2MobHVkKTsKIAotICBsaSA9IGNhbGxvYygxLCBzaXplb2YobGRhcGNvbm5pbmZvKSk7CisgIGxpID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbGRhcGNvbm5pbmZvKSk7CiAgIGlmKCFsaSkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgbGktPnByb3RvID0gcHJvdG87Ci0gIGNvbm4tPnByb3RvLmdlbmVyaWMgPSBsaTsKKyAgY29ubi0+cHJvdG8ubGRhcGMgPSBsaTsKICAgY29ubmtlZXAoY29ubiwgIk9wZW5MREFQIGRlZmF1bHQiKTsKICAgcmV0dXJuIENVUkxFX09LOwogfQpAQCAtMjA1LDcgKzIwNSw3IEBACiAKIHN0YXRpYyBDVVJMY29kZSBsZGFwX2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKQogewotICBsZGFwY29ubmluZm8gKmxpID0gY29ubi0+cHJvdG8uZ2VuZXJpYzsKKyAgc3RydWN0IGxkYXBjb25uaW5mbyAqbGkgPSBjb25uLT5wcm90by5sZGFwYzsKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIGludCByYywgcHJvdG8gPSBMREFQX1ZFUlNJT04zOwogICBjaGFyIGhvc3R1cmxbMTAyNF07CkBAIC0yNTIsNyArMjUyLDcgQEAKIAogc3RhdGljIENVUkxjb2RlIGxkYXBfY29ubmVjdGluZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCiB7Ci0gIGxkYXBjb25uaW5mbyAqbGkgPSBjb25uLT5wcm90by5nZW5lcmljOworICBzdHJ1Y3QgbGRhcGNvbm5pbmZvICpsaSA9IGNvbm4tPnByb3RvLmxkYXBjOwogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKICAgTERBUE1lc3NhZ2UgKm1zZyA9IE5VTEw7CiAgIHN0cnVjdCB0aW1ldmFsIHR2ID0gezAsIDF9LCAqdHZwOwpAQCAtMzU3LDcgKzM1Nyw3IEBACiAKIHN0YXRpYyBDVVJMY29kZSBsZGFwX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sIGRlYWRfY29ubmVjdGlvbikKIHsKLSAgbGRhcGNvbm5pbmZvICpsaSA9IGNvbm4tPnByb3RvLmdlbmVyaWM7CisgIHN0cnVjdCBsZGFwY29ubmluZm8gKmxpID0gY29ubi0+cHJvdG8ubGRhcGM7CiAgICh2b2lkKSBkZWFkX2Nvbm5lY3Rpb247CiAKICAgaWYobGkpIHsKQEAgLTM2NSw3ICszNjUsNyBAQAogICAgICAgbGRhcF91bmJpbmRfZXh0KGxpLT5sZCwgTlVMTCwgTlVMTCk7CiAgICAgICBsaS0+bGQgPSBOVUxMOwogICAgIH0KLSAgICBjb25uLT5wcm90by5nZW5lcmljID0gTlVMTDsKKyAgICBjb25uLT5wcm90by5sZGFwYyA9IE5VTEw7CiAgICAgZnJlZShsaSk7CiAgIH0KICAgcmV0dXJuIENVUkxFX09LOwpAQCAtMzczLDcgKzM3Myw3IEBACiAKIHN0YXRpYyBDVVJMY29kZSBsZGFwX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSkKIHsKLSAgbGRhcGNvbm5pbmZvICpsaSA9IGNvbm4tPnByb3RvLmdlbmVyaWM7CisgIHN0cnVjdCBsZGFwY29ubmluZm8gKmxpID0gY29ubi0+cHJvdG8ubGRhcGM7CiAgIGxkYXByZXFpbmZvICpscjsKICAgQ1VSTGNvZGUgc3RhdHVzID0gQ1VSTEVfT0s7CiAgIGludCByYyA9IDA7CkBAIC00MjcsNyArNDI3LDcgQEAKICAgaWYobHIpIHsKICAgICAvKiBpZiB0aGVyZSB3YXMgYSBzZWFyY2ggaW4gcHJvZ3Jlc3MsIGFiYW5kb24gaXQgKi8KICAgICBpZihsci0+bXNnaWQpIHsKLSAgICAgIGxkYXBjb25uaW5mbyAqbGkgPSBjb25uLT5wcm90by5nZW5lcmljOworICAgICAgc3RydWN0IGxkYXBjb25uaW5mbyAqbGkgPSBjb25uLT5wcm90by5sZGFwYzsKICAgICAgIGxkYXBfYWJhbmRvbl9leHQobGktPmxkLCBsci0+bXNnaWQsIE5VTEwsIE5VTEwpOwogICAgICAgbHItPm1zZ2lkID0gMDsKICAgICB9CkBAIC00NDEsNyArNDQxLDcgQEAKIHN0YXRpYyBzc2l6ZV90IGxkYXBfcmVjdihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgsIGNoYXIgKmJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLCBDVVJMY29kZSAqZXJyKQogewotICBsZGFwY29ubmluZm8gKmxpID0gY29ubi0+cHJvdG8uZ2VuZXJpYzsKKyAgc3RydWN0IGxkYXBjb25uaW5mbyAqbGkgPSBjb25uLT5wcm90by5sZGFwYzsKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIGxkYXByZXFpbmZvICpsciA9IGRhdGEtPnJlcS5wcm90b3A7CiAgIGludCByYywgcmV0OwpAQCAtNzE4LDcgKzcxOCw3IEBACiBsZGFwc2JfdGxzX3JlYWQoU29ja2J1Zl9JT19EZXNjICpzYmlvZCwgdm9pZCAqYnVmLCBiZXJfbGVuX3QgbGVuKQogewogICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSBzYmlvZC0+c2Jpb2RfcHZ0OwotICBsZGFwY29ubmluZm8gKmxpID0gY29ubi0+cHJvdG8uZ2VuZXJpYzsKKyAgc3RydWN0IGxkYXBjb25uaW5mbyAqbGkgPSBjb25uLT5wcm90by5sZGFwYzsKICAgYmVyX3NsZW5fdCByZXQ7CiAgIENVUkxjb2RlIGVyciA9IENVUkxFX1JFQ1ZfRVJST1I7CiAKQEAgLTczMyw3ICs3MzMsNyBAQAogbGRhcHNiX3Rsc193cml0ZShTb2NrYnVmX0lPX0Rlc2MgKnNiaW9kLCB2b2lkICpidWYsIGJlcl9sZW5fdCBsZW4pCiB7CiAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IHNiaW9kLT5zYmlvZF9wdnQ7Ci0gIGxkYXBjb25uaW5mbyAqbGkgPSBjb25uLT5wcm90by5nZW5lcmljOworICBzdHJ1Y3QgbGRhcGNvbm5pbmZvICpsaSA9IGNvbm4tPnByb3RvLmxkYXBjOwogICBiZXJfc2xlbl90IHJldDsKICAgQ1VSTGNvZGUgZXJyID0gQ1VSTEVfU0VORF9FUlJPUjsKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvcGFyc2VkYXRlLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9wYXJzZWRhdGUuYwppbmRleCA3YWU1ZWI4Li41ODVkN2VhIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9wYXJzZWRhdGUuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9wYXJzZWRhdGUuYwpAQCAtMTAwLDE2ICsxMDAsMjAgQEAKICNkZWZpbmUgUEFSU0VEQVRFX0xBVEVSICAxCiAjZGVmaW5lIFBBUlNFREFURV9TT09ORVIgMgogCi0jaWZuZGVmIENVUkxfRElTQUJMRV9QQVJTRURBVEUKLQorI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9QQVJTRURBVEUpIHx8ICFkZWZpbmVkKENVUkxfRElTQUJMRV9GVFApIHx8IFwKKyAgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0ZJTEUpCisvKiBUaGVzZSBuYW1lcyBhcmUgYWxzbyB1c2VkIGJ5IEZUUCBhbmQgRklMRSBjb2RlICovCiBjb25zdCBjaGFyICogY29uc3QgQ3VybF93a2RheVtdID0KIHsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIn07Ci1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHdlZWtkYXlbXSA9Ci17ICJNb25kYXkiLCAiVHVlc2RheSIsICJXZWRuZXNkYXkiLCAiVGh1cnNkYXkiLAotICAiRnJpZGF5IiwgIlNhdHVyZGF5IiwgIlN1bmRheSIgfTsKIGNvbnN0IGNoYXIgKiBjb25zdCBDdXJsX21vbnRoW109CiB7ICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsCiAgICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIgfTsKKyNlbmRpZgorCisjaWZuZGVmIENVUkxfRElTQUJMRV9QQVJTRURBVEUKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgd2Vla2RheVtdID0KK3sgIk1vbmRheSIsICJUdWVzZGF5IiwgIldlZG5lc2RheSIsICJUaHVyc2RheSIsCisgICJGcmlkYXkiLCAiU2F0dXJkYXkiLCAiU3VuZGF5IiB9OwogCiBzdHJ1Y3QgdHppbmZvIHsKICAgY2hhciBuYW1lWzVdOwpAQCAtNTgzLDYgKzU4NywzMCBAQAogICByZXR1cm4gLTE7CiB9CiAKKy8qIEN1cmxfZ2V0ZGF0ZV9jYXBwZWQoKSBkaWZmZXJzIGZyb20gY3VybF9nZXRkYXRlKCkgaW4gdGhhdCB0aGlzIHdpbGwgcmV0dXJuCisgICBUSU1FX1RfTUFYIGluIGNhc2UgdGhlIHBhcnNlZCB0aW1lIHZhbHVlIHdhcyB0b28gYmlnLCBpbnN0ZWFkIG9mIGFuCisgICBlcnJvci4gKi8KKwordGltZV90IEN1cmxfZ2V0ZGF0ZV9jYXBwZWQoY29uc3QgY2hhciAqcCkKK3sKKyAgdGltZV90IHBhcnNlZCA9IC0xOworICBpbnQgcmMgPSBwYXJzZWRhdGUocCwgJnBhcnNlZCk7CisKKyAgc3dpdGNoKHJjKSB7CisgIGNhc2UgUEFSU0VEQVRFX09LOgorICAgIGlmKHBhcnNlZCA9PSAtMSkKKyAgICAgIC8qIGF2b2lkIHJldHVybmluZyAtMSBmb3IgYSB3b3JraW5nIHNjZW5hcmlvICovCisgICAgICBwYXJzZWQrKzsKKyAgICByZXR1cm4gcGFyc2VkOworICBjYXNlIFBBUlNFREFURV9MQVRFUjoKKyAgICAvKiB0aGlzIHJldHVybnMgdGhlIG1heGltdW0gdGltZSB2YWx1ZSAqLworICAgIHJldHVybiBwYXJzZWQ7CisgIGRlZmF1bHQ6CisgICAgcmV0dXJuIC0xOyAvKiBldmVyeXRoaW5nIGVsc2UgaXMgZmFpbCAqLworICB9CisgIC8qIFVOUkVBQ0hBQkxFICovCit9CisKIC8qCiAgKiBDdXJsX2dtdGltZSgpIGlzIGEgZ210aW1lKCkgcmVwbGFjZW1lbnQgZm9yIHBvcnRhYmlsaXR5LiBEbyBub3QgdXNlIHRoZQogICogZ210aW1lX3IoKSBvciBnbXRpbWUoKSBmdW5jdGlvbnMgYW55d2hlcmUgZWxzZSBidXQgaGVyZS4KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3BhcnNlZGF0ZS5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvcGFyc2VkYXRlLmgKaW5kZXggOGRjM2I5MC4uOGM3YWU5NCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvcGFyc2VkYXRlLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvcGFyc2VkYXRlLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTI3LDQgKzI3LDEwIEBACiAKIENVUkxjb2RlIEN1cmxfZ210aW1lKHRpbWVfdCBpbnRpbWUsIHN0cnVjdCB0bSAqc3RvcmUpOwogCisvKiBDdXJsX2dldGRhdGVfY2FwcGVkKCkgZGlmZmVycyBmcm9tIGN1cmxfZ2V0ZGF0ZSgpIGluIHRoYXQgdGhpcyB3aWxsIHJldHVybgorICAgVElNRV9UX01BWCBpbiBjYXNlIHRoZSBwYXJzZWQgdGltZSB2YWx1ZSB3YXMgdG9vIGJpZywgaW5zdGVhZCBvZiBhbgorICAgZXJyb3IuICovCisKK3RpbWVfdCBDdXJsX2dldGRhdGVfY2FwcGVkKGNvbnN0IGNoYXIgKnApOworCiAjZW5kaWYgLyogSEVBREVSX0NVUkxfUEFSU0VEQVRFX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Bpbmdwb25nLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9waW5ncG9uZy5jCmluZGV4IGU5NTY4ZWUuLmQwNzEwMDUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Bpbmdwb25nLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvcGluZ3BvbmcuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE4LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNjAsMTIgKzYwLDEyIEBACiAgIC8qIFdpdGhvdXQgYSByZXF1ZXN0ZWQgdGltZW91dCwgd2Ugb25seSB3YWl0ICdyZXNwb25zZV90aW1lJyBzZWNvbmRzIGZvciB0aGUKICAgICAgZnVsbCByZXNwb25zZSB0byBhcnJpdmUgYmVmb3JlIHdlIGJhaWwgb3V0ICovCiAgIHRpbWVvdXRfbXMgPSByZXNwb25zZV90aW1lIC0KLSAgICBDdXJsX3RpbWVkaWZmKEN1cmxfbm93KCksIHBwLT5yZXNwb25zZSk7IC8qIHNwZW50IHRpbWUgKi8KKyAgICAodGltZV90KUN1cmxfdGltZWRpZmYoQ3VybF9ub3coKSwgcHAtPnJlc3BvbnNlKTsgLyogc3BlbnQgdGltZSAqLwogCiAgIGlmKGRhdGEtPnNldC50aW1lb3V0ICYmICFkaXNjb25uZWN0aW5nKSB7CiAgICAgLyogaWYgdGltZW91dCBpcyByZXF1ZXN0ZWQsIGZpbmQgb3V0IGhvdyBtdWNoIHJlbWFpbmluZyB0aW1lIHdlIGhhdmUgKi8KICAgICB0aW1lX3QgdGltZW91dDJfbXMgPSBkYXRhLT5zZXQudGltZW91dCAtIC8qIHRpbWVvdXQgdGltZSAqLwotICAgICAgQ3VybF90aW1lZGlmZihDdXJsX25vdygpLCBjb25uLT5ub3cpOyAvKiBzcGVudCB0aW1lICovCisgICAgICAodGltZV90KUN1cmxfdGltZWRpZmYoQ3VybF9ub3coKSwgY29ubi0+bm93KTsgLyogc3BlbnQgdGltZSAqLwogCiAgICAgLyogcGljayB0aGUgbG93ZXN0IG51bWJlciAqLwogICAgIHRpbWVvdXRfbXMgPSBDVVJMTUlOKHRpbWVvdXRfbXMsIHRpbWVvdXQyX21zKTsKQEAgLTQ2MywxNCArNDYzLDkgQEAKIH0KIAogaW50IEN1cmxfcHBfZ2V0c29jayhzdHJ1Y3QgcGluZ3BvbmcgKnBwLAotICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKQorICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcykKIHsKICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gcHAtPmNvbm47Ci0KLSAgaWYoIW51bXNvY2tzKQotICAgIHJldHVybiBHRVRTT0NLX0JMQU5LOwotCiAgIHNvY2tzWzBdID0gY29ubi0+c29ja1tGSVJTVFNPQ0tFVF07CiAKICAgaWYocHAtPnNlbmRsZWZ0KSB7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9waW5ncG9uZy5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvcGluZ3BvbmcuaAppbmRleCBkYmUxZjhkLi44NDlhN2MwIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9waW5ncG9uZy5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Bpbmdwb25nLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTEzNSw4ICsxMzUsNyBAQAogLyogY2FsbCB0aGlzIHdoZW4gYSBwaW5ncG9uZyBjb25uZWN0aW9uIGlzIGRpc2Nvbm5lY3RlZCAqLwogQ1VSTGNvZGUgQ3VybF9wcF9kaXNjb25uZWN0KHN0cnVjdCBwaW5ncG9uZyAqcHApOwogCi1pbnQgQ3VybF9wcF9nZXRzb2NrKHN0cnVjdCBwaW5ncG9uZyAqcHAsIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpOworaW50IEN1cmxfcHBfZ2V0c29jayhzdHJ1Y3QgcGluZ3BvbmcgKnBwLCBjdXJsX3NvY2tldF90ICpzb2Nrcyk7CiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9wb3AzLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9wb3AzLmMKaW5kZXggYzhmMzk2NS4uNTdjMTM3MyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvcG9wMy5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3BvcDMuYwpAQCAtOTUsOCArOTUsNyBAQAogc3RhdGljIENVUkxjb2RlIHBvcDNfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpOwogc3RhdGljIENVUkxjb2RlIHBvcDNfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZCk7CiBzdGF0aWMgQ1VSTGNvZGUgcG9wM19tdWx0aV9zdGF0ZW1hY2goc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKTsKLXN0YXRpYyBpbnQgcG9wM19nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpOworc3RhdGljIGludCBwb3AzX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2Nrcyk7CiBzdGF0aWMgQ1VSTGNvZGUgcG9wM19kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvcGhhc2VfZG9uZSk7CiBzdGF0aWMgQ1VSTGNvZGUgcG9wM19zZXR1cF9jb25uZWN0aW9uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiBzdGF0aWMgQ1VSTGNvZGUgcG9wM19wYXJzZV91cmxfb3B0aW9ucyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwpAQCAtMzM5LDEwICszMzgsOCBAQAogICovCiBzdGF0aWMgQ1VSTGNvZGUgcG9wM19wZXJmb3JtX3N0YXJ0dGxzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKIHsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0KICAgLyogU2VuZCB0aGUgU1RMUyBjb21tYW5kICovCi0gIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnBvcDNjLnBwLCAiJXMiLCAiU1RMUyIpOworICBDVVJMY29kZSByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5wb3AzYy5wcCwgIiVzIiwgIlNUTFMiKTsKIAogICBpZighcmVzdWx0KQogICAgIHN0YXRlKGNvbm4sIFBPUDNfU1RBUlRUTFMpOwpAQCAtMzU4LDExICszNTUsMTAgQEAKICAqLwogc3RhdGljIENVUkxjb2RlIHBvcDNfcGVyZm9ybV91cGdyYWRlX3RscyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotICBzdHJ1Y3QgcG9wM19jb25uICpwb3AzYyA9ICZjb25uLT5wcm90by5wb3AzYzsKLQogICAvKiBTdGFydCB0aGUgU1NMIGNvbm5lY3Rpb24gKi8KLSAgcmVzdWx0ID0gQ3VybF9zc2xfY29ubmVjdF9ub25ibG9ja2luZyhjb25uLCBGSVJTVFNPQ0tFVCwgJnBvcDNjLT5zc2xkb25lKTsKKyAgc3RydWN0IHBvcDNfY29ubiAqcG9wM2MgPSAmY29ubi0+cHJvdG8ucG9wM2M7CisgIENVUkxjb2RlIHJlc3VsdCA9IEN1cmxfc3NsX2Nvbm5lY3Rfbm9uYmxvY2tpbmcoY29ubiwgRklSU1RTT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBvcDNjLT5zc2xkb25lKTsKIAogICBpZighcmVzdWx0KSB7CiAgICAgaWYocG9wM2MtPnN0YXRlICE9IFBPUDNfVVBHUkFERVRMUykKQEAgLTU5MywxMCArNTg5LDggQEAKICAqLwogc3RhdGljIENVUkxjb2RlIHBvcDNfcGVyZm9ybV9xdWl0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKIHsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0KICAgLyogU2VuZCB0aGUgUVVJVCBjb21tYW5kICovCi0gIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnBvcDNjLnBwLCAiJXMiLCAiUVVJVCIpOworICBDVVJMY29kZSByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5wb3AzYy5wcCwgIiVzIiwgIlFVSVQiKTsKIAogICBpZighcmVzdWx0KQogICAgIHN0YXRlKGNvbm4sIFBPUDNfUVVJVCk7CkBAIC0xMDYwLDEwICsxMDU0LDkgQEAKIH0KIAogLyogRm9yIHRoZSBQT1AzICJwcm90b2NvbCBjb25uZWN0IiBhbmQgImRvaW5nIiBwaGFzZXMgb25seSAqLwotc3RhdGljIGludCBwb3AzX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKK3N0YXRpYyBpbnQgcG9wM19nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MpCiB7Ci0gIHJldHVybiBDdXJsX3BwX2dldHNvY2soJmNvbm4tPnByb3RvLnBvcDNjLnBwLCBzb2NrcywgbnVtc29ja3MpOworICByZXR1cm4gQ3VybF9wcF9nZXRzb2NrKCZjb25uLT5wcm90by5wb3AzYy5wcCwgc29ja3MpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3BvcDMuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3BvcDMuaAppbmRleCBhOGU2OTdjLi4zYmE3OTk5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9wb3AzLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvcG9wMy5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAwOSAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9wcm9ncmVzcy5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvcHJvZ3Jlc3MuYwppbmRleCBmNTg2ZDU5Li42MGE5NDFhIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9wcm9ncmVzcy5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Byb2dyZXNzLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJzZW5kZi5oIgogI2luY2x1ZGUgIm11bHRpaWYuaCIKICNpbmNsdWRlICJwcm9ncmVzcy5oIgorI2luY2x1ZGUgInRpbWV2YWwuaCIKICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogCiAvKiBjaGVjayByYXRlIGxpbWl0cyB3aXRoaW4gdGhpcyBtYW55IHJlY2VudCBtaWxsaXNlY29uZHMsIGF0IG1pbmltdW0uICovCkBAIC0xNjgsNyArMTY5LDcgQEAKIHZvaWQgQ3VybF9wZ3JzVGltZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCB0aW1lcmlkIHRpbWVyKQogewogICBzdHJ1Y3QgY3VybHRpbWUgbm93ID0gQ3VybF9ub3coKTsKLSAgdGltZV90ICpkZWx0YSA9IE5VTEw7CisgIHRpbWVkaWZmX3QgKmRlbHRhID0gTlVMTDsKIAogICBzd2l0Y2godGltZXIpIHsKICAgZGVmYXVsdDoKQEAgLTIzOCw2ICsyMzksOCBAQAogICBkYXRhLT5wcm9ncmVzcy51bF9saW1pdF9zdGFydC50dl91c2VjID0gMDsKICAgZGF0YS0+cHJvZ3Jlc3MuZGxfbGltaXRfc3RhcnQudHZfc2VjID0gMDsKICAgZGF0YS0+cHJvZ3Jlc3MuZGxfbGltaXRfc3RhcnQudHZfdXNlYyA9IDA7CisgIGRhdGEtPnByb2dyZXNzLmRvd25sb2FkZWQgPSAwOworICBkYXRhLT5wcm9ncmVzcy51cGxvYWRlZCA9IDA7CiAgIC8qIGNsZWFyIGFsbCBiaXRzIGV4Y2VwdCBISURFIGFuZCBIRUFERVJTX09VVCAqLwogICBkYXRhLT5wcm9ncmVzcy5mbGFncyAmPSBQR1JTX0hJREV8UEdSU19IRUFERVJTX09VVDsKICAgQ3VybF9yYXRlbGltaXQoZGF0YSwgZGF0YS0+cHJvZ3Jlc3Muc3RhcnQpOwpAQCAtMjY4LDggKzI3MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGN1cmx0aW1lIG5vdykKIHsKICAgY3VybF9vZmZfdCBzaXplID0gY3Vyc2l6ZSAtIHN0YXJ0c2l6ZTsKLSAgdGltZV90IG1pbmltdW07Ci0gIHRpbWVfdCBhY3R1YWw7CisgIHRpbWVkaWZmX3QgbWluaW11bTsKKyAgdGltZWRpZmZfdCBhY3R1YWw7CiAKICAgaWYoIWxpbWl0IHx8ICFzaXplKQogICAgIHJldHVybiAwOwpAQCAtMjgyLDEwICsyODUsMTAgQEAKICAgICBtaW5pbXVtID0gKHRpbWVfdCkgKENVUkxfT0ZGX1RfQygxMDAwKSAqIHNpemUgLyBsaW1pdCk7CiAgIGVsc2UgewogICAgIG1pbmltdW0gPSAodGltZV90KSAoc2l6ZSAvIGxpbWl0KTsKLSAgICBpZihtaW5pbXVtIDwgVElNRV9UX01BWC8xMDAwKQorICAgIGlmKG1pbmltdW0gPCBUSU1FRElGRl9UX01BWC8xMDAwKQogICAgICAgbWluaW11bSAqPSAxMDAwOwogICAgIGVsc2UKLSAgICAgIG1pbmltdW0gPSBUSU1FX1RfTUFYOworICAgICAgbWluaW11bSA9IFRJTUVESUZGX1RfTUFYOwogICB9CiAKICAgLyoKQEAgLTM2NCwxOCArMzY3LDE1IEBACiAgIH0KIH0KIAotI2lmbmRlZiBDVVJMX0RJU0FCTEVfUFJPR1JFU1NfTUVURVIKLXN0YXRpYyB2b2lkIHByb2dyZXNzX21ldGVyKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKKy8qIHJldHVybnMgVFJVRSBpZiBpdCdzIHRpbWUgdG8gc2hvdyB0aGUgcHJvZ3Jlc3MgbWV0ZXIgKi8KK3N0YXRpYyBib29sIHByb2dyZXNzX2NhbGMoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBzdHJ1Y3QgY3VybHRpbWUgbm93KQogewotICBzdHJ1Y3QgY3VybHRpbWUgbm93OwogICBjdXJsX29mZl90IHRpbWVzcGVudDsKICAgY3VybF9vZmZfdCB0aW1lc3BlbnRfbXM7IC8qIG1pbGxpc2Vjb25kcyAqLwogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgYm9vbCBzaG93bm93ID0gRkFMU0U7CiAgIGN1cmxfb2ZmX3QgZGwgPSBkYXRhLT5wcm9ncmVzcy5kb3dubG9hZGVkOwogICBjdXJsX29mZl90IHVsID0gZGF0YS0+cHJvZ3Jlc3MudXBsb2FkZWQ7Ci0KLSAgbm93ID0gQ3VybF9ub3coKTsgLyogd2hhdCB0aW1lIGlzIGl0ICovCisgIGJvb2wgdGltZXRvc2hvdyA9IEZBTFNFOwogCiAgIC8qIFRoZSB0aW1lIHNwZW50IHNvIGZhciAoZnJvbSB0aGUgc3RhcnQpICovCiAgIGRhdGEtPnByb2dyZXNzLnRpbWVzcGVudCA9IEN1cmxfdGltZWRpZmZfdXMobm93LCBkYXRhLT5wcm9ncmVzcy5zdGFydCk7CkBAIC0zOTgsMTAgKzM5OCw4IEBACiAgIGlmKGRhdGEtPnByb2dyZXNzLmxhc3RzaG93ICE9IG5vdy50dl9zZWMpIHsKICAgICBpbnQgY291bnRpbmRleDsgLyogYW1vdW50IG9mIHNlY29uZHMgc3RvcmVkIGluIHRoZSBzcGVlZGVyIGFycmF5ICovCiAgICAgaW50IG5vd2luZGV4ID0gZGF0YS0+cHJvZ3Jlc3Muc3BlZWRlcl9jJSBDVVJSX1RJTUU7Ci0gICAgaWYoIShkYXRhLT5wcm9ncmVzcy5mbGFncyAmIFBHUlNfSElERSkpCi0gICAgICBzaG93bm93ID0gVFJVRTsKLQogICAgIGRhdGEtPnByb2dyZXNzLmxhc3RzaG93ID0gbm93LnR2X3NlYzsKKyAgICB0aW1ldG9zaG93ID0gVFJVRTsKIAogICAgIC8qIExldCdzIGRvIHRoZSAiY3VycmVudCBzcGVlZCIgdGhpbmcsIHdpdGggdGhlIGRsICsgdWwgc3BlZWRzCiAgICAgICAgY29tYmluZWQuIFN0b3JlIHRoZSBzcGVlZCBhdCBlbnRyeSAnbm93aW5kZXgnLiAqLwpAQCAtNDM0LDggKzQzMiw3IEBACiAgICAgICAgIGRhdGEtPnByb2dyZXNzLnNwZWVkZXJfYyVDVVJSX1RJTUU6MDsKIAogICAgICAgLyogRmlndXJlIG91dCB0aGUgZXhhY3QgdGltZSBmb3IgdGhlIHRpbWUgc3BhbiAqLwotICAgICAgc3Bhbl9tcyA9IEN1cmxfdGltZWRpZmYobm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+cHJvZ3Jlc3Muc3BlZWRlcl90aW1lW2NoZWNraW5kZXhdKTsKKyAgICAgIHNwYW5fbXMgPSBDdXJsX3RpbWVkaWZmKG5vdywgZGF0YS0+cHJvZ3Jlc3Muc3BlZWRlcl90aW1lW2NoZWNraW5kZXhdKTsKICAgICAgIGlmKDAgPT0gc3Bhbl9tcykKICAgICAgICAgc3Bhbl9tcyA9IDE7IC8qIGF0IGxlYXN0IG9uZSBtaWxsaXNlY29uZCBNVVNUIGhhdmUgcGFzc2VkICovCiAKQEAgLTQ2MSwxMTggKzQ1OCwxMTkgQEAKICAgICAgICAgZGF0YS0+cHJvZ3Jlc3MudWxzcGVlZCArIGRhdGEtPnByb2dyZXNzLmRsc3BlZWQ7CiAKICAgfSAvKiBDYWxjdWxhdGlvbnMgZW5kICovCi0gIGlmKCFzaG93bm93KQotICAgIC8qIG9ubHkgc2hvdyB0aGUgaW50ZXJuYWwgcHJvZ3Jlc3MgbWV0ZXIgb25jZSBwZXIgc2Vjb25kICovCi0gICAgcmV0dXJuOwotICBlbHNlIHsKLSAgICAvKiBJZiB0aGVyZSdzIG5vIGV4dGVybmFsIGNhbGxiYWNrIHNldCwgdXNlIGludGVybmFsIGNvZGUgdG8gc2hvdwotICAgICAgIHByb2dyZXNzICovCi0gICAgLyogcHJvZ3Jlc3MgbWV0ZXIgaGFzIG5vdCBiZWVuIHNodXQgb2ZmICovCi0gICAgY2hhciBtYXg1WzZdWzEwXTsKLSAgICBjdXJsX29mZl90IGRscGVyY2VuID0gMDsKLSAgICBjdXJsX29mZl90IHVscGVyY2VuID0gMDsKLSAgICBjdXJsX29mZl90IHRvdGFsX3BlcmNlbiA9IDA7Ci0gICAgY3VybF9vZmZfdCB0b3RhbF90cmFuc2ZlcjsKLSAgICBjdXJsX29mZl90IHRvdGFsX2V4cGVjdGVkX3RyYW5zZmVyOwotICAgIGNoYXIgdGltZV9sZWZ0WzEwXTsKLSAgICBjaGFyIHRpbWVfdG90YWxbMTBdOwotICAgIGNoYXIgdGltZV9zcGVudFsxMF07Ci0gICAgY3VybF9vZmZfdCB1bGVzdGltYXRlID0gMDsKLSAgICBjdXJsX29mZl90IGRsZXN0aW1hdGUgPSAwOwotICAgIGN1cmxfb2ZmX3QgdG90YWxfZXN0aW1hdGU7CisgIHJldHVybiB0aW1ldG9zaG93OworfQogCi0gICAgaWYoIShkYXRhLT5wcm9ncmVzcy5mbGFncyAmIFBHUlNfSEVBREVSU19PVVQpKSB7Ci0gICAgICBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSkgewotICAgICAgICBmcHJpbnRmKGRhdGEtPnNldC5lcnIsCi0gICAgICAgICAgICAgICAgIioqIFJlc3VtaW5nIHRyYW5zZmVyIGZyb20gYnl0ZSBwb3NpdGlvbiAlIgotICAgICAgICAgICAgICAgIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIlxuIiwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pOwotICAgICAgfQorI2lmbmRlZiBDVVJMX0RJU0FCTEVfUFJPR1JFU1NfTUVURVIKK3N0YXRpYyB2b2lkIHByb2dyZXNzX21ldGVyKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK3sKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIGNoYXIgbWF4NVs2XVsxMF07CisgIGN1cmxfb2ZmX3QgZGxwZXJjZW4gPSAwOworICBjdXJsX29mZl90IHVscGVyY2VuID0gMDsKKyAgY3VybF9vZmZfdCB0b3RhbF9wZXJjZW4gPSAwOworICBjdXJsX29mZl90IHRvdGFsX3RyYW5zZmVyOworICBjdXJsX29mZl90IHRvdGFsX2V4cGVjdGVkX3RyYW5zZmVyOworICBjaGFyIHRpbWVfbGVmdFsxMF07CisgIGNoYXIgdGltZV90b3RhbFsxMF07CisgIGNoYXIgdGltZV9zcGVudFsxMF07CisgIGN1cmxfb2ZmX3QgdWxlc3RpbWF0ZSA9IDA7CisgIGN1cmxfb2ZmX3QgZGxlc3RpbWF0ZSA9IDA7CisgIGN1cmxfb2ZmX3QgdG90YWxfZXN0aW1hdGU7CisgIGN1cmxfb2ZmX3QgdGltZXNwZW50ID0KKyAgICAoY3VybF9vZmZfdClkYXRhLT5wcm9ncmVzcy50aW1lc3BlbnQvMTAwMDAwMDsgLyogc2Vjb25kcyAqLworCisgIGlmKCEoZGF0YS0+cHJvZ3Jlc3MuZmxhZ3MgJiBQR1JTX0hFQURFUlNfT1VUKSkgeworICAgIGlmKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tKSB7CiAgICAgICBmcHJpbnRmKGRhdGEtPnNldC5lcnIsCi0gICAgICAgICAgICAgICIgICUlIFRvdGFsICAgICUlIFJlY2VpdmVkICUlIFhmZXJkICBBdmVyYWdlIFNwZWVkICAgIgotICAgICAgICAgICAgICAiVGltZSAgICBUaW1lICAgICBUaW1lICBDdXJyZW50XG4iCi0gICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEbG9hZCAgVXBsb2FkICAgIgotICAgICAgICAgICAgICAiVG90YWwgICBTcGVudCAgICBMZWZ0ICBTcGVlZFxuIik7Ci0gICAgICBkYXRhLT5wcm9ncmVzcy5mbGFncyB8PSBQR1JTX0hFQURFUlNfT1VUOyAvKiBoZWFkZXJzIGFyZSBzaG93biAqLworICAgICAgICAgICAgICAiKiogUmVzdW1pbmcgdHJhbnNmZXIgZnJvbSBieXRlIHBvc2l0aW9uICUiCisgICAgICAgICAgICAgIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIlxuIiwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pOwogICAgIH0KLQotICAgIC8qIEZpZ3VyZSBvdXQgdGhlIGVzdGltYXRlZCB0aW1lIG9mIGFycml2YWwgZm9yIHRoZSB1cGxvYWQgKi8KLSAgICBpZigoZGF0YS0+cHJvZ3Jlc3MuZmxhZ3MgJiBQR1JTX1VMX1NJWkVfS05PV04pICYmCi0gICAgICAgKGRhdGEtPnByb2dyZXNzLnVsc3BlZWQgPiBDVVJMX09GRl9UX0MoMCkpKSB7Ci0gICAgICB1bGVzdGltYXRlID0gZGF0YS0+cHJvZ3Jlc3Muc2l6ZV91bCAvIGRhdGEtPnByb2dyZXNzLnVsc3BlZWQ7Ci0KLSAgICAgIGlmKGRhdGEtPnByb2dyZXNzLnNpemVfdWwgPiBDVVJMX09GRl9UX0MoMTAwMDApKQotICAgICAgICB1bHBlcmNlbiA9IGRhdGEtPnByb2dyZXNzLnVwbG9hZGVkIC8KLSAgICAgICAgICAoZGF0YS0+cHJvZ3Jlc3Muc2l6ZV91bC9DVVJMX09GRl9UX0MoMTAwKSk7Ci0gICAgICBlbHNlIGlmKGRhdGEtPnByb2dyZXNzLnNpemVfdWwgPiBDVVJMX09GRl9UX0MoMCkpCi0gICAgICAgIHVscGVyY2VuID0gKGRhdGEtPnByb2dyZXNzLnVwbG9hZGVkKjEwMCkgLwotICAgICAgICAgIGRhdGEtPnByb2dyZXNzLnNpemVfdWw7Ci0gICAgfQotCi0gICAgLyogLi4uIGFuZCB0aGUgZG93bmxvYWQgKi8KLSAgICBpZigoZGF0YS0+cHJvZ3Jlc3MuZmxhZ3MgJiBQR1JTX0RMX1NJWkVfS05PV04pICYmCi0gICAgICAgKGRhdGEtPnByb2dyZXNzLmRsc3BlZWQgPiBDVVJMX09GRl9UX0MoMCkpKSB7Ci0gICAgICBkbGVzdGltYXRlID0gZGF0YS0+cHJvZ3Jlc3Muc2l6ZV9kbCAvIGRhdGEtPnByb2dyZXNzLmRsc3BlZWQ7Ci0KLSAgICAgIGlmKGRhdGEtPnByb2dyZXNzLnNpemVfZGwgPiBDVVJMX09GRl9UX0MoMTAwMDApKQotICAgICAgICBkbHBlcmNlbiA9IGRhdGEtPnByb2dyZXNzLmRvd25sb2FkZWQgLwotICAgICAgICAgIChkYXRhLT5wcm9ncmVzcy5zaXplX2RsL0NVUkxfT0ZGX1RfQygxMDApKTsKLSAgICAgIGVsc2UgaWYoZGF0YS0+cHJvZ3Jlc3Muc2l6ZV9kbCA+IENVUkxfT0ZGX1RfQygwKSkKLSAgICAgICAgZGxwZXJjZW4gPSAoZGF0YS0+cHJvZ3Jlc3MuZG93bmxvYWRlZCoxMDApIC8KLSAgICAgICAgICBkYXRhLT5wcm9ncmVzcy5zaXplX2RsOwotICAgIH0KLQotICAgIC8qIE5vdyBmaWd1cmUgb3V0IHdoaWNoIG9mIHRoZW0gaXMgc2xvd2VyIGFuZCB1c2UgdGhhdCBvbmUgZm9yIHRoZQotICAgICAgIHRvdGFsIGVzdGltYXRlISAqLwotICAgIHRvdGFsX2VzdGltYXRlID0gdWxlc3RpbWF0ZT5kbGVzdGltYXRlP3VsZXN0aW1hdGU6ZGxlc3RpbWF0ZTsKLQotICAgIC8qIGNyZWF0ZSB0aGUgdGhyZWUgdGltZSBzdHJpbmdzICovCi0gICAgdGltZTJzdHIodGltZV9sZWZ0LCB0b3RhbF9lc3RpbWF0ZSA+IDA/KHRvdGFsX2VzdGltYXRlIC0gdGltZXNwZW50KTowKTsKLSAgICB0aW1lMnN0cih0aW1lX3RvdGFsLCB0b3RhbF9lc3RpbWF0ZSk7Ci0gICAgdGltZTJzdHIodGltZV9zcGVudCwgdGltZXNwZW50KTsKLQotICAgIC8qIEdldCB0aGUgdG90YWwgYW1vdW50IG9mIGRhdGEgZXhwZWN0ZWQgdG8gZ2V0IHRyYW5zZmVycmVkICovCi0gICAgdG90YWxfZXhwZWN0ZWRfdHJhbnNmZXIgPQotICAgICAgKChkYXRhLT5wcm9ncmVzcy5mbGFncyAmIFBHUlNfVUxfU0laRV9LTk9XTik/Ci0gICAgICAgZGF0YS0+cHJvZ3Jlc3Muc2l6ZV91bDpkYXRhLT5wcm9ncmVzcy51cGxvYWRlZCkrCi0gICAgICAoKGRhdGEtPnByb2dyZXNzLmZsYWdzICYgUEdSU19ETF9TSVpFX0tOT1dOKT8KLSAgICAgICBkYXRhLT5wcm9ncmVzcy5zaXplX2RsOmRhdGEtPnByb2dyZXNzLmRvd25sb2FkZWQpOwotCi0gICAgLyogV2UgaGF2ZSB0cmFuc2ZlcnJlZCB0aGlzIG11Y2ggc28gZmFyICovCi0gICAgdG90YWxfdHJhbnNmZXIgPSBkYXRhLT5wcm9ncmVzcy5kb3dubG9hZGVkICsgZGF0YS0+cHJvZ3Jlc3MudXBsb2FkZWQ7Ci0KLSAgICAvKiBHZXQgdGhlIHBlcmNlbnRhZ2Ugb2YgZGF0YSB0cmFuc2ZlcnJlZCBzbyBmYXIgKi8KLSAgICBpZih0b3RhbF9leHBlY3RlZF90cmFuc2ZlciA+IENVUkxfT0ZGX1RfQygxMDAwMCkpCi0gICAgICB0b3RhbF9wZXJjZW4gPSB0b3RhbF90cmFuc2ZlciAvCi0gICAgICAgICh0b3RhbF9leHBlY3RlZF90cmFuc2Zlci9DVVJMX09GRl9UX0MoMTAwKSk7Ci0gICAgZWxzZSBpZih0b3RhbF9leHBlY3RlZF90cmFuc2ZlciA+IENVUkxfT0ZGX1RfQygwKSkKLSAgICAgIHRvdGFsX3BlcmNlbiA9ICh0b3RhbF90cmFuc2ZlcioxMDApIC8gdG90YWxfZXhwZWN0ZWRfdHJhbnNmZXI7Ci0KICAgICBmcHJpbnRmKGRhdGEtPnNldC5lcnIsCi0gICAgICAgICAgICAiXHIiCi0gICAgICAgICAgICAiJTMiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIiAlcyAgIgotICAgICAgICAgICAgIiUzIiBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIgJXMgICIKLSAgICAgICAgICAgICIlMyIgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiICVzICAlcyAgJXMgJXMgJXMgJXMgJXMiLAotICAgICAgICAgICAgdG90YWxfcGVyY2VuLCAgLyogMyBsZXR0ZXJzICovICAgICAgICAgICAgICAgIC8qIHRvdGFsICUgKi8KLSAgICAgICAgICAgIG1heDVkYXRhKHRvdGFsX2V4cGVjdGVkX3RyYW5zZmVyLCBtYXg1WzJdKSwgICAvKiB0b3RhbCBzaXplICovCi0gICAgICAgICAgICBkbHBlcmNlbiwgICAgICAvKiAzIGxldHRlcnMgKi8gICAgICAgICAgICAgICAgLyogcmN2ZCAlICovCi0gICAgICAgICAgICBtYXg1ZGF0YShkYXRhLT5wcm9ncmVzcy5kb3dubG9hZGVkLCBtYXg1WzBdKSwgLyogcmN2ZCBzaXplICovCi0gICAgICAgICAgICB1bHBlcmNlbiwgICAgICAvKiAzIGxldHRlcnMgKi8gICAgICAgICAgICAgICAgLyogeGZlciAlICovCi0gICAgICAgICAgICBtYXg1ZGF0YShkYXRhLT5wcm9ncmVzcy51cGxvYWRlZCwgbWF4NVsxXSksICAgLyogeGZlciBzaXplICovCi0gICAgICAgICAgICBtYXg1ZGF0YShkYXRhLT5wcm9ncmVzcy5kbHNwZWVkLCBtYXg1WzNdKSwgICAgLyogYXZyZyBkbCBzcGVlZCAqLwotICAgICAgICAgICAgbWF4NWRhdGEoZGF0YS0+cHJvZ3Jlc3MudWxzcGVlZCwgbWF4NVs0XSksICAgIC8qIGF2cmcgdWwgc3BlZWQgKi8KLSAgICAgICAgICAgIHRpbWVfdG90YWwsICAgIC8qIDggbGV0dGVycyAqLyAgICAgICAgICAgICAgICAvKiB0b3RhbCB0aW1lICovCi0gICAgICAgICAgICB0aW1lX3NwZW50LCAgICAvKiA4IGxldHRlcnMgKi8gICAgICAgICAgICAgICAgLyogdGltZSBzcGVudCAqLwotICAgICAgICAgICAgdGltZV9sZWZ0LCAgICAgLyogOCBsZXR0ZXJzICovICAgICAgICAgICAgICAgIC8qIHRpbWUgbGVmdCAqLwotICAgICAgICAgICAgbWF4NWRhdGEoZGF0YS0+cHJvZ3Jlc3MuY3VycmVudF9zcGVlZCwgbWF4NVs1XSkKLSAgICAgICk7CisgICAgICAgICAgICAiICAlJSBUb3RhbCAgICAlJSBSZWNlaXZlZCAlJSBYZmVyZCAgQXZlcmFnZSBTcGVlZCAgICIKKyAgICAgICAgICAgICJUaW1lICAgIFRpbWUgICAgIFRpbWUgIEN1cnJlbnRcbiIKKyAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEbG9hZCAgVXBsb2FkICAgIgorICAgICAgICAgICAgIlRvdGFsICAgU3BlbnQgICAgTGVmdCAgU3BlZWRcbiIpOworICAgIGRhdGEtPnByb2dyZXNzLmZsYWdzIHw9IFBHUlNfSEVBREVSU19PVVQ7IC8qIGhlYWRlcnMgYXJlIHNob3duICovCisgIH0KIAotICAgIC8qIHdlIGZsdXNoIHRoZSBvdXRwdXQgc3RyZWFtIHRvIG1ha2UgaXQgYXBwZWFyIGFzIHNvb24gYXMgcG9zc2libGUgKi8KLSAgICBmZmx1c2goZGF0YS0+c2V0LmVycik7Ci0gIH0gLyogZG9uJ3Qgc2hvdyBub3cgKi8KKyAgLyogRmlndXJlIG91dCB0aGUgZXN0aW1hdGVkIHRpbWUgb2YgYXJyaXZhbCBmb3IgdGhlIHVwbG9hZCAqLworICBpZigoZGF0YS0+cHJvZ3Jlc3MuZmxhZ3MgJiBQR1JTX1VMX1NJWkVfS05PV04pICYmCisgICAgIChkYXRhLT5wcm9ncmVzcy51bHNwZWVkID4gQ1VSTF9PRkZfVF9DKDApKSkgeworICAgIHVsZXN0aW1hdGUgPSBkYXRhLT5wcm9ncmVzcy5zaXplX3VsIC8gZGF0YS0+cHJvZ3Jlc3MudWxzcGVlZDsKKworICAgIGlmKGRhdGEtPnByb2dyZXNzLnNpemVfdWwgPiBDVVJMX09GRl9UX0MoMTAwMDApKQorICAgICAgdWxwZXJjZW4gPSBkYXRhLT5wcm9ncmVzcy51cGxvYWRlZCAvCisgICAgICAgIChkYXRhLT5wcm9ncmVzcy5zaXplX3VsL0NVUkxfT0ZGX1RfQygxMDApKTsKKyAgICBlbHNlIGlmKGRhdGEtPnByb2dyZXNzLnNpemVfdWwgPiBDVVJMX09GRl9UX0MoMCkpCisgICAgICB1bHBlcmNlbiA9IChkYXRhLT5wcm9ncmVzcy51cGxvYWRlZCoxMDApIC8KKyAgICAgICAgZGF0YS0+cHJvZ3Jlc3Muc2l6ZV91bDsKKyAgfQorCisgIC8qIC4uLiBhbmQgdGhlIGRvd25sb2FkICovCisgIGlmKChkYXRhLT5wcm9ncmVzcy5mbGFncyAmIFBHUlNfRExfU0laRV9LTk9XTikgJiYKKyAgICAgKGRhdGEtPnByb2dyZXNzLmRsc3BlZWQgPiBDVVJMX09GRl9UX0MoMCkpKSB7CisgICAgZGxlc3RpbWF0ZSA9IGRhdGEtPnByb2dyZXNzLnNpemVfZGwgLyBkYXRhLT5wcm9ncmVzcy5kbHNwZWVkOworCisgICAgaWYoZGF0YS0+cHJvZ3Jlc3Muc2l6ZV9kbCA+IENVUkxfT0ZGX1RfQygxMDAwMCkpCisgICAgICBkbHBlcmNlbiA9IGRhdGEtPnByb2dyZXNzLmRvd25sb2FkZWQgLworICAgICAgICAoZGF0YS0+cHJvZ3Jlc3Muc2l6ZV9kbC9DVVJMX09GRl9UX0MoMTAwKSk7CisgICAgZWxzZSBpZihkYXRhLT5wcm9ncmVzcy5zaXplX2RsID4gQ1VSTF9PRkZfVF9DKDApKQorICAgICAgZGxwZXJjZW4gPSAoZGF0YS0+cHJvZ3Jlc3MuZG93bmxvYWRlZCoxMDApIC8KKyAgICAgICAgZGF0YS0+cHJvZ3Jlc3Muc2l6ZV9kbDsKKyAgfQorCisgIC8qIE5vdyBmaWd1cmUgb3V0IHdoaWNoIG9mIHRoZW0gaXMgc2xvd2VyIGFuZCB1c2UgdGhhdCBvbmUgZm9yIHRoZQorICAgICB0b3RhbCBlc3RpbWF0ZSEgKi8KKyAgdG90YWxfZXN0aW1hdGUgPSB1bGVzdGltYXRlPmRsZXN0aW1hdGU/dWxlc3RpbWF0ZTpkbGVzdGltYXRlOworCisgIC8qIGNyZWF0ZSB0aGUgdGhyZWUgdGltZSBzdHJpbmdzICovCisgIHRpbWUyc3RyKHRpbWVfbGVmdCwgdG90YWxfZXN0aW1hdGUgPiAwPyh0b3RhbF9lc3RpbWF0ZSAtIHRpbWVzcGVudCk6MCk7CisgIHRpbWUyc3RyKHRpbWVfdG90YWwsIHRvdGFsX2VzdGltYXRlKTsKKyAgdGltZTJzdHIodGltZV9zcGVudCwgdGltZXNwZW50KTsKKworICAvKiBHZXQgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhIGV4cGVjdGVkIHRvIGdldCB0cmFuc2ZlcnJlZCAqLworICB0b3RhbF9leHBlY3RlZF90cmFuc2ZlciA9CisgICAgKChkYXRhLT5wcm9ncmVzcy5mbGFncyAmIFBHUlNfVUxfU0laRV9LTk9XTik/CisgICAgIGRhdGEtPnByb2dyZXNzLnNpemVfdWw6ZGF0YS0+cHJvZ3Jlc3MudXBsb2FkZWQpKworICAgICgoZGF0YS0+cHJvZ3Jlc3MuZmxhZ3MgJiBQR1JTX0RMX1NJWkVfS05PV04pPworICAgICBkYXRhLT5wcm9ncmVzcy5zaXplX2RsOmRhdGEtPnByb2dyZXNzLmRvd25sb2FkZWQpOworCisgIC8qIFdlIGhhdmUgdHJhbnNmZXJyZWQgdGhpcyBtdWNoIHNvIGZhciAqLworICB0b3RhbF90cmFuc2ZlciA9IGRhdGEtPnByb2dyZXNzLmRvd25sb2FkZWQgKyBkYXRhLT5wcm9ncmVzcy51cGxvYWRlZDsKKworICAvKiBHZXQgdGhlIHBlcmNlbnRhZ2Ugb2YgZGF0YSB0cmFuc2ZlcnJlZCBzbyBmYXIgKi8KKyAgaWYodG90YWxfZXhwZWN0ZWRfdHJhbnNmZXIgPiBDVVJMX09GRl9UX0MoMTAwMDApKQorICAgIHRvdGFsX3BlcmNlbiA9IHRvdGFsX3RyYW5zZmVyIC8KKyAgICAgICh0b3RhbF9leHBlY3RlZF90cmFuc2Zlci9DVVJMX09GRl9UX0MoMTAwKSk7CisgIGVsc2UgaWYodG90YWxfZXhwZWN0ZWRfdHJhbnNmZXIgPiBDVVJMX09GRl9UX0MoMCkpCisgICAgdG90YWxfcGVyY2VuID0gKHRvdGFsX3RyYW5zZmVyKjEwMCkgLyB0b3RhbF9leHBlY3RlZF90cmFuc2ZlcjsKKworICBmcHJpbnRmKGRhdGEtPnNldC5lcnIsCisgICAgICAgICAgIlxyIgorICAgICAgICAgICIlMyIgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiICVzICAiCisgICAgICAgICAgIiUzIiBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIgJXMgICIKKyAgICAgICAgICAiJTMiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIiAlcyAgJXMgICVzICVzICVzICVzICVzIiwKKyAgICAgICAgICB0b3RhbF9wZXJjZW4sICAvKiAzIGxldHRlcnMgKi8gICAgICAgICAgICAgICAgLyogdG90YWwgJSAqLworICAgICAgICAgIG1heDVkYXRhKHRvdGFsX2V4cGVjdGVkX3RyYW5zZmVyLCBtYXg1WzJdKSwgICAvKiB0b3RhbCBzaXplICovCisgICAgICAgICAgZGxwZXJjZW4sICAgICAgLyogMyBsZXR0ZXJzICovICAgICAgICAgICAgICAgIC8qIHJjdmQgJSAqLworICAgICAgICAgIG1heDVkYXRhKGRhdGEtPnByb2dyZXNzLmRvd25sb2FkZWQsIG1heDVbMF0pLCAvKiByY3ZkIHNpemUgKi8KKyAgICAgICAgICB1bHBlcmNlbiwgICAgICAvKiAzIGxldHRlcnMgKi8gICAgICAgICAgICAgICAgLyogeGZlciAlICovCisgICAgICAgICAgbWF4NWRhdGEoZGF0YS0+cHJvZ3Jlc3MudXBsb2FkZWQsIG1heDVbMV0pLCAgIC8qIHhmZXIgc2l6ZSAqLworICAgICAgICAgIG1heDVkYXRhKGRhdGEtPnByb2dyZXNzLmRsc3BlZWQsIG1heDVbM10pLCAgICAvKiBhdnJnIGRsIHNwZWVkICovCisgICAgICAgICAgbWF4NWRhdGEoZGF0YS0+cHJvZ3Jlc3MudWxzcGVlZCwgbWF4NVs0XSksICAgIC8qIGF2cmcgdWwgc3BlZWQgKi8KKyAgICAgICAgICB0aW1lX3RvdGFsLCAgICAvKiA4IGxldHRlcnMgKi8gICAgICAgICAgICAgICAgLyogdG90YWwgdGltZSAqLworICAgICAgICAgIHRpbWVfc3BlbnQsICAgIC8qIDggbGV0dGVycyAqLyAgICAgICAgICAgICAgICAvKiB0aW1lIHNwZW50ICovCisgICAgICAgICAgdGltZV9sZWZ0LCAgICAgLyogOCBsZXR0ZXJzICovICAgICAgICAgICAgICAgIC8qIHRpbWUgbGVmdCAqLworICAgICAgICAgIG1heDVkYXRhKGRhdGEtPnByb2dyZXNzLmN1cnJlbnRfc3BlZWQsIG1heDVbNV0pCisgICAgKTsKKworICAvKiB3ZSBmbHVzaCB0aGUgb3V0cHV0IHN0cmVhbSB0byBtYWtlIGl0IGFwcGVhciBhcyBzb29uIGFzIHBvc3NpYmxlICovCisgIGZmbHVzaChkYXRhLT5zZXQuZXJyKTsKIH0KICNlbHNlCiAgLyogcHJvZ3Jlc3MgYmFyIGRpc2FibGVkICovCi0jZGVmaW5lIHByb2dyZXNzX21ldGVyKHgpCisjZGVmaW5lIHByb2dyZXNzX21ldGVyKHgpIEN1cmxfbm9wX3N0bXQKICNlbmRpZgogCiAKQEAgLTU4Myw2ICs1ODEsOCBAQAogaW50IEN1cmxfcGdyc1VwZGF0ZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7CiAgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworICBzdHJ1Y3QgY3VybHRpbWUgbm93ID0gQ3VybF9ub3coKTsgLyogd2hhdCB0aW1lIGlzIGl0ICovCisgIGJvb2wgc2hvd3Byb2dyZXNzID0gcHJvZ3Jlc3NfY2FsYyhjb25uLCBub3cpOwogICBpZighKGRhdGEtPnByb2dyZXNzLmZsYWdzICYgUEdSU19ISURFKSkgewogICAgIGlmKGRhdGEtPnNldC5meGZlcmluZm8pIHsKICAgICAgIGludCByZXN1bHQ7CkBAIC01OTQsMTEgKzU5NCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5wcm9ncmVzcy5zaXplX3VsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5wcm9ncmVzcy51cGxvYWRlZCk7CiAgICAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCBmYWxzZSk7Ci0gICAgICBpZihyZXN1bHQpCi0gICAgICAgIGZhaWxmKGRhdGEsICJDYWxsYmFjayBhYm9ydGVkIik7Ci0gICAgICByZXR1cm4gcmVzdWx0OworICAgICAgaWYocmVzdWx0ICE9IENVUkxfUFJPR1JFU1NGVU5DX0NPTlRJTlVFKSB7CisgICAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgICBmYWlsZihkYXRhLCAiQ2FsbGJhY2sgYWJvcnRlZCIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgfQogICAgIH0KLSAgICBpZihkYXRhLT5zZXQuZnByb2dyZXNzKSB7CisgICAgZWxzZSBpZihkYXRhLT5zZXQuZnByb2dyZXNzKSB7CiAgICAgICBpbnQgcmVzdWx0OwogICAgICAgLyogVGhlIG9sZGVyIGRlcHJlY2F0ZWQgY2FsbGJhY2sgaXMgc2V0LCBjYWxsIHRoYXQgKi8KICAgICAgIEN1cmxfc2V0X2luX2NhbGxiYWNrKGRhdGEsIHRydWUpOwpAQCAtNjA4LDEyICs2MTAsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSlkYXRhLT5wcm9ncmVzcy5zaXplX3VsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWRhdGEtPnByb2dyZXNzLnVwbG9hZGVkKTsKICAgICAgIEN1cmxfc2V0X2luX2NhbGxiYWNrKGRhdGEsIGZhbHNlKTsKLSAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgZmFpbGYoZGF0YSwgIkNhbGxiYWNrIGFib3J0ZWQiKTsKLSAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICBpZihyZXN1bHQgIT0gQ1VSTF9QUk9HUkVTU0ZVTkNfQ09OVElOVUUpIHsKKyAgICAgICAgaWYocmVzdWx0KQorICAgICAgICAgIGZhaWxmKGRhdGEsICJDYWxsYmFjayBhYm9ydGVkIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICB9CiAgICAgfQorCisgICAgaWYoc2hvd3Byb2dyZXNzKQorICAgICAgcHJvZ3Jlc3NfbWV0ZXIoY29ubik7CiAgIH0KLSAgcHJvZ3Jlc3NfbWV0ZXIoY29ubik7CiAKICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9xdWljLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9xdWljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWViMjNlOQotLS0gL2Rldi9udWxsCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3F1aWMuaApAQCAtMCwwICsxLDU3IEBACisjaWZuZGVmIEhFQURFUl9DVVJMX1FVSUNfSAorI2RlZmluZSBIRUFERVJfQ1VSTF9RVUlDX0gKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmZGVmIEVOQUJMRV9RVUlDCisjaWZkZWYgVVNFX05HVENQMgorI2luY2x1ZGUgInZxdWljL25ndGNwMi5oIgorI2VuZGlmCisjaWZkZWYgVVNFX1FVSUNIRQorI2luY2x1ZGUgInZxdWljL3F1aWNoZS5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJ1cmxkYXRhLmgiCisKKy8qIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgc3BlY2lmaWMgYmFja2VuZHMgKi8KK0NVUkxjb2RlIEN1cmxfcXVpY19jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBhZGRybGVuKTsKK0NVUkxjb2RlIEN1cmxfcXVpY19pc19jb25uZWN0ZWQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90IHNvY2tmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqY29ubmVjdGVkKTsKK2ludCBDdXJsX3F1aWNfdmVyKGNoYXIgKnAsIHNpemVfdCBsZW4pOworQ1VSTGNvZGUgQ3VybF9xdWljX2RvbmVfc2VuZGluZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwordm9pZCBDdXJsX3F1aWNfZG9uZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCBib29sIHByZW1hdHVyZSk7Citib29sIEN1cmxfcXVpY19kYXRhX3BlbmRpbmcoY29uc3Qgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSk7CisKKyNlbHNlIC8qIEVOQUJMRV9RVUlDICovCisjZGVmaW5lIEN1cmxfcXVpY19kb25lX3NlbmRpbmcoeCkKKyNkZWZpbmUgQ3VybF9xdWljX2RvbmUoeCx5KQorI2RlZmluZSBDdXJsX3F1aWNfZGF0YV9wZW5kaW5nKHgpCisjZW5kaWYgLyogIUVOQUJMRV9RVUlDICovCisKKyNlbmRpZiAvKiBIRUFERVJfQ1VSTF9RVUlDX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3JhbmQuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3JhbmQuYwppbmRleCA2ZWU0NWZlLi5jNDE1MDQ4IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9yYW5kLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvcmFuZC5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTgsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0xMDYsOCArMTA2LDcgQEAKICAqICdybmRwdHInIHBvaW50cyB0by4KICAqCiAgKiBJZiBsaWJjdXJsIGlzIGJ1aWx0IHdpdGhvdXQgVExTIHN1cHBvcnQgb3Igd2l0aCBhIFRMUyBiYWNrZW5kIHRoYXQgbGFja3MgYQotICogcHJvcGVyIHJhbmRvbSBBUEkgKEdza2l0LCBQb2xhclNTTCBvciBtYmVkVExTKSwgdGhpcyBmdW5jdGlvbiB3aWxsIHVzZQotICogIndlYWsiIHJhbmRvbS4KKyAqIHByb3BlciByYW5kb20gQVBJIChHc2tpdCBvciBtYmVkVExTKSwgdGhpcyBmdW5jdGlvbiB3aWxsIHVzZSAid2VhayIgcmFuZG9tLgogICoKICAqIFdoZW4gYnVpbHQgKndpdGgqIFRMUyBzdXBwb3J0IGFuZCBhIGJhY2tlbmQgdGhhdCBvZmZlcnMgc3Ryb25nIHJhbmRvbSwgaXQKICAqIHdpbGwgcmV0dXJuIGVycm9yIGlmIGl0IGNhbm5vdCBwcm92aWRlIHN0cm9uZyByYW5kb20gdmFsdWVzLgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvcmFuZC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvcmFuZC5oCmluZGV4IDVkZWIwNDEuLjNjOGUyYjggMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3JhbmQuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9yYW5kLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTI3LDggKzI3LDcgQEAKICAqICdybmQnIHBvaW50cyB0by4KICAqCiAgKiBJZiBsaWJjdXJsIGlzIGJ1aWx0IHdpdGhvdXQgVExTIHN1cHBvcnQgb3Igd2l0aCBhIFRMUyBiYWNrZW5kIHRoYXQgbGFja3MgYQotICogcHJvcGVyIHJhbmRvbSBBUEkgKEdza2l0LCBQb2xhclNTTCBvciBtYmVkVExTKSwgdGhpcyBmdW5jdGlvbiB3aWxsIHVzZQotICogIndlYWsiIHJhbmRvbS4KKyAqIHByb3BlciByYW5kb20gQVBJIChHc2tpdCBvciBtYmVkVExTKSwgdGhpcyBmdW5jdGlvbiB3aWxsIHVzZSAid2VhayIgcmFuZG9tLgogICoKICAqIFdoZW4gYnVpbHQgKndpdGgqIFRMUyBzdXBwb3J0IGFuZCBhIGJhY2tlbmQgdGhhdCBvZmZlcnMgc3Ryb25nIHJhbmRvbSwgaXQKICAqIHdpbGwgcmV0dXJuIGVycm9yIGlmIGl0IGNhbm5vdCBwcm92aWRlIHN0cm9uZyByYW5kb20gdmFsdWVzLgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvcmVuYW1lLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9yZW5hbWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjE3MGQzCi0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvcmVuYW1lLmMKQEAgLTAsMCArMSw2MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJyZW5hbWUuaCIKKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmICghZGVmaW5lZChDVVJMX0RJU0FCTEVfSFRUUCkgJiYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NPT0tJRVMpKSB8fCAgXAorICBkZWZpbmVkKFVTRV9BTFRTVkMpCisKKyNpbmNsdWRlICJ0aW1ldmFsLmgiCisKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgorI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKworLyogcmV0dXJuIDAgb24gc3VjY2VzcywgMSBvbiBlcnJvciAqLworaW50IEN1cmxfcmVuYW1lKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCit7CisjaWZkZWYgV0lOMzIKKyAgLyogcmVuYW1lKCkgb24gV2luZG93cyBkb2Vzbid0IG92ZXJ3cml0ZSwgc28gd2UgY2FuJ3QgdXNlIGl0IGhlcmUuCisgICAgIE1vdmVGaWxlRXhBKCkgd2lsbCBvdmVyd3JpdGUgYW5kIGlzIHVzdWFsbHkgYXRvbWljLCBob3dldmVyIGl0IGZhaWxzCisgICAgIHdoZW4gdGhlcmUgYXJlIG9wZW4gaGFuZGxlcyB0byB0aGUgZmlsZS4gKi8KKyAgY29uc3QgaW50IG1heF93YWl0X21zID0gMTAwMDsKKyAgc3RydWN0IGN1cmx0aW1lIHN0YXJ0ID0gQ3VybF9ub3coKTsKKyAgZm9yKDs7KSB7CisgICAgdGltZWRpZmZfdCBkaWZmOworICAgIGlmKE1vdmVGaWxlRXhBKG9sZHBhdGgsIG5ld3BhdGgsIE1PVkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcpKQorICAgICAgYnJlYWs7CisgICAgZGlmZiA9IEN1cmxfdGltZWRpZmYoQ3VybF9ub3coKSwgc3RhcnQpOworICAgIGlmKGRpZmYgPCAwIHx8IGRpZmYgPiBtYXhfd2FpdF9tcykKKyAgICAgIHJldHVybiAxOworICAgIFNsZWVwKDEpOworICB9CisjZWxzZQorICBpZihyZW5hbWUob2xkcGF0aCwgbmV3cGF0aCkpCisgICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvcmVuYW1lLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9yZW5hbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzQ0MmM4Ci0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvcmVuYW1lLmgKQEAgLTAsMCArMSwyNyBAQAorI2lmbmRlZiBIRUFERVJfQ1VSTF9SRU5BTUVfSAorI2RlZmluZSBIRUFERVJfQ1VSTF9SRU5BTUVfSAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2ludCBDdXJsX3JlbmFtZShjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKTsKKworI2VuZGlmIC8qIEhFQURFUl9DVVJMX1JFTkFNRV9IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9ydHNwLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9ydHNwLmMKaW5kZXggNzRjZjIzMi4uYmJhNGMxNiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvcnRzcC5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3J0c3AuYwpAQCAtNTIsMTAgKzUyLDcgQEAKIHN0YXRpYyBDVVJMY29kZSBydHNwX2RvbmUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBDVVJMY29kZSwgYm9vbCBwcmVtYXR1cmUpOwogc3RhdGljIENVUkxjb2RlIHJ0c3BfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpOwogc3RhdGljIENVUkxjb2RlIHJ0c3BfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZCk7Ci0KLXN0YXRpYyBpbnQgcnRzcF9nZXRzb2NrX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKK3N0YXRpYyBpbnQgcnRzcF9nZXRzb2NrX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MpOwogCiAvKgogICogUGFyc2UgYW5kIHdyaXRlIG91dCBhbnkgYXZhaWxhYmxlIFJUUCBkYXRhLgpAQCAtNzcsMTEgKzc0LDkgQEAKICAgIGludGVyZmFjZSBhbmQgdGhlbiB3ZSdyZSBhbHdheXMgX3NlbmRpbmdfIGEgcmVxdWVzdCBhbmQgdGh1cyB3ZSB3YWl0IGZvcgogICAgdGhlIHNpbmdsZSBzb2NrZXQgdG8gYmVjb21lIHdyaXRhYmxlIG9ubHkgKi8KIHN0YXRpYyBpbnQgcnRzcF9nZXRzb2NrX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MpCiB7CiAgIC8qIHdyaXRlIG1vZGUgKi8KLSAgKHZvaWQpbnVtc29ja3M7IC8qIHVudXNlZCwgd2UgdHJ1c3QgaXQgdG8gYmUgYXQgbGVhc3QgMSAqLwogICBzb2Nrc1swXSA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOwogICByZXR1cm4gR0VUU09DS19XUklURVNPQ0soMCk7CiB9CkBAIC00OTEsNyArNDg2LDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogCiAgIGlmKChydHNwcmVxID09IFJUU1BSRVFfU0VUVVApIHx8IChydHNwcmVxID09IFJUU1BSRVFfREVTQ1JJQkUpKSB7Ci0gICAgcmVzdWx0ID0gQ3VybF9hZGRfdGltZWNvbmRpdGlvbihkYXRhLCByZXFfYnVmZmVyKTsKKyAgICByZXN1bHQgPSBDdXJsX2FkZF90aW1lY29uZGl0aW9uKGNvbm4sIHJlcV9idWZmZXIpOwogICAgIGlmKHJlc3VsdCkKICAgICAgIHJldHVybiByZXN1bHQ7CiAgIH0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3J0c3AuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3J0c3AuaAppbmRleCAyZjljYzMyLi4xYWFlODY0IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9ydHNwLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvcnRzcC5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZWN1cml0eS5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc2VjdXJpdHkuYwppbmRleCA3Njk1MTU0Li4zYjljMjBhIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZWN1cml0eS5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NlY3VyaXR5LmMKQEAgLTcsNyArNyw3IEBACiAgKiByZXdyaXRlIHRvIHdvcmsgYXJvdW5kIHRoZSBwYXJhZ3JhcGggMiBpbiB0aGUgQlNEIGxpY2Vuc2VzIGFzIGV4cGxhaW5lZAogICogYmVsb3cuCiAgKgotICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDE3IEt1bmdsaWdhIFRla25pc2thIEjDtmdza29sYW4KKyAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAxNyBLdW5nbGlnYSBUZWtuaXNrYSBIw4PCtmdza29sYW4KICAqIChSb3lhbCBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgU3RvY2tob2xtLCBTd2VkZW4pLgogICoKICAqIENvcHlyaWdodCAoQykgMjAwMSAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCkBAIC0xOTEsNyArMTkxLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGtyYjVidWZmZXIgKmJ1ZikKIHsKICAgaW50IGxlbjsKLSAgdm9pZCAqdG1wID0gTlVMTDsKICAgQ1VSTGNvZGUgcmVzdWx0OwogCiAgIHJlc3VsdCA9IHNvY2tldF9yZWFkKGZkLCAmbGVuLCBzaXplb2YobGVuKSk7CkBAIC0yMDEsMTIgKzIwMCwxMSBAQAogICBpZihsZW4pIHsKICAgICAvKiBvbmx5IHJlYWxsb2MgaWYgdGhlcmUgd2FzIGEgbGVuZ3RoICovCiAgICAgbGVuID0gbnRvaGwobGVuKTsKLSAgICB0bXAgPSBDdXJsX3NhZmVyZWFsbG9jKGJ1Zi0+ZGF0YSwgbGVuKTsKKyAgICBidWYtPmRhdGEgPSBDdXJsX3NhZmVyZWFsbG9jKGJ1Zi0+ZGF0YSwgbGVuKTsKICAgfQotICBpZih0bXAgPT0gTlVMTCkKKyAgaWYoIWxlbiB8fCAhYnVmLT5kYXRhKQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCi0gIGJ1Zi0+ZGF0YSA9IHRtcDsKICAgcmVzdWx0ID0gc29ja2V0X3JlYWQoZmQsIGJ1Zi0+ZGF0YSwgbGVuKTsKICAgaWYocmVzdWx0KQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMzgsNyArMjM2LDcgQEAKIAogICAvKiBIYW5kbGUgY2xlYXIgdGV4dCByZXNwb25zZS4gKi8KICAgaWYoY29ubi0+c2VjX2NvbXBsZXRlID09IDAgfHwgY29ubi0+ZGF0YV9wcm90ID09IFBST1RfQ0xFQVIpCi0gICAgICByZXR1cm4gcmVhZChmZCwgYnVmZmVyLCBsZW4pOworICAgICAgcmV0dXJuIHNyZWFkKGZkLCBidWZmZXIsIGxlbik7CiAKICAgaWYoY29ubi0+aW5fYnVmZmVyLmVvZl9mbGFnKSB7CiAgICAgY29ubi0+aW5fYnVmZmVyLmVvZl9mbGFnID0gMDsKQEAgLTI2Nyw3ICsyNjUsNyBAQAogfQogCiAvKiBTZW5kIHxsZW5ndGh8IGJ5dGVzIGZyb20gfGZyb218IHRvIHRoZSB8ZmR8IHNvY2tldCB0YWtpbmcgY2FyZSBvZiBlbmNvZGluZwotICAgYW5kIG5lZ29jaWF0aW5nIHdpdGggdGhlIHNlcnZlci4gfGZyb218IGNhbiBiZSBOVUxMLiAqLworICAgYW5kIG5lZ290aWF0aW5nIHdpdGggdGhlIHNlcnZlci4gfGZyb218IGNhbiBiZSBOVUxMLiAqLwogc3RhdGljIHZvaWQgZG9fc2VjX3NlbmQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90IGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbSwgaW50IGxlbmd0aCkKIHsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NlbGVjdC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc2VsZWN0LmMKaW5kZXggNmU3Mzg5MC4uYWUyMzE1NSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc2VsZWN0LmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc2VsZWN0LmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTUzLDkgKzUzLDYgQEAKIC8qIENvbnZlbmllbmNlIGxvY2FsIG1hY3JvcyAqLwogI2RlZmluZSBFTEFQU0VEX01TKCkgKGludClDdXJsX3RpbWVkaWZmKEN1cmxfbm93KCksIGluaXRpYWxfdHYpCiAKLWludCBDdXJsX2Fja19laW50ciA9IDA7Ci0jZGVmaW5lIEVSUk9SX05PVF9FSU5UUihlcnJvcikgKEN1cmxfYWNrX2VpbnRyIHx8IGVycm9yICE9IEVJTlRSKQotCiAvKgogICogSW50ZXJuYWwgZnVuY3Rpb24gdXNlZCBmb3Igd2FpdGluZyBhIHNwZWNpZmljIGFtb3VudCBvZiBtcwogICogaW4gQ3VybF9zb2NrZXRfY2hlY2soKSBhbmQgQ3VybF9wb2xsKCkgd2hlbiBubyBmaWxlIGRlc2NyaXB0b3IKQEAgLTc0LDEzICs3MSw2IEBACiAgKi8KIGludCBDdXJsX3dhaXRfbXMoaW50IHRpbWVvdXRfbXMpCiB7Ci0jaWYgIWRlZmluZWQoTVNET1MpICYmICFkZWZpbmVkKFVTRV9XSU5TT0NLKQotI2lmbmRlZiBIQVZFX1BPTExfRklORQotICBzdHJ1Y3QgdGltZXZhbCBwZW5kaW5nX3R2OwotI2VuZGlmCi0gIHN0cnVjdCBjdXJsdGltZSBpbml0aWFsX3R2OwotICBpbnQgcGVuZGluZ19tczsKLSNlbmRpZgogICBpbnQgciA9IDA7CiAKICAgaWYoIXRpbWVvdXRfbXMpCkBAIC05NCwyOCArODQsMTYgQEAKICNlbGlmIGRlZmluZWQoVVNFX1dJTlNPQ0spCiAgIFNsZWVwKHRpbWVvdXRfbXMpOwogI2Vsc2UKLSAgcGVuZGluZ19tcyA9IHRpbWVvdXRfbXM7Ci0gIGluaXRpYWxfdHYgPSBDdXJsX25vdygpOwotICBkbyB7Ci0gICAgaW50IGVycm9yOwogI2lmIGRlZmluZWQoSEFWRV9QT0xMX0ZJTkUpCi0gICAgciA9IHBvbGwoTlVMTCwgMCwgcGVuZGluZ19tcyk7CisgIHIgPSBwb2xsKE5VTEwsIDAsIHRpbWVvdXRfbXMpOwogI2Vsc2UKLSAgICBwZW5kaW5nX3R2LnR2X3NlYyA9IHBlbmRpbmdfbXMgLyAxMDAwOwotICAgIHBlbmRpbmdfdHYudHZfdXNlYyA9IChwZW5kaW5nX21zICUgMTAwMCkgKiAxMDAwOworICB7CisgICAgc3RydWN0IHRpbWV2YWwgcGVuZGluZ190djsKKyAgICBwZW5kaW5nX3R2LnR2X3NlYyA9IHRpbWVvdXRfbXMgLyAxMDAwOworICAgIHBlbmRpbmdfdHYudHZfdXNlYyA9ICh0aW1lb3V0X21zICUgMTAwMCkgKiAxMDAwOwogICAgIHIgPSBzZWxlY3QoMCwgTlVMTCwgTlVMTCwgTlVMTCwgJnBlbmRpbmdfdHYpOworICB9CiAjZW5kaWYgLyogSEFWRV9QT0xMX0ZJTkUgKi8KLSAgICBpZihyICE9IC0xKQotICAgICAgYnJlYWs7Ci0gICAgZXJyb3IgPSBTT0NLRVJSTk87Ci0gICAgaWYoZXJyb3IgJiYgRVJST1JfTk9UX0VJTlRSKGVycm9yKSkKLSAgICAgIGJyZWFrOwotICAgIHBlbmRpbmdfbXMgPSB0aW1lb3V0X21zIC0gRUxBUFNFRF9NUygpOwotICAgIGlmKHBlbmRpbmdfbXMgPD0gMCkgewotICAgICAgciA9IDA7ICAvKiBTaW11bGF0ZSBhICJjYWxsIHRpbWVkIG91dCIgY2FzZSAqLwotICAgICAgYnJlYWs7Ci0gICAgfQotICB9IHdoaWxlKHIgPT0gLTEpOwogI2VuZGlmIC8qIFVTRV9XSU5TT0NLICovCiAgIGlmKHIpCiAgICAgciA9IC0xOwpAQCAtMTU4LDcgKzEzNiw2IEBACiAgIGZkX3NldCBmZHNfZXJyOwogICBjdXJsX3NvY2tldF90IG1heGZkOwogI2VuZGlmCi0gIHN0cnVjdCBjdXJsdGltZSBpbml0aWFsX3R2ID0gezAsIDB9OwogICBpbnQgcGVuZGluZ19tcyA9IDA7CiAgIGludCByOwogICBpbnQgcmV0OwpAQCAtMTgzLDcgKzE2MCw2IEBACiAKICAgaWYodGltZW91dF9tcyA+IDApIHsKICAgICBwZW5kaW5nX21zID0gKGludCl0aW1lb3V0X21zOwotICAgIGluaXRpYWxfdHYgPSBDdXJsX25vdygpOwogICB9CiAKICNpZmRlZiBIQVZFX1BPTExfRklORQpAQCAtMjA4LDI2ICsxODQsMTEgQEAKICAgICBudW0rKzsKICAgfQogCi0gIGRvIHsKLSAgICBpbnQgZXJyb3I7Ci0gICAgaWYodGltZW91dF9tcyA8IDApCi0gICAgICBwZW5kaW5nX21zID0gLTE7Ci0gICAgZWxzZSBpZighdGltZW91dF9tcykKLSAgICAgIHBlbmRpbmdfbXMgPSAwOwotICAgIHIgPSBwb2xsKHBmZCwgbnVtLCBwZW5kaW5nX21zKTsKLSAgICBpZihyICE9IC0xKQotICAgICAgYnJlYWs7Ci0gICAgZXJyb3IgPSBTT0NLRVJSTk87Ci0gICAgaWYoZXJyb3IgJiYgRVJST1JfTk9UX0VJTlRSKGVycm9yKSkKLSAgICAgIGJyZWFrOwotICAgIGlmKHRpbWVvdXRfbXMgPiAwKSB7Ci0gICAgICBwZW5kaW5nX21zID0gKGludCkodGltZW91dF9tcyAtIEVMQVBTRURfTVMoKSk7Ci0gICAgICBpZihwZW5kaW5nX21zIDw9IDApIHsKLSAgICAgICAgciA9IDA7ICAvKiBTaW11bGF0ZSBhICJjYWxsIHRpbWVkIG91dCIgY2FzZSAqLwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gIH0gd2hpbGUociA9PSAtMSk7CisgIGlmKHRpbWVvdXRfbXMgPCAwKQorICAgIHBlbmRpbmdfbXMgPSAtMTsKKyAgZWxzZSBpZighdGltZW91dF9tcykKKyAgICBwZW5kaW5nX21zID0gMDsKKyAgciA9IHBvbGwocGZkLCBudW0sIHBlbmRpbmdfbXMpOwogCiAgIGlmKHIgPCAwKQogICAgIHJldHVybiAtMTsKQEAgLTI5MCw2MSArMjUxLDQ1IEBACiAKICAgcHRpbWVvdXQgPSAodGltZW91dF9tcyA8IDApID8gTlVMTCA6ICZwZW5kaW5nX3R2OwogCi0gIGRvIHsKLSAgICBpbnQgZXJyb3I7Ci0gICAgaWYodGltZW91dF9tcyA+IDApIHsKLSAgICAgIHBlbmRpbmdfdHYudHZfc2VjID0gcGVuZGluZ19tcyAvIDEwMDA7Ci0gICAgICBwZW5kaW5nX3R2LnR2X3VzZWMgPSAocGVuZGluZ19tcyAlIDEwMDApICogMTAwMDsKLSAgICB9Ci0gICAgZWxzZSBpZighdGltZW91dF9tcykgewotICAgICAgcGVuZGluZ190di50dl9zZWMgPSAwOwotICAgICAgcGVuZGluZ190di50dl91c2VjID0gMDsKLSAgICB9CisgIGlmKHRpbWVvdXRfbXMgPiAwKSB7CisgICAgcGVuZGluZ190di50dl9zZWMgPSBwZW5kaW5nX21zIC8gMTAwMDsKKyAgICBwZW5kaW5nX3R2LnR2X3VzZWMgPSAocGVuZGluZ19tcyAlIDEwMDApICogMTAwMDsKKyAgfQorICBlbHNlIGlmKCF0aW1lb3V0X21zKSB7CisgICAgcGVuZGluZ190di50dl9zZWMgPSAwOworICAgIHBlbmRpbmdfdHYudHZfdXNlYyA9IDA7CisgIH0KIAotICAgIC8qIFdpblNvY2sgc2VsZWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZmRfc2V0IHRoYXQgY29udGFpbnMgemVybwotICAgICAgIGZkIGZsYWdzLCBvciBpdCB3aWxsIHJldHVybiBXU0FFSU5WQUwuICBCdXQsIGl0IGFsc28gY2FuJ3QgYmUgY2FsbGVkCi0gICAgICAgd2l0aCBubyBmZF9zZXRzIGF0IGFsbCEgIEZyb20gdGhlIGRvY3VtZW50YXRpb246CisgIC8qIFdpblNvY2sgc2VsZWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZmRfc2V0IHRoYXQgY29udGFpbnMgemVybworICAgICBmZCBmbGFncywgb3IgaXQgd2lsbCByZXR1cm4gV1NBRUlOVkFMLiAgQnV0LCBpdCBhbHNvIGNhbid0IGJlIGNhbGxlZAorICAgICB3aXRoIG5vIGZkX3NldHMgYXQgYWxsISAgRnJvbSB0aGUgZG9jdW1lbnRhdGlvbjoKIAotICAgICAgICAgQW55IHR3byBvZiB0aGUgcGFyYW1ldGVycywgcmVhZGZkcywgd3JpdGVmZHMsIG9yIGV4Y2VwdGZkcywgY2FuIGJlCi0gICAgICAgICBnaXZlbiBhcyBudWxsLiBBdCBsZWFzdCBvbmUgbXVzdCBiZSBub24tbnVsbCwgYW5kIGFueSBub24tbnVsbAotICAgICAgICAgZGVzY3JpcHRvciBzZXQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBoYW5kbGUgdG8gYSBzb2NrZXQuCisgICAgIEFueSB0d28gb2YgdGhlIHBhcmFtZXRlcnMsIHJlYWRmZHMsIHdyaXRlZmRzLCBvciBleGNlcHRmZHMsIGNhbiBiZQorICAgICBnaXZlbiBhcyBudWxsLiBBdCBsZWFzdCBvbmUgbXVzdCBiZSBub24tbnVsbCwgYW5kIGFueSBub24tbnVsbAorICAgICBkZXNjcmlwdG9yIHNldCBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGhhbmRsZSB0byBhIHNvY2tldC4KIAotICAgICAgIFdlIGtub3cgdGhhdCB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBiaXQgc2V0IGluIGF0IGxlYXN0IHR3byBmZF9zZXRzIGluCi0gICAgICAgdGhpcyBjYXNlLCBidXQgd2UgbWF5IGhhdmUgbm8gYml0cyBzZXQgaW4gZWl0aGVyIGZkc19yZWFkIG9yIGZkX3dyaXRlLAotICAgICAgIHNvIGNoZWNrIGZvciB0aGF0IGFuZCBoYW5kbGUgaXQuICBMdWNraWx5LCB3aXRoIFdpblNvY2ssIHdlIGNhbiBfYWxzb18KLSAgICAgICBhc2sgaG93IG1hbnkgYml0cyBhcmUgc2V0IG9uIGFuIGZkX3NldC4KKyAgICAgV2Uga25vdyB0aGF0IHdlIGhhdmUgYXQgbGVhc3Qgb25lIGJpdCBzZXQgaW4gYXQgbGVhc3QgdHdvIGZkX3NldHMgaW4KKyAgICAgdGhpcyBjYXNlLCBidXQgd2UgbWF5IGhhdmUgbm8gYml0cyBzZXQgaW4gZWl0aGVyIGZkc19yZWFkIG9yIGZkX3dyaXRlLAorICAgICBzbyBjaGVjayBmb3IgdGhhdCBhbmQgaGFuZGxlIGl0LiAgTHVja2lseSwgd2l0aCBXaW5Tb2NrLCB3ZSBjYW4gX2Fsc29fCisgICAgIGFzayBob3cgbWFueSBiaXRzIGFyZSBzZXQgb24gYW4gZmRfc2V0LgogCi0gICAgICAgSXQgaXMgdW5jbGVhciB3aHkgV2luU29jayBkb2Vzbid0IGp1c3QgaGFuZGxlIHRoaXMgZm9yIHVzIGluc3RlYWQgb2YKLSAgICAgICBjYWxsaW5nIHRoaXMgYW4gZXJyb3IuCisgICAgIEl0IGlzIHVuY2xlYXIgd2h5IFdpblNvY2sgZG9lc24ndCBqdXN0IGhhbmRsZSB0aGlzIGZvciB1cyBpbnN0ZWFkIG9mCisgICAgIGNhbGxpbmcgdGhpcyBhbiBlcnJvci4KIAotICAgICAgIE5vdGUgYWxzbyB0aGF0IFdpblNvY2sgaWdub3JlcyB0aGUgZmlyc3QgYXJndW1lbnQsIHNvIHdlIGRvbid0IHdvcnJ5Ci0gICAgICAgYWJvdXQgdGhlIGZhY3QgdGhhdCBtYXhmZCBpcyBjb21wdXRlZCBpbmNvcnJlY3RseSB3aXRoIFdpblNvY2sgKHNpbmNlCi0gICAgICAgY3VybF9zb2NrZXRfdCBpcyB1bnNpZ25lZCBpbiBzdWNoIGNhc2VzIGFuZCB0aHVzIC0xIGlzIHRoZSBsYXJnZXN0Ci0gICAgICAgdmFsdWUpLgotICAgICovCisgICAgIE5vdGUgYWxzbyB0aGF0IFdpblNvY2sgaWdub3JlcyB0aGUgZmlyc3QgYXJndW1lbnQsIHNvIHdlIGRvbid0IHdvcnJ5CisgICAgIGFib3V0IHRoZSBmYWN0IHRoYXQgbWF4ZmQgaXMgY29tcHV0ZWQgaW5jb3JyZWN0bHkgd2l0aCBXaW5Tb2NrIChzaW5jZQorICAgICBjdXJsX3NvY2tldF90IGlzIHVuc2lnbmVkIGluIHN1Y2ggY2FzZXMgYW5kIHRodXMgLTEgaXMgdGhlIGxhcmdlc3QKKyAgICAgdmFsdWUpLgorICAqLwogI2lmZGVmIFVTRV9XSU5TT0NLCi0gICAgciA9IHNlbGVjdCgoaW50KW1heGZkICsgMSwKLSAgICAgICAgICAgICAgIGZkc19yZWFkLmZkX2NvdW50ID8gJmZkc19yZWFkIDogTlVMTCwKLSAgICAgICAgICAgICAgIGZkc193cml0ZS5mZF9jb3VudCA/ICZmZHNfd3JpdGUgOiBOVUxMLAotICAgICAgICAgICAgICAgJmZkc19lcnIsIHB0aW1lb3V0KTsKKyAgciA9IHNlbGVjdCgoaW50KW1heGZkICsgMSwKKyAgICAgICAgICAgICBmZHNfcmVhZC5mZF9jb3VudCA/ICZmZHNfcmVhZCA6IE5VTEwsCisgICAgICAgICAgICAgZmRzX3dyaXRlLmZkX2NvdW50ID8gJmZkc193cml0ZSA6IE5VTEwsCisgICAgICAgICAgICAgJmZkc19lcnIsIHB0aW1lb3V0KTsKICNlbHNlCi0gICAgciA9IHNlbGVjdCgoaW50KW1heGZkICsgMSwgJmZkc19yZWFkLCAmZmRzX3dyaXRlLCAmZmRzX2VyciwgcHRpbWVvdXQpOworICByID0gc2VsZWN0KChpbnQpbWF4ZmQgKyAxLCAmZmRzX3JlYWQsICZmZHNfd3JpdGUsICZmZHNfZXJyLCBwdGltZW91dCk7CiAjZW5kaWYKIAotICAgIGlmKHIgIT0gLTEpCi0gICAgICBicmVhazsKLSAgICBlcnJvciA9IFNPQ0tFUlJOTzsKLSAgICBpZihlcnJvciAmJiBFUlJPUl9OT1RfRUlOVFIoZXJyb3IpKQotICAgICAgYnJlYWs7Ci0gICAgaWYodGltZW91dF9tcyA+IDApIHsKLSAgICAgIHBlbmRpbmdfbXMgPSAoaW50KSh0aW1lb3V0X21zIC0gRUxBUFNFRF9NUygpKTsKLSAgICAgIGlmKHBlbmRpbmdfbXMgPD0gMCkgewotICAgICAgICByID0gMDsgIC8qIFNpbXVsYXRlIGEgImNhbGwgdGltZWQgb3V0IiBjYXNlICovCi0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgfSB3aGlsZShyID09IC0xKTsKLQogICBpZihyIDwgMCkKICAgICByZXR1cm4gLTE7CiAgIGlmKHIgPT0gMCkKQEAgLTM5OSw3ICszNDQsNiBAQAogICBmZF9zZXQgZmRzX2VycjsKICAgY3VybF9zb2NrZXRfdCBtYXhmZDsKICNlbmRpZgotICBzdHJ1Y3QgY3VybHRpbWUgaW5pdGlhbF90diA9IHswLCAwfTsKICAgYm9vbCBmZHNfbm9uZSA9IFRSVUU7CiAgIHVuc2lnbmVkIGludCBpOwogICBpbnQgcGVuZGluZ19tcyA9IDA7CkBAIC00MjUsMzEgKzM2OSwxNSBAQAogCiAgIGlmKHRpbWVvdXRfbXMgPiAwKSB7CiAgICAgcGVuZGluZ19tcyA9IHRpbWVvdXRfbXM7Ci0gICAgaW5pdGlhbF90diA9IEN1cmxfbm93KCk7CiAgIH0KIAogI2lmZGVmIEhBVkVfUE9MTF9GSU5FCiAKLSAgZG8gewotICAgIGludCBlcnJvcjsKLSAgICBpZih0aW1lb3V0X21zIDwgMCkKLSAgICAgIHBlbmRpbmdfbXMgPSAtMTsKLSAgICBlbHNlIGlmKCF0aW1lb3V0X21zKQotICAgICAgcGVuZGluZ19tcyA9IDA7Ci0gICAgciA9IHBvbGwodWZkcywgbmZkcywgcGVuZGluZ19tcyk7Ci0gICAgaWYociAhPSAtMSkKLSAgICAgIGJyZWFrOwotICAgIGVycm9yID0gU09DS0VSUk5POwotICAgIGlmKGVycm9yICYmIEVSUk9SX05PVF9FSU5UUihlcnJvcikpCi0gICAgICBicmVhazsKLSAgICBpZih0aW1lb3V0X21zID4gMCkgewotICAgICAgcGVuZGluZ19tcyA9IChpbnQpKHRpbWVvdXRfbXMgLSBFTEFQU0VEX01TKCkpOwotICAgICAgaWYocGVuZGluZ19tcyA8PSAwKSB7Ci0gICAgICAgIHIgPSAwOyAgLyogU2ltdWxhdGUgYSAiY2FsbCB0aW1lZCBvdXQiIGNhc2UgKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICB9IHdoaWxlKHIgPT0gLTEpOworICBpZih0aW1lb3V0X21zIDwgMCkKKyAgICBwZW5kaW5nX21zID0gLTE7CisgIGVsc2UgaWYoIXRpbWVvdXRfbXMpCisgICAgcGVuZGluZ19tcyA9IDA7CisgIHIgPSBwb2xsKHVmZHMsIG5mZHMsIHBlbmRpbmdfbXMpOwogCiAgIGlmKHIgPCAwKQogICAgIHJldHVybiAtMTsKQEAgLTUwMiw0MiArNDMwLDI3IEBACiAKICAgcHRpbWVvdXQgPSAodGltZW91dF9tcyA8IDApID8gTlVMTCA6ICZwZW5kaW5nX3R2OwogCi0gIGRvIHsKLSAgICBpbnQgZXJyb3I7Ci0gICAgaWYodGltZW91dF9tcyA+IDApIHsKLSAgICAgIHBlbmRpbmdfdHYudHZfc2VjID0gcGVuZGluZ19tcyAvIDEwMDA7Ci0gICAgICBwZW5kaW5nX3R2LnR2X3VzZWMgPSAocGVuZGluZ19tcyAlIDEwMDApICogMTAwMDsKLSAgICB9Ci0gICAgZWxzZSBpZighdGltZW91dF9tcykgewotICAgICAgcGVuZGluZ190di50dl9zZWMgPSAwOwotICAgICAgcGVuZGluZ190di50dl91c2VjID0gMDsKLSAgICB9CisgIGlmKHRpbWVvdXRfbXMgPiAwKSB7CisgICAgcGVuZGluZ190di50dl9zZWMgPSBwZW5kaW5nX21zIC8gMTAwMDsKKyAgICBwZW5kaW5nX3R2LnR2X3VzZWMgPSAocGVuZGluZ19tcyAlIDEwMDApICogMTAwMDsKKyAgfQorICBlbHNlIGlmKCF0aW1lb3V0X21zKSB7CisgICAgcGVuZGluZ190di50dl9zZWMgPSAwOworICAgIHBlbmRpbmdfdHYudHZfdXNlYyA9IDA7CisgIH0KIAogI2lmZGVmIFVTRV9XSU5TT0NLCi0gICAgciA9IHNlbGVjdCgoaW50KW1heGZkICsgMSwKLSAgICAgICAgICAgICAgIC8qIFdpblNvY2sgc2VsZWN0KCkgY2FuJ3QgaGFuZGxlIGZkX3NldHMgd2l0aCB6ZXJvIGJpdHMgc2V0LCBzbwotICAgICAgICAgICAgICAgICAgZG9uJ3QgZ2l2ZSBpdCBzdWNoIGFyZ3VtZW50cy4gIFNlZSB0aGUgY29tbWVudCBhYm91dCB0aGlzIGluCi0gICAgICAgICAgICAgICAgICBDdXJsX2NoZWNrX3NvY2tldCgpLgotICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgIGZkc19yZWFkLmZkX2NvdW50ID8gJmZkc19yZWFkIDogTlVMTCwKLSAgICAgICAgICAgICAgIGZkc193cml0ZS5mZF9jb3VudCA/ICZmZHNfd3JpdGUgOiBOVUxMLAotICAgICAgICAgICAgICAgZmRzX2Vyci5mZF9jb3VudCA/ICZmZHNfZXJyIDogTlVMTCwgcHRpbWVvdXQpOworICByID0gc2VsZWN0KChpbnQpbWF4ZmQgKyAxLAorICAgICAgICAgICAgIC8qIFdpblNvY2sgc2VsZWN0KCkgY2FuJ3QgaGFuZGxlIGZkX3NldHMgd2l0aCB6ZXJvIGJpdHMgc2V0LCBzbworICAgICAgICAgICAgICAgIGRvbid0IGdpdmUgaXQgc3VjaCBhcmd1bWVudHMuICBTZWUgdGhlIGNvbW1lbnQgYWJvdXQgdGhpcyBpbgorICAgICAgICAgICAgICAgIEN1cmxfY2hlY2tfc29ja2V0KCkuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICBmZHNfcmVhZC5mZF9jb3VudCA/ICZmZHNfcmVhZCA6IE5VTEwsCisgICAgICAgICAgICAgZmRzX3dyaXRlLmZkX2NvdW50ID8gJmZkc193cml0ZSA6IE5VTEwsCisgICAgICAgICAgICAgZmRzX2Vyci5mZF9jb3VudCA/ICZmZHNfZXJyIDogTlVMTCwgcHRpbWVvdXQpOwogI2Vsc2UKLSAgICByID0gc2VsZWN0KChpbnQpbWF4ZmQgKyAxLCAmZmRzX3JlYWQsICZmZHNfd3JpdGUsICZmZHNfZXJyLCBwdGltZW91dCk7CisgIHIgPSBzZWxlY3QoKGludCltYXhmZCArIDEsICZmZHNfcmVhZCwgJmZkc193cml0ZSwgJmZkc19lcnIsIHB0aW1lb3V0KTsKICNlbmRpZgotICAgIGlmKHIgIT0gLTEpCi0gICAgICBicmVhazsKLSAgICBlcnJvciA9IFNPQ0tFUlJOTzsKLSAgICBpZihlcnJvciAmJiBFUlJPUl9OT1RfRUlOVFIoZXJyb3IpKQotICAgICAgYnJlYWs7Ci0gICAgaWYodGltZW91dF9tcyA+IDApIHsKLSAgICAgIHBlbmRpbmdfbXMgPSB0aW1lb3V0X21zIC0gRUxBUFNFRF9NUygpOwotICAgICAgaWYocGVuZGluZ19tcyA8PSAwKSB7Ci0gICAgICAgIHIgPSAwOyAgLyogU2ltdWxhdGUgYSAiY2FsbCB0aW1lZCBvdXQiIGNhc2UgKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICB9IHdoaWxlKHIgPT0gLTEpOwogCiAgIGlmKHIgPCAwKQogICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NlbGVjdC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc2VsZWN0LmgKaW5kZXggOWExYmE0NS4uZWMzMDIxYSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc2VsZWN0LmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc2VsZWN0LmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTc1LDIwICs3NSwxMiBAQAogaW50IEN1cmxfc29ja2V0X2NoZWNrKGN1cmxfc29ja2V0X3QgcmVhZGZkLCBjdXJsX3NvY2tldF90IHJlYWRmZDIsCiAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCB3cml0ZWZkLAogICAgICAgICAgICAgICAgICAgICAgIHRpbWVfdCB0aW1lb3V0X21zKTsKLQogI2RlZmluZSBTT0NLRVRfUkVBREFCTEUoeCx6KSBcCi0gIEN1cmxfc29ja2V0X2NoZWNrKHgsIENVUkxfU09DS0VUX0JBRCwgQ1VSTF9TT0NLRVRfQkFELCB6KQorICBDdXJsX3NvY2tldF9jaGVjayh4LCBDVVJMX1NPQ0tFVF9CQUQsIENVUkxfU09DS0VUX0JBRCwgKHRpbWVfdCl6KQogI2RlZmluZSBTT0NLRVRfV1JJVEFCTEUoeCx6KSBcCi0gIEN1cmxfc29ja2V0X2NoZWNrKENVUkxfU09DS0VUX0JBRCwgQ1VSTF9TT0NLRVRfQkFELCB4LCB6KQorICBDdXJsX3NvY2tldF9jaGVjayhDVVJMX1NPQ0tFVF9CQUQsIENVUkxfU09DS0VUX0JBRCwgeCwgKHRpbWVfdCl6KQogCiBpbnQgQ3VybF9wb2xsKHN0cnVjdCBwb2xsZmQgdWZkc1tdLCB1bnNpZ25lZCBpbnQgbmZkcywgaW50IHRpbWVvdXRfbXMpOwotCi0vKiBPbiBub24tRE9TIGFuZCBub24tV2luc29jayBwbGF0Zm9ybXMsIHdoZW4gQ3VybF9hY2tfZWludHIgaXMgc2V0LAotICogRUlOVFIgY29uZGl0aW9uIGlzIGhvbm9yZWQgYW5kIGZ1bmN0aW9uIG1pZ2h0IGV4aXQgZWFybHkgd2l0aG91dAotICogYXdhaXRpbmcgZnVsbCB0aW1lb3V0LiAgT3RoZXJ3aXNlIEVJTlRSIHdpbGwgYmUgaWdub3JlZCBhbmQgZnVsbAotICogdGltZW91dCB3aWxsIGVsYXBzZS4gKi8KLWV4dGVybiBpbnQgQ3VybF9hY2tfZWludHI7Ci0KIGludCBDdXJsX3dhaXRfbXMoaW50IHRpbWVvdXRfbXMpOwogCiAjaWZkZWYgVFBGCkBAIC0xMDksNyArMTAxLDcgQEAKICAgICBTRVRfU09DS0VSUk5PKEVJTlZBTCk7IFwKICAgICByZXR1cm4gLTE7IFwKICAgfSBcCi19IFdISUxFX0ZBTFNFCit9IHdoaWxlKDApCiAjZW5kaWYKIAogI2VuZGlmIC8qIEhFQURFUl9DVVJMX1NFTEVDVF9IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZW5kZi5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc2VuZGYuYwppbmRleCA1OTEzZWE0Li42ZWY0N2FhIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZW5kZi5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NlbmRmLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTM2LDEzICszNiwxNCBAQAogI2luY2x1ZGUgInNlbmRmLmgiCiAjaW5jbHVkZSAiY29ubmVjdC5oIgogI2luY2x1ZGUgInZ0bHMvdnRscy5oIgotI2luY2x1ZGUgInNzaC5oIgorI2luY2x1ZGUgInZzc2gvc3NoLmgiCiAjaW5jbHVkZSAiZWFzeWlmLmgiCiAjaW5jbHVkZSAibXVsdGlpZi5oIgogI2luY2x1ZGUgIm5vbi1hc2NpaS5oIgogI2luY2x1ZGUgInN0cmVycm9yLmgiCiAjaW5jbHVkZSAic2VsZWN0LmgiCiAjaW5jbHVkZSAic3RyZHVwLmgiCisjaW5jbHVkZSAiaHR0cDIuaCIKIAogLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCkBAIC0yMjQsNyArMjI1LDcgQEAKICAgKHZvaWQpc29ja2luZGV4OwogICByZXR1cm4gZmFsc2U7CiB9Ci0jZGVmaW5lIHByZV9yZWNlaXZlX3BsYWluKGMsbikgZG8ge30gV0hJTEVfRkFMU0UKKyNkZWZpbmUgcHJlX3JlY2VpdmVfcGxhaW4oYyxuKSBkbyB7fSB3aGlsZSgwKQogI2RlZmluZSBnZXRfcHJlX3JlY3ZlZChjLG4sYixsKSAwCiAjZW5kaWYgLyogISBVU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5EICovCiAKQEAgLTUwMSw2ICs1MDIsOSBAQAogICB1bnNpZ25lZCBpbnQgaTsKICAgYm9vbCBuZXd0eXBlID0gVFJVRTsKIAorICAvKiBJZiB0aGlzIHRyYW5zZmVycyBvdmVyIEhUVFAvMiwgcGF1c2UgdGhlIHN0cmVhbSEgKi8KKyAgQ3VybF9odHRwMl9zdHJlYW1fcGF1c2UoZGF0YSwgVFJVRSk7CisKICAgaWYocy0+dGVtcGNvdW50KSB7CiAgICAgZm9yKGkgPSAwOyBpPCBzLT50ZW1wY291bnQ7IGkrKykgewogICAgICAgaWYocy0+dGVtcHdyaXRlW2ldLnR5cGUgPT0gdHlwZSkgewpAQCAtNTI5LDYgKzUzMyw4IEBACiAgICAgLyogdXBkYXRlIHRoZSBwb2ludGVyIGFuZCB0aGUgc2l6ZSAqLwogICAgIHMtPnRlbXB3cml0ZVtpXS5idWYgPSBuZXdwdHI7CiAgICAgcy0+dGVtcHdyaXRlW2ldLmxlbiA9IG5ld2xlbjsKKworICAgIGxlbiA9IG5ld2xlbjsgLyogZm9yIHRoZSBkZWJ1ZyBvdXRwdXQgYmVsb3cgKi8KICAgfQogICBlbHNlIHsKICAgICBkdXBsID0gQ3VybF9tZW1kdXAocHRyLCBsZW4pOwpAQCAtNjkyLDE5ICs2OTgsMjAgQEAKICAgc3NpemVfdCBucmVhZCA9IHNyZWFkKHNvY2tmZCwgYnVmLCBieXRlc2Zyb21zb2NrZXQpOwogCiAgIGlmKC0xID09IG5yZWFkKSB7Ci0gICAgaW50IGVyciA9IFNPQ0tFUlJOTzsKLSAgICBpbnQgcmV0dXJuX2Vycm9yOworICAgIGNvbnN0IGludCBlcnIgPSBTT0NLRVJSTk87CisgICAgY29uc3QgYm9vbCByZXR1cm5fZXJyb3IgPQogI2lmZGVmIFVTRV9XSU5TT0NLCi0gICAgcmV0dXJuX2Vycm9yID0gV1NBRVdPVUxEQkxPQ0sgPT0gZXJyOworICAgICAgV1NBRVdPVUxEQkxPQ0sgPT0gZXJyCiAjZWxzZQotICAgIHJldHVybl9lcnJvciA9IEVXT1VMREJMT0NLID09IGVyciB8fCBFQUdBSU4gPT0gZXJyIHx8IEVJTlRSID09IGVycjsKKyAgICAgIEVXT1VMREJMT0NLID09IGVyciB8fCBFQUdBSU4gPT0gZXJyIHx8IEVJTlRSID09IGVycgogI2VuZGlmCisgICAgICA7CisgICAgKm4gPSAwOyAvKiBubyBkYXRhIHJldHVybmVkICovCiAgICAgaWYocmV0dXJuX2Vycm9yKQogICAgICAgcmV0dXJuIENVUkxFX0FHQUlOOwogICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOwogICB9CiAKLSAgLyogd2Ugb25seSByZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHJlYWQgd2hlbiB3ZSByZXR1cm4gT0sgKi8KICAgKm4gPSBucmVhZDsKICAgcmV0dXJuIENVUkxFX09LOwogfQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc2V0b3B0LmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZXRvcHQuYwppbmRleCA5MmNkNWIyLi4yZTQ5NGE2IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZXRvcHQuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZXRvcHQuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMTE5LDggKzExOSwxMSBAQAogI2RlZmluZSBDX1NTTFZFUlNJT05fVkFMVUUoeCkgKHggJiAweGZmZmYpCiAjZGVmaW5lIENfU1NMVkVSU0lPTl9NQVhfVkFMVUUoeCkgKHggJiAweGZmZmYwMDAwKQogCi1zdGF0aWMgQ1VSTGNvZGUgdnNldG9wdChzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCBDVVJMb3B0aW9uIG9wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgcGFyYW0pCisvKgorICogRG8gbm90IG1ha2UgQ3VybF92c2V0b3B0KCkgc3RhdGljOiBpdCBpcyBjYWxsZWQgZnJvbQorICogcGFja2FnZXMvT1M0MDAvY2NzaWRjdXJsLmMuCisgKi8KK0NVUkxjb2RlIEN1cmxfdnNldG9wdChzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCBDVVJMb3B0aW9uIG9wdGlvbiwgdmFfbGlzdCBwYXJhbSkKIHsKICAgY2hhciAqYXJncHRyOwogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKQEAgLTMxMiw3ICszMTUsNyBAQAogICAgICAqIFBhcnNlIHRoZSAkSE9NRS8ubmV0cmMgZmlsZQogICAgICAqLwogICAgIGFyZyA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7Ci0gICAgaWYoKGFyZyA8IENVUkxfTkVUUkNfSUdOT1JFRCkgfHwgKGFyZyA+IENVUkxfTkVUUkNfUkVRVUlSRUQpKQorICAgIGlmKChhcmcgPCBDVVJMX05FVFJDX0lHTk9SRUQpIHx8IChhcmcgPj0gQ1VSTF9ORVRSQ19MQVNUKSkKICAgICAgIHJldHVybiBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CiAgICAgZGF0YS0+c2V0LnVzZV9uZXRyYyA9IChlbnVtIENVUkxfTkVUUkNfT1BUSU9OKWFyZzsKICAgICBicmVhazsKQEAgLTMzOSw3ICszNDIsNyBAQAogICAgICAqIGN1cmwvY3VybC5oIGhlYWRlciBmaWxlLgogICAgICAqLwogICAgIGFyZyA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7Ci0gICAgaWYoKGFyZyA8IENVUkxfVElNRUNPTkRfTk9ORSkgfHwgKGFyZyA+IENVUkxfVElNRUNPTkRfTEFTVE1PRCkpCisgICAgaWYoKGFyZyA8IENVUkxfVElNRUNPTkRfTk9ORSkgfHwgKGFyZyA+PSBDVVJMX1RJTUVDT05EX0xBU1QpKQogICAgICAgcmV0dXJuIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKICAgICBkYXRhLT5zZXQudGltZWNvbmRpdGlvbiA9IChjdXJsX1RpbWVDb25kKWFyZzsKICAgICBicmVhazsKQEAgLTc0OSw3ICs3NTIsNyBAQAogICAgIH0KICAgICBlbHNlIGlmKHN0cmNhc2Vjb21wYXJlKGFyZ3B0ciwgIkZMVVNIIikpIHsKICAgICAgIC8qIGZsdXNoIGNvb2tpZXMgdG8gZmlsZSwgdGFrZXMgY2FyZSBvZiB0aGUgbG9ja2luZyAqLwotICAgICAgQ3VybF9mbHVzaF9jb29raWVzKGRhdGEsIDApOworICAgICAgQ3VybF9mbHVzaF9jb29raWVzKGRhdGEsIEZBTFNFKTsKICAgICB9CiAgICAgZWxzZSBpZihzdHJjYXNlY29tcGFyZShhcmdwdHIsICJSRUxPQUQiKSkgewogICAgICAgLyogcmVsb2FkIGNvb2tpZXMgZnJvbSBmaWxlICovCkBAIC04MDYsMTEgKzgwOSwxNiBAQAogICAgIGFyZyA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7CiAgICAgaWYoYXJnIDwgQ1VSTF9IVFRQX1ZFUlNJT05fTk9ORSkKICAgICAgIHJldHVybiBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CisjaWZkZWYgRU5BQkxFX1FVSUMKKyAgICBpZihhcmcgPT0gQ1VSTF9IVFRQX1ZFUlNJT05fMykKKyAgICAgIDsKKyAgICBlbHNlCisjZW5kaWYKICNpZm5kZWYgVVNFX05HSFRUUDIKICAgICBpZihhcmcgPj0gQ1VSTF9IVFRQX1ZFUlNJT05fMikKICAgICAgIHJldHVybiBDVVJMRV9VTlNVUFBPUlRFRF9QUk9UT0NPTDsKICNlbHNlCi0gICAgaWYoYXJnID4gQ1VSTF9IVFRQX1ZFUlNJT05fMl9QUklPUl9LTk9XTEVER0UpCisgICAgaWYoYXJnID49IENVUkxfSFRUUF9WRVJTSU9OX0xBU1QpCiAgICAgICByZXR1cm4gQ1VSTEVfVU5TVVBQT1JURURfUFJPVE9DT0w7CiAgICAgaWYoYXJnID09IENVUkxfSFRUUF9WRVJTSU9OX05PTkUpCiAgICAgICBhcmcgPSBDVVJMX0hUVFBfVkVSU0lPTl8yVExTOwpAQCAtMTEwMSw3ICsxMTA5LDcgQEAKICAgICAgKiBIb3cgZG8gYWNjZXNzIGZpbGVzIG92ZXIgRlRQLgogICAgICAqLwogICAgIGFyZyA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7Ci0gICAgaWYoKGFyZyA8IENVUkxGVFBNRVRIT0RfREVGQVVMVCkgfHwgKGFyZyA+IENVUkxGVFBNRVRIT0RfU0lOR0xFQ1dEKSkKKyAgICBpZigoYXJnIDwgQ1VSTEZUUE1FVEhPRF9ERUZBVUxUKSB8fCAoYXJnID49IENVUkxGVFBNRVRIT0RfTEFTVCkpCiAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOwogICAgIGRhdGEtPnNldC5mdHBfZmlsZW1ldGhvZCA9IChjdXJsX2Z0cGZpbGUpYXJnOwogICAgIGJyZWFrOwpAQCAtMTEyOCw3ICsxMTM2LDcgQEAKIAogICBjYXNlIENVUkxPUFRfRlRQX1NTTF9DQ0M6CiAgICAgYXJnID0gdmFfYXJnKHBhcmFtLCBsb25nKTsKLSAgICBpZigoYXJnIDwgQ1VSTEZUUFNTTF9DQ0NfTk9ORSkgfHwgKGFyZyA+IENVUkxGVFBTU0xfQ0NDX0FDVElWRSkpCisgICAgaWYoKGFyZyA8IENVUkxGVFBTU0xfQ0NDX05PTkUpIHx8IChhcmcgPj0gQ1VSTEZUUFNTTF9DQ0NfTEFTVCkpCiAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOwogICAgIGRhdGEtPnNldC5mdHBfY2NjID0gKGN1cmxfZnRwY2NjKWFyZzsKICAgICBicmVhazsKQEAgLTExNTYsNyArMTE2NCw3IEBACiAgICAgICogU2V0IGEgc3BlY2lmaWMgYXV0aCBmb3IgRlRQLVNTTCB0cmFuc2ZlcnMuCiAgICAgICovCiAgICAgYXJnID0gdmFfYXJnKHBhcmFtLCBsb25nKTsKLSAgICBpZigoYXJnIDwgQ1VSTEZUUEFVVEhfREVGQVVMVCkgfHwgKGFyZyA+IENVUkxGVFBBVVRIX1RMUykpCisgICAgaWYoKGFyZyA8IENVUkxGVFBBVVRIX0RFRkFVTFQpIHx8IChhcmcgPj0gQ1VSTEZUUEFVVEhfTEFTVCkpCiAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOwogICAgIGRhdGEtPnNldC5mdHBzc2xhdXRoID0gKGN1cmxfZnRwYXV0aClhcmc7CiAgICAgYnJlYWs7CkBAIC0xNzc1LDE2ICsxNzgzLDkgQEAKICAgICBhcmcgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwogCiAgICAgLyogT2J2aW91c2x5IHBlb3BsZSBhcmUgbm90IHJlYWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgdG9vIG1hbnkgdGhvdWdodAotICAgICAgIHRoaXMgYXJndW1lbnQgdG9vayBhIGJvb2xlYW4gd2hlbiBpdCB3YXNuJ3QgYW5kIG1pc3VzZWQgaXQuIFdlIHRodXMgYmFuCi0gICAgICAgMSBhcyBhIHNlbnNpYmxlIGlucHV0IGFuZCB3ZSB3YXJuIGFib3V0IGl0cyB1c2UuIFRoZW4gd2Ugb25seSBoYXZlIHRoZQotICAgICAgIDIgYWN0aW9uIGludGVybmFsbHkgc3RvcmVkIGFzIFRSVUUuICovCi0KLSAgICBpZigxID09IGFyZykgewotICAgICAgZmFpbGYoZGF0YSwgIkNVUkxPUFRfU1NMX1ZFUklGWUhPU1Qgbm8gbG9uZ2VyIHN1cHBvcnRzIDEgYXMgdmFsdWUhIik7Ci0gICAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOwotICAgIH0KLQotICAgIGRhdGEtPnNldC5zc2wucHJpbWFyeS52ZXJpZnlob3N0ID0gKDAgIT0gYXJnKSA/IFRSVUUgOiBGQUxTRTsKKyAgICAgICB0aGlzIGFyZ3VtZW50IHRvb2sgYSBib29sZWFuIHdoZW4gaXQgd2Fzbid0IGFuZCBtaXN1c2VkIGl0LgorICAgICAgIFRyZWF0IDEgYW5kIDIgdGhlIHNhbWUgKi8KKyAgICBkYXRhLT5zZXQuc3NsLnByaW1hcnkudmVyaWZ5aG9zdCA9IChib29sKSgoYXJnICYgMykgPyBUUlVFIDogRkFMU0UpOwogCiAgICAgLyogVXBkYXRlIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gc3NsX2NvbmZpZy4gKi8KICAgICBpZihkYXRhLT5jb25uKSB7CkBAIC0xNzk5LDE3ICsxODAwLDggQEAKICAgICAgKi8KICAgICBhcmcgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwogCi0gICAgLyogT2J2aW91c2x5IHBlb3BsZSBhcmUgbm90IHJlYWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQgdG9vIG1hbnkgdGhvdWdodAotICAgICAgIHRoaXMgYXJndW1lbnQgdG9vayBhIGJvb2xlYW4gd2hlbiBpdCB3YXNuJ3QgYW5kIG1pc3VzZWQgaXQuIFdlIHRodXMgYmFuCi0gICAgICAgMSBhcyBhIHNlbnNpYmxlIGlucHV0IGFuZCB3ZSB3YXJuIGFib3V0IGl0cyB1c2UuIFRoZW4gd2Ugb25seSBoYXZlIHRoZQotICAgICAgIDIgYWN0aW9uIGludGVybmFsbHkgc3RvcmVkIGFzIFRSVUUuICovCi0KLSAgICBpZigxID09IGFyZykgewotICAgICAgZmFpbGYoZGF0YSwgIkNVUkxPUFRfU1NMX1ZFUklGWUhPU1Qgbm8gbG9uZ2VyIHN1cHBvcnRzIDEgYXMgdmFsdWUhIik7Ci0gICAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOwotICAgIH0KLQotICAgIGRhdGEtPnNldC5wcm94eV9zc2wucHJpbWFyeS52ZXJpZnlob3N0ID0gKDAgIT0gYXJnKT9UUlVFOkZBTFNFOworICAgIC8qIFRyZWF0IGJvdGggMSBhbmQgMiBhcyBUUlVFICovCisgICAgZGF0YS0+c2V0LnByb3h5X3NzbC5wcmltYXJ5LnZlcmlmeWhvc3QgPSAoYm9vbCkoKGFyZyAmIDMpP1RSVUU6RkFMU0UpOwogCiAgICAgLyogVXBkYXRlIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gcHJveHlfc3NsX2NvbmZpZy4gKi8KICAgICBpZihkYXRhLT5jb25uKSB7CkBAIC0yMTMxLDcgKzIxMjMsNyBAQAogICAgICAqIE1ha2UgdHJhbnNmZXJzIGF0dGVtcHQgdG8gdXNlIFNTTC9UTFMuCiAgICAgICovCiAgICAgYXJnID0gdmFfYXJnKHBhcmFtLCBsb25nKTsKLSAgICBpZigoYXJnIDwgQ1VSTFVTRVNTTF9OT05FKSB8fCAoYXJnID4gQ1VSTFVTRVNTTF9BTEwpKQorICAgIGlmKChhcmcgPCBDVVJMVVNFU1NMX05PTkUpIHx8IChhcmcgPj0gQ1VSTFVTRVNTTF9MQVNUKSkKICAgICAgIHJldHVybiBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CiAgICAgZGF0YS0+c2V0LnVzZV9zc2wgPSAoY3VybF91c2Vzc2wpYXJnOwogICAgIGJyZWFrOwpAQCAtMjE0MSw2ICsyMTMzLDcgQEAKICAgICBkYXRhLT5zZXQuc3NsLmVuYWJsZV9iZWFzdCA9CiAgICAgICAoYm9vbCkoKGFyZyZDVVJMU1NMT1BUX0FMTE9XX0JFQVNUKSA/IFRSVUUgOiBGQUxTRSk7CiAgICAgZGF0YS0+c2V0LnNzbC5ub19yZXZva2UgPSAhIShhcmcgJiBDVVJMU1NMT1BUX05PX1JFVk9LRSk7CisgICAgZGF0YS0+c2V0LnNzbC5ub19wYXJ0aWFsY2hhaW4gPSAhIShhcmcgJiBDVVJMU1NMT1BUX05PX1BBUlRJQUxDSEFJTik7CiAgICAgYnJlYWs7CiAKICNpZm5kZWYgQ1VSTF9ESVNBQkxFX1BST1hZCkBAIC0yMTQ5LDYgKzIxNDIsNyBAQAogICAgIGRhdGEtPnNldC5wcm94eV9zc2wuZW5hYmxlX2JlYXN0ID0KICAgICAgIChib29sKSgoYXJnJkNVUkxTU0xPUFRfQUxMT1dfQkVBU1QpID8gVFJVRSA6IEZBTFNFKTsKICAgICBkYXRhLT5zZXQucHJveHlfc3NsLm5vX3Jldm9rZSA9ICEhKGFyZyAmIENVUkxTU0xPUFRfTk9fUkVWT0tFKTsKKyAgICBkYXRhLT5zZXQucHJveHlfc3NsLm5vX3BhcnRpYWxjaGFpbiA9ICEhKGFyZyAmIENVUkxTU0xPUFRfTk9fUEFSVElBTENIQUlOKTsKICAgICBicmVhazsKICNlbmRpZgogCkBAIC0yMjk0LDcgKzIyODgsNyBAQAogCiAgIGNhc2UgQ1VSTE9QVF9TU0hfS0VZRlVOQ1RJT046CiAgICAgLyogc2V0dGluZyB0byBOVUxMIGlzIGZpbmUgc2luY2UgdGhlIHNzaC5jIGZ1bmN0aW9ucyB0aGVtc2VsdmVzIHdpbGwKLSAgICAgICB0aGVuIHJldmVyIHRvIHVzZSB0aGUgaW50ZXJuYWwgZGVmYXVsdCAqLworICAgICAgIHRoZW4gcmV2ZXJ0IHRvIHVzZSB0aGUgaW50ZXJuYWwgZGVmYXVsdCAqLwogICAgIGRhdGEtPnNldC5zc2hfa2V5ZnVuYyA9IHZhX2FyZyhwYXJhbSwgY3VybF9zc2hrZXljYWxsYmFjayk7CiAgICAgYnJlYWs7CiAKQEAgLTIzNzEsOCArMjM2NSw3IEBACiAgIGNhc2UgQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFM6CiAgICAgLyogc2V0IHRoZSBiaXRtYXNrIGZvciB0aGUgcHJvdG9jb2xzIHRoYXQgbGliY3VybCBpcyBhbGxvd2VkIHRvIGZvbGxvdyB0bywKICAgICAgICBhcyBhIHN1YnNldCBvZiB0aGUgQ1VSTE9QVF9QUk9UT0NPTFMgb25lcy4gVGhhdCBtZWFucyB0aGUgcHJvdG9jb2wgbmVlZHMKLSAgICAgICB0byBiZSBzZXQgaW4gYm90aCBiaXRtYXNrcyB0byBiZSBhbGxvd2VkIHRvIGdldCByZWRpcmVjdGVkIHRvLiBEZWZhdWx0cwotICAgICAgIHRvIGFsbCBwcm90b2NvbHMgZXhjZXB0IEZJTEUgYW5kIFNDUC4gKi8KKyAgICAgICB0byBiZSBzZXQgaW4gYm90aCBiaXRtYXNrcyB0byBiZSBhbGxvd2VkIHRvIGdldCByZWRpcmVjdGVkIHRvLiAqLwogICAgIGRhdGEtPnNldC5yZWRpcl9wcm90b2NvbHMgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwogICAgIGJyZWFrOwogCkBAIC0yMzk4LDggKzIzOTEsMTggQEAKICAgICAvKiBTZXQgdGhlIGxpc3Qgb2YgbWFpbCByZWNpcGllbnRzICovCiAgICAgZGF0YS0+c2V0Lm1haWxfcmNwdCA9IHZhX2FyZyhwYXJhbSwgc3RydWN0IGN1cmxfc2xpc3QgKik7CiAgICAgYnJlYWs7CisgIGNhc2UgQ1VSTE9QVF9NQUlMX1JDUFRfQUxMTE9XRkFJTFM6CisgICAgLyogYWxsb3cgUkNQVCBUTyBjb21tYW5kIHRvIGZhaWwgZm9yIHNvbWUgcmVjaXBpZW50cyAqLworICAgIGRhdGEtPnNldC5tYWlsX3JjcHRfYWxsb3dmYWlscyA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOworICAgIGJyZWFrOwogI2VuZGlmCiAKKyAgY2FzZSBDVVJMT1BUX1NBU0xfQVVUSFpJRDoKKyAgICAvKiBBdXRob3Jpc2F0aW9uIGlkZW50aXR5IChpZGVudGl0eSB0byBhY3QgYXMpICovCisgICAgcmVzdWx0ID0gQ3VybF9zZXRzdHJvcHQoJmRhdGEtPnNldC5zdHJbU1RSSU5HX1NBU0xfQVVUSFpJRF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHBhcmFtLCBjaGFyICopKTsKKyAgICBicmVhazsKKwogICBjYXNlIENVUkxPUFRfU0FTTF9JUjoKICAgICAvKiBFbmFibGUvZGlzYWJsZSBTQVNMIGluaXRpYWwgcmVzcG9uc2UgKi8KICAgICBkYXRhLT5zZXQuc2FzbF9pciA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwpAQCAtMjUwMyw3ICsyNTA2LDcgQEAKIAogICBjYXNlIENVUkxPUFRfUlRTUF9TRVJWRVJfQ1NFUToKICAgICAvKiBTYW1lIGFzIHRoZSBhYm92ZSwgYnV0IGZvciBzZXJ2ZXItaW5pdGlhdGVkIHJlcXVlc3RzICovCi0gICAgZGF0YS0+c3RhdGUucnRzcF9uZXh0X2NsaWVudF9DU2VxID0gdmFfYXJnKHBhcmFtLCBsb25nKTsKKyAgICBkYXRhLT5zdGF0ZS5ydHNwX25leHRfc2VydmVyX0NTZXEgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9JTlRFUkxFQVZFREFUQToKQEAgLTI2MTUsMTQgKzI2MTgsMTIgQEAKICAgICByZXN1bHQgPSBDVVJMRV9OT1RfQlVJTFRfSU47CiAjZW5kaWYKICAgICBicmVhazsKLSNpZmRlZiBVU0VfTkdIVFRQMgogICBjYXNlIENVUkxPUFRfU1NMX0VOQUJMRV9OUE46CiAgICAgZGF0YS0+c2V0LnNzbF9lbmFibGVfbnBuID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9TU0xfRU5BQkxFX0FMUE46CiAgICAgZGF0YS0+c2V0LnNzbF9lbmFibGVfYWxwbiA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwotI2VuZGlmCiAjaWZkZWYgVVNFX1VOSVhfU09DS0VUUwogICBjYXNlIENVUkxPUFRfVU5JWF9TT0NLRVRfUEFUSDoKICAgICBkYXRhLT5zZXQuYWJzdHJhY3RfdW5peF9zb2NrZXQgPSBGQUxTRTsKQEAgLTI3MjgsNyArMjcyOSw4IEBACiAgICAgcmVzdWx0ID0gQ3VybF9zZXRzdHJvcHQoJmRhdGEtPnNldC5zdHJbU1RSSU5HX0FMVFNWQ10sIGFyZ3B0cik7CiAgICAgaWYocmVzdWx0KQogICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAodm9pZClDdXJsX2FsdHN2Y19sb2FkKGRhdGEtPmFzaSwgYXJncHRyKTsKKyAgICBpZihhcmdwdHIpCisgICAgICAodm9pZClDdXJsX2FsdHN2Y19sb2FkKGRhdGEtPmFzaSwgYXJncHRyKTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX0FMVFNWQ19DVFJMOgogICAgIGlmKCFkYXRhLT5hc2kpIHsKQEAgLTI3NzAsNyArMjc3Miw3IEBACiAKICAgdmFfc3RhcnQoYXJnLCB0YWcpOwogCi0gIHJlc3VsdCA9IHZzZXRvcHQoZGF0YSwgdGFnLCBhcmcpOworICByZXN1bHQgPSBDdXJsX3ZzZXRvcHQoZGF0YSwgdGFnLCBhcmcpOwogCiAgIHZhX2VuZChhcmcpOwogICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc2V0b3B0LmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZXRvcHQuaAppbmRleCBjNjU4ZTA0Li41ZTM0N2RkIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZXRvcHQuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZXRvcHQuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE4LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMjMsNyArMjMsNiBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogQ1VSTGNvZGUgQ3VybF9zZXRzdHJvcHQoY2hhciAqKmNoYXJwLCBjb25zdCBjaGFyICpzKTsKLUNVUkxjb2RlIEN1cmxfdnNldG9wdChzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCBDVVJMb3B0aW9uIG9wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IGFyZyk7CitDVVJMY29kZSBDdXJsX3ZzZXRvcHQoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwgQ1VSTG9wdGlvbiBvcHRpb24sIHZhX2xpc3QgYXJnKTsKIAogI2VuZGlmIC8qIEhFQURFUl9DVVJMX1NFVE9QVF9IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZXR1cC1vczQwMC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc2V0dXAtb3M0MDAuaAppbmRleCBhM2MyYTdiLi42MjlmZDk0IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zZXR1cC1vczQwMC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NldHVwLW9zNDAwLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTIwNiwxMSArMjA2LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqIGRzdGFkZHIsIGludCBhZGRybGVuKTsKIGV4dGVybiBpbnQgQ3VybF9vczQwMF9yZWN2ZnJvbShpbnQgc2QsIGNoYXIgKmJ1ZmZlciwgaW50IGJ1ZmxlbiwgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqZnJvbWFkZHIsIGludCAqYWRkcmxlbik7CitleHRlcm4gaW50IEN1cmxfb3M0MDBfZ2V0cGVlcm5hbWUoaW50IHNkLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCAqYWRkcmxlbik7CitleHRlcm4gaW50IEN1cmxfb3M0MDBfZ2V0c29ja25hbWUoaW50IHNkLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCAqYWRkcmxlbik7CiAKICNkZWZpbmUgY29ubmVjdCAgICAgICAgICAgICAgICAgQ3VybF9vczQwMF9jb25uZWN0CiAjZGVmaW5lIGJpbmQgICAgICAgICAgICAgICAgICAgIEN1cmxfb3M0MDBfYmluZAogI2RlZmluZSBzZW5kdG8gICAgICAgICAgICAgICAgICBDdXJsX29zNDAwX3NlbmR0bwogI2RlZmluZSByZWN2ZnJvbSAgICAgICAgICAgICAgICBDdXJsX29zNDAwX3JlY3Zmcm9tCisjZGVmaW5lIGdldHBlZXJuYW1lICAgICAgICAgICAgIEN1cmxfb3M0MDBfZ2V0cGVlcm5hbWUKKyNkZWZpbmUgZ2V0c29ja25hbWUgICAgICAgICAgICAgQ3VybF9vczQwMF9nZXRzb2NrbmFtZQogCiAjaWZkZWYgSEFWRV9MSUJaCiAjZGVmaW5lIHpsaWJWZXJzaW9uICAgICAgICAgICAgIEN1cmxfb3M0MDBfemxpYlZlcnNpb24KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NoYTI1Ni5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc2hhMjU2LmMKaW5kZXggZjkyODdhZi4uOTcyMTQxOCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc2hhMjU2LmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc2hhMjU2LmMKQEAgLTUsNyArNSw4IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOCwgRmxvcmluIFBldHJpdWMsIDxwZXRyaXVjLmZsb3JpbkBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcsIEZsb3JpbiBQZXRyaXVjLCA8cGV0cml1Yy5mbG9yaW5AZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMzUsMTYgKzM2LDEzNSBAQAogI2RlZmluZSBVU0VfT1BFTlNTTF9TSEEyNTYKICNlbmRpZgogCi0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfT1BFTlNTTCAqLwogCi0jaWZkZWYgVVNFX09QRU5TU0xfU0hBMjU2CisjaWZkZWYgVVNFX01CRURUTFMKKyNpbmNsdWRlIDxtYmVkdGxzL3ZlcnNpb24uaD4KKworI2lmKE1CRURUTFNfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMjA3MDAwMCkKKyAgI2RlZmluZSBIQVNfUkVTVUxUX0NPREVfQkFTRURfRlVOQ1RJT05TCisjZW5kaWYKKyNlbmRpZiAvKiBVU0VfTUJFRFRMUyAqLworCisvKiBQbGVhc2Uga2VlcCB0aGUgU1NMIGJhY2tlbmQtc3BlY2lmaWMgI2lmIGJyYW5jaGVzIGluIHRoaXMgb3JkZXI6CisgKgorICogMS4gVVNFX09QRU5TU0wKKyAqIDIuIFVTRV9HTlVUTFNfTkVUVExFCisgKiAzLiBVU0VfR05VVExTCisgKiA0LiBVU0VfTUJFRFRMUworICogNS4gVVNFX0NPTU1PTl9DUllQVE8KKyAqIDYuIFVTRV9XSU4zMl9DUllQVE8KKyAqCisgKiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgc2FtZSBTU0wgYnJhbmNoIGdldHMgYWN0aXZhdGVkIHRocm91Z2hvdXQgdGhpcyBzb3VyY2UKKyAqIGZpbGUgZXZlbiBpZiBtdWx0aXBsZSBiYWNrZW5kcyBhcmUgZW5hYmxlZCBhdCB0aGUgc2FtZSB0aW1lLgorICovCisKKyNpZiBkZWZpbmVkKFVTRV9PUEVOU1NMX1NIQTI1NikKKwogLyogV2hlbiBPcGVuU1NMIGlzIGF2YWlsYWJsZSB3ZSB1c2UgdGhlIFNIQTI1Ni1mdW5jdGlvbiBmcm9tIE9wZW5TU0wgKi8KICNpbmNsdWRlIDxvcGVuc3NsL3NoYS5oPgorCisjZWxpZiBkZWZpbmVkKFVTRV9HTlVUTFNfTkVUVExFKQorCisjaW5jbHVkZSA8bmV0dGxlL3NoYS5oPgorCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKworLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKwordHlwZWRlZiBzdHJ1Y3Qgc2hhMjU2X2N0eCBTSEEyNTZfQ1RYOworCitzdGF0aWMgdm9pZCBTSEEyNTZfSW5pdChTSEEyNTZfQ1RYICpjdHgpCit7CisgIHNoYTI1Nl9pbml0KGN0eCk7Cit9CisKK3N0YXRpYyB2b2lkIFNIQTI1Nl9VcGRhdGUoU0hBMjU2X0NUWCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICBzaGEyNTZfdXBkYXRlKGN0eCwgbGVuZ3RoLCBkYXRhKTsKK30KKworc3RhdGljIHZvaWQgU0hBMjU2X0ZpbmFsKHVuc2lnbmVkIGNoYXIgKmRpZ2VzdCwgU0hBMjU2X0NUWCAqY3R4KQoreworICBzaGEyNTZfZGlnZXN0KGN0eCwgU0hBMjU2X0RJR0VTVF9TSVpFLCBkaWdlc3QpOworfQorCisjZWxpZiBkZWZpbmVkKFVTRV9HTlVUTFMpCisKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKworI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLworI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKK3R5cGVkZWYgZ2NyeV9tZF9oZF90IFNIQTI1Nl9DVFg7CisKK3N0YXRpYyB2b2lkIFNIQTI1Nl9Jbml0KFNIQTI1Nl9DVFggKmN0eCkKK3sKKyAgZ2NyeV9tZF9vcGVuKGN0eCwgR0NSWV9NRF9TSEEyNTYsIDApOworfQorCitzdGF0aWMgdm9pZCBTSEEyNTZfVXBkYXRlKFNIQTI1Nl9DVFggKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgZ2NyeV9tZF93cml0ZSgqY3R4LCBkYXRhLCBsZW5ndGgpOworfQorCitzdGF0aWMgdm9pZCBTSEEyNTZfRmluYWwodW5zaWduZWQgY2hhciAqZGlnZXN0LCBTSEEyNTZfQ1RYICpjdHgpCit7CisgIG1lbWNweShkaWdlc3QsIGdjcnlfbWRfcmVhZCgqY3R4LCAwKSwgU0hBMjU2X0RJR0VTVF9MRU5HVEgpOworICBnY3J5X21kX2Nsb3NlKCpjdHgpOworfQorCisjZWxpZiBkZWZpbmVkKFVTRV9NQkVEVExTKQorCisjaW5jbHVkZSA8bWJlZHRscy9zaGEyNTYuaD4KKworI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLworI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKK3R5cGVkZWYgbWJlZHRsc19zaGEyNTZfY29udGV4dCBTSEEyNTZfQ1RYOworCitzdGF0aWMgdm9pZCBTSEEyNTZfSW5pdChTSEEyNTZfQ1RYICpjdHgpCit7CisjaWYgIWRlZmluZWQoSEFTX1JFU1VMVF9DT0RFX0JBU0VEX0ZVTkNUSU9OUykKKyAgbWJlZHRsc19zaGEyNTZfc3RhcnRzKGN0eCwgMCk7CisjZWxzZQorICAodm9pZCkgbWJlZHRsc19zaGEyNTZfc3RhcnRzX3JldChjdHgsIDApOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIFNIQTI1Nl9VcGRhdGUoU0hBMjU2X0NUWCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworI2lmICFkZWZpbmVkKEhBU19SRVNVTFRfQ09ERV9CQVNFRF9GVU5DVElPTlMpCisgIG1iZWR0bHNfc2hhMjU2X3VwZGF0ZShjdHgsIGRhdGEsIGxlbmd0aCk7CisjZWxzZQorICAodm9pZCkgbWJlZHRsc19zaGEyNTZfdXBkYXRlX3JldChjdHgsIGRhdGEsIGxlbmd0aCk7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgU0hBMjU2X0ZpbmFsKHVuc2lnbmVkIGNoYXIgKmRpZ2VzdCwgU0hBMjU2X0NUWCAqY3R4KQoreworI2lmICFkZWZpbmVkKEhBU19SRVNVTFRfQ09ERV9CQVNFRF9GVU5DVElPTlMpCisgIG1iZWR0bHNfc2hhMjU2X2ZpbmlzaChjdHgsIGRpZ2VzdCk7CisjZWxzZQorICAodm9pZCkgbWJlZHRsc19zaGEyNTZfZmluaXNoX3JldChjdHgsIGRpZ2VzdCk7CisjZW5kaWYKK30KKwogI2Vsc2UKIAogLyogV2hlbiBubyBvdGhlciBjcnlwdG8gbGlicmFyeSBpcyBhdmFpbGFibGUgd2UgdXNlIHRoaXMgY29kZSBzZWdtZW50ICovCiAKLS8qID09PT09IHN0YXJ0IC0gcHVibGljIGRvbWFpbiBTSEEyNTYgaW1wbGVtZW50YXRpb24gPT09PT0gKi8KIC8qIFRoaXMgaXMgYmFzZWQgb24gU0hBMjU2IGltcGxlbWVudGF0aW9uIGluIExpYlRvbUNyeXB0IHRoYXQgd2FzIHJlbGVhc2VkIGludG8KICAqIHB1YmxpYyBkb21haW4gYnkgVG9tIFN0IERlbmlzLiAqLwogCkBAIC05NSw3ICsyMTUsOCBAQAogICB1bnNpZ25lZCBsb25nIHN0YXRlWzhdLCBjdXJsZW47CiAgIHVuc2lnbmVkIGNoYXIgYnVmWzY0XTsKIH0gU0hBMjU2X0NUWDsKLS8qIHRoZSBLIGFycmF5ICovCisKKy8qIFRoZSBLIGFycmF5ICovCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBLWzY0XSA9IHsKICAgMHg0MjhhMmY5OFVMLCAweDcxMzc0NDkxVUwsIDB4YjVjMGZiY2ZVTCwgMHhlOWI1ZGJhNVVMLCAweDM5NTZjMjViVUwsCiAgIDB4NTlmMTExZjFVTCwgMHg5MjNmODJhNFVMLCAweGFiMWM1ZWQ1VUwsIDB4ZDgwN2FhOThVTCwgMHgxMjgzNWIwMVVMLApAQCAtMTExLDYgKzIzMiw3IEBACiAgIDB4NjgyZTZmZjNVTCwgMHg3NDhmODJlZVVMLCAweDc4YTU2MzZmVUwsIDB4ODRjODc4MTRVTCwgMHg4Y2M3MDIwOFVMLAogICAweDkwYmVmZmZhVUwsIDB4YTQ1MDZjZWJVTCwgMHhiZWY5YTNmN1VMLCAweGM2NzE3OGYyVUwKIH07CisKIC8qIFZhcmlvdXMgbG9naWNhbCBmdW5jdGlvbnMgKi8KICNkZWZpbmUgUk9SYyh4LCB5KSBcCiAoKCgoKHVuc2lnbmVkIGxvbmcpKHgpICYgMHhGRkZGRkZGRlVMKSA+PiAodW5zaWduZWQgbG9uZykoKHkpICYgMzEpKSB8IFwKQEAgLTEyMywxMyArMjQ1LDE1IEBACiAjZGVmaW5lIFNpZ21hMSh4KSAgIChTKHgsIDYpIF4gUyh4LCAxMSkgXiBTKHgsIDI1KSkKICNkZWZpbmUgR2FtbWEwKHgpICAgKFMoeCwgNykgXiBTKHgsIDE4KSBeIFIoeCwgMykpCiAjZGVmaW5lIEdhbW1hMSh4KSAgIChTKHgsIDE3KSBeIFMoeCwgMTkpIF4gUih4LCAxMCkpCi0vKiBjb21wcmVzcyA1MTItYml0cyAqLworCisvKiBDb21wcmVzcyA1MTItYml0cyAqLwogc3RhdGljIGludCBzaGEyNTZfY29tcHJlc3Moc3RydWN0IHNoYTI1Nl9zdGF0ZSAqbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpidWYpCiB7CiAgIHVuc2lnbmVkIGxvbmcgU1s4XSwgV1s2NF07CiAgIGludCBpOwotICAvKiBjb3B5IHN0YXRlIGludG8gUyAqLworCisgIC8qIENvcHkgc3RhdGUgaW50byBTICovCiAgIGZvcihpID0gMDsgaSA8IDg7IGkrKykgewogICAgIFNbaV0gPSBtZC0+c3RhdGVbaV07CiAgIH0KQEAgLTE0MSw2ICsyNjUsNyBAQAogICAgIFdbaV0gPSBHYW1tYTEoV1tpIC0gMl0pICsgV1tpIC0gN10gKyBHYW1tYTAoV1tpIC0gMTVdKSArCiAgICAgICBXW2kgLSAxNl07CiAgIH0KKwogICAvKiBDb21wcmVzcyAqLwogI2RlZmluZSBSTkQoYSxiLGMsZCxlLGYsZyxoLGkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgdW5zaWduZWQgbG9uZyB0MCA9IGggKyBTaWdtYTEoZSkgKyBDaChlLCBmLCBnKSArIEtbaV0gKyBXW2ldOyBcCkBAIC0xNTMsMTIgKzI3OCwxNSBAQAogICAgIHQgPSBTWzddOyBTWzddID0gU1s2XTsgU1s2XSA9IFNbNV07IFNbNV0gPSBTWzRdOwogICAgIFNbNF0gPSBTWzNdOyBTWzNdID0gU1syXTsgU1syXSA9IFNbMV07IFNbMV0gPSBTWzBdOyBTWzBdID0gdDsKICAgfQotICAvKiBmZWVkYmFjayAqLworCisgIC8qIEZlZWRiYWNrICovCiAgIGZvcihpID0gMDsgaSA8IDg7IGkrKykgewogICAgIG1kLT5zdGF0ZVtpXSA9IG1kLT5zdGF0ZVtpXSArIFNbaV07CiAgIH0KKwogICByZXR1cm4gMDsKIH0KKwogLyogSW5pdGlhbGl6ZSB0aGUgaGFzaCBzdGF0ZSAqLwogc3RhdGljIHZvaWQgU0hBMjU2X0luaXQoc3RydWN0IHNoYTI1Nl9zdGF0ZSAqbWQpCiB7CkBAIC0xNzMsNyArMzAxLDggQEAKICAgbWQtPnN0YXRlWzZdID0gMHgxRjgzRDlBQlVMOwogICBtZC0+c3RhdGVbN10gPSAweDVCRTBDRDE5VUw7CiB9Ci0vKioKKworLyoKICAgIFByb2Nlc3MgYSBibG9jayBvZiBtZW1vcnkgdGhvdWdoIHRoZSBoYXNoCiAgICBAcGFyYW0gbWQgICAgIFRoZSBoYXNoIHN0YXRlCiAgICBAcGFyYW0gaW4gICAgIFRoZSBkYXRhIHRvIGhhc2gKQEAgLTE4NSw2ICszMTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW5sZW4pCiB7CiAgIHVuc2lnbmVkIGxvbmcgbjsKKwogI2RlZmluZSBibG9ja19zaXplIDY0CiAgIGlmKG1kLT5jdXJsZW4gPiBzaXplb2YobWQtPmJ1ZikpCiAgICAgcmV0dXJuIC0xOwpAQCAtMjEwLDkgKzM0MCwxMSBAQAogICAgICAgfQogICAgIH0KICAgfQorCiAgIHJldHVybiAwOwogfQotLyoqCisKKy8qCiAgICBUZXJtaW5hdGUgdGhlIGhhc2ggdG8gZ2V0IHRoZSBkaWdlc3QKICAgIEBwYXJhbSBtZCAgVGhlIGhhc2ggc3RhdGUKICAgIEBwYXJhbSBvdXQgW291dF0gVGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBoYXNoICgzMiBieXRlcykKQEAgLTIyMiwxMyArMzU0LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2hhMjU2X3N0YXRlICptZCkKIHsKICAgaW50IGk7CisKICAgaWYobWQtPmN1cmxlbiA+PSBzaXplb2YobWQtPmJ1ZikpCiAgICAgcmV0dXJuIC0xOwotICAvKiBpbmNyZWFzZSB0aGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlICovCisKKyAgLyogSW5jcmVhc2UgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSAqLwogICBtZC0+bGVuZ3RoICs9IG1kLT5jdXJsZW4gKiA4OwotICAvKiBhcHBlbmQgdGhlICcxJyBiaXQgKi8KKworICAvKiBBcHBlbmQgdGhlICcxJyBiaXQgKi8KICAgbWQtPmJ1ZlttZC0+Y3VybGVuKytdID0gKHVuc2lnbmVkIGNoYXIpMHg4MDsKLSAgLyogaWYgdGhlIGxlbmd0aCBpcyBjdXJyZW50bHkgYWJvdmUgNTYgYnl0ZXMgd2UgYXBwZW5kIHplcm9zCisKKyAgLyogSWYgdGhlIGxlbmd0aCBpcyBjdXJyZW50bHkgYWJvdmUgNTYgYnl0ZXMgd2UgYXBwZW5kIHplcm9zCiAgICAqIHRoZW4gY29tcHJlc3MuICBUaGVuIHdlIGNhbiBmYWxsIGJhY2sgdG8gcGFkZGluZyB6ZXJvcyBhbmQgbGVuZ3RoCiAgICAqIGVuY29kaW5nIGxpa2Ugbm9ybWFsLgogICAgKi8KQEAgLTIzOSwyOSArMzc1LDQ0IEBACiAgICAgc2hhMjU2X2NvbXByZXNzKG1kLCBtZC0+YnVmKTsKICAgICBtZC0+Y3VybGVuID0gMDsKICAgfQotICAvKiBwYWQgdXAgdG8gNTYgYnl0ZXMgb2YgemVyb2VzICovCisKKyAgLyogUGFkIHVwIHRvIDU2IGJ5dGVzIG9mIHplcm9lcyAqLwogICB3aGlsZShtZC0+Y3VybGVuIDwgNTYpIHsKICAgICBtZC0+YnVmW21kLT5jdXJsZW4rK10gPSAodW5zaWduZWQgY2hhcikwOwogICB9Ci0gIC8qIHN0b3JlIGxlbmd0aCAqLworCisgIC8qIFN0b3JlIGxlbmd0aCAqLwogICBXUEFfUFVUX0JFNjQobWQtPmJ1ZiArIDU2LCBtZC0+bGVuZ3RoKTsKICAgc2hhMjU2X2NvbXByZXNzKG1kLCBtZC0+YnVmKTsKLSAgLyogY29weSBvdXRwdXQgKi8KKworICAvKiBDb3B5IG91dHB1dCAqLwogICBmb3IoaSA9IDA7IGkgPCA4OyBpKyspCiAgICAgV1BBX1BVVF9CRTMyKG91dCArICg0ICogaSksIG1kLT5zdGF0ZVtpXSk7CisKICAgcmV0dXJuIDA7CiB9Ci0vKiA9PT09PSBlbmQgLSBwdWJsaWMgZG9tYWluIFNIQTI1NiBpbXBsZW1lbnRhdGlvbiA9PT09PSAqLwogCi0jZW5kaWYKKyNlbmRpZiAvKiBDUllQVE8gTElCUyAqLwogCi12b2lkIEN1cmxfc2hhMjU2aXQodW5zaWduZWQgY2hhciAqb3V0YnVmZmVyLCAvKiAzMiB1bnNpZ25lZCBjaGFycyAqLwotICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0KQorLyoKKyAqIEN1cmxfc2hhMjU2aXQoKQorICoKKyAqIEdlbmVyYXRlcyBhIFNIQTI1NiBoYXNoIGZvciB0aGUgZ2l2ZW4gaW5wdXQgZGF0YS4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIG91dHB1dCBbaW4vb3V0XSAtIFRoZSBvdXRwdXQgYnVmZmVyLgorICogaW5wdXQgIFtpbl0gICAgIC0gVGhlIGlucHV0IGRhdGEuCisgKiBsZW5ndGggW2luXSAgICAgLSBUaGUgaW5wdXQgbGVuZ3RoLgorICovCit2b2lkIEN1cmxfc2hhMjU2aXQodW5zaWduZWQgY2hhciAqb3V0cHV0LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgbGVuZ3RoKQogewogICBTSEEyNTZfQ1RYIGN0eDsKKwogICBTSEEyNTZfSW5pdCgmY3R4KTsKLSAgU0hBMjU2X1VwZGF0ZSgmY3R4LCBpbnB1dCwgY3VybHhfdXp0b3VpKHN0cmxlbigoY2hhciAqKWlucHV0KSkpOwotICBTSEEyNTZfRmluYWwob3V0YnVmZmVyLCAmY3R4KTsKKyAgU0hBMjU2X1VwZGF0ZSgmY3R4LCBpbnB1dCwgY3VybHhfdXp0b3VpKGxlbmd0aCkpOworICBTSEEyNTZfRmluYWwob3V0cHV0LCAmY3R4KTsKIH0KIAogI2VuZGlmIC8qIENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc2xpc3QuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NsaXN0LmMKaW5kZXggMzkyYjg0ZC4uZDI3ZmJlMSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc2xpc3QuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zbGlzdC5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zbGlzdC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc2xpc3QuaAppbmRleCBkNzNkYmY2Li43OTliM2MwIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zbGlzdC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NsaXN0LmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NtYi5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc21iLmMKaW5kZXggNzZjOTlhMi4uMTJmOTkyNSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc21iLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc21iLmMKQEAgLTYsNyArNiw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIEJpbGwgTmFnZWwgPHduYWdlbEB0eWNvaW50LmNvbT4sIEV4YWNxIFRlY2hub2xvZ2llcwotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTgsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNjQsOCArNjQsNyBAQAogc3RhdGljIENVUkxjb2RlIHNtYl9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgQ1VSTGNvZGUgc3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbWF0dXJlKTsKIHN0YXRpYyBDVVJMY29kZSBzbWJfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZCk7Ci1zdGF0aWMgaW50IHNtYl9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2Nrcyk7CitzdGF0aWMgaW50IHNtYl9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MpOwogc3RhdGljIENVUkxjb2RlIHNtYl9wYXJzZV91cmxfcGF0aChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogCiAvKgpAQCAtNjA3LDYgKzYwNiw3IEBACiB7CiAgIHN0cnVjdCBzbWJfY29ubiAqc21iYyA9ICZjb25uLT5wcm90by5zbWJjOwogICBDVVJMY29kZSByZXN1bHQ7CisgICptc2cgPSBOVUxMOyAvKiBpZiBpdCByZXR1cm5zIGVhcmx5ICovCiAKICAgLyogQ2hlY2sgaWYgdGhlcmUgaXMgZGF0YSBpbiB0aGUgdHJhbnNmZXIgYnVmZmVyICovCiAgIGlmKCFzbWJjLT5zZW5kX3NpemUgJiYgc21iYy0+dXBsb2FkX3NpemUpIHsKQEAgLTY4Miw3ICs2ODIsOCBAQAogCiAgIHN3aXRjaChzbWJjLT5zdGF0ZSkgewogICBjYXNlIFNNQl9ORUdPVElBVEU6Ci0gICAgaWYoaC0+c3RhdHVzIHx8IHNtYmMtPmdvdCA8IHNpemVvZigqbnJzcCkgKyBzaXplb2Yoc21iYy0+Y2hhbGxlbmdlKSAtIDEpIHsKKyAgICBpZigoc21iYy0+Z290IDwgc2l6ZW9mKCpucnNwKSArIHNpemVvZihzbWJjLT5jaGFsbGVuZ2UpIC0gMSkgfHwKKyAgICAgICBoLT5zdGF0dXMpIHsKICAgICAgIGNvbm5jbG9zZShjb25uLCAiU01COiBuZWdvdGlhdGlvbiBmYWlsZWQiKTsKICAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7CiAgICAgfQpAQCAtNzg1LDYgKzc4Niw4IEBACiAgIGNhc2UgU01CX09QRU46CiAgICAgaWYoaC0+c3RhdHVzIHx8IHNtYmMtPmdvdCA8IHNpemVvZihzdHJ1Y3Qgc21iX250X2NyZWF0ZV9yZXNwb25zZSkpIHsKICAgICAgIHJlcS0+cmVzdWx0ID0gQ1VSTEVfUkVNT1RFX0ZJTEVfTk9UX0ZPVU5EOworICAgICAgaWYoaC0+c3RhdHVzID09IHNtYl9zd2FwMzIoU01CX0VSUl9OT0FDQ0VTUykpCisgICAgICAgIHJlcS0+cmVzdWx0ID0gQ1VSTEVfUkVNT1RFX0FDQ0VTU19ERU5JRUQ7CiAgICAgICBuZXh0X3N0YXRlID0gU01CX1RSRUVfRElTQ09OTkVDVDsKICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTkzNCwxMiArOTM3LDggQEAKICAgcmV0dXJuIENVUkxFX09LOwogfQogCi1zdGF0aWMgaW50IHNtYl9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKK3N0YXRpYyBpbnQgc21iX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2NrcykKIHsKLSAgaWYoIW51bXNvY2tzKQotICAgIHJldHVybiBHRVRTT0NLX0JMQU5LOwotCiAgIHNvY2tzWzBdID0gY29ubi0+c29ja1tGSVJTVFNPQ0tFVF07CiAgIHJldHVybiBHRVRTT0NLX1JFQURTT0NLKDApIHwgR0VUU09DS19XUklURVNPQ0soMCk7CiB9CkBAIC05NTcsNyArOTU2LDYgQEAKIAogc3RhdGljIENVUkxjb2RlIHNtYl9wYXJzZV91cmxfcGF0aChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKICAgc3RydWN0IHNtYl9yZXF1ZXN0ICpyZXEgPSBkYXRhLT5yZXEucHJvdG9wOwogICBzdHJ1Y3Qgc21iX2Nvbm4gKnNtYmMgPSAmY29ubi0+cHJvdG8uc21iYzsKQEAgLTk2NSw3ICs5NjMsOCBAQAogICBjaGFyICpzbGFzaDsKIAogICAvKiBVUkwgZGVjb2RlIHRoZSBwYXRoICovCi0gIHJlc3VsdCA9IEN1cmxfdXJsZGVjb2RlKGRhdGEsIGRhdGEtPnN0YXRlLnVwLnBhdGgsIDAsICZwYXRoLCBOVUxMLCBUUlVFKTsKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ3VybF91cmxkZWNvZGUoZGF0YSwgZGF0YS0+c3RhdGUudXAucGF0aCwgMCwgJnBhdGgsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOwogICBpZihyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc210cC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc210cC5jCmluZGV4IDRhMzQ2MmIuLmUxODcyODcgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NtdHAuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zbXRwLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTI3LDYgKzI3LDkgQEAKICAqIFJGQzQ3NTIgVGhlIEtlcmJlcm9zIFY1ICgiR1NTQVBJIikgU0FTTCBNZWNoYW5pc20KICAqIFJGQzQ5NTQgU01UUCBBdXRoZW50aWNhdGlvbgogICogUkZDNTMyMSBTTVRQIHByb3RvY29sCisgKiBSRkM1ODkwIEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcyBmb3IgQXBwbGljYXRpb25zIChJRE5BKQorICogUkZDNjUzMSBTTVRQIEV4dGVuc2lvbiBmb3IgSW50ZXJuYXRpb25hbGl6ZWQgRW1haWwKKyAqIFJGQzY1MzIgSW50ZXJuYXRpb25hbGl6ZWQgRW1haWwgSGVhZGVycwogICogUkZDNjc0OSBPQXV0aCAyLjAgQXV0aG9yaXphdGlvbiBGcmFtZXdvcmsKICAqIFJGQzgzMTQgVXNlIG9mIFRMUyBmb3IgRW1haWwgU3VibWlzc2lvbiBhbmQgQWNjZXNzCiAgKiBEcmFmdCAgIFNNVFAgVVJMIEludGVyZmFjZSAgIDxkcmFmdC1lYXJoYXJ0LXVybC1zbXRwLTAwLnR4dD4KQEAgLTk1LDEzICs5OCwxNCBAQAogc3RhdGljIENVUkxjb2RlIHNtdHBfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpOwogc3RhdGljIENVUkxjb2RlIHNtdHBfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZCk7CiBzdGF0aWMgQ1VSTGNvZGUgc210cF9tdWx0aV9zdGF0ZW1hY2goc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKTsKLXN0YXRpYyBpbnQgc210cF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpOworc3RhdGljIGludCBzbXRwX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2Nrcyk7CiBzdGF0aWMgQ1VSTGNvZGUgc210cF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvcGhhc2VfZG9uZSk7CiBzdGF0aWMgQ1VSTGNvZGUgc210cF9zZXR1cF9jb25uZWN0aW9uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiBzdGF0aWMgQ1VSTGNvZGUgc210cF9wYXJzZV91cmxfb3B0aW9ucyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogc3RhdGljIENVUkxjb2RlIHNtdHBfcGFyc2VfdXJsX3BhdGgoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKIHN0YXRpYyBDVVJMY29kZSBzbXRwX3BhcnNlX2N1c3RvbV9yZXF1ZXN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CitzdGF0aWMgQ1VSTGNvZGUgc210cF9wYXJzZV9hZGRyZXNzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY29uc3QgY2hhciAqZnFtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmFkZHJlc3MsIHN0cnVjdCBob3N0bmFtZSAqaG9zdCk7CiBzdGF0aWMgQ1VSTGNvZGUgc210cF9wZXJmb3JtX2F1dGgoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjb25zdCBjaGFyICptZWNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmluaXRyZXNwKTsKIHN0YXRpYyBDVVJMY29kZSBzbXRwX2NvbnRpbnVlX2F1dGgoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjb25zdCBjaGFyICpyZXNwKTsKQEAgLTM1OSwxMCArMzYzLDggQEAKICAqLwogc3RhdGljIENVUkxjb2RlIHNtdHBfcGVyZm9ybV9zdGFydHRscyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotCiAgIC8qIFNlbmQgdGhlIFNUQVJUVExTIGNvbW1hbmQgKi8KLSAgcmVzdWx0ID0gQ3VybF9wcF9zZW5kZigmY29ubi0+cHJvdG8uc210cGMucHAsICIlcyIsICJTVEFSVFRMUyIpOworICBDVVJMY29kZSByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5zbXRwYy5wcCwgIiVzIiwgIlNUQVJUVExTIik7CiAKICAgaWYoIXJlc3VsdCkKICAgICBzdGF0ZShjb25uLCBTTVRQX1NUQVJUVExTKTsKQEAgLTM3OCwxMSArMzgwLDEwIEBACiAgKi8KIHN0YXRpYyBDVVJMY29kZSBzbXRwX3BlcmZvcm1fdXBncmFkZV90bHMoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgc3RydWN0IHNtdHBfY29ubiAqc210cGMgPSAmY29ubi0+cHJvdG8uc210cGM7Ci0KICAgLyogU3RhcnQgdGhlIFNTTCBjb25uZWN0aW9uICovCi0gIHJlc3VsdCA9IEN1cmxfc3NsX2Nvbm5lY3Rfbm9uYmxvY2tpbmcoY29ubiwgRklSU1RTT0NLRVQsICZzbXRwYy0+c3NsZG9uZSk7CisgIHN0cnVjdCBzbXRwX2Nvbm4gKnNtdHBjID0gJmNvbm4tPnByb3RvLnNtdHBjOworICBDVVJMY29kZSByZXN1bHQgPSBDdXJsX3NzbF9jb25uZWN0X25vbmJsb2NraW5nKGNvbm4sIEZJUlNUU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzbXRwYy0+c3NsZG9uZSk7CiAKICAgaWYoIXJlc3VsdCkgewogICAgIGlmKHNtdHBjLT5zdGF0ZSAhPSBTTVRQX1VQR1JBREVUTFMpCkBAIC00ODUsMTMgKzQ4Niw1NSBAQAogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKICAgc3RydWN0IFNNVFAgKnNtdHAgPSBkYXRhLT5yZXEucHJvdG9wOwogCi0gIC8qIFNlbmQgdGhlIGNvbW1hbmQgKi8KLSAgaWYoc210cC0+cmNwdCkKLSAgICByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5zbXRwYy5wcCwgIiVzICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAtPmN1c3RvbSAmJiBzbXRwLT5jdXN0b21bMF0gIT0gJ1wwJyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBzbXRwLT5jdXN0b20gOiAiVlJGWSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzbXRwLT5yY3B0LT5kYXRhKTsKKyAgaWYoc210cC0+cmNwdCkgeworICAgIC8qIFdlIG5vdGlmeSB0aGUgc2VydmVyIHdlIGFyZSBzZW5kaW5nIFVURi04IGRhdGEgaWYgYSkgaXQgc3VwcG9ydHMgdGhlCisgICAgICAgU01UUFVURjggZXh0ZW5zaW9uIGFuZCBiKSBUaGUgbWFpbGJveCBjb250YWlucyBVVEYtOCBjaGFyYWFjdGVycywgaW4KKyAgICAgICBlaXRoZXIgdGhlIGxvY2FsIGFkZHJlc3Mgb3IgaG9zdCBuYW1lIHBhcnRzLiBUaGlzIGlzIHJlZ2FyZGxlc3Mgb2YKKyAgICAgICB3aGV0aGVyIHRoZSBob3N0IG5hbWUgaXMgZW5jb2RlZCB1c2luZyBJRE4gQUNFICovCisgICAgYm9vbCB1dGY4ID0gRkFMU0U7CisKKyAgICBpZigoIXNtdHAtPmN1c3RvbSkgfHwgKCFzbXRwLT5jdXN0b21bMF0pKSB7CisgICAgICBjaGFyICphZGRyZXNzID0gTlVMTDsKKyAgICAgIHN0cnVjdCBob3N0bmFtZSBob3N0ID0geyBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH07CisKKyAgICAgIC8qIFBhcnNlIHRoZSBtYWlsYm94IHRvIHZlcmlmeSBpbnRvIHRoZSBsb2NhbCBhZGRyZXNzIGFuZCBob3N0IG5hbWUKKyAgICAgICAgIHBhcnRzLCBjb252ZXJ0aW5nIHRoZSBob3N0IG5hbWUgdG8gYW4gSUROIEEtbGFiZWwgaWYgbmVjZXNzYXJ5ICovCisgICAgICByZXN1bHQgPSBzbXRwX3BhcnNlX2FkZHJlc3MoY29ubiwgc210cC0+cmNwdC0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcmVzcywgJmhvc3QpOworICAgICAgaWYocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAvKiBFc3RhYmxpc2ggd2hldGhlciB3ZSBzaG91bGQgcmVwb3J0IFNNVFBVVEY4IHRvIHRoZSBzZXJ2ZXIgZm9yIHRoaXMKKyAgICAgICAgIG1haWxib3ggYXMgcGVyIFJGQy02NTMxIHNlY3QuIDMuMSBwb2ludCA2ICovCisgICAgICB1dGY4ID0gKGNvbm4tPnByb3RvLnNtdHBjLnV0Zjhfc3VwcG9ydGVkKSAmJgorICAgICAgICAgICAgICgoaG9zdC5lbmNhbGxvYykgfHwgKCFDdXJsX2lzX0FTQ0lJX25hbWUoYWRkcmVzcykpIHx8CisgICAgICAgICAgICAgICghQ3VybF9pc19BU0NJSV9uYW1lKGhvc3QubmFtZSkpKTsKKworICAgICAgLyogU2VuZCB0aGUgVlJGWSBjb21tYW5kIChOb3RlOiBUaGUgaG9zdCBuYW1lIHBhcnQgbWF5IGJlIGFic2VudCB3aGVuIHRoZQorICAgICAgICAgaG9zdCBpcyBhIGxvY2FsIHN5c3RlbSkgKi8KKyAgICAgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLCAiVlJGWSAlcyVzJXMlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QubmFtZSA/ICJAIiA6ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0Lm5hbWUgPyBob3N0Lm5hbWUgOiAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmOCA/ICIgU01UUFVURjgiIDogIiIpOworCisgICAgICBDdXJsX2ZyZWVfaWRuY29udmVydGVkX2hvc3RuYW1lKCZob3N0KTsKKyAgICAgIGZyZWUoYWRkcmVzcyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgLyogRXN0YWJsaXNoIHdoZXRoZXIgd2Ugc2hvdWxkIHJlcG9ydCB0aGF0IHdlIHN1cHBvcnQgU01UUFVURjggZm9yIEVYUE4KKyAgICAgICAgIGNvbW1hbmRzIHRvIHRoZSBzZXJ2ZXIgYXMgcGVyIFJGQy02NTMxIHNlY3QuIDMuMSBwb2ludCA2ICovCisgICAgICB1dGY4ID0gKGNvbm4tPnByb3RvLnNtdHBjLnV0Zjhfc3VwcG9ydGVkKSAmJgorICAgICAgICAgICAgICghc3RyY21wKHNtdHAtPmN1c3RvbSwgIkVYUE4iKSk7CisKKyAgICAgIC8qIFNlbmQgdGhlIGN1c3RvbSByZWNpcGllbnQgYmFzZWQgY29tbWFuZCBzdWNoIGFzIHRoZSBFWFBOIGNvbW1hbmQgKi8KKyAgICAgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLCAiJXMgJXMlcyIsIHNtdHAtPmN1c3RvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC0+cmNwdC0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmOCA/ICIgU01UUFVURjgiIDogIiIpOworICAgIH0KKyAgfQogICBlbHNlCisgICAgLyogU2VuZCB0aGUgbm9uLXJlY2lwaWVudCBiYXNlZCBjb21tYW5kIHN1Y2ggYXMgSEVMUCAqLwogICAgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLCAiJXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC0+Y3VzdG9tICYmIHNtdHAtPmN1c3RvbVswXSAhPSAnXDAnID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAtPmN1c3RvbSA6ICJIRUxQIik7CkBAIC01MTYsMjIgKzU1OSw4NiBAQAogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAKKyAgLyogV2Ugbm90aWZ5IHRoZSBzZXJ2ZXIgd2UgYXJlIHNlbmRpbmcgVVRGLTggZGF0YSBpZiBhKSBpdCBzdXBwb3J0cyB0aGUKKyAgICAgU01UUFVURjggZXh0ZW5zaW9uIGFuZCBiKSBUaGUgbWFpbGJveCBjb250YWlucyBVVEYtOCBjaGFyYWFjdGVycywgaW4KKyAgICAgZWl0aGVyIHRoZSBsb2NhbCBhZGRyZXNzIG9yIGhvc3QgbmFtZSBwYXJ0cy4gVGhpcyBpcyByZWdhcmRsZXNzIG9mCisgICAgIHdoZXRoZXIgdGhlIGhvc3QgbmFtZSBpcyBlbmNvZGVkIHVzaW5nIElETiBBQ0UgKi8KKyAgYm9vbCB1dGY4ID0gRkFMU0U7CisKICAgLyogQ2FsY3VsYXRlIHRoZSBGUk9NIHBhcmFtZXRlciAqLwotICBpZighZGF0YS0+c2V0LnN0cltTVFJJTkdfTUFJTF9GUk9NXSkKKyAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfTUFJTF9GUk9NXSkgeworICAgIGNoYXIgKmFkZHJlc3MgPSBOVUxMOworICAgIHN0cnVjdCBob3N0bmFtZSBob3N0ID0geyBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH07CisKKyAgICAvKiBQYXJzZSB0aGUgRlJPTSBtYWlsYm94IGludG8gdGhlIGxvY2FsIGFkZHJlc3MgYW5kIGhvc3QgbmFtZSBwYXJ0cywKKyAgICAgICBjb252ZXJ0aW5nIHRoZSBob3N0IG5hbWUgdG8gYW4gSUROIEEtbGFiZWwgaWYgbmVjZXNzYXJ5ICovCisgICAgcmVzdWx0ID0gc210cF9wYXJzZV9hZGRyZXNzKGNvbm4sIGRhdGEtPnNldC5zdHJbU1RSSU5HX01BSUxfRlJPTV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyZXNzLCAmaG9zdCk7CisgICAgaWYocmVzdWx0KQorICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIC8qIEVzdGFibGlzaCB3aGV0aGVyIHdlIHNob3VsZCByZXBvcnQgU01UUFVURjggdG8gdGhlIHNlcnZlciBmb3IgdGhpcworICAgICAgIG1haWxib3ggYXMgcGVyIFJGQy02NTMxIHNlY3QuIDMuMSBwb2ludCA0IGFuZCBzZWN0LiAzLjQgKi8KKyAgICB1dGY4ID0gKGNvbm4tPnByb3RvLnNtdHBjLnV0Zjhfc3VwcG9ydGVkKSAmJgorICAgICAgICAgICAoKGhvc3QuZW5jYWxsb2MpIHx8ICghQ3VybF9pc19BU0NJSV9uYW1lKGFkZHJlc3MpKSB8fAorICAgICAgICAgICAgKCFDdXJsX2lzX0FTQ0lJX25hbWUoaG9zdC5uYW1lKSkpOworCisgICAgaWYoaG9zdC5uYW1lKSB7CisgICAgICBmcm9tID0gYXByaW50ZigiPCVzQCVzPiIsIGFkZHJlc3MsIGhvc3QubmFtZSk7CisKKyAgICAgIEN1cmxfZnJlZV9pZG5jb252ZXJ0ZWRfaG9zdG5hbWUoJmhvc3QpOworICAgIH0KKyAgICBlbHNlCisgICAgICAvKiBBbiBpbnZhbGlkIG1haWxib3ggd2FzIHByb3ZpZGVkIGJ1dCB3ZSdsbCBzaW1wbHkgbGV0IHRoZSBzZXJ2ZXIgd29ycnkKKyAgICAgICAgIGFib3V0IHRoYXQgYW5kIHJlcGx5IHdpdGggYSA1MDEgZXJyb3IgKi8KKyAgICAgIGZyb20gPSBhcHJpbnRmKCI8JXM+IiwgYWRkcmVzcyk7CisKKyAgICBmcmVlKGFkZHJlc3MpOworICB9CisgIGVsc2UKICAgICAvKiBOdWxsIHJldmVyc2UtcGF0aCwgUkZDLTUzMjEsIHNlY3QuIDMuNi4zICovCiAgICAgZnJvbSA9IHN0cmR1cCgiPD4iKTsKLSAgZWxzZSBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19NQUlMX0ZST01dWzBdID09ICc8JykKLSAgICBmcm9tID0gYXByaW50ZigiJXMiLCBkYXRhLT5zZXQuc3RyW1NUUklOR19NQUlMX0ZST01dKTsKLSAgZWxzZQotICAgIGZyb20gPSBhcHJpbnRmKCI8JXM+IiwgZGF0YS0+c2V0LnN0cltTVFJJTkdfTUFJTF9GUk9NXSk7CiAKICAgaWYoIWZyb20pCiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKICAgLyogQ2FsY3VsYXRlIHRoZSBvcHRpb25hbCBBVVRIIHBhcmFtZXRlciAqLwogICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19NQUlMX0FVVEhdICYmIGNvbm4tPnByb3RvLnNtdHBjLnNhc2wuYXV0aHVzZWQpIHsKLSAgICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19NQUlMX0FVVEhdWzBdICE9ICdcMCcpCi0gICAgICBhdXRoID0gYXByaW50ZigiJXMiLCBkYXRhLT5zZXQuc3RyW1NUUklOR19NQUlMX0FVVEhdKTsKKyAgICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19NQUlMX0FVVEhdWzBdICE9ICdcMCcpIHsKKyAgICAgIGNoYXIgKmFkZHJlc3MgPSBOVUxMOworICAgICAgc3RydWN0IGhvc3RuYW1lIGhvc3QgPSB7IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfTsKKworICAgICAgLyogUGFyc2UgdGhlIEFVVEggbWFpbGJveCBpbnRvIHRoZSBsb2NhbCBhZGRyZXNzIGFuZCBob3N0IG5hbWUgcGFydHMsCisgICAgICAgICBjb252ZXJ0aW5nIHRoZSBob3N0IG5hbWUgdG8gYW4gSUROIEEtbGFiZWwgaWYgbmVjZXNzYXJ5ICovCisgICAgICByZXN1bHQgPSBzbXRwX3BhcnNlX2FkZHJlc3MoY29ubiwgZGF0YS0+c2V0LnN0cltTVFJJTkdfTUFJTF9BVVRIXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcmVzcywgJmhvc3QpOworICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgIGZyZWUoZnJvbSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICB9CisKKyAgICAgIC8qIEVzdGFibGlzaCB3aGV0aGVyIHdlIHNob3VsZCByZXBvcnQgU01UUFVURjggdG8gdGhlIHNlcnZlciBmb3IgdGhpcworICAgICAgICAgbWFpbGJveCBhcyBwZXIgUkZDLTY1MzEgc2VjdC4gMy4xIHBvaW50IDQgYW5kIHNlY3QuIDMuNCAqLworICAgICAgaWYoKCF1dGY4KSAmJiAoY29ubi0+cHJvdG8uc210cGMudXRmOF9zdXBwb3J0ZWQpICYmCisgICAgICAgICAoKGhvc3QuZW5jYWxsb2MpIHx8ICghQ3VybF9pc19BU0NJSV9uYW1lKGFkZHJlc3MpKSB8fAorICAgICAgICAgICghQ3VybF9pc19BU0NJSV9uYW1lKGhvc3QubmFtZSkpKSkKKyAgICAgICAgdXRmOCA9IFRSVUU7CisKKyAgICAgIGlmKGhvc3QubmFtZSkgeworICAgICAgICBmcmVlKGZyb20pOworICAgICAgICBmcm9tID0gYXByaW50ZigiPCVzQCVzPiIsIGFkZHJlc3MsIGhvc3QubmFtZSk7CisKKyAgICAgICAgQ3VybF9mcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZSgmaG9zdCk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIC8qIEFuIGludmFsaWQgbWFpbGJveCB3YXMgcHJvdmlkZWQgYnV0IHdlJ2xsIHNpbXBseSBsZXQgdGhlIHNlcnZlcgorICAgICAgICAgICB3b3JyeSBhYm91dCBpdCAqLworICAgICAgICBhdXRoID0gYXByaW50ZigiPCVzPiIsIGFkZHJlc3MpOworCisgICAgICBmcmVlKGFkZHJlc3MpOworICAgICAgaWYoIWZyb20pCisgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIH0KICAgICBlbHNlCiAgICAgICAvKiBFbXB0eSBBVVRILCBSRkMtMjU1NCwgc2VjdC4gNSAqLwogICAgICAgYXV0aCA9IHN0cmR1cCgiPD4iKTsKQEAgLTU2NSw2ICs2NzIsNyBAQAogICAgIGlmKHJlc3VsdCkgewogICAgICAgZnJlZShmcm9tKTsKICAgICAgIGZyZWUoYXV0aCk7CisKICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC01ODcsMTkgKzY5NSwzMyBAQAogICAgIH0KICAgfQogCisgIC8qIElmIHRoZSBtYWlsYm94ZXMgaW4gdGhlIEZST00gYW5kIEFVVEggcGFyYW1ldGVycyBkb24ndCBpbmNsdWRlIGEgVVRGLTgKKyAgICAgYmFzZWQgYWRkcmVzcyB0aGVuIHF1aWNrbHkgc2NhbiB0aHJvdWdoIHRoZSByZWNpcGllbnQgbGlzdCBhbmQgY2hlY2sgaWYKKyAgICAgYW55IHRoZXJlIGRvLCBhcyB3ZSBuZWVkIHRvIGNvcnJlY3RseSBpZGVudGlmeSBvdXIgc3VwcG9ydCBmb3IgU01UUFVURjgKKyAgICAgaW4gdGhlIGVudmVsb3BlLCBhcyBwZXIgUkZDLTY1MzEgc2VjdC4gMy40ICovCisgIGlmKGNvbm4tPnByb3RvLnNtdHBjLnV0Zjhfc3VwcG9ydGVkICYmICF1dGY4KSB7CisgICAgc3RydWN0IFNNVFAgKnNtdHAgPSBkYXRhLT5yZXEucHJvdG9wOworICAgIHN0cnVjdCBjdXJsX3NsaXN0ICpyY3B0ID0gc210cC0+cmNwdDsKKworICAgIHdoaWxlKHJjcHQgJiYgIXV0ZjgpIHsKKyAgICAgIC8qIERvZXMgdGhlIGhvc3QgbmFtZSBjb250YWluIG5vbi1BU0NJSSBjaGFyYWN0ZXJzPyAqLworICAgICAgaWYoIUN1cmxfaXNfQVNDSUlfbmFtZShyY3B0LT5kYXRhKSkKKyAgICAgICAgdXRmOCA9IFRSVUU7CisKKyAgICAgIHJjcHQgPSByY3B0LT5uZXh0OworICAgIH0KKyAgfQorCiAgIC8qIFNlbmQgdGhlIE1BSUwgY29tbWFuZCAqLwotICBpZighYXV0aCAmJiAhc2l6ZSkKLSAgICByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5zbXRwYy5wcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJNQUlMIEZST006JXMiLCBmcm9tKTsKLSAgZWxzZSBpZihhdXRoICYmICFzaXplKQotICAgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1BSUwgRlJPTTolcyBBVVRIPSVzIiwgZnJvbSwgYXV0aCk7Ci0gIGVsc2UgaWYoYXV0aCAmJiBzaXplKQotICAgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1BSUwgRlJPTTolcyBBVVRIPSVzIFNJWkU9JXMiLCBmcm9tLCBhdXRoLCBzaXplKTsKLSAgZWxzZQotICAgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1BSUwgRlJPTTolcyBTSVpFPSVzIiwgZnJvbSwgc2l6ZSk7CisgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICJNQUlMIEZST006JXMlcyVzJXMlcyVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tLCAgICAgICAgICAgICAgICAgLyogTWFuZGF0b3J5ICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGggPyAiIEFVVEg9IiA6ICIiLCAvKiBPcHRpb25hbCBvbiBBVVRIIHN1cHBvcnQgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aCA/IGF1dGggOiAiIiwgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID8gIiBTSVpFPSIgOiAiIiwgLyogT3B0aW9uYWwgb24gU0laRSBzdXBwb3J0ICAqLworICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPyBzaXplIDogIiIsICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRmOCA/ICIgU01UUFVURjgiICAgIC8qIEludGVybmF0aW9uYWxpc2VkIG1haWxib3ggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIiKTsgICAgICAgICAgLyogaW5jbHVkZWQgaW4gb3VyIGVudmVsb3BlICAqLwogCiAgIGZyZWUoZnJvbSk7CiAgIGZyZWUoYXV0aCk7CkBAIC02MjMsMTQgKzc0NSwyOCBAQAogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIHN0cnVjdCBTTVRQICpzbXRwID0gZGF0YS0+cmVxLnByb3RvcDsKKyAgY2hhciAqYWRkcmVzcyA9IE5VTEw7CisgIHN0cnVjdCBob3N0bmFtZSBob3N0ID0geyBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH07CisKKyAgLyogUGFyc2UgdGhlIHJlY2lwaWVudCBtYWlsYm94IGludG8gdGhlIGxvY2FsIGFkZHJlc3MgYW5kIGhvc3QgbmFtZSBwYXJ0cywKKyAgICAgY29udmVydGluZyB0aGUgaG9zdCBuYW1lIHRvIGFuIElETiBBLWxhYmVsIGlmIG5lY2Vzc2FyeSAqLworICByZXN1bHQgPSBzbXRwX3BhcnNlX2FkZHJlc3MoY29ubiwgc210cC0+cmNwdC0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRyZXNzLCAmaG9zdCk7CisgIGlmKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OwogCiAgIC8qIFNlbmQgdGhlIFJDUFQgVE8gY29tbWFuZCAqLwotICBpZihzbXRwLT5yY3B0LT5kYXRhWzBdID09ICc8JykKLSAgICByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5zbXRwYy5wcCwgIlJDUFQgVE86JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC0+cmNwdC0+ZGF0YSk7CisgIGlmKGhvc3QubmFtZSkKKyAgICByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5zbXRwYy5wcCwgIlJDUFQgVE86PCVzQCVzPiIsIGFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0Lm5hbWUpOwogICBlbHNlCi0gICAgcmVzdWx0ID0gQ3VybF9wcF9zZW5kZigmY29ubi0+cHJvdG8uc210cGMucHAsICJSQ1BUIFRPOjwlcz4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC0+cmNwdC0+ZGF0YSk7CisgICAgLyogQW4gaW52YWxpZCBtYWlsYm94IHdhcyBwcm92aWRlZCBidXQgd2UnbGwgc2ltcGx5IGxldCB0aGUgc2VydmVyIHdvcnJ5CisgICAgICAgYWJvdXQgdGhhdCBhbmQgcmVwbHkgd2l0aCBhIDUwMSBlcnJvciAqLworICAgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLCAiUkNQVCBUTzo8JXM+IiwgYWRkcmVzcyk7CisKKyAgQ3VybF9mcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZSgmaG9zdCk7CisgIGZyZWUoYWRkcmVzcyk7CisKICAgaWYoIXJlc3VsdCkKICAgICBzdGF0ZShjb25uLCBTTVRQX1JDUFQpOwogCkBAIC02NDUsMTAgKzc4MSw4IEBACiAgKi8KIHN0YXRpYyBDVVJMY29kZSBzbXRwX3BlcmZvcm1fcXVpdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotCiAgIC8qIFNlbmQgdGhlIFFVSVQgY29tbWFuZCAqLwotICByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5zbXRwYy5wcCwgIiVzIiwgIlFVSVQiKTsKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ3VybF9wcF9zZW5kZigmY29ubi0+cHJvdG8uc210cGMucHAsICIlcyIsICJRVUlUIik7CiAKICAgaWYoIXJlc3VsdCkKICAgICBzdGF0ZShjb25uLCBTTVRQX1FVSVQpOwpAQCAtNzIwLDcgKzg1NCw3IEBACiAgICAgICByZXN1bHQgPSBDVVJMRV9SRU1PVEVfQUNDRVNTX0RFTklFRDsKICAgICB9CiAgIH0KLSAgZWxzZSB7CisgIGVsc2UgaWYobGVuID49IDQpIHsKICAgICBsaW5lICs9IDQ7CiAgICAgbGVuIC09IDQ7CiAKQEAgLTczMiw2ICs4NjYsMTAgQEAKICAgICBlbHNlIGlmKGxlbiA+PSA0ICYmICFtZW1jbXAobGluZSwgIlNJWkUiLCA0KSkKICAgICAgIHNtdHBjLT5zaXplX3N1cHBvcnRlZCA9IFRSVUU7CiAKKyAgICAvKiBEb2VzIHRoZSBzZXJ2ZXIgc3VwcG9ydCB0aGUgVVRGLTggY2FwYWJpbGl0eT8gKi8KKyAgICBlbHNlIGlmKGxlbiA+PSA4ICYmICFtZW1jbXAobGluZSwgIlNNVFBVVEY4IiwgOCkpCisgICAgICBzbXRwYy0+dXRmOF9zdXBwb3J0ZWQgPSBUUlVFOworCiAgICAgLyogRG9lcyB0aGUgc2VydmVyIHN1cHBvcnQgYXV0aGVudGljYXRpb24/ICovCiAgICAgZWxzZSBpZihsZW4gPj0gNSAmJiAhbWVtY21wKGxpbmUsICJBVVRIICIsIDUpKSB7CiAgICAgICBzbXRwYy0+YXV0aF9zdXBwb3J0ZWQgPSBUUlVFOwpAQCAtNzkxLDYgKzkyOSwxMCBAQAogICAgICAgICByZXN1bHQgPSBzbXRwX3BlcmZvcm1fYXV0aGVudGljYXRpb24oY29ubik7CiAgICAgfQogICB9CisgIGVsc2UgeworICAgIGZhaWxmKGRhdGEsICJVbmV4cGVjdGVkbHkgc2hvcnQgRUhMTyByZXNwb25zZSIpOworICAgIHJlc3VsdCA9IENVUkxFX1dFSVJEX1NFUlZFUl9SRVBMWTsKKyAgfQogCiAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC05MTcsMjUgKzEwNTksNTMgQEAKICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CiAgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwogICBzdHJ1Y3QgU01UUCAqc210cCA9IGRhdGEtPnJlcS5wcm90b3A7CisgIGJvb2wgaXNfc210cF9lcnIgPSBGQUxTRTsKKyAgYm9vbCBpc19zbXRwX2Jsb2NraW5nX2VyciA9IEZBTFNFOwogCiAgICh2b2lkKWluc3RhdGU7IC8qIG5vIHVzZSBmb3IgdGhpcyB5ZXQgKi8KIAotICBpZihzbXRwY29kZS8xMDAgIT0gMikgewotICAgIGZhaWxmKGRhdGEsICJSQ1BUIGZhaWxlZDogJWQiLCBzbXRwY29kZSk7Ci0gICAgcmVzdWx0ID0gQ1VSTEVfU0VORF9FUlJPUjsKKyAgaXNfc210cF9lcnIgPSAoc210cGNvZGUvMTAwICE9IDIpID8gVFJVRSA6IEZBTFNFOworCisgIC8qIElmIHRoZXJlJ3MgbXVsdGlwbGUgUkNQVCBUTyB0byBiZSBpc3N1ZWQsIGl0J3MgcG9zc2libGUgdG8gaWdub3JlIGVycm9ycworICAgICBhbmQgcHJvY2VlZCB3aXRoIG9ubHkgdGhlIHZhbGlkIGFkZHJlc3Nlcy4gKi8KKyAgaXNfc210cF9ibG9ja2luZ19lcnIgPQorICAgIChpc19zbXRwX2VyciAmJiAhZGF0YS0+c2V0Lm1haWxfcmNwdF9hbGxvd2ZhaWxzKSA/IFRSVUUgOiBGQUxTRTsKKworICBpZihpc19zbXRwX2VycikgeworICAgIC8qIFJlbWVtYmVyaW5nIHRoZSBsYXN0IGZhaWx1cmUgd2hpY2ggd2UgY2FuIHJlcG9ydCBpZiBhbGwgIlJDUFQgVE8iIGhhdmUKKyAgICAgICBmYWlsZWQgYW5kIHdlIGNhbm5vdCBwcm9jZWVkLiAqLworICAgIHNtdHAtPnJjcHRfbGFzdF9lcnJvciA9IHNtdHBjb2RlOworCisgICAgaWYoaXNfc210cF9ibG9ja2luZ19lcnIpIHsKKyAgICAgIGZhaWxmKGRhdGEsICJSQ1BUIGZhaWxlZDogJWQiLCBzbXRwY29kZSk7CisgICAgICByZXN1bHQgPSBDVVJMRV9TRU5EX0VSUk9SOworICAgIH0KICAgfQogICBlbHNlIHsKKyAgICAvKiBTb21lIFJDUFQgVE8gY29tbWFuZHMgaGF2ZSBzdWNjZWVkZWQuICovCisgICAgc210cC0+cmNwdF9oYWRfb2sgPSBUUlVFOworICB9CisKKyAgaWYoIWlzX3NtdHBfYmxvY2tpbmdfZXJyKSB7CiAgICAgc210cC0+cmNwdCA9IHNtdHAtPnJjcHQtPm5leHQ7CiAKICAgICBpZihzbXRwLT5yY3B0KQogICAgICAgLyogU2VuZCB0aGUgbmV4dCBSQ1BUIFRPIGNvbW1hbmQgKi8KICAgICAgIHJlc3VsdCA9IHNtdHBfcGVyZm9ybV9yY3B0X3RvKGNvbm4pOwogICAgIGVsc2UgewotICAgICAgLyogU2VuZCB0aGUgREFUQSBjb21tYW5kICovCi0gICAgICByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5zbXRwYy5wcCwgIiVzIiwgIkRBVEEiKTsKKyAgICAgIC8qIFdlIHdlcmVuJ3QgYWJsZSB0byBpc3N1ZSBhIHN1Y2Nlc3NmdWwgUkNQVCBUTyBjb21tYW5kIHdoaWxlIGdvaW5nCisgICAgICAgICBvdmVyIHJlY2lwaWVudHMgKHBvdGVudGlhbGx5IG11bHRpcGxlKS4gU2VuZGluZyBiYWNrIGxhc3QgZXJyb3IuICovCisgICAgICBpZighc210cC0+cmNwdF9oYWRfb2spIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgIlJDUFQgZmFpbGVkOiAlZCAobGFzdCBlcnJvcikiLCBzbXRwLT5yY3B0X2xhc3RfZXJyb3IpOworICAgICAgICByZXN1bHQgPSBDVVJMRV9TRU5EX0VSUk9SOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIC8qIFNlbmQgdGhlIERBVEEgY29tbWFuZCAqLworICAgICAgICByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5zbXRwYy5wcCwgIiVzIiwgIkRBVEEiKTsKIAotICAgICAgaWYoIXJlc3VsdCkKLSAgICAgICAgc3RhdGUoY29ubiwgU01UUF9EQVRBKTsKKyAgICAgICAgaWYoIXJlc3VsdCkKKyAgICAgICAgICBzdGF0ZShjb25uLCBTTVRQX0RBVEEpOworICAgICAgfQogICAgIH0KICAgfQogCkBAIC0xMTE5LDEwICsxMjg5LDkgQEAKIH0KIAogLyogRm9yIHRoZSBTTVRQICJwcm90b2NvbCBjb25uZWN0IiBhbmQgImRvaW5nIiBwaGFzZXMgb25seSAqLwotc3RhdGljIGludCBzbXRwX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKK3N0YXRpYyBpbnQgc210cF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MpCiB7Ci0gIHJldHVybiBDdXJsX3BwX2dldHNvY2soJmNvbm4tPnByb3RvLnNtdHBjLnBwLCBzb2NrcywgbnVtc29ja3MpOworICByZXR1cm4gQ3VybF9wcF9nZXRzb2NrKCZjb25uLT5wcm90by5zbXRwYy5wcCwgc29ja3MpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEyOTAsNiArMTQ1OSwxMiBAQAogICAvKiBTdG9yZSB0aGUgZmlyc3QgcmVjaXBpZW50IChvciBOVUxMIGlmIG5vdCBzcGVjaWZpZWQpICovCiAgIHNtdHAtPnJjcHQgPSBkYXRhLT5zZXQubWFpbF9yY3B0OwogCisgIC8qIFRyYWNrIG9mIHdoZXRoZXIgd2UndmUgc3VjY2Vzc2Z1bGx5IHNlbnQgYXQgbGVhc3Qgb25lIFJDUFQgVE8gY29tbWFuZCAqLworICBzbXRwLT5yY3B0X2hhZF9vayA9IEZBTFNFOworCisgIC8qIFRyYWNrIG9mIHRoZSBsYXN0IGVycm9yIHdlJ3ZlIHJlY2VpdmVkIGJ5IHNlbmRpbmcgUkNQVCBUTyBjb21tYW5kICovCisgIHNtdHAtPnJjcHRfbGFzdF9lcnJvciA9IDA7CisKICAgLyogSW5pdGlhbCBkYXRhIGNoYXJhY3RlciBpcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIGxpbmU6IGl0IGlzIGltcGxpY2l0bHkKICAgICAgcHJlY2VkZWQgYnkgYSB2aXJ0dWFsIENSTEYuICovCiAgIHNtdHAtPnRyYWlsaW5nX2NybGYgPSBUUlVFOwpAQCAtMTU0MCw2ICsxNzE1LDc2IEBACiAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIHNtdHBfcGFyc2VfYWRkcmVzcygpCisgKgorICogUGFyc2UgdGhlIGZ1bGx5IHF1YWxpZmllZCBtYWlsYm94IGFkZHJlc3MgaW50byBhIGxvY2FsIGFkZHJlc3MgcGFydCBhbmQgdGhlCisgKiBob3N0IG5hbWUsIGNvbnZlcnRpbmcgdGhlIGhvc3QgbmFtZSB0byBhbiBJRE4gQS1sYWJlbCwgYXMgcGVyIFJGQy01ODkwLCBpZgorICogbmVjZXNzYXJ5LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogY29ubiAgW2luXSAgICAgICAgICAgICAgLSBUaGUgY29ubmVjdGlvbiBoYW5kbGUuCisgKiBmcW1hICBbaW5dICAgICAgICAgICAgICAtIFRoZSBmdWxseSBxdWFsaWZpZWQgbWFpbGJveCBhZGRyZXNzICh3aGljaCBtYXkgb3IKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF5IG5vdCBjb250YWluIFVURi04IGNoYXJhY3RlcnMpLgorICogYWRkcmVzcyAgICAgICAgW2luL291dF0gLSBBIG5ldyBhbGxvY2F0ZWQgYnVmZmVyIHdoaWNoIGhvbGRzIHRoZSBsb2NhbAorICogICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzIHBhcnQgb2YgdGhlIG1haWxib3guIFRoaXMgYnVmZmVyIG11c3QgYmUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSdlZCBieSB0aGUgY2FsbGVyLgorICogaG9zdCAgICAgICAgICAgW2luL291dF0gLSBUaGUgaG9zdCBuYW1lIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHRoZSBvcmlnaW5hbCwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG9wdGlvbmFsbHkgZW5jb2RlZCwgaG9zdCBuYW1lLgorICogICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJsX2ZyZWVfaWRuY29udmVydGVkX2hvc3RuYW1lKCkgbXVzdCBiZSBjYWxsZWQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZSB0aGUgY2FsbGVyIGhhcyBmaW5pc2hlZCB3aXRoIHRoZSBzdHJ1Y3R1cmUuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICoKKyAqIE5vdGVzOgorICoKKyAqIFNob3VsZCBhIFVURi04IGhvc3QgbmFtZSByZXF1aXJlIGNvbnZlcnNpb24gdG8gSUROIEFDRSBhbmQgd2UgY2Fubm90IGhvbm9yCisgKiB0aGF0IGNvbnZlcnRpb24gdGhlbiB3ZSBzaGFsbCByZXR1cm4gc3VjY2Vzcy4gVGhpcyBhbGxvdyB0aGUgY2FsbGVyIHRvIHNlbmQKKyAqIHRoZSBkYXRhIHRvIHRoZSBzZXJ2ZXIgYXMgYSBVLWxhYmVsIChhcyBwZXIgUkZDLTY1MzEgc2VjdC4gMy4yKS4KKyAqCisgKiBJZiBhbiBtYWlsYm94ICdAJyBzZXBlcmF0b3IgY2Fubm90IGJlIGxvY2F0ZWQgdGhlbiB0aGUgbWFpbGJveCBpcyBjb25zaWRlcmVkCisgKiB0byBiZSBlaXRoZXIgYSBsb2NhbCBtYWlsYm94IG9yIGFuIGludmFsaWQgbWFpbGJveCAoZGVwZW5kaW5nIG9uIHdoYXQgdGhlCisgKiBjYWxsaW5nIGZ1bmN0aW9uIGRlZW1zIGl0IHRvIGJlKSB0aGVuIHRoZSBpbnB1dCB3aWxsIHNpbXBseSBiZSByZXR1cm5lZCBpbgorICogdGhlIGFkZHJlc3MgcGFydCB3aXRoIHRoZSBob3N0IG5hbWUgYmVpbmcgTlVMTC4KKyAqLworc3RhdGljIENVUkxjb2RlIHNtdHBfcGFyc2VfYWRkcmVzcyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGNvbnN0IGNoYXIgKmZxbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiphZGRyZXNzLCBzdHJ1Y3QgaG9zdG5hbWUgKmhvc3QpCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBzaXplX3QgbGVuZ3RoOworCisgIC8qIER1cGxpY2F0ZSB0aGUgZnVsbHkgcXVhbGlmaWVkIGVtYWlsIGFkZHJlc3Mgc28gd2UgY2FuIG1hbmlwdWxhdGUgaXQsCisgICAgIGVuc3VyaW5nIGl0IGRvZXNuJ3QgY29udGFpbiB0aGUgZGVsaW1pdGVycyBpZiBzcGVjaWZpZWQgKi8KKyAgY2hhciAqZHVwID0gc3RyZHVwKGZxbWFbMF0gPT0gJzwnID8gZnFtYSArIDEgIDogZnFtYSk7CisgIGlmKCFkdXApCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgbGVuZ3RoID0gc3RybGVuKGR1cCk7CisgIGlmKGR1cFtsZW5ndGggLSAxXSA9PSAnPicpCisgICAgZHVwW2xlbmd0aCAtIDFdID0gJ1wwJzsKKworICAvKiBFeHRyYWN0IHRoZSBob3N0IG5hbWUgZnJvbSB0aGUgYWRkcmVzc3MgKGlmIHdlIGNhbikgKi8KKyAgaG9zdC0+bmFtZSA9IHN0cnBicmsoZHVwLCAiQCIpOworICBpZihob3N0LT5uYW1lKSB7CisgICAgKmhvc3QtPm5hbWUgPSAnXDAnOworICAgIGhvc3QtPm5hbWUgPSBob3N0LT5uYW1lICsgMTsKKworICAgIC8qIEF0dGVtcHQgdG8gY29udmVydCB0aGUgaG9zdCBuYW1lIHRvIElETiBBQ0UgKi8KKyAgICAodm9pZCkgQ3VybF9pZG5jb252ZXJ0X2hvc3RuYW1lKGNvbm4sIGhvc3QpOworCisgICAgLyogSWYgQ3VybF9pZG5jb252ZXJ0X2hvc3RuYW1lKCkgZmFpbHMgdGhlbiB3ZSBzaGFsbCBhdHRlbXB0IHRvIGNvbnRpbnVlCisgICAgICAgYW5kIHNlbmQgdGhlIGhvc3QgbmFtZSB1c2luZyBVVEYtOCByYXRoZXIgdGhhbiBhcyA3LWJpdCBBQ0UgKHdoaWNoIGlzCisgICAgICAgb3VyIHByZWZlcmVuY2UpICovCisgIH0KKworICAvKiBFeHRyYWN0IHRoZSBsb2NhbCBhZGRyZXNzIGZyb20gdGhlIG1haWxib3ggKi8KKyAgKmFkZHJlc3MgPSBkdXA7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwogQ1VSTGNvZGUgQ3VybF9zbXRwX2VzY2FwZV9lb2Ioc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjb25zdCBzc2l6ZV90IG5yZWFkKQogewogICAvKiBXaGVuIHNlbmRpbmcgYSBTTVRQIHBheWxvYWQgd2UgbXVzdCBkZXRlY3QgQ1JMRi4gc2VxdWVuY2VzIG1ha2luZyBzdXJlCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zbXRwLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zbXRwLmgKaW5kZXggYjY3MzQwYS4uMTY0YTE3NSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc210cC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NtdHAuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDA5IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNTUsNiArNTUsOSBAQAogICBjdXJsX3BwX3RyYW5zZmVyIHRyYW5zZmVyOwogICBjaGFyICpjdXN0b207ICAgICAgICAgICAgLyogQ3VzdG9tIFJlcXVlc3QgKi8KICAgc3RydWN0IGN1cmxfc2xpc3QgKnJjcHQ7IC8qIFJlY2lwaWVudCBsaXN0ICovCisgIGJvb2wgcmNwdF9oYWRfb2s7ICAgICAgICAvKiBXaGV0aGVyIGFueSBvZiBSQ1BUIFRPIGNvbW1hbmRzIChkZXBlbmRzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbCBudW1iZXIgb2YgcmVjaXBpZW50cykgc3VjY2VlZGVkIHNvIGZhciAqLworICBpbnQgcmNwdF9sYXN0X2Vycm9yOyAgICAgLyogVGhlIGxhc3QgZXJyb3IgcmVjZWl2ZWQgZm9yIFJDUFQgVE8gY29tbWFuZCAqLwogICBzaXplX3QgZW9iOyAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSBFT0IgKEVuZCBPZiBCb2R5KSB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGJlZW4gcmVjZWl2ZWQgc28gZmFyICovCiAgIGJvb2wgdHJhaWxpbmdfY3JsZjsgICAgICAvKiBTcGVjaWZpZXMgaWYgdGhlIHRhaWxpbmcgQ1JMRiBpcyBwcmVzZW50ICovCkBAIC03MSw2ICs3NCw4IEBACiAgIGJvb2wgdGxzX3N1cHBvcnRlZDsgICAgICAvKiBTdGFydFRMUyBjYXBhYmlsaXR5IHN1cHBvcnRlZCBieSBzZXJ2ZXIgKi8KICAgYm9vbCBzaXplX3N1cHBvcnRlZDsgICAgIC8qIElmIHNlcnZlciBzdXBwb3J0cyBTSVpFIGV4dGVuc2lvbiBhY2NvcmRpbmcgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJGQyAxODcwICovCisgIGJvb2wgdXRmOF9zdXBwb3J0ZWQ7ICAgICAvKiBJZiBzZXJ2ZXIgc3VwcG9ydHMgU01UUFVURjggZXh0ZW5zaW9uIGFjY29yZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gUkZDIDY1MzEgKi8KICAgYm9vbCBhdXRoX3N1cHBvcnRlZDsgICAgIC8qIEFVVEggY2FwYWJpbGl0eSBzdXBwb3J0ZWQgYnkgc2VydmVyICovCiB9OwogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zb2NrYWRkci5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc29ja2FkZHIuaAppbmRleCBkYjE0NjgwLi5iMDM3ZWUwIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zb2NrYWRkci5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NvY2thZGRyLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAwOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NvY2tldHBhaXIuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NvY2tldHBhaXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWMwZDc1Ci0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc29ja2V0cGFpci5jCkBAIC0wLDAgKzEsMTIxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKyNpbmNsdWRlICJzb2NrZXRwYWlyLmgiCisKKyNpZm5kZWYgSEFWRV9TT0NLRVRQQUlSCisjaWZkZWYgV0lOMzIKKy8qCisgKiBUaGlzIGlzIGEgc29ja2V0cGFpcigpIGltcGxlbWVudGF0aW9uIGZvciBXaW5kb3dzLgorICovCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d2luc29jazIuaD4KKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxpby5oPgorI2Vsc2UKKyNpZmRlZiBIQVZFX05FVERCX0gKKyNpbmNsdWRlIDxuZXRkYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+IC8qIElQUFJPVE9fVENQICovCisjZW5kaWYKKyNpZmRlZiBIQVZFX0FSUEFfSU5FVF9ICisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZW5kaWYKKyNpZm5kZWYgSU5BRERSX0xPT1BCQUNLCisjZGVmaW5lIElOQUREUl9MT09QQkFDSyAweDdmMDAwMDAxCisjZW5kaWYgLyogIUlOQUREUl9MT09QQkFDSyAqLworI2VuZGlmIC8qICFXSU4zMiAqLworCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKK2ludCBDdXJsX3NvY2tldHBhaXIoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCBzb2Nrc1syXSkKK3sKKyAgdW5pb24geworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBpbmFkZHI7CisgICAgc3RydWN0IHNvY2thZGRyIGFkZHI7CisgIH0gYTsKKyAgY3VybF9zb2NrZXRfdCBsaXN0ZW5lcjsKKyAgY3VybF9zb2NrbGVuX3QgYWRkcmxlbiA9IHNpemVvZihhLmluYWRkcik7CisgIGludCByZXVzZSA9IDE7CisgIGNoYXIgZGF0YVsyXVsxMl07CisgIHNzaXplX3QgZGxlbjsKKyAgKHZvaWQpZG9tYWluOworICAodm9pZCl0eXBlOworICAodm9pZClwcm90b2NvbDsKKworICBsaXN0ZW5lciA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApOworICBpZihsaXN0ZW5lciA9PSBDVVJMX1NPQ0tFVF9CQUQpCisgICAgcmV0dXJuIC0xOworCisgIG1lbXNldCgmYSwgMCwgc2l6ZW9mKGEpKTsKKyAgYS5pbmFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgIGEuaW5hZGRyLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9MT09QQkFDSyk7CisgIGEuaW5hZGRyLnNpbl9wb3J0ID0gMDsKKworICBzb2Nrc1swXSA9IHNvY2tzWzFdID0gQ1VSTF9TT0NLRVRfQkFEOworCisgIGlmKHNldHNvY2tvcHQobGlzdGVuZXIsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwKKyAgICAgICAgICAgICAgICAoY2hhciAqKSZyZXVzZSwgKGN1cmxfc29ja2xlbl90KXNpemVvZihyZXVzZSkpID09IC0xKQorICAgIGdvdG8gZXJyb3I7CisgIGlmKGJpbmQobGlzdGVuZXIsICZhLmFkZHIsIHNpemVvZihhLmluYWRkcikpID09IC0xKQorICAgIGdvdG8gZXJyb3I7CisgIGlmKGdldHNvY2tuYW1lKGxpc3RlbmVyLCAmYS5hZGRyLCAmYWRkcmxlbikgPT0gLTEpCisgICAgZ290byBlcnJvcjsKKyAgaWYobGlzdGVuKGxpc3RlbmVyLCAxKSA9PSAtMSkKKyAgICBnb3RvIGVycm9yOworICBzb2Nrc1swXSA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7CisgIGlmKHNvY2tzWzBdID09IENVUkxfU09DS0VUX0JBRCkKKyAgICBnb3RvIGVycm9yOworICBpZihjb25uZWN0KHNvY2tzWzBdLCAmYS5hZGRyLCBzaXplb2YoYS5pbmFkZHIpKSA9PSAtMSkKKyAgICBnb3RvIGVycm9yOworICBzb2Nrc1sxXSA9IGFjY2VwdChsaXN0ZW5lciwgTlVMTCwgTlVMTCk7CisgIGlmKHNvY2tzWzFdID09IENVUkxfU09DS0VUX0JBRCkKKyAgICBnb3RvIGVycm9yOworCisgIC8qIHZlcmlmeSB0aGF0IG5vdGhpbmcgZWxzZSBjb25uZWN0ZWQgKi8KKyAgbXNucHJpbnRmKGRhdGFbMF0sIHNpemVvZihkYXRhWzBdKSwgIiVwIiwgc29ja3MpOworICBkbGVuID0gc3RybGVuKGRhdGFbMF0pOworICBpZihzd3JpdGUoc29ja3NbMF0sIGRhdGFbMF0sIGRsZW4pICE9IGRsZW4pCisgICAgZ290byBlcnJvcjsKKyAgaWYoc3JlYWQoc29ja3NbMV0sIGRhdGFbMV0sIHNpemVvZihkYXRhWzFdKSkgIT0gZGxlbikKKyAgICBnb3RvIGVycm9yOworICBpZihtZW1jbXAoZGF0YVswXSwgZGF0YVsxXSwgZGxlbikpCisgICAgZ290byBlcnJvcjsKKworICBzY2xvc2UobGlzdGVuZXIpOworICByZXR1cm4gMDsKKworICBlcnJvcjoKKyAgc2Nsb3NlKGxpc3RlbmVyKTsKKyAgc2Nsb3NlKHNvY2tzWzBdKTsKKyAgc2Nsb3NlKHNvY2tzWzFdKTsKKyAgcmV0dXJuIC0xOworfQorCisjZW5kaWYgLyogISBIQVZFX1NPQ0tFVFBBSVIgKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NvY2tldHBhaXIuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NvY2tldHBhaXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTlmYjI0Ci0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc29ja2V0cGFpci5oCkBAIC0wLDAgKzEsMzYgQEAKKyNpZm5kZWYgSEVBREVSX0NVUkxfU09DS0VUUEFJUl9ICisjZGVmaW5lIEhFQURFUl9DVVJMX1NPQ0tFVFBBSVJfSAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisjaWZuZGVmIEhBVkVfU09DS0VUUEFJUgoraW50IEN1cmxfc29ja2V0cGFpcihpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29sLAorICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90IHNvY2tzWzJdKTsKKyNlbHNlCisjZGVmaW5lIEN1cmxfc29ja2V0cGFpcihhLGIsYyxkKSBzb2NrZXRwYWlyKGEsYixjLGQpCisjZW5kaWYKKworLyogRGVmaW5lZCBoZXJlIHRvIGFsbG93IHNwZWNpZmljIGJ1aWxkIGNvbmZpZ3MgdG8gZGlzYWJsZSBpdCBjb21wbGV0ZWx5ICovCisjZGVmaW5lIFVTRV9TT0NLRVRQQUlSIDEKKworI2VuZGlmIC8qIEhFQURFUl9DVVJMX1NPQ0tFVFBBSVJfSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc29ja3MuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NvY2tzLmMKaW5kZXggZDhmY2MzYi4uMGZiOTdlMSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc29ja3MuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zb2Nrcy5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0zNywxNiArMzcsMTkgQEAKICNpbmNsdWRlICJjb25uZWN0LmgiCiAjaW5jbHVkZSAidGltZXZhbC5oIgogI2luY2x1ZGUgInNvY2tzLmgiCisjaW5jbHVkZSAibXVsdGlpZi5oIiAvKiBmb3IgZ2V0c29jayBtYWNyb3MgKi8KIAotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKKyNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCiAvKgogICogSGVscGVyIHJlYWQtZnJvbS1zb2NrZXQgZnVuY3Rpb25zLiBEb2VzIHRoZSBzYW1lIGFzIEN1cmxfcmVhZCgpIGJ1dCBpdAogICogYmxvY2tzIHVudGlsIGFsbCBieXRlcyBhbW91bnQgb2YgYnVmZmVyc2l6ZSB3aWxsIGJlIHJlYWQuIE5vIG1vcmUsIG5vIGxlc3MuCiAgKgotICogVGhpcyBpcyBTVFVQSUQgQkxPQ0tJTkcgYmVoYXZpb3VyIHdoaWNoIHdlIGZyb3duIHVwb24sIGJ1dCByaWdodCBub3cgdGhpcwotICogaXMgd2hhdCB3ZSBoYXZlLi4uCisgKiBUaGlzIGlzIFNUVVBJRCBCTE9DS0lORyBiZWhhdmlvci4gT25seSB1c2VkIGJ5IHRoZSBTT0NLUyBHU1NBUEkgZnVuY3Rpb25zLgogICovCiBpbnQgQ3VybF9ibG9ja3JlYWRfYWxsKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgLyogY29ubmVjdGlvbiBkYXRhICovCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkLCAgICAgLyogcmVhZCBmcm9tIHRoaXMgc29ja2V0ICovCkBAIC05Miw2ICs5NSw4MSBAQAogICB9CiAgIHJldHVybiByZXN1bHQ7CiB9CisjZW5kaWYKKworI2lmbmRlZiBERUJVR0JVSUxECisjZGVmaW5lIHN4c3RhdGUoeCx5KSBzb2Nrc3N0YXRlKHgseSkKKyNlbHNlCisjZGVmaW5lIHN4c3RhdGUoeCx5KSBzb2Nrc3N0YXRlKHgseSwgX19MSU5FX18pCisjZW5kaWYKKworCisvKiBhbHdheXMgdXNlIHRoaXMgZnVuY3Rpb24gdG8gY2hhbmdlIHN0YXRlLCB0byBtYWtlIGRlYnVnZ2luZyBlYXNpZXIgKi8KK3N0YXRpYyB2b2lkIHNvY2tzc3RhdGUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGNvbm5lY3RfdCBzdGF0ZQorI2lmZGVmIERFQlVHQlVJTEQKKyAgICAgICAgICAgICAgICAgICAgICAgLCBpbnQgbGluZW5vCisjZW5kaWYKKykKK3sKKyAgZW51bSBjb25uZWN0X3Qgb2xkc3RhdGUgPSBjb25uLT5jbm5jdC5zdGF0ZTsKKyNpZiBkZWZpbmVkKERFQlVHQlVJTEQpICYmICFkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCisgIC8qIHN5bmNlZCB3aXRoIHRoZSBzdGF0ZSBsaXN0IGluIHVybGRhdGEuaCAqLworICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHN0YXRlbmFtZVtdID0geworICAgICJJTklUIiwKKyAgICAiU09DS1NfSU5JVCIsCisgICAgIlNPQ0tTX1NFTkQiLAorICAgICJTT0NLU19SRUFEX0lOSVQiLAorICAgICJTT0NLU19SRUFEIiwKKyAgICAiR1NTQVBJX0lOSVQiLAorICAgICJBVVRIX0lOSVQiLAorICAgICJBVVRIX1NFTkQiLAorICAgICJBVVRIX1JFQUQiLAorICAgICJSRVFfSU5JVCIsCisgICAgIlJFU09MVklORyIsCisgICAgIlJFU09MVkVEIiwKKyAgICAiUkVTT0xWRV9SRU1PVEUiLAorICAgICJSRVFfU0VORCIsCisgICAgIlJFUV9TRU5ESU5HIiwKKyAgICAiUkVRX1JFQUQiLAorICAgICJSRVFfUkVBRF9NT1JFIiwKKyAgICAiRE9ORSIKKyAgfTsKKyNlbmRpZgorCisgIGlmKG9sZHN0YXRlID09IHN0YXRlKQorICAgIC8qIGRvbid0IGJvdGhlciB3aGVuIHRoZSBuZXcgc3RhdGUgaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBzdGF0ZSAqLworICAgIHJldHVybjsKKworICBjb25uLT5jbm5jdC5zdGF0ZSA9IHN0YXRlOworCisjaWYgZGVmaW5lZChERUJVR0JVSUxEKSAmJiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTKQorICBpbmZvZihjb25uLT5kYXRhLAorICAgICAgICAiU1hTVEFURTogJXMgPT4gJXMgY29ubiAlcDsgbGluZSAlZFxuIiwKKyAgICAgICAgc3RhdGVuYW1lW29sZHN0YXRlXSwgc3RhdGVuYW1lW2Nvbm4tPmNubmN0LnN0YXRlXSwgY29ubiwKKyAgICAgICAgbGluZW5vKTsKKyNlbmRpZgorfQorCitpbnQgQ3VybF9TT0NLU19nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCkKK3sKKyAgaW50IHJjID0gMDsKKyAgc29ja1swXSA9IGNvbm4tPnNvY2tbc29ja2luZGV4XTsKKyAgc3dpdGNoKGNvbm4tPmNubmN0LnN0YXRlKSB7CisgIGNhc2UgQ09OTkVDVF9SRVNPTFZJTkc6CisgIGNhc2UgQ09OTkVDVF9TT0NLU19SRUFEOgorICBjYXNlIENPTk5FQ1RfQVVUSF9SRUFEOgorICBjYXNlIENPTk5FQ1RfUkVRX1JFQUQ6CisgIGNhc2UgQ09OTkVDVF9SRVFfUkVBRF9NT1JFOgorICAgIHJjID0gR0VUU09DS19SRUFEU09DSygwKTsKKyAgICBicmVhazsKKyAgZGVmYXVsdDoKKyAgICByYyA9IEdFVFNPQ0tfV1JJVEVTT0NLKDApOworICAgIGJyZWFrOworICB9CisgIHJldHVybiByYzsKK30KIAogLyoKICogVGhpcyBmdW5jdGlvbiBsb2dzIGluIHRvIGEgU09DS1M0IHByb3h5IGFuZCBzZW5kcyB0aGUgc3BlY2lmaWNzIHRvIHRoZSBmaW5hbApAQCAtMTA4LDYyICsxODYsODkgQEAKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgaW50IHJlbW90ZV9wb3J0LAogICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvbmUpCiB7CiAgIGNvbnN0IGJvb2wgcHJvdG9jb2w0YSA9CiAgICAgKGNvbm4tPnNvY2tzX3Byb3h5LnByb3h5dHlwZSA9PSBDVVJMUFJPWFlfU09DS1M0QSkgPyBUUlVFIDogRkFMU0U7Ci0jZGVmaW5lIFNPQ0tTNFJFUUxFTiAyNjIKLSAgdW5zaWduZWQgY2hhciBzb2Nrc3JlcVtTT0NLUzRSRVFMRU5dOyAvKiByb29tIGZvciBTT0NLUzQgcmVxdWVzdCBpbmNsLiB1c2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgKi8KLSAgQ1VSTGNvZGUgY29kZTsKLSAgY3VybF9zb2NrZXRfdCBzb2NrID0gY29ubi0+c29ja1tzb2NraW5kZXhdOworICB1bnNpZ25lZCBjaGFyICpzb2Nrc3JlcSA9ICZjb25uLT5jbm5jdC5zb2Nrc3JlcVswXTsKKyAgQ1VSTGNvZGUgcmVzdWx0OworICBjdXJsX3NvY2tldF90IHNvY2tmZCA9IGNvbm4tPnNvY2tbc29ja2luZGV4XTsKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBjb25uc3RhdGUgKnN4ID0gJmNvbm4tPmNubmN0OworICBzdHJ1Y3QgQ3VybF9kbnNfZW50cnkgKmRucyA9IE5VTEw7CisgIHNzaXplX3QgYWN0dWFscmVhZDsKKyAgc3NpemVfdCB3cml0dGVuOwogCi0gIGlmKEN1cmxfdGltZWxlZnQoZGF0YSwgTlVMTCwgVFJVRSkgPCAwKSB7Ci0gICAgLyogdGltZS1vdXQsIGJhaWwgb3V0LCBnbyBob21lICovCi0gICAgZmFpbGYoZGF0YSwgIkNvbm5lY3Rpb24gdGltZS1vdXQiKTsKLSAgICByZXR1cm4gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOwotICB9CisgIGlmKCFTT0NLU19TVEFURShzeC0+c3RhdGUpICYmICEqZG9uZSkKKyAgICBzeHN0YXRlKGNvbm4sIENPTk5FQ1RfU09DS1NfSU5JVCk7CiAKLSAgaWYoY29ubi0+Yml0cy5odHRwcHJveHkpCi0gICAgaW5mb2YoY29ubi0+ZGF0YSwgIlNPQ0tTNCVzOiBjb25uZWN0aW5nIHRvIEhUVFAgcHJveHkgJXMgcG9ydCAlZFxuIiwKLSAgICAgICAgICBwcm90b2NvbDRhID8gImEiIDogIiIsIGhvc3RuYW1lLCByZW1vdGVfcG9ydCk7CisgIHN3aXRjaChzeC0+c3RhdGUpIHsKKyAgY2FzZSBDT05ORUNUX1NPQ0tTX0lOSVQ6CisgICAgaWYoY29ubi0+Yml0cy5odHRwcHJveHkpCisgICAgICBpbmZvZihjb25uLT5kYXRhLCAiU09DS1M0JXM6IGNvbm5lY3RpbmcgdG8gSFRUUCBwcm94eSAlcyBwb3J0ICVkXG4iLAorICAgICAgICAgICAgcHJvdG9jb2w0YSA/ICJhIiA6ICIiLCBob3N0bmFtZSwgcmVtb3RlX3BvcnQpOwogCi0gICh2b2lkKWN1cmx4X25vbmJsb2NrKHNvY2ssIEZBTFNFKTsKKyAgICBpbmZvZihkYXRhLCAiU09DS1M0IGNvbW11bmljYXRpb24gdG8gJXM6JWRcbiIsIGhvc3RuYW1lLCByZW1vdGVfcG9ydCk7CiAKLSAgaW5mb2YoZGF0YSwgIlNPQ0tTNCBjb21tdW5pY2F0aW9uIHRvICVzOiVkXG4iLCBob3N0bmFtZSwgcmVtb3RlX3BvcnQpOworICAgIC8qCisgICAgICogQ29tcG9zZSBzb2NrczQgcmVxdWVzdAorICAgICAqCisgICAgICogUmVxdWVzdCBmb3JtYXQKKyAgICAgKgorICAgICAqICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsuLi4uKy0tLS0rCisgICAgICogICAgIHwgVk4gfCBDRCB8IERTVFBPUlQgfCAgICAgIERTVElQICAgICAgICB8IFVTRVJJRCAgICAgICB8TlVMTHwKKyAgICAgKiAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLi4uListLS0tKworICAgICAqICMgb2YgYnl0ZXM6ICAxICAgIDEgICAgICAyICAgICAgICAgICAgICA0ICAgICAgICAgICB2YXJpYWJsZSAgICAgICAxCisgICAgICovCiAKLSAgLyoKLSAgICogQ29tcG9zZSBzb2NrczQgcmVxdWVzdAotICAgKgotICAgKiBSZXF1ZXN0IGZvcm1hdAotICAgKgotICAgKiAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLi4uListLS0tKwotICAgKiAgICAgfCBWTiB8IENEIHwgRFNUUE9SVCB8ICAgICAgRFNUSVAgICAgICAgIHwgVVNFUklEICAgICAgIHxOVUxMfAotICAgKiAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLi4uListLS0tKwotICAgKiAjIG9mIGJ5dGVzOiAgMSAgICAxICAgICAgMiAgICAgICAgICAgICAgNCAgICAgICAgICAgdmFyaWFibGUgICAgICAgMQotICAgKi8KKyAgICBzb2Nrc3JlcVswXSA9IDQ7IC8qIHZlcnNpb24gKFNPQ0tTNCkgKi8KKyAgICBzb2Nrc3JlcVsxXSA9IDE7IC8qIGNvbm5lY3QgKi8KKyAgICBzb2Nrc3JlcVsyXSA9ICh1bnNpZ25lZCBjaGFyKSgocmVtb3RlX3BvcnQgPj4gOCkgJiAweGZmKTsgLyogUE9SVCBNU0IgKi8KKyAgICBzb2Nrc3JlcVszXSA9ICh1bnNpZ25lZCBjaGFyKShyZW1vdGVfcG9ydCAmIDB4ZmYpOyAgICAgICAgLyogUE9SVCBMU0IgKi8KIAotICBzb2Nrc3JlcVswXSA9IDQ7IC8qIHZlcnNpb24gKFNPQ0tTNCkgKi8KLSAgc29ja3NyZXFbMV0gPSAxOyAvKiBjb25uZWN0ICovCi0gIHNvY2tzcmVxWzJdID0gKHVuc2lnbmVkIGNoYXIpKChyZW1vdGVfcG9ydCA+PiA4KSAmIDB4ZmYpOyAvKiBQT1JUIE1TQiAqLwotICBzb2Nrc3JlcVszXSA9ICh1bnNpZ25lZCBjaGFyKShyZW1vdGVfcG9ydCAmIDB4ZmYpOyAgICAgICAgLyogUE9SVCBMU0IgKi8KKyAgICAvKiBETlMgcmVzb2x2ZSBvbmx5IGZvciBTT0NLUzQsIG5vdCBTT0NLUzRhICovCisgICAgaWYoIXByb3RvY29sNGEpIHsKKyAgICAgIGVudW0gcmVzb2x2ZV90IHJjID0KKyAgICAgICAgQ3VybF9yZXNvbHYoY29ubiwgaG9zdG5hbWUsIHJlbW90ZV9wb3J0LCBGQUxTRSwgJmRucyk7CiAKLSAgLyogRE5TIHJlc29sdmUgb25seSBmb3IgU09DS1M0LCBub3QgU09DS1M0YSAqLwotICBpZighcHJvdG9jb2w0YSkgewotICAgIHN0cnVjdCBDdXJsX2Ruc19lbnRyeSAqZG5zOworICAgICAgaWYocmMgPT0gQ1VSTFJFU09MVl9FUlJPUikKKyAgICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfUkVTT0xWRV9QUk9YWTsKKyAgICAgIGVsc2UgaWYocmMgPT0gQ1VSTFJFU09MVl9QRU5ESU5HKSB7CisgICAgICAgIHN4c3RhdGUoY29ubiwgQ09OTkVDVF9SRVNPTFZJTkcpOworICAgICAgICBpbmZvZihkYXRhLCAiU09DS1M0IG5vbi1ibG9ja2luZyByZXNvbHZlIG9mICVzXG4iLCBob3N0bmFtZSk7CisgICAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICAgIH0KKyAgICAgIHN4c3RhdGUoY29ubiwgQ09OTkVDVF9SRVNPTFZFRCk7CisgICAgICBnb3RvIENPTk5FQ1RfUkVTT0xWRUQ7CisgICAgfQorCisgICAgLyogc29ja3M0YSBkb2Vzbid0IHJlc29sdmUgYW55dGhpbmcgbG9jYWxseSAqLworICAgIHN4c3RhdGUoY29ubiwgQ09OTkVDVF9SRVFfSU5JVCk7CisgICAgZ290byBDT05ORUNUX1JFUV9JTklUOworCisgIGNhc2UgQ09OTkVDVF9SRVNPTFZJTkc6CisgICAgLyogY2hlY2sgaWYgd2UgaGF2ZSB0aGUgbmFtZSByZXNvbHZlZCBieSBub3cgKi8KKyAgICBkbnMgPSBDdXJsX2ZldGNoX2FkZHIoY29ubiwgaG9zdG5hbWUsIChpbnQpY29ubi0+cG9ydCk7CisKKyAgICBpZihkbnMpIHsKKyNpZmRlZiBDVVJMUkVTX0FTWU5DSAorICAgICAgY29ubi0+YXN5bmMuZG5zID0gZG5zOworICAgICAgY29ubi0+YXN5bmMuZG9uZSA9IFRSVUU7CisjZW5kaWYKKyAgICAgIGluZm9mKGRhdGEsICJIb3N0bmFtZSAnJXMnIHdhcyBmb3VuZFxuIiwgaG9zdG5hbWUpOworICAgICAgc3hzdGF0ZShjb25uLCBDT05ORUNUX1JFU09MVkVEKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXN1bHQgPSBDdXJsX3Jlc29sdl9jaGVjayhkYXRhLT5jb25uLCAmZG5zKTsKKyAgICAgIC8qIHN0YXkgaW4gdGhlIHN0YXRlIG9yIGVycm9yIG91dCAqLworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgQ09OTkVDVF9SRVNPTFZFRDoKKyAgY2FzZSBDT05ORUNUX1JFU09MVkVEOiB7CiAgICAgQ3VybF9hZGRyaW5mbyAqaHAgPSBOVUxMOwotICAgIGludCByYzsKLQotICAgIHJjID0gQ3VybF9yZXNvbHYoY29ubiwgaG9zdG5hbWUsIHJlbW90ZV9wb3J0LCBGQUxTRSwgJmRucyk7Ci0KLSAgICBpZihyYyA9PSBDVVJMUkVTT0xWX0VSUk9SKQotICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfUkVTT0xWRV9QUk9YWTsKLQotICAgIGlmKHJjID09IENVUkxSRVNPTFZfUEVORElORykKLSAgICAgIC8qIGlnbm9yZXMgdGhlIHJldHVybiBjb2RlLCBidXQgJ2RucycgcmVtYWlucyBOVUxMIG9uIGZhaWx1cmUgKi8KLSAgICAgICh2b2lkKUN1cmxfcmVzb2x2ZXJfd2FpdF9yZXNvbHYoY29ubiwgJmRucyk7Ci0KKyAgICBjaGFyIGJ1Zls2NF07CiAgICAgLyoKICAgICAgKiBXZSBjYW5ub3QgdXNlICdob3N0ZW50JyBhcyBhIHN0cnVjdCB0aGF0IEN1cmxfcmVzb2x2KCkgcmV0dXJucy4gIEl0CiAgICAgICogcmV0dXJucyBhIEN1cmxfYWRkcmluZm8gcG9pbnRlciB0aGF0IG1heSBub3QgYWx3YXlzIGxvb2sgdGhlIHNhbWUuCkBAIC0xNzEsNyArMjc2LDYgQEAKICAgICBpZihkbnMpCiAgICAgICBocCA9IGRucy0+YWRkcjsKICAgICBpZihocCkgewotICAgICAgY2hhciBidWZbNjRdOwogICAgICAgQ3VybF9wcmludGFibGVfYWRkcmVzcyhocCwgYnVmLCBzaXplb2YoYnVmKSk7CiAKICAgICAgIGlmKGhwLT5haV9mYW1pbHkgPT0gQUZfSU5FVCkgewpAQCAtMTg3LDcgKzI5MSw2IEBACiAgICAgICB9CiAgICAgICBlbHNlIHsKICAgICAgICAgaHAgPSBOVUxMOyAvKiBmYWlsISAqLwotCiAgICAgICAgIGZhaWxmKGRhdGEsICJTT0NLUzQgY29ubmVjdGlvbiB0byAlcyBub3Qgc3VwcG9ydGVkXG4iLCBidWYpOwogICAgICAgfQogCkBAIC0xOTksMTQ5ICszMDIsMTY2IEBACiAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9SRVNPTFZFX0hPU1Q7CiAgICAgfQogICB9Ci0KLSAgLyoKLSAgICogVGhpcyBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRpbmcgIklkZW50aWZpY2F0aW9uIFByb3RvY29sIChSRkMxNDEzKSIuCi0gICAqLwotICBzb2Nrc3JlcVs4XSA9IDA7IC8qIGVuc3VyZSBlbXB0eSB1c2VyaWQgaXMgTlVMLXRlcm1pbmF0ZWQgKi8KLSAgaWYocHJveHlfdXNlcikgewotICAgIHNpemVfdCBwbGVuID0gc3RybGVuKHByb3h5X3VzZXIpOwotICAgIGlmKHBsZW4gPj0gc2l6ZW9mKHNvY2tzcmVxKSAtIDgpIHsKLSAgICAgIGZhaWxmKGRhdGEsICJUb28gbG9uZyBTT0NLUyBwcm94eSBuYW1lLCBjYW4ndCB1c2UhXG4iKTsKLSAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7Ci0gICAgfQotICAgIC8qIGNvcHkgdGhlIHByb3h5IG5hbWUgV0lUSCB0cmFpbGluZyB6ZXJvICovCi0gICAgbWVtY3B5KHNvY2tzcmVxICsgOCwgcHJveHlfdXNlciwgcGxlbiArIDEpOwotICB9Ci0KLSAgLyoKLSAgICogTWFrZSBjb25uZWN0aW9uCi0gICAqLwotICB7Ci0gICAgaW50IHJlc3VsdDsKLSAgICBzc2l6ZV90IGFjdHVhbHJlYWQ7Ci0gICAgc3NpemVfdCB3cml0dGVuOwotICAgIHNzaXplX3QgaG9zdG5hbWVsZW4gPSAwOwotICAgIHNzaXplX3QgcGFja2V0c2l6ZSA9IDkgKwotICAgICAgc3RybGVuKChjaGFyICopc29ja3NyZXEgKyA4KTsgLyogc2l6ZSBpbmNsdWRpbmcgTlVMICovCi0KLSAgICAvKiBJZiBTT0NLUzRhLCBzZXQgc3BlY2lhbCBpbnZhbGlkIElQIGFkZHJlc3MgMC4wLjAueCAqLwotICAgIGlmKHByb3RvY29sNGEpIHsKLSAgICAgIHNvY2tzcmVxWzRdID0gMDsKLSAgICAgIHNvY2tzcmVxWzVdID0gMDsKLSAgICAgIHNvY2tzcmVxWzZdID0gMDsKLSAgICAgIHNvY2tzcmVxWzddID0gMTsKLSAgICAgIC8qIElmIHN0aWxsIGVub3VnaCByb29tIGluIGJ1ZmZlciwgYWxzbyBhcHBlbmQgaG9zdG5hbWUgKi8KLSAgICAgIGhvc3RuYW1lbGVuID0gKHNzaXplX3Qpc3RybGVuKGhvc3RuYW1lKSArIDE7IC8qIGxlbmd0aCBpbmNsdWRpbmcgTlVMICovCi0gICAgICBpZihwYWNrZXRzaXplICsgaG9zdG5hbWVsZW4gPD0gU09DS1M0UkVRTEVOKQotICAgICAgICBzdHJjcHkoKGNoYXIgKilzb2Nrc3JlcSArIHBhY2tldHNpemUsIGhvc3RuYW1lKTsKLSAgICAgIGVsc2UKLSAgICAgICAgaG9zdG5hbWVsZW4gPSAwOyAvKiBGbGFnOiBob3N0bmFtZSBkaWQgbm90IGZpdCBpbiBidWZmZXIgKi8KLSAgICB9Ci0KLSAgICAvKiBTZW5kIHJlcXVlc3QgKi8KLSAgICBjb2RlID0gQ3VybF93cml0ZV9wbGFpbihjb25uLCBzb2NrLCAoY2hhciAqKXNvY2tzcmVxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldHNpemUgKyBob3N0bmFtZWxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdHRlbik7Ci0gICAgaWYoY29kZSB8fCAod3JpdHRlbiAhPSBwYWNrZXRzaXplICsgaG9zdG5hbWVsZW4pKSB7Ci0gICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHRvIHNlbmQgU09DS1M0IGNvbm5lY3QgcmVxdWVzdC4iKTsKLSAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7Ci0gICAgfQotICAgIGlmKHByb3RvY29sNGEgJiYgaG9zdG5hbWVsZW4gPT0gMCkgewotICAgICAgLyogU09DS1M0YSB3aXRoIHZlcnkgbG9uZyBob3N0bmFtZSAtIHNlbmQgdGhhdCBuYW1lIHNlcGFyYXRlbHkgKi8KLSAgICAgIGhvc3RuYW1lbGVuID0gKHNzaXplX3Qpc3RybGVuKGhvc3RuYW1lKSArIDE7Ci0gICAgICBjb2RlID0gQ3VybF93cml0ZV9wbGFpbihjb25uLCBzb2NrLCAoY2hhciAqKWhvc3RuYW1lLCBob3N0bmFtZWxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0dGVuKTsKLSAgICAgIGlmKGNvZGUgfHwgKHdyaXR0ZW4gIT0gaG9zdG5hbWVsZW4pKSB7Ci0gICAgICAgIGZhaWxmKGRhdGEsICJGYWlsZWQgdG8gc2VuZCBTT0NLUzQgY29ubmVjdCByZXF1ZXN0LiIpOworICAgIC8qIEZBTExUSFJPVUdIICovCisgIENPTk5FQ1RfUkVRX0lOSVQ6CisgIGNhc2UgQ09OTkVDVF9SRVFfSU5JVDoKKyAgICAvKgorICAgICAqIFRoaXMgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0aW5nICJJZGVudGlmaWNhdGlvbiBQcm90b2NvbCAoUkZDMTQxMykiLgorICAgICAqLworICAgIHNvY2tzcmVxWzhdID0gMDsgLyogZW5zdXJlIGVtcHR5IHVzZXJpZCBpcyBOVUwtdGVybWluYXRlZCAqLworICAgIGlmKHByb3h5X3VzZXIpIHsKKyAgICAgIHNpemVfdCBwbGVuID0gc3RybGVuKHByb3h5X3VzZXIpOworICAgICAgaWYocGxlbiA+PSBzaXplb2Yoc3gtPnNvY2tzcmVxKSAtIDgpIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgIlRvbyBsb25nIFNPQ0tTIHByb3h5IG5hbWUsIGNhbid0IHVzZSFcbiIpOwogICAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwogICAgICAgfQotICAgIH0KLQotICAgIHBhY2tldHNpemUgPSA4OyAvKiByZWNlaXZlIGRhdGEgc2l6ZSAqLwotCi0gICAgLyogUmVjZWl2ZSByZXNwb25zZSAqLwotICAgIHJlc3VsdCA9IEN1cmxfYmxvY2tyZWFkX2FsbChjb25uLCBzb2NrLCAoY2hhciAqKXNvY2tzcmVxLCBwYWNrZXRzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWN0dWFscmVhZCk7Ci0gICAgaWYocmVzdWx0IHx8IChhY3R1YWxyZWFkICE9IHBhY2tldHNpemUpKSB7Ci0gICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHRvIHJlY2VpdmUgU09DS1M0IGNvbm5lY3QgcmVxdWVzdCBhY2suIik7Ci0gICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworICAgICAgLyogY29weSB0aGUgcHJveHkgbmFtZSBXSVRIIHRyYWlsaW5nIHplcm8gKi8KKyAgICAgIG1lbWNweShzb2Nrc3JlcSArIDgsIHByb3h5X3VzZXIsIHBsZW4gKyAxKTsKICAgICB9CiAKICAgICAvKgotICAgICAqIFJlc3BvbnNlIGZvcm1hdAotICAgICAqCi0gICAgICogICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCi0gICAgICogICAgIHwgVk4gfCBDRCB8IERTVFBPUlQgfCAgICAgIERTVElQICAgICAgICB8Ci0gICAgICogICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCi0gICAgICogIyBvZiBieXRlczogIDEgICAgMSAgICAgIDIgICAgICAgICAgICAgIDQKLSAgICAgKgotICAgICAqIFZOIGlzIHRoZSB2ZXJzaW9uIG9mIHRoZSByZXBseSBjb2RlIGFuZCBzaG91bGQgYmUgMC4gQ0QgaXMgdGhlIHJlc3VsdAotICAgICAqIGNvZGUgd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0gICAgICoKLSAgICAgKiA5MDogcmVxdWVzdCBncmFudGVkCi0gICAgICogOTE6IHJlcXVlc3QgcmVqZWN0ZWQgb3IgZmFpbGVkCi0gICAgICogOTI6IHJlcXVlc3QgcmVqZWN0ZWQgYmVjYXVzZSBTT0NLUyBzZXJ2ZXIgY2Fubm90IGNvbm5lY3QgdG8KLSAgICAgKiAgICAgaWRlbnRkIG9uIHRoZSBjbGllbnQKLSAgICAgKiA5MzogcmVxdWVzdCByZWplY3RlZCBiZWNhdXNlIHRoZSBjbGllbnQgcHJvZ3JhbSBhbmQgaWRlbnRkCi0gICAgICogICAgIHJlcG9ydCBkaWZmZXJlbnQgdXNlci1pZHMKKyAgICAgKiBNYWtlIGNvbm5lY3Rpb24KICAgICAgKi8KKyAgICB7CisgICAgICBzc2l6ZV90IHBhY2tldHNpemUgPSA5ICsKKyAgICAgICAgc3RybGVuKChjaGFyICopc29ja3NyZXEgKyA4KTsgLyogc2l6ZSBpbmNsdWRpbmcgTlVMICovCiAKLSAgICAvKiB3cm9uZyB2ZXJzaW9uID8gKi8KLSAgICBpZihzb2Nrc3JlcVswXSAhPSAwKSB7Ci0gICAgICBmYWlsZihkYXRhLAotICAgICAgICAgICAgIlNPQ0tTNCByZXBseSBoYXMgd3JvbmcgdmVyc2lvbiwgdmVyc2lvbiBzaG91bGQgYmUgMC4iKTsKKyAgICAgIC8qIElmIFNPQ0tTNGEsIHNldCBzcGVjaWFsIGludmFsaWQgSVAgYWRkcmVzcyAwLjAuMC54ICovCisgICAgICBpZihwcm90b2NvbDRhKSB7CisgICAgICAgIHNzaXplX3QgaG9zdG5hbWVsZW4gPSAwOworICAgICAgICBzb2Nrc3JlcVs0XSA9IDA7CisgICAgICAgIHNvY2tzcmVxWzVdID0gMDsKKyAgICAgICAgc29ja3NyZXFbNl0gPSAwOworICAgICAgICBzb2Nrc3JlcVs3XSA9IDE7CisgICAgICAgIC8qIGFwcGVuZCBob3N0bmFtZSAqLworICAgICAgICBob3N0bmFtZWxlbiA9IChzc2l6ZV90KXN0cmxlbihob3N0bmFtZSkgKyAxOyAvKiBsZW5ndGggaW5jbHVkaW5nIE5VTCAqLworICAgICAgICBpZihob3N0bmFtZWxlbiA8PSAyNTUpCisgICAgICAgICAgc3RyY3B5KChjaGFyICopc29ja3NyZXEgKyBwYWNrZXRzaXplLCBob3N0bmFtZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGZhaWxmKGRhdGEsICJTT0NLUzQ6IHRvbyBsb25nIGhvc3QgbmFtZSIpOworICAgICAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7CisgICAgICAgIH0KKyAgICAgICAgcGFja2V0c2l6ZSArPSBob3N0bmFtZWxlbjsKKyAgICAgIH0KKyAgICAgIHN4LT5vdXRwID0gc29ja3NyZXE7CisgICAgICBzeC0+b3V0c3RhbmRpbmcgPSBwYWNrZXRzaXplOworICAgICAgc3hzdGF0ZShjb25uLCBDT05ORUNUX1JFUV9TRU5ESU5HKTsKKyAgICB9CisgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgY2FzZSBDT05ORUNUX1JFUV9TRU5ESU5HOgorICAgIC8qIFNlbmQgcmVxdWVzdCAqLworICAgIHJlc3VsdCA9IEN1cmxfd3JpdGVfcGxhaW4oY29ubiwgc29ja2ZkLCAoY2hhciAqKXN4LT5vdXRwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3gtPm91dHN0YW5kaW5nLCAmd3JpdHRlbik7CisgICAgaWYocmVzdWx0ICYmIChDVVJMRV9BR0FJTiAhPSByZXN1bHQpKSB7CisgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHRvIHNlbmQgU09DS1M0IGNvbm5lY3QgcmVxdWVzdC4iKTsKICAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7CiAgICAgfQorICAgIGlmKHdyaXR0ZW4gIT0gc3gtPm91dHN0YW5kaW5nKSB7CisgICAgICAvKiBub3QgZG9uZSwgcmVtYWluIGluIHN0YXRlICovCisgICAgICBzeC0+b3V0c3RhbmRpbmcgLT0gd3JpdHRlbjsKKyAgICAgIHN4LT5vdXRwICs9IHdyaXR0ZW47CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQogCi0gICAgLyogUmVzdWx0ICovCi0gICAgc3dpdGNoKHNvY2tzcmVxWzFdKSB7Ci0gICAgY2FzZSA5MDoKLSAgICAgIGluZm9mKGRhdGEsICJTT0NLUzQlcyByZXF1ZXN0IGdyYW50ZWQuXG4iLCBwcm90b2NvbDRhPyJhIjoiIik7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIDkxOgotICAgICAgZmFpbGYoZGF0YSwKLSAgICAgICAgICAgICJDYW4ndCBjb21wbGV0ZSBTT0NLUzQgY29ubmVjdGlvbiB0byAlZC4lZC4lZC4lZDolZC4gKCVkKSIKLSAgICAgICAgICAgICIsIHJlcXVlc3QgcmVqZWN0ZWQgb3IgZmFpbGVkLiIsCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs0XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNV0sCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs2XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbN10sCi0gICAgICAgICAgICAoKCh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzJdIDw8IDgpIHwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbM10pLAotICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMV0pOwotICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKLSAgICBjYXNlIDkyOgotICAgICAgZmFpbGYoZGF0YSwKLSAgICAgICAgICAgICJDYW4ndCBjb21wbGV0ZSBTT0NLUzQgY29ubmVjdGlvbiB0byAlZC4lZC4lZC4lZDolZC4gKCVkKSIKLSAgICAgICAgICAgICIsIHJlcXVlc3QgcmVqZWN0ZWQgYmVjYXVzZSBTT0NLUyBzZXJ2ZXIgY2Fubm90IGNvbm5lY3QgdG8gIgotICAgICAgICAgICAgImlkZW50ZCBvbiB0aGUgY2xpZW50LiIsCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs0XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNV0sCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs2XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbN10sCi0gICAgICAgICAgICAoKCh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzJdIDw8IDgpIHwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbM10pLAotICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMV0pOwotICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKLSAgICBjYXNlIDkzOgotICAgICAgZmFpbGYoZGF0YSwKLSAgICAgICAgICAgICJDYW4ndCBjb21wbGV0ZSBTT0NLUzQgY29ubmVjdGlvbiB0byAlZC4lZC4lZC4lZDolZC4gKCVkKSIKLSAgICAgICAgICAgICIsIHJlcXVlc3QgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgY2xpZW50IHByb2dyYW0gYW5kIGlkZW50ZCAiCi0gICAgICAgICAgICAicmVwb3J0IGRpZmZlcmVudCB1c2VyLWlkcy4iLAotICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNF0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzVdLAotICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNl0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzddLAotICAgICAgICAgICAgKCgodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsyXSA8PCA4KSB8ICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzNdKSwKLSAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzFdKTsKLSAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGZhaWxmKGRhdGEsCi0gICAgICAgICAgICAiQ2FuJ3QgY29tcGxldGUgU09DS1M0IGNvbm5lY3Rpb24gdG8gJWQuJWQuJWQuJWQ6JWQuICglZCkiCi0gICAgICAgICAgICAiLCBVbmtub3duLiIsCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs0XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNV0sCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs2XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbN10sCi0gICAgICAgICAgICAoKCh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzJdIDw8IDgpIHwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbM10pLAotICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMV0pOworICAgIC8qIGRvbmUgc2VuZGluZyEgKi8KKyAgICBzeC0+b3V0c3RhbmRpbmcgPSA4OyAvKiByZWNlaXZlIGRhdGEgc2l6ZSAqLworICAgIHN4LT5vdXRwID0gc29ja3NyZXE7CisgICAgc3hzdGF0ZShjb25uLCBDT05ORUNUX1NPQ0tTX1JFQUQpOworCisgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgY2FzZSBDT05ORUNUX1NPQ0tTX1JFQUQ6CisgICAgLyogUmVjZWl2ZSByZXNwb25zZSAqLworICAgIHJlc3VsdCA9IEN1cmxfcmVhZF9wbGFpbihzb2NrZmQsIChjaGFyICopc3gtPm91dHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4LT5vdXRzdGFuZGluZywgJmFjdHVhbHJlYWQpOworICAgIGlmKHJlc3VsdCAmJiAoQ1VSTEVfQUdBSU4gIT0gcmVzdWx0KSkgeworICAgICAgZmFpbGYoZGF0YSwgIlNPQ0tTNDogRmFpbGVkIHJlY2VpdmluZyBjb25uZWN0IHJlcXVlc3QgYWNrOiAlcyIsCisgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzdWx0KSk7CiAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwogICAgIH0KKyAgICBlbHNlIGlmKGFjdHVhbHJlYWQgIT0gc3gtPm91dHN0YW5kaW5nKSB7CisgICAgICAvKiByZW1haW4gaW4gcmVhZGluZyBzdGF0ZSAqLworICAgICAgc3gtPm91dHN0YW5kaW5nIC09IGFjdHVhbHJlYWQ7CisgICAgICBzeC0+b3V0cCArPSBhY3R1YWxyZWFkOworICAgICAgcmV0dXJuIENVUkxFX09LOworICAgIH0KKyAgICBzeHN0YXRlKGNvbm4sIENPTk5FQ1RfRE9ORSk7CisgICAgYnJlYWs7CisgIGRlZmF1bHQ6IC8qIGxvdHMgb2YgdW51c2VkIHN0YXRlcyBpbiBTT0NLUzQgKi8KKyAgICBicmVhazsKICAgfQogCi0gICh2b2lkKWN1cmx4X25vbmJsb2NrKHNvY2ssIFRSVUUpOworICAvKgorICAgKiBSZXNwb25zZSBmb3JtYXQKKyAgICoKKyAgICogICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgICAqICAgICB8IFZOIHwgQ0QgfCBEU1RQT1JUIHwgICAgICBEU1RJUCAgICAgICAgfAorICAgKiAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgICogIyBvZiBieXRlczogIDEgICAgMSAgICAgIDIgICAgICAgICAgICAgIDQKKyAgICoKKyAgICogVk4gaXMgdGhlIHZlcnNpb24gb2YgdGhlIHJlcGx5IGNvZGUgYW5kIHNob3VsZCBiZSAwLiBDRCBpcyB0aGUgcmVzdWx0CisgICAqIGNvZGUgd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICAqCisgICAqIDkwOiByZXF1ZXN0IGdyYW50ZWQKKyAgICogOTE6IHJlcXVlc3QgcmVqZWN0ZWQgb3IgZmFpbGVkCisgICAqIDkyOiByZXF1ZXN0IHJlamVjdGVkIGJlY2F1c2UgU09DS1Mgc2VydmVyIGNhbm5vdCBjb25uZWN0IHRvCisgICAqICAgICBpZGVudGQgb24gdGhlIGNsaWVudAorICAgKiA5MzogcmVxdWVzdCByZWplY3RlZCBiZWNhdXNlIHRoZSBjbGllbnQgcHJvZ3JhbSBhbmQgaWRlbnRkCisgICAqICAgICByZXBvcnQgZGlmZmVyZW50IHVzZXItaWRzCisgICAqLwogCisgIC8qIHdyb25nIHZlcnNpb24gPyAqLworICBpZihzb2Nrc3JlcVswXSAhPSAwKSB7CisgICAgZmFpbGYoZGF0YSwKKyAgICAgICAgICAiU09DS1M0IHJlcGx5IGhhcyB3cm9uZyB2ZXJzaW9uLCB2ZXJzaW9uIHNob3VsZCBiZSAwLiIpOworICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7CisgIH0KKworICAvKiBSZXN1bHQgKi8KKyAgc3dpdGNoKHNvY2tzcmVxWzFdKSB7CisgIGNhc2UgOTA6CisgICAgaW5mb2YoZGF0YSwgIlNPQ0tTNCVzIHJlcXVlc3QgZ3JhbnRlZC5cbiIsIHByb3RvY29sNGE/ImEiOiIiKTsKKyAgICBicmVhazsKKyAgY2FzZSA5MToKKyAgICBmYWlsZihkYXRhLAorICAgICAgICAgICJDYW4ndCBjb21wbGV0ZSBTT0NLUzQgY29ubmVjdGlvbiB0byAlZC4lZC4lZC4lZDolZC4gKCVkKSIKKyAgICAgICAgICAiLCByZXF1ZXN0IHJlamVjdGVkIG9yIGZhaWxlZC4iLAorICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzRdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs1XSwKKyAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs2XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbN10sCisgICAgICAgICAgKCgodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsyXSA8PCA4KSB8ICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzNdKSwKKyAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxXSk7CisgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKKyAgY2FzZSA5MjoKKyAgICBmYWlsZihkYXRhLAorICAgICAgICAgICJDYW4ndCBjb21wbGV0ZSBTT0NLUzQgY29ubmVjdGlvbiB0byAlZC4lZC4lZC4lZDolZC4gKCVkKSIKKyAgICAgICAgICAiLCByZXF1ZXN0IHJlamVjdGVkIGJlY2F1c2UgU09DS1Mgc2VydmVyIGNhbm5vdCBjb25uZWN0IHRvICIKKyAgICAgICAgICAiaWRlbnRkIG9uIHRoZSBjbGllbnQuIiwKKyAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs0XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNV0sCisgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNl0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzddLAorICAgICAgICAgICgoKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMl0gPDwgOCkgfCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVszXSksCisgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMV0pOworICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7CisgIGNhc2UgOTM6CisgICAgZmFpbGYoZGF0YSwKKyAgICAgICAgICAiQ2FuJ3QgY29tcGxldGUgU09DS1M0IGNvbm5lY3Rpb24gdG8gJWQuJWQuJWQuJWQ6JWQuICglZCkiCisgICAgICAgICAgIiwgcmVxdWVzdCByZWplY3RlZCBiZWNhdXNlIHRoZSBjbGllbnQgcHJvZ3JhbSBhbmQgaWRlbnRkICIKKyAgICAgICAgICAicmVwb3J0IGRpZmZlcmVudCB1c2VyLWlkcy4iLAorICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzRdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs1XSwKKyAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs2XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbN10sCisgICAgICAgICAgKCgodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsyXSA8PCA4KSB8ICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzNdKSwKKyAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxXSk7CisgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKKyAgZGVmYXVsdDoKKyAgICBmYWlsZihkYXRhLAorICAgICAgICAgICJDYW4ndCBjb21wbGV0ZSBTT0NLUzQgY29ubmVjdGlvbiB0byAlZC4lZC4lZC4lZDolZC4gKCVkKSIKKyAgICAgICAgICAiLCBVbmtub3duLiIsCisgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNF0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzVdLAorICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzZdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs3XSwKKyAgICAgICAgICAoKCh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzJdIDw8IDgpIHwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbM10pLAorICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzFdKTsKKyAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworICB9CisKKyAgKmRvbmUgPSBUUlVFOwogICByZXR1cm4gQ1VSTEVfT0s7IC8qIFByb3h5IHdhcyBzdWNjZXNzZnVsISAqLwogfQogCkBAIC0zNTQsNyArNDc0LDggQEAKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgaW50IHJlbW90ZV9wb3J0LAogICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvbmUpCiB7CiAgIC8qCiAgICAgQWNjb3JkaW5nIHRvIHRoZSBSRkMxOTI4LCBzZWN0aW9uICI2LiAgUmVwbGllcyIuIFRoaXMgaXMgd2hhdCBhIFNPQ0s1CkBAIC0zNzIsMTQwICs0OTMsMTU4IEBACiAgICAgbyAgUkVQICAgIFJlcGx5IGZpZWxkOgogICAgIG8gIFgnMDAnIHN1Y2NlZWRlZAogICAqLwotCi0gIHVuc2lnbmVkIGNoYXIgc29ja3NyZXFbNjAwXTsgLyogcm9vbSBmb3IgbGFyZ2UgdXNlci9wdyAoMjU1IG1heCBlYWNoKSAqLworICB1bnNpZ25lZCBjaGFyICpzb2Nrc3JlcSA9ICZjb25uLT5jbm5jdC5zb2Nrc3JlcVswXTsKKyAgY2hhciBkZXN0WzI1Nl0gPSAidW5rbm93biI7ICAvKiBwcmludGFibGUgaG9zdG5hbWU6cG9ydCAqLwogICBpbnQgaWR4OwogICBzc2l6ZV90IGFjdHVhbHJlYWQ7CiAgIHNzaXplX3Qgd3JpdHRlbjsKLSAgaW50IHJlc3VsdDsKLSAgQ1VSTGNvZGUgY29kZTsKLSAgY3VybF9zb2NrZXRfdCBzb2NrID0gY29ubi0+c29ja1tzb2NraW5kZXhdOworICBDVVJMY29kZSByZXN1bHQ7CisgIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tzb2NraW5kZXhdOwogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgdGltZWRpZmZfdCB0aW1lb3V0OwogICBib29sIHNvY2tzNV9yZXNvbHZlX2xvY2FsID0KICAgICAoY29ubi0+c29ja3NfcHJveHkucHJveHl0eXBlID09IENVUkxQUk9YWV9TT0NLUzUpID8gVFJVRSA6IEZBTFNFOwogICBjb25zdCBzaXplX3QgaG9zdG5hbWVfbGVuID0gc3RybGVuKGhvc3RuYW1lKTsKICAgc3NpemVfdCBsZW4gPSAwOwogICBjb25zdCB1bnNpZ25lZCBsb25nIGF1dGggPSBkYXRhLT5zZXQuc29ja3M1YXV0aDsKICAgYm9vbCBhbGxvd19nc3NhcGkgPSBGQUxTRTsKKyAgc3RydWN0IGNvbm5zdGF0ZSAqc3ggPSAmY29ubi0+Y25uY3Q7CisgIHN0cnVjdCBDdXJsX2Ruc19lbnRyeSAqZG5zID0gTlVMTDsKIAotICBpZihjb25uLT5iaXRzLmh0dHBwcm94eSkKLSAgICBpbmZvZihjb25uLT5kYXRhLCAiU09DS1M1OiBjb25uZWN0aW5nIHRvIEhUVFAgcHJveHkgJXMgcG9ydCAlZFxuIiwKLSAgICAgICAgICBob3N0bmFtZSwgcmVtb3RlX3BvcnQpOworICBpZighU09DS1NfU1RBVEUoc3gtPnN0YXRlKSAmJiAhKmRvbmUpCisgICAgc3hzdGF0ZShjb25uLCBDT05ORUNUX1NPQ0tTX0lOSVQpOwogCi0gIC8qIFJGQzE5MjggY2hhcHRlciA1IHNwZWNpZmllcyBtYXggMjU1IGNoYXJzIGZvciBkb21haW4gbmFtZSBpbiBwYWNrZXQgKi8KLSAgaWYoIXNvY2tzNV9yZXNvbHZlX2xvY2FsICYmIGhvc3RuYW1lX2xlbiA+IDI1NSkgewotICAgIGluZm9mKGNvbm4tPmRhdGEsICJTT0NLUzU6IHNlcnZlciByZXNvbHZpbmcgZGlzYWJsZWQgZm9yIGhvc3RuYW1lcyBvZiAiCi0gICAgICAgICAgImxlbmd0aCA+IDI1NSBbYWN0dWFsIGxlbj0lenVdXG4iLCBob3N0bmFtZV9sZW4pOwotICAgIHNvY2tzNV9yZXNvbHZlX2xvY2FsID0gVFJVRTsKLSAgfQorICBzd2l0Y2goc3gtPnN0YXRlKSB7CisgIGNhc2UgQ09OTkVDVF9TT0NLU19JTklUOgorICAgIGlmKGNvbm4tPmJpdHMuaHR0cHByb3h5KQorICAgICAgaW5mb2YoY29ubi0+ZGF0YSwgIlNPQ0tTNTogY29ubmVjdGluZyB0byBIVFRQIHByb3h5ICVzIHBvcnQgJWRcbiIsCisgICAgICAgICAgICBob3N0bmFtZSwgcmVtb3RlX3BvcnQpOwogCi0gIC8qIGdldCB0aW1lb3V0ICovCi0gIHRpbWVvdXQgPSBDdXJsX3RpbWVsZWZ0KGRhdGEsIE5VTEwsIFRSVUUpOworICAgIC8qIFJGQzE5MjggY2hhcHRlciA1IHNwZWNpZmllcyBtYXggMjU1IGNoYXJzIGZvciBkb21haW4gbmFtZSBpbiBwYWNrZXQgKi8KKyAgICBpZighc29ja3M1X3Jlc29sdmVfbG9jYWwgJiYgaG9zdG5hbWVfbGVuID4gMjU1KSB7CisgICAgICBpbmZvZihjb25uLT5kYXRhLCAiU09DS1M1OiBzZXJ2ZXIgcmVzb2x2aW5nIGRpc2FibGVkIGZvciBob3N0bmFtZXMgb2YgIgorICAgICAgICAgICAgImxlbmd0aCA+IDI1NSBbYWN0dWFsIGxlbj0lenVdXG4iLCBob3N0bmFtZV9sZW4pOworICAgICAgc29ja3M1X3Jlc29sdmVfbG9jYWwgPSBUUlVFOworICAgIH0KIAotICBpZih0aW1lb3V0IDwgMCkgewotICAgIC8qIHRpbWUtb3V0LCBiYWlsIG91dCwgZ28gaG9tZSAqLwotICAgIGZhaWxmKGRhdGEsICJDb25uZWN0aW9uIHRpbWUtb3V0Iik7Ci0gICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKLSAgfQotCi0gICh2b2lkKWN1cmx4X25vbmJsb2NrKHNvY2ssIFRSVUUpOwotCi0gIC8qIHdhaXQgdW50aWwgc29ja2V0IGdldHMgY29ubmVjdGVkICovCi0gIHJlc3VsdCA9IFNPQ0tFVF9XUklUQUJMRShzb2NrLCB0aW1lb3V0KTsKLQotICBpZigtMSA9PSByZXN1bHQpIHsKLSAgICBmYWlsZihjb25uLT5kYXRhLCAiU09DS1M1OiBubyBjb25uZWN0aW9uIGhlcmUiKTsKLSAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwotICB9Ci0gIGlmKDAgPT0gcmVzdWx0KSB7Ci0gICAgZmFpbGYoY29ubi0+ZGF0YSwgIlNPQ0tTNTogY29ubmVjdGlvbiB0aW1lb3V0Iik7Ci0gICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKLSAgfQotCi0gIGlmKHJlc3VsdCAmIENVUkxfQ1NFTEVDVF9FUlIpIHsKLSAgICBmYWlsZihjb25uLT5kYXRhLCAiU09DS1M1OiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29ubmVjdGlvbiIpOwotICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7Ci0gIH0KLQotICBpZihhdXRoICYgfihDVVJMQVVUSF9CQVNJQyB8IENVUkxBVVRIX0dTU0FQSSkpCi0gICAgaW5mb2YoY29ubi0+ZGF0YSwKLSAgICAgICAgIndhcm5pbmc6IHVuc3VwcG9ydGVkIHZhbHVlIHBhc3NlZCB0byBDVVJMT1BUX1NPQ0tTNV9BVVRIOiAlbHVcbiIsCi0gICAgICAgIGF1dGgpOwotICBpZighKGF1dGggJiBDVVJMQVVUSF9CQVNJQykpCi0gICAgLyogZGlzYWJsZSB1c2VybmFtZS9wYXNzd29yZCBhdXRoICovCi0gICAgcHJveHlfdXNlciA9IE5VTEw7CisgICAgaWYoYXV0aCAmIH4oQ1VSTEFVVEhfQkFTSUMgfCBDVVJMQVVUSF9HU1NBUEkpKQorICAgICAgaW5mb2YoY29ubi0+ZGF0YSwKKyAgICAgICAgICAgICJ3YXJuaW5nOiB1bnN1cHBvcnRlZCB2YWx1ZSBwYXNzZWQgdG8gQ1VSTE9QVF9TT0NLUzVfQVVUSDogJWx1XG4iLAorICAgICAgICAgICAgYXV0aCk7CisgICAgaWYoIShhdXRoICYgQ1VSTEFVVEhfQkFTSUMpKQorICAgICAgLyogZGlzYWJsZSB1c2VybmFtZS9wYXNzd29yZCBhdXRoICovCisgICAgICBwcm94eV91c2VyID0gTlVMTDsKICNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0gIGlmKGF1dGggJiBDVVJMQVVUSF9HU1NBUEkpCi0gICAgYWxsb3dfZ3NzYXBpID0gVFJVRTsKKyAgICBpZihhdXRoICYgQ1VSTEFVVEhfR1NTQVBJKQorICAgICAgYWxsb3dfZ3NzYXBpID0gVFJVRTsKICNlbmRpZgogCi0gIGlkeCA9IDA7Ci0gIHNvY2tzcmVxW2lkeCsrXSA9IDU7ICAgLyogdmVyc2lvbiAqLwotICBpZHgrKzsgICAgICAgICAgICAgICAgIC8qIHJlc2VydmUgZm9yIHRoZSBudW1iZXIgb2YgYXV0aGVudGljYXRpb24gbWV0aG9kcyAqLwotICBzb2Nrc3JlcVtpZHgrK10gPSAwOyAgIC8qIG5vIGF1dGhlbnRpY2F0aW9uICovCi0gIGlmKGFsbG93X2dzc2FwaSkKLSAgICBzb2Nrc3JlcVtpZHgrK10gPSAxOyAvKiBHU1MtQVBJICovCi0gIGlmKHByb3h5X3VzZXIpCi0gICAgc29ja3NyZXFbaWR4KytdID0gMjsgLyogdXNlcm5hbWUvcGFzc3dvcmQgKi8KLSAgLyogd3JpdGUgdGhlIG51bWJlciBvZiBhdXRoZW50aWNhdGlvbiBtZXRob2RzICovCi0gIHNvY2tzcmVxWzFdID0gKHVuc2lnbmVkIGNoYXIpIChpZHggLSAyKTsKKyAgICBpZHggPSAwOworICAgIHNvY2tzcmVxW2lkeCsrXSA9IDU7ICAgLyogdmVyc2lvbiAqLworICAgIGlkeCsrOyAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgKi8KKyAgICBzb2Nrc3JlcVtpZHgrK10gPSAwOyAgIC8qIG5vIGF1dGhlbnRpY2F0aW9uICovCisgICAgaWYoYWxsb3dfZ3NzYXBpKQorICAgICAgc29ja3NyZXFbaWR4KytdID0gMTsgLyogR1NTLUFQSSAqLworICAgIGlmKHByb3h5X3VzZXIpCisgICAgICBzb2Nrc3JlcVtpZHgrK10gPSAyOyAvKiB1c2VybmFtZS9wYXNzd29yZCAqLworICAgIC8qIHdyaXRlIHRoZSBudW1iZXIgb2YgYXV0aGVudGljYXRpb24gbWV0aG9kcyAqLworICAgIHNvY2tzcmVxWzFdID0gKHVuc2lnbmVkIGNoYXIpIChpZHggLSAyKTsKIAotICAodm9pZCljdXJseF9ub25ibG9jayhzb2NrLCBGQUxTRSk7Ci0KLSAgaW5mb2YoZGF0YSwgIlNPQ0tTNSBjb21tdW5pY2F0aW9uIHRvICVzOiVkXG4iLCBob3N0bmFtZSwgcmVtb3RlX3BvcnQpOwotCi0gIGNvZGUgPSBDdXJsX3dyaXRlX3BsYWluKGNvbm4sIHNvY2ssIChjaGFyICopc29ja3NyZXEsICgyICsgKGludClzb2Nrc3JlcVsxXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0dGVuKTsKLSAgaWYoY29kZSB8fCAod3JpdHRlbiAhPSAoMiArIChpbnQpc29ja3NyZXFbMV0pKSkgewotICAgIGZhaWxmKGRhdGEsICJVbmFibGUgdG8gc2VuZCBpbml0aWFsIFNPQ0tTNSByZXF1ZXN0LiIpOwotICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7Ci0gIH0KLQotICAodm9pZCljdXJseF9ub25ibG9jayhzb2NrLCBUUlVFKTsKLQotICByZXN1bHQgPSBTT0NLRVRfUkVBREFCTEUoc29jaywgdGltZW91dCk7Ci0KLSAgaWYoLTEgPT0gcmVzdWx0KSB7Ci0gICAgZmFpbGYoY29ubi0+ZGF0YSwgIlNPQ0tTNSBub3RoaW5nIHRvIHJlYWQiKTsKLSAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwotICB9Ci0gIGlmKDAgPT0gcmVzdWx0KSB7Ci0gICAgZmFpbGYoY29ubi0+ZGF0YSwgIlNPQ0tTNSByZWFkIHRpbWVvdXQiKTsKLSAgICByZXR1cm4gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOwotICB9Ci0KLSAgaWYocmVzdWx0ICYgQ1VSTF9DU0VMRUNUX0VSUikgewotICAgIGZhaWxmKGNvbm4tPmRhdGEsICJTT0NLUzUgcmVhZCBlcnJvciBvY2N1cnJlZCIpOwotICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOwotICB9Ci0KLSAgKHZvaWQpY3VybHhfbm9uYmxvY2soc29jaywgRkFMU0UpOwotCi0gIHJlc3VsdCA9IEN1cmxfYmxvY2tyZWFkX2FsbChjb25uLCBzb2NrLCAoY2hhciAqKXNvY2tzcmVxLCAyLCAmYWN0dWFscmVhZCk7Ci0gIGlmKHJlc3VsdCB8fCAoYWN0dWFscmVhZCAhPSAyKSkgewotICAgIGZhaWxmKGRhdGEsICJVbmFibGUgdG8gcmVjZWl2ZSBpbml0aWFsIFNPQ0tTNSByZXNwb25zZS4iKTsKLSAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwotICB9Ci0KLSAgaWYoc29ja3NyZXFbMF0gIT0gNSkgewotICAgIGZhaWxmKGRhdGEsICJSZWNlaXZlZCBpbnZhbGlkIHZlcnNpb24gaW4gaW5pdGlhbCBTT0NLUzUgcmVzcG9uc2UuIik7Ci0gICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKLSAgfQotICBpZihzb2Nrc3JlcVsxXSA9PSAwKSB7Ci0gICAgLyogTm90aGluZyB0byBkbywgbm8gYXV0aGVudGljYXRpb24gbmVlZGVkICovCi0gICAgOwotICB9Ci0jaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQotICBlbHNlIGlmKGFsbG93X2dzc2FwaSAmJiAoc29ja3NyZXFbMV0gPT0gMSkpIHsKLSAgICBjb2RlID0gQ3VybF9TT0NLUzVfZ3NzYXBpX25lZ290aWF0ZShzb2NraW5kZXgsIGNvbm4pOwotICAgIGlmKGNvZGUpIHsKLSAgICAgIGZhaWxmKGRhdGEsICJVbmFibGUgdG8gbmVnb3RpYXRlIFNPQ0tTNSBHU1MtQVBJIGNvbnRleHQuIik7CisgICAgcmVzdWx0ID0gQ3VybF93cml0ZV9wbGFpbihjb25uLCBzb2NrZmQsIChjaGFyICopc29ja3NyZXEsIGlkeCwgJndyaXR0ZW4pOworICAgIGlmKHJlc3VsdCAmJiAoQ1VSTEVfQUdBSU4gIT0gcmVzdWx0KSkgeworICAgICAgZmFpbGYoZGF0YSwgIlVuYWJsZSB0byBzZW5kIGluaXRpYWwgU09DS1M1IHJlcXVlc3QuIik7CiAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwogICAgIH0KLSAgfQorICAgIGlmKHdyaXR0ZW4gIT0gaWR4KSB7CisgICAgICBzeHN0YXRlKGNvbm4sIENPTk5FQ1RfU09DS1NfU0VORCk7CisgICAgICBzeC0+b3V0c3RhbmRpbmcgPSBpZHggLSB3cml0dGVuOworICAgICAgc3gtPm91dHAgPSAmc29ja3NyZXFbd3JpdHRlbl07CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQorICAgIHN4c3RhdGUoY29ubiwgQ09OTkVDVF9TT0NLU19SRUFEKTsKKyAgICBnb3RvIENPTk5FQ1RfU09DS1NfUkVBRF9JTklUOworICBjYXNlIENPTk5FQ1RfU09DS1NfU0VORDoKKyAgICByZXN1bHQgPSBDdXJsX3dyaXRlX3BsYWluKGNvbm4sIHNvY2tmZCwgKGNoYXIgKilzeC0+b3V0cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4LT5vdXRzdGFuZGluZywgJndyaXR0ZW4pOworICAgIGlmKHJlc3VsdCAmJiAoQ1VSTEVfQUdBSU4gIT0gcmVzdWx0KSkgeworICAgICAgZmFpbGYoZGF0YSwgIlVuYWJsZSB0byBzZW5kIGluaXRpYWwgU09DS1M1IHJlcXVlc3QuIik7CisgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworICAgIH0KKyAgICBpZih3cml0dGVuICE9IHN4LT5vdXRzdGFuZGluZykgeworICAgICAgLyogbm90IGRvbmUsIHJlbWFpbiBpbiBzdGF0ZSAqLworICAgICAgc3gtPm91dHN0YW5kaW5nIC09IHdyaXR0ZW47CisgICAgICBzeC0+b3V0cCArPSB3cml0dGVuOworICAgICAgcmV0dXJuIENVUkxFX09LOworICAgIH0KKyAgICAvKiBGQUxMVEhST1VHSCAqLworICBDT05ORUNUX1NPQ0tTX1JFQURfSU5JVDoKKyAgY2FzZSBDT05ORUNUX1NPQ0tTX1JFQURfSU5JVDoKKyAgICBzeC0+b3V0c3RhbmRpbmcgPSAyOyAvKiBleHBlY3QgdHdvIGJ5dGVzICovCisgICAgc3gtPm91dHAgPSBzb2Nrc3JlcTsgLyogc3RvcmUgaXQgaGVyZSAqLworICAgIC8qIEZBTExUSFJPVUdIICovCisgIGNhc2UgQ09OTkVDVF9TT0NLU19SRUFEOgorICAgIHJlc3VsdCA9IEN1cmxfcmVhZF9wbGFpbihzb2NrZmQsIChjaGFyICopc3gtPm91dHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4LT5vdXRzdGFuZGluZywgJmFjdHVhbHJlYWQpOworICAgIGlmKHJlc3VsdCAmJiAoQ1VSTEVfQUdBSU4gIT0gcmVzdWx0KSkgeworICAgICAgZmFpbGYoZGF0YSwgIlVuYWJsZSB0byByZWNlaXZlIGluaXRpYWwgU09DS1M1IHJlc3BvbnNlLiIpOworICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKKyAgICB9CisgICAgZWxzZSBpZihhY3R1YWxyZWFkICE9IHN4LT5vdXRzdGFuZGluZykgeworICAgICAgLyogcmVtYWluIGluIHJlYWRpbmcgc3RhdGUgKi8KKyAgICAgIHN4LT5vdXRzdGFuZGluZyAtPSBhY3R1YWxyZWFkOworICAgICAgc3gtPm91dHAgKz0gYWN0dWFscmVhZDsKKyAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICB9CisgICAgZWxzZSBpZihzb2Nrc3JlcVswXSAhPSA1KSB7CisgICAgICBmYWlsZihkYXRhLCAiUmVjZWl2ZWQgaW52YWxpZCB2ZXJzaW9uIGluIGluaXRpYWwgU09DS1M1IHJlc3BvbnNlLiIpOworICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKKyAgICB9CisgICAgZWxzZSBpZihzb2Nrc3JlcVsxXSA9PSAwKSB7CisgICAgICAvKiBET05FISBObyBhdXRoZW50aWNhdGlvbiBuZWVkZWQuIFNlbmQgcmVxdWVzdC4gKi8KKyAgICAgIHN4c3RhdGUoY29ubiwgQ09OTkVDVF9SRVFfSU5JVCk7CisgICAgICBnb3RvIENPTk5FQ1RfUkVRX0lOSVQ7CisgICAgfQorICAgIGVsc2UgaWYoc29ja3NyZXFbMV0gPT0gMikgeworICAgICAgLyogcmVndWxhciBuYW1lICsgcGFzc3dvcmQgYXV0aGVudGljYXRpb24gKi8KKyAgICAgIHN4c3RhdGUoY29ubiwgQ09OTkVDVF9BVVRIX0lOSVQpOworICAgICAgZ290byBDT05ORUNUX0FVVEhfSU5JVDsKKyAgICB9CisjaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQorICAgIGVsc2UgaWYoYWxsb3dfZ3NzYXBpICYmIChzb2Nrc3JlcVsxXSA9PSAxKSkgeworICAgICAgc3hzdGF0ZShjb25uLCBDT05ORUNUX0dTU0FQSV9JTklUKTsKKyAgICAgIHJlc3VsdCA9IEN1cmxfU09DS1M1X2dzc2FwaV9uZWdvdGlhdGUoc29ja2luZGV4LCBjb25uKTsKKyAgICAgIGlmKHJlc3VsdCkgeworICAgICAgICBmYWlsZihkYXRhLCAiVW5hYmxlIHRvIG5lZ290aWF0ZSBTT0NLUzUgR1NTLUFQSSBjb250ZXh0LiIpOworICAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworICAgICAgfQorICAgIH0KICNlbmRpZgotICBlbHNlIGlmKHNvY2tzcmVxWzFdID09IDIpIHsKKyAgICBlbHNlIHsKKyAgICAgIC8qIGVycm9yICovCisgICAgICBpZighYWxsb3dfZ3NzYXBpICYmIChzb2Nrc3JlcVsxXSA9PSAxKSkgeworICAgICAgICBmYWlsZihkYXRhLAorICAgICAgICAgICAgICAiU09DS1M1IEdTU0FQSSBwZXItbWVzc2FnZSBhdXRoZW50aWNhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiIpOworICAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworICAgICAgfQorICAgICAgZWxzZSBpZihzb2Nrc3JlcVsxXSA9PSAyNTUpIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgIk5vIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB3YXMgYWNjZXB0YWJsZS4iKTsKKyAgICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKKyAgICAgIH0KKyAgICAgIGZhaWxmKGRhdGEsCisgICAgICAgICAgICAiVW5kb2N1bWVudGVkIFNPQ0tTNSBtb2RlIGF0dGVtcHRlZCB0byBiZSB1c2VkIGJ5IHNlcnZlci4iKTsKKyAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7CisgICAgfQorICAgIGJyZWFrOworI2lmIGRlZmluZWQoSEFWRV9HU1NBUEkpIHx8IGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKKyAgY2FzZSBDT05ORUNUX0dTU0FQSV9JTklUOgorICAgIC8qIEdTU0FQSSBzdHVmZiBkb25lIG5vbi1ibG9ja2luZyAqLworICAgIGJyZWFrOworI2VuZGlmCisKKyAgZGVmYXVsdDogLyogZG8gbm90aGluZyEgKi8KKyAgICBicmVhazsKKworICBDT05ORUNUX0FVVEhfSU5JVDoKKyAgY2FzZSBDT05ORUNUX0FVVEhfSU5JVDogewogICAgIC8qIE5lZWRzIHVzZXIgbmFtZSBhbmQgcGFzc3dvcmQgKi8KICAgICBzaXplX3QgcHJveHlfdXNlcl9sZW4sIHByb3h5X3Bhc3N3b3JkX2xlbjsKICAgICBpZihwcm94eV91c2VyICYmIHByb3h5X3Bhc3N3b3JkKSB7CkBAIC01NDYsMTggKzY4NSw0MSBAQAogICAgICAgbWVtY3B5KHNvY2tzcmVxICsgbGVuLCBwcm94eV9wYXNzd29yZCwgcHJveHlfcGFzc3dvcmRfbGVuKTsKICAgICB9CiAgICAgbGVuICs9IHByb3h5X3Bhc3N3b3JkX2xlbjsKLQotICAgIGNvZGUgPSBDdXJsX3dyaXRlX3BsYWluKGNvbm4sIHNvY2ssIChjaGFyICopc29ja3NyZXEsIGxlbiwgJndyaXR0ZW4pOwotICAgIGlmKGNvZGUgfHwgKGxlbiAhPSB3cml0dGVuKSkgeworICAgIHN4c3RhdGUoY29ubiwgQ09OTkVDVF9BVVRIX1NFTkQpOworICAgIHN4LT5vdXRzdGFuZGluZyA9IGxlbjsKKyAgICBzeC0+b3V0cCA9IHNvY2tzcmVxOworICB9CisgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgY2FzZSBDT05ORUNUX0FVVEhfU0VORDoKKyAgICByZXN1bHQgPSBDdXJsX3dyaXRlX3BsYWluKGNvbm4sIHNvY2tmZCwgKGNoYXIgKilzeC0+b3V0cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4LT5vdXRzdGFuZGluZywgJndyaXR0ZW4pOworICAgIGlmKHJlc3VsdCAmJiAoQ1VSTEVfQUdBSU4gIT0gcmVzdWx0KSkgewogICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCB0byBzZW5kIFNPQ0tTNSBzdWItbmVnb3RpYXRpb24gcmVxdWVzdC4iKTsKICAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7CiAgICAgfQotCi0gICAgcmVzdWx0ID0gQ3VybF9ibG9ja3JlYWRfYWxsKGNvbm4sIHNvY2ssIChjaGFyICopc29ja3NyZXEsIDIsICZhY3R1YWxyZWFkKTsKLSAgICBpZihyZXN1bHQgfHwgKGFjdHVhbHJlYWQgIT0gMikpIHsKKyAgICBpZihzeC0+b3V0c3RhbmRpbmcgIT0gd3JpdHRlbikgeworICAgICAgLyogcmVtYWluIGluIHN0YXRlICovCisgICAgICBzeC0+b3V0c3RhbmRpbmcgLT0gd3JpdHRlbjsKKyAgICAgIHN4LT5vdXRwICs9IHdyaXR0ZW47CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQorICAgIHN4LT5vdXRwID0gc29ja3NyZXE7CisgICAgc3gtPm91dHN0YW5kaW5nID0gMjsKKyAgICBzeHN0YXRlKGNvbm4sIENPTk5FQ1RfQVVUSF9SRUFEKTsKKyAgICAvKiBGQUxMVEhST1VHSCAqLworICBjYXNlIENPTk5FQ1RfQVVUSF9SRUFEOgorICAgIHJlc3VsdCA9IEN1cmxfcmVhZF9wbGFpbihzb2NrZmQsIChjaGFyICopc3gtPm91dHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4LT5vdXRzdGFuZGluZywgJmFjdHVhbHJlYWQpOworICAgIGlmKHJlc3VsdCAmJiAoQ1VSTEVfQUdBSU4gIT0gcmVzdWx0KSkgewogICAgICAgZmFpbGYoZGF0YSwgIlVuYWJsZSB0byByZWNlaXZlIFNPQ0tTNSBzdWItbmVnb3RpYXRpb24gcmVzcG9uc2UuIik7CiAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwogICAgIH0KKyAgICBpZihhY3R1YWxyZWFkICE9IHN4LT5vdXRzdGFuZGluZykgeworICAgICAgLyogcmVtYWluIGluIHN0YXRlICovCisgICAgICBzeC0+b3V0c3RhbmRpbmcgLT0gYWN0dWFscmVhZDsKKyAgICAgIHN4LT5vdXRwICs9IGFjdHVhbHJlYWQ7CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQogCiAgICAgLyogaWdub3JlIHRoZSBmaXJzdCAoVkVSKSBieXRlICovCiAgICAgaWYoc29ja3NyZXFbMV0gIT0gMCkgeyAvKiBzdGF0dXMgKi8KQEAgLTU2NywyMzYgKzcyOSwyNDggQEAKICAgICB9CiAKICAgICAvKiBFdmVyeXRoaW5nIGlzIGdvb2Qgc28gZmFyLCB1c2VyIHdhcyBhdXRoZW50aWNhdGVkISAqLwotICB9Ci0gIGVsc2UgewotICAgIC8qIGVycm9yICovCi0gICAgaWYoIWFsbG93X2dzc2FwaSAmJiAoc29ja3NyZXFbMV0gPT0gMSkpIHsKLSAgICAgIGZhaWxmKGRhdGEsCi0gICAgICAgICAgICAiU09DS1M1IEdTU0FQSSBwZXItbWVzc2FnZSBhdXRoZW50aWNhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiIpOwotICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKLSAgICB9Ci0gICAgaWYoc29ja3NyZXFbMV0gPT0gMjU1KSB7Ci0gICAgICBpZighcHJveHlfdXNlciB8fCAhKnByb3h5X3VzZXIpIHsKLSAgICAgICAgZmFpbGYoZGF0YSwKLSAgICAgICAgICAgICAgIk5vIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB3YXMgYWNjZXB0YWJsZS4gKEl0IGlzIHF1aXRlIGxpa2VseSIKLSAgICAgICAgICAgICAgIiB0aGF0IHRoZSBTT0NLUzUgc2VydmVyIHdhbnRlZCBhIHVzZXJuYW1lL3Bhc3N3b3JkLCBzaW5jZSBub25lIgotICAgICAgICAgICAgICAiIHdhcyBzdXBwbGllZCB0byB0aGUgc2VydmVyIG9uIHRoaXMgY29ubmVjdGlvbi4pIik7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgZmFpbGYoZGF0YSwgIk5vIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB3YXMgYWNjZXB0YWJsZS4iKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgZmFpbGYoZGF0YSwKLSAgICAgICAgICAgICJVbmRvY3VtZW50ZWQgU09DS1M1IG1vZGUgYXR0ZW1wdGVkIHRvIGJlIHVzZWQgYnkgc2VydmVyLiIpOwotICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKLSAgICB9Ci0gIH0KKyAgICBzeHN0YXRlKGNvbm4sIENPTk5FQ1RfUkVRX0lOSVQpOworICAgIC8qIEZBTExUSFJPVUdIICovCisgIENPTk5FQ1RfUkVRX0lOSVQ6CisgIGNhc2UgQ09OTkVDVF9SRVFfSU5JVDoKKyAgICBpZihzb2NrczVfcmVzb2x2ZV9sb2NhbCkgeworICAgICAgZW51bSByZXNvbHZlX3QgcmMgPSBDdXJsX3Jlc29sdihjb25uLCBob3N0bmFtZSwgcmVtb3RlX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAmZG5zKTsKIAotICAvKiBBdXRoZW50aWNhdGlvbiBpcyBjb21wbGV0ZSwgbm93IHNwZWNpZnkgZGVzdGluYXRpb24gdG8gdGhlIHByb3h5ICovCi0gIGxlbiA9IDA7Ci0gIHNvY2tzcmVxW2xlbisrXSA9IDU7IC8qIHZlcnNpb24gKFNPQ0tTNSkgKi8KLSAgc29ja3NyZXFbbGVuKytdID0gMTsgLyogY29ubmVjdCAqLwotICBzb2Nrc3JlcVtsZW4rK10gPSAwOyAvKiBtdXN0IGJlIHplcm8gKi8KKyAgICAgIGlmKHJjID09IENVUkxSRVNPTFZfRVJST1IpCisgICAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX1JFU09MVkVfSE9TVDsKIAotICBpZighc29ja3M1X3Jlc29sdmVfbG9jYWwpIHsKLSAgICBzb2Nrc3JlcVtsZW4rK10gPSAzOyAvKiBBVFlQOiBkb21haW4gbmFtZSA9IDMgKi8KLSAgICBzb2Nrc3JlcVtsZW4rK10gPSAoY2hhcikgaG9zdG5hbWVfbGVuOyAvKiBhZGRyZXNzIGxlbmd0aCAqLwotICAgIG1lbWNweSgmc29ja3NyZXFbbGVuXSwgaG9zdG5hbWUsIGhvc3RuYW1lX2xlbik7IC8qIGFkZHJlc3Mgc3RyIHcvbyBOVUxMICovCi0gICAgbGVuICs9IGhvc3RuYW1lX2xlbjsKLSAgfQotICBlbHNlIHsKLSAgICBzdHJ1Y3QgQ3VybF9kbnNfZW50cnkgKmRuczsKKyAgICAgIGlmKHJjID09IENVUkxSRVNPTFZfUEVORElORykgeworICAgICAgICBzeHN0YXRlKGNvbm4sIENPTk5FQ1RfUkVTT0xWSU5HKTsKKyAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgfQorICAgICAgc3hzdGF0ZShjb25uLCBDT05ORUNUX1JFU09MVkVEKTsKKyAgICAgIGdvdG8gQ09OTkVDVF9SRVNPTFZFRDsKKyAgICB9CisgICAgZ290byBDT05ORUNUX1JFU09MVkVfUkVNT1RFOworCisgIGNhc2UgQ09OTkVDVF9SRVNPTFZJTkc6CisgICAgLyogY2hlY2sgaWYgd2UgaGF2ZSB0aGUgbmFtZSByZXNvbHZlZCBieSBub3cgKi8KKyAgICBkbnMgPSBDdXJsX2ZldGNoX2FkZHIoY29ubiwgaG9zdG5hbWUsIChpbnQpY29ubi0+cG9ydCk7CisKKyAgICBpZihkbnMpIHsKKyNpZmRlZiBDVVJMUkVTX0FTWU5DSAorICAgICAgY29ubi0+YXN5bmMuZG5zID0gZG5zOworICAgICAgY29ubi0+YXN5bmMuZG9uZSA9IFRSVUU7CisjZW5kaWYKKyAgICAgIGluZm9mKGRhdGEsICJTT0NLUzU6IGhvc3RuYW1lICclcycgZm91bmRcbiIsIGhvc3RuYW1lKTsKKyAgICB9CisKKyAgICBpZighZG5zKSB7CisgICAgICByZXN1bHQgPSBDdXJsX3Jlc29sdl9jaGVjayhkYXRhLT5jb25uLCAmZG5zKTsKKyAgICAgIC8qIHN0YXkgaW4gdGhlIHN0YXRlIG9yIGVycm9yIG91dCAqLworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgQ09OTkVDVF9SRVNPTFZFRDoKKyAgY2FzZSBDT05ORUNUX1JFU09MVkVEOiB7CiAgICAgQ3VybF9hZGRyaW5mbyAqaHAgPSBOVUxMOwotICAgIGludCByYyA9IEN1cmxfcmVzb2x2KGNvbm4sIGhvc3RuYW1lLCByZW1vdGVfcG9ydCwgRkFMU0UsICZkbnMpOwotCi0gICAgaWYocmMgPT0gQ1VSTFJFU09MVl9FUlJPUikKLSAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX1JFU09MVkVfSE9TVDsKLQotICAgIGlmKHJjID09IENVUkxSRVNPTFZfUEVORElORykgewotICAgICAgLyogdGhpcyByZXF1aXJlcyB0aGF0IHdlJ3JlIGluICJ3YWl0IGZvciByZXNvbHZlIiBzdGF0ZSAqLwotICAgICAgY29kZSA9IEN1cmxfcmVzb2x2ZXJfd2FpdF9yZXNvbHYoY29ubiwgJmRucyk7Ci0gICAgICBpZihjb2RlKQotICAgICAgICByZXR1cm4gY29kZTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIFdlIGNhbm5vdCB1c2UgJ2hvc3RlbnQnIGFzIGEgc3RydWN0IHRoYXQgQ3VybF9yZXNvbHYoKSByZXR1cm5zLiAgSXQKLSAgICAgKiByZXR1cm5zIGEgQ3VybF9hZGRyaW5mbyBwb2ludGVyIHRoYXQgbWF5IG5vdCBhbHdheXMgbG9vayB0aGUgc2FtZS4KLSAgICAgKi8KICAgICBpZihkbnMpCiAgICAgICBocCA9IGRucy0+YWRkcjsKLSAgICBpZihocCkgewotICAgICAgY2hhciBidWZbNjRdOwotICAgICAgQ3VybF9wcmludGFibGVfYWRkcmVzcyhocCwgYnVmLCBzaXplb2YoYnVmKSk7Ci0KLSAgICAgIGlmKGhwLT5haV9mYW1pbHkgPT0gQUZfSU5FVCkgewotICAgICAgICBpbnQgaTsKLSAgICAgICAgc3RydWN0IHNvY2thZGRyX2luICpzYWRkcl9pbjsKLSAgICAgICAgc29ja3NyZXFbbGVuKytdID0gMTsgLyogQVRZUDogSVB2NCA9IDEgKi8KLQotICAgICAgICBzYWRkcl9pbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikodm9pZCAqKWhwLT5haV9hZGRyOwotICAgICAgICBmb3IoaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgICAgICBzb2Nrc3JlcVtsZW4rK10gPSAoKHVuc2lnbmVkIGNoYXIgKikmc2FkZHJfaW4tPnNpbl9hZGRyLnNfYWRkcilbaV07Ci0gICAgICAgIH0KLQotICAgICAgICBpbmZvZihkYXRhLCAiU09DS1M1IGNvbm5lY3QgdG8gSVB2NCAlcyAobG9jYWxseSByZXNvbHZlZClcbiIsIGJ1Zik7Ci0gICAgICB9Ci0jaWZkZWYgRU5BQkxFX0lQVjYKLSAgICAgIGVsc2UgaWYoaHAtPmFpX2ZhbWlseSA9PSBBRl9JTkVUNikgewotICAgICAgICBpbnQgaTsKLSAgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiAqc2FkZHJfaW42OwotICAgICAgICBzb2Nrc3JlcVtsZW4rK10gPSA0OyAvKiBBVFlQOiBJUHY2ID0gNCAqLwotCi0gICAgICAgIHNhZGRyX2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopKHZvaWQgKilocC0+YWlfYWRkcjsKLSAgICAgICAgZm9yKGkgPSAwOyBpIDwgMTY7IGkrKykgewotICAgICAgICAgIHNvY2tzcmVxW2xlbisrXSA9Ci0gICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikmc2FkZHJfaW42LT5zaW42X2FkZHIuczZfYWRkcilbaV07Ci0gICAgICAgIH0KLQotICAgICAgICBpbmZvZihkYXRhLCAiU09DS1M1IGNvbm5lY3QgdG8gSVB2NiAlcyAobG9jYWxseSByZXNvbHZlZClcbiIsIGJ1Zik7Ci0gICAgICB9Ci0jZW5kaWYKLSAgICAgIGVsc2UgewotICAgICAgICBocCA9IE5VTEw7IC8qIGZhaWwhICovCi0KLSAgICAgICAgZmFpbGYoZGF0YSwgIlNPQ0tTNSBjb25uZWN0aW9uIHRvICVzIG5vdCBzdXBwb3J0ZWRcbiIsIGJ1Zik7Ci0gICAgICB9Ci0KLSAgICAgIEN1cmxfcmVzb2x2X3VubG9jayhkYXRhLCBkbnMpOyAvKiBub3QgdXNlZCBhbnltb3JlIGZyb20gbm93IG9uICovCi0gICAgfQogICAgIGlmKCFocCkgewogICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCB0byByZXNvbHZlIFwiJXNcIiBmb3IgU09DS1M1IGNvbm5lY3QuIiwKICAgICAgICAgICAgIGhvc3RuYW1lKTsKICAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX1JFU09MVkVfSE9TVDsKICAgICB9Ci0gIH0KIAotICBzb2Nrc3JlcVtsZW4rK10gPSAodW5zaWduZWQgY2hhcikoKHJlbW90ZV9wb3J0ID4+IDgpICYgMHhmZik7IC8qIFBPUlQgTVNCICovCi0gIHNvY2tzcmVxW2xlbisrXSA9ICh1bnNpZ25lZCBjaGFyKShyZW1vdGVfcG9ydCAmIDB4ZmYpOyAgICAgICAgLyogUE9SVCBMU0IgKi8KKyAgICBpZihDdXJsX3ByaW50YWJsZV9hZGRyZXNzKGhwLCBkZXN0LCBzaXplb2YoZGVzdCkpKSB7CisgICAgICBzaXplX3QgZGVzdGxlbiA9IHN0cmxlbihkZXN0KTsKKyAgICAgIG1zbnByaW50ZihkZXN0ICsgZGVzdGxlbiwgc2l6ZW9mKGRlc3QpIC0gZGVzdGxlbiwgIjolZCIsIHJlbW90ZV9wb3J0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzdHJjcHkoZGVzdCwgInVua25vd24iKTsKKyAgICB9CiAKLSNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0gIGlmKGNvbm4tPnNvY2tzNV9nc3NhcGlfZW5jdHlwZSkgewotICAgIGZhaWxmKGRhdGEsICJTT0NLUzUgR1NTLUFQSSBwcm90ZWN0aW9uIG5vdCB5ZXQgaW1wbGVtZW50ZWQuIik7Ci0gIH0KLSAgZWxzZQotI2VuZGlmCi0gICAgY29kZSA9IEN1cmxfd3JpdGVfcGxhaW4oY29ubiwgc29jaywgKGNoYXIgKilzb2Nrc3JlcSwgbGVuLCAmd3JpdHRlbik7CisgICAgbGVuID0gMDsKKyAgICBzb2Nrc3JlcVtsZW4rK10gPSA1OyAvKiB2ZXJzaW9uIChTT0NLUzUpICovCisgICAgc29ja3NyZXFbbGVuKytdID0gMTsgLyogY29ubmVjdCAqLworICAgIHNvY2tzcmVxW2xlbisrXSA9IDA7IC8qIG11c3QgYmUgemVybyAqLworICAgIGlmKGhwLT5haV9mYW1pbHkgPT0gQUZfSU5FVCkgeworICAgICAgaW50IGk7CisgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNhZGRyX2luOworICAgICAgc29ja3NyZXFbbGVuKytdID0gMTsgLyogQVRZUDogSVB2NCA9IDEgKi8KIAotICBpZihjb2RlIHx8IChsZW4gIT0gd3JpdHRlbikpIHsKLSAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHRvIHNlbmQgU09DS1M1IGNvbm5lY3QgcmVxdWVzdC4iKTsKLSAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwotICB9Ci0KLSAgbGVuID0gMTA7IC8qIG1pbmltdW0gcGFja2V0IHNpemUgaXMgMTAgKi8KLQotI2lmIGRlZmluZWQoSEFWRV9HU1NBUEkpIHx8IGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKLSAgaWYoY29ubi0+c29ja3M1X2dzc2FwaV9lbmN0eXBlKSB7Ci0gICAgZmFpbGYoZGF0YSwgIlNPQ0tTNSBHU1MtQVBJIHByb3RlY3Rpb24gbm90IHlldCBpbXBsZW1lbnRlZC4iKTsKLSAgfQotICBlbHNlCi0jZW5kaWYKLSAgICByZXN1bHQgPSBDdXJsX2Jsb2NrcmVhZF9hbGwoY29ubiwgc29jaywgKGNoYXIgKilzb2Nrc3JlcSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuLCAmYWN0dWFscmVhZCk7Ci0KLSAgaWYocmVzdWx0IHx8IChsZW4gIT0gYWN0dWFscmVhZCkpIHsKLSAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHRvIHJlY2VpdmUgU09DS1M1IGNvbm5lY3QgcmVxdWVzdCBhY2suIik7Ci0gICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKLSAgfQotCi0gIGlmKHNvY2tzcmVxWzBdICE9IDUpIHsgLyogdmVyc2lvbiAqLwotICAgIGZhaWxmKGRhdGEsCi0gICAgICAgICAgIlNPQ0tTNSByZXBseSBoYXMgd3JvbmcgdmVyc2lvbiwgdmVyc2lvbiBzaG91bGQgYmUgNS4iKTsKLSAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwotICB9Ci0KLSAgLyogRml4OiBpbiBnZW5lcmFsLCByZXR1cm5lZCBCTkQuQUREUiBpcyB2YXJpYWJsZSBsZW5ndGggcGFyYW1ldGVyIGJ5IFJGQwotICAgICAxOTI4LCBzbyB0aGUgcmVwbHkgcGFja2V0IHNob3VsZCBiZSByZWFkIHVudGlsIHRoZSBlbmQgdG8gYXZvaWQgZXJyb3JzIGF0Ci0gICAgIHN1YnNlcXVlbnQgcHJvdG9jb2wgbGV2ZWwuCi0KLSAgICArLS0tLSstLS0tLSstLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi0gICAgfFZFUiB8IFJFUCB8ICBSU1YgIHwgQVRZUCB8IEJORC5BRERSIHwgQk5ELlBPUlQgfAotICAgICstLS0tKy0tLS0tKy0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLSAgICB8IDEgIHwgIDEgIHwgWCcwMCcgfCAgMSAgIHwgVmFyaWFibGUgfCAgICAyICAgICB8Ci0gICAgKy0tLS0rLS0tLS0rLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotCi0gICAgIEFUWVA6Ci0gICAgIG8gIElQIHY0IGFkZHJlc3M6IFgnMDEnLCBCTkQuQUREUiA9IDQgYnl0ZQotICAgICBvICBkb21haW4gbmFtZTogIFgnMDMnLCBCTkQuQUREUiA9IFsgMSBieXRlIGxlbmd0aCwgc3RyaW5nIF0KLSAgICAgbyAgSVAgdjYgYWRkcmVzczogWCcwNCcsIEJORC5BRERSID0gMTYgYnl0ZQotICAgICAqLwotCi0gIC8qIENhbGN1bGF0ZSByZWFsIHBhY2tldCBzaXplICovCi0gIGlmKHNvY2tzcmVxWzNdID09IDMpIHsKLSAgICAvKiBkb21haW4gbmFtZSAqLwotICAgIGludCBhZGRybGVuID0gKGludCkgc29ja3NyZXFbNF07Ci0gICAgbGVuID0gNSArIGFkZHJsZW4gKyAyOwotICB9Ci0gIGVsc2UgaWYoc29ja3NyZXFbM10gPT0gNCkgewotICAgIC8qIElQdjYgKi8KLSAgICBsZW4gPSA0ICsgMTYgKyAyOwotICB9Ci0KLSAgLyogQXQgdGhpcyBwb2ludCB3ZSBhbHJlYWR5IHJlYWQgZmlyc3QgMTAgYnl0ZXMgKi8KLSNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0gIGlmKCFjb25uLT5zb2NrczVfZ3NzYXBpX2VuY3R5cGUpIHsKLSAgICAvKiBkZWNyeXB0X2dzc2FwaV9ibG9ja3JlYWQgYWxyZWFkeSByZWFkIHRoZSB3aG9sZSBwYWNrZXQgKi8KLSNlbmRpZgotICAgIGlmKGxlbiA+IDEwKSB7Ci0gICAgICByZXN1bHQgPSBDdXJsX2Jsb2NrcmVhZF9hbGwoY29ubiwgc29jaywgKGNoYXIgKikmc29ja3NyZXFbMTBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiAtIDEwLCAmYWN0dWFscmVhZCk7Ci0gICAgICBpZihyZXN1bHQgfHwgKChsZW4gLSAxMCkgIT0gYWN0dWFscmVhZCkpIHsKLSAgICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCB0byByZWNlaXZlIFNPQ0tTNSBjb25uZWN0IHJlcXVlc3QgYWNrLiIpOwotICAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworICAgICAgc2FkZHJfaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopKHZvaWQgKilocC0+YWlfYWRkcjsKKyAgICAgIGZvcihpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICBzb2Nrc3JlcVtsZW4rK10gPSAoKHVuc2lnbmVkIGNoYXIgKikmc2FkZHJfaW4tPnNpbl9hZGRyLnNfYWRkcilbaV07CiAgICAgICB9CisKKyAgICAgIGluZm9mKGRhdGEsICJTT0NLUzUgY29ubmVjdCB0byBJUHY0ICVzIChsb2NhbGx5IHJlc29sdmVkKVxuIiwgZGVzdCk7CisgICAgfQorI2lmZGVmIEVOQUJMRV9JUFY2CisgICAgZWxzZSBpZihocC0+YWlfZmFtaWx5ID09IEFGX0lORVQ2KSB7CisgICAgICBpbnQgaTsKKyAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNhZGRyX2luNjsKKyAgICAgIHNvY2tzcmVxW2xlbisrXSA9IDQ7IC8qIEFUWVA6IElQdjYgPSA0ICovCisKKyAgICAgIHNhZGRyX2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopKHZvaWQgKilocC0+YWlfYWRkcjsKKyAgICAgIGZvcihpID0gMDsgaSA8IDE2OyBpKyspIHsKKyAgICAgICAgc29ja3NyZXFbbGVuKytdID0KKyAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikmc2FkZHJfaW42LT5zaW42X2FkZHIuczZfYWRkcilbaV07CisgICAgICB9CisKKyAgICAgIGluZm9mKGRhdGEsICJTT0NLUzUgY29ubmVjdCB0byBJUHY2ICVzIChsb2NhbGx5IHJlc29sdmVkKVxuIiwgZGVzdCk7CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICBocCA9IE5VTEw7IC8qIGZhaWwhICovCisgICAgICBmYWlsZihkYXRhLCAiU09DS1M1IGNvbm5lY3Rpb24gdG8gJXMgbm90IHN1cHBvcnRlZFxuIiwgZGVzdCk7CisgICAgfQorCisgICAgQ3VybF9yZXNvbHZfdW5sb2NrKGRhdGEsIGRucyk7IC8qIG5vdCB1c2VkIGFueW1vcmUgZnJvbSBub3cgb24gKi8KKyAgICBnb3RvIENPTk5FQ1RfUkVRX1NFTkQ7CisgIH0KKyAgQ09OTkVDVF9SRVNPTFZFX1JFTU9URToKKyAgY2FzZSBDT05ORUNUX1JFU09MVkVfUkVNT1RFOgorICAgIC8qIEF1dGhlbnRpY2F0aW9uIGlzIGNvbXBsZXRlLCBub3cgc3BlY2lmeSBkZXN0aW5hdGlvbiB0byB0aGUgcHJveHkgKi8KKyAgICBsZW4gPSAwOworICAgIHNvY2tzcmVxW2xlbisrXSA9IDU7IC8qIHZlcnNpb24gKFNPQ0tTNSkgKi8KKyAgICBzb2Nrc3JlcVtsZW4rK10gPSAxOyAvKiBjb25uZWN0ICovCisgICAgc29ja3NyZXFbbGVuKytdID0gMDsgLyogbXVzdCBiZSB6ZXJvICovCisKKyAgICBpZighc29ja3M1X3Jlc29sdmVfbG9jYWwpIHsKKyAgICAgIHNvY2tzcmVxW2xlbisrXSA9IDM7IC8qIEFUWVA6IGRvbWFpbiBuYW1lID0gMyAqLworICAgICAgc29ja3NyZXFbbGVuKytdID0gKGNoYXIpIGhvc3RuYW1lX2xlbjsgLyogb25lIGJ5dGUgYWRkcmVzcyBsZW5ndGggKi8KKyAgICAgIG1lbWNweSgmc29ja3NyZXFbbGVuXSwgaG9zdG5hbWUsIGhvc3RuYW1lX2xlbik7IC8qIGFkZHJlc3Mgdy9vIE5VTEwgKi8KKyAgICAgIGxlbiArPSBob3N0bmFtZV9sZW47CisgICAgICBpbmZvZihkYXRhLCAiU09DS1M1IGNvbm5lY3QgdG8gJXM6JWQgKHJlbW90ZWx5IHJlc29sdmVkKVxuIiwKKyAgICAgICAgICAgIGhvc3RuYW1lLCByZW1vdGVfcG9ydCk7CisgICAgfQorICAgIC8qIEZBTExUSFJPVUdIICovCisKKyAgQ09OTkVDVF9SRVFfU0VORDoKKyAgY2FzZSBDT05ORUNUX1JFUV9TRU5EOgorICAgIC8qIFBPUlQgTVNCICovCisgICAgc29ja3NyZXFbbGVuKytdID0gKHVuc2lnbmVkIGNoYXIpKChyZW1vdGVfcG9ydCA+PiA4KSAmIDB4ZmYpOworICAgIC8qIFBPUlQgTFNCICovCisgICAgc29ja3NyZXFbbGVuKytdID0gKHVuc2lnbmVkIGNoYXIpKHJlbW90ZV9wb3J0ICYgMHhmZik7CisKKyNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCisgICAgaWYoY29ubi0+c29ja3M1X2dzc2FwaV9lbmN0eXBlKSB7CisgICAgICBmYWlsZihkYXRhLCAiU09DS1M1IEdTUy1BUEkgcHJvdGVjdGlvbiBub3QgeWV0IGltcGxlbWVudGVkLiIpOworICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKKyAgICB9CisjZW5kaWYKKyAgICBzeC0+b3V0cCA9IHNvY2tzcmVxOworICAgIHN4LT5vdXRzdGFuZGluZyA9IGxlbjsKKyAgICBzeHN0YXRlKGNvbm4sIENPTk5FQ1RfUkVRX1NFTkRJTkcpOworICAgIC8qIEZBTExUSFJPVUdIICovCisgIGNhc2UgQ09OTkVDVF9SRVFfU0VORElORzoKKyAgICByZXN1bHQgPSBDdXJsX3dyaXRlX3BsYWluKGNvbm4sIHNvY2tmZCwgKGNoYXIgKilzeC0+b3V0cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4LT5vdXRzdGFuZGluZywgJndyaXR0ZW4pOworICAgIGlmKHJlc3VsdCAmJiAoQ1VSTEVfQUdBSU4gIT0gcmVzdWx0KSkgeworICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCB0byBzZW5kIFNPQ0tTNSBjb25uZWN0IHJlcXVlc3QuIik7CisgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworICAgIH0KKyAgICBpZihzeC0+b3V0c3RhbmRpbmcgIT0gd3JpdHRlbikgeworICAgICAgLyogcmVtYWluIGluIHN0YXRlICovCisgICAgICBzeC0+b3V0c3RhbmRpbmcgLT0gd3JpdHRlbjsKKyAgICAgIHN4LT5vdXRwICs9IHdyaXR0ZW47CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CiAgICAgfQogI2lmIGRlZmluZWQoSEFWRV9HU1NBUEkpIHx8IGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKLSAgfQotI2VuZGlmCi0KLSAgaWYoc29ja3NyZXFbMV0gIT0gMCkgeyAvKiBBbnl0aGluZyBiZXNpZGVzIDAgaXMgYW4gZXJyb3IgKi8KLSAgICBpZihzb2Nrc3JlcVszXSA9PSAxKSB7Ci0gICAgICBmYWlsZihkYXRhLAotICAgICAgICAgICAgIkNhbid0IGNvbXBsZXRlIFNPQ0tTNSBjb25uZWN0aW9uIHRvICVkLiVkLiVkLiVkOiVkLiAoJWQpIiwKLSAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzRdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs1XSwKLSAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzZdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs3XSwKLSAgICAgICAgICAgICgoKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbOF0gPDwgOCkgfAotICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzldKSwKLSAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzFdKTsKKyAgICBpZihjb25uLT5zb2NrczVfZ3NzYXBpX2VuY3R5cGUpIHsKKyAgICAgIGZhaWxmKGRhdGEsICJTT0NLUzUgR1NTLUFQSSBwcm90ZWN0aW9uIG5vdCB5ZXQgaW1wbGVtZW50ZWQuIik7CisgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwogICAgIH0KLSAgICBlbHNlIGlmKHNvY2tzcmVxWzNdID09IDMpIHsKLSAgICAgIHVuc2lnbmVkIGNoYXIgcG9ydF91cHBlciA9ICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxW2xlbiAtIDJdOwotICAgICAgc29ja3NyZXFbbGVuIC0gMl0gPSAwOworI2VuZGlmCisgICAgc3gtPm91dHN0YW5kaW5nID0gMTA7IC8qIG1pbmltdW0gcGFja2V0IHNpemUgaXMgMTAgKi8KKyAgICBzeC0+b3V0cCA9IHNvY2tzcmVxOworICAgIHN4c3RhdGUoY29ubiwgQ09OTkVDVF9SRVFfUkVBRCk7CisgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgY2FzZSBDT05ORUNUX1JFUV9SRUFEOgorICAgIHJlc3VsdCA9IEN1cmxfcmVhZF9wbGFpbihzb2NrZmQsIChjaGFyICopc3gtPm91dHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4LT5vdXRzdGFuZGluZywgJmFjdHVhbHJlYWQpOworICAgIGlmKHJlc3VsdCAmJiAoQ1VSTEVfQUdBSU4gIT0gcmVzdWx0KSkgeworICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCB0byByZWNlaXZlIFNPQ0tTNSBjb25uZWN0IHJlcXVlc3QgYWNrLiIpOworICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKKyAgICB9CisgICAgZWxzZSBpZihhY3R1YWxyZWFkICE9IHN4LT5vdXRzdGFuZGluZykgeworICAgICAgLyogcmVtYWluIGluIHN0YXRlICovCisgICAgICBzeC0+b3V0c3RhbmRpbmcgLT0gYWN0dWFscmVhZDsKKyAgICAgIHN4LT5vdXRwICs9IGFjdHVhbHJlYWQ7CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQorCisgICAgaWYoc29ja3NyZXFbMF0gIT0gNSkgeyAvKiB2ZXJzaW9uICovCiAgICAgICBmYWlsZihkYXRhLAotICAgICAgICAgICAgIkNhbid0IGNvbXBsZXRlIFNPQ0tTNSBjb25uZWN0aW9uIHRvICVzOiVkLiAoJWQpIiwKLSAgICAgICAgICAgIChjaGFyICopJnNvY2tzcmVxWzVdLAotICAgICAgICAgICAgKChwb3J0X3VwcGVyIDw8IDgpIHwKLSAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVtsZW4gLSAxXSksCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxXSk7Ci0gICAgICBzb2Nrc3JlcVtsZW4gLSAyXSA9IHBvcnRfdXBwZXI7CisgICAgICAgICAgICAiU09DS1M1IHJlcGx5IGhhcyB3cm9uZyB2ZXJzaW9uLCB2ZXJzaW9uIHNob3VsZCBiZSA1LiIpOworICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKKyAgICB9CisgICAgZWxzZSBpZihzb2Nrc3JlcVsxXSAhPSAwKSB7IC8qIEFueXRoaW5nIGJlc2lkZXMgMCBpcyBhbiBlcnJvciAqLworICAgICAgZmFpbGYoZGF0YSwgIkNhbid0IGNvbXBsZXRlIFNPQ0tTNSBjb25uZWN0aW9uIHRvICVzLiAoJWQpIiwKKyAgICAgICAgICAgIGhvc3RuYW1lLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxXSk7CisgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworICAgIH0KKworICAgIC8qIEZpeDogaW4gZ2VuZXJhbCwgcmV0dXJuZWQgQk5ELkFERFIgaXMgdmFyaWFibGUgbGVuZ3RoIHBhcmFtZXRlciBieSBSRkMKKyAgICAgICAxOTI4LCBzbyB0aGUgcmVwbHkgcGFja2V0IHNob3VsZCBiZSByZWFkIHVudGlsIHRoZSBlbmQgdG8gYXZvaWQgZXJyb3JzCisgICAgICAgYXQgc3Vic2VxdWVudCBwcm90b2NvbCBsZXZlbC4KKworICAgICAgICstLS0tKy0tLS0tKy0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKKyAgICAgICB8VkVSIHwgUkVQIHwgIFJTViAgfCBBVFlQIHwgQk5ELkFERFIgfCBCTkQuUE9SVCB8CisgICAgICAgKy0tLS0rLS0tLS0rLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKworICAgICAgIHwgMSAgfCAgMSAgfCBYJzAwJyB8ICAxICAgfCBWYXJpYWJsZSB8ICAgIDIgICAgIHwKKyAgICAgICArLS0tLSstLS0tLSstLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisKKyAgICAgICBBVFlQOgorICAgICAgIG8gIElQIHY0IGFkZHJlc3M6IFgnMDEnLCBCTkQuQUREUiA9IDQgYnl0ZQorICAgICAgIG8gIGRvbWFpbiBuYW1lOiAgWCcwMycsIEJORC5BRERSID0gWyAxIGJ5dGUgbGVuZ3RoLCBzdHJpbmcgXQorICAgICAgIG8gIElQIHY2IGFkZHJlc3M6IFgnMDQnLCBCTkQuQUREUiA9IDE2IGJ5dGUKKyAgICAqLworCisgICAgLyogQ2FsY3VsYXRlIHJlYWwgcGFja2V0IHNpemUgKi8KKyAgICBpZihzb2Nrc3JlcVszXSA9PSAzKSB7CisgICAgICAvKiBkb21haW4gbmFtZSAqLworICAgICAgaW50IGFkZHJsZW4gPSAoaW50KSBzb2Nrc3JlcVs0XTsKKyAgICAgIGxlbiA9IDUgKyBhZGRybGVuICsgMjsKICAgICB9CiAgICAgZWxzZSBpZihzb2Nrc3JlcVszXSA9PSA0KSB7Ci0gICAgICBmYWlsZihkYXRhLAotICAgICAgICAgICAgIkNhbid0IGNvbXBsZXRlIFNPQ0tTNSBjb25uZWN0aW9uIHRvICUwMnglMDJ4OiUwMnglMDJ4OiIKLSAgICAgICAgICAgICIlMDJ4JTAyeDolMDJ4JTAyeDolMDJ4JTAyeDolMDJ4JTAyeDolMDJ4JTAyeDolMDJ4JTAyeDolZC4gKCVkKSIsCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs0XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNV0sCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs2XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbN10sCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs4XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbOV0sCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxMF0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzExXSwKLSAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzEyXSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMTNdLAotICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMTRdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxNV0sCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxNl0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzE3XSwKLSAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzE4XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMTldLAotICAgICAgICAgICAgKCgodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsyMF0gPDwgOCkgfAotICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzIxXSksCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxXSk7CisgICAgICAvKiBJUHY2ICovCisgICAgICBsZW4gPSA0ICsgMTYgKyAyOwogICAgIH0KLSAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworCisgICAgLyogQXQgdGhpcyBwb2ludCB3ZSBhbHJlYWR5IHJlYWQgZmlyc3QgMTAgYnl0ZXMgKi8KKyNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCisgICAgaWYoIWNvbm4tPnNvY2tzNV9nc3NhcGlfZW5jdHlwZSkgeworICAgICAgLyogZGVjcnlwdF9nc3NhcGlfYmxvY2tyZWFkIGFscmVhZHkgcmVhZCB0aGUgd2hvbGUgcGFja2V0ICovCisjZW5kaWYKKyAgICAgIGlmKGxlbiA+IDEwKSB7CisgICAgICAgIHN4LT5vdXRzdGFuZGluZyA9IGxlbiAtIDEwOyAvKiBnZXQgdGhlIHJlc3QgKi8KKyAgICAgICAgc3gtPm91dHAgPSAmc29ja3NyZXFbMTBdOworICAgICAgICBzeHN0YXRlKGNvbm4sIENPTk5FQ1RfUkVRX1JFQURfTU9SRSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3hzdGF0ZShjb25uLCBDT05ORUNUX0RPTkUpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCisgICAgfQorI2VuZGlmCisgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgY2FzZSBDT05ORUNUX1JFUV9SRUFEX01PUkU6CisgICAgcmVzdWx0ID0gQ3VybF9yZWFkX3BsYWluKHNvY2tmZCwgKGNoYXIgKilzeC0+b3V0cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3gtPm91dHN0YW5kaW5nLCAmYWN0dWFscmVhZCk7CisgICAgaWYocmVzdWx0ICYmIChDVVJMRV9BR0FJTiAhPSByZXN1bHQpKSB7CisgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHRvIHJlY2VpdmUgU09DS1M1IGNvbm5lY3QgcmVxdWVzdCBhY2suIik7CisgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworICAgIH0KKyAgICBpZihhY3R1YWxyZWFkICE9IHN4LT5vdXRzdGFuZGluZykgeworICAgICAgLyogcmVtYWluIGluIHN0YXRlICovCisgICAgICBzeC0+b3V0c3RhbmRpbmcgLT0gYWN0dWFscmVhZDsKKyAgICAgIHN4LT5vdXRwICs9IGFjdHVhbHJlYWQ7CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQorICAgIHN4c3RhdGUoY29ubiwgQ09OTkVDVF9ET05FKTsKICAgfQogICBpbmZvZihkYXRhLCAiU09DS1M1IHJlcXVlc3QgZ3JhbnRlZC5cbiIpOwogCi0gICh2b2lkKWN1cmx4X25vbmJsb2NrKHNvY2ssIFRSVUUpOworICAqZG9uZSA9IFRSVUU7CiAgIHJldHVybiBDVVJMRV9PSzsgLyogUHJveHkgd2FzIHN1Y2Nlc3NmdWwhICovCiB9CiAKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NvY2tzLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zb2Nrcy5oCmluZGV4IGRhYTA3YzEuLjY0YTc1NjMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NvY2tzLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc29ja3MuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMjcsMTMgKzI3LDEzIEBACiAjaWZkZWYgQ1VSTF9ESVNBQkxFX1BST1hZCiAjZGVmaW5lIEN1cmxfU09DS1M0KGEsYixjLGQsZSkgQ1VSTEVfTk9UX0JVSUxUX0lOCiAjZGVmaW5lIEN1cmxfU09DS1M1KGEsYixjLGQsZSxmKSBDVVJMRV9OT1RfQlVJTFRfSU4KKyNkZWZpbmUgQ3VybF9TT0NLU19nZXRzb2NrKHgseSx6KSAwCiAjZWxzZQogLyoKICAqIEhlbHBlciByZWFkLWZyb20tc29ja2V0IGZ1bmN0aW9ucy4gRG9lcyB0aGUgc2FtZSBhcyBDdXJsX3JlYWQoKSBidXQgaXQKICAqIGJsb2NrcyB1bnRpbCBhbGwgYnl0ZXMgYW1vdW50IG9mIGJ1ZmZlcnNpemUgd2lsbCBiZSByZWFkLiBObyBtb3JlLCBubyBsZXNzLgogICoKLSAqIFRoaXMgaXMgU1RVUElEIEJMT0NLSU5HIGJlaGF2aW91ciB3aGljaCB3ZSBmcm93biB1cG9uLCBidXQgcmlnaHQgbm93IHRoaXMKLSAqIGlzIHdoYXQgd2UgaGF2ZS4uLgorICogVGhpcyBpcyBTVFVQSUQgQkxPQ0tJTkcgYmVoYXZpb3IKICAqLwogaW50IEN1cmxfYmxvY2tyZWFkX2FsbChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkLApAQCAtNDEsNiArNDEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICBzc2l6ZV90IGJ1ZmZlcnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIHNzaXplX3QgKm4pOwogCitpbnQgQ3VybF9TT0NLU19nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCk7CiAvKgogICogVGhpcyBmdW5jdGlvbiBsb2dzIGluIHRvIGEgU09DS1M0KGEpIHByb3h5IGFuZCBzZW5kcyB0aGUgc3BlY2lmaWNzIHRvIHRoZQogICogZmluYWwgZGVzdGluYXRpb24gc2VydmVyLgpAQCAtNDksNyArNTIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVtb3RlX3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvbmUpOwogCiAvKgogICogVGhpcyBmdW5jdGlvbiBsb2dzIGluIHRvIGEgU09DS1M1IHByb3h5IGFuZCBzZW5kcyB0aGUgc3BlY2lmaWNzIHRvIHRoZQpAQCAtNjAsNyArNjQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVtb3RlX3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvbmUpOwogCiAjaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQogLyoKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NvY2tzX2dzc2FwaS5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc29ja3NfZ3NzYXBpLmMKaW5kZXggNjUyOTRiYi4uOTdlZTcxOCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc29ja3NfZ3NzYXBpLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc29ja3NfZ3NzYXBpLmMKQEAgLTUsOCArNSw4IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgorICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqIENvcHlyaWdodCAoQykgMjAwOSwgTWFya3VzIE1vZWxsZXIsIDxtYXJrdXNfbW9lbGxlckBjb21wdXNlcnZlLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTgsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTE2Nyw2ICsxNjcsOCBAQAogICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7CiAgIH0KIAorICAodm9pZCljdXJseF9ub25ibG9jayhzb2NrLCBGQUxTRSk7CisKICAgLyogQXMgbG9uZyBhcyB3ZSBuZWVkIHRvIGtlZXAgc2VuZGluZyBzb21lIGNvbnRleHQgaW5mbywgYW5kIHRoZXJlJ3Mgbm8gICovCiAgIC8qIGVycm9ycywga2VlcCBzZW5kaW5nIGl0Li4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICBmb3IoOzspIHsKQEAgLTUxMyw2ICs1MTUsOCBAQAogICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmZ3NzX3N0YXR1cywgJmdzc19yZWN2X3Rva2VuKTsKICAgfQogCisgICh2b2lkKWN1cmx4X25vbmJsb2NrKHNvY2ssIFRSVUUpOworCiAgIGluZm9mKGRhdGEsICJTT0NLUzUgYWNjZXNzIHdpdGglcyBwcm90ZWN0aW9uIGdyYW50ZWQuXG4iLAogICAgICAgICAoc29ja3NyZXFbMF0gPT0gMCk/Im91dCBHU1MtQVBJIGRhdGEiOgogICAgICAgICAoKHNvY2tzcmVxWzBdID09IDEpPyIgR1NTLUFQSSBpbnRlZ3JpdHkiOiIgR1NTLUFQSSBjb25maWRlbnRpYWxpdHkiKSk7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zb2Nrc19zc3BpLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zb2Nrc19zc3BpLmMKaW5kZXggNTcwMjdlZi4uZDViZTY0YSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc29ja3Nfc3NwaS5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NvY2tzX3NzcGkuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgTWFya3VzIE1vZWxsZXIsIDxtYXJrdXNfbW9lbGxlckBjb21wdXNlcnZlLmNvbT4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaApAQCAtMTUzLDYgKzE1Myw4IEBACiAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKICAgfQogCisgICh2b2lkKWN1cmx4X25vbmJsb2NrKHNvY2ssIEZBTFNFKTsKKwogICAvKiBBcyBsb25nIGFzIHdlIG5lZWQgdG8ga2VlcCBzZW5kaW5nIHNvbWUgY29udGV4dCBpbmZvLCBhbmQgdGhlcmUncyBubyAgKi8KICAgLyogZXJyb3JzLCBrZWVwIHNlbmRpbmcgaXQuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgIGZvcig7OykgewpAQCAtNTg3LDYgKzU4OSw3IEBACiAgICAgbWVtY3B5KHNvY2tzcmVxLCBzc3BpX3dfdG9rZW5bMF0ucHZCdWZmZXIsIHNzcGlfd190b2tlblswXS5jYkJ1ZmZlcik7CiAgICAgc19wU2VjRm4tPkZyZWVDb250ZXh0QnVmZmVyKHNzcGlfd190b2tlblswXS5wdkJ1ZmZlcik7CiAgIH0KKyAgKHZvaWQpY3VybHhfbm9uYmxvY2soc29jaywgVFJVRSk7CiAKICAgaW5mb2YoZGF0YSwgIlNPQ0tTNSBhY2Nlc3Mgd2l0aCVzIHByb3RlY3Rpb24gZ3JhbnRlZC5cbiIsCiAgICAgICAgIChzb2Nrc3JlcVswXSA9PSAwKT8ib3V0IEdTUy1BUEkgZGF0YSI6CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zcGxheS5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc3BsYXkuaAppbmRleCA0NjEyZWMyLi45MjkyZjM0IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zcGxheS5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3NwbGF5LmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk3IC0gMjAxNywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5NyAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTU5LDEwICs1OSw0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKChpLnR2X3VzZWMpIDwgKGoudHZfdXNlYykpID8gLTEgOiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKChpLnR2X3VzZWMpID4gKGoudHZfdXNlYykpID8gIDEgOiAwKSkpKQogCi0jaWZkZWYgREVCVUdCVUlMRAotdm9pZCBDdXJsX3NwbGF5cHJpbnQoc3RydWN0IEN1cmxfdHJlZSAqIHQsIGludCBkLCBjaGFyIG91dHB1dCk7Ci0jZWxzZQotI2RlZmluZSBDdXJsX3NwbGF5cHJpbnQoeCx5LHopIEN1cmxfbm9wX3N0bXQKLSNlbmRpZgotCiAjZW5kaWYgLyogSEVBREVSX0NVUkxfU1BMQVlfSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc3NoLWxpYnNzaC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc3NoLWxpYnNzaC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2ZkNmJkLi4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NzaC1saWJzc2guYworKysgL2Rldi9udWxsCkBAIC0xLDI3NDAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwotICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0gKgotICogQ29weXJpZ2h0IChDKSAyMDE3IC0gMjAxOSBSZWQgSGF0LCBJbmMuCi0gKgotICogQXV0aG9yczogTmlrb3MgTWF2cm9naWFubm9wb3Vsb3MsIFRvbWFzIE1yYXosIFN0YW5pc2xhdiBaaWRlaywKLSAqICAgICAgICAgIFJvYmVydCBLb2xjdW4sIEFuZHJlYXMgU2NobmVpZGVyCi0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKLSAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgotICoKLSAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAotICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgotICoKLSAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKLQotI2lmZGVmIFVTRV9MSUJTU0gKLQotI2luY2x1ZGUgPGxpbWl0cy5oPgotCi0jaW5jbHVkZSA8bGlic3NoL2xpYnNzaC5oPgotI2luY2x1ZGUgPGxpYnNzaC9zZnRwLmg+Ci0KLSNpZmRlZiBIQVZFX0ZDTlRMX0gKLSNpbmNsdWRlIDxmY250bC5oPgotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfQVJQQV9JTkVUX0gKLSNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfVVRTTkFNRV9ICi0jaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfTkVUREJfSAotI2luY2x1ZGUgPG5ldGRiLmg+Ci0jZW5kaWYKLSNpZmRlZiBfX1ZNUwotI2luY2x1ZGUgPGluLmg+Ci0jaW5jbHVkZSA8aW5ldC5oPgotI2VuZGlmCi0KLSNpZiAoZGVmaW5lZChORVRXQVJFKSAmJiBkZWZpbmVkKF9fTk9WRUxMX0xJQkNfXykpCi0jdW5kZWYgaW5fYWRkcl90Ci0jZGVmaW5lIGluX2FkZHJfdCB1bnNpZ25lZCBsb25nCi0jZW5kaWYKLQotI2luY2x1ZGUgPGN1cmwvY3VybC5oPgotI2luY2x1ZGUgInVybGRhdGEuaCIKLSNpbmNsdWRlICJzZW5kZi5oIgotI2luY2x1ZGUgImhvc3RpcC5oIgotI2luY2x1ZGUgInByb2dyZXNzLmgiCi0jaW5jbHVkZSAidHJhbnNmZXIuaCIKLSNpbmNsdWRlICJlc2NhcGUuaCIKLSNpbmNsdWRlICJodHRwLmgiICAgICAgICAgICAgICAgLyogZm9yIEhUVFAgcHJveHkgdHVubmVsIHN0dWZmICovCi0jaW5jbHVkZSAic3NoLmgiCi0jaW5jbHVkZSAidXJsLmgiCi0jaW5jbHVkZSAic3BlZWRjaGVjay5oIgotI2luY2x1ZGUgImdldGluZm8uaCIKLSNpbmNsdWRlICJzdHJkdXAuaCIKLSNpbmNsdWRlICJzdHJjYXNlLmgiCi0jaW5jbHVkZSAidnRscy92dGxzLmgiCi0jaW5jbHVkZSAiY29ubmVjdC5oIgotI2luY2x1ZGUgInN0cmVycm9yLmgiCi0jaW5jbHVkZSAiaW5ldF9udG9wLmgiCi0jaW5jbHVkZSAicGFyc2VkYXRlLmgiICAgICAgICAgIC8qIGZvciB0aGUgd2VlayBkYXkgYW5kIG1vbnRoIG5hbWVzICovCi0jaW5jbHVkZSAic29ja2FkZHIuaCIgICAgICAgICAgIC8qIHJlcXVpcmVkIGZvciBDdXJsX3NvY2thZGRyX3N0b3JhZ2UgKi8KLSNpbmNsdWRlICJzdHJ0b29mZnQuaCIKLSNpbmNsdWRlICJtdWx0aWlmLmgiCi0jaW5jbHVkZSAic2VsZWN0LmgiCi0jaW5jbHVkZSAid2Fybmxlc3MuaCIKLQotLyogZm9yIHBlcm1pc3Npb24gYW5kIG9wZW4gZmxhZ3MgKi8KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0KLS8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0jaW5jbHVkZSAibWVtZGVidWcuaCIKLSNpbmNsdWRlICJjdXJsX3BhdGguaCIKLQotLyogQSByZWNlbnQgbWFjcm8gcHJvdmlkZWQgYnkgbGlic3NoLiBPciBtYWtlIG91ciBvd24uICovCi0jaWZuZGVmIFNTSF9TVFJJTkdfRlJFRV9DSEFSCi0vKiAhY2hlY2tzcmMhIGRpc2FibGUgQVNTSUdOV0lUSElOQ09ORElUSU9OIDEgKi8KLSNkZWZpbmUgU1NIX1NUUklOR19GUkVFX0NIQVIoeCkgXAotICAgIGRvIHsgaWYoKHgpICE9IE5VTEwpIHsgc3NoX3N0cmluZ19mcmVlX2NoYXIoeCk7IHggPSBOVUxMOyB9IH0gd2hpbGUoMCkKLSNlbmRpZgotCi0vKiBMb2NhbCBmdW5jdGlvbnM6ICovCi1zdGF0aWMgQ1VSTGNvZGUgbXlzc2hfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpOwotc3RhdGljIENVUkxjb2RlIG15c3NoX211bHRpX3N0YXRlbWFjaChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvbmUpOwotc3RhdGljIENVUkxjb2RlIG15c3NoX2RvX2l0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7Ci0KLXN0YXRpYyBDVVJMY29kZSBzY3BfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUsIGJvb2wgcHJlbWF0dXJlKTsKLXN0YXRpYyBDVVJMY29kZSBzY3BfZG9pbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb3BoYXNlX2RvbmUpOwotc3RhdGljIENVUkxjb2RlIHNjcF9kaXNjb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlYWRfY29ubmVjdGlvbik7Ci0KLXN0YXRpYyBDVVJMY29kZSBzZnRwX2RvbmUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMY29kZSwgYm9vbCBwcmVtYXR1cmUpOwotc3RhdGljIENVUkxjb2RlIHNmdHBfZG9pbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9waGFzZV9kb25lKTsKLXN0YXRpYyBDVVJMY29kZSBzZnRwX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sIGRlYWQpOwotc3RhdGljCi1DVVJMY29kZSBzZnRwX3BlcmZvcm0oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNvbm5lY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpOwotCi1zdGF0aWMgdm9pZCBzZnRwX3F1b3RlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7Ci1zdGF0aWMgdm9pZCBzZnRwX3F1b3RlX3N0YXQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKLQotc3RhdGljIGludCBteXNzaF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpOwotCi1zdGF0aWMgaW50IG15c3NoX3BlcmZvcm1fZ2V0c29jayhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKLQotc3RhdGljIENVUkxjb2RlIG15c3NoX3NldHVwX2Nvbm5lY3Rpb24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKLQotLyoKLSAqIFNDUCBwcm90b2NvbCBoYW5kbGVyLgotICovCi0KLWNvbnN0IHN0cnVjdCBDdXJsX2hhbmRsZXIgQ3VybF9oYW5kbGVyX3NjcCA9IHsKLSAgIlNDUCIsICAgICAgICAgICAgICAgICAgICAgICAgLyogc2NoZW1lICovCi0gIG15c3NoX3NldHVwX2Nvbm5lY3Rpb24sICAgICAgIC8qIHNldHVwX2Nvbm5lY3Rpb24gKi8KLSAgbXlzc2hfZG9faXQsICAgICAgICAgICAgICAgICAgLyogZG9faXQgKi8KLSAgc2NwX2RvbmUsICAgICAgICAgICAgICAgICAgICAgLyogZG9uZSAqLwotICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAvKiBkb19tb3JlICovCi0gIG15c3NoX2Nvbm5lY3QsICAgICAgICAgICAgICAgIC8qIGNvbm5lY3RfaXQgKi8KLSAgbXlzc2hfbXVsdGlfc3RhdGVtYWNoLCAgICAgICAgLyogY29ubmVjdGluZyAqLwotICBzY3BfZG9pbmcsICAgICAgICAgICAgICAgICAgICAvKiBkb2luZyAqLwotICBteXNzaF9nZXRzb2NrLCAgICAgICAgICAgICAgICAvKiBwcm90b19nZXRzb2NrICovCi0gIG15c3NoX2dldHNvY2ssICAgICAgICAgICAgICAgIC8qIGRvaW5nX2dldHNvY2sgKi8KLSAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgLyogZG9tb3JlX2dldHNvY2sgKi8KLSAgbXlzc2hfcGVyZm9ybV9nZXRzb2NrLCAgICAgICAgLyogcGVyZm9ybV9nZXRzb2NrICovCi0gIHNjcF9kaXNjb25uZWN0LCAgICAgICAgICAgICAgIC8qIGRpc2Nvbm5lY3QgKi8KLSAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgLyogcmVhZHdyaXRlICovCi0gIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3Rpb25fY2hlY2sgKi8KLSAgUE9SVF9TU0gsICAgICAgICAgICAgICAgICAgICAgLyogZGVmcG9ydCAqLwotICBDVVJMUFJPVE9fU0NQLCAgICAgICAgICAgICAgICAvKiBwcm90b2NvbCAqLwotICBQUk9UT1BUX0RJUkxPQ0sgfCBQUk9UT1BUX0NMT1NFQUNUSU9OIHwgUFJPVE9QVF9OT1VSTFFVRVJZICAgIC8qIGZsYWdzICovCi19OwotCi0vKgotICogU0ZUUCBwcm90b2NvbCBoYW5kbGVyLgotICovCi0KLWNvbnN0IHN0cnVjdCBDdXJsX2hhbmRsZXIgQ3VybF9oYW5kbGVyX3NmdHAgPSB7Ci0gICJTRlRQIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2NoZW1lICovCi0gIG15c3NoX3NldHVwX2Nvbm5lY3Rpb24sICAgICAgICAgICAgICAgLyogc2V0dXBfY29ubmVjdGlvbiAqLwotICBteXNzaF9kb19pdCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvX2l0ICovCi0gIHNmdHBfZG9uZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9uZSAqLwotICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvX21vcmUgKi8KLSAgbXlzc2hfY29ubmVjdCwgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb25uZWN0X2l0ICovCi0gIG15c3NoX211bHRpX3N0YXRlbWFjaCwgICAgICAgICAgICAgICAgLyogY29ubmVjdGluZyAqLwotICBzZnRwX2RvaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvaW5nICovCi0gIG15c3NoX2dldHNvY2ssICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJvdG9fZ2V0c29jayAqLwotICBteXNzaF9nZXRzb2NrLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvaW5nX2dldHNvY2sgKi8KLSAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb21vcmVfZ2V0c29jayAqLwotICBteXNzaF9wZXJmb3JtX2dldHNvY2ssICAgICAgICAgICAgICAgIC8qIHBlcmZvcm1fZ2V0c29jayAqLwotICBzZnRwX2Rpc2Nvbm5lY3QsICAgICAgICAgICAgICAgICAgICAgIC8qIGRpc2Nvbm5lY3QgKi8KLSAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZWFkd3JpdGUgKi8KLSAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb25uZWN0aW9uX2NoZWNrICovCi0gIFBPUlRfU1NILCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGVmcG9ydCAqLwotICBDVVJMUFJPVE9fU0ZUUCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHByb3RvY29sICovCi0gIFBST1RPUFRfRElSTE9DSyB8IFBST1RPUFRfQ0xPU0VBQ1RJT04KLSAgfCBQUk9UT1BUX05PVVJMUVVFUlkgICAgICAgICAgICAgICAgICAvKiBmbGFncyAqLwotfTsKLQotc3RhdGljIENVUkxjb2RlIHNmdHBfZXJyb3JfdG9fQ1VSTEUoaW50IGVycikKLXsKLSAgc3dpdGNoKGVycikgewotICAgIGNhc2UgU1NIX0ZYX09LOgotICAgICAgcmV0dXJuIENVUkxFX09LOwotCi0gICAgY2FzZSBTU0hfRlhfTk9fU1VDSF9GSUxFOgotICAgIGNhc2UgU1NIX0ZYX05PX1NVQ0hfUEFUSDoKLSAgICAgIHJldHVybiBDVVJMRV9SRU1PVEVfRklMRV9OT1RfRk9VTkQ7Ci0KLSAgICBjYXNlIFNTSF9GWF9QRVJNSVNTSU9OX0RFTklFRDoKLSAgICBjYXNlIFNTSF9GWF9XUklURV9QUk9URUNUOgotICAgICAgcmV0dXJuIENVUkxFX1JFTU9URV9BQ0NFU1NfREVOSUVEOwotCi0gICAgY2FzZSBTU0hfRlhfRklMRV9BTFJFQURZX0VYSVNUUzoKLSAgICAgIHJldHVybiBDVVJMRV9SRU1PVEVfRklMRV9FWElTVFM7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXR1cm4gQ1VSTEVfU1NIOwotfQotCi0jaWZuZGVmIERFQlVHQlVJTEQKLSNkZWZpbmUgc3RhdGUoeCx5KSBteXN0YXRlKHgseSkKLSNlbHNlCi0jZGVmaW5lIHN0YXRlKHgseSkgbXlzdGF0ZSh4LHksIF9fTElORV9fKQotI2VuZGlmCi0KLS8qCi0gKiBTU0ggU3RhdGUgbWFjaGluZSByZWxhdGVkIGNvZGUKLSAqLwotLyogVGhpcyBpcyB0aGUgT05MWSB3YXkgdG8gY2hhbmdlIFNTSCBzdGF0ZSEgKi8KLXN0YXRpYyB2b2lkIG15c3RhdGUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBzc2hzdGF0ZSBub3dzdGF0ZQotI2lmZGVmIERFQlVHQlVJTEQKLSAgICAgICAgICAgICAgICAgICAgLCBpbnQgbGluZW5vCi0jZW5kaWYKLSAgKQotewotICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKLSNpZiBkZWZpbmVkKERFQlVHQlVJTEQpICYmICFkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCi0gIC8qIGZvciBkZWJ1ZyBwdXJwb3NlcyAqLwotICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbmFtZXNbXSA9IHsKLSAgICAiU1NIX1NUT1AiLAotICAgICJTU0hfSU5JVCIsCi0gICAgIlNTSF9TX1NUQVJUVVAiLAotICAgICJTU0hfSE9TVEtFWSIsCi0gICAgIlNTSF9BVVRITElTVCIsCi0gICAgIlNTSF9BVVRIX1BLRVlfSU5JVCIsCi0gICAgIlNTSF9BVVRIX1BLRVkiLAotICAgICJTU0hfQVVUSF9QQVNTX0lOSVQiLAotICAgICJTU0hfQVVUSF9QQVNTIiwKLSAgICAiU1NIX0FVVEhfQUdFTlRfSU5JVCIsCi0gICAgIlNTSF9BVVRIX0FHRU5UX0xJU1QiLAotICAgICJTU0hfQVVUSF9BR0VOVCIsCi0gICAgIlNTSF9BVVRIX0hPU1RfSU5JVCIsCi0gICAgIlNTSF9BVVRIX0hPU1QiLAotICAgICJTU0hfQVVUSF9LRVlfSU5JVCIsCi0gICAgIlNTSF9BVVRIX0tFWSIsCi0gICAgIlNTSF9BVVRIX0dTU0FQSSIsCi0gICAgIlNTSF9BVVRIX0RPTkUiLAotICAgICJTU0hfU0ZUUF9JTklUIiwKLSAgICAiU1NIX1NGVFBfUkVBTFBBVEgiLAotICAgICJTU0hfU0ZUUF9RVU9URV9JTklUIiwKLSAgICAiU1NIX1NGVFBfUE9TVFFVT1RFX0lOSVQiLAotICAgICJTU0hfU0ZUUF9RVU9URSIsCi0gICAgIlNTSF9TRlRQX05FWFRfUVVPVEUiLAotICAgICJTU0hfU0ZUUF9RVU9URV9TVEFUIiwKLSAgICAiU1NIX1NGVFBfUVVPVEVfU0VUU1RBVCIsCi0gICAgIlNTSF9TRlRQX1FVT1RFX1NZTUxJTksiLAotICAgICJTU0hfU0ZUUF9RVU9URV9NS0RJUiIsCi0gICAgIlNTSF9TRlRQX1FVT1RFX1JFTkFNRSIsCi0gICAgIlNTSF9TRlRQX1FVT1RFX1JNRElSIiwKLSAgICAiU1NIX1NGVFBfUVVPVEVfVU5MSU5LIiwKLSAgICAiU1NIX1NGVFBfUVVPVEVfU1RBVFZGUyIsCi0gICAgIlNTSF9TRlRQX0dFVElORk8iLAotICAgICJTU0hfU0ZUUF9GSUxFVElNRSIsCi0gICAgIlNTSF9TRlRQX1RSQU5TX0lOSVQiLAotICAgICJTU0hfU0ZUUF9VUExPQURfSU5JVCIsCi0gICAgIlNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQiLAotICAgICJTU0hfU0ZUUF9DUkVBVEVfRElSUyIsCi0gICAgIlNTSF9TRlRQX0NSRUFURV9ESVJTX01LRElSIiwKLSAgICAiU1NIX1NGVFBfUkVBRERJUl9JTklUIiwKLSAgICAiU1NIX1NGVFBfUkVBRERJUiIsCi0gICAgIlNTSF9TRlRQX1JFQURESVJfTElOSyIsCi0gICAgIlNTSF9TRlRQX1JFQURESVJfQk9UVE9NIiwKLSAgICAiU1NIX1NGVFBfUkVBRERJUl9ET05FIiwKLSAgICAiU1NIX1NGVFBfRE9XTkxPQURfSU5JVCIsCi0gICAgIlNTSF9TRlRQX0RPV05MT0FEX1NUQVQiLAotICAgICJTU0hfU0ZUUF9DTE9TRSIsCi0gICAgIlNTSF9TRlRQX1NIVVRET1dOIiwKLSAgICAiU1NIX1NDUF9UUkFOU19JTklUIiwKLSAgICAiU1NIX1NDUF9VUExPQURfSU5JVCIsCi0gICAgIlNTSF9TQ1BfRE9XTkxPQURfSU5JVCIsCi0gICAgIlNTSF9TQ1BfRE9XTkxPQUQiLAotICAgICJTU0hfU0NQX0RPTkUiLAotICAgICJTU0hfU0NQX1NFTkRfRU9GIiwKLSAgICAiU1NIX1NDUF9XQUlUX0VPRiIsCi0gICAgIlNTSF9TQ1BfV0FJVF9DTE9TRSIsCi0gICAgIlNTSF9TQ1BfQ0hBTk5FTF9GUkVFIiwKLSAgICAiU1NIX1NFU1NJT05fRElTQ09OTkVDVCIsCi0gICAgIlNTSF9TRVNTSU9OX0ZSRUUiLAotICAgICJRVUlUIgotICB9OwotCi0KLSAgaWYoc3NoYy0+c3RhdGUgIT0gbm93c3RhdGUpIHsKLSAgICBpbmZvZihjb25uLT5kYXRhLCAiU1NIICVwIHN0YXRlIGNoYW5nZSBmcm9tICVzIHRvICVzIChsaW5lICVkKVxuIiwKLSAgICAgICAgICAodm9pZCAqKSBzc2hjLCBuYW1lc1tzc2hjLT5zdGF0ZV0sIG5hbWVzW25vd3N0YXRlXSwKLSAgICAgICAgICBsaW5lbm8pOwotICB9Ci0jZW5kaWYKLQotICBzc2hjLT5zdGF0ZSA9IG5vd3N0YXRlOwotfQotCi0vKiBNdWx0aXBsZSBvcHRpb25zOgotICogMS4gZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDVdIGlzIHNldCB3aXRoIGFuIE1ENQotICogICAgaGFzaCAoOTBzIHN0eWxlIGF1dGgsIG5vdCBzdXJlIHdlIHNob3VsZCBoYXZlIGl0IGhlcmUpCi0gKiAyLiBkYXRhLT5zZXQuc3NoX2tleWZ1bmMgY2FsbGJhY2sgaXMgc2V0LiBUaGVuIHdlIGRvIHRydXN0IG9uIGZpcnN0Ci0gKiAgICB1c2UuIFdlIGV2ZW4gc2F2ZSBvbiBrbm93bmhvc3RzIGlmIENVUkxLSFNUQVRfRklORV9BRERfVE9fRklMRQotICogICAgaXMgcmV0dXJuZWQgYnkgaXQuCi0gKiAzLiBub25lIG9mIHRoZSBhYm92ZS4gV2Ugb25seSBhY2NlcHQgaWYgaXQgaXMgcHJlc2VudCBvbiBrbm93biBob3N0cy4KLSAqCi0gKiBSZXR1cm5zIFNTSF9PSyBvciBTU0hfRVJST1IuCi0gKi8KLXN0YXRpYyBpbnQgbXlzc2hfaXNfa25vd24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotewotICBpbnQgcmM7Ci0gIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwotICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKLSAgc3NoX2tleSBwdWJrZXk7Ci0gIHNpemVfdCBobGVuOwotICB1bnNpZ25lZCBjaGFyICpoYXNoID0gTlVMTDsKLSAgY2hhciAqYmFzZTY0ID0gTlVMTDsKLSAgaW50IHZzdGF0ZTsKLSAgZW51bSBjdXJsX2tobWF0Y2gga2V5bWF0Y2g7Ci0gIHN0cnVjdCBjdXJsX2toa2V5IGZvdW5ka2V5OwotICBjdXJsX3NzaGtleWNhbGxiYWNrIGZ1bmMgPQotICAgIGRhdGEtPnNldC5zc2hfa2V5ZnVuYzsKLQotICByYyA9IHNzaF9nZXRfcHVibGlja2V5KHNzaGMtPnNzaF9zZXNzaW9uLCAmcHVia2V5KTsKLSAgaWYocmMgIT0gU1NIX09LKQotICAgIHJldHVybiByYzsKLQotICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfSE9TVF9QVUJMSUNfS0VZX01ENV0pIHsKLSAgICByYyA9IHNzaF9nZXRfcHVibGlja2V5X2hhc2gocHVia2V5LCBTU0hfUFVCTElDS0VZX0hBU0hfTUQ1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFzaCwgJmhsZW4pOwotICAgIGlmKHJjICE9IFNTSF9PSykKLSAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgIGlmKGhsZW4gIT0gc3RybGVuKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1XSkgfHwKLSAgICAgICBtZW1jbXAoJmRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1XSwgaGFzaCwgaGxlbikpIHsKLSAgICAgIHJjID0gU1NIX0VSUk9SOwotICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIHJjID0gU1NIX09LOwotICAgIGdvdG8gY2xlYW51cDsKLSAgfQotCi0gIGlmKGRhdGEtPnNldC5zc2wucHJpbWFyeS52ZXJpZnlob3N0ICE9IFRSVUUpIHsKLSAgICByYyA9IFNTSF9PSzsKLSAgICBnb3RvIGNsZWFudXA7Ci0gIH0KLQotICB2c3RhdGUgPSBzc2hfaXNfc2VydmVyX2tub3duKHNzaGMtPnNzaF9zZXNzaW9uKTsKLSAgc3dpdGNoKHZzdGF0ZSkgewotICAgIGNhc2UgU1NIX1NFUlZFUl9LTk9XTl9PSzoKLSAgICAgIGtleW1hdGNoID0gQ1VSTEtITUFUQ0hfT0s7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNTSF9TRVJWRVJfRklMRV9OT1RfRk9VTkQ6Ci0gICAgICAvKiBmYWxsdGhyb3VnaCAqLwotICAgIGNhc2UgU1NIX1NFUlZFUl9OT1RfS05PV046Ci0gICAgICBrZXltYXRjaCA9IENVUkxLSE1BVENIX01JU1NJTkc7Ci0gICAgICBicmVhazsKLSAgZGVmYXVsdDoKLSAgICAgIGtleW1hdGNoID0gQ1VSTEtITUFUQ0hfTUlTTUFUQ0g7Ci0gICAgICBicmVhazsKLSAgfQotCi0gIGlmKGZ1bmMpIHsgLyogdXNlIGNhbGxiYWNrIHRvIGRldGVybWluZSBhY3Rpb24gKi8KLSAgICByYyA9IHNzaF9wa2lfZXhwb3J0X3B1YmtleV9iYXNlNjQocHVia2V5LCAmYmFzZTY0KTsKLSAgICBpZihyYyAhPSBTU0hfT0spCi0gICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICBmb3VuZGtleS5rZXkgPSBiYXNlNjQ7Ci0gICAgZm91bmRrZXkubGVuID0gc3RybGVuKGJhc2U2NCk7Ci0KLSAgICBzd2l0Y2goc3NoX2tleV90eXBlKHB1YmtleSkpIHsKLSAgICAgIGNhc2UgU1NIX0tFWVRZUEVfUlNBOgotICAgICAgICBmb3VuZGtleS5rZXl0eXBlID0gQ1VSTEtIVFlQRV9SU0E7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBTU0hfS0VZVFlQRV9SU0ExOgotICAgICAgICBmb3VuZGtleS5rZXl0eXBlID0gQ1VSTEtIVFlQRV9SU0ExOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgU1NIX0tFWVRZUEVfRUNEU0E6Ci0gICAgICAgIGZvdW5ka2V5LmtleXR5cGUgPSBDVVJMS0hUWVBFX0VDRFNBOwotICAgICAgICBicmVhazsKLSNpZiBMSUJTU0hfVkVSU0lPTl9JTlQgPj0gU1NIX1ZFUlNJT05fSU5UKDAsNywwKQotICAgICAgY2FzZSBTU0hfS0VZVFlQRV9FRDI1NTE5OgotICAgICAgICBmb3VuZGtleS5rZXl0eXBlID0gQ1VSTEtIVFlQRV9FRDI1NTE5OwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgICAgY2FzZSBTU0hfS0VZVFlQRV9EU1M6Ci0gICAgICAgIGZvdW5ka2V5LmtleXR5cGUgPSBDVVJMS0hUWVBFX0RTUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByYyA9IFNTSF9FUlJPUjsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIC8qIHdlIGRvbid0IGhhdmUgYW55dGhpbmcgZXF1aXZhbGVudCB0byBrbm93bmtleS4gQWx3YXlzIE5VTEwgKi8KLSAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCB0cnVlKTsKLSAgICByYyA9IGZ1bmMoZGF0YSwgTlVMTCwgJmZvdW5ka2V5LCAvKiBmcm9tIHRoZSByZW1vdGUgaG9zdCAqLwotICAgICAgICAgICAgICBrZXltYXRjaCwgZGF0YS0+c2V0LnNzaF9rZXlmdW5jX3VzZXJwKTsKLSAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCBmYWxzZSk7Ci0KLSAgICBzd2l0Y2gocmMpIHsKLSAgICAgIGNhc2UgQ1VSTEtIU1RBVF9GSU5FX0FERF9UT19GSUxFOgotICAgICAgICByYyA9IHNzaF93cml0ZV9rbm93bmhvc3Qoc3NoYy0+c3NoX3Nlc3Npb24pOwotICAgICAgICBpZihyYyAhPSBTU0hfT0spIHsKLSAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIENVUkxLSFNUQVRfRklORToKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiAvKiBSRUpFQ1QvREVGRVIgKi8KLSAgICAgICAgcmMgPSBTU0hfRVJST1I7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0gIH0KLSAgZWxzZSB7Ci0gICAgaWYoa2V5bWF0Y2ggIT0gQ1VSTEtITUFUQ0hfT0spIHsKLSAgICAgIHJjID0gU1NIX0VSUk9SOwotICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLSAgfQotICByYyA9IFNTSF9PSzsKLQotY2xlYW51cDoKLSAgaWYoaGFzaCkKLSAgICBzc2hfY2xlYW5fcHVia2V5X2hhc2goJmhhc2gpOwotICBzc2hfa2V5X2ZyZWUocHVia2V5KTsKLSAgcmV0dXJuIHJjOwotfQotCi0jZGVmaW5lIE1PVkVfVE9fRVJST1JfU1RBVEUoX3IpIHsgXAotICBzdGF0ZShjb25uLCBTU0hfU0VTU0lPTl9ESVNDT05ORUNUKTsgXAotICBzc2hjLT5hY3R1YWxjb2RlID0gX3I7IFwKLSAgcmMgPSBTU0hfRVJST1I7IFwKLSAgYnJlYWs7IFwKLX0KLQotI2RlZmluZSBNT1ZFX1RPX1NGVFBfQ0xPU0VfU1RBVEUoKSB7IFwKLSAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOyBcCi0gIHNzaGMtPmFjdHVhbGNvZGUgPSBzZnRwX2Vycm9yX3RvX0NVUkxFKHNmdHBfZ2V0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbikpOyBcCi0gIHJjID0gU1NIX0VSUk9SOyBcCi0gIGJyZWFrOyBcCi19Ci0KLSNkZWZpbmUgTU9WRV9UT19MQVNUX0FVVEggXAotICBpZihzc2hjLT5hdXRoX21ldGhvZHMgJiBTU0hfQVVUSF9NRVRIT0RfUEFTU1dPUkQpIHsgXAotICAgIHJjID0gU1NIX09LOyBcCi0gICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfUEFTU19JTklUKTsgXAotICAgIGJyZWFrOyBcCi0gIH0gXAotICBlbHNlIHsgXAotICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfTE9HSU5fREVOSUVEKTsgXAotICB9Ci0KLSNkZWZpbmUgTU9WRV9UT19URVJUSUFSWV9BVVRIIFwKLSAgaWYoc3NoYy0+YXV0aF9tZXRob2RzICYgU1NIX0FVVEhfTUVUSE9EX0lOVEVSQUNUSVZFKSB7IFwKLSAgICByYyA9IFNTSF9PSzsgXAotICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0tFWV9JTklUKTsgXAotICAgIGJyZWFrOyBcCi0gIH0gXAotICBlbHNlIHsgXAotICAgIE1PVkVfVE9fTEFTVF9BVVRIOyBcCi0gIH0KLQotI2RlZmluZSBNT1ZFX1RPX1NFQ09OREFSWV9BVVRIIFwKLSAgaWYoc3NoYy0+YXV0aF9tZXRob2RzICYgU1NIX0FVVEhfTUVUSE9EX0dTU0FQSV9NSUMpIHsgXAotICAgIHJjID0gU1NIX09LOyBcCi0gICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfR1NTQVBJKTsgXAotICAgIGJyZWFrOyBcCi0gIH0gXAotICBlbHNlIHsgXAotICAgIE1PVkVfVE9fVEVSVElBUllfQVVUSDsgXAotICB9Ci0KLXN0YXRpYwotaW50IG15c3NoX2F1dGhfaW50ZXJhY3RpdmUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotewotICBpbnQgcmM7Ci0gIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOwotICBpbnQgbnByb21wdHM7Ci0KLXJlc3RhcnQ6Ci0gIHN3aXRjaChzc2hjLT5rYmRfc3RhdGUpIHsKLSAgICBjYXNlIDA6Ci0gICAgICByYyA9IHNzaF91c2VyYXV0aF9rYmRpbnQoc3NoYy0+c3NoX3Nlc3Npb24sIE5VTEwsIE5VTEwpOwotICAgICAgaWYocmMgPT0gU1NIX0FVVEhfQUdBSU4pCi0gICAgICAgIHJldHVybiBTU0hfQUdBSU47Ci0KLSAgICAgIGlmKHJjICE9IFNTSF9BVVRIX0lORk8pCi0gICAgICAgIHJldHVybiBTU0hfRVJST1I7Ci0KLSAgICAgIG5wcm9tcHRzID0gc3NoX3VzZXJhdXRoX2tiZGludF9nZXRucHJvbXB0cyhzc2hjLT5zc2hfc2Vzc2lvbik7Ci0gICAgICBpZihucHJvbXB0cyA9PSBTU0hfRVJST1IgfHwgbnByb21wdHMgIT0gMSkKLSAgICAgICAgcmV0dXJuIFNTSF9FUlJPUjsKLQotICAgICAgcmMgPSBzc2hfdXNlcmF1dGhfa2JkaW50X3NldGFuc3dlcihzc2hjLT5zc2hfc2Vzc2lvbiwgMCwgY29ubi0+cGFzc3dkKTsKLSAgICAgIGlmKHJjIDwgMCkKLSAgICAgICAgcmV0dXJuIFNTSF9FUlJPUjsKLQotICAgIC8qIEZBTExUSFJPVUdIICovCi0gICAgY2FzZSAxOgotICAgICAgc3NoYy0+a2JkX3N0YXRlID0gMTsKLQotICAgICAgcmMgPSBzc2hfdXNlcmF1dGhfa2JkaW50KHNzaGMtPnNzaF9zZXNzaW9uLCBOVUxMLCBOVUxMKTsKLSAgICAgIGlmKHJjID09IFNTSF9BVVRIX0FHQUlOKQotICAgICAgICByZXR1cm4gU1NIX0FHQUlOOwotICAgICAgZWxzZSBpZihyYyA9PSBTU0hfQVVUSF9TVUNDRVNTKQotICAgICAgICByYyA9IFNTSF9PSzsKLSAgICAgIGVsc2UgaWYocmMgPT0gU1NIX0FVVEhfSU5GTykgewotICAgICAgICBucHJvbXB0cyA9IHNzaF91c2VyYXV0aF9rYmRpbnRfZ2V0bnByb21wdHMoc3NoYy0+c3NoX3Nlc3Npb24pOwotICAgICAgICBpZihucHJvbXB0cyAhPSAwKQotICAgICAgICAgIHJldHVybiBTU0hfRVJST1I7Ci0KLSAgICAgICAgc3NoYy0+a2JkX3N0YXRlID0gMjsKLSAgICAgICAgZ290byByZXN0YXJ0OwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICByYyA9IFNTSF9FUlJPUjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgIHNzaGMtPmtiZF9zdGF0ZSA9IDI7Ci0KLSAgICAgIHJjID0gc3NoX3VzZXJhdXRoX2tiZGludChzc2hjLT5zc2hfc2Vzc2lvbiwgTlVMTCwgTlVMTCk7Ci0gICAgICBpZihyYyA9PSBTU0hfQVVUSF9BR0FJTikKLSAgICAgICAgcmV0dXJuIFNTSF9BR0FJTjsKLSAgICAgIGVsc2UgaWYocmMgPT0gU1NIX0FVVEhfU1VDQ0VTUykKLSAgICAgICAgcmMgPSBTU0hfT0s7Ci0gICAgICBlbHNlCi0gICAgICAgIHJjID0gU1NIX0VSUk9SOwotCi0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuIFNTSF9FUlJPUjsKLSAgfQotCi0gIHNzaGMtPmtiZF9zdGF0ZSA9IDA7Ci0gIHJldHVybiByYzsKLX0KLQotLyoKLSAqIHNzaF9zdGF0ZW1hY2hfYWN0KCkgcnVucyB0aGUgU1NIIHN0YXRlIG1hY2hpbmUgYXMgZmFyIGFzIGl0IGNhbiB3aXRob3V0Ci0gKiBibG9ja2luZyBhbmQgd2l0aG91dCByZWFjaGluZyB0aGUgZW5kLiAgVGhlIGRhdGEgdGhlIHBvaW50ZXIgJ2Jsb2NrJyBwb2ludHMKLSAqIHRvIHdpbGwgYmUgc2V0IHRvIFRSVUUgaWYgdGhlIGxpYnNzaCBmdW5jdGlvbiByZXR1cm5zIFNTSF9BR0FJTgotICogbWVhbmluZyBpdCB3YW50cyB0byBiZSBjYWxsZWQgYWdhaW4gd2hlbiB0aGUgc29ja2V0IGlzIHJlYWR5Ci0gKi8KLXN0YXRpYyBDVVJMY29kZSBteXNzaF9zdGF0ZW1hY2hfYWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqYmxvY2spCi17Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgc3RydWN0IFNTSFBST1RPICpwcm90b3AgPSBkYXRhLT5yZXEucHJvdG9wOwotICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKLSAgY3VybF9zb2NrZXRfdCBzb2NrID0gY29ubi0+c29ja1tGSVJTVFNPQ0tFVF07Ci0gIGludCByYyA9IFNTSF9OT19FUlJPUiwgZXJyOwotICBjaGFyICpuZXdfcmVhZGRpcl9saW5lOwotICBpbnQgc2Vla2VyciA9IENVUkxfU0VFS0ZVTkNfT0s7Ci0gIGNvbnN0IGNoYXIgKmVycl9tc2c7Ci0gICpibG9jayA9IDA7ICAgICAgICAgICAgICAgICAgIC8qIHdlJ3JlIG5vdCBibG9ja2luZyBieSBkZWZhdWx0ICovCi0KLSAgZG8gewotCi0gICAgc3dpdGNoKHNzaGMtPnN0YXRlKSB7Ci0gICAgY2FzZSBTU0hfSU5JVDoKLSAgICAgIHNzaGMtPnNlY29uZENyZWF0ZURpcnMgPSAwOwotICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09LOwotCi0jaWYgMAotICAgICAgc3NoX3NldF9sb2dfbGV2ZWwoU1NIX0xPR19QUk9UT0NPTCk7Ci0jZW5kaWYKLQotICAgICAgLyogU2V0IGxpYnNzaCB0byBub24tYmxvY2tpbmcsIHNpbmNlIGV2ZXJ5dGhpbmcgaW50ZXJuYWxseSBpcwotICAgICAgICAgbm9uLWJsb2NraW5nICovCi0gICAgICBzc2hfc2V0X2Jsb2NraW5nKHNzaGMtPnNzaF9zZXNzaW9uLCAwKTsKLQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NfU1RBUlRVUCk7Ci0gICAgICAvKiBGQUxMVEhST1VHSCAqLwotCi0gICAgY2FzZSBTU0hfU19TVEFSVFVQOgotICAgICAgcmMgPSBzc2hfY29ubmVjdChzc2hjLT5zc2hfc2Vzc2lvbik7Ci0gICAgICBpZihyYyA9PSBTU0hfQUdBSU4pCi0gICAgICAgIGJyZWFrOwotCi0gICAgICBpZihyYyAhPSBTU0hfT0spIHsKLSAgICAgICAgZmFpbGYoZGF0YSwgIkZhaWx1cmUgZXN0YWJsaXNoaW5nIHNzaCBzZXNzaW9uIik7Ci0gICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfRkFJTEVEX0lOSVQpOwotICAgICAgfQotCi0gICAgICBzdGF0ZShjb25uLCBTU0hfSE9TVEtFWSk7Ci0KLSAgICAgIC8qIEZBTExUSFJPVUdIICovCi0gICAgY2FzZSBTU0hfSE9TVEtFWToKLQotICAgICAgcmMgPSBteXNzaF9pc19rbm93bihjb25uKTsKLSAgICAgIGlmKHJjICE9IFNTSF9PSykgewotICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX1BFRVJfRkFJTEVEX1ZFUklGSUNBVElPTik7Ci0gICAgICB9Ci0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRITElTVCk7Ci0gICAgICAvKiBGQUxMVEhST1VHSCAqLwotICAgIGNhc2UgU1NIX0FVVEhMSVNUOnsKLSAgICAgICAgc3NoYy0+YXV0aGVkID0gRkFMU0U7Ci0KLSAgICAgICAgcmMgPSBzc2hfdXNlcmF1dGhfbm9uZShzc2hjLT5zc2hfc2Vzc2lvbiwgTlVMTCk7Ci0gICAgICAgIGlmKHJjID09IFNTSF9BVVRIX0FHQUlOKSB7Ci0gICAgICAgICAgcmMgPSBTU0hfQUdBSU47Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZihyYyA9PSBTU0hfQVVUSF9TVUNDRVNTKSB7Ci0gICAgICAgICAgc3NoYy0+YXV0aGVkID0gVFJVRTsKLSAgICAgICAgICBpbmZvZihkYXRhLCAiQXV0aGVudGljYXRlZCB3aXRoIG5vbmVcbiIpOwotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0RPTkUpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYocmMgPT0gU1NIX0FVVEhfRVJST1IpIHsKLSAgICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX0xPR0lOX0RFTklFRCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzc2hjLT5hdXRoX21ldGhvZHMgPSBzc2hfdXNlcmF1dGhfbGlzdChzc2hjLT5zc2hfc2Vzc2lvbiwgTlVMTCk7Ci0gICAgICAgIGlmKHNzaGMtPmF1dGhfbWV0aG9kcyAmIFNTSF9BVVRIX01FVEhPRF9QVUJMSUNLRVkpIHsKLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9QS0VZX0lOSVQpOwotICAgICAgICAgIGluZm9mKGRhdGEsICJBdXRoZW50aWNhdGlvbiB1c2luZyBTU0ggcHVibGljIGtleSBmaWxlXG4iKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKHNzaGMtPmF1dGhfbWV0aG9kcyAmIFNTSF9BVVRIX01FVEhPRF9HU1NBUElfTUlDKSB7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfR1NTQVBJKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKHNzaGMtPmF1dGhfbWV0aG9kcyAmIFNTSF9BVVRIX01FVEhPRF9JTlRFUkFDVElWRSkgewotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0tFWV9JTklUKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKHNzaGMtPmF1dGhfbWV0aG9kcyAmIFNTSF9BVVRIX01FVEhPRF9QQVNTV09SRCkgewotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX1BBU1NfSU5JVCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgLyogdW5zdXBwb3J0ZWQgYXV0aGVudGljYXRpb24gbWV0aG9kICovCi0gICAgICAgICAgTU9WRV9UT19FUlJPUl9TVEFURShDVVJMRV9MT0dJTl9ERU5JRUQpOwotICAgICAgICB9Ci0KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgY2FzZSBTU0hfQVVUSF9QS0VZX0lOSVQ6Ci0gICAgICBpZighKGRhdGEtPnNldC5zc2hfYXV0aF90eXBlcyAmIENVUkxTU0hfQVVUSF9QVUJMSUNLRVkpKSB7Ci0gICAgICAgIE1PVkVfVE9fU0VDT05EQVJZX0FVVEg7Ci0gICAgICB9Ci0KLSAgICAgIC8qIFR3byBjaG9pY2VzLCAoMSkgcHJpdmF0ZSBrZXkgd2FzIGdpdmVuIG9uIENNRCwKLSAgICAgICAqICgyKSB1c2UgdGhlICJkZWZhdWx0IiBrZXlzLiAqLwotICAgICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX1BSSVZBVEVfS0VZXSkgewotICAgICAgICBpZihzc2hjLT5wdWJrZXkgJiYgIWRhdGEtPnNldC5zc2wua2V5X3Bhc3N3ZCkgewotICAgICAgICAgIHJjID0gc3NoX3VzZXJhdXRoX3RyeV9wdWJsaWNrZXkoc3NoYy0+c3NoX3Nlc3Npb24sIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5wdWJrZXkpOwotICAgICAgICAgIGlmKHJjID09IFNTSF9BVVRIX0FHQUlOKSB7Ci0gICAgICAgICAgICByYyA9IFNTSF9BR0FJTjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmKHJjICE9IFNTSF9PSykgewotICAgICAgICAgICAgTU9WRV9UT19TRUNPTkRBUllfQVVUSDsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByYyA9IHNzaF9wa2lfaW1wb3J0X3ByaXZrZXlfZmlsZShkYXRhLT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0LnN0cltTVFJJTkdfU1NIX1BSSVZBVEVfS0VZXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnNzbC5rZXlfcGFzc3dkLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmc3NoYy0+cHJpdmtleSk7Ci0gICAgICAgIGlmKHJjICE9IFNTSF9PSykgewotICAgICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3QgbG9hZCBwcml2YXRlIGtleSBmaWxlICVzIiwKLSAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfUFJJVkFURV9LRVldKTsKLSAgICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX0xPR0lOX0RFTklFRCk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9QS0VZKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICByYyA9IHNzaF91c2VyYXV0aF9wdWJsaWNrZXlfYXV0byhzc2hjLT5zc2hfc2Vzc2lvbiwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnNzbC5rZXlfcGFzc3dkKTsKLSAgICAgICAgaWYocmMgPT0gU1NIX0FVVEhfQUdBSU4pIHsKLSAgICAgICAgICByYyA9IFNTSF9BR0FJTjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZihyYyA9PSBTU0hfQVVUSF9TVUNDRVNTKSB7Ci0gICAgICAgICAgcmMgPSBTU0hfT0s7Ci0gICAgICAgICAgc3NoYy0+YXV0aGVkID0gVFJVRTsKLSAgICAgICAgICBpbmZvZihkYXRhLCAiQ29tcGxldGVkIHB1YmxpYyBrZXkgYXV0aGVudGljYXRpb25cbiIpOwotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0RPTkUpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgTU9WRV9UT19TRUNPTkRBUllfQVVUSDsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU1NIX0FVVEhfUEtFWToKLSAgICAgIHJjID0gc3NoX3VzZXJhdXRoX3B1YmxpY2tleShzc2hjLT5zc2hfc2Vzc2lvbiwgTlVMTCwgc3NoYy0+cHJpdmtleSk7Ci0gICAgICBpZihyYyA9PSBTU0hfQVVUSF9BR0FJTikgewotICAgICAgICByYyA9IFNTSF9BR0FJTjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGlmKHJjID09IFNTSF9BVVRIX1NVQ0NFU1MpIHsKLSAgICAgICAgc3NoYy0+YXV0aGVkID0gVFJVRTsKLSAgICAgICAgaW5mb2YoZGF0YSwgIkNvbXBsZXRlZCBwdWJsaWMga2V5IGF1dGhlbnRpY2F0aW9uXG4iKTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfRE9ORSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgcHVibGljIGtleSBhdXRoZW50aWNhdGlvbiAocmM6ICVkKVxuIiwgcmMpOwotICAgICAgICBNT1ZFX1RPX1NFQ09OREFSWV9BVVRIOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9BVVRIX0dTU0FQSToKLSAgICAgIGlmKCEoZGF0YS0+c2V0LnNzaF9hdXRoX3R5cGVzICYgQ1VSTFNTSF9BVVRIX0dTU0FQSSkpIHsKLSAgICAgICAgTU9WRV9UT19URVJUSUFSWV9BVVRIOwotICAgICAgfQotCi0gICAgICByYyA9IHNzaF91c2VyYXV0aF9nc3NhcGkoc3NoYy0+c3NoX3Nlc3Npb24pOwotICAgICAgaWYocmMgPT0gU1NIX0FVVEhfQUdBSU4pIHsKLSAgICAgICAgcmMgPSBTU0hfQUdBSU47Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBpZihyYyA9PSBTU0hfQVVUSF9TVUNDRVNTKSB7Ci0gICAgICAgIHJjID0gU1NIX09LOwotICAgICAgICBzc2hjLT5hdXRoZWQgPSBUUlVFOwotICAgICAgICBpbmZvZihkYXRhLCAiQ29tcGxldGVkIGdzc2FwaSBhdXRoZW50aWNhdGlvblxuIik7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0RPTkUpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgTU9WRV9UT19URVJUSUFSWV9BVVRIOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9BVVRIX0tFWV9JTklUOgotICAgICAgaWYoZGF0YS0+c2V0LnNzaF9hdXRoX3R5cGVzICYgQ1VSTFNTSF9BVVRIX0tFWUJPQVJEKSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0tFWSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgTU9WRV9UT19MQVNUX0FVVEg7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX0FVVEhfS0VZOgotCi0gICAgICAvKiBBdXRoZW50aWNhdGlvbiBmYWlsZWQuIENvbnRpbnVlIHdpdGgga2V5Ym9hcmQtaW50ZXJhY3RpdmUgbm93LiAqLwotICAgICAgcmMgPSBteXNzaF9hdXRoX2ludGVyYWN0aXZlKGNvbm4pOwotICAgICAgaWYocmMgPT0gU1NIX0FHQUlOKSB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYocmMgPT0gU1NIX09LKSB7Ci0gICAgICAgIHNzaGMtPmF1dGhlZCA9IFRSVUU7Ci0gICAgICAgIGluZm9mKGRhdGEsICJjb21wbGV0ZWQga2V5Ym9hcmQgaW50ZXJhY3RpdmUgYXV0aGVudGljYXRpb25cbiIpOwotICAgICAgfQotICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfRE9ORSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX0FVVEhfUEFTU19JTklUOgotICAgICAgaWYoIShkYXRhLT5zZXQuc3NoX2F1dGhfdHlwZXMgJiBDVVJMU1NIX0FVVEhfUEFTU1dPUkQpKSB7Ci0gICAgICAgIC8qIEhvc3Qga2V5IGF1dGhlbnRpY2F0aW9uIGlzIGludGVudGlvbmFsbHkgbm90IGltcGxlbWVudGVkICovCi0gICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfTE9HSU5fREVOSUVEKTsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX1BBU1MpOwotICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLQotICAgIGNhc2UgU1NIX0FVVEhfUEFTUzoKLSAgICAgIHJjID0gc3NoX3VzZXJhdXRoX3Bhc3N3b3JkKHNzaGMtPnNzaF9zZXNzaW9uLCBOVUxMLCBjb25uLT5wYXNzd2QpOwotICAgICAgaWYocmMgPT0gU1NIX0FVVEhfQUdBSU4pIHsKLSAgICAgICAgcmMgPSBTU0hfQUdBSU47Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICBpZihyYyA9PSBTU0hfQVVUSF9TVUNDRVNTKSB7Ci0gICAgICAgIHNzaGMtPmF1dGhlZCA9IFRSVUU7Ci0gICAgICAgIGluZm9mKGRhdGEsICJDb21wbGV0ZWQgcGFzc3dvcmQgYXV0aGVudGljYXRpb25cbiIpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9ET05FKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX0xPR0lOX0RFTklFRCk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX0FVVEhfRE9ORToKLSAgICAgIGlmKCFzc2hjLT5hdXRoZWQpIHsKLSAgICAgICAgZmFpbGYoZGF0YSwgIkF1dGhlbnRpY2F0aW9uIGZhaWx1cmUiKTsKLSAgICAgICAgTU9WRV9UT19FUlJPUl9TVEFURShDVVJMRV9MT0dJTl9ERU5JRUQpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgLyoKLSAgICAgICAqIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBhbiBhdXRoZW50aWNhdGVkIHNzaCBzZXNzaW9uLgotICAgICAgICovCi0gICAgICBpbmZvZihkYXRhLCAiQXV0aGVudGljYXRpb24gY29tcGxldGVcbiIpOwotCi0gICAgICBDdXJsX3BncnNUaW1lKGNvbm4tPmRhdGEsIFRJTUVSX0FQUENPTk5FQ1QpOyAgICAgIC8qIFNTSCBpcyBjb25uZWN0ZWQgKi8KLQotICAgICAgY29ubi0+c29ja2ZkID0gc29jazsKLSAgICAgIGNvbm4tPndyaXRlc29ja2ZkID0gQ1VSTF9TT0NLRVRfQkFEOwotCi0gICAgICBpZihjb25uLT5oYW5kbGVyLT5wcm90b2NvbCA9PSBDVVJMUFJPVE9fU0ZUUCkgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9JTklUKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpbmZvZihkYXRhLCAiU1NIIENPTk5FQ1QgcGhhc2UgZG9uZVxuIik7Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NGVFBfSU5JVDoKLSAgICAgIHNzaF9zZXRfYmxvY2tpbmcoc3NoYy0+c3NoX3Nlc3Npb24sIDEpOwotCi0gICAgICBzc2hjLT5zZnRwX3Nlc3Npb24gPSBzZnRwX25ldyhzc2hjLT5zc2hfc2Vzc2lvbik7Ci0gICAgICBpZighc3NoYy0+c2Z0cF9zZXNzaW9uKSB7Ci0gICAgICAgIGZhaWxmKGRhdGEsICJGYWlsdXJlIGluaXRpYWxpemluZyBzZnRwIHNlc3Npb246ICVzIiwKLSAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOwotICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX0NPVUxETlRfQ09OTkVDVCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICByYyA9IHNmdHBfaW5pdChzc2hjLT5zZnRwX3Nlc3Npb24pOwotICAgICAgaWYocmMgIT0gU1NIX09LKSB7Ci0gICAgICAgIHJjID0gc2Z0cF9nZXRfZXJyb3Ioc3NoYy0+c2Z0cF9zZXNzaW9uKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgIkZhaWx1cmUgaW5pdGlhbGl6aW5nIHNmdHAgc2Vzc2lvbjogJXMiLAotICAgICAgICAgICAgICBzc2hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKSk7Ci0gICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoc2Z0cF9lcnJvcl90b19DVVJMRShyYykpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQUxQQVRIKTsKLSAgICAgIC8qIEZBTExUSFJPVUdIICovCi0gICAgY2FzZSBTU0hfU0ZUUF9SRUFMUEFUSDoKLSAgICAgIC8qCi0gICAgICAgKiBHZXQgdGhlICJob21lIiBkaXJlY3RvcnkKLSAgICAgICAqLwotICAgICAgc3NoYy0+aG9tZWRpciA9IHNmdHBfY2Fub25pY2FsaXplX3BhdGgoc3NoYy0+c2Z0cF9zZXNzaW9uLCAiLiIpOwotICAgICAgaWYoc3NoYy0+aG9tZWRpciA9PSBOVUxMKSB7Ci0gICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfQ09VTEROVF9DT05ORUNUKTsKLSAgICAgIH0KLSAgICAgIGNvbm4tPmRhdGEtPnN0YXRlLm1vc3RfcmVjZW50X2Z0cF9lbnRyeXBhdGggPSBzc2hjLT5ob21lZGlyOwotCi0gICAgICAvKiBUaGlzIGlzIHRoZSBsYXN0IHN0ZXAgaW4gdGhlIFNGVFAgY29ubmVjdCBwaGFzZS4gRG8gbm90ZSB0aGF0IHdoaWxlCi0gICAgICAgICB3ZSBnZXQgdGhlIGhvbWVkaXIgaGVyZSwgd2UgZ2V0IHRoZSAid29ya2luZ3BhdGgiIGluIHRoZSBETyBhY3Rpb24KLSAgICAgICAgIHNpbmNlIHRoZSBob21lZGlyIHdpbGwgcmVtYWluIHRoZSBzYW1lIGJldHdlZW4gcmVxdWVzdCBidXQgdGhlCi0gICAgICAgICB3b3JraW5nIHBhdGggd2lsbCBub3QuICovCi0gICAgICBERUJVR0YoaW5mb2YoZGF0YSwgIlNTSCBDT05ORUNUIHBoYXNlIGRvbmVcbiIpKTsKLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9JTklUOgotCi0gICAgICByZXN1bHQgPSBDdXJsX2dldHdvcmtpbmdwYXRoKGNvbm4sIHNzaGMtPmhvbWVkaXIsICZwcm90b3AtPnBhdGgpOwotICAgICAgaWYocmVzdWx0KSB7Ci0gICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIGlmKGRhdGEtPnNldC5xdW90ZSkgewotICAgICAgICBpbmZvZihkYXRhLCAiU2VuZGluZyBxdW90ZSBjb21tYW5kc1xuIik7Ci0gICAgICAgIHNzaGMtPnF1b3RlX2l0ZW0gPSBkYXRhLT5zZXQucXVvdGU7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9HRVRJTkZPKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9QT1NUUVVPVEVfSU5JVDoKLSAgICAgIGlmKGRhdGEtPnNldC5wb3N0cXVvdGUpIHsKLSAgICAgICAgaW5mb2YoZGF0YSwgIlNlbmRpbmcgcXVvdGUgY29tbWFuZHNcbiIpOwotICAgICAgICBzc2hjLT5xdW90ZV9pdGVtID0gZGF0YS0+c2V0LnBvc3RxdW90ZTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEUpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9RVU9URToKLSAgICAgIC8qIFNlbmQgYW55IHF1b3RlIGNvbW1hbmRzICovCi0gICAgICBzZnRwX3F1b3RlKGNvbm4pOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX05FWFRfUVVPVEU6Ci0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOwotCi0gICAgICBzc2hjLT5xdW90ZV9pdGVtID0gc3NoYy0+cXVvdGVfaXRlbS0+bmV4dDsKLQotICAgICAgaWYoc3NoYy0+cXVvdGVfaXRlbSkgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgaWYoc3NoYy0+bmV4dHN0YXRlICE9IFNTSF9OT19TVEFURSkgewotICAgICAgICAgIHN0YXRlKGNvbm4sIHNzaGMtPm5leHRzdGF0ZSk7Ci0gICAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0dFVElORk8pOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NGVFBfUVVPVEVfU1RBVDoKLSAgICAgIHNmdHBfcXVvdGVfc3RhdChjb25uKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9TRVRTVEFUOgotICAgICAgcmMgPSBzZnRwX3NldHN0YXQoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnF1b3RlX2F0dHJzKTsKLSAgICAgIGlmKHJjICE9IDAgJiYgIXNzaGMtPmFjY2VwdGZhaWwpIHsKLSAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7Ci0gICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOwotICAgICAgICBmYWlsZihkYXRhLCAiQXR0ZW1wdCB0byBzZXQgU0ZUUCBzdGF0cyBmYWlsZWQ6ICVzIiwKLSAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICAvKiBzc2hjLT5hY3R1YWxjb2RlID0gc2Z0cF9lcnJvcl90b19DVVJMRShlcnIpOwotICAgICAgICAgKiB3ZSBkbyBub3Qgc2VuZCB0aGUgYWN0dWFsIGVycm9yOyB3ZSByZXR1cm4KLSAgICAgICAgICogdGhlIGVycm9yIHRoZSBsaWJzc2gyIGJhY2tlbmQgaXMgcmV0dXJuaW5nICovCi0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfTkVYVF9RVU9URSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NGVFBfUVVPVEVfU1lNTElOSzoKLSAgICAgIHJjID0gc2Z0cF9zeW1saW5rKHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5xdW90ZV9wYXRoMSk7Ci0gICAgICBpZihyYyAhPSAwICYmICFzc2hjLT5hY2NlcHRmYWlsKSB7Ci0gICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgInN5bWxpbmsgY29tbWFuZCBmYWlsZWQ6ICVzIiwKLSAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX01LRElSOgotICAgICAgcmMgPSBzZnRwX21rZGlyKHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDEsCi0gICAgICAgICAgICAgICAgICAgICAgKG1vZGVfdClkYXRhLT5zZXQubmV3X2RpcmVjdG9yeV9wZXJtcyk7Ci0gICAgICBpZihyYyAhPSAwICYmICFzc2hjLT5hY2NlcHRmYWlsKSB7Ci0gICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgICBmYWlsZihkYXRhLCAibWtkaXIgY29tbWFuZCBmYWlsZWQ6ICVzIiwKLSAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1JFTkFNRToKLSAgICAgIHJjID0gc2Z0cF9yZW5hbWUoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cXVvdGVfcGF0aDIpOwotICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgewotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7Ci0gICAgICAgIGZhaWxmKGRhdGEsICJyZW5hbWUgY29tbWFuZCBmYWlsZWQ6ICVzIiwKLSAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1JNRElSOgotICAgICAgcmMgPSBzZnRwX3JtZGlyKHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgewotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgInJtZGlyIGNvbW1hbmQgZmFpbGVkOiAlcyIsCi0gICAgICAgICAgICAgIHNzaF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pKTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9VTkxJTks6Ci0gICAgICByYyA9IHNmdHBfdW5saW5rKHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgewotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgInJtIGNvbW1hbmQgZmFpbGVkOiAlcyIsCi0gICAgICAgICAgICAgIHNzaF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pKTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9TVEFUVkZTOgotICAgIHsKLSAgICAgIHNmdHBfc3RhdHZmc190IHN0YXR2ZnM7Ci0KLSAgICAgIHN0YXR2ZnMgPSBzZnRwX3N0YXR2ZnMoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMSk7Ci0gICAgICBpZighc3RhdHZmcyAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgewotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgInN0YXR2ZnMgY29tbWFuZCBmYWlsZWQ6ICVzIiwKLSAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoc3RhdHZmcykgewotICAgICAgICBjaGFyICp0bXAgPSBhcHJpbnRmKCJzdGF0dmZzOlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2JzaXplOiAlbGx1XG4iICJmX2Zyc2l6ZTogJWxsdVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2Jsb2NrczogJWxsdVxuIiAiZl9iZnJlZTogJWxsdVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2JhdmFpbDogJWxsdVxuIiAiZl9maWxlczogJWxsdVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2ZmcmVlOiAlbGx1XG4iICJmX2ZhdmFpbDogJWxsdVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2ZzaWQ6ICVsbHVcbiIgImZfZmxhZzogJWxsdVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX25hbWVtYXg6ICVsbHVcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9ic2l6ZSwgc3RhdHZmcy0+Zl9mcnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9ibG9ja3MsIHN0YXR2ZnMtPmZfYmZyZWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9iYXZhaWwsIHN0YXR2ZnMtPmZfZmlsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9mZnJlZSwgc3RhdHZmcy0+Zl9mYXZhaWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9mc2lkLCBzdGF0dmZzLT5mX2ZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9uYW1lbWF4KTsKLSAgICAgICAgc2Z0cF9zdGF0dmZzX2ZyZWUoc3RhdHZmcyk7Ci0KLSAgICAgICAgaWYoIXRtcCkgewotICAgICAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0hFQURFUiwgdG1wLCBzdHJsZW4odG1wKSk7Ci0gICAgICAgIGZyZWUodG1wKTsKLSAgICAgICAgaWYocmVzdWx0KSB7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgU1NIX1NGVFBfR0VUSU5GTzoKLSAgICAgIGlmKGRhdGEtPnNldC5nZXRfZmlsZXRpbWUpIHsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfRklMRVRJTUUpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1RSQU5TX0lOSVQpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX0ZJTEVUSU1FOgotICAgIHsKLSAgICAgIHNmdHBfYXR0cmlidXRlcyBhdHRyczsKLQotICAgICAgYXR0cnMgPSBzZnRwX3N0YXQoc3NoYy0+c2Z0cF9zZXNzaW9uLCBwcm90b3AtPnBhdGgpOwotICAgICAgaWYoYXR0cnMgIT0gMCkgewotICAgICAgICBkYXRhLT5pbmZvLmZpbGV0aW1lID0gYXR0cnMtPm10aW1lOwotICAgICAgICBzZnRwX2F0dHJpYnV0ZXNfZnJlZShhdHRycyk7Ci0gICAgICB9Ci0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1RSQU5TX0lOSVQpOwotICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBTU0hfU0ZUUF9UUkFOU19JTklUOgotICAgICAgaWYoZGF0YS0+c2V0LnVwbG9hZCkKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVVBMT0FEX0lOSVQpOwotICAgICAgZWxzZSB7Ci0gICAgICAgIGlmKHByb3RvcC0+cGF0aFtzdHJsZW4ocHJvdG9wLT5wYXRoKS0xXSA9PSAnLycpCi0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUl9JTklUKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0RPV05MT0FEX0lOSVQpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1VQTE9BRF9JTklUOgotICAgIHsKLSAgICAgIGludCBmbGFnczsKLQotICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gIT0gMCkgewotICAgICAgICBzZnRwX2F0dHJpYnV0ZXMgYXR0cnM7Ci0KLSAgICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPCAwKSB7Ci0gICAgICAgICAgYXR0cnMgPSBzZnRwX3N0YXQoc3NoYy0+c2Z0cF9zZXNzaW9uLCBwcm90b3AtPnBhdGgpOwotICAgICAgICAgIGlmKGF0dHJzICE9IDApIHsKLSAgICAgICAgICAgIGN1cmxfb2ZmX3Qgc2l6ZSA9IGF0dHJzLT5zaXplOwotICAgICAgICAgICAgaWYoc2l6ZSA8IDApIHsKLSAgICAgICAgICAgICAgZmFpbGYoZGF0YSwgIkJhZCBmaWxlIHNpemUgKCUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikiLCBzaXplKTsKLSAgICAgICAgICAgICAgTU9WRV9UT19FUlJPUl9TVEFURShDVVJMRV9CQURfRE9XTkxPQURfUkVTVU1FKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tID0gYXR0cnMtPnNpemU7Ci0KLSAgICAgICAgICAgIHNmdHBfYXR0cmlidXRlc19mcmVlKGF0dHJzKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA9IDA7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmKGRhdGEtPnNldC5mdHBfYXBwZW5kKQotICAgICAgICAvKiBUcnkgdG8gb3BlbiBmb3IgYXBwZW5kLCBidXQgY3JlYXRlIGlmIG5vbmV4aXN0aW5nICovCi0gICAgICAgIGZsYWdzID0gT19XUk9OTFl8T19DUkVBVHxPX0FQUEVORDsKLSAgICAgIGVsc2UgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPiAwKQotICAgICAgICAvKiBJZiB3ZSBoYXZlIHJlc3RhcnQgcG9zaXRpb24gdGhlbiBvcGVuIGZvciBhcHBlbmQgKi8KLSAgICAgICAgZmxhZ3MgPSBPX1dST05MWXxPX0FQUEVORDsKLSAgICAgIGVsc2UKLSAgICAgICAgLyogQ2xlYXIgZmlsZSBiZWZvcmUgd3JpdGluZyAobm9ybWFsIGJlaGF2aW91cikgKi8KLSAgICAgICAgZmxhZ3MgPSBPX1dST05MWXxPX0FQUEVORHxPX0NSRUFUfE9fVFJVTkM7Ci0KLSAgICAgIGlmKHNzaGMtPnNmdHBfZmlsZSkKLSAgICAgICAgc2Z0cF9jbG9zZShzc2hjLT5zZnRwX2ZpbGUpOwotICAgICAgc3NoYy0+c2Z0cF9maWxlID0KLSAgICAgICAgc2Z0cF9vcGVuKHNzaGMtPnNmdHBfc2Vzc2lvbiwgcHJvdG9wLT5wYXRoLAotICAgICAgICAgICAgICAgICAgZmxhZ3MsIChtb2RlX3QpZGF0YS0+c2V0Lm5ld19maWxlX3Blcm1zKTsKLSAgICAgIGlmKCFzc2hjLT5zZnRwX2ZpbGUpIHsKLSAgICAgICAgZXJyID0gc2Z0cF9nZXRfZXJyb3Ioc3NoYy0+c2Z0cF9zZXNzaW9uKTsKLQotICAgICAgICBpZigoKGVyciA9PSBTU0hfRlhfTk9fU1VDSF9GSUxFIHx8IGVyciA9PSBTU0hfRlhfRkFJTFVSRSB8fAotICAgICAgICAgICAgIGVyciA9PSBTU0hfRlhfTk9fU1VDSF9QQVRIKSkgJiYKLSAgICAgICAgICAgICAoZGF0YS0+c2V0LmZ0cF9jcmVhdGVfbWlzc2luZ19kaXJzICYmCi0gICAgICAgICAgICAgKHN0cmxlbihwcm90b3AtPnBhdGgpID4gMSkpKSB7Ci0gICAgICAgICAgICAgICAvKiB0cnkgdG8gY3JlYXRlIHRoZSBwYXRoIHJlbW90ZWx5ICovCi0gICAgICAgICAgICAgICByYyA9IDA7Ci0gICAgICAgICAgICAgICBzc2hjLT5zZWNvbmRDcmVhdGVEaXJzID0gMTsKLSAgICAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQpOwotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgTU9WRV9UT19TRlRQX0NMT1NFX1NUQVRFKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLyogSWYgd2UgaGF2ZSBhIHJlc3RhcnQgcG9pbnQgdGhlbiB3ZSBuZWVkIHRvIHNlZWsgdG8gdGhlIGNvcnJlY3QKLSAgICAgICAgIHBvc2l0aW9uLiAqLwotICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPiAwKSB7Ci0gICAgICAgIC8qIExldCdzIHJlYWQgb2ZmIHRoZSBwcm9wZXIgYW1vdW50IG9mIGJ5dGVzIGZyb20gdGhlIGlucHV0LiAqLwotICAgICAgICBpZihjb25uLT5zZWVrX2Z1bmMpIHsKLSAgICAgICAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCB0cnVlKTsKLSAgICAgICAgICBzZWVrZXJyID0gY29ubi0+c2Vla19mdW5jKGNvbm4tPnNlZWtfY2xpZW50LCBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFRUtfU0VUKTsKLSAgICAgICAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCBmYWxzZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZihzZWVrZXJyICE9IENVUkxfU0VFS0ZVTkNfT0spIHsKLSAgICAgICAgICBjdXJsX29mZl90IHBhc3NlZCA9IDA7Ci0KLSAgICAgICAgICBpZihzZWVrZXJyICE9IENVUkxfU0VFS0ZVTkNfQ0FOVFNFRUspIHsKLSAgICAgICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3Qgc2VlayBzdHJlYW0iKTsKLSAgICAgICAgICAgIHJldHVybiBDVVJMRV9GVFBfQ09VTEROVF9VU0VfUkVTVDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgLyogc2Vla2VyciA9PSBDVVJMX1NFRUtGVU5DX0NBTlRTRUVLIChjYW4ndCBzZWVrIHRvIG9mZnNldCkgKi8KLSAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICBzaXplX3QgcmVhZHRoaXNhbW91bnRub3cgPQotICAgICAgICAgICAgICAoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gLSBwYXNzZWQgPiBkYXRhLT5zZXQuYnVmZmVyX3NpemUpID8KLSAgICAgICAgICAgICAgKHNpemVfdClkYXRhLT5zZXQuYnVmZmVyX3NpemUgOgotICAgICAgICAgICAgICBjdXJseF9zb3RvdXooZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gLSBwYXNzZWQpOwotCi0gICAgICAgICAgICBzaXplX3QgYWN0dWFsbHlyZWFkID0KLSAgICAgICAgICAgICAgZGF0YS0+c3RhdGUuZnJlYWRfZnVuYyhkYXRhLT5zdGF0ZS5idWZmZXIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHRoaXNhbW91bnRub3csIGRhdGEtPnN0YXRlLmluKTsKLQotICAgICAgICAgICAgcGFzc2VkICs9IGFjdHVhbGx5cmVhZDsKLSAgICAgICAgICAgIGlmKChhY3R1YWxseXJlYWQgPT0gMCkgfHwgKGFjdHVhbGx5cmVhZCA+IHJlYWR0aGlzYW1vdW50bm93KSkgewotICAgICAgICAgICAgICAvKiB0aGlzIGNoZWNrcyBmb3IgZ3JlYXRlci10aGFuIG9ubHkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlCi0gICAgICAgICAgICAgICAgIENVUkxfUkVBREZVTkNfQUJPUlQgcmV0dXJuIGNvZGUgc3RpbGwgYWJvcnRzICovCi0gICAgICAgICAgICAgIGZhaWxmKGRhdGEsICJGYWlsZWQgdG8gcmVhZCBkYXRhIik7Ci0gICAgICAgICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfRlRQX0NPVUxETlRfVVNFX1JFU1QpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0gd2hpbGUocGFzc2VkIDwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogbm93LCBkZWNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgcmVhZCAqLwotICAgICAgICBpZihkYXRhLT5zdGF0ZS5pbmZpbGVzaXplID4gMCkgewotICAgICAgICAgIGRhdGEtPnN0YXRlLmluZmlsZXNpemUgLT0gZGF0YS0+c3RhdGUucmVzdW1lX2Zyb207Ci0gICAgICAgICAgZGF0YS0+cmVxLnNpemUgPSBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplOwotICAgICAgICAgIEN1cmxfcGdyc1NldFVwbG9hZFNpemUoZGF0YSwgZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICByYyA9IHNmdHBfc2VlazY0KHNzaGMtPnNmdHBfZmlsZSwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pOwotICAgICAgICBpZihyYyAhPSAwKSB7Ci0gICAgICAgICAgTU9WRV9UT19TRlRQX0NMT1NFX1NUQVRFKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGlmKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgPiAwKSB7Ci0gICAgICAgIGRhdGEtPnJlcS5zaXplID0gZGF0YS0+c3RhdGUuaW5maWxlc2l6ZTsKLSAgICAgICAgQ3VybF9wZ3JzU2V0VXBsb2FkU2l6ZShkYXRhLCBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplKTsKLSAgICAgIH0KLSAgICAgIC8qIHVwbG9hZCBkYXRhICovCi0gICAgICBDdXJsX3NldHVwX3RyYW5zZmVyKGRhdGEsIC0xLCAtMSwgRkFMU0UsIEZJUlNUU09DS0VUKTsKLQotICAgICAgLyogbm90IHNldCBieSBDdXJsX3NldHVwX3RyYW5zZmVyIHRvIHByZXNlcnZlIGtlZXBvbiBiaXRzICovCi0gICAgICBjb25uLT5zb2NrZmQgPSBjb25uLT53cml0ZXNvY2tmZDsKLQotICAgICAgLyogc3RvcmUgdGhpcyBvcmlnaW5hbCBiaXRtYXNrIHNldHVwIHRvIHVzZSBsYXRlciBvbiBpZiB3ZSBjYW4ndAotICAgICAgICAgZmlndXJlIG91dCBhICJyZWFsIiBiaXRtYXNrICovCi0gICAgICBzc2hjLT5vcmlnX3dhaXRmb3IgPSBkYXRhLT5yZXEua2VlcG9uOwotCi0gICAgICAvKiB3ZSB3YW50IHRvIHVzZSB0aGUgX3NlbmRpbmdfIGZ1bmN0aW9uIGV2ZW4gd2hlbiB0aGUgc29ja2V0IHR1cm5zCi0gICAgICAgICBvdXQgcmVhZGFibGUgYXMgdGhlIHVuZGVybHlpbmcgbGlic3NoIHNmdHAgc2VuZCBmdW5jdGlvbiB3aWxsIGRlYWwKLSAgICAgICAgIHdpdGggYm90aCBhY2NvcmRpbmdseSAqLwotICAgICAgY29ubi0+Y3NlbGVjdF9iaXRzID0gQ1VSTF9DU0VMRUNUX09VVDsKLQotICAgICAgLyogc2luY2Ugd2UgZG9uJ3QgcmVhbGx5IHdhaXQgZm9yIGFueXRoaW5nIGF0IHRoaXMgcG9pbnQsIHdlIHdhbnQgdGhlCi0gICAgICAgICBzdGF0ZSBtYWNoaW5lIHRvIG1vdmUgb24gYXMgc29vbiBhcyBwb3NzaWJsZSBzbyB3ZSBzZXQgYSB2ZXJ5IHNob3J0Ci0gICAgICAgICB0aW1lb3V0IGhlcmUgKi8KLSAgICAgIEN1cmxfZXhwaXJlKGRhdGEsIDAsIEVYUElSRV9SVU5fTk9XKTsKLQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBTU0hfU0ZUUF9DUkVBVEVfRElSU19JTklUOgotICAgICAgaWYoc3RybGVuKHByb3RvcC0+cGF0aCkgPiAxKSB7Ci0gICAgICAgIHNzaGMtPnNsYXNoX3BvcyA9IHByb3RvcC0+cGF0aCArIDE7IC8qIGlnbm9yZSB0aGUgbGVhZGluZyAnLycgKi8KLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ1JFQVRFX0RJUlMpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1VQTE9BRF9JTklUKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9DUkVBVEVfRElSUzoKLSAgICAgIHNzaGMtPnNsYXNoX3BvcyA9IHN0cmNocihzc2hjLT5zbGFzaF9wb3MsICcvJyk7Ci0gICAgICBpZihzc2hjLT5zbGFzaF9wb3MpIHsKLSAgICAgICAgKnNzaGMtPnNsYXNoX3BvcyA9IDA7Ci0KLSAgICAgICAgaW5mb2YoZGF0YSwgIkNyZWF0aW5nIGRpcmVjdG9yeSAnJXMnXG4iLCBwcm90b3AtPnBhdGgpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DUkVBVEVfRElSU19NS0RJUik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVVBMT0FEX0lOSVQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX0NSRUFURV9ESVJTX01LRElSOgotICAgICAgLyogJ21vZGUnIC0gcGFyYW1ldGVyIGlzIHByZWxpbWluYXJ5IC0gZGVmYXVsdCB0byAwNjQ0ICovCi0gICAgICByYyA9IHNmdHBfbWtkaXIoc3NoYy0+c2Z0cF9zZXNzaW9uLCBwcm90b3AtPnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgKG1vZGVfdClkYXRhLT5zZXQubmV3X2RpcmVjdG9yeV9wZXJtcyk7Ci0gICAgICAqc3NoYy0+c2xhc2hfcG9zID0gJy8nOwotICAgICAgKytzc2hjLT5zbGFzaF9wb3M7Ci0gICAgICBpZihyYyA8IDApIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogQWJvcnQgaWYgZmFpbHVyZSB3YXNuJ3QgdGhhdCB0aGUgZGlyIGFscmVhZHkgZXhpc3RzIG9yIHRoZQotICAgICAgICAgKiBwZXJtaXNzaW9uIHdhcyBkZW5pZWQgKGNyZWF0aW9uIG1pZ2h0IHN1Y2NlZWQgZnVydGhlciBkb3duIHRoZQotICAgICAgICAgKiBwYXRoKSAtIHJldHJ5IG9uIHVuc3BlY2lmaWMgRkFJTFVSRSBhbHNvCi0gICAgICAgICAqLwotICAgICAgICBlcnIgPSBzZnRwX2dldF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOwotICAgICAgICBpZigoZXJyICE9IFNTSF9GWF9GSUxFX0FMUkVBRFlfRVhJU1RTKSAmJgotICAgICAgICAgICAoZXJyICE9IFNTSF9GWF9GQUlMVVJFKSAmJgotICAgICAgICAgICAoZXJyICE9IFNTSF9GWF9QRVJNSVNTSU9OX0RFTklFRCkpIHsKLSAgICAgICAgICBNT1ZFX1RPX1NGVFBfQ0xPU0VfU1RBVEUoKTsKLSAgICAgICAgfQotICAgICAgICByYyA9IDA7IC8qIGNsZWFyIHJjIGFuZCBjb250aW51ZSAqLwotICAgICAgfQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ1JFQVRFX0RJUlMpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1JFQURESVJfSU5JVDoKLSAgICAgIEN1cmxfcGdyc1NldERvd25sb2FkU2l6ZShkYXRhLCAtMSk7Ci0gICAgICBpZihkYXRhLT5zZXQub3B0X25vX2JvZHkpIHsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgLyoKLSAgICAgICAqIFRoaXMgaXMgYSBkaXJlY3RvcnkgdGhhdCB3ZSBhcmUgdHJ5aW5nIHRvIGdldCwgc28gcHJvZHVjZSBhIGRpcmVjdG9yeQotICAgICAgICogbGlzdGluZwotICAgICAgICovCi0gICAgICBzc2hjLT5zZnRwX2RpciA9IHNmdHBfb3BlbmRpcihzc2hjLT5zZnRwX3Nlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3AtPnBhdGgpOwotICAgICAgaWYoIXNzaGMtPnNmdHBfZGlyKSB7Ci0gICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgZm9yIHJlYWRpbmc6ICVzIiwKLSAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOwotICAgICAgICBNT1ZFX1RPX1NGVFBfQ0xPU0VfU1RBVEUoKTsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQURESVIpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1JFQURESVI6Ci0KLSAgICAgIGlmKHNzaGMtPnJlYWRkaXJfYXR0cnMpCi0gICAgICAgIHNmdHBfYXR0cmlidXRlc19mcmVlKHNzaGMtPnJlYWRkaXJfYXR0cnMpOwotCi0gICAgICBzc2hjLT5yZWFkZGlyX2F0dHJzID0gc2Z0cF9yZWFkZGlyKHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+c2Z0cF9kaXIpOwotICAgICAgaWYoc3NoYy0+cmVhZGRpcl9hdHRycykgewotICAgICAgICBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lID0gc3NoYy0+cmVhZGRpcl9hdHRycy0+bmFtZTsKLSAgICAgICAgc3NoYy0+cmVhZGRpcl9sb25nZW50cnkgPSBzc2hjLT5yZWFkZGlyX2F0dHJzLT5sb25nbmFtZTsKLSAgICAgICAgc3NoYy0+cmVhZGRpcl9sZW4gPSBzdHJsZW4oc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7Ci0KLSAgICAgICAgaWYoZGF0YS0+c2V0LmZ0cF9saXN0X29ubHkpIHsKLSAgICAgICAgICBjaGFyICp0bXBMaW5lOwotCi0gICAgICAgICAgdG1wTGluZSA9IGFwcmludGYoIiVzXG4iLCBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lKTsKLSAgICAgICAgICBpZih0bXBMaW5lID09IE5VTEwpIHsKLSAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wTGluZSwgc3NoYy0+cmVhZGRpcl9sZW4gKyAxKTsKLSAgICAgICAgICBmcmVlKHRtcExpbmUpOwotCi0gICAgICAgICAgaWYocmVzdWx0KSB7Ci0gICAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgLyogc2luY2UgdGhpcyBjb3VudHMgd2hhdCB3ZSBzZW5kIHRvIHRoZSBjbGllbnQsIHdlIGluY2x1ZGUgdGhlCi0gICAgICAgICAgICAgbmV3bGluZSBpbiB0aGlzIGNvdW50ZXIgKi8KLSAgICAgICAgICBkYXRhLT5yZXEuYnl0ZWNvdW50ICs9IHNzaGMtPnJlYWRkaXJfbGVuICsgMTsKLQotICAgICAgICAgIC8qIG91dHB1dCBkZWJ1ZyBvdXRwdXQgaWYgdGhhdCBpcyByZXF1ZXN0ZWQgKi8KLSAgICAgICAgICBpZihkYXRhLT5zZXQudmVyYm9zZSkgewotICAgICAgICAgICAgQ3VybF9kZWJ1ZyhkYXRhLCBDVVJMSU5GT19EQVRBX09VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xlbik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHNzaGMtPnJlYWRkaXJfY3VyckxlbiA9IHN0cmxlbihzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSk7Ci0gICAgICAgICAgc3NoYy0+cmVhZGRpcl90b3RhbExlbiA9IDgwICsgc3NoYy0+cmVhZGRpcl9jdXJyTGVuOwotICAgICAgICAgIHNzaGMtPnJlYWRkaXJfbGluZSA9IGNhbGxvYyhzc2hjLT5yZWFkZGlyX3RvdGFsTGVuLCAxKTsKLSAgICAgICAgICBpZighc3NoYy0+cmVhZGRpcl9saW5lKSB7Ci0gICAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLQotICAgICAgICAgIG1lbWNweShzc2hjLT5yZWFkZGlyX2xpbmUsIHNzaGMtPnJlYWRkaXJfbG9uZ2VudHJ5LAotICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4pOwotICAgICAgICAgIGlmKChzc2hjLT5yZWFkZGlyX2F0dHJzLT5mbGFncyAmIFNTSF9GSUxFWEZFUl9BVFRSX1BFUk1JU1NJT05TKSAmJgotICAgICAgICAgICAgICgoc3NoYy0+cmVhZGRpcl9hdHRycy0+cGVybWlzc2lvbnMgJiBTX0lGTVQpID09Ci0gICAgICAgICAgICAgIFNfSUZMTkspKSB7Ci0gICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xpbmtQYXRoID0gbWFsbG9jKFBBVEhfTUFYICsgMSk7Ci0gICAgICAgICAgICBpZihzc2hjLT5yZWFkZGlyX2xpbmtQYXRoID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1zbnByaW50Zihzc2hjLT5yZWFkZGlyX2xpbmtQYXRoLCBQQVRIX01BWCwgIiVzJXMiLCBwcm90b3AtPnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7Ci0KLSAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQURESVJfTElOSyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUl9CT1RUT00pOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHNzaGMtPnJlYWRkaXJfYXR0cnMgPT0gTlVMTCAmJiBzZnRwX2Rpcl9lb2Yoc3NoYy0+c2Z0cF9kaXIpKSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQURESVJfRE9ORSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3Qgb3BlbiByZW1vdGUgZmlsZSBmb3IgcmVhZGluZzogJXMiLAotICAgICAgICAgICAgICBzc2hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKSk7Ci0gICAgICAgIE1PVkVfVE9fU0ZUUF9DTE9TRV9TVEFURSgpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9SRUFERElSX0xJTks6Ci0gICAgICBpZihzc2hjLT5yZWFkZGlyX2xpbmtfYXR0cnMpCi0gICAgICAgIHNmdHBfYXR0cmlidXRlc19mcmVlKHNzaGMtPnJlYWRkaXJfbGlua19hdHRycyk7Ci0KLSAgICAgIHNzaGMtPnJlYWRkaXJfbGlua19hdHRycyA9IHNmdHBfbHN0YXQoc3NoYy0+c2Z0cF9zZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xpbmtQYXRoKTsKLSAgICAgIGlmKHNzaGMtPnJlYWRkaXJfbGlua19hdHRycyA9PSAwKSB7Ci0gICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3QgcmVhZCBzeW1saW5rIGZvciByZWFkaW5nOiAlcyIsCi0gICAgICAgICAgICAgIHNzaF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pKTsKLSAgICAgICAgTU9WRV9UT19TRlRQX0NMT1NFX1NUQVRFKCk7Ci0gICAgICB9Ci0KLSAgICAgIGlmKHNzaGMtPnJlYWRkaXJfbGlua19hdHRycy0+bmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgIHNzaGMtPnJlYWRkaXJfdG1wID0gc2Z0cF9yZWFkbGluayhzc2hjLT5zZnRwX3Nlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xpbmtQYXRoKTsKLSAgICAgICAgaWYoc3NoYy0+cmVhZGRpcl9maWxlbmFtZSA9PSBOVUxMKQotICAgICAgICAgIHNzaGMtPnJlYWRkaXJfbGVuID0gMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHNzaGMtPnJlYWRkaXJfbGVuID0gc3RybGVuKHNzaGMtPnJlYWRkaXJfdG1wKTsKLSAgICAgICAgc3NoYy0+cmVhZGRpcl9sb25nZW50cnkgPSBOVUxMOwotICAgICAgICBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lID0gc3NoYy0+cmVhZGRpcl90bXA7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgc3NoYy0+cmVhZGRpcl9sZW4gPSBzdHJsZW4oc3NoYy0+cmVhZGRpcl9saW5rX2F0dHJzLT5uYW1lKTsKLSAgICAgICAgc3NoYy0+cmVhZGRpcl9maWxlbmFtZSA9IHNzaGMtPnJlYWRkaXJfbGlua19hdHRycy0+bmFtZTsKLSAgICAgICAgc3NoYy0+cmVhZGRpcl9sb25nZW50cnkgPSBzc2hjLT5yZWFkZGlyX2xpbmtfYXR0cnMtPmxvbmduYW1lOwotICAgICAgfQotCi0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfbGlua1BhdGgpOwotCi0gICAgICAvKiBnZXQgcm9vbSBmb3IgdGhlIGZpbGVuYW1lIGFuZCBleHRyYSBvdXRwdXQgKi8KLSAgICAgIHNzaGMtPnJlYWRkaXJfdG90YWxMZW4gKz0gNCArIHNzaGMtPnJlYWRkaXJfbGVuOwotICAgICAgbmV3X3JlYWRkaXJfbGluZSA9IEN1cmxfc2FmZXJlYWxsb2Moc3NoYy0+cmVhZGRpcl9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl90b3RhbExlbik7Ci0gICAgICBpZighbmV3X3JlYWRkaXJfbGluZSkgewotICAgICAgICBzc2hjLT5yZWFkZGlyX2xpbmUgPSBOVUxMOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHNzaGMtPnJlYWRkaXJfbGluZSA9IG5ld19yZWFkZGlyX2xpbmU7Ci0KLSAgICAgIHNzaGMtPnJlYWRkaXJfY3VyckxlbiArPSBtc25wcmludGYoc3NoYy0+cmVhZGRpcl9saW5lICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX3RvdGFsTGVuIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0+ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7Ci0KLSAgICAgIHNmdHBfYXR0cmlidXRlc19mcmVlKHNzaGMtPnJlYWRkaXJfbGlua19hdHRycyk7Ci0gICAgICBzc2hjLT5yZWFkZGlyX2xpbmtfYXR0cnMgPSBOVUxMOwotICAgICAgc3NoYy0+cmVhZGRpcl9maWxlbmFtZSA9IE5VTEw7Ci0gICAgICBzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSA9IE5VTEw7Ci0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQURESVJfQk9UVE9NKTsKLSAgICAgIC8qIEZBTExUSFJPVUdIICovCi0gICAgY2FzZSBTU0hfU0ZUUF9SRUFERElSX0JPVFRPTToKLSAgICAgIHNzaGMtPnJlYWRkaXJfY3VyckxlbiArPSBtc25wcmludGYoc3NoYy0+cmVhZGRpcl9saW5lICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX3RvdGFsTGVuIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuLCAiXG4iKTsKLSAgICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4pOwotCi0gICAgICBpZighcmVzdWx0KSB7Ci0KLSAgICAgICAgLyogb3V0cHV0IGRlYnVnIG91dHB1dCBpZiB0aGF0IGlzIHJlcXVlc3RlZCAqLwotICAgICAgICBpZihkYXRhLT5zZXQudmVyYm9zZSkgewotICAgICAgICAgIEN1cmxfZGVidWcoZGF0YSwgQ1VSTElORk9fREFUQV9PVVQsIHNzaGMtPnJlYWRkaXJfbGluZSwKLSAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfY3Vyckxlbik7Ci0gICAgICAgIH0KLSAgICAgICAgZGF0YS0+cmVxLmJ5dGVjb3VudCArPSBzc2hjLT5yZWFkZGlyX2N1cnJMZW47Ci0gICAgICB9Ci0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfbGluZSk7Ci0gICAgICBzc2hfc3RyaW5nX2ZyZWVfY2hhcihzc2hjLT5yZWFkZGlyX3RtcCk7Ci0gICAgICBzc2hjLT5yZWFkZGlyX3RtcCA9IE5VTEw7Ci0KLSAgICAgIGlmKHJlc3VsdCkgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQURESVIpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1JFQURESVJfRE9ORToKLSAgICAgIHNmdHBfY2xvc2VkaXIoc3NoYy0+c2Z0cF9kaXIpOwotICAgICAgc3NoYy0+c2Z0cF9kaXIgPSBOVUxMOwotCi0gICAgICAvKiBubyBkYXRhIHRvIHRyYW5zZmVyICovCi0gICAgICBDdXJsX3NldHVwX3RyYW5zZmVyKGRhdGEsIC0xLCAtMSwgRkFMU0UsIC0xKTsKLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9ET1dOTE9BRF9JTklUOgotICAgICAgLyoKLSAgICAgICAqIFdvcmsgb24gZ2V0dGluZyB0aGUgc3BlY2lmaWVkIGZpbGUKLSAgICAgICAqLwotICAgICAgaWYoc3NoYy0+c2Z0cF9maWxlKQotICAgICAgICBzZnRwX2Nsb3NlKHNzaGMtPnNmdHBfZmlsZSk7Ci0KLSAgICAgIHNzaGMtPnNmdHBfZmlsZSA9IHNmdHBfb3Blbihzc2hjLT5zZnRwX3Nlc3Npb24sIHByb3RvcC0+cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPX1JET05MWSwgKG1vZGVfdClkYXRhLT5zZXQubmV3X2ZpbGVfcGVybXMpOwotICAgICAgaWYoIXNzaGMtPnNmdHBfZmlsZSkgewotICAgICAgICBmYWlsZihkYXRhLCAiQ291bGQgbm90IG9wZW4gcmVtb3RlIGZpbGUgZm9yIHJlYWRpbmc6ICVzIiwKLSAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOwotCi0gICAgICAgIE1PVkVfVE9fU0ZUUF9DTE9TRV9TVEFURSgpOwotICAgICAgfQotCi0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ET1dOTE9BRF9TVEFUKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9ET1dOTE9BRF9TVEFUOgotICAgIHsKLSAgICAgIHNmdHBfYXR0cmlidXRlcyBhdHRyczsKLSAgICAgIGN1cmxfb2ZmX3Qgc2l6ZTsKLQotICAgICAgYXR0cnMgPSBzZnRwX2ZzdGF0KHNzaGMtPnNmdHBfZmlsZSk7Ci0gICAgICBpZighYXR0cnMgfHwKLSAgICAgICAgICAgICAgIShhdHRycy0+ZmxhZ3MgJiBTU0hfRklMRVhGRVJfQVRUUl9TSVpFKSB8fAotICAgICAgICAgICAgICAoYXR0cnMtPnNpemUgPT0gMCkpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogc2Z0cF9mc3RhdCBkaWRuJ3QgcmV0dXJuIGFuIGVycm9yLCBzbyBtYXliZSB0aGUgc2VydmVyCi0gICAgICAgICAqIGp1c3QgZG9lc24ndCBzdXBwb3J0IHN0YXQoKQotICAgICAgICAgKiBPUiB0aGUgc2VydmVyIGRvZXNuJ3QgcmV0dXJuIGEgZmlsZSBzaXplIHdpdGggYSBzdGF0KCkKLSAgICAgICAgICogT1IgZmlsZSBzaXplIGlzIDAKLSAgICAgICAgICovCi0gICAgICAgIGRhdGEtPnJlcS5zaXplID0gLTE7Ci0gICAgICAgIGRhdGEtPnJlcS5tYXhkb3dubG9hZCA9IC0xOwotICAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgLTEpOwotICAgICAgICBzaXplID0gMDsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzaXplID0gYXR0cnMtPnNpemU7Ci0KLSAgICAgICAgc2Z0cF9hdHRyaWJ1dGVzX2ZyZWUoYXR0cnMpOwotCi0gICAgICAgIGlmKHNpemUgPCAwKSB7Ci0gICAgICAgICAgZmFpbGYoZGF0YSwgIkJhZCBmaWxlIHNpemUgKCUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikiLCBzaXplKTsKLSAgICAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0RPV05MT0FEX1JFU1VNRTsKLSAgICAgICAgfQotICAgICAgICBpZihjb25uLT5kYXRhLT5zdGF0ZS51c2VfcmFuZ2UpIHsKLSAgICAgICAgICBjdXJsX29mZl90IGZyb20sIHRvOwotICAgICAgICAgIGNoYXIgKnB0cjsKLSAgICAgICAgICBjaGFyICpwdHIyOwotICAgICAgICAgIENVUkxvZmZ0IHRvX3Q7Ci0gICAgICAgICAgQ1VSTG9mZnQgZnJvbV90OwotCi0gICAgICAgICAgZnJvbV90ID0gY3VybHhfc3RydG9vZmZ0KGNvbm4tPmRhdGEtPnN0YXRlLnJhbmdlLCAmcHRyLCAwLCAmZnJvbSk7Ci0gICAgICAgICAgaWYoZnJvbV90ID09IENVUkxfT0ZGVF9GTE9XKSB7Ci0gICAgICAgICAgICByZXR1cm4gQ1VSTEVfUkFOR0VfRVJST1I7Ci0gICAgICAgICAgfQotICAgICAgICAgIHdoaWxlKCpwdHIgJiYgKElTU1BBQ0UoKnB0cikgfHwgKCpwdHIgPT0gJy0nKSkpCi0gICAgICAgICAgICBwdHIrKzsKLSAgICAgICAgICB0b190ID0gY3VybHhfc3RydG9vZmZ0KHB0ciwgJnB0cjIsIDAsICZ0byk7Ci0gICAgICAgICAgaWYodG9fdCA9PSBDVVJMX09GRlRfRkxPVykgewotICAgICAgICAgICAgcmV0dXJuIENVUkxFX1JBTkdFX0VSUk9SOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZigodG9fdCA9PSBDVVJMX09GRlRfSU5WQUwpIC8qIG5vICJ0byIgdmFsdWUgZ2l2ZW4gKi8KLSAgICAgICAgICAgICB8fCAodG8gPj0gc2l6ZSkpIHsKLSAgICAgICAgICAgIHRvID0gc2l6ZSAtIDE7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmKGZyb21fdCkgewotICAgICAgICAgICAgLyogZnJvbSBpcyByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSAqLwotICAgICAgICAgICAgZnJvbSA9IHNpemUgLSB0bzsKLSAgICAgICAgICAgIHRvID0gc2l6ZSAtIDE7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmKGZyb20gPiBzaXplKSB7Ci0gICAgICAgICAgICBmYWlsZihkYXRhLCAiT2Zmc2V0ICglIgotICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiKSB3YXMgYmV5b25kIGZpbGUgc2l6ZSAoJSIKLSAgICAgICAgICAgICAgICAgIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikiLCBmcm9tLCBzaXplKTsKLSAgICAgICAgICAgIHJldHVybiBDVVJMRV9CQURfRE9XTkxPQURfUkVTVU1FOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZihmcm9tID4gdG8pIHsKLSAgICAgICAgICAgIGZyb20gPSB0bzsKLSAgICAgICAgICAgIHNpemUgPSAwOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNpemUgPSB0byAtIGZyb20gKyAxOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHJjID0gc2Z0cF9zZWVrNjQoc3NoYy0+c2Z0cF9maWxlLCBmcm9tKTsKLSAgICAgICAgICBpZihyYyAhPSAwKSB7Ci0gICAgICAgICAgICBNT1ZFX1RPX1NGVFBfQ0xPU0VfU1RBVEUoKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZGF0YS0+cmVxLnNpemUgPSBzaXplOwotICAgICAgICBkYXRhLT5yZXEubWF4ZG93bmxvYWQgPSBzaXplOwotICAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgc2l6ZSk7Ci0gICAgICB9Ci0KLSAgICAgIC8qIFdlIGNhbiByZXN1bWUgaWYgd2UgY2FuIHNlZWsgdG8gdGhlIHJlc3VtZSBwb3NpdGlvbiAqLwotICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pIHsKLSAgICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPCAwKSB7Ci0gICAgICAgICAgLyogV2UncmUgc3VwcG9zZWQgdG8gZG93bmxvYWQgdGhlIGxhc3QgYWJzKGZyb20pIGJ5dGVzICovCi0gICAgICAgICAgaWYoKGN1cmxfb2ZmX3Qpc2l6ZSA8IC1kYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSkgewotICAgICAgICAgICAgZmFpbGYoZGF0YSwgIk9mZnNldCAoJSIKLSAgICAgICAgICAgICAgICAgIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikgd2FzIGJleW9uZCBmaWxlIHNpemUgKCUiCi0gICAgICAgICAgICAgICAgICBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIpIiwKLSAgICAgICAgICAgICAgICAgIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tLCBzaXplKTsKLSAgICAgICAgICAgIHJldHVybiBDVVJMRV9CQURfRE9XTkxPQURfUkVTVU1FOwotICAgICAgICAgIH0KLSAgICAgICAgICAvKiBkb3dubG9hZCBmcm9tIHdoZXJlPyAqLwotICAgICAgICAgIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tICs9IHNpemU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgaWYoKGN1cmxfb2ZmX3Qpc2l6ZSA8IGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tKSB7Ci0gICAgICAgICAgICBmYWlsZihkYXRhLCAiT2Zmc2V0ICglIiBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UCi0gICAgICAgICAgICAgICAgICAiKSB3YXMgYmV5b25kIGZpbGUgc2l6ZSAoJSIgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiKSIsCi0gICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSwgc2l6ZSk7Ci0gICAgICAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0RPV05MT0FEX1JFU1VNRTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLyogRG9lcyBhIGNvbXBsZXRlZCBmaWxlIG5lZWQgdG8gYmUgc2Vla2VkIGFuZCBzdGFydGVkIG9yIGNsb3NlZCA/ICovCi0gICAgICAgIC8qIE5vdyBzdG9yZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdlIGFyZSBleHBlY3RlZCB0byBkb3dubG9hZCAqLwotICAgICAgICBkYXRhLT5yZXEuc2l6ZSA9IHNpemUgLSBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbTsKLSAgICAgICAgZGF0YS0+cmVxLm1heGRvd25sb2FkID0gc2l6ZSAtIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tOwotICAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgLSBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSk7Ci0KLSAgICAgICAgcmMgPSBzZnRwX3NlZWs2NChzc2hjLT5zZnRwX2ZpbGUsIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tKTsKLSAgICAgICAgaWYocmMgIT0gMCkgewotICAgICAgICAgIE1PVkVfVE9fU0ZUUF9DTE9TRV9TVEFURSgpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLyogU2V0dXAgdGhlIGFjdHVhbCBkb3dubG9hZCAqLwotICAgIGlmKGRhdGEtPnJlcS5zaXplID09IDApIHsKLSAgICAgIC8qIG5vIGRhdGEgdG8gdHJhbnNmZXIgKi8KLSAgICAgIEN1cmxfc2V0dXBfdHJhbnNmZXIoZGF0YSwgLTEsIC0xLCBGQUxTRSwgLTEpOwotICAgICAgaW5mb2YoZGF0YSwgIkZpbGUgYWxyZWFkeSBjb21wbGV0ZWx5IGRvd25sb2FkZWRcbiIpOwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIEN1cmxfc2V0dXBfdHJhbnNmZXIoZGF0YSwgRklSU1RTT0NLRVQsIGRhdGEtPnJlcS5zaXplLCBGQUxTRSwgLTEpOwotCi0gICAgLyogbm90IHNldCBieSBDdXJsX3NldHVwX3RyYW5zZmVyIHRvIHByZXNlcnZlIGtlZXBvbiBiaXRzICovCi0gICAgY29ubi0+d3JpdGVzb2NrZmQgPSBjb25uLT5zb2NrZmQ7Ci0KLSAgICAvKiB3ZSB3YW50IHRvIHVzZSB0aGUgX3JlY2VpdmluZ18gZnVuY3Rpb24gZXZlbiB3aGVuIHRoZSBzb2NrZXQgdHVybnMKLSAgICAgICBvdXQgd3JpdGFibGVhYmxlIGFzIHRoZSB1bmRlcmx5aW5nIGxpYnNzaCByZWN2IGZ1bmN0aW9uIHdpbGwgZGVhbAotICAgICAgIHdpdGggYm90aCBhY2NvcmRpbmdseSAqLwotICAgIGNvbm4tPmNzZWxlY3RfYml0cyA9IENVUkxfQ1NFTEVDVF9JTjsKLQotICAgIGlmKHJlc3VsdCkgewotICAgICAgLyogdGhpcyBzaG91bGQgbmV2ZXIgb2NjdXI7IHRoZSBjbG9zZSBzdGF0ZSBzaG91bGQgYmUgZW50ZXJlZAotICAgICAgICAgYXQgdGhlIHRpbWUgdGhlIGVycm9yIG9jY3VycyAqLwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBzc2hjLT5zZnRwX3JlY3Zfc3RhdGUgPSAwOwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgIH0KLSAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NGVFBfQ0xPU0U6Ci0gICAgICBpZihzc2hjLT5zZnRwX2ZpbGUpIHsKLSAgICAgICAgc2Z0cF9jbG9zZShzc2hjLT5zZnRwX2ZpbGUpOwotICAgICAgICBzc2hjLT5zZnRwX2ZpbGUgPSBOVUxMOwotICAgICAgfQotICAgICAgQ3VybF9zYWZlZnJlZShwcm90b3AtPnBhdGgpOwotCi0gICAgICBERUJVR0YoaW5mb2YoZGF0YSwgIlNGVFAgRE9ORSBkb25lXG4iKSk7Ci0KLSAgICAgIC8qIENoZWNrIGlmIG5leHRzdGF0ZSBpcyBzZXQgYW5kIG1vdmUgLm5leHRzdGF0ZSBjb3VsZCBiZSBQT1NUUVVPVEVfSU5JVAotICAgICAgICAgQWZ0ZXIgbmV4dHN0YXRlIGlzIGV4ZWN1dGVkLCB0aGUgY29udHJvbCBzaG91bGQgY29tZSBiYWNrIHRvCi0gICAgICAgICBTU0hfU0ZUUF9DTE9TRSB0byBwYXNzIHRoZSBjb3JyZWN0IHJlc3VsdCBiYWNrICAqLwotICAgICAgaWYoc3NoYy0+bmV4dHN0YXRlICE9IFNTSF9OT19TVEFURSAmJgotICAgICAgICAgc3NoYy0+bmV4dHN0YXRlICE9IFNTSF9TRlRQX0NMT1NFKSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIHNzaGMtPm5leHRzdGF0ZSk7Ci0gICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9TRlRQX0NMT1NFOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKLSAgICAgICAgcmVzdWx0ID0gc3NoYy0+YWN0dWFsY29kZTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9TSFVURE9XTjoKLSAgICAgIC8qIGR1cmluZyB0aW1lcyB3ZSBnZXQgaGVyZSBkdWUgdG8gYSBicm9rZW4gdHJhbnNmZXIgYW5kIHRoZW4gdGhlCi0gICAgICAgICBzZnRwX2hhbmRsZSBtaWdodCBub3QgaGF2ZSBiZWVuIHRha2VuIGRvd24gc28gbWFrZSBzdXJlIHRoYXQgaXMgZG9uZQotICAgICAgICAgYmVmb3JlIHdlIHByb2NlZWQgKi8KLQotICAgICAgaWYoc3NoYy0+c2Z0cF9maWxlKSB7Ci0gICAgICAgIHNmdHBfY2xvc2Uoc3NoYy0+c2Z0cF9maWxlKTsKLSAgICAgICAgc3NoYy0+c2Z0cF9maWxlID0gTlVMTDsKLSAgICAgIH0KLQotICAgICAgaWYoc3NoYy0+c2Z0cF9zZXNzaW9uKSB7Ci0gICAgICAgIHNmdHBfZnJlZShzc2hjLT5zZnRwX3Nlc3Npb24pOwotICAgICAgICBzc2hjLT5zZnRwX3Nlc3Npb24gPSBOVUxMOwotICAgICAgfQotCi0gICAgICBTU0hfU1RSSU5HX0ZSRUVfQ0hBUihzc2hjLT5ob21lZGlyKTsKLSAgICAgIGNvbm4tPmRhdGEtPnN0YXRlLm1vc3RfcmVjZW50X2Z0cF9lbnRyeXBhdGggPSBOVUxMOwotCi0gICAgICBzdGF0ZShjb25uLCBTU0hfU0VTU0lPTl9ESVNDT05ORUNUKTsKLSAgICAgIGJyZWFrOwotCi0KLSAgICBjYXNlIFNTSF9TQ1BfVFJBTlNfSU5JVDoKLSAgICAgIHJlc3VsdCA9IEN1cmxfZ2V0d29ya2luZ3BhdGgoY29ubiwgc3NoYy0+aG9tZWRpciwgJnByb3RvcC0+cGF0aCk7Ci0gICAgICBpZihyZXN1bHQpIHsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgLyogRnVuY3Rpb25zIGZyb20gdGhlIFNDUCBzdWJzeXN0ZW0gY2Fubm90IGhhbmRsZS9yZXR1cm4gU1NIX0FHQUlOICovCi0gICAgICBzc2hfc2V0X2Jsb2NraW5nKHNzaGMtPnNzaF9zZXNzaW9uLCAxKTsKLQotICAgICAgaWYoZGF0YS0+c2V0LnVwbG9hZCkgewotICAgICAgICBpZihkYXRhLT5zdGF0ZS5pbmZpbGVzaXplIDwgMCkgewotICAgICAgICAgIGZhaWxmKGRhdGEsICJTQ1AgcmVxdWlyZXMgYSBrbm93biBmaWxlIHNpemUgZm9yIHVwbG9hZCIpOwotICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9VUExPQURfRkFJTEVEOwotICAgICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfVVBMT0FEX0ZBSUxFRCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzc2hjLT5zY3Bfc2Vzc2lvbiA9Ci0gICAgICAgICAgc3NoX3NjcF9uZXcoc3NoYy0+c3NoX3Nlc3Npb24sIFNTSF9TQ1BfV1JJVEUsIHByb3RvcC0+cGF0aCk7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfVVBMT0FEX0lOSVQpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHNzaGMtPnNjcF9zZXNzaW9uID0KLSAgICAgICAgICBzc2hfc2NwX25ldyhzc2hjLT5zc2hfc2Vzc2lvbiwgU1NIX1NDUF9SRUFELCBwcm90b3AtPnBhdGgpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX0RPV05MT0FEX0lOSVQpOwotICAgICAgfQotCi0gICAgICBpZighc3NoYy0+c2NwX3Nlc3Npb24pIHsKLSAgICAgICAgZXJyX21zZyA9IHNzaF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pOwotICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAiJXMiLCBlcnJfbXNnKTsKLSAgICAgICAgTU9WRV9UT19FUlJPUl9TVEFURShDVVJMRV9VUExPQURfRkFJTEVEKTsKLSAgICAgIH0KLQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TQ1BfVVBMT0FEX0lOSVQ6Ci0KLSAgICAgIHJjID0gc3NoX3NjcF9pbml0KHNzaGMtPnNjcF9zZXNzaW9uKTsKLSAgICAgIGlmKHJjICE9IFNTSF9PSykgewotICAgICAgICBlcnJfbXNnID0gc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbik7Ci0gICAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICIlcyIsIGVycl9tc2cpOwotICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX1VQTE9BRF9GQUlMRUQpOwotICAgICAgfQotCi0gICAgICByYyA9IHNzaF9zY3BfcHVzaF9maWxlKHNzaGMtPnNjcF9zZXNzaW9uLCBwcm90b3AtPnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnN0YXRlLmluZmlsZXNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpZGF0YS0+c2V0Lm5ld19maWxlX3Blcm1zKTsKLSAgICAgIGlmKHJjICE9IFNTSF9PSykgewotICAgICAgICBlcnJfbXNnID0gc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbik7Ci0gICAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICIlcyIsIGVycl9tc2cpOwotICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX1VQTE9BRF9GQUlMRUQpOwotICAgICAgfQotCi0gICAgICAvKiB1cGxvYWQgZGF0YSAqLwotICAgICAgQ3VybF9zZXR1cF90cmFuc2ZlcihkYXRhLCAtMSwgZGF0YS0+cmVxLnNpemUsIEZBTFNFLCBGSVJTVFNPQ0tFVCk7Ci0KLSAgICAgIC8qIG5vdCBzZXQgYnkgQ3VybF9zZXR1cF90cmFuc2ZlciB0byBwcmVzZXJ2ZSBrZWVwb24gYml0cyAqLwotICAgICAgY29ubi0+c29ja2ZkID0gY29ubi0+d3JpdGVzb2NrZmQ7Ci0KLSAgICAgIC8qIHN0b3JlIHRoaXMgb3JpZ2luYWwgYml0bWFzayBzZXR1cCB0byB1c2UgbGF0ZXIgb24gaWYgd2UgY2FuJ3QKLSAgICAgICAgIGZpZ3VyZSBvdXQgYSAicmVhbCIgYml0bWFzayAqLwotICAgICAgc3NoYy0+b3JpZ193YWl0Zm9yID0gZGF0YS0+cmVxLmtlZXBvbjsKLQotICAgICAgLyogd2Ugd2FudCB0byB1c2UgdGhlIF9zZW5kaW5nXyBmdW5jdGlvbiBldmVuIHdoZW4gdGhlIHNvY2tldCB0dXJucwotICAgICAgICAgb3V0IHJlYWRhYmxlIGFzIHRoZSB1bmRlcmx5aW5nIGxpYnNzaCBzY3Agc2VuZCBmdW5jdGlvbiB3aWxsIGRlYWwKLSAgICAgICAgIHdpdGggYm90aCBhY2NvcmRpbmdseSAqLwotICAgICAgY29ubi0+Y3NlbGVjdF9iaXRzID0gQ1VSTF9DU0VMRUNUX09VVDsKLQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotCi0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NDUF9ET1dOTE9BRF9JTklUOgotCi0gICAgICByYyA9IHNzaF9zY3BfaW5pdChzc2hjLT5zY3Bfc2Vzc2lvbik7Ci0gICAgICBpZihyYyAhPSBTU0hfT0spIHsKLSAgICAgICAgZXJyX21zZyA9IHNzaF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pOwotICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAiJXMiLCBlcnJfbXNnKTsKLSAgICAgICAgTU9WRV9UT19FUlJPUl9TVEFURShDVVJMRV9DT1VMRE5UX0NPTk5FQ1QpOwotICAgICAgfQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NDUF9ET1dOTE9BRCk7Ci0gICAgICAvKiBGQUxMVEhST1VHSCAqLwotCi0gICAgY2FzZSBTU0hfU0NQX0RPV05MT0FEOnsKLSAgICAgICAgY3VybF9vZmZfdCBieXRlY291bnQ7Ci0KLSAgICAgICAgcmMgPSBzc2hfc2NwX3B1bGxfcmVxdWVzdChzc2hjLT5zY3Bfc2Vzc2lvbik7Ci0gICAgICAgIGlmKHJjICE9IFNTSF9TQ1BfUkVRVUVTVF9ORVdGSUxFKSB7Ci0gICAgICAgICAgZXJyX21zZyA9IHNzaF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pOwotICAgICAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICIlcyIsIGVycl9tc2cpOwotICAgICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfUkVNT1RFX0ZJTEVfTk9UX0ZPVU5EKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIGRvd25sb2FkIGRhdGEgKi8KLSAgICAgICAgYnl0ZWNvdW50ID0gc3NoX3NjcF9yZXF1ZXN0X2dldF9zaXplKHNzaGMtPnNjcF9zZXNzaW9uKTsKLSAgICAgICAgZGF0YS0+cmVxLm1heGRvd25sb2FkID0gKGN1cmxfb2ZmX3QpIGJ5dGVjb3VudDsKLSAgICAgICAgQ3VybF9zZXR1cF90cmFuc2ZlcihkYXRhLCBGSVJTVFNPQ0tFVCwgYnl0ZWNvdW50LCBGQUxTRSwgLTEpOwotCi0gICAgICAgIC8qIG5vdCBzZXQgYnkgQ3VybF9zZXR1cF90cmFuc2ZlciB0byBwcmVzZXJ2ZSBrZWVwb24gYml0cyAqLwotICAgICAgICBjb25uLT53cml0ZXNvY2tmZCA9IGNvbm4tPnNvY2tmZDsKLQotICAgICAgICAvKiB3ZSB3YW50IHRvIHVzZSB0aGUgX3JlY2VpdmluZ18gZnVuY3Rpb24gZXZlbiB3aGVuIHRoZSBzb2NrZXQgdHVybnMKLSAgICAgICAgICAgb3V0IHdyaXRhYmxlYWJsZSBhcyB0aGUgdW5kZXJseWluZyBsaWJzc2ggcmVjdiBmdW5jdGlvbiB3aWxsIGRlYWwKLSAgICAgICAgICAgd2l0aCBib3RoIGFjY29yZGluZ2x5ICovCi0gICAgICAgIGNvbm4tPmNzZWxlY3RfYml0cyA9IENVUkxfQ1NFTEVDVF9JTjsKLQotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIGNhc2UgU1NIX1NDUF9ET05FOgotICAgICAgaWYoZGF0YS0+c2V0LnVwbG9hZCkKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NDUF9TRU5EX0VPRik7Ci0gICAgICBlbHNlCi0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfQ0hBTk5FTF9GUkVFKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0NQX1NFTkRfRU9GOgotICAgICAgaWYoc3NoYy0+c2NwX3Nlc3Npb24pIHsKLSAgICAgICAgcmMgPSBzc2hfc2NwX2Nsb3NlKHNzaGMtPnNjcF9zZXNzaW9uKTsKLSAgICAgICAgaWYocmMgPT0gU1NIX0FHQUlOKSB7Ci0gICAgICAgICAgLyogQ3VycmVudGx5IHRoZSBzc2hfc2NwX2Nsb3NlIGhhbmRsZXMgd2FpdGluZyBmb3IgRU9GIGluCi0gICAgICAgICAgICogYmxvY2tpbmcgd2F5LgotICAgICAgICAgICAqLwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmKHJjICE9IFNTSF9PSykgewotICAgICAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gY2xvc2UgbGlic3NoIHNjcCBjaGFubmVsOiAlc1xuIiwKLSAgICAgICAgICAgICAgICBzc2hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NDUF9DSEFOTkVMX0ZSRUUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TQ1BfQ0hBTk5FTF9GUkVFOgotICAgICAgaWYoc3NoYy0+c2NwX3Nlc3Npb24pIHsKLSAgICAgICAgc3NoX3NjcF9mcmVlKHNzaGMtPnNjcF9zZXNzaW9uKTsKLSAgICAgICAgc3NoYy0+c2NwX3Nlc3Npb24gPSBOVUxMOwotICAgICAgfQotICAgICAgREVCVUdGKGluZm9mKGRhdGEsICJTQ1AgRE9ORSBwaGFzZSBjb21wbGV0ZVxuIikpOwotCi0gICAgICBzc2hfc2V0X2Jsb2NraW5nKHNzaGMtPnNzaF9zZXNzaW9uLCAwKTsKLQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRElTQ09OTkVDVCk7Ci0gICAgICAvKiBGQUxMVEhST1VHSCAqLwotCi0gICAgY2FzZSBTU0hfU0VTU0lPTl9ESVNDT05ORUNUOgotICAgICAgLyogZHVyaW5nIHdlaXJkIHRpbWVzIHdoZW4gd2UndmUgYmVlbiBwcmVtYXR1cmVseSBhYm9ydGVkLCB0aGUgY2hhbm5lbAotICAgICAgICAgaXMgc3RpbGwgYWxpdmUgd2hlbiB3ZSByZWFjaCB0aGlzIHN0YXRlIGFuZCB3ZSBNVVNUIGtpbGwgdGhlIGNoYW5uZWwKLSAgICAgICAgIHByb3Blcmx5IGZpcnN0ICovCi0gICAgICBpZihzc2hjLT5zY3Bfc2Vzc2lvbikgewotICAgICAgICBzc2hfc2NwX2ZyZWUoc3NoYy0+c2NwX3Nlc3Npb24pOwotICAgICAgICBzc2hjLT5zY3Bfc2Vzc2lvbiA9IE5VTEw7Ci0gICAgICB9Ci0KLSAgICAgIHNzaF9kaXNjb25uZWN0KHNzaGMtPnNzaF9zZXNzaW9uKTsKLQotICAgICAgU1NIX1NUUklOR19GUkVFX0NIQVIoc3NoYy0+aG9tZWRpcik7Ci0gICAgICBjb25uLT5kYXRhLT5zdGF0ZS5tb3N0X3JlY2VudF9mdHBfZW50cnlwYXRoID0gTlVMTDsKLQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRlJFRSk7Ci0gICAgICAvKiBGQUxMVEhST1VHSCAqLwotICAgIGNhc2UgU1NIX1NFU1NJT05fRlJFRToKLSAgICAgIGlmKHNzaGMtPnNzaF9zZXNzaW9uKSB7Ci0gICAgICAgIHNzaF9mcmVlKHNzaGMtPnNzaF9zZXNzaW9uKTsKLSAgICAgICAgc3NoYy0+c3NoX3Nlc3Npb24gPSBOVUxMOwotICAgICAgfQotCi0gICAgICAvKiB3b3JzdC1jYXNlIHNjZW5hcmlvIGNsZWFudXAgKi8KLQotICAgICAgREVCVUdBU1NFUlQoc3NoYy0+c3NoX3Nlc3Npb24gPT0gTlVMTCk7Ci0gICAgICBERUJVR0FTU0VSVChzc2hjLT5zY3Bfc2Vzc2lvbiA9PSBOVUxMKTsKLQotICAgICAgaWYoc3NoYy0+cmVhZGRpcl90bXApIHsKLSAgICAgICAgc3NoX3N0cmluZ19mcmVlX2NoYXIoc3NoYy0+cmVhZGRpcl90bXApOwotICAgICAgICBzc2hjLT5yZWFkZGlyX3RtcCA9IE5VTEw7Ci0gICAgICB9Ci0KLSAgICAgIGlmKHNzaGMtPnF1b3RlX2F0dHJzKQotICAgICAgICBzZnRwX2F0dHJpYnV0ZXNfZnJlZShzc2hjLT5xdW90ZV9hdHRycyk7Ci0KLSAgICAgIGlmKHNzaGMtPnJlYWRkaXJfYXR0cnMpCi0gICAgICAgIHNmdHBfYXR0cmlidXRlc19mcmVlKHNzaGMtPnJlYWRkaXJfYXR0cnMpOwotCi0gICAgICBpZihzc2hjLT5yZWFkZGlyX2xpbmtfYXR0cnMpCi0gICAgICAgIHNmdHBfYXR0cmlidXRlc19mcmVlKHNzaGMtPnJlYWRkaXJfbGlua19hdHRycyk7Ci0KLSAgICAgIGlmKHNzaGMtPnByaXZrZXkpCi0gICAgICAgIHNzaF9rZXlfZnJlZShzc2hjLT5wcml2a2V5KTsKLSAgICAgIGlmKHNzaGMtPnB1YmtleSkKLSAgICAgICAgc3NoX2tleV9mcmVlKHNzaGMtPnB1YmtleSk7Ci0KLSAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cnNhX3B1Yik7Ci0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJzYSk7Ci0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOwotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2xpbmUpOwotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2xpbmtQYXRoKTsKLSAgICAgIFNTSF9TVFJJTkdfRlJFRV9DSEFSKHNzaGMtPmhvbWVkaXIpOwotCi0gICAgICAvKiB0aGUgY29kZSB3ZSBhcmUgYWJvdXQgdG8gcmV0dXJuICovCi0gICAgICByZXN1bHQgPSBzc2hjLT5hY3R1YWxjb2RlOwotCi0gICAgICBtZW1zZXQoc3NoYywgMCwgc2l6ZW9mKHN0cnVjdCBzc2hfY29ubikpOwotCi0gICAgICBjb25uY2xvc2UoY29ubiwgIlNTSCBzZXNzaW9uIGZyZWUiKTsKLSAgICAgIHNzaGMtPnN0YXRlID0gU1NIX1NFU1NJT05fRlJFRTsgICAvKiBjdXJyZW50ICovCi0gICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1FVSVQ6Ci0gICAgICAvKiBmYWxsdGhyb3VnaCwganVzdCBzdG9wISAqLwotICAgIGRlZmF1bHQ6Ci0gICAgICAvKiBpbnRlcm5hbCBlcnJvciAqLwotICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgYnJlYWs7Ci0KLSAgICB9Ci0gIH0gd2hpbGUoIXJjICYmIChzc2hjLT5zdGF0ZSAhPSBTU0hfU1RPUCkpOwotCi0KLSAgaWYocmMgPT0gU1NIX0FHQUlOKSB7Ci0gICAgLyogd2Ugd291bGQgYmxvY2ssIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIHNvY2tldCB0byBiZSByZWFkeSAoaW4gdGhlCi0gICAgICAgcmlnaHQgZGlyZWN0aW9uIHRvbykhICovCi0gICAgKmJsb2NrID0gVFJVRTsKLSAgfQotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyogY2FsbGVkIGJ5IHRoZSBtdWx0aSBpbnRlcmZhY2UgdG8gZmlndXJlIG91dCB3aGF0IHNvY2tldChzKSB0byB3YWl0IGZvciBhbmQKLSAgIGZvciB3aGF0IGFjdGlvbnMgaW4gdGhlIERPX0RPTkUsIFBFUkZPUk0gYW5kIFdBSVRQRVJGT1JNIHN0YXRlcyAqLwotc3RhdGljIGludCBteXNzaF9wZXJmb3JtX2dldHNvY2soY29uc3Qgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29jaywgIC8qIHBvaW50cyB0byBudW1zb2NrcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBzb2NrZXRzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpCi17Ci0gIGludCBiaXRtYXAgPSBHRVRTT0NLX0JMQU5LOwotICAodm9pZCkgbnVtc29ja3M7Ci0KLSAgc29ja1swXSA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOwotCi0gIGlmKGNvbm4tPndhaXRmb3IgJiBLRUVQX1JFQ1YpCi0gICAgYml0bWFwIHw9IEdFVFNPQ0tfUkVBRFNPQ0soRklSU1RTT0NLRVQpOwotCi0gIGlmKGNvbm4tPndhaXRmb3IgJiBLRUVQX1NFTkQpCi0gICAgYml0bWFwIHw9IEdFVFNPQ0tfV1JJVEVTT0NLKEZJUlNUU09DS0VUKTsKLQotICByZXR1cm4gYml0bWFwOwotfQotCi0vKiBHZW5lcmljIGZ1bmN0aW9uIGNhbGxlZCBieSB0aGUgbXVsdGkgaW50ZXJmYWNlIHRvIGZpZ3VyZSBvdXQgd2hhdCBzb2NrZXQocykKLSAgIHRvIHdhaXQgZm9yIGFuZCBmb3Igd2hhdCBhY3Rpb25zIGR1cmluZyB0aGUgRE9JTkcgYW5kIFBST1RPQ09OTkVDVCBzdGF0ZXMqLwotc3RhdGljIGludCBteXNzaF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrLCAgLyogcG9pbnRzIHRvIG51bXNvY2tzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygc29ja2V0cyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKLXsKLSAgLyogaWYgd2Uga25vdyB0aGUgZGlyZWN0aW9uIHdlIGNhbiB1c2UgdGhlIGdlbmVyaWMgKl9nZXRzb2NrKCkgZnVuY3Rpb24gZXZlbgotICAgICBmb3IgdGhlIHByb3RvY29sX2Nvbm5lY3QgYW5kIGRvaW5nIHN0YXRlcyAqLwotICByZXR1cm4gbXlzc2hfcGVyZm9ybV9nZXRzb2NrKGNvbm4sIHNvY2ssIG51bXNvY2tzKTsKLX0KLQotc3RhdGljIHZvaWQgbXlzc2hfYmxvY2syd2FpdGZvcihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgYmxvY2spCi17Ci0gIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOwotCi0gIC8qIElmIGl0IGRpZG4ndCBibG9jaywgb3Igbm90aGluZyB3YXMgcmV0dXJuZWQgYnkgc3NoX2dldF9wb2xsX2ZsYWdzCi0gICAqIGhhdmUgdGhlIG9yaWdpbmFsIHNldCAqLwotICBjb25uLT53YWl0Zm9yID0gc3NoYy0+b3JpZ193YWl0Zm9yOwotCi0gIGlmKGJsb2NrKSB7Ci0gICAgaW50IGRpciA9IHNzaF9nZXRfcG9sbF9mbGFncyhzc2hjLT5zc2hfc2Vzc2lvbik7Ci0gICAgaWYoZGlyICYgU1NIX1JFQURfUEVORElORykgewotICAgICAgLyogdHJhbnNsYXRlIHRoZSBsaWJzc2ggZGVmaW5lIGJpdHMgaW50byBvdXIgb3duIGJpdCBkZWZpbmVzICovCi0gICAgICBjb25uLT53YWl0Zm9yID0gS0VFUF9SRUNWOwotICAgIH0KLSAgICBlbHNlIGlmKGRpciAmIFNTSF9XUklURV9QRU5ESU5HKSB7Ci0gICAgICBjb25uLT53YWl0Zm9yID0gS0VFUF9TRU5EOwotICAgIH0KLSAgfQotfQotCi0vKiBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBkb25lIGZyb20gbXVsdGkuYyAqLwotc3RhdGljIENVUkxjb2RlIG15c3NoX211bHRpX3N0YXRlbWFjaChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvbmUpCi17Ci0gIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOwotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgYm9vbCBibG9jazsgICAgLyogd2Ugc3RvcmUgdGhlIHN0YXR1cyBhbmQgdXNlIHRoYXQgdG8gcHJvdmlkZSBhIHNzaF9nZXRzb2NrKCkKLSAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gKi8KLQotICByZXN1bHQgPSBteXNzaF9zdGF0ZW1hY2hfYWN0KGNvbm4sICZibG9jayk7Ci0gICpkb25lID0gKHNzaGMtPnN0YXRlID09IFNTSF9TVE9QKSA/IFRSVUUgOiBGQUxTRTsKLSAgbXlzc2hfYmxvY2syd2FpdGZvcihjb25uLCBibG9jayk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIENVUkxjb2RlIG15c3NoX2Jsb2NrX3N0YXRlbWFjaChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGlzY29ubmVjdCkKLXsKLSAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLQotICB3aGlsZSgoc3NoYy0+c3RhdGUgIT0gU1NIX1NUT1ApICYmICFyZXN1bHQpIHsKLSAgICBib29sIGJsb2NrOwotICAgIHRpbWVkaWZmX3QgbGVmdCA9IDEwMDA7Ci0gICAgc3RydWN0IGN1cmx0aW1lIG5vdyA9IEN1cmxfbm93KCk7Ci0KLSAgICByZXN1bHQgPSBteXNzaF9zdGF0ZW1hY2hfYWN0KGNvbm4sICZibG9jayk7Ci0gICAgaWYocmVzdWx0KQotICAgICAgYnJlYWs7Ci0KLSAgICBpZighZGlzY29ubmVjdCkgewotICAgICAgaWYoQ3VybF9wZ3JzVXBkYXRlKGNvbm4pKQotICAgICAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKLQotICAgICAgcmVzdWx0ID0gQ3VybF9zcGVlZGNoZWNrKGRhdGEsIG5vdyk7Ci0gICAgICBpZihyZXN1bHQpCi0gICAgICAgIGJyZWFrOwotCi0gICAgICBsZWZ0ID0gQ3VybF90aW1lbGVmdChkYXRhLCBOVUxMLCBGQUxTRSk7Ci0gICAgICBpZihsZWZ0IDwgMCkgewotICAgICAgICBmYWlsZihkYXRhLCAiT3BlcmF0aW9uIHRpbWVkIG91dCIpOwotICAgICAgICByZXR1cm4gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOwotICAgICAgfQotICAgIH0KLQotICAgIGlmKCFyZXN1bHQgJiYgYmxvY2spIHsKLSAgICAgIGN1cmxfc29ja2V0X3QgZmRfcmVhZCA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOwotICAgICAgLyogd2FpdCBmb3IgdGhlIHNvY2tldCB0byBiZWNvbWUgcmVhZHkgKi8KLSAgICAgICh2b2lkKSBDdXJsX3NvY2tldF9jaGVjayhmZF9yZWFkLCBDVVJMX1NPQ0tFVF9CQUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTF9TT0NLRVRfQkFELCBsZWZ0ID4gMTAwMCA/IDEwMDAgOiBsZWZ0KTsKLSAgICB9Ci0KLSAgfQotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qCi0gKiBTU0ggc2V0dXAgY29ubmVjdGlvbgotICovCi1zdGF0aWMgQ1VSTGNvZGUgbXlzc2hfc2V0dXBfY29ubmVjdGlvbihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCi17Ci0gIHN0cnVjdCBTU0hQUk9UTyAqc3NoOwotCi0gIGNvbm4tPmRhdGEtPnJlcS5wcm90b3AgPSBzc2ggPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBTU0hQUk9UTykpOwotICBpZighc3NoKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIHJldHVybiBDVVJMRV9PSzsKLX0KLQotc3RhdGljIEN1cmxfcmVjdiBzY3BfcmVjdiwgc2Z0cF9yZWN2Owotc3RhdGljIEN1cmxfc2VuZCBzY3Bfc2VuZCwgc2Z0cF9zZW5kOwotCi0vKgotICogQ3VybF9zc2hfY29ubmVjdCgpIGdldHMgY2FsbGVkIGZyb20gQ3VybF9wcm90b2NvbF9jb25uZWN0KCkgdG8gYWxsb3cgdXMgdG8KLSAqIGRvIHByb3RvY29sLXNwZWNpZmljIGFjdGlvbnMgYXQgY29ubmVjdC10aW1lLgotICovCi1zdGF0aWMgQ1VSTGNvZGUgbXlzc2hfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCi17Ci0gIHN0cnVjdCBzc2hfY29ubiAqc3NoOwotICBDVVJMY29kZSByZXN1bHQ7Ci0gIGN1cmxfc29ja2V0X3Qgc29jayA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOwotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLQotICAvKiBpbml0aWFsaXplIHBlci1oYW5kbGUgZGF0YSBpZiBub3QgYWxyZWFkeSAqLwotICBpZighZGF0YS0+cmVxLnByb3RvcCkKLSAgICBteXNzaF9zZXR1cF9jb25uZWN0aW9uKGNvbm4pOwotCi0gIC8qIFdlIGRlZmF1bHQgdG8gcGVyc2lzdGVudCBjb25uZWN0aW9ucy4gV2Ugc2V0IHRoaXMgYWxyZWFkeSBpbiB0aGlzIGNvbm5lY3QKLSAgICAgZnVuY3Rpb24gdG8gbWFrZSB0aGUgcmUtdXNlIGNoZWNrcyBwcm9wZXJseSBiZSBhYmxlIHRvIGNoZWNrIHRoaXMgYml0LiAqLwotICBjb25ua2VlcChjb25uLCAiU1NIIGRlZmF1bHQiKTsKLQotICBpZihjb25uLT5oYW5kbGVyLT5wcm90b2NvbCAmIENVUkxQUk9UT19TQ1ApIHsKLSAgICBjb25uLT5yZWN2W0ZJUlNUU09DS0VUXSA9IHNjcF9yZWN2OwotICAgIGNvbm4tPnNlbmRbRklSU1RTT0NLRVRdID0gc2NwX3NlbmQ7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgY29ubi0+cmVjdltGSVJTVFNPQ0tFVF0gPSBzZnRwX3JlY3Y7Ci0gICAgY29ubi0+c2VuZFtGSVJTVFNPQ0tFVF0gPSBzZnRwX3NlbmQ7Ci0gIH0KLQotICBzc2ggPSAmY29ubi0+cHJvdG8uc3NoYzsKLQotICBzc2gtPnNzaF9zZXNzaW9uID0gc3NoX25ldygpOwotICBpZihzc2gtPnNzaF9zZXNzaW9uID09IE5VTEwpIHsKLSAgICBmYWlsZihkYXRhLCAiRmFpbHVyZSBpbml0aWFsaXNpbmcgc3NoIHNlc3Npb24iKTsKLSAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7Ci0gIH0KLQotICBzc2hfb3B0aW9uc19zZXQoc3NoLT5zc2hfc2Vzc2lvbiwgU1NIX09QVElPTlNfRkQsICZzb2NrKTsKLQotICBpZihjb25uLT51c2VyKSB7Ci0gICAgaW5mb2YoZGF0YSwgIlVzZXI6ICVzXG4iLCBjb25uLT51c2VyKTsKLSAgICBzc2hfb3B0aW9uc19zZXQoc3NoLT5zc2hfc2Vzc2lvbiwgU1NIX09QVElPTlNfVVNFUiwgY29ubi0+dXNlcik7Ci0gIH0KLQotICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pIHsKLSAgICBpbmZvZihkYXRhLCAiS25vd24gaG9zdHM6ICVzXG4iLCBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pOwotICAgIHNzaF9vcHRpb25zX3NldChzc2gtPnNzaF9zZXNzaW9uLCBTU0hfT1BUSU9OU19LTk9XTkhPU1RTLAotICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pOwotICB9Ci0KLSAgc3NoX29wdGlvbnNfc2V0KHNzaC0+c3NoX3Nlc3Npb24sIFNTSF9PUFRJT05TX0hPU1QsIGNvbm4tPmhvc3QubmFtZSk7Ci0gIGlmKGNvbm4tPnJlbW90ZV9wb3J0KQotICAgIHNzaF9vcHRpb25zX3NldChzc2gtPnNzaF9zZXNzaW9uLCBTU0hfT1BUSU9OU19QT1JULAotICAgICAgICAgICAgICAgICAgICAmY29ubi0+cmVtb3RlX3BvcnQpOwotCi0gIGlmKGRhdGEtPnNldC5zc2hfY29tcHJlc3Npb24pIHsKLSAgICBzc2hfb3B0aW9uc19zZXQoc3NoLT5zc2hfc2Vzc2lvbiwgU1NIX09QVElPTlNfQ09NUFJFU1NJT04sCi0gICAgICAgICAgICAgICAgICAgICJ6bGliLHpsaWJAb3BlbnNzaC5jb20sbm9uZSIpOwotICB9Ci0KLSAgc3NoLT5wcml2a2V5ID0gTlVMTDsKLSAgc3NoLT5wdWJrZXkgPSBOVUxMOwotCi0gIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9QVUJMSUNfS0VZXSkgewotICAgIGludCByYyA9IHNzaF9wa2lfaW1wb3J0X3B1YmtleV9maWxlKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9QVUJMSUNfS0VZXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3NoLT5wdWJrZXkpOwotICAgIGlmKHJjICE9IFNTSF9PSykgewotICAgICAgZmFpbGYoZGF0YSwgIkNvdWxkIG5vdCBsb2FkIHB1YmxpYyBrZXkgZmlsZSIpOwotICAgICAgLyogaWdub3JlICovCi0gICAgfQotICB9Ci0KLSAgLyogd2UgZG8gbm90IHZlcmlmeSBoZXJlLCB3ZSBkbyBpdCBhdCB0aGUgc3RhdGUgbWFjaGluZSwKLSAgICogYWZ0ZXIgY29ubmVjdGlvbiAqLwotCi0gIHN0YXRlKGNvbm4sIFNTSF9JTklUKTsKLQotICByZXN1bHQgPSBteXNzaF9tdWx0aV9zdGF0ZW1hY2goY29ubiwgZG9uZSk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogY2FsbGVkIGZyb20gbXVsdGkuYyB3aGlsZSBET2luZyAqLwotc3RhdGljIENVUkxjb2RlIHNjcF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvcGhhc2VfZG9uZSkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0OwotCi0gIHJlc3VsdCA9IG15c3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOwotCi0gIGlmKCpkb3BoYXNlX2RvbmUpIHsKLSAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqIHNjcF9wZXJmb3JtKCkKLSAqCi0gKiBUaGlzIGlzIHRoZSBhY3R1YWwgRE8gZnVuY3Rpb24gZm9yIFNDUC4gR2V0IGEgZmlsZSBhY2NvcmRpbmcgdG8KLSAqIHRoZSBvcHRpb25zIHByZXZpb3VzbHkgc2V0dXAuCi0gKi8KLQotc3RhdGljCi1DVVJMY29kZSBzY3BfcGVyZm9ybShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICBib29sICpjb25uZWN0ZWQsIGJvb2wgKmRvcGhhc2VfZG9uZSkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0KLSAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJETyBwaGFzZSBzdGFydHNcbiIpKTsKLQotICAqZG9waGFzZV9kb25lID0gRkFMU0U7ICAgICAgICAvKiBub3QgZG9uZSB5ZXQgKi8KLQotICAvKiBzdGFydCB0aGUgZmlyc3QgY29tbWFuZCBpbiB0aGUgRE8gcGhhc2UgKi8KLSAgc3RhdGUoY29ubiwgU1NIX1NDUF9UUkFOU19JTklUKTsKLQotICByZXN1bHQgPSBteXNzaF9tdWx0aV9zdGF0ZW1hY2goY29ubiwgZG9waGFzZV9kb25lKTsKLQotICAqY29ubmVjdGVkID0gY29ubi0+Yml0cy50Y3Bjb25uZWN0W0ZJUlNUU09DS0VUXTsKLQotICBpZigqZG9waGFzZV9kb25lKSB7Ci0gICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJETyBwaGFzZSBpcyBjb21wbGV0ZVxuIikpOwotICB9Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIENVUkxjb2RlIG15c3NoX2RvX2l0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0OwotICBib29sIGNvbm5lY3RlZCA9IDA7Ci0gIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwotICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKLQotICAqZG9uZSA9IEZBTFNFOyAgICAgICAgICAgICAgICAvKiBkZWZhdWx0IHRvIGZhbHNlICovCi0KLSAgZGF0YS0+cmVxLnNpemUgPSAtMTsgICAgICAgICAgLyogbWFrZSBzdXJlIHRoaXMgaXMgdW5rbm93biBhdCB0aGlzIHBvaW50ICovCi0KLSAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09LOyAgLyogcmVzZXQgZXJyb3IgY29kZSAqLwotICBzc2hjLT5zZWNvbmRDcmVhdGVEaXJzID0gMDsgICAvKiByZXNldCB0aGUgY3JlYXRlIGRpciBhdHRlbXB0IHN0YXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlICovCi0KLSAgQ3VybF9wZ3JzU2V0VXBsb2FkQ291bnRlcihkYXRhLCAwKTsKLSAgQ3VybF9wZ3JzU2V0RG93bmxvYWRDb3VudGVyKGRhdGEsIDApOwotICBDdXJsX3BncnNTZXRVcGxvYWRTaXplKGRhdGEsIC0xKTsKLSAgQ3VybF9wZ3JzU2V0RG93bmxvYWRTaXplKGRhdGEsIC0xKTsKLQotICBpZihjb25uLT5oYW5kbGVyLT5wcm90b2NvbCAmIENVUkxQUk9UT19TQ1ApCi0gICAgcmVzdWx0ID0gc2NwX3BlcmZvcm0oY29ubiwgJmNvbm5lY3RlZCwgZG9uZSk7Ci0gIGVsc2UKLSAgICByZXN1bHQgPSBzZnRwX3BlcmZvcm0oY29ubiwgJmNvbm5lY3RlZCwgZG9uZSk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogQkxPQ0tJTkcsIGJ1dCB0aGUgZnVuY3Rpb24gaXMgdXNpbmcgdGhlIHN0YXRlIG1hY2hpbmUgc28gdGhlIG9ubHkgcmVhc29uCi0gICB0aGlzIGlzIHN0aWxsIGJsb2NraW5nIGlzIHRoYXQgdGhlIG11bHRpIGludGVyZmFjZSBjb2RlIGhhcyBubyBzdXBwb3J0IGZvcgotICAgZGlzY29ubmVjdGluZyBvcGVyYXRpb25zIHRoYXQgdGFrZXMgYSB3aGlsZSAqLwotc3RhdGljIENVUkxjb2RlIHNjcF9kaXNjb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlYWRfY29ubmVjdGlvbikKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIHN0cnVjdCBzc2hfY29ubiAqc3NoID0gJmNvbm4tPnByb3RvLnNzaGM7Ci0gICh2b2lkKSBkZWFkX2Nvbm5lY3Rpb247Ci0KLSAgaWYoc3NoLT5zc2hfc2Vzc2lvbikgewotICAgIC8qIG9ubHkgaWYgdGhlcmUncyBhIHNlc3Npb24gc3RpbGwgYXJvdW5kIHRvIHVzZSEgKi8KLQotICAgIHN0YXRlKGNvbm4sIFNTSF9TRVNTSU9OX0RJU0NPTk5FQ1QpOwotCi0gICAgcmVzdWx0ID0gbXlzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIFRSVUUpOwotICB9Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogZ2VuZXJpYyBkb25lIGZ1bmN0aW9uIGZvciBib3RoIFNDUCBhbmQgU0ZUUCBjYWxsZWQgZnJvbSB0aGVpciBzcGVjaWZpYwotICAgZG9uZSBmdW5jdGlvbnMgKi8KLXN0YXRpYyBDVVJMY29kZSBteXNzaF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgQ1VSTGNvZGUgc3RhdHVzKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgc3RydWN0IFNTSFBST1RPICpwcm90b3AgPSBjb25uLT5kYXRhLT5yZXEucHJvdG9wOwotCi0gIGlmKCFzdGF0dXMpIHsKLSAgICAvKiBydW4gdGhlIHN0YXRlLW1hY2hpbmUgKi8KLSAgICByZXN1bHQgPSBteXNzaF9ibG9ja19zdGF0ZW1hY2goY29ubiwgRkFMU0UpOwotICB9Ci0gIGVsc2UKLSAgICByZXN1bHQgPSBzdGF0dXM7Ci0KLSAgaWYocHJvdG9wKQotICAgIEN1cmxfc2FmZWZyZWUocHJvdG9wLT5wYXRoKTsKLSAgaWYoQ3VybF9wZ3JzRG9uZShjb25uKSkKLSAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKLQotICBjb25uLT5kYXRhLT5yZXEua2VlcG9uID0gMDsgICAvKiBjbGVhciBhbGwgYml0cyAqLwotICByZXR1cm4gcmVzdWx0OwotfQotCi0KLXN0YXRpYyBDVVJMY29kZSBzY3BfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIENVUkxjb2RlIHN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW1hdHVyZSkKLXsKLSAgKHZvaWQpIHByZW1hdHVyZTsgICAgICAgICAgICAgLyogbm90IHVzZWQgKi8KLQotICBpZighc3RhdHVzKQotICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfRE9ORSk7Ci0KLSAgcmV0dXJuIG15c3NoX2RvbmUoY29ubiwgc3RhdHVzKTsKLQotfQotCi1zdGF0aWMgc3NpemVfdCBzY3Bfc2VuZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICptZW0sIHNpemVfdCBsZW4sIENVUkxjb2RlICplcnIpCi17Ci0gIGludCByYzsKLSAgKHZvaWQpIHNvY2tpbmRleDsgLyogd2Ugb25seSBzdXBwb3J0IFNDUCBvbiB0aGUgZml4ZWQga25vd24gcHJpbWFyeSBzb2NrZXQgKi8KLSAgKHZvaWQpIGVycjsKLQotICByYyA9IHNzaF9zY3Bfd3JpdGUoY29ubi0+cHJvdG8uc3NoYy5zY3Bfc2Vzc2lvbiwgbWVtLCBsZW4pOwotCi0jaWYgMAotICAvKiBUaGUgZm9sbG93aW5nIGNvZGUgaXMgbWlzbGVhZGluZywgbW9zdGx5IGFkZGVkIGFzIHdpc2hmdWwgdGhpbmtpbmcKLSAgICogdGhhdCBsaWJzc2ggYXQgc29tZSBwb2ludCB3aWxsIGltcGxlbWVudCBub24tYmxvY2tpbmcgc3NoX3NjcF93cml0ZS9yZWFkLgotICAgKiBDdXJyZW50bHkgcmMgY2FuIG9ubHkgYmUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgb3IgU1NIX0VSUk9SLiAqLwotICBteXNzaF9ibG9jazJ3YWl0Zm9yKGNvbm4sIChyYyA9PSBTU0hfQUdBSU4pID8gVFJVRSA6IEZBTFNFKTsKLQotICBpZihyYyA9PSBTU0hfQUdBSU4pIHsKLSAgICAqZXJyID0gQ1VSTEVfQUdBSU47Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgZWxzZQotI2VuZGlmCi0gIGlmKHJjICE9IFNTSF9PSykgewotICAgICplcnIgPSBDVVJMRV9TU0g7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0KLSAgcmV0dXJuIGxlbjsKLX0KLQotc3RhdGljIHNzaXplX3Qgc2NwX3JlY3Yoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbWVtLCBzaXplX3QgbGVuLCBDVVJMY29kZSAqZXJyKQotewotICBzc2l6ZV90IG5yZWFkOwotICAodm9pZCkgZXJyOwotICAodm9pZCkgc29ja2luZGV4OyAvKiB3ZSBvbmx5IHN1cHBvcnQgU0NQIG9uIHRoZSBmaXhlZCBrbm93biBwcmltYXJ5IHNvY2tldCAqLwotCi0gIC8qIGxpYnNzaCByZXR1cm5zIGludCAqLwotICBucmVhZCA9IHNzaF9zY3BfcmVhZChjb25uLT5wcm90by5zc2hjLnNjcF9zZXNzaW9uLCBtZW0sIGxlbik7Ci0KLSNpZiAwCi0gIC8qIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBtaXNsZWFkaW5nLCBtb3N0bHkgYWRkZWQgYXMgd2lzaGZ1bCB0aGlua2luZwotICAgKiB0aGF0IGxpYnNzaCBhdCBzb21lIHBvaW50IHdpbGwgaW1wbGVtZW50IG5vbi1ibG9ja2luZyBzc2hfc2NwX3dyaXRlL3JlYWQuCi0gICAqIEN1cnJlbnRseSByYyBjYW4gb25seSBiZSBTU0hfT0sgb3IgU1NIX0VSUk9SLiAqLwotCi0gIG15c3NoX2Jsb2NrMndhaXRmb3IoY29ubiwgKG5yZWFkID09IFNTSF9BR0FJTikgPyBUUlVFIDogRkFMU0UpOwotICBpZihucmVhZCA9PSBTU0hfQUdBSU4pIHsKLSAgICAqZXJyID0gQ1VSTEVfQUdBSU47Ci0gICAgbnJlYWQgPSAtMTsKLSAgfQotI2VuZGlmCi0KLSAgcmV0dXJuIG5yZWFkOwotfQotCi0vKgotICogPT09PT09PT09PT09PT09IFNGVFAgPT09PT09PT09PT09PT09Ci0gKi8KLQotLyoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqIHNmdHBfcGVyZm9ybSgpCi0gKgotICogVGhpcyBpcyB0aGUgYWN0dWFsIERPIGZ1bmN0aW9uIGZvciBTRlRQLiBHZXQgYSBmaWxlL2RpcmVjdG9yeSBhY2NvcmRpbmcgdG8KLSAqIHRoZSBvcHRpb25zIHByZXZpb3VzbHkgc2V0dXAuCi0gKi8KLQotc3RhdGljCi1DVVJMY29kZSBzZnRwX3BlcmZvcm0oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNvbm5lY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpCi17Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotCi0gIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiRE8gcGhhc2Ugc3RhcnRzXG4iKSk7Ci0KLSAgKmRvcGhhc2VfZG9uZSA9IEZBTFNFOyAvKiBub3QgZG9uZSB5ZXQgKi8KLQotICAvKiBzdGFydCB0aGUgZmlyc3QgY29tbWFuZCBpbiB0aGUgRE8gcGhhc2UgKi8KLSAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfSU5JVCk7Ci0KLSAgLyogcnVuIHRoZSBzdGF0ZS1tYWNoaW5lICovCi0gIHJlc3VsdCA9IG15c3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOwotCi0gICpjb25uZWN0ZWQgPSBjb25uLT5iaXRzLnRjcGNvbm5lY3RbRklSU1RTT0NLRVRdOwotCi0gIGlmKCpkb3BoYXNlX2RvbmUpIHsKLSAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7Ci0gIH0KLQotICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBjYWxsZWQgZnJvbSBtdWx0aS5jIHdoaWxlIERPaW5nICovCi1zdGF0aWMgQ1VSTGNvZGUgc2Z0cF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpCi17Ci0gIENVUkxjb2RlIHJlc3VsdCA9IG15c3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOwotICBpZigqZG9waGFzZV9kb25lKSB7Ci0gICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJETyBwaGFzZSBpcyBjb21wbGV0ZVxuIikpOwotICB9Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEJMT0NLSU5HLCBidXQgdGhlIGZ1bmN0aW9uIGlzIHVzaW5nIHRoZSBzdGF0ZSBtYWNoaW5lIHNvIHRoZSBvbmx5IHJlYXNvbgotICAgdGhpcyBpcyBzdGlsbCBibG9ja2luZyBpcyB0aGF0IHRoZSBtdWx0aSBpbnRlcmZhY2UgY29kZSBoYXMgbm8gc3VwcG9ydCBmb3IKLSAgIGRpc2Nvbm5lY3Rpbmcgb3BlcmF0aW9ucyB0aGF0IHRha2VzIGEgd2hpbGUgKi8KLXN0YXRpYyBDVVJMY29kZSBzZnRwX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sIGRlYWRfY29ubmVjdGlvbikKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gICh2b2lkKSBkZWFkX2Nvbm5lY3Rpb247Ci0KLSAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJTU0ggRElTQ09OTkVDVCBzdGFydHMgbm93XG4iKSk7Ci0KLSAgaWYoY29ubi0+cHJvdG8uc3NoYy5zc2hfc2Vzc2lvbikgewotICAgIC8qIG9ubHkgaWYgdGhlcmUncyBhIHNlc3Npb24gc3RpbGwgYXJvdW5kIHRvIHVzZSEgKi8KLSAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9TSFVURE9XTik7Ci0gICAgcmVzdWx0ID0gbXlzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIFRSVUUpOwotICB9Ci0KLSAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJTU0ggRElTQ09OTkVDVCBpcyBkb25lXG4iKSk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLQotfQotCi1zdGF0aWMgQ1VSTGNvZGUgc2Z0cF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgQ1VSTGNvZGUgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbWF0dXJlKQotewotICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKLQotICBpZighc3RhdHVzKSB7Ci0gICAgLyogUG9zdCBxdW90ZSBjb21tYW5kcyBhcmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIFNGVFBfQ0xPU0Ugc3RhdGUgdG8gYXZvaWQKLSAgICAgICBlcnJvcnMgdGhhdCBjb3VsZCBoYXBwZW4gZHVlIHRvIG9wZW4gZmlsZSBoYW5kbGVzIGR1cmluZyBQT1NUUVVPVEUKLSAgICAgICBvcGVyYXRpb24gKi8KLSAgICBpZighcHJlbWF0dXJlICYmIGNvbm4tPmRhdGEtPnNldC5wb3N0cXVvdGUgJiYgIWNvbm4tPmJpdHMucmV0cnkpCi0gICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfU0ZUUF9QT1NUUVVPVEVfSU5JVDsKLSAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gIH0KLSAgcmV0dXJuIG15c3NoX2RvbmUoY29ubiwgc3RhdHVzKTsKLX0KLQotLyogcmV0dXJuIG51bWJlciBvZiBzZW50IGJ5dGVzICovCi1zdGF0aWMgc3NpemVfdCBzZnRwX3NlbmQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKm1lbSwgc2l6ZV90IGxlbiwgQ1VSTGNvZGUgKmVycikKLXsKLSAgc3NpemVfdCBud3JpdGU7Ci0gICh2b2lkKXNvY2tpbmRleDsKLQotICBud3JpdGUgPSBzZnRwX3dyaXRlKGNvbm4tPnByb3RvLnNzaGMuc2Z0cF9maWxlLCBtZW0sIGxlbik7Ci0KLSAgbXlzc2hfYmxvY2syd2FpdGZvcihjb25uLCBGQUxTRSk7Ci0KLSNpZiAwIC8qIG5vdCByZXR1cm5lZCBieSBsaWJzc2ggb24gd3JpdGUgKi8KLSAgaWYobndyaXRlID09IFNTSF9BR0FJTikgewotICAgICplcnIgPSBDVVJMRV9BR0FJTjsKLSAgICBud3JpdGUgPSAwOwotICB9Ci0gIGVsc2UKLSNlbmRpZgotICBpZihud3JpdGUgPCAwKSB7Ci0gICAgKmVyciA9IENVUkxFX1NTSDsKLSAgICBud3JpdGUgPSAtMTsKLSAgfQotCi0gIHJldHVybiBud3JpdGU7Ci19Ci0KLS8qCi0gKiBSZXR1cm4gbnVtYmVyIG9mIHJlY2VpdmVkIChkZWNyeXB0ZWQpIGJ5dGVzCi0gKiBvciA8MCBvbiBlcnJvcgotICovCi1zdGF0aWMgc3NpemVfdCBzZnRwX3JlY3Yoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm1lbSwgc2l6ZV90IGxlbiwgQ1VSTGNvZGUgKmVycikKLXsKLSAgc3NpemVfdCBucmVhZDsKLSAgKHZvaWQpc29ja2luZGV4OwotCi0gIERFQlVHQVNTRVJUKGxlbiA8IENVUkxfTUFYX1JFQURfU0laRSk7Ci0KLSAgc3dpdGNoKGNvbm4tPnByb3RvLnNzaGMuc2Z0cF9yZWN2X3N0YXRlKSB7Ci0gICAgY2FzZSAwOgotICAgICAgY29ubi0+cHJvdG8uc3NoYy5zZnRwX2ZpbGVfaW5kZXggPQotICAgICAgICAgICAgc2Z0cF9hc3luY19yZWFkX2JlZ2luKGNvbm4tPnByb3RvLnNzaGMuc2Z0cF9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdClsZW4pOwotICAgICAgaWYoY29ubi0+cHJvdG8uc3NoYy5zZnRwX2ZpbGVfaW5kZXggPCAwKSB7Ci0gICAgICAgICplcnIgPSBDVVJMRV9SRUNWX0VSUk9SOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgICB9Ci0KLSAgICAgIC8qIEZBTExUSFJPVUdIICovCi0gICAgY2FzZSAxOgotICAgICAgY29ubi0+cHJvdG8uc3NoYy5zZnRwX3JlY3Zfc3RhdGUgPSAxOwotCi0gICAgICBucmVhZCA9IHNmdHBfYXN5bmNfcmVhZChjb25uLT5wcm90by5zc2hjLnNmdHBfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbSwgKHVpbnQzMl90KWxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnByb3RvLnNzaGMuc2Z0cF9maWxlX2luZGV4KTsKLQotICAgICAgbXlzc2hfYmxvY2syd2FpdGZvcihjb25uLCAobnJlYWQgPT0gU1NIX0FHQUlOKT9UUlVFOkZBTFNFKTsKLQotICAgICAgaWYobnJlYWQgPT0gU1NIX0FHQUlOKSB7Ci0gICAgICAgICplcnIgPSBDVVJMRV9BR0FJTjsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICAgfQotICAgICAgZWxzZSBpZihucmVhZCA8IDApIHsKLSAgICAgICAgKmVyciA9IENVUkxFX1JFQ1ZfRVJST1I7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICAgIH0KLQotICAgICAgY29ubi0+cHJvdG8uc3NoYy5zZnRwX3JlY3Zfc3RhdGUgPSAwOwotICAgICAgcmV0dXJuIG5yZWFkOwotCi0gICAgZGVmYXVsdDoKLSAgICAgIC8qIHdlIG5ldmVyIHJlYWNoIGhlcmUgKi8KLSAgICAgIHJldHVybiAtMTsKLSAgfQotfQotCi1zdGF0aWMgdm9pZCBzZnRwX3F1b3RlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKLXsKLSAgY29uc3QgY2hhciAqY3A7Ci0gIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwotICBzdHJ1Y3QgU1NIUFJPVE8gKnByb3RvcCA9IGRhdGEtPnJlcS5wcm90b3A7Ci0gIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOwotICBDVVJMY29kZSByZXN1bHQ7Ci0KLSAgLyoKLSAgICogU3VwcG9ydCBzb21lIG9mIHRoZSAiRlRQIiBjb21tYW5kcwotICAgKi8KLSAgY2hhciAqY21kID0gc3NoYy0+cXVvdGVfaXRlbS0+ZGF0YTsKLSAgc3NoYy0+YWNjZXB0ZmFpbCA9IEZBTFNFOwotCi0gIC8qIGlmIGEgY29tbWFuZCBzdGFydHMgd2l0aCBhbiBhc3Rlcmlzaywgd2hpY2ggYSBsZWdhbCBTRlRQIGNvbW1hbmQgbmV2ZXIKLSAgICAgY2FuLCB0aGUgY29tbWFuZCB3aWxsIGJlIGFsbG93ZWQgdG8gZmFpbCB3aXRob3V0IGl0IGNhdXNpbmcgYW55Ci0gICAgIGFib3J0cyBvciBjYW5jZWxzIGV0Yy4gSXQgd2lsbCBjYXVzZSBsaWJjdXJsIHRvIGFjdCBhcyBpZiB0aGUgY29tbWFuZAotICAgICBpcyBzdWNjZXNzZnVsLCB3aGF0ZXZlciB0aGUgc2VydmVyIHJlcG9uZHMuICovCi0KLSAgaWYoY21kWzBdID09ICcqJykgewotICAgIGNtZCsrOwotICAgIHNzaGMtPmFjY2VwdGZhaWwgPSBUUlVFOwotICB9Ci0KLSAgaWYoc3RyY2FzZWNvbXBhcmUoInB3ZCIsIGNtZCkpIHsKLSAgICAvKiBvdXRwdXQgZGVidWcgb3V0cHV0IGlmIHRoYXQgaXMgcmVxdWVzdGVkICovCi0gICAgY2hhciAqdG1wID0gYXByaW50ZigiMjU3IFwiJXNcIiBpcyBjdXJyZW50IGRpcmVjdG9yeS5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm90b3AtPnBhdGgpOwotICAgIGlmKCF0bXApIHsKLSAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZihkYXRhLT5zZXQudmVyYm9zZSkgewotICAgICAgQ3VybF9kZWJ1ZyhkYXRhLCBDVVJMSU5GT19IRUFERVJfT1VULCAoY2hhciAqKSAiUFdEXG4iLCA0KTsKLSAgICAgIEN1cmxfZGVidWcoZGF0YSwgQ1VSTElORk9fSEVBREVSX0lOLCB0bXAsIHN0cmxlbih0bXApKTsKLSAgICB9Ci0gICAgLyogdGhpcyBzZW5kcyBhbiBGVFAtbGlrZSAiaGVhZGVyIiB0byB0aGUgaGVhZGVyIGNhbGxiYWNrIHNvIHRoYXQgdGhlCi0gICAgICAgY3VycmVudCBkaXJlY3RvcnkgY2FuIGJlIHJlYWQgdmVyeSBzaW1pbGFyIHRvIGhvdyBpdCBpcyByZWFkIHdoZW4KLSAgICAgICB1c2luZyBvcmRpbmFyeSBGVFAuICovCi0gICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfSEVBREVSLCB0bXAsIHN0cmxlbih0bXApKTsKLSAgICBmcmVlKHRtcCk7Ci0gICAgaWYocmVzdWx0KSB7Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OwotICAgIH0KLSAgICBlbHNlCi0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICAvKgotICAgKiB0aGUgYXJndW1lbnRzIGZvbGxvd2luZyB0aGUgY29tbWFuZCBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZQotICAgKiBjb21tYW5kIHdpdGggYSBzcGFjZSBzbyB3ZSBjYW4gY2hlY2sgZm9yIGl0IHVuY29uZGl0aW9uYWxseQotICAgKi8KLSAgY3AgPSBzdHJjaHIoY21kLCAnICcpOwotICBpZihjcCA9PSBOVUxMKSB7Ci0gICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvciBpbiBTRlRQIGNvbW1hbmQuIFN1cHBseSBwYXJhbWV0ZXIocykhIik7Ci0gICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgLyoKLSAgICogYWxzbywgZXZlcnkgY29tbWFuZCB0YWtlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQgc28gd2UgZ2V0IHRoYXQKLSAgICogZmlyc3QgYXJndW1lbnQgcmlnaHQgbm93Ci0gICAqLwotICByZXN1bHQgPSBDdXJsX2dldF9wYXRobmFtZSgmY3AsICZzc2hjLT5xdW90ZV9wYXRoMSwgc3NoYy0+aG9tZWRpcik7Ci0gIGlmKHJlc3VsdCkgewotICAgIGlmKHJlc3VsdCA9PSBDVVJMRV9PVVRfT0ZfTUVNT1JZKQotICAgICAgZmFpbGYoZGF0YSwgIk91dCBvZiBtZW1vcnkiKTsKLSAgICBlbHNlCi0gICAgICBmYWlsZihkYXRhLCAiU3ludGF4IGVycm9yOiBCYWQgZmlyc3QgcGFyYW1ldGVyIik7Ci0gICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OwotICAgIHJldHVybjsKLSAgfQotCi0gIC8qCi0gICAqIFNGVFAgaXMgYSBiaW5hcnkgcHJvdG9jb2wsIHNvIHdlIGRvbid0IHNlbmQgdGV4dCBjb21tYW5kcwotICAgKiB0byB0aGUgc2VydmVyLiBJbnN0ZWFkLCB3ZSBzY2FuIGZvciBjb21tYW5kcyB1c2VkIGJ5Ci0gICAqIE9wZW5TU0gncyBzZnRwIHByb2dyYW0gYW5kIGNhbGwgdGhlIGFwcHJvcHJpYXRlIGxpYnNzaAotICAgKiBmdW5jdGlvbnMuCi0gICAqLwotICBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAiY2hncnAgIiwgNikgfHwKLSAgICAgc3RybmNhc2Vjb21wYXJlKGNtZCwgImNobW9kICIsIDYpIHx8Ci0gICAgIHN0cm5jYXNlY29tcGFyZShjbWQsICJjaG93biAiLCA2KSkgewotICAgIC8qIGF0dHJpYnV0ZSBjaGFuZ2UgKi8KLQotICAgIC8qIHNzaGMtPnF1b3RlX3BhdGgxIGNvbnRhaW5zIHRoZSBtb2RlIHRvIHNldCAqLwotICAgIC8qIGdldCB0aGUgZGVzdGluYXRpb24gKi8KLSAgICByZXN1bHQgPSBDdXJsX2dldF9wYXRobmFtZSgmY3AsICZzc2hjLT5xdW90ZV9wYXRoMiwgc3NoYy0+aG9tZWRpcik7Ci0gICAgaWYocmVzdWx0KSB7Ci0gICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfT1VUX09GX01FTU9SWSkKLSAgICAgICAgZmFpbGYoZGF0YSwgIk91dCBvZiBtZW1vcnkiKTsKLSAgICAgIGVsc2UKLSAgICAgICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvciBpbiBjaGdycC9jaG1vZC9jaG93bjogIgotICAgICAgICAgICAgICAiQmFkIHNlY29uZCBwYXJhbWV0ZXIiKTsKLSAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3NoYy0+cXVvdGVfYXR0cnMgPSBOVUxMOwotICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX1NUQVQpOwotICAgIHJldHVybjsKLSAgfQotICBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAibG4gIiwgMykgfHwKLSAgICAgc3RybmNhc2Vjb21wYXJlKGNtZCwgInN5bWxpbmsgIiwgOCkpIHsKLSAgICAvKiBzeW1ib2xpYyBsaW5raW5nICovCi0gICAgLyogc3NoYy0+cXVvdGVfcGF0aDEgaXMgdGhlIHNvdXJjZSAqLwotICAgIC8qIGdldCB0aGUgZGVzdGluYXRpb24gKi8KLSAgICByZXN1bHQgPSBDdXJsX2dldF9wYXRobmFtZSgmY3AsICZzc2hjLT5xdW90ZV9wYXRoMiwgc3NoYy0+aG9tZWRpcik7Ci0gICAgaWYocmVzdWx0KSB7Ci0gICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfT1VUX09GX01FTU9SWSkKLSAgICAgICAgZmFpbGYoZGF0YSwgIk91dCBvZiBtZW1vcnkiKTsKLSAgICAgIGVsc2UKLSAgICAgICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvciBpbiBsbi9zeW1saW5rOiBCYWQgc2Vjb25kIHBhcmFtZXRlciIpOwotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9TWU1MSU5LKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgZWxzZSBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAibWtkaXIgIiwgNikpIHsKLSAgICAvKiBjcmVhdGUgZGlyICovCi0gICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfTUtESVIpOwotICAgIHJldHVybjsKLSAgfQotICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJyZW5hbWUgIiwgNykpIHsKLSAgICAvKiByZW5hbWUgZmlsZSAqLwotICAgIC8qIGZpcnN0IHBhcmFtIGlzIHRoZSBzb3VyY2UgcGF0aCAqLwotICAgIC8qIHNlY29uZCBwYXJhbSBpcyB0aGUgZGVzdC4gcGF0aCAqLwotICAgIHJlc3VsdCA9IEN1cmxfZ2V0X3BhdGhuYW1lKCZjcCwgJnNzaGMtPnF1b3RlX3BhdGgyLCBzc2hjLT5ob21lZGlyKTsKLSAgICBpZihyZXN1bHQpIHsKLSAgICAgIGlmKHJlc3VsdCA9PSBDVVJMRV9PVVRfT0ZfTUVNT1JZKQotICAgICAgICBmYWlsZihkYXRhLCAiT3V0IG9mIG1lbW9yeSIpOwotICAgICAgZWxzZQotICAgICAgICBmYWlsZihkYXRhLCAiU3ludGF4IGVycm9yIGluIHJlbmFtZTogQmFkIHNlY29uZCBwYXJhbWV0ZXIiKTsKLSAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfUkVOQU1FKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgZWxzZSBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAicm1kaXIgIiwgNikpIHsKLSAgICAvKiBkZWxldGUgZGlyICovCi0gICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfUk1ESVIpOwotICAgIHJldHVybjsKLSAgfQotICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJybSAiLCAzKSkgewotICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX1VOTElOSyk7Ci0gICAgcmV0dXJuOwotICB9Ci0jaWZkZWYgSEFTX1NUQVRWRlNfU1VQUE9SVAotICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJzdGF0dmZzICIsIDgpKSB7Ci0gICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfU1RBVFZGUyk7Ci0gICAgcmV0dXJuOwotICB9Ci0jZW5kaWYKLQotICBmYWlsZihkYXRhLCAiVW5rbm93biBTRlRQIGNvbW1hbmQiKTsKLSAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7Ci0gIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOwotICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotfQotCi1zdGF0aWMgdm9pZCBzZnRwX3F1b3RlX3N0YXQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotewotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7Ci0gIGNoYXIgKmNtZCA9IHNzaGMtPnF1b3RlX2l0ZW0tPmRhdGE7Ci0gIHNzaGMtPmFjY2VwdGZhaWwgPSBGQUxTRTsKLQotICAvKiBpZiBhIGNvbW1hbmQgc3RhcnRzIHdpdGggYW4gYXN0ZXJpc2ssIHdoaWNoIGEgbGVnYWwgU0ZUUCBjb21tYW5kIG5ldmVyCi0gICAgIGNhbiwgdGhlIGNvbW1hbmQgd2lsbCBiZSBhbGxvd2VkIHRvIGZhaWwgd2l0aG91dCBpdCBjYXVzaW5nIGFueQotICAgICBhYm9ydHMgb3IgY2FuY2VscyBldGMuIEl0IHdpbGwgY2F1c2UgbGliY3VybCB0byBhY3QgYXMgaWYgdGhlIGNvbW1hbmQKLSAgICAgaXMgc3VjY2Vzc2Z1bCwgd2hhdGV2ZXIgdGhlIHNlcnZlciByZXBvbmRzLiAqLwotCi0gIGlmKGNtZFswXSA9PSAnKicpIHsKLSAgICBjbWQrKzsKLSAgICBzc2hjLT5hY2NlcHRmYWlsID0gVFJVRTsKLSAgfQotCi0gIC8qIFdlIHJlYWQgdGhlIGZpbGUgYXR0cmlidXRlcywgc3RvcmUgdGhlbSBpbiBzc2hjLT5xdW90ZV9hdHRycwotICAgKiBhbmQgbW9kaWZ5IHRoZW0gYWNjb3JkaW5nbHkgdG8gY29tbWFuZC4gVGhlbiB3ZSBzd2l0Y2ggdG8KLSAgICogUVVPVEVfU0VUU1RBVCBzdGF0ZSB0byB3cml0ZSBuZXcgb25lcy4KLSAgICovCi0KLSAgaWYoc3NoYy0+cXVvdGVfYXR0cnMpCi0gICAgc2Z0cF9hdHRyaWJ1dGVzX2ZyZWUoc3NoYy0+cXVvdGVfYXR0cnMpOwotICBzc2hjLT5xdW90ZV9hdHRycyA9IHNmdHBfc3RhdChzc2hjLT5zZnRwX3Nlc3Npb24sIHNzaGMtPnF1b3RlX3BhdGgyKTsKLSAgaWYoc3NoYy0+cXVvdGVfYXR0cnMgPT0gTlVMTCkgewotICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOwotICAgIGZhaWxmKGRhdGEsICJBdHRlbXB0IHRvIGdldCBTRlRQIHN0YXRzIGZhaWxlZDogJWQiLAotICAgICAgICAgIHNmdHBfZ2V0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbikpOwotICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgIHJldHVybjsKLSAgfQotCi0gIC8qIE5vdyBzZXQgdGhlIG5ldyBhdHRyaWJ1dGVzLi4uICovCi0gIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJjaGdycCIsIDUpKSB7Ci0gICAgc3NoYy0+cXVvdGVfYXR0cnMtPmdpZCA9ICh1aW50MzJfdClzdHJ0b3VsKHNzaGMtPnF1b3RlX3BhdGgxLCBOVUxMLCAxMCk7Ci0gICAgaWYoc3NoYy0+cXVvdGVfYXR0cnMtPmdpZCA9PSAwICYmICFJU0RJR0lUKHNzaGMtPnF1b3RlX3BhdGgxWzBdKSAmJgotICAgICAgICAhc3NoYy0+YWNjZXB0ZmFpbCkgewotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7Ci0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKLSAgICAgIGZhaWxmKGRhdGEsICJTeW50YXggZXJyb3I6IGNoZ3JwIGdpZCBub3QgYSBudW1iZXIiKTsKLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc3NoYy0+cXVvdGVfYXR0cnMtPmZsYWdzIHw9IFNTSF9GSUxFWEZFUl9BVFRSX1VJREdJRDsKLSAgfQotICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJjaG1vZCIsIDUpKSB7Ci0gICAgbW9kZV90IHBlcm1zOwotICAgIHBlcm1zID0gKG1vZGVfdClzdHJ0b3VsKHNzaGMtPnF1b3RlX3BhdGgxLCBOVUxMLCA4KTsKLSAgICAvKiBwZXJtaXNzaW9ucyBhcmUgb2N0YWwgKi8KLSAgICBpZihwZXJtcyA9PSAwICYmICFJU0RJR0lUKHNzaGMtPnF1b3RlX3BhdGgxWzBdKSkgewotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7Ci0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKLSAgICAgIGZhaWxmKGRhdGEsICJTeW50YXggZXJyb3I6IGNobW9kIHBlcm1pc3Npb25zIG5vdCBhIG51bWJlciIpOwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzc2hjLT5xdW90ZV9hdHRycy0+cGVybWlzc2lvbnMgPSBwZXJtczsKLSAgICBzc2hjLT5xdW90ZV9hdHRycy0+ZmxhZ3MgfD0gU1NIX0ZJTEVYRkVSX0FUVFJfUEVSTUlTU0lPTlM7Ci0gIH0KLSAgZWxzZSBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAiY2hvd24iLCA1KSkgewotICAgIHNzaGMtPnF1b3RlX2F0dHJzLT51aWQgPSAodWludDMyX3Qpc3RydG91bChzc2hjLT5xdW90ZV9wYXRoMSwgTlVMTCwgMTApOwotICAgIGlmKHNzaGMtPnF1b3RlX2F0dHJzLT51aWQgPT0gMCAmJiAhSVNESUdJVChzc2hjLT5xdW90ZV9wYXRoMVswXSkgJiYKLSAgICAgICAgIXNzaGMtPmFjY2VwdGZhaWwpIHsKLSAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7Ci0gICAgICBmYWlsZihkYXRhLCAiU3ludGF4IGVycm9yOiBjaG93biB1aWQgbm90IGEgbnVtYmVyIik7Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIHNzaGMtPnF1b3RlX2F0dHJzLT5mbGFncyB8PSBTU0hfRklMRVhGRVJfQVRUUl9VSURHSUQ7Ci0gIH0KLQotICAvKiBOb3cgc2VuZCB0aGUgY29tcGxldGVkIHN0cnVjdHVyZS4uLiAqLwotICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9TRVRTVEFUKTsKLSAgcmV0dXJuOwotfQotCi0KLSNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNFX0xJQlNTSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc3NoLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zc2guYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI2NWMzYy4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zc2guYworKysgL2Rldi9udWxsCkBAIC0xLDMzMzcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwotICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0gKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAotICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCi0gKgotICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCi0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiAjZGVmaW5lIENVUkxfTElCU1NIMl9ERUJVRyAqLwotCi0jaW5jbHVkZSAiY3VybF9zZXR1cC5oIgotCi0jaWZkZWYgVVNFX0xJQlNTSDIKLQotI2luY2x1ZGUgPGxpbWl0cy5oPgotCi0jaW5jbHVkZSA8bGlic3NoMi5oPgotI2luY2x1ZGUgPGxpYnNzaDJfc2Z0cC5oPgotCi0jaWZkZWYgSEFWRV9GQ05UTF9ICi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX0FSUEFfSU5FVF9ICi0jaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1VUU05BTUVfSAotI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX05FVERCX0gKLSNpbmNsdWRlIDxuZXRkYi5oPgotI2VuZGlmCi0jaWZkZWYgX19WTVMKLSNpbmNsdWRlIDxpbi5oPgotI2luY2x1ZGUgPGluZXQuaD4KLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoTkVUV0FSRSkgJiYgZGVmaW5lZChfX05PVkVMTF9MSUJDX18pKQotI3VuZGVmIGluX2FkZHJfdAotI2RlZmluZSBpbl9hZGRyX3QgdW5zaWduZWQgbG9uZwotI2VuZGlmCi0KLSNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KLSNpbmNsdWRlICJ1cmxkYXRhLmgiCi0jaW5jbHVkZSAic2VuZGYuaCIKLSNpbmNsdWRlICJob3N0aXAuaCIKLSNpbmNsdWRlICJwcm9ncmVzcy5oIgotI2luY2x1ZGUgInRyYW5zZmVyLmgiCi0jaW5jbHVkZSAiZXNjYXBlLmgiCi0jaW5jbHVkZSAiaHR0cC5oIiAvKiBmb3IgSFRUUCBwcm94eSB0dW5uZWwgc3R1ZmYgKi8KLSNpbmNsdWRlICJzc2guaCIKLSNpbmNsdWRlICJ1cmwuaCIKLSNpbmNsdWRlICJzcGVlZGNoZWNrLmgiCi0jaW5jbHVkZSAiZ2V0aW5mby5oIgotI2luY2x1ZGUgInN0cmR1cC5oIgotI2luY2x1ZGUgInN0cmNhc2UuaCIKLSNpbmNsdWRlICJ2dGxzL3Z0bHMuaCIKLSNpbmNsdWRlICJjb25uZWN0LmgiCi0jaW5jbHVkZSAic3RyZXJyb3IuaCIKLSNpbmNsdWRlICJpbmV0X250b3AuaCIKLSNpbmNsdWRlICJwYXJzZWRhdGUuaCIgLyogZm9yIHRoZSB3ZWVrIGRheSBhbmQgbW9udGggbmFtZXMgKi8KLSNpbmNsdWRlICJzb2NrYWRkci5oIiAvKiByZXF1aXJlZCBmb3IgQ3VybF9zb2NrYWRkcl9zdG9yYWdlICovCi0jaW5jbHVkZSAic3RydG9vZmZ0LmgiCi0jaW5jbHVkZSAibXVsdGlpZi5oIgotI2luY2x1ZGUgInNlbGVjdC5oIgotI2luY2x1ZGUgIndhcm5sZXNzLmgiCi0jaW5jbHVkZSAiY3VybF9wYXRoLmgiCi0KLS8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0jaW5jbHVkZSAibWVtZGVidWcuaCIKLQotI2lmIExJQlNTSDJfVkVSU0lPTl9OVU0gPj0gMHgwMTAyMDYKLS8qIGxpYnNzaDJfc2Z0cF9zdGF0dmZzIGFuZCBmcmllbmRzIHdlcmUgYWRkZWQgaW4gMS4yLjYgKi8KLSNkZWZpbmUgSEFTX1NUQVRWRlNfU1VQUE9SVCAxCi0jZW5kaWYKLQotI2RlZmluZSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzKSBjdXJseF91bHRvc2kobGlic3NoMl9zZnRwX2xhc3RfZXJyb3IocykpCi0KLSNkZWZpbmUgc2Z0cF9saWJzc2gyX3JlYWxwYXRoKHMscCx0LG0pIFwKLSAgICAgICAgbGlic3NoMl9zZnRwX3N5bWxpbmtfZXgoKHMpLCAocCksIGN1cmx4X3V6dG91aShzdHJsZW4ocCkpLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0KSwgKG0pLCBMSUJTU0gyX1NGVFBfUkVBTFBBVEgpCi0KLQotLyogTG9jYWwgZnVuY3Rpb25zOiAqLwotc3RhdGljIGNvbnN0IGNoYXIgKnNmdHBfbGlic3NoMl9zdHJlcnJvcihpbnQgZXJyKTsKLXN0YXRpYyBMSUJTU0gyX0FMTE9DX0ZVTkMobXlfbGlic3NoMl9tYWxsb2MpOwotc3RhdGljIExJQlNTSDJfUkVBTExPQ19GVU5DKG15X2xpYnNzaDJfcmVhbGxvYyk7Ci1zdGF0aWMgTElCU1NIMl9GUkVFX0ZVTkMobXlfbGlic3NoMl9mcmVlKTsKLQotc3RhdGljIENVUkxjb2RlIHNzaF9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7Ci1zdGF0aWMgQ1VSTGNvZGUgc3NoX211bHRpX3N0YXRlbWFjaChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpOwotc3RhdGljIENVUkxjb2RlIHNzaF9kbyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpOwotCi1zdGF0aWMgQ1VSTGNvZGUgc2NwX2RvbmUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlLCBib29sIHByZW1hdHVyZSk7Ci1zdGF0aWMgQ1VSTGNvZGUgc2NwX2RvaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9waGFzZV9kb25lKTsKLXN0YXRpYyBDVVJMY29kZSBzY3BfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZF9jb25uZWN0aW9uKTsKLQotc3RhdGljIENVUkxjb2RlIHNmdHBfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlLCBib29sIHByZW1hdHVyZSk7Ci1zdGF0aWMgQ1VSTGNvZGUgc2Z0cF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpOwotc3RhdGljIENVUkxjb2RlIHNmdHBfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZCk7Ci1zdGF0aWMKLUNVUkxjb2RlIHNmdHBfcGVyZm9ybShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgYm9vbCAqY29ubmVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvcGhhc2VfZG9uZSk7Ci0KLXN0YXRpYyBpbnQgc3NoX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrLCAvKiBwb2ludHMgdG8gbnVtc29ja3MgbnVtYmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHNvY2tldHMgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKLQotc3RhdGljIGludCBzc2hfcGVyZm9ybV9nZXRzb2NrKGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrLCAvKiBwb2ludHMgdG8gbnVtc29ja3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygc29ja2V0cyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2Nrcyk7Ci0KLXN0YXRpYyBDVVJMY29kZSBzc2hfc2V0dXBfY29ubmVjdGlvbihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwotCi0vKgotICogU0NQIHByb3RvY29sIGhhbmRsZXIuCi0gKi8KLQotY29uc3Qgc3RydWN0IEN1cmxfaGFuZGxlciBDdXJsX2hhbmRsZXJfc2NwID0gewotICAiU0NQIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjaGVtZSAqLwotICBzc2hfc2V0dXBfY29ubmVjdGlvbiwgICAgICAgICAgICAgICAgIC8qIHNldHVwX2Nvbm5lY3Rpb24gKi8KLSAgc3NoX2RvLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb19pdCAqLwotICBzY3BfZG9uZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbmUgKi8KLSAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb19tb3JlICovCi0gIHNzaF9jb25uZWN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29ubmVjdF9pdCAqLwotICBzc2hfbXVsdGlfc3RhdGVtYWNoLCAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3RpbmcgKi8KLSAgc2NwX2RvaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb2luZyAqLwotICBzc2hfZ2V0c29jaywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByb3RvX2dldHNvY2sgKi8KLSAgc3NoX2dldHNvY2ssICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb2luZ19nZXRzb2NrICovCi0gIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9tb3JlX2dldHNvY2sgKi8KLSAgc3NoX3BlcmZvcm1fZ2V0c29jaywgICAgICAgICAgICAgICAgICAvKiBwZXJmb3JtX2dldHNvY2sgKi8KLSAgc2NwX2Rpc2Nvbm5lY3QsICAgICAgICAgICAgICAgICAgICAgICAvKiBkaXNjb25uZWN0ICovCi0gIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVhZHdyaXRlICovCi0gIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29ubmVjdGlvbl9jaGVjayAqLwotICBQT1JUX1NTSCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRlZnBvcnQgKi8KLSAgQ1VSTFBST1RPX1NDUCwgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcm90b2NvbCAqLwotICBQUk9UT1BUX0RJUkxPQ0sgfCBQUk9UT1BUX0NMT1NFQUNUSU9OCi0gIHwgUFJPVE9QVF9OT1VSTFFVRVJZICAgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KLX07Ci0KLQotLyoKLSAqIFNGVFAgcHJvdG9jb2wgaGFuZGxlci4KLSAqLwotCi1jb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyIEN1cmxfaGFuZGxlcl9zZnRwID0gewotICAiU0ZUUCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjaGVtZSAqLwotICBzc2hfc2V0dXBfY29ubmVjdGlvbiwgICAgICAgICAgICAgICAgIC8qIHNldHVwX2Nvbm5lY3Rpb24gKi8KLSAgc3NoX2RvLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb19pdCAqLwotICBzZnRwX2RvbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbmUgKi8KLSAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb19tb3JlICovCi0gIHNzaF9jb25uZWN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29ubmVjdF9pdCAqLwotICBzc2hfbXVsdGlfc3RhdGVtYWNoLCAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3RpbmcgKi8KLSAgc2Z0cF9kb2luZywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb2luZyAqLwotICBzc2hfZ2V0c29jaywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByb3RvX2dldHNvY2sgKi8KLSAgc3NoX2dldHNvY2ssICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb2luZ19nZXRzb2NrICovCi0gIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9tb3JlX2dldHNvY2sgKi8KLSAgc3NoX3BlcmZvcm1fZ2V0c29jaywgICAgICAgICAgICAgICAgICAvKiBwZXJmb3JtX2dldHNvY2sgKi8KLSAgc2Z0cF9kaXNjb25uZWN0LCAgICAgICAgICAgICAgICAgICAgICAvKiBkaXNjb25uZWN0ICovCi0gIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVhZHdyaXRlICovCi0gIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29ubmVjdGlvbl9jaGVjayAqLwotICBQT1JUX1NTSCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRlZnBvcnQgKi8KLSAgQ1VSTFBST1RPX1NGVFAsICAgICAgICAgICAgICAgICAgICAgICAvKiBwcm90b2NvbCAqLwotICBQUk9UT1BUX0RJUkxPQ0sgfCBQUk9UT1BUX0NMT1NFQUNUSU9OCi0gIHwgUFJPVE9QVF9OT1VSTFFVRVJZICAgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KLX07Ci0KLXN0YXRpYyB2b2lkCi1rYmRfY2FsbGJhY2soY29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVfbGVuLCBjb25zdCBjaGFyICppbnN0cnVjdGlvbiwKLSAgICAgICAgICAgICBpbnQgaW5zdHJ1Y3Rpb25fbGVuLCBpbnQgbnVtX3Byb21wdHMsCi0gICAgICAgICAgICAgY29uc3QgTElCU1NIMl9VU0VSQVVUSF9LQkRJTlRfUFJPTVBUICpwcm9tcHRzLAotICAgICAgICAgICAgIExJQlNTSDJfVVNFUkFVVEhfS0JESU5UX1JFU1BPTlNFICpyZXNwb25zZXMsCi0gICAgICAgICAgICAgdm9pZCAqKmFic3RyYWN0KQotewotICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAoc3RydWN0IGNvbm5lY3RkYXRhICopKmFic3RyYWN0OwotCi0jaWZkZWYgQ1VSTF9MSUJTU0gyX0RFQlVHCi0gIGZwcmludGYoc3RkZXJyLCAibmFtZT0lc1xuIiwgbmFtZSk7Ci0gIGZwcmludGYoc3RkZXJyLCAibmFtZV9sZW49JWRcbiIsIG5hbWVfbGVuKTsKLSAgZnByaW50ZihzdGRlcnIsICJpbnN0cnVjdGlvbj0lc1xuIiwgaW5zdHJ1Y3Rpb24pOwotICBmcHJpbnRmKHN0ZGVyciwgImluc3RydWN0aW9uX2xlbj0lZFxuIiwgaW5zdHJ1Y3Rpb25fbGVuKTsKLSAgZnByaW50ZihzdGRlcnIsICJudW1fcHJvbXB0cz0lZFxuIiwgbnVtX3Byb21wdHMpOwotI2Vsc2UKLSAgKHZvaWQpbmFtZTsKLSAgKHZvaWQpbmFtZV9sZW47Ci0gICh2b2lkKWluc3RydWN0aW9uOwotICAodm9pZClpbnN0cnVjdGlvbl9sZW47Ci0jZW5kaWYgIC8qIENVUkxfTElCU1NIMl9ERUJVRyAqLwotICBpZihudW1fcHJvbXB0cyA9PSAxKSB7Ci0gICAgcmVzcG9uc2VzWzBdLnRleHQgPSBzdHJkdXAoY29ubi0+cGFzc3dkKTsKLSAgICByZXNwb25zZXNbMF0ubGVuZ3RoID0gY3VybHhfdXp0b3VpKHN0cmxlbihjb25uLT5wYXNzd2QpKTsKLSAgfQotICAodm9pZClwcm9tcHRzOwotICAodm9pZClhYnN0cmFjdDsKLX0gLyoga2JkX2NhbGxiYWNrICovCi0KLXN0YXRpYyBDVVJMY29kZSBzZnRwX2xpYnNzaDJfZXJyb3JfdG9fQ1VSTEUoaW50IGVycikKLXsKLSAgc3dpdGNoKGVycikgewotICAgIGNhc2UgTElCU1NIMl9GWF9PSzoKLSAgICAgIHJldHVybiBDVVJMRV9PSzsKLQotICAgIGNhc2UgTElCU1NIMl9GWF9OT19TVUNIX0ZJTEU6Ci0gICAgY2FzZSBMSUJTU0gyX0ZYX05PX1NVQ0hfUEFUSDoKLSAgICAgIHJldHVybiBDVVJMRV9SRU1PVEVfRklMRV9OT1RfRk9VTkQ7Ci0KLSAgICBjYXNlIExJQlNTSDJfRlhfUEVSTUlTU0lPTl9ERU5JRUQ6Ci0gICAgY2FzZSBMSUJTU0gyX0ZYX1dSSVRFX1BST1RFQ1Q6Ci0gICAgY2FzZSBMSUJTU0gyX0ZYX0xPQ0tfQ09ORmxJQ1Q6Ci0gICAgICByZXR1cm4gQ1VSTEVfUkVNT1RFX0FDQ0VTU19ERU5JRUQ7Ci0KLSAgICBjYXNlIExJQlNTSDJfRlhfTk9fU1BBQ0VfT05fRklMRVNZU1RFTToKLSAgICBjYXNlIExJQlNTSDJfRlhfUVVPVEFfRVhDRUVERUQ6Ci0gICAgICByZXR1cm4gQ1VSTEVfUkVNT1RFX0RJU0tfRlVMTDsKLQotICAgIGNhc2UgTElCU1NIMl9GWF9GSUxFX0FMUkVBRFlfRVhJU1RTOgotICAgICAgcmV0dXJuIENVUkxFX1JFTU9URV9GSUxFX0VYSVNUUzsKLQotICAgIGNhc2UgTElCU1NIMl9GWF9ESVJfTk9UX0VNUFRZOgotICAgICAgcmV0dXJuIENVUkxFX1FVT1RFX0VSUk9SOwotCi0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIENVUkxFX1NTSDsKLX0KLQotc3RhdGljIENVUkxjb2RlIGxpYnNzaDJfc2Vzc2lvbl9lcnJvcl90b19DVVJMRShpbnQgZXJyKQotewotICBzd2l0Y2goZXJyKSB7Ci0gICAgLyogT3JkZXJlZCBieSBvcmRlciBvZiBhcHBlYXJhbmNlIGluIGxpYnNzaDIuaCAqLwotICAgIGNhc2UgTElCU1NIMl9FUlJPUl9OT05FOgotICAgICAgcmV0dXJuIENVUkxFX09LOwotCi0gICAgLyogVGhpcyBpcyB0aGUgZXJyb3IgcmV0dXJuZWQgYnkgbGlic3NoMl9zY3BfcmVjdjIKLSAgICAgKiBvbiB1bmtub3duIGZpbGUgKi8KLSAgICBjYXNlIExJQlNTSDJfRVJST1JfU0NQX1BST1RPQ09MOgotICAgICAgcmV0dXJuIENVUkxFX1JFTU9URV9GSUxFX05PVF9GT1VORDsKLQotICAgIGNhc2UgTElCU1NIMl9FUlJPUl9TT0NLRVRfTk9ORToKLSAgICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7Ci0KLSAgICBjYXNlIExJQlNTSDJfRVJST1JfQUxMT0M6Ci0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIGNhc2UgTElCU1NIMl9FUlJPUl9TT0NLRVRfU0VORDoKLSAgICAgIHJldHVybiBDVVJMRV9TRU5EX0VSUk9SOwotCi0gICAgY2FzZSBMSUJTU0gyX0VSUk9SX0hPU1RLRVlfSU5JVDoKLSAgICBjYXNlIExJQlNTSDJfRVJST1JfSE9TVEtFWV9TSUdOOgotICAgIGNhc2UgTElCU1NIMl9FUlJPUl9QVUJMSUNLRVlfVU5SRUNPR05JWkVEOgotICAgIGNhc2UgTElCU1NIMl9FUlJPUl9QVUJMSUNLRVlfVU5WRVJJRklFRDoKLSAgICAgIHJldHVybiBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047Ci0KLSAgICBjYXNlIExJQlNTSDJfRVJST1JfUEFTU1dPUkRfRVhQSVJFRDoKLSAgICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7Ci0KLSAgICBjYXNlIExJQlNTSDJfRVJST1JfU09DS0VUX1RJTUVPVVQ6Ci0gICAgY2FzZSBMSUJTU0gyX0VSUk9SX1RJTUVPVVQ6Ci0gICAgICByZXR1cm4gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOwotCi0gICAgY2FzZSBMSUJTU0gyX0VSUk9SX0VBR0FJTjoKLSAgICAgIHJldHVybiBDVVJMRV9BR0FJTjsKLSAgfQotCi0gIHJldHVybiBDVVJMRV9TU0g7Ci19Ci0KLXN0YXRpYyBMSUJTU0gyX0FMTE9DX0ZVTkMobXlfbGlic3NoMl9tYWxsb2MpCi17Ci0gICh2b2lkKWFic3RyYWN0OyAvKiBhcmcgbm90IHVzZWQgKi8KLSAgcmV0dXJuIG1hbGxvYyhjb3VudCk7Ci19Ci0KLXN0YXRpYyBMSUJTU0gyX1JFQUxMT0NfRlVOQyhteV9saWJzc2gyX3JlYWxsb2MpCi17Ci0gICh2b2lkKWFic3RyYWN0OyAvKiBhcmcgbm90IHVzZWQgKi8KLSAgcmV0dXJuIHJlYWxsb2MocHRyLCBjb3VudCk7Ci19Ci0KLXN0YXRpYyBMSUJTU0gyX0ZSRUVfRlVOQyhteV9saWJzc2gyX2ZyZWUpCi17Ci0gICh2b2lkKWFic3RyYWN0OyAvKiBhcmcgbm90IHVzZWQgKi8KLSAgaWYocHRyKSAvKiBzc2gyIGFnZW50IHNvbWV0aW1lcyBjYWxsIGZyZWUgd2l0aCBudWxsIHB0ciAqLwotICAgIGZyZWUocHRyKTsKLX0KLQotLyoKLSAqIFNTSCBTdGF0ZSBtYWNoaW5lIHJlbGF0ZWQgY29kZQotICovCi0vKiBUaGlzIGlzIHRoZSBPTkxZIHdheSB0byBjaGFuZ2UgU1NIIHN0YXRlISAqLwotc3RhdGljIHZvaWQgc3RhdGUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBzc2hzdGF0ZSBub3dzdGF0ZSkKLXsKLSAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7Ci0jaWYgZGVmaW5lZChERUJVR0JVSUxEKSAmJiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTKQotICAvKiBmb3IgZGVidWcgcHVycG9zZXMgKi8KLSAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBuYW1lc1tdID0gewotICAgICJTU0hfU1RPUCIsCi0gICAgIlNTSF9JTklUIiwKLSAgICAiU1NIX1NfU1RBUlRVUCIsCi0gICAgIlNTSF9IT1NUS0VZIiwKLSAgICAiU1NIX0FVVEhMSVNUIiwKLSAgICAiU1NIX0FVVEhfUEtFWV9JTklUIiwKLSAgICAiU1NIX0FVVEhfUEtFWSIsCi0gICAgIlNTSF9BVVRIX1BBU1NfSU5JVCIsCi0gICAgIlNTSF9BVVRIX1BBU1MiLAotICAgICJTU0hfQVVUSF9BR0VOVF9JTklUIiwKLSAgICAiU1NIX0FVVEhfQUdFTlRfTElTVCIsCi0gICAgIlNTSF9BVVRIX0FHRU5UIiwKLSAgICAiU1NIX0FVVEhfSE9TVF9JTklUIiwKLSAgICAiU1NIX0FVVEhfSE9TVCIsCi0gICAgIlNTSF9BVVRIX0tFWV9JTklUIiwKLSAgICAiU1NIX0FVVEhfS0VZIiwKLSAgICAiU1NIX0FVVEhfR1NTQVBJIiwKLSAgICAiU1NIX0FVVEhfRE9ORSIsCi0gICAgIlNTSF9TRlRQX0lOSVQiLAotICAgICJTU0hfU0ZUUF9SRUFMUEFUSCIsCi0gICAgIlNTSF9TRlRQX1FVT1RFX0lOSVQiLAotICAgICJTU0hfU0ZUUF9QT1NUUVVPVEVfSU5JVCIsCi0gICAgIlNTSF9TRlRQX1FVT1RFIiwKLSAgICAiU1NIX1NGVFBfTkVYVF9RVU9URSIsCi0gICAgIlNTSF9TRlRQX1FVT1RFX1NUQVQiLAotICAgICJTU0hfU0ZUUF9RVU9URV9TRVRTVEFUIiwKLSAgICAiU1NIX1NGVFBfUVVPVEVfU1lNTElOSyIsCi0gICAgIlNTSF9TRlRQX1FVT1RFX01LRElSIiwKLSAgICAiU1NIX1NGVFBfUVVPVEVfUkVOQU1FIiwKLSAgICAiU1NIX1NGVFBfUVVPVEVfUk1ESVIiLAotICAgICJTU0hfU0ZUUF9RVU9URV9VTkxJTksiLAotICAgICJTU0hfU0ZUUF9RVU9URV9TVEFUVkZTIiwKLSAgICAiU1NIX1NGVFBfR0VUSU5GTyIsCi0gICAgIlNTSF9TRlRQX0ZJTEVUSU1FIiwKLSAgICAiU1NIX1NGVFBfVFJBTlNfSU5JVCIsCi0gICAgIlNTSF9TRlRQX1VQTE9BRF9JTklUIiwKLSAgICAiU1NIX1NGVFBfQ1JFQVRFX0RJUlNfSU5JVCIsCi0gICAgIlNTSF9TRlRQX0NSRUFURV9ESVJTIiwKLSAgICAiU1NIX1NGVFBfQ1JFQVRFX0RJUlNfTUtESVIiLAotICAgICJTU0hfU0ZUUF9SRUFERElSX0lOSVQiLAotICAgICJTU0hfU0ZUUF9SRUFERElSIiwKLSAgICAiU1NIX1NGVFBfUkVBRERJUl9MSU5LIiwKLSAgICAiU1NIX1NGVFBfUkVBRERJUl9CT1RUT00iLAotICAgICJTU0hfU0ZUUF9SRUFERElSX0RPTkUiLAotICAgICJTU0hfU0ZUUF9ET1dOTE9BRF9JTklUIiwKLSAgICAiU1NIX1NGVFBfRE9XTkxPQURfU1RBVCIsCi0gICAgIlNTSF9TRlRQX0NMT1NFIiwKLSAgICAiU1NIX1NGVFBfU0hVVERPV04iLAotICAgICJTU0hfU0NQX1RSQU5TX0lOSVQiLAotICAgICJTU0hfU0NQX1VQTE9BRF9JTklUIiwKLSAgICAiU1NIX1NDUF9ET1dOTE9BRF9JTklUIiwKLSAgICAiU1NIX1NDUF9ET1dOTE9BRCIsCi0gICAgIlNTSF9TQ1BfRE9ORSIsCi0gICAgIlNTSF9TQ1BfU0VORF9FT0YiLAotICAgICJTU0hfU0NQX1dBSVRfRU9GIiwKLSAgICAiU1NIX1NDUF9XQUlUX0NMT1NFIiwKLSAgICAiU1NIX1NDUF9DSEFOTkVMX0ZSRUUiLAotICAgICJTU0hfU0VTU0lPTl9ESVNDT05ORUNUIiwKLSAgICAiU1NIX1NFU1NJT05fRlJFRSIsCi0gICAgIlFVSVQiCi0gIH07Ci0KLSAgLyogYSBwcmVjYXV0aW9uIHRvIG1ha2Ugc3VyZSB0aGUgbGlzdHMgYXJlIGluIHN5bmMgKi8KLSAgREVCVUdBU1NFUlQoc2l6ZW9mKG5hbWVzKS9zaXplb2YobmFtZXNbMF0pID09IFNTSF9MQVNUKTsKLQotICBpZihzc2hjLT5zdGF0ZSAhPSBub3dzdGF0ZSkgewotICAgIGluZm9mKGNvbm4tPmRhdGEsICJTRlRQICVwIHN0YXRlIGNoYW5nZSBmcm9tICVzIHRvICVzXG4iLAotICAgICAgICAgICh2b2lkICopc3NoYywgbmFtZXNbc3NoYy0+c3RhdGVdLCBuYW1lc1tub3dzdGF0ZV0pOwotICB9Ci0jZW5kaWYKLQotICBzc2hjLT5zdGF0ZSA9IG5vd3N0YXRlOwotfQotCi0KLSNpZmRlZiBIQVZFX0xJQlNTSDJfS05PV05IT1NUX0FQSQotc3RhdGljIGludCBzc2hrZXljYWxsYmFjayhzdHJ1Y3QgQ3VybF9lYXN5ICplYXN5LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3VybF9raGtleSAqa25vd25rZXksIC8qIGtub3duICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBjdXJsX2toa2V5ICpmb3VuZGtleSwgLyogZm91bmQgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBjdXJsX2tobWF0Y2ggbWF0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudHApCi17Ci0gICh2b2lkKWVhc3k7Ci0gICh2b2lkKWtub3dua2V5OwotICAodm9pZClmb3VuZGtleTsKLSAgKHZvaWQpY2xpZW50cDsKLQotICAvKiB3ZSBvbmx5IGFsbG93IHBlcmZlY3QgbWF0Y2hlcywgYW5kIHdlIHJlamVjdCBldmVyeXRoaW5nIGVsc2UgKi8KLSAgcmV0dXJuIChtYXRjaCAhPSBDVVJMS0hNQVRDSF9PSyk/Q1VSTEtIU1RBVF9SRUpFQ1Q6Q1VSTEtIU1RBVF9GSU5FOwotfQotI2VuZGlmCi0KLS8qCi0gKiBFYXJsaWVyIGxpYnNzaDIgdmVyc2lvbnMgZGlkbid0IGhhdmUgdGhlIGFiaWxpdHkgdG8gc2VlayB0byA2NGJpdCBwb3NpdGlvbnMKLSAqIHdpdGggMzJiaXQgc2l6ZV90LgotICovCi0jaWZkZWYgSEFWRV9MSUJTU0gyX1NGVFBfU0VFSzY0Ci0jZGVmaW5lIFNGVFBfU0VFSyh4LHkpIGxpYnNzaDJfc2Z0cF9zZWVrNjQoeCwgKGxpYnNzaDJfdWludDY0X3QpeSkKLSNlbHNlCi0jZGVmaW5lIFNGVFBfU0VFSyh4LHkpIGxpYnNzaDJfc2Z0cF9zZWVrKHgsIChzaXplX3QpeSkKLSNlbmRpZgotCi0vKgotICogRWFybGllciBsaWJzc2gyIHZlcnNpb25zIGRpZG4ndCBkbyBTQ1AgcHJvcGVybHkgYmV5b25kIDMyYml0IHNpemVzIG9uIDMyYml0Ci0gKiBhcmNoaXRlY3R1cmVzIHNvIHdlIGNoZWNrIG9mIHRoZSBuZWNlc3NhcnkgZnVuY3Rpb24gaXMgcHJlc2VudC4KLSAqLwotI2lmbmRlZiBIQVZFX0xJQlNTSDJfU0NQX1NFTkQ2NAotI2RlZmluZSBTQ1BfU0VORChhLGIsYyxkKSBsaWJzc2gyX3NjcF9zZW5kX2V4KGEsIGIsIChpbnQpKGMpLCAoc2l6ZV90KWQsIDAsIDApCi0jZWxzZQotI2RlZmluZSBTQ1BfU0VORChhLGIsYyxkKSBsaWJzc2gyX3NjcF9zZW5kNjQoYSwgYiwgKGludCkoYyksICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpYnNzaDJfdWludDY0X3QpZCwgMCwgMCkKLSNlbmRpZgotCi0vKgotICogbGlic3NoMiAxLjIuOCBmaXhlZCB0aGUgcHJvYmxlbSB3aXRoIDMyYml0IGludHMgdXNlZCBmb3Igc29ja2V0cyBvbiB3aW42NC4KLSAqLwotI2lmZGVmIEhBVkVfTElCU1NIMl9TRVNTSU9OX0hBTkRTSEFLRQotI2RlZmluZSBsaWJzc2gyX3Nlc3Npb25fc3RhcnR1cCh4LHkpIGxpYnNzaDJfc2Vzc2lvbl9oYW5kc2hha2UoeCx5KQotI2VuZGlmCi0KLXN0YXRpYyBDVVJMY29kZSBzc2hfa25vd25ob3N0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0KLSNpZmRlZiBIQVZFX0xJQlNTSDJfS05PV05IT1NUX0FQSQotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLQotICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pIHsKLSAgICAvKiB3ZSdyZSBhc2tlZCB0byB2ZXJpZnkgdGhlIGhvc3QgYWdhaW5zdCBhIGZpbGUgKi8KLSAgICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKLSAgICBpbnQgcmM7Ci0gICAgaW50IGtleXR5cGU7Ci0gICAgc2l6ZV90IGtleWxlbjsKLSAgICBjb25zdCBjaGFyICpyZW1vdGVrZXkgPSBsaWJzc2gyX3Nlc3Npb25faG9zdGtleShzc2hjLT5zc2hfc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5bGVuLCAma2V5dHlwZSk7Ci0gICAgaW50IGtleWNoZWNrID0gTElCU1NIMl9LTk9XTkhPU1RfQ0hFQ0tfRkFJTFVSRTsKLSAgICBpbnQga2V5Yml0ID0gMDsKLQotICAgIGlmKHJlbW90ZWtleSkgewotICAgICAgLyoKLSAgICAgICAqIEEgc3ViamVjdCB0byBmaWd1cmUgb3V0IGlzIHdoYXQgaG9zdCBuYW1lIHdlIG5lZWQgdG8gcGFzcyBpbiBoZXJlLgotICAgICAgICogV2hhdCBob3N0IG5hbWUgZG9lcyBPcGVuU1NIIHN0b3JlIGluIGl0cyBmaWxlIGlmIGFuIElETiBuYW1lIGlzCi0gICAgICAgKiB1c2VkPwotICAgICAgICovCi0gICAgICBzdHJ1Y3QgbGlic3NoMl9rbm93bmhvc3QgKmhvc3Q7Ci0gICAgICBlbnVtIGN1cmxfa2htYXRjaCBrZXltYXRjaDsKLSAgICAgIGN1cmxfc3Noa2V5Y2FsbGJhY2sgZnVuYyA9Ci0gICAgICAgIGRhdGEtPnNldC5zc2hfa2V5ZnVuYz9kYXRhLT5zZXQuc3NoX2tleWZ1bmM6c3Noa2V5Y2FsbGJhY2s7Ci0gICAgICBzdHJ1Y3QgY3VybF9raGtleSBrbm93bmtleTsKLSAgICAgIHN0cnVjdCBjdXJsX2toa2V5ICprbm93bmtleXAgPSBOVUxMOwotICAgICAgc3RydWN0IGN1cmxfa2hrZXkgZm91bmRrZXk7Ci0KLSAgICAgIGtleWJpdCA9IChrZXl0eXBlID09IExJQlNTSDJfSE9TVEtFWV9UWVBFX1JTQSk/Ci0gICAgICAgIExJQlNTSDJfS05PV05IT1NUX0tFWV9TU0hSU0E6TElCU1NIMl9LTk9XTkhPU1RfS0VZX1NTSERTUzsKLQotI2lmZGVmIEhBVkVfTElCU1NIMl9LTk9XTkhPU1RfQ0hFQ0tQCi0gICAgICBrZXljaGVjayA9IGxpYnNzaDJfa25vd25ob3N0X2NoZWNrcChzc2hjLT5raCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmhvc3QubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25uLT5yZW1vdGVfcG9ydCAhPSBQT1JUX1NTSCk/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5yZW1vdGVfcG9ydDotMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZWtleSwga2V5bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9LTk9XTkhPU1RfVFlQRV9QTEFJTnwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfS05PV05IT1NUX0tFWUVOQ19SQVd8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXliaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaG9zdCk7Ci0jZWxzZQotICAgICAga2V5Y2hlY2sgPSBsaWJzc2gyX2tub3duaG9zdF9jaGVjayhzc2hjLT5raCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+aG9zdC5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVrZXksIGtleWxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9LTk9XTkhPU1RfVFlQRV9QTEFJTnwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9LTk9XTkhPU1RfS0VZRU5DX1JBV3wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Yml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaG9zdCk7Ci0jZW5kaWYKLQotICAgICAgaW5mb2YoZGF0YSwgIlNTSCBob3N0IGNoZWNrOiAlZCwga2V5OiAlc1xuIiwga2V5Y2hlY2ssCi0gICAgICAgICAgICAoa2V5Y2hlY2sgPD0gTElCU1NIMl9LTk9XTkhPU1RfQ0hFQ0tfTUlTTUFUQ0gpPwotICAgICAgICAgICAgaG9zdC0+a2V5OiI8bm9uZT4iKTsKLQotICAgICAgLyogc2V0dXAgJ2tub3dua2V5JyAqLwotICAgICAgaWYoa2V5Y2hlY2sgPD0gTElCU1NIMl9LTk9XTkhPU1RfQ0hFQ0tfTUlTTUFUQ0gpIHsKLSAgICAgICAga25vd25rZXkua2V5ID0gaG9zdC0+a2V5OwotICAgICAgICBrbm93bmtleS5sZW4gPSAwOwotICAgICAgICBrbm93bmtleS5rZXl0eXBlID0gKGtleXR5cGUgPT0gTElCU1NIMl9IT1NUS0VZX1RZUEVfUlNBKT8KLSAgICAgICAgICBDVVJMS0hUWVBFX1JTQSA6IENVUkxLSFRZUEVfRFNTOwotICAgICAgICBrbm93bmtleXAgPSAma25vd25rZXk7Ci0gICAgICB9Ci0KLSAgICAgIC8qIHNldHVwICdmb3VuZGtleScgKi8KLSAgICAgIGZvdW5ka2V5LmtleSA9IHJlbW90ZWtleTsKLSAgICAgIGZvdW5ka2V5LmxlbiA9IGtleWxlbjsKLSAgICAgIGZvdW5ka2V5LmtleXR5cGUgPSAoa2V5dHlwZSA9PSBMSUJTU0gyX0hPU1RLRVlfVFlQRV9SU0EpPwotICAgICAgICBDVVJMS0hUWVBFX1JTQSA6IENVUkxLSFRZUEVfRFNTOwotCi0gICAgICAvKgotICAgICAgICogaWYgYW55IG9mIHRoZSBMSUJTU0gyX0tOT1dOSE9TVF9DSEVDS18qIGRlZmluZXMgYW5kIHRoZQotICAgICAgICogY3VybF9raG1hdGNoIGVudW0gYXJlIGV2ZXIgbW9kaWZpZWQsIHdlIG5lZWQgdG8gaW50cm9kdWNlIGEKLSAgICAgICAqIHRyYW5zbGF0aW9uIHRhYmxlIGhlcmUhCi0gICAgICAgKi8KLSAgICAgIGtleW1hdGNoID0gKGVudW0gY3VybF9raG1hdGNoKWtleWNoZWNrOwotCi0gICAgICAvKiBBc2sgdGhlIGNhbGxiYWNrIGhvdyB0byBiZWhhdmUgKi8KLSAgICAgIEN1cmxfc2V0X2luX2NhbGxiYWNrKGRhdGEsIHRydWUpOwotICAgICAgcmMgPSBmdW5jKGRhdGEsIGtub3dua2V5cCwgLyogZnJvbSB0aGUga25vd25ob3N0cyBmaWxlICovCi0gICAgICAgICAgICAgICAgJmZvdW5ka2V5LCAvKiBmcm9tIHRoZSByZW1vdGUgaG9zdCAqLwotICAgICAgICAgICAgICAgIGtleW1hdGNoLCBkYXRhLT5zZXQuc3NoX2tleWZ1bmNfdXNlcnApOwotICAgICAgQ3VybF9zZXRfaW5fY2FsbGJhY2soZGF0YSwgZmFsc2UpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAvKiBubyByZW1vdGVrZXkgbWVhbnMgZmFpbHVyZSEgKi8KLSAgICAgIHJjID0gQ1VSTEtIU1RBVF9SRUpFQ1Q7Ci0KLSAgICBzd2l0Y2gocmMpIHsKLSAgICBkZWZhdWx0OiAvKiB1bmtub3duIHJldHVybiBjb2RlcyB3aWxsIGVxdWFsIHJlamVjdCAqLwotICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSAgICBjYXNlIENVUkxLSFNUQVRfUkVKRUNUOgotICAgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRlJFRSk7Ci0gICAgICAvKiBGQUxMVEhST1VHSCAqLwotICAgIGNhc2UgQ1VSTEtIU1RBVF9ERUZFUjoKLSAgICAgIC8qIERFRkVSIG1lYW5zIGJhaWwgb3V0IGJ1dCBrZWVwIHRoZSBTU0hfSE9TVEtFWSBzdGF0ZSAqLwotICAgICAgcmVzdWx0ID0gc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1BFRVJfRkFJTEVEX1ZFUklGSUNBVElPTjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1VSTEtIU1RBVF9GSU5FOgotICAgIGNhc2UgQ1VSTEtIU1RBVF9GSU5FX0FERF9UT19GSUxFOgotICAgICAgLyogcHJvY2VlZCAqLwotICAgICAgaWYoa2V5Y2hlY2sgIT0gTElCU1NIMl9LTk9XTkhPU1RfQ0hFQ0tfTUFUQ0gpIHsKLSAgICAgICAgLyogdGhlIGZvdW5kIGhvc3Qra2V5IGRpZG4ndCBtYXRjaCBidXQgaGFzIGJlZW4gdG9sZCB0byBiZSBmaW5lCi0gICAgICAgICAgIGFueXdheSBzbyB3ZSBhZGQgaXQgaW4gbWVtb3J5ICovCi0gICAgICAgIGludCBhZGRyYyA9IGxpYnNzaDJfa25vd25ob3N0X2FkZChzc2hjLT5raCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmhvc3QubmFtZSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZWtleSwga2V5bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9LTk9XTkhPU1RfVFlQRV9QTEFJTnwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfS05PV05IT1NUX0tFWUVOQ19SQVd8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXliaXQsIE5VTEwpOwotICAgICAgICBpZihhZGRyYykKLSAgICAgICAgICBpbmZvZihkYXRhLCAiV2FybmluZyBhZGRpbmcgdGhlIGtub3duIGhvc3QgJXMgZmFpbGVkIVxuIiwKLSAgICAgICAgICAgICAgICBjb25uLT5ob3N0Lm5hbWUpOwotICAgICAgICBlbHNlIGlmKHJjID09IENVUkxLSFNUQVRfRklORV9BRERfVE9fRklMRSkgewotICAgICAgICAgIC8qIG5vdyB3ZSB3cml0ZSB0aGUgZW50aXJlIGluLW1lbW9yeSBsaXN0IG9mIGtub3duIGhvc3RzIHRvIHRoZQotICAgICAgICAgICAgIGtub3duX2hvc3RzIGZpbGUgKi8KLSAgICAgICAgICBpbnQgd3JjID0KLSAgICAgICAgICAgIGxpYnNzaDJfa25vd25ob3N0X3dyaXRlZmlsZShzc2hjLT5raCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9LTk9XTkhPU1RfRklMRV9PUEVOU1NIKTsKLSAgICAgICAgICBpZih3cmMpIHsKLSAgICAgICAgICAgIGluZm9mKGRhdGEsICJXYXJuaW5nLCB3cml0aW5nICVzIGZhaWxlZCFcbiIsCi0gICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0jZWxzZSAvKiBIQVZFX0xJQlNTSDJfS05PV05IT1NUX0FQSSAqLwotICAodm9pZCljb25uOwotI2VuZGlmCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBDVVJMY29kZSBzc2hfY2hlY2tfZmluZ2VycHJpbnQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotewotICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKLSAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7Ci0gIGNvbnN0IGNoYXIgKnB1YmtleV9tZDUgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfSE9TVF9QVUJMSUNfS0VZX01ENV07Ci0gIGNoYXIgbWQ1YnVmZmVyWzMzXTsKLQotICBjb25zdCBjaGFyICpmaW5nZXJwcmludCA9IGxpYnNzaDJfaG9zdGtleV9oYXNoKHNzaGMtPnNzaF9zZXNzaW9uLAotICAgICAgTElCU1NIMl9IT1NUS0VZX0hBU0hfTUQ1KTsKLQotICBpZihmaW5nZXJwcmludCkgewotICAgIC8qIFRoZSBmaW5nZXJwcmludCBwb2ludHMgdG8gc3RhdGljIHN0b3JhZ2UgKCEpLCBkb24ndCBmcmVlKCkgaXQuICovCi0gICAgaW50IGk7Ci0gICAgZm9yKGkgPSAwOyBpIDwgMTY7IGkrKykKLSAgICAgIG1zbnByaW50ZigmbWQ1YnVmZmVyW2kqMl0sIDMsICIlMDJ4IiwgKHVuc2lnbmVkIGNoYXIpIGZpbmdlcnByaW50W2ldKTsKLSAgICBpbmZvZihkYXRhLCAiU1NIIE1ENSBmaW5nZXJwcmludDogJXNcbiIsIG1kNWJ1ZmZlcik7Ci0gIH0KLQotICAvKiBCZWZvcmUgd2UgYXV0aGVudGljYXRlIHdlIGNoZWNrIHRoZSBob3N0a2V5J3MgTUQ1IGZpbmdlcnByaW50Ci0gICAqIGFnYWluc3QgYSBrbm93biBmaW5nZXJwcmludCwgaWYgYXZhaWxhYmxlLgotICAgKi8KLSAgaWYocHVia2V5X21kNSAmJiBzdHJsZW4ocHVia2V5X21kNSkgPT0gMzIpIHsKLSAgICBpZighZmluZ2VycHJpbnQgfHwgIXN0cmNhc2Vjb21wYXJlKG1kNWJ1ZmZlciwgcHVia2V5X21kNSkpIHsKLSAgICAgIGlmKGZpbmdlcnByaW50KQotICAgICAgICBmYWlsZihkYXRhLAotICAgICAgICAgICAgIkRlbmllZCBlc3RhYmxpc2hpbmcgc3NoIHNlc3Npb246IG1pc21hdGNoIG1kNSBmaW5nZXJwcmludC4gIgotICAgICAgICAgICAgIlJlbW90ZSAlcyBpcyBub3QgZXF1YWwgdG8gJXMiLCBtZDVidWZmZXIsIHB1YmtleV9tZDUpOwotICAgICAgZWxzZQotICAgICAgICBmYWlsZihkYXRhLAotICAgICAgICAgICAgIkRlbmllZCBlc3RhYmxpc2hpbmcgc3NoIHNlc3Npb246IG1kNSBmaW5nZXJwcmludCBub3QgYXZhaWxhYmxlIik7Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU0VTU0lPTl9GUkVFKTsKLSAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047Ci0gICAgICByZXR1cm4gc3NoYy0+YWN0dWFsY29kZTsKLSAgICB9Ci0gICAgaW5mb2YoZGF0YSwgIk1ENSBjaGVja3N1bSBtYXRjaCFcbiIpOwotICAgIC8qIGFzIHdlIGFscmVhZHkgbWF0Y2hlZCwgd2Ugc2tpcCB0aGUgY2hlY2sgZm9yIGtub3duIGhvc3RzICovCi0gICAgcmV0dXJuIENVUkxFX09LOwotICB9Ci0gIHJldHVybiBzc2hfa25vd25ob3N0KGNvbm4pOwotfQotCi0vKgotICogc3NoX3N0YXRlbWFjaF9hY3QoKSBydW5zIHRoZSBTU0ggc3RhdGUgbWFjaGluZSBhcyBmYXIgYXMgaXQgY2FuIHdpdGhvdXQKLSAqIGJsb2NraW5nIGFuZCB3aXRob3V0IHJlYWNoaW5nIHRoZSBlbmQuICBUaGUgZGF0YSB0aGUgcG9pbnRlciAnYmxvY2snIHBvaW50cwotICogdG8gd2lsbCBiZSBzZXQgdG8gVFJVRSBpZiB0aGUgbGlic3NoMiBmdW5jdGlvbiByZXR1cm5zIExJQlNTSDJfRVJST1JfRUFHQUlOCi0gKiBtZWFuaW5nIGl0IHdhbnRzIHRvIGJlIGNhbGxlZCBhZ2FpbiB3aGVuIHRoZSBzb2NrZXQgaXMgcmVhZHkKLSAqLwotCi1zdGF0aWMgQ1VSTGNvZGUgc3NoX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpibG9jaykKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwotICBzdHJ1Y3QgU1NIUFJPVE8gKnNmdHBfc2NwID0gZGF0YS0+cmVxLnByb3RvcDsKLSAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7Ci0gIGN1cmxfc29ja2V0X3Qgc29jayA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOwotICBjaGFyICpuZXdfcmVhZGRpcl9saW5lOwotICBpbnQgcmMgPSBMSUJTU0gyX0VSUk9SX05PTkU7Ci0gIGludCBlcnI7Ci0gIGludCBzZWVrZXJyID0gQ1VSTF9TRUVLRlVOQ19PSzsKLSAgKmJsb2NrID0gMDsgLyogd2UncmUgbm90IGJsb2NraW5nIGJ5IGRlZmF1bHQgKi8KLQotICBkbyB7Ci0KLSAgICBzd2l0Y2goc3NoYy0+c3RhdGUpIHsKLSAgICBjYXNlIFNTSF9JTklUOgotICAgICAgc3NoYy0+c2Vjb25kQ3JlYXRlRGlycyA9IDA7Ci0gICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfT0s7Ci0KLSAgICAgIC8qIFNldCBsaWJzc2gyIHRvIG5vbi1ibG9ja2luZywgc2luY2UgZXZlcnl0aGluZyBpbnRlcm5hbGx5IGlzCi0gICAgICAgICBub24tYmxvY2tpbmcgKi8KLSAgICAgIGxpYnNzaDJfc2Vzc2lvbl9zZXRfYmxvY2tpbmcoc3NoYy0+c3NoX3Nlc3Npb24sIDApOwotCi0gICAgICBzdGF0ZShjb25uLCBTU0hfU19TVEFSVFVQKTsKLSAgICAgIC8qIEZBTExUSFJPVUdIICovCi0KLSAgICBjYXNlIFNTSF9TX1NUQVJUVVA6Ci0gICAgICByYyA9IGxpYnNzaDJfc2Vzc2lvbl9zdGFydHVwKHNzaGMtPnNzaF9zZXNzaW9uLCAoaW50KXNvY2spOwotICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpZihyYykgewotICAgICAgICBjaGFyICplcnJfbXNnID0gTlVMTDsKLSAgICAgICAgKHZvaWQpbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24sICZlcnJfbXNnLCBOVUxMLCAwKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgIkZhaWx1cmUgZXN0YWJsaXNoaW5nIHNzaCBzZXNzaW9uOiAlZCwgJXMiLCByYywgZXJyX21zZyk7Ci0KLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRlJFRSk7Ci0gICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9GQUlMRURfSU5JVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9IT1NUS0VZKTsKLQotICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSAgICBjYXNlIFNTSF9IT1NUS0VZOgotICAgICAgLyoKLSAgICAgICAqIEJlZm9yZSB3ZSBhdXRoZW50aWNhdGUgd2Ugc2hvdWxkIGNoZWNrIHRoZSBob3N0a2V5J3MgZmluZ2VycHJpbnQKLSAgICAgICAqIGFnYWluc3Qgb3VyIGtub3duIGhvc3RzLiBIb3cgdGhhdCBpcyBoYW5kbGVkIChyZWFkaW5nIGZyb20gZmlsZSwKLSAgICAgICAqIHdoYXRldmVyKSBpcyB1cCB0byB1cy4KLSAgICAgICAqLwotICAgICAgcmVzdWx0ID0gc3NoX2NoZWNrX2ZpbmdlcnByaW50KGNvbm4pOwotICAgICAgaWYoIXJlc3VsdCkKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhMSVNUKTsKLSAgICAgIC8qIHNzaF9jaGVja19maW5nZXJwcmludCBzZXRzIHN0YXRlIGFwcHJvcHJpYXRlbHkgb24gZXJyb3IgKi8KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfQVVUSExJU1Q6Ci0gICAgICAvKgotICAgICAgICogRmlndXJlIG91dCBhdXRoZW50aWNhdGlvbiBtZXRob2RzCi0gICAgICAgKiBOQjogQXMgc29vbiBhcyB3ZSBoYXZlIHByb3ZpZGVkIGEgdXNlcm5hbWUgdG8gYW4gb3BlbnNzaCBzZXJ2ZXIgd2UKLSAgICAgICAqIG11c3QgbmV2ZXIgY2hhbmdlIGl0IGxhdGVyLiBUaHVzLCBhbHdheXMgc3BlY2lmeSB0aGUgY29ycmVjdCB1c2VybmFtZQotICAgICAgICogaGVyZSwgZXZlbiB0aG91Z2ggdGhlIGxpYnNzaDIgZG9jcyBraW5kIG9mIGluZGljYXRlIHRoYXQgaXQgc2hvdWxkIGJlCi0gICAgICAgKiBwb3NzaWJsZSB0byBnZXQgYSAnZ2VuZXJpYycgbGlzdCAobm90IHVzZXItc3BlY2lmaWMpIG9mIGF1dGhlbnRpY2F0aW9uCi0gICAgICAgKiBtZXRob2RzLCBwcmVzdW1hYmx5IHdpdGggYSBibGFuayB1c2VybmFtZS4gVGhhdCB3b24ndCB3b3JrIGluIG15Ci0gICAgICAgKiBleHBlcmllbmNlLgotICAgICAgICogU28gYWx3YXlzIHNwZWNpZnkgaXQgaGVyZS4KLSAgICAgICAqLwotICAgICAgc3NoYy0+YXV0aGxpc3QgPSBsaWJzc2gyX3VzZXJhdXRoX2xpc3Qoc3NoYy0+c3NoX3Nlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT51c2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihjb25uLT51c2VyKSkpOwotCi0gICAgICBpZighc3NoYy0+YXV0aGxpc3QpIHsKLSAgICAgICAgaWYobGlic3NoMl91c2VyYXV0aF9hdXRoZW50aWNhdGVkKHNzaGMtPnNzaF9zZXNzaW9uKSkgewotICAgICAgICAgIHNzaGMtPmF1dGhlZCA9IFRSVUU7Ci0gICAgICAgICAgaW5mb2YoZGF0YSwgIlNTSCB1c2VyIGFjY2VwdGVkIHdpdGggbm8gYXV0aGVudGljYXRpb25cbiIpOwotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0RPTkUpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVyciA9IGxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm5vKHNzaGMtPnNzaF9zZXNzaW9uKTsKLSAgICAgICAgaWYoZXJyID09IExJQlNTSDJfRVJST1JfRUFHQUlOKQotICAgICAgICAgIHJjID0gTElCU1NIMl9FUlJPUl9FQUdBSU47Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRVNTSU9OX0ZSRUUpOwotICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBsaWJzc2gyX3Nlc3Npb25fZXJyb3JfdG9fQ1VSTEUoZXJyKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGluZm9mKGRhdGEsICJTU0ggYXV0aGVudGljYXRpb24gbWV0aG9kcyBhdmFpbGFibGU6ICVzXG4iLAotICAgICAgICAgICAgc3NoYy0+YXV0aGxpc3QpOwotCi0gICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9QS0VZX0lOSVQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9BVVRIX1BLRVlfSU5JVDoKLSAgICAgIC8qCi0gICAgICAgKiBDaGVjayB0aGUgc3VwcG9ydGVkIGF1dGggdHlwZXMgaW4gdGhlIG9yZGVyIEkgZmVlbCBpcyBtb3N0IHNlY3VyZQotICAgICAgICogd2l0aCB0aGUgcmVxdWVzdGVkIHR5cGUgb2YgYXV0aGVudGljYXRpb24KLSAgICAgICAqLwotICAgICAgc3NoYy0+YXV0aGVkID0gRkFMU0U7Ci0KLSAgICAgIGlmKChkYXRhLT5zZXQuc3NoX2F1dGhfdHlwZXMgJiBDVVJMU1NIX0FVVEhfUFVCTElDS0VZKSAmJgotICAgICAgICAgKHN0cnN0cihzc2hjLT5hdXRobGlzdCwgInB1YmxpY2tleSIpICE9IE5VTEwpKSB7Ci0gICAgICAgIGJvb2wgb3V0X29mX21lbW9yeSA9IEZBTFNFOwotCi0gICAgICAgIHNzaGMtPnJzYV9wdWIgPSBzc2hjLT5yc2EgPSBOVUxMOwotCi0gICAgICAgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9QUklWQVRFX0tFWV0pCi0gICAgICAgICAgc3NoYy0+cnNhID0gc3RyZHVwKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9QUklWQVRFX0tFWV0pOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAvKiBUbyBwb25kZXIgYWJvdXQ6IHNob3VsZCByZWFsbHkgdGhlIGxpYiBiZSBtZXNzaW5nIGFib3V0IHdpdGggdGhlCi0gICAgICAgICAgICAgSE9NRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBldGM/ICovCi0gICAgICAgICAgY2hhciAqaG9tZSA9IGN1cmxfZ2V0ZW52KCJIT01FIik7Ci0KLSAgICAgICAgICAvKiBJZiBubyBwcml2YXRlIGtleSBmaWxlIGlzIHNwZWNpZmllZCwgdHJ5IHNvbWUgY29tbW9uIHBhdGhzLiAqLwotICAgICAgICAgIGlmKGhvbWUpIHsKLSAgICAgICAgICAgIC8qIFRyeSB+Ly5zc2ggZmlyc3QuICovCi0gICAgICAgICAgICBzc2hjLT5yc2EgPSBhcHJpbnRmKCIlcy8uc3NoL2lkX3JzYSIsIGhvbWUpOwotICAgICAgICAgICAgaWYoIXNzaGMtPnJzYSkKLSAgICAgICAgICAgICAgb3V0X29mX21lbW9yeSA9IFRSVUU7Ci0gICAgICAgICAgICBlbHNlIGlmKGFjY2Vzcyhzc2hjLT5yc2EsIFJfT0spICE9IDApIHsKLSAgICAgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yc2EpOwotICAgICAgICAgICAgICBzc2hjLT5yc2EgPSBhcHJpbnRmKCIlcy8uc3NoL2lkX2RzYSIsIGhvbWUpOwotICAgICAgICAgICAgICBpZighc3NoYy0+cnNhKQotICAgICAgICAgICAgICAgIG91dF9vZl9tZW1vcnkgPSBUUlVFOwotICAgICAgICAgICAgICBlbHNlIGlmKGFjY2Vzcyhzc2hjLT5yc2EsIFJfT0spICE9IDApIHsKLSAgICAgICAgICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJzYSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyZWUoaG9tZSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmKCFvdXRfb2ZfbWVtb3J5ICYmICFzc2hjLT5yc2EpIHsKLSAgICAgICAgICAgIC8qIE5vdGhpbmcgZm91bmQ7IHRyeSB0aGUgY3VycmVudCBkaXIuICovCi0gICAgICAgICAgICBzc2hjLT5yc2EgPSBzdHJkdXAoImlkX3JzYSIpOwotICAgICAgICAgICAgaWYoc3NoYy0+cnNhICYmIGFjY2Vzcyhzc2hjLT5yc2EsIFJfT0spICE9IDApIHsKLSAgICAgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yc2EpOwotICAgICAgICAgICAgICBzc2hjLT5yc2EgPSBzdHJkdXAoImlkX2RzYSIpOwotICAgICAgICAgICAgICBpZihzc2hjLT5yc2EgJiYgYWNjZXNzKHNzaGMtPnJzYSwgUl9PSykgIT0gMCkgewotICAgICAgICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cnNhKTsKLSAgICAgICAgICAgICAgICAvKiBPdXQgb2YgZ3Vlc3Nlcy4gU2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgdG8gYXZvaWQKLSAgICAgICAgICAgICAgICAgKiBzdXJwcmlzaW5nIGluZm8gbWVzc2FnZXMuICovCi0gICAgICAgICAgICAgICAgc3NoYy0+cnNhID0gc3RyZHVwKCIiKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFVubGVzcyB0aGUgdXNlciBleHBsaWNpdGx5IHNwZWNpZmllcyBhIHB1YmxpYyBrZXkgZmlsZSwgbGV0Ci0gICAgICAgICAqIGxpYnNzaDIgZXh0cmFjdCB0aGUgcHVibGljIGtleSBmcm9tIHRoZSBwcml2YXRlIGtleSBmaWxlLgotICAgICAgICAgKiBUaGlzIGlzIGRvbmUgYnkgc2ltcGx5IHBhc3Npbmcgc3NoYy0+cnNhX3B1YiA9IE5VTEwuCi0gICAgICAgICAqLwotICAgICAgICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfUFVCTElDX0tFWV0KLSAgICAgICAgICAgLyogdHJlYXQgZW1wdHkgc3RyaW5nIHRoZSBzYW1lIHdheSBhcyBOVUxMICovCi0gICAgICAgICAgICYmIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9QVUJMSUNfS0VZXVswXSkgewotICAgICAgICAgIHNzaGMtPnJzYV9wdWIgPSBzdHJkdXAoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX1BVQkxJQ19LRVldKTsKLSAgICAgICAgICBpZighc3NoYy0+cnNhX3B1YikKLSAgICAgICAgICAgIG91dF9vZl9tZW1vcnkgPSBUUlVFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYob3V0X29mX21lbW9yeSB8fCBzc2hjLT5yc2EgPT0gTlVMTCkgewotICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cnNhKTsKLSAgICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJzYV9wdWIpOwotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRVNTSU9OX0ZSRUUpOwotICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgc3NoYy0+cGFzc3BocmFzZSA9IGRhdGEtPnNldC5zc2wua2V5X3Bhc3N3ZDsKLSAgICAgICAgaWYoIXNzaGMtPnBhc3NwaHJhc2UpCi0gICAgICAgICAgc3NoYy0+cGFzc3BocmFzZSA9ICIiOwotCi0gICAgICAgIGlmKHNzaGMtPnJzYV9wdWIpCi0gICAgICAgICAgaW5mb2YoZGF0YSwgIlVzaW5nIFNTSCBwdWJsaWMga2V5IGZpbGUgJyVzJ1xuIiwgc3NoYy0+cnNhX3B1Yik7Ci0gICAgICAgIGluZm9mKGRhdGEsICJVc2luZyBTU0ggcHJpdmF0ZSBrZXkgZmlsZSAnJXMnXG4iLCBzc2hjLT5yc2EpOwotCi0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX1BLRVkpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX1BBU1NfSU5JVCk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX0FVVEhfUEtFWToKLSAgICAgIC8qIFRoZSBmdW5jdGlvbiBiZWxvdyBjaGVja3MgaWYgdGhlIGZpbGVzIGV4aXN0cywgbm8gbmVlZCB0byBzdGF0KCkgaGVyZS4KLSAgICAgICAqLwotICAgICAgcmMgPSBsaWJzc2gyX3VzZXJhdXRoX3B1YmxpY2tleV9mcm9tZmlsZV9leChzc2hjLT5zc2hfc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+dXNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihjb25uLT51c2VyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJzYV9wdWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJzYSwgc3NoYy0+cGFzc3BocmFzZSk7Ci0gICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yc2FfcHViKTsKLSAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cnNhKTsKLQotICAgICAgaWYocmMgPT0gMCkgewotICAgICAgICBzc2hjLT5hdXRoZWQgPSBUUlVFOwotICAgICAgICBpbmZvZihkYXRhLCAiSW5pdGlhbGl6ZWQgU1NIIHB1YmxpYyBrZXkgYXV0aGVudGljYXRpb25cbiIpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9ET05FKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBjaGFyICplcnJfbXNnID0gTlVMTDsKLSAgICAgICAgKHZvaWQpbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJfbXNnLCBOVUxMLCAwKTsKLSAgICAgICAgaW5mb2YoZGF0YSwgIlNTSCBwdWJsaWMga2V5IGF1dGhlbnRpY2F0aW9uIGZhaWxlZDogJXNcbiIsIGVycl9tc2cpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9QQVNTX0lOSVQpOwotICAgICAgICByYyA9IDA7IC8qIGNsZWFyIHJjIGFuZCBjb250aW51ZSAqLwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9BVVRIX1BBU1NfSU5JVDoKLSAgICAgIGlmKChkYXRhLT5zZXQuc3NoX2F1dGhfdHlwZXMgJiBDVVJMU1NIX0FVVEhfUEFTU1dPUkQpICYmCi0gICAgICAgICAoc3Ryc3RyKHNzaGMtPmF1dGhsaXN0LCAicGFzc3dvcmQiKSAhPSBOVUxMKSkgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9QQVNTKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9IT1NUX0lOSVQpOwotICAgICAgICByYyA9IDA7IC8qIGNsZWFyIHJjIGFuZCBjb250aW51ZSAqLwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9BVVRIX1BBU1M6Ci0gICAgICByYyA9IGxpYnNzaDJfdXNlcmF1dGhfcGFzc3dvcmRfZXgoc3NoYy0+c3NoX3Nlc3Npb24sIGNvbm4tPnVzZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihjb25uLT51c2VyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cGFzc3dkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oY29ubi0+cGFzc3dkKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmKHJjID09IDApIHsKLSAgICAgICAgc3NoYy0+YXV0aGVkID0gVFJVRTsKLSAgICAgICAgaW5mb2YoZGF0YSwgIkluaXRpYWxpemVkIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uXG4iKTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfRE9ORSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfSE9TVF9JTklUKTsKLSAgICAgICAgcmMgPSAwOyAvKiBjbGVhciByYyBhbmQgY29udGludWUgKi8KLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfQVVUSF9IT1NUX0lOSVQ6Ci0gICAgICBpZigoZGF0YS0+c2V0LnNzaF9hdXRoX3R5cGVzICYgQ1VSTFNTSF9BVVRIX0hPU1QpICYmCi0gICAgICAgICAoc3Ryc3RyKHNzaGMtPmF1dGhsaXN0LCAiaG9zdGJhc2VkIikgIT0gTlVMTCkpIHsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfSE9TVCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfQUdFTlRfSU5JVCk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX0FVVEhfSE9TVDoKLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0FHRU5UX0lOSVQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9BVVRIX0FHRU5UX0lOSVQ6Ci0jaWZkZWYgSEFWRV9MSUJTU0gyX0FHRU5UX0FQSQotICAgICAgaWYoKGRhdGEtPnNldC5zc2hfYXV0aF90eXBlcyAmIENVUkxTU0hfQVVUSF9BR0VOVCkKLSAgICAgICAgICYmIChzdHJzdHIoc3NoYy0+YXV0aGxpc3QsICJwdWJsaWNrZXkiKSAhPSBOVUxMKSkgewotCi0gICAgICAgIC8qIENvbm5lY3QgdG8gdGhlIHNzaC1hZ2VudCAqLwotICAgICAgICAvKiBUaGUgYWdlbnQgY291bGQgYmUgc2hhcmVkIGJ5IGEgY3VybCB0aHJlYWQgaSBiZWxpZXZlCi0gICAgICAgICAgIGJ1dCBub3RoaW5nIG9idmlvdXMgYXMga2V5cyBjYW4gYmUgYWRkZWQvcmVtb3ZlZCBhdCBhbnkgdGltZSAqLwotICAgICAgICBpZighc3NoYy0+c3NoX2FnZW50KSB7Ci0gICAgICAgICAgc3NoYy0+c3NoX2FnZW50ID0gbGlic3NoMl9hZ2VudF9pbml0KHNzaGMtPnNzaF9zZXNzaW9uKTsKLSAgICAgICAgICBpZighc3NoYy0+c3NoX2FnZW50KSB7Ci0gICAgICAgICAgICBpbmZvZihkYXRhLCAiQ291bGQgbm90IGNyZWF0ZSBhZ2VudCBvYmplY3RcbiIpOwotCi0gICAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9LRVlfSU5JVCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByYyA9IGxpYnNzaDJfYWdlbnRfY29ubmVjdChzc2hjLT5zc2hfYWdlbnQpOwotICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYocmMgPCAwKSB7Ci0gICAgICAgICAgaW5mb2YoZGF0YSwgIkZhaWx1cmUgY29ubmVjdGluZyB0byBhZ2VudFxuIik7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfS0VZX0lOSVQpOwotICAgICAgICAgIHJjID0gMDsgLyogY2xlYXIgcmMgYW5kIGNvbnRpbnVlICovCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfQUdFTlRfTElTVCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSNlbmRpZiAvKiBIQVZFX0xJQlNTSDJfQUdFTlRfQVBJICovCi0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0tFWV9JTklUKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfQVVUSF9BR0VOVF9MSVNUOgotI2lmZGVmIEhBVkVfTElCU1NIMl9BR0VOVF9BUEkKLSAgICAgIHJjID0gbGlic3NoMl9hZ2VudF9saXN0X2lkZW50aXRpZXMoc3NoYy0+c3NoX2FnZW50KTsKLQotICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pCi0gICAgICAgIGJyZWFrOwotICAgICAgaWYocmMgPCAwKSB7Ci0gICAgICAgIGluZm9mKGRhdGEsICJGYWlsdXJlIHJlcXVlc3RpbmcgaWRlbnRpdGllcyB0byBhZ2VudFxuIik7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0tFWV9JTklUKTsKLSAgICAgICAgcmMgPSAwOyAvKiBjbGVhciByYyBhbmQgY29udGludWUgKi8KLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9BR0VOVCk7Ci0gICAgICAgIHNzaGMtPnNzaGFnZW50X3ByZXZfaWRlbnRpdHkgPSBOVUxMOwotICAgICAgfQotI2VuZGlmCi0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX0FVVEhfQUdFTlQ6Ci0jaWZkZWYgSEFWRV9MSUJTU0gyX0FHRU5UX0FQSQotICAgICAgLyogYXMgcHJldl9pZGVudGl0eSBldm9sdmVzIG9ubHkgYWZ0ZXIgYW4gaWRlbnRpdHkgdXNlciBhdXRoIGZpbmlzaGVkIHdlCi0gICAgICAgICBjYW4gc2FmZWx5IHJlcXVlc3QgaXQgYWdhaW4gYXMgbG9uZyBhcyBFQUdBSU4gaXMgcmV0dXJuZWQgaGVyZSBvciBieQotICAgICAgICAgbGlic3NoMl9hZ2VudF91c2VyYXV0aCAqLwotICAgICAgcmMgPSBsaWJzc2gyX2FnZW50X2dldF9pZGVudGl0eShzc2hjLT5zc2hfYWdlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzc2hjLT5zc2hhZ2VudF9pZGVudGl0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+c3NoYWdlbnRfcHJldl9pZGVudGl0eSk7Ci0gICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGlmKHJjID09IDApIHsKLSAgICAgICAgcmMgPSBsaWJzc2gyX2FnZW50X3VzZXJhdXRoKHNzaGMtPnNzaF9hZ2VudCwgY29ubi0+dXNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnNzaGFnZW50X2lkZW50aXR5KTsKLQotICAgICAgICBpZihyYyA8IDApIHsKLSAgICAgICAgICBpZihyYyAhPSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgICAgLyogdHJpZWQgYW5kIGZhaWxlZD8gZ28gdG8gbmV4dCBpZGVudGl0eSAqLwotICAgICAgICAgICAgc3NoYy0+c3NoYWdlbnRfcHJldl9pZGVudGl0eSA9IHNzaGMtPnNzaGFnZW50X2lkZW50aXR5OwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZihyYyA8IDApCi0gICAgICAgIGluZm9mKGRhdGEsICJGYWlsdXJlIHJlcXVlc3RpbmcgaWRlbnRpdGllcyB0byBhZ2VudFxuIik7Ci0gICAgICBlbHNlIGlmKHJjID09IDEpCi0gICAgICAgIGluZm9mKGRhdGEsICJObyBpZGVudGl0eSB3b3VsZCBtYXRjaFxuIik7Ci0KLSAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfTk9ORSkgewotICAgICAgICBzc2hjLT5hdXRoZWQgPSBUUlVFOwotICAgICAgICBpbmZvZihkYXRhLCAiQWdlbnQgYmFzZWQgYXV0aGVudGljYXRpb24gc3VjY2Vzc2Z1bFxuIik7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0RPTkUpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0tFWV9JTklUKTsKLSAgICAgICAgcmMgPSAwOyAvKiBjbGVhciByYyBhbmQgY29udGludWUgKi8KLSAgICAgIH0KLSNlbmRpZgotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9BVVRIX0tFWV9JTklUOgotICAgICAgaWYoKGRhdGEtPnNldC5zc2hfYXV0aF90eXBlcyAmIENVUkxTU0hfQVVUSF9LRVlCT0FSRCkKLSAgICAgICAgICYmIChzdHJzdHIoc3NoYy0+YXV0aGxpc3QsICJrZXlib2FyZC1pbnRlcmFjdGl2ZSIpICE9IE5VTEwpKSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0tFWSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfRE9ORSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX0FVVEhfS0VZOgotICAgICAgLyogQXV0aGVudGljYXRpb24gZmFpbGVkLiBDb250aW51ZSB3aXRoIGtleWJvYXJkLWludGVyYWN0aXZlIG5vdy4gKi8KLSAgICAgIHJjID0gbGlic3NoMl91c2VyYXV0aF9rZXlib2FyZF9pbnRlcmFjdGl2ZV9leChzc2hjLT5zc2hfc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT51c2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihjb25uLT51c2VyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtiZF9jYWxsYmFjayk7Ci0gICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmKHJjID09IDApIHsKLSAgICAgICAgc3NoYy0+YXV0aGVkID0gVFJVRTsKLSAgICAgICAgaW5mb2YoZGF0YSwgIkluaXRpYWxpemVkIGtleWJvYXJkIGludGVyYWN0aXZlIGF1dGhlbnRpY2F0aW9uXG4iKTsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0RPTkUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9BVVRIX0RPTkU6Ci0gICAgICBpZighc3NoYy0+YXV0aGVkKSB7Ci0gICAgICAgIGZhaWxmKGRhdGEsICJBdXRoZW50aWNhdGlvbiBmYWlsdXJlIik7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRVNTSU9OX0ZSRUUpOwotICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfTE9HSU5fREVOSUVEOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgLyoKLSAgICAgICAqIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBhbiBhdXRoZW50aWNhdGVkIHNzaCBzZXNzaW9uLgotICAgICAgICovCi0gICAgICBpbmZvZihkYXRhLCAiQXV0aGVudGljYXRpb24gY29tcGxldGVcbiIpOwotCi0gICAgICBDdXJsX3BncnNUaW1lKGNvbm4tPmRhdGEsIFRJTUVSX0FQUENPTk5FQ1QpOyAvKiBTU0ggaXMgY29ubmVjdGVkICovCi0KLSAgICAgIGNvbm4tPnNvY2tmZCA9IHNvY2s7Ci0gICAgICBjb25uLT53cml0ZXNvY2tmZCA9IENVUkxfU09DS0VUX0JBRDsKLQotICAgICAgaWYoY29ubi0+aGFuZGxlci0+cHJvdG9jb2wgPT0gQ1VSTFBST1RPX1NGVFApIHsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfSU5JVCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaW5mb2YoZGF0YSwgIlNTSCBDT05ORUNUIHBoYXNlIGRvbmVcbiIpOwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX0lOSVQ6Ci0gICAgICAvKgotICAgICAgICogU3RhcnQgdGhlIGxpYnNzaDIgc2Z0cCBzZXNzaW9uCi0gICAgICAgKi8KLSAgICAgIHNzaGMtPnNmdHBfc2Vzc2lvbiA9IGxpYnNzaDJfc2Z0cF9pbml0KHNzaGMtPnNzaF9zZXNzaW9uKTsKLSAgICAgIGlmKCFzc2hjLT5zZnRwX3Nlc3Npb24pIHsKLSAgICAgICAgY2hhciAqZXJyX21zZyA9IE5VTEw7Ci0gICAgICAgIGlmKGxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm5vKHNzaGMtPnNzaF9zZXNzaW9uKSA9PQotICAgICAgICAgICBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgIHJjID0gTElCU1NIMl9FUlJPUl9FQUdBSU47Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICAodm9pZClsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycl9tc2csIE5VTEwsIDApOwotICAgICAgICBmYWlsZihkYXRhLCAiRmFpbHVyZSBpbml0aWFsaXppbmcgc2Z0cCBzZXNzaW9uOiAlcyIsIGVycl9tc2cpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0VTU0lPTl9GUkVFKTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX0ZBSUxFRF9JTklUOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQUxQQVRIKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9SRUFMUEFUSDoKLSAgICB7Ci0gICAgICBjaGFyIHRlbXBIb21lW1BBVEhfTUFYXTsKLQotICAgICAgLyoKLSAgICAgICAqIEdldCB0aGUgImhvbWUiIGRpcmVjdG9yeQotICAgICAgICovCi0gICAgICByYyA9IHNmdHBfbGlic3NoMl9yZWFscGF0aChzc2hjLT5zZnRwX3Nlc3Npb24sICIuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBIb21lLCBQQVRIX01BWC0xKTsKLSAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYocmMgPiAwKSB7Ci0gICAgICAgIC8qIEl0IHNlZW1zIHRoYXQgdGhpcyBzdHJpbmcgaXMgbm90IGFsd2F5cyBOVUxMIHRlcm1pbmF0ZWQgKi8KLSAgICAgICAgdGVtcEhvbWVbcmNdID0gJ1wwJzsKLSAgICAgICAgc3NoYy0+aG9tZWRpciA9IHN0cmR1cCh0ZW1wSG9tZSk7Ci0gICAgICAgIGlmKCFzc2hjLT5ob21lZGlyKSB7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNvbm4tPmRhdGEtPnN0YXRlLm1vc3RfcmVjZW50X2Z0cF9lbnRyeXBhdGggPSBzc2hjLT5ob21lZGlyOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIC8qIFJldHVybiB0aGUgZXJyb3IgdHlwZSAqLwotICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOwotICAgICAgICBpZihlcnIpCi0gICAgICAgICAgcmVzdWx0ID0gc2Z0cF9saWJzc2gyX2Vycm9yX3RvX0NVUkxFKGVycik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAvKiBpbiB0aGlzIGNhc2UsIHRoZSBlcnJvciB3YXNuJ3QgaW4gdGhlIFNGVFAgbGV2ZWwgYnV0IGZvciBleGFtcGxlCi0gICAgICAgICAgICAgYSB0aW1lLW91dCBvciBzaW1pbGFyICovCi0gICAgICAgICAgcmVzdWx0ID0gQ1VSTEVfU1NIOwotICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OwotICAgICAgICBERUJVR0YoaW5mb2YoZGF0YSwgImVycm9yID0gJWQgbWFrZXMgbGliY3VybCA9ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgZXJyLCAoaW50KXJlc3VsdCkpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICAvKiBUaGlzIGlzIHRoZSBsYXN0IHN0ZXAgaW4gdGhlIFNGVFAgY29ubmVjdCBwaGFzZS4gRG8gbm90ZSB0aGF0IHdoaWxlCi0gICAgICAgd2UgZ2V0IHRoZSBob21lZGlyIGhlcmUsIHdlIGdldCB0aGUgIndvcmtpbmdwYXRoIiBpbiB0aGUgRE8gYWN0aW9uCi0gICAgICAgc2luY2UgdGhlIGhvbWVkaXIgd2lsbCByZW1haW4gdGhlIHNhbWUgYmV0d2VlbiByZXF1ZXN0IGJ1dCB0aGUKLSAgICAgICB3b3JraW5nIHBhdGggd2lsbCBub3QuICovCi0gICAgREVCVUdGKGluZm9mKGRhdGEsICJTU0ggQ09OTkVDVCBwaGFzZSBkb25lXG4iKSk7Ci0gICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9JTklUOgotCi0gICAgICByZXN1bHQgPSBDdXJsX2dldHdvcmtpbmdwYXRoKGNvbm4sIHNzaGMtPmhvbWVkaXIsICZzZnRwX3NjcC0+cGF0aCk7Ci0gICAgICBpZihyZXN1bHQpIHsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgaWYoZGF0YS0+c2V0LnF1b3RlKSB7Ci0gICAgICAgIGluZm9mKGRhdGEsICJTZW5kaW5nIHF1b3RlIGNvbW1hbmRzXG4iKTsKLSAgICAgICAgc3NoYy0+cXVvdGVfaXRlbSA9IGRhdGEtPnNldC5xdW90ZTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEUpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0dFVElORk8pOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1BPU1RRVU9URV9JTklUOgotICAgICAgaWYoZGF0YS0+c2V0LnBvc3RxdW90ZSkgewotICAgICAgICBpbmZvZihkYXRhLCAiU2VuZGluZyBxdW90ZSBjb21tYW5kc1xuIik7Ci0gICAgICAgIHNzaGMtPnF1b3RlX2l0ZW0gPSBkYXRhLT5zZXQucG9zdHF1b3RlOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1FVT1RFOgotICAgICAgLyogU2VuZCBhbnkgcXVvdGUgY29tbWFuZHMgKi8KLSAgICB7Ci0gICAgICBjb25zdCBjaGFyICpjcDsKLQotICAgICAgLyoKLSAgICAgICAqIFN1cHBvcnQgc29tZSBvZiB0aGUgIkZUUCIgY29tbWFuZHMKLSAgICAgICAqCi0gICAgICAgKiAnc3NoYy0+cXVvdGVfaXRlbScgaXMgYWxyZWFkeSB2ZXJpZmllZCB0byBiZSBub24tTlVMTCBiZWZvcmUgaXQKLSAgICAgICAqIHN3aXRjaGVkIHRvIHRoaXMgc3RhdGUuCi0gICAgICAgKi8KLSAgICAgIGNoYXIgKmNtZCA9IHNzaGMtPnF1b3RlX2l0ZW0tPmRhdGE7Ci0gICAgICBzc2hjLT5hY2NlcHRmYWlsID0gRkFMU0U7Ci0KLSAgICAgIC8qIGlmIGEgY29tbWFuZCBzdGFydHMgd2l0aCBhbiBhc3Rlcmlzaywgd2hpY2ggYSBsZWdhbCBTRlRQIGNvbW1hbmQgbmV2ZXIKLSAgICAgICAgIGNhbiwgdGhlIGNvbW1hbmQgd2lsbCBiZSBhbGxvd2VkIHRvIGZhaWwgd2l0aG91dCBpdCBjYXVzaW5nIGFueQotICAgICAgICAgYWJvcnRzIG9yIGNhbmNlbHMgZXRjLiBJdCB3aWxsIGNhdXNlIGxpYmN1cmwgdG8gYWN0IGFzIGlmIHRoZSBjb21tYW5kCi0gICAgICAgICBpcyBzdWNjZXNzZnVsLCB3aGF0ZXZlciB0aGUgc2VydmVyIHJlcG9uZHMuICovCi0KLSAgICAgIGlmKGNtZFswXSA9PSAnKicpIHsKLSAgICAgICAgY21kKys7Ci0gICAgICAgIHNzaGMtPmFjY2VwdGZhaWwgPSBUUlVFOwotICAgICAgfQotCi0gICAgICBpZihzdHJjYXNlY29tcGFyZSgicHdkIiwgY21kKSkgewotICAgICAgICAvKiBvdXRwdXQgZGVidWcgb3V0cHV0IGlmIHRoYXQgaXMgcmVxdWVzdGVkICovCi0gICAgICAgIGNoYXIgKnRtcCA9IGFwcmludGYoIjI1NyBcIiVzXCIgaXMgY3VycmVudCBkaXJlY3RvcnkuXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNmdHBfc2NwLT5wYXRoKTsKLSAgICAgICAgaWYoIXRtcCkgewotICAgICAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZihkYXRhLT5zZXQudmVyYm9zZSkgewotICAgICAgICAgIEN1cmxfZGVidWcoZGF0YSwgQ1VSTElORk9fSEVBREVSX09VVCwgKGNoYXIgKikiUFdEXG4iLCA0KTsKLSAgICAgICAgICBDdXJsX2RlYnVnKGRhdGEsIENVUkxJTkZPX0hFQURFUl9JTiwgdG1wLCBzdHJsZW4odG1wKSk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogdGhpcyBzZW5kcyBhbiBGVFAtbGlrZSAiaGVhZGVyIiB0byB0aGUgaGVhZGVyIGNhbGxiYWNrIHNvIHRoYXQgdGhlCi0gICAgICAgICAgIGN1cnJlbnQgZGlyZWN0b3J5IGNhbiBiZSByZWFkIHZlcnkgc2ltaWxhciB0byBob3cgaXQgaXMgcmVhZCB3aGVuCi0gICAgICAgICAgIHVzaW5nIG9yZGluYXJ5IEZUUC4gKi8KLSAgICAgICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfSEVBREVSLCB0bXAsIHN0cmxlbih0bXApKTsKLSAgICAgICAgZnJlZSh0bXApOwotICAgICAgICBpZihyZXN1bHQpIHsKLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogdGhlIGFyZ3VtZW50cyBmb2xsb3dpbmcgdGhlIGNvbW1hbmQgbXVzdCBiZSBzZXBhcmF0ZWQgZnJvbSB0aGUKLSAgICAgICAgICogY29tbWFuZCB3aXRoIGEgc3BhY2Ugc28gd2UgY2FuIGNoZWNrIGZvciBpdCB1bmNvbmRpdGlvbmFsbHkKLSAgICAgICAgICovCi0gICAgICAgIGNwID0gc3RyY2hyKGNtZCwgJyAnKTsKLSAgICAgICAgaWYoY3AgPT0gTlVMTCkgewotICAgICAgICAgIGZhaWxmKGRhdGEsICJTeW50YXggZXJyb3IgaW4gU0ZUUCBjb21tYW5kLiBTdXBwbHkgcGFyYW1ldGVyKHMpISIpOwotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogYWxzbywgZXZlcnkgY29tbWFuZCB0YWtlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQgc28gd2UgZ2V0IHRoYXQKLSAgICAgICAgICogZmlyc3QgYXJndW1lbnQgcmlnaHQgbm93Ci0gICAgICAgICAqLwotICAgICAgICByZXN1bHQgPSBDdXJsX2dldF9wYXRobmFtZSgmY3AsICZzc2hjLT5xdW90ZV9wYXRoMSwgc3NoYy0+aG9tZWRpcik7Ci0gICAgICAgIGlmKHJlc3VsdCkgewotICAgICAgICAgIGlmKHJlc3VsdCA9PSBDVVJMRV9PVVRfT0ZfTUVNT1JZKQotICAgICAgICAgICAgZmFpbGYoZGF0YSwgIk91dCBvZiBtZW1vcnkiKTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBmYWlsZihkYXRhLCAiU3ludGF4IGVycm9yOiBCYWQgZmlyc3QgcGFyYW1ldGVyIik7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogU0ZUUCBpcyBhIGJpbmFyeSBwcm90b2NvbCwgc28gd2UgZG9uJ3Qgc2VuZCB0ZXh0IGNvbW1hbmRzCi0gICAgICAgICAqIHRvIHRoZSBzZXJ2ZXIuIEluc3RlYWQsIHdlIHNjYW4gZm9yIGNvbW1hbmRzIHVzZWQgYnkKLSAgICAgICAgICogT3BlblNTSCdzIHNmdHAgcHJvZ3JhbSBhbmQgY2FsbCB0aGUgYXBwcm9wcmlhdGUgbGlic3NoMgotICAgICAgICAgKiBmdW5jdGlvbnMuCi0gICAgICAgICAqLwotICAgICAgICBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAiY2hncnAgIiwgNikgfHwKLSAgICAgICAgICAgc3RybmNhc2Vjb21wYXJlKGNtZCwgImNobW9kICIsIDYpIHx8Ci0gICAgICAgICAgIHN0cm5jYXNlY29tcGFyZShjbWQsICJjaG93biAiLCA2KSApIHsKLSAgICAgICAgICAvKiBhdHRyaWJ1dGUgY2hhbmdlICovCi0KLSAgICAgICAgICAvKiBzc2hjLT5xdW90ZV9wYXRoMSBjb250YWlucyB0aGUgbW9kZSB0byBzZXQgKi8KLSAgICAgICAgICAvKiBnZXQgdGhlIGRlc3RpbmF0aW9uICovCi0gICAgICAgICAgcmVzdWx0ID0gQ3VybF9nZXRfcGF0aG5hbWUoJmNwLCAmc3NoYy0+cXVvdGVfcGF0aDIsIHNzaGMtPmhvbWVkaXIpOwotICAgICAgICAgIGlmKHJlc3VsdCkgewotICAgICAgICAgICAgaWYocmVzdWx0ID09IENVUkxFX09VVF9PRl9NRU1PUlkpCi0gICAgICAgICAgICAgIGZhaWxmKGRhdGEsICJPdXQgb2YgbWVtb3J5Iik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIGZhaWxmKGRhdGEsICJTeW50YXggZXJyb3IgaW4gY2hncnAvY2htb2QvY2hvd246ICIKLSAgICAgICAgICAgICAgICAgICAgIkJhZCBzZWNvbmQgcGFyYW1ldGVyIik7Ci0gICAgICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgbWVtc2V0KCZzc2hjLT5xdW90ZV9hdHRycywgMCwgc2l6ZW9mKExJQlNTSDJfU0ZUUF9BVFRSSUJVVEVTKSk7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfU1RBVCk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYoc3RybmNhc2Vjb21wYXJlKGNtZCwgImxuICIsIDMpIHx8Ci0gICAgICAgICAgIHN0cm5jYXNlY29tcGFyZShjbWQsICJzeW1saW5rICIsIDgpKSB7Ci0gICAgICAgICAgLyogc3ltYm9saWMgbGlua2luZyAqLwotICAgICAgICAgIC8qIHNzaGMtPnF1b3RlX3BhdGgxIGlzIHRoZSBzb3VyY2UgKi8KLSAgICAgICAgICAvKiBnZXQgdGhlIGRlc3RpbmF0aW9uICovCi0gICAgICAgICAgcmVzdWx0ID0gQ3VybF9nZXRfcGF0aG5hbWUoJmNwLCAmc3NoYy0+cXVvdGVfcGF0aDIsIHNzaGMtPmhvbWVkaXIpOwotICAgICAgICAgIGlmKHJlc3VsdCkgewotICAgICAgICAgICAgaWYocmVzdWx0ID09IENVUkxFX09VVF9PRl9NRU1PUlkpCi0gICAgICAgICAgICAgIGZhaWxmKGRhdGEsICJPdXQgb2YgbWVtb3J5Iik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIGZhaWxmKGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICJTeW50YXggZXJyb3IgaW4gbG4vc3ltbGluazogQmFkIHNlY29uZCBwYXJhbWV0ZXIiKTsKLSAgICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9TWU1MSU5LKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJta2RpciAiLCA2KSkgewotICAgICAgICAgIC8qIGNyZWF0ZSBkaXIgKi8KLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9NS0RJUik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAicmVuYW1lICIsIDcpKSB7Ci0gICAgICAgICAgLyogcmVuYW1lIGZpbGUgKi8KLSAgICAgICAgICAvKiBmaXJzdCBwYXJhbSBpcyB0aGUgc291cmNlIHBhdGggKi8KLSAgICAgICAgICAvKiBzZWNvbmQgcGFyYW0gaXMgdGhlIGRlc3QuIHBhdGggKi8KLSAgICAgICAgICByZXN1bHQgPSBDdXJsX2dldF9wYXRobmFtZSgmY3AsICZzc2hjLT5xdW90ZV9wYXRoMiwgc3NoYy0+aG9tZWRpcik7Ci0gICAgICAgICAgaWYocmVzdWx0KSB7Ci0gICAgICAgICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfT1VUX09GX01FTU9SWSkKLSAgICAgICAgICAgICAgZmFpbGYoZGF0YSwgIk91dCBvZiBtZW1vcnkiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvciBpbiByZW5hbWU6IEJhZCBzZWNvbmQgcGFyYW1ldGVyIik7Ci0gICAgICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfUkVOQU1FKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJybWRpciAiLCA2KSkgewotICAgICAgICAgIC8qIGRlbGV0ZSBkaXIgKi8KLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9STURJUik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAicm0gIiwgMykpIHsKLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9VTkxJTkspOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0jaWZkZWYgSEFTX1NUQVRWRlNfU1VQUE9SVAotICAgICAgICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJzdGF0dmZzICIsIDgpKSB7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfU1RBVFZGUyk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIGZhaWxmKGRhdGEsICJVbmtub3duIFNGVFAgY29tbWFuZCIpOwotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NGVFBfTkVYVF9RVU9URToKLSAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7Ci0KLSAgICAgIHNzaGMtPnF1b3RlX2l0ZW0gPSBzc2hjLT5xdW90ZV9pdGVtLT5uZXh0OwotCi0gICAgICBpZihzc2hjLT5xdW90ZV9pdGVtKSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBpZihzc2hjLT5uZXh0c3RhdGUgIT0gU1NIX05PX1NUQVRFKSB7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgc3NoYy0+bmV4dHN0YXRlKTsKLSAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfR0VUSU5GTyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9TVEFUOgotICAgIHsKLSAgICAgIGNoYXIgKmNtZCA9IHNzaGMtPnF1b3RlX2l0ZW0tPmRhdGE7Ci0gICAgICBzc2hjLT5hY2NlcHRmYWlsID0gRkFMU0U7Ci0KLSAgICAgIC8qIGlmIGEgY29tbWFuZCBzdGFydHMgd2l0aCBhbiBhc3Rlcmlzaywgd2hpY2ggYSBsZWdhbCBTRlRQIGNvbW1hbmQgbmV2ZXIKLSAgICAgICAgIGNhbiwgdGhlIGNvbW1hbmQgd2lsbCBiZSBhbGxvd2VkIHRvIGZhaWwgd2l0aG91dCBpdCBjYXVzaW5nIGFueQotICAgICAgICAgYWJvcnRzIG9yIGNhbmNlbHMgZXRjLiBJdCB3aWxsIGNhdXNlIGxpYmN1cmwgdG8gYWN0IGFzIGlmIHRoZSBjb21tYW5kCi0gICAgICAgICBpcyBzdWNjZXNzZnVsLCB3aGF0ZXZlciB0aGUgc2VydmVyIHJlcG9uZHMuICovCi0KLSAgICAgIGlmKGNtZFswXSA9PSAnKicpIHsKLSAgICAgICAgY21kKys7Ci0gICAgICAgIHNzaGMtPmFjY2VwdGZhaWwgPSBUUlVFOwotICAgICAgfQotCi0gICAgICBpZighc3RybmNhc2Vjb21wYXJlKGNtZCwgImNobW9kIiwgNSkpIHsKLSAgICAgICAgLyogU2luY2UgY2hvd24gYW5kIGNoZ3JwIG9ubHkgc2V0IG93bmVyIE9SIGdyb3VwIGJ1dCBsaWJzc2gyIHdhbnRzIHRvCi0gICAgICAgICAqIHNldCB0aGVtIGJvdGggYXQgb25jZSwgd2UgbmVlZCB0byBvYnRhaW4gdGhlIGN1cnJlbnQgb3duZXJzaGlwCi0gICAgICAgICAqIGZpcnN0LiAgVGhpcyB0YWtlcyBhbiBleHRyYSBwcm90b2NvbCByb3VuZCB0cmlwLgotICAgICAgICAgKi8KLSAgICAgICAgcmMgPSBsaWJzc2gyX3NmdHBfc3RhdF9leChzc2hjLT5zZnRwX3Nlc3Npb24sIHNzaGMtPnF1b3RlX3BhdGgyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3NoYy0+cXVvdGVfcGF0aDIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX1NGVFBfU1RBVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3NoYy0+cXVvdGVfYXR0cnMpOwotICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmKHJjICE9IDAgJiYgIXNzaGMtPmFjY2VwdGZhaWwpIHsgLyogZ2V0IHRob3NlIGF0dHJpYnV0ZXMgKi8KLSAgICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOwotICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOwotICAgICAgICAgIGZhaWxmKGRhdGEsICJBdHRlbXB0IHRvIGdldCBTRlRQIHN0YXRzIGZhaWxlZDogJXMiLAotICAgICAgICAgICAgICAgIHNmdHBfbGlic3NoMl9zdHJlcnJvcihlcnIpKTsKLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvKiBOb3cgc2V0IHRoZSBuZXcgYXR0cmlidXRlcy4uLiAqLwotICAgICAgaWYoc3RybmNhc2Vjb21wYXJlKGNtZCwgImNoZ3JwIiwgNSkpIHsKLSAgICAgICAgc3NoYy0+cXVvdGVfYXR0cnMuZ2lkID0gc3RydG91bChzc2hjLT5xdW90ZV9wYXRoMSwgTlVMTCwgMTApOwotICAgICAgICBzc2hjLT5xdW90ZV9hdHRycy5mbGFncyA9IExJQlNTSDJfU0ZUUF9BVFRSX1VJREdJRDsKLSAgICAgICAgaWYoc3NoYy0+cXVvdGVfYXR0cnMuZ2lkID09IDAgJiYgIUlTRElHSVQoc3NoYy0+cXVvdGVfcGF0aDFbMF0pICYmCi0gICAgICAgICAgICFzc2hjLT5hY2NlcHRmYWlsKSB7Ci0gICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7Ci0gICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7Ci0gICAgICAgICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvcjogY2hncnAgZ2lkIG5vdCBhIG51bWJlciIpOwotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJjaG1vZCIsIDUpKSB7Ci0gICAgICAgIHNzaGMtPnF1b3RlX2F0dHJzLnBlcm1pc3Npb25zID0gc3RydG91bChzc2hjLT5xdW90ZV9wYXRoMSwgTlVMTCwgOCk7Ci0gICAgICAgIHNzaGMtPnF1b3RlX2F0dHJzLmZsYWdzID0gTElCU1NIMl9TRlRQX0FUVFJfUEVSTUlTU0lPTlM7Ci0gICAgICAgIC8qIHBlcm1pc3Npb25zIGFyZSBvY3RhbCAqLwotICAgICAgICBpZihzc2hjLT5xdW90ZV9hdHRycy5wZXJtaXNzaW9ucyA9PSAwICYmCi0gICAgICAgICAgICFJU0RJR0lUKHNzaGMtPnF1b3RlX3BhdGgxWzBdKSkgewotICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOwotICAgICAgICAgIGZhaWxmKGRhdGEsICJTeW50YXggZXJyb3I6IGNobW9kIHBlcm1pc3Npb25zIG5vdCBhIG51bWJlciIpOwotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJjaG93biIsIDUpKSB7Ci0gICAgICAgIHNzaGMtPnF1b3RlX2F0dHJzLnVpZCA9IHN0cnRvdWwoc3NoYy0+cXVvdGVfcGF0aDEsIE5VTEwsIDEwKTsKLSAgICAgICAgc3NoYy0+cXVvdGVfYXR0cnMuZmxhZ3MgPSBMSUJTU0gyX1NGVFBfQVRUUl9VSURHSUQ7Ci0gICAgICAgIGlmKHNzaGMtPnF1b3RlX2F0dHJzLnVpZCA9PSAwICYmICFJU0RJR0lUKHNzaGMtPnF1b3RlX3BhdGgxWzBdKSAmJgotICAgICAgICAgICAhc3NoYy0+YWNjZXB0ZmFpbCkgewotICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOwotICAgICAgICAgIGZhaWxmKGRhdGEsICJTeW50YXggZXJyb3I6IGNob3duIHVpZCBub3QgYSBudW1iZXIiKTsKLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAvKiBOb3cgc2VuZCB0aGUgY29tcGxldGVkIHN0cnVjdHVyZS4uLiAqLwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfU0VUU1RBVCk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1NFVFNUQVQ6Ci0gICAgICByYyA9IGxpYnNzaDJfc2Z0cF9zdGF0X2V4KHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3NoYy0+cXVvdGVfcGF0aDIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9TRlRQX1NFVFNUQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzc2hjLT5xdW90ZV9hdHRycyk7Ci0gICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmKHJjICE9IDAgJiYgIXNzaGMtPmFjY2VwdGZhaWwpIHsKLSAgICAgICAgZXJyID0gc2Z0cF9saWJzc2gyX2xhc3RfZXJyb3Ioc3NoYy0+c2Z0cF9zZXNzaW9uKTsKLSAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7Ci0gICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOwotICAgICAgICBmYWlsZihkYXRhLCAiQXR0ZW1wdCB0byBzZXQgU0ZUUCBzdGF0cyBmYWlsZWQ6ICVzIiwKLSAgICAgICAgICAgICAgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycikpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1NZTUxJTks6Ci0gICAgICByYyA9IGxpYnNzaDJfc2Z0cF9zeW1saW5rX2V4KHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3NoYy0+cXVvdGVfcGF0aDEpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cXVvdGVfcGF0aDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3NoYy0+cXVvdGVfcGF0aDIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9TRlRQX1NZTUxJTkspOwotICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpZihyYyAhPSAwICYmICFzc2hjLT5hY2NlcHRmYWlsKSB7Ci0gICAgICAgIGVyciA9IHNmdHBfbGlic3NoMl9sYXN0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbik7Ci0gICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgInN5bWxpbmsgY29tbWFuZCBmYWlsZWQ6ICVzIiwKLSAgICAgICAgICAgICAgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycikpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX01LRElSOgotICAgICAgcmMgPSBsaWJzc2gyX3NmdHBfbWtkaXJfZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3NoYy0+cXVvdGVfcGF0aDEpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5uZXdfZGlyZWN0b3J5X3Blcm1zKTsKLSAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgewotICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOwotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgIm1rZGlyIGNvbW1hbmQgZmFpbGVkOiAlcyIsIHNmdHBfbGlic3NoMl9zdHJlcnJvcihlcnIpKTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9SRU5BTUU6Ci0gICAgICByYyA9IGxpYnNzaDJfc2Z0cF9yZW5hbWVfZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHNzaGMtPnF1b3RlX3BhdGgxKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cXVvdGVfcGF0aDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzc2hjLT5xdW90ZV9wYXRoMikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfU0ZUUF9SRU5BTUVfT1ZFUldSSVRFIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX1NGVFBfUkVOQU1FX0FUT01JQyB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9TRlRQX1JFTkFNRV9OQVRJVkUpOwotCi0gICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmKHJjICE9IDAgJiYgIXNzaGMtPmFjY2VwdGZhaWwpIHsKLSAgICAgICAgZXJyID0gc2Z0cF9saWJzc2gyX2xhc3RfZXJyb3Ioc3NoYy0+c2Z0cF9zZXNzaW9uKTsKLSAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7Ci0gICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOwotICAgICAgICBmYWlsZihkYXRhLCAicmVuYW1lIGNvbW1hbmQgZmFpbGVkOiAlcyIsIHNmdHBfbGlic3NoMl9zdHJlcnJvcihlcnIpKTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9STURJUjoKLSAgICAgIHJjID0gbGlic3NoMl9zZnRwX3JtZGlyX2V4KHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHNzaGMtPnF1b3RlX3BhdGgxKSkpOwotICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBpZihyYyAhPSAwICYmICFzc2hjLT5hY2NlcHRmYWlsKSB7Ci0gICAgICAgIGVyciA9IHNmdHBfbGlic3NoMl9sYXN0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbik7Ci0gICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwotICAgICAgICBmYWlsZihkYXRhLCAicm1kaXIgY29tbWFuZCBmYWlsZWQ6ICVzIiwgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycikpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1VOTElOSzoKLSAgICAgIHJjID0gbGlic3NoMl9zZnRwX3VubGlua19leChzc2hjLT5zZnRwX3Nlc3Npb24sIHNzaGMtPnF1b3RlX3BhdGgxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3NoYy0+cXVvdGVfcGF0aDEpKSk7Ci0gICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmKHJjICE9IDAgJiYgIXNzaGMtPmFjY2VwdGZhaWwpIHsKLSAgICAgICAgZXJyID0gc2Z0cF9saWJzc2gyX2xhc3RfZXJyb3Ioc3NoYy0+c2Z0cF9zZXNzaW9uKTsKLSAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7Ci0gICAgICAgIGZhaWxmKGRhdGEsICJybSBjb21tYW5kIGZhaWxlZDogJXMiLCBzZnRwX2xpYnNzaDJfc3RyZXJyb3IoZXJyKSk7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfTkVYVF9RVU9URSk7Ci0gICAgICBicmVhazsKLQotI2lmZGVmIEhBU19TVEFUVkZTX1NVUFBPUlQKLSAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1NUQVRWRlM6Ci0gICAgewotICAgICAgTElCU1NIMl9TRlRQX1NUQVRWRlMgc3RhdHZmczsKLSAgICAgIHJjID0gbGlic3NoMl9zZnRwX3N0YXR2ZnMoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzc2hjLT5xdW90ZV9wYXRoMSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHZmcyk7Ci0KLSAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgewotICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOwotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgInN0YXR2ZnMgY29tbWFuZCBmYWlsZWQ6ICVzIiwgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycikpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYocmMgPT0gMCkgewotICAgICAgICBjaGFyICp0bXAgPSBhcHJpbnRmKCJzdGF0dmZzOlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2JzaXplOiAlbGx1XG4iICJmX2Zyc2l6ZTogJWxsdVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2Jsb2NrczogJWxsdVxuIiAiZl9iZnJlZTogJWxsdVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2JhdmFpbDogJWxsdVxuIiAiZl9maWxlczogJWxsdVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2ZmcmVlOiAlbGx1XG4iICJmX2ZhdmFpbDogJWxsdVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2ZzaWQ6ICVsbHVcbiIgImZfZmxhZzogJWxsdVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX25hbWVtYXg6ICVsbHVcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy5mX2JzaXplLCBzdGF0dmZzLmZfZnJzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR2ZnMuZl9ibG9ja3MsIHN0YXR2ZnMuZl9iZnJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dmZzLmZfYmF2YWlsLCBzdGF0dmZzLmZfZmlsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy5mX2ZmcmVlLCBzdGF0dmZzLmZfZmF2YWlsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR2ZnMuZl9mc2lkLCBzdGF0dmZzLmZfZmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dmZzLmZfbmFtZW1heCk7Ci0gICAgICAgIGlmKCF0bXApIHsKLSAgICAgICAgICByZXN1bHQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9IRUFERVIsIHRtcCwgc3RybGVuKHRtcCkpOwotICAgICAgICBmcmVlKHRtcCk7Ci0gICAgICAgIGlmKHJlc3VsdCkgewotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7Ci0gICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfTkVYVF9RVU9URSk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0jZW5kaWYKLSAgICBjYXNlIFNTSF9TRlRQX0dFVElORk86Ci0gICAgewotICAgICAgaWYoZGF0YS0+c2V0LmdldF9maWxldGltZSkgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9GSUxFVElNRSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVFJBTlNfSU5JVCk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIFNTSF9TRlRQX0ZJTEVUSU1FOgotICAgIHsKLSAgICAgIExJQlNTSDJfU0ZUUF9BVFRSSUJVVEVTIGF0dHJzOwotCi0gICAgICByYyA9IGxpYnNzaDJfc2Z0cF9zdGF0X2V4KHNzaGMtPnNmdHBfc2Vzc2lvbiwgc2Z0cF9zY3AtPnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc2Z0cF9zY3AtPnBhdGgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9TRlRQX1NUQVQsICZhdHRycyk7Ci0gICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmKHJjID09IDApIHsKLSAgICAgICAgZGF0YS0+aW5mby5maWxldGltZSA9IGF0dHJzLm10aW1lOwotICAgICAgfQotCi0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9UUkFOU19JTklUKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgU1NIX1NGVFBfVFJBTlNfSU5JVDoKLSAgICAgIGlmKGRhdGEtPnNldC51cGxvYWQpCi0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1VQTE9BRF9JTklUKTsKLSAgICAgIGVsc2UgewotICAgICAgICBpZihzZnRwX3NjcC0+cGF0aFtzdHJsZW4oc2Z0cF9zY3AtPnBhdGgpLTFdID09ICcvJykKLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9SRUFERElSX0lOSVQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfRE9XTkxPQURfSU5JVCk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NGVFBfVVBMT0FEX0lOSVQ6Ci0gICAgewotICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKLSAgICAgIC8qCi0gICAgICAgKiBOT1RFISEhICBsaWJzc2gyIHJlcXVpcmVzIHRoYXQgdGhlIGRlc3RpbmF0aW9uIHBhdGggaXMgYSBmdWxsIHBhdGgKLSAgICAgICAqICAgICAgICAgIHRoYXQgaW5jbHVkZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUgYW5kIG5hbWUgT1IgZW5kcyBpbiBhICIvIgotICAgICAgICogICAgICAgICAgSWYgdGhpcyBpcyBub3QgZG9uZSB0aGUgZGVzdGluYXRpb24gZmlsZSB3aWxsIGJlIG5hbWVkIHRoZQotICAgICAgICogICAgICAgICAgc2FtZSBuYW1lIGFzIHRoZSBsYXN0IGRpcmVjdG9yeSBpbiB0aGUgcGF0aC4KLSAgICAgICAqLwotCi0gICAgICBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSAhPSAwKSB7Ci0gICAgICAgIExJQlNTSDJfU0ZUUF9BVFRSSUJVVEVTIGF0dHJzOwotICAgICAgICBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA8IDApIHsKLSAgICAgICAgICByYyA9IGxpYnNzaDJfc2Z0cF9zdGF0X2V4KHNzaGMtPnNmdHBfc2Vzc2lvbiwgc2Z0cF9zY3AtPnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHNmdHBfc2NwLT5wYXRoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX1NGVFBfU1RBVCwgJmF0dHJzKTsKLSAgICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmKHJjKSB7Ci0gICAgICAgICAgICBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA9IDA7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY3VybF9vZmZfdCBzaXplID0gYXR0cnMuZmlsZXNpemU7Ci0gICAgICAgICAgICBpZihzaXplIDwgMCkgewotICAgICAgICAgICAgICBmYWlsZihkYXRhLCAiQmFkIGZpbGUgc2l6ZSAoJSIgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiKSIsIHNpemUpOwotICAgICAgICAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0RPV05MT0FEX1JFU1VNRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tID0gYXR0cnMuZmlsZXNpemU7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmKGRhdGEtPnNldC5mdHBfYXBwZW5kKQotICAgICAgICAvKiBUcnkgdG8gb3BlbiBmb3IgYXBwZW5kLCBidXQgY3JlYXRlIGlmIG5vbmV4aXN0aW5nICovCi0gICAgICAgIGZsYWdzID0gTElCU1NIMl9GWEZfV1JJVEV8TElCU1NIMl9GWEZfQ1JFQVR8TElCU1NIMl9GWEZfQVBQRU5EOwotICAgICAgZWxzZSBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA+IDApCi0gICAgICAgIC8qIElmIHdlIGhhdmUgcmVzdGFydCBwb3NpdGlvbiB0aGVuIG9wZW4gZm9yIGFwcGVuZCAqLwotICAgICAgICBmbGFncyA9IExJQlNTSDJfRlhGX1dSSVRFfExJQlNTSDJfRlhGX0FQUEVORDsKLSAgICAgIGVsc2UKLSAgICAgICAgLyogQ2xlYXIgZmlsZSBiZWZvcmUgd3JpdGluZyAobm9ybWFsIGJlaGF2aW91cikgKi8KLSAgICAgICAgZmxhZ3MgPSBMSUJTU0gyX0ZYRl9XUklURXxMSUJTU0gyX0ZYRl9DUkVBVHxMSUJTU0gyX0ZYRl9UUlVOQzsKLQotICAgICAgc3NoYy0+c2Z0cF9oYW5kbGUgPQotICAgICAgICBsaWJzc2gyX3NmdHBfb3Blbl9leChzc2hjLT5zZnRwX3Nlc3Npb24sIHNmdHBfc2NwLT5wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHNmdHBfc2NwLT5wYXRoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLCBkYXRhLT5zZXQubmV3X2ZpbGVfcGVybXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfU0ZUUF9PUEVORklMRSk7Ci0KLSAgICAgIGlmKCFzc2hjLT5zZnRwX2hhbmRsZSkgewotICAgICAgICByYyA9IGxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm5vKHNzaGMtPnNzaF9zZXNzaW9uKTsKLQotICAgICAgICBpZihMSUJTU0gyX0VSUk9SX0VBR0FJTiA9PSByYykKLSAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZihMSUJTU0gyX0VSUk9SX1NGVFBfUFJPVE9DT0wgPT0gcmMpCi0gICAgICAgICAgLyogb25seSB3aGVuIHRoZXJlIHdhcyBhbiBTRlRQIHByb3RvY29sIGVycm9yIGNhbiB3ZSBleHRyYWN0Ci0gICAgICAgICAgICAgdGhlIHNmdHAgZXJyb3IhICovCi0gICAgICAgICAgZXJyID0gc2Z0cF9saWJzc2gyX2xhc3RfZXJyb3Ioc3NoYy0+c2Z0cF9zZXNzaW9uKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIGVyciA9IC0xOyAvKiBub3QgYW4gc2Z0cCBlcnJvciBhdCBhbGwgKi8KLQotICAgICAgICBpZihzc2hjLT5zZWNvbmRDcmVhdGVEaXJzKSB7Ci0gICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBlcnI+PSBMSUJTU0gyX0ZYX09LPwotICAgICAgICAgICAgc2Z0cF9saWJzc2gyX2Vycm9yX3RvX0NVUkxFKGVycik6Q1VSTEVfU1NIOwotICAgICAgICAgIGZhaWxmKGRhdGEsICJDcmVhdGluZyB0aGUgZGlyL2ZpbGUgZmFpbGVkOiAlcyIsCi0gICAgICAgICAgICAgICAgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycikpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmKCgoZXJyID09IExJQlNTSDJfRlhfTk9fU1VDSF9GSUxFKSB8fAotICAgICAgICAgICAgKGVyciA9PSBMSUJTU0gyX0ZYX0ZBSUxVUkUpIHx8Ci0gICAgICAgICAgICAoZXJyID09IExJQlNTSDJfRlhfTk9fU1VDSF9QQVRIKSkgJiYKLSAgICAgICAgICAgKGRhdGEtPnNldC5mdHBfY3JlYXRlX21pc3NpbmdfZGlycyAmJgotICAgICAgICAgICAgKHN0cmxlbihzZnRwX3NjcC0+cGF0aCkgPiAxKSkpIHsKLSAgICAgICAgICAvKiB0cnkgdG8gY3JlYXRlIHRoZSBwYXRoIHJlbW90ZWx5ICovCi0gICAgICAgICAgcmMgPSAwOyAvKiBjbGVhciByYyBhbmQgY29udGludWUgKi8KLSAgICAgICAgICBzc2hjLT5zZWNvbmRDcmVhdGVEaXJzID0gMTsKLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DUkVBVEVfRElSU19JTklUKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBlcnI+PSBMSUJTU0gyX0ZYX09LPwotICAgICAgICAgIHNmdHBfbGlic3NoMl9lcnJvcl90b19DVVJMRShlcnIpOkNVUkxFX1NTSDsKLSAgICAgICAgaWYoIXNzaGMtPmFjdHVhbGNvZGUpIHsKLSAgICAgICAgICAvKiBTb21ldGltZXMsIGZvciBzb21lIHJlYXNvbiBsaWJzc2gyX3NmdHBfbGFzdF9lcnJvcigpIHJldHVybnMKLSAgICAgICAgICAgICB6ZXJvIGV2ZW4gdGhvdWdoIGxpYnNzaDJfc2Z0cF9vcGVuKCkgZmFpbGVkIHByZXZpb3VzbHkhIFdlIG5lZWQKLSAgICAgICAgICAgICB0byB3b3JrIGFyb3VuZCB0aGF0ISAqLwotICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9TU0g7Ci0gICAgICAgICAgZXJyID0gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgZmFpbGYoZGF0YSwgIlVwbG9hZCBmYWlsZWQ6ICVzICglZC8lZCkiLAotICAgICAgICAgICAgICBlcnI+PSBMSUJTU0gyX0ZYX09LP3NmdHBfbGlic3NoMl9zdHJlcnJvcihlcnIpOiJzc2ggZXJyb3IiLAotICAgICAgICAgICAgICBlcnIsIHJjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIC8qIElmIHdlIGhhdmUgYSByZXN0YXJ0IHBvaW50IHRoZW4gd2UgbmVlZCB0byBzZWVrIHRvIHRoZSBjb3JyZWN0Ci0gICAgICAgICBwb3NpdGlvbi4gKi8KLSAgICAgIGlmKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tID4gMCkgewotICAgICAgICAvKiBMZXQncyByZWFkIG9mZiB0aGUgcHJvcGVyIGFtb3VudCBvZiBieXRlcyBmcm9tIHRoZSBpbnB1dC4gKi8KLSAgICAgICAgaWYoY29ubi0+c2Vla19mdW5jKSB7Ci0gICAgICAgICAgQ3VybF9zZXRfaW5fY2FsbGJhY2soZGF0YSwgdHJ1ZSk7Ci0gICAgICAgICAgc2Vla2VyciA9IGNvbm4tPnNlZWtfZnVuYyhjb25uLT5zZWVrX2NsaWVudCwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUVLX1NFVCk7Ci0gICAgICAgICAgQ3VybF9zZXRfaW5fY2FsbGJhY2soZGF0YSwgZmFsc2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoc2Vla2VyciAhPSBDVVJMX1NFRUtGVU5DX09LKSB7Ci0gICAgICAgICAgY3VybF9vZmZfdCBwYXNzZWQgPSAwOwotCi0gICAgICAgICAgaWYoc2Vla2VyciAhPSBDVVJMX1NFRUtGVU5DX0NBTlRTRUVLKSB7Ci0gICAgICAgICAgICBmYWlsZihkYXRhLCAiQ291bGQgbm90IHNlZWsgc3RyZWFtIik7Ci0gICAgICAgICAgICByZXR1cm4gQ1VSTEVfRlRQX0NPVUxETlRfVVNFX1JFU1Q7Ci0gICAgICAgICAgfQotICAgICAgICAgIC8qIHNlZWtlcnIgPT0gQ1VSTF9TRUVLRlVOQ19DQU5UU0VFSyAoY2FuJ3Qgc2VlayB0byBvZmZzZXQpICovCi0gICAgICAgICAgZG8gewotICAgICAgICAgICAgc2l6ZV90IHJlYWR0aGlzYW1vdW50bm93ID0KLSAgICAgICAgICAgICAgKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tIC0gcGFzc2VkID4gZGF0YS0+c2V0LmJ1ZmZlcl9zaXplKSA/Ci0gICAgICAgICAgICAgIChzaXplX3QpZGF0YS0+c2V0LmJ1ZmZlcl9zaXplIDoKLSAgICAgICAgICAgICAgY3VybHhfc290b3V6KGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tIC0gcGFzc2VkKTsKLQotICAgICAgICAgICAgc2l6ZV90IGFjdHVhbGx5cmVhZDsKLSAgICAgICAgICAgIEN1cmxfc2V0X2luX2NhbGxiYWNrKGRhdGEsIHRydWUpOwotICAgICAgICAgICAgYWN0dWFsbHlyZWFkID0gZGF0YS0+c3RhdGUuZnJlYWRfZnVuYyhkYXRhLT5zdGF0ZS5idWZmZXIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWR0aGlzYW1vdW50bm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5pbik7Ci0gICAgICAgICAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIHBhc3NlZCArPSBhY3R1YWxseXJlYWQ7Ci0gICAgICAgICAgICBpZigoYWN0dWFsbHlyZWFkID09IDApIHx8IChhY3R1YWxseXJlYWQgPiByZWFkdGhpc2Ftb3VudG5vdykpIHsKLSAgICAgICAgICAgICAgLyogdGhpcyBjaGVja3MgZm9yIGdyZWF0ZXItdGhhbiBvbmx5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQotICAgICAgICAgICAgICAgICBDVVJMX1JFQURGVU5DX0FCT1JUIHJldHVybiBjb2RlIHN0aWxsIGFib3J0cyAqLwotICAgICAgICAgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHRvIHJlYWQgZGF0YSIpOwotICAgICAgICAgICAgICByZXR1cm4gQ1VSTEVfRlRQX0NPVUxETlRfVVNFX1JFU1Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSB3aGlsZShwYXNzZWQgPCBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBub3csIGRlY3JlYXNlIHRoZSBzaXplIG9mIHRoZSByZWFkICovCi0gICAgICAgIGlmKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgPiAwKSB7Ci0gICAgICAgICAgZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSAtPSBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbTsKLSAgICAgICAgICBkYXRhLT5yZXEuc2l6ZSA9IGRhdGEtPnN0YXRlLmluZmlsZXNpemU7Ci0gICAgICAgICAgQ3VybF9wZ3JzU2V0VXBsb2FkU2l6ZShkYXRhLCBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplKTsKLSAgICAgICAgfQotCi0gICAgICAgIFNGVFBfU0VFSyhzc2hjLT5zZnRwX2hhbmRsZSwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pOwotICAgICAgfQotICAgICAgaWYoZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSA+IDApIHsKLSAgICAgICAgZGF0YS0+cmVxLnNpemUgPSBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplOwotICAgICAgICBDdXJsX3BncnNTZXRVcGxvYWRTaXplKGRhdGEsIGRhdGEtPnN0YXRlLmluZmlsZXNpemUpOwotICAgICAgfQotICAgICAgLyogdXBsb2FkIGRhdGEgKi8KLSAgICAgIEN1cmxfc2V0dXBfdHJhbnNmZXIoZGF0YSwgLTEsIC0xLCBGQUxTRSwgRklSU1RTT0NLRVQpOwotCi0gICAgICAvKiBub3Qgc2V0IGJ5IEN1cmxfc2V0dXBfdHJhbnNmZXIgdG8gcHJlc2VydmUga2VlcG9uIGJpdHMgKi8KLSAgICAgIGNvbm4tPnNvY2tmZCA9IGNvbm4tPndyaXRlc29ja2ZkOwotCi0gICAgICBpZihyZXN1bHQpIHsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIC8qIHN0b3JlIHRoaXMgb3JpZ2luYWwgYml0bWFzayBzZXR1cCB0byB1c2UgbGF0ZXIgb24gaWYgd2UgY2FuJ3QKLSAgICAgICAgICAgZmlndXJlIG91dCBhICJyZWFsIiBiaXRtYXNrICovCi0gICAgICAgIHNzaGMtPm9yaWdfd2FpdGZvciA9IGRhdGEtPnJlcS5rZWVwb247Ci0KLSAgICAgICAgLyogd2Ugd2FudCB0byB1c2UgdGhlIF9zZW5kaW5nXyBmdW5jdGlvbiBldmVuIHdoZW4gdGhlIHNvY2tldCB0dXJucwotICAgICAgICAgICBvdXQgcmVhZGFibGUgYXMgdGhlIHVuZGVybHlpbmcgbGlic3NoMiBzZnRwIHNlbmQgZnVuY3Rpb24gd2lsbCBkZWFsCi0gICAgICAgICAgIHdpdGggYm90aCBhY2NvcmRpbmdseSAqLwotICAgICAgICBjb25uLT5jc2VsZWN0X2JpdHMgPSBDVVJMX0NTRUxFQ1RfT1VUOwotCi0gICAgICAgIC8qIHNpbmNlIHdlIGRvbid0IHJlYWxseSB3YWl0IGZvciBhbnl0aGluZyBhdCB0aGlzIHBvaW50LCB3ZSB3YW50IHRoZQotICAgICAgICAgICBzdGF0ZSBtYWNoaW5lIHRvIG1vdmUgb24gYXMgc29vbiBhcyBwb3NzaWJsZSBzbyB3ZSBzZXQgYSB2ZXJ5IHNob3J0Ci0gICAgICAgICAgIHRpbWVvdXQgaGVyZSAqLwotICAgICAgICBDdXJsX2V4cGlyZShkYXRhLCAwLCBFWFBJUkVfUlVOX05PVyk7Ci0KLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBTU0hfU0ZUUF9DUkVBVEVfRElSU19JTklUOgotICAgICAgaWYoc3RybGVuKHNmdHBfc2NwLT5wYXRoKSA+IDEpIHsKLSAgICAgICAgc3NoYy0+c2xhc2hfcG9zID0gc2Z0cF9zY3AtPnBhdGggKyAxOyAvKiBpZ25vcmUgdGhlIGxlYWRpbmcgJy8nICovCi0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NSRUFURV9ESVJTKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9VUExPQURfSU5JVCk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NGVFBfQ1JFQVRFX0RJUlM6Ci0gICAgICBzc2hjLT5zbGFzaF9wb3MgPSBzdHJjaHIoc3NoYy0+c2xhc2hfcG9zLCAnLycpOwotICAgICAgaWYoc3NoYy0+c2xhc2hfcG9zKSB7Ci0gICAgICAgICpzc2hjLT5zbGFzaF9wb3MgPSAwOwotCi0gICAgICAgIGluZm9mKGRhdGEsICJDcmVhdGluZyBkaXJlY3RvcnkgJyVzJ1xuIiwgc2Z0cF9zY3AtPnBhdGgpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DUkVBVEVfRElSU19NS0RJUik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVVBMT0FEX0lOSVQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX0NSRUFURV9ESVJTX01LRElSOgotICAgICAgLyogJ21vZGUnIC0gcGFyYW1ldGVyIGlzIHByZWxpbWluYXJ5IC0gZGVmYXVsdCB0byAwNjQ0ICovCi0gICAgICByYyA9IGxpYnNzaDJfc2Z0cF9ta2Rpcl9leChzc2hjLT5zZnRwX3Nlc3Npb24sIHNmdHBfc2NwLT5wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzZnRwX3NjcC0+cGF0aCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0Lm5ld19kaXJlY3RvcnlfcGVybXMpOwotICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICAqc3NoYy0+c2xhc2hfcG9zID0gJy8nOwotICAgICAgKytzc2hjLT5zbGFzaF9wb3M7Ci0gICAgICBpZihyYyA8IDApIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogQWJvcnQgaWYgZmFpbHVyZSB3YXNuJ3QgdGhhdCB0aGUgZGlyIGFscmVhZHkgZXhpc3RzIG9yIHRoZQotICAgICAgICAgKiBwZXJtaXNzaW9uIHdhcyBkZW5pZWQgKGNyZWF0aW9uIG1pZ2h0IHN1Y2NlZWQgZnVydGhlciBkb3duIHRoZQotICAgICAgICAgKiBwYXRoKSAtIHJldHJ5IG9uIHVuc3BlY2lmaWMgRkFJTFVSRSBhbHNvCi0gICAgICAgICAqLwotICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOwotICAgICAgICBpZigoZXJyICE9IExJQlNTSDJfRlhfRklMRV9BTFJFQURZX0VYSVNUUykgJiYKLSAgICAgICAgICAgKGVyciAhPSBMSUJTU0gyX0ZYX0ZBSUxVUkUpICYmCi0gICAgICAgICAgIChlcnIgIT0gTElCU1NIMl9GWF9QRVJNSVNTSU9OX0RFTklFRCkpIHsKLSAgICAgICAgICByZXN1bHQgPSBzZnRwX2xpYnNzaDJfZXJyb3JfdG9fQ1VSTEUoZXJyKTsKLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdD9yZXN1bHQ6Q1VSTEVfU1NIOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJjID0gMDsgLyogY2xlYXIgcmMgYW5kIGNvbnRpbnVlICovCi0gICAgICB9Ci0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DUkVBVEVfRElSUyk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NGVFBfUkVBRERJUl9JTklUOgotICAgICAgQ3VybF9wZ3JzU2V0RG93bmxvYWRTaXplKGRhdGEsIC0xKTsKLSAgICAgIGlmKGRhdGEtPnNldC5vcHRfbm9fYm9keSkgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICAvKgotICAgICAgICogVGhpcyBpcyBhIGRpcmVjdG9yeSB0aGF0IHdlIGFyZSB0cnlpbmcgdG8gZ2V0LCBzbyBwcm9kdWNlIGEgZGlyZWN0b3J5Ci0gICAgICAgKiBsaXN0aW5nCi0gICAgICAgKi8KLSAgICAgIHNzaGMtPnNmdHBfaGFuZGxlID0gbGlic3NoMl9zZnRwX29wZW5fZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZnRwX3NjcC0+cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihzZnRwX3NjcC0+cGF0aCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBMSUJTU0gyX1NGVFBfT1BFTkRJUik7Ci0gICAgICBpZighc3NoYy0+c2Z0cF9oYW5kbGUpIHsKLSAgICAgICAgaWYobGlic3NoMl9zZXNzaW9uX2xhc3RfZXJybm8oc3NoYy0+c3NoX3Nlc3Npb24pID09Ci0gICAgICAgICAgIExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Ci0gICAgICAgICAgcmMgPSBMSUJTU0gyX0VSUk9SX0VBR0FJTjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOwotICAgICAgICBmYWlsZihkYXRhLCAiQ291bGQgbm90IG9wZW4gZGlyZWN0b3J5IGZvciByZWFkaW5nOiAlcyIsCi0gICAgICAgICAgICAgIHNmdHBfbGlic3NoMl9zdHJlcnJvcihlcnIpKTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICByZXN1bHQgPSBzZnRwX2xpYnNzaDJfZXJyb3JfdG9fQ1VSTEUoZXJyKTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdD9yZXN1bHQ6Q1VSTEVfU1NIOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUgPSBtYWxsb2MoUEFUSF9NQVggKyAxKTsKLSAgICAgIGlmKCFzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lKSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgc3NoYy0+cmVhZGRpcl9sb25nZW50cnkgPSBtYWxsb2MoUEFUSF9NQVggKyAxKTsKLSAgICAgIGlmKCFzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSkgewotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQURESVIpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1JFQURESVI6Ci0gICAgICByYyA9IGxpYnNzaDJfc2Z0cF9yZWFkZGlyX2V4KHNzaGMtPnNmdHBfaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVRIX01BWCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9sb25nZW50cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBVEhfTUFYLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3NoYy0+cmVhZGRpcl9hdHRycyk7Ci0gICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGlmKHJjID4gMCkgewotICAgICAgICBzc2hjLT5yZWFkZGlyX2xlbiA9IChzaXplX3QpIHJjOwotICAgICAgICBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lW3NzaGMtPnJlYWRkaXJfbGVuXSA9ICdcMCc7Ci0KLSAgICAgICAgaWYoZGF0YS0+c2V0LmZ0cF9saXN0X29ubHkpIHsKLSAgICAgICAgICBjaGFyICp0bXBMaW5lOwotCi0gICAgICAgICAgdG1wTGluZSA9IGFwcmludGYoIiVzXG4iLCBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lKTsKLSAgICAgICAgICBpZih0bXBMaW5lID09IE5VTEwpIHsKLSAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKLSAgICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wTGluZSwgc3NoYy0+cmVhZGRpcl9sZW4gKyAxKTsKLSAgICAgICAgICBmcmVlKHRtcExpbmUpOwotCi0gICAgICAgICAgaWYocmVzdWx0KSB7Ci0gICAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgLyogc2luY2UgdGhpcyBjb3VudHMgd2hhdCB3ZSBzZW5kIHRvIHRoZSBjbGllbnQsIHdlIGluY2x1ZGUgdGhlCi0gICAgICAgICAgICAgbmV3bGluZSBpbiB0aGlzIGNvdW50ZXIgKi8KLSAgICAgICAgICBkYXRhLT5yZXEuYnl0ZWNvdW50ICs9IHNzaGMtPnJlYWRkaXJfbGVuICsgMTsKLQotICAgICAgICAgIC8qIG91dHB1dCBkZWJ1ZyBvdXRwdXQgaWYgdGhhdCBpcyByZXF1ZXN0ZWQgKi8KLSAgICAgICAgICBpZihkYXRhLT5zZXQudmVyYm9zZSkgewotICAgICAgICAgICAgQ3VybF9kZWJ1ZyhkYXRhLCBDVVJMSU5GT19EQVRBX09VVCwgc3NoYy0+cmVhZGRpcl9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9sZW4pOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4gPSBzdHJsZW4oc3NoYy0+cmVhZGRpcl9sb25nZW50cnkpOwotICAgICAgICAgIHNzaGMtPnJlYWRkaXJfdG90YWxMZW4gPSA4MCArIHNzaGMtPnJlYWRkaXJfY3VyckxlbjsKLSAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xpbmUgPSBjYWxsb2Moc3NoYy0+cmVhZGRpcl90b3RhbExlbiwgMSk7Ci0gICAgICAgICAgaWYoIXNzaGMtPnJlYWRkaXJfbGluZSkgewotICAgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lKTsKLSAgICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9sb25nZW50cnkpOwotICAgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBtZW1jcHkoc3NoYy0+cmVhZGRpcl9saW5lLCBzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSwKLSAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuKTsKLSAgICAgICAgICBpZigoc3NoYy0+cmVhZGRpcl9hdHRycy5mbGFncyAmIExJQlNTSDJfU0ZUUF9BVFRSX1BFUk1JU1NJT05TKSAmJgotICAgICAgICAgICAgICgoc3NoYy0+cmVhZGRpcl9hdHRycy5wZXJtaXNzaW9ucyAmIExJQlNTSDJfU0ZUUF9TX0lGTVQpID09Ci0gICAgICAgICAgICAgIExJQlNTSDJfU0ZUUF9TX0lGTE5LKSkgewotICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9saW5rUGF0aCA9IG1hbGxvYyhQQVRIX01BWCArIDEpOwotICAgICAgICAgICAgaWYoc3NoYy0+cmVhZGRpcl9saW5rUGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7Ci0gICAgICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9sb25nZW50cnkpOwotICAgICAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbXNucHJpbnRmKHNzaGMtPnJlYWRkaXJfbGlua1BhdGgsIFBBVEhfTUFYLCAiJXMlcyIsIHNmdHBfc2NwLT5wYXRoLAotICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUpOwotICAgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUl9MSU5LKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9SRUFERElSX0JPVFRPTSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYocmMgPT0gMCkgewotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUpOwotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfbG9uZ2VudHJ5KTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUl9ET05FKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHJjIDwgMCkgewotICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOwotICAgICAgICByZXN1bHQgPSBzZnRwX2xpYnNzaDJfZXJyb3JfdG9fQ1VSTEUoZXJyKTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdD9yZXN1bHQ6Q1VSTEVfU1NIOwotICAgICAgICBmYWlsZihkYXRhLCAiQ291bGQgbm90IG9wZW4gcmVtb3RlIGZpbGUgZm9yIHJlYWRpbmc6ICVzIDo6ICVkIiwKLSAgICAgICAgICAgICAgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVyciksCi0gICAgICAgICAgICAgIGxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm5vKHNzaGMtPnNzaF9zZXNzaW9uKSk7Ci0gICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7Ci0gICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9sb25nZW50cnkpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX1JFQURESVJfTElOSzoKLSAgICAgIHJjID0KLSAgICAgICAgbGlic3NoMl9zZnRwX3N5bWxpbmtfZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xpbmtQYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHNzaGMtPnJlYWRkaXJfbGlua1BhdGgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFUSF9NQVgsIExJQlNTSDJfU0ZUUF9SRUFETElOSyk7Ci0gICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHNzaGMtPnJlYWRkaXJfbGVuID0gKHNpemVfdCkgcmM7Ci0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfbGlua1BhdGgpOwotCi0gICAgICAvKiBnZXQgcm9vbSBmb3IgdGhlIGZpbGVuYW1lIGFuZCBleHRyYSBvdXRwdXQgKi8KLSAgICAgIHNzaGMtPnJlYWRkaXJfdG90YWxMZW4gKz0gNCArIHNzaGMtPnJlYWRkaXJfbGVuOwotICAgICAgbmV3X3JlYWRkaXJfbGluZSA9IEN1cmxfc2FmZXJlYWxsb2Moc3NoYy0+cmVhZGRpcl9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl90b3RhbExlbik7Ci0gICAgICBpZighbmV3X3JlYWRkaXJfbGluZSkgewotICAgICAgICBzc2hjLT5yZWFkZGlyX2xpbmUgPSBOVUxMOwotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUpOwotICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfbG9uZ2VudHJ5KTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBzc2hjLT5yZWFkZGlyX2xpbmUgPSBuZXdfcmVhZGRpcl9saW5lOwotCi0gICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4gKz0gbXNucHJpbnRmKHNzaGMtPnJlYWRkaXJfbGluZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfY3VyckxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl90b3RhbExlbiAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfY3VyckxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAtPiAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUpOwotCi0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9SRUFERElSX0JPVFRPTSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NGVFBfUkVBRERJUl9CT1RUT006Ci0gICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4gKz0gbXNucHJpbnRmKHNzaGMtPnJlYWRkaXJfbGluZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfY3VyckxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl90b3RhbExlbiAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfY3VyckxlbiwgIlxuIik7Ci0gICAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuKTsKLQotICAgICAgaWYoIXJlc3VsdCkgewotCi0gICAgICAgIC8qIG91dHB1dCBkZWJ1ZyBvdXRwdXQgaWYgdGhhdCBpcyByZXF1ZXN0ZWQgKi8KLSAgICAgICAgaWYoZGF0YS0+c2V0LnZlcmJvc2UpIHsKLSAgICAgICAgICBDdXJsX2RlYnVnKGRhdGEsIENVUkxJTkZPX0RBVEFfT1VULCBzc2hjLT5yZWFkZGlyX2xpbmUsCi0gICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4pOwotICAgICAgICB9Ci0gICAgICAgIGRhdGEtPnJlcS5ieXRlY291bnQgKz0gc3NoYy0+cmVhZGRpcl9jdXJyTGVuOwotICAgICAgfQotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2xpbmUpOwotICAgICAgaWYocmVzdWx0KSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUik7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NGVFBfUkVBRERJUl9ET05FOgotICAgICAgaWYobGlic3NoMl9zZnRwX2Nsb3NlZGlyKHNzaGMtPnNmdHBfaGFuZGxlKSA9PQotICAgICAgICAgTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKLSAgICAgICAgcmMgPSBMSUJTU0gyX0VSUk9SX0VBR0FJTjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBzc2hjLT5zZnRwX2hhbmRsZSA9IE5VTEw7Ci0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUpOwotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSk7Ci0KLSAgICAgIC8qIG5vIGRhdGEgdG8gdHJhbnNmZXIgKi8KLSAgICAgIEN1cmxfc2V0dXBfdHJhbnNmZXIoZGF0YSwgLTEsIC0xLCBGQUxTRSwgLTEpOwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX0RPV05MT0FEX0lOSVQ6Ci0gICAgICAvKgotICAgICAgICogV29yayBvbiBnZXR0aW5nIHRoZSBzcGVjaWZpZWQgZmlsZQotICAgICAgICovCi0gICAgICBzc2hjLT5zZnRwX2hhbmRsZSA9Ci0gICAgICAgIGxpYnNzaDJfc2Z0cF9vcGVuX2V4KHNzaGMtPnNmdHBfc2Vzc2lvbiwgc2Z0cF9zY3AtPnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc2Z0cF9zY3AtPnBhdGgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9GWEZfUkVBRCwgZGF0YS0+c2V0Lm5ld19maWxlX3Blcm1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX1NGVFBfT1BFTkZJTEUpOwotICAgICAgaWYoIXNzaGMtPnNmdHBfaGFuZGxlKSB7Ci0gICAgICAgIGlmKGxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm5vKHNzaGMtPnNzaF9zZXNzaW9uKSA9PQotICAgICAgICAgICBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgIHJjID0gTElCU1NIMl9FUlJPUl9FQUdBSU47Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZXJyID0gc2Z0cF9saWJzc2gyX2xhc3RfZXJyb3Ioc3NoYy0+c2Z0cF9zZXNzaW9uKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgIkNvdWxkIG5vdCBvcGVuIHJlbW90ZSBmaWxlIGZvciByZWFkaW5nOiAlcyIsCi0gICAgICAgICAgICAgIHNmdHBfbGlic3NoMl9zdHJlcnJvcihlcnIpKTsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOwotICAgICAgICByZXN1bHQgPSBzZnRwX2xpYnNzaDJfZXJyb3JfdG9fQ1VSTEUoZXJyKTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdD9yZXN1bHQ6Q1VSTEVfU1NIOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0RPV05MT0FEX1NUQVQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX0RPV05MT0FEX1NUQVQ6Ci0gICAgewotICAgICAgTElCU1NIMl9TRlRQX0FUVFJJQlVURVMgYXR0cnM7Ci0KLSAgICAgIHJjID0gbGlic3NoMl9zZnRwX3N0YXRfZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzZnRwX3NjcC0+cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzZnRwX3NjcC0+cGF0aCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX1NGVFBfU1RBVCwgJmF0dHJzKTsKLSAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYocmMgfHwKLSAgICAgICAgICEoYXR0cnMuZmxhZ3MgJiBMSUJTU0gyX1NGVFBfQVRUUl9TSVpFKSB8fAotICAgICAgICAgKGF0dHJzLmZpbGVzaXplID09IDApKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGxpYnNzaDJfc2Z0cF9vcGVuKCkgZGlkbid0IHJldHVybiBhbiBlcnJvciwgc28gbWF5YmUgdGhlIHNlcnZlcgotICAgICAgICAgKiBqdXN0IGRvZXNuJ3Qgc3VwcG9ydCBzdGF0KCkKLSAgICAgICAgICogT1IgdGhlIHNlcnZlciBkb2Vzbid0IHJldHVybiBhIGZpbGUgc2l6ZSB3aXRoIGEgc3RhdCgpCi0gICAgICAgICAqIE9SIGZpbGUgc2l6ZSBpcyAwCi0gICAgICAgICAqLwotICAgICAgICBkYXRhLT5yZXEuc2l6ZSA9IC0xOwotICAgICAgICBkYXRhLT5yZXEubWF4ZG93bmxvYWQgPSAtMTsKLSAgICAgICAgQ3VybF9wZ3JzU2V0RG93bmxvYWRTaXplKGRhdGEsIC0xKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBjdXJsX29mZl90IHNpemUgPSBhdHRycy5maWxlc2l6ZTsKLQotICAgICAgICBpZihzaXplIDwgMCkgewotICAgICAgICAgIGZhaWxmKGRhdGEsICJCYWQgZmlsZSBzaXplICglIiBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIpIiwgc2l6ZSk7Ci0gICAgICAgICAgcmV0dXJuIENVUkxFX0JBRF9ET1dOTE9BRF9SRVNVTUU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYoY29ubi0+ZGF0YS0+c3RhdGUudXNlX3JhbmdlKSB7Ci0gICAgICAgICAgY3VybF9vZmZfdCBmcm9tLCB0bzsKLSAgICAgICAgICBjaGFyICpwdHI7Ci0gICAgICAgICAgY2hhciAqcHRyMjsKLSAgICAgICAgICBDVVJMb2ZmdCB0b190OwotICAgICAgICAgIENVUkxvZmZ0IGZyb21fdDsKLQotICAgICAgICAgIGZyb21fdCA9IGN1cmx4X3N0cnRvb2ZmdChjb25uLT5kYXRhLT5zdGF0ZS5yYW5nZSwgJnB0ciwgMCwgJmZyb20pOwotICAgICAgICAgIGlmKGZyb21fdCA9PSBDVVJMX09GRlRfRkxPVykKLSAgICAgICAgICAgIHJldHVybiBDVVJMRV9SQU5HRV9FUlJPUjsKLSAgICAgICAgICB3aGlsZSgqcHRyICYmIChJU1NQQUNFKCpwdHIpIHx8ICgqcHRyID09ICctJykpKQotICAgICAgICAgICAgcHRyKys7Ci0gICAgICAgICAgdG9fdCA9IGN1cmx4X3N0cnRvb2ZmdChwdHIsICZwdHIyLCAwLCAmdG8pOwotICAgICAgICAgIGlmKHRvX3QgPT0gQ1VSTF9PRkZUX0ZMT1cpCi0gICAgICAgICAgICByZXR1cm4gQ1VSTEVfUkFOR0VfRVJST1I7Ci0gICAgICAgICAgaWYoKHRvX3QgPT0gQ1VSTF9PRkZUX0lOVkFMKSAvKiBubyAidG8iIHZhbHVlIGdpdmVuICovCi0gICAgICAgICAgICAgfHwgKHRvID49IHNpemUpKSB7Ci0gICAgICAgICAgICB0byA9IHNpemUgLSAxOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZihmcm9tX3QpIHsKLSAgICAgICAgICAgIC8qIGZyb20gaXMgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGUgKi8KLSAgICAgICAgICAgIGZyb20gPSBzaXplIC0gdG87Ci0gICAgICAgICAgICB0byA9IHNpemUgLSAxOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZihmcm9tID4gc2l6ZSkgewotICAgICAgICAgICAgZmFpbGYoZGF0YSwgIk9mZnNldCAoJSIKLSAgICAgICAgICAgICAgICAgIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikgd2FzIGJleW9uZCBmaWxlIHNpemUgKCUiCi0gICAgICAgICAgICAgICAgICBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIpIiwgZnJvbSwgYXR0cnMuZmlsZXNpemUpOwotICAgICAgICAgICAgcmV0dXJuIENVUkxFX0JBRF9ET1dOTE9BRF9SRVNVTUU7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmKGZyb20gPiB0bykgewotICAgICAgICAgICAgZnJvbSA9IHRvOwotICAgICAgICAgICAgc2l6ZSA9IDA7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2l6ZSA9IHRvIC0gZnJvbSArIDE7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgU0ZUUF9TRUVLKGNvbm4tPnByb3RvLnNzaGMuc2Z0cF9oYW5kbGUsIGZyb20pOwotICAgICAgICB9Ci0gICAgICAgIGRhdGEtPnJlcS5zaXplID0gc2l6ZTsKLSAgICAgICAgZGF0YS0+cmVxLm1heGRvd25sb2FkID0gc2l6ZTsKLSAgICAgICAgQ3VybF9wZ3JzU2V0RG93bmxvYWRTaXplKGRhdGEsIHNpemUpOwotICAgICAgfQotCi0gICAgICAvKiBXZSBjYW4gcmVzdW1lIGlmIHdlIGNhbiBzZWVrIHRvIHRoZSByZXN1bWUgcG9zaXRpb24gKi8KLSAgICAgIGlmKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tKSB7Ci0gICAgICAgIGlmKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tIDwgMCkgewotICAgICAgICAgIC8qIFdlJ3JlIHN1cHBvc2VkIHRvIGRvd25sb2FkIHRoZSBsYXN0IGFicyhmcm9tKSBieXRlcyAqLwotICAgICAgICAgIGlmKChjdXJsX29mZl90KWF0dHJzLmZpbGVzaXplIDwgLWRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tKSB7Ci0gICAgICAgICAgICBmYWlsZihkYXRhLCAiT2Zmc2V0ICglIgotICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiKSB3YXMgYmV5b25kIGZpbGUgc2l6ZSAoJSIKLSAgICAgICAgICAgICAgICAgIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikiLAotICAgICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20sIGF0dHJzLmZpbGVzaXplKTsKLSAgICAgICAgICAgIHJldHVybiBDVVJMRV9CQURfRE9XTkxPQURfUkVTVU1FOwotICAgICAgICAgIH0KLSAgICAgICAgICAvKiBkb3dubG9hZCBmcm9tIHdoZXJlPyAqLwotICAgICAgICAgIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tICs9IGF0dHJzLmZpbGVzaXplOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIGlmKChjdXJsX29mZl90KWF0dHJzLmZpbGVzaXplIDwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pIHsKLSAgICAgICAgICAgIGZhaWxmKGRhdGEsICJPZmZzZXQgKCUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QKLSAgICAgICAgICAgICAgICAgICIpIHdhcyBiZXlvbmQgZmlsZSBzaXplICglIiBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIpIiwKLSAgICAgICAgICAgICAgICAgIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tLCBhdHRycy5maWxlc2l6ZSk7Ci0gICAgICAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0RPV05MT0FEX1JFU1VNRTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLyogRG9lcyBhIGNvbXBsZXRlZCBmaWxlIG5lZWQgdG8gYmUgc2Vla2VkIGFuZCBzdGFydGVkIG9yIGNsb3NlZCA/ICovCi0gICAgICAgIC8qIE5vdyBzdG9yZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdlIGFyZSBleHBlY3RlZCB0byBkb3dubG9hZCAqLwotICAgICAgICBkYXRhLT5yZXEuc2l6ZSA9IGF0dHJzLmZpbGVzaXplIC0gZGF0YS0+c3RhdGUucmVzdW1lX2Zyb207Ci0gICAgICAgIGRhdGEtPnJlcS5tYXhkb3dubG9hZCA9IGF0dHJzLmZpbGVzaXplIC0gZGF0YS0+c3RhdGUucmVzdW1lX2Zyb207Ci0gICAgICAgIEN1cmxfcGdyc1NldERvd25sb2FkU2l6ZShkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMuZmlsZXNpemUgLSBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSk7Ci0gICAgICAgIFNGVFBfU0VFSyhzc2hjLT5zZnRwX2hhbmRsZSwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pOwotICAgICAgfQotICAgIH0KLQotICAgIC8qIFNldHVwIHRoZSBhY3R1YWwgZG93bmxvYWQgKi8KLSAgICBpZihkYXRhLT5yZXEuc2l6ZSA9PSAwKSB7Ci0gICAgICAvKiBubyBkYXRhIHRvIHRyYW5zZmVyICovCi0gICAgICBDdXJsX3NldHVwX3RyYW5zZmVyKGRhdGEsIC0xLCAtMSwgRkFMU0UsIC0xKTsKLSAgICAgIGluZm9mKGRhdGEsICJGaWxlIGFscmVhZHkgY29tcGxldGVseSBkb3dubG9hZGVkXG4iKTsKLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBDdXJsX3NldHVwX3RyYW5zZmVyKGRhdGEsIEZJUlNUU09DS0VULCBkYXRhLT5yZXEuc2l6ZSwgRkFMU0UsIC0xKTsKLQotICAgIC8qIG5vdCBzZXQgYnkgQ3VybF9zZXR1cF90cmFuc2ZlciB0byBwcmVzZXJ2ZSBrZWVwb24gYml0cyAqLwotICAgIGNvbm4tPndyaXRlc29ja2ZkID0gY29ubi0+c29ja2ZkOwotCi0gICAgLyogd2Ugd2FudCB0byB1c2UgdGhlIF9yZWNlaXZpbmdfIGZ1bmN0aW9uIGV2ZW4gd2hlbiB0aGUgc29ja2V0IHR1cm5zCi0gICAgICAgb3V0IHdyaXRhYmxlYWJsZSBhcyB0aGUgdW5kZXJseWluZyBsaWJzc2gyIHJlY3YgZnVuY3Rpb24gd2lsbCBkZWFsCi0gICAgICAgd2l0aCBib3RoIGFjY29yZGluZ2x5ICovCi0gICAgY29ubi0+Y3NlbGVjdF9iaXRzID0gQ1VSTF9DU0VMRUNUX0lOOwotCi0gICAgaWYocmVzdWx0KSB7Ci0gICAgICAvKiB0aGlzIHNob3VsZCBuZXZlciBvY2N1cjsgdGhlIGNsb3NlIHN0YXRlIHNob3VsZCBiZSBlbnRlcmVkCi0gICAgICAgICBhdCB0aGUgdGltZSB0aGUgZXJyb3Igb2NjdXJzICovCi0gICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKLSAgICB9Ci0gICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRlRQX0NMT1NFOgotICAgICAgaWYoc3NoYy0+c2Z0cF9oYW5kbGUpIHsKLSAgICAgICAgcmMgPSBsaWJzc2gyX3NmdHBfY2xvc2Uoc3NoYy0+c2Z0cF9oYW5kbGUpOwotICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmKHJjIDwgMCkgewotICAgICAgICAgIGNoYXIgKmVycl9tc2cgPSBOVUxMOwotICAgICAgICAgICh2b2lkKWxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJfbXNnLCBOVUxMLCAwKTsKLSAgICAgICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIGNsb3NlIGxpYnNzaDIgZmlsZTogJWQgJXNcbiIsIHJjLCBlcnJfbXNnKTsKLSAgICAgICAgfQotICAgICAgICBzc2hjLT5zZnRwX2hhbmRsZSA9IE5VTEw7Ci0gICAgICB9Ci0KLSAgICAgIEN1cmxfc2FmZWZyZWUoc2Z0cF9zY3AtPnBhdGgpOwotCi0gICAgICBERUJVR0YoaW5mb2YoZGF0YSwgIlNGVFAgRE9ORSBkb25lXG4iKSk7Ci0KLSAgICAgIC8qIENoZWNrIGlmIG5leHRzdGF0ZSBpcyBzZXQgYW5kIG1vdmUgLm5leHRzdGF0ZSBjb3VsZCBiZSBQT1NUUVVPVEVfSU5JVAotICAgICAgICAgQWZ0ZXIgbmV4dHN0YXRlIGlzIGV4ZWN1dGVkLCB0aGUgY29udHJvbCBzaG91bGQgY29tZSBiYWNrIHRvCi0gICAgICAgICBTU0hfU0ZUUF9DTE9TRSB0byBwYXNzIHRoZSBjb3JyZWN0IHJlc3VsdCBiYWNrICAqLwotICAgICAgaWYoc3NoYy0+bmV4dHN0YXRlICE9IFNTSF9OT19TVEFURSAmJgotICAgICAgICAgc3NoYy0+bmV4dHN0YXRlICE9IFNTSF9TRlRQX0NMT1NFKSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIHNzaGMtPm5leHRzdGF0ZSk7Ci0gICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9TRlRQX0NMT1NFOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKLSAgICAgICAgcmVzdWx0ID0gc3NoYy0+YWN0dWFsY29kZTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0ZUUF9TSFVURE9XTjoKLSAgICAgIC8qIGR1cmluZyB0aW1lcyB3ZSBnZXQgaGVyZSBkdWUgdG8gYSBicm9rZW4gdHJhbnNmZXIgYW5kIHRoZW4gdGhlCi0gICAgICAgICBzZnRwX2hhbmRsZSBtaWdodCBub3QgaGF2ZSBiZWVuIHRha2VuIGRvd24gc28gbWFrZSBzdXJlIHRoYXQgaXMgZG9uZQotICAgICAgICAgYmVmb3JlIHdlIHByb2NlZWQgKi8KLQotICAgICAgaWYoc3NoYy0+c2Z0cF9oYW5kbGUpIHsKLSAgICAgICAgcmMgPSBsaWJzc2gyX3NmdHBfY2xvc2Uoc3NoYy0+c2Z0cF9oYW5kbGUpOwotICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmKHJjIDwgMCkgewotICAgICAgICAgIGNoYXIgKmVycl9tc2cgPSBOVUxMOwotICAgICAgICAgICh2b2lkKWxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uLCAmZXJyX21zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKLSAgICAgICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIGNsb3NlIGxpYnNzaDIgZmlsZTogJWQgJXNcbiIsIHJjLCBlcnJfbXNnKTsKLSAgICAgICAgfQotICAgICAgICBzc2hjLT5zZnRwX2hhbmRsZSA9IE5VTEw7Ci0gICAgICB9Ci0gICAgICBpZihzc2hjLT5zZnRwX3Nlc3Npb24pIHsKLSAgICAgICAgcmMgPSBsaWJzc2gyX3NmdHBfc2h1dGRvd24oc3NoYy0+c2Z0cF9zZXNzaW9uKTsKLSAgICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZihyYyA8IDApIHsKLSAgICAgICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIHN0b3AgbGlic3NoMiBzZnRwIHN1YnN5c3RlbVxuIik7Ci0gICAgICAgIH0KLSAgICAgICAgc3NoYy0+c2Z0cF9zZXNzaW9uID0gTlVMTDsKLSAgICAgIH0KLQotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5ob21lZGlyKTsKLSAgICAgIGNvbm4tPmRhdGEtPnN0YXRlLm1vc3RfcmVjZW50X2Z0cF9lbnRyeXBhdGggPSBOVUxMOwotCi0gICAgICBzdGF0ZShjb25uLCBTU0hfU0VTU0lPTl9ESVNDT05ORUNUKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0NQX1RSQU5TX0lOSVQ6Ci0gICAgICByZXN1bHQgPSBDdXJsX2dldHdvcmtpbmdwYXRoKGNvbm4sIHNzaGMtPmhvbWVkaXIsICZzZnRwX3NjcC0+cGF0aCk7Ci0gICAgICBpZihyZXN1bHQpIHsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgaWYoZGF0YS0+c2V0LnVwbG9hZCkgewotICAgICAgICBpZihkYXRhLT5zdGF0ZS5pbmZpbGVzaXplIDwgMCkgewotICAgICAgICAgIGZhaWxmKGRhdGEsICJTQ1AgcmVxdWlyZXMgYSBrbm93biBmaWxlIHNpemUgZm9yIHVwbG9hZCIpOwotICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9VUExPQURfRkFJTEVEOwotICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfQ0hBTk5FTF9GUkVFKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX1VQTE9BRF9JTklUKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX0RPV05MT0FEX0lOSVQpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TQ1BfVVBMT0FEX0lOSVQ6Ci0gICAgICAvKgotICAgICAgICogbGlic3NoMiByZXF1aXJlcyB0aGF0IHRoZSBkZXN0aW5hdGlvbiBwYXRoIGlzIGEgZnVsbCBwYXRoIHRoYXQKLSAgICAgICAqIGluY2x1ZGVzIHRoZSBkZXN0aW5hdGlvbiBmaWxlIGFuZCBuYW1lIE9SIGVuZHMgaW4gYSAiLyIgLiAgSWYgdGhpcyBpcwotICAgICAgICogbm90IGRvbmUgdGhlIGRlc3RpbmF0aW9uIGZpbGUgd2lsbCBiZSBuYW1lZCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBsYXN0Ci0gICAgICAgKiBkaXJlY3RvcnkgaW4gdGhlIHBhdGguCi0gICAgICAgKi8KLSAgICAgIHNzaGMtPnNzaF9jaGFubmVsID0KLSAgICAgICAgU0NQX1NFTkQoc3NoYy0+c3NoX3Nlc3Npb24sIHNmdHBfc2NwLT5wYXRoLCBkYXRhLT5zZXQubmV3X2ZpbGVfcGVybXMsCi0gICAgICAgICAgICAgICAgIGRhdGEtPnN0YXRlLmluZmlsZXNpemUpOwotICAgICAgaWYoIXNzaGMtPnNzaF9jaGFubmVsKSB7Ci0gICAgICAgIGludCBzc2hfZXJyOwotICAgICAgICBjaGFyICplcnJfbXNnID0gTlVMTDsKLQotICAgICAgICBpZihsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJubyhzc2hjLT5zc2hfc2Vzc2lvbikgPT0KLSAgICAgICAgICAgTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKLSAgICAgICAgICByYyA9IExJQlNTSDJfRVJST1JfRUFHQUlOOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgc3NoX2VyciA9IChpbnQpKGxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycl9tc2csIE5VTEwsIDApKTsKLSAgICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgIiVzIiwgZXJyX21zZyk7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfQ0hBTk5FTF9GUkVFKTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IGxpYnNzaDJfc2Vzc2lvbl9lcnJvcl90b19DVVJMRShzc2hfZXJyKTsKLSAgICAgICAgLyogTWFwIGdlbmVyaWMgZXJyb3JzIHRvIHVwbG9hZCBmYWlsZWQgKi8KLSAgICAgICAgaWYoc3NoYy0+YWN0dWFsY29kZSA9PSBDVVJMRV9TU0ggfHwKLSAgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9PSBDVVJMRV9SRU1PVEVfRklMRV9OT1RfRk9VTkQpCi0gICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1VQTE9BRF9GQUlMRUQ7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICAvKiB1cGxvYWQgZGF0YSAqLwotICAgICAgQ3VybF9zZXR1cF90cmFuc2ZlcihkYXRhLCAtMSwgZGF0YS0+cmVxLnNpemUsIEZBTFNFLCBGSVJTVFNPQ0tFVCk7Ci0KLSAgICAgIC8qIG5vdCBzZXQgYnkgQ3VybF9zZXR1cF90cmFuc2ZlciB0byBwcmVzZXJ2ZSBrZWVwb24gYml0cyAqLwotICAgICAgY29ubi0+c29ja2ZkID0gY29ubi0+d3JpdGVzb2NrZmQ7Ci0KLSAgICAgIGlmKHJlc3VsdCkgewotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX0NIQU5ORUxfRlJFRSk7Ci0gICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgLyogc3RvcmUgdGhpcyBvcmlnaW5hbCBiaXRtYXNrIHNldHVwIHRvIHVzZSBsYXRlciBvbiBpZiB3ZSBjYW4ndAotICAgICAgICAgICBmaWd1cmUgb3V0IGEgInJlYWwiIGJpdG1hc2sgKi8KLSAgICAgICAgc3NoYy0+b3JpZ193YWl0Zm9yID0gZGF0YS0+cmVxLmtlZXBvbjsKLQotICAgICAgICAvKiB3ZSB3YW50IHRvIHVzZSB0aGUgX3NlbmRpbmdfIGZ1bmN0aW9uIGV2ZW4gd2hlbiB0aGUgc29ja2V0IHR1cm5zCi0gICAgICAgICAgIG91dCByZWFkYWJsZSBhcyB0aGUgdW5kZXJseWluZyBsaWJzc2gyIHNjcCBzZW5kIGZ1bmN0aW9uIHdpbGwgZGVhbAotICAgICAgICAgICB3aXRoIGJvdGggYWNjb3JkaW5nbHkgKi8KLSAgICAgICAgY29ubi0+Y3NlbGVjdF9iaXRzID0gQ1VSTF9DU0VMRUNUX09VVDsKLQotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NDUF9ET1dOTE9BRF9JTklUOgotICAgIHsKLSAgICAgIGN1cmxfb2ZmX3QgYnl0ZWNvdW50OwotCi0gICAgICAvKgotICAgICAgICogV2UgbXVzdCBjaGVjayB0aGUgcmVtb3RlIGZpbGU7IGlmIGl0IGlzIGEgZGlyZWN0b3J5IG5vIHZhbHVlcyB3aWxsCi0gICAgICAgKiBiZSBzZXQgaW4gc2IKLSAgICAgICAqLwotCi0gICAgICAvKgotICAgICAgICogSWYgc3VwcG9ydCBmb3IgPjJHQiBmaWxlcyBleGlzdHMsIHVzZSBpdC4KLSAgICAgICAqLwotCi0gICAgICAvKiBnZXQgYSBmcmVzaCBuZXcgY2hhbm5lbCBmcm9tIHRoZSBzc2ggbGF5ZXIgKi8KLSNpZiBMSUJTU0gyX1ZFUlNJT05fTlVNIDwgMHgwMTA3MDAKLSAgICAgIHN0cnVjdCBzdGF0IHNiOwotICAgICAgbWVtc2V0KCZzYiwgMCwgc2l6ZW9mKHN0cnVjdCBzdGF0KSk7Ci0gICAgICBzc2hjLT5zc2hfY2hhbm5lbCA9IGxpYnNzaDJfc2NwX3JlY3Yoc3NoYy0+c3NoX3Nlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Z0cF9zY3AtPnBhdGgsICZzYik7Ci0jZWxzZQotICAgICAgbGlic3NoMl9zdHJ1Y3Rfc3RhdCBzYjsKLSAgICAgIG1lbXNldCgmc2IsIDAsIHNpemVvZihsaWJzc2gyX3N0cnVjdF9zdGF0KSk7Ci0gICAgICBzc2hjLT5zc2hfY2hhbm5lbCA9IGxpYnNzaDJfc2NwX3JlY3YyKHNzaGMtPnNzaF9zZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZnRwX3NjcC0+cGF0aCwgJnNiKTsKLSNlbmRpZgotCi0gICAgICBpZighc3NoYy0+c3NoX2NoYW5uZWwpIHsKLSAgICAgICAgaW50IHNzaF9lcnI7Ci0gICAgICAgIGNoYXIgKmVycl9tc2cgPSBOVUxMOwotCi0gICAgICAgIGlmKGxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm5vKHNzaGMtPnNzaF9zZXNzaW9uKSA9PQotICAgICAgICAgICBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgIHJjID0gTElCU1NIMl9FUlJPUl9FQUdBSU47Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIHNzaF9lcnIgPSAoaW50KShsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJfbXNnLCBOVUxMLCAwKSk7Ci0gICAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICIlcyIsIGVycl9tc2cpOwotICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX0NIQU5ORUxfRlJFRSk7Ci0gICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBsaWJzc2gyX3Nlc3Npb25fZXJyb3JfdG9fQ1VSTEUoc3NoX2Vycik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICAvKiBkb3dubG9hZCBkYXRhICovCi0gICAgICBieXRlY291bnQgPSAoY3VybF9vZmZfdClzYi5zdF9zaXplOwotICAgICAgZGF0YS0+cmVxLm1heGRvd25sb2FkID0gIChjdXJsX29mZl90KXNiLnN0X3NpemU7Ci0gICAgICBDdXJsX3NldHVwX3RyYW5zZmVyKGRhdGEsIEZJUlNUU09DS0VULCBieXRlY291bnQsIEZBTFNFLCAtMSk7Ci0KLSAgICAgIC8qIG5vdCBzZXQgYnkgQ3VybF9zZXR1cF90cmFuc2ZlciB0byBwcmVzZXJ2ZSBrZWVwb24gYml0cyAqLwotICAgICAgY29ubi0+d3JpdGVzb2NrZmQgPSBjb25uLT5zb2NrZmQ7Ci0KLSAgICAgIC8qIHdlIHdhbnQgdG8gdXNlIHRoZSBfcmVjZWl2aW5nXyBmdW5jdGlvbiBldmVuIHdoZW4gdGhlIHNvY2tldCB0dXJucwotICAgICAgICAgb3V0IHdyaXRhYmxlYWJsZSBhcyB0aGUgdW5kZXJseWluZyBsaWJzc2gyIHJlY3YgZnVuY3Rpb24gd2lsbCBkZWFsCi0gICAgICAgICB3aXRoIGJvdGggYWNjb3JkaW5nbHkgKi8KLSAgICAgIGNvbm4tPmNzZWxlY3RfYml0cyA9IENVUkxfQ1NFTEVDVF9JTjsKLQotICAgICAgaWYocmVzdWx0KSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfQ0hBTk5FTF9GUkVFKTsKLSAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgIH0KLSAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NDUF9ET05FOgotICAgICAgaWYoZGF0YS0+c2V0LnVwbG9hZCkKLSAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NDUF9TRU5EX0VPRik7Ci0gICAgICBlbHNlCi0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfQ0hBTk5FTF9GUkVFKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0NQX1NFTkRfRU9GOgotICAgICAgaWYoc3NoYy0+c3NoX2NoYW5uZWwpIHsKLSAgICAgICAgcmMgPSBsaWJzc2gyX2NoYW5uZWxfc2VuZF9lb2Yoc3NoYy0+c3NoX2NoYW5uZWwpOwotICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmKHJjKSB7Ci0gICAgICAgICAgY2hhciAqZXJyX21zZyA9IE5VTEw7Ci0gICAgICAgICAgKHZvaWQpbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycl9tc2csIE5VTEwsIDApOwotICAgICAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gc2VuZCBsaWJzc2gyIGNoYW5uZWwgRU9GOiAlZCAlc1xuIiwKLSAgICAgICAgICAgICAgICByYywgZXJyX21zZyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfV0FJVF9FT0YpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TQ1BfV0FJVF9FT0Y6Ci0gICAgICBpZihzc2hjLT5zc2hfY2hhbm5lbCkgewotICAgICAgICByYyA9IGxpYnNzaDJfY2hhbm5lbF93YWl0X2VvZihzc2hjLT5zc2hfY2hhbm5lbCk7Ci0gICAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYocmMpIHsKLSAgICAgICAgICBjaGFyICplcnJfbXNnID0gTlVMTDsKLSAgICAgICAgICAodm9pZClsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyX21zZywgTlVMTCwgMCk7Ci0gICAgICAgICAgaW5mb2YoZGF0YSwgIkZhaWxlZCB0byBnZXQgY2hhbm5lbCBFT0Y6ICVkICVzXG4iLCByYywgZXJyX21zZyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfV0FJVF9DTE9TRSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgU1NIX1NDUF9XQUlUX0NMT1NFOgotICAgICAgaWYoc3NoYy0+c3NoX2NoYW5uZWwpIHsKLSAgICAgICAgcmMgPSBsaWJzc2gyX2NoYW5uZWxfd2FpdF9jbG9zZWQoc3NoYy0+c3NoX2NoYW5uZWwpOwotICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmKHJjKSB7Ci0gICAgICAgICAgY2hhciAqZXJyX21zZyA9IE5VTEw7Ci0gICAgICAgICAgKHZvaWQpbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycl9tc2csIE5VTEwsIDApOwotICAgICAgICAgIGluZm9mKGRhdGEsICJDaGFubmVsIGZhaWxlZCB0byBjbG9zZTogJWQgJXNcbiIsIHJjLCBlcnJfbXNnKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgc3RhdGUoY29ubiwgU1NIX1NDUF9DSEFOTkVMX0ZSRUUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TQ1BfQ0hBTk5FTF9GUkVFOgotICAgICAgaWYoc3NoYy0+c3NoX2NoYW5uZWwpIHsKLSAgICAgICAgcmMgPSBsaWJzc2gyX2NoYW5uZWxfZnJlZShzc2hjLT5zc2hfY2hhbm5lbCk7Ci0gICAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYocmMgPCAwKSB7Ci0gICAgICAgICAgY2hhciAqZXJyX21zZyA9IE5VTEw7Ci0gICAgICAgICAgKHZvaWQpbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycl9tc2csIE5VTEwsIDApOwotICAgICAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gZnJlZSBsaWJzc2gyIHNjcCBzdWJzeXN0ZW06ICVkICVzXG4iLAotICAgICAgICAgICAgICAgIHJjLCBlcnJfbXNnKTsKLSAgICAgICAgfQotICAgICAgICBzc2hjLT5zc2hfY2hhbm5lbCA9IE5VTEw7Ci0gICAgICB9Ci0gICAgICBERUJVR0YoaW5mb2YoZGF0YSwgIlNDUCBET05FIHBoYXNlIGNvbXBsZXRlXG4iKSk7Ci0jaWYgMCAvKiBQUkVWICovCi0gICAgICBzdGF0ZShjb25uLCBTU0hfU0VTU0lPTl9ESVNDT05ORUNUKTsKLSNlbmRpZgotICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgcmVzdWx0ID0gc3NoYy0+YWN0dWFsY29kZTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTU0hfU0VTU0lPTl9ESVNDT05ORUNUOgotICAgICAgLyogZHVyaW5nIHdlaXJkIHRpbWVzIHdoZW4gd2UndmUgYmVlbiBwcmVtYXR1cmVseSBhYm9ydGVkLCB0aGUgY2hhbm5lbAotICAgICAgICAgaXMgc3RpbGwgYWxpdmUgd2hlbiB3ZSByZWFjaCB0aGlzIHN0YXRlIGFuZCB3ZSBNVVNUIGtpbGwgdGhlIGNoYW5uZWwKLSAgICAgICAgIHByb3Blcmx5IGZpcnN0ICovCi0gICAgICBpZihzc2hjLT5zc2hfY2hhbm5lbCkgewotICAgICAgICByYyA9IGxpYnNzaDJfY2hhbm5lbF9mcmVlKHNzaGMtPnNzaF9jaGFubmVsKTsKLSAgICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZihyYyA8IDApIHsKLSAgICAgICAgICBjaGFyICplcnJfbXNnID0gTlVMTDsKLSAgICAgICAgICAodm9pZClsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyX21zZywgTlVMTCwgMCk7Ci0gICAgICAgICAgaW5mb2YoZGF0YSwgIkZhaWxlZCB0byBmcmVlIGxpYnNzaDIgc2NwIHN1YnN5c3RlbTogJWQgJXNcbiIsCi0gICAgICAgICAgICAgICAgcmMsIGVycl9tc2cpOwotICAgICAgICB9Ci0gICAgICAgIHNzaGMtPnNzaF9jaGFubmVsID0gTlVMTDsKLSAgICAgIH0KLQotICAgICAgaWYoc3NoYy0+c3NoX3Nlc3Npb24pIHsKLSAgICAgICAgcmMgPSBsaWJzc2gyX3Nlc3Npb25fZGlzY29ubmVjdChzc2hjLT5zc2hfc2Vzc2lvbiwgIlNodXRkb3duIik7Ci0gICAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYocmMgPCAwKSB7Ci0gICAgICAgICAgY2hhciAqZXJyX21zZyA9IE5VTEw7Ci0gICAgICAgICAgKHZvaWQpbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycl9tc2csIE5VTEwsIDApOwotICAgICAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gZGlzY29ubmVjdCBsaWJzc2gyIHNlc3Npb246ICVkICVzXG4iLAotICAgICAgICAgICAgICAgIHJjLCBlcnJfbXNnKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPmhvbWVkaXIpOwotICAgICAgY29ubi0+ZGF0YS0+c3RhdGUubW9zdF9yZWNlbnRfZnRwX2VudHJ5cGF0aCA9IE5VTEw7Ci0KLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRVNTSU9OX0ZSRUUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9TRVNTSU9OX0ZSRUU6Ci0jaWZkZWYgSEFWRV9MSUJTU0gyX0tOT1dOSE9TVF9BUEkKLSAgICAgIGlmKHNzaGMtPmtoKSB7Ci0gICAgICAgIGxpYnNzaDJfa25vd25ob3N0X2ZyZWUoc3NoYy0+a2gpOwotICAgICAgICBzc2hjLT5raCA9IE5VTEw7Ci0gICAgICB9Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfTElCU1NIMl9BR0VOVF9BUEkKLSAgICAgIGlmKHNzaGMtPnNzaF9hZ2VudCkgewotICAgICAgICByYyA9IGxpYnNzaDJfYWdlbnRfZGlzY29ubmVjdChzc2hjLT5zc2hfYWdlbnQpOwotICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmKHJjIDwgMCkgewotICAgICAgICAgIGNoYXIgKmVycl9tc2cgPSBOVUxMOwotICAgICAgICAgICh2b2lkKWxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJfbXNnLCBOVUxMLCAwKTsKLSAgICAgICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIGRpc2Nvbm5lY3QgZnJvbSBsaWJzc2gyIGFnZW50OiAlZCAlc1xuIiwKLSAgICAgICAgICAgICAgICByYywgZXJyX21zZyk7Ci0gICAgICAgIH0KLSAgICAgICAgbGlic3NoMl9hZ2VudF9mcmVlKHNzaGMtPnNzaF9hZ2VudCk7Ci0gICAgICAgIHNzaGMtPnNzaF9hZ2VudCA9IE5VTEw7Ci0KLSAgICAgICAgLyogTkI6IHRoZXJlIGlzIG5vIG5lZWQgdG8gZnJlZSBpZGVudGl0aWVzLCB0aGV5IGFyZSBwYXJ0IG9mIGludGVybmFsCi0gICAgICAgICAgIGFnZW50IHN0dWZmICovCi0gICAgICAgIHNzaGMtPnNzaGFnZW50X2lkZW50aXR5ID0gTlVMTDsKLSAgICAgICAgc3NoYy0+c3NoYWdlbnRfcHJldl9pZGVudGl0eSA9IE5VTEw7Ci0gICAgICB9Ci0jZW5kaWYKLQotICAgICAgaWYoc3NoYy0+c3NoX3Nlc3Npb24pIHsKLSAgICAgICAgcmMgPSBsaWJzc2gyX3Nlc3Npb25fZnJlZShzc2hjLT5zc2hfc2Vzc2lvbik7Ci0gICAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYocmMgPCAwKSB7Ci0gICAgICAgICAgY2hhciAqZXJyX21zZyA9IE5VTEw7Ci0gICAgICAgICAgKHZvaWQpbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycl9tc2csIE5VTEwsIDApOwotICAgICAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gZnJlZSBsaWJzc2gyIHNlc3Npb246ICVkICVzXG4iLCByYywgZXJyX21zZyk7Ci0gICAgICAgIH0KLSAgICAgICAgc3NoYy0+c3NoX3Nlc3Npb24gPSBOVUxMOwotICAgICAgfQotCi0gICAgICAvKiB3b3JzdC1jYXNlIHNjZW5hcmlvIGNsZWFudXAgKi8KLQotICAgICAgREVCVUdBU1NFUlQoc3NoYy0+c3NoX3Nlc3Npb24gPT0gTlVMTCk7Ci0gICAgICBERUJVR0FTU0VSVChzc2hjLT5zc2hfY2hhbm5lbCA9PSBOVUxMKTsKLSAgICAgIERFQlVHQVNTRVJUKHNzaGMtPnNmdHBfc2Vzc2lvbiA9PSBOVUxMKTsKLSAgICAgIERFQlVHQVNTRVJUKHNzaGMtPnNmdHBfaGFuZGxlID09IE5VTEwpOwotI2lmZGVmIEhBVkVfTElCU1NIMl9LTk9XTkhPU1RfQVBJCi0gICAgICBERUJVR0FTU0VSVChzc2hjLT5raCA9PSBOVUxMKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfTElCU1NIMl9BR0VOVF9BUEkKLSAgICAgIERFQlVHQVNTRVJUKHNzaGMtPnNzaF9hZ2VudCA9PSBOVUxMKTsKLSNlbmRpZgotCi0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJzYV9wdWIpOwotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yc2EpOwotCi0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKLSAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOwotCi0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPmhvbWVkaXIpOwotCi0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUpOwotICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSk7Ci0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfbGluZSk7Ci0gICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfbGlua1BhdGgpOwotCi0gICAgICAvKiB0aGUgY29kZSB3ZSBhcmUgYWJvdXQgdG8gcmV0dXJuICovCi0gICAgICByZXN1bHQgPSBzc2hjLT5hY3R1YWxjb2RlOwotCi0gICAgICBtZW1zZXQoc3NoYywgMCwgc2l6ZW9mKHN0cnVjdCBzc2hfY29ubikpOwotCi0gICAgICBjb25uY2xvc2UoY29ubiwgIlNTSCBzZXNzaW9uIGZyZWUiKTsKLSAgICAgIHNzaGMtPnN0YXRlID0gU1NIX1NFU1NJT05fRlJFRTsgLyogY3VycmVudCAqLwotICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOwotICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNTSF9RVUlUOgotICAgICAgLyogZmFsbHRocm91Z2gsIGp1c3Qgc3RvcCEgKi8KLSAgICBkZWZhdWx0OgotICAgICAgLyogaW50ZXJuYWwgZXJyb3IgKi8KLSAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLQotICB9IHdoaWxlKCFyYyAmJiAoc3NoYy0+c3RhdGUgIT0gU1NIX1NUT1ApKTsKLQotICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgIC8qIHdlIHdvdWxkIGJsb2NrLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBzb2NrZXQgdG8gYmUgcmVhZHkgKGluIHRoZQotICAgICAgIHJpZ2h0IGRpcmVjdGlvbiB0b28pISAqLwotICAgICpibG9jayA9IFRSVUU7Ci0gIH0KLQotICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBjYWxsZWQgYnkgdGhlIG11bHRpIGludGVyZmFjZSB0byBmaWd1cmUgb3V0IHdoYXQgc29ja2V0KHMpIHRvIHdhaXQgZm9yIGFuZAotICAgZm9yIHdoYXQgYWN0aW9ucyBpbiB0aGUgRE9fRE9ORSwgUEVSRk9STSBhbmQgV0FJVFBFUkZPUk0gc3RhdGVzICovCi1zdGF0aWMgaW50IHNzaF9wZXJmb3JtX2dldHNvY2soY29uc3Qgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2ssIC8qIHBvaW50cyB0byBudW1zb2NrcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBzb2NrZXRzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKQotewotI2lmZGVmIEhBVkVfTElCU1NIMl9TRVNTSU9OX0JMT0NLX0RJUkVDVElPTgotICBpbnQgYml0bWFwID0gR0VUU09DS19CTEFOSzsKLSAgKHZvaWQpbnVtc29ja3M7Ci0KLSAgc29ja1swXSA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOwotCi0gIGlmKGNvbm4tPndhaXRmb3IgJiBLRUVQX1JFQ1YpCi0gICAgYml0bWFwIHw9IEdFVFNPQ0tfUkVBRFNPQ0soRklSU1RTT0NLRVQpOwotCi0gIGlmKGNvbm4tPndhaXRmb3IgJiBLRUVQX1NFTkQpCi0gICAgYml0bWFwIHw9IEdFVFNPQ0tfV1JJVEVTT0NLKEZJUlNUU09DS0VUKTsKLQotICByZXR1cm4gYml0bWFwOwotI2Vsc2UKLSAgLyogaWYgd2UgZG9uJ3Qga25vdyB0aGUgZGlyZWN0aW9uIHdlIGNhbiB1c2UgdGhlIGdlbmVyaWMgKl9nZXRzb2NrKCkKLSAgICAgZnVuY3Rpb24gZXZlbiBmb3IgdGhlIHByb3RvY29sX2Nvbm5lY3QgYW5kIGRvaW5nIHN0YXRlcyAqLwotICByZXR1cm4gQ3VybF9zaW5nbGVfZ2V0c29jayhjb25uLCBzb2NrLCBudW1zb2Nrcyk7Ci0jZW5kaWYKLX0KLQotLyogR2VuZXJpYyBmdW5jdGlvbiBjYWxsZWQgYnkgdGhlIG11bHRpIGludGVyZmFjZSB0byBmaWd1cmUgb3V0IHdoYXQgc29ja2V0KHMpCi0gICB0byB3YWl0IGZvciBhbmQgZm9yIHdoYXQgYWN0aW9ucyBkdXJpbmcgdGhlIERPSU5HIGFuZCBQUk9UT0NPTk5FQ1Qgc3RhdGVzKi8KLXN0YXRpYyBpbnQgc3NoX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrLCAvKiBwb2ludHMgdG8gbnVtc29ja3MgbnVtYmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHNvY2tldHMgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKQotewotI2lmbmRlZiBIQVZFX0xJQlNTSDJfU0VTU0lPTl9CTE9DS19ESVJFQ1RJT04KLSAgKHZvaWQpY29ubjsKLSAgKHZvaWQpc29jazsKLSAgKHZvaWQpbnVtc29ja3M7Ci0gIC8qIGlmIHdlIGRvbid0IGtub3cgYW55IGRpcmVjdGlvbiB3ZSBjYW4ganVzdCBwbGF5IGFsb25nIGFzIHdlIHVzZWQgdG8gYW5kCi0gICAgIG5vdCBwcm92aWRlIGFueSBzZW5zaWJsZSBpbmZvICovCi0gIHJldHVybiBHRVRTT0NLX0JMQU5LOwotI2Vsc2UKLSAgLyogaWYgd2Uga25vdyB0aGUgZGlyZWN0aW9uIHdlIGNhbiB1c2UgdGhlIGdlbmVyaWMgKl9nZXRzb2NrKCkgZnVuY3Rpb24gZXZlbgotICAgICBmb3IgdGhlIHByb3RvY29sX2Nvbm5lY3QgYW5kIGRvaW5nIHN0YXRlcyAqLwotICByZXR1cm4gc3NoX3BlcmZvcm1fZ2V0c29jayhjb25uLCBzb2NrLCBudW1zb2Nrcyk7Ci0jZW5kaWYKLX0KLQotI2lmZGVmIEhBVkVfTElCU1NIMl9TRVNTSU9OX0JMT0NLX0RJUkVDVElPTgotLyoKLSAqIFdoZW4gb25lIG9mIHRoZSBsaWJzc2gyIGZ1bmN0aW9ucyBoYXMgcmV0dXJuZWQgTElCU1NIMl9FUlJPUl9FQUdBSU4gdGhpcwotICogZnVuY3Rpb24gaXMgdXNlZCB0byBmaWd1cmUgb3V0IGluIHdoYXQgZGlyZWN0aW9uIGFuZCBzdG9yZXMgdGhpcyBpbmZvIHNvCi0gKiB0aGF0IHRoZSBtdWx0aSBpbnRlcmZhY2UgY2FuIHRha2UgYWR2YW50YWdlIG9mIGl0LiBNYWtlIHN1cmUgdG8gY2FsbCB0aGlzCi0gKiBmdW5jdGlvbiBpbiBhbGwgY2FzZXMgc28gdGhhdCB3aGVuIGl0IF9kb2Vzbid0XyByZXR1cm4gRUFHQUlOIHdlIGNhbgotICogcmVzdG9yZSB0aGUgZGVmYXVsdCB3YWl0IGJpdHMuCi0gKi8KLXN0YXRpYyB2b2lkIHNzaF9ibG9jazJ3YWl0Zm9yKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCBibG9jaykKLXsKLSAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7Ci0gIGludCBkaXIgPSAwOwotICBpZihibG9jaykgewotICAgIGRpciA9IGxpYnNzaDJfc2Vzc2lvbl9ibG9ja19kaXJlY3Rpb25zKHNzaGMtPnNzaF9zZXNzaW9uKTsKLSAgICBpZihkaXIpIHsKLSAgICAgIC8qIHRyYW5zbGF0ZSB0aGUgbGlic3NoMiBkZWZpbmUgYml0cyBpbnRvIG91ciBvd24gYml0IGRlZmluZXMgKi8KLSAgICAgIGNvbm4tPndhaXRmb3IgPSAoKGRpciZMSUJTU0gyX1NFU1NJT05fQkxPQ0tfSU5CT1VORCk/S0VFUF9SRUNWOjApIHwKLSAgICAgICAgKChkaXImTElCU1NIMl9TRVNTSU9OX0JMT0NLX09VVEJPVU5EKT9LRUVQX1NFTkQ6MCk7Ci0gICAgfQotICB9Ci0gIGlmKCFkaXIpCi0gICAgLyogSXQgZGlkbid0IGJsb2NrIG9yIGxpYnNzaDIgZGlkbid0IHJldmVhbCBpbiB3aGljaCBkaXJlY3Rpb24sIHB1dCBiYWNrCi0gICAgICAgdGhlIG9yaWdpbmFsIHNldCAqLwotICAgIGNvbm4tPndhaXRmb3IgPSBzc2hjLT5vcmlnX3dhaXRmb3I7Ci19Ci0jZWxzZQotICAvKiBubyBsaWJzc2gyIGRpcmVjdGlvbmFsIHN1cHBvcnQgc28gd2Ugc2ltcGx5IGRvbid0IGtub3cgKi8KLSNkZWZpbmUgc3NoX2Jsb2NrMndhaXRmb3IoeCx5KSBDdXJsX25vcF9zdG10Ci0jZW5kaWYKLQotLyogY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgZG9uZSBmcm9tIG11bHRpLmMgKi8KLXN0YXRpYyBDVVJMY29kZSBzc2hfbXVsdGlfc3RhdGVtYWNoKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSkKLXsKLSAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotICBib29sIGJsb2NrOyAvKiB3ZSBzdG9yZSB0aGUgc3RhdHVzIGFuZCB1c2UgdGhhdCB0byBwcm92aWRlIGEgc3NoX2dldHNvY2soKQotICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiAqLwotICBkbyB7Ci0gICAgcmVzdWx0ID0gc3NoX3N0YXRlbWFjaF9hY3QoY29ubiwgJmJsb2NrKTsKLSAgICAqZG9uZSA9IChzc2hjLT5zdGF0ZSA9PSBTU0hfU1RPUCkgPyBUUlVFIDogRkFMU0U7Ci0gICAgLyogaWYgdGhlcmUncyBubyBlcnJvciwgaXQgaXNuJ3QgZG9uZSBhbmQgaXQgZGlkbid0IEVXT1VMREJMT0NLLCB0aGVuCi0gICAgICAgdHJ5IGFnYWluICovCi0gIH0gd2hpbGUoIXJlc3VsdCAmJiAhKmRvbmUgJiYgIWJsb2NrKTsKLSAgc3NoX2Jsb2NrMndhaXRmb3IoY29ubiwgYmxvY2spOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBDVVJMY29kZSBzc2hfYmxvY2tfc3RhdGVtYWNoKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGlzY29ubmVjdCkKLXsKLSAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLQotICB3aGlsZSgoc3NoYy0+c3RhdGUgIT0gU1NIX1NUT1ApICYmICFyZXN1bHQpIHsKLSAgICBib29sIGJsb2NrOwotICAgIHRpbWVkaWZmX3QgbGVmdCA9IDEwMDA7Ci0gICAgc3RydWN0IGN1cmx0aW1lIG5vdyA9IEN1cmxfbm93KCk7Ci0KLSAgICByZXN1bHQgPSBzc2hfc3RhdGVtYWNoX2FjdChjb25uLCAmYmxvY2spOwotICAgIGlmKHJlc3VsdCkKLSAgICAgIGJyZWFrOwotCi0gICAgaWYoIWRpc2Nvbm5lY3QpIHsKLSAgICAgIGlmKEN1cmxfcGdyc1VwZGF0ZShjb25uKSkKLSAgICAgICAgcmV0dXJuIENVUkxFX0FCT1JURURfQllfQ0FMTEJBQ0s7Ci0KLSAgICAgIHJlc3VsdCA9IEN1cmxfc3BlZWRjaGVjayhkYXRhLCBub3cpOwotICAgICAgaWYocmVzdWx0KQotICAgICAgICBicmVhazsKLQotICAgICAgbGVmdCA9IEN1cmxfdGltZWxlZnQoZGF0YSwgTlVMTCwgRkFMU0UpOwotICAgICAgaWYobGVmdCA8IDApIHsKLSAgICAgICAgZmFpbGYoZGF0YSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQiKTsKLSAgICAgICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKLSAgICAgIH0KLSAgICB9Ci0KLSNpZmRlZiBIQVZFX0xJQlNTSDJfU0VTU0lPTl9CTE9DS19ESVJFQ1RJT04KLSAgICBpZighcmVzdWx0ICYmIGJsb2NrKSB7Ci0gICAgICBpbnQgZGlyID0gbGlic3NoMl9zZXNzaW9uX2Jsb2NrX2RpcmVjdGlvbnMoc3NoYy0+c3NoX3Nlc3Npb24pOwotICAgICAgY3VybF9zb2NrZXRfdCBzb2NrID0gY29ubi0+c29ja1tGSVJTVFNPQ0tFVF07Ci0gICAgICBjdXJsX3NvY2tldF90IGZkX3JlYWQgPSBDVVJMX1NPQ0tFVF9CQUQ7Ci0gICAgICBjdXJsX3NvY2tldF90IGZkX3dyaXRlID0gQ1VSTF9TT0NLRVRfQkFEOwotICAgICAgaWYoTElCU1NIMl9TRVNTSU9OX0JMT0NLX0lOQk9VTkQgJiBkaXIpCi0gICAgICAgIGZkX3JlYWQgPSBzb2NrOwotICAgICAgaWYoTElCU1NIMl9TRVNTSU9OX0JMT0NLX09VVEJPVU5EICYgZGlyKQotICAgICAgICBmZF93cml0ZSA9IHNvY2s7Ci0gICAgICAvKiB3YWl0IGZvciB0aGUgc29ja2V0IHRvIGJlY29tZSByZWFkeSAqLwotICAgICAgKHZvaWQpQ3VybF9zb2NrZXRfY2hlY2soZmRfcmVhZCwgQ1VSTF9TT0NLRVRfQkFELCBmZF93cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ+MTAwMD8xMDAwOmxlZnQpOyAvKiBpZ25vcmUgcmVzdWx0ICovCi0gICAgfQotI2VuZGlmCi0KLSAgfQotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qCi0gKiBTU0ggc2V0dXAgYW5kIGNvbm5lY3Rpb24KLSAqLwotc3RhdGljIENVUkxjb2RlIHNzaF9zZXR1cF9jb25uZWN0aW9uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKLXsKLSAgc3RydWN0IFNTSFBST1RPICpzc2g7Ci0KLSAgY29ubi0+ZGF0YS0+cmVxLnByb3RvcCA9IHNzaCA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IFNTSFBST1RPKSk7Ci0gIGlmKCFzc2gpCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgcmV0dXJuIENVUkxFX09LOwotfQotCi1zdGF0aWMgQ3VybF9yZWN2IHNjcF9yZWN2LCBzZnRwX3JlY3Y7Ci1zdGF0aWMgQ3VybF9zZW5kIHNjcF9zZW5kLCBzZnRwX3NlbmQ7Ci0KLS8qCi0gKiBDdXJsX3NzaF9jb25uZWN0KCkgZ2V0cyBjYWxsZWQgZnJvbSBDdXJsX3Byb3RvY29sX2Nvbm5lY3QoKSB0byBhbGxvdyB1cyB0bwotICogZG8gcHJvdG9jb2wtc3BlY2lmaWMgYWN0aW9ucyBhdCBjb25uZWN0LXRpbWUuCi0gKi8KLXN0YXRpYyBDVVJMY29kZSBzc2hfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCi17Ci0jaWZkZWYgQ1VSTF9MSUJTU0gyX0RFQlVHCi0gIGN1cmxfc29ja2V0X3Qgc29jazsKLSNlbmRpZgotICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaDsKLSAgQ1VSTGNvZGUgcmVzdWx0OwotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLQotICAvKiBpbml0aWFsaXplIHBlci1oYW5kbGUgZGF0YSBpZiBub3QgYWxyZWFkeSAqLwotICBpZighZGF0YS0+cmVxLnByb3RvcCkKLSAgICBzc2hfc2V0dXBfY29ubmVjdGlvbihjb25uKTsKLQotICAvKiBXZSBkZWZhdWx0IHRvIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMuIFdlIHNldCB0aGlzIGFscmVhZHkgaW4gdGhpcyBjb25uZWN0Ci0gICAgIGZ1bmN0aW9uIHRvIG1ha2UgdGhlIHJlLXVzZSBjaGVja3MgcHJvcGVybHkgYmUgYWJsZSB0byBjaGVjayB0aGlzIGJpdC4gKi8KLSAgY29ubmtlZXAoY29ubiwgIlNTSCBkZWZhdWx0Iik7Ci0KLSAgaWYoY29ubi0+aGFuZGxlci0+cHJvdG9jb2wgJiBDVVJMUFJPVE9fU0NQKSB7Ci0gICAgY29ubi0+cmVjdltGSVJTVFNPQ0tFVF0gPSBzY3BfcmVjdjsKLSAgICBjb25uLT5zZW5kW0ZJUlNUU09DS0VUXSA9IHNjcF9zZW5kOwotICB9Ci0gIGVsc2UgewotICAgIGNvbm4tPnJlY3ZbRklSU1RTT0NLRVRdID0gc2Z0cF9yZWN2OwotICAgIGNvbm4tPnNlbmRbRklSU1RTT0NLRVRdID0gc2Z0cF9zZW5kOwotICB9Ci0gIHNzaCA9ICZjb25uLT5wcm90by5zc2hjOwotCi0jaWZkZWYgQ1VSTF9MSUJTU0gyX0RFQlVHCi0gIGlmKGNvbm4tPnVzZXIpIHsKLSAgICBpbmZvZihkYXRhLCAiVXNlcjogJXNcbiIsIGNvbm4tPnVzZXIpOwotICB9Ci0gIGlmKGNvbm4tPnBhc3N3ZCkgewotICAgIGluZm9mKGRhdGEsICJQYXNzd29yZDogJXNcbiIsIGNvbm4tPnBhc3N3ZCk7Ci0gIH0KLSAgc29jayA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOwotI2VuZGlmIC8qIENVUkxfTElCU1NIMl9ERUJVRyAqLwotCi0gIHNzaC0+c3NoX3Nlc3Npb24gPSBsaWJzc2gyX3Nlc3Npb25faW5pdF9leChteV9saWJzc2gyX21hbGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15X2xpYnNzaDJfZnJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15X2xpYnNzaDJfcmVhbGxvYywgY29ubik7Ci0gIGlmKHNzaC0+c3NoX3Nlc3Npb24gPT0gTlVMTCkgewotICAgIGZhaWxmKGRhdGEsICJGYWlsdXJlIGluaXRpYWxpc2luZyBzc2ggc2Vzc2lvbiIpOwotICAgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKLSAgfQotCi0gIGlmKGRhdGEtPnNldC5zc2hfY29tcHJlc3Npb24pIHsKLSNpZiBMSUJTU0gyX1ZFUlNJT05fTlVNID49IDB4MDEwMjA4Ci0gICAgaWYobGlic3NoMl9zZXNzaW9uX2ZsYWcoc3NoLT5zc2hfc2Vzc2lvbiwgTElCU1NIMl9GTEFHX0NPTVBSRVNTLCAxKSA8IDApCi0jZW5kaWYKLSAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gZW5hYmxlIGNvbXByZXNzaW9uIGZvciBzc2ggc2Vzc2lvblxuIik7Ci0gIH0KLQotI2lmZGVmIEhBVkVfTElCU1NIMl9LTk9XTkhPU1RfQVBJCi0gIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9LTk9XTkhPU1RTXSkgewotICAgIGludCByYzsKLSAgICBzc2gtPmtoID0gbGlic3NoMl9rbm93bmhvc3RfaW5pdChzc2gtPnNzaF9zZXNzaW9uKTsKLSAgICBpZighc3NoLT5raCkgewotICAgICAgbGlic3NoMl9zZXNzaW9uX2ZyZWUoc3NoLT5zc2hfc2Vzc2lvbik7Ci0gICAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7Ci0gICAgfQotCi0gICAgLyogcmVhZCBhbGwga25vd24gaG9zdHMgZnJvbSB0aGVyZSAqLwotICAgIHJjID0gbGlic3NoMl9rbm93bmhvc3RfcmVhZGZpbGUoc3NoLT5raCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9LTk9XTkhPU1RTXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfS05PV05IT1NUX0ZJTEVfT1BFTlNTSCk7Ci0gICAgaWYocmMgPCAwKQotICAgICAgaW5mb2YoZGF0YSwgIkZhaWxlZCB0byByZWFkIGtub3duIGhvc3RzIGZyb20gJXNcbiIsCi0gICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pOwotICB9Ci0jZW5kaWYgLyogSEFWRV9MSUJTU0gyX0tOT1dOSE9TVF9BUEkgKi8KLQotI2lmZGVmIENVUkxfTElCU1NIMl9ERUJVRwotICBsaWJzc2gyX3RyYWNlKHNzaC0+c3NoX3Nlc3Npb24sIH4wKTsKLSAgaW5mb2YoZGF0YSwgIlNTSCBzb2NrZXQ6ICVkXG4iLCAoaW50KXNvY2spOwotI2VuZGlmIC8qIENVUkxfTElCU1NIMl9ERUJVRyAqLwotCi0gIHN0YXRlKGNvbm4sIFNTSF9JTklUKTsKLQotICByZXN1bHQgPSBzc2hfbXVsdGlfc3RhdGVtYWNoKGNvbm4sIGRvbmUpOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiBzY3BfcGVyZm9ybSgpCi0gKgotICogVGhpcyBpcyB0aGUgYWN0dWFsIERPIGZ1bmN0aW9uIGZvciBTQ1AuIEdldCBhIGZpbGUgYWNjb3JkaW5nIHRvCi0gKiB0aGUgb3B0aW9ucyBwcmV2aW91c2x5IHNldHVwLgotICovCi0KLXN0YXRpYwotQ1VSTGNvZGUgc2NwX3BlcmZvcm0oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNvbm5lY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpCi17Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotCi0gIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiRE8gcGhhc2Ugc3RhcnRzXG4iKSk7Ci0KLSAgKmRvcGhhc2VfZG9uZSA9IEZBTFNFOyAvKiBub3QgZG9uZSB5ZXQgKi8KLQotICAvKiBzdGFydCB0aGUgZmlyc3QgY29tbWFuZCBpbiB0aGUgRE8gcGhhc2UgKi8KLSAgc3RhdGUoY29ubiwgU1NIX1NDUF9UUkFOU19JTklUKTsKLQotICAvKiBydW4gdGhlIHN0YXRlLW1hY2hpbmUgKi8KLSAgcmVzdWx0ID0gc3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOwotCi0gICpjb25uZWN0ZWQgPSBjb25uLT5iaXRzLnRjcGNvbm5lY3RbRklSU1RTT0NLRVRdOwotCi0gIGlmKCpkb3BoYXNlX2RvbmUpIHsKLSAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7Ci0gIH0KLQotICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBjYWxsZWQgZnJvbSBtdWx0aS5jIHdoaWxlIERPaW5nICovCi1zdGF0aWMgQ1VSTGNvZGUgc2NwX2RvaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpCi17Ci0gIENVUkxjb2RlIHJlc3VsdDsKLSAgcmVzdWx0ID0gc3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOwotCi0gIGlmKCpkb3BoYXNlX2RvbmUpIHsKLSAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSAqIFRoZSBETyBmdW5jdGlvbiBpcyBnZW5lcmljIGZvciBib3RoIHByb3RvY29scy4gVGhlcmUgd2FzIHByZXZpb3VzbHkgdHdvCi0gKiBzZXBhcmF0ZSBvbmVzIGJ1dCB0aGlzIHdheSBtZWFucyBsZXNzIGR1cGxpY2F0ZWQgY29kZS4KLSAqLwotCi1zdGF0aWMgQ1VSTGNvZGUgc3NoX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0OwotICBib29sIGNvbm5lY3RlZCA9IDA7Ci0gIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwotICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKLQotICAqZG9uZSA9IEZBTFNFOyAvKiBkZWZhdWx0IHRvIGZhbHNlICovCi0KLSAgZGF0YS0+cmVxLnNpemUgPSAtMTsgLyogbWFrZSBzdXJlIHRoaXMgaXMgdW5rbm93biBhdCB0aGlzIHBvaW50ICovCi0KLSAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09LOyAvKiByZXNldCBlcnJvciBjb2RlICovCi0gIHNzaGMtPnNlY29uZENyZWF0ZURpcnMgPSAwOyAgIC8qIHJlc2V0IHRoZSBjcmVhdGUgZGlyIGF0dGVtcHQgc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgKi8KLQotICBDdXJsX3BncnNTZXRVcGxvYWRDb3VudGVyKGRhdGEsIDApOwotICBDdXJsX3BncnNTZXREb3dubG9hZENvdW50ZXIoZGF0YSwgMCk7Ci0gIEN1cmxfcGdyc1NldFVwbG9hZFNpemUoZGF0YSwgLTEpOwotICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgLTEpOwotCi0gIGlmKGNvbm4tPmhhbmRsZXItPnByb3RvY29sICYgQ1VSTFBST1RPX1NDUCkKLSAgICByZXN1bHQgPSBzY3BfcGVyZm9ybShjb25uLCAmY29ubmVjdGVkLCAgZG9uZSk7Ci0gIGVsc2UKLSAgICByZXN1bHQgPSBzZnRwX3BlcmZvcm0oY29ubiwgJmNvbm5lY3RlZCwgIGRvbmUpOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEJMT0NLSU5HLCBidXQgdGhlIGZ1bmN0aW9uIGlzIHVzaW5nIHRoZSBzdGF0ZSBtYWNoaW5lIHNvIHRoZSBvbmx5IHJlYXNvbgotICAgdGhpcyBpcyBzdGlsbCBibG9ja2luZyBpcyB0aGF0IHRoZSBtdWx0aSBpbnRlcmZhY2UgY29kZSBoYXMgbm8gc3VwcG9ydCBmb3IKLSAgIGRpc2Nvbm5lY3Rpbmcgb3BlcmF0aW9ucyB0aGF0IHRha2VzIGEgd2hpbGUgKi8KLXN0YXRpYyBDVVJMY29kZSBzY3BfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZF9jb25uZWN0aW9uKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgc3RydWN0IHNzaF9jb25uICpzc2ggPSAmY29ubi0+cHJvdG8uc3NoYzsKLSAgKHZvaWQpIGRlYWRfY29ubmVjdGlvbjsKLQotICBpZihzc2gtPnNzaF9zZXNzaW9uKSB7Ci0gICAgLyogb25seSBpZiB0aGVyZSdzIGEgc2Vzc2lvbiBzdGlsbCBhcm91bmQgdG8gdXNlISAqLwotCi0gICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRElTQ09OTkVDVCk7Ci0KLSAgICByZXN1bHQgPSBzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIFRSVUUpOwotICB9Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogZ2VuZXJpYyBkb25lIGZ1bmN0aW9uIGZvciBib3RoIFNDUCBhbmQgU0ZUUCBjYWxsZWQgZnJvbSB0aGVpciBzcGVjaWZpYwotICAgZG9uZSBmdW5jdGlvbnMgKi8KLXN0YXRpYyBDVVJMY29kZSBzc2hfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIENVUkxjb2RlIHN0YXR1cykKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIHN0cnVjdCBTU0hQUk9UTyAqc2Z0cF9zY3AgPSBjb25uLT5kYXRhLT5yZXEucHJvdG9wOwotCi0gIGlmKCFzdGF0dXMpIHsKLSAgICAvKiBydW4gdGhlIHN0YXRlLW1hY2hpbmUgKi8KLSAgICByZXN1bHQgPSBzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIEZBTFNFKTsKLSAgfQotICBlbHNlCi0gICAgcmVzdWx0ID0gc3RhdHVzOwotCi0gIGlmKHNmdHBfc2NwKQotICAgIEN1cmxfc2FmZWZyZWUoc2Z0cF9zY3AtPnBhdGgpOwotICBpZihDdXJsX3BncnNEb25lKGNvbm4pKQotICAgIHJldHVybiBDVVJMRV9BQk9SVEVEX0JZX0NBTExCQUNLOwotCi0gIGNvbm4tPmRhdGEtPnJlcS5rZWVwb24gPSAwOyAvKiBjbGVhciBhbGwgYml0cyAqLwotICByZXR1cm4gcmVzdWx0OwotfQotCi0KLXN0YXRpYyBDVVJMY29kZSBzY3BfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIENVUkxjb2RlIHN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW1hdHVyZSkKLXsKLSAgKHZvaWQpcHJlbWF0dXJlOyAvKiBub3QgdXNlZCAqLwotCi0gIGlmKCFzdGF0dXMpCi0gICAgc3RhdGUoY29ubiwgU1NIX1NDUF9ET05FKTsKLQotICByZXR1cm4gc3NoX2RvbmUoY29ubiwgc3RhdHVzKTsKLQotfQotCi1zdGF0aWMgc3NpemVfdCBzY3Bfc2VuZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICptZW0sIHNpemVfdCBsZW4sIENVUkxjb2RlICplcnIpCi17Ci0gIHNzaXplX3QgbndyaXRlOwotICAodm9pZClzb2NraW5kZXg7IC8qIHdlIG9ubHkgc3VwcG9ydCBTQ1Agb24gdGhlIGZpeGVkIGtub3duIHByaW1hcnkgc29ja2V0ICovCi0KLSAgLyogbGlic3NoMl9jaGFubmVsX3dyaXRlKCkgcmV0dXJucyBpbnQhICovCi0gIG53cml0ZSA9IChzc2l6ZV90KQotICAgIGxpYnNzaDJfY2hhbm5lbF93cml0ZShjb25uLT5wcm90by5zc2hjLnNzaF9jaGFubmVsLCBtZW0sIGxlbik7Ci0KLSAgc3NoX2Jsb2NrMndhaXRmb3IoY29ubiwgKG53cml0ZSA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTik/VFJVRTpGQUxTRSk7Ci0KLSAgaWYobndyaXRlID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Ci0gICAgKmVyciA9IENVUkxFX0FHQUlOOwotICAgIG53cml0ZSA9IDA7Ci0gIH0KLSAgZWxzZSBpZihud3JpdGUgPCBMSUJTU0gyX0VSUk9SX05PTkUpIHsKLSAgICAqZXJyID0gbGlic3NoMl9zZXNzaW9uX2Vycm9yX3RvX0NVUkxFKChpbnQpbndyaXRlKTsKLSAgICBud3JpdGUgPSAtMTsKLSAgfQotCi0gIHJldHVybiBud3JpdGU7Ci19Ci0KLXN0YXRpYyBzc2l6ZV90IHNjcF9yZWN2KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm1lbSwgc2l6ZV90IGxlbiwgQ1VSTGNvZGUgKmVycikKLXsKLSAgc3NpemVfdCBucmVhZDsKLSAgKHZvaWQpc29ja2luZGV4OyAvKiB3ZSBvbmx5IHN1cHBvcnQgU0NQIG9uIHRoZSBmaXhlZCBrbm93biBwcmltYXJ5IHNvY2tldCAqLwotCi0gIC8qIGxpYnNzaDJfY2hhbm5lbF9yZWFkKCkgcmV0dXJucyBpbnQgKi8KLSAgbnJlYWQgPSAoc3NpemVfdCkKLSAgICBsaWJzc2gyX2NoYW5uZWxfcmVhZChjb25uLT5wcm90by5zc2hjLnNzaF9jaGFubmVsLCBtZW0sIGxlbik7Ci0KLSAgc3NoX2Jsb2NrMndhaXRmb3IoY29ubiwgKG5yZWFkID09IExJQlNTSDJfRVJST1JfRUFHQUlOKT9UUlVFOkZBTFNFKTsKLSAgaWYobnJlYWQgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKLSAgICAqZXJyID0gQ1VSTEVfQUdBSU47Ci0gICAgbnJlYWQgPSAtMTsKLSAgfQotCi0gIHJldHVybiBucmVhZDsKLX0KLQotLyoKLSAqID09PT09PT09PT09PT09PSBTRlRQID09PT09PT09PT09PT09PQotICovCi0KLS8qCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiBzZnRwX3BlcmZvcm0oKQotICoKLSAqIFRoaXMgaXMgdGhlIGFjdHVhbCBETyBmdW5jdGlvbiBmb3IgU0ZUUC4gR2V0IGEgZmlsZS9kaXJlY3RvcnkgYWNjb3JkaW5nIHRvCi0gKiB0aGUgb3B0aW9ucyBwcmV2aW91c2x5IHNldHVwLgotICovCi0KLXN0YXRpYwotQ1VSTGNvZGUgc2Z0cF9wZXJmb3JtKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICBib29sICpjb25uZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9waGFzZV9kb25lKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLQotICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIHN0YXJ0c1xuIikpOwotCi0gICpkb3BoYXNlX2RvbmUgPSBGQUxTRTsgLyogbm90IGRvbmUgeWV0ICovCi0KLSAgLyogc3RhcnQgdGhlIGZpcnN0IGNvbW1hbmQgaW4gdGhlIERPIHBoYXNlICovCi0gIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX0lOSVQpOwotCi0gIC8qIHJ1biB0aGUgc3RhdGUtbWFjaGluZSAqLwotICByZXN1bHQgPSBzc2hfbXVsdGlfc3RhdGVtYWNoKGNvbm4sIGRvcGhhc2VfZG9uZSk7Ci0KLSAgKmNvbm5lY3RlZCA9IGNvbm4tPmJpdHMudGNwY29ubmVjdFtGSVJTVFNPQ0tFVF07Ci0KLSAgaWYoKmRvcGhhc2VfZG9uZSkgewotICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiRE8gcGhhc2UgaXMgY29tcGxldGVcbiIpKTsKLSAgfQotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGNhbGxlZCBmcm9tIG11bHRpLmMgd2hpbGUgRE9pbmcgKi8KLXN0YXRpYyBDVVJMY29kZSBzZnRwX2RvaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvcGhhc2VfZG9uZSkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gc3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOwotCi0gIGlmKCpkb3BoYXNlX2RvbmUpIHsKLSAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogQkxPQ0tJTkcsIGJ1dCB0aGUgZnVuY3Rpb24gaXMgdXNpbmcgdGhlIHN0YXRlIG1hY2hpbmUgc28gdGhlIG9ubHkgcmVhc29uCi0gICB0aGlzIGlzIHN0aWxsIGJsb2NraW5nIGlzIHRoYXQgdGhlIG11bHRpIGludGVyZmFjZSBjb2RlIGhhcyBubyBzdXBwb3J0IGZvcgotICAgZGlzY29ubmVjdGluZyBvcGVyYXRpb25zIHRoYXQgdGFrZXMgYSB3aGlsZSAqLwotc3RhdGljIENVUkxjb2RlIHNmdHBfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZF9jb25uZWN0aW9uKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgKHZvaWQpIGRlYWRfY29ubmVjdGlvbjsKLQotICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIlNTSCBESVNDT05ORUNUIHN0YXJ0cyBub3dcbiIpKTsKLQotICBpZihjb25uLT5wcm90by5zc2hjLnNzaF9zZXNzaW9uKSB7Ci0gICAgLyogb25seSBpZiB0aGVyZSdzIGEgc2Vzc2lvbiBzdGlsbCBhcm91bmQgdG8gdXNlISAqLwotICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1NIVVRET1dOKTsKLSAgICByZXN1bHQgPSBzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIFRSVUUpOwotICB9Ci0KLSAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJTU0ggRElTQ09OTkVDVCBpcyBkb25lXG4iKSk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLQotfQotCi1zdGF0aWMgQ1VSTGNvZGUgc2Z0cF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgQ1VSTGNvZGUgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbWF0dXJlKQotewotICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKLQotICBpZighc3RhdHVzKSB7Ci0gICAgLyogUG9zdCBxdW90ZSBjb21tYW5kcyBhcmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIFNGVFBfQ0xPU0Ugc3RhdGUgdG8gYXZvaWQKLSAgICAgICBlcnJvcnMgdGhhdCBjb3VsZCBoYXBwZW4gZHVlIHRvIG9wZW4gZmlsZSBoYW5kbGVzIGR1cmluZyBQT1NUUVVPVEUKLSAgICAgICBvcGVyYXRpb24gKi8KLSAgICBpZighcHJlbWF0dXJlICYmIGNvbm4tPmRhdGEtPnNldC5wb3N0cXVvdGUgJiYgIWNvbm4tPmJpdHMucmV0cnkpCi0gICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfU0ZUUF9QT1NUUVVPVEVfSU5JVDsKLSAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7Ci0gIH0KLSAgcmV0dXJuIHNzaF9kb25lKGNvbm4sIHN0YXR1cyk7Ci19Ci0KLS8qIHJldHVybiBudW1iZXIgb2Ygc2VudCBieXRlcyAqLwotc3RhdGljIHNzaXplX3Qgc2Z0cF9zZW5kKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICptZW0sIHNpemVfdCBsZW4sIENVUkxjb2RlICplcnIpCi17Ci0gIHNzaXplX3QgbndyaXRlOyAgIC8qIGxpYnNzaDJfc2Z0cF93cml0ZSgpIHVzZWQgdG8gcmV0dXJuIHNpemVfdCBpbiAwLjE0Ci0gICAgICAgICAgICAgICAgICAgICAgIGJ1dCBpcyBjaGFuZ2VkIHRvIHNzaXplX3QgaW4gMC4xNS4gVGhlc2UgZGF5cyB3ZSBkb24ndAotICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IGxpYnNzaDIgMC4xNSovCi0gICh2b2lkKXNvY2tpbmRleDsKLQotICBud3JpdGUgPSBsaWJzc2gyX3NmdHBfd3JpdGUoY29ubi0+cHJvdG8uc3NoYy5zZnRwX2hhbmRsZSwgbWVtLCBsZW4pOwotCi0gIHNzaF9ibG9jazJ3YWl0Zm9yKGNvbm4sIChud3JpdGUgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pP1RSVUU6RkFMU0UpOwotCi0gIGlmKG53cml0ZSA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICplcnIgPSBDVVJMRV9BR0FJTjsKLSAgICBud3JpdGUgPSAwOwotICB9Ci0gIGVsc2UgaWYobndyaXRlIDwgTElCU1NIMl9FUlJPUl9OT05FKSB7Ci0gICAgKmVyciA9IGxpYnNzaDJfc2Vzc2lvbl9lcnJvcl90b19DVVJMRSgoaW50KW53cml0ZSk7Ci0gICAgbndyaXRlID0gLTE7Ci0gIH0KLQotICByZXR1cm4gbndyaXRlOwotfQotCi0vKgotICogUmV0dXJuIG51bWJlciBvZiByZWNlaXZlZCAoZGVjcnlwdGVkKSBieXRlcwotICogb3IgPDAgb24gZXJyb3IKLSAqLwotc3RhdGljIHNzaXplX3Qgc2Z0cF9yZWN2KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICptZW0sIHNpemVfdCBsZW4sIENVUkxjb2RlICplcnIpCi17Ci0gIHNzaXplX3QgbnJlYWQ7Ci0gICh2b2lkKXNvY2tpbmRleDsKLQotICBucmVhZCA9IGxpYnNzaDJfc2Z0cF9yZWFkKGNvbm4tPnByb3RvLnNzaGMuc2Z0cF9oYW5kbGUsIG1lbSwgbGVuKTsKLQotICBzc2hfYmxvY2syd2FpdGZvcihjb25uLCAobnJlYWQgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pP1RSVUU6RkFMU0UpOwotCi0gIGlmKG5yZWFkID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Ci0gICAgKmVyciA9IENVUkxFX0FHQUlOOwotICAgIG5yZWFkID0gLTE7Ci0KLSAgfQotICBlbHNlIGlmKG5yZWFkIDwgMCkgewotICAgICplcnIgPSBsaWJzc2gyX3Nlc3Npb25fZXJyb3JfdG9fQ1VSTEUoKGludClucmVhZCk7Ci0gIH0KLSAgcmV0dXJuIG5yZWFkOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciAqc2Z0cF9saWJzc2gyX3N0cmVycm9yKGludCBlcnIpCi17Ci0gIHN3aXRjaChlcnIpIHsKLSAgICBjYXNlIExJQlNTSDJfRlhfTk9fU1VDSF9GSUxFOgotICAgICAgcmV0dXJuICJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IjsKLQotICAgIGNhc2UgTElCU1NIMl9GWF9QRVJNSVNTSU9OX0RFTklFRDoKLSAgICAgIHJldHVybiAiUGVybWlzc2lvbiBkZW5pZWQiOwotCi0gICAgY2FzZSBMSUJTU0gyX0ZYX0ZBSUxVUkU6Ci0gICAgICByZXR1cm4gIk9wZXJhdGlvbiBmYWlsZWQiOwotCi0gICAgY2FzZSBMSUJTU0gyX0ZYX0JBRF9NRVNTQUdFOgotICAgICAgcmV0dXJuICJCYWQgbWVzc2FnZSBmcm9tIFNGVFAgc2VydmVyIjsKLQotICAgIGNhc2UgTElCU1NIMl9GWF9OT19DT05ORUNUSU9OOgotICAgICAgcmV0dXJuICJOb3QgY29ubmVjdGVkIHRvIFNGVFAgc2VydmVyIjsKLQotICAgIGNhc2UgTElCU1NIMl9GWF9DT05ORUNUSU9OX0xPU1Q6Ci0gICAgICByZXR1cm4gIkNvbm5lY3Rpb24gdG8gU0ZUUCBzZXJ2ZXIgbG9zdCI7Ci0KLSAgICBjYXNlIExJQlNTSDJfRlhfT1BfVU5TVVBQT1JURUQ6Ci0gICAgICByZXR1cm4gIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IFNGVFAgc2VydmVyIjsKLQotICAgIGNhc2UgTElCU1NIMl9GWF9JTlZBTElEX0hBTkRMRToKLSAgICAgIHJldHVybiAiSW52YWxpZCBoYW5kbGUiOwotCi0gICAgY2FzZSBMSUJTU0gyX0ZYX05PX1NVQ0hfUEFUSDoKLSAgICAgIHJldHVybiAiTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSI7Ci0KLSAgICBjYXNlIExJQlNTSDJfRlhfRklMRV9BTFJFQURZX0VYSVNUUzoKLSAgICAgIHJldHVybiAiRmlsZSBhbHJlYWR5IGV4aXN0cyI7Ci0KLSAgICBjYXNlIExJQlNTSDJfRlhfV1JJVEVfUFJPVEVDVDoKLSAgICAgIHJldHVybiAiRmlsZSBpcyB3cml0ZSBwcm90ZWN0ZWQiOwotCi0gICAgY2FzZSBMSUJTU0gyX0ZYX05PX01FRElBOgotICAgICAgcmV0dXJuICJObyBtZWRpYSI7Ci0KLSAgICBjYXNlIExJQlNTSDJfRlhfTk9fU1BBQ0VfT05fRklMRVNZU1RFTToKLSAgICAgIHJldHVybiAiRGlzayBmdWxsIjsKLQotICAgIGNhc2UgTElCU1NIMl9GWF9RVU9UQV9FWENFRURFRDoKLSAgICAgIHJldHVybiAiVXNlciBxdW90YSBleGNlZWRlZCI7Ci0KLSAgICBjYXNlIExJQlNTSDJfRlhfVU5LTk9XTl9QUklOQ0lQTEU6Ci0gICAgICByZXR1cm4gIlVua25vd24gcHJpbmNpcGxlIjsKLQotICAgIGNhc2UgTElCU1NIMl9GWF9MT0NLX0NPTkZsSUNUOgotICAgICAgcmV0dXJuICJGaWxlIGxvY2sgY29uZmxpY3QiOwotCi0gICAgY2FzZSBMSUJTU0gyX0ZYX0RJUl9OT1RfRU1QVFk6Ci0gICAgICByZXR1cm4gIkRpcmVjdG9yeSBub3QgZW1wdHkiOwotCi0gICAgY2FzZSBMSUJTU0gyX0ZYX05PVF9BX0RJUkVDVE9SWToKLSAgICAgIHJldHVybiAiTm90IGEgZGlyZWN0b3J5IjsKLQotICAgIGNhc2UgTElCU1NIMl9GWF9JTlZBTElEX0ZJTEVOQU1FOgotICAgICAgcmV0dXJuICJJbnZhbGlkIGZpbGVuYW1lIjsKLQotICAgIGNhc2UgTElCU1NIMl9GWF9MSU5LX0xPT1A6Ci0gICAgICByZXR1cm4gIkxpbmsgcG9pbnRzIHRvIGl0c2VsZiI7Ci0gIH0KLSAgcmV0dXJuICJVbmtub3duIGVycm9yIGluIGxpYnNzaDIiOwotfQotCi0jZW5kaWYgLyogVVNFX0xJQlNTSDIgKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3NzaC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc3NoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MjBhYWMuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc3NoLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotI2lmbmRlZiBIRUFERVJfQ1VSTF9TU0hfSAotI2RlZmluZSBIRUFERVJfQ1VSTF9TU0hfSAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwotICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0gKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAotICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCi0gKgotICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCi0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaW5jbHVkZSAiY3VybF9zZXR1cC5oIgotCi0jaWYgZGVmaW5lZChIQVZFX0xJQlNTSDJfSCkKLSNpbmNsdWRlIDxsaWJzc2gyLmg+Ci0jaW5jbHVkZSA8bGlic3NoMl9zZnRwLmg+Ci0jZWxpZiBkZWZpbmVkKEhBVkVfTElCU1NIX0xJQlNTSF9IKQotI2luY2x1ZGUgPGxpYnNzaC9saWJzc2guaD4KLSNpbmNsdWRlIDxsaWJzc2gvc2Z0cC5oPgotI2VuZGlmIC8qIEhBVkVfTElCU1NIMl9IICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBTU0ggdW5pcXVlIHNldHVwCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdHlwZWRlZiBlbnVtIHsKLSAgU1NIX05PX1NUQVRFID0gLTEsICAvKiBVc2VkIGZvciAibmV4dFN0YXRlIiBzbyBzYXkgdGhlcmUgaXMgbm9uZSAqLwotICBTU0hfU1RPUCA9IDAsICAgICAgIC8qIGRvIG5vdGhpbmcgc3RhdGUsIHN0b3BzIHRoZSBzdGF0ZSBtYWNoaW5lICovCi0KLSAgU1NIX0lOSVQsICAgICAgICAgICAvKiBGaXJzdCBzdGF0ZSBpbiBTU0gtQ09OTkVDVCAqLwotICBTU0hfU19TVEFSVFVQLCAgICAgIC8qIFNlc3Npb24gc3RhcnR1cCAqLwotICBTU0hfSE9TVEtFWSwgICAgICAgIC8qIHZlcmlmeSBob3N0a2V5ICovCi0gIFNTSF9BVVRITElTVCwKLSAgU1NIX0FVVEhfUEtFWV9JTklULAotICBTU0hfQVVUSF9QS0VZLAotICBTU0hfQVVUSF9QQVNTX0lOSVQsCi0gIFNTSF9BVVRIX1BBU1MsCi0gIFNTSF9BVVRIX0FHRU5UX0lOSVQsIC8qIGluaXRpYWxpemUgdGhlbiB3YWl0IGZvciBjb25uZWN0aW9uIHRvIGFnZW50ICovCi0gIFNTSF9BVVRIX0FHRU5UX0xJU1QsIC8qIGFzayBmb3IgbGlzdCB0aGVuIHdhaXQgZm9yIGVudGlyZSBsaXN0IHRvIGNvbWUgKi8KLSAgU1NIX0FVVEhfQUdFTlQsICAgICAgLyogYXR0ZW1wdCBvbmUga2V5IGF0IGEgdGltZSAqLwotICBTU0hfQVVUSF9IT1NUX0lOSVQsCi0gIFNTSF9BVVRIX0hPU1QsCi0gIFNTSF9BVVRIX0tFWV9JTklULAotICBTU0hfQVVUSF9LRVksCi0gIFNTSF9BVVRIX0dTU0FQSSwKLSAgU1NIX0FVVEhfRE9ORSwKLSAgU1NIX1NGVFBfSU5JVCwKLSAgU1NIX1NGVFBfUkVBTFBBVEgsICAgLyogTGFzdCBzdGF0ZSBpbiBTU0gtQ09OTkVDVCAqLwotCi0gIFNTSF9TRlRQX1FVT1RFX0lOSVQsIC8qIEZpcnN0IHN0YXRlIGluIFNGVFAtRE8gKi8KLSAgU1NIX1NGVFBfUE9TVFFVT1RFX0lOSVQsIC8qIChQb3NzaWJseSkgRmlyc3Qgc3RhdGUgaW4gU0ZUUC1ET05FICovCi0gIFNTSF9TRlRQX1FVT1RFLAotICBTU0hfU0ZUUF9ORVhUX1FVT1RFLAotICBTU0hfU0ZUUF9RVU9URV9TVEFULAotICBTU0hfU0ZUUF9RVU9URV9TRVRTVEFULAotICBTU0hfU0ZUUF9RVU9URV9TWU1MSU5LLAotICBTU0hfU0ZUUF9RVU9URV9NS0RJUiwKLSAgU1NIX1NGVFBfUVVPVEVfUkVOQU1FLAotICBTU0hfU0ZUUF9RVU9URV9STURJUiwKLSAgU1NIX1NGVFBfUVVPVEVfVU5MSU5LLAotICBTU0hfU0ZUUF9RVU9URV9TVEFUVkZTLAotICBTU0hfU0ZUUF9HRVRJTkZPLAotICBTU0hfU0ZUUF9GSUxFVElNRSwKLSAgU1NIX1NGVFBfVFJBTlNfSU5JVCwKLSAgU1NIX1NGVFBfVVBMT0FEX0lOSVQsCi0gIFNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQsCi0gIFNTSF9TRlRQX0NSRUFURV9ESVJTLAotICBTU0hfU0ZUUF9DUkVBVEVfRElSU19NS0RJUiwKLSAgU1NIX1NGVFBfUkVBRERJUl9JTklULAotICBTU0hfU0ZUUF9SRUFERElSLAotICBTU0hfU0ZUUF9SRUFERElSX0xJTkssCi0gIFNTSF9TRlRQX1JFQURESVJfQk9UVE9NLAotICBTU0hfU0ZUUF9SRUFERElSX0RPTkUsCi0gIFNTSF9TRlRQX0RPV05MT0FEX0lOSVQsCi0gIFNTSF9TRlRQX0RPV05MT0FEX1NUQVQsIC8qIExhc3Qgc3RhdGUgaW4gU0ZUUC1ETyAqLwotICBTU0hfU0ZUUF9DTE9TRSwgICAgLyogTGFzdCBzdGF0ZSBpbiBTRlRQLURPTkUgKi8KLSAgU1NIX1NGVFBfU0hVVERPV04sIC8qIEZpcnN0IHN0YXRlIGluIFNGVFAtRElTQ09OTkVDVCAqLwotICBTU0hfU0NQX1RSQU5TX0lOSVQsIC8qIEZpcnN0IHN0YXRlIGluIFNDUC1ETyAqLwotICBTU0hfU0NQX1VQTE9BRF9JTklULAotICBTU0hfU0NQX0RPV05MT0FEX0lOSVQsCi0gIFNTSF9TQ1BfRE9XTkxPQUQsCi0gIFNTSF9TQ1BfRE9ORSwKLSAgU1NIX1NDUF9TRU5EX0VPRiwKLSAgU1NIX1NDUF9XQUlUX0VPRiwKLSAgU1NIX1NDUF9XQUlUX0NMT1NFLAotICBTU0hfU0NQX0NIQU5ORUxfRlJFRSwgICAvKiBMYXN0IHN0YXRlIGluIFNDUC1ET05FICovCi0gIFNTSF9TRVNTSU9OX0RJU0NPTk5FQ1QsIC8qIEZpcnN0IHN0YXRlIGluIFNDUC1ESVNDT05ORUNUICovCi0gIFNTSF9TRVNTSU9OX0ZSRUUsICAgICAgIC8qIExhc3Qgc3RhdGUgaW4gU0NQL1NGVFAtRElTQ09OTkVDVCAqLwotICBTU0hfUVVJVCwKLSAgU1NIX0xBU1QgIC8qIG5ldmVyIHVzZWQgKi8KLX0gc3Noc3RhdGU7Ci0KLS8qIHRoaXMgc3RydWN0IGlzIHVzZWQgaW4gdGhlIEhhbmRsZURhdGEgc3RydWN0IHdoaWNoIGlzIHBhcnQgb2YgdGhlCi0gICBDdXJsX2Vhc3ksIHdoaWNoIG1lYW5zIHRoaXMgaXMgdXNlZCBvbiBhIHBlci1lYXN5IGhhbmRsZSBiYXNpcy4KLSAgIEV2ZXJ5dGhpbmcgdGhhdCBpcyBzdHJpY3RseSByZWxhdGVkIHRvIGEgY29ubmVjdGlvbiBpcyBiYW5uZWQgZnJvbSB0aGlzCi0gICBzdHJ1Y3QuICovCi1zdHJ1Y3QgU1NIUFJPVE8gewotICBjaGFyICpwYXRoOyAgICAgICAgICAgICAgICAgIC8qIHRoZSBwYXRoIHdlIG9wZXJhdGUgb24gKi8KLX07Ci0KLS8qIHNzaF9jb25uIGlzIHVzZWQgZm9yIHN0cnVjdCBjb25uZWN0aW9uLW9yaWVudGVkIGRhdGEgaW4gdGhlIGNvbm5lY3RkYXRhCi0gICBzdHJ1Y3QgKi8KLXN0cnVjdCBzc2hfY29ubiB7Ci0gIGNvbnN0IGNoYXIgKmF1dGhsaXN0OyAgICAgICAvKiBMaXN0IG9mIGF1dGguIG1ldGhvZHMsIG1hbmFnZWQgYnkgbGlic3NoMiAqLwotCi0gIC8qIGNvbW1vbiAqLwotICBjb25zdCBjaGFyICpwYXNzcGhyYXNlOyAgICAgLyogcGFzcy1waHJhc2UgdG8gdXNlICovCi0gIGNoYXIgKnJzYV9wdWI7ICAgICAgICAgICAgICAvKiBwYXRoIG5hbWUgKi8KLSAgY2hhciAqcnNhOyAgICAgICAgICAgICAgICAgIC8qIHBhdGggbmFtZSAqLwotICBib29sIGF1dGhlZDsgICAgICAgICAgICAgICAgLyogdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gYXV0aGVudGljYXRlZCBmaW5lICovCi0gIHNzaHN0YXRlIHN0YXRlOyAgICAgICAgICAgICAvKiBhbHdheXMgdXNlIHNzaC5jOnN0YXRlKCkgdG8gY2hhbmdlIHN0YXRlISAqLwotICBzc2hzdGF0ZSBuZXh0c3RhdGU7ICAgICAgICAgLyogdGhlIHN0YXRlIHRvIGdvdG8gYWZ0ZXIgc3RvcHBpbmcgKi8KLSAgQ1VSTGNvZGUgYWN0dWFsY29kZTsgICAgICAgIC8qIHRoZSBhY3R1YWwgZXJyb3IgY29kZSAqLwotICBzdHJ1Y3QgY3VybF9zbGlzdCAqcXVvdGVfaXRlbTsgLyogZm9yIHRoZSBxdW90ZSBvcHRpb24gKi8KLSAgY2hhciAqcXVvdGVfcGF0aDE7ICAgICAgICAgIC8qIHR3byBnZW5lcmljIHBvaW50ZXJzIGZvciB0aGUgUVVPVEUgc3R1ZmYgKi8KLSAgY2hhciAqcXVvdGVfcGF0aDI7Ci0KLSAgYm9vbCBhY2NlcHRmYWlsOyAgICAgICAgICAgIC8qIHVzZWQgYnkgdGhlIFNGVFBfUVVPVEUgKGNvbnRpbnVlIGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZSBjb21tYW5kIGZhaWxzKSAqLwotICBjaGFyICpob21lZGlyOyAgICAgICAgICAgICAgLyogd2hlbiBkb2luZyBTRlRQIHdlIGZpZ3VyZSBvdXQgaG9tZSBkaXIgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0IHBoYXNlICovCi0gIHNpemVfdCByZWFkZGlyX2xlbiwgcmVhZGRpcl90b3RhbExlbiwgcmVhZGRpcl9jdXJyTGVuOwotICBjaGFyICpyZWFkZGlyX2xpbmU7Ci0gIGNoYXIgKnJlYWRkaXJfbGlua1BhdGg7Ci0gIC8qIGVuZCBvZiBSRUFERElSIHN0dWZmICovCi0KLSAgaW50IHNlY29uZENyZWF0ZURpcnM7ICAgICAgICAgLyogY291bnRlciB1c2UgYnkgdGhlIGNvZGUgdG8gc2VlIGlmIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmQgYXR0ZW1wdCBoYXMgYmVlbiBtYWRlIHRvIGNoYW5nZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by9jcmVhdGUgYSBkaXJlY3RvcnkgKi8KLSAgY2hhciAqc2xhc2hfcG9zOyAgICAgICAgICAgICAgLyogdXNlZCBieSB0aGUgU0ZUUF9DUkVBVEVfRElSUyBzdGF0ZSAqLwotCi0gIGludCBvcmlnX3dhaXRmb3I7ICAgICAgICAgICAgIC8qIGRlZmF1bHQgUkVBRC9XUklURSBiaXRzIHdhaXQgZm9yICovCi0KLSNpZiBkZWZpbmVkKFVTRV9MSUJTU0gpCi0vKiBvdXIgdmFyaWFibGVzICovCi0gIHVuc2lnbmVkIGtiZF9zdGF0ZTsgLyogMCBvciAxICovCi0gIHNzaF9rZXkgcHJpdmtleTsKLSAgc3NoX2tleSBwdWJrZXk7Ci0gIGludCBhdXRoX21ldGhvZHM7Ci0gIHNzaF9zZXNzaW9uIHNzaF9zZXNzaW9uOwotICBzc2hfc2NwIHNjcF9zZXNzaW9uOwotICBzZnRwX3Nlc3Npb24gc2Z0cF9zZXNzaW9uOwotICBzZnRwX2ZpbGUgc2Z0cF9maWxlOwotICBzZnRwX2RpciBzZnRwX2RpcjsKLQotICB1bnNpZ25lZCBzZnRwX3JlY3Zfc3RhdGU7IC8qIDAgb3IgMSAqLwotICBpbnQgc2Z0cF9maWxlX2luZGV4OyAvKiBmb3IgYXN5bmMgcmVhZCAqLwotICBzZnRwX2F0dHJpYnV0ZXMgcmVhZGRpcl9hdHRyczsgLyogdXNlZCBieSB0aGUgU0ZUUCByZWFkZGlyIGFjdGlvbnMgKi8KLSAgc2Z0cF9hdHRyaWJ1dGVzIHJlYWRkaXJfbGlua19hdHRyczsgLyogdXNlZCBieSB0aGUgU0ZUUCByZWFkZGlyIGFjdGlvbnMgKi8KLSAgc2Z0cF9hdHRyaWJ1dGVzIHF1b3RlX2F0dHJzOyAvKiB1c2VkIGJ5IHRoZSBTRlRQX1FVT1RFIHN0YXRlICovCi0KLSAgY29uc3QgY2hhciAqcmVhZGRpcl9maWxlbmFtZTsgLyogcG9pbnRzIHdpdGhpbiByZWFkZGlyX2F0dHJzICovCi0gIGNvbnN0IGNoYXIgKnJlYWRkaXJfbG9uZ2VudHJ5OwotICBjaGFyICpyZWFkZGlyX3RtcDsKLSNlbGlmIGRlZmluZWQoVVNFX0xJQlNTSDIpCi0gIGNoYXIgKnJlYWRkaXJfZmlsZW5hbWU7Ci0gIGNoYXIgKnJlYWRkaXJfbG9uZ2VudHJ5OwotCi0gIExJQlNTSDJfU0ZUUF9BVFRSSUJVVEVTIHF1b3RlX2F0dHJzOyAvKiB1c2VkIGJ5IHRoZSBTRlRQX1FVT1RFIHN0YXRlICovCi0KLSAgLyogSGVyZSdzIGEgc2V0IG9mIHN0cnVjdCBtZW1iZXJzIHVzZWQgYnkgdGhlIFNGVFBfUkVBRERJUiBzdGF0ZSAqLwotICBMSUJTU0gyX1NGVFBfQVRUUklCVVRFUyByZWFkZGlyX2F0dHJzOwotICBMSUJTU0gyX1NFU1NJT04gKnNzaF9zZXNzaW9uOyAvKiBTZWN1cmUgU2hlbGwgc2Vzc2lvbiAqLwotICBMSUJTU0gyX0NIQU5ORUwgKnNzaF9jaGFubmVsOyAvKiBTZWN1cmUgU2hlbGwgY2hhbm5lbCBoYW5kbGUgKi8KLSAgTElCU1NIMl9TRlRQICpzZnRwX3Nlc3Npb247ICAgLyogU0ZUUCBoYW5kbGUgKi8KLSAgTElCU1NIMl9TRlRQX0hBTkRMRSAqc2Z0cF9oYW5kbGU7Ci0KLSNpZmRlZiBIQVZFX0xJQlNTSDJfQUdFTlRfQVBJCi0gIExJQlNTSDJfQUdFTlQgKnNzaF9hZ2VudDsgICAgIC8qIHByb3h5IHRvIHNzaC1hZ2VudC9wYWdlYW50ICovCi0gIHN0cnVjdCBsaWJzc2gyX2FnZW50X3B1YmxpY2tleSAqc3NoYWdlbnRfaWRlbnRpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3NoYWdlbnRfcHJldl9pZGVudGl0eTsKLSNlbmRpZgotCi0gIC8qIG5vdGUgdGhhdCBIQVZFX0xJQlNTSDJfS05PV05IT1NUX0FQSSBpcyBhIGRlZmluZSBzZXQgaW4gdGhlIGxpYnNzaDIuaAotICAgICBoZWFkZXIgKi8KLSNpZmRlZiBIQVZFX0xJQlNTSDJfS05PV05IT1NUX0FQSQotICBMSUJTU0gyX0tOT1dOSE9TVFMgKmtoOwotI2VuZGlmCi0jZW5kaWYgLyogVVNFX0xJQlNTSCAqLwotfTsKLQotI2lmIGRlZmluZWQoVVNFX0xJQlNTSCkKLQotI2RlZmluZSBDVVJMX0xJQlNTSF9WRVJTSU9OIHNzaF92ZXJzaW9uKDApCi0KLWV4dGVybiBjb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyIEN1cmxfaGFuZGxlcl9zY3A7Ci1leHRlcm4gY29uc3Qgc3RydWN0IEN1cmxfaGFuZGxlciBDdXJsX2hhbmRsZXJfc2Z0cDsKLQotI2VsaWYgZGVmaW5lZChVU0VfTElCU1NIMikKLQotLyogRmVhdHVyZSBkZXRlY3Rpb24gYmFzZWQgb24gdmVyc2lvbiBudW1iZXJzIHRvIGJldHRlciB3b3JrIHdpdGgKLSAgIG5vbi1jb25maWd1cmUgcGxhdGZvcm1zICovCi0KLSNpZiAhZGVmaW5lZChMSUJTU0gyX1ZFUlNJT05fTlVNKSB8fCAoTElCU1NIMl9WRVJTSU9OX05VTSA8IDB4MDAxMDAwKQotIyAgZXJyb3IgIlNDUC9TRlRQIHByb3RvY29scyByZXF1aXJlIGxpYnNzaDIgMC4xNiBvciBsYXRlciIKLSNlbmRpZgotCi0jaWYgTElCU1NIMl9WRVJTSU9OX05VTSA+PSAweDAxMDAwMAotI2RlZmluZSBIQVZFX0xJQlNTSDJfU0ZUUF9TRUVLNjQgMQotI2VuZGlmCi0KLSNpZiBMSUJTU0gyX1ZFUlNJT05fTlVNID49IDB4MDEwMTAwCi0jZGVmaW5lIEhBVkVfTElCU1NIMl9WRVJTSU9OIDEKLSNlbmRpZgotCi0jaWYgTElCU1NIMl9WRVJTSU9OX05VTSA+PSAweDAxMDIwNQotI2RlZmluZSBIQVZFX0xJQlNTSDJfSU5JVCAxCi0jZGVmaW5lIEhBVkVfTElCU1NIMl9FWElUIDEKLSNlbmRpZgotCi0jaWYgTElCU1NIMl9WRVJTSU9OX05VTSA+PSAweDAxMDIwNgotI2RlZmluZSBIQVZFX0xJQlNTSDJfS05PV05IT1NUX0NIRUNLUCAxCi0jZGVmaW5lIEhBVkVfTElCU1NIMl9TQ1BfU0VORDY0IDEKLSNlbmRpZgotCi0jaWYgTElCU1NIMl9WRVJTSU9OX05VTSA+PSAweDAxMDIwOAotI2RlZmluZSBIQVZFX0xJQlNTSDJfU0VTU0lPTl9IQU5EU0hBS0UgMQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0xJQlNTSDJfVkVSU0lPTgotLyogZ2V0IGl0IHJ1bi10aW1lIGlmIHBvc3NpYmxlICovCi0jZGVmaW5lIENVUkxfTElCU1NIMl9WRVJTSU9OIGxpYnNzaDJfdmVyc2lvbigwKQotI2Vsc2UKLS8qIHVzZSBidWlsZC10aW1lIGlmIHJ1bi10aW1lIG5vdCBwb3NzaWJsZSAqLwotI2RlZmluZSBDVVJMX0xJQlNTSDJfVkVSU0lPTiBMSUJTU0gyX1ZFUlNJT04KLSNlbmRpZgotCi1leHRlcm4gY29uc3Qgc3RydWN0IEN1cmxfaGFuZGxlciBDdXJsX2hhbmRsZXJfc2NwOwotZXh0ZXJuIGNvbnN0IHN0cnVjdCBDdXJsX2hhbmRsZXIgQ3VybF9oYW5kbGVyX3NmdHA7Ci0KLSNlbmRpZiAvKiBVU0VfTElCU1NIMiAqLwotCi0jZW5kaWYgLyogSEVBREVSX0NVUkxfU1NIX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cmNhc2UuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cmNhc2UuYwppbmRleCAyNGJjY2E5Li5hMzA5ZTM1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zdHJjYXNlLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc3RyY2FzZS5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTcsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0yNiw2ICsyNiw4IEBACiAKICNpbmNsdWRlICJzdHJjYXNlLmgiCiAKK3N0YXRpYyBjaGFyIHJhd190b2xvd2VyKGNoYXIgaW4pOworCiAvKiBQb3J0YWJsZSwgY29uc2lzdGVudCB0b3VwcGVyIChyZW1lbWJlciBFQkNESUMpLiBEbyBub3QgdXNlIHRvdXBwZXIoKSBiZWNhdXNlCiAgICBpdHMgYmVoYXZpb3IgaXMgYWx0ZXJlZCBieSB0aGUgY3VycmVudCBsb2NhbGUuICovCiBjaGFyIEN1cmxfcmF3X3RvdXBwZXIoY2hhciBpbikKQEAgLTkzLDYgKzk1LDc1IEBACiAgIHJldHVybiBpbjsKIH0KIAorCisvKiBQb3J0YWJsZSwgY29uc2lzdGVudCB0b2xvd2VyIChyZW1lbWJlciBFQkNESUMpLiBEbyBub3QgdXNlIHRvbG93ZXIoKSBiZWNhdXNlCisgICBpdHMgYmVoYXZpb3IgaXMgYWx0ZXJlZCBieSB0aGUgY3VycmVudCBsb2NhbGUuICovCitzdGF0aWMgY2hhciByYXdfdG9sb3dlcihjaGFyIGluKQoreworI2lmICFkZWZpbmVkKENVUkxfRE9FU19DT05WRVJTSU9OUykKKyAgaWYoaW4gPj0gJ0EnICYmIGluIDw9ICdaJykKKyAgICByZXR1cm4gKGNoYXIpKCdhJyArIGluIC0gJ0EnKTsKKyNlbHNlCisgIHN3aXRjaChpbikgeworICBjYXNlICdBJzoKKyAgICByZXR1cm4gJ2EnOworICBjYXNlICdCJzoKKyAgICByZXR1cm4gJ2InOworICBjYXNlICdDJzoKKyAgICByZXR1cm4gJ2MnOworICBjYXNlICdEJzoKKyAgICByZXR1cm4gJ2QnOworICBjYXNlICdFJzoKKyAgICByZXR1cm4gJ2UnOworICBjYXNlICdGJzoKKyAgICByZXR1cm4gJ2YnOworICBjYXNlICdHJzoKKyAgICByZXR1cm4gJ2cnOworICBjYXNlICdIJzoKKyAgICByZXR1cm4gJ2gnOworICBjYXNlICdJJzoKKyAgICByZXR1cm4gJ2knOworICBjYXNlICdKJzoKKyAgICByZXR1cm4gJ2onOworICBjYXNlICdLJzoKKyAgICByZXR1cm4gJ2snOworICBjYXNlICdMJzoKKyAgICByZXR1cm4gJ2wnOworICBjYXNlICdNJzoKKyAgICByZXR1cm4gJ20nOworICBjYXNlICdOJzoKKyAgICByZXR1cm4gJ24nOworICBjYXNlICdPJzoKKyAgICByZXR1cm4gJ28nOworICBjYXNlICdQJzoKKyAgICByZXR1cm4gJ3AnOworICBjYXNlICdRJzoKKyAgICByZXR1cm4gJ3EnOworICBjYXNlICdSJzoKKyAgICByZXR1cm4gJ3InOworICBjYXNlICdTJzoKKyAgICByZXR1cm4gJ3MnOworICBjYXNlICdUJzoKKyAgICByZXR1cm4gJ3QnOworICBjYXNlICdVJzoKKyAgICByZXR1cm4gJ3UnOworICBjYXNlICdWJzoKKyAgICByZXR1cm4gJ3YnOworICBjYXNlICdXJzoKKyAgICByZXR1cm4gJ3cnOworICBjYXNlICdYJzoKKyAgICByZXR1cm4gJ3gnOworICBjYXNlICdZJzoKKyAgICByZXR1cm4gJ3knOworICBjYXNlICdaJzoKKyAgICByZXR1cm4gJ3onOworICB9CisjZW5kaWYKKworICByZXR1cm4gaW47Cit9CisKKwogLyoKICAqIEN1cmxfc3RyY2FzZWNvbXBhcmUoKSBpcyBmb3IgZG9pbmcgInJhdyIgY2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmdzLiBUaGlzIGlzCiAgKiBtZWFudCB0byBiZSBsb2NhbGUgaW5kZXBlbmRlbnQgYW5kIG9ubHkgY29tcGFyZSBzdHJpbmdzIHdlIGtub3cgYXJlIHNhZmUKQEAgLTE2NSw2ICsyMzYsMjEgQEAKICAgfSB3aGlsZSgqc3JjKysgJiYgLS1uKTsKIH0KIAorLyogQ29weSBhIGxvd2VyIGNhc2UgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGZyb20gc3JjIHRvIGRlc3QuICBUaGUKKyAqIHN0cmluZ3MgbWF5IG92ZXJsYXAuICBObyBtb3JlIHRoYW4gbiBjaGFyYWN0ZXJzIG9mIHRoZSBzdHJpbmcgYXJlIGNvcGllZAorICogKGluY2x1ZGluZyBhbnkgTlVMKSBhbmQgdGhlIGRlc3RpbmF0aW9uIHN0cmluZyB3aWxsIE5PVCBiZQorICogTlVMLXRlcm1pbmF0ZWQgaWYgdGhhdCBsaW1pdCBpcyByZWFjaGVkLgorICovCit2b2lkIEN1cmxfc3RybnRvbG93ZXIoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3QgbikKK3sKKyAgaWYobiA8IDEpCisgICAgcmV0dXJuOworCisgIGRvIHsKKyAgICAqZGVzdCsrID0gcmF3X3RvbG93ZXIoKnNyYyk7CisgIH0gd2hpbGUoKnNyYysrICYmIC0tbik7Cit9CisKIC8qIC0tLSBwdWJsaWMgZnVuY3Rpb25zIC0tLSAqLwogCiBpbnQgY3VybF9zdHJlcXVhbChjb25zdCBjaGFyICpmaXJzdCwgY29uc3QgY2hhciAqc2Vjb25kKQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc3RyY2FzZS5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc3RyY2FzZS5oCmluZGV4IDZmZWUzODQuLmNkNGM0MTkgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cmNhc2UuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zdHJjYXNlLmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTQ2LDUgKzQ2LDYgQEAKICNkZWZpbmUgY2hlY2twcmVmaXgoYSxiKSAgICBjdXJsX3N0cm5lcXVhbChhLGIsc3RybGVuKGEpKQogCiB2b2lkIEN1cmxfc3RybnRvdXBwZXIoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgbik7Cit2b2lkIEN1cmxfc3RybnRvbG93ZXIoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgbik7CiAKICNlbmRpZiAvKiBIRUFERVJfQ1VSTF9TVFJDQVNFX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cmR1cC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc3RyZHVwLmMKaW5kZXggNTFlNzk3OC4uMWFiMTBmZCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvc3RyZHVwLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc3RyZHVwLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cmVycm9yLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zdHJlcnJvci5jCmluZGV4IGUyNzNmMzcuLjFhMTY2YmYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cmVycm9yLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc3RyZXJyb3IuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDA0IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMzExLDYgKzMxMSwxNSBAQAogICBjYXNlIENVUkxFX1JFQ1VSU0lWRV9BUElfQ0FMTDoKICAgICByZXR1cm4gIkFQSSBmdW5jdGlvbiBjYWxsZWQgZnJvbSB3aXRoaW4gY2FsbGJhY2siOwogCisgIGNhc2UgQ1VSTEVfQVVUSF9FUlJPUjoKKyAgICByZXR1cm4gIkFuIGF1dGhlbnRpY2F0aW9uIGZ1bmN0aW9uIHJldHVybmVkIGFuIGVycm9yIjsKKworICBjYXNlIENVUkxFX0hUVFAzOgorICAgIHJldHVybiAiSFRUUC8zIGVycm9yIjsKKworICBjYXNlIENVUkxFX1FVSUNfQ09OTkVDVF9FUlJPUjoKKyAgICByZXR1cm4gIlFVSUMgY29ubmVjdGlvbiBlcnJvciI7CisKICAgICAvKiBlcnJvciBjb2RlcyBub3QgdXNlZCBieSBjdXJyZW50IGxpYmN1cmwgKi8KICAgY2FzZSBDVVJMRV9PQlNPTEVURTIwOgogICBjYXNlIENVUkxFX09CU09MRVRFMjQ6CkBAIC0zODMsNiArMzkyLDEyIEBACiAgIGNhc2UgQ1VSTE1fUkVDVVJTSVZFX0FQSV9DQUxMOgogICAgIHJldHVybiAiQVBJIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIHdpdGhpbiBjYWxsYmFjayI7CiAKKyAgY2FzZSBDVVJMTV9XQUtFVVBfRkFJTFVSRToKKyAgICByZXR1cm4gIldha2V1cCBpcyB1bmF2YWlsYWJsZSBvciBmYWlsZWQiOworCisgIGNhc2UgQ1VSTE1fQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOgorICAgIHJldHVybiAiQSBsaWJjdXJsIGZ1bmN0aW9uIHdhcyBnaXZlbiBhIGJhZCBhcmd1bWVudCI7CisKICAgY2FzZSBDVVJMTV9MQVNUOgogICAgIGJyZWFrOwogICB9CkBAIC00MzMsMTkgKzQ0OCwyNiBAQAogfQogCiAjaWZkZWYgVVNFX1dJTlNPQ0sKLQotLyogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIG1vc3QgLyBhbGwgKD8pIFdpbnNvY2sgZXJyb3JzIGN1cmwgaXMgYWJsZSB0byBwcm9kdWNlLgorLyogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgQ3VybF9zdHJlcnJvciB0aGF0IGNvbnZlcnRzIFdpbnNvY2sgZXJyb3IKKyAqIGNvZGVzIChXU0FHZXRMYXN0RXJyb3IpIHRvIGVycm9yIG1lc3NhZ2VzLgorICogUmV0dXJucyBOVUxMIGlmIG5vIGVycm9yIG1lc3NhZ2Ugd2FzIGZvdW5kIGZvciBlcnJvciBjb2RlLgogICovCiBzdGF0aWMgY29uc3QgY2hhciAqCiBnZXRfd2luc29ja19lcnJvciAoaW50IGVyciwgY2hhciAqYnVmLCBzaXplX3QgbGVuKQogewotI2lmZGVmIFBSRVNFUlZFX1dJTkRPV1NfRVJST1JfQ09ERQotICBEV09SRCBvbGRfd2luX2VyciA9IEdldExhc3RFcnJvcigpOwotI2VuZGlmCi0gIGludCBvbGRfZXJybm8gPSBlcnJubzsKLSAgY29uc3QgY2hhciAqcDsKLQogI2lmbmRlZiBDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTCisgIGNvbnN0IGNoYXIgKnA7CisjZW5kaWYKKworICBpZighbGVuKQorICAgIHJldHVybiBOVUxMOworCisgICpidWYgPSAnXDAnOworCisjaWZkZWYgQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUworICAodm9pZCllcnI7CisgIHJldHVybiBOVUxMOworI2Vsc2UKICAgc3dpdGNoKGVycikgewogICBjYXNlIFdTQUVJTlRSOgogICAgIHAgPSAiQ2FsbCBpbnRlcnJ1cHRlZCI7CkBAIC02MTQsMjcgKzYzNiw2NCBAQAogICBkZWZhdWx0OgogICAgIHJldHVybiBOVUxMOwogICB9Ci0jZWxzZQotICBpZighZXJyKQotICAgIHJldHVybiBOVUxMOwotICBlbHNlCi0gICAgcCA9ICJlcnJvciI7Ci0jZW5kaWYKICAgc3RybmNweShidWYsIHAsIGxlbik7CiAgIGJ1ZiBbbGVuLTFdID0gJ1wwJzsKLQotICBpZihlcnJubyAhPSBvbGRfZXJybm8pCi0gICAgZXJybm8gPSBvbGRfZXJybm87Ci0KLSNpZmRlZiBQUkVTRVJWRV9XSU5ET1dTX0VSUk9SX0NPREUKLSAgaWYob2xkX3dpbl9lcnIgIT0gR2V0TGFzdEVycm9yKCkpCi0gICAgU2V0TGFzdEVycm9yKG9sZF93aW5fZXJyKTsKLSNlbmRpZgotCiAgIHJldHVybiBidWY7CisjZW5kaWYKIH0KICNlbmRpZiAgIC8qIFVTRV9XSU5TT0NLICovCiAKKyNpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisvKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBDdXJsX3N0cmVycm9yIHRoYXQgY29udmVydHMgV2luZG93cyBBUEkgZXJyb3IKKyAqIGNvZGVzIChHZXRMYXN0RXJyb3IpIHRvIGVycm9yIG1lc3NhZ2VzLgorICogUmV0dXJucyBOVUxMIGlmIG5vIGVycm9yIG1lc3NhZ2Ugd2FzIGZvdW5kIGZvciBlcnJvciBjb2RlLgorICovCitzdGF0aWMgY29uc3QgY2hhciAqCitnZXRfd2luYXBpX2Vycm9yKGludCBlcnIsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbikKK3sKKyAgY2hhciAqcDsKKworICBpZighYnVmbGVuKQorICAgIHJldHVybiBOVUxMOworCisgICpidWYgPSAnXDAnOworCisjaWZkZWYgX1dJTjMyX1dDRQorICB7CisgICAgd2NoYXJfdCB3YnVmWzI1Nl07CisgICAgd2J1ZlswXSA9IEwnXDAnOworCisgICAgaWYoRm9ybWF0TWVzc2FnZSgoRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfAorICAgICAgICAgICAgICAgICAgICAgIEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTKSwgTlVMTCwgZXJyLAorICAgICAgICAgICAgICAgICAgICAgTEFOR19ORVVUUkFMLCB3YnVmLCBzaXplb2Yod2J1Zikvc2l6ZW9mKHdjaGFyX3QpLCBOVUxMKSkgeworICAgICAgc2l6ZV90IHdyaXR0ZW4gPSB3Y3N0b21icyhidWYsIHdidWYsIGJ1ZmxlbiAtIDEpOworICAgICAgaWYod3JpdHRlbiAhPSAoc2l6ZV90KS0xKQorICAgICAgICBidWZbd3JpdHRlbl0gPSAnXDAnOworICAgICAgZWxzZQorICAgICAgICAqYnVmID0gJ1wwJzsKKyAgICB9CisgIH0KKyNlbHNlCisgIGlmKCFGb3JtYXRNZXNzYWdlQSgoRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfAorICAgICAgICAgICAgICAgICAgICAgIEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTKSwgTlVMTCwgZXJyLAorICAgICAgICAgICAgICAgICAgICAgTEFOR19ORVVUUkFMLCBidWYsIChEV09SRClidWZsZW4sIE5VTEwpKSB7CisgICAgKmJ1ZiA9ICdcMCc7CisgIH0KKyNlbmRpZgorCisgIC8qIFRydW5jYXRlIG11bHRpcGxlIGxpbmVzICovCisgIHAgPSBzdHJjaHIoYnVmLCAnXG4nKTsKKyAgaWYocCkgeworICAgIGlmKHAgPiBidWYgJiYgKihwLTEpID09ICdccicpCisgICAgICAqKHAtMSkgPSAnXDAnOworICAgIGVsc2UKKyAgICAgICpwID0gJ1wwJzsKKyAgfQorCisgIHJldHVybiAoKmJ1ZiA/IGJ1ZiA6IE5VTEwpOworfQorI2VuZGlmIC8qIFdJTjMyIHx8IF9XSU4zMl9XQ0UgKi8KKwogLyoKICAqIE91ciB0aHJlYWQtc2FmZSBhbmQgc21hcnQgc3RyZXJyb3IoKSByZXBsYWNlbWVudC4KICAqCkBAIC02NDUsNiArNzA0LDE0IEBACiAgKgogICogV2UgZG9uJ3QgZG8gcmFuZ2UgY2hlY2tpbmcgKG9uIHN5c3RlbXMgb3RoZXIgdGhhbiBXaW5kb3dzKSBzaW5jZSB0aGVyZSBpcwogICogbm8gZ29vZCByZWxpYWJsZSBhbmQgcG9ydGFibGUgd2F5IHRvIGRvIGl0LgorICoKKyAqIE9uIFdpbmRvd3MgZGlmZmVyZW50IHR5cGVzIG9mIGVycm9yIGNvZGVzIG92ZXJsYXAuIFRoaXMgZnVuY3Rpb24gaGFzIGFuCisgKiBvcmRlciBvZiBwcmVmZXJlbmNlIHdoZW4gdHJ5aW5nIHRvIG1hdGNoIGVycm9yIGNvZGVzOgorICogQ1JUIChlcnJubyksIFdpbnNvY2sgKFdTQUdldExhc3RFcnJvciksIFdpbmRvd3MgQVBJIChHZXRMYXN0RXJyb3IpLgorICoKKyAqIEl0IG1heSBiZSBtb3JlIGNvcnJlY3QgdG8gY2FsbCBvbmUgb2YgdGhlIHZhcmlhbnQgZnVuY3Rpb25zIGluc3RlYWQ6CisgKiBDYWxsIEN1cmxfc3NwaV9zdHJlcnJvciBpZiB0aGUgZXJyb3IgY29kZSBpcyBkZWZpbml0ZWx5IFdpbmRvd3MgU1NQSS4KKyAqIENhbGwgQ3VybF93aW5hcGlfc3RyZXJyb3IgaWYgdGhlIGVycm9yIGNvZGUgaXMgZGVmaW5pdGVseSBXaW5kb3dzIEFQSS4KICAqLwogY29uc3QgY2hhciAqQ3VybF9zdHJlcnJvcihpbnQgZXJyLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4pCiB7CkBAIC02NTUsMzUgKzcyMiwzMCBAQAogICBjaGFyICpwOwogICBzaXplX3QgbWF4OwogCisgIGlmKCFidWZsZW4pCisgICAgcmV0dXJuIE5VTEw7CisKICAgREVCVUdBU1NFUlQoZXJyID49IDApOwogCiAgIG1heCA9IGJ1ZmxlbiAtIDE7CiAgICpidWYgPSAnXDAnOwogCi0jaWZkZWYgVVNFX1dJTlNPQ0sKLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSAgewotICAgIHdjaGFyX3Qgd2J1ZlsyNTZdOwotICAgIHdidWZbMF0gPSBMJ1wwJzsKLQotICAgIEZvcm1hdE1lc3NhZ2UoRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0sIE5VTEwsIGVyciwKLSAgICAgICAgICAgICAgICAgIExBTkdfTkVVVFJBTCwgd2J1Ziwgc2l6ZW9mKHdidWYpL3NpemVvZih3Y2hhcl90KSwgTlVMTCk7Ci0gICAgd2NzdG9tYnMoYnVmLCB3YnVmLCBtYXgpOwotICB9Ci0jZWxzZQorI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKyNpZiBkZWZpbmVkKFdJTjMyKQogICAvKiAnc3lzX25lcnInIGlzIHRoZSBtYXhpbXVtIGVycm5vIG51bWJlciwgaXQgaXMgbm90IHdpZGVseSBwb3J0YWJsZSAqLwogICBpZihlcnIgPj0gMCAmJiBlcnIgPCBzeXNfbmVycikKICAgICBzdHJuY3B5KGJ1Ziwgc3RyZXJyb3IoZXJyKSwgbWF4KTsKLSAgZWxzZSB7Ci0gICAgaWYoIWdldF93aW5zb2NrX2Vycm9yKGVyciwgYnVmLCBtYXgpICYmCi0gICAgICAgIUZvcm1hdE1lc3NhZ2VBKEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNLCBOVUxMLCBlcnIsCi0gICAgICAgICAgICAgICAgICAgICAgIExBTkdfTkVVVFJBTCwgYnVmLCAoRFdPUkQpbWF4LCBOVUxMKSkKKyAgZWxzZQorI2VuZGlmCisgIHsKKyAgICBpZigKKyNpZmRlZiBVU0VfV0lOU09DSworICAgICAgICFnZXRfd2luc29ja19lcnJvcihlcnIsIGJ1ZiwgbWF4KSAmJgorI2VuZGlmCisgICAgICAgIWdldF93aW5hcGlfZXJyb3IoKERXT1JEKWVyciwgYnVmLCBtYXgpKQogICAgICAgbXNucHJpbnRmKGJ1ZiwgbWF4LCAiVW5rbm93biBlcnJvciAlZCAoJSN4KSIsIGVyciwgZXJyKTsKICAgfQotI2VuZGlmCi0KLSNlbHNlIC8qIG5vdCBVU0VfV0lOU09DSyBjb21pbmcgdXAgKi8KKyNlbHNlIC8qIG5vdCBXaW5kb3dzIGNvbWluZyB1cCAqLwogCiAjaWYgZGVmaW5lZChIQVZFX1NUUkVSUk9SX1IpICYmIGRlZmluZWQoSEFWRV9QT1NJWF9TVFJFUlJPUl9SKQogIC8qCkBAIC03MzEsNyArNzkzLDcgQEAKICAgfQogI2VuZGlmCiAKLSNlbmRpZiAvKiBlbmQgb2YgISBVU0VfV0lOU09DSyAqLworI2VuZGlmIC8qIGVuZCBvZiBub3QgV2luZG93cyAqLwogCiAgIGJ1ZlttYXhdID0gJ1wwJzsgLyogbWFrZSBzdXJlIHRoZSBzdHJpbmcgaXMgemVybyB0ZXJtaW5hdGVkICovCiAKQEAgLTc1NCwzNDEgKzgxNiwzNSBAQAogICByZXR1cm4gYnVmOwogfQogCi0jaWZkZWYgVVNFX1dJTkRPV1NfU1NQSQotY29uc3QgY2hhciAqQ3VybF9zc3BpX3N0cmVycm9yKGludCBlcnIsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbikKKy8qCisgKiBDdXJsX3dpbmFwaV9zdHJlcnJvcjoKKyAqIFZhcmlhbnQgb2YgQ3VybF9zdHJlcnJvciBpZiB0aGUgZXJyb3IgY29kZSBpcyBkZWZpbml0ZWx5IFdpbmRvd3MgQVBJLgorICovCisjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorY29uc3QgY2hhciAqQ3VybF93aW5hcGlfc3RyZXJyb3IoRFdPUkQgZXJyLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4pCiB7CiAjaWZkZWYgUFJFU0VSVkVfV0lORE9XU19FUlJPUl9DT0RFCiAgIERXT1JEIG9sZF93aW5fZXJyID0gR2V0TGFzdEVycm9yKCk7CiAjZW5kaWYKICAgaW50IG9sZF9lcnJubyA9IGVycm5vOwotICBjb25zdCBjaGFyICp0eHQ7Ci0gIGNoYXIgKm91dGJ1ZjsKLSAgc2l6ZV90IG91dG1heDsKLSNpZm5kZWYgQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUwotICBjaGFyIHR4dGJ1Zls4MF07Ci0gIGNoYXIgbXNnYnVmWzI1Nl07Ci0gIGNoYXIgKnAsICpzdHIsICptc2cgPSBOVUxMOwotICBib29sIG1zZ19mb3JtYXR0ZWQgPSBGQUxTRTsKLSNlbmRpZgogCi0gIG91dGJ1ZiA9IGJ1ZjsKLSAgb3V0bWF4ID0gYnVmbGVuIC0gMTsKLSAgKm91dGJ1ZiA9ICdcMCc7CisgIGlmKCFidWZsZW4pCisgICAgcmV0dXJuIE5VTEw7CisKKyAgKmJ1ZiA9ICdcMCc7CiAKICNpZm5kZWYgQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUwotCi0gIHN3aXRjaChlcnIpIHsKLSAgICBjYXNlIFNFQ19FX09LOgotICAgICAgdHh0ID0gIk5vIGVycm9yIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1JZUFRfRV9SRVZPS0VEOgotICAgICAgdHh0ID0gIkNSWVBUX0VfUkVWT0tFRCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX0FMR09SSVRITV9NSVNNQVRDSDoKLSAgICAgIHR4dCA9ICJTRUNfRV9BTEdPUklUSE1fTUlTTUFUQ0giOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9CQURfQklORElOR1M6Ci0gICAgICB0eHQgPSAiU0VDX0VfQkFEX0JJTkRJTkdTIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfQkFEX1BLR0lEOgotICAgICAgdHh0ID0gIlNFQ19FX0JBRF9QS0dJRCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX0JVRkZFUl9UT09fU01BTEw6Ci0gICAgICB0eHQgPSAiU0VDX0VfQlVGRkVSX1RPT19TTUFMTCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX0NBTk5PVF9JTlNUQUxMOgotICAgICAgdHh0ID0gIlNFQ19FX0NBTk5PVF9JTlNUQUxMIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfQ0FOTk9UX1BBQ0s6Ci0gICAgICB0eHQgPSAiU0VDX0VfQ0FOTk9UX1BBQ0siOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9DRVJUX0VYUElSRUQ6Ci0gICAgICB0eHQgPSAiU0VDX0VfQ0VSVF9FWFBJUkVEIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfQ0VSVF9VTktOT1dOOgotICAgICAgdHh0ID0gIlNFQ19FX0NFUlRfVU5LTk9XTiI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX0NFUlRfV1JPTkdfVVNBR0U6Ci0gICAgICB0eHQgPSAiU0VDX0VfQ0VSVF9XUk9OR19VU0FHRSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX0NPTlRFWFRfRVhQSVJFRDoKLSAgICAgIHR4dCA9ICJTRUNfRV9DT05URVhUX0VYUElSRUQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9DUk9TU1JFQUxNX0RFTEVHQVRJT05fRkFJTFVSRToKLSAgICAgIHR4dCA9ICJTRUNfRV9DUk9TU1JFQUxNX0RFTEVHQVRJT05fRkFJTFVSRSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX0NSWVBUT19TWVNURU1fSU5WQUxJRDoKLSAgICAgIHR4dCA9ICJTRUNfRV9DUllQVE9fU1lTVEVNX0lOVkFMSUQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9ERUNSWVBUX0ZBSUxVUkU6Ci0gICAgICB0eHQgPSAiU0VDX0VfREVDUllQVF9GQUlMVVJFIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfREVMRUdBVElPTl9QT0xJQ1k6Ci0gICAgICB0eHQgPSAiU0VDX0VfREVMRUdBVElPTl9QT0xJQ1kiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9ERUxFR0FUSU9OX1JFUVVJUkVEOgotICAgICAgdHh0ID0gIlNFQ19FX0RFTEVHQVRJT05fUkVRVUlSRUQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9ET1dOR1JBREVfREVURUNURUQ6Ci0gICAgICB0eHQgPSAiU0VDX0VfRE9XTkdSQURFX0RFVEVDVEVEIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfRU5DUllQVF9GQUlMVVJFOgotICAgICAgdHh0ID0gIlNFQ19FX0VOQ1JZUFRfRkFJTFVSRSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX0lMTEVHQUxfTUVTU0FHRToKLSAgICAgIHR4dCA9ICJTRUNfRV9JTExFR0FMX01FU1NBR0UiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9JTkNPTVBMRVRFX0NSRURFTlRJQUxTOgotICAgICAgdHh0ID0gIlNFQ19FX0lOQ09NUExFVEVfQ1JFREVOVElBTFMiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9JTkNPTVBMRVRFX01FU1NBR0U6Ci0gICAgICB0eHQgPSAiU0VDX0VfSU5DT01QTEVURV9NRVNTQUdFIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfSU5TVUZGSUNJRU5UX01FTU9SWToKLSAgICAgIHR4dCA9ICJTRUNfRV9JTlNVRkZJQ0lFTlRfTUVNT1JZIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfSU5URVJOQUxfRVJST1I6Ci0gICAgICB0eHQgPSAiU0VDX0VfSU5URVJOQUxfRVJST1IiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9JTlZBTElEX0hBTkRMRToKLSAgICAgIHR4dCA9ICJTRUNfRV9JTlZBTElEX0hBTkRMRSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX0lOVkFMSURfUEFSQU1FVEVSOgotICAgICAgdHh0ID0gIlNFQ19FX0lOVkFMSURfUEFSQU1FVEVSIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfSU5WQUxJRF9UT0tFTjoKLSAgICAgIHR4dCA9ICJTRUNfRV9JTlZBTElEX1RPS0VOIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfSVNTVUlOR19DQV9VTlRSVVNURUQ6Ci0gICAgICB0eHQgPSAiU0VDX0VfSVNTVUlOR19DQV9VTlRSVVNURUQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9JU1NVSU5HX0NBX1VOVFJVU1RFRF9LREM6Ci0gICAgICB0eHQgPSAiU0VDX0VfSVNTVUlOR19DQV9VTlRSVVNURURfS0RDIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfS0RDX0NFUlRfRVhQSVJFRDoKLSAgICAgIHR4dCA9ICJTRUNfRV9LRENfQ0VSVF9FWFBJUkVEIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfS0RDX0NFUlRfUkVWT0tFRDoKLSAgICAgIHR4dCA9ICJTRUNfRV9LRENfQ0VSVF9SRVZPS0VEIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfS0RDX0lOVkFMSURfUkVRVUVTVDoKLSAgICAgIHR4dCA9ICJTRUNfRV9LRENfSU5WQUxJRF9SRVFVRVNUIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfS0RDX1VOQUJMRV9UT19SRUZFUjoKLSAgICAgIHR4dCA9ICJTRUNfRV9LRENfVU5BQkxFX1RPX1JFRkVSIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfS0RDX1VOS05PV05fRVRZUEU6Ci0gICAgICB0eHQgPSAiU0VDX0VfS0RDX1VOS05PV05fRVRZUEUiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9MT0dPTl9ERU5JRUQ6Ci0gICAgICB0eHQgPSAiU0VDX0VfTE9HT05fREVOSUVEIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfTUFYX1JFRkVSUkFMU19FWENFRURFRDoKLSAgICAgIHR4dCA9ICJTRUNfRV9NQVhfUkVGRVJSQUxTX0VYQ0VFREVEIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfTUVTU0FHRV9BTFRFUkVEOgotICAgICAgdHh0ID0gIlNFQ19FX01FU1NBR0VfQUxURVJFRCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX01VTFRJUExFX0FDQ09VTlRTOgotICAgICAgdHh0ID0gIlNFQ19FX01VTFRJUExFX0FDQ09VTlRTIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfTVVTVF9CRV9LREM6Ci0gICAgICB0eHQgPSAiU0VDX0VfTVVTVF9CRV9LREMiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9OT1RfT1dORVI6Ci0gICAgICB0eHQgPSAiU0VDX0VfTk9UX09XTkVSIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfTk9fQVVUSEVOVElDQVRJTkdfQVVUSE9SSVRZOgotICAgICAgdHh0ID0gIlNFQ19FX05PX0FVVEhFTlRJQ0FUSU5HX0FVVEhPUklUWSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX05PX0NSRURFTlRJQUxTOgotICAgICAgdHh0ID0gIlNFQ19FX05PX0NSRURFTlRJQUxTIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfTk9fSU1QRVJTT05BVElPTjoKLSAgICAgIHR4dCA9ICJTRUNfRV9OT19JTVBFUlNPTkFUSU9OIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfTk9fSVBfQUREUkVTU0VTOgotICAgICAgdHh0ID0gIlNFQ19FX05PX0lQX0FERFJFU1NFUyI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX05PX0tFUkJfS0VZOgotICAgICAgdHh0ID0gIlNFQ19FX05PX0tFUkJfS0VZIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfTk9fUEFfREFUQToKLSAgICAgIHR4dCA9ICJTRUNfRV9OT19QQV9EQVRBIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfTk9fUzRVX1BST1RfU1VQUE9SVDoKLSAgICAgIHR4dCA9ICJTRUNfRV9OT19TNFVfUFJPVF9TVVBQT1JUIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfTk9fVEdUX1JFUExZOgotICAgICAgdHh0ID0gIlNFQ19FX05PX1RHVF9SRVBMWSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX09VVF9PRl9TRVFVRU5DRToKLSAgICAgIHR4dCA9ICJTRUNfRV9PVVRfT0ZfU0VRVUVOQ0UiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9QS0lOSVRfQ0xJRU5UX0ZBSUxVUkU6Ci0gICAgICB0eHQgPSAiU0VDX0VfUEtJTklUX0NMSUVOVF9GQUlMVVJFIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfUEtJTklUX05BTUVfTUlTTUFUQ0g6Ci0gICAgICB0eHQgPSAiU0VDX0VfUEtJTklUX05BTUVfTUlTTUFUQ0giOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9QT0xJQ1lfTkxUTV9PTkxZOgotICAgICAgdHh0ID0gIlNFQ19FX1BPTElDWV9OTFRNX09OTFkiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9RT1BfTk9UX1NVUFBPUlRFRDoKLSAgICAgIHR4dCA9ICJTRUNfRV9RT1BfTk9UX1NVUFBPUlRFRCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX1JFVk9DQVRJT05fT0ZGTElORV9DOgotICAgICAgdHh0ID0gIlNFQ19FX1JFVk9DQVRJT05fT0ZGTElORV9DIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfUkVWT0NBVElPTl9PRkZMSU5FX0tEQzoKLSAgICAgIHR4dCA9ICJTRUNfRV9SRVZPQ0FUSU9OX09GRkxJTkVfS0RDIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfU0VDUEtHX05PVF9GT1VORDoKLSAgICAgIHR4dCA9ICJTRUNfRV9TRUNQS0dfTk9UX0ZPVU5EIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfU0VDVVJJVFlfUU9TX0ZBSUxFRDoKLSAgICAgIHR4dCA9ICJTRUNfRV9TRUNVUklUWV9RT1NfRkFJTEVEIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfU0hVVERPV05fSU5fUFJPR1JFU1M6Ci0gICAgICB0eHQgPSAiU0VDX0VfU0hVVERPV05fSU5fUFJPR1JFU1MiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9TTUFSVENBUkRfQ0VSVF9FWFBJUkVEOgotICAgICAgdHh0ID0gIlNFQ19FX1NNQVJUQ0FSRF9DRVJUX0VYUElSRUQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9TTUFSVENBUkRfQ0VSVF9SRVZPS0VEOgotICAgICAgdHh0ID0gIlNFQ19FX1NNQVJUQ0FSRF9DRVJUX1JFVk9LRUQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9TTUFSVENBUkRfTE9HT05fUkVRVUlSRUQ6Ci0gICAgICB0eHQgPSAiU0VDX0VfU01BUlRDQVJEX0xPR09OX1JFUVVJUkVEIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfU1RST05HX0NSWVBUT19OT1RfU1VQUE9SVEVEOgotICAgICAgdHh0ID0gIlNFQ19FX1NUUk9OR19DUllQVE9fTk9UX1NVUFBPUlRFRCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX1RBUkdFVF9VTktOT1dOOgotICAgICAgdHh0ID0gIlNFQ19FX1RBUkdFVF9VTktOT1dOIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfVElNRV9TS0VXOgotICAgICAgdHh0ID0gIlNFQ19FX1RJTUVfU0tFVyI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX1RPT19NQU5ZX1BSSU5DSVBBTFM6Ci0gICAgICB0eHQgPSAiU0VDX0VfVE9PX01BTllfUFJJTkNJUEFMUyI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX1VORklOSVNIRURfQ09OVEVYVF9ERUxFVEVEOgotICAgICAgdHh0ID0gIlNFQ19FX1VORklOSVNIRURfQ09OVEVYVF9ERUxFVEVEIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfVU5LTk9XTl9DUkVERU5USUFMUzoKLSAgICAgIHR4dCA9ICJTRUNfRV9VTktOT1dOX0NSRURFTlRJQUxTIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfVU5TVVBQT1JURURfRlVOQ1RJT046Ci0gICAgICB0eHQgPSAiU0VDX0VfVU5TVVBQT1JURURfRlVOQ1RJT04iOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9VTlNVUFBPUlRFRF9QUkVBVVRIOgotICAgICAgdHh0ID0gIlNFQ19FX1VOU1VQUE9SVEVEX1BSRUFVVEgiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfRV9VTlRSVVNURURfUk9PVDoKLSAgICAgIHR4dCA9ICJTRUNfRV9VTlRSVVNURURfUk9PVCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19FX1dST05HX0NSRURFTlRJQUxfSEFORExFOgotICAgICAgdHh0ID0gIlNFQ19FX1dST05HX0NSRURFTlRJQUxfSEFORExFIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0VfV1JPTkdfUFJJTkNJUEFMOgotICAgICAgdHh0ID0gIlNFQ19FX1dST05HX1BSSU5DSVBBTCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19JX0NPTVBMRVRFX0FORF9DT05USU5VRToKLSAgICAgIHR4dCA9ICJTRUNfSV9DT01QTEVURV9BTkRfQ09OVElOVUUiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfSV9DT01QTEVURV9ORUVERUQ6Ci0gICAgICB0eHQgPSAiU0VDX0lfQ09NUExFVEVfTkVFREVEIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0lfQ09OVEVYVF9FWFBJUkVEOgotICAgICAgdHh0ID0gIlNFQ19JX0NPTlRFWFRfRVhQSVJFRCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19JX0NPTlRJTlVFX05FRURFRDoKLSAgICAgIHR4dCA9ICJTRUNfSV9DT05USU5VRV9ORUVERUQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfSV9JTkNPTVBMRVRFX0NSRURFTlRJQUxTOgotICAgICAgdHh0ID0gIlNFQ19JX0lOQ09NUExFVEVfQ1JFREVOVElBTFMiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfSV9MT0NBTF9MT0dPTjoKLSAgICAgIHR4dCA9ICJTRUNfSV9MT0NBTF9MT0dPTiI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFNFQ19JX05PX0xTQV9DT05URVhUOgotICAgICAgdHh0ID0gIlNFQ19JX05PX0xTQV9DT05URVhUIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0VDX0lfUkVORUdPVElBVEU6Ci0gICAgICB0eHQgPSAiU0VDX0lfUkVORUdPVElBVEUiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTRUNfSV9TSUdOQVRVUkVfTkVFREVEOgotICAgICAgdHh0ID0gIlNFQ19JX1NJR05BVFVSRV9ORUVERUQiOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHR4dCA9ICJVbmtub3duIGVycm9yIjsKKyAgaWYoIWdldF93aW5hcGlfZXJyb3IoZXJyLCBidWYsIGJ1ZmxlbikpIHsKKyAgICBtc25wcmludGYoYnVmLCBidWZsZW4sICJVbmtub3duIGVycm9yICV1ICgweCUwOFgpIiwgZXJyLCBlcnIpOwogICB9Ci0KLSAgaWYoZXJyID09IFNFQ19FX09LKQotICAgIHN0cm5jcHkob3V0YnVmLCB0eHQsIG91dG1heCk7Ci0gIGVsc2UgaWYoZXJyID09IFNFQ19FX0lMTEVHQUxfTUVTU0FHRSkKLSAgICBtc25wcmludGYob3V0YnVmLCBvdXRtYXgsCi0gICAgICAgICAgICAgICJTRUNfRV9JTExFR0FMX01FU1NBR0UgKDB4JTA4WCkgLSBUaGlzIGVycm9yIHVzdWFsbHkgb2NjdXJzICIKLSAgICAgICAgICAgICAgIndoZW4gYSBmYXRhbCBTU0wvVExTIGFsZXJ0IGlzIHJlY2VpdmVkIChlLmcuIGhhbmRzaGFrZSBmYWlsZWQpLiIKLSAgICAgICAgICAgICAgIiBNb3JlIGRldGFpbCBtYXkgYmUgYXZhaWxhYmxlIGluIHRoZSBXaW5kb3dzIFN5c3RlbSBldmVudCBsb2cuIiwKLSAgICAgICAgICAgICAgZXJyKTsKLSAgZWxzZSB7Ci0gICAgc3RyID0gdHh0YnVmOwotICAgIG1zbnByaW50Zih0eHRidWYsIHNpemVvZih0eHRidWYpLCAiJXMgKDB4JTA4WCkiLCB0eHQsIGVycik7Ci0gICAgdHh0YnVmW3NpemVvZih0eHRidWYpLTFdID0gJ1wwJzsKLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSAgICB7Ci0gICAgICB3Y2hhcl90IHdidWZbMjU2XTsKLSAgICAgIHdidWZbMF0gPSBMJ1wwJzsKLQotICAgICAgaWYoRm9ybWF0TWVzc2FnZShGT1JNQVRfTUVTU0FHRV9GUk9NX1NZU1RFTSB8Ci0gICAgICAgICAgICAgICAgICAgICAgIEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTLAotICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBlcnIsIExBTkdfTkVVVFJBTCwKLSAgICAgICAgICAgICAgICAgICAgICAgd2J1Ziwgc2l6ZW9mKHdidWYpL3NpemVvZih3Y2hhcl90KSwgTlVMTCkpIHsKLSAgICAgICAgd2NzdG9tYnMobXNnYnVmLCB3YnVmLCBzaXplb2YobXNnYnVmKS0xKTsKLSAgICAgICAgbXNnX2Zvcm1hdHRlZCA9IFRSVUU7Ci0gICAgICB9Ci0gICAgfQogI2Vsc2UKLSAgICBpZihGb3JtYXRNZXNzYWdlQShGT1JNQVRfTUVTU0FHRV9GUk9NX1NZU1RFTSB8Ci0gICAgICAgICAgICAgICAgICAgICAgRk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VSVFMsCi0gICAgICAgICAgICAgICAgICAgICAgTlVMTCwgZXJyLCBMQU5HX05FVVRSQUwsCi0gICAgICAgICAgICAgICAgICAgICAgbXNnYnVmLCBzaXplb2YobXNnYnVmKS0xLCBOVUxMKSkgewotICAgICAgbXNnX2Zvcm1hdHRlZCA9IFRSVUU7Ci0gICAgfQotI2VuZGlmCi0gICAgaWYobXNnX2Zvcm1hdHRlZCkgewotICAgICAgbXNnYnVmW3NpemVvZihtc2didWYpLTFdID0gJ1wwJzsKLSAgICAgIC8qIHN0cmlwIHRyYWlsaW5nICdcclxuJyBvciAnXG4nICovCi0gICAgICBwID0gc3RycmNocihtc2didWYsICdcbicpOwotICAgICAgaWYocCAmJiAocCAtIG1zZ2J1ZikgPj0gMikKLSAgICAgICAgKnAgPSAnXDAnOwotICAgICAgcCA9IHN0cnJjaHIobXNnYnVmLCAnXHInKTsKLSAgICAgIGlmKHAgJiYgKHAgLSBtc2didWYpID49IDEpCi0gICAgICAgICpwID0gJ1wwJzsKLSAgICAgIG1zZyA9IG1zZ2J1ZjsKLSAgICB9Ci0gICAgaWYobXNnKQotICAgICAgbXNucHJpbnRmKG91dGJ1Ziwgb3V0bWF4LCAiJXMgLSAlcyIsIHN0ciwgbXNnKTsKLSAgICBlbHNlCi0gICAgICBzdHJuY3B5KG91dGJ1Ziwgc3RyLCBvdXRtYXgpOworICB7CisgICAgY29uc3QgY2hhciAqdHh0ID0gKGVyciA9PSBFUlJPUl9TVUNDRVNTKSA/ICJObyBlcnJvciIgOiAiRXJyb3IiOworICAgIHN0cm5jcHkoYnVmLCB0eHQsIGJ1Zmxlbik7CisgICAgYnVmW2J1ZmxlbiAtIDFdID0gJ1wwJzsKICAgfQotCi0jZWxzZQotCi0gIGlmKGVyciA9PSBTRUNfRV9PSykKLSAgICB0eHQgPSAiTm8gZXJyb3IiOwotICBlbHNlCi0gICAgdHh0ID0gIkVycm9yIjsKLQotICBzdHJuY3B5KG91dGJ1ZiwgdHh0LCBvdXRtYXgpOwotCiAjZW5kaWYKIAotICBvdXRidWZbb3V0bWF4XSA9ICdcMCc7Ci0KICAgaWYoZXJybm8gIT0gb2xkX2Vycm5vKQogICAgIGVycm5vID0gb2xkX2Vycm5vOwogCkBAIC0xMDk3LDYgKzg1MywxNTcgQEAKICAgICBTZXRMYXN0RXJyb3Iob2xkX3dpbl9lcnIpOwogI2VuZGlmCiAKLSAgcmV0dXJuIG91dGJ1ZjsKKyAgcmV0dXJuIGJ1ZjsKK30KKyNlbmRpZiAvKiBXSU4zMiB8fCBfV0lOMzJfV0NFICovCisKKyNpZmRlZiBVU0VfV0lORE9XU19TU1BJCisvKgorICogQ3VybF9zc3BpX3N0cmVycm9yOgorICogVmFyaWFudCBvZiBDdXJsX3N0cmVycm9yIGlmIHRoZSBlcnJvciBjb2RlIGlzIGRlZmluaXRlbHkgV2luZG93cyBTU1BJLgorICovCitjb25zdCBjaGFyICpDdXJsX3NzcGlfc3RyZXJyb3IoaW50IGVyciwgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuKQoreworI2lmZGVmIFBSRVNFUlZFX1dJTkRPV1NfRVJST1JfQ09ERQorICBEV09SRCBvbGRfd2luX2VyciA9IEdldExhc3RFcnJvcigpOworI2VuZGlmCisgIGludCBvbGRfZXJybm8gPSBlcnJubzsKKyAgY29uc3QgY2hhciAqdHh0OworCisgIGlmKCFidWZsZW4pCisgICAgcmV0dXJuIE5VTEw7CisKKyAgKmJ1ZiA9ICdcMCc7CisKKyNpZm5kZWYgQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUworCisgIHN3aXRjaChlcnIpIHsKKyAgICBjYXNlIFNFQ19FX09LOgorICAgICAgdHh0ID0gIk5vIGVycm9yIjsKKyAgICAgIGJyZWFrOworI2RlZmluZSBTRUMyVFhUKHNlYykgY2FzZSBzZWM6IHR4dCA9ICNzZWM7IGJyZWFrCisgICAgU0VDMlRYVChDUllQVF9FX1JFVk9LRUQpOworICAgIFNFQzJUWFQoU0VDX0VfQUxHT1JJVEhNX01JU01BVENIKTsKKyAgICBTRUMyVFhUKFNFQ19FX0JBRF9CSU5ESU5HUyk7CisgICAgU0VDMlRYVChTRUNfRV9CQURfUEtHSUQpOworICAgIFNFQzJUWFQoU0VDX0VfQlVGRkVSX1RPT19TTUFMTCk7CisgICAgU0VDMlRYVChTRUNfRV9DQU5OT1RfSU5TVEFMTCk7CisgICAgU0VDMlRYVChTRUNfRV9DQU5OT1RfUEFDSyk7CisgICAgU0VDMlRYVChTRUNfRV9DRVJUX0VYUElSRUQpOworICAgIFNFQzJUWFQoU0VDX0VfQ0VSVF9VTktOT1dOKTsKKyAgICBTRUMyVFhUKFNFQ19FX0NFUlRfV1JPTkdfVVNBR0UpOworICAgIFNFQzJUWFQoU0VDX0VfQ09OVEVYVF9FWFBJUkVEKTsKKyAgICBTRUMyVFhUKFNFQ19FX0NST1NTUkVBTE1fREVMRUdBVElPTl9GQUlMVVJFKTsKKyAgICBTRUMyVFhUKFNFQ19FX0NSWVBUT19TWVNURU1fSU5WQUxJRCk7CisgICAgU0VDMlRYVChTRUNfRV9ERUNSWVBUX0ZBSUxVUkUpOworICAgIFNFQzJUWFQoU0VDX0VfREVMRUdBVElPTl9QT0xJQ1kpOworICAgIFNFQzJUWFQoU0VDX0VfREVMRUdBVElPTl9SRVFVSVJFRCk7CisgICAgU0VDMlRYVChTRUNfRV9ET1dOR1JBREVfREVURUNURUQpOworICAgIFNFQzJUWFQoU0VDX0VfRU5DUllQVF9GQUlMVVJFKTsKKyAgICBTRUMyVFhUKFNFQ19FX0lMTEVHQUxfTUVTU0FHRSk7CisgICAgU0VDMlRYVChTRUNfRV9JTkNPTVBMRVRFX0NSRURFTlRJQUxTKTsKKyAgICBTRUMyVFhUKFNFQ19FX0lOQ09NUExFVEVfTUVTU0FHRSk7CisgICAgU0VDMlRYVChTRUNfRV9JTlNVRkZJQ0lFTlRfTUVNT1JZKTsKKyAgICBTRUMyVFhUKFNFQ19FX0lOVEVSTkFMX0VSUk9SKTsKKyAgICBTRUMyVFhUKFNFQ19FX0lOVkFMSURfSEFORExFKTsKKyAgICBTRUMyVFhUKFNFQ19FX0lOVkFMSURfUEFSQU1FVEVSKTsKKyAgICBTRUMyVFhUKFNFQ19FX0lOVkFMSURfVE9LRU4pOworICAgIFNFQzJUWFQoU0VDX0VfSVNTVUlOR19DQV9VTlRSVVNURUQpOworICAgIFNFQzJUWFQoU0VDX0VfSVNTVUlOR19DQV9VTlRSVVNURURfS0RDKTsKKyAgICBTRUMyVFhUKFNFQ19FX0tEQ19DRVJUX0VYUElSRUQpOworICAgIFNFQzJUWFQoU0VDX0VfS0RDX0NFUlRfUkVWT0tFRCk7CisgICAgU0VDMlRYVChTRUNfRV9LRENfSU5WQUxJRF9SRVFVRVNUKTsKKyAgICBTRUMyVFhUKFNFQ19FX0tEQ19VTkFCTEVfVE9fUkVGRVIpOworICAgIFNFQzJUWFQoU0VDX0VfS0RDX1VOS05PV05fRVRZUEUpOworICAgIFNFQzJUWFQoU0VDX0VfTE9HT05fREVOSUVEKTsKKyAgICBTRUMyVFhUKFNFQ19FX01BWF9SRUZFUlJBTFNfRVhDRUVERUQpOworICAgIFNFQzJUWFQoU0VDX0VfTUVTU0FHRV9BTFRFUkVEKTsKKyAgICBTRUMyVFhUKFNFQ19FX01VTFRJUExFX0FDQ09VTlRTKTsKKyAgICBTRUMyVFhUKFNFQ19FX01VU1RfQkVfS0RDKTsKKyAgICBTRUMyVFhUKFNFQ19FX05PVF9PV05FUik7CisgICAgU0VDMlRYVChTRUNfRV9OT19BVVRIRU5USUNBVElOR19BVVRIT1JJVFkpOworICAgIFNFQzJUWFQoU0VDX0VfTk9fQ1JFREVOVElBTFMpOworICAgIFNFQzJUWFQoU0VDX0VfTk9fSU1QRVJTT05BVElPTik7CisgICAgU0VDMlRYVChTRUNfRV9OT19JUF9BRERSRVNTRVMpOworICAgIFNFQzJUWFQoU0VDX0VfTk9fS0VSQl9LRVkpOworICAgIFNFQzJUWFQoU0VDX0VfTk9fUEFfREFUQSk7CisgICAgU0VDMlRYVChTRUNfRV9OT19TNFVfUFJPVF9TVVBQT1JUKTsKKyAgICBTRUMyVFhUKFNFQ19FX05PX1RHVF9SRVBMWSk7CisgICAgU0VDMlRYVChTRUNfRV9PVVRfT0ZfU0VRVUVOQ0UpOworICAgIFNFQzJUWFQoU0VDX0VfUEtJTklUX0NMSUVOVF9GQUlMVVJFKTsKKyAgICBTRUMyVFhUKFNFQ19FX1BLSU5JVF9OQU1FX01JU01BVENIKTsKKyAgICBTRUMyVFhUKFNFQ19FX1BPTElDWV9OTFRNX09OTFkpOworICAgIFNFQzJUWFQoU0VDX0VfUU9QX05PVF9TVVBQT1JURUQpOworICAgIFNFQzJUWFQoU0VDX0VfUkVWT0NBVElPTl9PRkZMSU5FX0MpOworICAgIFNFQzJUWFQoU0VDX0VfUkVWT0NBVElPTl9PRkZMSU5FX0tEQyk7CisgICAgU0VDMlRYVChTRUNfRV9TRUNQS0dfTk9UX0ZPVU5EKTsKKyAgICBTRUMyVFhUKFNFQ19FX1NFQ1VSSVRZX1FPU19GQUlMRUQpOworICAgIFNFQzJUWFQoU0VDX0VfU0hVVERPV05fSU5fUFJPR1JFU1MpOworICAgIFNFQzJUWFQoU0VDX0VfU01BUlRDQVJEX0NFUlRfRVhQSVJFRCk7CisgICAgU0VDMlRYVChTRUNfRV9TTUFSVENBUkRfQ0VSVF9SRVZPS0VEKTsKKyAgICBTRUMyVFhUKFNFQ19FX1NNQVJUQ0FSRF9MT0dPTl9SRVFVSVJFRCk7CisgICAgU0VDMlRYVChTRUNfRV9TVFJPTkdfQ1JZUFRPX05PVF9TVVBQT1JURUQpOworICAgIFNFQzJUWFQoU0VDX0VfVEFSR0VUX1VOS05PV04pOworICAgIFNFQzJUWFQoU0VDX0VfVElNRV9TS0VXKTsKKyAgICBTRUMyVFhUKFNFQ19FX1RPT19NQU5ZX1BSSU5DSVBBTFMpOworICAgIFNFQzJUWFQoU0VDX0VfVU5GSU5JU0hFRF9DT05URVhUX0RFTEVURUQpOworICAgIFNFQzJUWFQoU0VDX0VfVU5LTk9XTl9DUkVERU5USUFMUyk7CisgICAgU0VDMlRYVChTRUNfRV9VTlNVUFBPUlRFRF9GVU5DVElPTik7CisgICAgU0VDMlRYVChTRUNfRV9VTlNVUFBPUlRFRF9QUkVBVVRIKTsKKyAgICBTRUMyVFhUKFNFQ19FX1VOVFJVU1RFRF9ST09UKTsKKyAgICBTRUMyVFhUKFNFQ19FX1dST05HX0NSRURFTlRJQUxfSEFORExFKTsKKyAgICBTRUMyVFhUKFNFQ19FX1dST05HX1BSSU5DSVBBTCk7CisgICAgU0VDMlRYVChTRUNfSV9DT01QTEVURV9BTkRfQ09OVElOVUUpOworICAgIFNFQzJUWFQoU0VDX0lfQ09NUExFVEVfTkVFREVEKTsKKyAgICBTRUMyVFhUKFNFQ19JX0NPTlRFWFRfRVhQSVJFRCk7CisgICAgU0VDMlRYVChTRUNfSV9DT05USU5VRV9ORUVERUQpOworICAgIFNFQzJUWFQoU0VDX0lfSU5DT01QTEVURV9DUkVERU5USUFMUyk7CisgICAgU0VDMlRYVChTRUNfSV9MT0NBTF9MT0dPTik7CisgICAgU0VDMlRYVChTRUNfSV9OT19MU0FfQ09OVEVYVCk7CisgICAgU0VDMlRYVChTRUNfSV9SRU5FR09USUFURSk7CisgICAgU0VDMlRYVChTRUNfSV9TSUdOQVRVUkVfTkVFREVEKTsKKyAgICBkZWZhdWx0OgorICAgICAgdHh0ID0gIlVua25vd24gZXJyb3IiOworICB9CisKKyAgaWYoZXJyID09IFNFQ19FX0lMTEVHQUxfTUVTU0FHRSkgeworICAgIG1zbnByaW50ZihidWYsIGJ1ZmxlbiwKKyAgICAgICAgICAgICAgIlNFQ19FX0lMTEVHQUxfTUVTU0FHRSAoMHglMDhYKSAtIFRoaXMgZXJyb3IgdXN1YWxseSBvY2N1cnMgIgorICAgICAgICAgICAgICAid2hlbiBhIGZhdGFsIFNTTC9UTFMgYWxlcnQgaXMgcmVjZWl2ZWQgKGUuZy4gaGFuZHNoYWtlIGZhaWxlZCkuIgorICAgICAgICAgICAgICAiIE1vcmUgZGV0YWlsIG1heSBiZSBhdmFpbGFibGUgaW4gdGhlIFdpbmRvd3MgU3lzdGVtIGV2ZW50IGxvZy4iLAorICAgICAgICAgICAgICBlcnIpOworICB9CisgIGVsc2UgeworICAgIGNoYXIgdHh0YnVmWzgwXTsKKyAgICBjaGFyIG1zZ2J1ZlsyNTZdOworCisgICAgbXNucHJpbnRmKHR4dGJ1Ziwgc2l6ZW9mKHR4dGJ1ZiksICIlcyAoMHglMDhYKSIsIHR4dCwgZXJyKTsKKworICAgIGlmKGdldF93aW5hcGlfZXJyb3IoZXJyLCBtc2didWYsIHNpemVvZihtc2didWYpKSkKKyAgICAgIG1zbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVzIC0gJXMiLCB0eHRidWYsIG1zZ2J1Zik7CisgICAgZWxzZSB7CisgICAgICBzdHJuY3B5KGJ1ZiwgdHh0YnVmLCBidWZsZW4pOworICAgICAgYnVmW2J1ZmxlbiAtIDFdID0gJ1wwJzsKKyAgICB9CisgIH0KKworI2Vsc2UKKyAgaWYoZXJyID09IFNFQ19FX09LKQorICAgIHR4dCA9ICJObyBlcnJvciI7CisgIGVsc2UKKyAgICB0eHQgPSAiRXJyb3IiOworICBzdHJuY3B5KGJ1ZiwgdHh0LCBidWZsZW4pOworICBidWZbYnVmbGVuIC0gMV0gPSAnXDAnOworI2VuZGlmCisKKyAgaWYoZXJybm8gIT0gb2xkX2Vycm5vKQorICAgIGVycm5vID0gb2xkX2Vycm5vOworCisjaWZkZWYgUFJFU0VSVkVfV0lORE9XU19FUlJPUl9DT0RFCisgIGlmKG9sZF93aW5fZXJyICE9IEdldExhc3RFcnJvcigpKQorICAgIFNldExhc3RFcnJvcihvbGRfd2luX2Vycik7CisjZW5kaWYKKworICByZXR1cm4gYnVmOwogfQogI2VuZGlmIC8qIFVTRV9XSU5ET1dTX1NTUEkgKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cmVycm9yLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi9zdHJlcnJvci5oCmluZGV4IDY4M2I1YjQuLmJhZThmODkgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cmVycm9yLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvc3RyZXJyb3IuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMjQsOSArMjQsMTIgQEAKIAogI2luY2x1ZGUgInVybGRhdGEuaCIKIAotI2RlZmluZSBTVFJFUlJPUl9MRU4gMTI4IC8qIGEgc3VpdGFibGUgbGVuZ3RoICovCisjZGVmaW5lIFNUUkVSUk9SX0xFTiAyNTYgLyogYSBzdWl0YWJsZSBsZW5ndGggKi8KIAogY29uc3QgY2hhciAqQ3VybF9zdHJlcnJvcihpbnQgZXJyLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4pOworI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKK2NvbnN0IGNoYXIgKkN1cmxfd2luYXBpX3N0cmVycm9yKERXT1JEIGVyciwgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuKTsKKyNlbmRpZgogI2lmZGVmIFVTRV9XSU5ET1dTX1NTUEkKIGNvbnN0IGNoYXIgKkN1cmxfc3NwaV9zdHJlcnJvcihpbnQgZXJyLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4pOwogI2VuZGlmCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zdHJ0b2suYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cnRvay5jCmluZGV4IDQ2MGViODcuLmJlOGY0ODEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cnRvay5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cnRvay5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMDcsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zdHJ0b2suaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cnRvay5oCmluZGV4IDkwYjgzMWUuLmUyMjFmYTYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cnRvay5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cnRvay5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zdHJ0b29mZnQuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cnRvb2ZmdC5jCmluZGV4IDU0NmEzZmYuLjk2ZTM4MjAgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cnRvb2ZmdC5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3N0cnRvb2ZmdC5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTcsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zeXN0ZW1fd2luMzIuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3N5c3RlbV93aW4zMi5jCmluZGV4IGY3ZjgxN2QuLmI5NTg3YjUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N5c3RlbV93aW4zMi5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3N5c3RlbV93aW4zMi5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxNiAtIDIwMTcsIFN0ZXZlIEhvbG1lLCA8c3RldmVfaG9sbWVAaG90bWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDE2IC0gMjAyMCwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTM2LDYgKzM2LDEyIEBACiBMQVJHRV9JTlRFR0VSIEN1cmxfZnJlcTsKIGJvb2wgQ3VybF9pc1Zpc3RhT3JHcmVhdGVyOwogCisvKiBIYW5kbGUgb2YgaXBobHBhcHAuZGxsICovCitzdGF0aWMgSE1PRFVMRSBzX2hJcEhscEFwaURsbCA9IE5VTEw7CisKKy8qIFBvaW50ZXIgdG8gdGhlIGlmX25hbWV0b2luZGV4IGZ1bmN0aW9uICovCitJRl9OQU1FVE9JTkRFWF9GTiBDdXJsX2lmX25hbWV0b2luZGV4ID0gTlVMTDsKKwogLyogQ3VybF93aW4zMl9pbml0KCkgcGVyZm9ybXMgd2luMzIgZ2xvYmFsIGluaXRpYWxpemF0aW9uICovCiBDVVJMY29kZSBDdXJsX3dpbjMyX2luaXQobG9uZyBmbGFncykKIHsKQEAgLTg5LDIwICs5NSwzNyBAQAogICB9CiAjZW5kaWYKIAorICBzX2hJcEhscEFwaURsbCA9IEN1cmxfbG9hZF9saWJyYXJ5KFRFWFQoImlwaGxwYXBpLmRsbCIpKTsKKyAgaWYoc19oSXBIbHBBcGlEbGwpIHsKKyAgICAvKiBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGlmX25hbWV0b2luZGV4IGZ1bmN0aW9uICovCisgICAgSUZfTkFNRVRPSU5ERVhfRk4gcElmTmFtZVRvSW5kZXggPQorICAgICAgQ1VSTFhfRlVOQ1RJT05fQ0FTVChJRl9OQU1FVE9JTkRFWF9GTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKEdldFByb2NBZGRyZXNzKHNfaElwSGxwQXBpRGxsLCAiaWZfbmFtZXRvaW5kZXgiKSkpOworCisgICAgaWYocElmTmFtZVRvSW5kZXgpCisgICAgICBDdXJsX2lmX25hbWV0b2luZGV4ID0gcElmTmFtZVRvSW5kZXg7CisgIH0KKwogICBpZihDdXJsX3ZlcmlmeV93aW5kb3dzX3ZlcnNpb24oNiwgMCwgUExBVEZPUk1fV0lOTlQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWRVJTSU9OX0dSRUFURVJfVEhBTl9FUVVBTCkpIHsKICAgICBDdXJsX2lzVmlzdGFPckdyZWF0ZXIgPSBUUlVFOwotICAgIFF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koJkN1cmxfZnJlcSk7CiAgIH0KICAgZWxzZQogICAgIEN1cmxfaXNWaXN0YU9yR3JlYXRlciA9IEZBTFNFOwogCisgIFF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koJkN1cmxfZnJlcSk7CiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIAogLyogQ3VybF93aW4zMl9jbGVhbnVwKCkgaXMgdGhlIG9wcG9zaXRlIG9mIEN1cmxfd2luMzJfaW5pdCgpICovCiB2b2lkIEN1cmxfd2luMzJfY2xlYW51cChsb25nIGluaXRfZmxhZ3MpCiB7CisgIGlmKHNfaElwSGxwQXBpRGxsKSB7CisgICAgRnJlZUxpYnJhcnkoc19oSXBIbHBBcGlEbGwpOworICAgIHNfaElwSGxwQXBpRGxsID0gTlVMTDsKKyAgICBDdXJsX2lmX25hbWV0b2luZGV4ID0gTlVMTDsKKyAgfQorCiAjaWZkZWYgVVNFX1dJTkRPV1NfU1NQSQogICBDdXJsX3NzcGlfZ2xvYmFsX2NsZWFudXAoKTsKICNlbmRpZgpAQCAtMTE0LDEwICsxMzcsNiBAQAogICB9CiB9CiAKLSNpZiBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpIHx8ICghZGVmaW5lZChDVVJMX0RJU0FCTEVfVEVMTkVUKSAmJiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZChVU0VfV0lOU09DSykpCi0KLQogI2lmICFkZWZpbmVkKExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKQogI2RlZmluZSBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCAgMHgwMDAwMDAwOAogI2VuZGlmCkBAIC0xNDAsOCArMTU5LDYgQEAKICMgIGRlZmluZSBMT0FETElCQVJZRVggICAgIkxvYWRMaWJyYXJ5RXhBIgogI2VuZGlmCiAKLSNlbmRpZiAvKiBVU0VfV0lORE9XU19TU1BJIHx8ICghQ1VSTF9ESVNBQkxFX1RFTE5FVCAmJiBVU0VfV0lOU09DSykgKi8KLQogLyoKICAqIEN1cmxfdmVyaWZ5X3dpbmRvd3NfdmVyc2lvbigpCiAgKgpAQCAtMzM0LDkgKzM1MSw2IEBACiAgIHJldHVybiBtYXRjaGVkOwogfQogCi0jaWYgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKSB8fCAoIWRlZmluZWQoQ1VSTF9ESVNBQkxFX1RFTE5FVCkgJiYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQoVVNFX1dJTlNPQ0spKQotCiAvKgogICogQ3VybF9sb2FkX2xpYnJhcnkoKQogICoKQEAgLTM1Myw2ICszNjcsNyBAQAogICovCiBITU9EVUxFIEN1cmxfbG9hZF9saWJyYXJ5KExQQ1RTVFIgZmlsZW5hbWUpCiB7CisjaWZuZGVmIENVUkxfV0lORE9XU19BUFAKICAgSE1PRFVMRSBoTW9kdWxlID0gTlVMTDsKICAgTE9BRExJQlJBUllFWF9GTiBwTG9hZExpYnJhcnlFeCA9IE5VTEw7CiAKQEAgLTQwNywxMCArNDIyLDEyIEBACiAgICAgICBmcmVlKHBhdGgpOwogICAgIH0KICAgfQotCiAgIHJldHVybiBoTW9kdWxlOworI2Vsc2UKKyAgLyogdGhlIFVuaXZlcnNhbCBXaW5kb3dzIFBsYXRmb3JtIChVV1ApIGNhbid0IGRvIHRoaXMgKi8KKyAgKHZvaWQpZmlsZW5hbWU7CisgIHJldHVybiBOVUxMOworI2VuZGlmCiB9CiAKLSNlbmRpZiAvKiBVU0VfV0lORE9XU19TU1BJIHx8ICghQ1VSTF9ESVNBQkxFX1RFTE5FVCAmJiBVU0VfV0lOU09DSykgKi8KLQogI2VuZGlmIC8qIFdJTjMyICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi9zeXN0ZW1fd2luMzIuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3N5c3RlbV93aW4zMi5oCmluZGV4IDkyNjMyOGEuLmQyODgyZmMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3N5c3RlbV93aW4zMi5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3N5c3RlbV93aW4zMi5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxNiwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgLSAyMDE5LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNDgsMjAgKzQ4LDIxIEBACiAgIFBMQVRGT1JNX1dJTk5UCiB9IFBsYXRmb3JtSWRlbnRpZmllcjsKIAorLyogV2UgdXNlIG91ciBvd24gdHlwZWRlZiBoZXJlIHNpbmNlIHNvbWUgaGVhZGVycyBtaWdodCBsYWNrIHRoaXMgKi8KK3R5cGVkZWYgdW5zaWduZWQgaW50KFdJTkFQSSAqSUZfTkFNRVRPSU5ERVhfRk4pKGNvbnN0IGNoYXIgKik7CisKKy8qIFRoaXMgaXMgdXNlZCBpbnN0ZWFkIG9mIGlmX25hbWV0b2luZGV4IGlmIGF2YWlsYWJsZSBvbiBXaW5kb3dzICovCitleHRlcm4gSUZfTkFNRVRPSU5ERVhfRk4gQ3VybF9pZl9uYW1ldG9pbmRleDsKKwogLyogVGhpcyBpcyB1c2VkIHRvIHZlcmlmeSBpZiB3ZSBhcmUgcnVubmluZyBvbiBhIHNwZWNpZmljIHdpbmRvd3MgdmVyc2lvbiAqLwogYm9vbCBDdXJsX3ZlcmlmeV93aW5kb3dzX3ZlcnNpb24oY29uc3QgdW5zaWduZWQgaW50IG1ham9yVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBtaW5vclZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQbGF0Zm9ybUlkZW50aWZpZXIgcGxhdGZvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJzaW9uQ29uZGl0aW9uIGNvbmRpdGlvbik7CiAKLSNpZiBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpIHx8ICghZGVmaW5lZChDVVJMX0RJU0FCTEVfVEVMTkVUKSAmJiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZChVU0VfV0lOU09DSykpCi0KIC8qIFRoaXMgaXMgdXNlZCB0byBkeW5hbWljYWxseSBsb2FkIERMTHMgKi8KIEhNT0RVTEUgQ3VybF9sb2FkX2xpYnJhcnkoTFBDVFNUUiBmaWxlbmFtZSk7CiAKLSNlbmRpZiAvKiBVU0VfV0lORE9XU19TU1BJIHx8ICghQ1VSTF9ESVNBQkxFX1RFTE5FVCAmJiBVU0VfV0lOU09DSykgKi8KLQogI2VuZGlmIC8qIFdJTjMyICovCiAKICNlbmRpZiAvKiBIRUFERVJfQ1VSTF9TWVNURU1fV0lOMzJfSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdGVsbmV0LmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi90ZWxuZXQuYwppbmRleCA5NTUyNTVjLi40YmY0YzY1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi90ZWxuZXQuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi90ZWxuZXQuYwpAQCAtNjksMTIgKzY5LDEyIEBACiAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB4LT5zdWJlbmQgPSB4LT5zdWJwb2ludGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIENVUkxfU0JfQ0xFQVIoeCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gV0hJTEVfRkFMU0UKKyAgfSB3aGlsZSgwKQogI2RlZmluZSBDVVJMX1NCX0FDQ1VNKHgsYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaWYoeC0+c3VicG9pbnRlciA8ICh4LT5zdWJidWZmZXIgKyBzaXplb2YoeC0+c3ViYnVmZmVyKSkpICAgXAogICAgICAgKngtPnN1YnBvaW50ZXIrKyA9IChjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSBXSElMRV9GQUxTRQorICB9IHdoaWxlKDApCiAKICNkZWZpbmUgIENVUkxfU0JfR0VUKHgpICgoKngtPnN1YnBvaW50ZXIrKykmMHhmZikKICNkZWZpbmUgIENVUkxfU0JfTEVOKHgpICh4LT5zdWJlbmQgLSB4LT5zdWJwb2ludGVyKQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdGVsbmV0LmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi90ZWxuZXQuaAppbmRleCA2NjhhNzhhLi40MzE0MjdmIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi90ZWxuZXQuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi90ZWxuZXQuaApAQCAtNyw3ICs3LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDA3LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdGZ0cC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdGZ0cC5jCmluZGV4IDI4OWNkYTIuLjM0NmYyOTMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3RmdHAuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi90ZnRwLmMKQEAgLTE1Nyw4ICsxNTcsNyBAQAogc3RhdGljIENVUkxjb2RlIHRmdHBfc2V0dXBfY29ubmVjdGlvbihzdHJ1Y3QgY29ubmVjdGRhdGEgKiBjb25uKTsKIHN0YXRpYyBDVVJMY29kZSB0ZnRwX211bHRpX3N0YXRlbWFjaChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpOwogc3RhdGljIENVUkxjb2RlIHRmdHBfZG9pbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb3BoYXNlX2RvbmUpOwotc3RhdGljIGludCB0ZnRwX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2Nrcyk7CitzdGF0aWMgaW50IHRmdHBfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3QgKnNvY2tzKTsKIHN0YXRpYyBDVVJMY29kZSB0ZnRwX3RyYW5zbGF0ZV9jb2RlKHRmdHBfZXJyb3JfdCBlcnJvcik7CiAKIApAQCAtNDA0LDEzICs0MDMsMTQgQEAKICAgcmV0dXJuIENVUkxFX09LOwogfQogCi1zdGF0aWMgc2l6ZV90IHRmdHBfb3B0aW9uX2FkZCh0ZnRwX3N0YXRlX2RhdGFfdCAqc3RhdGUsIHNpemVfdCBjc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqb3B0aW9uKQorc3RhdGljIENVUkxjb2RlIHRmdHBfb3B0aW9uX2FkZCh0ZnRwX3N0YXRlX2RhdGFfdCAqc3RhdGUsIHNpemVfdCAqY3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqb3B0aW9uKQogewotICBpZigoIHN0cmxlbihvcHRpb24pICsgY3NpemUgKyAxKSA+IChzaXplX3Qpc3RhdGUtPmJsa3NpemUpCi0gICAgcmV0dXJuIDA7CisgIGlmKCggc3RybGVuKG9wdGlvbikgKyAqY3NpemUgKyAxKSA+IChzaXplX3Qpc3RhdGUtPmJsa3NpemUpCisgICAgcmV0dXJuIENVUkxFX1RGVFBfSUxMRUdBTDsKICAgc3RyY3B5KGJ1Ziwgb3B0aW9uKTsKLSAgcmV0dXJuIHN0cmxlbihvcHRpb24pICsgMTsKKyAgKmNzaXplICs9IHN0cmxlbihvcHRpb24pICsgMTsKKyAgcmV0dXJuIENVUkxFX09LOwogfQogCiBzdGF0aWMgQ1VSTGNvZGUgdGZ0cF9jb25uZWN0X2Zvcl90eCh0ZnRwX3N0YXRlX2RhdGFfdCAqc3RhdGUsCkBAIC01MTEsMjYgKzUxMSwzOCBAQAogICAgICAgZWxzZQogICAgICAgICBzdHJjcHkoYnVmLCAiMCIpOyAvKiB0aGUgZGVzdGluYXRpb24gaXMgbGFyZ2UgZW5vdWdoICovCiAKLSAgICAgIHNieXRlcyArPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsIHNieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzdGF0ZS0+c3BhY2tldC5kYXRhICsgc2J5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURlRQX09QVElPTl9UU0laRSk7Ci0gICAgICBzYnl0ZXMgKz0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCBzYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YSArIHNieXRlcywgYnVmKTsKKyAgICAgIHJlc3VsdCA9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgJnNieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGEgKyBzYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZUUF9PUFRJT05fVFNJWkUpOworICAgICAgaWYocmVzdWx0ID09IENVUkxFX09LKQorICAgICAgICByZXN1bHQgPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsICZzYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGEgKyBzYnl0ZXMsIGJ1Zik7CisKICAgICAgIC8qIGFkZCBibGtzaXplIG9wdGlvbiAqLwogICAgICAgbXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlZCIsIHN0YXRlLT5yZXF1ZXN0ZWRfYmxrc2l6ZSk7Ci0gICAgICBzYnl0ZXMgKz0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCBzYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YSArIHNieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZUUF9PUFRJT05fQkxLU0laRSk7Ci0gICAgICBzYnl0ZXMgKz0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCBzYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YSArIHNieXRlcywgYnVmKTsKKyAgICAgIGlmKHJlc3VsdCA9PSBDVVJMRV9PSykKKyAgICAgICAgcmVzdWx0ID0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCAmc2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzdGF0ZS0+c3BhY2tldC5kYXRhICsgc2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZUUF9PUFRJT05fQkxLU0laRSk7CisgICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfT0spCisgICAgICAgIHJlc3VsdCA9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgJnNieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YSArIHNieXRlcywgYnVmKTsKIAogICAgICAgLyogYWRkIHRpbWVvdXQgb3B0aW9uICovCiAgICAgICBtc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVkIiwgc3RhdGUtPnJldHJ5X3RpbWUpOwotICAgICAgc2J5dGVzICs9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgc2J5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGEgKyBzYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGVFBfT1BUSU9OX0lOVEVSVkFMKTsKLSAgICAgIHNieXRlcyArPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsIHNieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzdGF0ZS0+c3BhY2tldC5kYXRhICsgc2J5dGVzLCBidWYpOworICAgICAgaWYocmVzdWx0ID09IENVUkxFX09LKQorICAgICAgICByZXN1bHQgPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsICZzYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGEgKyBzYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURlRQX09QVElPTl9JTlRFUlZBTCk7CisgICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfT0spCisgICAgICAgIHJlc3VsdCA9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgJnNieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YSArIHNieXRlcywgYnVmKTsKKworICAgICAgaWYocmVzdWx0ICE9IENVUkxFX09LKSB7CisgICAgICAgIGZhaWxmKGRhdGEsICJURlRQIGJ1ZmZlciB0b28gc21hbGwgZm9yIG9wdGlvbnMiKTsKKyAgICAgICAgZnJlZShmaWxlbmFtZSk7CisgICAgICAgIHJldHVybiBDVVJMRV9URlRQX0lMTEVHQUw7CisgICAgICB9CiAgICAgfQogCiAgICAgLyogdGhlIHR5cGVjYXNlIGZvciB0aGUgM3JkIGFyZ3VtZW50IGlzIG1vc3RseSBmb3Igc3lzdGVtcyB0aGF0IGRvCkBAIC05NzMsNiArOTg1LDcgQEAKIHsKICAgdGZ0cF9zdGF0ZV9kYXRhX3QgKnN0YXRlOwogICBpbnQgYmxrc2l6ZTsKKyAgaW50IG5lZWRfYmxrc2l6ZTsKIAogICBibGtzaXplID0gVEZUUF9CTEtTSVpFX0RFRkFVTFQ7CiAKQEAgLTk4NywxNSArMTAwMCwyMCBAQAogICAgICAgcmV0dXJuIENVUkxFX1RGVFBfSUxMRUdBTDsKICAgfQogCisgIG5lZWRfYmxrc2l6ZSA9IGJsa3NpemU7CisgIC8qIGRlZmF1bHQgc2l6ZSBpcyB0aGUgZmFsbGJhY2sgd2hlbiBubyBPQUNLIGlzIHJlY2VpdmVkICovCisgIGlmKG5lZWRfYmxrc2l6ZSA8IFRGVFBfQkxLU0laRV9ERUZBVUxUKQorICAgIG5lZWRfYmxrc2l6ZSA9IFRGVFBfQkxLU0laRV9ERUZBVUxUOworCiAgIGlmKCFzdGF0ZS0+cnBhY2tldC5kYXRhKSB7Ci0gICAgc3RhdGUtPnJwYWNrZXQuZGF0YSA9IGNhbGxvYygxLCBibGtzaXplICsgMiArIDIpOworICAgIHN0YXRlLT5ycGFja2V0LmRhdGEgPSBjYWxsb2MoMSwgbmVlZF9ibGtzaXplICsgMiArIDIpOwogCiAgICAgaWYoIXN0YXRlLT5ycGFja2V0LmRhdGEpCiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgfQogCiAgIGlmKCFzdGF0ZS0+c3BhY2tldC5kYXRhKSB7Ci0gICAgc3RhdGUtPnNwYWNrZXQuZGF0YSA9IGNhbGxvYygxLCBibGtzaXplICsgMiArIDIpOworICAgIHN0YXRlLT5zcGFja2V0LmRhdGEgPSBjYWxsb2MoMSwgbmVlZF9ibGtzaXplICsgMiArIDIpOwogCiAgICAgaWYoIXN0YXRlLT5zcGFja2V0LmRhdGEpCiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKQEAgLTEwMDksNyArMTAyNyw3IEBACiAgIHN0YXRlLT5zb2NrZmQgPSBzdGF0ZS0+Y29ubi0+c29ja1tGSVJTVFNPQ0tFVF07CiAgIHN0YXRlLT5zdGF0ZSA9IFRGVFBfU1RBVEVfU1RBUlQ7CiAgIHN0YXRlLT5lcnJvciA9IFRGVFBfRVJSX05PTkU7Ci0gIHN0YXRlLT5ibGtzaXplID0gYmxrc2l6ZTsKKyAgc3RhdGUtPmJsa3NpemUgPSBURlRQX0JMS1NJWkVfREVGQVVMVDsgLyogVW5sZXNzIHVwZGF0ZWQgYnkgT0FDSyByZXNwb25zZSAqLwogICBzdGF0ZS0+cmVxdWVzdGVkX2Jsa3NpemUgPSBibGtzaXplOwogCiAgICgoc3RydWN0IHNvY2thZGRyICopJnN0YXRlLT5sb2NhbF9hZGRyKS0+c2FfZmFtaWx5ID0KQEAgLTEwODIsMTQgKzExMDAsOSBAQAogICogVGhlIGdldHNvY2sgY2FsbGJhY2sKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBpbnQgdGZ0cF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpCitzdGF0aWMgaW50IHRmdHBfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3QgKnNvY2tzKQogewotICBpZighbnVtc29ja3MpCi0gICAgcmV0dXJuIEdFVFNPQ0tfQkxBTks7Ci0KICAgc29ja3NbMF0gPSBjb25uLT5zb2NrW0ZJUlNUU09DS0VUXTsKLQogICByZXR1cm4gR0VUU09DS19SRUFEU09DSygwKTsKIH0KIApAQCAtMTM3Niw3ICsxMzg5LDcgQEAKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIGNoYXIgKnR5cGU7CiAKLSAgY29ubi0+c29ja3R5cGUgPSBTT0NLX0RHUkFNOyAgIC8qIFVEUCBkYXRhZ3JhbSBiYXNlZCAqLworICBjb25uLT50cmFuc3BvcnQgPSBUUk5TUFJUX1VEUDsKIAogICAvKiBURlRQIFVSTHMgc3VwcG9ydCBhbiBleHRlbnNpb24gbGlrZSAiO21vZGU9PHR5cGVjb2RlPiIgdGhhdAogICAgKiB3ZSdsbCB0cnkgdG8gZ2V0IG5vdyEgKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3RmdHAuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3RmdHAuaAppbmRleCAxMzM1ZjY0Li4zMzM0ODMwIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi90ZnRwLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdGZ0cC5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMDcsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi90aW1ldmFsLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi90aW1ldmFsLmMKaW5kZXggZTJiZDdmZC4uZTc2MTk2NiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdGltZXZhbC5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3RpbWV2YWwuYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMjgsNiArMjgsNyBAQAogZXh0ZXJuIExBUkdFX0lOVEVHRVIgQ3VybF9mcmVxOwogZXh0ZXJuIGJvb2wgQ3VybF9pc1Zpc3RhT3JHcmVhdGVyOwogCisvKiBJbiBjYXNlIG9mIGJ1ZyBmaXggdGhpcyBmdW5jdGlvbiBoYXMgYSBjb3VudGVycGFydCBpbiB0b29sX3V0aWwuYyAqLwogc3RydWN0IGN1cmx0aW1lIEN1cmxfbm93KHZvaWQpCiB7CiAgIHN0cnVjdCBjdXJsdGltZSBub3c7CkBAIC0xNzQsMTQgKzE3NSw2IEBACiAKICNlbmRpZgogCi0jaWYgU0laRU9GX1RJTUVfVCA8IDgKLSNkZWZpbmUgVElNRV9NQVggSU5UX01BWAotI2RlZmluZSBUSU1FX01JTiBJTlRfTUlOCi0jZWxzZQotI2RlZmluZSBUSU1FX01BWCA5MjIzMzcyMDM2ODU0Nzc1ODA3TEwKLSNkZWZpbmUgVElNRV9NSU4gLTkyMjMzNzIwMzY4NTQ3NzU4MDdMTAotI2VuZGlmCi0KIC8qCiAgKiBSZXR1cm5zOiB0aW1lIGRpZmZlcmVuY2UgaW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gRm9yIHRvbyBsYXJnZSBkaWZmcyBpdAogICogcmV0dXJucyBtYXggdmFsdWUuCkBAIC0xOTEsMTAgKzE4NCwxMCBAQAogdGltZWRpZmZfdCBDdXJsX3RpbWVkaWZmKHN0cnVjdCBjdXJsdGltZSBuZXdlciwgc3RydWN0IGN1cmx0aW1lIG9sZGVyKQogewogICB0aW1lZGlmZl90IGRpZmYgPSAodGltZWRpZmZfdCluZXdlci50dl9zZWMtb2xkZXIudHZfc2VjOwotICBpZihkaWZmID49IChUSU1FX01BWC8xMDAwKSkKLSAgICByZXR1cm4gVElNRV9NQVg7Ci0gIGVsc2UgaWYoZGlmZiA8PSAoVElNRV9NSU4vMTAwMCkpCi0gICAgcmV0dXJuIFRJTUVfTUlOOworICBpZihkaWZmID49IChUSU1FRElGRl9UX01BWC8xMDAwKSkKKyAgICByZXR1cm4gVElNRURJRkZfVF9NQVg7CisgIGVsc2UgaWYoZGlmZiA8PSAoVElNRURJRkZfVF9NSU4vMTAwMCkpCisgICAgcmV0dXJuIFRJTUVESUZGX1RfTUlOOwogICByZXR1cm4gZGlmZiAqIDEwMDAgKyAobmV3ZXIudHZfdXNlYy1vbGRlci50dl91c2VjKS8xMDAwOwogfQogCkBAIC0yMDUsOSArMTk4LDkgQEAKIHRpbWVkaWZmX3QgQ3VybF90aW1lZGlmZl91cyhzdHJ1Y3QgY3VybHRpbWUgbmV3ZXIsIHN0cnVjdCBjdXJsdGltZSBvbGRlcikKIHsKICAgdGltZWRpZmZfdCBkaWZmID0gKHRpbWVkaWZmX3QpbmV3ZXIudHZfc2VjLW9sZGVyLnR2X3NlYzsKLSAgaWYoZGlmZiA+PSAoVElNRV9NQVgvMTAwMDAwMCkpCi0gICAgcmV0dXJuIFRJTUVfTUFYOwotICBlbHNlIGlmKGRpZmYgPD0gKFRJTUVfTUlOLzEwMDAwMDApKQotICAgIHJldHVybiBUSU1FX01JTjsKKyAgaWYoZGlmZiA+PSAoVElNRURJRkZfVF9NQVgvMTAwMDAwMCkpCisgICAgcmV0dXJuIFRJTUVESUZGX1RfTUFYOworICBlbHNlIGlmKGRpZmYgPD0gKFRJTUVESUZGX1RfTUlOLzEwMDAwMDApKQorICAgIHJldHVybiBUSU1FRElGRl9UX01JTjsKICAgcmV0dXJuIGRpZmYgKiAxMDAwMDAwICsgbmV3ZXIudHZfdXNlYy1vbGRlci50dl91c2VjOwogfQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdGltZXZhbC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdGltZXZhbC5oCmluZGV4IDk2ODY3ZDcuLjUzZTA2MzYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3RpbWV2YWwuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi90aW1ldmFsLmgKQEAgLTI0LDEzICsyNCwxMyBAQAogCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCi0jaWYgU0laRU9GX1RJTUVfVCA8IDgKLXR5cGVkZWYgaW50IHRpbWVkaWZmX3Q7Ci0jZGVmaW5lIENVUkxfRk9STUFUX1RJTUVESUZGX1QgImQiCi0jZWxzZQorLyogVXNlIGEgbGFyZ2VyIHR5cGUgZXZlbiBmb3IgMzIgYml0IHRpbWVfdCBzeXN0ZW1zIHNvIHRoYXQgd2UgY2FuIGtlZXAKKyAgIG1pY3Jvc2Vjb25kIGFjY3VyYWN5IGluIGl0ICovCiB0eXBlZGVmIGN1cmxfb2ZmX3QgdGltZWRpZmZfdDsKICNkZWZpbmUgQ1VSTF9GT1JNQVRfVElNRURJRkZfVCBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UCi0jZW5kaWYKKworI2RlZmluZSBUSU1FRElGRl9UX01BWCBDVVJMX09GRl9UX01BWAorI2RlZmluZSBUSU1FRElGRl9UX01JTiBDVVJMX09GRl9UX01JTgogCiBzdHJ1Y3QgY3VybHRpbWUgewogICB0aW1lX3QgdHZfc2VjOyAvKiBzZWNvbmRzICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi90cmFuc2Zlci5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdHJhbnNmZXIuYwppbmRleCA1MTQzMzBlLi44MjcwNzYxIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi90cmFuc2Zlci5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3RyYW5zZmVyLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTE3Niw3ICsxNzYsNyBAQAogI2lmbmRlZiBDVVJMX0RJU0FCTEVfSFRUUAogICBpZihkYXRhLT5zdGF0ZS50cmFpbGVyc19zdGF0ZSA9PSBUUkFJTEVSU19JTklUSUFMSVpFRCkgewogICAgIHN0cnVjdCBjdXJsX3NsaXN0ICp0cmFpbGVycyA9IE5VTEw7Ci0gICAgQ1VSTGNvZGUgYzsKKyAgICBDVVJMY29kZSByZXN1bHQ7CiAgICAgaW50IHRyYWlsZXJzX3JldF9jb2RlOwogCiAgICAgLyogYXQgdGhpcyBwb2ludCB3ZSBhbHJlYWR5IHZlcmlmaWVkIHRoYXQgdGhlIGNhbGxiYWNrIGV4aXN0cwpAQCAtMTk1LDE3ICsxOTUsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC50cmFpbGVyX2RhdGEpOwogICAgIEN1cmxfc2V0X2luX2NhbGxiYWNrKGRhdGEsIGZhbHNlKTsKICAgICBpZih0cmFpbGVyc19yZXRfY29kZSA9PSBDVVJMX1RSQUlMRVJGVU5DX09LKSB7Ci0gICAgICBjID0gQ3VybF9odHRwX2NvbXBpbGVfdHJhaWxlcnModHJhaWxlcnMsIGRhdGEtPnN0YXRlLnRyYWlsZXJzX2J1ZiwgZGF0YSk7CisgICAgICByZXN1bHQgPSBDdXJsX2h0dHBfY29tcGlsZV90cmFpbGVycyh0cmFpbGVycywgJmRhdGEtPnN0YXRlLnRyYWlsZXJzX2J1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgIGZhaWxmKGRhdGEsICJvcGVyYXRpb24gYWJvcnRlZCBieSB0cmFpbGluZyBoZWFkZXJzIGNhbGxiYWNrIik7CiAgICAgICAqbnJlYWRwID0gMDsKLSAgICAgIGMgPSBDVVJMRV9BQk9SVEVEX0JZX0NBTExCQUNLOworICAgICAgcmVzdWx0ID0gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKICAgICB9Ci0gICAgaWYoYyAhPSBDVVJMRV9PSykgeworICAgIGlmKHJlc3VsdCkgewogICAgICAgQ3VybF9hZGRfYnVmZmVyX2ZyZWUoJmRhdGEtPnN0YXRlLnRyYWlsZXJzX2J1Zik7CiAgICAgICBjdXJsX3NsaXN0X2ZyZWVfYWxsKHRyYWlsZXJzKTsKLSAgICAgIHJldHVybiBjOworICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgaW5mb2YoZGF0YSwgIlN1Y2Nlc3NmdWxseSBjb21waWxlZCB0cmFpbGVycy5cclxuIik7CiAgICAgY3VybF9zbGlzdF9mcmVlX2FsbCh0cmFpbGVycyk7CkBAIC0yMjUsNyArMjI2LDcgQEAKICAgaWYoZGF0YS0+c3RhdGUudHJhaWxlcnNfc3RhdGUgPT0gVFJBSUxFUlNfU0VORElORykgewogICAgIC8qIGlmIHdlJ3JlIGhlcmUgdGhlbiB0aGF0IG1lYW5zIHRoYXQgd2UgYWxyZWFkeSBzZW50IHRoZSBsYXN0IGVtcHR5IGNodW5rCiAgICAgICAgYnV0IHdlIGRpZG4ndCBzZW5kIGEgZmluYWwgQ1IgTEYsIHNvIHdlIHNlbnQgMCBDUiBMRi4gV2UgdGhlbiBzdGFydAotICAgICAgIHB1bGxpbmcgdHJhaWxpbmcgZGF0YSB1bnRpbCB3ZSDCsmhhdmUgbm8gbW9yZSBhdCB3aGljaCBwb2ludCB3ZQorICAgICAgIHB1bGxpbmcgdHJhaWxpbmcgZGF0YSB1bnRpbCB3ZSBoYXZlIG5vIG1vcmUgYXQgd2hpY2ggcG9pbnQgd2UKICAgICAgICBzaW1wbHkgcmV0dXJuIHRvIHRoZSBwcmV2aW91cyBwb2ludCBpbiB0aGUgc3RhdGUgbWFjaGluZSBhcyBpZgogICAgICAgIG5vdGhpbmcgaGFwcGVuZWQuCiAgICAgICAgKi8KQEAgLTQ4Myw4ICs0ODQsOSBAQAogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKLXN0YXRpYyBpbnQgZGF0YV9wZW5kaW5nKGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK3N0YXRpYyBpbnQgZGF0YV9wZW5kaW5nKGNvbnN0IHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEpCiB7CisgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IGRhdGEtPmNvbm47CiAgIC8qIGluIHRoZSBjYXNlIG9mIGxpYnNzaDIsIHdlIGNhbiBuZXZlciBiZSByZWFsbHkgc3VyZSB0aGF0IHdlIGhhdmUgZW1wdGllZAogICAgICBpdHMgaW50ZXJuYWwgYnVmZmVycyBzbyB3ZSBNVVNUIGFsd2F5cyB0cnkgdW50aWwgd2UgZ2V0IEVBR0FJTiBiYWNrICovCiAgIHJldHVybiBjb25uLT5oYW5kbGVyLT5wcm90b2NvbCYoQ1VSTFBST1RPX1NDUHxDVVJMUFJPVE9fU0ZUUCkgfHwKQEAgLTQ5Nyw3ICs0OTksOSBAQAogICAgICAgIFRSVUUuIFRoZSB0aGluZyBpcyBpZiB3ZSByZWFkIGV2ZXJ5dGhpbmcsIHRoZW4gaHR0cDJfcmVjdiB3b24ndAogICAgICAgIGJlIGNhbGxlZCBhbmQgd2UgY2Fubm90IHNpZ25hbCB0aGUgSFRUUC8yIHN0cmVhbSBoYXMgY2xvc2VkLiBBcwogICAgICAgIGEgd29ya2Fyb3VuZCwgd2UgcmV0dXJuIG5vbnplcm8gaGVyZSB0byBjYWxsIGh0dHAyX3JlY3YuICovCi0gICAgKChjb25uLT5oYW5kbGVyLT5wcm90b2NvbCZQUk9UT19GQU1JTFlfSFRUUCkgJiYgY29ubi0+aHR0cHZlcnNpb24gPT0gMjApOworICAgICgoY29ubi0+aGFuZGxlci0+cHJvdG9jb2wmUFJPVE9fRkFNSUxZX0hUVFApICYmIGNvbm4tPmh0dHB2ZXJzaW9uID49IDIwKTsKKyNlbGlmIGRlZmluZWQoRU5BQkxFX1FVSUMpCisgICAgQ3VybF9zc2xfZGF0YV9wZW5kaW5nKGNvbm4sIEZJUlNUU09DS0VUKSB8fCBDdXJsX3F1aWNfZGF0YV9wZW5kaW5nKGRhdGEpOwogI2Vsc2UKICAgICBDdXJsX3NzbF9kYXRhX3BlbmRpbmcoY29ubiwgRklSU1RTT0NLRVQpOwogI2VuZGlmCkBAIC02MDEsNyArNjA1LDcgQEAKICAgICAgIG5yZWFkID0gMDsKICAgICB9CiAKLSAgICBpZigoay0+Ynl0ZWNvdW50ID09IDApICYmIChrLT53cml0ZWJ5dGVjb3VudCA9PSAwKSkgeworICAgIGlmKCFrLT5ieXRlY291bnQpIHsKICAgICAgIEN1cmxfcGdyc1RpbWUoZGF0YSwgVElNRVJfU1RBUlRUUkFOU0ZFUik7CiAgICAgICBpZihrLT5leHAxMDAgPiBFWFAxMDBfU0VORF9EQVRBKQogICAgICAgICAvKiBzZXQgdGltZSBzdGFtcCB0byBjb21wYXJlIHdpdGggd2hlbiB3YWl0aW5nIGZvciB0aGUgMTAwICovCkBAIC03NzUsMTQgKzc3OSwxNCBAQAogICAgICAgICAgKiBhbmQgd3JpdGVzIGF3YXkgdGhlIGRhdGEuIFRoZSByZXR1cm5lZCAnbnJlYWQnIGhvbGRzIHRoZSBudW1iZXIKICAgICAgICAgICogb2YgYWN0dWFsIGRhdGEgaXQgd3JvdGUgdG8gdGhlIGNsaWVudC4KICAgICAgICAgICovCi0KKyAgICAgICAgQ1VSTGNvZGUgZXh0cmE7CiAgICAgICAgIENIVU5LY29kZSByZXMgPQotICAgICAgICAgIEN1cmxfaHR0cGNodW5rX3JlYWQoY29ubiwgay0+c3RyLCBucmVhZCwgJm5yZWFkKTsKKyAgICAgICAgICBDdXJsX2h0dHBjaHVua19yZWFkKGNvbm4sIGstPnN0ciwgbnJlYWQsICZucmVhZCwgJmV4dHJhKTsKIAogICAgICAgICBpZihDSFVOS0VfT0sgPCByZXMpIHsKLSAgICAgICAgICBpZihDSFVOS0VfV1JJVEVfRVJST1IgPT0gcmVzKSB7Ci0gICAgICAgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHdyaXRpbmcgZGF0YSIpOwotICAgICAgICAgICAgcmV0dXJuIENVUkxFX1dSSVRFX0VSUk9SOworICAgICAgICAgIGlmKENIVU5LRV9QQVNTVEhSVV9FUlJPUiA9PSByZXMpIHsKKyAgICAgICAgICAgIGZhaWxmKGRhdGEsICJGYWlsZWQgcmVhZGluZyB0aGUgY2h1bmtlZC1lbmNvZGVkIHN0cmVhbSIpOworICAgICAgICAgICAgcmV0dXJuIGV4dHJhOwogICAgICAgICAgIH0KICAgICAgICAgICBmYWlsZihkYXRhLCAiJXMgaW4gY2h1bmtlZC1lbmNvZGluZyIsIEN1cmxfY2h1bmtlZF9zdHJlcnJvcihyZXMpKTsKICAgICAgICAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKQEAgLTkxNyw3ICs5MjEsNyBAQAogICAgICAgYnJlYWs7CiAgICAgfQogCi0gIH0gd2hpbGUoZGF0YV9wZW5kaW5nKGNvbm4pICYmIG1heGxvb3BzLS0pOworICB9IHdoaWxlKGRhdGFfcGVuZGluZyhkYXRhKSAmJiBtYXhsb29wcy0tKTsKIAogICBpZihtYXhsb29wcyA8PSAwKSB7CiAgICAgLyogd2UgbWFyayBpdCBhcyByZWFkLWFnYWluLXBsZWFzZSAqLwpAQCAtOTM3LDEyICs5NDEsMTQgQEAKICAgcmV0dXJuIENVUkxFX09LOwogfQogCi1zdGF0aWMgQ1VSTGNvZGUgZG9uZV9zZW5kaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFNpbmdsZVJlcXVlc3QgKmspCitDVVJMY29kZSBDdXJsX2RvbmVfc2VuZGluZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU2luZ2xlUmVxdWVzdCAqaykKIHsKICAgay0+a2VlcG9uICY9IH5LRUVQX1NFTkQ7IC8qIHdlJ3JlIGRvbmUgd3JpdGluZyAqLwogCisgIC8qIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgbW92ZWQgaW50byB0aGUgaGFuZGxlciBzdHJ1Y3QhICovCiAgIEN1cmxfaHR0cDJfZG9uZV9zZW5kaW5nKGNvbm4pOworICBDdXJsX3F1aWNfZG9uZV9zZW5kaW5nKGNvbm4pOwogCiAgIGlmKGNvbm4tPmJpdHMucmV3aW5kYWZ0ZXJzZW5kKSB7CiAgICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ3VybF9yZWFkcmV3aW5kKGNvbm4pOwpAQCAtMTA0Niw3ICsxMDUyLDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBpZihucmVhZCA8PSAwKSB7Ci0gICAgICAgIHJlc3VsdCA9IGRvbmVfc2VuZGluZyhjb25uLCBrKTsKKyAgICAgICAgcmVzdWx0ID0gQ3VybF9kb25lX3NlbmRpbmcoY29ubiwgayk7CiAgICAgICAgIGlmKHJlc3VsdCkKICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICBicmVhazsKQEAgLTExNjQsMTQgKzExNzAsMTQgQEAKICAgICAgIGstPnVwbG9hZF9wcmVzZW50ID0gMDsgLyogbm8gbW9yZSBieXRlcyBsZWZ0ICovCiAKICAgICAgIGlmKGstPnVwbG9hZF9kb25lKSB7Ci0gICAgICAgIHJlc3VsdCA9IGRvbmVfc2VuZGluZyhjb25uLCBrKTsKKyAgICAgICAgcmVzdWx0ID0gQ3VybF9kb25lX3NlbmRpbmcoY29ubiwgayk7CiAgICAgICAgIGlmKHJlc3VsdCkKICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgfQogICAgIH0KIAogCi0gIH0gV0hJTEVfRkFMU0U7IC8qIGp1c3QgdG8gYnJlYWsgb3V0IGZyb20hICovCisgIH0gd2hpbGUoMCk7IC8qIGp1c3QgdG8gYnJlYWsgb3V0IGZyb20hICovCiAKICAgcmV0dXJuIENVUkxFX09LOwogfQpAQCAtMTIxMSw3ICsxMjE3LDggQEAKICAgZWxzZQogICAgIGZkX3dyaXRlID0gQ1VSTF9TT0NLRVRfQkFEOwogCi0gIGlmKGNvbm4tPmRhdGEtPnN0YXRlLmRyYWluKSB7CisgIGlmKGRhdGEtPnN0YXRlLmRyYWluKSB7CisgICAgZGF0YS0+c3RhdGUuZHJhaW4tLTsKICAgICBzZWxlY3RfcmVzIHw9IENVUkxfQ1NFTEVDVF9JTjsKICAgICBERUJVR0YoaW5mb2YoZGF0YSwgIkN1cmxfcmVhZHdyaXRlOiBmb3JjaWJseSB0b2xkIHRvIGRyYWluIGRhdGFcbiIpKTsKICAgfQpAQCAtMTM1NCwyMCArMTM2MSwxNCBAQAogICogaW4gdGhlIHByb3BlciBzdGF0ZSB0byBoYXZlIHRoaXMgaW5mb3JtYXRpb24gYXZhaWxhYmxlLgogICovCiBpbnQgQ3VybF9zaW5nbGVfZ2V0c29jayhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrLCAvKiBwb2ludHMgdG8gbnVtc29ja3MgbnVtYmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBzb2NrZXRzICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrKQogewogICBjb25zdCBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKICAgaW50IGJpdG1hcCA9IEdFVFNPQ0tfQkxBTks7CiAgIHVuc2lnbmVkIHNvY2tpbmRleCA9IDA7CiAKICAgaWYoY29ubi0+aGFuZGxlci0+cGVyZm9ybV9nZXRzb2NrKQotICAgIHJldHVybiBjb25uLT5oYW5kbGVyLT5wZXJmb3JtX2dldHNvY2soY29ubiwgc29jaywgbnVtc29ja3MpOwotCi0gIGlmKG51bXNvY2tzIDwgMikKLSAgICAvKiBzaW1wbGUgY2hlY2sgYnV0IHdlIG1pZ2h0IG5lZWQgdHdvIHNsb3RzICovCi0gICAgcmV0dXJuIEdFVFNPQ0tfQkxBTks7CisgICAgcmV0dXJuIGNvbm4tPmhhbmRsZXItPnBlcmZvcm1fZ2V0c29jayhjb25uLCBzb2NrKTsKIAogICAvKiBkb24ndCBpbmNsdWRlIEhPTEQgYW5kIFBBVVNFIGNvbm5lY3Rpb25zICovCiAgIGlmKChkYXRhLT5yZXEua2VlcG9uICYgS0VFUF9SRUNWQklUUykgPT0gS0VFUF9SRUNWKSB7CkBAIC0xNTEzLDYgKzE1MTQsNyBAQAogICAgICAgfQogICAgIH0KICNlbmRpZgorICAgIEN1cmxfaHR0cDJfaW5pdF9zdGF0ZSgmZGF0YS0+c3RhdGUpOwogICB9CiAKICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE1OTQsNyArMTU5Niw4IEBACiAKICAgREVCVUdBU1NFUlQoZGF0YS0+c3RhdGUudWgpOwogICB1YyA9IGN1cmxfdXJsX3NldChkYXRhLT5zdGF0ZS51aCwgQ1VSTFVQQVJUX1VSTCwgbmV3dXJsLAotICAgICAgICAgICAgICAgICAgICAodHlwZSA9PSBGT0xMT1dfRkFLRSkgPyBDVVJMVV9OT05fU1VQUE9SVF9TQ0hFTUUgOiAwKTsKKyAgICAgICAgICAgICAgICAgICAgKHR5cGUgPT0gRk9MTE9XX0ZBS0UpID8gQ1VSTFVfTk9OX1NVUFBPUlRfU0NIRU1FIDoKKyAgICAgICAgICAgICAgICAgICAgKCh0eXBlID09IEZPTExPV19SRURJUikgPyBDVVJMVV9VUkxFTkNPREUgOiAwKSApOwogICBpZih1YykgewogICAgIGlmKHR5cGUgIT0gRk9MTE9XX0ZBS0UpCiAgICAgICByZXR1cm4gQ3VybF91Y190b19jdXJsY29kZSh1Yyk7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi90cmFuc2Zlci5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdHJhbnNmZXIuaAppbmRleCBhOWJmZjYzLi42N2ZkOTFmIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi90cmFuc2Zlci5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3RyYW5zZmVyLmgKQEAgLTI5LDcgKzI5LDYgQEAKIHZvaWQgQ3VybF9pbml0X0NPTk5FQ1Qoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSk7CiAKIENVUkxjb2RlIEN1cmxfcHJldHJhbnNmZXIoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSk7Ci1DVVJMY29kZSBDdXJsX3NlY29uZF9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CiBDVVJMY29kZSBDdXJsX3Bvc3R0cmFuc2ZlcihzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKIAogdHlwZWRlZiBlbnVtIHsKQEAgLTQ4LDggKzQ3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsIGJvb2wgKmRvbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpjb21lYmFjayk7CiBpbnQgQ3VybF9zaW5nbGVfZ2V0c29jayhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2Nrcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2Nrcyk7CiBDVVJMY29kZSBDdXJsX3JlYWRyZXdpbmQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKIENVUkxjb2RlIEN1cmxfZmlsbHJlYWRidWZmZXIoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBzaXplX3QgYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqbnJlYWRwKTsKQEAgLTU3LDYgKzU1LDkgQEAKIGJvb2wgQ3VybF9tZWV0c190aW1lY29uZGl0aW9uKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsIHRpbWVfdCB0aW1lb2Zkb2MpOwogQ1VSTGNvZGUgQ3VybF9nZXRfdXBsb2FkX2J1ZmZlcihzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKIAorQ1VSTGNvZGUgQ3VybF9kb25lX3NlbmRpbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFNpbmdsZVJlcXVlc3QgKmspOworCiAvKiBUaGlzIHNldHMgdXAgYSBmb3J0aGNvbWluZyB0cmFuc2ZlciAqLwogdm9pZAogQ3VybF9zZXR1cF90cmFuc2ZlciAoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3VybC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdXJsLmMKaW5kZXggYzQ0MWFlNy4uNDdmYzY2YSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdXJsLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdXJsLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTM0LDEwICszNCwxMiBAQAogI2lmZGVmIEhBVkVfTkVUX0lGX0gKICNpbmNsdWRlIDxuZXQvaWYuaD4KICNlbmRpZgorI2lmZGVmIEhBVkVfSVBITFBBUElfSAorI2luY2x1ZGUgPElwaGxwYXBpLmg+CisjZW5kaWYKICNpZmRlZiBIQVZFX1NZU19JT0NUTF9ICiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAjZW5kaWYKLQogI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNlbmRpZgpAQCAtOTMsNiArOTUsNyBAQAogI2luY2x1ZGUgImluZXRfcHRvbi5oIgogI2luY2x1ZGUgImdldGluZm8uaCIKICNpbmNsdWRlICJ1cmxhcGktaW50LmgiCisjaW5jbHVkZSAic3lzdGVtX3dpbjMyLmgiCiAKIC8qIEFuZCBub3cgZm9yIHRoZSBwcm90b2NvbHMgKi8KICNpbmNsdWRlICJmdHAuaCIKQEAgLTEwMywxMyArMTA2LDEyIEBACiAjaW5jbHVkZSAiaHR0cDIuaCIKICNpbmNsdWRlICJmaWxlLmgiCiAjaW5jbHVkZSAiY3VybF9sZGFwLmgiCi0jaW5jbHVkZSAic3NoLmgiCisjaW5jbHVkZSAidnNzaC9zc2guaCIKICNpbmNsdWRlICJpbWFwLmgiCiAjaW5jbHVkZSAidXJsLmgiCiAjaW5jbHVkZSAiY29ubmVjdC5oIgogI2luY2x1ZGUgImluZXRfbnRvcC5oIgogI2luY2x1ZGUgImh0dHBfbnRsbS5oIgotI2luY2x1ZGUgInNvY2tzLmgiCiAjaW5jbHVkZSAiY3VybF9ydG1wLmgiCiAjaW5jbHVkZSAiZ29waGVyLmgiCiAjaW5jbHVkZSAiaHR0cF9wcm94eS5oIgpAQCAtMTI2LDcgKzEyOCw2IEBACiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogc3RhdGljIHZvaWQgY29ubl9mcmVlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7Ci1zdGF0aWMgdm9pZCBmcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZShzdHJ1Y3QgaG9zdG5hbWUgKmhvc3QpOwogc3RhdGljIHVuc2lnbmVkIGludCBnZXRfcHJvdG9jb2xfZmFtaWx5KHVuc2lnbmVkIGludCBwcm90b2NvbCk7CiAKIC8qIFNvbWUgcGFydHMgb2YgdGhlIGNvZGUgKGUuZy4gY2h1bmtlZCBlbmNvZGluZykgYXNzdW1lIHRoaXMgYnVmZmVyIGhhcyBhdApAQCAtMTg1LDcgKzE4Niw3IEBACiAgICZDdXJsX2hhbmRsZXJfdGZ0cCwKICNlbmRpZgogCi0jaWYgZGVmaW5lZChVU0VfU1NIKQorI2lmIGRlZmluZWQoVVNFX1NTSCkgJiYgIWRlZmluZWQoVVNFX1dPTEZTU0gpCiAgICZDdXJsX2hhbmRsZXJfc2NwLAogI2VuZGlmCiAKQEAgLTMxNSwxMyArMzE2LDE3IEBACiAgKiB3aGVuIGN1cmxfZWFzeV9wZXJmb3JtKCkgaXMgaW52b2tlZC4KICAqLwogCi1DVVJMY29kZSBDdXJsX2Nsb3NlKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEpCitDVVJMY29kZSBDdXJsX2Nsb3NlKHN0cnVjdCBDdXJsX2Vhc3kgKipkYXRhcCkKIHsKICAgc3RydWN0IEN1cmxfbXVsdGkgKm07CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGE7CiAKLSAgaWYoIWRhdGEpCisgIGlmKCFkYXRhcCB8fCAhKmRhdGFwKQogICAgIHJldHVybiBDVVJMRV9PSzsKIAorICBkYXRhID0gKmRhdGFwOworICAqZGF0YXAgPSBOVUxMOworCiAgIEN1cmxfZXhwaXJlX2NsZWFyKGRhdGEpOyAvKiBzaHV0IG9mZiB0aW1lcnMgKi8KIAogICBtID0gZGF0YS0+bXVsdGk7CkBAIC0zNzIsOSArMzc3LDkgQEAKICAgQ3VybF9zYWZlZnJlZShkYXRhLT5zdGF0ZS5idWZmZXIpOwogICBDdXJsX3NhZmVmcmVlKGRhdGEtPnN0YXRlLmhlYWRlcmJ1ZmYpOwogICBDdXJsX3NhZmVmcmVlKGRhdGEtPnN0YXRlLnVsYnVmKTsKLSAgQ3VybF9mbHVzaF9jb29raWVzKGRhdGEsIDEpOworICBDdXJsX2ZsdXNoX2Nvb2tpZXMoZGF0YSwgVFJVRSk7CiAjaWZkZWYgVVNFX0FMVFNWQwotICBDdXJsX2FsdHN2Y19zYXZlKGRhdGEtPmFzaSwgZGF0YS0+c2V0LnN0cltTVFJJTkdfQUxUU1ZDXSk7CisgIEN1cmxfYWx0c3ZjX3NhdmUoZGF0YSwgZGF0YS0+YXNpLCBkYXRhLT5zZXQuc3RyW1NUUklOR19BTFRTVkNdKTsKICAgQ3VybF9hbHRzdmNfY2xlYW51cChkYXRhLT5hc2kpOwogICBkYXRhLT5hc2kgPSBOVUxMOwogI2VuZGlmCkBAIC0zOTcsNiArNDAyLDEyIEBACiAgICAgQ3VybF9zaGFyZV91bmxvY2soZGF0YSwgQ1VSTF9MT0NLX0RBVEFfU0hBUkUpOwogICB9CiAKKyNpZm5kZWYgQ1VSTF9ESVNBQkxFX0RPSAorICBmcmVlKGRhdGEtPnJlcS5kb2gucHJvYmVbMF0uc2VydmVyZG9oLm1lbW9yeSk7CisgIGZyZWUoZGF0YS0+cmVxLmRvaC5wcm9iZVsxXS5zZXJ2ZXJkb2gubWVtb3J5KTsKKyAgY3VybF9zbGlzdF9mcmVlX2FsbChkYXRhLT5yZXEuZG9oLmhlYWRlcnMpOworI2VuZGlmCisKICAgLyogZGVzdHJ1Y3Qgd2lsZGNhcmQgc3RydWN0dXJlcyBpZiBpdCBpcyBuZWVkZWQgKi8KICAgQ3VybF93aWxkY2FyZF9kdG9yKCZkYXRhLT53aWxkY2FyZCk7CiAgIEN1cmxfZnJlZXNldChkYXRhKTsKQEAgLTQzOSw3ICs0NTAsNyBAQAogCiAgIHNldC0+aHR0cHJlcSA9IEhUVFBSRVFfR0VUOyAvKiBEZWZhdWx0IEhUVFAgcmVxdWVzdCAqLwogICBzZXQtPnJ0c3ByZXEgPSBSVFNQUkVRX09QVElPTlM7IC8qIERlZmF1bHQgUlRTUCByZXF1ZXN0ICovCi0jaWZuZGVmIENVUkxfRElTQUJMRV9GSUxFCisjaWZuZGVmIENVUkxfRElTQUJMRV9GVFAKICAgc2V0LT5mdHBfdXNlX2Vwc3YgPSBUUlVFOyAgIC8qIEZUUCBkZWZhdWx0cyB0byBFUFNWIG9wZXJhdGlvbnMgKi8KICAgc2V0LT5mdHBfdXNlX2VwcnQgPSBUUlVFOyAgIC8qIEZUUCBkZWZhdWx0cyB0byBFUFJUIG9wZXJhdGlvbnMgKi8KICAgc2V0LT5mdHBfdXNlX3ByZXQgPSBGQUxTRTsgIC8qIG1haW5seSB1c2VmdWwgZm9yIGRyZnRwZCBzZXJ2ZXJzICovCkBAIC00ODUsOSArNDk2LDggQEAKICAgICAgZGVmaW5lIHNpbmNlIHdlIGludGVybmFsbHkgb25seSB1c2UgdGhlIGxvd2VyIDE2IGJpdHMgZm9yIHRoZSBwYXNzZWQKICAgICAgaW4gYml0bWFzayB0byBub3QgY29uZmxpY3Qgd2l0aCB0aGUgcHJpdmF0ZSBiaXRzICovCiAgIHNldC0+YWxsb3dlZF9wcm90b2NvbHMgPSBDVVJMUFJPVE9fQUxMOwotICBzZXQtPnJlZGlyX3Byb3RvY29scyA9IENVUkxQUk9UT19BTEwgJiAgLyogQWxsIGV4Y2VwdCBGSUxFLCBTQ1AgYW5kIFNNQiAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICB+KENVUkxQUk9UT19GSUxFIHwgQ1VSTFBST1RPX1NDUCB8IENVUkxQUk9UT19TTUIgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxQUk9UT19TTUJTKTsKKyAgc2V0LT5yZWRpcl9wcm90b2NvbHMgPSBDVVJMUFJPVE9fSFRUUCB8IENVUkxQUk9UT19IVFRQUyB8IENVUkxQUk9UT19GVFAgfAorICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxQUk9UT19GVFBTOwogCiAjaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQogICAvKgpAQCAtNTQ0LDcgKzU1NCw3IEBACiAgIHNldC0+dXBrZWVwX2ludGVydmFsX21zID0gQ1VSTF9VUEtFRVBfSU5URVJWQUxfREVGQVVMVDsKICAgc2V0LT5tYXhjb25uZWN0cyA9IERFRkFVTFRfQ09OTkNBQ0hFX1NJWkU7IC8qIGZvciBlYXN5IGhhbmRsZXMgKi8KICAgc2V0LT5tYXhhZ2VfY29ubiA9IDExODsKLSAgc2V0LT5odHRwMDlfYWxsb3dlZCA9IFRSVUU7CisgIHNldC0+aHR0cDA5X2FsbG93ZWQgPSBGQUxTRTsKICAgc2V0LT5odHRwdmVyc2lvbiA9CiAjaWZkZWYgVVNFX05HSFRUUDIKICAgICBDVVJMX0hUVFBfVkVSU0lPTl8yVExTCkBAIC02MTEsOCArNjIxLDYgQEAKIAogICAgICAgZGF0YS0+cHJvZ3Jlc3MuZmxhZ3MgfD0gUEdSU19ISURFOwogICAgICAgZGF0YS0+c3RhdGUuY3VycmVudF9zcGVlZCA9IC0xOyAvKiBpbml0IHRvIG5lZ2F0aXZlID09IGltcG9zc2libGUgKi8KLQotICAgICAgQ3VybF9odHRwMl9pbml0X3N0YXRlKCZkYXRhLT5zdGF0ZSk7CiAgICAgfQogICB9CiAKQEAgLTY2NSw3ICs2NzMsNyBAQAogfQogI2Vsc2UgIC8qICEgVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORCAqLwogLyogVXNlICJkby1ub3RoaW5nIiBtYWNybyBpbnN0ZWFkIG9mIGZ1bmN0aW9uIHdoZW4gd29ya2Fyb3VuZCBub3QgdXNlZCAqLwotI2RlZmluZSBjb25uX3Jlc2V0X2FsbF9wb3N0cG9uZWRfZGF0YShjKSBkbyB7fSBXSElMRV9GQUxTRQorI2RlZmluZSBjb25uX3Jlc2V0X2FsbF9wb3N0cG9uZWRfZGF0YShjKSBkbyB7fSB3aGlsZSgwKQogI2VuZGlmIC8qICEgVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORCAqLwogCiAKQEAgLTcwNSwxNCArNzEzLDE0IEBACiAgIGlmKCFjb25uKQogICAgIHJldHVybjsKIAotICBmcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZSgmY29ubi0+aG9zdCk7Ci0gIGZyZWVfaWRuY29udmVydGVkX2hvc3RuYW1lKCZjb25uLT5jb25uX3RvX2hvc3QpOwotICBmcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZSgmY29ubi0+aHR0cF9wcm94eS5ob3N0KTsKLSAgZnJlZV9pZG5jb252ZXJ0ZWRfaG9zdG5hbWUoJmNvbm4tPnNvY2tzX3Byb3h5Lmhvc3QpOworICBDdXJsX2ZyZWVfaWRuY29udmVydGVkX2hvc3RuYW1lKCZjb25uLT5ob3N0KTsKKyAgQ3VybF9mcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZSgmY29ubi0+Y29ubl90b19ob3N0KTsKKyAgQ3VybF9mcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZSgmY29ubi0+aHR0cF9wcm94eS5ob3N0KTsKKyAgQ3VybF9mcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZSgmY29ubi0+c29ja3NfcHJveHkuaG9zdCk7CiAKICAgQ3VybF9zYWZlZnJlZShjb25uLT51c2VyKTsKICAgQ3VybF9zYWZlZnJlZShjb25uLT5wYXNzd2QpOwotICBDdXJsX3NhZmVmcmVlKGNvbm4tPm9hdXRoX2JlYXJlcik7CisgIEN1cmxfc2FmZWZyZWUoY29ubi0+c2FzbF9hdXRoemlkKTsKICAgQ3VybF9zYWZlZnJlZShjb25uLT5vcHRpb25zKTsKICAgQ3VybF9zYWZlZnJlZShjb25uLT5odHRwX3Byb3h5LnVzZXIpOwogICBDdXJsX3NhZmVmcmVlKGNvbm4tPnNvY2tzX3Byb3h5LnVzZXIpOwpAQCAtODczLDExICs4ODEsNTkgQEAKIAogICByZXR1cm4gRkFMU0U7CiB9CisKK3N0YXRpYyBib29sCitzb2Nrc19wcm94eV9pbmZvX21hdGNoZXMoY29uc3Qgc3RydWN0IHByb3h5X2luZm8qIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHByb3h5X2luZm8qIG5lZWRsZSkKK3sKKyAgaWYoIXByb3h5X2luZm9fbWF0Y2hlcyhkYXRhLCBuZWVkbGUpKQorICAgIHJldHVybiBGQUxTRTsKKworICAvKiB0aGUgdXNlciBpbmZvcm1hdGlvbiBpcyBjYXNlLXNlbnNpdGl2ZQorICAgICBvciBhdCBsZWFzdCBpdCBpcyBub3QgZGVmaW5lZCBhcyBjYXNlLWluc2Vuc2l0aXZlCisgICAgIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMi4xICovCisgIGlmKChkYXRhLT51c2VyID09IE5VTEwpICE9IChuZWVkbGUtPnVzZXIgPT0gTlVMTCkpCisgICAgcmV0dXJuIEZBTFNFOworICAvKiBjdXJsX3N0cmVxdWFsIGRvZXMgYSBjYXNlIGluc2VudGl2ZSBjb21wYXJpc29uLCBzbyBkbyBub3QgdXNlIGl0IGhlcmUhICovCisgIGlmKGRhdGEtPnVzZXIgJiYKKyAgICAgbmVlZGxlLT51c2VyICYmCisgICAgIHN0cmNtcChkYXRhLT51c2VyLCBuZWVkbGUtPnVzZXIpICE9IDApCisgICAgcmV0dXJuIEZBTFNFOworICBpZigoZGF0YS0+cGFzc3dkID09IE5VTEwpICE9IChuZWVkbGUtPnBhc3N3ZCA9PSBOVUxMKSkKKyAgICByZXR1cm4gRkFMU0U7CisgIC8qIGN1cmxfc3RyZXF1YWwgZG9lcyBhIGNhc2UgaW5zZW50aXZlIGNvbXBhcmlzb24sIHNvIGRvIG5vdCB1c2UgaXQgaGVyZSEgKi8KKyAgaWYoZGF0YS0+cGFzc3dkICYmCisgICAgIG5lZWRsZS0+cGFzc3dkICYmCisgICAgIHN0cmNtcChkYXRhLT5wYXNzd2QsIG5lZWRsZS0+cGFzc3dkKSAhPSAwKQorICAgIHJldHVybiBGQUxTRTsKKyAgcmV0dXJuIFRSVUU7Cit9CiAjZWxzZQogLyogZGlzYWJsZWQsIHdvbid0IGdldCBjYWxsZWQgKi8KICNkZWZpbmUgcHJveHlfaW5mb19tYXRjaGVzKHgseSkgRkFMU0UKKyNkZWZpbmUgc29ja3NfcHJveHlfaW5mb19tYXRjaGVzKHgseSkgRkFMU0UKICNlbmRpZgogCisvKiBBIGNvbm5lY3Rpb24gaGFzIHRvIGhhdmUgYmVlbiBpZGxlIGZvciBhIHNob3J0ZXIgdGltZSB0aGFuICdtYXhhZ2VfY29ubicgdG8KKyAgIGJlIHN1YmplY3QgZm9yIHJldXNlLiBUaGUgc3VjY2VzcyByYXRlIGlzIGp1c3QgdG9vIGxvdyBhZnRlciB0aGlzLiAqLworCitzdGF0aWMgYm9vbCBjb25uX21heGFnZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGN1cmx0aW1lIG5vdykKK3sKKyAgaWYoIWNvbm4tPmRhdGEpIHsKKyAgICB0aW1lZGlmZl90IGlkbGV0aW1lID0gQ3VybF90aW1lZGlmZihub3csIGNvbm4tPmxhc3R1c2VkKTsKKyAgICBpZGxldGltZSAvPSAxMDAwOyAvKiBpbnRlZ2VyIHNlY29uZHMgaXMgZmluZSAqLworCisgICAgaWYoaWRsZXRpbWUgPiBkYXRhLT5zZXQubWF4YWdlX2Nvbm4pIHsKKyAgICAgIGluZm9mKGRhdGEsICJUb28gb2xkIGNvbm5lY3Rpb24gKCVsZCBzZWNvbmRzKSwgZGlzY29ubmVjdCBpdFxuIiwKKyAgICAgICAgICAgIGlkbGV0aW1lKTsKKyAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgfQorICByZXR1cm4gRkFMU0U7Cit9CisKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgZ2l2ZW4gY29ubmVjdGlvbiBpcyBkZWFkIGFuZCBleHRyYWN0cyBpdCBmcm9tCiAgKiB0aGUgY29ubmVjdGlvbiBjYWNoZSBpZiBzby4KQEAgLTg5NCw3ICs5NTAsMTEgQEAKICAgICAvKiBUaGUgY2hlY2sgZm9yIGEgZGVhZCBzb2NrZXQgbWFrZXMgc2Vuc2Ugb25seSBpZiB0aGUgY29ubmVjdGlvbiBpc24ndCBpbgogICAgICAgIHVzZSAqLwogICAgIGJvb2wgZGVhZDsKLSAgICBpZihjb25uLT5oYW5kbGVyLT5jb25uZWN0aW9uX2NoZWNrKSB7CisgICAgc3RydWN0IGN1cmx0aW1lIG5vdyA9IEN1cmxfbm93KCk7CisgICAgaWYoY29ubl9tYXhhZ2UoZGF0YSwgY29ubiwgbm93KSkgeworICAgICAgZGVhZCA9IFRSVUU7CisgICAgfQorICAgIGVsc2UgaWYoY29ubi0+aGFuZGxlci0+Y29ubmVjdGlvbl9jaGVjaykgewogICAgICAgLyogVGhlIHByb3RvY29sIGhhcyBhIHNwZWNpYWwgbWV0aG9kIGZvciBjaGVja2luZyB0aGUgc3RhdGUgb2YgdGhlCiAgICAgICAgICBjb25uZWN0aW9uLiBVc2UgaXQgdG8gY2hlY2sgaWYgdGhlIGNvbm5lY3Rpb24gaXMgZGVhZC4gKi8KICAgICAgIHVuc2lnbmVkIGludCBzdGF0ZTsKQEAgLTk0Niw3ICsxMDA2LDggQEAKIHN0YXRpYyB2b2lkIHBydW5lX2RlYWRfY29ubmVjdGlvbnMoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSkKIHsKICAgc3RydWN0IGN1cmx0aW1lIG5vdyA9IEN1cmxfbm93KCk7Ci0gIHRpbWVfdCBlbGFwc2VkID0gQ3VybF90aW1lZGlmZihub3csIGRhdGEtPnN0YXRlLmNvbm5fY2FjaGUtPmxhc3RfY2xlYW51cCk7CisgIHRpbWVkaWZmX3QgZWxhcHNlZCA9CisgICAgQ3VybF90aW1lZGlmZihub3csIGRhdGEtPnN0YXRlLmNvbm5fY2FjaGUtPmxhc3RfY2xlYW51cCk7CiAKICAgaWYoZWxhcHNlZCA+PSAxMDAwTCkgewogICAgIHN0cnVjdCBwcnVuZWRlYWQgcHJ1bmU7CkBAIC05NjEsMjUgKzEwMjIsNiBAQAogICB9CiB9CiAKLS8qIEEgY29ubmVjdGlvbiBoYXMgdG8gaGF2ZSBiZWVuIGlkbGUgZm9yIGEgc2hvcnRlciB0aW1lIHRoYW4gJ21heGFnZV9jb25uJyB0bwotICAgYmUgc3ViamVjdCBmb3IgcmV1c2UuIFRoZSBzdWNjZXNzIHJhdGUgaXMganVzdCB0b28gbG93IGFmdGVyIHRoaXMuICovCi0KLXN0YXRpYyBib29sIGNvbm5fbWF4YWdlKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybHRpbWUgbm93KQotewotICBpZighY29ubi0+ZGF0YSkgewotICAgIHRpbWVkaWZmX3QgaWRsZXRpbWUgPSBDdXJsX3RpbWVkaWZmKG5vdywgY29ubi0+bGFzdHVzZWQpOwotICAgIGlkbGV0aW1lIC89IDEwMDA7IC8qIGludGVnZXIgc2Vjb25kcyBpcyBmaW5lICovCi0KLSAgICBpZihpZGxldGltZS8xMDAwID4gZGF0YS0+c2V0Lm1heGFnZV9jb25uKSB7Ci0gICAgICBpbmZvZihkYXRhLCAiVG9vIG9sZCBjb25uZWN0aW9uICglbGQgc2Vjb25kcyksIGRpc2Nvbm5lY3QgaXRcbiIsCi0gICAgICAgICAgICBpZGxldGltZSk7Ci0gICAgICByZXR1cm4gVFJVRTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIEZBTFNFOwotfQogLyoKICAqIEdpdmVuIG9uZSBmaWxsZWQgaW4gY29ubmVjdGlvbiBzdHJ1Y3QgKG5hbWVkIG5lZWRsZSksIHRoaXMgZnVuY3Rpb24gc2hvdWxkCiAgKiBkZXRlY3QgaWYgdGhlcmUgYWxyZWFkeSBpcyBvbmUgdGhhdCBoYXMgYWxsIHRoZSBzaWduaWZpY2FudCBkZXRhaWxzCkBAIC0xMDAzLDcgKzEwNDUsNyBAQAogICBib29sIGZvdW5kUGVuZGluZ0NhbmRpZGF0ZSA9IEZBTFNFOwogICBib29sIGNhbm11bHRpcGxleCA9IElzTXVsdGlwbGV4aW5nUG9zc2libGUoZGF0YSwgbmVlZGxlKTsKICAgc3RydWN0IGNvbm5lY3RidW5kbGUgKmJ1bmRsZTsKLSAgc3RydWN0IGN1cmx0aW1lIG5vdyA9IEN1cmxfbm93KCk7CisgIGNvbnN0IGNoYXIgKmhvc3RidW5kbGU7CiAKICNpZmRlZiBVU0VfTlRMTQogICBib29sIHdhbnROVExNaHR0cCA9ICgoZGF0YS0+c3RhdGUuYXV0aGhvc3Qud2FudCAmCkBAIC0xMDIwLDIxICsxMDYyLDIwIEBACiAKICAgLyogTG9vayB1cCB0aGUgYnVuZGxlIHdpdGggYWxsIHRoZSBjb25uZWN0aW9ucyB0byB0aGlzIHBhcnRpY3VsYXIgaG9zdC4KICAgICAgTG9ja3MgdGhlIGNvbm5lY3Rpb24gY2FjaGUsIGJld2FyZSBvZiBlYXJseSByZXR1cm5zISAqLwotICBidW5kbGUgPSBDdXJsX2Nvbm5jYWNoZV9maW5kX2J1bmRsZShuZWVkbGUsIGRhdGEtPnN0YXRlLmNvbm5fY2FjaGUpOworICBidW5kbGUgPSBDdXJsX2Nvbm5jYWNoZV9maW5kX2J1bmRsZShuZWVkbGUsIGRhdGEtPnN0YXRlLmNvbm5fY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZob3N0YnVuZGxlKTsKICAgaWYoYnVuZGxlKSB7CiAgICAgLyogTWF4IHBpcGUgbGVuZ3RoIGlzIHplcm8gKHVubGltaXRlZCkgZm9yIG11bHRpcGxleGVkIGNvbm5lY3Rpb25zICovCiAgICAgc3RydWN0IGN1cmxfbGxpc3RfZWxlbWVudCAqY3VycjsKIAogICAgIGluZm9mKGRhdGEsICJGb3VuZCBidW5kbGUgZm9yIGhvc3QgJXM6ICVwIFslc11cbiIsCi0gICAgICAgICAgKG5lZWRsZS0+Yml0cy5jb25uX3RvX2hvc3QgPyBuZWVkbGUtPmNvbm5fdG9faG9zdC5uYW1lIDoKLSAgICAgICAgICAgbmVlZGxlLT5ob3N0Lm5hbWUpLCAodm9pZCAqKWJ1bmRsZSwKLSAgICAgICAgICAoYnVuZGxlLT5tdWx0aXVzZSA9PSBCVU5ETEVfTVVMVElQTEVYID8KLSAgICAgICAgICAgImNhbiBtdWx0aXBsZXgiIDogInNlcmlhbGx5IikpOworICAgICAgICAgIGhvc3RidW5kbGUsICh2b2lkICopYnVuZGxlLCAoYnVuZGxlLT5tdWx0aXVzZSA9PSBCVU5ETEVfTVVMVElQTEVYID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4gbXVsdGlwbGV4IiA6ICJzZXJpYWxseSIpKTsKIAogICAgIC8qIFdlIGNhbid0IG11bHRpcGxleCBpZiB3ZSBkb24ndCBrbm93IGFueXRoaW5nIGFib3V0IHRoZSBzZXJ2ZXIgKi8KICAgICBpZihjYW5tdWx0aXBsZXgpIHsKICAgICAgIGlmKGJ1bmRsZS0+bXVsdGl1c2UgPT0gQlVORExFX1VOS05PV04pIHsKLSAgICAgICAgaWYoKGJ1bmRsZS0+bXVsdGl1c2UgPT0gQlVORExFX1VOS05PV04pICYmIGRhdGEtPnNldC5waXBld2FpdCkgeworICAgICAgICBpZihkYXRhLT5zZXQucGlwZXdhaXQpIHsKICAgICAgICAgICBpbmZvZihkYXRhLCAiU2VydmVyIGRvZXNuJ3Qgc3VwcG9ydCBtdWx0aXBsZXggeWV0LCB3YWl0XG4iKTsKICAgICAgICAgICAqd2FpdHBpcGUgPSBUUlVFOwogICAgICAgICAgIEN1cmxfY29ubmNhY2hlX3VubG9jayhkYXRhKTsKQEAgLTEwNTgsNyArMTA5OSw3IEBACiAgICAgY3VyciA9IGJ1bmRsZS0+Y29ubl9saXN0LmhlYWQ7CiAgICAgd2hpbGUoY3VycikgewogICAgICAgYm9vbCBtYXRjaCA9IEZBTFNFOwotICAgICAgc2l6ZV90IG11bHRpcGxleGVkOworICAgICAgc2l6ZV90IG11bHRpcGxleGVkID0gMDsKIAogICAgICAgLyoKICAgICAgICAqIE5vdGUgdGhhdCBpZiB3ZSB1c2UgYSBIVFRQIHByb3h5IGluIG5vcm1hbCBtb2RlIChubyB0dW5uZWxpbmcpLCB3ZQpAQCAtMTA2NywyMiArMTEwOCwxNSBAQAogICAgICAgY2hlY2sgPSBjdXJyLT5wdHI7CiAgICAgICBjdXJyID0gY3Vyci0+bmV4dDsKIAotICAgICAgaWYoY2hlY2stPmJpdHMuY29ubmVjdF9vbmx5KQotICAgICAgICAvKiBjb25uZWN0LW9ubHkgY29ubmVjdGlvbnMgd2lsbCBub3QgYmUgcmV1c2VkICovCisgICAgICBpZihjaGVjay0+Yml0cy5jb25uZWN0X29ubHkgfHwgY2hlY2stPmJpdHMuY2xvc2UpCisgICAgICAgIC8qIGNvbm5lY3Qtb25seSBvciB0by1iZS1jbG9zZWQgY29ubmVjdGlvbnMgd2lsbCBub3QgYmUgcmV1c2VkICovCiAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICBpZihjb25uX21heGFnZShkYXRhLCBjaGVjaywgbm93KSB8fCBleHRyYWN0X2lmX2RlYWQoY2hlY2ssIGRhdGEpKSB7Ci0gICAgICAgIC8qIGRpc2Nvbm5lY3QgaXQgKi8KLSAgICAgICAgKHZvaWQpQ3VybF9kaXNjb25uZWN0KGRhdGEsIGNoZWNrLCAvKiBkZWFkX2Nvbm5lY3Rpb24gKi9UUlVFKTsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0KLSAgICAgIG11bHRpcGxleGVkID0gQ09OTl9JTlVTRShjaGVjaykgJiYKLSAgICAgICAgKGJ1bmRsZS0+bXVsdGl1c2UgPT0gQlVORExFX01VTFRJUExFWCk7CisgICAgICBpZihidW5kbGUtPm11bHRpdXNlID09IEJVTkRMRV9NVUxUSVBMRVgpCisgICAgICAgIG11bHRpcGxleGVkID0gQ09OTl9JTlVTRShjaGVjayk7CiAKICAgICAgIGlmKGNhbm11bHRpcGxleCkgewotICAgICAgICBpZihjaGVjay0+Yml0cy5wcm90b2Nvbm5zdGFydCAmJiBjaGVjay0+Yml0cy5jbG9zZSkKLSAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgOwogICAgICAgfQogICAgICAgZWxzZSB7CiAgICAgICAgIGlmKG11bHRpcGxleGVkKSB7CkBAIC0xMTAyLDEyICsxMTM2LDkgQEAKICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZigoY2hlY2stPnNvY2tbRklSU1RTT0NLRVRdID09IENVUkxfU09DS0VUX0JBRCkgfHwKLSAgICAgICAgICAgY2hlY2stPmJpdHMuY2xvc2UpIHsKLSAgICAgICAgICBpZighY2hlY2stPmJpdHMuY2xvc2UpCi0gICAgICAgICAgICBmb3VuZFBlbmRpbmdDYW5kaWRhdGUgPSBUUlVFOwotICAgICAgICAgIC8qIERvbid0IHBpY2sgYSBjb25uZWN0aW9uIHRoYXQgaGFzbid0IGNvbm5lY3RlZCB5ZXQgb3IgdGhhdCBpcyBnb2luZwotICAgICAgICAgICAgIHRvIGdldCBjbG9zZWQuICovCisgICAgICAgIGlmKGNoZWNrLT5zb2NrW0ZJUlNUU09DS0VUXSA9PSBDVVJMX1NPQ0tFVF9CQUQpIHsKKyAgICAgICAgICBmb3VuZFBlbmRpbmdDYW5kaWRhdGUgPSBUUlVFOworICAgICAgICAgIC8qIERvbid0IHBpY2sgYSBjb25uZWN0aW9uIHRoYXQgaGFzbid0IGNvbm5lY3RlZCB5ZXQgKi8KICAgICAgICAgICBpbmZvZihkYXRhLCAiQ29ubmVjdGlvbiAjJWxkIGlzbid0IG9wZW4gZW5vdWdoLCBjYW4ndCByZXVzZVxuIiwKICAgICAgICAgICAgICAgICBjaGVjay0+Y29ubmVjdGlvbl9pZCk7CiAgICAgICAgICAgY29udGludWU7CkBAIC0xMTM5LDggKzExNzAsOSBAQAogICAgICAgICAgbmVlZGxlLT5iaXRzLnNvY2tzcHJveHkgIT0gY2hlY2stPmJpdHMuc29ja3Nwcm94eSkKICAgICAgICAgY29udGludWU7CiAKLSAgICAgIGlmKG5lZWRsZS0+Yml0cy5zb2Nrc3Byb3h5ICYmICFwcm94eV9pbmZvX21hdGNoZXMoJm5lZWRsZS0+c29ja3NfcHJveHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGVjay0+c29ja3NfcHJveHkpKQorICAgICAgaWYobmVlZGxlLT5iaXRzLnNvY2tzcHJveHkgJiYKKyAgICAgICAgIXNvY2tzX3Byb3h5X2luZm9fbWF0Y2hlcygmbmVlZGxlLT5zb2Nrc19wcm94eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hlY2stPnNvY2tzX3Byb3h5KSkKICAgICAgICAgY29udGludWU7CiAKICAgICAgIGlmKG5lZWRsZS0+Yml0cy5jb25uX3RvX2hvc3QgIT0gY2hlY2stPmJpdHMuY29ubl90b19ob3N0KQpAQCAtMTE4MCwxMyArMTIxMiwxNCBAQAogICAgICAgICB9CiAgICAgICB9CiAKKyAgICAgIERFQlVHQVNTRVJUKCFjaGVjay0+ZGF0YSB8fCBHT09EX0VBU1lfSEFORExFKGNoZWNrLT5kYXRhKSk7CisKICAgICAgIGlmKCFjYW5tdWx0aXBsZXggJiYgY2hlY2stPmRhdGEpCiAgICAgICAgIC8qIHRoaXMgcmVxdWVzdCBjYW4ndCBiZSBtdWx0aXBsZXhlZCBidXQgdGhlIGNoZWNrZWQgY29ubmVjdGlvbiBpcwogICAgICAgICAgICBhbHJlYWR5IGluIHVzZSBzbyB3ZSBza2lwIGl0ICovCiAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICBpZihDT05OX0lOVVNFKGNoZWNrKSAmJiBjaGVjay0+ZGF0YSAmJgotICAgICAgICAgKGNoZWNrLT5kYXRhLT5tdWx0aSAhPSBuZWVkbGUtPmRhdGEtPm11bHRpKSkKKyAgICAgIGlmKGNoZWNrLT5kYXRhICYmIChjaGVjay0+ZGF0YS0+bXVsdGkgIT0gbmVlZGxlLT5kYXRhLT5tdWx0aSkpCiAgICAgICAgIC8qIHRoaXMgY291bGQgYmUgc3ViamVjdCBmb3IgbXVsdGlwbGV4IHVzZSwgYnV0IG9ubHkgaWYgdGhleSBiZWxvbmcgdG8KICAgICAgICAgICogdGhlIHNhbWUgbXVsdGkgaGFuZGxlICovCiAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTIzNSw3ICsxMjY4LDcgQEAKICAgICAgICAgICAgICBuZWVkbGUtPmNvbm5fdG9fcG9ydCA9PSBjaGVjay0+Y29ubl90b19wb3J0KSAmJgogICAgICAgICAgICBzdHJjYXNlY29tcGFyZShuZWVkbGUtPmhvc3QubmFtZSwgY2hlY2stPmhvc3QubmFtZSkgJiYKICAgICAgICAgICAgbmVlZGxlLT5yZW1vdGVfcG9ydCA9PSBjaGVjay0+cmVtb3RlX3BvcnQpIHsKLSAgICAgICAgICAvKiBUaGUgc2NoZW1lcyBtYXRjaCBvciB0aGUgdGhlIHByb3RvY29sIGZhbWlseSBpcyB0aGUgc2FtZSBhbmQgdGhlCisgICAgICAgICAgLyogVGhlIHNjaGVtZXMgbWF0Y2ggb3IgdGhlIHByb3RvY29sIGZhbWlseSBpcyB0aGUgc2FtZSBhbmQgdGhlCiAgICAgICAgICAgICAgcHJldmlvdXMgY29ubmVjdGlvbiB3YXMgVExTIHVwZ3JhZGVkLCBhbmQgdGhlIGhvc3RuYW1lIGFuZCBob3N0CiAgICAgICAgICAgICAgcG9ydCBtYXRjaCAqLwogICAgICAgICAgIGlmKG5lZWRsZS0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX1NTTCkgewpAQCAtMTI3Niw4ICsxMzA5LDE0IEBACiAgICAgICAgICAgIHBhcnR3YXkgdGhyb3VnaCBhIGhhbmRzaGFrZSEpICovCiAgICAgICAgIGlmKHdhbnROVExNaHR0cCkgewogICAgICAgICAgIGlmKHN0cmNtcChuZWVkbGUtPnVzZXIsIGNoZWNrLT51c2VyKSB8fAotICAgICAgICAgICAgIHN0cmNtcChuZWVkbGUtPnBhc3N3ZCwgY2hlY2stPnBhc3N3ZCkpCisgICAgICAgICAgICAgc3RyY21wKG5lZWRsZS0+cGFzc3dkLCBjaGVjay0+cGFzc3dkKSkgeworCisgICAgICAgICAgICAvKiB3ZSBwcmVmZXIgYSBjcmVkZW50aWFsIG1hdGNoLCBidXQgdGhpcyBpcyBhdCBsZWFzdCBhIGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgIHRoYXQgY2FuIGJlIHJldXNlZCBhbmQgInVwZ3JhZGVkIiB0byBOVExNICovCisgICAgICAgICAgICBpZihjaGVjay0+aHR0cF9udGxtX3N0YXRlID09IE5UTE1TVEFURV9OT05FKQorICAgICAgICAgICAgICBjaG9zZW4gPSBjaGVjazsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmKGNoZWNrLT5odHRwX250bG1fc3RhdGUgIT0gTlRMTVNUQVRFX05PTkUpIHsKICAgICAgICAgICAvKiBDb25uZWN0aW9uIGlzIHVzaW5nIE5UTE0gYXV0aCBidXQgd2UgZG9uJ3Qgd2FudCBOVExNICovCkBAIC0xMzM3LDYgKzEzNzYsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGV4ZWQpOwogICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYobXVsdGlwbGV4ZWQgPj0KKyAgICAgICAgICAgICAgICAgICAgQ3VybF9tdWx0aV9tYXhfY29uY3VycmVudF9zdHJlYW1zKG5lZWRsZS0+ZGF0YS0+bXVsdGkpKSB7CisgICAgICAgICAgICAgIGluZm9mKGRhdGEsICJjbGllbnQgc2lkZSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TIHJlYWNoZWQiCisgICAgICAgICAgICAgICAgICAgICIsIHNraXAgKCV6dSlcbiIsCisgICAgICAgICAgICAgICAgICAgIG11bHRpcGxleGVkKTsKKyAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgLyogV2hlbiBub3QgbXVsdGlwbGV4ZWQsIHdlIGhhdmUgYSBtYXRjaCBoZXJlISAqLwpAQCAtMTM3MSw1OCArMTQxNyw2IEBACiAgIHJldHVybiBGQUxTRTsgLyogbm8gbWF0Y2hpbmcgY29ubmVjdGluZyBleGlzdHMgKi8KIH0KIAotLyogYWZ0ZXIgYSBUQ1AgY29ubmVjdGlvbiB0byB0aGUgcHJveHkgaGFzIGJlZW4gdmVyaWZpZWQsIHRoaXMgZnVuY3Rpb24gZG9lcwotICAgdGhlIG5leHQgbWFnaWMgc3RlcC4KLQotICAgTm90ZTogdGhpcyBmdW5jdGlvbidzIHN1Yi1mdW5jdGlvbnMgY2FsbCBmYWlsZigpCi0KLSovCi1DVVJMY29kZSBDdXJsX2Nvbm5lY3RlZF9wcm94eShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgpCi17Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotCi0gIGlmKGNvbm4tPmJpdHMuc29ja3Nwcm94eSkgewotI2lmbmRlZiBDVVJMX0RJU0FCTEVfUFJPWFkKLSAgICAvKiBmb3IgdGhlIHNlY29uZGFyeSBzb2NrZXQgKEZUUCksIHVzZSB0aGUgImNvbm5lY3QgdG8gaG9zdCIKLSAgICAgKiBidXQgaWdub3JlIHRoZSAiY29ubmVjdCB0byBwb3J0IiAodXNlIHRoZSBzZWNvbmRhcnkgcG9ydCkKLSAgICAgKi8KLSAgICBjb25zdCBjaGFyICogY29uc3QgaG9zdCA9IGNvbm4tPmJpdHMuaHR0cHByb3h5ID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmh0dHBfcHJveHkuaG9zdC5uYW1lIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmJpdHMuY29ubl90b19ob3N0ID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmNvbm5fdG9faG9zdC5uYW1lIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tpbmRleCA9PSBTRUNPTkRBUllTT0NLRVQgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+c2Vjb25kYXJ5aG9zdG5hbWUgOiBjb25uLT5ob3N0Lm5hbWU7Ci0gICAgY29uc3QgaW50IHBvcnQgPSBjb25uLT5iaXRzLmh0dHBwcm94eSA/IChpbnQpY29ubi0+aHR0cF9wcm94eS5wb3J0IDoKLSAgICAgICAgICAgICAgICAgICAgIHNvY2tpbmRleCA9PSBTRUNPTkRBUllTT0NLRVQgPyBjb25uLT5zZWNvbmRhcnlfcG9ydCA6Ci0gICAgICAgICAgICAgICAgICAgICBjb25uLT5iaXRzLmNvbm5fdG9fcG9ydCA/IGNvbm4tPmNvbm5fdG9fcG9ydCA6Ci0gICAgICAgICAgICAgICAgICAgICBjb25uLT5yZW1vdGVfcG9ydDsKLSAgICBjb25uLT5iaXRzLnNvY2tzcHJveHlfY29ubmVjdGluZyA9IFRSVUU7Ci0gICAgc3dpdGNoKGNvbm4tPnNvY2tzX3Byb3h5LnByb3h5dHlwZSkgewotICAgIGNhc2UgQ1VSTFBST1hZX1NPQ0tTNToKLSAgICBjYXNlIENVUkxQUk9YWV9TT0NLUzVfSE9TVE5BTUU6Ci0gICAgICByZXN1bHQgPSBDdXJsX1NPQ0tTNShjb25uLT5zb2Nrc19wcm94eS51c2VyLCBjb25uLT5zb2Nrc19wcm94eS5wYXNzd2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCwgcG9ydCwgc29ja2luZGV4LCBjb25uKTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDVVJMUFJPWFlfU09DS1M0OgotICAgIGNhc2UgQ1VSTFBST1hZX1NPQ0tTNEE6Ci0gICAgICByZXN1bHQgPSBDdXJsX1NPQ0tTNChjb25uLT5zb2Nrc19wcm94eS51c2VyLCBob3N0LCBwb3J0LCBzb2NraW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uKTsKLSAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICJ1bmtub3duIHByb3h5dHlwZSBvcHRpb24gZ2l2ZW4iKTsKLSAgICAgIHJlc3VsdCA9IENVUkxFX0NPVUxETlRfQ09OTkVDVDsKLSAgICB9IC8qIHN3aXRjaCBwcm94eXR5cGUgKi8KLSAgICBjb25uLT5iaXRzLnNvY2tzcHJveHlfY29ubmVjdGluZyA9IEZBTFNFOwotI2Vsc2UKLSAgKHZvaWQpc29ja2luZGV4OwotI2VuZGlmIC8qIENVUkxfRElTQUJMRV9QUk9YWSAqLwotICB9Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQogLyoKICAqIHZlcmJvc2Vjb25uZWN0KCkgZGlzcGxheXMgdmVyYm9zZSBpbmZvcm1hdGlvbiBhZnRlciBhIGNvbm5lY3QKICAqLwpAQCAtMTQzOSwxMzQgKzE0MzMsMTcgQEAKIH0KICNlbmRpZgogCi1pbnQgQ3VybF9wcm90b2NvbF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKLXsKLSAgaWYoY29ubi0+aGFuZGxlci0+cHJvdG9fZ2V0c29jaykKLSAgICByZXR1cm4gY29ubi0+aGFuZGxlci0+cHJvdG9fZ2V0c29jayhjb25uLCBzb2NrcywgbnVtc29ja3MpOwotICAvKiBCYWNrdXAgZ2V0c29jayBsb2dpYy4gU2luY2UgdGhlcmUgaXMgYSBsaXZlIHNvY2tldCBpbiB1c2UsIHdlIG11c3Qgd2FpdAotICAgICBmb3IgaXQgb3IgaXQgd2lsbCBiZSByZW1vdmVkIGZyb20gd2F0Y2hpbmcgd2hlbiB0aGUgbXVsdGlfc29ja2V0IEFQSSBpcwotICAgICB1c2VkLiAqLwotICBzb2Nrc1swXSA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOwotICByZXR1cm4gR0VUU09DS19SRUFEU09DSygwKSB8IEdFVFNPQ0tfV1JJVEVTT0NLKDApOwotfQotCi1pbnQgQ3VybF9kb2luZ19nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2NrcykKLXsKLSAgaWYoY29ubiAmJiBjb25uLT5oYW5kbGVyLT5kb2luZ19nZXRzb2NrKQotICAgIHJldHVybiBjb25uLT5oYW5kbGVyLT5kb2luZ19nZXRzb2NrKGNvbm4sIHNvY2tzLCBudW1zb2Nrcyk7Ci0gIHJldHVybiBHRVRTT0NLX0JMQU5LOwotfQotCi0vKgotICogV2UgYXJlIGRvaW5nIHByb3RvY29sLXNwZWNpZmljIGNvbm5lY3RpbmcgYW5kIHRoaXMgaXMgYmVpbmcgY2FsbGVkIG92ZXIgYW5kCi0gKiBvdmVyIGZyb20gdGhlIG11bHRpIGludGVyZmFjZSB1bnRpbCB0aGUgY29ubmVjdGlvbiBwaGFzZSBpcyBkb25lIG9uCi0gKiBwcm90b2NvbCBsYXllci4KLSAqLwotCi1DVVJMY29kZSBDdXJsX3Byb3RvY29sX2Nvbm5lY3Rpbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvbmUpCi17Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotCi0gIGlmKGNvbm4gJiYgY29ubi0+aGFuZGxlci0+Y29ubmVjdGluZykgewotICAgICpkb25lID0gRkFMU0U7Ci0gICAgcmVzdWx0ID0gY29ubi0+aGFuZGxlci0+Y29ubmVjdGluZyhjb25uLCBkb25lKTsKLSAgfQotICBlbHNlCi0gICAgKmRvbmUgPSBUUlVFOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qCi0gKiBXZSBhcmUgRE9JTkcgdGhpcyBpcyBiZWluZyBjYWxsZWQgb3ZlciBhbmQgb3ZlciBmcm9tIHRoZSBtdWx0aSBpbnRlcmZhY2UKLSAqIHVudGlsIHRoZSBET0lORyBwaGFzZSBpcyBkb25lIG9uIHByb3RvY29sIGxheWVyLgotICovCi0KLUNVUkxjb2RlIEN1cmxfcHJvdG9jb2xfZG9pbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLQotICBpZihjb25uICYmIGNvbm4tPmhhbmRsZXItPmRvaW5nKSB7Ci0gICAgKmRvbmUgPSBGQUxTRTsKLSAgICByZXN1bHQgPSBjb25uLT5oYW5kbGVyLT5kb2luZyhjb25uLCBkb25lKTsKLSAgfQotICBlbHNlCi0gICAgKmRvbmUgPSBUUlVFOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qCi0gKiBXZSBoYXZlIGRpc2NvdmVyZWQgdGhhdCB0aGUgVENQIGNvbm5lY3Rpb24gaGFzIGJlZW4gc3VjY2Vzc2Z1bCwgd2UgY2FuIG5vdwotICogcHJvY2VlZCB3aXRoIHNvbWUgYWN0aW9uLgotICoKLSAqLwotQ1VSTGNvZGUgQ3VybF9wcm90b2NvbF9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpwcm90b2NvbF9kb25lKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLQotICAqcHJvdG9jb2xfZG9uZSA9IEZBTFNFOwotCi0gIGlmKGNvbm4tPmJpdHMudGNwY29ubmVjdFtGSVJTVFNPQ0tFVF0gJiYgY29ubi0+Yml0cy5wcm90b2Nvbm5zdGFydCkgewotICAgIC8qIFdlIGFscmVhZHkgYXJlIGNvbm5lY3RlZCwgZ2V0IGJhY2suIFRoaXMgbWF5IGhhcHBlbiB3aGVuIHRoZSBjb25uZWN0Ci0gICAgICAgd29ya2VkIGZpbmUgaW4gdGhlIGZpcnN0IGNhbGwsIGxpa2Ugd2hlbiB3ZSBjb25uZWN0IHRvIGEgbG9jYWwgc2VydmVyCi0gICAgICAgb3IgcHJveHkuIE5vdGUgdGhhdCB3ZSBkb24ndCBrbm93IGlmIHRoZSBwcm90b2NvbCBpcyBhY3R1YWxseSBkb25lLgotCi0gICAgICAgVW5sZXNzIHRoaXMgcHJvdG9jb2wgZG9lc24ndCBoYXZlIGFueSBwcm90b2NvbC1jb25uZWN0IGNhbGxiYWNrLCBhcwotICAgICAgIHRoZW4gd2Uga25vdyB3ZSdyZSBkb25lLiAqLwotICAgIGlmKCFjb25uLT5oYW5kbGVyLT5jb25uZWN0aW5nKQotICAgICAgKnByb3RvY29sX2RvbmUgPSBUUlVFOwotCi0gICAgcmV0dXJuIENVUkxFX09LOwotICB9Ci0KLSAgaWYoIWNvbm4tPmJpdHMucHJvdG9jb25uc3RhcnQpIHsKLQotICAgIHJlc3VsdCA9IEN1cmxfcHJveHlfY29ubmVjdChjb25uLCBGSVJTVFNPQ0tFVCk7Ci0gICAgaWYocmVzdWx0KQotICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIGlmKENPTk5FQ1RfRklSU1RTT0NLRVRfUFJPWFlfU1NMKCkpCi0gICAgICAvKiB3YWl0IGZvciBIVFRQUyBwcm94eSBTU0wgaW5pdGlhbGl6YXRpb24gdG8gY29tcGxldGUgKi8KLSAgICAgIHJldHVybiBDVVJMRV9PSzsKLQotICAgIGlmKGNvbm4tPmJpdHMudHVubmVsX3Byb3h5ICYmIGNvbm4tPmJpdHMuaHR0cHByb3h5ICYmCi0gICAgICAgQ3VybF9jb25uZWN0X29uZ29pbmcoY29ubikpCi0gICAgICAvKiB3aGVuIHVzaW5nIGFuIEhUVFAgdHVubmVsIHByb3h5LCBhd2FpdCBjb21wbGV0ZSB0dW5uZWwgZXN0YWJsaXNobWVudAotICAgICAgICAgYmVmb3JlIHByb2NlZWRpbmcgZnVydGhlci4gUmV0dXJuIENVUkxFX09LIHNvIHdlJ2xsIGJlIGNhbGxlZCBhZ2FpbiAqLwotICAgICAgcmV0dXJuIENVUkxFX09LOwotCi0gICAgaWYoY29ubi0+aGFuZGxlci0+Y29ubmVjdF9pdCkgewotICAgICAgLyogaXMgdGhlcmUgYSBwcm90b2NvbC1zcGVjaWZpYyBjb25uZWN0KCkgcHJvY2VkdXJlPyAqLwotCi0gICAgICAvKiBDYWxsIHRoZSBwcm90b2NvbC1zcGVjaWZpYyBjb25uZWN0IGZ1bmN0aW9uICovCi0gICAgICByZXN1bHQgPSBjb25uLT5oYW5kbGVyLT5jb25uZWN0X2l0KGNvbm4sIHByb3RvY29sX2RvbmUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAqcHJvdG9jb2xfZG9uZSA9IFRSVUU7Ci0KLSAgICAvKiBpdCBoYXMgc3RhcnRlZCwgcG9zc2libHkgZXZlbiBjb21wbGV0ZWQgYnV0IHRoYXQga25vd2xlZGdlIGlzbid0IHN0b3JlZAotICAgICAgIGluIHRoaXMgYml0ISAqLwotICAgIGlmKCFyZXN1bHQpCi0gICAgICBjb25uLT5iaXRzLnByb3RvY29ubnN0YXJ0ID0gVFJVRTsKLSAgfQotCi0gIHJldHVybiByZXN1bHQ7IC8qIHBhc3MgYmFjayBzdGF0dXMgKi8KLX0KLQogLyoKICAqIEhlbHBlcnMgZm9yIElETkEgY29udmVyc2lvbnMuCiAgKi8KLXN0YXRpYyBib29sIGlzX0FTQ0lJX25hbWUoY29uc3QgY2hhciAqaG9zdG5hbWUpCitib29sIEN1cmxfaXNfQVNDSUlfbmFtZShjb25zdCBjaGFyICpob3N0bmFtZSkKIHsKKyAgLyogZ2V0IGFuIFVOU0lHTkVEIGxvY2FsIHZlcnNpb24gb2YgdGhlIHBvaW50ZXIgKi8KICAgY29uc3QgdW5zaWduZWQgY2hhciAqY2ggPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKWhvc3RuYW1lOwogCisgIGlmKCFob3N0bmFtZSkgLyogYmFkIGlucHV0LCBjb25zaWRlciBpdCBBU0NJSSEgKi8KKyAgICByZXR1cm4gVFJVRTsKKwogICB3aGlsZSgqY2gpIHsKICAgICBpZigqY2grKyAmIDB4ODApCiAgICAgICByZXR1cm4gRkFMU0U7CkBAIC0xNTkxLDggKzE0NjgsOCBAQAogLyoKICAqIFBlcmZvcm0gYW55IG5lY2Vzc2FyeSBJRE4gY29udmVyc2lvbiBvZiBob3N0bmFtZQogICovCi1zdGF0aWMgQ1VSTGNvZGUgaWRuY29udmVydF9ob3N0bmFtZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaG9zdG5hbWUgKmhvc3QpCitDVVJMY29kZSBDdXJsX2lkbmNvbnZlcnRfaG9zdG5hbWUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBob3N0bmFtZSAqaG9zdCkKIHsKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAKQEAgLTE2MDcsNyArMTQ4NCw3IEBACiAgIGhvc3QtPmRpc3BuYW1lID0gaG9zdC0+bmFtZTsKIAogICAvKiBDaGVjayBuYW1lIGZvciBub24tQVNDSUkgYW5kIGNvbnZlcnQgaG9zdG5hbWUgdG8gQUNFIGZvcm0gaWYgd2UgY2FuICovCi0gIGlmKCFpc19BU0NJSV9uYW1lKGhvc3QtPm5hbWUpKSB7CisgIGlmKCFDdXJsX2lzX0FTQ0lJX25hbWUoaG9zdC0+bmFtZSkpIHsKICNpZmRlZiBVU0VfTElCSUROMgogICAgIGlmKGlkbjJfY2hlY2tfdmVyc2lvbihJRE4yX1ZFUlNJT04pKSB7CiAgICAgICBjaGFyICphY2VfaG9zdG5hbWUgPSBOVUxMOwpAQCAtMTY0MCw3ICsxNTE3LDkgQEAKICAgICAgIGhvc3QtPm5hbWUgPSBob3N0LT5lbmNhbGxvYzsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHRvIGNvbnZlcnQgJXMgdG8gQUNFO1xuIiwgaG9zdC0+bmFtZSk7CisgICAgICBjaGFyIGJ1ZmZlcltTVFJFUlJPUl9MRU5dOworICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCB0byBjb252ZXJ0ICVzIHRvIEFDRTsgJXNcbiIsIGhvc3QtPm5hbWUsCisgICAgICAgICAgICBDdXJsX3dpbmFwaV9zdHJlcnJvcihHZXRMYXN0RXJyb3IoKSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOwogICAgICAgcmV0dXJuIENVUkxFX1VSTF9NQUxGT1JNQVQ7CiAgICAgfQogI2Vsc2UKQEAgLTE2NTMsNyArMTUzMiw3IEBACiAvKgogICogRnJlZXMgZGF0YSBhbGxvY2F0ZWQgYnkgaWRuY29udmVydF9ob3N0bmFtZSgpCiAgKi8KLXN0YXRpYyB2b2lkIGZyZWVfaWRuY29udmVydGVkX2hvc3RuYW1lKHN0cnVjdCBob3N0bmFtZSAqaG9zdCkKK3ZvaWQgQ3VybF9mcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZShzdHJ1Y3QgaG9zdG5hbWUgKmhvc3QpCiB7CiAjaWYgZGVmaW5lZChVU0VfTElCSUROMikKICAgaWYoaG9zdC0+ZW5jYWxsb2MpIHsKQEAgLTE2NzAsMTMgKzE1NDksNiBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIGxsaXN0X2R0b3Iodm9pZCAqdXNlciwgdm9pZCAqZWxlbWVudCkKLXsKLSAgKHZvaWQpdXNlcjsKLSAgKHZvaWQpZWxlbWVudDsKLSAgLyogRG8gbm90aGluZyAqLwotfQotCiAvKgogICogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYSBuZXcgY29ubmVjdGRhdGEgb2JqZWN0LgogICovCkBAIC0xNzgxLDE0ICsxNjUzLDE2IEBACiAgIGNvbm4tPnByb3h5X3NzbF9jb25maWcudmVyaWZ5aG9zdCA9IGRhdGEtPnNldC5wcm94eV9zc2wucHJpbWFyeS52ZXJpZnlob3N0OwogICBjb25uLT5pcF92ZXJzaW9uID0gZGF0YS0+c2V0LmlwdmVyOwogICBjb25uLT5iaXRzLmNvbm5lY3Rfb25seSA9IGRhdGEtPnNldC5jb25uZWN0X29ubHk7CisgIGNvbm4tPnRyYW5zcG9ydCA9IFRSTlNQUlRfVENQOyAvKiBtb3N0IG9mIHRoZW0gYXJlIFRDUCBzdHJlYW1zICovCiAKICNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfSFRUUCkgJiYgZGVmaW5lZChVU0VfTlRMTSkgJiYgXAogICAgIGRlZmluZWQoTlRMTV9XQl9FTkFCTEVEKQotICBjb25uLT5udGxtX2F1dGhfaGxwcl9zb2NrZXQgPSBDVVJMX1NPQ0tFVF9CQUQ7CisgIGNvbm4tPm50bG0ubnRsbV9hdXRoX2hscHJfc29ja2V0ID0gQ1VSTF9TT0NLRVRfQkFEOworICBjb25uLT5wcm94eW50bG0ubnRsbV9hdXRoX2hscHJfc29ja2V0ID0gQ1VSTF9TT0NLRVRfQkFEOwogI2VuZGlmCiAKICAgLyogSW5pdGlhbGl6ZSB0aGUgZWFzeSBoYW5kbGUgbGlzdCAqLwotICBDdXJsX2xsaXN0X2luaXQoJmNvbm4tPmVhc3lxLCAoY3VybF9sbGlzdF9kdG9yKSBsbGlzdF9kdG9yKTsKKyAgQ3VybF9sbGlzdF9pbml0KCZjb25uLT5lYXN5cSwgTlVMTCk7CiAKICNpZmRlZiBIQVZFX0dTU0FQSQogICBjb25uLT5kYXRhX3Byb3QgPSBQUk9UX0NMRUFSOwpAQCAtMTgwNyw2ICsxNjgxLDcgQEAKICAgICAgaXQgbWF5IGxpdmUgb24gd2l0aG91dCAodGhpcyBzcGVjaWZpYykgQ3VybF9lYXN5ICovCiAgIGNvbm4tPmZjbG9zZXNvY2tldCA9IGRhdGEtPnNldC5mY2xvc2Vzb2NrZXQ7CiAgIGNvbm4tPmNsb3Nlc29ja2V0X2NsaWVudCA9IGRhdGEtPnNldC5jbG9zZXNvY2tldF9jbGllbnQ7CisgIGNvbm4tPmxhc3R1c2VkID0gQ3VybF9ub3coKTsgLyogdXNlZCBub3cgKi8KIAogICByZXR1cm4gY29ubjsKICAgZXJyb3I6CkBAIC0xODg0LDYgKzE3NTksNTAgQEAKIH0KIAogLyoKKyAqIElmIHRoZSBVUkwgd2FzIHNldCB3aXRoIGFuIElQdjYgbnVtZXJpY2FsIGFkZHJlc3Mgd2l0aCBhIHpvbmUgaWQgcGFydCwgc2V0CisgKiB0aGUgc2NvcGVfaWQgYmFzZWQgb24gdGhhdCEKKyAqLworCitzdGF0aWMgdm9pZCB6b25lZnJvbV91cmwoQ1VSTFUgKnVoLCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCit7CisgIGNoYXIgKnpvbmVpZDsKKyAgQ1VSTFVjb2RlIHVjOworCisgIHVjID0gY3VybF91cmxfZ2V0KHVoLCBDVVJMVVBBUlRfWk9ORUlELCAmem9uZWlkLCAwKTsKKworICBpZighdWMgJiYgem9uZWlkKSB7CisgICAgY2hhciAqZW5kcDsKKyAgICB1bnNpZ25lZCBsb25nIHNjb3BlID0gc3RydG91bCh6b25laWQsICZlbmRwLCAxMCk7CisgICAgaWYoISplbmRwICYmIChzY29wZSA8IFVJTlRfTUFYKSkKKyAgICAgIC8qIEEgcGxhaW4gbnVtYmVyLCB1c2UgaXQgZGlyZWN0bHkgYXMgYSBzY29wZSBpZC4gKi8KKyAgICAgIGNvbm4tPnNjb3BlX2lkID0gKHVuc2lnbmVkIGludClzY29wZTsKKyNpZiBkZWZpbmVkKEhBVkVfSUZfTkFNRVRPSU5ERVgpCisgICAgZWxzZSB7CisjZWxpZiBkZWZpbmVkKFdJTjMyKQorICAgIGVsc2UgaWYoQ3VybF9pZl9uYW1ldG9pbmRleCkgeworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfSUZfTkFNRVRPSU5ERVgpIHx8IGRlZmluZWQoV0lOMzIpCisgICAgICAvKiBab25lIGlkZW50aWZpZXIgaXMgbm90IG51bWVyaWMgKi8KKyAgICAgIHVuc2lnbmVkIGludCBzY29wZWlkeCA9IDA7CisjaWYgZGVmaW5lZChXSU4zMikKKyAgICAgIHNjb3BlaWR4ID0gQ3VybF9pZl9uYW1ldG9pbmRleCh6b25laWQpOworI2Vsc2UKKyAgICAgIHNjb3BlaWR4ID0gaWZfbmFtZXRvaW5kZXgoem9uZWlkKTsKKyNlbmRpZgorICAgICAgaWYoIXNjb3BlaWR4KQorICAgICAgICBpbmZvZihjb25uLT5kYXRhLCAiSW52YWxpZCB6b25laWQ6ICVzOyAlc1xuIiwgem9uZWlkLAorICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworICAgICAgZWxzZQorICAgICAgICBjb25uLT5zY29wZV9pZCA9IHNjb3BlaWR4OworICAgIH0KKyNlbmRpZiAvKiBIQVZFX0lGX05BTUVUT0lOREVYIHx8IFdJTjMyICovCisKKyAgICBmcmVlKHpvbmVpZCk7CisgIH0KK30KKworLyoKICAqIFBhcnNlIFVSTCBhbmQgZmlsbCBpbiB0aGUgcmVsZXZhbnQgbWVtYmVycyBvZiB0aGUgY29ubmVjdGlvbiBzdHJ1Y3QuCiAgKi8KIHN0YXRpYyBDVVJMY29kZSBwYXJzZXVybGFuZGZpbGxjb25uKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCkBAIC0xOTIxLDYgKzE4NDAsNyBAQAogICB9CiAKICAgaWYoIWRhdGEtPnNldC51aCkgeworICAgIGNoYXIgKm5ld3VybDsKICAgICB1YyA9IGN1cmxfdXJsX3NldCh1aCwgQ1VSTFVQQVJUX1VSTCwgZGF0YS0+Y2hhbmdlLnVybCwKICAgICAgICAgICAgICAgICAgICAgQ1VSTFVfR1VFU1NfU0NIRU1FIHwKICAgICAgICAgICAgICAgICAgICAgQ1VSTFVfTk9OX1NVUFBPUlRfU0NIRU1FIHwKQEAgLTE5MzEsNiArMTg1MSwxNSBAQAogICAgICAgREVCVUdGKGluZm9mKGRhdGEsICJjdXJsX3VybF9zZXQgcmVqZWN0ZWQgJXNcbiIsIGRhdGEtPmNoYW5nZS51cmwpKTsKICAgICAgIHJldHVybiBDdXJsX3VjX3RvX2N1cmxjb2RlKHVjKTsKICAgICB9CisKKyAgICAvKiBhZnRlciBpdCB3YXMgcGFyc2VkLCBnZXQgdGhlIGdlbmVyYXRlZCBub3JtYWxpemVkIHZlcnNpb24gKi8KKyAgICB1YyA9IGN1cmxfdXJsX2dldCh1aCwgQ1VSTFVQQVJUX1VSTCwgJm5ld3VybCwgMCk7CisgICAgaWYodWMpCisgICAgICByZXR1cm4gQ3VybF91Y190b19jdXJsY29kZSh1Yyk7CisgICAgaWYoZGF0YS0+Y2hhbmdlLnVybF9hbGxvYykKKyAgICAgIGZyZWUoZGF0YS0+Y2hhbmdlLnVybCk7CisgICAgZGF0YS0+Y2hhbmdlLnVybCA9IG5ld3VybDsKKyAgICBkYXRhLT5jaGFuZ2UudXJsX2FsbG9jID0gVFJVRTsKICAgfQogCiAgIHVjID0gY3VybF91cmxfZ2V0KHVoLCBDVVJMVVBBUlRfU0NIRU1FLCAmZGF0YS0+c3RhdGUudXAuc2NoZW1lLCAwKTsKQEAgLTE5OTEsNTUgKzE5MjAsMjcgQEAKICAgfQogICBlbHNlIHsKICAgICB1bnNpZ25lZCBsb25nIHBvcnQgPSBzdHJ0b3VsKGRhdGEtPnN0YXRlLnVwLnBvcnQsIE5VTEwsIDEwKTsKLSAgICBjb25uLT5yZW1vdGVfcG9ydCA9IGN1cmx4X3VsdG91cyhwb3J0KTsKKyAgICBjb25uLT5wb3J0ID0gY29ubi0+cmVtb3RlX3BvcnQgPSBjdXJseF91bHRvdXMocG9ydCk7CiAgIH0KIAogICAodm9pZCljdXJsX3VybF9nZXQodWgsIENVUkxVUEFSVF9RVUVSWSwgJmRhdGEtPnN0YXRlLnVwLnF1ZXJ5LCAwKTsKIAogICBob3N0bmFtZSA9IGRhdGEtPnN0YXRlLnVwLmhvc3RuYW1lOwotICBpZighaG9zdG5hbWUpCi0gICAgLyogdGhpcyBpcyBmb3IgZmlsZTovLyB0cmFuc2ZlcnMsIGdldCBhIGR1bW15IG1hZGUgKi8KLSAgICBob3N0bmFtZSA9IChjaGFyICopIiI7Ci0KLSAgaWYoaG9zdG5hbWVbMF0gPT0gJ1snKSB7CisgIGlmKGhvc3RuYW1lICYmIGhvc3RuYW1lWzBdID09ICdbJykgewogICAgIC8qIFRoaXMgbG9va3MgbGlrZSBhbiBJUHY2IGFkZHJlc3MgbGl0ZXJhbC4gU2VlIGlmIHRoZXJlIGlzIGFuIGFkZHJlc3MKICAgICAgICBzY29wZS4gKi8KLSAgICBjaGFyICp6b25laWQ7CiAgICAgc2l6ZV90IGhsZW47Ci0gICAgdWMgPSBjdXJsX3VybF9nZXQodWgsIENVUkxVUEFSVF9aT05FSUQsICZ6b25laWQsIDApOwogICAgIGNvbm4tPmJpdHMuaXB2Nl9pcCA9IFRSVUU7Ci0KICAgICAvKiBjdXQgb2ZmIHRoZSBicmFja2V0cyEgKi8KICAgICBob3N0bmFtZSsrOwogICAgIGhsZW4gPSBzdHJsZW4oaG9zdG5hbWUpOwogICAgIGhvc3RuYW1lW2hsZW4gLSAxXSA9IDA7Ci0gICAgaWYoIXVjICYmIHpvbmVpZCkgewotICAgICAgY2hhciAqZW5kcDsKLSAgICAgIHVuc2lnbmVkIGxvbmcgc2NvcGU7Ci0gICAgICBzY29wZSA9IHN0cnRvdWwoem9uZWlkLCAmZW5kcCwgMTApOwotICAgICAgaWYoISplbmRwICYmIChzY29wZSA8IFVJTlRfTUFYKSkgewotICAgICAgICAvKiBBIHBsYWluIG51bWJlciwgdXNlIGl0IGRpcmVjbHkgYXMgYSBzY29wZSBpZC4gKi8KLSAgICAgICAgY29ubi0+c2NvcGVfaWQgPSAodW5zaWduZWQgaW50KXNjb3BlOwotICAgICAgfQotI2lmZGVmIEhBVkVfSUZfTkFNRVRPSU5ERVgKLSAgICAgIGVsc2UgewotICAgICAgICAvKiBab25lIGlkZW50aWZpZXIgaXMgbm90IG51bWVyaWMgKi8KLSAgICAgICAgdW5zaWduZWQgaW50IHNjb3BlaWR4ID0gMDsKLSAgICAgICAgc2NvcGVpZHggPSBpZl9uYW1ldG9pbmRleCh6b25laWQpOwotICAgICAgICBpZighc2NvcGVpZHgpCi0gICAgICAgICAgaW5mb2YoZGF0YSwgIkludmFsaWQgem9uZWlkIGlkOiAlczsgJXNcbiIsIHpvbmVpZCwKLSAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgY29ubi0+c2NvcGVfaWQgPSBzY29wZWlkeDsKIAotICAgICAgfQotI2VuZGlmIC8qIEhBVkVfSUZfTkFNRVRPSU5ERVggKi8KLSAgICAgIGZyZWUoem9uZWlkKTsKLSAgICB9CisgICAgem9uZWZyb21fdXJsKHVoLCBjb25uKTsKICAgfQogCiAgIC8qIG1ha2Ugc3VyZSB0aGUgY29ubmVjdCBzdHJ1Y3QgZ2V0cyBpdHMgb3duIGNvcHkgb2YgdGhlIGhvc3QgbmFtZSAqLwotICBjb25uLT5ob3N0LnJhd2FsbG9jID0gc3RyZHVwKGhvc3RuYW1lKTsKKyAgY29ubi0+aG9zdC5yYXdhbGxvYyA9IHN0cmR1cChob3N0bmFtZSA/IGhvc3RuYW1lIDogIiIpOwogICBpZighY29ubi0+aG9zdC5yYXdhbGxvYykKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgY29ubi0+aG9zdC5uYW1lID0gY29ubi0+aG9zdC5yYXdhbGxvYzsKQEAgLTIwOTcsNyArMTk5OCw2IEBACiB7CiAgIGNvbnN0IHN0cnVjdCBDdXJsX2hhbmRsZXIgKiBwOwogICBDVVJMY29kZSByZXN1bHQ7Ci0gIGNvbm4tPnNvY2t0eXBlID0gU09DS19TVFJFQU07IC8qIG1vc3Qgb2YgdGhlbSBhcmUgVENQIHN0cmVhbXMgKi8KIAogICAvKiBQZXJmb3JtIHNldHVwIGNvbXBsZW1lbnQgaWYgc29tZS4gKi8KICAgcCA9IGNvbm4tPmhhbmRsZXI7CkBAIC0yMTI4LDYgKzIwMjgsMTEgQEAKIHsKICAgQ3VybF9zYWZlZnJlZShkYXRhLT5yZXEucHJvdG9wKTsKICAgQ3VybF9zYWZlZnJlZShkYXRhLT5yZXEubmV3dXJsKTsKKworI2lmbmRlZiBDVVJMX0RJU0FCTEVfRE9ICisgIEN1cmxfY2xvc2UoJmRhdGEtPnJlcS5kb2gucHJvYmVbMF0uZWFzeSk7CisgIEN1cmxfY2xvc2UoJmRhdGEtPnJlcS5kb2gucHJvYmVbMV0uZWFzeSk7CisjZW5kaWYKIH0KIAogCkBAIC0yMjk4LDcgKzIyMDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY2hhciAqcHJveHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9wcm94eXR5cGUgcHJveHl0eXBlKQogewotICBjaGFyICpwb3J0cHRyOworICBjaGFyICpwb3J0cHRyID0gTlVMTDsKICAgbG9uZyBwb3J0ID0gLTE7CiAgIGNoYXIgKnByb3h5dXNlciA9IE5VTEw7CiAgIGNoYXIgKnByb3h5cGFzc3dkID0gTlVMTDsKQEAgLTI0MjIsNiArMjMyNyw3IEBACiAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihob3N0KTsKICAgICBob3N0W2xlbi0xXSA9IDA7IC8qIGNsZWFyIHRoZSB0cmFpbGluZyBicmFja2V0ICovCiAgICAgaG9zdCsrOworICAgIHpvbmVmcm9tX3VybCh1aHAsIGNvbm4pOwogICB9CiAgIHByb3h5aW5mby0+aG9zdC5uYW1lID0gaG9zdDsKIApAQCAtMjg0Niw4ICsyNzUyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ldHJjX3VzZXJfY2hhbmdlZCwgJm5ldHJjX3Bhc3N3ZF9jaGFuZ2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19ORVRSQ19GSUxFXSk7CiAgICAgaWYocmV0ID4gMCkgewotICAgICAgaW5mb2YoZGF0YSwgIkNvdWxkbid0IGZpbmQgaG9zdCAlcyBpbiB0aGUgIgotICAgICAgICAgICAgRE9UX0NIQVIgIm5ldHJjIGZpbGU7IHVzaW5nIGRlZmF1bHRzXG4iLAorICAgICAgaW5mb2YoZGF0YSwgIkNvdWxkbid0IGZpbmQgaG9zdCAlcyBpbiB0aGUgLm5ldHJjIGZpbGU7IHVzaW5nIGRlZmF1bHRzXG4iLAogICAgICAgICAgICAgY29ubi0+aG9zdC5uYW1lKTsKICAgICB9CiAgICAgZWxzZSBpZihyZXQgPCAwKSB7CkBAIC0yOTEzLDEzICsyODE4LDYgQEAKICAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CiAgIH0KIAotICAvKiBpZiB0aGVyZSdzIGEgdXNlciB3aXRob3V0IHBhc3N3b3JkLCBjb25zaWRlciBwYXNzd29yZCBibGFuayAqLwotICBpZihjb25uLT51c2VyICYmICFjb25uLT5wYXNzd2QpIHsKLSAgICBjb25uLT5wYXNzd2QgPSBzdHJkdXAoIiIpOwotICAgIGlmKCFjb25uLT5wYXNzd2QpCi0gICAgICByZXN1bHQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzE0NCwyNiArMzA0Miw2NSBAQAogICBpZihkYXRhLT5hc2kgJiYgIWhvc3QgJiYgKHBvcnQgPT0gLTEpICYmCiAgICAgIChjb25uLT5oYW5kbGVyLT5wcm90b2NvbCA9PSBDVVJMUFJPVE9fSFRUUFMpKSB7CiAgICAgLyogbm8gY29ubmVjdF90byBtYXRjaCwgdHJ5IGFsdC1zdmMhICovCi0gICAgY29uc3QgY2hhciAqbmhvc3Q7Ci0gICAgaW50IG5wb3J0OwotICAgIGVudW0gYWxwbmlkIG5hbHBuaWQ7CisgICAgZW51bSBhbHBuaWQgc3JjYWxwbmlkOwogICAgIGJvb2wgaGl0OworICAgIHN0cnVjdCBhbHRzdmMgKmFzOworICAgIGNvbnN0IGludCBhbGxvd2VkX3ZlcnNpb25zID0gKCBBTFBOX2gxCisjaWZkZWYgVVNFX05HSFRUUDIKKyAgICAgIHwgQUxQTl9oMgorI2VuZGlmCisjaWZkZWYgRU5BQkxFX1FVSUMKKyAgICAgIHwgQUxQTl9oMworI2VuZGlmCisgICAgICApICYgZGF0YS0+YXNpLT5mbGFnczsKKwogICAgIGhvc3QgPSBjb25uLT5ob3N0LnJhd2FsbG9jOworI2lmZGVmIFVTRV9OR0hUVFAyCisgICAgLyogd2l0aCBoMiBzdXBwb3J0LCBjaGVjayB0aGF0IGZpcnN0ICovCisgICAgc3JjYWxwbmlkID0gQUxQTl9oMjsKICAgICBoaXQgPSBDdXJsX2FsdHN2Y19sb29rdXAoZGF0YS0+YXNpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTFBOX2gxLCBob3N0LCBjb25uLT5yZW1vdGVfcG9ydCwgLyogZnJvbSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFscG5pZCwgJm5ob3N0LCAmbnBvcnQgLyogdG8gKi8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNhbHBuaWQsIGhvc3QsIGNvbm4tPnJlbW90ZV9wb3J0LCAvKiBmcm9tICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcyAvKiB0byAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZF92ZXJzaW9ucyk7CisgICAgaWYoIWhpdCkKKyNlbmRpZgorICAgIHsKKyAgICAgIHNyY2FscG5pZCA9IEFMUE5faDE7CisgICAgICBoaXQgPSBDdXJsX2FsdHN2Y19sb29rdXAoZGF0YS0+YXNpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2FscG5pZCwgaG9zdCwgY29ubi0+cmVtb3RlX3BvcnQsIC8qIGZyb20gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXMgLyogdG8gKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZF92ZXJzaW9ucyk7CisgICAgfQogICAgIGlmKGhpdCkgewotICAgICAgY2hhciAqaG9zdGQgPSBzdHJkdXAoKGNoYXIgKiluaG9zdCk7CisgICAgICBjaGFyICpob3N0ZCA9IHN0cmR1cCgoY2hhciAqKWFzLT5kc3QuaG9zdCk7CiAgICAgICBpZighaG9zdGQpCiAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICAgICAgY29ubi0+Y29ubl90b19ob3N0LnJhd2FsbG9jID0gaG9zdGQ7CiAgICAgICBjb25uLT5jb25uX3RvX2hvc3QubmFtZSA9IGhvc3RkOwogICAgICAgY29ubi0+Yml0cy5jb25uX3RvX2hvc3QgPSBUUlVFOwotICAgICAgY29ubi0+Y29ubl90b19wb3J0ID0gbnBvcnQ7CisgICAgICBjb25uLT5jb25uX3RvX3BvcnQgPSBhcy0+ZHN0LnBvcnQ7CiAgICAgICBjb25uLT5iaXRzLmNvbm5fdG9fcG9ydCA9IFRSVUU7CisgICAgICBjb25uLT5iaXRzLmFsdHVzZWQgPSBUUlVFOwogICAgICAgaW5mb2YoZGF0YSwgIkFsdC1zdmMgY29ubmVjdGluZyBmcm9tIFslc10lczolZCB0byBbJXNdJXM6JWRcbiIsCi0gICAgICAgICAgICBDdXJsX2FscG5pZDJzdHIoQUxQTl9oMSksIGhvc3QsIGNvbm4tPnJlbW90ZV9wb3J0LAotICAgICAgICAgICAgQ3VybF9hbHBuaWQyc3RyKG5hbHBuaWQpLCBob3N0ZCwgbnBvcnQpOworICAgICAgICAgICAgQ3VybF9hbHBuaWQyc3RyKHNyY2FscG5pZCksIGhvc3QsIGNvbm4tPnJlbW90ZV9wb3J0LAorICAgICAgICAgICAgQ3VybF9hbHBuaWQyc3RyKGFzLT5kc3QuYWxwbmlkKSwgaG9zdGQsIGFzLT5kc3QucG9ydCk7CisgICAgICBpZihzcmNhbHBuaWQgIT0gYXMtPmRzdC5hbHBuaWQpIHsKKyAgICAgICAgLyogcHJvdG9jb2wgdmVyc2lvbiBzd2l0Y2ggKi8KKyAgICAgICAgc3dpdGNoKGFzLT5kc3QuYWxwbmlkKSB7CisgICAgICAgIGNhc2UgQUxQTl9oMToKKyAgICAgICAgICBjb25uLT5odHRwdmVyc2lvbiA9IDExOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFMUE5faDI6CisgICAgICAgICAgY29ubi0+aHR0cHZlcnNpb24gPSAyMDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBTFBOX2gzOgorICAgICAgICAgIGNvbm4tPnRyYW5zcG9ydCA9IFRSTlNQUlRfUVVJQzsKKyAgICAgICAgICBjb25uLT5odHRwdmVyc2lvbiA9IDMwOworICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OiAvKiBzaG91bGRuJ3QgYmUgcG9zc2libGUgKi8KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQogICAgIH0KICAgfQogI2VuZGlmCkBAIC0zMzAwLDggKzMyMzcsOCBAQAogc3RhdGljIHZvaWQgcmV1c2VfY29ubihzdHJ1Y3QgY29ubmVjdGRhdGEgKm9sZF9jb25uLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7Ci0gIGZyZWVfaWRuY29udmVydGVkX2hvc3RuYW1lKCZvbGRfY29ubi0+aHR0cF9wcm94eS5ob3N0KTsKLSAgZnJlZV9pZG5jb252ZXJ0ZWRfaG9zdG5hbWUoJm9sZF9jb25uLT5zb2Nrc19wcm94eS5ob3N0KTsKKyAgQ3VybF9mcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZSgmb2xkX2Nvbm4tPmh0dHBfcHJveHkuaG9zdCk7CisgIEN1cmxfZnJlZV9pZG5jb252ZXJ0ZWRfaG9zdG5hbWUoJm9sZF9jb25uLT5zb2Nrc19wcm94eS5ob3N0KTsKIAogICBmcmVlKG9sZF9jb25uLT5odHRwX3Byb3h5Lmhvc3QucmF3YWxsb2MpOwogICBmcmVlKG9sZF9jb25uLT5zb2Nrc19wcm94eS5ob3N0LnJhd2FsbG9jKTsKQEAgLTMzNDUsOCArMzI4Miw4IEBACiAKICAgLyogaG9zdCBjYW4gY2hhbmdlLCB3aGVuIGRvaW5nIGtlZXBhbGl2ZSB3aXRoIGEgcHJveHkgb3IgaWYgdGhlIGNhc2UgaXMKICAgICAgZGlmZmVyZW50IHRoaXMgdGltZSBldGMgKi8KLSAgZnJlZV9pZG5jb252ZXJ0ZWRfaG9zdG5hbWUoJmNvbm4tPmhvc3QpOwotICBmcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZSgmY29ubi0+Y29ubl90b19ob3N0KTsKKyAgQ3VybF9mcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZSgmY29ubi0+aG9zdCk7CisgIEN1cmxfZnJlZV9pZG5jb252ZXJ0ZWRfaG9zdG5hbWUoJmNvbm4tPmNvbm5fdG9faG9zdCk7CiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+aG9zdC5yYXdhbGxvYyk7CiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+Y29ubl90b19ob3N0LnJhd2FsbG9jKTsKICAgY29ubi0+aG9zdCA9IG9sZF9jb25uLT5ob3N0OwpAQCAtMzQ0Miw5ICszMzc5LDkgQEAKICAgaWYocmVzdWx0KQogICAgIGdvdG8gb3V0OwogCi0gIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX0JFQVJFUl0pIHsKLSAgICBjb25uLT5vYXV0aF9iZWFyZXIgPSBzdHJkdXAoZGF0YS0+c2V0LnN0cltTVFJJTkdfQkVBUkVSXSk7Ci0gICAgaWYoIWNvbm4tPm9hdXRoX2JlYXJlcikgeworICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TQVNMX0FVVEhaSURdKSB7CisgICAgY29ubi0+c2FzbF9hdXRoemlkID0gc3RyZHVwKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NBU0xfQVVUSFpJRF0pOworICAgIGlmKCFjb25uLT5zYXNsX2F1dGh6aWQpIHsKICAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CiAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC0zNTA1LDIxICszNDQyLDIxIEBACiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAqIElETi1jb252ZXJ0IHRoZSBob3N0bmFtZXMKICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gIHJlc3VsdCA9IGlkbmNvbnZlcnRfaG9zdG5hbWUoY29ubiwgJmNvbm4tPmhvc3QpOworICByZXN1bHQgPSBDdXJsX2lkbmNvbnZlcnRfaG9zdG5hbWUoY29ubiwgJmNvbm4tPmhvc3QpOwogICBpZihyZXN1bHQpCiAgICAgZ290byBvdXQ7CiAgIGlmKGNvbm4tPmJpdHMuY29ubl90b19ob3N0KSB7Ci0gICAgcmVzdWx0ID0gaWRuY29udmVydF9ob3N0bmFtZShjb25uLCAmY29ubi0+Y29ubl90b19ob3N0KTsKKyAgICByZXN1bHQgPSBDdXJsX2lkbmNvbnZlcnRfaG9zdG5hbWUoY29ubiwgJmNvbm4tPmNvbm5fdG9faG9zdCk7CiAgICAgaWYocmVzdWx0KQogICAgICAgZ290byBvdXQ7CiAgIH0KICAgaWYoY29ubi0+Yml0cy5odHRwcHJveHkpIHsKLSAgICByZXN1bHQgPSBpZG5jb252ZXJ0X2hvc3RuYW1lKGNvbm4sICZjb25uLT5odHRwX3Byb3h5Lmhvc3QpOworICAgIHJlc3VsdCA9IEN1cmxfaWRuY29udmVydF9ob3N0bmFtZShjb25uLCAmY29ubi0+aHR0cF9wcm94eS5ob3N0KTsKICAgICBpZihyZXN1bHQpCiAgICAgICBnb3RvIG91dDsKICAgfQogICBpZihjb25uLT5iaXRzLnNvY2tzcHJveHkpIHsKLSAgICByZXN1bHQgPSBpZG5jb252ZXJ0X2hvc3RuYW1lKGNvbm4sICZjb25uLT5zb2Nrc19wcm94eS5ob3N0KTsKKyAgICByZXN1bHQgPSBDdXJsX2lkbmNvbnZlcnRfaG9zdG5hbWUoY29ubiwgJmNvbm4tPnNvY2tzX3Byb3h5Lmhvc3QpOwogICAgIGlmKHJlc3VsdCkKICAgICAgIGdvdG8gb3V0OwogICB9CkBAIC0zNjMxLDYgKzM1NjgsMTAgQEAKICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0lQSEVSMTNfTElTVF9PUklHXTsKICAgZGF0YS0+c2V0LnByb3h5X3NzbC5wcmltYXJ5LmNpcGhlcl9saXN0MTMgPQogICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DSVBIRVIxM19MSVNUX1BST1hZXTsKKyAgZGF0YS0+c2V0LnNzbC5wcmltYXJ5LnBpbm5lZF9rZXkgPQorICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9QSU5ORURQVUJMSUNLRVlfT1JJR107CisgIGRhdGEtPnNldC5wcm94eV9zc2wucHJpbWFyeS5waW5uZWRfa2V5ID0KKyAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfUElOTkVEUFVCTElDS0VZX1BST1hZXTsKIAogICBkYXRhLT5zZXQuc3NsLkNSTGZpbGUgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ1JMRklMRV9PUklHXTsKICAgZGF0YS0+c2V0LnByb3h5X3NzbC5DUkxmaWxlID0gZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NSTEZJTEVfUFJPWFldOwpAQCAtMzY4OCwyNSArMzYyOSw2IEBACiAgIGVsc2UKICAgICByZXVzZSA9IENvbm5lY3Rpb25FeGlzdHMoZGF0YSwgY29ubiwgJmNvbm5fdGVtcCwgJmZvcmNlX3JldXNlLCAmd2FpdHBpcGUpOwogCi0gIC8qIElmIHdlIGZvdW5kIGEgcmV1c2FibGUgY29ubmVjdGlvbiB0aGF0IGlzIG5vdyBtYXJrZWQgYXMgaW4gdXNlLCB3ZSBtYXkKLSAgICAgc3RpbGwgd2FudCB0byBvcGVuIGEgbmV3IGNvbm5lY3Rpb24gaWYgd2UgYXJlIG11bHRpcGxleGluZy4gKi8KLSAgaWYocmV1c2UgJiYgIWZvcmNlX3JldXNlICYmIElzTXVsdGlwbGV4aW5nUG9zc2libGUoZGF0YSwgY29ubl90ZW1wKSkgewotICAgIHNpemVfdCBtdWx0aXBsZXhlZCA9IENPTk5fSU5VU0UoY29ubl90ZW1wKTsKLSAgICBpZihtdWx0aXBsZXhlZCA+IDApIHsKLSAgICAgIGluZm9mKGRhdGEsICJGb3VuZCBjb25uZWN0aW9uICVsZCwgd2l0aCAlenUgcmVxdWVzdHMgb24gaXRcbiIsCi0gICAgICAgICAgICBjb25uX3RlbXAtPmNvbm5lY3Rpb25faWQsIG11bHRpcGxleGVkKTsKLQotICAgICAgaWYoQ3VybF9jb25uY2FjaGVfYnVuZGxlX3NpemUoY29ubl90ZW1wKSA8IG1heF9ob3N0X2Nvbm5lY3Rpb25zICYmCi0gICAgICAgICBDdXJsX2Nvbm5jYWNoZV9zaXplKGRhdGEpIDwgbWF4X3RvdGFsX2Nvbm5lY3Rpb25zKSB7Ci0gICAgICAgIC8qIFdlIHdhbnQgYSBuZXcgY29ubmVjdGlvbiBhbnl3YXkgKi8KLSAgICAgICAgcmV1c2UgPSBGQUxTRTsKLQotICAgICAgICBpbmZvZihkYXRhLCAiV2UgY2FuIHJldXNlLCBidXQgd2Ugd2FudCBhIG5ldyBjb25uZWN0aW9uIGFueXdheVxuIik7Ci0gICAgICAgIEN1cmxfY29ubmNhY2hlX3JldHVybl9jb25uKGNvbm5fdGVtcCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KICAgaWYocmV1c2UpIHsKICAgICAvKgogICAgICAqIFdlIGFscmVhZHkgaGF2ZSBhIGNvbm5lY3Rpb24gZm9yIHRoaXMsIHdlIGdvdCB0aGUgZm9ybWVyIGNvbm5lY3Rpb24KQEAgLTM3NDksOCArMzY3MSw5IEBACiAgICAgICBjb25uZWN0aW9uc19hdmFpbGFibGUgPSBGQUxTRTsKICAgICBlbHNlIHsKICAgICAgIC8qIHRoaXMgZ2V0cyBhIGxvY2sgb24gdGhlIGNvbm5jYWNoZSAqLworICAgICAgY29uc3QgY2hhciAqYnVuZGxlaG9zdDsKICAgICAgIHN0cnVjdCBjb25uZWN0YnVuZGxlICpidW5kbGUgPQotICAgICAgICBDdXJsX2Nvbm5jYWNoZV9maW5kX2J1bmRsZShjb25uLCBkYXRhLT5zdGF0ZS5jb25uX2NhY2hlKTsKKyAgICAgICAgQ3VybF9jb25uY2FjaGVfZmluZF9idW5kbGUoY29ubiwgZGF0YS0+c3RhdGUuY29ubl9jYWNoZSwgJmJ1bmRsZWhvc3QpOwogCiAgICAgICBpZihtYXhfaG9zdF9jb25uZWN0aW9ucyA+IDAgJiYgYnVuZGxlICYmCiAgICAgICAgICAoYnVuZGxlLT5udW1fY29ubmVjdGlvbnMgPj0gbWF4X2hvc3RfY29ubmVjdGlvbnMpKSB7CkBAIC0zNzY0LDggKzM2ODcsOCBAQAogICAgICAgICAgICh2b2lkKUN1cmxfZGlzY29ubmVjdChkYXRhLCBjb25uX2NhbmRpZGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGVhZF9jb25uZWN0aW9uICovIEZBTFNFKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgaW5mb2YoZGF0YSwgIk5vIG1vcmUgY29ubmVjdGlvbnMgYWxsb3dlZCB0byBob3N0OiAlenVcbiIsCi0gICAgICAgICAgICAgICAgbWF4X2hvc3RfY29ubmVjdGlvbnMpOworICAgICAgICAgIGluZm9mKGRhdGEsICJObyBtb3JlIGNvbm5lY3Rpb25zIGFsbG93ZWQgdG8gaG9zdCAlczogJXp1XG4iLAorICAgICAgICAgICAgICAgIGJ1bmRsZWhvc3QsIG1heF9ob3N0X2Nvbm5lY3Rpb25zKTsKICAgICAgICAgICBjb25uZWN0aW9uc19hdmFpbGFibGUgPSBGQUxTRTsKICAgICAgICAgfQogICAgICAgfQpAQCAtMzkyNiw3ICszODQ5LDkgQEAKICAgfQogICBlbHNlIHsKICAgICBDdXJsX3BncnNUaW1lKGRhdGEsIFRJTUVSX0NPTk5FQ1QpOyAgICAvKiB3ZSdyZSBjb25uZWN0ZWQgYWxyZWFkeSAqLwotICAgIEN1cmxfcGdyc1RpbWUoZGF0YSwgVElNRVJfQVBQQ09OTkVDVCk7IC8qIHdlJ3JlIGNvbm5lY3RlZCBhbHJlYWR5ICovCisgICAgaWYoY29ubi0+c3NsW0ZJUlNUU09DS0VUXS51c2UgfHwKKyAgICAgICAoY29ubi0+aGFuZGxlci0+cHJvdG9jb2wgJiBQUk9UT19GQU1JTFlfU1NIKSkKKyAgICAgIEN1cmxfcGdyc1RpbWUoZGF0YSwgVElNRVJfQVBQQ09OTkVDVCk7IC8qIHdlJ3JlIGNvbm5lY3RlZCBhbHJlYWR5ICovCiAgICAgY29ubi0+Yml0cy50Y3Bjb25uZWN0W0ZJUlNUU09DS0VUXSA9IFRSVUU7CiAgICAgKnByb3RvY29sX2RvbmUgPSBUUlVFOwogICAgIEN1cmxfdXBkYXRlY29ubmluZm8oY29ubiwgY29ubi0+c29ja1tGSVJTVFNPQ0tFVF0pOwpAQCAtNDE0NywzNCArNDA3MiwzIEBACiAKICAgcmV0dXJuIGZhbWlseTsKIH0KLQotCi0vKgotICogV3JhcHBlciB0byBjYWxsIGZ1bmN0aW9ucyBpbiBDdXJsX2Nvbm5jYWNoZV9mb3JlYWNoKCkKLSAqCi0gKiBSZXR1cm5zIGFsd2F5cyAwLgotICovCi1zdGF0aWMgaW50IGNvbm5fdXBrZWVwKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGFyYW0pCi17Ci0gIC8qIFBhcmFtIGlzIHVudXNlZC4gKi8KLSAgKHZvaWQpcGFyYW07Ci0KLSAgaWYoY29ubi0+aGFuZGxlci0+Y29ubmVjdGlvbl9jaGVjaykgewotICAgIC8qIERvIGEgcHJvdG9jb2wtc3BlY2lmaWMga2VlcGFsaXZlIGNoZWNrIG9uIHRoZSBjb25uZWN0aW9uLiAqLwotICAgIGNvbm4tPmhhbmRsZXItPmNvbm5lY3Rpb25fY2hlY2soY29ubiwgQ09OTkNIRUNLX0tFRVBBTElWRSk7Ci0gIH0KLQotICByZXR1cm4gMDsgLyogY29udGludWUgaXRlcmF0aW9uICovCi19Ci0KLUNVUkxjb2RlIEN1cmxfdXBrZWVwKHN0cnVjdCBjb25uY2FjaGUgKmNvbm5fY2FjaGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCi17Ci0gIC8qIExvb3Agb3ZlciBldmVyeSBjb25uZWN0aW9uIGFuZCBtYWtlIGNvbm5lY3Rpb24gYWxpdmUuICovCi0gIEN1cmxfY29ubmNhY2hlX2ZvcmVhY2goZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25uX2NhY2hlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29ubl91cGtlZXApOwotICByZXR1cm4gQ1VSTEVfT0s7Ci19CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi91cmwuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3VybC5oCmluZGV4IDRkYjllODYuLjUwMDBjNTEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3VybC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3VybC5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC00OCw0MCArNDgsMjkgQEAKIENVUkxjb2RlIEN1cmxfaW5pdF91c2VyZGVmaW5lZChzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKIAogdm9pZCBDdXJsX2ZyZWVzZXQoc3RydWN0IEN1cmxfZWFzeSAqIGRhdGEpOwotLyogZnJlZSB0aGUgVVJMIHBpZWNlcyAqLwotdm9pZCBDdXJsX3VwX2ZyZWUoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSk7CiBDVVJMY29kZSBDdXJsX3VjX3RvX2N1cmxjb2RlKENVUkxVY29kZSB1Yyk7Ci1DVVJMY29kZSBDdXJsX2Nsb3NlKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEpOyAvKiBvcHBvc2l0ZSBvZiBjdXJsX29wZW4oKSAqLworQ1VSTGNvZGUgQ3VybF9jbG9zZShzdHJ1Y3QgQ3VybF9lYXN5ICoqZGF0YXApOyAvKiBvcHBvc2l0ZSBvZiBjdXJsX29wZW4oKSAqLwogQ1VSTGNvZGUgQ3VybF9jb25uZWN0KHN0cnVjdCBDdXJsX2Vhc3kgKiwgYm9vbCAqYXN5bmMsIGJvb2wgKnByb3RvY29sX2Nvbm5lY3QpOwogQ1VSTGNvZGUgQ3VybF9kaXNjb25uZWN0KHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICosIGJvb2wgZGVhZF9jb25uZWN0aW9uKTsKLUNVUkxjb2RlIEN1cmxfcHJvdG9jb2xfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpOwotQ1VSTGNvZGUgQ3VybF9wcm90b2NvbF9jb25uZWN0aW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7Ci1DVVJMY29kZSBDdXJsX3Byb3RvY29sX2RvaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7CiBDVVJMY29kZSBDdXJsX3NldHVwX2Nvbm4oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKnByb3RvY29sX2RvbmUpOwogdm9pZCBDdXJsX2ZyZWVfcmVxdWVzdF9zdGF0ZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKLQotaW50IEN1cmxfcHJvdG9jb2xfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpOwotaW50IEN1cmxfZG9pbmdfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpOwogQ1VSTGNvZGUgQ3VybF9wYXJzZV9sb2dpbl9kZXRhaWxzKGNvbnN0IGNoYXIgKmxvZ2luLCBjb25zdCBzaXplX3QgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKip1c2VycHRyLCBjaGFyICoqcGFzc3dkcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvcHRpb25zcHRyKTsKLXZvaWQgQ3VybF9jbG9zZV9jb25uZWN0aW9ucyhzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhKTsKLUNVUkxjb2RlIEN1cmxfdXBrZWVwKHN0cnVjdCBjb25uY2FjaGUgKmNvbm5fY2FjaGUsIHZvaWQgKmRhdGEpOwogCiBjb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyICpDdXJsX2J1aWx0aW5fc2NoZW1lKGNvbnN0IGNoYXIgKnNjaGVtZSk7CiAKK2Jvb2wgQ3VybF9pc19BU0NJSV9uYW1lKGNvbnN0IGNoYXIgKmhvc3RuYW1lKTsKK0NVUkxjb2RlIEN1cmxfaWRuY29udmVydF9ob3N0bmFtZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGhvc3RuYW1lICpob3N0KTsKK3ZvaWQgQ3VybF9mcmVlX2lkbmNvbnZlcnRlZF9ob3N0bmFtZShzdHJ1Y3QgaG9zdG5hbWUgKmhvc3QpOworCiAjZGVmaW5lIENVUkxfREVGQVVMVF9QUk9YWV9QT1JUIDEwODAgLyogZGVmYXVsdCBwcm94eSBwb3J0IHVubGVzcyBzcGVjaWZpZWQgKi8KICNkZWZpbmUgQ1VSTF9ERUZBVUxUX0hUVFBTX1BST1hZX1BPUlQgNDQzIC8qIGRlZmF1bHQgaHR0cHMgcHJveHkgcG9ydCB1bmxlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCAqLwogCi1DVVJMY29kZSBDdXJsX2Nvbm5lY3RlZF9wcm94eShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgpOwotCiAjaWZkZWYgQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUwogI2RlZmluZSBDdXJsX3ZlcmJvc2Vjb25uZWN0KHgpICBDdXJsX25vcF9zdG10CiAjZWxzZQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdXJsYXBpLWludC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdXJsYXBpLWludC5oCmluZGV4IDVmMDU5YzIuLmQxNGQ1M2QgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3VybGFwaS1pbnQuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi91cmxhcGktaW50LmgKQEAgLTI2LDkgKzI2LDYgQEAKICNkZWZpbmUgTUFYX1NDSEVNRV9MRU4gNDAKIAogYm9vbCBDdXJsX2lzX2Fic29sdXRlX3VybChjb25zdCBjaGFyICp1cmwsIGNoYXIgKnNjaGVtZSwgc2l6ZV90IGJ1Zmxlbik7Ci1jaGFyICpDdXJsX2NvbmNhdF91cmwoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqcmVsdXJsKTsKLXNpemVfdCBDdXJsX3N0cmxlbl91cmwoY29uc3QgY2hhciAqdXJsLCBib29sIHJlbGF0aXZlKTsKLXZvaWQgQ3VybF9zdHJjcHlfdXJsKGNoYXIgKm91dHB1dCwgY29uc3QgY2hhciAqdXJsLCBib29sIHJlbGF0aXZlKTsKIAogI2lmZGVmIERFQlVHQlVJTEQKIENVUkxVY29kZSBDdXJsX3BhcnNlX3BvcnQoc3RydWN0IEN1cmxfVVJMICp1LCBjaGFyICpob3N0bmFtZSk7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi91cmxhcGkuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3VybGFwaS5jCmluZGV4IGQwN2U0ZjUuLjUwNmUyNDQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3VybGFwaS5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3VybGFwaS5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAidXJsLmgiCiAjaW5jbHVkZSAiZXNjYXBlLmgiCiAjaW5jbHVkZSAiY3VybF9jdHlwZS5oIgorI2luY2x1ZGUgImluZXRfcHRvbi5oIgogCiAvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKQEAgLTYzLDYgKzY0LDcgQEAKICAgY2hhciAqZnJhZ21lbnQ7CiAKICAgY2hhciAqc2NyYXRjaDsgLyogdGVtcG9yYXJ5IHNjcmF0Y2ggYXJlYSAqLworICBjaGFyICp0ZW1wcGF0aDsgLyogdGVtcG9yYXJ5IHBhdGggcG9pbnRlciAqLwogICBsb25nIHBvcnRudW07IC8qIHRoZSBudW1lcmljYWwgdmVyc2lvbiAqLwogfTsKIApAQCAtODEsNiArODMsNyBAQAogICBmcmVlKHUtPnF1ZXJ5KTsKICAgZnJlZSh1LT5mcmFnbWVudCk7CiAgIGZyZWUodS0+c2NyYXRjaCk7CisgIGZyZWUodS0+dGVtcHBhdGgpOwogfQogCiAvKiBtb3ZlIHRoZSBmdWxsIGNvbnRlbnRzIG9mIG9uZSBoYW5kbGUgb250byBhbm90aGVyIGFuZApAQCAtMzUwLDcgKzM1Myw3IEBACiAgIGVsc2UgewogICAgIC8qIFdlIGdvdCBhIG5ldyBhYnNvbHV0ZSBwYXRoIGZvciB0aGlzIHNlcnZlciAqLwogCi0gICAgaWYoKHJlbHVybFswXSA9PSAnLycpICYmIChyZWx1cmxbMV0gPT0gJy8nKSkgeworICAgIGlmKHJlbHVybFsxXSA9PSAnLycpIHsKICAgICAgIC8qIHRoZSBuZXcgVVJMIHN0YXJ0cyB3aXRoIC8vLCBqdXN0IGtlZXAgdGhlIHByb3RvY29sIHBhcnQgZnJvbSB0aGUKICAgICAgICAgIG9yaWdpbmFsIG9uZSAqLwogICAgICAgKnByb3RzZXAgPSAwOwpAQCAtNDI1LDcgKzQyOCw2IEBACiAgKgogICovCiBzdGF0aWMgQ1VSTFVjb2RlIHBhcnNlX2hvc3RuYW1lX2xvZ2luKHN0cnVjdCBDdXJsX1VSTCAqdSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IEN1cmxfaGFuZGxlciAqaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmhvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CkBAIC00MzQsNiArNDM2LDcgQEAKICAgY2hhciAqdXNlcnAgPSBOVUxMOwogICBjaGFyICpwYXNzd2RwID0gTlVMTDsKICAgY2hhciAqb3B0aW9uc3AgPSBOVUxMOworICBjb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyICpoID0gTlVMTDsKIAogICAvKiBBdCB0aGlzIHBvaW50LCB3ZSdyZSBob3BpbmcgYWxsIHRoZSBvdGhlciBzcGVjaWFsIGNhc2VzIGhhdmUKICAgICogYmVlbiB0YWtlbiBjYXJlIG9mLCBzbyBjb25uLT5ob3N0Lm5hbWUgaXMgYXQgbW9zdApAQCAtNDUzLDYgKzQ1NiwxMCBAQAogICAgKiBmdHA6Ly91c2VyOnBhc3N3b3JkQGZ0cC5teS5zaXRlOjgwMjEvUkVBRE1FICovCiAgICpob3N0bmFtZSA9ICsrcHRyOwogCisgIC8qIGlmIHRoaXMgaXMgYSBrbm93biBzY2hlbWUsIGdldCBzb21lIGRldGFpbHMgKi8KKyAgaWYodS0+c2NoZW1lKQorICAgIGggPSBDdXJsX2J1aWx0aW5fc2NoZW1lKHUtPnNjaGVtZSk7CisKICAgLyogV2UgY291bGQgdXNlIHRoZSBsb2dpbiBpbmZvcm1hdGlvbiBpbiB0aGUgVVJMIHNvIGV4dHJhY3QgaXQuIE9ubHkgcGFyc2UKICAgICAgb3B0aW9ucyBpZiB0aGUgaGFuZGxlciBzYXlzIHdlIHNob3VsZC4gTm90ZSB0aGF0ICdoJyBtaWdodCBiZSBOVUxMISAqLwogICBjY29kZSA9IEN1cmxfcGFyc2VfbG9naW5fZGV0YWlscyhsb2dpbiwgcHRyIC0gbG9naW4gLSAxLApAQCAtNTY4LDcgKzU3NSw3IEBACiB9CiAKIC8qIHNjYW4gZm9yIGJ5dGUgdmFsdWVzIDwgMzEgb3IgMTI3ICovCi1zdGF0aWMgQ1VSTFVjb2RlIGp1bmtzY2FuKGNoYXIgKnBhcnQpCitzdGF0aWMgQ1VSTFVjb2RlIGp1bmtzY2FuKGNvbnN0IGNoYXIgKnBhcnQpCiB7CiAgIGlmKHBhcnQpIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciBiYWRieXRlc1tdPXsKQEAgLTU5MSwyMCArNTk4LDI2IEBACiAKIHN0YXRpYyBDVVJMVWNvZGUgaG9zdG5hbWVfY2hlY2soc3RydWN0IEN1cmxfVVJMICp1LCBjaGFyICpob3N0bmFtZSkKIHsKLSAgY29uc3QgY2hhciAqbCA9IE5VTEw7IC8qIGFjY2VwdGVkIGNoYXJhY3RlcnMgKi8KICAgc2l6ZV90IGxlbjsKICAgc2l6ZV90IGhsZW4gPSBzdHJsZW4oaG9zdG5hbWUpOwogCiAgIGlmKGhvc3RuYW1lWzBdID09ICdbJykgeworI2lmZGVmIEVOQUJMRV9JUFY2CisgICAgY2hhciBkZXN0WzE2XTsgLyogZml0cyBhIGJpbmFyeSBJUHY2IGFkZHJlc3MgKi8KKyNlbmRpZgorICAgIGNvbnN0IGNoYXIgKmwgPSAiMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRjouIjsKKyAgICBpZihobGVuIDwgNSkgLyogJ1s6OjFdJyBpcyB0aGUgc2hvcnRlc3QgcG9zc2libGUgdmFsaWQgc3RyaW5nICovCisgICAgICByZXR1cm4gQ1VSTFVFX01BTEZPUk1FRF9JTlBVVDsKICAgICBob3N0bmFtZSsrOwotICAgIGwgPSAiMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRjo6LiI7CiAgICAgaGxlbiAtPSAyOwotICB9CiAKLSAgaWYobCkgeworICAgIGlmKGhvc3RuYW1lW2hsZW5dICE9ICddJykKKyAgICAgIHJldHVybiBDVVJMVUVfTUFMRk9STUVEX0lOUFVUOworCiAgICAgLyogb25seSB2YWxpZCBsZXR0ZXJzIGFyZSBvayAqLwogICAgIGxlbiA9IHN0cnNwbihob3N0bmFtZSwgbCk7CiAgICAgaWYoaGxlbiAhPSBsZW4pIHsKKyAgICAgIGhsZW4gPSBsZW47CiAgICAgICBpZihob3N0bmFtZVtsZW5dID09ICclJykgewogICAgICAgICAvKiB0aGlzIGNvdWxkIG5vdyBiZSAnJVt6b25lIGlkXScgKi8KICAgICAgICAgY2hhciB6b25laWRbMTZdOwpAQCAtNjI4LDYgKzY0MSwxMiBAQAogICAgICAgICByZXR1cm4gQ1VSTFVFX01BTEZPUk1FRF9JTlBVVDsKICAgICAgIC8qIGhvc3RuYW1lIGlzIGZpbmUgKi8KICAgICB9CisjaWZkZWYgRU5BQkxFX0lQVjYKKyAgICBob3N0bmFtZVtobGVuXSA9IDA7IC8qIGVuZCB0aGUgYWRkcmVzcyB0aGVyZSAqLworICAgIGlmKDEgIT0gQ3VybF9pbmV0X3B0b24oQUZfSU5FVDYsIGhvc3RuYW1lLCBkZXN0KSkKKyAgICAgIHJldHVybiBDVVJMVUVfTUFMRk9STUVEX0lOUFVUOworICAgIGhvc3RuYW1lW2hsZW5dID0gJ10nOyAvKiByZXN0b3JlIGVuZGluZyBicmFja2V0ICovCisjZW5kaWYKICAgfQogICBlbHNlIHsKICAgICAvKiBsZXR0ZXJzIGZyb20gdGhlIHNlY29uZCBzdHJpbmcgaXMgbm90IG9rICovCkBAIC02NTMsMTAgKzY3Miw5IEBACiAgIENVUkxVY29kZSByZXN1bHQ7CiAgIGJvb2wgdXJsX2hhc19zY2hlbWUgPSBGQUxTRTsKICAgY2hhciBzY2hlbWVidWZbTUFYX1NDSEVNRV9MRU4gKyAxXTsKLSAgY2hhciAqc2NoZW1lcCA9IE5VTEw7CisgIGNvbnN0IGNoYXIgKnNjaGVtZXAgPSBOVUxMOwogICBzaXplX3Qgc2NoZW1lbGVuID0gMDsKICAgc2l6ZV90IHVybGxlbjsKLSAgY29uc3Qgc3RydWN0IEN1cmxfaGFuZGxlciAqaCA9IE5VTEw7CiAKICAgaWYoIXVybCkKICAgICByZXR1cm4gQ1VSTFVFX01BTEZPUk1FRF9JTlBVVDsKQEAgLTc3NSw2ICs3OTMsNyBAQAogCiAgICAgICBpZihqdW5rc2NhbihzY2hlbWVwKSkKICAgICAgICAgcmV0dXJuIENVUkxVRV9NQUxGT1JNRURfSU5QVVQ7CisKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAvKiBubyBzY2hlbWUhICovCkBAIC03ODIsNyArODAxLDcgQEAKICAgICAgIGlmKCEoZmxhZ3MgJiAoQ1VSTFVfREVGQVVMVF9TQ0hFTUV8Q1VSTFVfR1VFU1NfU0NIRU1FKSkpCiAgICAgICAgIHJldHVybiBDVVJMVUVfTUFMRk9STUVEX0lOUFVUOwogICAgICAgaWYoZmxhZ3MgJiBDVVJMVV9ERUZBVUxUX1NDSEVNRSkKLSAgICAgICAgc2NoZW1lcCA9IChjaGFyICopIERFRkFVTFRfU0NIRU1FOworICAgICAgICBzY2hlbWVwID0gREVGQVVMVF9TQ0hFTUU7CiAKICAgICAgIC8qCiAgICAgICAgKiBUaGUgVVJMIHdhcyBiYWRseSBmb3JtYXR0ZWQsIGxldCdzIHRyeSB3aXRob3V0IHNjaGVtZSBzcGVjaWZpZWQuCkBAIC03OTUsNzQgKzgxNCw4MyBAQAogICAgICAgcCsrOwogCiAgICAgbGVuID0gcCAtIGhvc3RwOwotICAgIGlmKCFsZW4pCi0gICAgICByZXR1cm4gQ1VSTFVFX01BTEZPUk1FRF9JTlBVVDsKLQotICAgIG1lbWNweShob3N0bmFtZSwgaG9zdHAsIGxlbik7Ci0gICAgaG9zdG5hbWVbbGVuXSA9IDA7Ci0KLSAgICBpZigoZmxhZ3MgJiBDVVJMVV9HVUVTU19TQ0hFTUUpICYmICFzY2hlbWVwKSB7Ci0gICAgICAvKiBsZWdhY3kgY3VybC1zdHlsZSBndWVzcyBiYXNlZCBvbiBob3N0IG5hbWUgKi8KLSAgICAgIGlmKGNoZWNrcHJlZml4KCJmdHAuIiwgaG9zdG5hbWUpKQotICAgICAgICBzY2hlbWVwID0gKGNoYXIgKikiZnRwIjsKLSAgICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoImRpY3QuIiwgaG9zdG5hbWUpKQotICAgICAgICBzY2hlbWVwID0gKGNoYXIgKikiZGljdCI7Ci0gICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJsZGFwLiIsIGhvc3RuYW1lKSkKLSAgICAgICAgc2NoZW1lcCA9IChjaGFyICopImxkYXAiOwotICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiaW1hcC4iLCBob3N0bmFtZSkpCi0gICAgICAgIHNjaGVtZXAgPSAoY2hhciAqKSJpbWFwIjsKLSAgICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoInNtdHAuIiwgaG9zdG5hbWUpKQotICAgICAgICBzY2hlbWVwID0gKGNoYXIgKikic210cCI7Ci0gICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJwb3AzLiIsIGhvc3RuYW1lKSkKLSAgICAgICAgc2NoZW1lcCA9IChjaGFyICopInBvcDMiOwotICAgICAgZWxzZQotICAgICAgICBzY2hlbWVwID0gKGNoYXIgKikiaHR0cCI7CisgICAgaWYobGVuKSB7CisgICAgICBtZW1jcHkoaG9zdG5hbWUsIGhvc3RwLCBsZW4pOworICAgICAgaG9zdG5hbWVbbGVuXSA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgaWYoIShmbGFncyAmIENVUkxVX05PX0FVVEhPUklUWSkpCisgICAgICAgIHJldHVybiBDVVJMVUVfTUFMRk9STUVEX0lOUFVUOwogICAgIH0KIAogICAgIGxlbiA9IHN0cmxlbihwKTsKICAgICBtZW1jcHkocGF0aCwgcCwgbGVuKTsKICAgICBwYXRoW2xlbl0gPSAwOwogCi0gICAgdS0+c2NoZW1lID0gc3RyZHVwKHNjaGVtZXApOwotICAgIGlmKCF1LT5zY2hlbWUpCi0gICAgICByZXR1cm4gQ1VSTFVFX09VVF9PRl9NRU1PUlk7CisgICAgaWYoc2NoZW1lcCkgeworICAgICAgdS0+c2NoZW1lID0gc3RyZHVwKHNjaGVtZXApOworICAgICAgaWYoIXUtPnNjaGVtZSkKKyAgICAgICAgcmV0dXJuIENVUkxVRV9PVVRfT0ZfTUVNT1JZOworICAgIH0KICAgfQogCi0gIC8qIGlmIHRoaXMgaXMgYSBrbm93biBzY2hlbWUsIGdldCBzb21lIGRldGFpbHMgKi8KLSAgaCA9IEN1cmxfYnVpbHRpbl9zY2hlbWUodS0+c2NoZW1lKTsKLQogICBpZihqdW5rc2NhbihwYXRoKSkKICAgICByZXR1cm4gQ1VSTFVFX01BTEZPUk1FRF9JTlBVVDsKIAotICBxdWVyeSA9IHN0cmNocihwYXRoLCAnPycpOwotICBpZihxdWVyeSkKLSAgICAqcXVlcnkrKyA9IDA7Ci0KLSAgZnJhZ21lbnQgPSBzdHJjaHIocXVlcnk/cXVlcnk6cGF0aCwgJyMnKTsKLSAgaWYoZnJhZ21lbnQpCi0gICAgKmZyYWdtZW50KysgPSAwOwotCi0gIGlmKCFwYXRoWzBdKQotICAgIC8qIGlmIHRoZXJlJ3Mgbm8gcGF0aCBzZXQsIHVuc2V0ICovCi0gICAgcGF0aCA9IE5VTEw7Ci0gIGVsc2UgaWYoIShmbGFncyAmIENVUkxVX1BBVEhfQVNfSVMpKSB7Ci0gICAgLyogc2FuaXRpc2UgcGF0aHMgYW5kIHJlbW92ZSAuLi8gYW5kIC4vIHNlcXVlbmNlcyBhY2NvcmRpbmcgdG8gUkZDMzk4NiAqLwotICAgIGNoYXIgKm5ld3AgPSBDdXJsX2RlZG90ZG90aWZ5KHBhdGgpOworICBpZigoZmxhZ3MgJiBDVVJMVV9VUkxFTkNPREUpICYmIHBhdGhbMF0pIHsKKyAgICAvKiB3b3JzdCBjYXNlIG91dHB1dCBsZW5ndGggaXMgM3ggdGhlIG9yaWdpbmFsISAqLworICAgIGNoYXIgKm5ld3AgPSBtYWxsb2Moc3RybGVuKHBhdGgpICogMyk7CiAgICAgaWYoIW5ld3ApCiAgICAgICByZXR1cm4gQ1VSTFVFX09VVF9PRl9NRU1PUlk7Ci0KLSAgICBpZihzdHJjbXAobmV3cCwgcGF0aCkpIHsKLSAgICAgIC8qIGlmIHdlIGdvdCBhIG5ldyB2ZXJzaW9uICovCi0gICAgICBwYXRoID0gbmV3cDsKLSAgICAgIHBhdGhfYWxsb2NlZCA9IFRSVUU7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIGZyZWUobmV3cCk7CisgICAgcGF0aF9hbGxvY2VkID0gVFJVRTsKKyAgICBzdHJjcHlfdXJsKG5ld3AsIHBhdGgsIFRSVUUpOyAvKiBjb25zaWRlciBpdCByZWxhdGl2ZSAqLworICAgIHUtPnRlbXBwYXRoID0gcGF0aCA9IG5ld3A7CiAgIH0KLSAgaWYocGF0aCkgeworCisgIGZyYWdtZW50ID0gc3RyY2hyKHBhdGgsICcjJyk7CisgIGlmKGZyYWdtZW50KSB7CisgICAgKmZyYWdtZW50KysgPSAwOworICAgIGlmKGZyYWdtZW50WzBdKSB7CisgICAgICB1LT5mcmFnbWVudCA9IHN0cmR1cChmcmFnbWVudCk7CisgICAgICBpZighdS0+ZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBDVVJMVUVfT1VUX09GX01FTU9SWTsKKyAgICB9CisgIH0KKworICBxdWVyeSA9IHN0cmNocihwYXRoLCAnPycpOworICBpZihxdWVyeSkgeworICAgICpxdWVyeSsrID0gMDsKKyAgICAvKiBkb25lIGV2ZW4gaWYgdGhlIHF1ZXJ5IHBhcnQgaXMgYSBibGFuayBzdHJpbmcgKi8KKyAgICB1LT5xdWVyeSA9IHN0cmR1cChxdWVyeSk7CisgICAgaWYoIXUtPnF1ZXJ5KQorICAgICAgcmV0dXJuIENVUkxVRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgaWYoIXBhdGhbMF0pCisgICAgLyogaWYgdGhlcmUncyBubyBwYXRoIGxlZnQgc2V0LCB1bnNldCAqLworICAgIHBhdGggPSBOVUxMOworICBlbHNlIHsKKyAgICBpZighKGZsYWdzICYgQ1VSTFVfUEFUSF9BU19JUykpIHsKKyAgICAgIC8qIHJlbW92ZSAuLi8gYW5kIC4vIHNlcXVlbmNlcyBhY2NvcmRpbmcgdG8gUkZDMzk4NiAqLworICAgICAgY2hhciAqbmV3cCA9IEN1cmxfZGVkb3Rkb3RpZnkocGF0aCk7CisgICAgICBpZighbmV3cCkKKyAgICAgICAgcmV0dXJuIENVUkxVRV9PVVRfT0ZfTUVNT1JZOworCisgICAgICBpZihzdHJjbXAobmV3cCwgcGF0aCkpIHsKKyAgICAgICAgLyogaWYgd2UgZ290IGEgbmV3IHZlcnNpb24gKi8KKyAgICAgICAgaWYocGF0aF9hbGxvY2VkKQorICAgICAgICAgIEN1cmxfc2FmZWZyZWUodS0+dGVtcHBhdGgpOworICAgICAgICB1LT50ZW1wcGF0aCA9IHBhdGggPSBuZXdwOworICAgICAgICBwYXRoX2FsbG9jZWQgPSBUUlVFOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBmcmVlKG5ld3ApOworICAgIH0KKwogICAgIHUtPnBhdGggPSBwYXRoX2FsbG9jZWQ/cGF0aDpzdHJkdXAocGF0aCk7CiAgICAgaWYoIXUtPnBhdGgpCiAgICAgICByZXR1cm4gQ1VSTFVFX09VVF9PRl9NRU1PUlk7CisgICAgdS0+dGVtcHBhdGggPSBOVUxMOyAvKiB1c2VkIG5vdyAqLwogICB9CiAKICAgaWYoaG9zdG5hbWUpIHsKQEAgLTg3Miw3ICs5MDAsNyBAQAogICAgIGlmKGp1bmtzY2FuKGhvc3RuYW1lKSkKICAgICAgIHJldHVybiBDVVJMVUVfTUFMRk9STUVEX0lOUFVUOwogCi0gICAgcmVzdWx0ID0gcGFyc2VfaG9zdG5hbWVfbG9naW4odSwgaCwgJmhvc3RuYW1lLCBmbGFncyk7CisgICAgcmVzdWx0ID0gcGFyc2VfaG9zdG5hbWVfbG9naW4odSwgJmhvc3RuYW1lLCBmbGFncyk7CiAgICAgaWYocmVzdWx0KQogICAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtODgwLDI4ICs5MDgsNDQgQEAKICAgICBpZihyZXN1bHQpCiAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgcmVzdWx0ID0gaG9zdG5hbWVfY2hlY2sodSwgaG9zdG5hbWUpOwotICAgIGlmKHJlc3VsdCkKLSAgICAgIHJldHVybiByZXN1bHQ7CisgICAgaWYoMCA9PSBzdHJsZW4oaG9zdG5hbWUpICYmIChmbGFncyAmIENVUkxVX05PX0FVVEhPUklUWSkpIHsKKyAgICAgIC8qIFNraXAgaG9zdG5hbWUgY2hlY2ssIGl0J3MgYWxsb3dlZCB0byBiZSBlbXB0eS4gKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXN1bHQgPSBob3N0bmFtZV9jaGVjayh1LCBob3N0bmFtZSk7CisgICAgICBpZihyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAgICAgdS0+aG9zdCA9IHN0cmR1cChob3N0bmFtZSk7CiAgICAgaWYoIXUtPmhvc3QpCiAgICAgICByZXR1cm4gQ1VSTFVFX09VVF9PRl9NRU1PUlk7CisKKyAgICBpZigoZmxhZ3MgJiBDVVJMVV9HVUVTU19TQ0hFTUUpICYmICFzY2hlbWVwKSB7CisgICAgICAvKiBsZWdhY3kgY3VybC1zdHlsZSBndWVzcyBiYXNlZCBvbiBob3N0IG5hbWUgKi8KKyAgICAgIGlmKGNoZWNrcHJlZml4KCJmdHAuIiwgaG9zdG5hbWUpKQorICAgICAgICBzY2hlbWVwID0gImZ0cCI7CisgICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJkaWN0LiIsIGhvc3RuYW1lKSkKKyAgICAgICAgc2NoZW1lcCA9ICJkaWN0IjsKKyAgICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoImxkYXAuIiwgaG9zdG5hbWUpKQorICAgICAgICBzY2hlbWVwID0gImxkYXAiOworICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiaW1hcC4iLCBob3N0bmFtZSkpCisgICAgICAgIHNjaGVtZXAgPSAiaW1hcCI7CisgICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJzbXRwLiIsIGhvc3RuYW1lKSkKKyAgICAgICAgc2NoZW1lcCA9ICJzbXRwIjsKKyAgICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoInBvcDMuIiwgaG9zdG5hbWUpKQorICAgICAgICBzY2hlbWVwID0gInBvcDMiOworICAgICAgZWxzZQorICAgICAgICBzY2hlbWVwID0gImh0dHAiOworCisgICAgICB1LT5zY2hlbWUgPSBzdHJkdXAoc2NoZW1lcCk7CisgICAgICBpZighdS0+c2NoZW1lKQorICAgICAgICByZXR1cm4gQ1VSTFVFX09VVF9PRl9NRU1PUlk7CisgICAgfQogICB9CiAKLSAgaWYocXVlcnkpIHsKLSAgICB1LT5xdWVyeSA9IHN0cmR1cChxdWVyeSk7Ci0gICAgaWYoIXUtPnF1ZXJ5KQotICAgICAgcmV0dXJuIENVUkxVRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0gIGlmKGZyYWdtZW50ICYmIGZyYWdtZW50WzBdKSB7Ci0gICAgdS0+ZnJhZ21lbnQgPSBzdHJkdXAoZnJhZ21lbnQpOwotICAgIGlmKCF1LT5mcmFnbWVudCkKLSAgICAgIHJldHVybiBDVVJMVUVfT1VUX09GX01FTU9SWTsKLSAgfQotCi0gIGZyZWUodS0+c2NyYXRjaCk7Ci0gIHUtPnNjcmF0Y2ggPSBOVUxMOworICBDdXJsX3NhZmVmcmVlKHUtPnNjcmF0Y2gpOworICBDdXJsX3NhZmVmcmVlKHUtPnRlbXBwYXRoKTsKIAogICByZXR1cm4gQ1VSTFVFX09LOwogfQpAQCAtMTA2NiwyNCArMTExMCwyMyBAQAogICAgICAgZWxzZQogICAgICAgICByZXR1cm4gQ1VSTFVFX05PX1NDSEVNRTsKIAotICAgICAgaWYoc2NoZW1lKSB7Ci0gICAgICAgIGggPSBDdXJsX2J1aWx0aW5fc2NoZW1lKHNjaGVtZSk7Ci0gICAgICAgIGlmKCFwb3J0ICYmIChmbGFncyAmIENVUkxVX0RFRkFVTFRfUE9SVCkpIHsKLSAgICAgICAgICAvKiB0aGVyZSdzIG5vIHN0b3JlZCBwb3J0IG51bWJlciwgYnV0IGFza2VkIHRvIGRlbGl2ZXIKLSAgICAgICAgICAgICBhIGRlZmF1bHQgb25lIGZvciB0aGUgc2NoZW1lICovCi0gICAgICAgICAgaWYoaCkgewotICAgICAgICAgICAgbXNucHJpbnRmKHBvcnRidWYsIHNpemVvZihwb3J0YnVmKSwgIiVsZCIsIGgtPmRlZnBvcnQpOwotICAgICAgICAgICAgcG9ydCA9IHBvcnRidWY7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYocG9ydCkgewotICAgICAgICAgIC8qIHRoZXJlIGlzIGEgc3RvcmVkIHBvcnQgbnVtYmVyLCBidXQgYXNrZWQgdG8gaW5oaWJpdCBpZiBpdCBtYXRjaGVzCi0gICAgICAgICAgICAgdGhlIGRlZmF1bHQgb25lIGZvciB0aGUgc2NoZW1lICovCi0gICAgICAgICAgaWYoaCAmJiAoaC0+ZGVmcG9ydCA9PSB1LT5wb3J0bnVtKSAmJgotICAgICAgICAgICAgIChmbGFncyAmIENVUkxVX05PX0RFRkFVTFRfUE9SVCkpCi0gICAgICAgICAgICBwb3J0ID0gTlVMTDsKKyAgICAgIGggPSBDdXJsX2J1aWx0aW5fc2NoZW1lKHNjaGVtZSk7CisgICAgICBpZighcG9ydCAmJiAoZmxhZ3MgJiBDVVJMVV9ERUZBVUxUX1BPUlQpKSB7CisgICAgICAgIC8qIHRoZXJlJ3Mgbm8gc3RvcmVkIHBvcnQgbnVtYmVyLCBidXQgYXNrZWQgdG8gZGVsaXZlcgorICAgICAgICAgICBhIGRlZmF1bHQgb25lIGZvciB0aGUgc2NoZW1lICovCisgICAgICAgIGlmKGgpIHsKKyAgICAgICAgICBtc25wcmludGYocG9ydGJ1Ziwgc2l6ZW9mKHBvcnRidWYpLCAiJWxkIiwgaC0+ZGVmcG9ydCk7CisgICAgICAgICAgcG9ydCA9IHBvcnRidWY7CiAgICAgICAgIH0KICAgICAgIH0KKyAgICAgIGVsc2UgaWYocG9ydCkgeworICAgICAgICAvKiB0aGVyZSBpcyBhIHN0b3JlZCBwb3J0IG51bWJlciwgYnV0IGFza2VkIHRvIGluaGliaXQgaWYgaXQgbWF0Y2hlcworICAgICAgICAgICB0aGUgZGVmYXVsdCBvbmUgZm9yIHRoZSBzY2hlbWUgKi8KKyAgICAgICAgaWYoaCAmJiAoaC0+ZGVmcG9ydCA9PSB1LT5wb3J0bnVtKSAmJgorICAgICAgICAgICAoZmxhZ3MgJiBDVVJMVV9OT19ERUZBVUxUX1BPUlQpKQorICAgICAgICAgIHBvcnQgPSBOVUxMOworICAgICAgfQorCiAgICAgICBpZihoICYmICEoaC0+ZmxhZ3MgJiBQUk9UT1BUX1VSTE9QVElPTlMpKQogICAgICAgICBvcHRpb25zID0gTlVMTDsKIApAQCAtMTMzMSw3ICsxMzc0LDggQEAKICAgZGVmYXVsdDoKICAgICByZXR1cm4gQ1VSTFVFX1VOS05PV05fUEFSVDsKICAgfQotICBpZihzdG9yZXApIHsKKyAgREVCVUdBU1NFUlQoc3RvcmVwKTsKKyAgewogICAgIGNvbnN0IGNoYXIgKm5ld3AgPSBwYXJ0OwogICAgIHNpemVfdCBuYWxsb2MgPSBzdHJsZW4ocGFydCk7CiAKQEAgLTE0MjMsOSArMTQ2NywxNCBAQAogICAgIH0KIAogICAgIGlmKHdoYXQgPT0gQ1VSTFVQQVJUX0hPU1QpIHsKLSAgICAgIGlmKGhvc3RuYW1lX2NoZWNrKHUsIChjaGFyICopbmV3cCkpIHsKLSAgICAgICAgZnJlZSgoY2hhciAqKW5ld3ApOwotICAgICAgICByZXR1cm4gQ1VSTFVFX01BTEZPUk1FRF9JTlBVVDsKKyAgICAgIGlmKDAgPT0gc3RybGVuKG5ld3ApICYmIChmbGFncyAmIENVUkxVX05PX0FVVEhPUklUWSkpIHsKKyAgICAgICAgLyogU2tpcCBob3N0bmFtZSBjaGVjaywgaXQncyBhbGxvd2VkIHRvIGJlIGVtcHR5LiAqLworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGlmKGhvc3RuYW1lX2NoZWNrKHUsIChjaGFyICopbmV3cCkpIHsKKyAgICAgICAgICBmcmVlKChjaGFyICopbmV3cCk7CisgICAgICAgICAgcmV0dXJuIENVUkxVRV9NQUxGT1JNRURfSU5QVVQ7CisgICAgICAgIH0KICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3VybGRhdGEuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3VybGRhdGEuaAppbmRleCBkNzU5NTkyLi5lMTM0OGNmIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi91cmxkYXRhLmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdXJsZGF0YS5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC02OCw2ICs2OCw3IEBACiAjZGVmaW5lIFBST1RPX0ZBTUlMWV9QT1AzIChDVVJMUFJPVE9fUE9QM3xDVVJMUFJPVE9fUE9QM1MpCiAjZGVmaW5lIFBST1RPX0ZBTUlMWV9TTUIgIChDVVJMUFJPVE9fU01CfENVUkxQUk9UT19TTUJTKQogI2RlZmluZSBQUk9UT19GQU1JTFlfU01UUCAoQ1VSTFBST1RPX1NNVFB8Q1VSTFBST1RPX1NNVFBTKQorI2RlZmluZSBQUk9UT19GQU1JTFlfU1NIICAoQ1VSTFBST1RPX1NDUHxDVVJMUFJPVE9fU0ZUUCkKIAogI2RlZmluZSBERUZBVUxUX0NPTk5DQUNIRV9TSVpFIDUKIApAQCAtMTIzLDEyICsxMjQsMTMgQEAKICNpbmNsdWRlICJzbXRwLmgiCiAjaW5jbHVkZSAiZnRwLmgiCiAjaW5jbHVkZSAiZmlsZS5oIgotI2luY2x1ZGUgInNzaC5oIgorI2luY2x1ZGUgInZzc2gvc3NoLmgiCiAjaW5jbHVkZSAiaHR0cC5oIgogI2luY2x1ZGUgInJ0c3AuaCIKICNpbmNsdWRlICJzbWIuaCIKICNpbmNsdWRlICJ3aWxkY2FyZC5oIgogI2luY2x1ZGUgIm11bHRpaGFuZGxlLmgiCisjaW5jbHVkZSAicXVpYy5oIgogCiAjaWZkZWYgSEFWRV9HU1NBUEkKICMgaWZkZWYgSEFWRV9HU1NHTlUKQEAgLTE1Nyw3ICsxNTksMTMgQEAKICAgKCh4KSAmJiAoKHgpLT5tYWdpYyA9PSBDVVJMRUFTWV9NQUdJQ19OVU1CRVIpKQogCiAvKiB0aGUgdHlwZSB3ZSB1c2UgZm9yIHN0b3JpbmcgYSBzaW5nbGUgYm9vbGVhbiBiaXQgKi8KKyNpZmRlZiBfTVNDX1ZFUgordHlwZWRlZiBib29sIGJpdDsKKyNkZWZpbmUgQklUKHgpIGJvb2wgeAorI2Vsc2UKIHR5cGVkZWYgdW5zaWduZWQgaW50IGJpdDsKKyNkZWZpbmUgQklUKHgpIGJpdCB4OjEKKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9HU1NBUEkKIC8qIFR5cGVzIG5lZWRlZCBmb3Iga3JiNS1mdHAgY29ubmVjdGlvbnMgKi8KQEAgLTE2NSw3ICsxNzMsNyBAQAogICB2b2lkICpkYXRhOwogICBzaXplX3Qgc2l6ZTsKICAgc2l6ZV90IGluZGV4OwotICBiaXQgZW9mX2ZsYWc6MTsKKyAgQklUKGVvZl9mbGFnKTsKIH07CiAKIGVudW0gcHJvdGVjdGlvbl9sZXZlbCB7CkBAIC0yMDgsNyArMjE2LDcgQEAKICNpZiBkZWZpbmVkKFVTRV9TU0wpCiAgIHN0cnVjdCBzc2xfYmFja2VuZF9kYXRhICpiYWNrZW5kOwogI2VuZGlmCi0gIGJpdCB1c2U6MTsKKyAgQklUKHVzZSk7CiB9OwogCiBzdHJ1Y3Qgc3NsX3ByaW1hcnlfY29uZmlnIHsKQEAgLTIyMSwxMCArMjI5LDExIEBACiAgIGNoYXIgKmVnZHNvY2tldDsgICAgICAgLyogcGF0aCB0byBmaWxlIGNvbnRhaW5pbmcgdGhlIEVHRCBkYWVtb24gc29ja2V0ICovCiAgIGNoYXIgKmNpcGhlcl9saXN0OyAgICAgLyogbGlzdCBvZiBjaXBoZXJzIHRvIHVzZSAqLwogICBjaGFyICpjaXBoZXJfbGlzdDEzOyAgIC8qIGxpc3Qgb2YgVExTIDEuMyBjaXBoZXIgc3VpdGVzIHRvIHVzZSAqLwotICBiaXQgdmVyaWZ5cGVlcjoxOyAgICAgIC8qIHNldCBUUlVFIGlmIHRoaXMgaXMgZGVzaXJlZCAqLwotICBiaXQgdmVyaWZ5aG9zdDoxOyAgICAgIC8qIHNldCBUUlVFIGlmIENOL1NBTiBtdXN0IG1hdGNoIGhvc3RuYW1lICovCi0gIGJpdCB2ZXJpZnlzdGF0dXM6MTsgICAgLyogc2V0IFRSVUUgaWYgY2VydGlmaWNhdGUgc3RhdHVzIG11c3QgYmUgY2hlY2tlZCAqLwotICBiaXQgc2Vzc2lvbmlkOjE7ICAgICAgIC8qIGNhY2hlIHNlc3Npb24gSURzIG9yIG5vdCAqLworICBjaGFyICpwaW5uZWRfa2V5OworICBCSVQodmVyaWZ5cGVlcik7ICAgICAgIC8qIHNldCBUUlVFIGlmIHRoaXMgaXMgZGVzaXJlZCAqLworICBCSVQodmVyaWZ5aG9zdCk7ICAgICAgIC8qIHNldCBUUlVFIGlmIENOL1NBTiBtdXN0IG1hdGNoIGhvc3RuYW1lICovCisgIEJJVCh2ZXJpZnlzdGF0dXMpOyAgICAgLyogc2V0IFRSVUUgaWYgY2VydGlmaWNhdGUgc3RhdHVzIG11c3QgYmUgY2hlY2tlZCAqLworICBCSVQoc2Vzc2lvbmlkKTsgICAgICAgIC8qIGNhY2hlIHNlc3Npb24gSURzIG9yIG5vdCAqLwogfTsKIAogc3RydWN0IHNzbF9jb25maWdfZGF0YSB7CkBAIC0yNDQsMTAgKzI1MywxMSBAQAogICBjaGFyICpwYXNzd29yZDsgLyogVExTIHBhc3N3b3JkIChmb3IsIGUuZy4sIFNSUCkgKi8KICAgZW51bSBDVVJMX1RMU0FVVEggYXV0aHR5cGU7IC8qIFRMUyBhdXRoZW50aWNhdGlvbiB0eXBlIChkZWZhdWx0IFNSUCkgKi8KICNlbmRpZgotICBiaXQgY2VydGluZm86MTsgICAgIC8qIGdhdGhlciBsb3RzIG9mIGNlcnRpZmljYXRlIGluZm8gKi8KLSAgYml0IGZhbHNlc3RhcnQ6MTsKLSAgYml0IGVuYWJsZV9iZWFzdDoxOyAvKiBhbGxvdyB0aGlzIGZsYXcgZm9yIGludGVyb3BlcmFiaWxpdHkncyBzYWtlKi8KLSAgYml0IG5vX3Jldm9rZToxOyAgICAvKiBkaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGNoZWNrcyAqLworICBCSVQoY2VydGluZm8pOyAgICAgLyogZ2F0aGVyIGxvdHMgb2YgY2VydGlmaWNhdGUgaW5mbyAqLworICBCSVQoZmFsc2VzdGFydCk7CisgIEJJVChlbmFibGVfYmVhc3QpOyAvKiBhbGxvdyB0aGlzIGZsYXcgZm9yIGludGVyb3BlcmFiaWxpdHkncyBzYWtlKi8KKyAgQklUKG5vX3Jldm9rZSk7ICAgIC8qIGRpc2FibGUgU1NMIGNlcnRpZmljYXRlIHJldm9jYXRpb24gY2hlY2tzICovCisgIEJJVChub19wYXJ0aWFsY2hhaW4pOyAvKiBkb24ndCBhY2NlcHQgcGFydGlhbCBjZXJ0aWZpY2F0ZSBjaGFpbnMgKi8KIH07CiAKIHN0cnVjdCBzc2xfZ2VuZXJhbF9jb25maWcgewpAQCAtMjkwLDggKzMwMCw4IEBACiAgIGNoYXIgKnFvcDsKICAgY2hhciAqYWxnb3JpdGhtOwogICBpbnQgbmM7IC8qIG5vdW5jZSBjb3VudCAqLwotICBiaXQgc3RhbGU6MTsgLyogc2V0IHRydWUgZm9yIHJlLW5lZ290aWF0aW9uICovCi0gIGJpdCB1c2VyaGFzaDoxOworICBCSVQoc3RhbGUpOyAvKiBzZXQgdHJ1ZSBmb3IgcmUtbmVnb3RpYXRpb24gKi8KKyAgQklUKHVzZXJoYXNoKTsKICNlbmRpZgogfTsKIApAQCAtMzU3LDYgKzM2NywxNCBAQAogICB1bnNpZ25lZCBjaGFyIG5vbmNlWzhdOwogICB2b2lkICp0YXJnZXRfaW5mbzsgLyogVGFyZ2V0SW5mbyByZWNlaXZlZCBpbiB0aGUgbnRsbSB0eXBlLTIgbWVzc2FnZSAqLwogICB1bnNpZ25lZCBpbnQgdGFyZ2V0X2luZm9fbGVuOworCisjaWYgZGVmaW5lZChOVExNX1dCX0VOQUJMRUQpCisgIC8qIHVzZWQgZm9yIGNvbW11bmljYXRpb24gd2l0aCBTYW1iYSdzIHdpbmJpbmQgZGFlbW9uIGhlbHBlciBudGxtX2F1dGggKi8KKyAgY3VybF9zb2NrZXRfdCBudGxtX2F1dGhfaGxwcl9zb2NrZXQ7CisgIHBpZF90IG50bG1fYXV0aF9obHByX3BpZDsKKyAgY2hhciAqY2hhbGxlbmdlOyAvKiBUaGUgcmVjZWl2ZWQgYmFzZTY0IGVuY29kZWQgbnRsbSB0eXBlLTIgbWVzc2FnZSAqLworICBjaGFyICpyZXNwb25zZTsgIC8qIFRoZSBnZW5lcmF0ZWQgYmFzZTY0IG50bG0gdHlwZS0xL3R5cGUtMyBtZXNzYWdlICovCisjZW5kaWYKICNlbmRpZgogfTsKICNlbmRpZgpAQCAtMzg1LDEwICs0MDMsMTAgQEAKICAgc2l6ZV90IG91dHB1dF90b2tlbl9sZW5ndGg7CiAjZW5kaWYKICNlbmRpZgotICBib29sIG5vYXV0aHBlcnNpc3Q7Ci0gIGJvb2wgaGF2ZW5vYXV0aHBlcnNpc3Q7Ci0gIGJvb2wgaGF2ZW5lZ2RhdGE7Ci0gIGJvb2wgaGF2ZW11bHRpcGxlcmVxdWVzdHM7CisgIEJJVChub2F1dGhwZXJzaXN0KTsKKyAgQklUKGhhdmVub2F1dGhwZXJzaXN0KTsKKyAgQklUKGhhdmVuZWdkYXRhKTsKKyAgQklUKGhhdmVtdWx0aXBsZXJlcXVlc3RzKTsKIH07CiAjZW5kaWYKIApAQCAtNDAyLDYzICs0MjAsNjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBjb21wbGV0ZSAqLwogICBib29sIHRjcGNvbm5lY3RbMl07IC8qIHRoZSBUQ1AgbGF5ZXIgKG9yIHNpbWlsYXIpIGlzIGNvbm5lY3RlZCwgdGhpcyBpcyBzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZmlyc3QgdGltZSBvbiB0aGUgZmlyc3QgY29ubmVjdCBmdW5jdGlvbiBjYWxsICovCi0gIGJpdCBjbG9zZToxOyAvKiBpZiBzZXQsIHdlIGNsb3NlIHRoZSBjb25uZWN0aW9uIGFmdGVyIHRoaXMgcmVxdWVzdCAqLwotICBiaXQgcmV1c2U6MTsgLyogaWYgc2V0LCB0aGlzIGlzIGEgcmUtdXNlZCBjb25uZWN0aW9uICovCi0gIGJpdCBjb25uX3RvX2hvc3Q6MTsgLyogaWYgc2V0LCB0aGlzIGNvbm5lY3Rpb24gaGFzIGEgImNvbm5lY3QgdG8gaG9zdCIKLSAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IG92ZXJyaWRlcyB0aGUgaG9zdCBpbiB0aGUgVVJMICovCi0gIGJpdCBjb25uX3RvX3BvcnQ6MTsgLyogaWYgc2V0LCB0aGlzIGNvbm5lY3Rpb24gaGFzIGEgImNvbm5lY3QgdG8gcG9ydCIKLSAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IG92ZXJyaWRlcyB0aGUgcG9ydCBpbiB0aGUgVVJMIChyZW1vdGUgcG9ydCkgKi8KLSAgYml0IHByb3h5OjE7IC8qIGlmIHNldCwgdGhpcyB0cmFuc2ZlciBpcyBkb25lIHRocm91Z2ggYSBwcm94eSAtIGFueSB0eXBlICovCi0gIGJpdCBodHRwcHJveHk6MTsgIC8qIGlmIHNldCwgdGhpcyB0cmFuc2ZlciBpcyBkb25lIHRocm91Z2ggYSBodHRwIHByb3h5ICovCi0gIGJpdCBzb2Nrc3Byb3h5OjE7IC8qIGlmIHNldCwgdGhpcyB0cmFuc2ZlciBpcyBkb25lIHRocm91Z2ggYSBzb2NrcyBwcm94eSAqLwotICBiaXQgdXNlcl9wYXNzd2Q6MTsgLyogZG8gd2UgdXNlIHVzZXIrcGFzc3dvcmQgZm9yIHRoaXMgY29ubmVjdGlvbj8gKi8KLSAgYml0IHByb3h5X3VzZXJfcGFzc3dkOjE7IC8qIHVzZXIrcGFzc3dvcmQgZm9yIHRoZSBwcm94eT8gKi8KLSAgYml0IGlwdjZfaXA6MTsgLyogd2UgY29tbXVuaWNhdGUgd2l0aCBhIHJlbW90ZSBzaXRlIHNwZWNpZmllZCB3aXRoIHB1cmUgSVB2NgotICAgICAgICAgICAgICAgICAgICBJUCBhZGRyZXNzICovCi0gIGJpdCBpcHY2OjE7ICAgIC8qIHdlIGNvbW11bmljYXRlIHdpdGggYSBzaXRlIHVzaW5nIGFuIElQdjYgYWRkcmVzcyAqLwotICBiaXQgZG9fbW9yZToxOyAvKiB0aGlzIGlzIHNldCBUUlVFIGlmIHRoZSAtPmN1cmxfZG9fbW9yZSgpIGZ1bmN0aW9uIGlzCi0gICAgICAgICAgICAgICAgICAgIHN1cHBvc2VkIHRvIGJlIGNhbGxlZCwgYWZ0ZXIgLT5jdXJsX2RvKCkgKi8KLSAgYml0IHByb3RvY29ubnN0YXJ0OjE7LyogdGhlIHByb3RvY29sIGxheWVyIGhhcyBTVEFSVEVEIGl0cyBvcGVyYXRpb24gYWZ0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFRDUCBsYXllciBjb25uZWN0ICovCi0gIGJpdCByZXRyeToxOyAgICAgICAgIC8qIHRoaXMgY29ubmVjdGlvbiBpcyBhYm91dCB0byBnZXQgY2xvc2VkIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlLWF0dGVtcHRlZCBhdCBhbm90aGVyIGNvbm5lY3Rpb24uICovCi0gIGJpdCB0dW5uZWxfcHJveHk6MTsgIC8qIGlmIENPTk5FQ1QgaXMgdXNlZCB0byAidHVubmVsIiB0aHJvdWdoIHRoZSBwcm94eS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBpbXBsaWNpdCB3aGVuIFNTTC1wcm90b2NvbHMgYXJlIHVzZWQgdGhyb3VnaAotICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94aWVzLCBidXQgY2FuIGFsc28gYmUgZW5hYmxlZCBleHBsaWNpdGx5IGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHMgKi8KLSAgYml0IGF1dGhuZWc6MTsgICAgICAgLyogVFJVRSB3aGVuIHRoZSBhdXRoIHBoYXNlIGhhcyBzdGFydGVkLCB3aGljaCBtZWFucwotICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdlIGFyZSBjcmVhdGluZyBhIHJlcXVlc3Qgd2l0aCBhbiBhdXRoIGhlYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGl0IGlzIG5vdCB0aGUgZmluYWwgcmVxdWVzdCBpbiB0aGUgYXV0aAotICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdvdGlhdGlvbi4gKi8KLSAgYml0IHJld2luZGFmdGVyc2VuZDoxOy8qIFRSVUUgd2hlbiB0aGUgc2VuZGluZyBjb3VsZG4ndCBiZSBzdG9wcGVkIGV2ZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRob3VnaCBpdCB3aWxsIGJlIGRpc2NhcmRlZC4gV2hlbiB0aGUgd2hvbGUgc2VuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uIGlzIGRvbmUsIHdlIG11c3QgY2FsbCB0aGUgZGF0YSByZXdpbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLiAqLworICBCSVQoY2xvc2UpOyAvKiBpZiBzZXQsIHdlIGNsb3NlIHRoZSBjb25uZWN0aW9uIGFmdGVyIHRoaXMgcmVxdWVzdCAqLworICBCSVQocmV1c2UpOyAvKiBpZiBzZXQsIHRoaXMgaXMgYSByZS11c2VkIGNvbm5lY3Rpb24gKi8KKyAgQklUKGFsdHVzZWQpOyAvKiB0aGlzIGlzIGFuIGFsdC1zdmMgInJlZGlyZWN0IiAqLworICBCSVQoY29ubl90b19ob3N0KTsgLyogaWYgc2V0LCB0aGlzIGNvbm5lY3Rpb24gaGFzIGEgImNvbm5lY3QgdG8gaG9zdCIKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgb3ZlcnJpZGVzIHRoZSBob3N0IGluIHRoZSBVUkwgKi8KKyAgQklUKGNvbm5fdG9fcG9ydCk7IC8qIGlmIHNldCwgdGhpcyBjb25uZWN0aW9uIGhhcyBhICJjb25uZWN0IHRvIHBvcnQiCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IG92ZXJyaWRlcyB0aGUgcG9ydCBpbiB0aGUgVVJMIChyZW1vdGUgcG9ydCkgKi8KKyAgQklUKHByb3h5KTsgLyogaWYgc2V0LCB0aGlzIHRyYW5zZmVyIGlzIGRvbmUgdGhyb3VnaCBhIHByb3h5IC0gYW55IHR5cGUgKi8KKyAgQklUKGh0dHBwcm94eSk7ICAvKiBpZiBzZXQsIHRoaXMgdHJhbnNmZXIgaXMgZG9uZSB0aHJvdWdoIGEgaHR0cCBwcm94eSAqLworICBCSVQoc29ja3Nwcm94eSk7IC8qIGlmIHNldCwgdGhpcyB0cmFuc2ZlciBpcyBkb25lIHRocm91Z2ggYSBzb2NrcyBwcm94eSAqLworICBCSVQodXNlcl9wYXNzd2QpOyAvKiBkbyB3ZSB1c2UgdXNlcitwYXNzd29yZCBmb3IgdGhpcyBjb25uZWN0aW9uPyAqLworICBCSVQocHJveHlfdXNlcl9wYXNzd2QpOyAvKiB1c2VyK3Bhc3N3b3JkIGZvciB0aGUgcHJveHk/ICovCisgIEJJVChpcHY2X2lwKTsgLyogd2UgY29tbXVuaWNhdGUgd2l0aCBhIHJlbW90ZSBzaXRlIHNwZWNpZmllZCB3aXRoIHB1cmUgSVB2NgorICAgICAgICAgICAgICAgICAgIElQIGFkZHJlc3MgKi8KKyAgQklUKGlwdjYpOyAgICAvKiB3ZSBjb21tdW5pY2F0ZSB3aXRoIGEgc2l0ZSB1c2luZyBhbiBJUHY2IGFkZHJlc3MgKi8KKyAgQklUKGRvX21vcmUpOyAvKiB0aGlzIGlzIHNldCBUUlVFIGlmIHRoZSAtPmN1cmxfZG9fbW9yZSgpIGZ1bmN0aW9uIGlzCisgICAgICAgICAgICAgICAgICAgc3VwcG9zZWQgdG8gYmUgY2FsbGVkLCBhZnRlciAtPmN1cmxfZG8oKSAqLworICBCSVQocHJvdG9jb25uc3RhcnQpOy8qIHRoZSBwcm90b2NvbCBsYXllciBoYXMgU1RBUlRFRCBpdHMgb3BlcmF0aW9uIGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFRDUCBsYXllciBjb25uZWN0ICovCisgIEJJVChyZXRyeSk7ICAgICAgICAgLyogdGhpcyBjb25uZWN0aW9uIGlzIGFib3V0IHRvIGdldCBjbG9zZWQgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICByZS1hdHRlbXB0ZWQgYXQgYW5vdGhlciBjb25uZWN0aW9uLiAqLworICBCSVQodHVubmVsX3Byb3h5KTsgIC8qIGlmIENPTk5FQ1QgaXMgdXNlZCB0byAidHVubmVsIiB0aHJvdWdoIHRoZSBwcm94eS4KKyAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGltcGxpY2l0IHdoZW4gU1NMLXByb3RvY29scyBhcmUgdXNlZCB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJveGllcywgYnV0IGNhbiBhbHNvIGJlIGVuYWJsZWQgZXhwbGljaXRseSBieQorICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHMgKi8KKyAgQklUKGF1dGhuZWcpOyAgICAgICAvKiBUUlVFIHdoZW4gdGhlIGF1dGggcGhhc2UgaGFzIHN0YXJ0ZWQsIHdoaWNoIG1lYW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB3ZSBhcmUgY3JlYXRpbmcgYSByZXF1ZXN0IHdpdGggYW4gYXV0aCBoZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGl0IGlzIG5vdCB0aGUgZmluYWwgcmVxdWVzdCBpbiB0aGUgYXV0aAorICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ290aWF0aW9uLiAqLworICBCSVQocmV3aW5kYWZ0ZXJzZW5kKTsvKiBUUlVFIHdoZW4gdGhlIHNlbmRpbmcgY291bGRuJ3QgYmUgc3RvcHBlZCBldmVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRob3VnaCBpdCB3aWxsIGJlIGRpc2NhcmRlZC4gV2hlbiB0aGUgd2hvbGUgc2VuZAorICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gaXMgZG9uZSwgd2UgbXVzdCBjYWxsIHRoZSBkYXRhIHJld2luZAorICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay4gKi8KICNpZm5kZWYgQ1VSTF9ESVNBQkxFX0ZUUAotICBiaXQgZnRwX3VzZV9lcHN2OjE7ICAvKiBBcyBzZXQgd2l0aCBDVVJMT1BUX0ZUUF9VU0VfRVBTViwgYnV0IGlmIHdlIGZpbmQgb3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEVQU1YgZG9lc24ndCB3b3JrIHdlIGRpc2FibGUgaXQgZm9yIHRoZSBmb3J0aGNvbWluZwotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyAqLwotICBiaXQgZnRwX3VzZV9lcHJ0OjE7ICAvKiBBcyBzZXQgd2l0aCBDVVJMT1BUX0ZUUF9VU0VfRVBSVCwgYnV0IGlmIHdlIGZpbmQgb3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEVQUlQgZG9lc24ndCB3b3JrIHdlIGRpc2FibGUgaXQgZm9yIHRoZSBmb3J0aGNvbWluZwotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyAqLwotICBiaXQgZnRwX3VzZV9kYXRhX3NzbDoxOyAvKiBFbmFibGVkIFNTTCBmb3IgdGhlIGRhdGEgY29ubmVjdGlvbiAqLworICBCSVQoZnRwX3VzZV9lcHN2KTsgIC8qIEFzIHNldCB3aXRoIENVUkxPUFRfRlRQX1VTRV9FUFNWLCBidXQgaWYgd2UgZmluZCBvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICBFUFNWIGRvZXNuJ3Qgd29yayB3ZSBkaXNhYmxlIGl0IGZvciB0aGUgZm9ydGhjb21pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyAqLworICBCSVQoZnRwX3VzZV9lcHJ0KTsgIC8qIEFzIHNldCB3aXRoIENVUkxPUFRfRlRQX1VTRV9FUFJULCBidXQgaWYgd2UgZmluZCBvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICBFUFJUIGRvZXNuJ3Qgd29yayB3ZSBkaXNhYmxlIGl0IGZvciB0aGUgZm9ydGhjb21pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyAqLworICBCSVQoZnRwX3VzZV9kYXRhX3NzbCk7IC8qIEVuYWJsZWQgU1NMIGZvciB0aGUgZGF0YSBjb25uZWN0aW9uICovCiAjZW5kaWYKLSAgYml0IG5ldHJjOjE7ICAgICAgICAgLyogbmFtZStwYXNzd29yZCBwcm92aWRlZCBieSBuZXRyYyAqLwotICBiaXQgdXNlcnB3ZF9pbl91cmw6MTsgLyogbmFtZStwYXNzd29yZCBmb3VuZCBpbiB1cmwgKi8KLSAgYml0IHN0cmVhbV93YXNfcmV3b3VuZDoxOyAvKiBUaGUgc3RyZWFtIHdhcyByZXdvdW5kIGFmdGVyIGEgcmVxdWVzdCByZWFkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdCB0aGUgZW5kIG9mIGl0cyByZXNwb25zZSBieXRlIGJvdW5kYXJ5ICovCi0gIGJpdCBwcm94eV9jb25uZWN0X2Nsb3NlZDoxOyAvKiBUUlVFIGlmIGEgcHJveHkgZGlzY29ubmVjdGVkIHRoZSBjb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIENPTk5FQ1QgcmVxdWVzdCB3aXRoIGF1dGgsIHNvIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYmN1cmwgc2hvdWxkIHJlY29ubmVjdCBhbmQgY29udGludWUuICovCi0gIGJpdCBib3VuZDoxOyAvKiBzZXQgdHJ1ZSBpZiBiaW5kKCkgaGFzIGFscmVhZHkgYmVlbiBkb25lIG9uIHRoaXMgc29ja2V0LwotICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiAqLwotICBiaXQgdHlwZV9zZXQ6MTsgIC8qIHR5cGU9IHdhcyB1c2VkIGluIHRoZSBVUkwgKi8KLSAgYml0IG11bHRpcGxleDoxOyAvKiBjb25uZWN0aW9uIGlzIG11bHRpcGxleGVkICovCi0gIGJpdCB0Y3BfZmFzdG9wZW46MTsgLyogdXNlIFRDUCBGYXN0IE9wZW4gKi8KLSAgYml0IHRsc19lbmFibGVfbnBuOjE7ICAvKiBUTFMgTlBOIGV4dGVuc2lvbj8gKi8KLSAgYml0IHRsc19lbmFibGVfYWxwbjoxOyAvKiBUTFMgQUxQTiBleHRlbnNpb24/ICovCi0gIGJpdCBzb2Nrc3Byb3h5X2Nvbm5lY3Rpbmc6MTsgLyogY29ubmVjdGluZyB0aHJvdWdoIGEgc29ja3MgcHJveHkgKi8KLSAgYml0IGNvbm5lY3Rfb25seToxOworICBCSVQobmV0cmMpOyAgICAgICAgIC8qIG5hbWUrcGFzc3dvcmQgcHJvdmlkZWQgYnkgbmV0cmMgKi8KKyAgQklUKHVzZXJwd2RfaW5fdXJsKTsgLyogbmFtZStwYXNzd29yZCBmb3VuZCBpbiB1cmwgKi8KKyAgQklUKHN0cmVhbV93YXNfcmV3b3VuZCk7IC8qIFRoZSBzdHJlYW0gd2FzIHJld291bmQgYWZ0ZXIgYSByZXF1ZXN0IHJlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3QgdGhlIGVuZCBvZiBpdHMgcmVzcG9uc2UgYnl0ZSBib3VuZGFyeSAqLworICBCSVQocHJveHlfY29ubmVjdF9jbG9zZWQpOyAvKiBUUlVFIGlmIGEgcHJveHkgZGlzY29ubmVjdGVkIHRoZSBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgQ09OTkVDVCByZXF1ZXN0IHdpdGggYXV0aCwgc28gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJjdXJsIHNob3VsZCByZWNvbm5lY3QgYW5kIGNvbnRpbnVlLiAqLworICBCSVQoYm91bmQpOyAvKiBzZXQgdHJ1ZSBpZiBiaW5kKCkgaGFzIGFscmVhZHkgYmVlbiBkb25lIG9uIHRoaXMgc29ja2V0LworICAgICAgICAgICAgICAgICBjb25uZWN0aW9uICovCisgIEJJVCh0eXBlX3NldCk7ICAvKiB0eXBlPSB3YXMgdXNlZCBpbiB0aGUgVVJMICovCisgIEJJVChtdWx0aXBsZXgpOyAvKiBjb25uZWN0aW9uIGlzIG11bHRpcGxleGVkICovCisgIEJJVCh0Y3BfZmFzdG9wZW4pOyAvKiB1c2UgVENQIEZhc3QgT3BlbiAqLworICBCSVQodGxzX2VuYWJsZV9ucG4pOyAgLyogVExTIE5QTiBleHRlbnNpb24/ICovCisgIEJJVCh0bHNfZW5hYmxlX2FscG4pOyAvKiBUTFMgQUxQTiBleHRlbnNpb24/ICovCisgIEJJVChjb25uZWN0X29ubHkpOwogfTsKIAogc3RydWN0IGhvc3RuYW1lIHsKQEAgLTQ5MSw3ICs1MDksNyBAQAogICBzdHJ1Y3QgQ3VybF9kbnNfZW50cnkgKmRuczsKICAgaW50IHN0YXR1czsgLyogaWYgZG9uZSBpcyBUUlVFLCB0aGlzIGlzIHRoZSBzdGF0dXMgZnJvbSB0aGUgY2FsbGJhY2sgKi8KICAgdm9pZCAqb3Nfc3BlY2lmaWM7ICAvKiAnc3RydWN0IHRocmVhZF9kYXRhJyBmb3IgV2luZG93cyAqLwotICBiaXQgZG9uZToxOyAgLyogc2V0IFRSVUUgd2hlbiB0aGUgbG9va3VwIGlzIGNvbXBsZXRlICovCisgIEJJVChkb25lKTsgIC8qIHNldCBUUlVFIHdoZW4gdGhlIGxvb2t1cCBpcyBjb21wbGV0ZSAqLwogfTsKIAogI2RlZmluZSBGSVJTVFNPQ0tFVCAgICAgMApAQCAtNTE4LDYgKzUzNiwyNCBAQAogICBVUEdSMTAxX1dPUktJTkcgICAgICAgICAgICAgLyogdGFsa2luZyB1cGdyYWRlZCBwcm90b2NvbCAqLwogfTsKIAorZW51bSBkb2hfc2xvdHMgeworICAvKiBFeHBsaWNpdCB2YWx1ZXMgZm9yIGZpcnN0IHR3byBzeW1ib2xzIHNvIGFzIHRvIG1hdGNoIGhhcmQtY29kZWQKKyAgICogY29uc3RhbnRzIGluIGV4aXN0aW5nIGNvZGUKKyAgICovCisgIERPSF9QUk9CRV9TTE9UX0lQQUREUl9WNCA9IDAsIC8qIG1ha2UgJ1Y0JyBzdGFuZCBvdXQgZm9yIHJlYWRhYmlsaXR5ICovCisgIERPSF9QUk9CRV9TTE9UX0lQQUREUl9WNiA9IDEsIC8qICdWNicgbGlrZXdpc2UgKi8KKworICAvKiBTcGFjZSBoZXJlIGZvciAocG9zc2libHkgYnVpbGQtc3BlY2lmaWMpIGFkZGl0aW9uYWwgc2xvdCBkZWZpbml0aW9ucyAqLworCisgIC8qIGZvciBleGFtcGxlICovCisgIC8qICNpZmRlZiBXQU5UX0RPSF9GT09CQVJfVFhUICovCisgIC8qICAgRE9IX1BST0JFX1NMT1RfRk9PQkFSX1RYVCwgKi8KKyAgLyogI2VuZGlmICovCisKKyAgLyogQUZURVIgYWxsIHNsb3QgZGVmaW5pdGlvbnMsIGVzdGFibGlzaCBob3cgbWFueSB3ZSBoYXZlICovCisgIERPSF9QUk9CRV9TTE9UUworfTsKKwogc3RydWN0IGRvaHJlc3BvbnNlIHsKICAgdW5zaWduZWQgY2hhciAqbWVtb3J5OwogICBzaXplX3Qgc2l6ZTsKQEAgLTUzNCw3ICs1NzAsNyBAQAogCiBzdHJ1Y3QgZG9oZGF0YSB7CiAgIHN0cnVjdCBjdXJsX3NsaXN0ICpoZWFkZXJzOwotICBzdHJ1Y3QgZG5zcHJvYmUgcHJvYmVbMl07CisgIHN0cnVjdCBkbnNwcm9iZSBwcm9iZVtET0hfUFJPQkVfU0xPVFNdOwogICB1bnNpZ25lZCBpbnQgcGVuZGluZzsgLyogc3RpbGwgb3V0c3RhbmRpbmcgcmVxdWVzdHMgKi8KICAgY29uc3QgY2hhciAqaG9zdDsKICAgaW50IHBvcnQ7CkBAIC02MTIsMjAgKzY0OCwyMCBAQAogI2lmbmRlZiBDVVJMX0RJU0FCTEVfRE9ICiAgIHN0cnVjdCBkb2hkYXRhIGRvaDsgLyogRG9IIHNwZWNpZmljIGRhdGEgZm9yIHRoaXMgcmVxdWVzdCAqLwogI2VuZGlmCi0gIGJpdCBoZWFkZXI6MTsgICAgICAgLyogaW5jb21pbmcgZGF0YSBoYXMgSFRUUCBoZWFkZXIgKi8KLSAgYml0IGNvbnRlbnRfcmFuZ2U6MTsgLyogc2V0IFRSVUUgaWYgQ29udGVudC1SYW5nZTogd2FzIGZvdW5kICovCi0gIGJpdCB1cGxvYWRfZG9uZToxOyAgLyogc2V0IHRvIFRSVUUgd2hlbiBkb2luZyBjaHVua2VkIHRyYW5zZmVyLWVuY29kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkIGFuZCB3ZSdyZSB1cGxvYWRpbmcgdGhlIGxhc3QgY2h1bmsgKi8KLSAgYml0IGlnbm9yZWJvZHk6MTsgICAvKiB3ZSByZWFkIGEgcmVzcG9uc2UtYm9keSBidXQgd2UgaWdub3JlIGl0ISAqLwotICBiaXQgaWdub3JlY2w6MTsgICAgIC8qIFRoaXMgSFRUUCByZXNwb25zZSBoYXMgbm8gYm9keSBzbyB3ZSBpZ25vcmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudC1MZW5ndGg6IGhlYWRlciAqLwotICBiaXQgY2h1bms6MTsgLyogaWYgc2V0LCB0aGlzIGlzIGEgY2h1bmtlZCB0cmFuc2Zlci1lbmNvZGluZyAqLwotICBiaXQgdXBsb2FkX2NodW5reToxOyAvKiBzZXQgVFJVRSBpZiB3ZSBhcmUgZG9pbmcgY2h1bmtlZCB0cmFuc2Zlci1lbmNvZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB1cGxvYWQgKi8KLSAgYml0IGdldGhlYWRlcjoxOyAgICAvKiBUUlVFIGlmIGhlYWRlciBwYXJzaW5nIGlzIHdhbnRlZCAqLwotICBiaXQgZm9yYmlkY2h1bms6MTsgIC8qIHVzZWQgb25seSB0byBleHBsaWNpdGx5IGZvcmJpZCBjaHVuay11cGxvYWQgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdXBsb2FkIGJ1ZmZlcnMuIFNlZSByZWFkbW9yZWRhdGEoKSBpbiBodHRwLmMKLSAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGV0YWlscy4gKi8KKyAgQklUKGhlYWRlcik7ICAgICAgIC8qIGluY29taW5nIGRhdGEgaGFzIEhUVFAgaGVhZGVyICovCisgIEJJVChjb250ZW50X3JhbmdlKTsgLyogc2V0IFRSVUUgaWYgQ29udGVudC1SYW5nZTogd2FzIGZvdW5kICovCisgIEJJVCh1cGxvYWRfZG9uZSk7ICAvKiBzZXQgdG8gVFJVRSB3aGVuIGRvaW5nIGNodW5rZWQgdHJhbnNmZXItZW5jb2RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZCBhbmQgd2UncmUgdXBsb2FkaW5nIHRoZSBsYXN0IGNodW5rICovCisgIEJJVChpZ25vcmVib2R5KTsgICAvKiB3ZSByZWFkIGEgcmVzcG9uc2UtYm9keSBidXQgd2UgaWdub3JlIGl0ISAqLworICBCSVQoaHR0cF9ib2R5bGVzcyk7IC8qIEhUVFAgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgaXMgYmV0d2VlbiAxMDAgYW5kIDE5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAyMDQgb3IgMzA0ICovCisgIEJJVChjaHVuayk7IC8qIGlmIHNldCwgdGhpcyBpcyBhIGNodW5rZWQgdHJhbnNmZXItZW5jb2RpbmcgKi8KKyAgQklUKHVwbG9hZF9jaHVua3kpOyAvKiBzZXQgVFJVRSBpZiB3ZSBhcmUgZG9pbmcgY2h1bmtlZCB0cmFuc2Zlci1lbmNvZGluZworICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHVwbG9hZCAqLworICBCSVQoZ2V0aGVhZGVyKTsgICAgLyogVFJVRSBpZiBoZWFkZXIgcGFyc2luZyBpcyB3YW50ZWQgKi8KKyAgQklUKGZvcmJpZGNodW5rKTsgIC8qIHVzZWQgb25seSB0byBleHBsaWNpdGx5IGZvcmJpZCBjaHVuay11cGxvYWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB1cGxvYWQgYnVmZmVycy4gU2VlIHJlYWRtb3JlZGF0YSgpIGluIGh0dHAuYworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRldGFpbHMuICovCiB9OwogCiAvKgpAQCAtNjYzLDI3ICs2OTksMjMgQEAKICAgLyogQ2FsbGVkIGZyb20gdGhlIG11bHRpIGludGVyZmFjZSBkdXJpbmcgdGhlIFBST1RPQ09OTkVDVCBwaGFzZSwgYW5kIGl0CiAgICAgIHNob3VsZCB0aGVuIHJldHVybiBhIHByb3BlciBmZCBzZXQgKi8KICAgaW50ICgqcHJvdG9fZ2V0c29jaykoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MpOwogCiAgIC8qIENhbGxlZCBmcm9tIHRoZSBtdWx0aSBpbnRlcmZhY2UgZHVyaW5nIHRoZSBET0lORyBwaGFzZSwgYW5kIGl0IHNob3VsZAogICAgICB0aGVuIHJldHVybiBhIHByb3BlciBmZCBzZXQgKi8KICAgaW50ICgqZG9pbmdfZ2V0c29jaykoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MpOwogCiAgIC8qIENhbGxlZCBmcm9tIHRoZSBtdWx0aSBpbnRlcmZhY2UgZHVyaW5nIHRoZSBET19NT1JFIHBoYXNlLCBhbmQgaXQgc2hvdWxkCiAgICAgIHRoZW4gcmV0dXJuIGEgcHJvcGVyIGZkIHNldCAqLwogICBpbnQgKCpkb21vcmVfZ2V0c29jaykoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpOworICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MpOwogCiAgIC8qIENhbGxlZCBmcm9tIHRoZSBtdWx0aSBpbnRlcmZhY2UgZHVyaW5nIHRoZSBET19ET05FLCBQRVJGT1JNIGFuZAogICAgICBXQUlUUEVSRk9STSBwaGFzZXMsIGFuZCBpdCBzaG91bGQgdGhlbiByZXR1cm4gYSBwcm9wZXIgZmQgc2V0LiBOb3Qgc2V0dGluZwogICAgICB0aGlzIHdpbGwgbWFrZSBsaWJjdXJsIHVzZSB0aGUgZ2VuZXJpYyBkZWZhdWx0IG9uZS4gKi8KICAgaW50ICgqcGVyZm9ybV9nZXRzb2NrKShjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2Nrcyk7CiAKICAgLyogVGhpcyBmdW5jdGlvbiAqTUFZKiBiZSBzZXQgdG8gYSBwcm90b2NvbC1kZXBlbmRlbnQgZnVuY3Rpb24gdGhhdCBpcyBydW4KICAgICogYnkgdGhlIGN1cmxfZGlzY29ubmVjdCgpLCBhcyBhIHN0ZXAgaW4gdGhlIGRpc2Nvbm5lY3Rpb24uICBJZiB0aGUgaGFuZGxlcgpAQCAtNzc4LDggKzgxMCw0NSBAQAogICAgIFRVTk5FTF9DT05ORUNULCAvKiBDT05ORUNUIGhhcyBiZWVuIHNlbnQgb2ZmICovCiAgICAgVFVOTkVMX0NPTVBMRVRFIC8qIENPTk5FQ1QgcmVzcG9uc2UgcmVjZWl2ZWQgY29tcGxldGVseSAqLwogICB9IHR1bm5lbF9zdGF0ZTsKLSAgYml0IGNodW5rZWRfZW5jb2Rpbmc6MTsKLSAgYml0IGNsb3NlX2Nvbm5lY3Rpb246MTsKKyAgQklUKGNodW5rZWRfZW5jb2RpbmcpOworICBCSVQoY2xvc2VfY29ubmVjdGlvbik7Cit9OworCitzdHJ1Y3QgbGRhcGNvbm5pbmZvOworCisvKiBmb3IgdGhlIChTT0NLUykgY29ubmVjdCBzdGF0ZSBtYWNoaW5lICovCitlbnVtIGNvbm5lY3RfdCB7CisgIENPTk5FQ1RfSU5JVCwKKyAgQ09OTkVDVF9TT0NLU19JTklULCAvKiAxICovCisgIENPTk5FQ1RfU09DS1NfU0VORCwgLyogMiB3YWl0aW5nIHRvIHNlbmQgbW9yZSBmaXJzdCBkYXRhICovCisgIENPTk5FQ1RfU09DS1NfUkVBRF9JTklULCAvKiAzIHNldCB1cCByZWFkICovCisgIENPTk5FQ1RfU09DS1NfUkVBRCwgLyogNCByZWFkIHNlcnZlciByZXNwb25zZSAqLworICBDT05ORUNUX0dTU0FQSV9JTklULCAvKiA1ICovCisgIENPTk5FQ1RfQVVUSF9JTklULCAvKiA2IHNldHVwIG91dGdvaW5nIGF1dGggYnVmZmVyICovCisgIENPTk5FQ1RfQVVUSF9TRU5ELCAvKiA3IHNlbmQgYXV0aCAqLworICBDT05ORUNUX0FVVEhfUkVBRCwgLyogOCByZWFkIGF1dGggcmVzcG9uc2UgKi8KKyAgQ09OTkVDVF9SRVFfSU5JVCwgIC8qIDkgaW5pdCBTT0NLUyAicmVxdWVzdCIgKi8KKyAgQ09OTkVDVF9SRVNPTFZJTkcsIC8qIDEwICovCisgIENPTk5FQ1RfUkVTT0xWRUQsICAvKiAxMSAqLworICBDT05ORUNUX1JFU09MVkVfUkVNT1RFLCAvKiAxMiAqLworICBDT05ORUNUX1JFUV9TRU5ELCAgLyogMTMgKi8KKyAgQ09OTkVDVF9SRVFfU0VORElORywgLyogMTQgKi8KKyAgQ09OTkVDVF9SRVFfUkVBRCwgIC8qIDE1ICovCisgIENPTk5FQ1RfUkVRX1JFQURfTU9SRSwgLyogMTYgKi8KKyAgQ09OTkVDVF9ET05FIC8qIDE3IGNvbm5lY3RlZCBmaW5lIHRvIHRoZSByZW1vdGUgb3IgdGhlIFNPQ0tTIHByb3h5ICovCit9OworCisjZGVmaW5lIFNPQ0tTX1NUQVRFKHgpICgoKHgpID49IENPTk5FQ1RfU09DS1NfSU5JVCkgJiYgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICgoeCkgPCBDT05ORUNUX0RPTkUpKQorI2RlZmluZSBTT0NLU19SRVFVRVNUX0JVRlNJWkUgNjAwICAvKiByb29tIGZvciBsYXJnZSB1c2VyL3B3ICgyNTUgbWF4IGVhY2gpICovCisKK3N0cnVjdCBjb25uc3RhdGUgeworICBlbnVtIGNvbm5lY3RfdCBzdGF0ZTsKKyAgdW5zaWduZWQgY2hhciBzb2Nrc3JlcVtTT0NLU19SRVFVRVNUX0JVRlNJWkVdOworCisgIC8qIENPTk5FQ1RfU09DS1NfU0VORCAqLworICBzc2l6ZV90IG91dHN0YW5kaW5nOyAgLyogc2VuZCB0aGlzIG1hbnkgYnl0ZXMgbW9yZSAqLworICB1bnNpZ25lZCBjaGFyICpvdXRwOyAvKiBzZW5kIGZyb20gdGhpcyBwb2ludGVyICovCiB9OwogCiAvKgpAQCAtNzkxLDcgKzg2MCw3IEBACiAgICAgIGNhdXRpb24gdGhhdCB0aGlzIG1pZ2h0IHZlcnkgd2VsbCB2YXJ5IGJldHdlZW4gZGlmZmVyZW50IHRpbWVzIHRoaXMKICAgICAgY29ubmVjdGlvbiBpcyB1c2VkISAqLwogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhOwotCisgIHN0cnVjdCBjb25uc3RhdGUgY25uY3Q7CiAgIHN0cnVjdCBjdXJsX2xsaXN0X2VsZW1lbnQgYnVuZGxlX25vZGU7IC8qIGNvbm5jYWNoZSAqLwogCiAgIC8qIGNodW5rIGlzIGZvciBIVFRQIGNodW5rZWQgZW5jb2RpbmcsIGJ1dCBpcyBpbiB0aGUgZ2VuZXJhbCBjb25uZWN0ZGF0YQpAQCAtODMxLDcgKzkwMCwxNiBAQAogCiAgIHVuc2lnbmVkIGludCBzY29wZV9pZDsgIC8qIFNjb3BlIGlkIGZvciBJUHY2ICovCiAKLSAgaW50IHNvY2t0eXBlOyAgLyogU09DS19TVFJFQU0gb3IgU09DS19ER1JBTSAqLworICBlbnVtIHsKKyAgICBUUk5TUFJUX1RDUCA9IDMsCisgICAgVFJOU1BSVF9VRFAgPSA0LAorICAgIFRSTlNQUlRfUVVJQyA9IDUKKyAgfSB0cmFuc3BvcnQ7CisKKyNpZmRlZiBFTkFCTEVfUVVJQworICBzdHJ1Y3QgcXVpY3NvY2tldCBoZXF1aWNbMl07IC8qIHR3bywgZm9yIGhhcHB5IGV5ZWJhbGxzISAqLworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXVpYzsKKyNlbmRpZgogCiAgIHN0cnVjdCBob3N0bmFtZSBob3N0OwogICBjaGFyICpob3N0bmFtZV9yZXNvbHZlOyAvKiBob3N0IG5hbWUgdG8gcmVzb2x2ZSB0byBhZGRyZXNzLCBhbGxvY2F0ZWQgKi8KQEAgLTg3MCw3ICs5NDgsNyBAQAogICBjaGFyICpwYXNzd2Q7ICAvKiBwYXNzd29yZCBzdHJpbmcsIGFsbG9jYXRlZCAqLwogICBjaGFyICpvcHRpb25zOyAvKiBvcHRpb25zIHN0cmluZywgYWxsb2NhdGVkICovCiAKLSAgY2hhciAqb2F1dGhfYmVhcmVyOyAvKiBiZWFyZXIgdG9rZW4gZm9yIE9BdXRoIDIuMCwgYWxsb2NhdGVkICovCisgIGNoYXIgKnNhc2xfYXV0aHppZDsgICAgIC8qIGF1dGhvcmlzYXRpb24gaWRlbnRpdHkgc3RyaW5nLCBhbGxvY2F0ZWQgKi8KIAogICBpbnQgaHR0cHZlcnNpb247ICAgICAgICAvKiB0aGUgSFRUUCB2ZXJzaW9uKjEwIHJlcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIgKi8KICAgaW50IHJ0c3B2ZXJzaW9uOyAgICAgICAgLyogdGhlIFJUU1AgdmVyc2lvbioxMCByZXBvcnRlZCBieSB0aGUgc2VydmVyICovCkBAIC04ODEsOCArOTU5LDYgQEAKICAgY3VybF9zb2NrZXRfdCBzb2NrWzJdOyAvKiB0d28gc29ja2V0cywgdGhlIHNlY29uZCBpcyB1c2VkIGZvciB0aGUgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyIHdoZW4gZG9pbmcgRlRQICovCiAgIGN1cmxfc29ja2V0X3QgdGVtcHNvY2tbMl07IC8qIHRlbXBvcmFyeSBzb2NrZXRzIGZvciBoYXBweSBleWViYWxscyAqLwotICBib29sIHNvY2tfYWNjZXB0ZWRbMl07IC8qIFRSVUUgaWYgdGhlIHNvY2tldCBvbiB0aGlzIGluZGV4IHdhcyBjcmVhdGVkIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQoKSAqLwogICBDdXJsX3JlY3YgKnJlY3ZbMl07CiAgIEN1cmxfc2VuZCAqc2VuZFsyXTsKIApAQCAtOTA0LDggKzk4MCw4IEBACiAgIHN0cnVjdCBjdXJsdGltZSBjb25uZWN0dGltZTsKICAgLyogVGhlIHR3byBmaWVsZHMgYmVsb3cgZ2V0IHNldCBpbiBDdXJsX2Nvbm5lY3Rob3N0ICovCiAgIGludCBudW1fYWRkcjsgLyogbnVtYmVyIG9mIGFkZHJlc3NlcyB0byB0cnkgdG8gY29ubmVjdCB0byAqLwotICB0aW1lX3QgdGltZW91dG1zX3Blcl9hZGRyOyAvKiBob3cgbG9uZyB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byBzcGVuZCBvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlpbmcgdG8gY29ubmVjdCB0byBlYWNoIElQIGFkZHJlc3MgKi8KKyAgdGltZWRpZmZfdCB0aW1lb3V0bXNfcGVyX2FkZHI7IC8qIGhvdyBsb25nIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIHNwZW5kIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlpbmcgdG8gY29ubmVjdCB0byBlYWNoIElQIGFkZHJlc3MgKi8KIAogICBjb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyICpoYW5kbGVyOyAvKiBDb25uZWN0aW9uJ3MgcHJvdG9jb2wgaGFuZGxlciAqLwogICBjb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyICpnaXZlbjsgICAvKiBUaGUgcHJvdG9jb2wgZmlyc3QgZ2l2ZW4gKi8KQEAgLTk0Miw3ICsxMDE4LDcgQEAKICAgfSBhbGxvY3B0cjsKIAogI2lmZGVmIEhBVkVfR1NTQVBJCi0gIGJpdCBzZWNfY29tcGxldGU6MTsgLyogaWYgS2VyYmVyb3MgaXMgZW5hYmxlZCBmb3IgdGhpcyBjb25uZWN0aW9uICovCisgIEJJVChzZWNfY29tcGxldGUpOyAvKiBpZiBLZXJiZXJvcyBpcyBlbmFibGVkIGZvciB0aGlzIGNvbm5lY3Rpb24gKi8KICAgZW51bSBwcm90ZWN0aW9uX2xldmVsIGNvbW1hbmRfcHJvdDsKICAgZW51bSBwcm90ZWN0aW9uX2xldmVsIGRhdGFfcHJvdDsKICAgZW51bSBwcm90ZWN0aW9uX2xldmVsIHJlcXVlc3RfZGF0YV9wcm90OwpAQCAtOTc0LDE0ICsxMDUwLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIGl0IGF1dGhlbnRpY2F0ZXMgY29ubmVjdGlvbnMsIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZSByZXF1ZXN0cyEgKi8KICAgc3RydWN0IG50bG1kYXRhIHByb3h5bnRsbTsgLyogTlRMTSBkYXRhIGZvciBwcm94eSAqLwotCi0jaWYgZGVmaW5lZChOVExNX1dCX0VOQUJMRUQpCi0gIC8qIHVzZWQgZm9yIGNvbW11bmljYXRpb24gd2l0aCBTYW1iYSdzIHdpbmJpbmQgZGFlbW9uIGhlbHBlciBudGxtX2F1dGggKi8KLSAgY3VybF9zb2NrZXRfdCBudGxtX2F1dGhfaGxwcl9zb2NrZXQ7Ci0gIHBpZF90IG50bG1fYXV0aF9obHByX3BpZDsKLSAgY2hhciAqY2hhbGxlbmdlX2hlYWRlcjsKLSAgY2hhciAqcmVzcG9uc2VfaGVhZGVyOwotI2VuZGlmCiAjZW5kaWYKIAogI2lmZGVmIFVTRV9TUE5FR08KQEAgLTEwMTAsNyArMTA3OCw4IEBACiAgICAgc3RydWN0IHNtdHBfY29ubiBzbXRwYzsKICAgICBzdHJ1Y3QgcnRzcF9jb25uIHJ0c3BjOwogICAgIHN0cnVjdCBzbWJfY29ubiBzbWJjOwotICAgIHZvaWQgKmdlbmVyaWM7IC8qIFJUTVAgYW5kIExEQVAgdXNlIHRoaXMgKi8KKyAgICB2b2lkICpydG1wOworICAgIHN0cnVjdCBsZGFwY29ubmluZm8gKmxkYXBjOwogICB9IHByb3RvOwogCiAgIGludCBjc2VsZWN0X2JpdHM7IC8qIGJpdG1hc2sgb2Ygc29ja2V0IGV2ZW50cyAqLwpAQCAtMTAzNCwxNiArMTEwMywxOCBAQAogCiAjaWZkZWYgVVNFX1VOSVhfU09DS0VUUwogICBjaGFyICp1bml4X2RvbWFpbl9zb2NrZXQ7Ci0gIGJpdCBhYnN0cmFjdF91bml4X3NvY2tldDoxOworICBCSVQoYWJzdHJhY3RfdW5peF9zb2NrZXQpOwogI2VuZGlmCi0gIGJpdCB0bHNfdXBncmFkZWQ6MTsKKyAgQklUKHRsc191cGdyYWRlZCk7CiAgIC8qIHRoZSB0d28gZm9sbG93aW5nICpfaW51c2UgZmllbGRzIGFyZSBvbmx5IGZsYWdzLCBub3QgY291bnRlcnMgaW4gYW55IHdheS4KICAgICAgSWYgVFJVRSBpdCBtZWFucyB0aGUgY2hhbm5lbCBpcyBpbiB1c2UsIGFuZCBpZiBGQUxTRSBpdCBtZWFucyB0aGUgY2hhbm5lbAogICAgICBpcyB1cCBmb3IgZ3JhYnMgYnkgb25lLiAqLwotICBiaXQgcmVhZGNoYW5uZWxfaW51c2U6MTsgIC8qIHdoZXRoZXIgdGhlIHJlYWQgY2hhbm5lbCBpcyBpbiB1c2UgYnkgYW4gZWFzeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSAqLwotICBiaXQgd3JpdGVjaGFubmVsX2ludXNlOjE7IC8qIHdoZXRoZXIgdGhlIHdyaXRlIGNoYW5uZWwgaXMgaW4gdXNlIGJ5IGFuIGVhc3kKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUgKi8KKyAgQklUKHJlYWRjaGFubmVsX2ludXNlKTsgIC8qIHdoZXRoZXIgdGhlIHJlYWQgY2hhbm5lbCBpcyBpbiB1c2UgYnkgYW4gZWFzeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlICovCisgIEJJVCh3cml0ZWNoYW5uZWxfaW51c2UpOyAvKiB3aGV0aGVyIHRoZSB3cml0ZSBjaGFubmVsIGlzIGluIHVzZSBieSBhbiBlYXN5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUgKi8KKyAgQklUKHNvY2tfYWNjZXB0ZWQpOyAvKiBUUlVFIGlmIHRoZSBTRUNPTkRBUllTT0NLRVQgd2FzIGNyZWF0ZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdCgpICovCiB9OwogCiAvKiBUaGUgZW5kIG9mIGNvbm5lY3RkYXRhLiAqLwpAQCAtMTA2NSw2ICsxMTM2LDcgQEAKICAgbG9uZyBudW1jb25uZWN0czsgLyogaG93IG1hbnkgbmV3IGNvbm5lY3Rpb24gZGlkIGxpYmN1cmwgY3JlYXRlZCAqLwogICBjaGFyICpjb250ZW50dHlwZTsgLyogdGhlIGNvbnRlbnQgdHlwZSBvZiB0aGUgb2JqZWN0ICovCiAgIGNoYXIgKndvdWxkcmVkaXJlY3Q7IC8qIFVSTCB0aGlzIHdvdWxkJ3ZlIGJlZW4gcmVkaXJlY3RlZCB0byBpZiBhc2tlZCB0byAqLworICBjdXJsX29mZl90IHJldHJ5X2FmdGVyOyAvKiBpbmZvIGZyb20gUmV0cnktQWZ0ZXI6IGhlYWRlciAqLwogCiAgIC8qIFB1cmVJbmZvIG1lbWJlcnMgJ2Nvbm5fcHJpbWFyeV9pcCcsICdjb25uX3ByaW1hcnlfcG9ydCcsICdjb25uX2xvY2FsX2lwJwogICAgICBhbmQsICdjb25uX2xvY2FsX3BvcnQnIGFyZSBjb3BpZWQgb3ZlciBmcm9tIHRoZSBjb25uZWN0ZGF0YSBzdHJ1Y3QgaW4KQEAgLTEwODEsMTEgKzExNTMsMTEgQEAKICAgY29uc3QgY2hhciAqY29ubl9zY2hlbWU7CiAgIHVuc2lnbmVkIGludCBjb25uX3Byb3RvY29sOwogICBzdHJ1Y3QgY3VybF9jZXJ0aW5mbyBjZXJ0czsgLyogaW5mbyBhYm91dCB0aGUgY2VydHMsIG9ubHkgcG9wdWxhdGVkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuU1NMIGJ1aWxkcy4gQXNrZWQgZm9yIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxPUFRfQ0VSVElORk8gLyBDVVJMSU5GT19DRVJUSU5GTyAqLwotCi0gIGJpdCB0aW1lY29uZDoxOyAgLyogc2V0IHRvIFRSVUUgaWYgdGhlIHRpbWUgY29uZGl0aW9uIGRpZG4ndCBtYXRjaCwgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgICB0aHVzIG1hZGUgdGhlIGRvY3VtZW50IE5PVCBnZXQgZmV0Y2hlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BlblNTTCwgR251VExTLCBTY2hhbm5lbCwgTlNTIGFuZCBHU0tpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzLiBBc2tlZCBmb3Igd2l0aCBDVVJMT1BUX0NFUlRJTkZPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIENVUkxJTkZPX0NFUlRJTkZPICovCisgIEJJVCh0aW1lY29uZCk7ICAvKiBzZXQgdG8gVFJVRSBpZiB0aGUgdGltZSBjb25kaXRpb24gZGlkbid0IG1hdGNoLCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgdGh1cyBtYWRlIHRoZSBkb2N1bWVudCBOT1QgZ2V0IGZldGNoZWQgKi8KIH07CiAKIApAQCAtMTEwMiwxNyArMTE3NCwxNyBAQAogICBpbnQgd2lkdGg7IC8qIHNjcmVlbiB3aWR0aCBhdCBkb3dubG9hZCBzdGFydCAqLwogICBpbnQgZmxhZ3M7IC8qIHNlZSBwcm9ncmVzcy5oICovCiAKLSAgdGltZV90IHRpbWVzcGVudDsKKyAgdGltZWRpZmZfdCB0aW1lc3BlbnQ7CiAKICAgY3VybF9vZmZfdCBkbHNwZWVkOwogICBjdXJsX29mZl90IHVsc3BlZWQ7CiAKLSAgdGltZV90IHRfbnNsb29rdXA7Ci0gIHRpbWVfdCB0X2Nvbm5lY3Q7Ci0gIHRpbWVfdCB0X2FwcGNvbm5lY3Q7Ci0gIHRpbWVfdCB0X3ByZXRyYW5zZmVyOwotICB0aW1lX3QgdF9zdGFydHRyYW5zZmVyOwotICB0aW1lX3QgdF9yZWRpcmVjdDsKKyAgdGltZWRpZmZfdCB0X25zbG9va3VwOworICB0aW1lZGlmZl90IHRfY29ubmVjdDsKKyAgdGltZWRpZmZfdCB0X2FwcGNvbm5lY3Q7CisgIHRpbWVkaWZmX3QgdF9wcmV0cmFuc2ZlcjsKKyAgdGltZWRpZmZfdCB0X3N0YXJ0dHJhbnNmZXI7CisgIHRpbWVkaWZmX3QgdF9yZWRpcmVjdDsKIAogICBzdHJ1Y3QgY3VybHRpbWUgc3RhcnQ7CiAgIHN0cnVjdCBjdXJsdGltZSB0X3N0YXJ0c2luZ2xlOwpAQCAtMTEzMiw4ICsxMjA0LDggQEAKICAgY3VybF9vZmZfdCBzcGVlZGVyWyBDVVJSX1RJTUUgXTsKICAgc3RydWN0IGN1cmx0aW1lIHNwZWVkZXJfdGltZVsgQ1VSUl9USU1FIF07CiAgIGludCBzcGVlZGVyX2M7Ci0gIGJpdCBjYWxsYmFjazoxOyAgLyogc2V0IHdoZW4gcHJvZ3Jlc3MgY2FsbGJhY2sgaXMgdXNlZCAqLwotICBiaXQgaXNfdF9zdGFydHJhbnNmZXJfc2V0OjE7CisgIEJJVChjYWxsYmFjayk7ICAvKiBzZXQgd2hlbiBwcm9ncmVzcyBjYWxsYmFjayBpcyB1c2VkICovCisgIEJJVChpc190X3N0YXJ0cmFuc2Zlcl9zZXQpOwogfTsKIAogdHlwZWRlZiBlbnVtIHsKQEAgLTExODEsMTIgKzEyNTMsMTIgQEAKICAgdW5zaWduZWQgbG9uZyBwaWNrZWQ7CiAgIHVuc2lnbmVkIGxvbmcgYXZhaWw7IC8qIEJpdG1hc2sgZm9yIHdoYXQgdGhlIHNlcnZlciByZXBvcnRzIHRvIHN1cHBvcnQgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcmVzb3VyY2UgKi8KLSAgYml0IGRvbmU6MTsgIC8qIFRSVUUgd2hlbiB0aGUgYXV0aCBwaGFzZSBpcyBkb25lIGFuZCByZWFkeSB0byBkbyB0aGUKLSAgICAgICAgICAgICAgICAgKmFjdHVhbCogcmVxdWVzdCAqLwotICBiaXQgbXVsdGlwYXNzOjE7IC8qIFRSVUUgaWYgdGhpcyBpcyBub3QgeWV0IGF1dGhlbnRpY2F0ZWQgYnV0IHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgYXV0aCBtdWx0aXBhc3MgbmVnb3RpYXRpb24gKi8KLSAgYml0IGllc3R5bGU6MTsgLyogVFJVRSBpZiBkaWdlc3Qgc2hvdWxkIGJlIGRvbmUgSUUtc3R5bGUgb3IgRkFMU0UgaWYgaXQKLSAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSBSRkMgY29tcGxpYW50ICovCisgIEJJVChkb25lKTsgIC8qIFRSVUUgd2hlbiB0aGUgYXV0aCBwaGFzZSBpcyBkb25lIGFuZCByZWFkeSB0byBkbyB0aGUKKyAgICAgICAgICAgICAgICAgYWN0dWFsIHJlcXVlc3QgKi8KKyAgQklUKG11bHRpcGFzcyk7IC8qIFRSVUUgaWYgdGhpcyBpcyBub3QgeWV0IGF1dGhlbnRpY2F0ZWQgYnV0IHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIGF1dGggbXVsdGlwYXNzIG5lZ290aWF0aW9uICovCisgIEJJVChpZXN0eWxlKTsgLyogVFJVRSBpZiBkaWdlc3Qgc2hvdWxkIGJlIGRvbmUgSUUtc3R5bGUgb3IgRkFMU0UgaWYgaXQKKyAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgUkZDIGNvbXBsaWFudCAqLwogfTsKIAogc3RydWN0IEN1cmxfaHR0cDJfZGVwIHsKQEAgLTEyMjAsNiArMTI5Miw3IEBACiAgIEVYUElSRV9TUEVFRENIRUNLLAogICBFWFBJUkVfVElNRU9VVCwKICAgRVhQSVJFX1RPT0ZBU1QsCisgIEVYUElSRV9RVUlDLAogICBFWFBJUkVfTEFTVCAvKiBub3QgYW4gYWN0dWFsIHRpbWVyLCB1c2VkIGFzIGEgbWFya2VyIG9ubHkgKi8KIH0gZXhwaXJlX2lkOwogCkBAIC0xMzE1LDcgKzEzODgsNyBAQAogLyogZG8gRlRQIGxpbmUtZW5kIGNvbnZlcnNpb25zIG9uIG1vc3QgcGxhdGZvcm1zICovCiAjZGVmaW5lIENVUkxfRE9fTElORUVORF9DT05WCiAgIC8qIGZvciBGVFAgZG93bmxvYWRzOiB0cmFjayBDUkxGIHNlcXVlbmNlcyB0aGF0IHNwYW4gYmxvY2tzICovCi0gIGJpdCBwcmV2X2Jsb2NrX2hhZF90cmFpbGluZ19jcjoxOworICBCSVQocHJldl9ibG9ja19oYWRfdHJhaWxpbmdfY3IpOwogICAvKiBmb3IgRlRQIGRvd25sb2FkczogaG93IG1hbnkgQ1JMRnMgZGlkIHdlIGNvbnZlcnRlZCB0byBMRnM/ICovCiAgIGN1cmxfb2ZmX3QgY3JsZl9jb252ZXJzaW9uczsKICNlbmRpZgpAQCAtMTM1MCwzMiArMTQyMywzNSBAQAogICB0cmFpbGVyc19zdGF0ZSB0cmFpbGVyc19zdGF0ZTsgLyogd2hldGhlciB3ZSBhcmUgc2VuZGluZyB0cmFpbGVycwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHdoYXQgc3RhZ2UgYXJlIHdlIGF0ICovCiAjaWZkZWYgQ1VSTERFQlVHCi0gIGJpdCBjb25uY2FjaGVfbG9jazoxOworICBCSVQoY29ubmNhY2hlX2xvY2spOwogI2VuZGlmCiAgIC8qIHdoZW4gY3VybF9lYXN5X3BlcmZvcm0oKSBpcyBjYWxsZWQsIHRoZSBtdWx0aSBoYW5kbGUgaXMgIm93bmVkIiBieQogICAgICB0aGUgZWFzeSBoYW5kbGUgc28gY3VybF9lYXN5X2NsZWFudXAoKSBvbiBzdWNoIGFuIGVhc3kgaGFuZGxlIHdpbGwKICAgICAgYWxzbyBjbG9zZSB0aGUgbXVsdGkgaGFuZGxlISAqLwotICBiaXQgbXVsdGlfb3duZWRfYnlfZWFzeToxOworICBCSVQobXVsdGlfb3duZWRfYnlfZWFzeSk7CiAKLSAgYml0IHRoaXNfaXNfYV9mb2xsb3c6MTsgLyogdGhpcyBpcyBhIGZvbGxvd2VkIExvY2F0aW9uOiByZXF1ZXN0ICovCi0gIGJpdCByZWZ1c2VkX3N0cmVhbToxOyAvKiB0aGlzIHdhcyByZWZ1c2VkLCB0cnkgYWdhaW4gKi8KLSAgYml0IGVycm9yYnVmOjE7IC8qIFNldCB0byBUUlVFIGlmIHRoZSBlcnJvciBidWZmZXIgaXMgYWxyZWFkeSBmaWxsZWQgaW4uCisgIEJJVCh0aGlzX2lzX2FfZm9sbG93KTsgLyogdGhpcyBpcyBhIGZvbGxvd2VkIExvY2F0aW9uOiByZXF1ZXN0ICovCisgIEJJVChyZWZ1c2VkX3N0cmVhbSk7IC8qIHRoaXMgd2FzIHJlZnVzZWQsIHRyeSBhZ2FpbiAqLworICBCSVQoZXJyb3JidWYpOyAvKiBTZXQgdG8gVFJVRSBpZiB0aGUgZXJyb3IgYnVmZmVyIGlzIGFscmVhZHkgZmlsbGVkIGluLgogICAgICAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgc2V0IHRvIEZBTFNFIGV2ZXJ5IHRpbWUgX2Vhc3lfcGVyZm9ybSgpIGlzCiAgICAgICAgICAgICAgICAgICAgIGNhbGxlZC4gKi8KLSAgYml0IGFsbG93X3BvcnQ6MTsgLyogSXMgc2V0LnVzZV9wb3J0IGFsbG93ZWQgdG8gdGFrZSBlZmZlY3Qgb3Igbm90LiBUaGlzCisgIEJJVChhbGxvd19wb3J0KTsgLyogSXMgc2V0LnVzZV9wb3J0IGFsbG93ZWQgdG8gdGFrZSBlZmZlY3Qgb3Igbm90LiBUaGlzCiAgICAgICAgICAgICAgICAgICAgICAgaXMgYWx3YXlzIHNldCBUUlVFIHdoZW4gY3VybF9lYXN5X3BlcmZvcm0oKSBpcyBjYWxsZWQuICovCi0gIGJpdCBhdXRocHJvYmxlbToxOyAvKiBUUlVFIGlmIHRoZXJlJ3Mgc29tZSBwcm9ibGVtIGF1dGhlbnRpY2F0aW5nICovCisgIEJJVChhdXRocHJvYmxlbSk7IC8qIFRSVUUgaWYgdGhlcmUncyBzb21lIHByb2JsZW0gYXV0aGVudGljYXRpbmcgKi8KICAgLyogc2V0IGFmdGVyIGluaXRpYWwgVVNFUiBmYWlsdXJlLCB0byBwcmV2ZW50IGFuIGF1dGhlbnRpY2F0aW9uIGxvb3AgKi8KLSAgYml0IGZ0cF90cnlpbmdfYWx0ZXJuYXRpdmU6MTsKLSAgYml0IHdpbGRjYXJkbWF0Y2g6MTsgLyogZW5hYmxlIHdpbGRjYXJkIG1hdGNoaW5nICovCi0gIGJpdCBleHBlY3QxMDBoZWFkZXI6MTsgIC8qIFRSVUUgaWYgd2UgYWRkZWQgRXhwZWN0OiAxMDAtY29udGludWUgKi8KLSAgYml0IHVzZV9yYW5nZToxOwotICBiaXQgcmFuZ2VzdHJpbmdhbGxvYzoxOyAvKiB0aGUgcmFuZ2Ugc3RyaW5nIGlzIG1hbGxvYygpJ2VkICovCi0gIGJpdCBkb25lOjE7IC8qIHNldCB0byBGQUxTRSB3aGVuIEN1cmxfaW5pdF9kbygpIGlzIGNhbGxlZCBhbmQgc2V0IHRvIFRSVUUKKyAgQklUKGZ0cF90cnlpbmdfYWx0ZXJuYXRpdmUpOworICBCSVQod2lsZGNhcmRtYXRjaCk7IC8qIGVuYWJsZSB3aWxkY2FyZCBtYXRjaGluZyAqLworICBCSVQoZXhwZWN0MTAwaGVhZGVyKTsgIC8qIFRSVUUgaWYgd2UgYWRkZWQgRXhwZWN0OiAxMDAtY29udGludWUgKi8KKyAgQklUKGRpc2FibGVleHBlY3QpOyAgICAvKiBUUlVFIGlmIEV4cGVjdDogaXMgZGlzYWJsZWQgZHVlIHRvIGEgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTcgcmVzcG9uc2UgKi8KKyAgQklUKHVzZV9yYW5nZSk7CisgIEJJVChyYW5nZXN0cmluZ2FsbG9jKTsgLyogdGhlIHJhbmdlIHN0cmluZyBpcyBtYWxsb2MoKSdlZCAqLworICBCSVQoZG9uZSk7IC8qIHNldCB0byBGQUxTRSB3aGVuIEN1cmxfaW5pdF9kbygpIGlzIGNhbGxlZCBhbmQgc2V0IHRvIFRSVUUKICAgICAgICAgICAgICAgICAgIHdoZW4gbXVsdGlfZG9uZSgpIGlzIGNhbGxlZCwgdG8gcHJldmVudCBtdWx0aV9kb25lKCkgdG8gZ2V0CiAgICAgICAgICAgICAgICAgICBpbnZva2VkIHR3aWNlIHdoZW4gdGhlIG11bHRpIGludGVyZmFjZSBpcyB1c2VkLiAqLwotICBiaXQgc3RyZWFtX2RlcGVuZHNfZToxOyAvKiBzZXQgb3IgZG9uJ3Qgc2V0IHRoZSBFeGNsdXNpdmUgYml0ICovCi0gIGJpdCBwcmV2aW91c2x5cGVuZGluZzoxOyAvKiB0aGlzIHRyYW5zZmVyIFdBUyBpbiB0aGUgbXVsdGktPnBlbmRpbmcgcXVldWUgKi8KKyAgQklUKHN0cmVhbV9kZXBlbmRzX2UpOyAvKiBzZXQgb3IgZG9uJ3Qgc2V0IHRoZSBFeGNsdXNpdmUgYml0ICovCisgIEJJVChwcmV2aW91c2x5cGVuZGluZyk7IC8qIHRoaXMgdHJhbnNmZXIgV0FTIGluIHRoZSBtdWx0aS0+cGVuZGluZyBxdWV1ZSAqLworICBCSVQoY29va2llX2VuZ2luZSk7CiB9OwogCiAKQEAgLTEzOTMsOSArMTQ2OSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KENPT0tJRUZJTEUpIGNhbGxzICovCiAgIHN0cnVjdCBjdXJsX3NsaXN0ICpyZXNvbHZlOyAvKiBzZXQgdG8gcG9pbnQgdG8gdGhlIHNldC5yZXNvbHZlIGxpc3Qgd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBzaG91bGQgYmUgZGVhbHQgd2l0aCBpbiBwcmV0cmFuc2ZlciAqLwotICBiaXQgdXJsX2FsbG9jOjE7ICAgLyogVVJMIHN0cmluZyBpcyBtYWxsb2MoKSdlZCAqLwotICBiaXQgcmVmZXJlcl9hbGxvYzoxOyAvKiByZWZlcmVyIHN0cmluZyBpcyBtYWxsb2MoKWVkICovCi0gIGJpdCB3aWxkY2FyZF9yZXNvbHZlOjE7IC8qIFNldCB0byB0cnVlIGlmIGFueSByZXNvbHZlIGNoYW5nZSBpcyBhCisgIEJJVCh1cmxfYWxsb2MpOyAgIC8qIFVSTCBzdHJpbmcgaXMgbWFsbG9jKCknZWQgKi8KKyAgQklUKHJlZmVyZXJfYWxsb2MpOyAvKiByZWZlcmVyIHN0cmluZyBpcyBtYWxsb2MoKWVkICovCisgIEJJVCh3aWxkY2FyZF9yZXNvbHZlKTsgLyogU2V0IHRvIHRydWUgaWYgYW55IHJlc29sdmUgY2hhbmdlIGlzIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkICovCiB9OwogCkBAIC0xNDEwLDYgKzE0ODYsMTQgQEAKIAogc3RydWN0IEN1cmxfbXVsdGk7ICAgIC8qIGRlY2xhcmVkIGFuZCB1c2VkIG9ubHkgaW4gbXVsdGkuYyAqLwogCisvKgorICogVGhpcyBlbnVtZXJhdGlvbiBNVVNUIG5vdCB1c2UgY29uZGl0aW9uYWwgZGlyZWN0aXZlcyAoI2lmZGVmcyksIG5ldworICogbnVsbCB0ZXJtaW5hdGVkIHN0cmluZ3MgTVVTVCBiZSBhZGRlZCB0byB0aGUgZW51bWVyYXRpb24gaW1tZWRpYXRlbHkKKyAqIGJlZm9yZSBTVFJJTkdfTEFTVFpFUk9URVJNSU5BVEVELCBiaW5hcnkgZmllbGRzIGltbWVkaWF0ZWx5IGJlZm9yZQorICogU1RSSU5HX0xBU1QuIFdoZW4gZG9pbmcgc28sIGVuc3VyZSB0aGF0IHRoZSBwYWNrYWdlcy9PUzQwMC9jaGtzdHJpbmcuYworICogdGVzdCBpcyB1cGRhdGVkIGFuZCBhcHBsaWNhYmxlIGNoYW5nZXMgZm9yIEVCQ0RJQyB0byBBU0NJSSBjb252ZXJzaW9uCisgKiBhcmUgY2F0ZXJlZCBmb3IgaW4gY3VybF9lYXN5X3NldG9wdF9jY3NpZCgpCisgKi8KIGVudW0gZHVwc3RyaW5nIHsKICAgU1RSSU5HX0NFUlRfT1JJRywgICAgICAgLyogY2xpZW50IGNlcnRpZmljYXRlIGZpbGUgbmFtZSAqLwogICBTVFJJTkdfQ0VSVF9QUk9YWSwgICAgICAvKiBjbGllbnQgY2VydGlmaWNhdGUgZmlsZSBuYW1lICovCkBAIC0xNDY2LDMyICsxNTUwLDM1IEBACiAgIFNUUklOR19SVFNQX1NFU1NJT05fSUQsIC8qIFNlc3Npb24gSUQgdG8gdXNlICovCiAgIFNUUklOR19SVFNQX1NUUkVBTV9VUkksIC8qIFN0cmVhbSBVUkkgZm9yIHRoaXMgcmVxdWVzdCAqLwogICBTVFJJTkdfUlRTUF9UUkFOU1BPUlQsICAvKiBUcmFuc3BvcnQgZm9yIHRoaXMgc2Vzc2lvbiAqLwotI2lmZGVmIFVTRV9TU0gKKwogICBTVFJJTkdfU1NIX1BSSVZBVEVfS0VZLCAvKiBwYXRoIHRvIHRoZSBwcml2YXRlIGtleSBmaWxlIGZvciBhdXRoICovCiAgIFNUUklOR19TU0hfUFVCTElDX0tFWSwgIC8qIHBhdGggdG8gdGhlIHB1YmxpYyBrZXkgZmlsZSBmb3IgYXV0aCAqLwogICBTVFJJTkdfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUsIC8qIG1kNSBvZiBob3N0IHB1YmxpYyBrZXkgaW4gYXNjaWkgaGV4ICovCiAgIFNUUklOR19TU0hfS05PV05IT1NUUywgIC8qIGZpbGUgbmFtZSBvZiBrbm93bmhvc3RzIGZpbGUgKi8KLSNlbmRpZgorCiAgIFNUUklOR19QUk9YWV9TRVJWSUNFX05BTUUsIC8qIFByb3h5IHNlcnZpY2UgbmFtZSAqLwogICBTVFJJTkdfU0VSVklDRV9OQU1FLCAgICAvKiBTZXJ2aWNlIG5hbWUgKi8KICAgU1RSSU5HX01BSUxfRlJPTSwKICAgU1RSSU5HX01BSUxfQVVUSCwKIAotI2lmZGVmIFVTRV9UTFNfU1JQCiAgIFNUUklOR19UTFNBVVRIX1VTRVJOQU1FX09SSUcsICAvKiBUTFMgYXV0aCA8dXNlcm5hbWU+ICovCiAgIFNUUklOR19UTFNBVVRIX1VTRVJOQU1FX1BST1hZLCAvKiBUTFMgYXV0aCA8dXNlcm5hbWU+ICovCiAgIFNUUklOR19UTFNBVVRIX1BBU1NXT1JEX09SSUcsICAvKiBUTFMgYXV0aCA8cGFzc3dvcmQ+ICovCiAgIFNUUklOR19UTFNBVVRIX1BBU1NXT1JEX1BST1hZLCAvKiBUTFMgYXV0aCA8cGFzc3dvcmQ+ICovCi0jZW5kaWYKKwogICBTVFJJTkdfQkVBUkVSLCAgICAgICAgICAgICAgICAvKiA8YmVhcmVyPiwgaWYgdXNlZCAqLwotI2lmZGVmIFVTRV9VTklYX1NPQ0tFVFMKKwogICBTVFJJTkdfVU5JWF9TT0NLRVRfUEFUSCwgICAgICAvKiBwYXRoIHRvIFVuaXggc29ja2V0LCBpZiB1c2VkICovCi0jZW5kaWYKKwogICBTVFJJTkdfVEFSR0VULCAgICAgICAgICAgICAgICAvKiBDVVJMT1BUX1JFUVVFU1RfVEFSR0VUICovCiAgIFNUUklOR19ET0gsICAgICAgICAgICAgICAgICAgIC8qIENVUkxPUFRfRE9IX1VSTCAqLwotI2lmZGVmIFVTRV9BTFRTVkMKKwogICBTVFJJTkdfQUxUU1ZDLCAgICAgICAgICAgICAgICAvKiBDVVJMT1BUX0FMVFNWQyAqLwotI2VuZGlmCisKKyAgU1RSSU5HX1NBU0xfQVVUSFpJRCwgICAgICAgICAgLyogQ1VSTE9QVF9TQVNMX0FVVEhaSUQgKi8KKworICBTVFJJTkdfVEVNUF9VUkwsICAgICAgICAgICAgICAvKiB0ZW1wIFVSTCBzdG9yYWdlIGZvciBwcm94eSB1c2UgKi8KKwogICAvKiAtLSBlbmQgb2YgemVyby10ZXJtaW5hdGVkIHN0cmluZ3MgLS0gKi8KIAogICBTVFJJTkdfTEFTVFpFUk9URVJNSU5BVEVELApAQCAtMTY3MSw4NCArMTc1OCw4NCBAQAogICBDVVJMVSAqdWg7IC8qIFVSTCBoYW5kbGUgZm9yIHRoZSBjdXJyZW50IHBhcnNlZCBVUkwgKi8KICAgdm9pZCAqdHJhaWxlcl9kYXRhOyAvKiBwb2ludGVyIHRvIHBhc3MgdG8gdHJhaWxlciBkYXRhIGNhbGxiYWNrICovCiAgIGN1cmxfdHJhaWxlcl9jYWxsYmFjayB0cmFpbGVyX2NhbGxiYWNrOyAvKiB0cmFpbGluZyBkYXRhIGNhbGxiYWNrICovCi0gIGJpdCBpc19mcmVhZF9zZXQ6MTsgLyogaGFzIHJlYWQgY2FsbGJhY2sgYmVlbiBzZXQgdG8gbm9uLU5VTEw/ICovCi0gIGJpdCBpc19md3JpdGVfc2V0OjE7IC8qIGhhcyB3cml0ZSBjYWxsYmFjayBiZWVuIHNldCB0byBub24tTlVMTD8gKi8KLSAgYml0IGZyZWVfcmVmZXJlcjoxOyAvKiBzZXQgVFJVRSBpZiAncmVmZXJlcicgcG9pbnRzIHRvIGEgc3RyaW5nIHdlCisgIEJJVChpc19mcmVhZF9zZXQpOyAvKiBoYXMgcmVhZCBjYWxsYmFjayBiZWVuIHNldCB0byBub24tTlVMTD8gKi8KKyAgQklUKGlzX2Z3cml0ZV9zZXQpOyAvKiBoYXMgd3JpdGUgY2FsbGJhY2sgYmVlbiBzZXQgdG8gbm9uLU5VTEw/ICovCisgIEJJVChmcmVlX3JlZmVyZXIpOyAvKiBzZXQgVFJVRSBpZiAncmVmZXJlcicgcG9pbnRzIHRvIGEgc3RyaW5nIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZWQgKi8KLSAgYml0IHRmdHBfbm9fb3B0aW9uczoxOyAvKiBkbyBub3Qgc2VuZCBURlRQIG9wdGlvbnMgcmVxdWVzdHMgKi8KLSAgYml0IHNlcF9oZWFkZXJzOjE7ICAgICAvKiBoYW5kbGUgaG9zdCBhbmQgcHJveHkgaGVhZGVycyBzZXBhcmF0ZWx5ICovCi0gIGJpdCBjb29raWVzZXNzaW9uOjE7ICAgLyogbmV3IGNvb2tpZSBzZXNzaW9uPyAqLwotICBiaXQgY3JsZjoxOyAgICAgICAgICAgIC8qIGNvbnZlcnQgY3JsZiBvbiBmdHAgdXBsb2FkKD8pICovCi0gIGJpdCBzdHJpcF9wYXRoX3NsYXNoOjE7IC8qIHN0cmlwIG9mZiBpbml0aWFsIHNsYXNoIGZyb20gcGF0aCAqLwotICBiaXQgc3NoX2NvbXByZXNzaW9uOjE7ICAgICAgICAgICAgLyogZW5hYmxlIFNTSCBjb21wcmVzc2lvbiAqLworICBCSVQodGZ0cF9ub19vcHRpb25zKTsgLyogZG8gbm90IHNlbmQgVEZUUCBvcHRpb25zIHJlcXVlc3RzICovCisgIEJJVChzZXBfaGVhZGVycyk7ICAgICAvKiBoYW5kbGUgaG9zdCBhbmQgcHJveHkgaGVhZGVycyBzZXBhcmF0ZWx5ICovCisgIEJJVChjb29raWVzZXNzaW9uKTsgICAvKiBuZXcgY29va2llIHNlc3Npb24/ICovCisgIEJJVChjcmxmKTsgICAgICAgICAgICAvKiBjb252ZXJ0IGNybGYgb24gZnRwIHVwbG9hZCg/KSAqLworICBCSVQoc3RyaXBfcGF0aF9zbGFzaCk7IC8qIHN0cmlwIG9mZiBpbml0aWFsIHNsYXNoIGZyb20gcGF0aCAqLworICBCSVQoc3NoX2NvbXByZXNzaW9uKTsgICAgICAgICAgICAvKiBlbmFibGUgU1NIIGNvbXByZXNzaW9uICovCiAKIC8qIEhlcmUgZm9sbG93cyBib29sZWFuIHNldHRpbmdzIHRoYXQgZGVmaW5lIGhvdyB0byBiZWhhdmUgZHVyaW5nCiAgICB0aGlzIHNlc3Npb24uIFRoZXkgYXJlIFNUQVRJQywgc2V0IGJ5IGxpYmN1cmwgdXNlcnMgb3IgYXQgbGVhc3QgaW5pdGlhbGx5CiAgICBhbmQgdGhleSBkb24ndCBjaGFuZ2UgZHVyaW5nIG9wZXJhdGlvbnMuICovCi0gIGJpdCBnZXRfZmlsZXRpbWU6MTsgICAgIC8qIGdldCB0aGUgdGltZSBhbmQgZ2V0IG9mIHRoZSByZW1vdGUgZmlsZSAqLwotICBiaXQgdHVubmVsX3RocnVfaHR0cHByb3h5OjE7IC8qIHVzZSBDT05ORUNUIHRocm91Z2ggYSBIVFRQIHByb3h5ICovCi0gIGJpdCBwcmVmZXJfYXNjaWk6MTsgICAgIC8qIEFTQ0lJIHJhdGhlciB0aGFuIGJpbmFyeSAqLwotICBiaXQgZnRwX2FwcGVuZDoxOyAgICAgICAvKiBhcHBlbmQsIG5vdCBvdmVyd3JpdGUsIG9uIHVwbG9hZCAqLwotICBiaXQgZnRwX2xpc3Rfb25seToxOyAgICAvKiBzd2l0Y2ggRlRQIGNvbW1hbmQgZm9yIGxpc3RpbmcgZGlyZWN0b3JpZXMgKi8KKyAgQklUKGdldF9maWxldGltZSk7ICAgICAvKiBnZXQgdGhlIHRpbWUgYW5kIGdldCBvZiB0aGUgcmVtb3RlIGZpbGUgKi8KKyAgQklUKHR1bm5lbF90aHJ1X2h0dHBwcm94eSk7IC8qIHVzZSBDT05ORUNUIHRocm91Z2ggYSBIVFRQIHByb3h5ICovCisgIEJJVChwcmVmZXJfYXNjaWkpOyAgICAgLyogQVNDSUkgcmF0aGVyIHRoYW4gYmluYXJ5ICovCisgIEJJVChmdHBfYXBwZW5kKTsgICAgICAgLyogYXBwZW5kLCBub3Qgb3ZlcndyaXRlLCBvbiB1cGxvYWQgKi8KKyAgQklUKGZ0cF9saXN0X29ubHkpOyAgICAvKiBzd2l0Y2ggRlRQIGNvbW1hbmQgZm9yIGxpc3RpbmcgZGlyZWN0b3JpZXMgKi8KICNpZm5kZWYgQ1VSTF9ESVNBQkxFX0ZUUAotICBiaXQgZnRwX3VzZV9wb3J0OjE7ICAgICAvKiB1c2UgdGhlIEZUUCBQT1JUIGNvbW1hbmQgKi8KLSAgYml0IGZ0cF91c2VfZXBzdjoxOyAgIC8qIGlmIEVQU1YgaXMgdG8gYmUgYXR0ZW1wdGVkIG9yIG5vdCAqLwotICBiaXQgZnRwX3VzZV9lcHJ0OjE7ICAgLyogaWYgRVBSVCBpcyB0byBiZSBhdHRlbXB0ZWQgb3Igbm90ICovCi0gIGJpdCBmdHBfdXNlX3ByZXQ6MTsgICAvKiBpZiBQUkVUIGlzIHRvIGJlIHVzZWQgYmVmb3JlIFBBU1Ygb3Igbm90ICovCi0gIGJpdCBmdHBfc2tpcF9pcDoxOyAgICAvKiBza2lwIHRoZSBJUCBhZGRyZXNzIHRoZSBGVFAgc2VydmVyIHBhc3NlcyBvbiB0bworICBCSVQoZnRwX3VzZV9wb3J0KTsgICAgIC8qIHVzZSB0aGUgRlRQIFBPUlQgY29tbWFuZCAqLworICBCSVQoZnRwX3VzZV9lcHN2KTsgICAgIC8qIGlmIEVQU1YgaXMgdG8gYmUgYXR0ZW1wdGVkIG9yIG5vdCAqLworICBCSVQoZnRwX3VzZV9lcHJ0KTsgICAgIC8qIGlmIEVQUlQgaXMgdG8gYmUgYXR0ZW1wdGVkIG9yIG5vdCAqLworICBCSVQoZnRwX3VzZV9wcmV0KTsgICAgIC8qIGlmIFBSRVQgaXMgdG8gYmUgdXNlZCBiZWZvcmUgUEFTViBvciBub3QgKi8KKyAgQklUKGZ0cF9za2lwX2lwKTsgICAgICAvKiBza2lwIHRoZSBJUCBhZGRyZXNzIHRoZSBGVFAgc2VydmVyIHBhc3NlcyBvbiB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzICovCiAjZW5kaWYKLSAgYml0IGhpZGVfcHJvZ3Jlc3M6MTsgICAgLyogZG9uJ3QgdXNlIHRoZSBwcm9ncmVzcyBtZXRlciAqLwotICBiaXQgaHR0cF9mYWlsX29uX2Vycm9yOjE7ICAvKiBmYWlsIG9uIEhUVFAgZXJyb3IgY29kZXMgPj0gNDAwICovCi0gIGJpdCBodHRwX2tlZXBfc2VuZGluZ19vbl9lcnJvcjoxOyAvKiBmb3IgSFRUUCBzdGF0dXMgY29kZXMgPj0gMzAwICovCi0gIGJpdCBodHRwX2ZvbGxvd19sb2NhdGlvbjoxOyAvKiBmb2xsb3cgSFRUUCByZWRpcmVjdHMgKi8KLSAgYml0IGh0dHBfdHJhbnNmZXJfZW5jb2Rpbmc6MTsgLyogcmVxdWVzdCBjb21wcmVzc2VkIEhUVFAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyLWVuY29kaW5nICovCi0gIGJpdCBhbGxvd19hdXRoX3RvX290aGVyX2hvc3RzOjE7Ci0gIGJpdCBpbmNsdWRlX2hlYWRlcjoxOyAvKiBpbmNsdWRlIHJlY2VpdmVkIHByb3RvY29sIGhlYWRlcnMgaW4gZGF0YSBvdXRwdXQgKi8KLSAgYml0IGh0dHBfc2V0X3JlZmVyZXI6MTsgLyogaXMgYSBjdXN0b20gcmVmZXJlciB1c2VkICovCi0gIGJpdCBodHRwX2F1dG9fcmVmZXJlcjoxOyAvKiBzZXQgImNvcnJlY3QiIHJlZmVyZXIgd2hlbiBmb2xsb3dpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogKi8KLSAgYml0IG9wdF9ub19ib2R5OjE7ICAgIC8qIGFzIHNldCB3aXRoIENVUkxPUFRfTk9CT0RZICovCi0gIGJpdCB1cGxvYWQ6MTsgICAgICAgICAvKiB1cGxvYWQgcmVxdWVzdCAqLwotICBiaXQgdmVyYm9zZToxOyAgICAgICAgLyogb3V0cHV0IHZlcmJvc2l0eSAqLwotICBiaXQga3JiOjE7ICAgICAgICAgICAgLyogS2VyYmVyb3MgY29ubmVjdGlvbiByZXF1ZXN0ZWQgKi8KLSAgYml0IHJldXNlX2ZvcmJpZDoxOyAgIC8qIGZvcmJpZGRlbiB0byBiZSByZXVzZWQsIGNsb3NlIGFmdGVyIHVzZSAqLwotICBiaXQgcmV1c2VfZnJlc2g6MTsgICAgLyogZG8gbm90IHJlLXVzZSBhbiBleGlzdGluZyBjb25uZWN0aW9uICAqLwotCi0gIGJpdCBub19zaWduYWw6MTsgICAgICAvKiBkbyBub3QgdXNlIGFueSBzaWduYWwvYWxhcm0gaGFuZGxlciAqLwotICBiaXQgdGNwX25vZGVsYXk6MTsgICAgLyogd2hldGhlciB0byBlbmFibGUgVENQX05PREVMQVkgb3Igbm90ICovCi0gIGJpdCBpZ25vcmVjbDoxOyAgICAgICAvKiBpZ25vcmUgY29udGVudCBsZW5ndGggKi8KLSAgYml0IGNvbm5lY3Rfb25seToxOyAgIC8qIG1ha2UgY29ubmVjdGlvbiwgbGV0IGFwcGxpY2F0aW9uIHVzZSB0aGUgc29ja2V0ICovCi0gIGJpdCBodHRwX3RlX3NraXA6MTsgICAvKiBwYXNzIHRoZSByYXcgYm9keSBkYXRhIHRvIHRoZSB1c2VyLCBldmVuIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlci1lbmNvZGVkIChjaHVua2VkLCBjb21wcmVzc2VkKSAqLwotICBiaXQgaHR0cF9jZV9za2lwOjE7ICAgLyogcGFzcyB0aGUgcmF3IGJvZHkgZGF0YSB0byB0aGUgdXNlciwgZXZlbiB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC1lbmNvZGVkIChjaHVua2VkLCBjb21wcmVzc2VkKSAqLwotICBiaXQgcHJveHlfdHJhbnNmZXJfbW9kZToxOyAvKiBzZXQgdHJhbnNmZXIgbW9kZSAoO3R5cGU9PGF8aT4pIHdoZW4gZG9pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZUUCB2aWEgYW4gSFRUUCBwcm94eSAqLworICBCSVQoaGlkZV9wcm9ncmVzcyk7ICAgIC8qIGRvbid0IHVzZSB0aGUgcHJvZ3Jlc3MgbWV0ZXIgKi8KKyAgQklUKGh0dHBfZmFpbF9vbl9lcnJvcik7ICAvKiBmYWlsIG9uIEhUVFAgZXJyb3IgY29kZXMgPj0gNDAwICovCisgIEJJVChodHRwX2tlZXBfc2VuZGluZ19vbl9lcnJvcik7IC8qIGZvciBIVFRQIHN0YXR1cyBjb2RlcyA+PSAzMDAgKi8KKyAgQklUKGh0dHBfZm9sbG93X2xvY2F0aW9uKTsgLyogZm9sbG93IEhUVFAgcmVkaXJlY3RzICovCisgIEJJVChodHRwX3RyYW5zZmVyX2VuY29kaW5nKTsgLyogcmVxdWVzdCBjb21wcmVzc2VkIEhUVFAgdHJhbnNmZXItZW5jb2RpbmcgKi8KKyAgQklUKGFsbG93X2F1dGhfdG9fb3RoZXJfaG9zdHMpOworICBCSVQoaW5jbHVkZV9oZWFkZXIpOyAvKiBpbmNsdWRlIHJlY2VpdmVkIHByb3RvY29sIGhlYWRlcnMgaW4gZGF0YSBvdXRwdXQgKi8KKyAgQklUKGh0dHBfc2V0X3JlZmVyZXIpOyAvKiBpcyBhIGN1c3RvbSByZWZlcmVyIHVzZWQgKi8KKyAgQklUKGh0dHBfYXV0b19yZWZlcmVyKTsgLyogc2V0ICJjb3JyZWN0IiByZWZlcmVyIHdoZW4gZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiAqLworICBCSVQob3B0X25vX2JvZHkpOyAgICAvKiBhcyBzZXQgd2l0aCBDVVJMT1BUX05PQk9EWSAqLworICBCSVQodXBsb2FkKTsgICAgICAgICAvKiB1cGxvYWQgcmVxdWVzdCAqLworICBCSVQodmVyYm9zZSk7ICAgICAgICAvKiBvdXRwdXQgdmVyYm9zaXR5ICovCisgIEJJVChrcmIpOyAgICAgICAgICAgIC8qIEtlcmJlcm9zIGNvbm5lY3Rpb24gcmVxdWVzdGVkICovCisgIEJJVChyZXVzZV9mb3JiaWQpOyAgIC8qIGZvcmJpZGRlbiB0byBiZSByZXVzZWQsIGNsb3NlIGFmdGVyIHVzZSAqLworICBCSVQocmV1c2VfZnJlc2gpOyAgICAvKiBkbyBub3QgcmUtdXNlIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gICovCisgIEJJVChub19zaWduYWwpOyAgICAgIC8qIGRvIG5vdCB1c2UgYW55IHNpZ25hbC9hbGFybSBoYW5kbGVyICovCisgIEJJVCh0Y3Bfbm9kZWxheSk7ICAgIC8qIHdoZXRoZXIgdG8gZW5hYmxlIFRDUF9OT0RFTEFZIG9yIG5vdCAqLworICBCSVQoaWdub3JlY2wpOyAgICAgICAvKiBpZ25vcmUgY29udGVudCBsZW5ndGggKi8KKyAgQklUKGNvbm5lY3Rfb25seSk7ICAgLyogbWFrZSBjb25uZWN0aW9uLCBsZXQgYXBwbGljYXRpb24gdXNlIHRoZSBzb2NrZXQgKi8KKyAgQklUKGh0dHBfdGVfc2tpcCk7ICAgLyogcGFzcyB0aGUgcmF3IGJvZHkgZGF0YSB0byB0aGUgdXNlciwgZXZlbiB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyLWVuY29kZWQgKGNodW5rZWQsIGNvbXByZXNzZWQpICovCisgIEJJVChodHRwX2NlX3NraXApOyAgIC8qIHBhc3MgdGhlIHJhdyBib2R5IGRhdGEgdG8gdGhlIHVzZXIsIGV2ZW4gd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LWVuY29kZWQgKGNodW5rZWQsIGNvbXByZXNzZWQpICovCisgIEJJVChwcm94eV90cmFuc2Zlcl9tb2RlKTsgLyogc2V0IHRyYW5zZmVyIG1vZGUgKDt0eXBlPTxhfGk+KSB3aGVuIGRvaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlRQIHZpYSBhbiBIVFRQIHByb3h5ICovCiAjaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQotICBiaXQgc29ja3M1X2dzc2FwaV9uZWM6MTsgLyogRmxhZyB0byBzdXBwb3J0IE5FQyBTT0NLUzUgc2VydmVyICovCisgIEJJVChzb2NrczVfZ3NzYXBpX25lYyk7IC8qIEZsYWcgdG8gc3VwcG9ydCBORUMgU09DS1M1IHNlcnZlciAqLwogI2VuZGlmCi0gIGJpdCBzYXNsX2lyOjE7ICAgICAgICAgLyogRW5hYmxlL2Rpc2FibGUgU0FTTCBpbml0aWFsIHJlc3BvbnNlICovCi0gIGJpdCB3aWxkY2FyZF9lbmFibGVkOjE7IC8qIGVuYWJsZSB3aWxkY2FyZCBtYXRjaGluZyAqLwotICBiaXQgdGNwX2tlZXBhbGl2ZToxOyAgLyogdXNlIFRDUCBrZWVwYWxpdmVzICovCi0gIGJpdCB0Y3BfZmFzdG9wZW46MTsgICAvKiB1c2UgVENQIEZhc3QgT3BlbiAqLwotICBiaXQgc3NsX2VuYWJsZV9ucG46MTsgLyogVExTIE5QTiBleHRlbnNpb24/ICovCi0gIGJpdCBzc2xfZW5hYmxlX2FscG46MTsvKiBUTFMgQUxQTiBleHRlbnNpb24/ICovCi0gIGJpdCBwYXRoX2FzX2lzOjE7ICAgICAvKiBhbGxvdyBkb3Rkb3RzPyAqLwotICBiaXQgcGlwZXdhaXQ6MTsgICAgICAgLyogd2FpdCBmb3IgbXVsdGlwbGV4IHN0YXR1cyBiZWZvcmUgc3RhcnRpbmcgYSBuZXcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gKi8KLSAgYml0IHN1cHByZXNzX2Nvbm5lY3RfaGVhZGVyczoxOyAvKiBzdXBwcmVzcyBwcm94eSBDT05ORUNUIHJlc3BvbnNlIGhlYWRlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB1c2VyIGNhbGxiYWNrcyAqLwotICBiaXQgZG5zX3NodWZmbGVfYWRkcmVzc2VzOjE7IC8qIHdoZXRoZXIgdG8gc2h1ZmZsZSBhZGRyZXNzZXMgYmVmb3JlIHVzZSAqLwotICBiaXQgc3RyZWFtX2RlcGVuZHNfZToxOyAvKiBzZXQgb3IgZG9uJ3Qgc2V0IHRoZSBFeGNsdXNpdmUgYml0ICovCi0gIGJpdCBoYXByb3h5cHJvdG9jb2w6MTsgLyogd2hldGhlciB0byBzZW5kIEhBUHJveHkgUFJPWFkgcHJvdG9jb2wgdjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyICovCi0gIGJpdCBhYnN0cmFjdF91bml4X3NvY2tldDoxOwotICBiaXQgZGlzYWxsb3dfdXNlcm5hbWVfaW5fdXJsOjE7IC8qIGRpc2FsbG93IHVzZXJuYW1lIGluIHVybCAqLwotICBiaXQgZG9oOjE7IC8qIEROUy1vdmVyLUhUVFBTIGVuYWJsZWQgKi8KLSAgYml0IGRvaF9nZXQ6MTsgLyogdXNlIEdFVCBmb3IgRG9IIHJlcXVlc3RzLCBpbnN0ZWFkIG9mIFBPU1QgKi8KLSAgYml0IGh0dHAwOV9hbGxvd2VkOjE7IC8qIGFsbG93IEhUVFAvMC45IHJlc3BvbnNlcyAqLworICBCSVQoc2FzbF9pcik7ICAgICAgICAgLyogRW5hYmxlL2Rpc2FibGUgU0FTTCBpbml0aWFsIHJlc3BvbnNlICovCisgIEJJVCh3aWxkY2FyZF9lbmFibGVkKTsgLyogZW5hYmxlIHdpbGRjYXJkIG1hdGNoaW5nICovCisgIEJJVCh0Y3Bfa2VlcGFsaXZlKTsgIC8qIHVzZSBUQ1Aga2VlcGFsaXZlcyAqLworICBCSVQodGNwX2Zhc3RvcGVuKTsgICAvKiB1c2UgVENQIEZhc3QgT3BlbiAqLworICBCSVQoc3NsX2VuYWJsZV9ucG4pOyAvKiBUTFMgTlBOIGV4dGVuc2lvbj8gKi8KKyAgQklUKHNzbF9lbmFibGVfYWxwbik7LyogVExTIEFMUE4gZXh0ZW5zaW9uPyAqLworICBCSVQocGF0aF9hc19pcyk7ICAgICAvKiBhbGxvdyBkb3Rkb3RzPyAqLworICBCSVQocGlwZXdhaXQpOyAgICAgICAvKiB3YWl0IGZvciBtdWx0aXBsZXggc3RhdHVzIGJlZm9yZSBzdGFydGluZyBhIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uICovCisgIEJJVChzdXBwcmVzc19jb25uZWN0X2hlYWRlcnMpOyAvKiBzdXBwcmVzcyBwcm94eSBDT05ORUNUIHJlc3BvbnNlIGhlYWRlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdXNlciBjYWxsYmFja3MgKi8KKyAgQklUKGRuc19zaHVmZmxlX2FkZHJlc3Nlcyk7IC8qIHdoZXRoZXIgdG8gc2h1ZmZsZSBhZGRyZXNzZXMgYmVmb3JlIHVzZSAqLworICBCSVQoc3RyZWFtX2RlcGVuZHNfZSk7IC8qIHNldCBvciBkb24ndCBzZXQgdGhlIEV4Y2x1c2l2ZSBiaXQgKi8KKyAgQklUKGhhcHJveHlwcm90b2NvbCk7IC8qIHdoZXRoZXIgdG8gc2VuZCBIQVByb3h5IFBST1hZIHByb3RvY29sIHYxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIgKi8KKyAgQklUKGFic3RyYWN0X3VuaXhfc29ja2V0KTsKKyAgQklUKGRpc2FsbG93X3VzZXJuYW1lX2luX3VybCk7IC8qIGRpc2FsbG93IHVzZXJuYW1lIGluIHVybCAqLworICBCSVQoZG9oKTsgLyogRE5TLW92ZXItSFRUUFMgZW5hYmxlZCAqLworICBCSVQoZG9oX2dldCk7IC8qIHVzZSBHRVQgZm9yIERvSCByZXF1ZXN0cywgaW5zdGVhZCBvZiBQT1NUICovCisgIEJJVChodHRwMDlfYWxsb3dlZCk7IC8qIGFsbG93IEhUVFAvMC45IHJlc3BvbnNlcyAqLworICBCSVQobWFpbF9yY3B0X2FsbG93ZmFpbHMpOyAvKiBhbGxvdyBSQ1BUIFRPIGNvbW1hbmQgdG8gZmFpbCBmb3Igc29tZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGllbnRzICovCiB9OwogCiBzdHJ1Y3QgTmFtZXMgewpAQCAtMTc3Nyw3ICsxODY0LDYgQEAKIAogICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm47CiAgIHN0cnVjdCBjdXJsX2xsaXN0X2VsZW1lbnQgY29ubmVjdF9xdWV1ZTsKLSAgc3RydWN0IGN1cmxfbGxpc3RfZWxlbWVudCBzaF9xdWV1ZTsgLyogbGlzdCBwZXIgQ3VybF9zaF9lbnRyeSAqLwogICBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50IGNvbm5fcXVldWU7IC8qIGxpc3QgcGVyIGNvbm5lY3RkYXRhICovCiAKICAgQ1VSTE1zdGF0ZSBtc3RhdGU7ICAvKiB0aGUgaGFuZGxlJ3Mgc3RhdGUgKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL2NyYW0uYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL2NyYW0uYwppbmRleCBkMTQ4NjE4Li4wNDQzOGZhIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC9jcmFtLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvY3JhbS5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC9kaWdlc3QuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL2RpZ2VzdC5jCmluZGV4IGY5Y2RjOWQuLmE4ODM1NzAgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL2RpZ2VzdC5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL2RpZ2VzdC5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC02Miw3ICs2Miw3IEBACiAgICB3aGF0IHVsdGltYXRlbHkgZ29lcyBvdmVyIHRoZSBuZXR3b3JrLgogKi8KICNkZWZpbmUgQ1VSTF9PVVRQVVRfRElHRVNUX0NPTlYoYSwgYikgXAotICByZXN1bHQgPSBDdXJsX2NvbnZlcnRfdG9fbmV0d29yayhhLCAoY2hhciAqKWIsIHN0cmxlbigoY29uc3QgY2hhciAqKWIpKTsgXAorICByZXN1bHQgPSBDdXJsX2NvbnZlcnRfdG9fbmV0d29yayhhLCBiLCBzdHJsZW4oYikpOyBcCiAgIGlmKHJlc3VsdCkgeyBcCiAgICAgZnJlZShiKTsgXAogICAgIHJldHVybiByZXN1bHQ7IFwKQEAgLTM1Nyw3ICszNTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VydmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQogewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKICAgc2l6ZV90IGk7CiAgIE1ENV9jb250ZXh0ICpjdHh0OwogICBjaGFyICpyZXNwb25zZSA9IE5VTEw7CkBAIC0zNzcsMTAgKzM3NiwxMiBAQAogICBjaGFyICpzcG4gICAgICAgICA9IE5VTEw7CiAKICAgLyogRGVjb2RlIHRoZSBjaGFsbGVuZ2UgbWVzc2FnZSAqLwotICByZXN1bHQgPSBhdXRoX2RlY29kZV9kaWdlc3RfbWQ1X21lc3NhZ2UoY2hsZzY0LCBub25jZSwgc2l6ZW9mKG5vbmNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxtLCBzaXplb2YocmVhbG0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtLCBzaXplb2YoYWxnb3JpdGhtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFvcF9vcHRpb25zLCBzaXplb2YocW9wX29wdGlvbnMpKTsKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gYXV0aF9kZWNvZGVfZGlnZXN0X21kNV9tZXNzYWdlKGNobGc2NCwgbm9uY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yobm9uY2UpLCByZWFsbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihyZWFsbSksIGFsZ29yaXRobSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihhbGdvcml0aG0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcW9wX29wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YocW9wX29wdGlvbnMpKTsKICAgaWYocmVzdWx0KQogICAgIHJldHVybiByZXN1bHQ7CiAKQEAgLTY1OSw3ICs2NjAsNyBAQAogfQogCiAvKgotICogX0N1cmxfYXV0aF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZSgpCisgKiBhdXRoX2NyZWF0ZV9kaWdlc3RfaHR0cF9tZXNzYWdlKCkKICAqCiAgKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBIVFRQIERJR0VTVCByZXNwb25zZSBtZXNzYWdlIHJlYWR5IGZvciBzZW5kaW5nCiAgKiB0byB0aGUgcmVjaXBpZW50LgpAQCAtNjc4LDcgKzY3OSw3IEBACiAgKgogICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgogICovCi1zdGF0aWMgQ1VSTGNvZGUgX0N1cmxfYXV0aF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZSgKK3N0YXRpYyBDVVJMY29kZSBhdXRoX2NyZWF0ZV9kaWdlc3RfaHR0cF9tZXNzYWdlKAogICAgICAgICAgICAgICAgICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKQEAgLTY4NywxMiArNjg4LDEyIEBACiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0LAogICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4sCiAgICAgICAgICAgICAgICAgICB2b2lkICgqY29udmVydF90b19hc2NpaSkodW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopLAotICAgICAgICAgICAgICAgICAgdm9pZCAoKmhhc2gpKHVuc2lnbmVkIGNoYXIgKiwgY29uc3QgdW5zaWduZWQgY2hhciAqKSkKKyAgICAgICAgICAgICAgICAgIHZvaWQgKCpoYXNoKSh1bnNpZ25lZCBjaGFyICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3QpKQogewogICBDVVJMY29kZSByZXN1bHQ7CiAgIHVuc2lnbmVkIGNoYXIgaGFzaGJ1ZlszMl07IC8qIDMyIGJ5dGVzLzI1NiBiaXRzICovCiAgIHVuc2lnbmVkIGNoYXIgcmVxdWVzdF9kaWdlc3RbNjVdOwotICB1bnNpZ25lZCBjaGFyICpoYXNodGhpczsKICAgdW5zaWduZWQgY2hhciBoYTFbNjVdOyAgICAvKiA2NCBkaWdpdHMgYW5kIDEgemVybyBieXRlICovCiAgIHVuc2lnbmVkIGNoYXIgaGEyWzY1XTsgICAgLyogNjQgZGlnaXRzIGFuZCAxIHplcm8gYnl0ZSAqLwogICBjaGFyIHVzZXJoWzY1XTsKQEAgLTcwMCw2ICs3MDEsNyBAQAogICBzaXplX3QgY25vbmNlX3N6ID0gMDsKICAgY2hhciAqdXNlcnBfcXVvdGVkOwogICBjaGFyICpyZXNwb25zZSA9IE5VTEw7CisgIGNoYXIgKmhhc2h0aGlzID0gTlVMTDsKICAgY2hhciAqdG1wID0gTlVMTDsKIAogICBpZighZGlnZXN0LT5uYykKQEAgLTcyMSwxMiArNzIzLDEyIEBACiAgIH0KIAogICBpZihkaWdlc3QtPnVzZXJoYXNoKSB7Ci0gICAgaGFzaHRoaXMgPSAodW5zaWduZWQgY2hhciAqKSBhcHJpbnRmKCIlczolcyIsIHVzZXJwLCBkaWdlc3QtPnJlYWxtKTsKKyAgICBoYXNodGhpcyA9IGFwcmludGYoIiVzOiVzIiwgdXNlcnAsIGRpZ2VzdC0+cmVhbG0pOwogICAgIGlmKCFoYXNodGhpcykKICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCiAgICAgQ1VSTF9PVVRQVVRfRElHRVNUX0NPTlYoZGF0YSwgaGFzaHRoaXMpOwotICAgIGhhc2goaGFzaGJ1ZiwgaGFzaHRoaXMpOworICAgIGhhc2goaGFzaGJ1ZiwgKHVuc2lnbmVkIGNoYXIgKikgaGFzaHRoaXMsIHN0cmxlbihoYXNodGhpcykpOwogICAgIGZyZWUoaGFzaHRoaXMpOwogICAgIGNvbnZlcnRfdG9fYXNjaWkoaGFzaGJ1ZiwgKHVuc2lnbmVkIGNoYXIgKil1c2VyaCk7CiAgIH0KQEAgLTc0MiwxNCArNzQ0LDEzIEBACiAgICAgICAgICAgIHVucShub25jZS12YWx1ZSkgIjoiIHVucShjbm9uY2UtdmFsdWUpCiAgICovCiAKLSAgaGFzaHRoaXMgPSAodW5zaWduZWQgY2hhciAqKQotICAgIGFwcmludGYoIiVzOiVzOiVzIiwgZGlnZXN0LT51c2VyaGFzaCA/IHVzZXJoIDogdXNlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPnJlYWxtLCBwYXNzd2RwKTsKKyAgaGFzaHRoaXMgPSBhcHJpbnRmKCIlczolczolcyIsIGRpZ2VzdC0+dXNlcmhhc2ggPyB1c2VyaCA6IHVzZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5yZWFsbSwgcGFzc3dkcCk7CiAgIGlmKCFoYXNodGhpcykKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAogICBDVVJMX09VVFBVVF9ESUdFU1RfQ09OVihkYXRhLCBoYXNodGhpcyk7IC8qIGNvbnZlcnQgb24gbm9uLUFTQ0lJIG1hY2hpbmVzICovCi0gIGhhc2goaGFzaGJ1ZiwgaGFzaHRoaXMpOworICBoYXNoKGhhc2hidWYsICh1bnNpZ25lZCBjaGFyICopIGhhc2h0aGlzLCBzdHJsZW4oaGFzaHRoaXMpKTsKICAgZnJlZShoYXNodGhpcyk7CiAgIGNvbnZlcnRfdG9fYXNjaWkoaGFzaGJ1ZiwgaGExKTsKIApAQCAtNzYyLDcgKzc2Myw3IEBACiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAogICAgIENVUkxfT1VUUFVUX0RJR0VTVF9DT05WKGRhdGEsIHRtcCk7IC8qIENvbnZlcnQgb24gbm9uLUFTQ0lJIG1hY2hpbmVzICovCi0gICAgaGFzaChoYXNoYnVmLCAodW5zaWduZWQgY2hhciAqKSB0bXApOworICAgIGhhc2goaGFzaGJ1ZiwgKHVuc2lnbmVkIGNoYXIgKikgdG1wLCBzdHJsZW4odG1wKSk7CiAgICAgZnJlZSh0bXApOwogICAgIGNvbnZlcnRfdG9fYXNjaWkoaGFzaGJ1ZiwgaGExKTsKICAgfQpAQCAtNzgwLDE5ICs3ODEsMTkgQEAKICAgICA1LjEuMSBvZiBSRkMgMjYxNikKICAgKi8KIAotICBoYXNodGhpcyA9ICh1bnNpZ25lZCBjaGFyICopIGFwcmludGYoIiVzOiVzIiwgcmVxdWVzdCwgdXJpcGF0aCk7CisgIGhhc2h0aGlzID0gYXByaW50ZigiJXM6JXMiLCByZXF1ZXN0LCB1cmlwYXRoKTsKICAgaWYoIWhhc2h0aGlzKQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCiAgIGlmKGRpZ2VzdC0+cW9wICYmIHN0cmNhc2Vjb21wYXJlKGRpZ2VzdC0+cW9wLCAiYXV0aC1pbnQiKSkgewogICAgIC8qIFdlIGRvbid0IHN1cHBvcnQgYXV0aC1pbnQgZm9yIFBVVCBvciBQT1NUICovCiAgICAgY2hhciBoYXNoZWRbNjVdOwotICAgIHVuc2lnbmVkIGNoYXIgKmhhc2h0aGlzMjsKKyAgICBjaGFyICpoYXNodGhpczI7CiAKLSAgICBoYXNoKGhhc2hidWYsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIiIpOworICAgIGhhc2goaGFzaGJ1ZiwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikiIiwgMCk7CiAgICAgY29udmVydF90b19hc2NpaShoYXNoYnVmLCAodW5zaWduZWQgY2hhciAqKWhhc2hlZCk7CiAKLSAgICBoYXNodGhpczIgPSAodW5zaWduZWQgY2hhciAqKWFwcmludGYoIiVzOiVzIiwgaGFzaHRoaXMsIGhhc2hlZCk7CisgICAgaGFzaHRoaXMyID0gYXByaW50ZigiJXM6JXMiLCBoYXNodGhpcywgaGFzaGVkKTsKICAgICBmcmVlKGhhc2h0aGlzKTsKICAgICBoYXNodGhpcyA9IGhhc2h0aGlzMjsKICAgfQpAQCAtODAxLDMxICs4MDIsMjMgQEAKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAogICBDVVJMX09VVFBVVF9ESUdFU1RfQ09OVihkYXRhLCBoYXNodGhpcyk7IC8qIGNvbnZlcnQgb24gbm9uLUFTQ0lJIG1hY2hpbmVzICovCi0gIGhhc2goaGFzaGJ1ZiwgaGFzaHRoaXMpOworICBoYXNoKGhhc2hidWYsICh1bnNpZ25lZCBjaGFyICopIGhhc2h0aGlzLCBzdHJsZW4oaGFzaHRoaXMpKTsKICAgZnJlZShoYXNodGhpcyk7CiAgIGNvbnZlcnRfdG9fYXNjaWkoaGFzaGJ1ZiwgaGEyKTsKIAogICBpZihkaWdlc3QtPnFvcCkgewotICAgIGhhc2h0aGlzID0gKHVuc2lnbmVkIGNoYXIgKikgYXByaW50ZigiJXM6JXM6JTA4eDolczolczolcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGExLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+bm9uY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5uYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPmNub25jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPnFvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYTIpOworICAgIGhhc2h0aGlzID0gYXByaW50ZigiJXM6JXM6JTA4eDolczolczolcyIsIGhhMSwgZGlnZXN0LT5ub25jZSwgZGlnZXN0LT5uYywKKyAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5jbm9uY2UsIGRpZ2VzdC0+cW9wLCBoYTIpOwogICB9CiAgIGVsc2UgewotICAgIGhhc2h0aGlzID0gKHVuc2lnbmVkIGNoYXIgKikgYXByaW50ZigiJXM6JXM6JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPm5vbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhMik7CisgICAgaGFzaHRoaXMgPSBhcHJpbnRmKCIlczolczolcyIsIGhhMSwgZGlnZXN0LT5ub25jZSwgaGEyKTsKICAgfQogCiAgIGlmKCFoYXNodGhpcykKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAogICBDVVJMX09VVFBVVF9ESUdFU1RfQ09OVihkYXRhLCBoYXNodGhpcyk7IC8qIGNvbnZlcnQgb24gbm9uLUFTQ0lJIG1hY2hpbmVzICovCi0gIGhhc2goaGFzaGJ1ZiwgaGFzaHRoaXMpOworICBoYXNoKGhhc2hidWYsICh1bnNpZ25lZCBjaGFyICopIGhhc2h0aGlzLCBzdHJsZW4oaGFzaHRoaXMpKTsKICAgZnJlZShoYXNodGhpcyk7CiAgIGNvbnZlcnRfdG9fYXNjaWkoaGFzaGJ1ZiwgcmVxdWVzdF9kaWdlc3QpOwogCkBAIC04OTgsNyArODkxLDcgQEAKIAogICBpZihkaWdlc3QtPmFsZ29yaXRobSkgewogICAgIC8qIEFwcGVuZCB0aGUgYWxnb3JpdGhtICovCi0gICAgdG1wID0gYXByaW50ZigiJXMsIGFsZ29yaXRobT1cIiVzXCIiLCByZXNwb25zZSwgZGlnZXN0LT5hbGdvcml0aG0pOworICAgIHRtcCA9IGFwcmludGYoIiVzLCBhbGdvcml0aG09JXMiLCByZXNwb25zZSwgZGlnZXN0LT5hbGdvcml0aG0pOwogICAgIGZyZWUocmVzcG9uc2UpOwogICAgIGlmKCF0bXApCiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKQEAgLTk1NCwyMSArOTQ3LDIxIEBACiAgIHN3aXRjaChkaWdlc3QtPmFsZ28pIHsKICAgY2FzZSBDVVJMRElHRVNUQUxHT19NRDU6CiAgIGNhc2UgQ1VSTERJR0VTVEFMR09fTUQ1U0VTUzoKLSAgICByZXR1cm4gX0N1cmxfYXV0aF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZShkYXRhLCB1c2VycCwgcGFzc3dkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LCB1cmlwYXRoLCBkaWdlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHRyLCBvdXRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aF9kaWdlc3RfbWQ1X3RvX2FzY2lpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1cmxfbWQ1aXQpOworICAgIHJldHVybiBhdXRoX2NyZWF0ZV9kaWdlc3RfaHR0cF9tZXNzYWdlKGRhdGEsIHVzZXJwLCBwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsIHVyaXBhdGgsIGRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdHIsIG91dGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoX2RpZ2VzdF9tZDVfdG9fYXNjaWksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VybF9tZDVpdCk7CiAKICAgY2FzZSBDVVJMRElHRVNUQUxHT19TSEEyNTY6CiAgIGNhc2UgQ1VSTERJR0VTVEFMR09fU0hBMjU2U0VTUzoKICAgY2FzZSBDVVJMRElHRVNUQUxHT19TSEE1MTJfMjU2OgogICBjYXNlIENVUkxESUdFU1RBTEdPX1NIQTUxMl8yNTZTRVNTOgotICAgIHJldHVybiBfQ3VybF9hdXRoX2NyZWF0ZV9kaWdlc3RfaHR0cF9tZXNzYWdlKGRhdGEsIHVzZXJwLCBwYXNzd2RwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsIHVyaXBhdGgsIGRpZ2VzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdHIsIG91dGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRoX2RpZ2VzdF9zaGEyNTZfdG9fYXNjaWksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VybF9zaGEyNTZpdCk7CisgICAgcmV0dXJuIGF1dGhfY3JlYXRlX2RpZ2VzdF9odHRwX21lc3NhZ2UoZGF0YSwgdXNlcnAsIHBhc3N3ZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCwgdXJpcGF0aCwgZGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB0ciwgb3V0bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhfZGlnZXN0X3NoYTI1Nl90b19hc2NpaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJsX3NoYTI1Nml0KTsKIAogICBkZWZhdWx0OgogICAgIHJldHVybiBDVVJMRV9VTlNVUFBPUlRFRF9QUk9UT0NPTDsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL2RpZ2VzdC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvZGlnZXN0LmgKaW5kZXggODY4NmM0NC4uY2MwNWZkYiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvZGlnZXN0LmgKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvZGlnZXN0LmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL2RpZ2VzdF9zc3BpLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC9kaWdlc3Rfc3NwaS5jCmluZGV4IGZlODA5M2UuLmExMDkwNTYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL2RpZ2VzdF9zc3BpLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvZGlnZXN0X3NzcGkuYwpAQCAtNjEsNiArNjEsMTEgQEAKICAgc3RhdHVzID0gc19wU2VjRm4tPlF1ZXJ5U2VjdXJpdHlQYWNrYWdlSW5mbygoVENIQVIgKikgVEVYVChTUF9OQU1FX0RJR0VTVCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNlY3VyaXR5UGFja2FnZSk7CiAKKyAgLyogUmVsZWFzZSB0aGUgcGFja2FnZSBidWZmZXIgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KKyAgaWYoc3RhdHVzID09IFNFQ19FX09LKSB7CisgICAgc19wU2VjRm4tPkZyZWVDb250ZXh0QnVmZmVyKFNlY3VyaXR5UGFja2FnZSk7CisgIH0KKwogICByZXR1cm4gKHN0YXR1cyA9PSBTRUNfRV9PSyA/IFRSVUUgOiBGQUxTRSk7CiB9CiAKQEAgLTIyMCw3ICsyMjUsMTAgQEAKICAgICBmcmVlKG91dHB1dF90b2tlbik7CiAgICAgZnJlZShpbnB1dF90b2tlbik7CiAKLSAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKKyAgICBpZihzdGF0dXMgPT0gU0VDX0VfSU5TVUZGSUNJRU5UX01FTU9SWSkKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgcmV0dXJuIENVUkxFX0FVVEhfRVJST1I7CiAgIH0KIAogICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLwpAQCAtNjA3LDcgKzYxNSwxMCBAQAogCiAgICAgICBDdXJsX3NhZmVmcmVlKGRpZ2VzdC0+aHR0cF9jb250ZXh0KTsKIAotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICBpZihzdGF0dXMgPT0gU0VDX0VfSU5TVUZGSUNJRU5UX01FTU9SWSkKKyAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICAgIHJldHVybiBDVVJMRV9BVVRIX0VSUk9SOwogICAgIH0KIAogICAgIG91dHB1dF90b2tlbl9sZW4gPSByZXNwX2J1Zi5jYkJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL2tyYjVfZ3NzYXBpLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC9rcmI1X2dzc2FwaS5jCmluZGV4IGVhMGE1ZjEuLjk1YmFiMGUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL2tyYjVfZ3NzYXBpLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgva3JiNV9nc3NhcGkuYwpAQCAtMTIxLDcgKzEyMSw3IEBACiAKICAgICAgIGZyZWUoc3BuKTsKIAotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICByZXR1cm4gQ1VSTEVfQVVUSF9FUlJPUjsKICAgICB9CiAKICAgICBmcmVlKHNwbik7CkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgImdzc19pbml0X3NlY19jb250ZXh0KCkgZmFpbGVkOiAiLAogICAgICAgICAgICAgICAgICAgICAgICBtYWpvcl9zdGF0dXMsIG1pbm9yX3N0YXR1cyk7CiAKLSAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKKyAgICByZXR1cm4gQ1VSTEVfQVVUSF9FUlJPUjsKICAgfQogCiAgIGlmKG91dHB1dF90b2tlbi52YWx1ZSAmJiBvdXRwdXRfdG9rZW4ubGVuZ3RoKSB7CkBAIC0yNTIsNyArMjUyLDcgQEAKIAogICAgIGZyZWUoY2hsZyk7CiAKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICByZXR1cm4gQ1VSTEVfQVVUSF9FUlJPUjsKICAgfQogCiAgIC8qIENvbnZlcnQgdGhlIHVzZXJuYW1lIGZyb20gaW50ZXJuYWwgZm9ybWF0IHRvIGEgZGlzcGxheWFibGUgdG9rZW4gKi8KQEAgLTI2NCw3ICsyNjQsNyBAQAogCiAgICAgZnJlZShjaGxnKTsKIAotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIHJldHVybiBDVVJMRV9BVVRIX0VSUk9SOwogICB9CiAKICAgLyogU2V0dXAgdGhlIGNoYWxsZW5nZSAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLwpAQCAtMzU1LDcgKzM1NSw3IEBACiAKICAgICBmcmVlKG1lc3NhZ2UpOwogCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgcmV0dXJuIENVUkxFX0FVVEhfRVJST1I7CiAgIH0KIAogICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgva3JiNV9zc3BpLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC9rcmI1X3NzcGkuYwppbmRleCAxZjZlNDYyLi45ODA0MWQ5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC9rcmI1X3NzcGkuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC9rcmI1X3NzcGkuYwpAQCAtNTgsNiArNTgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURVhUKFNQX05BTUVfS0VSQkVST1MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTZWN1cml0eVBhY2thZ2UpOwogCisgIC8qIFJlbGVhc2UgdGhlIHBhY2thZ2UgYnVmZmVyIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCisgIGlmKHN0YXR1cyA9PSBTRUNfRV9PSykgeworICAgIHNfcFNlY0ZuLT5GcmVlQ29udGV4dEJ1ZmZlcihTZWN1cml0eVBhY2thZ2UpOworICB9CisKICAgcmV0dXJuIChzdGF0dXMgPT0gU0VDX0VfT0sgPyBUUlVFIDogRkFMU0UpOwogfQogCkBAIC0yMTcsOCArMjIyLDEyIEBACiAgIC8qIEZyZWUgdGhlIGRlY29kZWQgY2hhbGxlbmdlIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCiAgIGZyZWUoY2hsZyk7CiAKKyAgaWYoc3RhdHVzID09IFNFQ19FX0lOU1VGRklDSUVOVF9NRU1PUlkpIHsKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCiAgIGlmKHN0YXR1cyAhPSBTRUNfRV9PSyAmJiBzdGF0dXMgIT0gU0VDX0lfQ09OVElOVUVfTkVFREVEKSB7Ci0gICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7CisgICAgcmV0dXJuIENVUkxFX0FVVEhfRVJST1I7CiAgIH0KIAogICBpZihtZW1jbXAoJmNvbnRleHQsIGtyYjUtPmNvbnRleHQsIHNpemVvZihjb250ZXh0KSkpIHsKQEAgLTMwOSw3ICszMTgsMTAgQEAKICAgaWYoc3RhdHVzICE9IFNFQ19FX09LKSB7CiAgICAgZnJlZShjaGxnKTsKIAotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIGlmKHN0YXR1cyA9PSBTRUNfRV9JTlNVRkZJQ0lFTlRfTUVNT1JZKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICByZXR1cm4gQ1VSTEVfQVVUSF9FUlJPUjsKICAgfQogCiAgIC8qIEdldCB0aGUgZnVsbHkgcXVhbGlmaWVkIHVzZXJuYW1lIGJhY2sgZnJvbSB0aGUgY29udGV4dCAqLwpAQCAtMzE5LDcgKzMzMSwxMCBAQAogICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKICAgICBmcmVlKGNobGcpOwogCi0gICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7CisgICAgaWYoc3RhdHVzID09IFNFQ19FX0lOU1VGRklDSUVOVF9NRU1PUlkpCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIHJldHVybiBDVVJMRV9BVVRIX0VSUk9SOwogICB9CiAKICAgLyogU2V0dXAgdGhlICJpbnB1dCIgc2VjdXJpdHkgYnVmZmVyICovCkBAIC00MzgsNyArNDUzLDEwIEBACiAgICAgZnJlZShtZXNzYWdlKTsKICAgICBmcmVlKHRyYWlsZXIpOwogCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgaWYoc3RhdHVzID09IFNFQ19FX0lOU1VGRklDSUVOVF9NRU1PUlkpCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIHJldHVybiBDVVJMRV9BVVRIX0VSUk9SOwogICB9CiAKICAgLyogQWxsb2NhdGUgdGhlIGVuY3J5cHRpb24gKHdyYXApIGJ1ZmZlciAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvbnRsbS5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvbnRsbS5jCmluZGV4IDA0N2MyYjUuLjhmOTEwMzggMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL250bG0uYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC9udGxtLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJjdXJsX250bG1fY29yZS5oIgogI2luY2x1ZGUgImN1cmxfZ2V0aG9zdG5hbWUuaCIKICNpbmNsdWRlICJjdXJsX211bHRpYnl0ZS5oIgorI2luY2x1ZGUgImN1cmxfbWQ1LmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKICNpbmNsdWRlICJyYW5kLmgiCiAjaW5jbHVkZSAidnRscy92dGxzLmgiCkBAIC02MjEsMTEgKzYyMiwxMSBAQAogICAgIG1lbWNweSh0bXAsICZudGxtLT5ub25jZVswXSwgOCk7CiAgICAgbWVtY3B5KHRtcCArIDgsIGVudHJvcHksIDgpOwogCi0gICAgcmVzdWx0ID0gQ3VybF9zc2xfbWQ1c3VtKHRtcCwgMTYsIG1kNXN1bSwgTUQ1X0RJR0VTVF9MRU5HVEgpOwotICAgIGlmKCFyZXN1bHQpCi0gICAgICAvKiBXZSBzaGFsbCBvbmx5IHVzZSB0aGUgZmlyc3QgOCBieXRlcyBvZiBtZDVzdW0sIGJ1dCB0aGUgZGVzIGNvZGUgaW4KLSAgICAgICAgIEN1cmxfbnRsbV9jb3JlX2xtX3Jlc3Agb25seSBlbmNyeXB0IHRoZSBmaXJzdCA4IGJ5dGVzICovCi0gICAgICByZXN1bHQgPSBDdXJsX250bG1fY29yZV9ta19udF9oYXNoKGRhdGEsIHBhc3N3ZHAsIG50YnVmZmVyKTsKKyAgICBDdXJsX21kNWl0KG1kNXN1bSwgdG1wLCAxNik7CisKKyAgICAvKiBXZSBzaGFsbCBvbmx5IHVzZSB0aGUgZmlyc3QgOCBieXRlcyBvZiBtZDVzdW0sIGJ1dCB0aGUgZGVzIGNvZGUgaW4KKyAgICAgICBDdXJsX250bG1fY29yZV9sbV9yZXNwIG9ubHkgZW5jcnlwdCB0aGUgZmlyc3QgOCBieXRlcyAqLworICAgIHJlc3VsdCA9IEN1cmxfbnRsbV9jb3JlX21rX250X2hhc2goZGF0YSwgcGFzc3dkcCwgbnRidWZmZXIpOwogICAgIGlmKHJlc3VsdCkKICAgICAgIHJldHVybiByZXN1bHQ7CiAKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL250bG1fc3NwaS5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvbnRsbV9zc3BpLmMKaW5kZXggNTg5Y2NhMS4uY2Q2Y2I3OSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvbnRsbV9zc3BpLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvbnRsbV9zc3BpLmMKQEAgLTU2LDYgKzU2LDExIEBACiAgIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeVNlY3VyaXR5UGFja2FnZUluZm8oKFRDSEFSICopIFRFWFQoU1BfTkFNRV9OVExNKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU2VjdXJpdHlQYWNrYWdlKTsKIAorICAvKiBSZWxlYXNlIHRoZSBwYWNrYWdlIGJ1ZmZlciBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLworICBpZihzdGF0dXMgPT0gU0VDX0VfT0spIHsKKyAgICBzX3BTZWNGbi0+RnJlZUNvbnRleHRCdWZmZXIoU2VjdXJpdHlQYWNrYWdlKTsKKyAgfQorCiAgIHJldHVybiAoc3RhdHVzID09IFNFQ19FX09LID8gVFJVRSA6IEZBTFNFKTsKIH0KIApAQCAtMTY5LDggKzE3NCwxMCBAQAogICBpZihzdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfTkVFREVEIHx8CiAgICAgc3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX0FORF9DT05USU5VRSkKICAgICBzX3BTZWNGbi0+Q29tcGxldGVBdXRoVG9rZW4obnRsbS0+Y29udGV4dCwgJnR5cGVfMV9kZXNjKTsKKyAgZWxzZSBpZihzdGF0dXMgPT0gU0VDX0VfSU5TVUZGSUNJRU5UX01FTU9SWSkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgZWxzZSBpZihzdGF0dXMgIT0gU0VDX0VfT0sgJiYgc3RhdHVzICE9IFNFQ19JX0NPTlRJTlVFX05FRURFRCkKLSAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKKyAgICByZXR1cm4gQ1VSTEVfQVVUSF9FUlJPUjsKIAogICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLwogICByZXR1cm4gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIChjaGFyICopIG50bG0tPm91dHB1dF90b2tlbiwKQEAgLTMxNiw3ICszMjMsMTAgQEAKICAgICBpbmZvZihkYXRhLCAiTlRMTSBoYW5kc2hha2UgZmFpbHVyZSAodHlwZS0zIG1lc3NhZ2UpOiBTdGF0dXM9JXhcbiIsCiAgICAgICAgICAgc3RhdHVzKTsKIAotICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOworICAgIGlmKHN0YXR1cyA9PSBTRUNfRV9JTlNVRkZJQ0lFTlRfTUVNT1JZKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICByZXR1cm4gQ1VSTEVfQVVUSF9FUlJPUjsKICAgfQogCiAgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC9zcG5lZ29fZ3NzYXBpLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC9zcG5lZ29fZ3NzYXBpLmMKaW5kZXggNWQ0M2UxMS4uZWQ3Y2UwMiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvc3BuZWdvX2dzc2FwaS5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL3NwbmVnb19nc3NhcGkuYwpAQCAtMTIxLDcgKzEyMSw3IEBACiAKICAgICAgIGZyZWUoc3BuKTsKIAotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICByZXR1cm4gQ1VSTEVfQVVUSF9FUlJPUjsKICAgICB9CiAKICAgICBmcmVlKHNwbik7CkBAIC0xNzAsMTQgKzE3MCwxNCBAQAogICAgIEN1cmxfZ3NzX2xvZ19lcnJvcihkYXRhLCAiZ3NzX2luaXRfc2VjX2NvbnRleHQoKSBmYWlsZWQ6ICIsCiAgICAgICAgICAgICAgICAgICAgICAgIG1ham9yX3N0YXR1cywgbWlub3Jfc3RhdHVzKTsKIAotICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7CisgICAgcmV0dXJuIENVUkxFX0FVVEhfRVJST1I7CiAgIH0KIAogICBpZighb3V0cHV0X3Rva2VuLnZhbHVlIHx8ICFvdXRwdXRfdG9rZW4ubGVuZ3RoKSB7CiAgICAgaWYob3V0cHV0X3Rva2VuLnZhbHVlKQogICAgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZ1bnVzZWRfc3RhdHVzLCAmb3V0cHV0X3Rva2VuKTsKIAotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIHJldHVybiBDVVJMRV9BVVRIX0VSUk9SOwogICB9CiAKICAgLyogRnJlZSBwcmV2aW91cyB0b2tlbiAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvc3BuZWdvX3NzcGkuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL3NwbmVnb19zc3BpLmMKaW5kZXggNGIyMWNjNy4uYjljMmNmNyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvc3BuZWdvX3NzcGkuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC9zcG5lZ29fc3NwaS5jCkBAIC01OSw2ICs1OSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFQoU1BfTkFNRV9ORUdPVElBVEUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTZWN1cml0eVBhY2thZ2UpOwogCisgIC8qIFJlbGVhc2UgdGhlIHBhY2thZ2UgYnVmZmVyIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCisgIGlmKHN0YXR1cyA9PSBTRUNfRV9PSykgeworICAgIHNfcFNlY0ZuLT5GcmVlQ29udGV4dEJ1ZmZlcihTZWN1cml0eVBhY2thZ2UpOworICB9CisKKwogICByZXR1cm4gKHN0YXR1cyA9PSBTRUNfRV9PSyA/IFRSVUUgOiBGQUxTRSk7CiB9CiAKQEAgLTE2NSw3ICsxNzEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdvLT5wX2lkZW50aXR5LCBOVUxMLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdvLT5jcmVkZW50aWFscywgJmV4cGlyeSk7CiAgICAgaWYobmVnby0+c3RhdHVzICE9IFNFQ19FX09LKQotICAgICAgcmV0dXJuIENVUkxFX0xPR0lOX0RFTklFRDsKKyAgICAgIHJldHVybiBDVVJMRV9BVVRIX0VSUk9SOwogCiAgICAgLyogQWxsb2NhdGUgb3VyIG5ldyBjb250ZXh0IGhhbmRsZSAqLwogICAgIG5lZ28tPmNvbnRleHQgPSBjYWxsb2MoMSwgc2l6ZW9mKEN0eHRIYW5kbGUpKTsKQEAgLTI1MSwxNCArMjU3LDI1IEBACiAgICAgY2hhciBidWZmZXJbU1RSRVJST1JfTEVOXTsKICAgICBmYWlsZihkYXRhLCAiSW5pdGlhbGl6ZVNlY3VyaXR5Q29udGV4dCBmYWlsZWQ6ICVzIiwKICAgICAgICAgICBDdXJsX3NzcGlfc3RyZXJyb3IobmVnby0+c3RhdHVzLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7Ci0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICBpZihuZWdvLT5zdGF0dXMgPT0gKERXT1JEKVNFQ19FX0lOU1VGRklDSUVOVF9NRU1PUlkpCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIHJldHVybiBDVVJMRV9BVVRIX0VSUk9SOwogICB9CiAKICAgaWYobmVnby0+c3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX05FRURFRCB8fAogICAgICBuZWdvLT5zdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfQU5EX0NPTlRJTlVFKSB7CiAgICAgbmVnby0+c3RhdHVzID0gc19wU2VjRm4tPkNvbXBsZXRlQXV0aFRva2VuKG5lZ28tPmNvbnRleHQsICZyZXNwX2Rlc2MpOwogICAgIGlmKEdTU19FUlJPUihuZWdvLT5zdGF0dXMpKSB7Ci0gICAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKKyAgICAgIGNoYXIgYnVmZmVyW1NUUkVSUk9SX0xFTl07CisgICAgICBmYWlsZihkYXRhLCAiQ29tcGxldGVBdXRoVG9rZW4gZmFpbGVkOiAlcyIsCisgICAgICAgICAgICBDdXJsX3NzcGlfc3RyZXJyb3IobmVnby0+c3RhdHVzLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CisKKyAgICAgIGlmKG5lZ28tPnN0YXR1cyA9PSAoRFdPUkQpU0VDX0VfSU5TVUZGSUNJRU5UX01FTU9SWSkKKyAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICAgIHJldHVybiBDVVJMRV9BVVRIX0VSUk9SOwogICAgIH0KICAgfQogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC92YXV0aC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdmF1dGgvdmF1dGguaAppbmRleCA3M2JkMjVlLi5hMWE1NTdkIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92YXV0aC92YXV0aC5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZhdXRoL3ZhdXRoLmgKQEAgLTQzLDcgKzQzLDcgQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQotI2RlZmluZSBHU1NfRVJST1Ioc3RhdHVzKSAoc3RhdHVzICYgMHg4MDAwMDAwMCkKKyNkZWZpbmUgR1NTX0VSUk9SKHN0YXR1cykgKChzdGF0dXMpICYgMHg4MDAwMDAwMCkKICNlbmRpZgogCiAvKiBUaGlzIGlzIHVzZWQgdG8gYnVpbGQgYSBTUE4gc3RyaW5nICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92ZXJzaW9uLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92ZXJzaW9uLmMKaW5kZXggMTRiMDUzMS4uNzdhY2E3YyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdmVyc2lvbi5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZlcnNpb24uYwpAQCAtNSw3ICs1LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtMjYsNyArMjYsOCBAQAogI2luY2x1ZGUgInVybGRhdGEuaCIKICNpbmNsdWRlICJ2dGxzL3Z0bHMuaCIKICNpbmNsdWRlICJodHRwMi5oIgotI2luY2x1ZGUgInNzaC5oIgorI2luY2x1ZGUgInZzc2gvc3NoLmgiCisjaW5jbHVkZSAicXVpYy5oIgogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAKICNpZmRlZiBVU0VfQVJFUwpAQCAtNTMsMTggKzU0LDYgQEAKICNpbmNsdWRlIDxsaWJydG1wL3J0bXAuaD4KICNlbmRpZgogCi0jaWZkZWYgVVNFX0xJQlNTSDIKLSNpbmNsdWRlIDxsaWJzc2gyLmg+Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfTElCU1NIMl9WRVJTSU9OCi0vKiBnZXQgaXQgcnVuLXRpbWUgaWYgcG9zc2libGUgKi8KLSNkZWZpbmUgQ1VSTF9MSUJTU0gyX1ZFUlNJT04gbGlic3NoMl92ZXJzaW9uKDApCi0jZWxzZQotLyogdXNlIGJ1aWxkLXRpbWUgaWYgcnVuLXRpbWUgbm90IHBvc3NpYmxlICovCi0jZGVmaW5lIENVUkxfTElCU1NIMl9WRVJTSU9OIExJQlNTSDJfVkVSU0lPTgotI2VuZGlmCi0KICNpZmRlZiBIQVZFX1pMSUJfSAogI2luY2x1ZGUgPHpsaWIuaD4KICNpZmRlZiBfX1NZTUJJQU4zMl9fCkBAIC0xMDIsNyArOTEsNyBAQAogY2hhciAqY3VybF92ZXJzaW9uKHZvaWQpCiB7CiAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOwotICBzdGF0aWMgY2hhciB2ZXJzaW9uWzIwMF07CisgIHN0YXRpYyBjaGFyIHZlcnNpb25bMjUwXTsKICAgY2hhciAqcHRyID0gdmVyc2lvbjsKICAgc2l6ZV90IGxlbjsKICAgc2l6ZV90IGxlZnQgPSBzaXplb2YodmVyc2lvbik7CkBAIC0xMTUsMTQgKzEwNCwxMiBAQAogICBsZWZ0IC09IGxlbjsKICAgcHRyICs9IGxlbjsKIAotICBpZihsZWZ0ID4gMSkgewotICAgIGxlbiA9IEN1cmxfc3NsX3ZlcnNpb24ocHRyICsgMSwgbGVmdCAtIDEpOworICBsZW4gPSBDdXJsX3NzbF92ZXJzaW9uKHB0ciArIDEsIGxlZnQgLSAxKTsKIAotICAgIGlmKGxlbiA+IDApIHsKLSAgICAgICpwdHIgPSAnICc7Ci0gICAgICBsZWZ0IC09ICsrbGVuOwotICAgICAgcHRyICs9IGxlbjsKLSAgICB9CisgIGlmKGxlbiA+IDApIHsKKyAgICAqcHRyID0gJyAnOworICAgIGxlZnQgLT0gKytsZW47CisgICAgcHRyICs9IGxlbjsKICAgfQogCiAjaWZkZWYgSEFWRV9MSUJaCkBAIC0xNzIsMTMgKzE1OSwxMiBAQAogICBsZWZ0IC09IGxlbjsKICAgcHRyICs9IGxlbjsKICNlbmRpZgotI2lmZGVmIFVTRV9MSUJTU0gyCi0gIGxlbiA9IG1zbnByaW50ZihwdHIsIGxlZnQsICIgbGlic3NoMi8lcyIsIENVUkxfTElCU1NIMl9WRVJTSU9OKTsKLSAgbGVmdCAtPSBsZW47Ci0gIHB0ciArPSBsZW47Ci0jZW5kaWYKLSNpZmRlZiBVU0VfTElCU1NICi0gIGxlbiA9IG1zbnByaW50ZihwdHIsIGxlZnQsICIgbGlic3NoLyVzIiwgQ1VSTF9MSUJTU0hfVkVSU0lPTik7CisjaWZkZWYgVVNFX1NTSAorICBpZihsZWZ0KSB7CisgICAgKnB0cisrPScgJzsKKyAgICBsZWZ0LS07CisgIH0KKyAgbGVuID0gQ3VybF9zc2hfdmVyc2lvbihwdHIsIGxlZnQpOwogICBsZWZ0IC09IGxlbjsKICAgcHRyICs9IGxlbjsKICNlbmRpZgpAQCAtMTg3LDYgKzE3MywxMSBAQAogICBsZWZ0IC09IGxlbjsKICAgcHRyICs9IGxlbjsKICNlbmRpZgorI2lmZGVmIEVOQUJMRV9RVUlDCisgIGxlbiA9IEN1cmxfcXVpY192ZXIocHRyLCBsZWZ0KTsKKyAgbGVmdCAtPSBsZW47CisgIHB0ciArPSBsZW47CisjZW5kaWYKICNpZmRlZiBVU0VfTElCUlRNUAogICB7CiAgICAgY2hhciBzdWZmWzJdOwpAQCAtMjc0LDggKzI2NSwxMCBAQAogI2lmbmRlZiBDVVJMX0RJU0FCTEVfUlRTUAogICAicnRzcCIsCiAjZW5kaWYKLSNpZiBkZWZpbmVkKFVTRV9TU0gpCisjaWYgZGVmaW5lZChVU0VfU1NIKSAmJiAhZGVmaW5lZChVU0VfV09MRlNTSCkKICAgInNjcCIsCisjZW5kaWYKKyNpZmRlZiBVU0VfU1NICiAgICJzZnRwIiwKICNlbmRpZgogI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9TTUIpICYmIGRlZmluZWQoVVNFX05UTE0pICYmIFwKQEAgLTM1OCw2ICszNTEsOSBAQAogI2lmIGRlZmluZWQoVVNFX05HSFRUUDIpCiAgIHwgQ1VSTF9WRVJTSU9OX0hUVFAyCiAjZW5kaWYKKyNpZiBkZWZpbmVkKEVOQUJMRV9RVUlDKQorICB8IENVUkxfVkVSU0lPTl9IVFRQMworI2VuZGlmCiAjaWYgZGVmaW5lZChVU0VfVU5JWF9TT0NLRVRTKQogICB8IENVUkxfVkVSU0lPTl9VTklYX1NPQ0tFVFMKICNlbmRpZgpAQCAtMzczLDYgKzM2OSw5IEBACiAjaWYgZGVmaW5lZChVU0VfQUxUU1ZDKQogICB8IENVUkxfVkVSU0lPTl9BTFRTVkMKICNlbmRpZgorI2lmZGVmIFVTRV9FU05JCisgIHwgQ1VSTF9WRVJTSU9OX0VTTkkKKyNlbmRpZgogICAsCiAgIE5VTEwsIC8qIHNzbF92ZXJzaW9uICovCiAgIDAsICAgIC8qIHNzbF92ZXJzaW9uX251bSwgdGhpcyBpcyBrZXB0IGF0IHplcm8gKi8KQEAgLTM4NSw2ICszODQsOSBAQAogICBOVUxMLCAvKiBzc2ggbGliIHZlcnNpb24gKi8KICAgMCwgICAgLyogYnJvdGxpX3Zlcl9udW0gKi8KICAgTlVMTCwgLyogYnJvdGxpIHZlcnNpb24gKi8KKyAgMCwgICAgLyogbmdodHRwMiB2ZXJzaW9uIG51bWJlciAqLworICBOVUxMLCAvKiBuZ2h0dHAyIHZlcnNpb24gc3RyaW5nICovCisgIE5VTEwgIC8qIHF1aWMgbGlicmFyeSBzdHJpbmcgKi8KIH07CiAKIGN1cmxfdmVyc2lvbl9pbmZvX2RhdGEgKmN1cmxfdmVyc2lvbl9pbmZvKENVUkx2ZXJzaW9uIHN0YW1wKQpAQCAtNDQ2LDExICs0NDgsOCBAQAogI2VuZGlmIC8qIF9MSUJJQ09OVl9WRVJTSU9OICovCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoVVNFX0xJQlNTSDIpCi0gIG1zbnByaW50Zihzc2hfYnVmZmVyLCBzaXplb2Yoc3NoX2J1ZmZlciksICJsaWJzc2gyLyVzIiwgTElCU1NIMl9WRVJTSU9OKTsKLSAgdmVyc2lvbl9pbmZvLmxpYnNzaF92ZXJzaW9uID0gc3NoX2J1ZmZlcjsKLSNlbGlmIGRlZmluZWQoVVNFX0xJQlNTSCkKLSAgbXNucHJpbnRmKHNzaF9idWZmZXIsIHNpemVvZihzc2hfYnVmZmVyKSwgImxpYnNzaC8lcyIsIENVUkxfTElCU1NIX1ZFUlNJT04pOworI2lmIGRlZmluZWQoVVNFX1NTSCkKKyAgQ3VybF9zc2hfdmVyc2lvbihzc2hfYnVmZmVyLCBzaXplb2Yoc3NoX2J1ZmZlcikpOwogICB2ZXJzaW9uX2luZm8ubGlic3NoX3ZlcnNpb24gPSBzc2hfYnVmZmVyOwogI2VuZGlmCiAKQEAgLTQ2MCw2ICs0NTksMjIgQEAKICAgdmVyc2lvbl9pbmZvLmJyb3RsaV92ZXJzaW9uID0gYnJvdGxpX2J1ZmZlcjsKICNlbmRpZgogCisjaWZkZWYgVVNFX05HSFRUUDIKKyAgeworICAgIG5naHR0cDJfaW5mbyAqaDIgPSBuZ2h0dHAyX3ZlcnNpb24oMCk7CisgICAgdmVyc2lvbl9pbmZvLm5naHR0cDJfdmVyX251bSA9IGgyLT52ZXJzaW9uX251bTsKKyAgICB2ZXJzaW9uX2luZm8ubmdodHRwMl92ZXJzaW9uID0gaDItPnZlcnNpb25fc3RyOworICB9CisjZW5kaWYKKworI2lmZGVmIEVOQUJMRV9RVUlDCisgIHsKKyAgICBzdGF0aWMgY2hhciBxdWljYnVmZmVyWzgwXTsKKyAgICBDdXJsX3F1aWNfdmVyKHF1aWNidWZmZXIsIHNpemVvZihxdWljYnVmZmVyKSk7CisgICAgdmVyc2lvbl9pbmZvLnF1aWNfdmVyc2lvbiA9IHF1aWNidWZmZXI7CisgIH0KKyNlbmRpZgorCiAgICh2b2lkKXN0YW1wOyAvKiBhdm9pZCBjb21waWxlciB3YXJuaW5ncywgd2UgZG9uJ3QgdXNlIHRoaXMgKi8KIAogICBpbml0aWFsaXplZCA9IHRydWU7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92cXVpYy9uZ3RjcDIuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZxdWljL25ndGNwMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ODg0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92cXVpYy9uZ3RjcDIuYwpAQCAtMCwwICsxLDE3NjkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmZGVmIFVTRV9OR1RDUDIKKyNpbmNsdWRlIDxuZ3RjcDIvbmd0Y3AyLmg+CisjaW5jbHVkZSA8bmd0Y3AyL25ndGNwMl9jcnlwdG8uaD4KKyNpbmNsdWRlIDxuZ2h0dHAzL25naHR0cDMuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorI2luY2x1ZGUgInVybGRhdGEuaCIKKyNpbmNsdWRlICJzZW5kZi5oIgorI2luY2x1ZGUgInN0cmR1cC5oIgorI2luY2x1ZGUgInJhbmQuaCIKKyNpbmNsdWRlICJuZ3RjcDIuaCIKKyNpbmNsdWRlICJtdWx0aWlmLmgiCisjaW5jbHVkZSAic3RyY2FzZS5oIgorI2luY2x1ZGUgImNvbm5lY3QuaCIKKyNpbmNsdWRlICJzdHJlcnJvci5oIgorCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKy8qICNkZWZpbmUgREVCVUdfTkdUQ1AyICovCisjaWZkZWYgQ1VSTERFQlVHCisjZGVmaW5lIERFQlVHX0hUVFAzCisjZW5kaWYKKyNpZmRlZiBERUJVR19IVFRQMworI2RlZmluZSBIM0JVR0YoeCkgeAorI2Vsc2UKKyNkZWZpbmUgSDNCVUdGKHgpIGRvIHsgfSB3aGlsZSgwKQorI2VuZGlmCisKKy8qCisgKiBUaGlzIGhvbGRzIG91dGdvaW5nIEhUVFAvMyBzdHJlYW0gZGF0YSB0aGF0IGlzIHVzZWQgYnkgbmdodHRwMyB1bnRpbCBhY2tlZC4KKyAqIEl0IGlzIHVzZWQgYXMgYSBjaXJjdWxhciBidWZmZXIuIEFkZCBuZXcgYnl0ZXMgYXQgdGhlIGVuZCB1bnRpbCBpdCByZWFjaGVzCisgKiB0aGUgZmFyIGVuZCwgdGhlbiBzdGFydCBvdmVyIGF0IGluZGV4IDAgYWdhaW4uCisgKi8KKworI2RlZmluZSBIM19TRU5EX1NJWkUgKDIwKjEwMjQpCitzdHJ1Y3QgaDNvdXQgeworICB1aW50OF90IGJ1ZltIM19TRU5EX1NJWkVdOworICBzaXplX3QgdXNlZDsgICAvKiBudW1iZXIgb2YgYnl0ZXMgdXNlZCBpbiB0aGUgYnVmZmVyICovCisgIHNpemVfdCB3aW5kZXg7IC8qIGluZGV4IGluIHRoZSBidWZmZXIgd2hlcmUgdG8gc3RhcnQgd3JpdGluZyB0aGUgbmV4dAorICAgICAgICAgICAgICAgICAgICBkYXRhIGJsb2NrICovCit9OworCisjZGVmaW5lIFFVSUNfTUFYX1NUUkVBTVMgKDI1NioxMDI0KQorI2RlZmluZSBRVUlDX01BWF9EQVRBICgxKjEwMjQqMTAyNCkKKyNkZWZpbmUgUVVJQ19JRExFX1RJTUVPVVQgNjAwMDAgLyogbWlsbGlzZWNvbmRzICovCisjZGVmaW5lIFFVSUNfQ0lQSEVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICJUTFNfQUVTXzEyOF9HQ01fU0hBMjU2OlRMU19BRVNfMjU2X0dDTV9TSEEzODQ6VExTX0NIQUNIQTIwXyIgICAgICAgICAgICAgICBcCisgICJQT0xZMTMwNV9TSEEyNTY6VExTX0FFU18xMjhfQ0NNX1NIQTI1NiIKKyNkZWZpbmUgUVVJQ19HUk9VUFMgIlAtMjU2OlgyNTUxOTpQLTM4NDpQLTUyMSIKKworc3RhdGljIENVUkxjb2RlIG5nX3Byb2Nlc3NfaW5ncmVzcyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMpOworc3RhdGljIENVUkxjb2RlIG5nX2ZsdXNoX2VncmVzcyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NrZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBxdWljc29ja2V0ICpxcyk7CitzdGF0aWMgaW50IGNiX2gzX2Fja2VkX3N0cmVhbV9kYXRhKG5naHR0cDNfY29ubiAqY29ubiwgaW50NjRfdCBzdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkYXRhbGVuLCB2b2lkICp1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnN0cmVhbV91c2VyX2RhdGEpOworCitzdGF0aWMgbmd0Y3AyX3RzdGFtcCB0aW1lc3RhbXAodm9pZCkKK3sKKyAgc3RydWN0IGN1cmx0aW1lIGN0ID0gQ3VybF9ub3coKTsKKyAgcmV0dXJuIGN0LnR2X3NlYyAqIE5HVENQMl9TRUNPTkRTICsgY3QudHZfdXNlYyAqIE5HVENQMl9NSUNST1NFQ09ORFM7Cit9CisKKyNpZmRlZiBERUJVR19OR1RDUDIKK3N0YXRpYyB2b2lkIHF1aWNfcHJpbnRmKHZvaWQgKnVzZXJfZGF0YSwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisgIHZhX2xpc3QgYXA7CisgICh2b2lkKXVzZXJfZGF0YTsgLyogVE9ETywgdXNlIHRoaXMgdG8gZG8gaW5mb2YoKSBpbnN0ZWFkIGxvbmctdGVybSAqLworICB2YV9zdGFydChhcCwgZm10KTsKKyAgdmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTsKKyAgdmFfZW5kKGFwKTsKKyAgZnByaW50ZihzdGRlcnIsICJcbiIpOworfQorI2VuZGlmCisKK3N0YXRpYyBuZ3RjcDJfY3J5cHRvX2xldmVsCitxdWljX2Zyb21fb3NzbF9sZXZlbChPU1NMX0VOQ1JZUFRJT05fTEVWRUwgb3NzbF9sZXZlbCkKK3sKKyAgc3dpdGNoKG9zc2xfbGV2ZWwpIHsKKyAgY2FzZSBzc2xfZW5jcnlwdGlvbl9pbml0aWFsOgorICAgIHJldHVybiBOR1RDUDJfQ1JZUFRPX0xFVkVMX0lOSVRJQUw7CisgIGNhc2Ugc3NsX2VuY3J5cHRpb25fZWFybHlfZGF0YToKKyAgICByZXR1cm4gTkdUQ1AyX0NSWVBUT19MRVZFTF9FQVJMWTsKKyAgY2FzZSBzc2xfZW5jcnlwdGlvbl9oYW5kc2hha2U6CisgICAgcmV0dXJuIE5HVENQMl9DUllQVE9fTEVWRUxfSEFORFNIQUtFOworICBjYXNlIHNzbF9lbmNyeXB0aW9uX2FwcGxpY2F0aW9uOgorICAgIHJldHVybiBOR1RDUDJfQ1JZUFRPX0xFVkVMX0FQUDsKKyAgZGVmYXVsdDoKKyAgICBhc3NlcnQoMCk7CisgIH0KK30KKworc3RhdGljIGludCBzZXR1cF9pbml0aWFsX2NyeXB0b19jb250ZXh0KHN0cnVjdCBxdWljc29ja2V0ICpxcykKK3sKKyAgY29uc3Qgbmd0Y3AyX2NpZCAqZGNpZCA9IG5ndGNwMl9jb25uX2dldF9kY2lkKHFzLT5xY29ubik7CisKKyAgaWYobmd0Y3AyX2NyeXB0b19kZXJpdmVfYW5kX2luc3RhbGxfaW5pdGlhbF9rZXkoCisgICAgICAgICBxcy0+cWNvbm4sIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIGRjaWQsCisgICAgICAgICBOR1RDUDJfQ1JZUFRPX1NJREVfQ0xJRU5UKSAhPSAwKQorICAgIHJldHVybiAtMTsKKworICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcXVpY19zZXR0aW5ncyhuZ3RjcDJfc2V0dGluZ3MgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHN0cmVhbV9idWZmZXJfc2l6ZSkKK3sKKyAgbmd0Y3AyX3NldHRpbmdzX2RlZmF1bHQocyk7CisjaWZkZWYgREVCVUdfTkdUQ1AyCisgIHMtPmxvZ19wcmludGYgPSBxdWljX3ByaW50ZjsKKyNlbHNlCisgIHMtPmxvZ19wcmludGYgPSBOVUxMOworI2VuZGlmCisgIHMtPmluaXRpYWxfdHMgPSB0aW1lc3RhbXAoKTsKKyAgcy0+dHJhbnNwb3J0X3BhcmFtcy5pbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsID0gc3RyZWFtX2J1ZmZlcl9zaXplOworICBzLT50cmFuc3BvcnRfcGFyYW1zLmluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlID0gUVVJQ19NQVhfU1RSRUFNUzsKKyAgcy0+dHJhbnNwb3J0X3BhcmFtcy5pbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmkgPSBRVUlDX01BWF9TVFJFQU1TOworICBzLT50cmFuc3BvcnRfcGFyYW1zLmluaXRpYWxfbWF4X2RhdGEgPSBRVUlDX01BWF9EQVRBOworICBzLT50cmFuc3BvcnRfcGFyYW1zLmluaXRpYWxfbWF4X3N0cmVhbXNfYmlkaSA9IDE7CisgIHMtPnRyYW5zcG9ydF9wYXJhbXMuaW5pdGlhbF9tYXhfc3RyZWFtc191bmkgPSAzOworICBzLT50cmFuc3BvcnRfcGFyYW1zLm1heF9pZGxlX3RpbWVvdXQgPSBRVUlDX0lETEVfVElNRU9VVDsKK30KKworc3RhdGljIEZJTEUgKmtleWxvZ19maWxlOyAvKiBub3QgdGhyZWFkLXNhZmUgKi8KK3N0YXRpYyB2b2lkIGtleWxvZ19jYWxsYmFjayhjb25zdCBTU0wgKnNzbCwgY29uc3QgY2hhciAqbGluZSkKK3sKKyAgKHZvaWQpc3NsOworICBmcHV0cyhsaW5lLCBrZXlsb2dfZmlsZSk7CisgIGZwdXRjKCdcbicsIGtleWxvZ19maWxlKTsKKyAgZmZsdXNoKGtleWxvZ19maWxlKTsKK30KKworc3RhdGljIGludCBpbml0X25naDNfY29ubihzdHJ1Y3QgcXVpY3NvY2tldCAqcXMpOworCitzdGF0aWMgaW50IHF1aWNfc2V0X2VuY3J5cHRpb25fc2VjcmV0cyhTU0wgKnNzbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9TU0xfRU5DUllQVElPTl9MRVZFTCBvc3NsX2xldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcnhfc2VjcmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqdHhfc2VjcmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNlY3JldGxlbikKK3sKKyAgc3RydWN0IHF1aWNzb2NrZXQgKnFzID0gKHN0cnVjdCBxdWljc29ja2V0ICopU1NMX2dldF9hcHBfZGF0YShzc2wpOworICBpbnQgbGV2ZWwgPSBxdWljX2Zyb21fb3NzbF9sZXZlbChvc3NsX2xldmVsKTsKKworICBpZihuZ3RjcDJfY3J5cHRvX2Rlcml2ZV9hbmRfaW5zdGFsbF9rZXkoCisgICAgICAgICBxcy0+cWNvbm4sIHNzbCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgbGV2ZWwsIHJ4X3NlY3JldCwKKyAgICAgICAgIHR4X3NlY3JldCwgc2VjcmV0bGVuLCBOR1RDUDJfQ1JZUFRPX1NJREVfQ0xJRU5UKSAhPSAwKQorICAgIHJldHVybiAwOworCisgIGlmKGxldmVsID09IE5HVENQMl9DUllQVE9fTEVWRUxfQVBQKSB7CisgICAgaWYoaW5pdF9uZ2gzX2Nvbm4ocXMpICE9IENVUkxFX09LKQorICAgICAgcmV0dXJuIDA7CisgIH0KKworICByZXR1cm4gMTsKK30KKworc3RhdGljIGludCBxdWljX2FkZF9oYW5kc2hha2VfZGF0YShTU0wgKnNzbCwgT1NTTF9FTkNSWVBUSU9OX0xFVkVMIG9zc2xfbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBsZW4pCit7CisgIHN0cnVjdCBxdWljc29ja2V0ICpxcyA9IChzdHJ1Y3QgcXVpY3NvY2tldCAqKVNTTF9nZXRfYXBwX2RhdGEoc3NsKTsKKyAgc3RydWN0IHF1aWNfaGFuZHNoYWtlICpjcnlwdG9fZGF0YTsKKyAgbmd0Y3AyX2NyeXB0b19sZXZlbCBsZXZlbCA9IHF1aWNfZnJvbV9vc3NsX2xldmVsKG9zc2xfbGV2ZWwpOworICBpbnQgcnY7CisKKyAgY3J5cHRvX2RhdGEgPSAmcXMtPmNyeXB0b19kYXRhW2xldmVsXTsKKyAgaWYoY3J5cHRvX2RhdGEtPmJ1ZiA9PSBOVUxMKSB7CisgICAgY3J5cHRvX2RhdGEtPmJ1ZiA9IG1hbGxvYyg0MDk2KTsKKyAgICBpZighY3J5cHRvX2RhdGEtPmJ1ZikKKyAgICAgIHJldHVybiAwOworICAgIGNyeXB0b19kYXRhLT5hbGxvY2xlbiA9IDQwOTY7CisgIH0KKworICAvKiBUT0RPIEp1c3QgcHJldGVuZCB0aGF0IGhhbmRzaGFrZSBkb2VzIG5vdCBncm93IG1vcmUgdGhhbiA0S2lCIGZvcgorICAgICBub3cgKi8KKyAgYXNzZXJ0KGNyeXB0b19kYXRhLT5sZW4gKyBsZW4gPD0gY3J5cHRvX2RhdGEtPmFsbG9jbGVuKTsKKworICBtZW1jcHkoJmNyeXB0b19kYXRhLT5idWZbY3J5cHRvX2RhdGEtPmxlbl0sIGRhdGEsIGxlbik7CisgIGNyeXB0b19kYXRhLT5sZW4gKz0gbGVuOworCisgIHJ2ID0gbmd0Y3AyX2Nvbm5fc3VibWl0X2NyeXB0b19kYXRhKAorICAgIHFzLT5xY29ubiwgbGV2ZWwsICh1aW50OF90ICopKCZjcnlwdG9fZGF0YS0+YnVmW2NyeXB0b19kYXRhLT5sZW5dIC0gbGVuKSwKKyAgICBsZW4pOworICBpZihydikgeworICAgIEgzQlVHRihmcHJpbnRmKHN0ZGVyciwgIndyaXRlX2NsaWVudF9oYW5kc2hha2UgZmFpbGVkXG4iKSk7CisgIH0KKyAgYXNzZXJ0KDAgPT0gcnYpOworCisgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50IHF1aWNfZmx1c2hfZmxpZ2h0KFNTTCAqc3NsKQoreworICAodm9pZClzc2w7CisgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50IHF1aWNfc2VuZF9hbGVydChTU0wgKnNzbCwgZW51bSBzc2xfZW5jcnlwdGlvbl9sZXZlbF90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBhbGVydCkKK3sKKyAgc3RydWN0IHF1aWNzb2NrZXQgKnFzID0gKHN0cnVjdCBxdWljc29ja2V0ICopU1NMX2dldF9hcHBfZGF0YShzc2wpOworICAodm9pZClsZXZlbDsKKworICBxcy0+dGxzX2FsZXJ0ID0gYWxlcnQ7CisgIHJldHVybiAxOworfQorCitzdGF0aWMgU1NMX1FVSUNfTUVUSE9EIHF1aWNfbWV0aG9kID0ge3F1aWNfc2V0X2VuY3J5cHRpb25fc2VjcmV0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpY19hZGRfaGFuZHNoYWtlX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWNfZmx1c2hfZmxpZ2h0LCBxdWljX3NlbmRfYWxlcnR9OworCitzdGF0aWMgU1NMX0NUWCAqcXVpY19zc2xfY3R4KHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEpCit7CisgIFNTTF9DVFggKnNzbF9jdHggPSBTU0xfQ1RYX25ldyhUTFNfbWV0aG9kKCkpOworICBjb25zdCBjaGFyICprZXlsb2dfZmlsZW5hbWU7CisKKyAgU1NMX0NUWF9zZXRfbWluX3Byb3RvX3ZlcnNpb24oc3NsX2N0eCwgVExTMV8zX1ZFUlNJT04pOworICBTU0xfQ1RYX3NldF9tYXhfcHJvdG9fdmVyc2lvbihzc2xfY3R4LCBUTFMxXzNfVkVSU0lPTik7CisKKyAgU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoc3NsX2N0eCk7CisKKyAgaWYoU1NMX0NUWF9zZXRfY2lwaGVyc3VpdGVzKHNzbF9jdHgsIFFVSUNfQ0lQSEVSUykgIT0gMSkgeworICAgIGNoYXIgZXJyb3JfYnVmZmVyWzI1Nl07CisgICAgRVJSX2Vycm9yX3N0cmluZ19uKEVSUl9nZXRfZXJyb3IoKSwgZXJyb3JfYnVmZmVyLCBzaXplb2YoZXJyb3JfYnVmZmVyKSk7CisgICAgZmFpbGYoZGF0YSwgIlNTTF9DVFhfc2V0X2NpcGhlcnN1aXRlczogJXMiLCBlcnJvcl9idWZmZXIpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgaWYoU1NMX0NUWF9zZXQxX2dyb3Vwc19saXN0KHNzbF9jdHgsIFFVSUNfR1JPVVBTKSAhPSAxKSB7CisgICAgZmFpbGYoZGF0YSwgIlNTTF9DVFhfc2V0MV9ncm91cHNfbGlzdCBmYWlsZWQiKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIFNTTF9DVFhfc2V0X3F1aWNfbWV0aG9kKHNzbF9jdHgsICZxdWljX21ldGhvZCk7CisKKyAga2V5bG9nX2ZpbGVuYW1lID0gZ2V0ZW52KCJTU0xLRVlMT0dGSUxFIik7CisgIGlmKGtleWxvZ19maWxlbmFtZSkgeworICAgIGtleWxvZ19maWxlID0gZm9wZW4oa2V5bG9nX2ZpbGVuYW1lLCAid2IiKTsKKyAgICBpZihrZXlsb2dfZmlsZSkgeworICAgICAgU1NMX0NUWF9zZXRfa2V5bG9nX2NhbGxiYWNrKHNzbF9jdHgsIGtleWxvZ19jYWxsYmFjayk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHNzbF9jdHg7Cit9CisKKy8qKiBTU0wgY2FsbGJhY2tzICoqKi8KKworc3RhdGljIGludCBxdWljX2luaXRfc3NsKHN0cnVjdCBxdWljc29ja2V0ICpxcykKK3sKKyAgY29uc3QgdWludDhfdCAqYWxwbiA9IE5VTEw7CisgIHNpemVfdCBhbHBubGVuID0gMDsKKyAgLyogdGhpcyB3aWxsIG5lZWQgc29tZSBhdHRlbnRpb24gd2hlbiBIVFRQUyBwcm94eSBvdmVyIFFVSUMgZ2V0IGZpeGVkICovCisgIGNvbnN0IGNoYXIgKiBjb25zdCBob3N0bmFtZSA9IHFzLT5jb25uLT5ob3N0Lm5hbWU7CisKKyAgaWYocXMtPnNzbCkKKyAgICBTU0xfZnJlZShxcy0+c3NsKTsKKworICBxcy0+c3NsID0gU1NMX25ldyhxcy0+c3NsY3R4KTsKKworICBTU0xfc2V0X2FwcF9kYXRhKHFzLT5zc2wsIHFzKTsKKyAgU1NMX3NldF9jb25uZWN0X3N0YXRlKHFzLT5zc2wpOworCisgIHN3aXRjaChxcy0+dmVyc2lvbikgeworI2lmZGVmIE5HVENQMl9QUk9UT19WRVIKKyAgY2FzZSBOR1RDUDJfUFJPVE9fVkVSOgorICAgIGFscG4gPSAoY29uc3QgdWludDhfdCAqKU5HVENQMl9BTFBOX0gzOworICAgIGFscG5sZW4gPSBzaXplb2YoTkdUQ1AyX0FMUE5fSDMpIC0gMTsKKyAgICBicmVhazsKKyNlbmRpZgorICB9CisgIGlmKGFscG4pCisgICAgU1NMX3NldF9hbHBuX3Byb3Rvcyhxcy0+c3NsLCBhbHBuLCAoaW50KWFscG5sZW4pOworCisgIC8qIHNldCBTTkkgKi8KKyAgU1NMX3NldF90bHNleHRfaG9zdF9uYW1lKHFzLT5zc2wsIGhvc3RuYW1lKTsKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY2JfaW5pdGlhbChuZ3RjcDJfY29ubiAqcXVpYywgdm9pZCAqdXNlcl9kYXRhKQoreworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSAoc3RydWN0IHF1aWNzb2NrZXQgKil1c2VyX2RhdGE7CisKKyAgaWYobmd0Y3AyX2NyeXB0b19yZWFkX3dyaXRlX2NyeXB0b19kYXRhKAorICAgICAgIHF1aWMsIHFzLT5zc2wsIE5HVENQMl9DUllQVE9fTEVWRUxfSU5JVElBTCwgTlVMTCwgMCkgIT0gMCkKKyAgICByZXR1cm4gTkdUQ1AyX0VSUl9DQUxMQkFDS19GQUlMVVJFOworCisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitjYl9yZWN2X2NyeXB0b19kYXRhKG5ndGNwMl9jb25uICp0Y29ubiwgbmd0Y3AyX2NyeXB0b19sZXZlbCBjcnlwdG9fbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IGRhdGFsZW4sCisgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAgc3RydWN0IHF1aWNzb2NrZXQgKnFzID0gKHN0cnVjdCBxdWljc29ja2V0ICopdXNlcl9kYXRhOworICAodm9pZClvZmZzZXQ7CisKKyAgaWYobmd0Y3AyX2NyeXB0b19yZWFkX3dyaXRlX2NyeXB0b19kYXRhKHRjb25uLCBxcy0+c3NsLCBjcnlwdG9fbGV2ZWwsIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhbGVuKSAhPSAwKQorICAgIHJldHVybiBOR1RDUDJfRVJSX0NSWVBUTzsKKworICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjYl9oYW5kc2hha2VfY29tcGxldGVkKG5ndGNwMl9jb25uICp0Y29ubiwgdm9pZCAqdXNlcl9kYXRhKQoreworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSAoc3RydWN0IHF1aWNzb2NrZXQgKil1c2VyX2RhdGE7CisgICh2b2lkKXRjb25uOworICBpbmZvZihxcy0+Y29ubi0+ZGF0YSwgIlFVSUMgaGFuZHNoYWtlIGlzIGNvbXBsZXRlZFxuIik7CisKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGV4dGVuZF9zdHJlYW1fd2luZG93KG5ndGNwMl9jb25uICp0Y29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBIVFRQICpzdHJlYW0pCit7CisgIHNpemVfdCB0aGlzbXVjaCA9IHN0cmVhbS0+dW5hY2tlZF93aW5kb3c7CisgIG5ndGNwMl9jb25uX2V4dGVuZF9tYXhfc3RyZWFtX29mZnNldCh0Y29ubiwgc3RyZWFtLT5zdHJlYW0zX2lkLCB0aGlzbXVjaCk7CisgIG5ndGNwMl9jb25uX2V4dGVuZF9tYXhfb2Zmc2V0KHRjb25uLCB0aGlzbXVjaCk7CisgIHN0cmVhbS0+dW5hY2tlZF93aW5kb3cgPSAwOworfQorCisKK3N0YXRpYyBpbnQgY2JfcmVjdl9zdHJlYW1fZGF0YShuZ3RjcDJfY29ubiAqdGNvbm4sIGludDY0X3Qgc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaW4sIHVpbnQ2NF90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWYsIHNpemVfdCBidWZsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhLCB2b2lkICpzdHJlYW1fdXNlcl9kYXRhKQoreworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSAoc3RydWN0IHF1aWNzb2NrZXQgKil1c2VyX2RhdGE7CisgIHNzaXplX3QgbmNvbnN1bWVkOworICAodm9pZClvZmZzZXQ7CisgICh2b2lkKXN0cmVhbV91c2VyX2RhdGE7CisKKyAgbmNvbnN1bWVkID0KKyAgICBuZ2h0dHAzX2Nvbm5fcmVhZF9zdHJlYW0ocXMtPmgzY29ubiwgc3RyZWFtX2lkLCBidWYsIGJ1ZmxlbiwgZmluKTsKKyAgaWYobmNvbnN1bWVkIDwgMCkgeworICAgIGZhaWxmKHFzLT5jb25uLT5kYXRhLCAibmdodHRwM19jb25uX3JlYWRfc3RyZWFtIHJldHVybmVkIGVycm9yOiAlc1xuIiwKKyAgICAgICAgICBuZ2h0dHAzX3N0cmVycm9yKChpbnQpbmNvbnN1bWVkKSk7CisgICAgcmV0dXJuIE5HVENQMl9FUlJfQ0FMTEJBQ0tfRkFJTFVSRTsKKyAgfQorCisgIC8qIG51bWJlciBvZiBieXRlcyBpbnNpZGUgYnVmbGVuIHdoaWNoIGNvbnNpc3RzIG9mIGZyYW1pbmcgb3ZlcmhlYWQKKyAgICogaW5jbHVkaW5nIFFQQUNLIEhFQURFUlMuIEluIG90aGVyIHdvcmRzLCBpdCBkb2VzIG5vdCBjb25zdW1lIHBheWxvYWQgb2YKKyAgICogREFUQSBmcmFtZS4gKi8KKyAgbmd0Y3AyX2Nvbm5fZXh0ZW5kX21heF9zdHJlYW1fb2Zmc2V0KHRjb25uLCBzdHJlYW1faWQsIG5jb25zdW1lZCk7CisgIG5ndGNwMl9jb25uX2V4dGVuZF9tYXhfb2Zmc2V0KHRjb25uLCBuY29uc3VtZWQpOworCisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitjYl9hY2tlZF9zdHJlYW1fZGF0YV9vZmZzZXQobmd0Y3AyX2Nvbm4gKnRjb25uLCBpbnQ2NF90IHN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBvZmZzZXQsIHNpemVfdCBkYXRhbGVuLCB2b2lkICp1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3RyZWFtX3VzZXJfZGF0YSkKK3sKKyAgc3RydWN0IHF1aWNzb2NrZXQgKnFzID0gKHN0cnVjdCBxdWljc29ja2V0ICopdXNlcl9kYXRhOworICBpbnQgcnY7CisgICh2b2lkKXN0cmVhbV9pZDsKKyAgKHZvaWQpdGNvbm47CisgICh2b2lkKW9mZnNldDsKKyAgKHZvaWQpZGF0YWxlbjsKKyAgKHZvaWQpc3RyZWFtX3VzZXJfZGF0YTsKKworICBydiA9IG5naHR0cDNfY29ubl9hZGRfYWNrX29mZnNldChxcy0+aDNjb25uLCBzdHJlYW1faWQsIGRhdGFsZW4pOworICBpZihydiAhPSAwKSB7CisgICAgZmFpbGYocXMtPmNvbm4tPmRhdGEsICJuZ2h0dHAzX2Nvbm5fYWRkX2Fja19vZmZzZXQgcmV0dXJuZWQgZXJyb3I6ICVzXG4iLAorICAgICAgICAgIG5naHR0cDNfc3RyZXJyb3IocnYpKTsKKyAgICByZXR1cm4gTkdUQ1AyX0VSUl9DQUxMQkFDS19GQUlMVVJFOworICB9CisKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY2Jfc3RyZWFtX2Nsb3NlKG5ndGNwMl9jb25uICp0Y29ubiwgaW50NjRfdCBzdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBhcHBfZXJyb3JfY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSwgdm9pZCAqc3RyZWFtX3VzZXJfZGF0YSkKK3sKKyAgc3RydWN0IHF1aWNzb2NrZXQgKnFzID0gKHN0cnVjdCBxdWljc29ja2V0ICopdXNlcl9kYXRhOworICBpbnQgcnY7CisgICh2b2lkKXRjb25uOworICAodm9pZClzdHJlYW1fdXNlcl9kYXRhOworICAvKiBzdHJlYW0gaXMgY2xvc2VkLi4uICovCisKKyAgcnYgPSBuZ2h0dHAzX2Nvbm5fY2xvc2Vfc3RyZWFtKHFzLT5oM2Nvbm4sIHN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcF9lcnJvcl9jb2RlKTsKKyAgaWYocnYgIT0gMCkgeworICAgIGZhaWxmKHFzLT5jb25uLT5kYXRhLCAibmdodHRwM19jb25uX2Nsb3NlX3N0cmVhbSByZXR1cm5lZCBlcnJvcjogJXNcbiIsCisgICAgICAgICAgbmdodHRwM19zdHJlcnJvcihydikpOworICAgIHJldHVybiBOR1RDUDJfRVJSX0NBTExCQUNLX0ZBSUxVUkU7CisgIH0KKworICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjYl9zdHJlYW1fcmVzZXQobmd0Y3AyX2Nvbm4gKnRjb25uLCBpbnQ2NF90IHN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGZpbmFsX3NpemUsIHVpbnQ2NF90IGFwcF9lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhLCB2b2lkICpzdHJlYW1fdXNlcl9kYXRhKQoreworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSAoc3RydWN0IHF1aWNzb2NrZXQgKil1c2VyX2RhdGE7CisgIGludCBydjsKKyAgKHZvaWQpdGNvbm47CisgICh2b2lkKWZpbmFsX3NpemU7CisgICh2b2lkKWFwcF9lcnJvcl9jb2RlOworICAodm9pZClzdHJlYW1fdXNlcl9kYXRhOworCisgIHJ2ID0gbmdodHRwM19jb25uX3Jlc2V0X3N0cmVhbShxcy0+aDNjb25uLCBzdHJlYW1faWQpOworICBpZihydiAhPSAwKSB7CisgICAgZmFpbGYocXMtPmNvbm4tPmRhdGEsICJuZ2h0dHAzX2Nvbm5fcmVzZXRfc3RyZWFtIHJldHVybmVkIGVycm9yOiAlc1xuIiwKKyAgICAgICAgICBuZ2h0dHAzX3N0cmVycm9yKHJ2KSk7CisgICAgcmV0dXJuIE5HVENQMl9FUlJfQ0FMTEJBQ0tfRkFJTFVSRTsKKyAgfQorCisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNiX3JlY3ZfcmV0cnkobmd0Y3AyX2Nvbm4gKnRjb25uLCBjb25zdCBuZ3RjcDJfcGt0X2hkICpoZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ3RjcDJfcGt0X3JldHJ5ICpyZXRyeSwgdm9pZCAqdXNlcl9kYXRhKQoreworICAvKiBSZS1nZW5lcmF0ZSBoYW5kc2hha2Ugc2VjcmV0cyBoZXJlIGJlY2F1c2UgY29ubmVjdGlvbiBJRCBtaWdodCBjaGFuZ2UuICovCisgIHN0cnVjdCBxdWljc29ja2V0ICpxcyA9IChzdHJ1Y3QgcXVpY3NvY2tldCAqKXVzZXJfZGF0YTsKKyAgKHZvaWQpdGNvbm47CisgICh2b2lkKWhkOworICAodm9pZClyZXRyeTsKKworICBzZXR1cF9pbml0aWFsX2NyeXB0b19jb250ZXh0KHFzKTsKKworICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjYl9leHRlbmRfbWF4X2xvY2FsX3N0cmVhbXNfYmlkaShuZ3RjcDJfY29ubiAqdGNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1heF9zdHJlYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCit7CisgICh2b2lkKXRjb25uOworICAodm9pZCltYXhfc3RyZWFtczsKKyAgKHZvaWQpdXNlcl9kYXRhOworCisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNiX2V4dGVuZF9tYXhfc3RyZWFtX2RhdGEobmd0Y3AyX2Nvbm4gKnRjb25uLCBpbnQ2NF90IHN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBtYXhfZGF0YSwgdm9pZCAqdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnN0cmVhbV91c2VyX2RhdGEpCit7CisgIHN0cnVjdCBxdWljc29ja2V0ICpxcyA9IChzdHJ1Y3QgcXVpY3NvY2tldCAqKXVzZXJfZGF0YTsKKyAgaW50IHJ2OworICAodm9pZCl0Y29ubjsKKyAgKHZvaWQpbWF4X2RhdGE7CisgICh2b2lkKXN0cmVhbV91c2VyX2RhdGE7CisKKyAgcnYgPSBuZ2h0dHAzX2Nvbm5fdW5ibG9ja19zdHJlYW0ocXMtPmgzY29ubiwgc3RyZWFtX2lkKTsKKyAgaWYocnYgIT0gMCkgeworICAgIGZhaWxmKHFzLT5jb25uLT5kYXRhLCAibmdodHRwM19jb25uX3VuYmxvY2tfc3RyZWFtIHJldHVybmVkIGVycm9yOiAlc1xuIiwKKyAgICAgICAgICBuZ2h0dHAzX3N0cmVycm9yKHJ2KSk7CisgICAgcmV0dXJuIE5HVENQMl9FUlJfQ0FMTEJBQ0tfRkFJTFVSRTsKKyAgfQorCisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNiX2dldF9uZXdfY29ubmVjdGlvbl9pZChuZ3RjcDJfY29ubiAqdGNvbm4sIG5ndGNwMl9jaWQgKmNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnRva2VuLCBzaXplX3QgY2lkbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKQoreworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSAoc3RydWN0IHF1aWNzb2NrZXQgKil1c2VyX2RhdGE7CisgIENVUkxjb2RlIHJlc3VsdDsKKyAgKHZvaWQpdGNvbm47CisKKyAgcmVzdWx0ID0gQ3VybF9yYW5kKHFzLT5jb25uLT5kYXRhLCBjaWQtPmRhdGEsIGNpZGxlbik7CisgIGlmKHJlc3VsdCkKKyAgICByZXR1cm4gTkdUQ1AyX0VSUl9DQUxMQkFDS19GQUlMVVJFOworICBjaWQtPmRhdGFsZW4gPSBjaWRsZW47CisKKyAgcmVzdWx0ID0gQ3VybF9yYW5kKHFzLT5jb25uLT5kYXRhLCB0b2tlbiwgTkdUQ1AyX1NUQVRFTEVTU19SRVNFVF9UT0tFTkxFTik7CisgIGlmKHJlc3VsdCkKKyAgICByZXR1cm4gTkdUQ1AyX0VSUl9DQUxMQkFDS19GQUlMVVJFOworCisgIHJldHVybiAwOworfQorCitzdGF0aWMgbmd0Y3AyX2Nvbm5fY2FsbGJhY2tzIG5nX2NhbGxiYWNrcyA9IHsKKyAgY2JfaW5pdGlhbCwKKyAgTlVMTCwgLyogcmVjdl9jbGllbnRfaW5pdGlhbCAqLworICBjYl9yZWN2X2NyeXB0b19kYXRhLAorICBjYl9oYW5kc2hha2VfY29tcGxldGVkLAorICBOVUxMLCAvKiByZWN2X3ZlcnNpb25fbmVnb3RpYXRpb24gKi8KKyAgbmd0Y3AyX2NyeXB0b19lbmNyeXB0X2NiLAorICBuZ3RjcDJfY3J5cHRvX2RlY3J5cHRfY2IsCisgIG5ndGNwMl9jcnlwdG9faHBfbWFza19jYiwKKyAgY2JfcmVjdl9zdHJlYW1fZGF0YSwKKyAgTlVMTCwgLyogYWNrZWRfY3J5cHRvX29mZnNldCAqLworICBjYl9hY2tlZF9zdHJlYW1fZGF0YV9vZmZzZXQsCisgIE5VTEwsIC8qIHN0cmVhbV9vcGVuICovCisgIGNiX3N0cmVhbV9jbG9zZSwKKyAgTlVMTCwgLyogcmVjdl9zdGF0ZWxlc3NfcmVzZXQgKi8KKyAgY2JfcmVjdl9yZXRyeSwKKyAgY2JfZXh0ZW5kX21heF9sb2NhbF9zdHJlYW1zX2JpZGksCisgIE5VTEwsIC8qIGV4dGVuZF9tYXhfbG9jYWxfc3RyZWFtc191bmkgKi8KKyAgTlVMTCwgLyogcmFuZCAgKi8KKyAgY2JfZ2V0X25ld19jb25uZWN0aW9uX2lkLAorICBOVUxMLCAvKiByZW1vdmVfY29ubmVjdGlvbl9pZCAqLworICBuZ3RjcDJfY3J5cHRvX3VwZGF0ZV9rZXlfY2IsIC8qIHVwZGF0ZV9rZXkgKi8KKyAgTlVMTCwgLyogcGF0aF92YWxpZGF0aW9uICovCisgIE5VTEwsIC8qIHNlbGVjdF9wcmVmZXJyZWRfYWRkciAqLworICBjYl9zdHJlYW1fcmVzZXQsCisgIE5VTEwsIC8qIGV4dGVuZF9tYXhfcmVtb3RlX3N0cmVhbXNfYmlkaSAqLworICBOVUxMLCAvKiBleHRlbmRfbWF4X3JlbW90ZV9zdHJlYW1zX3VuaSAqLworICBjYl9leHRlbmRfbWF4X3N0cmVhbV9kYXRhLAorICBOVUxMLCAvKiBkY2lkX3N0YXR1cyAqLworICBOVUxMICAvKiBoYW5kc2hha2VfY29uZmlybWVkICovCit9OworCisvKgorICogTWlnaHQgYmUgY2FsbGVkIHR3aWNlIGZvciBoYXBweSBleWViYWxscy4KKyAqLworQ1VSTGNvZGUgQ3VybF9xdWljX2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCBzb2NrZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyICphZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90IGFkZHJsZW4pCit7CisgIGludCByYzsKKyAgaW50IHJ2OworICBDVVJMY29kZSByZXN1bHQ7CisgIG5ndGNwMl9wYXRoIHBhdGg7IC8qIFRPRE86IHRoaXMgbXVzdCBiZSBpbml0aWFsaXplZCBwcm9wZXJseSAqLworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKKyAgc3RydWN0IHF1aWNzb2NrZXQgKnFzID0gJmNvbm4tPmhlcXVpY1tzb2NraW5kZXhdOworICBjaGFyIGlwYnVmWzQwXTsKKyAgbG9uZyBwb3J0OworICB1aW50OF90IHBhcmFtc2J1Zls2NF07CisgIG5ndGNwMl90cmFuc3BvcnRfcGFyYW1zIHBhcmFtczsKKyAgc3NpemVfdCBud3JpdGU7CisKKyAgcXMtPmNvbm4gPSBjb25uOworCisgIC8qIGV4dHJhY3QgdGhlIHVzZWQgYWRkcmVzcyBhcyBhIHN0cmluZyAqLworICBpZighQ3VybF9hZGRyMnN0cmluZygoc3RydWN0IHNvY2thZGRyKilhZGRyLCBhZGRybGVuLCBpcGJ1ZiwgJnBvcnQpKSB7CisgICAgY2hhciBidWZmZXJbU1RSRVJST1JfTEVOXTsKKyAgICBmYWlsZihkYXRhLCAic3NyZW0gaW5ldF9udG9wKCkgZmFpbGVkIHdpdGggZXJybm8gJWQ6ICVzIiwKKyAgICAgICAgICBTT0NLRVJSTk8sIEN1cmxfc3RyZXJyb3IoU09DS0VSUk5PLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CisgICAgcmV0dXJuIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKKyAgfQorCisgIGluZm9mKGRhdGEsICJDb25uZWN0IHNvY2tldCAlZCBvdmVyIFFVSUMgdG8gJXM6JWxkXG4iLAorICAgICAgICBzb2NrZmQsIGlwYnVmLCBwb3J0KTsKKworICBxcy0+dmVyc2lvbiA9IE5HVENQMl9QUk9UT19WRVI7CisgIHFzLT5zc2xjdHggPSBxdWljX3NzbF9jdHgoZGF0YSk7CisgIGlmKCFxcy0+c3NsY3R4KQorICAgIHJldHVybiBDVVJMRV9RVUlDX0NPTk5FQ1RfRVJST1I7CisKKyAgaWYocXVpY19pbml0X3NzbChxcykpCisgICAgcmV0dXJuIENVUkxFX1FVSUNfQ09OTkVDVF9FUlJPUjsKKworICBxcy0+ZGNpZC5kYXRhbGVuID0gTkdUQ1AyX01BWF9DSURMRU47CisgIHJlc3VsdCA9IEN1cmxfcmFuZChkYXRhLCBxcy0+ZGNpZC5kYXRhLCBOR1RDUDJfTUFYX0NJRExFTik7CisgIGlmKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIHFzLT5zY2lkLmRhdGFsZW4gPSBOR1RDUDJfTUFYX0NJRExFTjsKKyAgcmVzdWx0ID0gQ3VybF9yYW5kKGRhdGEsIHFzLT5zY2lkLmRhdGEsIE5HVENQMl9NQVhfQ0lETEVOKTsKKyAgaWYocmVzdWx0KQorICAgIHJldHVybiByZXN1bHQ7CisKKyAgcXVpY19zZXR0aW5ncygmcXMtPnNldHRpbmdzLCBkYXRhLT5zZXQuYnVmZmVyX3NpemUpOworCisgIHFzLT5sb2NhbF9hZGRybGVuID0gc2l6ZW9mKHFzLT5sb2NhbF9hZGRyKTsKKyAgcnYgPSBnZXRzb2NrbmFtZShzb2NrZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmcXMtPmxvY2FsX2FkZHIsCisgICAgICAgICAgICAgICAgICAgJnFzLT5sb2NhbF9hZGRybGVuKTsKKyAgaWYocnYgPT0gLTEpCisgICAgcmV0dXJuIENVUkxFX1FVSUNfQ09OTkVDVF9FUlJPUjsKKworICBuZ3RjcDJfYWRkcl9pbml0KCZwYXRoLmxvY2FsLCAodWludDhfdCAqKSZxcy0+bG9jYWxfYWRkciwgcXMtPmxvY2FsX2FkZHJsZW4sCisgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgIG5ndGNwMl9hZGRyX2luaXQoJnBhdGgucmVtb3RlLCAodWludDhfdCopYWRkciwgYWRkcmxlbiwgTlVMTCk7CisKKyNpZmRlZiBOR1RDUDJfUFJPVE9fVkVSCisjZGVmaW5lIFFVSUNWRVIgTkdUQ1AyX1BST1RPX1ZFUgorI2Vsc2UKKyNlcnJvciAidW5zdXBwb3J0ZWQgbmd0Y3AyIHZlcnNpb24iCisjZW5kaWYKKyAgcmMgPSBuZ3RjcDJfY29ubl9jbGllbnRfbmV3KCZxcy0+cWNvbm4sICZxcy0+ZGNpZCwgJnFzLT5zY2lkLCAmcGF0aCwgUVVJQ1ZFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZ19jYWxsYmFja3MsICZxcy0+c2V0dGluZ3MsIE5VTEwsIHFzKTsKKyAgaWYocmMpCisgICAgcmV0dXJuIENVUkxFX1FVSUNfQ09OTkVDVF9FUlJPUjsKKworICBuZ3RjcDJfY29ubl9nZXRfbG9jYWxfdHJhbnNwb3J0X3BhcmFtcyhxcy0+cWNvbm4sICZwYXJhbXMpOworICBud3JpdGUgPSBuZ3RjcDJfZW5jb2RlX3RyYW5zcG9ydF9wYXJhbXMoCisgICAgcGFyYW1zYnVmLCBzaXplb2YocGFyYW1zYnVmKSwgTkdUQ1AyX1RSQU5TUE9SVF9QQVJBTVNfVFlQRV9DTElFTlRfSEVMTE8sCisgICAgJnBhcmFtcyk7CisgIGlmKG53cml0ZSA8IDApIHsKKyAgICBmYWlsZihkYXRhLCAibmd0Y3AyX2VuY29kZV90cmFuc3BvcnRfcGFyYW1zOiAlc1xuIiwKKyAgICAgICAgICBuZ3RjcDJfc3RyZXJyb3IoKGludClud3JpdGUpKTsKKyAgICByZXR1cm4gQ1VSTEVfUVVJQ19DT05ORUNUX0VSUk9SOworICB9CisKKyAgaWYoIVNTTF9zZXRfcXVpY190cmFuc3BvcnRfcGFyYW1zKHFzLT5zc2wsIHBhcmFtc2J1ZiwgbndyaXRlKSkKKyAgICByZXR1cm4gQ1VSTEVfUVVJQ19DT05ORUNUX0VSUk9SOworCisgIHJjID0gc2V0dXBfaW5pdGlhbF9jcnlwdG9fY29udGV4dChxcyk7CisgIGlmKHJjKQorICAgIHJldHVybiBDVVJMRV9RVUlDX0NPTk5FQ1RfRVJST1I7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogU3RvcmUgbmd0cDIgdmVyc2lvbiBpbmZvIGluIHRoaXMgYnVmZmVyLCBQcmVmaXggd2l0aCBhIHNwYWNlLiAgUmV0dXJuIHRvdGFsCisgKiBsZW5ndGggd3JpdHRlbi4KKyAqLworaW50IEN1cmxfcXVpY192ZXIoY2hhciAqcCwgc2l6ZV90IGxlbikKK3sKKyAgbmd0Y3AyX2luZm8gKm5nMiA9IG5ndGNwMl92ZXJzaW9uKDApOworICBuZ2h0dHAzX2luZm8gKmh0MyA9IG5naHR0cDNfdmVyc2lvbigwKTsKKyAgcmV0dXJuIG1zbnByaW50ZihwLCBsZW4sICIgbmd0Y3AyLyVzIG5naHR0cDMvJXMiLAorICAgICAgICAgICAgICAgICAgIG5nMi0+dmVyc2lvbl9zdHIsIGh0My0+dmVyc2lvbl9zdHIpOworfQorCitzdGF0aWMgaW50IG5nX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2NrcykKK3sKKyAgc3RydWN0IFNpbmdsZVJlcXVlc3QgKmsgPSAmY29ubi0+ZGF0YS0+cmVxOworICBpbnQgYml0bWFwID0gR0VUU09DS19CTEFOSzsKKworICBzb2Nrc1swXSA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOworCisgIC8qIGluIGEgSFRUUC8yIGNvbm5lY3Rpb24gd2UgY2FuIGJhc2ljYWxseSBhbHdheXMgZ2V0IGEgZnJhbWUgc28gd2Ugc2hvdWxkCisgICAgIGFsd2F5cyBiZSByZWFkeSBmb3Igb25lICovCisgIGJpdG1hcCB8PSBHRVRTT0NLX1JFQURTT0NLKEZJUlNUU09DS0VUKTsKKworICAvKiB3ZSdyZSBzdGlsbCB1cGxvYWRpbmcgb3IgdGhlIEhUVFAvMiBsYXllciB3YW50cyB0byBzZW5kIGRhdGEgKi8KKyAgaWYoKGstPmtlZXBvbiAmIChLRUVQX1NFTkR8S0VFUF9TRU5EX1BBVVNFKSkgPT0gS0VFUF9TRU5EKQorICAgIGJpdG1hcCB8PSBHRVRTT0NLX1dSSVRFU09DSyhGSVJTVFNPQ0tFVCk7CisKKyAgcmV0dXJuIGJpdG1hcDsKK30KKworc3RhdGljIGludCBuZ19wZXJmb3JtX2dldHNvY2soY29uc3Qgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MpCit7CisgIHJldHVybiBuZ19nZXRzb2NrKChzdHJ1Y3QgY29ubmVjdGRhdGEgKiljb25uLCBzb2Nrcyk7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBuZ19kaXNjb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVhZF9jb25uZWN0aW9uKQoreworICBpbnQgaTsKKyAgc3RydWN0IHF1aWNzb2NrZXQgKnFzID0gJmNvbm4tPmhlcXVpY1swXTsKKyAgKHZvaWQpZGVhZF9jb25uZWN0aW9uOworICBpZihxcy0+c3NsKQorICAgIFNTTF9mcmVlKHFzLT5zc2wpOworICBmb3IoaSA9IDA7IGkgPCAzOyBpKyspCisgICAgZnJlZShxcy0+Y3J5cHRvX2RhdGFbaV0uYnVmKTsKKyAgbmdodHRwM19jb25uX2RlbChxcy0+aDNjb25uKTsKKyAgbmd0Y3AyX2Nvbm5fZGVsKHFzLT5xY29ubik7CisgIFNTTF9DVFhfZnJlZShxcy0+c3NsY3R4KTsKKyAgcmV0dXJuIENVUkxFX09LOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IG5nX2Nvbm5jaGVjayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY2hlY2tzX3RvX3BlcmZvcm0pCit7CisgICh2b2lkKWNvbm47CisgICh2b2lkKWNoZWNrc190b19wZXJmb3JtOworICByZXR1cm4gQ09OTlJFU1VMVF9OT05FOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IEN1cmxfaGFuZGxlciBDdXJsX2hhbmRsZXJfaHR0cDMgPSB7CisgICJIVFRQUyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2NoZW1lICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0dXBfY29ubmVjdGlvbiAqLworICBDdXJsX2h0dHAsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvX2l0ICovCisgIEN1cmxfaHR0cF9kb25lLCAgICAgICAgICAgICAgICAgICAgICAgLyogZG9uZSAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvX21vcmUgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb25uZWN0X2l0ICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29ubmVjdGluZyAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvaW5nICovCisgIG5nX2dldHNvY2ssICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJvdG9fZ2V0c29jayAqLworICBuZ19nZXRzb2NrLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvaW5nX2dldHNvY2sgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb21vcmVfZ2V0c29jayAqLworICBuZ19wZXJmb3JtX2dldHNvY2ssICAgICAgICAgICAgICAgICAgIC8qIHBlcmZvcm1fZ2V0c29jayAqLworICBuZ19kaXNjb25uZWN0LCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRpc2Nvbm5lY3QgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZWFkd3JpdGUgKi8KKyAgbmdfY29ubmNoZWNrLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb25uZWN0aW9uX2NoZWNrICovCisgIFBPUlRfSFRUUCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGVmcG9ydCAqLworICBDVVJMUFJPVE9fSFRUUFMsICAgICAgICAgICAgICAgICAgICAgIC8qIHByb3RvY29sICovCisgIFBST1RPUFRfU1NMIHwgUFJPVE9QVF9TVFJFQU0gICAgICAgICAgLyogZmxhZ3MgKi8KK307CisKK3N0YXRpYyBpbnQgY2JfaDNfc3RyZWFtX2Nsb3NlKG5naHR0cDNfY29ubiAqY29ubiwgaW50NjRfdCBzdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBhcHBfZXJyb3JfY29kZSwgdm9pZCAqdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3RyZWFtX3VzZXJfZGF0YSkKK3sKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IHN0cmVhbV91c2VyX2RhdGE7CisgIHN0cnVjdCBIVFRQICpzdHJlYW0gPSBkYXRhLT5yZXEucHJvdG9wOworICAodm9pZCljb25uOworICAodm9pZClzdHJlYW1faWQ7CisgICh2b2lkKWFwcF9lcnJvcl9jb2RlOworICAodm9pZCl1c2VyX2RhdGE7CisgIEgzQlVHRihpbmZvZihkYXRhLCAiY2JfaDNfc3RyZWFtX2Nsb3NlIENBTExFRFxuIikpOworCisgIHN0cmVhbS0+Y2xvc2VkID0gVFJVRTsKKyAgQ3VybF9leHBpcmUoZGF0YSwgMCwgRVhQSVJFX1FVSUMpOworICAvKiBtYWtlIHN1cmUgdGhhdCBuZ2gzX3N0cmVhbV9yZWN2IGlzIGNhbGxlZCBhZ2FpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmZXIKKyAgICAgZXZlbiBpZiB0aGVyZSBhcmUgbm8gbW9yZSBwYWNrZXRzIHRvIGJlIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlci4gKi8KKyAgZGF0YS0+c3RhdGUuZHJhaW4gPSAxOworICByZXR1cm4gMDsKK30KKworLyogTWluaW11bSBzaXplIG9mIHRoZSBvdmVyZmxvdyBidWZmZXIgKi8KKyNkZWZpbmUgT1ZFUkZMT1dTSVpFIDEwMjQKKworLyoKKyAqIGFsbG9jYXRlX292ZXJmbG93KCkgZW5zdXJlcyB0aGF0IHRoZXJlIGlzIHJvb20gZm9yIGluY29taW5nIGRhdGEgaW4gdGhlCisgKiBvdmVyZmxvdyBidWZmZXIsIGdyb3dpbmcgaXQgdG8gYWNjb21tb2RhdGUgdGhlIG5ldyBkYXRhIGlmIG5lY2Vzc2FyeS4gV2UKKyAqIG1heSBuZWVkIHRvIHVzZSB0aGUgb3ZlcmZsb3cgYnVmZmVyIGJlY2F1c2Ugd2UgY2FuJ3QgcHJlY2lzZWx5IGxpbWl0IHRoZQorICogYW1vdW50IG9mIEhUVFAvMyBoZWFkZXIgZGF0YSB3ZSByZWNlaXZlIHVzaW5nIFFVSUMgZmxvdyBjb250cm9sIG1lY2hhbmlzbXMuCisgKi8KK3N0YXRpYyBDVVJMY29kZSBhbGxvY2F0ZV9vdmVyZmxvdyhzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBIVFRQICpzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCkKK3sKKyAgc2l6ZV90IG1heGxlZnQ7CisgIHNpemVfdCBuZXdzaXplOworICAvKiBsZW5ndGggY2FuIGJlIGFyYml0cmFyaWx5IGxhcmdlLCBzbyB0YWtlIGNhcmUgbm90IHRvIG92ZXJmbG93IG5ld3NpemUgKi8KKyAgbWF4bGVmdCA9IENVUkxfTUFYX1JFQURfU0laRSAtIHN0cmVhbS0+b3ZlcmZsb3dfYnVmbGVuOworICBpZihsZW5ndGggPiBtYXhsZWZ0KSB7CisgICAgLyogVGhlIHJlYXNvbiB0byBoYXZlIGEgbWF4IGxpbWl0IGZvciB0aGlzIGlzIHRvIGF2b2lkIHRoZSByaXNrIG9mIGEgYmFkCisgICAgICAgc2VydmVyIGZlZWRpbmcgbGliY3VybCB3aXRoIGEgaGlnaGx5IGNvbXByZXNzZWQgbGlzdCBvZiBoZWFkZXJzIHRoYXQKKyAgICAgICB3aWxsIGNhdXNlIG91ciBvdmVyZmxvdyBidWZmZXIgdG8gZ3JvdyB0b28gbGFyZ2UgKi8KKyAgICBmYWlsZihkYXRhLCAiUmVqZWN0ZWQgJXp1IGJ5dGVzIG9mIG92ZXJmbG93IGRhdGEgKG1heCBpcyAlZCkhIiwKKyAgICAgICAgICBzdHJlYW0tPm92ZXJmbG93X2J1ZmxlbiArIGxlbmd0aCwgQ1VSTF9NQVhfUkVBRF9TSVpFKTsKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorICBuZXdzaXplID0gc3RyZWFtLT5vdmVyZmxvd19idWZsZW4gKyBsZW5ndGg7CisgIGlmKG5ld3NpemUgPiBzdHJlYW0tPm92ZXJmbG93X2J1ZnNpemUpIHsKKyAgICAvKiBXZSBlbmxhcmdlIHRoZSBvdmVyZmxvdyBidWZmZXIgYXMgaXQgaXMgdG9vIHNtYWxsICovCisgICAgY2hhciAqbmV3YnVmZjsKKyAgICBuZXdzaXplID0gQ1VSTE1BWChuZXdzaXplICogMyAvIDIsIHN0cmVhbS0+b3ZlcmZsb3dfYnVmc2l6ZSoyKTsKKyAgICBuZXdzaXplID0gQ1VSTE1JTihDVVJMTUFYKE9WRVJGTE9XU0laRSwgbmV3c2l6ZSksIENVUkxfTUFYX1JFQURfU0laRSk7CisgICAgbmV3YnVmZiA9IHJlYWxsb2Moc3RyZWFtLT5vdmVyZmxvd19idWYsIG5ld3NpemUpOworICAgIGlmKCFuZXdidWZmKSB7CisgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHRvIGFsbG9jIG1lbW9yeSBmb3Igb3ZlcmZsb3cgYnVmZmVyISIpOworICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgfQorICAgIHN0cmVhbS0+b3ZlcmZsb3dfYnVmID0gbmV3YnVmZjsKKyAgICBzdHJlYW0tPm92ZXJmbG93X2J1ZnNpemUgPSBuZXdzaXplOworICAgIGluZm9mKGRhdGEsICJHcmV3IEhUVFAvMyBvdmVyZmxvdyBidWZmZXIgdG8gJXp1IGJ5dGVzXG4iLCBuZXdzaXplKTsKKyAgfQorICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiB3cml0ZV9kYXRhKCkgY29waWVzIGRhdGEgdG8gdGhlIHN0cmVhbSdzIHJlY2VpdmUgYnVmZmVyLiBJZiBub3QgZW5vdWdoCisgKiBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIHJlY2VpdmUgYnVmZmVyLCBpdCBjb3BpZXMgdGhlIHJlc3QgdG8gdGhlCisgKiBzdHJlYW0ncyBvdmVyZmxvdyBidWZmZXIuCisgKi8KK3N0YXRpYyBDVVJMY29kZSB3cml0ZV9kYXRhKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgSFRUUCAqc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqbWVtLCBzaXplX3QgbWVtbGVuKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgY29uc3QgY2hhciAqYnVmID0gbWVtOworICBzaXplX3QgbmNvcHkgPSBtZW1sZW47CisgIC8qIGNvcHkgYXMgbXVjaCBhcyBwb3NzaWJsZSB0byB0aGUgcmVjZWl2ZSBidWZmZXIgKi8KKyAgaWYoc3RyZWFtLT5sZW4pIHsKKyAgICBzaXplX3QgbGVuID0gQ1VSTE1JTihuY29weSwgc3RyZWFtLT5sZW4pOworI2lmIDAgLyogZXh0cmEgZGVidWdnaW5nIG9mIGluY29taW5nIGgzIGRhdGEgKi8KKyAgICBmcHJpbnRmKHN0ZGVyciwgIiEhIENvcGllcyAlemQgYnl0ZXMgdG8gJXAgKHRvdGFsICV6ZClcbiIsCisgICAgICAgICAgICBsZW4sIHN0cmVhbS0+bWVtLCBzdHJlYW0tPm1lbWxlbik7CisjZW5kaWYKKyAgICBtZW1jcHkoc3RyZWFtLT5tZW0sIGJ1ZiwgbGVuKTsKKyAgICBzdHJlYW0tPmxlbiAtPSBsZW47CisgICAgc3RyZWFtLT5tZW1sZW4gKz0gbGVuOworICAgIHN0cmVhbS0+bWVtICs9IGxlbjsKKyAgICBidWYgKz0gbGVuOworICAgIG5jb3B5IC09IGxlbjsKKyAgfQorICAvKiBjb3B5IHRoZSByZXN0IHRvIHRoZSBvdmVyZmxvdyBidWZmZXIgKi8KKyAgaWYobmNvcHkpIHsKKyAgICByZXN1bHQgPSBhbGxvY2F0ZV9vdmVyZmxvdyhkYXRhLCBzdHJlYW0sIG5jb3B5KTsKKyAgICBpZihyZXN1bHQpIHsKKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorI2lmIDAgLyogZXh0cmEgZGVidWdnaW5nIG9mIGluY29taW5nIGgzIGRhdGEgKi8KKyAgICBmcHJpbnRmKHN0ZGVyciwgIiEhIENvcGllcyAlemQgb3ZlcmZsb3cgYnl0ZXMgdG8gJXAgKHRvdGFsICV6ZClcbiIsCisgICAgICAgICAgICBuY29weSwgc3RyZWFtLT5vdmVyZmxvd19idWYsIHN0cmVhbS0+b3ZlcmZsb3dfYnVmbGVuKTsKKyNlbmRpZgorICAgIG1lbWNweShzdHJlYW0tPm92ZXJmbG93X2J1ZiArIHN0cmVhbS0+b3ZlcmZsb3dfYnVmbGVuLCBidWYsIG5jb3B5KTsKKyAgICBzdHJlYW0tPm92ZXJmbG93X2J1ZmxlbiArPSBuY29weTsKKyAgfQorI2lmIDAgLyogZXh0cmEgZGVidWdnaW5nIG9mIGluY29taW5nIGgzIGRhdGEgKi8KKyAgeworICAgIHNpemVfdCBpOworICAgIGZvcihpID0gMDsgaSA8IG1lbWxlbjsgaSsrKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIiEhIGRhdGFbJWRdOiAlMDJ4ICclYydcbiIsIGksIGJ1ZltpXSwgYnVmW2ldKTsKKyAgICB9CisgIH0KKyNlbmRpZgorICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50IGNiX2gzX3JlY3ZfZGF0YShuZ2h0dHAzX2Nvbm4gKmNvbm4sIGludDY0X3Qgc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYnVmLCBzaXplX3QgYnVmbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhLCB2b2lkICpzdHJlYW1fdXNlcl9kYXRhKQoreworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gc3RyZWFtX3VzZXJfZGF0YTsKKyAgc3RydWN0IEhUVFAgKnN0cmVhbSA9IGRhdGEtPnJlcS5wcm90b3A7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICAodm9pZCljb25uOworCisgIHJlc3VsdCA9IHdyaXRlX2RhdGEoZGF0YSwgc3RyZWFtLCBidWYsIGJ1Zmxlbik7CisgIGlmKHJlc3VsdCkgeworICAgIHJldHVybiAtMTsKKyAgfQorICBzdHJlYW0tPnVuYWNrZWRfd2luZG93ICs9IGJ1ZmxlbjsKKyAgKHZvaWQpc3RyZWFtX2lkOworICAodm9pZCl1c2VyX2RhdGE7CisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNiX2gzX2RlZmVycmVkX2NvbnN1bWUobmdodHRwM19jb25uICpjb25uLCBpbnQ2NF90IHN0cmVhbV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29uc3VtZWQsIHZvaWQgKnVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdHJlYW1fdXNlcl9kYXRhKQoreworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSB1c2VyX2RhdGE7CisgICh2b2lkKWNvbm47CisgICh2b2lkKXN0cmVhbV91c2VyX2RhdGE7CisgICh2b2lkKXN0cmVhbV9pZDsKKworICBuZ3RjcDJfY29ubl9leHRlbmRfbWF4X3N0cmVhbV9vZmZzZXQocXMtPnFjb25uLCBzdHJlYW1faWQsIGNvbnN1bWVkKTsKKyAgbmd0Y3AyX2Nvbm5fZXh0ZW5kX21heF9vZmZzZXQocXMtPnFjb25uLCBjb25zdW1lZCk7CisgIHJldHVybiAwOworfQorCisvKiBEZWNvZGUgSFRUUCBzdGF0dXMgY29kZS4gIFJldHVybnMgLTEgaWYgbm8gdmFsaWQgc3RhdHVzIGNvZGUgd2FzCisgICBkZWNvZGVkLiAoZHVwbGljYXRlIGZyb20gaHR0cDIuYykgKi8KK3N0YXRpYyBpbnQgZGVjb2RlX3N0YXR1c19jb2RlKGNvbnN0IHVpbnQ4X3QgKnZhbHVlLCBzaXplX3QgbGVuKQoreworICBpbnQgaTsKKyAgaW50IHJlczsKKworICBpZihsZW4gIT0gMykgeworICAgIHJldHVybiAtMTsKKyAgfQorCisgIHJlcyA9IDA7CisKKyAgZm9yKGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgY2hhciBjID0gdmFsdWVbaV07CisKKyAgICBpZihjIDwgJzAnIHx8IGMgPiAnOScpIHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXMgKj0gMTA7CisgICAgcmVzICs9IGMgLSAnMCc7CisgIH0KKworICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgaW50IGNiX2gzX2VuZF9oZWFkZXJzKG5naHR0cDNfY29ubiAqY29ubiwgaW50NjRfdCBzdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSwgdm9pZCAqc3RyZWFtX3VzZXJfZGF0YSkKK3sKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IHN0cmVhbV91c2VyX2RhdGE7CisgIHN0cnVjdCBIVFRQICpzdHJlYW0gPSBkYXRhLT5yZXEucHJvdG9wOworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgKHZvaWQpY29ubjsKKyAgKHZvaWQpc3RyZWFtX2lkOworICAodm9pZCl1c2VyX2RhdGE7CisKKyAgLyogYWRkIGEgQ1JMRiBvbmx5IGlmIHdlJ3ZlIHJlY2VpdmVkIHNvbWUgaGVhZGVycyAqLworICBpZihzdHJlYW0tPmZpcnN0aGVhZGVyKSB7CisgICAgcmVzdWx0ID0gd3JpdGVfZGF0YShkYXRhLCBzdHJlYW0sICJcclxuIiwgMik7CisgICAgaWYocmVzdWx0KSB7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNiX2gzX3JlY3ZfaGVhZGVyKG5naHR0cDNfY29ubiAqY29ubiwgaW50NjRfdCBzdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgdG9rZW4sIG5naHR0cDNfcmNidWYgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDNfcmNidWYgKnZhbHVlLCB1aW50OF90IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEsIHZvaWQgKnN0cmVhbV91c2VyX2RhdGEpCit7CisgIG5naHR0cDNfdmVjIGgzbmFtZSA9IG5naHR0cDNfcmNidWZfZ2V0X2J1ZihuYW1lKTsKKyAgbmdodHRwM192ZWMgaDN2YWwgPSBuZ2h0dHAzX3JjYnVmX2dldF9idWYodmFsdWUpOworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gc3RyZWFtX3VzZXJfZGF0YTsKKyAgc3RydWN0IEhUVFAgKnN0cmVhbSA9IGRhdGEtPnJlcS5wcm90b3A7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICAodm9pZCljb25uOworICAodm9pZClzdHJlYW1faWQ7CisgICh2b2lkKXRva2VuOworICAodm9pZClmbGFnczsKKyAgKHZvaWQpdXNlcl9kYXRhOworCisgIGlmKGgzbmFtZS5sZW4gPT0gc2l6ZW9mKCI6c3RhdHVzIikgLSAxICYmCisgICAgICFtZW1jbXAoIjpzdGF0dXMiLCBoM25hbWUuYmFzZSwgaDNuYW1lLmxlbikpIHsKKyAgICBjaGFyIGxpbmVbMTRdOyAvKiBzdGF0dXMgbGluZSBpcyBhbHdheXMgMTMgY2hhcmFjdGVycyBsb25nICovCisgICAgc2l6ZV90IG5jb3B5OworICAgIGludCBzdGF0dXMgPSBkZWNvZGVfc3RhdHVzX2NvZGUoaDN2YWwuYmFzZSwgaDN2YWwubGVuKTsKKyAgICBERUJVR0FTU0VSVChzdGF0dXMgIT0gLTEpOworICAgIG5jb3B5ID0gbXNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwgIkhUVFAvMyAlMDNkIFxyXG4iLCBzdGF0dXMpOworICAgIHJlc3VsdCA9IHdyaXRlX2RhdGEoZGF0YSwgc3RyZWFtLCBsaW5lLCBuY29weSk7CisgICAgaWYocmVzdWx0KSB7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisgIGVsc2UgeworICAgIC8qIHN0b3JlIGFzIGEgSFRUUDEtc3R5bGUgaGVhZGVyICovCisgICAgcmVzdWx0ID0gd3JpdGVfZGF0YShkYXRhLCBzdHJlYW0sIGgzbmFtZS5iYXNlLCBoM25hbWUubGVuKTsKKyAgICBpZihyZXN1bHQpIHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzdWx0ID0gd3JpdGVfZGF0YShkYXRhLCBzdHJlYW0sICI6ICIsIDIpOworICAgIGlmKHJlc3VsdCkgeworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXN1bHQgPSB3cml0ZV9kYXRhKGRhdGEsIHN0cmVhbSwgaDN2YWwuYmFzZSwgaDN2YWwubGVuKTsKKyAgICBpZihyZXN1bHQpIHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzdWx0ID0gd3JpdGVfZGF0YShkYXRhLCBzdHJlYW0sICJcclxuIiwgMik7CisgICAgaWYocmVzdWx0KSB7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisKKyAgc3RyZWFtLT5maXJzdGhlYWRlciA9IFRSVUU7CisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNiX2gzX3NlbmRfc3RvcF9zZW5kaW5nKG5naHR0cDNfY29ubiAqY29ubiwgaW50NjRfdCBzdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFwcF9lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnN0cmVhbV91c2VyX2RhdGEpCit7CisgICh2b2lkKWNvbm47CisgICh2b2lkKXN0cmVhbV9pZDsKKyAgKHZvaWQpYXBwX2Vycm9yX2NvZGU7CisgICh2b2lkKXVzZXJfZGF0YTsKKyAgKHZvaWQpc3RyZWFtX3VzZXJfZGF0YTsKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBuZ2h0dHAzX2Nvbm5fY2FsbGJhY2tzIG5naDNfY2FsbGJhY2tzID0geworICBjYl9oM19hY2tlZF9zdHJlYW1fZGF0YSwgLyogYWNrZWRfc3RyZWFtX2RhdGEgKi8KKyAgY2JfaDNfc3RyZWFtX2Nsb3NlLAorICBjYl9oM19yZWN2X2RhdGEsCisgIGNiX2gzX2RlZmVycmVkX2NvbnN1bWUsCisgIE5VTEwsIC8qIGJlZ2luX2hlYWRlcnMgKi8KKyAgY2JfaDNfcmVjdl9oZWFkZXIsCisgIGNiX2gzX2VuZF9oZWFkZXJzLAorICBOVUxMLCAvKiBiZWdpbl90cmFpbGVycyAqLworICBjYl9oM19yZWN2X2hlYWRlciwKKyAgTlVMTCwgLyogZW5kX3RyYWlsZXJzICovCisgIE5VTEwsIC8qIGh0dHBfYmVnaW5fcHVzaF9wcm9taXNlICovCisgIE5VTEwsIC8qIGh0dHBfcmVjdl9wdXNoX3Byb21pc2UgKi8KKyAgTlVMTCwgLyogaHR0cF9lbmRfcHVzaF9wcm9taXNlICovCisgIE5VTEwsIC8qIGh0dHBfY2FuY2VsX3B1c2ggKi8KKyAgY2JfaDNfc2VuZF9zdG9wX3NlbmRpbmcsCisgIE5VTEwsIC8qIHB1c2hfc3RyZWFtICovCisgIE5VTEwsIC8qIGVuZF9zdHJlYW0gKi8KK307CisKK3N0YXRpYyBpbnQgaW5pdF9uZ2gzX2Nvbm4oc3RydWN0IHF1aWNzb2NrZXQgKnFzKQoreworICBDVVJMY29kZSByZXN1bHQ7CisgIGludCByYzsKKyAgaW50NjRfdCBjdHJsX3N0cmVhbV9pZCwgcXBhY2tfZW5jX3N0cmVhbV9pZCwgcXBhY2tfZGVjX3N0cmVhbV9pZDsKKworICBpZihuZ3RjcDJfY29ubl9nZXRfbWF4X2xvY2FsX3N0cmVhbXNfdW5pKHFzLT5xY29ubikgPCAzKSB7CisgICAgZmFpbGYocXMtPmNvbm4tPmRhdGEsICJ0b28gZmV3IGF2YWlsYWJsZSBRVUlDIHN0cmVhbXMiKTsKKyAgICByZXR1cm4gQ1VSTEVfUVVJQ19DT05ORUNUX0VSUk9SOworICB9CisKKyAgbmdodHRwM19jb25uX3NldHRpbmdzX2RlZmF1bHQoJnFzLT5oM3NldHRpbmdzKTsKKworICByYyA9IG5naHR0cDNfY29ubl9jbGllbnRfbmV3KCZxcy0+aDNjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZ2gzX2NhbGxiYWNrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXMtPmgzc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwM19tZW1fZGVmYXVsdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFzKTsKKyAgaWYocmMpIHsKKyAgICByZXN1bHQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIGdvdG8gZmFpbDsKKyAgfQorCisgIHJjID0gbmd0Y3AyX2Nvbm5fb3Blbl91bmlfc3RyZWFtKHFzLT5xY29ubiwgJmN0cmxfc3RyZWFtX2lkLCBOVUxMKTsKKyAgaWYocmMpIHsKKyAgICByZXN1bHQgPSBDVVJMRV9RVUlDX0NPTk5FQ1RfRVJST1I7CisgICAgZ290byBmYWlsOworICB9CisKKyAgcmMgPSBuZ2h0dHAzX2Nvbm5fYmluZF9jb250cm9sX3N0cmVhbShxcy0+aDNjb25uLCBjdHJsX3N0cmVhbV9pZCk7CisgIGlmKHJjKSB7CisgICAgcmVzdWx0ID0gQ1VSTEVfUVVJQ19DT05ORUNUX0VSUk9SOworICAgIGdvdG8gZmFpbDsKKyAgfQorCisgIHJjID0gbmd0Y3AyX2Nvbm5fb3Blbl91bmlfc3RyZWFtKHFzLT5xY29ubiwgJnFwYWNrX2VuY19zdHJlYW1faWQsIE5VTEwpOworICBpZihyYykgeworICAgIHJlc3VsdCA9IENVUkxFX1FVSUNfQ09OTkVDVF9FUlJPUjsKKyAgICBnb3RvIGZhaWw7CisgIH0KKworICByYyA9IG5ndGNwMl9jb25uX29wZW5fdW5pX3N0cmVhbShxcy0+cWNvbm4sICZxcGFja19kZWNfc3RyZWFtX2lkLCBOVUxMKTsKKyAgaWYocmMpIHsKKyAgICByZXN1bHQgPSBDVVJMRV9RVUlDX0NPTk5FQ1RfRVJST1I7CisgICAgZ290byBmYWlsOworICB9CisKKyAgcmMgPSBuZ2h0dHAzX2Nvbm5fYmluZF9xcGFja19zdHJlYW1zKHFzLT5oM2Nvbm4sIHFwYWNrX2VuY19zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxcGFja19kZWNfc3RyZWFtX2lkKTsKKyAgaWYocmMpIHsKKyAgICByZXN1bHQgPSBDVVJMRV9RVUlDX0NPTk5FQ1RfRVJST1I7CisgICAgZ290byBmYWlsOworICB9CisKKyAgcmV0dXJuIENVUkxFX09LOworICBmYWlsOgorCisgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBDdXJsX3JlY3YgbmdoM19zdHJlYW1fcmVjdjsKK3N0YXRpYyBDdXJsX3NlbmQgbmdoM19zdHJlYW1fc2VuZDsKKworc3RhdGljIHNpemVfdCBkcmFpbl9vdmVyZmxvd19idWZmZXIoc3RydWN0IEhUVFAgKnN0cmVhbSkKK3sKKyAgc2l6ZV90IG5jb3B5ID0gQ1VSTE1JTihzdHJlYW0tPm92ZXJmbG93X2J1Zmxlbiwgc3RyZWFtLT5sZW4pOworICBpZihuY29weSA+IDApIHsKKyAgICBtZW1jcHkoc3RyZWFtLT5tZW0sIHN0cmVhbS0+b3ZlcmZsb3dfYnVmLCBuY29weSk7CisgICAgc3RyZWFtLT5sZW4gLT0gbmNvcHk7CisgICAgc3RyZWFtLT5tZW0gKz0gbmNvcHk7CisgICAgc3RyZWFtLT5tZW1sZW4gKz0gbmNvcHk7CisgICAgc3RyZWFtLT5vdmVyZmxvd19idWZsZW4gLT0gbmNvcHk7CisgICAgbWVtbW92ZShzdHJlYW0tPm92ZXJmbG93X2J1Ziwgc3RyZWFtLT5vdmVyZmxvd19idWYgKyBuY29weSwKKyAgICAgICAgICAgIHN0cmVhbS0+b3ZlcmZsb3dfYnVmbGVuKTsKKyAgfQorICByZXR1cm4gbmNvcHk7Cit9CisKKy8qIGluY29taW5nIGRhdGEgZnJhbWVzIG9uIHRoZSBoMyBzdHJlYW0gKi8KK3N0YXRpYyBzc2l6ZV90IG5naDNfc3RyZWFtX3JlY3Yoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBidWZmZXJzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMY29kZSAqY3VybGNvZGUpCit7CisgIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tzb2NraW5kZXhdOworICBzdHJ1Y3QgSFRUUCAqc3RyZWFtID0gY29ubi0+ZGF0YS0+cmVxLnByb3RvcDsKKyAgc3RydWN0IHF1aWNzb2NrZXQgKnFzID0gY29ubi0+cXVpYzsKKworICBpZighc3RyZWFtLT5tZW1sZW4pIHsKKyAgICAvKiByZW1lbWJlciB3aGVyZSB0byBzdG9yZSBpbmNvbWluZyBkYXRhIGZvciB0aGlzIHN0cmVhbSBhbmQgaG93IGJpZyB0aGUKKyAgICAgICBidWZmZXIgaXMgKi8KKyAgICBzdHJlYW0tPm1lbSA9IGJ1ZjsKKyAgICBzdHJlYW0tPmxlbiA9IGJ1ZmZlcnNpemU7CisgIH0KKyAgLyogZWxzZSwgdGhlcmUncyBkYXRhIGluIHRoZSBidWZmZXIgYWxyZWFkeSAqLworCisgIC8qIGlmIHRoZXJlJ3MgZGF0YSBpbiB0aGUgb3ZlcmZsb3cgYnVmZmVyIGZyb20gYSBwcmV2aW91cyBjYWxsLCBjb3B5IGFzIG11Y2gKKyAgICAgYXMgcG9zc2libGUgdG8gdGhlIHJlY2VpdmUgYnVmZmVyIGJlZm9yZSByZWNlaXZpbmcgbW9yZSAqLworICBkcmFpbl9vdmVyZmxvd19idWZmZXIoc3RyZWFtKTsKKworICBpZihuZ19wcm9jZXNzX2luZ3Jlc3MoY29ubiwgc29ja2ZkLCBxcykpIHsKKyAgICAqY3VybGNvZGUgPSBDVVJMRV9SRUNWX0VSUk9SOworICAgIHJldHVybiAtMTsKKyAgfQorICBpZihuZ19mbHVzaF9lZ3Jlc3MoY29ubiwgc29ja2ZkLCBxcykpIHsKKyAgICAqY3VybGNvZGUgPSBDVVJMRV9TRU5EX0VSUk9SOworICAgIHJldHVybiAtMTsKKyAgfQorCisgIGlmKHN0cmVhbS0+bWVtbGVuKSB7CisgICAgc3NpemVfdCBtZW1sZW4gPSBzdHJlYW0tPm1lbWxlbjsKKyAgICAvKiBkYXRhIGFycml2ZWQgKi8KKyAgICAqY3VybGNvZGUgPSBDVVJMRV9PSzsKKyAgICAvKiByZXNldCB0byBhbGxvdyBtb3JlIGRhdGEgdG8gY29tZSAqLworICAgIHN0cmVhbS0+bWVtbGVuID0gMDsKKyAgICBzdHJlYW0tPm1lbSA9IGJ1ZjsKKyAgICBzdHJlYW0tPmxlbiA9IGJ1ZmZlcnNpemU7CisgICAgLyogZXh0ZW5kIHRoZSBzdHJlYW0gd2luZG93IHdpdGggdGhlIGRhdGEgd2UncmUgY29uc3VtaW5nIGFuZCBzZW5kIG91dAorICAgICAgIGFueSBhZGRpdGlvbmFsIHBhY2tldHMgdG8gdGVsbCB0aGUgc2VydmVyIHRoYXQgd2UgY2FuIHJlY2VpdmUgbW9yZSAqLworICAgIGV4dGVuZF9zdHJlYW1fd2luZG93KHFzLT5xY29ubiwgc3RyZWFtKTsKKyAgICBpZihuZ19mbHVzaF9lZ3Jlc3MoY29ubiwgc29ja2ZkLCBxcykpIHsKKyAgICAgICpjdXJsY29kZSA9IENVUkxFX1NFTkRfRVJST1I7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBtZW1sZW47CisgIH0KKworICBpZihzdHJlYW0tPmNsb3NlZCkgeworICAgICpjdXJsY29kZSA9IENVUkxFX09LOworICAgIHJldHVybiAwOworICB9CisKKyAgaW5mb2YoY29ubi0+ZGF0YSwgIm5naDNfc3RyZWFtX3JlY3YgcmV0dXJucyAwIGJ5dGVzIGFuZCBFQUdBSU5cbiIpOworICAqY3VybGNvZGUgPSBDVVJMRV9BR0FJTjsKKyAgcmV0dXJuIC0xOworfQorCisvKiB0aGlzIGFtb3VudCBvZiBkYXRhIGhhcyBub3cgYmVlbiBhY2tlZCBvbiB0aGlzIHN0cmVhbSAqLworc3RhdGljIGludCBjYl9oM19hY2tlZF9zdHJlYW1fZGF0YShuZ2h0dHAzX2Nvbm4gKmNvbm4sIGludDY0X3Qgc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YWxlbiwgdm9pZCAqdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdHJlYW1fdXNlcl9kYXRhKQoreworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gc3RyZWFtX3VzZXJfZGF0YTsKKyAgc3RydWN0IEhUVFAgKnN0cmVhbSA9IGRhdGEtPnJlcS5wcm90b3A7CisgICh2b2lkKWNvbm47CisgICh2b2lkKXN0cmVhbV9pZDsKKyAgKHZvaWQpdXNlcl9kYXRhOworCisgIGlmKCFkYXRhLT5zZXQucG9zdGZpZWxkcykgeworICAgIHN0cmVhbS0+aDNvdXQtPnVzZWQgLT0gZGF0YWxlbjsKKyAgICBIM0JVR0YoaW5mb2YoZGF0YSwKKyAgICAgICAgICAgICAgICAgImNiX2gzX2Fja2VkX3N0cmVhbV9kYXRhLCAlemQgYnl0ZXMsICV6ZCBsZWZ0IHVuYWNrZWRcbiIsCisgICAgICAgICAgICAgICAgIGRhdGFsZW4sIHN0cmVhbS0+aDNvdXQtPnVzZWQpKTsKKyAgICBERUJVR0FTU0VSVChzdHJlYW0tPmgzb3V0LT51c2VkIDwgSDNfU0VORF9TSVpFKTsKKyAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljIHNzaXplX3QgY2JfaDNfcmVhZGZ1bmN0aW9uKG5naHR0cDNfY29ubiAqY29ubiwgaW50NjRfdCBzdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwM192ZWMgKnZlYywgc2l6ZV90IHZlY2NudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqcGZsYWdzLCB2b2lkICp1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3RyZWFtX3VzZXJfZGF0YSkKK3sKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IHN0cmVhbV91c2VyX2RhdGE7CisgIHNpemVfdCBucmVhZDsKKyAgc3RydWN0IEhUVFAgKnN0cmVhbSA9IGRhdGEtPnJlcS5wcm90b3A7CisgICh2b2lkKWNvbm47CisgICh2b2lkKXN0cmVhbV9pZDsKKyAgKHZvaWQpdXNlcl9kYXRhOworICAodm9pZCl2ZWNjbnQ7CisKKyAgaWYoZGF0YS0+c2V0LnBvc3RmaWVsZHMpIHsKKyAgICB2ZWNbMF0uYmFzZSA9IGRhdGEtPnNldC5wb3N0ZmllbGRzOworICAgIHZlY1swXS5sZW4gPSBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplOworICAgICpwZmxhZ3MgPSBOR0hUVFAzX0RBVEFfRkxBR19FT0Y7CisgICAgcmV0dXJuIDE7CisgIH0KKworICBucmVhZCA9IENVUkxNSU4oc3RyZWFtLT51cGxvYWRfbGVuLCBIM19TRU5EX1NJWkUgLSBzdHJlYW0tPmgzb3V0LT51c2VkKTsKKyAgaWYobnJlYWQgPiAwKSB7CisgICAgLyogbmdodHRwMyB3YW50cyB1cyB0byBob2xkIG9uIHRvIHRoZSBkYXRhIHVudGlsIGl0IHRlbGxzIHVzIGl0IGlzIG9rYXkgdG8KKyAgICAgICBkZWxldGUgaXQuIEFwcGVuZCB0aGUgZGF0YSBhdCB0aGUgZW5kIG9mIHRoZSBoM291dCBidWZmZXIuIFNpbmNlIHdlIGNhbgorICAgICAgIG9ubHkgcmV0dXJuIGNvbnNlY3V0aXZlIGRhdGEsIGNvcHkgdGhlIGFtb3VudCB0aGF0IGZpdHMgYW5kIHRoZSBuZXh0CisgICAgICAgcGFydCBjb21lcyBpbiBuZXh0IGludm9rZS4gKi8KKyAgICBzdHJ1Y3QgaDNvdXQgKm91dCA9IHN0cmVhbS0+aDNvdXQ7CisgICAgaWYobnJlYWQgKyBvdXQtPndpbmRleCA+IEgzX1NFTkRfU0laRSkKKyAgICAgIG5yZWFkID0gSDNfU0VORF9TSVpFIC0gb3V0LT53aW5kZXg7CisKKyAgICBtZW1jcHkoJm91dC0+YnVmW291dC0+d2luZGV4XSwgc3RyZWFtLT51cGxvYWRfbWVtLCBucmVhZCk7CisgICAgb3V0LT53aW5kZXggKz0gbnJlYWQ7CisgICAgb3V0LT51c2VkICs9IG5yZWFkOworCisgICAgLyogdGhhdCdzIHRoZSBjaHVuayB3ZSByZXR1cm4gdG8gbmdodHRwMyAqLworICAgIHZlY1swXS5iYXNlID0gJm91dC0+YnVmW291dC0+d2luZGV4XTsKKyAgICB2ZWNbMF0ubGVuID0gbnJlYWQ7CisKKyAgICBpZihvdXQtPndpbmRleCA9PSBIM19TRU5EX1NJWkUpCisgICAgICBvdXQtPndpbmRleCA9IDA7IC8qIHdyYXAgKi8KKyAgICBzdHJlYW0tPnVwbG9hZF9tZW0gKz0gbnJlYWQ7CisgICAgc3RyZWFtLT51cGxvYWRfbGVuIC09IG5yZWFkOworICAgIGlmKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgIT0gLTEpIHsKKyAgICAgIHN0cmVhbS0+dXBsb2FkX2xlZnQgLT0gbnJlYWQ7CisgICAgICBpZighc3RyZWFtLT51cGxvYWRfbGVmdCkKKyAgICAgICAgKnBmbGFncyA9IE5HSFRUUDNfREFUQV9GTEFHX0VPRjsKKyAgICB9CisgICAgSDNCVUdGKGluZm9mKGRhdGEsICJjYl9oM19yZWFkZnVuY3Rpb24gJXpkIGJ5dGVzJXMgKGF0ICV6ZCB1bmFja2VkKVxuIiwKKyAgICAgICAgICAgICAgICAgbnJlYWQsICpwZmxhZ3MgPT0gTkdIVFRQM19EQVRBX0ZMQUdfRU9GPyIgRU9GIjoiIiwKKyAgICAgICAgICAgICAgICAgb3V0LT51c2VkKSk7CisgIH0KKyAgaWYoc3RyZWFtLT51cGxvYWRfZG9uZSAmJiAhc3RyZWFtLT51cGxvYWRfbGVuICYmCisgICAgIChzdHJlYW0tPnVwbG9hZF9sZWZ0IDw9IDApKSB7CisgICAgSDNCVUdGKGluZm9mKGRhdGEsICIhISEhISEhISEgY2JfaDNfcmVhZGZ1bmN0aW9uIHNldHMgRU9GXG4iKSk7CisgICAgKnBmbGFncyA9IE5HSFRUUDNfREFUQV9GTEFHX0VPRjsKKyAgICByZXR1cm4gMDsKKyAgfQorICBlbHNlIGlmKCFucmVhZCkgeworICAgIHJldHVybiBOR0hUVFAzX0VSUl9XT1VMREJMT0NLOworICB9CisgIHJldHVybiAxOworfQorCisvKiBJbmRleCB3aGVyZSA6YXV0aG9yaXR5IGhlYWRlciBmaWVsZCB3aWxsIGFwcGVhciBpbiByZXF1ZXN0IGhlYWRlcgorICAgZmllbGQgbGlzdC4gKi8KKyNkZWZpbmUgQVVUSE9SSVRZX0RTVF9JRFggMworCitzdGF0aWMgQ1VSTGNvZGUgaHR0cF9yZXF1ZXN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY29uc3Qgdm9pZCAqbWVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKQoreworICBzdHJ1Y3QgSFRUUCAqc3RyZWFtID0gY29ubi0+ZGF0YS0+cmVxLnByb3RvcDsKKyAgc2l6ZV90IG5oZWFkZXI7CisgIHNpemVfdCBpOworICBzaXplX3QgYXV0aG9yaXR5X2lkeDsKKyAgY2hhciAqaGRidWYgPSAoY2hhciAqKW1lbTsKKyAgY2hhciAqZW5kLCAqbGluZV9lbmQ7CisgIHN0cnVjdCBxdWljc29ja2V0ICpxcyA9IGNvbm4tPnF1aWM7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKKyAgbmdodHRwM19udiAqbnZhID0gTlVMTDsKKyAgaW50NjRfdCBzdHJlYW0zX2lkOworICBpbnQgcmM7CisgIHN0cnVjdCBoM291dCAqaDNvdXQgPSBOVUxMOworCisgIHJjID0gbmd0Y3AyX2Nvbm5fb3Blbl9iaWRpX3N0cmVhbShxcy0+cWNvbm4sICZzdHJlYW0zX2lkLCBOVUxMKTsKKyAgaWYocmMpIHsKKyAgICBmYWlsZihjb25uLT5kYXRhLCAiY2FuIGdldCBiaWRpIHN0cmVhbXMiKTsKKyAgICByZXN1bHQgPSBDVVJMRV9TRU5EX0VSUk9SOworICAgIGdvdG8gZmFpbDsKKyAgfQorCisgIHN0cmVhbS0+c3RyZWFtM19pZCA9IHN0cmVhbTNfaWQ7CisgIHN0cmVhbS0+aDNyZXEgPSBUUlVFOyAvKiBzZW5mIG9mZiEgKi8KKworICAvKiBDYWxjdWxhdGUgbnVtYmVyIG9mIGhlYWRlcnMgY29udGFpbmVkIGluIFttZW0sIG1lbSArIGxlbikuIEFzc3VtZXMgYQorICAgICBjb3JyZWN0bHkgZ2VuZXJhdGVkIEhUVFAgaGVhZGVyIGZpZWxkIGJsb2NrLiAqLworICBuaGVhZGVyID0gMDsKKyAgZm9yKGkgPSAxOyBpIDwgbGVuOyArK2kpIHsKKyAgICBpZihoZGJ1ZltpXSA9PSAnXG4nICYmIGhkYnVmW2kgLSAxXSA9PSAnXHInKSB7CisgICAgICArK25oZWFkZXI7CisgICAgICArK2k7CisgICAgfQorICB9CisgIGlmKG5oZWFkZXIgPCAyKQorICAgIGdvdG8gZmFpbDsKKworICAvKiBXZSBjb3VudGVkIGFkZGl0aW9uYWwgMiBcclxuIGluIHRoZSBmaXJzdCBhbmQgbGFzdCBsaW5lLiBXZSBuZWVkIDMKKyAgICAgbmV3IGhlYWRlcnM6IDptZXRob2QsIDpwYXRoIGFuZCA6c2NoZW1lLiBUaGVyZWZvcmUgd2UgbmVlZCBvbmUKKyAgICAgbW9yZSBzcGFjZS4gKi8KKyAgbmhlYWRlciArPSAxOworICBudmEgPSBtYWxsb2Moc2l6ZW9mKG5naHR0cDNfbnYpICogbmhlYWRlcik7CisgIGlmKCFudmEpIHsKKyAgICByZXN1bHQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIGdvdG8gZmFpbDsKKyAgfQorCisgIC8qIEV4dHJhY3QgOm1ldGhvZCwgOnBhdGggZnJvbSByZXF1ZXN0IGxpbmUKKyAgICAgV2UgZG8gbGluZSBlbmRpbmdzIHdpdGggQ1JMRiBzbyBjaGVja2luZyBmb3IgQ1IgaXMgZW5vdWdoICovCisgIGxpbmVfZW5kID0gbWVtY2hyKGhkYnVmLCAnXHInLCBsZW4pOworICBpZighbGluZV9lbmQpIHsKKyAgICByZXN1bHQgPSBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7IC8qIGludGVybmFsIGVycm9yICovCisgICAgZ290byBmYWlsOworICB9CisKKyAgLyogTWV0aG9kIGRvZXMgbm90IGNvbnRhaW4gc3BhY2VzICovCisgIGVuZCA9IG1lbWNocihoZGJ1ZiwgJyAnLCBsaW5lX2VuZCAtIGhkYnVmKTsKKyAgaWYoIWVuZCB8fCBlbmQgPT0gaGRidWYpCisgICAgZ290byBmYWlsOworICBudmFbMF0ubmFtZSA9ICh1bnNpZ25lZCBjaGFyICopIjptZXRob2QiOworICBudmFbMF0ubmFtZWxlbiA9IHN0cmxlbigoY2hhciAqKW52YVswXS5uYW1lKTsKKyAgbnZhWzBdLnZhbHVlID0gKHVuc2lnbmVkIGNoYXIgKiloZGJ1ZjsKKyAgbnZhWzBdLnZhbHVlbGVuID0gKHNpemVfdCkoZW5kIC0gaGRidWYpOworICBudmFbMF0uZmxhZ3MgPSBOR0hUVFAzX05WX0ZMQUdfTk9ORTsKKworICBoZGJ1ZiA9IGVuZCArIDE7CisKKyAgLyogUGF0aCBtYXkgY29udGFpbiBzcGFjZXMgc28gc2NhbiBiYWNrd2FyZHMgKi8KKyAgZW5kID0gTlVMTDsKKyAgZm9yKGkgPSAoc2l6ZV90KShsaW5lX2VuZCAtIGhkYnVmKTsgaTsgLS1pKSB7CisgICAgaWYoaGRidWZbaSAtIDFdID09ICcgJykgeworICAgICAgZW5kID0gJmhkYnVmW2kgLSAxXTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICBpZighZW5kIHx8IGVuZCA9PSBoZGJ1ZikKKyAgICBnb3RvIGZhaWw7CisgIG52YVsxXS5uYW1lID0gKHVuc2lnbmVkIGNoYXIgKikiOnBhdGgiOworICBudmFbMV0ubmFtZWxlbiA9IHN0cmxlbigoY2hhciAqKW52YVsxXS5uYW1lKTsKKyAgbnZhWzFdLnZhbHVlID0gKHVuc2lnbmVkIGNoYXIgKiloZGJ1ZjsKKyAgbnZhWzFdLnZhbHVlbGVuID0gKHNpemVfdCkoZW5kIC0gaGRidWYpOworICBudmFbMV0uZmxhZ3MgPSBOR0hUVFAzX05WX0ZMQUdfTk9ORTsKKworICBudmFbMl0ubmFtZSA9ICh1bnNpZ25lZCBjaGFyICopIjpzY2hlbWUiOworICBudmFbMl0ubmFtZWxlbiA9IHN0cmxlbigoY2hhciAqKW52YVsyXS5uYW1lKTsKKyAgaWYoY29ubi0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX1NTTCkKKyAgICBudmFbMl0udmFsdWUgPSAodW5zaWduZWQgY2hhciAqKSJodHRwcyI7CisgIGVsc2UKKyAgICBudmFbMl0udmFsdWUgPSAodW5zaWduZWQgY2hhciAqKSJodHRwIjsKKyAgbnZhWzJdLnZhbHVlbGVuID0gc3RybGVuKChjaGFyICopbnZhWzJdLnZhbHVlKTsKKyAgbnZhWzJdLmZsYWdzID0gTkdIVFRQM19OVl9GTEFHX05PTkU7CisKKworICBhdXRob3JpdHlfaWR4ID0gMDsKKyAgaSA9IDM7CisgIHdoaWxlKGkgPCBuaGVhZGVyKSB7CisgICAgc2l6ZV90IGhsZW47CisKKyAgICBoZGJ1ZiA9IGxpbmVfZW5kICsgMjsKKworICAgIC8qIGNoZWNrIGZvciBuZXh0IENSLCBidXQgb25seSB3aXRoaW4gdGhlIHBpZWNlIG9mIGRhdGEgbGVmdCBpbiB0aGUgZ2l2ZW4KKyAgICAgICBidWZmZXIgKi8KKyAgICBsaW5lX2VuZCA9IG1lbWNocihoZGJ1ZiwgJ1xyJywgbGVuIC0gKGhkYnVmIC0gKGNoYXIgKiltZW0pKTsKKyAgICBpZighbGluZV9lbmQgfHwgKGxpbmVfZW5kID09IGhkYnVmKSkKKyAgICAgIGdvdG8gZmFpbDsKKworICAgIC8qIGhlYWRlciBjb250aW51YXRpb24gbGluZXMgYXJlIG5vdCBzdXBwb3J0ZWQgKi8KKyAgICBpZigqaGRidWYgPT0gJyAnIHx8ICpoZGJ1ZiA9PSAnXHQnKQorICAgICAgZ290byBmYWlsOworCisgICAgZm9yKGVuZCA9IGhkYnVmOyBlbmQgPCBsaW5lX2VuZCAmJiAqZW5kICE9ICc6JzsgKytlbmQpCisgICAgICA7CisgICAgaWYoZW5kID09IGhkYnVmIHx8IGVuZCA9PSBsaW5lX2VuZCkKKyAgICAgIGdvdG8gZmFpbDsKKyAgICBobGVuID0gZW5kIC0gaGRidWY7CisKKyAgICBpZihobGVuID09IDQgJiYgc3RybmNhc2Vjb21wYXJlKCJob3N0IiwgaGRidWYsIDQpKSB7CisgICAgICBhdXRob3JpdHlfaWR4ID0gaTsKKyAgICAgIG52YVtpXS5uYW1lID0gKHVuc2lnbmVkIGNoYXIgKikiOmF1dGhvcml0eSI7CisgICAgICBudmFbaV0ubmFtZWxlbiA9IHN0cmxlbigoY2hhciAqKW52YVtpXS5uYW1lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBudmFbaV0ubmFtZWxlbiA9IChzaXplX3QpKGVuZCAtIGhkYnVmKTsKKyAgICAgIC8qIExvd2VyIGNhc2UgdGhlIGhlYWRlciBuYW1lIGZvciBIVFRQLzMgKi8KKyAgICAgIEN1cmxfc3RybnRvbG93ZXIoKGNoYXIgKiloZGJ1ZiwgaGRidWYsIG52YVtpXS5uYW1lbGVuKTsKKyAgICAgIG52YVtpXS5uYW1lID0gKHVuc2lnbmVkIGNoYXIgKiloZGJ1ZjsKKyAgICB9CisgICAgbnZhW2ldLmZsYWdzID0gTkdIVFRQM19OVl9GTEFHX05PTkU7CisgICAgaGRidWYgPSBlbmQgKyAxOworICAgIHdoaWxlKCpoZGJ1ZiA9PSAnICcgfHwgKmhkYnVmID09ICdcdCcpCisgICAgICArK2hkYnVmOworICAgIGVuZCA9IGxpbmVfZW5kOworCisjaWYgMCAvKiBUaGlzIHNob3VsZCBwcm9iYWJseSBnbyBpbiBtb3JlIG9yIGxlc3MgbGlrZSB0aGlzICovCisgICAgc3dpdGNoKGluc3BlY3RfaGVhZGVyKChjb25zdCBjaGFyICopbnZhW2ldLm5hbWUsIG52YVtpXS5uYW1lbGVuLCBoZGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIC0gaGRidWYpKSB7CisgICAgY2FzZSBIRUFERVJJTlNUX0lHTk9SRToKKyAgICAgIC8qIHNraXAgaGVhZGVyIGZpZWxkcyBwcm9oaWJpdGVkIGJ5IEhUVFAvMiBzcGVjaWZpY2F0aW9uLiAqLworICAgICAgLS1uaGVhZGVyOworICAgICAgY29udGludWU7CisgICAgY2FzZSBIRUFERVJJTlNUX1RFX1RSQUlMRVJTOgorICAgICAgbnZhW2ldLnZhbHVlID0gKHVpbnQ4X3QqKSJ0cmFpbGVycyI7CisgICAgICBudmFbaV0udmFsdWVfbGVuID0gc2l6ZW9mKCJ0cmFpbGVycyIpIC0gMTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBudmFbaV0udmFsdWUgPSAodW5zaWduZWQgY2hhciAqKWhkYnVmOworICAgICAgbnZhW2ldLnZhbHVlX2xlbiA9IChzaXplX3QpKGVuZCAtIGhkYnVmKTsKKyAgICB9CisjZW5kaWYKKyAgICBudmFbaV0udmFsdWUgPSAodW5zaWduZWQgY2hhciAqKWhkYnVmOworICAgIG52YVtpXS52YWx1ZWxlbiA9IChzaXplX3QpKGVuZCAtIGhkYnVmKTsKKyAgICBudmFbaV0uZmxhZ3MgPSBOR0hUVFAzX05WX0ZMQUdfTk9ORTsKKworICAgICsraTsKKyAgfQorCisgIC8qIDphdXRob3JpdHkgbXVzdCBjb21lIGJlZm9yZSBub24tcHNldWRvIGhlYWRlciBmaWVsZHMgKi8KKyAgaWYoYXV0aG9yaXR5X2lkeCAhPSAwICYmIGF1dGhvcml0eV9pZHggIT0gQVVUSE9SSVRZX0RTVF9JRFgpIHsKKyAgICBuZ2h0dHAzX252IGF1dGhvcml0eSA9IG52YVthdXRob3JpdHlfaWR4XTsKKyAgICBmb3IoaSA9IGF1dGhvcml0eV9pZHg7IGkgPiBBVVRIT1JJVFlfRFNUX0lEWDsgLS1pKSB7CisgICAgICBudmFbaV0gPSBudmFbaSAtIDFdOworICAgIH0KKyAgICBudmFbaV0gPSBhdXRob3JpdHk7CisgIH0KKworICAvKiBXYXJuIHN0cmVhbSBtYXkgYmUgcmVqZWN0ZWQgaWYgY3VtdWxhdGl2ZSBsZW5ndGggb2YgaGVhZGVycyBpcyB0b28KKyAgICAgbGFyZ2UuICovCisjZGVmaW5lIE1BWF9BQ0MgNjAwMDAgIC8qIDw2NEtCIHRvIGFjY291bnQgZm9yIHNvbWUgb3ZlcmhlYWQgKi8KKyAgeworICAgIHNpemVfdCBhY2MgPSAwOworICAgIGZvcihpID0gMDsgaSA8IG5oZWFkZXI7ICsraSkKKyAgICAgIGFjYyArPSBudmFbaV0ubmFtZWxlbiArIG52YVtpXS52YWx1ZWxlbjsKKworICAgIGlmKGFjYyA+IE1BWF9BQ0MpIHsKKyAgICAgIGluZm9mKGRhdGEsICJodHRwX3JlcXVlc3Q6IFdhcm5pbmc6IFRoZSBjdW11bGF0aXZlIGxlbmd0aCBvZiBhbGwgIgorICAgICAgICAgICAgImhlYWRlcnMgZXhjZWVkcyAlenUgYnl0ZXMgYW5kIHRoYXQgY291bGQgY2F1c2UgdGhlICIKKyAgICAgICAgICAgICJzdHJlYW0gdG8gYmUgcmVqZWN0ZWQuXG4iLCBNQVhfQUNDKTsKKyAgICB9CisgIH0KKworICBzd2l0Y2goZGF0YS0+c2V0Lmh0dHByZXEpIHsKKyAgY2FzZSBIVFRQUkVRX1BPU1Q6CisgIGNhc2UgSFRUUFJFUV9QT1NUX0ZPUk06CisgIGNhc2UgSFRUUFJFUV9QT1NUX01JTUU6CisgIGNhc2UgSFRUUFJFUV9QVVQ6IHsKKyAgICBuZ2h0dHAzX2RhdGFfcmVhZGVyIGRhdGFfcmVhZGVyOworICAgIGlmKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgIT0gLTEpCisgICAgICBzdHJlYW0tPnVwbG9hZF9sZWZ0ID0gZGF0YS0+c3RhdGUuaW5maWxlc2l6ZTsKKyAgICBlbHNlCisgICAgICAvKiBkYXRhIHNlbmRpbmcgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBkYXRhIGFtb3VudCB1cCBmcm9udCAqLworICAgICAgc3RyZWFtLT51cGxvYWRfbGVmdCA9IC0xOyAvKiB1bmtub3duLCBidXQgbm90IHplcm8gKi8KKworICAgIGRhdGFfcmVhZGVyLnJlYWRfZGF0YSA9IGNiX2gzX3JlYWRmdW5jdGlvbjsKKworICAgIGgzb3V0ID0gY2FsbG9jKHNpemVvZihzdHJ1Y3QgaDNvdXQpLCAxKTsKKyAgICBpZighaDNvdXQpIHsKKyAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIHN0cmVhbS0+aDNvdXQgPSBoM291dDsKKworICAgIHJjID0gbmdodHRwM19jb25uX3N1Ym1pdF9yZXF1ZXN0KHFzLT5oM2Nvbm4sIHN0cmVhbS0+c3RyZWFtM19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudmEsIG5oZWFkZXIsICZkYXRhX3JlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5kYXRhKTsKKyAgICBpZihyYykgeworICAgICAgcmVzdWx0ID0gQ1VSTEVfU0VORF9FUlJPUjsKKyAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgYnJlYWs7CisgIH0KKyAgZGVmYXVsdDoKKyAgICBzdHJlYW0tPnVwbG9hZF9sZWZ0ID0gMDsgLyogbm90aGluZyBsZWZ0IHRvIHNlbmQgKi8KKyAgICByYyA9IG5naHR0cDNfY29ubl9zdWJtaXRfcmVxdWVzdChxcy0+aDNjb25uLCBzdHJlYW0tPnN0cmVhbTNfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZhLCBuaGVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIC8qIG5vIGJvZHkhICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+ZGF0YSk7CisgICAgaWYocmMpIHsKKyAgICAgIHJlc3VsdCA9IENVUkxFX1NFTkRfRVJST1I7CisgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGJyZWFrOworICB9CisKKyAgQ3VybF9zYWZlZnJlZShudmEpOworCisgIGluZm9mKGRhdGEsICJVc2luZyBIVFRQLzMgU3RyZWFtIElEOiAleCAoZWFzeSBoYW5kbGUgJXApXG4iLAorICAgICAgICBzdHJlYW0zX2lkLCAodm9pZCAqKWRhdGEpOworCisgIHJldHVybiBDVVJMRV9PSzsKKworZmFpbDoKKyAgZnJlZShudmEpOworICByZXR1cm4gcmVzdWx0OworfQorc3RhdGljIHNzaXplX3QgbmdoM19zdHJlYW1fc2VuZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKm1lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUgKmN1cmxjb2RlKQoreworICBzc2l6ZV90IHNlbnQ7CisgIHN0cnVjdCBxdWljc29ja2V0ICpxcyA9IGNvbm4tPnF1aWM7CisgIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tzb2NraW5kZXhdOworICBzdHJ1Y3QgSFRUUCAqc3RyZWFtID0gY29ubi0+ZGF0YS0+cmVxLnByb3RvcDsKKworICBpZighc3RyZWFtLT5oM3JlcSkgeworICAgIENVUkxjb2RlIHJlc3VsdCA9IGh0dHBfcmVxdWVzdChjb25uLCBtZW0sIGxlbik7CisgICAgaWYocmVzdWx0KSB7CisgICAgICAqY3VybGNvZGUgPSBDVVJMRV9TRU5EX0VSUk9SOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBzZW50ID0gbGVuOworICB9CisgIGVsc2UgeworICAgIEgzQlVHRihpbmZvZihjb25uLT5kYXRhLCAibmdoM19zdHJlYW1fc2VuZCgpIHdhbnRzIHRvIHNlbmQgJXpkIGJ5dGVzXG4iLAorICAgICAgICAgICAgICAgICBsZW4pKTsKKyAgICBpZighc3RyZWFtLT51cGxvYWRfbGVuKSB7CisgICAgICBzdHJlYW0tPnVwbG9hZF9tZW0gPSBtZW07CisgICAgICBzdHJlYW0tPnVwbG9hZF9sZW4gPSBsZW47CisgICAgICAodm9pZCluZ2h0dHAzX2Nvbm5fcmVzdW1lX3N0cmVhbShxcy0+aDNjb25uLCBzdHJlYW0tPnN0cmVhbTNfaWQpOworICAgICAgc2VudCA9IGxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAqY3VybGNvZGUgPSBDVVJMRV9BR0FJTjsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIH0KKworICBpZihuZ19mbHVzaF9lZ3Jlc3MoY29ubiwgc29ja2ZkLCBxcykpIHsKKyAgICAqY3VybGNvZGUgPSBDVVJMRV9TRU5EX0VSUk9SOworICAgIHJldHVybiAtMTsKKyAgfQorCisgICpjdXJsY29kZSA9IENVUkxFX09LOworICByZXR1cm4gc2VudDsKK30KKworc3RhdGljIHZvaWQgbmdfaGFzX2Nvbm5lY3RlZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCB0ZW1waW5kZXgpCit7CisgIGNvbm4tPnJlY3ZbRklSU1RTT0NLRVRdID0gbmdoM19zdHJlYW1fcmVjdjsKKyAgY29ubi0+c2VuZFtGSVJTVFNPQ0tFVF0gPSBuZ2gzX3N0cmVhbV9zZW5kOworICBjb25uLT5oYW5kbGVyID0gJkN1cmxfaGFuZGxlcl9odHRwMzsKKyAgY29ubi0+Yml0cy5tdWx0aXBsZXggPSBUUlVFOyAvKiBhdCBsZWFzdCBwb3RlbnRpYWxseSBtdWx0aXBsZXhlZCAqLworICBjb25uLT5odHRwdmVyc2lvbiA9IDMwOworICBjb25uLT5idW5kbGUtPm11bHRpdXNlID0gQlVORExFX01VTFRJUExFWDsKKyAgY29ubi0+cXVpYyA9ICZjb25uLT5oZXF1aWNbdGVtcGluZGV4XTsKKyAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJuZ3RjcDIgZXN0YWJsaXNoZWQgY29ubmVjdGlvbiFcbiIpKTsKK30KKworLyoKKyAqIFRoZXJlIGNhbiBiZSBtdWx0aXBsZSBjb25uZWN0aW9uIGF0dGVtcHRzIGdvaW5nIG9uIGluIHBhcmFsbGVsLgorICovCitDVVJMY29kZSBDdXJsX3F1aWNfaXNfY29ubmVjdGVkKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9uZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0OworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSAmY29ubi0+aGVxdWljW3NvY2tpbmRleF07CisgIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+dGVtcHNvY2tbc29ja2luZGV4XTsKKworICByZXN1bHQgPSBuZ19wcm9jZXNzX2luZ3Jlc3MoY29ubiwgc29ja2ZkLCBxcyk7CisgIGlmKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIHJlc3VsdCA9IG5nX2ZsdXNoX2VncmVzcyhjb25uLCBzb2NrZmQsIHFzKTsKKyAgaWYocmVzdWx0KQorICAgIHJldHVybiByZXN1bHQ7CisKKyAgaWYobmd0Y3AyX2Nvbm5fZ2V0X2hhbmRzaGFrZV9jb21wbGV0ZWQocXMtPnFjb25uKSkgeworICAgICpkb25lID0gVFJVRTsKKyAgICBuZ19oYXNfY29ubmVjdGVkKGNvbm4sIHNvY2tpbmRleCk7CisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ1VSTGNvZGUgbmdfcHJvY2Vzc19pbmdyZXNzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHF1aWNzb2NrZXQgKnFzKQoreworICBzc2l6ZV90IHJlY3ZkOworICBpbnQgcnY7CisgIHVpbnQ4X3QgYnVmWzY1NTM2XTsKKyAgc2l6ZV90IGJ1ZnNpemUgPSBzaXplb2YoYnVmKTsKKyAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgcmVtb3RlX2FkZHI7CisgIHNvY2tsZW5fdCByZW1vdGVfYWRkcmxlbjsKKyAgbmd0Y3AyX3BhdGggcGF0aDsKKyAgbmd0Y3AyX3RzdGFtcCB0cyA9IHRpbWVzdGFtcCgpOworCisgIGZvcig7OykgeworICAgIHJlbW90ZV9hZGRybGVuID0gc2l6ZW9mKHJlbW90ZV9hZGRyKTsKKyAgICB3aGlsZSgocmVjdmQgPSByZWN2ZnJvbShzb2NrZmQsIGJ1ZiwgYnVmc2l6ZSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyICopJnJlbW90ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZW1vdGVfYWRkcmxlbikpID09IC0xICYmCisgICAgICAgICAgU09DS0VSUk5PID09IEVJTlRSKQorICAgICAgOworICAgIGlmKHJlY3ZkID09IC0xKSB7CisgICAgICBpZihTT0NLRVJSTk8gPT0gRUFHQUlOIHx8IFNPQ0tFUlJOTyA9PSBFV09VTERCTE9DSykKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICJuZ3RjcDI6IHJlY3Zmcm9tKCkgdW5leHBlY3RlZGx5IHJldHVybmVkICVkIiwgcmVjdmQpOworICAgICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7CisgICAgfQorCisgICAgbmd0Y3AyX2FkZHJfaW5pdCgmcGF0aC5sb2NhbCwgKHVpbnQ4X3QgKikmcXMtPmxvY2FsX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICBxcy0+bG9jYWxfYWRkcmxlbiwgTlVMTCk7CisgICAgbmd0Y3AyX2FkZHJfaW5pdCgmcGF0aC5yZW1vdGUsICh1aW50OF90ICopJnJlbW90ZV9hZGRyLCByZW1vdGVfYWRkcmxlbiwKKyAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAgcnYgPSBuZ3RjcDJfY29ubl9yZWFkX3BrdChxcy0+cWNvbm4sICZwYXRoLCBidWYsIHJlY3ZkLCB0cyk7CisgICAgaWYocnYgIT0gMCkgeworICAgICAgLyogVE9ETyBTZW5kIENPTk5FQ1RJT05fQ0xPU0UgaWYgcG9zc2libGUgKi8KKyAgICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOworICAgIH0KKyAgfQorCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworc3RhdGljIENVUkxjb2RlIG5nX2ZsdXNoX2VncmVzcyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NrZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBxdWljc29ja2V0ICpxcykKK3sKKyAgaW50IHJ2OworICBzc2l6ZV90IHNlbnQ7CisgIHNzaXplX3Qgb3V0bGVuOworICB1aW50OF90IG91dFtOR1RDUDJfTUFYX1BLVExFTl9JUFY0XTsKKyAgc2l6ZV90IHBrdGxlbjsKKyAgbmd0Y3AyX3BhdGhfc3RvcmFnZSBwczsKKyAgbmd0Y3AyX3RzdGFtcCB0cyA9IHRpbWVzdGFtcCgpOworICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSByZW1vdGVfYWRkcjsKKyAgbmd0Y3AyX3RzdGFtcCBleHBpcnk7CisgIG5ndGNwMl9kdXJhdGlvbiB0aW1lb3V0OworICBpbnQ2NF90IHN0cmVhbV9pZDsKKyAgc3NpemVfdCB2ZWNjbnQ7CisgIGludCBmaW47CisgIG5naHR0cDNfdmVjIHZlY1sxNl07CisgIHNzaXplX3QgbmRhdGFsZW47CisKKyAgc3dpdGNoKHFzLT5sb2NhbF9hZGRyLnNzX2ZhbWlseSkgeworICBjYXNlIEFGX0lORVQ6CisgICAgcGt0bGVuID0gTkdUQ1AyX01BWF9QS1RMRU5fSVBWNDsKKyAgICBicmVhazsKKyNpZmRlZiBFTkFCTEVfSVBWNgorICBjYXNlIEFGX0lORVQ2OgorICAgIHBrdGxlbiA9IE5HVENQMl9NQVhfUEtUTEVOX0lQVjY7CisgICAgYnJlYWs7CisjZW5kaWYKKyAgZGVmYXVsdDoKKyAgICBhc3NlcnQoMCk7CisgIH0KKworICBydiA9IG5ndGNwMl9jb25uX2hhbmRsZV9leHBpcnkocXMtPnFjb25uLCB0cyk7CisgIGlmKHJ2ICE9IDApIHsKKyAgICBmYWlsZihjb25uLT5kYXRhLCAibmd0Y3AyX2Nvbm5faGFuZGxlX2V4cGlyeSByZXR1cm5lZCBlcnJvcjogJXNcbiIsCisgICAgICAgICAgbmd0Y3AyX3N0cmVycm9yKHJ2KSk7CisgICAgcmV0dXJuIENVUkxFX1NFTkRfRVJST1I7CisgIH0KKworICBuZ3RjcDJfcGF0aF9zdG9yYWdlX3plcm8oJnBzKTsKKworICBmb3IoOzspIHsKKyAgICBvdXRsZW4gPSAtMTsKKyAgICBpZihxcy0+aDNjb25uICYmIG5ndGNwMl9jb25uX2dldF9tYXhfZGF0YV9sZWZ0KHFzLT5xY29ubikpIHsKKyAgICAgIHZlY2NudCA9IG5naHR0cDNfY29ubl93cml0ZXZfc3RyZWFtKHFzLT5oM2Nvbm4sICZzdHJlYW1faWQsICZmaW4sIHZlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih2ZWMpIC8gc2l6ZW9mKHZlY1swXSkpOworICAgICAgaWYodmVjY250IDwgMCkgeworICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAibmdodHRwM19jb25uX3dyaXRldl9zdHJlYW0gcmV0dXJuZWQgZXJyb3I6ICVzXG4iLAorICAgICAgICAgICAgICBuZ2h0dHAzX3N0cmVycm9yKChpbnQpdmVjY250KSk7CisgICAgICAgIHJldHVybiBDVVJMRV9TRU5EX0VSUk9SOworICAgICAgfQorICAgICAgZWxzZSBpZih2ZWNjbnQgPiAwKSB7CisgICAgICAgIG91dGxlbiA9CisgICAgICAgICAgbmd0Y3AyX2Nvbm5fd3JpdGV2X3N0cmVhbShxcy0+cWNvbm4sICZwcy5wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LCBwa3RsZW4sICZuZGF0YWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HVENQMl9XUklURV9TVFJFQU1fRkxBR19NT1JFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkLCBmaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgbmd0Y3AyX3ZlYyAqKXZlYywgdmVjY250LCB0cyk7CisgICAgICAgIGlmKG91dGxlbiA9PSAwKSB7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYob3V0bGVuIDwgMCkgeworICAgICAgICAgIGlmKG91dGxlbiA9PSBOR1RDUDJfRVJSX1NUUkVBTV9EQVRBX0JMT0NLRUQgfHwKKyAgICAgICAgICAgICBvdXRsZW4gPT0gTkdUQ1AyX0VSUl9TVFJFQU1fU0hVVF9XUikgeworICAgICAgICAgICAgcnYgPSBuZ2h0dHAzX2Nvbm5fYmxvY2tfc3RyZWFtKHFzLT5oM2Nvbm4sIHN0cmVhbV9pZCk7CisgICAgICAgICAgICBpZihydiAhPSAwKSB7CisgICAgICAgICAgICAgIGZhaWxmKGNvbm4tPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICJuZ2h0dHAzX2Nvbm5fYmxvY2tfc3RyZWFtIHJldHVybmVkIGVycm9yOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgbmdodHRwM19zdHJlcnJvcihydikpOworICAgICAgICAgICAgICByZXR1cm4gQ1VSTEVfU0VORF9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmKG91dGxlbiA9PSBOR1RDUDJfRVJSX1dSSVRFX1NUUkVBTV9NT1JFKSB7CisgICAgICAgICAgICBhc3NlcnQobmRhdGFsZW4gPiAwKTsKKyAgICAgICAgICAgIHJ2ID0gbmdodHRwM19jb25uX2FkZF93cml0ZV9vZmZzZXQocXMtPmgzY29ubiwgc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGF0YWxlbik7CisgICAgICAgICAgICBpZihydiAhPSAwKSB7CisgICAgICAgICAgICAgIGZhaWxmKGNvbm4tPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICJuZ2h0dHAzX2Nvbm5fYWRkX3dyaXRlX29mZnNldCByZXR1cm5lZCBlcnJvcjogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIG5naHR0cDNfc3RyZXJyb3IocnYpKTsKKyAgICAgICAgICAgICAgcmV0dXJuIENVUkxFX1NFTkRfRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAibmd0Y3AyX2Nvbm5fd3JpdGV2X3N0cmVhbSByZXR1cm5lZCBlcnJvcjogJXNcbiIsCisgICAgICAgICAgICAgICAgICBuZ3RjcDJfc3RyZXJyb3IoKGludClvdXRsZW4pKTsKKyAgICAgICAgICAgIHJldHVybiBDVVJMRV9TRU5EX0VSUk9SOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKG5kYXRhbGVuID49IDApIHsKKyAgICAgICAgICBydiA9IG5naHR0cDNfY29ubl9hZGRfd3JpdGVfb2Zmc2V0KHFzLT5oM2Nvbm4sIHN0cmVhbV9pZCwgbmRhdGFsZW4pOworICAgICAgICAgIGlmKHJ2ICE9IDApIHsKKyAgICAgICAgICAgIGZhaWxmKGNvbm4tPmRhdGEsCisgICAgICAgICAgICAgICAgICAibmdodHRwM19jb25uX2FkZF93cml0ZV9vZmZzZXQgcmV0dXJuZWQgZXJyb3I6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgbmdodHRwM19zdHJlcnJvcihydikpOworICAgICAgICAgICAgcmV0dXJuIENVUkxFX1NFTkRfRVJST1I7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGlmKG91dGxlbiA8IDApIHsKKyAgICAgIG91dGxlbiA9IG5ndGNwMl9jb25uX3dyaXRlX3BrdChxcy0+cWNvbm4sICZwcy5wYXRoLCBvdXQsIHBrdGxlbiwgdHMpOworICAgICAgaWYob3V0bGVuIDwgMCkgeworICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAibmd0Y3AyX2Nvbm5fd3JpdGVfcGt0IHJldHVybmVkIGVycm9yOiAlc1xuIiwKKyAgICAgICAgICAgICAgbmd0Y3AyX3N0cmVycm9yKChpbnQpb3V0bGVuKSk7CisgICAgICAgIHJldHVybiBDVVJMRV9TRU5EX0VSUk9SOworICAgICAgfQorICAgICAgaWYob3V0bGVuID09IDApCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1lbWNweSgmcmVtb3RlX2FkZHIsIHBzLnBhdGgucmVtb3RlLmFkZHIsIHBzLnBhdGgucmVtb3RlLmFkZHJsZW4pOworICAgIHdoaWxlKChzZW50ID0gc2VuZChzb2NrZmQsIG91dCwgb3V0bGVuLCAwKSkgPT0gLTEgJiYKKyAgICAgICAgICBTT0NLRVJSTk8gPT0gRUlOVFIpCisgICAgICA7CisKKyAgICBpZihzZW50ID09IC0xKSB7CisgICAgICBpZihTT0NLRVJSTk8gPT0gRUFHQUlOIHx8IFNPQ0tFUlJOTyA9PSBFV09VTERCTE9DSykgeworICAgICAgICAvKiBUT0RPIENhY2hlIHBhY2tldCAqLworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAic2VuZCgpIHJldHVybmVkICV6ZCAoZXJybm8gJWQpXG4iLCBzZW50LAorICAgICAgICAgICAgICBTT0NLRVJSTk8pOworICAgICAgICByZXR1cm4gQ1VSTEVfU0VORF9FUlJPUjsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBleHBpcnkgPSBuZ3RjcDJfY29ubl9nZXRfZXhwaXJ5KHFzLT5xY29ubik7CisgIGlmKGV4cGlyeSAhPSBVSU5UNjRfTUFYKSB7CisgICAgaWYoZXhwaXJ5IDw9IHRzKSB7CisgICAgICB0aW1lb3V0ID0gTkdUQ1AyX01JTExJU0VDT05EUzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aW1lb3V0ID0gZXhwaXJ5IC0gdHM7CisgICAgfQorICAgIEN1cmxfZXhwaXJlKGNvbm4tPmRhdGEsIHRpbWVvdXQgLyBOR1RDUDJfTUlMTElTRUNPTkRTLCBFWFBJUkVfUVVJQyk7CisgIH0KKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBDYWxsZWQgZnJvbSB0cmFuc2Zlci5jOmRvbmVfc2VuZGluZyB3aGVuIHdlIHN0b3AgSFRUUC8zIHVwbG9hZGluZy4KKyAqLworQ1VSTGNvZGUgQ3VybF9xdWljX2RvbmVfc2VuZGluZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCit7CisgIGlmKGNvbm4tPmhhbmRsZXIgPT0gJkN1cmxfaGFuZGxlcl9odHRwMykgeworICAgIC8qIG9ubHkgZm9yIEhUVFAvMyB0cmFuc2ZlcnMgKi8KKyAgICBzdHJ1Y3QgSFRUUCAqc3RyZWFtID0gY29ubi0+ZGF0YS0+cmVxLnByb3RvcDsKKyAgICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSBjb25uLT5xdWljOworICAgIHN0cmVhbS0+dXBsb2FkX2RvbmUgPSBUUlVFOworICAgICh2b2lkKW5naHR0cDNfY29ubl9yZXN1bWVfc3RyZWFtKHFzLT5oM2Nvbm4sIHN0cmVhbS0+c3RyZWFtM19pZCk7CisgIH0KKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBDYWxsZWQgZnJvbSBodHRwLmM6Q3VybF9odHRwX2RvbmUgd2hlbiBhIHJlcXVlc3QgY29tcGxldGVzLgorICovCit2b2lkIEN1cmxfcXVpY19kb25lKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsIGJvb2wgcHJlbWF0dXJlKQoreworICAodm9pZClwcmVtYXR1cmU7CisgIGlmKGRhdGEtPmNvbm4tPmhhbmRsZXIgPT0gJkN1cmxfaGFuZGxlcl9odHRwMykgeworICAgIC8qIG9ubHkgZm9yIEhUVFAvMyB0cmFuc2ZlcnMgKi8KKyAgICBzdHJ1Y3QgSFRUUCAqc3RyZWFtID0gZGF0YS0+cmVxLnByb3RvcDsKKyAgICBDdXJsX3NhZmVmcmVlKHN0cmVhbS0+b3ZlcmZsb3dfYnVmKTsKKyAgfQorfQorCisvKgorICogQ2FsbGVkIGZyb20gdHJhbnNmZXIuYzpkYXRhX3BlbmRpbmcgdG8ga25vdyBpZiB3ZSBzaG91bGQga2VlcCBsb29waW5nCisgKiB0byByZWNlaXZlIG1vcmUgZGF0YSBmcm9tIHRoZSBjb25uZWN0aW9uLgorICovCitib29sIEN1cmxfcXVpY19kYXRhX3BlbmRpbmcoY29uc3Qgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSkKK3sKKyAgLyogV2UgbWF5IGhhdmUgcmVjZWl2ZWQgbW9yZSBkYXRhIHRoYW4gd2UncmUgYWJsZSB0byBob2xkIGluIHRoZSByZWNlaXZlCisgICAgIGJ1ZmZlciBhbmQgYWxsb2NhdGVkIGFuIG92ZXJmbG93IGJ1ZmZlci4gU2luY2UgaXQncyBwb3NzaWJsZSB0aGF0CisgICAgIHRoZXJlJ3Mgbm8gbW9yZSBkYXRhIGNvbWluZyBvbiB0aGUgc29ja2V0LCB3ZSBuZWVkIHRvIGtlZXAgcmVhZGluZworICAgICB1bnRpbCB0aGUgb3ZlcmZsb3cgYnVmZmVyIGlzIGVtcHR5LiAqLworICBjb25zdCBzdHJ1Y3QgSFRUUCAqc3RyZWFtID0gZGF0YS0+cmVxLnByb3RvcDsKKyAgcmV0dXJuIHN0cmVhbS0+b3ZlcmZsb3dfYnVmbGVuID4gMDsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92cXVpYy9uZ3RjcDIuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZxdWljL25ndGNwMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZDQ0MmYKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92cXVpYy9uZ3RjcDIuaApAQCAtMCwwICsxLDYzIEBACisjaWZuZGVmIEhFQURFUl9DVVJMX1ZRVUlDX05HVENQMl9ICisjZGVmaW5lIEhFQURFUl9DVVJMX1ZRVUlDX05HVENQMl9ICisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZmRlZiBVU0VfTkdUQ1AyCisKKyNpbmNsdWRlIDxuZ3RjcDIvbmd0Y3AyLmg+CisjaW5jbHVkZSA8bmdodHRwMy9uZ2h0dHAzLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KKworc3RydWN0IHF1aWNfaGFuZHNoYWtlIHsKKyAgY2hhciAqYnVmOyAgICAgICAvKiBwb2ludGVyIHRvIHRoZSBidWZmZXIgKi8KKyAgc2l6ZV90IGFsbG9jbGVuOyAvKiBzaXplIG9mIGFsbG9jYXRpb24gKi8KKyAgc2l6ZV90IGxlbjsgICAgICAvKiBzaXplIG9mIGNvbnRlbnQgaW4gYnVmZmVyICovCisgIHNpemVfdCBucmVhZDsgICAgLyogaG93IG1hbnkgYnl0ZXMgaGF2ZSBiZWVuIHJlYWQgKi8KK307CisKK3N0cnVjdCBxdWljc29ja2V0IHsKKyAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uOyAvKiBwb2ludCBiYWNrIHRvIHRoZSBjb25uZWN0aW9uICovCisgIG5ndGNwMl9jb25uICpxY29ubjsKKyAgbmd0Y3AyX2NpZCBkY2lkOworICBuZ3RjcDJfY2lkIHNjaWQ7CisgIHVpbnQzMl90IHZlcnNpb247CisgIG5ndGNwMl9zZXR0aW5ncyBzZXR0aW5nczsKKyAgU1NMX0NUWCAqc3NsY3R4OworICBTU0wgKnNzbDsKKyAgc3RydWN0IHF1aWNfaGFuZHNoYWtlIGNyeXB0b19kYXRhWzNdOworICAvKiB0aGUgbGFzdCBUTFMgYWxlcnQgZGVzY3JpcHRpb24gZ2VuZXJhdGVkIGJ5IHRoZSBsb2NhbCBlbmRwb2ludCAqLworICB1aW50OF90IHRsc19hbGVydDsKKyAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgbG9jYWxfYWRkcjsKKyAgc29ja2xlbl90IGxvY2FsX2FkZHJsZW47CisKKyAgbmdodHRwM19jb25uICpoM2Nvbm47CisgIG5naHR0cDNfY29ubl9zZXR0aW5ncyBoM3NldHRpbmdzOworfTsKKworI2luY2x1ZGUgInVybGRhdGEuaCIKKworI2VuZGlmCisKKyNlbmRpZiAvKiBIRUFERVJfQ1VSTF9WUVVJQ19OR1RDUDJfSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnF1aWMvcXVpY2hlLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92cXVpYy9xdWljaGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDliYTcwCi0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnF1aWMvcXVpY2hlLmMKQEAgLTAsMCArMSw4MDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmZGVmIFVTRV9RVUlDSEUKKyNpbmNsdWRlIDxxdWljaGUuaD4KKyNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgorI2luY2x1ZGUgInVybGRhdGEuaCIKKyNpbmNsdWRlICJzZW5kZi5oIgorI2luY2x1ZGUgInN0cmR1cC5oIgorI2luY2x1ZGUgInJhbmQuaCIKKyNpbmNsdWRlICJxdWljLmgiCisjaW5jbHVkZSAic3RyY2FzZS5oIgorI2luY2x1ZGUgIm11bHRpaWYuaCIKKyNpbmNsdWRlICJjb25uZWN0LmgiCisjaW5jbHVkZSAic3RyZXJyb3IuaCIKKworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCisjZGVmaW5lIERFQlVHX0hUVFAzCisvKiAjZGVmaW5lIERFQlVHX1FVSUNIRSAqLworI2lmZGVmIERFQlVHX0hUVFAzCisjZGVmaW5lIEgzQlVHRih4KSB4CisjZWxzZQorI2RlZmluZSBIM0JVR0YoeCkgZG8geyB9IHdoaWxlKDApCisjZW5kaWYKKworI2RlZmluZSBRVUlDX01BWF9TVFJFQU1TICgyNTYqMTAyNCkKKyNkZWZpbmUgUVVJQ19NQVhfREFUQSAoMSoxMDI0KjEwMjQpCisjZGVmaW5lIFFVSUNfSURMRV9USU1FT1VUICg2MCAqIDEwMDApIC8qIG1pbGxpc2Vjb25kcyAqLworCitzdGF0aWMgQ1VSTGNvZGUgcHJvY2Vzc19pbmdyZXNzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCBzb2NrZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBxdWljc29ja2V0ICpxcyk7CisKK3N0YXRpYyBDVVJMY29kZSBmbHVzaF9lZ3Jlc3Moc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90IHNvY2tmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHF1aWNzb2NrZXQgKnFzKTsKKworc3RhdGljIENVUkxjb2RlIGh0dHBfcmVxdWVzdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGNvbnN0IHZvaWQgKm1lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbik7CitzdGF0aWMgQ3VybF9yZWN2IGgzX3N0cmVhbV9yZWN2Oworc3RhdGljIEN1cmxfc2VuZCBoM19zdHJlYW1fc2VuZDsKKworCitzdGF0aWMgaW50IHF1aWNoZV9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MpCit7CisgIHN0cnVjdCBTaW5nbGVSZXF1ZXN0ICprID0gJmNvbm4tPmRhdGEtPnJlcTsKKyAgaW50IGJpdG1hcCA9IEdFVFNPQ0tfQkxBTks7CisKKyAgc29ja3NbMF0gPSBjb25uLT5zb2NrW0ZJUlNUU09DS0VUXTsKKworICAvKiBpbiBhIEhUVFAvMiBjb25uZWN0aW9uIHdlIGNhbiBiYXNpY2FsbHkgYWx3YXlzIGdldCBhIGZyYW1lIHNvIHdlIHNob3VsZAorICAgICBhbHdheXMgYmUgcmVhZHkgZm9yIG9uZSAqLworICBiaXRtYXAgfD0gR0VUU09DS19SRUFEU09DSyhGSVJTVFNPQ0tFVCk7CisKKyAgLyogd2UncmUgc3RpbGwgdXBsb2FkaW5nIG9yIHRoZSBIVFRQLzIgbGF5ZXIgd2FudHMgdG8gc2VuZCBkYXRhICovCisgIGlmKChrLT5rZWVwb24gJiAoS0VFUF9TRU5EfEtFRVBfU0VORF9QQVVTRSkpID09IEtFRVBfU0VORCkKKyAgICBiaXRtYXAgfD0gR0VUU09DS19XUklURVNPQ0soRklSU1RTT0NLRVQpOworCisgIHJldHVybiBiaXRtYXA7Cit9CisKK3N0YXRpYyBpbnQgcXVpY2hlX3BlcmZvcm1fZ2V0c29jayhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MpCit7CisgIHJldHVybiBxdWljaGVfZ2V0c29jaygoc3RydWN0IGNvbm5lY3RkYXRhICopY29ubiwgc29ja3MpOworfQorCitzdGF0aWMgQ1VSTGNvZGUgcXVpY2hlX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVhZF9jb25uZWN0aW9uKQoreworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSBjb25uLT5xdWljOworICAodm9pZClkZWFkX2Nvbm5lY3Rpb247CisgIHF1aWNoZV9oM19jb25maWdfZnJlZShxcy0+aDNjb25maWcpOworICBxdWljaGVfaDNfY29ubl9mcmVlKHFzLT5oM2MpOworICBxdWljaGVfY29uZmlnX2ZyZWUocXMtPmNmZyk7CisgIHF1aWNoZV9jb25uX2ZyZWUocXMtPmNvbm4pOworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgcXVpY2hlX2Nvbm5jaGVjayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNoZWNrc190b19wZXJmb3JtKQoreworICAodm9pZCljb25uOworICAodm9pZCljaGVja3NfdG9fcGVyZm9ybTsKKyAgcmV0dXJuIENPTk5SRVNVTFRfTk9ORTsKK30KKworc3RhdGljIENVUkxjb2RlIHF1aWNoZV9kbyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCit7CisgIHN0cnVjdCBIVFRQICpzdHJlYW0gPSBjb25uLT5kYXRhLT5yZXEucHJvdG9wOworICBzdHJlYW0tPmgzcmVxID0gRkFMU0U7IC8qIG5vdCBzZW50ICovCisgIHJldHVybiBDdXJsX2h0dHAoY29ubiwgZG9uZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyIEN1cmxfaGFuZGxlcl9odHRwMyA9IHsKKyAgIkhUVFBTIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzY2hlbWUgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZXR1cF9jb25uZWN0aW9uICovCisgIHF1aWNoZV9kbywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9faXQgKi8KKyAgQ3VybF9odHRwX2RvbmUsICAgICAgICAgICAgICAgICAgICAgICAvKiBkb25lICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9fbW9yZSAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3RfaXQgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb25uZWN0aW5nICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9pbmcgKi8KKyAgcXVpY2hlX2dldHNvY2ssICAgICAgICAgICAgICAgICAgICAgICAvKiBwcm90b19nZXRzb2NrICovCisgIHF1aWNoZV9nZXRzb2NrLCAgICAgICAgICAgICAgICAgICAgICAgLyogZG9pbmdfZ2V0c29jayAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbW9yZV9nZXRzb2NrICovCisgIHF1aWNoZV9wZXJmb3JtX2dldHNvY2ssICAgICAgICAgICAgICAgLyogcGVyZm9ybV9nZXRzb2NrICovCisgIHF1aWNoZV9kaXNjb25uZWN0LCAgICAgICAgICAgICAgICAgICAgLyogZGlzY29ubmVjdCAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWR3cml0ZSAqLworICBxdWljaGVfY29ubmNoZWNrLCAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3Rpb25fY2hlY2sgKi8KKyAgUE9SVF9IVFRQLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkZWZwb3J0ICovCisgIENVUkxQUk9UT19IVFRQUywgICAgICAgICAgICAgICAgICAgICAgLyogcHJvdG9jb2wgKi8KKyAgUFJPVE9QVF9TU0wgfCBQUk9UT1BUX1NUUkVBTSAgICAgICAgICAvKiBmbGFncyAqLworfTsKKworI2lmZGVmIERFQlVHX1FVSUNIRQorc3RhdGljIHZvaWQgcXVpY2hlX2RlYnVnX2xvZyhjb25zdCBjaGFyICpsaW5lLCB2b2lkICphcmdwKQoreworICAodm9pZClhcmdwOworICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBsaW5lKTsKK30KKyNlbmRpZgorCitDVVJMY29kZSBDdXJsX3F1aWNfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3Qgc29ja2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xlbl90IGFkZHJsZW4pCit7CisgIENVUkxjb2RlIHJlc3VsdDsKKyAgc3RydWN0IHF1aWNzb2NrZXQgKnFzID0gJmNvbm4tPmhlcXVpY1tzb2NraW5kZXhdOworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKKworI2lmZGVmIERFQlVHX1FVSUNIRQorICAvKiBpbml0aWFsaXplIGRlYnVnIGxvZyBjYWxsYmFjayBvbmx5IG9uY2UgKi8KKyAgc3RhdGljIGludCBkZWJ1Z19sb2dfaW5pdCA9IDA7CisgIGlmKCFkZWJ1Z19sb2dfaW5pdCkgeworICAgIHF1aWNoZV9lbmFibGVfZGVidWdfbG9nZ2luZyhxdWljaGVfZGVidWdfbG9nLCBOVUxMKTsKKyAgICBkZWJ1Z19sb2dfaW5pdCA9IDE7CisgIH0KKyNlbmRpZgorCisgICh2b2lkKWFkZHI7CisgICh2b2lkKWFkZHJsZW47CisKKyAgcXMtPmNmZyA9IHF1aWNoZV9jb25maWdfbmV3KFFVSUNIRV9QUk9UT0NPTF9WRVJTSU9OKTsKKyAgaWYoIXFzLT5jZmcpIHsKKyAgICBmYWlsZihkYXRhLCAiY2FuJ3QgY3JlYXRlIHF1aWNoZSBjb25maWciKTsKKyAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgIH0KKworICBxdWljaGVfY29uZmlnX3NldF9tYXhfaWRsZV90aW1lb3V0KHFzLT5jZmcsIFFVSUNfSURMRV9USU1FT1VUKTsKKyAgcXVpY2hlX2NvbmZpZ19zZXRfaW5pdGlhbF9tYXhfZGF0YShxcy0+Y2ZnLCBRVUlDX01BWF9EQVRBKTsKKyAgcXVpY2hlX2NvbmZpZ19zZXRfaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbChxcy0+Y2ZnLCBRVUlDX01BWF9EQVRBKTsKKyAgcXVpY2hlX2NvbmZpZ19zZXRfaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGUocXMtPmNmZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVJQ19NQVhfREFUQSk7CisgIHF1aWNoZV9jb25maWdfc2V0X2luaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaShxcy0+Y2ZnLCBRVUlDX01BWF9EQVRBKTsKKyAgcXVpY2hlX2NvbmZpZ19zZXRfaW5pdGlhbF9tYXhfc3RyZWFtc19iaWRpKHFzLT5jZmcsIFFVSUNfTUFYX1NUUkVBTVMpOworICBxdWljaGVfY29uZmlnX3NldF9pbml0aWFsX21heF9zdHJlYW1zX3VuaShxcy0+Y2ZnLCBRVUlDX01BWF9TVFJFQU1TKTsKKyAgcXVpY2hlX2NvbmZpZ19zZXRfYXBwbGljYXRpb25fcHJvdG9zKHFzLT5jZmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDhfdCAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVJQ0hFX0gzX0FQUExJQ0FUSU9OX1BST1RPQ09MLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFFVSUNIRV9IM19BUFBMSUNBVElPTl9QUk9UT0NPTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gMSk7CisKKyAgcmVzdWx0ID0gQ3VybF9yYW5kKGRhdGEsIHFzLT5zY2lkLCBzaXplb2YocXMtPnNjaWQpKTsKKyAgaWYocmVzdWx0KQorICAgIHJldHVybiByZXN1bHQ7CisKKyAgaWYoZ2V0ZW52KCJTU0xLRVlMT0dGSUxFIikpCisgICAgcXVpY2hlX2NvbmZpZ19sb2dfa2V5cyhxcy0+Y2ZnKTsKKworICBxcy0+Y29ubiA9IHF1aWNoZV9jb25uZWN0KGNvbm4tPmhvc3QubmFtZSwgKGNvbnN0IHVpbnQ4X3QgKikgcXMtPnNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHFzLT5zY2lkKSwgcXMtPmNmZyk7CisgIGlmKCFxcy0+Y29ubikgeworICAgIGZhaWxmKGRhdGEsICJjYW4ndCBjcmVhdGUgcXVpY2hlIGNvbm5lY3Rpb24iKTsKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIHJlc3VsdCA9IGZsdXNoX2VncmVzcyhjb25uLCBzb2NrZmQsIHFzKTsKKyAgaWYocmVzdWx0KQorICAgIHJldHVybiByZXN1bHQ7CisKKyAgLyogc3RvcmUgdGhlIHVzZWQgYWRkcmVzcyBhcyBhIHN0cmluZyAqLworICBpZighQ3VybF9hZGRyMnN0cmluZygoc3RydWN0IHNvY2thZGRyKilhZGRyLCBhZGRybGVuLAorICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5wcmltYXJ5X2lwLCAmY29ubi0+cHJpbWFyeV9wb3J0KSkgeworICAgIGNoYXIgYnVmZmVyW1NUUkVSUk9SX0xFTl07CisgICAgZmFpbGYoZGF0YSwgInNzcmVtIGluZXRfbnRvcCgpIGZhaWxlZCB3aXRoIGVycm5vICVkOiAlcyIsCisgICAgICAgICAgU09DS0VSUk5PLCBDdXJsX3N0cmVycm9yKFNPQ0tFUlJOTywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOworICAgIHJldHVybiBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CisgIH0KKyAgbWVtY3B5KGNvbm4tPmlwX2FkZHJfc3RyLCBjb25uLT5wcmltYXJ5X2lwLCBNQVhfSVBBRFJfTEVOKTsKKyAgQ3VybF9wZXJzaXN0Y29ubmluZm8oY29ubik7CisKKyAgLyogZm9yIGNvbm5lY3Rpb24gcmV1c2UgcHVycG9zZXM6ICovCisgIGNvbm4tPnNzbFtGSVJTVFNPQ0tFVF0uc3RhdGUgPSBzc2xfY29ubmVjdGlvbl9jb21wbGV0ZTsKKworICBpbmZvZihkYXRhLCAiU2VudCBRVUlDIGNsaWVudCBJbml0aWFsLCBBTFBOOiAlc1xuIiwKKyAgICAgICAgUVVJQ0hFX0gzX0FQUExJQ0FUSU9OX1BST1RPQ09MICsgMSk7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCitzdGF0aWMgQ1VSTGNvZGUgcXVpY2hlX2hhc19jb25uZWN0ZWQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRlbXBpbmRleCkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0OworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSBjb25uLT5xdWljID0gJmNvbm4tPmhlcXVpY1t0ZW1waW5kZXhdOworCisgIGNvbm4tPnJlY3Zbc29ja2luZGV4XSA9IGgzX3N0cmVhbV9yZWN2OworICBjb25uLT5zZW5kW3NvY2tpbmRleF0gPSBoM19zdHJlYW1fc2VuZDsKKyAgY29ubi0+aGFuZGxlciA9ICZDdXJsX2hhbmRsZXJfaHR0cDM7CisgIGNvbm4tPmJpdHMubXVsdGlwbGV4ID0gVFJVRTsgLyogYXQgbGVhc3QgcG90ZW50aWFsbHkgbXVsdGlwbGV4ZWQgKi8KKyAgY29ubi0+aHR0cHZlcnNpb24gPSAzMDsKKyAgY29ubi0+YnVuZGxlLT5tdWx0aXVzZSA9IEJVTkRMRV9NVUxUSVBMRVg7CisKKyAgcXMtPmgzY29uZmlnID0gcXVpY2hlX2gzX2NvbmZpZ19uZXcoKTsKKyAgaWYoIXFzLT5oM2NvbmZpZykKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAvKiBDcmVhdGUgYSBuZXcgSFRUUC8zIGNvbm5lY3Rpb24gb24gdGhlIFFVSUMgY29ubmVjdGlvbi4gKi8KKyAgcXMtPmgzYyA9IHF1aWNoZV9oM19jb25uX25ld193aXRoX3RyYW5zcG9ydChxcy0+Y29ubiwgcXMtPmgzY29uZmlnKTsKKyAgaWYoIXFzLT5oM2MpIHsKKyAgICByZXN1bHQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIGdvdG8gZmFpbDsKKyAgfQorICBpZihjb25uLT5oZXF1aWNbMS10ZW1waW5kZXhdLmNmZykgeworICAgIHFzID0gJmNvbm4tPmhlcXVpY1sxLXRlbXBpbmRleF07CisgICAgcXVpY2hlX2NvbmZpZ19mcmVlKHFzLT5jZmcpOworICAgIHF1aWNoZV9jb25uX2ZyZWUocXMtPmNvbm4pOworICAgIHFzLT5jZmcgPSBOVUxMOworICAgIHFzLT5jb25uID0gTlVMTDsKKyAgfQorICByZXR1cm4gQ1VSTEVfT0s7CisgIGZhaWw6CisgIHF1aWNoZV9oM19jb25maWdfZnJlZShxcy0+aDNjb25maWcpOworICBxdWljaGVfaDNfY29ubl9mcmVlKHFzLT5oM2MpOworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBnZXRzIHBvbGxlZCB0byBjaGVjayBpZiB0aGlzIFFVSUMgY29ubmVjdGlvbiBoYXMgY29ubmVjdGVkLgorICovCitDVVJMY29kZSBDdXJsX3F1aWNfaXNfY29ubmVjdGVkKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9uZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0OworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSAmY29ubi0+aGVxdWljW3NvY2tpbmRleF07CisgIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+dGVtcHNvY2tbc29ja2luZGV4XTsKKworICByZXN1bHQgPSBwcm9jZXNzX2luZ3Jlc3MoY29ubiwgc29ja2ZkLCBxcyk7CisgIGlmKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIHJlc3VsdCA9IGZsdXNoX2VncmVzcyhjb25uLCBzb2NrZmQsIHFzKTsKKyAgaWYocmVzdWx0KQorICAgIHJldHVybiByZXN1bHQ7CisKKyAgaWYocXVpY2hlX2Nvbm5faXNfZXN0YWJsaXNoZWQocXMtPmNvbm4pKSB7CisgICAgKmRvbmUgPSBUUlVFOworICAgIHJlc3VsdCA9IHF1aWNoZV9oYXNfY29ubmVjdGVkKGNvbm4sIDAsIHNvY2tpbmRleCk7CisgICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJxdWljaGUgZXN0YWJsaXNoZWQgY29ubmVjdGlvbiFcbiIpKTsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBwcm9jZXNzX2luZ3Jlc3Moc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMpCit7CisgIHNzaXplX3QgcmVjdmQ7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworICB1aW50OF90ICpidWYgPSAodWludDhfdCAqKWRhdGEtPnN0YXRlLmJ1ZmZlcjsKKyAgc2l6ZV90IGJ1ZnNpemUgPSBkYXRhLT5zZXQuYnVmZmVyX3NpemU7CisKKyAgLyogaW4gY2FzZSB0aGUgdGltZW91dCBleHBpcmVkICovCisgIHF1aWNoZV9jb25uX29uX3RpbWVvdXQocXMtPmNvbm4pOworCisgIGRvIHsKKyAgICByZWN2ZCA9IHJlY3Yoc29ja2ZkLCBidWYsIGJ1ZnNpemUsIDApOworICAgIGlmKChyZWN2ZCA8IDApICYmICgoU09DS0VSUk5PID09IEVBR0FJTikgfHwgKFNPQ0tFUlJOTyA9PSBFV09VTERCTE9DSykpKQorICAgICAgYnJlYWs7CisKKyAgICBpZihyZWN2ZCA8IDApIHsKKyAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICJxdWljaGU6IHJlY3YoKSB1bmV4cGVjdGVkbHkgcmV0dXJuZWQgJWQgIgorICAgICAgICAgICAgIihlcnJubzogJWQsIHNvY2tldCAlZCkiLCByZWN2ZCwgU09DS0VSUk5PLCBzb2NrZmQpOworICAgICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7CisgICAgfQorCisgICAgcmVjdmQgPSBxdWljaGVfY29ubl9yZWN2KHFzLT5jb25uLCBidWYsIHJlY3ZkKTsKKyAgICBpZihyZWN2ZCA9PSBRVUlDSEVfRVJSX0RPTkUpCisgICAgICBicmVhazsKKworICAgIGlmKHJlY3ZkIDwgMCkgeworICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgInF1aWNoZV9jb25uX3JlY3YoKSA9PSAlZCIsIHJlY3ZkKTsKKyAgICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOworICAgIH0KKyAgfSB3aGlsZSgxKTsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBmbHVzaF9lZ3Jlc3MgZHJhaW5zIHRoZSBidWZmZXJzIGFuZCBzZW5kcyBvZmYgZGF0YS4KKyAqIENhbGxzIGZhaWxmKCkgb24gZXJyb3JzLgorICovCitzdGF0aWMgQ1VSTGNvZGUgZmx1c2hfZWdyZXNzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHF1aWNzb2NrZXQgKnFzKQoreworICBzc2l6ZV90IHNlbnQ7CisgIHN0YXRpYyB1aW50OF90IG91dFsxMjAwXTsKKyAgaW50NjRfdCB0aW1lb3V0X25zOworCisgIGRvIHsKKyAgICBzZW50ID0gcXVpY2hlX2Nvbm5fc2VuZChxcy0+Y29ubiwgb3V0LCBzaXplb2Yob3V0KSk7CisgICAgaWYoc2VudCA9PSBRVUlDSEVfRVJSX0RPTkUpCisgICAgICBicmVhazsKKworICAgIGlmKHNlbnQgPCAwKSB7CisgICAgICBmYWlsZihjb25uLT5kYXRhLCAicXVpY2hlX2Nvbm5fc2VuZCByZXR1cm5lZCAlemRcbiIsCisgICAgICAgICAgICBzZW50KTsKKyAgICAgIHJldHVybiBDVVJMRV9TRU5EX0VSUk9SOworICAgIH0KKworICAgIHNlbnQgPSBzZW5kKHNvY2tmZCwgb3V0LCBzZW50LCAwKTsKKyAgICBpZihzZW50IDwgMCkgeworICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgInNlbmQoKSByZXR1cm5lZCAlemRcbiIsIHNlbnQpOworICAgICAgcmV0dXJuIENVUkxFX1NFTkRfRVJST1I7CisgICAgfQorICB9IHdoaWxlKDEpOworCisgIC8qIHRpbWUgdW50aWwgdGhlIG5leHQgdGltZW91dCBldmVudCwgYXMgbmFub3NlY29uZHMuICovCisgIHRpbWVvdXRfbnMgPSBxdWljaGVfY29ubl90aW1lb3V0X2FzX25hbm9zKHFzLT5jb25uKTsKKyAgaWYodGltZW91dF9ucykKKyAgICAvKiBleHBpcmUgdXNlcyBtaWxsaXNlY29uZHMgKi8KKyAgICBDdXJsX2V4cGlyZShjb25uLT5kYXRhLCAodGltZW91dF9ucyArIDk5OTk5OSkgLyAxMDAwMDAwLCBFWFBJUkVfUVVJQyk7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCitzdHJ1Y3QgaDNoMWhlYWRlciB7CisgIGNoYXIgKmRlc3Q7CisgIHNpemVfdCBkZXN0bGVuOyAvKiBsZWZ0IHRvIHVzZSAqLworICBzaXplX3QgbmxlbjsgLyogdXNlZCAqLworfTsKKworc3RhdGljIGludCBjYl9lYWNoX2hlYWRlcih1aW50OF90ICpuYW1lLCBzaXplX3QgbmFtZV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnZhbHVlLCBzaXplX3QgdmFsdWVfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmdwKQoreworICBzdHJ1Y3QgaDNoMWhlYWRlciAqaGVhZGVycyA9IChzdHJ1Y3QgaDNoMWhlYWRlciAqKWFyZ3A7CisgIHNpemVfdCBvbGVuID0gMDsKKworICBpZigobmFtZV9sZW4gPT0gNykgJiYgIXN0cm5jbXAoIjpzdGF0dXMiLCAoY2hhciAqKW5hbWUsIDcpKSB7CisgICAgbXNucHJpbnRmKGhlYWRlcnMtPmRlc3QsCisgICAgICAgICAgICAgIGhlYWRlcnMtPmRlc3RsZW4sICJIVFRQLzMgJS4qc1xuIiwKKyAgICAgICAgICAgICAgKGludCkgdmFsdWVfbGVuLCB2YWx1ZSk7CisgIH0KKyAgZWxzZSBpZighaGVhZGVycy0+bmxlbikgeworICAgIHJldHVybiBDVVJMRV9IVFRQMzsKKyAgfQorICBlbHNlIHsKKyAgICBtc25wcmludGYoaGVhZGVycy0+ZGVzdCwKKyAgICAgICAgICAgICAgaGVhZGVycy0+ZGVzdGxlbiwgIiUuKnM6ICUuKnNcbiIsCisgICAgICAgICAgICAgIChpbnQpbmFtZV9sZW4sIG5hbWUsIChpbnQpIHZhbHVlX2xlbiwgdmFsdWUpOworICB9CisgIG9sZW4gPSBzdHJsZW4oaGVhZGVycy0+ZGVzdCk7CisgIGhlYWRlcnMtPmRlc3RsZW4gLT0gb2xlbjsKKyAgaGVhZGVycy0+bmxlbiArPSBvbGVuOworICBoZWFkZXJzLT5kZXN0ICs9IG9sZW47CisgIHJldHVybiAwOworfQorCitzdGF0aWMgc3NpemVfdCBoM19zdHJlYW1fcmVjdihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMY29kZSAqY3VybGNvZGUpCit7CisgIHNzaXplX3QgcmVjdmQgPSAtMTsKKyAgc3NpemVfdCByY29kZTsKKyAgc3RydWN0IHF1aWNzb2NrZXQgKnFzID0gY29ubi0+cXVpYzsKKyAgY3VybF9zb2NrZXRfdCBzb2NrZmQgPSBjb25uLT5zb2NrW3NvY2tpbmRleF07CisgIHF1aWNoZV9oM19ldmVudCAqZXY7CisgIGludCByYzsKKyAgc3RydWN0IGgzaDFoZWFkZXIgaGVhZGVyczsKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBIVFRQICpzdHJlYW0gPSBkYXRhLT5yZXEucHJvdG9wOworICBoZWFkZXJzLmRlc3QgPSBidWY7CisgIGhlYWRlcnMuZGVzdGxlbiA9IGJ1ZmZlcnNpemU7CisgIGhlYWRlcnMubmxlbiA9IDA7CisKKyAgaWYocHJvY2Vzc19pbmdyZXNzKGNvbm4sIHNvY2tmZCwgcXMpKSB7CisgICAgaW5mb2YoZGF0YSwgImgzX3N0cmVhbV9yZWN2IHJldHVybnMgb24gaW5ncmVzc1xuIik7CisgICAgKmN1cmxjb2RlID0gQ1VSTEVfUkVDVl9FUlJPUjsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICB3aGlsZShyZWN2ZCA8IDApIHsKKyAgICBpbnQ2NF90IHMgPSBxdWljaGVfaDNfY29ubl9wb2xsKHFzLT5oM2MsIHFzLT5jb25uLCAmZXYpOworICAgIGlmKHMgPCAwKQorICAgICAgLyogbm90aGluZyBtb3JlIHRvIGRvICovCisgICAgICBicmVhazsKKworICAgIGlmKHMgIT0gc3RyZWFtLT5zdHJlYW0zX2lkKSB7CisgICAgICAvKiBhbm90aGVyIHRyYW5zZmVyLCBpZ25vcmUgZm9yIG5vdyAqLworICAgICAgaW5mb2YoZGF0YSwgIkdvdCBoMyBmb3Igc3RyZWFtICV1LCBleHBlY3RzICV1XG4iLAorICAgICAgICAgICAgcywgc3RyZWFtLT5zdHJlYW0zX2lkKTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIHN3aXRjaChxdWljaGVfaDNfZXZlbnRfdHlwZShldikpIHsKKyAgICBjYXNlIFFVSUNIRV9IM19FVkVOVF9IRUFERVJTOgorICAgICAgcmMgPSBxdWljaGVfaDNfZXZlbnRfZm9yX2VhY2hfaGVhZGVyKGV2LCBjYl9lYWNoX2hlYWRlciwgJmhlYWRlcnMpOworICAgICAgaWYocmMpIHsKKyAgICAgICAgKmN1cmxjb2RlID0gcmM7CisgICAgICAgIGZhaWxmKGRhdGEsICJFcnJvciBpbiBIVFRQLzMgcmVzcG9uc2UgaGVhZGVyIik7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgcmVjdmQgPSBoZWFkZXJzLm5sZW47CisgICAgICBicmVhazsKKyAgICBjYXNlIFFVSUNIRV9IM19FVkVOVF9EQVRBOgorICAgICAgaWYoIXN0cmVhbS0+Zmlyc3Rib2R5KSB7CisgICAgICAgIC8qIGFkZCBhIGhlYWRlci1ib2R5IHNlcGFyYXRvciBDUkxGICovCisgICAgICAgIGJ1ZlswXSA9ICdccic7CisgICAgICAgIGJ1ZlsxXSA9ICdcbic7CisgICAgICAgIGJ1ZiArPSAyOworICAgICAgICBidWZmZXJzaXplIC09IDI7CisgICAgICAgIHN0cmVhbS0+Zmlyc3Rib2R5ID0gVFJVRTsKKyAgICAgICAgcmVjdmQgPSAyOyAvKiB0d28gYnl0ZXMgYWxyZWFkeSAqLworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICByZWN2ZCA9IDA7CisgICAgICByY29kZSA9IHF1aWNoZV9oM19yZWN2X2JvZHkocXMtPmgzYywgcXMtPmNvbm4sIHMsICh1bnNpZ25lZCBjaGFyICopYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNpemUpOworICAgICAgaWYocmNvZGUgPD0gMCkgeworICAgICAgICByZWN2ZCA9IC0xOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHJlY3ZkICs9IHJjb2RlOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFFVSUNIRV9IM19FVkVOVF9GSU5JU0hFRDoKKyAgICAgIHN0cmVhbWNsb3NlKGNvbm4sICJFbmQgb2Ygc3RyZWFtIik7CisgICAgICByZWN2ZCA9IDA7IC8qIGVuZCBvZiBzdHJlYW0gKi8KKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBxdWljaGVfaDNfZXZlbnRfZnJlZShldik7CisgIH0KKyAgaWYoZmx1c2hfZWdyZXNzKGNvbm4sIHNvY2tmZCwgcXMpKSB7CisgICAgKmN1cmxjb2RlID0gQ1VSTEVfU0VORF9FUlJPUjsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICAqY3VybGNvZGUgPSAoLTEgPT0gcmVjdmQpPyBDVVJMRV9BR0FJTiA6IENVUkxFX09LOworICBpZihyZWN2ZCA+PSAwKQorICAgIC8qIEdldCB0aGlzIGNhbGxlZCBhZ2FpbiB0byBkcmFpbiB0aGUgZXZlbnQgcXVldWUgKi8KKyAgICBDdXJsX2V4cGlyZShkYXRhLCAwLCBFWFBJUkVfUVVJQyk7CisKKyAgZGF0YS0+c3RhdGUuZHJhaW4gPSAocmVjdmQgPj0gMCkgPyAxIDogMDsKKyAgcmV0dXJuIHJlY3ZkOworfQorCitzdGF0aWMgc3NpemVfdCBoM19zdHJlYW1fc2VuZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqbWVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlICpjdXJsY29kZSkKK3sKKyAgc3NpemVfdCBzZW50OworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSBjb25uLT5xdWljOworICBjdXJsX3NvY2tldF90IHNvY2tmZCA9IGNvbm4tPnNvY2tbc29ja2luZGV4XTsKKyAgc3RydWN0IEhUVFAgKnN0cmVhbSA9IGNvbm4tPmRhdGEtPnJlcS5wcm90b3A7CisKKyAgaWYoIXN0cmVhbS0+aDNyZXEpIHsKKyAgICBDVVJMY29kZSByZXN1bHQgPSBodHRwX3JlcXVlc3QoY29ubiwgbWVtLCBsZW4pOworICAgIGlmKHJlc3VsdCkgeworICAgICAgKmN1cmxjb2RlID0gQ1VSTEVfU0VORF9FUlJPUjsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgc2VudCA9IGxlbjsKKyAgfQorICBlbHNlIHsKKyAgICBIM0JVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIlBhc3Mgb24gJXpkIGJvZHkgYnl0ZXMgdG8gcXVpY2hlXG4iLAorICAgICAgICAgICAgICAgICBsZW4pKTsKKyAgICBzZW50ID0gcXVpY2hlX2gzX3NlbmRfYm9keShxcy0+aDNjLCBxcy0+Y29ubiwgc3RyZWFtLT5zdHJlYW0zX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50OF90ICopbWVtLCBsZW4sIEZBTFNFKTsKKyAgICBpZihzZW50IDwgMCkgeworICAgICAgKmN1cmxjb2RlID0gQ1VSTEVfU0VORF9FUlJPUjsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIH0KKworICBpZihmbHVzaF9lZ3Jlc3MoY29ubiwgc29ja2ZkLCBxcykpIHsKKyAgICAqY3VybGNvZGUgPSBDVVJMRV9TRU5EX0VSUk9SOworICAgIHJldHVybiAtMTsKKyAgfQorCisgICpjdXJsY29kZSA9IENVUkxFX09LOworICByZXR1cm4gc2VudDsKK30KKworLyoKKyAqIFN0b3JlIHF1aWNoZSB2ZXJzaW9uIGluZm8gaW4gdGhpcyBidWZmZXIsIFByZWZpeCB3aXRoIGEgc3BhY2UuICBSZXR1cm4gdG90YWwKKyAqIGxlbmd0aCB3cml0dGVuLgorICovCitpbnQgQ3VybF9xdWljX3ZlcihjaGFyICpwLCBzaXplX3QgbGVuKQoreworICByZXR1cm4gbXNucHJpbnRmKHAsIGxlbiwgIiBxdWljaGUvJXMiLCBxdWljaGVfdmVyc2lvbigpKTsKK30KKworLyogSW5kZXggd2hlcmUgOmF1dGhvcml0eSBoZWFkZXIgZmllbGQgd2lsbCBhcHBlYXIgaW4gcmVxdWVzdCBoZWFkZXIKKyAgIGZpZWxkIGxpc3QuICovCisjZGVmaW5lIEFVVEhPUklUWV9EU1RfSURYIDMKKworc3RhdGljIENVUkxjb2RlIGh0dHBfcmVxdWVzdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGNvbnN0IHZvaWQgKm1lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbikKK3sKKyAgLyoKKyAgICovCisgIHN0cnVjdCBIVFRQICpzdHJlYW0gPSBjb25uLT5kYXRhLT5yZXEucHJvdG9wOworICBzaXplX3QgbmhlYWRlcjsKKyAgc2l6ZV90IGk7CisgIHNpemVfdCBhdXRob3JpdHlfaWR4OworICBjaGFyICpoZGJ1ZiA9IChjaGFyICopbWVtOworICBjaGFyICplbmQsICpsaW5lX2VuZDsKKyAgaW50NjRfdCBzdHJlYW0zX2lkOworICBxdWljaGVfaDNfaGVhZGVyICpudmEgPSBOVUxMOworICBzdHJ1Y3QgcXVpY3NvY2tldCAqcXMgPSBjb25uLT5xdWljOworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisKKyAgc3RyZWFtLT5oM3JlcSA9IFRSVUU7IC8qIHNlbmYgb2ZmISAqLworCisgIC8qIENhbGN1bGF0ZSBudW1iZXIgb2YgaGVhZGVycyBjb250YWluZWQgaW4gW21lbSwgbWVtICsgbGVuKS4gQXNzdW1lcyBhCisgICAgIGNvcnJlY3RseSBnZW5lcmF0ZWQgSFRUUCBoZWFkZXIgZmllbGQgYmxvY2suICovCisgIG5oZWFkZXIgPSAwOworICBmb3IoaSA9IDE7IGkgPCBsZW47ICsraSkgeworICAgIGlmKGhkYnVmW2ldID09ICdcbicgJiYgaGRidWZbaSAtIDFdID09ICdccicpIHsKKyAgICAgICsrbmhlYWRlcjsKKyAgICAgICsraTsKKyAgICB9CisgIH0KKyAgaWYobmhlYWRlciA8IDIpCisgICAgZ290byBmYWlsOworCisgIC8qIFdlIGNvdW50ZWQgYWRkaXRpb25hbCAyIFxyXG4gaW4gdGhlIGZpcnN0IGFuZCBsYXN0IGxpbmUuIFdlIG5lZWQgMworICAgICBuZXcgaGVhZGVyczogOm1ldGhvZCwgOnBhdGggYW5kIDpzY2hlbWUuIFRoZXJlZm9yZSB3ZSBuZWVkIG9uZQorICAgICBtb3JlIHNwYWNlLiAqLworICBuaGVhZGVyICs9IDE7CisgIG52YSA9IG1hbGxvYyhzaXplb2YocXVpY2hlX2gzX2hlYWRlcikgKiBuaGVhZGVyKTsKKyAgaWYoIW52YSkgeworICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgZ290byBmYWlsOworICB9CisKKyAgLyogRXh0cmFjdCA6bWV0aG9kLCA6cGF0aCBmcm9tIHJlcXVlc3QgbGluZQorICAgICBXZSBkbyBsaW5lIGVuZGluZ3Mgd2l0aCBDUkxGIHNvIGNoZWNraW5nIGZvciBDUiBpcyBlbm91Z2ggKi8KKyAgbGluZV9lbmQgPSBtZW1jaHIoaGRidWYsICdccicsIGxlbik7CisgIGlmKCFsaW5lX2VuZCkgeworICAgIHJlc3VsdCA9IENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsgLyogaW50ZXJuYWwgZXJyb3IgKi8KKyAgICBnb3RvIGZhaWw7CisgIH0KKworICAvKiBNZXRob2QgZG9lcyBub3QgY29udGFpbiBzcGFjZXMgKi8KKyAgZW5kID0gbWVtY2hyKGhkYnVmLCAnICcsIGxpbmVfZW5kIC0gaGRidWYpOworICBpZighZW5kIHx8IGVuZCA9PSBoZGJ1ZikKKyAgICBnb3RvIGZhaWw7CisgIG52YVswXS5uYW1lID0gKHVuc2lnbmVkIGNoYXIgKikiOm1ldGhvZCI7CisgIG52YVswXS5uYW1lX2xlbiA9IHN0cmxlbigoY2hhciAqKW52YVswXS5uYW1lKTsKKyAgbnZhWzBdLnZhbHVlID0gKHVuc2lnbmVkIGNoYXIgKiloZGJ1ZjsKKyAgbnZhWzBdLnZhbHVlX2xlbiA9IChzaXplX3QpKGVuZCAtIGhkYnVmKTsKKworICBoZGJ1ZiA9IGVuZCArIDE7CisKKyAgLyogUGF0aCBtYXkgY29udGFpbiBzcGFjZXMgc28gc2NhbiBiYWNrd2FyZHMgKi8KKyAgZW5kID0gTlVMTDsKKyAgZm9yKGkgPSAoc2l6ZV90KShsaW5lX2VuZCAtIGhkYnVmKTsgaTsgLS1pKSB7CisgICAgaWYoaGRidWZbaSAtIDFdID09ICcgJykgeworICAgICAgZW5kID0gJmhkYnVmW2kgLSAxXTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICBpZighZW5kIHx8IGVuZCA9PSBoZGJ1ZikKKyAgICBnb3RvIGZhaWw7CisgIG52YVsxXS5uYW1lID0gKHVuc2lnbmVkIGNoYXIgKikiOnBhdGgiOworICBudmFbMV0ubmFtZV9sZW4gPSBzdHJsZW4oKGNoYXIgKiludmFbMV0ubmFtZSk7CisgIG52YVsxXS52YWx1ZSA9ICh1bnNpZ25lZCBjaGFyICopaGRidWY7CisgIG52YVsxXS52YWx1ZV9sZW4gPSAoc2l6ZV90KShlbmQgLSBoZGJ1Zik7CisKKyAgbnZhWzJdLm5hbWUgPSAodW5zaWduZWQgY2hhciAqKSI6c2NoZW1lIjsKKyAgbnZhWzJdLm5hbWVfbGVuID0gc3RybGVuKChjaGFyICopbnZhWzJdLm5hbWUpOworICBpZihjb25uLT5oYW5kbGVyLT5mbGFncyAmIFBST1RPUFRfU1NMKQorICAgIG52YVsyXS52YWx1ZSA9ICh1bnNpZ25lZCBjaGFyICopImh0dHBzIjsKKyAgZWxzZQorICAgIG52YVsyXS52YWx1ZSA9ICh1bnNpZ25lZCBjaGFyICopImh0dHAiOworICBudmFbMl0udmFsdWVfbGVuID0gc3RybGVuKChjaGFyICopbnZhWzJdLnZhbHVlKTsKKworCisgIGF1dGhvcml0eV9pZHggPSAwOworICBpID0gMzsKKyAgd2hpbGUoaSA8IG5oZWFkZXIpIHsKKyAgICBzaXplX3QgaGxlbjsKKworICAgIGhkYnVmID0gbGluZV9lbmQgKyAyOworCisgICAgLyogY2hlY2sgZm9yIG5leHQgQ1IsIGJ1dCBvbmx5IHdpdGhpbiB0aGUgcGllY2Ugb2YgZGF0YSBsZWZ0IGluIHRoZSBnaXZlbgorICAgICAgIGJ1ZmZlciAqLworICAgIGxpbmVfZW5kID0gbWVtY2hyKGhkYnVmLCAnXHInLCBsZW4gLSAoaGRidWYgLSAoY2hhciAqKW1lbSkpOworICAgIGlmKCFsaW5lX2VuZCB8fCAobGluZV9lbmQgPT0gaGRidWYpKQorICAgICAgZ290byBmYWlsOworCisgICAgLyogaGVhZGVyIGNvbnRpbnVhdGlvbiBsaW5lcyBhcmUgbm90IHN1cHBvcnRlZCAqLworICAgIGlmKCpoZGJ1ZiA9PSAnICcgfHwgKmhkYnVmID09ICdcdCcpCisgICAgICBnb3RvIGZhaWw7CisKKyAgICBmb3IoZW5kID0gaGRidWY7IGVuZCA8IGxpbmVfZW5kICYmICplbmQgIT0gJzonOyArK2VuZCkKKyAgICAgIDsKKyAgICBpZihlbmQgPT0gaGRidWYgfHwgZW5kID09IGxpbmVfZW5kKQorICAgICAgZ290byBmYWlsOworICAgIGhsZW4gPSBlbmQgLSBoZGJ1ZjsKKworICAgIGlmKGhsZW4gPT0gNCAmJiBzdHJuY2FzZWNvbXBhcmUoImhvc3QiLCBoZGJ1ZiwgNCkpIHsKKyAgICAgIGF1dGhvcml0eV9pZHggPSBpOworICAgICAgbnZhW2ldLm5hbWUgPSAodW5zaWduZWQgY2hhciAqKSI6YXV0aG9yaXR5IjsKKyAgICAgIG52YVtpXS5uYW1lX2xlbiA9IHN0cmxlbigoY2hhciAqKW52YVtpXS5uYW1lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBudmFbaV0ubmFtZV9sZW4gPSAoc2l6ZV90KShlbmQgLSBoZGJ1Zik7CisgICAgICAvKiBMb3dlciBjYXNlIHRoZSBoZWFkZXIgbmFtZSBmb3IgSFRUUC8zICovCisgICAgICBDdXJsX3N0cm50b2xvd2VyKChjaGFyICopaGRidWYsIGhkYnVmLCBudmFbaV0ubmFtZV9sZW4pOworICAgICAgbnZhW2ldLm5hbWUgPSAodW5zaWduZWQgY2hhciAqKWhkYnVmOworICAgIH0KKyAgICBoZGJ1ZiA9IGVuZCArIDE7CisgICAgd2hpbGUoKmhkYnVmID09ICcgJyB8fCAqaGRidWYgPT0gJ1x0JykKKyAgICAgICsraGRidWY7CisgICAgZW5kID0gbGluZV9lbmQ7CisKKyNpZiAwIC8qIFRoaXMgc2hvdWxkIHByb2JhYmx5IGdvIGluIG1vcmUgb3IgbGVzcyBsaWtlIHRoaXMgKi8KKyAgICBzd2l0Y2goaW5zcGVjdF9oZWFkZXIoKGNvbnN0IGNoYXIgKiludmFbaV0ubmFtZSwgbnZhW2ldLm5hbWVsZW4sIGhkYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgLSBoZGJ1ZikpIHsKKyAgICBjYXNlIEhFQURFUklOU1RfSUdOT1JFOgorICAgICAgLyogc2tpcCBoZWFkZXIgZmllbGRzIHByb2hpYml0ZWQgYnkgSFRUUC8yIHNwZWNpZmljYXRpb24uICovCisgICAgICAtLW5oZWFkZXI7CisgICAgICBjb250aW51ZTsKKyAgICBjYXNlIEhFQURFUklOU1RfVEVfVFJBSUxFUlM6CisgICAgICBudmFbaV0udmFsdWUgPSAodWludDhfdCopInRyYWlsZXJzIjsKKyAgICAgIG52YVtpXS52YWx1ZV9sZW4gPSBzaXplb2YoInRyYWlsZXJzIikgLSAxOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIG52YVtpXS52YWx1ZSA9ICh1bnNpZ25lZCBjaGFyICopaGRidWY7CisgICAgICBudmFbaV0udmFsdWVfbGVuID0gKHNpemVfdCkoZW5kIC0gaGRidWYpOworICAgIH0KKyNlbmRpZgorICAgIG52YVtpXS52YWx1ZSA9ICh1bnNpZ25lZCBjaGFyICopaGRidWY7CisgICAgbnZhW2ldLnZhbHVlX2xlbiA9IChzaXplX3QpKGVuZCAtIGhkYnVmKTsKKworICAgICsraTsKKyAgfQorCisgIC8qIDphdXRob3JpdHkgbXVzdCBjb21lIGJlZm9yZSBub24tcHNldWRvIGhlYWRlciBmaWVsZHMgKi8KKyAgaWYoYXV0aG9yaXR5X2lkeCAhPSAwICYmIGF1dGhvcml0eV9pZHggIT0gQVVUSE9SSVRZX0RTVF9JRFgpIHsKKyAgICBxdWljaGVfaDNfaGVhZGVyIGF1dGhvcml0eSA9IG52YVthdXRob3JpdHlfaWR4XTsKKyAgICBmb3IoaSA9IGF1dGhvcml0eV9pZHg7IGkgPiBBVVRIT1JJVFlfRFNUX0lEWDsgLS1pKSB7CisgICAgICBudmFbaV0gPSBudmFbaSAtIDFdOworICAgIH0KKyAgICBudmFbaV0gPSBhdXRob3JpdHk7CisgIH0KKworICAvKiBXYXJuIHN0cmVhbSBtYXkgYmUgcmVqZWN0ZWQgaWYgY3VtdWxhdGl2ZSBsZW5ndGggb2YgaGVhZGVycyBpcyB0b28KKyAgICAgbGFyZ2UuICovCisjZGVmaW5lIE1BWF9BQ0MgNjAwMDAgIC8qIDw2NEtCIHRvIGFjY291bnQgZm9yIHNvbWUgb3ZlcmhlYWQgKi8KKyAgeworICAgIHNpemVfdCBhY2MgPSAwOworCisgICAgZm9yKGkgPSAwOyBpIDwgbmhlYWRlcjsgKytpKSB7CisgICAgICBhY2MgKz0gbnZhW2ldLm5hbWVfbGVuICsgbnZhW2ldLnZhbHVlX2xlbjsKKworICAgICAgSDNCVUdGKGluZm9mKGRhdGEsICJoMyBbJS4qczogJS4qc11cbiIsCisgICAgICAgICAgICAgICAgICAgbnZhW2ldLm5hbWVfbGVuLCBudmFbaV0ubmFtZSwKKyAgICAgICAgICAgICAgICAgICBudmFbaV0udmFsdWVfbGVuLCBudmFbaV0udmFsdWUpKTsKKyAgICB9CisKKyAgICBpZihhY2MgPiBNQVhfQUNDKSB7CisgICAgICBpbmZvZihkYXRhLCAiaHR0cF9yZXF1ZXN0OiBXYXJuaW5nOiBUaGUgY3VtdWxhdGl2ZSBsZW5ndGggb2YgYWxsICIKKyAgICAgICAgICAgICJoZWFkZXJzIGV4Y2VlZHMgJXp1IGJ5dGVzIGFuZCB0aGF0IGNvdWxkIGNhdXNlIHRoZSAiCisgICAgICAgICAgICAic3RyZWFtIHRvIGJlIHJlamVjdGVkLlxuIiwgTUFYX0FDQyk7CisgICAgfQorICB9CisKKyAgc3dpdGNoKGRhdGEtPnNldC5odHRwcmVxKSB7CisgIGNhc2UgSFRUUFJFUV9QT1NUOgorICBjYXNlIEhUVFBSRVFfUE9TVF9GT1JNOgorICBjYXNlIEhUVFBSRVFfUE9TVF9NSU1FOgorICBjYXNlIEhUVFBSRVFfUFVUOgorICAgIGlmKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgIT0gLTEpCisgICAgICBzdHJlYW0tPnVwbG9hZF9sZWZ0ID0gZGF0YS0+c3RhdGUuaW5maWxlc2l6ZTsKKyAgICBlbHNlCisgICAgICAvKiBkYXRhIHNlbmRpbmcgd2l0aG91dCBzcGVjaWZ5aW5nIHRoZSBkYXRhIGFtb3VudCB1cCBmcm9udCAqLworICAgICAgc3RyZWFtLT51cGxvYWRfbGVmdCA9IC0xOyAvKiB1bmtub3duLCBidXQgbm90IHplcm8gKi8KKworICAgIHN0cmVhbTNfaWQgPSBxdWljaGVfaDNfc2VuZF9yZXF1ZXN0KHFzLT5oM2MsIHFzLT5jb25uLCBudmEsIG5oZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT51cGxvYWRfbGVmdCA/IEZBTFNFOiBUUlVFKTsKKyAgICBpZigoc3RyZWFtM19pZCA+PSAwKSAmJiBkYXRhLT5zZXQucG9zdGZpZWxkcykgeworICAgICAgc3NpemVfdCBzZW50ID0gcXVpY2hlX2gzX3NlbmRfYm9keShxcy0+aDNjLCBxcy0+Y29ubiwgc3RyZWFtM19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ4X3QgKilkYXRhLT5zZXQucG9zdGZpZWxkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT51cGxvYWRfbGVmdCwgVFJVRSk7CisgICAgICBpZihzZW50IDw9IDApIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgInF1aWNoZV9oM19zZW5kX2JvZHkgZmFpbGVkISIpOworICAgICAgICByZXN1bHQgPSBDVVJMRV9TRU5EX0VSUk9SOworICAgICAgfQorICAgICAgc3RyZWFtLT51cGxvYWRfbGVmdCA9IDA7IC8qIG5vdGhpbmcgbGVmdCB0byBzZW5kICovCisgICAgfQorICAgIGJyZWFrOworICBkZWZhdWx0OgorICAgIHN0cmVhbTNfaWQgPSBxdWljaGVfaDNfc2VuZF9yZXF1ZXN0KHFzLT5oM2MsIHFzLT5jb25uLCBudmEsIG5oZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisgICAgYnJlYWs7CisgIH0KKworICBDdXJsX3NhZmVmcmVlKG52YSk7CisKKyAgaWYoc3RyZWFtM19pZCA8IDApIHsKKyAgICBIM0JVR0YoaW5mb2YoZGF0YSwgInF1aWNoZV9oM19zZW5kX3JlcXVlc3QgcmV0dXJuZWQgJWRcbiIsCisgICAgICAgICAgICAgICAgIHN0cmVhbTNfaWQpKTsKKyAgICByZXN1bHQgPSBDVVJMRV9TRU5EX0VSUk9SOworICAgIGdvdG8gZmFpbDsKKyAgfQorCisgIGluZm9mKGRhdGEsICJVc2luZyBIVFRQLzMgU3RyZWFtIElEOiAleCAoZWFzeSBoYW5kbGUgJXApXG4iLAorICAgICAgICBzdHJlYW0zX2lkLCAodm9pZCAqKWRhdGEpOworICBzdHJlYW0tPnN0cmVhbTNfaWQgPSBzdHJlYW0zX2lkOworCisgIHJldHVybiBDVVJMRV9PSzsKKworZmFpbDoKKyAgZnJlZShudmEpOworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQ2FsbGVkIGZyb20gdHJhbnNmZXIuYzpkb25lX3NlbmRpbmcgd2hlbiB3ZSBzdG9wIEhUVFAvMyB1cGxvYWRpbmcuCisgKi8KK0NVUkxjb2RlIEN1cmxfcXVpY19kb25lX3NlbmRpbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQoreworICBpZihjb25uLT5oYW5kbGVyID09ICZDdXJsX2hhbmRsZXJfaHR0cDMpIHsKKyAgICAvKiBvbmx5IGZvciBIVFRQLzMgdHJhbnNmZXJzICovCisgICAgc3NpemVfdCBzZW50OworICAgIHN0cnVjdCBIVFRQICpzdHJlYW0gPSBjb25uLT5kYXRhLT5yZXEucHJvdG9wOworICAgIHN0cnVjdCBxdWljc29ja2V0ICpxcyA9IGNvbm4tPnF1aWM7CisgICAgZnByaW50ZihzdGRlcnIsICIhISEgQ3VybF9xdWljX2RvbmVfc2VuZGluZ1xuIik7CisgICAgc3RyZWFtLT51cGxvYWRfZG9uZSA9IFRSVUU7CisgICAgc2VudCA9IHF1aWNoZV9oM19zZW5kX2JvZHkocXMtPmgzYywgcXMtPmNvbm4sIHN0cmVhbS0+c3RyZWFtM19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCBUUlVFKTsKKyAgICBpZihzZW50IDwgMCkKKyAgICAgIHJldHVybiBDVVJMRV9TRU5EX0VSUk9SOworICB9CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogQ2FsbGVkIGZyb20gaHR0cC5jOkN1cmxfaHR0cF9kb25lIHdoZW4gYSByZXF1ZXN0IGNvbXBsZXRlcy4KKyAqLwordm9pZCBDdXJsX3F1aWNfZG9uZShzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLCBib29sIHByZW1hdHVyZSkKK3sKKyAgKHZvaWQpZGF0YTsKKyAgKHZvaWQpcHJlbWF0dXJlOworfQorCisvKgorICogQ2FsbGVkIGZyb20gdHJhbnNmZXIuYzpkYXRhX3BlbmRpbmcgdG8ga25vdyBpZiB3ZSBzaG91bGQga2VlcCBsb29waW5nCisgKiB0byByZWNlaXZlIG1vcmUgZGF0YSBmcm9tIHRoZSBjb25uZWN0aW9uLgorICovCitib29sIEN1cmxfcXVpY19kYXRhX3BlbmRpbmcoY29uc3Qgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSkKK3sKKyAgKHZvaWQpZGF0YTsKKyAgcmV0dXJuIEZBTFNFOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZxdWljL3F1aWNoZS5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnF1aWMvcXVpY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhkMTgzNwotLS0gL2Rldi9udWxsCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3ZxdWljL3F1aWNoZS5oCkBAIC0wLDAgKzEsNDkgQEAKKyNpZm5kZWYgSEVBREVSX0NVUkxfVlFVSUNfUVVJQ0hFX0gKKyNkZWZpbmUgSEVBREVSX0NVUkxfVlFVSUNfUVVJQ0hFX0gKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmZGVmIFVTRV9RVUlDSEUKKworI2luY2x1ZGUgPHF1aWNoZS5oPgorCitzdHJ1Y3QgcXVpY19oYW5kc2hha2UgeworICBjaGFyICpidWY7ICAgICAgIC8qIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciAqLworICBzaXplX3QgYWxsb2NsZW47IC8qIHNpemUgb2YgYWxsb2NhdGlvbiAqLworICBzaXplX3QgbGVuOyAgICAgIC8qIHNpemUgb2YgY29udGVudCBpbiBidWZmZXIgKi8KKyAgc2l6ZV90IG5yZWFkOyAgICAvKiBob3cgbWFueSBieXRlcyBoYXZlIGJlZW4gcmVhZCAqLworfTsKKworc3RydWN0IHF1aWNzb2NrZXQgeworICBxdWljaGVfY29uZmlnICpjZmc7CisgIHF1aWNoZV9jb25uICpjb25uOworICBxdWljaGVfaDNfY29ubiAqaDNjOworICBxdWljaGVfaDNfY29uZmlnICpoM2NvbmZpZzsKKyAgdWludDhfdCBzY2lkW1FVSUNIRV9NQVhfQ09OTl9JRF9MRU5dOworICB1aW50MzJfdCB2ZXJzaW9uOworfTsKKworI2VuZGlmCisKKyNlbmRpZiAvKiBIRUFERVJfQ1VSTF9WUVVJQ19RVUlDSEVfSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnNzaC9saWJzc2guYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Zzc2gvbGlic3NoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3YjRkNAotLS0gL2Rldi9udWxsCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Zzc2gvbGlic3NoLmMKQEAgLTAsMCArMSwyODM2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgLSAyMDIwIFJlZCBIYXQsIEluYy4KKyAqCisgKiBBdXRob3JzOiBOaWtvcyBNYXZyb2dpYW5ub3BvdWxvcywgVG9tYXMgTXJheiwgU3RhbmlzbGF2IFppZGVrLAorICogICAgICAgICAgUm9iZXJ0IEtvbGN1biwgQW5kcmVhcyBTY2huZWlkZXIKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWZkZWYgVVNFX0xJQlNTSAorCisjaW5jbHVkZSA8bGltaXRzLmg+CisKKyNpbmNsdWRlIDxsaWJzc2gvbGlic3NoLmg+CisjaW5jbHVkZSA8bGlic3NoL3NmdHAuaD4KKworI2lmZGVmIEhBVkVfRkNOVExfSAorI2luY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9BUlBBX0lORVRfSAorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9VVFNOQU1FX0gKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVREQl9ICisjaW5jbHVkZSA8bmV0ZGIuaD4KKyNlbmRpZgorI2lmZGVmIF9fVk1TCisjaW5jbHVkZSA8aW4uaD4KKyNpbmNsdWRlIDxpbmV0Lmg+CisjZW5kaWYKKworI2lmIChkZWZpbmVkKE5FVFdBUkUpICYmIGRlZmluZWQoX19OT1ZFTExfTElCQ19fKSkKKyN1bmRlZiBpbl9hZGRyX3QKKyNkZWZpbmUgaW5fYWRkcl90IHVuc2lnbmVkIGxvbmcKKyNlbmRpZgorCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisjaW5jbHVkZSAidXJsZGF0YS5oIgorI2luY2x1ZGUgInNlbmRmLmgiCisjaW5jbHVkZSAiaG9zdGlwLmgiCisjaW5jbHVkZSAicHJvZ3Jlc3MuaCIKKyNpbmNsdWRlICJ0cmFuc2Zlci5oIgorI2luY2x1ZGUgImVzY2FwZS5oIgorI2luY2x1ZGUgImh0dHAuaCIgICAgICAgICAgICAgICAvKiBmb3IgSFRUUCBwcm94eSB0dW5uZWwgc3R1ZmYgKi8KKyNpbmNsdWRlICJzc2guaCIKKyNpbmNsdWRlICJ1cmwuaCIKKyNpbmNsdWRlICJzcGVlZGNoZWNrLmgiCisjaW5jbHVkZSAiZ2V0aW5mby5oIgorI2luY2x1ZGUgInN0cmR1cC5oIgorI2luY2x1ZGUgInN0cmNhc2UuaCIKKyNpbmNsdWRlICJ2dGxzL3Z0bHMuaCIKKyNpbmNsdWRlICJjb25uZWN0LmgiCisjaW5jbHVkZSAic3RyZXJyb3IuaCIKKyNpbmNsdWRlICJpbmV0X250b3AuaCIKKyNpbmNsdWRlICJwYXJzZWRhdGUuaCIgICAgICAgICAgLyogZm9yIHRoZSB3ZWVrIGRheSBhbmQgbW9udGggbmFtZXMgKi8KKyNpbmNsdWRlICJzb2NrYWRkci5oIiAgICAgICAgICAgLyogcmVxdWlyZWQgZm9yIEN1cmxfc29ja2FkZHJfc3RvcmFnZSAqLworI2luY2x1ZGUgInN0cnRvb2ZmdC5oIgorI2luY2x1ZGUgIm11bHRpaWYuaCIKKyNpbmNsdWRlICJzZWxlY3QuaCIKKyNpbmNsdWRlICJ3YXJubGVzcy5oIgorCisvKiBmb3IgcGVybWlzc2lvbiBhbmQgb3BlbiBmbGFncyAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorI2luY2x1ZGUgImN1cmxfcGF0aC5oIgorCisvKiBBIHJlY2VudCBtYWNybyBwcm92aWRlZCBieSBsaWJzc2guIE9yIG1ha2Ugb3VyIG93bi4gKi8KKyNpZm5kZWYgU1NIX1NUUklOR19GUkVFX0NIQVIKKyNkZWZpbmUgU1NIX1NUUklOR19GUkVFX0NIQVIoeCkgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZih4KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHNzaF9zdHJpbmdfZnJlZV9jaGFyKHgpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHggPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSB3aGlsZSgwKQorI2VuZGlmCisKKy8qIExvY2FsIGZ1bmN0aW9uczogKi8KK3N0YXRpYyBDVVJMY29kZSBteXNzaF9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7CitzdGF0aWMgQ1VSTGNvZGUgbXlzc2hfbXVsdGlfc3RhdGVtYWNoKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9uZSk7CitzdGF0aWMgQ1VSTGNvZGUgbXlzc2hfZG9faXQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKTsKKworc3RhdGljIENVUkxjb2RlIHNjcF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMY29kZSwgYm9vbCBwcmVtYXR1cmUpOworc3RhdGljIENVUkxjb2RlIHNjcF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvcGhhc2VfZG9uZSk7CitzdGF0aWMgQ1VSTGNvZGUgc2NwX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVhZF9jb25uZWN0aW9uKTsKKworc3RhdGljIENVUkxjb2RlIHNmdHBfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlLCBib29sIHByZW1hdHVyZSk7CitzdGF0aWMgQ1VSTGNvZGUgc2Z0cF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpOworc3RhdGljIENVUkxjb2RlIHNmdHBfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZCk7CitzdGF0aWMKK0NVUkxjb2RlIHNmdHBfcGVyZm9ybShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqY29ubmVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvcGhhc2VfZG9uZSk7CisKK3N0YXRpYyB2b2lkIHNmdHBfcXVvdGUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKK3N0YXRpYyB2b2lkIHNmdHBfcXVvdGVfc3RhdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOworc3RhdGljIGludCBteXNzaF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29jayk7CitzdGF0aWMgaW50IG15c3NoX3BlcmZvcm1fZ2V0c29jayhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrKTsKKworc3RhdGljIENVUkxjb2RlIG15c3NoX3NldHVwX2Nvbm5lY3Rpb24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKKworLyoKKyAqIFNDUCBwcm90b2NvbCBoYW5kbGVyLgorICovCisKK2NvbnN0IHN0cnVjdCBDdXJsX2hhbmRsZXIgQ3VybF9oYW5kbGVyX3NjcCA9IHsKKyAgIlNDUCIsICAgICAgICAgICAgICAgICAgICAgICAgLyogc2NoZW1lICovCisgIG15c3NoX3NldHVwX2Nvbm5lY3Rpb24sICAgICAgIC8qIHNldHVwX2Nvbm5lY3Rpb24gKi8KKyAgbXlzc2hfZG9faXQsICAgICAgICAgICAgICAgICAgLyogZG9faXQgKi8KKyAgc2NwX2RvbmUsICAgICAgICAgICAgICAgICAgICAgLyogZG9uZSAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAvKiBkb19tb3JlICovCisgIG15c3NoX2Nvbm5lY3QsICAgICAgICAgICAgICAgIC8qIGNvbm5lY3RfaXQgKi8KKyAgbXlzc2hfbXVsdGlfc3RhdGVtYWNoLCAgICAgICAgLyogY29ubmVjdGluZyAqLworICBzY3BfZG9pbmcsICAgICAgICAgICAgICAgICAgICAvKiBkb2luZyAqLworICBteXNzaF9nZXRzb2NrLCAgICAgICAgICAgICAgICAvKiBwcm90b19nZXRzb2NrICovCisgIG15c3NoX2dldHNvY2ssICAgICAgICAgICAgICAgIC8qIGRvaW5nX2dldHNvY2sgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgLyogZG9tb3JlX2dldHNvY2sgKi8KKyAgbXlzc2hfcGVyZm9ybV9nZXRzb2NrLCAgICAgICAgLyogcGVyZm9ybV9nZXRzb2NrICovCisgIHNjcF9kaXNjb25uZWN0LCAgICAgICAgICAgICAgIC8qIGRpc2Nvbm5lY3QgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgLyogcmVhZHdyaXRlICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3Rpb25fY2hlY2sgKi8KKyAgUE9SVF9TU0gsICAgICAgICAgICAgICAgICAgICAgLyogZGVmcG9ydCAqLworICBDVVJMUFJPVE9fU0NQLCAgICAgICAgICAgICAgICAvKiBwcm90b2NvbCAqLworICBQUk9UT1BUX0RJUkxPQ0sgfCBQUk9UT1BUX0NMT1NFQUNUSU9OIHwgUFJPVE9QVF9OT1VSTFFVRVJZICAgIC8qIGZsYWdzICovCit9OworCisvKgorICogU0ZUUCBwcm90b2NvbCBoYW5kbGVyLgorICovCisKK2NvbnN0IHN0cnVjdCBDdXJsX2hhbmRsZXIgQ3VybF9oYW5kbGVyX3NmdHAgPSB7CisgICJTRlRQIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2NoZW1lICovCisgIG15c3NoX3NldHVwX2Nvbm5lY3Rpb24sICAgICAgICAgICAgICAgLyogc2V0dXBfY29ubmVjdGlvbiAqLworICBteXNzaF9kb19pdCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvX2l0ICovCisgIHNmdHBfZG9uZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9uZSAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvX21vcmUgKi8KKyAgbXlzc2hfY29ubmVjdCwgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb25uZWN0X2l0ICovCisgIG15c3NoX211bHRpX3N0YXRlbWFjaCwgICAgICAgICAgICAgICAgLyogY29ubmVjdGluZyAqLworICBzZnRwX2RvaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvaW5nICovCisgIG15c3NoX2dldHNvY2ssICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJvdG9fZ2V0c29jayAqLworICBteXNzaF9nZXRzb2NrLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvaW5nX2dldHNvY2sgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb21vcmVfZ2V0c29jayAqLworICBteXNzaF9wZXJmb3JtX2dldHNvY2ssICAgICAgICAgICAgICAgIC8qIHBlcmZvcm1fZ2V0c29jayAqLworICBzZnRwX2Rpc2Nvbm5lY3QsICAgICAgICAgICAgICAgICAgICAgIC8qIGRpc2Nvbm5lY3QgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZWFkd3JpdGUgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb25uZWN0aW9uX2NoZWNrICovCisgIFBPUlRfU1NILCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGVmcG9ydCAqLworICBDVVJMUFJPVE9fU0ZUUCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHByb3RvY29sICovCisgIFBST1RPUFRfRElSTE9DSyB8IFBST1RPUFRfQ0xPU0VBQ1RJT04KKyAgfCBQUk9UT1BUX05PVVJMUVVFUlkgICAgICAgICAgICAgICAgICAvKiBmbGFncyAqLworfTsKKworc3RhdGljIENVUkxjb2RlIHNmdHBfZXJyb3JfdG9fQ1VSTEUoaW50IGVycikKK3sKKyAgc3dpdGNoKGVycikgeworICAgIGNhc2UgU1NIX0ZYX09LOgorICAgICAgcmV0dXJuIENVUkxFX09LOworCisgICAgY2FzZSBTU0hfRlhfTk9fU1VDSF9GSUxFOgorICAgIGNhc2UgU1NIX0ZYX05PX1NVQ0hfUEFUSDoKKyAgICAgIHJldHVybiBDVVJMRV9SRU1PVEVfRklMRV9OT1RfRk9VTkQ7CisKKyAgICBjYXNlIFNTSF9GWF9QRVJNSVNTSU9OX0RFTklFRDoKKyAgICBjYXNlIFNTSF9GWF9XUklURV9QUk9URUNUOgorICAgICAgcmV0dXJuIENVUkxFX1JFTU9URV9BQ0NFU1NfREVOSUVEOworCisgICAgY2FzZSBTU0hfRlhfRklMRV9BTFJFQURZX0VYSVNUUzoKKyAgICAgIHJldHVybiBDVVJMRV9SRU1PVEVfRklMRV9FWElTVFM7CisKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gQ1VSTEVfU1NIOworfQorCisjaWZuZGVmIERFQlVHQlVJTEQKKyNkZWZpbmUgc3RhdGUoeCx5KSBteXN0YXRlKHgseSkKKyNlbHNlCisjZGVmaW5lIHN0YXRlKHgseSkgbXlzdGF0ZSh4LHksIF9fTElORV9fKQorI2VuZGlmCisKKy8qCisgKiBTU0ggU3RhdGUgbWFjaGluZSByZWxhdGVkIGNvZGUKKyAqLworLyogVGhpcyBpcyB0aGUgT05MWSB3YXkgdG8gY2hhbmdlIFNTSCBzdGF0ZSEgKi8KK3N0YXRpYyB2b2lkIG15c3RhdGUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBzc2hzdGF0ZSBub3dzdGF0ZQorI2lmZGVmIERFQlVHQlVJTEQKKyAgICAgICAgICAgICAgICAgICAgLCBpbnQgbGluZW5vCisjZW5kaWYKKyAgKQoreworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKyNpZiBkZWZpbmVkKERFQlVHQlVJTEQpICYmICFkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCisgIC8qIGZvciBkZWJ1ZyBwdXJwb3NlcyAqLworICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbmFtZXNbXSA9IHsKKyAgICAiU1NIX1NUT1AiLAorICAgICJTU0hfSU5JVCIsCisgICAgIlNTSF9TX1NUQVJUVVAiLAorICAgICJTU0hfSE9TVEtFWSIsCisgICAgIlNTSF9BVVRITElTVCIsCisgICAgIlNTSF9BVVRIX1BLRVlfSU5JVCIsCisgICAgIlNTSF9BVVRIX1BLRVkiLAorICAgICJTU0hfQVVUSF9QQVNTX0lOSVQiLAorICAgICJTU0hfQVVUSF9QQVNTIiwKKyAgICAiU1NIX0FVVEhfQUdFTlRfSU5JVCIsCisgICAgIlNTSF9BVVRIX0FHRU5UX0xJU1QiLAorICAgICJTU0hfQVVUSF9BR0VOVCIsCisgICAgIlNTSF9BVVRIX0hPU1RfSU5JVCIsCisgICAgIlNTSF9BVVRIX0hPU1QiLAorICAgICJTU0hfQVVUSF9LRVlfSU5JVCIsCisgICAgIlNTSF9BVVRIX0tFWSIsCisgICAgIlNTSF9BVVRIX0dTU0FQSSIsCisgICAgIlNTSF9BVVRIX0RPTkUiLAorICAgICJTU0hfU0ZUUF9JTklUIiwKKyAgICAiU1NIX1NGVFBfUkVBTFBBVEgiLAorICAgICJTU0hfU0ZUUF9RVU9URV9JTklUIiwKKyAgICAiU1NIX1NGVFBfUE9TVFFVT1RFX0lOSVQiLAorICAgICJTU0hfU0ZUUF9RVU9URSIsCisgICAgIlNTSF9TRlRQX05FWFRfUVVPVEUiLAorICAgICJTU0hfU0ZUUF9RVU9URV9TVEFUIiwKKyAgICAiU1NIX1NGVFBfUVVPVEVfU0VUU1RBVCIsCisgICAgIlNTSF9TRlRQX1FVT1RFX1NZTUxJTksiLAorICAgICJTU0hfU0ZUUF9RVU9URV9NS0RJUiIsCisgICAgIlNTSF9TRlRQX1FVT1RFX1JFTkFNRSIsCisgICAgIlNTSF9TRlRQX1FVT1RFX1JNRElSIiwKKyAgICAiU1NIX1NGVFBfUVVPVEVfVU5MSU5LIiwKKyAgICAiU1NIX1NGVFBfUVVPVEVfU1RBVFZGUyIsCisgICAgIlNTSF9TRlRQX0dFVElORk8iLAorICAgICJTU0hfU0ZUUF9GSUxFVElNRSIsCisgICAgIlNTSF9TRlRQX1RSQU5TX0lOSVQiLAorICAgICJTU0hfU0ZUUF9VUExPQURfSU5JVCIsCisgICAgIlNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQiLAorICAgICJTU0hfU0ZUUF9DUkVBVEVfRElSUyIsCisgICAgIlNTSF9TRlRQX0NSRUFURV9ESVJTX01LRElSIiwKKyAgICAiU1NIX1NGVFBfUkVBRERJUl9JTklUIiwKKyAgICAiU1NIX1NGVFBfUkVBRERJUiIsCisgICAgIlNTSF9TRlRQX1JFQURESVJfTElOSyIsCisgICAgIlNTSF9TRlRQX1JFQURESVJfQk9UVE9NIiwKKyAgICAiU1NIX1NGVFBfUkVBRERJUl9ET05FIiwKKyAgICAiU1NIX1NGVFBfRE9XTkxPQURfSU5JVCIsCisgICAgIlNTSF9TRlRQX0RPV05MT0FEX1NUQVQiLAorICAgICJTU0hfU0ZUUF9DTE9TRSIsCisgICAgIlNTSF9TRlRQX1NIVVRET1dOIiwKKyAgICAiU1NIX1NDUF9UUkFOU19JTklUIiwKKyAgICAiU1NIX1NDUF9VUExPQURfSU5JVCIsCisgICAgIlNTSF9TQ1BfRE9XTkxPQURfSU5JVCIsCisgICAgIlNTSF9TQ1BfRE9XTkxPQUQiLAorICAgICJTU0hfU0NQX0RPTkUiLAorICAgICJTU0hfU0NQX1NFTkRfRU9GIiwKKyAgICAiU1NIX1NDUF9XQUlUX0VPRiIsCisgICAgIlNTSF9TQ1BfV0FJVF9DTE9TRSIsCisgICAgIlNTSF9TQ1BfQ0hBTk5FTF9GUkVFIiwKKyAgICAiU1NIX1NFU1NJT05fRElTQ09OTkVDVCIsCisgICAgIlNTSF9TRVNTSU9OX0ZSRUUiLAorICAgICJRVUlUIgorICB9OworCisKKyAgaWYoc3NoYy0+c3RhdGUgIT0gbm93c3RhdGUpIHsKKyAgICBpbmZvZihjb25uLT5kYXRhLCAiU1NIICVwIHN0YXRlIGNoYW5nZSBmcm9tICVzIHRvICVzIChsaW5lICVkKVxuIiwKKyAgICAgICAgICAodm9pZCAqKSBzc2hjLCBuYW1lc1tzc2hjLT5zdGF0ZV0sIG5hbWVzW25vd3N0YXRlXSwKKyAgICAgICAgICBsaW5lbm8pOworICB9CisjZW5kaWYKKworICBzc2hjLT5zdGF0ZSA9IG5vd3N0YXRlOworfQorCisvKiBNdWx0aXBsZSBvcHRpb25zOgorICogMS4gZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDVdIGlzIHNldCB3aXRoIGFuIE1ENQorICogICAgaGFzaCAoOTBzIHN0eWxlIGF1dGgsIG5vdCBzdXJlIHdlIHNob3VsZCBoYXZlIGl0IGhlcmUpCisgKiAyLiBkYXRhLT5zZXQuc3NoX2tleWZ1bmMgY2FsbGJhY2sgaXMgc2V0LiBUaGVuIHdlIGRvIHRydXN0IG9uIGZpcnN0CisgKiAgICB1c2UuIFdlIGV2ZW4gc2F2ZSBvbiBrbm93bmhvc3RzIGlmIENVUkxLSFNUQVRfRklORV9BRERfVE9fRklMRQorICogICAgaXMgcmV0dXJuZWQgYnkgaXQuCisgKiAzLiBub25lIG9mIHRoZSBhYm92ZS4gV2Ugb25seSBhY2NlcHQgaWYgaXQgaXMgcHJlc2VudCBvbiBrbm93biBob3N0cy4KKyAqCisgKiBSZXR1cm5zIFNTSF9PSyBvciBTU0hfRVJST1IuCisgKi8KK3N0YXRpYyBpbnQgbXlzc2hfaXNfa25vd24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQoreworICBpbnQgcmM7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKyAgc3NoX2tleSBwdWJrZXk7CisgIHNpemVfdCBobGVuOworICB1bnNpZ25lZCBjaGFyICpoYXNoID0gTlVMTDsKKyAgY2hhciAqZm91bmRfYmFzZTY0ID0gTlVMTDsKKyAgY2hhciAqa25vd25fYmFzZTY0ID0gTlVMTDsKKyAgaW50IHZzdGF0ZTsKKyAgZW51bSBjdXJsX2tobWF0Y2gga2V5bWF0Y2g7CisgIHN0cnVjdCBjdXJsX2toa2V5IGZvdW5ka2V5OworICBzdHJ1Y3QgY3VybF9raGtleSAqa25vd25rZXlwID0gTlVMTDsKKyAgY3VybF9zc2hrZXljYWxsYmFjayBmdW5jID0KKyAgICBkYXRhLT5zZXQuc3NoX2tleWZ1bmM7CisKKyNpZiBMSUJTU0hfVkVSU0lPTl9JTlQgPj0gU1NIX1ZFUlNJT05fSU5UKDAsOSwwKQorICBzdHJ1Y3Qgc3NoX2tub3duaG9zdHNfZW50cnkgKmtub3duaG9zdHNlbnRyeSA9IE5VTEw7CisgIHN0cnVjdCBjdXJsX2toa2V5IGtub3dua2V5OworI2VuZGlmCisKKyNpZiBMSUJTU0hfVkVSU0lPTl9JTlQgPj0gU1NIX1ZFUlNJT05fSU5UKDAsOCwwKQorICByYyA9IHNzaF9nZXRfc2VydmVyX3B1YmxpY2tleShzc2hjLT5zc2hfc2Vzc2lvbiwgJnB1YmtleSk7CisjZWxzZQorICByYyA9IHNzaF9nZXRfcHVibGlja2V5KHNzaGMtPnNzaF9zZXNzaW9uLCAmcHVia2V5KTsKKyNlbmRpZgorICBpZihyYyAhPSBTU0hfT0spCisgICAgcmV0dXJuIHJjOworCisgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1XSkgeworICAgIHJjID0gc3NoX2dldF9wdWJsaWNrZXlfaGFzaChwdWJrZXksIFNTSF9QVUJMSUNLRVlfSEFTSF9NRDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYXNoLCAmaGxlbik7CisgICAgaWYocmMgIT0gU1NIX09LKQorICAgICAgZ290byBjbGVhbnVwOworCisgICAgaWYoaGxlbiAhPSBzdHJsZW4oZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDVdKSB8fAorICAgICAgIG1lbWNtcCgmZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDVdLCBoYXNoLCBobGVuKSkgeworICAgICAgcmMgPSBTU0hfRVJST1I7CisgICAgICBnb3RvIGNsZWFudXA7CisgICAgfQorCisgICAgcmMgPSBTU0hfT0s7CisgICAgZ290byBjbGVhbnVwOworICB9CisKKyAgaWYoZGF0YS0+c2V0LnNzbC5wcmltYXJ5LnZlcmlmeWhvc3QgIT0gVFJVRSkgeworICAgIHJjID0gU1NIX09LOworICAgIGdvdG8gY2xlYW51cDsKKyAgfQorCisjaWYgTElCU1NIX1ZFUlNJT05fSU5UID49IFNTSF9WRVJTSU9OX0lOVCgwLDksMCkKKyAgLyogR2V0IHRoZSBrbm93bl9rZXkgZnJvbSB0aGUga25vd24gaG9zdHMgZmlsZSAqLworICB2c3RhdGUgPSBzc2hfc2Vzc2lvbl9nZXRfa25vd25faG9zdHNfZW50cnkoc3NoYy0+c3NoX3Nlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma25vd25ob3N0c2VudHJ5KTsKKworICAvKiBDYXNlIGFuIGVudHJ5IHdhcyBmb3VuZCBpbiBhIGtub3duIGhvc3RzIGZpbGUgKi8KKyAgaWYoa25vd25ob3N0c2VudHJ5KSB7CisgICAgaWYoa25vd25ob3N0c2VudHJ5LT5wdWJsaWNrZXkpIHsKKyAgICAgIHJjID0gc3NoX3BraV9leHBvcnRfcHVia2V5X2Jhc2U2NChrbm93bmhvc3RzZW50cnktPnB1YmxpY2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma25vd25fYmFzZTY0KTsKKyAgICAgIGlmKHJjICE9IFNTSF9PSykgeworICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICB9CisgICAgICBrbm93bmtleS5rZXkgPSBrbm93bl9iYXNlNjQ7CisgICAgICBrbm93bmtleS5sZW4gPSBzdHJsZW4oa25vd25fYmFzZTY0KTsKKworICAgICAgc3dpdGNoKHNzaF9rZXlfdHlwZShrbm93bmhvc3RzZW50cnktPnB1YmxpY2tleSkpIHsKKyAgICAgICAgY2FzZSBTU0hfS0VZVFlQRV9SU0E6CisgICAgICAgICAga25vd25rZXkua2V5dHlwZSA9IENVUkxLSFRZUEVfUlNBOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNTSF9LRVlUWVBFX1JTQTE6CisgICAgICAgICAga25vd25rZXkua2V5dHlwZSA9IENVUkxLSFRZUEVfUlNBMTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTU0hfS0VZVFlQRV9FQ0RTQToKKyAgICAgICAgICBrbm93bmtleS5rZXl0eXBlID0gQ1VSTEtIVFlQRV9FQ0RTQTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTU0hfS0VZVFlQRV9FRDI1NTE5OgorICAgICAgICAgIGtub3dua2V5LmtleXR5cGUgPSBDVVJMS0hUWVBFX0VEMjU1MTk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1NIX0tFWVRZUEVfRFNTOgorICAgICAgICAgIGtub3dua2V5LmtleXR5cGUgPSBDVVJMS0hUWVBFX0RTUzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICByYyA9IFNTSF9FUlJPUjsKKyAgICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICB9CisgICAgICBrbm93bmtleXAgPSAma25vd25rZXk7CisgICAgfQorICB9CisKKyAgc3dpdGNoKHZzdGF0ZSkgeworICAgIGNhc2UgU1NIX0tOT1dOX0hPU1RTX09LOgorICAgICAga2V5bWF0Y2ggPSBDVVJMS0hNQVRDSF9PSzsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgU1NIX0tOT1dOX0hPU1RTX09USEVSOgorICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIFNTSF9LTk9XTl9IT1NUU19OT1RfRk9VTkQ6CisgICAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgIGNhc2UgU1NIX0tOT1dOX0hPU1RTX1VOS05PV046CisgICAgICAvKiBmYWxsdGhyb3VnaCAqLworICAgIGNhc2UgU1NIX0tOT1dOX0hPU1RTX0VSUk9SOgorICAgICAga2V5bWF0Y2ggPSBDVVJMS0hNQVRDSF9NSVNTSU5HOworICAgICAgYnJlYWs7CisgIGRlZmF1bHQ6CisgICAgICBrZXltYXRjaCA9IENVUkxLSE1BVENIX01JU01BVENIOworICAgICAgYnJlYWs7CisgIH0KKworI2Vsc2UKKyAgdnN0YXRlID0gc3NoX2lzX3NlcnZlcl9rbm93bihzc2hjLT5zc2hfc2Vzc2lvbik7CisgIHN3aXRjaCh2c3RhdGUpIHsKKyAgICBjYXNlIFNTSF9TRVJWRVJfS05PV05fT0s6CisgICAgICBrZXltYXRjaCA9IENVUkxLSE1BVENIX09LOworICAgICAgYnJlYWs7CisgICAgY2FzZSBTU0hfU0VSVkVSX0ZJTEVfTk9UX0ZPVU5EOgorICAgICAgLyogZmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIFNTSF9TRVJWRVJfTk9UX0tOT1dOOgorICAgICAga2V5bWF0Y2ggPSBDVVJMS0hNQVRDSF9NSVNTSU5HOworICAgICAgYnJlYWs7CisgIGRlZmF1bHQ6CisgICAgICBrZXltYXRjaCA9IENVUkxLSE1BVENIX01JU01BVENIOworICAgICAgYnJlYWs7CisgIH0KKyNlbmRpZgorCisgIGlmKGZ1bmMpIHsgLyogdXNlIGNhbGxiYWNrIHRvIGRldGVybWluZSBhY3Rpb24gKi8KKyAgICByYyA9IHNzaF9wa2lfZXhwb3J0X3B1YmtleV9iYXNlNjQocHVia2V5LCAmZm91bmRfYmFzZTY0KTsKKyAgICBpZihyYyAhPSBTU0hfT0spCisgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICBmb3VuZGtleS5rZXkgPSBmb3VuZF9iYXNlNjQ7CisgICAgZm91bmRrZXkubGVuID0gc3RybGVuKGZvdW5kX2Jhc2U2NCk7CisKKyAgICBzd2l0Y2goc3NoX2tleV90eXBlKHB1YmtleSkpIHsKKyAgICAgIGNhc2UgU1NIX0tFWVRZUEVfUlNBOgorICAgICAgICBmb3VuZGtleS5rZXl0eXBlID0gQ1VSTEtIVFlQRV9SU0E7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBTU0hfS0VZVFlQRV9SU0ExOgorICAgICAgICBmb3VuZGtleS5rZXl0eXBlID0gQ1VSTEtIVFlQRV9SU0ExOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgU1NIX0tFWVRZUEVfRUNEU0E6CisgICAgICAgIGZvdW5ka2V5LmtleXR5cGUgPSBDVVJMS0hUWVBFX0VDRFNBOworICAgICAgICBicmVhazsKKyNpZiBMSUJTU0hfVkVSU0lPTl9JTlQgPj0gU1NIX1ZFUlNJT05fSU5UKDAsNywwKQorICAgICAgY2FzZSBTU0hfS0VZVFlQRV9FRDI1NTE5OgorICAgICAgICBmb3VuZGtleS5rZXl0eXBlID0gQ1VSTEtIVFlQRV9FRDI1NTE5OworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgY2FzZSBTU0hfS0VZVFlQRV9EU1M6CisgICAgICAgIGZvdW5ka2V5LmtleXR5cGUgPSBDVVJMS0hUWVBFX0RTUzsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICByYyA9IFNTSF9FUlJPUjsKKyAgICAgICAgZ290byBjbGVhbnVwOworICAgIH0KKworICAgIEN1cmxfc2V0X2luX2NhbGxiYWNrKGRhdGEsIHRydWUpOworICAgIHJjID0gZnVuYyhkYXRhLCBrbm93bmtleXAsIC8qIGZyb20gdGhlIGtub3duaG9zdHMgZmlsZSAqLworICAgICAgICAgICAgICAmZm91bmRrZXksIC8qIGZyb20gdGhlIHJlbW90ZSBob3N0ICovCisgICAgICAgICAgICAgIGtleW1hdGNoLCBkYXRhLT5zZXQuc3NoX2tleWZ1bmNfdXNlcnApOworICAgIEN1cmxfc2V0X2luX2NhbGxiYWNrKGRhdGEsIGZhbHNlKTsKKworICAgIHN3aXRjaChyYykgeworICAgICAgY2FzZSBDVVJMS0hTVEFUX0ZJTkVfQUREX1RPX0ZJTEU6CisjaWYgTElCU1NIX1ZFUlNJT05fSU5UID49IFNTSF9WRVJTSU9OX0lOVCgwLDgsMCkKKyAgICAgICAgcmMgPSBzc2hfc2Vzc2lvbl91cGRhdGVfa25vd25faG9zdHMoc3NoYy0+c3NoX3Nlc3Npb24pOworI2Vsc2UKKyAgICAgICAgcmMgPSBzc2hfd3JpdGVfa25vd25ob3N0KHNzaGMtPnNzaF9zZXNzaW9uKTsKKyNlbmRpZgorICAgICAgICBpZihyYyAhPSBTU0hfT0spIHsKKyAgICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIENVUkxLSFNUQVRfRklORToKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OiAvKiBSRUpFQ1QvREVGRVIgKi8KKyAgICAgICAgcmMgPSBTU0hfRVJST1I7CisgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgaWYoa2V5bWF0Y2ggIT0gQ1VSTEtITUFUQ0hfT0spIHsKKyAgICAgIHJjID0gU1NIX0VSUk9SOworICAgICAgZ290byBjbGVhbnVwOworICAgIH0KKyAgfQorICByYyA9IFNTSF9PSzsKKworY2xlYW51cDoKKyAgaWYoZm91bmRfYmFzZTY0KSB7CisgICAgZnJlZShmb3VuZF9iYXNlNjQpOworICB9CisgIGlmKGtub3duX2Jhc2U2NCkgeworICAgIGZyZWUoa25vd25fYmFzZTY0KTsKKyAgfQorICBpZihoYXNoKQorICAgIHNzaF9jbGVhbl9wdWJrZXlfaGFzaCgmaGFzaCk7CisgIHNzaF9rZXlfZnJlZShwdWJrZXkpOworI2lmIExJQlNTSF9WRVJTSU9OX0lOVCA+PSBTU0hfVkVSU0lPTl9JTlQoMCw5LDApCisgIGlmKGtub3duaG9zdHNlbnRyeSkgeworICAgIHNzaF9rbm93bmhvc3RzX2VudHJ5X2ZyZWUoa25vd25ob3N0c2VudHJ5KTsKKyAgfQorI2VuZGlmCisgIHJldHVybiByYzsKK30KKworI2RlZmluZSBNT1ZFX1RPX0VSUk9SX1NUQVRFKF9yKSB7IFwKKyAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRElTQ09OTkVDVCk7IFwKKyAgc3NoYy0+YWN0dWFsY29kZSA9IF9yOyBcCisgIHJjID0gU1NIX0VSUk9SOyBcCisgIGJyZWFrOyBcCit9CisKKyNkZWZpbmUgTU9WRV9UT19TRlRQX0NMT1NFX1NUQVRFKCkgeyBcCisgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsgXAorICBzc2hjLT5hY3R1YWxjb2RlID0gc2Z0cF9lcnJvcl90b19DVVJMRShzZnRwX2dldF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pKTsgXAorICByYyA9IFNTSF9FUlJPUjsgXAorICBicmVhazsgXAorfQorCisjZGVmaW5lIE1PVkVfVE9fTEFTVF9BVVRIIFwKKyAgaWYoc3NoYy0+YXV0aF9tZXRob2RzICYgU1NIX0FVVEhfTUVUSE9EX1BBU1NXT1JEKSB7IFwKKyAgICByYyA9IFNTSF9PSzsgXAorICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX1BBU1NfSU5JVCk7IFwKKyAgICBicmVhazsgXAorICB9IFwKKyAgZWxzZSB7IFwKKyAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX0xPR0lOX0RFTklFRCk7IFwKKyAgfQorCisjZGVmaW5lIE1PVkVfVE9fVEVSVElBUllfQVVUSCBcCisgIGlmKHNzaGMtPmF1dGhfbWV0aG9kcyAmIFNTSF9BVVRIX01FVEhPRF9JTlRFUkFDVElWRSkgeyBcCisgICAgcmMgPSBTU0hfT0s7IFwKKyAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9LRVlfSU5JVCk7IFwKKyAgICBicmVhazsgXAorICB9IFwKKyAgZWxzZSB7IFwKKyAgICBNT1ZFX1RPX0xBU1RfQVVUSDsgXAorICB9CisKKyNkZWZpbmUgTU9WRV9UT19TRUNPTkRBUllfQVVUSCBcCisgIGlmKHNzaGMtPmF1dGhfbWV0aG9kcyAmIFNTSF9BVVRIX01FVEhPRF9HU1NBUElfTUlDKSB7IFwKKyAgICByYyA9IFNTSF9PSzsgXAorICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0dTU0FQSSk7IFwKKyAgICBicmVhazsgXAorICB9IFwKKyAgZWxzZSB7IFwKKyAgICBNT1ZFX1RPX1RFUlRJQVJZX0FVVEg7IFwKKyAgfQorCitzdGF0aWMKK2ludCBteXNzaF9hdXRoX2ludGVyYWN0aXZlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK3sKKyAgaW50IHJjOworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKyAgaW50IG5wcm9tcHRzOworCityZXN0YXJ0OgorICBzd2l0Y2goc3NoYy0+a2JkX3N0YXRlKSB7CisgICAgY2FzZSAwOgorICAgICAgcmMgPSBzc2hfdXNlcmF1dGhfa2JkaW50KHNzaGMtPnNzaF9zZXNzaW9uLCBOVUxMLCBOVUxMKTsKKyAgICAgIGlmKHJjID09IFNTSF9BVVRIX0FHQUlOKQorICAgICAgICByZXR1cm4gU1NIX0FHQUlOOworCisgICAgICBpZihyYyAhPSBTU0hfQVVUSF9JTkZPKQorICAgICAgICByZXR1cm4gU1NIX0VSUk9SOworCisgICAgICBucHJvbXB0cyA9IHNzaF91c2VyYXV0aF9rYmRpbnRfZ2V0bnByb21wdHMoc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgaWYobnByb21wdHMgIT0gMSkKKyAgICAgICAgcmV0dXJuIFNTSF9FUlJPUjsKKworICAgICAgcmMgPSBzc2hfdXNlcmF1dGhfa2JkaW50X3NldGFuc3dlcihzc2hjLT5zc2hfc2Vzc2lvbiwgMCwgY29ubi0+cGFzc3dkKTsKKyAgICAgIGlmKHJjIDwgMCkKKyAgICAgICAgcmV0dXJuIFNTSF9FUlJPUjsKKworICAgIC8qIEZBTExUSFJPVUdIICovCisgICAgY2FzZSAxOgorICAgICAgc3NoYy0+a2JkX3N0YXRlID0gMTsKKworICAgICAgcmMgPSBzc2hfdXNlcmF1dGhfa2JkaW50KHNzaGMtPnNzaF9zZXNzaW9uLCBOVUxMLCBOVUxMKTsKKyAgICAgIGlmKHJjID09IFNTSF9BVVRIX0FHQUlOKQorICAgICAgICByZXR1cm4gU1NIX0FHQUlOOworICAgICAgZWxzZSBpZihyYyA9PSBTU0hfQVVUSF9TVUNDRVNTKQorICAgICAgICByYyA9IFNTSF9PSzsKKyAgICAgIGVsc2UgaWYocmMgPT0gU1NIX0FVVEhfSU5GTykgeworICAgICAgICBucHJvbXB0cyA9IHNzaF91c2VyYXV0aF9rYmRpbnRfZ2V0bnByb21wdHMoc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgICBpZihucHJvbXB0cyAhPSAwKQorICAgICAgICAgIHJldHVybiBTU0hfRVJST1I7CisKKyAgICAgICAgc3NoYy0+a2JkX3N0YXRlID0gMjsKKyAgICAgICAgZ290byByZXN0YXJ0OworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICByYyA9IFNTSF9FUlJPUjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgIHNzaGMtPmtiZF9zdGF0ZSA9IDI7CisKKyAgICAgIHJjID0gc3NoX3VzZXJhdXRoX2tiZGludChzc2hjLT5zc2hfc2Vzc2lvbiwgTlVMTCwgTlVMTCk7CisgICAgICBpZihyYyA9PSBTU0hfQVVUSF9BR0FJTikKKyAgICAgICAgcmV0dXJuIFNTSF9BR0FJTjsKKyAgICAgIGVsc2UgaWYocmMgPT0gU1NIX0FVVEhfU1VDQ0VTUykKKyAgICAgICAgcmMgPSBTU0hfT0s7CisgICAgICBlbHNlCisgICAgICAgIHJjID0gU1NIX0VSUk9SOworCisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIFNTSF9FUlJPUjsKKyAgfQorCisgIHNzaGMtPmtiZF9zdGF0ZSA9IDA7CisgIHJldHVybiByYzsKK30KKworLyoKKyAqIHNzaF9zdGF0ZW1hY2hfYWN0KCkgcnVucyB0aGUgU1NIIHN0YXRlIG1hY2hpbmUgYXMgZmFyIGFzIGl0IGNhbiB3aXRob3V0CisgKiBibG9ja2luZyBhbmQgd2l0aG91dCByZWFjaGluZyB0aGUgZW5kLiAgVGhlIGRhdGEgdGhlIHBvaW50ZXIgJ2Jsb2NrJyBwb2ludHMKKyAqIHRvIHdpbGwgYmUgc2V0IHRvIFRSVUUgaWYgdGhlIGxpYnNzaCBmdW5jdGlvbiByZXR1cm5zIFNTSF9BR0FJTgorICogbWVhbmluZyBpdCB3YW50cyB0byBiZSBjYWxsZWQgYWdhaW4gd2hlbiB0aGUgc29ja2V0IGlzIHJlYWR5CisgKi8KK3N0YXRpYyBDVVJMY29kZSBteXNzaF9zdGF0ZW1hY2hfYWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqYmxvY2spCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKKyAgc3RydWN0IFNTSFBST1RPICpwcm90b3AgPSBkYXRhLT5yZXEucHJvdG9wOworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKyAgY3VybF9zb2NrZXRfdCBzb2NrID0gY29ubi0+c29ja1tGSVJTVFNPQ0tFVF07CisgIGludCByYyA9IFNTSF9OT19FUlJPUiwgZXJyOworICBjaGFyICpuZXdfcmVhZGRpcl9saW5lOworICBpbnQgc2Vla2VyciA9IENVUkxfU0VFS0ZVTkNfT0s7CisgIGNvbnN0IGNoYXIgKmVycl9tc2c7CisgICpibG9jayA9IDA7ICAgICAgICAgICAgICAgICAgIC8qIHdlJ3JlIG5vdCBibG9ja2luZyBieSBkZWZhdWx0ICovCisKKyAgZG8geworCisgICAgc3dpdGNoKHNzaGMtPnN0YXRlKSB7CisgICAgY2FzZSBTU0hfSU5JVDoKKyAgICAgIHNzaGMtPnNlY29uZENyZWF0ZURpcnMgPSAwOworICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09LOworCisjaWYgMAorICAgICAgc3NoX3NldF9sb2dfbGV2ZWwoU1NIX0xPR19QUk9UT0NPTCk7CisjZW5kaWYKKworICAgICAgLyogU2V0IGxpYnNzaCB0byBub24tYmxvY2tpbmcsIHNpbmNlIGV2ZXJ5dGhpbmcgaW50ZXJuYWxseSBpcworICAgICAgICAgbm9uLWJsb2NraW5nICovCisgICAgICBzc2hfc2V0X2Jsb2NraW5nKHNzaGMtPnNzaF9zZXNzaW9uLCAwKTsKKworICAgICAgc3RhdGUoY29ubiwgU1NIX1NfU1RBUlRVUCk7CisgICAgICAvKiBGQUxMVEhST1VHSCAqLworCisgICAgY2FzZSBTU0hfU19TVEFSVFVQOgorICAgICAgcmMgPSBzc2hfY29ubmVjdChzc2hjLT5zc2hfc2Vzc2lvbik7CisgICAgICBpZihyYyA9PSBTU0hfQUdBSU4pCisgICAgICAgIGJyZWFrOworCisgICAgICBpZihyYyAhPSBTU0hfT0spIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgIkZhaWx1cmUgZXN0YWJsaXNoaW5nIHNzaCBzZXNzaW9uIik7CisgICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfRkFJTEVEX0lOSVQpOworICAgICAgfQorCisgICAgICBzdGF0ZShjb25uLCBTU0hfSE9TVEtFWSk7CisKKyAgICAgIC8qIEZBTExUSFJPVUdIICovCisgICAgY2FzZSBTU0hfSE9TVEtFWToKKworICAgICAgcmMgPSBteXNzaF9pc19rbm93bihjb25uKTsKKyAgICAgIGlmKHJjICE9IFNTSF9PSykgeworICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX1BFRVJfRkFJTEVEX1ZFUklGSUNBVElPTik7CisgICAgICB9CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRITElTVCk7CisgICAgICAvKiBGQUxMVEhST1VHSCAqLworICAgIGNhc2UgU1NIX0FVVEhMSVNUOnsKKyAgICAgICAgc3NoYy0+YXV0aGVkID0gRkFMU0U7CisKKyAgICAgICAgcmMgPSBzc2hfdXNlcmF1dGhfbm9uZShzc2hjLT5zc2hfc2Vzc2lvbiwgTlVMTCk7CisgICAgICAgIGlmKHJjID09IFNTSF9BVVRIX0FHQUlOKSB7CisgICAgICAgICAgcmMgPSBTU0hfQUdBSU47CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZihyYyA9PSBTU0hfQVVUSF9TVUNDRVNTKSB7CisgICAgICAgICAgc3NoYy0+YXV0aGVkID0gVFJVRTsKKyAgICAgICAgICBpbmZvZihkYXRhLCAiQXV0aGVudGljYXRlZCB3aXRoIG5vbmVcbiIpOworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0RPTkUpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYocmMgPT0gU1NIX0FVVEhfRVJST1IpIHsKKyAgICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX0xPR0lOX0RFTklFRCk7CisgICAgICAgIH0KKworICAgICAgICBzc2hjLT5hdXRoX21ldGhvZHMgPSBzc2hfdXNlcmF1dGhfbGlzdChzc2hjLT5zc2hfc2Vzc2lvbiwgTlVMTCk7CisgICAgICAgIGlmKHNzaGMtPmF1dGhfbWV0aG9kcyAmIFNTSF9BVVRIX01FVEhPRF9QVUJMSUNLRVkpIHsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9QS0VZX0lOSVQpOworICAgICAgICAgIGluZm9mKGRhdGEsICJBdXRoZW50aWNhdGlvbiB1c2luZyBTU0ggcHVibGljIGtleSBmaWxlXG4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHNzaGMtPmF1dGhfbWV0aG9kcyAmIFNTSF9BVVRIX01FVEhPRF9HU1NBUElfTUlDKSB7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfR1NTQVBJKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHNzaGMtPmF1dGhfbWV0aG9kcyAmIFNTSF9BVVRIX01FVEhPRF9JTlRFUkFDVElWRSkgeworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0tFWV9JTklUKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHNzaGMtPmF1dGhfbWV0aG9kcyAmIFNTSF9BVVRIX01FVEhPRF9QQVNTV09SRCkgeworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX1BBU1NfSU5JVCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgLyogdW5zdXBwb3J0ZWQgYXV0aGVudGljYXRpb24gbWV0aG9kICovCisgICAgICAgICAgTU9WRV9UT19FUlJPUl9TVEFURShDVVJMRV9MT0dJTl9ERU5JRUQpOworICAgICAgICB9CisKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgY2FzZSBTU0hfQVVUSF9QS0VZX0lOSVQ6CisgICAgICBpZighKGRhdGEtPnNldC5zc2hfYXV0aF90eXBlcyAmIENVUkxTU0hfQVVUSF9QVUJMSUNLRVkpKSB7CisgICAgICAgIE1PVkVfVE9fU0VDT05EQVJZX0FVVEg7CisgICAgICB9CisKKyAgICAgIC8qIFR3byBjaG9pY2VzLCAoMSkgcHJpdmF0ZSBrZXkgd2FzIGdpdmVuIG9uIENNRCwKKyAgICAgICAqICgyKSB1c2UgdGhlICJkZWZhdWx0IiBrZXlzLiAqLworICAgICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX1BSSVZBVEVfS0VZXSkgeworICAgICAgICBpZihzc2hjLT5wdWJrZXkgJiYgIWRhdGEtPnNldC5zc2wua2V5X3Bhc3N3ZCkgeworICAgICAgICAgIHJjID0gc3NoX3VzZXJhdXRoX3RyeV9wdWJsaWNrZXkoc3NoYy0+c3NoX3Nlc3Npb24sIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5wdWJrZXkpOworICAgICAgICAgIGlmKHJjID09IFNTSF9BVVRIX0FHQUlOKSB7CisgICAgICAgICAgICByYyA9IFNTSF9BR0FJTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmKHJjICE9IFNTSF9PSykgeworICAgICAgICAgICAgTU9WRV9UT19TRUNPTkRBUllfQVVUSDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByYyA9IHNzaF9wa2lfaW1wb3J0X3ByaXZrZXlfZmlsZShkYXRhLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0LnN0cltTVFJJTkdfU1NIX1BSSVZBVEVfS0VZXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnNzbC5rZXlfcGFzc3dkLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmc3NoYy0+cHJpdmtleSk7CisgICAgICAgIGlmKHJjICE9IFNTSF9PSykgeworICAgICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3QgbG9hZCBwcml2YXRlIGtleSBmaWxlICVzIiwKKyAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfUFJJVkFURV9LRVldKTsKKyAgICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX0xPR0lOX0RFTklFRCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9QS0VZKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByYyA9IHNzaF91c2VyYXV0aF9wdWJsaWNrZXlfYXV0byhzc2hjLT5zc2hfc2Vzc2lvbiwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnNzbC5rZXlfcGFzc3dkKTsKKyAgICAgICAgaWYocmMgPT0gU1NIX0FVVEhfQUdBSU4pIHsKKyAgICAgICAgICByYyA9IFNTSF9BR0FJTjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZihyYyA9PSBTU0hfQVVUSF9TVUNDRVNTKSB7CisgICAgICAgICAgcmMgPSBTU0hfT0s7CisgICAgICAgICAgc3NoYy0+YXV0aGVkID0gVFJVRTsKKyAgICAgICAgICBpbmZvZihkYXRhLCAiQ29tcGxldGVkIHB1YmxpYyBrZXkgYXV0aGVudGljYXRpb25cbiIpOworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0RPTkUpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgTU9WRV9UT19TRUNPTkRBUllfQVVUSDsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgU1NIX0FVVEhfUEtFWToKKyAgICAgIHJjID0gc3NoX3VzZXJhdXRoX3B1YmxpY2tleShzc2hjLT5zc2hfc2Vzc2lvbiwgTlVMTCwgc3NoYy0+cHJpdmtleSk7CisgICAgICBpZihyYyA9PSBTU0hfQVVUSF9BR0FJTikgeworICAgICAgICByYyA9IFNTSF9BR0FJTjsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIGlmKHJjID09IFNTSF9BVVRIX1NVQ0NFU1MpIHsKKyAgICAgICAgc3NoYy0+YXV0aGVkID0gVFJVRTsKKyAgICAgICAgaW5mb2YoZGF0YSwgIkNvbXBsZXRlZCBwdWJsaWMga2V5IGF1dGhlbnRpY2F0aW9uXG4iKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfRE9ORSk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgcHVibGljIGtleSBhdXRoZW50aWNhdGlvbiAocmM6ICVkKVxuIiwgcmMpOworICAgICAgICBNT1ZFX1RPX1NFQ09OREFSWV9BVVRIOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9BVVRIX0dTU0FQSToKKyAgICAgIGlmKCEoZGF0YS0+c2V0LnNzaF9hdXRoX3R5cGVzICYgQ1VSTFNTSF9BVVRIX0dTU0FQSSkpIHsKKyAgICAgICAgTU9WRV9UT19URVJUSUFSWV9BVVRIOworICAgICAgfQorCisgICAgICByYyA9IHNzaF91c2VyYXV0aF9nc3NhcGkoc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgaWYocmMgPT0gU1NIX0FVVEhfQUdBSU4pIHsKKyAgICAgICAgcmMgPSBTU0hfQUdBSU47CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZihyYyA9PSBTU0hfQVVUSF9TVUNDRVNTKSB7CisgICAgICAgIHJjID0gU1NIX09LOworICAgICAgICBzc2hjLT5hdXRoZWQgPSBUUlVFOworICAgICAgICBpbmZvZihkYXRhLCAiQ29tcGxldGVkIGdzc2FwaSBhdXRoZW50aWNhdGlvblxuIik7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0RPTkUpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgTU9WRV9UT19URVJUSUFSWV9BVVRIOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9BVVRIX0tFWV9JTklUOgorICAgICAgaWYoZGF0YS0+c2V0LnNzaF9hdXRoX3R5cGVzICYgQ1VSTFNTSF9BVVRIX0tFWUJPQVJEKSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0tFWSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgTU9WRV9UT19MQVNUX0FVVEg7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX0FVVEhfS0VZOgorCisgICAgICAvKiBBdXRoZW50aWNhdGlvbiBmYWlsZWQuIENvbnRpbnVlIHdpdGgga2V5Ym9hcmQtaW50ZXJhY3RpdmUgbm93LiAqLworICAgICAgcmMgPSBteXNzaF9hdXRoX2ludGVyYWN0aXZlKGNvbm4pOworICAgICAgaWYocmMgPT0gU1NIX0FHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYocmMgPT0gU1NIX09LKSB7CisgICAgICAgIHNzaGMtPmF1dGhlZCA9IFRSVUU7CisgICAgICAgIGluZm9mKGRhdGEsICJjb21wbGV0ZWQga2V5Ym9hcmQgaW50ZXJhY3RpdmUgYXV0aGVudGljYXRpb25cbiIpOworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfRE9ORSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX0FVVEhfUEFTU19JTklUOgorICAgICAgaWYoIShkYXRhLT5zZXQuc3NoX2F1dGhfdHlwZXMgJiBDVVJMU1NIX0FVVEhfUEFTU1dPUkQpKSB7CisgICAgICAgIC8qIEhvc3Qga2V5IGF1dGhlbnRpY2F0aW9uIGlzIGludGVudGlvbmFsbHkgbm90IGltcGxlbWVudGVkICovCisgICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfTE9HSU5fREVOSUVEKTsKKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX1BBU1MpOworICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKworICAgIGNhc2UgU1NIX0FVVEhfUEFTUzoKKyAgICAgIHJjID0gc3NoX3VzZXJhdXRoX3Bhc3N3b3JkKHNzaGMtPnNzaF9zZXNzaW9uLCBOVUxMLCBjb25uLT5wYXNzd2QpOworICAgICAgaWYocmMgPT0gU1NIX0FVVEhfQUdBSU4pIHsKKyAgICAgICAgcmMgPSBTU0hfQUdBSU47CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZihyYyA9PSBTU0hfQVVUSF9TVUNDRVNTKSB7CisgICAgICAgIHNzaGMtPmF1dGhlZCA9IFRSVUU7CisgICAgICAgIGluZm9mKGRhdGEsICJDb21wbGV0ZWQgcGFzc3dvcmQgYXV0aGVudGljYXRpb25cbiIpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9ET05FKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX0xPR0lOX0RFTklFRCk7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX0FVVEhfRE9ORToKKyAgICAgIGlmKCFzc2hjLT5hdXRoZWQpIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgIkF1dGhlbnRpY2F0aW9uIGZhaWx1cmUiKTsKKyAgICAgICAgTU9WRV9UT19FUlJPUl9TVEFURShDVVJMRV9MT0dJTl9ERU5JRUQpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgLyoKKyAgICAgICAqIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBhbiBhdXRoZW50aWNhdGVkIHNzaCBzZXNzaW9uLgorICAgICAgICovCisgICAgICBpbmZvZihkYXRhLCAiQXV0aGVudGljYXRpb24gY29tcGxldGVcbiIpOworCisgICAgICBDdXJsX3BncnNUaW1lKGNvbm4tPmRhdGEsIFRJTUVSX0FQUENPTk5FQ1QpOyAgICAgIC8qIFNTSCBpcyBjb25uZWN0ZWQgKi8KKworICAgICAgY29ubi0+c29ja2ZkID0gc29jazsKKyAgICAgIGNvbm4tPndyaXRlc29ja2ZkID0gQ1VSTF9TT0NLRVRfQkFEOworCisgICAgICBpZihjb25uLT5oYW5kbGVyLT5wcm90b2NvbCA9PSBDVVJMUFJPVE9fU0ZUUCkgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9JTklUKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpbmZvZihkYXRhLCAiU1NIIENPTk5FQ1QgcGhhc2UgZG9uZVxuIik7CisgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfSU5JVDoKKyAgICAgIHNzaF9zZXRfYmxvY2tpbmcoc3NoYy0+c3NoX3Nlc3Npb24sIDEpOworCisgICAgICBzc2hjLT5zZnRwX3Nlc3Npb24gPSBzZnRwX25ldyhzc2hjLT5zc2hfc2Vzc2lvbik7CisgICAgICBpZighc3NoYy0+c2Z0cF9zZXNzaW9uKSB7CisgICAgICAgIGZhaWxmKGRhdGEsICJGYWlsdXJlIGluaXRpYWxpemluZyBzZnRwIHNlc3Npb246ICVzIiwKKyAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOworICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX0NPVUxETlRfQ09OTkVDVCk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICByYyA9IHNmdHBfaW5pdChzc2hjLT5zZnRwX3Nlc3Npb24pOworICAgICAgaWYocmMgIT0gU1NIX09LKSB7CisgICAgICAgIHJjID0gc2Z0cF9nZXRfZXJyb3Ioc3NoYy0+c2Z0cF9zZXNzaW9uKTsKKyAgICAgICAgZmFpbGYoZGF0YSwgIkZhaWx1cmUgaW5pdGlhbGl6aW5nIHNmdHAgc2Vzc2lvbjogJXMiLAorICAgICAgICAgICAgICBzc2hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKSk7CisgICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoc2Z0cF9lcnJvcl90b19DVVJMRShyYykpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQUxQQVRIKTsKKyAgICAgIC8qIEZBTExUSFJPVUdIICovCisgICAgY2FzZSBTU0hfU0ZUUF9SRUFMUEFUSDoKKyAgICAgIC8qCisgICAgICAgKiBHZXQgdGhlICJob21lIiBkaXJlY3RvcnkKKyAgICAgICAqLworICAgICAgc3NoYy0+aG9tZWRpciA9IHNmdHBfY2Fub25pY2FsaXplX3BhdGgoc3NoYy0+c2Z0cF9zZXNzaW9uLCAiLiIpOworICAgICAgaWYoc3NoYy0+aG9tZWRpciA9PSBOVUxMKSB7CisgICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfQ09VTEROVF9DT05ORUNUKTsKKyAgICAgIH0KKyAgICAgIGNvbm4tPmRhdGEtPnN0YXRlLm1vc3RfcmVjZW50X2Z0cF9lbnRyeXBhdGggPSBzc2hjLT5ob21lZGlyOworCisgICAgICAvKiBUaGlzIGlzIHRoZSBsYXN0IHN0ZXAgaW4gdGhlIFNGVFAgY29ubmVjdCBwaGFzZS4gRG8gbm90ZSB0aGF0IHdoaWxlCisgICAgICAgICB3ZSBnZXQgdGhlIGhvbWVkaXIgaGVyZSwgd2UgZ2V0IHRoZSAid29ya2luZ3BhdGgiIGluIHRoZSBETyBhY3Rpb24KKyAgICAgICAgIHNpbmNlIHRoZSBob21lZGlyIHdpbGwgcmVtYWluIHRoZSBzYW1lIGJldHdlZW4gcmVxdWVzdCBidXQgdGhlCisgICAgICAgICB3b3JraW5nIHBhdGggd2lsbCBub3QuICovCisgICAgICBERUJVR0YoaW5mb2YoZGF0YSwgIlNTSCBDT05ORUNUIHBoYXNlIGRvbmVcbiIpKTsKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9JTklUOgorCisgICAgICByZXN1bHQgPSBDdXJsX2dldHdvcmtpbmdwYXRoKGNvbm4sIHNzaGMtPmhvbWVkaXIsICZwcm90b3AtPnBhdGgpOworICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIGlmKGRhdGEtPnNldC5xdW90ZSkgeworICAgICAgICBpbmZvZihkYXRhLCAiU2VuZGluZyBxdW90ZSBjb21tYW5kc1xuIik7CisgICAgICAgIHNzaGMtPnF1b3RlX2l0ZW0gPSBkYXRhLT5zZXQucXVvdGU7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9HRVRJTkZPKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9QT1NUUVVPVEVfSU5JVDoKKyAgICAgIGlmKGRhdGEtPnNldC5wb3N0cXVvdGUpIHsKKyAgICAgICAgaW5mb2YoZGF0YSwgIlNlbmRpbmcgcXVvdGUgY29tbWFuZHNcbiIpOworICAgICAgICBzc2hjLT5xdW90ZV9pdGVtID0gZGF0YS0+c2V0LnBvc3RxdW90ZTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEUpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9RVU9URToKKyAgICAgIC8qIFNlbmQgYW55IHF1b3RlIGNvbW1hbmRzICovCisgICAgICBzZnRwX3F1b3RlKGNvbm4pOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX05FWFRfUVVPVEU6CisgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOworCisgICAgICBzc2hjLT5xdW90ZV9pdGVtID0gc3NoYy0+cXVvdGVfaXRlbS0+bmV4dDsKKworICAgICAgaWYoc3NoYy0+cXVvdGVfaXRlbSkgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgaWYoc3NoYy0+bmV4dHN0YXRlICE9IFNTSF9OT19TVEFURSkgeworICAgICAgICAgIHN0YXRlKGNvbm4sIHNzaGMtPm5leHRzdGF0ZSk7CisgICAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0dFVElORk8pOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfUVVPVEVfU1RBVDoKKyAgICAgIHNmdHBfcXVvdGVfc3RhdChjb25uKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9TRVRTVEFUOgorICAgICAgcmMgPSBzZnRwX3NldHN0YXQoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnF1b3RlX2F0dHJzKTsKKyAgICAgIGlmKHJjICE9IDAgJiYgIXNzaGMtPmFjY2VwdGZhaWwpIHsKKyAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOworICAgICAgICBmYWlsZihkYXRhLCAiQXR0ZW1wdCB0byBzZXQgU0ZUUCBzdGF0cyBmYWlsZWQ6ICVzIiwKKyAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgICAgICAvKiBzc2hjLT5hY3R1YWxjb2RlID0gc2Z0cF9lcnJvcl90b19DVVJMRShlcnIpOworICAgICAgICAgKiB3ZSBkbyBub3Qgc2VuZCB0aGUgYWN0dWFsIGVycm9yOyB3ZSByZXR1cm4KKyAgICAgICAgICogdGhlIGVycm9yIHRoZSBsaWJzc2gyIGJhY2tlbmQgaXMgcmV0dXJuaW5nICovCisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfTkVYVF9RVU9URSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfUVVPVEVfU1lNTElOSzoKKyAgICAgIHJjID0gc2Z0cF9zeW1saW5rKHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDIsCisgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICBpZihyYyAhPSAwICYmICFzc2hjLT5hY2NlcHRmYWlsKSB7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKKyAgICAgICAgZmFpbGYoZGF0YSwgInN5bWxpbmsgY29tbWFuZCBmYWlsZWQ6ICVzIiwKKyAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX01LRElSOgorICAgICAgcmMgPSBzZnRwX21rZGlyKHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDEsCisgICAgICAgICAgICAgICAgICAgICAgKG1vZGVfdClkYXRhLT5zZXQubmV3X2RpcmVjdG9yeV9wZXJtcyk7CisgICAgICBpZihyYyAhPSAwICYmICFzc2hjLT5hY2NlcHRmYWlsKSB7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgICBmYWlsZihkYXRhLCAibWtkaXIgY29tbWFuZCBmYWlsZWQ6ICVzIiwKKyAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1JFTkFNRToKKyAgICAgIHJjID0gc2Z0cF9yZW5hbWUoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cXVvdGVfcGF0aDIpOworICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgeworICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKKyAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7CisgICAgICAgIGZhaWxmKGRhdGEsICJyZW5hbWUgY29tbWFuZCBmYWlsZWQ6ICVzIiwKKyAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1JNRElSOgorICAgICAgcmMgPSBzZnRwX3JtZGlyKHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgeworICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKKyAgICAgICAgZmFpbGYoZGF0YSwgInJtZGlyIGNvbW1hbmQgZmFpbGVkOiAlcyIsCisgICAgICAgICAgICAgIHNzaF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9VTkxJTks6CisgICAgICByYyA9IHNmdHBfdW5saW5rKHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgeworICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKKyAgICAgICAgZmFpbGYoZGF0YSwgInJtIGNvbW1hbmQgZmFpbGVkOiAlcyIsCisgICAgICAgICAgICAgIHNzaF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9TVEFUVkZTOgorICAgIHsKKyAgICAgIHNmdHBfc3RhdHZmc190IHN0YXR2ZnM7CisKKyAgICAgIHN0YXR2ZnMgPSBzZnRwX3N0YXR2ZnMoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICBpZighc3RhdHZmcyAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgeworICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKKyAgICAgICAgZmFpbGYoZGF0YSwgInN0YXR2ZnMgY29tbWFuZCBmYWlsZWQ6ICVzIiwKKyAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoc3RhdHZmcykgeworICAgICAgICBjaGFyICp0bXAgPSBhcHJpbnRmKCJzdGF0dmZzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2JzaXplOiAlbGx1XG4iICJmX2Zyc2l6ZTogJWxsdVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2Jsb2NrczogJWxsdVxuIiAiZl9iZnJlZTogJWxsdVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2JhdmFpbDogJWxsdVxuIiAiZl9maWxlczogJWxsdVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2ZmcmVlOiAlbGx1XG4iICJmX2ZhdmFpbDogJWxsdVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2ZzaWQ6ICVsbHVcbiIgImZfZmxhZzogJWxsdVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX25hbWVtYXg6ICVsbHVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9ic2l6ZSwgc3RhdHZmcy0+Zl9mcnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9ibG9ja3MsIHN0YXR2ZnMtPmZfYmZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9iYXZhaWwsIHN0YXR2ZnMtPmZfZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9mZnJlZSwgc3RhdHZmcy0+Zl9mYXZhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9mc2lkLCBzdGF0dmZzLT5mX2ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy0+Zl9uYW1lbWF4KTsKKyAgICAgICAgc2Z0cF9zdGF0dmZzX2ZyZWUoc3RhdHZmcyk7CisKKyAgICAgICAgaWYoIXRtcCkgeworICAgICAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0hFQURFUiwgdG1wLCBzdHJsZW4odG1wKSk7CisgICAgICAgIGZyZWUodG1wKTsKKyAgICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OworICAgICAgICB9CisgICAgICB9CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU1NIX1NGVFBfR0VUSU5GTzoKKyAgICAgIGlmKGRhdGEtPnNldC5nZXRfZmlsZXRpbWUpIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfRklMRVRJTUUpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1RSQU5TX0lOSVQpOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX0ZJTEVUSU1FOgorICAgIHsKKyAgICAgIHNmdHBfYXR0cmlidXRlcyBhdHRyczsKKworICAgICAgYXR0cnMgPSBzZnRwX3N0YXQoc3NoYy0+c2Z0cF9zZXNzaW9uLCBwcm90b3AtPnBhdGgpOworICAgICAgaWYoYXR0cnMgIT0gMCkgeworICAgICAgICBkYXRhLT5pbmZvLmZpbGV0aW1lID0gYXR0cnMtPm10aW1lOworICAgICAgICBzZnRwX2F0dHJpYnV0ZXNfZnJlZShhdHRycyk7CisgICAgICB9CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1RSQU5TX0lOSVQpOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTU0hfU0ZUUF9UUkFOU19JTklUOgorICAgICAgaWYoZGF0YS0+c2V0LnVwbG9hZCkKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVVBMT0FEX0lOSVQpOworICAgICAgZWxzZSB7CisgICAgICAgIGlmKHByb3RvcC0+cGF0aFtzdHJsZW4ocHJvdG9wLT5wYXRoKS0xXSA9PSAnLycpCisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUl9JTklUKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0RPV05MT0FEX0lOSVQpOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1VQTE9BRF9JTklUOgorICAgIHsKKyAgICAgIGludCBmbGFnczsKKworICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gIT0gMCkgeworICAgICAgICBzZnRwX2F0dHJpYnV0ZXMgYXR0cnM7CisKKyAgICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPCAwKSB7CisgICAgICAgICAgYXR0cnMgPSBzZnRwX3N0YXQoc3NoYy0+c2Z0cF9zZXNzaW9uLCBwcm90b3AtPnBhdGgpOworICAgICAgICAgIGlmKGF0dHJzICE9IDApIHsKKyAgICAgICAgICAgIGN1cmxfb2ZmX3Qgc2l6ZSA9IGF0dHJzLT5zaXplOworICAgICAgICAgICAgaWYoc2l6ZSA8IDApIHsKKyAgICAgICAgICAgICAgZmFpbGYoZGF0YSwgIkJhZCBmaWxlIHNpemUgKCUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikiLCBzaXplKTsKKyAgICAgICAgICAgICAgTU9WRV9UT19FUlJPUl9TVEFURShDVVJMRV9CQURfRE9XTkxPQURfUkVTVU1FKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tID0gYXR0cnMtPnNpemU7CisKKyAgICAgICAgICAgIHNmdHBfYXR0cmlidXRlc19mcmVlKGF0dHJzKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA9IDA7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmKGRhdGEtPnNldC5mdHBfYXBwZW5kKQorICAgICAgICAvKiBUcnkgdG8gb3BlbiBmb3IgYXBwZW5kLCBidXQgY3JlYXRlIGlmIG5vbmV4aXN0aW5nICovCisgICAgICAgIGZsYWdzID0gT19XUk9OTFl8T19DUkVBVHxPX0FQUEVORDsKKyAgICAgIGVsc2UgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPiAwKQorICAgICAgICAvKiBJZiB3ZSBoYXZlIHJlc3RhcnQgcG9zaXRpb24gdGhlbiBvcGVuIGZvciBhcHBlbmQgKi8KKyAgICAgICAgZmxhZ3MgPSBPX1dST05MWXxPX0FQUEVORDsKKyAgICAgIGVsc2UKKyAgICAgICAgLyogQ2xlYXIgZmlsZSBiZWZvcmUgd3JpdGluZyAobm9ybWFsIGJlaGF2aW91cikgKi8KKyAgICAgICAgZmxhZ3MgPSBPX1dST05MWXxPX0NSRUFUfE9fVFJVTkM7CisKKyAgICAgIGlmKHNzaGMtPnNmdHBfZmlsZSkKKyAgICAgICAgc2Z0cF9jbG9zZShzc2hjLT5zZnRwX2ZpbGUpOworICAgICAgc3NoYy0+c2Z0cF9maWxlID0KKyAgICAgICAgc2Z0cF9vcGVuKHNzaGMtPnNmdHBfc2Vzc2lvbiwgcHJvdG9wLT5wYXRoLAorICAgICAgICAgICAgICAgICAgZmxhZ3MsIChtb2RlX3QpZGF0YS0+c2V0Lm5ld19maWxlX3Blcm1zKTsKKyAgICAgIGlmKCFzc2hjLT5zZnRwX2ZpbGUpIHsKKyAgICAgICAgZXJyID0gc2Z0cF9nZXRfZXJyb3Ioc3NoYy0+c2Z0cF9zZXNzaW9uKTsKKworICAgICAgICBpZigoKGVyciA9PSBTU0hfRlhfTk9fU1VDSF9GSUxFIHx8IGVyciA9PSBTU0hfRlhfRkFJTFVSRSB8fAorICAgICAgICAgICAgIGVyciA9PSBTU0hfRlhfTk9fU1VDSF9QQVRIKSkgJiYKKyAgICAgICAgICAgICAoZGF0YS0+c2V0LmZ0cF9jcmVhdGVfbWlzc2luZ19kaXJzICYmCisgICAgICAgICAgICAgKHN0cmxlbihwcm90b3AtPnBhdGgpID4gMSkpKSB7CisgICAgICAgICAgICAgICAvKiB0cnkgdG8gY3JlYXRlIHRoZSBwYXRoIHJlbW90ZWx5ICovCisgICAgICAgICAgICAgICByYyA9IDA7CisgICAgICAgICAgICAgICBzc2hjLT5zZWNvbmRDcmVhdGVEaXJzID0gMTsKKyAgICAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQpOworICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgTU9WRV9UT19TRlRQX0NMT1NFX1NUQVRFKCk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLyogSWYgd2UgaGF2ZSBhIHJlc3RhcnQgcG9pbnQgdGhlbiB3ZSBuZWVkIHRvIHNlZWsgdG8gdGhlIGNvcnJlY3QKKyAgICAgICAgIHBvc2l0aW9uLiAqLworICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPiAwKSB7CisgICAgICAgIC8qIExldCdzIHJlYWQgb2ZmIHRoZSBwcm9wZXIgYW1vdW50IG9mIGJ5dGVzIGZyb20gdGhlIGlucHV0LiAqLworICAgICAgICBpZihjb25uLT5zZWVrX2Z1bmMpIHsKKyAgICAgICAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCB0cnVlKTsKKyAgICAgICAgICBzZWVrZXJyID0gY29ubi0+c2Vla19mdW5jKGNvbm4tPnNlZWtfY2xpZW50LCBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFRUtfU0VUKTsKKyAgICAgICAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBpZihzZWVrZXJyICE9IENVUkxfU0VFS0ZVTkNfT0spIHsKKyAgICAgICAgICBjdXJsX29mZl90IHBhc3NlZCA9IDA7CisKKyAgICAgICAgICBpZihzZWVrZXJyICE9IENVUkxfU0VFS0ZVTkNfQ0FOVFNFRUspIHsKKyAgICAgICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3Qgc2VlayBzdHJlYW0iKTsKKyAgICAgICAgICAgIHJldHVybiBDVVJMRV9GVFBfQ09VTEROVF9VU0VfUkVTVDsKKyAgICAgICAgICB9CisgICAgICAgICAgLyogc2Vla2VyciA9PSBDVVJMX1NFRUtGVU5DX0NBTlRTRUVLIChjYW4ndCBzZWVrIHRvIG9mZnNldCkgKi8KKyAgICAgICAgICBkbyB7CisgICAgICAgICAgICBzaXplX3QgcmVhZHRoaXNhbW91bnRub3cgPQorICAgICAgICAgICAgICAoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gLSBwYXNzZWQgPiBkYXRhLT5zZXQuYnVmZmVyX3NpemUpID8KKyAgICAgICAgICAgICAgKHNpemVfdClkYXRhLT5zZXQuYnVmZmVyX3NpemUgOgorICAgICAgICAgICAgICBjdXJseF9zb3RvdXooZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gLSBwYXNzZWQpOworCisgICAgICAgICAgICBzaXplX3QgYWN0dWFsbHlyZWFkID0KKyAgICAgICAgICAgICAgZGF0YS0+c3RhdGUuZnJlYWRfZnVuYyhkYXRhLT5zdGF0ZS5idWZmZXIsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHRoaXNhbW91bnRub3csIGRhdGEtPnN0YXRlLmluKTsKKworICAgICAgICAgICAgcGFzc2VkICs9IGFjdHVhbGx5cmVhZDsKKyAgICAgICAgICAgIGlmKChhY3R1YWxseXJlYWQgPT0gMCkgfHwgKGFjdHVhbGx5cmVhZCA+IHJlYWR0aGlzYW1vdW50bm93KSkgeworICAgICAgICAgICAgICAvKiB0aGlzIGNoZWNrcyBmb3IgZ3JlYXRlci10aGFuIG9ubHkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgIENVUkxfUkVBREZVTkNfQUJPUlQgcmV0dXJuIGNvZGUgc3RpbGwgYWJvcnRzICovCisgICAgICAgICAgICAgIGZhaWxmKGRhdGEsICJGYWlsZWQgdG8gcmVhZCBkYXRhIik7CisgICAgICAgICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfRlRQX0NPVUxETlRfVVNFX1JFU1QpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0gd2hpbGUocGFzc2VkIDwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pOworICAgICAgICB9CisKKyAgICAgICAgLyogbm93LCBkZWNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgcmVhZCAqLworICAgICAgICBpZihkYXRhLT5zdGF0ZS5pbmZpbGVzaXplID4gMCkgeworICAgICAgICAgIGRhdGEtPnN0YXRlLmluZmlsZXNpemUgLT0gZGF0YS0+c3RhdGUucmVzdW1lX2Zyb207CisgICAgICAgICAgZGF0YS0+cmVxLnNpemUgPSBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplOworICAgICAgICAgIEN1cmxfcGdyc1NldFVwbG9hZFNpemUoZGF0YSwgZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSk7CisgICAgICAgIH0KKworICAgICAgICByYyA9IHNmdHBfc2VlazY0KHNzaGMtPnNmdHBfZmlsZSwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pOworICAgICAgICBpZihyYyAhPSAwKSB7CisgICAgICAgICAgTU9WRV9UT19TRlRQX0NMT1NFX1NUQVRFKCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgPiAwKSB7CisgICAgICAgIGRhdGEtPnJlcS5zaXplID0gZGF0YS0+c3RhdGUuaW5maWxlc2l6ZTsKKyAgICAgICAgQ3VybF9wZ3JzU2V0VXBsb2FkU2l6ZShkYXRhLCBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplKTsKKyAgICAgIH0KKyAgICAgIC8qIHVwbG9hZCBkYXRhICovCisgICAgICBDdXJsX3NldHVwX3RyYW5zZmVyKGRhdGEsIC0xLCAtMSwgRkFMU0UsIEZJUlNUU09DS0VUKTsKKworICAgICAgLyogbm90IHNldCBieSBDdXJsX3NldHVwX3RyYW5zZmVyIHRvIHByZXNlcnZlIGtlZXBvbiBiaXRzICovCisgICAgICBjb25uLT5zb2NrZmQgPSBjb25uLT53cml0ZXNvY2tmZDsKKworICAgICAgLyogc3RvcmUgdGhpcyBvcmlnaW5hbCBiaXRtYXNrIHNldHVwIHRvIHVzZSBsYXRlciBvbiBpZiB3ZSBjYW4ndAorICAgICAgICAgZmlndXJlIG91dCBhICJyZWFsIiBiaXRtYXNrICovCisgICAgICBzc2hjLT5vcmlnX3dhaXRmb3IgPSBkYXRhLT5yZXEua2VlcG9uOworCisgICAgICAvKiB3ZSB3YW50IHRvIHVzZSB0aGUgX3NlbmRpbmdfIGZ1bmN0aW9uIGV2ZW4gd2hlbiB0aGUgc29ja2V0IHR1cm5zCisgICAgICAgICBvdXQgcmVhZGFibGUgYXMgdGhlIHVuZGVybHlpbmcgbGlic3NoIHNmdHAgc2VuZCBmdW5jdGlvbiB3aWxsIGRlYWwKKyAgICAgICAgIHdpdGggYm90aCBhY2NvcmRpbmdseSAqLworICAgICAgY29ubi0+Y3NlbGVjdF9iaXRzID0gQ1VSTF9DU0VMRUNUX09VVDsKKworICAgICAgLyogc2luY2Ugd2UgZG9uJ3QgcmVhbGx5IHdhaXQgZm9yIGFueXRoaW5nIGF0IHRoaXMgcG9pbnQsIHdlIHdhbnQgdGhlCisgICAgICAgICBzdGF0ZSBtYWNoaW5lIHRvIG1vdmUgb24gYXMgc29vbiBhcyBwb3NzaWJsZSBzbyB3ZSBzZXQgYSB2ZXJ5IHNob3J0CisgICAgICAgICB0aW1lb3V0IGhlcmUgKi8KKyAgICAgIEN1cmxfZXhwaXJlKGRhdGEsIDAsIEVYUElSRV9SVU5fTk9XKTsKKworICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTU0hfU0ZUUF9DUkVBVEVfRElSU19JTklUOgorICAgICAgaWYoc3RybGVuKHByb3RvcC0+cGF0aCkgPiAxKSB7CisgICAgICAgIHNzaGMtPnNsYXNoX3BvcyA9IHByb3RvcC0+cGF0aCArIDE7IC8qIGlnbm9yZSB0aGUgbGVhZGluZyAnLycgKi8KKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ1JFQVRFX0RJUlMpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1VQTE9BRF9JTklUKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9DUkVBVEVfRElSUzoKKyAgICAgIHNzaGMtPnNsYXNoX3BvcyA9IHN0cmNocihzc2hjLT5zbGFzaF9wb3MsICcvJyk7CisgICAgICBpZihzc2hjLT5zbGFzaF9wb3MpIHsKKyAgICAgICAgKnNzaGMtPnNsYXNoX3BvcyA9IDA7CisKKyAgICAgICAgaW5mb2YoZGF0YSwgIkNyZWF0aW5nIGRpcmVjdG9yeSAnJXMnXG4iLCBwcm90b3AtPnBhdGgpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DUkVBVEVfRElSU19NS0RJUik7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVVBMT0FEX0lOSVQpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX0NSRUFURV9ESVJTX01LRElSOgorICAgICAgLyogJ21vZGUnIC0gcGFyYW1ldGVyIGlzIHByZWxpbWluYXJ5IC0gZGVmYXVsdCB0byAwNjQ0ICovCisgICAgICByYyA9IHNmdHBfbWtkaXIoc3NoYy0+c2Z0cF9zZXNzaW9uLCBwcm90b3AtPnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgKG1vZGVfdClkYXRhLT5zZXQubmV3X2RpcmVjdG9yeV9wZXJtcyk7CisgICAgICAqc3NoYy0+c2xhc2hfcG9zID0gJy8nOworICAgICAgKytzc2hjLT5zbGFzaF9wb3M7CisgICAgICBpZihyYyA8IDApIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogQWJvcnQgaWYgZmFpbHVyZSB3YXNuJ3QgdGhhdCB0aGUgZGlyIGFscmVhZHkgZXhpc3RzIG9yIHRoZQorICAgICAgICAgKiBwZXJtaXNzaW9uIHdhcyBkZW5pZWQgKGNyZWF0aW9uIG1pZ2h0IHN1Y2NlZWQgZnVydGhlciBkb3duIHRoZQorICAgICAgICAgKiBwYXRoKSAtIHJldHJ5IG9uIHVuc3BlY2lmaWMgRkFJTFVSRSBhbHNvCisgICAgICAgICAqLworICAgICAgICBlcnIgPSBzZnRwX2dldF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOworICAgICAgICBpZigoZXJyICE9IFNTSF9GWF9GSUxFX0FMUkVBRFlfRVhJU1RTKSAmJgorICAgICAgICAgICAoZXJyICE9IFNTSF9GWF9GQUlMVVJFKSAmJgorICAgICAgICAgICAoZXJyICE9IFNTSF9GWF9QRVJNSVNTSU9OX0RFTklFRCkpIHsKKyAgICAgICAgICBNT1ZFX1RPX1NGVFBfQ0xPU0VfU1RBVEUoKTsKKyAgICAgICAgfQorICAgICAgICByYyA9IDA7IC8qIGNsZWFyIHJjIGFuZCBjb250aW51ZSAqLworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ1JFQVRFX0RJUlMpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1JFQURESVJfSU5JVDoKKyAgICAgIEN1cmxfcGdyc1NldERvd25sb2FkU2l6ZShkYXRhLCAtMSk7CisgICAgICBpZihkYXRhLT5zZXQub3B0X25vX2JvZHkpIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgLyoKKyAgICAgICAqIFRoaXMgaXMgYSBkaXJlY3RvcnkgdGhhdCB3ZSBhcmUgdHJ5aW5nIHRvIGdldCwgc28gcHJvZHVjZSBhIGRpcmVjdG9yeQorICAgICAgICogbGlzdGluZworICAgICAgICovCisgICAgICBzc2hjLT5zZnRwX2RpciA9IHNmdHBfb3BlbmRpcihzc2hjLT5zZnRwX3Nlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3AtPnBhdGgpOworICAgICAgaWYoIXNzaGMtPnNmdHBfZGlyKSB7CisgICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgZm9yIHJlYWRpbmc6ICVzIiwKKyAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOworICAgICAgICBNT1ZFX1RPX1NGVFBfQ0xPU0VfU1RBVEUoKTsKKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQURESVIpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1JFQURESVI6CisKKyAgICAgIGlmKHNzaGMtPnJlYWRkaXJfYXR0cnMpCisgICAgICAgIHNmdHBfYXR0cmlidXRlc19mcmVlKHNzaGMtPnJlYWRkaXJfYXR0cnMpOworCisgICAgICBzc2hjLT5yZWFkZGlyX2F0dHJzID0gc2Z0cF9yZWFkZGlyKHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+c2Z0cF9kaXIpOworICAgICAgaWYoc3NoYy0+cmVhZGRpcl9hdHRycykgeworICAgICAgICBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lID0gc3NoYy0+cmVhZGRpcl9hdHRycy0+bmFtZTsKKyAgICAgICAgc3NoYy0+cmVhZGRpcl9sb25nZW50cnkgPSBzc2hjLT5yZWFkZGlyX2F0dHJzLT5sb25nbmFtZTsKKyAgICAgICAgc3NoYy0+cmVhZGRpcl9sZW4gPSBzdHJsZW4oc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7CisKKyAgICAgICAgaWYoZGF0YS0+c2V0LmZ0cF9saXN0X29ubHkpIHsKKyAgICAgICAgICBjaGFyICp0bXBMaW5lOworCisgICAgICAgICAgdG1wTGluZSA9IGFwcmludGYoIiVzXG4iLCBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lKTsKKyAgICAgICAgICBpZih0bXBMaW5lID09IE5VTEwpIHsKKyAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wTGluZSwgc3NoYy0+cmVhZGRpcl9sZW4gKyAxKTsKKyAgICAgICAgICBmcmVlKHRtcExpbmUpOworCisgICAgICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgLyogc2luY2UgdGhpcyBjb3VudHMgd2hhdCB3ZSBzZW5kIHRvIHRoZSBjbGllbnQsIHdlIGluY2x1ZGUgdGhlCisgICAgICAgICAgICAgbmV3bGluZSBpbiB0aGlzIGNvdW50ZXIgKi8KKyAgICAgICAgICBkYXRhLT5yZXEuYnl0ZWNvdW50ICs9IHNzaGMtPnJlYWRkaXJfbGVuICsgMTsKKworICAgICAgICAgIC8qIG91dHB1dCBkZWJ1ZyBvdXRwdXQgaWYgdGhhdCBpcyByZXF1ZXN0ZWQgKi8KKyAgICAgICAgICBpZihkYXRhLT5zZXQudmVyYm9zZSkgeworICAgICAgICAgICAgQ3VybF9kZWJ1ZyhkYXRhLCBDVVJMSU5GT19EQVRBX09VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xlbik7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHNzaGMtPnJlYWRkaXJfY3VyckxlbiA9IHN0cmxlbihzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSk7CisgICAgICAgICAgc3NoYy0+cmVhZGRpcl90b3RhbExlbiA9IDgwICsgc3NoYy0+cmVhZGRpcl9jdXJyTGVuOworICAgICAgICAgIHNzaGMtPnJlYWRkaXJfbGluZSA9IGNhbGxvYyhzc2hjLT5yZWFkZGlyX3RvdGFsTGVuLCAxKTsKKyAgICAgICAgICBpZighc3NoYy0+cmVhZGRpcl9saW5lKSB7CisgICAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKworICAgICAgICAgIG1lbWNweShzc2hjLT5yZWFkZGlyX2xpbmUsIHNzaGMtPnJlYWRkaXJfbG9uZ2VudHJ5LAorICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4pOworICAgICAgICAgIGlmKChzc2hjLT5yZWFkZGlyX2F0dHJzLT5mbGFncyAmIFNTSF9GSUxFWEZFUl9BVFRSX1BFUk1JU1NJT05TKSAmJgorICAgICAgICAgICAgICgoc3NoYy0+cmVhZGRpcl9hdHRycy0+cGVybWlzc2lvbnMgJiBTX0lGTVQpID09CisgICAgICAgICAgICAgIFNfSUZMTkspKSB7CisgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xpbmtQYXRoID0gbWFsbG9jKFBBVEhfTUFYICsgMSk7CisgICAgICAgICAgICBpZihzc2hjLT5yZWFkZGlyX2xpbmtQYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1zbnByaW50Zihzc2hjLT5yZWFkZGlyX2xpbmtQYXRoLCBQQVRIX01BWCwgIiVzJXMiLCBwcm90b3AtPnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7CisKKyAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQURESVJfTElOSyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUl9CT1RUT00pOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmKHNmdHBfZGlyX2VvZihzc2hjLT5zZnRwX2RpcikpIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUl9ET05FKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgIkNvdWxkIG5vdCBvcGVuIHJlbW90ZSBmaWxlIGZvciByZWFkaW5nOiAlcyIsCisgICAgICAgICAgICAgIHNzaF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pKTsKKyAgICAgICAgTU9WRV9UT19TRlRQX0NMT1NFX1NUQVRFKCk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1JFQURESVJfTElOSzoKKyAgICAgIGlmKHNzaGMtPnJlYWRkaXJfbGlua19hdHRycykKKyAgICAgICAgc2Z0cF9hdHRyaWJ1dGVzX2ZyZWUoc3NoYy0+cmVhZGRpcl9saW5rX2F0dHJzKTsKKworICAgICAgc3NoYy0+cmVhZGRpcl9saW5rX2F0dHJzID0gc2Z0cF9sc3RhdChzc2hjLT5zZnRwX3Nlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfbGlua1BhdGgpOworICAgICAgaWYoc3NoYy0+cmVhZGRpcl9saW5rX2F0dHJzID09IDApIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgIkNvdWxkIG5vdCByZWFkIHN5bWxpbmsgZm9yIHJlYWRpbmc6ICVzIiwKKyAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOworICAgICAgICBNT1ZFX1RPX1NGVFBfQ0xPU0VfU1RBVEUoKTsKKyAgICAgIH0KKworICAgICAgaWYoc3NoYy0+cmVhZGRpcl9saW5rX2F0dHJzLT5uYW1lID09IE5VTEwpIHsKKyAgICAgICAgc3NoYy0+cmVhZGRpcl90bXAgPSBzZnRwX3JlYWRsaW5rKHNzaGMtPnNmdHBfc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfbGlua1BhdGgpOworICAgICAgICBpZihzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lID09IE5VTEwpCisgICAgICAgICAgc3NoYy0+cmVhZGRpcl9sZW4gPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgc3NoYy0+cmVhZGRpcl9sZW4gPSBzdHJsZW4oc3NoYy0+cmVhZGRpcl90bXApOworICAgICAgICBzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSA9IE5VTEw7CisgICAgICAgIHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUgPSBzc2hjLT5yZWFkZGlyX3RtcDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzc2hjLT5yZWFkZGlyX2xlbiA9IHN0cmxlbihzc2hjLT5yZWFkZGlyX2xpbmtfYXR0cnMtPm5hbWUpOworICAgICAgICBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lID0gc3NoYy0+cmVhZGRpcl9saW5rX2F0dHJzLT5uYW1lOworICAgICAgICBzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSA9IHNzaGMtPnJlYWRkaXJfbGlua19hdHRycy0+bG9uZ25hbWU7CisgICAgICB9CisKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9saW5rUGF0aCk7CisKKyAgICAgIC8qIGdldCByb29tIGZvciB0aGUgZmlsZW5hbWUgYW5kIGV4dHJhIG91dHB1dCAqLworICAgICAgc3NoYy0+cmVhZGRpcl90b3RhbExlbiArPSA0ICsgc3NoYy0+cmVhZGRpcl9sZW47CisgICAgICBuZXdfcmVhZGRpcl9saW5lID0gQ3VybF9zYWZlcmVhbGxvYyhzc2hjLT5yZWFkZGlyX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX3RvdGFsTGVuKTsKKyAgICAgIGlmKCFuZXdfcmVhZGRpcl9saW5lKSB7CisgICAgICAgIHNzaGMtPnJlYWRkaXJfbGluZSA9IE5VTEw7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3NoYy0+cmVhZGRpcl9saW5lID0gbmV3X3JlYWRkaXJfbGluZTsKKworICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuICs9IG1zbnByaW50Zihzc2hjLT5yZWFkZGlyX2xpbmUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfdG90YWxMZW4gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgLT4gJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lKTsKKworICAgICAgc2Z0cF9hdHRyaWJ1dGVzX2ZyZWUoc3NoYy0+cmVhZGRpcl9saW5rX2F0dHJzKTsKKyAgICAgIHNzaGMtPnJlYWRkaXJfbGlua19hdHRycyA9IE5VTEw7CisgICAgICBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lID0gTlVMTDsKKyAgICAgIHNzaGMtPnJlYWRkaXJfbG9uZ2VudHJ5ID0gTlVMTDsKKworICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUl9CT1RUT00pOworICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgICBjYXNlIFNTSF9TRlRQX1JFQURESVJfQk9UVE9NOgorICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuICs9IG1zbnByaW50Zihzc2hjLT5yZWFkZGlyX2xpbmUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfdG90YWxMZW4gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4sICJcbiIpOworICAgICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfY3Vyckxlbik7CisKKyAgICAgIGlmKCFyZXN1bHQpIHsKKworICAgICAgICAvKiBvdXRwdXQgZGVidWcgb3V0cHV0IGlmIHRoYXQgaXMgcmVxdWVzdGVkICovCisgICAgICAgIGlmKGRhdGEtPnNldC52ZXJib3NlKSB7CisgICAgICAgICAgQ3VybF9kZWJ1ZyhkYXRhLCBDVVJMSU5GT19EQVRBX09VVCwgc3NoYy0+cmVhZGRpcl9saW5lLAorICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuKTsKKyAgICAgICAgfQorICAgICAgICBkYXRhLT5yZXEuYnl0ZWNvdW50ICs9IHNzaGMtPnJlYWRkaXJfY3VyckxlbjsKKyAgICAgIH0KKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9saW5lKTsKKyAgICAgIHNzaF9zdHJpbmdfZnJlZV9jaGFyKHNzaGMtPnJlYWRkaXJfdG1wKTsKKyAgICAgIHNzaGMtPnJlYWRkaXJfdG1wID0gTlVMTDsKKworICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUik7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfUkVBRERJUl9ET05FOgorICAgICAgc2Z0cF9jbG9zZWRpcihzc2hjLT5zZnRwX2Rpcik7CisgICAgICBzc2hjLT5zZnRwX2RpciA9IE5VTEw7CisKKyAgICAgIC8qIG5vIGRhdGEgdG8gdHJhbnNmZXIgKi8KKyAgICAgIEN1cmxfc2V0dXBfdHJhbnNmZXIoZGF0YSwgLTEsIC0xLCBGQUxTRSwgLTEpOworICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX0RPV05MT0FEX0lOSVQ6CisgICAgICAvKgorICAgICAgICogV29yayBvbiBnZXR0aW5nIHRoZSBzcGVjaWZpZWQgZmlsZQorICAgICAgICovCisgICAgICBpZihzc2hjLT5zZnRwX2ZpbGUpCisgICAgICAgIHNmdHBfY2xvc2Uoc3NoYy0+c2Z0cF9maWxlKTsKKworICAgICAgc3NoYy0+c2Z0cF9maWxlID0gc2Z0cF9vcGVuKHNzaGMtPnNmdHBfc2Vzc2lvbiwgcHJvdG9wLT5wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9fUkRPTkxZLCAobW9kZV90KWRhdGEtPnNldC5uZXdfZmlsZV9wZXJtcyk7CisgICAgICBpZighc3NoYy0+c2Z0cF9maWxlKSB7CisgICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3Qgb3BlbiByZW1vdGUgZmlsZSBmb3IgcmVhZGluZzogJXMiLAorICAgICAgICAgICAgICBzc2hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKSk7CisKKyAgICAgICAgTU9WRV9UT19TRlRQX0NMT1NFX1NUQVRFKCk7CisgICAgICB9CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0RPV05MT0FEX1NUQVQpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX0RPV05MT0FEX1NUQVQ6CisgICAgeworICAgICAgc2Z0cF9hdHRyaWJ1dGVzIGF0dHJzOworICAgICAgY3VybF9vZmZfdCBzaXplOworCisgICAgICBhdHRycyA9IHNmdHBfZnN0YXQoc3NoYy0+c2Z0cF9maWxlKTsKKyAgICAgIGlmKCFhdHRycyB8fAorICAgICAgICAgICAgICAhKGF0dHJzLT5mbGFncyAmIFNTSF9GSUxFWEZFUl9BVFRSX1NJWkUpIHx8CisgICAgICAgICAgICAgIChhdHRycy0+c2l6ZSA9PSAwKSkgeworICAgICAgICAvKgorICAgICAgICAgKiBzZnRwX2ZzdGF0IGRpZG4ndCByZXR1cm4gYW4gZXJyb3IsIHNvIG1heWJlIHRoZSBzZXJ2ZXIKKyAgICAgICAgICoganVzdCBkb2Vzbid0IHN1cHBvcnQgc3RhdCgpCisgICAgICAgICAqIE9SIHRoZSBzZXJ2ZXIgZG9lc24ndCByZXR1cm4gYSBmaWxlIHNpemUgd2l0aCBhIHN0YXQoKQorICAgICAgICAgKiBPUiBmaWxlIHNpemUgaXMgMAorICAgICAgICAgKi8KKyAgICAgICAgZGF0YS0+cmVxLnNpemUgPSAtMTsKKyAgICAgICAgZGF0YS0+cmVxLm1heGRvd25sb2FkID0gLTE7CisgICAgICAgIEN1cmxfcGdyc1NldERvd25sb2FkU2l6ZShkYXRhLCAtMSk7CisgICAgICAgIHNpemUgPSAwOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHNpemUgPSBhdHRycy0+c2l6ZTsKKworICAgICAgICBzZnRwX2F0dHJpYnV0ZXNfZnJlZShhdHRycyk7CisKKyAgICAgICAgaWYoc2l6ZSA8IDApIHsKKyAgICAgICAgICBmYWlsZihkYXRhLCAiQmFkIGZpbGUgc2l6ZSAoJSIgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiKSIsIHNpemUpOworICAgICAgICAgIHJldHVybiBDVVJMRV9CQURfRE9XTkxPQURfUkVTVU1FOworICAgICAgICB9CisgICAgICAgIGlmKGNvbm4tPmRhdGEtPnN0YXRlLnVzZV9yYW5nZSkgeworICAgICAgICAgIGN1cmxfb2ZmX3QgZnJvbSwgdG87CisgICAgICAgICAgY2hhciAqcHRyOworICAgICAgICAgIGNoYXIgKnB0cjI7CisgICAgICAgICAgQ1VSTG9mZnQgdG9fdDsKKyAgICAgICAgICBDVVJMb2ZmdCBmcm9tX3Q7CisKKyAgICAgICAgICBmcm9tX3QgPSBjdXJseF9zdHJ0b29mZnQoY29ubi0+ZGF0YS0+c3RhdGUucmFuZ2UsICZwdHIsIDAsICZmcm9tKTsKKyAgICAgICAgICBpZihmcm9tX3QgPT0gQ1VSTF9PRkZUX0ZMT1cpIHsKKyAgICAgICAgICAgIHJldHVybiBDVVJMRV9SQU5HRV9FUlJPUjsKKyAgICAgICAgICB9CisgICAgICAgICAgd2hpbGUoKnB0ciAmJiAoSVNTUEFDRSgqcHRyKSB8fCAoKnB0ciA9PSAnLScpKSkKKyAgICAgICAgICAgIHB0cisrOworICAgICAgICAgIHRvX3QgPSBjdXJseF9zdHJ0b29mZnQocHRyLCAmcHRyMiwgMCwgJnRvKTsKKyAgICAgICAgICBpZih0b190ID09IENVUkxfT0ZGVF9GTE9XKSB7CisgICAgICAgICAgICByZXR1cm4gQ1VSTEVfUkFOR0VfRVJST1I7CisgICAgICAgICAgfQorICAgICAgICAgIGlmKCh0b190ID09IENVUkxfT0ZGVF9JTlZBTCkgLyogbm8gInRvIiB2YWx1ZSBnaXZlbiAqLworICAgICAgICAgICAgIHx8ICh0byA+PSBzaXplKSkgeworICAgICAgICAgICAgdG8gPSBzaXplIC0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYoZnJvbV90KSB7CisgICAgICAgICAgICAvKiBmcm9tIGlzIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlICovCisgICAgICAgICAgICBmcm9tID0gc2l6ZSAtIHRvOworICAgICAgICAgICAgdG8gPSBzaXplIC0gMTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYoZnJvbSA+IHNpemUpIHsKKyAgICAgICAgICAgIGZhaWxmKGRhdGEsICJPZmZzZXQgKCUiCisgICAgICAgICAgICAgICAgICBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIpIHdhcyBiZXlvbmQgZmlsZSBzaXplICglIgorICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiKSIsIGZyb20sIHNpemUpOworICAgICAgICAgICAgcmV0dXJuIENVUkxFX0JBRF9ET1dOTE9BRF9SRVNVTUU7CisgICAgICAgICAgfQorICAgICAgICAgIGlmKGZyb20gPiB0bykgeworICAgICAgICAgICAgZnJvbSA9IHRvOworICAgICAgICAgICAgc2l6ZSA9IDA7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2l6ZSA9IHRvIC0gZnJvbSArIDE7CisgICAgICAgICAgfQorCisgICAgICAgICAgcmMgPSBzZnRwX3NlZWs2NChzc2hjLT5zZnRwX2ZpbGUsIGZyb20pOworICAgICAgICAgIGlmKHJjICE9IDApIHsKKyAgICAgICAgICAgIE1PVkVfVE9fU0ZUUF9DTE9TRV9TVEFURSgpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkYXRhLT5yZXEuc2l6ZSA9IHNpemU7CisgICAgICAgIGRhdGEtPnJlcS5tYXhkb3dubG9hZCA9IHNpemU7CisgICAgICAgIEN1cmxfcGdyc1NldERvd25sb2FkU2l6ZShkYXRhLCBzaXplKTsKKyAgICAgIH0KKworICAgICAgLyogV2UgY2FuIHJlc3VtZSBpZiB3ZSBjYW4gc2VlayB0byB0aGUgcmVzdW1lIHBvc2l0aW9uICovCisgICAgICBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSkgeworICAgICAgICBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA8IDApIHsKKyAgICAgICAgICAvKiBXZSdyZSBzdXBwb3NlZCB0byBkb3dubG9hZCB0aGUgbGFzdCBhYnMoZnJvbSkgYnl0ZXMgKi8KKyAgICAgICAgICBpZigoY3VybF9vZmZfdClzaXplIDwgLWRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tKSB7CisgICAgICAgICAgICBmYWlsZihkYXRhLCAiT2Zmc2V0ICglIgorICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiKSB3YXMgYmV5b25kIGZpbGUgc2l6ZSAoJSIKKyAgICAgICAgICAgICAgICAgIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikiLAorICAgICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20sIHNpemUpOworICAgICAgICAgICAgcmV0dXJuIENVUkxFX0JBRF9ET1dOTE9BRF9SRVNVTUU7CisgICAgICAgICAgfQorICAgICAgICAgIC8qIGRvd25sb2FkIGZyb20gd2hlcmU/ICovCisgICAgICAgICAgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gKz0gc2l6ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBpZigoY3VybF9vZmZfdClzaXplIDwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pIHsKKyAgICAgICAgICAgIGZhaWxmKGRhdGEsICJPZmZzZXQgKCUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QKKyAgICAgICAgICAgICAgICAgICIpIHdhcyBiZXlvbmQgZmlsZSBzaXplICglIiBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIpIiwKKyAgICAgICAgICAgICAgICAgIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tLCBzaXplKTsKKyAgICAgICAgICAgIHJldHVybiBDVVJMRV9CQURfRE9XTkxPQURfUkVTVU1FOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBOb3cgc3RvcmUgdGhlIG51bWJlciBvZiBieXRlcyB3ZSBhcmUgZXhwZWN0ZWQgdG8gZG93bmxvYWQgKi8KKyAgICAgICAgZGF0YS0+cmVxLnNpemUgPSBzaXplIC0gZGF0YS0+c3RhdGUucmVzdW1lX2Zyb207CisgICAgICAgIGRhdGEtPnJlcS5tYXhkb3dubG9hZCA9IHNpemUgLSBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbTsKKyAgICAgICAgQ3VybF9wZ3JzU2V0RG93bmxvYWRTaXplKGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplIC0gZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pOworCisgICAgICAgIHJjID0gc2Z0cF9zZWVrNjQoc3NoYy0+c2Z0cF9maWxlLCBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSk7CisgICAgICAgIGlmKHJjICE9IDApIHsKKyAgICAgICAgICBNT1ZFX1RPX1NGVFBfQ0xPU0VfU1RBVEUoKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIC8qIFNldHVwIHRoZSBhY3R1YWwgZG93bmxvYWQgKi8KKyAgICBpZihkYXRhLT5yZXEuc2l6ZSA9PSAwKSB7CisgICAgICAvKiBubyBkYXRhIHRvIHRyYW5zZmVyICovCisgICAgICBDdXJsX3NldHVwX3RyYW5zZmVyKGRhdGEsIC0xLCAtMSwgRkFMU0UsIC0xKTsKKyAgICAgIGluZm9mKGRhdGEsICJGaWxlIGFscmVhZHkgY29tcGxldGVseSBkb3dubG9hZGVkXG4iKTsKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBDdXJsX3NldHVwX3RyYW5zZmVyKGRhdGEsIEZJUlNUU09DS0VULCBkYXRhLT5yZXEuc2l6ZSwgRkFMU0UsIC0xKTsKKworICAgIC8qIG5vdCBzZXQgYnkgQ3VybF9zZXR1cF90cmFuc2ZlciB0byBwcmVzZXJ2ZSBrZWVwb24gYml0cyAqLworICAgIGNvbm4tPndyaXRlc29ja2ZkID0gY29ubi0+c29ja2ZkOworCisgICAgLyogd2Ugd2FudCB0byB1c2UgdGhlIF9yZWNlaXZpbmdfIGZ1bmN0aW9uIGV2ZW4gd2hlbiB0aGUgc29ja2V0IHR1cm5zCisgICAgICAgb3V0IHdyaXRhYmxlYWJsZSBhcyB0aGUgdW5kZXJseWluZyBsaWJzc2ggcmVjdiBmdW5jdGlvbiB3aWxsIGRlYWwKKyAgICAgICB3aXRoIGJvdGggYWNjb3JkaW5nbHkgKi8KKyAgICBjb25uLT5jc2VsZWN0X2JpdHMgPSBDVVJMX0NTRUxFQ1RfSU47CisKKyAgICBpZihyZXN1bHQpIHsKKyAgICAgIC8qIHRoaXMgc2hvdWxkIG5ldmVyIG9jY3VyOyB0aGUgY2xvc2Ugc3RhdGUgc2hvdWxkIGJlIGVudGVyZWQKKyAgICAgICAgIGF0IHRoZSB0aW1lIHRoZSBlcnJvciBvY2N1cnMgKi8KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3NoYy0+c2Z0cF9yZWN2X3N0YXRlID0gMDsKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICB9CisgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX0NMT1NFOgorICAgICAgaWYoc3NoYy0+c2Z0cF9maWxlKSB7CisgICAgICAgIHNmdHBfY2xvc2Uoc3NoYy0+c2Z0cF9maWxlKTsKKyAgICAgICAgc3NoYy0+c2Z0cF9maWxlID0gTlVMTDsKKyAgICAgIH0KKyAgICAgIEN1cmxfc2FmZWZyZWUocHJvdG9wLT5wYXRoKTsKKworICAgICAgREVCVUdGKGluZm9mKGRhdGEsICJTRlRQIERPTkUgZG9uZVxuIikpOworCisgICAgICAvKiBDaGVjayBpZiBuZXh0c3RhdGUgaXMgc2V0IGFuZCBtb3ZlIC5uZXh0c3RhdGUgY291bGQgYmUgUE9TVFFVT1RFX0lOSVQKKyAgICAgICAgIEFmdGVyIG5leHRzdGF0ZSBpcyBleGVjdXRlZCwgdGhlIGNvbnRyb2wgc2hvdWxkIGNvbWUgYmFjayB0bworICAgICAgICAgU1NIX1NGVFBfQ0xPU0UgdG8gcGFzcyB0aGUgY29ycmVjdCByZXN1bHQgYmFjayAgKi8KKyAgICAgIGlmKHNzaGMtPm5leHRzdGF0ZSAhPSBTU0hfTk9fU1RBVEUgJiYKKyAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSAhPSBTU0hfU0ZUUF9DTE9TRSkgeworICAgICAgICBzdGF0ZShjb25uLCBzc2hjLT5uZXh0c3RhdGUpOworICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfU0ZUUF9DTE9TRTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICAgIHJlc3VsdCA9IHNzaGMtPmFjdHVhbGNvZGU7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfU0hVVERPV046CisgICAgICAvKiBkdXJpbmcgdGltZXMgd2UgZ2V0IGhlcmUgZHVlIHRvIGEgYnJva2VuIHRyYW5zZmVyIGFuZCB0aGVuIHRoZQorICAgICAgICAgc2Z0cF9oYW5kbGUgbWlnaHQgbm90IGhhdmUgYmVlbiB0YWtlbiBkb3duIHNvIG1ha2Ugc3VyZSB0aGF0IGlzIGRvbmUKKyAgICAgICAgIGJlZm9yZSB3ZSBwcm9jZWVkICovCisKKyAgICAgIGlmKHNzaGMtPnNmdHBfZmlsZSkgeworICAgICAgICBzZnRwX2Nsb3NlKHNzaGMtPnNmdHBfZmlsZSk7CisgICAgICAgIHNzaGMtPnNmdHBfZmlsZSA9IE5VTEw7CisgICAgICB9CisKKyAgICAgIGlmKHNzaGMtPnNmdHBfc2Vzc2lvbikgeworICAgICAgICBzZnRwX2ZyZWUoc3NoYy0+c2Z0cF9zZXNzaW9uKTsKKyAgICAgICAgc3NoYy0+c2Z0cF9zZXNzaW9uID0gTlVMTDsKKyAgICAgIH0KKworICAgICAgU1NIX1NUUklOR19GUkVFX0NIQVIoc3NoYy0+aG9tZWRpcik7CisgICAgICBjb25uLT5kYXRhLT5zdGF0ZS5tb3N0X3JlY2VudF9mdHBfZW50cnlwYXRoID0gTlVMTDsKKworICAgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRElTQ09OTkVDVCk7CisgICAgICBicmVhazsKKworCisgICAgY2FzZSBTU0hfU0NQX1RSQU5TX0lOSVQ6CisgICAgICByZXN1bHQgPSBDdXJsX2dldHdvcmtpbmdwYXRoKGNvbm4sIHNzaGMtPmhvbWVkaXIsICZwcm90b3AtPnBhdGgpOworICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIC8qIEZ1bmN0aW9ucyBmcm9tIHRoZSBTQ1Agc3Vic3lzdGVtIGNhbm5vdCBoYW5kbGUvcmV0dXJuIFNTSF9BR0FJTiAqLworICAgICAgc3NoX3NldF9ibG9ja2luZyhzc2hjLT5zc2hfc2Vzc2lvbiwgMSk7CisKKyAgICAgIGlmKGRhdGEtPnNldC51cGxvYWQpIHsKKyAgICAgICAgaWYoZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSA8IDApIHsKKyAgICAgICAgICBmYWlsZihkYXRhLCAiU0NQIHJlcXVpcmVzIGEga25vd24gZmlsZSBzaXplIGZvciB1cGxvYWQiKTsKKyAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfVVBMT0FEX0ZBSUxFRDsKKyAgICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX1VQTE9BRF9GQUlMRUQpOworICAgICAgICB9CisKKyAgICAgICAgc3NoYy0+c2NwX3Nlc3Npb24gPQorICAgICAgICAgIHNzaF9zY3BfbmV3KHNzaGMtPnNzaF9zZXNzaW9uLCBTU0hfU0NQX1dSSVRFLCBwcm90b3AtPnBhdGgpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX1VQTE9BRF9JTklUKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzc2hjLT5zY3Bfc2Vzc2lvbiA9CisgICAgICAgICAgc3NoX3NjcF9uZXcoc3NoYy0+c3NoX3Nlc3Npb24sIFNTSF9TQ1BfUkVBRCwgcHJvdG9wLT5wYXRoKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NDUF9ET1dOTE9BRF9JTklUKTsKKyAgICAgIH0KKworICAgICAgaWYoIXNzaGMtPnNjcF9zZXNzaW9uKSB7CisgICAgICAgIGVycl9tc2cgPSBzc2hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKTsKKyAgICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgIiVzIiwgZXJyX21zZyk7CisgICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfVVBMT0FEX0ZBSUxFRCk7CisgICAgICB9CisKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0NQX1VQTE9BRF9JTklUOgorCisgICAgICByYyA9IHNzaF9zY3BfaW5pdChzc2hjLT5zY3Bfc2Vzc2lvbik7CisgICAgICBpZihyYyAhPSBTU0hfT0spIHsKKyAgICAgICAgZXJyX21zZyA9IHNzaF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAiJXMiLCBlcnJfbXNnKTsKKyAgICAgICAgTU9WRV9UT19FUlJPUl9TVEFURShDVVJMRV9VUExPQURfRkFJTEVEKTsKKyAgICAgIH0KKworICAgICAgcmMgPSBzc2hfc2NwX3B1c2hfZmlsZShzc2hjLT5zY3Bfc2Vzc2lvbiwgcHJvdG9wLT5wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWRhdGEtPnNldC5uZXdfZmlsZV9wZXJtcyk7CisgICAgICBpZihyYyAhPSBTU0hfT0spIHsKKyAgICAgICAgZXJyX21zZyA9IHNzaF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAiJXMiLCBlcnJfbXNnKTsKKyAgICAgICAgTU9WRV9UT19FUlJPUl9TVEFURShDVVJMRV9VUExPQURfRkFJTEVEKTsKKyAgICAgIH0KKworICAgICAgLyogdXBsb2FkIGRhdGEgKi8KKyAgICAgIEN1cmxfc2V0dXBfdHJhbnNmZXIoZGF0YSwgLTEsIGRhdGEtPnJlcS5zaXplLCBGQUxTRSwgRklSU1RTT0NLRVQpOworCisgICAgICAvKiBub3Qgc2V0IGJ5IEN1cmxfc2V0dXBfdHJhbnNmZXIgdG8gcHJlc2VydmUga2VlcG9uIGJpdHMgKi8KKyAgICAgIGNvbm4tPnNvY2tmZCA9IGNvbm4tPndyaXRlc29ja2ZkOworCisgICAgICAvKiBzdG9yZSB0aGlzIG9yaWdpbmFsIGJpdG1hc2sgc2V0dXAgdG8gdXNlIGxhdGVyIG9uIGlmIHdlIGNhbid0CisgICAgICAgICBmaWd1cmUgb3V0IGEgInJlYWwiIGJpdG1hc2sgKi8KKyAgICAgIHNzaGMtPm9yaWdfd2FpdGZvciA9IGRhdGEtPnJlcS5rZWVwb247CisKKyAgICAgIC8qIHdlIHdhbnQgdG8gdXNlIHRoZSBfc2VuZGluZ18gZnVuY3Rpb24gZXZlbiB3aGVuIHRoZSBzb2NrZXQgdHVybnMKKyAgICAgICAgIG91dCByZWFkYWJsZSBhcyB0aGUgdW5kZXJseWluZyBsaWJzc2ggc2NwIHNlbmQgZnVuY3Rpb24gd2lsbCBkZWFsCisgICAgICAgICB3aXRoIGJvdGggYWNjb3JkaW5nbHkgKi8KKyAgICAgIGNvbm4tPmNzZWxlY3RfYml0cyA9IENVUkxfQ1NFTEVDVF9PVVQ7CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TQ1BfRE9XTkxPQURfSU5JVDoKKworICAgICAgcmMgPSBzc2hfc2NwX2luaXQoc3NoYy0+c2NwX3Nlc3Npb24pOworICAgICAgaWYocmMgIT0gU1NIX09LKSB7CisgICAgICAgIGVycl9tc2cgPSBzc2hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKTsKKyAgICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgIiVzIiwgZXJyX21zZyk7CisgICAgICAgIE1PVkVfVE9fRVJST1JfU1RBVEUoQ1VSTEVfQ09VTEROVF9DT05ORUNUKTsKKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfRE9XTkxPQUQpOworICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKworICAgIGNhc2UgU1NIX1NDUF9ET1dOTE9BRDp7CisgICAgICAgIGN1cmxfb2ZmX3QgYnl0ZWNvdW50OworCisgICAgICAgIHJjID0gc3NoX3NjcF9wdWxsX3JlcXVlc3Qoc3NoYy0+c2NwX3Nlc3Npb24pOworICAgICAgICBpZihyYyAhPSBTU0hfU0NQX1JFUVVFU1RfTkVXRklMRSkgeworICAgICAgICAgIGVycl9tc2cgPSBzc2hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKTsKKyAgICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAiJXMiLCBlcnJfbXNnKTsKKyAgICAgICAgICBNT1ZFX1RPX0VSUk9SX1NUQVRFKENVUkxFX1JFTU9URV9GSUxFX05PVF9GT1VORCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKiBkb3dubG9hZCBkYXRhICovCisgICAgICAgIGJ5dGVjb3VudCA9IHNzaF9zY3BfcmVxdWVzdF9nZXRfc2l6ZShzc2hjLT5zY3Bfc2Vzc2lvbik7CisgICAgICAgIGRhdGEtPnJlcS5tYXhkb3dubG9hZCA9IChjdXJsX29mZl90KSBieXRlY291bnQ7CisgICAgICAgIEN1cmxfc2V0dXBfdHJhbnNmZXIoZGF0YSwgRklSU1RTT0NLRVQsIGJ5dGVjb3VudCwgRkFMU0UsIC0xKTsKKworICAgICAgICAvKiBub3Qgc2V0IGJ5IEN1cmxfc2V0dXBfdHJhbnNmZXIgdG8gcHJlc2VydmUga2VlcG9uIGJpdHMgKi8KKyAgICAgICAgY29ubi0+d3JpdGVzb2NrZmQgPSBjb25uLT5zb2NrZmQ7CisKKyAgICAgICAgLyogd2Ugd2FudCB0byB1c2UgdGhlIF9yZWNlaXZpbmdfIGZ1bmN0aW9uIGV2ZW4gd2hlbiB0aGUgc29ja2V0IHR1cm5zCisgICAgICAgICAgIG91dCB3cml0YWJsZWFibGUgYXMgdGhlIHVuZGVybHlpbmcgbGlic3NoIHJlY3YgZnVuY3Rpb24gd2lsbCBkZWFsCisgICAgICAgICAgIHdpdGggYm90aCBhY2NvcmRpbmdseSAqLworICAgICAgICBjb25uLT5jc2VsZWN0X2JpdHMgPSBDVVJMX0NTRUxFQ1RfSU47CisKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICBjYXNlIFNTSF9TQ1BfRE9ORToKKyAgICAgIGlmKGRhdGEtPnNldC51cGxvYWQpCisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfU0VORF9FT0YpOworICAgICAgZWxzZQorICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX0NIQU5ORUxfRlJFRSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NDUF9TRU5EX0VPRjoKKyAgICAgIGlmKHNzaGMtPnNjcF9zZXNzaW9uKSB7CisgICAgICAgIHJjID0gc3NoX3NjcF9jbG9zZShzc2hjLT5zY3Bfc2Vzc2lvbik7CisgICAgICAgIGlmKHJjID09IFNTSF9BR0FJTikgeworICAgICAgICAgIC8qIEN1cnJlbnRseSB0aGUgc3NoX3NjcF9jbG9zZSBoYW5kbGVzIHdhaXRpbmcgZm9yIEVPRiBpbgorICAgICAgICAgICAqIGJsb2NraW5nIHdheS4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZihyYyAhPSBTU0hfT0spIHsKKyAgICAgICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIGNsb3NlIGxpYnNzaCBzY3AgY2hhbm5lbDogJXNcbiIsCisgICAgICAgICAgICAgICAgc3NoX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbikpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfQ0hBTk5FTF9GUkVFKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0NQX0NIQU5ORUxfRlJFRToKKyAgICAgIGlmKHNzaGMtPnNjcF9zZXNzaW9uKSB7CisgICAgICAgIHNzaF9zY3BfZnJlZShzc2hjLT5zY3Bfc2Vzc2lvbik7CisgICAgICAgIHNzaGMtPnNjcF9zZXNzaW9uID0gTlVMTDsKKyAgICAgIH0KKyAgICAgIERFQlVHRihpbmZvZihkYXRhLCAiU0NQIERPTkUgcGhhc2UgY29tcGxldGVcbiIpKTsKKworICAgICAgc3NoX3NldF9ibG9ja2luZyhzc2hjLT5zc2hfc2Vzc2lvbiwgMCk7CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRVNTSU9OX0RJU0NPTk5FQ1QpOworICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKworICAgIGNhc2UgU1NIX1NFU1NJT05fRElTQ09OTkVDVDoKKyAgICAgIC8qIGR1cmluZyB3ZWlyZCB0aW1lcyB3aGVuIHdlJ3ZlIGJlZW4gcHJlbWF0dXJlbHkgYWJvcnRlZCwgdGhlIGNoYW5uZWwKKyAgICAgICAgIGlzIHN0aWxsIGFsaXZlIHdoZW4gd2UgcmVhY2ggdGhpcyBzdGF0ZSBhbmQgd2UgTVVTVCBraWxsIHRoZSBjaGFubmVsCisgICAgICAgICBwcm9wZXJseSBmaXJzdCAqLworICAgICAgaWYoc3NoYy0+c2NwX3Nlc3Npb24pIHsKKyAgICAgICAgc3NoX3NjcF9mcmVlKHNzaGMtPnNjcF9zZXNzaW9uKTsKKyAgICAgICAgc3NoYy0+c2NwX3Nlc3Npb24gPSBOVUxMOworICAgICAgfQorCisgICAgICBzc2hfZGlzY29ubmVjdChzc2hjLT5zc2hfc2Vzc2lvbik7CisKKyAgICAgIFNTSF9TVFJJTkdfRlJFRV9DSEFSKHNzaGMtPmhvbWVkaXIpOworICAgICAgY29ubi0+ZGF0YS0+c3RhdGUubW9zdF9yZWNlbnRfZnRwX2VudHJ5cGF0aCA9IE5VTEw7CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRVNTSU9OX0ZSRUUpOworICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgICBjYXNlIFNTSF9TRVNTSU9OX0ZSRUU6CisgICAgICBpZihzc2hjLT5zc2hfc2Vzc2lvbikgeworICAgICAgICBzc2hfZnJlZShzc2hjLT5zc2hfc2Vzc2lvbik7CisgICAgICAgIHNzaGMtPnNzaF9zZXNzaW9uID0gTlVMTDsKKyAgICAgIH0KKworICAgICAgLyogd29yc3QtY2FzZSBzY2VuYXJpbyBjbGVhbnVwICovCisKKyAgICAgIERFQlVHQVNTRVJUKHNzaGMtPnNzaF9zZXNzaW9uID09IE5VTEwpOworICAgICAgREVCVUdBU1NFUlQoc3NoYy0+c2NwX3Nlc3Npb24gPT0gTlVMTCk7CisKKyAgICAgIGlmKHNzaGMtPnJlYWRkaXJfdG1wKSB7CisgICAgICAgIHNzaF9zdHJpbmdfZnJlZV9jaGFyKHNzaGMtPnJlYWRkaXJfdG1wKTsKKyAgICAgICAgc3NoYy0+cmVhZGRpcl90bXAgPSBOVUxMOworICAgICAgfQorCisgICAgICBpZihzc2hjLT5xdW90ZV9hdHRycykKKyAgICAgICAgc2Z0cF9hdHRyaWJ1dGVzX2ZyZWUoc3NoYy0+cXVvdGVfYXR0cnMpOworCisgICAgICBpZihzc2hjLT5yZWFkZGlyX2F0dHJzKQorICAgICAgICBzZnRwX2F0dHJpYnV0ZXNfZnJlZShzc2hjLT5yZWFkZGlyX2F0dHJzKTsKKworICAgICAgaWYoc3NoYy0+cmVhZGRpcl9saW5rX2F0dHJzKQorICAgICAgICBzZnRwX2F0dHJpYnV0ZXNfZnJlZShzc2hjLT5yZWFkZGlyX2xpbmtfYXR0cnMpOworCisgICAgICBpZihzc2hjLT5wcml2a2V5KQorICAgICAgICBzc2hfa2V5X2ZyZWUoc3NoYy0+cHJpdmtleSk7CisgICAgICBpZihzc2hjLT5wdWJrZXkpCisgICAgICAgIHNzaF9rZXlfZnJlZShzc2hjLT5wdWJrZXkpOworCisgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJzYV9wdWIpOworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yc2EpOworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9saW5lKTsKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9saW5rUGF0aCk7CisgICAgICBTU0hfU1RSSU5HX0ZSRUVfQ0hBUihzc2hjLT5ob21lZGlyKTsKKworICAgICAgLyogdGhlIGNvZGUgd2UgYXJlIGFib3V0IHRvIHJldHVybiAqLworICAgICAgcmVzdWx0ID0gc3NoYy0+YWN0dWFsY29kZTsKKworICAgICAgbWVtc2V0KHNzaGMsIDAsIHNpemVvZihzdHJ1Y3Qgc3NoX2Nvbm4pKTsKKworICAgICAgY29ubmNsb3NlKGNvbm4sICJTU0ggc2Vzc2lvbiBmcmVlIik7CisgICAgICBzc2hjLT5zdGF0ZSA9IFNTSF9TRVNTSU9OX0ZSRUU7ICAgLyogY3VycmVudCAqLworICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9RVUlUOgorICAgICAgLyogZmFsbHRocm91Z2gsIGp1c3Qgc3RvcCEgKi8KKyAgICBkZWZhdWx0OgorICAgICAgLyogaW50ZXJuYWwgZXJyb3IgKi8KKyAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgIGJyZWFrOworCisgICAgfQorICB9IHdoaWxlKCFyYyAmJiAoc3NoYy0+c3RhdGUgIT0gU1NIX1NUT1ApKTsKKworCisgIGlmKHJjID09IFNTSF9BR0FJTikgeworICAgIC8qIHdlIHdvdWxkIGJsb2NrLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBzb2NrZXQgdG8gYmUgcmVhZHkgKGluIHRoZQorICAgICAgIHJpZ2h0IGRpcmVjdGlvbiB0b28pISAqLworICAgICpibG9jayA9IFRSVUU7CisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qIGNhbGxlZCBieSB0aGUgbXVsdGkgaW50ZXJmYWNlIHRvIGZpZ3VyZSBvdXQgd2hhdCBzb2NrZXQocykgdG8gd2FpdCBmb3IgYW5kCisgICBmb3Igd2hhdCBhY3Rpb25zIGluIHRoZSBET19ET05FLCBQRVJGT1JNIGFuZCBXQUlUUEVSRk9STSBzdGF0ZXMgKi8KK3N0YXRpYyBpbnQgbXlzc2hfcGVyZm9ybV9nZXRzb2NrKGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2spCit7CisgIGludCBiaXRtYXAgPSBHRVRTT0NLX0JMQU5LOworICBzb2NrWzBdID0gY29ubi0+c29ja1tGSVJTVFNPQ0tFVF07CisKKyAgaWYoY29ubi0+d2FpdGZvciAmIEtFRVBfUkVDVikKKyAgICBiaXRtYXAgfD0gR0VUU09DS19SRUFEU09DSyhGSVJTVFNPQ0tFVCk7CisKKyAgaWYoY29ubi0+d2FpdGZvciAmIEtFRVBfU0VORCkKKyAgICBiaXRtYXAgfD0gR0VUU09DS19XUklURVNPQ0soRklSU1RTT0NLRVQpOworCisgIHJldHVybiBiaXRtYXA7Cit9CisKKy8qIEdlbmVyaWMgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSBtdWx0aSBpbnRlcmZhY2UgdG8gZmlndXJlIG91dCB3aGF0IHNvY2tldChzKQorICAgdG8gd2FpdCBmb3IgYW5kIGZvciB3aGF0IGFjdGlvbnMgZHVyaW5nIHRoZSBET0lORyBhbmQgUFJPVE9DT05ORUNUIHN0YXRlcyovCitzdGF0aWMgaW50IG15c3NoX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2spCit7CisgIC8qIGlmIHdlIGtub3cgdGhlIGRpcmVjdGlvbiB3ZSBjYW4gdXNlIHRoZSBnZW5lcmljICpfZ2V0c29jaygpIGZ1bmN0aW9uIGV2ZW4KKyAgICAgZm9yIHRoZSBwcm90b2NvbF9jb25uZWN0IGFuZCBkb2luZyBzdGF0ZXMgKi8KKyAgcmV0dXJuIG15c3NoX3BlcmZvcm1fZ2V0c29jayhjb25uLCBzb2NrKTsKK30KKworc3RhdGljIHZvaWQgbXlzc2hfYmxvY2syd2FpdGZvcihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgYmxvY2spCit7CisgIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOworCisgIC8qIElmIGl0IGRpZG4ndCBibG9jaywgb3Igbm90aGluZyB3YXMgcmV0dXJuZWQgYnkgc3NoX2dldF9wb2xsX2ZsYWdzCisgICAqIGhhdmUgdGhlIG9yaWdpbmFsIHNldCAqLworICBjb25uLT53YWl0Zm9yID0gc3NoYy0+b3JpZ193YWl0Zm9yOworCisgIGlmKGJsb2NrKSB7CisgICAgaW50IGRpciA9IHNzaF9nZXRfcG9sbF9mbGFncyhzc2hjLT5zc2hfc2Vzc2lvbik7CisgICAgaWYoZGlyICYgU1NIX1JFQURfUEVORElORykgeworICAgICAgLyogdHJhbnNsYXRlIHRoZSBsaWJzc2ggZGVmaW5lIGJpdHMgaW50byBvdXIgb3duIGJpdCBkZWZpbmVzICovCisgICAgICBjb25uLT53YWl0Zm9yID0gS0VFUF9SRUNWOworICAgIH0KKyAgICBlbHNlIGlmKGRpciAmIFNTSF9XUklURV9QRU5ESU5HKSB7CisgICAgICBjb25uLT53YWl0Zm9yID0gS0VFUF9TRU5EOworICAgIH0KKyAgfQorfQorCisvKiBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBkb25lIGZyb20gbXVsdGkuYyAqLworc3RhdGljIENVUkxjb2RlIG15c3NoX211bHRpX3N0YXRlbWFjaChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvbmUpCit7CisgIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOworICBib29sIGJsb2NrOyAgICAvKiB3ZSBzdG9yZSB0aGUgc3RhdHVzIGFuZCB1c2UgdGhhdCB0byBwcm92aWRlIGEgc3NoX2dldHNvY2soKQorICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiAqLworICBDVVJMY29kZSByZXN1bHQgPSBteXNzaF9zdGF0ZW1hY2hfYWN0KGNvbm4sICZibG9jayk7CisKKyAgKmRvbmUgPSAoc3NoYy0+c3RhdGUgPT0gU1NIX1NUT1ApID8gVFJVRSA6IEZBTFNFOworICBteXNzaF9ibG9jazJ3YWl0Zm9yKGNvbm4sIGJsb2NrKTsKKworICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ1VSTGNvZGUgbXlzc2hfYmxvY2tfc3RhdGVtYWNoKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkaXNjb25uZWN0KQoreworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworCisgIHdoaWxlKChzc2hjLT5zdGF0ZSAhPSBTU0hfU1RPUCkgJiYgIXJlc3VsdCkgeworICAgIGJvb2wgYmxvY2s7CisgICAgdGltZWRpZmZfdCBsZWZ0ID0gMTAwMDsKKyAgICBzdHJ1Y3QgY3VybHRpbWUgbm93ID0gQ3VybF9ub3coKTsKKworICAgIHJlc3VsdCA9IG15c3NoX3N0YXRlbWFjaF9hY3QoY29ubiwgJmJsb2NrKTsKKyAgICBpZihyZXN1bHQpCisgICAgICBicmVhazsKKworICAgIGlmKCFkaXNjb25uZWN0KSB7CisgICAgICBpZihDdXJsX3BncnNVcGRhdGUoY29ubikpCisgICAgICAgIHJldHVybiBDVVJMRV9BQk9SVEVEX0JZX0NBTExCQUNLOworCisgICAgICByZXN1bHQgPSBDdXJsX3NwZWVkY2hlY2soZGF0YSwgbm93KTsKKyAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGxlZnQgPSBDdXJsX3RpbWVsZWZ0KGRhdGEsIE5VTEwsIEZBTFNFKTsKKyAgICAgIGlmKGxlZnQgPCAwKSB7CisgICAgICAgIGZhaWxmKGRhdGEsICJPcGVyYXRpb24gdGltZWQgb3V0Iik7CisgICAgICAgIHJldHVybiBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7CisgICAgICB9CisgICAgfQorCisgICAgaWYoYmxvY2spIHsKKyAgICAgIGN1cmxfc29ja2V0X3QgZmRfcmVhZCA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOworICAgICAgLyogd2FpdCBmb3IgdGhlIHNvY2tldCB0byBiZWNvbWUgcmVhZHkgKi8KKyAgICAgICh2b2lkKSBDdXJsX3NvY2tldF9jaGVjayhmZF9yZWFkLCBDVVJMX1NPQ0tFVF9CQUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTF9TT0NLRVRfQkFELCBsZWZ0ID4gMTAwMCA/IDEwMDAgOiBsZWZ0KTsKKyAgICB9CisKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBTU0ggc2V0dXAgY29ubmVjdGlvbgorICovCitzdGF0aWMgQ1VSTGNvZGUgbXlzc2hfc2V0dXBfY29ubmVjdGlvbihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCit7CisgIHN0cnVjdCBTU0hQUk9UTyAqc3NoOworCisgIGNvbm4tPmRhdGEtPnJlcS5wcm90b3AgPSBzc2ggPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBTU0hQUk9UTykpOworICBpZighc3NoKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworc3RhdGljIEN1cmxfcmVjdiBzY3BfcmVjdiwgc2Z0cF9yZWN2Oworc3RhdGljIEN1cmxfc2VuZCBzY3Bfc2VuZCwgc2Z0cF9zZW5kOworCisvKgorICogQ3VybF9zc2hfY29ubmVjdCgpIGdldHMgY2FsbGVkIGZyb20gQ3VybF9wcm90b2NvbF9jb25uZWN0KCkgdG8gYWxsb3cgdXMgdG8KKyAqIGRvIHByb3RvY29sLXNwZWNpZmljIGFjdGlvbnMgYXQgY29ubmVjdC10aW1lLgorICovCitzdGF0aWMgQ1VSTGNvZGUgbXlzc2hfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCit7CisgIHN0cnVjdCBzc2hfY29ubiAqc3NoOworICBDVVJMY29kZSByZXN1bHQ7CisgIGN1cmxfc29ja2V0X3Qgc29jayA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKKworICAvKiBpbml0aWFsaXplIHBlci1oYW5kbGUgZGF0YSBpZiBub3QgYWxyZWFkeSAqLworICBpZighZGF0YS0+cmVxLnByb3RvcCkKKyAgICBteXNzaF9zZXR1cF9jb25uZWN0aW9uKGNvbm4pOworCisgIC8qIFdlIGRlZmF1bHQgdG8gcGVyc2lzdGVudCBjb25uZWN0aW9ucy4gV2Ugc2V0IHRoaXMgYWxyZWFkeSBpbiB0aGlzIGNvbm5lY3QKKyAgICAgZnVuY3Rpb24gdG8gbWFrZSB0aGUgcmUtdXNlIGNoZWNrcyBwcm9wZXJseSBiZSBhYmxlIHRvIGNoZWNrIHRoaXMgYml0LiAqLworICBjb25ua2VlcChjb25uLCAiU1NIIGRlZmF1bHQiKTsKKworICBpZihjb25uLT5oYW5kbGVyLT5wcm90b2NvbCAmIENVUkxQUk9UT19TQ1ApIHsKKyAgICBjb25uLT5yZWN2W0ZJUlNUU09DS0VUXSA9IHNjcF9yZWN2OworICAgIGNvbm4tPnNlbmRbRklSU1RTT0NLRVRdID0gc2NwX3NlbmQ7CisgIH0KKyAgZWxzZSB7CisgICAgY29ubi0+cmVjdltGSVJTVFNPQ0tFVF0gPSBzZnRwX3JlY3Y7CisgICAgY29ubi0+c2VuZFtGSVJTVFNPQ0tFVF0gPSBzZnRwX3NlbmQ7CisgIH0KKworICBzc2ggPSAmY29ubi0+cHJvdG8uc3NoYzsKKworICBzc2gtPnNzaF9zZXNzaW9uID0gc3NoX25ldygpOworICBpZihzc2gtPnNzaF9zZXNzaW9uID09IE5VTEwpIHsKKyAgICBmYWlsZihkYXRhLCAiRmFpbHVyZSBpbml0aWFsaXNpbmcgc3NoIHNlc3Npb24iKTsKKyAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgIH0KKworICBzc2hfb3B0aW9uc19zZXQoc3NoLT5zc2hfc2Vzc2lvbiwgU1NIX09QVElPTlNfRkQsICZzb2NrKTsKKworICBpZihjb25uLT51c2VyKSB7CisgICAgaW5mb2YoZGF0YSwgIlVzZXI6ICVzXG4iLCBjb25uLT51c2VyKTsKKyAgICBzc2hfb3B0aW9uc19zZXQoc3NoLT5zc2hfc2Vzc2lvbiwgU1NIX09QVElPTlNfVVNFUiwgY29ubi0+dXNlcik7CisgIH0KKworICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pIHsKKyAgICBpbmZvZihkYXRhLCAiS25vd24gaG9zdHM6ICVzXG4iLCBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pOworICAgIHNzaF9vcHRpb25zX3NldChzc2gtPnNzaF9zZXNzaW9uLCBTU0hfT1BUSU9OU19LTk9XTkhPU1RTLAorICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pOworICB9CisKKyAgc3NoX29wdGlvbnNfc2V0KHNzaC0+c3NoX3Nlc3Npb24sIFNTSF9PUFRJT05TX0hPU1QsIGNvbm4tPmhvc3QubmFtZSk7CisgIGlmKGNvbm4tPnJlbW90ZV9wb3J0KQorICAgIHNzaF9vcHRpb25zX3NldChzc2gtPnNzaF9zZXNzaW9uLCBTU0hfT1BUSU9OU19QT1JULAorICAgICAgICAgICAgICAgICAgICAmY29ubi0+cmVtb3RlX3BvcnQpOworCisgIGlmKGRhdGEtPnNldC5zc2hfY29tcHJlc3Npb24pIHsKKyAgICBzc2hfb3B0aW9uc19zZXQoc3NoLT5zc2hfc2Vzc2lvbiwgU1NIX09QVElPTlNfQ09NUFJFU1NJT04sCisgICAgICAgICAgICAgICAgICAgICJ6bGliLHpsaWJAb3BlbnNzaC5jb20sbm9uZSIpOworICB9CisKKyAgc3NoLT5wcml2a2V5ID0gTlVMTDsKKyAgc3NoLT5wdWJrZXkgPSBOVUxMOworCisgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9QVUJMSUNfS0VZXSkgeworICAgIGludCByYyA9IHNzaF9wa2lfaW1wb3J0X3B1YmtleV9maWxlKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9QVUJMSUNfS0VZXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3NoLT5wdWJrZXkpOworICAgIGlmKHJjICE9IFNTSF9PSykgeworICAgICAgZmFpbGYoZGF0YSwgIkNvdWxkIG5vdCBsb2FkIHB1YmxpYyBrZXkgZmlsZSIpOworICAgICAgLyogaWdub3JlICovCisgICAgfQorICB9CisKKyAgLyogd2UgZG8gbm90IHZlcmlmeSBoZXJlLCB3ZSBkbyBpdCBhdCB0aGUgc3RhdGUgbWFjaGluZSwKKyAgICogYWZ0ZXIgY29ubmVjdGlvbiAqLworCisgIHN0YXRlKGNvbm4sIFNTSF9JTklUKTsKKworICByZXN1bHQgPSBteXNzaF9tdWx0aV9zdGF0ZW1hY2goY29ubiwgZG9uZSk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogY2FsbGVkIGZyb20gbXVsdGkuYyB3aGlsZSBET2luZyAqLworc3RhdGljIENVUkxjb2RlIHNjcF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvcGhhc2VfZG9uZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0OworCisgIHJlc3VsdCA9IG15c3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOworCisgIGlmKCpkb3BoYXNlX2RvbmUpIHsKKyAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIHNjcF9wZXJmb3JtKCkKKyAqCisgKiBUaGlzIGlzIHRoZSBhY3R1YWwgRE8gZnVuY3Rpb24gZm9yIFNDUC4gR2V0IGEgZmlsZSBhY2NvcmRpbmcgdG8KKyAqIHRoZSBvcHRpb25zIHByZXZpb3VzbHkgc2V0dXAuCisgKi8KKworc3RhdGljCitDVVJMY29kZSBzY3BfcGVyZm9ybShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICBib29sICpjb25uZWN0ZWQsIGJvb2wgKmRvcGhhc2VfZG9uZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisKKyAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJETyBwaGFzZSBzdGFydHNcbiIpKTsKKworICAqZG9waGFzZV9kb25lID0gRkFMU0U7ICAgICAgICAvKiBub3QgZG9uZSB5ZXQgKi8KKworICAvKiBzdGFydCB0aGUgZmlyc3QgY29tbWFuZCBpbiB0aGUgRE8gcGhhc2UgKi8KKyAgc3RhdGUoY29ubiwgU1NIX1NDUF9UUkFOU19JTklUKTsKKworICByZXN1bHQgPSBteXNzaF9tdWx0aV9zdGF0ZW1hY2goY29ubiwgZG9waGFzZV9kb25lKTsKKworICAqY29ubmVjdGVkID0gY29ubi0+Yml0cy50Y3Bjb25uZWN0W0ZJUlNUU09DS0VUXTsKKworICBpZigqZG9waGFzZV9kb25lKSB7CisgICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJETyBwaGFzZSBpcyBjb21wbGV0ZVxuIikpOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENVUkxjb2RlIG15c3NoX2RvX2l0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0OworICBib29sIGNvbm5lY3RlZCA9IDA7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKworICAqZG9uZSA9IEZBTFNFOyAgICAgICAgICAgICAgICAvKiBkZWZhdWx0IHRvIGZhbHNlICovCisKKyAgZGF0YS0+cmVxLnNpemUgPSAtMTsgICAgICAgICAgLyogbWFrZSBzdXJlIHRoaXMgaXMgdW5rbm93biBhdCB0aGlzIHBvaW50ICovCisKKyAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09LOyAgLyogcmVzZXQgZXJyb3IgY29kZSAqLworICBzc2hjLT5zZWNvbmRDcmVhdGVEaXJzID0gMDsgICAvKiByZXNldCB0aGUgY3JlYXRlIGRpciBhdHRlbXB0IHN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlICovCisKKyAgQ3VybF9wZ3JzU2V0VXBsb2FkQ291bnRlcihkYXRhLCAwKTsKKyAgQ3VybF9wZ3JzU2V0RG93bmxvYWRDb3VudGVyKGRhdGEsIDApOworICBDdXJsX3BncnNTZXRVcGxvYWRTaXplKGRhdGEsIC0xKTsKKyAgQ3VybF9wZ3JzU2V0RG93bmxvYWRTaXplKGRhdGEsIC0xKTsKKworICBpZihjb25uLT5oYW5kbGVyLT5wcm90b2NvbCAmIENVUkxQUk9UT19TQ1ApCisgICAgcmVzdWx0ID0gc2NwX3BlcmZvcm0oY29ubiwgJmNvbm5lY3RlZCwgZG9uZSk7CisgIGVsc2UKKyAgICByZXN1bHQgPSBzZnRwX3BlcmZvcm0oY29ubiwgJmNvbm5lY3RlZCwgZG9uZSk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogQkxPQ0tJTkcsIGJ1dCB0aGUgZnVuY3Rpb24gaXMgdXNpbmcgdGhlIHN0YXRlIG1hY2hpbmUgc28gdGhlIG9ubHkgcmVhc29uCisgICB0aGlzIGlzIHN0aWxsIGJsb2NraW5nIGlzIHRoYXQgdGhlIG11bHRpIGludGVyZmFjZSBjb2RlIGhhcyBubyBzdXBwb3J0IGZvcgorICAgZGlzY29ubmVjdGluZyBvcGVyYXRpb25zIHRoYXQgdGFrZXMgYSB3aGlsZSAqLworc3RhdGljIENVUkxjb2RlIHNjcF9kaXNjb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlYWRfY29ubmVjdGlvbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIHN0cnVjdCBzc2hfY29ubiAqc3NoID0gJmNvbm4tPnByb3RvLnNzaGM7CisgICh2b2lkKSBkZWFkX2Nvbm5lY3Rpb247CisKKyAgaWYoc3NoLT5zc2hfc2Vzc2lvbikgeworICAgIC8qIG9ubHkgaWYgdGhlcmUncyBhIHNlc3Npb24gc3RpbGwgYXJvdW5kIHRvIHVzZSEgKi8KKworICAgIHN0YXRlKGNvbm4sIFNTSF9TRVNTSU9OX0RJU0NPTk5FQ1QpOworCisgICAgcmVzdWx0ID0gbXlzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIFRSVUUpOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogZ2VuZXJpYyBkb25lIGZ1bmN0aW9uIGZvciBib3RoIFNDUCBhbmQgU0ZUUCBjYWxsZWQgZnJvbSB0aGVpciBzcGVjaWZpYworICAgZG9uZSBmdW5jdGlvbnMgKi8KK3N0YXRpYyBDVVJMY29kZSBteXNzaF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgQ1VSTGNvZGUgc3RhdHVzKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc3RydWN0IFNTSFBST1RPICpwcm90b3AgPSBjb25uLT5kYXRhLT5yZXEucHJvdG9wOworCisgIGlmKCFzdGF0dXMpIHsKKyAgICAvKiBydW4gdGhlIHN0YXRlLW1hY2hpbmUgKi8KKyAgICByZXN1bHQgPSBteXNzaF9ibG9ja19zdGF0ZW1hY2goY29ubiwgRkFMU0UpOworICB9CisgIGVsc2UKKyAgICByZXN1bHQgPSBzdGF0dXM7CisKKyAgaWYocHJvdG9wKQorICAgIEN1cmxfc2FmZWZyZWUocHJvdG9wLT5wYXRoKTsKKyAgaWYoQ3VybF9wZ3JzRG9uZShjb25uKSkKKyAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKKworICBjb25uLT5kYXRhLT5yZXEua2VlcG9uID0gMDsgICAvKiBjbGVhciBhbGwgYml0cyAqLworICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBDVVJMY29kZSBzY3BfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIENVUkxjb2RlIHN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW1hdHVyZSkKK3sKKyAgKHZvaWQpIHByZW1hdHVyZTsgICAgICAgICAgICAgLyogbm90IHVzZWQgKi8KKworICBpZighc3RhdHVzKQorICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfRE9ORSk7CisKKyAgcmV0dXJuIG15c3NoX2RvbmUoY29ubiwgc3RhdHVzKTsKKworfQorCitzdGF0aWMgc3NpemVfdCBzY3Bfc2VuZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICptZW0sIHNpemVfdCBsZW4sIENVUkxjb2RlICplcnIpCit7CisgIGludCByYzsKKyAgKHZvaWQpIHNvY2tpbmRleDsgLyogd2Ugb25seSBzdXBwb3J0IFNDUCBvbiB0aGUgZml4ZWQga25vd24gcHJpbWFyeSBzb2NrZXQgKi8KKyAgKHZvaWQpIGVycjsKKworICByYyA9IHNzaF9zY3Bfd3JpdGUoY29ubi0+cHJvdG8uc3NoYy5zY3Bfc2Vzc2lvbiwgbWVtLCBsZW4pOworCisjaWYgMAorICAvKiBUaGUgZm9sbG93aW5nIGNvZGUgaXMgbWlzbGVhZGluZywgbW9zdGx5IGFkZGVkIGFzIHdpc2hmdWwgdGhpbmtpbmcKKyAgICogdGhhdCBsaWJzc2ggYXQgc29tZSBwb2ludCB3aWxsIGltcGxlbWVudCBub24tYmxvY2tpbmcgc3NoX3NjcF93cml0ZS9yZWFkLgorICAgKiBDdXJyZW50bHkgcmMgY2FuIG9ubHkgYmUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgb3IgU1NIX0VSUk9SLiAqLworICBteXNzaF9ibG9jazJ3YWl0Zm9yKGNvbm4sIChyYyA9PSBTU0hfQUdBSU4pID8gVFJVRSA6IEZBTFNFKTsKKworICBpZihyYyA9PSBTU0hfQUdBSU4pIHsKKyAgICAqZXJyID0gQ1VSTEVfQUdBSU47CisgICAgcmV0dXJuIDA7CisgIH0KKyAgZWxzZQorI2VuZGlmCisgIGlmKHJjICE9IFNTSF9PSykgeworICAgICplcnIgPSBDVVJMRV9TU0g7CisgICAgcmV0dXJuIC0xOworICB9CisKKyAgcmV0dXJuIGxlbjsKK30KKworc3RhdGljIHNzaXplX3Qgc2NwX3JlY3Yoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbWVtLCBzaXplX3QgbGVuLCBDVVJMY29kZSAqZXJyKQoreworICBzc2l6ZV90IG5yZWFkOworICAodm9pZCkgZXJyOworICAodm9pZCkgc29ja2luZGV4OyAvKiB3ZSBvbmx5IHN1cHBvcnQgU0NQIG9uIHRoZSBmaXhlZCBrbm93biBwcmltYXJ5IHNvY2tldCAqLworCisgIC8qIGxpYnNzaCByZXR1cm5zIGludCAqLworICBucmVhZCA9IHNzaF9zY3BfcmVhZChjb25uLT5wcm90by5zc2hjLnNjcF9zZXNzaW9uLCBtZW0sIGxlbik7CisKKyNpZiAwCisgIC8qIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBtaXNsZWFkaW5nLCBtb3N0bHkgYWRkZWQgYXMgd2lzaGZ1bCB0aGlua2luZworICAgKiB0aGF0IGxpYnNzaCBhdCBzb21lIHBvaW50IHdpbGwgaW1wbGVtZW50IG5vbi1ibG9ja2luZyBzc2hfc2NwX3dyaXRlL3JlYWQuCisgICAqIEN1cnJlbnRseSByYyBjYW4gb25seSBiZSBTU0hfT0sgb3IgU1NIX0VSUk9SLiAqLworCisgIG15c3NoX2Jsb2NrMndhaXRmb3IoY29ubiwgKG5yZWFkID09IFNTSF9BR0FJTikgPyBUUlVFIDogRkFMU0UpOworICBpZihucmVhZCA9PSBTU0hfQUdBSU4pIHsKKyAgICAqZXJyID0gQ1VSTEVfQUdBSU47CisgICAgbnJlYWQgPSAtMTsKKyAgfQorI2VuZGlmCisKKyAgcmV0dXJuIG5yZWFkOworfQorCisvKgorICogPT09PT09PT09PT09PT09IFNGVFAgPT09PT09PT09PT09PT09CisgKi8KKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIHNmdHBfcGVyZm9ybSgpCisgKgorICogVGhpcyBpcyB0aGUgYWN0dWFsIERPIGZ1bmN0aW9uIGZvciBTRlRQLiBHZXQgYSBmaWxlL2RpcmVjdG9yeSBhY2NvcmRpbmcgdG8KKyAqIHRoZSBvcHRpb25zIHByZXZpb3VzbHkgc2V0dXAuCisgKi8KKworc3RhdGljCitDVVJMY29kZSBzZnRwX3BlcmZvcm0oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNvbm5lY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworCisgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiRE8gcGhhc2Ugc3RhcnRzXG4iKSk7CisKKyAgKmRvcGhhc2VfZG9uZSA9IEZBTFNFOyAvKiBub3QgZG9uZSB5ZXQgKi8KKworICAvKiBzdGFydCB0aGUgZmlyc3QgY29tbWFuZCBpbiB0aGUgRE8gcGhhc2UgKi8KKyAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfSU5JVCk7CisKKyAgLyogcnVuIHRoZSBzdGF0ZS1tYWNoaW5lICovCisgIHJlc3VsdCA9IG15c3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOworCisgICpjb25uZWN0ZWQgPSBjb25uLT5iaXRzLnRjcGNvbm5lY3RbRklSU1RTT0NLRVRdOworCisgIGlmKCpkb3BoYXNlX2RvbmUpIHsKKyAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7CisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCisvKiBjYWxsZWQgZnJvbSBtdWx0aS5jIHdoaWxlIERPaW5nICovCitzdGF0aWMgQ1VSTGNvZGUgc2Z0cF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IG15c3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOworICBpZigqZG9waGFzZV9kb25lKSB7CisgICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJETyBwaGFzZSBpcyBjb21wbGV0ZVxuIikpOworICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIEJMT0NLSU5HLCBidXQgdGhlIGZ1bmN0aW9uIGlzIHVzaW5nIHRoZSBzdGF0ZSBtYWNoaW5lIHNvIHRoZSBvbmx5IHJlYXNvbgorICAgdGhpcyBpcyBzdGlsbCBibG9ja2luZyBpcyB0aGF0IHRoZSBtdWx0aSBpbnRlcmZhY2UgY29kZSBoYXMgbm8gc3VwcG9ydCBmb3IKKyAgIGRpc2Nvbm5lY3Rpbmcgb3BlcmF0aW9ucyB0aGF0IHRha2VzIGEgd2hpbGUgKi8KK3N0YXRpYyBDVVJMY29kZSBzZnRwX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sIGRlYWRfY29ubmVjdGlvbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgICh2b2lkKSBkZWFkX2Nvbm5lY3Rpb247CisKKyAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJTU0ggRElTQ09OTkVDVCBzdGFydHMgbm93XG4iKSk7CisKKyAgaWYoY29ubi0+cHJvdG8uc3NoYy5zc2hfc2Vzc2lvbikgeworICAgIC8qIG9ubHkgaWYgdGhlcmUncyBhIHNlc3Npb24gc3RpbGwgYXJvdW5kIHRvIHVzZSEgKi8KKyAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9TSFVURE9XTik7CisgICAgcmVzdWx0ID0gbXlzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIFRSVUUpOworICB9CisKKyAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJTU0ggRElTQ09OTkVDVCBpcyBkb25lXG4iKSk7CisKKyAgcmV0dXJuIHJlc3VsdDsKKworfQorCitzdGF0aWMgQ1VSTGNvZGUgc2Z0cF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgQ1VSTGNvZGUgc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbWF0dXJlKQoreworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKworICBpZighc3RhdHVzKSB7CisgICAgLyogUG9zdCBxdW90ZSBjb21tYW5kcyBhcmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIFNGVFBfQ0xPU0Ugc3RhdGUgdG8gYXZvaWQKKyAgICAgICBlcnJvcnMgdGhhdCBjb3VsZCBoYXBwZW4gZHVlIHRvIG9wZW4gZmlsZSBoYW5kbGVzIGR1cmluZyBQT1NUUVVPVEUKKyAgICAgICBvcGVyYXRpb24gKi8KKyAgICBpZighcHJlbWF0dXJlICYmIGNvbm4tPmRhdGEtPnNldC5wb3N0cXVvdGUgJiYgIWNvbm4tPmJpdHMucmV0cnkpCisgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfU0ZUUF9QT1NUUVVPVEVfSU5JVDsKKyAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgIH0KKyAgcmV0dXJuIG15c3NoX2RvbmUoY29ubiwgc3RhdHVzKTsKK30KKworLyogcmV0dXJuIG51bWJlciBvZiBzZW50IGJ5dGVzICovCitzdGF0aWMgc3NpemVfdCBzZnRwX3NlbmQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKm1lbSwgc2l6ZV90IGxlbiwgQ1VSTGNvZGUgKmVycikKK3sKKyAgc3NpemVfdCBud3JpdGU7CisgICh2b2lkKXNvY2tpbmRleDsKKworICBud3JpdGUgPSBzZnRwX3dyaXRlKGNvbm4tPnByb3RvLnNzaGMuc2Z0cF9maWxlLCBtZW0sIGxlbik7CisKKyAgbXlzc2hfYmxvY2syd2FpdGZvcihjb25uLCBGQUxTRSk7CisKKyNpZiAwIC8qIG5vdCByZXR1cm5lZCBieSBsaWJzc2ggb24gd3JpdGUgKi8KKyAgaWYobndyaXRlID09IFNTSF9BR0FJTikgeworICAgICplcnIgPSBDVVJMRV9BR0FJTjsKKyAgICBud3JpdGUgPSAwOworICB9CisgIGVsc2UKKyNlbmRpZgorICBpZihud3JpdGUgPCAwKSB7CisgICAgKmVyciA9IENVUkxFX1NTSDsKKyAgICBud3JpdGUgPSAtMTsKKyAgfQorCisgIHJldHVybiBud3JpdGU7Cit9CisKKy8qCisgKiBSZXR1cm4gbnVtYmVyIG9mIHJlY2VpdmVkIChkZWNyeXB0ZWQpIGJ5dGVzCisgKiBvciA8MCBvbiBlcnJvcgorICovCitzdGF0aWMgc3NpemVfdCBzZnRwX3JlY3Yoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm1lbSwgc2l6ZV90IGxlbiwgQ1VSTGNvZGUgKmVycikKK3sKKyAgc3NpemVfdCBucmVhZDsKKyAgKHZvaWQpc29ja2luZGV4OworCisgIERFQlVHQVNTRVJUKGxlbiA8IENVUkxfTUFYX1JFQURfU0laRSk7CisKKyAgc3dpdGNoKGNvbm4tPnByb3RvLnNzaGMuc2Z0cF9yZWN2X3N0YXRlKSB7CisgICAgY2FzZSAwOgorICAgICAgY29ubi0+cHJvdG8uc3NoYy5zZnRwX2ZpbGVfaW5kZXggPQorICAgICAgICAgICAgc2Z0cF9hc3luY19yZWFkX2JlZ2luKGNvbm4tPnByb3RvLnNzaGMuc2Z0cF9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdClsZW4pOworICAgICAgaWYoY29ubi0+cHJvdG8uc3NoYy5zZnRwX2ZpbGVfaW5kZXggPCAwKSB7CisgICAgICAgICplcnIgPSBDVVJMRV9SRUNWX0VSUk9SOworICAgICAgICByZXR1cm4gLTE7CisgICAgICB9CisKKyAgICAgIC8qIEZBTExUSFJPVUdIICovCisgICAgY2FzZSAxOgorICAgICAgY29ubi0+cHJvdG8uc3NoYy5zZnRwX3JlY3Zfc3RhdGUgPSAxOworCisgICAgICBucmVhZCA9IHNmdHBfYXN5bmNfcmVhZChjb25uLT5wcm90by5zc2hjLnNmdHBfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbSwgKHVpbnQzMl90KWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnByb3RvLnNzaGMuc2Z0cF9maWxlX2luZGV4KTsKKworICAgICAgbXlzc2hfYmxvY2syd2FpdGZvcihjb25uLCAobnJlYWQgPT0gU1NIX0FHQUlOKT9UUlVFOkZBTFNFKTsKKworICAgICAgaWYobnJlYWQgPT0gU1NIX0FHQUlOKSB7CisgICAgICAgICplcnIgPSBDVVJMRV9BR0FJTjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgICAgfQorICAgICAgZWxzZSBpZihucmVhZCA8IDApIHsKKyAgICAgICAgKmVyciA9IENVUkxFX1JFQ1ZfRVJST1I7CisgICAgICAgIHJldHVybiAtMTsKKyAgICAgIH0KKworICAgICAgY29ubi0+cHJvdG8uc3NoYy5zZnRwX3JlY3Zfc3RhdGUgPSAwOworICAgICAgcmV0dXJuIG5yZWFkOworCisgICAgZGVmYXVsdDoKKyAgICAgIC8qIHdlIG5ldmVyIHJlYWNoIGhlcmUgKi8KKyAgICAgIHJldHVybiAtMTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCBzZnRwX3F1b3RlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK3sKKyAgY29uc3QgY2hhciAqY3A7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworICBzdHJ1Y3QgU1NIUFJPVE8gKnByb3RvcCA9IGRhdGEtPnJlcS5wcm90b3A7CisgIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOworICBDVVJMY29kZSByZXN1bHQ7CisKKyAgLyoKKyAgICogU3VwcG9ydCBzb21lIG9mIHRoZSAiRlRQIiBjb21tYW5kcworICAgKi8KKyAgY2hhciAqY21kID0gc3NoYy0+cXVvdGVfaXRlbS0+ZGF0YTsKKyAgc3NoYy0+YWNjZXB0ZmFpbCA9IEZBTFNFOworCisgIC8qIGlmIGEgY29tbWFuZCBzdGFydHMgd2l0aCBhbiBhc3Rlcmlzaywgd2hpY2ggYSBsZWdhbCBTRlRQIGNvbW1hbmQgbmV2ZXIKKyAgICAgY2FuLCB0aGUgY29tbWFuZCB3aWxsIGJlIGFsbG93ZWQgdG8gZmFpbCB3aXRob3V0IGl0IGNhdXNpbmcgYW55CisgICAgIGFib3J0cyBvciBjYW5jZWxzIGV0Yy4gSXQgd2lsbCBjYXVzZSBsaWJjdXJsIHRvIGFjdCBhcyBpZiB0aGUgY29tbWFuZAorICAgICBpcyBzdWNjZXNzZnVsLCB3aGF0ZXZlciB0aGUgc2VydmVyIHJlcG9uZHMuICovCisKKyAgaWYoY21kWzBdID09ICcqJykgeworICAgIGNtZCsrOworICAgIHNzaGMtPmFjY2VwdGZhaWwgPSBUUlVFOworICB9CisKKyAgaWYoc3RyY2FzZWNvbXBhcmUoInB3ZCIsIGNtZCkpIHsKKyAgICAvKiBvdXRwdXQgZGVidWcgb3V0cHV0IGlmIHRoYXQgaXMgcmVxdWVzdGVkICovCisgICAgY2hhciAqdG1wID0gYXByaW50ZigiMjU3IFwiJXNcIiBpcyBjdXJyZW50IGRpcmVjdG9yeS5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3AtPnBhdGgpOworICAgIGlmKCF0bXApIHsKKyAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZihkYXRhLT5zZXQudmVyYm9zZSkgeworICAgICAgQ3VybF9kZWJ1ZyhkYXRhLCBDVVJMSU5GT19IRUFERVJfT1VULCAoY2hhciAqKSAiUFdEXG4iLCA0KTsKKyAgICAgIEN1cmxfZGVidWcoZGF0YSwgQ1VSTElORk9fSEVBREVSX0lOLCB0bXAsIHN0cmxlbih0bXApKTsKKyAgICB9CisgICAgLyogdGhpcyBzZW5kcyBhbiBGVFAtbGlrZSAiaGVhZGVyIiB0byB0aGUgaGVhZGVyIGNhbGxiYWNrIHNvIHRoYXQgdGhlCisgICAgICAgY3VycmVudCBkaXJlY3RvcnkgY2FuIGJlIHJlYWQgdmVyeSBzaW1pbGFyIHRvIGhvdyBpdCBpcyByZWFkIHdoZW4KKyAgICAgICB1c2luZyBvcmRpbmFyeSBGVFAuICovCisgICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfSEVBREVSLCB0bXAsIHN0cmxlbih0bXApKTsKKyAgICBmcmVlKHRtcCk7CisgICAgaWYocmVzdWx0KSB7CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OworICAgIH0KKyAgICBlbHNlCisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKKyAgICByZXR1cm47CisgIH0KKworICAvKgorICAgKiB0aGUgYXJndW1lbnRzIGZvbGxvd2luZyB0aGUgY29tbWFuZCBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZQorICAgKiBjb21tYW5kIHdpdGggYSBzcGFjZSBzbyB3ZSBjYW4gY2hlY2sgZm9yIGl0IHVuY29uZGl0aW9uYWxseQorICAgKi8KKyAgY3AgPSBzdHJjaHIoY21kLCAnICcpOworICBpZihjcCA9PSBOVUxMKSB7CisgICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvciBpbiBTRlRQIGNvbW1hbmQuIFN1cHBseSBwYXJhbWV0ZXIocykhIik7CisgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7CisgICAgcmV0dXJuOworICB9CisKKyAgLyoKKyAgICogYWxzbywgZXZlcnkgY29tbWFuZCB0YWtlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQgc28gd2UgZ2V0IHRoYXQKKyAgICogZmlyc3QgYXJndW1lbnQgcmlnaHQgbm93CisgICAqLworICByZXN1bHQgPSBDdXJsX2dldF9wYXRobmFtZSgmY3AsICZzc2hjLT5xdW90ZV9wYXRoMSwgc3NoYy0+aG9tZWRpcik7CisgIGlmKHJlc3VsdCkgeworICAgIGlmKHJlc3VsdCA9PSBDVVJMRV9PVVRfT0ZfTUVNT1JZKQorICAgICAgZmFpbGYoZGF0YSwgIk91dCBvZiBtZW1vcnkiKTsKKyAgICBlbHNlCisgICAgICBmYWlsZihkYXRhLCAiU3ludGF4IGVycm9yOiBCYWQgZmlyc3QgcGFyYW1ldGVyIik7CisgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OworICAgIHJldHVybjsKKyAgfQorCisgIC8qCisgICAqIFNGVFAgaXMgYSBiaW5hcnkgcHJvdG9jb2wsIHNvIHdlIGRvbid0IHNlbmQgdGV4dCBjb21tYW5kcworICAgKiB0byB0aGUgc2VydmVyLiBJbnN0ZWFkLCB3ZSBzY2FuIGZvciBjb21tYW5kcyB1c2VkIGJ5CisgICAqIE9wZW5TU0gncyBzZnRwIHByb2dyYW0gYW5kIGNhbGwgdGhlIGFwcHJvcHJpYXRlIGxpYnNzaAorICAgKiBmdW5jdGlvbnMuCisgICAqLworICBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAiY2hncnAgIiwgNikgfHwKKyAgICAgc3RybmNhc2Vjb21wYXJlKGNtZCwgImNobW9kICIsIDYpIHx8CisgICAgIHN0cm5jYXNlY29tcGFyZShjbWQsICJjaG93biAiLCA2KSkgeworICAgIC8qIGF0dHJpYnV0ZSBjaGFuZ2UgKi8KKworICAgIC8qIHNzaGMtPnF1b3RlX3BhdGgxIGNvbnRhaW5zIHRoZSBtb2RlIHRvIHNldCAqLworICAgIC8qIGdldCB0aGUgZGVzdGluYXRpb24gKi8KKyAgICByZXN1bHQgPSBDdXJsX2dldF9wYXRobmFtZSgmY3AsICZzc2hjLT5xdW90ZV9wYXRoMiwgc3NoYy0+aG9tZWRpcik7CisgICAgaWYocmVzdWx0KSB7CisgICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfT1VUX09GX01FTU9SWSkKKyAgICAgICAgZmFpbGYoZGF0YSwgIk91dCBvZiBtZW1vcnkiKTsKKyAgICAgIGVsc2UKKyAgICAgICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvciBpbiBjaGdycC9jaG1vZC9jaG93bjogIgorICAgICAgICAgICAgICAiQmFkIHNlY29uZCBwYXJhbWV0ZXIiKTsKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3NoYy0+cXVvdGVfYXR0cnMgPSBOVUxMOworICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX1NUQVQpOworICAgIHJldHVybjsKKyAgfQorICBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAibG4gIiwgMykgfHwKKyAgICAgc3RybmNhc2Vjb21wYXJlKGNtZCwgInN5bWxpbmsgIiwgOCkpIHsKKyAgICAvKiBzeW1ib2xpYyBsaW5raW5nICovCisgICAgLyogc3NoYy0+cXVvdGVfcGF0aDEgaXMgdGhlIHNvdXJjZSAqLworICAgIC8qIGdldCB0aGUgZGVzdGluYXRpb24gKi8KKyAgICByZXN1bHQgPSBDdXJsX2dldF9wYXRobmFtZSgmY3AsICZzc2hjLT5xdW90ZV9wYXRoMiwgc3NoYy0+aG9tZWRpcik7CisgICAgaWYocmVzdWx0KSB7CisgICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfT1VUX09GX01FTU9SWSkKKyAgICAgICAgZmFpbGYoZGF0YSwgIk91dCBvZiBtZW1vcnkiKTsKKyAgICAgIGVsc2UKKyAgICAgICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvciBpbiBsbi9zeW1saW5rOiBCYWQgc2Vjb25kIHBhcmFtZXRlciIpOworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9TWU1MSU5LKTsKKyAgICByZXR1cm47CisgIH0KKyAgZWxzZSBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAibWtkaXIgIiwgNikpIHsKKyAgICAvKiBjcmVhdGUgZGlyICovCisgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfTUtESVIpOworICAgIHJldHVybjsKKyAgfQorICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJyZW5hbWUgIiwgNykpIHsKKyAgICAvKiByZW5hbWUgZmlsZSAqLworICAgIC8qIGZpcnN0IHBhcmFtIGlzIHRoZSBzb3VyY2UgcGF0aCAqLworICAgIC8qIHNlY29uZCBwYXJhbSBpcyB0aGUgZGVzdC4gcGF0aCAqLworICAgIHJlc3VsdCA9IEN1cmxfZ2V0X3BhdGhuYW1lKCZjcCwgJnNzaGMtPnF1b3RlX3BhdGgyLCBzc2hjLT5ob21lZGlyKTsKKyAgICBpZihyZXN1bHQpIHsKKyAgICAgIGlmKHJlc3VsdCA9PSBDVVJMRV9PVVRfT0ZfTUVNT1JZKQorICAgICAgICBmYWlsZihkYXRhLCAiT3V0IG9mIG1lbW9yeSIpOworICAgICAgZWxzZQorICAgICAgICBmYWlsZihkYXRhLCAiU3ludGF4IGVycm9yIGluIHJlbmFtZTogQmFkIHNlY29uZCBwYXJhbWV0ZXIiKTsKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfUkVOQU1FKTsKKyAgICByZXR1cm47CisgIH0KKyAgZWxzZSBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAicm1kaXIgIiwgNikpIHsKKyAgICAvKiBkZWxldGUgZGlyICovCisgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfUk1ESVIpOworICAgIHJldHVybjsKKyAgfQorICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJybSAiLCAzKSkgeworICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX1VOTElOSyk7CisgICAgcmV0dXJuOworICB9CisjaWZkZWYgSEFTX1NUQVRWRlNfU1VQUE9SVAorICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJzdGF0dmZzICIsIDgpKSB7CisgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEVfU1RBVFZGUyk7CisgICAgcmV0dXJuOworICB9CisjZW5kaWYKKworICBmYWlsZihkYXRhLCAiVW5rbm93biBTRlRQIGNvbW1hbmQiKTsKKyAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOworICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworfQorCitzdGF0aWMgdm9pZCBzZnRwX3F1b3RlX3N0YXQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQoreworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKKyAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7CisgIGNoYXIgKmNtZCA9IHNzaGMtPnF1b3RlX2l0ZW0tPmRhdGE7CisgIHNzaGMtPmFjY2VwdGZhaWwgPSBGQUxTRTsKKworICAvKiBpZiBhIGNvbW1hbmQgc3RhcnRzIHdpdGggYW4gYXN0ZXJpc2ssIHdoaWNoIGEgbGVnYWwgU0ZUUCBjb21tYW5kIG5ldmVyCisgICAgIGNhbiwgdGhlIGNvbW1hbmQgd2lsbCBiZSBhbGxvd2VkIHRvIGZhaWwgd2l0aG91dCBpdCBjYXVzaW5nIGFueQorICAgICBhYm9ydHMgb3IgY2FuY2VscyBldGMuIEl0IHdpbGwgY2F1c2UgbGliY3VybCB0byBhY3QgYXMgaWYgdGhlIGNvbW1hbmQKKyAgICAgaXMgc3VjY2Vzc2Z1bCwgd2hhdGV2ZXIgdGhlIHNlcnZlciByZXBvbmRzLiAqLworCisgIGlmKGNtZFswXSA9PSAnKicpIHsKKyAgICBjbWQrKzsKKyAgICBzc2hjLT5hY2NlcHRmYWlsID0gVFJVRTsKKyAgfQorCisgIC8qIFdlIHJlYWQgdGhlIGZpbGUgYXR0cmlidXRlcywgc3RvcmUgdGhlbSBpbiBzc2hjLT5xdW90ZV9hdHRycworICAgKiBhbmQgbW9kaWZ5IHRoZW0gYWNjb3JkaW5nbHkgdG8gY29tbWFuZC4gVGhlbiB3ZSBzd2l0Y2ggdG8KKyAgICogUVVPVEVfU0VUU1RBVCBzdGF0ZSB0byB3cml0ZSBuZXcgb25lcy4KKyAgICovCisKKyAgaWYoc3NoYy0+cXVvdGVfYXR0cnMpCisgICAgc2Z0cF9hdHRyaWJ1dGVzX2ZyZWUoc3NoYy0+cXVvdGVfYXR0cnMpOworICBzc2hjLT5xdW90ZV9hdHRycyA9IHNmdHBfc3RhdChzc2hjLT5zZnRwX3Nlc3Npb24sIHNzaGMtPnF1b3RlX3BhdGgyKTsKKyAgaWYoc3NoYy0+cXVvdGVfYXR0cnMgPT0gTlVMTCkgeworICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOworICAgIGZhaWxmKGRhdGEsICJBdHRlbXB0IHRvIGdldCBTRlRQIHN0YXRzIGZhaWxlZDogJWQiLAorICAgICAgICAgIHNmdHBfZ2V0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbikpOworICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgIHJldHVybjsKKyAgfQorCisgIC8qIE5vdyBzZXQgdGhlIG5ldyBhdHRyaWJ1dGVzLi4uICovCisgIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJjaGdycCIsIDUpKSB7CisgICAgc3NoYy0+cXVvdGVfYXR0cnMtPmdpZCA9ICh1aW50MzJfdClzdHJ0b3VsKHNzaGMtPnF1b3RlX3BhdGgxLCBOVUxMLCAxMCk7CisgICAgaWYoc3NoYy0+cXVvdGVfYXR0cnMtPmdpZCA9PSAwICYmICFJU0RJR0lUKHNzaGMtPnF1b3RlX3BhdGgxWzBdKSAmJgorICAgICAgICAhc3NoYy0+YWNjZXB0ZmFpbCkgeworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKKyAgICAgIGZhaWxmKGRhdGEsICJTeW50YXggZXJyb3I6IGNoZ3JwIGdpZCBub3QgYSBudW1iZXIiKTsKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3NoYy0+cXVvdGVfYXR0cnMtPmZsYWdzIHw9IFNTSF9GSUxFWEZFUl9BVFRSX1VJREdJRDsKKyAgfQorICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJjaG1vZCIsIDUpKSB7CisgICAgbW9kZV90IHBlcm1zOworICAgIHBlcm1zID0gKG1vZGVfdClzdHJ0b3VsKHNzaGMtPnF1b3RlX3BhdGgxLCBOVUxMLCA4KTsKKyAgICAvKiBwZXJtaXNzaW9ucyBhcmUgb2N0YWwgKi8KKyAgICBpZihwZXJtcyA9PSAwICYmICFJU0RJR0lUKHNzaGMtPnF1b3RlX3BhdGgxWzBdKSkgeworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKKyAgICAgIGZhaWxmKGRhdGEsICJTeW50YXggZXJyb3I6IGNobW9kIHBlcm1pc3Npb25zIG5vdCBhIG51bWJlciIpOworICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzc2hjLT5xdW90ZV9hdHRycy0+cGVybWlzc2lvbnMgPSBwZXJtczsKKyAgICBzc2hjLT5xdW90ZV9hdHRycy0+ZmxhZ3MgfD0gU1NIX0ZJTEVYRkVSX0FUVFJfUEVSTUlTU0lPTlM7CisgIH0KKyAgZWxzZSBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAiY2hvd24iLCA1KSkgeworICAgIHNzaGMtPnF1b3RlX2F0dHJzLT51aWQgPSAodWludDMyX3Qpc3RydG91bChzc2hjLT5xdW90ZV9wYXRoMSwgTlVMTCwgMTApOworICAgIGlmKHNzaGMtPnF1b3RlX2F0dHJzLT51aWQgPT0gMCAmJiAhSVNESUdJVChzc2hjLT5xdW90ZV9wYXRoMVswXSkgJiYKKyAgICAgICAgIXNzaGMtPmFjY2VwdGZhaWwpIHsKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7CisgICAgICBmYWlsZihkYXRhLCAiU3ludGF4IGVycm9yOiBjaG93biB1aWQgbm90IGEgbnVtYmVyIik7CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHNzaGMtPnF1b3RlX2F0dHJzLT5mbGFncyB8PSBTU0hfRklMRVhGRVJfQVRUUl9VSURHSUQ7CisgIH0KKworICAvKiBOb3cgc2VuZCB0aGUgY29tcGxldGVkIHN0cnVjdHVyZS4uLiAqLworICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9TRVRTVEFUKTsKKyAgcmV0dXJuOworfQorCitDVVJMY29kZSBDdXJsX3NzaF9pbml0KHZvaWQpCit7CisgIGlmKHNzaF9pbml0KCkpIHsKKyAgICBERUJVR0YoZnByaW50ZihzdGRlcnIsICJFcnJvcjogbGlic3NoX2luaXQgZmFpbGVkXG4iKSk7CisgICAgcmV0dXJuIENVUkxFX0ZBSUxFRF9JTklUOworICB9CisgIHJldHVybiBDVVJMRV9PSzsKK30KKwordm9pZCBDdXJsX3NzaF9jbGVhbnVwKHZvaWQpCit7CisgICh2b2lkKXNzaF9maW5hbGl6ZSgpOworfQorCitzaXplX3QgQ3VybF9zc2hfdmVyc2lvbihjaGFyICpidWZmZXIsIHNpemVfdCBidWZsZW4pCit7CisgIHJldHVybiBtc25wcmludGYoYnVmZmVyLCBidWZsZW4sICJsaWJzc2gvJXMiLCBDVVJMX0xJQlNTSF9WRVJTSU9OKTsKK30KKworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0VfTElCU1NIICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92c3NoL2xpYnNzaDIuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Zzc2gvbGlic3NoMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMDQzNzQKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92c3NoL2xpYnNzaDIuYwpAQCAtMCwwICsxLDM1MDkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogI2RlZmluZSBDVVJMX0xJQlNTSDJfREVCVUcgKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmZGVmIFVTRV9MSUJTU0gyCisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworI2luY2x1ZGUgPGxpYnNzaDIuaD4KKyNpbmNsdWRlIDxsaWJzc2gyX3NmdHAuaD4KKworI2lmZGVmIEhBVkVfRkNOVExfSAorI2luY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9BUlBBX0lORVRfSAorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9VVFNOQU1FX0gKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVREQl9ICisjaW5jbHVkZSA8bmV0ZGIuaD4KKyNlbmRpZgorI2lmZGVmIF9fVk1TCisjaW5jbHVkZSA8aW4uaD4KKyNpbmNsdWRlIDxpbmV0Lmg+CisjZW5kaWYKKworI2lmIChkZWZpbmVkKE5FVFdBUkUpICYmIGRlZmluZWQoX19OT1ZFTExfTElCQ19fKSkKKyN1bmRlZiBpbl9hZGRyX3QKKyNkZWZpbmUgaW5fYWRkcl90IHVuc2lnbmVkIGxvbmcKKyNlbmRpZgorCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisjaW5jbHVkZSAidXJsZGF0YS5oIgorI2luY2x1ZGUgInNlbmRmLmgiCisjaW5jbHVkZSAiaG9zdGlwLmgiCisjaW5jbHVkZSAicHJvZ3Jlc3MuaCIKKyNpbmNsdWRlICJ0cmFuc2Zlci5oIgorI2luY2x1ZGUgImVzY2FwZS5oIgorI2luY2x1ZGUgImh0dHAuaCIgLyogZm9yIEhUVFAgcHJveHkgdHVubmVsIHN0dWZmICovCisjaW5jbHVkZSAic3NoLmgiCisjaW5jbHVkZSAidXJsLmgiCisjaW5jbHVkZSAic3BlZWRjaGVjay5oIgorI2luY2x1ZGUgImdldGluZm8uaCIKKyNpbmNsdWRlICJzdHJkdXAuaCIKKyNpbmNsdWRlICJzdHJjYXNlLmgiCisjaW5jbHVkZSAidnRscy92dGxzLmgiCisjaW5jbHVkZSAiY29ubmVjdC5oIgorI2luY2x1ZGUgInN0cmVycm9yLmgiCisjaW5jbHVkZSAiaW5ldF9udG9wLmgiCisjaW5jbHVkZSAicGFyc2VkYXRlLmgiIC8qIGZvciB0aGUgd2VlayBkYXkgYW5kIG1vbnRoIG5hbWVzICovCisjaW5jbHVkZSAic29ja2FkZHIuaCIgLyogcmVxdWlyZWQgZm9yIEN1cmxfc29ja2FkZHJfc3RvcmFnZSAqLworI2luY2x1ZGUgInN0cnRvb2ZmdC5oIgorI2luY2x1ZGUgIm11bHRpaWYuaCIKKyNpbmNsdWRlICJzZWxlY3QuaCIKKyNpbmNsdWRlICJ3YXJubGVzcy5oIgorI2luY2x1ZGUgImN1cmxfcGF0aC5oIgorCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKyNpZiBMSUJTU0gyX1ZFUlNJT05fTlVNID49IDB4MDEwMjA2CisvKiBsaWJzc2gyX3NmdHBfc3RhdHZmcyBhbmQgZnJpZW5kcyB3ZXJlIGFkZGVkIGluIDEuMi42ICovCisjZGVmaW5lIEhBU19TVEFUVkZTX1NVUFBPUlQgMQorI2VuZGlmCisKKyNkZWZpbmUgc2Z0cF9saWJzc2gyX2xhc3RfZXJyb3IocykgY3VybHhfdWx0b3NpKGxpYnNzaDJfc2Z0cF9sYXN0X2Vycm9yKHMpKQorCisjZGVmaW5lIHNmdHBfbGlic3NoMl9yZWFscGF0aChzLHAsdCxtKSBcCisgICAgICAgIGxpYnNzaDJfc2Z0cF9zeW1saW5rX2V4KChzKSwgKHApLCBjdXJseF91enRvdWkoc3RybGVuKHApKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCksIChtKSwgTElCU1NIMl9TRlRQX1JFQUxQQVRIKQorCisKKy8qIExvY2FsIGZ1bmN0aW9uczogKi8KK3N0YXRpYyBjb25zdCBjaGFyICpzZnRwX2xpYnNzaDJfc3RyZXJyb3IoaW50IGVycik7CitzdGF0aWMgTElCU1NIMl9BTExPQ19GVU5DKG15X2xpYnNzaDJfbWFsbG9jKTsKK3N0YXRpYyBMSUJTU0gyX1JFQUxMT0NfRlVOQyhteV9saWJzc2gyX3JlYWxsb2MpOworc3RhdGljIExJQlNTSDJfRlJFRV9GVU5DKG15X2xpYnNzaDJfZnJlZSk7CisKK3N0YXRpYyBDVVJMY29kZSBzc2hfZm9yY2Vfa25vd25ob3N0X2tleV90eXBlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CitzdGF0aWMgQ1VSTGNvZGUgc3NoX2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKTsKK3N0YXRpYyBDVVJMY29kZSBzc2hfbXVsdGlfc3RhdGVtYWNoKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7CitzdGF0aWMgQ1VSTGNvZGUgc3NoX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7CisKK3N0YXRpYyBDVVJMY29kZSBzY3BfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUsIGJvb2wgcHJlbWF0dXJlKTsKK3N0YXRpYyBDVVJMY29kZSBzY3BfZG9pbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpOworc3RhdGljIENVUkxjb2RlIHNjcF9kaXNjb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCBkZWFkX2Nvbm5lY3Rpb24pOworCitzdGF0aWMgQ1VSTGNvZGUgc2Z0cF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUsIGJvb2wgcHJlbWF0dXJlKTsKK3N0YXRpYyBDVVJMY29kZSBzZnRwX2RvaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvcGhhc2VfZG9uZSk7CitzdGF0aWMgQ1VSTGNvZGUgc2Z0cF9kaXNjb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCBkZWFkKTsKK3N0YXRpYworQ1VSTGNvZGUgc2Z0cF9wZXJmb3JtKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICBib29sICpjb25uZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9waGFzZV9kb25lKTsKK3N0YXRpYyBpbnQgc3NoX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2NrKTsKK3N0YXRpYyBpbnQgc3NoX3BlcmZvcm1fZ2V0c29jayhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29jayk7CitzdGF0aWMgQ1VSTGNvZGUgc3NoX3NldHVwX2Nvbm5lY3Rpb24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKKworLyoKKyAqIFNDUCBwcm90b2NvbCBoYW5kbGVyLgorICovCisKK2NvbnN0IHN0cnVjdCBDdXJsX2hhbmRsZXIgQ3VybF9oYW5kbGVyX3NjcCA9IHsKKyAgIlNDUCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzY2hlbWUgKi8KKyAgc3NoX3NldHVwX2Nvbm5lY3Rpb24sICAgICAgICAgICAgICAgICAvKiBzZXR1cF9jb25uZWN0aW9uICovCisgIHNzaF9kbywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9faXQgKi8KKyAgc2NwX2RvbmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb25lICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9fbW9yZSAqLworICBzc2hfY29ubmVjdCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3RfaXQgKi8KKyAgc3NoX211bHRpX3N0YXRlbWFjaCwgICAgICAgICAgICAgICAgICAvKiBjb25uZWN0aW5nICovCisgIHNjcF9kb2luZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9pbmcgKi8KKyAgc3NoX2dldHNvY2ssICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcm90b19nZXRzb2NrICovCisgIHNzaF9nZXRzb2NrLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9pbmdfZ2V0c29jayAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbW9yZV9nZXRzb2NrICovCisgIHNzaF9wZXJmb3JtX2dldHNvY2ssICAgICAgICAgICAgICAgICAgLyogcGVyZm9ybV9nZXRzb2NrICovCisgIHNjcF9kaXNjb25uZWN0LCAgICAgICAgICAgICAgICAgICAgICAgLyogZGlzY29ubmVjdCAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWR3cml0ZSAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3Rpb25fY2hlY2sgKi8KKyAgUE9SVF9TU0gsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkZWZwb3J0ICovCisgIENVUkxQUk9UT19TQ1AsICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJvdG9jb2wgKi8KKyAgUFJPVE9QVF9ESVJMT0NLIHwgUFJPVE9QVF9DTE9TRUFDVElPTgorICB8IFBST1RPUFRfTk9VUkxRVUVSWSAgICAgICAgICAgICAgICAgIC8qIGZsYWdzICovCit9OworCisKKy8qCisgKiBTRlRQIHByb3RvY29sIGhhbmRsZXIuCisgKi8KKworY29uc3Qgc3RydWN0IEN1cmxfaGFuZGxlciBDdXJsX2hhbmRsZXJfc2Z0cCA9IHsKKyAgIlNGVFAiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzY2hlbWUgKi8KKyAgc3NoX3NldHVwX2Nvbm5lY3Rpb24sICAgICAgICAgICAgICAgICAvKiBzZXR1cF9jb25uZWN0aW9uICovCisgIHNzaF9kbywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9faXQgKi8KKyAgc2Z0cF9kb25lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb25lICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9fbW9yZSAqLworICBzc2hfY29ubmVjdCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3RfaXQgKi8KKyAgc3NoX211bHRpX3N0YXRlbWFjaCwgICAgICAgICAgICAgICAgICAvKiBjb25uZWN0aW5nICovCisgIHNmdHBfZG9pbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9pbmcgKi8KKyAgc3NoX2dldHNvY2ssICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcm90b19nZXRzb2NrICovCisgIHNzaF9nZXRzb2NrLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9pbmdfZ2V0c29jayAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbW9yZV9nZXRzb2NrICovCisgIHNzaF9wZXJmb3JtX2dldHNvY2ssICAgICAgICAgICAgICAgICAgLyogcGVyZm9ybV9nZXRzb2NrICovCisgIHNmdHBfZGlzY29ubmVjdCwgICAgICAgICAgICAgICAgICAgICAgLyogZGlzY29ubmVjdCAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWR3cml0ZSAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3Rpb25fY2hlY2sgKi8KKyAgUE9SVF9TU0gsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkZWZwb3J0ICovCisgIENVUkxQUk9UT19TRlRQLCAgICAgICAgICAgICAgICAgICAgICAgLyogcHJvdG9jb2wgKi8KKyAgUFJPVE9QVF9ESVJMT0NLIHwgUFJPVE9QVF9DTE9TRUFDVElPTgorICB8IFBST1RPUFRfTk9VUkxRVUVSWSAgICAgICAgICAgICAgICAgIC8qIGZsYWdzICovCit9OworCitzdGF0aWMgdm9pZAora2JkX2NhbGxiYWNrKGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lX2xlbiwgY29uc3QgY2hhciAqaW5zdHJ1Y3Rpb24sCisgICAgICAgICAgICAgaW50IGluc3RydWN0aW9uX2xlbiwgaW50IG51bV9wcm9tcHRzLAorICAgICAgICAgICAgIGNvbnN0IExJQlNTSDJfVVNFUkFVVEhfS0JESU5UX1BST01QVCAqcHJvbXB0cywKKyAgICAgICAgICAgICBMSUJTU0gyX1VTRVJBVVRIX0tCRElOVF9SRVNQT05TRSAqcmVzcG9uc2VzLAorICAgICAgICAgICAgIHZvaWQgKiphYnN0cmFjdCkKK3sKKyAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKHN0cnVjdCBjb25uZWN0ZGF0YSAqKSphYnN0cmFjdDsKKworI2lmZGVmIENVUkxfTElCU1NIMl9ERUJVRworICBmcHJpbnRmKHN0ZGVyciwgIm5hbWU9JXNcbiIsIG5hbWUpOworICBmcHJpbnRmKHN0ZGVyciwgIm5hbWVfbGVuPSVkXG4iLCBuYW1lX2xlbik7CisgIGZwcmludGYoc3RkZXJyLCAiaW5zdHJ1Y3Rpb249JXNcbiIsIGluc3RydWN0aW9uKTsKKyAgZnByaW50ZihzdGRlcnIsICJpbnN0cnVjdGlvbl9sZW49JWRcbiIsIGluc3RydWN0aW9uX2xlbik7CisgIGZwcmludGYoc3RkZXJyLCAibnVtX3Byb21wdHM9JWRcbiIsIG51bV9wcm9tcHRzKTsKKyNlbHNlCisgICh2b2lkKW5hbWU7CisgICh2b2lkKW5hbWVfbGVuOworICAodm9pZClpbnN0cnVjdGlvbjsKKyAgKHZvaWQpaW5zdHJ1Y3Rpb25fbGVuOworI2VuZGlmICAvKiBDVVJMX0xJQlNTSDJfREVCVUcgKi8KKyAgaWYobnVtX3Byb21wdHMgPT0gMSkgeworICAgIHJlc3BvbnNlc1swXS50ZXh0ID0gc3RyZHVwKGNvbm4tPnBhc3N3ZCk7CisgICAgcmVzcG9uc2VzWzBdLmxlbmd0aCA9IGN1cmx4X3V6dG91aShzdHJsZW4oY29ubi0+cGFzc3dkKSk7CisgIH0KKyAgKHZvaWQpcHJvbXB0czsKKyAgKHZvaWQpYWJzdHJhY3Q7Cit9IC8qIGtiZF9jYWxsYmFjayAqLworCitzdGF0aWMgQ1VSTGNvZGUgc2Z0cF9saWJzc2gyX2Vycm9yX3RvX0NVUkxFKGludCBlcnIpCit7CisgIHN3aXRjaChlcnIpIHsKKyAgICBjYXNlIExJQlNTSDJfRlhfT0s6CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisKKyAgICBjYXNlIExJQlNTSDJfRlhfTk9fU1VDSF9GSUxFOgorICAgIGNhc2UgTElCU1NIMl9GWF9OT19TVUNIX1BBVEg6CisgICAgICByZXR1cm4gQ1VSTEVfUkVNT1RFX0ZJTEVfTk9UX0ZPVU5EOworCisgICAgY2FzZSBMSUJTU0gyX0ZYX1BFUk1JU1NJT05fREVOSUVEOgorICAgIGNhc2UgTElCU1NIMl9GWF9XUklURV9QUk9URUNUOgorICAgIGNhc2UgTElCU1NIMl9GWF9MT0NLX0NPTkZsSUNUOgorICAgICAgcmV0dXJuIENVUkxFX1JFTU9URV9BQ0NFU1NfREVOSUVEOworCisgICAgY2FzZSBMSUJTU0gyX0ZYX05PX1NQQUNFX09OX0ZJTEVTWVNURU06CisgICAgY2FzZSBMSUJTU0gyX0ZYX1FVT1RBX0VYQ0VFREVEOgorICAgICAgcmV0dXJuIENVUkxFX1JFTU9URV9ESVNLX0ZVTEw7CisKKyAgICBjYXNlIExJQlNTSDJfRlhfRklMRV9BTFJFQURZX0VYSVNUUzoKKyAgICAgIHJldHVybiBDVVJMRV9SRU1PVEVfRklMRV9FWElTVFM7CisKKyAgICBjYXNlIExJQlNTSDJfRlhfRElSX05PVF9FTVBUWToKKyAgICAgIHJldHVybiBDVVJMRV9RVU9URV9FUlJPUjsKKworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiBDVVJMRV9TU0g7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBsaWJzc2gyX3Nlc3Npb25fZXJyb3JfdG9fQ1VSTEUoaW50IGVycikKK3sKKyAgc3dpdGNoKGVycikgeworICAgIC8qIE9yZGVyZWQgYnkgb3JkZXIgb2YgYXBwZWFyYW5jZSBpbiBsaWJzc2gyLmggKi8KKyAgICBjYXNlIExJQlNTSDJfRVJST1JfTk9ORToKKyAgICAgIHJldHVybiBDVVJMRV9PSzsKKworICAgIC8qIFRoaXMgaXMgdGhlIGVycm9yIHJldHVybmVkIGJ5IGxpYnNzaDJfc2NwX3JlY3YyCisgICAgICogb24gdW5rbm93biBmaWxlICovCisgICAgY2FzZSBMSUJTU0gyX0VSUk9SX1NDUF9QUk9UT0NPTDoKKyAgICAgIHJldHVybiBDVVJMRV9SRU1PVEVfRklMRV9OT1RfRk9VTkQ7CisKKyAgICBjYXNlIExJQlNTSDJfRVJST1JfU09DS0VUX05PTkU6CisgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOworCisgICAgY2FzZSBMSUJTU0gyX0VSUk9SX0FMTE9DOgorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICBjYXNlIExJQlNTSDJfRVJST1JfU09DS0VUX1NFTkQ6CisgICAgICByZXR1cm4gQ1VSTEVfU0VORF9FUlJPUjsKKworICAgIGNhc2UgTElCU1NIMl9FUlJPUl9IT1NUS0VZX0lOSVQ6CisgICAgY2FzZSBMSUJTU0gyX0VSUk9SX0hPU1RLRVlfU0lHTjoKKyAgICBjYXNlIExJQlNTSDJfRVJST1JfUFVCTElDS0VZX1VOUkVDT0dOSVpFRDoKKyAgICBjYXNlIExJQlNTSDJfRVJST1JfUFVCTElDS0VZX1VOVkVSSUZJRUQ6CisgICAgICByZXR1cm4gQ1VSTEVfUEVFUl9GQUlMRURfVkVSSUZJQ0FUSU9OOworCisgICAgY2FzZSBMSUJTU0gyX0VSUk9SX1BBU1NXT1JEX0VYUElSRUQ6CisgICAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOworCisgICAgY2FzZSBMSUJTU0gyX0VSUk9SX1NPQ0tFVF9USU1FT1VUOgorICAgIGNhc2UgTElCU1NIMl9FUlJPUl9USU1FT1VUOgorICAgICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKKworICAgIGNhc2UgTElCU1NIMl9FUlJPUl9FQUdBSU46CisgICAgICByZXR1cm4gQ1VSTEVfQUdBSU47CisgIH0KKworICByZXR1cm4gQ1VSTEVfU1NIOworfQorCitzdGF0aWMgTElCU1NIMl9BTExPQ19GVU5DKG15X2xpYnNzaDJfbWFsbG9jKQoreworICAodm9pZClhYnN0cmFjdDsgLyogYXJnIG5vdCB1c2VkICovCisgIHJldHVybiBtYWxsb2MoY291bnQpOworfQorCitzdGF0aWMgTElCU1NIMl9SRUFMTE9DX0ZVTkMobXlfbGlic3NoMl9yZWFsbG9jKQoreworICAodm9pZClhYnN0cmFjdDsgLyogYXJnIG5vdCB1c2VkICovCisgIHJldHVybiByZWFsbG9jKHB0ciwgY291bnQpOworfQorCitzdGF0aWMgTElCU1NIMl9GUkVFX0ZVTkMobXlfbGlic3NoMl9mcmVlKQoreworICAodm9pZClhYnN0cmFjdDsgLyogYXJnIG5vdCB1c2VkICovCisgIGlmKHB0cikgLyogc3NoMiBhZ2VudCBzb21ldGltZXMgY2FsbCBmcmVlIHdpdGggbnVsbCBwdHIgKi8KKyAgICBmcmVlKHB0cik7Cit9CisKKy8qCisgKiBTU0ggU3RhdGUgbWFjaGluZSByZWxhdGVkIGNvZGUKKyAqLworLyogVGhpcyBpcyB0aGUgT05MWSB3YXkgdG8gY2hhbmdlIFNTSCBzdGF0ZSEgKi8KK3N0YXRpYyB2b2lkIHN0YXRlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgc3Noc3RhdGUgbm93c3RhdGUpCit7CisgIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOworI2lmIGRlZmluZWQoREVCVUdCVUlMRCkgJiYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUykKKyAgLyogZm9yIGRlYnVnIHB1cnBvc2VzICovCisgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbmFtZXNbXSA9IHsKKyAgICAiU1NIX1NUT1AiLAorICAgICJTU0hfSU5JVCIsCisgICAgIlNTSF9TX1NUQVJUVVAiLAorICAgICJTU0hfSE9TVEtFWSIsCisgICAgIlNTSF9BVVRITElTVCIsCisgICAgIlNTSF9BVVRIX1BLRVlfSU5JVCIsCisgICAgIlNTSF9BVVRIX1BLRVkiLAorICAgICJTU0hfQVVUSF9QQVNTX0lOSVQiLAorICAgICJTU0hfQVVUSF9QQVNTIiwKKyAgICAiU1NIX0FVVEhfQUdFTlRfSU5JVCIsCisgICAgIlNTSF9BVVRIX0FHRU5UX0xJU1QiLAorICAgICJTU0hfQVVUSF9BR0VOVCIsCisgICAgIlNTSF9BVVRIX0hPU1RfSU5JVCIsCisgICAgIlNTSF9BVVRIX0hPU1QiLAorICAgICJTU0hfQVVUSF9LRVlfSU5JVCIsCisgICAgIlNTSF9BVVRIX0tFWSIsCisgICAgIlNTSF9BVVRIX0dTU0FQSSIsCisgICAgIlNTSF9BVVRIX0RPTkUiLAorICAgICJTU0hfU0ZUUF9JTklUIiwKKyAgICAiU1NIX1NGVFBfUkVBTFBBVEgiLAorICAgICJTU0hfU0ZUUF9RVU9URV9JTklUIiwKKyAgICAiU1NIX1NGVFBfUE9TVFFVT1RFX0lOSVQiLAorICAgICJTU0hfU0ZUUF9RVU9URSIsCisgICAgIlNTSF9TRlRQX05FWFRfUVVPVEUiLAorICAgICJTU0hfU0ZUUF9RVU9URV9TVEFUIiwKKyAgICAiU1NIX1NGVFBfUVVPVEVfU0VUU1RBVCIsCisgICAgIlNTSF9TRlRQX1FVT1RFX1NZTUxJTksiLAorICAgICJTU0hfU0ZUUF9RVU9URV9NS0RJUiIsCisgICAgIlNTSF9TRlRQX1FVT1RFX1JFTkFNRSIsCisgICAgIlNTSF9TRlRQX1FVT1RFX1JNRElSIiwKKyAgICAiU1NIX1NGVFBfUVVPVEVfVU5MSU5LIiwKKyAgICAiU1NIX1NGVFBfUVVPVEVfU1RBVFZGUyIsCisgICAgIlNTSF9TRlRQX0dFVElORk8iLAorICAgICJTU0hfU0ZUUF9GSUxFVElNRSIsCisgICAgIlNTSF9TRlRQX1RSQU5TX0lOSVQiLAorICAgICJTU0hfU0ZUUF9VUExPQURfSU5JVCIsCisgICAgIlNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQiLAorICAgICJTU0hfU0ZUUF9DUkVBVEVfRElSUyIsCisgICAgIlNTSF9TRlRQX0NSRUFURV9ESVJTX01LRElSIiwKKyAgICAiU1NIX1NGVFBfUkVBRERJUl9JTklUIiwKKyAgICAiU1NIX1NGVFBfUkVBRERJUiIsCisgICAgIlNTSF9TRlRQX1JFQURESVJfTElOSyIsCisgICAgIlNTSF9TRlRQX1JFQURESVJfQk9UVE9NIiwKKyAgICAiU1NIX1NGVFBfUkVBRERJUl9ET05FIiwKKyAgICAiU1NIX1NGVFBfRE9XTkxPQURfSU5JVCIsCisgICAgIlNTSF9TRlRQX0RPV05MT0FEX1NUQVQiLAorICAgICJTU0hfU0ZUUF9DTE9TRSIsCisgICAgIlNTSF9TRlRQX1NIVVRET1dOIiwKKyAgICAiU1NIX1NDUF9UUkFOU19JTklUIiwKKyAgICAiU1NIX1NDUF9VUExPQURfSU5JVCIsCisgICAgIlNTSF9TQ1BfRE9XTkxPQURfSU5JVCIsCisgICAgIlNTSF9TQ1BfRE9XTkxPQUQiLAorICAgICJTU0hfU0NQX0RPTkUiLAorICAgICJTU0hfU0NQX1NFTkRfRU9GIiwKKyAgICAiU1NIX1NDUF9XQUlUX0VPRiIsCisgICAgIlNTSF9TQ1BfV0FJVF9DTE9TRSIsCisgICAgIlNTSF9TQ1BfQ0hBTk5FTF9GUkVFIiwKKyAgICAiU1NIX1NFU1NJT05fRElTQ09OTkVDVCIsCisgICAgIlNTSF9TRVNTSU9OX0ZSRUUiLAorICAgICJRVUlUIgorICB9OworCisgIC8qIGEgcHJlY2F1dGlvbiB0byBtYWtlIHN1cmUgdGhlIGxpc3RzIGFyZSBpbiBzeW5jICovCisgIERFQlVHQVNTRVJUKHNpemVvZihuYW1lcykvc2l6ZW9mKG5hbWVzWzBdKSA9PSBTU0hfTEFTVCk7CisKKyAgaWYoc3NoYy0+c3RhdGUgIT0gbm93c3RhdGUpIHsKKyAgICBpbmZvZihjb25uLT5kYXRhLCAiU0ZUUCAlcCBzdGF0ZSBjaGFuZ2UgZnJvbSAlcyB0byAlc1xuIiwKKyAgICAgICAgICAodm9pZCAqKXNzaGMsIG5hbWVzW3NzaGMtPnN0YXRlXSwgbmFtZXNbbm93c3RhdGVdKTsKKyAgfQorI2VuZGlmCisKKyAgc3NoYy0+c3RhdGUgPSBub3dzdGF0ZTsKK30KKworCisjaWZkZWYgSEFWRV9MSUJTU0gyX0tOT1dOSE9TVF9BUEkKK3N0YXRpYyBpbnQgc3Noa2V5Y2FsbGJhY2soc3RydWN0IEN1cmxfZWFzeSAqZWFzeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGN1cmxfa2hrZXkgKmtub3dua2V5LCAvKiBrbm93biAqLworICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3VybF9raGtleSAqZm91bmRrZXksIC8qIGZvdW5kICovCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY3VybF9raG1hdGNoIG1hdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRwKQoreworICAodm9pZCllYXN5OworICAodm9pZClrbm93bmtleTsKKyAgKHZvaWQpZm91bmRrZXk7CisgICh2b2lkKWNsaWVudHA7CisKKyAgLyogd2Ugb25seSBhbGxvdyBwZXJmZWN0IG1hdGNoZXMsIGFuZCB3ZSByZWplY3QgZXZlcnl0aGluZyBlbHNlICovCisgIHJldHVybiAobWF0Y2ggIT0gQ1VSTEtITUFUQ0hfT0spP0NVUkxLSFNUQVRfUkVKRUNUOkNVUkxLSFNUQVRfRklORTsKK30KKyNlbmRpZgorCisvKgorICogRWFybGllciBsaWJzc2gyIHZlcnNpb25zIGRpZG4ndCBoYXZlIHRoZSBhYmlsaXR5IHRvIHNlZWsgdG8gNjRiaXQgcG9zaXRpb25zCisgKiB3aXRoIDMyYml0IHNpemVfdC4KKyAqLworI2lmZGVmIEhBVkVfTElCU1NIMl9TRlRQX1NFRUs2NAorI2RlZmluZSBTRlRQX1NFRUsoeCx5KSBsaWJzc2gyX3NmdHBfc2VlazY0KHgsIChsaWJzc2gyX3VpbnQ2NF90KXkpCisjZWxzZQorI2RlZmluZSBTRlRQX1NFRUsoeCx5KSBsaWJzc2gyX3NmdHBfc2Vlayh4LCAoc2l6ZV90KXkpCisjZW5kaWYKKworLyoKKyAqIEVhcmxpZXIgbGlic3NoMiB2ZXJzaW9ucyBkaWRuJ3QgZG8gU0NQIHByb3Blcmx5IGJleW9uZCAzMmJpdCBzaXplcyBvbiAzMmJpdAorICogYXJjaGl0ZWN0dXJlcyBzbyB3ZSBjaGVjayBvZiB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9uIGlzIHByZXNlbnQuCisgKi8KKyNpZm5kZWYgSEFWRV9MSUJTU0gyX1NDUF9TRU5ENjQKKyNkZWZpbmUgU0NQX1NFTkQoYSxiLGMsZCkgbGlic3NoMl9zY3Bfc2VuZF9leChhLCBiLCAoaW50KShjKSwgKHNpemVfdClkLCAwLCAwKQorI2Vsc2UKKyNkZWZpbmUgU0NQX1NFTkQoYSxiLGMsZCkgbGlic3NoMl9zY3Bfc2VuZDY0KGEsIGIsIChpbnQpKGMpLCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaWJzc2gyX3VpbnQ2NF90KWQsIDAsIDApCisjZW5kaWYKKworLyoKKyAqIGxpYnNzaDIgMS4yLjggZml4ZWQgdGhlIHByb2JsZW0gd2l0aCAzMmJpdCBpbnRzIHVzZWQgZm9yIHNvY2tldHMgb24gd2luNjQuCisgKi8KKyNpZmRlZiBIQVZFX0xJQlNTSDJfU0VTU0lPTl9IQU5EU0hBS0UKKyNkZWZpbmUgbGlic3NoMl9zZXNzaW9uX3N0YXJ0dXAoeCx5KSBsaWJzc2gyX3Nlc3Npb25faGFuZHNoYWtlKHgseSkKKyNlbmRpZgorCitzdGF0aWMgQ1VSTGNvZGUgc3NoX2tub3duaG9zdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworCisjaWZkZWYgSEFWRV9MSUJTU0gyX0tOT1dOSE9TVF9BUEkKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisKKyAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX0tOT1dOSE9TVFNdKSB7CisgICAgLyogd2UncmUgYXNrZWQgdG8gdmVyaWZ5IHRoZSBob3N0IGFnYWluc3QgYSBmaWxlICovCisgICAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7CisgICAgaW50IHJjOworICAgIGludCBrZXl0eXBlOworICAgIHNpemVfdCBrZXlsZW47CisgICAgY29uc3QgY2hhciAqcmVtb3Rla2V5ID0gbGlic3NoMl9zZXNzaW9uX2hvc3RrZXkoc3NoYy0+c3NoX3Nlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleWxlbiwgJmtleXR5cGUpOworICAgIGludCBrZXljaGVjayA9IExJQlNTSDJfS05PV05IT1NUX0NIRUNLX0ZBSUxVUkU7CisgICAgaW50IGtleWJpdCA9IDA7CisKKyAgICBpZihyZW1vdGVrZXkpIHsKKyAgICAgIC8qCisgICAgICAgKiBBIHN1YmplY3QgdG8gZmlndXJlIG91dCBpcyB3aGF0IGhvc3QgbmFtZSB3ZSBuZWVkIHRvIHBhc3MgaW4gaGVyZS4KKyAgICAgICAqIFdoYXQgaG9zdCBuYW1lIGRvZXMgT3BlblNTSCBzdG9yZSBpbiBpdHMgZmlsZSBpZiBhbiBJRE4gbmFtZSBpcworICAgICAgICogdXNlZD8KKyAgICAgICAqLworICAgICAgc3RydWN0IGxpYnNzaDJfa25vd25ob3N0ICpob3N0OworICAgICAgZW51bSBjdXJsX2tobWF0Y2gga2V5bWF0Y2g7CisgICAgICBjdXJsX3NzaGtleWNhbGxiYWNrIGZ1bmMgPQorICAgICAgICBkYXRhLT5zZXQuc3NoX2tleWZ1bmM/ZGF0YS0+c2V0LnNzaF9rZXlmdW5jOnNzaGtleWNhbGxiYWNrOworICAgICAgc3RydWN0IGN1cmxfa2hrZXkga25vd25rZXk7CisgICAgICBzdHJ1Y3QgY3VybF9raGtleSAqa25vd25rZXlwID0gTlVMTDsKKyAgICAgIHN0cnVjdCBjdXJsX2toa2V5IGZvdW5ka2V5OworCisgICAgICBzd2l0Y2goa2V5dHlwZSkgeworICAgICAgY2FzZSBMSUJTU0gyX0hPU1RLRVlfVFlQRV9SU0E6CisgICAgICAgIGtleWJpdCA9IExJQlNTSDJfS05PV05IT1NUX0tFWV9TU0hSU0E7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBMSUJTU0gyX0hPU1RLRVlfVFlQRV9EU1M6CisgICAgICAgIGtleWJpdCA9IExJQlNTSDJfS05PV05IT1NUX0tFWV9TU0hEU1M7CisgICAgICAgIGJyZWFrOworI2lmZGVmIExJQlNTSDJfSE9TVEtFWV9UWVBFX0VDRFNBXzI1NgorICAgICAgY2FzZSBMSUJTU0gyX0hPU1RLRVlfVFlQRV9FQ0RTQV8yNTY6CisgICAgICAgIGtleWJpdCA9IExJQlNTSDJfS05PV05IT1NUX0tFWV9FQ0RTQV8yNTY7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisjaWZkZWYgTElCU1NIMl9IT1NUS0VZX1RZUEVfRUNEU0FfMzg0CisgICAgICBjYXNlIExJQlNTSDJfSE9TVEtFWV9UWVBFX0VDRFNBXzM4NDoKKyAgICAgICAga2V5Yml0ID0gTElCU1NIMl9LTk9XTkhPU1RfS0VZX0VDRFNBXzM4NDsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBMSUJTU0gyX0hPU1RLRVlfVFlQRV9FQ0RTQV81MjEKKyAgICAgIGNhc2UgTElCU1NIMl9IT1NUS0VZX1RZUEVfRUNEU0FfNTIxOgorICAgICAgICBrZXliaXQgPSBMSUJTU0gyX0tOT1dOSE9TVF9LRVlfRUNEU0FfNTIxOworICAgICAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIExJQlNTSDJfSE9TVEtFWV9UWVBFX0VEMjU1MTkKKyAgICAgIGNhc2UgTElCU1NIMl9IT1NUS0VZX1RZUEVfRUQyNTUxOToKKyAgICAgICAga2V5Yml0ID0gTElCU1NIMl9LTk9XTkhPU1RfS0VZX0VEMjU1MTk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICBkZWZhdWx0OgorICAgICAgICBpbmZvZihkYXRhLCAidW5zdXBwb3J0ZWQga2V5IHR5cGUsIGNhbid0IGNoZWNrIGtub3duaG9zdHMhXG4iKTsKKyAgICAgICAga2V5Yml0ID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZigha2V5Yml0KQorICAgICAgICAvKiBubyBjaGVjayBtZWFucyBmYWlsdXJlISAqLworICAgICAgICByYyA9IENVUkxLSFNUQVRfUkVKRUNUOworICAgICAgZWxzZSB7CisjaWZkZWYgSEFWRV9MSUJTU0gyX0tOT1dOSE9TVF9DSEVDS1AKKyAgICAgICAga2V5Y2hlY2sgPSBsaWJzc2gyX2tub3duaG9zdF9jaGVja3Aoc3NoYy0+a2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmhvc3QubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbm4tPnJlbW90ZV9wb3J0ICE9IFBPUlRfU1NIKT8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cmVtb3RlX3BvcnQ6LTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZWtleSwga2V5bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX0tOT1dOSE9TVF9UWVBFX1BMQUlOfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX0tOT1dOSE9TVF9LRVlFTkNfUkFXfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXliaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZob3N0KTsKKyNlbHNlCisgICAgICAgIGtleWNoZWNrID0gbGlic3NoMl9rbm93bmhvc3RfY2hlY2soc3NoYy0+a2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+aG9zdC5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZWtleSwga2V5bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfS05PV05IT1NUX1RZUEVfUExBSU58CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9LTk9XTkhPU1RfS0VZRU5DX1JBV3wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXliaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhvc3QpOworI2VuZGlmCisKKyAgICAgICAgaW5mb2YoZGF0YSwgIlNTSCBob3N0IGNoZWNrOiAlZCwga2V5OiAlc1xuIiwga2V5Y2hlY2ssCisgICAgICAgICAgICAgIChrZXljaGVjayA8PSBMSUJTU0gyX0tOT1dOSE9TVF9DSEVDS19NSVNNQVRDSCk/CisgICAgICAgICAgICAgIGhvc3QtPmtleToiPG5vbmU+Iik7CisKKyAgICAgICAgLyogc2V0dXAgJ2tub3dua2V5JyAqLworICAgICAgICBpZihrZXljaGVjayA8PSBMSUJTU0gyX0tOT1dOSE9TVF9DSEVDS19NSVNNQVRDSCkgeworICAgICAgICAgIGtub3dua2V5LmtleSA9IGhvc3QtPmtleTsKKyAgICAgICAgICBrbm93bmtleS5sZW4gPSAwOworICAgICAgICAgIGtub3dua2V5LmtleXR5cGUgPSAoa2V5dHlwZSA9PSBMSUJTU0gyX0hPU1RLRVlfVFlQRV9SU0EpPworICAgICAgICAgICAgQ1VSTEtIVFlQRV9SU0EgOiBDVVJMS0hUWVBFX0RTUzsKKyAgICAgICAgICBrbm93bmtleXAgPSAma25vd25rZXk7CisgICAgICAgIH0KKworICAgICAgICAvKiBzZXR1cCAnZm91bmRrZXknICovCisgICAgICAgIGZvdW5ka2V5LmtleSA9IHJlbW90ZWtleTsKKyAgICAgICAgZm91bmRrZXkubGVuID0ga2V5bGVuOworICAgICAgICBmb3VuZGtleS5rZXl0eXBlID0gKGtleXR5cGUgPT0gTElCU1NIMl9IT1NUS0VZX1RZUEVfUlNBKT8KKyAgICAgICAgICBDVVJMS0hUWVBFX1JTQSA6IENVUkxLSFRZUEVfRFNTOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlmIGFueSBvZiB0aGUgTElCU1NIMl9LTk9XTkhPU1RfQ0hFQ0tfKiBkZWZpbmVzIGFuZCB0aGUKKyAgICAgICAgICogY3VybF9raG1hdGNoIGVudW0gYXJlIGV2ZXIgbW9kaWZpZWQsIHdlIG5lZWQgdG8gaW50cm9kdWNlIGEKKyAgICAgICAgICogdHJhbnNsYXRpb24gdGFibGUgaGVyZSEKKyAgICAgICAgICovCisgICAgICAgIGtleW1hdGNoID0gKGVudW0gY3VybF9raG1hdGNoKWtleWNoZWNrOworCisgICAgICAgIC8qIEFzayB0aGUgY2FsbGJhY2sgaG93IHRvIGJlaGF2ZSAqLworICAgICAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCB0cnVlKTsKKyAgICAgICAgcmMgPSBmdW5jKGRhdGEsIGtub3dua2V5cCwgLyogZnJvbSB0aGUga25vd25ob3N0cyBmaWxlICovCisgICAgICAgICAgICAgICAgICAmZm91bmRrZXksIC8qIGZyb20gdGhlIHJlbW90ZSBob3N0ICovCisgICAgICAgICAgICAgICAgICBrZXltYXRjaCwgZGF0YS0+c2V0LnNzaF9rZXlmdW5jX3VzZXJwKTsKKyAgICAgICAgQ3VybF9zZXRfaW5fY2FsbGJhY2soZGF0YSwgZmFsc2UpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgICAvKiBubyByZW1vdGVrZXkgbWVhbnMgZmFpbHVyZSEgKi8KKyAgICAgIHJjID0gQ1VSTEtIU1RBVF9SRUpFQ1Q7CisKKyAgICBzd2l0Y2gocmMpIHsKKyAgICBkZWZhdWx0OiAvKiB1bmtub3duIHJldHVybiBjb2RlcyB3aWxsIGVxdWFsIHJlamVjdCAqLworICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgICBjYXNlIENVUkxLSFNUQVRfUkVKRUNUOgorICAgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRlJFRSk7CisgICAgICAvKiBGQUxMVEhST1VHSCAqLworICAgIGNhc2UgQ1VSTEtIU1RBVF9ERUZFUjoKKyAgICAgIC8qIERFRkVSIG1lYW5zIGJhaWwgb3V0IGJ1dCBrZWVwIHRoZSBTU0hfSE9TVEtFWSBzdGF0ZSAqLworICAgICAgcmVzdWx0ID0gc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1BFRVJfRkFJTEVEX1ZFUklGSUNBVElPTjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ1VSTEtIU1RBVF9GSU5FOgorICAgIGNhc2UgQ1VSTEtIU1RBVF9GSU5FX0FERF9UT19GSUxFOgorICAgICAgLyogcHJvY2VlZCAqLworICAgICAgaWYoa2V5Y2hlY2sgIT0gTElCU1NIMl9LTk9XTkhPU1RfQ0hFQ0tfTUFUQ0gpIHsKKyAgICAgICAgLyogdGhlIGZvdW5kIGhvc3Qra2V5IGRpZG4ndCBtYXRjaCBidXQgaGFzIGJlZW4gdG9sZCB0byBiZSBmaW5lCisgICAgICAgICAgIGFueXdheSBzbyB3ZSBhZGQgaXQgaW4gbWVtb3J5ICovCisgICAgICAgIGludCBhZGRyYyA9IGxpYnNzaDJfa25vd25ob3N0X2FkZChzc2hjLT5raCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmhvc3QubmFtZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZWtleSwga2V5bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9LTk9XTkhPU1RfVFlQRV9QTEFJTnwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfS05PV05IT1NUX0tFWUVOQ19SQVd8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXliaXQsIE5VTEwpOworICAgICAgICBpZihhZGRyYykKKyAgICAgICAgICBpbmZvZihkYXRhLCAiV2FybmluZyBhZGRpbmcgdGhlIGtub3duIGhvc3QgJXMgZmFpbGVkIVxuIiwKKyAgICAgICAgICAgICAgICBjb25uLT5ob3N0Lm5hbWUpOworICAgICAgICBlbHNlIGlmKHJjID09IENVUkxLSFNUQVRfRklORV9BRERfVE9fRklMRSkgeworICAgICAgICAgIC8qIG5vdyB3ZSB3cml0ZSB0aGUgZW50aXJlIGluLW1lbW9yeSBsaXN0IG9mIGtub3duIGhvc3RzIHRvIHRoZQorICAgICAgICAgICAgIGtub3duX2hvc3RzIGZpbGUgKi8KKyAgICAgICAgICBpbnQgd3JjID0KKyAgICAgICAgICAgIGxpYnNzaDJfa25vd25ob3N0X3dyaXRlZmlsZShzc2hjLT5raCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9LTk9XTkhPU1RfRklMRV9PUEVOU1NIKTsKKyAgICAgICAgICBpZih3cmMpIHsKKyAgICAgICAgICAgIGluZm9mKGRhdGEsICJXYXJuaW5nLCB3cml0aW5nICVzIGZhaWxlZCFcbiIsCisgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgfQorICB9CisjZWxzZSAvKiBIQVZFX0xJQlNTSDJfS05PV05IT1NUX0FQSSAqLworICAodm9pZCljb25uOworI2VuZGlmCisgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBzc2hfY2hlY2tfZmluZ2VycHJpbnQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQoreworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIGNvbnN0IGNoYXIgKnB1YmtleV9tZDUgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfSE9TVF9QVUJMSUNfS0VZX01ENV07CisgIGNoYXIgbWQ1YnVmZmVyWzMzXTsKKworICBjb25zdCBjaGFyICpmaW5nZXJwcmludCA9IGxpYnNzaDJfaG9zdGtleV9oYXNoKHNzaGMtPnNzaF9zZXNzaW9uLAorICAgICAgTElCU1NIMl9IT1NUS0VZX0hBU0hfTUQ1KTsKKworICBpZihmaW5nZXJwcmludCkgeworICAgIC8qIFRoZSBmaW5nZXJwcmludCBwb2ludHMgdG8gc3RhdGljIHN0b3JhZ2UgKCEpLCBkb24ndCBmcmVlKCkgaXQuICovCisgICAgaW50IGk7CisgICAgZm9yKGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICAgIG1zbnByaW50ZigmbWQ1YnVmZmVyW2kqMl0sIDMsICIlMDJ4IiwgKHVuc2lnbmVkIGNoYXIpIGZpbmdlcnByaW50W2ldKTsKKyAgICBpbmZvZihkYXRhLCAiU1NIIE1ENSBmaW5nZXJwcmludDogJXNcbiIsIG1kNWJ1ZmZlcik7CisgIH0KKworICAvKiBCZWZvcmUgd2UgYXV0aGVudGljYXRlIHdlIGNoZWNrIHRoZSBob3N0a2V5J3MgTUQ1IGZpbmdlcnByaW50CisgICAqIGFnYWluc3QgYSBrbm93biBmaW5nZXJwcmludCwgaWYgYXZhaWxhYmxlLgorICAgKi8KKyAgaWYocHVia2V5X21kNSAmJiBzdHJsZW4ocHVia2V5X21kNSkgPT0gMzIpIHsKKyAgICBpZighZmluZ2VycHJpbnQgfHwgIXN0cmNhc2Vjb21wYXJlKG1kNWJ1ZmZlciwgcHVia2V5X21kNSkpIHsKKyAgICAgIGlmKGZpbmdlcnByaW50KQorICAgICAgICBmYWlsZihkYXRhLAorICAgICAgICAgICAgIkRlbmllZCBlc3RhYmxpc2hpbmcgc3NoIHNlc3Npb246IG1pc21hdGNoIG1kNSBmaW5nZXJwcmludC4gIgorICAgICAgICAgICAgIlJlbW90ZSAlcyBpcyBub3QgZXF1YWwgdG8gJXMiLCBtZDVidWZmZXIsIHB1YmtleV9tZDUpOworICAgICAgZWxzZQorICAgICAgICBmYWlsZihkYXRhLAorICAgICAgICAgICAgIkRlbmllZCBlc3RhYmxpc2hpbmcgc3NoIHNlc3Npb246IG1kNSBmaW5nZXJwcmludCBub3QgYXZhaWxhYmxlIik7CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0VTU0lPTl9GUkVFKTsKKyAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047CisgICAgICByZXR1cm4gc3NoYy0+YWN0dWFsY29kZTsKKyAgICB9CisgICAgaW5mb2YoZGF0YSwgIk1ENSBjaGVja3N1bSBtYXRjaCFcbiIpOworICAgIC8qIGFzIHdlIGFscmVhZHkgbWF0Y2hlZCwgd2Ugc2tpcCB0aGUgY2hlY2sgZm9yIGtub3duIGhvc3RzICovCisgICAgcmV0dXJuIENVUkxFX09LOworICB9CisgIHJldHVybiBzc2hfa25vd25ob3N0KGNvbm4pOworfQorCisvKgorICogc3NoX2ZvcmNlX2tub3duaG9zdF9rZXlfdHlwZSgpIHdpbGwgY2hlY2sgdGhlIGtub3duIGhvc3RzIGZpbGUgYW5kIHRyeSB0bworICogZm9yY2UgYSBzcGVjaWZpYyBwdWJsaWMga2V5IHR5cGUgZnJvbSB0aGUgc2VydmVyIGlmIGFuIGVudHJ5IGlzIGZvdW5kLgorICovCitzdGF0aWMgQ1VSTGNvZGUgc3NoX2ZvcmNlX2tub3duaG9zdF9rZXlfdHlwZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworCisjaWZkZWYgSEFWRV9MSUJTU0gyX0tOT1dOSE9TVF9BUEkKKworI2lmZGVmIExJQlNTSDJfS05PV05IT1NUX0tFWV9FRDI1NTE5CisgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaG9zdGtleV9tZXRob2Rfc3NoX2VkMjU1MTkKKyAgICA9ICJzc2gtZWQyNTUxOSI7CisjZW5kaWYKKyNpZmRlZiBMSUJTU0gyX0tOT1dOSE9TVF9LRVlfRUNEU0FfNTIxCisgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaG9zdGtleV9tZXRob2Rfc3NoX2VjZHNhXzUyMQorICAgID0gImVjZHNhLXNoYTItbmlzdHA1MjEiOworI2VuZGlmCisjaWZkZWYgTElCU1NIMl9LTk9XTkhPU1RfS0VZX0VDRFNBXzM4NAorICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGhvc3RrZXlfbWV0aG9kX3NzaF9lY2RzYV8zODQKKyAgICA9ICJlY2RzYS1zaGEyLW5pc3RwMzg0IjsKKyNlbmRpZgorI2lmZGVmIExJQlNTSDJfS05PV05IT1NUX0tFWV9FQ0RTQV8yNTYKKyAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBob3N0a2V5X21ldGhvZF9zc2hfZWNkc2FfMjU2CisgICAgPSAiZWNkc2Etc2hhMi1uaXN0cDI1NiI7CisjZW5kaWYKKyAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBob3N0a2V5X21ldGhvZF9zc2hfcnNhCisgICAgPSAic3NoLXJzYSI7CisgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaG9zdGtleV9tZXRob2Rfc3NoX2RzcworICAgID0gInNzaC1kc3MiOworCisgIGNvbnN0IGNoYXIgKmhvc3RrZXlfbWV0aG9kID0gTlVMTDsKKyAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworICBzdHJ1Y3QgbGlic3NoMl9rbm93bmhvc3QqIHN0b3JlID0gTlVMTDsKKyAgY29uc3QgY2hhciAqa2hfbmFtZV9lbmQgPSBOVUxMOworICBzaXplX3Qga2hfbmFtZV9zaXplID0gMDsKKyAgaW50IHBvcnQgPSAwOworICBib29sIGZvdW5kID0gZmFsc2U7CisKKyAgaWYoc3NoYy0+a2ggJiYgIWRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1XSkgeworICAgIC8qIGxldHMgdHJ5IHRvIGZpbmQgb3VyIGhvc3QgaW4gdGhlIGtub3duIGhvc3RzIGZpbGUgKi8KKyAgICB3aGlsZSghbGlic3NoMl9rbm93bmhvc3RfZ2V0KHNzaGMtPmtoLCAmc3RvcmUsIHN0b3JlKSkgeworICAgICAgLyogRm9yIG5vbi1zdGFuZGFyZCBwb3J0cywgdGhlIG5hbWUgd2lsbCBiZSBlbmNsb3NlZCBpbiAqLworICAgICAgLyogc3F1YXJlIGJyYWNrZXRzLCBmb2xsb3dlZCBieSBhIGNvbG9uIGFuZCB0aGUgcG9ydCAqLworICAgICAgaWYoc3RvcmUtPm5hbWVbMF0gPT0gJ1snKSB7CisgICAgICAgIGtoX25hbWVfZW5kID0gc3Ryc3RyKHN0b3JlLT5uYW1lLCAiXToiKTsKKyAgICAgICAgaWYoIWtoX25hbWVfZW5kKSB7CisgICAgICAgICAgaW5mb2YoZGF0YSwgIkludmFsaWQgaG9zdCBwYXR0ZXJuICVzIGluICVzXG4iLAorICAgICAgICAgICAgICAgIHN0b3JlLT5uYW1lLCBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pOworICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHBvcnQgPSBhdG9pKGtoX25hbWVfZW5kICsgMik7CisgICAgICAgIGlmKGtoX25hbWVfZW5kICYmIChwb3J0ID09IGNvbm4tPnJlbW90ZV9wb3J0KSkgeworICAgICAgICAgIGtoX25hbWVfc2l6ZSA9IHN0cmxlbihzdG9yZS0+bmFtZSkgLSAxIC0gc3RybGVuKGtoX25hbWVfZW5kKTsKKyAgICAgICAgICBpZihzdHJuY21wKHN0b3JlLT5uYW1lICsgMSwgY29ubi0+aG9zdC5uYW1lLCBraF9uYW1lX3NpemUpID09IDApIHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZihzdHJjbXAoc3RvcmUtPm5hbWUsIGNvbm4tPmhvc3QubmFtZSkgPT0gMCkgeworICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIGlmKGZvdW5kKSB7CisgICAgICBpbmZvZihkYXRhLCAiRm91bmQgaG9zdCAlcyBpbiAlc1xuIiwKKyAgICAgICAgICAgIHN0b3JlLT5uYW1lLCBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pOworCisgICAgICBzd2l0Y2goc3RvcmUtPnR5cGVtYXNrICYgTElCU1NIMl9LTk9XTkhPU1RfS0VZX01BU0spIHsKKyNpZmRlZiBMSUJTU0gyX0tOT1dOSE9TVF9LRVlfRUQyNTUxOQorICAgICAgY2FzZSBMSUJTU0gyX0tOT1dOSE9TVF9LRVlfRUQyNTUxOToKKyAgICAgICAgaG9zdGtleV9tZXRob2QgPSBob3N0a2V5X21ldGhvZF9zc2hfZWQyNTUxOTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBMSUJTU0gyX0tOT1dOSE9TVF9LRVlfRUNEU0FfNTIxCisgICAgICBjYXNlIExJQlNTSDJfS05PV05IT1NUX0tFWV9FQ0RTQV81MjE6CisgICAgICAgIGhvc3RrZXlfbWV0aG9kID0gaG9zdGtleV9tZXRob2Rfc3NoX2VjZHNhXzUyMTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBMSUJTU0gyX0tOT1dOSE9TVF9LRVlfRUNEU0FfMzg0CisgICAgICBjYXNlIExJQlNTSDJfS05PV05IT1NUX0tFWV9FQ0RTQV8zODQ6CisgICAgICAgIGhvc3RrZXlfbWV0aG9kID0gaG9zdGtleV9tZXRob2Rfc3NoX2VjZHNhXzM4NDsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBMSUJTU0gyX0tOT1dOSE9TVF9LRVlfRUNEU0FfMjU2CisgICAgICBjYXNlIExJQlNTSDJfS05PV05IT1NUX0tFWV9FQ0RTQV8yNTY6CisgICAgICAgIGhvc3RrZXlfbWV0aG9kID0gaG9zdGtleV9tZXRob2Rfc3NoX2VjZHNhXzI1NjsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgIGNhc2UgTElCU1NIMl9LTk9XTkhPU1RfS0VZX1NTSFJTQToKKyAgICAgICAgaG9zdGtleV9tZXRob2QgPSBob3N0a2V5X21ldGhvZF9zc2hfcnNhOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgTElCU1NIMl9LTk9XTkhPU1RfS0VZX1NTSERTUzoKKyAgICAgICAgaG9zdGtleV9tZXRob2QgPSBob3N0a2V5X21ldGhvZF9zc2hfZHNzOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgTElCU1NIMl9LTk9XTkhPU1RfS0VZX1JTQTE6CisgICAgICAgIGZhaWxmKGRhdGEsICJGb3VuZCBob3N0IGtleSB0eXBlIFJTQTEgd2hpY2ggaXMgbm90IHN1cHBvcnRlZFxuIik7CisgICAgICAgIHJldHVybiBDVVJMRV9TU0g7CisgICAgICBkZWZhdWx0OgorICAgICAgICBmYWlsZihkYXRhLCAiVW5rbm93biBob3N0IGtleSB0eXBlOiAlaVxuIiwKKyAgICAgICAgICAgICAgKHN0b3JlLT50eXBlbWFzayAmIExJQlNTSDJfS05PV05IT1NUX0tFWV9NQVNLKSk7CisgICAgICAgIHJldHVybiBDVVJMRV9TU0g7CisgICAgICB9CisKKyAgICAgIGluZm9mKGRhdGEsICJTZXQgXCIlc1wiIGFzIFNTSCBob3N0a2V5IHR5cGVcbiIsIGhvc3RrZXlfbWV0aG9kKTsKKyAgICAgIHJlc3VsdCA9IGxpYnNzaDJfc2Vzc2lvbl9lcnJvcl90b19DVVJMRSgKKyAgICAgICAgICBsaWJzc2gyX3Nlc3Npb25fbWV0aG9kX3ByZWYoCisgICAgICAgICAgICAgIHNzaGMtPnNzaF9zZXNzaW9uLCBMSUJTU0gyX01FVEhPRF9IT1NUS0VZLCBob3N0a2V5X21ldGhvZCkpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGluZm9mKGRhdGEsICJEaWQgbm90IGZpbmQgaG9zdCAlcyBpbiAlc1xuIiwKKyAgICAgICAgICAgIGNvbm4tPmhvc3QubmFtZSwgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX0tOT1dOSE9TVFNdKTsKKyAgICB9CisgIH0KKworI2VuZGlmIC8qIEhBVkVfTElCU1NIMl9LTk9XTkhPU1RfQVBJICovCisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIHNzaF9zdGF0ZW1hY2hfYWN0KCkgcnVucyB0aGUgU1NIIHN0YXRlIG1hY2hpbmUgYXMgZmFyIGFzIGl0IGNhbiB3aXRob3V0CisgKiBibG9ja2luZyBhbmQgd2l0aG91dCByZWFjaGluZyB0aGUgZW5kLiAgVGhlIGRhdGEgdGhlIHBvaW50ZXIgJ2Jsb2NrJyBwb2ludHMKKyAqIHRvIHdpbGwgYmUgc2V0IHRvIFRSVUUgaWYgdGhlIGxpYnNzaDIgZnVuY3Rpb24gcmV0dXJucyBMSUJTU0gyX0VSUk9SX0VBR0FJTgorICogbWVhbmluZyBpdCB3YW50cyB0byBiZSBjYWxsZWQgYWdhaW4gd2hlbiB0aGUgc29ja2V0IGlzIHJlYWR5CisgKi8KKworc3RhdGljIENVUkxjb2RlIHNzaF9zdGF0ZW1hY2hfYWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqYmxvY2spCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKKyAgc3RydWN0IFNTSFBST1RPICpzZnRwX3NjcCA9IGRhdGEtPnJlcS5wcm90b3A7CisgIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOworICBjdXJsX3NvY2tldF90IHNvY2sgPSBjb25uLT5zb2NrW0ZJUlNUU09DS0VUXTsKKyAgY2hhciAqbmV3X3JlYWRkaXJfbGluZTsKKyAgaW50IHJjID0gTElCU1NIMl9FUlJPUl9OT05FOworICBpbnQgZXJyOworICBpbnQgc2Vla2VyciA9IENVUkxfU0VFS0ZVTkNfT0s7CisgICpibG9jayA9IDA7IC8qIHdlJ3JlIG5vdCBibG9ja2luZyBieSBkZWZhdWx0ICovCisKKyAgZG8geworCisgICAgc3dpdGNoKHNzaGMtPnN0YXRlKSB7CisgICAgY2FzZSBTU0hfSU5JVDoKKyAgICAgIHNzaGMtPnNlY29uZENyZWF0ZURpcnMgPSAwOworICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09LOworCisgICAgICAvKiBTZXQgbGlic3NoMiB0byBub24tYmxvY2tpbmcsIHNpbmNlIGV2ZXJ5dGhpbmcgaW50ZXJuYWxseSBpcworICAgICAgICAgbm9uLWJsb2NraW5nICovCisgICAgICBsaWJzc2gyX3Nlc3Npb25fc2V0X2Jsb2NraW5nKHNzaGMtPnNzaF9zZXNzaW9uLCAwKTsKKworICAgICAgcmVzdWx0ID0gc3NoX2ZvcmNlX2tub3duaG9zdF9rZXlfdHlwZShjb25uKTsKKyAgICAgIGlmKHJlc3VsdCkgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0VTU0lPTl9GUkVFKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TX1NUQVJUVVApOworICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKworICAgIGNhc2UgU1NIX1NfU1RBUlRVUDoKKyAgICAgIHJjID0gbGlic3NoMl9zZXNzaW9uX3N0YXJ0dXAoc3NoYy0+c3NoX3Nlc3Npb24sIChpbnQpc29jayk7CisgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmKHJjKSB7CisgICAgICAgIGNoYXIgKmVycl9tc2cgPSBOVUxMOworICAgICAgICAodm9pZClsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbiwgJmVycl9tc2csIE5VTEwsIDApOworICAgICAgICBmYWlsZihkYXRhLCAiRmFpbHVyZSBlc3RhYmxpc2hpbmcgc3NoIHNlc3Npb246ICVkLCAlcyIsIHJjLCBlcnJfbXNnKTsKKworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0VTU0lPTl9GUkVFKTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX0ZBSUxFRF9JTklUOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgc3RhdGUoY29ubiwgU1NIX0hPU1RLRVkpOworCisgICAgICAvKiBGQUxMVEhST1VHSCAqLworICAgIGNhc2UgU1NIX0hPU1RLRVk6CisgICAgICAvKgorICAgICAgICogQmVmb3JlIHdlIGF1dGhlbnRpY2F0ZSB3ZSBzaG91bGQgY2hlY2sgdGhlIGhvc3RrZXkncyBmaW5nZXJwcmludAorICAgICAgICogYWdhaW5zdCBvdXIga25vd24gaG9zdHMuIEhvdyB0aGF0IGlzIGhhbmRsZWQgKHJlYWRpbmcgZnJvbSBmaWxlLAorICAgICAgICogd2hhdGV2ZXIpIGlzIHVwIHRvIHVzLgorICAgICAgICovCisgICAgICByZXN1bHQgPSBzc2hfY2hlY2tfZmluZ2VycHJpbnQoY29ubik7CisgICAgICBpZighcmVzdWx0KQorICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSExJU1QpOworICAgICAgLyogc3NoX2NoZWNrX2ZpbmdlcnByaW50IHNldHMgc3RhdGUgYXBwcm9wcmlhdGVseSBvbiBlcnJvciAqLworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9BVVRITElTVDoKKyAgICAgIC8qCisgICAgICAgKiBGaWd1cmUgb3V0IGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMKKyAgICAgICAqIE5COiBBcyBzb29uIGFzIHdlIGhhdmUgcHJvdmlkZWQgYSB1c2VybmFtZSB0byBhbiBvcGVuc3NoIHNlcnZlciB3ZQorICAgICAgICogbXVzdCBuZXZlciBjaGFuZ2UgaXQgbGF0ZXIuIFRodXMsIGFsd2F5cyBzcGVjaWZ5IHRoZSBjb3JyZWN0IHVzZXJuYW1lCisgICAgICAgKiBoZXJlLCBldmVuIHRob3VnaCB0aGUgbGlic3NoMiBkb2NzIGtpbmQgb2YgaW5kaWNhdGUgdGhhdCBpdCBzaG91bGQgYmUKKyAgICAgICAqIHBvc3NpYmxlIHRvIGdldCBhICdnZW5lcmljJyBsaXN0IChub3QgdXNlci1zcGVjaWZpYykgb2YgYXV0aGVudGljYXRpb24KKyAgICAgICAqIG1ldGhvZHMsIHByZXN1bWFibHkgd2l0aCBhIGJsYW5rIHVzZXJuYW1lLiBUaGF0IHdvbid0IHdvcmsgaW4gbXkKKyAgICAgICAqIGV4cGVyaWVuY2UuCisgICAgICAgKiBTbyBhbHdheXMgc3BlY2lmeSBpdCBoZXJlLgorICAgICAgICovCisgICAgICBzc2hjLT5hdXRobGlzdCA9IGxpYnNzaDJfdXNlcmF1dGhfbGlzdChzc2hjLT5zc2hfc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKGNvbm4tPnVzZXIpKSk7CisKKyAgICAgIGlmKCFzc2hjLT5hdXRobGlzdCkgeworICAgICAgICBpZihsaWJzc2gyX3VzZXJhdXRoX2F1dGhlbnRpY2F0ZWQoc3NoYy0+c3NoX3Nlc3Npb24pKSB7CisgICAgICAgICAgc3NoYy0+YXV0aGVkID0gVFJVRTsKKyAgICAgICAgICBpbmZvZihkYXRhLCAiU1NIIHVzZXIgYWNjZXB0ZWQgd2l0aCBubyBhdXRoZW50aWNhdGlvblxuIik7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfRE9ORSk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZXJyID0gbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJybm8oc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgICBpZihlcnIgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pCisgICAgICAgICAgcmMgPSBMSUJTU0gyX0VSUk9SX0VBR0FJTjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRlJFRSk7CisgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IGxpYnNzaDJfc2Vzc2lvbl9lcnJvcl90b19DVVJMRShlcnIpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaW5mb2YoZGF0YSwgIlNTSCBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGF2YWlsYWJsZTogJXNcbiIsCisgICAgICAgICAgICBzc2hjLT5hdXRobGlzdCk7CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX1BLRVlfSU5JVCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX0FVVEhfUEtFWV9JTklUOgorICAgICAgLyoKKyAgICAgICAqIENoZWNrIHRoZSBzdXBwb3J0ZWQgYXV0aCB0eXBlcyBpbiB0aGUgb3JkZXIgSSBmZWVsIGlzIG1vc3Qgc2VjdXJlCisgICAgICAgKiB3aXRoIHRoZSByZXF1ZXN0ZWQgdHlwZSBvZiBhdXRoZW50aWNhdGlvbgorICAgICAgICovCisgICAgICBzc2hjLT5hdXRoZWQgPSBGQUxTRTsKKworICAgICAgaWYoKGRhdGEtPnNldC5zc2hfYXV0aF90eXBlcyAmIENVUkxTU0hfQVVUSF9QVUJMSUNLRVkpICYmCisgICAgICAgICAoc3Ryc3RyKHNzaGMtPmF1dGhsaXN0LCAicHVibGlja2V5IikgIT0gTlVMTCkpIHsKKyAgICAgICAgYm9vbCBvdXRfb2ZfbWVtb3J5ID0gRkFMU0U7CisKKyAgICAgICAgc3NoYy0+cnNhX3B1YiA9IHNzaGMtPnJzYSA9IE5VTEw7CisKKyAgICAgICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX1BSSVZBVEVfS0VZXSkKKyAgICAgICAgICBzc2hjLT5yc2EgPSBzdHJkdXAoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX1BSSVZBVEVfS0VZXSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgIC8qIFRvIHBvbmRlciBhYm91dDogc2hvdWxkIHJlYWxseSB0aGUgbGliIGJlIG1lc3NpbmcgYWJvdXQgd2l0aCB0aGUKKyAgICAgICAgICAgICBIT01FIGVudmlyb25tZW50IHZhcmlhYmxlIGV0Yz8gKi8KKyAgICAgICAgICBjaGFyICpob21lID0gY3VybF9nZXRlbnYoIkhPTUUiKTsKKworICAgICAgICAgIC8qIElmIG5vIHByaXZhdGUga2V5IGZpbGUgaXMgc3BlY2lmaWVkLCB0cnkgc29tZSBjb21tb24gcGF0aHMuICovCisgICAgICAgICAgaWYoaG9tZSkgeworICAgICAgICAgICAgLyogVHJ5IH4vLnNzaCBmaXJzdC4gKi8KKyAgICAgICAgICAgIHNzaGMtPnJzYSA9IGFwcmludGYoIiVzLy5zc2gvaWRfcnNhIiwgaG9tZSk7CisgICAgICAgICAgICBpZighc3NoYy0+cnNhKQorICAgICAgICAgICAgICBvdXRfb2ZfbWVtb3J5ID0gVFJVRTsKKyAgICAgICAgICAgIGVsc2UgaWYoYWNjZXNzKHNzaGMtPnJzYSwgUl9PSykgIT0gMCkgeworICAgICAgICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJzYSk7CisgICAgICAgICAgICAgIHNzaGMtPnJzYSA9IGFwcmludGYoIiVzLy5zc2gvaWRfZHNhIiwgaG9tZSk7CisgICAgICAgICAgICAgIGlmKCFzc2hjLT5yc2EpCisgICAgICAgICAgICAgICAgb3V0X29mX21lbW9yeSA9IFRSVUU7CisgICAgICAgICAgICAgIGVsc2UgaWYoYWNjZXNzKHNzaGMtPnJzYSwgUl9PSykgIT0gMCkgeworICAgICAgICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cnNhKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJlZShob21lKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYoIW91dF9vZl9tZW1vcnkgJiYgIXNzaGMtPnJzYSkgeworICAgICAgICAgICAgLyogTm90aGluZyBmb3VuZDsgdHJ5IHRoZSBjdXJyZW50IGRpci4gKi8KKyAgICAgICAgICAgIHNzaGMtPnJzYSA9IHN0cmR1cCgiaWRfcnNhIik7CisgICAgICAgICAgICBpZihzc2hjLT5yc2EgJiYgYWNjZXNzKHNzaGMtPnJzYSwgUl9PSykgIT0gMCkgeworICAgICAgICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJzYSk7CisgICAgICAgICAgICAgIHNzaGMtPnJzYSA9IHN0cmR1cCgiaWRfZHNhIik7CisgICAgICAgICAgICAgIGlmKHNzaGMtPnJzYSAmJiBhY2Nlc3Moc3NoYy0+cnNhLCBSX09LKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yc2EpOworICAgICAgICAgICAgICAgIC8qIE91dCBvZiBndWVzc2VzLiBTZXQgdG8gdGhlIGVtcHR5IHN0cmluZyB0byBhdm9pZAorICAgICAgICAgICAgICAgICAqIHN1cnByaXNpbmcgaW5mbyBtZXNzYWdlcy4gKi8KKyAgICAgICAgICAgICAgICBzc2hjLT5yc2EgPSBzdHJkdXAoIiIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogVW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3BlY2lmaWVzIGEgcHVibGljIGtleSBmaWxlLCBsZXQKKyAgICAgICAgICogbGlic3NoMiBleHRyYWN0IHRoZSBwdWJsaWMga2V5IGZyb20gdGhlIHByaXZhdGUga2V5IGZpbGUuCisgICAgICAgICAqIFRoaXMgaXMgZG9uZSBieSBzaW1wbHkgcGFzc2luZyBzc2hjLT5yc2FfcHViID0gTlVMTC4KKyAgICAgICAgICovCisgICAgICAgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9QVUJMSUNfS0VZXQorICAgICAgICAgICAvKiB0cmVhdCBlbXB0eSBzdHJpbmcgdGhlIHNhbWUgd2F5IGFzIE5VTEwgKi8KKyAgICAgICAgICAgJiYgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX1BVQkxJQ19LRVldWzBdKSB7CisgICAgICAgICAgc3NoYy0+cnNhX3B1YiA9IHN0cmR1cChkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfUFVCTElDX0tFWV0pOworICAgICAgICAgIGlmKCFzc2hjLT5yc2FfcHViKQorICAgICAgICAgICAgb3V0X29mX21lbW9yeSA9IFRSVUU7CisgICAgICAgIH0KKworICAgICAgICBpZihvdXRfb2ZfbWVtb3J5IHx8IHNzaGMtPnJzYSA9PSBOVUxMKSB7CisgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yc2EpOworICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cnNhX3B1Yik7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRlJFRSk7CisgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzc2hjLT5wYXNzcGhyYXNlID0gZGF0YS0+c2V0LnNzbC5rZXlfcGFzc3dkOworICAgICAgICBpZighc3NoYy0+cGFzc3BocmFzZSkKKyAgICAgICAgICBzc2hjLT5wYXNzcGhyYXNlID0gIiI7CisKKyAgICAgICAgaWYoc3NoYy0+cnNhX3B1YikKKyAgICAgICAgICBpbmZvZihkYXRhLCAiVXNpbmcgU1NIIHB1YmxpYyBrZXkgZmlsZSAnJXMnXG4iLCBzc2hjLT5yc2FfcHViKTsKKyAgICAgICAgaW5mb2YoZGF0YSwgIlVzaW5nIFNTSCBwcml2YXRlIGtleSBmaWxlICclcydcbiIsIHNzaGMtPnJzYSk7CisKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfUEtFWSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfUEFTU19JTklUKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfQVVUSF9QS0VZOgorICAgICAgLyogVGhlIGZ1bmN0aW9uIGJlbG93IGNoZWNrcyBpZiB0aGUgZmlsZXMgZXhpc3RzLCBubyBuZWVkIHRvIHN0YXQoKSBoZXJlLgorICAgICAgICovCisgICAgICByYyA9IGxpYnNzaDJfdXNlcmF1dGhfcHVibGlja2V5X2Zyb21maWxlX2V4KHNzaGMtPnNzaF9zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT51c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGNvbm4tPnVzZXIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cnNhX3B1YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cnNhLCBzc2hjLT5wYXNzcGhyYXNlKTsKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJzYV9wdWIpOworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yc2EpOworCisgICAgICBpZihyYyA9PSAwKSB7CisgICAgICAgIHNzaGMtPmF1dGhlZCA9IFRSVUU7CisgICAgICAgIGluZm9mKGRhdGEsICJJbml0aWFsaXplZCBTU0ggcHVibGljIGtleSBhdXRoZW50aWNhdGlvblxuIik7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0RPTkUpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGNoYXIgKmVycl9tc2cgPSBOVUxMOworICAgICAgICAodm9pZClsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycl9tc2csIE5VTEwsIDApOworICAgICAgICBpbmZvZihkYXRhLCAiU1NIIHB1YmxpYyBrZXkgYXV0aGVudGljYXRpb24gZmFpbGVkOiAlc1xuIiwgZXJyX21zZyk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX1BBU1NfSU5JVCk7CisgICAgICAgIHJjID0gMDsgLyogY2xlYXIgcmMgYW5kIGNvbnRpbnVlICovCisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX0FVVEhfUEFTU19JTklUOgorICAgICAgaWYoKGRhdGEtPnNldC5zc2hfYXV0aF90eXBlcyAmIENVUkxTU0hfQVVUSF9QQVNTV09SRCkgJiYKKyAgICAgICAgIChzdHJzdHIoc3NoYy0+YXV0aGxpc3QsICJwYXNzd29yZCIpICE9IE5VTEwpKSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX1BBU1MpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0hPU1RfSU5JVCk7CisgICAgICAgIHJjID0gMDsgLyogY2xlYXIgcmMgYW5kIGNvbnRpbnVlICovCisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX0FVVEhfUEFTUzoKKyAgICAgIHJjID0gbGlic3NoMl91c2VyYXV0aF9wYXNzd29yZF9leChzc2hjLT5zc2hfc2Vzc2lvbiwgY29ubi0+dXNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKGNvbm4tPnVzZXIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5wYXNzd2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihjb25uLT5wYXNzd2QpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYocmMgPT0gMCkgeworICAgICAgICBzc2hjLT5hdXRoZWQgPSBUUlVFOworICAgICAgICBpbmZvZihkYXRhLCAiSW5pdGlhbGl6ZWQgcGFzc3dvcmQgYXV0aGVudGljYXRpb25cbiIpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9ET05FKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9IT1NUX0lOSVQpOworICAgICAgICByYyA9IDA7IC8qIGNsZWFyIHJjIGFuZCBjb250aW51ZSAqLworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9BVVRIX0hPU1RfSU5JVDoKKyAgICAgIGlmKChkYXRhLT5zZXQuc3NoX2F1dGhfdHlwZXMgJiBDVVJMU1NIX0FVVEhfSE9TVCkgJiYKKyAgICAgICAgIChzdHJzdHIoc3NoYy0+YXV0aGxpc3QsICJob3N0YmFzZWQiKSAhPSBOVUxMKSkgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9IT1NUKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9BR0VOVF9JTklUKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfQVVUSF9IT1NUOgorICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfQUdFTlRfSU5JVCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX0FVVEhfQUdFTlRfSU5JVDoKKyNpZmRlZiBIQVZFX0xJQlNTSDJfQUdFTlRfQVBJCisgICAgICBpZigoZGF0YS0+c2V0LnNzaF9hdXRoX3R5cGVzICYgQ1VSTFNTSF9BVVRIX0FHRU5UKQorICAgICAgICAgJiYgKHN0cnN0cihzc2hjLT5hdXRobGlzdCwgInB1YmxpY2tleSIpICE9IE5VTEwpKSB7CisKKyAgICAgICAgLyogQ29ubmVjdCB0byB0aGUgc3NoLWFnZW50ICovCisgICAgICAgIC8qIFRoZSBhZ2VudCBjb3VsZCBiZSBzaGFyZWQgYnkgYSBjdXJsIHRocmVhZCBpIGJlbGlldmUKKyAgICAgICAgICAgYnV0IG5vdGhpbmcgb2J2aW91cyBhcyBrZXlzIGNhbiBiZSBhZGRlZC9yZW1vdmVkIGF0IGFueSB0aW1lICovCisgICAgICAgIGlmKCFzc2hjLT5zc2hfYWdlbnQpIHsKKyAgICAgICAgICBzc2hjLT5zc2hfYWdlbnQgPSBsaWJzc2gyX2FnZW50X2luaXQoc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgICAgIGlmKCFzc2hjLT5zc2hfYWdlbnQpIHsKKyAgICAgICAgICAgIGluZm9mKGRhdGEsICJDb3VsZCBub3QgY3JlYXRlIGFnZW50IG9iamVjdFxuIik7CisKKyAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0tFWV9JTklUKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJjID0gbGlic3NoMl9hZ2VudF9jb25uZWN0KHNzaGMtPnNzaF9hZ2VudCk7CisgICAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKQorICAgICAgICAgIGJyZWFrOworICAgICAgICBpZihyYyA8IDApIHsKKyAgICAgICAgICBpbmZvZihkYXRhLCAiRmFpbHVyZSBjb25uZWN0aW5nIHRvIGFnZW50XG4iKTsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9LRVlfSU5JVCk7CisgICAgICAgICAgcmMgPSAwOyAvKiBjbGVhciByYyBhbmQgY29udGludWUgKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9BR0VOVF9MSVNUKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorI2VuZGlmIC8qIEhBVkVfTElCU1NIMl9BR0VOVF9BUEkgKi8KKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfS0VZX0lOSVQpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9BVVRIX0FHRU5UX0xJU1Q6CisjaWZkZWYgSEFWRV9MSUJTU0gyX0FHRU5UX0FQSQorICAgICAgcmMgPSBsaWJzc2gyX2FnZW50X2xpc3RfaWRlbnRpdGllcyhzc2hjLT5zc2hfYWdlbnQpOworCisgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikKKyAgICAgICAgYnJlYWs7CisgICAgICBpZihyYyA8IDApIHsKKyAgICAgICAgaW5mb2YoZGF0YSwgIkZhaWx1cmUgcmVxdWVzdGluZyBpZGVudGl0aWVzIHRvIGFnZW50XG4iKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfS0VZX0lOSVQpOworICAgICAgICByYyA9IDA7IC8qIGNsZWFyIHJjIGFuZCBjb250aW51ZSAqLworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX0FHRU5UKTsKKyAgICAgICAgc3NoYy0+c3NoYWdlbnRfcHJldl9pZGVudGl0eSA9IE5VTEw7CisgICAgICB9CisjZW5kaWYKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfQVVUSF9BR0VOVDoKKyNpZmRlZiBIQVZFX0xJQlNTSDJfQUdFTlRfQVBJCisgICAgICAvKiBhcyBwcmV2X2lkZW50aXR5IGV2b2x2ZXMgb25seSBhZnRlciBhbiBpZGVudGl0eSB1c2VyIGF1dGggZmluaXNoZWQgd2UKKyAgICAgICAgIGNhbiBzYWZlbHkgcmVxdWVzdCBpdCBhZ2FpbiBhcyBsb25nIGFzIEVBR0FJTiBpcyByZXR1cm5lZCBoZXJlIG9yIGJ5CisgICAgICAgICBsaWJzc2gyX2FnZW50X3VzZXJhdXRoICovCisgICAgICByYyA9IGxpYnNzaDJfYWdlbnRfZ2V0X2lkZW50aXR5KHNzaGMtPnNzaF9hZ2VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNzaGMtPnNzaGFnZW50X2lkZW50aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5zc2hhZ2VudF9wcmV2X2lkZW50aXR5KTsKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKQorICAgICAgICBicmVhazsKKworICAgICAgaWYocmMgPT0gMCkgeworICAgICAgICByYyA9IGxpYnNzaDJfYWdlbnRfdXNlcmF1dGgoc3NoYy0+c3NoX2FnZW50LCBjb25uLT51c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+c3NoYWdlbnRfaWRlbnRpdHkpOworCisgICAgICAgIGlmKHJjIDwgMCkgeworICAgICAgICAgIGlmKHJjICE9IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgICAgICAvKiB0cmllZCBhbmQgZmFpbGVkPyBnbyB0byBuZXh0IGlkZW50aXR5ICovCisgICAgICAgICAgICBzc2hjLT5zc2hhZ2VudF9wcmV2X2lkZW50aXR5ID0gc3NoYy0+c3NoYWdlbnRfaWRlbnRpdHk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmKHJjIDwgMCkKKyAgICAgICAgaW5mb2YoZGF0YSwgIkZhaWx1cmUgcmVxdWVzdGluZyBpZGVudGl0aWVzIHRvIGFnZW50XG4iKTsKKyAgICAgIGVsc2UgaWYocmMgPT0gMSkKKyAgICAgICAgaW5mb2YoZGF0YSwgIk5vIGlkZW50aXR5IHdvdWxkIG1hdGNoXG4iKTsKKworICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9OT05FKSB7CisgICAgICAgIHNzaGMtPmF1dGhlZCA9IFRSVUU7CisgICAgICAgIGluZm9mKGRhdGEsICJBZ2VudCBiYXNlZCBhdXRoZW50aWNhdGlvbiBzdWNjZXNzZnVsXG4iKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfRE9ORSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfS0VZX0lOSVQpOworICAgICAgICByYyA9IDA7IC8qIGNsZWFyIHJjIGFuZCBjb250aW51ZSAqLworICAgICAgfQorI2VuZGlmCisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX0FVVEhfS0VZX0lOSVQ6CisgICAgICBpZigoZGF0YS0+c2V0LnNzaF9hdXRoX3R5cGVzICYgQ1VSTFNTSF9BVVRIX0tFWUJPQVJEKQorICAgICAgICAgJiYgKHN0cnN0cihzc2hjLT5hdXRobGlzdCwgImtleWJvYXJkLWludGVyYWN0aXZlIikgIT0gTlVMTCkpIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfS0VZKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfQVVUSF9ET05FKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfQVVUSF9LRVk6CisgICAgICAvKiBBdXRoZW50aWNhdGlvbiBmYWlsZWQuIENvbnRpbnVlIHdpdGgga2V5Ym9hcmQtaW50ZXJhY3RpdmUgbm93LiAqLworICAgICAgcmMgPSBsaWJzc2gyX3VzZXJhdXRoX2tleWJvYXJkX2ludGVyYWN0aXZlX2V4KHNzaGMtPnNzaF9zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGNvbm4tPnVzZXIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2JkX2NhbGxiYWNrKTsKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYocmMgPT0gMCkgeworICAgICAgICBzc2hjLT5hdXRoZWQgPSBUUlVFOworICAgICAgICBpbmZvZihkYXRhLCAiSW5pdGlhbGl6ZWQga2V5Ym9hcmQgaW50ZXJhY3RpdmUgYXV0aGVudGljYXRpb25cbiIpOworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfRE9ORSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX0FVVEhfRE9ORToKKyAgICAgIGlmKCFzc2hjLT5hdXRoZWQpIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgIkF1dGhlbnRpY2F0aW9uIGZhaWx1cmUiKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRlJFRSk7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9MT0dJTl9ERU5JRUQ7CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICAvKgorICAgICAgICogQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGFuIGF1dGhlbnRpY2F0ZWQgc3NoIHNlc3Npb24uCisgICAgICAgKi8KKyAgICAgIGluZm9mKGRhdGEsICJBdXRoZW50aWNhdGlvbiBjb21wbGV0ZVxuIik7CisKKyAgICAgIEN1cmxfcGdyc1RpbWUoY29ubi0+ZGF0YSwgVElNRVJfQVBQQ09OTkVDVCk7IC8qIFNTSCBpcyBjb25uZWN0ZWQgKi8KKworICAgICAgY29ubi0+c29ja2ZkID0gc29jazsKKyAgICAgIGNvbm4tPndyaXRlc29ja2ZkID0gQ1VSTF9TT0NLRVRfQkFEOworCisgICAgICBpZihjb25uLT5oYW5kbGVyLT5wcm90b2NvbCA9PSBDVVJMUFJPVE9fU0ZUUCkgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9JTklUKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpbmZvZihkYXRhLCAiU1NIIENPTk5FQ1QgcGhhc2UgZG9uZVxuIik7CisgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfSU5JVDoKKyAgICAgIC8qCisgICAgICAgKiBTdGFydCB0aGUgbGlic3NoMiBzZnRwIHNlc3Npb24KKyAgICAgICAqLworICAgICAgc3NoYy0+c2Z0cF9zZXNzaW9uID0gbGlic3NoMl9zZnRwX2luaXQoc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgaWYoIXNzaGMtPnNmdHBfc2Vzc2lvbikgeworICAgICAgICBjaGFyICplcnJfbXNnID0gTlVMTDsKKyAgICAgICAgaWYobGlic3NoMl9zZXNzaW9uX2xhc3RfZXJybm8oc3NoYy0+c3NoX3Nlc3Npb24pID09CisgICAgICAgICAgIExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgICAgcmMgPSBMSUJTU0gyX0VSUk9SX0VBR0FJTjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgICh2b2lkKWxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyX21zZywgTlVMTCwgMCk7CisgICAgICAgIGZhaWxmKGRhdGEsICJGYWlsdXJlIGluaXRpYWxpemluZyBzZnRwIHNlc3Npb246ICVzIiwgZXJyX21zZyk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRVNTSU9OX0ZSRUUpOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBTFBBVEgpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1JFQUxQQVRIOgorICAgIHsKKyAgICAgIGNoYXIgdGVtcEhvbWVbUEFUSF9NQVhdOworCisgICAgICAvKgorICAgICAgICogR2V0IHRoZSAiaG9tZSIgZGlyZWN0b3J5CisgICAgICAgKi8KKyAgICAgIHJjID0gc2Z0cF9saWJzc2gyX3JlYWxwYXRoKHNzaGMtPnNmdHBfc2Vzc2lvbiwgIi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcEhvbWUsIFBBVEhfTUFYLTEpOworICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZihyYyA+IDApIHsKKyAgICAgICAgLyogSXQgc2VlbXMgdGhhdCB0aGlzIHN0cmluZyBpcyBub3QgYWx3YXlzIE5VTEwgdGVybWluYXRlZCAqLworICAgICAgICB0ZW1wSG9tZVtyY10gPSAnXDAnOworICAgICAgICBzc2hjLT5ob21lZGlyID0gc3RyZHVwKHRlbXBIb21lKTsKKyAgICAgICAgaWYoIXNzaGMtPmhvbWVkaXIpIHsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY29ubi0+ZGF0YS0+c3RhdGUubW9zdF9yZWNlbnRfZnRwX2VudHJ5cGF0aCA9IHNzaGMtPmhvbWVkaXI7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgLyogUmV0dXJuIHRoZSBlcnJvciB0eXBlICovCisgICAgICAgIGVyciA9IHNmdHBfbGlic3NoMl9sYXN0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbik7CisgICAgICAgIGlmKGVycikKKyAgICAgICAgICByZXN1bHQgPSBzZnRwX2xpYnNzaDJfZXJyb3JfdG9fQ1VSTEUoZXJyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIC8qIGluIHRoaXMgY2FzZSwgdGhlIGVycm9yIHdhc24ndCBpbiB0aGUgU0ZUUCBsZXZlbCBidXQgZm9yIGV4YW1wbGUKKyAgICAgICAgICAgICBhIHRpbWUtb3V0IG9yIHNpbWlsYXIgKi8KKyAgICAgICAgICByZXN1bHQgPSBDVVJMRV9TU0g7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7CisgICAgICAgIERFQlVHRihpbmZvZihkYXRhLCAiZXJyb3IgPSAlZCBtYWtlcyBsaWJjdXJsID0gJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICBlcnIsIChpbnQpcmVzdWx0KSk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIC8qIFRoaXMgaXMgdGhlIGxhc3Qgc3RlcCBpbiB0aGUgU0ZUUCBjb25uZWN0IHBoYXNlLiBEbyBub3RlIHRoYXQgd2hpbGUKKyAgICAgICB3ZSBnZXQgdGhlIGhvbWVkaXIgaGVyZSwgd2UgZ2V0IHRoZSAid29ya2luZ3BhdGgiIGluIHRoZSBETyBhY3Rpb24KKyAgICAgICBzaW5jZSB0aGUgaG9tZWRpciB3aWxsIHJlbWFpbiB0aGUgc2FtZSBiZXR3ZWVuIHJlcXVlc3QgYnV0IHRoZQorICAgICAgIHdvcmtpbmcgcGF0aCB3aWxsIG5vdC4gKi8KKyAgICBERUJVR0YoaW5mb2YoZGF0YSwgIlNTSCBDT05ORUNUIHBoYXNlIGRvbmVcbiIpKTsKKyAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX0lOSVQ6CisKKyAgICAgIHJlc3VsdCA9IEN1cmxfZ2V0d29ya2luZ3BhdGgoY29ubiwgc3NoYy0+aG9tZWRpciwgJnNmdHBfc2NwLT5wYXRoKTsKKyAgICAgIGlmKHJlc3VsdCkgeworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZihkYXRhLT5zZXQucXVvdGUpIHsKKyAgICAgICAgaW5mb2YoZGF0YSwgIlNlbmRpbmcgcXVvdGUgY29tbWFuZHNcbiIpOworICAgICAgICBzc2hjLT5xdW90ZV9pdGVtID0gZGF0YS0+c2V0LnF1b3RlOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfR0VUSU5GTyk7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfUE9TVFFVT1RFX0lOSVQ6CisgICAgICBpZihkYXRhLT5zZXQucG9zdHF1b3RlKSB7CisgICAgICAgIGluZm9mKGRhdGEsICJTZW5kaW5nIHF1b3RlIGNvbW1hbmRzXG4iKTsKKyAgICAgICAgc3NoYy0+cXVvdGVfaXRlbSA9IGRhdGEtPnNldC5wb3N0cXVvdGU7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfUVVPVEU6CisgICAgICAvKiBTZW5kIGFueSBxdW90ZSBjb21tYW5kcyAqLworICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgKmNwOworCisgICAgICAvKgorICAgICAgICogU3VwcG9ydCBzb21lIG9mIHRoZSAiRlRQIiBjb21tYW5kcworICAgICAgICoKKyAgICAgICAqICdzc2hjLT5xdW90ZV9pdGVtJyBpcyBhbHJlYWR5IHZlcmlmaWVkIHRvIGJlIG5vbi1OVUxMIGJlZm9yZSBpdAorICAgICAgICogc3dpdGNoZWQgdG8gdGhpcyBzdGF0ZS4KKyAgICAgICAqLworICAgICAgY2hhciAqY21kID0gc3NoYy0+cXVvdGVfaXRlbS0+ZGF0YTsKKyAgICAgIHNzaGMtPmFjY2VwdGZhaWwgPSBGQUxTRTsKKworICAgICAgLyogaWYgYSBjb21tYW5kIHN0YXJ0cyB3aXRoIGFuIGFzdGVyaXNrLCB3aGljaCBhIGxlZ2FsIFNGVFAgY29tbWFuZCBuZXZlcgorICAgICAgICAgY2FuLCB0aGUgY29tbWFuZCB3aWxsIGJlIGFsbG93ZWQgdG8gZmFpbCB3aXRob3V0IGl0IGNhdXNpbmcgYW55CisgICAgICAgICBhYm9ydHMgb3IgY2FuY2VscyBldGMuIEl0IHdpbGwgY2F1c2UgbGliY3VybCB0byBhY3QgYXMgaWYgdGhlIGNvbW1hbmQKKyAgICAgICAgIGlzIHN1Y2Nlc3NmdWwsIHdoYXRldmVyIHRoZSBzZXJ2ZXIgcmVwb25kcy4gKi8KKworICAgICAgaWYoY21kWzBdID09ICcqJykgeworICAgICAgICBjbWQrKzsKKyAgICAgICAgc3NoYy0+YWNjZXB0ZmFpbCA9IFRSVUU7CisgICAgICB9CisKKyAgICAgIGlmKHN0cmNhc2Vjb21wYXJlKCJwd2QiLCBjbWQpKSB7CisgICAgICAgIC8qIG91dHB1dCBkZWJ1ZyBvdXRwdXQgaWYgdGhhdCBpcyByZXF1ZXN0ZWQgKi8KKyAgICAgICAgY2hhciAqdG1wID0gYXByaW50ZigiMjU3IFwiJXNcIiBpcyBjdXJyZW50IGRpcmVjdG9yeS5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Z0cF9zY3AtPnBhdGgpOworICAgICAgICBpZighdG1wKSB7CisgICAgICAgICAgcmVzdWx0ID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmKGRhdGEtPnNldC52ZXJib3NlKSB7CisgICAgICAgICAgQ3VybF9kZWJ1ZyhkYXRhLCBDVVJMSU5GT19IRUFERVJfT1VULCAoY2hhciAqKSJQV0RcbiIsIDQpOworICAgICAgICAgIEN1cmxfZGVidWcoZGF0YSwgQ1VSTElORk9fSEVBREVSX0lOLCB0bXAsIHN0cmxlbih0bXApKTsKKyAgICAgICAgfQorICAgICAgICAvKiB0aGlzIHNlbmRzIGFuIEZUUC1saWtlICJoZWFkZXIiIHRvIHRoZSBoZWFkZXIgY2FsbGJhY2sgc28gdGhhdCB0aGUKKyAgICAgICAgICAgY3VycmVudCBkaXJlY3RvcnkgY2FuIGJlIHJlYWQgdmVyeSBzaW1pbGFyIHRvIGhvdyBpdCBpcyByZWFkIHdoZW4KKyAgICAgICAgICAgdXNpbmcgb3JkaW5hcnkgRlRQLiAqLworICAgICAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9IRUFERVIsIHRtcCwgc3RybGVuKHRtcCkpOworICAgICAgICBmcmVlKHRtcCk7CisgICAgICAgIGlmKHJlc3VsdCkgeworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfTkVYVF9RVU9URSk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgeworICAgICAgICAvKgorICAgICAgICAgKiB0aGUgYXJndW1lbnRzIGZvbGxvd2luZyB0aGUgY29tbWFuZCBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZQorICAgICAgICAgKiBjb21tYW5kIHdpdGggYSBzcGFjZSBzbyB3ZSBjYW4gY2hlY2sgZm9yIGl0IHVuY29uZGl0aW9uYWxseQorICAgICAgICAgKi8KKyAgICAgICAgY3AgPSBzdHJjaHIoY21kLCAnICcpOworICAgICAgICBpZihjcCA9PSBOVUxMKSB7CisgICAgICAgICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvciBpbiBTRlRQIGNvbW1hbmQuIFN1cHBseSBwYXJhbWV0ZXIocykhIik7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBhbHNvLCBldmVyeSBjb21tYW5kIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCBzbyB3ZSBnZXQgdGhhdAorICAgICAgICAgKiBmaXJzdCBhcmd1bWVudCByaWdodCBub3cKKyAgICAgICAgICovCisgICAgICAgIHJlc3VsdCA9IEN1cmxfZ2V0X3BhdGhuYW1lKCZjcCwgJnNzaGMtPnF1b3RlX3BhdGgxLCBzc2hjLT5ob21lZGlyKTsKKyAgICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgICAgaWYocmVzdWx0ID09IENVUkxFX09VVF9PRl9NRU1PUlkpCisgICAgICAgICAgICBmYWlsZihkYXRhLCAiT3V0IG9mIG1lbW9yeSIpOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhaWxmKGRhdGEsICJTeW50YXggZXJyb3I6IEJhZCBmaXJzdCBwYXJhbWV0ZXIiKTsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBTRlRQIGlzIGEgYmluYXJ5IHByb3RvY29sLCBzbyB3ZSBkb24ndCBzZW5kIHRleHQgY29tbWFuZHMKKyAgICAgICAgICogdG8gdGhlIHNlcnZlci4gSW5zdGVhZCwgd2Ugc2NhbiBmb3IgY29tbWFuZHMgdXNlZCBieQorICAgICAgICAgKiBPcGVuU1NIJ3Mgc2Z0cCBwcm9ncmFtIGFuZCBjYWxsIHRoZSBhcHByb3ByaWF0ZSBsaWJzc2gyCisgICAgICAgICAqIGZ1bmN0aW9ucy4KKyAgICAgICAgICovCisgICAgICAgIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJjaGdycCAiLCA2KSB8fAorICAgICAgICAgICBzdHJuY2FzZWNvbXBhcmUoY21kLCAiY2htb2QgIiwgNikgfHwKKyAgICAgICAgICAgc3RybmNhc2Vjb21wYXJlKGNtZCwgImNob3duICIsIDYpICkgeworICAgICAgICAgIC8qIGF0dHJpYnV0ZSBjaGFuZ2UgKi8KKworICAgICAgICAgIC8qIHNzaGMtPnF1b3RlX3BhdGgxIGNvbnRhaW5zIHRoZSBtb2RlIHRvIHNldCAqLworICAgICAgICAgIC8qIGdldCB0aGUgZGVzdGluYXRpb24gKi8KKyAgICAgICAgICByZXN1bHQgPSBDdXJsX2dldF9wYXRobmFtZSgmY3AsICZzc2hjLT5xdW90ZV9wYXRoMiwgc3NoYy0+aG9tZWRpcik7CisgICAgICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfT1VUX09GX01FTU9SWSkKKyAgICAgICAgICAgICAgZmFpbGYoZGF0YSwgIk91dCBvZiBtZW1vcnkiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvciBpbiBjaGdycC9jaG1vZC9jaG93bjogIgorICAgICAgICAgICAgICAgICAgICAiQmFkIHNlY29uZCBwYXJhbWV0ZXIiKTsKKyAgICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgICBtZW1zZXQoJnNzaGMtPnF1b3RlX2F0dHJzLCAwLCBzaXplb2YoTElCU1NIMl9TRlRQX0FUVFJJQlVURVMpKTsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9TVEFUKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAibG4gIiwgMykgfHwKKyAgICAgICAgICAgc3RybmNhc2Vjb21wYXJlKGNtZCwgInN5bWxpbmsgIiwgOCkpIHsKKyAgICAgICAgICAvKiBzeW1ib2xpYyBsaW5raW5nICovCisgICAgICAgICAgLyogc3NoYy0+cXVvdGVfcGF0aDEgaXMgdGhlIHNvdXJjZSAqLworICAgICAgICAgIC8qIGdldCB0aGUgZGVzdGluYXRpb24gKi8KKyAgICAgICAgICByZXN1bHQgPSBDdXJsX2dldF9wYXRobmFtZSgmY3AsICZzc2hjLT5xdW90ZV9wYXRoMiwgc3NoYy0+aG9tZWRpcik7CisgICAgICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfT1VUX09GX01FTU9SWSkKKyAgICAgICAgICAgICAgZmFpbGYoZGF0YSwgIk91dCBvZiBtZW1vcnkiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZmFpbGYoZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIlN5bnRheCBlcnJvciBpbiBsbi9zeW1saW5rOiBCYWQgc2Vjb25kIHBhcmFtZXRlciIpOworICAgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX1NZTUxJTkspOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYoc3RybmNhc2Vjb21wYXJlKGNtZCwgIm1rZGlyICIsIDYpKSB7CisgICAgICAgICAgLyogY3JlYXRlIGRpciAqLworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX01LRElSKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJyZW5hbWUgIiwgNykpIHsKKyAgICAgICAgICAvKiByZW5hbWUgZmlsZSAqLworICAgICAgICAgIC8qIGZpcnN0IHBhcmFtIGlzIHRoZSBzb3VyY2UgcGF0aCAqLworICAgICAgICAgIC8qIHNlY29uZCBwYXJhbSBpcyB0aGUgZGVzdC4gcGF0aCAqLworICAgICAgICAgIHJlc3VsdCA9IEN1cmxfZ2V0X3BhdGhuYW1lKCZjcCwgJnNzaGMtPnF1b3RlX3BhdGgyLCBzc2hjLT5ob21lZGlyKTsKKyAgICAgICAgICBpZihyZXN1bHQpIHsKKyAgICAgICAgICAgIGlmKHJlc3VsdCA9PSBDVVJMRV9PVVRfT0ZfTUVNT1JZKQorICAgICAgICAgICAgICBmYWlsZihkYXRhLCAiT3V0IG9mIG1lbW9yeSIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBmYWlsZihkYXRhLCAiU3ludGF4IGVycm9yIGluIHJlbmFtZTogQmFkIHNlY29uZCBwYXJhbWV0ZXIiKTsKKyAgICAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9SRU5BTUUpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYoc3RybmNhc2Vjb21wYXJlKGNtZCwgInJtZGlyICIsIDYpKSB7CisgICAgICAgICAgLyogZGVsZXRlIGRpciAqLworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX1JNRElSKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHN0cm5jYXNlY29tcGFyZShjbWQsICJybSAiLCAzKSkgeworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX1VOTElOSyk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZmRlZiBIQVNfU1RBVFZGU19TVVBQT1JUCisgICAgICAgIGVsc2UgaWYoc3RybmNhc2Vjb21wYXJlKGNtZCwgInN0YXR2ZnMgIiwgOCkpIHsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9TVEFUVkZTKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgZmFpbGYoZGF0YSwgIlVua25vd24gU0ZUUCBjb21tYW5kIik7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9ORVhUX1FVT1RFOgorICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKKworICAgICAgc3NoYy0+cXVvdGVfaXRlbSA9IHNzaGMtPnF1b3RlX2l0ZW0tPm5leHQ7CisKKyAgICAgIGlmKHNzaGMtPnF1b3RlX2l0ZW0pIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEUpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGlmKHNzaGMtPm5leHRzdGF0ZSAhPSBTU0hfTk9fU1RBVEUpIHsKKyAgICAgICAgICBzdGF0ZShjb25uLCBzc2hjLT5uZXh0c3RhdGUpOworICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9HRVRJTkZPKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1NUQVQ6CisgICAgeworICAgICAgY2hhciAqY21kID0gc3NoYy0+cXVvdGVfaXRlbS0+ZGF0YTsKKyAgICAgIHNzaGMtPmFjY2VwdGZhaWwgPSBGQUxTRTsKKworICAgICAgLyogaWYgYSBjb21tYW5kIHN0YXJ0cyB3aXRoIGFuIGFzdGVyaXNrLCB3aGljaCBhIGxlZ2FsIFNGVFAgY29tbWFuZCBuZXZlcgorICAgICAgICAgY2FuLCB0aGUgY29tbWFuZCB3aWxsIGJlIGFsbG93ZWQgdG8gZmFpbCB3aXRob3V0IGl0IGNhdXNpbmcgYW55CisgICAgICAgICBhYm9ydHMgb3IgY2FuY2VscyBldGMuIEl0IHdpbGwgY2F1c2UgbGliY3VybCB0byBhY3QgYXMgaWYgdGhlIGNvbW1hbmQKKyAgICAgICAgIGlzIHN1Y2Nlc3NmdWwsIHdoYXRldmVyIHRoZSBzZXJ2ZXIgcmVwb25kcy4gKi8KKworICAgICAgaWYoY21kWzBdID09ICcqJykgeworICAgICAgICBjbWQrKzsKKyAgICAgICAgc3NoYy0+YWNjZXB0ZmFpbCA9IFRSVUU7CisgICAgICB9CisKKyAgICAgIGlmKCFzdHJuY2FzZWNvbXBhcmUoY21kLCAiY2htb2QiLCA1KSkgeworICAgICAgICAvKiBTaW5jZSBjaG93biBhbmQgY2hncnAgb25seSBzZXQgb3duZXIgT1IgZ3JvdXAgYnV0IGxpYnNzaDIgd2FudHMgdG8KKyAgICAgICAgICogc2V0IHRoZW0gYm90aCBhdCBvbmNlLCB3ZSBuZWVkIHRvIG9idGFpbiB0aGUgY3VycmVudCBvd25lcnNoaXAKKyAgICAgICAgICogZmlyc3QuICBUaGlzIHRha2VzIGFuIGV4dHJhIHByb3RvY29sIHJvdW5kIHRyaXAuCisgICAgICAgICAqLworICAgICAgICByYyA9IGxpYnNzaDJfc2Z0cF9zdGF0X2V4KHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzc2hjLT5xdW90ZV9wYXRoMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfU0ZUUF9TVEFULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzc2hjLT5xdW90ZV9hdHRycyk7CisgICAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgeyAvKiBnZXQgdGhvc2UgYXR0cmlidXRlcyAqLworICAgICAgICAgIGVyciA9IHNmdHBfbGlic3NoMl9sYXN0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbik7CisgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7CisgICAgICAgICAgZmFpbGYoZGF0YSwgIkF0dGVtcHQgdG8gZ2V0IFNGVFAgc3RhdHMgZmFpbGVkOiAlcyIsCisgICAgICAgICAgICAgICAgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycikpOworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qIE5vdyBzZXQgdGhlIG5ldyBhdHRyaWJ1dGVzLi4uICovCisgICAgICBpZihzdHJuY2FzZWNvbXBhcmUoY21kLCAiY2hncnAiLCA1KSkgeworICAgICAgICBzc2hjLT5xdW90ZV9hdHRycy5naWQgPSBzdHJ0b3VsKHNzaGMtPnF1b3RlX3BhdGgxLCBOVUxMLCAxMCk7CisgICAgICAgIHNzaGMtPnF1b3RlX2F0dHJzLmZsYWdzID0gTElCU1NIMl9TRlRQX0FUVFJfVUlER0lEOworICAgICAgICBpZihzc2hjLT5xdW90ZV9hdHRycy5naWQgPT0gMCAmJiAhSVNESUdJVChzc2hjLT5xdW90ZV9wYXRoMVswXSkgJiYKKyAgICAgICAgICAgIXNzaGMtPmFjY2VwdGZhaWwpIHsKKyAgICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKKyAgICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKKyAgICAgICAgICBmYWlsZihkYXRhLCAiU3ludGF4IGVycm9yOiBjaGdycCBnaWQgbm90IGEgbnVtYmVyIik7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoc3RybmNhc2Vjb21wYXJlKGNtZCwgImNobW9kIiwgNSkpIHsKKyAgICAgICAgc3NoYy0+cXVvdGVfYXR0cnMucGVybWlzc2lvbnMgPSBzdHJ0b3VsKHNzaGMtPnF1b3RlX3BhdGgxLCBOVUxMLCA4KTsKKyAgICAgICAgc3NoYy0+cXVvdGVfYXR0cnMuZmxhZ3MgPSBMSUJTU0gyX1NGVFBfQVRUUl9QRVJNSVNTSU9OUzsKKyAgICAgICAgLyogcGVybWlzc2lvbnMgYXJlIG9jdGFsICovCisgICAgICAgIGlmKHNzaGMtPnF1b3RlX2F0dHJzLnBlcm1pc3Npb25zID09IDAgJiYKKyAgICAgICAgICAgIUlTRElHSVQoc3NoYy0+cXVvdGVfcGF0aDFbMF0pKSB7CisgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7CisgICAgICAgICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvcjogY2htb2QgcGVybWlzc2lvbnMgbm90IGEgbnVtYmVyIik7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoc3RybmNhc2Vjb21wYXJlKGNtZCwgImNob3duIiwgNSkpIHsKKyAgICAgICAgc3NoYy0+cXVvdGVfYXR0cnMudWlkID0gc3RydG91bChzc2hjLT5xdW90ZV9wYXRoMSwgTlVMTCwgMTApOworICAgICAgICBzc2hjLT5xdW90ZV9hdHRycy5mbGFncyA9IExJQlNTSDJfU0ZUUF9BVFRSX1VJREdJRDsKKyAgICAgICAgaWYoc3NoYy0+cXVvdGVfYXR0cnMudWlkID09IDAgJiYgIUlTRElHSVQoc3NoYy0+cXVvdGVfcGF0aDFbMF0pICYmCisgICAgICAgICAgICFzc2hjLT5hY2NlcHRmYWlsKSB7CisgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7CisgICAgICAgICAgZmFpbGYoZGF0YSwgIlN5bnRheCBlcnJvcjogY2hvd24gdWlkIG5vdCBhIG51bWJlciIpOworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qIE5vdyBzZW5kIHRoZSBjb21wbGV0ZWQgc3RydWN0dXJlLi4uICovCisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9TRVRTVEFUKTsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU1NIX1NGVFBfUVVPVEVfU0VUU1RBVDoKKyAgICAgIHJjID0gbGlic3NoMl9zZnRwX3N0YXRfZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzc2hjLT5xdW90ZV9wYXRoMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX1NGVFBfU0VUU1RBVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNzaGMtPnF1b3RlX2F0dHJzKTsKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgeworICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOworICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKKyAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7CisgICAgICAgIGZhaWxmKGRhdGEsICJBdHRlbXB0IHRvIHNldCBTRlRQIHN0YXRzIGZhaWxlZDogJXMiLAorICAgICAgICAgICAgICBzZnRwX2xpYnNzaDJfc3RyZXJyb3IoZXJyKSk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfTkVYVF9RVU9URSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfUVVPVEVfU1lNTElOSzoKKyAgICAgIHJjID0gbGlic3NoMl9zZnRwX3N5bWxpbmtfZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzc2hjLT5xdW90ZV9wYXRoMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5xdW90ZV9wYXRoMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzc2hjLT5xdW90ZV9wYXRoMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX1NGVFBfU1lNTElOSyk7CisgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmKHJjICE9IDAgJiYgIXNzaGMtPmFjY2VwdGZhaWwpIHsKKyAgICAgICAgZXJyID0gc2Z0cF9saWJzc2gyX2xhc3RfZXJyb3Ioc3NoYy0+c2Z0cF9zZXNzaW9uKTsKKyAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDIpOworICAgICAgICBmYWlsZihkYXRhLCAic3ltbGluayBjb21tYW5kIGZhaWxlZDogJXMiLAorICAgICAgICAgICAgICBzZnRwX2xpYnNzaDJfc3RyZXJyb3IoZXJyKSk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfTkVYVF9RVU9URSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfUVVPVEVfTUtESVI6CisgICAgICByYyA9IGxpYnNzaDJfc2Z0cF9ta2Rpcl9leChzc2hjLT5zZnRwX3Nlc3Npb24sIHNzaGMtPnF1b3RlX3BhdGgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzc2hjLT5xdW90ZV9wYXRoMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0Lm5ld19kaXJlY3RvcnlfcGVybXMpOworICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZihyYyAhPSAwICYmICFzc2hjLT5hY2NlcHRmYWlsKSB7CisgICAgICAgIGVyciA9IHNmdHBfbGlic3NoMl9sYXN0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbik7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgICBmYWlsZihkYXRhLCAibWtkaXIgY29tbWFuZCBmYWlsZWQ6ICVzIiwgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycikpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1JFTkFNRToKKyAgICAgIHJjID0gbGlic3NoMl9zZnRwX3JlbmFtZV9leChzc2hjLT5zZnRwX3Nlc3Npb24sIHNzaGMtPnF1b3RlX3BhdGgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3NoYy0+cXVvdGVfcGF0aDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5xdW90ZV9wYXRoMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHNzaGMtPnF1b3RlX3BhdGgyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9TRlRQX1JFTkFNRV9PVkVSV1JJVEUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfU0ZUUF9SRU5BTUVfQVRPTUlDIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX1NGVFBfUkVOQU1FX05BVElWRSk7CisKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgeworICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOworICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKKyAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMik7CisgICAgICAgIGZhaWxmKGRhdGEsICJyZW5hbWUgY29tbWFuZCBmYWlsZWQ6ICVzIiwgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycikpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TRlRQX1FVT1RFX1JNRElSOgorICAgICAgcmMgPSBsaWJzc2gyX3NmdHBfcm1kaXJfZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzc2hjLT5xdW90ZV9wYXRoMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3NoYy0+cXVvdGVfcGF0aDEpKSk7CisgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmKHJjICE9IDAgJiYgIXNzaGMtPmFjY2VwdGZhaWwpIHsKKyAgICAgICAgZXJyID0gc2Z0cF9saWJzc2gyX2xhc3RfZXJyb3Ioc3NoYy0+c2Z0cF9zZXNzaW9uKTsKKyAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICAgIGZhaWxmKGRhdGEsICJybWRpciBjb21tYW5kIGZhaWxlZDogJXMiLCBzZnRwX2xpYnNzaDJfc3RyZXJyb3IoZXJyKSk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfTkVYVF9RVU9URSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfUVVPVEVfVU5MSU5LOgorICAgICAgcmMgPSBsaWJzc2gyX3NmdHBfdW5saW5rX2V4KHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzc2hjLT5xdW90ZV9wYXRoMSkpKTsKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgeworICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOworICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKKyAgICAgICAgZmFpbGYoZGF0YSwgInJtIGNvbW1hbmQgZmFpbGVkOiAlcyIsIHNmdHBfbGlic3NoMl9zdHJlcnJvcihlcnIpKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9RVU9URV9FUlJPUjsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKKyAgICAgIGJyZWFrOworCisjaWZkZWYgSEFTX1NUQVRWRlNfU1VQUE9SVAorICAgIGNhc2UgU1NIX1NGVFBfUVVPVEVfU1RBVFZGUzoKKyAgICB7CisgICAgICBMSUJTU0gyX1NGVFBfU1RBVFZGUyBzdGF0dmZzOworICAgICAgcmMgPSBsaWJzc2gyX3NmdHBfc3RhdHZmcyhzc2hjLT5zZnRwX3Nlc3Npb24sIHNzaGMtPnF1b3RlX3BhdGgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHNzaGMtPnF1b3RlX3BhdGgxKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0dmZzKTsKKworICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZihyYyAhPSAwICYmICFzc2hjLT5hY2NlcHRmYWlsKSB7CisgICAgICAgIGVyciA9IHNmdHBfbGlic3NoMl9sYXN0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbik7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOworICAgICAgICBmYWlsZihkYXRhLCAic3RhdHZmcyBjb21tYW5kIGZhaWxlZDogJXMiLCBzZnRwX2xpYnNzaDJfc3RyZXJyb3IoZXJyKSk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgc3NoYy0+bmV4dHN0YXRlID0gU1NIX05PX1NUQVRFOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfUVVPVEVfRVJST1I7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZWxzZSBpZihyYyA9PSAwKSB7CisgICAgICAgIGNoYXIgKnRtcCA9IGFwcmludGYoInN0YXR2ZnM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfYnNpemU6ICVsbHVcbiIgImZfZnJzaXplOiAlbGx1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfYmxvY2tzOiAlbGx1XG4iICJmX2JmcmVlOiAlbGx1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfYmF2YWlsOiAlbGx1XG4iICJmX2ZpbGVzOiAlbGx1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfZmZyZWU6ICVsbHVcbiIgImZfZmF2YWlsOiAlbGx1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfZnNpZDogJWxsdVxuIiAiZl9mbGFnOiAlbGx1XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZfbmFtZW1heDogJWxsdVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dmZzLmZfYnNpemUsIHN0YXR2ZnMuZl9mcnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy5mX2Jsb2Nrcywgc3RhdHZmcy5mX2JmcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR2ZnMuZl9iYXZhaWwsIHN0YXR2ZnMuZl9maWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dmZzLmZfZmZyZWUsIHN0YXR2ZnMuZl9mYXZhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy5mX2ZzaWQsIHN0YXR2ZnMuZl9mbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR2ZnMuZl9uYW1lbWF4KTsKKyAgICAgICAgaWYoIXRtcCkgeworICAgICAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0hFQURFUiwgdG1wLCBzdHJsZW4odG1wKSk7CisgICAgICAgIGZyZWUodG1wKTsKKyAgICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OworICAgICAgICB9CisgICAgICB9CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ORVhUX1FVT1RFKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyNlbmRpZgorICAgIGNhc2UgU1NIX1NGVFBfR0VUSU5GTzoKKyAgICB7CisgICAgICBpZihkYXRhLT5zZXQuZ2V0X2ZpbGV0aW1lKSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0ZJTEVUSU1FKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9UUkFOU19JTklUKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU1NIX1NGVFBfRklMRVRJTUU6CisgICAgeworICAgICAgTElCU1NIMl9TRlRQX0FUVFJJQlVURVMgYXR0cnM7CisKKyAgICAgIHJjID0gbGlic3NoMl9zZnRwX3N0YXRfZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzZnRwX3NjcC0+cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzZnRwX3NjcC0+cGF0aCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX1NGVFBfU1RBVCwgJmF0dHJzKTsKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYocmMgPT0gMCkgeworICAgICAgICBkYXRhLT5pbmZvLmZpbGV0aW1lID0gYXR0cnMubXRpbWU7CisgICAgICB9CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1RSQU5TX0lOSVQpOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTU0hfU0ZUUF9UUkFOU19JTklUOgorICAgICAgaWYoZGF0YS0+c2V0LnVwbG9hZCkKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVVBMT0FEX0lOSVQpOworICAgICAgZWxzZSB7CisgICAgICAgIGlmKHNmdHBfc2NwLT5wYXRoW3N0cmxlbihzZnRwX3NjcC0+cGF0aCktMV0gPT0gJy8nKQorICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQURESVJfSU5JVCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9ET1dOTE9BRF9JTklUKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9VUExPQURfSU5JVDoKKyAgICB7CisgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgICAgLyoKKyAgICAgICAqIE5PVEUhISEgIGxpYnNzaDIgcmVxdWlyZXMgdGhhdCB0aGUgZGVzdGluYXRpb24gcGF0aCBpcyBhIGZ1bGwgcGF0aAorICAgICAgICogICAgICAgICAgdGhhdCBpbmNsdWRlcyB0aGUgZGVzdGluYXRpb24gZmlsZSBhbmQgbmFtZSBPUiBlbmRzIGluIGEgIi8iCisgICAgICAgKiAgICAgICAgICBJZiB0aGlzIGlzIG5vdCBkb25lIHRoZSBkZXN0aW5hdGlvbiBmaWxlIHdpbGwgYmUgbmFtZWQgdGhlCisgICAgICAgKiAgICAgICAgICBzYW1lIG5hbWUgYXMgdGhlIGxhc3QgZGlyZWN0b3J5IGluIHRoZSBwYXRoLgorICAgICAgICovCisKKyAgICAgIGlmKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tICE9IDApIHsKKyAgICAgICAgTElCU1NIMl9TRlRQX0FUVFJJQlVURVMgYXR0cnM7CisgICAgICAgIGlmKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tIDwgMCkgeworICAgICAgICAgIHJjID0gbGlic3NoMl9zZnRwX3N0YXRfZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzZnRwX3NjcC0+cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc2Z0cF9zY3AtPnBhdGgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfU0ZUUF9TVEFULCAmYXR0cnMpOworICAgICAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYocmMpIHsKKyAgICAgICAgICAgIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tID0gMDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjdXJsX29mZl90IHNpemUgPSBhdHRycy5maWxlc2l6ZTsKKyAgICAgICAgICAgIGlmKHNpemUgPCAwKSB7CisgICAgICAgICAgICAgIGZhaWxmKGRhdGEsICJCYWQgZmlsZSBzaXplICglIiBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIpIiwgc2l6ZSk7CisgICAgICAgICAgICAgIHJldHVybiBDVVJMRV9CQURfRE9XTkxPQURfUkVTVU1FOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPSBhdHRycy5maWxlc2l6ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYoZGF0YS0+c2V0LmZ0cF9hcHBlbmQpCisgICAgICAgIC8qIFRyeSB0byBvcGVuIGZvciBhcHBlbmQsIGJ1dCBjcmVhdGUgaWYgbm9uZXhpc3RpbmcgKi8KKyAgICAgICAgZmxhZ3MgPSBMSUJTU0gyX0ZYRl9XUklURXxMSUJTU0gyX0ZYRl9DUkVBVHxMSUJTU0gyX0ZYRl9BUFBFTkQ7CisgICAgICBlbHNlIGlmKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tID4gMCkKKyAgICAgICAgLyogSWYgd2UgaGF2ZSByZXN0YXJ0IHBvc2l0aW9uIHRoZW4gb3BlbiBmb3IgYXBwZW5kICovCisgICAgICAgIGZsYWdzID0gTElCU1NIMl9GWEZfV1JJVEV8TElCU1NIMl9GWEZfQVBQRU5EOworICAgICAgZWxzZQorICAgICAgICAvKiBDbGVhciBmaWxlIGJlZm9yZSB3cml0aW5nIChub3JtYWwgYmVoYXZpb3VyKSAqLworICAgICAgICBmbGFncyA9IExJQlNTSDJfRlhGX1dSSVRFfExJQlNTSDJfRlhGX0NSRUFUfExJQlNTSDJfRlhGX1RSVU5DOworCisgICAgICBzc2hjLT5zZnRwX2hhbmRsZSA9CisgICAgICAgIGxpYnNzaDJfc2Z0cF9vcGVuX2V4KHNzaGMtPnNmdHBfc2Vzc2lvbiwgc2Z0cF9zY3AtPnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc2Z0cF9zY3AtPnBhdGgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MsIGRhdGEtPnNldC5uZXdfZmlsZV9wZXJtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9TRlRQX09QRU5GSUxFKTsKKworICAgICAgaWYoIXNzaGMtPnNmdHBfaGFuZGxlKSB7CisgICAgICAgIHJjID0gbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJybm8oc3NoYy0+c3NoX3Nlc3Npb24pOworCisgICAgICAgIGlmKExJQlNTSDJfRVJST1JfRUFHQUlOID09IHJjKQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmKExJQlNTSDJfRVJST1JfU0ZUUF9QUk9UT0NPTCA9PSByYykKKyAgICAgICAgICAvKiBvbmx5IHdoZW4gdGhlcmUgd2FzIGFuIFNGVFAgcHJvdG9jb2wgZXJyb3IgY2FuIHdlIGV4dHJhY3QKKyAgICAgICAgICAgICB0aGUgc2Z0cCBlcnJvciEgKi8KKyAgICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOworICAgICAgICBlbHNlCisgICAgICAgICAgZXJyID0gLTE7IC8qIG5vdCBhbiBzZnRwIGVycm9yIGF0IGFsbCAqLworCisgICAgICAgIGlmKHNzaGMtPnNlY29uZENyZWF0ZURpcnMpIHsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IGVycj49IExJQlNTSDJfRlhfT0s/CisgICAgICAgICAgICBzZnRwX2xpYnNzaDJfZXJyb3JfdG9fQ1VSTEUoZXJyKTpDVVJMRV9TU0g7CisgICAgICAgICAgZmFpbGYoZGF0YSwgIkNyZWF0aW5nIHRoZSBkaXIvZmlsZSBmYWlsZWQ6ICVzIiwKKyAgICAgICAgICAgICAgICBzZnRwX2xpYnNzaDJfc3RyZXJyb3IoZXJyKSk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYoKChlcnIgPT0gTElCU1NIMl9GWF9OT19TVUNIX0ZJTEUpIHx8CisgICAgICAgICAgICAoZXJyID09IExJQlNTSDJfRlhfRkFJTFVSRSkgfHwKKyAgICAgICAgICAgIChlcnIgPT0gTElCU1NIMl9GWF9OT19TVUNIX1BBVEgpKSAmJgorICAgICAgICAgICAoZGF0YS0+c2V0LmZ0cF9jcmVhdGVfbWlzc2luZ19kaXJzICYmCisgICAgICAgICAgICAoc3RybGVuKHNmdHBfc2NwLT5wYXRoKSA+IDEpKSkgeworICAgICAgICAgIC8qIHRyeSB0byBjcmVhdGUgdGhlIHBhdGggcmVtb3RlbHkgKi8KKyAgICAgICAgICByYyA9IDA7IC8qIGNsZWFyIHJjIGFuZCBjb250aW51ZSAqLworICAgICAgICAgIHNzaGMtPnNlY29uZENyZWF0ZURpcnMgPSAxOworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IGVycj49IExJQlNTSDJfRlhfT0s/CisgICAgICAgICAgc2Z0cF9saWJzc2gyX2Vycm9yX3RvX0NVUkxFKGVycik6Q1VSTEVfU1NIOworICAgICAgICBpZighc3NoYy0+YWN0dWFsY29kZSkgeworICAgICAgICAgIC8qIFNvbWV0aW1lcywgZm9yIHNvbWUgcmVhc29uIGxpYnNzaDJfc2Z0cF9sYXN0X2Vycm9yKCkgcmV0dXJucworICAgICAgICAgICAgIHplcm8gZXZlbiB0aG91Z2ggbGlic3NoMl9zZnRwX29wZW4oKSBmYWlsZWQgcHJldmlvdXNseSEgV2UgbmVlZAorICAgICAgICAgICAgIHRvIHdvcmsgYXJvdW5kIHRoYXQhICovCisgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1NTSDsKKyAgICAgICAgICBlcnIgPSAtMTsKKyAgICAgICAgfQorICAgICAgICBmYWlsZihkYXRhLCAiVXBsb2FkIGZhaWxlZDogJXMgKCVkLyVkKSIsCisgICAgICAgICAgICAgIGVycj49IExJQlNTSDJfRlhfT0s/c2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycik6InNzaCBlcnJvciIsCisgICAgICAgICAgICAgIGVyciwgcmMpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgLyogSWYgd2UgaGF2ZSBhIHJlc3RhcnQgcG9pbnQgdGhlbiB3ZSBuZWVkIHRvIHNlZWsgdG8gdGhlIGNvcnJlY3QKKyAgICAgICAgIHBvc2l0aW9uLiAqLworICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPiAwKSB7CisgICAgICAgIC8qIExldCdzIHJlYWQgb2ZmIHRoZSBwcm9wZXIgYW1vdW50IG9mIGJ5dGVzIGZyb20gdGhlIGlucHV0LiAqLworICAgICAgICBpZihjb25uLT5zZWVrX2Z1bmMpIHsKKyAgICAgICAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCB0cnVlKTsKKyAgICAgICAgICBzZWVrZXJyID0gY29ubi0+c2Vla19mdW5jKGNvbm4tPnNlZWtfY2xpZW50LCBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFRUtfU0VUKTsKKyAgICAgICAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBpZihzZWVrZXJyICE9IENVUkxfU0VFS0ZVTkNfT0spIHsKKyAgICAgICAgICBjdXJsX29mZl90IHBhc3NlZCA9IDA7CisKKyAgICAgICAgICBpZihzZWVrZXJyICE9IENVUkxfU0VFS0ZVTkNfQ0FOVFNFRUspIHsKKyAgICAgICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3Qgc2VlayBzdHJlYW0iKTsKKyAgICAgICAgICAgIHJldHVybiBDVVJMRV9GVFBfQ09VTEROVF9VU0VfUkVTVDsKKyAgICAgICAgICB9CisgICAgICAgICAgLyogc2Vla2VyciA9PSBDVVJMX1NFRUtGVU5DX0NBTlRTRUVLIChjYW4ndCBzZWVrIHRvIG9mZnNldCkgKi8KKyAgICAgICAgICBkbyB7CisgICAgICAgICAgICBzaXplX3QgcmVhZHRoaXNhbW91bnRub3cgPQorICAgICAgICAgICAgICAoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gLSBwYXNzZWQgPiBkYXRhLT5zZXQuYnVmZmVyX3NpemUpID8KKyAgICAgICAgICAgICAgKHNpemVfdClkYXRhLT5zZXQuYnVmZmVyX3NpemUgOgorICAgICAgICAgICAgICBjdXJseF9zb3RvdXooZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gLSBwYXNzZWQpOworCisgICAgICAgICAgICBzaXplX3QgYWN0dWFsbHlyZWFkOworICAgICAgICAgICAgQ3VybF9zZXRfaW5fY2FsbGJhY2soZGF0YSwgdHJ1ZSk7CisgICAgICAgICAgICBhY3R1YWxseXJlYWQgPSBkYXRhLT5zdGF0ZS5mcmVhZF9mdW5jKGRhdGEtPnN0YXRlLmJ1ZmZlciwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHRoaXNhbW91bnRub3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnN0YXRlLmluKTsKKyAgICAgICAgICAgIEN1cmxfc2V0X2luX2NhbGxiYWNrKGRhdGEsIGZhbHNlKTsKKworICAgICAgICAgICAgcGFzc2VkICs9IGFjdHVhbGx5cmVhZDsKKyAgICAgICAgICAgIGlmKChhY3R1YWxseXJlYWQgPT0gMCkgfHwgKGFjdHVhbGx5cmVhZCA+IHJlYWR0aGlzYW1vdW50bm93KSkgeworICAgICAgICAgICAgICAvKiB0aGlzIGNoZWNrcyBmb3IgZ3JlYXRlci10aGFuIG9ubHkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgIENVUkxfUkVBREZVTkNfQUJPUlQgcmV0dXJuIGNvZGUgc3RpbGwgYWJvcnRzICovCisgICAgICAgICAgICAgIGZhaWxmKGRhdGEsICJGYWlsZWQgdG8gcmVhZCBkYXRhIik7CisgICAgICAgICAgICAgIHJldHVybiBDVVJMRV9GVFBfQ09VTEROVF9VU0VfUkVTVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IHdoaWxlKHBhc3NlZCA8IGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIG5vdywgZGVjcmVhc2UgdGhlIHNpemUgb2YgdGhlIHJlYWQgKi8KKyAgICAgICAgaWYoZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSA+IDApIHsKKyAgICAgICAgICBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplIC09IGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tOworICAgICAgICAgIGRhdGEtPnJlcS5zaXplID0gZGF0YS0+c3RhdGUuaW5maWxlc2l6ZTsKKyAgICAgICAgICBDdXJsX3BncnNTZXRVcGxvYWRTaXplKGRhdGEsIGRhdGEtPnN0YXRlLmluZmlsZXNpemUpOworICAgICAgICB9CisKKyAgICAgICAgU0ZUUF9TRUVLKHNzaGMtPnNmdHBfaGFuZGxlLCBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSk7CisgICAgICB9CisgICAgICBpZihkYXRhLT5zdGF0ZS5pbmZpbGVzaXplID4gMCkgeworICAgICAgICBkYXRhLT5yZXEuc2l6ZSA9IGRhdGEtPnN0YXRlLmluZmlsZXNpemU7CisgICAgICAgIEN1cmxfcGdyc1NldFVwbG9hZFNpemUoZGF0YSwgZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSk7CisgICAgICB9CisgICAgICAvKiB1cGxvYWQgZGF0YSAqLworICAgICAgQ3VybF9zZXR1cF90cmFuc2ZlcihkYXRhLCAtMSwgLTEsIEZBTFNFLCBGSVJTVFNPQ0tFVCk7CisKKyAgICAgIC8qIG5vdCBzZXQgYnkgQ3VybF9zZXR1cF90cmFuc2ZlciB0byBwcmVzZXJ2ZSBrZWVwb24gYml0cyAqLworICAgICAgY29ubi0+c29ja2ZkID0gY29ubi0+d3JpdGVzb2NrZmQ7CisKKyAgICAgIGlmKHJlc3VsdCkgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgLyogc3RvcmUgdGhpcyBvcmlnaW5hbCBiaXRtYXNrIHNldHVwIHRvIHVzZSBsYXRlciBvbiBpZiB3ZSBjYW4ndAorICAgICAgICAgICBmaWd1cmUgb3V0IGEgInJlYWwiIGJpdG1hc2sgKi8KKyAgICAgICAgc3NoYy0+b3JpZ193YWl0Zm9yID0gZGF0YS0+cmVxLmtlZXBvbjsKKworICAgICAgICAvKiB3ZSB3YW50IHRvIHVzZSB0aGUgX3NlbmRpbmdfIGZ1bmN0aW9uIGV2ZW4gd2hlbiB0aGUgc29ja2V0IHR1cm5zCisgICAgICAgICAgIG91dCByZWFkYWJsZSBhcyB0aGUgdW5kZXJseWluZyBsaWJzc2gyIHNmdHAgc2VuZCBmdW5jdGlvbiB3aWxsIGRlYWwKKyAgICAgICAgICAgd2l0aCBib3RoIGFjY29yZGluZ2x5ICovCisgICAgICAgIGNvbm4tPmNzZWxlY3RfYml0cyA9IENVUkxfQ1NFTEVDVF9PVVQ7CisKKyAgICAgICAgLyogc2luY2Ugd2UgZG9uJ3QgcmVhbGx5IHdhaXQgZm9yIGFueXRoaW5nIGF0IHRoaXMgcG9pbnQsIHdlIHdhbnQgdGhlCisgICAgICAgICAgIHN0YXRlIG1hY2hpbmUgdG8gbW92ZSBvbiBhcyBzb29uIGFzIHBvc3NpYmxlIHNvIHdlIHNldCBhIHZlcnkgc2hvcnQKKyAgICAgICAgICAgdGltZW91dCBoZXJlICovCisgICAgICAgIEN1cmxfZXhwaXJlKGRhdGEsIDAsIEVYUElSRV9SVU5fTk9XKTsKKworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQ6CisgICAgICBpZihzdHJsZW4oc2Z0cF9zY3AtPnBhdGgpID4gMSkgeworICAgICAgICBzc2hjLT5zbGFzaF9wb3MgPSBzZnRwX3NjcC0+cGF0aCArIDE7IC8qIGlnbm9yZSB0aGUgbGVhZGluZyAnLycgKi8KKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ1JFQVRFX0RJUlMpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1VQTE9BRF9JTklUKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9DUkVBVEVfRElSUzoKKyAgICAgIHNzaGMtPnNsYXNoX3BvcyA9IHN0cmNocihzc2hjLT5zbGFzaF9wb3MsICcvJyk7CisgICAgICBpZihzc2hjLT5zbGFzaF9wb3MpIHsKKyAgICAgICAgKnNzaGMtPnNsYXNoX3BvcyA9IDA7CisKKyAgICAgICAgaW5mb2YoZGF0YSwgIkNyZWF0aW5nIGRpcmVjdG9yeSAnJXMnXG4iLCBzZnRwX3NjcC0+cGF0aCk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NSRUFURV9ESVJTX01LRElSKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9VUExPQURfSU5JVCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfQ1JFQVRFX0RJUlNfTUtESVI6CisgICAgICAvKiAnbW9kZScgLSBwYXJhbWV0ZXIgaXMgcHJlbGltaW5hcnkgLSBkZWZhdWx0IHRvIDA2NDQgKi8KKyAgICAgIHJjID0gbGlic3NoMl9zZnRwX21rZGlyX2V4KHNzaGMtPnNmdHBfc2Vzc2lvbiwgc2Z0cF9zY3AtPnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHNmdHBfc2NwLT5wYXRoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQubmV3X2RpcmVjdG9yeV9wZXJtcyk7CisgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgICpzc2hjLT5zbGFzaF9wb3MgPSAnLyc7CisgICAgICArK3NzaGMtPnNsYXNoX3BvczsKKyAgICAgIGlmKHJjIDwgMCkgeworICAgICAgICAvKgorICAgICAgICAgKiBBYm9ydCBpZiBmYWlsdXJlIHdhc24ndCB0aGF0IHRoZSBkaXIgYWxyZWFkeSBleGlzdHMgb3IgdGhlCisgICAgICAgICAqIHBlcm1pc3Npb24gd2FzIGRlbmllZCAoY3JlYXRpb24gbWlnaHQgc3VjY2VlZCBmdXJ0aGVyIGRvd24gdGhlCisgICAgICAgICAqIHBhdGgpIC0gcmV0cnkgb24gdW5zcGVjaWZpYyBGQUlMVVJFIGFsc28KKyAgICAgICAgICovCisgICAgICAgIGVyciA9IHNmdHBfbGlic3NoMl9sYXN0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbik7CisgICAgICAgIGlmKChlcnIgIT0gTElCU1NIMl9GWF9GSUxFX0FMUkVBRFlfRVhJU1RTKSAmJgorICAgICAgICAgICAoZXJyICE9IExJQlNTSDJfRlhfRkFJTFVSRSkgJiYKKyAgICAgICAgICAgKGVyciAhPSBMSUJTU0gyX0ZYX1BFUk1JU1NJT05fREVOSUVEKSkgeworICAgICAgICAgIHJlc3VsdCA9IHNmdHBfbGlic3NoMl9lcnJvcl90b19DVVJMRShlcnIpOworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0P3Jlc3VsdDpDVVJMRV9TU0g7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmMgPSAwOyAvKiBjbGVhciByYyBhbmQgY29udGludWUgKi8KKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NSRUFURV9ESVJTKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9SRUFERElSX0lOSVQ6CisgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgLTEpOworICAgICAgaWYoZGF0YS0+c2V0Lm9wdF9ub19ib2R5KSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIC8qCisgICAgICAgKiBUaGlzIGlzIGEgZGlyZWN0b3J5IHRoYXQgd2UgYXJlIHRyeWluZyB0byBnZXQsIHNvIHByb2R1Y2UgYSBkaXJlY3RvcnkKKyAgICAgICAqIGxpc3RpbmcKKyAgICAgICAqLworICAgICAgc3NoYy0+c2Z0cF9oYW5kbGUgPSBsaWJzc2gyX3NmdHBfb3Blbl9leChzc2hjLT5zZnRwX3Nlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNmdHBfc2NwLT5wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKHNmdHBfc2NwLT5wYXRoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIExJQlNTSDJfU0ZUUF9PUEVORElSKTsKKyAgICAgIGlmKCFzc2hjLT5zZnRwX2hhbmRsZSkgeworICAgICAgICBpZihsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJubyhzc2hjLT5zc2hfc2Vzc2lvbikgPT0KKyAgICAgICAgICAgTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgICByYyA9IExJQlNTSDJfRVJST1JfRUFHQUlOOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGVyciA9IHNmdHBfbGlic3NoMl9sYXN0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbik7CisgICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgZm9yIHJlYWRpbmc6ICVzIiwKKyAgICAgICAgICAgICAgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycikpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHJlc3VsdCA9IHNmdHBfbGlic3NoMl9lcnJvcl90b19DVVJMRShlcnIpOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0P3Jlc3VsdDpDVVJMRV9TU0g7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3NoYy0+cmVhZGRpcl9maWxlbmFtZSA9IG1hbGxvYyhQQVRIX01BWCArIDEpOworICAgICAgaWYoIXNzaGMtPnJlYWRkaXJfZmlsZW5hbWUpIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSA9IG1hbGxvYyhQQVRIX01BWCArIDEpOworICAgICAgaWYoIXNzaGMtPnJlYWRkaXJfbG9uZ2VudHJ5KSB7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUik7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfUkVBRERJUjoKKyAgICAgIHJjID0gbGlic3NoMl9zZnRwX3JlYWRkaXJfZXgoc3NoYy0+c2Z0cF9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBVEhfTUFYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFUSF9NQVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzc2hjLT5yZWFkZGlyX2F0dHJzKTsKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYocmMgPiAwKSB7CisgICAgICAgIHNzaGMtPnJlYWRkaXJfbGVuID0gKHNpemVfdCkgcmM7CisgICAgICAgIHNzaGMtPnJlYWRkaXJfZmlsZW5hbWVbc3NoYy0+cmVhZGRpcl9sZW5dID0gJ1wwJzsKKworICAgICAgICBpZihkYXRhLT5zZXQuZnRwX2xpc3Rfb25seSkgeworICAgICAgICAgIGNoYXIgKnRtcExpbmU7CisKKyAgICAgICAgICB0bXBMaW5lID0gYXByaW50ZigiJXNcbiIsIHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUpOworICAgICAgICAgIGlmKHRtcExpbmUgPT0gTlVMTCkgeworICAgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBMaW5lLCBzc2hjLT5yZWFkZGlyX2xlbiArIDEpOworICAgICAgICAgIGZyZWUodG1wTGluZSk7CisKKyAgICAgICAgICBpZihyZXN1bHQpIHsKKyAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgICAvKiBzaW5jZSB0aGlzIGNvdW50cyB3aGF0IHdlIHNlbmQgdG8gdGhlIGNsaWVudCwgd2UgaW5jbHVkZSB0aGUKKyAgICAgICAgICAgICBuZXdsaW5lIGluIHRoaXMgY291bnRlciAqLworICAgICAgICAgIGRhdGEtPnJlcS5ieXRlY291bnQgKz0gc3NoYy0+cmVhZGRpcl9sZW4gKyAxOworCisgICAgICAgICAgLyogb3V0cHV0IGRlYnVnIG91dHB1dCBpZiB0aGF0IGlzIHJlcXVlc3RlZCAqLworICAgICAgICAgIGlmKGRhdGEtPnNldC52ZXJib3NlKSB7CisgICAgICAgICAgICBDdXJsX2RlYnVnKGRhdGEsIENVUkxJTkZPX0RBVEFfT1VULCBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xlbik7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHNzaGMtPnJlYWRkaXJfY3VyckxlbiA9IHN0cmxlbihzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSk7CisgICAgICAgICAgc3NoYy0+cmVhZGRpcl90b3RhbExlbiA9IDgwICsgc3NoYy0+cmVhZGRpcl9jdXJyTGVuOworICAgICAgICAgIHNzaGMtPnJlYWRkaXJfbGluZSA9IGNhbGxvYyhzc2hjLT5yZWFkZGlyX3RvdGFsTGVuLCAxKTsKKyAgICAgICAgICBpZighc3NoYy0+cmVhZGRpcl9saW5lKSB7CisgICAgICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfZmlsZW5hbWUpOworICAgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSk7CisgICAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKworICAgICAgICAgIG1lbWNweShzc2hjLT5yZWFkZGlyX2xpbmUsIHNzaGMtPnJlYWRkaXJfbG9uZ2VudHJ5LAorICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4pOworICAgICAgICAgIGlmKChzc2hjLT5yZWFkZGlyX2F0dHJzLmZsYWdzICYgTElCU1NIMl9TRlRQX0FUVFJfUEVSTUlTU0lPTlMpICYmCisgICAgICAgICAgICAgKChzc2hjLT5yZWFkZGlyX2F0dHJzLnBlcm1pc3Npb25zICYgTElCU1NIMl9TRlRQX1NfSUZNVCkgPT0KKyAgICAgICAgICAgICAgTElCU1NIMl9TRlRQX1NfSUZMTkspKSB7CisgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xpbmtQYXRoID0gbWFsbG9jKFBBVEhfTUFYICsgMSk7CisgICAgICAgICAgICBpZihzc2hjLT5yZWFkZGlyX2xpbmtQYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSk7CisgICAgICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtc25wcmludGYoc3NoYy0+cmVhZGRpcl9saW5rUGF0aCwgUEFUSF9NQVgsICIlcyVzIiwgc2Z0cF9zY3AtPnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7CisgICAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9SRUFERElSX0xJTkspOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQURESVJfQk9UVE9NKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZihyYyA9PSAwKSB7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9sb25nZW50cnkpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9SRUFERElSX0RPTkUpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYocmMgPCAwKSB7CisgICAgICAgIGVyciA9IHNmdHBfbGlic3NoMl9sYXN0X2Vycm9yKHNzaGMtPnNmdHBfc2Vzc2lvbik7CisgICAgICAgIHJlc3VsdCA9IHNmdHBfbGlic3NoMl9lcnJvcl90b19DVVJMRShlcnIpOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0P3Jlc3VsdDpDVVJMRV9TU0g7CisgICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZCBub3Qgb3BlbiByZW1vdGUgZmlsZSBmb3IgcmVhZGluZzogJXMgOjogJWQiLAorICAgICAgICAgICAgICBzZnRwX2xpYnNzaDJfc3RyZXJyb3IoZXJyKSwKKyAgICAgICAgICAgICAgbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJybm8oc3NoYy0+c3NoX3Nlc3Npb24pKTsKKyAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lKTsKKyAgICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2xvbmdlbnRyeSk7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfUkVBRERJUl9MSU5LOgorICAgICAgcmMgPQorICAgICAgICBsaWJzc2gyX3NmdHBfc3ltbGlua19leChzc2hjLT5zZnRwX3Nlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfbGlua1BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3NoYy0+cmVhZGRpcl9saW5rUGF0aCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVRIX01BWCwgTElCU1NIMl9TRlRQX1JFQURMSU5LKTsKKyAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3NoYy0+cmVhZGRpcl9sZW4gPSAoc2l6ZV90KSByYzsKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9saW5rUGF0aCk7CisKKyAgICAgIC8qIGdldCByb29tIGZvciB0aGUgZmlsZW5hbWUgYW5kIGV4dHJhIG91dHB1dCAqLworICAgICAgc3NoYy0+cmVhZGRpcl90b3RhbExlbiArPSA0ICsgc3NoYy0+cmVhZGRpcl9sZW47CisgICAgICBuZXdfcmVhZGRpcl9saW5lID0gQ3VybF9zYWZlcmVhbGxvYyhzc2hjLT5yZWFkZGlyX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX3RvdGFsTGVuKTsKKyAgICAgIGlmKCFuZXdfcmVhZGRpcl9saW5lKSB7CisgICAgICAgIHNzaGMtPnJlYWRkaXJfbGluZSA9IE5VTEw7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7CisgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9sb25nZW50cnkpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHNzaGMtPnJlYWRkaXJfbGluZSA9IG5ld19yZWFkZGlyX2xpbmU7CisKKyAgICAgIHNzaGMtPnJlYWRkaXJfY3VyckxlbiArPSBtc25wcmludGYoc3NoYy0+cmVhZGRpcl9saW5lICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX3RvdGFsTGVuIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0+ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1JFQURESVJfQk9UVE9NKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9SRUFERElSX0JPVFRPTToKKyAgICAgIHNzaGMtPnJlYWRkaXJfY3VyckxlbiArPSBtc25wcmludGYoc3NoYy0+cmVhZGRpcl9saW5lICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX3RvdGFsTGVuIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+cmVhZGRpcl9jdXJyTGVuLCAiXG4iKTsKKyAgICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5yZWFkZGlyX2N1cnJMZW4pOworCisgICAgICBpZighcmVzdWx0KSB7CisKKyAgICAgICAgLyogb3V0cHV0IGRlYnVnIG91dHB1dCBpZiB0aGF0IGlzIHJlcXVlc3RlZCAqLworICAgICAgICBpZihkYXRhLT5zZXQudmVyYm9zZSkgeworICAgICAgICAgIEN1cmxfZGVidWcoZGF0YSwgQ1VSTElORk9fREFUQV9PVVQsIHNzaGMtPnJlYWRkaXJfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgIHNzaGMtPnJlYWRkaXJfY3Vyckxlbik7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS0+cmVxLmJ5dGVjb3VudCArPSBzc2hjLT5yZWFkZGlyX2N1cnJMZW47CisgICAgICB9CisgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfbGluZSk7CisgICAgICBpZihyZXN1bHQpIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9SRUFERElSKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9SRUFERElSX0RPTkU6CisgICAgICBpZihsaWJzc2gyX3NmdHBfY2xvc2VkaXIoc3NoYy0+c2Z0cF9oYW5kbGUpID09CisgICAgICAgICBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICByYyA9IExJQlNTSDJfRVJST1JfRUFHQUlOOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHNzaGMtPnNmdHBfaGFuZGxlID0gTlVMTDsKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9maWxlbmFtZSk7CisgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnJlYWRkaXJfbG9uZ2VudHJ5KTsKKworICAgICAgLyogbm8gZGF0YSB0byB0cmFuc2ZlciAqLworICAgICAgQ3VybF9zZXR1cF90cmFuc2ZlcihkYXRhLCAtMSwgLTEsIEZBTFNFLCAtMSk7CisgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfRE9XTkxPQURfSU5JVDoKKyAgICAgIC8qCisgICAgICAgKiBXb3JrIG9uIGdldHRpbmcgdGhlIHNwZWNpZmllZCBmaWxlCisgICAgICAgKi8KKyAgICAgIHNzaGMtPnNmdHBfaGFuZGxlID0KKyAgICAgICAgbGlic3NoMl9zZnRwX29wZW5fZXgoc3NoYy0+c2Z0cF9zZXNzaW9uLCBzZnRwX3NjcC0+cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihzZnRwX3NjcC0+cGF0aCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX0ZYRl9SRUFELCBkYXRhLT5zZXQubmV3X2ZpbGVfcGVybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfU0ZUUF9PUEVORklMRSk7CisgICAgICBpZighc3NoYy0+c2Z0cF9oYW5kbGUpIHsKKyAgICAgICAgaWYobGlic3NoMl9zZXNzaW9uX2xhc3RfZXJybm8oc3NoYy0+c3NoX3Nlc3Npb24pID09CisgICAgICAgICAgIExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgICAgcmMgPSBMSUJTU0gyX0VSUk9SX0VBR0FJTjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOworICAgICAgICBmYWlsZihkYXRhLCAiQ291bGQgbm90IG9wZW4gcmVtb3RlIGZpbGUgZm9yIHJlYWRpbmc6ICVzIiwKKyAgICAgICAgICAgICAgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycikpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHJlc3VsdCA9IHNmdHBfbGlic3NoMl9lcnJvcl90b19DVVJMRShlcnIpOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0P3Jlc3VsdDpDVVJMRV9TU0g7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfRE9XTkxPQURfU1RBVCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfRE9XTkxPQURfU1RBVDoKKyAgICB7CisgICAgICBMSUJTU0gyX1NGVFBfQVRUUklCVVRFUyBhdHRyczsKKworICAgICAgcmMgPSBsaWJzc2gyX3NmdHBfc3RhdF9leChzc2hjLT5zZnRwX3Nlc3Npb24sIHNmdHBfc2NwLT5wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHNmdHBfc2NwLT5wYXRoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfU0ZUUF9TVEFULCAmYXR0cnMpOworICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZihyYyB8fAorICAgICAgICAgIShhdHRycy5mbGFncyAmIExJQlNTSDJfU0ZUUF9BVFRSX1NJWkUpIHx8CisgICAgICAgICAoYXR0cnMuZmlsZXNpemUgPT0gMCkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbGlic3NoMl9zZnRwX29wZW4oKSBkaWRuJ3QgcmV0dXJuIGFuIGVycm9yLCBzbyBtYXliZSB0aGUgc2VydmVyCisgICAgICAgICAqIGp1c3QgZG9lc24ndCBzdXBwb3J0IHN0YXQoKQorICAgICAgICAgKiBPUiB0aGUgc2VydmVyIGRvZXNuJ3QgcmV0dXJuIGEgZmlsZSBzaXplIHdpdGggYSBzdGF0KCkKKyAgICAgICAgICogT1IgZmlsZSBzaXplIGlzIDAKKyAgICAgICAgICovCisgICAgICAgIGRhdGEtPnJlcS5zaXplID0gLTE7CisgICAgICAgIGRhdGEtPnJlcS5tYXhkb3dubG9hZCA9IC0xOworICAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgLTEpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGN1cmxfb2ZmX3Qgc2l6ZSA9IGF0dHJzLmZpbGVzaXplOworCisgICAgICAgIGlmKHNpemUgPCAwKSB7CisgICAgICAgICAgZmFpbGYoZGF0YSwgIkJhZCBmaWxlIHNpemUgKCUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikiLCBzaXplKTsKKyAgICAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0RPV05MT0FEX1JFU1VNRTsKKyAgICAgICAgfQorICAgICAgICBpZihjb25uLT5kYXRhLT5zdGF0ZS51c2VfcmFuZ2UpIHsKKyAgICAgICAgICBjdXJsX29mZl90IGZyb20sIHRvOworICAgICAgICAgIGNoYXIgKnB0cjsKKyAgICAgICAgICBjaGFyICpwdHIyOworICAgICAgICAgIENVUkxvZmZ0IHRvX3Q7CisgICAgICAgICAgQ1VSTG9mZnQgZnJvbV90OworCisgICAgICAgICAgZnJvbV90ID0gY3VybHhfc3RydG9vZmZ0KGNvbm4tPmRhdGEtPnN0YXRlLnJhbmdlLCAmcHRyLCAwLCAmZnJvbSk7CisgICAgICAgICAgaWYoZnJvbV90ID09IENVUkxfT0ZGVF9GTE9XKQorICAgICAgICAgICAgcmV0dXJuIENVUkxFX1JBTkdFX0VSUk9SOworICAgICAgICAgIHdoaWxlKCpwdHIgJiYgKElTU1BBQ0UoKnB0cikgfHwgKCpwdHIgPT0gJy0nKSkpCisgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICB0b190ID0gY3VybHhfc3RydG9vZmZ0KHB0ciwgJnB0cjIsIDAsICZ0byk7CisgICAgICAgICAgaWYodG9fdCA9PSBDVVJMX09GRlRfRkxPVykKKyAgICAgICAgICAgIHJldHVybiBDVVJMRV9SQU5HRV9FUlJPUjsKKyAgICAgICAgICBpZigodG9fdCA9PSBDVVJMX09GRlRfSU5WQUwpIC8qIG5vICJ0byIgdmFsdWUgZ2l2ZW4gKi8KKyAgICAgICAgICAgICB8fCAodG8gPj0gc2l6ZSkpIHsKKyAgICAgICAgICAgIHRvID0gc2l6ZSAtIDE7CisgICAgICAgICAgfQorICAgICAgICAgIGlmKGZyb21fdCkgeworICAgICAgICAgICAgLyogZnJvbSBpcyByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSAqLworICAgICAgICAgICAgZnJvbSA9IHNpemUgLSB0bzsKKyAgICAgICAgICAgIHRvID0gc2l6ZSAtIDE7CisgICAgICAgICAgfQorICAgICAgICAgIGlmKGZyb20gPiBzaXplKSB7CisgICAgICAgICAgICBmYWlsZihkYXRhLCAiT2Zmc2V0ICglIgorICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiKSB3YXMgYmV5b25kIGZpbGUgc2l6ZSAoJSIKKyAgICAgICAgICAgICAgICAgIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikiLCBmcm9tLCBhdHRycy5maWxlc2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0RPV05MT0FEX1JFU1VNRTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYoZnJvbSA+IHRvKSB7CisgICAgICAgICAgICBmcm9tID0gdG87CisgICAgICAgICAgICBzaXplID0gMDsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzaXplID0gdG8gLSBmcm9tICsgMTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBTRlRQX1NFRUsoY29ubi0+cHJvdG8uc3NoYy5zZnRwX2hhbmRsZSwgZnJvbSk7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS0+cmVxLnNpemUgPSBzaXplOworICAgICAgICBkYXRhLT5yZXEubWF4ZG93bmxvYWQgPSBzaXplOworICAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgc2l6ZSk7CisgICAgICB9CisKKyAgICAgIC8qIFdlIGNhbiByZXN1bWUgaWYgd2UgY2FuIHNlZWsgdG8gdGhlIHJlc3VtZSBwb3NpdGlvbiAqLworICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pIHsKKyAgICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPCAwKSB7CisgICAgICAgICAgLyogV2UncmUgc3VwcG9zZWQgdG8gZG93bmxvYWQgdGhlIGxhc3QgYWJzKGZyb20pIGJ5dGVzICovCisgICAgICAgICAgaWYoKGN1cmxfb2ZmX3QpYXR0cnMuZmlsZXNpemUgPCAtZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pIHsKKyAgICAgICAgICAgIGZhaWxmKGRhdGEsICJPZmZzZXQgKCUiCisgICAgICAgICAgICAgICAgICBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIpIHdhcyBiZXlvbmQgZmlsZSBzaXplICglIgorICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiKSIsCisgICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSwgYXR0cnMuZmlsZXNpemUpOworICAgICAgICAgICAgcmV0dXJuIENVUkxFX0JBRF9ET1dOTE9BRF9SRVNVTUU7CisgICAgICAgICAgfQorICAgICAgICAgIC8qIGRvd25sb2FkIGZyb20gd2hlcmU/ICovCisgICAgICAgICAgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gKz0gYXR0cnMuZmlsZXNpemU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgaWYoKGN1cmxfb2ZmX3QpYXR0cnMuZmlsZXNpemUgPCBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSkgeworICAgICAgICAgICAgZmFpbGYoZGF0YSwgIk9mZnNldCAoJSIgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVAorICAgICAgICAgICAgICAgICAgIikgd2FzIGJleW9uZCBmaWxlIHNpemUgKCUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikiLAorICAgICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20sIGF0dHJzLmZpbGVzaXplKTsKKyAgICAgICAgICAgIHJldHVybiBDVVJMRV9CQURfRE9XTkxPQURfUkVTVU1FOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBOb3cgc3RvcmUgdGhlIG51bWJlciBvZiBieXRlcyB3ZSBhcmUgZXhwZWN0ZWQgdG8gZG93bmxvYWQgKi8KKyAgICAgICAgZGF0YS0+cmVxLnNpemUgPSBhdHRycy5maWxlc2l6ZSAtIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tOworICAgICAgICBkYXRhLT5yZXEubWF4ZG93bmxvYWQgPSBhdHRycy5maWxlc2l6ZSAtIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tOworICAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzLmZpbGVzaXplIC0gZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pOworICAgICAgICBTRlRQX1NFRUsoc3NoYy0+c2Z0cF9oYW5kbGUsIGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBTZXR1cCB0aGUgYWN0dWFsIGRvd25sb2FkICovCisgICAgaWYoZGF0YS0+cmVxLnNpemUgPT0gMCkgeworICAgICAgLyogbm8gZGF0YSB0byB0cmFuc2ZlciAqLworICAgICAgQ3VybF9zZXR1cF90cmFuc2ZlcihkYXRhLCAtMSwgLTEsIEZBTFNFLCAtMSk7CisgICAgICBpbmZvZihkYXRhLCAiRmlsZSBhbHJlYWR5IGNvbXBsZXRlbHkgZG93bmxvYWRlZFxuIik7CisgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgQ3VybF9zZXR1cF90cmFuc2ZlcihkYXRhLCBGSVJTVFNPQ0tFVCwgZGF0YS0+cmVxLnNpemUsIEZBTFNFLCAtMSk7CisKKyAgICAvKiBub3Qgc2V0IGJ5IEN1cmxfc2V0dXBfdHJhbnNmZXIgdG8gcHJlc2VydmUga2VlcG9uIGJpdHMgKi8KKyAgICBjb25uLT53cml0ZXNvY2tmZCA9IGNvbm4tPnNvY2tmZDsKKworICAgIC8qIHdlIHdhbnQgdG8gdXNlIHRoZSBfcmVjZWl2aW5nXyBmdW5jdGlvbiBldmVuIHdoZW4gdGhlIHNvY2tldCB0dXJucworICAgICAgIG91dCB3cml0YWJsZWFibGUgYXMgdGhlIHVuZGVybHlpbmcgbGlic3NoMiByZWN2IGZ1bmN0aW9uIHdpbGwgZGVhbAorICAgICAgIHdpdGggYm90aCBhY2NvcmRpbmdseSAqLworICAgIGNvbm4tPmNzZWxlY3RfYml0cyA9IENVUkxfQ1NFTEVDVF9JTjsKKworICAgIGlmKHJlc3VsdCkgeworICAgICAgLyogdGhpcyBzaG91bGQgbmV2ZXIgb2NjdXI7IHRoZSBjbG9zZSBzdGF0ZSBzaG91bGQgYmUgZW50ZXJlZAorICAgICAgICAgYXQgdGhlIHRpbWUgdGhlIGVycm9yIG9jY3VycyAqLworICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgfQorICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0ZUUF9DTE9TRToKKyAgICAgIGlmKHNzaGMtPnNmdHBfaGFuZGxlKSB7CisgICAgICAgIHJjID0gbGlic3NoMl9zZnRwX2Nsb3NlKHNzaGMtPnNmdHBfaGFuZGxlKTsKKyAgICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZihyYyA8IDApIHsKKyAgICAgICAgICBjaGFyICplcnJfbXNnID0gTlVMTDsKKyAgICAgICAgICAodm9pZClsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyX21zZywgTlVMTCwgMCk7CisgICAgICAgICAgaW5mb2YoZGF0YSwgIkZhaWxlZCB0byBjbG9zZSBsaWJzc2gyIGZpbGU6ICVkICVzXG4iLCByYywgZXJyX21zZyk7CisgICAgICAgIH0KKyAgICAgICAgc3NoYy0+c2Z0cF9oYW5kbGUgPSBOVUxMOworICAgICAgfQorCisgICAgICBDdXJsX3NhZmVmcmVlKHNmdHBfc2NwLT5wYXRoKTsKKworICAgICAgREVCVUdGKGluZm9mKGRhdGEsICJTRlRQIERPTkUgZG9uZVxuIikpOworCisgICAgICAvKiBDaGVjayBpZiBuZXh0c3RhdGUgaXMgc2V0IGFuZCBtb3ZlIC5uZXh0c3RhdGUgY291bGQgYmUgUE9TVFFVT1RFX0lOSVQKKyAgICAgICAgIEFmdGVyIG5leHRzdGF0ZSBpcyBleGVjdXRlZCwgdGhlIGNvbnRyb2wgc2hvdWxkIGNvbWUgYmFjayB0bworICAgICAgICAgU1NIX1NGVFBfQ0xPU0UgdG8gcGFzcyB0aGUgY29ycmVjdCByZXN1bHQgYmFjayAgKi8KKyAgICAgIGlmKHNzaGMtPm5leHRzdGF0ZSAhPSBTU0hfTk9fU1RBVEUgJiYKKyAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSAhPSBTU0hfU0ZUUF9DTE9TRSkgeworICAgICAgICBzdGF0ZShjb25uLCBzc2hjLT5uZXh0c3RhdGUpOworICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfU0ZUUF9DTE9TRTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICAgIHJlc3VsdCA9IHNzaGMtPmFjdHVhbGNvZGU7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfU0hVVERPV046CisgICAgICAvKiBkdXJpbmcgdGltZXMgd2UgZ2V0IGhlcmUgZHVlIHRvIGEgYnJva2VuIHRyYW5zZmVyIGFuZCB0aGVuIHRoZQorICAgICAgICAgc2Z0cF9oYW5kbGUgbWlnaHQgbm90IGhhdmUgYmVlbiB0YWtlbiBkb3duIHNvIG1ha2Ugc3VyZSB0aGF0IGlzIGRvbmUKKyAgICAgICAgIGJlZm9yZSB3ZSBwcm9jZWVkICovCisKKyAgICAgIGlmKHNzaGMtPnNmdHBfaGFuZGxlKSB7CisgICAgICAgIHJjID0gbGlic3NoMl9zZnRwX2Nsb3NlKHNzaGMtPnNmdHBfaGFuZGxlKTsKKyAgICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZihyYyA8IDApIHsKKyAgICAgICAgICBjaGFyICplcnJfbXNnID0gTlVMTDsKKyAgICAgICAgICAodm9pZClsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbiwgJmVycl9tc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgaW5mb2YoZGF0YSwgIkZhaWxlZCB0byBjbG9zZSBsaWJzc2gyIGZpbGU6ICVkICVzXG4iLCByYywgZXJyX21zZyk7CisgICAgICAgIH0KKyAgICAgICAgc3NoYy0+c2Z0cF9oYW5kbGUgPSBOVUxMOworICAgICAgfQorICAgICAgaWYoc3NoYy0+c2Z0cF9zZXNzaW9uKSB7CisgICAgICAgIHJjID0gbGlic3NoMl9zZnRwX3NodXRkb3duKHNzaGMtPnNmdHBfc2Vzc2lvbik7CisgICAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYocmMgPCAwKSB7CisgICAgICAgICAgaW5mb2YoZGF0YSwgIkZhaWxlZCB0byBzdG9wIGxpYnNzaDIgc2Z0cCBzdWJzeXN0ZW1cbiIpOworICAgICAgICB9CisgICAgICAgIHNzaGMtPnNmdHBfc2Vzc2lvbiA9IE5VTEw7CisgICAgICB9CisKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+aG9tZWRpcik7CisgICAgICBjb25uLT5kYXRhLT5zdGF0ZS5tb3N0X3JlY2VudF9mdHBfZW50cnlwYXRoID0gTlVMTDsKKworICAgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRElTQ09OTkVDVCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NDUF9UUkFOU19JTklUOgorICAgICAgcmVzdWx0ID0gQ3VybF9nZXR3b3JraW5ncGF0aChjb25uLCBzc2hjLT5ob21lZGlyLCAmc2Z0cF9zY3AtPnBhdGgpOworICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIGlmKGRhdGEtPnNldC51cGxvYWQpIHsKKyAgICAgICAgaWYoZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSA8IDApIHsKKyAgICAgICAgICBmYWlsZihkYXRhLCAiU0NQIHJlcXVpcmVzIGEga25vd24gZmlsZSBzaXplIGZvciB1cGxvYWQiKTsKKyAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gQ1VSTEVfVVBMT0FEX0ZBSUxFRDsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX0NIQU5ORUxfRlJFRSk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NDUF9VUExPQURfSU5JVCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NDUF9ET1dOTE9BRF9JTklUKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0NQX1VQTE9BRF9JTklUOgorICAgICAgLyoKKyAgICAgICAqIGxpYnNzaDIgcmVxdWlyZXMgdGhhdCB0aGUgZGVzdGluYXRpb24gcGF0aCBpcyBhIGZ1bGwgcGF0aCB0aGF0CisgICAgICAgKiBpbmNsdWRlcyB0aGUgZGVzdGluYXRpb24gZmlsZSBhbmQgbmFtZSBPUiBlbmRzIGluIGEgIi8iIC4gIElmIHRoaXMgaXMKKyAgICAgICAqIG5vdCBkb25lIHRoZSBkZXN0aW5hdGlvbiBmaWxlIHdpbGwgYmUgbmFtZWQgdGhlIHNhbWUgbmFtZSBhcyB0aGUgbGFzdAorICAgICAgICogZGlyZWN0b3J5IGluIHRoZSBwYXRoLgorICAgICAgICovCisgICAgICBzc2hjLT5zc2hfY2hhbm5lbCA9CisgICAgICAgIFNDUF9TRU5EKHNzaGMtPnNzaF9zZXNzaW9uLCBzZnRwX3NjcC0+cGF0aCwgZGF0YS0+c2V0Lm5ld19maWxlX3Blcm1zLAorICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplKTsKKyAgICAgIGlmKCFzc2hjLT5zc2hfY2hhbm5lbCkgeworICAgICAgICBpbnQgc3NoX2VycjsKKyAgICAgICAgY2hhciAqZXJyX21zZyA9IE5VTEw7CisKKyAgICAgICAgaWYobGlic3NoMl9zZXNzaW9uX2xhc3RfZXJybm8oc3NoYy0+c3NoX3Nlc3Npb24pID09CisgICAgICAgICAgIExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgICAgcmMgPSBMSUJTU0gyX0VSUk9SX0VBR0FJTjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHNzaF9lcnIgPSAoaW50KShsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJfbXNnLCBOVUxMLCAwKSk7CisgICAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICIlcyIsIGVycl9tc2cpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX0NIQU5ORUxfRlJFRSk7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBsaWJzc2gyX3Nlc3Npb25fZXJyb3JfdG9fQ1VSTEUoc3NoX2Vycik7CisgICAgICAgIC8qIE1hcCBnZW5lcmljIGVycm9ycyB0byB1cGxvYWQgZmFpbGVkICovCisgICAgICAgIGlmKHNzaGMtPmFjdHVhbGNvZGUgPT0gQ1VSTEVfU1NIIHx8CisgICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPT0gQ1VSTEVfUkVNT1RFX0ZJTEVfTk9UX0ZPVU5EKQorICAgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSBDVVJMRV9VUExPQURfRkFJTEVEOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgLyogdXBsb2FkIGRhdGEgKi8KKyAgICAgIEN1cmxfc2V0dXBfdHJhbnNmZXIoZGF0YSwgLTEsIGRhdGEtPnJlcS5zaXplLCBGQUxTRSwgRklSU1RTT0NLRVQpOworCisgICAgICAvKiBub3Qgc2V0IGJ5IEN1cmxfc2V0dXBfdHJhbnNmZXIgdG8gcHJlc2VydmUga2VlcG9uIGJpdHMgKi8KKyAgICAgIGNvbm4tPnNvY2tmZCA9IGNvbm4tPndyaXRlc29ja2ZkOworCisgICAgICBpZihyZXN1bHQpIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NDUF9DSEFOTkVMX0ZSRUUpOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIC8qIHN0b3JlIHRoaXMgb3JpZ2luYWwgYml0bWFzayBzZXR1cCB0byB1c2UgbGF0ZXIgb24gaWYgd2UgY2FuJ3QKKyAgICAgICAgICAgZmlndXJlIG91dCBhICJyZWFsIiBiaXRtYXNrICovCisgICAgICAgIHNzaGMtPm9yaWdfd2FpdGZvciA9IGRhdGEtPnJlcS5rZWVwb247CisKKyAgICAgICAgLyogd2Ugd2FudCB0byB1c2UgdGhlIF9zZW5kaW5nXyBmdW5jdGlvbiBldmVuIHdoZW4gdGhlIHNvY2tldCB0dXJucworICAgICAgICAgICBvdXQgcmVhZGFibGUgYXMgdGhlIHVuZGVybHlpbmcgbGlic3NoMiBzY3Agc2VuZCBmdW5jdGlvbiB3aWxsIGRlYWwKKyAgICAgICAgICAgd2l0aCBib3RoIGFjY29yZGluZ2x5ICovCisgICAgICAgIGNvbm4tPmNzZWxlY3RfYml0cyA9IENVUkxfQ1NFTEVDVF9PVVQ7CisKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TQ1BfRE9XTkxPQURfSU5JVDoKKyAgICB7CisgICAgICBjdXJsX29mZl90IGJ5dGVjb3VudDsKKworICAgICAgLyoKKyAgICAgICAqIFdlIG11c3QgY2hlY2sgdGhlIHJlbW90ZSBmaWxlOyBpZiBpdCBpcyBhIGRpcmVjdG9yeSBubyB2YWx1ZXMgd2lsbAorICAgICAgICogYmUgc2V0IGluIHNiCisgICAgICAgKi8KKworICAgICAgLyoKKyAgICAgICAqIElmIHN1cHBvcnQgZm9yID4yR0IgZmlsZXMgZXhpc3RzLCB1c2UgaXQuCisgICAgICAgKi8KKworICAgICAgLyogZ2V0IGEgZnJlc2ggbmV3IGNoYW5uZWwgZnJvbSB0aGUgc3NoIGxheWVyICovCisjaWYgTElCU1NIMl9WRVJTSU9OX05VTSA8IDB4MDEwNzAwCisgICAgICBzdHJ1Y3Qgc3RhdCBzYjsKKyAgICAgIG1lbXNldCgmc2IsIDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOworICAgICAgc3NoYy0+c3NoX2NoYW5uZWwgPSBsaWJzc2gyX3NjcF9yZWN2KHNzaGMtPnNzaF9zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNmdHBfc2NwLT5wYXRoLCAmc2IpOworI2Vsc2UKKyAgICAgIGxpYnNzaDJfc3RydWN0X3N0YXQgc2I7CisgICAgICBtZW1zZXQoJnNiLCAwLCBzaXplb2YobGlic3NoMl9zdHJ1Y3Rfc3RhdCkpOworICAgICAgc3NoYy0+c3NoX2NoYW5uZWwgPSBsaWJzc2gyX3NjcF9yZWN2Mihzc2hjLT5zc2hfc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Z0cF9zY3AtPnBhdGgsICZzYik7CisjZW5kaWYKKworICAgICAgaWYoIXNzaGMtPnNzaF9jaGFubmVsKSB7CisgICAgICAgIGludCBzc2hfZXJyOworICAgICAgICBjaGFyICplcnJfbXNnID0gTlVMTDsKKworICAgICAgICBpZihsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJubyhzc2hjLT5zc2hfc2Vzc2lvbikgPT0KKyAgICAgICAgICAgTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgICByYyA9IExJQlNTSDJfRVJST1JfRUFHQUlOOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKworICAgICAgICBzc2hfZXJyID0gKGludCkobGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyX21zZywgTlVMTCwgMCkpOworICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAiJXMiLCBlcnJfbXNnKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NDUF9DSEFOTkVMX0ZSRUUpOworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gbGlic3NoMl9zZXNzaW9uX2Vycm9yX3RvX0NVUkxFKHNzaF9lcnIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgLyogZG93bmxvYWQgZGF0YSAqLworICAgICAgYnl0ZWNvdW50ID0gKGN1cmxfb2ZmX3Qpc2Iuc3Rfc2l6ZTsKKyAgICAgIGRhdGEtPnJlcS5tYXhkb3dubG9hZCA9ICAoY3VybF9vZmZfdClzYi5zdF9zaXplOworICAgICAgQ3VybF9zZXR1cF90cmFuc2ZlcihkYXRhLCBGSVJTVFNPQ0tFVCwgYnl0ZWNvdW50LCBGQUxTRSwgLTEpOworCisgICAgICAvKiBub3Qgc2V0IGJ5IEN1cmxfc2V0dXBfdHJhbnNmZXIgdG8gcHJlc2VydmUga2VlcG9uIGJpdHMgKi8KKyAgICAgIGNvbm4tPndyaXRlc29ja2ZkID0gY29ubi0+c29ja2ZkOworCisgICAgICAvKiB3ZSB3YW50IHRvIHVzZSB0aGUgX3JlY2VpdmluZ18gZnVuY3Rpb24gZXZlbiB3aGVuIHRoZSBzb2NrZXQgdHVybnMKKyAgICAgICAgIG91dCB3cml0YWJsZWFibGUgYXMgdGhlIHVuZGVybHlpbmcgbGlic3NoMiByZWN2IGZ1bmN0aW9uIHdpbGwgZGVhbAorICAgICAgICAgd2l0aCBib3RoIGFjY29yZGluZ2x5ICovCisgICAgICBjb25uLT5jc2VsZWN0X2JpdHMgPSBDVVJMX0NTRUxFQ1RfSU47CisKKyAgICAgIGlmKHJlc3VsdCkgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX0NIQU5ORUxfRlJFRSk7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICB9CisgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TQ1BfRE9ORToKKyAgICAgIGlmKGRhdGEtPnNldC51cGxvYWQpCisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfU0VORF9FT0YpOworICAgICAgZWxzZQorICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX0NIQU5ORUxfRlJFRSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NDUF9TRU5EX0VPRjoKKyAgICAgIGlmKHNzaGMtPnNzaF9jaGFubmVsKSB7CisgICAgICAgIHJjID0gbGlic3NoMl9jaGFubmVsX3NlbmRfZW9mKHNzaGMtPnNzaF9jaGFubmVsKTsKKyAgICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZihyYykgeworICAgICAgICAgIGNoYXIgKmVycl9tc2cgPSBOVUxMOworICAgICAgICAgICh2b2lkKWxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJfbXNnLCBOVUxMLCAwKTsKKyAgICAgICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIHNlbmQgbGlic3NoMiBjaGFubmVsIEVPRjogJWQgJXNcbiIsCisgICAgICAgICAgICAgICAgcmMsIGVycl9tc2cpOworICAgICAgICB9CisgICAgICB9CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX1dBSVRfRU9GKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0NQX1dBSVRfRU9GOgorICAgICAgaWYoc3NoYy0+c3NoX2NoYW5uZWwpIHsKKyAgICAgICAgcmMgPSBsaWJzc2gyX2NoYW5uZWxfd2FpdF9lb2Yoc3NoYy0+c3NoX2NoYW5uZWwpOworICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmKHJjKSB7CisgICAgICAgICAgY2hhciAqZXJyX21zZyA9IE5VTEw7CisgICAgICAgICAgKHZvaWQpbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycl9tc2csIE5VTEwsIDApOworICAgICAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gZ2V0IGNoYW5uZWwgRU9GOiAlZCAlc1xuIiwgcmMsIGVycl9tc2cpOworICAgICAgICB9CisgICAgICB9CisgICAgICBzdGF0ZShjb25uLCBTU0hfU0NQX1dBSVRfQ0xPU0UpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNTSF9TQ1BfV0FJVF9DTE9TRToKKyAgICAgIGlmKHNzaGMtPnNzaF9jaGFubmVsKSB7CisgICAgICAgIHJjID0gbGlic3NoMl9jaGFubmVsX3dhaXRfY2xvc2VkKHNzaGMtPnNzaF9jaGFubmVsKTsKKyAgICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZihyYykgeworICAgICAgICAgIGNoYXIgKmVycl9tc2cgPSBOVUxMOworICAgICAgICAgICh2b2lkKWxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJfbXNnLCBOVUxMLCAwKTsKKyAgICAgICAgICBpbmZvZihkYXRhLCAiQ2hhbm5lbCBmYWlsZWQgdG8gY2xvc2U6ICVkICVzXG4iLCByYywgZXJyX21zZyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TQ1BfQ0hBTk5FTF9GUkVFKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0NQX0NIQU5ORUxfRlJFRToKKyAgICAgIGlmKHNzaGMtPnNzaF9jaGFubmVsKSB7CisgICAgICAgIHJjID0gbGlic3NoMl9jaGFubmVsX2ZyZWUoc3NoYy0+c3NoX2NoYW5uZWwpOworICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmKHJjIDwgMCkgeworICAgICAgICAgIGNoYXIgKmVycl9tc2cgPSBOVUxMOworICAgICAgICAgICh2b2lkKWxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJfbXNnLCBOVUxMLCAwKTsKKyAgICAgICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIGZyZWUgbGlic3NoMiBzY3Agc3Vic3lzdGVtOiAlZCAlc1xuIiwKKyAgICAgICAgICAgICAgICByYywgZXJyX21zZyk7CisgICAgICAgIH0KKyAgICAgICAgc3NoYy0+c3NoX2NoYW5uZWwgPSBOVUxMOworICAgICAgfQorICAgICAgREVCVUdGKGluZm9mKGRhdGEsICJTQ1AgRE9ORSBwaGFzZSBjb21wbGV0ZVxuIikpOworI2lmIDAgLyogUFJFViAqLworICAgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRElTQ09OTkVDVCk7CisjZW5kaWYKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgIHJlc3VsdCA9IHNzaGMtPmFjdHVhbGNvZGU7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NFU1NJT05fRElTQ09OTkVDVDoKKyAgICAgIC8qIGR1cmluZyB3ZWlyZCB0aW1lcyB3aGVuIHdlJ3ZlIGJlZW4gcHJlbWF0dXJlbHkgYWJvcnRlZCwgdGhlIGNoYW5uZWwKKyAgICAgICAgIGlzIHN0aWxsIGFsaXZlIHdoZW4gd2UgcmVhY2ggdGhpcyBzdGF0ZSBhbmQgd2UgTVVTVCBraWxsIHRoZSBjaGFubmVsCisgICAgICAgICBwcm9wZXJseSBmaXJzdCAqLworICAgICAgaWYoc3NoYy0+c3NoX2NoYW5uZWwpIHsKKyAgICAgICAgcmMgPSBsaWJzc2gyX2NoYW5uZWxfZnJlZShzc2hjLT5zc2hfY2hhbm5lbCk7CisgICAgICAgIGlmKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYocmMgPCAwKSB7CisgICAgICAgICAgY2hhciAqZXJyX21zZyA9IE5VTEw7CisgICAgICAgICAgKHZvaWQpbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycl9tc2csIE5VTEwsIDApOworICAgICAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gZnJlZSBsaWJzc2gyIHNjcCBzdWJzeXN0ZW06ICVkICVzXG4iLAorICAgICAgICAgICAgICAgIHJjLCBlcnJfbXNnKTsKKyAgICAgICAgfQorICAgICAgICBzc2hjLT5zc2hfY2hhbm5lbCA9IE5VTEw7CisgICAgICB9CisKKyAgICAgIGlmKHNzaGMtPnNzaF9zZXNzaW9uKSB7CisgICAgICAgIHJjID0gbGlic3NoMl9zZXNzaW9uX2Rpc2Nvbm5lY3Qoc3NoYy0+c3NoX3Nlc3Npb24sICJTaHV0ZG93biIpOworICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmKHJjIDwgMCkgeworICAgICAgICAgIGNoYXIgKmVycl9tc2cgPSBOVUxMOworICAgICAgICAgICh2b2lkKWxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJfbXNnLCBOVUxMLCAwKTsKKyAgICAgICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIGRpc2Nvbm5lY3QgbGlic3NoMiBzZXNzaW9uOiAlZCAlc1xuIiwKKyAgICAgICAgICAgICAgICByYywgZXJyX21zZyk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5ob21lZGlyKTsKKyAgICAgIGNvbm4tPmRhdGEtPnN0YXRlLm1vc3RfcmVjZW50X2Z0cF9lbnRyeXBhdGggPSBOVUxMOworCisgICAgICBzdGF0ZShjb25uLCBTU0hfU0VTU0lPTl9GUkVFKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfU0VTU0lPTl9GUkVFOgorI2lmZGVmIEhBVkVfTElCU1NIMl9LTk9XTkhPU1RfQVBJCisgICAgICBpZihzc2hjLT5raCkgeworICAgICAgICBsaWJzc2gyX2tub3duaG9zdF9mcmVlKHNzaGMtPmtoKTsKKyAgICAgICAgc3NoYy0+a2ggPSBOVUxMOworICAgICAgfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xJQlNTSDJfQUdFTlRfQVBJCisgICAgICBpZihzc2hjLT5zc2hfYWdlbnQpIHsKKyAgICAgICAgcmMgPSBsaWJzc2gyX2FnZW50X2Rpc2Nvbm5lY3Qoc3NoYy0+c3NoX2FnZW50KTsKKyAgICAgICAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZihyYyA8IDApIHsKKyAgICAgICAgICBjaGFyICplcnJfbXNnID0gTlVMTDsKKyAgICAgICAgICAodm9pZClsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyX21zZywgTlVMTCwgMCk7CisgICAgICAgICAgaW5mb2YoZGF0YSwgIkZhaWxlZCB0byBkaXNjb25uZWN0IGZyb20gbGlic3NoMiBhZ2VudDogJWQgJXNcbiIsCisgICAgICAgICAgICAgICAgcmMsIGVycl9tc2cpOworICAgICAgICB9CisgICAgICAgIGxpYnNzaDJfYWdlbnRfZnJlZShzc2hjLT5zc2hfYWdlbnQpOworICAgICAgICBzc2hjLT5zc2hfYWdlbnQgPSBOVUxMOworCisgICAgICAgIC8qIE5COiB0aGVyZSBpcyBubyBuZWVkIHRvIGZyZWUgaWRlbnRpdGllcywgdGhleSBhcmUgcGFydCBvZiBpbnRlcm5hbAorICAgICAgICAgICBhZ2VudCBzdHVmZiAqLworICAgICAgICBzc2hjLT5zc2hhZ2VudF9pZGVudGl0eSA9IE5VTEw7CisgICAgICAgIHNzaGMtPnNzaGFnZW50X3ByZXZfaWRlbnRpdHkgPSBOVUxMOworICAgICAgfQorI2VuZGlmCisKKyAgICAgIGlmKHNzaGMtPnNzaF9zZXNzaW9uKSB7CisgICAgICAgIHJjID0gbGlic3NoMl9zZXNzaW9uX2ZyZWUoc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmKHJjIDwgMCkgeworICAgICAgICAgIGNoYXIgKmVycl9tc2cgPSBOVUxMOworICAgICAgICAgICh2b2lkKWxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJfbXNnLCBOVUxMLCAwKTsKKyAgICAgICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIGZyZWUgbGlic3NoMiBzZXNzaW9uOiAlZCAlc1xuIiwgcmMsIGVycl9tc2cpOworICAgICAgICB9CisgICAgICAgIHNzaGMtPnNzaF9zZXNzaW9uID0gTlVMTDsKKyAgICAgIH0KKworICAgICAgLyogd29yc3QtY2FzZSBzY2VuYXJpbyBjbGVhbnVwICovCisKKyAgICAgIERFQlVHQVNTRVJUKHNzaGMtPnNzaF9zZXNzaW9uID09IE5VTEwpOworICAgICAgREVCVUdBU1NFUlQoc3NoYy0+c3NoX2NoYW5uZWwgPT0gTlVMTCk7CisgICAgICBERUJVR0FTU0VSVChzc2hjLT5zZnRwX3Nlc3Npb24gPT0gTlVMTCk7CisgICAgICBERUJVR0FTU0VSVChzc2hjLT5zZnRwX2hhbmRsZSA9PSBOVUxMKTsKKyNpZmRlZiBIQVZFX0xJQlNTSDJfS05PV05IT1NUX0FQSQorICAgICAgREVCVUdBU1NFUlQoc3NoYy0+a2ggPT0gTlVMTCk7CisjZW5kaWYKKyNpZmRlZiBIQVZFX0xJQlNTSDJfQUdFTlRfQVBJCisgICAgICBERUJVR0FTU0VSVChzc2hjLT5zc2hfYWdlbnQgPT0gTlVMTCk7CisjZW5kaWYKKworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yc2FfcHViKTsKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cnNhKTsKKworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5xdW90ZV9wYXRoMSk7CisgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgyKTsKKworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5ob21lZGlyKTsKKworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2ZpbGVuYW1lKTsKKyAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cmVhZGRpcl9sb25nZW50cnkpOworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2xpbmUpOworICAgICAgQ3VybF9zYWZlZnJlZShzc2hjLT5yZWFkZGlyX2xpbmtQYXRoKTsKKworICAgICAgLyogdGhlIGNvZGUgd2UgYXJlIGFib3V0IHRvIHJldHVybiAqLworICAgICAgcmVzdWx0ID0gc3NoYy0+YWN0dWFsY29kZTsKKworICAgICAgbWVtc2V0KHNzaGMsIDAsIHNpemVvZihzdHJ1Y3Qgc3NoX2Nvbm4pKTsKKworICAgICAgY29ubmNsb3NlKGNvbm4sICJTU0ggc2Vzc2lvbiBmcmVlIik7CisgICAgICBzc2hjLT5zdGF0ZSA9IFNTSF9TRVNTSU9OX0ZSRUU7IC8qIGN1cnJlbnQgKi8KKyAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTU0hfUVVJVDoKKyAgICAgIC8qIGZhbGx0aHJvdWdoLCBqdXN0IHN0b3AhICovCisgICAgZGVmYXVsdDoKKyAgICAgIC8qIGludGVybmFsIGVycm9yICovCisgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgfSB3aGlsZSghcmMgJiYgKHNzaGMtPnN0YXRlICE9IFNTSF9TVE9QKSk7CisKKyAgaWYocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAvKiB3ZSB3b3VsZCBibG9jaywgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgc29ja2V0IHRvIGJlIHJlYWR5IChpbiB0aGUKKyAgICAgICByaWdodCBkaXJlY3Rpb24gdG9vKSEgKi8KKyAgICAqYmxvY2sgPSBUUlVFOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogY2FsbGVkIGJ5IHRoZSBtdWx0aSBpbnRlcmZhY2UgdG8gZmlndXJlIG91dCB3aGF0IHNvY2tldChzKSB0byB3YWl0IGZvciBhbmQKKyAgIGZvciB3aGF0IGFjdGlvbnMgaW4gdGhlIERPX0RPTkUsIFBFUkZPUk0gYW5kIFdBSVRQRVJGT1JNIHN0YXRlcyAqLworc3RhdGljIGludCBzc2hfcGVyZm9ybV9nZXRzb2NrKGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrKQoreworI2lmZGVmIEhBVkVfTElCU1NIMl9TRVNTSU9OX0JMT0NLX0RJUkVDVElPTgorICBpbnQgYml0bWFwID0gR0VUU09DS19CTEFOSzsKKworICBzb2NrWzBdID0gY29ubi0+c29ja1tGSVJTVFNPQ0tFVF07CisKKyAgaWYoY29ubi0+d2FpdGZvciAmIEtFRVBfUkVDVikKKyAgICBiaXRtYXAgfD0gR0VUU09DS19SRUFEU09DSyhGSVJTVFNPQ0tFVCk7CisKKyAgaWYoY29ubi0+d2FpdGZvciAmIEtFRVBfU0VORCkKKyAgICBiaXRtYXAgfD0gR0VUU09DS19XUklURVNPQ0soRklSU1RTT0NLRVQpOworCisgIHJldHVybiBiaXRtYXA7CisjZWxzZQorICAvKiBpZiB3ZSBkb24ndCBrbm93IHRoZSBkaXJlY3Rpb24gd2UgY2FuIHVzZSB0aGUgZ2VuZXJpYyAqX2dldHNvY2soKQorICAgICBmdW5jdGlvbiBldmVuIGZvciB0aGUgcHJvdG9jb2xfY29ubmVjdCBhbmQgZG9pbmcgc3RhdGVzICovCisgIHJldHVybiBDdXJsX3NpbmdsZV9nZXRzb2NrKGNvbm4sIHNvY2spOworI2VuZGlmCit9CisKKy8qIEdlbmVyaWMgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSBtdWx0aSBpbnRlcmZhY2UgdG8gZmlndXJlIG91dCB3aGF0IHNvY2tldChzKQorICAgdG8gd2FpdCBmb3IgYW5kIGZvciB3aGF0IGFjdGlvbnMgZHVyaW5nIHRoZSBET0lORyBhbmQgUFJPVE9DT05ORUNUIHN0YXRlcyovCitzdGF0aWMgaW50IHNzaF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29jaykKK3sKKyNpZm5kZWYgSEFWRV9MSUJTU0gyX1NFU1NJT05fQkxPQ0tfRElSRUNUSU9OCisgICh2b2lkKWNvbm47CisgICh2b2lkKXNvY2s7CisgIC8qIGlmIHdlIGRvbid0IGtub3cgYW55IGRpcmVjdGlvbiB3ZSBjYW4ganVzdCBwbGF5IGFsb25nIGFzIHdlIHVzZWQgdG8gYW5kCisgICAgIG5vdCBwcm92aWRlIGFueSBzZW5zaWJsZSBpbmZvICovCisgIHJldHVybiBHRVRTT0NLX0JMQU5LOworI2Vsc2UKKyAgLyogaWYgd2Uga25vdyB0aGUgZGlyZWN0aW9uIHdlIGNhbiB1c2UgdGhlIGdlbmVyaWMgKl9nZXRzb2NrKCkgZnVuY3Rpb24gZXZlbgorICAgICBmb3IgdGhlIHByb3RvY29sX2Nvbm5lY3QgYW5kIGRvaW5nIHN0YXRlcyAqLworICByZXR1cm4gc3NoX3BlcmZvcm1fZ2V0c29jayhjb25uLCBzb2NrKTsKKyNlbmRpZgorfQorCisjaWZkZWYgSEFWRV9MSUJTU0gyX1NFU1NJT05fQkxPQ0tfRElSRUNUSU9OCisvKgorICogV2hlbiBvbmUgb2YgdGhlIGxpYnNzaDIgZnVuY3Rpb25zIGhhcyByZXR1cm5lZCBMSUJTU0gyX0VSUk9SX0VBR0FJTiB0aGlzCisgKiBmdW5jdGlvbiBpcyB1c2VkIHRvIGZpZ3VyZSBvdXQgaW4gd2hhdCBkaXJlY3Rpb24gYW5kIHN0b3JlcyB0aGlzIGluZm8gc28KKyAqIHRoYXQgdGhlIG11bHRpIGludGVyZmFjZSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgaXQuIE1ha2Ugc3VyZSB0byBjYWxsIHRoaXMKKyAqIGZ1bmN0aW9uIGluIGFsbCBjYXNlcyBzbyB0aGF0IHdoZW4gaXQgX2RvZXNuJ3RfIHJldHVybiBFQUdBSU4gd2UgY2FuCisgKiByZXN0b3JlIHRoZSBkZWZhdWx0IHdhaXQgYml0cy4KKyAqLworc3RhdGljIHZvaWQgc3NoX2Jsb2NrMndhaXRmb3Ioc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sIGJsb2NrKQoreworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKyAgaW50IGRpciA9IDA7CisgIGlmKGJsb2NrKSB7CisgICAgZGlyID0gbGlic3NoMl9zZXNzaW9uX2Jsb2NrX2RpcmVjdGlvbnMoc3NoYy0+c3NoX3Nlc3Npb24pOworICAgIGlmKGRpcikgeworICAgICAgLyogdHJhbnNsYXRlIHRoZSBsaWJzc2gyIGRlZmluZSBiaXRzIGludG8gb3VyIG93biBiaXQgZGVmaW5lcyAqLworICAgICAgY29ubi0+d2FpdGZvciA9ICgoZGlyJkxJQlNTSDJfU0VTU0lPTl9CTE9DS19JTkJPVU5EKT9LRUVQX1JFQ1Y6MCkgfAorICAgICAgICAoKGRpciZMSUJTU0gyX1NFU1NJT05fQkxPQ0tfT1VUQk9VTkQpP0tFRVBfU0VORDowKTsKKyAgICB9CisgIH0KKyAgaWYoIWRpcikKKyAgICAvKiBJdCBkaWRuJ3QgYmxvY2sgb3IgbGlic3NoMiBkaWRuJ3QgcmV2ZWFsIGluIHdoaWNoIGRpcmVjdGlvbiwgcHV0IGJhY2sKKyAgICAgICB0aGUgb3JpZ2luYWwgc2V0ICovCisgICAgY29ubi0+d2FpdGZvciA9IHNzaGMtPm9yaWdfd2FpdGZvcjsKK30KKyNlbHNlCisgIC8qIG5vIGxpYnNzaDIgZGlyZWN0aW9uYWwgc3VwcG9ydCBzbyB3ZSBzaW1wbHkgZG9uJ3Qga25vdyAqLworI2RlZmluZSBzc2hfYmxvY2syd2FpdGZvcih4LHkpIEN1cmxfbm9wX3N0bXQKKyNlbmRpZgorCisvKiBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBkb25lIGZyb20gbXVsdGkuYyAqLworc3RhdGljIENVUkxjb2RlIHNzaF9tdWx0aV9zdGF0ZW1hY2goc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKQoreworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIGJvb2wgYmxvY2s7IC8qIHdlIHN0b3JlIHRoZSBzdGF0dXMgYW5kIHVzZSB0aGF0IHRvIHByb3ZpZGUgYSBzc2hfZ2V0c29jaygpCisgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uICovCisgIGRvIHsKKyAgICByZXN1bHQgPSBzc2hfc3RhdGVtYWNoX2FjdChjb25uLCAmYmxvY2spOworICAgICpkb25lID0gKHNzaGMtPnN0YXRlID09IFNTSF9TVE9QKSA/IFRSVUUgOiBGQUxTRTsKKyAgICAvKiBpZiB0aGVyZSdzIG5vIGVycm9yLCBpdCBpc24ndCBkb25lIGFuZCBpdCBkaWRuJ3QgRVdPVUxEQkxPQ0ssIHRoZW4KKyAgICAgICB0cnkgYWdhaW4gKi8KKyAgfSB3aGlsZSghcmVzdWx0ICYmICEqZG9uZSAmJiAhYmxvY2spOworICBzc2hfYmxvY2syd2FpdGZvcihjb25uLCBibG9jayk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENVUkxjb2RlIHNzaF9ibG9ja19zdGF0ZW1hY2goc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkaXNjb25uZWN0KQoreworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworCisgIHdoaWxlKChzc2hjLT5zdGF0ZSAhPSBTU0hfU1RPUCkgJiYgIXJlc3VsdCkgeworICAgIGJvb2wgYmxvY2s7CisgICAgdGltZWRpZmZfdCBsZWZ0ID0gMTAwMDsKKyAgICBzdHJ1Y3QgY3VybHRpbWUgbm93ID0gQ3VybF9ub3coKTsKKworICAgIHJlc3VsdCA9IHNzaF9zdGF0ZW1hY2hfYWN0KGNvbm4sICZibG9jayk7CisgICAgaWYocmVzdWx0KQorICAgICAgYnJlYWs7CisKKyAgICBpZighZGlzY29ubmVjdCkgeworICAgICAgaWYoQ3VybF9wZ3JzVXBkYXRlKGNvbm4pKQorICAgICAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKKworICAgICAgcmVzdWx0ID0gQ3VybF9zcGVlZGNoZWNrKGRhdGEsIG5vdyk7CisgICAgICBpZihyZXN1bHQpCisgICAgICAgIGJyZWFrOworCisgICAgICBsZWZ0ID0gQ3VybF90aW1lbGVmdChkYXRhLCBOVUxMLCBGQUxTRSk7CisgICAgICBpZihsZWZ0IDwgMCkgeworICAgICAgICBmYWlsZihkYXRhLCAiT3BlcmF0aW9uIHRpbWVkIG91dCIpOworICAgICAgICByZXR1cm4gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOworICAgICAgfQorICAgIH0KKworI2lmZGVmIEhBVkVfTElCU1NIMl9TRVNTSU9OX0JMT0NLX0RJUkVDVElPTgorICAgIGlmKGJsb2NrKSB7CisgICAgICBpbnQgZGlyID0gbGlic3NoMl9zZXNzaW9uX2Jsb2NrX2RpcmVjdGlvbnMoc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgY3VybF9zb2NrZXRfdCBzb2NrID0gY29ubi0+c29ja1tGSVJTVFNPQ0tFVF07CisgICAgICBjdXJsX3NvY2tldF90IGZkX3JlYWQgPSBDVVJMX1NPQ0tFVF9CQUQ7CisgICAgICBjdXJsX3NvY2tldF90IGZkX3dyaXRlID0gQ1VSTF9TT0NLRVRfQkFEOworICAgICAgaWYoTElCU1NIMl9TRVNTSU9OX0JMT0NLX0lOQk9VTkQgJiBkaXIpCisgICAgICAgIGZkX3JlYWQgPSBzb2NrOworICAgICAgaWYoTElCU1NIMl9TRVNTSU9OX0JMT0NLX09VVEJPVU5EICYgZGlyKQorICAgICAgICBmZF93cml0ZSA9IHNvY2s7CisgICAgICAvKiB3YWl0IGZvciB0aGUgc29ja2V0IHRvIGJlY29tZSByZWFkeSAqLworICAgICAgKHZvaWQpQ3VybF9zb2NrZXRfY2hlY2soZmRfcmVhZCwgQ1VSTF9TT0NLRVRfQkFELCBmZF93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ+MTAwMD8xMDAwOih0aW1lX3QpbGVmdCk7CisgICAgfQorI2VuZGlmCisKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBTU0ggc2V0dXAgYW5kIGNvbm5lY3Rpb24KKyAqLworc3RhdGljIENVUkxjb2RlIHNzaF9zZXR1cF9jb25uZWN0aW9uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK3sKKyAgc3RydWN0IFNTSFBST1RPICpzc2g7CisKKyAgY29ubi0+ZGF0YS0+cmVxLnByb3RvcCA9IHNzaCA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IFNTSFBST1RPKSk7CisgIGlmKCFzc2gpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCitzdGF0aWMgQ3VybF9yZWN2IHNjcF9yZWN2LCBzZnRwX3JlY3Y7CitzdGF0aWMgQ3VybF9zZW5kIHNjcF9zZW5kLCBzZnRwX3NlbmQ7CisKKy8qCisgKiBDdXJsX3NzaF9jb25uZWN0KCkgZ2V0cyBjYWxsZWQgZnJvbSBDdXJsX3Byb3RvY29sX2Nvbm5lY3QoKSB0byBhbGxvdyB1cyB0bworICogZG8gcHJvdG9jb2wtc3BlY2lmaWMgYWN0aW9ucyBhdCBjb25uZWN0LXRpbWUuCisgKi8KK3N0YXRpYyBDVVJMY29kZSBzc2hfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCit7CisjaWZkZWYgQ1VSTF9MSUJTU0gyX0RFQlVHCisgIGN1cmxfc29ja2V0X3Qgc29jazsKKyNlbmRpZgorICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaDsKKyAgQ1VSTGNvZGUgcmVzdWx0OworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKKworICAvKiBpbml0aWFsaXplIHBlci1oYW5kbGUgZGF0YSBpZiBub3QgYWxyZWFkeSAqLworICBpZighZGF0YS0+cmVxLnByb3RvcCkKKyAgICBzc2hfc2V0dXBfY29ubmVjdGlvbihjb25uKTsKKworICAvKiBXZSBkZWZhdWx0IHRvIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMuIFdlIHNldCB0aGlzIGFscmVhZHkgaW4gdGhpcyBjb25uZWN0CisgICAgIGZ1bmN0aW9uIHRvIG1ha2UgdGhlIHJlLXVzZSBjaGVja3MgcHJvcGVybHkgYmUgYWJsZSB0byBjaGVjayB0aGlzIGJpdC4gKi8KKyAgY29ubmtlZXAoY29ubiwgIlNTSCBkZWZhdWx0Iik7CisKKyAgaWYoY29ubi0+aGFuZGxlci0+cHJvdG9jb2wgJiBDVVJMUFJPVE9fU0NQKSB7CisgICAgY29ubi0+cmVjdltGSVJTVFNPQ0tFVF0gPSBzY3BfcmVjdjsKKyAgICBjb25uLT5zZW5kW0ZJUlNUU09DS0VUXSA9IHNjcF9zZW5kOworICB9CisgIGVsc2UgeworICAgIGNvbm4tPnJlY3ZbRklSU1RTT0NLRVRdID0gc2Z0cF9yZWN2OworICAgIGNvbm4tPnNlbmRbRklSU1RTT0NLRVRdID0gc2Z0cF9zZW5kOworICB9CisgIHNzaCA9ICZjb25uLT5wcm90by5zc2hjOworCisjaWZkZWYgQ1VSTF9MSUJTU0gyX0RFQlVHCisgIGlmKGNvbm4tPnVzZXIpIHsKKyAgICBpbmZvZihkYXRhLCAiVXNlcjogJXNcbiIsIGNvbm4tPnVzZXIpOworICB9CisgIGlmKGNvbm4tPnBhc3N3ZCkgeworICAgIGluZm9mKGRhdGEsICJQYXNzd29yZDogJXNcbiIsIGNvbm4tPnBhc3N3ZCk7CisgIH0KKyAgc29jayA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOworI2VuZGlmIC8qIENVUkxfTElCU1NIMl9ERUJVRyAqLworCisgIHNzaC0+c3NoX3Nlc3Npb24gPSBsaWJzc2gyX3Nlc3Npb25faW5pdF9leChteV9saWJzc2gyX21hbGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15X2xpYnNzaDJfZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15X2xpYnNzaDJfcmVhbGxvYywgY29ubik7CisgIGlmKHNzaC0+c3NoX3Nlc3Npb24gPT0gTlVMTCkgeworICAgIGZhaWxmKGRhdGEsICJGYWlsdXJlIGluaXRpYWxpc2luZyBzc2ggc2Vzc2lvbiIpOworICAgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKKyAgfQorCisgIGlmKGRhdGEtPnNldC5zc2hfY29tcHJlc3Npb24pIHsKKyNpZiBMSUJTU0gyX1ZFUlNJT05fTlVNID49IDB4MDEwMjA4CisgICAgaWYobGlic3NoMl9zZXNzaW9uX2ZsYWcoc3NoLT5zc2hfc2Vzc2lvbiwgTElCU1NIMl9GTEFHX0NPTVBSRVNTLCAxKSA8IDApCisjZW5kaWYKKyAgICAgIGluZm9mKGRhdGEsICJGYWlsZWQgdG8gZW5hYmxlIGNvbXByZXNzaW9uIGZvciBzc2ggc2Vzc2lvblxuIik7CisgIH0KKworI2lmZGVmIEhBVkVfTElCU1NIMl9LTk9XTkhPU1RfQVBJCisgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9LTk9XTkhPU1RTXSkgeworICAgIGludCByYzsKKyAgICBzc2gtPmtoID0gbGlic3NoMl9rbm93bmhvc3RfaW5pdChzc2gtPnNzaF9zZXNzaW9uKTsKKyAgICBpZighc3NoLT5raCkgeworICAgICAgbGlic3NoMl9zZXNzaW9uX2ZyZWUoc3NoLT5zc2hfc2Vzc2lvbik7CisgICAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgICAgfQorCisgICAgLyogcmVhZCBhbGwga25vd24gaG9zdHMgZnJvbSB0aGVyZSAqLworICAgIHJjID0gbGlic3NoMl9rbm93bmhvc3RfcmVhZGZpbGUoc3NoLT5raCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9LTk9XTkhPU1RTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfS05PV05IT1NUX0ZJTEVfT1BFTlNTSCk7CisgICAgaWYocmMgPCAwKQorICAgICAgaW5mb2YoZGF0YSwgIkZhaWxlZCB0byByZWFkIGtub3duIGhvc3RzIGZyb20gJXNcbiIsCisgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfS05PV05IT1NUU10pOworICB9CisjZW5kaWYgLyogSEFWRV9MSUJTU0gyX0tOT1dOSE9TVF9BUEkgKi8KKworI2lmZGVmIENVUkxfTElCU1NIMl9ERUJVRworICBsaWJzc2gyX3RyYWNlKHNzaC0+c3NoX3Nlc3Npb24sIH4wKTsKKyAgaW5mb2YoZGF0YSwgIlNTSCBzb2NrZXQ6ICVkXG4iLCAoaW50KXNvY2spOworI2VuZGlmIC8qIENVUkxfTElCU1NIMl9ERUJVRyAqLworCisgIHN0YXRlKGNvbm4sIFNTSF9JTklUKTsKKworICByZXN1bHQgPSBzc2hfbXVsdGlfc3RhdGVtYWNoKGNvbm4sIGRvbmUpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBzY3BfcGVyZm9ybSgpCisgKgorICogVGhpcyBpcyB0aGUgYWN0dWFsIERPIGZ1bmN0aW9uIGZvciBTQ1AuIEdldCBhIGZpbGUgYWNjb3JkaW5nIHRvCisgKiB0aGUgb3B0aW9ucyBwcmV2aW91c2x5IHNldHVwLgorICovCisKK3N0YXRpYworQ1VSTGNvZGUgc2NwX3BlcmZvcm0oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNvbm5lY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworCisgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiRE8gcGhhc2Ugc3RhcnRzXG4iKSk7CisKKyAgKmRvcGhhc2VfZG9uZSA9IEZBTFNFOyAvKiBub3QgZG9uZSB5ZXQgKi8KKworICAvKiBzdGFydCB0aGUgZmlyc3QgY29tbWFuZCBpbiB0aGUgRE8gcGhhc2UgKi8KKyAgc3RhdGUoY29ubiwgU1NIX1NDUF9UUkFOU19JTklUKTsKKworICAvKiBydW4gdGhlIHN0YXRlLW1hY2hpbmUgKi8KKyAgcmVzdWx0ID0gc3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOworCisgICpjb25uZWN0ZWQgPSBjb25uLT5iaXRzLnRjcGNvbm5lY3RbRklSU1RTT0NLRVRdOworCisgIGlmKCpkb3BoYXNlX2RvbmUpIHsKKyAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7CisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCisvKiBjYWxsZWQgZnJvbSBtdWx0aS5jIHdoaWxlIERPaW5nICovCitzdGF0aWMgQ1VSTGNvZGUgc2NwX2RvaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpCit7CisgIENVUkxjb2RlIHJlc3VsdDsKKyAgcmVzdWx0ID0gc3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOworCisgIGlmKCpkb3BoYXNlX2RvbmUpIHsKKyAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFRoZSBETyBmdW5jdGlvbiBpcyBnZW5lcmljIGZvciBib3RoIHByb3RvY29scy4gVGhlcmUgd2FzIHByZXZpb3VzbHkgdHdvCisgKiBzZXBhcmF0ZSBvbmVzIGJ1dCB0aGlzIHdheSBtZWFucyBsZXNzIGR1cGxpY2F0ZWQgY29kZS4KKyAqLworCitzdGF0aWMgQ1VSTGNvZGUgc3NoX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0OworICBib29sIGNvbm5lY3RlZCA9IDA7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKworICAqZG9uZSA9IEZBTFNFOyAvKiBkZWZhdWx0IHRvIGZhbHNlICovCisKKyAgZGF0YS0+cmVxLnNpemUgPSAtMTsgLyogbWFrZSBzdXJlIHRoaXMgaXMgdW5rbm93biBhdCB0aGlzIHBvaW50ICovCisKKyAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09LOyAvKiByZXNldCBlcnJvciBjb2RlICovCisgIHNzaGMtPnNlY29uZENyZWF0ZURpcnMgPSAwOyAgIC8qIHJlc2V0IHRoZSBjcmVhdGUgZGlyIGF0dGVtcHQgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgKi8KKworICBDdXJsX3BncnNTZXRVcGxvYWRDb3VudGVyKGRhdGEsIDApOworICBDdXJsX3BncnNTZXREb3dubG9hZENvdW50ZXIoZGF0YSwgMCk7CisgIEN1cmxfcGdyc1NldFVwbG9hZFNpemUoZGF0YSwgLTEpOworICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgLTEpOworCisgIGlmKGNvbm4tPmhhbmRsZXItPnByb3RvY29sICYgQ1VSTFBST1RPX1NDUCkKKyAgICByZXN1bHQgPSBzY3BfcGVyZm9ybShjb25uLCAmY29ubmVjdGVkLCAgZG9uZSk7CisgIGVsc2UKKyAgICByZXN1bHQgPSBzZnRwX3BlcmZvcm0oY29ubiwgJmNvbm5lY3RlZCwgIGRvbmUpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIEJMT0NLSU5HLCBidXQgdGhlIGZ1bmN0aW9uIGlzIHVzaW5nIHRoZSBzdGF0ZSBtYWNoaW5lIHNvIHRoZSBvbmx5IHJlYXNvbgorICAgdGhpcyBpcyBzdGlsbCBibG9ja2luZyBpcyB0aGF0IHRoZSBtdWx0aSBpbnRlcmZhY2UgY29kZSBoYXMgbm8gc3VwcG9ydCBmb3IKKyAgIGRpc2Nvbm5lY3Rpbmcgb3BlcmF0aW9ucyB0aGF0IHRha2VzIGEgd2hpbGUgKi8KK3N0YXRpYyBDVVJMY29kZSBzY3BfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZF9jb25uZWN0aW9uKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc3RydWN0IHNzaF9jb25uICpzc2ggPSAmY29ubi0+cHJvdG8uc3NoYzsKKyAgKHZvaWQpIGRlYWRfY29ubmVjdGlvbjsKKworICBpZihzc2gtPnNzaF9zZXNzaW9uKSB7CisgICAgLyogb25seSBpZiB0aGVyZSdzIGEgc2Vzc2lvbiBzdGlsbCBhcm91bmQgdG8gdXNlISAqLworCisgICAgc3RhdGUoY29ubiwgU1NIX1NFU1NJT05fRElTQ09OTkVDVCk7CisKKyAgICByZXN1bHQgPSBzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIFRSVUUpOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogZ2VuZXJpYyBkb25lIGZ1bmN0aW9uIGZvciBib3RoIFNDUCBhbmQgU0ZUUCBjYWxsZWQgZnJvbSB0aGVpciBzcGVjaWZpYworICAgZG9uZSBmdW5jdGlvbnMgKi8KK3N0YXRpYyBDVVJMY29kZSBzc2hfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIENVUkxjb2RlIHN0YXR1cykKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIHN0cnVjdCBTU0hQUk9UTyAqc2Z0cF9zY3AgPSBjb25uLT5kYXRhLT5yZXEucHJvdG9wOworCisgIGlmKCFzdGF0dXMpIHsKKyAgICAvKiBydW4gdGhlIHN0YXRlLW1hY2hpbmUgKi8KKyAgICByZXN1bHQgPSBzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIEZBTFNFKTsKKyAgfQorICBlbHNlCisgICAgcmVzdWx0ID0gc3RhdHVzOworCisgIGlmKHNmdHBfc2NwKQorICAgIEN1cmxfc2FmZWZyZWUoc2Z0cF9zY3AtPnBhdGgpOworICBpZihDdXJsX3BncnNEb25lKGNvbm4pKQorICAgIHJldHVybiBDVVJMRV9BQk9SVEVEX0JZX0NBTExCQUNLOworCisgIGNvbm4tPmRhdGEtPnJlcS5rZWVwb24gPSAwOyAvKiBjbGVhciBhbGwgYml0cyAqLworICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBDVVJMY29kZSBzY3BfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIENVUkxjb2RlIHN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW1hdHVyZSkKK3sKKyAgKHZvaWQpcHJlbWF0dXJlOyAvKiBub3QgdXNlZCAqLworCisgIGlmKCFzdGF0dXMpCisgICAgc3RhdGUoY29ubiwgU1NIX1NDUF9ET05FKTsKKworICByZXR1cm4gc3NoX2RvbmUoY29ubiwgc3RhdHVzKTsKKworfQorCitzdGF0aWMgc3NpemVfdCBzY3Bfc2VuZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICptZW0sIHNpemVfdCBsZW4sIENVUkxjb2RlICplcnIpCit7CisgIHNzaXplX3QgbndyaXRlOworICAodm9pZClzb2NraW5kZXg7IC8qIHdlIG9ubHkgc3VwcG9ydCBTQ1Agb24gdGhlIGZpeGVkIGtub3duIHByaW1hcnkgc29ja2V0ICovCisKKyAgLyogbGlic3NoMl9jaGFubmVsX3dyaXRlKCkgcmV0dXJucyBpbnQhICovCisgIG53cml0ZSA9IChzc2l6ZV90KQorICAgIGxpYnNzaDJfY2hhbm5lbF93cml0ZShjb25uLT5wcm90by5zc2hjLnNzaF9jaGFubmVsLCBtZW0sIGxlbik7CisKKyAgc3NoX2Jsb2NrMndhaXRmb3IoY29ubiwgKG53cml0ZSA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTik/VFJVRTpGQUxTRSk7CisKKyAgaWYobndyaXRlID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgKmVyciA9IENVUkxFX0FHQUlOOworICAgIG53cml0ZSA9IDA7CisgIH0KKyAgZWxzZSBpZihud3JpdGUgPCBMSUJTU0gyX0VSUk9SX05PTkUpIHsKKyAgICAqZXJyID0gbGlic3NoMl9zZXNzaW9uX2Vycm9yX3RvX0NVUkxFKChpbnQpbndyaXRlKTsKKyAgICBud3JpdGUgPSAtMTsKKyAgfQorCisgIHJldHVybiBud3JpdGU7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNjcF9yZWN2KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm1lbSwgc2l6ZV90IGxlbiwgQ1VSTGNvZGUgKmVycikKK3sKKyAgc3NpemVfdCBucmVhZDsKKyAgKHZvaWQpc29ja2luZGV4OyAvKiB3ZSBvbmx5IHN1cHBvcnQgU0NQIG9uIHRoZSBmaXhlZCBrbm93biBwcmltYXJ5IHNvY2tldCAqLworCisgIC8qIGxpYnNzaDJfY2hhbm5lbF9yZWFkKCkgcmV0dXJucyBpbnQgKi8KKyAgbnJlYWQgPSAoc3NpemVfdCkKKyAgICBsaWJzc2gyX2NoYW5uZWxfcmVhZChjb25uLT5wcm90by5zc2hjLnNzaF9jaGFubmVsLCBtZW0sIGxlbik7CisKKyAgc3NoX2Jsb2NrMndhaXRmb3IoY29ubiwgKG5yZWFkID09IExJQlNTSDJfRVJST1JfRUFHQUlOKT9UUlVFOkZBTFNFKTsKKyAgaWYobnJlYWQgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAqZXJyID0gQ1VSTEVfQUdBSU47CisgICAgbnJlYWQgPSAtMTsKKyAgfQorCisgIHJldHVybiBucmVhZDsKK30KKworLyoKKyAqID09PT09PT09PT09PT09PSBTRlRQID09PT09PT09PT09PT09PQorICovCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBzZnRwX3BlcmZvcm0oKQorICoKKyAqIFRoaXMgaXMgdGhlIGFjdHVhbCBETyBmdW5jdGlvbiBmb3IgU0ZUUC4gR2V0IGEgZmlsZS9kaXJlY3RvcnkgYWNjb3JkaW5nIHRvCisgKiB0aGUgb3B0aW9ucyBwcmV2aW91c2x5IHNldHVwLgorICovCisKK3N0YXRpYworQ1VSTGNvZGUgc2Z0cF9wZXJmb3JtKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICBib29sICpjb25uZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9waGFzZV9kb25lKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKworICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIHN0YXJ0c1xuIikpOworCisgICpkb3BoYXNlX2RvbmUgPSBGQUxTRTsgLyogbm90IGRvbmUgeWV0ICovCisKKyAgLyogc3RhcnQgdGhlIGZpcnN0IGNvbW1hbmQgaW4gdGhlIERPIHBoYXNlICovCisgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX0lOSVQpOworCisgIC8qIHJ1biB0aGUgc3RhdGUtbWFjaGluZSAqLworICByZXN1bHQgPSBzc2hfbXVsdGlfc3RhdGVtYWNoKGNvbm4sIGRvcGhhc2VfZG9uZSk7CisKKyAgKmNvbm5lY3RlZCA9IGNvbm4tPmJpdHMudGNwY29ubmVjdFtGSVJTVFNPQ0tFVF07CisKKyAgaWYoKmRvcGhhc2VfZG9uZSkgeworICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiRE8gcGhhc2UgaXMgY29tcGxldGVcbiIpKTsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGNhbGxlZCBmcm9tIG11bHRpLmMgd2hpbGUgRE9pbmcgKi8KK3N0YXRpYyBDVVJMY29kZSBzZnRwX2RvaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvcGhhc2VfZG9uZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gc3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOworCisgIGlmKCpkb3BoYXNlX2RvbmUpIHsKKyAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogQkxPQ0tJTkcsIGJ1dCB0aGUgZnVuY3Rpb24gaXMgdXNpbmcgdGhlIHN0YXRlIG1hY2hpbmUgc28gdGhlIG9ubHkgcmVhc29uCisgICB0aGlzIGlzIHN0aWxsIGJsb2NraW5nIGlzIHRoYXQgdGhlIG11bHRpIGludGVyZmFjZSBjb2RlIGhhcyBubyBzdXBwb3J0IGZvcgorICAgZGlzY29ubmVjdGluZyBvcGVyYXRpb25zIHRoYXQgdGFrZXMgYSB3aGlsZSAqLworc3RhdGljIENVUkxjb2RlIHNmdHBfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZF9jb25uZWN0aW9uKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgKHZvaWQpIGRlYWRfY29ubmVjdGlvbjsKKworICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIlNTSCBESVNDT05ORUNUIHN0YXJ0cyBub3dcbiIpKTsKKworICBpZihjb25uLT5wcm90by5zc2hjLnNzaF9zZXNzaW9uKSB7CisgICAgLyogb25seSBpZiB0aGVyZSdzIGEgc2Vzc2lvbiBzdGlsbCBhcm91bmQgdG8gdXNlISAqLworICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1NIVVRET1dOKTsKKyAgICByZXN1bHQgPSBzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIFRSVUUpOworICB9CisKKyAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJTU0ggRElTQ09OTkVDVCBpcyBkb25lXG4iKSk7CisKKyAgcmV0dXJuIHJlc3VsdDsKKworfQorCitzdGF0aWMgQ1VSTGNvZGUgc2Z0cF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgQ1VSTGNvZGUgc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbWF0dXJlKQoreworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKworICBpZighc3RhdHVzKSB7CisgICAgLyogUG9zdCBxdW90ZSBjb21tYW5kcyBhcmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIFNGVFBfQ0xPU0Ugc3RhdGUgdG8gYXZvaWQKKyAgICAgICBlcnJvcnMgdGhhdCBjb3VsZCBoYXBwZW4gZHVlIHRvIG9wZW4gZmlsZSBoYW5kbGVzIGR1cmluZyBQT1NUUVVPVEUKKyAgICAgICBvcGVyYXRpb24gKi8KKyAgICBpZighcHJlbWF0dXJlICYmIGNvbm4tPmRhdGEtPnNldC5wb3N0cXVvdGUgJiYgIWNvbm4tPmJpdHMucmV0cnkpCisgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfU0ZUUF9QT1NUUVVPVEVfSU5JVDsKKyAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgIH0KKyAgcmV0dXJuIHNzaF9kb25lKGNvbm4sIHN0YXR1cyk7Cit9CisKKy8qIHJldHVybiBudW1iZXIgb2Ygc2VudCBieXRlcyAqLworc3RhdGljIHNzaXplX3Qgc2Z0cF9zZW5kKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICptZW0sIHNpemVfdCBsZW4sIENVUkxjb2RlICplcnIpCit7CisgIHNzaXplX3QgbndyaXRlOyAgIC8qIGxpYnNzaDJfc2Z0cF93cml0ZSgpIHVzZWQgdG8gcmV0dXJuIHNpemVfdCBpbiAwLjE0CisgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBpcyBjaGFuZ2VkIHRvIHNzaXplX3QgaW4gMC4xNS4gVGhlc2UgZGF5cyB3ZSBkb24ndAorICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IGxpYnNzaDIgMC4xNSovCisgICh2b2lkKXNvY2tpbmRleDsKKworICBud3JpdGUgPSBsaWJzc2gyX3NmdHBfd3JpdGUoY29ubi0+cHJvdG8uc3NoYy5zZnRwX2hhbmRsZSwgbWVtLCBsZW4pOworCisgIHNzaF9ibG9jazJ3YWl0Zm9yKGNvbm4sIChud3JpdGUgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pP1RSVUU6RkFMU0UpOworCisgIGlmKG53cml0ZSA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICplcnIgPSBDVVJMRV9BR0FJTjsKKyAgICBud3JpdGUgPSAwOworICB9CisgIGVsc2UgaWYobndyaXRlIDwgTElCU1NIMl9FUlJPUl9OT05FKSB7CisgICAgKmVyciA9IGxpYnNzaDJfc2Vzc2lvbl9lcnJvcl90b19DVVJMRSgoaW50KW53cml0ZSk7CisgICAgbndyaXRlID0gLTE7CisgIH0KKworICByZXR1cm4gbndyaXRlOworfQorCisvKgorICogUmV0dXJuIG51bWJlciBvZiByZWNlaXZlZCAoZGVjcnlwdGVkKSBieXRlcworICogb3IgPDAgb24gZXJyb3IKKyAqLworc3RhdGljIHNzaXplX3Qgc2Z0cF9yZWN2KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICptZW0sIHNpemVfdCBsZW4sIENVUkxjb2RlICplcnIpCit7CisgIHNzaXplX3QgbnJlYWQ7CisgICh2b2lkKXNvY2tpbmRleDsKKworICBucmVhZCA9IGxpYnNzaDJfc2Z0cF9yZWFkKGNvbm4tPnByb3RvLnNzaGMuc2Z0cF9oYW5kbGUsIG1lbSwgbGVuKTsKKworICBzc2hfYmxvY2syd2FpdGZvcihjb25uLCAobnJlYWQgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pP1RSVUU6RkFMU0UpOworCisgIGlmKG5yZWFkID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAgKmVyciA9IENVUkxFX0FHQUlOOworICAgIG5yZWFkID0gLTE7CisKKyAgfQorICBlbHNlIGlmKG5yZWFkIDwgMCkgeworICAgICplcnIgPSBsaWJzc2gyX3Nlc3Npb25fZXJyb3JfdG9fQ1VSTEUoKGludClucmVhZCk7CisgIH0KKyAgcmV0dXJuIG5yZWFkOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqc2Z0cF9saWJzc2gyX3N0cmVycm9yKGludCBlcnIpCit7CisgIHN3aXRjaChlcnIpIHsKKyAgICBjYXNlIExJQlNTSDJfRlhfTk9fU1VDSF9GSUxFOgorICAgICAgcmV0dXJuICJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IjsKKworICAgIGNhc2UgTElCU1NIMl9GWF9QRVJNSVNTSU9OX0RFTklFRDoKKyAgICAgIHJldHVybiAiUGVybWlzc2lvbiBkZW5pZWQiOworCisgICAgY2FzZSBMSUJTU0gyX0ZYX0ZBSUxVUkU6CisgICAgICByZXR1cm4gIk9wZXJhdGlvbiBmYWlsZWQiOworCisgICAgY2FzZSBMSUJTU0gyX0ZYX0JBRF9NRVNTQUdFOgorICAgICAgcmV0dXJuICJCYWQgbWVzc2FnZSBmcm9tIFNGVFAgc2VydmVyIjsKKworICAgIGNhc2UgTElCU1NIMl9GWF9OT19DT05ORUNUSU9OOgorICAgICAgcmV0dXJuICJOb3QgY29ubmVjdGVkIHRvIFNGVFAgc2VydmVyIjsKKworICAgIGNhc2UgTElCU1NIMl9GWF9DT05ORUNUSU9OX0xPU1Q6CisgICAgICByZXR1cm4gIkNvbm5lY3Rpb24gdG8gU0ZUUCBzZXJ2ZXIgbG9zdCI7CisKKyAgICBjYXNlIExJQlNTSDJfRlhfT1BfVU5TVVBQT1JURUQ6CisgICAgICByZXR1cm4gIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IFNGVFAgc2VydmVyIjsKKworICAgIGNhc2UgTElCU1NIMl9GWF9JTlZBTElEX0hBTkRMRToKKyAgICAgIHJldHVybiAiSW52YWxpZCBoYW5kbGUiOworCisgICAgY2FzZSBMSUJTU0gyX0ZYX05PX1NVQ0hfUEFUSDoKKyAgICAgIHJldHVybiAiTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSI7CisKKyAgICBjYXNlIExJQlNTSDJfRlhfRklMRV9BTFJFQURZX0VYSVNUUzoKKyAgICAgIHJldHVybiAiRmlsZSBhbHJlYWR5IGV4aXN0cyI7CisKKyAgICBjYXNlIExJQlNTSDJfRlhfV1JJVEVfUFJPVEVDVDoKKyAgICAgIHJldHVybiAiRmlsZSBpcyB3cml0ZSBwcm90ZWN0ZWQiOworCisgICAgY2FzZSBMSUJTU0gyX0ZYX05PX01FRElBOgorICAgICAgcmV0dXJuICJObyBtZWRpYSI7CisKKyAgICBjYXNlIExJQlNTSDJfRlhfTk9fU1BBQ0VfT05fRklMRVNZU1RFTToKKyAgICAgIHJldHVybiAiRGlzayBmdWxsIjsKKworICAgIGNhc2UgTElCU1NIMl9GWF9RVU9UQV9FWENFRURFRDoKKyAgICAgIHJldHVybiAiVXNlciBxdW90YSBleGNlZWRlZCI7CisKKyAgICBjYXNlIExJQlNTSDJfRlhfVU5LTk9XTl9QUklOQ0lQTEU6CisgICAgICByZXR1cm4gIlVua25vd24gcHJpbmNpcGxlIjsKKworICAgIGNhc2UgTElCU1NIMl9GWF9MT0NLX0NPTkZsSUNUOgorICAgICAgcmV0dXJuICJGaWxlIGxvY2sgY29uZmxpY3QiOworCisgICAgY2FzZSBMSUJTU0gyX0ZYX0RJUl9OT1RfRU1QVFk6CisgICAgICByZXR1cm4gIkRpcmVjdG9yeSBub3QgZW1wdHkiOworCisgICAgY2FzZSBMSUJTU0gyX0ZYX05PVF9BX0RJUkVDVE9SWToKKyAgICAgIHJldHVybiAiTm90IGEgZGlyZWN0b3J5IjsKKworICAgIGNhc2UgTElCU1NIMl9GWF9JTlZBTElEX0ZJTEVOQU1FOgorICAgICAgcmV0dXJuICJJbnZhbGlkIGZpbGVuYW1lIjsKKworICAgIGNhc2UgTElCU1NIMl9GWF9MSU5LX0xPT1A6CisgICAgICByZXR1cm4gIkxpbmsgcG9pbnRzIHRvIGl0c2VsZiI7CisgIH0KKyAgcmV0dXJuICJVbmtub3duIGVycm9yIGluIGxpYnNzaDIiOworfQorCitDVVJMY29kZSBDdXJsX3NzaF9pbml0KHZvaWQpCit7CisjaWZkZWYgSEFWRV9MSUJTU0gyX0lOSVQKKyAgaWYobGlic3NoMl9pbml0KDApKSB7CisgICAgREVCVUdGKGZwcmludGYoc3RkZXJyLCAiRXJyb3I6IGxpYnNzaDJfaW5pdCBmYWlsZWRcbiIpKTsKKyAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgIH0KKyNlbmRpZgorICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3ZvaWQgQ3VybF9zc2hfY2xlYW51cCh2b2lkKQoreworI2lmZGVmIEhBVkVfTElCU1NIMl9FWElUCisgICh2b2lkKWxpYnNzaDJfZXhpdCgpOworI2VuZGlmCit9CisKK3NpemVfdCBDdXJsX3NzaF92ZXJzaW9uKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmxlbikKK3sKKyAgcmV0dXJuIG1zbnByaW50ZihidWZmZXIsIGJ1ZmxlbiwgImxpYnNzaDIvJXMiLCBMSUJTU0gyX1ZFUlNJT04pOworfQorCisjZW5kaWYgLyogVVNFX0xJQlNTSDIgKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Zzc2gvc3NoLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92c3NoL3NzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNGVlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92c3NoL3NzaC5oCkBAIC0wLDAgKzEsMjYyIEBACisjaWZuZGVmIEhFQURFUl9DVVJMX1NTSF9ICisjZGVmaW5lIEhFQURFUl9DVVJMX1NTSF9ICisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZiBkZWZpbmVkKEhBVkVfTElCU1NIMl9IKQorI2luY2x1ZGUgPGxpYnNzaDIuaD4KKyNpbmNsdWRlIDxsaWJzc2gyX3NmdHAuaD4KKyNlbGlmIGRlZmluZWQoSEFWRV9MSUJTU0hfTElCU1NIX0gpCisjaW5jbHVkZSA8bGlic3NoL2xpYnNzaC5oPgorI2luY2x1ZGUgPGxpYnNzaC9zZnRwLmg+CisjZWxpZiBkZWZpbmVkKFVTRV9XT0xGU1NIKQorI2luY2x1ZGUgPHdvbGZzc2gvc3NoLmg+CisjaW5jbHVkZSA8d29sZnNzaC93b2xmc2Z0cC5oPgorI2VuZGlmCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBTU0ggdW5pcXVlIHNldHVwCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordHlwZWRlZiBlbnVtIHsKKyAgU1NIX05PX1NUQVRFID0gLTEsICAvKiBVc2VkIGZvciAibmV4dFN0YXRlIiBzbyBzYXkgdGhlcmUgaXMgbm9uZSAqLworICBTU0hfU1RPUCA9IDAsICAgICAgIC8qIGRvIG5vdGhpbmcgc3RhdGUsIHN0b3BzIHRoZSBzdGF0ZSBtYWNoaW5lICovCisKKyAgU1NIX0lOSVQsICAgICAgICAgICAvKiBGaXJzdCBzdGF0ZSBpbiBTU0gtQ09OTkVDVCAqLworICBTU0hfU19TVEFSVFVQLCAgICAgIC8qIFNlc3Npb24gc3RhcnR1cCAqLworICBTU0hfSE9TVEtFWSwgICAgICAgIC8qIHZlcmlmeSBob3N0a2V5ICovCisgIFNTSF9BVVRITElTVCwKKyAgU1NIX0FVVEhfUEtFWV9JTklULAorICBTU0hfQVVUSF9QS0VZLAorICBTU0hfQVVUSF9QQVNTX0lOSVQsCisgIFNTSF9BVVRIX1BBU1MsCisgIFNTSF9BVVRIX0FHRU5UX0lOSVQsIC8qIGluaXRpYWxpemUgdGhlbiB3YWl0IGZvciBjb25uZWN0aW9uIHRvIGFnZW50ICovCisgIFNTSF9BVVRIX0FHRU5UX0xJU1QsIC8qIGFzayBmb3IgbGlzdCB0aGVuIHdhaXQgZm9yIGVudGlyZSBsaXN0IHRvIGNvbWUgKi8KKyAgU1NIX0FVVEhfQUdFTlQsICAgICAgLyogYXR0ZW1wdCBvbmUga2V5IGF0IGEgdGltZSAqLworICBTU0hfQVVUSF9IT1NUX0lOSVQsCisgIFNTSF9BVVRIX0hPU1QsCisgIFNTSF9BVVRIX0tFWV9JTklULAorICBTU0hfQVVUSF9LRVksCisgIFNTSF9BVVRIX0dTU0FQSSwKKyAgU1NIX0FVVEhfRE9ORSwKKyAgU1NIX1NGVFBfSU5JVCwKKyAgU1NIX1NGVFBfUkVBTFBBVEgsICAgLyogTGFzdCBzdGF0ZSBpbiBTU0gtQ09OTkVDVCAqLworCisgIFNTSF9TRlRQX1FVT1RFX0lOSVQsIC8qIEZpcnN0IHN0YXRlIGluIFNGVFAtRE8gKi8KKyAgU1NIX1NGVFBfUE9TVFFVT1RFX0lOSVQsIC8qIChQb3NzaWJseSkgRmlyc3Qgc3RhdGUgaW4gU0ZUUC1ET05FICovCisgIFNTSF9TRlRQX1FVT1RFLAorICBTU0hfU0ZUUF9ORVhUX1FVT1RFLAorICBTU0hfU0ZUUF9RVU9URV9TVEFULAorICBTU0hfU0ZUUF9RVU9URV9TRVRTVEFULAorICBTU0hfU0ZUUF9RVU9URV9TWU1MSU5LLAorICBTU0hfU0ZUUF9RVU9URV9NS0RJUiwKKyAgU1NIX1NGVFBfUVVPVEVfUkVOQU1FLAorICBTU0hfU0ZUUF9RVU9URV9STURJUiwKKyAgU1NIX1NGVFBfUVVPVEVfVU5MSU5LLAorICBTU0hfU0ZUUF9RVU9URV9TVEFUVkZTLAorICBTU0hfU0ZUUF9HRVRJTkZPLAorICBTU0hfU0ZUUF9GSUxFVElNRSwKKyAgU1NIX1NGVFBfVFJBTlNfSU5JVCwKKyAgU1NIX1NGVFBfVVBMT0FEX0lOSVQsCisgIFNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQsCisgIFNTSF9TRlRQX0NSRUFURV9ESVJTLAorICBTU0hfU0ZUUF9DUkVBVEVfRElSU19NS0RJUiwKKyAgU1NIX1NGVFBfUkVBRERJUl9JTklULAorICBTU0hfU0ZUUF9SRUFERElSLAorICBTU0hfU0ZUUF9SRUFERElSX0xJTkssCisgIFNTSF9TRlRQX1JFQURESVJfQk9UVE9NLAorICBTU0hfU0ZUUF9SRUFERElSX0RPTkUsCisgIFNTSF9TRlRQX0RPV05MT0FEX0lOSVQsCisgIFNTSF9TRlRQX0RPV05MT0FEX1NUQVQsIC8qIExhc3Qgc3RhdGUgaW4gU0ZUUC1ETyAqLworICBTU0hfU0ZUUF9DTE9TRSwgICAgLyogTGFzdCBzdGF0ZSBpbiBTRlRQLURPTkUgKi8KKyAgU1NIX1NGVFBfU0hVVERPV04sIC8qIEZpcnN0IHN0YXRlIGluIFNGVFAtRElTQ09OTkVDVCAqLworICBTU0hfU0NQX1RSQU5TX0lOSVQsIC8qIEZpcnN0IHN0YXRlIGluIFNDUC1ETyAqLworICBTU0hfU0NQX1VQTE9BRF9JTklULAorICBTU0hfU0NQX0RPV05MT0FEX0lOSVQsCisgIFNTSF9TQ1BfRE9XTkxPQUQsCisgIFNTSF9TQ1BfRE9ORSwKKyAgU1NIX1NDUF9TRU5EX0VPRiwKKyAgU1NIX1NDUF9XQUlUX0VPRiwKKyAgU1NIX1NDUF9XQUlUX0NMT1NFLAorICBTU0hfU0NQX0NIQU5ORUxfRlJFRSwgICAvKiBMYXN0IHN0YXRlIGluIFNDUC1ET05FICovCisgIFNTSF9TRVNTSU9OX0RJU0NPTk5FQ1QsIC8qIEZpcnN0IHN0YXRlIGluIFNDUC1ESVNDT05ORUNUICovCisgIFNTSF9TRVNTSU9OX0ZSRUUsICAgICAgIC8qIExhc3Qgc3RhdGUgaW4gU0NQL1NGVFAtRElTQ09OTkVDVCAqLworICBTU0hfUVVJVCwKKyAgU1NIX0xBU1QgIC8qIG5ldmVyIHVzZWQgKi8KK30gc3Noc3RhdGU7CisKKy8qIHRoaXMgc3RydWN0IGlzIHVzZWQgaW4gdGhlIEhhbmRsZURhdGEgc3RydWN0IHdoaWNoIGlzIHBhcnQgb2YgdGhlCisgICBDdXJsX2Vhc3ksIHdoaWNoIG1lYW5zIHRoaXMgaXMgdXNlZCBvbiBhIHBlci1lYXN5IGhhbmRsZSBiYXNpcy4KKyAgIEV2ZXJ5dGhpbmcgdGhhdCBpcyBzdHJpY3RseSByZWxhdGVkIHRvIGEgY29ubmVjdGlvbiBpcyBiYW5uZWQgZnJvbSB0aGlzCisgICBzdHJ1Y3QuICovCitzdHJ1Y3QgU1NIUFJPVE8geworICBjaGFyICpwYXRoOyAgICAgICAgICAgICAgICAgIC8qIHRoZSBwYXRoIHdlIG9wZXJhdGUgb24gKi8KK307CisKKy8qIHNzaF9jb25uIGlzIHVzZWQgZm9yIHN0cnVjdCBjb25uZWN0aW9uLW9yaWVudGVkIGRhdGEgaW4gdGhlIGNvbm5lY3RkYXRhCisgICBzdHJ1Y3QgKi8KK3N0cnVjdCBzc2hfY29ubiB7CisgIGNvbnN0IGNoYXIgKmF1dGhsaXN0OyAgICAgICAvKiBMaXN0IG9mIGF1dGguIG1ldGhvZHMsIG1hbmFnZWQgYnkgbGlic3NoMiAqLworCisgIC8qIGNvbW1vbiAqLworICBjb25zdCBjaGFyICpwYXNzcGhyYXNlOyAgICAgLyogcGFzcy1waHJhc2UgdG8gdXNlICovCisgIGNoYXIgKnJzYV9wdWI7ICAgICAgICAgICAgICAvKiBwYXRoIG5hbWUgKi8KKyAgY2hhciAqcnNhOyAgICAgICAgICAgICAgICAgIC8qIHBhdGggbmFtZSAqLworICBib29sIGF1dGhlZDsgICAgICAgICAgICAgICAgLyogdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gYXV0aGVudGljYXRlZCBmaW5lICovCisgIHNzaHN0YXRlIHN0YXRlOyAgICAgICAgICAgICAvKiBhbHdheXMgdXNlIHNzaC5jOnN0YXRlKCkgdG8gY2hhbmdlIHN0YXRlISAqLworICBzc2hzdGF0ZSBuZXh0c3RhdGU7ICAgICAgICAgLyogdGhlIHN0YXRlIHRvIGdvdG8gYWZ0ZXIgc3RvcHBpbmcgKi8KKyAgQ1VSTGNvZGUgYWN0dWFsY29kZTsgICAgICAgIC8qIHRoZSBhY3R1YWwgZXJyb3IgY29kZSAqLworICBzdHJ1Y3QgY3VybF9zbGlzdCAqcXVvdGVfaXRlbTsgLyogZm9yIHRoZSBxdW90ZSBvcHRpb24gKi8KKyAgY2hhciAqcXVvdGVfcGF0aDE7ICAgICAgICAgIC8qIHR3byBnZW5lcmljIHBvaW50ZXJzIGZvciB0aGUgUVVPVEUgc3R1ZmYgKi8KKyAgY2hhciAqcXVvdGVfcGF0aDI7CisKKyAgYm9vbCBhY2NlcHRmYWlsOyAgICAgICAgICAgIC8qIHVzZWQgYnkgdGhlIFNGVFBfUVVPVEUgKGNvbnRpbnVlIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZSBjb21tYW5kIGZhaWxzKSAqLworICBjaGFyICpob21lZGlyOyAgICAgICAgICAgICAgLyogd2hlbiBkb2luZyBTRlRQIHdlIGZpZ3VyZSBvdXQgaG9tZSBkaXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0IHBoYXNlICovCisgIHNpemVfdCByZWFkZGlyX2xlbiwgcmVhZGRpcl90b3RhbExlbiwgcmVhZGRpcl9jdXJyTGVuOworICBjaGFyICpyZWFkZGlyX2xpbmU7CisgIGNoYXIgKnJlYWRkaXJfbGlua1BhdGg7CisgIC8qIGVuZCBvZiBSRUFERElSIHN0dWZmICovCisKKyAgaW50IHNlY29uZENyZWF0ZURpcnM7ICAgICAgICAgLyogY291bnRlciB1c2UgYnkgdGhlIGNvZGUgdG8gc2VlIGlmIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmQgYXR0ZW1wdCBoYXMgYmVlbiBtYWRlIHRvIGNoYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by9jcmVhdGUgYSBkaXJlY3RvcnkgKi8KKyAgY2hhciAqc2xhc2hfcG9zOyAgICAgICAgICAgICAgLyogdXNlZCBieSB0aGUgU0ZUUF9DUkVBVEVfRElSUyBzdGF0ZSAqLworCisgIGludCBvcmlnX3dhaXRmb3I7ICAgICAgICAgICAgIC8qIGRlZmF1bHQgUkVBRC9XUklURSBiaXRzIHdhaXQgZm9yICovCisKKyNpZiBkZWZpbmVkKFVTRV9MSUJTU0gpCisvKiBvdXIgdmFyaWFibGVzICovCisgIHVuc2lnbmVkIGtiZF9zdGF0ZTsgLyogMCBvciAxICovCisgIHNzaF9rZXkgcHJpdmtleTsKKyAgc3NoX2tleSBwdWJrZXk7CisgIGludCBhdXRoX21ldGhvZHM7CisgIHNzaF9zZXNzaW9uIHNzaF9zZXNzaW9uOworICBzc2hfc2NwIHNjcF9zZXNzaW9uOworICBzZnRwX3Nlc3Npb24gc2Z0cF9zZXNzaW9uOworICBzZnRwX2ZpbGUgc2Z0cF9maWxlOworICBzZnRwX2RpciBzZnRwX2RpcjsKKworICB1bnNpZ25lZCBzZnRwX3JlY3Zfc3RhdGU7IC8qIDAgb3IgMSAqLworICBpbnQgc2Z0cF9maWxlX2luZGV4OyAvKiBmb3IgYXN5bmMgcmVhZCAqLworICBzZnRwX2F0dHJpYnV0ZXMgcmVhZGRpcl9hdHRyczsgLyogdXNlZCBieSB0aGUgU0ZUUCByZWFkZGlyIGFjdGlvbnMgKi8KKyAgc2Z0cF9hdHRyaWJ1dGVzIHJlYWRkaXJfbGlua19hdHRyczsgLyogdXNlZCBieSB0aGUgU0ZUUCByZWFkZGlyIGFjdGlvbnMgKi8KKyAgc2Z0cF9hdHRyaWJ1dGVzIHF1b3RlX2F0dHJzOyAvKiB1c2VkIGJ5IHRoZSBTRlRQX1FVT1RFIHN0YXRlICovCisKKyAgY29uc3QgY2hhciAqcmVhZGRpcl9maWxlbmFtZTsgLyogcG9pbnRzIHdpdGhpbiByZWFkZGlyX2F0dHJzICovCisgIGNvbnN0IGNoYXIgKnJlYWRkaXJfbG9uZ2VudHJ5OworICBjaGFyICpyZWFkZGlyX3RtcDsKKyNlbGlmIGRlZmluZWQoVVNFX0xJQlNTSDIpCisgIGNoYXIgKnJlYWRkaXJfZmlsZW5hbWU7CisgIGNoYXIgKnJlYWRkaXJfbG9uZ2VudHJ5OworCisgIExJQlNTSDJfU0ZUUF9BVFRSSUJVVEVTIHF1b3RlX2F0dHJzOyAvKiB1c2VkIGJ5IHRoZSBTRlRQX1FVT1RFIHN0YXRlICovCisKKyAgLyogSGVyZSdzIGEgc2V0IG9mIHN0cnVjdCBtZW1iZXJzIHVzZWQgYnkgdGhlIFNGVFBfUkVBRERJUiBzdGF0ZSAqLworICBMSUJTU0gyX1NGVFBfQVRUUklCVVRFUyByZWFkZGlyX2F0dHJzOworICBMSUJTU0gyX1NFU1NJT04gKnNzaF9zZXNzaW9uOyAvKiBTZWN1cmUgU2hlbGwgc2Vzc2lvbiAqLworICBMSUJTU0gyX0NIQU5ORUwgKnNzaF9jaGFubmVsOyAvKiBTZWN1cmUgU2hlbGwgY2hhbm5lbCBoYW5kbGUgKi8KKyAgTElCU1NIMl9TRlRQICpzZnRwX3Nlc3Npb247ICAgLyogU0ZUUCBoYW5kbGUgKi8KKyAgTElCU1NIMl9TRlRQX0hBTkRMRSAqc2Z0cF9oYW5kbGU7CisKKyNpZmRlZiBIQVZFX0xJQlNTSDJfQUdFTlRfQVBJCisgIExJQlNTSDJfQUdFTlQgKnNzaF9hZ2VudDsgICAgIC8qIHByb3h5IHRvIHNzaC1hZ2VudC9wYWdlYW50ICovCisgIHN0cnVjdCBsaWJzc2gyX2FnZW50X3B1YmxpY2tleSAqc3NoYWdlbnRfaWRlbnRpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3NoYWdlbnRfcHJldl9pZGVudGl0eTsKKyNlbmRpZgorCisgIC8qIG5vdGUgdGhhdCBIQVZFX0xJQlNTSDJfS05PV05IT1NUX0FQSSBpcyBhIGRlZmluZSBzZXQgaW4gdGhlIGxpYnNzaDIuaAorICAgICBoZWFkZXIgKi8KKyNpZmRlZiBIQVZFX0xJQlNTSDJfS05PV05IT1NUX0FQSQorICBMSUJTU0gyX0tOT1dOSE9TVFMgKmtoOworI2VuZGlmCisjZWxpZiBkZWZpbmVkKFVTRV9XT0xGU1NIKQorICBXT0xGU1NIICpzc2hfc2Vzc2lvbjsKKyAgV09MRlNTSF9DVFggKmN0eDsKKyAgd29yZDMyIGhhbmRsZVN6OworICBieXRlIGhhbmRsZVtXT0xGU1NIX01BWF9IQU5ETEVdOworICBjdXJsX29mZl90IG9mZnNldDsKKyNlbmRpZiAvKiBVU0VfTElCU1NIICovCit9OworCisjaWYgZGVmaW5lZChVU0VfTElCU1NIKQorCisjZGVmaW5lIENVUkxfTElCU1NIX1ZFUlNJT04gc3NoX3ZlcnNpb24oMCkKKworI2VsaWYgZGVmaW5lZChVU0VfTElCU1NIMikKKworLyogRmVhdHVyZSBkZXRlY3Rpb24gYmFzZWQgb24gdmVyc2lvbiBudW1iZXJzIHRvIGJldHRlciB3b3JrIHdpdGgKKyAgIG5vbi1jb25maWd1cmUgcGxhdGZvcm1zICovCisKKyNpZiAhZGVmaW5lZChMSUJTU0gyX1ZFUlNJT05fTlVNKSB8fCAoTElCU1NIMl9WRVJTSU9OX05VTSA8IDB4MDAxMDAwKQorIyAgZXJyb3IgIlNDUC9TRlRQIHByb3RvY29scyByZXF1aXJlIGxpYnNzaDIgMC4xNiBvciBsYXRlciIKKyNlbmRpZgorCisjaWYgTElCU1NIMl9WRVJTSU9OX05VTSA+PSAweDAxMDAwMAorI2RlZmluZSBIQVZFX0xJQlNTSDJfU0ZUUF9TRUVLNjQgMQorI2VuZGlmCisKKyNpZiBMSUJTU0gyX1ZFUlNJT05fTlVNID49IDB4MDEwMTAwCisjZGVmaW5lIEhBVkVfTElCU1NIMl9WRVJTSU9OIDEKKyNlbmRpZgorCisjaWYgTElCU1NIMl9WRVJTSU9OX05VTSA+PSAweDAxMDIwNQorI2RlZmluZSBIQVZFX0xJQlNTSDJfSU5JVCAxCisjZGVmaW5lIEhBVkVfTElCU1NIMl9FWElUIDEKKyNlbmRpZgorCisjaWYgTElCU1NIMl9WRVJTSU9OX05VTSA+PSAweDAxMDIwNgorI2RlZmluZSBIQVZFX0xJQlNTSDJfS05PV05IT1NUX0NIRUNLUCAxCisjZGVmaW5lIEhBVkVfTElCU1NIMl9TQ1BfU0VORDY0IDEKKyNlbmRpZgorCisjaWYgTElCU1NIMl9WRVJTSU9OX05VTSA+PSAweDAxMDIwOAorI2RlZmluZSBIQVZFX0xJQlNTSDJfU0VTU0lPTl9IQU5EU0hBS0UgMQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xJQlNTSDJfVkVSU0lPTgorLyogZ2V0IGl0IHJ1bi10aW1lIGlmIHBvc3NpYmxlICovCisjZGVmaW5lIENVUkxfTElCU1NIMl9WRVJTSU9OIGxpYnNzaDJfdmVyc2lvbigwKQorI2Vsc2UKKy8qIHVzZSBidWlsZC10aW1lIGlmIHJ1bi10aW1lIG5vdCBwb3NzaWJsZSAqLworI2RlZmluZSBDVVJMX0xJQlNTSDJfVkVSU0lPTiBMSUJTU0gyX1ZFUlNJT04KKyNlbmRpZgorCisjZW5kaWYgLyogVVNFX0xJQlNTSDIgKi8KKworI2lmZGVmIFVTRV9TU0gKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCBDdXJsX2hhbmRsZXIgQ3VybF9oYW5kbGVyX3NjcDsKK2V4dGVybiBjb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyIEN1cmxfaGFuZGxlcl9zZnRwOworCisvKiBnZW5lcmljIFNTSCBiYWNrZW5kIGZ1bmN0aW9ucyAqLworQ1VSTGNvZGUgQ3VybF9zc2hfaW5pdCh2b2lkKTsKK3ZvaWQgQ3VybF9zc2hfY2xlYW51cCh2b2lkKTsKK3NpemVfdCBDdXJsX3NzaF92ZXJzaW9uKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGJ1Zmxlbik7CisjZWxzZQorLyogZm9yIG5vbi1TU0ggYnVpbGRzICovCisjZGVmaW5lIEN1cmxfc3NoX2NsZWFudXAoKQorI2VuZGlmCisKKyNlbmRpZiAvKiBIRUFERVJfQ1VSTF9TU0hfSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnNzaC93b2xmc3NoLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92c3NoL3dvbGZzc2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjNhNTJjCi0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnNzaC93b2xmc3NoLmMKQEAgLTAsMCArMSwxMTU2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZmRlZiBVU0VfV09MRlNTSAorCisjaW5jbHVkZSA8bGltaXRzLmg+CisKKyNpbmNsdWRlIDx3b2xmc3NoL3NzaC5oPgorI2luY2x1ZGUgPHdvbGZzc2gvd29sZnNmdHAuaD4KKyNpbmNsdWRlICJ1cmxkYXRhLmgiCisjaW5jbHVkZSAiY29ubmVjdC5oIgorI2luY2x1ZGUgInNlbmRmLmgiCisjaW5jbHVkZSAicHJvZ3Jlc3MuaCIKKyNpbmNsdWRlICJjdXJsX3BhdGguaCIKKyNpbmNsdWRlICJzdHJ0b29mZnQuaCIKKyNpbmNsdWRlICJ0cmFuc2Zlci5oIgorI2luY2x1ZGUgInNwZWVkY2hlY2suaCIKKyNpbmNsdWRlICJzZWxlY3QuaCIKKyNpbmNsdWRlICJtdWx0aWlmLmgiCisjaW5jbHVkZSAid2Fybmxlc3MuaCIKKworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCitzdGF0aWMgQ1VSTGNvZGUgd3NzaF9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7CitzdGF0aWMgQ1VSTGNvZGUgd3NzaF9tdWx0aV9zdGF0ZW1hY2goc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKTsKK3N0YXRpYyBDVVJMY29kZSB3c3NoX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7CisjaWYgMAorc3RhdGljIENVUkxjb2RlIHdzY3BfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlLCBib29sIHByZW1hdHVyZSk7CitzdGF0aWMgQ1VSTGNvZGUgd3NjcF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpOworc3RhdGljIENVUkxjb2RlIHdzY3BfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVhZF9jb25uZWN0aW9uKTsKKyNlbmRpZgorc3RhdGljIENVUkxjb2RlIHdzZnRwX2RvbmUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUsIGJvb2wgcHJlbWF0dXJlKTsKK3N0YXRpYyBDVVJMY29kZSB3c2Z0cF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9waGFzZV9kb25lKTsKK3N0YXRpYyBDVVJMY29kZSB3c2Z0cF9kaXNjb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCBkZWFkKTsKK3N0YXRpYyBpbnQgd3NzaF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2spOworc3RhdGljIGludCB3c3NoX3BlcmZvcm1fZ2V0c29jayhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2spOworc3RhdGljIENVUkxjb2RlIHdzc2hfc2V0dXBfY29ubmVjdGlvbihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOworCisjaWYgMAorLyoKKyAqIFNDUCBwcm90b2NvbCBoYW5kbGVyLgorICovCisKK2NvbnN0IHN0cnVjdCBDdXJsX2hhbmRsZXIgQ3VybF9oYW5kbGVyX3NjcCA9IHsKKyAgIlNDUCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzY2hlbWUgKi8KKyAgd3NzaF9zZXR1cF9jb25uZWN0aW9uLCAgICAgICAgICAgICAgICAvKiBzZXR1cF9jb25uZWN0aW9uICovCisgIHdzc2hfZG8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9faXQgKi8KKyAgd3NjcF9kb25lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb25lICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9fbW9yZSAqLworICB3c3NoX2Nvbm5lY3QsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3RfaXQgKi8KKyAgd3NzaF9tdWx0aV9zdGF0ZW1hY2gsICAgICAgICAgICAgICAgICAvKiBjb25uZWN0aW5nICovCisgIHdzY3BfZG9pbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9pbmcgKi8KKyAgd3NzaF9nZXRzb2NrLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcm90b19nZXRzb2NrICovCisgIHdzc2hfZ2V0c29jaywgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9pbmdfZ2V0c29jayAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbW9yZV9nZXRzb2NrICovCisgIHdzc2hfcGVyZm9ybV9nZXRzb2NrLCAgICAgICAgICAgICAgICAgLyogcGVyZm9ybV9nZXRzb2NrICovCisgIHdzY3BfZGlzY29ubmVjdCwgICAgICAgICAgICAgICAgICAgICAgLyogZGlzY29ubmVjdCAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWR3cml0ZSAqLworICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3Rpb25fY2hlY2sgKi8KKyAgUE9SVF9TU0gsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkZWZwb3J0ICovCisgIENVUkxQUk9UT19TQ1AsICAgICAgICAgICAgICAgICAgICAgICAgLyogcHJvdG9jb2wgKi8KKyAgUFJPVE9QVF9ESVJMT0NLIHwgUFJPVE9QVF9DTE9TRUFDVElPTgorICB8IFBST1RPUFRfTk9VUkxRVUVSWSAgICAgICAgICAgICAgICAgIC8qIGZsYWdzICovCit9OworCisjZW5kaWYKKworLyoKKyAqIFNGVFAgcHJvdG9jb2wgaGFuZGxlci4KKyAqLworCitjb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyIEN1cmxfaGFuZGxlcl9zZnRwID0geworICAiU0ZUUCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjaGVtZSAqLworICB3c3NoX3NldHVwX2Nvbm5lY3Rpb24sICAgICAgICAgICAgICAgIC8qIHNldHVwX2Nvbm5lY3Rpb24gKi8KKyAgd3NzaF9kbywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb19pdCAqLworICB3c2Z0cF9kb25lLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbmUgKi8KKyAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb19tb3JlICovCisgIHdzc2hfY29ubmVjdCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29ubmVjdF9pdCAqLworICB3c3NoX211bHRpX3N0YXRlbWFjaCwgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3RpbmcgKi8KKyAgd3NmdHBfZG9pbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb2luZyAqLworICB3c3NoX2dldHNvY2ssICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByb3RvX2dldHNvY2sgKi8KKyAgd3NzaF9nZXRzb2NrLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb2luZ19nZXRzb2NrICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9tb3JlX2dldHNvY2sgKi8KKyAgd3NzaF9wZXJmb3JtX2dldHNvY2ssICAgICAgICAgICAgICAgICAvKiBwZXJmb3JtX2dldHNvY2sgKi8KKyAgd3NmdHBfZGlzY29ubmVjdCwgICAgICAgICAgICAgICAgICAgICAvKiBkaXNjb25uZWN0ICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVhZHdyaXRlICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29ubmVjdGlvbl9jaGVjayAqLworICBQT1JUX1NTSCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRlZnBvcnQgKi8KKyAgQ1VSTFBST1RPX1NGVFAsICAgICAgICAgICAgICAgICAgICAgICAvKiBwcm90b2NvbCAqLworICBQUk9UT1BUX0RJUkxPQ0sgfCBQUk9UT1BUX0NMT1NFQUNUSU9OCisgIHwgUFJPVE9QVF9OT1VSTFFVRVJZICAgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KK307CisKKy8qCisgKiBTU0ggU3RhdGUgbWFjaGluZSByZWxhdGVkIGNvZGUKKyAqLworLyogVGhpcyBpcyB0aGUgT05MWSB3YXkgdG8gY2hhbmdlIFNTSCBzdGF0ZSEgKi8KK3N0YXRpYyB2b2lkIHN0YXRlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgc3Noc3RhdGUgbm93c3RhdGUpCit7CisgIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOworI2lmIGRlZmluZWQoREVCVUdCVUlMRCkgJiYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUykKKyAgLyogZm9yIGRlYnVnIHB1cnBvc2VzICovCisgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbmFtZXNbXSA9IHsKKyAgICAiU1NIX1NUT1AiLAorICAgICJTU0hfSU5JVCIsCisgICAgIlNTSF9TX1NUQVJUVVAiLAorICAgICJTU0hfSE9TVEtFWSIsCisgICAgIlNTSF9BVVRITElTVCIsCisgICAgIlNTSF9BVVRIX1BLRVlfSU5JVCIsCisgICAgIlNTSF9BVVRIX1BLRVkiLAorICAgICJTU0hfQVVUSF9QQVNTX0lOSVQiLAorICAgICJTU0hfQVVUSF9QQVNTIiwKKyAgICAiU1NIX0FVVEhfQUdFTlRfSU5JVCIsCisgICAgIlNTSF9BVVRIX0FHRU5UX0xJU1QiLAorICAgICJTU0hfQVVUSF9BR0VOVCIsCisgICAgIlNTSF9BVVRIX0hPU1RfSU5JVCIsCisgICAgIlNTSF9BVVRIX0hPU1QiLAorICAgICJTU0hfQVVUSF9LRVlfSU5JVCIsCisgICAgIlNTSF9BVVRIX0tFWSIsCisgICAgIlNTSF9BVVRIX0dTU0FQSSIsCisgICAgIlNTSF9BVVRIX0RPTkUiLAorICAgICJTU0hfU0ZUUF9JTklUIiwKKyAgICAiU1NIX1NGVFBfUkVBTFBBVEgiLAorICAgICJTU0hfU0ZUUF9RVU9URV9JTklUIiwKKyAgICAiU1NIX1NGVFBfUE9TVFFVT1RFX0lOSVQiLAorICAgICJTU0hfU0ZUUF9RVU9URSIsCisgICAgIlNTSF9TRlRQX05FWFRfUVVPVEUiLAorICAgICJTU0hfU0ZUUF9RVU9URV9TVEFUIiwKKyAgICAiU1NIX1NGVFBfUVVPVEVfU0VUU1RBVCIsCisgICAgIlNTSF9TRlRQX1FVT1RFX1NZTUxJTksiLAorICAgICJTU0hfU0ZUUF9RVU9URV9NS0RJUiIsCisgICAgIlNTSF9TRlRQX1FVT1RFX1JFTkFNRSIsCisgICAgIlNTSF9TRlRQX1FVT1RFX1JNRElSIiwKKyAgICAiU1NIX1NGVFBfUVVPVEVfVU5MSU5LIiwKKyAgICAiU1NIX1NGVFBfUVVPVEVfU1RBVFZGUyIsCisgICAgIlNTSF9TRlRQX0dFVElORk8iLAorICAgICJTU0hfU0ZUUF9GSUxFVElNRSIsCisgICAgIlNTSF9TRlRQX1RSQU5TX0lOSVQiLAorICAgICJTU0hfU0ZUUF9VUExPQURfSU5JVCIsCisgICAgIlNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQiLAorICAgICJTU0hfU0ZUUF9DUkVBVEVfRElSUyIsCisgICAgIlNTSF9TRlRQX0NSRUFURV9ESVJTX01LRElSIiwKKyAgICAiU1NIX1NGVFBfUkVBRERJUl9JTklUIiwKKyAgICAiU1NIX1NGVFBfUkVBRERJUiIsCisgICAgIlNTSF9TRlRQX1JFQURESVJfTElOSyIsCisgICAgIlNTSF9TRlRQX1JFQURESVJfQk9UVE9NIiwKKyAgICAiU1NIX1NGVFBfUkVBRERJUl9ET05FIiwKKyAgICAiU1NIX1NGVFBfRE9XTkxPQURfSU5JVCIsCisgICAgIlNTSF9TRlRQX0RPV05MT0FEX1NUQVQiLAorICAgICJTU0hfU0ZUUF9DTE9TRSIsCisgICAgIlNTSF9TRlRQX1NIVVRET1dOIiwKKyAgICAiU1NIX1NDUF9UUkFOU19JTklUIiwKKyAgICAiU1NIX1NDUF9VUExPQURfSU5JVCIsCisgICAgIlNTSF9TQ1BfRE9XTkxPQURfSU5JVCIsCisgICAgIlNTSF9TQ1BfRE9XTkxPQUQiLAorICAgICJTU0hfU0NQX0RPTkUiLAorICAgICJTU0hfU0NQX1NFTkRfRU9GIiwKKyAgICAiU1NIX1NDUF9XQUlUX0VPRiIsCisgICAgIlNTSF9TQ1BfV0FJVF9DTE9TRSIsCisgICAgIlNTSF9TQ1BfQ0hBTk5FTF9GUkVFIiwKKyAgICAiU1NIX1NFU1NJT05fRElTQ09OTkVDVCIsCisgICAgIlNTSF9TRVNTSU9OX0ZSRUUiLAorICAgICJRVUlUIgorICB9OworCisgIC8qIGEgcHJlY2F1dGlvbiB0byBtYWtlIHN1cmUgdGhlIGxpc3RzIGFyZSBpbiBzeW5jICovCisgIERFQlVHQVNTRVJUKHNpemVvZihuYW1lcykvc2l6ZW9mKG5hbWVzWzBdKSA9PSBTU0hfTEFTVCk7CisKKyAgaWYoc3NoYy0+c3RhdGUgIT0gbm93c3RhdGUpIHsKKyAgICBpbmZvZihjb25uLT5kYXRhLCAid29sZnNzaCAlcCBzdGF0ZSBjaGFuZ2UgZnJvbSAlcyB0byAlc1xuIiwKKyAgICAgICAgICAodm9pZCAqKXNzaGMsIG5hbWVzW3NzaGMtPnN0YXRlXSwgbmFtZXNbbm93c3RhdGVdKTsKKyAgfQorI2VuZGlmCisKKyAgc3NoYy0+c3RhdGUgPSBub3dzdGF0ZTsKK30KKworc3RhdGljIHNzaXplX3Qgd3NjcF9zZW5kKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICptZW0sIHNpemVfdCBsZW4sIENVUkxjb2RlICplcnIpCit7CisgIHNzaXplX3QgbndyaXRlID0gMDsKKyAgKHZvaWQpY29ubjsKKyAgKHZvaWQpc29ja2luZGV4OyAvKiB3ZSBvbmx5IHN1cHBvcnQgU0NQIG9uIHRoZSBmaXhlZCBrbm93biBwcmltYXJ5IHNvY2tldCAqLworICAodm9pZCltZW07CisgICh2b2lkKWxlbjsKKyAgKHZvaWQpZXJyOworCisgIHJldHVybiBud3JpdGU7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHdzY3BfcmVjdihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbWVtLCBzaXplX3QgbGVuLCBDVVJMY29kZSAqZXJyKQoreworICBzc2l6ZV90IG5yZWFkID0gMDsKKyAgKHZvaWQpY29ubjsKKyAgKHZvaWQpc29ja2luZGV4OyAvKiB3ZSBvbmx5IHN1cHBvcnQgU0NQIG9uIHRoZSBmaXhlZCBrbm93biBwcmltYXJ5IHNvY2tldCAqLworICAodm9pZCltZW07CisgICh2b2lkKWxlbjsKKyAgKHZvaWQpZXJyOworCisgIHJldHVybiBucmVhZDsKK30KKworLyogcmV0dXJuIG51bWJlciBvZiBzZW50IGJ5dGVzICovCitzdGF0aWMgc3NpemVfdCB3c2Z0cF9zZW5kKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqbWVtLCBzaXplX3QgbGVuLCBDVVJMY29kZSAqZXJyKQoreworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKyAgd29yZDMyIG9mZnNldFsyXTsKKyAgaW50IHJjOworICAodm9pZClzb2NraW5kZXg7CisKKyAgb2Zmc2V0WzBdID0gICh3b3JkMzIpc3NoYy0+b2Zmc2V0JjB4RkZGRkZGRkY7CisgIG9mZnNldFsxXSA9ICAod29yZDMyKShzc2hjLT5vZmZzZXQ+PjMyKSYweEZGRkZGRkZGOworCisgIHJjID0gd29sZlNTSF9TRlRQX1NlbmRXcml0ZVBhY2tldChzc2hjLT5zc2hfc2Vzc2lvbiwgc3NoYy0+aGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+aGFuZGxlU3osCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2Zmc2V0WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUgKiltZW0sICh3b3JkMzIpbGVuKTsKKworICBpZihyYyA9PSBXU19GQVRBTF9FUlJPUikKKyAgICByYyA9IHdvbGZTU0hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKTsKKyAgaWYocmMgPT0gV1NfV0FOVF9SRUFEKSB7CisgICAgY29ubi0+d2FpdGZvciA9IEtFRVBfUkVDVjsKKyAgICAqZXJyID0gQ1VSTEVfQUdBSU47CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2UgaWYocmMgPT0gV1NfV0FOVF9XUklURSkgeworICAgIGNvbm4tPndhaXRmb3IgPSBLRUVQX1NFTkQ7CisgICAgKmVyciA9IENVUkxFX0FHQUlOOworICAgIHJldHVybiAtMTsKKyAgfQorICBpZihyYyA8IDApIHsKKyAgICBmYWlsZihjb25uLT5kYXRhLCAid29sZlNTSF9TRlRQX1NlbmRXcml0ZVBhY2tldCByZXR1cm5lZCAlZFxuIiwgcmMpOworICAgIHJldHVybiAtMTsKKyAgfQorICBERUJVR0FTU0VSVChyYyA9PSAoaW50KWxlbik7CisgIGluZm9mKGNvbm4tPmRhdGEsICJzZW50ICV6ZCBieXRlcyBTRlRQIGZyb20gb2Zmc2V0ICV6ZFxuIiwKKyAgICAgICAgbGVuLCBzc2hjLT5vZmZzZXQpOworICBzc2hjLT5vZmZzZXQgKz0gbGVuOworICByZXR1cm4gKHNzaXplX3QpcmM7Cit9CisKKy8qCisgKiBSZXR1cm4gbnVtYmVyIG9mIHJlY2VpdmVkIChkZWNyeXB0ZWQpIGJ5dGVzCisgKiBvciA8MCBvbiBlcnJvcgorICovCitzdGF0aWMgc3NpemVfdCB3c2Z0cF9yZWN2KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbWVtLCBzaXplX3QgbGVuLCBDVVJMY29kZSAqZXJyKQoreworICBpbnQgcmM7CisgIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOworICB3b3JkMzIgb2Zmc2V0WzJdOworICAodm9pZClzb2NraW5kZXg7CisKKyAgb2Zmc2V0WzBdID0gICh3b3JkMzIpc3NoYy0+b2Zmc2V0JjB4RkZGRkZGRkY7CisgIG9mZnNldFsxXSA9ICAod29yZDMyKShzc2hjLT5vZmZzZXQ+PjMyKSYweEZGRkZGRkZGOworCisgIHJjID0gd29sZlNTSF9TRlRQX1NlbmRSZWFkUGFja2V0KHNzaGMtPnNzaF9zZXNzaW9uLCBzc2hjLT5oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPmhhbmRsZVN6LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2Zmc2V0WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSAqKW1lbSwgKHdvcmQzMilsZW4pOworICBpZihyYyA9PSBXU19GQVRBTF9FUlJPUikKKyAgICByYyA9IHdvbGZTU0hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKTsKKyAgaWYocmMgPT0gV1NfV0FOVF9SRUFEKSB7CisgICAgY29ubi0+d2FpdGZvciA9IEtFRVBfUkVDVjsKKyAgICAqZXJyID0gQ1VSTEVfQUdBSU47CisgICAgcmV0dXJuIC0xOworICB9CisgIGVsc2UgaWYocmMgPT0gV1NfV0FOVF9XUklURSkgeworICAgIGNvbm4tPndhaXRmb3IgPSBLRUVQX1NFTkQ7CisgICAgKmVyciA9IENVUkxFX0FHQUlOOworICAgIHJldHVybiAtMTsKKyAgfQorCisgIERFQlVHQVNTRVJUKHJjIDw9IChpbnQpbGVuKTsKKworICBpZihyYyA8IDApIHsKKyAgICBmYWlsZihjb25uLT5kYXRhLCAid29sZlNTSF9TRlRQX1NlbmRSZWFkUGFja2V0IHJldHVybmVkICVkXG4iLCByYyk7CisgICAgcmV0dXJuIC0xOworICB9CisgIHNzaGMtPm9mZnNldCArPSBsZW47CisKKyAgcmV0dXJuIChzc2l6ZV90KXJjOworfQorCisvKgorICogU1NIIHNldHVwIGFuZCBjb25uZWN0aW9uCisgKi8KK3N0YXRpYyBDVVJMY29kZSB3c3NoX3NldHVwX2Nvbm5lY3Rpb24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQoreworICBzdHJ1Y3QgU1NIUFJPVE8gKnNzaDsKKworICBjb25uLT5kYXRhLT5yZXEucHJvdG9wID0gc3NoID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgU1NIUFJPVE8pKTsKKyAgaWYoIXNzaCkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3N0YXRpYyBDdXJsX3JlY3Ygd3NjcF9yZWN2LCB3c2Z0cF9yZWN2Oworc3RhdGljIEN1cmxfc2VuZCB3c2NwX3NlbmQsIHdzZnRwX3NlbmQ7CisKK3N0YXRpYyBpbnQgdXNlcmF1dGgoYnl0ZSBhdXRodHlwZSwKKyAgICAgICAgICAgICAgICAgICAgV1NfVXNlckF1dGhEYXRhKiBhdXRoZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgdm9pZCAqY3R4KQoreworICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSBjdHg7CisgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAid29sZnNzaCBjYWxsYmFjazogdHlwZSAlc1xuIiwKKyAgICAgICAgICAgICAgIGF1dGh0eXBlID09IFdPTEZTU0hfVVNFUkFVVEhfUEFTU1dPUkQgPyAiUEFTU1dPUkQiIDoKKyAgICAgICAgICAgICAgICJQVUJMSUNDS0VZIikpOworICBpZihhdXRodHlwZSA9PSBXT0xGU1NIX1VTRVJBVVRIX1BBU1NXT1JEKSB7CisgICAgYXV0aGRhdGEtPnNmLnBhc3N3b3JkLnBhc3N3b3JkID0gKGJ5dGUgKiljb25uLT5wYXNzd2Q7CisgICAgYXV0aGRhdGEtPnNmLnBhc3N3b3JkLnBhc3N3b3JkU3ogPSAod29yZDMyKSBzdHJsZW4oY29ubi0+cGFzc3dkKTsKKyAgfQorCisgIHJldHVybiAwOworfQorCitzdGF0aWMgQ1VSTGNvZGUgd3NzaF9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSkKK3sKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBzc2hfY29ubiAqc3NoYzsKKyAgY3VybF9zb2NrZXRfdCBzb2NrID0gY29ubi0+c29ja1tGSVJTVFNPQ0tFVF07CisgIGludCByYzsKKworICAvKiBpbml0aWFsaXplIHBlci1oYW5kbGUgZGF0YSBpZiBub3QgYWxyZWFkeSAqLworICBpZighZGF0YS0+cmVxLnByb3RvcCkKKyAgICB3c3NoX3NldHVwX2Nvbm5lY3Rpb24oY29ubik7CisKKyAgLyogV2UgZGVmYXVsdCB0byBwZXJzaXN0ZW50IGNvbm5lY3Rpb25zLiBXZSBzZXQgdGhpcyBhbHJlYWR5IGluIHRoaXMgY29ubmVjdAorICAgICBmdW5jdGlvbiB0byBtYWtlIHRoZSByZS11c2UgY2hlY2tzIHByb3Blcmx5IGJlIGFibGUgdG8gY2hlY2sgdGhpcyBiaXQuICovCisgIGNvbm5rZWVwKGNvbm4sICJTU0ggZGVmYXVsdCIpOworCisgIGlmKGNvbm4tPmhhbmRsZXItPnByb3RvY29sICYgQ1VSTFBST1RPX1NDUCkgeworICAgIGNvbm4tPnJlY3ZbRklSU1RTT0NLRVRdID0gd3NjcF9yZWN2OworICAgIGNvbm4tPnNlbmRbRklSU1RTT0NLRVRdID0gd3NjcF9zZW5kOworICB9CisgIGVsc2UgeworICAgIGNvbm4tPnJlY3ZbRklSU1RTT0NLRVRdID0gd3NmdHBfcmVjdjsKKyAgICBjb25uLT5zZW5kW0ZJUlNUU09DS0VUXSA9IHdzZnRwX3NlbmQ7CisgIH0KKyAgc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOworICBzc2hjLT5jdHggPSB3b2xmU1NIX0NUWF9uZXcoV09MRlNTSF9FTkRQT0lOVF9DTElFTlQsIE5VTEwpOworICBpZighc3NoYy0+Y3R4KSB7CisgICAgZmFpbGYoZGF0YSwgIk5vIHdvbGZTU0ggY29udGV4dCIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBzc2hjLT5zc2hfc2Vzc2lvbiA9IHdvbGZTU0hfbmV3KHNzaGMtPmN0eCk7CisgIGlmKHNzaGMtPnNzaF9zZXNzaW9uID09IE5VTEwpIHsKKyAgICBmYWlsZihkYXRhLCAiTm8gd29sZlNTSCBzZXNzaW9uIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIHJjID0gd29sZlNTSF9TZXRVc2VybmFtZShzc2hjLT5zc2hfc2Vzc2lvbiwgY29ubi0+dXNlcik7CisgIGlmKHJjICE9IFdTX1NVQ0NFU1MpIHsKKyAgICBmYWlsZihkYXRhLCAid29sZlNTSCBmYWlsZWQgdG8gc2V0IHVzZXIgbmFtZSIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICAvKiBzZXQgY2FsbGJhY2sgZm9yIGF1dGhlbnRpY2F0aW9uICovCisgIHdvbGZTU0hfU2V0VXNlckF1dGgoc3NoYy0+Y3R4LCB1c2VyYXV0aCk7CisgIHdvbGZTU0hfU2V0VXNlckF1dGhDdHgoc3NoYy0+c3NoX3Nlc3Npb24sIGNvbm4pOworCisgIHJjID0gd29sZlNTSF9zZXRfZmQoc3NoYy0+c3NoX3Nlc3Npb24sIChpbnQpc29jayk7CisgIGlmKHJjKSB7CisgICAgZmFpbGYoZGF0YSwgIndvbGZTU0ggZmFpbGVkIHRvIHNldCBzb2NrZXQiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyNpZiAwCisgIHdvbGZTU0hfRGVidWdnaW5nX09OKCk7CisjZW5kaWYKKworICAqZG9uZSA9IFRSVUU7CisgIGlmKGNvbm4tPmhhbmRsZXItPnByb3RvY29sICYgQ1VSTFBST1RPX1NDUCkKKyAgICBzdGF0ZShjb25uLCBTU0hfSU5JVCk7CisgIGVsc2UKKyAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9JTklUKTsKKworICByZXR1cm4gd3NzaF9tdWx0aV9zdGF0ZW1hY2goY29ubiwgZG9uZSk7CisgIGVycm9yOgorICB3b2xmU1NIX2ZyZWUoc3NoYy0+c3NoX3Nlc3Npb24pOworICB3b2xmU1NIX0NUWF9mcmVlKHNzaGMtPmN0eCk7CisgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKK30KKworLyoKKyAqIHdzc2hfc3RhdGVtYWNoX2FjdCgpIHJ1bnMgdGhlIFNTSCBzdGF0ZSBtYWNoaW5lIGFzIGZhciBhcyBpdCBjYW4gd2l0aG91dAorICogYmxvY2tpbmcgYW5kIHdpdGhvdXQgcmVhY2hpbmcgdGhlIGVuZC4gIFRoZSBkYXRhIHRoZSBwb2ludGVyICdibG9jaycgcG9pbnRzCisgKiB0byB3aWxsIGJlIHNldCB0byBUUlVFIGlmIHRoZSB3b2xmc3NoIGZ1bmN0aW9uIHJldHVybnMgRUFHQUlOIG1lYW5pbmcgaXQKKyAqIHdhbnRzIHRvIGJlIGNhbGxlZCBhZ2FpbiB3aGVuIHRoZSBzb2NrZXQgaXMgcmVhZHkKKyAqLworCitzdGF0aWMgQ1VSTGNvZGUgd3NzaF9zdGF0ZW1hY2hfYWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqYmxvY2spCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBzdHJ1Y3Qgc3NoX2Nvbm4gKnNzaGMgPSAmY29ubi0+cHJvdG8uc3NoYzsKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBTU0hQUk9UTyAqc2Z0cF9zY3AgPSBkYXRhLT5yZXEucHJvdG9wOworICBXU19TRlRQTkFNRSAqbmFtZTsKKyAgaW50IHJjID0gMDsKKyAgKmJsb2NrID0gRkFMU0U7IC8qIHdlJ3JlIG5vdCBibG9ja2luZyBieSBkZWZhdWx0ICovCisKKyAgZG8geworICAgIHN3aXRjaChzc2hjLT5zdGF0ZSkgeworICAgIGNhc2UgU1NIX0lOSVQ6CisgICAgICBzdGF0ZShjb25uLCBTU0hfU19TVEFSVFVQKTsKKyAgICAgIC8qIEZBTExUSFJPVUdIICovCisgICAgY2FzZSBTU0hfU19TVEFSVFVQOgorICAgICAgcmMgPSB3b2xmU1NIX2Nvbm5lY3Qoc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgaWYocmMgIT0gV1NfU1VDQ0VTUykKKyAgICAgICAgcmMgPSB3b2xmU1NIX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbik7CisgICAgICBpZihyYyA9PSBXU19XQU5UX1JFQUQpIHsKKyAgICAgICAgKmJsb2NrID0gVFJVRTsKKyAgICAgICAgY29ubi0+d2FpdGZvciA9IEtFRVBfUkVDVjsKKyAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgfQorICAgICAgZWxzZSBpZihyYyA9PSBXU19XQU5UX1dSSVRFKSB7CisgICAgICAgICpibG9jayA9IFRSVUU7CisgICAgICAgIGNvbm4tPndhaXRmb3IgPSBLRUVQX1NFTkQ7CisgICAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYocmMgIT0gV1NfU1VDQ0VTUykgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICAgIHJldHVybiBDVVJMRV9TU0g7CisgICAgICB9CisgICAgICBpbmZvZihkYXRhLCAid29sZnNzaCBjb25uZWN0ZWQhXG4iKTsKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgU1NIX1NUT1A6CisgICAgICBicmVhazsKKworICAgIGNhc2UgU1NIX1NGVFBfSU5JVDoKKyAgICAgIHJjID0gd29sZlNTSF9TRlRQX2Nvbm5lY3Qoc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgaWYocmMgIT0gV1NfU1VDQ0VTUykKKyAgICAgICAgcmMgPSB3b2xmU1NIX2dldF9lcnJvcihzc2hjLT5zc2hfc2Vzc2lvbik7CisgICAgICBpZihyYyA9PSBXU19XQU5UX1JFQUQpIHsKKyAgICAgICAgKmJsb2NrID0gVFJVRTsKKyAgICAgICAgY29ubi0+d2FpdGZvciA9IEtFRVBfUkVDVjsKKyAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgfQorICAgICAgZWxzZSBpZihyYyA9PSBXU19XQU5UX1dSSVRFKSB7CisgICAgICAgICpibG9jayA9IFRSVUU7CisgICAgICAgIGNvbm4tPndhaXRmb3IgPSBLRUVQX1NFTkQ7CisgICAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYocmMgPT0gV1NfU1VDQ0VTUykgeworICAgICAgICBpbmZvZihkYXRhLCAid29sZnNzaCBTRlRQIGNvbm5lY3RlZCFcbiIpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9SRUFMUEFUSCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgIndvbGZzc2ggU0ZUUCBjb25uZWN0IGVycm9yICVkIiwgcmMpOworICAgICAgICByZXR1cm4gQ1VSTEVfU1NIOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBTU0hfU0ZUUF9SRUFMUEFUSDoKKyAgICAgIG5hbWUgPSB3b2xmU1NIX1NGVFBfUmVhbFBhdGgoc3NoYy0+c3NoX3Nlc3Npb24sIChjaGFyICopIi4iKTsKKyAgICAgIHJjID0gd29sZlNTSF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgaWYocmMgPT0gV1NfV0FOVF9SRUFEKSB7CisgICAgICAgICpibG9jayA9IFRSVUU7CisgICAgICAgIGNvbm4tPndhaXRmb3IgPSBLRUVQX1JFQ1Y7CisgICAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYocmMgPT0gV1NfV0FOVF9XUklURSkgeworICAgICAgICAqYmxvY2sgPSBUUlVFOworICAgICAgICBjb25uLT53YWl0Zm9yID0gS0VFUF9TRU5EOworICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgICB9CisgICAgICBlbHNlIGlmKG5hbWUgJiYgKHJjID09IFdTX1NVQ0NFU1MpKSB7CisgICAgICAgIHNzaGMtPmhvbWVkaXIgPSBtYWxsb2MobmFtZS0+ZlN6ICsgMSk7CisgICAgICAgIGlmKCFzc2hjLT5ob21lZGlyKSB7CisgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgbWVtY3B5KHNzaGMtPmhvbWVkaXIsIG5hbWUtPmZOYW1lLCBuYW1lLT5mU3opOworICAgICAgICAgIHNzaGMtPmhvbWVkaXJbbmFtZS0+ZlN6XSA9IDA7CisgICAgICAgICAgaW5mb2YoZGF0YSwgIndvbGZzc2ggU0ZUUCByZWFscGF0aCBzdWNjZWVkZWQhXG4iKTsKKyAgICAgICAgfQorICAgICAgICB3b2xmU1NIX1NGVFBOQU1FX2xpc3RfZnJlZShuYW1lKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOworICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgICB9CisgICAgICBmYWlsZihkYXRhLCAid29sZnNzaCBTRlRQIHJlYWxwYXRoICVkIiwgcmMpOworICAgICAgcmV0dXJuIENVUkxFX1NTSDsKKworICAgIGNhc2UgU1NIX1NGVFBfUVVPVEVfSU5JVDoKKyAgICAgIHJlc3VsdCA9IEN1cmxfZ2V0d29ya2luZ3BhdGgoY29ubiwgc3NoYy0+aG9tZWRpciwgJnNmdHBfc2NwLT5wYXRoKTsKKyAgICAgIGlmKHJlc3VsdCkgeworICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZihkYXRhLT5zZXQucXVvdGUpIHsKKyAgICAgICAgaW5mb2YoZGF0YSwgIlNlbmRpbmcgcXVvdGUgY29tbWFuZHNcbiIpOworICAgICAgICBzc2hjLT5xdW90ZV9pdGVtID0gZGF0YS0+c2V0LnF1b3RlOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfR0VUSU5GTyk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFNTSF9TRlRQX0dFVElORk86CisgICAgICBpZihkYXRhLT5zZXQuZ2V0X2ZpbGV0aW1lKSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0ZJTEVUSU1FKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9UUkFOU19JTklUKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgU1NIX1NGVFBfVFJBTlNfSU5JVDoKKyAgICAgIGlmKGRhdGEtPnNldC51cGxvYWQpCisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1VQTE9BRF9JTklUKTsKKyAgICAgIGVsc2UgeworICAgICAgICBpZihzZnRwX3NjcC0+cGF0aFtzdHJsZW4oc2Z0cF9zY3AtPnBhdGgpLTFdID09ICcvJykKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9SRUFERElSX0lOSVQpOworICAgICAgICBlbHNlCisgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfRE9XTkxPQURfSU5JVCk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFNTSF9TRlRQX1VQTE9BRF9JTklUOiB7CisgICAgICB3b3JkMzIgZmxhZ3M7CisgICAgICBXU19TRlRQX0ZJTEVBVFJCIGNyZWF0ZWF0dHJzOworICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20pIHsKKyAgICAgICAgV1NfU0ZUUF9GSUxFQVRSQiBhdHRyczsKKyAgICAgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPCAwKSB7CisgICAgICAgICAgcmMgPSB3b2xmU1NIX1NGVFBfU1RBVChzc2hjLT5zc2hfc2Vzc2lvbiwgc2Z0cF9zY3AtPnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXR0cnMpOworICAgICAgICAgIGlmKHJjICE9IFdTX1NVQ0NFU1MpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGlmKHJjKSB7CisgICAgICAgICAgICBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA9IDA7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY3VybF9vZmZfdCBzaXplID0gKChjdXJsX29mZl90KWF0dHJzLnN6WzFdIDw8IDMyKSB8IGF0dHJzLnN6WzBdOworICAgICAgICAgICAgaWYoc2l6ZSA8IDApIHsKKyAgICAgICAgICAgICAgZmFpbGYoZGF0YSwgIkJhZCBmaWxlIHNpemUgKCUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIikiLCBzaXplKTsKKyAgICAgICAgICAgICAgcmV0dXJuIENVUkxFX0JBRF9ET1dOTE9BRF9SRVNVTUU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA9IHNpemU7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmKGRhdGEtPnNldC5mdHBfYXBwZW5kKQorICAgICAgICAvKiBUcnkgdG8gb3BlbiBmb3IgYXBwZW5kLCBidXQgY3JlYXRlIGlmIG5vbmV4aXN0aW5nICovCisgICAgICAgIGZsYWdzID0gV09MRlNTSF9GWEZfV1JJVEV8V09MRlNTSF9GWEZfQ1JFQVR8V09MRlNTSF9GWEZfQVBQRU5EOworICAgICAgZWxzZSBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA+IDApCisgICAgICAgIC8qIElmIHdlIGhhdmUgcmVzdGFydCBwb3NpdGlvbiB0aGVuIG9wZW4gZm9yIGFwcGVuZCAqLworICAgICAgICBmbGFncyA9IFdPTEZTU0hfRlhGX1dSSVRFfFdPTEZTU0hfRlhGX0FQUEVORDsKKyAgICAgIGVsc2UKKyAgICAgICAgLyogQ2xlYXIgZmlsZSBiZWZvcmUgd3JpdGluZyAobm9ybWFsIGJlaGF2aW91cikgKi8KKyAgICAgICAgZmxhZ3MgPSBXT0xGU1NIX0ZYRl9XUklURXxXT0xGU1NIX0ZYRl9DUkVBVHxXT0xGU1NIX0ZYRl9UUlVOQzsKKworICAgICAgbWVtc2V0KCZjcmVhdGVhdHRycywgMCwgc2l6ZW9mKGNyZWF0ZWF0dHJzKSk7CisgICAgICBjcmVhdGVhdHRycy5wZXIgPSAod29yZDMyKWRhdGEtPnNldC5uZXdfZmlsZV9wZXJtczsKKyAgICAgIHNzaGMtPmhhbmRsZVN6ID0gc2l6ZW9mKHNzaGMtPmhhbmRsZSk7CisgICAgICByYyA9IHdvbGZTU0hfU0ZUUF9PcGVuKHNzaGMtPnNzaF9zZXNzaW9uLCBzZnRwX3NjcC0+cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MsICZjcmVhdGVhdHRycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+aGFuZGxlLCAmc3NoYy0+aGFuZGxlU3opOworICAgICAgaWYocmMgPT0gV1NfRkFUQUxfRVJST1IpCisgICAgICAgIHJjID0gd29sZlNTSF9nZXRfZXJyb3Ioc3NoYy0+c3NoX3Nlc3Npb24pOworICAgICAgaWYocmMgPT0gV1NfV0FOVF9SRUFEKSB7CisgICAgICAgICpibG9jayA9IFRSVUU7CisgICAgICAgIGNvbm4tPndhaXRmb3IgPSBLRUVQX1JFQ1Y7CisgICAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYocmMgPT0gV1NfV0FOVF9XUklURSkgeworICAgICAgICAqYmxvY2sgPSBUUlVFOworICAgICAgICBjb25uLT53YWl0Zm9yID0gS0VFUF9TRU5EOworICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgICB9CisgICAgICBlbHNlIGlmKHJjID09IFdTX1NVQ0NFU1MpIHsKKyAgICAgICAgaW5mb2YoZGF0YSwgIndvbGZzc2ggU0ZUUCBvcGVuIHN1Y2NlZWRlZCFcbiIpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGZhaWxmKGRhdGEsICJ3b2xmc3NoIFNGVFAgdXBsb2FkIG9wZW4gZmFpbGVkOiAlZCIsIHJjKTsKKyAgICAgICAgcmV0dXJuIENVUkxFX1NTSDsKKyAgICAgIH0KKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0RPV05MT0FEX1NUQVQpOworCisgICAgICAvKiBJZiB3ZSBoYXZlIGEgcmVzdGFydCBwb2ludCB0aGVuIHdlIG5lZWQgdG8gc2VlayB0byB0aGUgY29ycmVjdAorICAgICAgICAgcG9zaXRpb24uICovCisgICAgICBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA+IDApIHsKKyAgICAgICAgLyogTGV0J3MgcmVhZCBvZmYgdGhlIHByb3BlciBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgaW5wdXQuICovCisgICAgICAgIGludCBzZWVrZXJyID0gQ1VSTF9TRUVLRlVOQ19PSzsKKyAgICAgICAgaWYoY29ubi0+c2Vla19mdW5jKSB7CisgICAgICAgICAgQ3VybF9zZXRfaW5fY2FsbGJhY2soZGF0YSwgdHJ1ZSk7CisgICAgICAgICAgc2Vla2VyciA9IGNvbm4tPnNlZWtfZnVuYyhjb25uLT5zZWVrX2NsaWVudCwgZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUVLX1NFVCk7CisgICAgICAgICAgQ3VybF9zZXRfaW5fY2FsbGJhY2soZGF0YSwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgaWYoc2Vla2VyciAhPSBDVVJMX1NFRUtGVU5DX09LKSB7CisgICAgICAgICAgY3VybF9vZmZfdCBwYXNzZWQgPSAwOworCisgICAgICAgICAgaWYoc2Vla2VyciAhPSBDVVJMX1NFRUtGVU5DX0NBTlRTRUVLKSB7CisgICAgICAgICAgICBmYWlsZihkYXRhLCAiQ291bGQgbm90IHNlZWsgc3RyZWFtIik7CisgICAgICAgICAgICByZXR1cm4gQ1VSTEVfRlRQX0NPVUxETlRfVVNFX1JFU1Q7CisgICAgICAgICAgfQorICAgICAgICAgIC8qIHNlZWtlcnIgPT0gQ1VSTF9TRUVLRlVOQ19DQU5UU0VFSyAoY2FuJ3Qgc2VlayB0byBvZmZzZXQpICovCisgICAgICAgICAgZG8geworICAgICAgICAgICAgc2l6ZV90IHJlYWR0aGlzYW1vdW50bm93ID0KKyAgICAgICAgICAgICAgKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tIC0gcGFzc2VkID4gZGF0YS0+c2V0LmJ1ZmZlcl9zaXplKSA/CisgICAgICAgICAgICAgIChzaXplX3QpZGF0YS0+c2V0LmJ1ZmZlcl9zaXplIDoKKyAgICAgICAgICAgICAgY3VybHhfc290b3V6KGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tIC0gcGFzc2VkKTsKKworICAgICAgICAgICAgc2l6ZV90IGFjdHVhbGx5cmVhZDsKKyAgICAgICAgICAgIEN1cmxfc2V0X2luX2NhbGxiYWNrKGRhdGEsIHRydWUpOworICAgICAgICAgICAgYWN0dWFsbHlyZWFkID0gZGF0YS0+c3RhdGUuZnJlYWRfZnVuYyhkYXRhLT5zdGF0ZS5idWZmZXIsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWR0aGlzYW1vdW50bm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5pbik7CisgICAgICAgICAgICBDdXJsX3NldF9pbl9jYWxsYmFjayhkYXRhLCBmYWxzZSk7CisKKyAgICAgICAgICAgIHBhc3NlZCArPSBhY3R1YWxseXJlYWQ7CisgICAgICAgICAgICBpZigoYWN0dWFsbHlyZWFkID09IDApIHx8IChhY3R1YWxseXJlYWQgPiByZWFkdGhpc2Ftb3VudG5vdykpIHsKKyAgICAgICAgICAgICAgLyogdGhpcyBjaGVja3MgZm9yIGdyZWF0ZXItdGhhbiBvbmx5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQorICAgICAgICAgICAgICAgICBDVVJMX1JFQURGVU5DX0FCT1JUIHJldHVybiBjb2RlIHN0aWxsIGFib3J0cyAqLworICAgICAgICAgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIHRvIHJlYWQgZGF0YSIpOworICAgICAgICAgICAgICByZXR1cm4gQ1VSTEVfRlRQX0NPVUxETlRfVVNFX1JFU1Q7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSB3aGlsZShwYXNzZWQgPCBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSk7CisgICAgICAgIH0KKworICAgICAgICAvKiBub3csIGRlY3JlYXNlIHRoZSBzaXplIG9mIHRoZSByZWFkICovCisgICAgICAgIGlmKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgPiAwKSB7CisgICAgICAgICAgZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSAtPSBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbTsKKyAgICAgICAgICBkYXRhLT5yZXEuc2l6ZSA9IGRhdGEtPnN0YXRlLmluZmlsZXNpemU7CisgICAgICAgICAgQ3VybF9wZ3JzU2V0VXBsb2FkU2l6ZShkYXRhLCBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplKTsKKyAgICAgICAgfQorCisgICAgICAgIHNzaGMtPm9mZnNldCArPSBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbTsKKyAgICAgIH0KKyAgICAgIGlmKGRhdGEtPnN0YXRlLmluZmlsZXNpemUgPiAwKSB7CisgICAgICAgIGRhdGEtPnJlcS5zaXplID0gZGF0YS0+c3RhdGUuaW5maWxlc2l6ZTsKKyAgICAgICAgQ3VybF9wZ3JzU2V0VXBsb2FkU2l6ZShkYXRhLCBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplKTsKKyAgICAgIH0KKyAgICAgIC8qIHVwbG9hZCBkYXRhICovCisgICAgICBDdXJsX3NldHVwX3RyYW5zZmVyKGRhdGEsIC0xLCAtMSwgRkFMU0UsIEZJUlNUU09DS0VUKTsKKworICAgICAgLyogbm90IHNldCBieSBDdXJsX3NldHVwX3RyYW5zZmVyIHRvIHByZXNlcnZlIGtlZXBvbiBiaXRzICovCisgICAgICBjb25uLT5zb2NrZmQgPSBjb25uLT53cml0ZXNvY2tmZDsKKworICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICAvKiBzdG9yZSB0aGlzIG9yaWdpbmFsIGJpdG1hc2sgc2V0dXAgdG8gdXNlIGxhdGVyIG9uIGlmIHdlIGNhbid0CisgICAgICAgICAgIGZpZ3VyZSBvdXQgYSAicmVhbCIgYml0bWFzayAqLworICAgICAgICBzc2hjLT5vcmlnX3dhaXRmb3IgPSBkYXRhLT5yZXEua2VlcG9uOworCisgICAgICAgIC8qIHdlIHdhbnQgdG8gdXNlIHRoZSBfc2VuZGluZ18gZnVuY3Rpb24gZXZlbiB3aGVuIHRoZSBzb2NrZXQgdHVybnMKKyAgICAgICAgICAgb3V0IHJlYWRhYmxlIGFzIHRoZSB1bmRlcmx5aW5nIGxpYnNzaDIgc2Z0cCBzZW5kIGZ1bmN0aW9uIHdpbGwgZGVhbAorICAgICAgICAgICB3aXRoIGJvdGggYWNjb3JkaW5nbHkgKi8KKyAgICAgICAgY29ubi0+Y3NlbGVjdF9iaXRzID0gQ1VSTF9DU0VMRUNUX09VVDsKKworICAgICAgICAvKiBzaW5jZSB3ZSBkb24ndCByZWFsbHkgd2FpdCBmb3IgYW55dGhpbmcgYXQgdGhpcyBwb2ludCwgd2Ugd2FudCB0aGUKKyAgICAgICAgICAgc3RhdGUgbWFjaGluZSB0byBtb3ZlIG9uIGFzIHNvb24gYXMgcG9zc2libGUgc28gd2Ugc2V0IGEgdmVyeSBzaG9ydAorICAgICAgICAgICB0aW1lb3V0IGhlcmUgKi8KKyAgICAgICAgQ3VybF9leHBpcmUoZGF0YSwgMCwgRVhQSVJFX1JVTl9OT1cpOworCisgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFNTSF9TRlRQX0RPV05MT0FEX0lOSVQ6CisgICAgICBzc2hjLT5oYW5kbGVTeiA9IHNpemVvZihzc2hjLT5oYW5kbGUpOworICAgICAgcmMgPSB3b2xmU1NIX1NGVFBfT3Blbihzc2hjLT5zc2hfc2Vzc2lvbiwgc2Z0cF9zY3AtPnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdPTEZTU0hfRlhGX1JFQUQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGMtPmhhbmRsZSwgJnNzaGMtPmhhbmRsZVN6KTsKKyAgICAgIGlmKHJjID09IFdTX0ZBVEFMX0VSUk9SKQorICAgICAgICByYyA9IHdvbGZTU0hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKTsKKyAgICAgIGlmKHJjID09IFdTX1dBTlRfUkVBRCkgeworICAgICAgICAqYmxvY2sgPSBUUlVFOworICAgICAgICBjb25uLT53YWl0Zm9yID0gS0VFUF9SRUNWOworICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgICB9CisgICAgICBlbHNlIGlmKHJjID09IFdTX1dBTlRfV1JJVEUpIHsKKyAgICAgICAgKmJsb2NrID0gVFJVRTsKKyAgICAgICAgY29ubi0+d2FpdGZvciA9IEtFRVBfU0VORDsKKyAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgfQorICAgICAgZWxzZSBpZihyYyA9PSBXU19TVUNDRVNTKSB7CisgICAgICAgIGluZm9mKGRhdGEsICJ3b2xmc3NoIFNGVFAgb3BlbiBzdWNjZWVkZWQhXG4iKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfRE9XTkxPQURfU1RBVCk7CisgICAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICAgIH0KKworICAgICAgZmFpbGYoZGF0YSwgIndvbGZzc2ggU0ZUUCBvcGVuIGZhaWxlZDogJWQiLCByYyk7CisgICAgICByZXR1cm4gQ1VSTEVfU1NIOworCisgICAgY2FzZSBTU0hfU0ZUUF9ET1dOTE9BRF9TVEFUOiB7CisgICAgICBXU19TRlRQX0ZJTEVBVFJCIGF0dHJzOworICAgICAgY3VybF9vZmZfdCBzaXplOworCisgICAgICByYyA9IHdvbGZTU0hfU0ZUUF9TVEFUKHNzaGMtPnNzaF9zZXNzaW9uLCBzZnRwX3NjcC0+cGF0aCwgJmF0dHJzKTsKKyAgICAgIGlmKHJjID09IFdTX0ZBVEFMX0VSUk9SKQorICAgICAgICByYyA9IHdvbGZTU0hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKTsKKyAgICAgIGlmKHJjID09IFdTX1dBTlRfUkVBRCkgeworICAgICAgICAqYmxvY2sgPSBUUlVFOworICAgICAgICBjb25uLT53YWl0Zm9yID0gS0VFUF9SRUNWOworICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgICB9CisgICAgICBlbHNlIGlmKHJjID09IFdTX1dBTlRfV1JJVEUpIHsKKyAgICAgICAgKmJsb2NrID0gVFJVRTsKKyAgICAgICAgY29ubi0+d2FpdGZvciA9IEtFRVBfU0VORDsKKyAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgfQorICAgICAgZWxzZSBpZihyYyA9PSBXU19TVUNDRVNTKSB7CisgICAgICAgIGluZm9mKGRhdGEsICJ3b2xmc3NoIFNUQVQgc3VjY2VlZGVkIVxuIik7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgIndvbGZzc2ggU0ZUUCBvcGVuIGZhaWxlZDogJWQiLCByYyk7CisgICAgICAgIGRhdGEtPnJlcS5zaXplID0gLTE7CisgICAgICAgIGRhdGEtPnJlcS5tYXhkb3dubG9hZCA9IC0xOworICAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgLTEpOworICAgICAgICByZXR1cm4gQ1VSTEVfU1NIOworICAgICAgfQorCisgICAgICBzaXplID0gKChjdXJsX29mZl90KWF0dHJzLnN6WzFdIDw8MzIpIHwgYXR0cnMuc3pbMF07CisKKyAgICAgIGRhdGEtPnJlcS5zaXplID0gc2l6ZTsKKyAgICAgIGRhdGEtPnJlcS5tYXhkb3dubG9hZCA9IHNpemU7CisgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgc2l6ZSk7CisKKyAgICAgIGluZm9mKGRhdGEsICJTRlRQIGRvd25sb2FkICUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QgIiBieXRlc1xuIiwgc2l6ZSk7CisKKyAgICAgIC8qIFdlIGNhbm5vdCBzZWVrIHdpdGggd29sZlNTSCBzbyByZXN1bWluZyBhbmQgcmFuZ2UgcmVxdWVzdHMgYXJlIG5vdAorICAgICAgICAgcG9zc2libGUgKi8KKyAgICAgIGlmKGNvbm4tPmRhdGEtPnN0YXRlLnVzZV9yYW5nZSB8fCBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSkgeworICAgICAgICBpbmZvZihkYXRhLCAid29sZlNTSCBjYW5ub3QgZG8gcmFuZ2Uvc2VlayBvbiBTRlRQXG4iKTsKKyAgICAgICAgcmV0dXJuIENVUkxFX0JBRF9ET1dOTE9BRF9SRVNVTUU7CisgICAgICB9CisKKyAgICAgIC8qIFNldHVwIHRoZSBhY3R1YWwgZG93bmxvYWQgKi8KKyAgICAgIGlmKGRhdGEtPnJlcS5zaXplID09IDApIHsKKyAgICAgICAgLyogbm8gZGF0YSB0byB0cmFuc2ZlciAqLworICAgICAgICBDdXJsX3NldHVwX3RyYW5zZmVyKGRhdGEsIC0xLCAtMSwgRkFMU0UsIC0xKTsKKyAgICAgICAgaW5mb2YoZGF0YSwgIkZpbGUgYWxyZWFkeSBjb21wbGV0ZWx5IGRvd25sb2FkZWRcbiIpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgQ3VybF9zZXR1cF90cmFuc2ZlcihkYXRhLCBGSVJTVFNPQ0tFVCwgZGF0YS0+cmVxLnNpemUsIEZBTFNFLCAtMSk7CisKKyAgICAgIC8qIG5vdCBzZXQgYnkgQ3VybF9zZXR1cF90cmFuc2ZlciB0byBwcmVzZXJ2ZSBrZWVwb24gYml0cyAqLworICAgICAgY29ubi0+d3JpdGVzb2NrZmQgPSBjb25uLT5zb2NrZmQ7CisKKyAgICAgIC8qIHdlIHdhbnQgdG8gdXNlIHRoZSBfcmVjZWl2aW5nXyBmdW5jdGlvbiBldmVuIHdoZW4gdGhlIHNvY2tldCB0dXJucworICAgICAgICAgb3V0IHdyaXRhYmxlYWJsZSBhcyB0aGUgdW5kZXJseWluZyBsaWJzc2gyIHJlY3YgZnVuY3Rpb24gd2lsbCBkZWFsCisgICAgICAgICB3aXRoIGJvdGggYWNjb3JkaW5nbHkgKi8KKyAgICAgIGNvbm4tPmNzZWxlY3RfYml0cyA9IENVUkxfQ1NFTEVDVF9JTjsKKworICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgIC8qIHRoaXMgc2hvdWxkIG5ldmVyIG9jY3VyOyB0aGUgY2xvc2Ugc3RhdGUgc2hvdWxkIGJlIGVudGVyZWQKKyAgICAgICAgICAgYXQgdGhlIHRpbWUgdGhlIGVycm9yIG9jY3VycyAqLworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHNzaGMtPmFjdHVhbGNvZGUgPSByZXN1bHQ7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU1NIX1NGVFBfQ0xPU0U6CisgICAgICBpZihzc2hjLT5oYW5kbGVTeikKKyAgICAgICAgcmMgPSB3b2xmU1NIX1NGVFBfQ2xvc2Uoc3NoYy0+c3NoX3Nlc3Npb24sIHNzaGMtPmhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoYy0+aGFuZGxlU3opOworICAgICAgZWxzZQorICAgICAgICByYyA9IFdTX1NVQ0NFU1M7IC8qIGRpcmVjdG9yeSBsaXN0aW5nICovCisgICAgICBpZihyYyA9PSBXU19XQU5UX1JFQUQpIHsKKyAgICAgICAgKmJsb2NrID0gVFJVRTsKKyAgICAgICAgY29ubi0+d2FpdGZvciA9IEtFRVBfUkVDVjsKKyAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgfQorICAgICAgZWxzZSBpZihyYyA9PSBXU19XQU5UX1dSSVRFKSB7CisgICAgICAgICpibG9jayA9IFRSVUU7CisgICAgICAgIGNvbm4tPndhaXRmb3IgPSBLRUVQX1NFTkQ7CisgICAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYocmMgPT0gV1NfU1VDQ0VTUykgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICAgIH0KKworICAgICAgZmFpbGYoZGF0YSwgIndvbGZzc2ggU0ZUUCBDTE9TRSBmYWlsZWQ6ICVkIiwgcmMpOworICAgICAgcmV0dXJuIENVUkxFX1NTSDsKKworICAgIGNhc2UgU1NIX1NGVFBfUkVBRERJUl9JTklUOgorICAgICAgQ3VybF9wZ3JzU2V0RG93bmxvYWRTaXplKGRhdGEsIC0xKTsKKyAgICAgIGlmKGRhdGEtPnNldC5vcHRfbm9fYm9keSkgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU1RPUCk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUkVBRERJUik7CisgICAgICAvKiBGQUxMVEhST1VHSCAqLworICAgIGNhc2UgU1NIX1NGVFBfUkVBRERJUjoKKyAgICAgIG5hbWUgPSB3b2xmU1NIX1NGVFBfTFMoc3NoYy0+c3NoX3Nlc3Npb24sIHNmdHBfc2NwLT5wYXRoKTsKKyAgICAgIGlmKCFuYW1lKQorICAgICAgICByYyA9IHdvbGZTU0hfZ2V0X2Vycm9yKHNzaGMtPnNzaF9zZXNzaW9uKTsKKyAgICAgIGVsc2UKKyAgICAgICAgcmMgPSBXU19TVUNDRVNTOworCisgICAgICBpZihyYyA9PSBXU19XQU5UX1JFQUQpIHsKKyAgICAgICAgKmJsb2NrID0gVFJVRTsKKyAgICAgICAgY29ubi0+d2FpdGZvciA9IEtFRVBfUkVDVjsKKyAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgfQorICAgICAgZWxzZSBpZihyYyA9PSBXU19XQU5UX1dSSVRFKSB7CisgICAgICAgICpibG9jayA9IFRSVUU7CisgICAgICAgIGNvbm4tPndhaXRmb3IgPSBLRUVQX1NFTkQ7CisgICAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYobmFtZSAmJiAocmMgPT0gV1NfU1VDQ0VTUykpIHsKKyAgICAgICAgV1NfU0ZUUE5BTUUgKm9yaWduYW1lID0gbmFtZTsKKyAgICAgICAgcmVzdWx0ID0gQ1VSTEVfT0s7CisgICAgICAgIHdoaWxlKG5hbWUpIHsKKyAgICAgICAgICBjaGFyICpsaW5lID0gYXByaW50ZigiJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LmZ0cF9saXN0X29ubHkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUtPmZOYW1lIDogbmFtZS0+bE5hbWUpOworICAgICAgICAgIGlmKGxpbmUgPT0gTlVMTCkgeworICAgICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfQ0xPU0UpOworICAgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLCBzdHJsZW4obGluZSkpOworICAgICAgICAgIGZyZWUobGluZSk7CisgICAgICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgICAgICBzc2hjLT5hY3R1YWxjb2RlID0gcmVzdWx0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICAgIG5hbWUgPSBuYW1lLT5uZXh0OworICAgICAgICB9CisgICAgICAgIHdvbGZTU0hfU0ZUUE5BTUVfbGlzdF9mcmVlKG9yaWduYW1lKTsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NUT1ApOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgfQorICAgICAgZmFpbGYoZGF0YSwgIndvbGZzc2ggU0ZUUCBscyBmYWlsZWQ6ICVkIiwgcmMpOworICAgICAgcmV0dXJuIENVUkxFX1NTSDsKKworICAgIGNhc2UgU1NIX1NGVFBfU0hVVERPV046CisgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPmhvbWVkaXIpOworICAgICAgd29sZlNTSF9mcmVlKHNzaGMtPnNzaF9zZXNzaW9uKTsKKyAgICAgIHdvbGZTU0hfQ1RYX2ZyZWUoc3NoYy0+Y3R4KTsKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TVE9QKTsKKyAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgICAgfQorICB9IHdoaWxlKCFyYyAmJiAoc3NoYy0+c3RhdGUgIT0gU1NIX1NUT1ApKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgZG9uZSBmcm9tIG11bHRpLmMgKi8KK3N0YXRpYyBDVVJMY29kZSB3c3NoX211bHRpX3N0YXRlbWFjaChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCit7CisgIHN0cnVjdCBzc2hfY29ubiAqc3NoYyA9ICZjb25uLT5wcm90by5zc2hjOworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgYm9vbCBibG9jazsgLyogd2Ugc3RvcmUgdGhlIHN0YXR1cyBhbmQgdXNlIHRoYXQgdG8gcHJvdmlkZSBhIHNzaF9nZXRzb2NrKCkKKyAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gKi8KKyAgZG8geworICAgIHJlc3VsdCA9IHdzc2hfc3RhdGVtYWNoX2FjdChjb25uLCAmYmxvY2spOworICAgICpkb25lID0gKHNzaGMtPnN0YXRlID09IFNTSF9TVE9QKSA/IFRSVUUgOiBGQUxTRTsKKyAgICAvKiBpZiB0aGVyZSdzIG5vIGVycm9yLCBpdCBpc24ndCBkb25lIGFuZCBpdCBkaWRuJ3QgRVdPVUxEQkxPQ0ssIHRoZW4KKyAgICAgICB0cnkgYWdhaW4gKi8KKyAgICBpZigqZG9uZSkgeworICAgICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJ3c3NoX3N0YXRlbWFjaF9hY3Qgc2F5cyBET05FXG4iKSk7CisgICAgfQorICB9IHdoaWxlKCFyZXN1bHQgJiYgISpkb25lICYmICFibG9jayk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljCitDVVJMY29kZSB3c2NwX3BlcmZvcm0oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNvbm5lY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICBib29sICpkb3BoYXNlX2RvbmUpCit7CisgICh2b2lkKWNvbm47CisgICh2b2lkKWNvbm5lY3RlZDsKKyAgKHZvaWQpZG9waGFzZV9kb25lOworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3N0YXRpYworQ1VSTGNvZGUgd3NmdHBfcGVyZm9ybShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmNvbm5lY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9waGFzZV9kb25lKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKworICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIHN0YXJ0c1xuIikpOworCisgICpkb3BoYXNlX2RvbmUgPSBGQUxTRTsgLyogbm90IGRvbmUgeWV0ICovCisKKyAgLyogc3RhcnQgdGhlIGZpcnN0IGNvbW1hbmQgaW4gdGhlIERPIHBoYXNlICovCisgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1FVT1RFX0lOSVQpOworCisgIC8qIHJ1biB0aGUgc3RhdGUtbWFjaGluZSAqLworICByZXN1bHQgPSB3c3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOworCisgICpjb25uZWN0ZWQgPSBjb25uLT5iaXRzLnRjcGNvbm5lY3RbRklSU1RTT0NLRVRdOworCisgIGlmKCpkb3BoYXNlX2RvbmUpIHsKKyAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7CisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogVGhlIERPIGZ1bmN0aW9uIGlzIGdlbmVyaWMgZm9yIGJvdGggcHJvdG9jb2xzLgorICovCitzdGF0aWMgQ1VSTGNvZGUgd3NzaF9kbyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCit7CisgIENVUkxjb2RlIHJlc3VsdDsKKyAgYm9vbCBjb25uZWN0ZWQgPSAwOworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKKyAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7CisKKyAgKmRvbmUgPSBGQUxTRTsgLyogZGVmYXVsdCB0byBmYWxzZSAqLworICBkYXRhLT5yZXEuc2l6ZSA9IC0xOyAvKiBtYWtlIHN1cmUgdGhpcyBpcyB1bmtub3duIGF0IHRoaXMgcG9pbnQgKi8KKyAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX09LOyAvKiByZXNldCBlcnJvciBjb2RlICovCisgIHNzaGMtPnNlY29uZENyZWF0ZURpcnMgPSAwOyAgIC8qIHJlc2V0IHRoZSBjcmVhdGUgZGlyIGF0dGVtcHQgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgKi8KKworICBDdXJsX3BncnNTZXRVcGxvYWRDb3VudGVyKGRhdGEsIDApOworICBDdXJsX3BncnNTZXREb3dubG9hZENvdW50ZXIoZGF0YSwgMCk7CisgIEN1cmxfcGdyc1NldFVwbG9hZFNpemUoZGF0YSwgLTEpOworICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgLTEpOworCisgIGlmKGNvbm4tPmhhbmRsZXItPnByb3RvY29sICYgQ1VSTFBST1RPX1NDUCkKKyAgICByZXN1bHQgPSB3c2NwX3BlcmZvcm0oY29ubiwgJmNvbm5lY3RlZCwgIGRvbmUpOworICBlbHNlCisgICAgcmVzdWx0ID0gd3NmdHBfcGVyZm9ybShjb25uLCAmY29ubmVjdGVkLCAgZG9uZSk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENVUkxjb2RlIHdzc2hfYmxvY2tfc3RhdGVtYWNoKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGlzY29ubmVjdCkKK3sKKyAgc3RydWN0IHNzaF9jb25uICpzc2hjID0gJmNvbm4tPnByb3RvLnNzaGM7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKKworICB3aGlsZSgoc3NoYy0+c3RhdGUgIT0gU1NIX1NUT1ApICYmICFyZXN1bHQpIHsKKyAgICBib29sIGJsb2NrOworICAgIHRpbWVkaWZmX3QgbGVmdCA9IDEwMDA7CisgICAgc3RydWN0IGN1cmx0aW1lIG5vdyA9IEN1cmxfbm93KCk7CisKKyAgICByZXN1bHQgPSB3c3NoX3N0YXRlbWFjaF9hY3QoY29ubiwgJmJsb2NrKTsKKyAgICBpZihyZXN1bHQpCisgICAgICBicmVhazsKKworICAgIGlmKCFkaXNjb25uZWN0KSB7CisgICAgICBpZihDdXJsX3BncnNVcGRhdGUoY29ubikpCisgICAgICAgIHJldHVybiBDVVJMRV9BQk9SVEVEX0JZX0NBTExCQUNLOworCisgICAgICByZXN1bHQgPSBDdXJsX3NwZWVkY2hlY2soZGF0YSwgbm93KTsKKyAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGxlZnQgPSBDdXJsX3RpbWVsZWZ0KGRhdGEsIE5VTEwsIEZBTFNFKTsKKyAgICAgIGlmKGxlZnQgPCAwKSB7CisgICAgICAgIGZhaWxmKGRhdGEsICJPcGVyYXRpb24gdGltZWQgb3V0Iik7CisgICAgICAgIHJldHVybiBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7CisgICAgICB9CisgICAgfQorCisgICAgaWYoIXJlc3VsdCkgeworICAgICAgaW50IGRpciA9IGNvbm4tPndhaXRmb3I7CisgICAgICBjdXJsX3NvY2tldF90IHNvY2sgPSBjb25uLT5zb2NrW0ZJUlNUU09DS0VUXTsKKyAgICAgIGN1cmxfc29ja2V0X3QgZmRfcmVhZCA9IENVUkxfU09DS0VUX0JBRDsKKyAgICAgIGN1cmxfc29ja2V0X3QgZmRfd3JpdGUgPSBDVVJMX1NPQ0tFVF9CQUQ7CisgICAgICBpZihkaXIgPT0gS0VFUF9SRUNWKQorICAgICAgICBmZF9yZWFkID0gc29jazsKKyAgICAgIGVsc2UgaWYoZGlyID09IEtFRVBfU0VORCkKKyAgICAgICAgZmRfd3JpdGUgPSBzb2NrOworCisgICAgICAvKiB3YWl0IGZvciB0aGUgc29ja2V0IHRvIGJlY29tZSByZWFkeSAqLworICAgICAgKHZvaWQpQ3VybF9zb2NrZXRfY2hlY2soZmRfcmVhZCwgQ1VSTF9TT0NLRVRfQkFELCBmZF93cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ+MTAwMD8xMDAwOmxlZnQpOyAvKiBpZ25vcmUgcmVzdWx0ICovCisgICAgfQorICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogZ2VuZXJpYyBkb25lIGZ1bmN0aW9uIGZvciBib3RoIFNDUCBhbmQgU0ZUUCBjYWxsZWQgZnJvbSB0aGVpciBzcGVjaWZpYworICAgZG9uZSBmdW5jdGlvbnMgKi8KK3N0YXRpYyBDVVJMY29kZSB3c3NoX2RvbmUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBDVVJMY29kZSBzdGF0dXMpCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBzdHJ1Y3QgU1NIUFJPVE8gKnNmdHBfc2NwID0gY29ubi0+ZGF0YS0+cmVxLnByb3RvcDsKKworICBpZighc3RhdHVzKSB7CisgICAgLyogcnVuIHRoZSBzdGF0ZS1tYWNoaW5lICovCisgICAgcmVzdWx0ID0gd3NzaF9ibG9ja19zdGF0ZW1hY2goY29ubiwgRkFMU0UpOworICB9CisgIGVsc2UKKyAgICByZXN1bHQgPSBzdGF0dXM7CisKKyAgaWYoc2Z0cF9zY3ApCisgICAgQ3VybF9zYWZlZnJlZShzZnRwX3NjcC0+cGF0aCk7CisgIGlmKEN1cmxfcGdyc0RvbmUoY29ubikpCisgICAgcmV0dXJuIENVUkxFX0FCT1JURURfQllfQ0FMTEJBQ0s7CisKKyAgY29ubi0+ZGF0YS0+cmVxLmtlZXBvbiA9IDA7IC8qIGNsZWFyIGFsbCBiaXRzICovCisgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiAwCitzdGF0aWMgQ1VSTGNvZGUgd3NjcF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMY29kZSBjb2RlLCBib29sIHByZW1hdHVyZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgICh2b2lkKWNvbm47CisgICh2b2lkKWNvZGU7CisgICh2b2lkKXByZW1hdHVyZTsKKworICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ1VSTGNvZGUgd3NjcF9kb2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvcGhhc2VfZG9uZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgICh2b2lkKWNvbm47CisgICh2b2lkKWRvcGhhc2VfZG9uZTsKKworICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgQ1VSTGNvZGUgd3NjcF9kaXNjb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCBkZWFkX2Nvbm5lY3Rpb24pCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICAodm9pZCljb25uOworICAodm9pZClkZWFkX2Nvbm5lY3Rpb247CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCitzdGF0aWMgQ1VSTGNvZGUgd3NmdHBfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlIGNvZGUsIGJvb2wgcHJlbWF0dXJlKQoreworICAodm9pZClwcmVtYXR1cmU7CisgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKworICByZXR1cm4gd3NzaF9kb25lKGNvbm4sIGNvZGUpOworfQorCitzdGF0aWMgQ1VSTGNvZGUgd3NmdHBfZG9pbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9waGFzZV9kb25lKQoreworICBDVVJMY29kZSByZXN1bHQgPSB3c3NoX211bHRpX3N0YXRlbWFjaChjb25uLCBkb3BoYXNlX2RvbmUpOworCisgIGlmKCpkb3BoYXNlX2RvbmUpIHsKKyAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkRPIHBoYXNlIGlzIGNvbXBsZXRlXG4iKSk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIENVUkxjb2RlIHdzZnRwX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sIGRlYWQpCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICAodm9pZClkZWFkOworCisgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiU1NIIERJU0NPTk5FQ1Qgc3RhcnRzIG5vd1xuIikpOworCisgIGlmKGNvbm4tPnByb3RvLnNzaGMuc3NoX3Nlc3Npb24pIHsKKyAgICAvKiBvbmx5IGlmIHRoZXJlJ3MgYSBzZXNzaW9uIHN0aWxsIGFyb3VuZCB0byB1c2UhICovCisgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfU0hVVERPV04pOworICAgIHJlc3VsdCA9IHdzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIFRSVUUpOworICB9CisKKyAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJTU0ggRElTQ09OTkVDVCBpcyBkb25lXG4iKSk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQgd3NzaF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2spCit7CisgIHJldHVybiB3c3NoX3BlcmZvcm1fZ2V0c29jayhjb25uLCBzb2NrKTsKK30KKworc3RhdGljIGludCB3c3NoX3BlcmZvcm1fZ2V0c29jayhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKnNvY2spCit7CisgIGludCBiaXRtYXAgPSBHRVRTT0NLX0JMQU5LOworICBpbnQgZGlyID0gY29ubi0+d2FpdGZvcjsKKyAgc29ja1swXSA9IGNvbm4tPnNvY2tbRklSU1RTT0NLRVRdOworCisgIGlmKGRpciA9PSBLRUVQX1JFQ1YpCisgICAgYml0bWFwIHw9IEdFVFNPQ0tfUkVBRFNPQ0soRklSU1RTT0NLRVQpOworICBlbHNlIGlmKGRpciA9PSBLRUVQX1NFTkQpCisgICAgYml0bWFwIHw9IEdFVFNPQ0tfV1JJVEVTT0NLKEZJUlNUU09DS0VUKTsKKworICByZXR1cm4gYml0bWFwOworfQorCitzaXplX3QgQ3VybF9zc2hfdmVyc2lvbihjaGFyICpidWZmZXIsIHNpemVfdCBidWZsZW4pCit7CisgIHJldHVybiBtc25wcmludGYoYnVmZmVyLCBidWZsZW4sICJ3b2xmc3NoLyVzIiwgTElCV09MRlNTSF9WRVJTSU9OX1NUUklORyk7Cit9CisKK0NVUkxjb2RlIEN1cmxfc3NoX2luaXQodm9pZCkKK3sKKyAgaWYoV1NfU1VDQ0VTUyAhPSB3b2xmU1NIX0luaXQoKSkgeworICAgIERFQlVHRihmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiB3b2xmU1NIX0luaXQgZmFpbGVkXG4iKSk7CisgICAgcmV0dXJuIENVUkxFX0ZBSUxFRF9JTklUOworICB9CisKKyAgcmV0dXJuIENVUkxFX09LOworfQordm9pZCBDdXJsX3NzaF9jbGVhbnVwKHZvaWQpCit7Cit9CisKKyNlbmRpZiAvKiBVU0VfV09MRlNTSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnNzaC93b2xmc3NoLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92c3NoL3dvbGZzc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWI5YTNiCi0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnNzaC93b2xmc3NoLmgKQEAgLTAsMCArMSwyNyBAQAorI2lmbmRlZiBIRUFERVJfQ1VSTF9XT0xGU1NIX0gKKyNkZWZpbmUgSEVBREVSX0NVUkxfV09MRlNTSF9ICisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2V4dGVybiBjb25zdCBzdHJ1Y3QgQ3VybF9oYW5kbGVyIEN1cmxfaGFuZGxlcl9zZnRwOworCisjZW5kaWYgLyogSEVBREVSX0NVUkxfV09MRlNTSF9IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL2JlYXJzc2wuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvYmVhcnNzbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3Zjk0NTgKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL2JlYXJzc2wuYwpAQCAtMCwwICsxLDg2NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE5LCBNaWNoYWVsIEZvcm5leSwgPG1mb3JuZXlAbWZvcm5leS5vcmc+CisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZmRlZiBVU0VfQkVBUlNTTAorCisjaW5jbHVkZSA8YmVhcnNzbC5oPgorCisjaW5jbHVkZSAiYmVhcnNzbC5oIgorI2luY2x1ZGUgInVybGRhdGEuaCIKKyNpbmNsdWRlICJzZW5kZi5oIgorI2luY2x1ZGUgImluZXRfcHRvbi5oIgorI2luY2x1ZGUgInZ0bHMuaCIKKyNpbmNsdWRlICJjb25uZWN0LmgiCisjaW5jbHVkZSAic2VsZWN0LmgiCisjaW5jbHVkZSAibXVsdGlpZi5oIgorI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKworc3RydWN0IHg1MDlfY29udGV4dCB7CisgIGNvbnN0IGJyX3g1MDlfY2xhc3MgKnZ0YWJsZTsKKyAgYnJfeDUwOV9taW5pbWFsX2NvbnRleHQgbWluaW1hbDsKKyAgYm9vbCB2ZXJpZnlob3N0OworICBib29sIHZlcmlmeXBlZXI7Cit9OworCitzdHJ1Y3Qgc3NsX2JhY2tlbmRfZGF0YSB7CisgIGJyX3NzbF9jbGllbnRfY29udGV4dCBjdHg7CisgIHN0cnVjdCB4NTA5X2NvbnRleHQgeDUwOTsKKyAgdW5zaWduZWQgY2hhciBidWZbQlJfU1NMX0JVRlNJWkVfQklESV07CisgIGJyX3g1MDlfdHJ1c3RfYW5jaG9yICphbmNob3JzOworICBzaXplX3QgYW5jaG9yc19sZW47CisgIGNvbnN0IGNoYXIgKnByb3RvY29sc1syXTsKKyAgLyogU1NMIGNsaWVudCBjb250ZXh0IGlzIGFjdGl2ZSAqLworICBib29sIGFjdGl2ZTsKKyAgLyogc2l6ZSBvZiBwZW5kaW5nIHdyaXRlLCB5ZXQgdG8gYmUgZmx1c2hlZCAqLworICBzaXplX3QgcGVuZGluZ193cml0ZTsKK307CisKKyNkZWZpbmUgQkFDS0VORCBjb25uc3NsLT5iYWNrZW5kCisKK3N0cnVjdCBjYWZpbGVfcGFyc2VyIHsKKyAgQ1VSTGNvZGUgZXJyOworICBib29sIGluX2NlcnQ7CisgIGJyX3g1MDlfZGVjb2Rlcl9jb250ZXh0IHhjOworICAvKiBhcnJheSBvZiB0cnVzdCBhbmNob3JzIGxvYWRlZCBmcm9tIENBZmlsZSAqLworICBicl94NTA5X3RydXN0X2FuY2hvciAqYW5jaG9yczsKKyAgc2l6ZV90IGFuY2hvcnNfbGVuOworICAvKiBidWZmZXIgZm9yIEROIGRhdGEgKi8KKyAgdW5zaWduZWQgY2hhciBkblsxMDI0XTsKKyAgc2l6ZV90IGRuX2xlbjsKK307CisKK3N0YXRpYyB2b2lkIGFwcGVuZF9kbih2b2lkICpjdHgsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKyAgc3RydWN0IGNhZmlsZV9wYXJzZXIgKmNhID0gY3R4OworCisgIGlmKGNhLT5lcnIgIT0gQ1VSTEVfT0sgfHwgIWNhLT5pbl9jZXJ0KQorICAgIHJldHVybjsKKyAgaWYoc2l6ZW9mKGNhLT5kbikgLSBjYS0+ZG5fbGVuIDwgbGVuKSB7CisgICAgY2EtPmVyciA9IENVUkxFX0ZBSUxFRF9JTklUOworICAgIHJldHVybjsKKyAgfQorICBtZW1jcHkoY2EtPmRuICsgY2EtPmRuX2xlbiwgYnVmLCBsZW4pOworICBjYS0+ZG5fbGVuICs9IGxlbjsKK30KKworc3RhdGljIHZvaWQgeDUwOV9wdXNoKHZvaWQgKmN0eCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQoreworICBzdHJ1Y3QgY2FmaWxlX3BhcnNlciAqY2EgPSBjdHg7CisKKyAgaWYoY2EtPmluX2NlcnQpCisgICAgYnJfeDUwOV9kZWNvZGVyX3B1c2goJmNhLT54YywgYnVmLCBsZW4pOworfQorCitzdGF0aWMgQ1VSTGNvZGUgbG9hZF9jYWZpbGUoY29uc3QgY2hhciAqcGF0aCwgYnJfeDUwOV90cnVzdF9hbmNob3IgKiphbmNob3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqYW5jaG9yc19sZW4pCit7CisgIHN0cnVjdCBjYWZpbGVfcGFyc2VyIGNhOworICBicl9wZW1fZGVjb2Rlcl9jb250ZXh0IHBjOworICBicl94NTA5X3RydXN0X2FuY2hvciAqdGE7CisgIHNpemVfdCB0YV9zaXplOworICBicl94NTA5X3RydXN0X2FuY2hvciAqbmV3X2FuY2hvcnM7CisgIHNpemVfdCBuZXdfYW5jaG9yc19sZW47CisgIGJyX3g1MDlfcGtleSAqcGtleTsKKyAgRklMRSAqZnA7CisgIHVuc2lnbmVkIGNoYXIgYnVmW0JVRlNJWl0sICpwOworICBjb25zdCBjaGFyICpuYW1lOworICBzaXplX3QgbiwgaSwgcHVzaGVkOworCisgIGZwID0gZm9wZW4ocGF0aCwgInJiIik7CisgIGlmKCFmcCkKKyAgICByZXR1cm4gQ1VSTEVfU1NMX0NBQ0VSVF9CQURGSUxFOworCisgIGNhLmVyciA9IENVUkxFX09LOworICBjYS5pbl9jZXJ0ID0gRkFMU0U7CisgIGNhLmFuY2hvcnMgPSBOVUxMOworICBjYS5hbmNob3JzX2xlbiA9IDA7CisgIGJyX3BlbV9kZWNvZGVyX2luaXQoJnBjKTsKKyAgYnJfcGVtX2RlY29kZXJfc2V0ZGVzdCgmcGMsIHg1MDlfcHVzaCwgJmNhKTsKKyAgZm9yKDs7KSB7CisgICAgbiA9IGZyZWFkKGJ1ZiwgMSwgc2l6ZW9mKGJ1ZiksIGZwKTsKKyAgICBpZihuID09IDApCisgICAgICBicmVhazsKKyAgICBwID0gYnVmOworICAgIHdoaWxlKG4pIHsKKyAgICAgIHB1c2hlZCA9IGJyX3BlbV9kZWNvZGVyX3B1c2goJnBjLCBwLCBuKTsKKyAgICAgIGlmKGNhLmVycikKKyAgICAgICAgZ290byBmYWlsOworICAgICAgcCArPSBwdXNoZWQ7CisgICAgICBuIC09IHB1c2hlZDsKKworICAgICAgc3dpdGNoKGJyX3BlbV9kZWNvZGVyX2V2ZW50KCZwYykpIHsKKyAgICAgIGNhc2UgMDoKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEJSX1BFTV9CRUdJTl9PQko6CisgICAgICAgIG5hbWUgPSBicl9wZW1fZGVjb2Rlcl9uYW1lKCZwYyk7CisgICAgICAgIGlmKHN0cmNtcChuYW1lLCAiQ0VSVElGSUNBVEUiKSAmJiBzdHJjbXAobmFtZSwgIlg1MDkgQ0VSVElGSUNBVEUiKSkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgYnJfeDUwOV9kZWNvZGVyX2luaXQoJmNhLnhjLCBhcHBlbmRfZG4sICZjYSk7CisgICAgICAgIGlmKGNhLmFuY2hvcnNfbGVuID09IFNJWkVfTUFYIC8gc2l6ZW9mKGNhLmFuY2hvcnNbMF0pKSB7CisgICAgICAgICAgY2EuZXJyID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgbmV3X2FuY2hvcnNfbGVuID0gY2EuYW5jaG9yc19sZW4gKyAxOworICAgICAgICBuZXdfYW5jaG9ycyA9IHJlYWxsb2MoY2EuYW5jaG9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19hbmNob3JzX2xlbiAqIHNpemVvZihjYS5hbmNob3JzWzBdKSk7CisgICAgICAgIGlmKCFuZXdfYW5jaG9ycykgeworICAgICAgICAgIGNhLmVyciA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIGNhLmFuY2hvcnMgPSBuZXdfYW5jaG9yczsKKyAgICAgICAgY2EuYW5jaG9yc19sZW4gPSBuZXdfYW5jaG9yc19sZW47CisgICAgICAgIGNhLmluX2NlcnQgPSBUUlVFOworICAgICAgICBjYS5kbl9sZW4gPSAwOworICAgICAgICB0YSA9ICZjYS5hbmNob3JzW2NhLmFuY2hvcnNfbGVuIC0gMV07CisgICAgICAgIHRhLT5kbi5kYXRhID0gTlVMTDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEJSX1BFTV9FTkRfT0JKOgorICAgICAgICBpZighY2EuaW5fY2VydCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2EuaW5fY2VydCA9IEZBTFNFOworICAgICAgICBpZihicl94NTA5X2RlY29kZXJfbGFzdF9lcnJvcigmY2EueGMpKSB7CisgICAgICAgICAgY2EuZXJyID0gQ1VSTEVfU1NMX0NBQ0VSVF9CQURGSUxFOworICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICB0YS0+ZmxhZ3MgPSAwOworICAgICAgICBpZihicl94NTA5X2RlY29kZXJfaXNDQSgmY2EueGMpKQorICAgICAgICAgIHRhLT5mbGFncyB8PSBCUl9YNTA5X1RBX0NBOworICAgICAgICBwa2V5ID0gYnJfeDUwOV9kZWNvZGVyX2dldF9wa2V5KCZjYS54Yyk7CisgICAgICAgIGlmKCFwa2V5KSB7CisgICAgICAgICAgY2EuZXJyID0gQ1VSTEVfU1NMX0NBQ0VSVF9CQURGSUxFOworICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICB0YS0+cGtleSA9ICpwa2V5OworCisgICAgICAgIC8qIGNhbGN1bGF0ZSBzcGFjZSBuZWVkZWQgZm9yIHRydXN0IGFuY2hvciBkYXRhICovCisgICAgICAgIHRhX3NpemUgPSBjYS5kbl9sZW47CisgICAgICAgIHN3aXRjaChwa2V5LT5rZXlfdHlwZSkgeworICAgICAgICBjYXNlIEJSX0tFWVRZUEVfUlNBOgorICAgICAgICAgIHRhX3NpemUgKz0gcGtleS0+a2V5LnJzYS5ubGVuICsgcGtleS0+a2V5LnJzYS5lbGVuOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJSX0tFWVRZUEVfRUM6CisgICAgICAgICAgdGFfc2l6ZSArPSBwa2V5LT5rZXkuZWMucWxlbjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBjYS5lcnIgPSBDVVJMRV9GQUlMRURfSU5JVDsKKyAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKworICAgICAgICAvKiBmaWxsIGluIHRydXN0IGFuY2hvciBETiBhbmQgcHVibGljIGtleSBkYXRhICovCisgICAgICAgIHRhLT5kbi5kYXRhID0gbWFsbG9jKHRhX3NpemUpOworICAgICAgICBpZighdGEtPmRuLmRhdGEpIHsKKyAgICAgICAgICBjYS5lcnIgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkodGEtPmRuLmRhdGEsIGNhLmRuLCBjYS5kbl9sZW4pOworICAgICAgICB0YS0+ZG4ubGVuID0gY2EuZG5fbGVuOworICAgICAgICBzd2l0Y2gocGtleS0+a2V5X3R5cGUpIHsKKyAgICAgICAgY2FzZSBCUl9LRVlUWVBFX1JTQToKKyAgICAgICAgICB0YS0+cGtleS5rZXkucnNhLm4gPSB0YS0+ZG4uZGF0YSArIHRhLT5kbi5sZW47CisgICAgICAgICAgbWVtY3B5KHRhLT5wa2V5LmtleS5yc2EubiwgcGtleS0+a2V5LnJzYS5uLCBwa2V5LT5rZXkucnNhLm5sZW4pOworICAgICAgICAgIHRhLT5wa2V5LmtleS5yc2EuZSA9IHRhLT5wa2V5LmtleS5yc2EubiArIHRhLT5wa2V5LmtleS5yc2EubmxlbjsKKyAgICAgICAgICBtZW1jcHkodGEtPnBrZXkua2V5LnJzYS5lLCBwa2V5LT5rZXkucnNhLmUsIHBrZXktPmtleS5yc2EuZWxlbik7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQlJfS0VZVFlQRV9FQzoKKyAgICAgICAgICB0YS0+cGtleS5rZXkuZWMucSA9IHRhLT5kbi5kYXRhICsgdGEtPmRuLmxlbjsKKyAgICAgICAgICBtZW1jcHkodGEtPnBrZXkua2V5LmVjLnEsIHBrZXktPmtleS5lYy5xLCBwa2V5LT5rZXkuZWMucWxlbik7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBjYS5lcnIgPSBDVVJMRV9TU0xfQ0FDRVJUX0JBREZJTEU7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgaWYoZmVycm9yKGZwKSkKKyAgICBjYS5lcnIgPSBDVVJMRV9SRUFEX0VSUk9SOworCitmYWlsOgorICBmY2xvc2UoZnApOworICBpZihjYS5lcnIgPT0gQ1VSTEVfT0spIHsKKyAgICAqYW5jaG9ycyA9IGNhLmFuY2hvcnM7CisgICAgKmFuY2hvcnNfbGVuID0gY2EuYW5jaG9yc19sZW47CisgIH0KKyAgZWxzZSB7CisgICAgZm9yKGkgPSAwOyBpIDwgY2EuYW5jaG9yc19sZW47ICsraSkKKyAgICAgIGZyZWUoY2EuYW5jaG9yc1tpXS5kbi5kYXRhKTsKKyAgICBmcmVlKGNhLmFuY2hvcnMpOworICB9CisKKyAgcmV0dXJuIGNhLmVycjsKK30KKworc3RhdGljIHZvaWQgeDUwOV9zdGFydF9jaGFpbihjb25zdCBicl94NTA5X2NsYXNzICoqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2ZXJfbmFtZSkKK3sKKyAgc3RydWN0IHg1MDlfY29udGV4dCAqeDUwOSA9IChzdHJ1Y3QgeDUwOV9jb250ZXh0ICopY3R4OworCisgIGlmKCF4NTA5LT52ZXJpZnlob3N0KQorICAgIHNlcnZlcl9uYW1lID0gTlVMTDsKKyAgeDUwOS0+bWluaW1hbC52dGFibGUtPnN0YXJ0X2NoYWluKCZ4NTA5LT5taW5pbWFsLnZ0YWJsZSwgc2VydmVyX25hbWUpOworfQorCitzdGF0aWMgdm9pZCB4NTA5X3N0YXJ0X2NlcnQoY29uc3QgYnJfeDUwOV9jbGFzcyAqKmN0eCwgdWludDMyX3QgbGVuZ3RoKQoreworICBzdHJ1Y3QgeDUwOV9jb250ZXh0ICp4NTA5ID0gKHN0cnVjdCB4NTA5X2NvbnRleHQgKiljdHg7CisKKyAgeDUwOS0+bWluaW1hbC52dGFibGUtPnN0YXJ0X2NlcnQoJng1MDktPm1pbmltYWwudnRhYmxlLCBsZW5ndGgpOworfQorCitzdGF0aWMgdm9pZCB4NTA5X2FwcGVuZChjb25zdCBicl94NTA5X2NsYXNzICoqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKQoreworICBzdHJ1Y3QgeDUwOV9jb250ZXh0ICp4NTA5ID0gKHN0cnVjdCB4NTA5X2NvbnRleHQgKiljdHg7CisKKyAgeDUwOS0+bWluaW1hbC52dGFibGUtPmFwcGVuZCgmeDUwOS0+bWluaW1hbC52dGFibGUsIGJ1ZiwgbGVuKTsKK30KKworc3RhdGljIHZvaWQgeDUwOV9lbmRfY2VydChjb25zdCBicl94NTA5X2NsYXNzICoqY3R4KQoreworICBzdHJ1Y3QgeDUwOV9jb250ZXh0ICp4NTA5ID0gKHN0cnVjdCB4NTA5X2NvbnRleHQgKiljdHg7CisKKyAgeDUwOS0+bWluaW1hbC52dGFibGUtPmVuZF9jZXJ0KCZ4NTA5LT5taW5pbWFsLnZ0YWJsZSk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCB4NTA5X2VuZF9jaGFpbihjb25zdCBicl94NTA5X2NsYXNzICoqY3R4KQoreworICBzdHJ1Y3QgeDUwOV9jb250ZXh0ICp4NTA5ID0gKHN0cnVjdCB4NTA5X2NvbnRleHQgKiljdHg7CisgIHVuc2lnbmVkIGVycjsKKworICBlcnIgPSB4NTA5LT5taW5pbWFsLnZ0YWJsZS0+ZW5kX2NoYWluKCZ4NTA5LT5taW5pbWFsLnZ0YWJsZSk7CisgIGlmKGVyciAmJiAheDUwOS0+dmVyaWZ5cGVlcikgeworICAgIC8qIGlnbm9yZSBhbnkgWC41MDkgZXJyb3JzICovCisgICAgZXJyID0gQlJfRVJSX09LOworICB9CisKKyAgcmV0dXJuIGVycjsKK30KKworc3RhdGljIGNvbnN0IGJyX3g1MDlfcGtleSAqeDUwOV9nZXRfcGtleShjb25zdCBicl94NTA5X2NsYXNzICpjb25zdCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAqdXNhZ2VzKQoreworICBzdHJ1Y3QgeDUwOV9jb250ZXh0ICp4NTA5ID0gKHN0cnVjdCB4NTA5X2NvbnRleHQgKiljdHg7CisKKyAgcmV0dXJuIHg1MDktPm1pbmltYWwudnRhYmxlLT5nZXRfcGtleSgmeDUwOS0+bWluaW1hbC52dGFibGUsIHVzYWdlcyk7Cit9CisKK3N0YXRpYyBjb25zdCBicl94NTA5X2NsYXNzIHg1MDlfdnRhYmxlID0geworICBzaXplb2Yoc3RydWN0IHg1MDlfY29udGV4dCksCisgIHg1MDlfc3RhcnRfY2hhaW4sCisgIHg1MDlfc3RhcnRfY2VydCwKKyAgeDUwOV9hcHBlbmQsCisgIHg1MDlfZW5kX2NlcnQsCisgIHg1MDlfZW5kX2NoYWluLAorICB4NTA5X2dldF9wa2V5Cit9OworCitzdGF0aWMgQ1VSTGNvZGUgYmVhcnNzbF9jb25uZWN0X3N0ZXAxKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKK3sKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOworICBjb25zdCBjaGFyICogY29uc3Qgc3NsX2NhZmlsZSA9IFNTTF9DT05OX0NPTkZJRyhDQWZpbGUpOworICBjb25zdCBjaGFyICpob3N0bmFtZSA9IFNTTF9JU19QUk9YWSgpID8gY29ubi0+aHR0cF9wcm94eS5ob3N0Lm5hbWUgOgorICAgIGNvbm4tPmhvc3QubmFtZTsKKyAgY29uc3QgYm9vbCB2ZXJpZnlwZWVyID0gU1NMX0NPTk5fQ09ORklHKHZlcmlmeXBlZXIpOworICBjb25zdCBib29sIHZlcmlmeWhvc3QgPSBTU0xfQ09OTl9DT05GSUcodmVyaWZ5aG9zdCk7CisgIENVUkxjb2RlIHJldDsKKyAgdW5zaWduZWQgdmVyc2lvbl9taW4sIHZlcnNpb25fbWF4OworI2lmZGVmIEVOQUJMRV9JUFY2CisgIHN0cnVjdCBpbjZfYWRkciBhZGRyOworI2Vsc2UKKyAgc3RydWN0IGluX2FkZHIgYWRkcjsKKyNlbmRpZgorCisgIHN3aXRjaChTU0xfQ09OTl9DT05GSUcodmVyc2lvbikpIHsKKyAgY2FzZSBDVVJMX1NTTFZFUlNJT05fU1NMdjI6CisgICAgZmFpbGYoZGF0YSwgIkJlYXJTU0wgZG9lcyBub3Qgc3VwcG9ydCBTU0x2MiIpOworICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgY2FzZSBDVVJMX1NTTFZFUlNJT05fU1NMdjM6CisgICAgZmFpbGYoZGF0YSwgIkJlYXJTU0wgZG9lcyBub3Qgc3VwcG9ydCBTU0x2MyIpOworICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjFfMDoKKyAgICB2ZXJzaW9uX21pbiA9IEJSX1RMUzEwOworICAgIHZlcnNpb25fbWF4ID0gQlJfVExTMTA7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzE6CisgICAgdmVyc2lvbl9taW4gPSBCUl9UTFMxMTsKKyAgICB2ZXJzaW9uX21heCA9IEJSX1RMUzExOworICAgIGJyZWFrOworICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8yOgorICAgIHZlcnNpb25fbWluID0gQlJfVExTMTI7CisgICAgdmVyc2lvbl9tYXggPSBCUl9UTFMxMjsKKyAgICBicmVhazsKKyAgY2FzZSBDVVJMX1NTTFZFUlNJT05fREVGQVVMVDoKKyAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjE6CisgICAgdmVyc2lvbl9taW4gPSBCUl9UTFMxMDsKKyAgICB2ZXJzaW9uX21heCA9IEJSX1RMUzEyOworICAgIGJyZWFrOworICBkZWZhdWx0OgorICAgIGZhaWxmKGRhdGEsICJCZWFyU1NMOiB1bmtub3duIENVUkxPUFRfU1NMVkVSU0lPTiIpOworICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgfQorCisgIGlmKHNzbF9jYWZpbGUpIHsKKyAgICByZXQgPSBsb2FkX2NhZmlsZShzc2xfY2FmaWxlLCAmQkFDS0VORC0+YW5jaG9ycywgJkJBQ0tFTkQtPmFuY2hvcnNfbGVuKTsKKyAgICBpZihyZXQgIT0gQ1VSTEVfT0spIHsKKyAgICAgIGlmKHZlcmlmeXBlZXIpIHsKKyAgICAgICAgZmFpbGYoZGF0YSwgImVycm9yIHNldHRpbmcgY2VydGlmaWNhdGUgdmVyaWZ5IGxvY2F0aW9uczpcbiIKKyAgICAgICAgICAgICAgIiAgQ0FmaWxlOiAlc1xuIiwgc3NsX2NhZmlsZSk7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgICB9CisgICAgICBpbmZvZihkYXRhLCAiZXJyb3Igc2V0dGluZyBjZXJ0aWZpY2F0ZSB2ZXJpZnkgbG9jYXRpb25zLCIKKyAgICAgICAgICAgICIgY29udGludWluZyBhbnl3YXk6XG4iKTsKKyAgICB9CisgIH0KKworICAvKiBpbml0aWFsaXplIFNTTCBjb250ZXh0ICovCisgIGJyX3NzbF9jbGllbnRfaW5pdF9mdWxsKCZCQUNLRU5ELT5jdHgsICZCQUNLRU5ELT54NTA5Lm1pbmltYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJBQ0tFTkQtPmFuY2hvcnMsIEJBQ0tFTkQtPmFuY2hvcnNfbGVuKTsKKyAgYnJfc3NsX2VuZ2luZV9zZXRfdmVyc2lvbnMoJkJBQ0tFTkQtPmN0eC5lbmcsIHZlcnNpb25fbWluLCB2ZXJzaW9uX21heCk7CisgIGJyX3NzbF9lbmdpbmVfc2V0X2J1ZmZlcigmQkFDS0VORC0+Y3R4LmVuZywgQkFDS0VORC0+YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEJBQ0tFTkQtPmJ1ZiksIDEpOworCisgIC8qIGluaXRpYWxpemUgWC41MDkgY29udGV4dCAqLworICBCQUNLRU5ELT54NTA5LnZ0YWJsZSA9ICZ4NTA5X3Z0YWJsZTsKKyAgQkFDS0VORC0+eDUwOS52ZXJpZnlwZWVyID0gdmVyaWZ5cGVlcjsKKyAgQkFDS0VORC0+eDUwOS52ZXJpZnlob3N0ID0gdmVyaWZ5aG9zdDsKKyAgYnJfc3NsX2VuZ2luZV9zZXRfeDUwOSgmQkFDS0VORC0+Y3R4LmVuZywgJkJBQ0tFTkQtPng1MDkudnRhYmxlKTsKKworICBpZihTU0xfU0VUX09QVElPTihwcmltYXJ5LnNlc3Npb25pZCkpIHsKKyAgICB2b2lkICpzZXNzaW9uOworCisgICAgQ3VybF9zc2xfc2Vzc2lvbmlkX2xvY2soY29ubik7CisgICAgaWYoIUN1cmxfc3NsX2dldHNlc3Npb25pZChjb25uLCAmc2Vzc2lvbiwgTlVMTCwgc29ja2luZGV4KSkgeworICAgICAgYnJfc3NsX2VuZ2luZV9zZXRfc2Vzc2lvbl9wYXJhbWV0ZXJzKCZCQUNLRU5ELT5jdHguZW5nLCBzZXNzaW9uKTsKKyAgICAgIGluZm9mKGRhdGEsICJCZWFyU1NMOiByZS11c2luZyBzZXNzaW9uIElEXG4iKTsKKyAgICB9CisgICAgQ3VybF9zc2xfc2Vzc2lvbmlkX3VubG9jayhjb25uKTsKKyAgfQorCisgIGlmKGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuKSB7CisgICAgaW50IGN1ciA9IDA7CisKKyAgICAvKiBOT1RFOiB3aGVuIGFkZGluZyBtb3JlIHByb3RvY29scyBoZXJlLCBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgKiBwcm90b2NvbHMgYXJyYXkgaW4gYHN0cnVjdCBzc2xfYmFja2VuZF9kYXRhYC4KKyAgICAgKi8KKworI2lmZGVmIFVTRV9OR0hUVFAyCisgICAgaWYoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID49IENVUkxfSFRUUF9WRVJTSU9OXzIgJiYKKyAgICAgICAoIVNTTF9JU19QUk9YWSgpIHx8ICFjb25uLT5iaXRzLnR1bm5lbF9wcm94eSkpIHsKKyAgICAgIEJBQ0tFTkQtPnByb3RvY29sc1tjdXIrK10gPSBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQ7CisgICAgICBpbmZvZihkYXRhLCAiQUxQTiwgb2ZmZXJpbmcgJXNcbiIsIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCk7CisgICAgfQorI2VuZGlmCisKKyAgICBCQUNLRU5ELT5wcm90b2NvbHNbY3VyKytdID0gQUxQTl9IVFRQXzFfMTsKKyAgICBpbmZvZihkYXRhLCAiQUxQTiwgb2ZmZXJpbmcgJXNcbiIsIEFMUE5fSFRUUF8xXzEpOworCisgICAgYnJfc3NsX2VuZ2luZV9zZXRfcHJvdG9jb2xfbmFtZXMoJkJBQ0tFTkQtPmN0eC5lbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFDS0VORC0+cHJvdG9jb2xzLCBjdXIpOworICB9CisKKyAgaWYoKDEgPT0gQ3VybF9pbmV0X3B0b24oQUZfSU5FVCwgaG9zdG5hbWUsICZhZGRyKSkKKyNpZmRlZiBFTkFCTEVfSVBWNgorICAgICAgfHwgKDEgPT0gQ3VybF9pbmV0X3B0b24oQUZfSU5FVDYsIGhvc3RuYW1lLCAmYWRkcikpCisjZW5kaWYKKyAgICAgKSB7CisgICAgaWYodmVyaWZ5aG9zdCkgeworICAgICAgZmFpbGYoZGF0YSwgIkJlYXJTU0w6ICIKKyAgICAgICAgICAgICJob3N0IHZlcmlmaWNhdGlvbiBvZiBJUCBhZGRyZXNzIGlzIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgIHJldHVybiBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047CisgICAgfQorICAgIGhvc3RuYW1lID0gTlVMTDsKKyAgfQorCisgIGlmKCFicl9zc2xfY2xpZW50X3Jlc2V0KCZCQUNLRU5ELT5jdHgsIGhvc3RuYW1lLCAwKSkKKyAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgIEJBQ0tFTkQtPmFjdGl2ZSA9IFRSVUU7CisKKyAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9IHNzbF9jb25uZWN0XzI7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCitzdGF0aWMgQ1VSTGNvZGUgYmVhcnNzbF9ydW5fdW50aWwoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCkKK3sKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOworICBjdXJsX3NvY2tldF90IHNvY2tmZCA9IGNvbm4tPnNvY2tbc29ja2luZGV4XTsKKyAgdW5zaWduZWQgc3RhdGU7CisgIHVuc2lnbmVkIGNoYXIgKmJ1ZjsKKyAgc2l6ZV90IGxlbjsKKyAgc3NpemVfdCByZXQ7CisgIGludCBlcnI7CisKKyAgZm9yKDs7KSB7CisgICAgc3RhdGUgPSBicl9zc2xfZW5naW5lX2N1cnJlbnRfc3RhdGUoJkJBQ0tFTkQtPmN0eC5lbmcpOworICAgIGlmKHN0YXRlICYgQlJfU1NMX0NMT1NFRCkgeworICAgICAgZXJyID0gYnJfc3NsX2VuZ2luZV9sYXN0X2Vycm9yKCZCQUNLRU5ELT5jdHguZW5nKTsKKyAgICAgIHN3aXRjaChlcnIpIHsKKyAgICAgIGNhc2UgQlJfRVJSX09LOgorICAgICAgICAvKiBUTFMgY2xvc2Ugbm90aWZ5ICovCisgICAgICAgIGlmKGNvbm5zc2wtPnN0YXRlICE9IHNzbF9jb25uZWN0aW9uX2NvbXBsZXRlKSB7CisgICAgICAgICAgZmFpbGYoZGF0YSwgIlNTTDogY29ubmVjdGlvbiBjbG9zZWQgZHVyaW5nIGhhbmRzaGFrZSIpOworICAgICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgICBjYXNlIEJSX0VSUl9YNTA5X0VYUElSRUQ6CisgICAgICAgIGZhaWxmKGRhdGEsICJTU0w6IFguNTA5IHZlcmlmaWNhdGlvbjogIgorICAgICAgICAgICAgICAiY2VydGlmaWNhdGUgaXMgZXhwaXJlZCBvciBub3QgeWV0IHZhbGlkIik7CisgICAgICAgIHJldHVybiBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047CisgICAgICBjYXNlIEJSX0VSUl9YNTA5X0JBRF9TRVJWRVJfTkFNRToKKyAgICAgICAgZmFpbGYoZGF0YSwgIlNTTDogWC41MDkgdmVyaWZpY2F0aW9uOiAiCisgICAgICAgICAgICAgICJleHBlY3RlZCBzZXJ2ZXIgbmFtZSB3YXMgbm90IGZvdW5kIGluIHRoZSBjaGFpbiIpOworICAgICAgICByZXR1cm4gQ1VSTEVfUEVFUl9GQUlMRURfVkVSSUZJQ0FUSU9OOworICAgICAgY2FzZSBCUl9FUlJfWDUwOV9OT1RfVFJVU1RFRDoKKyAgICAgICAgZmFpbGYoZGF0YSwgIlNTTDogWC41MDkgdmVyaWZpY2F0aW9uOiAiCisgICAgICAgICAgICAgICJjaGFpbiBjb3VsZCBub3QgYmUgbGlua2VkIHRvIGEgdHJ1c3QgYW5jaG9yIik7CisgICAgICAgIHJldHVybiBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047CisgICAgICB9CisgICAgICAvKiBYLjUwOSBlcnJvcnMgYXJlIGRvY3VtZW50ZWQgdG8gaGF2ZSB0aGUgcmFuZ2UgMzIuLjYzICovCisgICAgICBpZihlcnIgPj0gMzIgJiYgZXJyIDwgNjQpCisgICAgICAgIHJldHVybiBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgfQorICAgIGlmKHN0YXRlICYgdGFyZ2V0KQorICAgICAgcmV0dXJuIENVUkxFX09LOworICAgIGlmKHN0YXRlICYgQlJfU1NMX1NFTkRSRUMpIHsKKyAgICAgIGJ1ZiA9IGJyX3NzbF9lbmdpbmVfc2VuZHJlY19idWYoJkJBQ0tFTkQtPmN0eC5lbmcsICZsZW4pOworICAgICAgcmV0ID0gc3dyaXRlKHNvY2tmZCwgYnVmLCBsZW4pOworICAgICAgaWYocmV0ID09IC0xKSB7CisgICAgICAgIGlmKFNPQ0tFUlJOTyA9PSBFQUdBSU4gfHwgU09DS0VSUk5PID09IEVXT1VMREJMT0NLKSB7CisgICAgICAgICAgaWYoY29ubnNzbC0+c3RhdGUgIT0gc3NsX2Nvbm5lY3Rpb25fY29tcGxldGUpCisgICAgICAgICAgICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMl93cml0aW5nOworICAgICAgICAgIHJldHVybiBDVVJMRV9BR0FJTjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQ1VSTEVfV1JJVEVfRVJST1I7CisgICAgICB9CisgICAgICBicl9zc2xfZW5naW5lX3NlbmRyZWNfYWNrKCZCQUNLRU5ELT5jdHguZW5nLCByZXQpOworICAgIH0KKyAgICBlbHNlIGlmKHN0YXRlICYgQlJfU1NMX1JFQ1ZSRUMpIHsKKyAgICAgIGJ1ZiA9IGJyX3NzbF9lbmdpbmVfcmVjdnJlY19idWYoJkJBQ0tFTkQtPmN0eC5lbmcsICZsZW4pOworICAgICAgcmV0ID0gc3JlYWQoc29ja2ZkLCBidWYsIGxlbik7CisgICAgICBpZihyZXQgPT0gMCkgeworICAgICAgICBmYWlsZihkYXRhLCAiU1NMOiBFT0Ygd2l0aG91dCBjbG9zZSBub3RpZnkiKTsKKyAgICAgICAgcmV0dXJuIENVUkxFX1JFQURfRVJST1I7CisgICAgICB9CisgICAgICBpZihyZXQgPT0gLTEpIHsKKyAgICAgICAgaWYoU09DS0VSUk5PID09IEVBR0FJTiB8fCBTT0NLRVJSTk8gPT0gRVdPVUxEQkxPQ0spIHsKKyAgICAgICAgICBpZihjb25uc3NsLT5zdGF0ZSAhPSBzc2xfY29ubmVjdGlvbl9jb21wbGV0ZSkKKyAgICAgICAgICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8yX3JlYWRpbmc7CisgICAgICAgICAgcmV0dXJuIENVUkxFX0FHQUlOOworICAgICAgICB9CisgICAgICAgIHJldHVybiBDVVJMRV9SRUFEX0VSUk9SOworICAgICAgfQorICAgICAgYnJfc3NsX2VuZ2luZV9yZWN2cmVjX2FjaygmQkFDS0VORC0+Y3R4LmVuZywgcmV0KTsKKyAgICB9CisgIH0KK30KKworc3RhdGljIENVUkxjb2RlIGJlYXJzc2xfY29ubmVjdF9zdGVwMihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgpCit7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKKyAgQ1VSTGNvZGUgcmV0OworCisgIHJldCA9IGJlYXJzc2xfcnVuX3VudGlsKGNvbm4sIHNvY2tpbmRleCwgQlJfU1NMX1NFTkRBUFAgfCBCUl9TU0xfUkVDVkFQUCk7CisgIGlmKHJldCA9PSBDVVJMRV9BR0FJTikKKyAgICByZXR1cm4gQ1VSTEVfT0s7CisgIGlmKHJldCA9PSBDVVJMRV9PSykgeworICAgIGlmKGJyX3NzbF9lbmdpbmVfY3VycmVudF9zdGF0ZSgmQkFDS0VORC0+Y3R4LmVuZykgPT0gQlJfU1NMX0NMT1NFRCkgeworICAgICAgZmFpbGYoZGF0YSwgIlNTTDogY29ubmVjdGlvbiBjbG9zZWQgZHVyaW5nIGhhbmRzaGFrZSIpOworICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICAgIH0KKyAgICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMzsKKyAgfQorICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgQ1VSTGNvZGUgYmVhcnNzbF9jb25uZWN0X3N0ZXAzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKK3sKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOworICBDVVJMY29kZSByZXQ7CisKKyAgREVCVUdBU1NFUlQoc3NsX2Nvbm5lY3RfMyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKTsKKworICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgeworICAgIGNvbnN0IGNoYXIgKnByb3RvY29sOworCisgICAgcHJvdG9jb2wgPSBicl9zc2xfZW5naW5lX2dldF9zZWxlY3RlZF9wcm90b2NvbCgmQkFDS0VORC0+Y3R4LmVuZyk7CisgICAgaWYocHJvdG9jb2wpIHsKKyAgICAgIGluZm9mKGRhdGEsICJBTFBOLCBzZXJ2ZXIgYWNjZXB0ZWQgdG8gdXNlICVzXG4iLCBwcm90b2NvbCk7CisKKyNpZmRlZiBVU0VfTkdIVFRQMgorICAgICAgaWYoIXN0cmNtcChwcm90b2NvbCwgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEKSkKKyAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMjsKKyAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgaWYoIXN0cmNtcChwcm90b2NvbCwgQUxQTl9IVFRQXzFfMSkpCisgICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzFfMTsKKyAgICAgIGVsc2UKKyAgICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIHVucmVjb2duaXplZCBwcm90b2NvbCAlc1xuIiwgcHJvdG9jb2wpOworICAgICAgQ3VybF9tdWx0aXVzZV9zdGF0ZShjb25uLCBjb25uLT5uZWducG4gPT0gQ1VSTF9IVFRQX1ZFUlNJT05fMiA/CisgICAgICAgICAgICAgICAgICAgICAgICAgIEJVTkRMRV9NVUxUSVBMRVggOiBCVU5ETEVfTk9fTVVMVElVU0UpOworICAgIH0KKyAgICBlbHNlCisgICAgICBpbmZvZihkYXRhLCAiQUxQTiwgc2VydmVyIGRpZCBub3QgYWdyZWUgdG8gYSBwcm90b2NvbFxuIik7CisgIH0KKworICBpZihTU0xfU0VUX09QVElPTihwcmltYXJ5LnNlc3Npb25pZCkpIHsKKyAgICBib29sIGluY2FjaGU7CisgICAgdm9pZCAqb2xkc2Vzc2lvbjsKKyAgICBicl9zc2xfc2Vzc2lvbl9wYXJhbWV0ZXJzICpzZXNzaW9uOworCisgICAgc2Vzc2lvbiA9IG1hbGxvYyhzaXplb2YoKnNlc3Npb24pKTsKKyAgICBpZighc2Vzc2lvbikKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIGJyX3NzbF9lbmdpbmVfZ2V0X3Nlc3Npb25fcGFyYW1ldGVycygmQkFDS0VORC0+Y3R4LmVuZywgc2Vzc2lvbik7CisgICAgQ3VybF9zc2xfc2Vzc2lvbmlkX2xvY2soY29ubik7CisgICAgaW5jYWNoZSA9ICEoQ3VybF9zc2xfZ2V0c2Vzc2lvbmlkKGNvbm4sICZvbGRzZXNzaW9uLCBOVUxMLCBzb2NraW5kZXgpKTsKKyAgICBpZihpbmNhY2hlKQorICAgICAgQ3VybF9zc2xfZGVsc2Vzc2lvbmlkKGNvbm4sIG9sZHNlc3Npb24pOworICAgIHJldCA9IEN1cmxfc3NsX2FkZHNlc3Npb25pZChjb25uLCBzZXNzaW9uLCAwLCBzb2NraW5kZXgpOworICAgIEN1cmxfc3NsX3Nlc3Npb25pZF91bmxvY2soY29ubik7CisgICAgaWYocmV0KSB7CisgICAgICBmcmVlKHNlc3Npb24pOworICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgfQorICB9CisKKyAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9IHNzbF9jb25uZWN0X2RvbmU7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCitzdGF0aWMgc3NpemVfdCBiZWFyc3NsX3NlbmQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgQ1VSTGNvZGUgKmVycikKK3sKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOworICB1bnNpZ25lZCBjaGFyICphcHA7CisgIHNpemVfdCBhcHBsZW47CisKKyAgZm9yKDs7KSB7CisgICAgKmVyciA9IGJlYXJzc2xfcnVuX3VudGlsKGNvbm4sIHNvY2tpbmRleCwgQlJfU1NMX1NFTkRBUFApOworICAgIGlmICgqZXJyICE9IENVUkxFX09LKQorICAgICAgcmV0dXJuIC0xOworICAgIGFwcCA9IGJyX3NzbF9lbmdpbmVfc2VuZGFwcF9idWYoJkJBQ0tFTkQtPmN0eC5lbmcsICZhcHBsZW4pOworICAgIGlmKCFhcHApIHsKKyAgICAgIGZhaWxmKGRhdGEsICJTU0w6IGNvbm5lY3Rpb24gY2xvc2VkIGR1cmluZyB3cml0ZSIpOworICAgICAgKmVyciA9IENVUkxFX1NFTkRfRVJST1I7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmKEJBQ0tFTkQtPnBlbmRpbmdfd3JpdGUpIHsKKyAgICAgIGFwcGxlbiA9IEJBQ0tFTkQtPnBlbmRpbmdfd3JpdGU7CisgICAgICBCQUNLRU5ELT5wZW5kaW5nX3dyaXRlID0gMDsKKyAgICAgIHJldHVybiBhcHBsZW47CisgICAgfQorICAgIGlmKGFwcGxlbiA+IGxlbikKKyAgICAgIGFwcGxlbiA9IGxlbjsKKyAgICBtZW1jcHkoYXBwLCBidWYsIGFwcGxlbik7CisgICAgYnJfc3NsX2VuZ2luZV9zZW5kYXBwX2FjaygmQkFDS0VORC0+Y3R4LmVuZywgYXBwbGVuKTsKKyAgICBicl9zc2xfZW5naW5lX2ZsdXNoKCZCQUNLRU5ELT5jdHguZW5nLCAwKTsKKyAgICBCQUNLRU5ELT5wZW5kaW5nX3dyaXRlID0gYXBwbGVuOworICB9Cit9CisKK3N0YXRpYyBzc2l6ZV90IGJlYXJzc2xfcmVjdihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBzaXplX3QgbGVuLCBDVVJMY29kZSAqZXJyKQoreworICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKKyAgdW5zaWduZWQgY2hhciAqYXBwOworICBzaXplX3QgYXBwbGVuOworCisgICplcnIgPSBiZWFyc3NsX3J1bl91bnRpbChjb25uLCBzb2NraW5kZXgsIEJSX1NTTF9SRUNWQVBQKTsKKyAgaWYoKmVyciAhPSBDVVJMRV9PSykKKyAgICByZXR1cm4gLTE7CisgIGFwcCA9IGJyX3NzbF9lbmdpbmVfcmVjdmFwcF9idWYoJkJBQ0tFTkQtPmN0eC5lbmcsICZhcHBsZW4pOworICBpZighYXBwKQorICAgIHJldHVybiAwOworICBpZihhcHBsZW4gPiBsZW4pCisgICAgYXBwbGVuID0gbGVuOworICBtZW1jcHkoYnVmLCBhcHAsIGFwcGxlbik7CisgIGJyX3NzbF9lbmdpbmVfcmVjdmFwcF9hY2soJkJBQ0tFTkQtPmN0eC5lbmcsIGFwcGxlbik7CisKKyAgcmV0dXJuIGFwcGxlbjsKK30KKworc3RhdGljIENVUkxjb2RlIGJlYXJzc2xfY29ubmVjdF9jb21tb24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uYmxvY2tpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpkb25lKQoreworICBDVVJMY29kZSByZXQ7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKKyAgY3VybF9zb2NrZXRfdCBzb2NrZmQgPSBjb25uLT5zb2NrW3NvY2tpbmRleF07CisgIHRpbWVfdCB0aW1lb3V0X21zOworICBpbnQgd2hhdDsKKworICAvKiBjaGVjayBpZiB0aGUgY29ubmVjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIGVzdGFibGlzaGVkICovCisgIGlmKHNzbF9jb25uZWN0aW9uX2NvbXBsZXRlID09IGNvbm5zc2wtPnN0YXRlKSB7CisgICAgKmRvbmUgPSBUUlVFOworICAgIHJldHVybiBDVVJMRV9PSzsKKyAgfQorCisgIGlmKHNzbF9jb25uZWN0XzEgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSkgeworICAgIHJldCA9IGJlYXJzc2xfY29ubmVjdF9zdGVwMShjb25uLCBzb2NraW5kZXgpOworICAgIGlmKHJldCkKKyAgICAgIHJldHVybiByZXQ7CisgIH0KKworICB3aGlsZShzc2xfY29ubmVjdF8yID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKKyAgICAgICAgc3NsX2Nvbm5lY3RfMl9yZWFkaW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKKyAgICAgICAgc3NsX2Nvbm5lY3RfMl93cml0aW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpIHsKKyAgICAvKiBjaGVjayBhbGxvd2VkIHRpbWUgbGVmdCAqLworICAgIHRpbWVvdXRfbXMgPSBDdXJsX3RpbWVsZWZ0KGRhdGEsIE5VTEwsIFRSVUUpOworCisgICAgaWYodGltZW91dF9tcyA8IDApIHsKKyAgICAgIC8qIG5vIG5lZWQgdG8gY29udGludWUgaWYgdGltZSBhbHJlYWR5IGlzIHVwICovCisgICAgICBmYWlsZihkYXRhLCAiU1NMIGNvbm5lY3Rpb24gdGltZW91dCIpOworICAgICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKKyAgICB9CisKKyAgICAvKiBpZiBzc2wgaXMgZXhwZWN0aW5nIHNvbWV0aGluZywgY2hlY2sgaWYgaXQncyBhdmFpbGFibGUuICovCisgICAgaWYoc3NsX2Nvbm5lY3RfMl9yZWFkaW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKKyAgICAgICBzc2xfY29ubmVjdF8yX3dyaXRpbmcgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSkgeworCisgICAgICBjdXJsX3NvY2tldF90IHdyaXRlZmQgPSBzc2xfY29ubmVjdF8yX3dyaXRpbmcgPT0KKyAgICAgICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZT9zb2NrZmQ6Q1VSTF9TT0NLRVRfQkFEOworICAgICAgY3VybF9zb2NrZXRfdCByZWFkZmQgPSBzc2xfY29ubmVjdF8yX3JlYWRpbmcgPT0KKyAgICAgICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZT9zb2NrZmQ6Q1VSTF9TT0NLRVRfQkFEOworCisgICAgICB3aGF0ID0gQ3VybF9zb2NrZXRfY2hlY2socmVhZGZkLCBDVVJMX1NPQ0tFVF9CQUQsIHdyaXRlZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uYmxvY2tpbmc/MDp0aW1lb3V0X21zKTsKKyAgICAgIGlmKHdoYXQgPCAwKSB7CisgICAgICAgIC8qIGZhdGFsIGVycm9yICovCisgICAgICAgIGZhaWxmKGRhdGEsICJzZWxlY3QvcG9sbCBvbiBTU0wgc29ja2V0LCBlcnJubzogJWQiLCBTT0NLRVJSTk8pOworICAgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgICB9CisgICAgICBlbHNlIGlmKDAgPT0gd2hhdCkgeworICAgICAgICBpZihub25ibG9ja2luZykgeworICAgICAgICAgICpkb25lID0gRkFMU0U7CisgICAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIC8qIHRpbWVvdXQgKi8KKyAgICAgICAgICBmYWlsZihkYXRhLCAiU1NMIGNvbm5lY3Rpb24gdGltZW91dCIpOworICAgICAgICAgIHJldHVybiBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIC8qIHNvY2tldCBpcyByZWFkYWJsZSBvciB3cml0YWJsZSAqLworICAgIH0KKworICAgIC8qIFJ1biB0cmFuc2FjdGlvbiwgYW5kIHJldHVybiB0byB0aGUgY2FsbGVyIGlmIGl0IGZhaWxlZCBvciBpZiB0aGlzCisgICAgICogY29ubmVjdGlvbiBpcyBkb25lIG5vbmJsb2NraW5nIGFuZCB0aGlzIGxvb3Agd291bGQgZXhlY3V0ZSBhZ2Fpbi4gVGhpcworICAgICAqIHBlcm1pdHMgdGhlIG93bmVyIG9mIGEgbXVsdGkgaGFuZGxlIHRvIGFib3J0IGEgY29ubmVjdGlvbiBhdHRlbXB0CisgICAgICogYmVmb3JlIHN0ZXAyIGhhcyBjb21wbGV0ZWQgd2hpbGUgZW5zdXJpbmcgdGhhdCBhIGNsaWVudCB1c2luZyBzZWxlY3QoKQorICAgICAqIG9yIGVwb2xsKCkgd2lsbCBhbHdheXMgaGF2ZSBhIHZhbGlkIGZkc2V0IHRvIHdhaXQgb24uCisgICAgICovCisgICAgcmV0ID0gYmVhcnNzbF9jb25uZWN0X3N0ZXAyKGNvbm4sIHNvY2tpbmRleCk7CisgICAgaWYocmV0IHx8IChub25ibG9ja2luZyAmJgorICAgICAgICAgICAgICAgKHNzbF9jb25uZWN0XzIgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSB8fAorICAgICAgICAgICAgICAgIHNzbF9jb25uZWN0XzJfcmVhZGluZyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlIHx8CisgICAgICAgICAgICAgICAgc3NsX2Nvbm5lY3RfMl93cml0aW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpKSkKKyAgICAgIHJldHVybiByZXQ7CisgIH0KKworICBpZihzc2xfY29ubmVjdF8zID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpIHsKKyAgICByZXQgPSBiZWFyc3NsX2Nvbm5lY3Rfc3RlcDMoY29ubiwgc29ja2luZGV4KTsKKyAgICBpZihyZXQpCisgICAgICByZXR1cm4gcmV0OworICB9CisKKyAgaWYoc3NsX2Nvbm5lY3RfZG9uZSA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKSB7CisgICAgY29ubnNzbC0+c3RhdGUgPSBzc2xfY29ubmVjdGlvbl9jb21wbGV0ZTsKKyAgICBjb25uLT5yZWN2W3NvY2tpbmRleF0gPSBiZWFyc3NsX3JlY3Y7CisgICAgY29ubi0+c2VuZFtzb2NraW5kZXhdID0gYmVhcnNzbF9zZW5kOworICAgICpkb25lID0gVFJVRTsKKyAgfQorICBlbHNlCisgICAgKmRvbmUgPSBGQUxTRTsKKworICAvKiBSZXNldCBvdXIgY29ubmVjdCBzdGF0ZSBtYWNoaW5lICovCisgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8xOworCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworc3RhdGljIHNpemVfdCBDdXJsX2JlYXJzc2xfdmVyc2lvbihjaGFyICpidWZmZXIsIHNpemVfdCBzaXplKQoreworICByZXR1cm4gbXNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIkJlYXJTU0wiKTsKK30KKworc3RhdGljIGJvb2wgQ3VybF9iZWFyc3NsX2RhdGFfcGVuZGluZyhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb25uaW5kZXgpCit7CisgIGNvbnN0IHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtjb25uaW5kZXhdOworCisgIHJldHVybiBicl9zc2xfZW5naW5lX2N1cnJlbnRfc3RhdGUoJkJBQ0tFTkQtPmN0eC5lbmcpICYgQlJfU1NMX1JFQ1ZBUFA7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBDdXJsX2JlYXJzc2xfcmFuZG9tKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgVU5VU0VEX1BBUkFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqZW50cm9weSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgc3RhdGljIGJyX2htYWNfZHJiZ19jb250ZXh0IGN0eDsKKyAgc3RhdGljIGJvb2wgc2VlZGVkID0gRkFMU0U7CisKKyAgaWYoIXNlZWRlZCkgeworICAgIGJyX3Bybmdfc2VlZGVyIHNlZWRlcjsKKworICAgIGJyX2htYWNfZHJiZ19pbml0KCZjdHgsICZicl9zaGEyNTZfdnRhYmxlLCBOVUxMLCAwKTsKKyAgICBzZWVkZXIgPSBicl9wcm5nX3NlZWRlcl9zeXN0ZW0oTlVMTCk7CisgICAgaWYoIXNlZWRlciB8fCAhc2VlZGVyKCZjdHgudnRhYmxlKSkKKyAgICAgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKKyAgICBzZWVkZWQgPSBUUlVFOworICB9CisgIGJyX2htYWNfZHJiZ19nZW5lcmF0ZSgmY3R4LCBlbnRyb3B5LCBsZW5ndGgpOworCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworc3RhdGljIENVUkxjb2RlIEN1cmxfYmVhcnNzbF9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKK3sKKyAgQ1VSTGNvZGUgcmV0OworICBib29sIGRvbmUgPSBGQUxTRTsKKworICByZXQgPSBiZWFyc3NsX2Nvbm5lY3RfY29tbW9uKGNvbm4sIHNvY2tpbmRleCwgRkFMU0UsICZkb25lKTsKKyAgaWYocmV0KQorICAgIHJldHVybiByZXQ7CisKKyAgREVCVUdBU1NFUlQoZG9uZSk7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCitzdGF0aWMgQ1VSTGNvZGUgQ3VybF9iZWFyc3NsX2Nvbm5lY3Rfbm9uYmxvY2tpbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgsIGJvb2wgKmRvbmUpCit7CisgIHJldHVybiBiZWFyc3NsX2Nvbm5lY3RfY29tbW9uKGNvbm4sIHNvY2tpbmRleCwgVFJVRSwgZG9uZSk7Cit9CisKK3N0YXRpYyB2b2lkICpDdXJsX2JlYXJzc2xfZ2V0X2ludGVybmFscyhzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMSU5GTyBpbmZvIFVOVVNFRF9QQVJBTSkKK3sKKyAgcmV0dXJuICZCQUNLRU5ELT5jdHg7Cit9CisKK3N0YXRpYyB2b2lkIEN1cmxfYmVhcnNzbF9jbG9zZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgpCit7CisgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOworICBzaXplX3QgaTsKKworICBpZihCQUNLRU5ELT5hY3RpdmUpIHsKKyAgICBicl9zc2xfZW5naW5lX2Nsb3NlKCZCQUNLRU5ELT5jdHguZW5nKTsKKyAgICAodm9pZCliZWFyc3NsX3J1bl91bnRpbChjb25uLCBzb2NraW5kZXgsIEJSX1NTTF9DTE9TRUQpOworICB9CisgIGZvcihpID0gMDsgaSA8IEJBQ0tFTkQtPmFuY2hvcnNfbGVuOyArK2kpCisgICAgZnJlZShCQUNLRU5ELT5hbmNob3JzW2ldLmRuLmRhdGEpOworICBmcmVlKEJBQ0tFTkQtPmFuY2hvcnMpOworfQorCitzdGF0aWMgdm9pZCBDdXJsX2JlYXJzc2xfc2Vzc2lvbl9mcmVlKHZvaWQgKnB0cikKK3sKKyAgZnJlZShwdHIpOworfQorCitzdGF0aWMgQ1VSTGNvZGUgQ3VybF9iZWFyc3NsX21kNXN1bSh1bnNpZ25lZCBjaGFyICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm1kNXN1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtZDVsZW4gVU5VU0VEX1BBUkFNKQoreworICBicl9tZDVfY29udGV4dCBjdHg7CisKKyAgYnJfbWQ1X2luaXQoJmN0eCk7CisgIGJyX21kNV91cGRhdGUoJmN0eCwgaW5wdXQsIGlucHV0bGVuKTsKKyAgYnJfbWQ1X291dCgmY3R4LCBtZDVzdW0pOworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBDdXJsX2JlYXJzc2xfc2hhMjU2c3VtKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2hhMjU2c3VtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNoYTI1NmxlbiBVTlVTRURfUEFSQU0pCit7CisgIGJyX3NoYTI1Nl9jb250ZXh0IGN0eDsKKworICBicl9zaGEyNTZfaW5pdCgmY3R4KTsKKyAgYnJfc2hhMjU2X3VwZGF0ZSgmY3R4LCBpbnB1dCwgaW5wdXRsZW4pOworICBicl9zaGEyNTZfb3V0KCZjdHgsIHNoYTI1NnN1bSk7CisgIHJldHVybiBDVVJMRV9PSzsKK30KKworY29uc3Qgc3RydWN0IEN1cmxfc3NsIEN1cmxfc3NsX2JlYXJzc2wgPSB7CisgIHsgQ1VSTFNTTEJBQ0tFTkRfQkVBUlNTTCwgImJlYXJzc2wiIH0sCisKKyAgMCwKKworICBzaXplb2Yoc3RydWN0IHNzbF9iYWNrZW5kX2RhdGEpLAorCisgIEN1cmxfbm9uZV9pbml0LAorICBDdXJsX25vbmVfY2xlYW51cCwKKyAgQ3VybF9iZWFyc3NsX3ZlcnNpb24sCisgIEN1cmxfbm9uZV9jaGVja19jeG4sCisgIEN1cmxfbm9uZV9zaHV0ZG93biwKKyAgQ3VybF9iZWFyc3NsX2RhdGFfcGVuZGluZywKKyAgQ3VybF9iZWFyc3NsX3JhbmRvbSwKKyAgQ3VybF9ub25lX2NlcnRfc3RhdHVzX3JlcXVlc3QsCisgIEN1cmxfYmVhcnNzbF9jb25uZWN0LAorICBDdXJsX2JlYXJzc2xfY29ubmVjdF9ub25ibG9ja2luZywKKyAgQ3VybF9iZWFyc3NsX2dldF9pbnRlcm5hbHMsCisgIEN1cmxfYmVhcnNzbF9jbG9zZSwKKyAgQ3VybF9ub25lX2Nsb3NlX2FsbCwKKyAgQ3VybF9iZWFyc3NsX3Nlc3Npb25fZnJlZSwKKyAgQ3VybF9ub25lX3NldF9lbmdpbmUsCisgIEN1cmxfbm9uZV9zZXRfZW5naW5lX2RlZmF1bHQsCisgIEN1cmxfbm9uZV9lbmdpbmVzX2xpc3QsCisgIEN1cmxfbm9uZV9mYWxzZV9zdGFydCwKKyAgQ3VybF9iZWFyc3NsX21kNXN1bSwKKyAgQ3VybF9iZWFyc3NsX3NoYTI1NnN1bQorfTsKKworI2VuZGlmIC8qIFVTRV9CRUFSU1NMICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL2JlYXJzc2wuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvYmVhcnNzbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmOTQ5MjIKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL2JlYXJzc2wuaApAQCAtMCwwICsxLDMyIEBACisjaWZuZGVmIEhFQURFUl9DVVJMX0JFQVJTU0xfSAorI2RlZmluZSBIRUFERVJfQ1VSTF9CRUFSU1NMX0gKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxOSwgTWljaGFlbCBGb3JuZXksIDxtZm9ybmV5QG1mb3JuZXkub3JnPgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZmRlZiBVU0VfQkVBUlNTTAorCitleHRlcm4gY29uc3Qgc3RydWN0IEN1cmxfc3NsIEN1cmxfc3NsX2JlYXJzc2w7CisKKyNlbmRpZiAvKiBVU0VfQkVBUlNTTCAqLworI2VuZGlmIC8qIEhFQURFUl9DVVJMX0JFQVJTU0xfSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9jeWFzc2wuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvY3lhc3NsLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YTJiZGQuLjAwMDAwMDAKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9jeWFzc2wuYworKysgL2Rldi9udWxsCkBAIC0xLDEwMTggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwotICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0gKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAotICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCi0gKgotICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCi0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotICogU291cmNlIGZpbGUgZm9yIGFsbCBDeWFTU0wtc3BlY2lmaWMgY29kZSBmb3IgdGhlIFRMUy9TU0wgbGF5ZXIuIE5vIGNvZGUKLSAqIGJ1dCB2dGxzLmMgc2hvdWxkIGV2ZXIgY2FsbCBvciB1c2UgdGhlc2UgZnVuY3Rpb25zLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY3VybF9zZXR1cC5oIgotCi0jaWZkZWYgVVNFX0NZQVNTTAotCi0jZGVmaW5lIFdPTEZTU0xfT1BUSU9OU19JR05PUkVfU1lTCi0vKiBDeWFTU0wncyB2ZXJzaW9uLmgsIHdoaWNoIHNob3VsZCBjb250YWluIG9ubHkgdGhlIHZlcnNpb24sIHNob3VsZCBjb21lCi1iZWZvcmUgYWxsIG90aGVyIEN5YVNTTCBpbmNsdWRlcyBhbmQgYmUgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYnVpbGQgY29uZmlnCi1ha2Egb3B0aW9ucy5oLiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDE1LTA0LzAwNjkuaHRtbCAqLwotI2luY2x1ZGUgPGN5YXNzbC92ZXJzaW9uLmg+Ci0jaWYgZGVmaW5lZChIQVZFX0NZQVNTTF9PUFRJT05TX0gpICYmIChMSUJDWUFTU0xfVkVSU0lPTl9IRVggPiAweDAzMDA0MDA4KQotI2lmIGRlZmluZWQoQ1lBU1NMX0FQSSkgfHwgZGVmaW5lZChXT0xGU1NMX0FQSSkKLS8qIFNhZmV0eSBtZWFzdXJlLiBJZiBlaXRoZXIgaXMgZGVmaW5lZCBzb21lIEFQSSBpbmNsdWRlIHdhcyBhbHJlYWR5IGluY2x1ZGVkCi1hbmQgdGhhdCdzIGEgcHJvYmxlbSBzaW5jZSBvcHRpb25zLmggaGFzbid0IGJlZW4gaW5jbHVkZWQgeWV0LiAqLwotI2Vycm9yICJDeWFTU0wgQVBJIHdhcyBpbmNsdWRlZCBiZWZvcmUgdGhlIEN5YVNTTCBidWlsZCBvcHRpb25zLiIKLSNlbmRpZgotI2luY2x1ZGUgPGN5YXNzbC9vcHRpb25zLmg+Ci0jZW5kaWYKLQotLyogVG8gZGV0ZXJtaW5lIHdoYXQgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2UgcmVseSBvbiBvbmUgb3IgYm90aCBvZjoKLSAgIC0gdGhlIHVzZXIncyBvcHRpb25zLmggZ2VuZXJhdGVkIGJ5IEN5YVNTTC93b2xmU1NMCi0gICAtIHRoZSBzeW1ib2xzIGRldGVjdGVkIGJ5IGN1cmwncyBjb25maWd1cmUKLSAgIFNpbmNlIHRoZXkgYXJlIG1hcmtlZGx5IGRpZmZlcmVudCBmcm9tIG9uZSBhbm90aGVyLCBhbmQgb25lIG9yIHRoZSBvdGhlciBtYXkKLSAgIG5vdCBiZSBhdmFpbGFibGUsIHdlIGRvIHNvbWUgY2hlY2tpbmcgYmVsb3cgdG8gYnJpbmcgdGhpbmdzIGluIHN5bmMuICovCi0KLS8qIEhBVkVfQUxQTiBpcyB3b2xmU1NMJ3MgYnVpbGQgdGltZSBzeW1ib2wgZm9yIGVuYWJsaW5nIEFMUE4gaW4gb3B0aW9ucy5oLiAqLwotI2lmbmRlZiBIQVZFX0FMUE4KLSNpZmRlZiBIQVZFX1dPTEZTU0xfVVNFQUxQTgotI2RlZmluZSBIQVZFX0FMUE4KLSNlbmRpZgotI2VuZGlmCi0KLS8qIFdPTEZTU0xfQUxMT1dfU1NMVjMgaXMgd29sZlNTTCdzIGJ1aWxkIHRpbWUgc3ltYm9sIGZvciBlbmFibGluZyBTU0x2MyBpbgotICAgb3B0aW9ucy5oLCBidXQgaXMgb25seSBzZWVuIGluID49IDMuNi42IHNpbmNlIHRoYXQncyB3aGVuIHRoZXkgc3RhcnRlZAotICAgZGlzYWJsaW5nIFNTTHYzIGJ5IGRlZmF1bHQuICovCi0jaWZuZGVmIFdPTEZTU0xfQUxMT1dfU1NMVjMKLSNpZiAoTElCQ1lBU1NMX1ZFUlNJT05fSEVYIDwgMHgwMzAwNjAwNikgfHwgXAotICAgIGRlZmluZWQoSEFWRV9XT0xGU1NMVjNfQ0xJRU5UX01FVEhPRCkKLSNkZWZpbmUgV09MRlNTTF9BTExPV19TU0xWMwotI2VuZGlmCi0jZW5kaWYKLQotI2luY2x1ZGUgPGxpbWl0cy5oPgotCi0jaW5jbHVkZSAidXJsZGF0YS5oIgotI2luY2x1ZGUgInNlbmRmLmgiCi0jaW5jbHVkZSAiaW5ldF9wdG9uLmgiCi0jaW5jbHVkZSAidnRscy5oIgotI2luY2x1ZGUgInBhcnNlZGF0ZS5oIgotI2luY2x1ZGUgImNvbm5lY3QuaCIgLyogZm9yIHRoZSBjb25uZWN0IHRpbWVvdXQgKi8KLSNpbmNsdWRlICJzZWxlY3QuaCIKLSNpbmNsdWRlICJzdHJjYXNlLmgiCi0jaW5jbHVkZSAieDUwOWFzbjEuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotI2luY2x1ZGUgIm11bHRpaWYuaCIKLQotI2luY2x1ZGUgPGN5YXNzbC9vcGVuc3NsL3NzbC5oPgotI2luY2x1ZGUgPGN5YXNzbC9zc2wuaD4KLSNpZmRlZiBIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSAotI2luY2x1ZGUgPGN5YXNzbC9lcnJvci1zc2wuaD4KLSNlbHNlCi0jaW5jbHVkZSA8Y3lhc3NsL2Vycm9yLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxjeWFzc2wvY3Rhb2NyeXB0L3JhbmRvbS5oPgotI2luY2x1ZGUgPGN5YXNzbC9jdGFvY3J5cHQvc2hhMjU2Lmg+Ci0KLSNpbmNsdWRlICJjeWFzc2wuaCIKLQotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLwotI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0jaW5jbHVkZSAibWVtZGVidWcuaCIKLQotI2lmIExJQkNZQVNTTF9WRVJTSU9OX0hFWCA8IDB4MDIwMDcwMDIgLyogPCAyLjcuMiAqLwotI2RlZmluZSBDWUFTU0xfTUFYX0VSUk9SX1NaIDgwCi0jZW5kaWYKLQotLyogS0VFUF9QRUVSX0NFUlQgaXMgYSBwcm9kdWN0IG9mIHRoZSBwcmVzZW5jZSBvZiBidWlsZCB0aW1lIHN5bWJvbAotICAgT1BFTlNTTF9FWFRSQSB3aXRob3V0IE5PX0NFUlRTLCBkZXBlbmRpbmcgb24gdGhlIHZlcnNpb24uIEtFRVBfUEVFUl9DRVJUIGlzCi0gICBpbiB3b2xmU1NMJ3Mgc2V0dGluZ3MuaCwgYW5kIHRoZSBsYXR0ZXIgdHdvIGFyZSBidWlsZCB0aW1lIHN5bWJvbHMgaW4KLSAgIG9wdGlvbnMuaC4gKi8KLSNpZm5kZWYgS0VFUF9QRUVSX0NFUlQKLSNpZiBkZWZpbmVkKEhBVkVfQ1lBU1NMX0dFVF9QRUVSX0NFUlRJRklDQVRFKSB8fCBcCi0gICAgZGVmaW5lZChIQVZFX1dPTEZTU0xfR0VUX1BFRVJfQ0VSVElGSUNBVEUpIHx8IFwKLSAgICAoZGVmaW5lZChPUEVOU1NMX0VYVFJBKSAmJiAhZGVmaW5lZChOT19DRVJUUykpCi0jZGVmaW5lIEtFRVBfUEVFUl9DRVJUCi0jZW5kaWYKLSNlbmRpZgotCi1zdHJ1Y3Qgc3NsX2JhY2tlbmRfZGF0YSB7Ci0gIFNTTF9DVFgqIGN0eDsKLSAgU1NMKiAgICAgaGFuZGxlOwotfTsKLQotI2RlZmluZSBCQUNLRU5EIGNvbm5zc2wtPmJhY2tlbmQKLQotc3RhdGljIEN1cmxfcmVjdiBjeWFzc2xfcmVjdjsKLXN0YXRpYyBDdXJsX3NlbmQgY3lhc3NsX3NlbmQ7Ci0KLQotc3RhdGljIGludCBkb19maWxlX3R5cGUoY29uc3QgY2hhciAqdHlwZSkKLXsKLSAgaWYoIXR5cGUgfHwgIXR5cGVbMF0pCi0gICAgcmV0dXJuIFNTTF9GSUxFVFlQRV9QRU07Ci0gIGlmKHN0cmNhc2Vjb21wYXJlKHR5cGUsICJQRU0iKSkKLSAgICByZXR1cm4gU1NMX0ZJTEVUWVBFX1BFTTsKLSAgaWYoc3RyY2FzZWNvbXBhcmUodHlwZSwgIkRFUiIpKQotICAgIHJldHVybiBTU0xfRklMRVRZUEVfQVNOMTsKLSAgcmV0dXJuIC0xOwotfQotCi0vKgotICogVGhpcyBmdW5jdGlvbiBsb2FkcyBhbGwgdGhlIGNsaWVudC9DQSBjZXJ0aWZpY2F0ZXMgYW5kIENSTHMuIFNldHVwIHRoZSBUTFMKLSAqIGxheWVyIGFuZCBkbyBhbGwgbmVjZXNzYXJ5IG1hZ2ljLgotICovCi1zdGF0aWMgQ1VSTGNvZGUKLWN5YXNzbF9jb25uZWN0X3N0ZXAxKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgpCi17Ci0gIGNoYXIgKmNpcGhlcnM7Ci0gIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwotICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSogY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKLSAgU1NMX01FVEhPRCogcmVxX21ldGhvZCA9IE5VTEw7Ci0gIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tzb2NraW5kZXhdOwotI2lmZGVmIEhBVkVfU05JCi0gIGJvb2wgc25pID0gRkFMU0U7Ci0jZGVmaW5lIHVzZV9zbmkoeCkgIHNuaSA9ICh4KQotI2Vsc2UKLSNkZWZpbmUgdXNlX3NuaSh4KSAgQ3VybF9ub3Bfc3RtdAotI2VuZGlmCi0KLSAgaWYoY29ubnNzbC0+c3RhdGUgPT0gc3NsX2Nvbm5lY3Rpb25fY29tcGxldGUpCi0gICAgcmV0dXJuIENVUkxFX09LOwotCi0gIGlmKFNTTF9DT05OX0NPTkZJRyh2ZXJzaW9uX21heCkgIT0gQ1VSTF9TU0xWRVJTSU9OX01BWF9OT05FKSB7Ci0gICAgZmFpbGYoZGF0YSwgIkN5YVNTTCBkb2VzIG5vdCBzdXBwb3J0IHRvIHNldCBtYXhpbXVtIFNTTC9UTFMgdmVyc2lvbiIpOwotICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKLSAgfQotCi0gIC8qIGNoZWNrIHRvIHNlZSBpZiB3ZSd2ZSBiZWVuIHRvbGQgdG8gdXNlIGFuIGV4cGxpY2l0IFNTTC9UTFMgdmVyc2lvbiAqLwotICBzd2l0Y2goU1NMX0NPTk5fQ09ORklHKHZlcnNpb24pKSB7Ci0gIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX0RFRkFVTFQ6Ci0gIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxOgotI2lmIExJQkNZQVNTTF9WRVJTSU9OX0hFWCA+PSAweDAzMDAzMDAwIC8qID49IDMuMy4wICovCi0gICAgLyogbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uIGlzIHNldCBsYXRlciBhZnRlciB0aGUgQ1RYIG9iamVjdCBpcyBjcmVhdGVkICovCi0gICAgcmVxX21ldGhvZCA9IFNTTHYyM19jbGllbnRfbWV0aG9kKCk7Ci0jZWxzZQotICAgIGluZm9mKGRhdGEsICJDeWFTU0wgPDMuMy4wIGNhbm5vdCBiZSBjb25maWd1cmVkIHRvIHVzZSBUTFMgMS4wLTEuMiwgIgotICAgICAgICAgICJUTFMgMS4wIGlzIHVzZWQgZXhjbHVzaXZlbHlcbiIpOwotICAgIHJlcV9tZXRob2QgPSBUTFN2MV9jbGllbnRfbWV0aG9kKCk7Ci0jZW5kaWYKLSAgICB1c2Vfc25pKFRSVUUpOwotICAgIGJyZWFrOwotICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8wOgotI2lmZGVmIFdPTEZTU0xfQUxMT1dfVExTVjEwCi0gICAgcmVxX21ldGhvZCA9IFRMU3YxX2NsaWVudF9tZXRob2QoKTsKLSAgICB1c2Vfc25pKFRSVUUpOwotI2Vsc2UKLSAgICBmYWlsZihkYXRhLCAiQ3lhU1NMIGRvZXMgbm90IHN1cHBvcnQgVExTIDEuMCIpOwotICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47Ci0jZW5kaWYKLSAgICBicmVhazsKLSAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjFfMToKLSAgICByZXFfbWV0aG9kID0gVExTdjFfMV9jbGllbnRfbWV0aG9kKCk7Ci0gICAgdXNlX3NuaShUUlVFKTsKLSAgICBicmVhazsKLSAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjFfMjoKLSAgICByZXFfbWV0aG9kID0gVExTdjFfMl9jbGllbnRfbWV0aG9kKCk7Ci0gICAgdXNlX3NuaShUUlVFKTsKLSAgICBicmVhazsKLSAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjFfMzoKLSNpZmRlZiBXT0xGU1NMX1RMUzEzCi0gICAgcmVxX21ldGhvZCA9IHdvbGZUTFN2MV8zX2NsaWVudF9tZXRob2QoKTsKLSAgICB1c2Vfc25pKFRSVUUpOwotICAgIGJyZWFrOwotI2Vsc2UKLSAgICBmYWlsZihkYXRhLCAiQ3lhU1NMOiBUTFMgMS4zIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIik7Ci0gICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwotI2VuZGlmCi0gIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1NTTHYzOgotI2lmZGVmIFdPTEZTU0xfQUxMT1dfU1NMVjMKLSAgICByZXFfbWV0aG9kID0gU1NMdjNfY2xpZW50X21ldGhvZCgpOwotICAgIHVzZV9zbmkoRkFMU0UpOwotI2Vsc2UKLSAgICBmYWlsZihkYXRhLCAiQ3lhU1NMIGRvZXMgbm90IHN1cHBvcnQgU1NMdjMiKTsKLSAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOwotI2VuZGlmCi0gICAgYnJlYWs7Ci0gIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1NTTHYyOgotICAgIGZhaWxmKGRhdGEsICJDeWFTU0wgZG9lcyBub3Qgc3VwcG9ydCBTU0x2MiIpOwotICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKLSAgZGVmYXVsdDoKLSAgICBmYWlsZihkYXRhLCAiVW5yZWNvZ25pemVkIHBhcmFtZXRlciBwYXNzZWQgdmlhIENVUkxPUFRfU1NMVkVSU0lPTiIpOwotICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKLSAgfQotCi0gIGlmKCFyZXFfbWV0aG9kKSB7Ci0gICAgZmFpbGYoZGF0YSwgIlNTTDogY291bGRuJ3QgY3JlYXRlIGEgbWV0aG9kISIpOwotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgaWYoQkFDS0VORC0+Y3R4KQotICAgIFNTTF9DVFhfZnJlZShCQUNLRU5ELT5jdHgpOwotICBCQUNLRU5ELT5jdHggPSBTU0xfQ1RYX25ldyhyZXFfbWV0aG9kKTsKLQotICBpZighQkFDS0VORC0+Y3R4KSB7Ci0gICAgZmFpbGYoZGF0YSwgIlNTTDogY291bGRuJ3QgY3JlYXRlIGEgY29udGV4dCEiKTsKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgfQotCi0gIHN3aXRjaChTU0xfQ09OTl9DT05GSUcodmVyc2lvbikpIHsKLSAgY2FzZSBDVVJMX1NTTFZFUlNJT05fREVGQVVMVDoKLSAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjE6Ci0jaWYgTElCQ1lBU1NMX1ZFUlNJT05fSEVYID4gMHgwMzAwNDAwNiAvKiA+IDMuNC42ICovCi0gICAgLyogVmVyc2lvbnMgMy4zLjAgdG8gMy40LjYgd2Uga25vdyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uIGlzIHdoYXRldmVyCi0gICAgbWluaW11bSB2ZXJzaW9uIG9mIFRMUyB3YXMgYnVpbHQgaW4gYW5kIGF0IGxlYXN0IFRMUyAxLjAuIEZvciBsYXRlciBsaWJyYXJ5Ci0gICAgdmVyc2lvbnMgdGhhdCBjb3VsZCBjaGFuZ2UgKGVnIFRMUyAxLjAgYnVpbHQgaW4gYnV0IGRlZmF1bHRzIHRvIFRMUyAxLjEpIHNvCi0gICAgd2UgaGF2ZSB0aGlzIHNob3J0IGNpcmN1aXQgZXZhbHVhdGlvbiB0byBmaW5kIHRoZSBtaW5pbXVtIHN1cHBvcnRlZCBUTFMKLSAgICB2ZXJzaW9uLiBXZSB1c2Ugd29sZlNTTF9DVFhfU2V0TWluVmVyc2lvbiBhbmQgbm90IEN5YVNTTF9TZXRNaW5WZXJzaW9uCi0gICAgYmVjYXVzZSBvbmx5IHRoZSBmb3JtZXIgd2lsbCB3b3JrIGJlZm9yZSB0aGUgdXNlcidzIENUWCBjYWxsYmFjayBpcyBjYWxsZWQuCi0gICAgKi8KLSAgICBpZigod29sZlNTTF9DVFhfU2V0TWluVmVyc2lvbihCQUNLRU5ELT5jdHgsIFdPTEZTU0xfVExTVjEpICE9IDEpICYmCi0gICAgICAgKHdvbGZTU0xfQ1RYX1NldE1pblZlcnNpb24oQkFDS0VORC0+Y3R4LCBXT0xGU1NMX1RMU1YxXzEpICE9IDEpICYmCi0gICAgICAgKHdvbGZTU0xfQ1RYX1NldE1pblZlcnNpb24oQkFDS0VORC0+Y3R4LCBXT0xGU1NMX1RMU1YxXzIpICE9IDEpCi0jaWZkZWYgV09MRlNTTF9UTFMxMwotICAgICAgICYmICh3b2xmU1NMX0NUWF9TZXRNaW5WZXJzaW9uKEJBQ0tFTkQtPmN0eCwgV09MRlNTTF9UTFNWMV8zKSAhPSAxKQotI2VuZGlmCi0gICAgICApIHsKLSAgICAgIGZhaWxmKGRhdGEsICJTU0w6IGNvdWxkbid0IHNldCB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uIik7Ci0gICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7Ci0gICAgfQotI2VuZGlmCi0gICAgYnJlYWs7Ci0gIH0KLQotICBjaXBoZXJzID0gU1NMX0NPTk5fQ09ORklHKGNpcGhlcl9saXN0KTsKLSAgaWYoY2lwaGVycykgewotICAgIGlmKCFTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdChCQUNLRU5ELT5jdHgsIGNpcGhlcnMpKSB7Ci0gICAgICBmYWlsZihkYXRhLCAiZmFpbGVkIHNldHRpbmcgY2lwaGVyIGxpc3Q6ICVzIiwgY2lwaGVycyk7Ci0gICAgICByZXR1cm4gQ1VSTEVfU1NMX0NJUEhFUjsKLSAgICB9Ci0gICAgaW5mb2YoZGF0YSwgIkNpcGhlciBzZWxlY3Rpb246ICVzXG4iLCBjaXBoZXJzKTsKLSAgfQotCi0jaWZuZGVmIE5PX0ZJTEVTWVNURU0KLSAgLyogbG9hZCB0cnVzdGVkIGNhY2VydCAqLwotICBpZihTU0xfQ09OTl9DT05GSUcoQ0FmaWxlKSkgewotICAgIGlmKDEgIT0gU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQkFDS0VORC0+Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfQ09OTl9DT05GSUcoQ0FmaWxlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX0NPTk5fQ09ORklHKENBcGF0aCkpKSB7Ci0gICAgICBpZihTU0xfQ09OTl9DT05GSUcodmVyaWZ5cGVlcikpIHsKLSAgICAgICAgLyogRmFpbCBpZiB3ZSBpbnNpc3Qgb24gc3VjY2Vzc2Z1bGx5IHZlcmlmeWluZyB0aGUgc2VydmVyLiAqLwotICAgICAgICBmYWlsZihkYXRhLCAiZXJyb3Igc2V0dGluZyBjZXJ0aWZpY2F0ZSB2ZXJpZnkgbG9jYXRpb25zOlxuIgotICAgICAgICAgICAgICAiICBDQWZpbGU6ICVzXG4gIENBcGF0aDogJXMiLAotICAgICAgICAgICAgICBTU0xfQ09OTl9DT05GSUcoQ0FmaWxlKT8KLSAgICAgICAgICAgICAgU1NMX0NPTk5fQ09ORklHKENBZmlsZSk6ICJub25lIiwKLSAgICAgICAgICAgICAgU1NMX0NPTk5fQ09ORklHKENBcGF0aCk/Ci0gICAgICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhDQXBhdGgpIDogIm5vbmUiKTsKLSAgICAgICAgcmV0dXJuIENVUkxFX1NTTF9DQUNFUlRfQkFERklMRTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICAvKiBKdXN0IGNvbnRpbnVlIHdpdGggYSB3YXJuaW5nIGlmIG5vIHN0cmljdCBjZXJ0aWZpY2F0ZQotICAgICAgICAgICB2ZXJpZmljYXRpb24gaXMgcmVxdWlyZWQuICovCi0gICAgICAgIGluZm9mKGRhdGEsICJlcnJvciBzZXR0aW5nIGNlcnRpZmljYXRlIHZlcmlmeSBsb2NhdGlvbnMsIgotICAgICAgICAgICAgICAiIGNvbnRpbnVpbmcgYW55d2F5OlxuIik7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgLyogRXZlcnl0aGluZyBpcyBmaW5lLiAqLwotICAgICAgaW5mb2YoZGF0YSwgInN1Y2Nlc3NmdWxseSBzZXQgY2VydGlmaWNhdGUgdmVyaWZ5IGxvY2F0aW9uczpcbiIpOwotICAgIH0KLSAgICBpbmZvZihkYXRhLAotICAgICAgICAgICIgIENBZmlsZTogJXNcbiIKLSAgICAgICAgICAiICBDQXBhdGg6ICVzXG4iLAotICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhDQWZpbGUpID8gU1NMX0NPTk5fQ09ORklHKENBZmlsZSk6Ci0gICAgICAgICAgIm5vbmUiLAotICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhDQXBhdGgpID8gU1NMX0NPTk5fQ09ORklHKENBcGF0aCk6Ci0gICAgICAgICAgIm5vbmUiKTsKLSAgfQotCi0gIC8qIExvYWQgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZSwgYW5kIHByaXZhdGUga2V5ICovCi0gIGlmKFNTTF9TRVRfT1BUSU9OKGNlcnQpICYmIFNTTF9TRVRfT1BUSU9OKGtleSkpIHsKLSAgICBpbnQgZmlsZV90eXBlID0gZG9fZmlsZV90eXBlKFNTTF9TRVRfT1BUSU9OKGNlcnRfdHlwZSkpOwotCi0gICAgaWYoU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfZmlsZShCQUNLRU5ELT5jdHgsIFNTTF9TRVRfT1BUSU9OKGNlcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfdHlwZSkgIT0gMSkgewotICAgICAgZmFpbGYoZGF0YSwgInVuYWJsZSB0byB1c2UgY2xpZW50IGNlcnRpZmljYXRlIChubyBrZXkgb3Igd3JvbmcgcGFzcyIKLSAgICAgICAgICAgICIgcGhyYXNlPykiKTsKLSAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKLSAgICB9Ci0KLSAgICBmaWxlX3R5cGUgPSBkb19maWxlX3R5cGUoU1NMX1NFVF9PUFRJT04oa2V5X3R5cGUpKTsKLSAgICBpZihTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUoQkFDS0VORC0+Y3R4LCBTU0xfU0VUX09QVElPTihrZXkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV90eXBlKSAhPSAxKSB7Ci0gICAgICBmYWlsZihkYXRhLCAidW5hYmxlIHRvIHNldCBwcml2YXRlIGtleSIpOwotICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwotICAgIH0KLSAgfQotI2VuZGlmIC8qICFOT19GSUxFU1lTVEVNICovCi0KLSAgLyogU1NMIGFsd2F5cyB0cmllcyB0byB2ZXJpZnkgdGhlIHBlZXIsIHRoaXMgb25seSBzYXlzIHdoZXRoZXIgaXQgc2hvdWxkCi0gICAqIGZhaWwgdG8gY29ubmVjdCBpZiB0aGUgdmVyaWZpY2F0aW9uIGZhaWxzLCBvciBpZiBpdCBzaG91bGQgY29udGludWUKLSAgICogYW55d2F5LiBJbiB0aGUgbGF0dGVyIGNhc2UgdGhlIHJlc3VsdCBvZiB0aGUgdmVyaWZpY2F0aW9uIGlzIGNoZWNrZWQgd2l0aAotICAgKiBTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQoKSBiZWxvdy4gKi8KLSAgU1NMX0NUWF9zZXRfdmVyaWZ5KEJBQ0tFTkQtPmN0eCwKLSAgICAgICAgICAgICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyh2ZXJpZnlwZWVyKT9TU0xfVkVSSUZZX1BFRVI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX1ZFUklGWV9OT05FLAotICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSNpZmRlZiBIQVZFX1NOSQotICBpZihzbmkpIHsKLSAgICBzdHJ1Y3QgaW5fYWRkciBhZGRyNDsKLSNpZmRlZiBFTkFCTEVfSVBWNgotICAgIHN0cnVjdCBpbjZfYWRkciBhZGRyNjsKLSNlbmRpZgotICAgIGNvbnN0IGNoYXIgKiBjb25zdCBob3N0bmFtZSA9IFNTTF9JU19QUk9YWSgpID8gY29ubi0+aHR0cF9wcm94eS5ob3N0Lm5hbWUgOgotICAgICAgY29ubi0+aG9zdC5uYW1lOwotICAgIHNpemVfdCBob3N0bmFtZV9sZW4gPSBzdHJsZW4oaG9zdG5hbWUpOwotICAgIGlmKChob3N0bmFtZV9sZW4gPCBVU0hSVF9NQVgpICYmCi0gICAgICAgKDAgPT0gQ3VybF9pbmV0X3B0b24oQUZfSU5FVCwgaG9zdG5hbWUsICZhZGRyNCkpICYmCi0jaWZkZWYgRU5BQkxFX0lQVjYKLSAgICAgICAoMCA9PSBDdXJsX2luZXRfcHRvbihBRl9JTkVUNiwgaG9zdG5hbWUsICZhZGRyNikpICYmCi0jZW5kaWYKLSAgICAgICAoQ3lhU1NMX0NUWF9Vc2VTTkkoQkFDS0VORC0+Y3R4LCBDWUFTU0xfU05JX0hPU1RfTkFNRSwgaG9zdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBzaG9ydClob3N0bmFtZV9sZW4pICE9IDEpKSB7Ci0gICAgICBpbmZvZihkYXRhLCAiV0FSTklORzogZmFpbGVkIHRvIGNvbmZpZ3VyZSBzZXJ2ZXIgbmFtZSBpbmRpY2F0aW9uIChTTkkpICIKLSAgICAgICAgICAgICJUTFMgZXh0ZW5zaW9uXG4iKTsKLSAgICB9Ci0gIH0KLSNlbmRpZgotCi0gIC8qIGdpdmUgYXBwbGljYXRpb24gYSBjaGFuY2UgdG8gaW50ZXJmZXJlIHdpdGggU1NMIHNldCB1cC4gKi8KLSAgaWYoZGF0YS0+c2V0LnNzbC5mc3NsY3R4KSB7Ci0gICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gICAgcmVzdWx0ID0gKCpkYXRhLT5zZXQuc3NsLmZzc2xjdHgpKGRhdGEsIEJBQ0tFTkQtPmN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnNzbC5mc3NsY3R4cCk7Ci0gICAgaWYocmVzdWx0KSB7Ci0gICAgICBmYWlsZihkYXRhLCAiZXJyb3Igc2lnbmFsZWQgYnkgc3NsIGN0eCBjYWxsYmFjayIpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gIH0KLSNpZmRlZiBOT19GSUxFU1lTVEVNCi0gIGVsc2UgaWYoU1NMX0NPTk5fQ09ORklHKHZlcmlmeXBlZXIpKSB7Ci0gICAgZmFpbGYoZGF0YSwgIlNTTDogQ2VydGlmaWNhdGVzIGNvdWxkbid0IGJlIGxvYWRlZCBiZWNhdXNlIEN5YVNTTCB3YXMgYnVpbHQiCi0gICAgICAgICAgIiB3aXRoIFwibm8gZmlsZXN5c3RlbVwiLiBFaXRoZXIgZGlzYWJsZSBwZWVyIHZlcmlmaWNhdGlvbiIKLSAgICAgICAgICAiIChpbnNlY3VyZSkgb3IgaWYgeW91IGFyZSBidWlsZGluZyBhbiBhcHBsaWNhdGlvbiB3aXRoIGxpYmN1cmwgeW91IgotICAgICAgICAgICIgY2FuIGxvYWQgY2VydGlmaWNhdGVzIHZpYSBDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04uIik7Ci0gICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwotICB9Ci0jZW5kaWYKLQotICAvKiBMZXQncyBtYWtlIGFuIFNTTCBzdHJ1Y3R1cmUgKi8KLSAgaWYoQkFDS0VORC0+aGFuZGxlKQotICAgIFNTTF9mcmVlKEJBQ0tFTkQtPmhhbmRsZSk7Ci0gIEJBQ0tFTkQtPmhhbmRsZSA9IFNTTF9uZXcoQkFDS0VORC0+Y3R4KTsKLSAgaWYoIUJBQ0tFTkQtPmhhbmRsZSkgewotICAgIGZhaWxmKGRhdGEsICJTU0w6IGNvdWxkbid0IGNyZWF0ZSBhIGNvbnRleHQgKGhhbmRsZSkhIik7Ci0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotI2lmZGVmIEhBVkVfQUxQTgotICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgewotICAgIGNoYXIgcHJvdG9jb2xzWzEyOF07Ci0gICAgKnByb3RvY29scyA9ICdcMCc7Ci0KLSAgICAvKiB3b2xmU1NMJ3MgQUxQTiBwcm90b2NvbCBuYW1lIGxpc3QgZm9ybWF0IGlzIGEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBvZgotICAgICAgIHByb3RvY29scyBpbiBkZXNjZW5kaW5nIG9yZGVyIG9mIHByZWZlcmVuY2UsIGVnOiAiaDIsaHR0cC8xLjEiICovCi0KLSNpZmRlZiBVU0VfTkdIVFRQMgotICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yKSB7Ci0gICAgICBzdHJjcHkocHJvdG9jb2xzICsgc3RybGVuKHByb3RvY29scyksIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCAiLCIpOwotICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIG9mZmVyaW5nICVzXG4iLCBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQpOwotICAgIH0KLSNlbmRpZgotCi0gICAgc3RyY3B5KHByb3RvY29scyArIHN0cmxlbihwcm90b2NvbHMpLCBBTFBOX0hUVFBfMV8xKTsKLSAgICBpbmZvZihkYXRhLCAiQUxQTiwgb2ZmZXJpbmcgJXNcbiIsIEFMUE5fSFRUUF8xXzEpOwotCi0gICAgaWYod29sZlNTTF9Vc2VBTFBOKEJBQ0tFTkQtPmhhbmRsZSwgcHJvdG9jb2xzLAotICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQpc3RybGVuKHByb3RvY29scyksCi0gICAgICAgICAgICAgICAgICAgICAgIFdPTEZTU0xfQUxQTl9DT05USU5VRV9PTl9NSVNNQVRDSCkgIT0gU1NMX1NVQ0NFU1MpIHsKLSAgICAgIGZhaWxmKGRhdGEsICJTU0w6IGZhaWxlZCBzZXR0aW5nIEFMUE4gcHJvdG9jb2xzIik7Ci0gICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7Ci0gICAgfQotICB9Ci0jZW5kaWYgLyogSEFWRV9BTFBOICovCi0KLSAgLyogQ2hlY2sgaWYgdGhlcmUncyBhIGNhY2hlZCBJRCB3ZSBjYW4vc2hvdWxkIHVzZSBoZXJlISAqLwotICBpZihTU0xfU0VUX09QVElPTihwcmltYXJ5LnNlc3Npb25pZCkpIHsKLSAgICB2b2lkICpzc2xfc2Vzc2lvbmlkID0gTlVMTDsKLQotICAgIEN1cmxfc3NsX3Nlc3Npb25pZF9sb2NrKGNvbm4pOwotICAgIGlmKCFDdXJsX3NzbF9nZXRzZXNzaW9uaWQoY29ubiwgJnNzbF9zZXNzaW9uaWQsIE5VTEwsIHNvY2tpbmRleCkpIHsKLSAgICAgIC8qIHdlIGdvdCBhIHNlc3Npb24gaWQsIHVzZSBpdCEgKi8KLSAgICAgIGlmKCFTU0xfc2V0X3Nlc3Npb24oQkFDS0VORC0+aGFuZGxlLCBzc2xfc2Vzc2lvbmlkKSkgewotICAgICAgICBjaGFyIGVycm9yX2J1ZmZlcltDWUFTU0xfTUFYX0VSUk9SX1NaXTsKLSAgICAgICAgQ3VybF9zc2xfc2Vzc2lvbmlkX3VubG9jayhjb25uKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgIlNTTDogU1NMX3NldF9zZXNzaW9uIGZhaWxlZDogJXMiLAotICAgICAgICAgICAgICBFUlJfZXJyb3Jfc3RyaW5nKFNTTF9nZXRfZXJyb3IoQkFDS0VORC0+aGFuZGxlLCAwKSwKLSAgICAgICAgICAgICAgZXJyb3JfYnVmZmVyKSk7Ci0gICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKLSAgICAgIH0KLSAgICAgIC8qIEluZm9ybWF0aW9uYWwgbWVzc2FnZSAqLwotICAgICAgaW5mb2YoZGF0YSwgIlNTTCByZS11c2luZyBzZXNzaW9uIElEXG4iKTsKLSAgICB9Ci0gICAgQ3VybF9zc2xfc2Vzc2lvbmlkX3VubG9jayhjb25uKTsKLSAgfQotCi0gIC8qIHBhc3MgdGhlIHJhdyBzb2NrZXQgaW50byB0aGUgU1NMIGxheWVyICovCi0gIGlmKCFTU0xfc2V0X2ZkKEJBQ0tFTkQtPmhhbmRsZSwgKGludClzb2NrZmQpKSB7Ci0gICAgZmFpbGYoZGF0YSwgIlNTTDogU1NMX3NldF9mZCBmYWlsZWQiKTsKLSAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7Ci0gIH0KLQotICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMjsKLSAgcmV0dXJuIENVUkxFX09LOwotfQotCi0KLXN0YXRpYyBDVVJMY29kZQotY3lhc3NsX2Nvbm5lY3Rfc3RlcDIoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCkKLXsKLSAgaW50IHJldCA9IC0xOwotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEqIGNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07Ci0gIGNvbnN0IGNoYXIgKiBjb25zdCBob3N0bmFtZSA9IFNTTF9JU19QUk9YWSgpID8gY29ubi0+aHR0cF9wcm94eS5ob3N0Lm5hbWUgOgotICAgIGNvbm4tPmhvc3QubmFtZTsKLSAgY29uc3QgY2hhciAqIGNvbnN0IGRpc3BuYW1lID0gU1NMX0lTX1BST1hZKCkgPwotICAgIGNvbm4tPmh0dHBfcHJveHkuaG9zdC5kaXNwbmFtZSA6IGNvbm4tPmhvc3QuZGlzcG5hbWU7Ci0gIGNvbnN0IGNoYXIgKiBjb25zdCBwaW5uZWRwdWJrZXkgPSBTU0xfSVNfUFJPWFkoKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfUElOTkVEUFVCTElDS0VZX1BST1hZXSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfUElOTkVEUFVCTElDS0VZX09SSUddOwotCi0gIGNvbm4tPnJlY3Zbc29ja2luZGV4XSA9IGN5YXNzbF9yZWN2OwotICBjb25uLT5zZW5kW3NvY2tpbmRleF0gPSBjeWFzc2xfc2VuZDsKLQotICAvKiBFbmFibGUgUkZDMjgxOCBjaGVja3MgKi8KLSAgaWYoU1NMX0NPTk5fQ09ORklHKHZlcmlmeWhvc3QpKSB7Ci0gICAgcmV0ID0gQ3lhU1NMX2NoZWNrX2RvbWFpbl9uYW1lKEJBQ0tFTkQtPmhhbmRsZSwgaG9zdG5hbWUpOwotICAgIGlmKHJldCA9PSBTU0xfRkFJTFVSRSkKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgcmV0ID0gU1NMX2Nvbm5lY3QoQkFDS0VORC0+aGFuZGxlKTsKLSAgaWYocmV0ICE9IDEpIHsKLSAgICBjaGFyIGVycm9yX2J1ZmZlcltDWUFTU0xfTUFYX0VSUk9SX1NaXTsKLSAgICBpbnQgIGRldGFpbCA9IFNTTF9nZXRfZXJyb3IoQkFDS0VORC0+aGFuZGxlLCByZXQpOwotCi0gICAgaWYoU1NMX0VSUk9SX1dBTlRfUkVBRCA9PSBkZXRhaWwpIHsKLSAgICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8yX3JlYWRpbmc7Ci0gICAgICByZXR1cm4gQ1VSTEVfT0s7Ci0gICAgfQotICAgIGVsc2UgaWYoU1NMX0VSUk9SX1dBTlRfV1JJVEUgPT0gZGV0YWlsKSB7Ci0gICAgICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMl93cml0aW5nOwotICAgICAgcmV0dXJuIENVUkxFX09LOwotICAgIH0KLSAgICAvKiBUaGVyZSBpcyBubyBlYXN5IHdheSB0byBvdmVycmlkZSBvbmx5IHRoZSBDTiBtYXRjaGluZy4KLSAgICAgKiBUaGlzIHdpbGwgZW5hYmxlIHRoZSBvdmVycmlkZSBvZiBib3RoIG1pc21hdGNoaW5nIFN1YmplY3RBbHROYW1lcwotICAgICAqIGFzIGFsc28gbWlzbWF0Y2hpbmcgQ04gZmllbGRzICovCi0gICAgZWxzZSBpZihET01BSU5fTkFNRV9NSVNNQVRDSCA9PSBkZXRhaWwpIHsKLSNpZiAxCi0gICAgICBmYWlsZihkYXRhLCAiXHRzdWJqZWN0IGFsdCBuYW1lKHMpIG9yIGNvbW1vbiBuYW1lIGRvIG5vdCBtYXRjaCBcIiVzXCJcbiIsCi0gICAgICAgICAgICBkaXNwbmFtZSk7Ci0gICAgICByZXR1cm4gQ1VSTEVfUEVFUl9GQUlMRURfVkVSSUZJQ0FUSU9OOwotI2Vsc2UKLSAgICAgIC8qIFdoZW4gdGhlIEN5YVNTTF9jaGVja19kb21haW5fbmFtZSgpIGlzIHVzZWQgYW5kIHlvdSBkZXNpcmUgdG8gY29udGludWUKLSAgICAgICAqIG9uIGEgRE9NQUlOX05BTUVfTUlTTUFUQ0gsIGkuZS4gJ2Nvbm4tPnNzbF9jb25maWcudmVyaWZ5aG9zdCA9PSAwJywKLSAgICAgICAqIEN5YVNTTCB2ZXJzaW9uIDIuNC4wIHdpbGwgZmFpbCB3aXRoIGFuIElOQ09NUExFVEVfREFUQSBlcnJvci4gVGhlIG9ubHkKLSAgICAgICAqIHdheSB0byBkbyB0aGlzIGlzIGN1cnJlbnRseSB0byBzd2l0Y2ggdGhlIEN5YVNTTF9jaGVja19kb21haW5fbmFtZSgpCi0gICAgICAgKiBpbiBhbmQgb3V0IGJhc2VkIG9uIHRoZSAnY29ubi0+c3NsX2NvbmZpZy52ZXJpZnlob3N0JyB2YWx1ZS4gKi8KLSAgICAgIGlmKFNTTF9DT05OX0NPTkZJRyh2ZXJpZnlob3N0KSkgewotICAgICAgICBmYWlsZihkYXRhLAotICAgICAgICAgICAgICAiXHRzdWJqZWN0IGFsdCBuYW1lKHMpIG9yIGNvbW1vbiBuYW1lIGRvIG5vdCBtYXRjaCBcIiVzXCJcbiIsCi0gICAgICAgICAgICAgIGRpc3BuYW1lKTsKLSAgICAgICAgcmV0dXJuIENVUkxFX1BFRVJfRkFJTEVEX1ZFUklGSUNBVElPTjsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBpbmZvZihkYXRhLAotICAgICAgICAgICAgICAiXHRzdWJqZWN0IGFsdCBuYW1lKHMpIGFuZC9vciBjb21tb24gbmFtZSBkbyBub3QgbWF0Y2ggXCIlc1wiXG4iLAotICAgICAgICAgICAgICBkaXNwbmFtZSk7Ci0gICAgICAgIHJldHVybiBDVVJMRV9PSzsKLSAgICAgIH0KLSNlbmRpZgotICAgIH0KLSNpZiBMSUJDWUFTU0xfVkVSU0lPTl9IRVggPj0gMHgwMjAwNzAwMCAvKiAyLjcuMCAqLwotICAgIGVsc2UgaWYoQVNOX05PX1NJR05FUl9FID09IGRldGFpbCkgewotICAgICAgaWYoU1NMX0NPTk5fQ09ORklHKHZlcmlmeXBlZXIpKSB7Ci0gICAgICAgIGZhaWxmKGRhdGEsICJcdENBIHNpZ25lciBub3QgYXZhaWxhYmxlIGZvciB2ZXJpZmljYXRpb25cbiIpOwotICAgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NBQ0VSVF9CQURGSUxFOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIC8qIEp1c3QgY29udGludWUgd2l0aCBhIHdhcm5pbmcgaWYgbm8gc3RyaWN0IGNlcnRpZmljYXRlCi0gICAgICAgICAgIHZlcmlmaWNhdGlvbiBpcyByZXF1aXJlZC4gKi8KLSAgICAgICAgaW5mb2YoZGF0YSwgIkNBIHNpZ25lciBub3QgYXZhaWxhYmxlIGZvciB2ZXJpZmljYXRpb24sICIKLSAgICAgICAgICAgICAgICAgICAgImNvbnRpbnVpbmcgYW55d2F5XG4iKTsKLSAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLSAgICBlbHNlIHsKLSAgICAgIGZhaWxmKGRhdGEsICJTU0xfY29ubmVjdCBmYWlsZWQgd2l0aCBlcnJvciAlZDogJXMiLCBkZXRhaWwsCi0gICAgICAgICAgRVJSX2Vycm9yX3N0cmluZyhkZXRhaWwsIGVycm9yX2J1ZmZlcikpOwotICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwotICAgIH0KLSAgfQotCi0gIGlmKHBpbm5lZHB1YmtleSkgewotI2lmZGVmIEtFRVBfUEVFUl9DRVJUCi0gICAgWDUwOSAqeDUwOTsKLSAgICBjb25zdCBjaGFyICp4NTA5X2RlcjsKLSAgICBpbnQgeDUwOV9kZXJfbGVuOwotICAgIGN1cmxfWDUwOWNlcnRpZmljYXRlIHg1MDlfcGFyc2VkOwotICAgIGN1cmxfYXNuMUVsZW1lbnQgKnB1YmtleTsKLSAgICBDVVJMY29kZSByZXN1bHQ7Ci0KLSAgICB4NTA5ID0gU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKEJBQ0tFTkQtPmhhbmRsZSk7Ci0gICAgaWYoIXg1MDkpIHsKLSAgICAgIGZhaWxmKGRhdGEsICJTU0w6IGZhaWxlZCByZXRyaWV2aW5nIHNlcnZlciBjZXJ0aWZpY2F0ZSIpOwotICAgICAgcmV0dXJuIENVUkxFX1NTTF9QSU5ORURQVUJLRVlOT1RNQVRDSDsKLSAgICB9Ci0KLSAgICB4NTA5X2RlciA9IChjb25zdCBjaGFyICopQ3lhU1NMX1g1MDlfZ2V0X2Rlcih4NTA5LCAmeDUwOV9kZXJfbGVuKTsKLSAgICBpZigheDUwOV9kZXIpIHsKLSAgICAgIGZhaWxmKGRhdGEsICJTU0w6IGZhaWxlZCByZXRyaWV2aW5nIEFTTi4xIHNlcnZlciBjZXJ0aWZpY2F0ZSIpOwotICAgICAgcmV0dXJuIENVUkxFX1NTTF9QSU5ORURQVUJLRVlOT1RNQVRDSDsKLSAgICB9Ci0KLSAgICBtZW1zZXQoJng1MDlfcGFyc2VkLCAwLCBzaXplb2YoeDUwOV9wYXJzZWQpKTsKLSAgICBpZihDdXJsX3BhcnNlWDUwOSgmeDUwOV9wYXJzZWQsIHg1MDlfZGVyLCB4NTA5X2RlciArIHg1MDlfZGVyX2xlbikpCi0gICAgICByZXR1cm4gQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIOwotCi0gICAgcHVia2V5ID0gJng1MDlfcGFyc2VkLnN1YmplY3RQdWJsaWNLZXlJbmZvOwotICAgIGlmKCFwdWJrZXktPmhlYWRlciB8fCBwdWJrZXktPmVuZCA8PSBwdWJrZXktPmhlYWRlcikgewotICAgICAgZmFpbGYoZGF0YSwgIlNTTDogZmFpbGVkIHJldHJpZXZpbmcgcHVibGljIGtleSBmcm9tIHNlcnZlciBjZXJ0aWZpY2F0ZSIpOwotICAgICAgcmV0dXJuIENVUkxFX1NTTF9QSU5ORURQVUJLRVlOT1RNQVRDSDsKLSAgICB9Ci0KLSAgICByZXN1bHQgPSBDdXJsX3Bpbl9wZWVyX3B1YmtleShkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZHB1YmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKXB1YmtleS0+aGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaXplX3QpKHB1YmtleS0+ZW5kIC0gcHVia2V5LT5oZWFkZXIpKTsKLSAgICBpZihyZXN1bHQpIHsKLSAgICAgIGZhaWxmKGRhdGEsICJTU0w6IHB1YmxpYyBrZXkgZG9lcyBub3QgbWF0Y2ggcGlubmVkIHB1YmxpYyBrZXkhIik7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSNlbHNlCi0gICAgZmFpbGYoZGF0YSwgIkxpYnJhcnkgbGFja3MgcGlubmluZyBzdXBwb3J0IGJ1aWx0LWluIik7Ci0gICAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKLSNlbmRpZgotICB9Ci0KLSNpZmRlZiBIQVZFX0FMUE4KLSAgaWYoY29ubi0+Yml0cy50bHNfZW5hYmxlX2FscG4pIHsKLSAgICBpbnQgcmM7Ci0gICAgY2hhciAqcHJvdG9jb2wgPSBOVUxMOwotICAgIHVuc2lnbmVkIHNob3J0IHByb3RvY29sX2xlbiA9IDA7Ci0KLSAgICByYyA9IHdvbGZTU0xfQUxQTl9HZXRQcm90b2NvbChCQUNLRU5ELT5oYW5kbGUsICZwcm90b2NvbCwgJnByb3RvY29sX2xlbik7Ci0KLSAgICBpZihyYyA9PSBTU0xfU1VDQ0VTUykgewotICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIHNlcnZlciBhY2NlcHRlZCB0byB1c2UgJS4qc1xuIiwgcHJvdG9jb2xfbGVuLAotICAgICAgICAgICAgcHJvdG9jb2wpOwotCi0gICAgICBpZihwcm90b2NvbF9sZW4gPT0gQUxQTl9IVFRQXzFfMV9MRU5HVEggJiYKLSAgICAgICAgICFtZW1jbXAocHJvdG9jb2wsIEFMUE5fSFRUUF8xXzEsIEFMUE5fSFRUUF8xXzFfTEVOR1RIKSkKLSAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMV8xOwotI2lmZGVmIFVTRV9OR0hUVFAyCi0gICAgICBlbHNlIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yICYmCi0gICAgICAgICAgICAgIHByb3RvY29sX2xlbiA9PSBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSURfTEVOICYmCi0gICAgICAgICAgICAgICFtZW1jbXAocHJvdG9jb2wsIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCwKLSAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSURfTEVOKSkKLSAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMjsKLSNlbmRpZgotICAgICAgZWxzZQotICAgICAgICBpbmZvZihkYXRhLCAiQUxQTiwgdW5yZWNvZ25pemVkIHByb3RvY29sICUuKnNcbiIsIHByb3RvY29sX2xlbiwKLSAgICAgICAgICAgICAgcHJvdG9jb2wpOwotICAgICAgQ3VybF9tdWx0aXVzZV9zdGF0ZShjb25uLCBjb25uLT5uZWducG4gPT0gQ1VSTF9IVFRQX1ZFUlNJT05fMiA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEJVTkRMRV9NVUxUSVBMRVggOiBCVU5ETEVfTk9fTVVMVElVU0UpOwotICAgIH0KLSAgICBlbHNlIGlmKHJjID09IFNTTF9BTFBOX05PVF9GT1VORCkKLSAgICAgIGluZm9mKGRhdGEsICJBTFBOLCBzZXJ2ZXIgZGlkIG5vdCBhZ3JlZSB0byBhIHByb3RvY29sXG4iKTsKLSAgICBlbHNlIHsKLSAgICAgIGZhaWxmKGRhdGEsICJBTFBOLCBmYWlsdXJlIGdldHRpbmcgcHJvdG9jb2wsIGVycm9yICVkIiwgcmMpOwotICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwotICAgIH0KLSAgfQotI2VuZGlmIC8qIEhBVkVfQUxQTiAqLwotCi0gIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8zOwotI2lmIChMSUJDWUFTU0xfVkVSU0lPTl9IRVggPj0gMHgwMzAwOTAxMCkKLSAgaW5mb2YoZGF0YSwgIlNTTCBjb25uZWN0aW9uIHVzaW5nICVzIC8gJXNcbiIsCi0gICAgICAgIHdvbGZTU0xfZ2V0X3ZlcnNpb24oQkFDS0VORC0+aGFuZGxlKSwKLSAgICAgICAgd29sZlNTTF9nZXRfY2lwaGVyX25hbWUoQkFDS0VORC0+aGFuZGxlKSk7Ci0jZWxzZQotICBpbmZvZihkYXRhLCAiU1NMIGNvbm5lY3RlZFxuIik7Ci0jZW5kaWYKLQotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLQotc3RhdGljIENVUkxjb2RlCi1jeWFzc2xfY29ubmVjdF9zdGVwMyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4KQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7Ci0gIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOwotCi0gIERFQlVHQVNTRVJUKHNzbF9jb25uZWN0XzMgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSk7Ci0KLSAgaWYoU1NMX1NFVF9PUFRJT04ocHJpbWFyeS5zZXNzaW9uaWQpKSB7Ci0gICAgYm9vbCBpbmNhY2hlOwotICAgIFNTTF9TRVNTSU9OICpvdXJfc3NsX3Nlc3Npb25pZDsKLSAgICB2b2lkICpvbGRfc3NsX3Nlc3Npb25pZCA9IE5VTEw7Ci0KLSAgICBvdXJfc3NsX3Nlc3Npb25pZCA9IFNTTF9nZXRfc2Vzc2lvbihCQUNLRU5ELT5oYW5kbGUpOwotCi0gICAgQ3VybF9zc2xfc2Vzc2lvbmlkX2xvY2soY29ubik7Ci0gICAgaW5jYWNoZSA9ICEoQ3VybF9zc2xfZ2V0c2Vzc2lvbmlkKGNvbm4sICZvbGRfc3NsX3Nlc3Npb25pZCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2luZGV4KSk7Ci0gICAgaWYoaW5jYWNoZSkgewotICAgICAgaWYob2xkX3NzbF9zZXNzaW9uaWQgIT0gb3VyX3NzbF9zZXNzaW9uaWQpIHsKLSAgICAgICAgaW5mb2YoZGF0YSwgIm9sZCBTU0wgc2Vzc2lvbiBJRCBpcyBzdGFsZSwgcmVtb3ZpbmdcbiIpOwotICAgICAgICBDdXJsX3NzbF9kZWxzZXNzaW9uaWQoY29ubiwgb2xkX3NzbF9zZXNzaW9uaWQpOwotICAgICAgICBpbmNhY2hlID0gRkFMU0U7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYoIWluY2FjaGUpIHsKLSAgICAgIHJlc3VsdCA9IEN1cmxfc3NsX2FkZHNlc3Npb25pZChjb25uLCBvdXJfc3NsX3Nlc3Npb25pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIHVua25vd24gc2l6ZSAqLywgc29ja2luZGV4KTsKLSAgICAgIGlmKHJlc3VsdCkgewotICAgICAgICBDdXJsX3NzbF9zZXNzaW9uaWRfdW5sb2NrKGNvbm4pOwotICAgICAgICBmYWlsZihkYXRhLCAiZmFpbGVkIHRvIHN0b3JlIHNzbCBzZXNzaW9uIik7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgfQotICAgIEN1cmxfc3NsX3Nlc3Npb25pZF91bmxvY2soY29ubik7Ci0gIH0KLQotICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfZG9uZTsKLQotICByZXR1cm4gcmVzdWx0OwotfQotCi0KLXN0YXRpYyBzc2l6ZV90IGN5YXNzbF9zZW5kKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICptZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUgKmN1cmxjb2RlKQotewotICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKLSAgY2hhciBlcnJvcl9idWZmZXJbQ1lBU1NMX01BWF9FUlJPUl9TWl07Ci0gIGludCAgbWVtbGVuID0gKGxlbiA+IChzaXplX3QpSU5UX01BWCkgPyBJTlRfTUFYIDogKGludClsZW47Ci0gIGludCAgcmMgICAgID0gU1NMX3dyaXRlKEJBQ0tFTkQtPmhhbmRsZSwgbWVtLCBtZW1sZW4pOwotCi0gIGlmKHJjIDwgMCkgewotICAgIGludCBlcnIgPSBTU0xfZ2V0X2Vycm9yKEJBQ0tFTkQtPmhhbmRsZSwgcmMpOwotCi0gICAgc3dpdGNoKGVycikgewotICAgIGNhc2UgU1NMX0VSUk9SX1dBTlRfUkVBRDoKLSAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX1dSSVRFOgotICAgICAgLyogdGhlcmUncyBkYXRhIHBlbmRpbmcsIHJlLWludm9rZSBTU0xfd3JpdGUoKSAqLwotICAgICAgKmN1cmxjb2RlID0gQ1VSTEVfQUdBSU47Ci0gICAgICByZXR1cm4gLTE7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICJTU0wgd3JpdGU6ICVzLCBlcnJubyAlZCIsCi0gICAgICAgICAgICBFUlJfZXJyb3Jfc3RyaW5nKGVyciwgZXJyb3JfYnVmZmVyKSwKLSAgICAgICAgICAgIFNPQ0tFUlJOTyk7Ci0gICAgICAqY3VybGNvZGUgPSBDVVJMRV9TRU5EX0VSUk9SOwotICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgfQotICByZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyB2b2lkIEN1cmxfY3lhc3NsX2Nsb3NlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKLXsKLSAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07Ci0KLSAgaWYoQkFDS0VORC0+aGFuZGxlKSB7Ci0gICAgKHZvaWQpU1NMX3NodXRkb3duKEJBQ0tFTkQtPmhhbmRsZSk7Ci0gICAgU1NMX2ZyZWUoQkFDS0VORC0+aGFuZGxlKTsKLSAgICBCQUNLRU5ELT5oYW5kbGUgPSBOVUxMOwotICB9Ci0gIGlmKEJBQ0tFTkQtPmN0eCkgewotICAgIFNTTF9DVFhfZnJlZShCQUNLRU5ELT5jdHgpOwotICAgIEJBQ0tFTkQtPmN0eCA9IE5VTEw7Ci0gIH0KLX0KLQotc3RhdGljIHNzaXplX3QgY3lhc3NsX3JlY3Yoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBidWZmZXJzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUgKmN1cmxjb2RlKQotewotICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbbnVtXTsKLSAgY2hhciBlcnJvcl9idWZmZXJbQ1lBU1NMX01BWF9FUlJPUl9TWl07Ci0gIGludCAgYnVmZnNpemUgPSAoYnVmZmVyc2l6ZSA+IChzaXplX3QpSU5UX01BWCkgPyBJTlRfTUFYIDogKGludClidWZmZXJzaXplOwotICBpbnQgIG5yZWFkICAgID0gU1NMX3JlYWQoQkFDS0VORC0+aGFuZGxlLCBidWYsIGJ1ZmZzaXplKTsKLQotICBpZihucmVhZCA8IDApIHsKLSAgICBpbnQgZXJyID0gU1NMX2dldF9lcnJvcihCQUNLRU5ELT5oYW5kbGUsIG5yZWFkKTsKLQotICAgIHN3aXRjaChlcnIpIHsKLSAgICBjYXNlIFNTTF9FUlJPUl9aRVJPX1JFVFVSTjogLyogbm8gbW9yZSBkYXRhICovCi0gICAgICBicmVhazsKLSAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX1JFQUQ6Ci0gICAgY2FzZSBTU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgIC8qIHRoZXJlJ3MgZGF0YSBwZW5kaW5nLCByZS1pbnZva2UgU1NMX3JlYWQoKSAqLwotICAgICAgKmN1cmxjb2RlID0gQ1VSTEVfQUdBSU47Ci0gICAgICByZXR1cm4gLTE7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGZhaWxmKGNvbm4tPmRhdGEsICJTU0wgcmVhZDogJXMsIGVycm5vICVkIiwKLSAgICAgICAgICAgIEVSUl9lcnJvcl9zdHJpbmcoZXJyLCBlcnJvcl9idWZmZXIpLAotICAgICAgICAgICAgU09DS0VSUk5PKTsKLSAgICAgICpjdXJsY29kZSA9IENVUkxFX1JFQ1ZfRVJST1I7Ci0gICAgICByZXR1cm4gLTE7Ci0gICAgfQotICB9Ci0gIHJldHVybiBucmVhZDsKLX0KLQotCi1zdGF0aWMgdm9pZCBDdXJsX2N5YXNzbF9zZXNzaW9uX2ZyZWUodm9pZCAqcHRyKQotewotICAodm9pZClwdHI7Ci0gIC8qIEN5YVNTTCByZXVzZXMgc2Vzc2lvbnMgb24gb3duLCBubyBmcmVlICovCi19Ci0KLQotc3RhdGljIHNpemVfdCBDdXJsX2N5YXNzbF92ZXJzaW9uKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCi17Ci0jaWYgTElCQ1lBU1NMX1ZFUlNJT05fSEVYID49IDB4MDMwMDYwMDAKLSAgcmV0dXJuIG1zbnByaW50ZihidWZmZXIsIHNpemUsICJ3b2xmU1NMLyVzIiwgd29sZlNTTF9saWJfdmVyc2lvbigpKTsKLSNlbGlmIGRlZmluZWQoV09MRlNTTF9WRVJTSU9OKQotICByZXR1cm4gbXNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIndvbGZTU0wvJXMiLCBXT0xGU1NMX1ZFUlNJT04pOwotI2VsaWYgZGVmaW5lZChDWUFTU0xfVkVSU0lPTikKLSAgcmV0dXJuIG1zbnByaW50ZihidWZmZXIsIHNpemUsICJDeWFTU0wvJXMiLCBDWUFTU0xfVkVSU0lPTik7Ci0jZWxzZQotICByZXR1cm4gbXNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIkN5YVNTTC8lcyIsICI8MS44LjgiKTsKLSNlbmRpZgotfQotCi0KLXN0YXRpYyBpbnQgQ3VybF9jeWFzc2xfaW5pdCh2b2lkKQotewotICByZXR1cm4gKEN5YVNTTF9Jbml0KCkgPT0gU1NMX1NVQ0NFU1MpOwotfQotCi0KLXN0YXRpYyB2b2lkIEN1cmxfY3lhc3NsX2NsZWFudXAodm9pZCkKLXsKLSAgQ3lhU1NMX0NsZWFudXAoKTsKLX0KLQotCi1zdGF0aWMgYm9vbCBDdXJsX2N5YXNzbF9kYXRhX3BlbmRpbmcoY29uc3Qgc3RydWN0IGNvbm5lY3RkYXRhKiBjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb25uaW5kZXgpCi17Ci0gIGNvbnN0IHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtjb25uaW5kZXhdOwotICBpZihCQUNLRU5ELT5oYW5kbGUpICAgLyogU1NMIGlzIGluIHVzZSAqLwotICAgIHJldHVybiAoMCAhPSBTU0xfcGVuZGluZyhCQUNLRU5ELT5oYW5kbGUpKSA/IFRSVUUgOiBGQUxTRTsKLSAgZWxzZQotICAgIHJldHVybiBGQUxTRTsKLX0KLQotCi0vKgotICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gc2h1dCBkb3duIHRoZSBTU0wgbGF5ZXIgYnV0IGtlZXAgdGhlCi0gKiBzb2NrZXQgb3BlbiAoQ0NDIC0gQ2xlYXIgQ29tbWFuZCBDaGFubmVsKQotICovCi1zdGF0aWMgaW50IEN1cmxfY3lhc3NsX3NodXRkb3duKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKLXsKLSAgaW50IHJldHZhbCA9IDA7Ci0gIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOwotCi0gIGlmKEJBQ0tFTkQtPmhhbmRsZSkgewotICAgIFNTTF9mcmVlKEJBQ0tFTkQtPmhhbmRsZSk7Ci0gICAgQkFDS0VORC0+aGFuZGxlID0gTlVMTDsKLSAgfQotICByZXR1cm4gcmV0dmFsOwotfQotCi0KLXN0YXRpYyBDVVJMY29kZQotY3lhc3NsX2Nvbm5lY3RfY29tbW9uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uYmxvY2tpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9uZSkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0OwotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07Ci0gIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tzb2NraW5kZXhdOwotICB0aW1lX3QgdGltZW91dF9tczsKLSAgaW50IHdoYXQ7Ci0KLSAgLyogY2hlY2sgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hlZCAqLwotICBpZihzc2xfY29ubmVjdGlvbl9jb21wbGV0ZSA9PSBjb25uc3NsLT5zdGF0ZSkgewotICAgICpkb25lID0gVFJVRTsKLSAgICByZXR1cm4gQ1VSTEVfT0s7Ci0gIH0KLQotICBpZihzc2xfY29ubmVjdF8xID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpIHsKLSAgICAvKiBGaW5kIG91dCBob3cgbXVjaCBtb3JlIHRpbWUgd2UncmUgYWxsb3dlZCAqLwotICAgIHRpbWVvdXRfbXMgPSBDdXJsX3RpbWVsZWZ0KGRhdGEsIE5VTEwsIFRSVUUpOwotCi0gICAgaWYodGltZW91dF9tcyA8IDApIHsKLSAgICAgIC8qIG5vIG5lZWQgdG8gY29udGludWUgaWYgdGltZSBhbHJlYWR5IGlzIHVwICovCi0gICAgICBmYWlsZihkYXRhLCAiU1NMIGNvbm5lY3Rpb24gdGltZW91dCIpOwotICAgICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKLSAgICB9Ci0KLSAgICByZXN1bHQgPSBjeWFzc2xfY29ubmVjdF9zdGVwMShjb25uLCBzb2NraW5kZXgpOwotICAgIGlmKHJlc3VsdCkKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICB3aGlsZShzc2xfY29ubmVjdF8yID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKLSAgICAgICAgc3NsX2Nvbm5lY3RfMl9yZWFkaW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKLSAgICAgICAgc3NsX2Nvbm5lY3RfMl93cml0aW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpIHsKLQotICAgIC8qIGNoZWNrIGFsbG93ZWQgdGltZSBsZWZ0ICovCi0gICAgdGltZW91dF9tcyA9IEN1cmxfdGltZWxlZnQoZGF0YSwgTlVMTCwgVFJVRSk7Ci0KLSAgICBpZih0aW1lb3V0X21zIDwgMCkgewotICAgICAgLyogbm8gbmVlZCB0byBjb250aW51ZSBpZiB0aW1lIGFscmVhZHkgaXMgdXAgKi8KLSAgICAgIGZhaWxmKGRhdGEsICJTU0wgY29ubmVjdGlvbiB0aW1lb3V0Iik7Ci0gICAgICByZXR1cm4gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOwotICAgIH0KLQotICAgIC8qIGlmIHNzbCBpcyBleHBlY3Rpbmcgc29tZXRoaW5nLCBjaGVjayBpZiBpdCdzIGF2YWlsYWJsZS4gKi8KLSAgICBpZihjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID09IHNzbF9jb25uZWN0XzJfcmVhZGluZwotICAgICAgIHx8IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPT0gc3NsX2Nvbm5lY3RfMl93cml0aW5nKSB7Ci0KLSAgICAgIGN1cmxfc29ja2V0X3Qgd3JpdGVmZCA9IHNzbF9jb25uZWN0XzJfd3JpdGluZyA9PQotICAgICAgICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlP3NvY2tmZDpDVVJMX1NPQ0tFVF9CQUQ7Ci0gICAgICBjdXJsX3NvY2tldF90IHJlYWRmZCA9IHNzbF9jb25uZWN0XzJfcmVhZGluZyA9PQotICAgICAgICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlP3NvY2tmZDpDVVJMX1NPQ0tFVF9CQUQ7Ci0KLSAgICAgIHdoYXQgPSBDdXJsX3NvY2tldF9jaGVjayhyZWFkZmQsIENVUkxfU09DS0VUX0JBRCwgd3JpdGVmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25ibG9ja2luZz8wOnRpbWVvdXRfbXMpOwotICAgICAgaWYod2hhdCA8IDApIHsKLSAgICAgICAgLyogZmF0YWwgZXJyb3IgKi8KLSAgICAgICAgZmFpbGYoZGF0YSwgInNlbGVjdC9wb2xsIG9uIFNTTCBzb2NrZXQsIGVycm5vOiAlZCIsIFNPQ0tFUlJOTyk7Ci0gICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoMCA9PSB3aGF0KSB7Ci0gICAgICAgIGlmKG5vbmJsb2NraW5nKSB7Ci0gICAgICAgICAgKmRvbmUgPSBGQUxTRTsKLSAgICAgICAgICByZXR1cm4gQ1VSTEVfT0s7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgLyogdGltZW91dCAqLwotICAgICAgICAgIGZhaWxmKGRhdGEsICJTU0wgY29ubmVjdGlvbiB0aW1lb3V0Iik7Ci0gICAgICAgICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgLyogc29ja2V0IGlzIHJlYWRhYmxlIG9yIHdyaXRhYmxlICovCi0gICAgfQotCi0gICAgLyogUnVuIHRyYW5zYWN0aW9uLCBhbmQgcmV0dXJuIHRvIHRoZSBjYWxsZXIgaWYgaXQgZmFpbGVkIG9yIGlmCi0gICAgICogdGhpcyBjb25uZWN0aW9uIGlzIHBhcnQgb2YgYSBtdWx0aSBoYW5kbGUgYW5kIHRoaXMgbG9vcCB3b3VsZAotICAgICAqIGV4ZWN1dGUgYWdhaW4uIFRoaXMgcGVybWl0cyB0aGUgb3duZXIgb2YgYSBtdWx0aSBoYW5kbGUgdG8KLSAgICAgKiBhYm9ydCBhIGNvbm5lY3Rpb24gYXR0ZW1wdCBiZWZvcmUgc3RlcDIgaGFzIGNvbXBsZXRlZCB3aGlsZQotICAgICAqIGVuc3VyaW5nIHRoYXQgYSBjbGllbnQgdXNpbmcgc2VsZWN0KCkgb3IgZXBvbGwoKSB3aWxsIGFsd2F5cwotICAgICAqIGhhdmUgYSB2YWxpZCBmZHNldCB0byB3YWl0IG9uLgotICAgICAqLwotICAgIHJlc3VsdCA9IGN5YXNzbF9jb25uZWN0X3N0ZXAyKGNvbm4sIHNvY2tpbmRleCk7Ci0gICAgaWYocmVzdWx0IHx8IChub25ibG9ja2luZyAmJgotICAgICAgICAgICAgICAgICAgKHNzbF9jb25uZWN0XzIgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSB8fAotICAgICAgICAgICAgICAgICAgIHNzbF9jb25uZWN0XzJfcmVhZGluZyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlIHx8Ci0gICAgICAgICAgICAgICAgICAgc3NsX2Nvbm5lY3RfMl93cml0aW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpKSkKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gIH0gLyogcmVwZWF0IHN0ZXAyIHVudGlsIGFsbCB0cmFuc2FjdGlvbnMgYXJlIGRvbmUuICovCi0KLSAgaWYoc3NsX2Nvbm5lY3RfMyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKSB7Ci0gICAgcmVzdWx0ID0gY3lhc3NsX2Nvbm5lY3Rfc3RlcDMoY29ubiwgc29ja2luZGV4KTsKLSAgICBpZihyZXN1bHQpCi0gICAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgaWYoc3NsX2Nvbm5lY3RfZG9uZSA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKSB7Ci0gICAgY29ubnNzbC0+c3RhdGUgPSBzc2xfY29ubmVjdGlvbl9jb21wbGV0ZTsKLSAgICBjb25uLT5yZWN2W3NvY2tpbmRleF0gPSBjeWFzc2xfcmVjdjsKLSAgICBjb25uLT5zZW5kW3NvY2tpbmRleF0gPSBjeWFzc2xfc2VuZDsKLSAgICAqZG9uZSA9IFRSVUU7Ci0gIH0KLSAgZWxzZQotICAgICpkb25lID0gRkFMU0U7Ci0KLSAgLyogUmVzZXQgb3VyIGNvbm5lY3Qgc3RhdGUgbWFjaGluZSAqLwotICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMTsKLQotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLQotc3RhdGljIENVUkxjb2RlIEN1cmxfY3lhc3NsX2Nvbm5lY3Rfbm9uYmxvY2tpbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwgYm9vbCAqZG9uZSkKLXsKLSAgcmV0dXJuIGN5YXNzbF9jb25uZWN0X2NvbW1vbihjb25uLCBzb2NraW5kZXgsIFRSVUUsIGRvbmUpOwotfQotCi0KLXN0YXRpYyBDVVJMY29kZSBDdXJsX2N5YXNzbF9jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0OwotICBib29sIGRvbmUgPSBGQUxTRTsKLQotICByZXN1bHQgPSBjeWFzc2xfY29ubmVjdF9jb21tb24oY29ubiwgc29ja2luZGV4LCBGQUxTRSwgJmRvbmUpOwotICBpZihyZXN1bHQpCi0gICAgcmV0dXJuIHJlc3VsdDsKLQotICBERUJVR0FTU0VSVChkb25lKTsKLQotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLXN0YXRpYyBDVVJMY29kZSBDdXJsX2N5YXNzbF9yYW5kb20oc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqZW50cm9weSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgUk5HIHJuZzsKLSAgKHZvaWQpZGF0YTsKLSAgaWYoSW5pdFJuZygmcm5nKSkKLSAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7Ci0gIGlmKGxlbmd0aCA+IFVJTlRfTUFYKQotICAgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKLSAgaWYoUk5HX0dlbmVyYXRlQmxvY2soJnJuZywgZW50cm9weSwgKHVuc2lnbmVkKWxlbmd0aCkpCi0gICAgcmV0dXJuIENVUkxFX0ZBSUxFRF9JTklUOwotICBpZihGcmVlUm5nKCZybmcpKQotICAgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKLSAgcmV0dXJuIENVUkxFX09LOwotfQotCi1zdGF0aWMgQ1VSTGNvZGUgQ3VybF9jeWFzc2xfc2hhMjU2c3VtKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRtcCwgLyogaW5wdXQgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdG1wbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNoYTI1NnN1bSAvKiBvdXRwdXQgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHVudXNlZCkKLXsKLSAgU2hhMjU2IFNIQTI1NnB3OwotICAodm9pZCl1bnVzZWQ7Ci0gIEluaXRTaGEyNTYoJlNIQTI1NnB3KTsKLSAgU2hhMjU2VXBkYXRlKCZTSEEyNTZwdywgdG1wLCAod29yZDMyKXRtcGxlbik7Ci0gIFNoYTI1NkZpbmFsKCZTSEEyNTZwdywgc2hhMjU2c3VtKTsKLSAgcmV0dXJuIENVUkxFX09LOwotfQotCi1zdGF0aWMgdm9pZCAqQ3VybF9jeWFzc2xfZ2V0X2ludGVybmFscyhzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxJTkZPIGluZm8gVU5VU0VEX1BBUkFNKQotewotICAodm9pZClpbmZvOwotICByZXR1cm4gQkFDS0VORC0+aGFuZGxlOwotfQotCi1jb25zdCBzdHJ1Y3QgQ3VybF9zc2wgQ3VybF9zc2xfY3lhc3NsID0gewotICB7IENVUkxTU0xCQUNLRU5EX1dPTEZTU0wsICJXb2xmU1NMIiB9LCAvKiBpbmZvICovCi0KLSNpZmRlZiBLRUVQX1BFRVJfQ0VSVAotICBTU0xTVVBQX1BJTk5FRFBVQktFWSB8Ci0jZW5kaWYKLSAgU1NMU1VQUF9TU0xfQ1RYLAotCi0gIHNpemVvZihzdHJ1Y3Qgc3NsX2JhY2tlbmRfZGF0YSksCi0KLSAgQ3VybF9jeWFzc2xfaW5pdCwgICAgICAgICAgICAgICAgLyogaW5pdCAqLwotICBDdXJsX2N5YXNzbF9jbGVhbnVwLCAgICAgICAgICAgICAvKiBjbGVhbnVwICovCi0gIEN1cmxfY3lhc3NsX3ZlcnNpb24sICAgICAgICAgICAgIC8qIHZlcnNpb24gKi8KLSAgQ3VybF9ub25lX2NoZWNrX2N4biwgICAgICAgICAgICAgLyogY2hlY2tfY3huICovCi0gIEN1cmxfY3lhc3NsX3NodXRkb3duLCAgICAgICAgICAgIC8qIHNodXRkb3duICovCi0gIEN1cmxfY3lhc3NsX2RhdGFfcGVuZGluZywgICAgICAgIC8qIGRhdGFfcGVuZGluZyAqLwotICBDdXJsX2N5YXNzbF9yYW5kb20sICAgICAgICAgICAgICAvKiByYW5kb20gKi8KLSAgQ3VybF9ub25lX2NlcnRfc3RhdHVzX3JlcXVlc3QsICAgLyogY2VydF9zdGF0dXNfcmVxdWVzdCAqLwotICBDdXJsX2N5YXNzbF9jb25uZWN0LCAgICAgICAgICAgICAvKiBjb25uZWN0ICovCi0gIEN1cmxfY3lhc3NsX2Nvbm5lY3Rfbm9uYmxvY2tpbmcsIC8qIGNvbm5lY3Rfbm9uYmxvY2tpbmcgKi8KLSAgQ3VybF9jeWFzc2xfZ2V0X2ludGVybmFscywgICAgICAgLyogZ2V0X2ludGVybmFscyAqLwotICBDdXJsX2N5YXNzbF9jbG9zZSwgICAgICAgICAgICAgICAvKiBjbG9zZV9vbmUgKi8KLSAgQ3VybF9ub25lX2Nsb3NlX2FsbCwgICAgICAgICAgICAgLyogY2xvc2VfYWxsICovCi0gIEN1cmxfY3lhc3NsX3Nlc3Npb25fZnJlZSwgICAgICAgIC8qIHNlc3Npb25fZnJlZSAqLwotICBDdXJsX25vbmVfc2V0X2VuZ2luZSwgICAgICAgICAgICAvKiBzZXRfZW5naW5lICovCi0gIEN1cmxfbm9uZV9zZXRfZW5naW5lX2RlZmF1bHQsICAgIC8qIHNldF9lbmdpbmVfZGVmYXVsdCAqLwotICBDdXJsX25vbmVfZW5naW5lc19saXN0LCAgICAgICAgICAvKiBlbmdpbmVzX2xpc3QgKi8KLSAgQ3VybF9ub25lX2ZhbHNlX3N0YXJ0LCAgICAgICAgICAgLyogZmFsc2Vfc3RhcnQgKi8KLSAgQ3VybF9ub25lX21kNXN1bSwgICAgICAgICAgICAgICAgLyogbWQ1c3VtICovCi0gIEN1cmxfY3lhc3NsX3NoYTI1NnN1bSAgICAgICAgICAgIC8qIHNoYTI1NnN1bSAqLwotfTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL2N5YXNzbC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9jeWFzc2wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFlMTFjYy4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL2N5YXNzbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotI2lmbmRlZiBIRUFERVJfQ1VSTF9DWUFTU0xfSAotI2RlZmluZSBIRUFERVJfQ1VSTF9DWUFTU0xfSAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwotICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0gKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAotICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCi0gKgotICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCi0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKLQotI2lmZGVmIFVTRV9DWUFTU0wKLQotZXh0ZXJuIGNvbnN0IHN0cnVjdCBDdXJsX3NzbCBDdXJsX3NzbF9jeWFzc2w7Ci0KLSNlbmRpZiAvKiBVU0VfQ1lBU1NMICovCi0jZW5kaWYgLyogSEVBREVSX0NVUkxfQ1lBU1NMX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvZ3NraXQuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvZ3NraXQuYwppbmRleCBiOTNmZjVkLi4zMjE1M2RkIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL2dza2l0LmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9nc2tpdC5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTgsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0yNiw2ICsyNiw4IEBACiAKICNpbmNsdWRlIDxnc2tzc2wuaD4KICNpbmNsdWRlIDxxc29hc3luYy5oPgorI3VuZGVmIEhBVkVfU09DS0VUUEFJUiAvKiBiZWNhdXNlIHRoZSBuYXRpdmUgb25lIGlzbid0IGdvb2QgZW5vdWdoICovCisjaW5jbHVkZSAic29ja2V0cGFpci5oIgogCiAvKiBTb21lIHN5bWJvbHMgYXJlIHVuZGVmaW5lZC91bnN1cHBvcnRlZCBvbiBPUzQwMCB2ZXJzaW9ucyA8IFY3UjEuICovCiAjaWZuZGVmIEdTS19TU0xfRVhUTl9TRVJWRVJOQU1FX1JFUVVFU1QKQEAgLTUxMSwxMDAgKzUxMyw2IEBACiAgIEJBQ0tFTkQtPmlvY3BvcnQgPSAtMTsKIH0KIAotLyogU1NMIG92ZXIgU1NMCi0gKiBQcm9ibGVtczoKLSAqIDEpIEdTS2l0IGNhbiBvbmx5IHBlcmZvcm0gU1NMIG9uIGFuIEFGX0lORVQgb3IgQUZfSU5FVDYgc3RyZWFtIHNvY2tldC4gVG8KLSAqICAgIHBpcGUgYW4gU1NMIHN0cmVhbSBpbnRvIGFub3RoZXIsIGl0IGlzIHRoZXJlZm9yZSBuZWVkZWQgdG8gaGF2ZSBhIHBhaXIKLSAqICAgIG9mIHN1Y2ggY29tbXVuaWNhdGluZyBzb2NrZXRzIGFuZCBoYW5kbGUgdGhlIHBpcGVsaW5pbmcgZXhwbGljaXRseS4KLSAqIDIpIE9TLzQwMCBzb2NrZXRwYWlyKCkgaXMgb25seSBpbXBsZW1lbnRlZCBmb3IgZG9tYWluIEFGX1VOSVgsIHRodXMgY2Fubm90Ci0gKiAgICBiZSB1c2VkIHRvIHByb2R1Y2UgdGhlIHBpcGVsaW5lLgotICogVGhlIHNvbHV0aW9uIGlzIHRvIHNpbXVsYXRlIHNvY2tldHBhaXIoKSBmb3IgQUZfSU5FVCB3aXRoIGxvdy1sZXZlbCBBUEkKLSAqICAgIGxpc3RlbigpLCBiaW5kKCkgYW5kIGNvbm5lY3QoKS4KLSAqLwotCi1zdGF0aWMgaW50Ci1pbmV0c29ja2V0cGFpcihpbnQgc3ZbMl0pCi17Ci0gIGludCBsZmQ7ICAgICAgLyogTGlzdGVuaW5nIHNvY2tldC4gKi8KLSAgaW50IHNmZDsgICAgICAvKiBTZXJ2ZXIgc29ja2V0LiAqLwotICBpbnQgY2ZkOyAgICAgIC8qIENsaWVudCBzb2NrZXQuICovCi0gIGludCBsZW47Ci0gIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyMTsKLSAgc3RydWN0IHNvY2thZGRyX2luIGFkZHIyOwotCi0gIC8qIENyZWF0ZSBsaXN0ZW5pbmcgc29ja2V0IG9uIGEgbG9jYWwgZHluYW1pYyBwb3J0LiAqLwotICBsZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApOwotICBpZihsZmQgPCAwKQotICAgIHJldHVybiAtMTsKLSAgbWVtc2V0KChjaGFyICopICZhZGRyMSwgMCwgc2l6ZW9mKGFkZHIxKSk7Ci0gIGFkZHIxLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotICBhZGRyMS5zaW5fYWRkci5zX2FkZHIgPSBodG9ubChJTkFERFJfTE9PUEJBQ0spOwotICBhZGRyMS5zaW5fcG9ydCA9IDA7Ci0gIGlmKGJpbmQobGZkLCAoc3RydWN0IHNvY2thZGRyICopICZhZGRyMSwgc2l6ZW9mKGFkZHIxKSkgfHwKLSAgICAgbGlzdGVuKGxmZCwgMikgPCAwKSB7Ci0gICAgY2xvc2UobGZkKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLQotICAvKiBHZXQgdGhlIGFsbG9jYXRlZCBwb3J0LiAqLwotICBsZW4gPSBzaXplb2YoYWRkcjEpOwotICBpZihnZXRzb2NrbmFtZShsZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmFkZHIxLCAmbGVuKSA8IDApIHsKLSAgICBjbG9zZShsZmQpOwotICAgIHJldHVybiAtMTsKLSAgfQotCi0gIC8qIENyZWF0ZSB0aGUgY2xpZW50IHNvY2tldC4gKi8KLSAgY2ZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKLSAgaWYoY2ZkIDwgMCkgewotICAgIGNsb3NlKGxmZCk7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0KLSAgLyogUmVxdWVzdCB1bmJsb2NraW5nIGNvbm5lY3Rpb24gdG8gdGhlIGxpc3RlbmluZyBzb2NrZXQuICovCi0gIGN1cmx4X25vbmJsb2NrKGNmZCwgVFJVRSk7Ci0gIGlmKGNvbm5lY3QoY2ZkLCAoc3RydWN0IHNvY2thZGRyICopICZhZGRyMSwgc2l6ZW9mKGFkZHIxKSkgPCAwICYmCi0gICAgIGVycm5vICE9IEVJTlBST0dSRVNTKSB7Ci0gICAgY2xvc2UobGZkKTsKLSAgICBjbG9zZShjZmQpOwotICAgIHJldHVybiAtMTsKLSAgfQotCi0gIC8qIEdldCB0aGUgY2xpZW50IGR5bmFtaWMgcG9ydCBmb3IgaW50cnVzaW9uIGNoZWNrIGJlbG93LiAqLwotICBsZW4gPSBzaXplb2YoYWRkcjIpOwotICBpZihnZXRzb2NrbmFtZShjZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmFkZHIyLCAmbGVuKSA8IDApIHsKLSAgICBjbG9zZShsZmQpOwotICAgIGNsb3NlKGNmZCk7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0KLSAgLyogQWNjZXB0IHRoZSBpbmNvbWluZyBjb25uZWN0aW9uIGFuZCBnZXQgdGhlIHNlcnZlciBzb2NrZXQuICovCi0gIGN1cmx4X25vbmJsb2NrKGxmZCwgVFJVRSk7Ci0gIGZvcig7OykgewotICAgIGxlbiA9IHNpemVvZihhZGRyMSk7Ci0gICAgc2ZkID0gYWNjZXB0KGxmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAmYWRkcjEsICZsZW4pOwotICAgIGlmKHNmZCA8IDApIHsKLSAgICAgIGNsb3NlKGxmZCk7Ci0gICAgICBjbG9zZShjZmQpOwotICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIC8qIENoZWNrIGZvciBwb3NzaWJsZSBpbnRydXNpb24gZnJvbSBhbiBleHRlcm5hbCBwcm9jZXNzLiAqLwotICAgIGlmKGFkZHIxLnNpbl9hZGRyLnNfYWRkciA9PSBhZGRyMi5zaW5fYWRkci5zX2FkZHIgJiYKLSAgICAgICBhZGRyMS5zaW5fcG9ydCA9PSBhZGRyMi5zaW5fcG9ydCkKLSAgICAgIGJyZWFrOwotCi0gICAgLyogSW50cnVzaW9uOiByZWplY3QgaW5jb21pbmcgY29ubmVjdGlvbi4gKi8KLSAgICBjbG9zZShzZmQpOwotICB9Ci0KLSAgLyogRG9uZSwgcmV0dXJuIHNvY2tldHMgYW5kIHN1Y2NlZWQuICovCi0gIGNsb3NlKGxmZCk7Ci0gIGN1cmx4X25vbmJsb2NrKGNmZCwgRkFMU0UpOwotICBzdlswXSA9IGNmZDsKLSAgc3ZbMV0gPSBzZmQ7Ci0gIHJldHVybiAwOwotfQotCiBzdGF0aWMgaW50IHBpcGVfc3Nsb3ZlcnNzbChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9ucykKIHsKQEAgLTg1NSw3ICs3NjMsNyBAQAogCiAgIC8qIEVzdGFibGlzaCBhIHBpcGVsaW5pbmcgc29ja2V0IHBhaXIgZm9yIFNTTCBvdmVyIFNTTC4gKi8KICAgaWYoY29ubi0+cHJveHlfc3NsW3NvY2tpbmRleF0udXNlKSB7Ci0gICAgaWYoaW5ldHNvY2tldHBhaXIoc29ja3BhaXIpKQorICAgIGlmKEN1cmxfc29ja2V0cGFpcigwLCAwLCAwLCBzb2NrcGFpcikpCiAgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CiAgICAgQkFDS0VORC0+bG9jYWxmZCA9IHNvY2twYWlyWzBdOwogICAgIEJBQ0tFTkQtPnJlbW90ZWZkID0gc29ja3BhaXJbMV07CkBAIC0xMTU3LDcgKzEwNjUsNyBAQAogewogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKICAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07Ci0gIGxvbmcgdGltZW91dF9tczsKKyAgdGltZWRpZmZfdCB0aW1lb3V0X21zOwogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKIAogICAqZG9uZSA9IGNvbm5zc2wtPnN0YXRlID09IHNzbF9jb25uZWN0aW9uX2NvbXBsZXRlOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9nc2tpdC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9nc2tpdC5oCmluZGV4IDQ2NmVlNGQuLmIwNmI1ZTEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvZ3NraXQuaAorKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL2dza2l0LmgKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvZ3Rscy5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9ndGxzLmMKaW5kZXggODY5M2NkYy4uNWY3NDBlZSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9ndGxzLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9ndGxzLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTI4OCw3ICsyODgsNyBAQAogICBjdXJsX3NvY2tldF90IHNvY2tmZCA9IGNvbm4tPnNvY2tbc29ja2luZGV4XTsKIAogICBmb3IoOzspIHsKLSAgICB0aW1lX3QgdGltZW91dF9tczsKKyAgICB0aW1lZGlmZl90IHRpbWVvdXRfbXM7CiAgICAgaW50IHJjOwogCiAgICAgLyogY2hlY2sgYWxsb3dlZCB0aW1lIGxlZnQgKi8KQEAgLTMxMSw3ICszMTEsNyBAQAogCiAgICAgICB3aGF0ID0gQ3VybF9zb2NrZXRfY2hlY2socmVhZGZkLCBDVVJMX1NPQ0tFVF9CQUQsIHdyaXRlZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uYmxvY2tpbmc/MDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X21zP3RpbWVvdXRfbXM6MTAwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9tcz8odGltZV90KXRpbWVvdXRfbXM6MTAwMCk7CiAgICAgICBpZih3aGF0IDwgMCkgewogICAgICAgICAvKiBmYXRhbCBlcnJvciAqLwogICAgICAgICBmYWlsZihkYXRhLCAic2VsZWN0L3BvbGwgb24gU1NMIHNvY2tldCwgZXJybm86ICVkIiwgU09DS0VSUk5PKTsKQEAgLTY2Niw2ICs2NjYsMTAgQEAKICAgLyogSW5pdGlhbGl6ZSBUTFMgc2Vzc2lvbiBhcyBhIGNsaWVudCAqLwogICBpbml0X2ZsYWdzID0gR05VVExTX0NMSUVOVDsKIAorI2lmIGRlZmluZWQoR05VVExTX0ZPUkNFX0NMSUVOVF9DRVJUKQorICBpbml0X2ZsYWdzIHw9IEdOVVRMU19GT1JDRV9DTElFTlRfQ0VSVDsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChHTlVUTFNfTk9fVElDS0VUUykKICAgLyogRGlzYWJsZSBUTFMgc2Vzc2lvbiB0aWNrZXRzICovCiAgIGluaXRfZmxhZ3MgfD0gR05VVExTX05PX1RJQ0tFVFM7CkBAIC0xNjA4LDcgKzE2MTIsNyBAQAogc3RhdGljIHZvaWQgY2xvc2Vfb25lKHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsKQogewogICBpZihCQUNLRU5ELT5zZXNzaW9uKSB7Ci0gICAgZ251dGxzX2J5ZShCQUNLRU5ELT5zZXNzaW9uLCBHTlVUTFNfU0hVVF9SRFdSKTsKKyAgICBnbnV0bHNfYnllKEJBQ0tFTkQtPnNlc3Npb24sIEdOVVRMU19TSFVUX1dSKTsKICAgICBnbnV0bHNfZGVpbml0KEJBQ0tFTkQtPnNlc3Npb24pOwogICAgIEJBQ0tFTkQtPnNlc3Npb24gPSBOVUxMOwogICB9CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL21iZWR0bHMuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvbWJlZHRscy5jCmluZGV4IDYzZDFmNGMuLmYwNTczMTUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvbWJlZHRscy5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvbWJlZHRscy5jCkBAIC02LDcgKzYsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDEwIC0gMjAxMSwgSG9pLUhvIENoYW4sIDxob2loby5jaGFuQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC01NSw3ICs1NSw3IEBACiAjaW5jbHVkZSAiY29ubmVjdC5oIiAvKiBmb3IgdGhlIGNvbm5lY3QgdGltZW91dCAqLwogI2luY2x1ZGUgInNlbGVjdC5oIgogI2luY2x1ZGUgIm11bHRpaWYuaCIKLSNpbmNsdWRlICJwb2xhcnNzbF90aHJlYWRsb2NrLmgiCisjaW5jbHVkZSAibWJlZHRsc190aHJlYWRsb2NrLmgiCiAKIC8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgpAQCAtOTEsMTIgKzkxLDEyIEBACiBzdGF0aWMgdm9pZCBlbnRyb3B5X2luaXRfbXV0ZXgobWJlZHRsc19lbnRyb3B5X2NvbnRleHQgKmN0eCkKIHsKICAgLyogbG9jayAwID0gZW50cm9weV9pbml0X211dGV4KCkgKi8KLSAgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbigwKTsKKyAgQ3VybF9tYmVkdGxzdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKDApOwogICBpZihlbnRyb3B5X2luaXRfaW5pdGlhbGl6ZWQgPT0gMCkgewogICAgIG1iZWR0bHNfZW50cm9weV9pbml0KGN0eCk7CiAgICAgZW50cm9weV9pbml0X2luaXRpYWxpemVkID0gMTsKICAgfQotICBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja191bmxvY2tfZnVuY3Rpb24oMCk7CisgIEN1cmxfbWJlZHRsc3RocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKDApOwogfQogLyogZW5kIG9mIGVudHJvcHlfaW5pdF9tdXRleCgpICovCiAKQEAgLTEwNSw5ICsxMDUsOSBAQAogewogICBpbnQgcmV0OwogICAvKiBsb2NrIDEgPSBlbnRyb3B5X2Z1bmNfbXV0ZXgoKSAqLwotICBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKDEpOworICBDdXJsX21iZWR0bHN0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24oMSk7CiAgIHJldCA9IG1iZWR0bHNfZW50cm9weV9mdW5jKGRhdGEsIG91dHB1dCwgbGVuKTsKLSAgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKDEpOworICBDdXJsX21iZWR0bHN0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbigxKTsKIAogICByZXR1cm4gcmV0OwogfQpAQCAtNTg4LDYgKzU4OCw5IEBACiAgICAgZWxzZSBpZihyZXQgJiBNQkVEVExTX1g1MDlfQkFEQ0VSVF9OT1RfVFJVU1RFRCkKICAgICAgIGZhaWxmKGRhdGEsICJDZXJ0IHZlcmlmeSBmYWlsZWQ6IEJBRENFUlRfTk9UX1RSVVNURUQiKTsKIAorICAgIGVsc2UgaWYocmV0ICYgTUJFRFRMU19YNTA5X0JBRENFUlRfRlVUVVJFKQorICAgICAgZmFpbGYoZGF0YSwgIkNlcnQgdmVyaWZ5IGZhaWxlZDogQkFEQ0VSVF9GVVRVUkUiKTsKKwogICAgIHJldHVybiBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047CiAgIH0KIApAQCAtODg0LDcgKzg4Nyw3IEBACiAgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwogICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKICAgY3VybF9zb2NrZXRfdCBzb2NrZmQgPSBjb25uLT5zb2NrW3NvY2tpbmRleF07Ci0gIGxvbmcgdGltZW91dF9tczsKKyAgdGltZWRpZmZfdCB0aW1lb3V0X21zOwogICBpbnQgd2hhdDsKIAogICAvKiBjaGVjayBpZiB0aGUgY29ubmVjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIGVzdGFibGlzaGVkICovCkBAIC05MzAsNyArOTMzLDcgQEAKICAgICAgICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZT9zb2NrZmQ6Q1VSTF9TT0NLRVRfQkFEOwogCiAgICAgICB3aGF0ID0gQ3VybF9zb2NrZXRfY2hlY2socmVhZGZkLCBDVVJMX1NPQ0tFVF9CQUQsIHdyaXRlZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uYmxvY2tpbmcgPyAwIDogdGltZW91dF9tcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uYmxvY2tpbmcgPyAwIDogKHRpbWVfdCl0aW1lb3V0X21zKTsKICAgICAgIGlmKHdoYXQgPCAwKSB7CiAgICAgICAgIC8qIGZhdGFsIGVycm9yICovCiAgICAgICAgIGZhaWxmKGRhdGEsICJzZWxlY3QvcG9sbCBvbiBTU0wgc29ja2V0LCBlcnJubzogJWQiLCBTT0NLRVJSTk8pOwpAQCAtMTAxNCwxMiArMTAxNywxMiBAQAogICovCiBzdGF0aWMgaW50IEN1cmxfbWJlZHRsc19pbml0KHZvaWQpCiB7Ci0gIHJldHVybiBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfc2V0dXAoKTsKKyAgcmV0dXJuIEN1cmxfbWJlZHRsc3RocmVhZGxvY2tfdGhyZWFkX3NldHVwKCk7CiB9CiAKIHN0YXRpYyB2b2lkIEN1cmxfbWJlZHRsc19jbGVhbnVwKHZvaWQpCiB7Ci0gICh2b2lkKUN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKCk7CisgICh2b2lkKUN1cmxfbWJlZHRsc3RocmVhZGxvY2tfdGhyZWFkX2NsZWFudXAoKTsKIH0KIAogc3RhdGljIGJvb2wgQ3VybF9tYmVkdGxzX2RhdGFfcGVuZGluZyhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL21iZWR0bHMuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvbWJlZHRscy5oCmluZGV4IDRhOTM4NjAuLjBjYzY0YjMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvbWJlZHRscy5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvbWJlZHRscy5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICogQ29weXJpZ2h0IChDKSAyMDEwLCBIb2ktSG8gQ2hhbiwgPGhvaWhvLmNoYW5AZ21haWwuY29tPgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL21iZWR0bHNfdGhyZWFkbG9jay5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9tYmVkdGxzX3RocmVhZGxvY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDY3MmYxCi0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9tYmVkdGxzX3RocmVhZGxvY2suYwpAQCAtMCwwICsxLDE0NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgSG9pLUhvIENoYW4sIDxob2loby5jaGFuQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmIGRlZmluZWQoVVNFX01CRURUTFMpICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKChkZWZpbmVkKFVTRV9USFJFQURTX1BPU0lYKSAmJiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9IKSkgfHwgICBcCisgICAoZGVmaW5lZChVU0VfVEhSRUFEU19XSU4zMikgJiYgZGVmaW5lZChIQVZFX1BST0NFU1NfSCkpKQorCisjaWYgZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkgJiYgZGVmaW5lZChIQVZFX1BUSFJFQURfSCkKKyMgIGluY2x1ZGUgPHB0aHJlYWQuaD4KKyMgIGRlZmluZSBNQkVEVExTX01VVEVYX1QgcHRocmVhZF9tdXRleF90CisjZWxpZiBkZWZpbmVkKFVTRV9USFJFQURTX1dJTjMyKSAmJiBkZWZpbmVkKEhBVkVfUFJPQ0VTU19IKQorIyAgaW5jbHVkZSA8cHJvY2Vzcy5oPgorIyAgZGVmaW5lIE1CRURUTFNfTVVURVhfVCBIQU5ETEUKKyNlbmRpZgorCisjaW5jbHVkZSAibWJlZHRsc190aHJlYWRsb2NrLmgiCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKworLyogbnVtYmVyIG9mIHRocmVhZCBsb2NrcyAqLworI2RlZmluZSBOVU1UICAgICAgICAgICAgICAgICAgICAyCisKKy8qIFRoaXMgYXJyYXkgd2lsbCBzdG9yZSBhbGwgb2YgdGhlIG11dGV4ZXMgYXZhaWxhYmxlIHRvIE1iZWR0bHMuICovCitzdGF0aWMgTUJFRFRMU19NVVRFWF9UICptdXRleF9idWYgPSBOVUxMOworCitpbnQgQ3VybF9tYmVkdGxzdGhyZWFkbG9ja190aHJlYWRfc2V0dXAodm9pZCkKK3sKKyAgaW50IGk7CisKKyAgbXV0ZXhfYnVmID0gY2FsbG9jKE5VTVQgKiBzaXplb2YoTUJFRFRMU19NVVRFWF9UKSwgMSk7CisgIGlmKCFtdXRleF9idWYpCisgICAgcmV0dXJuIDA7ICAgICAvKiBlcnJvciwgbm8gbnVtYmVyIG9mIHRocmVhZHMgZGVmaW5lZCAqLworCisgIGZvcihpID0gMDsgIGkgPCBOVU1UOyAgaSsrKSB7CisgICAgaW50IHJldDsKKyNpZiBkZWZpbmVkKFVTRV9USFJFQURTX1BPU0lYKSAmJiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9IKQorICAgIHJldCA9IHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0ZXhfYnVmW2ldLCBOVUxMKTsKKyAgICBpZihyZXQpCisgICAgICByZXR1cm4gMDsgLyogcHRocmVhZF9tdXRleF9pbml0IGZhaWxlZCAqLworI2VsaWYgZGVmaW5lZChVU0VfVEhSRUFEU19XSU4zMikgJiYgZGVmaW5lZChIQVZFX1BST0NFU1NfSCkKKyAgICBtdXRleF9idWZbaV0gPSBDcmVhdGVNdXRleCgwLCBGQUxTRSwgMCk7CisgICAgaWYobXV0ZXhfYnVmW2ldID09IDApCisgICAgICByZXR1cm4gMDsgIC8qIENyZWF0ZU11dGV4IGZhaWxlZCAqLworI2VuZGlmIC8qIFVTRV9USFJFQURTX1BPU0lYICYmIEhBVkVfUFRIUkVBRF9IICovCisgIH0KKworICByZXR1cm4gMTsgLyogT0sgKi8KK30KKworaW50IEN1cmxfbWJlZHRsc3RocmVhZGxvY2tfdGhyZWFkX2NsZWFudXAodm9pZCkKK3sKKyAgaW50IGk7CisKKyAgaWYoIW11dGV4X2J1ZikKKyAgICByZXR1cm4gMDsgLyogZXJyb3IsIG5vIHRocmVhZHMgbG9ja3MgZGVmaW5lZCAqLworCisgIGZvcihpID0gMDsgaSA8IE5VTVQ7IGkrKykgeworICAgIGludCByZXQ7CisjaWYgZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkgJiYgZGVmaW5lZChIQVZFX1BUSFJFQURfSCkKKyAgICByZXQgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4X2J1ZltpXSk7CisgICAgaWYocmV0KQorICAgICAgcmV0dXJuIDA7IC8qIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSBmYWlsZWQgKi8KKyNlbGlmIGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpICYmIGRlZmluZWQoSEFWRV9QUk9DRVNTX0gpCisgICAgcmV0ID0gQ2xvc2VIYW5kbGUobXV0ZXhfYnVmW2ldKTsKKyAgICBpZighcmV0KQorICAgICAgcmV0dXJuIDA7IC8qIENsb3NlSGFuZGxlIGZhaWxlZCAqLworI2VuZGlmIC8qIFVTRV9USFJFQURTX1BPU0lYICYmIEhBVkVfUFRIUkVBRF9IICovCisgIH0KKyAgZnJlZShtdXRleF9idWYpOworICBtdXRleF9idWYgPSBOVUxMOworCisgIHJldHVybiAxOyAvKiBPSyAqLworfQorCitpbnQgQ3VybF9tYmVkdGxzdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKGludCBuKQoreworICBpZihuIDwgTlVNVCkgeworICAgIGludCByZXQ7CisjaWYgZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkgJiYgZGVmaW5lZChIQVZFX1BUSFJFQURfSCkKKyAgICByZXQgPSBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4X2J1ZltuXSk7CisgICAgaWYocmV0KSB7CisgICAgICBERUJVR0YoZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAiRXJyb3I6IG1iZWR0bHN0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24gZmFpbGVkXG4iKSk7CisgICAgICByZXR1cm4gMDsgLyogcHRocmVhZF9tdXRleF9sb2NrIGZhaWxlZCAqLworICAgIH0KKyNlbGlmIGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpICYmIGRlZmluZWQoSEFWRV9QUk9DRVNTX0gpCisgICAgcmV0ID0gKFdhaXRGb3JTaW5nbGVPYmplY3QobXV0ZXhfYnVmW25dLCBJTkZJTklURSkgPT0gV0FJVF9GQUlMRUQ/MTowKTsKKyAgICBpZihyZXQpIHsKKyAgICAgIERFQlVHRihmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICJFcnJvcjogbWJlZHRsc3RocmVhZGxvY2tfbG9ja19mdW5jdGlvbiBmYWlsZWRcbiIpKTsKKyAgICAgIHJldHVybiAwOyAvKiBwdGhyZWFkX211dGV4X2xvY2sgZmFpbGVkICovCisgICAgfQorI2VuZGlmIC8qIFVTRV9USFJFQURTX1BPU0lYICYmIEhBVkVfUFRIUkVBRF9IICovCisgIH0KKyAgcmV0dXJuIDE7IC8qIE9LICovCit9CisKK2ludCBDdXJsX21iZWR0bHN0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbihpbnQgbikKK3sKKyAgaWYobiA8IE5VTVQpIHsKKyAgICBpbnQgcmV0OworI2lmIGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpICYmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0gpCisgICAgcmV0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4X2J1ZltuXSk7CisgICAgaWYocmV0KSB7CisgICAgICBERUJVR0YoZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAiRXJyb3I6IG1iZWR0bHN0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbiBmYWlsZWRcbiIpKTsKKyAgICAgIHJldHVybiAwOyAvKiBwdGhyZWFkX211dGV4X3VubG9jayBmYWlsZWQgKi8KKyAgICB9CisjZWxpZiBkZWZpbmVkKFVTRV9USFJFQURTX1dJTjMyKSAmJiBkZWZpbmVkKEhBVkVfUFJPQ0VTU19IKQorICAgIHJldCA9IFJlbGVhc2VNdXRleChtdXRleF9idWZbbl0pOworICAgIGlmKCFyZXQpIHsKKyAgICAgIERFQlVHRihmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICJFcnJvcjogbWJlZHRsc3RocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uIGZhaWxlZFxuIikpOworICAgICAgcmV0dXJuIDA7IC8qIHB0aHJlYWRfbXV0ZXhfbG9jayBmYWlsZWQgKi8KKyAgICB9CisjZW5kaWYgLyogVVNFX1RIUkVBRFNfUE9TSVggJiYgSEFWRV9QVEhSRUFEX0ggKi8KKyAgfQorICByZXR1cm4gMTsgLyogT0sgKi8KK30KKworI2VuZGlmIC8qIFVTRV9NQkVEVExTICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL21iZWR0bHNfdGhyZWFkbG9jay5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9tYmVkdGxzX3RocmVhZGxvY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmE3ODdkCi0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9tYmVkdGxzX3RocmVhZGxvY2suaApAQCAtMCwwICsxLDQ4IEBACisjaWZuZGVmIEhFQURFUl9DVVJMX01CRURUTFNfVEhSRUFETE9DS19ICisjZGVmaW5lIEhFQURFUl9DVVJMX01CRURUTFNfVEhSRUFETE9DS19ICisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBIb2ktSG8gQ2hhbiwgPGhvaWhvLmNoYW5AZ21haWwuY29tPgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWZkZWYgVVNFX01CRURUTFMKKworI2lmIChkZWZpbmVkKFVTRV9USFJFQURTX1BPU0lYKSAmJiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9IKSkgfHwgXAorICAgIChkZWZpbmVkKFVTRV9USFJFQURTX1dJTjMyKSAmJiBkZWZpbmVkKEhBVkVfUFJPQ0VTU19IKSkKKworaW50IEN1cmxfbWJlZHRsc3RocmVhZGxvY2tfdGhyZWFkX3NldHVwKHZvaWQpOworaW50IEN1cmxfbWJlZHRsc3RocmVhZGxvY2tfdGhyZWFkX2NsZWFudXAodm9pZCk7CitpbnQgQ3VybF9tYmVkdGxzdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKGludCBuKTsKK2ludCBDdXJsX21iZWR0bHN0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbihpbnQgbik7CisKKyNlbHNlCisKKyNkZWZpbmUgQ3VybF9tYmVkdGxzdGhyZWFkbG9ja190aHJlYWRfc2V0dXAoKSAxCisjZGVmaW5lIEN1cmxfbWJlZHRsc3RocmVhZGxvY2tfdGhyZWFkX2NsZWFudXAoKSAxCisjZGVmaW5lIEN1cmxfbWJlZHRsc3RocmVhZGxvY2tfbG9ja19mdW5jdGlvbih4KSAxCisjZGVmaW5lIEN1cmxfbWJlZHRsc3RocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKHgpIDEKKworI2VuZGlmIC8qIFVTRV9USFJFQURTX1BPU0lYIHx8IFVTRV9USFJFQURTX1dJTjMyICovCisKKyNlbmRpZiAvKiBVU0VfTUJFRFRMUyAqLworCisjZW5kaWYgLyogSEVBREVSX0NVUkxfTUJFRFRMU19USFJFQURMT0NLX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvbWVzYWxpbmsuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvbWVzYWxpbmsuYwppbmRleCA3MThjMjgyLi5jYWIxZTM5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL21lc2FsaW5rLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9tZXNhbGluay5jCkBAIC02LDcgKzYsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDE3IC0gMjAxOCwgWWltaW5nIEppbmcsIDxqaW5neWltaW5nQGJhaWR1LmNvbT4KLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTgsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC03Myw2ICs3MywxNyBAQAogc3RhdGljIEN1cmxfcmVjdiBtZXNhbGlua19yZWN2Owogc3RhdGljIEN1cmxfc2VuZCBtZXNhbGlua19zZW5kOwogCitzdGF0aWMgaW50IGRvX2ZpbGVfdHlwZShjb25zdCBjaGFyICp0eXBlKQoreworICBpZighdHlwZSB8fCAhdHlwZVswXSkKKyAgICByZXR1cm4gU1NMX0ZJTEVUWVBFX1BFTTsKKyAgaWYoc3RyY2FzZWNvbXBhcmUodHlwZSwgIlBFTSIpKQorICAgIHJldHVybiBTU0xfRklMRVRZUEVfUEVNOworICBpZihzdHJjYXNlY29tcGFyZSh0eXBlLCAiREVSIikpCisgICAgcmV0dXJuIFNTTF9GSUxFVFlQRV9BU04xOworICByZXR1cm4gLTE7Cit9CisKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIGxvYWRzIGFsbCB0aGUgY2xpZW50L0NBIGNlcnRpZmljYXRlcyBhbmQgQ1JMcy4gU2V0dXAgdGhlIFRMUwogICogbGF5ZXIgYW5kIGRvIGFsbCBuZWNlc3NhcnkgbWFnaWMuCkBAIC04Myw5ICs5NCw2IEBACiAgIGNoYXIgKmNpcGhlcnM7CiAgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOwogICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKLSAgY29uc3QgYm9vbCB2ZXJpZnlwZWVyID0gU1NMX0NPTk5fQ09ORklHKHZlcmlmeXBlZXIpOwotICBjb25zdCBjaGFyICpjb25zdCBzc2xfY2FmaWxlID0gU1NMX0NPTk5fQ09ORklHKENBZmlsZSk7Ci0gIGNvbnN0IGNoYXIgKmNvbnN0IHNzbF9jYXBhdGggPSBTU0xfQ09OTl9DT05GSUcoQ0FwYXRoKTsKICAgc3RydWN0IGluX2FkZHIgYWRkcjQ7CiAjaWZkZWYgRU5BQkxFX0lQVjYKICAgc3RydWN0IGluNl9hZGRyIGFkZHI2OwpAQCAtMTQyLDIxICsxNTAsMjUgQEAKICAgfQogCiAgIFNTTF9DVFhfc2V0X3ZlcmlmeSgKLSAgICBCQUNLRU5ELT5jdHgsIHZlcmlmeXBlZXIgPyBTU0xfVkVSSUZZX1BFRVIgOiBTU0xfVkVSSUZZX05PTkUsIE5VTEwpOworICAgIEJBQ0tFTkQtPmN0eCwgU1NMX0NPTk5fQ09ORklHKHZlcmlmeXBlZXIpID8KKyAgICAgIFNTTF9WRVJJRllfUEVFUiA6IFNTTF9WRVJJRllfTk9ORSwgTlVMTCk7CiAKLSAgaWYoc3NsX2NhZmlsZSB8fCBzc2xfY2FwYXRoKSB7Ci0gICAgaWYoIVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zKEJBQ0tFTkQtPmN0eCwgc3NsX2NhZmlsZSwgc3NsX2NhcGF0aCkpIHsKLSAgICAgIGlmKHZlcmlmeXBlZXIpIHsKKyAgaWYoU1NMX0NPTk5fQ09ORklHKENBZmlsZSkgfHwgU1NMX0NPTk5fQ09ORklHKENBcGF0aCkpIHsKKyAgICBpZighU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQkFDS0VORC0+Y3R4LCBTU0xfQ09OTl9DT05GSUcoQ0FmaWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfQ09OTl9DT05GSUcoQ0FwYXRoKSkpIHsKKyAgICAgIGlmKFNTTF9DT05OX0NPTkZJRyh2ZXJpZnlwZWVyKSkgewogICAgICAgICBmYWlsZihkYXRhLAogICAgICAgICAgICAgICAiZXJyb3Igc2V0dGluZyBjZXJ0aWZpY2F0ZSB2ZXJpZnkgbG9jYXRpb25zOlxuIgogICAgICAgICAgICAgICAiICBDQWZpbGU6ICVzXG4gIENBcGF0aDogJXMiLAotICAgICAgICAgICAgICBzc2xfY2FmaWxlID8gc3NsX2NhZmlsZSA6ICJub25lIiwKLSAgICAgICAgICAgICAgc3NsX2NhcGF0aCA/IHNzbF9jYXBhdGggOiAibm9uZSIpOworICAgICAgICAgICAgICBTU0xfQ09OTl9DT05GSUcoQ0FmaWxlKSA/CisgICAgICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhDQWZpbGUpIDogIm5vbmUiLAorICAgICAgICAgICAgICBTU0xfQ09OTl9DT05GSUcoQ0FwYXRoKSA/CisgICAgICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhDQXBhdGgpIDogIm5vbmUiKTsKICAgICAgICAgcmV0dXJuIENVUkxFX1NTTF9DQUNFUlRfQkFERklMRTsKICAgICAgIH0KICAgICAgIGluZm9mKGRhdGEsCi0gICAgICAgICAgICAiZXJyb3Igc2V0dGluZyBjZXJ0aWZpY2F0ZSB2ZXJpZnkgbG9jYXRpb25zLCIKLSAgICAgICAgICAgICIgY29udGludWluZyBhbnl3YXk6XG4iKTsKKyAgICAgICAgICAiZXJyb3Igc2V0dGluZyBjZXJ0aWZpY2F0ZSB2ZXJpZnkgbG9jYXRpb25zLCIKKyAgICAgICAgICAiIGNvbnRpbnVpbmcgYW55d2F5OlxuIik7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgaW5mb2YoZGF0YSwgInN1Y2Nlc3NmdWxseSBzZXQgY2VydGlmaWNhdGUgdmVyaWZ5IGxvY2F0aW9uczpcbiIpOwpAQCAtMTY0LDggKzE3NiwzMiBAQAogICAgIGluZm9mKGRhdGEsCiAgICAgICAgICAgIiAgQ0FmaWxlOiAlc1xuIgogICAgICAgICAgICIgIENBcGF0aDogJXNcbiIsCi0gICAgICAgICAgc3NsX2NhZmlsZSA/IHNzbF9jYWZpbGUgOiAibm9uZSIsCi0gICAgICAgICAgc3NsX2NhcGF0aCA/IHNzbF9jYXBhdGggOiAibm9uZSIpOworICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhDQWZpbGUpPworICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhDQWZpbGUpOiAibm9uZSIsCisgICAgICAgICAgU1NMX0NPTk5fQ09ORklHKENBcGF0aCk/CisgICAgICAgICAgU1NMX0NPTk5fQ09ORklHKENBcGF0aCk6ICJub25lIik7CisgIH0KKworICBpZihTU0xfU0VUX09QVElPTihjZXJ0KSAmJiBTU0xfU0VUX09QVElPTihrZXkpKSB7CisgICAgaW50IGZpbGVfdHlwZSA9IGRvX2ZpbGVfdHlwZShTU0xfU0VUX09QVElPTihjZXJ0X3R5cGUpKTsKKworICAgIGlmKFNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2NoYWluX2ZpbGUoQkFDS0VORC0+Y3R4LCBTU0xfU0VUX09QVElPTihjZXJ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3R5cGUpICE9IDEpIHsKKyAgICAgIGZhaWxmKGRhdGEsICJ1bmFibGUgdG8gdXNlIGNsaWVudCBjZXJ0aWZpY2F0ZSAobm8ga2V5IG9yIHdyb25nIHBhc3MiCisgICAgICAgICAgICAiIHBocmFzZT8pIik7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgfQorCisgICAgZmlsZV90eXBlID0gZG9fZmlsZV90eXBlKFNTTF9TRVRfT1BUSU9OKGtleV90eXBlKSk7CisgICAgaWYoU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9maWxlKEJBQ0tFTkQtPmN0eCwgU1NMX1NFVF9PUFRJT04oa2V5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfdHlwZSkgIT0gMSkgeworICAgICAgZmFpbGYoZGF0YSwgInVuYWJsZSB0byBzZXQgcHJpdmF0ZSBrZXkiKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICB9CisgICAgaW5mb2YoZGF0YSwKKyAgICAgICAgICAiY2xpZW50IGNlcnQ6ICVzXG4iLAorICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhjbGllbnRjZXJ0KT8KKyAgICAgICAgICBTU0xfQ09OTl9DT05GSUcoY2xpZW50Y2VydCk6ICJub25lIik7CiAgIH0KIAogICBjaXBoZXJzID0gU1NMX0NPTk5fQ09ORklHKGNpcGhlcl9saXN0KTsKQEAgLTI2NSw3ICszMDEsNiBAQAogCiAgIHJldCA9IFNTTF9jb25uZWN0KEJBQ0tFTkQtPmhhbmRsZSk7CiAgIGlmKHJldCAhPSBTU0xfU1VDQ0VTUykgewotICAgIGNoYXIgZXJyb3JfYnVmZmVyW01FU0FMSU5LX01BWF9FUlJPUl9TWl07CiAgICAgaW50IGRldGFpbCA9IFNTTF9nZXRfZXJyb3IoQkFDS0VORC0+aGFuZGxlLCByZXQpOwogCiAgICAgaWYoU1NMX0VSUk9SX1dBTlRfQ09OTkVDVCA9PSBkZXRhaWwgfHwgU1NMX0VSUk9SX1dBTlRfUkVBRCA9PSBkZXRhaWwpIHsKQEAgLTI3Myw2ICszMDgsNyBAQAogICAgICAgcmV0dXJuIENVUkxFX09LOwogICAgIH0KICAgICBlbHNlIHsKKyAgICAgIGNoYXIgZXJyb3JfYnVmZmVyW01FU0FMSU5LX01BWF9FUlJPUl9TWl07CiAgICAgICBmYWlsZihkYXRhLAogICAgICAgICAgICAgIlNTTF9jb25uZWN0IGZhaWxlZCB3aXRoIGVycm9yICVkOiAlcyIsCiAgICAgICAgICAgICBkZXRhaWwsCkBAIC00NTgsNyArNDk0LDcgQEAKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOwogICBjdXJsX3NvY2tldF90IHNvY2tmZCA9IGNvbm4tPnNvY2tbc29ja2luZGV4XTsKLSAgdGltZV90IHRpbWVvdXRfbXM7CisgIHRpbWVkaWZmX3QgdGltZW91dF9tczsKICAgaW50IHdoYXQ7CiAKICAgLyogY2hlY2sgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hlZCAqLwpAQCAtNTA3LDcgKzU0Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBDVVJMX1NPQ0tFVF9CQUQ7CiAKICAgICAgIHdoYXQgPSBDdXJsX3NvY2tldF9jaGVjaygKLSAgICAgICAgcmVhZGZkLCBDVVJMX1NPQ0tFVF9CQUQsIHdyaXRlZmQsIG5vbmJsb2NraW5nID8gMCA6IHRpbWVvdXRfbXMpOworICAgICAgICByZWFkZmQsIENVUkxfU09DS0VUX0JBRCwgd3JpdGVmZCwKKyAgICAgICAgbm9uYmxvY2tpbmcgPyAwIDogKHRpbWVfdCl0aW1lb3V0X21zKTsKICAgICAgIGlmKHdoYXQgPCAwKSB7CiAgICAgICAgIC8qIGZhdGFsIGVycm9yICovCiAgICAgICAgIGZhaWxmKGRhdGEsICJzZWxlY3QvcG9sbCBvbiBTU0wgc29ja2V0LCBlcnJubzogJWQiLCBTT0NLRVJSTk8pOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9uc3MuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvbnNzLmMKaW5kZXggNDkxZGVmMS4uZWY1MWIwZCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9uc3MuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL25zcy5jCkBAIC0xMTMsNyArMTEzLDcgQEAKICAgcHRyLT50eXBlID0gKF90eXBlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgcHRyLT5wVmFsdWUgPSAoX3ZhbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgcHRyLT51bFZhbHVlTGVuID0gKF9sZW4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gV0hJTEVfRkFMU0UKK30gd2hpbGUoMCkKIAogI2RlZmluZSBDRVJUX05ld1RlbXBDZXJ0aWZpY2F0ZSBfX0NFUlRfTmV3VGVtcENlcnRpZmljYXRlCiAKQEAgLTIxNiwxMSArMjE2LDE5IEBACiAgeyJkaGVfcnNhX2NoYWNoYTIwX3BvbHkxMzA1X3NoYV8yNTYiLAogICAgICBUTFNfREhFX1JTQV9XSVRIX0NIQUNIQTIwX1BPTFkxMzA1X1NIQTI1Nn0sCiAjZW5kaWYKKyNpZmRlZiBUTFNfQUVTXzI1Nl9HQ01fU0hBMzg0CisgeyJhZXNfMTI4X2djbV9zaGFfMjU2IiwgICAgICAgICAgICAgIFRMU19BRVNfMTI4X0dDTV9TSEEyNTZ9LAorIHsiYWVzXzI1Nl9nY21fc2hhXzM4NCIsICAgICAgICAgICAgICBUTFNfQUVTXzI1Nl9HQ01fU0hBMzg0fSwKKyB7ImNoYWNoYTIwX3BvbHkxMzA1X3NoYV8yNTYiLCAgICAgICAgVExTX0NIQUNIQTIwX1BPTFkxMzA1X1NIQTI1Nn0sCisjZW5kaWYKIH07CiAKLSNpZmRlZiBXSU4zMgorI2lmIGRlZmluZWQoV0lOMzIpCiBzdGF0aWMgY29uc3QgY2hhciAqcGVtX2xpYnJhcnkgPSAibnNzcGVtLmRsbCI7CiBzdGF0aWMgY29uc3QgY2hhciAqdHJ1c3RfbGlicmFyeSA9ICJuc3Nja2JpLmRsbCI7CisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKK3N0YXRpYyBjb25zdCBjaGFyICpwZW1fbGlicmFyeSA9ICJsaWJuc3NwZW0uZHlsaWIiOworc3RhdGljIGNvbnN0IGNoYXIgKnRydXN0X2xpYnJhcnkgPSAibGlibnNzY2tiaS5keWxpYiI7CiAjZWxzZQogc3RhdGljIGNvbnN0IGNoYXIgKnBlbV9saWJyYXJ5ID0gImxpYm5zc3BlbS5zbyI7CiBzdGF0aWMgY29uc3QgY2hhciAqdHJ1c3RfbGlicmFyeSA9ICJsaWJuc3Nja2JpLnNvIjsKQEAgLTU3MywxOSArNTgxLDIxIEBACiAgIC8qIGFjcXVpcmUgbG9jayBiZWZvcmUgY2FsbCBvZiBDRVJUX0NhY2hlQ1JMKCkgYW5kIGFjY2Vzc2luZyBuc3NfY3JsX2xpc3QgKi8KICAgUFJfTG9jayhuc3NfY3JsbG9jayk7CiAKLSAgLyogc3RvcmUgdGhlIENSTCBpdGVtIHNvIHRoYXQgd2UgY2FuIGZyZWUgaXQgaW4gQ3VybF9uc3NfY2xlYW51cCgpICovCi0gIGlmKGluc2VydF93cmFwcGVkX3B0cigmbnNzX2NybF9saXN0LCBjcmxfZGVyKSAhPSBDVVJMRV9PSykgewotICAgIFNFQ0lURU1fRnJlZUl0ZW0oY3JsX2RlciwgUFJfVFJVRSk7Ci0gICAgUFJfVW5sb2NrKG5zc19jcmxsb2NrKTsKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgfQotCiAgIGlmKFNFQ1N1Y2Nlc3MgIT0gQ0VSVF9DYWNoZUNSTChkYiwgY3JsX2RlcikpIHsKICAgICAvKiB1bmFibGUgdG8gY2FjaGUgQ1JMICovCisgICAgU0VDSVRFTV9GcmVlSXRlbShjcmxfZGVyLCBQUl9UUlVFKTsKICAgICBQUl9VbmxvY2sobnNzX2NybGxvY2spOwogICAgIHJldHVybiBDVVJMRV9TU0xfQ1JMX0JBREZJTEU7CiAgIH0KIAorICAvKiBzdG9yZSB0aGUgQ1JMIGl0ZW0gc28gdGhhdCB3ZSBjYW4gZnJlZSBpdCBpbiBDdXJsX25zc19jbGVhbnVwKCkgKi8KKyAgaWYoaW5zZXJ0X3dyYXBwZWRfcHRyKCZuc3NfY3JsX2xpc3QsIGNybF9kZXIpICE9IENVUkxFX09LKSB7CisgICAgaWYoU0VDU3VjY2VzcyA9PSBDRVJUX1VuY2FjaGVDUkwoZGIsIGNybF9kZXIpKQorICAgICAgU0VDSVRFTV9GcmVlSXRlbShjcmxfZGVyLCBQUl9UUlVFKTsKKyAgICBQUl9VbmxvY2sobnNzX2NybGxvY2spOworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKICAgLyogd2UgbmVlZCB0byBjbGVhciBzZXNzaW9uIGNhY2hlLCBzbyB0aGF0IHRoZSBDUkwgY291bGQgdGFrZSBlZmZlY3QgKi8KICAgU1NMX0NsZWFyU2Vzc2lvbkNhY2hlKCk7CiAgIFBSX1VubG9jayhuc3NfY3JsbG9jayk7CkBAIC02ODEsNyArNjkxLDEwIEBACiAgIHRtcCA9IFNFQ01PRF9XYWl0Rm9yQW55VG9rZW5FdmVudChwZW1fbW9kdWxlLCAwLCAwKTsKICAgaWYodG1wKQogICAgIFBLMTFfRnJlZVNsb3QodG1wKTsKLSAgUEsxMV9Jc1ByZXNlbnQoc2xvdCk7CisgIGlmKCFQSzExX0lzUHJlc2VudChzbG90KSkgeworICAgIFBLMTFfRnJlZVNsb3Qoc2xvdCk7CisgICAgcmV0dXJuIENVUkxFX1NTTF9DRVJUUFJPQkxFTTsKKyAgfQogCiAgIHN0YXR1cyA9IFBLMTFfQXV0aGVudGljYXRlKHNsb3QsIFBSX1RSVUUsIFNTTF9TRVRfT1BUSU9OKGtleV9wYXNzd2QpKTsKICAgUEsxMV9GcmVlU2xvdChzbG90KTsKQEAgLTE0MTYsNyArMTQyOSw3IEBACiB7CiAgIC8qIGN1cmxfZ2xvYmFsX2luaXQoKSBpcyBub3QgdGhyZWFkLXNhZmUgc28gdGhpcyB0ZXN0IGlzIG9rICovCiAgIGlmKG5zc19pbml0bG9jayA9PSBOVUxMKSB7Ci0gICAgUFJfSW5pdChQUl9VU0VSX1RIUkVBRCwgUFJfUFJJT1JJVFlfTk9STUFMLCAyNTYpOworICAgIFBSX0luaXQoUFJfVVNFUl9USFJFQUQsIFBSX1BSSU9SSVRZX05PUk1BTCwgMCk7CiAgICAgbnNzX2luaXRsb2NrID0gUFJfTmV3TG9jaygpOwogICAgIG5zc19jcmxsb2NrID0gUFJfTmV3TG9jaygpOwogICAgIG5zc19maW5kc2xvdF9sb2NrID0gUFJfTmV3TG9jaygpOwpAQCAtMTcyMSwyMCArMTczNCwxNiBAQAogICBDVVJMY29kZSByZXN1bHQ7CiAgIGNvbnN0IGxvbmcgbWluID0gU1NMX0NPTk5fQ09ORklHKHZlcnNpb24pOwogICBjb25zdCBsb25nIG1heCA9IFNTTF9DT05OX0NPTkZJRyh2ZXJzaW9uX21heCk7Ci0KLSAgLyogbWFwIENVUkxfU1NMVkVSU0lPTl9ERUZBVUxUIHRvIE5TUyBkZWZhdWx0ICovCi0gIGlmKG1pbiA9PSBDVVJMX1NTTFZFUlNJT05fREVGQVVMVCB8fCBtYXggPT0gQ1VSTF9TU0xWRVJTSU9OX01BWF9ERUZBVUxUKSB7Ci0gICAgLyogbWFwIENVUkxfU1NMVkVSU0lPTl9ERUZBVUxUIHRvIE5TUyBkZWZhdWx0ICovCi0gICAgaWYoU1NMX1ZlcnNpb25SYW5nZUdldERlZmF1bHQoc3NsX3ZhcmlhbnRfc3RyZWFtLCBzc2x2ZXIpICE9IFNFQ1N1Y2Nlc3MpCi0gICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7Ci0gICAgLyogLi4uIGJ1dCBtYWtlIHN1cmUgd2UgdXNlIGF0IGxlYXN0IFRMU3YxLjAgYWNjb3JkaW5nIHRvIGxpYmN1cmwgQVBJICovCi0gICAgaWYoc3NsdmVyLT5taW4gPCBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzApCi0gICAgICBzc2x2ZXItPm1pbiA9IFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMDsKLSAgfQorICBTU0xWZXJzaW9uUmFuZ2UgdnJhbmdlOwogCiAgIHN3aXRjaChtaW4pIHsKICAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjE6CiAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX0RFRkFVTFQ6CisgICAgLyogQnVtcCBvdXIgbWluaW11bSBUTFMgdmVyc2lvbiBpZiBOU1MgaGFzIHN0cmljdGVyIHJlcXVpcmVtZW50cy4gKi8KKyAgICBpZihTU0xfVmVyc2lvblJhbmdlR2V0RGVmYXVsdChzc2xfdmFyaWFudF9zdHJlYW0sICZ2cmFuZ2UpICE9IFNFQ1N1Y2Nlc3MpCisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgaWYoc3NsdmVyLT5taW4gPCB2cmFuZ2UubWluKQorICAgICAgc3NsdmVyLT5taW4gPSB2cmFuZ2UubWluOwogICAgIGJyZWFrOwogICBkZWZhdWx0OgogICAgIHJlc3VsdCA9IG5zc19zc2x2ZXJfZnJvbV9jdXJsKCZzc2x2ZXItPm1pbiwgbWluKTsKQEAgLTIxMTgsNyArMjEyNyw3IEBACiAKIAogICAvKiBjaGVjayB0aW1lb3V0IHNpdHVhdGlvbiAqLwotICBjb25zdCB0aW1lX3QgdGltZV9sZWZ0ID0gQ3VybF90aW1lbGVmdChkYXRhLCBOVUxMLCBUUlVFKTsKKyAgY29uc3QgdGltZWRpZmZfdCB0aW1lX2xlZnQgPSBDdXJsX3RpbWVsZWZ0KGRhdGEsIE5VTEwsIFRSVUUpOwogICBpZih0aW1lX2xlZnQgPCAwKSB7CiAgICAgZmFpbGYoZGF0YSwgInRpbWVkIG91dCBiZWZvcmUgU1NMIGhhbmRzaGFrZSIpOwogICAgIHJlc3VsdCA9IENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvb3BlbnNzbC5jIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9vcGVuc3NsLmMKaW5kZXggODVlOWJlNi4uMWQwOWNhZCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9vcGVuc3NsLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9vcGVuc3NsLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTI1LDExICsyNSw2IEBACiAgKiBidXQgdnRscy5jIHNob3VsZCBldmVyIGNhbGwgb3IgdXNlIHRoZXNlIGZ1bmN0aW9ucy4KICAqLwogCi0vKgotICogVGhlIG9yaWdpbmFsIFNTTGVheS11c2luZyBjb2RlIGZvciBjdXJsIHdhcyB3cml0dGVuIGJ5IExpbmFzIFZlcHN0YXMgYW5kCi0gKiBTYW1wbyBLZWxsb21ha2kgMTk5OC4KLSAqLwotCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCiAjaWZkZWYgVVNFX09QRU5TU0wKQEAgLTQ5LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJzdHJjYXNlLmgiCiAjaW5jbHVkZSAiaG9zdGNoZWNrLmgiCiAjaW5jbHVkZSAibXVsdGlpZi5oIgorI2luY2x1ZGUgInN0cmVycm9yLmgiCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgogI2luY2x1ZGUgPG9wZW5zc2wvcmFuZC5oPgpAQCAtNzUsNyArNzEsNyBAQAogI2VuZGlmCiAKICNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA3MDBmTCkgJiYgLyogMC45Ljcgb3IgbGF0ZXIgKi8gICAgIFwKLSAgIWRlZmluZWQoT1BFTlNTTF9OT19FTkdJTkUpCisgICFkZWZpbmVkKE9QRU5TU0xfTk9fRU5HSU5FKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1VJX0NPTlNPTEUpCiAjZGVmaW5lIFVTRV9PUEVOU1NMX0VOR0lORQogI2luY2x1ZGUgPG9wZW5zc2wvZW5naW5lLmg+CiAjZW5kaWYKQEAgLTE0NiwxNiArMTQyLDE2IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWZkZWYgTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIKLSNkZWZpbmUgT3BlblNTTF92ZXJzaW9uX251bSgpIExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSCi0jZW5kaWYKLQogI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMGZMKSAmJiAvKiAxLjAuMiBvciBsYXRlciAqLyBcCiAgICAgIShkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKSAmJiBcCiAgICAgICBMSUJSRVNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MjA3MDAwMDBMKQogI2RlZmluZSBIQVZFX1g1MDlfR0VUMF9TSUdOQVRVUkUgMQogI2VuZGlmCiAKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAyMDBmTCkgLyogMS4wLjIgb3IgbGF0ZXIgKi8KKyNkZWZpbmUgSEFWRV9TU0xfR0VUX1NIVVRET1dOIDEKKyNlbmRpZgorCiAjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAyMDAzTCAmJiBcCiAgIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPD0gMHgxMDAwMkZGRkwgJiYgXAogICAhZGVmaW5lZChPUEVOU1NMX05PX0NPTVApCkBAIC0zOTIsNyArMzg4LDIwIEBACiAgKi8KIHN0YXRpYyBjaGFyICpvc3NsX3N0cmVycm9yKHVuc2lnbmVkIGxvbmcgZXJyb3IsIGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCiB7CisgIGlmKHNpemUpCisgICAgKmJ1ZiA9ICdcMCc7CisKKyNpZmRlZiBPUEVOU1NMX0lTX0JPUklOR1NTTAorICBFUlJfZXJyb3Jfc3RyaW5nX24oKHVpbnQzMl90KWVycm9yLCBidWYsIHNpemUpOworI2Vsc2UKICAgRVJSX2Vycm9yX3N0cmluZ19uKGVycm9yLCBidWYsIHNpemUpOworI2VuZGlmCisKKyAgaWYoc2l6ZSA+IDEgJiYgISpidWYpIHsKKyAgICBzdHJuY3B5KGJ1ZiwgKGVycm9yID8gIlVua25vd24gZXJyb3IiIDogIk5vIGVycm9yIiksIHNpemUpOworICAgIGJ1ZltzaXplIC0gMV0gPSAnXDAnOworICB9CisKICAgcmV0dXJuIGJ1ZjsKIH0KIApAQCAtMTAyMiwxNCArMTAzMSw4IEBACiAgIEVOR0lORV9sb2FkX2J1aWx0aW5fZW5naW5lcygpOwogI2VuZGlmCiAKLSAgLyogT1BFTlNTTF9jb25maWcoTlVMTCk7IGlzICJzdHJvbmdseSByZWNvbW1lbmRlZCIgdG8gdXNlIGJ1dCB1bmZvcnR1bmF0ZWx5Ci0gICAgIHRoYXQgZnVuY3Rpb24gbWFrZXMgYW4gZXhpdCgpIGNhbGwgb24gd3JvbmdseSBmb3JtYXR0ZWQgY29uZmlnIGZpbGVzCi0gICAgIHdoaWNoIG1ha2VzIGl0IGhhcmQgdG8gdXNlIGluIHNvbWUgc2l0dWF0aW9ucy4gT1BFTlNTTF9jb25maWcoKSBpdHNlbGYKLSAgICAgY2FsbHMgQ09ORl9tb2R1bGVzX2xvYWRfZmlsZSgpIGFuZCB3ZSB1c2UgdGhhdCBpbnN0ZWFkIGFuZCB3ZSBpZ25vcmUKLSAgICAgaXRzIHJldHVybiBjb2RlISAqLwotCi0gIC8qIENPTkZfTUZMQUdTX0RFRkFVTFRfU0VDVElPTiBpbnRyb2R1Y2VkIHNvbWUgdGltZSBiZXR3ZWVuIDAuOS44YiBhbmQKLSAgICAgMC45LjhlICovCisvKiBDT05GX01GTEFHU19ERUZBVUxUX1NFQ1RJT04gd2FzIGludHJvZHVjZWQgc29tZSB0aW1lIGJldHdlZW4gMC45LjhiIGFuZAorICAgMC45LjhlICovCiAjaWZuZGVmIENPTkZfTUZMQUdTX0RFRkFVTFRfU0VDVElPTgogI2RlZmluZSBDT05GX01GTEFHU19ERUZBVUxUX1NFQ1RJT04gMHgwCiAjZW5kaWYKQEAgLTE1MzYsOCArMTUzOSwxMyBAQAogICBhbHRuYW1lcyA9IFg1MDlfZ2V0X2V4dF9kMmkoc2VydmVyX2NlcnQsIE5JRF9zdWJqZWN0X2FsdF9uYW1lLCBOVUxMLCBOVUxMKTsKIAogICBpZihhbHRuYW1lcykgeworI2lmZGVmIE9QRU5TU0xfSVNfQk9SSU5HU1NMCisgICAgc2l6ZV90IG51bWFsdHM7CisgICAgc2l6ZV90IGk7CisjZWxzZQogICAgIGludCBudW1hbHRzOwogICAgIGludCBpOworI2VuZGlmCiAgICAgYm9vbCBkbnNtYXRjaGVkID0gRkFMU0U7CiAgICAgYm9vbCBpcG1hdGNoZWQgPSBGQUxTRTsKIApAQCAtMTU2NywxMSArMTU3NSwxMCBAQAogICAgICAgICAgICAgIGFzc3VtZWQgdGhhdCB0aGUgZGF0YSByZXR1cm5lZCBieSBBU04xX1NUUklOR19kYXRhKCkgaXMgbnVsbAogICAgICAgICAgICAgIHRlcm1pbmF0ZWQgb3IgZG9lcyBub3QgY29udGFpbiBlbWJlZGRlZCBudWxscy4iIEJ1dCBhbHNvIHRoYXQKICAgICAgICAgICAgICAiVGhlIGFjdHVhbCBmb3JtYXQgb2YgdGhlIGRhdGEgd2lsbCBkZXBlbmQgb24gdGhlIGFjdHVhbCBzdHJpbmcKLSAgICAgICAgICAgICB0eXBlIGl0c2VsZjogZm9yIGV4YW1wbGUgZm9yIGFuZCBJQTVTdHJpbmcgdGhlIGRhdGEgd2lsbCBiZSBBU0NJSSIKKyAgICAgICAgICAgICB0eXBlIGl0c2VsZjogZm9yIGV4YW1wbGUgZm9yIGFuIElBNVN0cmluZyB0aGUgZGF0YSB3aWxsIGJlIEFTQ0lJIgogCi0gICAgICAgICAgICAgR2lzbGUgcmVzZWFyY2hlZCB0aGUgT3BlblNTTCBzb3VyY2VzOgotICAgICAgICAgICAgICJJIGNoZWNrZWQgdGhlIDAuOS42IGFuZCAwLjkuOCBzb3VyY2VzIGJlZm9yZSBteSBwYXRjaCBhbmQKLSAgICAgICAgICAgICBpdCBhbHdheXMgMC10ZXJtaW5hdGVzIGFuIElBNVN0cmluZy4iCisgICAgICAgICAgICAgSXQgaGFzIGJlZW4gaG93ZXZlciB2ZXJpZmllZCB0aGF0IGluIDAuOS42IGFuZCAwLjkuNywgSUE1U3RyaW5nCisgICAgICAgICAgICAgaXMgYWx3YXlzIHplcm8tdGVybWluYXRlZC4KICAgICAgICAgICAqLwogICAgICAgICAgIGlmKChhbHRsZW4gPT0gc3RybGVuKGFsdHB0cikpICYmCiAgICAgICAgICAgICAgLyogaWYgdGhpcyBpc24ndCB0cnVlLCB0aGVyZSB3YXMgYW4gZW1iZWRkZWQgemVybyBpbiB0aGUgbmFtZQpAQCAtMTYzNSw4ICsxNjQyLDcgQEAKICAgICAgIC8qIEluIE9wZW5TU0wgMC45LjdkIGFuZCBlYXJsaWVyLCBBU04xX1NUUklOR190b19VVEY4IGZhaWxzIGlmIHRoZSBpbnB1dAogICAgICAgICAgaXMgYWxyZWFkeSBVVEYtOCBlbmNvZGVkLiBXZSBjaGVjayBmb3IgdGhpcyBjYXNlIGFuZCBjb3B5IHRoZSByYXcKICAgICAgICAgIHN0cmluZyBtYW51YWxseSB0byBhdm9pZCB0aGUgcHJvYmxlbS4gVGhpcyBjb2RlIGNhbiBiZSBtYWRlCi0gICAgICAgICBjb25kaXRpb25hbCBpbiB0aGUgZnV0dXJlIHdoZW4gT3BlblNTTCBoYXMgYmVlbiBmaXhlZC4gV29yay1hcm91bmQKLSAgICAgICAgIGJyb3VnaHQgYnkgQWxleGlzIFMuIEwuIENhcnZhbGhvLiAqLworICAgICAgICAgY29uZGl0aW9uYWwgaW4gdGhlIGZ1dHVyZSB3aGVuIE9wZW5TU0wgaGFzIGJlZW4gZml4ZWQuICovCiAgICAgICBpZih0bXApIHsKICAgICAgICAgaWYoQVNOMV9TVFJJTkdfdHlwZSh0bXApID09IFZfQVNOMV9VVEY4U1RSSU5HKSB7CiAgICAgICAgICAgaiA9IEFTTjFfU1RSSU5HX2xlbmd0aCh0bXApOwpAQCAtMjE1Niw5ICsyMTYyLDEwMCBAQAogfQogI2VuZGlmCiAKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMTAwMDAwTCkgLyogMS4xLjAgKi8KIHN0YXRpYyBDVVJMY29kZQotc2V0X3NzbF92ZXJzaW9uX21pbl9tYXgobG9uZyAqY3R4X29wdGlvbnMsIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgpCitzZXRfc3NsX3ZlcnNpb25fbWluX21heChTU0xfQ1RYICpjdHgsIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK3sKKyAgLyogZmlyc3QsIFRMUyBtaW4gdmVyc2lvbi4uLiAqLworICBsb25nIGN1cmxfc3NsX3ZlcnNpb25fbWluID0gU1NMX0NPTk5fQ09ORklHKHZlcnNpb24pOworICBsb25nIGN1cmxfc3NsX3ZlcnNpb25fbWF4OworCisgIC8qIGNvbnZlcnQgY1VSTCBtaW4gU1NMIHZlcnNpb24gb3B0aW9uIHRvIE9wZW5TU0wgY29uc3RhbnQgKi8KKyNpZiBkZWZpbmVkKE9QRU5TU0xfSVNfQk9SSU5HU1NMKSB8fCBkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKQorICB1aW50MTZfdCBvc3NsX3NzbF92ZXJzaW9uX21pbiA9IDA7CisgIHVpbnQxNl90IG9zc2xfc3NsX3ZlcnNpb25fbWF4ID0gMDsKKyNlbHNlCisgIGxvbmcgb3NzbF9zc2xfdmVyc2lvbl9taW4gPSAwOworICBsb25nIG9zc2xfc3NsX3ZlcnNpb25fbWF4ID0gMDsKKyNlbmRpZgorICBzd2l0Y2goY3VybF9zc2xfdmVyc2lvbl9taW4pIHsKKyAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MTogLyogVExTIDEueCAqLworICAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzA6CisgICAgICBvc3NsX3NzbF92ZXJzaW9uX21pbiA9IFRMUzFfVkVSU0lPTjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzE6CisgICAgICBvc3NsX3NzbF92ZXJzaW9uX21pbiA9IFRMUzFfMV9WRVJTSU9OOworICAgICAgYnJlYWs7CisgICAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjFfMjoKKyAgICAgIG9zc2xfc3NsX3ZlcnNpb25fbWluID0gVExTMV8yX1ZFUlNJT047CisgICAgICBicmVhazsKKyNpZmRlZiBUTFMxXzNfVkVSU0lPTgorICAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzM6CisgICAgICBvc3NsX3NzbF92ZXJzaW9uX21pbiA9IFRMUzFfM19WRVJTSU9OOworICAgICAgYnJlYWs7CisjZW5kaWYKKyAgfQorCisgIC8qIENVUkxfU1NMVkVSU0lPTl9ERUZBVUxUIG1lYW5zIHRoYXQgbm8gb3B0aW9uIHdhcyBzZWxlY3RlZC4KKyAgICAgV2UgZG9uJ3Qgd2FudCB0byBwYXNzIDAgdG8gU1NMX0NUWF9zZXRfbWluX3Byb3RvX3ZlcnNpb24gYXMKKyAgICAgaXQgd291bGQgZW5hYmxlIGFsbCB2ZXJzaW9ucyBkb3duIHRvIHRoZSBsb3dlc3Qgc3VwcG9ydGVkIGJ5CisgICAgIHRoZSBsaWJyYXJ5LgorICAgICBTbyB3ZSBza2lwIHRoaXMsIGFuZCBzdGF5IHdpdGggdGhlIE9TIGRlZmF1bHQKKyAgKi8KKyAgaWYoY3VybF9zc2xfdmVyc2lvbl9taW4gIT0gQ1VSTF9TU0xWRVJTSU9OX0RFRkFVTFQpIHsKKyAgICBpZighU1NMX0NUWF9zZXRfbWluX3Byb3RvX3ZlcnNpb24oY3R4LCBvc3NsX3NzbF92ZXJzaW9uX21pbikpIHsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICB9CisgIH0KKworICAvKiAuLi4gdGhlbiwgVExTIG1heCB2ZXJzaW9uICovCisgIGN1cmxfc3NsX3ZlcnNpb25fbWF4ID0gU1NMX0NPTk5fQ09ORklHKHZlcnNpb25fbWF4KTsKKworICAvKiBjb252ZXJ0IGNVUkwgbWF4IFNTTCB2ZXJzaW9uIG9wdGlvbiB0byBPcGVuU1NMIGNvbnN0YW50ICovCisgIHN3aXRjaChjdXJsX3NzbF92ZXJzaW9uX21heCkgeworICAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX01BWF9UTFN2MV8wOgorICAgICAgb3NzbF9zc2xfdmVyc2lvbl9tYXggPSBUTFMxX1ZFUlNJT047CisgICAgICBicmVhazsKKyAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9NQVhfVExTdjFfMToKKyAgICAgIG9zc2xfc3NsX3ZlcnNpb25fbWF4ID0gVExTMV8xX1ZFUlNJT047CisgICAgICBicmVhazsKKyAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9NQVhfVExTdjFfMjoKKyAgICAgIG9zc2xfc3NsX3ZlcnNpb25fbWF4ID0gVExTMV8yX1ZFUlNJT047CisgICAgICBicmVhazsKKyNpZmRlZiBUTFMxXzNfVkVSU0lPTgorICAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX01BWF9UTFN2MV8zOgorICAgICAgb3NzbF9zc2xfdmVyc2lvbl9tYXggPSBUTFMxXzNfVkVSU0lPTjsKKyAgICAgIGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBDVVJMX1NTTFZFUlNJT05fTUFYX05PTkU6ICAvKiBub25lIHNlbGVjdGVkICovCisgICAgY2FzZSBDVVJMX1NTTFZFUlNJT05fTUFYX0RFRkFVTFQ6ICAvKiBtYXggc2VsZWN0ZWQgKi8KKyAgICBkZWZhdWx0OgorICAgICAgLyogU1NMX0NUWF9zZXRfbWF4X3Byb3RvX3ZlcnNpb24gc3RhdGVzIHRoYXQ6CisgICAgICAgIHNldHRpbmcgdGhlIG1heGltdW0gdG8gMCB3aWxsIGVuYWJsZQorICAgICAgICBwcm90b2NvbCB2ZXJzaW9ucyB1cCB0byB0aGUgaGlnaGVzdCB2ZXJzaW9uCisgICAgICAgIHN1cHBvcnRlZCBieSB0aGUgbGlicmFyeSAqLworICAgICAgb3NzbF9zc2xfdmVyc2lvbl9tYXggPSAwOworICAgICAgYnJlYWs7CisgIH0KKworICBpZighU1NMX0NUWF9zZXRfbWF4X3Byb3RvX3ZlcnNpb24oY3R4LCBvc3NsX3NzbF92ZXJzaW9uX21heCkpIHsKKyAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgIH0KKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisjZW5kaWYKKworI2lmZGVmIE9QRU5TU0xfSVNfQk9SSU5HU1NMCit0eXBlZGVmIHVpbnQzMl90IGN0eF9vcHRpb25fdDsKKyNlbHNlCit0eXBlZGVmIGxvbmcgY3R4X29wdGlvbl90OworI2VuZGlmCisKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MTAxMDAwMDBMKSAvKiAxLjEuMCAqLworc3RhdGljIENVUkxjb2RlCitzZXRfc3NsX3ZlcnNpb25fbWluX21heF9sZWdhY3koY3R4X29wdGlvbl90ICpjdHhfb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKIHsKICNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MTAwMDEwMEZMKSB8fCAhZGVmaW5lZChUTFMxXzNfVkVSU0lPTikKICAgLyogY29udm9sdXRlZCAjaWYgY29uZGl0aW9uIGp1c3QgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3Mgb24gdW51c2VkCkBAIC0yMjMwLDYgKzIzMjcsNyBAQAogICB9CiAgIHJldHVybiBDVVJMRV9PSzsKIH0KKyNlbmRpZgogCiAvKiBUaGUgIm5ldyBzZXNzaW9uIiBjYWxsYmFjayBtdXN0IHJldHVybiB6ZXJvIGlmIHRoZSBzZXNzaW9uIGNhbiBiZSByZW1vdmVkCiAgKiBvciBub24temVybyBpZiB0aGUgc2Vzc2lvbiBoYXMgYmVlbiBwdXQgaW50byB0aGUgc2Vzc2lvbiBjYWNoZS4KQEAgLTIyOTYsNyArMjM5NCw4IEBACiAgIFg1MDlfTE9PS1VQICpsb29rdXAgPSBOVUxMOwogICBjdXJsX3NvY2tldF90IHNvY2tmZCA9IGNvbm4tPnNvY2tbc29ja2luZGV4XTsKICAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07Ci0gIGxvbmcgY3R4X29wdGlvbnMgPSAwOworICBjdHhfb3B0aW9uX3QgY3R4X29wdGlvbnMgPSAwOworCiAjaWZkZWYgU1NMX0NUUkxfU0VUX1RMU0VYVF9IT1NUTkFNRQogICBib29sIHNuaTsKICAgY29uc3QgY2hhciAqIGNvbnN0IGhvc3RuYW1lID0gU1NMX0lTX1BST1hZKCkgPyBjb25uLT5odHRwX3Byb3h5Lmhvc3QubmFtZSA6CkBAIC0yNDU5LDQ4ICsyNTU4LDY2IEBACiAjZW5kaWYKIAogICBzd2l0Y2goc3NsX3ZlcnNpb24pIHsKLSAgY2FzZSBDVVJMX1NTTFZFUlNJT05fU1NMdjM6Ci0gICAgY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYyOwotICAgIGN0eF9vcHRpb25zIHw9IFNTTF9PUF9OT19UTFN2MTsKLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDEwMEZMCi0gICAgY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1RMU3YxXzE7Ci0gICAgY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1RMU3YxXzI7Ci0jaWZkZWYgVExTMV8zX1ZFUlNJT04KLSAgICBjdHhfb3B0aW9ucyB8PSBTU0xfT1BfTk9fVExTdjFfMzsKKyAgICAvKiAiLS1zc2x2MiIgb3B0aW9uIG1lYW5zIFNTTHYyIG9ubHksIGRpc2FibGUgYWxsIG90aGVycyAqLworICAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1NTTHYyOgorI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDEwMDAwMEwgLyogMS4xLjAgKi8KKyAgICAgIFNTTF9DVFhfc2V0X21pbl9wcm90b192ZXJzaW9uKEJBQ0tFTkQtPmN0eCwgU1NMMl9WRVJTSU9OKTsKKyAgICAgIFNTTF9DVFhfc2V0X21heF9wcm90b192ZXJzaW9uKEJBQ0tFTkQtPmN0eCwgU1NMMl9WRVJTSU9OKTsKKyNlbHNlCisgICAgICBjdHhfb3B0aW9ucyB8PSBTU0xfT1BfTk9fU1NMdjM7CisgICAgICBjdHhfb3B0aW9ucyB8PSBTU0xfT1BfTk9fVExTdjE7CisjICBpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDEwMEZMCisgICAgICBjdHhfb3B0aW9ucyB8PSBTU0xfT1BfTk9fVExTdjFfMTsKKyAgICAgIGN0eF9vcHRpb25zIHw9IFNTTF9PUF9OT19UTFN2MV8yOworIyAgICBpZmRlZiBUTFMxXzNfVkVSU0lPTgorICAgICAgY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1RMU3YxXzM7CisjICAgIGVuZGlmCisjICBlbmRpZgogI2VuZGlmCi0jZW5kaWYKLSAgICBicmVhazsKKyAgICAgIGJyZWFrOwogCi0gIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX0RFRkFVTFQ6Ci0gIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxOgotICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8wOgotICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8xOgotICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8yOgotICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8zOgotICAgIC8qIGFza2luZyBmb3IgYW55IFRMUyB2ZXJzaW9uIGFzIHRoZSBtaW5pbXVtLCBtZWFucyBubyBTU0wgdmVyc2lvbnMKLSAgICAgICBhbGxvd2VkICovCi0gICAgY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYyOwotICAgIGN0eF9vcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MzsKLSAgICByZXN1bHQgPSBzZXRfc3NsX3ZlcnNpb25fbWluX21heCgmY3R4X29wdGlvbnMsIGNvbm4sIHNvY2tpbmRleCk7Ci0gICAgaWYocmVzdWx0ICE9IENVUkxFX09LKQotICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgYnJlYWs7Ci0KLSAgY2FzZSBDVVJMX1NTTFZFUlNJT05fU1NMdjI6Ci0gICAgY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYzOwotICAgIGN0eF9vcHRpb25zIHw9IFNTTF9PUF9OT19UTFN2MTsKLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDEwMEZMCi0gICAgY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1RMU3YxXzE7Ci0gICAgY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1RMU3YxXzI7Ci0jaWZkZWYgVExTMV8zX1ZFUlNJT04KLSAgICBjdHhfb3B0aW9ucyB8PSBTU0xfT1BfTk9fVExTdjFfMzsKKyAgICAvKiAiLS1zc2x2MyIgb3B0aW9uIG1lYW5zIFNTTHYzIG9ubHksIGRpc2FibGUgYWxsIG90aGVycyAqLworICAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1NTTHYzOgorI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDEwMDAwMEwgLyogMS4xLjAgKi8KKyAgICAgIFNTTF9DVFhfc2V0X21pbl9wcm90b192ZXJzaW9uKEJBQ0tFTkQtPmN0eCwgU1NMM19WRVJTSU9OKTsKKyAgICAgIFNTTF9DVFhfc2V0X21heF9wcm90b192ZXJzaW9uKEJBQ0tFTkQtPmN0eCwgU1NMM19WRVJTSU9OKTsKKyNlbHNlCisgICAgICBjdHhfb3B0aW9ucyB8PSBTU0xfT1BfTk9fU1NMdjI7CisgICAgICBjdHhfb3B0aW9ucyB8PSBTU0xfT1BfTk9fVExTdjE7CisjICBpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDEwMEZMCisgICAgICBjdHhfb3B0aW9ucyB8PSBTU0xfT1BfTk9fVExTdjFfMTsKKyAgICAgIGN0eF9vcHRpb25zIHw9IFNTTF9PUF9OT19UTFN2MV8yOworIyAgICBpZmRlZiBUTFMxXzNfVkVSU0lPTgorICAgICAgY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1RMU3YxXzM7CisjICAgIGVuZGlmCisjICBlbmRpZgogI2VuZGlmCi0jZW5kaWYKLSAgICBicmVhazsKKyAgICAgIGJyZWFrOwogCi0gIGRlZmF1bHQ6Ci0gICAgZmFpbGYoZGF0YSwgIlVucmVjb2duaXplZCBwYXJhbWV0ZXIgcGFzc2VkIHZpYSBDVVJMT1BUX1NTTFZFUlNJT04iKTsKLSAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgLyogIi0tdGxzdjx4Lnk+IiBvcHRpb25zIG1lYW4gVExTID49IHZlcnNpb24gPHgueT4gKi8KKyAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9ERUZBVUxUOgorICAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxOiAvKiBUTFMgPj0gdmVyc2lvbiAxLjAgKi8KKyAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8wOiAvKiBUTFMgPj0gdmVyc2lvbiAxLjAgKi8KKyAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8xOiAvKiBUTFMgPj0gdmVyc2lvbiAxLjEgKi8KKyAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8yOiAvKiBUTFMgPj0gdmVyc2lvbiAxLjIgKi8KKyAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8zOiAvKiBUTFMgPj0gdmVyc2lvbiAxLjMgKi8KKyAgICAgIC8qIGFza2luZyBmb3IgYW55IFRMUyB2ZXJzaW9uIGFzIHRoZSBtaW5pbXVtLCBtZWFucyBubyBTU0wgdmVyc2lvbnMKKyAgICAgICAgYWxsb3dlZCAqLworICAgICAgY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYyOworICAgICAgY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYzOworCisjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDEwMDAwMEwpIC8qIDEuMS4wICovCisgICAgICByZXN1bHQgPSBzZXRfc3NsX3ZlcnNpb25fbWluX21heChCQUNLRU5ELT5jdHgsIGNvbm4pOworI2Vsc2UKKyAgICAgIHJlc3VsdCA9IHNldF9zc2xfdmVyc2lvbl9taW5fbWF4X2xlZ2FjeSgmY3R4X29wdGlvbnMsIGNvbm4sIHNvY2tpbmRleCk7CisjZW5kaWYKKyAgICAgIGlmKHJlc3VsdCAhPSBDVVJMRV9PSykKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIGZhaWxmKGRhdGEsICJVbnJlY29nbml6ZWQgcGFyYW1ldGVyIHBhc3NlZCB2aWEgQ1VSTE9QVF9TU0xWRVJTSU9OIik7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CiAgIH0KIAogICBTU0xfQ1RYX3NldF9vcHRpb25zKEJBQ0tFTkQtPmN0eCwgY3R4X29wdGlvbnMpOwpAQCAtMjY1NSwxOSArMjc3MiwyOSBAQAogICAgIGluZm9mKGRhdGEsICIgIENSTGZpbGU6ICVzXG4iLCBzc2xfY3JsZmlsZSk7CiAgIH0KIAotICAvKiBUcnkgYnVpbGRpbmcgYSBjaGFpbiB1c2luZyBpc3N1ZXJzIGluIHRoZSB0cnVzdGVkIHN0b3JlIGZpcnN0IHRvIGF2b2lkCi0gIHByb2JsZW1zIHdpdGggc2VydmVyLXNlbnQgbGVnYWN5IGludGVybWVkaWF0ZXMuCi0gIE5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wgZG8gYWx0ZXJuYXRlIGNoYWluIGNoZWNraW5nIGJ5IGRlZmF1bHQgd2hpY2gKLSAgZ2l2ZXMgdXMgdGhlIHNhbWUgZml4IHdpdGhvdXQgYXMgbXVjaCBvZiBhIHBlcmZvcm1hbmNlIGhpdCAoc2xpZ2h0KSwgc28gd2UKLSAgcHJlZmVyIHRoYXQgaWYgYXZhaWxhYmxlLgotICBodHRwczovL3J0Lm9wZW5zc2wub3JnL1RpY2tldC9EaXNwbGF5Lmh0bWw/aWQ9MzYyMSZ1c2VyPWd1ZXN0JnBhc3M9Z3Vlc3QKLSAgKi8KLSNpZiBkZWZpbmVkKFg1MDlfVl9GTEFHX1RSVVNURURfRklSU1QpICYmICFkZWZpbmVkKFg1MDlfVl9GTEFHX05PX0FMVF9DSEFJTlMpCiAgIGlmKHZlcmlmeXBlZXIpIHsKKyAgICAvKiBUcnkgYnVpbGRpbmcgYSBjaGFpbiB1c2luZyBpc3N1ZXJzIGluIHRoZSB0cnVzdGVkIHN0b3JlIGZpcnN0IHRvIGF2b2lkCisgICAgICAgcHJvYmxlbXMgd2l0aCBzZXJ2ZXItc2VudCBsZWdhY3kgaW50ZXJtZWRpYXRlcy4gIE5ld2VyIHZlcnNpb25zIG9mCisgICAgICAgT3BlblNTTCBkbyBhbHRlcm5hdGUgY2hhaW4gY2hlY2tpbmcgYnkgZGVmYXVsdCB3aGljaCBnaXZlcyB1cyB0aGUgc2FtZQorICAgICAgIGZpeCB3aXRob3V0IGFzIG11Y2ggb2YgYSBwZXJmb3JtYW5jZSBoaXQgKHNsaWdodCksIHNvIHdlIHByZWZlciB0aGF0IGlmCisgICAgICAgYXZhaWxhYmxlLgorICAgICAgIGh0dHBzOi8vcnQub3BlbnNzbC5vcmcvVGlja2V0L0Rpc3BsYXkuaHRtbD9pZD0zNjIxJnVzZXI9Z3Vlc3QmcGFzcz1ndWVzdAorICAgICovCisjaWYgZGVmaW5lZChYNTA5X1ZfRkxBR19UUlVTVEVEX0ZJUlNUKSAmJiAhZGVmaW5lZChYNTA5X1ZfRkxBR19OT19BTFRfQ0hBSU5TKQogICAgIFg1MDlfU1RPUkVfc2V0X2ZsYWdzKFNTTF9DVFhfZ2V0X2NlcnRfc3RvcmUoQkFDS0VORC0+Y3R4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICBYNTA5X1ZfRkxBR19UUlVTVEVEX0ZJUlNUKTsKLSAgfQogI2VuZGlmCisjaWZkZWYgWDUwOV9WX0ZMQUdfUEFSVElBTF9DSEFJTgorICAgIGlmKCFTU0xfU0VUX09QVElPTihub19wYXJ0aWFsY2hhaW4pKSB7CisgICAgICAvKiBIYXZlIGludGVybWVkaWF0ZSBjZXJ0aWZpY2F0ZXMgaW4gdGhlIHRydXN0IHN0b3JlIGJlIHRyZWF0ZWQgYXMKKyAgICAgICAgIHRydXN0LWFuY2hvcnMsIGluIHRoZSBzYW1lIHdheSBhcyBzZWxmLXNpZ25lZCByb290IENBIGNlcnRpZmljYXRlcworICAgICAgICAgYXJlLiBUaGlzIGFsbG93cyB1c2VycyB0byB2ZXJpZnkgc2VydmVycyB1c2luZyB0aGUgaW50ZXJtZWRpYXRlIGNlcnQKKyAgICAgICAgIG9ubHksIGluc3RlYWQgb2YgbmVlZGluZyB0aGUgd2hvbGUgY2hhaW4uICovCisgICAgICBYNTA5X1NUT1JFX3NldF9mbGFncyhTU0xfQ1RYX2dldF9jZXJ0X3N0b3JlKEJBQ0tFTkQtPmN0eCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBYNTA5X1ZfRkxBR19QQVJUSUFMX0NIQUlOKTsKKyAgICB9CisjZW5kaWYKKyAgfQogCiAgIC8qIFNTTCBhbHdheXMgdHJpZXMgdG8gdmVyaWZ5IHRoZSBwZWVyLCB0aGlzIG9ubHkgc2F5cyB3aGV0aGVyIGl0IHNob3VsZAogICAgKiBmYWlsIHRvIGNvbm5lY3QgaWYgdGhlIHZlcmlmaWNhdGlvbiBmYWlscywgb3IgaWYgaXQgc2hvdWxkIGNvbnRpbnVlCkBAIC0yNjkzLDggKzI4MjAsMTAgQEAKIAogICAvKiBnaXZlIGFwcGxpY2F0aW9uIGEgY2hhbmNlIHRvIGludGVyZmVyZSB3aXRoIFNTTCBzZXQgdXAuICovCiAgIGlmKGRhdGEtPnNldC5zc2wuZnNzbGN0eCkgeworICAgIEN1cmxfc2V0X2luX2NhbGxiYWNrKGRhdGEsIHRydWUpOwogICAgIHJlc3VsdCA9ICgqZGF0YS0+c2V0LnNzbC5mc3NsY3R4KShkYXRhLCBCQUNLRU5ELT5jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zc2wuZnNzbGN0eHApOworICAgIEN1cmxfc2V0X2luX2NhbGxiYWNrKGRhdGEsIGZhbHNlKTsKICAgICBpZihyZXN1bHQpIHsKICAgICAgIGZhaWxmKGRhdGEsICJlcnJvciBzaWduYWxlZCBieSBzc2wgY3R4IGNhbGxiYWNrIik7CiAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjg3NSw4ICszMDA0LDEzIEBACiAgICAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCBob3N0bmFtZSA9IFNTTF9JU19QUk9YWSgpID8KICAgICAgICAgICBjb25uLT5odHRwX3Byb3h5Lmhvc3QubmFtZSA6IGNvbm4tPmhvc3QubmFtZTsKICAgICAgICAgY29uc3QgbG9uZyBpbnQgcG9ydCA9IFNTTF9JU19QUk9YWSgpID8gY29ubi0+cG9ydCA6IGNvbm4tPnJlbW90ZV9wb3J0OworICAgICAgICBjaGFyIGV4dHJhbXNnWzgwXT0iIjsKKyAgICAgICAgaW50IHNvY2tlcnIgPSBTT0NLRVJSTk87CisgICAgICAgIGlmKHNvY2tlcnIgJiYgZGV0YWlsID09IFNTTF9FUlJPUl9TWVNDQUxMKQorICAgICAgICAgIEN1cmxfc3RyZXJyb3Ioc29ja2VyciwgZXh0cmFtc2csIHNpemVvZihleHRyYW1zZykpOwogICAgICAgICBmYWlsZihkYXRhLCBPU1NMX1BBQ0tBR0UgIiBTU0xfY29ubmVjdDogJXMgaW4gY29ubmVjdGlvbiB0byAlczolbGQgIiwKLSAgICAgICAgICAgICAgU1NMX0VSUk9SX3RvX3N0cihkZXRhaWwpLCBob3N0bmFtZSwgcG9ydCk7CisgICAgICAgICAgICAgIGV4dHJhbXNnWzBdID8gZXh0cmFtc2cgOiBTU0xfRVJST1JfdG9fc3RyKGRldGFpbCksCisgICAgICAgICAgICAgIGhvc3RuYW1lLCBwb3J0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgIH0KIApAQCAtMjk1Miw3ICszMDg2LDcgQEAKICAgQ3VybF9zc2xfcHVzaF9jZXJ0aW5mb19sZW4oZGF0YSwgX251bSwgX2xhYmVsLCBwdHIsIGluZm9fbGVuKTsgXAogICBpZigxICE9IEJJT19yZXNldChtZW0pKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gV0hJTEVfRkFMU0UKK30gd2hpbGUoMCkKIAogc3RhdGljIHZvaWQgcHVia2V5X3Nob3coc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgIEJJTyAqbWVtLApAQCAtMjk4NCwzMSArMzExOCwyOCBAQAogICBpZihfdHlwZS0+X25hbWUpIHsgXAogICAgIHB1YmtleV9zaG93KGRhdGEsIG1lbSwgX251bSwgI190eXBlLCAjX25hbWUsIF90eXBlLT5fbmFtZSk7IFwKICAgfSBcCi19IFdISUxFX0ZBTFNFCit9IHdoaWxlKDApCiAjZW5kaWYKIAotc3RhdGljIGludCBYNTA5VjNfZXh0KHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCitzdGF0aWMgdm9pZCBYNTA5VjNfZXh0KHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IGNlcnRudW0sCiAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfRVhUUyBTVEFDS19PRihYNTA5X0VYVEVOU0lPTikgKmV4dHMpCiB7CiAgIGludCBpOwotICBzaXplX3QgajsKIAogICBpZigoaW50KXNrX1g1MDlfRVhURU5TSU9OX251bShleHRzKSA8PSAwKQogICAgIC8qIG5vIGV4dGVuc2lvbnMsIGJhaWwgb3V0ICovCi0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuOwogCiAgIGZvcihpID0gMDsgaSA8IChpbnQpc2tfWDUwOV9FWFRFTlNJT05fbnVtKGV4dHMpOyBpKyspIHsKICAgICBBU04xX09CSkVDVCAqb2JqOwogICAgIFg1MDlfRVhURU5TSU9OICpleHQgPSBza19YNTA5X0VYVEVOU0lPTl92YWx1ZShleHRzLCBpKTsKICAgICBCVUZfTUVNICpiaW9tZW07Ci0gICAgY2hhciBidWZbNTEyXTsKLSAgICBjaGFyICpwdHIgPSBidWY7CiAgICAgY2hhciBuYW1lYnVmWzEyOF07CiAgICAgQklPICpiaW9fb3V0ID0gQklPX25ldyhCSU9fc19tZW0oKSk7CiAKICAgICBpZighYmlvX291dCkKLSAgICAgIHJldHVybiAxOworICAgICAgcmV0dXJuOwogCiAgICAgb2JqID0gWDUwOV9FWFRFTlNJT05fZ2V0X29iamVjdChleHQpOwogCkBAIC0zMDE4LDI4ICszMTQ5LDE4IEBACiAgICAgICBBU04xX1NUUklOR19wcmludChiaW9fb3V0LCAoQVNOMV9TVFJJTkcgKilYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YShleHQpKTsKIAogICAgIEJJT19nZXRfbWVtX3B0cihiaW9fb3V0LCAmYmlvbWVtKTsKLQotICAgIGZvcihqID0gMDsgaiA8IChzaXplX3QpYmlvbWVtLT5sZW5ndGg7IGorKykgewotICAgICAgY29uc3QgY2hhciAqc2VwID0gIiI7Ci0gICAgICBpZihiaW9tZW0tPmRhdGFbal0gPT0gJ1xuJykgewotICAgICAgICBzZXAgPSAiLCAiOwotICAgICAgICBqKys7IC8qIHNraXAgdGhlIG5ld2xpbmUgKi8KLSAgICAgIH07Ci0gICAgICB3aGlsZSgoajwoc2l6ZV90KWJpb21lbS0+bGVuZ3RoKSAmJiAoYmlvbWVtLT5kYXRhW2pdID09ICcgJykpCi0gICAgICAgIGorKzsKLSAgICAgIGlmKGo8KHNpemVfdCliaW9tZW0tPmxlbmd0aCkKLSAgICAgICAgcHRyICs9IG1zbnByaW50ZihwdHIsIHNpemVvZihidWYpLShwdHItYnVmKSwgIiVzJWMiLCBzZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYmlvbWVtLT5kYXRhW2pdKTsKLSAgICB9Ci0KLSAgICBDdXJsX3NzbF9wdXNoX2NlcnRpbmZvKGRhdGEsIGNlcnRudW0sIG5hbWVidWYsIGJ1Zik7Ci0KKyAgICBDdXJsX3NzbF9wdXNoX2NlcnRpbmZvX2xlbihkYXRhLCBjZXJ0bnVtLCBuYW1lYnVmLCBiaW9tZW0tPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlvbWVtLT5sZW5ndGgpOwogICAgIEJJT19mcmVlKGJpb19vdXQpOwotCiAgIH0KLSAgcmV0dXJuIDA7IC8qIGFsbCBpcyBmaW5lICovCiB9CiAKKyNpZmRlZiBPUEVOU1NMX0lTX0JPUklOR1NTTAordHlwZWRlZiBzaXplX3QgbnVtY2VydF90OworI2Vsc2UKK3R5cGVkZWYgaW50IG51bWNlcnRfdDsKKyNlbmRpZgorCiBzdGF0aWMgQ1VSTGNvZGUgZ2V0X2NlcnRfY2hhaW4oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsKQogCkBAIC0zMDQ4LDcgKzMxNjksNyBAQAogICBTVEFDS19PRihYNTA5KSAqc2s7CiAgIGludCBpOwogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgaW50IG51bWNlcnRzOworICBudW1jZXJ0X3QgbnVtY2VydHM7CiAgIEJJTyAqbWVtOwogCiAgIHNrID0gU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4oQkFDS0VORC0+aGFuZGxlKTsKQEAgLTMwNTgsMTQgKzMxNzksMTQgQEAKIAogICBudW1jZXJ0cyA9IHNrX1g1MDlfbnVtKHNrKTsKIAotICByZXN1bHQgPSBDdXJsX3NzbF9pbml0X2NlcnRpbmZvKGRhdGEsIG51bWNlcnRzKTsKKyAgcmVzdWx0ID0gQ3VybF9zc2xfaW5pdF9jZXJ0aW5mbyhkYXRhLCAoaW50KW51bWNlcnRzKTsKICAgaWYocmVzdWx0KSB7CiAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQogCiAgIG1lbSA9IEJJT19uZXcoQklPX3NfbWVtKCkpOwogCi0gIGZvcihpID0gMDsgaSA8IG51bWNlcnRzOyBpKyspIHsKKyAgZm9yKGkgPSAwOyBpIDwgKGludCludW1jZXJ0czsgaSsrKSB7CiAgICAgQVNOMV9JTlRFR0VSICpudW07CiAgICAgWDUwOSAqeCA9IHNrX1g1MDlfdmFsdWUoc2ssIGkpOwogICAgIEVWUF9QS0VZICpwdWJrZXkgPSBOVUxMOwpAQCAtMzA5MSwxOCArMzIxMiwyNSBAQAogCiAjaWYgZGVmaW5lZChIQVZFX1g1MDlfR0VUMF9TSUdOQVRVUkUpICYmIGRlZmluZWQoSEFWRV9YNTA5X0dFVDBfRVhURU5TSU9OUykKICAgICB7Ci0gICAgICBjb25zdCBYNTA5X0FMR09SICpwYWxnID0gTlVMTDsKLSAgICAgIEFTTjFfU1RSSU5HICphID0gQVNOMV9TVFJJTkdfbmV3KCk7Ci0gICAgICBpZihhKSB7Ci0gICAgICAgIFg1MDlfZ2V0MF9zaWduYXR1cmUoJnBzaWcsICZwYWxnLCB4KTsKLSAgICAgICAgWDUwOV9zaWduYXR1cmVfcHJpbnQobWVtLCBBUkcyX1g1MDlfc2lnbmF0dXJlX3ByaW50IHBhbGcsIGEpOwotICAgICAgICBBU04xX1NUUklOR19mcmVlKGEpOworICAgICAgY29uc3QgWDUwOV9BTEdPUiAqc2lnYWxnID0gTlVMTDsKKyAgICAgIFg1MDlfUFVCS0VZICp4cHVia2V5ID0gTlVMTDsKKyAgICAgIEFTTjFfT0JKRUNUICpwdWJrZXlvaWQgPSBOVUxMOwogCi0gICAgICAgIGlmKHBhbGcpIHsKLSAgICAgICAgICBpMmFfQVNOMV9PQkpFQ1QobWVtLCBwYWxnLT5hbGdvcml0aG0pOworICAgICAgWDUwOV9nZXQwX3NpZ25hdHVyZSgmcHNpZywgJnNpZ2FsZywgeCk7CisgICAgICBpZihzaWdhbGcpIHsKKyAgICAgICAgaTJhX0FTTjFfT0JKRUNUKG1lbSwgc2lnYWxnLT5hbGdvcml0aG0pOworICAgICAgICBwdXNoX2NlcnRpbmZvKCJTaWduYXR1cmUgQWxnb3JpdGhtIiwgaSk7CisgICAgICB9CisKKyAgICAgIHhwdWJrZXkgPSBYNTA5X2dldF9YNTA5X1BVQktFWSh4KTsKKyAgICAgIGlmKHhwdWJrZXkpIHsKKyAgICAgICAgWDUwOV9QVUJLRVlfZ2V0MF9wYXJhbSgmcHVia2V5b2lkLCBOVUxMLCBOVUxMLCBOVUxMLCB4cHVia2V5KTsKKyAgICAgICAgaWYocHVia2V5b2lkKSB7CisgICAgICAgICAgaTJhX0FTTjFfT0JKRUNUKG1lbSwgcHVia2V5b2lkKTsKICAgICAgICAgICBwdXNoX2NlcnRpbmZvKCJQdWJsaWMgS2V5IEFsZ29yaXRobSIsIGkpOwogICAgICAgICB9CiAgICAgICB9CisKICAgICAgIFg1MDlWM19leHQoZGF0YSwgaSwgWDUwOV9nZXQwX2V4dGVuc2lvbnMoeCkpOwogICAgIH0KICNlbHNlCkBAIC0zMTU0LDcgKzMyODIsNyBAQAogICAgICAgICAgIGNvbnN0IEJJR05VTSAqZTsKIAogICAgICAgICAgIFJTQV9nZXQwX2tleShyc2EsICZuLCAmZSwgTlVMTCk7Ci0gICAgICAgICAgQk5fcHJpbnQobWVtLCBuKTsKKyAgICAgICAgICBCSU9fcHJpbnRmKG1lbSwgIiVkIiwgQk5fbnVtX2JpdHMobikpOwogICAgICAgICAgIHB1c2hfY2VydGluZm8oIlJTQSBQdWJsaWMgS2V5IiwgaSk7CiAgICAgICAgICAgcHJpbnRfcHVia2V5X0JOKHJzYSwgbiwgaSk7CiAgICAgICAgICAgcHJpbnRfcHVia2V5X0JOKHJzYSwgZSwgaSk7CkBAIC0zMjc5LDcgKzM0MDcsNiBAQAogICAgIGlmKGxlbjEgPCAxKQogICAgICAgYnJlYWs7IC8qIGZhaWxlZCAqLwogCi0gICAgLyogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9jcnlwdG8vYnVmZmVyLmh0bWwgKi8KICAgICBidWZmMSA9IHRlbXAgPSBtYWxsb2MobGVuMSk7CiAgICAgaWYoIWJ1ZmYxKQogICAgICAgYnJlYWs7IC8qIGZhaWxlZCAqLwpAQCAtMzMwMSw3ICszNDI4LDYgQEAKICAgICByZXN1bHQgPSBDdXJsX3Bpbl9wZWVyX3B1YmtleShkYXRhLCBwaW5uZWRwdWJrZXksIGJ1ZmYxLCBsZW4xKTsKICAgfSB3aGlsZSgwKTsKIAotICAvKiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by9idWZmZXIuaHRtbCAqLwogICBpZihidWZmMSkKICAgICBmcmVlKGJ1ZmYxKTsKIApAQCAtMzUzMSw3ICszNjU3LDcgQEAKICAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOwogICBjdXJsX3NvY2tldF90IHNvY2tmZCA9IGNvbm4tPnNvY2tbc29ja2luZGV4XTsKLSAgdGltZV90IHRpbWVvdXRfbXM7CisgIHRpbWVkaWZmX3QgdGltZW91dF9tczsKICAgaW50IHdoYXQ7CiAKICAgLyogY2hlY2sgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hlZCAqLwpAQCAtMzU3OCw3ICszNzA0LDcgQEAKICAgICAgICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZT9zb2NrZmQ6Q1VSTF9TT0NLRVRfQkFEOwogCiAgICAgICB3aGF0ID0gQ3VybF9zb2NrZXRfY2hlY2socmVhZGZkLCBDVVJMX1NPQ0tFVF9CQUQsIHdyaXRlZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uYmxvY2tpbmc/MDp0aW1lb3V0X21zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25ibG9ja2luZz8wOih0aW1lX3QpdGltZW91dF9tcyk7CiAgICAgICBpZih3aGF0IDwgMCkgewogICAgICAgICAvKiBmYXRhbCBlcnJvciAqLwogICAgICAgICBmYWlsZihkYXRhLCAic2VsZWN0L3BvbGwgb24gU1NMIHNvY2tldCwgZXJybm86ICVkIiwgU09DS0VSUk5PKTsKQEAgLTM3MDIsMTAgKzM4MjgsMjIgQEAKICAgICAgICpjdXJsY29kZSA9IENVUkxFX0FHQUlOOwogICAgICAgcmV0dXJuIC0xOwogICAgIGNhc2UgU1NMX0VSUk9SX1NZU0NBTEw6Ci0gICAgICBmYWlsZihjb25uLT5kYXRhLCAiU1NMX3dyaXRlKCkgcmV0dXJuZWQgU1lTQ0FMTCwgZXJybm8gPSAlZCIsCi0gICAgICAgICAgICBTT0NLRVJSTk8pOwotICAgICAgKmN1cmxjb2RlID0gQ1VSTEVfU0VORF9FUlJPUjsKLSAgICAgIHJldHVybiAtMTsKKyAgICAgIHsKKyAgICAgICAgaW50IHNvY2tlcnIgPSBTT0NLRVJSTk87CisgICAgICAgIHNzbGVycm9yID0gRVJSX2dldF9lcnJvcigpOworICAgICAgICBpZihzc2xlcnJvcikKKyAgICAgICAgICBvc3NsX3N0cmVycm9yKHNzbGVycm9yLCBlcnJvcl9idWZmZXIsIHNpemVvZihlcnJvcl9idWZmZXIpKTsKKyAgICAgICAgZWxzZSBpZihzb2NrZXJyKQorICAgICAgICAgIEN1cmxfc3RyZXJyb3Ioc29ja2VyciwgZXJyb3JfYnVmZmVyLCBzaXplb2YoZXJyb3JfYnVmZmVyKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHN0cm5jcHkoZXJyb3JfYnVmZmVyLCBTU0xfRVJST1JfdG9fc3RyKGVyciksIHNpemVvZihlcnJvcl9idWZmZXIpKTsKKyAgICAgICAgICBlcnJvcl9idWZmZXJbc2l6ZW9mKGVycm9yX2J1ZmZlcikgLSAxXSA9ICdcMCc7CisgICAgICAgIH0KKyAgICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgT1NTTF9QQUNLQUdFICIgU1NMX3dyaXRlOiAlcywgZXJybm8gJWQiLAorICAgICAgICAgICAgICBlcnJvcl9idWZmZXIsIHNvY2tlcnIpOworICAgICAgICAqY3VybGNvZGUgPSBDVVJMRV9TRU5EX0VSUk9SOworICAgICAgICByZXR1cm4gLTE7CisgICAgICB9CiAgICAgY2FzZSBTU0xfRVJST1JfU1NMOgogICAgICAgLyogIEEgZmFpbHVyZSBpbiB0aGUgU1NMIGxpYnJhcnkgb2NjdXJyZWQsIHVzdWFsbHkgYSBwcm90b2NvbCBlcnJvci4KICAgICAgICAgICBUaGUgT3BlblNTTCBlcnJvciBxdWV1ZSBjb250YWlucyBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBlcnJvci4gKi8KQEAgLTM3NjAsNyArMzg5OCwxMCBAQAogICAgICAgYnJlYWs7CiAgICAgY2FzZSBTU0xfRVJST1JfWkVST19SRVRVUk46IC8qIG5vIG1vcmUgZGF0YSAqLwogICAgICAgLyogY2xvc2Vfbm90aWZ5IGFsZXJ0ICovCi0gICAgICBjb25uY2xvc2UoY29ubiwgIlRMUyBjbG9zZV9ub3RpZnkiKTsKKyAgICAgIGlmKG51bSA9PSBGSVJTVFNPQ0tFVCkKKyAgICAgICAgLyogbWFyayB0aGUgY29ubmVjdGlvbiBmb3IgY2xvc2UgaWYgaXQgaXMgaW5kZWVkIHRoZSBjb250cm9sCisgICAgICAgICAgIGNvbm5lY3Rpb24gKi8KKyAgICAgICAgY29ubmNsb3NlKGNvbm4sICJUTFMgY2xvc2Vfbm90aWZ5Iik7CiAgICAgICBicmVhazsKICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX1JFQUQ6CiAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9XUklURToKQEAgLTM3NzUsMTQgKzM5MTYsNDQgQEAKICAgICAgIGlmKChucmVhZCA8IDApIHx8IHNzbGVycm9yKSB7CiAgICAgICAgIC8qIElmIHRoZSByZXR1cm4gY29kZSB3YXMgbmVnYXRpdmUgb3IgdGhlcmUgYWN0dWFsbHkgaXMgYW4gZXJyb3IgaW4gdGhlCiAgICAgICAgICAgIHF1ZXVlICovCisgICAgICAgIGludCBzb2NrZXJyID0gU09DS0VSUk5POworICAgICAgICBpZihzc2xlcnJvcikKKyAgICAgICAgICBvc3NsX3N0cmVycm9yKHNzbGVycm9yLCBlcnJvcl9idWZmZXIsIHNpemVvZihlcnJvcl9idWZmZXIpKTsKKyAgICAgICAgZWxzZSBpZihzb2NrZXJyICYmIGVyciA9PSBTU0xfRVJST1JfU1lTQ0FMTCkKKyAgICAgICAgICBDdXJsX3N0cmVycm9yKHNvY2tlcnIsIGVycm9yX2J1ZmZlciwgc2l6ZW9mKGVycm9yX2J1ZmZlcikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzdHJuY3B5KGVycm9yX2J1ZmZlciwgU1NMX0VSUk9SX3RvX3N0cihlcnIpLCBzaXplb2YoZXJyb3JfYnVmZmVyKSk7CisgICAgICAgICAgZXJyb3JfYnVmZmVyW3NpemVvZihlcnJvcl9idWZmZXIpIC0gMV0gPSAnXDAnOworICAgICAgICB9CiAgICAgICAgIGZhaWxmKGNvbm4tPmRhdGEsIE9TU0xfUEFDS0FHRSAiIFNTTF9yZWFkOiAlcywgZXJybm8gJWQiLAotICAgICAgICAgICAgICAoc3NsZXJyb3IgPwotICAgICAgICAgICAgICAgb3NzbF9zdHJlcnJvcihzc2xlcnJvciwgZXJyb3JfYnVmZmVyLCBzaXplb2YoZXJyb3JfYnVmZmVyKSkgOgotICAgICAgICAgICAgICAgU1NMX0VSUk9SX3RvX3N0cihlcnIpKSwKLSAgICAgICAgICAgICAgU09DS0VSUk5PKTsKKyAgICAgICAgICAgICAgZXJyb3JfYnVmZmVyLCBzb2NrZXJyKTsKICAgICAgICAgKmN1cmxjb2RlID0gQ1VSTEVfUkVDVl9FUlJPUjsKICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgfQorICAgICAgLyogRm9yIGRlYnVnIGJ1aWxkcyBiZSBhIGxpdHRsZSBzdHJpY3RlciBhbmQgZXJyb3Igb24gYW55CisgICAgICAgICBTU0xfRVJST1JfU1lTQ0FMTC4gRm9yIGV4YW1wbGUgYSBzZXJ2ZXIgbWF5IGhhdmUgY2xvc2VkIHRoZSBjb25uZWN0aW9uCisgICAgICAgICBhYnJ1cHRseSB3aXRob3V0IGEgY2xvc2Vfbm90aWZ5IGFsZXJ0LiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyCisgICAgICAgICBwZWVycyB3ZSBkb24ndCBkbyB0aGlzIGJ5IGRlZmF1bHQuICM0NjI0CisKKyAgICAgICAgIFdlIGNhbiB1c2UgdGhpcyB0byBnYXVnZSBob3cgbWFueSB1c2VycyBtYXkgYmUgYWZmZWN0ZWQsIGFuZAorICAgICAgICAgaWYgaXQgZ29lcyBvayBldmVudHVhbGx5IHRyYW5zaXRpb24gdG8gYWxsb3cgaW4gZGV2IGFuZCByZWxlYXNlIHdpdGgKKyAgICAgICAgIHRoZSBuZXdlc3QgT3BlblNTTDogI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAxMDEwMDBMKSAqLworI2lmZGVmIERFQlVHQlVJTEQKKyAgICAgIGlmKGVyciA9PSBTU0xfRVJST1JfU1lTQ0FMTCkgeworICAgICAgICBpbnQgc29ja2VyciA9IFNPQ0tFUlJOTzsKKyAgICAgICAgaWYoc29ja2VycikKKyAgICAgICAgICBDdXJsX3N0cmVycm9yKHNvY2tlcnIsIGVycm9yX2J1ZmZlciwgc2l6ZW9mKGVycm9yX2J1ZmZlcikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICBtc25wcmludGYoZXJyb3JfYnVmZmVyLCBzaXplb2YoZXJyb3JfYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24gY2xvc2VkIGFicnVwdGx5Iik7CisgICAgICAgIH0KKyAgICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgT1NTTF9QQUNLQUdFICIgU1NMX3JlYWQ6ICVzLCBlcnJubyAlZCIKKyAgICAgICAgICAgICAgIiAoRmF0YWwgYmVjYXVzZSB0aGlzIGlzIGEgY3VybCBkZWJ1ZyBidWlsZCkiLAorICAgICAgICAgICAgICBlcnJvcl9idWZmZXIsIHNvY2tlcnIpOworICAgICAgICAqY3VybGNvZGUgPSBDVVJMRV9SRUNWX0VSUk9SOworICAgICAgICByZXR1cm4gLTE7CisgICAgICB9CisjZW5kaWYKICAgICB9CiAgIH0KICAgcmV0dXJuIG5yZWFkOwpAQCAtMzc5MCwxMyArMzk2MSwzNSBAQAogCiBzdGF0aWMgc2l6ZV90IEN1cmxfb3NzbF92ZXJzaW9uKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCiB7Ci0jaWZkZWYgT1BFTlNTTF9JU19CT1JJTkdTU0wKKyNpZmRlZiBMSUJSRVNTTF9WRVJTSU9OX05VTUJFUgorI2lmIExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgyMDcwMTAwZkwKKyAgcmV0dXJuIG1zbnByaW50ZihidWZmZXIsIHNpemUsICIlcy8lbHguJWx4LiVseCIsCisgICAgICAgICAgICAgICAgICAgT1NTTF9QQUNLQUdFLAorICAgICAgICAgICAgICAgICAgIChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUj4+MjgpJjB4ZiwKKyAgICAgICAgICAgICAgICAgICAoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVI+PjIwKSYweGZmLAorICAgICAgICAgICAgICAgICAgIChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUj4+MTIpJjB4ZmYpOworI2Vsc2UgLyogT3BlblNTTF92ZXJzaW9uKCkgZmlyc3QgYXBwZWFyZWQgaW4gTGlicmVTU0wgMi43LjEgKi8KKyAgY2hhciAqcDsKKyAgaW50IGNvdW50OworICBjb25zdCBjaGFyICp2ZXIgPSBPcGVuU1NMX3ZlcnNpb24oT1BFTlNTTF9WRVJTSU9OKTsKKyAgY29uc3QgY2hhciBleHBlY3RlZFtdID0gT1NTTF9QQUNLQUdFICIgIjsgLyogaWUgIkxpYnJlU1NMICIgKi8KKyAgaWYoQ3VybF9zdHJuY2FzZWNvbXBhcmUodmVyLCBleHBlY3RlZCwgc2l6ZW9mKGV4cGVjdGVkKSAtIDEpKSB7CisgICAgdmVyICs9IHNpemVvZihleHBlY3RlZCkgLSAxOworICB9CisgIGNvdW50ID0gbXNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIiVzLyVzIiwgT1NTTF9QQUNLQUdFLCB2ZXIpOworICBmb3IocCA9IGJ1ZmZlcjsgKnA7ICsrcCkgeworICAgIGlmKElTU1BBQ0UoKnApKQorICAgICAgKnAgPSAnXyc7CisgIH0KKyAgcmV0dXJuIGNvdW50OworI2VuZGlmCisjZWxpZiBkZWZpbmVkKE9QRU5TU0xfSVNfQk9SSU5HU1NMKQogICByZXR1cm4gbXNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgT1NTTF9QQUNLQUdFKTsKICNlbGlmIGRlZmluZWQoSEFWRV9PUEVOU1NMX1ZFUlNJT04pICYmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX1NUUklORykKICAgcmV0dXJuIG1zbnByaW50ZihidWZmZXIsIHNpemUsICIlcy8lcyIsCiAgICAgICAgICAgICAgICAgICAgT1NTTF9QQUNLQUdFLCBPcGVuU1NMX3ZlcnNpb24oT1BFTlNTTF9WRVJTSU9OX1NUUklORykpOwogI2Vsc2UKLSAgLyogbm90IEJvcmluZ1NTTCBhbmQgbm90IHVzaW5nIE9wZW5TU0xfdmVyc2lvbiAqLworICAvKiBub3QgTGlicmVTU0wsIEJvcmluZ1NTTCBhbmQgbm90IHVzaW5nIE9wZW5TU0xfdmVyc2lvbiAqLwogCiAgIGNoYXIgc3ViWzNdOwogICB1bnNpZ25lZCBsb25nIHNzbGVheV92YWx1ZTsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvcG9sYXJzc2wuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvcG9sYXJzc2wuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VhMjZiNC4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL3BvbGFyc3NsLmMKKysrIC9kZXYvbnVsbApAQCAtMSw5MzEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwotICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0gKgotICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCAtIDIwMTEsIEhvaS1IbyBDaGFuLCA8aG9paG8uY2hhbkBnbWFpbC5jb20+Ci0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKLSAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgotICoKLSAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAotICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgotICoKLSAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoKLSAqIFNvdXJjZSBmaWxlIGZvciBhbGwgUG9sYXJTU0wtc3BlY2lmaWMgY29kZSBmb3IgdGhlIFRMUy9TU0wgbGF5ZXIuIE5vIGNvZGUKLSAqIGJ1dCB2dGxzLmMgc2hvdWxkIGV2ZXIgY2FsbCBvciB1c2UgdGhlc2UgZnVuY3Rpb25zLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY3VybF9zZXR1cC5oIgotCi0jaWZkZWYgVVNFX1BPTEFSU1NMCi0jaW5jbHVkZSA8cG9sYXJzc2wvbmV0Lmg+Ci0jaW5jbHVkZSA8cG9sYXJzc2wvc3NsLmg+Ci0jaW5jbHVkZSA8cG9sYXJzc2wvY2VydHMuaD4KLSNpbmNsdWRlIDxwb2xhcnNzbC94NTA5Lmg+Ci0jaW5jbHVkZSA8cG9sYXJzc2wvdmVyc2lvbi5oPgotI2luY2x1ZGUgPHBvbGFyc3NsL3NoYTI1Ni5oPgotCi0jaWYgUE9MQVJTU0xfVkVSU0lPTl9OVU1CRVIgPCAweDAxMDMwMDAwCi0jZXJyb3IgdG9vIG9sZCBQb2xhclNTTAotI2VuZGlmCi0KLSNpbmNsdWRlIDxwb2xhcnNzbC9lcnJvci5oPgotI2luY2x1ZGUgPHBvbGFyc3NsL2VudHJvcHkuaD4KLSNpbmNsdWRlIDxwb2xhcnNzbC9jdHJfZHJiZy5oPgotCi0jaW5jbHVkZSAidXJsZGF0YS5oIgotI2luY2x1ZGUgInNlbmRmLmgiCi0jaW5jbHVkZSAiaW5ldF9wdG9uLmgiCi0jaW5jbHVkZSAicG9sYXJzc2wuaCIKLSNpbmNsdWRlICJ2dGxzLmgiCi0jaW5jbHVkZSAicGFyc2VkYXRlLmgiCi0jaW5jbHVkZSAiY29ubmVjdC5oIiAvKiBmb3IgdGhlIGNvbm5lY3QgdGltZW91dCAqLwotI2luY2x1ZGUgInNlbGVjdC5oIgotI2luY2x1ZGUgInN0cmNhc2UuaCIKLSNpbmNsdWRlICJwb2xhcnNzbF90aHJlYWRsb2NrLmgiCi0jaW5jbHVkZSAibXVsdGlpZi5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0jaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwotI2luY2x1ZGUgIm1lbWRlYnVnLmgiCi0KLS8qIFNlZSBodHRwczovL3Rscy5tYmVkLm9yZy9kaXNjdXNzaW9ucy9nZW5lcmljLwotICAgaG93dG8tZGV0ZXJtaW5lLWV4YWN0LWJ1ZmZlci1sZW4tZm9yLW1iZWR0bHNfcGtfd3JpdGVfcHVia2V5X2RlcgotKi8KLSNkZWZpbmUgUlNBX1BVQl9ERVJfTUFYX0JZVEVTICAgKDM4ICsgMiAqIFBPTEFSU1NMX01QSV9NQVhfU0laRSkKLSNkZWZpbmUgRUNQX1BVQl9ERVJfTUFYX0JZVEVTICAgKDMwICsgMiAqIFBPTEFSU1NMX0VDUF9NQVhfQllURVMpCi0KLSNkZWZpbmUgUFVCX0RFUl9NQVhfQllURVMgICAoUlNBX1BVQl9ERVJfTUFYX0JZVEVTID4gRUNQX1BVQl9ERVJfTUFYX0JZVEVTID8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSU0FfUFVCX0RFUl9NQVhfQllURVMgOiBFQ1BfUFVCX0RFUl9NQVhfQllURVMpCi0KLXN0cnVjdCBzc2xfYmFja2VuZF9kYXRhIHsKLSAgY3RyX2RyYmdfY29udGV4dCBjdHJfZHJiZzsKLSAgZW50cm9weV9jb250ZXh0IGVudHJvcHk7Ci0gIHNzbF9jb250ZXh0IHNzbDsKLSAgaW50IHNlcnZlcl9mZDsKLSAgeDUwOV9jcnQgY2FjZXJ0OwotICB4NTA5X2NydCBjbGljZXJ0OwotICB4NTA5X2NybCBjcmw7Ci0gIHJzYV9jb250ZXh0IHJzYTsKLX07Ci0KLSNkZWZpbmUgQkFDS0VORCBjb25uc3NsLT5iYWNrZW5kCi0KLS8qIGFwcGx5IHRocmVhZGluZz8gKi8KLSNpZiBkZWZpbmVkKFVTRV9USFJFQURTX1BPU0lYKSB8fCBkZWZpbmVkKFVTRV9USFJFQURTX1dJTjMyKQotI2RlZmluZSBUSFJFQURJTkdfU1VQUE9SVAotI2VuZGlmCi0KLSNpZm5kZWYgUE9MQVJTU0xfRVJST1JfQwotI2RlZmluZSBlcnJvcl9zdHJlcnJvcih4LHkseikKLSNlbmRpZiAvKiBQT0xBUlNTTF9FUlJPUl9DICovCi0KLQotI2lmIGRlZmluZWQoVEhSRUFESU5HX1NVUFBPUlQpCi1zdGF0aWMgZW50cm9weV9jb250ZXh0IGVudHJvcHk7Ci0KLXN0YXRpYyBpbnQgIGVudHJvcHlfaW5pdF9pbml0aWFsaXplZCAgPSAwOwotCi0vKiBzdGFydCBvZiBlbnRyb3B5X2luaXRfbXV0ZXgoKSAqLwotc3RhdGljIHZvaWQgZW50cm9weV9pbml0X211dGV4KGVudHJvcHlfY29udGV4dCAqY3R4KQotewotICAvKiBsb2NrIDAgPSBlbnRyb3B5X2luaXRfbXV0ZXgoKSAqLwotICBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKDApOwotICBpZihlbnRyb3B5X2luaXRfaW5pdGlhbGl6ZWQgPT0gMCkgewotICAgIGVudHJvcHlfaW5pdChjdHgpOwotICAgIGVudHJvcHlfaW5pdF9pbml0aWFsaXplZCA9IDE7Ci0gIH0KLSAgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKDApOwotfQotLyogZW5kIG9mIGVudHJvcHlfaW5pdF9tdXRleCgpICovCi0KLS8qIHN0YXJ0IG9mIGVudHJvcHlfZnVuY19tdXRleCgpICovCi1zdGF0aWMgaW50IGVudHJvcHlfZnVuY19tdXRleCh2b2lkICpkYXRhLCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBsZW4pCi17Ci0gIGludCByZXQ7Ci0gIC8qIGxvY2sgMSA9IGVudHJvcHlfZnVuY19tdXRleCgpICovCi0gIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24oMSk7Ci0gIHJldCA9IGVudHJvcHlfZnVuYyhkYXRhLCBvdXRwdXQsIGxlbik7Ci0gIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbigxKTsKLQotICByZXR1cm4gcmV0OwotfQotLyogZW5kIG9mIGVudHJvcHlfZnVuY19tdXRleCgpICovCi0KLSNlbmRpZiAvKiBUSFJFQURJTkdfU1VQUE9SVCAqLwotCi0vKiBEZWZpbmUgdGhpcyB0byBlbmFibGUgbG90cyBvZiBkZWJ1Z2dpbmcgZm9yIFBvbGFyU1NMICovCi0jdW5kZWYgUE9MQVJTU0xfREVCVUcKLQotI2lmZGVmIFBPTEFSU1NMX0RFQlVHCi1zdGF0aWMgdm9pZCBwb2xhcnNzbF9kZWJ1Zyh2b2lkICpjb250ZXh0LCBpbnQgbGV2ZWwsIGNvbnN0IGNoYXIgKmxpbmUpCi17Ci0gIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBOVUxMOwotCi0gIGlmKCFjb250ZXh0KQotICAgIHJldHVybjsKLQotICBkYXRhID0gKHN0cnVjdCBDdXJsX2Vhc3kgKiljb250ZXh0OwotCi0gIGluZm9mKGRhdGEsICIlcyIsIGxpbmUpOwotICAodm9pZCkgbGV2ZWw7Ci19Ci0jZWxzZQotI2VuZGlmCi0KLS8qIEFMUE4gZm9yIGh0dHAyPyAqLwotI2lmZGVmIFBPTEFSU1NMX1NTTF9BTFBOCi0jICBkZWZpbmUgSEFTX0FMUE4KLSNlbmRpZgotCi1zdGF0aWMgQ3VybF9yZWN2IHBvbGFyc3NsX3JlY3Y7Ci1zdGF0aWMgQ3VybF9zZW5kIHBvbGFyc3NsX3NlbmQ7Ci0KLXN0YXRpYyBDVVJMY29kZSBwb2xhcnNzbF92ZXJzaW9uX2Zyb21fY3VybChpbnQgKnBvbGFydmVyLCBsb25nIHNzbF92ZXJzaW9uKQotewotICBzd2l0Y2goc3NsX3ZlcnNpb24pIHsKLSAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8wOgotICAgICAgKnBvbGFydmVyID0gU1NMX01JTk9SX1ZFUlNJT05fMTsKLSAgICAgIHJldHVybiBDVVJMRV9PSzsKLSAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8xOgotICAgICAgKnBvbGFydmVyID0gU1NMX01JTk9SX1ZFUlNJT05fMjsKLSAgICAgIHJldHVybiBDVVJMRV9PSzsKLSAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8yOgotICAgICAgKnBvbGFydmVyID0gU1NMX01JTk9SX1ZFUlNJT05fMzsKLSAgICAgIHJldHVybiBDVVJMRV9PSzsKLSAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8zOgotICAgICAgYnJlYWs7Ci0gIH0KLSAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwotfQotCi1zdGF0aWMgQ1VSTGNvZGUKLXNldF9zc2xfdmVyc2lvbl9taW5fbWF4KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKLXsKLSAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7Ci0gIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhKiBjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOwotICBsb25nIHNzbF92ZXJzaW9uID0gU1NMX0NPTk5fQ09ORklHKHZlcnNpb24pOwotICBsb25nIHNzbF92ZXJzaW9uX21heCA9IFNTTF9DT05OX0NPTkZJRyh2ZXJzaW9uX21heCk7Ci0gIGludCBzc2xfbWluX3ZlciA9IFNTTF9NSU5PUl9WRVJTSU9OXzE7Ci0gIGludCBzc2xfbWF4X3ZlciA9IFNTTF9NSU5PUl9WRVJTSU9OXzE7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotCi0gIHN3aXRjaChzc2xfdmVyc2lvbikgewotICAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX0RFRkFVTFQ6Ci0gICAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjE6Ci0gICAgICBzc2xfdmVyc2lvbiA9IENVUkxfU1NMVkVSU0lPTl9UTFN2MV8wOwotICAgICAgYnJlYWs7Ci0gIH0KLQotICBzd2l0Y2goc3NsX3ZlcnNpb25fbWF4KSB7Ci0gICAgY2FzZSBDVVJMX1NTTFZFUlNJT05fTUFYX05PTkU6Ci0gICAgY2FzZSBDVVJMX1NTTFZFUlNJT05fTUFYX0RFRkFVTFQ6Ci0gICAgICBzc2xfdmVyc2lvbl9tYXggPSBDVVJMX1NTTFZFUlNJT05fTUFYX1RMU3YxXzI7Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJlc3VsdCA9IHBvbGFyc3NsX3ZlcnNpb25fZnJvbV9jdXJsKCZzc2xfbWluX3Zlciwgc3NsX3ZlcnNpb24pOwotICBpZihyZXN1bHQpIHsKLSAgICBmYWlsZihkYXRhLCAidW5zdXBwb3J0ZWQgbWluIHZlcnNpb24gcGFzc2VkIHZpYSBDVVJMT1BUX1NTTFZFUlNJT04iKTsKLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0gIHJlc3VsdCA9IHBvbGFyc3NsX3ZlcnNpb25fZnJvbV9jdXJsKCZzc2xfbWF4X3Zlciwgc3NsX3ZlcnNpb25fbWF4ID4+IDE2KTsKLSAgaWYocmVzdWx0KSB7Ci0gICAgZmFpbGYoZGF0YSwgInVuc3VwcG9ydGVkIG1heCB2ZXJzaW9uIHBhc3NlZCB2aWEgQ1VSTE9QVF9TU0xWRVJTSU9OIik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIHNzbF9zZXRfbWluX3ZlcnNpb24oJkJBQ0tFTkQtPnNzbCwgU1NMX01BSk9SX1ZFUlNJT05fMywgc3NsX21pbl92ZXIpOwotICBzc2xfc2V0X21heF92ZXJzaW9uKCZCQUNLRU5ELT5zc2wsIFNTTF9NQUpPUl9WRVJTSU9OXzMsIHNzbF9tYXhfdmVyKTsKLQotICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgQ1VSTGNvZGUKLXBvbGFyc3NsX2Nvbm5lY3Rfc3RlcDEoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4KQotewotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEqIGNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07Ci0gIGNvbnN0IGNoYXIgKmNhcGF0aCA9IFNTTF9DT05OX0NPTkZJRyhDQXBhdGgpOwotICBjb25zdCBjaGFyICogY29uc3QgaG9zdG5hbWUgPSBTU0xfSVNfUFJPWFkoKSA/IGNvbm4tPmh0dHBfcHJveHkuaG9zdC5uYW1lIDoKLSAgICBjb25uLT5ob3N0Lm5hbWU7Ci0gIGNvbnN0IGxvbmcgaW50IHBvcnQgPSBTU0xfSVNfUFJPWFkoKSA/IGNvbm4tPnBvcnQgOiBjb25uLT5yZW1vdGVfcG9ydDsKLSAgaW50IHJldCA9IC0xOwotICBjaGFyIGVycm9yYnVmWzEyOF07Ci0gIGVycm9yYnVmWzBdID0gMDsKLQotICAvKiBQb2xhclNTTCBvbmx5IHN1cHBvcnRzIFNTTHYzIGFuZCBUTFN2MSAqLwotICBpZihTU0xfQ09OTl9DT05GSUcodmVyc2lvbikgPT0gQ1VSTF9TU0xWRVJTSU9OX1NTTHYyKSB7Ci0gICAgZmFpbGYoZGF0YSwgIlBvbGFyU1NMIGRvZXMgbm90IHN1cHBvcnQgU1NMdjIiKTsKLSAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7Ci0gIH0KLQotI2lmZGVmIFRIUkVBRElOR19TVVBQT1JUCi0gIGVudHJvcHlfaW5pdF9tdXRleCgmZW50cm9weSk7Ci0KLSAgaWYoKHJldCA9IGN0cl9kcmJnX2luaXQoJkJBQ0tFTkQtPmN0cl9kcmJnLCBlbnRyb3B5X2Z1bmNfbXV0ZXgsICZlbnRyb3B5LAotICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKSkgIT0gMCkgewotICAgIGVycm9yX3N0cmVycm9yKHJldCwgZXJyb3JidWYsIHNpemVvZihlcnJvcmJ1ZikpOwotICAgIGZhaWxmKGRhdGEsICJGYWlsZWQgLSBQb2xhclNTTDogY3RyX2RyYmdfaW5pdCByZXR1cm5lZCAoLTB4JTA0WCkgJXNcbiIsCi0gICAgICAgICAgLXJldCwgZXJyb3JidWYpOwotICB9Ci0jZWxzZQotICBlbnRyb3B5X2luaXQoJkJBQ0tFTkQtPmVudHJvcHkpOwotCi0gIGlmKChyZXQgPSBjdHJfZHJiZ19pbml0KCZCQUNLRU5ELT5jdHJfZHJiZywgZW50cm9weV9mdW5jLCAmQkFDS0VORC0+ZW50cm9weSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCkpICE9IDApIHsKLSAgICBlcnJvcl9zdHJlcnJvcihyZXQsIGVycm9yYnVmLCBzaXplb2YoZXJyb3JidWYpKTsKLSAgICBmYWlsZihkYXRhLCAiRmFpbGVkIC0gUG9sYXJTU0w6IGN0cl9kcmJnX2luaXQgcmV0dXJuZWQgKC0weCUwNFgpICVzXG4iLAotICAgICAgICAgIC1yZXQsIGVycm9yYnVmKTsKLSAgfQotI2VuZGlmIC8qIFRIUkVBRElOR19TVVBQT1JUICovCi0KLSAgLyogTG9hZCB0aGUgdHJ1c3RlZCBDQSAqLwotICBtZW1zZXQoJkJBQ0tFTkQtPmNhY2VydCwgMCwgc2l6ZW9mKHg1MDlfY3J0KSk7Ci0KLSAgaWYoU1NMX0NPTk5fQ09ORklHKENBZmlsZSkpIHsKLSAgICByZXQgPSB4NTA5X2NydF9wYXJzZV9maWxlKCZCQUNLRU5ELT5jYWNlcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfQ09OTl9DT05GSUcoQ0FmaWxlKSk7Ci0KLSAgICBpZihyZXQ8MCkgewotICAgICAgZXJyb3Jfc3RyZXJyb3IocmV0LCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSk7Ci0gICAgICBmYWlsZihkYXRhLCAiRXJyb3IgcmVhZGluZyBjYSBjZXJ0IGZpbGUgJXMgLSBQb2xhclNTTDogKC0weCUwNFgpICVzIiwKLSAgICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhDQWZpbGUpLCAtcmV0LCBlcnJvcmJ1Zik7Ci0KLSAgICAgIGlmKFNTTF9DT05OX0NPTkZJRyh2ZXJpZnlwZWVyKSkKLSAgICAgICAgcmV0dXJuIENVUkxFX1NTTF9DQUNFUlRfQkFERklMRTsKLSAgICB9Ci0gIH0KLQotICBpZihjYXBhdGgpIHsKLSAgICByZXQgPSB4NTA5X2NydF9wYXJzZV9wYXRoKCZCQUNLRU5ELT5jYWNlcnQsIGNhcGF0aCk7Ci0KLSAgICBpZihyZXQ8MCkgewotICAgICAgZXJyb3Jfc3RyZXJyb3IocmV0LCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSk7Ci0gICAgICBmYWlsZihkYXRhLCAiRXJyb3IgcmVhZGluZyBjYSBjZXJ0IHBhdGggJXMgLSBQb2xhclNTTDogKC0weCUwNFgpICVzIiwKLSAgICAgICAgICAgIGNhcGF0aCwgLXJldCwgZXJyb3JidWYpOwotCi0gICAgICBpZihTU0xfQ09OTl9DT05GSUcodmVyaWZ5cGVlcikpCi0gICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ0FDRVJUX0JBREZJTEU7Ci0gICAgfQotICB9Ci0KLSAgLyogTG9hZCB0aGUgY2xpZW50IGNlcnRpZmljYXRlICovCi0gIG1lbXNldCgmQkFDS0VORC0+Y2xpY2VydCwgMCwgc2l6ZW9mKHg1MDlfY3J0KSk7Ci0KLSAgaWYoU1NMX1NFVF9PUFRJT04oY2VydCkpIHsKLSAgICByZXQgPSB4NTA5X2NydF9wYXJzZV9maWxlKCZCQUNLRU5ELT5jbGljZXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX1NFVF9PUFRJT04oY2VydCkpOwotCi0gICAgaWYocmV0KSB7Ci0gICAgICBlcnJvcl9zdHJlcnJvcihyZXQsIGVycm9yYnVmLCBzaXplb2YoZXJyb3JidWYpKTsKLSAgICAgIGZhaWxmKGRhdGEsICJFcnJvciByZWFkaW5nIGNsaWVudCBjZXJ0IGZpbGUgJXMgLSBQb2xhclNTTDogKC0weCUwNFgpICVzIiwKLSAgICAgICAgICAgIFNTTF9TRVRfT1BUSU9OKGNlcnQpLCAtcmV0LCBlcnJvcmJ1Zik7Ci0KLSAgICAgIHJldHVybiBDVVJMRV9TU0xfQ0VSVFBST0JMRU07Ci0gICAgfQotICB9Ci0KLSAgLyogTG9hZCB0aGUgY2xpZW50IHByaXZhdGUga2V5ICovCi0gIGlmKFNTTF9TRVRfT1BUSU9OKGtleSkpIHsKLSAgICBwa19jb250ZXh0IHBrOwotICAgIHBrX2luaXQoJnBrKTsKLSAgICByZXQgPSBwa19wYXJzZV9rZXlmaWxlKCZwaywgU1NMX1NFVF9PUFRJT04oa2V5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTTF9TRVRfT1BUSU9OKGtleV9wYXNzd2QpKTsKLSAgICBpZihyZXQgPT0gMCAmJiAhcGtfY2FuX2RvKCZwaywgUE9MQVJTU0xfUEtfUlNBKSkKLSAgICAgIHJldCA9IFBPTEFSU1NMX0VSUl9QS19UWVBFX01JU01BVENIOwotICAgIGlmKHJldCA9PSAwKQotICAgICAgcnNhX2NvcHkoJkJBQ0tFTkQtPnJzYSwgcGtfcnNhKHBrKSk7Ci0gICAgZWxzZQotICAgICAgcnNhX2ZyZWUoJkJBQ0tFTkQtPnJzYSk7Ci0gICAgcGtfZnJlZSgmcGspOwotCi0gICAgaWYocmV0KSB7Ci0gICAgICBlcnJvcl9zdHJlcnJvcihyZXQsIGVycm9yYnVmLCBzaXplb2YoZXJyb3JidWYpKTsKLSAgICAgIGZhaWxmKGRhdGEsICJFcnJvciByZWFkaW5nIHByaXZhdGUga2V5ICVzIC0gUG9sYXJTU0w6ICgtMHglMDRYKSAlcyIsCi0gICAgICAgICAgICBTU0xfU0VUX09QVElPTihrZXkpLCAtcmV0LCBlcnJvcmJ1Zik7Ci0KLSAgICAgIHJldHVybiBDVVJMRV9TU0xfQ0VSVFBST0JMRU07Ci0gICAgfQotICB9Ci0KLSAgLyogTG9hZCB0aGUgQ1JMICovCi0gIG1lbXNldCgmQkFDS0VORC0+Y3JsLCAwLCBzaXplb2YoeDUwOV9jcmwpKTsKLQotICBpZihTU0xfU0VUX09QVElPTihDUkxmaWxlKSkgewotICAgIHJldCA9IHg1MDlfY3JsX3BhcnNlX2ZpbGUoJkJBQ0tFTkQtPmNybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTTF9TRVRfT1BUSU9OKENSTGZpbGUpKTsKLQotICAgIGlmKHJldCkgewotICAgICAgZXJyb3Jfc3RyZXJyb3IocmV0LCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSk7Ci0gICAgICBmYWlsZihkYXRhLCAiRXJyb3IgcmVhZGluZyBDUkwgZmlsZSAlcyAtIFBvbGFyU1NMOiAoLTB4JTA0WCkgJXMiLAotICAgICAgICAgICAgU1NMX1NFVF9PUFRJT04oQ1JMZmlsZSksIC1yZXQsIGVycm9yYnVmKTsKLQotICAgICAgcmV0dXJuIENVUkxFX1NTTF9DUkxfQkFERklMRTsKLSAgICB9Ci0gIH0KLQotICBpbmZvZihkYXRhLCAiUG9sYXJTU0w6IENvbm5lY3RpbmcgdG8gJXM6JWRcbiIsIGhvc3RuYW1lLCBwb3J0KTsKLQotICBpZihzc2xfaW5pdCgmQkFDS0VORC0+c3NsKSkgewotICAgIGZhaWxmKGRhdGEsICJQb2xhclNTTDogc3NsX2luaXQgZmFpbGVkIik7Ci0gICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwotICB9Ci0KLSAgc3dpdGNoKFNTTF9DT05OX0NPTkZJRyh2ZXJzaW9uKSkgewotICBjYXNlIENVUkxfU1NMVkVSU0lPTl9ERUZBVUxUOgotICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MToKLSAgICBzc2xfc2V0X21pbl92ZXJzaW9uKCZCQUNLRU5ELT5zc2wsIFNTTF9NQUpPUl9WRVJTSU9OXzMsCi0gICAgICAgICAgICAgICAgICAgICAgICBTU0xfTUlOT1JfVkVSU0lPTl8xKTsKLSAgICBicmVhazsKLSAgY2FzZSBDVVJMX1NTTFZFUlNJT05fU1NMdjM6Ci0gICAgc3NsX3NldF9taW5fdmVyc2lvbigmQkFDS0VORC0+c3NsLCBTU0xfTUFKT1JfVkVSU0lPTl8zLAotICAgICAgICAgICAgICAgICAgICAgICAgU1NMX01JTk9SX1ZFUlNJT05fMCk7Ci0gICAgc3NsX3NldF9tYXhfdmVyc2lvbigmQkFDS0VORC0+c3NsLCBTU0xfTUFKT1JfVkVSU0lPTl8zLAotICAgICAgICAgICAgICAgICAgICAgICAgU1NMX01JTk9SX1ZFUlNJT05fMCk7Ci0gICAgaW5mb2YoZGF0YSwgIlBvbGFyU1NMOiBGb3JjZWQgbWluLiBTU0wgVmVyc2lvbiB0byBiZSBTU0x2M1xuIik7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzA6Ci0gIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzE6Ci0gIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzI6Ci0gIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzM6Ci0gICAgewotICAgICAgQ1VSTGNvZGUgcmVzdWx0ID0gc2V0X3NzbF92ZXJzaW9uX21pbl9tYXgoY29ubiwgc29ja2luZGV4KTsKLSAgICAgIGlmKHJlc3VsdCAhPSBDVVJMRV9PSykKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgZGVmYXVsdDoKLSAgICBmYWlsZihkYXRhLCAiVW5yZWNvZ25pemVkIHBhcmFtZXRlciBwYXNzZWQgdmlhIENVUkxPUFRfU1NMVkVSU0lPTiIpOwotICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKLSAgfQotCi0gIHNzbF9zZXRfZW5kcG9pbnQoJkJBQ0tFTkQtPnNzbCwgU1NMX0lTX0NMSUVOVCk7Ci0gIHNzbF9zZXRfYXV0aG1vZGUoJkJBQ0tFTkQtPnNzbCwgU1NMX1ZFUklGWV9PUFRJT05BTCk7Ci0KLSAgc3NsX3NldF9ybmcoJkJBQ0tFTkQtPnNzbCwgY3RyX2RyYmdfcmFuZG9tLAotICAgICAgICAgICAgICAmQkFDS0VORC0+Y3RyX2RyYmcpOwotICBzc2xfc2V0X2JpbygmQkFDS0VORC0+c3NsLAotICAgICAgICAgICAgICBuZXRfcmVjdiwgJmNvbm4tPnNvY2tbc29ja2luZGV4XSwKLSAgICAgICAgICAgICAgbmV0X3NlbmQsICZjb25uLT5zb2NrW3NvY2tpbmRleF0pOwotCi0gIHNzbF9zZXRfY2lwaGVyc3VpdGVzKCZCQUNLRU5ELT5zc2wsIHNzbF9saXN0X2NpcGhlcnN1aXRlcygpKTsKLQotICAvKiBDaGVjayBpZiB0aGVyZSdzIGEgY2FjaGVkIElEIHdlIGNhbi9zaG91bGQgdXNlIGhlcmUhICovCi0gIGlmKFNTTF9TRVRfT1BUSU9OKHByaW1hcnkuc2Vzc2lvbmlkKSkgewotICAgIHZvaWQgKm9sZF9zZXNzaW9uID0gTlVMTDsKLQotICAgIEN1cmxfc3NsX3Nlc3Npb25pZF9sb2NrKGNvbm4pOwotICAgIGlmKCFDdXJsX3NzbF9nZXRzZXNzaW9uaWQoY29ubiwgJm9sZF9zZXNzaW9uLCBOVUxMLCBzb2NraW5kZXgpKSB7Ci0gICAgICByZXQgPSBzc2xfc2V0X3Nlc3Npb24oJkJBQ0tFTkQtPnNzbCwgb2xkX3Nlc3Npb24pOwotICAgICAgaWYocmV0KSB7Ci0gICAgICAgIEN1cmxfc3NsX3Nlc3Npb25pZF91bmxvY2soY29ubik7Ci0gICAgICAgIGZhaWxmKGRhdGEsICJzc2xfc2V0X3Nlc3Npb24gcmV0dXJuZWQgLTB4JXgiLCAtcmV0KTsKLSAgICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwotICAgICAgfQotICAgICAgaW5mb2YoZGF0YSwgIlBvbGFyU1NMIHJlLXVzaW5nIHNlc3Npb25cbiIpOwotICAgIH0KLSAgICBDdXJsX3NzbF9zZXNzaW9uaWRfdW5sb2NrKGNvbm4pOwotICB9Ci0KLSAgc3NsX3NldF9jYV9jaGFpbigmQkFDS0VORC0+c3NsLAotICAgICAgICAgICAgICAgICAgICZCQUNLRU5ELT5jYWNlcnQsCi0gICAgICAgICAgICAgICAgICAgJkJBQ0tFTkQtPmNybCwKLSAgICAgICAgICAgICAgICAgICBob3N0bmFtZSk7Ci0KLSAgc3NsX3NldF9vd25fY2VydF9yc2EoJkJBQ0tFTkQtPnNzbCwKLSAgICAgICAgICAgICAgICAgICAgICAgJkJBQ0tFTkQtPmNsaWNlcnQsICZCQUNLRU5ELT5yc2EpOwotCi0gIGlmKHNzbF9zZXRfaG9zdG5hbWUoJkJBQ0tFTkQtPnNzbCwgaG9zdG5hbWUpKSB7Ci0gICAgLyogc3NsX3NldF9ob3N0bmFtZSgpIHNldHMgdGhlIG5hbWUgdG8gdXNlIGluIENOL1NBTiBjaGVja3MgKmFuZCogdGhlIG5hbWUKLSAgICAgICB0byBzZXQgaW4gdGhlIFNOSSBleHRlbnNpb24uIFNvIGV2ZW4gaWYgY3VybCBjb25uZWN0cyB0byBhIGhvc3QKLSAgICAgICBzcGVjaWZpZWQgYXMgYW4gSVAgYWRkcmVzcywgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQuICovCi0gICAgZmFpbGYoZGF0YSwgImNvdWxkbid0IHNldCBob3N0bmFtZSBpbiBQb2xhclNTTCIpOwotICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKLSAgfQotCi0jaWZkZWYgSEFTX0FMUE4KLSAgaWYoY29ubi0+Yml0cy50bHNfZW5hYmxlX2FscG4pIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqcHJvdG9jb2xzWzNdOwotICAgIGludCBjdXIgPSAwOwotCi0jaWZkZWYgVVNFX05HSFRUUDIKLSAgICBpZihkYXRhLT5zZXQuaHR0cHZlcnNpb24gPj0gQ1VSTF9IVFRQX1ZFUlNJT05fMikgewotICAgICAgcHJvdG9jb2xzW2N1cisrXSA9IE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRDsKLSAgICAgIGluZm9mKGRhdGEsICJBTFBOLCBvZmZlcmluZyAlc1xuIiwgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHByb3RvY29sc1tjdXIrK10gPSBBTFBOX0hUVFBfMV8xOwotICAgIGluZm9mKGRhdGEsICJBTFBOLCBvZmZlcmluZyAlc1xuIiwgQUxQTl9IVFRQXzFfMSk7Ci0KLSAgICBwcm90b2NvbHNbY3VyXSA9IE5VTEw7Ci0KLSAgICBzc2xfc2V0X2FscG5fcHJvdG9jb2xzKCZCQUNLRU5ELT5zc2wsIHByb3RvY29scyk7Ci0gIH0KLSNlbmRpZgotCi0jaWZkZWYgUE9MQVJTU0xfREVCVUcKLSAgc3NsX3NldF9kYmcoJkJBQ0tFTkQtPnNzbCwgcG9sYXJzc2xfZGVidWcsIGRhdGEpOwotI2VuZGlmCi0KLSAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9IHNzbF9jb25uZWN0XzI7Ci0KLSAgcmV0dXJuIENVUkxFX09LOwotfQotCi1zdGF0aWMgQ1VSTGNvZGUKLXBvbGFyc3NsX2Nvbm5lY3Rfc3RlcDIoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4KQotewotICBpbnQgcmV0OwotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEqIGNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07Ci0gIGNoYXIgYnVmZmVyWzEwMjRdOwotICBjb25zdCBjaGFyICogY29uc3QgcGlubmVkcHVia2V5ID0gU1NMX0lTX1BST1hZKCkgPwotICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV9QUk9YWV0gOgotICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV9PUklHXTsKLQotCi0gIGNoYXIgZXJyb3JidWZbMTI4XTsKLSAgZXJyb3JidWZbMF0gPSAwOwotCi0gIGNvbm4tPnJlY3Zbc29ja2luZGV4XSA9IHBvbGFyc3NsX3JlY3Y7Ci0gIGNvbm4tPnNlbmRbc29ja2luZGV4XSA9IHBvbGFyc3NsX3NlbmQ7Ci0KLSAgcmV0ID0gc3NsX2hhbmRzaGFrZSgmQkFDS0VORC0+c3NsKTsKLQotICBzd2l0Y2gocmV0KSB7Ci0gIGNhc2UgMDoKLSAgICBicmVhazsKLQotICBjYXNlIFBPTEFSU1NMX0VSUl9ORVRfV0FOVF9SRUFEOgotICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8yX3JlYWRpbmc7Ci0gICAgcmV0dXJuIENVUkxFX09LOwotCi0gIGNhc2UgUE9MQVJTU0xfRVJSX05FVF9XQU5UX1dSSVRFOgotICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8yX3dyaXRpbmc7Ci0gICAgcmV0dXJuIENVUkxFX09LOwotCi0gIGRlZmF1bHQ6Ci0gICAgZXJyb3Jfc3RyZXJyb3IocmV0LCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSk7Ci0gICAgZmFpbGYoZGF0YSwgInNzbF9oYW5kc2hha2UgcmV0dXJuZWQgLSBQb2xhclNTTDogKC0weCUwNFgpICVzIiwKLSAgICAgICAgICAtcmV0LCBlcnJvcmJ1Zik7Ci0gICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwotICB9Ci0KLSAgaW5mb2YoZGF0YSwgIlBvbGFyU1NMOiBIYW5kc2hha2UgY29tcGxldGUsIGNpcGhlciBpcyAlc1xuIiwKLSAgICAgICAgc3NsX2dldF9jaXBoZXJzdWl0ZSgmQkFDS0VORC0+c3NsKSApOwotCi0gIHJldCA9IHNzbF9nZXRfdmVyaWZ5X3Jlc3VsdCgmQkFDS0VORC0+c3NsKTsKLQotICBpZihyZXQgJiYgU1NMX0NPTk5fQ09ORklHKHZlcmlmeXBlZXIpKSB7Ci0gICAgaWYocmV0ICYgQkFEQ0VSVF9FWFBJUkVEKQotICAgICAgZmFpbGYoZGF0YSwgIkNlcnQgdmVyaWZ5IGZhaWxlZDogQkFEQ0VSVF9FWFBJUkVEIik7Ci0KLSAgICBpZihyZXQgJiBCQURDRVJUX1JFVk9LRUQpIHsKLSAgICAgIGZhaWxmKGRhdGEsICJDZXJ0IHZlcmlmeSBmYWlsZWQ6IEJBRENFUlRfUkVWT0tFRCIpOwotICAgICAgcmV0dXJuIENVUkxFX1BFRVJfRkFJTEVEX1ZFUklGSUNBVElPTjsKLSAgICB9Ci0KLSAgICBpZihyZXQgJiBCQURDRVJUX0NOX01JU01BVENIKQotICAgICAgZmFpbGYoZGF0YSwgIkNlcnQgdmVyaWZ5IGZhaWxlZDogQkFEQ0VSVF9DTl9NSVNNQVRDSCIpOwotCi0gICAgaWYocmV0ICYgQkFEQ0VSVF9OT1RfVFJVU1RFRCkKLSAgICAgIGZhaWxmKGRhdGEsICJDZXJ0IHZlcmlmeSBmYWlsZWQ6IEJBRENFUlRfTk9UX1RSVVNURUQiKTsKLQotICAgIHJldHVybiBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047Ci0gIH0KLQotICBpZihzc2xfZ2V0X3BlZXJfY2VydCgmKEJBQ0tFTkQtPnNzbCkpKSB7Ci0gICAgLyogSWYgdGhlIHNlc3Npb24gd2FzIHJlc3VtZWQsIHRoZXJlIHdpbGwgYmUgbm8gcGVlciBjZXJ0cyAqLwotICAgIG1lbXNldChidWZmZXIsIDAsIHNpemVvZihidWZmZXIpKTsKLQotICAgIGlmKHg1MDlfY3J0X2luZm8oYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgKGNoYXIgKikiKiAiLAotICAgICAgICAgICAgICAgICAgICAgc3NsX2dldF9wZWVyX2NlcnQoJihCQUNLRU5ELT5zc2wpKSkgIT0gLTEpCi0gICAgICBpbmZvZihkYXRhLCAiRHVtcGluZyBjZXJ0IGluZm86XG4lc1xuIiwgYnVmZmVyKTsKLSAgfQotCi0gIC8qIGFkYXB0ZWQgZnJvbSBtYmVkdGxzLmMgKi8KLSAgaWYocGlubmVkcHVia2V5KSB7Ci0gICAgaW50IHNpemU7Ci0gICAgQ1VSTGNvZGUgcmVzdWx0OwotICAgIHg1MDlfY3J0ICpwOwotICAgIHVuc2lnbmVkIGNoYXIgcHVia2V5W1BVQl9ERVJfTUFYX0JZVEVTXTsKLSAgICBjb25zdCB4NTA5X2NydCAqcGVlcmNlcnQ7Ci0KLSAgICBwZWVyY2VydCA9IHNzbF9nZXRfcGVlcl9jZXJ0KCZCQUNLRU5ELT5zc2wpOwotCi0gICAgaWYoIXBlZXJjZXJ0IHx8ICFwZWVyY2VydC0+cmF3LnAgfHwgIXBlZXJjZXJ0LT5yYXcubGVuKSB7Ci0gICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIGR1ZSB0byBtaXNzaW5nIHBlZXIgY2VydGlmaWNhdGUiKTsKLSAgICAgIHJldHVybiBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7Ci0gICAgfQotCi0gICAgcCA9IGNhbGxvYygxLCBzaXplb2YoKnApKTsKLQotICAgIGlmKCFwKQotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgICB4NTA5X2NydF9pbml0KHApOwotCi0gICAgLyogTWFrZSBhIGNvcHkgb2Ygb3VyIGNvbnN0IHBlZXJjZXJ0IGJlY2F1c2UgcGtfd3JpdGVfcHVia2V5X2RlcgotICAgICAgIG5lZWRzIGEgbm9uLWNvbnN0IGtleSwgZm9yIG5vdy4KLSAgICAgICBodHRwczovL2dpdGh1Yi5jb20vQVJNbWJlZC9tYmVkdGxzL2lzc3Vlcy8zOTYgKi8KLSAgICBpZih4NTA5X2NydF9wYXJzZV9kZXIocCwgcGVlcmNlcnQtPnJhdy5wLCBwZWVyY2VydC0+cmF3LmxlbikpIHsKLSAgICAgIGZhaWxmKGRhdGEsICJGYWlsZWQgY29weWluZyBwZWVyIGNlcnRpZmljYXRlIik7Ci0gICAgICB4NTA5X2NydF9mcmVlKHApOwotICAgICAgZnJlZShwKTsKLSAgICAgIHJldHVybiBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7Ci0gICAgfQotCi0gICAgc2l6ZSA9IHBrX3dyaXRlX3B1YmtleV9kZXIoJnAtPnBrLCBwdWJrZXksIFBVQl9ERVJfTUFYX0JZVEVTKTsKLQotICAgIGlmKHNpemUgPD0gMCkgewotICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCBjb3B5aW5nIHB1YmxpYyBrZXkgZnJvbSBwZWVyIGNlcnRpZmljYXRlIik7Ci0gICAgICB4NTA5X2NydF9mcmVlKHApOwotICAgICAgZnJlZShwKTsKLSAgICAgIHJldHVybiBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7Ci0gICAgfQotCi0gICAgLyogcGtfd3JpdGVfcHVia2V5X2RlciB3cml0ZXMgZGF0YSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICovCi0gICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkoZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRwdWJrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB1YmtleVtQVUJfREVSX01BWF9CWVRFUyAtIHNpemVdLCBzaXplKTsKLSAgICBpZihyZXN1bHQpIHsKLSAgICAgIHg1MDlfY3J0X2ZyZWUocCk7Ci0gICAgICBmcmVlKHApOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB4NTA5X2NydF9mcmVlKHApOwotICAgIGZyZWUocCk7Ci0gIH0KLQotI2lmZGVmIEhBU19BTFBOCi0gIGlmKGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuKSB7Ci0gICAgY29uc3QgY2hhciAqbmV4dF9wcm90b2NvbCA9IHNzbF9nZXRfYWxwbl9wcm90b2NvbCgmQkFDS0VORC0+c3NsKTsKLQotICAgIGlmKG5leHRfcHJvdG9jb2wgIT0gTlVMTCkgewotICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIHNlcnZlciBhY2NlcHRlZCB0byB1c2UgJXNcbiIsIG5leHRfcHJvdG9jb2wpOwotCi0jaWZkZWYgVVNFX05HSFRUUDIKLSAgICAgIGlmKCFzdHJuY21wKG5leHRfcHJvdG9jb2wsIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCwKLSAgICAgICAgICAgICAgICAgIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU4pKSB7Ci0gICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzI7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgaWYoIXN0cm5jbXAobmV4dF9wcm90b2NvbCwgQUxQTl9IVFRQXzFfMSwgQUxQTl9IVFRQXzFfMV9MRU5HVEgpKSB7Ci0gICAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMV8xOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIGluZm9mKGRhdGEsICJBTFBOLCBzZXJ2ZXIgZGlkIG5vdCBhZ3JlZSB0byBhIHByb3RvY29sXG4iKTsKLSAgICBDdXJsX211bHRpdXNlX3N0YXRlKGNvbm4sIGNvbm4tPm5lZ25wbiA9PSBDVVJMX0hUVFBfVkVSU0lPTl8yID8KLSAgICAgICAgICAgICAgICAgICAgICAgIEJVTkRMRV9NVUxUSVBMRVggOiBCVU5ETEVfTk9fTVVMVElVU0UpOwotICB9Ci0jZW5kaWYKLQotICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMzsKLSAgaW5mb2YoZGF0YSwgIlNTTCBjb25uZWN0ZWRcbiIpOwotCi0gIHJldHVybiBDVVJMRV9PSzsKLX0KLQotc3RhdGljIENVUkxjb2RlCi1wb2xhcnNzbF9jb25uZWN0X3N0ZXAzKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCkKLXsKLSAgQ1VSTGNvZGUgcmV0Y29kZSA9IENVUkxFX09LOwotICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKLSAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7Ci0KLSAgREVCVUdBU1NFUlQoc3NsX2Nvbm5lY3RfMyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKTsKLQotICBpZihTU0xfU0VUX09QVElPTihwcmltYXJ5LnNlc3Npb25pZCkpIHsKLSAgICBpbnQgcmV0OwotICAgIHNzbF9zZXNzaW9uICpvdXJfc3NsX3Nlc3Npb25pZDsKLSAgICB2b2lkICpvbGRfc3NsX3Nlc3Npb25pZCA9IE5VTEw7Ci0KLSAgICBvdXJfc3NsX3Nlc3Npb25pZCA9IGNhbGxvYygxLCBzaXplb2Yoc3NsX3Nlc3Npb24pKTsKLSAgICBpZighb3VyX3NzbF9zZXNzaW9uaWQpCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIHJldCA9IHNzbF9nZXRfc2Vzc2lvbigmQkFDS0VORC0+c3NsLCBvdXJfc3NsX3Nlc3Npb25pZCk7Ci0gICAgaWYocmV0KSB7Ci0gICAgICBmYWlsZihkYXRhLCAic3NsX2dldF9zZXNzaW9uIHJldHVybmVkIC0weCV4IiwgLXJldCk7Ci0gICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7Ci0gICAgfQotCi0gICAgLyogSWYgdGhlcmUncyBhbHJlYWR5IGEgbWF0Y2hpbmcgc2Vzc2lvbiBpbiB0aGUgY2FjaGUsIGRlbGV0ZSBpdCAqLwotICAgIEN1cmxfc3NsX3Nlc3Npb25pZF9sb2NrKGNvbm4pOwotICAgIGlmKCFDdXJsX3NzbF9nZXRzZXNzaW9uaWQoY29ubiwgJm9sZF9zc2xfc2Vzc2lvbmlkLCBOVUxMLCBzb2NraW5kZXgpKQotICAgICAgQ3VybF9zc2xfZGVsc2Vzc2lvbmlkKGNvbm4sIG9sZF9zc2xfc2Vzc2lvbmlkKTsKLQotICAgIHJldGNvZGUgPSBDdXJsX3NzbF9hZGRzZXNzaW9uaWQoY29ubiwgb3VyX3NzbF9zZXNzaW9uaWQsIDAsIHNvY2tpbmRleCk7Ci0gICAgQ3VybF9zc2xfc2Vzc2lvbmlkX3VubG9jayhjb25uKTsKLSAgICBpZihyZXRjb2RlKSB7Ci0gICAgICBmcmVlKG91cl9zc2xfc2Vzc2lvbmlkKTsKLSAgICAgIGZhaWxmKGRhdGEsICJmYWlsZWQgdG8gc3RvcmUgc3NsIHNlc3Npb24iKTsKLSAgICAgIHJldHVybiByZXRjb2RlOwotICAgIH0KLSAgfQotCi0gIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF9kb25lOwotCi0gIHJldHVybiBDVVJMRV9PSzsKLX0KLQotc3RhdGljIHNzaXplX3QgcG9sYXJzc2xfc2VuZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKm1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUgKmN1cmxjb2RlKQotewotICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKLSAgaW50IHJldCA9IC0xOwotCi0gIHJldCA9IHNzbF93cml0ZSgmQkFDS0VORC0+c3NsLAotICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKiltZW0sIGxlbik7Ci0KLSAgaWYocmV0IDwgMCkgewotICAgICpjdXJsY29kZSA9IChyZXQgPT0gUE9MQVJTU0xfRVJSX05FVF9XQU5UX1dSSVRFKSA/Ci0gICAgICBDVVJMRV9BR0FJTiA6IENVUkxFX1NFTkRfRVJST1I7Ci0gICAgcmV0ID0gLTE7Ci0gIH0KLQotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9pZCBDdXJsX3BvbGFyc3NsX2Nsb3NlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKLXsKLSAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07Ci0gIHJzYV9mcmVlKCZCQUNLRU5ELT5yc2EpOwotICB4NTA5X2NydF9mcmVlKCZCQUNLRU5ELT5jbGljZXJ0KTsKLSAgeDUwOV9jcnRfZnJlZSgmQkFDS0VORC0+Y2FjZXJ0KTsKLSAgeDUwOV9jcmxfZnJlZSgmQkFDS0VORC0+Y3JsKTsKLSAgc3NsX2ZyZWUoJkJBQ0tFTkQtPnNzbCk7Ci19Ci0KLXN0YXRpYyBzc2l6ZV90IHBvbGFyc3NsX3JlY3Yoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBidWZmZXJzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMY29kZSAqY3VybGNvZGUpCi17Ci0gIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtudW1dOwotICBpbnQgcmV0ID0gLTE7Ci0gIHNzaXplX3QgbGVuID0gLTE7Ci0KLSAgbWVtc2V0KGJ1ZiwgMCwgYnVmZmVyc2l6ZSk7Ci0gIHJldCA9IHNzbF9yZWFkKCZCQUNLRU5ELT5zc2wsICh1bnNpZ25lZCBjaGFyICopYnVmLCBidWZmZXJzaXplKTsKLQotICBpZihyZXQgPD0gMCkgewotICAgIGlmKHJldCA9PSBQT0xBUlNTTF9FUlJfU1NMX1BFRVJfQ0xPU0VfTk9USUZZKQotICAgICAgcmV0dXJuIDA7Ci0KLSAgICAqY3VybGNvZGUgPSAocmV0ID09IFBPTEFSU1NMX0VSUl9ORVRfV0FOVF9SRUFEKSA/Ci0gICAgICBDVVJMRV9BR0FJTiA6IENVUkxFX1JFQ1ZfRVJST1I7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0KLSAgbGVuID0gcmV0OwotCi0gIHJldHVybiBsZW47Ci19Ci0KLXN0YXRpYyB2b2lkIEN1cmxfcG9sYXJzc2xfc2Vzc2lvbl9mcmVlKHZvaWQgKnB0cikKLXsKLSAgc3NsX3Nlc3Npb25fZnJlZShwdHIpOwotICBmcmVlKHB0cik7Ci19Ci0KLS8qIDEuMy4xMCB3YXMgdGhlIGZpcnN0IHJlYnJhbmRlZCB2ZXJzaW9uLiBBbGwgbmV3IHJlbGVhc2VzIChpbiAxLjMgYnJhbmNoIGFuZAotICAgaGlnaGVyKSB3aWxsIGJlIG1iZWQgVExTIGJyYW5kZWQuLiAqLwotCi1zdGF0aWMgc2l6ZV90IEN1cmxfcG9sYXJzc2xfdmVyc2lvbihjaGFyICpidWZmZXIsIHNpemVfdCBzaXplKQotewotICB1bnNpZ25lZCBpbnQgdmVyc2lvbiA9IHZlcnNpb25fZ2V0X251bWJlcigpOwotICByZXR1cm4gbXNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIiVzLyVkLiVkLiVkIiwKLSAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID49IDB4MDEwMzBBMDA/Im1iZWRUTFMiOiJQb2xhclNTTCIsCi0gICAgICAgICAgICAgICAgICAgdmVyc2lvbj4+MjQsICh2ZXJzaW9uPj4xNikmMHhmZiwgKHZlcnNpb24+PjgpJjB4ZmYpOwotfQotCi1zdGF0aWMgQ1VSTGNvZGUKLXBvbGFyc3NsX2Nvbm5lY3RfY29tbW9uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICBib29sIG5vbmJsb2NraW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9uZSkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0OwotICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKLSAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07Ci0gIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tzb2NraW5kZXhdOwotICBsb25nIHRpbWVvdXRfbXM7Ci0gIGludCB3aGF0OwotCi0gIC8qIGNoZWNrIGlmIHRoZSBjb25uZWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gZXN0YWJsaXNoZWQgKi8KLSAgaWYoc3NsX2Nvbm5lY3Rpb25fY29tcGxldGUgPT0gY29ubnNzbC0+c3RhdGUpIHsKLSAgICAqZG9uZSA9IFRSVUU7Ci0gICAgcmV0dXJuIENVUkxFX09LOwotICB9Ci0KLSAgaWYoc3NsX2Nvbm5lY3RfMSA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKSB7Ci0gICAgLyogRmluZCBvdXQgaG93IG11Y2ggbW9yZSB0aW1lIHdlJ3JlIGFsbG93ZWQgKi8KLSAgICB0aW1lb3V0X21zID0gQ3VybF90aW1lbGVmdChkYXRhLCBOVUxMLCBUUlVFKTsKLQotICAgIGlmKHRpbWVvdXRfbXMgPCAwKSB7Ci0gICAgICAvKiBubyBuZWVkIHRvIGNvbnRpbnVlIGlmIHRpbWUgYWxyZWFkeSBpcyB1cCAqLwotICAgICAgZmFpbGYoZGF0YSwgIlNTTCBjb25uZWN0aW9uIHRpbWVvdXQiKTsKLSAgICAgIHJldHVybiBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7Ci0gICAgfQotCi0gICAgcmVzdWx0ID0gcG9sYXJzc2xfY29ubmVjdF9zdGVwMShjb25uLCBzb2NraW5kZXgpOwotICAgIGlmKHJlc3VsdCkKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICB3aGlsZShzc2xfY29ubmVjdF8yID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKLSAgICAgICAgc3NsX2Nvbm5lY3RfMl9yZWFkaW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKLSAgICAgICAgc3NsX2Nvbm5lY3RfMl93cml0aW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpIHsKLQotICAgIC8qIGNoZWNrIGFsbG93ZWQgdGltZSBsZWZ0ICovCi0gICAgdGltZW91dF9tcyA9IEN1cmxfdGltZWxlZnQoZGF0YSwgTlVMTCwgVFJVRSk7Ci0KLSAgICBpZih0aW1lb3V0X21zIDwgMCkgewotICAgICAgLyogbm8gbmVlZCB0byBjb250aW51ZSBpZiB0aW1lIGFscmVhZHkgaXMgdXAgKi8KLSAgICAgIGZhaWxmKGRhdGEsICJTU0wgY29ubmVjdGlvbiB0aW1lb3V0Iik7Ci0gICAgICByZXR1cm4gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOwotICAgIH0KLQotICAgIC8qIGlmIHNzbCBpcyBleHBlY3Rpbmcgc29tZXRoaW5nLCBjaGVjayBpZiBpdCdzIGF2YWlsYWJsZS4gKi8KLSAgICBpZihjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID09IHNzbF9jb25uZWN0XzJfcmVhZGluZyB8fAotICAgICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPT0gc3NsX2Nvbm5lY3RfMl93cml0aW5nKSB7Ci0KLSAgICAgIGN1cmxfc29ja2V0X3Qgd3JpdGVmZCA9IHNzbF9jb25uZWN0XzJfd3JpdGluZyA9PQotICAgICAgICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlP3NvY2tmZDpDVVJMX1NPQ0tFVF9CQUQ7Ci0gICAgICBjdXJsX3NvY2tldF90IHJlYWRmZCA9IHNzbF9jb25uZWN0XzJfcmVhZGluZyA9PQotICAgICAgICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlP3NvY2tmZDpDVVJMX1NPQ0tFVF9CQUQ7Ci0KLSAgICAgIHdoYXQgPSBDdXJsX3NvY2tldF9jaGVjayhyZWFkZmQsIENVUkxfU09DS0VUX0JBRCwgd3JpdGVmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25ibG9ja2luZz8wOnRpbWVvdXRfbXMpOwotICAgICAgaWYod2hhdCA8IDApIHsKLSAgICAgICAgLyogZmF0YWwgZXJyb3IgKi8KLSAgICAgICAgZmFpbGYoZGF0YSwgInNlbGVjdC9wb2xsIG9uIFNTTCBzb2NrZXQsIGVycm5vOiAlZCIsIFNPQ0tFUlJOTyk7Ci0gICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoMCA9PSB3aGF0KSB7Ci0gICAgICAgIGlmKG5vbmJsb2NraW5nKSB7Ci0gICAgICAgICAgKmRvbmUgPSBGQUxTRTsKLSAgICAgICAgICByZXR1cm4gQ1VSTEVfT0s7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgLyogdGltZW91dCAqLwotICAgICAgICAgIGZhaWxmKGRhdGEsICJTU0wgY29ubmVjdGlvbiB0aW1lb3V0Iik7Ci0gICAgICAgICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgLyogc29ja2V0IGlzIHJlYWRhYmxlIG9yIHdyaXRhYmxlICovCi0gICAgfQotCi0gICAgLyogUnVuIHRyYW5zYWN0aW9uLCBhbmQgcmV0dXJuIHRvIHRoZSBjYWxsZXIgaWYgaXQgZmFpbGVkIG9yIGlmCi0gICAgICogdGhpcyBjb25uZWN0aW9uIGlzIHBhcnQgb2YgYSBtdWx0aSBoYW5kbGUgYW5kIHRoaXMgbG9vcCB3b3VsZAotICAgICAqIGV4ZWN1dGUgYWdhaW4uIFRoaXMgcGVybWl0cyB0aGUgb3duZXIgb2YgYSBtdWx0aSBoYW5kbGUgdG8KLSAgICAgKiBhYm9ydCBhIGNvbm5lY3Rpb24gYXR0ZW1wdCBiZWZvcmUgc3RlcDIgaGFzIGNvbXBsZXRlZCB3aGlsZQotICAgICAqIGVuc3VyaW5nIHRoYXQgYSBjbGllbnQgdXNpbmcgc2VsZWN0KCkgb3IgZXBvbGwoKSB3aWxsIGFsd2F5cwotICAgICAqIGhhdmUgYSB2YWxpZCBmZHNldCB0byB3YWl0IG9uLgotICAgICAqLwotICAgIHJlc3VsdCA9IHBvbGFyc3NsX2Nvbm5lY3Rfc3RlcDIoY29ubiwgc29ja2luZGV4KTsKLSAgICBpZihyZXN1bHQgfHwgKG5vbmJsb2NraW5nICYmCi0gICAgICAgICAgICAgICAgICAoc3NsX2Nvbm5lY3RfMiA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlIHx8Ci0gICAgICAgICAgICAgICAgICAgc3NsX2Nvbm5lY3RfMl9yZWFkaW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKLSAgICAgICAgICAgICAgICAgICBzc2xfY29ubmVjdF8yX3dyaXRpbmcgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSkpKQotICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICB9IC8qIHJlcGVhdCBzdGVwMiB1bnRpbCBhbGwgdHJhbnNhY3Rpb25zIGFyZSBkb25lLiAqLwotCi0gIGlmKHNzbF9jb25uZWN0XzMgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSkgewotICAgIHJlc3VsdCA9IHBvbGFyc3NsX2Nvbm5lY3Rfc3RlcDMoY29ubiwgc29ja2luZGV4KTsKLSAgICBpZihyZXN1bHQpCi0gICAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgaWYoc3NsX2Nvbm5lY3RfZG9uZSA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKSB7Ci0gICAgY29ubnNzbC0+c3RhdGUgPSBzc2xfY29ubmVjdGlvbl9jb21wbGV0ZTsKLSAgICBjb25uLT5yZWN2W3NvY2tpbmRleF0gPSBwb2xhcnNzbF9yZWN2OwotICAgIGNvbm4tPnNlbmRbc29ja2luZGV4XSA9IHBvbGFyc3NsX3NlbmQ7Ci0gICAgKmRvbmUgPSBUUlVFOwotICB9Ci0gIGVsc2UKLSAgICAqZG9uZSA9IEZBTFNFOwotCi0gIC8qIFJlc2V0IG91ciBjb25uZWN0IHN0YXRlIG1hY2hpbmUgKi8KLSAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9IHNzbF9jb25uZWN0XzE7Ci0KLSAgcmV0dXJuIENVUkxFX09LOwotfQotCi1zdGF0aWMgQ1VSTGNvZGUgQ3VybF9wb2xhcnNzbF9jb25uZWN0X25vbmJsb2NraW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwgYm9vbCAqZG9uZSkKLXsKLSAgcmV0dXJuIHBvbGFyc3NsX2Nvbm5lY3RfY29tbW9uKGNvbm4sIHNvY2tpbmRleCwgVFJVRSwgZG9uZSk7Ci19Ci0KLQotc3RhdGljIENVUkxjb2RlIEN1cmxfcG9sYXJzc2xfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgpCi17Ci0gIENVUkxjb2RlIHJlc3VsdDsKLSAgYm9vbCBkb25lID0gRkFMU0U7Ci0KLSAgcmVzdWx0ID0gcG9sYXJzc2xfY29ubmVjdF9jb21tb24oY29ubiwgc29ja2luZGV4LCBGQUxTRSwgJmRvbmUpOwotICBpZihyZXN1bHQpCi0gICAgcmV0dXJuIHJlc3VsdDsKLQotICBERUJVR0FTU0VSVChkb25lKTsKLQotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLS8qCi0gKiByZXR1cm4gMCBlcnJvciBpbml0aWFsaXppbmcgU1NMCi0gKiByZXR1cm4gMSBTU0wgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5Ci0gKi8KLXN0YXRpYyBpbnQgQ3VybF9wb2xhcnNzbF9pbml0KHZvaWQpCi17Ci0gIHJldHVybiBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfc2V0dXAoKTsKLX0KLQotc3RhdGljIHZvaWQgQ3VybF9wb2xhcnNzbF9jbGVhbnVwKHZvaWQpCi17Ci0gICh2b2lkKUN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKCk7Ci19Ci0KLXN0YXRpYyBib29sIEN1cmxfcG9sYXJzc2xfZGF0YV9wZW5kaW5nKGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgpCi17Ci0gIGNvbnN0IHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOwotICByZXR1cm4gc3NsX2dldF9ieXRlc19hdmFpbCgmQkFDS0VORC0+c3NsKSAhPSAwOwotfQotCi1zdGF0aWMgQ1VSTGNvZGUgQ3VybF9wb2xhcnNzbF9zaGEyNTZzdW0oY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzaGEyNTZzdW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2hhMjU2bGVuIFVOVVNFRF9QQVJBTSkKLXsKLSAgKHZvaWQpc2hhMjU2bGVuOwotICBzaGEyNTYoaW5wdXQsIGlucHV0bGVuLCBzaGEyNTZzdW0sIDApOwotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLXN0YXRpYyB2b2lkICpDdXJsX3BvbGFyc3NsX2dldF9pbnRlcm5hbHMoc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxJTkZPIGluZm8gVU5VU0VEX1BBUkFNKQotewotICAodm9pZClpbmZvOwotICByZXR1cm4gJkJBQ0tFTkQtPnNzbDsKLX0KLQotY29uc3Qgc3RydWN0IEN1cmxfc3NsIEN1cmxfc3NsX3BvbGFyc3NsID0gewotICB7IENVUkxTU0xCQUNLRU5EX1BPTEFSU1NMLCAicG9sYXJzc2wiIH0sIC8qIGluZm8gKi8KLQotICBTU0xTVVBQX0NBX1BBVEggfAotICBTU0xTVVBQX1BJTk5FRFBVQktFWSwKLQotICBzaXplb2Yoc3RydWN0IHNzbF9iYWNrZW5kX2RhdGEpLAotCi0gIEN1cmxfcG9sYXJzc2xfaW5pdCwgICAgICAgICAgICAgICAgLyogaW5pdCAqLwotICBDdXJsX3BvbGFyc3NsX2NsZWFudXAsICAgICAgICAgICAgIC8qIGNsZWFudXAgKi8KLSAgQ3VybF9wb2xhcnNzbF92ZXJzaW9uLCAgICAgICAgICAgICAvKiB2ZXJzaW9uICovCi0gIEN1cmxfbm9uZV9jaGVja19jeG4sICAgICAgICAgICAgICAgLyogY2hlY2tfY3huICovCi0gIEN1cmxfbm9uZV9zaHV0ZG93biwgICAgICAgICAgICAgICAgLyogc2h1dGRvd24gKi8KLSAgQ3VybF9wb2xhcnNzbF9kYXRhX3BlbmRpbmcsICAgICAgICAvKiBkYXRhX3BlbmRpbmcgKi8KLSAgLyogVGhpcyBtaWdodCBjYXVzZSBsaWJjdXJsIHRvIHVzZSBhIHdlZWtlciByYW5kb20hICovCi0gIEN1cmxfbm9uZV9yYW5kb20sICAgICAgICAgICAgICAgICAgLyogcmFuZG9tICovCi0gIEN1cmxfbm9uZV9jZXJ0X3N0YXR1c19yZXF1ZXN0LCAgICAgLyogY2VydF9zdGF0dXNfcmVxdWVzdCAqLwotICBDdXJsX3BvbGFyc3NsX2Nvbm5lY3QsICAgICAgICAgICAgIC8qIGNvbm5lY3QgKi8KLSAgQ3VybF9wb2xhcnNzbF9jb25uZWN0X25vbmJsb2NraW5nLCAvKiBjb25uZWN0X25vbmJsb2NraW5nICovCi0gIEN1cmxfcG9sYXJzc2xfZ2V0X2ludGVybmFscywgICAgICAgLyogZ2V0X2ludGVybmFscyAqLwotICBDdXJsX3BvbGFyc3NsX2Nsb3NlLCAgICAgICAgICAgICAgIC8qIGNsb3NlX29uZSAqLwotICBDdXJsX25vbmVfY2xvc2VfYWxsLCAgICAgICAgICAgICAgIC8qIGNsb3NlX2FsbCAqLwotICBDdXJsX3BvbGFyc3NsX3Nlc3Npb25fZnJlZSwgICAgICAgIC8qIHNlc3Npb25fZnJlZSAqLwotICBDdXJsX25vbmVfc2V0X2VuZ2luZSwgICAgICAgICAgICAgIC8qIHNldF9lbmdpbmUgKi8KLSAgQ3VybF9ub25lX3NldF9lbmdpbmVfZGVmYXVsdCwgICAgICAvKiBzZXRfZW5naW5lX2RlZmF1bHQgKi8KLSAgQ3VybF9ub25lX2VuZ2luZXNfbGlzdCwgICAgICAgICAgICAvKiBlbmdpbmVzX2xpc3QgKi8KLSAgQ3VybF9ub25lX2ZhbHNlX3N0YXJ0LCAgICAgICAgICAgICAvKiBmYWxzZV9zdGFydCAqLwotICBDdXJsX25vbmVfbWQ1c3VtLCAgICAgICAgICAgICAgICAgIC8qIG1kNXN1bSAqLwotICBDdXJsX3BvbGFyc3NsX3NoYTI1NnN1bSAgICAgICAgICAgIC8qIHNoYTI1NnN1bSAqLwotfTsKLQotI2VuZGlmIC8qIFVTRV9QT0xBUlNTTCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9wb2xhcnNzbC5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9wb2xhcnNzbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2MzNjM2Li4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvcG9sYXJzc2wuaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLSNpZm5kZWYgSEVBREVSX0NVUkxfUE9MQVJTU0xfSAotI2RlZmluZSBIRUFERVJfQ1VSTF9QT0xBUlNTTF9ICi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCi0gKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBIb2ktSG8gQ2hhbiwgPGhvaWhvLmNoYW5AZ21haWwuY29tPgotICoKLSAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCi0gKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KLSAqCi0gKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jaW5jbHVkZSAiY3VybF9zZXR1cC5oIgotCi0jaWZkZWYgVVNFX1BPTEFSU1NMCi0KLWV4dGVybiBjb25zdCBzdHJ1Y3QgQ3VybF9zc2wgQ3VybF9zc2xfcG9sYXJzc2w7Ci0KLSNlbmRpZiAvKiBVU0VfUE9MQVJTU0wgKi8KLSNlbmRpZiAvKiBIRUFERVJfQ1VSTF9QT0xBUlNTTF9IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL3BvbGFyc3NsX3RocmVhZGxvY2suYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvcG9sYXJzc2xfdGhyZWFkbG9jay5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2M5NGIxLi4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvcG9sYXJzc2xfdGhyZWFkbG9jay5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KLSAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAotICoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCBIb2ktSG8gQ2hhbiwgPGhvaWhvLmNoYW5AZ21haWwuY29tPgotICoKLSAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCi0gKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KLSAqCi0gKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jaW5jbHVkZSAiY3VybF9zZXR1cC5oIgotCi0jaWYgKGRlZmluZWQoVVNFX1BPTEFSU1NMKSB8fCBkZWZpbmVkKFVTRV9NQkVEVExTKSkgJiYgXAotICAgICgoZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkgJiYgZGVmaW5lZChIQVZFX1BUSFJFQURfSCkpIHx8IFwKLSAgICAgKGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpICYmIGRlZmluZWQoSEFWRV9QUk9DRVNTX0gpKSkKLQotI2lmIGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpICYmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0gpCi0jICBpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jICBkZWZpbmUgUE9MQVJTU0xfTVVURVhfVCBwdGhyZWFkX211dGV4X3QKLSNlbGlmIGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpICYmIGRlZmluZWQoSEFWRV9QUk9DRVNTX0gpCi0jICBpbmNsdWRlIDxwcm9jZXNzLmg+Ci0jICBkZWZpbmUgUE9MQVJTU0xfTVVURVhfVCBIQU5ETEUKLSNlbmRpZgotCi0jaW5jbHVkZSAicG9sYXJzc2xfdGhyZWFkbG9jay5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0jaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwotI2luY2x1ZGUgIm1lbWRlYnVnLmgiCi0KLS8qIG51bWJlciBvZiB0aHJlYWQgbG9ja3MgKi8KLSNkZWZpbmUgTlVNVCAgICAgICAgICAgICAgICAgICAgMgotCi0vKiBUaGlzIGFycmF5IHdpbGwgc3RvcmUgYWxsIG9mIHRoZSBtdXRleGVzIGF2YWlsYWJsZSB0byBQb2xhclNTTC4gKi8KLXN0YXRpYyBQT0xBUlNTTF9NVVRFWF9UICptdXRleF9idWYgPSBOVUxMOwotCi1pbnQgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX3NldHVwKHZvaWQpCi17Ci0gIGludCBpOwotCi0gIG11dGV4X2J1ZiA9IGNhbGxvYyhOVU1UICogc2l6ZW9mKFBPTEFSU1NMX01VVEVYX1QpLCAxKTsKLSAgaWYoIW11dGV4X2J1ZikKLSAgICByZXR1cm4gMDsgICAgIC8qIGVycm9yLCBubyBudW1iZXIgb2YgdGhyZWFkcyBkZWZpbmVkICovCi0KLSAgZm9yKGkgPSAwOyAgaSA8IE5VTVQ7ICBpKyspIHsKLSAgICBpbnQgcmV0OwotI2lmIGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpICYmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0gpCi0gICAgcmV0ID0gcHRocmVhZF9tdXRleF9pbml0KCZtdXRleF9idWZbaV0sIE5VTEwpOwotICAgIGlmKHJldCkKLSAgICAgIHJldHVybiAwOyAvKiBwdGhyZWFkX211dGV4X2luaXQgZmFpbGVkICovCi0jZWxpZiBkZWZpbmVkKFVTRV9USFJFQURTX1dJTjMyKSAmJiBkZWZpbmVkKEhBVkVfUFJPQ0VTU19IKQotICAgIG11dGV4X2J1ZltpXSA9IENyZWF0ZU11dGV4KDAsIEZBTFNFLCAwKTsKLSAgICBpZihtdXRleF9idWZbaV0gPT0gMCkKLSAgICAgIHJldHVybiAwOyAgLyogQ3JlYXRlTXV0ZXggZmFpbGVkICovCi0jZW5kaWYgLyogVVNFX1RIUkVBRFNfUE9TSVggJiYgSEFWRV9QVEhSRUFEX0ggKi8KLSAgfQotCi0gIHJldHVybiAxOyAvKiBPSyAqLwotfQotCi1pbnQgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX2NsZWFudXAodm9pZCkKLXsKLSAgaW50IGk7Ci0KLSAgaWYoIW11dGV4X2J1ZikKLSAgICByZXR1cm4gMDsgLyogZXJyb3IsIG5vIHRocmVhZHMgbG9ja3MgZGVmaW5lZCAqLwotCi0gIGZvcihpID0gMDsgaSA8IE5VTVQ7IGkrKykgewotICAgIGludCByZXQ7Ci0jaWYgZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkgJiYgZGVmaW5lZChIQVZFX1BUSFJFQURfSCkKLSAgICByZXQgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4X2J1ZltpXSk7Ci0gICAgaWYocmV0KQotICAgICAgcmV0dXJuIDA7IC8qIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSBmYWlsZWQgKi8KLSNlbGlmIGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpICYmIGRlZmluZWQoSEFWRV9QUk9DRVNTX0gpCi0gICAgcmV0ID0gQ2xvc2VIYW5kbGUobXV0ZXhfYnVmW2ldKTsKLSAgICBpZighcmV0KQotICAgICAgcmV0dXJuIDA7IC8qIENsb3NlSGFuZGxlIGZhaWxlZCAqLwotI2VuZGlmIC8qIFVTRV9USFJFQURTX1BPU0lYICYmIEhBVkVfUFRIUkVBRF9IICovCi0gIH0KLSAgZnJlZShtdXRleF9idWYpOwotICBtdXRleF9idWYgPSBOVUxMOwotCi0gIHJldHVybiAxOyAvKiBPSyAqLwotfQotCi1pbnQgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbihpbnQgbikKLXsKLSAgaWYobiA8IE5VTVQpIHsKLSAgICBpbnQgcmV0OwotI2lmIGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpICYmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0gpCi0gICAgcmV0ID0gcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleF9idWZbbl0pOwotICAgIGlmKHJldCkgewotICAgICAgREVCVUdGKGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAgIkVycm9yOiBwb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbiBmYWlsZWRcbiIpKTsKLSAgICAgIHJldHVybiAwOyAvKiBwdGhyZWFkX211dGV4X2xvY2sgZmFpbGVkICovCi0gICAgfQotI2VsaWYgZGVmaW5lZChVU0VfVEhSRUFEU19XSU4zMikgJiYgZGVmaW5lZChIQVZFX1BST0NFU1NfSCkKLSAgICByZXQgPSAoV2FpdEZvclNpbmdsZU9iamVjdChtdXRleF9idWZbbl0sIElORklOSVRFKSA9PSBXQUlUX0ZBSUxFRD8xOjApOwotICAgIGlmKHJldCkgewotICAgICAgREVCVUdGKGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAgIkVycm9yOiBwb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbiBmYWlsZWRcbiIpKTsKLSAgICAgIHJldHVybiAwOyAvKiBwdGhyZWFkX211dGV4X2xvY2sgZmFpbGVkICovCi0gICAgfQotI2VuZGlmIC8qIFVTRV9USFJFQURTX1BPU0lYICYmIEhBVkVfUFRIUkVBRF9IICovCi0gIH0KLSAgcmV0dXJuIDE7IC8qIE9LICovCi19Ci0KLWludCBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja191bmxvY2tfZnVuY3Rpb24oaW50IG4pCi17Ci0gIGlmKG4gPCBOVU1UKSB7Ci0gICAgaW50IHJldDsKLSNpZiBkZWZpbmVkKFVTRV9USFJFQURTX1BPU0lYKSAmJiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9IKQotICAgIHJldCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleF9idWZbbl0pOwotICAgIGlmKHJldCkgewotICAgICAgREVCVUdGKGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAgIkVycm9yOiBwb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uIGZhaWxlZFxuIikpOwotICAgICAgcmV0dXJuIDA7IC8qIHB0aHJlYWRfbXV0ZXhfdW5sb2NrIGZhaWxlZCAqLwotICAgIH0KLSNlbGlmIGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpICYmIGRlZmluZWQoSEFWRV9QUk9DRVNTX0gpCi0gICAgcmV0ID0gUmVsZWFzZU11dGV4KG11dGV4X2J1ZltuXSk7Ci0gICAgaWYoIXJldCkgewotICAgICAgREVCVUdGKGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAgIkVycm9yOiBwb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uIGZhaWxlZFxuIikpOwotICAgICAgcmV0dXJuIDA7IC8qIHB0aHJlYWRfbXV0ZXhfbG9jayBmYWlsZWQgKi8KLSAgICB9Ci0jZW5kaWYgLyogVVNFX1RIUkVBRFNfUE9TSVggJiYgSEFWRV9QVEhSRUFEX0ggKi8KLSAgfQotICByZXR1cm4gMTsgLyogT0sgKi8KLX0KLQotI2VuZGlmIC8qIFVTRV9QT0xBUlNTTCB8fCBVU0VfTUJFRFRMUyAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9wb2xhcnNzbF90aHJlYWRsb2NrLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL3BvbGFyc3NsX3RocmVhZGxvY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIyNjQ3NS4uMDAwMDAwMAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL3BvbGFyc3NsX3RocmVhZGxvY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLSNpZm5kZWYgSEVBREVSX0NVUkxfUE9MQVJTU0xfVEhSRUFETE9DS19ICi0jZGVmaW5lIEhFQURFUl9DVVJMX1BPTEFSU1NMX1RIUkVBRExPQ0tfSAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwotICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0gKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEhvaS1IbyBDaGFuLCA8aG9paG8uY2hhbkBnbWFpbC5jb20+Ci0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKLSAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgotICoKLSAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAotICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgotICoKLSAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKLSAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSNpbmNsdWRlICJjdXJsX3NldHVwLmgiCi0KLSNpZiAoZGVmaW5lZCBVU0VfUE9MQVJTU0wpIHx8IChkZWZpbmVkIFVTRV9NQkVEVExTKQotCi0jaWYgKGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpICYmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0gpKSB8fCBcCi0gICAgKGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpICYmIGRlZmluZWQoSEFWRV9QUk9DRVNTX0gpKQotCi1pbnQgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX3NldHVwKHZvaWQpOwotaW50IEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKHZvaWQpOwotaW50IEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24oaW50IG4pOwotaW50IEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbihpbnQgbik7Ci0KLSNlbHNlCi0KLSNkZWZpbmUgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX3NldHVwKCkgMQotI2RlZmluZSBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfY2xlYW51cCgpIDEKLSNkZWZpbmUgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbih4KSAxCi0jZGVmaW5lIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbih4KSAxCi0KLSNlbmRpZiAvKiBVU0VfVEhSRUFEU19QT1NJWCB8fCBVU0VfVEhSRUFEU19XSU4zMiAqLwotCi0jZW5kaWYgLyogVVNFX1BPTEFSU1NMICovCi0KLSNlbmRpZiAvKiBIRUFERVJfQ1VSTF9QT0xBUlNTTF9USFJFQURMT0NLX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvc2NoYW5uZWwuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvc2NoYW5uZWwuYwppbmRleCAwZjZmNzM0Li4wODE4ZDk0IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL3NjaGFubmVsLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9zY2hhbm5lbC5jCkBAIC03LDcgKzcsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTYsIE1hcmMgSG9lcnNrZW4sIDxpbmZvQG1hcmMtaG9lcnNrZW4uZGU+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIE1hcmsgU2FsaXNidXJ5LCA8bWFyay5zYWxpc2J1cnlAaHAuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTU1NCwxMCArNTU0LDYgQEAKICAgICBzd2l0Y2goY29ubi0+c3NsX2NvbmZpZy52ZXJzaW9uKSB7CiAgICAgY2FzZSBDVVJMX1NTTFZFUlNJT05fREVGQVVMVDoKICAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MToKLSAgICAgIHNjaGFubmVsX2NyZWQuZ3JiaXRFbmFibGVkUHJvdG9jb2xzID0gU1BfUFJPVF9UTFMxXzBfQ0xJRU5UIHwKLSAgICAgICAgU1BfUFJPVF9UTFMxXzFfQ0xJRU5UIHwKLSAgICAgICAgU1BfUFJPVF9UTFMxXzJfQ0xJRU5UOwotICAgICAgYnJlYWs7CiAgICAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjFfMDoKICAgICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8xOgogICAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzI6CkBAIC03MjIsNyArNzE4LDcgQEAKICAgICB1bnNpZ25lZCBzaG9ydCogbGlzdF9sZW4gPSBOVUxMOwogCiAgICAgLyogVGhlIGZpcnN0IGZvdXIgYnl0ZXMgd2lsbCBiZSBhbiB1bnNpZ25lZCBpbnQgaW5kaWNhdGluZyBudW1iZXIKLSAgICAgICBvZiBieXRlcyBvZiBkYXRhIGluIHRoZSByZXN0IG9mIHRoZSB0aGUgYnVmZmVyLiAqLworICAgICAgIG9mIGJ5dGVzIG9mIGRhdGEgaW4gdGhlIHJlc3Qgb2YgdGhlIGJ1ZmZlci4gKi8KICAgICBleHRlbnNpb25fbGVuID0gKHVuc2lnbmVkIGludCAqKSgmYWxwbl9idWZmZXJbY3VyXSk7CiAgICAgY3VyICs9IHNpemVvZih1bnNpZ25lZCBpbnQpOwogCkBAIC0xMTgxLDYgKzExNzcsNyBAQAogICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm47CiAgIENVUkxjb2RlIHJlc3VsdDsKICAgaW50IGlkeDsKKyAgaW50IGNlcnRzX2NvdW50OwogfTsKIAogc3RhdGljIGJvb2wKQEAgLTExOTEsNyArMTE4OCw5IEBACiAgIGlmKHZhbGlkX2NlcnRfZW5jb2RpbmcoY2NlcnRfY29udGV4dCkpIHsKICAgICBjb25zdCBjaGFyICpiZWcgPSAoY29uc3QgY2hhciAqKSBjY2VydF9jb250ZXh0LT5wYkNlcnRFbmNvZGVkOwogICAgIGNvbnN0IGNoYXIgKmVuZCA9IGJlZyArIGNjZXJ0X2NvbnRleHQtPmNiQ2VydEVuY29kZWQ7Ci0gICAgYXJncy0+cmVzdWx0ID0gQ3VybF9leHRyYWN0X2NlcnRpbmZvKGFyZ3MtPmNvbm4sIChhcmdzLT5pZHgpKyssIGJlZywgZW5kKTsKKyAgICBpbnQgaW5zZXJ0X2luZGV4ID0gKGFyZ3MtPmNlcnRzX2NvdW50IC0gMSkgLSBhcmdzLT5pZHg7CisgICAgYXJncy0+cmVzdWx0ID0gQ3VybF9leHRyYWN0X2NlcnRpbmZvKGFyZ3MtPmNvbm4sIGluc2VydF9pbmRleCwgYmVnLCBlbmQpOworICAgIGFyZ3MtPmlkeCsrOwogICB9CiAgIHJldHVybiBhcmdzLT5yZXN1bHQgPT0gQ1VSTEVfT0s7CiB9CkBAIC0xMzI2LDYgKzEzMjUsNyBAQAogICAgICAgc3RydWN0IEFkZGVyX2FyZ3MgYXJnczsKICAgICAgIGFyZ3MuY29ubiA9IGNvbm47CiAgICAgICBhcmdzLmlkeCA9IDA7CisgICAgICBhcmdzLmNlcnRzX2NvdW50ID0gY2VydHNfY291bnQ7CiAgICAgICB0cmF2ZXJzZV9jZXJ0X3N0b3JlKGNjZXJ0X2NvbnRleHQsIGFkZF9jZXJ0X3RvX2NlcnRpbmZvLCAmYXJncyk7CiAgICAgICByZXN1bHQgPSBhcmdzLnJlc3VsdDsKICAgICB9CkBAIC0xMzQ3LDcgKzEzNDcsNyBAQAogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKICAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07CiAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tzb2NraW5kZXhdOwotICB0aW1lX3QgdGltZW91dF9tczsKKyAgdGltZWRpZmZfdCB0aW1lb3V0X21zOwogICBpbnQgd2hhdDsKIAogICAvKiBjaGVjayBpZiB0aGUgY29ubmVjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIGVzdGFibGlzaGVkICovCkBAIC0xMzk0LDcgKzEzOTQsNyBAQAogICAgICAgICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID8gc29ja2ZkIDogQ1VSTF9TT0NLRVRfQkFEOwogCiAgICAgICB3aGF0ID0gQ3VybF9zb2NrZXRfY2hlY2socmVhZGZkLCBDVVJMX1NPQ0tFVF9CQUQsIHdyaXRlZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uYmxvY2tpbmcgPyAwIDogdGltZW91dF9tcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uYmxvY2tpbmcgPyAwIDogKHRpbWVfdCl0aW1lb3V0X21zKTsKICAgICAgIGlmKHdoYXQgPCAwKSB7CiAgICAgICAgIC8qIGZhdGFsIGVycm9yICovCiAgICAgICAgIGZhaWxmKGRhdGEsICJzZWxlY3QvcG9sbCBvbiBTU0wvVExTIHNvY2tldCwgZXJybm86ICVkIiwgU09DS0VSUk5PKTsKQEAgLTE1NDQsNyArMTU0NCw3IEBACiAgICAgLyogc2VuZCBlbnRpcmUgbWVzc2FnZSBvciBmYWlsICovCiAgICAgd2hpbGUobGVuID4gKHNpemVfdCl3cml0dGVuKSB7CiAgICAgICBzc2l6ZV90IHRoaXNfd3JpdGU7Ci0gICAgICB0aW1lX3QgdGltZWxlZnQ7CisgICAgICB0aW1lZGlmZl90IHRpbWVsZWZ0OwogICAgICAgaW50IHdoYXQ7CiAKICAgICAgIHRoaXNfd3JpdGUgPSAwOwpAQCAtMTg1NSw3ICsxODU1LDkgQEAKICAgICAgIGdvdG8gY2xlYW51cDsKICAgICB9CiAgICAgZWxzZSB7CisjaWZuZGVmIENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MKICAgICAgIGNoYXIgYnVmZmVyW1NUUkVSUk9SX0xFTl07CisjZW5kaWYKICAgICAgICplcnIgPSBDVVJMRV9SRUNWX0VSUk9SOwogICAgICAgaW5mb2YoZGF0YSwgInNjaGFubmVsOiBmYWlsZWQgdG8gcmVhZCBkYXRhIGZyb20gc2VydmVyOiAlc1xuIiwKICAgICAgICAgICAgIEN1cmxfc3NwaV9zdHJlcnJvcihzc3BpX3N0YXR1cywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9zY2hhbm5lbF92ZXJpZnkuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvc2NoYW5uZWxfdmVyaWZ5LmMKaW5kZXggNWEwOWU5Ni4uZTc1MTMyYyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9zY2hhbm5lbF92ZXJpZnkuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL3NjaGFubmVsX3ZlcmlmeS5jCkBAIC03LDcgKzcsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTYsIE1hcmMgSG9lcnNrZW4sIDxpbmZvQG1hcmMtaG9lcnNrZW4uZGU+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIE1hcmsgU2FsaXNidXJ5LCA8bWFyay5zYWxpc2J1cnlAaHAuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxOSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTk5LDcgKzk5LDggQEAKICAgICBjaGFyIGJ1ZmZlcltTVFJFUlJPUl9MRU5dOwogICAgIGZhaWxmKGRhdGEsCiAgICAgICAgICAgInNjaGFubmVsOiBpbnZhbGlkIHBhdGggbmFtZSBmb3IgQ0EgZmlsZSAnJXMnOiAlcyIsCi0gICAgICAgICAgY2FfZmlsZSwgQ3VybF9zdHJlcnJvcihHZXRMYXN0RXJyb3IoKSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOworICAgICAgICAgIGNhX2ZpbGUsCisgICAgICAgICAgQ3VybF93aW5hcGlfc3RyZXJyb3IoR2V0TGFzdEVycm9yKCksIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKTsKICAgICByZXN1bHQgPSBDVVJMRV9TU0xfQ0FDRVJUX0JBREZJTEU7CiAgICAgZ290byBjbGVhbnVwOwogICB9CkBAIC0xMTEsNyArMTEyLDcgQEAKICAgICovCiAgIGNhX2ZpbGVfaGFuZGxlID0gQ3JlYXRlRmlsZShjYV9maWxlX3RzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRU5FUklDX1JFQUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9TSEFSRV9SRUFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QRU5fRVhJU1RJTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUwsCkBAIC0xMjAsNyArMTIxLDggQEAKICAgICBjaGFyIGJ1ZmZlcltTVFJFUlJPUl9MRU5dOwogICAgIGZhaWxmKGRhdGEsCiAgICAgICAgICAgInNjaGFubmVsOiBmYWlsZWQgdG8gb3BlbiBDQSBmaWxlICclcyc6ICVzIiwKLSAgICAgICAgICBjYV9maWxlLCBDdXJsX3N0cmVycm9yKEdldExhc3RFcnJvcigpLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CisgICAgICAgICAgY2FfZmlsZSwKKyAgICAgICAgICBDdXJsX3dpbmFwaV9zdHJlcnJvcihHZXRMYXN0RXJyb3IoKSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOwogICAgIHJlc3VsdCA9IENVUkxFX1NTTF9DQUNFUlRfQkFERklMRTsKICAgICBnb3RvIGNsZWFudXA7CiAgIH0KQEAgLTEyOSw3ICsxMzEsOCBAQAogICAgIGNoYXIgYnVmZmVyW1NUUkVSUk9SX0xFTl07CiAgICAgZmFpbGYoZGF0YSwKICAgICAgICAgICAic2NoYW5uZWw6IGZhaWxlZCB0byBkZXRlcm1pbmUgc2l6ZSBvZiBDQSBmaWxlICclcyc6ICVzIiwKLSAgICAgICAgICBjYV9maWxlLCBDdXJsX3N0cmVycm9yKEdldExhc3RFcnJvcigpLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CisgICAgICAgICAgY2FfZmlsZSwKKyAgICAgICAgICBDdXJsX3dpbmFwaV9zdHJlcnJvcihHZXRMYXN0RXJyb3IoKSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOwogICAgIHJlc3VsdCA9IENVUkxFX1NTTF9DQUNFUlRfQkFERklMRTsKICAgICBnb3RvIGNsZWFudXA7CiAgIH0KQEAgLTE1OSw3ICsxNjIsOCBAQAogICAgICAgY2hhciBidWZmZXJbU1RSRVJST1JfTEVOXTsKICAgICAgIGZhaWxmKGRhdGEsCiAgICAgICAgICAgICAic2NoYW5uZWw6IGZhaWxlZCB0byByZWFkIGZyb20gQ0EgZmlsZSAnJXMnOiAlcyIsCi0gICAgICAgICAgICBjYV9maWxlLCBDdXJsX3N0cmVycm9yKEdldExhc3RFcnJvcigpLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CisgICAgICAgICAgICBjYV9maWxlLAorICAgICAgICAgICAgQ3VybF93aW5hcGlfc3RyZXJyb3IoR2V0TGFzdEVycm9yKCksIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKTsKICAgICAgIHJlc3VsdCA9IENVUkxFX1NTTF9DQUNFUlRfQkFERklMRTsKICAgICAgIGdvdG8gY2xlYW51cDsKICAgICB9CkBAIC0yMjMsNyArMjI3LDcgQEAKICAgICAgICAgICAgICAgICAic2NoYW5uZWw6IGZhaWxlZCB0byBleHRyYWN0IGNlcnRpZmljYXRlIGZyb20gQ0EgZmlsZSAiCiAgICAgICAgICAgICAgICAgIiclcyc6ICVzIiwKICAgICAgICAgICAgICAgICBjYV9maWxlLAotICAgICAgICAgICAgICAgIEN1cmxfc3RyZXJyb3IoR2V0TGFzdEVycm9yKCksIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKTsKKyAgICAgICAgICAgICAgICBDdXJsX3dpbmFwaV9zdHJlcnJvcihHZXRMYXN0RXJyb3IoKSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOwogICAgICAgICAgIHJlc3VsdCA9IENVUkxFX1NTTF9DQUNFUlRfQkFERklMRTsKICAgICAgICAgICBtb3JlX2NlcnRzID0gMDsKICAgICAgICAgfQpAQCAtMjUyLDcgKzI1Niw4IEBACiAgICAgICAgICAgICAgICAgICAgICJzY2hhbm5lbDogZmFpbGVkIHRvIGFkZCBjZXJ0aWZpY2F0ZSBmcm9tIENBIGZpbGUgJyVzJyAiCiAgICAgICAgICAgICAgICAgICAgICJ0byBjZXJ0aWZpY2F0ZSBzdG9yZTogJXMiLAogICAgICAgICAgICAgICAgICAgICBjYV9maWxlLAotICAgICAgICAgICAgICAgICAgICBDdXJsX3N0cmVycm9yKEdldExhc3RFcnJvcigpLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CisgICAgICAgICAgICAgICAgICAgIEN1cmxfd2luYXBpX3N0cmVycm9yKEdldExhc3RFcnJvcigpLCBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihidWZmZXIpKSk7CiAgICAgICAgICAgICAgIHJlc3VsdCA9IENVUkxFX1NTTF9DQUNFUlRfQkFERklMRTsKICAgICAgICAgICAgICAgbW9yZV9jZXJ0cyA9IDA7CiAgICAgICAgICAgICB9CkBAIC0yODgsNiArMjkzLDEzMyBAQAogICByZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgbmVjZXNzYXJ5IHRvIHBvcHVsYXRlIGFsbCB0aGUgaG9zdF9uYW1lcy4KKyAqIElmIGhvc3RfbmFtZXMgaXMgbm90IE5VTEwsIHBvcHVsYXRlIGl0IHdpdGggYWxsIHRoZSBob3N0IG5hbWVzLiBFYWNoIHN0cmluZworICogaW4gdGhlIGhvc3RfbmFtZXMgaXMgbnVsbC10ZXJtaW5hdGVkIGFuZCB0aGUgbGFzdCBzdHJpbmcgaXMgZG91YmxlCisgKiBudWxsLXRlcm1pbmF0ZWQuIElmIG5vIEROUyBuYW1lcyBhcmUgZm91bmQsIGEgc2luZ2xlIG51bGwtdGVybWluYXRlZCBlbXB0eQorICogc3RyaW5nIGlzIHJldHVybmVkLgorICovCitzdGF0aWMgRFdPUkQgY2VydF9nZXRfbmFtZV9zdHJpbmcoc3RydWN0IEN1cmxfZWFzeSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRVJUX0NPTlRFWFQgKmNlcnRfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFRTVFIgaG9zdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBsZW5ndGgpCit7CisgIERXT1JEIGFjdHVhbF9sZW5ndGggPSAwOworICBCT09MIGNvbXB1dGVfY29udGVudCA9IEZBTFNFOworICBDRVJUX0lORk8gKmNlcnRfaW5mbyA9IE5VTEw7CisgIENFUlRfRVhURU5TSU9OICpleHRlbnNpb24gPSBOVUxMOworICBDUllQVF9ERUNPREVfUEFSQSBkZWNvZGVfcGFyYSA9IHswLCAwLCAwfTsKKyAgQ0VSVF9BTFRfTkFNRV9JTkZPICphbHRfbmFtZV9pbmZvID0gTlVMTDsKKyAgRFdPUkQgYWx0X25hbWVfaW5mb19zaXplID0gMDsKKyAgQk9PTCByZXRfdmFsID0gRkFMU0U7CisgIExQVFNUUiBjdXJyZW50X3BvcyA9IE5VTEw7CisgIERXT1JEIGk7CisKKyAgLyogQ0VSVF9OQU1FX1NFQVJDSF9BTExfTkFNRVNfRkxBRyBpcyBhdmFpbGFibGUgZnJvbSBXaW5kb3dzIDggb253YXJkcy4gKi8KKyAgaWYoQ3VybF92ZXJpZnlfd2luZG93c192ZXJzaW9uKDYsIDIsIFBMQVRGT1JNX1dJTk5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSU0lPTl9HUkVBVEVSX1RIQU5fRVFVQUwpKSB7CisjaWZkZWYgQ0VSVF9OQU1FX1NFQVJDSF9BTExfTkFNRVNfRkxBRworICAgIC8qIENlcnRHZXROYW1lU3RyaW5nIHdpbGwgcHJvdmlkZSB0aGUgOC1iaXQgY2hhcmFjdGVyIHN0cmluZyB3aXRob3V0CisgICAgICogYW55IGRlY29kaW5nICovCisgICAgRFdPUkQgbmFtZV9mbGFncyA9CisgICAgICBDRVJUX05BTUVfRElTQUJMRV9JRTRfVVRGOF9GTEFHIHwgQ0VSVF9OQU1FX1NFQVJDSF9BTExfTkFNRVNfRkxBRzsKKyAgICBhY3R1YWxfbGVuZ3RoID0gQ2VydEdldE5hbWVTdHJpbmcoY2VydF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRVJUX05BTUVfRE5TX1RZUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCk7CisgICAgcmV0dXJuIGFjdHVhbF9sZW5ndGg7CisjZW5kaWYKKyAgfQorCisgIGNvbXB1dGVfY29udGVudCA9IGhvc3RfbmFtZXMgIT0gTlVMTCAmJiBsZW5ndGggIT0gMDsKKworICAvKiBJbml0aWFsaXplIGRlZmF1bHQgcmV0dXJuIHZhbHVlcy4gKi8KKyAgYWN0dWFsX2xlbmd0aCA9IDE7CisgIGlmKGNvbXB1dGVfY29udGVudCkgeworICAgICpob3N0X25hbWVzID0gJ1wwJzsKKyAgfQorCisgIGlmKCFjZXJ0X2NvbnRleHQpIHsKKyAgICBmYWlsZihkYXRhLCAic2NoYW5uZWw6IE51bGwgY2VydGlmaWNhdGUgY29udGV4dC4iKTsKKyAgICByZXR1cm4gYWN0dWFsX2xlbmd0aDsKKyAgfQorCisgIGNlcnRfaW5mbyA9IGNlcnRfY29udGV4dC0+cENlcnRJbmZvOworICBpZighY2VydF9pbmZvKSB7CisgICAgZmFpbGYoZGF0YSwgInNjaGFubmVsOiBOdWxsIGNlcnRpZmljYXRlIGluZm8uIik7CisgICAgcmV0dXJuIGFjdHVhbF9sZW5ndGg7CisgIH0KKworICBleHRlbnNpb24gPSBDZXJ0RmluZEV4dGVuc2lvbihzek9JRF9TVUJKRUNUX0FMVF9OQU1FMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9pbmZvLT5jRXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X2luZm8tPnJnRXh0ZW5zaW9uKTsKKyAgaWYoIWV4dGVuc2lvbikgeworICAgIGZhaWxmKGRhdGEsICJzY2hhbm5lbDogQ2VydEZpbmRFeHRlbnNpb24oKSByZXR1cm5lZCBubyBleHRlbnNpb24uIik7CisgICAgcmV0dXJuIGFjdHVhbF9sZW5ndGg7CisgIH0KKworICBkZWNvZGVfcGFyYS5jYlNpemUgID0gIHNpemVvZihDUllQVF9ERUNPREVfUEFSQSk7CisKKyAgcmV0X3ZhbCA9CisgICAgQ3J5cHREZWNvZGVPYmplY3RFeChYNTA5X0FTTl9FTkNPRElORyB8IFBLQ1NfN19BU05fRU5DT0RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICBzek9JRF9TVUJKRUNUX0FMVF9OQU1FMiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbi0+VmFsdWUucGJEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLT5WYWx1ZS5jYkRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBDUllQVF9ERUNPREVfQUxMT0NfRkxBRyB8IENSWVBUX0RFQ09ERV9OT0NPUFlfRkxBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICZkZWNvZGVfcGFyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZhbHRfbmFtZV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgJmFsdF9uYW1lX2luZm9fc2l6ZSk7CisgIGlmKCFyZXRfdmFsKSB7CisgICAgZmFpbGYoZGF0YSwKKyAgICAgICAgICAic2NoYW5uZWw6IENyeXB0RGVjb2RlT2JqZWN0RXgoKSByZXR1cm5lZCBubyBhbHRlcm5hdGUgbmFtZSAiCisgICAgICAgICAgImluZm9ybWF0aW9uLiIpOworICAgIHJldHVybiBhY3R1YWxfbGVuZ3RoOworICB9CisKKyAgY3VycmVudF9wb3MgPSBob3N0X25hbWVzOworCisgIC8qIEl0ZXJhdGUgb3ZlciB0aGUgYWx0ZXJuYXRlIG5hbWVzIGFuZCBwb3B1bGF0ZSBob3N0X25hbWVzLiAqLworICBmb3IoaSA9IDA7IGkgPCBhbHRfbmFtZV9pbmZvLT5jQWx0RW50cnk7IGkrKykgeworICAgIGNvbnN0IENFUlRfQUxUX05BTUVfRU5UUlkgKmVudHJ5ID0gJmFsdF9uYW1lX2luZm8tPnJnQWx0RW50cnlbaV07CisgICAgd2NoYXJfdCAqZG5zX3cgPSBOVUxMOworICAgIHNpemVfdCBjdXJyZW50X2xlbmd0aCA9IDA7CisKKyAgICBpZihlbnRyeS0+ZHdBbHROYW1lQ2hvaWNlICE9IENFUlRfQUxUX05BTUVfRE5TX05BTUUpIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBpZihlbnRyeS0+cHdzekROU05hbWUgPT0gTlVMTCkgeworICAgICAgaW5mb2YoZGF0YSwgInNjaGFubmVsOiBFbXB0eSBETlMgbmFtZS4iKTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBjdXJyZW50X2xlbmd0aCA9IHdjc2xlbihlbnRyeS0+cHdzekROU05hbWUpICsgMTsKKyAgICBpZighY29tcHV0ZV9jb250ZW50KSB7CisgICAgICBhY3R1YWxfbGVuZ3RoICs9IChEV09SRCljdXJyZW50X2xlbmd0aDsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICAvKiBTYW5pdHkgY2hlY2sgdG8gcHJldmVudCBidWZmZXIgb3ZlcnJ1bi4gKi8KKyAgICBpZigoYWN0dWFsX2xlbmd0aCArIGN1cnJlbnRfbGVuZ3RoKSA+IGxlbmd0aCkgeworICAgICAgZmFpbGYoZGF0YSwgInNjaGFubmVsOiBOb3QgZW5vdWdoIG1lbW9yeSB0byBsaXN0IGFsbCBob3N0IG5hbWVzLiIpOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGRuc193ID0gZW50cnktPnB3c3pETlNOYW1lOworICAgIC8qIHB3c3pETlNOYW1lIGlzIGluIGlhNSBzdHJpbmcgZm9ybWF0IGFuZCBoZW5jZSBkb2Vzbid0IGNvbnRhaW4gYW55CisgICAgICogbm9uLWFzY2lpIGNoYXJhY3RlcnMuICovCisgICAgd2hpbGUoKmRuc193ICE9ICdcMCcpIHsKKyAgICAgICpjdXJyZW50X3BvcysrID0gKGNoYXIpKCpkbnNfdysrKTsKKyAgICB9CisgICAgKmN1cnJlbnRfcG9zKysgPSAnXDAnOworICAgIGFjdHVhbF9sZW5ndGggKz0gKERXT1JEKWN1cnJlbnRfbGVuZ3RoOworICB9CisgIGlmKGNvbXB1dGVfY29udGVudCkgeworICAgIC8qIExhc3Qgc3RyaW5nIGhhcyBkb3VibGUgbnVsbC10ZXJtaW5hdG9yLiAqLworICAgICpjdXJyZW50X3BvcyA9ICdcMCc7CisgIH0KKyAgcmV0dXJuIGFjdHVhbF9sZW5ndGg7Cit9CisKIHN0YXRpYyBDVVJMY29kZSB2ZXJpZnlfaG9zdChzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFUlRfQ09OVEVYVCAqcENlcnRDb250ZXh0U2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCBjb25uX2hvc3RuYW1lKQpAQCAtMjk4LDIxICs0MzAsOCBAQAogICBEV09SRCBsZW4gPSAwOwogICBEV09SRCBhY3R1YWxfbGVuID0gMDsKIAotICAvKiBDZXJ0R2V0TmFtZVN0cmluZyB3aWxsIHByb3ZpZGUgdGhlIDgtYml0IGNoYXJhY3RlciBzdHJpbmcgd2l0aG91dAotICAgKiBhbnkgZGVjb2RpbmcgKi8KLSAgRFdPUkQgbmFtZV9mbGFncyA9IENFUlRfTkFNRV9ESVNBQkxFX0lFNF9VVEY4X0ZMQUc7Ci0KLSNpZmRlZiBDRVJUX05BTUVfU0VBUkNIX0FMTF9OQU1FU19GTEFHCi0gIG5hbWVfZmxhZ3MgfD0gQ0VSVF9OQU1FX1NFQVJDSF9BTExfTkFNRVNfRkxBRzsKLSNlbmRpZgotCiAgIC8qIERldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgc3RyaW5nIG5lZWRlZCBmb3IgdGhlIGNlcnQgaG9zdG5hbWUgKi8KLSAgbGVuID0gQ2VydEdldE5hbWVTdHJpbmcocENlcnRDb250ZXh0U2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBDRVJUX05BTUVfRE5TX1RZUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICBsZW4gPSBjZXJ0X2dldF9uYW1lX3N0cmluZyhkYXRhLCBwQ2VydENvbnRleHRTZXJ2ZXIsIE5VTEwsIDApOwogICBpZihsZW4gPT0gMCkgewogICAgIGZhaWxmKGRhdGEsCiAgICAgICAgICAgInNjaGFubmVsOiBDZXJ0R2V0TmFtZVN0cmluZygpIHJldHVybmVkIG5vICIKQEAgLTMyOSwxMiArNDQ4LDggQEAKICAgICByZXN1bHQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICAgIGdvdG8gY2xlYW51cDsKICAgfQotICBhY3R1YWxfbGVuID0gQ2VydEdldE5hbWVTdHJpbmcocENlcnRDb250ZXh0U2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VSVF9OQU1FX0ROU19UWVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9mbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTFBUU1RSKSBjZXJ0X2hvc3RuYW1lX2J1ZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4pOworICBhY3R1YWxfbGVuID0gY2VydF9nZXRfbmFtZV9zdHJpbmcoCisgICAgZGF0YSwgcENlcnRDb250ZXh0U2VydmVyLCAoTFBUU1RSKWNlcnRfaG9zdG5hbWVfYnVmZiwgbGVuKTsKIAogICAvKiBTYW5pdHkgY2hlY2sgKi8KICAgaWYoYWN0dWFsX2xlbiAhPSBsZW4pIHsKQEAgLTQ2MCw3ICs1NzUsNyBAQAogICAgICAgaWYoIXRydXN0X3N0b3JlKSB7CiAgICAgICAgIGNoYXIgYnVmZmVyW1NUUkVSUk9SX0xFTl07CiAgICAgICAgIGZhaWxmKGRhdGEsICJzY2hhbm5lbDogZmFpbGVkIHRvIGNyZWF0ZSBjZXJ0aWZpY2F0ZSBzdG9yZTogJXMiLAotICAgICAgICAgICAgICBDdXJsX3N0cmVycm9yKEdldExhc3RFcnJvcigpLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CisgICAgICAgICAgICAgIEN1cmxfd2luYXBpX3N0cmVycm9yKEdldExhc3RFcnJvcigpLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CiAgICAgICAgIHJlc3VsdCA9IENVUkxFX1NTTF9DQUNFUlRfQkFERklMRTsKICAgICAgIH0KICAgICAgIGVsc2UgewpAQCAtNDg5LDcgKzYwNCw3IEBACiAgICAgICAgIGNoYXIgYnVmZmVyW1NUUkVSUk9SX0xFTl07CiAgICAgICAgIGZhaWxmKGRhdGEsCiAgICAgICAgICAgICAgICJzY2hhbm5lbDogZmFpbGVkIHRvIGNyZWF0ZSBjZXJ0aWZpY2F0ZSBjaGFpbiBlbmdpbmU6ICVzIiwKLSAgICAgICAgICAgICAgQ3VybF9zdHJlcnJvcihHZXRMYXN0RXJyb3IoKSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOworICAgICAgICAgICAgICBDdXJsX3dpbmFwaV9zdHJlcnJvcihHZXRMYXN0RXJyb3IoKSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOwogICAgICAgICByZXN1bHQgPSBDVVJMRV9TU0xfQ0FDRVJUX0JBREZJTEU7CiAgICAgICB9CiAgICAgfQpAQCAtNTEyLDcgKzYyNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwQ2hhaW5Db250ZXh0KSkgewogICAgICAgY2hhciBidWZmZXJbU1RSRVJST1JfTEVOXTsKICAgICAgIGZhaWxmKGRhdGEsICJzY2hhbm5lbDogQ2VydEdldENlcnRpZmljYXRlQ2hhaW4gZmFpbGVkOiAlcyIsCi0gICAgICAgICAgICBDdXJsX3N0cmVycm9yKEdldExhc3RFcnJvcigpLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSk7CisgICAgICAgICAgICBDdXJsX3dpbmFwaV9zdHJlcnJvcihHZXRMYXN0RXJyb3IoKSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpOwogICAgICAgcENoYWluQ29udGV4dCA9IE5VTEw7CiAgICAgICByZXN1bHQgPSBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047CiAgICAgfQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9zZWN0cmFuc3AuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvc2VjdHJhbnNwLmMKaW5kZXggMmZkZjY2Mi4uN2RkMDI4ZiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy9zZWN0cmFuc3AuYworKysgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL3NlY3RyYW5zcC5jCkBAIC02LDcgKzYsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNywgTmljayBaaXR6bWFubiwgPG5pY2t6bWFuQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAyMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwpAQCAtNzksNyArNzksNyBAQAogLyogVGhlc2UgbWFjcm9zIG1lYW4gInRoZSBmb2xsb3dpbmcgY29kZSBpcyBwcmVzZW50IHRvIGFsbG93IHJ1bnRpbWUgYmFja3dhcmQKICAgIGNvbXBhdGliaWxpdHkgd2l0aCBhdCBsZWFzdCB0aGlzIGNhdCBvciBlYXJsaWVyIjoKICAgIChZb3Ugc2V0IHRoaXMgYXQgYnVpbGQtdGltZSB1c2luZyB0aGUgY29tcGlsZXIgY29tbWFuZCBsaW5lIG9wdGlvbgotICAgIi1tbWFjb3MtdmVyc2lvbi1taW4uIikgKi8KKyAgICItbW1hY29zeC12ZXJzaW9uLW1pbi4iKSAqLwogI2RlZmluZSBDVVJMX1NVUFBPUlRfTUFDXzEwXzUgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA1MAogI2RlZmluZSBDVVJMX1NVUFBPUlRfTUFDXzEwXzYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA2MAogI2RlZmluZSBDVVJMX1NVUFBPUlRfTUFDXzEwXzcgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA3MApAQCAtMTE2NCw3ICsxMTY0LDcgQEAKICAgICogdGhlIEtleWNoYWluLgogICAgKgogICAgKiBBcyB0aGlzIGRvZXNuJ3QgbWF0Y2ggaU9TLCBhbmQgYXBwcyBtYXkgbm90IHdhbnQgdG8gc2VlIHRoZWlyIGNsaWVudAotICAgKiBjZXJ0aWZpY2F0ZSBzYXZlZCBpbiB0aGUgdGhlIHVzZXIncyBrZXljaGFpbiwgd2UgdXNlIFNlY0l0ZW1JbXBvcnQKKyAgICogY2VydGlmaWNhdGUgc2F2ZWQgaW4gdGhlIHVzZXIncyBrZXljaGFpbiwgd2UgdXNlIFNlY0l0ZW1JbXBvcnQKICAgICogd2l0aCBhIE5VTEwga2V5Y2hhaW4gdG8gYXZvaWQgaW1wb3J0aW5nIGl0LgogICAgKgogICAgKiBUaGlzIHJldHVybnMgYSBTZWNDZXJ0aWZpY2F0ZVJlZiBmcm9tIHdoaWNoIHdlIGNhbiBjb25zdHJ1Y3QgYQpAQCAtMjExMSw4ICsyMTExLDggQEAKICAgICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKLXN0YXRpYyBpbnQgdmVyaWZ5X2NlcnQoY29uc3QgY2hhciAqY2FmaWxlLCBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICBTU0xDb250ZXh0UmVmIGN0eCkKK3N0YXRpYyBDVVJMY29kZSB2ZXJpZnlfY2VydChjb25zdCBjaGFyICpjYWZpbGUsIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMQ29udGV4dFJlZiBjdHgpCiB7CiAgIGludCBuID0gMCwgcmM7CiAgIGxvbmcgcmVzOwpAQCAtMjM3MCwxMCArMjM3MCwxMCBAQAogICAgICAgICBMZW9wYXJkJ3MgaGVhZGVycyAqLwogICAgICAgY2FzZSAtOTg0MToKICAgICAgICAgaWYoU1NMX0NPTk5fQ09ORklHKENBZmlsZSkgJiYgU1NMX0NPTk5fQ09ORklHKHZlcmlmeXBlZXIpKSB7Ci0gICAgICAgICAgaW50IHJlcyA9IHZlcmlmeV9jZXJ0KFNTTF9DT05OX0NPTkZJRyhDQWZpbGUpLCBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQUNLRU5ELT5zc2xfY3R4KTsKLSAgICAgICAgICBpZihyZXMgIT0gQ1VSTEVfT0spCi0gICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICAgIENVUkxjb2RlIHJlc3VsdCA9IHZlcmlmeV9jZXJ0KFNTTF9DT05OX0NPTkZJRyhDQWZpbGUpLCBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJBQ0tFTkQtPnNzbF9jdHgpOworICAgICAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgLyogdGhlIGRvY3VtZW50YXRpb24gc2F5cyB3ZSBuZWVkIHRvIGNhbGwgU1NMSGFuZHNoYWtlKCkgYWdhaW4gKi8KICAgICAgICAgcmV0dXJuIHNlY3RyYW5zcF9jb25uZWN0X3N0ZXAyKGNvbm4sIHNvY2tpbmRleCk7CkBAIC0yODA1LDcgKzI4MDUsNyBAQAogICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKICAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07CiAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tzb2NraW5kZXhdOwotICBsb25nIHRpbWVvdXRfbXM7CisgIHRpbWVkaWZmX3QgdGltZW91dF9tczsKICAgaW50IHdoYXQ7CiAKICAgLyogY2hlY2sgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hlZCAqLwpAQCAtMjg1Miw3ICsyODUyLDcgQEAKICAgICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGU/c29ja2ZkOkNVUkxfU09DS0VUX0JBRDsKIAogICAgICAgd2hhdCA9IEN1cmxfc29ja2V0X2NoZWNrKHJlYWRmZCwgQ1VSTF9TT0NLRVRfQkFELCB3cml0ZWZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmJsb2NraW5nPzA6dGltZW91dF9tcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uYmxvY2tpbmc/MDoodGltZV90KXRpbWVvdXRfbXMpOwogICAgICAgaWYod2hhdCA8IDApIHsKICAgICAgICAgLyogZmF0YWwgZXJyb3IgKi8KICAgICAgICAgZmFpbGYoZGF0YSwgInNlbGVjdC9wb2xsIG9uIFNTTCBzb2NrZXQsIGVycm5vOiAlZCIsIFNPQ0tFUlJOTyk7CkBAIC0zMTg2LDcgKzMxODYsMTAgQEAKICAgLypzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsqLwogICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbbnVtXTsKICAgc2l6ZV90IHByb2Nlc3NlZCA9IDBVTDsKLSAgT1NTdGF0dXMgZXJyID0gU1NMUmVhZChCQUNLRU5ELT5zc2xfY3R4LCBidWYsIGJ1ZmZlcnNpemUsICZwcm9jZXNzZWQpOworICBPU1N0YXR1cyBlcnI7CisKKyAgYWdhaW46CisgIGVyciA9IFNTTFJlYWQoQkFDS0VORC0+c3NsX2N0eCwgYnVmLCBidWZmZXJzaXplLCAmcHJvY2Vzc2VkKTsKIAogICBpZihlcnIgIT0gbm9FcnIpIHsKICAgICBzd2l0Y2goZXJyKSB7CkBAIC0zMjA3LDYgKzMyMTAsMTYgQEAKICAgICAgICAgcmV0dXJuIC0xTDsKICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgLyogVGhlIGJlbG93IGlzIGVyclNTTFBlZXJBdXRoQ29tcGxldGVkOyBpdCdzIG5vdCBkZWZpbmVkIGluCisgICAgICAgICAgIExlb3BhcmQncyBoZWFkZXJzICovCisgICAgICBjYXNlIC05ODQxOgorICAgICAgICBpZihTU0xfQ09OTl9DT05GSUcoQ0FmaWxlKSAmJiBTU0xfQ09OTl9DT05GSUcodmVyaWZ5cGVlcikpIHsKKyAgICAgICAgICBDVVJMY29kZSByZXN1bHQgPSB2ZXJpZnlfY2VydChTU0xfQ09OTl9DT05GSUcoQ0FmaWxlKSwgY29ubi0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQUNLRU5ELT5zc2xfY3R4KTsKKyAgICAgICAgICBpZihyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGdvdG8gYWdhaW47CiAgICAgICBkZWZhdWx0OgogICAgICAgICBmYWlsZihjb25uLT5kYXRhLCAiU1NMUmVhZCgpIHJldHVybiBlcnJvciAlZCIsIGVycik7CiAgICAgICAgICpjdXJsY29kZSA9IENVUkxFX1JFQ1ZfRVJST1I7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL3Z0bHMuYyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvdnRscy5jCmluZGV4IGE3NDUyZGMuLmRmZWZhMWIgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvdnRscy5jCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvdnRscy5jCkBAIC01LDcgKzUsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC05Nyw3ICs5Nyw4IEBACiAgICAgIEN1cmxfc2FmZV9zdHJjYXNlY29tcGFyZShkYXRhLT5yYW5kb21fZmlsZSwgbmVlZGxlLT5yYW5kb21fZmlsZSkgJiYKICAgICAgQ3VybF9zYWZlX3N0cmNhc2Vjb21wYXJlKGRhdGEtPmVnZHNvY2tldCwgbmVlZGxlLT5lZ2Rzb2NrZXQpICYmCiAgICAgIEN1cmxfc2FmZV9zdHJjYXNlY29tcGFyZShkYXRhLT5jaXBoZXJfbGlzdCwgbmVlZGxlLT5jaXBoZXJfbGlzdCkgJiYKLSAgICAgQ3VybF9zYWZlX3N0cmNhc2Vjb21wYXJlKGRhdGEtPmNpcGhlcl9saXN0MTMsIG5lZWRsZS0+Y2lwaGVyX2xpc3QxMykpCisgICAgIEN1cmxfc2FmZV9zdHJjYXNlY29tcGFyZShkYXRhLT5jaXBoZXJfbGlzdDEzLCBuZWVkbGUtPmNpcGhlcl9saXN0MTMpICYmCisgICAgIEN1cmxfc2FmZV9zdHJjYXNlY29tcGFyZShkYXRhLT5waW5uZWRfa2V5LCBuZWVkbGUtPnBpbm5lZF9rZXkpKQogICAgIHJldHVybiBUUlVFOwogCiAgIHJldHVybiBGQUxTRTsKQEAgLTEyMSw2ICsxMjIsNyBAQAogICBDTE9ORV9TVFJJTkcoZWdkc29ja2V0KTsKICAgQ0xPTkVfU1RSSU5HKGNpcGhlcl9saXN0KTsKICAgQ0xPTkVfU1RSSU5HKGNpcGhlcl9saXN0MTMpOworICBDTE9ORV9TVFJJTkcocGlubmVkX2tleSk7CiAKICAgcmV0dXJuIFRSVUU7CiB9CkBAIC0xMzQsNiArMTM2LDcgQEAKICAgQ3VybF9zYWZlZnJlZShzc2xjLT5lZ2Rzb2NrZXQpOwogICBDdXJsX3NhZmVmcmVlKHNzbGMtPmNpcGhlcl9saXN0KTsKICAgQ3VybF9zYWZlZnJlZShzc2xjLT5jaXBoZXJfbGlzdDEzKTsKKyAgQ3VybF9zYWZlZnJlZShzc2xjLT5waW5uZWRfa2V5KTsKIH0KIAogI2lmZGVmIFVTRV9TU0wKQEAgLTUxMywxNiArNTE2LDEyIEBACiB9CiAKICNpZiBkZWZpbmVkKFVTRV9PUEVOU1NMKSB8fCBkZWZpbmVkKFVTRV9HTlVUTFMpIHx8IGRlZmluZWQoVVNFX1NDSEFOTkVMKSB8fCBcCi0gIGRlZmluZWQoVVNFX1NFQ1RSQU5TUCkgfHwgZGVmaW5lZChVU0VfUE9MQVJTU0wpIHx8IGRlZmluZWQoVVNFX05TUykgfHwgXAotICBkZWZpbmVkKFVTRV9NQkVEVExTKSB8fCBkZWZpbmVkKFVTRV9DWUFTU0wpCi1pbnQgQ3VybF9zc2xfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKQorICBkZWZpbmVkKFVTRV9TRUNUUkFOU1ApIHx8IGRlZmluZWQoVVNFX05TUykgfHwgXAorICBkZWZpbmVkKFVTRV9NQkVEVExTKSB8fCBkZWZpbmVkKFVTRV9XT0xGU1NMKSB8fCBkZWZpbmVkKFVTRV9CRUFSU1NMKQoraW50IEN1cmxfc3NsX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90ICpzb2NrcykKIHsKICAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW0ZJUlNUU09DS0VUXTsKIAotICBpZighbnVtc29ja3MpCi0gICAgcmV0dXJuIEdFVFNPQ0tfQkxBTks7Ci0KICAgaWYoY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9PSBzc2xfY29ubmVjdF8yX3dyaXRpbmcpIHsKICAgICAvKiB3cml0ZSBtb2RlICovCiAgICAgc29ja3NbMF0gPSBjb25uLT5zb2NrW0ZJUlNUU09DS0VUXTsKQEAgLTUzOCwxMiArNTM3LDEwIEBACiB9CiAjZWxzZQogaW50IEN1cmxfc3NsX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3MsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgbnVtc29ja3MpCisgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcykKIHsKICAgKHZvaWQpY29ubjsKICAgKHZvaWQpc29ja3M7Ci0gICh2b2lkKW51bXNvY2tzOwogICByZXR1cm4gR0VUU09DS19CTEFOSzsKIH0KIC8qIFVTRV9PUEVOU1NMIHx8IFVTRV9HTlVUTFMgfHwgVVNFX1NDSEFOTkVMIHx8IFVTRV9TRUNUUkFOU1AgfHwgVVNFX05TUyAqLwpAQCAtMTE3Miw4ICsxMTY5LDggQEAKIGNvbnN0IHN0cnVjdCBDdXJsX3NzbCAqQ3VybF9zc2wgPQogI2lmIGRlZmluZWQoQ1VSTF9XSVRIX01VTFRJX1NTTCkKICAgJkN1cmxfc3NsX211bHRpOwotI2VsaWYgZGVmaW5lZChVU0VfQ1lBU1NMKQotICAmQ3VybF9zc2xfY3lhc3NsOworI2VsaWYgZGVmaW5lZChVU0VfV09MRlNTTCkKKyAgJkN1cmxfc3NsX3dvbGZzc2w7CiAjZWxpZiBkZWZpbmVkKFVTRV9TRUNUUkFOU1ApCiAgICZDdXJsX3NzbF9zZWN0cmFuc3A7CiAjZWxpZiBkZWZpbmVkKFVTRV9HTlVUTFMpCkBAIC0xMTg2LDE5ICsxMTgzLDE5IEBACiAgICZDdXJsX3NzbF9uc3M7CiAjZWxpZiBkZWZpbmVkKFVTRV9PUEVOU1NMKQogICAmQ3VybF9zc2xfb3BlbnNzbDsKLSNlbGlmIGRlZmluZWQoVVNFX1BPTEFSU1NMKQotICAmQ3VybF9zc2xfcG9sYXJzc2w7CiAjZWxpZiBkZWZpbmVkKFVTRV9TQ0hBTk5FTCkKICAgJkN1cmxfc3NsX3NjaGFubmVsOwogI2VsaWYgZGVmaW5lZChVU0VfTUVTQUxJTkspCiAgICZDdXJsX3NzbF9tZXNhbGluazsKKyNlbGlmIGRlZmluZWQoVVNFX0JFQVJTU0wpCisgICZDdXJsX3NzbF9iZWFyc3NsOwogI2Vsc2UKICNlcnJvciAiTWlzc2luZyBzdHJ1Y3QgQ3VybF9zc2wgZm9yIHNlbGVjdGVkIFNTTCBiYWNrZW5kIgogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ3VybF9zc2wgKmF2YWlsYWJsZV9iYWNrZW5kc1tdID0gewotI2lmIGRlZmluZWQoVVNFX0NZQVNTTCkKLSAgJkN1cmxfc3NsX2N5YXNzbCwKKyNpZiBkZWZpbmVkKFVTRV9XT0xGU1NMKQorICAmQ3VybF9zc2xfd29sZnNzbCwKICNlbmRpZgogI2lmIGRlZmluZWQoVVNFX1NFQ1RSQU5TUCkKICAgJkN1cmxfc3NsX3NlY3RyYW5zcCwKQEAgLTEyMTgsMTUgKzEyMTUsMTUgQEAKICNpZiBkZWZpbmVkKFVTRV9PUEVOU1NMKQogICAmQ3VybF9zc2xfb3BlbnNzbCwKICNlbmRpZgotI2lmIGRlZmluZWQoVVNFX1BPTEFSU1NMKQotICAmQ3VybF9zc2xfcG9sYXJzc2wsCi0jZW5kaWYKICNpZiBkZWZpbmVkKFVTRV9TQ0hBTk5FTCkKICAgJkN1cmxfc3NsX3NjaGFubmVsLAogI2VuZGlmCiAjaWYgZGVmaW5lZChVU0VfTUVTQUxJTkspCiAgICZDdXJsX3NzbF9tZXNhbGluaywKICNlbmRpZgorI2lmIGRlZmluZWQoVVNFX0JFQVJTU0wpCisgICZDdXJsX3NzbF9iZWFyc3NsLAorI2VuZGlmCiAgIE5VTEwKIH07CiAKQEAgLTEyMzQsNyArMTIzMSw3IEBACiB7CiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ3VybF9zc2wgKnNlbGVjdGVkOwogICBzdGF0aWMgY2hhciBiYWNrZW5kc1syMDBdOwotICBzdGF0aWMgc2l6ZV90IHRvdGFsOworICBzdGF0aWMgc2l6ZV90IGJhY2tlbmRzX2xlbjsKICAgY29uc3Qgc3RydWN0IEN1cmxfc3NsICpjdXJyZW50OwogCiAgIGN1cnJlbnQgPSBDdXJsX3NzbCA9PSAmQ3VybF9zc2xfbXVsdGkgPyBhdmFpbGFibGVfYmFja2VuZHNbMF0gOiBDdXJsX3NzbDsKQEAgLTEyNDYsMjcgKzEyNDMsMzIgQEAKIAogICAgIHNlbGVjdGVkID0gY3VycmVudDsKIAotICAgIGZvcihpID0gMDsgYXZhaWxhYmxlX2JhY2tlbmRzW2ldICYmIHAgPCAoZW5kIC0gNCk7IGkrKykgewotICAgICAgaWYoaSkKLSAgICAgICAgKihwKyspID0gJyAnOwotICAgICAgaWYoc2VsZWN0ZWQgIT0gYXZhaWxhYmxlX2JhY2tlbmRzW2ldKQotICAgICAgICAqKHArKykgPSAnKCc7Ci0gICAgICBwICs9IGF2YWlsYWJsZV9iYWNrZW5kc1tpXS0+dmVyc2lvbihwLCBlbmQgLSBwIC0gMik7Ci0gICAgICBpZihzZWxlY3RlZCAhPSBhdmFpbGFibGVfYmFja2VuZHNbaV0pCi0gICAgICAgICoocCsrKSA9ICcpJzsKKyAgICBiYWNrZW5kc1swXSA9ICdcMCc7CisKKyAgICBmb3IoaSA9IDA7IGF2YWlsYWJsZV9iYWNrZW5kc1tpXTsgKytpKSB7CisgICAgICBjaGFyIHZiWzIwMF07CisgICAgICBib29sIHBhcmVuID0gKHNlbGVjdGVkICE9IGF2YWlsYWJsZV9iYWNrZW5kc1tpXSk7CisKKyAgICAgIGlmKGF2YWlsYWJsZV9iYWNrZW5kc1tpXS0+dmVyc2lvbih2Yiwgc2l6ZW9mKHZiKSkpIHsKKyAgICAgICAgcCArPSBtc25wcmludGYocCwgZW5kIC0gcCwgIiVzJXMlcyVzIiwgKHAgIT0gYmFja2VuZHMgPyAiICIgOiAiIiksCisgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbiA/ICIoIiA6ICIiKSwgdmIsIChwYXJlbiA/ICIpIiA6ICIiKSk7CisgICAgICB9CiAgICAgfQotICAgICpwID0gJ1wwJzsKLSAgICB0b3RhbCA9IHAgLSBiYWNrZW5kczsKKworICAgIGJhY2tlbmRzX2xlbiA9IHAgLSBiYWNrZW5kczsKICAgfQogCi0gIGlmKHNpemUgPiB0b3RhbCkKLSAgICBtZW1jcHkoYnVmZmVyLCBiYWNrZW5kcywgdG90YWwgKyAxKTsKLSAgZWxzZSB7Ci0gICAgbWVtY3B5KGJ1ZmZlciwgYmFja2VuZHMsIHNpemUgLSAxKTsKKyAgaWYoIXNpemUpCisgICAgcmV0dXJuIDA7CisKKyAgaWYoc2l6ZSA8PSBiYWNrZW5kc19sZW4pIHsKKyAgICBzdHJuY3B5KGJ1ZmZlciwgYmFja2VuZHMsIHNpemUgLSAxKTsKICAgICBidWZmZXJbc2l6ZSAtIDFdID0gJ1wwJzsKKyAgICByZXR1cm4gc2l6ZSAtIDE7CiAgIH0KIAotICByZXR1cm4gQ1VSTE1JTihzaXplIC0gMSwgdG90YWwpOworICBzdHJjcHkoYnVmZmVyLCBiYWNrZW5kcyk7CisgIHJldHVybiBiYWNrZW5kc19sZW47CiB9CiAKIHN0YXRpYyBpbnQgbXVsdGlzc2xfaW5pdChjb25zdCBzdHJ1Y3QgQ3VybF9zc2wgKmJhY2tlbmQpCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL3Z0bHMuaCBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvdnRscy5oCmluZGV4IDJhODdjYTEuLmY1OGFkZWUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvdnRscy5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3Z0bHMvdnRscy5oCkBAIC03LDcgKzcsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDIwLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCkBAIC0xMDIsMTIgKzEwMiwxMiBAQAogI2luY2x1ZGUgImd0bHMuaCIgICAgICAgICAgIC8qIEdudVRMUyB2ZXJzaW9ucyAqLwogI2luY2x1ZGUgIm5zc2cuaCIgICAgICAgICAgIC8qIE5TUyB2ZXJzaW9ucyAqLwogI2luY2x1ZGUgImdza2l0LmgiICAgICAgICAgIC8qIEdsb2JhbCBTZWN1cmUgVG9vbEtpdCB2ZXJzaW9ucyAqLwotI2luY2x1ZGUgInBvbGFyc3NsLmgiICAgICAgIC8qIFBvbGFyU1NMIHZlcnNpb25zICovCi0jaW5jbHVkZSAiY3lhc3NsLmgiICAgICAgICAgLyogQ3lhU1NMIHZlcnNpb25zICovCisjaW5jbHVkZSAid29sZnNzbC5oIiAgICAgICAgLyogd29sZlNTTCB2ZXJzaW9ucyAqLwogI2luY2x1ZGUgInNjaGFubmVsLmgiICAgICAgIC8qIFNjaGFubmVsIFNTUEkgdmVyc2lvbiAqLwogI2luY2x1ZGUgInNlY3RyYW5zcC5oIiAgICAgIC8qIFNlY3VyZVRyYW5zcG9ydCAoRGFyd2luKSB2ZXJzaW9uICovCiAjaW5jbHVkZSAibWJlZHRscy5oIiAgICAgICAgLyogbWJlZFRMUyB2ZXJzaW9ucyAqLwogI2luY2x1ZGUgIm1lc2FsaW5rLmgiICAgICAgIC8qIE1lc2FMaW5rIHZlcnNpb25zICovCisjaW5jbHVkZSAiYmVhcnNzbC5oIiAgICAgICAgLyogQmVhclNTTCB2ZXJzaW9ucyAqLwogCiAjaWZuZGVmIE1BWF9QSU5ORURfUFVCS0VZX1NJWkUKICNkZWZpbmUgTUFYX1BJTk5FRF9QVUJLRVlfU0laRSAxMDQ4NTc2IC8qIDFNQiAqLwpAQCAtMTQzLDggKzE0Myw3IEBACiBib29sIEN1cmxfY2xvbmVfcHJpbWFyeV9zc2xfY29uZmlnKHN0cnVjdCBzc2xfcHJpbWFyeV9jb25maWcgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNzbF9wcmltYXJ5X2NvbmZpZyAqZGVzdCk7CiB2b2lkIEN1cmxfZnJlZV9wcmltYXJ5X3NzbF9jb25maWcoc3RydWN0IHNzbF9wcmltYXJ5X2NvbmZpZyogc3NsYyk7Ci1pbnQgQ3VybF9zc2xfZ2V0c29jayhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3QgKnNvY2tzLAotICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKK2ludCBDdXJsX3NzbF9nZXRzb2NrKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY3VybF9zb2NrZXRfdCAqc29ja3MpOwogCiBpbnQgQ3VybF9zc2xfYmFja2VuZCh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy93b2xmc3NsLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL3dvbGZzc2wuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzJkM2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy93b2xmc3NsLmMKQEAgLTAsMCArMSw5OTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMjAsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIFNvdXJjZSBmaWxlIGZvciBhbGwgd29sZlNTTCBzcGVjaWZpYyBjb2RlIGZvciB0aGUgVExTL1NTTCBsYXllci4gTm8gY29kZQorICogYnV0IHZ0bHMuYyBzaG91bGQgZXZlciBjYWxsIG9yIHVzZSB0aGVzZSBmdW5jdGlvbnMuCisgKgorICovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZmRlZiBVU0VfV09MRlNTTAorCisjZGVmaW5lIFdPTEZTU0xfT1BUSU9OU19JR05PUkVfU1lTCisjaW5jbHVkZSA8d29sZnNzbC92ZXJzaW9uLmg+CisjaW5jbHVkZSA8d29sZnNzbC9vcHRpb25zLmg+CisKKy8qIFRvIGRldGVybWluZSB3aGF0IGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdlIHJlbHkgb24gb25lIG9yIGJvdGggb2Y6CisgICAtIHRoZSB1c2VyJ3Mgb3B0aW9ucy5oIGdlbmVyYXRlZCBieSB3b2xmU1NMCisgICAtIHRoZSBzeW1ib2xzIGRldGVjdGVkIGJ5IGN1cmwncyBjb25maWd1cmUKKyAgIFNpbmNlIHRoZXkgYXJlIG1hcmtlZGx5IGRpZmZlcmVudCBmcm9tIG9uZSBhbm90aGVyLCBhbmQgb25lIG9yIHRoZSBvdGhlciBtYXkKKyAgIG5vdCBiZSBhdmFpbGFibGUsIHdlIGRvIHNvbWUgY2hlY2tpbmcgYmVsb3cgdG8gYnJpbmcgdGhpbmdzIGluIHN5bmMuICovCisKKy8qIEhBVkVfQUxQTiBpcyB3b2xmU1NMJ3MgYnVpbGQgdGltZSBzeW1ib2wgZm9yIGVuYWJsaW5nIEFMUE4gaW4gb3B0aW9ucy5oLiAqLworI2lmbmRlZiBIQVZFX0FMUE4KKyNpZmRlZiBIQVZFX1dPTEZTU0xfVVNFQUxQTgorI2RlZmluZSBIQVZFX0FMUE4KKyNlbmRpZgorI2VuZGlmCisKKy8qIFdPTEZTU0xfQUxMT1dfU1NMVjMgaXMgd29sZlNTTCdzIGJ1aWxkIHRpbWUgc3ltYm9sIGZvciBlbmFibGluZyBTU0x2MyBpbgorICAgb3B0aW9ucy5oLCBidXQgaXMgb25seSBzZWVuIGluID49IDMuNi42IHNpbmNlIHRoYXQncyB3aGVuIHRoZXkgc3RhcnRlZAorICAgZGlzYWJsaW5nIFNTTHYzIGJ5IGRlZmF1bHQuICovCisjaWZuZGVmIFdPTEZTU0xfQUxMT1dfU1NMVjMKKyNpZiAoTElCV09MRlNTTF9WRVJTSU9OX0hFWCA8IDB4MDMwMDYwMDYpIHx8IFwKKyAgZGVmaW5lZChIQVZFX1dPTEZTU0xWM19DTElFTlRfTUVUSE9EKQorI2RlZmluZSBXT0xGU1NMX0FMTE9XX1NTTFYzCisjZW5kaWYKKyNlbmRpZgorCisjaW5jbHVkZSA8bGltaXRzLmg+CisKKyNpbmNsdWRlICJ1cmxkYXRhLmgiCisjaW5jbHVkZSAic2VuZGYuaCIKKyNpbmNsdWRlICJpbmV0X3B0b24uaCIKKyNpbmNsdWRlICJ2dGxzLmgiCisjaW5jbHVkZSAicGFyc2VkYXRlLmgiCisjaW5jbHVkZSAiY29ubmVjdC5oIiAvKiBmb3IgdGhlIGNvbm5lY3QgdGltZW91dCAqLworI2luY2x1ZGUgInNlbGVjdC5oIgorI2luY2x1ZGUgInN0cmNhc2UuaCIKKyNpbmNsdWRlICJ4NTA5YXNuMS5oIgorI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisjaW5jbHVkZSAibXVsdGlpZi5oIgorCisjaW5jbHVkZSA8d29sZnNzbC9vcGVuc3NsL3NzbC5oPgorI2luY2x1ZGUgPHdvbGZzc2wvc3NsLmg+CisjaW5jbHVkZSA8d29sZnNzbC9lcnJvci1zc2wuaD4KKyNpbmNsdWRlICJ3b2xmc3NsLmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKy8qIEtFRVBfUEVFUl9DRVJUIGlzIGEgcHJvZHVjdCBvZiB0aGUgcHJlc2VuY2Ugb2YgYnVpbGQgdGltZSBzeW1ib2wKKyAgIE9QRU5TU0xfRVhUUkEgd2l0aG91dCBOT19DRVJUUywgZGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uLiBLRUVQX1BFRVJfQ0VSVCBpcworICAgaW4gd29sZlNTTCdzIHNldHRpbmdzLmgsIGFuZCB0aGUgbGF0dGVyIHR3byBhcmUgYnVpbGQgdGltZSBzeW1ib2xzIGluCisgICBvcHRpb25zLmguICovCisjaWZuZGVmIEtFRVBfUEVFUl9DRVJUCisjaWYgZGVmaW5lZChIQVZFX1dPTEZTU0xfR0VUX1BFRVJfQ0VSVElGSUNBVEUpIHx8IFwKKyAgICAoZGVmaW5lZChPUEVOU1NMX0VYVFJBKSAmJiAhZGVmaW5lZChOT19DRVJUUykpCisjZGVmaW5lIEtFRVBfUEVFUl9DRVJUCisjZW5kaWYKKyNlbmRpZgorCitzdHJ1Y3Qgc3NsX2JhY2tlbmRfZGF0YSB7CisgIFNTTF9DVFgqIGN0eDsKKyAgU1NMKiAgICAgaGFuZGxlOworfTsKKworI2RlZmluZSBCQUNLRU5EIGNvbm5zc2wtPmJhY2tlbmQKKworc3RhdGljIEN1cmxfcmVjdiB3b2xmc3NsX3JlY3Y7CitzdGF0aWMgQ3VybF9zZW5kIHdvbGZzc2xfc2VuZDsKKworCitzdGF0aWMgaW50IGRvX2ZpbGVfdHlwZShjb25zdCBjaGFyICp0eXBlKQoreworICBpZighdHlwZSB8fCAhdHlwZVswXSkKKyAgICByZXR1cm4gU1NMX0ZJTEVUWVBFX1BFTTsKKyAgaWYoc3RyY2FzZWNvbXBhcmUodHlwZSwgIlBFTSIpKQorICAgIHJldHVybiBTU0xfRklMRVRZUEVfUEVNOworICBpZihzdHJjYXNlY29tcGFyZSh0eXBlLCAiREVSIikpCisgICAgcmV0dXJuIFNTTF9GSUxFVFlQRV9BU04xOworICByZXR1cm4gLTE7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGxvYWRzIGFsbCB0aGUgY2xpZW50L0NBIGNlcnRpZmljYXRlcyBhbmQgQ1JMcy4gU2V0dXAgdGhlIFRMUworICogbGF5ZXIgYW5kIGRvIGFsbCBuZWNlc3NhcnkgbWFnaWMuCisgKi8KK3N0YXRpYyBDVVJMY29kZQord29sZnNzbF9jb25uZWN0X3N0ZXAxKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgpCit7CisgIGNoYXIgKmNpcGhlcnM7CisgIHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEgPSBjb25uLT5kYXRhOworICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSogY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKKyAgU1NMX01FVEhPRCogcmVxX21ldGhvZCA9IE5VTEw7CisgIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tzb2NraW5kZXhdOworI2lmZGVmIEhBVkVfU05JCisgIGJvb2wgc25pID0gRkFMU0U7CisjZGVmaW5lIHVzZV9zbmkoeCkgIHNuaSA9ICh4KQorI2Vsc2UKKyNkZWZpbmUgdXNlX3NuaSh4KSAgQ3VybF9ub3Bfc3RtdAorI2VuZGlmCisKKyAgaWYoY29ubnNzbC0+c3RhdGUgPT0gc3NsX2Nvbm5lY3Rpb25fY29tcGxldGUpCisgICAgcmV0dXJuIENVUkxFX09LOworCisgIGlmKFNTTF9DT05OX0NPTkZJRyh2ZXJzaW9uX21heCkgIT0gQ1VSTF9TU0xWRVJTSU9OX01BWF9OT05FKSB7CisgICAgZmFpbGYoZGF0YSwgIndvbGZTU0wgZG9lcyBub3Qgc3VwcG9ydCB0byBzZXQgbWF4aW11bSBTU0wvVExTIHZlcnNpb24iKTsKKyAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgIH0KKworICAvKiBjaGVjayB0byBzZWUgaWYgd2UndmUgYmVlbiB0b2xkIHRvIHVzZSBhbiBleHBsaWNpdCBTU0wvVExTIHZlcnNpb24gKi8KKyAgc3dpdGNoKFNTTF9DT05OX0NPTkZJRyh2ZXJzaW9uKSkgeworICBjYXNlIENVUkxfU1NMVkVSU0lPTl9ERUZBVUxUOgorICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MToKKyNpZiBMSUJXT0xGU1NMX1ZFUlNJT05fSEVYID49IDB4MDMwMDMwMDAgLyogPj0gMy4zLjAgKi8KKyAgICAvKiBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24gaXMgc2V0IGxhdGVyIGFmdGVyIHRoZSBDVFggb2JqZWN0IGlzIGNyZWF0ZWQgKi8KKyAgICByZXFfbWV0aG9kID0gU1NMdjIzX2NsaWVudF9tZXRob2QoKTsKKyNlbHNlCisgICAgaW5mb2YoZGF0YSwgIndvbGZTU0wgPDMuMy4wIGNhbm5vdCBiZSBjb25maWd1cmVkIHRvIHVzZSBUTFMgMS4wLTEuMiwgIgorICAgICAgICAgICJUTFMgMS4wIGlzIHVzZWQgZXhjbHVzaXZlbHlcbiIpOworICAgIHJlcV9tZXRob2QgPSBUTFN2MV9jbGllbnRfbWV0aG9kKCk7CisjZW5kaWYKKyAgICB1c2Vfc25pKFRSVUUpOworICAgIGJyZWFrOworICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8wOgorI2lmZGVmIFdPTEZTU0xfQUxMT1dfVExTVjEwCisgICAgcmVxX21ldGhvZCA9IFRMU3YxX2NsaWVudF9tZXRob2QoKTsKKyAgICB1c2Vfc25pKFRSVUUpOworI2Vsc2UKKyAgICBmYWlsZihkYXRhLCAid29sZlNTTCBkb2VzIG5vdCBzdXBwb3J0IFRMUyAxLjAiKTsKKyAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOworI2VuZGlmCisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzE6CisgICAgcmVxX21ldGhvZCA9IFRMU3YxXzFfY2xpZW50X21ldGhvZCgpOworICAgIHVzZV9zbmkoVFJVRSk7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzI6CisgICAgcmVxX21ldGhvZCA9IFRMU3YxXzJfY2xpZW50X21ldGhvZCgpOworICAgIHVzZV9zbmkoVFJVRSk7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzM6CisjaWZkZWYgV09MRlNTTF9UTFMxMworICAgIHJlcV9tZXRob2QgPSB3b2xmVExTdjFfM19jbGllbnRfbWV0aG9kKCk7CisgICAgdXNlX3NuaShUUlVFKTsKKyAgICBicmVhazsKKyNlbHNlCisgICAgZmFpbGYoZGF0YSwgIndvbGZTU0w6IFRMUyAxLjMgaXMgbm90IHlldCBzdXBwb3J0ZWQiKTsKKyAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisjZW5kaWYKKyAgY2FzZSBDVVJMX1NTTFZFUlNJT05fU1NMdjM6CisjaWZkZWYgV09MRlNTTF9BTExPV19TU0xWMworICAgIHJlcV9tZXRob2QgPSBTU0x2M19jbGllbnRfbWV0aG9kKCk7CisgICAgdXNlX3NuaShGQUxTRSk7CisjZWxzZQorICAgIGZhaWxmKGRhdGEsICJ3b2xmU1NMIGRvZXMgbm90IHN1cHBvcnQgU1NMdjMiKTsKKyAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOworI2VuZGlmCisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1NTTHYyOgorICAgIGZhaWxmKGRhdGEsICJ3b2xmU1NMIGRvZXMgbm90IHN1cHBvcnQgU1NMdjIiKTsKKyAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgIGRlZmF1bHQ6CisgICAgZmFpbGYoZGF0YSwgIlVucmVjb2duaXplZCBwYXJhbWV0ZXIgcGFzc2VkIHZpYSBDVVJMT1BUX1NTTFZFUlNJT04iKTsKKyAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgIH0KKworICBpZighcmVxX21ldGhvZCkgeworICAgIGZhaWxmKGRhdGEsICJTU0w6IGNvdWxkbid0IGNyZWF0ZSBhIG1ldGhvZCEiKTsKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIGlmKEJBQ0tFTkQtPmN0eCkKKyAgICBTU0xfQ1RYX2ZyZWUoQkFDS0VORC0+Y3R4KTsKKyAgQkFDS0VORC0+Y3R4ID0gU1NMX0NUWF9uZXcocmVxX21ldGhvZCk7CisKKyAgaWYoIUJBQ0tFTkQtPmN0eCkgeworICAgIGZhaWxmKGRhdGEsICJTU0w6IGNvdWxkbid0IGNyZWF0ZSBhIGNvbnRleHQhIik7CisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICBzd2l0Y2goU1NMX0NPTk5fQ09ORklHKHZlcnNpb24pKSB7CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX0RFRkFVTFQ6CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxOgorI2lmIExJQldPTEZTU0xfVkVSU0lPTl9IRVggPiAweDAzMDA0MDA2IC8qID4gMy40LjYgKi8KKyAgICAvKiBWZXJzaW9ucyAzLjMuMCB0byAzLjQuNiB3ZSBrbm93IHRoZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24gaXMKKyAgICAgKiB3aGF0ZXZlciBtaW5pbXVtIHZlcnNpb24gb2YgVExTIHdhcyBidWlsdCBpbiBhbmQgYXQgbGVhc3QgVExTIDEuMC4gRm9yCisgICAgICogbGF0ZXIgbGlicmFyeSB2ZXJzaW9ucyB0aGF0IGNvdWxkIGNoYW5nZSAoZWcgVExTIDEuMCBidWlsdCBpbiBidXQKKyAgICAgKiBkZWZhdWx0cyB0byBUTFMgMS4xKSBzbyB3ZSBoYXZlIHRoaXMgc2hvcnQgY2lyY3VpdCBldmFsdWF0aW9uIHRvIGZpbmQKKyAgICAgKiB0aGUgbWluaW11bSBzdXBwb3J0ZWQgVExTIHZlcnNpb24uCisgICAgKi8KKyAgICBpZigod29sZlNTTF9DVFhfU2V0TWluVmVyc2lvbihCQUNLRU5ELT5jdHgsIFdPTEZTU0xfVExTVjEpICE9IDEpICYmCisgICAgICAgKHdvbGZTU0xfQ1RYX1NldE1pblZlcnNpb24oQkFDS0VORC0+Y3R4LCBXT0xGU1NMX1RMU1YxXzEpICE9IDEpICYmCisgICAgICAgKHdvbGZTU0xfQ1RYX1NldE1pblZlcnNpb24oQkFDS0VORC0+Y3R4LCBXT0xGU1NMX1RMU1YxXzIpICE9IDEpCisjaWZkZWYgV09MRlNTTF9UTFMxMworICAgICAgICYmICh3b2xmU1NMX0NUWF9TZXRNaW5WZXJzaW9uKEJBQ0tFTkQtPmN0eCwgV09MRlNTTF9UTFNWMV8zKSAhPSAxKQorI2VuZGlmCisgICAgICApIHsKKyAgICAgIGZhaWxmKGRhdGEsICJTU0w6IGNvdWxkbid0IHNldCB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uIik7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgfQorI2VuZGlmCisgICAgYnJlYWs7CisgIH0KKworICBjaXBoZXJzID0gU1NMX0NPTk5fQ09ORklHKGNpcGhlcl9saXN0KTsKKyAgaWYoY2lwaGVycykgeworICAgIGlmKCFTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdChCQUNLRU5ELT5jdHgsIGNpcGhlcnMpKSB7CisgICAgICBmYWlsZihkYXRhLCAiZmFpbGVkIHNldHRpbmcgY2lwaGVyIGxpc3Q6ICVzIiwgY2lwaGVycyk7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NJUEhFUjsKKyAgICB9CisgICAgaW5mb2YoZGF0YSwgIkNpcGhlciBzZWxlY3Rpb246ICVzXG4iLCBjaXBoZXJzKTsKKyAgfQorCisjaWZuZGVmIE5PX0ZJTEVTWVNURU0KKyAgLyogbG9hZCB0cnVzdGVkIGNhY2VydCAqLworICBpZihTU0xfQ09OTl9DT05GSUcoQ0FmaWxlKSkgeworICAgIGlmKDEgIT0gU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQkFDS0VORC0+Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfQ09OTl9DT05GSUcoQ0FmaWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX0NPTk5fQ09ORklHKENBcGF0aCkpKSB7CisgICAgICBpZihTU0xfQ09OTl9DT05GSUcodmVyaWZ5cGVlcikpIHsKKyAgICAgICAgLyogRmFpbCBpZiB3ZSBpbnNpc3Qgb24gc3VjY2Vzc2Z1bGx5IHZlcmlmeWluZyB0aGUgc2VydmVyLiAqLworICAgICAgICBmYWlsZihkYXRhLCAiZXJyb3Igc2V0dGluZyBjZXJ0aWZpY2F0ZSB2ZXJpZnkgbG9jYXRpb25zOlxuIgorICAgICAgICAgICAgICAiICBDQWZpbGU6ICVzXG4gIENBcGF0aDogJXMiLAorICAgICAgICAgICAgICBTU0xfQ09OTl9DT05GSUcoQ0FmaWxlKT8KKyAgICAgICAgICAgICAgU1NMX0NPTk5fQ09ORklHKENBZmlsZSk6ICJub25lIiwKKyAgICAgICAgICAgICAgU1NMX0NPTk5fQ09ORklHKENBcGF0aCk/CisgICAgICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhDQXBhdGgpIDogIm5vbmUiKTsKKyAgICAgICAgcmV0dXJuIENVUkxFX1NTTF9DQUNFUlRfQkFERklMRTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICAvKiBKdXN0IGNvbnRpbnVlIHdpdGggYSB3YXJuaW5nIGlmIG5vIHN0cmljdCBjZXJ0aWZpY2F0ZQorICAgICAgICAgICB2ZXJpZmljYXRpb24gaXMgcmVxdWlyZWQuICovCisgICAgICAgIGluZm9mKGRhdGEsICJlcnJvciBzZXR0aW5nIGNlcnRpZmljYXRlIHZlcmlmeSBsb2NhdGlvbnMsIgorICAgICAgICAgICAgICAiIGNvbnRpbnVpbmcgYW55d2F5OlxuIik7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgLyogRXZlcnl0aGluZyBpcyBmaW5lLiAqLworICAgICAgaW5mb2YoZGF0YSwgInN1Y2Nlc3NmdWxseSBzZXQgY2VydGlmaWNhdGUgdmVyaWZ5IGxvY2F0aW9uczpcbiIpOworICAgIH0KKyAgICBpbmZvZihkYXRhLAorICAgICAgICAgICIgIENBZmlsZTogJXNcbiIKKyAgICAgICAgICAiICBDQXBhdGg6ICVzXG4iLAorICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhDQWZpbGUpID8gU1NMX0NPTk5fQ09ORklHKENBZmlsZSk6CisgICAgICAgICAgIm5vbmUiLAorICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyhDQXBhdGgpID8gU1NMX0NPTk5fQ09ORklHKENBcGF0aCk6CisgICAgICAgICAgIm5vbmUiKTsKKyAgfQorCisgIC8qIExvYWQgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZSwgYW5kIHByaXZhdGUga2V5ICovCisgIGlmKFNTTF9TRVRfT1BUSU9OKGNlcnQpICYmIFNTTF9TRVRfT1BUSU9OKGtleSkpIHsKKyAgICBpbnQgZmlsZV90eXBlID0gZG9fZmlsZV90eXBlKFNTTF9TRVRfT1BUSU9OKGNlcnRfdHlwZSkpOworCisgICAgaWYoU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfZmlsZShCQUNLRU5ELT5jdHgsIFNTTF9TRVRfT1BUSU9OKGNlcnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfdHlwZSkgIT0gMSkgeworICAgICAgZmFpbGYoZGF0YSwgInVuYWJsZSB0byB1c2UgY2xpZW50IGNlcnRpZmljYXRlIChubyBrZXkgb3Igd3JvbmcgcGFzcyIKKyAgICAgICAgICAgICIgcGhyYXNlPykiKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICB9CisKKyAgICBmaWxlX3R5cGUgPSBkb19maWxlX3R5cGUoU1NMX1NFVF9PUFRJT04oa2V5X3R5cGUpKTsKKyAgICBpZihTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUoQkFDS0VORC0+Y3R4LCBTU0xfU0VUX09QVElPTihrZXkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV90eXBlKSAhPSAxKSB7CisgICAgICBmYWlsZihkYXRhLCAidW5hYmxlIHRvIHNldCBwcml2YXRlIGtleSIpOworICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICAgIH0KKyAgfQorI2VuZGlmIC8qICFOT19GSUxFU1lTVEVNICovCisKKyAgLyogU1NMIGFsd2F5cyB0cmllcyB0byB2ZXJpZnkgdGhlIHBlZXIsIHRoaXMgb25seSBzYXlzIHdoZXRoZXIgaXQgc2hvdWxkCisgICAqIGZhaWwgdG8gY29ubmVjdCBpZiB0aGUgdmVyaWZpY2F0aW9uIGZhaWxzLCBvciBpZiBpdCBzaG91bGQgY29udGludWUKKyAgICogYW55d2F5LiBJbiB0aGUgbGF0dGVyIGNhc2UgdGhlIHJlc3VsdCBvZiB0aGUgdmVyaWZpY2F0aW9uIGlzIGNoZWNrZWQgd2l0aAorICAgKiBTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQoKSBiZWxvdy4gKi8KKyAgU1NMX0NUWF9zZXRfdmVyaWZ5KEJBQ0tFTkQtPmN0eCwKKyAgICAgICAgICAgICAgICAgICAgIFNTTF9DT05OX0NPTkZJRyh2ZXJpZnlwZWVyKT9TU0xfVkVSSUZZX1BFRVI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX1ZFUklGWV9OT05FLAorICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyNpZmRlZiBIQVZFX1NOSQorICBpZihzbmkpIHsKKyAgICBzdHJ1Y3QgaW5fYWRkciBhZGRyNDsKKyNpZmRlZiBFTkFCTEVfSVBWNgorICAgIHN0cnVjdCBpbjZfYWRkciBhZGRyNjsKKyNlbmRpZgorICAgIGNvbnN0IGNoYXIgKiBjb25zdCBob3N0bmFtZSA9IFNTTF9JU19QUk9YWSgpID8gY29ubi0+aHR0cF9wcm94eS5ob3N0Lm5hbWUgOgorICAgICAgY29ubi0+aG9zdC5uYW1lOworICAgIHNpemVfdCBob3N0bmFtZV9sZW4gPSBzdHJsZW4oaG9zdG5hbWUpOworICAgIGlmKChob3N0bmFtZV9sZW4gPCBVU0hSVF9NQVgpICYmCisgICAgICAgKDAgPT0gQ3VybF9pbmV0X3B0b24oQUZfSU5FVCwgaG9zdG5hbWUsICZhZGRyNCkpICYmCisjaWZkZWYgRU5BQkxFX0lQVjYKKyAgICAgICAoMCA9PSBDdXJsX2luZXRfcHRvbihBRl9JTkVUNiwgaG9zdG5hbWUsICZhZGRyNikpICYmCisjZW5kaWYKKyAgICAgICAod29sZlNTTF9DVFhfVXNlU05JKEJBQ0tFTkQtPmN0eCwgV09MRlNTTF9TTklfSE9TVF9OQU1FLCBob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIHNob3J0KWhvc3RuYW1lX2xlbikgIT0gMSkpIHsKKyAgICAgIGluZm9mKGRhdGEsICJXQVJOSU5HOiBmYWlsZWQgdG8gY29uZmlndXJlIHNlcnZlciBuYW1lIGluZGljYXRpb24gKFNOSSkgIgorICAgICAgICAgICAgIlRMUyBleHRlbnNpb25cbiIpOworICAgIH0KKyAgfQorI2VuZGlmCisKKyAgLyogZ2l2ZSBhcHBsaWNhdGlvbiBhIGNoYW5jZSB0byBpbnRlcmZlcmUgd2l0aCBTU0wgc2V0IHVwLiAqLworICBpZihkYXRhLT5zZXQuc3NsLmZzc2xjdHgpIHsKKyAgICBDVVJMY29kZSByZXN1bHQgPSAoKmRhdGEtPnNldC5zc2wuZnNzbGN0eCkoZGF0YSwgQkFDS0VORC0+Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3NsLmZzc2xjdHhwKTsKKyAgICBpZihyZXN1bHQpIHsKKyAgICAgIGZhaWxmKGRhdGEsICJlcnJvciBzaWduYWxlZCBieSBzc2wgY3R4IGNhbGxiYWNrIik7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgfQorI2lmZGVmIE5PX0ZJTEVTWVNURU0KKyAgZWxzZSBpZihTU0xfQ09OTl9DT05GSUcodmVyaWZ5cGVlcikpIHsKKyAgICBmYWlsZihkYXRhLCAiU1NMOiBDZXJ0aWZpY2F0ZXMgY2FuJ3QgYmUgbG9hZGVkIGJlY2F1c2Ugd29sZlNTTCB3YXMgYnVpbHQiCisgICAgICAgICAgIiB3aXRoIFwibm8gZmlsZXN5c3RlbVwiLiBFaXRoZXIgZGlzYWJsZSBwZWVyIHZlcmlmaWNhdGlvbiIKKyAgICAgICAgICAiIChpbnNlY3VyZSkgb3IgaWYgeW91IGFyZSBidWlsZGluZyBhbiBhcHBsaWNhdGlvbiB3aXRoIGxpYmN1cmwgeW91IgorICAgICAgICAgICIgY2FuIGxvYWQgY2VydGlmaWNhdGVzIHZpYSBDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04uIik7CisgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICB9CisjZW5kaWYKKworICAvKiBMZXQncyBtYWtlIGFuIFNTTCBzdHJ1Y3R1cmUgKi8KKyAgaWYoQkFDS0VORC0+aGFuZGxlKQorICAgIFNTTF9mcmVlKEJBQ0tFTkQtPmhhbmRsZSk7CisgIEJBQ0tFTkQtPmhhbmRsZSA9IFNTTF9uZXcoQkFDS0VORC0+Y3R4KTsKKyAgaWYoIUJBQ0tFTkQtPmhhbmRsZSkgeworICAgIGZhaWxmKGRhdGEsICJTU0w6IGNvdWxkbid0IGNyZWF0ZSBhIGNvbnRleHQgKGhhbmRsZSkhIik7CisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworI2lmZGVmIEhBVkVfQUxQTgorICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgeworICAgIGNoYXIgcHJvdG9jb2xzWzEyOF07CisgICAgKnByb3RvY29scyA9ICdcMCc7CisKKyAgICAvKiB3b2xmU1NMJ3MgQUxQTiBwcm90b2NvbCBuYW1lIGxpc3QgZm9ybWF0IGlzIGEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBvZgorICAgICAgIHByb3RvY29scyBpbiBkZXNjZW5kaW5nIG9yZGVyIG9mIHByZWZlcmVuY2UsIGVnOiAiaDIsaHR0cC8xLjEiICovCisKKyNpZmRlZiBVU0VfTkdIVFRQMgorICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yKSB7CisgICAgICBzdHJjcHkocHJvdG9jb2xzICsgc3RybGVuKHByb3RvY29scyksIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCAiLCIpOworICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIG9mZmVyaW5nICVzXG4iLCBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQpOworICAgIH0KKyNlbmRpZgorCisgICAgc3RyY3B5KHByb3RvY29scyArIHN0cmxlbihwcm90b2NvbHMpLCBBTFBOX0hUVFBfMV8xKTsKKyAgICBpbmZvZihkYXRhLCAiQUxQTiwgb2ZmZXJpbmcgJXNcbiIsIEFMUE5fSFRUUF8xXzEpOworCisgICAgaWYod29sZlNTTF9Vc2VBTFBOKEJBQ0tFTkQtPmhhbmRsZSwgcHJvdG9jb2xzLAorICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQpc3RybGVuKHByb3RvY29scyksCisgICAgICAgICAgICAgICAgICAgICAgIFdPTEZTU0xfQUxQTl9DT05USU5VRV9PTl9NSVNNQVRDSCkgIT0gU1NMX1NVQ0NFU1MpIHsKKyAgICAgIGZhaWxmKGRhdGEsICJTU0w6IGZhaWxlZCBzZXR0aW5nIEFMUE4gcHJvdG9jb2xzIik7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgfQorICB9CisjZW5kaWYgLyogSEFWRV9BTFBOICovCisKKyAgLyogQ2hlY2sgaWYgdGhlcmUncyBhIGNhY2hlZCBJRCB3ZSBjYW4vc2hvdWxkIHVzZSBoZXJlISAqLworICBpZihTU0xfU0VUX09QVElPTihwcmltYXJ5LnNlc3Npb25pZCkpIHsKKyAgICB2b2lkICpzc2xfc2Vzc2lvbmlkID0gTlVMTDsKKworICAgIEN1cmxfc3NsX3Nlc3Npb25pZF9sb2NrKGNvbm4pOworICAgIGlmKCFDdXJsX3NzbF9nZXRzZXNzaW9uaWQoY29ubiwgJnNzbF9zZXNzaW9uaWQsIE5VTEwsIHNvY2tpbmRleCkpIHsKKyAgICAgIC8qIHdlIGdvdCBhIHNlc3Npb24gaWQsIHVzZSBpdCEgKi8KKyAgICAgIGlmKCFTU0xfc2V0X3Nlc3Npb24oQkFDS0VORC0+aGFuZGxlLCBzc2xfc2Vzc2lvbmlkKSkgeworICAgICAgICBjaGFyIGVycm9yX2J1ZmZlcltXT0xGU1NMX01BWF9FUlJPUl9TWl07CisgICAgICAgIEN1cmxfc3NsX3Nlc3Npb25pZF91bmxvY2soY29ubik7CisgICAgICAgIGZhaWxmKGRhdGEsICJTU0w6IFNTTF9zZXRfc2Vzc2lvbiBmYWlsZWQ6ICVzIiwKKyAgICAgICAgICAgICAgRVJSX2Vycm9yX3N0cmluZyhTU0xfZ2V0X2Vycm9yKEJBQ0tFTkQtPmhhbmRsZSwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfYnVmZmVyKSk7CisgICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICAgIH0KKyAgICAgIC8qIEluZm9ybWF0aW9uYWwgbWVzc2FnZSAqLworICAgICAgaW5mb2YoZGF0YSwgIlNTTCByZS11c2luZyBzZXNzaW9uIElEXG4iKTsKKyAgICB9CisgICAgQ3VybF9zc2xfc2Vzc2lvbmlkX3VubG9jayhjb25uKTsKKyAgfQorCisgIC8qIHBhc3MgdGhlIHJhdyBzb2NrZXQgaW50byB0aGUgU1NMIGxheWVyICovCisgIGlmKCFTU0xfc2V0X2ZkKEJBQ0tFTkQtPmhhbmRsZSwgKGludClzb2NrZmQpKSB7CisgICAgZmFpbGYoZGF0YSwgIlNTTDogU1NMX3NldF9mZCBmYWlsZWQiKTsKKyAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgIH0KKworICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMjsKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisKK3N0YXRpYyBDVVJMY29kZQord29sZnNzbF9jb25uZWN0X3N0ZXAyKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgpCit7CisgIGludCByZXQgPSAtMTsKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhKiBjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOworICBjb25zdCBjaGFyICogY29uc3QgaG9zdG5hbWUgPSBTU0xfSVNfUFJPWFkoKSA/IGNvbm4tPmh0dHBfcHJveHkuaG9zdC5uYW1lIDoKKyAgICBjb25uLT5ob3N0Lm5hbWU7CisgIGNvbnN0IGNoYXIgKiBjb25zdCBkaXNwbmFtZSA9IFNTTF9JU19QUk9YWSgpID8KKyAgICBjb25uLT5odHRwX3Byb3h5Lmhvc3QuZGlzcG5hbWUgOiBjb25uLT5ob3N0LmRpc3BuYW1lOworICBjb25zdCBjaGFyICogY29uc3QgcGlubmVkcHVia2V5ID0gU1NMX0lTX1BST1hZKCkgPworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV9QUk9YWV0gOgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV9PUklHXTsKKworICBjb25uLT5yZWN2W3NvY2tpbmRleF0gPSB3b2xmc3NsX3JlY3Y7CisgIGNvbm4tPnNlbmRbc29ja2luZGV4XSA9IHdvbGZzc2xfc2VuZDsKKworICAvKiBFbmFibGUgUkZDMjgxOCBjaGVja3MgKi8KKyAgaWYoU1NMX0NPTk5fQ09ORklHKHZlcmlmeWhvc3QpKSB7CisgICAgcmV0ID0gd29sZlNTTF9jaGVja19kb21haW5fbmFtZShCQUNLRU5ELT5oYW5kbGUsIGhvc3RuYW1lKTsKKyAgICBpZihyZXQgPT0gU1NMX0ZBSUxVUkUpCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIHJldCA9IFNTTF9jb25uZWN0KEJBQ0tFTkQtPmhhbmRsZSk7CisgIGlmKHJldCAhPSAxKSB7CisgICAgY2hhciBlcnJvcl9idWZmZXJbV09MRlNTTF9NQVhfRVJST1JfU1pdOworICAgIGludCAgZGV0YWlsID0gU1NMX2dldF9lcnJvcihCQUNLRU5ELT5oYW5kbGUsIHJldCk7CisKKyAgICBpZihTU0xfRVJST1JfV0FOVF9SRUFEID09IGRldGFpbCkgeworICAgICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9IHNzbF9jb25uZWN0XzJfcmVhZGluZzsKKyAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICB9CisgICAgZWxzZSBpZihTU0xfRVJST1JfV0FOVF9XUklURSA9PSBkZXRhaWwpIHsKKyAgICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8yX3dyaXRpbmc7CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQorICAgIC8qIFRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIG92ZXJyaWRlIG9ubHkgdGhlIENOIG1hdGNoaW5nLgorICAgICAqIFRoaXMgd2lsbCBlbmFibGUgdGhlIG92ZXJyaWRlIG9mIGJvdGggbWlzbWF0Y2hpbmcgU3ViamVjdEFsdE5hbWVzCisgICAgICogYXMgYWxzbyBtaXNtYXRjaGluZyBDTiBmaWVsZHMgKi8KKyAgICBlbHNlIGlmKERPTUFJTl9OQU1FX01JU01BVENIID09IGRldGFpbCkgeworI2lmIDEKKyAgICAgIGZhaWxmKGRhdGEsICJcdHN1YmplY3QgYWx0IG5hbWUocykgb3IgY29tbW9uIG5hbWUgZG8gbm90IG1hdGNoIFwiJXNcIlxuIiwKKyAgICAgICAgICAgIGRpc3BuYW1lKTsKKyAgICAgIHJldHVybiBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047CisjZWxzZQorICAgICAgLyogV2hlbiB0aGUgd29sZnNzbF9jaGVja19kb21haW5fbmFtZSgpIGlzIHVzZWQgYW5kIHlvdSBkZXNpcmUgdG8KKyAgICAgICAqIGNvbnRpbnVlIG9uIGEgRE9NQUlOX05BTUVfTUlTTUFUQ0gsIGkuZS4gJ2Nvbm4tPnNzbF9jb25maWcudmVyaWZ5aG9zdAorICAgICAgICogPT0gMCcsIEN5YVNTTCB2ZXJzaW9uIDIuNC4wIHdpbGwgZmFpbCB3aXRoIGFuIElOQ09NUExFVEVfREFUQQorICAgICAgICogZXJyb3IuIFRoZSBvbmx5IHdheSB0byBkbyB0aGlzIGlzIGN1cnJlbnRseSB0byBzd2l0Y2ggdGhlCisgICAgICAgKiBXb2xmc3NsX2NoZWNrX2RvbWFpbl9uYW1lKCkgaW4gYW5kIG91dCBiYXNlZCBvbiB0aGUKKyAgICAgICAqICdjb25uLT5zc2xfY29uZmlnLnZlcmlmeWhvc3QnIHZhbHVlLiAqLworICAgICAgaWYoU1NMX0NPTk5fQ09ORklHKHZlcmlmeWhvc3QpKSB7CisgICAgICAgIGZhaWxmKGRhdGEsCisgICAgICAgICAgICAgICJcdHN1YmplY3QgYWx0IG5hbWUocykgb3IgY29tbW9uIG5hbWUgZG8gbm90IG1hdGNoIFwiJXNcIlxuIiwKKyAgICAgICAgICAgICAgZGlzcG5hbWUpOworICAgICAgICByZXR1cm4gQ1VSTEVfUEVFUl9GQUlMRURfVkVSSUZJQ0FUSU9OOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGluZm9mKGRhdGEsCisgICAgICAgICAgICAgICJcdHN1YmplY3QgYWx0IG5hbWUocykgYW5kL29yIGNvbW1vbiBuYW1lIGRvIG5vdCBtYXRjaCBcIiVzXCJcbiIsCisgICAgICAgICAgICAgIGRpc3BuYW1lKTsKKyAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgfQorI2VuZGlmCisgICAgfQorI2lmIExJQldPTEZTU0xfVkVSU0lPTl9IRVggPj0gMHgwMjAwNzAwMCAvKiAyLjcuMCAqLworICAgIGVsc2UgaWYoQVNOX05PX1NJR05FUl9FID09IGRldGFpbCkgeworICAgICAgaWYoU1NMX0NPTk5fQ09ORklHKHZlcmlmeXBlZXIpKSB7CisgICAgICAgIGZhaWxmKGRhdGEsICJcdENBIHNpZ25lciBub3QgYXZhaWxhYmxlIGZvciB2ZXJpZmljYXRpb25cbiIpOworICAgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NBQ0VSVF9CQURGSUxFOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIC8qIEp1c3QgY29udGludWUgd2l0aCBhIHdhcm5pbmcgaWYgbm8gc3RyaWN0IGNlcnRpZmljYXRlCisgICAgICAgICAgIHZlcmlmaWNhdGlvbiBpcyByZXF1aXJlZC4gKi8KKyAgICAgICAgaW5mb2YoZGF0YSwgIkNBIHNpZ25lciBub3QgYXZhaWxhYmxlIGZvciB2ZXJpZmljYXRpb24sICIKKyAgICAgICAgICAgICAgICAgICAgImNvbnRpbnVpbmcgYW55d2F5XG4iKTsKKyAgICAgIH0KKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgIGZhaWxmKGRhdGEsICJTU0xfY29ubmVjdCBmYWlsZWQgd2l0aCBlcnJvciAlZDogJXMiLCBkZXRhaWwsCisgICAgICAgICAgRVJSX2Vycm9yX3N0cmluZyhkZXRhaWwsIGVycm9yX2J1ZmZlcikpOworICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICAgIH0KKyAgfQorCisgIGlmKHBpbm5lZHB1YmtleSkgeworI2lmZGVmIEtFRVBfUEVFUl9DRVJUCisgICAgWDUwOSAqeDUwOTsKKyAgICBjb25zdCBjaGFyICp4NTA5X2RlcjsKKyAgICBpbnQgeDUwOV9kZXJfbGVuOworICAgIGN1cmxfWDUwOWNlcnRpZmljYXRlIHg1MDlfcGFyc2VkOworICAgIGN1cmxfYXNuMUVsZW1lbnQgKnB1YmtleTsKKyAgICBDVVJMY29kZSByZXN1bHQ7CisKKyAgICB4NTA5ID0gU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKEJBQ0tFTkQtPmhhbmRsZSk7CisgICAgaWYoIXg1MDkpIHsKKyAgICAgIGZhaWxmKGRhdGEsICJTU0w6IGZhaWxlZCByZXRyaWV2aW5nIHNlcnZlciBjZXJ0aWZpY2F0ZSIpOworICAgICAgcmV0dXJuIENVUkxFX1NTTF9QSU5ORURQVUJLRVlOT1RNQVRDSDsKKyAgICB9CisKKyAgICB4NTA5X2RlciA9IChjb25zdCBjaGFyICopd29sZlNTTF9YNTA5X2dldF9kZXIoeDUwOSwgJng1MDlfZGVyX2xlbik7CisgICAgaWYoIXg1MDlfZGVyKSB7CisgICAgICBmYWlsZihkYXRhLCAiU1NMOiBmYWlsZWQgcmV0cmlldmluZyBBU04uMSBzZXJ2ZXIgY2VydGlmaWNhdGUiKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7CisgICAgfQorCisgICAgbWVtc2V0KCZ4NTA5X3BhcnNlZCwgMCwgc2l6ZW9mKHg1MDlfcGFyc2VkKSk7CisgICAgaWYoQ3VybF9wYXJzZVg1MDkoJng1MDlfcGFyc2VkLCB4NTA5X2RlciwgeDUwOV9kZXIgKyB4NTA5X2Rlcl9sZW4pKQorICAgICAgcmV0dXJuIENVUkxFX1NTTF9QSU5ORURQVUJLRVlOT1RNQVRDSDsKKworICAgIHB1YmtleSA9ICZ4NTA5X3BhcnNlZC5zdWJqZWN0UHVibGljS2V5SW5mbzsKKyAgICBpZighcHVia2V5LT5oZWFkZXIgfHwgcHVia2V5LT5lbmQgPD0gcHVia2V5LT5oZWFkZXIpIHsKKyAgICAgIGZhaWxmKGRhdGEsICJTU0w6IGZhaWxlZCByZXRyaWV2aW5nIHB1YmxpYyBrZXkgZnJvbSBzZXJ2ZXIgY2VydGlmaWNhdGUiKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0g7CisgICAgfQorCisgICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkoZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRwdWJrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwdWJrZXktPmhlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZV90KShwdWJrZXktPmVuZCAtIHB1YmtleS0+aGVhZGVyKSk7CisgICAgaWYocmVzdWx0KSB7CisgICAgICBmYWlsZihkYXRhLCAiU1NMOiBwdWJsaWMga2V5IGRvZXMgbm90IG1hdGNoIHBpbm5lZCBwdWJsaWMga2V5ISIpOworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisjZWxzZQorICAgIGZhaWxmKGRhdGEsICJMaWJyYXJ5IGxhY2tzIHBpbm5pbmcgc3VwcG9ydCBidWlsdC1pbiIpOworICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47CisjZW5kaWYKKyAgfQorCisjaWZkZWYgSEFWRV9BTFBOCisgIGlmKGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuKSB7CisgICAgaW50IHJjOworICAgIGNoYXIgKnByb3RvY29sID0gTlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCBwcm90b2NvbF9sZW4gPSAwOworCisgICAgcmMgPSB3b2xmU1NMX0FMUE5fR2V0UHJvdG9jb2woQkFDS0VORC0+aGFuZGxlLCAmcHJvdG9jb2wsICZwcm90b2NvbF9sZW4pOworCisgICAgaWYocmMgPT0gU1NMX1NVQ0NFU1MpIHsKKyAgICAgIGluZm9mKGRhdGEsICJBTFBOLCBzZXJ2ZXIgYWNjZXB0ZWQgdG8gdXNlICUuKnNcbiIsIHByb3RvY29sX2xlbiwKKyAgICAgICAgICAgIHByb3RvY29sKTsKKworICAgICAgaWYocHJvdG9jb2xfbGVuID09IEFMUE5fSFRUUF8xXzFfTEVOR1RIICYmCisgICAgICAgICAhbWVtY21wKHByb3RvY29sLCBBTFBOX0hUVFBfMV8xLCBBTFBOX0hUVFBfMV8xX0xFTkdUSCkpCisgICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzFfMTsKKyNpZmRlZiBVU0VfTkdIVFRQMgorICAgICAgZWxzZSBpZihkYXRhLT5zZXQuaHR0cHZlcnNpb24gPj0gQ1VSTF9IVFRQX1ZFUlNJT05fMiAmJgorICAgICAgICAgICAgICBwcm90b2NvbF9sZW4gPT0gTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTiAmJgorICAgICAgICAgICAgICAhbWVtY21wKHByb3RvY29sLCBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQsCisgICAgICAgICAgICAgICAgICAgICAgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTikpCisgICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzI7CisjZW5kaWYKKyAgICAgIGVsc2UKKyAgICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIHVucmVjb2duaXplZCBwcm90b2NvbCAlLipzXG4iLCBwcm90b2NvbF9sZW4sCisgICAgICAgICAgICAgIHByb3RvY29sKTsKKyAgICAgIEN1cmxfbXVsdGl1c2Vfc3RhdGUoY29ubiwgY29ubi0+bmVnbnBuID09IENVUkxfSFRUUF9WRVJTSU9OXzIgPworICAgICAgICAgICAgICAgICAgICAgICAgICBCVU5ETEVfTVVMVElQTEVYIDogQlVORExFX05PX01VTFRJVVNFKTsKKyAgICB9CisgICAgZWxzZSBpZihyYyA9PSBTU0xfQUxQTl9OT1RfRk9VTkQpCisgICAgICBpbmZvZihkYXRhLCAiQUxQTiwgc2VydmVyIGRpZCBub3QgYWdyZWUgdG8gYSBwcm90b2NvbFxuIik7CisgICAgZWxzZSB7CisgICAgICBmYWlsZihkYXRhLCAiQUxQTiwgZmFpbHVyZSBnZXR0aW5nIHByb3RvY29sLCBlcnJvciAlZCIsIHJjKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICB9CisgIH0KKyNlbmRpZiAvKiBIQVZFX0FMUE4gKi8KKworICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMzsKKyNpZiAoTElCV09MRlNTTF9WRVJTSU9OX0hFWCA+PSAweDAzMDA5MDEwKQorICBpbmZvZihkYXRhLCAiU1NMIGNvbm5lY3Rpb24gdXNpbmcgJXMgLyAlc1xuIiwKKyAgICAgICAgd29sZlNTTF9nZXRfdmVyc2lvbihCQUNLRU5ELT5oYW5kbGUpLAorICAgICAgICB3b2xmU1NMX2dldF9jaXBoZXJfbmFtZShCQUNLRU5ELT5oYW5kbGUpKTsKKyNlbHNlCisgIGluZm9mKGRhdGEsICJTU0wgY29ubmVjdGVkXG4iKTsKKyNlbmRpZgorCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworCitzdGF0aWMgQ1VSTGNvZGUKK3dvbGZzc2xfY29ubmVjdF9zdGVwMyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4KQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc3RydWN0IEN1cmxfZWFzeSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOworCisgIERFQlVHQVNTRVJUKHNzbF9jb25uZWN0XzMgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSk7CisKKyAgaWYoU1NMX1NFVF9PUFRJT04ocHJpbWFyeS5zZXNzaW9uaWQpKSB7CisgICAgYm9vbCBpbmNhY2hlOworICAgIFNTTF9TRVNTSU9OICpvdXJfc3NsX3Nlc3Npb25pZDsKKyAgICB2b2lkICpvbGRfc3NsX3Nlc3Npb25pZCA9IE5VTEw7CisKKyAgICBvdXJfc3NsX3Nlc3Npb25pZCA9IFNTTF9nZXRfc2Vzc2lvbihCQUNLRU5ELT5oYW5kbGUpOworCisgICAgQ3VybF9zc2xfc2Vzc2lvbmlkX2xvY2soY29ubik7CisgICAgaW5jYWNoZSA9ICEoQ3VybF9zc2xfZ2V0c2Vzc2lvbmlkKGNvbm4sICZvbGRfc3NsX3Nlc3Npb25pZCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2luZGV4KSk7CisgICAgaWYoaW5jYWNoZSkgeworICAgICAgaWYob2xkX3NzbF9zZXNzaW9uaWQgIT0gb3VyX3NzbF9zZXNzaW9uaWQpIHsKKyAgICAgICAgaW5mb2YoZGF0YSwgIm9sZCBTU0wgc2Vzc2lvbiBJRCBpcyBzdGFsZSwgcmVtb3ZpbmdcbiIpOworICAgICAgICBDdXJsX3NzbF9kZWxzZXNzaW9uaWQoY29ubiwgb2xkX3NzbF9zZXNzaW9uaWQpOworICAgICAgICBpbmNhY2hlID0gRkFMU0U7CisgICAgICB9CisgICAgfQorCisgICAgaWYoIWluY2FjaGUpIHsKKyAgICAgIHJlc3VsdCA9IEN1cmxfc3NsX2FkZHNlc3Npb25pZChjb25uLCBvdXJfc3NsX3Nlc3Npb25pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIHVua25vd24gc2l6ZSAqLywgc29ja2luZGV4KTsKKyAgICAgIGlmKHJlc3VsdCkgeworICAgICAgICBDdXJsX3NzbF9zZXNzaW9uaWRfdW5sb2NrKGNvbm4pOworICAgICAgICBmYWlsZihkYXRhLCAiZmFpbGVkIHRvIHN0b3JlIHNzbCBzZXNzaW9uIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICB9CisgICAgfQorICAgIEN1cmxfc3NsX3Nlc3Npb25pZF91bmxvY2soY29ubik7CisgIH0KKworICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfZG9uZTsKKworICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBzc2l6ZV90IHdvbGZzc2xfc2VuZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqbWVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlICpjdXJsY29kZSkKK3sKKyAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07CisgIGNoYXIgZXJyb3JfYnVmZmVyW1dPTEZTU0xfTUFYX0VSUk9SX1NaXTsKKyAgaW50ICBtZW1sZW4gPSAobGVuID4gKHNpemVfdClJTlRfTUFYKSA/IElOVF9NQVggOiAoaW50KWxlbjsKKyAgaW50ICByYyAgICAgPSBTU0xfd3JpdGUoQkFDS0VORC0+aGFuZGxlLCBtZW0sIG1lbWxlbik7CisKKyAgaWYocmMgPCAwKSB7CisgICAgaW50IGVyciA9IFNTTF9nZXRfZXJyb3IoQkFDS0VORC0+aGFuZGxlLCByYyk7CisKKyAgICBzd2l0Y2goZXJyKSB7CisgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9SRUFEOgorICAgIGNhc2UgU1NMX0VSUk9SX1dBTlRfV1JJVEU6CisgICAgICAvKiB0aGVyZSdzIGRhdGEgcGVuZGluZywgcmUtaW52b2tlIFNTTF93cml0ZSgpICovCisgICAgICAqY3VybGNvZGUgPSBDVVJMRV9BR0FJTjsKKyAgICAgIHJldHVybiAtMTsKKyAgICBkZWZhdWx0OgorICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgIlNTTCB3cml0ZTogJXMsIGVycm5vICVkIiwKKyAgICAgICAgICAgIEVSUl9lcnJvcl9zdHJpbmcoZXJyLCBlcnJvcl9idWZmZXIpLAorICAgICAgICAgICAgU09DS0VSUk5PKTsKKyAgICAgICpjdXJsY29kZSA9IENVUkxFX1NFTkRfRVJST1I7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisgIHJldHVybiByYzsKK30KKworc3RhdGljIHZvaWQgQ3VybF93b2xmc3NsX2Nsb3NlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKK3sKKyAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07CisKKyAgaWYoQkFDS0VORC0+aGFuZGxlKSB7CisgICAgKHZvaWQpU1NMX3NodXRkb3duKEJBQ0tFTkQtPmhhbmRsZSk7CisgICAgU1NMX2ZyZWUoQkFDS0VORC0+aGFuZGxlKTsKKyAgICBCQUNLRU5ELT5oYW5kbGUgPSBOVUxMOworICB9CisgIGlmKEJBQ0tFTkQtPmN0eCkgeworICAgIFNTTF9DVFhfZnJlZShCQUNLRU5ELT5jdHgpOworICAgIEJBQ0tFTkQtPmN0eCA9IE5VTEw7CisgIH0KK30KKworc3RhdGljIHNzaXplX3Qgd29sZnNzbF9yZWN2KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmZmVyc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlICpjdXJsY29kZSkKK3sKKyAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW251bV07CisgIGNoYXIgZXJyb3JfYnVmZmVyW1dPTEZTU0xfTUFYX0VSUk9SX1NaXTsKKyAgaW50ICBidWZmc2l6ZSA9IChidWZmZXJzaXplID4gKHNpemVfdClJTlRfTUFYKSA/IElOVF9NQVggOiAoaW50KWJ1ZmZlcnNpemU7CisgIGludCAgbnJlYWQgICAgPSBTU0xfcmVhZChCQUNLRU5ELT5oYW5kbGUsIGJ1ZiwgYnVmZnNpemUpOworCisgIGlmKG5yZWFkIDwgMCkgeworICAgIGludCBlcnIgPSBTU0xfZ2V0X2Vycm9yKEJBQ0tFTkQtPmhhbmRsZSwgbnJlYWQpOworCisgICAgc3dpdGNoKGVycikgeworICAgIGNhc2UgU1NMX0VSUk9SX1pFUk9fUkVUVVJOOiAvKiBubyBtb3JlIGRhdGEgKi8KKyAgICAgIGJyZWFrOworICAgIGNhc2UgU1NMX0VSUk9SX1dBTlRfUkVBRDoKKyAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX1dSSVRFOgorICAgICAgLyogdGhlcmUncyBkYXRhIHBlbmRpbmcsIHJlLWludm9rZSBTU0xfcmVhZCgpICovCisgICAgICAqY3VybGNvZGUgPSBDVVJMRV9BR0FJTjsKKyAgICAgIHJldHVybiAtMTsKKyAgICBkZWZhdWx0OgorICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgIlNTTCByZWFkOiAlcywgZXJybm8gJWQiLAorICAgICAgICAgICAgRVJSX2Vycm9yX3N0cmluZyhlcnIsIGVycm9yX2J1ZmZlciksCisgICAgICAgICAgICBTT0NLRVJSTk8pOworICAgICAgKmN1cmxjb2RlID0gQ1VSTEVfUkVDVl9FUlJPUjsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIG5yZWFkOworfQorCisKK3N0YXRpYyB2b2lkIEN1cmxfd29sZnNzbF9zZXNzaW9uX2ZyZWUodm9pZCAqcHRyKQoreworICAodm9pZClwdHI7CisgIC8qIHdvbGZTU0wgcmV1c2VzIHNlc3Npb25zIG9uIG93biwgbm8gZnJlZSAqLworfQorCisKK3N0YXRpYyBzaXplX3QgQ3VybF93b2xmc3NsX3ZlcnNpb24oY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKK3sKKyNpZiBMSUJXT0xGU1NMX1ZFUlNJT05fSEVYID49IDB4MDMwMDYwMDAKKyAgcmV0dXJuIG1zbnByaW50ZihidWZmZXIsIHNpemUsICJ3b2xmU1NMLyVzIiwgd29sZlNTTF9saWJfdmVyc2lvbigpKTsKKyNlbGlmIGRlZmluZWQoV09MRlNTTF9WRVJTSU9OKQorICByZXR1cm4gbXNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIndvbGZTU0wvJXMiLCBXT0xGU1NMX1ZFUlNJT04pOworI2VuZGlmCit9CisKKworc3RhdGljIGludCBDdXJsX3dvbGZzc2xfaW5pdCh2b2lkKQoreworICByZXR1cm4gKHdvbGZTU0xfSW5pdCgpID09IFNTTF9TVUNDRVNTKTsKK30KKworCitzdGF0aWMgdm9pZCBDdXJsX3dvbGZzc2xfY2xlYW51cCh2b2lkKQoreworICB3b2xmU1NMX0NsZWFudXAoKTsKK30KKworCitzdGF0aWMgYm9vbCBDdXJsX3dvbGZzc2xfZGF0YV9wZW5kaW5nKGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSogY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29ubmluZGV4KQoreworICBjb25zdCBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbY29ubmluZGV4XTsKKyAgaWYoQkFDS0VORC0+aGFuZGxlKSAgIC8qIFNTTCBpcyBpbiB1c2UgKi8KKyAgICByZXR1cm4gKDAgIT0gU1NMX3BlbmRpbmcoQkFDS0VORC0+aGFuZGxlKSkgPyBUUlVFIDogRkFMU0U7CisgIGVsc2UKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIHNodXQgZG93biB0aGUgU1NMIGxheWVyIGJ1dCBrZWVwIHRoZQorICogc29ja2V0IG9wZW4gKENDQyAtIENsZWFyIENvbW1hbmQgQ2hhbm5lbCkKKyAqLworc3RhdGljIGludCBDdXJsX3dvbGZzc2xfc2h1dGRvd24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4KQoreworICBpbnQgcmV0dmFsID0gMDsKKyAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07CisKKyAgaWYoQkFDS0VORC0+aGFuZGxlKSB7CisgICAgU1NMX2ZyZWUoQkFDS0VORC0+aGFuZGxlKTsKKyAgICBCQUNLRU5ELT5oYW5kbGUgPSBOVUxMOworICB9CisgIHJldHVybiByZXR2YWw7Cit9CisKKworc3RhdGljIENVUkxjb2RlCit3b2xmc3NsX2Nvbm5lY3RfY29tbW9uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uYmxvY2tpbmcsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9uZSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0OworICBzdHJ1Y3QgQ3VybF9lYXN5ICpkYXRhID0gY29ubi0+ZGF0YTsKKyAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07CisgIGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tzb2NraW5kZXhdOworICB0aW1lX3QgdGltZW91dF9tczsKKyAgaW50IHdoYXQ7CisKKyAgLyogY2hlY2sgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hlZCAqLworICBpZihzc2xfY29ubmVjdGlvbl9jb21wbGV0ZSA9PSBjb25uc3NsLT5zdGF0ZSkgeworICAgICpkb25lID0gVFJVRTsKKyAgICByZXR1cm4gQ1VSTEVfT0s7CisgIH0KKworICBpZihzc2xfY29ubmVjdF8xID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpIHsKKyAgICAvKiBGaW5kIG91dCBob3cgbXVjaCBtb3JlIHRpbWUgd2UncmUgYWxsb3dlZCAqLworICAgIHRpbWVvdXRfbXMgPSBDdXJsX3RpbWVsZWZ0KGRhdGEsIE5VTEwsIFRSVUUpOworCisgICAgaWYodGltZW91dF9tcyA8IDApIHsKKyAgICAgIC8qIG5vIG5lZWQgdG8gY29udGludWUgaWYgdGltZSBhbHJlYWR5IGlzIHVwICovCisgICAgICBmYWlsZihkYXRhLCAiU1NMIGNvbm5lY3Rpb24gdGltZW91dCIpOworICAgICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKKyAgICB9CisKKyAgICByZXN1bHQgPSB3b2xmc3NsX2Nvbm5lY3Rfc3RlcDEoY29ubiwgc29ja2luZGV4KTsKKyAgICBpZihyZXN1bHQpCisgICAgICByZXR1cm4gcmVzdWx0OworICB9CisKKyAgd2hpbGUoc3NsX2Nvbm5lY3RfMiA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlIHx8CisgICAgICAgIHNzbF9jb25uZWN0XzJfcmVhZGluZyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlIHx8CisgICAgICAgIHNzbF9jb25uZWN0XzJfd3JpdGluZyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKSB7CisKKyAgICAvKiBjaGVjayBhbGxvd2VkIHRpbWUgbGVmdCAqLworICAgIHRpbWVvdXRfbXMgPSBDdXJsX3RpbWVsZWZ0KGRhdGEsIE5VTEwsIFRSVUUpOworCisgICAgaWYodGltZW91dF9tcyA8IDApIHsKKyAgICAgIC8qIG5vIG5lZWQgdG8gY29udGludWUgaWYgdGltZSBhbHJlYWR5IGlzIHVwICovCisgICAgICBmYWlsZihkYXRhLCAiU1NMIGNvbm5lY3Rpb24gdGltZW91dCIpOworICAgICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsKKyAgICB9CisKKyAgICAvKiBpZiBzc2wgaXMgZXhwZWN0aW5nIHNvbWV0aGluZywgY2hlY2sgaWYgaXQncyBhdmFpbGFibGUuICovCisgICAgaWYoY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9PSBzc2xfY29ubmVjdF8yX3JlYWRpbmcKKyAgICAgICB8fCBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID09IHNzbF9jb25uZWN0XzJfd3JpdGluZykgeworCisgICAgICBjdXJsX3NvY2tldF90IHdyaXRlZmQgPSBzc2xfY29ubmVjdF8yX3dyaXRpbmcgPT0KKyAgICAgICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZT9zb2NrZmQ6Q1VSTF9TT0NLRVRfQkFEOworICAgICAgY3VybF9zb2NrZXRfdCByZWFkZmQgPSBzc2xfY29ubmVjdF8yX3JlYWRpbmcgPT0KKyAgICAgICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZT9zb2NrZmQ6Q1VSTF9TT0NLRVRfQkFEOworCisgICAgICB3aGF0ID0gQ3VybF9zb2NrZXRfY2hlY2socmVhZGZkLCBDVVJMX1NPQ0tFVF9CQUQsIHdyaXRlZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uYmxvY2tpbmc/MDp0aW1lb3V0X21zKTsKKyAgICAgIGlmKHdoYXQgPCAwKSB7CisgICAgICAgIC8qIGZhdGFsIGVycm9yICovCisgICAgICAgIGZhaWxmKGRhdGEsICJzZWxlY3QvcG9sbCBvbiBTU0wgc29ja2V0LCBlcnJubzogJWQiLCBTT0NLRVJSTk8pOworICAgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgICB9CisgICAgICBlbHNlIGlmKDAgPT0gd2hhdCkgeworICAgICAgICBpZihub25ibG9ja2luZykgeworICAgICAgICAgICpkb25lID0gRkFMU0U7CisgICAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIC8qIHRpbWVvdXQgKi8KKyAgICAgICAgICBmYWlsZihkYXRhLCAiU1NMIGNvbm5lY3Rpb24gdGltZW91dCIpOworICAgICAgICAgIHJldHVybiBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIC8qIHNvY2tldCBpcyByZWFkYWJsZSBvciB3cml0YWJsZSAqLworICAgIH0KKworICAgIC8qIFJ1biB0cmFuc2FjdGlvbiwgYW5kIHJldHVybiB0byB0aGUgY2FsbGVyIGlmIGl0IGZhaWxlZCBvciBpZgorICAgICAqIHRoaXMgY29ubmVjdGlvbiBpcyBwYXJ0IG9mIGEgbXVsdGkgaGFuZGxlIGFuZCB0aGlzIGxvb3Agd291bGQKKyAgICAgKiBleGVjdXRlIGFnYWluLiBUaGlzIHBlcm1pdHMgdGhlIG93bmVyIG9mIGEgbXVsdGkgaGFuZGxlIHRvCisgICAgICogYWJvcnQgYSBjb25uZWN0aW9uIGF0dGVtcHQgYmVmb3JlIHN0ZXAyIGhhcyBjb21wbGV0ZWQgd2hpbGUKKyAgICAgKiBlbnN1cmluZyB0aGF0IGEgY2xpZW50IHVzaW5nIHNlbGVjdCgpIG9yIGVwb2xsKCkgd2lsbCBhbHdheXMKKyAgICAgKiBoYXZlIGEgdmFsaWQgZmRzZXQgdG8gd2FpdCBvbi4KKyAgICAgKi8KKyAgICByZXN1bHQgPSB3b2xmc3NsX2Nvbm5lY3Rfc3RlcDIoY29ubiwgc29ja2luZGV4KTsKKyAgICBpZihyZXN1bHQgfHwgKG5vbmJsb2NraW5nICYmCisgICAgICAgICAgICAgICAgICAoc3NsX2Nvbm5lY3RfMiA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlIHx8CisgICAgICAgICAgICAgICAgICAgc3NsX2Nvbm5lY3RfMl9yZWFkaW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKKyAgICAgICAgICAgICAgICAgICBzc2xfY29ubmVjdF8yX3dyaXRpbmcgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSkpKQorICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgfSAvKiByZXBlYXQgc3RlcDIgdW50aWwgYWxsIHRyYW5zYWN0aW9ucyBhcmUgZG9uZS4gKi8KKworICBpZihzc2xfY29ubmVjdF8zID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpIHsKKyAgICByZXN1bHQgPSB3b2xmc3NsX2Nvbm5lY3Rfc3RlcDMoY29ubiwgc29ja2luZGV4KTsKKyAgICBpZihyZXN1bHQpCisgICAgICByZXR1cm4gcmVzdWx0OworICB9CisKKyAgaWYoc3NsX2Nvbm5lY3RfZG9uZSA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKSB7CisgICAgY29ubnNzbC0+c3RhdGUgPSBzc2xfY29ubmVjdGlvbl9jb21wbGV0ZTsKKyAgICBjb25uLT5yZWN2W3NvY2tpbmRleF0gPSB3b2xmc3NsX3JlY3Y7CisgICAgY29ubi0+c2VuZFtzb2NraW5kZXhdID0gd29sZnNzbF9zZW5kOworICAgICpkb25lID0gVFJVRTsKKyAgfQorICBlbHNlCisgICAgKmRvbmUgPSBGQUxTRTsKKworICAvKiBSZXNldCBvdXIgY29ubmVjdCBzdGF0ZSBtYWNoaW5lICovCisgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8xOworCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworCitzdGF0aWMgQ1VSTGNvZGUgQ3VybF93b2xmc3NsX2Nvbm5lY3Rfbm9uYmxvY2tpbmcoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwgYm9vbCAqZG9uZSkKK3sKKyAgcmV0dXJuIHdvbGZzc2xfY29ubmVjdF9jb21tb24oY29ubiwgc29ja2luZGV4LCBUUlVFLCBkb25lKTsKK30KKworCitzdGF0aWMgQ1VSTGNvZGUgQ3VybF93b2xmc3NsX2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4KQoreworICBDVVJMY29kZSByZXN1bHQ7CisgIGJvb2wgZG9uZSA9IEZBTFNFOworCisgIHJlc3VsdCA9IHdvbGZzc2xfY29ubmVjdF9jb21tb24oY29ubiwgc29ja2luZGV4LCBGQUxTRSwgJmRvbmUpOworICBpZihyZXN1bHQpCisgICAgcmV0dXJuIHJlc3VsdDsKKworICBERUJVR0FTU0VSVChkb25lKTsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3N0YXRpYyBDVVJMY29kZSBDdXJsX3dvbGZzc2xfcmFuZG9tKHN0cnVjdCBDdXJsX2Vhc3kgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmVudHJvcHksIHNpemVfdCBsZW5ndGgpCit7CisgIFdDX1JORyBybmc7CisgICh2b2lkKWRhdGE7CisgIGlmKHdjX0luaXRSbmcoJnJuZykpCisgICAgcmV0dXJuIENVUkxFX0ZBSUxFRF9JTklUOworICBpZihsZW5ndGggPiBVSU5UX01BWCkKKyAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgIGlmKHdjX1JOR19HZW5lcmF0ZUJsb2NrKCZybmcsIGVudHJvcHksICh1bnNpZ25lZClsZW5ndGgpKQorICAgIHJldHVybiBDVVJMRV9GQUlMRURfSU5JVDsKKyAgaWYod2NfRnJlZVJuZygmcm5nKSkKKyAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CisgIHJldHVybiBDVVJMRV9PSzsKK30KKworc3RhdGljIENVUkxjb2RlIEN1cmxfd29sZnNzbF9zaGEyNTZzdW0oY29uc3QgdW5zaWduZWQgY2hhciAqdG1wLCAvKiBpbnB1dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHRtcGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNoYTI1NnN1bSAvKiBvdXRwdXQgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdW51c2VkKQoreworICB3Y19TaGEyNTYgU0hBMjU2cHc7CisgICh2b2lkKXVudXNlZDsKKyAgd2NfSW5pdFNoYTI1NigmU0hBMjU2cHcpOworICB3Y19TaGEyNTZVcGRhdGUoJlNIQTI1NnB3LCB0bXAsICh3b3JkMzIpdG1wbGVuKTsKKyAgd2NfU2hhMjU2RmluYWwoJlNIQTI1NnB3LCBzaGEyNTZzdW0pOworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3N0YXRpYyB2b2lkICpDdXJsX3dvbGZzc2xfZ2V0X2ludGVybmFscyhzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxJTkZPIGluZm8gVU5VU0VEX1BBUkFNKQoreworICAodm9pZClpbmZvOworICByZXR1cm4gQkFDS0VORC0+aGFuZGxlOworfQorCitjb25zdCBzdHJ1Y3QgQ3VybF9zc2wgQ3VybF9zc2xfd29sZnNzbCA9IHsKKyAgeyBDVVJMU1NMQkFDS0VORF9XT0xGU1NMLCAiV29sZlNTTCIgfSwgLyogaW5mbyAqLworCisjaWZkZWYgS0VFUF9QRUVSX0NFUlQKKyAgU1NMU1VQUF9QSU5ORURQVUJLRVkgfAorI2VuZGlmCisgIFNTTFNVUFBfU1NMX0NUWCwKKworICBzaXplb2Yoc3RydWN0IHNzbF9iYWNrZW5kX2RhdGEpLAorCisgIEN1cmxfd29sZnNzbF9pbml0LCAgICAgICAgICAgICAgICAvKiBpbml0ICovCisgIEN1cmxfd29sZnNzbF9jbGVhbnVwLCAgICAgICAgICAgICAvKiBjbGVhbnVwICovCisgIEN1cmxfd29sZnNzbF92ZXJzaW9uLCAgICAgICAgICAgICAvKiB2ZXJzaW9uICovCisgIEN1cmxfbm9uZV9jaGVja19jeG4sICAgICAgICAgICAgIC8qIGNoZWNrX2N4biAqLworICBDdXJsX3dvbGZzc2xfc2h1dGRvd24sICAgICAgICAgICAgLyogc2h1dGRvd24gKi8KKyAgQ3VybF93b2xmc3NsX2RhdGFfcGVuZGluZywgICAgICAgIC8qIGRhdGFfcGVuZGluZyAqLworICBDdXJsX3dvbGZzc2xfcmFuZG9tLCAgICAgICAgICAgICAgLyogcmFuZG9tICovCisgIEN1cmxfbm9uZV9jZXJ0X3N0YXR1c19yZXF1ZXN0LCAgIC8qIGNlcnRfc3RhdHVzX3JlcXVlc3QgKi8KKyAgQ3VybF93b2xmc3NsX2Nvbm5lY3QsICAgICAgICAgICAgIC8qIGNvbm5lY3QgKi8KKyAgQ3VybF93b2xmc3NsX2Nvbm5lY3Rfbm9uYmxvY2tpbmcsIC8qIGNvbm5lY3Rfbm9uYmxvY2tpbmcgKi8KKyAgQ3VybF93b2xmc3NsX2dldF9pbnRlcm5hbHMsICAgICAgIC8qIGdldF9pbnRlcm5hbHMgKi8KKyAgQ3VybF93b2xmc3NsX2Nsb3NlLCAgICAgICAgICAgICAgIC8qIGNsb3NlX29uZSAqLworICBDdXJsX25vbmVfY2xvc2VfYWxsLCAgICAgICAgICAgICAvKiBjbG9zZV9hbGwgKi8KKyAgQ3VybF93b2xmc3NsX3Nlc3Npb25fZnJlZSwgICAgICAgIC8qIHNlc3Npb25fZnJlZSAqLworICBDdXJsX25vbmVfc2V0X2VuZ2luZSwgICAgICAgICAgICAvKiBzZXRfZW5naW5lICovCisgIEN1cmxfbm9uZV9zZXRfZW5naW5lX2RlZmF1bHQsICAgIC8qIHNldF9lbmdpbmVfZGVmYXVsdCAqLworICBDdXJsX25vbmVfZW5naW5lc19saXN0LCAgICAgICAgICAvKiBlbmdpbmVzX2xpc3QgKi8KKyAgQ3VybF9ub25lX2ZhbHNlX3N0YXJ0LCAgICAgICAgICAgLyogZmFsc2Vfc3RhcnQgKi8KKyAgQ3VybF9ub25lX21kNXN1bSwgICAgICAgICAgICAgICAgLyogbWQ1c3VtICovCisgIEN1cmxfd29sZnNzbF9zaGEyNTZzdW0gICAgICAgICAgICAvKiBzaGEyNTZzdW0gKi8KK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy93b2xmc3NsLmggYi9VdGlsaXRpZXMvY21jdXJsL2xpYi92dGxzL3dvbGZzc2wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjk2NzNjCi0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIvdnRscy93b2xmc3NsLmgKQEAgLTAsMCArMSwzMSBAQAorI2lmbmRlZiBIRUFERVJfQ1VSTF9XT0xGU1NMX0gKKyNkZWZpbmUgSEVBREVSX0NVUkxfV09MRlNTTF9ICisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE5LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWZkZWYgVVNFX1dPTEZTU0wKKworZXh0ZXJuIGNvbnN0IHN0cnVjdCBDdXJsX3NzbCBDdXJsX3NzbF93b2xmc3NsOworCisjZW5kaWYgLyogVVNFX1dPTEZTU0wgKi8KKyNlbmRpZiAvKiBIRUFERVJfQ1VSTF9XT0xGU1NMX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3g1MDlhc24xLmMgYi9VdGlsaXRpZXMvY21jdXJsL2xpYi94NTA5YXNuMS5jCmluZGV4IDBjMTI1NmIuLmVjZTUzNjQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWN1cmwvbGliL3g1MDlhc24xLmMKKysrIGIvVXRpbGl0aWVzL2NtY3VybC9saWIveDUwOWFzbjEuYwpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKIAogI2lmIGRlZmluZWQoVVNFX0dTS0lUKSB8fCBkZWZpbmVkKFVTRV9OU1MpIHx8IGRlZmluZWQoVVNFX0dOVVRMUykgfHwgXAotICAgIGRlZmluZWQoVVNFX0NZQVNTTCkgfHwgZGVmaW5lZChVU0VfU0NIQU5ORUwpCisgICAgZGVmaW5lZChVU0VfV09MRlNTTCkgfHwgZGVmaW5lZChVU0VfU0NIQU5ORUwpCiAKICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KICNpbmNsdWRlICJ1cmxkYXRhLmgiCkBAIC0xMTA0LDcgKzExMDQsNyBAQAogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKLSNlbmRpZiAvKiBVU0VfR1NLSVQgb3IgVVNFX05TUyBvciBVU0VfR05VVExTIG9yIFVTRV9DWUFTU0wgb3IgVVNFX1NDSEFOTkVMICovCisjZW5kaWYgLyogVVNFX0dTS0lUIG9yIFVTRV9OU1Mgb3IgVVNFX0dOVVRMUyBvciBVU0VfV09MRlNTTCBvciBVU0VfU0NIQU5ORUwgKi8KIAogI2lmIGRlZmluZWQoVVNFX0dTS0lUKQogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21jdXJsL2xpYi94NTA5YXNuMS5oIGIvVXRpbGl0aWVzL2NtY3VybC9saWIveDUwOWFzbjEuaAppbmRleCBjZTQwMjk3Li4yMDVmZGMwIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21jdXJsL2xpYi94NTA5YXNuMS5oCisrKyBiL1V0aWxpdGllcy9jbWN1cmwvbGliL3g1MDlhc24xLmgKQEAgLTgsNyArOCw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTksIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCiAKICNpZiBkZWZpbmVkKFVTRV9HU0tJVCkgfHwgZGVmaW5lZChVU0VfTlNTKSB8fCBkZWZpbmVkKFVTRV9HTlVUTFMpIHx8IFwKLSAgICBkZWZpbmVkKFVTRV9DWUFTU0wpIHx8IGRlZmluZWQoVVNFX1NDSEFOTkVMKQorICAgIGRlZmluZWQoVVNFX1dPTEZTU0wpIHx8IGRlZmluZWQoVVNFX1NDSEFOTkVMKQogCiAjaW5jbHVkZSAidXJsZGF0YS5oIgogCkBAIC0xMzAsNSArMTMwLDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpiZWcsIGNvbnN0IGNoYXIgKmVuZCk7CiBDVVJMY29kZSBDdXJsX3ZlcmlmeWhvc3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJlZywgY29uc3QgY2hhciAqZW5kKTsKLSNlbmRpZiAvKiBVU0VfR1NLSVQgb3IgVVNFX05TUyBvciBVU0VfR05VVExTIG9yIFVTRV9DWUFTU0wgb3IgVVNFX1NDSEFOTkVMICovCisjZW5kaWYgLyogVVNFX0dTS0lUIG9yIFVTRV9OU1Mgb3IgVVNFX0dOVVRMUyBvciBVU0VfV09MRlNTTCBvciBVU0VfU0NIQU5ORUwgKi8KICNlbmRpZiAvKiBIRUFERVJfQ1VSTF9YNTA5QVNOMV9IICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL0NNYWtlTGlzdHMudHh0IGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyNmE5YWE5Li5kNDcyOWI1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL0NNYWtlTGlzdHMudHh0CisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvQ01ha2VMaXN0cy50eHQKQEAgLTEsOSArMSw0MyBAQAorIworSUYoMCkgIyBDTWFrZSBoYW5kbGVzIHBvbGljeSBzZXR0aW5ncyBpbiBpdHMgb3duIGJ1aWxkLgorQ01BS0VfTUlOSU1VTV9SRVFVSVJFRChWRVJTSU9OIDIuOC4xMiBGQVRBTF9FUlJPUikKK2lmKFBPTElDWSBDTVAwMDc0KQorICBjbWFrZV9wb2xpY3koU0VUIENNUDAwNzQgTkVXKSAjMy4xMi4wIGBmaW5kX3BhY2thZ2UoKWBgIHVzZXMgYGA8UGFja2FnZU5hbWU+X1JPT1RgYCB2YXJpYWJsZXMuCitlbmRpZigpCitFTkRJRigpCisjCiBQUk9KRUNUKGxpYmFyY2hpdmUgQykKICMKIFNFVChDTUFLRV9NT0RVTEVfUEFUSCAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2J1aWxkL2NtYWtlIikKIGlmKE5PVCBDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkpCiAgIHNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtsaWJhcmNoaXZlX0JJTkFSWV9ESVJ9L2JpbikKIGVuZGlmKCkKK0lGKDApICMgQ01ha2UgaGFuZGxlcyBidWlsZCB0eXBlIHNlbGVjdGlvbiBpbiBpdHMgb3duIGJ1aWxkLgorIworIyBTZXQgdGhlIEJ1aWxkIHR5cGUgZm9yIG1ha2UgYmFzZWQgZ2VuZXJhdG9ycy4KKyMgWW91IGNhbiBjaG9vc2UgZm9sbG93aW5nIHR5cGVzOgorIyAgIERlYnVnICAgICAgICAgIDogRGVidWcgYnVpbGQKKyMgICBSZWxlYXNlICAgICAgICA6IFJlbGVhc2UgYnVpbGQKKyMgICBSZWxXaXRoRGViSW5mbyA6IFJlbGVhc2UgYnVpbGQgd2l0aCBEZWJ1ZyBJbmZvCisjICAgTWluU2l6ZVJlbCAgICAgOiBSZWxlYXNlIE1pbiBTaXplIGJ1aWxkCitJRihOT1QgQ01BS0VfQlVJTERfVFlQRSkKKyAgU0VUKENNQUtFX0JVSUxEX1RZUEUgIlJlbGVhc2UiIENBQ0hFIFNUUklORyAiQnVpbGQgVHlwZSIgRk9SQ0UpCitFTkRJRihOT1QgQ01BS0VfQlVJTERfVFlQRSkKKyMgU2V0IGEgdmFsdWUgdHlwZSB0byBwcm9wZXJseSBkaXNwbGF5IENNQUtFX0JVSUxEX1RZUEUgb24gR1VJIGlmIHRoZQorIyB2YWx1ZSB0eXBlIGlzICJVTklOSVRJQUxJWkVEIi4KK0dFVF9QUk9QRVJUWShjYWNoZWRfdHlwZSBDQUNIRSBDTUFLRV9CVUlMRF9UWVBFIFBST1BFUlRZIFRZUEUpCitJRigiJHtjYWNoZWRfdHlwZX0iIFNUUkVRVUFMICJVTklOSVRJQUxJWkVEIikKKyAgU0VUKENNQUtFX0JVSUxEX1RZUEUgIiR7Q01BS0VfQlVJTERfVFlQRX0iIENBQ0hFIFNUUklORyAiQnVpbGQgVHlwZSIgRk9SQ0UpCitFTkRJRigiJHtjYWNoZWRfdHlwZX0iIFNUUkVRVUFMICJVTklOSVRJQUxJWkVEIikKKyMgQ2hlY2sgdGhlIEJ1aWxkIFR5cGUuCitJRihOT1QgIiR7Q01BS0VfQlVJTERfVFlQRX0iCisgICAgICAgTUFUQ0hFUyAiXihEZWJ1Z3xSZWxlYXNlfFJlbFdpdGhEZWJJbmZvfE1pblNpemVSZWwpXCQiKQorICBNRVNTQUdFKEZBVEFMX0VSUk9SCisgICAgICAgICAgIlVua25vd24ga2V5d29yZCBmb3IgQ01BS0VfQlVJTERfVFlQRTogJHtDTUFLRV9CVUlMRF9UWVBFfVxuIgorICAgICAgICAgICJBY2NlcHRhYmxlIGtleXdvcmRzOiBEZWJ1ZyxSZWxlYXNlLFJlbFdpdGhEZWJJbmZvLE1pblNpemVSZWwiKQorRU5ESUYoTk9UICIke0NNQUtFX0JVSUxEX1RZUEV9IgorICAgICAgICAgIE1BVENIRVMgIl4oRGVidWd8UmVsZWFzZXxSZWxXaXRoRGViSW5mb3xNaW5TaXplUmVsKVwkIikKK0VORElGKCkKIAogIyBPbiBNYWNPUywgcHJlZmVyIE1hY1BvcnRzIGxpYnJhcmllcyB0byBzeXN0ZW0gbGlicmFyaWVzLgogIyBJIGhhdmVuJ3QgY29tZSB1cCB3aXRoIGEgY29tcGVsbGluZyBhcmd1bWVudCBmb3IgdGhpcyB0byBiZSBjb25kaXRpb25hbC4KQEAgLTY2LDE0ICsxMDAsMTIyIEBACiAgIFNFVChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC13b2ZmYWxsIikKIEVORElGKCkKIAorSUYoMCkgIyBDTWFrZSBkb2VzIG5vdCBuZWVkIGZsYWdzIHNwZWNpZmljIHRvIGxpYmFyY2hpdmUgdXBzdHJlYW0gZGV2ZWxvcG1lbnQuCitpZiAoQ01BS0VfQlVJTERfVFlQRSBTVFJFUVVBTCAiRGVidWciKQorICBPUFRJT04oRU5BQkxFX1dFUlJPUiAiVHJlYXQgd2FybmluZ3MgYXMgZXJyb3JzIC0gZGVmYXVsdCBpcyBPTiBmb3IgRGVidWcsIE9GRiBvdGhlcndpc2UuIiBPTikKK2Vsc2UgKCkKKyAgT1BUSU9OKEVOQUJMRV9XRVJST1IgIlRyZWF0IHdhcm5pbmdzIGFzIGVycm9ycyAtIGRlZmF1bHQgaXMgT04gZm9yIERlYnVnLCBPRkYgb3RoZXJ3aXNlLiIgT0ZGKQorZW5kaWYgKCkKKworIyBFc3BlY2lhbGx5IGZvciBlYXJseSBkZXZlbG9wbWVudCwgd2Ugd2FudCB0byBiZSBhIGxpdHRsZQorIyBhZ2dyZXNzaXZlIGFib3V0IGRpYWdub3NpbmcgYnVpbGQgcHJvYmxlbXM7IHRoaXMgY2FuIGdldAorIyByZWxheGVkIHNvbWV3aGF0IGluIGZpbmFsIHNoaXBwaW5nIHZlcnNpb25zLgorSUYgKENNQUtFX0NfQ09NUElMRVJfSUQgTUFUQ0hFUyAiXkdOVSQiKQorICBTRVQoQ01BS0VfUkVRVUlSRURfRkxBR1MgIi1XYWxsIC1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IikKKyAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgIyBTZXQgY29tcGlsZSBmbGFncyBmb3IgYWxsIGJ1aWxkIHR5cGVzLgorICBTRVQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV2FsbCAtV2Zvcm1hdCAtV2Zvcm1hdC1zZWN1cml0eSIpCisgIGlmIChFTkFCTEVfV0VSUk9SKQorICAgIFNFVChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1XZXJyb3IiKQorICBlbmRpZiAoKQorICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAjIFNldCBjb21waWxlIGZsYWdzIGZvciBkZWJ1ZyBidWlsZC4KKyAgIyBUaGlzIGlzIGFkZGVkIGludG8gQ01BS0VfQ19GTEFHUyB3aGVuIENNQUtFX0JVSUxEX1RZUEUgaXMgIkRlYnVnIgorICBTRVQoQ01BS0VfQ19GTEFHU19ERUJVRyAiJHtDTUFLRV9DX0ZMQUdTX0RFQlVHfSAtV2V4dHJhIikKKyAgU0VUKENNQUtFX0NfRkxBR1NfREVCVUcgIiR7Q01BS0VfQ19GTEFHU19ERUJVR30gLVd1bnVzZWQiKQorICBTRVQoQ01BS0VfQ19GTEFHU19ERUJVRyAiJHtDTUFLRV9DX0ZMQUdTX0RFQlVHfSAtV3NoYWRvdyIpCisgIFNFVChDTUFLRV9DX0ZMQUdTX0RFQlVHICIke0NNQUtFX0NfRkxBR1NfREVCVUd9IC1XbWlzc2luZy1wcm90b3R5cGVzIikKKyAgU0VUKENNQUtFX0NfRkxBR1NfREVCVUcgIiR7Q01BS0VfQ19GTEFHU19ERUJVR30gLVdjYXN0LXF1YWwiKQorRU5ESUYgKENNQUtFX0NfQ09NUElMRVJfSUQgTUFUQ0hFUyAiXkdOVSQiKQorSUYgKENNQUtFX0NfQ09NUElMRVJfSUQgTUFUQ0hFUyAiXkNsYW5nJCIpCisgIFNFVChDTUFLRV9SRVFVSVJFRF9GTEFHUyAiLVdhbGwgLVdmb3JtYXQgLVdmb3JtYXQtc2VjdXJpdHkiKQorICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAjIFNldCBjb21waWxlIGZsYWdzIGZvciBhbGwgYnVpbGQgdHlwZXMuCisgIFNFVChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1XYWxsIC1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IikKKyAgaWYgKEVOQUJMRV9XRVJST1IpCisgICAgU0VUKENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVdlcnJvciIpCisgIGVuZGlmICgpCisgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICMgU2V0IGNvbXBpbGUgZmxhZ3MgZm9yIGRlYnVnIGJ1aWxkLgorICAjIFRoaXMgaXMgYWRkZWQgaW50byBDTUFLRV9DX0ZMQUdTIHdoZW4gQ01BS0VfQlVJTERfVFlQRSBpcyAiRGVidWciCisgIFNFVChDTUFLRV9DX0ZMQUdTX0RFQlVHICIke0NNQUtFX0NfRkxBR1NfREVCVUd9IC1nIikKKyAgU0VUKENNQUtFX0NfRkxBR1NfREVCVUcgIiR7Q01BS0VfQ19GTEFHU19ERUJVR30gLVdleHRyYSIpCisgIFNFVChDTUFLRV9DX0ZMQUdTX0RFQlVHICIke0NNQUtFX0NfRkxBR1NfREVCVUd9IC1XdW51c2VkIikKKyAgU0VUKENNQUtFX0NfRkxBR1NfREVCVUcgIiR7Q01BS0VfQ19GTEFHU19ERUJVR30gLVdzaGFkb3ciKQorICBTRVQoQ01BS0VfQ19GTEFHU19ERUJVRyAiJHtDTUFLRV9DX0ZMQUdTX0RFQlVHfSAtV21pc3NpbmctcHJvdG90eXBlcyIpCisgIFNFVChDTUFLRV9DX0ZMQUdTX0RFQlVHICIke0NNQUtFX0NfRkxBR1NfREVCVUd9IC1XY2FzdC1xdWFsIikKK0VORElGIChDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIl5DbGFuZyQiKQorSUYgKENNQUtFX0NfQ09NUElMRVJfSUQgTUFUQ0hFUyAiXlhMJCIpCisgIFNFVChDTUFLRV9DX0NPTVBJTEVSICJ4bGNfciIpCisgIFNFVChDTUFLRV9SRVFVSVJFRF9GTEFHUyAiLXFmbGFnPWU6ZSAtcWZvcm1hdD1zZWMiKQorICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAjIFNldCBjb21waWxlIGZsYWdzIGZvciBhbGwgYnVpbGQgdHlwZXMuCisgIFNFVChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1xZmxhZz1lOmUgLXFmb3JtYXQ9c2VjIikKKyAgaWYgKEVOQUJMRV9XRVJST1IpCisgICAgU0VUKENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLXFoYWx0PXciKQorICBlbmRpZiAoKQorICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAjIFNldCBjb21waWxlIGZsYWdzIGZvciBkZWJ1ZyBidWlsZC4KKyAgIyBUaGlzIGlzIGFkZGVkIGludG8gQ01BS0VfQ19GTEFHUyB3aGVuIENNQUtFX0JVSUxEX1RZUEUgaXMgIkRlYnVnIgorICBTRVQoQ01BS0VfQ19GTEFHU19ERUJVRyAiJHtDTUFLRV9DX0ZMQUdTX0RFQlVHfSAtZyIpCisgIFNFVChDTUFLRV9DX0ZMQUdTX0RFQlVHICIke0NNQUtFX0NfRkxBR1NfREVCVUd9IC1xZmxhZz13OnciKQorICBTRVQoQ01BS0VfQ19GTEFHU19ERUJVRyAiJHtDTUFLRV9DX0ZMQUdTX0RFQlVHfSAtcWluZm89cHJvOnVzZSIpCitFTkRJRihDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIl5YTCQiKQorSUYgKE1TVkMpCisgIGlmIChFTkFCTEVfV0VSUk9SKQorICAgICMgL1dYIG9wdGlvbiBpcyB0aGUgc2FtZSBhcyBnY2MncyAtV2Vycm9yIG9wdGlvbi4KKyAgICBTRVQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvV1giKQorICBlbmRpZiAoKQorICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAjIFNldCBjb21waWxlIGZsYWdzIGZvciBkZWJ1ZyBidWlsZC4KKyAgIyBUaGlzIGlzIGFkZGVkIGludG8gQ01BS0VfQ19GTEFHUyB3aGVuIENNQUtFX0JVSUxEX1RZUEUgaXMgIkRlYnVnIgorICAjIEVuYWJsZSBsZXZlbCA0IEM0MDYyOiBUaGUgZW51bWVyYXRlIGhhcyBubyBhc3NvY2lhdGVkIGhhbmRsZXIgaW4gYSBzd2l0Y2gKKyAgIyAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50IGFuZCB0aGVyZSBpcyBubyBkZWZhdWx0IHRoYXQgY2FuIGNhdGNoIGl0LgorICBTRVQoQ01BS0VfQ19GTEFHU19ERUJVRyAiJHtDTUFLRV9DX0ZMQUdTX0RFQlVHfSAvd2U0MDYyIikKKyAgIyBFbmFibGUgbGV2ZWwgNCBDNDI1NDogQSBsYXJnZXIgYml0IGZpZWxkIHdhcyBhc3NpZ25lZCB0byBhIHNtYWxsZXIgYml0CisgICMgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLgorICBTRVQoQ01BS0VfQ19GTEFHU19ERUJVRyAiJHtDTUFLRV9DX0ZMQUdTX0RFQlVHfSAvd2U0MjU0IikKKyAgIyBFbmFibGUgbGV2ZWwgNCBDNDI5NTogQW4gYXJyYXkgd2FzIGluaXRpYWxpemVkIGJ1dCB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4KKyAgIyAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFycmF5IGlzIG5vdCBhIG51bGw7IGFjY2Vzc2luZyB0aGUgYXJyYXkgbWF5CisgICMgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzLgorICBTRVQoQ01BS0VfQ19GTEFHU19ERUJVRyAiJHtDTUFLRV9DX0ZMQUdTX0RFQlVHfSAvd2U0Mjk1IikKKyAgIyBFbmFibGUgbGV2ZWwgNCBDNDI5NjogQW4gdW5zaWduZWQgdmFyaWFibGUgd2FzIHVzZWQgaW4gYSBjb21wYXJpc29uCisgICMgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiB3aXRoIHplcm8uCisgIFNFVChDTUFLRV9DX0ZMQUdTX0RFQlVHICIke0NNQUtFX0NfRkxBR1NfREVCVUd9IC93ZTQyOTYiKQorICAjIEVuYWJsZSBsZXZlbCA0IEM0Mzg5OiBBbiBvcGVyYXRpb24gaW52b2x2ZWQgc2lnbmVkIGFuZCB1bnNpZ25lZCB2YXJpYWJsZXMuCisgICMgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY291bGQgcmVzdWx0IGluIGEgbG9zcyBvZiBkYXRhLgorICBTRVQoQ01BS0VfQ19GTEFHU19ERUJVRyAiJHtDTUFLRV9DX0ZMQUdTX0RFQlVHfSAvd2U0Mzg5IikKKyAgIyBFbmFibGUgbGV2ZWwgNCBDNDUwNTogVGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGxvY2FsIGFuZCBub3QgcmVmZXJlbmNlZCBpbgorICAjICAgICAgICAgICAgICAgICAgICAgICB0aGUgYm9keSBvZiB0aGUgbW9kdWxlOyB0aGVyZWZvcmUsIHRoZSBmdW5jdGlvbiBpcworICAjICAgICAgICAgICAgICAgICAgICAgICBkZWFkIGNvZGUuCisgIFNFVChDTUFLRV9DX0ZMQUdTX0RFQlVHICIke0NNQUtFX0NfRkxBR1NfREVCVUd9IC93ZTQ1MDUiKQorICAjIEVuYWJsZSBsZXZlbCA0IEM0NTE0OiBUaGUgb3B0aW1pemVyIHJlbW92ZWQgYW4gaW5saW5lIGZ1bmN0aW9uIHRoYXQgaXMgbm90CisgICMgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZC4KKyAgU0VUKENNQUtFX0NfRkxBR1NfREVCVUcgIiR7Q01BS0VfQ19GTEFHU19ERUJVR30gL3dlNDUxNCIpCisgICMgRW5hYmxlIGxldmVsIDQgQzQ3MDI6IFVucmVhY2hhYmxlIGNvZGUuCisgIFNFVChDTUFLRV9DX0ZMQUdTX0RFQlVHICIke0NNQUtFX0NfRkxBR1NfREVCVUd9IC93ZTQ3MDIiKQorICAjIEVuYWJsZSBsZXZlbCA0IEM0NzA2OiBUaGUgdGVzdCB2YWx1ZSBpbiBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gd2FzIHRoZQorICAjICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgb2YgYW4gYXNzaWdubWVudC4KKyAgU0VUKENNQUtFX0NfRkxBR1NfREVCVUcgIiR7Q01BS0VfQ19GTEFHU19ERUJVR30gL3dlNDcwNiIpCisgICMgL09pIG9wdGlvbiBlbmFibGVzIGJ1aWx0LWluIGZ1bmN0aW9ucy4KKyAgU0VUKENNQUtFX0NfRkxBR1NfREVCVUcgIiR7Q01BS0VfQ19GTEFHU19ERUJVR30gL09pIikKKyAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgIyBTZXQgY29tcGlsZSBmbGFncyBmb3IgcmVsZWFzZSBidWlsZC4KKyAgU0VUKENNQUtFX0NfRkxBR1NfUkVMRUFTRSAiJHtDTUFLRV9DX0ZMQUdTX1JFTEVBU0V9IC9PaSIpCitFTkRJRiAoTVNWQykKK0VORElGKCkKKwogIyBFbmFibGUgQ1Rlc3QvQ0Rhc2ggc3VwcG9ydAogaW5jbHVkZShDVGVzdCkKIAotT1BUSU9OKEVOQUJMRV9ORVRUTEUgIkVuYWJsZSB1c2Ugb2YgTmV0dGxlIiBPTikKK09QVElPTihFTkFCTEVfTUJFRFRMUyAiRW5hYmxlIHVzZSBvZiBtYmVkIFRMUyIgT0ZGKQorT1BUSU9OKEVOQUJMRV9ORVRUTEUgIkVuYWJsZSB1c2Ugb2YgTmV0dGxlIiBPRkYpCiBPUFRJT04oRU5BQkxFX09QRU5TU0wgIkVuYWJsZSB1c2Ugb2YgT3BlblNTTCIgT04pCitPUFRJT04oRU5BQkxFX0xJQkIyICJFbmFibGUgdGhlIHVzZSBvZiB0aGUgc3lzdGVtIExJQkIyIGxpYnJhcnkgaWYgZm91bmQiIE9OKQogT1BUSU9OKEVOQUJMRV9MWjQgIkVuYWJsZSB0aGUgdXNlIG9mIHRoZSBzeXN0ZW0gTFo0IGxpYnJhcnkgaWYgZm91bmQiIE9OKQogT1BUSU9OKEVOQUJMRV9MWk8gIkVuYWJsZSB0aGUgdXNlIG9mIHRoZSBzeXN0ZW0gTFpPIGxpYnJhcnkgaWYgZm91bmQiIE9GRikKIE9QVElPTihFTkFCTEVfTFpNQSAiRW5hYmxlIHRoZSB1c2Ugb2YgdGhlIHN5c3RlbSBMWk1BIGxpYnJhcnkgaWYgZm91bmQiIE9OKQorT1BUSU9OKEVOQUJMRV9aU1REICJFbmFibGUgdGhlIHVzZSBvZiB0aGUgc3lzdGVtIHpzdGQgbGlicmFyeSBpZiBmb3VuZCIgT04pCiAKIE9QVElPTihFTkFCTEVfWkxJQiAiRW5hYmxlIHRoZSB1c2Ugb2YgdGhlIHN5c3RlbSBaTElCIGxpYnJhcnkgaWYgZm91bmQiIE9OKQogT1BUSU9OKEVOQUJMRV9CWmlwMiAiRW5hYmxlIHRoZSB1c2Ugb2YgdGhlIHN5c3RlbSBCWmlwMiBsaWJyYXJ5IGlmIGZvdW5kIiBPTikKQEAgLTg0LDIzICsyMjYsOTggQEAKICMgQ05HIGlzIHVzZWQgZm9yIGVuY3J5cHQvZGVjcnlwdCBaaXAgYXJjaGl2ZXMgb24gV2luZG93cy4KIE9QVElPTihFTkFCTEVfQ05HICJFbmFibGUgdGhlIHVzZSBvZiBDTkcoQ3J5cHRvIE5leHQgR2VuZXJhdGlvbikiIE9OKQogCitJRigwKSAjIENNYWtlIGRvZXMgbm90IGJ1aWxkIGxpYmFyY2hpdmUncyBjb21tYW5kLWxpbmUgdG9vbHMuCitPUFRJT04oRU5BQkxFX1RBUiAiRW5hYmxlIHRhciBidWlsZGluZyIgT04pCitPUFRJT04oRU5BQkxFX1RBUl9TSEFSRUQgIkVuYWJsZSBkeW5hbWljIGJ1aWxkIG9mIHRhciIgRkFMU0UpCitPUFRJT04oRU5BQkxFX0NQSU8gIkVuYWJsZSBjcGlvIGJ1aWxkaW5nIiBPTikKK09QVElPTihFTkFCTEVfQ1BJT19TSEFSRUQgIkVuYWJsZSBkeW5hbWljIGJ1aWxkIG9mIGNwaW8iIEZBTFNFKQorT1BUSU9OKEVOQUJMRV9DQVQgIkVuYWJsZSBjYXQgYnVpbGRpbmciIE9OKQorT1BUSU9OKEVOQUJMRV9DQVRfU0hBUkVEICJFbmFibGUgZHluYW1pYyBidWlsZCBvZiBjYXQiIEZBTFNFKQorRU5ESUYoKQogT1BUSU9OKEVOQUJMRV9YQVRUUiAiRW5hYmxlIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdXBwb3J0IiBPTikKIE9QVElPTihFTkFCTEVfQUNMICJFbmFibGUgQUNMIHN1cHBvcnQiIE9OKQogT1BUSU9OKEVOQUJMRV9JQ09OViAiRW5hYmxlIGljb252IHN1cHBvcnQiIE9OKQorSUYoMCkgIyBDTWFrZSBkb2VzIG5vdCBidWlsZCBsaWJhcmNoaXZlJ3MgdGVzdHMuCitPUFRJT04oRU5BQkxFX1RFU1QgIkVuYWJsZSB1bml0IGFuZCByZWdyZXNzaW9uIHRlc3RzIiBPTikKK09QVElPTihFTkFCTEVfQ09WRVJBR0UgIkVuYWJsZSBjb2RlIGNvdmVyYWdlIChHQ0Mgb25seSwgYXV0b21hdGljYWxseSBzZXRzIEVOQUJMRV9URVNUIHRvIE9OKSIgRkFMU0UpCitPUFRJT04oRU5BQkxFX0lOU1RBTEwgIkVuYWJsZSBpbnN0YWxsaW5nIG9mIGxpYnJhcmllcyIgT04pCisKK1NFVChQT1NJWF9SRUdFWF9MSUIgIkFVVE8iIENBQ0hFIFNUUklORyAiQ2hvb3NlIHdoYXQgbGlicmFyeSBzaG91bGQgcHJvdmlkZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCIpCitTRVQoRU5BQkxFX1NBRkVTRUggIkFVVE8iIENBQ0hFIFNUUklORyAiRW5hYmxlIHVzZSBvZiAvU0FGRVNFSCBsaW5rZXIgZmxhZyAoTVNWQyBvbmx5KSIpCitTRVQoV0lORE9XU19WRVJTSU9OICJXSU43IiBDQUNIRSBTVFJJTkcgIlNldCBXaW5kb3dzIHZlcnNpb24gdG8gdXNlIChXaW5kb3dzIG9ubHkpIikKKworSUYoRU5BQkxFX0NPVkVSQUdFKQorICAgICAgIGluY2x1ZGUoTGliYXJjaGl2ZUNvZGVDb3ZlcmFnZSkKK0VORElGKEVOQUJMRV9DT1ZFUkFHRSkKKworSUYoRU5BQkxFX1RFU1QpCisgICAgICAgRU5BQkxFX1RFU1RJTkcoKQorRU5ESUYoRU5BQkxFX1RFU1QpCitFTkRJRigpCiAKIElGKFdJTjMyKQotICAjRUxTRUlGKFdJTkRPV1NfVkVSU0lPTiBTVFJFUVVBTCAiV0lOWFAiKQogICBTRVQoTlRERElfVkVSU0lPTiAweDA1MDEwMDAwKQogICBTRVQoX1dJTjMyX1dJTk5UIDB4MDUwMSkKICAgU0VUKFdJTlZFUiAweDA1MDEpCiBFTkRJRihXSU4zMikKIAotc2V0KEhBVkVfUFRIUkVBRF9IIDApICMgbm8gdGhyZWFkcyBpbiBDTWFrZQorSUYoMCkgIyBDTWFrZSBoYXJkLWNvZGVzIGl0cyBvd24gc3VwcG9ydGVkIHZlcnNpb24gb2YgV2luZG93cy4KK0lGKFdJTjMyKQorICBJRihXSU5ET1dTX1ZFUlNJT04gU1RSRVFVQUwgIldJTjgiKQorICAgIFNFVChOVERESV9WRVJTSU9OIDB4MDYwMjAwMDApCisgICAgU0VUKF9XSU4zMl9XSU5OVCAweDA2MDIpCisgICAgU0VUKFdJTlZFUiAweDA2MDIpCisgIEVMU0VJRihXSU5ET1dTX1ZFUlNJT04gU1RSRVFVQUwgIldJTjciKQorICAgIFNFVChOVERESV9WRVJTSU9OIDB4MDYwMTAwMDApCisgICAgU0VUKF9XSU4zMl9XSU5OVCAweDA2MDEpCisgICAgU0VUKFdJTlZFUiAweDA2MDEpCisgIEVMU0VJRihXSU5ET1dTX1ZFUlNJT04gU1RSRVFVQUwgIldTMDgiKQorICAgIFNFVChOVERESV9WRVJTSU9OIDB4MDYwMDAxMDApCisgICAgU0VUKF9XSU4zMl9XSU5OVCAweDA2MDApCisgICAgU0VUKFdJTlZFUiAweDA2MDApCisgIEVMU0VJRihXSU5ET1dTX1ZFUlNJT04gU1RSRVFVQUwgIlZJU1RBIikKKyAgICBTRVQoTlRERElfVkVSU0lPTiAweDA2MDAwMDAwKQorICAgIFNFVChfV0lOMzJfV0lOTlQgMHgwNjAwKQorICAgIFNFVChXSU5WRVIgMHgwNjAwKQorICBFTFNFSUYoV0lORE9XU19WRVJTSU9OIFNUUkVRVUFMICJXUzAzIikKKyAgICBTRVQoTlRERElfVkVSU0lPTiAweDA1MDIwMDAwKQorICAgIFNFVChfV0lOMzJfV0lOTlQgMHgwNTAyKQorICAgIFNFVChXSU5WRVIgMHgwNTAyKQorICBFTFNFSUYoV0lORE9XU19WRVJTSU9OIFNUUkVRVUFMICJXSU5YUCIpCisgICAgU0VUKE5URERJX1ZFUlNJT04gMHgwNTAxMDAwMCkKKyAgICBTRVQoX1dJTjMyX1dJTk5UIDB4MDUwMSkKKyAgICBTRVQoV0lOVkVSIDB4MDUwMSkKKyAgRUxTRShXSU5ET1dTX1ZFUlNJT04gU1RSRVFVQUwgIldJTjgiKQorICAgICMgRGVmYXVsdCB0byBXaW5kb3dzIFNlcnZlciAyMDAzIEFQSSBpZiB3ZSBkb24ndCByZWNvZ25pemUgdGhlIHNwZWNpZmllcgorICAgIFNFVChOVERESV9WRVJTSU9OIDB4MDUwMjAwMDApCisgICAgU0VUKF9XSU4zMl9XSU5OVCAweDA1MDIpCisgICAgU0VUKFdJTlZFUiAweDA1MDIpCisgIEVORElGKFdJTkRPV1NfVkVSU0lPTiBTVFJFUVVBTCAiV0lOOCIpCitFTkRJRihXSU4zMikKKworSUYoTVNWQykKKyAgSUYoRU5BQkxFX1NBRkVTRUggU1RSRVFVQUwgIllFUyIpCisgICAgU0VUKENNQUtFX0VYRV9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfRVhFX0xJTktFUl9GTEFHU30gL1NBRkVTRUgiKQorICAgIFNFVChDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTICIke0NNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1N9IC9TQUZFU0VIIikKKyAgICBTRVQoQ01BS0VfTU9EVUxFX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9NT0RVTEVfTElOS0VSX0ZMQUdTfSAvU0FGRVNFSCIpCisgICAgU0VUKEVOVntMREZMQUdTfSAiJEVOVntMREZMQUdTfSAvU0FGRVNFSCIpCisgIEVMU0VJRihFTkFCTEVfU0FGRVNFSCBTVFJFUVVBTCAiTk8iKQorICAgIFNFVChDTUFLRV9FWEVfTElOS0VSX0ZMQUdTICIke0NNQUtFX0VYRV9MSU5LRVJfRkxBR1N9IC9TQUZFU0VIOk5PIikKKyAgICBTRVQoQ01BS0VfU0hBUkVEX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTfSAvU0FGRVNFSDpOTyIpCisgICAgU0VUKENNQUtFX01PRFVMRV9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfTU9EVUxFX0xJTktFUl9GTEFHU30gL1NBRkVTRUg6Tk8iKQorICAgIFNFVChFTlZ7TERGTEFHU30gIiRFTlZ7TERGTEFHU30gL1NBRkVTRUg6Tk8iKQorICBFTkRJRihFTkFCTEVfU0FGRVNFSCBTVFJFUVVBTCAiWUVTIikKK0VORElGKE1TVkMpCitFTkRJRigpCiAKIElGKCIke0NNQUtFX0NfUExBVEZPUk1fSUR9IiBNQVRDSEVTICJeKEhQLVVYKSQiKQogICBBRERfREVGSU5JVElPTlMoLURfWE9QRU5fU09VUkNFPTUwMCkgIyBBc2sgd2NoYXIuaCBmb3IgbWJzdGF0ZV90CiBFTkRJRigpCiAKK0lGKE1JTkdXKQorICBBRERfREVGSU5JVElPTlMoLURfX1VTRV9NSU5HV19BTlNJX1NURElPKQorRU5ESUYoKQorCiAjCiBJTkNMVURFKENoZWNrQ1NvdXJjZUNvbXBpbGVzKQogSU5DTFVERShDaGVja0NTb3VyY2VSdW5zKQpAQCAtMjgwLDcgKzQ5Nyw2IEBACiAgICAgQUREX0RFRklOSVRJT05TKC1EVVNFX0JaSVAyX1NUQVRJQykKICAgRU5ESUYoVVNFX0JaSVAyX0RMTCkKIEVORElGKEJaSVAyX0ZPVU5EKQotTUFSS19BU19BRFZBTkNFRChDTEVBUiBCWklQMl9JTkNMVURFX0RJUikKIAogCiAjCkBAIC0yODksMTIgKzUwNSwxNSBAQAogSUYoRU5BQkxFX0xaTUEpCiAgIEZJTkRfUEFDS0FHRShMaWJMWk1BKQogRUxTRSgpCi0gIFNFVChMSUJaTUFfRk9VTkQgRkFMU0UpICMgT3ZlcnJpZGUgY2FjaGVkIHZhbHVlCisgIFNFVChMSUJMWk1BX0ZPVU5EIEZBTFNFKSAjIE92ZXJyaWRlIGNhY2hlZCB2YWx1ZQogRU5ESUYoKQogCiBJRihMSUJMWk1BX0ZPVU5EKQogICBTRVQoSEFWRV9MSUJMWk1BIDEpCiAgIFNFVChIQVZFX0xaTUFfSCAxKQorICBDTUFLRV9QVVNIX0NIRUNLX1NUQVRFKCkKKyAgU0VUKENNQUtFX1JFUVVJUkVEX0lOQ0xVREVTICR7TElCTFpNQV9JTkNMVURFX0RJUn0pCisgIFNFVChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMgJHtMSUJMWk1BX0xJQlJBUklFU30pCiAgIElOQ0xVREVfRElSRUNUT1JJRVMoJHtMSUJMWk1BX0lOQ0xVREVfRElSU30pCiAgIExJU1QoQVBQRU5EIEFERElUSU9OQUxfTElCUyAke0xJQkxaTUFfTElCUkFSSUVTfSkKICAgSUYoQ01BS0VfVVNFX1NZU1RFTV9MSUJMWk1BKQpAQCAtMzEwLDEwICs1MjksMTAgQEAKICAgRUxTRSgpCiAgICAgQUREX0RFRklOSVRJT05TKC1ETFpNQV9BUElfU1RBVElDKQogICBFTkRJRigpCisgIENNQUtFX1BPUF9DSEVDS19TVEFURSgpCiBFTFNFKExJQkxaTUFfRk9VTkQpCiAjIExaTUEgbm90IGZvdW5kIGFuZCB3aWxsIG5vdCBiZSB1c2VkLgogRU5ESUYoTElCTFpNQV9GT1VORCkKLUlGKDApICMgQ01ha2UgZG9lcyBub3QgbmVlZCBMWk8yIHN1cHBvcnQgaW4gbGliYXJjaGl2ZQogIwogIyBGaW5kIExaTzIKICMKQEAgLTM0MCwxMCArNTU5LDM1IEBACiAgICMgVE9ETzogdGVzdCBmb3Igc3RhdGljIGxpYnJhcnkuCiAgICMKIEVORElGKExaTzJfRk9VTkQpCi1NQVJLX0FTX0FEVkFOQ0VEKENMRUFSIExaTzJfSU5DTFVERV9ESVIpCi1NQVJLX0FTX0FEVkFOQ0VEKENMRUFSIExaTzJfTElCUkFSWSkKLUVORElGKCkKLUlGKDApICMgQ01ha2UgZG9lcyBub3QgbmVlZCBMWjQgc3VwcG9ydCBpbiBsaWJhcmNoaXZlCisjCisjIEZpbmQgbGliYjIKKyMKK0lGKEVOQUJMRV9MSUJCMikKKyAgSUYgKExJQkIyX0lOQ0xVREVfRElSKQorICAgICMgQWxyZWFkeSBpbiBjYWNoZSwgYmUgc2lsZW50CisgICAgU0VUKExJQkIyX0ZJTkRfUVVJRVRMWSBUUlVFKQorICBFTkRJRiAoTElCQjJfSU5DTFVERV9ESVIpCisKKyAgRklORF9QQVRIKExJQkIyX0lOQ0xVREVfRElSIGJsYWtlMi5oKQorICBGSU5EX0xJQlJBUlkoTElCQjJfTElCUkFSWSBOQU1FUyBiMiBsaWJiMikKKyAgSU5DTFVERShGaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKKyAgRklORF9QQUNLQUdFX0hBTkRMRV9TVEFOREFSRF9BUkdTKExJQkIyIERFRkFVTFRfTVNHIExJQkIyX0xJQlJBUlkgTElCQjJfSU5DTFVERV9ESVIpCitFTFNFKEVOQUJMRV9MSUJCMikKKyAgU0VUKExJQkIyX0ZPVU5EIEZBTFNFKSAjIE92ZXJyaWRlIGNhY2hlZCB2YWx1ZQorRU5ESUYoRU5BQkxFX0xJQkIyKQorSUYoTElCQjJfRk9VTkQpCisgIFNFVChIQVZFX0xJQkIyIDEpCisgIFNFVChIQVZFX0JMQUtFMl9IIDEpCisgIFNFVChBUkNISVZFX0JMQUtFMiBGQUxTRSkKKyAgTElTVChBUFBFTkQgQURESVRJT05BTF9MSUJTICR7TElCQjJfTElCUkFSWX0pCisgIENNQUtFX1BVU0hfQ0hFQ0tfU1RBVEUoKQorICBTRVQoQ01BS0VfUkVRVUlSRURfTElCUkFSSUVTICR7TElCQjJfTElCUkFSWX0pCisgIFNFVChDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAke0xJQkIyX0lOQ0xVREVfRElSfSkKKyAgQ0hFQ0tfRlVOQ1RJT05fRVhJU1RTKGJsYWtlMnNwX2luaXQgSEFWRV9MSUJCMikKKyAgQ01BS0VfUE9QX0NIRUNLX1NUQVRFKCkKK0VMU0UoTElCQjJfRk9VTkQpCisgIFNFVChBUkNISVZFX0JMQUtFMiBUUlVFKQorRU5ESUYoTElCQjJfRk9VTkQpCiAjCiAjIEZpbmQgTFo0CiAjCkBAIC0zNzMsMzMgKzYxNyw0MiBAQAogICAjIFRPRE86IHRlc3QgZm9yIHN0YXRpYyBsaWJyYXJ5LgogICAjCiBFTkRJRihMWjRfRk9VTkQpCi1NQVJLX0FTX0FEVkFOQ0VEKENMRUFSIExaNF9JTkNMVURFX0RJUikKLU1BUktfQVNfQURWQU5DRUQoQ0xFQVIgTFo0X0xJQlJBUlkpCi1FTkRJRigpCiAjCiAjIEZpbmQgWnN0ZAogIwotSUYgKFpTVERfSU5DTFVERV9ESVIpCi0gICMgQWxyZWFkeSBpbiBjYWNoZSwgYmUgc2lsZW50Ci0gIFNFVChaU1REX0ZJTkRfUVVJRVRMWSBUUlVFKQotRU5ESUYgKFpTVERfSU5DTFVERV9ESVIpCitJRihFTkFCTEVfWlNURCkKKyAgSUYgKFpTVERfSU5DTFVERV9ESVIpCisgICAgIyBBbHJlYWR5IGluIGNhY2hlLCBiZSBzaWxlbnQKKyAgICBTRVQoWlNURF9GSU5EX1FVSUVUTFkgVFJVRSkKKyAgRU5ESUYgKFpTVERfSU5DTFVERV9ESVIpCiAKLUZJTkRfUEFUSChaU1REX0lOQ0xVREVfRElSIHpzdGQuaCkKLUZJTkRfTElCUkFSWShaU1REX0xJQlJBUlkgTkFNRVMgenN0ZCBsaWJ6c3RkKQotSU5DTFVERShGaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKLUZJTkRfUEFDS0FHRV9IQU5ETEVfU1RBTkRBUkRfQVJHUyhaU1REIERFRkFVTFRfTVNHIFpTVERfTElCUkFSWSBaU1REX0lOQ0xVREVfRElSKQorICBGSU5EX1BBVEgoWlNURF9JTkNMVURFX0RJUiB6c3RkLmgpCisgIEZJTkRfTElCUkFSWShaU1REX0xJQlJBUlkgTkFNRVMgenN0ZCBsaWJ6c3RkKQorICBJTkNMVURFKEZpbmRQYWNrYWdlSGFuZGxlU3RhbmRhcmRBcmdzKQorICBGSU5EX1BBQ0tBR0VfSEFORExFX1NUQU5EQVJEX0FSR1MoWlNURCBERUZBVUxUX01TRyBaU1REX0xJQlJBUlkgWlNURF9JTkNMVURFX0RJUikKK0VMU0UoRU5BQkxFX1pTVEQpCisgIFNFVChaU1REX0ZPVU5EIEZBTFNFKSAjIE92ZXJyaWRlIGNhY2hlZCB2YWx1ZQorRU5ESUYoRU5BQkxFX1pTVEQpCiBJRihaU1REX0ZPVU5EKQogICBTRVQoSEFWRV9aU1REX0ggMSkKICAgSU5DTFVERV9ESVJFQ1RPUklFUygke1pTVERfSU5DTFVERV9ESVJ9KQogICBMSVNUKEFQUEVORCBBRERJVElPTkFMX0xJQlMgJHtaU1REX0xJQlJBUll9KQogICBTRVQoSEFWRV9MSUJaU1REIDEpCisgIElGKDApICMgQ01ha2UgZXhwZWN0cyB0aGUgenN0ZCBsaWJyYXJ5IHRvIHdvcmsuCisgIENNQUtFX1BVU0hfQ0hFQ0tfU1RBVEUoKQorICBTRVQoQ01BS0VfUkVRVUlSRURfTElCUkFSSUVTICR7WlNURF9MSUJSQVJZfSkKKyAgU0VUKENNQUtFX1JFUVVJUkVEX0lOQ0xVREVTICR7WlNURF9JTkNMVURFX0RJUn0pCisgIENIRUNLX0ZVTkNUSU9OX0VYSVNUUyhaU1REX2NvbXByZXNzU3RyZWFtIEhBVkVfTElCWlNURCkKICAgIwogICAjIFRPRE86IHRlc3QgZm9yIHN0YXRpYyBsaWJyYXJ5LgogICAjCisgIENNQUtFX1BPUF9DSEVDS19TVEFURSgpCisgIEVORElGKCkKIEVORElGKFpTVERfRk9VTkQpCiBNQVJLX0FTX0FEVkFOQ0VEKENMRUFSIFpTVERfSU5DTFVERV9ESVIpCiBNQVJLX0FTX0FEVkFOQ0VEKENMRUFSIFpTVERfTElCUkFSWSkKIAorCiAjCiAjIENoZWNrIGhlYWRlcnMKICMKQEAgLTQxOSw5ICs2NzIsMTEgQEAKICMgQWxwaGFiZXRpemUgdGhlIHJlc3QgdW5sZXNzIHRoZXJlJ3MgYSBjb21wZWxsaW5nIHJlYXNvbgogSUYoRU5BQkxFX0FDTCkKICAgTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJhY2wvbGliYWNsLmgiIEhBVkVfQUNMX0xJQkFDTF9IKQotRUxTRShFTkFCTEVfQUNMKQorICBMQV9DSEVDS19JTkNMVURFX0ZJTEUoImF0dHIveGF0dHIuaCIgSEFWRV9BVFRSX1hBVFRSX0gpCitFTFNFKCkKICAgU0VUKEhBVkVfQUNMX0xJQkFDTF9IIEZBTFNFKQotRU5ESUYoRU5BQkxFX0FDTCkKKyAgU0VUKEhBVkVfQVRUUl9YQVRUUl9IIEZBTFNFKQorRU5ESUYoKQogTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJjdHlwZS5oIiBIQVZFX0NUWVBFX0gpCiBMQV9DSEVDS19JTkNMVURFX0ZJTEUoImNvcHlmaWxlLmgiIEhBVkVfQ09QWUZJTEVfSCkKIExBX0NIRUNLX0lOQ0xVREVfRklMRSgiZGlyZWN0LmgiIEhBVkVfRElSRUNUX0gpCkBAIC01MTksNiArNzc0LDI2IEBACiAgU0FGRV9UT19ERUZJTkVfRVhURU5TSU9OUykKIAogIworIyBGaW5kIG1iZWQgVExTCisjCitJRihFTkFCTEVfTUJFRFRMUykKKyAgRklORF9QQUNLQUdFKE1iZWRUTFMpCisgIElGKE1CRURUTFNfRk9VTkQpCisgICAgU0VUKEhBVkVfTElCTUJFRENSWVBUTyAxKQorICAgIExJU1QoQVBQRU5EIEFERElUSU9OQUxfTElCUyAke01CRURDUllQVE9fTElCUkFSWX0pCisgICAgSU5DTFVERV9ESVJFQ1RPUklFUygke01CRURUTFNfSU5DTFVERV9ESVJTfSkKKworICAgIExJU1QoQVBQRU5EIENNQUtFX1JFUVVJUkVEX0lOQ0xVREVTICR7TUJFRFRMU19JTkNMVURFX0RJUlN9KQorICAgIExBX0NIRUNLX0lOQ0xVREVfRklMRSgibWJlZHRscy9hZXMuaCIgSEFWRV9NQkVEVExTX0FFU19IKQorICAgIExBX0NIRUNLX0lOQ0xVREVfRklMRSgibWJlZHRscy9tZC5oIiBIQVZFX01CRURUTFNfTURfSCkKKyAgICBMQV9DSEVDS19JTkNMVURFX0ZJTEUoIm1iZWR0bHMvcGtjczUuaCIgSEFWRV9NQkVEVExTX1BLQ1M1X0gpCisKKyAgRU5ESUYoTUJFRFRMU19GT1VORCkKKyAgTUFSS19BU19BRFZBTkNFRChDTEVBUiBNQkVEVExTX0lOQ0xVREVfRElSUykKKyAgTUFSS19BU19BRFZBTkNFRChDTEVBUiBNQkVEQ1JZUFRPX0xJQlJBUlkpCitFTkRJRihFTkFCTEVfTUJFRFRMUykKKworIwogIyBGaW5kIE5ldHRsZQogIwogSUYoRU5BQkxFX05FVFRMRSkKQEAgLTU3OSw2ICs4NTQsOCBAQAogICAgICAgU1RSSU5HKFRPVVBQRVIgIiR7QUxHT1JJVEhNfSIgYWxnb3JpdGhtKQogICAgICAgSUYgKCIke0lNUExFTUVOVEFUSU9OfSIgTUFUQ0hFUyAiXk9QRU5TU0wkIiBBTkQgTk9UIE9QRU5TU0xfRk9VTkQpCiAgICAgICAgIFNFVChBUkNISVZFX0NSWVBUT18ke0FMR09SSVRITX1fJHtJTVBMRU1FTlRBVElPTn0gRkFMU0UpCisgICAgICBFTFNFSUYoIiR7SU1QTEVNRU5UQVRJT059IiBNQVRDSEVTICJeTUJFRFRMUyQiIEFORCBOT1QgTUJFRFRMU19GT1VORCkKKyAgICAgICAgU0VUKEFSQ0hJVkVfQ1JZUFRPXyR7QUxHT1JJVEhNfV8ke0lNUExFTUVOVEFUSU9OfSBGQUxTRSkKICAgICAgIEVMU0VJRigiJHtJTVBMRU1FTlRBVElPTn0iIE1BVENIRVMgIl5ORVRUTEUkIiBBTkQgTk9UIE5FVFRMRV9GT1VORCkKICAgICAgICAgU0VUKEFSQ0hJVkVfQ1JZUFRPXyR7QUxHT1JJVEhNfV8ke0lNUExFTUVOVEFUSU9OfSBGQUxTRSkKICAgICAgIEVORElGKCIke0lNUExFTUVOVEFUSU9OfSIgTUFUQ0hFUyAiXk9QRU5TU0wkIiBBTkQgTk9UIE9QRU5TU0xfRk9VTkQpCkBAIC01OTQsNiArODcxLDExIEBACiAJICAgICAgIiR7VFJZX0NSWVBUT19SRVFVSVJFRF9JTkNMVURFU307JHtPUEVOU1NMX0lOQ0xVREVfRElSfSIpCiAJICAgIFNFVChUUllfQ1JZUFRPX1JFUVVJUkVEX0xJQlMKIAkgICAgICAgICItRExJTktfTElCUkFSSUVTOlNUUklORz0ke09QRU5TU0xfTElCUkFSSUVTfSIpCisJRUxTRUlGKCIke0lNUExFTUVOVEFUSU9OfSIgTUFUQ0hFUyAiXk1CRURUTFMkIiBBTkQgTUJFRFRMU19GT1VORCkKKwkgICAgU0VUKFRSWV9DUllQVE9fUkVRVUlSRURfSU5DTFVERVMKKwkgICAgICAiJHtUUllfQ1JZUFRPX1JFUVVJUkVEX0lOQ0xVREVTfTske01CRURUTFNfSU5DTFVERV9ESVJTfSIpCisJICAgIFNFVChUUllfQ1JZUFRPX1JFUVVJUkVEX0xJQlMKKwkgICAgICAiLURMSU5LX0xJQlJBUklFUzpTVFJJTkc9JHtNQkVEQ1JZUFRPX0xJQlJBUll9IikKIAlFTFNFSUYoIiR7SU1QTEVNRU5UQVRJT059IiBNQVRDSEVTICJeTkVUVExFJCIgQU5EIE5FVFRMRV9GT1VORCkKIAkgICAgU0VUKFRSWV9DUllQVE9fUkVRVUlSRURfSU5DTFVERVMKIAkgICAgICAiJHtUUllfQ1JZUFRPX1JFUVVJUkVEX0lOQ0xVREVTfTske05FVFRMRV9JTkNMVURFX0RJUn0iKQpAQCAtNzU4LDE4ICsxMDQwLDE5IEBACiBNQUNSTyhDSEVDS19JQ09OViBMSUIgVFJZX0lDT05WX0NPTlNUKQogICBJRihOT1QgSEFWRV9JQ09OVikKICAgICBDTUFLRV9QVVNIX0NIRUNLX1NUQVRFKCkJIyBTYXZlIHRoZSBzdGF0ZSBvZiB0aGUgdmFyaWFibGVzCi0gICAgSUYgKENNQUtFX0NfQ09NUElMRVJfSUQgU1RSRVFVQUwgIkdOVSIgT1IKLSAgICAgICAgQ01BS0VfQ19DT01QSUxFUl9JRCBTVFJFUVVBTCAiQ2xhbmciKQorICAgIElGIChDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIl5HTlUkIiBPUgorICAgICAgICBDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIl5DbGFuZyQiKQogICAgICAgIwogICAgICAgIyBEdXJpbmcgY2hlY2tpbmcgaWNvbnYgcHJvdG8gdHlwZSwgd2Ugc2hvdWxkIHVzZSAtV2Vycm9yIHRvIGF2b2lkIHRoZQogICAgICAgIyBzdWNjZXNzIG9mIGljb252IGRldGVjdGlvbiB3aXRoIGEgd2FybmlnIHdoaWNoIHN1Y2Nlc3MgaXMgYSBtaXNzCiAgICAgICAjIGRldGVjdGlvbi4gU28gdGhpcyBuZWVkcyBmb3IgYWxsIGJ1aWxkIG1vZGUoZXZlbiBpdCdzIGEgcmVsZWFzZSBtb2RlKS4KICAgICAgICMKICAgICAgIFNFVChDTUFLRV9SRVFVSVJFRF9GTEFHUyAiJHtDTUFLRV9SRVFVSVJFRF9GTEFHU30gLVdlcnJvciIpCi0gICAgRU5ESUYgKCkKLSAgICBJRiAoQ01BS0VfQ19DT01QSUxFUl9JRCBTVFJFUVVBTCAiWEwiKQorICAgIEVORElGIChDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIl5HTlUkIiBPUgorICAgICAgICAgICBDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIl5DbGFuZyQiKQorICAgIElGIChDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIl5YTCQiKQogICAgICAgU0VUKENNQUtFX1JFUVVJUkVEX0ZMQUdTICIke0NNQUtFX1JFUVVJUkVEX0ZMQUdTfSAtcWhhbHQ9dyAtcWZsYWc9dzp3IikKLSAgICBFTkRJRiAoKQorICAgIEVORElGIChDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIl5YTCQiKQogICAgIElGIChNU1ZDKQogICAgICAgIyBOT1RFOiAvV1ggb3B0aW9uIGlzIHRoZSBzYW1lIGFzIGdjYydzIC1XZXJyb3Igb3B0aW9uLgogICAgICAgU0VUKENNQUtFX1JFUVVJUkVEX0ZMQUdTICIke0NNQUtFX1JFUVVJUkVEX0ZMQUdTfSAvV1giKQpAQCAtODg5LDcgKzExNzIsNiBAQAogICBVTlNFVChMSUJDSEFSU0VUX1NUQVRJQyBDQUNIRSkKIEVORElGKEVOQUJMRV9JQ09OVikKIAotSUYoMCkgIyBDTWFrZSBkb2VzIG5vdCBuZWVkIFhNTCBzdXBwb3J0IGluIGxpYmFyY2hpdmUKICMKICMgRmluZCBMaWJ4bWwyCiAjCkBAIC05MzYsMjMgKzEyMTgsMTM1IEBACiAgICAgQ01BS0VfUE9QX0NIRUNLX1NUQVRFKCkJIyBSZXN0b3JlIHRoZSBzdGF0ZSBvZiB0aGUgdmFyaWFibGVzCiAgIEVORElGKEVYUEFUX0ZPVU5EKQogRU5ESUYoTElCWE1MMl9GT1VORCkKLU1BUktfQVNfQURWQU5DRUQoQ0xFQVIgTElCWE1MMl9JTkNMVURFX0RJUikKLU1BUktfQVNfQURWQU5DRUQoQ0xFQVIgTElCWE1MMl9MSUJSQVJJRVMpCi1FTkRJRigpCisKKyMKKyMgUE9TSVggUmVndWxhciBFeHByZXNzaW9uIHN1cHBvcnQKKyMKK0lGKFBPU0lYX1JFR0VYX0xJQiBNQVRDSEVTICJeKEFVVE98TElCQ3xMSUJSRUdFWCkkIikKKyAgIworICAjIElmIFBDUkVQT1NJWCBpcyBub3QgZm91bmQgb3Igbm90IHJlcXVlc3RlZCwgdHJ5IHVzaW5nIHJlZ2V4CisgICMgZnJvbSBsaWJjIG9yIGxpYnJlZ2V4CisgICMKKyAgRklORF9QQVRIKFJFR0VYX0lOQ0xVREVfRElSIHJlZ2V4LmgpCisgIElGKFJFR0VYX0lOQ0xVREVfRElSKQorICAgIENIRUNLX0ZVTkNUSU9OX0VYSVNUU19HTElCQyhyZWdjb21wIEhBVkVfUkVHQ09NUF9MSUJDKQorICAgICMKKyAgICAjIElmIGxpYmMgZG9lcyBub3QgcHJvdmlkZSByZWdleCwgZmluZCBsaWJyZWdleC4KKyAgICAjCisgICAgSUYoTk9UIEhBVkVfUkVHQ09NUF9MSUJDKQorICAgICAgQ01BS0VfUFVTSF9DSEVDS19TVEFURSgpCSMgU2F2ZSB0aGUgc3RhdGUgb2YgdGhlIHZhcmlhYmxlcworICAgICAgRklORF9MSUJSQVJZKFJFR0VYX0xJQlJBUlkgcmVnZXgpCisgICAgICBJRihSRUdFWF9MSUJSQVJZKQorICAgICAgICBTRVQoQ01BS0VfUkVRVUlSRURfTElCUkFSSUVTICR7UkVHRVhfTElCUkFSWX0pCisgICAgICAgIENIRUNLX0ZVTkNUSU9OX0VYSVNUU19HTElCQyhyZWdjb21wIEhBVkVfUkVHQ09NUF9MSUJSRUdFWCkKKyAgICAgICAgSUYoSEFWRV9SRUdDT01QX0xJQlJFR0VYKQorICAgICAgICAgIExJU1QoQVBQRU5EIEFERElUSU9OQUxfTElCUyAke1JFR0VYX0xJQlJBUll9KQorICAgICAgICAgICMKKyAgICAgICAgICAjIElmIHJlZ2V4LmggaXMgbm90IGZvdW5kLCByZXRyeSBsb29raW5nIGZvciByZWdleC5oIGF0CisgICAgICAgICAgIyBSRUdFWF9JTkNMVURFX0RJUgorICAgICAgICAgICMKKyAgICAgICAgICBJRihOT1QgSEFWRV9SRUdFWF9IKQorICAgICAgICAgICAgVU5TRVQoSEFWRV9SRUdFWF9IIENBQ0hFKQorICAgICAgICAgICAgSU5DTFVERV9ESVJFQ1RPUklFUygke1JFR0VYX0lOQ0xVREVfRElSfSkKKyAgICAgICAgICAgIFNFVChDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAke1JFR0VYX0lOQ0xVREVfRElSfSkKKyAgICAgICAgICAgIExBX0NIRUNLX0lOQ0xVREVfRklMRSgicmVnZXguaCIgSEFWRV9SRUdFWF9IKQorICAgICAgICAgIEVORElGKE5PVCBIQVZFX1JFR0VYX0gpCisgICAgICAgICAgIyBUZXN0IGlmIGEgbWFjcm8gaXMgbmVlZGVkIGZvciB0aGUgbGlicmFyeS4KKyAgICAgICAgICBUUllfTUFDUk9fRk9SX0xJQlJBUlkoCisgICAgICAgICAgICAiJHtSRUdFWF9JTkNMVURFX0RJUn0iICIke1JFR0VYX0xJQlJBUll9IgorICAgICAgICAgICAgQ09NUElMRVMKKyAgICAgICAgICAgICIjaW5jbHVkZSA8c3RkZGVmLmg+XG4jaW5jbHVkZSA8cmVnZXguaD5cbmludCBtYWluKCkge3JlZ2V4X3QgcjtyZXR1cm4gcmVnY29tcCgmciwgXCJcIiwgMCk7fSIKKyAgICAgICAgICAgICJVU0VfUkVHRVhfRExMO1VTRV9SRUdFWF9TVEFUSUMiKQorICAgICAgICAgIElGKFVTRV9SRUdFWF9ETEwpCisgICAgICAgICAgICBBRERfREVGSU5JVElPTlMoLURVU0VfUkVHRVhfRExMKQorICAgICAgICAgIEVMU0VJRihVU0VfUkVHRVhfU1RBVElDKQorICAgICAgICAgICAgQUREX0RFRklOSVRJT05TKC1EVVNFX1JFR0VYX1NUQVRJQykKKyAgICAgICAgICBFTkRJRihVU0VfUkVHRVhfRExMKQorICAgICAgICBFTkRJRihIQVZFX1JFR0NPTVBfTElCUkVHRVgpCisgICAgICBFTkRJRihSRUdFWF9MSUJSQVJZKQorICAgICAgQ01BS0VfUE9QX0NIRUNLX1NUQVRFKCkJIyBSZXN0b3JlIHRoZSBzdGF0ZSBvZiB0aGUgdmFyaWFibGVzCisgICAgRU5ESUYoTk9UIEhBVkVfUkVHQ09NUF9MSUJDKQorICBFTkRJRihSRUdFWF9JTkNMVURFX0RJUikKKyAgSUYoSEFWRV9SRUdDT01QX0xJQkMgT1IgSEFWRV9SRUdDT01QX0xJQlJFR0VYKQorICAgIFNFVChGT1VORF9QT1NJWF9SRUdFWF9MSUIgMSkKKyAgRU5ESUYoSEFWRV9SRUdDT01QX0xJQkMgT1IgSEFWRV9SRUdDT01QX0xJQlJFR0VYKQorRU5ESUYoUE9TSVhfUkVHRVhfTElCIE1BVENIRVMgIl4oQVVUT3xMSUJDfExJQlJFR0VYKSQiKQorCitJRihOT1QgRk9VTkRfUE9TSVhfUkVHRVhfTElCIEFORCBQT1NJWF9SRUdFWF9MSUIgTUFUQ0hFUyAiXihBVVRPfExJQlBDUkVQT1NJWCkkIikKKyAgIworICAjIElmIHJlcXVlc3RlZCwgdHJ5IGZpbmRpbmcgbGlicmFyeSBmb3IgUENSRVBPU0lYCisgICMKKyAgSUYoRU5BQkxFX0xpYkdDQykKKyAgICBGSU5EX1BBQ0tBR0UoTGliR0NDKQorICBFTFNFKCkKKyAgICBTRVQoTElCR0NDX0ZPVU5EIEZBTFNFKSAjIE92ZXJyaWRlIGNhY2hlZCB2YWx1ZQorICBFTkRJRigpCisgIElGKEVOQUJMRV9QQ1JFUE9TSVgpCisgICAgRklORF9QQUNLQUdFKFBDUkVQT1NJWCkKKyAgRUxTRSgpCisgICAgU0VUKFBDUkVQT1NJWF9GT1VORCBGQUxTRSkgIyBPdmVycmlkZSBjYWNoZWQgdmFsdWUKKyAgRU5ESUYoKQorICBJRihQQ1JFUE9TSVhfRk9VTkQpCisgICAgSU5DTFVERV9ESVJFQ1RPUklFUygke1BDUkVfSU5DTFVERV9ESVJ9KQorICAgIExJU1QoQVBQRU5EIEFERElUSU9OQUxfTElCUyAke1BDUkVQT1NJWF9MSUJSQVJJRVN9KQorICAgICMgVGVzdCBpZiBhIG1hY3JvIGlzIG5lZWRlZCBmb3IgdGhlIGxpYnJhcnkuCisgICAgVFJZX01BQ1JPX0ZPUl9MSUJSQVJZKAorICAgICAgIiR7UENSRV9JTkNMVURFX0RJUn0iICIke1BDUkVQT1NJWF9MSUJSQVJJRVN9IgorICAgICAgQ09NUElMRVMKKyAgICAgICIjaW5jbHVkZSA8cGNyZXBvc2l4Lmg+XG5pbnQgbWFpbigpIHtyZWdleF90IHI7cmV0dXJuIHJlZ2NvbXAoJnIsIFwiXCIsIDApO30iCisgICAgICAiV0lUSE9VVF9QQ1JFX1NUQVRJQztQQ1JFX1NUQVRJQyIpCisgICAgSUYoTk9UIFdJVEhPVVRfUENSRV9TVEFUSUMgQU5EIFBDUkVfU1RBVElDKQorICAgICAgQUREX0RFRklOSVRJT05TKC1EUENSRV9TVEFUSUMpCisJRUxTRUlGKE5PVCBXSVRIT1VUX1BDUkVfU1RBVElDIEFORCBOT1QgUENSRV9TVEFUSUMgQU5EIFBDUkVfRk9VTkQpCisJICAjIERldGVybWluZSBpZiBwY3JlIHN0YXRpYyBsaWJyYXJpZXMgYXJlIHRvIGJlIHVzZWQuCisgICAgICBMSVNUKEFQUEVORCBBRERJVElPTkFMX0xJQlMgJHtQQ1JFX0xJQlJBUklFU30pCisgICAgICBTRVQoVE1QX0xJQlJBUklFUyAke1BDUkVQT1NJWF9MSUJSQVJJRVN9ICR7UENSRV9MSUJSQVJJRVN9KQorICAgICAgTUVTU0FHRShTVEFUVVMgInRyeWluZyBhZ2FpbiB3aXRoIC1scGNyZSBpbmNsdWRlZCIpCisgICAgICBUUllfTUFDUk9fRk9SX0xJQlJBUlkoCisgICAgICAgICIke1BDUkVfSU5DTFVERV9ESVJ9IiAiJHtUTVBfTElCUkFSSUVTfSIKKyAgICAgICAgQ09NUElMRVMKKyAgICAgICAgIiNpbmNsdWRlIDxwY3JlcG9zaXguaD5cbmludCBtYWluKCkge3JlZ2V4X3QgcjtyZXR1cm4gcmVnY29tcCgmciwgXCJcIiwgMCk7fSIKKyAgICAgICAgIldJVEhPVVRfUENSRV9TVEFUSUM7UENSRV9TVEFUSUMiKQorICAgICAgSUYoTk9UIFdJVEhPVVRfUENSRV9TVEFUSUMgQU5EIFBDUkVfU1RBVElDKQorICAgICAgICBBRERfREVGSU5JVElPTlMoLURQQ1JFX1NUQVRJQykKKyAgICAgIEVMU0VJRihOT1QgV0lUSE9VVF9QQ1JFX1NUQVRJQyBBTkQgTk9UIFBDUkVfU1RBVElDIEFORCBNU1ZDIEFORCBMSUJHQ0NfRk9VTkQpCisgICAgICAgICMgV2hlbiBkb2luZyBhIFZpc3VhbCBTdHVkaW8gYnVpbGQgdXNpbmcgcGNyZSBzdGF0aWMgbGlicmFyaWVzCisgICAgICAgICMgYnVpbHQgdXNpbmcgdGhlIG1pbmd3IHRvb2xjaGFpbiwgLWxnY2MgaXMgbmVlZGVkIHRvIHJlc29sdmUKKyAgICAgICAgIyBfX19jaGtzdGtfbXMuCisgICAgICAgIE1FU1NBR0UoU1RBVFVTICJWaXN1YWwgU3R1ZGlvIGJ1aWxkIGRldGVjdGVkLCB0cnlpbmcgYWdhaW4gd2l0aCAtbGdjYyBpbmNsdWRlZCIpCisgICAgICAgIExJU1QoQVBQRU5EIEFERElUSU9OQUxfTElCUyAke0xJQkdDQ19MSUJSQVJJRVN9KQorICAgICAgICBTRVQoVE1QX0xJQlJBUklFUyAke1BDUkVQT1NJWF9MSUJSQVJJRVN9ICR7UENSRV9MSUJSQVJJRVN9ICR7TElCR0NDX0xJQlJBUklFU30pCisgICAgICAgICAgVFJZX01BQ1JPX0ZPUl9MSUJSQVJZKAorICAgICAgICAgICAgIiR7UENSRV9JTkNMVURFX0RJUn0iICIke1RNUF9MSUJSQVJJRVN9IgorICAgICAgICAgICAgQ09NUElMRVMKKyAgICAgICAgICAgICIjaW5jbHVkZSA8cGNyZXBvc2l4Lmg+XG5pbnQgbWFpbigpIHtyZWdleF90IHI7cmV0dXJuIHJlZ2NvbXAoJnIsIFwiXCIsIDApO30iCisgICAgICAgICAgICAiV0lUSE9VVF9QQ1JFX1NUQVRJQztQQ1JFX1NUQVRJQyIpCisgICAgICAgICAgSUYoTk9UIFdJVEhPVVRfUENSRV9TVEFUSUMgQU5EIFBDUkVfU1RBVElDKQorICAgICAgICAgICAgQUREX0RFRklOSVRJT05TKC1EUENSRV9TVEFUSUMpCisgICAgICAgICAgRU5ESUYoTk9UIFdJVEhPVVRfUENSRV9TVEFUSUMgQU5EIFBDUkVfU1RBVElDKQorICAgICAgRU5ESUYoTk9UIFdJVEhPVVRfUENSRV9TVEFUSUMgQU5EIFBDUkVfU1RBVElDKQorICAgIEVORElGKE5PVCBXSVRIT1VUX1BDUkVfU1RBVElDIEFORCBQQ1JFX1NUQVRJQykKKyAgRU5ESUYoUENSRVBPU0lYX0ZPVU5EKQorICBNQVJLX0FTX0FEVkFOQ0VEKENMRUFSIFBDUkVfSU5DTFVERV9ESVIpCisgIE1BUktfQVNfQURWQU5DRUQoQ0xFQVIgUENSRVBPU0lYX0xJQlJBUklFUykKKyAgTUFSS19BU19BRFZBTkNFRChDTEVBUiBQQ1JFX0xJQlJBUklFUykKKyAgTUFSS19BU19BRFZBTkNFRChDTEVBUiBMSUJHQ0NfTElCUkFSSUVTKQorRU5ESUYoTk9UIEZPVU5EX1BPU0lYX1JFR0VYX0xJQiBBTkQgUE9TSVhfUkVHRVhfTElCIE1BVENIRVMgIl4oQVVUT3xMSUJQQ1JFUE9TSVgpJCIpCiAKICMKICMgQ2hlY2sgZnVuY3Rpb25zCiAjCiBDTUFLRV9QVVNIX0NIRUNLX1NUQVRFKCkJIyBTYXZlIHRoZSBzdGF0ZSBvZiB0aGUgdmFyaWFibGVzCi1JRiAoQ01BS0VfQ19DT01QSUxFUl9JRCBTVFJFUVVBTCAiR05VIiBPUgotICAgIENNQUtFX0NfQ09NUElMRVJfSUQgU1RSRVFVQUwgIkNsYW5nIikKK0lGIChDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIl5HTlUkIiBPUgorICAgIENNQUtFX0NfQ09NUElMRVJfSUQgTUFUQ0hFUyAiXkNsYW5nJCIpCiAgICMKICAgIyBEdXJpbmcgY2hlY2tpbmcgZnVuY3Rpb25zLCB3ZSBzaG91bGQgdXNlIC1mbm8tYnVpbHRpbiB0byBhdm9pZCB0aGUKICAgIyBmYWlsdXJlIG9mIGZ1bmN0aW9uIGRldGVjdGlvbiB3aGljaCBmYWlsdXJlIGlzIGFuIGVycm9yICJjb25mbGljdGluZwogICAjIHR5cGVzIGZvciBidWlsdC1pbiBmdW5jdGlvbiIgY2F1c2VkIGJ5IHVzaW5nIC1XZXJyb3Igb3B0aW9uLgogICAjCiAgIFNFVChDTUFLRV9SRVFVSVJFRF9GTEFHUyAiJHtDTUFLRV9SRVFVSVJFRF9GTEFHU30gLWZuby1idWlsdGluIikKLUVORElGICgpCitFTkRJRiAoQ01BS0VfQ19DT01QSUxFUl9JRCBNQVRDSEVTICJeR05VJCIgT1IKKyAgICAgICBDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIl5DbGFuZyQiKQogQ0hFQ0tfU1lNQk9MX0VYSVNUUyhfQ3J0U2V0UmVwb3J0TW9kZSAiY3J0ZGJnLmgiIEhBVkVfX0NydFNldFJlcG9ydE1vZGUpCiBDSEVDS19GVU5DVElPTl9FWElTVFNfR0xJQkMoYXJjNHJhbmRvbV9idWYgSEFWRV9BUkM0UkFORE9NX0JVRikKIENIRUNLX0ZVTkNUSU9OX0VYSVNUU19HTElCQyhjaGZsYWdzIEhBVkVfQ0hGTEFHUykKQEAgLTEwMTYsNiArMTQxMCw3IEBACiBDSEVDS19GVU5DVElPTl9FWElTVFNfR0xJQkMoc3ltbGluayBIQVZFX1NZTUxJTkspCiBDSEVDS19GVU5DVElPTl9FWElTVFNfR0xJQkModGltZWdtIEhBVkVfVElNRUdNKQogQ0hFQ0tfRlVOQ1RJT05fRVhJU1RTX0dMSUJDKHR6c2V0IEhBVkVfVFpTRVQpCitDSEVDS19GVU5DVElPTl9FWElTVFNfR0xJQkModW5saW5rYXQgSEFWRV9VTkxJTktBVCkKIENIRUNLX0ZVTkNUSU9OX0VYSVNUU19HTElCQyh1bnNldGVudiBIQVZFX1VOU0VURU5WKQogQ0hFQ0tfRlVOQ1RJT05fRVhJU1RTX0dMSUJDKHV0aW1lIEhBVkVfVVRJTUUpCiBDSEVDS19GVU5DVElPTl9FWElTVFNfR0xJQkModXRpbWVzIEhBVkVfVVRJTUVTKQpAQCAtMTAyOSw2ICsxNDI0LDcgQEAKIENIRUNLX0ZVTkNUSU9OX0VYSVNUU19HTElCQyhfY3RpbWU2NF9zIEhBVkVfX0NUSU1FNjRfUykKIENIRUNLX0ZVTkNUSU9OX0VYSVNUU19HTElCQyhfZnNlZWtpNjQgSEFWRV9fRlNFRUtJNjQpCiBDSEVDS19GVU5DVElPTl9FWElTVFNfR0xJQkMoX2dldF90aW1lem9uZSBIQVZFX19HRVRfVElNRVpPTkUpCitDSEVDS19GVU5DVElPTl9FWElTVFNfR0xJQkMoX2dtdGltZTY0X3MgSEFWRV9fR01USU1FNjRfUykKIENIRUNLX0ZVTkNUSU9OX0VYSVNUU19HTElCQyhfbG9jYWx0aW1lNjRfcyBIQVZFX19MT0NBTFRJTUU2NF9TKQogQ0hFQ0tfRlVOQ1RJT05fRVhJU1RTX0dMSUJDKF9ta2dtdGltZTY0IEhBVkVfX01LR01USU1FNjQpCiAKQEAgLTEyOTcsNiArMTY5MywxMSBAQAogICBDSEVDS19MSUJSQVJZX0VYSVNUUyhhdHRyICJzZXR4YXR0ciIgIiIgSEFWRV9MSUJBVFRSKQogICBJRihIQVZFX0xJQkFUVFIpCiAgICAgU0VUKENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUyAiYXR0ciIpCisgIEVMU0UoKQorICAgIENIRUNLX0xJQlJBUllfRVhJU1RTKGdudSAic2V0eGF0dHIiICIiIEhBVkVfTElCQVRUUl9HTlUpCisgICAgSUYoSEFWRV9MSUJBVFRSX0dOVSkKKyAgICAgIFNFVChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMgImdudSIpCisgICAgRU5ESUYoKQogICBFTkRJRihIQVZFX0xJQkFUVFIpCiAgIENIRUNLX1NZTUJPTF9FWElTVFMoRVhUQVRUUl9OQU1FU1BBQ0VfVVNFUiAic3lzL3R5cGVzLmg7c3lzL2V4dGF0dHIuaCIgSEFWRV9ERUNMX0VYVEFUVFJfTkFNRVNQQUNFX1VTRVIpCiAgIENIRUNLX1NZTUJPTF9FWElTVFMoWEFUVFJfTk9GT0xMT1cgInN5cy94YXR0ci5oIiBIQVZFX0RFQ0xfWEFUVFJfTk9GT0xMT1cpCkBAIC0xNjIwLDYgKzIwMjEsNyBAQAogQ0hFQ0tfQ1JZUFRPKCJTSEEyNTY7U0hBMzg0O1NIQTUxMiIgTElCQzIpCiBDSEVDS19DUllQVE8oIlNIQTI1NjtTSEEzODQ7U0hBNTEyIiBMSUJDMykKIENIRUNLX0NSWVBUTygiTUQ1O1NIQTE7U0hBMjU2O1NIQTM4NDtTSEE1MTIiIExJQlNZU1RFTSkKK0NIRUNLX0NSWVBUTygiTUQ1O1JNRDE2MDtTSEExO1NIQTI1NjtTSEEzODQ7U0hBNTEyIiBNQkVEVExTKQogQ0hFQ0tfQ1JZUFRPKCJNRDU7Uk1EMTYwO1NIQTE7U0hBMjU2O1NIQTM4NDtTSEE1MTIiIE5FVFRMRSkKIENIRUNLX0NSWVBUTygiTUQ1O1JNRDE2MDtTSEExO1NIQTI1NjtTSEEzODQ7U0hBNTEyIiBPUEVOU1NMKQogCkBAIC0xNjM0LDYgKzIwMzYsMTEgQEAKIElOQ0xVREVfRElSRUNUT1JJRVMoQkVGT1JFICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfSkKIEFERF9ERUZJTklUSU9OUygtREhBVkVfQ09ORklHX0gpCiAKK0lGKDApICMgQ01ha2UgZG9lcyBub3QgYnVpbGQgbGliYXJjaGl2ZSdzIHBhY2thZ2VzLgorIyBIYW5kbGUgZ2VuZXJhdGlvbiBvZiB0aGUgbGliYXJjaGl2ZS5wYyBmaWxlIGZvciBwa2ctY29uZmlnCitJTkNMVURFKENyZWF0ZVBrZ0NvbmZpZ0ZpbGUpCitFTkRJRigpCisKICMKICMgUmVnaXN0ZXIgaW5zdGFsbGF0aW9uIG9mIFBERiBkb2N1bWVudHMuCiAjCkBAIC0xNjU5LDExICsyMDY2LDIyIEBACiAgIEFERF9ERUZJTklUSU9OUygtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSkKIEVORElGKE1TVkMpCiAKK0lGKDApICMgQ01ha2UgZG9lcyBub3QgYnVpbGQgbGliYXJjaGl2ZSdzIHRlc3RzLgorSUYoRU5BQkxFX1RFU1QpCisgIEFERF9DVVNUT01fVEFSR0VUKHJ1bl9hbGxfdGVzdHMpCitFTkRJRihFTkFCTEVfVEVTVCkKK0VORElGKCkKKwogIyBXZSBuZWVkIENvcmVTZXJ2aWNlcyBvbiBNYWMgT1MuCiBJRihBUFBMRSkKICAgTElTVChBUFBFTkQgQURESVRJT05BTF9MSUJTICItZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyIpCiBFTkRJRihBUFBMRSkKIAogYWRkX3N1YmRpcmVjdG9yeShsaWJhcmNoaXZlKQorSUYoMCkgIyBDTWFrZSBkb2VzIG5vdCBidWlsZCBsaWJhcmNoaXZlJ3MgY29tbWFuZC1saW5lIHRvb2xzLgorYWRkX3N1YmRpcmVjdG9yeShjYXQpCithZGRfc3ViZGlyZWN0b3J5KHRhcikKK2FkZF9zdWJkaXJlY3RvcnkoY3BpbykKK0VORElGKCkKIAogaW5zdGFsbChGSUxFUyBDT1BZSU5HIERFU1RJTkFUSU9OICR7Q01BS0VfRE9DX0RJUn0vY21saWJhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9DT1BZSU5HIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9DT1BZSU5HCmluZGV4IDkzOTUyYjcuLjE0YmJlZmEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvQ09QWUlORworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL0NPUFlJTkcKQEAgLTIzLDYgKzIzLDEzIEBACiAqIFRoZSBmb2xsb3dpbmcgc291cmNlIGZpbGVzIGFyZSBpbiB0aGUgcHVibGljIGRvbWFpbjoKICAgIGxpYmFyY2hpdmUvYXJjaGl2ZV9nZXRkYXRlLmMKIAorKiBUaGUgZm9sbG93aW5nIHNvdXJjZSBmaWxlcyBhcmUgdHJpcGxlLWxpY2Vuc2VkIHdpdGggdGhlIGFiaWxpdHkgdG8gY2hvb3NlCisgIGZyb20gQ0MwIDEuMCBVbml2ZXJzYWwsIE9wZW5TU0wgb3IgQXBhY2hlIDIuMCBsaWNlbnNlczoKKyAgIGxpYmFyY2hpdmUvYXJjaGl2ZV9ibGFrZTIuaAorICAgbGliYXJjaGl2ZS9hcmNoaXZlX2JsYWtlMl9pbXBsLmgKKyAgIGxpYmFyY2hpdmUvYXJjaGl2ZV9ibGFrZTJzX3JlZi5jCisgICBsaWJhcmNoaXZlL2FyY2hpdmVfYmxha2Uyc3BfcmVmLmMKKwogKiBUaGUgYnVpbGQgZmlsZXMtLS1pbmNsdWRpbmcgTWFrZWZpbGVzLCBjb25maWd1cmUgc2NyaXB0cywKICAgYW5kIGF1eGlsaWFyeSBzY3JpcHRzIHVzZWQgYXMgcGFydCBvZiB0aGUgY29tcGlsZSBwcm9jZXNzLS0taGF2ZQogICB3aWRlbHkgdmFyeWluZyBsaWNlbnNpbmcgdGVybXMuICBQbGVhc2UgY2hlY2sgaW5kaXZpZHVhbCBmaWxlcyBiZWZvcmUKQEAgLTM0LDcgKzQxLDcgQEAKIHNlZW1zIHRvIGJlIGFuIHVuYXZvaWRhYmxlIG1lc3MuCiAKIAotQ29weXJpZ2h0IChjKSAyMDAzLTIwMDkgPGF1dGhvcihzKT4KK0NvcHlyaWdodCAoYykgMjAwMy0yMDE4IDxhdXRob3Iocyk+CiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvYnVpbGQvY21ha2UvRmluZE1iZWRUTFMuY21ha2UgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2J1aWxkL2NtYWtlL0ZpbmRNYmVkVExTLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5MTYzOTUKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2J1aWxkL2NtYWtlL0ZpbmRNYmVkVExTLmNtYWtlCkBAIC0wLDAgKzEsMTMgQEAKK2ZpbmRfcGF0aChNQkVEVExTX0lOQ0xVREVfRElSUyBtYmVkdGxzL3NzbC5oKQorCitmaW5kX2xpYnJhcnkoTUJFRFRMU19MSUJSQVJZIG1iZWR0bHMpCitmaW5kX2xpYnJhcnkoTUJFRFg1MDlfTElCUkFSWSBtYmVkeDUwOSkKK2ZpbmRfbGlicmFyeShNQkVEQ1JZUFRPX0xJQlJBUlkgbWJlZGNyeXB0bykKKworc2V0KE1CRURUTFNfTElCUkFSSUVTICIke01CRURUTFNfTElCUkFSWX0iICIke01CRURYNTA5X0xJQlJBUll9IiAiJHtNQkVEQ1JZUFRPX0xJQlJBUll9IikKKworaW5jbHVkZShGaW5kUGFja2FnZUhhbmRsZVN0YW5kYXJkQXJncykKK2ZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncyhNQkVEVExTIERFRkFVTFRfTVNHCisgICAgTUJFRFRMU19JTkNMVURFX0RJUlMgTUJFRFRMU19MSUJSQVJZIE1CRURYNTA5X0xJQlJBUlkgTUJFRENSWVBUT19MSUJSQVJZKQorCittYXJrX2FzX2FkdmFuY2VkKE1CRURUTFNfSU5DTFVERV9ESVJTIE1CRURUTFNfTElCUkFSWSBNQkVEWDUwOV9MSUJSQVJZIE1CRURDUllQVE9fTElCUkFSWSkKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvYnVpbGQvY21ha2UvY29uZmlnLmguaW4gYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2J1aWxkL2NtYWtlL2NvbmZpZy5oLmluCmluZGV4IDE4NTFkODEuLmJjZGE0YzMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvYnVpbGQvY21ha2UvY29uZmlnLmguaW4KKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9idWlsZC9jbWFrZS9jb25maWcuaC5pbgpAQCAtNjgzLDYgKzY4MywxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBiejInIGxpYnJhcnkgKC1sYnoyKS4gKi8KICNjbWFrZWRlZmluZSBIQVZFX0xJQkJaMiAxCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYjInIGxpYnJhcnkgKC1sYjIpLiAqLworI2NtYWtlZGVmaW5lIEhBVkVfTElCQjIgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGJsYWtlMi5oPiBoZWFkZXIgZmlsZS4gKi8KKyNjbWFrZWRlZmluZSBIQVZFX0JMQUtFMl9IIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjaGFyc2V0JyBsaWJyYXJ5ICgtbGNoYXJzZXQpLiAqLwogI2NtYWtlZGVmaW5lIEhBVkVfTElCQ0hBUlNFVCAxCiAKQEAgLTcwNyw2ICs3MTMsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsem8yJyBsaWJyYXJ5ICgtbGx6bzIpLiAqLwogI2NtYWtlZGVmaW5lIEhBVkVfTElCTFpPMiAxCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWJlZGNyeXB0bycgbGlicmFyeSAoLWxtYmVkY3J5cHRvKS4gKi8KKyNjbWFrZWRlZmluZSBIQVZFX0xJQk1CRURDUllQVE8gMQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG5ldHRsZScgbGlicmFyeSAoLWxuZXR0bGUpLiAqLwogI2NtYWtlZGVmaW5lIEhBVkVfTElCTkVUVExFIDEKIApAQCAtMTExMSw2ICsxMTIwLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwogI2NtYWtlZGVmaW5lIEhBVkVfVU5JU1REX0ggMQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVubGlua2F0JyBmdW5jdGlvbi4gKi8KKyNjbWFrZWRlZmluZSBIQVZFX1VOTElOS0FUIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bnNldGVudicgZnVuY3Rpb24uICovCiAjY21ha2VkZWZpbmUgSEFWRV9VTlNFVEVOViAxCiAKQEAgLTEyMDQsNiArMTIxNiw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYF9nZXRfdGltZXpvbmUnIGZ1bmN0aW9uLiAqLwogI2NtYWtlZGVmaW5lIEhBVkVfX0dFVF9USU1FWk9ORSAxCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgX2dtdGltZTY0X3MnIGZ1bmN0aW9uLiAqLworI2NtYWtlZGVmaW5lIEhBVkVfX0dNVElNRTY0X1MgMQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYF9sb2NhbHRpbWU2NF9zJyBmdW5jdGlvbi4gKi8KICNjbWFrZWRlZmluZSBIQVZFX19MT0NBTFRJTUU2NF9TIDEKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9idWlsZC92ZXJzaW9uIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9idWlsZC92ZXJzaW9uCmluZGV4IDI0MjdlYWIuLjc4YmUzYWIgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvYnVpbGQvdmVyc2lvbgorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2J1aWxkL3ZlcnNpb24KQEAgLTEgKzEgQEAKLTMwMDMwMDMKKzMwMDQwMDIKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9DTWFrZUxpc3RzLnR4dCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlMzhkNjY0Li44OTFhMTQwIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ01ha2VMaXN0cy50eHQKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NNYWtlTGlzdHMudHh0CkBAIC01MSw2ICs1MSw4IEBACiAgIGFyY2hpdmVfcGxhdGZvcm1fYWNsLmgKICAgYXJjaGl2ZV9wbGF0Zm9ybV94YXR0ci5oCiAgIGFyY2hpdmVfcHBtZF9wcml2YXRlLmgKKyAgYXJjaGl2ZV9wcG1kOC5jCisgIGFyY2hpdmVfcHBtZDhfcHJpdmF0ZS5oCiAgIGFyY2hpdmVfcHBtZDcuYwogICBhcmNoaXZlX3BwbWQ3X3ByaXZhdGUuaAogICBhcmNoaXZlX3ByaXZhdGUuaApAQCAtMTAwLDYgKzEwMiw3IEBACiAgIGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9saGEuYwogICBhcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfbXRyZWUuYwogICBhcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMKKyAgYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3JhcjUuYwogICBhcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmF3LmMKICAgYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Rhci5jCiAgIGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF93YXJjLmMKQEAgLTE0Nyw2ICsxNTAsNyBAQAogICBhcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfaXNvOTY2MC5jCiAgIGFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9tdHJlZS5jCiAgIGFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wYXguYworICBhcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcHJpdmF0ZS5oCiAgIGFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9yYXcuYwogICBhcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfc2hhci5jCiAgIGFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF91c3Rhci5jCkBAIC0xNjcsNiArMTcxLDcgQEAKICAgYXJjaGl2ZV9lbnRyeS4zCiAgIGFyY2hpdmVfZW50cnlfYWNsLjMKICAgYXJjaGl2ZV9lbnRyeV9saW5raWZ5LjMKKyAgYXJjaGl2ZV9lbnRyeV9taXNjLjMKICAgYXJjaGl2ZV9lbnRyeV9wYXRocy4zCiAgIGFyY2hpdmVfZW50cnlfcGVybXMuMwogICBhcmNoaXZlX2VudHJ5X3N0YXQuMwpAQCAtMjE1LDYgKzIyMCwxMSBAQAogICBMSVNUKEFQUEVORCBsaWJhcmNoaXZlX1NPVVJDRVMgZmlsdGVyX2Zvcmtfd2luZG93cy5jKQogRU5ESUYoV0lOMzIgQU5EIE5PVCBDWUdXSU4pCiAKK0lGKEFSQ0hJVkVfQkxBS0UyKQorICBMSVNUKEFQUEVORCBsaWJhcmNoaXZlX1NPVVJDRVMgYXJjaGl2ZV9ibGFrZTJzcF9yZWYuYykKKyAgTElTVChBUFBFTkQgbGliYXJjaGl2ZV9TT1VSQ0VTIGFyY2hpdmVfYmxha2Uyc19yZWYuYykKK0VORElGKEFSQ0hJVkVfQkxBS0UyKQorCiBJRihBUkNISVZFX0FDTF9EQVJXSU4pCiAgIExJU1QoQVBQRU5EIGxpYmFyY2hpdmVfU09VUkNFUyBhcmNoaXZlX2Rpc2tfYWNsX2Rhcndpbi5jKQogRUxTRUlGKEFSQ0hJVkVfQUNMX0ZSRUVCU0QpCkBAIC0yMjgsMyArMjM4LDMzIEBACiAjIENNYWtlIG5lZWRzIGp1c3Qgb25lIHN0YXRpYyAiY21saWJhcmNoaXZlIiBsaWJyYXJ5LgogQUREX0xJQlJBUlkoY21saWJhcmNoaXZlIFNUQVRJQyAke2xpYmFyY2hpdmVfU09VUkNFU30gJHtpbmNsdWRlX0hFQURFUlN9KQogVEFSR0VUX0xJTktfTElCUkFSSUVTKGNtbGliYXJjaGl2ZSAke0FERElUSU9OQUxfTElCU30pCisKK0lGKDApICMgQ01ha2UgZG9lcyBub3QgYnVpbGQgbGliYXJjaGl2ZSdzIGZ1bGwgcGFja2FnZS4KKyMgTGliYXJjaGl2ZSBpcyBhIHNoYXJlZCBsaWJyYXJ5CitBRERfTElCUkFSWShhcmNoaXZlIFNIQVJFRCAke2xpYmFyY2hpdmVfU09VUkNFU30gJHtpbmNsdWRlX0hFQURFUlN9KQorVEFSR0VUX0lOQ0xVREVfRElSRUNUT1JJRVMoYXJjaGl2ZSBQVUJMSUMgLikKK1RBUkdFVF9MSU5LX0xJQlJBUklFUyhhcmNoaXZlICR7QURESVRJT05BTF9MSUJTfSkKK1NFVF9UQVJHRVRfUFJPUEVSVElFUyhhcmNoaXZlIFBST1BFUlRJRVMgU09WRVJTSU9OICR7U09WRVJTSU9OfSkKKworIyBhcmNoaXZlX3N0YXRpYyBpcyBhIHN0YXRpYyBsaWJyYXJ5CitBRERfTElCUkFSWShhcmNoaXZlX3N0YXRpYyBTVEFUSUMgJHtsaWJhcmNoaXZlX1NPVVJDRVN9ICR7aW5jbHVkZV9IRUFERVJTfSkKK1RBUkdFVF9MSU5LX0xJQlJBUklFUyhhcmNoaXZlX3N0YXRpYyAke0FERElUSU9OQUxfTElCU30pCitTRVRfVEFSR0VUX1BST1BFUlRJRVMoYXJjaGl2ZV9zdGF0aWMgUFJPUEVSVElFUyBDT01QSUxFX0RFRklOSVRJT05TCisgIExJQkFSQ0hJVkVfU1RBVElDKQorIyBPbiBQb3NpeCBzeXN0ZW1zLCBsaWJhcmNoaXZlLnNvIGFuZCBsaWJhcmNoaXZlLmEgY2FuIGNvLWV4aXN0LgorSUYoTk9UIFdJTjMyIE9SIENZR1dJTikKKyAgU0VUX1RBUkdFVF9QUk9QRVJUSUVTKGFyY2hpdmVfc3RhdGljIFBST1BFUlRJRVMgT1VUUFVUX05BTUUgYXJjaGl2ZSkKK0VORElGKE5PVCBXSU4zMiBPUiBDWUdXSU4pCisKK0lGKEVOQUJMRV9JTlNUQUxMKQorICAjIEhvdyB0byBpbnN0YWxsIHRoZSBsaWJyYXJpZXMKKyAgSU5TVEFMTChUQVJHRVRTIGFyY2hpdmUgYXJjaGl2ZV9zdGF0aWMKKyAgICAgICAgICBSVU5USU1FIERFU1RJTkFUSU9OIGJpbgorICAgICAgICAgIExJQlJBUlkgREVTVElOQVRJT04gbGliCisgICAgICAgICAgQVJDSElWRSBERVNUSU5BVElPTiBsaWIpCisgIElOU1RBTExfTUFOKCR7bGliYXJjaGl2ZV9NQU5TfSkKKyAgSU5TVEFMTChGSUxFUyAke2luY2x1ZGVfSEVBREVSU30gREVTVElOQVRJT04gaW5jbHVkZSkKK0VORElGKCkKKworYWRkX3N1YmRpcmVjdG9yeSh0ZXN0KQorRU5ESUYoKQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmUuaCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlLmgKaW5kZXggZjNlYmJmZS4uNTc0ZTA4NyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmUuaAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCkBAIC0zNiw3ICszNiw3IEBACiAgKiBhc3NlcnQgdGhhdCBBUkNISVZFX1ZFUlNJT05fTlVNQkVSID49IDIwMTIxMDguCiAgKi8KIC8qIE5vdGU6IENvbXBpbGVyIHdpbGwgY29tcGxhaW4gaWYgdGhpcyBkb2VzIG5vdCBtYXRjaCBhcmNoaXZlX2VudHJ5LmghICovCi0jZGVmaW5lCUFSQ0hJVkVfVkVSU0lPTl9OVU1CRVIgMzAwMzAwMworI2RlZmluZQlBUkNISVZFX1ZFUlNJT05fTlVNQkVSIDMwMDQwMDIKIAogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3RkZGVmLmg+ICAvKiBmb3Igd2NoYXJfdCAqLwpAQCAtNTIsNyArNTIsNyBAQAogICovCiAjaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIF9fQk9STEFORENfXyA+PSAweDU2MAogIyBpbmNsdWRlIDxzdGRpbnQuaD4KLSNlbGlmICFkZWZpbmVkKF9fV0FUQ09NQ19fKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX19JTlRFUklYKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKF9TQ09fRFMpICYmICFkZWZpbmVkKF9fb3NmX18pCisjZWxpZiAhZGVmaW5lZChfX1dBVENPTUNfXykgJiYgIWRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9fSU5URVJJWCkgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAhZGVmaW5lZChfU0NPX0RTKSAmJiAhZGVmaW5lZChfX29zZl9fKSAmJiAhZGVmaW5lZChfX0NMQU5HX0lOVFRZUEVTX0gpCiAjIGluY2x1ZGUgPGludHR5cGVzLmg+CiAjZW5kaWYKIApAQCAtMTUyLDcgKzE1Miw3IEBACiAvKgogICogVGV4dHVhbCBuYW1lL3ZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHVzZWZ1bCBmb3IgdmVyc2lvbiBkaXNwbGF5cy4KICAqLwotI2RlZmluZQlBUkNISVZFX1ZFUlNJT05fT05MWV9TVFJJTkcgIjMuMy4zIgorI2RlZmluZQlBUkNISVZFX1ZFUlNJT05fT05MWV9TVFJJTkcgIjMuNC4yIgogI2RlZmluZQlBUkNISVZFX1ZFUlNJT05fU1RSSU5HICJsaWJhcmNoaXZlICIgQVJDSElWRV9WRVJTSU9OX09OTFlfU1RSSU5HCiBfX0xBX0RFQ0wgY29uc3QgY2hhciAqCWFyY2hpdmVfdmVyc2lvbl9zdHJpbmcodm9pZCk7CiAKQEAgLTMzNyw2ICszMzcsNyBAQAogI2RlZmluZQlBUkNISVZFX0ZPUk1BVF9SQVIJCQkweEQwMDAwCiAjZGVmaW5lCUFSQ0hJVkVfRk9STUFUXzdaSVAJCQkweEUwMDAwCiAjZGVmaW5lCUFSQ0hJVkVfRk9STUFUX1dBUkMJCQkweEYwMDAwCisjZGVmaW5lCUFSQ0hJVkVfRk9STUFUX1JBUl9WNQkJCTB4MTAwMDAwCiAKIC8qCiAgKiBDb2RlcyByZXR1cm5lZCBieSBhcmNoaXZlX3JlYWRfZm9ybWF0X2NhcGFiaWxpdGllcygpLgpAQCAtNDQ2LDYgKzQ0Nyw3IEBACiBfX0xBX0RFQ0wgaW50IGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9saGEoc3RydWN0IGFyY2hpdmUgKik7CiBfX0xBX0RFQ0wgaW50IGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9tdHJlZShzdHJ1Y3QgYXJjaGl2ZSAqKTsKIF9fTEFfREVDTCBpbnQgYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3JhcihzdHJ1Y3QgYXJjaGl2ZSAqKTsKK19fTEFfREVDTCBpbnQgYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3JhcjUoc3RydWN0IGFyY2hpdmUgKik7CiBfX0xBX0RFQ0wgaW50IGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXcoc3RydWN0IGFyY2hpdmUgKik7CiBfX0xBX0RFQ0wgaW50IGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF90YXIoc3RydWN0IGFyY2hpdmUgKik7CiBfX0xBX0RFQ0wgaW50IGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF93YXJjKHN0cnVjdCBhcmNoaXZlICopOwpAQCAtNjg4LDYgKzY5MCw4IEBACiAjZGVmaW5lIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTICgweDEwMDAwKQogLyogRGVmYXVsdDogRG8gbm90IGNsZWFyIG5vLWNoYW5nZSBmbGFncyB3aGVuIHVubGlua2luZyBvYmplY3QgKi8KICNkZWZpbmUJQVJDSElWRV9FWFRSQUNUX0NMRUFSX05PQ0hBTkdFX0ZGTEFHUwkoMHgyMDAwMCkKKy8qIERlZmF1bHQ6IERvIG5vdCBleHRyYWN0IGF0b21pY2FsbHkgKHVzaW5nIHJlbmFtZSkgKi8KKyNkZWZpbmUJQVJDSElWRV9FWFRSQUNUX1NBRkVfV1JJVEVTCQkoMHg0MDAwMCkKIAogX19MQV9ERUNMIGludCBhcmNoaXZlX3JlYWRfZXh0cmFjdChzdHJ1Y3QgYXJjaGl2ZSAqLCBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqLAogCQkgICAgIGludCBmbGFncyk7CkBAIC0xMDkwLDYgKzEwOTQsOCBAQAogICovCiBfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfcGF0aF9leGNsdWRlZChzdHJ1Y3QgYXJjaGl2ZSAqLAogCQkgICAgc3RydWN0IGFyY2hpdmVfZW50cnkgKik7CisvKiBDb250cm9sIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgd2hlbiBkaXJlY3RvcnkgaXMgaW5jbHVkZWQuIERlZmF1bHQgb24uICovCitfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfc2V0X2luY2x1c2lvbl9yZWN1cnNpb24oc3RydWN0IGFyY2hpdmUgKiwgaW50KTsKIC8qIEFkZCBleGNsdXNpb24gcGF0aG5hbWUgcGF0dGVybi4gKi8KIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9leGNsdWRlX3BhdHRlcm4oc3RydWN0IGFyY2hpdmUgKiwgY29uc3QgY2hhciAqKTsKIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9leGNsdWRlX3BhdHRlcm5fdyhzdHJ1Y3QgYXJjaGl2ZSAqLApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfYWNsLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9hY2wuYwppbmRleCA0NzM2NTMxLi45NTJlMjBkIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9hY2wuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9hY2wuYwpAQCAtMTM4LDE0ICsxMzgsMTAgQEAKIAkJZnJlZShhY2wtPmFjbF9oZWFkKTsKIAkJYWNsLT5hY2xfaGVhZCA9IGFwOwogCX0KLQlpZiAoYWNsLT5hY2xfdGV4dF93ICE9IE5VTEwpIHsKLQkJZnJlZShhY2wtPmFjbF90ZXh0X3cpOwotCQlhY2wtPmFjbF90ZXh0X3cgPSBOVUxMOwotCX0KLQlpZiAoYWNsLT5hY2xfdGV4dCAhPSBOVUxMKSB7Ci0JCWZyZWUoYWNsLT5hY2xfdGV4dCk7Ci0JCWFjbC0+YWNsX3RleHQgPSBOVUxMOwotCX0KKwlmcmVlKGFjbC0+YWNsX3RleHRfdyk7CisJYWNsLT5hY2xfdGV4dF93ID0gTlVMTDsKKwlmcmVlKGFjbC0+YWNsX3RleHQpOworCWFjbC0+YWNsX3RleHQgPSBOVUxMOwogCWFjbC0+YWNsX3AgPSBOVUxMOwogCWFjbC0+YWNsX3R5cGVzID0gMDsKIAlhY2wtPmFjbF9zdGF0ZSA9IDA7IC8qIE5vdCBjb3VudGluZy4gKi8KQEAgLTMyNCwxNCArMzIwLDEwIEBACiAJCXJldHVybiAoTlVMTCk7CiAJfQogCi0JaWYgKGFjbC0+YWNsX3RleHRfdyAhPSBOVUxMKSB7Ci0JCWZyZWUoYWNsLT5hY2xfdGV4dF93KTsKLQkJYWNsLT5hY2xfdGV4dF93ID0gTlVMTDsKLQl9Ci0JaWYgKGFjbC0+YWNsX3RleHQgIT0gTlVMTCkgewotCQlmcmVlKGFjbC0+YWNsX3RleHQpOwotCQlhY2wtPmFjbF90ZXh0ID0gTlVMTDsKLQl9CisJZnJlZShhY2wtPmFjbF90ZXh0X3cpOworCWFjbC0+YWNsX3RleHRfdyA9IE5VTEw7CisJZnJlZShhY2wtPmFjbF90ZXh0KTsKKwlhY2wtPmFjbF90ZXh0ID0gTlVMTDsKIAogCS8qCiAJICogSWYgdGhlcmUncyBhIG1hdGNoaW5nIGVudHJ5IGFscmVhZHkgaW4gdGhlIGxpc3QsIG92ZXJ3cml0ZSBpdC4KQEAgLTc1Myw4ICs3NDUsMTAgQEAKIAkJCWFwcGVuZF9lbnRyeV93KCZ3cCwgcHJlZml4LCBhcC0+dHlwZSwgYXAtPnRhZywgZmxhZ3MsCiAJCQkgICAgd25hbWUsIGFwLT5wZXJtc2V0LCBpZCk7CiAJCQljb3VudCsrOwotCQl9IGVsc2UgaWYgKHIgPCAwICYmIGVycm5vID09IEVOT01FTSkKKwkJfSBlbHNlIGlmIChyIDwgMCAmJiBlcnJubyA9PSBFTk9NRU0pIHsKKwkJCWZyZWUod3MpOwogCQkJcmV0dXJuIChOVUxMKTsKKwkJfQogCX0KIAogCS8qIEFkZCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIgKi8KQEAgLTk3NSw4ICs5NjksMTAgQEAKIAkJCXByZWZpeCA9IE5VTEw7CiAJCXIgPSBhcmNoaXZlX21zdHJpbmdfZ2V0X21ic19sKAogCQkgICAgJmFwLT5uYW1lLCAmbmFtZSwgJmxlbiwgc2MpOwotCQlpZiAociAhPSAwKQorCQlpZiAociAhPSAwKSB7CisJCQlmcmVlKHMpOwogCQkJcmV0dXJuIChOVUxMKTsKKwkJfQogCQlpZiAoY291bnQgPiAwKQogCQkJKnArKyA9IHNlcGFyYXRvcjsKIAkJaWYgKG5hbWUgPT0gTlVMTCB8fApAQCAtMTU4MSwxNyArMTU3NywyOSBAQAogCiAJLyogU2NhbiBmb3IgdGhlIHNlcGFyYXRvci4gKi8KIAl3aGlsZSAoKip3cCAhPSBMJ1wwJyAmJiAqKndwICE9IEwnLCcgJiYgKip3cCAhPSBMJzonICYmCi0JICAgICoqd3AgIT0gTCdcbicpIHsKKwkgICAgKip3cCAhPSBMJ1xuJyAmJiAqKndwICE9IEwnIycpIHsKIAkJKCp3cCkrKzsKIAl9CiAJKnNlcCA9ICoqd3A7CiAKLQkvKiBUcmltIHRyYWlsaW5nIHdoaXRlc3BhY2UgdG8gbG9jYXRlIGVuZCBvZiBmaWVsZC4gKi8KLQkqZW5kID0gKndwIC0gMTsKLQl3aGlsZSAoKiplbmQgPT0gTCcgJyB8fCAqKmVuZCA9PSBMJ1x0JyB8fCAqKmVuZCA9PSBMJ1xuJykgewotCQkoKmVuZCktLTsKKwkvKiBMb2NhdGUgZW5kIG9mIGZpZWxkLCB0cmltIHRyYWlsaW5nIHdoaXRlc3BhY2UgaWYgbmVjZXNzYXJ5ICovCisJaWYgKCp3cCA9PSAqc3RhcnQpIHsKKwkJKmVuZCA9ICp3cDsKKwl9IGVsc2UgeworCQkqZW5kID0gKndwIC0gMTsKKwkJd2hpbGUgKCoqZW5kID09IEwnICcgfHwgKiplbmQgPT0gTCdcdCcgfHwgKiplbmQgPT0gTCdcbicpIHsKKwkJCSgqZW5kKS0tOworCQl9CisJCSgqZW5kKSsrOwogCX0KLQkoKmVuZCkrKzsKKworCS8qIEhhbmRsZSBpbi1maWVsZCBjb21tZW50cyAqLworCWlmICgqc2VwID09IEwnIycpIHsKKwkJd2hpbGUgKCoqd3AgIT0gTCdcMCcgJiYgKip3cCAhPSBMJywnICYmICoqd3AgIT0gTCdcbicpIHsKKwkJCSgqd3ApKys7CisJCX0KKwkJKnNlcCA9ICoqd3A7CisJfQogCiAJLyogQWRqdXN0IHNjYW5uZXIgbG9jYXRpb24uICovCiAJaWYgKCoqd3AgIT0gTCdcMCcpCkBAIC0xNjQyLDcgKzE2NTAsNyBAQAogCXJldCA9IEFSQ0hJVkVfT0s7CiAJdHlwZXMgPSAwOwogCi0Jd2hpbGUgKHRleHQgIT0gTlVMTCAgJiYgICp0ZXh0ICE9ICdcMCcpIHsKKwl3aGlsZSAodGV4dCAhPSBOVUxMICYmICAqdGV4dCAhPSAnXDAnKSB7CiAJCS8qCiAJCSAqIFBhcnNlIHRoZSBmaWVsZHMgb3V0IG9mIHRoZSBuZXh0IGVudHJ5LAogCQkgKiBhZHZhbmNlICd0ZXh0JyB0byBzdGFydCBvZiBuZXh0IGVudHJ5LgpAQCAtMTcwNyw2ICsxNzE1LDExIEBACiAJCQlzdCA9IGZpZWxkW25dLnN0YXJ0ICsgMTsKIAkJCWxlbiA9IGZpZWxkW25dLmVuZCAtIGZpZWxkW25dLnN0YXJ0OwogCisJCQlpZiAobGVuID09IDApIHsKKwkJCQlyZXQgPSBBUkNISVZFX1dBUk47CisJCQkJY29udGludWU7CisJCQl9CisKIAkJCXN3aXRjaCAoKnMpIHsKIAkJCWNhc2UgJ3UnOgogCQkJCWlmIChsZW4gPT0gMSB8fCAobGVuID09IDQKQEAgLTIwNTMsMTcgKzIwNjYsMzAgQEAKIAkqc3RhcnQgPSAqcDsKIAogCS8qIFNjYW4gZm9yIHRoZSBzZXBhcmF0b3IuICovCi0Jd2hpbGUgKCoqcCAhPSAnXDAnICYmICoqcCAhPSAnLCcgJiYgKipwICE9ICc6JyAmJiAqKnAgIT0gJ1xuJykgeworCXdoaWxlICgqKnAgIT0gJ1wwJyAmJiAqKnAgIT0gJywnICYmICoqcCAhPSAnOicgJiYgKipwICE9ICdcbicgJiYKKwkgICAgKipwICE9ICcjJykgewogCQkoKnApKys7CiAJfQogCSpzZXAgPSAqKnA7CiAKLQkvKiBUcmltIHRyYWlsaW5nIHdoaXRlc3BhY2UgdG8gbG9jYXRlIGVuZCBvZiBmaWVsZC4gKi8KLQkqZW5kID0gKnAgLSAxOwotCXdoaWxlICgqKmVuZCA9PSAnICcgfHwgKiplbmQgPT0gJ1x0JyB8fCAqKmVuZCA9PSAnXG4nKSB7Ci0JCSgqZW5kKS0tOworCS8qIExvY2F0ZSBlbmQgb2YgZmllbGQsIHRyaW0gdHJhaWxpbmcgd2hpdGVzcGFjZSBpZiBuZWNlc3NhcnkgKi8KKwlpZiAoKnAgPT0gKnN0YXJ0KSB7CisJCSplbmQgPSAqcDsKKwl9IGVsc2UgeworCQkqZW5kID0gKnAgLSAxOworCQl3aGlsZSAoKiplbmQgPT0gJyAnIHx8ICoqZW5kID09ICdcdCcgfHwgKiplbmQgPT0gJ1xuJykgeworCQkJKCplbmQpLS07CisJCX0KKwkJKCplbmQpKys7CiAJfQotCSgqZW5kKSsrOworCisJLyogSGFuZGxlIGluLWZpZWxkIGNvbW1lbnRzICovCisJaWYgKCpzZXAgPT0gJyMnKSB7CisJCXdoaWxlICgqKnAgIT0gJ1wwJyAmJiAqKnAgIT0gJywnICYmICoqcCAhPSAnXG4nKSB7CisJCQkoKnApKys7CisJCX0KKwkJKnNlcCA9ICoqcDsKKwl9CiAKIAkvKiBBZGp1c3Qgc2Nhbm5lciBsb2NhdGlvbi4gKi8KIAlpZiAoKipwICE9ICdcMCcpCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9hY2xfcHJpdmF0ZS5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfYWNsX3ByaXZhdGUuaAppbmRleCBlZjBiMDIzLi5hZjEwODE2IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9hY2xfcHJpdmF0ZS5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2FjbF9wcml2YXRlLmgKQEAgLTI1LDEzICsyNSwxMyBAQAogICogJEZyZWVCU0QkCiAgKi8KIAorI2lmbmRlZiBBUkNISVZFX0FDTF9QUklWQVRFX0hfSU5DTFVERUQKKyNkZWZpbmUgQVJDSElWRV9BQ0xfUFJJVkFURV9IX0lOQ0xVREVECisKICNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECiAjZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KICNlbmRpZgogCi0jaWZuZGVmIEFSQ0hJVkVfQUNMX1BSSVZBVEVfSF9JTkNMVURFRAotI2RlZmluZQlBUkNISVZFX0FDTF9QUklWQVRFX0hfSU5DTFVERUQKLQogI2luY2x1ZGUgImFyY2hpdmVfc3RyaW5nLmgiCiAKIHN0cnVjdCBhcmNoaXZlX2FjbF9lbnRyeSB7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9ibGFrZTIuaCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2JsYWtlMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNmZlNmYKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9ibGFrZTIuaApAQCAtMCwwICsxLDE5NSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIHJlZmVyZW5jZSBDIGltcGxlbWVudGF0aW9ucworCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKworICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworCisjaWZuZGVmIEFSQ0hJVkVfQkxBS0UyX0gKKyNkZWZpbmUgQVJDSElWRV9CTEFLRTJfSAorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2RlZmluZSBCTEFLRTJfUEFDS0VEKHgpIF9fcHJhZ21hKHBhY2socHVzaCwgMSkpIHggX19wcmFnbWEocGFjayhwb3ApKQorI2Vsc2UKKyNkZWZpbmUgQkxBS0UyX1BBQ0tFRCh4KSB4IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisgIGVudW0gYmxha2Uyc19jb25zdGFudAorICB7CisgICAgQkxBS0UyU19CTE9DS0JZVEVTID0gNjQsCisgICAgQkxBS0UyU19PVVRCWVRFUyAgID0gMzIsCisgICAgQkxBS0UyU19LRVlCWVRFUyAgID0gMzIsCisgICAgQkxBS0UyU19TQUxUQllURVMgID0gOCwKKyAgICBCTEFLRTJTX1BFUlNPTkFMQllURVMgPSA4CisgIH07CisKKyAgZW51bSBibGFrZTJiX2NvbnN0YW50CisgIHsKKyAgICBCTEFLRTJCX0JMT0NLQllURVMgPSAxMjgsCisgICAgQkxBS0UyQl9PVVRCWVRFUyAgID0gNjQsCisgICAgQkxBS0UyQl9LRVlCWVRFUyAgID0gNjQsCisgICAgQkxBS0UyQl9TQUxUQllURVMgID0gMTYsCisgICAgQkxBS0UyQl9QRVJTT05BTEJZVEVTID0gMTYKKyAgfTsKKworICB0eXBlZGVmIHN0cnVjdCBibGFrZTJzX3N0YXRlX18KKyAgeworICAgIHVpbnQzMl90IGhbOF07CisgICAgdWludDMyX3QgdFsyXTsKKyAgICB1aW50MzJfdCBmWzJdOworICAgIHVpbnQ4X3QgIGJ1ZltCTEFLRTJTX0JMT0NLQllURVNdOworICAgIHNpemVfdCAgIGJ1ZmxlbjsKKyAgICBzaXplX3QgICBvdXRsZW47CisgICAgdWludDhfdCAgbGFzdF9ub2RlOworICB9IGJsYWtlMnNfc3RhdGU7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgYmxha2UyYl9zdGF0ZV9fCisgIHsKKyAgICB1aW50NjRfdCBoWzhdOworICAgIHVpbnQ2NF90IHRbMl07CisgICAgdWludDY0X3QgZlsyXTsKKyAgICB1aW50OF90ICBidWZbQkxBS0UyQl9CTE9DS0JZVEVTXTsKKyAgICBzaXplX3QgICBidWZsZW47CisgICAgc2l6ZV90ICAgb3V0bGVuOworICAgIHVpbnQ4X3QgIGxhc3Rfbm9kZTsKKyAgfSBibGFrZTJiX3N0YXRlOworCisgIHR5cGVkZWYgc3RydWN0IGJsYWtlMnNwX3N0YXRlX18KKyAgeworICAgIGJsYWtlMnNfc3RhdGUgU1s4XVsxXTsKKyAgICBibGFrZTJzX3N0YXRlIFJbMV07CisgICAgdWludDhfdCAgICAgICBidWZbOCAqIEJMQUtFMlNfQkxPQ0tCWVRFU107CisgICAgc2l6ZV90ICAgICAgICBidWZsZW47CisgICAgc2l6ZV90ICAgICAgICBvdXRsZW47CisgIH0gYmxha2Uyc3Bfc3RhdGU7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgYmxha2UyYnBfc3RhdGVfXworICB7CisgICAgYmxha2UyYl9zdGF0ZSBTWzRdWzFdOworICAgIGJsYWtlMmJfc3RhdGUgUlsxXTsKKyAgICB1aW50OF90ICAgICAgIGJ1Zls0ICogQkxBS0UyQl9CTE9DS0JZVEVTXTsKKyAgICBzaXplX3QgICAgICAgIGJ1ZmxlbjsKKyAgICBzaXplX3QgICAgICAgIG91dGxlbjsKKyAgfSBibGFrZTJicF9zdGF0ZTsKKworICBCTEFLRTJfUEFDS0VEKHN0cnVjdCBibGFrZTJzX3BhcmFtX18KKyAgeworICAgIHVpbnQ4X3QgIGRpZ2VzdF9sZW5ndGg7IC8qIDEgKi8KKyAgICB1aW50OF90ICBrZXlfbGVuZ3RoOyAgICAvKiAyICovCisgICAgdWludDhfdCAgZmFub3V0OyAgICAgICAgLyogMyAqLworICAgIHVpbnQ4X3QgIGRlcHRoOyAgICAgICAgIC8qIDQgKi8KKyAgICB1aW50MzJfdCBsZWFmX2xlbmd0aDsgICAvKiA4ICovCisgICAgdWludDMyX3Qgbm9kZV9vZmZzZXQ7ICAvKiAxMiAqLworICAgIHVpbnQxNl90IHhvZl9sZW5ndGg7ICAgIC8qIDE0ICovCisgICAgdWludDhfdCAgbm9kZV9kZXB0aDsgICAgLyogMTUgKi8KKyAgICB1aW50OF90ICBpbm5lcl9sZW5ndGg7ICAvKiAxNiAqLworICAgIC8qIHVpbnQ4X3QgIHJlc2VydmVkWzBdOyAqLworICAgIHVpbnQ4X3QgIHNhbHRbQkxBS0UyU19TQUxUQllURVNdOyAvKiAyNCAqLworICAgIHVpbnQ4X3QgIHBlcnNvbmFsW0JMQUtFMlNfUEVSU09OQUxCWVRFU107ICAvKiAzMiAqLworICB9KTsKKworICB0eXBlZGVmIHN0cnVjdCBibGFrZTJzX3BhcmFtX18gYmxha2Uyc19wYXJhbTsKKworICBCTEFLRTJfUEFDS0VEKHN0cnVjdCBibGFrZTJiX3BhcmFtX18KKyAgeworICAgIHVpbnQ4X3QgIGRpZ2VzdF9sZW5ndGg7IC8qIDEgKi8KKyAgICB1aW50OF90ICBrZXlfbGVuZ3RoOyAgICAvKiAyICovCisgICAgdWludDhfdCAgZmFub3V0OyAgICAgICAgLyogMyAqLworICAgIHVpbnQ4X3QgIGRlcHRoOyAgICAgICAgIC8qIDQgKi8KKyAgICB1aW50MzJfdCBsZWFmX2xlbmd0aDsgICAvKiA4ICovCisgICAgdWludDMyX3Qgbm9kZV9vZmZzZXQ7ICAgLyogMTIgKi8KKyAgICB1aW50MzJfdCB4b2ZfbGVuZ3RoOyAgICAvKiAxNiAqLworICAgIHVpbnQ4X3QgIG5vZGVfZGVwdGg7ICAgIC8qIDE3ICovCisgICAgdWludDhfdCAgaW5uZXJfbGVuZ3RoOyAgLyogMTggKi8KKyAgICB1aW50OF90ICByZXNlcnZlZFsxNF07ICAvKiAzMiAqLworICAgIHVpbnQ4X3QgIHNhbHRbQkxBS0UyQl9TQUxUQllURVNdOyAvKiA0OCAqLworICAgIHVpbnQ4X3QgIHBlcnNvbmFsW0JMQUtFMkJfUEVSU09OQUxCWVRFU107ICAvKiA2NCAqLworICB9KTsKKworICB0eXBlZGVmIHN0cnVjdCBibGFrZTJiX3BhcmFtX18gYmxha2UyYl9wYXJhbTsKKworICB0eXBlZGVmIHN0cnVjdCBibGFrZTJ4c19zdGF0ZV9fCisgIHsKKyAgICBibGFrZTJzX3N0YXRlIFNbMV07CisgICAgYmxha2Uyc19wYXJhbSBQWzFdOworICB9IGJsYWtlMnhzX3N0YXRlOworCisgIHR5cGVkZWYgc3RydWN0IGJsYWtlMnhiX3N0YXRlX18KKyAgeworICAgIGJsYWtlMmJfc3RhdGUgU1sxXTsKKyAgICBibGFrZTJiX3BhcmFtIFBbMV07CisgIH0gYmxha2UyeGJfc3RhdGU7CisKKyAgLyogUGFkZGVkIHN0cnVjdHMgcmVzdWx0IGluIGEgY29tcGlsZS10aW1lIGVycm9yICovCisgIGVudW0geworICAgIEJMQUtFMl9EVU1NWV8xID0gMS8oc2l6ZW9mKGJsYWtlMnNfcGFyYW0pID09IEJMQUtFMlNfT1VUQllURVMpLAorICAgIEJMQUtFMl9EVU1NWV8yID0gMS8oc2l6ZW9mKGJsYWtlMmJfcGFyYW0pID09IEJMQUtFMkJfT1VUQllURVMpCisgIH07CisKKyAgLyogU3RyZWFtaW5nIEFQSSAqLworICBpbnQgYmxha2Uyc19pbml0KCBibGFrZTJzX3N0YXRlICpTLCBzaXplX3Qgb3V0bGVuICk7CisgIGludCBibGFrZTJzX2luaXRfa2V5KCBibGFrZTJzX3N0YXRlICpTLCBzaXplX3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIHNpemVfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMnNfaW5pdF9wYXJhbSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgYmxha2Uyc19wYXJhbSAqUCApOworICBpbnQgYmxha2Uyc191cGRhdGUoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHZvaWQgKmluLCBzaXplX3QgaW5sZW4gKTsKKyAgaW50IGJsYWtlMnNfZmluYWwoIGJsYWtlMnNfc3RhdGUgKlMsIHZvaWQgKm91dCwgc2l6ZV90IG91dGxlbiApOworCisgIGludCBibGFrZTJiX2luaXQoIGJsYWtlMmJfc3RhdGUgKlMsIHNpemVfdCBvdXRsZW4gKTsKKyAgaW50IGJsYWtlMmJfaW5pdF9rZXkoIGJsYWtlMmJfc3RhdGUgKlMsIHNpemVfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgc2l6ZV90IGtleWxlbiApOworICBpbnQgYmxha2UyYl9pbml0X3BhcmFtKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCBibGFrZTJiX3BhcmFtICpQICk7CisgIGludCBibGFrZTJiX3VwZGF0ZSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3Qgdm9pZCAqaW4sIHNpemVfdCBpbmxlbiApOworICBpbnQgYmxha2UyYl9maW5hbCggYmxha2UyYl9zdGF0ZSAqUywgdm9pZCAqb3V0LCBzaXplX3Qgb3V0bGVuICk7CisKKyAgaW50IGJsYWtlMnNwX2luaXQoIGJsYWtlMnNwX3N0YXRlICpTLCBzaXplX3Qgb3V0bGVuICk7CisgIGludCBibGFrZTJzcF9pbml0X2tleSggYmxha2Uyc3Bfc3RhdGUgKlMsIHNpemVfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgc2l6ZV90IGtleWxlbiApOworICBpbnQgYmxha2Uyc3BfdXBkYXRlKCBibGFrZTJzcF9zdGF0ZSAqUywgY29uc3Qgdm9pZCAqaW4sIHNpemVfdCBpbmxlbiApOworICBpbnQgYmxha2Uyc3BfZmluYWwoIGJsYWtlMnNwX3N0YXRlICpTLCB2b2lkICpvdXQsIHNpemVfdCBvdXRsZW4gKTsKKworICBpbnQgYmxha2UyYnBfaW5pdCggYmxha2UyYnBfc3RhdGUgKlMsIHNpemVfdCBvdXRsZW4gKTsKKyAgaW50IGJsYWtlMmJwX2luaXRfa2V5KCBibGFrZTJicF9zdGF0ZSAqUywgc2l6ZV90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qga2V5bGVuICk7CisgIGludCBibGFrZTJicF91cGRhdGUoIGJsYWtlMmJwX3N0YXRlICpTLCBjb25zdCB2b2lkICppbiwgc2l6ZV90IGlubGVuICk7CisgIGludCBibGFrZTJicF9maW5hbCggYmxha2UyYnBfc3RhdGUgKlMsIHZvaWQgKm91dCwgc2l6ZV90IG91dGxlbiApOworCisgIC8qIFZhcmlhYmxlIG91dHB1dCBsZW5ndGggQVBJICovCisgIGludCBibGFrZTJ4c19pbml0KCBibGFrZTJ4c19zdGF0ZSAqUywgY29uc3Qgc2l6ZV90IG91dGxlbiApOworICBpbnQgYmxha2UyeHNfaW5pdF9rZXkoIGJsYWtlMnhzX3N0YXRlICpTLCBjb25zdCBzaXplX3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIHNpemVfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMnhzX3VwZGF0ZSggYmxha2UyeHNfc3RhdGUgKlMsIGNvbnN0IHZvaWQgKmluLCBzaXplX3QgaW5sZW4gKTsKKyAgaW50IGJsYWtlMnhzX2ZpbmFsKGJsYWtlMnhzX3N0YXRlICpTLCB2b2lkICpvdXQsIHNpemVfdCBvdXRsZW4pOworCisgIGludCBibGFrZTJ4Yl9pbml0KCBibGFrZTJ4Yl9zdGF0ZSAqUywgY29uc3Qgc2l6ZV90IG91dGxlbiApOworICBpbnQgYmxha2UyeGJfaW5pdF9rZXkoIGJsYWtlMnhiX3N0YXRlICpTLCBjb25zdCBzaXplX3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIHNpemVfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMnhiX3VwZGF0ZSggYmxha2UyeGJfc3RhdGUgKlMsIGNvbnN0IHZvaWQgKmluLCBzaXplX3QgaW5sZW4gKTsKKyAgaW50IGJsYWtlMnhiX2ZpbmFsKGJsYWtlMnhiX3N0YXRlICpTLCB2b2lkICpvdXQsIHNpemVfdCBvdXRsZW4pOworCisgIC8qIFNpbXBsZSBBUEkgKi8KKyAgaW50IGJsYWtlMnMoIHZvaWQgKm91dCwgc2l6ZV90IG91dGxlbiwgY29uc3Qgdm9pZCAqaW4sIHNpemVfdCBpbmxlbiwgY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qga2V5bGVuICk7CisgIGludCBibGFrZTJiKCB2b2lkICpvdXQsIHNpemVfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmluLCBzaXplX3QgaW5sZW4sIGNvbnN0IHZvaWQgKmtleSwgc2l6ZV90IGtleWxlbiApOworCisgIGludCBibGFrZTJzcCggdm9pZCAqb3V0LCBzaXplX3Qgb3V0bGVuLCBjb25zdCB2b2lkICppbiwgc2l6ZV90IGlubGVuLCBjb25zdCB2b2lkICprZXksIHNpemVfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMmJwKCB2b2lkICpvdXQsIHNpemVfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmluLCBzaXplX3QgaW5sZW4sIGNvbnN0IHZvaWQgKmtleSwgc2l6ZV90IGtleWxlbiApOworCisgIGludCBibGFrZTJ4cyggdm9pZCAqb3V0LCBzaXplX3Qgb3V0bGVuLCBjb25zdCB2b2lkICppbiwgc2l6ZV90IGlubGVuLCBjb25zdCB2b2lkICprZXksIHNpemVfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMnhiKCB2b2lkICpvdXQsIHNpemVfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmluLCBzaXplX3QgaW5sZW4sIGNvbnN0IHZvaWQgKmtleSwgc2l6ZV90IGtleWxlbiApOworCisgIC8qIFRoaXMgaXMgc2ltcGx5IGFuIGFsaWFzIGZvciBibGFrZTJiICovCisgIGludCBibGFrZTIoIHZvaWQgKm91dCwgc2l6ZV90IG91dGxlbiwgY29uc3Qgdm9pZCAqaW4sIHNpemVfdCBpbmxlbiwgY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qga2V5bGVuICk7CisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorfQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfYmxha2UyX2ltcGwuaCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2JsYWtlMl9pbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYwNWRlZgotLS0gL2Rldi9udWxsCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2JsYWtlMl9pbXBsLmgKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSByZWZlcmVuY2UgQyBpbXBsZW1lbnRhdGlvbnMKKworICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKworI2lmbmRlZiBBUkNISVZFX0JMQUtFMl9JTVBMX0gKKyNkZWZpbmUgQVJDSElWRV9CTEFLRTJfSU1QTF9ICisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2lmICFkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiAoIWRlZmluZWQoX19TVERDX1ZFUlNJT05fXykgfHwgX19TVERDX1ZFUlNJT05fXyA8IDE5OTkwMUwpCisgICNpZiAgIGRlZmluZWQoX01TQ19WRVIpCisgICAgI2RlZmluZSBCTEFLRTJfSU5MSU5FIF9faW5saW5lCisgICNlbGlmIGRlZmluZWQoX19HTlVDX18pCisgICAgI2RlZmluZSBCTEFLRTJfSU5MSU5FIF9faW5saW5lX18KKyAgI2Vsc2UKKyAgICAjZGVmaW5lIEJMQUtFMl9JTkxJTkUKKyAgI2VuZGlmCisjZWxzZQorICAjZGVmaW5lIEJMQUtFMl9JTkxJTkUgaW5saW5lCisjZW5kaWYKKworc3RhdGljIEJMQUtFMl9JTkxJTkUgdWludDMyX3QgbG9hZDMyKCBjb25zdCB2b2lkICpzcmMgKQoreworI2lmIGRlZmluZWQoTkFUSVZFX0xJVFRMRV9FTkRJQU4pCisgIHVpbnQzMl90IHc7CisgIG1lbWNweSgmdywgc3JjLCBzaXplb2Ygdyk7CisgIHJldHVybiB3OworI2Vsc2UKKyAgY29uc3QgdWludDhfdCAqcCA9ICggY29uc3QgdWludDhfdCAqIClzcmM7CisgIHJldHVybiAoKCB1aW50MzJfdCApKCBwWzBdICkgPDwgIDApIHwKKyAgICAgICAgICgoIHVpbnQzMl90ICkoIHBbMV0gKSA8PCAgOCkgfAorICAgICAgICAgKCggdWludDMyX3QgKSggcFsyXSApIDw8IDE2KSB8CisgICAgICAgICAoKCB1aW50MzJfdCApKCBwWzNdICkgPDwgMjQpIDsKKyNlbmRpZgorfQorCitzdGF0aWMgQkxBS0UyX0lOTElORSB1aW50NjRfdCBsb2FkNjQoIGNvbnN0IHZvaWQgKnNyYyApCit7CisjaWYgZGVmaW5lZChOQVRJVkVfTElUVExFX0VORElBTikKKyAgdWludDY0X3QgdzsKKyAgbWVtY3B5KCZ3LCBzcmMsIHNpemVvZiB3KTsKKyAgcmV0dXJuIHc7CisjZWxzZQorICBjb25zdCB1aW50OF90ICpwID0gKCBjb25zdCB1aW50OF90ICogKXNyYzsKKyAgcmV0dXJuICgoIHVpbnQ2NF90ICkoIHBbMF0gKSA8PCAgMCkgfAorICAgICAgICAgKCggdWludDY0X3QgKSggcFsxXSApIDw8ICA4KSB8CisgICAgICAgICAoKCB1aW50NjRfdCApKCBwWzJdICkgPDwgMTYpIHwKKyAgICAgICAgICgoIHVpbnQ2NF90ICkoIHBbM10gKSA8PCAyNCkgfAorICAgICAgICAgKCggdWludDY0X3QgKSggcFs0XSApIDw8IDMyKSB8CisgICAgICAgICAoKCB1aW50NjRfdCApKCBwWzVdICkgPDwgNDApIHwKKyAgICAgICAgICgoIHVpbnQ2NF90ICkoIHBbNl0gKSA8PCA0OCkgfAorICAgICAgICAgKCggdWludDY0X3QgKSggcFs3XSApIDw8IDU2KSA7CisjZW5kaWYKK30KKworc3RhdGljIEJMQUtFMl9JTkxJTkUgdWludDE2X3QgbG9hZDE2KCBjb25zdCB2b2lkICpzcmMgKQoreworI2lmIGRlZmluZWQoTkFUSVZFX0xJVFRMRV9FTkRJQU4pCisgIHVpbnQxNl90IHc7CisgIG1lbWNweSgmdywgc3JjLCBzaXplb2Ygdyk7CisgIHJldHVybiB3OworI2Vsc2UKKyAgY29uc3QgdWludDhfdCAqcCA9ICggY29uc3QgdWludDhfdCAqIClzcmM7CisgIHJldHVybiAoIHVpbnQxNl90ICkoKCggdWludDMyX3QgKSggcFswXSApIDw8ICAwKSB8CisgICAgICAgICAgICAgICAgICAgICAgKCggdWludDMyX3QgKSggcFsxXSApIDw8ICA4KSk7CisjZW5kaWYKK30KKworc3RhdGljIEJMQUtFMl9JTkxJTkUgdm9pZCBzdG9yZTE2KCB2b2lkICpkc3QsIHVpbnQxNl90IHcgKQoreworI2lmIGRlZmluZWQoTkFUSVZFX0xJVFRMRV9FTkRJQU4pCisgIG1lbWNweShkc3QsICZ3LCBzaXplb2Ygdyk7CisjZWxzZQorICB1aW50OF90ICpwID0gKCB1aW50OF90ICogKWRzdDsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsKKyNlbmRpZgorfQorCitzdGF0aWMgQkxBS0UyX0lOTElORSB2b2lkIHN0b3JlMzIoIHZvaWQgKmRzdCwgdWludDMyX3QgdyApCit7CisjaWYgZGVmaW5lZChOQVRJVkVfTElUVExFX0VORElBTikKKyAgbWVtY3B5KGRzdCwgJncsIHNpemVvZiB3KTsKKyNlbHNlCisgIHVpbnQ4X3QgKnAgPSAoIHVpbnQ4X3QgKiApZHN0OworICBwWzBdID0gKHVpbnQ4X3QpKHcgPj4gIDApOworICBwWzFdID0gKHVpbnQ4X3QpKHcgPj4gIDgpOworICBwWzJdID0gKHVpbnQ4X3QpKHcgPj4gMTYpOworICBwWzNdID0gKHVpbnQ4X3QpKHcgPj4gMjQpOworI2VuZGlmCit9CisKK3N0YXRpYyBCTEFLRTJfSU5MSU5FIHZvaWQgc3RvcmU2NCggdm9pZCAqZHN0LCB1aW50NjRfdCB3ICkKK3sKKyNpZiBkZWZpbmVkKE5BVElWRV9MSVRUTEVfRU5ESUFOKQorICBtZW1jcHkoZHN0LCAmdywgc2l6ZW9mIHcpOworI2Vsc2UKKyAgdWludDhfdCAqcCA9ICggdWludDhfdCAqIClkc3Q7CisgIHBbMF0gPSAodWludDhfdCkodyA+PiAgMCk7CisgIHBbMV0gPSAodWludDhfdCkodyA+PiAgOCk7CisgIHBbMl0gPSAodWludDhfdCkodyA+PiAxNik7CisgIHBbM10gPSAodWludDhfdCkodyA+PiAyNCk7CisgIHBbNF0gPSAodWludDhfdCkodyA+PiAzMik7CisgIHBbNV0gPSAodWludDhfdCkodyA+PiA0MCk7CisgIHBbNl0gPSAodWludDhfdCkodyA+PiA0OCk7CisgIHBbN10gPSAodWludDhfdCkodyA+PiA1Nik7CisjZW5kaWYKK30KKworc3RhdGljIEJMQUtFMl9JTkxJTkUgdWludDY0X3QgbG9hZDQ4KCBjb25zdCB2b2lkICpzcmMgKQoreworICBjb25zdCB1aW50OF90ICpwID0gKCBjb25zdCB1aW50OF90ICogKXNyYzsKKyAgcmV0dXJuICgoIHVpbnQ2NF90ICkoIHBbMF0gKSA8PCAgMCkgfAorICAgICAgICAgKCggdWludDY0X3QgKSggcFsxXSApIDw8ICA4KSB8CisgICAgICAgICAoKCB1aW50NjRfdCApKCBwWzJdICkgPDwgMTYpIHwKKyAgICAgICAgICgoIHVpbnQ2NF90ICkoIHBbM10gKSA8PCAyNCkgfAorICAgICAgICAgKCggdWludDY0X3QgKSggcFs0XSApIDw8IDMyKSB8CisgICAgICAgICAoKCB1aW50NjRfdCApKCBwWzVdICkgPDwgNDApIDsKK30KKworc3RhdGljIEJMQUtFMl9JTkxJTkUgdm9pZCBzdG9yZTQ4KCB2b2lkICpkc3QsIHVpbnQ2NF90IHcgKQoreworICB1aW50OF90ICpwID0gKCB1aW50OF90ICogKWRzdDsKKyAgcFswXSA9ICh1aW50OF90KSh3ID4+ICAwKTsKKyAgcFsxXSA9ICh1aW50OF90KSh3ID4+ICA4KTsKKyAgcFsyXSA9ICh1aW50OF90KSh3ID4+IDE2KTsKKyAgcFszXSA9ICh1aW50OF90KSh3ID4+IDI0KTsKKyAgcFs0XSA9ICh1aW50OF90KSh3ID4+IDMyKTsKKyAgcFs1XSA9ICh1aW50OF90KSh3ID4+IDQwKTsKK30KKworc3RhdGljIEJMQUtFMl9JTkxJTkUgdWludDMyX3Qgcm90cjMyKCBjb25zdCB1aW50MzJfdCB3LCBjb25zdCB1bnNpZ25lZCBjICkKK3sKKyAgcmV0dXJuICggdyA+PiBjICkgfCAoIHcgPDwgKCAzMiAtIGMgKSApOworfQorCitzdGF0aWMgQkxBS0UyX0lOTElORSB1aW50NjRfdCByb3RyNjQoIGNvbnN0IHVpbnQ2NF90IHcsIGNvbnN0IHVuc2lnbmVkIGMgKQoreworICByZXR1cm4gKCB3ID4+IGMgKSB8ICggdyA8PCAoIDY0IC0gYyApICk7Cit9CisKKy8qIHByZXZlbnRzIGNvbXBpbGVyIG9wdGltaXppbmcgb3V0IG1lbXNldCgpICovCitzdGF0aWMgQkxBS0UyX0lOTElORSB2b2lkIHNlY3VyZV96ZXJvX21lbW9yeSh2b2lkICp2LCBzaXplX3QgbikKK3sKKyAgc3RhdGljIHZvaWQgKigqY29uc3Qgdm9sYXRpbGUgbWVtc2V0X3YpKHZvaWQgKiwgaW50LCBzaXplX3QpID0gJm1lbXNldDsKKyAgbWVtc2V0X3YodiwgMCwgbik7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfYmxha2Uyc19yZWYuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2JsYWtlMnNfcmVmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyZmZkMAotLS0gL2Rldi9udWxsCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2JsYWtlMnNfcmVmLmMKQEAgLTAsMCArMSwzNjcgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSByZWZlcmVuY2UgQyBpbXBsZW1lbnRhdGlvbnMKKworICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJhcmNoaXZlX2JsYWtlMi5oIgorI2luY2x1ZGUgImFyY2hpdmVfYmxha2UyX2ltcGwuaCIKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IGJsYWtlMnNfSVZbOF0gPQoreworICAweDZBMDlFNjY3VUwsIDB4QkI2N0FFODVVTCwgMHgzQzZFRjM3MlVMLCAweEE1NEZGNTNBVUwsCisgIDB4NTEwRTUyN0ZVTCwgMHg5QjA1Njg4Q1VMLCAweDFGODNEOUFCVUwsIDB4NUJFMENEMTlVTAorfTsKKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgYmxha2Uyc19zaWdtYVsxMF1bMTZdID0KK3sKKyAgeyAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSB9ICwKKyAgeyAxNCwgMTAsICA0LCAgOCwgIDksIDE1LCAxMywgIDYsICAxLCAxMiwgIDAsICAyLCAxMSwgIDcsICA1LCAgMyB9ICwKKyAgeyAxMSwgIDgsIDEyLCAgMCwgIDUsICAyLCAxNSwgMTMsIDEwLCAxNCwgIDMsICA2LCAgNywgIDEsICA5LCAgNCB9ICwKKyAgeyAgNywgIDksICAzLCAgMSwgMTMsIDEyLCAxMSwgMTQsICAyLCAgNiwgIDUsIDEwLCAgNCwgIDAsIDE1LCAgOCB9ICwKKyAgeyAgOSwgIDAsICA1LCAgNywgIDIsICA0LCAxMCwgMTUsIDE0LCAgMSwgMTEsIDEyLCAgNiwgIDgsICAzLCAxMyB9ICwKKyAgeyAgMiwgMTIsICA2LCAxMCwgIDAsIDExLCAgOCwgIDMsICA0LCAxMywgIDcsICA1LCAxNSwgMTQsICAxLCAgOSB9ICwKKyAgeyAxMiwgIDUsICAxLCAxNSwgMTQsIDEzLCAgNCwgMTAsICAwLCAgNywgIDYsICAzLCAgOSwgIDIsICA4LCAxMSB9ICwKKyAgeyAxMywgMTEsICA3LCAxNCwgMTIsICAxLCAgMywgIDksICA1LCAgMCwgMTUsICA0LCAgOCwgIDYsICAyLCAxMCB9ICwKKyAgeyAgNiwgMTUsIDE0LCAgOSwgMTEsICAzLCAgMCwgIDgsIDEyLCAgMiwgMTMsICA3LCAgMSwgIDQsIDEwLCAgNSB9ICwKKyAgeyAxMCwgIDIsICA4LCAgNCwgIDcsICA2LCAgMSwgIDUsIDE1LCAxMSwgIDksIDE0LCAgMywgMTIsIDEzICwgMCB9ICwKK307CisKK3N0YXRpYyB2b2lkIGJsYWtlMnNfc2V0X2xhc3Rub2RlKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9ICh1aW50MzJfdCktMTsKK30KKworLyogU29tZSBoZWxwZXIgZnVuY3Rpb25zLCBub3QgbmVjZXNzYXJpbHkgdXNlZnVsICovCitzdGF0aWMgaW50IGJsYWtlMnNfaXNfbGFzdGJsb2NrKCBjb25zdCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgcmV0dXJuIFMtPmZbMF0gIT0gMDsKK30KKworc3RhdGljIHZvaWQgYmxha2Uyc19zZXRfbGFzdGJsb2NrKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMnNfc2V0X2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9ICh1aW50MzJfdCktMTsKK30KKworc3RhdGljIHZvaWQgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDMyX3QgaW5jICkKK3sKKyAgUy0+dFswXSArPSBpbmM7CisgIFMtPnRbMV0gKz0gKCBTLT50WzBdIDwgaW5jICk7Cit9CisKK3N0YXRpYyB2b2lkIGJsYWtlMnNfaW5pdDAoIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBzaXplX3QgaTsKKyAgbWVtc2V0KCBTLCAwLCBzaXplb2YoIGJsYWtlMnNfc3RhdGUgKSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSBTLT5oW2ldID0gYmxha2Uyc19JVltpXTsKK30KKworLyogaW5pdDIgeG9ycyBJViB3aXRoIGlucHV0IHBhcmFtZXRlciBibG9jayAqLworaW50IGJsYWtlMnNfaW5pdF9wYXJhbSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgYmxha2Uyc19wYXJhbSAqUCApCit7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSAoIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiApKCBQICk7CisgIHNpemVfdCBpOworCisgIGJsYWtlMnNfaW5pdDAoIFMgKTsKKworICAvKiBJViBYT1IgUGFyYW1CbG9jayAqLworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICBTLT5oW2ldIF49IGxvYWQzMiggJnBbaSAqIDRdICk7CisKKyAgUy0+b3V0bGVuID0gUC0+ZGlnZXN0X2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKKworLyogU2VxdWVudGlhbCBibGFrZTJzIGluaXRpYWxpemF0aW9uICovCitpbnQgYmxha2Uyc19pbml0KCBibGFrZTJzX3N0YXRlICpTLCBzaXplX3Qgb3V0bGVuICkKK3sKKyAgYmxha2Uyc19wYXJhbSBQWzFdOworCisgIC8qIE1vdmUgaW50ZXJ2YWwgdmVyaWZpY2F0aW9uIGhlcmU/ICovCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9ICh1aW50OF90KW91dGxlbjsKKyAgUC0+a2V5X2xlbmd0aCAgICA9IDA7CisgIFAtPmZhbm91dCAgICAgICAgPSAxOworICBQLT5kZXB0aCAgICAgICAgID0gMTsKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCAwICk7CisgIHN0b3JlMzIoICZQLT5ub2RlX29mZnNldCwgMCApOworICBzdG9yZTE2KCAmUC0+eG9mX2xlbmd0aCwgMCApOworICBQLT5ub2RlX2RlcHRoICAgID0gMDsKKyAgUC0+aW5uZXJfbGVuZ3RoICA9IDA7CisgIC8qIG1lbXNldChQLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKFAtPnJlc2VydmVkKSApOyAqLworICBtZW1zZXQoIFAtPnNhbHQsICAgICAwLCBzaXplb2YoIFAtPnNhbHQgKSApOworICBtZW1zZXQoIFAtPnBlcnNvbmFsLCAwLCBzaXplb2YoIFAtPnBlcnNvbmFsICkgKTsKKyAgcmV0dXJuIGJsYWtlMnNfaW5pdF9wYXJhbSggUywgUCApOworfQorCitpbnQgYmxha2Uyc19pbml0X2tleSggYmxha2Uyc19zdGF0ZSAqUywgc2l6ZV90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qga2V5bGVuICkKK3sKKyAgYmxha2Uyc19wYXJhbSBQWzFdOworCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgaWYgKCAha2V5IHx8ICFrZXlsZW4gfHwga2V5bGVuID4gQkxBS0UyU19LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBQLT5kaWdlc3RfbGVuZ3RoID0gKHVpbnQ4X3Qpb3V0bGVuOworICBQLT5rZXlfbGVuZ3RoICAgID0gKHVpbnQ4X3Qpa2V5bGVuOworICBQLT5mYW5vdXQgICAgICAgID0gMTsKKyAgUC0+ZGVwdGggICAgICAgICA9IDE7CisgIHN0b3JlMzIoICZQLT5sZWFmX2xlbmd0aCwgMCApOworICBzdG9yZTMyKCAmUC0+bm9kZV9vZmZzZXQsIDAgKTsKKyAgc3RvcmUxNiggJlAtPnhvZl9sZW5ndGgsIDAgKTsKKyAgUC0+bm9kZV9kZXB0aCAgICA9IDA7CisgIFAtPmlubmVyX2xlbmd0aCAgPSAwOworICAvKiBtZW1zZXQoUC0+cmVzZXJ2ZWQsIDAsIHNpemVvZihQLT5yZXNlcnZlZCkgKTsgKi8KKyAgbWVtc2V0KCBQLT5zYWx0LCAgICAgMCwgc2l6ZW9mKCBQLT5zYWx0ICkgKTsKKyAgbWVtc2V0KCBQLT5wZXJzb25hbCwgMCwgc2l6ZW9mKCBQLT5wZXJzb25hbCApICk7CisKKyAgaWYoIGJsYWtlMnNfaW5pdF9wYXJhbSggUywgUCApIDwgMCApIHJldHVybiAtMTsKKworICB7CisgICAgdWludDhfdCBibG9ja1tCTEFLRTJTX0JMT0NLQllURVNdOworICAgIG1lbXNldCggYmxvY2ssIDAsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgIG1lbWNweSggYmxvY2ssIGtleSwga2V5bGVuICk7CisgICAgYmxha2Uyc191cGRhdGUoIFMsIGJsb2NrLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoIGJsb2NrLCBCTEFLRTJTX0JMT0NLQllURVMgKTsgLyogQnVybiB0aGUga2V5IGZyb20gc3RhY2sgKi8KKyAgfQorICByZXR1cm4gMDsKK30KKworI2RlZmluZSBHKHIsaSxhLGIsYyxkKSAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBhID0gYSArIGIgKyBtW2JsYWtlMnNfc2lnbWFbcl1bMippKzBdXTsgXAorICAgIGQgPSByb3RyMzIoZCBeIGEsIDE2KTsgICAgICAgICAgICAgICAgICBcCisgICAgYyA9IGMgKyBkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBiID0gcm90cjMyKGIgXiBjLCAxMik7ICAgICAgICAgICAgICAgICAgXAorICAgIGEgPSBhICsgYiArIG1bYmxha2Uyc19zaWdtYVtyXVsyKmkrMV1dOyBcCisgICAgZCA9IHJvdHIzMihkIF4gYSwgOCk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICBjID0gYyArIGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGIgPSByb3RyMzIoYiBeIGMsIDcpOyAgICAgICAgICAgICAgICAgICBcCisgIH0gd2hpbGUoMCkKKworI2RlZmluZSBST1VORChyKSAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEcociwwLHZbIDBdLHZbIDRdLHZbIDhdLHZbMTJdKTsgXAorICAgIEcociwxLHZbIDFdLHZbIDVdLHZbIDldLHZbMTNdKTsgXAorICAgIEcociwyLHZbIDJdLHZbIDZdLHZbMTBdLHZbMTRdKTsgXAorICAgIEcociwzLHZbIDNdLHZbIDddLHZbMTFdLHZbMTVdKTsgXAorICAgIEcociw0LHZbIDBdLHZbIDVdLHZbMTBdLHZbMTVdKTsgXAorICAgIEcociw1LHZbIDFdLHZbIDZdLHZbMTFdLHZbMTJdKTsgXAorICAgIEcociw2LHZbIDJdLHZbIDddLHZbIDhdLHZbMTNdKTsgXAorICAgIEcociw3LHZbIDNdLHZbIDRdLHZbIDldLHZbMTRdKTsgXAorICB9IHdoaWxlKDApCisKK3N0YXRpYyB2b2lkIGJsYWtlMnNfY29tcHJlc3MoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgaW5bQkxBS0UyU19CTE9DS0JZVEVTXSApCit7CisgIHVpbnQzMl90IG1bMTZdOworICB1aW50MzJfdCB2WzE2XTsKKyAgc2l6ZV90IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDE2OyArK2kgKSB7CisgICAgbVtpXSA9IGxvYWQzMiggaW4gKyBpICogc2l6ZW9mKCBtW2ldICkgKTsKKyAgfQorCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSB7CisgICAgdltpXSA9IFMtPmhbaV07CisgIH0KKworICB2WyA4XSA9IGJsYWtlMnNfSVZbMF07CisgIHZbIDldID0gYmxha2Uyc19JVlsxXTsKKyAgdlsxMF0gPSBibGFrZTJzX0lWWzJdOworICB2WzExXSA9IGJsYWtlMnNfSVZbM107CisgIHZbMTJdID0gUy0+dFswXSBeIGJsYWtlMnNfSVZbNF07CisgIHZbMTNdID0gUy0+dFsxXSBeIGJsYWtlMnNfSVZbNV07CisgIHZbMTRdID0gUy0+ZlswXSBeIGJsYWtlMnNfSVZbNl07CisgIHZbMTVdID0gUy0+ZlsxXSBeIGJsYWtlMnNfSVZbN107CisKKyAgUk9VTkQoIDAgKTsKKyAgUk9VTkQoIDEgKTsKKyAgUk9VTkQoIDIgKTsKKyAgUk9VTkQoIDMgKTsKKyAgUk9VTkQoIDQgKTsKKyAgUk9VTkQoIDUgKTsKKyAgUk9VTkQoIDYgKTsKKyAgUk9VTkQoIDcgKTsKKyAgUk9VTkQoIDggKTsKKyAgUk9VTkQoIDkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgeworICAgIFMtPmhbaV0gPSBTLT5oW2ldIF4gdltpXSBeIHZbaSArIDhdOworICB9Cit9CisKKyN1bmRlZiBHCisjdW5kZWYgUk9VTkQKKworaW50IGJsYWtlMnNfdXBkYXRlKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB2b2lkICpwaW4sIHNpemVfdCBpbmxlbiApCit7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBpbiA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopcGluOworICBpZiggaW5sZW4gPiAwICkKKyAgeworICAgIHNpemVfdCBsZWZ0ID0gUy0+YnVmbGVuOworICAgIHNpemVfdCBmaWxsID0gQkxBS0UyU19CTE9DS0JZVEVTIC0gbGVmdDsKKyAgICBpZiggaW5sZW4gPiBmaWxsICkKKyAgICB7CisgICAgICBTLT5idWZsZW4gPSAwOworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgZmlsbCApOyAvKiBGaWxsIGJ1ZmZlciAqLworICAgICAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgICBibGFrZTJzX2NvbXByZXNzKCBTLCBTLT5idWYgKTsgLyogQ29tcHJlc3MgKi8KKyAgICAgIGluICs9IGZpbGw7IGlubGVuIC09IGZpbGw7CisgICAgICB3aGlsZShpbmxlbiA+IEJMQUtFMlNfQkxPQ0tCWVRFUykgeworICAgICAgICBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKFMsIEJMQUtFMlNfQkxPQ0tCWVRFUyk7CisgICAgICAgIGJsYWtlMnNfY29tcHJlc3MoIFMsIGluICk7CisgICAgICAgIGluICs9IEJMQUtFMlNfQkxPQ0tCWVRFUzsKKyAgICAgICAgaW5sZW4gLT0gQkxBS0UyU19CTE9DS0JZVEVTOworICAgICAgfQorICAgIH0KKyAgICBtZW1jcHkoIFMtPmJ1ZiArIFMtPmJ1ZmxlbiwgaW4sIGlubGVuICk7CisgICAgUy0+YnVmbGVuICs9IGlubGVuOworICB9CisgIHJldHVybiAwOworfQorCitpbnQgYmxha2Uyc19maW5hbCggYmxha2Uyc19zdGF0ZSAqUywgdm9pZCAqb3V0LCBzaXplX3Qgb3V0bGVuICkKK3sKKyAgdWludDhfdCBidWZmZXJbQkxBS0UyU19PVVRCWVRFU10gPSB7MH07CisgIHNpemVfdCBpOworCisgIGlmKCBvdXQgPT0gTlVMTCB8fCBvdXRsZW4gPCBTLT5vdXRsZW4gKQorICAgIHJldHVybiAtMTsKKworICBpZiggYmxha2Uyc19pc19sYXN0YmxvY2soIFMgKSApCisgICAgcmV0dXJuIC0xOworCisgIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIFMsICggdWludDMyX3QgKVMtPmJ1ZmxlbiApOworICBibGFrZTJzX3NldF9sYXN0YmxvY2soIFMgKTsKKyAgbWVtc2V0KCBTLT5idWYgKyBTLT5idWZsZW4sIDAsIEJMQUtFMlNfQkxPQ0tCWVRFUyAtIFMtPmJ1ZmxlbiApOyAvKiBQYWRkaW5nICovCisgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSAvKiBPdXRwdXQgZnVsbCBoYXNoIHRvIHRlbXAgYnVmZmVyICovCisgICAgc3RvcmUzMiggYnVmZmVyICsgc2l6ZW9mKCBTLT5oW2ldICkgKiBpLCBTLT5oW2ldICk7CisKKyAgbWVtY3B5KCBvdXQsIGJ1ZmZlciwgb3V0bGVuICk7CisgIHNlY3VyZV96ZXJvX21lbW9yeShidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgcmV0dXJuIDA7Cit9CisKK2ludCBibGFrZTJzKCB2b2lkICpvdXQsIHNpemVfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmluLCBzaXplX3QgaW5sZW4sIGNvbnN0IHZvaWQgKmtleSwgc2l6ZV90IGtleWxlbiApCit7CisgIGJsYWtlMnNfc3RhdGUgU1sxXTsKKworICAvKiBWZXJpZnkgcGFyYW1ldGVycyAqLworICBpZiAoIE5VTEwgPT0gaW4gJiYgaW5sZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBvdXQgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IGtleSAmJiBrZXlsZW4gPiAwKSByZXR1cm4gLTE7CisKKyAgaWYoICFvdXRsZW4gfHwgb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gQkxBS0UyU19LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gMCApCisgIHsKKyAgICBpZiggYmxha2Uyc19pbml0X2tleSggUywgb3V0bGVuLCBrZXksIGtleWxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiggYmxha2Uyc19pbml0KCBTLCBvdXRsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKworICBibGFrZTJzX3VwZGF0ZSggUywgKCBjb25zdCB1aW50OF90ICogKWluLCBpbmxlbiApOworICBibGFrZTJzX2ZpbmFsKCBTLCBvdXQsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoU1VQRVJDT1ApCitpbnQgY3J5cHRvX2hhc2goIHVuc2lnbmVkIGNoYXIgKm91dCwgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmxlbiApCit7CisgIHJldHVybiBibGFrZTJzKCBvdXQsIEJMQUtFMlNfT1VUQllURVMsIGluLCBpbmxlbiwgTlVMTCwgMCApOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEJMQUtFMlNfU0VMRlRFU1QpCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYmxha2UyLWthdC5oIgoraW50IG1haW4oIHZvaWQgKQoreworICB1aW50OF90IGtleVtCTEFLRTJTX0tFWUJZVEVTXTsKKyAgdWludDhfdCBidWZbQkxBS0UyX0tBVF9MRU5HVEhdOworICBzaXplX3QgaSwgc3RlcDsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyU19LRVlCWVRFUzsgKytpICkKKyAgICBrZXlbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMl9LQVRfTEVOR1RIOyArK2kgKQorICAgIGJ1ZltpXSA9ICggdWludDhfdCApaTsKKworICAvKiBUZXN0IHNpbXBsZSBBUEkgKi8KKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMl9LQVRfTEVOR1RIOyArK2kgKQorICB7CisgICAgdWludDhfdCBoYXNoW0JMQUtFMlNfT1VUQllURVNdOworICAgIGJsYWtlMnMoIGhhc2gsIEJMQUtFMlNfT1VUQllURVMsIGJ1ZiwgaSwga2V5LCBCTEFLRTJTX0tFWUJZVEVTICk7CisKKyAgICBpZiggMCAhPSBtZW1jbXAoIGhhc2gsIGJsYWtlMnNfa2V5ZWRfa2F0W2ldLCBCTEFLRTJTX09VVEJZVEVTICkgKQorICAgIHsKKyAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgIH0KKworICAvKiBUZXN0IHN0cmVhbWluZyBBUEkgKi8KKyAgZm9yKHN0ZXAgPSAxOyBzdGVwIDwgQkxBS0UyU19CTE9DS0JZVEVTOyArK3N0ZXApIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgQkxBS0UyX0tBVF9MRU5HVEg7ICsraSkgeworICAgICAgdWludDhfdCBoYXNoW0JMQUtFMlNfT1VUQllURVNdOworICAgICAgYmxha2Uyc19zdGF0ZSBTOworICAgICAgdWludDhfdCAqIHAgPSBidWY7CisgICAgICBzaXplX3QgbWxlbiA9IGk7CisgICAgICBpbnQgZXJyID0gMDsKKworICAgICAgaWYoIChlcnIgPSBibGFrZTJzX2luaXRfa2V5KCZTLCBCTEFLRTJTX09VVEJZVEVTLCBrZXksIEJMQUtFMlNfS0VZQllURVMpKSA8IDAgKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgIH0KKworICAgICAgd2hpbGUgKG1sZW4gPj0gc3RlcCkgeworICAgICAgICBpZiAoIChlcnIgPSBibGFrZTJzX3VwZGF0ZSgmUywgcCwgc3RlcCkpIDwgMCApIHsKKyAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgbWxlbiAtPSBzdGVwOworICAgICAgICBwICs9IHN0ZXA7CisgICAgICB9CisgICAgICBpZiAoIChlcnIgPSBibGFrZTJzX3VwZGF0ZSgmUywgcCwgbWxlbikpIDwgMCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgICB9CisgICAgICBpZiAoIChlcnIgPSBibGFrZTJzX2ZpbmFsKCZTLCBoYXNoLCBCTEFLRTJTX09VVEJZVEVTKSkgPCAwKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgIH0KKworICAgICAgaWYgKDAgIT0gbWVtY21wKGhhc2gsIGJsYWtlMnNfa2V5ZWRfa2F0W2ldLCBCTEFLRTJTX09VVEJZVEVTKSkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgICB9CisgICAgfQorICB9CisKKyAgcHV0cyggIm9rIiApOworICByZXR1cm4gMDsKK2ZhaWw6CisgIHB1dHMoImVycm9yIik7CisgIHJldHVybiAtMTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfYmxha2Uyc3BfcmVmLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9ibGFrZTJzcF9yZWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWYxMDEwCi0tLSAvZGV2L251bGwKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfYmxha2Uyc3BfcmVmLmMKQEAgLTAsMCArMSwzNTkgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSByZWZlcmVuY2UgQyBpbXBsZW1lbnRhdGlvbnMKKworICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZiBkZWZpbmVkKF9PUEVOTVApCisjaW5jbHVkZSA8b21wLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImFyY2hpdmVfYmxha2UyLmgiCisjaW5jbHVkZSAiYXJjaGl2ZV9ibGFrZTJfaW1wbC5oIgorCisjZGVmaW5lIFBBUkFMTEVMSVNNX0RFR1JFRSA4CisKKy8qCisgIGJsYWtlMnNwX2luaXRfcGFyYW0gZGVmYXVsdHMgdG8gc2V0dGluZyB0aGUgZXhwZWN0aW5nIG91dHB1dCBsZW5ndGgKKyAgZnJvbSB0aGUgZGlnZXN0X2xlbmd0aCBwYXJhbWV0ZXIgYmxvY2sgZmllbGQuCisKKyAgSW4gc29tZSBjYXNlcywgaG93ZXZlciwgd2UgZG8gbm90IHdhbnQgdGhpcywgYXMgdGhlIG91dHB1dCBsZW5ndGgKKyAgb2YgdGhlc2UgaW5zdGFuY2VzIGlzIGdpdmVuIGJ5IGlubmVyX2xlbmd0aCBpbnN0ZWFkLgorKi8KK3N0YXRpYyBpbnQgYmxha2Uyc3BfaW5pdF9sZWFmX3BhcmFtKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCBibGFrZTJzX3BhcmFtICpQICkKK3sKKyAgaW50IGVyciA9IGJsYWtlMnNfaW5pdF9wYXJhbShTLCBQKTsKKyAgUy0+b3V0bGVuID0gUC0+aW5uZXJfbGVuZ3RoOworICByZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IGJsYWtlMnNwX2luaXRfbGVhZiggYmxha2Uyc19zdGF0ZSAqUywgc2l6ZV90IG91dGxlbiwgc2l6ZV90IGtleWxlbiwgdWludDMyX3Qgb2Zmc2V0ICkKK3sKKyAgYmxha2Uyc19wYXJhbSBQWzFdOworICBQLT5kaWdlc3RfbGVuZ3RoID0gKHVpbnQ4X3Qpb3V0bGVuOworICBQLT5rZXlfbGVuZ3RoID0gKHVpbnQ4X3Qpa2V5bGVuOworICBQLT5mYW5vdXQgPSBQQVJBTExFTElTTV9ERUdSRUU7CisgIFAtPmRlcHRoID0gMjsKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCAwICk7CisgIHN0b3JlMzIoICZQLT5ub2RlX29mZnNldCwgb2Zmc2V0ICk7CisgIHN0b3JlMTYoICZQLT54b2ZfbGVuZ3RoLCAwICk7CisgIFAtPm5vZGVfZGVwdGggPSAwOworICBQLT5pbm5lcl9sZW5ndGggPSBCTEFLRTJTX09VVEJZVEVTOworICBtZW1zZXQoIFAtPnNhbHQsIDAsIHNpemVvZiggUC0+c2FsdCApICk7CisgIG1lbXNldCggUC0+cGVyc29uYWwsIDAsIHNpemVvZiggUC0+cGVyc29uYWwgKSApOworICByZXR1cm4gYmxha2Uyc3BfaW5pdF9sZWFmX3BhcmFtKCBTLCBQICk7Cit9CisKK3N0YXRpYyBpbnQgYmxha2Uyc3BfaW5pdF9yb290KCBibGFrZTJzX3N0YXRlICpTLCBzaXplX3Qgb3V0bGVuLCBzaXplX3Qga2V5bGVuICkKK3sKKyAgYmxha2Uyc19wYXJhbSBQWzFdOworICBQLT5kaWdlc3RfbGVuZ3RoID0gKHVpbnQ4X3Qpb3V0bGVuOworICBQLT5rZXlfbGVuZ3RoID0gKHVpbnQ4X3Qpa2V5bGVuOworICBQLT5mYW5vdXQgPSBQQVJBTExFTElTTV9ERUdSRUU7CisgIFAtPmRlcHRoID0gMjsKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCAwICk7CisgIHN0b3JlMzIoICZQLT5ub2RlX29mZnNldCwgMCApOworICBzdG9yZTE2KCAmUC0+eG9mX2xlbmd0aCwgMCApOworICBQLT5ub2RlX2RlcHRoID0gMTsKKyAgUC0+aW5uZXJfbGVuZ3RoID0gQkxBS0UyU19PVVRCWVRFUzsKKyAgbWVtc2V0KCBQLT5zYWx0LCAwLCBzaXplb2YoIFAtPnNhbHQgKSApOworICBtZW1zZXQoIFAtPnBlcnNvbmFsLCAwLCBzaXplb2YoIFAtPnBlcnNvbmFsICkgKTsKKyAgcmV0dXJuIGJsYWtlMnNfaW5pdF9wYXJhbSggUywgUCApOworfQorCisKK2ludCBibGFrZTJzcF9pbml0KCBibGFrZTJzcF9zdGF0ZSAqUywgc2l6ZV90IG91dGxlbiApCit7CisgIHNpemVfdCBpOworCisgIGlmKCAhb3V0bGVuIHx8IG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKSByZXR1cm4gLTE7CisKKyAgbWVtc2V0KCBTLT5idWYsIDAsIHNpemVvZiggUy0+YnVmICkgKTsKKyAgUy0+YnVmbGVuID0gMDsKKyAgUy0+b3V0bGVuID0gb3V0bGVuOworCisgIGlmKCBibGFrZTJzcF9pbml0X3Jvb3QoIFMtPlIsIG91dGxlbiwgMCApIDwgMCApCisgICAgcmV0dXJuIC0xOworCisgIGZvciggaSA9IDA7IGkgPCBQQVJBTExFTElTTV9ERUdSRUU7ICsraSApCisgICAgaWYoIGJsYWtlMnNwX2luaXRfbGVhZiggUy0+U1tpXSwgb3V0bGVuLCAwLCAodWludDMyX3QpaSApIDwgMCApIHJldHVybiAtMTsKKworICBTLT5SLT5sYXN0X25vZGUgPSAxOworICBTLT5TW1BBUkFMTEVMSVNNX0RFR1JFRSAtIDFdLT5sYXN0X25vZGUgPSAxOworICByZXR1cm4gMDsKK30KKworaW50IGJsYWtlMnNwX2luaXRfa2V5KCBibGFrZTJzcF9zdGF0ZSAqUywgc2l6ZV90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qga2V5bGVuICkKK3sKKyAgc2l6ZV90IGk7CisKKyAgaWYoICFvdXRsZW4gfHwgb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApIHJldHVybiAtMTsKKworICBpZiggIWtleSB8fCAha2V5bGVuIHx8IGtleWxlbiA+IEJMQUtFMlNfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgbWVtc2V0KCBTLT5idWYsIDAsIHNpemVvZiggUy0+YnVmICkgKTsKKyAgUy0+YnVmbGVuID0gMDsKKyAgUy0+b3V0bGVuID0gb3V0bGVuOworCisgIGlmKCBibGFrZTJzcF9pbml0X3Jvb3QoIFMtPlIsIG91dGxlbiwga2V5bGVuICkgPCAwICkKKyAgICByZXR1cm4gLTE7CisKKyAgZm9yKCBpID0gMDsgaSA8IFBBUkFMTEVMSVNNX0RFR1JFRTsgKytpICkKKyAgICBpZiggYmxha2Uyc3BfaW5pdF9sZWFmKCBTLT5TW2ldLCBvdXRsZW4sIGtleWxlbiwgKHVpbnQzMl90KWkgKSA8IDAgKSByZXR1cm4gLTE7CisKKyAgUy0+Ui0+bGFzdF9ub2RlID0gMTsKKyAgUy0+U1tQQVJBTExFTElTTV9ERUdSRUUgLSAxXS0+bGFzdF9ub2RlID0gMTsKKyAgeworICAgIHVpbnQ4X3QgYmxvY2tbQkxBS0UyU19CTE9DS0JZVEVTXTsKKyAgICBtZW1zZXQoIGJsb2NrLCAwLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBtZW1jcHkoIGJsb2NrLCBrZXksIGtleWxlbiApOworCisgICAgZm9yKCBpID0gMDsgaSA8IFBBUkFMTEVMSVNNX0RFR1JFRTsgKytpICkKKyAgICAgIGJsYWtlMnNfdXBkYXRlKCBTLT5TW2ldLCBibG9jaywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoIGJsb2NrLCBCTEFLRTJTX0JMT0NLQllURVMgKTsgLyogQnVybiB0aGUga2V5IGZyb20gc3RhY2sgKi8KKyAgfQorICByZXR1cm4gMDsKK30KKworCitpbnQgYmxha2Uyc3BfdXBkYXRlKCBibGFrZTJzcF9zdGF0ZSAqUywgY29uc3Qgdm9pZCAqcGluLCBzaXplX3QgaW5sZW4gKQoreworICBjb25zdCB1bnNpZ25lZCBjaGFyICogaW4gPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXBpbjsKKyAgc2l6ZV90IGxlZnQgPSBTLT5idWZsZW47CisgIHNpemVfdCBmaWxsID0gc2l6ZW9mKCBTLT5idWYgKSAtIGxlZnQ7CisgIHNpemVfdCBpOworCisgIGlmKCBsZWZ0ICYmIGlubGVuID49IGZpbGwgKQorICB7CisgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgZmlsbCApOworCisgICAgZm9yKCBpID0gMDsgaSA8IFBBUkFMTEVMSVNNX0RFR1JFRTsgKytpICkKKyAgICAgIGJsYWtlMnNfdXBkYXRlKCBTLT5TW2ldLCBTLT5idWYgKyBpICogQkxBS0UyU19CTE9DS0JZVEVTLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKworICAgIGluICs9IGZpbGw7CisgICAgaW5sZW4gLT0gZmlsbDsKKyAgICBsZWZ0ID0gMDsKKyAgfQorCisjaWYgZGVmaW5lZChfT1BFTk1QKQorICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBzaGFyZWQoUyksIG51bV90aHJlYWRzKFBBUkFMTEVMSVNNX0RFR1JFRSkKKyNlbHNlCisgIGZvciggaSA9IDA7IGkgPCBQQVJBTExFTElTTV9ERUdSRUU7ICsraSApCisjZW5kaWYKKyAgeworI2lmIGRlZmluZWQoX09QRU5NUCkKKyAgICBzaXplX3QgICAgICBpID0gb21wX2dldF90aHJlYWRfbnVtKCk7CisjZW5kaWYKKyAgICBzaXplX3QgaW5sZW5fXyA9IGlubGVuOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluX18gPSAoIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiApaW47CisgICAgaW5fXyArPSBpICogQkxBS0UyU19CTE9DS0JZVEVTOworCisgICAgd2hpbGUoIGlubGVuX18gPj0gUEFSQUxMRUxJU01fREVHUkVFICogQkxBS0UyU19CTE9DS0JZVEVTICkKKyAgICB7CisgICAgICBibGFrZTJzX3VwZGF0ZSggUy0+U1tpXSwgaW5fXywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgICBpbl9fICs9IFBBUkFMTEVMSVNNX0RFR1JFRSAqIEJMQUtFMlNfQkxPQ0tCWVRFUzsKKyAgICAgIGlubGVuX18gLT0gUEFSQUxMRUxJU01fREVHUkVFICogQkxBS0UyU19CTE9DS0JZVEVTOworICAgIH0KKyAgfQorCisgIGluICs9IGlubGVuIC0gaW5sZW4gJSAoIFBBUkFMTEVMSVNNX0RFR1JFRSAqIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICBpbmxlbiAlPSBQQVJBTExFTElTTV9ERUdSRUUgKiBCTEFLRTJTX0JMT0NLQllURVM7CisKKyAgaWYoIGlubGVuID4gMCApCisgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgaW5sZW4gKTsKKworICBTLT5idWZsZW4gPSBsZWZ0ICsgaW5sZW47CisgIHJldHVybiAwOworfQorCisKK2ludCBibGFrZTJzcF9maW5hbCggYmxha2Uyc3Bfc3RhdGUgKlMsIHZvaWQgKm91dCwgc2l6ZV90IG91dGxlbiApCit7CisgIHVpbnQ4X3QgaGFzaFtQQVJBTExFTElTTV9ERUdSRUVdW0JMQUtFMlNfT1VUQllURVNdOworICBzaXplX3QgaTsKKworICBpZihvdXQgPT0gTlVMTCB8fCBvdXRsZW4gPCBTLT5vdXRsZW4pIHsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICBmb3IoIGkgPSAwOyBpIDwgUEFSQUxMRUxJU01fREVHUkVFOyArK2kgKQorICB7CisgICAgaWYoIFMtPmJ1ZmxlbiA+IGkgKiBCTEFLRTJTX0JMT0NLQllURVMgKQorICAgIHsKKyAgICAgIHNpemVfdCBsZWZ0ID0gUy0+YnVmbGVuIC0gaSAqIEJMQUtFMlNfQkxPQ0tCWVRFUzsKKworICAgICAgaWYoIGxlZnQgPiBCTEFLRTJTX0JMT0NLQllURVMgKSBsZWZ0ID0gQkxBS0UyU19CTE9DS0JZVEVTOworCisgICAgICBibGFrZTJzX3VwZGF0ZSggUy0+U1tpXSwgUy0+YnVmICsgaSAqIEJMQUtFMlNfQkxPQ0tCWVRFUywgbGVmdCApOworICAgIH0KKworICAgIGJsYWtlMnNfZmluYWwoIFMtPlNbaV0sIGhhc2hbaV0sIEJMQUtFMlNfT1VUQllURVMgKTsKKyAgfQorCisgIGZvciggaSA9IDA7IGkgPCBQQVJBTExFTElTTV9ERUdSRUU7ICsraSApCisgICAgYmxha2Uyc191cGRhdGUoIFMtPlIsIGhhc2hbaV0sIEJMQUtFMlNfT1VUQllURVMgKTsKKworICByZXR1cm4gYmxha2Uyc19maW5hbCggUy0+Uiwgb3V0LCBTLT5vdXRsZW4gKTsKK30KKworCitpbnQgYmxha2Uyc3AoIHZvaWQgKm91dCwgc2l6ZV90IG91dGxlbiwgY29uc3Qgdm9pZCAqaW4sIHNpemVfdCBpbmxlbiwgY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qga2V5bGVuICkKK3sKKyAgdWludDhfdCBoYXNoW1BBUkFMTEVMSVNNX0RFR1JFRV1bQkxBS0UyU19PVVRCWVRFU107CisgIGJsYWtlMnNfc3RhdGUgU1tQQVJBTExFTElTTV9ERUdSRUVdWzFdOworICBibGFrZTJzX3N0YXRlIEZTWzFdOworICBzaXplX3QgaTsKKworICAvKiBWZXJpZnkgcGFyYW1ldGVycyAqLworICBpZiAoIE5VTEwgPT0gaW4gJiYgaW5sZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBvdXQgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IGtleSAmJiBrZXlsZW4gPiAwKSByZXR1cm4gLTE7CisKKyAgaWYoICFvdXRsZW4gfHwgb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gQkxBS0UyU19LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBmb3IoIGkgPSAwOyBpIDwgUEFSQUxMRUxJU01fREVHUkVFOyArK2kgKQorICAgIGlmKCBibGFrZTJzcF9pbml0X2xlYWYoIFNbaV0sIG91dGxlbiwga2V5bGVuLCAodWludDMyX3QpaSApIDwgMCApIHJldHVybiAtMTsKKworICBTW1BBUkFMTEVMSVNNX0RFR1JFRSAtIDFdLT5sYXN0X25vZGUgPSAxOyAvKiBtYXJrIGxhc3Qgbm9kZSAqLworCisgIGlmKCBrZXlsZW4gPiAwICkKKyAgeworICAgIHVpbnQ4X3QgYmxvY2tbQkxBS0UyU19CTE9DS0JZVEVTXTsKKyAgICBtZW1zZXQoIGJsb2NrLCAwLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBtZW1jcHkoIGJsb2NrLCBrZXksIGtleWxlbiApOworCisgICAgZm9yKCBpID0gMDsgaSA8IFBBUkFMTEVMSVNNX0RFR1JFRTsgKytpICkKKyAgICAgIGJsYWtlMnNfdXBkYXRlKCBTW2ldLCBibG9jaywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoIGJsb2NrLCBCTEFLRTJTX0JMT0NLQllURVMgKTsgLyogQnVybiB0aGUga2V5IGZyb20gc3RhY2sgKi8KKyAgfQorCisjaWYgZGVmaW5lZChfT1BFTk1QKQorICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBzaGFyZWQoUyxoYXNoKSwgbnVtX3RocmVhZHMoUEFSQUxMRUxJU01fREVHUkVFKQorI2Vsc2UKKworICBmb3IoIGkgPSAwOyBpIDwgUEFSQUxMRUxJU01fREVHUkVFOyArK2kgKQorI2VuZGlmCisgIHsKKyNpZiBkZWZpbmVkKF9PUEVOTVApCisgICAgc2l6ZV90ICAgICAgaSA9IG9tcF9nZXRfdGhyZWFkX251bSgpOworI2VuZGlmCisgICAgc2l6ZV90IGlubGVuX18gPSBpbmxlbjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbl9fID0gKCBjb25zdCB1bnNpZ25lZCBjaGFyICogKWluOworICAgIGluX18gKz0gaSAqIEJMQUtFMlNfQkxPQ0tCWVRFUzsKKworICAgIHdoaWxlKCBpbmxlbl9fID49IFBBUkFMTEVMSVNNX0RFR1JFRSAqIEJMQUtFMlNfQkxPQ0tCWVRFUyApCisgICAgeworICAgICAgYmxha2Uyc191cGRhdGUoIFNbaV0sIGluX18sIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgICAgaW5fXyArPSBQQVJBTExFTElTTV9ERUdSRUUgKiBCTEFLRTJTX0JMT0NLQllURVM7CisgICAgICBpbmxlbl9fIC09IFBBUkFMTEVMSVNNX0RFR1JFRSAqIEJMQUtFMlNfQkxPQ0tCWVRFUzsKKyAgICB9CisKKyAgICBpZiggaW5sZW5fXyA+IGkgKiBCTEFLRTJTX0JMT0NLQllURVMgKQorICAgIHsKKyAgICAgIGNvbnN0IHNpemVfdCBsZWZ0ID0gaW5sZW5fXyAtIGkgKiBCTEFLRTJTX0JMT0NLQllURVM7CisgICAgICBjb25zdCBzaXplX3QgbGVuID0gbGVmdCA8PSBCTEFLRTJTX0JMT0NLQllURVMgPyBsZWZ0IDogQkxBS0UyU19CTE9DS0JZVEVTOworICAgICAgYmxha2Uyc191cGRhdGUoIFNbaV0sIGluX18sIGxlbiApOworICAgIH0KKworICAgIGJsYWtlMnNfZmluYWwoIFNbaV0sIGhhc2hbaV0sIEJMQUtFMlNfT1VUQllURVMgKTsKKyAgfQorCisgIGlmKCBibGFrZTJzcF9pbml0X3Jvb3QoIEZTLCBvdXRsZW4sIGtleWxlbiApIDwgMCApCisgICAgcmV0dXJuIC0xOworCisgIEZTLT5sYXN0X25vZGUgPSAxOworCisgIGZvciggaSA9IDA7IGkgPCBQQVJBTExFTElTTV9ERUdSRUU7ICsraSApCisgICAgYmxha2Uyc191cGRhdGUoIEZTLCBoYXNoW2ldLCBCTEFLRTJTX09VVEJZVEVTICk7CisKKyAgcmV0dXJuIGJsYWtlMnNfZmluYWwoIEZTLCBvdXQsIG91dGxlbiApOworfQorCisKKworI2lmIGRlZmluZWQoQkxBS0UyU1BfU0VMRlRFU1QpCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYmxha2UyLWthdC5oIgoraW50IG1haW4oIHZvaWQgKQoreworICB1aW50OF90IGtleVtCTEFLRTJTX0tFWUJZVEVTXTsKKyAgdWludDhfdCBidWZbQkxBS0UyX0tBVF9MRU5HVEhdOworICBzaXplX3QgaSwgc3RlcDsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyU19LRVlCWVRFUzsgKytpICkKKyAgICBrZXlbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMl9LQVRfTEVOR1RIOyArK2kgKQorICAgIGJ1ZltpXSA9ICggdWludDhfdCApaTsKKworICAvKiBUZXN0IHNpbXBsZSBBUEkgKi8KKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMl9LQVRfTEVOR1RIOyArK2kgKQorICB7CisgICAgdWludDhfdCBoYXNoW0JMQUtFMlNfT1VUQllURVNdOworICAgIGJsYWtlMnNwKCBoYXNoLCBCTEFLRTJTX09VVEJZVEVTLCBidWYsIGksIGtleSwgQkxBS0UyU19LRVlCWVRFUyApOworCisgICAgaWYoIDAgIT0gbWVtY21wKCBoYXNoLCBibGFrZTJzcF9rZXllZF9rYXRbaV0sIEJMQUtFMlNfT1VUQllURVMgKSApCisgICAgeworICAgICAgZ290byBmYWlsOworICAgIH0KKyAgfQorCisgIC8qIFRlc3Qgc3RyZWFtaW5nIEFQSSAqLworICBmb3Ioc3RlcCA9IDE7IHN0ZXAgPCBCTEFLRTJTX0JMT0NLQllURVM7ICsrc3RlcCkgeworICAgIGZvciAoaSA9IDA7IGkgPCBCTEFLRTJfS0FUX0xFTkdUSDsgKytpKSB7CisgICAgICB1aW50OF90IGhhc2hbQkxBS0UyU19PVVRCWVRFU107CisgICAgICBibGFrZTJzcF9zdGF0ZSBTOworICAgICAgdWludDhfdCAqIHAgPSBidWY7CisgICAgICBzaXplX3QgbWxlbiA9IGk7CisgICAgICBpbnQgZXJyID0gMDsKKworICAgICAgaWYoIChlcnIgPSBibGFrZTJzcF9pbml0X2tleSgmUywgQkxBS0UyU19PVVRCWVRFUywga2V5LCBCTEFLRTJTX0tFWUJZVEVTKSkgPCAwICkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgICB9CisKKyAgICAgIHdoaWxlIChtbGVuID49IHN0ZXApIHsKKyAgICAgICAgaWYgKCAoZXJyID0gYmxha2Uyc3BfdXBkYXRlKCZTLCBwLCBzdGVwKSkgPCAwICkgeworICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBtbGVuIC09IHN0ZXA7CisgICAgICAgIHAgKz0gc3RlcDsKKyAgICAgIH0KKyAgICAgIGlmICggKGVyciA9IGJsYWtlMnNwX3VwZGF0ZSgmUywgcCwgbWxlbikpIDwgMCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgICB9CisgICAgICBpZiAoIChlcnIgPSBibGFrZTJzcF9maW5hbCgmUywgaGFzaCwgQkxBS0UyU19PVVRCWVRFUykpIDwgMCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgICB9CisKKyAgICAgIGlmICgwICE9IG1lbWNtcChoYXNoLCBibGFrZTJzcF9rZXllZF9rYXRbaV0sIEJMQUtFMlNfT1VUQllURVMpKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBwdXRzKCAib2siICk7CisgIHJldHVybiAwOworZmFpbDoKKyAgcHV0cygiZXJyb3IiKTsKKyAgcmV0dXJuIC0xOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9jbWRsaW5lX3ByaXZhdGUuaCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2NtZGxpbmVfcHJpdmF0ZS5oCmluZGV4IDRlNDA5ZTguLjU3YTE5NDkgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2NtZGxpbmVfcHJpdmF0ZS5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2NtZGxpbmVfcHJpdmF0ZS5oCkBAIC0yNSwxNSArMjUsMTUgQEAKICAqICRGcmVlQlNEJAogICovCiAKKyNpZm5kZWYgQVJDSElWRV9DTURMSU5FX1BSSVZBVEVfSAorI2RlZmluZSBBUkNISVZFX0NNRExJTkVfUFJJVkFURV9ICisKICNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECiAjaWZuZGVmIF9fTElCQVJDSElWRV9URVNUCiAjZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KICNlbmRpZgogI2VuZGlmCiAKLSNpZm5kZWYgQVJDSElWRV9DTURMSU5FX1BSSVZBVEVfSAotI2RlZmluZSBBUkNISVZFX0NNRExJTkVfUFJJVkFURV9ICi0KIHN0cnVjdCBhcmNoaXZlX2NtZGxpbmUgewogICAgICAgICBjaGFyICAgICAgICAgICAgKnBhdGg7CiAgICAgICAgIGNoYXIgICAgICAgICAgICAqKmFyZ3Y7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9jcmMzMi5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfY3JjMzIuaAppbmRleCBjZDYzM2FmLi40ZjFhZWQzIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9jcmMzMi5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2NyYzMyLmgKQEAgLTI1LDYgKzI1LDkgQEAKICAqICRGcmVlQlNEOiBoZWFkL2xpYi9saWJhcmNoaXZlL2FyY2hpdmVfY3JjMzIuaCAyMDExMDIgMjAwOS0xMi0yOCAwMzoxMTozNloga2llbnR6bGUgJAogICovCiAKKyNpZm5kZWYgQVJDSElWRV9DUkMzMl9ICisjZGVmaW5lIEFSQ0hJVkVfQ1JDMzJfSAorCiAjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAogI2Vycm9yIFRoaXMgaGVhZGVyIGlzIG9ubHkgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHRvIGxpYmFyY2hpdmUuCiAjZW5kaWYKQEAgLTc2LDMgKzc5LDUgQEAKIAkJY3JjID0gY3JjX3RibFsoY3JjIF4gKnArKykgJiAweGZmXSBeIChjcmMgPj4gOCk7CiAJcmV0dXJuIChjcmMgXiAweGZmZmZmZmZmVUwpOwogfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2NyeXB0b3IuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2NyeXB0b3IuYwppbmRleCA3MTk2N2M5Li44YWIyYjA5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9jcnlwdG9yLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfY3J5cHRvci5jCkBAIC04NSw2ICs4NSwzNSBAQAogCXJldHVybiAoQkNSWVBUX1NVQ0NFU1Moc3RhdHVzKSkgPyAwOiAtMTsKIH0KIAorI2VsaWYgZGVmaW5lZChIQVZFX0xJQk1CRURDUllQVE8pICYmIGRlZmluZWQoSEFWRV9NQkVEVExTX1BLQ1M1X0gpCisKK3N0YXRpYyBpbnQKK3Bia2RmMl9zaGExKGNvbnN0IGNoYXIgKnB3LCBzaXplX3QgcHdfbGVuLCBjb25zdCB1aW50OF90ICpzYWx0LAorICAgIHNpemVfdCBzYWx0X2xlbiwgdW5zaWduZWQgcm91bmRzLCB1aW50OF90ICpkZXJpdmVkX2tleSwKKyAgICBzaXplX3QgZGVyaXZlZF9rZXlfbGVuKQoreworCW1iZWR0bHNfbWRfY29udGV4dF90IGN0eDsKKwljb25zdCBtYmVkdGxzX21kX2luZm9fdCAqaW5mbzsKKwlpbnQgcmV0OworCisJbWJlZHRsc19tZF9pbml0KCZjdHgpOworCWluZm8gPSBtYmVkdGxzX21kX2luZm9fZnJvbV90eXBlKE1CRURUTFNfTURfU0hBMSk7CisJaWYgKGluZm8gPT0gTlVMTCkgeworCQltYmVkdGxzX21kX2ZyZWUoJmN0eCk7CisJCXJldHVybiAoLTEpOworCX0KKwlyZXQgPSBtYmVkdGxzX21kX3NldHVwKCZjdHgsIGluZm8sIDEpOworCWlmIChyZXQgIT0gMCkgeworCQltYmVkdGxzX21kX2ZyZWUoJmN0eCk7CisJCXJldHVybiAoLTEpOworCX0KKwlyZXQgPSBtYmVkdGxzX3BrY3M1X3Bia2RmMl9obWFjKCZjdHgsIChjb25zdCB1bnNpZ25lZCBjaGFyICopcHcsCisJICAgIHB3X2xlbiwgc2FsdCwgc2FsdF9sZW4sIHJvdW5kcywgZGVyaXZlZF9rZXlfbGVuLCBkZXJpdmVkX2tleSk7CisKKwltYmVkdGxzX21kX2ZyZWUoJmN0eCk7CisJcmV0dXJuIChyZXQpOworfQorCiAjZWxpZiBkZWZpbmVkKEhBVkVfTElCTkVUVExFKSAmJiBkZWZpbmVkKEhBVkVfTkVUVExFX1BCS0RGMl9IKQogCiBzdGF0aWMgaW50CkBAIC0yNjksNiArMjk4LDM5IEBACiAJcmV0dXJuIDA7CiB9CiAKKyNlbGlmIGRlZmluZWQoSEFWRV9MSUJNQkVEQ1JZUFRPKSAmJiBkZWZpbmVkKEhBVkVfTUJFRFRMU19BRVNfSCkKKworc3RhdGljIGludAorYWVzX2N0cl9pbml0KGFyY2hpdmVfY3J5cHRvX2N0eCAqY3R4LCBjb25zdCB1aW50OF90ICprZXksIHNpemVfdCBrZXlfbGVuKQoreworCW1iZWR0bHNfYWVzX2luaXQoJmN0eC0+Y3R4KTsKKwljdHgtPmtleV9sZW4gPSBrZXlfbGVuOworCW1lbWNweShjdHgtPmtleSwga2V5LCBrZXlfbGVuKTsKKwltZW1zZXQoY3R4LT5ub25jZSwgMCwgc2l6ZW9mKGN0eC0+bm9uY2UpKTsKKwljdHgtPmVuY3JfcG9zID0gQUVTX0JMT0NLX1NJWkU7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2Flc19jdHJfZW5jcnlwdF9jb3VudGVyKGFyY2hpdmVfY3J5cHRvX2N0eCAqY3R4KQoreworCWlmIChtYmVkdGxzX2Flc19zZXRrZXlfZW5jKCZjdHgtPmN0eCwgY3R4LT5rZXksCisJICAgIGN0eC0+a2V5X2xlbiAqIDgpICE9IDApCisJCXJldHVybiAoLTEpOworCWlmIChtYmVkdGxzX2Flc19jcnlwdF9lY2IoJmN0eC0+Y3R4LCBNQkVEVExTX0FFU19FTkNSWVBULCBjdHgtPm5vbmNlLAorCSAgICBjdHgtPmVuY3JfYnVmKSAhPSAwKQorCQlyZXR1cm4gKC0xKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAorYWVzX2N0cl9yZWxlYXNlKGFyY2hpdmVfY3J5cHRvX2N0eCAqY3R4KQoreworCW1iZWR0bHNfYWVzX2ZyZWUoJmN0eC0+Y3R4KTsKKwltZW1zZXQoY3R4LCAwLCBzaXplb2YoKmN0eCkpOworCXJldHVybiAwOworfQorCiAjZWxpZiBkZWZpbmVkKEhBVkVfTElCTkVUVExFKSAmJiBkZWZpbmVkKEhBVkVfTkVUVExFX0FFU19IKQogCiBzdGF0aWMgaW50CkBAIC0zMTYsNyArMzc4LDE0IEBACiAJbWVtY3B5KGN0eC0+a2V5LCBrZXksIGtleV9sZW4pOwogCW1lbXNldChjdHgtPm5vbmNlLCAwLCBzaXplb2YoY3R4LT5ub25jZSkpOwogCWN0eC0+ZW5jcl9wb3MgPSBBRVNfQkxPQ0tfU0laRTsKKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSICA+PSAweDEwMTAwMDAwTCAmJiAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKKwlpZiAoIUVWUF9DSVBIRVJfQ1RYX3Jlc2V0KGN0eC0+Y3R4KSkgeworCQlFVlBfQ0lQSEVSX0NUWF9mcmVlKGN0eC0+Y3R4KTsKKwkJY3R4LT5jdHggPSBOVUxMOworCX0KKyNlbHNlCiAJRVZQX0NJUEhFUl9DVFhfaW5pdChjdHgtPmN0eCk7CisjZW5kaWYKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfY3J5cHRvcl9wcml2YXRlLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9jcnlwdG9yX3ByaXZhdGUuaAppbmRleCBiOTc1OTIyLi42NGEyMDU1IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9jcnlwdG9yX3ByaXZhdGUuaAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9jcnlwdG9yX3ByaXZhdGUuaApAQCAtMjMsMTMgKzIzLDEyIEBACiAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqLwogCi0jaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAotI2Vycm9yIFRoaXMgaGVhZGVyIGlzIG9ubHkgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHRvIGxpYmFyY2hpdmUuCi0jZW5kaWYKLQogI2lmbmRlZiBBUkNISVZFX0NSWVBUT1JfUFJJVkFURV9IX0lOQ0xVREVECiAjZGVmaW5lIEFSQ0hJVkVfQ1JZUFRPUl9QUklWQVRFX0hfSU5DTFVERUQKIAorI2lmbmRlZiBfX0xJQkFSQ0hJVkVfQlVJTEQKKyNlcnJvciBUaGlzIGhlYWRlciBpcyBvbmx5IHRvIGJlIHVzZWQgaW50ZXJuYWxseSB0byBsaWJhcmNoaXZlLgorI2VuZGlmCiAvKgogICogT24gc3lzdGVtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IGFueSByZWNvZ25pemVkIGNyeXB0byBsaWJyYXJpZXMsCiAgKiB0aGUgYXJjaGl2ZV9jcnlwdG9yLmMgZmlsZSB3aWxsIG5vcm1hbGx5IGRlZmluZSBubyB1c2FibGUgc3ltYm9scy4KQEAgLTgzLDYgKzgyLDIzIEBACiAJdW5zaWduZWQJZW5jcl9wb3M7CiB9IGFyY2hpdmVfY3J5cHRvX2N0eDsKIAorI2VsaWYgZGVmaW5lZChIQVZFX0xJQk1CRURDUllQVE8pICYmIGRlZmluZWQoSEFWRV9NQkVEVExTX0FFU19IKQorI2luY2x1ZGUgPG1iZWR0bHMvYWVzLmg+CisjaW5jbHVkZSA8bWJlZHRscy9tZC5oPgorI2luY2x1ZGUgPG1iZWR0bHMvcGtjczUuaD4KKworI2RlZmluZSBBRVNfTUFYX0tFWV9TSVpFIDMyCisjZGVmaW5lIEFFU19CTE9DS19TSVpFIDE2CisKK3R5cGVkZWYgc3RydWN0IHsKKwltYmVkdGxzX2Flc19jb250ZXh0CWN0eDsKKwl1aW50OF90CQlrZXlbQUVTX01BWF9LRVlfU0laRV07CisJdW5zaWduZWQJa2V5X2xlbjsKKwl1aW50OF90CQlub25jZVtBRVNfQkxPQ0tfU0laRV07CisJdWludDhfdAkJZW5jcl9idWZbQUVTX0JMT0NLX1NJWkVdOworCXVuc2lnbmVkCWVuY3JfcG9zOworfSBhcmNoaXZlX2NyeXB0b19jdHg7CisKICNlbGlmIGRlZmluZWQoSEFWRV9MSUJORVRUTEUpICYmIGRlZmluZWQoSEFWRV9ORVRUTEVfQUVTX0gpCiAjaWYgZGVmaW5lZChIQVZFX05FVFRMRV9QQktERjJfSCkKICNpbmNsdWRlIDxuZXR0bGUvcGJrZGYyLmg+CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9kaWdlc3QuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2RpZ2VzdC5jCmluZGV4IDQxNTM5MjMuLjM0YzU4YWMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2RpZ2VzdC5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2RpZ2VzdC5jCkBAIC0xNzgsNiArMTc4LDQwIEBACiAgIHJldHVybiAoQVJDSElWRV9PSyk7CiB9CiAKKyNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fTUQ1X01CRURUTFMpCisKK3N0YXRpYyBpbnQKK19fYXJjaGl2ZV9tYmVkdGxzX21kNWluaXQoYXJjaGl2ZV9tZDVfY3R4ICpjdHgpCit7CisgIG1iZWR0bHNfbWQ1X2luaXQoY3R4KTsKKyAgaWYgKG1iZWR0bHNfbWQ1X3N0YXJ0c19yZXQoY3R4KSA9PSAwKQorICAgIHJldHVybiAoQVJDSElWRV9PSyk7CisgIGVsc2UKKyAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworfQorCitzdGF0aWMgaW50CitfX2FyY2hpdmVfbWJlZHRsc19tZDV1cGRhdGUoYXJjaGl2ZV9tZDVfY3R4ICpjdHgsIGNvbnN0IHZvaWQgKmluZGF0YSwKKyAgICBzaXplX3QgaW5zaXplKQoreworICBpZiAobWJlZHRsc19tZDVfdXBkYXRlX3JldChjdHgsIGluZGF0YSwgaW5zaXplKSA9PSAwKQorICAgIHJldHVybiAoQVJDSElWRV9PSyk7CisgIGVsc2UKKyAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworfQorCitzdGF0aWMgaW50CitfX2FyY2hpdmVfbWJlZHRsc19tZDVmaW5hbChhcmNoaXZlX21kNV9jdHggKmN0eCwgdm9pZCAqbWQpCit7CisgIGlmIChtYmVkdGxzX21kNV9maW5pc2hfcmV0KGN0eCwgbWQpID09IDApIHsKKyAgICBtYmVkdGxzX21kNV9mcmVlKGN0eCk7CisgICAgcmV0dXJuIChBUkNISVZFX09LKTsKKyAgfSBlbHNlIHsKKyAgICBtYmVkdGxzX21kNV9mcmVlKGN0eCk7CisgICAgcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKyAgfQorfQorCiAjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX01ENV9ORVRUTEUpCiAKIHN0YXRpYyBpbnQKQEAgLTMzNSw2ICszNjksNDAgQEAKICAgcmV0dXJuIChBUkNISVZFX09LKTsKIH0KIAorI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19STUQxNjBfTUJFRFRMUykKKworc3RhdGljIGludAorX19hcmNoaXZlX21iZWR0bHNfcmlwZW1kMTYwaW5pdChhcmNoaXZlX3JtZDE2MF9jdHggKmN0eCkKK3sKKyAgbWJlZHRsc19yaXBlbWQxNjBfaW5pdChjdHgpOworICBpZiAobWJlZHRsc19yaXBlbWQxNjBfc3RhcnRzX3JldChjdHgpID09IDApCisgICAgcmV0dXJuIChBUkNISVZFX09LKTsKKyAgZWxzZQorICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7Cit9CisKK3N0YXRpYyBpbnQKK19fYXJjaGl2ZV9tYmVkdGxzX3JpcGVtZDE2MHVwZGF0ZShhcmNoaXZlX3JtZDE2MF9jdHggKmN0eCwgY29uc3Qgdm9pZCAqaW5kYXRhLAorICAgIHNpemVfdCBpbnNpemUpCit7CisgIGlmIChtYmVkdGxzX3JpcGVtZDE2MF91cGRhdGVfcmV0KGN0eCwgaW5kYXRhLCBpbnNpemUpID09IDApCisgICAgcmV0dXJuIChBUkNISVZFX09LKTsKKyAgZWxzZQorICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7Cit9CisKK3N0YXRpYyBpbnQKK19fYXJjaGl2ZV9tYmVkdGxzX3JpcGVtZDE2MGZpbmFsKGFyY2hpdmVfcm1kMTYwX2N0eCAqY3R4LCB2b2lkICptZCkKK3sKKyAgaWYgKG1iZWR0bHNfcmlwZW1kMTYwX2ZpbmlzaF9yZXQoY3R4LCBtZCkgPT0gMCkgeworICAgIG1iZWR0bHNfcmlwZW1kMTYwX2ZyZWUoY3R4KTsKKyAgICByZXR1cm4gKEFSQ0hJVkVfT0spOworICB9IGVsc2UgeworICAgIG1iZWR0bHNfcmlwZW1kMTYwX2ZyZWUoY3R4KTsKKyAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworICB9Cit9CisKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fUk1EMTYwX05FVFRMRSkKIAogc3RhdGljIGludApAQCAtNDkxLDYgKzU1OSw0MCBAQAogICByZXR1cm4gKEFSQ0hJVkVfT0spOwogfQogCisjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTFfTUJFRFRMUykKKworc3RhdGljIGludAorX19hcmNoaXZlX21iZWR0bHNfc2hhMWluaXQoYXJjaGl2ZV9zaGExX2N0eCAqY3R4KQoreworICBtYmVkdGxzX3NoYTFfaW5pdChjdHgpOworICBpZiAobWJlZHRsc19zaGExX3N0YXJ0c19yZXQoY3R4KSA9PSAwKQorICAgIHJldHVybiAoQVJDSElWRV9PSyk7CisgIGVsc2UKKyAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworfQorCitzdGF0aWMgaW50CitfX2FyY2hpdmVfbWJlZHRsc19zaGExdXBkYXRlKGFyY2hpdmVfc2hhMV9jdHggKmN0eCwgY29uc3Qgdm9pZCAqaW5kYXRhLAorICAgIHNpemVfdCBpbnNpemUpCit7CisgIGlmIChtYmVkdGxzX3NoYTFfdXBkYXRlX3JldChjdHgsIGluZGF0YSwgaW5zaXplKSA9PSAwKQorICAgIHJldHVybiAoQVJDSElWRV9PSyk7CisgIGVsc2UKKyAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworfQorCitzdGF0aWMgaW50CitfX2FyY2hpdmVfbWJlZHRsc19zaGExZmluYWwoYXJjaGl2ZV9zaGExX2N0eCAqY3R4LCB2b2lkICptZCkKK3sKKyAgaWYgKG1iZWR0bHNfc2hhMV9maW5pc2hfcmV0KGN0eCwgbWQpID09IDApIHsKKyAgICBtYmVkdGxzX3NoYTFfZnJlZShjdHgpOworICAgIHJldHVybiAoQVJDSElWRV9PSyk7CisgIH0gZWxzZSB7CisgICAgbWJlZHRsc19zaGExX2ZyZWUoY3R4KTsKKyAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworICB9Cit9CisKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMV9ORVRUTEUpCiAKIHN0YXRpYyBpbnQKQEAgLTcyMCw2ICs4MjIsNDAgQEAKICAgcmV0dXJuIChBUkNISVZFX09LKTsKIH0KIAorI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEEyNTZfTUJFRFRMUykKKworc3RhdGljIGludAorX19hcmNoaXZlX21iZWR0bHNfc2hhMjU2aW5pdChhcmNoaXZlX3NoYTI1Nl9jdHggKmN0eCkKK3sKKyAgbWJlZHRsc19zaGEyNTZfaW5pdChjdHgpOworICBpZiAobWJlZHRsc19zaGEyNTZfc3RhcnRzX3JldChjdHgsIDApID09IDApCisgICAgcmV0dXJuIChBUkNISVZFX09LKTsKKyAgZWxzZQorICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7Cit9CisKK3N0YXRpYyBpbnQKK19fYXJjaGl2ZV9tYmVkdGxzX3NoYTI1NnVwZGF0ZShhcmNoaXZlX3NoYTI1Nl9jdHggKmN0eCwgY29uc3Qgdm9pZCAqaW5kYXRhLAorICAgIHNpemVfdCBpbnNpemUpCit7CisgIGlmIChtYmVkdGxzX3NoYTI1Nl91cGRhdGVfcmV0KGN0eCwgaW5kYXRhLCBpbnNpemUpID09IDApCisgICAgcmV0dXJuIChBUkNISVZFX09LKTsKKyAgZWxzZQorICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7Cit9CisKK3N0YXRpYyBpbnQKK19fYXJjaGl2ZV9tYmVkdGxzX3NoYTI1NmZpbmFsKGFyY2hpdmVfc2hhMjU2X2N0eCAqY3R4LCB2b2lkICptZCkKK3sKKyAgaWYgKG1iZWR0bHNfc2hhMjU2X2ZpbmlzaF9yZXQoY3R4LCBtZCkgPT0gMCkgeworICAgIG1iZWR0bHNfc2hhMjU2X2ZyZWUoY3R4KTsKKyAgICByZXR1cm4gKEFSQ0hJVkVfT0spOworICB9IGVsc2UgeworICAgIG1iZWR0bHNfc2hhMjU2X2ZyZWUoY3R4KTsKKyAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworICB9Cit9CisKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMjU2X05FVFRMRSkKIAogc3RhdGljIGludApAQCAtOTIxLDYgKzEwNTcsNDAgQEAKICAgcmV0dXJuIChBUkNISVZFX09LKTsKIH0KIAorI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEEzODRfTUJFRFRMUykKKworc3RhdGljIGludAorX19hcmNoaXZlX21iZWR0bHNfc2hhMzg0aW5pdChhcmNoaXZlX3NoYTM4NF9jdHggKmN0eCkKK3sKKyAgbWJlZHRsc19zaGE1MTJfaW5pdChjdHgpOworICBpZiAobWJlZHRsc19zaGE1MTJfc3RhcnRzX3JldChjdHgsIDEpID09IDApCisgICAgcmV0dXJuIChBUkNISVZFX09LKTsKKyAgZWxzZQorICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7Cit9CisKK3N0YXRpYyBpbnQKK19fYXJjaGl2ZV9tYmVkdGxzX3NoYTM4NHVwZGF0ZShhcmNoaXZlX3NoYTM4NF9jdHggKmN0eCwgY29uc3Qgdm9pZCAqaW5kYXRhLAorICAgIHNpemVfdCBpbnNpemUpCit7CisgIGlmIChtYmVkdGxzX3NoYTUxMl91cGRhdGVfcmV0KGN0eCwgaW5kYXRhLCBpbnNpemUpID09IDApCisgICAgcmV0dXJuIChBUkNISVZFX09LKTsKKyAgZWxzZQorICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7Cit9CisKK3N0YXRpYyBpbnQKK19fYXJjaGl2ZV9tYmVkdGxzX3NoYTM4NGZpbmFsKGFyY2hpdmVfc2hhMzg0X2N0eCAqY3R4LCB2b2lkICptZCkKK3sKKyAgaWYgKG1iZWR0bHNfc2hhNTEyX2ZpbmlzaF9yZXQoY3R4LCBtZCkgPT0gMCkgeworICAgIG1iZWR0bHNfc2hhNTEyX2ZyZWUoY3R4KTsKKyAgICByZXR1cm4gKEFSQ0hJVkVfT0spOworICB9IGVsc2UgeworICAgIG1iZWR0bHNfc2hhNTEyX2ZyZWUoY3R4KTsKKyAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworICB9Cit9CisKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMzg0X05FVFRMRSkKIAogc3RhdGljIGludApAQCAtMTE0Niw2ICsxMzE2LDQwIEBACiAgIHJldHVybiAoQVJDSElWRV9PSyk7CiB9CiAKKyNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBNTEyX01CRURUTFMpCisKK3N0YXRpYyBpbnQKK19fYXJjaGl2ZV9tYmVkdGxzX3NoYTUxMmluaXQoYXJjaGl2ZV9zaGE1MTJfY3R4ICpjdHgpCit7CisgIG1iZWR0bHNfc2hhNTEyX2luaXQoY3R4KTsKKyAgaWYgKG1iZWR0bHNfc2hhNTEyX3N0YXJ0c19yZXQoY3R4LCAwKSA9PSAwKQorICAgIHJldHVybiAoQVJDSElWRV9PSyk7CisgIGVsc2UKKyAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworfQorCitzdGF0aWMgaW50CitfX2FyY2hpdmVfbWJlZHRsc19zaGE1MTJ1cGRhdGUoYXJjaGl2ZV9zaGE1MTJfY3R4ICpjdHgsIGNvbnN0IHZvaWQgKmluZGF0YSwKKyAgICBzaXplX3QgaW5zaXplKQoreworICBpZiAobWJlZHRsc19zaGE1MTJfdXBkYXRlX3JldChjdHgsIGluZGF0YSwgaW5zaXplKSA9PSAwKQorICAgIHJldHVybiAoQVJDSElWRV9PSyk7CisgIGVsc2UKKyAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworfQorCitzdGF0aWMgaW50CitfX2FyY2hpdmVfbWJlZHRsc19zaGE1MTJmaW5hbChhcmNoaXZlX3NoYTUxMl9jdHggKmN0eCwgdm9pZCAqbWQpCit7CisgIGlmIChtYmVkdGxzX3NoYTUxMl9maW5pc2hfcmV0KGN0eCwgbWQpID09IDApIHsKKyAgICBtYmVkdGxzX3NoYTUxMl9mcmVlKGN0eCk7CisgICAgcmV0dXJuIChBUkNISVZFX09LKTsKKyAgfSBlbHNlIHsKKyAgICBtYmVkdGxzX3NoYTUxMl9mcmVlKGN0eCk7CisgICAgcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKyAgfQorfQorCiAjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTUxMl9ORVRUTEUpCiAKIHN0YXRpYyBpbnQKQEAgLTEyNzYsNiArMTQ4MCwxMCBAQAogICAmX19hcmNoaXZlX2xpYnN5c3RlbV9tZDVpbml0LAogICAmX19hcmNoaXZlX2xpYnN5c3RlbV9tZDV1cGRhdGUsCiAgICZfX2FyY2hpdmVfbGlic3lzdGVtX21kNWZpbmFsLAorI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19NRDVfTUJFRFRMUykKKyAgJl9fYXJjaGl2ZV9tYmVkdGxzX21kNWluaXQsCisgICZfX2FyY2hpdmVfbWJlZHRsc19tZDV1cGRhdGUsCisgICZfX2FyY2hpdmVfbWJlZHRsc19tZDVmaW5hbCwKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fTUQ1X05FVFRMRSkKICAgJl9fYXJjaGl2ZV9uZXR0bGVfbWQ1aW5pdCwKICAgJl9fYXJjaGl2ZV9uZXR0bGVfbWQ1dXBkYXRlLApAQCAtMTMwMyw2ICsxNTExLDEwIEBACiAgICZfX2FyY2hpdmVfbGlibWRfcmlwZW1kMTYwaW5pdCwKICAgJl9fYXJjaGl2ZV9saWJtZF9yaXBlbWQxNjB1cGRhdGUsCiAgICZfX2FyY2hpdmVfbGlibWRfcmlwZW1kMTYwZmluYWwsCisjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1JNRDE2MF9NQkVEVExTKQorICAmX19hcmNoaXZlX21iZWR0bHNfcmlwZW1kMTYwaW5pdCwKKyAgJl9fYXJjaGl2ZV9tYmVkdGxzX3JpcGVtZDE2MHVwZGF0ZSwKKyAgJl9fYXJjaGl2ZV9tYmVkdGxzX3JpcGVtZDE2MGZpbmFsLAogI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19STUQxNjBfTkVUVExFKQogICAmX19hcmNoaXZlX25ldHRsZV9yaXBlbWQxNjBpbml0LAogICAmX19hcmNoaXZlX25ldHRsZV9yaXBlbWQxNjB1cGRhdGUsCkBAIC0xMzMwLDYgKzE1NDIsMTAgQEAKICAgJl9fYXJjaGl2ZV9saWJzeXN0ZW1fc2hhMWluaXQsCiAgICZfX2FyY2hpdmVfbGlic3lzdGVtX3NoYTF1cGRhdGUsCiAgICZfX2FyY2hpdmVfbGlic3lzdGVtX3NoYTFmaW5hbCwKKyNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMV9NQkVEVExTKQorICAmX19hcmNoaXZlX21iZWR0bHNfc2hhMWluaXQsCisgICZfX2FyY2hpdmVfbWJlZHRsc19zaGExdXBkYXRlLAorICAmX19hcmNoaXZlX21iZWR0bHNfc2hhMWZpbmFsLAogI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEExX05FVFRMRSkKICAgJl9fYXJjaGl2ZV9uZXR0bGVfc2hhMWluaXQsCiAgICZfX2FyY2hpdmVfbmV0dGxlX3NoYTF1cGRhdGUsCkBAIC0xMzY5LDYgKzE1ODUsMTAgQEAKICAgJl9fYXJjaGl2ZV9saWJzeXN0ZW1fc2hhMjU2aW5pdCwKICAgJl9fYXJjaGl2ZV9saWJzeXN0ZW1fc2hhMjU2dXBkYXRlLAogICAmX19hcmNoaXZlX2xpYnN5c3RlbV9zaGEyNTZmaW5hbCwKKyNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMjU2X01CRURUTFMpCisgICZfX2FyY2hpdmVfbWJlZHRsc19zaGEyNTZpbml0LAorICAmX19hcmNoaXZlX21iZWR0bHNfc2hhMjU2dXBkYXRlLAorICAmX19hcmNoaXZlX21iZWR0bHNfc2hhMjU2ZmluYWwsCiAjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTI1Nl9ORVRUTEUpCiAgICZfX2FyY2hpdmVfbmV0dGxlX3NoYTI1NmluaXQsCiAgICZfX2FyY2hpdmVfbmV0dGxlX3NoYTI1NnVwZGF0ZSwKQEAgLTE0MDQsNiArMTYyNCwxMCBAQAogICAmX19hcmNoaXZlX2xpYnN5c3RlbV9zaGEzODRpbml0LAogICAmX19hcmNoaXZlX2xpYnN5c3RlbV9zaGEzODR1cGRhdGUsCiAgICZfX2FyY2hpdmVfbGlic3lzdGVtX3NoYTM4NGZpbmFsLAorI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEEzODRfTUJFRFRMUykKKyAgJl9fYXJjaGl2ZV9tYmVkdGxzX3NoYTM4NGluaXQsCisgICZfX2FyY2hpdmVfbWJlZHRsc19zaGEzODR1cGRhdGUsCisgICZfX2FyY2hpdmVfbWJlZHRsc19zaGEzODRmaW5hbCwKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMzg0X05FVFRMRSkKICAgJl9fYXJjaGl2ZV9uZXR0bGVfc2hhMzg0aW5pdCwKICAgJl9fYXJjaGl2ZV9uZXR0bGVfc2hhMzg0dXBkYXRlLApAQCAtMTQ0Myw2ICsxNjY3LDEwIEBACiAgICZfX2FyY2hpdmVfbGlic3lzdGVtX3NoYTUxMmluaXQsCiAgICZfX2FyY2hpdmVfbGlic3lzdGVtX3NoYTUxMnVwZGF0ZSwKICAgJl9fYXJjaGl2ZV9saWJzeXN0ZW1fc2hhNTEyZmluYWwKKyNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBNTEyX01CRURUTFMpCisgICZfX2FyY2hpdmVfbWJlZHRsc19zaGE1MTJpbml0LAorICAmX19hcmNoaXZlX21iZWR0bHNfc2hhNTEydXBkYXRlLAorICAmX19hcmNoaXZlX21iZWR0bHNfc2hhNTEyZmluYWwKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBNTEyX05FVFRMRSkKICAgJl9fYXJjaGl2ZV9uZXR0bGVfc2hhNTEyaW5pdCwKICAgJl9fYXJjaGl2ZV9uZXR0bGVfc2hhNTEydXBkYXRlLApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZGlnZXN0X3ByaXZhdGUuaCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2RpZ2VzdF9wcml2YXRlLmgKaW5kZXggYjRmZDZjYS4uMTUzMTJlZSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZGlnZXN0X3ByaXZhdGUuaAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9kaWdlc3RfcHJpdmF0ZS5oCkBAIC0yNCwxMyArMjQsMTIgQEAKICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCiAKKyNpZm5kZWYgQVJDSElWRV9ESUdFU1RfUFJJVkFURV9IX0lOQ0xVREVECisjZGVmaW5lIEFSQ0hJVkVfRElHRVNUX1BSSVZBVEVfSF9JTkNMVURFRAorCiAjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAogI2Vycm9yIFRoaXMgaGVhZGVyIGlzIG9ubHkgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHRvIGxpYmFyY2hpdmUuCiAjZW5kaWYKLQotI2lmbmRlZiBBUkNISVZFX0NSWVBUT19QUklWQVRFX0hfSU5DTFVERUQKLSNkZWZpbmUgQVJDSElWRV9DUllQVE9fUFJJVkFURV9IX0lOQ0xVREVECi0KIC8qCiAgKiBDcnlwdG8gc3VwcG9ydCBpbiB2YXJpb3VzIE9wZXJhdGluZyBTeXN0ZW1zOgogICoKQEAgLTExMiw2ICsxMTEsMjQgQEAKICNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uRGlnZXN0Lmg+CiAjZW5kaWYKIAorLyogbWJlZCBUTFMgY3J5cHRvIGhlYWRlcnMgKi8KKyNpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX01ENV9NQkVEVExTKQorI2luY2x1ZGUgPG1iZWR0bHMvbWQ1Lmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1JNRDE2MF9NQkVEVExTKQorI2luY2x1ZGUgPG1iZWR0bHMvcmlwZW1kMTYwLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTFfTUJFRFRMUykKKyNpbmNsdWRlIDxtYmVkdGxzL3NoYTEuaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMjU2X01CRURUTFMpCisjaW5jbHVkZSA8bWJlZHRscy9zaGEyNTYuaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMzg0X01CRURUTFMpIHx8XAorICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTUxMl9NQkVEVExTKQorI2luY2x1ZGUgPG1iZWR0bHMvc2hhNTEyLmg+CisjZW5kaWYKKwogLyogTmV0dGxlIGNyeXB0byBoZWFkZXJzICovCiAjaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19NRDVfTkVUVExFKQogI2luY2x1ZGUgPG5ldHRsZS9tZDUuaD4KQEAgLTE1OSw2ICsxNzYsOCBAQAogdHlwZWRlZiBNRDVfQ1RYIGFyY2hpdmVfbWQ1X2N0eDsKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fTUQ1X0xJQlNZU1RFTSkKIHR5cGVkZWYgQ0NfTUQ1X0NUWCBhcmNoaXZlX21kNV9jdHg7CisjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX01ENV9NQkVEVExTKQordHlwZWRlZiBtYmVkdGxzX21kNV9jb250ZXh0IGFyY2hpdmVfbWQ1X2N0eDsKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fTUQ1X05FVFRMRSkKIHR5cGVkZWYgc3RydWN0IG1kNV9jdHggYXJjaGl2ZV9tZDVfY3R4OwogI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19NRDVfT1BFTlNTTCkKQEAgLTE3Myw2ICsxOTIsOCBAQAogdHlwZWRlZiBSTUQxNjBfQ1RYIGFyY2hpdmVfcm1kMTYwX2N0eDsKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fUk1EMTYwX0xJQk1EKQogdHlwZWRlZiBSSVBFTUQxNjBfQ1RYIGFyY2hpdmVfcm1kMTYwX2N0eDsKKyNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fUk1EMTYwX01CRURUTFMpCit0eXBlZGVmIG1iZWR0bHNfcmlwZW1kMTYwX2NvbnRleHQgYXJjaGl2ZV9ybWQxNjBfY3R4OwogI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19STUQxNjBfTkVUVExFKQogdHlwZWRlZiBzdHJ1Y3QgcmlwZW1kMTYwX2N0eCBhcmNoaXZlX3JtZDE2MF9jdHg7CiAjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1JNRDE2MF9PUEVOU1NMKQpAQCAtMTg3LDYgKzIwOCw4IEBACiB0eXBlZGVmIFNIQTFfQ1RYIGFyY2hpdmVfc2hhMV9jdHg7CiAjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTFfTElCU1lTVEVNKQogdHlwZWRlZiBDQ19TSEExX0NUWCBhcmNoaXZlX3NoYTFfY3R4OworI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEExX01CRURUTFMpCit0eXBlZGVmIG1iZWR0bHNfc2hhMV9jb250ZXh0IGFyY2hpdmVfc2hhMV9jdHg7CiAjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTFfTkVUVExFKQogdHlwZWRlZiBzdHJ1Y3Qgc2hhMV9jdHggYXJjaGl2ZV9zaGExX2N0eDsKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMV9PUEVOU1NMKQpAQCAtMjA3LDYgKzIzMCw4IEBACiB0eXBlZGVmIFNIQTI1Nl9DVFggYXJjaGl2ZV9zaGEyNTZfY3R4OwogI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEEyNTZfTElCU1lTVEVNKQogdHlwZWRlZiBDQ19TSEEyNTZfQ1RYIGFyY2hpdmVfc2hhMjU2X2N0eDsKKyNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMjU2X01CRURUTFMpCit0eXBlZGVmIG1iZWR0bHNfc2hhMjU2X2NvbnRleHQgYXJjaGl2ZV9zaGEyNTZfY3R4OwogI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEEyNTZfTkVUVExFKQogdHlwZWRlZiBzdHJ1Y3Qgc2hhMjU2X2N0eCBhcmNoaXZlX3NoYTI1Nl9jdHg7CiAjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTI1Nl9PUEVOU1NMKQpAQCAtMjI1LDYgKzI1MCw4IEBACiB0eXBlZGVmIFNIQTJfQ1RYIGFyY2hpdmVfc2hhMzg0X2N0eDsKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMzg0X0xJQlNZU1RFTSkKIHR5cGVkZWYgQ0NfU0hBNTEyX0NUWCBhcmNoaXZlX3NoYTM4NF9jdHg7CisjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTM4NF9NQkVEVExTKQordHlwZWRlZiBtYmVkdGxzX3NoYTUxMl9jb250ZXh0IGFyY2hpdmVfc2hhMzg0X2N0eDsKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMzg0X05FVFRMRSkKIHR5cGVkZWYgc3RydWN0IHNoYTM4NF9jdHggYXJjaGl2ZV9zaGEzODRfY3R4OwogI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEEzODRfT1BFTlNTTCkKQEAgLTI0NSw2ICsyNzIsOCBAQAogdHlwZWRlZiBTSEE1MTJfQ1RYIGFyY2hpdmVfc2hhNTEyX2N0eDsKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBNTEyX0xJQlNZU1RFTSkKIHR5cGVkZWYgQ0NfU0hBNTEyX0NUWCBhcmNoaXZlX3NoYTUxMl9jdHg7CisjZWxpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTUxMl9NQkVEVExTKQordHlwZWRlZiBtYmVkdGxzX3NoYTUxMl9jb250ZXh0IGFyY2hpdmVfc2hhNTEyX2N0eDsKICNlbGlmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBNTEyX05FVFRMRSkKIHR5cGVkZWYgc3RydWN0IHNoYTUxMl9jdHggYXJjaGl2ZV9zaGE1MTJfY3R4OwogI2VsaWYgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEE1MTJfT1BFTlNTTCkKQEAgLTI1OSw2ICsyODgsNyBAQAogI2lmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fTUQ1X0xJQkMpIHx8XAogICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX01ENV9MSUJNRCkgfHwJXAogICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX01ENV9MSUJTWVNURU0pIHx8XAorICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX01ENV9NQkVEVExTKSB8fFwKICAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19NRDVfTkVUVExFKSB8fFwKICAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19NRDVfT1BFTlNTTCkgfHxcCiAgIGRlZmluZWQoQVJDSElWRV9DUllQVE9fTUQ1X1dJTikKQEAgLTI3Miw2ICszMDIsNyBAQAogICBfX2FyY2hpdmVfZGlnZXN0Lm1kNXVwZGF0ZShjdHgsIGJ1ZiwgbikKIAogI2lmIGRlZmluZWQoQVJDSElWRV9DUllQVE9fUk1EMTYwX0xJQkMpIHx8XAorICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1JNRDE2MF9NQkVEVExTKSB8fFwKICAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19STUQxNjBfTkVUVExFKSB8fFwKICAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19STUQxNjBfT1BFTlNTTCkKICNkZWZpbmUgQVJDSElWRV9IQVNfUk1EMTYwCkBAIC0yODYsNiArMzE3LDcgQEAKICNpZiBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTFfTElCQykgfHxcCiAgIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMV9MSUJNRCkgfHwJXAogICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTFfTElCU1lTVEVNKSB8fFwKKyAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEExX01CRURUTFMpIHx8XAogICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTFfTkVUVExFKSB8fFwKICAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEExX09QRU5TU0wpIHx8XAogICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTFfV0lOKQpAQCAtMzAzLDYgKzMzNSw3IEBACiAgIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMjU2X0xJQkMzKSB8fFwKICAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEEyNTZfTElCTUQpIHx8XAogICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTI1Nl9MSUJTWVNURU0pIHx8XAorICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTI1Nl9NQkVEVExTKSB8fFwKICAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEEyNTZfTkVUVExFKSB8fFwKICAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEEyNTZfT1BFTlNTTCkgfHxcCiAgIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMjU2X1dJTikKQEAgLTMxOSw2ICszNTIsNyBAQAogICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTM4NF9MSUJDMikgfHxcCiAgIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMzg0X0xJQkMzKSB8fFwKICAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEEzODRfTElCU1lTVEVNKSB8fFwKKyAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEEzODRfTUJFRFRMUykgfHxcCiAgIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMzg0X05FVFRMRSkgfHxcCiAgIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBMzg0X09QRU5TU0wpIHx8XAogICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTM4NF9XSU4pCkBAIC0zMzYsNiArMzcwLDcgQEAKICAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEE1MTJfTElCQzMpIHx8XAogICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTUxMl9MSUJNRCkgfHxcCiAgIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBNTEyX0xJQlNZU1RFTSkgfHxcCisgIGRlZmluZWQoQVJDSElWRV9DUllQVE9fU0hBNTEyX01CRURUTFMpIHx8XAogICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTUxMl9ORVRUTEUpIHx8XAogICBkZWZpbmVkKEFSQ0hJVkVfQ1JZUFRPX1NIQTUxMl9PUEVOU1NMKSB8fFwKICAgZGVmaW5lZChBUkNISVZFX0NSWVBUT19TSEE1MTJfV0lOKQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZGlza19hY2xfc3Vub3MuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2Rpc2tfYWNsX3N1bm9zLmMKaW5kZXggYmM4NGZkNi4uYjBmNWRmYSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZGlza19hY2xfc3Vub3MuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9kaXNrX2FjbF9zdW5vcy5jCkBAIC0xNDUsMTAgKzE0NSw4IEBACiAJCQkJCWNudCA9IGZhY2woZmQsIGNtZCwgY250LCBhY2xwKTsKIAkJCX0KIAkJfSBlbHNlIHsKLQkJCWlmIChhY2xwICE9IE5VTEwpIHsKLQkJCQlmcmVlKGFjbHApOwotCQkJCWFjbHAgPSBOVUxMOwotCQkJfQorCQkJZnJlZShhY2xwKTsKKwkJCWFjbHAgPSBOVUxMOwogCQkJYnJlYWs7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbmRpYW4uaCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VuZGlhbi5oCmluZGV4IDFjNDg1NjMuLmU2ZDNmMmMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VuZGlhbi5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VuZGlhbi5oCkBAIC0yOCwxNiArMjgsMTUgQEAKICAqIEJvcnJvd2VkIGZyb20gRnJlZUJTRCdzIDxzeXMvZW5kaWFuLmg+CiAgKi8KIAotI2lmbmRlZiBfX0xJQkFSQ0hJVkVfQlVJTEQKLSNlcnJvciBUaGlzIGhlYWRlciBpcyBvbmx5IHRvIGJlIHVzZWQgaW50ZXJuYWxseSB0byBsaWJhcmNoaXZlLgotI2VuZGlmCisjaWZuZGVmIEFSQ0hJVkVfRU5ESUFOX0hfSU5DTFVERUQKKyNkZWZpbmUgQVJDSElWRV9FTkRJQU5fSF9JTkNMVURFRAogCiAvKiBOb3RlOiAgVGhpcyBpcyBhIHB1cmVseSBpbnRlcm5hbCBoZWFkZXIhICovCiAvKiBEbyBub3QgdXNlIHRoaXMgb3V0c2lkZSBvZiBsaWJhcmNoaXZlIGludGVybmFsIGNvZGUhICovCiAKLSNpZm5kZWYgQVJDSElWRV9FTkRJQU5fSF9JTkNMVURFRAotI2RlZmluZSBBUkNISVZFX0VORElBTl9IX0lOQ0xVREVECi0KKyNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECisjZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KKyNlbmRpZgogCiAvKgogICogRGlzYWJsaW5nIGlubGluZSBrZXl3b3JkIGZvciBjb21waWxlcnMga25vd24gdG8gY2hva2Ugb24gaXQ6CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeS4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnkuMwppbmRleCBmNzU5MTZjLi4yZjYyYTRiIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeS4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VudHJ5LjMKQEAgLTMyLDcgKzMyLDcgQEAKIC5ObSBhcmNoaXZlX2VudHJ5X2NsZWFyICwKIC5ObSBhcmNoaXZlX2VudHJ5X2Nsb25lICwKIC5ObSBhcmNoaXZlX2VudHJ5X2ZyZWUgLAotLk5tIGFyY2hpdmVfZW50cnlfbmV3ICwKKy5ObSBhcmNoaXZlX2VudHJ5X25ldwogLk5kIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgYXJjaGl2ZSBlbnRyeSBkZXNjcmlwdGlvbnMKIC5TaCBMSUJSQVJZCiBTdHJlYW1pbmcgQXJjaGl2ZSBMaWJyYXJ5IChsaWJhcmNoaXZlLCAtbGFyY2hpdmUpCkBAIC0xMjYsNyArMTI2LDYgQEAKIFNpbWlsYXJseSwgaWYgeW91IHN0b3JlIGEgd2lkZSBzdHJpbmcgYW5kIHRoZW4gc3RvcmUgYQogbmFycm93IHN0cmluZyBmb3IgdGhlIHNhbWUgZGF0YSwgdGhlIHByZXZpb3VzbHktc2V0IHdpZGUgc3RyaW5nIHdpbGwKIGJlIGRpc2NhcmRlZCBpbiBmYXZvciBvZiB0aGUgbmV3IGRhdGEuCi0uUHAKIC5cIiAuU2ggRVhBTVBMRQogLlwiIC5TaCBSRVRVUk4gVkFMVUVTCiAuXCIgLlNoIEVSUk9SUwpAQCAtMTM0LDggKzEzMyw4IEBACiAuWHIgYXJjaGl2ZV9lbnRyeV9hY2wgMyAsCiAuWHIgYXJjaGl2ZV9lbnRyeV9wYXRocyAzICwKIC5YciBhcmNoaXZlX2VudHJ5X3Blcm1zIDMgLAotLlhyIGFyY2hpdmVfZW50cnlfdGltZSAzCi0uWHIgbGliYXJjaGl2ZSAzICwKKy5YciBhcmNoaXZlX2VudHJ5X3RpbWUgMyAsCisuWHIgbGliYXJjaGl2ZSAzCiAuU2ggSElTVE9SWQogVGhlCiAuTm0gbGliYXJjaGl2ZQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnkuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VudHJ5LmMKaW5kZXggZjcyMmJiZS4uYTE1ZTk4YyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnkuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeS5jCkBAIC0xNjgsNiArMTY4LDcgQEAKIAlhcmNoaXZlX2VudHJ5X3hhdHRyX2NsZWFyKGVudHJ5KTsKIAlhcmNoaXZlX2VudHJ5X3NwYXJzZV9jbGVhcihlbnRyeSk7CiAJZnJlZShlbnRyeS0+c3RhdCk7CisJZW50cnktPmFlX3N5bWxpbmtfdHlwZSA9IEFFX1NZTUxJTktfVFlQRV9VTkRFRklORUQ7CiAJbWVtc2V0KGVudHJ5LCAwLCBzaXplb2YoKmVudHJ5KSk7CiAJcmV0dXJuIGVudHJ5OwogfQpAQCAtMjAyLDYgKzIwMyw5IEBACiAJZW50cnkyLT5hZV9zZXQgPSBlbnRyeS0+YWVfc2V0OwogCWFyY2hpdmVfbXN0cmluZ19jb3B5KCZlbnRyeTItPmFlX3VuYW1lLCAmZW50cnktPmFlX3VuYW1lKTsKIAorCS8qIENvcHkgc3ltbGluayB0eXBlICovCisJZW50cnkyLT5hZV9zeW1saW5rX3R5cGUgPSBlbnRyeS0+YWVfc3ltbGlua190eXBlOworCiAJLyogQ29weSBlbmNyeXB0aW9uIHN0YXR1cyAqLwogCWVudHJ5Mi0+ZW5jcnlwdGlvbiA9IGVudHJ5LT5lbmNyeXB0aW9uOwogCQpAQCAtMjUzLDYgKzI1Nyw3IEBACiAJaWYgKGVudHJ5ID09IE5VTEwpCiAJCXJldHVybiAoTlVMTCk7CiAJZW50cnktPmFyY2hpdmUgPSBhOworCWVudHJ5LT5hZV9zeW1saW5rX3R5cGUgPSBBRV9TWU1MSU5LX1RZUEVfVU5ERUZJTkVEOwogCXJldHVybiAoZW50cnkpOwogfQogCkBAIC02NzUsNiArNjgwLDEyIEBACiAJcmV0dXJuIChOVUxMKTsKIH0KIAoraW50CithcmNoaXZlX2VudHJ5X3N5bWxpbmtfdHlwZShzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqZW50cnkpCit7CisJcmV0dXJuIChlbnRyeS0+YWVfc3ltbGlua190eXBlKTsKK30KKwogY29uc3QgY2hhciAqCiBhcmNoaXZlX2VudHJ5X3N5bWxpbmtfdXRmOChzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqZW50cnkpCiB7CkBAIC0xMjQ2LDYgKzEyNTcsMTIgQEAKIH0KIAogdm9pZAorYXJjaGl2ZV9lbnRyeV9zZXRfc3ltbGlua190eXBlKHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSwgaW50IHR5cGUpCit7CisJZW50cnktPmFlX3N5bWxpbmtfdHlwZSA9IHR5cGU7Cit9CisKK3ZvaWQKIGFyY2hpdmVfZW50cnlfc2V0X3N5bWxpbmtfdXRmOChzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqZW50cnksIGNvbnN0IGNoYXIgKmxpbmtuYW1lKQogewogCWFyY2hpdmVfbXN0cmluZ19jb3B5X3V0ZjgoJmVudHJ5LT5hZV9zeW1saW5rLCBsaW5rbmFtZSk7CkBAIC0xNTYwLDEwICsxNTc3LDggQEAKIGNvbnN0IHdjaGFyX3QgKgogYXJjaGl2ZV9lbnRyeV9hY2xfdGV4dF93KHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSwgaW50IGZsYWdzKQogewotCWlmIChlbnRyeS0+YWNsLmFjbF90ZXh0X3cgIT0gTlVMTCkgewotCQlmcmVlKGVudHJ5LT5hY2wuYWNsX3RleHRfdyk7Ci0JCWVudHJ5LT5hY2wuYWNsX3RleHRfdyA9IE5VTEw7Ci0JfQorCWZyZWUoZW50cnktPmFjbC5hY2xfdGV4dF93KTsKKwllbnRyeS0+YWNsLmFjbF90ZXh0X3cgPSBOVUxMOwogCWlmIChhcmNoaXZlX2VudHJ5X2FjbF90ZXh0X2NvbXBhdCgmZmxhZ3MpID09IDApCiAJCWVudHJ5LT5hY2wuYWNsX3RleHRfdyA9IGFyY2hpdmVfYWNsX3RvX3RleHRfdygmZW50cnktPmFjbCwKIAkJICAgIE5VTEwsIGZsYWdzLCBlbnRyeS0+YXJjaGl2ZSk7CkBAIC0xNTc0LDEwICsxNTg5LDggQEAKIGNvbnN0IGNoYXIgKgogYXJjaGl2ZV9lbnRyeV9hY2xfdGV4dChzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqZW50cnksIGludCBmbGFncykKIHsKLQlpZiAoZW50cnktPmFjbC5hY2xfdGV4dCAhPSBOVUxMKSB7Ci0JCWZyZWUoZW50cnktPmFjbC5hY2xfdGV4dCk7Ci0JCWVudHJ5LT5hY2wuYWNsX3RleHQgPSBOVUxMOwotCX0KKwlmcmVlKGVudHJ5LT5hY2wuYWNsX3RleHQpOworCWVudHJ5LT5hY2wuYWNsX3RleHQgPSBOVUxMOwogCWlmIChhcmNoaXZlX2VudHJ5X2FjbF90ZXh0X2NvbXBhdCgmZmxhZ3MpID09IDApCiAJCWVudHJ5LT5hY2wuYWNsX3RleHQgPSBhcmNoaXZlX2FjbF90b190ZXh0X2woJmVudHJ5LT5hY2wsIE5VTEwsCiAJCSAgICBmbGFncywgTlVMTCk7CkBAIC0xNTkwLDEwICsxNjAzLDggQEAKIF9hcmNoaXZlX2VudHJ5X2FjbF90ZXh0X2woc3RydWN0IGFyY2hpdmVfZW50cnkgKmVudHJ5LCBpbnQgZmxhZ3MsCiAgICAgY29uc3QgY2hhciAqKmFjbF90ZXh0LCBzaXplX3QgKmxlbiwgc3RydWN0IGFyY2hpdmVfc3RyaW5nX2NvbnYgKnNjKQogewotCWlmIChlbnRyeS0+YWNsLmFjbF90ZXh0ICE9IE5VTEwpIHsKLQkJZnJlZShlbnRyeS0+YWNsLmFjbF90ZXh0KTsKLQkJZW50cnktPmFjbC5hY2xfdGV4dCA9IE5VTEw7Ci0gICAgICAgIH0KKwlmcmVlKGVudHJ5LT5hY2wuYWNsX3RleHQpOworCWVudHJ5LT5hY2wuYWNsX3RleHQgPSBOVUxMOwogCiAJaWYgKGFyY2hpdmVfZW50cnlfYWNsX3RleHRfY29tcGF0KCZmbGFncykgPT0gMCkKIAkJZW50cnktPmFjbC5hY2xfdGV4dCA9IGFyY2hpdmVfYWNsX3RvX3RleHRfbCgmZW50cnktPmFjbCwKQEAgLTE2MzgsMTk4ICsxNjQ5LDIxNSBAQAogICogU1VDSCBEQU1BR0UuCiAgKi8KIAorLyoKKyAqIFN1cHBvcnRlZCBmaWxlIGZsYWdzIG9uIEZyZWVCU0QgYW5kIE1hYyBPUzoKKyAqIHNhcHBuZCxzYXBwZW5kCQlTRl9BUFBFTkQKKyAqIGFyY2gsYXJjaGl2ZWQJCVNGX0FSQ0hJVkVECisgKiBzY2hnLHNjaGFuZ2Usc2ltbXV0YWJsZQlTRl9JTU1VVEFCTEUKKyAqIHN1bmxuayxzdW5saW5rCQlTRl9OT1VOTElOSwkoRnJlZUJTRCBvbmx5KQorICogdWFwcG5kLHVhcHBlbmQJCVVGX0FQUEVORAorICogY29tcHJlc3NlZAkJCVVGX0NPTVBSRVNTRUQJKE1hYyBPUyBvbmx5KQorICogaGlkZGVuLHVoaWRkZW4JCVVGX0hJRERFTgorICogdWNoZyx1Y2hhbmdlLHVpbW11dGFibGUJVUZfSU1NVVRBQkxFCisgKiBub2R1bXAJCQlVRl9OT0RVTVAKKyAqIHV1bmxuayx1dW5saW5rCQlVRl9OT1VOTElOSwkoRnJlZUJTRCBvbmx5KQorICogb2ZmbGluZSx1b2ZmbGluZQkJVUZfT0ZGTElORQkoRnJlZUJTRCBvbmx5KQorICogb3BhcXVlCQkJVUZfT1BBUVVFCisgKiByZG9ubHksdXJkb25seSxyZWFkb25seQlVRl9SRUFET05MWQkoRnJlZUJTRCBvbmx5KQorICogcmVwYXJzZSx1cmVwYXJzZQkJVUZfUkVQQVJTRQkoRnJlZUJTRCBvbmx5KQorICogc3BhcnNlLHVzcGFyc2UJCVVGX1NQQVJTRQkoRnJlZUJTRCBvbmx5KQorICogc3lzdGVtLHVzeXN0ZW0JCVVGX1NZU1RFTQkoRnJlZUJTRCBvbmx5KQorICoKKyAqIFNlZSBjaGZsYWdzKDIpIGZvciBtb3JlIGluZm9ybWF0aW9uCisgKgorICogU3VwcG9ydGVkIGZpbGUgYXR0cmlidXRlcyBvbiBMaW51eDoKKyAqIGEJYXBwZW5kIG9ubHkJCQlGU19BUFBFTkRfRkwJCXNhcHBuZAorICogQQlubyBhdGltZSB1cGRhdGVzCQlGU19OT0FUSU1FX0ZMCQlhdGltZQorICogYwljb21wcmVzcwkJCUZTX0NPTVBSX0ZMCQljb21wcmVzcworICogQwlubyBjb3B5IG9uIHdyaXRlCQlGU19OT0NPV19GTAkJY293CisgKiBkCW5vIGR1bXAJCQkJRlNfTk9EVU1QX0ZMCQlkdW1wCisgKiBECXN5bmNocm9ub3VzIGRpcmVjdG9yeSB1cGRhdGVzCUZTX0RJUlNZTkNfRkwJCWRpcnN5bmMKKyAqIGkJaW1tdXRhYmxlCQkJRlNfSU1NVVRBQkxFX0ZMCQlzY2hnCisgKiBqCWRhdGEgam91cm5hbGxpbmcJCUZTX0pPVVJOQUxfREFUQV9GTAlqb3VybmFsCisgKiBQCXByb2plY3QgaGllcmFyY2h5CQlGU19QUk9KSU5IRVJJVF9GTAlwcm9qaW5oZXJpdAorICogcwlzZWN1cmUgZGVsZXRpb24JCQlGU19TRUNSTV9GTAkJc2VjdXJlZGVsZXRpb24KKyAqIFMJc3luY2hyb25vdXMgdXBkYXRlcwkJRlNfU1lOQ19GTAkJc3luYworICogdAlubyB0YWlsLW1lcmdpbmcJCQlGU19OT1RBSUxfRkwJCXRhaWwKKyAqIFQJdG9wIG9mIGRpcmVjdG9yeSBoaWVyYXJjaHkJRlNfVE9QRElSX0ZMCQl0b3BkaXIKKyAqIHUJdW5kZWxldGFibGUJCQlGU19VTlJNX0ZMCQl1bmRlbAorICoKKyAqIFNlZSBpb2N0bF9pZmxhZ3MoMikgZm9yIG1vcmUgaW5mb3JtYXRpb24KKyAqCisgKiBFcXVpdmFsZW50IGZpbGUgZmxhZ3Mgc3VwcG9ydGVkIG9uIEZyZWVCU0QgLyBNYWMgT1MgYW5kIExpbnV4OgorICogU0ZfQVBQRU5ECQlGU19BUFBFTkRfRkwJCXNhcHBuZAorICogU0ZfSU1NVVRBQkxFCQlGU19JTU1VVEFCTEVfRkwJCXNjaGcKKyAqIFVGX05PRFVNUAkJRlNfTk9EVU1QX0ZMCQlub2R1bXAKKyAqLworCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZsYWcgewogCWNvbnN0IGNoYXIJKm5hbWU7CiAJY29uc3Qgd2NoYXJfdAkqd25hbWU7CiAJdW5zaWduZWQgbG9uZwkgc2V0OwogCXVuc2lnbmVkIGxvbmcJIGNsZWFyOwotfSBmbGFnc1tdID0geworfSBmaWxlZmxhZ3NbXSA9IHsKIAkvKiBQcmVmZXJyZWQgKHNob3J0ZXIpIG5hbWVzIHBlciBmbGFnIGZpcnN0LCBhbGwgcHJlZml4ZWQgYnkgIm5vIiAqLwogI2lmZGVmIFNGX0FQUEVORAotCXsgIm5vc2FwcG5kIiwJTCJub3NhcHBuZCIsCQlTRl9BUFBFTkQsCTAgfSwKLQl7ICJub3NhcHBlbmQiLAlMIm5vc2FwcGVuZCIsCQlTRl9BUFBFTkQsCTAgfSwKKwl7ICJub3NhcHBuZCIsCUwibm9zYXBwbmQiLAkJU0ZfQVBQRU5ELAkwfSwKKwl7ICJub3NhcHBlbmQiLAlMIm5vc2FwcGVuZCIsCQlTRl9BUFBFTkQsCTB9LAogI2VuZGlmCiAjaWYgZGVmaW5lZChGU19BUFBFTkRfRkwpCQkJLyogJ2EnICovCi0JeyAibm9zYXBwbmQiLAlMIm5vc2FwcG5kIiwJCUZTX0FQUEVORF9GTCwJMCB9LAotCXsgIm5vc2FwcGVuZCIsCUwibm9zYXBwZW5kIiwJCUZTX0FQUEVORF9GTCwJMCB9LAorCXsgIm5vc2FwcG5kIiwJTCJub3NhcHBuZCIsCQlGU19BUFBFTkRfRkwsCTB9LAorCXsgIm5vc2FwcGVuZCIsCUwibm9zYXBwZW5kIiwJCUZTX0FQUEVORF9GTCwJMH0sCiAjZWxpZiBkZWZpbmVkKEVYVDJfQVBQRU5EX0ZMKQkJCS8qICdhJyAqLwotCXsgIm5vc2FwcG5kIiwJTCJub3NhcHBuZCIsCQlFWFQyX0FQUEVORF9GTCwJMCB9LAotCXsgIm5vc2FwcGVuZCIsCUwibm9zYXBwZW5kIiwJCUVYVDJfQVBQRU5EX0ZMLAkwIH0sCisJeyAibm9zYXBwbmQiLAlMIm5vc2FwcG5kIiwJCUVYVDJfQVBQRU5EX0ZMLAkwfSwKKwl7ICJub3NhcHBlbmQiLAlMIm5vc2FwcGVuZCIsCQlFWFQyX0FQUEVORF9GTCwJMH0sCiAjZW5kaWYKICNpZmRlZiBTRl9BUkNISVZFRAotCXsgIm5vYXJjaCIsCUwibm9hcmNoIiwJCVNGX0FSQ0hJVkVELAkwIH0sCi0JeyAibm9hcmNoaXZlZCIsCUwibm9hcmNoaXZlZCIsICAgICAgIAlTRl9BUkNISVZFRCwJMCB9LAorCXsgIm5vYXJjaCIsCUwibm9hcmNoIiwJCVNGX0FSQ0hJVkVELAkwfSwKKwl7ICJub2FyY2hpdmVkIiwJTCJub2FyY2hpdmVkIiwgICAgICAgCVNGX0FSQ0hJVkVELAkwfSwKICNlbmRpZgogI2lmZGVmIFNGX0lNTVVUQUJMRQotCXsgIm5vc2NoZyIsCUwibm9zY2hnIiwJCVNGX0lNTVVUQUJMRSwJMCB9LAotCXsgIm5vc2NoYW5nZSIsCUwibm9zY2hhbmdlIiwJCVNGX0lNTVVUQUJMRSwJMCB9LAotCXsgIm5vc2ltbXV0YWJsZSIsCUwibm9zaW1tdXRhYmxlIiwJU0ZfSU1NVVRBQkxFLAkwIH0sCisJeyAibm9zY2hnIiwJTCJub3NjaGciLAkJU0ZfSU1NVVRBQkxFLAkwfSwKKwl7ICJub3NjaGFuZ2UiLAlMIm5vc2NoYW5nZSIsCQlTRl9JTU1VVEFCTEUsCTB9LAorCXsgIm5vc2ltbXV0YWJsZSIsCUwibm9zaW1tdXRhYmxlIiwJU0ZfSU1NVVRBQkxFLAkwfSwKICNlbmRpZgogI2lmIGRlZmluZWQoRlNfSU1NVVRBQkxFX0ZMKQkJCS8qICdpJyAqLwotCXsgIm5vc2NoZyIsCUwibm9zY2hnIiwJCUZTX0lNTVVUQUJMRV9GTCwJMCB9LAotCXsgIm5vc2NoYW5nZSIsCUwibm9zY2hhbmdlIiwJCUZTX0lNTVVUQUJMRV9GTCwJMCB9LAotCXsgIm5vc2ltbXV0YWJsZSIsCUwibm9zaW1tdXRhYmxlIiwJRlNfSU1NVVRBQkxFX0ZMLAkwIH0sCisJeyAibm9zY2hnIiwJTCJub3NjaGciLAkJRlNfSU1NVVRBQkxFX0ZMLAkwfSwKKwl7ICJub3NjaGFuZ2UiLAlMIm5vc2NoYW5nZSIsCQlGU19JTU1VVEFCTEVfRkwsCTB9LAorCXsgIm5vc2ltbXV0YWJsZSIsCUwibm9zaW1tdXRhYmxlIiwJRlNfSU1NVVRBQkxFX0ZMLAkwfSwKICNlbGlmIGRlZmluZWQoRVhUMl9JTU1VVEFCTEVfRkwpCQkvKiAnaScgKi8KLQl7ICJub3NjaGciLAlMIm5vc2NoZyIsCQlFWFQyX0lNTVVUQUJMRV9GTCwJMCB9LAotCXsgIm5vc2NoYW5nZSIsCUwibm9zY2hhbmdlIiwJCUVYVDJfSU1NVVRBQkxFX0ZMLAkwIH0sCi0JeyAibm9zaW1tdXRhYmxlIiwJTCJub3NpbW11dGFibGUiLAlFWFQyX0lNTVVUQUJMRV9GTCwJMCB9LAorCXsgIm5vc2NoZyIsCUwibm9zY2hnIiwJCUVYVDJfSU1NVVRBQkxFX0ZMLAkwfSwKKwl7ICJub3NjaGFuZ2UiLAlMIm5vc2NoYW5nZSIsCQlFWFQyX0lNTVVUQUJMRV9GTCwJMH0sCisJeyAibm9zaW1tdXRhYmxlIiwJTCJub3NpbW11dGFibGUiLAlFWFQyX0lNTVVUQUJMRV9GTCwJMH0sCiAjZW5kaWYKICNpZmRlZiBTRl9OT1VOTElOSwotCXsgIm5vc3VubG5rIiwJTCJub3N1bmxuayIsCQlTRl9OT1VOTElOSywJMCB9LAotCXsgIm5vc3VubGluayIsCUwibm9zdW5saW5rIiwJCVNGX05PVU5MSU5LLAkwIH0sCi0jZW5kaWYKLSNpZmRlZiBTRl9TTkFQU0hPVAotCXsgIm5vc25hcHNob3QiLAlMIm5vc25hcHNob3QiLAlTRl9TTkFQU0hPVCwJMCB9LAorCXsgIm5vc3VubG5rIiwJTCJub3N1bmxuayIsCQlTRl9OT1VOTElOSywJMH0sCisJeyAibm9zdW5saW5rIiwJTCJub3N1bmxpbmsiLAkJU0ZfTk9VTkxJTkssCTB9LAogI2VuZGlmCiAjaWZkZWYgVUZfQVBQRU5ECi0JeyAibm91YXBwbmQiLAlMIm5vdWFwcG5kIiwJCVVGX0FQUEVORCwJMCB9LAotCXsgIm5vdWFwcGVuZCIsCUwibm91YXBwZW5kIiwJCVVGX0FQUEVORCwJMCB9LAorCXsgIm5vdWFwcG5kIiwJTCJub3VhcHBuZCIsCQlVRl9BUFBFTkQsCTB9LAorCXsgIm5vdWFwcGVuZCIsCUwibm91YXBwZW5kIiwJCVVGX0FQUEVORCwJMH0sCiAjZW5kaWYKICNpZmRlZiBVRl9JTU1VVEFCTEUKLQl7ICJub3VjaGciLAlMIm5vdWNoZyIsCQlVRl9JTU1VVEFCTEUsCTAgfSwKLQl7ICJub3VjaGFuZ2UiLAlMIm5vdWNoYW5nZSIsCQlVRl9JTU1VVEFCTEUsCTAgfSwKLQl7ICJub3VpbW11dGFibGUiLAlMIm5vdWltbXV0YWJsZSIsCVVGX0lNTVVUQUJMRSwJMCB9LAorCXsgIm5vdWNoZyIsCUwibm91Y2hnIiwJCVVGX0lNTVVUQUJMRSwJMH0sCisJeyAibm91Y2hhbmdlIiwJTCJub3VjaGFuZ2UiLAkJVUZfSU1NVVRBQkxFLAkwfSwKKwl7ICJub3VpbW11dGFibGUiLAlMIm5vdWltbXV0YWJsZSIsCVVGX0lNTVVUQUJMRSwJMH0sCiAjZW5kaWYKICNpZmRlZiBVRl9OT0RVTVAKIAl7ICJub2R1bXAiLAlMIm5vZHVtcCIsCQkwLAkJVUZfTk9EVU1QfSwKICNlbmRpZgogI2lmIGRlZmluZWQoRlNfTk9EVU1QX0ZMKQkvKiAnZCcgKi8KIAl7ICJub2R1bXAiLAlMIm5vZHVtcCIsCQkwLAkJRlNfTk9EVU1QX0ZMfSwKLSNlbGlmIGRlZmluZWQoRVhUMl9OT0RVTVBfRkwpIAkvKiAnZCcgKi8KKyNlbGlmIGRlZmluZWQoRVhUMl9OT0RVTVBfRkwpCiAJeyAibm9kdW1wIiwJTCJub2R1bXAiLAkJMCwJCUVYVDJfTk9EVU1QX0ZMfSwKICNlbmRpZgogI2lmZGVmIFVGX09QQVFVRQotCXsgIm5vb3BhcXVlIiwJTCJub29wYXF1ZSIsCQlVRl9PUEFRVUUsCTAgfSwKKwl7ICJub29wYXF1ZSIsCUwibm9vcGFxdWUiLAkJVUZfT1BBUVVFLAkwfSwKICNlbmRpZgogI2lmZGVmIFVGX05PVU5MSU5LCi0JeyAibm91dW5sbmsiLAlMIm5vdXVubG5rIiwJCVVGX05PVU5MSU5LLAkwIH0sCi0JeyAibm91dW5saW5rIiwJTCJub3V1bmxpbmsiLAkJVUZfTk9VTkxJTkssCTAgfSwKKwl7ICJub3V1bmxuayIsCUwibm91dW5sbmsiLAkJVUZfTk9VTkxJTkssCTB9LAorCXsgIm5vdXVubGluayIsCUwibm91dW5saW5rIiwJCVVGX05PVU5MSU5LLAkwfSwKICNlbmRpZgogI2lmZGVmIFVGX0NPTVBSRVNTRUQKLQl7ICJub2NvbXByZXNzZWQiLEwibm9jb21wcmVzc2VkIiwJVUZfQ09NUFJFU1NFRCwJMCB9LAorCS8qIE1hYyBPUyAqLworCXsgIm5vY29tcHJlc3NlZCIsCUwibm9jb21wcmVzc2VkIiwJVUZfQ09NUFJFU1NFRCwJMH0sCiAjZW5kaWYKICNpZmRlZiBVRl9ISURERU4KLQl7ICJub2hpZGRlbiIsCUwibm9oaWRkZW4iLAkJVUZfSElEREVOLAkwIH0sCisJeyAibm9oaWRkZW4iLAlMIm5vaGlkZGVuIiwJCVVGX0hJRERFTiwJMH0sCisJeyAibm91aGlkZGVuIiwJTCJub3VoaWRkZW4iLAkJVUZfSElEREVOLAkwfSwKICNlbmRpZgotI2lmIGRlZmluZWQoRlNfVU5STV9GTCkKLSAgICAgICAgeyAibm91dW5saW5rIiwJTCJub3V1bmxpbmsiLAkJRlNfVU5STV9GTCwJMH0sCisjaWZkZWYgRklMRV9BVFRSSUJVVEVfSElEREVOCisJeyAibm9oaWRkZW4iLAlMIm5vaGlkZGVuIiwJRklMRV9BVFRSSUJVVEVfSElEREVOLAkwfSwKKwl7ICJub3VoaWRkZW4iLAlMIm5vdWhpZGRlbiIsCUZJTEVfQVRUUklCVVRFX0hJRERFTiwJMH0sCisjZW5kaWYKKyNpZmRlZiBVRl9PRkZMSU5FCisJeyAibm9vZmZsaW5lIiwJTCJub29mZmxpbmUiLAkJVUZfT0ZGTElORSwJMH0sCisJeyAibm91b2ZmbGluZSIsCUwibm91b2ZmbGluZSIsCQlVRl9PRkZMSU5FLAkwfSwKKyNlbmRpZgorI2lmZGVmIFVGX1JFQURPTkxZCisJeyAibm9yZG9ubHkiLAlMIm5vcmRvbmx5IiwJCVVGX1JFQURPTkxZLAkwfSwKKwl7ICJub3VyZG9ubHkiLAlMIm5vdXJkb25seSIsCQlVRl9SRUFET05MWSwJMH0sCisJeyAibm9yZWFkb25seSIsCUwibm9yZWFkb25seSIsCQlVRl9SRUFET05MWSwJMH0sCisjZW5kaWYKKyNpZmRlZiBGSUxFX0FUVFJJQlVURV9SRUFET05MWQorCXsgIm5vcmRvbmx5IiwJTCJub3Jkb25seSIsCUZJTEVfQVRUUklCVVRFX1JFQURPTkxZLAkwfSwKKwl7ICJub3VyZG9ubHkiLAlMIm5vdXJkb25seSIsCUZJTEVfQVRUUklCVVRFX1JFQURPTkxZLAkwfSwKKwl7ICJub3JlYWRvbmx5IiwJTCJub3JlYWRvbmx5IiwJRklMRV9BVFRSSUJVVEVfUkVBRE9OTFksCTB9LAorI2VuZGlmCisjaWZkZWYgVUZfU1BBUlNFCisJeyAibm9zcGFyc2UiLAlMIm5vc3BhcnNlIiwJCVVGX1NQQVJTRSwJMH0sCisJeyAibm91c3BhcnNlIiwJTCJub3VzcGFyc2UiLAkJVUZfU1BBUlNFLAkwfSwKKyNlbmRpZgorI2lmZGVmIFVGX1JFUEFSU0UKKwl7ICJub3JlcGFyc2UiLAlMIm5vcmVwYXJzZSIsCQlVRl9SRVBBUlNFLAkwfSwKKwl7ICJub3VyZXBhcnNlIiwJTCJub3VyZXBhcnNlIiwJCVVGX1JFUEFSU0UsCTB9LAorI2VuZGlmCisjaWZkZWYgVUZfU1lTVEVNCisJeyAibm9zeXN0ZW0iLAlMIm5vc3lzdGVtIiwJCVVGX1NZU1RFTSwJMH0sCisJeyAibm91c3lzdGVtIiwJTCJub3VzeXN0ZW0iLAkJVUZfU1lTVEVNLAkwfSwKKyNlbmRpZgorI2lmZGVmIEZJTEVfQVRUUklCVVRFX1NZU1RFTQorCXsgIm5vc3lzdGVtIiwJTCJub3N5c3RlbSIsCUZJTEVfQVRUUklCVVRFX1NZU1RFTSwJMH0sCisJeyAibm91c3lzdGVtIiwJTCJub3VzeXN0ZW0iLAlGSUxFX0FUVFJJQlVURV9TWVNURU0sCTB9LAorI2VuZGlmCisjaWYgZGVmaW5lZChGU19VTlJNX0ZMKQkJLyogJ3UnICovCisJeyAibm91bmRlbCIsCUwibm91bmRlbCIsCQlGU19VTlJNX0ZMLAkwfSwKICNlbGlmIGRlZmluZWQoRVhUMl9VTlJNX0ZMKQotICAgICAgICB7ICJub3V1bmxpbmsiLAlMIm5vdXVubGluayIsCQlFWFQyX1VOUk1fRkwsCTB9LAorCXsgIm5vdW5kZWwiLAlMIm5vdW5kZWwiLAkJRVhUMl9VTlJNX0ZMLAkwfSwKICNlbmRpZgogCi0jaWYgZGVmaW5lZChGU19CVFJFRV9GTCkKLSAgICAgICAgeyAibm9idHJlZSIsCUwibm9idHJlZSIsICAgICAgIAlGU19CVFJFRV9GTCwJMCB9LAotI2VsaWYgZGVmaW5lZChFWFQyX0JUUkVFX0ZMKQotICAgICAgICB7ICJub2J0cmVlIiwJTCJub2J0cmVlIiwgICAgICAgCUVYVDJfQlRSRUVfRkwsCTAgfSwKKyNpZiBkZWZpbmVkKEZTX0NPTVBSX0ZMKQkvKiAnYycgKi8KKwl7ICJub2NvbXByZXNzIiwJTCJub2NvbXByZXNzIiwgICAgICAgCUZTX0NPTVBSX0ZMLAkwfSwKKyNlbGlmIGRlZmluZWQoRVhUMl9DT01QUl9GTCkKKwl7ICJub2NvbXByZXNzIiwJTCJub2NvbXByZXNzIiwgICAgICAgCUVYVDJfQ09NUFJfRkwsCTB9LAogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEZTX0VDT01QUl9GTCkKLSAgICAgICAgeyAibm9jb21wZXJyIiwJTCJub2NvbXBlcnIiLCAgICAgICAJRlNfRUNPTVBSX0ZMLAkwIH0sCi0jZWxpZiBkZWZpbmVkKEVYVDJfRUNPTVBSX0ZMKQotICAgICAgICB7ICJub2NvbXBlcnIiLAlMIm5vY29tcGVyciIsICAgICAgIAlFWFQyX0VDT01QUl9GTCwJMCB9LAorI2lmIGRlZmluZWQoRlNfTk9BVElNRV9GTCkJLyogJ0EnICovCisJeyAibm9hdGltZSIsCUwibm9hdGltZSIsCQkwLAkJRlNfTk9BVElNRV9GTH0sCisjZWxpZiBkZWZpbmVkKEVYVDJfTk9BVElNRV9GTCkKKwl7ICJub2F0aW1lIiwJTCJub2F0aW1lIiwJCTAsCQlFWFQyX05PQVRJTUVfRkx9LAogI2VuZGlmCi0KLSNpZiBkZWZpbmVkKEZTX0NPTVBSX0ZMKQkJCS8qICdjJyAqLwotICAgICAgICB7ICJub2NvbXByZXNzIiwJTCJub2NvbXByZXNzIiwgICAgICAgCUZTX0NPTVBSX0ZMLAkwIH0sCi0jZWxpZiBkZWZpbmVkKEVYVDJfQ09NUFJfRkwpCQkJLyogJ2MnICovCi0gICAgICAgIHsgIm5vY29tcHJlc3MiLAlMIm5vY29tcHJlc3MiLCAgICAgICAJRVhUMl9DT01QUl9GTCwJMCB9LAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKEZTX05PQVRJTUVfRkwpCQkJLyogJ0EnICovCi0gICAgICAgIHsgIm5vYXRpbWUiLAlMIm5vYXRpbWUiLAkJMCwJCUZTX05PQVRJTUVfRkx9LAotI2VsaWYgZGVmaW5lZChFWFQyX05PQVRJTUVfRkwpCQkJLyogJ0EnICovCi0gICAgICAgIHsgIm5vYXRpbWUiLAlMIm5vYXRpbWUiLAkJMCwJCUVYVDJfTk9BVElNRV9GTH0sCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoRlNfRElSVFlfRkwpCi0gICAgICAgIHsgIm5vY29tcGRpcnR5IixMIm5vY29tcGRpcnR5IiwJCUZTX0RJUlRZX0ZMLAkJMH0sCi0jZWxpZiBkZWZpbmVkKEVYVDJfRElSVFlfRkwpCi0gICAgICAgIHsgIm5vY29tcGRpcnR5IixMIm5vY29tcGRpcnR5IiwJCUVYVDJfRElSVFlfRkwsCQkwfSwKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChGU19DT01QUkJMS19GTCkKLSNpZiBkZWZpbmVkKEZTX05PQ09NUFJfRkwpCi0gICAgICAgIHsgIm5vY29tcHJibGsiLAlMIm5vY29tcHJibGsiLAkJRlNfQ09NUFJCTEtfRkwsIEZTX05PQ09NUFJfRkx9LAotI2Vsc2UKLSAgICAgICAgeyAibm9jb21wcmJsayIsCUwibm9jb21wcmJsayIsCQlGU19DT01QUkJMS19GTCwJMH0sCi0jZW5kaWYKLSNlbGlmIGRlZmluZWQoRVhUMl9DT01QUkJMS19GTCkKLSNpZiBkZWZpbmVkKEVYVDJfTk9DT01QUl9GTCkKLSAgICAgICAgeyAibm9jb21wcmJsayIsCUwibm9jb21wcmJsayIsCQlFWFQyX0NPTVBSQkxLX0ZMLCBFWFQyX05PQ09NUFJfRkx9LAotI2Vsc2UKLSAgICAgICAgeyAibm9jb21wcmJsayIsCUwibm9jb21wcmJsayIsCQlFWFQyX0NPTVBSQkxLX0ZMLAkwfSwKLSNlbmRpZgotI2VuZGlmCi0jaWYgZGVmaW5lZChGU19ESVJTWU5DX0ZMKQotICAgICAgICB7ICJub2RpcnN5bmMiLAlMIm5vZGlyc3luYyIsCQlGU19ESVJTWU5DX0ZMLAkwfSwKKyNpZiBkZWZpbmVkKEZTX0RJUlNZTkNfRkwpCS8qICdEJyAqLworCXsgIm5vZGlyc3luYyIsCUwibm9kaXJzeW5jIiwJCUZTX0RJUlNZTkNfRkwsCQkwfSwKICNlbGlmIGRlZmluZWQoRVhUMl9ESVJTWU5DX0ZMKQotICAgICAgICB7ICJub2RpcnN5bmMiLAlMIm5vZGlyc3luYyIsCQlFWFQyX0RJUlNZTkNfRkwsCTB9LAorCXsgIm5vZGlyc3luYyIsCUwibm9kaXJzeW5jIiwJCUVYVDJfRElSU1lOQ19GTCwJMH0sCiAjZW5kaWYKLSNpZiBkZWZpbmVkKEZTX0lOREVYX0ZMKQotICAgICAgICB7ICJub2hhc2hpZHgiLAlMIm5vaGFzaGlkeCIsCQlGU19JTkRFWF9GTCwJCTB9LAotI2VsaWYgZGVmaW5lZChFWFQyX0lOREVYX0ZMKQotICAgICAgICB7ICJub2hhc2hpZHgiLAlMIm5vaGFzaGlkeCIsCQlFWFQyX0lOREVYX0ZMLAkJMH0sCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEZTX0lNQUdJQ19GTCkKLSAgICAgICAgeyAibm9pbWFnaWMiLAlMIm5vaW1hZ2ljIiwJCUZTX0lNQUdJQ19GTCwJCTB9LAotI2VsaWYgZGVmaW5lZChFWFQyX0lNQUdJQ19GTCkKLSAgICAgICAgeyAibm9pbWFnaWMiLAlMIm5vaW1hZ2ljIiwJCUVYVDJfSU1BR0lDX0ZMLAkJMH0sCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEZTX0pPVVJOQUxfREFUQV9GTCkKLSAgICAgICAgeyAibm9qb3VybmFsIiwJTCJub2pvdXJuYWwiLAkJRlNfSk9VUk5BTF9EQVRBX0ZMLAkwfSwKKyNpZiBkZWZpbmVkKEZTX0pPVVJOQUxfREFUQV9GTCkJLyogJ2onICovCisJeyAibm9qb3VybmFsLWRhdGEiLEwibm9qb3VybmFsLWRhdGEiLAlGU19KT1VSTkFMX0RBVEFfRkwsCTB9LAorCXsgIm5vam91cm5hbCIsCUwibm9qb3VybmFsIiwJCUZTX0pPVVJOQUxfREFUQV9GTCwJMH0sCiAjZWxpZiBkZWZpbmVkKEVYVDNfSk9VUk5BTF9EQVRBX0ZMKQotICAgICAgICB7ICJub2pvdXJuYWwiLAlMIm5vam91cm5hbCIsCQlFWFQzX0pPVVJOQUxfREFUQV9GTCwJMH0sCisJeyAibm9qb3VybmFsLWRhdGEiLEwibm9qb3VybmFsLWRhdGEiLAlFWFQzX0pPVVJOQUxfREFUQV9GTCwJMH0sCisJeyAibm9qb3VybmFsIiwJTCJub2pvdXJuYWwiLAkJRVhUM19KT1VSTkFMX0RBVEFfRkwsCTB9LAogI2VuZGlmCi0jaWYgZGVmaW5lZChGU19TRUNSTV9GTCkKLSAgICAgICAgeyAibm9zZWN1cmVkZWxldGlvbiIsTCJub3NlY3VyZWRlbGV0aW9uIixGU19TRUNSTV9GTCwJCTB9LAorI2lmIGRlZmluZWQoRlNfU0VDUk1fRkwpCS8qICdzJyAqLworCXsgIm5vc2VjZGVsIiwJTCJub3NlY2RlbCIsCQlGU19TRUNSTV9GTCwJCTB9LAorCXsgIm5vc2VjdXJlZGVsZXRpb24iLEwibm9zZWN1cmVkZWxldGlvbiIsRlNfU0VDUk1fRkwsCQkwfSwKICNlbGlmIGRlZmluZWQoRVhUMl9TRUNSTV9GTCkKLSAgICAgICAgeyAibm9zZWN1cmVkZWxldGlvbiIsTCJub3NlY3VyZWRlbGV0aW9uIixFWFQyX1NFQ1JNX0ZMLAkJMH0sCisJeyAibm9zZWNkZWwiLAlMIm5vc2VjZGVsIiwJCUVYVDJfU0VDUk1fRkwsCQkwfSwKKwl7ICJub3NlY3VyZWRlbGV0aW9uIixMIm5vc2VjdXJlZGVsZXRpb24iLEVYVDJfU0VDUk1fRkwsCQkwfSwKICNlbmRpZgotI2lmIGRlZmluZWQoRlNfU1lOQ19GTCkKLSAgICAgICAgeyAibm9zeW5jIiwJTCJub3N5bmMiLAkJRlNfU1lOQ19GTCwJCTB9LAorI2lmIGRlZmluZWQoRlNfU1lOQ19GTCkJCS8qICdTJyAqLworCXsgIm5vc3luYyIsCUwibm9zeW5jIiwJCUZTX1NZTkNfRkwsCQkwfSwKICNlbGlmIGRlZmluZWQoRVhUMl9TWU5DX0ZMKQotICAgICAgICB7ICJub3N5bmMiLAlMIm5vc3luYyIsCQlFWFQyX1NZTkNfRkwsCQkwfSwKKwl7ICJub3N5bmMiLAlMIm5vc3luYyIsCQlFWFQyX1NZTkNfRkwsCQkwfSwKICNlbmRpZgotI2lmIGRlZmluZWQoRlNfTk9UQUlMX0ZMKQotICAgICAgICB7ICJub3RhaWwiLAlMIm5vdGFpbCIsCQkwLAkJRlNfTk9UQUlMX0ZMfSwKKyNpZiBkZWZpbmVkKEZTX05PVEFJTF9GTCkJLyogJ3QnICovCisJeyAibm90YWlsIiwJTCJub3RhaWwiLAkJMCwJCUZTX05PVEFJTF9GTH0sCiAjZWxpZiBkZWZpbmVkKEVYVDJfTk9UQUlMX0ZMKQotICAgICAgICB7ICJub3RhaWwiLAlMIm5vdGFpbCIsCQkwLAkJRVhUMl9OT1RBSUxfRkx9LAorCXsgIm5vdGFpbCIsCUwibm90YWlsIiwJCTAsCQlFWFQyX05PVEFJTF9GTH0sCiAjZW5kaWYKLSNpZiBkZWZpbmVkKEZTX1RPUERJUl9GTCkKLSAgICAgICAgeyAibm90b3BkaXIiLAlMIm5vdG9wZGlyIiwJCUZTX1RPUERJUl9GTCwJCTB9LAorI2lmIGRlZmluZWQoRlNfVE9QRElSX0ZMKQkvKiAnVCcgKi8KKwl7ICJub3RvcGRpciIsCUwibm90b3BkaXIiLAkJRlNfVE9QRElSX0ZMLAkJMH0sCiAjZWxpZiBkZWZpbmVkKEVYVDJfVE9QRElSX0ZMKQotICAgICAgICB7ICJub3RvcGRpciIsCUwibm90b3BkaXIiLAkJRVhUMl9UT1BESVJfRkwsCQkwfSwKKwl7ICJub3RvcGRpciIsCUwibm90b3BkaXIiLAkJRVhUMl9UT1BESVJfRkwsCQkwfSwKICNlbmRpZgotI2lmZGVmIEZTX0VOQ1JZUFRfRkwKLSAgICAgICAgeyAibm9lbmNyeXB0IiwJTCJub2VuY3J5cHQiLAkJRlNfRU5DUllQVF9GTCwJMH0sCisjaWZkZWYgRlNfTk9DT1dfRkwJLyogJ0MnICovCisJeyAibm9jb3ciLAlMIm5vY293IiwJCTAsCUZTX05PQ09XX0ZMfSwKICNlbmRpZgotI2lmZGVmIEZTX0hVR0VfRklMRV9GTAotICAgICAgICB7ICJub2h1Z2VmaWxlIiwJTCJub2h1Z2VmaWxlIiwJCUZTX0hVR0VfRklMRV9GTCwJMH0sCisjaWZkZWYgRlNfUFJPSklOSEVSSVRfRkwJLyogJ1AnICovCisJeyAibm9wcm9qaW5oZXJpdCIsTCJub3Byb2ppbmhlcml0IiwJRlNfUFJPSklOSEVSSVRfRkwsCTB9LAogI2VuZGlmCi0jaWZkZWYgRlNfRVhURU5UX0ZMCi0gICAgICAgIHsgIm5vZXh0ZW50IiwJTCJub2V4dGVudCIsCQlGU19FWFRFTlRfRkwsCTB9LAotI2VuZGlmCi0jaWZkZWYgRlNfRUFfSU5PREVfRkwKLSAgICAgICAgeyAibm9lYWlub2RlIiwJTCJub2VhaW5vZGUiLAkJRlNfRUFfSU5PREVfRkwsCTB9LAotI2VuZGlmCi0jaWZkZWYgRlNfRU9GQkxPQ0tTX0ZMCi0gICAgICAgIHsgIm5vZW9mYmxvY2tzIixMIm5vZW9mYmxvY2tzIiwJCUZTX0VPRkJMT0NLU19GTCwJMH0sCi0jZW5kaWYKLSNpZmRlZiBGU19OT0NPV19GTAotICAgICAgICB7ICJub2NvdyIsCUwibm9jb3ciLAkJRlNfTk9DT1dfRkwsCTB9LAotI2VuZGlmCi0jaWZkZWYgRlNfSU5MSU5FX0RBVEFfRkwKLSAgICAgICAgeyAibm9pbmxpbmVkYXRhIixMIm5vaW5saW5lZGF0YSIsCUZTX0lOTElORV9EQVRBX0ZMLAkwfSwKLSNlbmRpZgotI2lmZGVmIEZTX1BST0pJTkhFUklUX0ZMCi0gICAgICAgIHsgIm5vcHJvamluaGVyaXQiLEwibm9wcm9qaW5oZXJpdCIsCUZTX1BST0pJTkhFUklUX0ZMLAkwfSwKLSNlbmRpZgotI2lmIGRlZmluZWQoRlNfUkVTRVJWRURfRkwpCi0gICAgICAgIHsgIm5vcmVzZXJ2ZWQiLAlMIm5vcmVzZXJ2ZWQiLAkJRlNfUkVTRVJWRURfRkwsCTB9LAotI2VsaWYgZGVmaW5lZChFWFQyX1JFU0VSVkVEX0ZMKQotICAgICAgICB7ICJub3Jlc2VydmVkIiwJTCJub3Jlc2VydmVkIiwJCUVYVDJfUkVTRVJWRURfRkwsCTB9LAotI2VuZGlmCi0JeyBOVUxMLAkJTlVMTCwJCQkwLAkJMCB9CisJeyBOVUxMLAkJTlVMTCwJCQkwLAkJMH0KIH07CiAKIC8qCkBAIC0xODQ4LDcgKzE4NzYsNyBAQAogCiAJYml0cyA9IGJpdHNldCB8IGJpdGNsZWFyOwogCWxlbmd0aCA9IDA7Ci0JZm9yIChmbGFnID0gZmxhZ3M7IGZsYWctPm5hbWUgIT0gTlVMTDsgZmxhZysrKQorCWZvciAoZmxhZyA9IGZpbGVmbGFnczsgZmxhZy0+bmFtZSAhPSBOVUxMOyBmbGFnKyspCiAJCWlmIChiaXRzICYgKGZsYWctPnNldCB8IGZsYWctPmNsZWFyKSkgewogCQkJbGVuZ3RoICs9IHN0cmxlbihmbGFnLT5uYW1lKSArIDE7CiAJCQliaXRzICY9IH4oZmxhZy0+c2V0IHwgZmxhZy0+Y2xlYXIpOwpAQCAtMTg2MSw3ICsxODg5LDcgQEAKIAkJcmV0dXJuIChOVUxMKTsKIAogCWRwID0gc3RyaW5nOwotCWZvciAoZmxhZyA9IGZsYWdzOyBmbGFnLT5uYW1lICE9IE5VTEw7IGZsYWcrKykgeworCWZvciAoZmxhZyA9IGZpbGVmbGFnczsgZmxhZy0+bmFtZSAhPSBOVUxMOyBmbGFnKyspIHsKIAkJaWYgKGJpdHNldCAmIGZsYWctPnNldCB8fCBiaXRjbGVhciAmIGZsYWctPmNsZWFyKSB7CiAJCQlzcCA9IGZsYWctPm5hbWUgKyAyOwogCQl9IGVsc2UgaWYgKGJpdHNldCAmIGZsYWctPmNsZWFyICB8fCAgYml0Y2xlYXIgJiBmbGFnLT5zZXQpIHsKQEAgLTE5MTMsNyArMTk0MSw3IEBACiAJCSAgICAqZW5kICE9ICcgJyAgJiYgICplbmQgIT0gJywnKQogCQkJZW5kKys7CiAJCWxlbmd0aCA9IGVuZCAtIHN0YXJ0OwotCQlmb3IgKGZsYWcgPSBmbGFnczsgZmxhZy0+bmFtZSAhPSBOVUxMOyBmbGFnKyspIHsKKwkJZm9yIChmbGFnID0gZmlsZWZsYWdzOyBmbGFnLT5uYW1lICE9IE5VTEw7IGZsYWcrKykgewogCQkJc2l6ZV90IGZsYWdfbGVuZ3RoID0gc3RybGVuKGZsYWctPm5hbWUpOwogCQkJaWYgKGxlbmd0aCA9PSBmbGFnX2xlbmd0aAogCQkJICAgICYmIG1lbWNtcChzdGFydCwgZmxhZy0+bmFtZSwgbGVuZ3RoKSA9PSAwKSB7CkBAIC0xOTgxLDcgKzIwMDksNyBAQAogCQkgICAgKmVuZCAhPSBMJyAnICAmJiAgKmVuZCAhPSBMJywnKQogCQkJZW5kKys7CiAJCWxlbmd0aCA9IGVuZCAtIHN0YXJ0OwotCQlmb3IgKGZsYWcgPSBmbGFnczsgZmxhZy0+d25hbWUgIT0gTlVMTDsgZmxhZysrKSB7CisJCWZvciAoZmxhZyA9IGZpbGVmbGFnczsgZmxhZy0+d25hbWUgIT0gTlVMTDsgZmxhZysrKSB7CiAJCQlzaXplX3QgZmxhZ19sZW5ndGggPSB3Y3NsZW4oZmxhZy0+d25hbWUpOwogCQkJaWYgKGxlbmd0aCA9PSBmbGFnX2xlbmd0aAogCQkJICAgICYmIHdtZW1jbXAoc3RhcnQsIGZsYWctPnduYW1lLCBsZW5ndGgpID09IDApIHsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VudHJ5LmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeS5oCmluZGV4IGE5MTM0ZjYuLjAwNTNmYWEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VudHJ5LmgKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnkuaApAQCAtMzAsNyArMzAsNyBAQAogI2RlZmluZQlBUkNISVZFX0VOVFJZX0hfSU5DTFVERUQKIAogLyogTm90ZTogQ29tcGlsZXIgd2lsbCBjb21wbGFpbiBpZiB0aGlzIGRvZXMgbm90IG1hdGNoIGFyY2hpdmUuaCEgKi8KLSNkZWZpbmUJQVJDSElWRV9WRVJTSU9OX05VTUJFUiAzMDAzMDAzCisjZGVmaW5lCUFSQ0hJVkVfVkVSU0lPTl9OVU1CRVIgMzAwNDAwMgogCiAvKgogICogTm90ZTogYXJjaGl2ZV9lbnRyeS5oIGlzIGZvciB1c2Ugb3V0c2lkZSBvZiBsaWJhcmNoaXZlOyB0aGUKQEAgLTE4OCw2ICsxODgsMTMgQEAKICNkZWZpbmUgQUVfSUZJRk8JKChfX0xBX01PREVfVCkwMDEwMDAwKQogCiAvKgorICogU3ltbGluayB0eXBlcworICovCisjZGVmaW5lIEFFX1NZTUxJTktfVFlQRV9VTkRFRklORUQJMAorI2RlZmluZSBBRV9TWU1MSU5LX1RZUEVfRklMRQkJMQorI2RlZmluZSBBRV9TWU1MSU5LX1RZUEVfRElSRUNUT1JZCTIKKworLyoKICAqIEJhc2ljIG9iamVjdCBtYW5pcHVsYXRpb24KICAqLwogCkBAIC0yNzIsNiArMjc5LDcgQEAKIF9fTEFfREVDTCBjb25zdCBjaGFyCSphcmNoaXZlX2VudHJ5X3N0cm1vZGUoc3RydWN0IGFyY2hpdmVfZW50cnkgKik7CiBfX0xBX0RFQ0wgY29uc3QgY2hhcgkqYXJjaGl2ZV9lbnRyeV9zeW1saW5rKHN0cnVjdCBhcmNoaXZlX2VudHJ5ICopOwogX19MQV9ERUNMIGNvbnN0IGNoYXIJKmFyY2hpdmVfZW50cnlfc3ltbGlua191dGY4KHN0cnVjdCBhcmNoaXZlX2VudHJ5ICopOworX19MQV9ERUNMIGludAkJIGFyY2hpdmVfZW50cnlfc3ltbGlua190eXBlKHN0cnVjdCBhcmNoaXZlX2VudHJ5ICopOwogX19MQV9ERUNMIGNvbnN0IHdjaGFyX3QJKmFyY2hpdmVfZW50cnlfc3ltbGlua193KHN0cnVjdCBhcmNoaXZlX2VudHJ5ICopOwogX19MQV9ERUNMIGxhX2ludDY0X3QJIGFyY2hpdmVfZW50cnlfdWlkKHN0cnVjdCBhcmNoaXZlX2VudHJ5ICopOwogX19MQV9ERUNMIGNvbnN0IGNoYXIJKmFyY2hpdmVfZW50cnlfdW5hbWUoc3RydWN0IGFyY2hpdmVfZW50cnkgKik7CkBAIC0zNDcsNiArMzU1LDcgQEAKIF9fTEFfREVDTCB2b2lkCWFyY2hpdmVfZW50cnlfY29weV9zb3VyY2VwYXRoKHN0cnVjdCBhcmNoaXZlX2VudHJ5ICosIGNvbnN0IGNoYXIgKik7CiBfX0xBX0RFQ0wgdm9pZAlhcmNoaXZlX2VudHJ5X2NvcHlfc291cmNlcGF0aF93KHN0cnVjdCBhcmNoaXZlX2VudHJ5ICosIGNvbnN0IHdjaGFyX3QgKik7CiBfX0xBX0RFQ0wgdm9pZAlhcmNoaXZlX2VudHJ5X3NldF9zeW1saW5rKHN0cnVjdCBhcmNoaXZlX2VudHJ5ICosIGNvbnN0IGNoYXIgKik7CitfX0xBX0RFQ0wgdm9pZAlhcmNoaXZlX2VudHJ5X3NldF9zeW1saW5rX3R5cGUoc3RydWN0IGFyY2hpdmVfZW50cnkgKiwgaW50KTsKIF9fTEFfREVDTCB2b2lkCWFyY2hpdmVfZW50cnlfc2V0X3N5bWxpbmtfdXRmOChzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqLCBjb25zdCBjaGFyICopOwogX19MQV9ERUNMIHZvaWQJYXJjaGl2ZV9lbnRyeV9jb3B5X3N5bWxpbmsoc3RydWN0IGFyY2hpdmVfZW50cnkgKiwgY29uc3QgY2hhciAqKTsKIF9fTEFfREVDTCB2b2lkCWFyY2hpdmVfZW50cnlfY29weV9zeW1saW5rX3coc3RydWN0IGFyY2hpdmVfZW50cnkgKiwgY29uc3Qgd2NoYXJfdCAqKTsKQEAgLTUxMiw5ICs1MjEsNiBAQAogX19MQV9ERUNMIGludAkgYXJjaGl2ZV9lbnRyeV9hY2xfbmV4dChzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqLCBpbnQgLyogd2FudF90eXBlICovLAogCSAgICBpbnQgKiAvKiB0eXBlICovLCBpbnQgKiAvKiBwZXJtc2V0ICovLCBpbnQgKiAvKiB0YWcgKi8sCiAJICAgIGludCAqIC8qIHF1YWwgKi8sIGNvbnN0IGNoYXIgKiogLyogbmFtZSAqLyk7Ci1fX0xBX0RFQ0wgaW50CSBhcmNoaXZlX2VudHJ5X2FjbF9uZXh0X3coc3RydWN0IGFyY2hpdmVfZW50cnkgKiwgaW50IC8qIHdhbnRfdHlwZSAqLywKLQkgICAgaW50ICogLyogdHlwZSAqLywgaW50ICogLyogcGVybXNldCAqLywgaW50ICogLyogdGFnICovLAotCSAgICBpbnQgKiAvKiBxdWFsICovLCBjb25zdCB3Y2hhcl90ICoqIC8qIG5hbWUgKi8pOwogCiAvKgogICogQ29uc3RydWN0IGEgdGV4dC1mb3JtYXQgQUNMLiAgVGhlIGZsYWdzIGFyZ3VtZW50IGlzIGEgYml0bWFzayB0aGF0CkBAIC02ODksNyArNjk1LDYgQEAKICAgICBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqKiwgc3RydWN0IGFyY2hpdmVfZW50cnkgKiopOwogX19MQV9ERUNMIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICphcmNoaXZlX2VudHJ5X3BhcnRpYWxfbGlua3MoCiAgICAgc3RydWN0IGFyY2hpdmVfZW50cnlfbGlua3Jlc29sdmVyICpyZXMsIHVuc2lnbmVkIGludCAqbGlua3MpOwotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfYWNsLjMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9hY2wuMwppbmRleCA1MzRkYmZhLi41MGRkNjQyIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9hY2wuMworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9hY2wuMwpAQCAtMzQsNyArMzQsNiBAQAogLk5tIGFyY2hpdmVfZW50cnlfYWNsX2Zyb21fdGV4dCAsCiAuTm0gYXJjaGl2ZV9lbnRyeV9hY2xfZnJvbV90ZXh0X3cgLAogLk5tIGFyY2hpdmVfZW50cnlfYWNsX25leHQgLAotLk5tIGFyY2hpdmVfZW50cnlfYWNsX25leHRfdyAsCiAuTm0gYXJjaGl2ZV9lbnRyeV9hY2xfcmVzZXQgLAogLk5tIGFyY2hpdmVfZW50cnlfYWNsX3RvX3RleHQgLAogLk5tIGFyY2hpdmVfZW50cnlfYWNsX3RvX3RleHRfdyAsCkBAIC04OSwxNiArODgsNiBAQAogLkZhICJjb25zdCBjaGFyICoqcmV0X25hbWUiCiAuRmMKIC5GdCBpbnQKLS5GbyBhcmNoaXZlX2VudHJ5X2FjbF9uZXh0X3cKLS5GYSAic3RydWN0IGFyY2hpdmVfZW50cnkgKmEiCi0uRmEgImludCB0eXBlIgotLkZhICJpbnQgKnJldF90eXBlIgotLkZhICJpbnQgKnJldF9wZXJtc2V0IgotLkZhICJpbnQgKnJldF90YWciCi0uRmEgImludCAqcmV0X3F1YWwiCi0uRmEgImNvbnN0IHdjaGFyX3QgKipyZXRfbmFtZSIKLS5GYwotLkZ0IGludAogLkZuIGFyY2hpdmVfZW50cnlfYWNsX3Jlc2V0ICJzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqYSIgImludCB0eXBlIgogLkZ0IGNoYXIgKgogLkZvIGFyY2hpdmVfZW50cnlfYWNsX3RvX3RleHQKQEAgLTExOCwxNSArMTA3LDE2IEBACiAuU2ggREVTQ1JJUFRJT04KIFRoZQogLkRxIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKQotZXh0ZW5kIHRoZSBzdGFuZGFyZCBVbml4IHBlcnNzaW9uIG1vZGVsLgorZXh0ZW5kIHRoZSBzdGFuZGFyZCBVbml4IHBlcm1pc3Npb24gbW9kZWwuCiBUaGUgQUNMIGludGVyZmFjZSBvZgogLk5tIGxpYmFyY2hpdmUKLXN1cHBvcnRzIGJvdGggUE9TSVguMWUgYW5kIE5GU3Y0IHN0eWxlIEFDTHMuIFVzZSBvZiBBQ0xzIGlzIHJlc3RyaWN0ZWQgYnkKK3N1cHBvcnRzIGJvdGggUE9TSVguMWUgYW5kIE5GU3Y0IHN0eWxlIEFDTHMuCitVc2Ugb2YgQUNMcyBpcyByZXN0cmljdGVkIGJ5CiB2YXJpb3VzIGxldmVscyBvZiBBQ0wgc3VwcG9ydCBpbiBvcGVyYXRpbmcgc3lzdGVtcywgZmlsZSBzeXN0ZW1zIGFuZCBhcmNoaXZlCiBmb3JtYXRzLgogLlNzIFBPU0lYLjFlIEFjY2VzcyBDb250cm9sIExpc3RzCiBBIFBPU0lYLjFlIEFDTCBjb25zaXN0cyBvZiBhIG51bWJlciBvZiBpbmRlcGVuZGVudCBlbnRyaWVzLgotRWFjaCBlbnRyeSBzcGVjaWZpZXMgdGhlIHBlcm1pc3Npb24gc2V0IGFzIGJpdG1hc2sgb2YgYmFzaWMgcGVybWlzc2lvbnMuCitFYWNoIGVudHJ5IHNwZWNpZmllcyB0aGUgcGVybWlzc2lvbiBzZXQgYXMgYSBiaXRtYXNrIG9mIGJhc2ljIHBlcm1pc3Npb25zLgogVmFsaWQgcGVybWlzc2lvbnMgaW4gdGhlCiAuRmEgcGVybXNldAogYXJlOgpAQCAtMTQ3LDEzICsxMzcsMTMgQEAKIC5JdCBEdiBBUkNISVZFX0VOVFJZX0FDTF9VU0VSX09CSgogVGhlIG93bmVyIG9mIHRoZSBmaWxlLgogLkl0IER2IEFSQ0hJVkVfRU5UUllfQUNMX0dST1VQCi1UaGUgZ3JvdXAgc3BlY2llZCBieSB0aGUgbmFtZSBmaWVsZC4KK1RoZSBncm91cCBzcGVjaWZpZWQgYnkgdGhlIG5hbWUgZmllbGQuCiAuSXQgRHYgQVJDSElWRV9FTlRSWV9BQ0xfR1JPVVBfT0JKCi1UaGUgZ3JvdXAgd2hvIG93bnMgdGhlIGZpbGUuCitUaGUgZ3JvdXAgd2hpY2ggb3ducyB0aGUgZmlsZS4KIC5JdCBEdiBBUkNISVZFX0VOVFJZX0FDTF9NQVNLCiBUaGUgbWF4aW11bSBwZXJtaXNzaW9ucyB0byBiZSBvYnRhaW5lZCB2aWEgZ3JvdXAgcGVybWlzc2lvbnMuCiAuSXQgRHYgQVJDSElWRV9FTlRSWV9BQ0xfT1RIRVIKLUFueSBwcmluY2lwYWwgd2hvIGlzIG5vdCBmaWxlIG93bmVyIG9yIGEgbWVtYmVyIG9mIHRoZSBvd25pbmcgZ3JvdXAuCitBbnkgcHJpbmNpcGFsIHdobyBpcyBub3QgdGhlIGZpbGUgb3duZXIgb3IgYSBtZW1iZXIgb2YgdGhlIG93bmluZyBncm91cC4KIC5FbAogLlBwCiBUaGUgcHJpbmNpcGFscwpAQCAtMTY0LDEyICsxNTQsMTIgQEAKIGFyZSBlcXVpdmFsZW50IHRvIHVzZXIsIGdyb3VwIGFuZCBvdGhlciBpbiB0aGUgY2xhc3NpYyBVbml4IHBlcm1pc3Npb24KIG1vZGVsIGFuZCBzcGVjaWZ5IG5vbi1leHRlbmRlZCBBQ0wgZW50cmllcy4KIC5QcAotQWxsIGZpbGVzIHdpdGggaGF2ZSBhbiBhY2Nlc3MgQUNMCitBbGwgZmlsZXMgaGF2ZSBhbiBhY2Nlc3MgQUNMCiAuUHEgRHYgQVJDSElWRV9FTlRSWV9BQ0xfVFlQRV9BQ0NFU1MgLgogVGhpcyBzcGVjaWZpZXMgdGhlIHBlcm1pc3Npb25zIHJlcXVpcmVkIGZvciBhY2Nlc3MgdG8gdGhlIGZpbGUgaXRzZWxmLgogRGlyZWN0b3JpZXMgaGF2ZSBhbiBhZGRpdGlvbmFsIEFDTAogLlBxIER2IEFSQ0hJVkVfRU5UUllfQUNMX1RZUEVfREVGQVVMVCAsCi13aGljaCBjb250cm9scyB0aGUgaW5pdGlhbCBhY2Nlc3MgQUNMIGZvciBuZXdseSBjcmVhdGVkIGRpcmVjdG9yeSBlbnRyaWVzLgord2hpY2ggY29udHJvbHMgdGhlIGluaXRpYWwgYWNjZXNzIEFDTCBmb3IgbmV3bHktY3JlYXRlZCBkaXJlY3RvcnkgZW50cmllcy4KIC5TcyBORlN2NCBBY2Nlc3MgQ29udHJvbCBMaXN0cwogQSBORlN2NCBBQ0wgY29uc2lzdHMgb2YgbXVsdGlwbGUgaW5kaXZpZHVhbCBlbnRyaWVzIGNhbGxlZCBBY2Nlc3MgQ29udHJvbAogRW50cmllcyAoQUNFcykuCkBAIC0xOTcsMTEgKzE4NywxMSBAQAogLkl0IER2IEFSQ0hJVkVfRU5UUllfQUNMX1VTRVJfT0JKCiBUaGUgb3duZXIgb2YgdGhlIGZpbGUuCiAuSXQgRHYgQVJDSElWRV9FTlRSWV9BQ0xfR1JPVVAKLVRoZSBncm91cCBzcGVjaWVkIGJ5IHRoZSBuYW1lIGZpZWxkLgorVGhlIGdyb3VwIHNwZWNpZmllZCBieSB0aGUgbmFtZSBmaWVsZC4KIC5JdCBEdiBBUkNISVZFX0VOVFJZX0FDTF9HUk9VUF9PQkoKLVRoZSBncm91cCB3aG8gb3ducyB0aGUgZmlsZS4KK1RoZSBncm91cCB3aGljaCBvd25zIHRoZSBmaWxlLgogLkl0IER2IEFSQ0hJVkVfRU5UUllfQUNMX0VWRVJZT05FCi1BbnkgcHJpbmNpcGFsIHdobyBpcyBub3QgZmlsZSBvd25lciBvciBhIG1lbWJlciBvZiB0aGUgb3duaW5nIGdyb3VwLgorQW55IHByaW5jaXBhbCB3aG8gaXMgbm90IHRoZSBmaWxlIG93bmVyIG9yIGEgbWVtYmVyIG9mIHRoZSBvd25pbmcgZ3JvdXAuCiAuRWwKIC5QcAogRW50cmllcyB3aXRoIHRoZQpAQCAtMjE2LDkgKzIwNiwxMCBAQAogLlBwCiBORlN2NCBBQ0UgcGVybWlzc2lvbnMgYW5kIGZsYWdzIGFyZSBzdG9yZWQgaW4gdGhlIHNhbWUKIC5GYSBwZXJtc2V0Ci1iaXRmaWVsZC4gU29tZSBwZXJtaXNzaW9ucyBzaGFyZSB0aGUgc2FtZSBjb25zdGFudCBhbmQgcGVybWlzc2lvbiBjaGFyYWN0ZXIgYnV0Ci1oYXZlIGRpZmZlcmVudCBlZmZlY3Qgb24gZGlyZWN0b3JpZXMgdGhhbiBvbiBmaWxlcy4gVGhlIGZvbGxvd2luZyBBQ0UKLXBlcm1pc3Npb25zIGFyZSBzdXBwb3J0ZWQ6CitiaXRmaWVsZC4KK1NvbWUgcGVybWlzc2lvbnMgc2hhcmUgdGhlIHNhbWUgY29uc3RhbnQgYW5kIHBlcm1pc3Npb24gY2hhcmFjdGVyCitidXQgaGF2ZSBkaWZmZXJlbnQgZWZmZWN0IG9uIGRpcmVjdG9yaWVzIHRoYW4gb24gZmlsZXMuCitUaGUgZm9sbG93aW5nIEFDRSBwZXJtaXNzaW9ucyBhcmUgc3VwcG9ydGVkOgogLkJsIC10YWcgLW9mZnNldCBpbmRlbnQgLWNvbXBhY3QgLXdpZHRoIEFSQ0hJVgogLkl0IER2IEFSQ0hJVkVfRU5UUllfQUNMX1JFQURfREFUQSAoIFN5IHIgKQogUmVhZCBkYXRhIChmaWxlKS4KQEAgLTI2NSw3ICsyNTYsOCBAQAogLkl0IER2IEFSQ0hJVkVfRU5UUllfQUNMX0VOVFJZX0lOSEVSSVRfT05MWSAoIFN5IGkgKQogT25seSBpbmhlcml0LCBkbyBub3QgYXBwbHkgdGhlIHBlcm1pc3Npb24gb24gdGhlIGRpcmVjdG9yeSBpdHNlbGYuCiAuSXQgRHYgQVJDSElWRV9FTlRSWV9BQ0xfRU5UUllfTk9fUFJPUEFHQVRFX0lOSEVSSVQgKCBTeSBuICkKLURvIG5vdCBwcm9wYWdhdGUgaW5oZXJpdCBmbGFncy4gT25seSBmaXJzdC1sZXZlbCBlbnRyaWVzIGluaGVyaXQgQUNMcy4KK0RvIG5vdCBwcm9wYWdhdGUgaW5oZXJpdCBmbGFncy4KK09ubHkgZmlyc3QtbGV2ZWwgZW50cmllcyBpbmhlcml0IEFDTHMuCiAuSXQgRHYgQVJDSElWRV9FTlRSWV9BQ0xfRU5UUllfU1VDQ0VTU0ZVTF9BQ0NFU1MgKCBTeSBTICkKIFRyaWdnZXIgYWxhcm0gb3IgYXVkaXQgb24gc3VjY2Vzc2Z1bCBhY2Nlc3MuCiAuSXQgRHYgQVJDSElWRV9FTlRSWV9BQ0xfRU5UUllfRkFJTEVEX0FDQ0VTUyAoIFN5IEYgKQpAQCAtMjc5LDggKzI3MSw4IEBACiAuRm4gYXJjaGl2ZV9lbnRyeV9hY2xfYWRkX2VudHJ5X3cKIGFkZCBhIHNpbmdsZSBBQ0wgZW50cnkuCiBGb3IgdGhlIGFjY2VzcyBBQ0wgYW5kIG5vbi1leHRlbmRlZCBwcmluY2lwYWxzLCB0aGUgY2xhc3NpYyBVbml4IHBlcm1pc3Npb25zCi1hcmUgdXBkYXRlZC4gQW4gYXJjaGl2ZSBlbnRyeSBjYW5ub3QgY29udGFpbiBib3RoIFBPU0lYLjFlIGFuZCBORlN2NCBBQ0wKLWVudHJpZXMuCithcmUgdXBkYXRlZC4KK0FuIGFyY2hpdmUgZW50cnkgY2Fubm90IGNvbnRhaW4gYm90aCBQT1NJWC4xZSBhbmQgTkZTdjQgQUNMIGVudHJpZXMuCiAuUHAKIC5GbiBhcmNoaXZlX2VudHJ5X2FjbF9jbGVhcgogcmVtb3ZlcyBhbGwgQUNMIGVudHJpZXMgYW5kIHJlc2V0cyB0aGUgZW51bWVyYXRpb24gcG9pbnRlci4KQEAgLTMwMCw3ICsyOTIsOCBAQAogLkl0IER2IEFSQ0hJVkVfRU5UUllfQUNMX1RZUEVfQVVESVQKIC5JdCBEdiBBUkNISVZFX0VOVFJZX0FDTF9UWVBFX0FMQVJNCiAuRWwKLWZvciBORlN2NCBBQ0xzLiBGb3IgUE9TSVguMWUgQUNMcyBpZgorZm9yIE5GU3Y0IEFDTHMuCitGb3IgUE9TSVguMWUgQUNMcyBpZgogLkR2IEFSQ0hJVkVfRU5UUllfQUNMX1RZUEVfQUNDRVNTCiBpcyBpbmNsdWRlZCBhbmQgYXQgbGVhc3Qgb25lIGV4dGVuZGVkIEFDTCBlbnRyeSBpcyBmb3VuZCwKIHRoZSB0aHJlZSBub24tZXh0ZW5kZWQgQUNMcyBhcmUgYWRkZWQuCkBAIC0zMTIsNyArMzA1LDggQEAKIC5QcSBvciBtZXJnZSB3aXRoIGV4aXN0aW5nCiBBQ0wgZW50cmllcyBmcm9tCiAuUHEgd2lkZQotdGV4dC4gVGhlIGFyZ3VtZW50Cit0ZXh0LgorVGhlIGFyZ3VtZW50CiAuRmEgdHlwZQogbWF5IHRha2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogLkJsIC10YWcgLW9mZnNldCBpbmRlbnQgLWNvbXBhY3QgLXdpZHRoICJBUkNISVZFX0VOVFJZX0FDTF9UWVBFX0RFRkFVTFQiCkBAIC0zMjIsMTEgKzMxNiwxMyBAQAogLkVsCiBTdXBwb3J0cyBhbGwgZm9ybWF0cyB0aGF0IGNhbiBiZSBjcmVhdGVkIHdpdGgKIC5GbiBhcmNoaXZlX2VudHJ5X2FjbF90b190ZXh0Ci1vciByZXNwZWN0aXZlCitvciByZXNwZWN0aXZlbHkKIC5GbiBhcmNoaXZlX2VudHJ5X2FjbF90b190ZXh0X3cgLgotRXhpc3RpbmcgQUNMIGVudHJpZXMgYXJlIHByZXNlcnZlZC4gVG8gZ2V0IGEgY2xlYW4gbmV3IEFDTCBmcm9tIHRleHQKK0V4aXN0aW5nIEFDTCBlbnRyaWVzIGFyZSBwcmVzZXJ2ZWQuCitUbyBnZXQgYSBjbGVhbiBuZXcgQUNMIGZyb20gdGV4dAogLkZuIGFyY2hpdmVfZW50cnlfYWNsX2NsZWFyCi1tdXN0IGJlIGNhbGxlZCBmaXJzdC4gRW50cmllcyBwcmVmaXhlZCB3aXRoCittdXN0IGJlIGNhbGxlZCBmaXJzdC4KK0VudHJpZXMgcHJlZml4ZWQgd2l0aAogLkRxIGRlZmF1bHQ6CiBhcmUgdHJlYXRlZCBhcwogLkR2IEFSQ0hJVkVfRU5UUllfQUNMX1RZUEVfREVGQVVMVApAQCAtMzQyLDggKzMzOCw2IEBACiBhcmUgc2tpcHBlZC4KIC5QcAogLkZuIGFyY2hpdmVfZW50cnlfYWNsX25leHQKLWFuZAotLkZuIGFyY2hpdmVfZW50cnlfYWNsX25leHRfdwogcmV0dXJuIHRoZSBuZXh0IGVudHJ5IG9mIHRoZSBBQ0wgbGlzdC4KIFRoaXMgZnVuY3Rpb25zIG1heSBvbmx5IGJlIGNhbGxlZCBhZnRlcgogLkZuIGFyY2hpdmVfZW50cnlfYWNsX3Jlc2V0CkBAIC0zNTEsMTAgKzM0NSw4IEBACiAuUHAKIC5GbiBhcmNoaXZlX2VudHJ5X2FjbF9yZXNldAogcHJlcGFyZSByZWFkaW5nIHRoZSBsaXN0IG9mIEFDTCBlbnRyaWVzIHdpdGgKLS5GbiBhcmNoaXZlX2VudHJ5X2FjbF9uZXh0Ci1vcgotLkZuIGFyY2hpdmVfZW50cnlfYWNsX25leHRfdyAuCi1UaGUgZnVuY3Rpb24gcmV0dXJucyBlaXRoZXIgMCwgaWYgbm8gbm9uLWV4dGVuZGVkIEFDTHMgYXJlIGZvdW5kLgorLkZuIGFyY2hpdmVfZW50cnlfYWNsX25leHQgLgorVGhlIGZ1bmN0aW9uIHJldHVybnMgMCBpZiBubyBub24tZXh0ZW5kZWQgQUNMcyBhcmUgZm91bmQuCiBJbiB0aGlzIGNhc2UsIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgc2hvdWxkIGJlIG9idGFpbmVkIGJ5CiAuWHIgYXJjaGl2ZV9lbnRyeV9tb2RlIDMKIG9yIHNldCB1c2luZwpAQCAtMzY3LDcgKzM1OSw4IEBACiAuRm4gYXJjaGl2ZV9lbnRyeV9hY2xfdG9fdGV4dF93CiBjb252ZXJ0IHRoZSBBQ0wgZW50cmllcyBmb3IgdGhlIGdpdmVuIHR5cGUgaW50byBhCiAuUHEgd2lkZQotc3RyaW5nIG9mIEFDTCBlbnRyaWVzIHNlcGFyYXRlZCBieSBuZXdsaW5lLiBJZiB0aGUgcG9pbnRlcgorc3RyaW5nIG9mIEFDTCBlbnRyaWVzIHNlcGFyYXRlZCBieSBuZXdsaW5lLgorSWYgdGhlIHBvaW50ZXIKIC5GYSBsZW5fcAogaXMgbm90IE5VTEwsIHRoZW4gdGhlIGZ1bmN0aW9uIHNoYWxsIHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcKIC5QcSBub3QgaW5jbHVkaW5nIHRoZSBOVUxMIHRlcm1pbmF0b3IKQEAgLTQxNSw3ICs0MDgsOCBAQAogLkRxIGRlZmF1bHQ6IC4KIC5QcAogLkZuIGFyY2hpdmVfZW50cnlfYWNsX3R5cGVzCi1nZXQgQUNMIGVudHJ5IHR5cGVzIGNvbnRhaW5lZCBpbiBhbiBhcmNoaXZlIGVudHJ5J3MgQUNMLiBBcyBQT1NJWC4xZSBhbmQgTkZTdjQKK2dldCBBQ0wgZW50cnkgdHlwZXMgY29udGFpbmVkIGluIGFuIGFyY2hpdmUgZW50cnkncyBBQ0wuCitBcyBQT1NJWC4xZSBhbmQgTkZTdjQKIEFDTCBlbnRyaWVzIGNhbm5vdCBiZSBtaXhlZCwgdGhpcyBmdW5jdGlvbiBpcyBhIHZlcnkgZWZmaWNpZW50IHdheSB0byBkZXRlY3QgaWYKIGFuIEFDTCBhbHJlYWR5IGNvbnRhaW5zIFBPU0lYLjFlIG9yIE5GU3Y0IEFDTCBlbnRyaWVzLgogLlNoIFJFVFVSTiBWQUxVRVMKQEAgLTQzOCw5ICs0MzIsNyBAQAogaWYgb25lIG9yIG1vcmUgZW50cmllcyB3ZXJlIGludmFsaWQgb3Igbm9uLXBhcnNlYWJsZS4KIC5QcAogLkZuIGFyY2hpdmVfZW50cnlfYWNsX25leHQKLWFuZAotLkZuIGFyY2hpdmVfZW50cnlfYWNsX25leHRfdwotcmV0dXJuCityZXR1cm5zCiAuRHYgQVJDSElWRV9PSwogb24gc3VjY2VzcywKIC5EdiBBUkNISVZFX0VPRgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfbG9jYWxlLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9sb2NhbGUuaAppbmRleCA0NDU1MGM1Li44MDNjMDM2IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9sb2NhbGUuaAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9sb2NhbGUuaApAQCAtMjUsMTMgKzI1LDEzIEBACiAgKiAkRnJlZUJTRCQKICAqLwogCisjaWZuZGVmIEFSQ0hJVkVfRU5UUllfTE9DQUxFX0hfSU5DTFVERUQKKyNkZWZpbmUgQVJDSElWRV9FTlRSWV9MT0NBTEVfSF9JTkNMVURFRAorCiAjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAogI2Vycm9yIFRoaXMgaGVhZGVyIGlzIG9ubHkgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHRvIGxpYmFyY2hpdmUuCiAjZW5kaWYKIAotI2lmbmRlZiBBUkNISVZFX0VOVFJZX0xPQ0FMRV9IX0lOQ0xVREVECi0jZGVmaW5lCUFSQ0hJVkVfRU5UUllfTE9DQUxFX0hfSU5DTFVERUQKLQogc3RydWN0IGFyY2hpdmVfZW50cnk7CiBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmdfY29udjsKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfbWlzYy4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfbWlzYy4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYWI3ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9taXNjLjMKQEAgLTAsMCArMSw2MyBAQAorLlwiIENvcHlyaWdodCAoYykgMjAxOSBNYXJ0aW4gTWF0dXNrYQorLlwiIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisuXCIKKy5cIiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy5cIiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy5cIiBhcmUgbWV0OgorLlwiIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLlwiIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLlwiICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisuXCIKKy5cIiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisuXCIgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisuXCIgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy5cIiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLlwiIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisuXCIgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKy5cIiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKy5cIiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLlwiIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy5cIiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisuXCIgU1VDSCBEQU1BR0UuCisuXCIKKy5EZCBBcHJpbCAxNSwgMjAxOQorLkR0IEFSQ0hJVkVfRU5UUllfTUlTQyAzCisuT3MKKy5TaCBOQU1FCisuTm0gYXJjaGl2ZV9lbnRyeV9zeW1saW5rX3R5cGUgLAorLk5tIGFyY2hpdmVfZW50cnlfc2V0X3N5bWxpbmtfdHlwZQorLk5kIG1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgcHJvcGVydGllcyBvZiBhcmNoaXZlX2VudHJ5CisuU2ggTElCUkFSWQorU3RyZWFtaW5nIEFyY2hpdmUgTGlicmFyeSAobGliYXJjaGl2ZSwgLWxhcmNoaXZlKQorLlNoIFNZTk9QU0lTCisuSW4gYXJjaGl2ZV9lbnRyeS5oCisuRnQgaW50CisuRm4gYXJjaGl2ZV9lbnRyeV9zeW1saW5rX3R5cGUgInN0cnVjdCBhcmNoaXZlX2VudHJ5ICphIgorLkZ0IHZvaWQKKy5GbiBhcmNoaXZlX2VudHJ5X3NldF9zeW1saW5rX3R5cGUgInN0cnVjdCBhcmNoaXZlX2VudHJ5ICphIiAiaW50IgorLlNoIERFU0NSSVBUSU9OCitUaGUgZnVuY3Rpb24KKy5GbiBhcmNoaXZlX2VudHJ5X3N5bWxpbmtfdHlwZQorcmV0dXJucyBhbmQgdGhlIGZ1bmN0aW9uCisuRm4gYXJjaGl2ZV9lbnRyeV9zZXRfc3ltbGlua190eXBlCitzZXRzIHRoZSB0eXBlIG9mIHRoZSBzeW1ib2xpYyBsaW5rIHN0b3JlZCBpbiBhbiBhcmNoaXZlIGVudHJ5LgorVGhlc2UgZnVuY3Rpb25zCitoYXZlIHNwZWNpYWwgbWVhbmluZyBvbiBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IHN1cHBvcnQgbXVsdGlwbGUgc3ltYm9saWMgbGluawordHlwZXMgKGUuZy4gTWljcm9zb2Z0IFdpbmRvd3MpLgorLlBwCitTdXBwb3J0ZWQgdmFsdWVzIGFyZToKKy5CbCAtdGFnIC13aWR0aCAiQUVfU1lNTElOS19UWVBFX0RJUkVDVE9SWSIgLWNvbXBhY3QKKy5JdCBBRV9TWU1MSU5LX1RZUEVfVU5ERUZJTkVECitTeW1ib2xpYyBsaW5rIHRhcmdldCB0eXBlIGlzIG5vdCBkZWZpbmVkIChkZWZhdWx0IG9uIHVuaXggc3lzdGVtcykKKy5JdCBBRV9TWU1MSU5LX1RZUEVfRklMRQorU3ltYm9saWMgbGluayBwb2ludHMgdG8gYSBmaWxlCisuSXQgQUVfU1lNTElOS19UWVBFX0RJUkVDVE9SWQorU3ltYm9saWMgbGluayBwb2ludHMgdG8gYSBkaXJlY3RvcnkKKy5FbAorLlNoIFNFRSBBTFNPCisuWHIgYXJjaGl2ZV9lbnRyeSAzICwKKy5YciBhcmNoaXZlX2VudHJ5X3BhdGhzIDMgLAorLlhyIGFyY2hpdmVfZW50cnlfc3RhdCAzICwKKy5YciBsaWJhcmNoaXZlIDMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VudHJ5X3BhdGhzLjMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9wYXRocy4zCmluZGV4IGY2NDcyMTIuLjBmODQ5YzkgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VudHJ5X3BhdGhzLjMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfcGF0aHMuMwpAQCAtMTMzLDcgKzEzMyw3IEBACiAuRm4gWFhYX3cgLgogLkl0IFVURi04CiBVbmljb2RlIHN0cmluZ3MgZW5jb2RlZCBhcyBVVEYtOC4KLVRoaXMgYXJlIGNvbnZpZW5jZSBmdW5jdGlvbnMgdG8gdXBkYXRlIGJvdGggdGhlIG11bHRpYnl0ZSBhbmQgd2lkZQorVGhlc2UgYXJlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyB0byB1cGRhdGUgYm90aCB0aGUgbXVsdGlieXRlIGFuZCB3aWRlCiBjaGFyYWN0ZXIgc3RyaW5ncyBhdCB0aGUgc2FtZSB0aW1lLgogLkVsCiAuUHAKQEAgLTE0MSwxMyArMTQxLDEzIEBACiBhcmNoaXZlIGRpcmVjdGx5LgogLlBwCiBGb3IgdGhhdCByZWFzb24sIGl0IGlzIG9ubHkgYXZhaWxhYmxlIGFzIG11bHRpYnl0ZSBzdHJpbmcuCi1UaGUgbGluayBwYXRoIGlzIGEgY29udmllbmNlIGZ1bmN0aW9uIGZvciBjb25kaXRpb25hbGx5IHNldHRpbmcKK1RoZSBsaW5rIHBhdGggaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgY29uZGl0aW9uYWxseSBzZXR0aW5nCiBoYXJkbGluayBvciBzeW1saW5rIGRlc3RpbmF0aW9uLgogSXQgZG9lc24ndCBoYXZlIGEgY29ycmVzcG9uZGluZyBnZXQgYWNjZXNzb3IgZnVuY3Rpb24uCiAuUHAKIC5GbiBhcmNoaXZlX2VudHJ5X3NldF9YWFgKLWlzIGFuIGFsaWFzIGZvciAKK2lzIGFuIGFsaWFzIGZvcgogLkZuIGFyY2hpdmVfZW50cnlfY29weV9YWFggLgogLlNoIFNFRSBBTFNPCi0uWHIgYXJjaGl2ZV9lbnRyeSAzCi0uWHIgbGliYXJjaGl2ZSAzICwKKy5YciBhcmNoaXZlX2VudHJ5IDMgLAorLlhyIGxpYmFyY2hpdmUgMwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfcGVybXMuMyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VudHJ5X3Blcm1zLjMKaW5kZXggYWFlMzY0OC4uMDI5MWI3YiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfcGVybXMuMworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9wZXJtcy4zCkBAIC0xMjYsNyArMTI2LDcgQEAKIGFuZAogLkZuIGFyY2hpdmVfZW50cnlfc2V0X3Blcm0KIHN0b3JlIHRoZSBnaXZlbiB1c2VyIGlkLCBncm91cCBpZCBhbmQgcGVybWlzc2lvbiBpbiB0aGUgZW50cnkuCi1UaGUgcGVybWlzc2lvbiBpcyBhbHNvIHNldCBhcyBzaWRlIGVmZmVjdCBvZiBjYWxsaW5nCitUaGUgcGVybWlzc2lvbiBpcyBhbHNvIHNldCBhcyBhIHNpZGUgZWZmZWN0IG9mIGNhbGxpbmcKIC5GbiBhcmNoaXZlX2VudHJ5X3NldF9tb2RlIC4KIC5QcAogLkZuIGFyY2hpdmVfZW50cnlfc3RybW9kZQpAQCAtMTQzLDEyICsxNDMsMTIgQEAKIC5GbiBYWFhfdyAuCiAuSXQgVVRGLTgKIFVuaWNvZGUgc3RyaW5ncyBlbmNvZGVkIGFzIFVURi04LgotVGhpcyBhcmUgY29udmllbmNlIGZ1bmN0aW9ucyB0byB1cGRhdGUgYm90aCB0aGUgbXVsdGlieXRlIGFuZCB3aWRlCitUaGVzZSBhcmUgY29udmVuaWVuY2UgZnVuY3Rpb25zIHRvIHVwZGF0ZSBib3RoIHRoZSBtdWx0aWJ5dGUgYW5kIHdpZGUKIGNoYXJhY3RlciBzdHJpbmdzIGF0IHRoZSBzYW1lIHRpbWUuCiAuRWwKIC5QcAogLkZuIGFyY2hpdmVfZW50cnlfc2V0X1hYWAotaXMgYW4gYWxpYXMgZm9yIAoraXMgYW4gYWxpYXMgZm9yCiAuRm4gYXJjaGl2ZV9lbnRyeV9jb3B5X1hYWCAuCiAuU3MgRmlsZSBGbGFncwogRmlsZSBmbGFncyBhcmUgdHJhbnNwYXJlbnRseSBjb252ZXJ0ZWQgYmV0d2VlbiBhIGJpdG1hcApAQCAtMTgyLDcgKzE4Miw3IEBACiAuRm4gYXJjaGl2ZV9lbnRyeV9jb3B5X2ZmbGFnc190ZXh0CiBhbmQKIC5GbiBhcmNoaXZlX2VudHJ5X2NvcHlfZmZsYWdzX3RleHRfdwotZnVuY3Rpb25zIHBhcnNlIHRoZSBwcm92aWRlZCB0ZXh0IGFuZCBzZXRzIHRoZSBpbnRlcm5hbCBiaXRtYXAgdmFsdWVzLgorZnVuY3Rpb25zIHBhcnNlIHRoZSBwcm92aWRlZCB0ZXh0IGFuZCBzZXQgdGhlIGludGVybmFsIGJpdG1hcCB2YWx1ZXMuCiBUaGlzIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgb3BlcmF0aW9uOyBuYW1lcyB0aGF0IGFyZSBub3QgbWVhbmluZ2Z1bAogb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0gd2lsbCBiZSBpZ25vcmVkLgogVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmlyc3QgbmFtZSB0aGF0IHdhcyBub3QKQEAgLTE5Nyw4ICsxOTcsOCBAQAogLlhyIGFyY2hpdmVfZW50cnkgMyAsCiAuWHIgYXJjaGl2ZV9lbnRyeV9hY2wgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX2Rpc2sgMyAsCi0uWHIgYXJjaGl2ZV93cml0ZV9kaXNrIDMKLS5YciBsaWJhcmNoaXZlIDMgLAorLlhyIGFyY2hpdmVfd3JpdGVfZGlzayAzICwKKy5YciBsaWJhcmNoaXZlIDMKIC5TaCBCVUdTCiBUaGUgcGxhdGZvcm0gdHlwZXMKIC5WdCB1aWRfdApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfcHJpdmF0ZS5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfcHJpdmF0ZS5oCmluZGV4IGM2OTIzM2UuLjJiOWEwODQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VudHJ5X3ByaXZhdGUuaAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9wcml2YXRlLmgKQEAgLTI1LDEzICsyNSwxMyBAQAogICogJEZyZWVCU0Q6IGhlYWQvbGliL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9wcml2YXRlLmggMjAxMDk2IDIwMDktMTItMjggMDI6NDE6MjdaIGtpZW50emxlICQKICAqLwogCisjaWZuZGVmIEFSQ0hJVkVfRU5UUllfUFJJVkFURV9IX0lOQ0xVREVECisjZGVmaW5lIEFSQ0hJVkVfRU5UUllfUFJJVkFURV9IX0lOQ0xVREVECisKICNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECiAjZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KICNlbmRpZgogCi0jaWZuZGVmIEFSQ0hJVkVfRU5UUllfUFJJVkFURV9IX0lOQ0xVREVECi0jZGVmaW5lCUFSQ0hJVkVfRU5UUllfUFJJVkFURV9IX0lOQ0xVREVECi0KICNpbmNsdWRlICJhcmNoaXZlX2FjbF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV9zdHJpbmcuaCIKIApAQCAtMTc2LDYgKzE3Niw5IEBACiAKIAkvKiBNaXNjZWxsYW5lb3VzLiAqLwogCWNoYXIJCSBzdHJtb2RlWzEyXTsKKworCS8qIFN5bWxpbmsgdHlwZSBzdXBwb3J0ICovCisJaW50IGFlX3N5bWxpbmtfdHlwZTsKIH07CiAKICNlbmRpZiAvKiBBUkNISVZFX0VOVFJZX1BSSVZBVEVfSF9JTkNMVURFRCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfc3RhdC4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfc3RhdC4zCmluZGV4IDI2NjExZTQuLmFhNWM4ZTAgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VudHJ5X3N0YXQuMworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV9zdGF0LjMKQEAgLTU0LDcgKzU0LDcgQEAKIC5ObSBhcmNoaXZlX2VudHJ5X3JkZXZtYWpvciAsCiAuTm0gYXJjaGl2ZV9lbnRyeV9zZXRfcmRldm1ham9yICwKIC5ObSBhcmNoaXZlX2VudHJ5X3JkZXZtaW5vciAsCi0uTm0gYXJjaGl2ZV9lbnRyeV9zZXRfcmRldm1pbm9yICwKKy5ObSBhcmNoaXZlX2VudHJ5X3NldF9yZGV2bWlub3IKIC5OZCBhY2Nlc3NvciBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyBhcmNoaXZlIGVudHJ5IGRlc2NyaXB0aW9ucwogLlNoIExJQlJBUlkKIFN0cmVhbWluZyBBcmNoaXZlIExpYnJhcnkgKGxpYmFyY2hpdmUsIC1sYXJjaGl2ZSkKQEAgLTI2Nyw4ICsyNjcsOCBAQAogU29tZSBhcmNoaXZlIGZvcm1hdHMgdXNlIHRoZSBjb21iaW5lZCBmb3JtLCB3aGlsZSBvdGhlciBmb3JtYXRzIHVzZQogdGhlIHNwbGl0IGZvcm0uCiAuU2ggU0VFIEFMU08KKy5YciBzdGF0IDIgLAogLlhyIGFyY2hpdmVfZW50cnlfYWNsIDMgLAogLlhyIGFyY2hpdmVfZW50cnlfcGVybXMgMyAsCiAuWHIgYXJjaGl2ZV9lbnRyeV90aW1lIDMgLAotLlhyIGxpYmFyY2hpdmUgMyAsCi0uWHIgc3RhdCAyCisuWHIgbGliYXJjaGl2ZSAzCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV90aW1lLjMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9lbnRyeV90aW1lLjMKaW5kZXggMTg2NDUyMS4uZDA1NjNlYSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZW50cnlfdGltZS4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2VudHJ5X3RpbWUuMwpAQCAtNDgsNyArNDgsNyBAQAogLk5tIGFyY2hpdmVfZW50cnlfbXRpbWVfbnNlYyAsCiAuTm0gYXJjaGl2ZV9lbnRyeV9tdGltZV9pc19zZXQgLAogLk5tIGFyY2hpdmVfZW50cnlfc2V0X210aW1lICwKLS5ObSBhcmNoaXZlX2VudHJ5X3Vuc2V0X210aW1lICwKKy5ObSBhcmNoaXZlX2VudHJ5X3Vuc2V0X210aW1lCiAuTmQgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgdGltZXMgaW4gYXJjaGl2ZSBlbnRyeSBkZXNjcmlwdGlvbnMKIC5TaCBMSUJSQVJZCiBTdHJlYW1pbmcgQXJjaGl2ZSBMaWJyYXJ5IChsaWJhcmNoaXZlLCAtbGFyY2hpdmUpCkBAIC0xMTMsOCArMTEzLDggQEAKIC5GbiBYWFhfaXNfc2V0IC4KIFVuc2V0IHRpbWUgZmllbGRzIGhhdmUgYSBzZWNvbmQgYW5kIG5hbm9zZWNvbmQgZmllbGQgb2YgMC4KIC5TaCBTRUUgQUxTTwotLlhyIGFyY2hpdmVfZW50cnkgMwotLlhyIGxpYmFyY2hpdmUgMyAsCisuWHIgYXJjaGl2ZV9lbnRyeSAzICwKKy5YciBsaWJhcmNoaXZlIDMKIC5TaCBISVNUT1JZCiBUaGUKIC5ObSBsaWJhcmNoaXZlCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9nZXRkYXRlLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9nZXRkYXRlLmMKaW5kZXggMDMwYzA4My4uNjc4NmQzNSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZ2V0ZGF0ZS5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2dldGRhdGUuYwpAQCAtMjcsNiArMjcsOSBAQAogKiogIFRoaXMgY29kZSBpcyBpbiB0aGUgcHVibGljIGRvbWFpbiBhbmQgaGFzIG5vIGNvcHlyaWdodC4KICovCiAKKyNpZm5kZWYgQ01fR0VUX0RBVEUKKyNpbmNsdWRlICJhcmNoaXZlX3BsYXRmb3JtLmgiCisjZW5kaWYKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgogX19GQlNESUQoIiRGcmVlQlNEJCIpOwpAQCAtNjk0LDggKzY5NywxNiBAQAogCXNpZ25lZCBjaGFyIERheXNJbk1vbnRoWzEyXSA9IHsKIAkJMzEsIDAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxCiAJfTsKLQl0aW1lX3QJSnVsaWFuOwotCWludAlpOworCXRpbWVfdAkJSnVsaWFuOworCWludAkJaTsKKwlzdHJ1Y3QgdG0JKmx0aW1lOworI2lmIGRlZmluZWQoSEFWRV9MT0NBTFRJTUVfUikgfHwgZGVmaW5lZChIQVZFX19MT0NBTFRJTUU2NF9TKQorCXN0cnVjdCB0bQl0bWJ1ZjsKKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9fTE9DQUxUSU1FNjRfUykKKwllcnJub190CQl0ZXJyOworCV9fdGltZTY0X3QJdG1wdGltZTsKKyNlbmRpZgogCiAJaWYgKFllYXIgPCA2OSkKIAkJWWVhciArPSAyMDAwOwpAQCAtNzIyLDIxICs3MzMsNjQgQEAKIAlKdWxpYW4gKj0gREFZOwogCUp1bGlhbiArPSBUaW1lem9uZTsKIAlKdWxpYW4gKz0gSG91cnMgKiBIT1VSICsgTWludXRlcyAqIE1JTlVURSArIFNlY29uZHM7CisjaWYgZGVmaW5lZChIQVZFX0xPQ0FMVElNRV9SKQorCWx0aW1lID0gbG9jYWx0aW1lX3IoJkp1bGlhbiwgJnRtYnVmKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9fTE9DQUxUSU1FNjRfUykKKwl0bXB0aW1lID0gSnVsaWFuOworCXRlcnIgPSBfbG9jYWx0aW1lNjRfcygmdG1idWYsICZ0bXB0aW1lKTsKKwlpZiAodGVycikKKwkJbHRpbWUgPSBOVUxMOworCWVsc2UKKwkJbHRpbWUgPSAmdG1idWY7CisjZWxzZQorCWx0aW1lID0gbG9jYWx0aW1lKCZKdWxpYW4pOworI2VuZGlmCiAJaWYgKERTVG1vZGUgPT0gRFNUb24KLQkgICAgfHwgKERTVG1vZGUgPT0gRFNUbWF5YmUgJiYgbG9jYWx0aW1lKCZKdWxpYW4pLT50bV9pc2RzdCkpCisJICAgIHx8IChEU1Rtb2RlID09IERTVG1heWJlICYmIGx0aW1lLT50bV9pc2RzdCkpCiAJCUp1bGlhbiAtPSBIT1VSOwogCXJldHVybiBKdWxpYW47CiB9CiAKLQogc3RhdGljIHRpbWVfdAogRFNUY29ycmVjdCh0aW1lX3QgU3RhcnQsIHRpbWVfdCBGdXR1cmUpCiB7Ci0JdGltZV90CVN0YXJ0RGF5OwotCXRpbWVfdAlGdXR1cmVEYXk7CisJdGltZV90CQlTdGFydERheTsKKwl0aW1lX3QJCUZ1dHVyZURheTsKKwlzdHJ1Y3QgdG0JKmx0aW1lOworI2lmIGRlZmluZWQoSEFWRV9MT0NBTFRJTUVfUikgfHwgZGVmaW5lZChIQVZFX19MT0NBTFRJTUU2NF9TKQorCXN0cnVjdCB0bQl0bWJ1ZjsKKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9fTE9DQUxUSU1FNjRfUykKKwllcnJub190CQl0ZXJyOworCV9fdGltZTY0X3QJdG1wdGltZTsKKyNlbmRpZgogCi0JU3RhcnREYXkgPSAobG9jYWx0aW1lKCZTdGFydCktPnRtX2hvdXIgKyAxKSAlIDI0OwotCUZ1dHVyZURheSA9IChsb2NhbHRpbWUoJkZ1dHVyZSktPnRtX2hvdXIgKyAxKSAlIDI0OworI2lmIGRlZmluZWQoSEFWRV9MT0NBTFRJTUVfUikKKwlsdGltZSA9IGxvY2FsdGltZV9yKCZTdGFydCwgJnRtYnVmKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9fTE9DQUxUSU1FNjRfUykKKwl0bXB0aW1lID0gU3RhcnQ7CisJdGVyciA9IF9sb2NhbHRpbWU2NF9zKCZ0bWJ1ZiwgJnRtcHRpbWUpOworCWlmICh0ZXJyKQorCQlsdGltZSA9IE5VTEw7CisJZWxzZQorCQlsdGltZSA9ICZ0bWJ1ZjsKKyNlbHNlCisJbHRpbWUgPSBsb2NhbHRpbWUoJlN0YXJ0KTsKKyNlbmRpZgorCVN0YXJ0RGF5ID0gKGx0aW1lLT50bV9ob3VyICsgMSkgJSAyNDsKKyNpZiBkZWZpbmVkKEhBVkVfTE9DQUxUSU1FX1IpCisJbHRpbWUgPSBsb2NhbHRpbWVfcigmRnV0dXJlLCAmdG1idWYpOworI2VsaWYgZGVmaW5lZChIQVZFX19MT0NBTFRJTUU2NF9TKQorCXRtcHRpbWUgPSBGdXR1cmU7CisJdGVyciA9IF9sb2NhbHRpbWU2NF9zKCZ0bWJ1ZiwgJnRtcHRpbWUpOworCWlmICh0ZXJyKQorCQlsdGltZSA9IE5VTEw7CisJZWxzZQorCQlsdGltZSA9ICZ0bWJ1ZjsKKyNlbHNlCisJbHRpbWUgPSBsb2NhbHRpbWUoJkZ1dHVyZSk7CisjZW5kaWYKKwlGdXR1cmVEYXkgPSAobHRpbWUtPnRtX2hvdXIgKyAxKSAlIDI0OwogCXJldHVybiAoRnV0dXJlIC0gU3RhcnQpICsgKFN0YXJ0RGF5IC0gRnV0dXJlRGF5KSAqIEhPVVI7CiB9CiAKQEAgLTc0Nyw5ICs4MDEsMjcgQEAKIHsKIAlzdHJ1Y3QgdG0JKnRtOwogCXRpbWVfdAl0LCBub3c7CisjaWYgZGVmaW5lZChIQVZFX0dNVElNRV9SKSB8fCBkZWZpbmVkKEhBVkVfX0dNVElNRTY0X1MpCisJc3RydWN0IHRtCXRtYnVmOworI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX19HTVRJTUU2NF9TKQorCWVycm5vX3QJCXRlcnI7CisJX190aW1lNjRfdAl0bXB0aW1lOworI2VuZGlmCiAKIAl0ID0gU3RhcnQgLSB6b25lOworI2lmIGRlZmluZWQoSEFWRV9HTVRJTUVfUikKKwl0bSA9IGdtdGltZV9yKCZ0LCAmdG1idWYpOworI2VsaWYgZGVmaW5lZChIQVZFX19HTVRJTUU2NF9TKQorCXRtcHRpbWUgPSB0OworCXRlcnIgPSBfZ210aW1lNjRfcygmdG1idWYsICZ0bXB0aW1lKTsKKwlpZiAodGVycikKKwkJdG0gPSBOVUxMOworCWVsc2UKKwkJdG0gPSAmdG1idWY7CisjZWxzZQogCXRtID0gZ210aW1lKCZ0KTsKKyNlbmRpZgogCW5vdyA9IFN0YXJ0OwogCW5vdyArPSBEQVkgKiAoKERheU51bWJlciAtIHRtLT50bV93ZGF5ICsgNykgJSA3KTsKIAlub3cgKz0gNyAqIERBWSAqIChEYXlPcmRpbmFsIDw9IDAgPyBEYXlPcmRpbmFsIDogRGF5T3JkaW5hbCAtIDEpOwpAQCAtNzY1LDEwICs4MzcsMjggQEAKIAlzdHJ1Y3QgdG0JKnRtOwogCXRpbWVfdAlNb250aDsKIAl0aW1lX3QJWWVhcjsKKyNpZiBkZWZpbmVkKEhBVkVfTE9DQUxUSU1FX1IpIHx8IGRlZmluZWQoSEFWRV9fTE9DQUxUSU1FNjRfUykKKwlzdHJ1Y3QgdG0JdG1idWY7CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfX0xPQ0FMVElNRTY0X1MpCisJZXJybm9fdAkJdGVycjsKKwlfX3RpbWU2NF90CXRtcHRpbWU7CisjZW5kaWYKIAogCWlmIChSZWxNb250aCA9PSAwKQogCQlyZXR1cm4gMDsKKyNpZiBkZWZpbmVkKEhBVkVfTE9DQUxUSU1FX1IpCisJdG0gPSBsb2NhbHRpbWVfcigmU3RhcnQsICZ0bWJ1Zik7CisjZWxpZiBkZWZpbmVkKEhBVkVfX0xPQ0FMVElNRTY0X1MpCisJdG1wdGltZSA9IFN0YXJ0OworCXRlcnIgPSBfbG9jYWx0aW1lNjRfcygmdG1idWYsICZ0bXB0aW1lKTsKKwlpZiAodGVycikKKwkJdG0gPSBOVUxMOworCWVsc2UKKwkJdG0gPSAmdG1idWY7CisjZWxzZQogCXRtID0gbG9jYWx0aW1lKCZTdGFydCk7CisjZW5kaWYKIAlNb250aCA9IDEyICogKHRtLT50bV95ZWFyICsgMTkwMCkgKyB0bS0+dG1fbW9uICsgUmVsTW9udGg7CiAJWWVhciA9IE1vbnRoIC8gMTI7CiAJTW9udGggPSBNb250aCAlIDEyICsgMTsKQEAgLTkwNSw2ICs5OTUsMTAgQEAKIAl0aW1lX3QJCVN0YXJ0OwogCXRpbWVfdAkJdG9kOwogCWxvbmcJCXR6b25lOworI2lmIGRlZmluZWQoSEFWRV9fTE9DQUxUSU1FNjRfUykgfHwgZGVmaW5lZChIQVZFX19HTVRJTUU2NF9TKQorCWVycm5vX3QJCXRlcnI7CisJX190aW1lNjRfdAl0bXB0aW1lOworI2VuZGlmCiAKIAkvKiBDbGVhciBvdXQgdGhlIHBhcnNlZCB0b2tlbiBhcnJheS4gKi8KIAltZW1zZXQodG9rZW5zLCAwLCBzaXplb2YodG9rZW5zKSk7CkBAIC05MTMsMjAgKzEwMDcsNDQgQEAKIAlnZHMgPSAmX2dkczsKIAogCS8qIExvb2sgdXAgdGhlIGN1cnJlbnQgdGltZS4gKi8KKyNpZiBkZWZpbmVkKEhBVkVfTE9DQUxUSU1FX1IpCisJdG0gPSBsb2NhbHRpbWVfcigmbm93LCAmbG9jYWwpOworI2VsaWYgZGVmaW5lZChIQVZFX19MT0NBTFRJTUU2NF9TKQorCXRtcHRpbWUgPSBub3c7CisJdGVyciA9IF9sb2NhbHRpbWU2NF9zKCZsb2NhbCwgJnRtcHRpbWUpOworCWlmICh0ZXJyKQorCQl0bSA9IE5VTEw7CisJZWxzZQorCQl0bSA9ICZsb2NhbDsKKyNlbHNlCiAJbWVtc2V0KCZsb2NhbCwgMCwgc2l6ZW9mKGxvY2FsKSk7Ci0JdG0gPSBsb2NhbHRpbWUgKCZub3cpOworCXRtID0gbG9jYWx0aW1lKCZub3cpOworI2VuZGlmCiAJaWYgKHRtID09IE5VTEwpCiAJCXJldHVybiAtMTsKKyNpZiAhZGVmaW5lZChIQVZFX0xPQ0FMVElNRV9SKSAmJiAhZGVmaW5lZChIQVZFX19MT0NBTFRJTUU2NF9TKQogCWxvY2FsID0gKnRtOworI2VuZGlmCiAKIAkvKiBMb29rIHVwIFVUQyBpZiB3ZSBjYW4gYW5kIHVzZSB0aGF0IHRvIGRldGVybWluZSB0aGUgY3VycmVudAogCSAqIHRpbWV6b25lIG9mZnNldC4gKi8KKyNpZiBkZWZpbmVkKEhBVkVfR01USU1FX1IpCisJZ210X3B0ciA9IGdtdGltZV9yKCZub3csICZnbXQpOworI2VsaWYgZGVmaW5lZChIQVZFX19HTVRJTUU2NF9TKQorCXRtcHRpbWUgPSBub3c7CisJdGVyciA9IF9nbXRpbWU2NF9zKCZnbXQsICZ0bXB0aW1lKTsKKwlpZiAodGVycikKKwkJZ210X3B0ciA9IE5VTEw7CisJZWxzZQorCQlnbXRfcHRyID0gJmdtdDsKKyNlbHNlCiAJbWVtc2V0KCZnbXQsIDAsIHNpemVvZihnbXQpKTsKLQlnbXRfcHRyID0gZ210aW1lICgmbm93KTsKKwlnbXRfcHRyID0gZ210aW1lKCZub3cpOwogCWlmIChnbXRfcHRyICE9IE5VTEwpIHsKIAkJLyogQ29weSwgaW4gY2FzZSBsb2NhbHRpbWUgYW5kIGdtdGltZSB1c2UgdGhlIHNhbWUgYnVmZmVyLiAqLwogCQlnbXQgPSAqZ210X3B0cjsKIAl9CisjZW5kaWYKIAlpZiAoZ210X3B0ciAhPSBOVUxMKQogCQl0em9uZSA9IGRpZmZ0bSAoJmdtdCwgJmxvY2FsKTsKIAllbHNlCkBAIC05NjAsNyArMTA3OCwxOCBAQAogCSAqIHRpbWUgY29tcG9uZW50cyBpbnN0ZWFkIG9mIHRoZSBsb2NhbCB0aW1lem9uZS4gKi8KIAlpZiAoZ2RzLT5IYXZlWm9uZSAmJiBnbXRfcHRyICE9IE5VTEwpIHsKIAkJbm93IC09IGdkcy0+VGltZXpvbmU7Ci0JCWdtdF9wdHIgPSBnbXRpbWUgKCZub3cpOworI2lmIGRlZmluZWQoSEFWRV9HTVRJTUVfUikKKwkJZ210X3B0ciA9IGdtdGltZV9yKCZub3csICZnbXQpOworI2VsaWYgZGVmaW5lZChIQVZFX19HTVRJTUU2NF9TKQorCQl0bXB0aW1lID0gbm93OworCQl0ZXJyID0gX2dtdGltZTY0X3MoJmdtdCwgJnRtcHRpbWUpOworCQlpZiAodGVycikKKwkJCWdtdF9wdHIgPSBOVUxMOworCQllbHNlCisJCQlnbXRfcHRyID0gJmdtdDsKKyNlbHNlCisJCWdtdF9wdHIgPSBnbXRpbWUoJm5vdyk7CisjZW5kaWYKIAkJaWYgKGdtdF9wdHIgIT0gTlVMTCkKIAkJCWxvY2FsID0gKmdtdF9wdHI7CiAJCW5vdyArPSBnZHMtPlRpbWV6b25lOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZ2V0ZGF0ZS5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfZ2V0ZGF0ZS5oCmluZGV4IDY2NmZmNWYuLjkwMGE4ZjYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2dldGRhdGUuaAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9nZXRkYXRlLmgKQEAgLTI1LDEzICsyNSwxMyBAQAogICogJEZyZWVCU0QkCiAgKi8KIAorI2lmbmRlZiBBUkNISVZFX0dFVERBVEVfSF9JTkNMVURFRAorI2RlZmluZSBBUkNISVZFX0dFVERBVEVfSF9JTkNMVURFRAorCiAjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAogI2Vycm9yIFRoaXMgaGVhZGVyIGlzIG9ubHkgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHRvIGxpYmFyY2hpdmUuCiAjZW5kaWYKIAotI2lmbmRlZiBBUkNISVZFX0dFVERBVEVfSF9JTkNMVURFRAotI2RlZmluZQlBUkNISVZFX0dFVERBVEVfSF9JTkNMVURFRAotCiAjaW5jbHVkZSA8dGltZS5oPgogCiB0aW1lX3QgX19hcmNoaXZlX2dldF9kYXRlKHRpbWVfdCBub3csIGNvbnN0IGNoYXIgKik7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9obWFjLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9obWFjLmMKaW5kZXggZjI5OTY1NS4uMmE5ZDA0YyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfaG1hYy5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2htYWMuYwpAQCAtODMsNiArODMsOSBAQAogc3RhdGljIGludAogX19obWFjX3NoYTFfaW5pdChhcmNoaXZlX2htYWNfc2hhMV9jdHggKmN0eCwgY29uc3QgdWludDhfdCAqa2V5LCBzaXplX3Qga2V5X2xlbikKIHsKKyNpZmRlZiBfX0dOVUNfXworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Nhc3QtcXVhbCIKKyNlbmRpZgogCUJDUllQVF9BTEdfSEFORExFIGhBbGc7CiAJQkNSWVBUX0hBU0hfSEFORExFIGhIYXNoOwogCURXT1JEIGhhc2hfbGVuOwpAQCAtMTQ3LDYgKzE1MCw1MyBAQAogCX0KIH0KIAorI2VsaWYgZGVmaW5lZChIQVZFX0xJQk1CRURDUllQVE8pICYmIGRlZmluZWQoSEFWRV9NQkVEVExTX01EX0gpCisKK3N0YXRpYyBpbnQKK19faG1hY19zaGExX2luaXQoYXJjaGl2ZV9obWFjX3NoYTFfY3R4ICpjdHgsIGNvbnN0IHVpbnQ4X3QgKmtleSwgc2l6ZV90IGtleV9sZW4pCit7CisgICAgICAgIGNvbnN0IG1iZWR0bHNfbWRfaW5mb190ICppbmZvOworICAgICAgICBpbnQgcmV0OworCisgICAgICAgIG1iZWR0bHNfbWRfaW5pdChjdHgpOworICAgICAgICBpbmZvID0gbWJlZHRsc19tZF9pbmZvX2Zyb21fdHlwZShNQkVEVExTX01EX1NIQTEpOworICAgICAgICBpZiAoaW5mbyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbWJlZHRsc19tZF9mcmVlKGN0eCk7CisgICAgICAgICAgICAgICAgcmV0dXJuICgtMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0ID0gbWJlZHRsc19tZF9zZXR1cChjdHgsIGluZm8sIDEpOworICAgICAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgICAgICAgICBtYmVkdGxzX21kX2ZyZWUoY3R4KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKC0xKTsKKyAgICAgICAgfQorCXJldCA9IG1iZWR0bHNfbWRfaG1hY19zdGFydHMoY3R4LCBrZXksIGtleV9sZW4pOworCWlmIChyZXQgIT0gMCkgeworCQltYmVkdGxzX21kX2ZyZWUoY3R4KTsKKwkJcmV0dXJuICgtMSk7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorX19obWFjX3NoYTFfdXBkYXRlKGFyY2hpdmVfaG1hY19zaGExX2N0eCAqY3R4LCBjb25zdCB1aW50OF90ICpkYXRhLAorICAgIHNpemVfdCBkYXRhX2xlbikKK3sKKwltYmVkdGxzX21kX2htYWNfdXBkYXRlKGN0eCwgZGF0YSwgZGF0YV9sZW4pOworfQorCitzdGF0aWMgdm9pZCBfX2htYWNfc2hhMV9maW5hbChhcmNoaXZlX2htYWNfc2hhMV9jdHggKmN0eCwgdWludDhfdCAqb3V0LCBzaXplX3QgKm91dF9sZW4pCit7CisJKHZvaWQpb3V0X2xlbjsJLyogVU5VU0VEICovCisKKwltYmVkdGxzX21kX2htYWNfZmluaXNoKGN0eCwgb3V0KTsKK30KKworc3RhdGljIHZvaWQgX19obWFjX3NoYTFfY2xlYW51cChhcmNoaXZlX2htYWNfc2hhMV9jdHggKmN0eCkKK3sKKwltYmVkdGxzX21kX2ZyZWUoY3R4KTsKKwltZW1zZXQoY3R4LCAwLCBzaXplb2YoKmN0eCkpOworfQorCiAjZWxpZiBkZWZpbmVkKEhBVkVfTElCTkVUVExFKSAmJiBkZWZpbmVkKEhBVkVfTkVUVExFX0hNQUNfSCkKIAogc3RhdGljIGludApAQCAtMTk4LDYgKzI0OCw3IEBACiBfX2htYWNfc2hhMV9maW5hbChhcmNoaXZlX2htYWNfc2hhMV9jdHggKmN0eCwgdWludDhfdCAqb3V0LCBzaXplX3QgKm91dF9sZW4pCiB7CiAJdW5zaWduZWQgaW50IGxlbiA9ICh1bnNpZ25lZCBpbnQpKm91dF9sZW47CisKIAlITUFDX0ZpbmFsKCpjdHgsIG91dCwgJmxlbik7CiAJKm91dF9sZW4gPSBsZW47CiB9CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9obWFjX3ByaXZhdGUuaCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2htYWNfcHJpdmF0ZS5oCmluZGV4IGViNDVjNGUuLjEzYTY3ZDQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2htYWNfcHJpdmF0ZS5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX2htYWNfcHJpdmF0ZS5oCkBAIC0yMywxMyArMjMsMTIgQEAKICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCiAKLSNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECi0jZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KLSNlbmRpZgotCiAjaWZuZGVmIEFSQ0hJVkVfSE1BQ19QUklWQVRFX0hfSU5DTFVERUQKICNkZWZpbmUgQVJDSElWRV9ITUFDX1BSSVZBVEVfSF9JTkNMVURFRAogCisjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAorI2Vycm9yIFRoaXMgaGVhZGVyIGlzIG9ubHkgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHRvIGxpYmFyY2hpdmUuCisjZW5kaWYKIC8qCiAgKiBPbiBzeXN0ZW1zIHRoYXQgZG8gbm90IHN1cHBvcnQgYW55IHJlY29nbml6ZWQgY3J5cHRvIGxpYnJhcmllcywKICAqIHRoZSBhcmNoaXZlX2htYWMuYyBmaWxlIGlzIGV4cGVjdGVkIHRvIGRlZmluZSBubyB1c2FibGUgc3ltYm9scy4KQEAgLTY0LDYgKzYzLDExIEBACiAKIH0gYXJjaGl2ZV9obWFjX3NoYTFfY3R4OwogCisjZWxpZiBkZWZpbmVkKEhBVkVfTElCTUJFRENSWVBUTykgJiYgZGVmaW5lZChIQVZFX01CRURUTFNfTURfSCkKKyNpbmNsdWRlIDxtYmVkdGxzL21kLmg+CisKK3R5cGVkZWYgbWJlZHRsc19tZF9jb250ZXh0X3QgYXJjaGl2ZV9obWFjX3NoYTFfY3R4OworCiAjZWxpZiBkZWZpbmVkKEhBVkVfTElCTkVUVExFKSAmJiBkZWZpbmVkKEhBVkVfTkVUVExFX0hNQUNfSCkKICNpbmNsdWRlIDxuZXR0bGUvaG1hYy5oPgogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYwppbmRleCBmMTUwZTgyLi4wNDc0N2IxIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMKQEAgLTkzLDYgKzkzLDkgQEAKIAkvKiBleGNsdXNpb24vaW5jbHVzaW9uIHNldCBmbGFnLiAqLwogCWludAkJCSBzZXRmbGFnOwogCisJLyogUmVjdXJzaXZlbHkgaW5jbHVkZSBkaXJlY3RvcnkgY29udGVudD8gKi8KKwlpbnQJCQkgcmVjdXJzaXZlX2luY2x1ZGU7CisKIAkvKgogCSAqIE1hdGNoaW5nIGZpbGVuYW1lIHBhdHRlcm5zLgogCSAqLwpAQCAtMjIzLDYgKzIyNiw3IEBACiAJCXJldHVybiAoTlVMTCk7CiAJYS0+YXJjaGl2ZS5tYWdpYyA9IEFSQ0hJVkVfTUFUQ0hfTUFHSUM7CiAJYS0+YXJjaGl2ZS5zdGF0ZSA9IEFSQ0hJVkVfU1RBVEVfTkVXOworCWEtPnJlY3Vyc2l2ZV9pbmNsdWRlID0gMTsKIAltYXRjaF9saXN0X2luaXQoJihhLT5pbmNsdXNpb25zKSk7CiAJbWF0Y2hfbGlzdF9pbml0KCYoYS0+ZXhjbHVzaW9ucykpOwogCV9fYXJjaGl2ZV9yYl90cmVlX2luaXQoJihhLT5leGNsdXNpb25fdHJlZSksICZyYl9vcHNfbWJzKTsKQEAgLTQ3MSw2ICs0NzUsMjggQEAKIH0KIAogLyoKKyAqIFdoZW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZiBkaXJlY3RvcnkgY29udGVudCBpcyBlbmFibGVkLAorICogYW4gaW5jbHVzaW9uIHBhdHRlcm4gdGhhdCBtYXRjaGVzIGEgZGlyZWN0b3J5IHdpbGwgYWxzbworICogaW5jbHVkZSBldmVyeXRoaW5nIGJlbmVhdGggdGhhdCBkaXJlY3RvcnkuIEVuYWJsZWQgYnkgZGVmYXVsdC4KKyAqCisgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIEdOVSB0YXIsIGV4Y2x1c2lvbiBwYXR0ZXJucyBhbHdheXMKKyAqIG1hdGNoIGlmIGEgc3Vic2V0IG9mIHRoZSBmdWxsIHBhdGNoIG1hdGNoZXMgKGkuZS4sIHRoZXkgYXJlCisgKiBhcmUgbm90IHJvb3RlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXRoKSBhbmQgdGh1cyB0aGVyZQorICogaXMgbm8gY29ycmVzcG9uZGluZyBub24tcmVjdXJzaXZlIGV4Y2x1c2lvbiBtb2RlLgorICovCitpbnQKK2FyY2hpdmVfbWF0Y2hfc2V0X2luY2x1c2lvbl9yZWN1cnNpb24oc3RydWN0IGFyY2hpdmUgKl9hLCBpbnQgZW5hYmxlZCkKK3sKKwlzdHJ1Y3QgYXJjaGl2ZV9tYXRjaCAqYTsKKworCWFyY2hpdmVfY2hlY2tfbWFnaWMoX2EsIEFSQ0hJVkVfTUFUQ0hfTUFHSUMsCisJICAgIEFSQ0hJVkVfU1RBVEVfTkVXLCAiYXJjaGl2ZV9tYXRjaF9zZXRfaW5jbHVzaW9uX3JlY3Vyc2lvbiIpOworCWEgPSAoc3RydWN0IGFyY2hpdmVfbWF0Y2ggKilfYTsKKwlhLT5yZWN1cnNpdmVfaW5jbHVkZSA9IGVuYWJsZWQ7CisJcmV0dXJuIChBUkNISVZFX09LKTsKK30KKworLyoKICAqIFV0aWxpdHkgZnVuY3Rpb25zIHRvIGdldCBzdGF0aXN0aWMgaW5mb3JtYXRpb24gZm9yIGluY2x1c2lvbiBwYXR0ZXJucy4KICAqLwogaW50CkBAIC03ODEsNyArODA3LDEwIEBACiBtYXRjaF9wYXRoX2luY2x1c2lvbihzdHJ1Y3QgYXJjaGl2ZV9tYXRjaCAqYSwgc3RydWN0IG1hdGNoICptLAogICAgIGludCBtYnMsIGNvbnN0IHZvaWQgKnBuKQogewotCWludCBmbGFnID0gUEFUSE1BVENIX05PX0FOQ0hPUl9FTkQ7CisJLyogUmVjdXJzaXZlIG9wZXJhdGlvbiByZXF1aXJlcyBvbmx5IGEgcHJlZml4IG1hdGNoLiAqLworCWludCBmbGFnID0gYS0+cmVjdXJzaXZlX2luY2x1ZGUgPworCQlQQVRITUFUQ0hfTk9fQU5DSE9SX0VORCA6CisJCTA7CiAJaW50IHI7CiAKIAlpZiAobWJzKSB7CkBAIC0xMjMyLDcgKzEyNjEsNyBAQAogCQlhcmNoaXZlX3NldF9lcnJvcigmKGEtPmFyY2hpdmUpLCBFSU5WQUwsICJwYXRobmFtZSBpcyBlbXB0eSIpOwogCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKIAl9Ci0JaWYgKHN0YXQocGF0aCwgJnN0KSAhPSAwKSB7CisJaWYgKGxhX3N0YXQocGF0aCwgJnN0KSAhPSAwKSB7CiAJCWFyY2hpdmVfc2V0X2Vycm9yKCYoYS0+YXJjaGl2ZSksIGVycm5vLCAiRmFpbGVkIHRvIHN0YXQoKSIpOwogCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKIAl9CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9vcGVuc3NsX2V2cF9wcml2YXRlLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9vcGVuc3NsX2V2cF9wcml2YXRlLmgKaW5kZXggNDNhM2NjYy4uZWJiMDY3MCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfb3BlbnNzbF9ldnBfcHJpdmF0ZS5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX29wZW5zc2xfZXZwX3ByaXZhdGUuaApAQCAtMjIsOSArMjIsMTQgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLworCiAjaWZuZGVmIEFSQ0hJVkVfT1BFTlNTTF9FVlBfUFJJVkFURV9IX0lOQ0xVREVECiAjZGVmaW5lIEFSQ0hJVkVfT1BFTlNTTF9FVlBfUFJJVkFURV9IX0lOQ0xVREVECiAKKyNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECisjZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KKyNlbmRpZgorCiAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KICNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2x2Lmg+CiAKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX29wZW5zc2xfaG1hY19wcml2YXRlLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9vcGVuc3NsX2htYWNfcHJpdmF0ZS5oCmluZGV4IDkyMTI0OWIuLjI1YzhkZGEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX29wZW5zc2xfaG1hY19wcml2YXRlLmgKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfb3BlbnNzbF9obWFjX3ByaXZhdGUuaApAQCAtMjIsOSArMjIsMTQgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLworCiAjaWZuZGVmIEFSQ0hJVkVfT1BFTlNTTF9ITUFDX1BSSVZBVEVfSF9JTkNMVURFRAogI2RlZmluZSBBUkNISVZFX09QRU5TU0xfSE1BQ19QUklWQVRFX0hfSU5DTFVERUQKIAorI2lmbmRlZiBfX0xJQkFSQ0hJVkVfQlVJTEQKKyNlcnJvciBUaGlzIGhlYWRlciBpcyBvbmx5IHRvIGJlIHVzZWQgaW50ZXJuYWxseSB0byBsaWJhcmNoaXZlLgorI2VuZGlmCisKICNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KICNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2x2Lmg+CiAKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX29wdGlvbnNfcHJpdmF0ZS5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfb3B0aW9uc19wcml2YXRlLmgKaW5kZXggNmVmMDE2NS4uOWE3ZjgwOCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfb3B0aW9uc19wcml2YXRlLmgKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfb3B0aW9uc19wcml2YXRlLmgKQEAgLTIzLDYgKzIzLDkgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2lmbmRlZiBBUkNISVZFX09QVElPTlNfUFJJVkFURV9IX0lOQ0xVREVECisjZGVmaW5lIEFSQ0hJVkVfT1BUSU9OU19QUklWQVRFX0hfSU5DTFVERUQKKwogI2luY2x1ZGUgImFyY2hpdmVfcGxhdGZvcm0uaCIKIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKIApAQCAtNDUsMyArNDgsNCBAQAogICAgIGNvbnN0IGNoYXIgKm0sIGNvbnN0IGNoYXIgKm8sIGNvbnN0IGNoYXIgKnYsCiAgICAgb3B0aW9uX2hhbmRsZXIgdXNlX2Zvcm1hdF9vcHRpb24sIG9wdGlvbl9oYW5kbGVyIHVzZV9maWx0ZXJfb3B0aW9uKTsKIAorI2VuZGlmCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wYWNrX2Rldi5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcGFja19kZXYuaAppbmRleCA3NDlmZDNkLi5lYWYyM2UzIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wYWNrX2Rldi5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3BhY2tfZGV2LmgKQEAgLTMxLDggKzMxLDggQEAKIAogLyogT3JpZ2luYWxseSBmcm9tIE5ldEJTRCdzIG1rbm9kKDgpIHNvdXJjZS4gKi8KIAotI2lmbmRlZglfUEFDS19ERVZfSAotI2RlZmluZQlfUEFDS19ERVZfSAorI2lmbmRlZglBUkNISVZFX1BBQ0tfREVWX0gKKyNkZWZpbmUJQVJDSElWRV9QQUNLX0RFVl9ICiAKIHR5cGVkZWYJZGV2X3QgcGFja190KGludCwgdW5zaWduZWQgbG9uZyBbXSwgY29uc3QgY2hhciAqKik7CiAKQEAgLTQ2LDQgKzQ2LDQgQEAKIAkJCQkJICgoKHkpIDw8IDEyKSAmIDB4ZmZmMDAwMDApIHwgXAogCQkJCQkgKCgoeSkgPDwgIDApICYgMHgwMDAwMDBmZikpKQogCi0jZW5kaWYJLyogX1BBQ0tfREVWX0ggKi8KKyNlbmRpZgkvKiBBUkNISVZFX1BBQ0tfREVWX0ggKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3BhdGhtYXRjaC5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcGF0aG1hdGNoLmgKaW5kZXggZTY5MDE3Ny4uOTk5NTE0MiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcGF0aG1hdGNoLmgKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcGF0aG1hdGNoLmgKQEAgLTI2LDE1ICsyNiwxNSBAQAogICogJEZyZWVCU0QkCiAgKi8KIAorI2lmbmRlZiBBUkNISVZFX1BBVEhNQVRDSF9ICisjZGVmaW5lIEFSQ0hJVkVfUEFUSE1BVENIX0gKKwogI2lmbmRlZiBfX0xJQkFSQ0hJVkVfQlVJTEQKICNpZm5kZWYgX19MSUJBUkNISVZFX1RFU1QKICNlcnJvciBUaGlzIGhlYWRlciBpcyBvbmx5IHRvIGJlIHVzZWQgaW50ZXJuYWxseSB0byBsaWJhcmNoaXZlLgogI2VuZGlmCiAjZW5kaWYKIAotI2lmbmRlZiBBUkNISVZFX1BBVEhNQVRDSF9ICi0jZGVmaW5lIEFSQ0hJVkVfUEFUSE1BVENIX0gKLQogLyogRG9uJ3QgYW5jaG9yIGF0IGJlZ2lubmluZyB1bmxlc3MgdGhlIHBhdHRlcm4gc3RhcnRzIHdpdGggIl4iICovCiAjZGVmaW5lIFBBVEhNQVRDSF9OT19BTkNIT1JfU1RBUlQJMQogLyogRG9uJ3QgYW5jaG9yIGF0IGVuZCB1bmxlc3MgdGhlIHBhdHRlcm4gZW5kcyB3aXRoICIkIiAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcGxhdGZvcm0uaCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3BsYXRmb3JtLmgKaW5kZXggZTE2MWU2NC4uOTBkYjMxZiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcGxhdGZvcm0uaAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wbGF0Zm9ybS5oCkBAIC02OSw2ICs2OSw4IEBACiAgKiBlaXRoZXIgV2luZG93cyBvciBQb3NpeCBBUElzLiAqLwogI2lmIChkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMikpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCiAjaW5jbHVkZSAiYXJjaGl2ZV93aW5kb3dzLmgiCisjZWxzZQorI2RlZmluZSBsYV9zdGF0KHBhdGgsc3RyZWYpCQlzdGF0KHBhdGgsc3RyZWYpCiAjZW5kaWYKIAogLyoKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3BsYXRmb3JtX2FjbC5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcGxhdGZvcm1fYWNsLmgKaW5kZXggMzQ5OGY3OC4uMjY0ZTZkZSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcGxhdGZvcm1fYWNsLmgKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcGxhdGZvcm1fYWNsLmgKQEAgLTMwLDYgKzMwLDEyIEBACiAjaWZuZGVmIEFSQ0hJVkVfUExBVEZPUk1fQUNMX0hfSU5DTFVERUQKICNkZWZpbmUgQVJDSElWRV9QTEFURk9STV9BQ0xfSF9JTkNMVURFRAogCisjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAorI2lmbmRlZiBfX0xJQkFSQ0hJVkVfVEVTVF9DT01NT04KKyNlcnJvciBUaGlzIGhlYWRlciBpcyBvbmx5IHRvIGJlIHVzZWQgaW50ZXJuYWxseSB0byBsaWJhcmNoaXZlLgorI2VuZGlmCisjZW5kaWYKKwogLyoKICAqIERldGVybWluZSB3aGF0IEFDTCB0eXBlcyBhcmUgc3VwcG9ydGVkCiAgKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3BsYXRmb3JtX3hhdHRyLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wbGF0Zm9ybV94YXR0ci5oCmluZGV4IDRlZGZlY2YuLmFkNGI5MGEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3BsYXRmb3JtX3hhdHRyLmgKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcGxhdGZvcm1feGF0dHIuaApAQCAtMzAsNiArMzAsMTIgQEAKICNpZm5kZWYgQVJDSElWRV9QTEFURk9STV9YQVRUUl9IX0lOQ0xVREVECiAjZGVmaW5lIEFSQ0hJVkVfUExBVEZPUk1fWEFUVFJfSF9JTkNMVURFRAogCisjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAorI2lmbmRlZiBfX0xJQkFSQ0hJVkVfVEVTVF9DT01NT04KKyNlcnJvciBUaGlzIGhlYWRlciBpcyBvbmx5IHRvIGJlIHVzZWQgaW50ZXJuYWxseSB0byBsaWJhcmNoaXZlLgorI2VuZGlmCisjZW5kaWYKKwogLyoKICAqIERldGVybWluZSBpZiB3ZSBzdXBwb3J0IGV4dGVuZGVkIGF0dHJpYnV0ZXMKICAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcHBtZDcuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3BwbWQ3LmMKaW5kZXggZDBiYWNjNi4uNDAyOTM5NSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcHBtZDcuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wcG1kNy5jCkBAIC0xMDAwLDcgKzEwMDAsNyBAQAogCiBzdGF0aWMgdm9pZCBSYW5nZUVuY19FbmNvZGUoQ1BwbWQ3el9SYW5nZUVuYyAqcCwgVUludDMyIHN0YXJ0LCBVSW50MzIgc2l6ZSwgVUludDMyIHRvdGFsKQogewotICBwLT5Mb3cgKz0gc3RhcnQgKiAocC0+UmFuZ2UgLz0gdG90YWwpOworICBwLT5Mb3cgKz0gKFVJbnQ2NClzdGFydCAqIChVSW50NjQpKHAtPlJhbmdlIC89IHRvdGFsKTsKICAgcC0+UmFuZ2UgKj0gc2l6ZTsKICAgd2hpbGUgKHAtPlJhbmdlIDwga1RvcFZhbHVlKQogICB7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wcG1kN19wcml2YXRlLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wcG1kN19wcml2YXRlLmgKaW5kZXggNTc3ZDZmYi4uNzFiOTU0NCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcHBtZDdfcHJpdmF0ZS5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3BwbWQ3X3ByaXZhdGUuaApAQCAtNiwxMyArNiwxMyBAQAogb2YgUmFuZ2VDb2RlciBmcm9tIDd6LCBpbnN0ZWFkIG9mIFJhbmdlQ29kZXIgZnJvbSBvcmlnaW5hbCBQUE1kIHZhci5ILgogSWYgeW91IG5lZWQgdGhlIGNvbXBhdGliaWxpdHkgd2l0aCBvcmlnaW5hbCBQUE1kIHZhci5ILCB5b3UgY2FuIHVzZSBleHRlcm5hbCBSYW5nZURlY29kZXIgKi8KIAorI2lmbmRlZiBBUkNISVZFX1BQTUQ3X1BSSVZBVEVfSF9JTkNMVURFRAorI2RlZmluZSBBUkNISVZFX1BQTUQ3X1BSSVZBVEVfSF9JTkNMVURFRAorCiAjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAogI2Vycm9yIFRoaXMgaGVhZGVyIGlzIG9ubHkgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHRvIGxpYmFyY2hpdmUuCiAjZW5kaWYKIAotI2lmbmRlZiBBUkNISVZFX1BQTUQ3X1BSSVZBVEVfSF9JTkNMVURFRAotI2RlZmluZSBBUkNISVZFX1BQTUQ3X1BSSVZBVEVfSF9JTkNMVURFRAotCiAjaW5jbHVkZSAiYXJjaGl2ZV9wcG1kX3ByaXZhdGUuaCIKIAogI2RlZmluZSBQUE1EN19NSU5fT1JERVIgMgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcHBtZDguYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3BwbWQ4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE3NzkzOQotLS0gL2Rldi9udWxsCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3BwbWQ4LmMKQEAgLTAsMCArMSwxMjg3IEBACisvKiBQcG1kOC5jIC0tIFBQTWRJIGNvZGVjCisyMDE2LTA1LTIxIDogSWdvciBQYXZsb3YgOiBQdWJsaWMgZG9tYWluCitUaGlzIGNvZGUgaXMgYmFzZWQgb24gUFBNZCB2YXIuSSAoMjAwMik6IERtaXRyeSBTaGthcmluIDogUHVibGljIGRvbWFpbiAqLworCisjaW5jbHVkZSAiYXJjaGl2ZV9wbGF0Zm9ybS5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJhcmNoaXZlX3BwbWQ4X3ByaXZhdGUuaCIKKworY29uc3QgQnl0ZSBQUE1EOF9rRXhwRXNjYXBlWzE2XSA9IHsgMjUsIDE0LCA5LCA3LCA1LCA1LCA0LCA0LCA0LCAzLCAzLCAzLCAyLCAyLCAyLCAyIH07CitzdGF0aWMgY29uc3QgVUludDE2IGtJbml0QmluRXNjW10gPSB7IDB4M0NERCwgMHgxRjNGLCAweDU5QkYsIDB4NDhGMywgMHg2NEExLCAweDVBQkMsIDB4NjYzMiwgMHg2MDUxfTsKKworI2RlZmluZSBNQVhfRlJFUSAxMjQKKyNkZWZpbmUgVU5JVF9TSVpFIDEyCisKKyNkZWZpbmUgVTJCKG51KSAoKFVJbnQzMikobnUpICogVU5JVF9TSVpFKQorI2RlZmluZSBVMkkobnUpIChwLT5Vbml0czJJbmR4WyhudSkgLSAxXSkKKyNkZWZpbmUgSTJVKGluZHgpIChwLT5JbmR4MlVuaXRzW2luZHhdKQorCisjaWZkZWYgUFBNRF8zMkJJVAorICAjZGVmaW5lIFJFRihwdHIpIChwdHIpCisjZWxzZQorICAjZGVmaW5lIFJFRihwdHIpICgoVUludDMyKSgoQnl0ZSAqKShwdHIpIC0gKHApLT5CYXNlKSkKKyNlbmRpZgorCisjZGVmaW5lIFNUQVRTX1JFRihwdHIpICgoQ1BwbWRfU3RhdGVfUmVmKVJFRihwdHIpKQorCisjZGVmaW5lIENUWChyZWYpICgoQ1BwbWQ4X0NvbnRleHQgKilQcG1kOF9HZXRDb250ZXh0KHAsIHJlZikpCisjZGVmaW5lIFNUQVRTKGN0eCkgUHBtZDhfR2V0U3RhdHMocCwgY3R4KQorI2RlZmluZSBPTkVfU1RBVEUoY3R4KSBQcG1kOENvbnRleHRfT25lU3RhdGUoY3R4KQorI2RlZmluZSBTVUZGSVgoY3R4KSBDVFgoKGN0eCktPlN1ZmZpeCkKKworI2RlZmluZSBrVG9wICgxIDw8IDI0KQorI2RlZmluZSBrQm90ICgxIDw8IDE1KQorCit0eXBlZGVmIENQcG1kOF9Db250ZXh0ICogQ1RYX1BUUjsKKworc3RydWN0IENQcG1kOF9Ob2RlXzsKKwordHlwZWRlZgorICAjaWZkZWYgUFBNRF8zMkJJVAorICAgIHN0cnVjdCBDUHBtZDhfTm9kZV8gKgorICAjZWxzZQorICAgIFVJbnQzMgorICAjZW5kaWYKKyAgQ1BwbWQ4X05vZGVfUmVmOworCit0eXBlZGVmIHN0cnVjdCBDUHBtZDhfTm9kZV8KK3sKKyAgVUludDMyIFN0YW1wOworICBDUHBtZDhfTm9kZV9SZWYgTmV4dDsKKyAgVUludDMyIE5VOworfSBDUHBtZDhfTm9kZTsKKworI2lmZGVmIFBQTURfMzJCSVQKKyAgI2RlZmluZSBOT0RFKHB0cikgKHB0cikKKyNlbHNlCisgICNkZWZpbmUgTk9ERShvZmZzKSAoKENQcG1kOF9Ob2RlICopKHAtPkJhc2UgKyAob2ZmcykpKQorI2VuZGlmCisKKyNkZWZpbmUgRU1QVFlfTk9ERSAweEZGRkZGRkZGCisKK3ZvaWQgUHBtZDhfQ29uc3RydWN0KENQcG1kOCAqcCkKK3sKKyAgdW5zaWduZWQgaSwgaywgbTsKKworICBwLT5CYXNlID0gMDsKKworICBmb3IgKGkgPSAwLCBrID0gMDsgaSA8IFBQTURfTlVNX0lOREVYRVM7IGkrKykKKyAgeworICAgIHVuc2lnbmVkIHN0ZXAgPSAoaSA+PSAxMiA/IDQgOiAoaSA+PiAyKSArIDEpOworICAgIGRvIHsgcC0+VW5pdHMySW5keFtrKytdID0gKEJ5dGUpaTsgfSB3aGlsZSAoLS1zdGVwKTsKKyAgICBwLT5JbmR4MlVuaXRzW2ldID0gKEJ5dGUpazsKKyAgfQorCisgIHAtPk5TMkJTSW5keFswXSA9ICgwIDw8IDEpOworICBwLT5OUzJCU0luZHhbMV0gPSAoMSA8PCAxKTsKKyAgbWVtc2V0KHAtPk5TMkJTSW5keCArIDIsICgyIDw8IDEpLCA5KTsKKyAgbWVtc2V0KHAtPk5TMkJTSW5keCArIDExLCAoMyA8PCAxKSwgMjU2IC0gMTEpOworCisgIGZvciAoaSA9IDA7IGkgPCA1OyBpKyspCisgICAgcC0+TlMySW5keFtpXSA9IChCeXRlKWk7CisgIGZvciAobSA9IGksIGsgPSAxOyBpIDwgMjYwOyBpKyspCisgIHsKKyAgICBwLT5OUzJJbmR4W2ldID0gKEJ5dGUpbTsKKyAgICBpZiAoLS1rID09IDApCisgICAgICBrID0gKCsrbSkgLSA0OworICB9Cit9CisKK3ZvaWQgUHBtZDhfRnJlZShDUHBtZDggKnApCit7CisgIGZyZWUocC0+QmFzZSk7CisgIHAtPlNpemUgPSAwOworICBwLT5CYXNlID0gMDsKK30KKworQm9vbCBQcG1kOF9BbGxvYyhDUHBtZDggKnAsIFVJbnQzMiBzaXplKQoreworICBpZiAocC0+QmFzZSA9PSAwIHx8IHAtPlNpemUgIT0gc2l6ZSkKKyAgeworICAgIFBwbWQ4X0ZyZWUocCk7CisgICAgcC0+QWxpZ25PZmZzZXQgPQorICAgICAgI2lmZGVmIFBQTURfMzJCSVQKKyAgICAgICAgKDQgLSBzaXplKSAmIDM7CisgICAgICAjZWxzZQorICAgICAgICA0IC0gKHNpemUgJiAzKTsKKyAgICAgICNlbmRpZgorICAgIGlmICgocC0+QmFzZSA9IChCeXRlICopbWFsbG9jKHAtPkFsaWduT2Zmc2V0ICsgc2l6ZSkpID09IDApCisgICAgICByZXR1cm4gRmFsc2U7CisgICAgcC0+U2l6ZSA9IHNpemU7CisgIH0KKyAgcmV0dXJuIFRydWU7Cit9CisKK3N0YXRpYyB2b2lkIEluc2VydE5vZGUoQ1BwbWQ4ICpwLCB2b2lkICpub2RlLCB1bnNpZ25lZCBpbmR4KQoreworICAoKENQcG1kOF9Ob2RlICopbm9kZSktPlN0YW1wID0gRU1QVFlfTk9ERTsKKyAgKChDUHBtZDhfTm9kZSAqKW5vZGUpLT5OZXh0ID0gKENQcG1kOF9Ob2RlX1JlZilwLT5GcmVlTGlzdFtpbmR4XTsKKyAgKChDUHBtZDhfTm9kZSAqKW5vZGUpLT5OVSA9IEkyVShpbmR4KTsKKyAgcC0+RnJlZUxpc3RbaW5keF0gPSBSRUYobm9kZSk7CisgIHAtPlN0YW1wc1tpbmR4XSsrOworfQorCitzdGF0aWMgdm9pZCAqUmVtb3ZlTm9kZShDUHBtZDggKnAsIHVuc2lnbmVkIGluZHgpCit7CisgIENQcG1kOF9Ob2RlICpub2RlID0gTk9ERSgoQ1BwbWQ4X05vZGVfUmVmKXAtPkZyZWVMaXN0W2luZHhdKTsKKyAgcC0+RnJlZUxpc3RbaW5keF0gPSBub2RlLT5OZXh0OworICBwLT5TdGFtcHNbaW5keF0tLTsKKyAgcmV0dXJuIG5vZGU7Cit9CisKK3N0YXRpYyB2b2lkIFNwbGl0QmxvY2soQ1BwbWQ4ICpwLCB2b2lkICpwdHIsIHVuc2lnbmVkIG9sZEluZHgsIHVuc2lnbmVkIG5ld0luZHgpCit7CisgIHVuc2lnbmVkIGksIG51ID0gSTJVKG9sZEluZHgpIC0gSTJVKG5ld0luZHgpOworICBwdHIgPSAoQnl0ZSAqKXB0ciArIFUyQihJMlUobmV3SW5keCkpOworICBpZiAoSTJVKGkgPSBVMkkobnUpKSAhPSBudSkKKyAgeworICAgIHVuc2lnbmVkIGsgPSBJMlUoLS1pKTsKKyAgICBJbnNlcnROb2RlKHAsICgoQnl0ZSAqKXB0cikgKyBVMkIoayksIG51IC0gayAtIDEpOworICB9CisgIEluc2VydE5vZGUocCwgcHRyLCBpKTsKK30KKworc3RhdGljIHZvaWQgR2x1ZUZyZWVCbG9ja3MoQ1BwbWQ4ICpwKQoreworICBDUHBtZDhfTm9kZV9SZWYgaGVhZCA9IDA7CisgIENQcG1kOF9Ob2RlX1JlZiAqcHJldiA9ICZoZWFkOworICB1bnNpZ25lZCBpOworCisgIHAtPkdsdWVDb3VudCA9IDEgPDwgMTM7CisgIG1lbXNldChwLT5TdGFtcHMsIDAsIHNpemVvZihwLT5TdGFtcHMpKTsKKyAgCisgIC8qIE9yZGVyLTAgY29udGV4dCBpcyBhbHdheXMgYXQgdG9wIFVOSVQsIHNvIHdlIGRvbid0IG5lZWQgZ3VhcmQgTk9ERSBhdCB0aGUgZW5kLgorICAgICBBbGwgYmxvY2tzIHVwIHRvIHAtPkxvVW5pdCBjYW4gYmUgZnJlZSwgc28gd2UgbmVlZCBndWFyZCBOT0RFIGF0IExvVW5pdC4gKi8KKyAgaWYgKHAtPkxvVW5pdCAhPSBwLT5IaVVuaXQpCisgICAgKChDUHBtZDhfTm9kZSAqKXAtPkxvVW5pdCktPlN0YW1wID0gMDsKKworICAvKiBHbHVlIGZyZWUgYmxvY2tzICovCisgIGZvciAoaSA9IDA7IGkgPCBQUE1EX05VTV9JTkRFWEVTOyBpKyspCisgIHsKKyAgICBDUHBtZDhfTm9kZV9SZWYgbmV4dCA9IChDUHBtZDhfTm9kZV9SZWYpcC0+RnJlZUxpc3RbaV07CisgICAgcC0+RnJlZUxpc3RbaV0gPSAwOworICAgIHdoaWxlIChuZXh0ICE9IDApCisgICAgeworICAgICAgQ1BwbWQ4X05vZGUgKm5vZGUgPSBOT0RFKG5leHQpOworICAgICAgaWYgKG5vZGUtPk5VICE9IDApCisgICAgICB7CisgICAgICAgIENQcG1kOF9Ob2RlICpub2RlMjsKKyAgICAgICAgKnByZXYgPSBuZXh0OworICAgICAgICBwcmV2ID0gJihub2RlLT5OZXh0KTsKKyAgICAgICAgd2hpbGUgKChub2RlMiA9IG5vZGUgKyBub2RlLT5OVSktPlN0YW1wID09IEVNUFRZX05PREUpCisgICAgICAgIHsKKyAgICAgICAgICBub2RlLT5OVSArPSBub2RlMi0+TlU7CisgICAgICAgICAgbm9kZTItPk5VID0gMDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgbmV4dCA9IG5vZGUtPk5leHQ7CisgICAgfQorICB9CisgICpwcmV2ID0gMDsKKyAgCisgIC8qIEZpbGwgbGlzdHMgb2YgZnJlZSBibG9ja3MgKi8KKyAgd2hpbGUgKGhlYWQgIT0gMCkKKyAgeworICAgIENQcG1kOF9Ob2RlICpub2RlID0gTk9ERShoZWFkKTsKKyAgICB1bnNpZ25lZCBudTsKKyAgICBoZWFkID0gbm9kZS0+TmV4dDsKKyAgICBudSA9IG5vZGUtPk5VOworICAgIGlmIChudSA9PSAwKQorICAgICAgY29udGludWU7CisgICAgZm9yICg7IG51ID4gMTI4OyBudSAtPSAxMjgsIG5vZGUgKz0gMTI4KQorICAgICAgSW5zZXJ0Tm9kZShwLCBub2RlLCBQUE1EX05VTV9JTkRFWEVTIC0gMSk7CisgICAgaWYgKEkyVShpID0gVTJJKG51KSkgIT0gbnUpCisgICAgeworICAgICAgdW5zaWduZWQgayA9IEkyVSgtLWkpOworICAgICAgSW5zZXJ0Tm9kZShwLCBub2RlICsgaywgbnUgLSBrIC0gMSk7CisgICAgfQorICAgIEluc2VydE5vZGUocCwgbm9kZSwgaSk7CisgIH0KK30KKworc3RhdGljIHZvaWQgKkFsbG9jVW5pdHNSYXJlKENQcG1kOCAqcCwgdW5zaWduZWQgaW5keCkKK3sKKyAgdW5zaWduZWQgaTsKKyAgdm9pZCAqcmV0VmFsOworICBpZiAocC0+R2x1ZUNvdW50ID09IDApCisgIHsKKyAgICBHbHVlRnJlZUJsb2NrcyhwKTsKKyAgICBpZiAocC0+RnJlZUxpc3RbaW5keF0gIT0gMCkKKyAgICAgIHJldHVybiBSZW1vdmVOb2RlKHAsIGluZHgpOworICB9CisgIGkgPSBpbmR4OworICBkbworICB7CisgICAgaWYgKCsraSA9PSBQUE1EX05VTV9JTkRFWEVTKQorICAgIHsKKyAgICAgIFVJbnQzMiBudW1CeXRlcyA9IFUyQihJMlUoaW5keCkpOworICAgICAgcC0+R2x1ZUNvdW50LS07CisgICAgICByZXR1cm4gKChVSW50MzIpKHAtPlVuaXRzU3RhcnQgLSBwLT5UZXh0KSA+IG51bUJ5dGVzKSA/IChwLT5Vbml0c1N0YXJ0IC09IG51bUJ5dGVzKSA6IChOVUxMKTsKKyAgICB9CisgIH0KKyAgd2hpbGUgKHAtPkZyZWVMaXN0W2ldID09IDApOworICByZXRWYWwgPSBSZW1vdmVOb2RlKHAsIGkpOworICBTcGxpdEJsb2NrKHAsIHJldFZhbCwgaSwgaW5keCk7CisgIHJldHVybiByZXRWYWw7Cit9CisKK3N0YXRpYyB2b2lkICpBbGxvY1VuaXRzKENQcG1kOCAqcCwgdW5zaWduZWQgaW5keCkKK3sKKyAgVUludDMyIG51bUJ5dGVzOworICBpZiAocC0+RnJlZUxpc3RbaW5keF0gIT0gMCkKKyAgICByZXR1cm4gUmVtb3ZlTm9kZShwLCBpbmR4KTsKKyAgbnVtQnl0ZXMgPSBVMkIoSTJVKGluZHgpKTsKKyAgaWYgKG51bUJ5dGVzIDw9IChVSW50MzIpKHAtPkhpVW5pdCAtIHAtPkxvVW5pdCkpCisgIHsKKyAgICB2b2lkICpyZXRWYWwgPSBwLT5Mb1VuaXQ7CisgICAgcC0+TG9Vbml0ICs9IG51bUJ5dGVzOworICAgIHJldHVybiByZXRWYWw7CisgIH0KKyAgcmV0dXJuIEFsbG9jVW5pdHNSYXJlKHAsIGluZHgpOworfQorCisjZGVmaW5lIE15TWVtMTJDcHkoZGVzdCwgc3JjLCBudW0pIFwKKyAgeyBVSW50MzIgKmQgPSAoVUludDMyICopZGVzdDsgY29uc3QgVUludDMyICp6ID0gKGNvbnN0IFVJbnQzMiAqKXNyYzsgVUludDMyIG4gPSBudW07IFwKKyAgICBkbyB7IGRbMF0gPSB6WzBdOyBkWzFdID0gelsxXTsgZFsyXSA9IHpbMl07IHogKz0gMzsgZCArPSAzOyB9IHdoaWxlICgtLW4pOyB9CisKK3N0YXRpYyB2b2lkICpTaHJpbmtVbml0cyhDUHBtZDggKnAsIHZvaWQgKm9sZFB0ciwgdW5zaWduZWQgb2xkTlUsIHVuc2lnbmVkIG5ld05VKQoreworICB1bnNpZ25lZCBpMCA9IFUySShvbGROVSk7CisgIHVuc2lnbmVkIGkxID0gVTJJKG5ld05VKTsKKyAgaWYgKGkwID09IGkxKQorICAgIHJldHVybiBvbGRQdHI7CisgIGlmIChwLT5GcmVlTGlzdFtpMV0gIT0gMCkKKyAgeworICAgIHZvaWQgKnB0ciA9IFJlbW92ZU5vZGUocCwgaTEpOworICAgIE15TWVtMTJDcHkocHRyLCBvbGRQdHIsIG5ld05VKTsKKyAgICBJbnNlcnROb2RlKHAsIG9sZFB0ciwgaTApOworICAgIHJldHVybiBwdHI7CisgIH0KKyAgU3BsaXRCbG9jayhwLCBvbGRQdHIsIGkwLCBpMSk7CisgIHJldHVybiBvbGRQdHI7Cit9CisKK3N0YXRpYyB2b2lkIEZyZWVVbml0cyhDUHBtZDggKnAsIHZvaWQgKnB0ciwgdW5zaWduZWQgbnUpCit7CisgIEluc2VydE5vZGUocCwgcHRyLCBVMkkobnUpKTsKK30KKworc3RhdGljIHZvaWQgU3BlY2lhbEZyZWVVbml0KENQcG1kOCAqcCwgdm9pZCAqcHRyKQoreworICBpZiAoKEJ5dGUgKilwdHIgIT0gcC0+VW5pdHNTdGFydCkKKyAgICBJbnNlcnROb2RlKHAsIHB0ciwgMCk7CisgIGVsc2UKKyAgeworICAgICNpZmRlZiBQUE1EOF9GUkVFWkVfU1VQUE9SVAorICAgICooVUludDMyICopcHRyID0gRU1QVFlfTk9ERTsgLyogaXQncyB1c2VkIGZvciAoRmxhZ3MgPT0gMHhGRikgY2hlY2sgaW4gUmVtb3ZlQmluQ29udGV4dHMgKi8KKyAgICAjZW5kaWYKKyAgICBwLT5Vbml0c1N0YXJ0ICs9IFVOSVRfU0laRTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCAqTW92ZVVuaXRzVXAoQ1BwbWQ4ICpwLCB2b2lkICpvbGRQdHIsIHVuc2lnbmVkIG51KQoreworICB1bnNpZ25lZCBpbmR4ID0gVTJJKG51KTsKKyAgdm9pZCAqcHRyOworICBpZiAoKEJ5dGUgKilvbGRQdHIgPiBwLT5Vbml0c1N0YXJ0ICsgMTYgKiAxMDI0IHx8IFJFRihvbGRQdHIpID4gcC0+RnJlZUxpc3RbaW5keF0pCisgICAgcmV0dXJuIG9sZFB0cjsKKyAgcHRyID0gUmVtb3ZlTm9kZShwLCBpbmR4KTsKKyAgTXlNZW0xMkNweShwdHIsIG9sZFB0ciwgbnUpOworICBpZiAoKEJ5dGUqKW9sZFB0ciAhPSBwLT5Vbml0c1N0YXJ0KQorICAgIEluc2VydE5vZGUocCwgb2xkUHRyLCBpbmR4KTsKKyAgZWxzZQorICAgIHAtPlVuaXRzU3RhcnQgKz0gVTJCKEkyVShpbmR4KSk7CisgIHJldHVybiBwdHI7Cit9CisKK3N0YXRpYyB2b2lkIEV4cGFuZFRleHRBcmVhKENQcG1kOCAqcCkKK3sKKyAgVUludDMyIGNvdW50W1BQTURfTlVNX0lOREVYRVNdOworICB1bnNpZ25lZCBpOworICBtZW1zZXQoY291bnQsIDAsIHNpemVvZihjb3VudCkpOworICBpZiAocC0+TG9Vbml0ICE9IHAtPkhpVW5pdCkKKyAgICAoKENQcG1kOF9Ob2RlICopcC0+TG9Vbml0KS0+U3RhbXAgPSAwOworICAKKyAgeworICAgIENQcG1kOF9Ob2RlICpub2RlID0gKENQcG1kOF9Ob2RlICopcC0+VW5pdHNTdGFydDsKKyAgICBmb3IgKDsgbm9kZS0+U3RhbXAgPT0gRU1QVFlfTk9ERTsgbm9kZSArPSBub2RlLT5OVSkKKyAgICB7CisgICAgICBub2RlLT5TdGFtcCA9IDA7CisgICAgICBjb3VudFtVMkkobm9kZS0+TlUpXSsrOworICAgIH0KKyAgICBwLT5Vbml0c1N0YXJ0ID0gKEJ5dGUgKilub2RlOworICB9CisgIAorICBmb3IgKGkgPSAwOyBpIDwgUFBNRF9OVU1fSU5ERVhFUzsgaSsrKQorICB7CisgICAgQ1BwbWQ4X05vZGVfUmVmICpuZXh0ID0gKENQcG1kOF9Ob2RlX1JlZiAqKSZwLT5GcmVlTGlzdFtpXTsKKyAgICB3aGlsZSAoY291bnRbaV0gIT0gMCkKKyAgICB7CisgICAgICBDUHBtZDhfTm9kZSAqbm9kZSA9IE5PREUoKm5leHQpOworICAgICAgd2hpbGUgKG5vZGUtPlN0YW1wID09IDApCisgICAgICB7CisgICAgICAgICpuZXh0ID0gbm9kZS0+TmV4dDsKKyAgICAgICAgbm9kZSA9IE5PREUoKm5leHQpOworICAgICAgICBwLT5TdGFtcHNbaV0tLTsKKyAgICAgICAgaWYgKC0tY291bnRbaV0gPT0gMCkKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIG5leHQgPSAmbm9kZS0+TmV4dDsKKyAgICB9CisgIH0KK30KKworI2RlZmluZSBTVUNDRVNTT1IocCkgKChDUHBtZF9Wb2lkX1JlZikoKHApLT5TdWNjZXNzb3JMb3cgfCAoKFVJbnQzMikocCktPlN1Y2Nlc3NvckhpZ2ggPDwgMTYpKSkKKworc3RhdGljIHZvaWQgU2V0U3VjY2Vzc29yKENQcG1kX1N0YXRlICpwLCBDUHBtZF9Wb2lkX1JlZiB2KQoreworICAocCktPlN1Y2Nlc3NvckxvdyA9IChVSW50MTYpKChVSW50MzIpKHYpICYgMHhGRkZGKTsKKyAgKHApLT5TdWNjZXNzb3JIaWdoID0gKFVJbnQxNikoKChVSW50MzIpKHYpID4+IDE2KSAmIDB4RkZGRik7Cit9CisKKyNkZWZpbmUgUkVTRVRfVEVYVChvZmZzKSB7IHAtPlRleHQgPSBwLT5CYXNlICsgcC0+QWxpZ25PZmZzZXQgKyAob2Zmcyk7IH0KKworc3RhdGljIHZvaWQgUmVzdGFydE1vZGVsKENQcG1kOCAqcCkKK3sKKyAgdW5zaWduZWQgaSwgaywgbSwgcjsKKworICBtZW1zZXQocC0+RnJlZUxpc3QsIDAsIHNpemVvZihwLT5GcmVlTGlzdCkpOworICBtZW1zZXQocC0+U3RhbXBzLCAwLCBzaXplb2YocC0+U3RhbXBzKSk7CisgIFJFU0VUX1RFWFQoMCk7CisgIHAtPkhpVW5pdCA9IHAtPlRleHQgKyBwLT5TaXplOworICBwLT5Mb1VuaXQgPSBwLT5Vbml0c1N0YXJ0ID0gcC0+SGlVbml0IC0gcC0+U2l6ZSAvIDggLyBVTklUX1NJWkUgKiA3ICogVU5JVF9TSVpFOworICBwLT5HbHVlQ291bnQgPSAwOworCisgIHAtPk9yZGVyRmFsbCA9IHAtPk1heE9yZGVyOworICBwLT5SdW5MZW5ndGggPSBwLT5Jbml0UkwgPSAtKEludDMyKSgocC0+TWF4T3JkZXIgPCAxMikgPyBwLT5NYXhPcmRlciA6IDEyKSAtIDE7CisgIHAtPlByZXZTdWNjZXNzID0gMDsKKworICBwLT5NaW5Db250ZXh0ID0gcC0+TWF4Q29udGV4dCA9IChDVFhfUFRSKShwLT5IaVVuaXQgLT0gVU5JVF9TSVpFKTsgLyogQWxsb2NDb250ZXh0KHApOyAqLworICBwLT5NaW5Db250ZXh0LT5TdWZmaXggPSAwOworICBwLT5NaW5Db250ZXh0LT5OdW1TdGF0cyA9IDI1NTsKKyAgcC0+TWluQ29udGV4dC0+RmxhZ3MgPSAwOworICBwLT5NaW5Db250ZXh0LT5TdW1tRnJlcSA9IDI1NiArIDE7CisgIHAtPkZvdW5kU3RhdGUgPSAoQ1BwbWRfU3RhdGUgKilwLT5Mb1VuaXQ7IC8qIEFsbG9jVW5pdHMocCwgUFBNRF9OVU1fSU5ERVhFUyAtIDEpOyAqLworICBwLT5Mb1VuaXQgKz0gVTJCKDI1NiAvIDIpOworICBwLT5NaW5Db250ZXh0LT5TdGF0cyA9IFJFRihwLT5Gb3VuZFN0YXRlKTsKKyAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorICB7CisgICAgQ1BwbWRfU3RhdGUgKnMgPSAmcC0+Rm91bmRTdGF0ZVtpXTsKKyAgICBzLT5TeW1ib2wgPSAoQnl0ZSlpOworICAgIHMtPkZyZXEgPSAxOworICAgIFNldFN1Y2Nlc3NvcihzLCAwKTsKKyAgfQorCisgIGZvciAoaSA9IG0gPSAwOyBtIDwgMjU7IG0rKykKKyAgeworICAgIHdoaWxlIChwLT5OUzJJbmR4W2ldID09IG0pCisgICAgICBpKys7CisgICAgZm9yIChrID0gMDsgayA8IDg7IGsrKykKKyAgICB7CisgICAgICBVSW50MTYgdmFsID0gKFVJbnQxNikoUFBNRF9CSU5fU0NBTEUgLSBrSW5pdEJpbkVzY1trXSAvIChpICsgMSkpOworICAgICAgVUludDE2ICpkZXN0ID0gcC0+QmluU3VtbVttXSArIGs7CisgICAgICBmb3IgKHIgPSAwOyByIDwgNjQ7IHIgKz0gOCkKKyAgICAgICAgZGVzdFtyXSA9IHZhbDsKKyAgICB9CisgIH0KKworICBmb3IgKGkgPSBtID0gMDsgbSA8IDI0OyBtKyspCisgIHsKKyAgICB3aGlsZSAocC0+TlMySW5keFtpICsgM10gPT0gbSArIDMpCisgICAgICBpKys7CisgICAgZm9yIChrID0gMDsgayA8IDMyOyBrKyspCisgICAgeworICAgICAgQ1BwbWRfU2VlICpzID0gJnAtPlNlZVttXVtrXTsKKyAgICAgIHMtPlN1bW0gPSAoVUludDE2KSgoMiAqIGkgKyA1KSA8PCAocy0+U2hpZnQgPSBQUE1EX1BFUklPRF9CSVRTIC0gNCkpOworICAgICAgcy0+Q291bnQgPSA3OworICAgIH0KKyAgfQorfQorCit2b2lkIFBwbWQ4X0luaXQoQ1BwbWQ4ICpwLCB1bnNpZ25lZCBtYXhPcmRlciwgdW5zaWduZWQgcmVzdG9yZU1ldGhvZCkKK3sKKyAgcC0+TWF4T3JkZXIgPSBtYXhPcmRlcjsKKyAgcC0+UmVzdG9yZU1ldGhvZCA9IHJlc3RvcmVNZXRob2Q7CisgIFJlc3RhcnRNb2RlbChwKTsKKyAgcC0+RHVtbXlTZWUuU2hpZnQgPSBQUE1EX1BFUklPRF9CSVRTOworICBwLT5EdW1teVNlZS5TdW1tID0gMDsgLyogdW51c2VkICovCisgIHAtPkR1bW15U2VlLkNvdW50ID0gNjQ7IC8qIHVudXNlZCAqLworfQorCitzdGF0aWMgdm9pZCBSZWZyZXNoKENQcG1kOCAqcCwgQ1RYX1BUUiBjdHgsIHVuc2lnbmVkIG9sZE5VLCB1bnNpZ25lZCBzY2FsZSkKK3sKKyAgdW5zaWduZWQgaSA9IGN0eC0+TnVtU3RhdHMsIGVzY0ZyZXEsIHN1bUZyZXEsIGZsYWdzOworICBDUHBtZF9TdGF0ZSAqcyA9IChDUHBtZF9TdGF0ZSAqKVNocmlua1VuaXRzKHAsIFNUQVRTKGN0eCksIG9sZE5VLCAoaSArIDIpID4+IDEpOworICBjdHgtPlN0YXRzID0gUkVGKHMpOworICAjaWZkZWYgUFBNRDhfRlJFRVpFX1NVUFBPUlQKKyAgLyogZml4ZWQgb3ZlciBTaGthcmluJ3MgY29kZS4gRml4ZWQgY29kZSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIG9yaWdpbmFsIGNvZGUgZm9yIHNvbWUgZmlsZXMgaW4gRlJFRVpFIG1vZGUuICovCisgIHNjYWxlIHw9IChjdHgtPlN1bW1GcmVxID49ICgoVUludDMyKTEgPDwgMTUpKTsKKyAgI2VuZGlmCisgIGZsYWdzID0gKGN0eC0+RmxhZ3MgJiAoMHgxMCArIDB4MDQgKiBzY2FsZSkpICsgMHgwOCAqIChzLT5TeW1ib2wgPj0gMHg0MCk7CisgIGVzY0ZyZXEgPSBjdHgtPlN1bW1GcmVxIC0gcy0+RnJlcTsKKyAgc3VtRnJlcSA9IChzLT5GcmVxID0gKEJ5dGUpKChzLT5GcmVxICsgc2NhbGUpID4+IHNjYWxlKSk7CisgIGRvCisgIHsKKyAgICBlc2NGcmVxIC09ICgrK3MpLT5GcmVxOworICAgIHN1bUZyZXEgKz0gKHMtPkZyZXEgPSAoQnl0ZSkoKHMtPkZyZXEgKyBzY2FsZSkgPj4gc2NhbGUpKTsKKyAgICBmbGFncyB8PSAweDA4ICogKHMtPlN5bWJvbCA+PSAweDQwKTsKKyAgfQorICB3aGlsZSAoLS1pKTsKKyAgY3R4LT5TdW1tRnJlcSA9IChVSW50MTYpKHN1bUZyZXEgKyAoKGVzY0ZyZXEgKyBzY2FsZSkgPj4gc2NhbGUpKTsKKyAgY3R4LT5GbGFncyA9IChCeXRlKWZsYWdzOworfQorCitzdGF0aWMgdm9pZCBTd2FwU3RhdGVzKENQcG1kX1N0YXRlICp0MSwgQ1BwbWRfU3RhdGUgKnQyKQoreworICBDUHBtZF9TdGF0ZSB0bXAgPSAqdDE7CisgICp0MSA9ICp0MjsKKyAgKnQyID0gdG1wOworfQorCitzdGF0aWMgQ1BwbWRfVm9pZF9SZWYgQ3V0T2ZmKENQcG1kOCAqcCwgQ1RYX1BUUiBjdHgsIHVuc2lnbmVkIG9yZGVyKQoreworICBpbnQgaTsKKyAgdW5zaWduZWQgdG1wOworICBDUHBtZF9TdGF0ZSAqczsKKyAgCisgIGlmICghY3R4LT5OdW1TdGF0cykKKyAgeworICAgIHMgPSBPTkVfU1RBVEUoY3R4KTsKKyAgICBpZiAoKEJ5dGUgKilQcG1kOF9HZXRQdHIocCwgU1VDQ0VTU09SKHMpKSA+PSBwLT5Vbml0c1N0YXJ0KQorICAgIHsKKyAgICAgIGlmIChvcmRlciA8IHAtPk1heE9yZGVyKQorICAgICAgICBTZXRTdWNjZXNzb3IocywgQ3V0T2ZmKHAsIENUWChTVUNDRVNTT1IocykpLCBvcmRlciArIDEpKTsKKyAgICAgIGVsc2UKKyAgICAgICAgU2V0U3VjY2Vzc29yKHMsIDApOworICAgICAgaWYgKFNVQ0NFU1NPUihzKSB8fCBvcmRlciA8PSA5KSAvKiBPX0JPVU5EICovCisgICAgICAgIHJldHVybiBSRUYoY3R4KTsKKyAgICB9CisgICAgU3BlY2lhbEZyZWVVbml0KHAsIGN0eCk7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBjdHgtPlN0YXRzID0gU1RBVFNfUkVGKE1vdmVVbml0c1VwKHAsIFNUQVRTKGN0eCksIHRtcCA9ICgodW5zaWduZWQpY3R4LT5OdW1TdGF0cyArIDIpID4+IDEpKTsKKworICBmb3IgKHMgPSBTVEFUUyhjdHgpICsgKGkgPSBjdHgtPk51bVN0YXRzKTsgcyA+PSBTVEFUUyhjdHgpOyBzLS0pCisgICAgaWYgKChCeXRlICopUHBtZDhfR2V0UHRyKHAsIFNVQ0NFU1NPUihzKSkgPCBwLT5Vbml0c1N0YXJ0KQorICAgIHsKKyAgICAgIENQcG1kX1N0YXRlICpzMiA9IFNUQVRTKGN0eCkgKyAoaS0tKTsKKyAgICAgIFNldFN1Y2Nlc3NvcihzLCAwKTsKKyAgICAgIFN3YXBTdGF0ZXMocywgczIpOworICAgIH0KKyAgICBlbHNlIGlmIChvcmRlciA8IHAtPk1heE9yZGVyKQorICAgICAgU2V0U3VjY2Vzc29yKHMsIEN1dE9mZihwLCBDVFgoU1VDQ0VTU09SKHMpKSwgb3JkZXIgKyAxKSk7CisgICAgZWxzZQorICAgICAgU2V0U3VjY2Vzc29yKHMsIDApOworICAgIAorICBpZiAoaSAhPSBjdHgtPk51bVN0YXRzICYmIG9yZGVyKQorICB7CisgICAgY3R4LT5OdW1TdGF0cyA9IChCeXRlKWk7CisgICAgcyA9IFNUQVRTKGN0eCk7CisgICAgaWYgKGkgPCAwKQorICAgIHsKKyAgICAgIEZyZWVVbml0cyhwLCBzLCB0bXApOworICAgICAgU3BlY2lhbEZyZWVVbml0KHAsIGN0eCk7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGkgPT0gMCkKKyAgICB7CisgICAgICBjdHgtPkZsYWdzID0gKEJ5dGUpKChjdHgtPkZsYWdzICYgMHgxMCkgKyAweDA4ICogKHMtPlN5bWJvbCA+PSAweDQwKSk7CisgICAgICAqT05FX1NUQVRFKGN0eCkgPSAqczsKKyAgICAgIEZyZWVVbml0cyhwLCBzLCB0bXApOworICAgICAgLyogOS4zMTogdGhlIGNvZGUgd2FzIGZpeGVkLiBJdCdzIHdhcyBub3QgQlVHLCBpZiBGcmVxIDw9IE1BWF9GUkVRID0gMTI0ICovCisgICAgICBPTkVfU1RBVEUoY3R4KS0+RnJlcSA9IChCeXRlKSgoKHVuc2lnbmVkKU9ORV9TVEFURShjdHgpLT5GcmVxICsgMTEpID4+IDMpOworICAgIH0KKyAgICBlbHNlCisgICAgICBSZWZyZXNoKHAsIGN0eCwgdG1wLCBjdHgtPlN1bW1GcmVxID4gMTYgKiBpKTsKKyAgfQorICByZXR1cm4gUkVGKGN0eCk7Cit9CisKKyNpZmRlZiBQUE1EOF9GUkVFWkVfU1VQUE9SVAorc3RhdGljIENQcG1kX1ZvaWRfUmVmIFJlbW92ZUJpbkNvbnRleHRzKENQcG1kOCAqcCwgQ1RYX1BUUiBjdHgsIHVuc2lnbmVkIG9yZGVyKQoreworICBDUHBtZF9TdGF0ZSAqczsKKyAgaWYgKCFjdHgtPk51bVN0YXRzKQorICB7CisgICAgcyA9IE9ORV9TVEFURShjdHgpOworICAgIGlmICgoQnl0ZSAqKVBwbWQ4X0dldFB0cihwLCBTVUNDRVNTT1IocykpID49IHAtPlVuaXRzU3RhcnQgJiYgb3JkZXIgPCBwLT5NYXhPcmRlcikKKyAgICAgIFNldFN1Y2Nlc3NvcihzLCBSZW1vdmVCaW5Db250ZXh0cyhwLCBDVFgoU1VDQ0VTU09SKHMpKSwgb3JkZXIgKyAxKSk7CisgICAgZWxzZQorICAgICAgU2V0U3VjY2Vzc29yKHMsIDApOworICAgIC8qIFN1ZmZpeCBjb250ZXh0IGNhbiBiZSByZW1vdmVkIGFscmVhZHksIHNpbmNlIGRpZmZlcmVudCAoaGlnaC1vcmRlcikKKyAgICAgICBTdWNjZXNzb3JzIG1heSByZWZlciB0byBzYW1lIGNvbnRleHQuIFNvIHdlIGNoZWNrIEZsYWdzID09IDB4RkYgKFN0YW1wID09IEVNUFRZX05PREUpICovCisgICAgaWYgKCFTVUNDRVNTT1IocykgJiYgKCFTVUZGSVgoY3R4KS0+TnVtU3RhdHMgfHwgU1VGRklYKGN0eCktPkZsYWdzID09IDB4RkYpKQorICAgIHsKKyAgICAgIEZyZWVVbml0cyhwLCBjdHgsIDEpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UKKyAgICAgIHJldHVybiBSRUYoY3R4KTsKKyAgfQorCisgIGZvciAocyA9IFNUQVRTKGN0eCkgKyBjdHgtPk51bVN0YXRzOyBzID49IFNUQVRTKGN0eCk7IHMtLSkKKyAgICBpZiAoKEJ5dGUgKilQcG1kOF9HZXRQdHIocCwgU1VDQ0VTU09SKHMpKSA+PSBwLT5Vbml0c1N0YXJ0ICYmIG9yZGVyIDwgcC0+TWF4T3JkZXIpCisgICAgICBTZXRTdWNjZXNzb3IocywgUmVtb3ZlQmluQ29udGV4dHMocCwgQ1RYKFNVQ0NFU1NPUihzKSksIG9yZGVyICsgMSkpOworICAgIGVsc2UKKyAgICAgIFNldFN1Y2Nlc3NvcihzLCAwKTsKKyAgCisgIHJldHVybiBSRUYoY3R4KTsKK30KKyNlbmRpZgorCitzdGF0aWMgVUludDMyIEdldFVzZWRNZW1vcnkoY29uc3QgQ1BwbWQ4ICpwKQoreworICBVSW50MzIgdiA9IDA7CisgIHVuc2lnbmVkIGk7CisgIGZvciAoaSA9IDA7IGkgPCBQUE1EX05VTV9JTkRFWEVTOyBpKyspCisgICAgdiArPSBwLT5TdGFtcHNbaV0gKiBJMlUoaSk7CisgIHJldHVybiBwLT5TaXplIC0gKFVJbnQzMikocC0+SGlVbml0IC0gcC0+TG9Vbml0KSAtIChVSW50MzIpKHAtPlVuaXRzU3RhcnQgLSBwLT5UZXh0KSAtIFUyQih2KTsKK30KKworI2lmZGVmIFBQTUQ4X0ZSRUVaRV9TVVBQT1JUCisgICNkZWZpbmUgUkVTVE9SRV9NT0RFTChjMSwgZlN1Y2Nlc3NvcikgUmVzdG9yZU1vZGVsKHAsIGMxLCBmU3VjY2Vzc29yKQorI2Vsc2UKKyAgI2RlZmluZSBSRVNUT1JFX01PREVMKGMxLCBmU3VjY2Vzc29yKSBSZXN0b3JlTW9kZWwocCwgYzEpCisjZW5kaWYKKworc3RhdGljIHZvaWQgUmVzdG9yZU1vZGVsKENQcG1kOCAqcCwgQ1RYX1BUUiBjMQorICAgICNpZmRlZiBQUE1EOF9GUkVFWkVfU1VQUE9SVAorICAgICwgQ1RYX1BUUiBmU3VjY2Vzc29yCisgICAgI2VuZGlmCisgICAgKQoreworICBDVFhfUFRSIGM7CisgIENQcG1kX1N0YXRlICpzOworICBSRVNFVF9URVhUKDApOworICBmb3IgKGMgPSBwLT5NYXhDb250ZXh0OyBjICE9IGMxOyBjID0gU1VGRklYKGMpKQorICAgIGlmICgtLShjLT5OdW1TdGF0cykgPT0gMCkKKyAgICB7CisgICAgICBzID0gU1RBVFMoYyk7CisgICAgICBjLT5GbGFncyA9IChCeXRlKSgoYy0+RmxhZ3MgJiAweDEwKSArIDB4MDggKiAocy0+U3ltYm9sID49IDB4NDApKTsKKyAgICAgICpPTkVfU1RBVEUoYykgPSAqczsKKyAgICAgIFNwZWNpYWxGcmVlVW5pdChwLCBzKTsKKyAgICAgIE9ORV9TVEFURShjKS0+RnJlcSA9IChCeXRlKSgoKHVuc2lnbmVkKU9ORV9TVEFURShjKS0+RnJlcSArIDExKSA+PiAzKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgUmVmcmVzaChwLCBjLCAoYy0+TnVtU3RhdHMrMykgPj4gMSwgMCk7CisgCisgIGZvciAoOyBjICE9IHAtPk1pbkNvbnRleHQ7IGMgPSBTVUZGSVgoYykpCisgICAgaWYgKCFjLT5OdW1TdGF0cykKKyAgICAgIE9ORV9TVEFURShjKS0+RnJlcSA9IChCeXRlKShPTkVfU1RBVEUoYyktPkZyZXEgLSAoT05FX1NUQVRFKGMpLT5GcmVxID4+IDEpKTsKKyAgICBlbHNlIGlmICgoYy0+U3VtbUZyZXEgKz0gNCkgPiAxMjggKyA0ICogYy0+TnVtU3RhdHMpCisgICAgICBSZWZyZXNoKHAsIGMsIChjLT5OdW1TdGF0cyArIDIpID4+IDEsIDEpOworCisgICNpZmRlZiBQUE1EOF9GUkVFWkVfU1VQUE9SVAorICBpZiAocC0+UmVzdG9yZU1ldGhvZCA+IFBQTUQ4X1JFU1RPUkVfTUVUSE9EX0ZSRUVaRSkKKyAgeworICAgIHAtPk1heENvbnRleHQgPSBmU3VjY2Vzc29yOworICAgIHAtPkdsdWVDb3VudCArPSAhKHAtPlN0YW1wc1sxXSAmIDEpOworICB9CisgIGVsc2UgaWYgKHAtPlJlc3RvcmVNZXRob2QgPT0gUFBNRDhfUkVTVE9SRV9NRVRIT0RfRlJFRVpFKQorICB7CisgICAgd2hpbGUgKHAtPk1heENvbnRleHQtPlN1ZmZpeCkKKyAgICAgIHAtPk1heENvbnRleHQgPSBTVUZGSVgocC0+TWF4Q29udGV4dCk7CisgICAgUmVtb3ZlQmluQ29udGV4dHMocCwgcC0+TWF4Q29udGV4dCwgMCk7CisgICAgcC0+UmVzdG9yZU1ldGhvZCsrOworICAgIHAtPkdsdWVDb3VudCA9IDA7CisgICAgcC0+T3JkZXJGYWxsID0gcC0+TWF4T3JkZXI7CisgIH0KKyAgZWxzZQorICAjZW5kaWYKKyAgaWYgKHAtPlJlc3RvcmVNZXRob2QgPT0gUFBNRDhfUkVTVE9SRV9NRVRIT0RfUkVTVEFSVCB8fCBHZXRVc2VkTWVtb3J5KHApIDwgKHAtPlNpemUgPj4gMSkpCisgICAgUmVzdGFydE1vZGVsKHApOworICBlbHNlCisgIHsKKyAgICB3aGlsZSAocC0+TWF4Q29udGV4dC0+U3VmZml4KQorICAgICAgcC0+TWF4Q29udGV4dCA9IFNVRkZJWChwLT5NYXhDb250ZXh0KTsKKyAgICBkbworICAgIHsKKyAgICAgIEN1dE9mZihwLCBwLT5NYXhDb250ZXh0LCAwKTsKKyAgICAgIEV4cGFuZFRleHRBcmVhKHApOworICAgIH0KKyAgICB3aGlsZSAoR2V0VXNlZE1lbW9yeShwKSA+IDMgKiAocC0+U2l6ZSA+PiAyKSk7CisgICAgcC0+R2x1ZUNvdW50ID0gMDsKKyAgICBwLT5PcmRlckZhbGwgPSBwLT5NYXhPcmRlcjsKKyAgfQorfQorCitzdGF0aWMgQ1RYX1BUUiBDcmVhdGVTdWNjZXNzb3JzKENQcG1kOCAqcCwgQm9vbCBza2lwLCBDUHBtZF9TdGF0ZSAqczEsIENUWF9QVFIgYykKK3sKKyAgQ1BwbWRfU3RhdGUgdXBTdGF0ZTsKKyAgQnl0ZSBmbGFnczsKKyAgQ1BwbWRfQnl0ZV9SZWYgdXBCcmFuY2ggPSAoQ1BwbWRfQnl0ZV9SZWYpU1VDQ0VTU09SKHAtPkZvdW5kU3RhdGUpOworICAvKiBmaXhlZCBvdmVyIFNoa2FyaW4ncyBjb2RlLiBNYXliZSBpdCBjb3VsZCB3b3JrIHdpdGhvdXQgKyAxIHRvby4gKi8KKyAgQ1BwbWRfU3RhdGUgKnBzW1BQTUQ4X01BWF9PUkRFUiArIDFdOworICB1bnNpZ25lZCBudW1QcyA9IDA7CisgIAorICBpZiAoIXNraXApCisgICAgcHNbbnVtUHMrK10gPSBwLT5Gb3VuZFN0YXRlOworICAKKyAgd2hpbGUgKGMtPlN1ZmZpeCkKKyAgeworICAgIENQcG1kX1ZvaWRfUmVmIHN1Y2Nlc3NvcjsKKyAgICBDUHBtZF9TdGF0ZSAqczsKKyAgICBjID0gU1VGRklYKGMpOworICAgIGlmIChzMSkKKyAgICB7CisgICAgICBzID0gczE7CisgICAgICBzMSA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKGMtPk51bVN0YXRzICE9IDApCisgICAgeworICAgICAgZm9yIChzID0gU1RBVFMoYyk7IHMtPlN5bWJvbCAhPSBwLT5Gb3VuZFN0YXRlLT5TeW1ib2w7IHMrKyk7CisgICAgICBpZiAocy0+RnJlcSA8IE1BWF9GUkVRIC0gOSkKKyAgICAgIHsKKyAgICAgICAgcy0+RnJlcSsrOworICAgICAgICBjLT5TdW1tRnJlcSsrOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgcyA9IE9ORV9TVEFURShjKTsKKyAgICAgIHMtPkZyZXEgPSAoQnl0ZSkocy0+RnJlcSArICghU1VGRklYKGMpLT5OdW1TdGF0cyAmIChzLT5GcmVxIDwgMjQpKSk7CisgICAgfQorICAgIHN1Y2Nlc3NvciA9IFNVQ0NFU1NPUihzKTsKKyAgICBpZiAoc3VjY2Vzc29yICE9IHVwQnJhbmNoKQorICAgIHsKKyAgICAgIGMgPSBDVFgoc3VjY2Vzc29yKTsKKyAgICAgIGlmIChudW1QcyA9PSAwKQorICAgICAgICByZXR1cm4gYzsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBwc1tudW1QcysrXSA9IHM7CisgIH0KKyAgCisgIHVwU3RhdGUuU3ltYm9sID0gKihjb25zdCBCeXRlICopUHBtZDhfR2V0UHRyKHAsIHVwQnJhbmNoKTsKKyAgU2V0U3VjY2Vzc29yKCZ1cFN0YXRlLCB1cEJyYW5jaCArIDEpOworICBmbGFncyA9IChCeXRlKSgweDEwICogKHAtPkZvdW5kU3RhdGUtPlN5bWJvbCA+PSAweDQwKSArIDB4MDggKiAodXBTdGF0ZS5TeW1ib2wgPj0gMHg0MCkpOworCisgIGlmIChjLT5OdW1TdGF0cyA9PSAwKQorICAgIHVwU3RhdGUuRnJlcSA9IE9ORV9TVEFURShjKS0+RnJlcTsKKyAgZWxzZQorICB7CisgICAgVUludDMyIGNmLCBzMDsKKyAgICBDUHBtZF9TdGF0ZSAqczsKKyAgICBmb3IgKHMgPSBTVEFUUyhjKTsgcy0+U3ltYm9sICE9IHVwU3RhdGUuU3ltYm9sOyBzKyspOworICAgIGNmID0gcy0+RnJlcSAtIDE7CisgICAgczAgPSBjLT5TdW1tRnJlcSAtIGMtPk51bVN0YXRzIC0gY2Y7CisgICAgdXBTdGF0ZS5GcmVxID0gKEJ5dGUpKDEgKyAoKDIgKiBjZiA8PSBzMCkgPyAoNSAqIGNmID4gczApIDogKChjZiArIDIgKiBzMCAtIDMpIC8gczApKSk7CisgIH0KKworICBkbworICB7CisgICAgLyogQ3JlYXRlIENoaWxkICovCisgICAgQ1RYX1BUUiBjMTsgLyogPSBBbGxvY0NvbnRleHQocCk7ICovCisgICAgaWYgKHAtPkhpVW5pdCAhPSBwLT5Mb1VuaXQpCisgICAgICBjMSA9IChDVFhfUFRSKShwLT5IaVVuaXQgLT0gVU5JVF9TSVpFKTsKKyAgICBlbHNlIGlmIChwLT5GcmVlTGlzdFswXSAhPSAwKQorICAgICAgYzEgPSAoQ1RYX1BUUilSZW1vdmVOb2RlKHAsIDApOworICAgIGVsc2UKKyAgICB7CisgICAgICBjMSA9IChDVFhfUFRSKUFsbG9jVW5pdHNSYXJlKHAsIDApOworICAgICAgaWYgKCFjMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGMxLT5OdW1TdGF0cyA9IDA7CisgICAgYzEtPkZsYWdzID0gZmxhZ3M7CisgICAgKk9ORV9TVEFURShjMSkgPSB1cFN0YXRlOworICAgIGMxLT5TdWZmaXggPSBSRUYoYyk7CisgICAgU2V0U3VjY2Vzc29yKHBzWy0tbnVtUHNdLCBSRUYoYzEpKTsKKyAgICBjID0gYzE7CisgIH0KKyAgd2hpbGUgKG51bVBzICE9IDApOworICAKKyAgcmV0dXJuIGM7Cit9CisKK3N0YXRpYyBDVFhfUFRSIFJlZHVjZU9yZGVyKENQcG1kOCAqcCwgQ1BwbWRfU3RhdGUgKnMxLCBDVFhfUFRSIGMpCit7CisgIENQcG1kX1N0YXRlICpzID0gTlVMTDsKKyAgQ1RYX1BUUiBjMSA9IGM7CisgIENQcG1kX1ZvaWRfUmVmIHVwQnJhbmNoID0gUkVGKHAtPlRleHQpOworICAKKyAgI2lmZGVmIFBQTUQ4X0ZSRUVaRV9TVVBQT1JUCisgIC8qIFRoZSBCVUcgaW4gU2hrYXJpbidzIGNvZGUgd2FzIGZpeGVkOiBwcyBjb3VsZCBvdmVyZmxvdyBpbiBDVVRfT0ZGIG1vZGUuICovCisgIENQcG1kX1N0YXRlICpwc1tQUE1EOF9NQVhfT1JERVIgKyAxXTsKKyAgdW5zaWduZWQgbnVtUHMgPSAwOworICBwc1tudW1QcysrXSA9IHAtPkZvdW5kU3RhdGU7CisgICNlbmRpZgorCisgIFNldFN1Y2Nlc3NvcihwLT5Gb3VuZFN0YXRlLCB1cEJyYW5jaCk7CisgIHAtPk9yZGVyRmFsbCsrOworCisgIGZvciAoOzspCisgIHsKKyAgICBpZiAoczEpCisgICAgeworICAgICAgYyA9IFNVRkZJWChjKTsKKyAgICAgIHMgPSBzMTsKKyAgICAgIHMxID0gTlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmICghYy0+U3VmZml4KQorICAgICAgeworICAgICAgICAjaWZkZWYgUFBNRDhfRlJFRVpFX1NVUFBPUlQKKyAgICAgICAgaWYgKHAtPlJlc3RvcmVNZXRob2QgPiBQUE1EOF9SRVNUT1JFX01FVEhPRF9GUkVFWkUpCisgICAgICAgIHsKKyAgICAgICAgICBkbyB7IFNldFN1Y2Nlc3Nvcihwc1stLW51bVBzXSwgUkVGKGMpKTsgfSB3aGlsZSAobnVtUHMpOworICAgICAgICAgIFJFU0VUX1RFWFQoMSk7CisgICAgICAgICAgcC0+T3JkZXJGYWxsID0gMTsKKyAgICAgICAgfQorICAgICAgICAjZW5kaWYKKyAgICAgICAgcmV0dXJuIGM7CisgICAgICB9CisgICAgICBjID0gU1VGRklYKGMpOworICAgICAgaWYgKGMtPk51bVN0YXRzKQorICAgICAgeworICAgICAgICBpZiAoKHMgPSBTVEFUUyhjKSktPlN5bWJvbCAhPSBwLT5Gb3VuZFN0YXRlLT5TeW1ib2wpCisgICAgICAgICAgZG8geyBzKys7IH0gd2hpbGUgKHMtPlN5bWJvbCAhPSBwLT5Gb3VuZFN0YXRlLT5TeW1ib2wpOworICAgICAgICBpZiAocy0+RnJlcSA8IE1BWF9GUkVRIC0gOSkKKyAgICAgICAgeworICAgICAgICAgIHMtPkZyZXEgKz0gMjsKKyAgICAgICAgICBjLT5TdW1tRnJlcSArPSAyOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHMgPSBPTkVfU1RBVEUoYyk7CisgICAgICAgIHMtPkZyZXEgPSAoQnl0ZSkocy0+RnJlcSArIChzLT5GcmVxIDwgMzIpKTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKFNVQ0NFU1NPUihzKSkKKyAgICAgIGJyZWFrOworICAgICNpZmRlZiBQUE1EOF9GUkVFWkVfU1VQUE9SVAorICAgIHBzW251bVBzKytdID0gczsKKyAgICAjZW5kaWYKKyAgICBTZXRTdWNjZXNzb3IocywgdXBCcmFuY2gpOworICAgIHAtPk9yZGVyRmFsbCsrOworICB9CisgIAorICAjaWZkZWYgUFBNRDhfRlJFRVpFX1NVUFBPUlQKKyAgaWYgKHAtPlJlc3RvcmVNZXRob2QgPiBQUE1EOF9SRVNUT1JFX01FVEhPRF9GUkVFWkUpCisgIHsKKyAgICBjID0gQ1RYKFNVQ0NFU1NPUihzKSk7CisgICAgZG8geyBTZXRTdWNjZXNzb3IocHNbLS1udW1Qc10sIFJFRihjKSk7IH0gd2hpbGUgKG51bVBzKTsKKyAgICBSRVNFVF9URVhUKDEpOworICAgIHAtPk9yZGVyRmFsbCA9IDE7CisgICAgcmV0dXJuIGM7CisgIH0KKyAgZWxzZQorICAjZW5kaWYKKyAgaWYgKFNVQ0NFU1NPUihzKSA8PSB1cEJyYW5jaCkKKyAgeworICAgIENUWF9QVFIgc3VjY2Vzc29yOworICAgIENQcG1kX1N0YXRlICpzMiA9IHAtPkZvdW5kU3RhdGU7CisgICAgcC0+Rm91bmRTdGF0ZSA9IHM7CisKKyAgICBzdWNjZXNzb3IgPSBDcmVhdGVTdWNjZXNzb3JzKHAsIEZhbHNlLCBOVUxMLCBjKTsKKyAgICBpZiAoc3VjY2Vzc29yID09IE5VTEwpCisgICAgICBTZXRTdWNjZXNzb3IocywgMCk7CisgICAgZWxzZQorICAgICAgU2V0U3VjY2Vzc29yKHMsIFJFRihzdWNjZXNzb3IpKTsKKyAgICBwLT5Gb3VuZFN0YXRlID0gczI7CisgIH0KKyAgCisgIGlmIChwLT5PcmRlckZhbGwgPT0gMSAmJiBjMSA9PSBwLT5NYXhDb250ZXh0KQorICB7CisgICAgU2V0U3VjY2Vzc29yKHAtPkZvdW5kU3RhdGUsIFNVQ0NFU1NPUihzKSk7CisgICAgcC0+VGV4dC0tOworICB9CisgIGlmIChTVUNDRVNTT1IocykgPT0gMCkKKyAgICByZXR1cm4gTlVMTDsKKyAgcmV0dXJuIENUWChTVUNDRVNTT1IocykpOworfQorCitzdGF0aWMgdm9pZCBVcGRhdGVNb2RlbChDUHBtZDggKnApCit7CisgIENQcG1kX1ZvaWRfUmVmIHN1Y2Nlc3NvciwgZlN1Y2Nlc3NvciA9IFNVQ0NFU1NPUihwLT5Gb3VuZFN0YXRlKTsKKyAgQ1RYX1BUUiBjOworICB1bnNpZ25lZCBzMCwgbnMsIGZGcmVxID0gcC0+Rm91bmRTdGF0ZS0+RnJlcTsKKyAgQnl0ZSBmbGFnLCBmU3ltYm9sID0gcC0+Rm91bmRTdGF0ZS0+U3ltYm9sOworICBDUHBtZF9TdGF0ZSAqcyA9IE5VTEw7CisgIAorICBpZiAocC0+Rm91bmRTdGF0ZS0+RnJlcSA8IE1BWF9GUkVRIC8gNCAmJiBwLT5NaW5Db250ZXh0LT5TdWZmaXggIT0gMCkKKyAgeworICAgIGMgPSBTVUZGSVgocC0+TWluQ29udGV4dCk7CisgICAgCisgICAgaWYgKGMtPk51bVN0YXRzID09IDApCisgICAgeworICAgICAgcyA9IE9ORV9TVEFURShjKTsKKyAgICAgIGlmIChzLT5GcmVxIDwgMzIpCisgICAgICAgIHMtPkZyZXErKzsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHMgPSBTVEFUUyhjKTsKKyAgICAgIGlmIChzLT5TeW1ib2wgIT0gcC0+Rm91bmRTdGF0ZS0+U3ltYm9sKQorICAgICAgeworICAgICAgICBkbyB7IHMrKzsgfSB3aGlsZSAocy0+U3ltYm9sICE9IHAtPkZvdW5kU3RhdGUtPlN5bWJvbCk7CisgICAgICAgIGlmIChzWzBdLkZyZXEgPj0gc1stMV0uRnJlcSkKKyAgICAgICAgeworICAgICAgICAgIFN3YXBTdGF0ZXMoJnNbMF0sICZzWy0xXSk7CisgICAgICAgICAgcy0tOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAocy0+RnJlcSA8IE1BWF9GUkVRIC0gOSkKKyAgICAgIHsKKyAgICAgICAgcy0+RnJlcSArPSAyOworICAgICAgICBjLT5TdW1tRnJlcSArPSAyOworICAgICAgfQorICAgIH0KKyAgfQorICAKKyAgYyA9IHAtPk1heENvbnRleHQ7CisgIGlmIChwLT5PcmRlckZhbGwgPT0gMCAmJiBmU3VjY2Vzc29yKQorICB7CisgICAgQ1RYX1BUUiBjcyA9IENyZWF0ZVN1Y2Nlc3NvcnMocCwgVHJ1ZSwgcywgcC0+TWluQ29udGV4dCk7CisgICAgaWYgKGNzID09IDApCisgICAgeworICAgICAgU2V0U3VjY2Vzc29yKHAtPkZvdW5kU3RhdGUsIDApOworICAgICAgUkVTVE9SRV9NT0RFTChjLCBDVFgoZlN1Y2Nlc3NvcikpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgU2V0U3VjY2Vzc29yKHAtPkZvdW5kU3RhdGUsIFJFRihjcykpOworICAgICAgcC0+TWF4Q29udGV4dCA9IGNzOworICAgIH0KKyAgICByZXR1cm47CisgIH0KKyAgCisgICpwLT5UZXh0KysgPSBwLT5Gb3VuZFN0YXRlLT5TeW1ib2w7CisgIHN1Y2Nlc3NvciA9IFJFRihwLT5UZXh0KTsKKyAgaWYgKHAtPlRleHQgPj0gcC0+VW5pdHNTdGFydCkKKyAgeworICAgIFJFU1RPUkVfTU9ERUwoYywgQ1RYKGZTdWNjZXNzb3IpKTsgLyogY2hlY2sgaXQgKi8KKyAgICByZXR1cm47CisgIH0KKyAgCisgIGlmICghZlN1Y2Nlc3NvcikKKyAgeworICAgIENUWF9QVFIgY3MgPSBSZWR1Y2VPcmRlcihwLCBzLCBwLT5NaW5Db250ZXh0KTsKKyAgICBpZiAoY3MgPT0gTlVMTCkKKyAgICB7CisgICAgICBSRVNUT1JFX01PREVMKGMsIDApOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmU3VjY2Vzc29yID0gUkVGKGNzKTsKKyAgfQorICBlbHNlIGlmICgoQnl0ZSAqKVBwbWQ4X0dldFB0cihwLCBmU3VjY2Vzc29yKSA8IHAtPlVuaXRzU3RhcnQpCisgIHsKKyAgICBDVFhfUFRSIGNzID0gQ3JlYXRlU3VjY2Vzc29ycyhwLCBGYWxzZSwgcywgcC0+TWluQ29udGV4dCk7CisgICAgaWYgKGNzID09IE5VTEwpCisgICAgeworICAgICAgUkVTVE9SRV9NT0RFTChjLCAwKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgZlN1Y2Nlc3NvciA9IFJFRihjcyk7CisgIH0KKyAgCisgIGlmICgtLXAtPk9yZGVyRmFsbCA9PSAwKQorICB7CisgICAgc3VjY2Vzc29yID0gZlN1Y2Nlc3NvcjsKKyAgICBwLT5UZXh0IC09IChwLT5NYXhDb250ZXh0ICE9IHAtPk1pbkNvbnRleHQpOworICB9CisgICNpZmRlZiBQUE1EOF9GUkVFWkVfU1VQUE9SVAorICBlbHNlIGlmIChwLT5SZXN0b3JlTWV0aG9kID4gUFBNRDhfUkVTVE9SRV9NRVRIT0RfRlJFRVpFKQorICB7CisgICAgc3VjY2Vzc29yID0gZlN1Y2Nlc3NvcjsKKyAgICBSRVNFVF9URVhUKDApOworICAgIHAtPk9yZGVyRmFsbCA9IDA7CisgIH0KKyAgI2VuZGlmCisgIAorICBzMCA9IHAtPk1pbkNvbnRleHQtPlN1bW1GcmVxIC0gKG5zID0gcC0+TWluQ29udGV4dC0+TnVtU3RhdHMpIC0gZkZyZXE7CisgIGZsYWcgPSAoQnl0ZSkoMHgwOCAqIChmU3ltYm9sID49IDB4NDApKTsKKyAgCisgIGZvciAoOyBjICE9IHAtPk1pbkNvbnRleHQ7IGMgPSBTVUZGSVgoYykpCisgIHsKKyAgICB1bnNpZ25lZCBuczE7CisgICAgVUludDMyIGNmLCBzZjsKKyAgICBpZiAoKG5zMSA9IGMtPk51bVN0YXRzKSAhPSAwKQorICAgIHsKKyAgICAgIGlmICgobnMxICYgMSkgIT0gMCkKKyAgICAgIHsKKyAgICAgICAgLyogRXhwYW5kIGZvciBvbmUgVU5JVCAqLworICAgICAgICB1bnNpZ25lZCBvbGROVSA9IChuczEgKyAxKSA+PiAxOworICAgICAgICB1bnNpZ25lZCBpID0gVTJJKG9sZE5VKTsKKyAgICAgICAgaWYgKGkgIT0gVTJJKG9sZE5VICsgMSkpCisgICAgICAgIHsKKyAgICAgICAgICB2b2lkICpwdHIgPSBBbGxvY1VuaXRzKHAsIGkgKyAxKTsKKyAgICAgICAgICB2b2lkICpvbGRQdHI7CisgICAgICAgICAgaWYgKCFwdHIpCisgICAgICAgICAgeworICAgICAgICAgICAgUkVTVE9SRV9NT0RFTChjLCBDVFgoZlN1Y2Nlc3NvcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKyAgICAgICAgICBvbGRQdHIgPSBTVEFUUyhjKTsKKyAgICAgICAgICBNeU1lbTEyQ3B5KHB0ciwgb2xkUHRyLCBvbGROVSk7CisgICAgICAgICAgSW5zZXJ0Tm9kZShwLCBvbGRQdHIsIGkpOworICAgICAgICAgIGMtPlN0YXRzID0gU1RBVFNfUkVGKHB0cik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGMtPlN1bW1GcmVxID0gKFVJbnQxNikoYy0+U3VtbUZyZXEgKyAoMyAqIG5zMSArIDEgPCBucykpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgQ1BwbWRfU3RhdGUgKnMyID0gKENQcG1kX1N0YXRlKilBbGxvY1VuaXRzKHAsIDApOworICAgICAgaWYgKCFzMikKKyAgICAgIHsKKyAgICAgICAgUkVTVE9SRV9NT0RFTChjLCBDVFgoZlN1Y2Nlc3NvcikpOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICAqczIgPSAqT05FX1NUQVRFKGMpOworICAgICAgYy0+U3RhdHMgPSBSRUYoczIpOworICAgICAgaWYgKHMyLT5GcmVxIDwgTUFYX0ZSRVEgLyA0IC0gMSkKKyAgICAgICAgczItPkZyZXEgPDw9IDE7CisgICAgICBlbHNlCisgICAgICAgIHMyLT5GcmVxID0gTUFYX0ZSRVEgLSA0OworICAgICAgYy0+U3VtbUZyZXEgPSAoVUludDE2KShzMi0+RnJlcSArIHAtPkluaXRFc2MgKyAobnMgPiAyKSk7CisgICAgfQorICAgIGNmID0gMiAqIGZGcmVxICogKGMtPlN1bW1GcmVxICsgNik7CisgICAgc2YgPSAoVUludDMyKXMwICsgYy0+U3VtbUZyZXE7CisgICAgaWYgKGNmIDwgNiAqIHNmKQorICAgIHsKKyAgICAgIGNmID0gMSArIChjZiA+IHNmKSArIChjZiA+PSA0ICogc2YpOworICAgICAgYy0+U3VtbUZyZXEgKz0gNDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGNmID0gNCArIChjZiA+IDkgKiBzZikgKyAoY2YgPiAxMiAqIHNmKSArIChjZiA+IDE1ICogc2YpOworICAgICAgYy0+U3VtbUZyZXEgPSAoVUludDE2KShjLT5TdW1tRnJlcSArIGNmKTsKKyAgICB9CisgICAgeworICAgICAgQ1BwbWRfU3RhdGUgKnMyID0gU1RBVFMoYykgKyBuczEgKyAxOworICAgICAgU2V0U3VjY2Vzc29yKHMyLCBzdWNjZXNzb3IpOworICAgICAgczItPlN5bWJvbCA9IGZTeW1ib2w7CisgICAgICBzMi0+RnJlcSA9IChCeXRlKWNmOworICAgICAgYy0+RmxhZ3MgfD0gZmxhZzsKKyAgICAgIGMtPk51bVN0YXRzID0gKEJ5dGUpKG5zMSArIDEpOworICAgIH0KKyAgfQorICBwLT5NYXhDb250ZXh0ID0gcC0+TWluQ29udGV4dCA9IENUWChmU3VjY2Vzc29yKTsKK30KKyAgCitzdGF0aWMgdm9pZCBSZXNjYWxlKENQcG1kOCAqcCkKK3sKKyAgdW5zaWduZWQgaSwgYWRkZXIsIHN1bUZyZXEsIGVzY0ZyZXE7CisgIENQcG1kX1N0YXRlICpzdGF0cyA9IFNUQVRTKHAtPk1pbkNvbnRleHQpOworICBDUHBtZF9TdGF0ZSAqcyA9IHAtPkZvdW5kU3RhdGU7CisgIHsKKyAgICBDUHBtZF9TdGF0ZSB0bXAgPSAqczsKKyAgICBmb3IgKDsgcyAhPSBzdGF0czsgcy0tKQorICAgICAgc1swXSA9IHNbLTFdOworICAgICpzID0gdG1wOworICB9CisgIGVzY0ZyZXEgPSBwLT5NaW5Db250ZXh0LT5TdW1tRnJlcSAtIHMtPkZyZXE7CisgIHMtPkZyZXEgKz0gNDsKKyAgYWRkZXIgPSAocC0+T3JkZXJGYWxsICE9IDAKKyAgICAgICNpZmRlZiBQUE1EOF9GUkVFWkVfU1VQUE9SVAorICAgICAgfHwgcC0+UmVzdG9yZU1ldGhvZCA+IFBQTUQ4X1JFU1RPUkVfTUVUSE9EX0ZSRUVaRQorICAgICAgI2VuZGlmCisgICAgICApOworICBzLT5GcmVxID0gKEJ5dGUpKChzLT5GcmVxICsgYWRkZXIpID4+IDEpOworICBzdW1GcmVxID0gcy0+RnJlcTsKKyAgCisgIGkgPSBwLT5NaW5Db250ZXh0LT5OdW1TdGF0czsKKyAgZG8KKyAgeworICAgIGVzY0ZyZXEgLT0gKCsrcyktPkZyZXE7CisgICAgcy0+RnJlcSA9IChCeXRlKSgocy0+RnJlcSArIGFkZGVyKSA+PiAxKTsKKyAgICBzdW1GcmVxICs9IHMtPkZyZXE7CisgICAgaWYgKHNbMF0uRnJlcSA+IHNbLTFdLkZyZXEpCisgICAgeworICAgICAgQ1BwbWRfU3RhdGUgKnMxID0gczsKKyAgICAgIENQcG1kX1N0YXRlIHRtcCA9ICpzMTsKKyAgICAgIGRvCisgICAgICAgIHMxWzBdID0gczFbLTFdOworICAgICAgd2hpbGUgKC0tczEgIT0gc3RhdHMgJiYgdG1wLkZyZXEgPiBzMVstMV0uRnJlcSk7CisgICAgICAqczEgPSB0bXA7CisgICAgfQorICB9CisgIHdoaWxlICgtLWkpOworICAKKyAgaWYgKHMtPkZyZXEgPT0gMCkKKyAgeworICAgIHVuc2lnbmVkIG51bVN0YXRzID0gcC0+TWluQ29udGV4dC0+TnVtU3RhdHM7CisgICAgdW5zaWduZWQgbjAsIG4xOworICAgIGRvIHsgaSsrOyB9IHdoaWxlICgoLS1zKS0+RnJlcSA9PSAwKTsKKyAgICBlc2NGcmVxICs9IGk7CisgICAgcC0+TWluQ29udGV4dC0+TnVtU3RhdHMgPSAoQnl0ZSkocC0+TWluQ29udGV4dC0+TnVtU3RhdHMgLSBpKTsKKyAgICBpZiAocC0+TWluQ29udGV4dC0+TnVtU3RhdHMgPT0gMCkKKyAgICB7CisgICAgICBDUHBtZF9TdGF0ZSB0bXAgPSAqc3RhdHM7CisgICAgICB0bXAuRnJlcSA9IChCeXRlKSgoMiAqIHRtcC5GcmVxICsgZXNjRnJlcSAtIDEpIC8gZXNjRnJlcSk7CisgICAgICBpZiAodG1wLkZyZXEgPiBNQVhfRlJFUSAvIDMpCisgICAgICAgIHRtcC5GcmVxID0gTUFYX0ZSRVEgLyAzOworICAgICAgSW5zZXJ0Tm9kZShwLCBzdGF0cywgVTJJKChudW1TdGF0cyArIDIpID4+IDEpKTsKKyAgICAgIHAtPk1pbkNvbnRleHQtPkZsYWdzID0gKEJ5dGUpKChwLT5NaW5Db250ZXh0LT5GbGFncyAmIDB4MTApICsgMHgwOCAqICh0bXAuU3ltYm9sID49IDB4NDApKTsKKyAgICAgICoocC0+Rm91bmRTdGF0ZSA9IE9ORV9TVEFURShwLT5NaW5Db250ZXh0KSkgPSB0bXA7CisgICAgICByZXR1cm47CisgICAgfQorICAgIG4wID0gKG51bVN0YXRzICsgMikgPj4gMTsKKyAgICBuMSA9IChwLT5NaW5Db250ZXh0LT5OdW1TdGF0cyArIDIpID4+IDE7CisgICAgaWYgKG4wICE9IG4xKQorICAgICAgcC0+TWluQ29udGV4dC0+U3RhdHMgPSBTVEFUU19SRUYoU2hyaW5rVW5pdHMocCwgc3RhdHMsIG4wLCBuMSkpOworICAgIHAtPk1pbkNvbnRleHQtPkZsYWdzICY9IH4weDA4OworICAgIHAtPk1pbkNvbnRleHQtPkZsYWdzIHw9IDB4MDggKiAoKHMgPSBTVEFUUyhwLT5NaW5Db250ZXh0KSktPlN5bWJvbCA+PSAweDQwKTsKKyAgICBpID0gcC0+TWluQ29udGV4dC0+TnVtU3RhdHM7CisgICAgZG8geyBwLT5NaW5Db250ZXh0LT5GbGFncyB8PSAweDA4KigoKytzKS0+U3ltYm9sID49IDB4NDApOyB9IHdoaWxlICgtLWkpOworICB9CisgIHAtPk1pbkNvbnRleHQtPlN1bW1GcmVxID0gKFVJbnQxNikoc3VtRnJlcSArIGVzY0ZyZXEgLSAoZXNjRnJlcSA+PiAxKSk7CisgIHAtPk1pbkNvbnRleHQtPkZsYWdzIHw9IDB4NDsKKyAgcC0+Rm91bmRTdGF0ZSA9IFNUQVRTKHAtPk1pbkNvbnRleHQpOworfQorCitDUHBtZF9TZWUgKlBwbWQ4X01ha2VFc2NGcmVxKENQcG1kOCAqcCwgdW5zaWduZWQgbnVtTWFza2VkMSwgVUludDMyICplc2NGcmVxKQoreworICBDUHBtZF9TZWUgKnNlZTsKKyAgaWYgKHAtPk1pbkNvbnRleHQtPk51bVN0YXRzICE9IDB4RkYpCisgIHsKKyAgICBzZWUgPSBwLT5TZWVbKHVuc2lnbmVkKXAtPk5TMkluZHhbKHVuc2lnbmVkKXAtPk1pbkNvbnRleHQtPk51bVN0YXRzICsgMl0gLSAzXSArCisgICAgICAgIChwLT5NaW5Db250ZXh0LT5TdW1tRnJlcSA+IDExICogKCh1bnNpZ25lZClwLT5NaW5Db250ZXh0LT5OdW1TdGF0cyArIDEpKSArCisgICAgICAgIDIgKiAodW5zaWduZWQpKDIgKiAodW5zaWduZWQpcC0+TWluQ29udGV4dC0+TnVtU3RhdHMgPAorICAgICAgICAoKHVuc2lnbmVkKVNVRkZJWChwLT5NaW5Db250ZXh0KS0+TnVtU3RhdHMgKyBudW1NYXNrZWQxKSkgKworICAgICAgICBwLT5NaW5Db250ZXh0LT5GbGFnczsKKyAgICB7CisgICAgICB1bnNpZ25lZCByID0gKHNlZS0+U3VtbSA+PiBzZWUtPlNoaWZ0KTsKKyAgICAgIHNlZS0+U3VtbSA9IChVSW50MTYpKHNlZS0+U3VtbSAtIHIpOworICAgICAgKmVzY0ZyZXEgPSByICsgKHIgPT0gMCk7CisgICAgfQorICB9CisgIGVsc2UKKyAgeworICAgIHNlZSA9ICZwLT5EdW1teVNlZTsKKyAgICAqZXNjRnJlcSA9IDE7CisgIH0KKyAgcmV0dXJuIHNlZTsKK30KKworc3RhdGljIHZvaWQgTmV4dENvbnRleHQoQ1BwbWQ4ICpwKQoreworICBDVFhfUFRSIGMgPSBDVFgoU1VDQ0VTU09SKHAtPkZvdW5kU3RhdGUpKTsKKyAgaWYgKHAtPk9yZGVyRmFsbCA9PSAwICYmIChCeXRlICopYyA+PSBwLT5Vbml0c1N0YXJ0KQorICAgIHAtPk1pbkNvbnRleHQgPSBwLT5NYXhDb250ZXh0ID0gYzsKKyAgZWxzZQorICB7CisgICAgVXBkYXRlTW9kZWwocCk7CisgICAgcC0+TWluQ29udGV4dCA9IHAtPk1heENvbnRleHQ7CisgIH0KK30KKwordm9pZCBQcG1kOF9VcGRhdGUxKENQcG1kOCAqcCkKK3sKKyAgQ1BwbWRfU3RhdGUgKnMgPSBwLT5Gb3VuZFN0YXRlOworICBzLT5GcmVxICs9IDQ7CisgIHAtPk1pbkNvbnRleHQtPlN1bW1GcmVxICs9IDQ7CisgIGlmIChzWzBdLkZyZXEgPiBzWy0xXS5GcmVxKQorICB7CisgICAgU3dhcFN0YXRlcygmc1swXSwgJnNbLTFdKTsKKyAgICBwLT5Gb3VuZFN0YXRlID0gLS1zOworICAgIGlmIChzLT5GcmVxID4gTUFYX0ZSRVEpCisgICAgICBSZXNjYWxlKHApOworICB9CisgIE5leHRDb250ZXh0KHApOworfQorCit2b2lkIFBwbWQ4X1VwZGF0ZTFfMChDUHBtZDggKnApCit7CisgIHAtPlByZXZTdWNjZXNzID0gKDIgKiBwLT5Gb3VuZFN0YXRlLT5GcmVxID49IHAtPk1pbkNvbnRleHQtPlN1bW1GcmVxKTsKKyAgcC0+UnVuTGVuZ3RoICs9IHAtPlByZXZTdWNjZXNzOworICBwLT5NaW5Db250ZXh0LT5TdW1tRnJlcSArPSA0OworICBpZiAoKHAtPkZvdW5kU3RhdGUtPkZyZXEgKz0gNCkgPiBNQVhfRlJFUSkKKyAgICBSZXNjYWxlKHApOworICBOZXh0Q29udGV4dChwKTsKK30KKwordm9pZCBQcG1kOF9VcGRhdGVCaW4oQ1BwbWQ4ICpwKQoreworICBwLT5Gb3VuZFN0YXRlLT5GcmVxID0gKEJ5dGUpKHAtPkZvdW5kU3RhdGUtPkZyZXEgKyAocC0+Rm91bmRTdGF0ZS0+RnJlcSA8IDE5NikpOworICBwLT5QcmV2U3VjY2VzcyA9IDE7CisgIHAtPlJ1bkxlbmd0aCsrOworICBOZXh0Q29udGV4dChwKTsKK30KKwordm9pZCBQcG1kOF9VcGRhdGUyKENQcG1kOCAqcCkKK3sKKyAgcC0+TWluQ29udGV4dC0+U3VtbUZyZXEgKz0gNDsKKyAgaWYgKChwLT5Gb3VuZFN0YXRlLT5GcmVxICs9IDQpID4gTUFYX0ZSRVEpCisgICAgUmVzY2FsZShwKTsKKyAgcC0+UnVuTGVuZ3RoID0gcC0+SW5pdFJMOworICBVcGRhdGVNb2RlbChwKTsKKyAgcC0+TWluQ29udGV4dCA9IHAtPk1heENvbnRleHQ7Cit9CisKKy8qIFBwbWQ4RGVjLmMgLS0gUFBNZEkgRGVjb2RlcgorMjAxMC0wNC0xNiA6IElnb3IgUGF2bG92IDogUHVibGljIGRvbWFpbgorVGhpcyBjb2RlIGlzIGJhc2VkIG9uOgorICBQUE1kIHZhci5JICgyMDAyKTogRG1pdHJ5IFNoa2FyaW4gOiBQdWJsaWMgZG9tYWluCisgIENhcnJ5bGVzcyByYW5nZWNvZGVyICgxOTk5KTogRG1pdHJ5IFN1YmJvdGluIDogUHVibGljIGRvbWFpbiAqLworCitCb29sIFBwbWQ4X1JhbmdlRGVjX0luaXQoQ1BwbWQ4ICpwKQoreworICB1bnNpZ25lZCBpOworICBwLT5Mb3cgPSAwOworICBwLT5SYW5nZSA9IDB4RkZGRkZGRkY7CisgIHAtPkNvZGUgPSAwOworICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorICAgIHAtPkNvZGUgPSAocC0+Q29kZSA8PCA4KSB8IHAtPlN0cmVhbS5Jbi0+UmVhZChwLT5TdHJlYW0uSW4pOworICByZXR1cm4gKHAtPkNvZGUgPCAweEZGRkZGRkZGKTsKK30KKworc3RhdGljIFVJbnQzMiBSYW5nZURlY19HZXRUaHJlc2hvbGQoQ1BwbWQ4ICpwLCBVSW50MzIgdG90YWwpCit7CisgIHJldHVybiBwLT5Db2RlIC8gKHAtPlJhbmdlIC89IHRvdGFsKTsKK30KKworc3RhdGljIHZvaWQgUmFuZ2VEZWNfRGVjb2RlKENQcG1kOCAqcCwgVUludDMyIHN0YXJ0LCBVSW50MzIgc2l6ZSkKK3sKKyAgc3RhcnQgKj0gcC0+UmFuZ2U7CisgIHAtPkxvdyArPSBzdGFydDsKKyAgcC0+Q29kZSAtPSBzdGFydDsKKyAgcC0+UmFuZ2UgKj0gc2l6ZTsKKworICB3aGlsZSAoKHAtPkxvdyBeIChwLT5Mb3cgKyBwLT5SYW5nZSkpIDwga1RvcCB8fAorICAgICAgKHAtPlJhbmdlIDwga0JvdCAmJiAoKHAtPlJhbmdlID0gKDAgLSBwLT5Mb3cpICYgKGtCb3QgLSAxKSksIDEpKSkKKyAgeworICAgIHAtPkNvZGUgPSAocC0+Q29kZSA8PCA4KSB8IHAtPlN0cmVhbS5Jbi0+UmVhZChwLT5TdHJlYW0uSW4pOworICAgIHAtPlJhbmdlIDw8PSA4OworICAgIHAtPkxvdyA8PD0gODsKKyAgfQorfQorCisjZGVmaW5lIE1BU0soc3ltKSAoKHNpZ25lZCBjaGFyICopY2hhck1hc2spW3N5bV0KKworaW50IFBwbWQ4X0RlY29kZVN5bWJvbChDUHBtZDggKnApCit7CisgIHNpemVfdCBjaGFyTWFza1syNTYgLyBzaXplb2Yoc2l6ZV90KV07CisgIGlmIChwLT5NaW5Db250ZXh0LT5OdW1TdGF0cyAhPSAwKQorICB7CisgICAgQ1BwbWRfU3RhdGUgKnMgPSBQcG1kOF9HZXRTdGF0cyhwLCBwLT5NaW5Db250ZXh0KTsKKyAgICB1bnNpZ25lZCBpOworICAgIFVJbnQzMiBjb3VudCwgaGlDbnQ7CisgICAgaWYgKChjb3VudCA9IFJhbmdlRGVjX0dldFRocmVzaG9sZChwLCBwLT5NaW5Db250ZXh0LT5TdW1tRnJlcSkpIDwgKGhpQ250ID0gcy0+RnJlcSkpCisgICAgeworICAgICAgQnl0ZSBzeW1ib2w7CisgICAgICBSYW5nZURlY19EZWNvZGUocCwgMCwgcy0+RnJlcSk7CisgICAgICBwLT5Gb3VuZFN0YXRlID0gczsKKyAgICAgIHN5bWJvbCA9IHMtPlN5bWJvbDsKKyAgICAgIFBwbWQ4X1VwZGF0ZTFfMChwKTsKKyAgICAgIHJldHVybiBzeW1ib2w7CisgICAgfQorICAgIHAtPlByZXZTdWNjZXNzID0gMDsKKyAgICBpID0gcC0+TWluQ29udGV4dC0+TnVtU3RhdHM7CisgICAgZG8KKyAgICB7CisgICAgICBpZiAoKGhpQ250ICs9ICgrK3MpLT5GcmVxKSA+IGNvdW50KQorICAgICAgeworICAgICAgICBCeXRlIHN5bWJvbDsKKyAgICAgICAgUmFuZ2VEZWNfRGVjb2RlKHAsIGhpQ250IC0gcy0+RnJlcSwgcy0+RnJlcSk7CisgICAgICAgIHAtPkZvdW5kU3RhdGUgPSBzOworICAgICAgICBzeW1ib2wgPSBzLT5TeW1ib2w7CisgICAgICAgIFBwbWQ4X1VwZGF0ZTEocCk7CisgICAgICAgIHJldHVybiBzeW1ib2w7CisgICAgICB9CisgICAgfQorICAgIHdoaWxlICgtLWkpOworICAgIGlmIChjb3VudCA+PSBwLT5NaW5Db250ZXh0LT5TdW1tRnJlcSkKKyAgICAgIHJldHVybiAtMjsKKyAgICBSYW5nZURlY19EZWNvZGUocCwgaGlDbnQsIHAtPk1pbkNvbnRleHQtPlN1bW1GcmVxIC0gaGlDbnQpOworICAgIFBQTURfU2V0QWxsQml0c0luMjU2Qnl0ZXMoY2hhck1hc2spOworICAgIE1BU0socy0+U3ltYm9sKSA9IDA7CisgICAgaSA9IHAtPk1pbkNvbnRleHQtPk51bVN0YXRzOworICAgIGRvIHsgTUFTSygoLS1zKS0+U3ltYm9sKSA9IDA7IH0gd2hpbGUgKC0taSk7CisgIH0KKyAgZWxzZQorICB7CisgICAgVUludDE2ICpwcm9iID0gUHBtZDhfR2V0QmluU3VtbShwKTsKKyAgICBpZiAoKChwLT5Db2RlIC8gKHAtPlJhbmdlID4+PSAxNCkpIDwgKnByb2IpKQorICAgIHsKKyAgICAgIEJ5dGUgc3ltYm9sOworICAgICAgUmFuZ2VEZWNfRGVjb2RlKHAsIDAsICpwcm9iKTsKKyAgICAgICpwcm9iID0gKFVJbnQxNilQUE1EX1VQREFURV9QUk9CXzAoKnByb2IpOworICAgICAgc3ltYm9sID0gKHAtPkZvdW5kU3RhdGUgPSBQcG1kOENvbnRleHRfT25lU3RhdGUocC0+TWluQ29udGV4dCkpLT5TeW1ib2w7CisgICAgICBQcG1kOF9VcGRhdGVCaW4ocCk7CisgICAgICByZXR1cm4gc3ltYm9sOworICAgIH0KKyAgICBSYW5nZURlY19EZWNvZGUocCwgKnByb2IsICgxIDw8IDE0KSAtICpwcm9iKTsKKyAgICAqcHJvYiA9IChVSW50MTYpUFBNRF9VUERBVEVfUFJPQl8xKCpwcm9iKTsKKyAgICBwLT5Jbml0RXNjID0gUFBNRDhfa0V4cEVzY2FwZVsqcHJvYiA+PiAxMF07CisgICAgUFBNRF9TZXRBbGxCaXRzSW4yNTZCeXRlcyhjaGFyTWFzayk7CisgICAgTUFTSyhQcG1kOENvbnRleHRfT25lU3RhdGUocC0+TWluQ29udGV4dCktPlN5bWJvbCkgPSAwOworICAgIHAtPlByZXZTdWNjZXNzID0gMDsKKyAgfQorICBmb3IgKDs7KQorICB7CisgICAgQ1BwbWRfU3RhdGUgKnBzWzI1Nl0sICpzOworICAgIFVJbnQzMiBmcmVxU3VtLCBjb3VudCwgaGlDbnQ7CisgICAgQ1BwbWRfU2VlICpzZWU7CisgICAgdW5zaWduZWQgaSwgbnVtLCBudW1NYXNrZWQgPSBwLT5NaW5Db250ZXh0LT5OdW1TdGF0czsKKyAgICBkbworICAgIHsKKyAgICAgIHAtPk9yZGVyRmFsbCsrOworICAgICAgaWYgKCFwLT5NaW5Db250ZXh0LT5TdWZmaXgpCisgICAgICAgIHJldHVybiAtMTsKKyAgICAgIHAtPk1pbkNvbnRleHQgPSBQcG1kOF9HZXRDb250ZXh0KHAsIHAtPk1pbkNvbnRleHQtPlN1ZmZpeCk7CisgICAgfQorICAgIHdoaWxlIChwLT5NaW5Db250ZXh0LT5OdW1TdGF0cyA9PSBudW1NYXNrZWQpOworICAgIGhpQ250ID0gMDsKKyAgICBzID0gUHBtZDhfR2V0U3RhdHMocCwgcC0+TWluQ29udGV4dCk7CisgICAgaSA9IDA7CisgICAgbnVtID0gcC0+TWluQ29udGV4dC0+TnVtU3RhdHMgLSBudW1NYXNrZWQ7CisgICAgZG8KKyAgICB7CisgICAgICBpbnQgayA9IChpbnQpKE1BU0socy0+U3ltYm9sKSk7CisgICAgICBoaUNudCArPSAocy0+RnJlcSAmIGspOworICAgICAgcHNbaV0gPSBzKys7CisgICAgICBpIC09IGs7CisgICAgfQorICAgIHdoaWxlIChpICE9IG51bSk7CisgICAgCisgICAgc2VlID0gUHBtZDhfTWFrZUVzY0ZyZXEocCwgbnVtTWFza2VkLCAmZnJlcVN1bSk7CisgICAgZnJlcVN1bSArPSBoaUNudDsKKyAgICBjb3VudCA9IFJhbmdlRGVjX0dldFRocmVzaG9sZChwLCBmcmVxU3VtKTsKKyAgICAKKyAgICBpZiAoY291bnQgPCBoaUNudCkKKyAgICB7CisgICAgICBCeXRlIHN5bWJvbDsKKyAgICAgIENQcG1kX1N0YXRlICoqcHBzID0gcHM7CisgICAgICBmb3IgKGhpQ250ID0gMDsgKGhpQ250ICs9ICgqcHBzKS0+RnJlcSkgPD0gY291bnQ7IHBwcysrKTsKKyAgICAgIHMgPSAqcHBzOworICAgICAgUmFuZ2VEZWNfRGVjb2RlKHAsIGhpQ250IC0gcy0+RnJlcSwgcy0+RnJlcSk7CisgICAgICBQcG1kX1NlZV9VcGRhdGUoc2VlKTsKKyAgICAgIHAtPkZvdW5kU3RhdGUgPSBzOworICAgICAgc3ltYm9sID0gcy0+U3ltYm9sOworICAgICAgUHBtZDhfVXBkYXRlMihwKTsKKyAgICAgIHJldHVybiBzeW1ib2w7CisgICAgfQorICAgIGlmIChjb3VudCA+PSBmcmVxU3VtKQorICAgICAgcmV0dXJuIC0yOworICAgIFJhbmdlRGVjX0RlY29kZShwLCBoaUNudCwgZnJlcVN1bSAtIGhpQ250KTsKKyAgICBzZWUtPlN1bW0gPSAoVUludDE2KShzZWUtPlN1bW0gKyBmcmVxU3VtKTsKKyAgICBkbyB7IE1BU0socHNbLS1pXS0+U3ltYm9sKSA9IDA7IH0gd2hpbGUgKGkgIT0gMCk7CisgIH0KK30KKworLyogSC0+SSBjaGFuZ2VzOgorICBOUzJJbmR4CisgIEdsZXdDb3VudCwgYW5kIEdsdWUgbWV0aG9kCisgIEJpblN1bQorICBTZWUgLyBFc2NGcmVxCisgIENyZWF0ZVN1Y2Nlc3NvcnMgdXBkYXRlcyBtb3JlIHN1ZmZpeCBjb250ZXh0cworICBVcGRhdGVNb2RlbCBjb25zdHMuCisgIFByZXZTdWNjZXNzIFVwZGF0ZQorKi8KKworY29uc3QgSVBwbWQ4IF9fYXJjaGl2ZV9wcG1kOF9mdW5jdGlvbnMgPQoreworICAmUHBtZDhfQ29uc3RydWN0LAorICAmUHBtZDhfQWxsb2MsCisgICZQcG1kOF9GcmVlLAorICAmUHBtZDhfSW5pdCwKKyAgJlBwbWQ4X1JhbmdlRGVjX0luaXQsCisgICZQcG1kOF9EZWNvZGVTeW1ib2wsCit9OwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcHBtZDhfcHJpdmF0ZS5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcHBtZDhfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NGI3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wcG1kOF9wcml2YXRlLmgKQEAgLTAsMCArMSwxNDggQEAKKy8qIFBwbWQ4LmggLS0gUFBNZEkgY29kZWMKKzIwMTEtMDEtMjcgOiBJZ29yIFBhdmxvdiA6IFB1YmxpYyBkb21haW4KK1RoaXMgY29kZSBpcyBiYXNlZCBvbjoKKyAgUFBNZCB2YXIuSSAoMjAwMik6IERtaXRyeSBTaGthcmluIDogUHVibGljIGRvbWFpbgorICBDYXJyeWxlc3MgcmFuZ2Vjb2RlciAoMTk5OSk6IERtaXRyeSBTdWJib3RpbiA6IFB1YmxpYyBkb21haW4gKi8KKworI2lmbmRlZiBBUkNISVZFX1BQTUQ4X1BSSVZBVEVfSF9JTkNMVURFRAorI2RlZmluZSBBUkNISVZFX1BQTUQ4X1BSSVZBVEVfSF9JTkNMVURFRAorCisjaW5jbHVkZSAiYXJjaGl2ZV9wcG1kX3ByaXZhdGUuaCIKKworI2RlZmluZSBQUE1EOF9NSU5fT1JERVIgMgorI2RlZmluZSBQUE1EOF9NQVhfT1JERVIgMTYKKworc3RydWN0IENQcG1kOF9Db250ZXh0XzsKKwordHlwZWRlZgorICAjaWZkZWYgUFBNRF8zMkJJVAorICAgIHN0cnVjdCBDUHBtZDhfQ29udGV4dF8gKgorICAjZWxzZQorICAgIFVJbnQzMgorICAjZW5kaWYKKyAgQ1BwbWQ4X0NvbnRleHRfUmVmOworCisjcHJhZ21hIHBhY2socHVzaCwgMSkKKwordHlwZWRlZiBzdHJ1Y3QgQ1BwbWQ4X0NvbnRleHRfCit7CisgIEJ5dGUgTnVtU3RhdHM7CisgIEJ5dGUgRmxhZ3M7CisgIFVJbnQxNiBTdW1tRnJlcTsKKyAgQ1BwbWRfU3RhdGVfUmVmIFN0YXRzOworICBDUHBtZDhfQ29udGV4dF9SZWYgU3VmZml4OworfSBDUHBtZDhfQ29udGV4dDsKKworI3ByYWdtYSBwYWNrKHBvcCkKKworI2RlZmluZSBQcG1kOENvbnRleHRfT25lU3RhdGUocCkgKChDUHBtZF9TdGF0ZSAqKSYocCktPlN1bW1GcmVxKQorCisvKiBUaGUgQlVHIGluIFNoa2FyaW4ncyBjb2RlIGZvciBGUkVFWkUgbW9kZSB3YXMgZml4ZWQsIGJ1dCB0aGF0IGZpeGVkCisgICBjb2RlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggb3JpZ2luYWwgY29kZSBmb3Igc29tZSBmaWxlcyBjb21wcmVzc2VkCisgICBpbiBGUkVFWkUgbW9kZS4gU28gd2UgZGlzYWJsZSBGUkVFWkUgbW9kZSBzdXBwb3J0LiAqLworCitlbnVtCit7CisgIFBQTUQ4X1JFU1RPUkVfTUVUSE9EX1JFU1RBUlQsCisgIFBQTUQ4X1JFU1RPUkVfTUVUSE9EX0NVVF9PRkYKKyAgI2lmZGVmIFBQTUQ4X0ZSRUVaRV9TVVBQT1JUCisgICwgUFBNRDhfUkVTVE9SRV9NRVRIT0RfRlJFRVpFCisgICNlbmRpZgorfTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgQ1BwbWQ4X0NvbnRleHQgKk1pbkNvbnRleHQsICpNYXhDb250ZXh0OworICBDUHBtZF9TdGF0ZSAqRm91bmRTdGF0ZTsKKyAgdW5zaWduZWQgT3JkZXJGYWxsLCBJbml0RXNjLCBQcmV2U3VjY2VzcywgTWF4T3JkZXI7CisgIEludDMyIFJ1bkxlbmd0aCwgSW5pdFJMOyAvKiBtdXN0IGJlIDMyLWJpdCBhdCBsZWFzdCAqLworCisgIFVJbnQzMiBTaXplOworICBVSW50MzIgR2x1ZUNvdW50OworICBCeXRlICpCYXNlLCAqTG9Vbml0LCAqSGlVbml0LCAqVGV4dCwgKlVuaXRzU3RhcnQ7CisgIFVJbnQzMiBBbGlnbk9mZnNldDsKKyAgdW5zaWduZWQgUmVzdG9yZU1ldGhvZDsKKworICAvKiBSYW5nZSBDb2RlciAqLworICBVSW50MzIgUmFuZ2U7CisgIFVJbnQzMiBDb2RlOworICBVSW50MzIgTG93OworICB1bmlvbgorICB7CisgICAgSUJ5dGVJbiAqSW47CisgICAgSUJ5dGVPdXQgKk91dDsKKyAgfSBTdHJlYW07CisKKyAgQnl0ZSBJbmR4MlVuaXRzW1BQTURfTlVNX0lOREVYRVNdOworICBCeXRlIFVuaXRzMkluZHhbMTI4XTsKKyAgQ1BwbWRfVm9pZF9SZWYgRnJlZUxpc3RbUFBNRF9OVU1fSU5ERVhFU107CisgIFVJbnQzMiBTdGFtcHNbUFBNRF9OVU1fSU5ERVhFU107CisKKyAgQnl0ZSBOUzJCU0luZHhbMjU2XSwgTlMySW5keFsyNjBdOworICBDUHBtZF9TZWUgRHVtbXlTZWUsIFNlZVsyNF1bMzJdOworICBVSW50MTYgQmluU3VtbVsyNV1bNjRdOworfSBDUHBtZDg7CisKK3ZvaWQgUHBtZDhfQ29uc3RydWN0KENQcG1kOCAqcCk7CitCb29sIFBwbWQ4X0FsbG9jKENQcG1kOCAqcCwgVUludDMyIHNpemUpOwordm9pZCBQcG1kOF9GcmVlKENQcG1kOCAqcCk7Cit2b2lkIFBwbWQ4X0luaXQoQ1BwbWQ4ICpwLCB1bnNpZ25lZCBtYXhPcmRlciwgdW5zaWduZWQgcmVzdG9yZU1ldGhvZCk7CisjZGVmaW5lIFBwbWQ4X1dhc0FsbG9jYXRlZChwKSAoKHApLT5CYXNlICE9IE5VTEwpCisKKworLyogLS0tLS0tLS0tLSBJbnRlcm5hbCBGdW5jdGlvbnMgLS0tLS0tLS0tLSAqLworCitleHRlcm4gY29uc3QgQnl0ZSBQUE1EOF9rRXhwRXNjYXBlWzE2XTsKKworI2lmZGVmIFBQTURfMzJCSVQKKyAgI2RlZmluZSBQcG1kOF9HZXRQdHIocCwgcHRyKSAocHRyKQorICAjZGVmaW5lIFBwbWQ4X0dldENvbnRleHQocCwgcHRyKSAocHRyKQorICAjZGVmaW5lIFBwbWQ4X0dldFN0YXRzKHAsIGN0eCkgKChjdHgpLT5TdGF0cykKKyNlbHNlCisgICNkZWZpbmUgUHBtZDhfR2V0UHRyKHAsIG9mZnMpICgodm9pZCAqKSgocCktPkJhc2UgKyAob2ZmcykpKQorICAjZGVmaW5lIFBwbWQ4X0dldENvbnRleHQocCwgb2ZmcykgKChDUHBtZDhfQ29udGV4dCAqKVBwbWQ4X0dldFB0cigocCksIChvZmZzKSkpCisgICNkZWZpbmUgUHBtZDhfR2V0U3RhdHMocCwgY3R4KSAoKENQcG1kX1N0YXRlICopUHBtZDhfR2V0UHRyKChwKSwgKChjdHgpLT5TdGF0cykpKQorI2VuZGlmCisKK3ZvaWQgUHBtZDhfVXBkYXRlMShDUHBtZDggKnApOwordm9pZCBQcG1kOF9VcGRhdGUxXzAoQ1BwbWQ4ICpwKTsKK3ZvaWQgUHBtZDhfVXBkYXRlMihDUHBtZDggKnApOwordm9pZCBQcG1kOF9VcGRhdGVCaW4oQ1BwbWQ4ICpwKTsKKworI2RlZmluZSBQcG1kOF9HZXRCaW5TdW1tKHApIFwKKyAgICAmcC0+QmluU3VtbVtwLT5OUzJJbmR4W1BwbWQ4Q29udGV4dF9PbmVTdGF0ZShwLT5NaW5Db250ZXh0KS0+RnJlcSAtIDFdXVsgXAorICAgIHAtPk5TMkJTSW5keFtQcG1kOF9HZXRDb250ZXh0KHAsIHAtPk1pbkNvbnRleHQtPlN1ZmZpeCktPk51bVN0YXRzXSArIFwKKyAgICBwLT5QcmV2U3VjY2VzcyArIHAtPk1pbkNvbnRleHQtPkZsYWdzICsgKChwLT5SdW5MZW5ndGggPj4gMjYpICYgMHgyMCldCisKK0NQcG1kX1NlZSAqUHBtZDhfTWFrZUVzY0ZyZXEoQ1BwbWQ4ICpwLCB1bnNpZ25lZCBudW1NYXNrZWQsIFVJbnQzMiAqc2NhbGUpOworCisKKy8qIC0tLS0tLS0tLS0gRGVjb2RlIC0tLS0tLS0tLS0gKi8KKworQm9vbCBQcG1kOF9SYW5nZURlY19Jbml0KENQcG1kOCAqcCk7CisjZGVmaW5lIFBwbWQ4X1JhbmdlRGVjX0lzRmluaXNoZWRPSyhwKSAoKHApLT5Db2RlID09IDApCitpbnQgUHBtZDhfRGVjb2RlU3ltYm9sKENQcG1kOCAqcCk7IC8qIHJldHVybnM6IC0xIGFzIEVuZE1hcmtlciwgLTIgYXMgRGF0YUVycm9yICovCisKKy8qIC0tLS0tLS0tLS0gRW5jb2RlIC0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBQcG1kOF9SYW5nZUVuY19Jbml0KHApIHsgKHApLT5Mb3cgPSAwOyAocCktPlJhbmdlID0gMHhGRkZGRkZGRjsgfQordm9pZCBQcG1kOF9SYW5nZUVuY19GbHVzaERhdGEoQ1BwbWQ4ICpwKTsKK3ZvaWQgUHBtZDhfRW5jb2RlU3ltYm9sKENQcG1kOCAqcCwgaW50IHN5bWJvbCk7IC8qIHN5bWJvbCA9IC0xIG1lYW5zIEVuZE1hcmtlciAqLworCit0eXBlZGVmIHN0cnVjdAoreworICAvKiBCYXNlIEZ1bmN0aW9ucyAqLworICB2b2lkICgqUHBtZDhfQ29uc3RydWN0KShDUHBtZDggKnApOworICBCb29sICgqUHBtZDhfQWxsb2MpKENQcG1kOCAqcCwgVUludDMyIHNpemUpOworICB2b2lkICgqUHBtZDhfRnJlZSkoQ1BwbWQ4ICpwKTsKKyAgdm9pZCAoKlBwbWQ4X0luaXQpKENQcG1kOCAqcCwgdW5zaWduZWQgbWF4X29yZGVyLCB1bnNpZ25lZCByZXN0b3JlX21ldGhvZCk7CisgICNkZWZpbmUgUHBtZDdfV2FzQWxsb2NhdGVkKHApICgocCktPkJhc2UgIT0gTlVMTCkKKworICAvKiBEZWNvZGUgRnVuY3Rpb25zICovCisgIGludCAoKlBwbWQ4X1JhbmdlRGVjX0luaXQpKENQcG1kOCAqcCk7CisgIGludCAoKlBwbWQ4X0RlY29kZVN5bWJvbCkoQ1BwbWQ4ICpwKTsKK30gSVBwbWQ4OworCitleHRlcm4gY29uc3QgSVBwbWQ4IF9fYXJjaGl2ZV9wcG1kOF9mdW5jdGlvbnM7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcHBtZF9wcml2YXRlLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wcG1kX3ByaXZhdGUuaAppbmRleCBhODNiODUxLi41ODI4MDNlIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wcG1kX3ByaXZhdGUuaAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wcG1kX3ByaXZhdGUuaApAQCAtMiwxMyArMiwxMyBAQAogMjAxMC0wMy0xMiA6IElnb3IgUGF2bG92IDogUHVibGljIGRvbWFpbgogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIFBQTWQgdmFyLkggKDIwMDEpOiBEbWl0cnkgU2hrYXJpbiA6IFB1YmxpYyBkb21haW4gKi8KIAorI2lmbmRlZiBBUkNISVZFX1BQTURfUFJJVkFURV9IX0lOQ0xVREVECisjZGVmaW5lIEFSQ0hJVkVfUFBNRF9QUklWQVRFX0hfSU5DTFVERUQKKwogI2lmbmRlZiBfX0xJQkFSQ0hJVkVfQlVJTEQKICNlcnJvciBUaGlzIGhlYWRlciBpcyBvbmx5IHRvIGJlIHVzZWQgaW50ZXJuYWxseSB0byBsaWJhcmNoaXZlLgogI2VuZGlmCiAKLSNpZm5kZWYgQVJDSElWRV9QUE1EX1BSSVZBVEVfSF9JTkNMVURFRAotI2RlZmluZSBBUkNISVZFX1BQTURfUFJJVkFURV9IX0lOQ0xVREVECi0KICNpbmNsdWRlIDxzdGRkZWYuaD4KIAogI2luY2x1ZGUgImFyY2hpdmVfcmVhZF9wcml2YXRlLmgiCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wcml2YXRlLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9wcml2YXRlLmgKaW5kZXggNGI0YmU5Ny4uOTM3YTg3YiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcHJpdmF0ZS5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3ByaXZhdGUuaApAQCAtMjUsMTMgKzI1LDEzIEBACiAgKiAkRnJlZUJTRDogaGVhZC9saWIvbGliYXJjaGl2ZS9hcmNoaXZlX3ByaXZhdGUuaCAyMDEwOTggMjAwOS0xMi0yOCAwMjo1ODoxNFoga2llbnR6bGUgJAogICovCiAKKyNpZm5kZWYgQVJDSElWRV9QUklWQVRFX0hfSU5DTFVERUQKKyNkZWZpbmUgQVJDSElWRV9QUklWQVRFX0hfSU5DTFVERUQKKwogI2lmbmRlZiBfX0xJQkFSQ0hJVkVfQlVJTEQKICNlcnJvciBUaGlzIGhlYWRlciBpcyBvbmx5IHRvIGJlIHVzZWQgaW50ZXJuYWxseSB0byBsaWJhcmNoaXZlLgogI2VuZGlmCiAKLSNpZm5kZWYgQVJDSElWRV9QUklWQVRFX0hfSU5DTFVERUQKLSNkZWZpbmUJQVJDSElWRV9QUklWQVRFX0hfSU5DTFVERUQKLQogI2lmIEhBVkVfSUNPTlZfSAogI2luY2x1ZGUgPGljb252Lmg+CiAjZW5kaWYKQEAgLTE1Myw2ICsxNTMsMTEgQEAKIAogdm9pZAlfX2FyY2hpdmVfZW5zdXJlX2Nsb2V4ZWNfZmxhZyhpbnQgZmQpOwogaW50CV9fYXJjaGl2ZV9ta3RlbXAoY29uc3QgY2hhciAqdG1wZGlyKTsKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19DWUdXSU5fXykKK2ludAlfX2FyY2hpdmVfbWtzdGVtcCh3Y2hhcl90ICp0ZW1wbGF0ZSk7CisjZWxzZQoraW50CV9fYXJjaGl2ZV9ta3N0ZW1wKGNoYXIgKnRlbXBsYXRlKTsKKyNlbmRpZgogCiBpbnQJX19hcmNoaXZlX2NsZWFuKHN0cnVjdCBhcmNoaXZlICopOwogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yYW5kb21fcHJpdmF0ZS5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmFuZG9tX3ByaXZhdGUuaAppbmRleCBjNDE0Nzc5Li4wOGI5MWIzIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yYW5kb21fcHJpdmF0ZS5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JhbmRvbV9wcml2YXRlLmgKQEAgLTIzLDEzICsyMywxMyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaWZuZGVmIEFSQ0hJVkVfUkFORE9NX1BSSVZBVEVfSF9JTkNMVURFRAorI2RlZmluZSBBUkNISVZFX1JBTkRPTV9QUklWQVRFX0hfSU5DTFVERUQKKwogI2lmbmRlZiBfX0xJQkFSQ0hJVkVfQlVJTEQKICNlcnJvciBUaGlzIGhlYWRlciBpcyBvbmx5IHRvIGJlIHVzZWQgaW50ZXJuYWxseSB0byBsaWJhcmNoaXZlLgogI2VuZGlmCiAKLSNpZm5kZWYgQVJDSElWRV9SQU5ET01fUFJJVkFURV9IX0lOQ0xVREVECi0jZGVmaW5lIEFSQ0hJVkVfUkFORE9NX1BSSVZBVEVfSF9JTkNMVURFRAotCiAvKiBSYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gKi8KIGludCBhcmNoaXZlX3JhbmRvbSh2b2lkICpidWYsIHNpemVfdCBuYnl0ZXMpOwogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yYi5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmIuaAppbmRleCA0NTYyZTllLi44ODUxZjEwIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yYi5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JiLmgKQEAgLTI4LDggKzI4LDkgQEAKICAqCiAgKiBCYXNlZCBvbiBOZXRCU0Q6IHJiLmgsdiAxLjEzIDIwMDkvMDgvMTYgMTA6NTc6MDEgeWFtdCBFeHAKICAqLwotI2lmbmRlZiBBUkNISVZFX1JCX0hfCi0jZGVmaW5lCUFSQ0hJVkVfUkJfSF8KKworI2lmbmRlZiBBUkNISVZFX1JCX0hfSU5DTFVERUQKKyNkZWZpbmUJQVJDSElWRV9SQl9IX0lOQ0xVREVECiAKIHN0cnVjdCBhcmNoaXZlX3JiX25vZGUgewogCXN0cnVjdCBhcmNoaXZlX3JiX25vZGUgKnJiX25vZGVzWzJdOwpAQCAtNDgsMTIgKzQ5LDI0IEBACiAgICAgX19hcmNoaXZlX3JiX3RyZWVfaXRlcmF0ZSgoVCksIE5VTEwsIEFSQ0hJVkVfUkJfRElSX0xFRlQpCiAjZGVmaW5lIEFSQ0hJVkVfUkJfVFJFRV9NQVgoVCkgXAogICAgIF9fYXJjaGl2ZV9yYl90cmVlX2l0ZXJhdGUoKFQpLCBOVUxMLCBBUkNISVZFX1JCX0RJUl9SSUdIVCkKKyNkZWZpbmUgQVJDSElWRV9SQl9UUkVFX05FWFQoVCwgTikgXAorICAgIF9fYXJjaGl2ZV9yYl90cmVlX2l0ZXJhdGUoKFQpLCAoTiksIEFSQ0hJVkVfUkJfRElSX1JJR0hUKQorI2RlZmluZSBBUkNISVZFX1JCX1RSRUVfUFJFVihULCBOKSBcCisgICAgX19hcmNoaXZlX3JiX3RyZWVfaXRlcmF0ZSgoVCksIChOKSwgQVJDSElWRV9SQl9ESVJfTEVGVCkKICNkZWZpbmUgQVJDSElWRV9SQl9UUkVFX0ZPUkVBQ0goTiwgVCkgXAogICAgIGZvciAoKE4pID0gQVJDSElWRV9SQl9UUkVFX01JTihUKTsgKE4pOyBcCi0JKE4pID0gX19hcmNoaXZlX3JiX3RyZWVfaXRlcmF0ZSgoVCksIChOKSwgQVJDSElWRV9SQl9ESVJfUklHSFQpKQorCShOKSA9IEFSQ0hJVkVfUkJfVFJFRV9ORVhUKChUKSwgKE4pKSkKICNkZWZpbmUgQVJDSElWRV9SQl9UUkVFX0ZPUkVBQ0hfUkVWRVJTRShOLCBUKSBcCiAgICAgZm9yICgoTikgPSBBUkNISVZFX1JCX1RSRUVfTUFYKFQpOyAoTik7IFwKLQkoTikgPSBfX2FyY2hpdmVfcmJfdHJlZV9pdGVyYXRlKChUKSwgKE4pLCBBUkNISVZFX1JCX0RJUl9MRUZUKSkKKwkoTikgPSBBUkNISVZFX1JCX1RSRUVfUFJFVigoVCksIChOKSkpCisjZGVmaW5lIEFSQ0hJVkVfUkJfVFJFRV9GT1JFQUNIX1NBRkUoTiwgVCwgUykgXAorICAgIGZvciAoKE4pID0gQVJDSElWRV9SQl9UUkVFX01JTihUKTsgXAorCShOKSAmJiAoKFMpID0gQVJDSElWRV9SQl9UUkVFX05FWFQoKFQpLCAoTikpLCAxKTsgXAorCShOKSA9IChTKSkKKyNkZWZpbmUgQVJDSElWRV9SQl9UUkVFX0ZPUkVBQ0hfUkVWRVJTRV9TQUZFKE4sIFQsIFMpIFwKKyAgICBmb3IgKChOKSA9IEFSQ0hJVkVfUkJfVFJFRV9NQVgoVCk7IFwKKyAgICAgICAgKE4pICYmICgoUykgPSBBUkNISVZFX1JCX1RSRUVfUFJFVigoVCksIChOKSksIDEpOyBcCisgICAgICAgIChOKSA9IChTKSkKIAogLyoKICAqIGFyY2hpdmVfcmJ0b19jb21wYXJlX25vZGVzX2ZuOgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZC4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZC4zCmluZGV4IGQzN2U3MzIuLmNiZWRkMGEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWQuMworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkLjMKQEAgLTE1NSw3ICsxNTUsNyBAQAogLkZuIGFyY2hpdmVfcmVhZF9mcmVlCiB0byByZWxlYXNlIGFsbCByZXNvdXJjZXMsIGluY2x1ZGluZyBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUgbGlicmFyeS4KIC5cIgotLlNoIEVYQU1QTEUKKy5TaCBFWEFNUExFUwogVGhlIGZvbGxvd2luZyBpbGx1c3RyYXRlcyBiYXNpYyB1c2FnZSBvZiB0aGUgbGlicmFyeS4KIEluIHRoaXMgZXhhbXBsZSwKIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgYXJlIHNpbXBseSB3cmFwcGVycyBhcm91bmQgdGhlIHN0YW5kYXJkCkBAIC0yMTcsMTYgKzIxNywxNiBAQAogLlwiIC5TaCBFUlJPUlMKIC5TaCBTRUUgQUxTTwogLlhyIHRhciAxICwKLS5YciBsaWJhcmNoaXZlIDMgLAotLlhyIGFyY2hpdmVfcmVhZF9uZXcgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX2RhdGEgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX2V4dHJhY3QgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX2ZpbHRlciAzICwKIC5YciBhcmNoaXZlX3JlYWRfZm9ybWF0IDMgLAogLlhyIGFyY2hpdmVfcmVhZF9oZWFkZXIgMyAsCisuWHIgYXJjaGl2ZV9yZWFkX25ldyAzICwKIC5YciBhcmNoaXZlX3JlYWRfb3BlbiAzICwKIC5YciBhcmNoaXZlX3JlYWRfc2V0X29wdGlvbnMgMyAsCiAuWHIgYXJjaGl2ZV91dGlsIDMgLAorLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgdGFyIDUKIC5TaCBISVNUT1JZCiBUaGUKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWQuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWQuYwppbmRleCAwZTU2ZTc2Li40YTkzM2IyIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZC5jCkBAIC00MzMsNyArNDMzLDcgQEAKIAkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CiAJfQogCWEtPmNsaWVudC5kYXRhc2V0ID0gKHN0cnVjdCBhcmNoaXZlX3JlYWRfZGF0YV9ub2RlICopcDsKLQlmb3IgKGkgPSBhLT5jbGllbnQubm9kZXMgLSAxOyBpID4gaWluZGV4ICYmIGkgPiAwOyBpLS0pIHsKKwlmb3IgKGkgPSBhLT5jbGllbnQubm9kZXMgLSAxOyBpID4gaWluZGV4OyBpLS0pIHsKIAkJYS0+Y2xpZW50LmRhdGFzZXRbaV0uZGF0YSA9IGEtPmNsaWVudC5kYXRhc2V0W2ktMV0uZGF0YTsKIAkJYS0+Y2xpZW50LmRhdGFzZXRbaV0uYmVnaW5fcG9zaXRpb24gPSAtMTsKIAkJYS0+Y2xpZW50LmRhdGFzZXRbaV0udG90YWxfc2l6ZSA9IC0xOwpAQCAtNjExLDYgKzYxMSwxNSBAQAogCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CiB9CiAKK2ludAorX19hcmNoaXZlX3JlYWRfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSkKK3sKKwlpZiAoYS0+ZmlsdGVyLT5yZWFkX2hlYWRlcikKKwkJcmV0dXJuIGEtPmZpbHRlci0+cmVhZF9oZWFkZXIoYS0+ZmlsdGVyLCBlbnRyeSk7CisJZWxzZQorCQlyZXR1cm4gKEFSQ0hJVkVfT0spOworfQorCiAvKgogICogUmVhZCBoZWFkZXIgb2YgbmV4dCBlbnRyeS4KICAqLwpAQCAtODM1LDcgKzg0NCw4IEBACiAJZGVzdCA9IChjaGFyICopYnVmZjsKIAogCXdoaWxlIChzID4gMCkgewotCQlpZiAoYS0+cmVhZF9kYXRhX3JlbWFpbmluZyA9PSAwKSB7CisJCWlmIChhLT5yZWFkX2RhdGFfb2Zmc2V0ID09IGEtPnJlYWRfZGF0YV9vdXRwdXRfb2Zmc2V0ICYmCisJCSAgICBhLT5yZWFkX2RhdGFfcmVtYWluaW5nID09IDApIHsKIAkJCXJlYWRfYnVmID0gYS0+cmVhZF9kYXRhX2Jsb2NrOwogCQkJYS0+cmVhZF9kYXRhX2lzX3Bvc2l4X3JlYWQgPSAxOwogCQkJYS0+cmVhZF9kYXRhX3JlcXVlc3RlZCA9IHM7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2FkZF9wYXNzcGhyYXNlLjMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2FkZF9wYXNzcGhyYXNlLjMKaW5kZXggOGIyNDJlYS4uY2E2MGQ0ZiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9hZGRfcGFzc3BocmFzZS4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfYWRkX3Bhc3NwaHJhc2UuMwpAQCAtNTksMTYgKzU5LDE2IEBACiB3aWxsIGJlIHJldHVybmVkLgogT3RoZXJ3aXNlLAogLkNtIEFSQ0hJVkVfT0sKLXdpbGwgYmUgcmV0dXJuZWQuIAord2lsbCBiZSByZXR1cm5lZC4KIC5JdCBGbiBhcmNoaXZlX3JlYWRfc2V0X3Bhc3NwaHJhc2VfY2FsbGJhY2sKLVJlZ2lzdGVyIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBpbnZva2VkIHRvIGdldCBhIHBhc3NwaHJhc2UgCi1mb3IgZGVjcnB0aW9uIGFmdGVyIHRyeWluZyBhbGwgcGFzc3BocmFzZXMgcmVnaXN0ZXJlZCBieSB0aGUKK1JlZ2lzdGVyIGEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGludm9rZWQgdG8gZ2V0IGEgcGFzc3BocmFzZSAKK2ZvciBkZWNyeXB0aW9uIGFmdGVyIHRyeWluZyBhbGwgdGhlIHBhc3NwaHJhc2VzIHJlZ2lzdGVyZWQgYnkgdGhlCiAuRm4gYXJjaGl2ZV9yZWFkX2FkZF9wYXNzcGhyYXNlCiBmdW5jdGlvbiBmYWlsZWQuCiAuRWwKIC5cIiAuU2ggRVJST1JTCiAuU2ggU0VFIEFMU08KIC5YciB0YXIgMSAsCi0uWHIgbGliYXJjaGl2ZSAzICwKIC5YciBhcmNoaXZlX3JlYWQgMyAsCi0uWHIgYXJjaGl2ZV9yZWFkX3NldF9vcHRpb25zIDMKKy5YciBhcmNoaXZlX3JlYWRfc2V0X29wdGlvbnMgMyAsCisuWHIgbGliYXJjaGl2ZSAzCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2RhdGEuMyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZGF0YS4zCmluZGV4IGMxYmMxNWQuLjc4YzBjOTAgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZGF0YS4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZGF0YS4zCkBAIC0yOCw3ICsyOCw3IEBACiAuRHQgQVJDSElWRV9SRUFEX0RBVEEgMwogLk9zCiAuU2ggTkFNRQotLk5tIGFyY2hpdmVfcmVhZF9kYXRhCisuTm0gYXJjaGl2ZV9yZWFkX2RhdGEgLAogLk5tIGFyY2hpdmVfcmVhZF9kYXRhX2Jsb2NrICwKIC5ObSBhcmNoaXZlX3JlYWRfZGF0YV9za2lwICwKIC5ObSBhcmNoaXZlX3JlYWRfZGF0YV9pbnRvX2ZkCkBAIC0xMTgsNyArMTE4LDYgQEAKIC5cIgogLlNoIFNFRSBBTFNPCiAuWHIgdGFyIDEgLAotLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkIDMgLAogLlhyIGFyY2hpdmVfcmVhZF9leHRyYWN0IDMgLAogLlhyIGFyY2hpdmVfcmVhZF9maWx0ZXIgMyAsCkBAIC0xMjcsNCArMTI2LDUgQEAKIC5YciBhcmNoaXZlX3JlYWRfb3BlbiAzICwKIC5YciBhcmNoaXZlX3JlYWRfc2V0X29wdGlvbnMgMyAsCiAuWHIgYXJjaGl2ZV91dGlsIDMgLAorLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgdGFyIDUKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZGlzay4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9kaXNrLjMKaW5kZXggMDI3ZjYzYy4uODJkNmE1YyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9kaXNrLjMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9kaXNrLjMKQEAgLTk5LDkgKzk5LDEwIEBACiAuQmwgLXRhZyAtY29tcGFjdCAtd2lkdGggImluZGVudCIKIC5JdCBDbSBBUkNISVZFX1JFQURESVNLX0hPTk9SX05PRFVNUAogU2tpcCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgd2l0aCB0aGUgbm9kdW1wIGZpbGUgYXR0cmlidXRlIChmaWxlIGZsYWcpIHNldC4KLUJ5IGRlZmF1bHQsIHRoZSBub2R1bXAgZmlsZSBhdHJyaWJ1dGUgaXMgaWdub3JlZC4KK0J5IGRlZmF1bHQsIHRoZSBub2R1bXAgZmlsZSBhdHRyaWJ1dGUgaXMgaWdub3JlZC4KIC5JdCBDbSBBUkNISVZFX1JFQURESVNLX01BQ19DT1BZRklMRQotTWFjIE9TIFggc3BlY2lmaWMuIFJlYWQgbWV0YWRhdGEgKEFDTHMgYW5kIGV4dGVuZGVkIGF0dHJpYnV0ZXMpIHdpdGgKK01hYyBPUyBYIHNwZWNpZmljLgorUmVhZCBtZXRhZGF0YSAoQUNMcyBhbmQgZXh0ZW5kZWQgYXR0cmlidXRlcykgd2l0aAogLlhyIGNvcHlmaWxlIDMgLgogQnkgZGVmYXVsdCwgbWV0YWRhdGEgaXMgcmVhZCB1c2luZwogLlhyIGNvcHlmaWxlIDMgLgpAQCAtMTIwLDcgKzEyMSw3IEBACiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBmaWxlIGF0dHJpYnV0ZXMuCiAuSXQgQ20gQVJDSElWRV9SRUFERElTS19OT19UUkFWRVJTRV9NT1VOVFMKIERvIG5vdCB0cmF2ZXJzZSBtb3VudCBwb2ludHMuCi1CeSBkZWZhdXQsIG1vaW50IHBvaW50cyBhcmUgdHJhdmVyc2VkLgorQnkgZGVmYXVsdCwgbW91bnQgcG9pbnRzIGFyZSB0cmF2ZXJzZWQuCiAuSXQgQ20gQVJDSElWRV9SRUFERElTS19OT19YQVRUUgogRG8gbm90IHJlYWQgZXh0ZW5kZWQgZmlsZSBhdHRyaWJ1dGVzICh4YXR0cnMpLgogQnkgZGVmYXVsdCwgZXh0ZW5kZWQgZmlsZSBhdHRyaWJ1dGVzIGFyZSByZWFkIGZyb20gZGlzay4KQEAgLTIxNiw3ICsyMTcsNyBAQAogKEZvciBleGFtcGxlLCBkaXJlY3RvcnkgdHJhdmVyc2FsIGxpYnJhcmllcyBvZnRlbiBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24uKQogLlBwCiBXaGVyZSBuZWNlc3NhcnksIHVzZXIgYW5kIGdyb3VwIGlkcyBhcmUgY29udmVydGVkIHRvIHVzZXIgYW5kIGdyb3VwIG5hbWVzCi11c2luZyB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZWQgbG9va3VwIGZ1bmN0aW9ucyBhYm92ZS4KK3VzaW5nIHRoZSBjdXJyZW50bHktcmVnaXN0ZXJlZCBsb29rdXAgZnVuY3Rpb25zIGFib3ZlLgogVGhpcyBhZmZlY3RzIHRoZSBmaWxlIG93bmVyc2hpcCBmaWVsZHMgYW5kIEFDTCB2YWx1ZXMgaW4gdGhlCiAuVG4gc3RydWN0IGFyY2hpdmVfZW50cnkKIG9iamVjdC4KQEAgLTIyNiw3ICsyMjcsNyBAQAogb2JqZWN0IGFuZCB0aGUgb3ZlcmFsbCBkZXNpZ24gb2YgdGhlIGxpYnJhcnkgY2FuIGJlIGZvdW5kIGluIHRoZQogLlhyIGxpYmFyY2hpdmUgMwogb3ZlcnZpZXcuCi0uU2ggRVhBTVBMRQorLlNoIEVYQU1QTEVTCiBUaGUgZm9sbG93aW5nIGlsbHVzdHJhdGVzIGJhc2ljIHVzYWdlIG9mIHRoZSBsaWJyYXJ5IGJ5CiBzaG93aW5nIGhvdyB0byB1c2UgaXQgdG8gY29weSBhbiBpdGVtIG9uIGRpc2sgaW50byBhbiBhcmNoaXZlLgogLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50CkBAIC0yOTEsMTEgKzI5MiwxMSBAQAogZnVuY3Rpb25zLgogLlwiCiAuU2ggU0VFIEFMU08KKy5YciB0YXIgMSAsCiAuWHIgYXJjaGl2ZV9yZWFkIDMgLAogLlhyIGFyY2hpdmVfdXRpbCAzICwKIC5YciBhcmNoaXZlX3dyaXRlIDMgLAogLlhyIGFyY2hpdmVfd3JpdGVfZGlzayAzICwKLS5YciB0YXIgMSAsCiAuWHIgbGliYXJjaGl2ZSAzCiAuU2ggSElTVE9SWQogVGhlCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2Rpc2tfZW50cnlfZnJvbV9maWxlLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2Rpc2tfZW50cnlfZnJvbV9maWxlLmMKaW5kZXggMTc4NmNmZi4uMmE4Y2VjOCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9kaXNrX2VudHJ5X2Zyb21fZmlsZS5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZGlza19lbnRyeV9mcm9tX2ZpbGUuYwpAQCAtMTYzLDYgKzE2Myw5IEBACiAJaW50IGluaXRpYWxfZmQgPSBmZDsKIAlpbnQgciwgcjE7CiAKKwlhcmNoaXZlX2NoZWNrX21hZ2ljKF9hLCBBUkNISVZFX1JFQURfRElTS19NQUdJQywgQVJDSElWRV9TVEFURV9BTlksCisJCSJhcmNoaXZlX3JlYWRfZGlza19lbnRyeV9mcm9tX2ZpbGUiKTsKKwogCWFyY2hpdmVfY2xlYXJfZXJyb3IoX2EpOwogCXBhdGggPSBhcmNoaXZlX2VudHJ5X3NvdXJjZXBhdGgoZW50cnkpOwogCWlmIChwYXRoID09IE5VTEwpCkBAIC0xODgsNyArMTkxLDcgQEAKIAkJCQl9CiAJCQl9IGVsc2UKICNlbmRpZgotCQkJaWYgKHN0YXQocGF0aCwgJnMpICE9IDApIHsKKwkJCWlmIChsYV9zdGF0KHBhdGgsICZzKSAhPSAwKSB7CiAJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIGVycm5vLAogCQkJCSAgICAiQ2FuJ3Qgc3RhdCAlcyIsIHBhdGgpOwogCQkJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOwpAQCAtMjQ2LDExICsyNDksMTEgQEAKIAogI2lmIGRlZmluZWQoSEFWRV9SRUFETElOSykgfHwgZGVmaW5lZChIQVZFX1JFQURMSU5LQVQpCiAJaWYgKFNfSVNMTksoc3QtPnN0X21vZGUpKSB7Ci0JCXNpemVfdCBsaW5rYnVmZmVyX2xlbiA9IHN0LT5zdF9zaXplICsgMTsKKwkJc2l6ZV90IGxpbmtidWZmZXJfbGVuID0gc3QtPnN0X3NpemU7CiAJCWNoYXIgKmxpbmtidWZmZXI7CiAJCWludCBsbmtsZW47CiAKLQkJbGlua2J1ZmZlciA9IG1hbGxvYyhsaW5rYnVmZmVyX2xlbik7CisJCWxpbmtidWZmZXIgPSBtYWxsb2MobGlua2J1ZmZlcl9sZW4gKyAxKTsKIAkJaWYgKGxpbmtidWZmZXIgPT0gTlVMTCkgewogCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEVOT01FTSwKIAkJCSAgICAiQ291bGRuJ3QgcmVhZCBsaW5rIGRhdGEiKTsKQEAgLTI3Nyw3ICsyODAsNyBAQAogCQkJZnJlZShsaW5rYnVmZmVyKTsKIAkJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOwogCQl9Ci0JCWxpbmtidWZmZXJbbG5rbGVuXSA9IDA7CisJCWxpbmtidWZmZXJbbG5rbGVuXSA9ICdcMCc7CiAJCWFyY2hpdmVfZW50cnlfc2V0X3N5bWxpbmsoZW50cnksIGxpbmtidWZmZXIpOwogCQlmcmVlKGxpbmtidWZmZXIpOwogCX0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZGlza19wb3NpeC5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9kaXNrX3Bvc2l4LmMKaW5kZXggY2RmNzU0MS4uNTJmZWM3YiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9kaXNrX3Bvc2l4LmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9kaXNrX3Bvc2l4LmMKQEAgLTY5NCw2ICs2OTQsNyBAQAogCXN0cnVjdCB0cmVlICp0ID0gYS0+dHJlZTsKIAlpbnQgcjsKIAlzc2l6ZV90IGJ5dGVzOworCWludDY0X3Qgc3BhcnNlX2J5dGVzOwogCXNpemVfdCBidWZmYnl0ZXM7CiAJaW50IGVtcHR5X3NwYXJzZV9yZWdpb24gPSAwOwogCkBAIC03MjgsMjcgKzcyOSwyMyBAQAogCQlpZiAoKHQtPmZsYWdzICYgbmVlZHNSZXN0b3JlVGltZXMpICE9IDAgJiYKIAkJICAgIHQtPnJlc3RvcmVfdGltZS5ub2F0aW1lID09IDApCiAJCQlmbGFncyB8PSBPX05PQVRJTUU7Ci0JCWRvIHsKICNlbmRpZgotCQkJdC0+ZW50cnlfZmQgPSBvcGVuX29uX2N1cnJlbnRfZGlyKHQsCi0JCQkgICAgdHJlZV9jdXJyZW50X2FjY2Vzc19wYXRoKHQpLCBmbGFncyk7Ci0JCQlfX2FyY2hpdmVfZW5zdXJlX2Nsb2V4ZWNfZmxhZyh0LT5lbnRyeV9mZCk7CisJCXQtPmVudHJ5X2ZkID0gb3Blbl9vbl9jdXJyZW50X2Rpcih0LAorCQkgICAgdHJlZV9jdXJyZW50X2FjY2Vzc19wYXRoKHQpLCBmbGFncyk7CisJCV9fYXJjaGl2ZV9lbnN1cmVfY2xvZXhlY19mbGFnKHQtPmVudHJ5X2ZkKTsKICNpZiBkZWZpbmVkKE9fTk9BVElNRSkKLQkJCS8qCi0JCQkgKiBXaGVuIHdlIGRpZCBvcGVuIHRoZSBmaWxlIHdpdGggT19OT0FUSU1FIGZsYWcsCi0JCQkgKiBpZiBzdWNjZXNzZnVsLCBzZXQgMSB0byB0LT5yZXN0b3JlX3RpbWUubm9hdGltZQotCQkJICogbm90IHRvIHJlc3RvcmUgYW4gYXRpbWUgb2YgdGhlIGZpbGUgbGF0ZXIuCi0JCQkgKiBpZiBmYWlsZWQgYnkgRVBFUk0sIHJldHJ5IGl0IHdpdGhvdXQgT19OT0FUSU1FIGZsYWcuCi0JCQkgKi8KLQkJCWlmIChmbGFncyAmIE9fTk9BVElNRSkgewotCQkJCWlmICh0LT5lbnRyeV9mZCA+PSAwKQotCQkJCQl0LT5yZXN0b3JlX3RpbWUubm9hdGltZSA9IDE7Ci0JCQkJZWxzZSBpZiAoZXJybm8gPT0gRVBFUk0pIHsKLQkJCQkJZmxhZ3MgJj0gfk9fTk9BVElNRTsKLQkJCQkJY29udGludWU7Ci0JCQkJfQotCQkJfQotCQl9IHdoaWxlICgwKTsKKwkJLyoKKwkJICogV2hlbiB3ZSBkaWQgb3BlbiB0aGUgZmlsZSB3aXRoIE9fTk9BVElNRSBmbGFnLAorCQkgKiBpZiBzdWNjZXNzZnVsLCBzZXQgMSB0byB0LT5yZXN0b3JlX3RpbWUubm9hdGltZQorCQkgKiBub3QgdG8gcmVzdG9yZSBhbiBhdGltZSBvZiB0aGUgZmlsZSBsYXRlci4KKwkJICogaWYgZmFpbGVkIGJ5IEVQRVJNLCByZXRyeSBpdCB3aXRob3V0IE9fTk9BVElNRSBmbGFnLgorCQkgKi8KKwkJaWYgKGZsYWdzICYgT19OT0FUSU1FKSB7CisJCQlpZiAodC0+ZW50cnlfZmQgPj0gMCkKKwkJCQl0LT5yZXN0b3JlX3RpbWUubm9hdGltZSA9IDE7CisJCQllbHNlIGlmIChlcnJubyA9PSBFUEVSTSkKKwkJCQlmbGFncyAmPSB+T19OT0FUSU1FOworCQl9CiAjZW5kaWYKIAkJaWYgKHQtPmVudHJ5X2ZkIDwgMCkgewogCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIGVycm5vLApAQCAtNzkyLDkgKzc4OSw5IEBACiAJCQlhLT5hcmNoaXZlLnN0YXRlID0gQVJDSElWRV9TVEFURV9GQVRBTDsKIAkJCWdvdG8gYWJvcnRfcmVhZF9kYXRhOwogCQl9Ci0JCWJ5dGVzID0gdC0+Y3VycmVudF9zcGFyc2UtPm9mZnNldCAtIHQtPmVudHJ5X3RvdGFsOwotCQl0LT5lbnRyeV9yZW1haW5pbmdfYnl0ZXMgLT0gYnl0ZXM7Ci0JCXQtPmVudHJ5X3RvdGFsICs9IGJ5dGVzOworCQlzcGFyc2VfYnl0ZXMgPSB0LT5jdXJyZW50X3NwYXJzZS0+b2Zmc2V0IC0gdC0+ZW50cnlfdG90YWw7CisJCXQtPmVudHJ5X3JlbWFpbmluZ19ieXRlcyAtPSBzcGFyc2VfYnl0ZXM7CisJCXQtPmVudHJ5X3RvdGFsICs9IHNwYXJzZV9ieXRlczsKIAl9CiAKIAkvKgpAQCAtODU2LDcgKzg1MywxMiBAQAogCWNvbnN0IHN0cnVjdCBzdGF0ICpzdDsgLyogaW5mbyB0byB1c2UgZm9yIHRoaXMgZW50cnkgKi8KIAljb25zdCBzdHJ1Y3Qgc3RhdCAqbHN0Oy8qIGxzdGF0KCkgaW5mb3JtYXRpb24gKi8KIAljb25zdCBjaGFyICpuYW1lOwotCWludCBkZXNjZW5kLCByOworCWludCBkZWxheWVkLCBkZWxheWVkX2Vycm5vLCBkZXNjZW5kLCByOworCXN0cnVjdCBhcmNoaXZlX3N0cmluZyBkZWxheWVkX3N0cjsKKworCWRlbGF5ZWQgPSBBUkNISVZFX09LOworCWRlbGF5ZWRfZXJybm8gPSAwOworCWFyY2hpdmVfc3RyaW5nX2luaXQoJmRlbGF5ZWRfc3RyKTsKIAogCXN0ID0gTlVMTDsKIAlsc3QgPSBOVUxMOwpAQCAtODg1LDE0ICs4ODcsMjYgQEAKIAkJY2FzZSBUUkVFX1JFR1VMQVI6CiAJCQlsc3QgPSB0cmVlX2N1cnJlbnRfbHN0YXQodCk7CiAJCQlpZiAobHN0ID09IE5VTEwpIHsKKwkJCSAgICBpZiAoZXJybm8gPT0gRU5PRU5UICYmIHQtPmRlcHRoID4gMCkgeworCQkJCWRlbGF5ZWQgPSBBUkNISVZFX1dBUk47CisJCQkJZGVsYXllZF9lcnJubyA9IGVycm5vOworCQkJCWlmIChkZWxheWVkX3N0ci5sZW5ndGggPT0gMCkgeworCQkJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKCZkZWxheWVkX3N0ciwKKwkJCQkJICAgICIlcyIsIHRyZWVfY3VycmVudF9wYXRoKHQpKTsKKwkJCQl9IGVsc2UgeworCQkJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKCZkZWxheWVkX3N0ciwKKwkJCQkJICAgICIgJXMiLCB0cmVlX2N1cnJlbnRfcGF0aCh0KSk7CisJCQkJfQorCQkJICAgIH0gZWxzZSB7CiAJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIGVycm5vLAogCQkJCSAgICAiJXM6IENhbm5vdCBzdGF0IiwKIAkJCQkgICAgdHJlZV9jdXJyZW50X3BhdGgodCkpOwogCQkJCXRyZWVfZW50ZXJfaW5pdGlhbF9kaXIodCk7CiAJCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7CisJCQkgICAgfQogCQkJfQogCQkJYnJlYWs7Ci0JCX0JCisJCX0KIAl9IHdoaWxlIChsc3QgPT0gTlVMTCk7CiAKICNpZmRlZiBfX0FQUExFX18KQEAgLTEwODMsNiArMTA5NywxNyBAQAogCXIgPSBhcmNoaXZlX3JlYWRfZGlza19lbnRyeV9mcm9tX2ZpbGUoJihhLT5hcmNoaXZlKSwgZW50cnksCiAJCXQtPmVudHJ5X2ZkLCBzdCk7CiAKKwlpZiAociA9PSBBUkNISVZFX09LKSB7CisJCXIgPSBkZWxheWVkOworCQlpZiAociAhPSBBUkNISVZFX09LKSB7CisJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKCZkZWxheWVkX3N0ciwgIjogJXMiLAorCQkJICAgICJGaWxlIHJlbW92ZWQgYmVmb3JlIHdlIHJlYWQgaXQiKTsKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCYoYS0+YXJjaGl2ZSksIGRlbGF5ZWRfZXJybm8sCisJCQkgICAgIiVzIiwgZGVsYXllZF9zdHIucyk7CisJCX0KKwl9CisJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmZGVsYXllZF9zdHIpOworCiAJcmV0dXJuIChyKTsKIH0KIApAQCAtMTExNCw2ICsxMTM5LDggQEAKIAkJdC0+ZW50cnlfZmQgPSAtMTsKIAl9CiAKKwlhcmNoaXZlX2VudHJ5X2NsZWFyKGVudHJ5KTsKKwogCWZvciAoOzspIHsKIAkJciA9IG5leHRfZW50cnkoYSwgdCwgZW50cnkpOwogCQlpZiAodC0+ZW50cnlfZmQgPj0gMCkgewpAQCAtMTI2NiwxMCArMTI5MywyMyBAQAogCWlmICh0LT52aXNpdF90eXBlICE9IFRSRUVfUkVHVUxBUiB8fCAhdC0+ZGVzY2VuZCkKIAkJcmV0dXJuIChBUkNISVZFX09LKTsKIAorCS8qCisJICogV2UgbXVzdCBub3QgdHJlYXQgdGhlIGluaXRpYWwgc3BlY2lmaWVkIHBhdGggYXMgYSBwaHlzaWNhbCBkaXIsCisJICogYmVjYXVzZSBpZiB3ZSBkbyB0aGVuIHdlIHdpbGwgdHJ5IGFuZCBhc2NlbmQgb3V0IG9mIGl0IGJ5IG9wZW5pbmcKKwkgKiAiLi4iIHdoaWNoIGlzIChhKSB3cm9uZyBhbmQgKGIpIGNhdXNlcyBzcHVyaW91cyBwZXJtaXNzaW9ucyBlcnJvcnMKKwkgKiBpZiAiLi4iIGlzIG5vdCByZWFkYWJsZSBieSB1cy4gSW5zdGVhZCwgdHJlYXQgaXQgYXMgaWYgaXQgd2VyZSBhCisJICogc3ltbGluay4gKFRoaXMgdXNlcyBhbiBleHRyYSBmZCwgYnV0IGl0IGNhbiBvbmx5IGhhcHBlbiBvbmNlIGF0IHRoZQorCSAqIHRvcCBsZXZlbCBvZiBhIHRyYXZlcnNlLikgQnV0IHdlIGNhbid0IG5lY2Vzc2FyaWx5IGFzc3VtZSB0LT5zdCBpcworCSAqIHZhbGlkIGhlcmUgKHRob3VnaCB0LT5sc3QgaXMpLCB3aGljaCBjb21wbGljYXRlcyB0aGUgbG9naWMgYQorCSAqIGxpdHRsZS4KKwkgKi8KIAlpZiAodHJlZV9jdXJyZW50X2lzX3BoeXNpY2FsX2Rpcih0KSkgewogCQl0cmVlX3B1c2godCwgdC0+YmFzZW5hbWUsIHQtPmN1cnJlbnRfZmlsZXN5c3RlbV9pZCwKIAkJICAgIHQtPmxzdC5zdF9kZXYsIHQtPmxzdC5zdF9pbm8sICZ0LT5yZXN0b3JlX3RpbWUpOwotCQl0LT5zdGFjay0+ZmxhZ3MgfD0gaXNEaXI7CisJCWlmICh0LT5zdGFjay0+cGFyZW50LT5wYXJlbnQgIT0gTlVMTCkKKwkJCXQtPnN0YWNrLT5mbGFncyB8PSBpc0RpcjsKKwkJZWxzZQorCQkJdC0+c3RhY2stPmZsYWdzIHw9IGlzRGlyTGluazsKIAl9IGVsc2UgaWYgKHRyZWVfY3VycmVudF9pc19kaXIodCkpIHsKIAkJdHJlZV9wdXNoKHQsIHQtPmJhc2VuYW1lLCB0LT5jdXJyZW50X2ZpbGVzeXN0ZW1faWQsCiAJCSAgICB0LT5zdC5zdF9kZXYsIHQtPnN0LnN0X2lubywgJnQtPnJlc3RvcmVfdGltZSk7CkBAIC0yMTIyLDYgKzIxNjIsMTcgQEAKIHN0YXRpYyBzdHJ1Y3QgdHJlZSAqCiB0cmVlX3Jlb3BlbihzdHJ1Y3QgdHJlZSAqdCwgY29uc3QgY2hhciAqcGF0aCwgaW50IHJlc3RvcmVfdGltZSkKIHsKKyNpZiBkZWZpbmVkKE9fUEFUSCkKKwkvKiBMaW51eCAqLworCWNvbnN0IGludCBvX2ZsYWcgPSBPX1BBVEg7CisjZWxpZiBkZWZpbmVkKE9fU0VBUkNIKQorCS8qIFN1bk9TICovCisJY29uc3QgaW50IG9fZmxhZyA9IE9fU0VBUkNIOworI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgZGVmaW5lZChPX0VYRUMpCisJLyogRnJlZUJTRCAqLworCWNvbnN0IGludCBvX2ZsYWcgPSBPX0VYRUM7CisjZW5kaWYKKwogCXQtPmZsYWdzID0gKHJlc3RvcmVfdGltZSAhPSAwKT9uZWVkc1Jlc3RvcmVUaW1lczowOwogCXQtPmZsYWdzIHw9IG9uSW5pdGlhbERpcjsKIAl0LT52aXNpdF90eXBlID0gMDsKQEAgLTIxNDMsNiArMjE5NCwxNiBAQAogCXQtPnN0YWNrLT5mbGFncyA9IG5lZWRzRmlyc3RWaXNpdDsKIAl0LT5tYXhPcGVuQ291bnQgPSB0LT5vcGVuQ291bnQgPSAxOwogCXQtPmluaXRpYWxfZGlyX2ZkID0gb3BlbigiLiIsIE9fUkRPTkxZIHwgT19DTE9FWEVDKTsKKyNpZiBkZWZpbmVkKE9fUEFUSCkgfHwgZGVmaW5lZChPX1NFQVJDSCkgfHwgXAorIChkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBkZWZpbmVkKE9fRVhFQykpCisJLyoKKwkgKiBNb3N0IGxpa2VseSByZWFzb24gdG8gZmFpbCBvcGVuaW5nICIuIiBpcyB0aGF0IGl0J3Mgbm90IHJlYWRhYmxlLAorCSAqIHNvIHRyeSBhZ2FpbiBmb3IgZXhlY3V0ZS4gVGhlIGNvbnNlcXVlbmNlcyBvZiBub3Qgb3BlbmluZyB0aGlzIGFyZQorCSAqIHVuaGVscGZ1bCBhbmQgdW5uZWNlc3NhcnkgZXJyb3JzIGxhdGVyLgorCSAqLworCWlmICh0LT5pbml0aWFsX2Rpcl9mZCA8IDApCisJCXQtPmluaXRpYWxfZGlyX2ZkID0gb3BlbigiLiIsIG9fZmxhZyB8IE9fQ0xPRVhFQyk7CisjZW5kaWYKIAlfX2FyY2hpdmVfZW5zdXJlX2Nsb2V4ZWNfZmxhZyh0LT5pbml0aWFsX2Rpcl9mZCk7CiAJdC0+d29ya2luZ19kaXJfZmQgPSB0cmVlX2R1cCh0LT5pbml0aWFsX2Rpcl9mZCk7CiAJcmV0dXJuICh0KTsKQEAgLTI0NTAsNyArMjUxMSw3IEBACiAjZWxzZQogCQlpZiAodHJlZV9lbnRlcl93b3JraW5nX2Rpcih0KSAhPSAwKQogCQkJcmV0dXJuIE5VTEw7Ci0JCWlmIChzdGF0KHRyZWVfY3VycmVudF9hY2Nlc3NfcGF0aCh0KSwgJnQtPnN0KSAhPSAwKQorCQlpZiAobGFfc3RhdCh0cmVlX2N1cnJlbnRfYWNjZXNzX3BhdGgodCksICZ0LT5zdCkgIT0gMCkKICNlbmRpZgogCQkJcmV0dXJuIE5VTEw7CiAJCXQtPmZsYWdzIHw9IGhhc1N0YXQ7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2Rpc2tfcHJpdmF0ZS5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9kaXNrX3ByaXZhdGUuaAppbmRleCBmMDNhMGE5Li5iYzhhYmMxIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2Rpc2tfcHJpdmF0ZS5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZGlza19wcml2YXRlLmgKQEAgLTI2LDEzICsyNiwxMyBAQAogICogJEZyZWVCU0Q6IGhlYWQvbGliL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2Rpc2tfcHJpdmF0ZS5oIDIwMTEwNSAyMDA5LTEyLTI4IDAzOjIwOjU0WiBraWVudHpsZSAkCiAgKi8KIAorI2lmbmRlZiBBUkNISVZFX1JFQURfRElTS19QUklWQVRFX0hfSU5DTFVERUQKKyNkZWZpbmUgQVJDSElWRV9SRUFEX0RJU0tfUFJJVkFURV9IX0lOQ0xVREVECisKICNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECiAjZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KICNlbmRpZgogCi0jaWZuZGVmIEFSQ0hJVkVfUkVBRF9ESVNLX1BSSVZBVEVfSF9JTkNMVURFRAotI2RlZmluZSBBUkNISVZFX1JFQURfRElTS19QUklWQVRFX0hfSU5DTFVERUQKLQogI2luY2x1ZGUgImFyY2hpdmVfcGxhdGZvcm1fYWNsLmgiCiAKIHN0cnVjdCB0cmVlOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9kaXNrX3dpbmRvd3MuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZGlza193aW5kb3dzLmMKaW5kZXggZDgyMDQ4ZC4uZmRkMzc2ZiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9kaXNrX3dpbmRvd3MuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2Rpc2tfd2luZG93cy5jCkBAIC0yOTksOCArMjk5LDE1NSBAQAogCQkgICAgc3RydWN0IHJlc3RvcmVfdGltZSAqKTsKIHN0YXRpYyBpbnQJc2V0dXBfc3BhcnNlX2Zyb21fZGlzayhzdHJ1Y3QgYXJjaGl2ZV9yZWFkX2Rpc2sgKiwKIAkJICAgIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICosIEhBTkRMRSk7CitzdGF0aWMgaW50CWxhX2xpbmtuYW1lX2Zyb21faGFuZGxlKEhBTkRMRSwgd2NoYXJfdCAqKiwgaW50ICopOworc3RhdGljIGludAlsYV9saW5rbmFtZV9mcm9tX3BhdGh3KGNvbnN0IHdjaGFyX3QgKiwgd2NoYXJfdCAqKiwgaW50ICopOworc3RhdGljIHZvaWQJZW50cnlfc3ltbGlua19mcm9tX3BhdGh3KHN0cnVjdCBhcmNoaXZlX2VudHJ5ICosCisJCSAgICBjb25zdCB3Y2hhcl90ICpwYXRoKTsKIAordHlwZWRlZiBzdHJ1Y3QgX1JFUEFSU0VfREFUQV9CVUZGRVIgeworCVVMT05HCVJlcGFyc2VUYWc7CisJVVNIT1JUIFJlcGFyc2VEYXRhTGVuZ3RoOworCVVTSE9SVAlSZXNlcnZlZDsKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQlVU0hPUlQJU3Vic3RpdHV0ZU5hbWVPZmZzZXQ7CisJCQlVU0hPUlQJU3Vic3RpdHV0ZU5hbWVMZW5ndGg7CisJCQlVU0hPUlQJUHJpbnROYW1lT2Zmc2V0OworCQkJVVNIT1JUCVByaW50TmFtZUxlbmd0aDsKKwkJCVVMT05HCUZsYWdzOworCQkJV0NIQVIJUGF0aEJ1ZmZlclsxXTsKKwkJfSBTeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyOworCQlzdHJ1Y3QgeworCQkJVVNIT1JUCVN1YnN0aXR1dGVOYW1lT2Zmc2V0OworCQkJVVNIT1JUCVN1YnN0aXR1dGVOYW1lTGVuZ3RoOworCQkJVVNIT1JUCVByaW50TmFtZU9mZnNldDsKKwkJCVVTSE9SVAlQcmludE5hbWVMZW5ndGg7CisJCQlXQ0hBUglQYXRoQnVmZmVyWzFdOworCQl9IE1vdW50UG9pbnRSZXBhcnNlQnVmZmVyOworCQlzdHJ1Y3QgeworCQkJVUNIQVIJRGF0YUJ1ZmZlclsxXTsKKwkJfSBHZW5lcmljUmVwYXJzZUJ1ZmZlcjsKKwl9IERVTU1ZVU5JT05OQU1FOworfSBSRVBBUlNFX0RBVEFfQlVGRkVSLCAqUFJFUEFSU0VfREFUQV9CVUZGRVI7CiAKKy8qCisgKiBSZWFkcyB0aGUgdGFyZ2V0IG9mIGEgc3ltYm9saWMgbGluaworICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCAtMSBvbiBmYWlsdXJlCisgKiBvdXRidWYgaXMgYWxsb2NhdGVkIGluIHRoZSBmdW5jdGlvbgorICovCitzdGF0aWMgaW50CitsYV9saW5rbmFtZV9mcm9tX2hhbmRsZShIQU5ETEUgaCwgd2NoYXJfdCAqKmxpbmtuYW1lLCBpbnQgKmxpbmt0eXBlKQoreworCURXT1JEIGluYnl0ZXM7CisJUkVQQVJTRV9EQVRBX0JVRkZFUiAqYnVmOworCUJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIHN0OworCXNpemVfdCBsZW47CisJQk9PTCByZXQ7CisJQllURSAqaW5kYXRhOworCXdjaGFyX3QgKnRidWY7CisKKwlyZXQgPSBHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoLCAmc3QpOworCWlmIChyZXQgPT0gMCB8fAorCSAgICAoc3QuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpID09IDApIHsKKwkJcmV0dXJuICgtMSk7CisJfQorCisJaW5kYXRhID0gbWFsbG9jKE1BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFKTsKKwlyZXQgPSBEZXZpY2VJb0NvbnRyb2woaCwgRlNDVExfR0VUX1JFUEFSU0VfUE9JTlQsIE5VTEwsIDAsIGluZGF0YSwKKwkgICAgMTAyNCwgJmluYnl0ZXMsIE5VTEwpOworCWlmIChyZXQgPT0gMCkgeworCQlsYV9kb3NtYXBlcnIoR2V0TGFzdEVycm9yKCkpOworCQlmcmVlKGluZGF0YSk7CisJCXJldHVybiAoLTEpOworCX0KKworCWJ1ZiA9IChSRVBBUlNFX0RBVEFfQlVGRkVSICopIGluZGF0YTsKKwlpZiAoYnVmLT5SZXBhcnNlVGFnICE9IElPX1JFUEFSU0VfVEFHX1NZTUxJTkspIHsKKwkJZnJlZShpbmRhdGEpOworCQkvKiBGaWxlIGlzIG5vdCBhIHN5bWJvbGljIGxpbmsgKi8KKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAoLTEpOworCX0KKworCWxlbiA9IGJ1Zi0+U3ltYm9saWNMaW5rUmVwYXJzZUJ1ZmZlci5TdWJzdGl0dXRlTmFtZUxlbmd0aDsKKwlpZiAobGVuIDw9IDApIHsKKwkJZnJlZShpbmRhdGEpOworCQlyZXR1cm4gKC0xKTsKKwl9CisKKwl0YnVmID0gbWFsbG9jKGxlbiArIDEgKiBzaXplb2Yod2NoYXJfdCkpOworCWlmICh0YnVmID09IE5VTEwpIHsKKwkJZnJlZShpbmRhdGEpOworCQlyZXR1cm4gKC0xKTsKKwl9CisKKwltZW1jcHkodGJ1ZiwgJigoQllURSAqKWJ1Zi0+U3ltYm9saWNMaW5rUmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyKQorCSAgICBbYnVmLT5TeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyLlN1YnN0aXR1dGVOYW1lT2Zmc2V0XSwgbGVuKTsKKwlmcmVlKGluZGF0YSk7CisKKwl0YnVmW2xlbiAvIHNpemVvZih3Y2hhcl90KV0gPSBMJ1wwJzsKKworCSpsaW5rbmFtZSA9IHRidWY7CisKKwkvKgorCSAqIFRyYW5zbGF0ZSBiYWNrc2xhc2hlcyB0byBzbGFzaGVzIGZvciBsaWJhcmNoaXZlIGludGVybmFsIHVzZQorCSAqLworCXdoaWxlKCp0YnVmICE9IEwnXDAnKSB7CisJCWlmICgqdGJ1ZiA9PSBMJ1xcJykKKwkJCSp0YnVmID0gTCcvJzsKKwkJdGJ1ZisrOworCX0KKworCWlmICgoc3QuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgPT0gMCkKKwkJKmxpbmt0eXBlID0gQUVfU1lNTElOS19UWVBFX0ZJTEU7CisJZWxzZQorCQkqbGlua3R5cGUgPSBBRV9TWU1MSU5LX1RZUEVfRElSRUNUT1JZOworCisJcmV0dXJuICgwKTsKK30KKworLyoKKyAqIFJldHVybnMgQUVfU1lNTElOS19UWVBFX0ZJTEUsIEFFX1NZTUxJTktfVFlQRV9ESVJFQ1RPUlkgb3IgLTEgb24gZXJyb3IKKyAqLworc3RhdGljIGludAorbGFfbGlua25hbWVfZnJvbV9wYXRodyhjb25zdCB3Y2hhcl90ICpwYXRoLCB3Y2hhcl90ICoqb3V0YnVmLCBpbnQgKmxpbmt0eXBlKQoreworCUhBTkRMRSBoOworCWNvbnN0IERXT1JEIGZsYWcgPSBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUyB8CisJICAgIEZJTEVfRkxBR19PUEVOX1JFUEFSU0VfUE9JTlQ7CisJaW50IHJldDsKKworCWggPSBDcmVhdGVGaWxlVyhwYXRoLCAwLCBGSUxFX1NIQVJFX1JFQUQsIE5VTEwsIE9QRU5fRVhJU1RJTkcsIGZsYWcsCisJICAgIE5VTEwpOworCWlmIChoID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisJCWxhX2Rvc21hcGVycihHZXRMYXN0RXJyb3IoKSk7CisJCXJldHVybiAoLTEpOworCX0KKworCXJldCA9IGxhX2xpbmtuYW1lX2Zyb21faGFuZGxlKGgsIG91dGJ1ZiwgbGlua3R5cGUpOworCUNsb3NlSGFuZGxlKGgpOworCisJcmV0dXJuIChyZXQpOworfQorCitzdGF0aWMgdm9pZAorZW50cnlfc3ltbGlua19mcm9tX3BhdGh3KHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSwgY29uc3Qgd2NoYXJfdCAqcGF0aCkKK3sKKwl3Y2hhcl90ICpsaW5rbmFtZSA9IE5VTEw7CisJaW50IHJldCwgbGlua3R5cGU7CisKKwlyZXQgPSBsYV9saW5rbmFtZV9mcm9tX3BhdGh3KHBhdGgsICZsaW5rbmFtZSwgJmxpbmt0eXBlKTsKKwlpZiAocmV0ICE9IDApCisJCXJldHVybjsKKwlpZiAobGlua3R5cGUgPj0gMCkgeworCQlhcmNoaXZlX2VudHJ5X2NvcHlfc3ltbGlua193KGVudHJ5LCBsaW5rbmFtZSk7CisJCWFyY2hpdmVfZW50cnlfc2V0X3N5bWxpbmtfdHlwZShlbnRyeSwgbGlua3R5cGUpOworCX0KKwlmcmVlKGxpbmtuYW1lKTsKKworCXJldHVybjsKK30KIAogc3RhdGljIHN0cnVjdCBhcmNoaXZlX3Z0YWJsZSAqCiBhcmNoaXZlX3JlYWRfZGlza192dGFibGUodm9pZCkKQEAgLTkwMCw2ICsxMDQ3LDE5IEBACiAJfQogCiAJLyoKKwkgKiBGaWxlIGF0dHJpYnV0ZXMKKwkgKi8KKwlpZiAoKGEtPmZsYWdzICYgQVJDSElWRV9SRUFERElTS19OT19GRkxBR1MpID09IDApIHsKKwkJY29uc3QgaW50IHN1cHBvcnRlZF9hdHRycyA9CisJCSAgICBGSUxFX0FUVFJJQlVURV9SRUFET05MWSB8CisJCSAgICBGSUxFX0FUVFJJQlVURV9ISURERU4gfAorCQkgICAgRklMRV9BVFRSSUJVVEVfU1lTVEVNOworCQlEV09SRCBmaWxlX2F0dHJzID0gc3QtPmR3RmlsZUF0dHJpYnV0ZXMgJiBzdXBwb3J0ZWRfYXR0cnM7CisJCWlmIChmaWxlX2F0dHJzICE9IDApCisJCQlhcmNoaXZlX2VudHJ5X3NldF9mZmxhZ3MoZW50cnksIGZpbGVfYXR0cnMsIDApOworCX0KKworCS8qCiAJICogSW52b2tlIGEgbWV0YSBkYXRhIGZpbHRlciBjYWxsYmFjay4KIAkgKi8KIAlpZiAoYS0+bWV0YWRhdGFfZmlsdGVyX2Z1bmMpIHsKQEAgLTk2Niw2ICsxMTI2LDggQEAKIAkJdC0+ZW50cnlfZmggPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKIAl9CiAKKwlhcmNoaXZlX2VudHJ5X2NsZWFyKGVudHJ5KTsKKwogCXdoaWxlICgociA9IG5leHRfZW50cnkoYSwgdCwgZW50cnkpKSA9PSBBUkNISVZFX1JFVFJZKQogCQlhcmNoaXZlX2VudHJ5X2NsZWFyKGVudHJ5KTsKIApAQCAtMTgzOCw5ICsyMDAwLDEwIEBACiAJCW1vZGUgfD0gU19JV1VTUiB8IFNfSVdHUlAgfCBTX0lXT1RIOwogCWlmICgoYmhmaS0+ZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpICYmCiAJICAgIGZpbmREYXRhICE9IE5VTEwgJiYKLQkgICAgZmluZERhdGEtPmR3UmVzZXJ2ZWQwID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTkspCisJICAgIGZpbmREYXRhLT5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LKSB7CiAJCW1vZGUgfD0gU19JRkxOSzsKLQllbHNlIGlmIChiaGZpLT5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorCQllbnRyeV9zeW1saW5rX2Zyb21fcGF0aHcoZW50cnksIHBhdGgpOworCX0gZWxzZSBpZiAoYmhmaS0+ZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKIAkJbW9kZSB8PSBTX0lGRElSIHwgU19JWFVTUiB8IFNfSVhHUlAgfCBTX0lYT1RIOwogCWVsc2UgewogCQljb25zdCB3Y2hhcl90ICpwOwpAQCAtMjEzOSw2ICsyMzAyLDggQEAKIAkJZmlsZUF0dHJpYnV0ZXMgPSBiaGZpLmR3RmlsZUF0dHJpYnV0ZXM7CiAJfSBlbHNlIHsKIAkJYXJjaGl2ZV9lbnRyeV9jb3B5X3N0YXQoZW50cnksIHN0KTsKKwkJaWYgKHN0LT5zdF9tb2RlICYgU19JRkxOSykKKwkJCWVudHJ5X3N5bWxpbmtfZnJvbV9wYXRodyhlbnRyeSwgcGF0aCk7CiAJCWggPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKIAl9CiAKQEAgLTIxNTEsNiArMjMxNiwxOSBAQAogCQlhcmNoaXZlX2VudHJ5X2NvcHlfZ25hbWUoZW50cnksIG5hbWUpOwogCiAJLyoKKwkgKiBGaWxlIGF0dHJpYnV0ZXMKKwkgKi8KKwlpZiAoKGEtPmZsYWdzICYgQVJDSElWRV9SRUFERElTS19OT19GRkxBR1MpID09IDApIHsKKwkJY29uc3QgaW50IHN1cHBvcnRlZF9hdHRycyA9CisJCSAgICBGSUxFX0FUVFJJQlVURV9SRUFET05MWSB8CisJCSAgICBGSUxFX0FUVFJJQlVURV9ISURERU4gfAorCQkgICAgRklMRV9BVFRSSUJVVEVfU1lTVEVNOworCQlEV09SRCBmaWxlX2F0dHJzID0gZmlsZUF0dHJpYnV0ZXMgJiBzdXBwb3J0ZWRfYXR0cnM7CisJCWlmIChmaWxlX2F0dHJzICE9IDApCisJCQlhcmNoaXZlX2VudHJ5X3NldF9mZmxhZ3MoZW50cnksIGZpbGVfYXR0cnMsIDApOworCX0KKworCS8qCiAJICogQ2FuIHRoaXMgZmlsZSBiZSBzcGFyc2UgZmlsZSA/CiAJICovCiAJaWYgKGFyY2hpdmVfZW50cnlfZmlsZXR5cGUoZW50cnkpICE9IEFFX0lGUkVHCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2V4dHJhY3QuMyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZXh0cmFjdC4zCmluZGV4IDZlYzBjZWQuLjg1OGYzOTcgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZXh0cmFjdC4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZXh0cmFjdC4zCkBAIC0xMjYsNyArMTI2LDYgQEAKIGZ1bmN0aW9ucy4KIC5TaCBTRUUgQUxTTwogLlhyIHRhciAxICwKLS5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGFyY2hpdmVfcmVhZCAzICwKIC5YciBhcmNoaXZlX3JlYWRfZGF0YSAzICwKIC5YciBhcmNoaXZlX3JlYWRfZmlsdGVyIDMgLApAQCAtMTM0LDQgKzEzMyw1IEBACiAuWHIgYXJjaGl2ZV9yZWFkX29wZW4gMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX3NldF9vcHRpb25zIDMgLAogLlhyIGFyY2hpdmVfdXRpbCAzICwKKy5YciBsaWJhcmNoaXZlIDMgLAogLlhyIHRhciA1CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2ZpbHRlci4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9maWx0ZXIuMwppbmRleCBlZjBhNzAxLi4xYmE1ZmNiIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2ZpbHRlci4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZmlsdGVyLjMKQEAgLTE0Nyw4ICsxNDcsOCBAQAogZnVuY3Rpb25zLgogLlwiCiAuU2ggU0VFIEFMU08KLS5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGFyY2hpdmVfcmVhZCAzICwKIC5YciBhcmNoaXZlX3JlYWRfZGF0YSAzICwKIC5YciBhcmNoaXZlX3JlYWRfZm9ybWF0IDMgLAotLlhyIGFyY2hpdmVfcmVhZF9mb3JtYXQgMworLlhyIGFyY2hpdmVfcmVhZF9mb3JtYXQgMyAsCisuWHIgbGliYXJjaGl2ZSAzCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2Zvcm1hdC4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9mb3JtYXQuMwppbmRleCA5MWM1ZDJjLi5mMzgwNGNlIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2Zvcm1hdC4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZm9ybWF0LjMKQEAgLTEwMiw3ICsxMDIsNyBAQAogLkZuIGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF90YXIKIGVuYWJsZXMgc3VwcG9ydCBmb3IgYSB2YXJpZXR5IG9mIHN0YW5kYXJkIHRhciBmb3JtYXRzLCBvbGQtc3R5bGUgdGFyLAogdXN0YXIsIHBheCBpbnRlcmNoYW5nZSBmb3JtYXQsIGFuZCBtYW55IGNvbW1vbiB2YXJpYW50cy4KLS5JdCBGbiBhcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfYWxsIAorLkl0IEZuIGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9hbGwKIEVuYWJsZXMgc3VwcG9ydCBmb3IgYWxsIGF2YWlsYWJsZSBmb3JtYXRzIGV4Y2VwdCB0aGUKIC5EcSByYXcKIGZvcm1hdCAoc2VlIGJlbG93KS4KQEAgLTEyNSw3ICsxMjUsNyBAQAogYW4gZW1wdHkgZmlsZSBiYXNlZCBwdXJlbHkgb24gY29udGVudHMuCiBTbyBlbXB0eSBmaWxlcyBhcmUgdHJlYXRlZCBieSBsaWJhcmNoaXZlIGFzIGEgZGlzdGluY3QKIGZvcm1hdC4KLS5JdCBGbiBhcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmF3IAorLkl0IEZuIGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXcKIFRoZQogLkRxIHJhdwogZm9ybWF0IGhhbmRsZXIgYWxsb3dzIGxpYmFyY2hpdmUgdG8gYmUgdXNlZCB0byByZWFkIGFyYml0cmFyeSBkYXRhLgpAQCAtMTUzLDExICsxNTMsMTEgQEAKIC5cIgogLlNoIFNFRSBBTFNPCiAuWHIgdGFyIDEgLAotLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX2RhdGEgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX2ZpbHRlciAzICwKIC5YciBhcmNoaXZlX3JlYWRfc2V0X29wdGlvbnMgMyAsCiAuWHIgYXJjaGl2ZV91dGlsIDMgLAorLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgdGFyIDUKIC5TaCBCVUdTCiBNYW55IHRyYWRpdGlvbmFsIGFyY2hpdmVyIHByb2dyYW1zIHRyZWF0CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2ZyZWUuMyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZnJlZS4zCmluZGV4IDViMjE4MjIuLjgzNzFjM2EgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZnJlZS4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfZnJlZS4zCkBAIC04MywxMSArODMsMTEgQEAKIGZ1bmN0aW9ucy4KIC5cIgogLlNoIFNFRSBBTFNPCi0uWHIgbGliYXJjaGl2ZSAzICwKLS5YciBhcmNoaXZlX3JlYWRfbmV3IDMgLAogLlhyIGFyY2hpdmVfcmVhZF9kYXRhIDMgLAogLlhyIGFyY2hpdmVfcmVhZF9maWx0ZXIgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX2Zvcm1hdCAzICwKKy5YciBhcmNoaXZlX3JlYWRfbmV3IDMgLAogLlhyIGFyY2hpdmVfcmVhZF9vcGVuIDMgLAogLlhyIGFyY2hpdmVfcmVhZF9zZXRfb3B0aW9ucyAzICwKLS5YciBhcmNoaXZlX3V0aWwgMworLlhyIGFyY2hpdmVfdXRpbCAzICwKKy5YciBsaWJhcmNoaXZlIDMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfaGVhZGVyLjMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX2hlYWRlci4zCmluZGV4IDQ4MGE2NjYuLjFlOTdmM2EgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfaGVhZGVyLjMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9oZWFkZXIuMwpAQCAtNzksNyArNzksNiBAQAogLlwiCiAuU2ggU0VFIEFMU08KIC5YciB0YXIgMSAsCi0uWHIgbGliYXJjaGl2ZSAzICwKIC5YciBhcmNoaXZlX3JlYWQgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX2RhdGEgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX2V4dHJhY3QgMyAsCkBAIC04OCw0ICs4Nyw1IEBACiAuWHIgYXJjaGl2ZV9yZWFkX29wZW4gMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX3NldF9vcHRpb25zIDMgLAogLlhyIGFyY2hpdmVfdXRpbCAzICwKKy5YciBsaWJhcmNoaXZlIDMgLAogLlhyIHRhciA1CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX25ldy4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9uZXcuMwppbmRleCAwYzlkMWE3Li44YmI2Yjg0IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX25ldy4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfbmV3LjMKQEAgLTUwLDEwICs1MCwxMCBAQAogLlwiIC5TaCBFUlJPUlMKIC5TaCBTRUUgQUxTTwogLlhyIHRhciAxICwKLS5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGFyY2hpdmVfcmVhZF9kYXRhIDMgLAogLlhyIGFyY2hpdmVfcmVhZF9maWx0ZXIgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX2Zvcm1hdCAzICwKIC5YciBhcmNoaXZlX3JlYWRfc2V0X29wdGlvbnMgMyAsCiAuWHIgYXJjaGl2ZV91dGlsIDMgLAorLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgdGFyIDUKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfb3Blbi4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9vcGVuLjMKaW5kZXggMjI3OGViYy4uZjY3Njc3OCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9vcGVuLjMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9vcGVuLjMKQEAgLTIwNSw3ICsyMDUsNyBAQAogLkZuIGFyY2hpdmVfc2V0X2Vycm9yCiB0byByZWdpc3RlciBhbiBlcnJvciBjb2RlIGFuZCBtZXNzYWdlIGFuZAogcmV0dXJuCi0uQ20gQVJDSElWRV9GQVRBTC4KKy5DbSBBUkNISVZFX0ZBVEFMIC4KIC5cIiAuU2ggRVhBTVBMRQogLlwiCiAuU2ggUkVUVVJOIFZBTFVFUwpAQCAtMjIzLDExICsyMjMsMTEgQEAKIC5cIgogLlNoIFNFRSBBTFNPCiAuWHIgdGFyIDEgLAotLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkIDMgLAogLlhyIGFyY2hpdmVfcmVhZF9kYXRhIDMgLAogLlhyIGFyY2hpdmVfcmVhZF9maWx0ZXIgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX2Zvcm1hdCAzICwKIC5YciBhcmNoaXZlX3JlYWRfc2V0X29wdGlvbnMgMyAsCiAuWHIgYXJjaGl2ZV91dGlsIDMgLAorLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgdGFyIDUKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfb3Blbl9maWxlLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX29wZW5fZmlsZS5jCmluZGV4IGJmZTkzM2IuLjEwMWRhZTYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfb3Blbl9maWxlLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9vcGVuX2ZpbGUuYwpAQCAtMTc0LDggKzE3NCw3IEBACiAJc3RydWN0IHJlYWRfRklMRV9kYXRhICptaW5lID0gKHN0cnVjdCByZWFkX0ZJTEVfZGF0YSAqKWNsaWVudF9kYXRhOwogCiAJKHZvaWQpYTsgLyogVU5VU0VEICovCi0JaWYgKG1pbmUtPmJ1ZmZlciAhPSBOVUxMKQotCQlmcmVlKG1pbmUtPmJ1ZmZlcik7CisJZnJlZShtaW5lLT5idWZmZXIpOwogCWZyZWUobWluZSk7CiAJcmV0dXJuIChBUkNISVZFX09LKTsKIH0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfcHJpdmF0ZS5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9wcml2YXRlLmgKaW5kZXggNzg1NDZkYy4uYzg0MmU2ZiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9wcml2YXRlLmgKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9wcml2YXRlLmgKQEAgLTI1LDE1ICsyNSwxNSBAQAogICogJEZyZWVCU0Q6IGhlYWQvbGliL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3ByaXZhdGUuaCAyMDEwODggMjAwOS0xMi0yOCAwMjoxODo1NVoga2llbnR6bGUgJAogICovCiAKKyNpZm5kZWYgQVJDSElWRV9SRUFEX1BSSVZBVEVfSF9JTkNMVURFRAorI2RlZmluZSBBUkNISVZFX1JFQURfUFJJVkFURV9IX0lOQ0xVREVECisKICNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECiAjaWZuZGVmIF9fTElCQVJDSElWRV9URVNUCiAjZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KICNlbmRpZgogI2VuZGlmCiAKLSNpZm5kZWYgQVJDSElWRV9SRUFEX1BSSVZBVEVfSF9JTkNMVURFRAotI2RlZmluZQlBUkNISVZFX1JFQURfUFJJVkFURV9IX0lOQ0xVREVECi0KICNpbmNsdWRlICJhcmNoaXZlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV9zdHJpbmcuaCIKICNpbmNsdWRlICJhcmNoaXZlX3ByaXZhdGUuaCIKQEAgLTk4LDYgKzk4LDggQEAKIAlpbnQgKCpjbG9zZSkoc3RydWN0IGFyY2hpdmVfcmVhZF9maWx0ZXIgKnNlbGYpOwogCS8qIEZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBzd2l0Y2hpbmcgZnJvbSByZWFkaW5nIG9uZSBibG9jayB0byB0aGUgbmV4dC9wcmV2ICovCiAJaW50ICgqc3N3aXRjaCkoc3RydWN0IGFyY2hpdmVfcmVhZF9maWx0ZXIgKnNlbGYsIHVuc2lnbmVkIGludCBpaW5kZXgpOworCS8qIFJlYWQgYW55IGhlYWRlciBtZXRhZGF0YSBpZiBhdmFpbGFibGUuICovCisJaW50ICgqcmVhZF9oZWFkZXIpKHN0cnVjdCBhcmNoaXZlX3JlYWRfZmlsdGVyICpzZWxmLCBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqZW50cnkpOwogCS8qIE15IHByaXZhdGUgZGF0YS4gKi8KIAl2b2lkICpkYXRhOwogCkBAIC0yNTAsNiArMjUyLDcgQEAKIGludDY0X3QJX19hcmNoaXZlX3JlYWRfZmlsdGVyX3NlZWsoc3RydWN0IGFyY2hpdmVfcmVhZF9maWx0ZXIgKiwgaW50NjRfdCwgaW50KTsKIGludDY0X3QJX19hcmNoaXZlX3JlYWRfY29uc3VtZShzdHJ1Y3QgYXJjaGl2ZV9yZWFkICosIGludDY0X3QpOwogaW50NjRfdAlfX2FyY2hpdmVfcmVhZF9maWx0ZXJfY29uc3VtZShzdHJ1Y3QgYXJjaGl2ZV9yZWFkX2ZpbHRlciAqLCBpbnQ2NF90KTsKK2ludCBfX2FyY2hpdmVfcmVhZF9oZWFkZXIoc3RydWN0IGFyY2hpdmVfcmVhZCAqLCBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqKTsKIGludCBfX2FyY2hpdmVfcmVhZF9wcm9ncmFtKHN0cnVjdCBhcmNoaXZlX3JlYWRfZmlsdGVyICosIGNvbnN0IGNoYXIgKik7CiB2b2lkIF9fYXJjaGl2ZV9yZWFkX2ZyZWVfZmlsdGVycyhzdHJ1Y3QgYXJjaGl2ZV9yZWFkICopOwogc3RydWN0IGFyY2hpdmVfcmVhZF9leHRyYWN0ICpfX2FyY2hpdmVfcmVhZF9nZXRfZXh0cmFjdChzdHJ1Y3QgYXJjaGl2ZV9yZWFkICopOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zZXRfZm9ybWF0LmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3NldF9mb3JtYXQuYwppbmRleCAxOTBmNDM2Li4xZDNlNDlkIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3NldF9mb3JtYXQuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3NldF9mb3JtYXQuYwpAQCAtNzMsNiArNzMsOSBAQAogICAgIGNhc2UgQVJDSElWRV9GT1JNQVRfUkFSOgogICAgICAgc3RyY3B5KHN0ciwgInJhciIpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBBUkNISVZFX0ZPUk1BVF9SQVJfVjU6CisgICAgICBzdHJjcHkoc3RyLCAicmFyNSIpOworICAgICAgYnJlYWs7CiAgICAgY2FzZSBBUkNISVZFX0ZPUk1BVF9UQVI6CiAgICAgICBzdHJjcHkoc3RyLCAidGFyIik7CiAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc2V0X29wdGlvbnMuMyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc2V0X29wdGlvbnMuMwppbmRleCAxYTI1MWNlLi43OGQ5OTk5IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3NldF9vcHRpb25zLjMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zZXRfb3B0aW9ucy4zCkBAIC0yNCw3ICsyNCw3IEBACiAuXCIKIC5cIiAkRnJlZUJTRCQKIC5cIgotLkRkIEZlYnJ1YXJ5IDIsIDIwMTIKKy5EZCBKYW51YXJ5IDMxLCAyMDIwCiAuRHQgQVJDSElWRV9SRUFEX09QVElPTlMgMwogLk9zCiAuU2ggTkFNRQpAQCAtMTgwLDYgKzE4MCwxOCBAQAogLlwiCiAuU2ggT1BUSU9OUwogLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAorLkl0IEZvcm1hdCBjYWIKKy5CbCAtdGFnIC1jb21wYWN0IC13aWR0aCBpbmRlbnQKKy5JdCBDbSBoZHJjaGFyc2V0CitUaGUgdmFsdWUgaXMgdXNlZCBhcyBhIGNoYXJhY3RlciBzZXQgbmFtZSB0aGF0IHdpbGwgYmUKK3VzZWQgd2hlbiB0cmFuc2xhdGluZyBmaWxlIG5hbWVzLgorLkVsCisuSXQgRm9ybWF0IGNwaW8KKy5CbCAtdGFnIC1jb21wYWN0IC13aWR0aCBpbmRlbnQKKy5JdCBDbSBoZHJjaGFyc2V0CitUaGUgdmFsdWUgaXMgdXNlZCBhcyBhIGNoYXJhY3RlciBzZXQgbmFtZSB0aGF0IHdpbGwgYmUKK3VzZWQgd2hlbiB0cmFuc2xhdGluZyBmaWxlIG5hbWVzLgorLkVsCiAuSXQgRm9ybWF0IGlzbzk2NjAKIC5CbCAtdGFnIC1jb21wYWN0IC13aWR0aCBpbmRlbnQKIC5JdCBDbSBqb2xpZXQKQEAgLTE5Myw2ICsyMDUsMjQgQEAKIC5DbSAhcm9ja3JpZGdlCiB0byBkaXNhYmxlLgogLkVsCisuSXQgRm9ybWF0IGxoYQorLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAorLkl0IENtIGhkcmNoYXJzZXQKK1RoZSB2YWx1ZSBpcyB1c2VkIGFzIGEgY2hhcmFjdGVyIHNldCBuYW1lIHRoYXQgd2lsbCBiZQordXNlZCB3aGVuIHRyYW5zbGF0aW5nIGZpbGUgbmFtZXMuCisuRWwKKy5JdCBGb3JtYXQgbXRyZWUKKy5CbCAtdGFnIC1jb21wYWN0IC13aWR0aCBpbmRlbnQKKy5JdCBDbSBjaGVja2ZzCitBbGxvdyByZWFkaW5nIGluZm9ybWF0aW9uIG1pc3NpbmcgZnJvbSB0aGUgbXRyZWUgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uCitEaXNhYmxlZCBieSBkZWZhdWx0LgorLkVsCisuSXQgRm9ybWF0IHJhcgorLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAorLkl0IENtIGhkcmNoYXJzZXQKK1RoZSB2YWx1ZSBpcyB1c2VkIGFzIGEgY2hhcmFjdGVyIHNldCBuYW1lIHRoYXQgd2lsbCBiZQordXNlZCB3aGVuIHRyYW5zbGF0aW5nIGZpbGUgbmFtZXMuCisuRWwKIC5JdCBGb3JtYXQgdGFyCiAuQmwgLXRhZyAtY29tcGFjdCAtd2lkdGggaW5kZW50CiAuSXQgQ20gY29tcGF0LTJ4CkBAIC0yMDIsNyArMjMyLDcgQEAKIHNvIHRoYXQgc3VjaCBhcmNoaXZlcyBjYW4gYmUgcmVhZCBjb3JyZWN0bHkuCiAuSXQgQ20gaGRyY2hhcnNldAogVGhlIHZhbHVlIGlzIHVzZWQgYXMgYSBjaGFyYWN0ZXIgc2V0IG5hbWUgdGhhdCB3aWxsIGJlCi11c2VkIHdoZW4gdHJhbnNsYXRpbmcgZmlsZW5hbWVzLgordXNlZCB3aGVuIHRyYW5zbGF0aW5nIGZpbGUgbmFtZXMuCiAuSXQgQ20gbWFjLWV4dAogU3VwcG9ydCBNYWMgT1MgbWV0YWRhdGEgZXh0ZW5zaW9uIHRoYXQgcmVjb3JkcyBkYXRhIGluIHNwZWNpYWwKIGZpbGVzIGJlZ2lubmluZyB3aXRoIGEgcGVyaW9kIGFuZCB1bmRlcnNjb3JlLgpAQCAtMjEyLDcgKzI0Miw4IEBACiB0byBkaXNhYmxlLgogLkl0IENtIHJlYWRfY29uY2F0ZW5hdGVkX2FyY2hpdmVzCiBJZ25vcmUgemVyb2VkIGJsb2NrcyBpbiB0aGUgYXJjaGl2ZSwgd2hpY2ggb2NjdXJzIHdoZW4gbXVsdGlwbGUgdGFyIGFyY2hpdmVzCi1oYXZlIGJlZW4gY29uY2F0ZW5hdGVkIHRvZ2V0aGVyLiAgV2l0aG91dCB0aGlzIG9wdGlvbiwgb25seSB0aGUgY29udGVudHMgb2YKK2hhdmUgYmVlbiBjb25jYXRlbmF0ZWQgdG9nZXRoZXIuCitXaXRob3V0IHRoaXMgb3B0aW9uLCBvbmx5IHRoZSBjb250ZW50cyBvZgogdGhlIGZpcnN0IGNvbmNhdGVuYXRlZCBhcmNoaXZlIHdvdWxkIGJlIHJlYWQuCiAuRWwKIC5FbApAQCAtMjI2LDYgKzI1Nyw2IEBACiAuXCIKIC5TaCBTRUUgQUxTTwogLlhyIHRhciAxICwKLS5YciBsaWJhcmNoaXZlIDMgLAorLlhyIGFyY2hpdmVfcmVhZCAzICwKIC5YciBhcmNoaXZlX3dyaXRlX3NldF9vcHRpb25zIDMgLAotLlhyIGFyY2hpdmVfcmVhZCAzCisuWHIgbGliYXJjaGl2ZSAzCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZmlsdGVyX2d6aXAuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9maWx0ZXJfZ3ppcC5jCmluZGV4IGU5ZjU5ZjEuLjk1Y2ZkNTQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9maWx0ZXJfZ3ppcC5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9maWx0ZXJfZ3ppcC5jCkBAIC0zNyw2ICszNyw5IEBACiAjaWZkZWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2VuZGlmCisjaWZkZWYgSEFWRV9MSU1JVFNfSAorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2VuZGlmCiAjaWZkZWYgSEFWRV9VTklTVERfSAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCkBAIC00NSw2ICs0OCw4IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgImFyY2hpdmUuaCIKKyNpbmNsdWRlICJhcmNoaXZlX2VudHJ5LmgiCisjaW5jbHVkZSAiYXJjaGl2ZV9lbmRpYW4uaCIKICNpbmNsdWRlICJhcmNoaXZlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJhcmNoaXZlX3JlYWRfcHJpdmF0ZS5oIgogCkBAIC01Niw2ICs2MSw4IEBACiAJc2l6ZV90CQkgb3V0X2Jsb2NrX3NpemU7CiAJaW50NjRfdAkJIHRvdGFsX291dDsKIAl1bnNpZ25lZCBsb25nCSBjcmM7CisJdWludDMyX3QJIG10aW1lOworCWNoYXIJCSpuYW1lOwogCWNoYXIJCSBlb2Y7IC8qIFRydWUgPSBmb3VuZCBlbmQgb2YgY29tcHJlc3NlZCBkYXRhLiAqLwogfTsKIApAQCAtMTIzLDEyICsxMzAsMjEgQEAKICAqIGNvdW50IG9mIGJpdHMgdmVyaWZpZWQsIHN1aXRhYmxlIGZvciB1c2UgYnkgYmlkZGVyLgogICovCiBzdGF0aWMgc3NpemVfdAotcGVla19hdF9oZWFkZXIoc3RydWN0IGFyY2hpdmVfcmVhZF9maWx0ZXIgKmZpbHRlciwgaW50ICpwYml0cykKK3BlZWtfYXRfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3JlYWRfZmlsdGVyICpmaWx0ZXIsIGludCAqcGJpdHMsCisjaWZkZWYgSEFWRV9aTElCX0gKKwkgICAgICAgc3RydWN0IHByaXZhdGVfZGF0YSAqc3RhdGUKKyNlbHNlCisJICAgICAgIHZvaWQgKnN0YXRlCisjZW5kaWYKKwkgICAgICApCiB7CiAJY29uc3QgdW5zaWduZWQgY2hhciAqcDsKIAlzc2l6ZV90IGF2YWlsLCBsZW47CiAJaW50IGJpdHMgPSAwOwogCWludCBoZWFkZXJfZmxhZ3M7CisjaWZuZGVmIEhBVkVfWkxJQl9ICisJKHZvaWQpc3RhdGU7IC8qIFVOVVNFRCAqLworI2VuZGlmCiAKIAkvKiBTdGFydCBieSBsb29raW5nIGF0IHRoZSBmaXJzdCB0ZW4gYnl0ZXMgb2YgdGhlIGhlYWRlciwgd2hpY2gKIAkgKiBpcyBhbGwgZml4ZWQgbGF5b3V0LiAqLwpAQCAtMTQ0LDcgKzE2MCwxMSBAQAogCQlyZXR1cm4gKDApOwogCWJpdHMgKz0gMzsKIAloZWFkZXJfZmxhZ3MgPSBwWzNdOwotCS8qIEJ5dGVzIDQtNyBhcmUgbW9kIHRpbWUuICovCisJLyogQnl0ZXMgNC03IGFyZSBtb2QgdGltZSBpbiBsaXR0bGUgZW5kaWFuLiAqLworI2lmZGVmIEhBVkVfWkxJQl9ICisJaWYgKHN0YXRlKQorCQlzdGF0ZS0+bXRpbWUgPSBhcmNoaXZlX2xlMzJkZWMocCArIDQpOworI2VuZGlmCiAJLyogQnl0ZSA4IGlzIGRlZmxhdGUgZmxhZ3MuICovCiAJLyogWFhYWCBUT0RPOiByZXR1cm4gZGVmbGF0ZSBmbGFncyBiYWNrIHRvIGNvbnN1bWVfaGVhZGVyIGZvciB1c2UKIAkgICBpbiBpbml0aWFsaXppbmcgdGhlIGRlY29tcHJlc3Nvci4gKi8KQEAgLTE2MSw2ICsxODEsOSBAQAogCiAJLyogTnVsbC10ZXJtaW5hdGVkIG9wdGlvbmFsIGZpbGVuYW1lLiAqLwogCWlmIChoZWFkZXJfZmxhZ3MgJiA4KSB7CisjaWZkZWYgSEFWRV9aTElCX0gKKwkJc3NpemVfdCBmaWxlX3N0YXJ0ID0gbGVuOworI2VuZGlmCiAJCWRvIHsKIAkJCSsrbGVuOwogCQkJaWYgKGF2YWlsIDwgbGVuKQpAQCAtMTY5LDYgKzE5MiwxNCBAQAogCQkJaWYgKHAgPT0gTlVMTCkKIAkJCQlyZXR1cm4gKDApOwogCQl9IHdoaWxlIChwW2xlbiAtIDFdICE9IDApOworCisjaWZkZWYgSEFWRV9aTElCX0gKKwkJaWYgKHN0YXRlKSB7CisJCQkvKiBSZXNldCB0aGUgbmFtZSBpbiBjYXNlIG9mIHJlcGVhdCBoZWFkZXIgcmVhZHMuICovCisJCQlmcmVlKHN0YXRlLT5uYW1lKTsKKwkJCXN0YXRlLT5uYW1lID0gc3RyZHVwKChjb25zdCBjaGFyICopJnBbZmlsZV9zdGFydF0pOworCQl9CisjZW5kaWYKIAl9CiAKIAkvKiBOdWxsLXRlcm1pbmF0ZWQgb3B0aW9uYWwgY29tbWVudC4gKi8KQEAgLTIxNCwxMiArMjQ1LDExIEBACiAKIAkodm9pZClzZWxmOyAvKiBVTlVTRUQgKi8KIAotCWlmIChwZWVrX2F0X2hlYWRlcihmaWx0ZXIsICZiaXRzX2NoZWNrZWQpKQorCWlmIChwZWVrX2F0X2hlYWRlcihmaWx0ZXIsICZiaXRzX2NoZWNrZWQsIE5VTEwpKQogCQlyZXR1cm4gKGJpdHNfY2hlY2tlZCk7CiAJcmV0dXJuICgwKTsKIH0KIAotCiAjaWZuZGVmIEhBVkVfWkxJQl9ICiAKIC8qCkBAIC0yNDMsNiArMjczLDI0IEBACiAKICNlbHNlCiAKK3N0YXRpYyBpbnQKK2d6aXBfcmVhZF9oZWFkZXIoc3RydWN0IGFyY2hpdmVfcmVhZF9maWx0ZXIgKnNlbGYsIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSkKK3sKKwlzdHJ1Y3QgcHJpdmF0ZV9kYXRhICpzdGF0ZTsKKworCXN0YXRlID0gKHN0cnVjdCBwcml2YXRlX2RhdGEgKilzZWxmLT5kYXRhOworCisJLyogQSBtdGltZSBvZiAwIGlzIGNvbnNpZGVyZWQgaW52YWxpZC9taXNzaW5nLiAqLworCWlmIChzdGF0ZS0+bXRpbWUgIT0gMCkKKwkJYXJjaGl2ZV9lbnRyeV9zZXRfbXRpbWUoZW50cnksIHN0YXRlLT5tdGltZSwgMCk7CisKKwkvKiBJZiB0aGUgbmFtZSBpcyBhdmFpbGFibGUsIGV4dHJhY3QgaXQuICovCisJaWYgKHN0YXRlLT5uYW1lKQorCQlhcmNoaXZlX2VudHJ5X3NldF9wYXRobmFtZShlbnRyeSwgc3RhdGUtPm5hbWUpOworCisJcmV0dXJuIChBUkNISVZFX09LKTsKK30KKwogLyoKICAqIEluaXRpYWxpemUgdGhlIGZpbHRlciBvYmplY3QuCiAgKi8KQEAgLTI3Miw2ICszMjAsOSBAQAogCXNlbGYtPnJlYWQgPSBnemlwX2ZpbHRlcl9yZWFkOwogCXNlbGYtPnNraXAgPSBOVUxMOyAvKiBub3Qgc3VwcG9ydGVkICovCiAJc2VsZi0+Y2xvc2UgPSBnemlwX2ZpbHRlcl9jbG9zZTsKKyNpZmRlZiBIQVZFX1pMSUJfSAorCXNlbGYtPnJlYWRfaGVhZGVyID0gZ3ppcF9yZWFkX2hlYWRlcjsKKyNlbmRpZgogCiAJc3RhdGUtPmluX3N0cmVhbSA9IDA7IC8qIFdlJ3JlIG5vdCBhY3R1YWxseSB3aXRoaW4gYSBzdHJlYW0geWV0LiAqLwogCkBAIC0yODksNyArMzQwLDcgQEAKIAlzdGF0ZSA9IChzdHJ1Y3QgcHJpdmF0ZV9kYXRhICopc2VsZi0+ZGF0YTsKIAogCS8qIElmIHRoaXMgaXMgYSByZWFsIGhlYWRlciwgY29uc3VtZSBpdC4gKi8KLQlsZW4gPSBwZWVrX2F0X2hlYWRlcihzZWxmLT51cHN0cmVhbSwgTlVMTCk7CisJbGVuID0gcGVla19hdF9oZWFkZXIoc2VsZi0+dXBzdHJlYW0sIE5VTEwsIHN0YXRlKTsKIAlpZiAobGVuID09IDApCiAJCXJldHVybiAoQVJDSElWRV9FT0YpOwogCV9fYXJjaGl2ZV9yZWFkX2ZpbHRlcl9jb25zdW1lKHNlbGYtPnVwc3RyZWFtLCBsZW4pOwpAQCAtMzc0LDcgKzQyNSw3IEBACiB7CiAJc3RydWN0IHByaXZhdGVfZGF0YSAqc3RhdGU7CiAJc2l6ZV90IGRlY29tcHJlc3NlZDsKLQlzc2l6ZV90IGF2YWlsX2luOworCXNzaXplX3QgYXZhaWxfaW4sIG1heF9pbjsKIAlpbnQgcmV0OwogCiAJc3RhdGUgPSAoc3RydWN0IHByaXZhdGVfZGF0YSAqKXNlbGYtPmRhdGE7CkBAIC00MDgsNiArNDU5LDEyIEBACiAJCQkgICAgInRydW5jYXRlZCBnemlwIGlucHV0Iik7CiAJCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwogCQl9CisJCWlmIChVSU5UX01BWCA+PSBTU0laRV9NQVgpCisJCQltYXhfaW4gPSBTU0laRV9NQVg7CisJCWVsc2UKKwkJCW1heF9pbiA9IFVJTlRfTUFYOworCQlpZiAoYXZhaWxfaW4gPiBtYXhfaW4pCisJCQlhdmFpbF9pbiA9IG1heF9pbjsKIAkJc3RhdGUtPnN0cmVhbS5hdmFpbF9pbiA9ICh1SW50KWF2YWlsX2luOwogCiAJCS8qIERlY29tcHJlc3MgYW5kIGNvbnN1bWUgc29tZSBvZiB0aGF0IGRhdGEuICovCkBAIC00NjksNiArNTI2LDcgQEAKIAkJfQogCX0KIAorCWZyZWUoc3RhdGUtPm5hbWUpOwogCWZyZWUoc3RhdGUtPm91dF9ibG9jayk7CiAJZnJlZShzdGF0ZSk7CiAJcmV0dXJuIChyZXQpOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2ZpbHRlcl9sejQuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9maWx0ZXJfbHo0LmMKaW5kZXggMTQ3ZjUwMi4uNDNlZTZjMiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2ZpbHRlcl9sejQuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZmlsdGVyX2x6NC5jCkBAIC00NjAsNyArNDYwLDcgQEAKIAogCV9fYXJjaGl2ZV9yZWFkX2ZpbHRlcl9jb25zdW1lKHNlbGYtPnVwc3RyZWFtLCBkZXNjcmlwdG9yX2J5dGVzKTsKIAotCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGVub3VnaCBidWZmZXIgZm9yIHVuY29tcHJlc3NlZCBkYXRhLiAqLworCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgbGFyZ2UgZW5vdWdoIGJ1ZmZlciBmb3IgdW5jb21wcmVzc2VkIGRhdGEuICovCiAJaWYgKGx6NF9hbGxvY2F0ZV9vdXRfYmxvY2soc2VsZikgIT0gQVJDSElWRV9PSykKIAkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKIAlpZiAoc3RhdGUtPmZsYWdzLnN0cmVhbV9jaGVja3N1bSkKQEAgLTUyMCw3ICs1MjAsNyBAQAogCWlmIChyZWFkX2J1ZiA9PSBOVUxMKQogCQlnb3RvIHRydW5jYXRlZF9lcnJvcjsKIAotCS8qIE9wdGlvbmFsIHByb2Nlc3MsIGNoZWNraW5nIGEgYmxvY2sgc3VtLiAqLworCS8qIE9wdGlvbmFsIHByb2Nlc3NpbmcsIGNoZWNraW5nIGEgYmxvY2sgc3VtLiAqLwogCWlmIChjaGVja3N1bV9zaXplKSB7CiAJCXVuc2lnbmVkIGludCBjaHN1bSA9IF9fYXJjaGl2ZV94eGhhc2guWFhIMzIoCiAJCQlyZWFkX2J1ZiArIDQsIChpbnQpY29tcHJlc3NlZF9zaXplLCAwKTsKQEAgLTY0MCw3ICs2NDAsNyBAQAogCWlmIChyZXQgPT0gMCAmJiAqcCA9PSBOVUxMKQogCQlzdGF0ZS0+c3RhZ2UgPSBTRUxFQ1RfU1RSRUFNOwogCi0JLyogT3B0aW9uYWwgcHJvY2VzcywgY2hlY2tpbmcgYSBzdHJlYW0gc3VtLiAqLworCS8qIE9wdGlvbmFsIHByb2Nlc3NpbmcsIGNoZWNraW5nIGEgc3RyZWFtIHN1bS4gKi8KIAlpZiAoc3RhdGUtPmZsYWdzLnN0cmVhbV9jaGVja3N1bSkgewogCQlpZiAoc3RhdGUtPnN0YWdlID09IFNFTEVDVF9TVFJFQU0pIHsKIAkJCXVuc2lnbmVkIGludCBjaGVja3N1bTsKQEAgLTY2MCw3ICs2NjAsNyBAQAogCQkJaWYgKGNoZWNrc3VtICE9IGNoZWNrc3VtX3N0cmVhbSkgewogCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZzZWxmLT5hcmNoaXZlLT5hcmNoaXZlLAogCQkJCSAgICBBUkNISVZFX0VSUk5PX01JU0MsCi0JCQkJICAgICJsejQgc3RyZWFtIGNoZWtzdW0gZXJyb3IiKTsKKwkJCQkgICAgImx6NCBzdHJlYW0gY2hlY2tzdW0gZXJyb3IiKTsKIAkJCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwogCQkJfQogCQl9IGVsc2UgaWYgKHJldCA+IDApCkBAIC02NzQsNyArNjc0LDcgQEAKIGx6NF9maWx0ZXJfcmVhZF9sZWdhY3lfc3RyZWFtKHN0cnVjdCBhcmNoaXZlX3JlYWRfZmlsdGVyICpzZWxmLCBjb25zdCB2b2lkICoqcCkKIHsKIAlzdHJ1Y3QgcHJpdmF0ZV9kYXRhICpzdGF0ZSA9IChzdHJ1Y3QgcHJpdmF0ZV9kYXRhICopc2VsZi0+ZGF0YTsKLQlpbnQgY29tcHJlc3NlZDsKKwl1aW50MzJfdCBjb21wcmVzc2VkOwogCWNvbnN0IGNoYXIgKnJlYWRfYnVmOwogCXNzaXplX3QgcmV0OwogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZmlsdGVyX3V1LmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZmlsdGVyX3V1LmMKaW5kZXggNjQxMjk3OS4uNjdkZGZmYiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2ZpbHRlcl91dS5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9maWx0ZXJfdXUuYwpAQCAtNTc0LDE0ICs1NzQsMTMgQEAKIAkJCXdoaWxlIChsID4gMCkgewogCQkJCWludCBuID0gMDsKIAotCQkJCWlmIChsID4gMCkgewotCQkJCQlpZiAoIXV1Y2hhcltiWzBdXSB8fCAhdXVjaGFyW2JbMV1dKQotCQkJCQkJYnJlYWs7Ci0JCQkJCW4gPSBVVURFQ09ERSgqYisrKSA8PCAxODsKLQkJCQkJbiB8PSBVVURFQ09ERSgqYisrKSA8PCAxMjsKLQkJCQkJKm91dCsrID0gbiA+PiAxNjsgdG90YWwrKzsKLQkJCQkJLS1sOwotCQkJCX0KKwkJCQlpZiAoIXV1Y2hhcltiWzBdXSB8fCAhdXVjaGFyW2JbMV1dKQorCQkJCQlicmVhazsKKwkJCQluID0gVVVERUNPREUoKmIrKykgPDwgMTg7CisJCQkJbiB8PSBVVURFQ09ERSgqYisrKSA8PCAxMjsKKwkJCQkqb3V0KysgPSBuID4+IDE2OyB0b3RhbCsrOworCQkJCS0tbDsKKwogCQkJCWlmIChsID4gMCkgewogCQkJCQlpZiAoIXV1Y2hhcltiWzBdXSkKIAkJCQkJCWJyZWFrOwpAQCAtNjI2LDE0ICs2MjUsMTMgQEAKIAkJCXdoaWxlIChsID4gMCkgewogCQkJCWludCBuID0gMDsKIAotCQkJCWlmIChsID4gMCkgewotCQkJCQlpZiAoIWJhc2U2NFtiWzBdXSB8fCAhYmFzZTY0W2JbMV1dKQotCQkJCQkJYnJlYWs7Ci0JCQkJCW4gPSBiYXNlNjRudW1bKmIrK10gPDwgMTg7Ci0JCQkJCW4gfD0gYmFzZTY0bnVtWypiKytdIDw8IDEyOwotCQkJCQkqb3V0KysgPSBuID4+IDE2OyB0b3RhbCsrOwotCQkJCQlsIC09IDI7Ci0JCQkJfQorCQkJCWlmICghYmFzZTY0W2JbMF1dIHx8ICFiYXNlNjRbYlsxXV0pCisJCQkJCWJyZWFrOworCQkJCW4gPSBiYXNlNjRudW1bKmIrK10gPDwgMTg7CisJCQkJbiB8PSBiYXNlNjRudW1bKmIrK10gPDwgMTI7CisJCQkJKm91dCsrID0gbiA+PiAxNjsgdG90YWwrKzsKKwkJCQlsIC09IDI7CisKIAkJCQlpZiAobCA+IDApIHsKIAkJCQkJaWYgKCpiID09ICc9JykKIAkJCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF83emlwLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0Xzd6aXAuYwppbmRleCBhODg1YTRjLi5jOWYzNTI3IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0Xzd6aXAuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0Xzd6aXAuYwpAQCAtMTA4NiwxMCArMTA4NiwxNyBAQAogCQkJCXppcC0+YmNqX3N0YXRlID0gMDsKIAkJCQlicmVhazsKIAkJCWNhc2UgXzdaX0RFTFRBOgorCQkJCWlmIChjb2RlcjItPnByb3BlcnRpZXNTaXplICE9IDEpIHsKKwkJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkJCSAgICBBUkNISVZFX0VSUk5PX01JU0MsCisJCQkJCSAgICAiSW52YWxpZCBEZWx0YSBwYXJhbWV0ZXIiKTsKKwkJCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7CisJCQkJfQogCQkJCWZpbHRlcnNbZmldLmlkID0gTFpNQV9GSUxURVJfREVMVEE7CiAJCQkJbWVtc2V0KCZkZWx0YV9vcHQsIDAsIHNpemVvZihkZWx0YV9vcHQpKTsKIAkJCQlkZWx0YV9vcHQudHlwZSA9IExaTUFfREVMVEFfVFlQRV9CWVRFOwotCQkJCWRlbHRhX29wdC5kaXN0ID0gMTsKKwkJCQlkZWx0YV9vcHQuZGlzdCA9CisJCQkJICAgICh1aW50MzJfdCljb2RlcjItPnByb3BlcnRpZXNbMF0gKyAxOwogCQkJCWZpbHRlcnNbZmldLm9wdGlvbnMgPSAmZGVsdGFfb3B0OwogCQkJCWZpKys7CiAJCQkJYnJlYWs7CkBAIC0xNzg3LDcgKzE3OTQsNyBAQAogCQlyZXR1cm4gKDApOwogCX0KIAotCWlmICgqcCAhPSBrU2l6ZSkKKwlpZiAoKnAgIT0ga0NSQykKIAkJcmV0dXJuICgtMSk7CiAKIAlpZiAocmVhZF9EaWdlc3RzKGEsICYocGktPmRpZ2VzdCksIChzaXplX3QpcGktPm51bVBhY2tTdHJlYW1zKSA8IDApCkBAIC0yOTY0LDEzICsyOTcxLDcgQEAKIAlpZiAoemlwLT5jb2RlYyA9PSBfN1pfQ09QWSAmJiB6aXAtPmNvZGVjMiA9PSAodW5zaWduZWQgbG9uZyktMSkgewogCQkvKiBDb3B5IG1vZGUuICovCiAKLQkJLyoKLQkJICogTm90ZTogJzEnIGhlcmUgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uCi0JCSAqIFJlY2FsbCB0aGF0IHRoZSBkZWNvbXByZXNzaW9uIGxheWVyIHJldHVybnMgYSBjb3VudCBvZgotCQkgKiBhdmFpbGFibGUgYnl0ZXM7IGFza2luZyBmb3IgbW9yZSB0aGFuIHRoYXQgZm9yY2VzIHRoZQotCQkgKiBkZWNvbXByZXNzb3IgdG8gY29tYmluZSByZWFkcyBieSBjb3B5aW5nIGRhdGEuCi0JCSAqLwotCQkqYnVmZiA9IF9fYXJjaGl2ZV9yZWFkX2FoZWFkKGEsIDEsICZieXRlc19hdmFpbCk7CisJCSpidWZmID0gX19hcmNoaXZlX3JlYWRfYWhlYWQoYSwgbWluaW11bSwgJmJ5dGVzX2F2YWlsKTsKIAkJaWYgKGJ5dGVzX2F2YWlsIDw9IDApIHsKIAkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAogCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCkBAIC0zMzIzLDggKzMzMjQsNyBAQAogCSAqIFJlbGVhc2UgdGhlIG1lbW9yeSB3aGljaCB0aGUgcHJldmlvdXMgZm9sZGVyIHVzZWQgZm9yIEJDSjIuCiAJICovCiAJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewotCQlpZiAoemlwLT5zdWJfc3RyZWFtX2J1ZmZbaV0gIT0gTlVMTCkKLQkJCWZyZWUoemlwLT5zdWJfc3RyZWFtX2J1ZmZbaV0pOworCQlmcmVlKHppcC0+c3ViX3N0cmVhbV9idWZmW2ldKTsKIAkJemlwLT5zdWJfc3RyZWFtX2J1ZmZbaV0gPSBOVUxMOwogCX0KIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9hbGwuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfYWxsLmMKaW5kZXggMjEyN2ViZDMuLmRlYTU1OGIgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfYWxsLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9hbGwuYwpAQCAtNzIsNiArNzIsNyBAQAogCWFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF83emlwKGEpOwogCWFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jYWIoYSk7CiAJYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3JhcihhKTsKKwlhcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyNShhKTsKIAlhcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfaXNvOTY2MChhKTsKIAkvKiBTZWVrIGlzIHJlYWxseSBiYWQsIHNpbmNlIGl0IGZvcmNlcyB0aGUgcmVhZC1haGVhZAogCSAqIGxvZ2ljIHRvIGRpc2NhcmQgYnVmZmVyZWQgZGF0YS4gKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfYXIuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfYXIuYwppbmRleCBiNmI5ZmMzLi4yOTZiN2RiIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2FyLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9hci5jCkBAIC0xMzgsOCArMTM4LDcgQEAKIAlzdHJ1Y3QgYXIgKmFyOwogCiAJYXIgPSAoc3RydWN0IGFyICopKGEtPmZvcm1hdC0+ZGF0YSk7Ci0JaWYgKGFyLT5zdHJ0YWIpCi0JCWZyZWUoYXItPnN0cnRhYik7CisJZnJlZShhci0+c3RydGFiKTsKIAlmcmVlKGFyKTsKIAkoYS0+Zm9ybWF0LT5kYXRhKSA9IE5VTEw7CiAJcmV0dXJuIChBUkNISVZFX09LKTsKQEAgLTM4OCw5ICszODcsMTAgQEAKIAogCS8qCiAJICogIi8iIGlzIHRoZSBTVlI0L0dOVSBhcmNoaXZlIHN5bWJvbCB0YWJsZS4KKwkgKiAiL1NZTTY0LyIgaXMgdGhlIFNWUjQvR05VIDY0LWJpdCB2YXJpYW50IGFyY2hpdmUgc3ltYm9sIHRhYmxlLgogCSAqLwotCWlmIChzdHJjbXAoZmlsZW5hbWUsICIvIikgPT0gMCkgewotCQlhcmNoaXZlX2VudHJ5X2NvcHlfcGF0aG5hbWUoZW50cnksICIvIik7CisJaWYgKHN0cmNtcChmaWxlbmFtZSwgIi8iKSA9PSAwIHx8IHN0cmNtcChmaWxlbmFtZSwgIi9TWU02NC8iKSA9PSAwKSB7CisJCWFyY2hpdmVfZW50cnlfY29weV9wYXRobmFtZShlbnRyeSwgZmlsZW5hbWUpOwogCQkvKiBQYXJzZSB0aGUgdGltZSwgb3duZXIsIG1vZGUsIHNpemUgZmllbGRzLiAqLwogCQlyID0gYXJfcGFyc2VfY29tbW9uX2hlYWRlcihhciwgZW50cnksIGgpOwogCQkvKiBGb3JjZSB0aGUgZmlsZSB0eXBlIHRvIGEgcmVndWxhciBmaWxlLiAqLwpAQCAtNDU5LDYgKzQ1OSw3IEBACiAJdWludDY0X3QgbjsKIAogCS8qIENvcHkgcmVtYWluaW5nIGhlYWRlciAqLworCWFyY2hpdmVfZW50cnlfc2V0X2ZpbGV0eXBlKGVudHJ5LCBBRV9JRlJFRyk7CiAJYXJjaGl2ZV9lbnRyeV9zZXRfbXRpbWUoZW50cnksCiAJICAgICh0aW1lX3QpYXJfYXRvbDEwKGggKyBBUl9kYXRlX29mZnNldCwgQVJfZGF0ZV9zaXplKSwgMEwpOwogCWFyY2hpdmVfZW50cnlfc2V0X3VpZChlbnRyeSwKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfYnlfY29kZS5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9ieV9jb2RlLmMKaW5kZXggMDg0NTYzZi4uMDM0MzUzZCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9ieV9jb2RlLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9ieV9jb2RlLmMKQEAgLTYwLDYgKzYwLDkgQEAKIAljYXNlIEFSQ0hJVkVfRk9STUFUX1JBUjoKIAkJcmV0dXJuIGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIoYSk7CiAJCWJyZWFrOworCWNhc2UgQVJDSElWRV9GT1JNQVRfUkFSX1Y1OgorCQlyZXR1cm4gYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3JhcjUoYSk7CisJCWJyZWFrOwogCWNhc2UgQVJDSElWRV9GT1JNQVRfVEFSOgogCQlyZXR1cm4gYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3RhcihhKTsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2NhYi5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jYWIuYwppbmRleCA1MWY3OWZhLi5jNzg5ZDEzIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2NhYi5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfY2FiLmMKQEAgLTE1MDksOCArMTUwOSw4IEBACiAJCQl9CiAJCQlpZiAobXN6aXAgPT0gMSAmJiBjYWItPnN0cmVhbS5uZXh0X2luWzBdICE9IDB4NGIpCiAJCQkJZ290byBub21zemlwOwotCQkJZWxzZSBpZiAoY2FiLT5zdHJlYW0ubmV4dF9pblswXSAhPSAweDQzIHx8Ci0JCQkgICAgY2FiLT5zdHJlYW0ubmV4dF9pblsxXSAhPSAweDRiKQorCQkJZWxzZSBpZiAobXN6aXAgPT0gMiAmJiAoY2FiLT5zdHJlYW0ubmV4dF9pblswXSAhPSAweDQzIHx8CisJCQkgICAgY2FiLT5zdHJlYW0ubmV4dF9pblsxXSAhPSAweDRiKSkKIAkJCQlnb3RvIG5vbXN6aXA7CiAJCQljYWItPnN0cmVhbS5uZXh0X2luICs9IG1zemlwOwogCQkJY2FiLT5zdHJlYW0uYXZhaWxfaW4gLT0gbXN6aXA7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2NwaW8uYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfY3Bpby5jCmluZGV4IDY3ZDViMjEuLjFjOTZlNmEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfY3Bpby5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfY3Bpby5jCkBAIC05NTUsOCArOTU1LDcgQEAKICAgICAgICAgd2hpbGUgKGNwaW8tPmxpbmtzX2hlYWQgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHN0cnVjdCBsaW5rc19lbnRyeSAqbHAgPSBjcGlvLT5saW5rc19oZWFkLT5uZXh0OwogCi0gICAgICAgICAgICAgICAgaWYgKGNwaW8tPmxpbmtzX2hlYWQtPm5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICBmcmVlKGNwaW8tPmxpbmtzX2hlYWQtPm5hbWUpOworICAgICAgICAgICAgICAgIGZyZWUoY3Bpby0+bGlua3NfaGVhZC0+bmFtZSk7CiAgICAgICAgICAgICAgICAgZnJlZShjcGlvLT5saW5rc19oZWFkKTsKICAgICAgICAgICAgICAgICBjcGlvLT5saW5rc19oZWFkID0gbHA7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfaXNvOTY2MC5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9pc285NjYwLmMKaW5kZXggOTM2NDlmOC4uY2YxNDE5YSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9pc285NjYwLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9pc285NjYwLmMKQEAgLTE3MjQsOCArMTcyNCw3IEBACiAJZnJlZShpc285NjYwLT5yZWFkX2NlX3JlcS5yZXFzKTsKIAlhcmNoaXZlX3N0cmluZ19mcmVlKCZpc285NjYwLT5wYXRobmFtZSk7CiAJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmaXNvOTY2MC0+cHJldmlvdXNfcGF0aG5hbWUpOwotCWlmIChpc285NjYwLT5wZW5kaW5nX2ZpbGVzLmZpbGVzKQotCQlmcmVlKGlzbzk2NjAtPnBlbmRpbmdfZmlsZXMuZmlsZXMpOworCWZyZWUoaXNvOTY2MC0+cGVuZGluZ19maWxlcy5maWxlcyk7CiAjaWZkZWYgSEFWRV9aTElCX0gKIAlmcmVlKGlzbzk2NjAtPmVudHJ5X3ppc29mcy51bmNvbXByZXNzZWRfYnVmZmVyKTsKIAlmcmVlKGlzbzk2NjAtPmVudHJ5X3ppc29mcy5ibG9ja19wb2ludGVycyk7CkBAIC0yMTAyLDYgKzIxMDEsNyBAQAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVuZCkKIHsKIAlzdHJ1Y3QgaXNvOTY2MCAqaXNvOTY2MDsKKwlpbnQgZW50cnlfc2VlbiA9IDA7CiAKIAlpc285NjYwID0gKHN0cnVjdCBpc285NjYwICopKGEtPmZvcm1hdC0+ZGF0YSk7CiAKQEAgLTIyNTcsOCArMjI1NywxNiBAQAogCQl9CiAKIAkJcCArPSBwWzJdOworCQllbnRyeV9zZWVuID0gMTsKIAl9Ci0JcmV0dXJuIChBUkNISVZFX09LKTsKKworCWlmIChlbnRyeV9zZWVuKQorCQlyZXR1cm4gKEFSQ0hJVkVfT0spOworCWVsc2UgeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCQkgICJUcmllZCB0byBwYXJzZSBSb2NrcmlkZ2UgZXh0ZW5zaW9ucywgYnV0IG5vbmUgZm91bmQiKTsKKwkJcmV0dXJuIChBUkNISVZFX1dBUk4pOworCX0KIH0KIAogc3RhdGljIGludApAQCAtMzAyOSw4ICszMDM3LDcgQEAKIAkJaWYgKGhlYXAtPmFsbG9jYXRlZCkKIAkJCW1lbWNweShuZXdfcGVuZGluZ19maWxlcywgaGVhcC0+ZmlsZXMsCiAJCQkgICAgaGVhcC0+YWxsb2NhdGVkICogc2l6ZW9mKG5ld19wZW5kaW5nX2ZpbGVzWzBdKSk7Ci0JCWlmIChoZWFwLT5maWxlcyAhPSBOVUxMKQotCQkJZnJlZShoZWFwLT5maWxlcyk7CisJCWZyZWUoaGVhcC0+ZmlsZXMpOwogCQloZWFwLT5maWxlcyA9IG5ld19wZW5kaW5nX2ZpbGVzOwogCQloZWFwLT5hbGxvY2F0ZWQgPSBuZXdfc2l6ZTsKIAl9CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2xoYS5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9saGEuYwppbmRleCA5OGQwMmM2Li4xMzU3ZjlhIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2xoYS5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfbGhhLmMKQEAgLTE3NSw3ICsxNzUsOSBAQAogCXN0cnVjdCBhcmNoaXZlX3N0cmluZyAJIGduYW1lOwogCXVpbnQxNl90CQkgaGVhZGVyX2NyYzsKIAl1aW50MTZfdAkJIGNyYzsKLQlzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmdfY29udiAqc2NvbnY7CisJLyogZGlybmFtZSBhbmQgZmlsZW5hbWUgY291bGQgYmUgaW4gZGlmZmVyZW50IGNvZGVwYWdlcyAqLworCXN0cnVjdCBhcmNoaXZlX3N0cmluZ19jb252ICpzY29udl9kaXI7CisJc3RydWN0IGFyY2hpdmVfc3RyaW5nX2NvbnYgKnNjb252X2ZuYW1lOwogCXN0cnVjdCBhcmNoaXZlX3N0cmluZ19jb252ICpvcHRfc2NvbnY7CiAKIAlzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgCSBkaXJuYW1lOwpAQCAtMjMyLDggKzIzNCw4IEBACiBzdGF0aWMgdGltZV90CWxoYV93aW5fdGltZSh1aW50NjRfdCwgbG9uZyAqKTsKIHN0YXRpYyB1bnNpZ25lZCBjaGFyCWxoYV9jYWxjc3VtKHVuc2lnbmVkIGNoYXIsIGNvbnN0IHZvaWQgKiwKIAkJICAgIGludCwgc2l6ZV90KTsKLXN0YXRpYyBpbnQJbGhhX3BhcnNlX2xpbmtuYW1lKHN0cnVjdCBhcmNoaXZlX3N0cmluZyAqLAotCQkgICAgc3RydWN0IGFyY2hpdmVfc3RyaW5nICopOworc3RhdGljIGludAlsaGFfcGFyc2VfbGlua25hbWUoc3RydWN0IGFyY2hpdmVfd3N0cmluZyAqLAorCQkgICAgc3RydWN0IGFyY2hpdmVfd3N0cmluZyAqKTsKIHN0YXRpYyBpbnQJbGhhX3JlYWRfZGF0YV9ub25lKHN0cnVjdCBhcmNoaXZlX3JlYWQgKiwgY29uc3Qgdm9pZCAqKiwKIAkJICAgIHNpemVfdCAqLCBpbnQ2NF90ICopOwogc3RhdGljIGludAlsaGFfcmVhZF9kYXRhX2x6aChzdHJ1Y3QgYXJjaGl2ZV9yZWFkICosIGNvbnN0IHZvaWQgKiosCkBAIC00NzMsMTMgKzQ3NSwxNSBAQAogYXJjaGl2ZV9yZWFkX2Zvcm1hdF9saGFfcmVhZF9oZWFkZXIoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwKICAgICBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqZW50cnkpCiB7Ci0Jc3RydWN0IGFyY2hpdmVfc3RyaW5nIGxpbmtuYW1lOwotCXN0cnVjdCBhcmNoaXZlX3N0cmluZyBwYXRobmFtZTsKKwlzdHJ1Y3QgYXJjaGl2ZV93c3RyaW5nIGxpbmtuYW1lOworCXN0cnVjdCBhcmNoaXZlX3dzdHJpbmcgcGF0aG5hbWU7CiAJc3RydWN0IGxoYSAqbGhhOwogCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7CiAJY29uc3QgY2hhciAqc2lnbmF0dXJlOwogCWludCBlcnI7Ci0JCisJc3RydWN0IGFyY2hpdmVfbXN0cmluZyBjb252X2J1ZmZlcjsKKwljb25zdCB3Y2hhcl90ICpjb252X2J1ZmZlcl9wOworCiAJbGhhX2NyYzE2X2luaXQoKTsKIAogCWEtPmFyY2hpdmUuYXJjaGl2ZV9mb3JtYXQgPSBBUkNISVZFX0ZPUk1BVF9MSEE7CkBAIC01NjEsMTAgKzU2NSwxMyBAQAogCWFyY2hpdmVfc3RyaW5nX2VtcHR5KCZsaGEtPmRpcm5hbWUpOwogCWFyY2hpdmVfc3RyaW5nX2VtcHR5KCZsaGEtPmZpbGVuYW1lKTsKIAlsaGEtPmRvc19hdHRyID0gMDsKLQlpZiAobGhhLT5vcHRfc2NvbnYgIT0gTlVMTCkKLQkJbGhhLT5zY29udiA9IGxoYS0+b3B0X3Njb252OwotCWVsc2UKLQkJbGhhLT5zY29udiA9IE5VTEw7CisJaWYgKGxoYS0+b3B0X3Njb252ICE9IE5VTEwpIHsKKwkJbGhhLT5zY29udl9kaXIgPSBsaGEtPm9wdF9zY29udjsKKwkJbGhhLT5zY29udl9mbmFtZSA9IGxoYS0+b3B0X3Njb252OworCX0gZWxzZSB7CisJCWxoYS0+c2NvbnZfZGlyID0gTlVMTDsKKwkJbGhhLT5zY29udl9mbmFtZSA9IE5VTEw7CisJfQogCiAJc3dpdGNoIChwW0hfTEVWRUxfT0ZGU0VUXSkgewogCWNhc2UgMDoKQEAgLTU5NCwxMiArNjAxLDU0IEBACiAJCXJldHVybiAodHJ1bmNhdGVkX2Vycm9yKGEpKTsKIAogCS8qCi0JICogTWFrZSBhIHBhdGhuYW1lIGZyb20gYSBkaXJuYW1lIGFuZCBhIGZpbGVuYW1lLgotCSAqLwotCWFyY2hpdmVfc3RyaW5nX2NvbmNhdCgmbGhhLT5kaXJuYW1lLCAmbGhhLT5maWxlbmFtZSk7CisJICogTWFrZSBhIHBhdGhuYW1lIGZyb20gYSBkaXJuYW1lIGFuZCBhIGZpbGVuYW1lLCBhZnRlciBjb252ZXJ0aW5nIHRvIFVuaWNvZGUuCisJICogVGhpcyBpcyBiZWNhdXNlIGNvZGVwYWdlcyBtaWdodCBkaWZmZXIgYmV0d2VlbiBkaXJuYW1lIGFuZCBmaWxlbmFtZS4KKwkqLwogCWFyY2hpdmVfc3RyaW5nX2luaXQoJnBhdGhuYW1lKTsKIAlhcmNoaXZlX3N0cmluZ19pbml0KCZsaW5rbmFtZSk7Ci0JYXJjaGl2ZV9zdHJpbmdfY29weSgmcGF0aG5hbWUsICZsaGEtPmRpcm5hbWUpOworCWFyY2hpdmVfc3RyaW5nX2luaXQoJmNvbnZfYnVmZmVyLmFlc19tYnMpOworCWFyY2hpdmVfc3RyaW5nX2luaXQoJmNvbnZfYnVmZmVyLmFlc19tYnNfaW5fbG9jYWxlKTsKKwlhcmNoaXZlX3N0cmluZ19pbml0KCZjb252X2J1ZmZlci5hZXNfdXRmOCk7CisJYXJjaGl2ZV9zdHJpbmdfaW5pdCgmY29udl9idWZmZXIuYWVzX3djcyk7CisJaWYgKDAgIT0gYXJjaGl2ZV9tc3RyaW5nX2NvcHlfbWJzX2xlbl9sKCZjb252X2J1ZmZlciwgbGhhLT5kaXJuYW1lLnMsIGxoYS0+ZGlybmFtZS5sZW5ndGgsIGxoYS0+c2NvbnZfZGlyKSkgeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKKwkJCUFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkiUGF0aG5hbWUgY2Fubm90IGJlIGNvbnZlcnRlZCAiCisJCQkiZnJvbSAlcyB0byBVbmljb2RlLiIsCisJCQlhcmNoaXZlX3N0cmluZ19jb252ZXJzaW9uX2NoYXJzZXRfbmFtZShsaGEtPnNjb252X2RpcikpOworCQllcnIgPSBBUkNISVZFX0ZBVEFMOworCX0gZWxzZSBpZiAoMCAhPSBhcmNoaXZlX21zdHJpbmdfZ2V0X3djcygmYS0+YXJjaGl2ZSwgJmNvbnZfYnVmZmVyLCAmY29udl9idWZmZXJfcCkpCisJCWVyciA9IEFSQ0hJVkVfRkFUQUw7CisJaWYgKGVyciA9PSBBUkNISVZFX0ZBVEFMKSB7CisJCWFyY2hpdmVfbXN0cmluZ19jbGVhbigmY29udl9idWZmZXIpOworCQlhcmNoaXZlX3dzdHJpbmdfZnJlZSgmcGF0aG5hbWUpOworCQlhcmNoaXZlX3dzdHJpbmdfZnJlZSgmbGlua25hbWUpOworCQlyZXR1cm4gKGVycik7CisJfQorCWFyY2hpdmVfd3N0cmluZ19jb3B5KCZwYXRobmFtZSwgJmNvbnZfYnVmZmVyLmFlc193Y3MpOworCisJYXJjaGl2ZV9zdHJpbmdfZW1wdHkoJmNvbnZfYnVmZmVyLmFlc19tYnMpOworCWFyY2hpdmVfc3RyaW5nX2VtcHR5KCZjb252X2J1ZmZlci5hZXNfbWJzX2luX2xvY2FsZSk7CisJYXJjaGl2ZV9zdHJpbmdfZW1wdHkoJmNvbnZfYnVmZmVyLmFlc191dGY4KTsKKwlhcmNoaXZlX3dzdHJpbmdfZW1wdHkoJmNvbnZfYnVmZmVyLmFlc193Y3MpOworCWlmICgwICE9IGFyY2hpdmVfbXN0cmluZ19jb3B5X21ic19sZW5fbCgmY29udl9idWZmZXIsIGxoYS0+ZmlsZW5hbWUucywgbGhhLT5maWxlbmFtZS5sZW5ndGgsIGxoYS0+c2NvbnZfZm5hbWUpKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCSJQYXRobmFtZSBjYW5ub3QgYmUgY29udmVydGVkICIKKwkJCSJmcm9tICVzIHRvIFVuaWNvZGUuIiwKKwkJCWFyY2hpdmVfc3RyaW5nX2NvbnZlcnNpb25fY2hhcnNldF9uYW1lKGxoYS0+c2NvbnZfZm5hbWUpKTsKKwkJZXJyID0gQVJDSElWRV9GQVRBTDsKKwl9CisJZWxzZSBpZiAoMCAhPSBhcmNoaXZlX21zdHJpbmdfZ2V0X3djcygmYS0+YXJjaGl2ZSwgJmNvbnZfYnVmZmVyLCAmY29udl9idWZmZXJfcCkpCisJCWVyciA9IEFSQ0hJVkVfRkFUQUw7CisJaWYgKGVyciA9PSBBUkNISVZFX0ZBVEFMKSB7CisJCWFyY2hpdmVfbXN0cmluZ19jbGVhbigmY29udl9idWZmZXIpOworCQlhcmNoaXZlX3dzdHJpbmdfZnJlZSgmcGF0aG5hbWUpOworCQlhcmNoaXZlX3dzdHJpbmdfZnJlZSgmbGlua25hbWUpOworCQlyZXR1cm4gKGVycik7CisJfQorCWFyY2hpdmVfd3N0cmluZ19jb25jYXQoJnBhdGhuYW1lLCAmY29udl9idWZmZXIuYWVzX3djcyk7CisJYXJjaGl2ZV9tc3RyaW5nX2NsZWFuKCZjb252X2J1ZmZlcik7CiAKIAlpZiAoKGxoYS0+bW9kZSAmIEFFX0lGTVQpID09IEFFX0lGTE5LKSB7CiAJCS8qCkBAIC02MTAsOCArNjU5LDggQEAKIAkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAogCQkgICAgCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAogCQkJICAgICJVbmtub3duIHN5bWxpbmstbmFtZSIpOwotCQkJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmcGF0aG5hbWUpOwotCQkJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmbGlua25hbWUpOworCQkJYXJjaGl2ZV93c3RyaW5nX2ZyZWUoJnBhdGhuYW1lKTsKKwkJCWFyY2hpdmVfd3N0cmluZ19mcmVlKCZsaW5rbmFtZSk7CiAJCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKIAkJfQogCX0gZWxzZSB7CkBAIC02MjksMzkgKzY3OCwxMyBAQAogCS8qCiAJICogU2V0IGJhc2ljIGZpbGUgcGFyYW1ldGVycy4KIAkgKi8KLQlpZiAoYXJjaGl2ZV9lbnRyeV9jb3B5X3BhdGhuYW1lX2woZW50cnksIHBhdGhuYW1lLnMsCi0JICAgIHBhdGhuYW1lLmxlbmd0aCwgbGhhLT5zY29udikgIT0gMCkgewotCQlpZiAoZXJybm8gPT0gRU5PTUVNKSB7Ci0JCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgRU5PTUVNLAotCQkJICAgICJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIFBhdGhuYW1lIik7Ci0JCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwotCQl9Ci0JCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAotCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKLQkJICAgICJQYXRobmFtZSBjYW5ub3QgYmUgY29udmVydGVkICIKLQkJICAgICJmcm9tICVzIHRvIGN1cnJlbnQgbG9jYWxlLiIsCi0JCSAgICBhcmNoaXZlX3N0cmluZ19jb252ZXJzaW9uX2NoYXJzZXRfbmFtZShsaGEtPnNjb252KSk7Ci0JCWVyciA9IEFSQ0hJVkVfV0FSTjsKLQl9Ci0JYXJjaGl2ZV9zdHJpbmdfZnJlZSgmcGF0aG5hbWUpOworCWFyY2hpdmVfZW50cnlfY29weV9wYXRobmFtZV93KGVudHJ5LCBwYXRobmFtZS5zKTsKKwlhcmNoaXZlX3dzdHJpbmdfZnJlZSgmcGF0aG5hbWUpOwogCWlmIChhcmNoaXZlX3N0cmxlbigmbGlua25hbWUpID4gMCkgewotCQlpZiAoYXJjaGl2ZV9lbnRyeV9jb3B5X3N5bWxpbmtfbChlbnRyeSwgbGlua25hbWUucywKLQkJICAgIGxpbmtuYW1lLmxlbmd0aCwgbGhhLT5zY29udikgIT0gMCkgewotCQkJaWYgKGVycm5vID09IEVOT01FTSkgewotCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBFTk9NRU0sCi0JCQkJICAgICJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIExpbmtuYW1lIik7Ci0JCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKLQkJCX0KLQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAotCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0JCQkgICAgIkxpbmtuYW1lIGNhbm5vdCBiZSBjb252ZXJ0ZWQgIgotCQkJICAgICJmcm9tICVzIHRvIGN1cnJlbnQgbG9jYWxlLiIsCi0JCQkgICAgYXJjaGl2ZV9zdHJpbmdfY29udmVyc2lvbl9jaGFyc2V0X25hbWUobGhhLT5zY29udikpOwotCQkJZXJyID0gQVJDSElWRV9XQVJOOwotCQl9CisJCWFyY2hpdmVfZW50cnlfY29weV9zeW1saW5rX3coZW50cnksIGxpbmtuYW1lLnMpOwogCX0gZWxzZQogCQlhcmNoaXZlX2VudHJ5X3NldF9zeW1saW5rKGVudHJ5LCBOVUxMKTsKLQlhcmNoaXZlX3N0cmluZ19mcmVlKCZsaW5rbmFtZSk7CisJYXJjaGl2ZV93c3RyaW5nX2ZyZWUoJmxpbmtuYW1lKTsKIAkvKgogCSAqIFdoZW4gYSBoZWFkZXIgbGV2ZWwgaXMgMCwgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0CiAJICogYSBwYXRobmFtZSBhbmQgYSBzeW1saW5rIGhhcyAnXCcgY2hhcmFjdGVyLCBhIGRpcmVjdG9yeQpAQCAtMTIwOCw2ICsxMjMxLDI3IEBACiAJCQlhcmNoaXZlX3N0cm5jcHkoJmxoYS0+ZmlsZW5hbWUsCiAJCQkgICAgKGNvbnN0IGNoYXIgKilleHRkaGVhZGVyLCBkYXRhc2l6ZSk7CiAJCQlicmVhazsKKwkJY2FzZSBFWFRfVVRGMTZfRklMRU5BTUU6CisJCQlpZiAoZGF0YXNpemUgPT0gMCkgeworCQkJCS8qIG1heWJlIGRpcmVjdG9yeSBoZWFkZXIgKi8KKwkJCQlhcmNoaXZlX3N0cmluZ19lbXB0eSgmbGhhLT5maWxlbmFtZSk7CisJCQkJYnJlYWs7CisJCQl9IGVsc2UgaWYgKGRhdGFzaXplICYgMSkgeworCQkJCS8qIFVURi0xNiBjaGFyYWN0ZXJzIHRha2UgYWx3YXlzIDIgb3IgNCBieXRlcyAqLworCQkJCWdvdG8gaW52YWxpZDsKKwkJCX0KKwkJCWlmIChleHRkaGVhZGVyWzBdID09ICdcMCcpCisJCQkJZ290byBpbnZhbGlkOworCQkJYXJjaGl2ZV9zdHJpbmdfZW1wdHkoJmxoYS0+ZmlsZW5hbWUpOworCQkJYXJjaGl2ZV9hcnJheV9hcHBlbmQoJmxoYS0+ZmlsZW5hbWUsCisJCQkJKGNvbnN0IGNoYXIgKilleHRkaGVhZGVyLCBkYXRhc2l6ZSk7CisJCQkvKiBTZXR1cCBhIHN0cmluZyBjb252ZXJzaW9uIGZvciBhIGZpbGVuYW1lLiAqLworCQkJbGhhLT5zY29udl9mbmFtZSA9CisJCQkgICAgYXJjaGl2ZV9zdHJpbmdfY29udmVyc2lvbl9mcm9tX2NoYXJzZXQoJmEtPmFyY2hpdmUsCisJCQkgICAgICAgICJVVEYtMTZMRSIsIDEpOworCQkJaWYgKGxoYS0+c2NvbnZfZm5hbWUgPT0gTlVMTCkKKwkJCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworCQkJYnJlYWs7CiAJCWNhc2UgRVhUX0RJUkVDVE9SWToKIAkJCWlmIChkYXRhc2l6ZSA9PSAwIHx8IGV4dGRoZWFkZXJbMF0gPT0gJ1wwJykKIAkJCQkvKiBubyBkaXJlY3RvcnkgbmFtZSBkYXRhLiBleGl0IHRoaXMgY2FzZS4gKi8KQEAgLTEyMjgsNiArMTI3Miw1MCBAQAogCQkJCS8qIGludmFsaWQgZGlyZWN0b3J5IGRhdGEgKi8KIAkJCQlnb3RvIGludmFsaWQ7CiAJCQlicmVhazsKKwkJY2FzZSBFWFRfVVRGMTZfRElSRUNUT1JZOgorCQkJLyogVVRGLTE2IGNoYXJhY3RlcnMgdGFrZSBhbHdheXMgMiBvciA0IGJ5dGVzICovCisJCQlpZiAoZGF0YXNpemUgPT0gMCB8fCAoZGF0YXNpemUgJiAxKSB8fAorCQkJICAgIGV4dGRoZWFkZXJbMF0gPT0gJ1wwJykgeworCQkJCS8qIG5vIGRpcmVjdG9yeSBuYW1lIGRhdGEuIGV4aXQgdGhpcyBjYXNlLiAqLworCQkJCWdvdG8gaW52YWxpZDsKKwkJCX0KKworCQkJYXJjaGl2ZV9zdHJpbmdfZW1wdHkoJmxoYS0+ZGlybmFtZSk7CisJCQlhcmNoaXZlX2FycmF5X2FwcGVuZCgmbGhhLT5kaXJuYW1lLAorCQkJCShjb25zdCBjaGFyICopZXh0ZGhlYWRlciwgZGF0YXNpemUpOworCQkJbGhhLT5zY29udl9kaXIgPQorCQkJICAgIGFyY2hpdmVfc3RyaW5nX2NvbnZlcnNpb25fZnJvbV9jaGFyc2V0KCZhLT5hcmNoaXZlLAorCQkJICAgICAgICAiVVRGLTE2TEUiLCAxKTsKKwkJCWlmIChsaGEtPnNjb252X2RpciA9PSBOVUxMKQorCQkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJCQllbHNlIHsKKwkJCQkvKgorCQkJCSAqIENvbnZlcnQgZGlyZWN0b3J5IGRlbGltaXRlciBmcm9tIDB4RkZGRgorCQkJCSAqIHRvICcvJyBmb3IgbG9jYWwgc3lzdGVtLgorCQkJCSAqLworCQkJCXVpbnQxNl90IGRpclNlcDsKKwkJCQl1aW50MTZfdCBkID0gMTsKKwkJCQlpZiAoYXJjaGl2ZV9iZTE2ZGVjKCZkKSA9PSAxKQorCQkJCQlkaXJTZXAgPSAweDJGMDA7CisJCQkJZWxzZQorCQkJCQlkaXJTZXAgPSAweDAwMkY7CisKKwkJCQkvKiBVVEYtMTZMRSBjaGFyYWN0ZXIgKi8KKwkJCQl1aW50MTZfdCAqdXRmMTZuYW1lID0KKwkJCQkgICAgKHVpbnQxNl90ICopbGhhLT5kaXJuYW1lLnM7CisJCQkJZm9yIChpID0gMDsgaSA8IGxoYS0+ZGlybmFtZS5sZW5ndGggLyAyOyBpKyspIHsKKwkJCQkJaWYgKHV0ZjE2bmFtZVtpXSA9PSAweEZGRkYpIHsKKwkJCQkJCXV0ZjE2bmFtZVtpXSA9IGRpclNlcDsKKwkJCQkJfQorCQkJCX0KKwkJCQkvKiBJcyBsYXN0IGNoYXJhY3RlciBkaXJlY3Rvcnkgc2VwYXJhdG9yPyAqLworCQkJCWlmICh1dGYxNm5hbWVbbGhhLT5kaXJuYW1lLmxlbmd0aCAvIDIgLSAxXSAhPQorCQkJCSAgICBkaXJTZXApIHsKKwkJCQkJLyogaW52YWxpZCBkaXJlY3RvcnkgZGF0YSAqLworCQkJCQlnb3RvIGludmFsaWQ7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgRVhUX0RPU19BVFRSOgogCQkJaWYgKGRhdGFzaXplID09IDIpCiAJCQkJbGhhLT5kb3NfYXR0ciA9ICh1bnNpZ25lZCBjaGFyKQpAQCAtMTI3NiwxMSArMTM2NCwxNiBAQAogCQkJCQljaGFyc2V0ID0gY3AuczsKIAkJCQkJYnJlYWs7CiAJCQkJfQotCQkJCWxoYS0+c2NvbnYgPQorCQkJCWxoYS0+c2NvbnZfZGlyID0KKwkJCQkgICAgYXJjaGl2ZV9zdHJpbmdfY29udmVyc2lvbl9mcm9tX2NoYXJzZXQoCisJCQkJCSYoYS0+YXJjaGl2ZSksIGNoYXJzZXQsIDEpOworCQkJCWxoYS0+c2NvbnZfZm5hbWUgPQogCQkJCSAgICBhcmNoaXZlX3N0cmluZ19jb252ZXJzaW9uX2Zyb21fY2hhcnNldCgKIAkJCQkJJihhLT5hcmNoaXZlKSwgY2hhcnNldCwgMSk7CiAJCQkJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmY3ApOwotCQkJCWlmIChsaGEtPnNjb252ID09IE5VTEwpCisJCQkJaWYgKGxoYS0+c2NvbnZfZGlyID09IE5VTEwpCisJCQkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJCQkJaWYgKGxoYS0+c2NvbnZfZm5hbWUgPT0gTlVMTCkKIAkJCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKIAkJCX0KIAkJCWJyZWFrOwpAQCAtMTMzNiw4ICsxNDI5LDcgQEAKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIEVYVF9USU1FWk9ORToJCS8qIE5vdCBzdXBwb3J0ZWQgKi8KLQkJY2FzZSBFWFRfVVRGMTZfRklMRU5BTUU6CS8qIE5vdCBzdXBwb3J0ZWQgKi8KLQkJY2FzZSBFWFRfVVRGMTZfRElSRUNUT1JZOgkvKiBOb3Qgc3VwcG9ydGVkICovCisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWJyZWFrOwogCQl9CkBAIC0xNjAwLDE5ICsxNjkyLDE5IEBACiAgKiAgdGhlbiBhIGFyY2hpdmVkIHBhdGhuYW1lIGlzICd4eHgvYmJifGFhYS9iYi9jYycKICAqLwogc3RhdGljIGludAotbGhhX3BhcnNlX2xpbmtuYW1lKHN0cnVjdCBhcmNoaXZlX3N0cmluZyAqbGlua25hbWUsCi0gICAgc3RydWN0IGFyY2hpdmVfc3RyaW5nICpwYXRobmFtZSkKK2xoYV9wYXJzZV9saW5rbmFtZShzdHJ1Y3QgYXJjaGl2ZV93c3RyaW5nICpsaW5rbmFtZSwKKyAgICBzdHJ1Y3QgYXJjaGl2ZV93c3RyaW5nICpwYXRobmFtZSkKIHsKLQljaGFyICoJbGlua3B0cjsKKwl3Y2hhcl90ICoJbGlua3B0cjsKIAlzaXplX3QgCXN5bWxlbjsKIAotCWxpbmtwdHIgPSBzdHJjaHIocGF0aG5hbWUtPnMsICd8Jyk7CisJbGlua3B0ciA9IHdjc2NocihwYXRobmFtZS0+cywgTCd8Jyk7CiAJaWYgKGxpbmtwdHIgIT0gTlVMTCkgewotCQlzeW1sZW4gPSBzdHJsZW4obGlua3B0ciArIDEpOwotCQlhcmNoaXZlX3N0cm5jcHkobGlua25hbWUsIGxpbmtwdHIrMSwgc3ltbGVuKTsKKwkJc3ltbGVuID0gd2NzbGVuKGxpbmtwdHIgKyAxKTsKKwkJYXJjaGl2ZV93c3RybmNweShsaW5rbmFtZSwgbGlua3B0cisxLCBzeW1sZW4pOwogCiAJCSpsaW5rcHRyID0gMDsKLQkJcGF0aG5hbWUtPmxlbmd0aCA9IHN0cmxlbihwYXRobmFtZS0+cyk7CisJCXBhdGhuYW1lLT5sZW5ndGggPSB3Y3NsZW4ocGF0aG5hbWUtPnMpOwogCiAJCXJldHVybiAoMSk7CiAJfQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9tdHJlZS5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9tdHJlZS5jCmluZGV4IDViMGVhZGMuLjMzMjk0NGEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfbXRyZWUuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X210cmVlLmMKQEAgLTQ1LDYgKzQ1LDkgQEAKICNpZmRlZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZW5kaWYKKyNpZmRlZiBIQVZFX0NUWVBFX0gKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2VuZGlmCiAKICNpbmNsdWRlICJhcmNoaXZlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV9lbnRyeS5oIgpAQCAtMjU1LDYgKzI1OCw3IEBACiAJCSAgICAiQ2FuJ3QgYWxsb2NhdGUgbXRyZWUgZGF0YSIpOwogCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwogCX0KKwltdHJlZS0+Y2hlY2tmcyA9IDA7CiAJbXRyZWUtPmZkID0gLTE7CiAKIAlfX2FyY2hpdmVfcmJfdHJlZV9pbml0KCZtdHJlZS0+cmJ0cmVlLCAmcmJfb3BzKTsKQEAgLTEwMTEsNyArMTAxNSw3IEBACiB7CiAJc3NpemVfdCBsZW47CiAJdWludG1heF90IGNvdW50ZXI7Ci0JY2hhciAqcDsKKwljaGFyICpwLCAqczsKIAlzdHJ1Y3QgbXRyZWVfb3B0aW9uICpnbG9iYWw7CiAJc3RydWN0IG10cmVlX2VudHJ5ICpsYXN0X2VudHJ5OwogCWludCByLCBpc19mb3JtX2Q7CkBAIC0xMDI1LDYgKzEwMjksNyBAQAogCSh2b2lkKWRldGVjdF9mb3JtKGEsICZpc19mb3JtX2QpOwogCiAJZm9yIChjb3VudGVyID0gMTsgOyArK2NvdW50ZXIpIHsKKwkJciA9IEFSQ0hJVkVfT0s7CiAJCWxlbiA9IHJlYWRsaW5lKGEsIG10cmVlLCAmcCwgNjU1MzYpOwogCQlpZiAobGVuID09IDApIHsKIAkJCW10cmVlLT50aGlzX2VudHJ5ID0gbXRyZWUtPmVudHJpZXM7CkBAIC0xMDQ1LDYgKzEwNTAsMTUgQEAKIAkJCWNvbnRpbnVlOwogCQlpZiAoKnAgPT0gJ1xyJyB8fCAqcCA9PSAnXG4nIHx8ICpwID09ICdcMCcpCiAJCQljb250aW51ZTsKKwkJLyogTm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBub3QgYWxsb3dlZCAqLworCQlmb3IgKHMgPSBwO3MgPCBwICsgbGVuIC0gMTsgcysrKSB7CisJCQlpZiAoIWlzcHJpbnQoKnMpKSB7CisJCQkJciA9IEFSQ0hJVkVfRkFUQUw7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJaWYgKHIgIT0gQVJDSElWRV9PSykKKwkJCWJyZWFrOwogCQlpZiAoKnAgIT0gJy8nKSB7CiAJCQlyID0gcHJvY2Vzc19hZGRfZW50cnkoYSwgbXRyZWUsICZnbG9iYWwsIHAsIGxlbiwKIAkJCSAgICAmbGFzdF9lbnRyeSwgaXNfZm9ybV9kKTsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCmluZGV4IGM2OGQ3N2IuLjEyNjExOTEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYwpAQCAtMTQ4LDYgKzE0OCw5IEBACiAjZGVmaW5lIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSAweDEwCiAjZW5kaWYKIAorI3VuZGVmIG1pbmltdW0KKyNkZWZpbmUgbWluaW11bShhLCBiKQkoKGEpPChiKT8oYSk6KGIpKQorCiAvKiBGaWVsZHMgY29tbW9uIHRvIGFsbCBoZWFkZXJzICovCiBzdHJ1Y3QgcmFyX2hlYWRlcgogewpAQCAtMjU4LDYgKzI2MSw3IEBACiAgIHN0cnVjdCBkYXRhX2Jsb2NrX29mZnNldHMgKmRibzsKICAgdW5zaWduZWQgaW50IGN1cnNvcjsKICAgdW5zaWduZWQgaW50IG5vZGVzOworICBjaGFyIGZpbGVuYW1lX211c3RfbWF0Y2g7CiAKICAgLyogTFpTUyBtZW1iZXJzICovCiAgIHN0cnVjdCBodWZmbWFuX2NvZGUgbWFpbmNvZGU7CkBAIC0xMDIzLDggKzEwMjcsMTEgQEAKICAgY2FzZSBDT01QUkVTU19NRVRIT0RfR09PRDoKICAgY2FzZSBDT01QUkVTU19NRVRIT0RfQkVTVDoKICAgICByZXQgPSByZWFkX2RhdGFfY29tcHJlc3NlZChhLCBidWZmLCBzaXplLCBvZmZzZXQpOwotICAgIGlmIChyZXQgIT0gQVJDSElWRV9PSyAmJiByZXQgIT0gQVJDSElWRV9XQVJOKQorICAgIGlmIChyZXQgIT0gQVJDSElWRV9PSyAmJiByZXQgIT0gQVJDSElWRV9XQVJOKSB7CiAgICAgICBfX2FyY2hpdmVfcHBtZDdfZnVuY3Rpb25zLlBwbWQ3X0ZyZWUoJnJhci0+cHBtZDdfY29udGV4dCk7CisgICAgICByYXItPnN0YXJ0X25ld190YWJsZSA9IDE7CisgICAgICByYXItPnBwbWRfdmFsaWQgPSAwOworICAgIH0KICAgICBicmVhazsKIAogICBkZWZhdWx0OgpAQCAtMTU2MCw2ICsxNTY3LDEyIEBACiAgICAgfQogICAgIHJldHVybiByZXQ7CiAgIH0KKyAgZWxzZSBpZiAocmFyLT5maWxlbmFtZV9tdXN0X21hdGNoKQorICB7CisgICAgYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisgICAgICAiTWlzbWF0Y2ggb2YgZmlsZSBwYXJ0cyBzcGxpdCBhY3Jvc3MgbXVsdGktdm9sdW1lIGFyY2hpdmUiKTsKKyAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworICB9CiAKICAgcmFyLT5maWxlbmFtZV9zYXZlID0gKGNoYXIqKXJlYWxsb2MocmFyLT5maWxlbmFtZV9zYXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZV9zaXplICsgMSk7CkBAIC0xNzEyLDYgKzE3MjUsMTMgQEAKICAgc3RydWN0IHRtICp0bTsKICAgdGltZV90IHQ7CiAgIGxvbmcgbnNlYzsKKyNpZiBkZWZpbmVkKEhBVkVfTE9DQUxUSU1FX1IpIHx8IGRlZmluZWQoSEFWRV9fTE9DQUxUSU1FNjRfUykKKyAgc3RydWN0IHRtIHRtYnVmOworI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX19MT0NBTFRJTUU2NF9TKQorICBlcnJub190IHRlcnI7CisgIF9fdGltZTY0X3QgdG1wdGltZTsKKyNlbmRpZgogCiAgIGlmIChwICsgMiA+IGVuZHApCiAgICAgcmV0dXJuICgtMSk7CkBAIC0xNzQzLDcgKzE3NjMsMTggQEAKICAgICAgICAgcmVtID0gKCgodW5zaWduZWQpKHVuc2lnbmVkIGNoYXIpKnApIDw8IDE2KSB8IChyZW0gPj4gOCk7CiAgICAgICAgIHArKzsKICAgICAgIH0KKyNpZiBkZWZpbmVkKEhBVkVfTE9DQUxUSU1FX1IpCisgICAgICB0bSA9IGxvY2FsdGltZV9yKCZ0LCAmdG1idWYpOworI2VsaWYgZGVmaW5lZChIQVZFX19MT0NBTFRJTUU2NF9TKQorICAgICAgdG1wdGltZSA9IHQ7CisgICAgICB0ZXJyID0gX2xvY2FsdGltZTY0X3MoJnRtYnVmLCAmdG1wdGltZSk7CisgICAgICBpZiAodGVycikKKyAgICAgICAgdG0gPSBOVUxMOworICAgICAgZWxzZQorICAgICAgICB0bSA9ICZ0bWJ1ZjsKKyNlbHNlCiAgICAgICB0bSA9IGxvY2FsdGltZSgmdCk7CisjZW5kaWYKICAgICAgIG5zZWMgPSB0bS0+dG1fc2VjICsgcmVtIC8gTlNfVU5JVDsKICAgICAgIGlmIChybW9kZSAmIDQpCiAgICAgICB7CkBAIC0yMzAwLDYgKzIzMzEsMTEgQEAKICAgICAgIG5ld19zaXplID0gRElDVElPTkFSWV9NQVhfU0laRTsKICAgICBlbHNlCiAgICAgICBuZXdfc2l6ZSA9IHJhcl9mbHMoKHVuc2lnbmVkIGludClyYXItPnVucF9zaXplKSA8PCAxOworICAgIGlmIChuZXdfc2l6ZSA9PSAwKSB7CisgICAgICBhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJaZXJvIHdpbmRvdyBzaXplIGlzIGludmFsaWQuIik7CisgICAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworICAgIH0KICAgICBuZXdfd2luZG93ID0gcmVhbGxvYyhyYXItPmx6c3Mud2luZG93LCBuZXdfc2l6ZSk7CiAgICAgaWYgKG5ld193aW5kb3cgPT0gTlVMTCkgewogICAgICAgYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEVOT01FTSwKQEAgLTI0MzcsOCArMjQ3MywxMSBAQAogICAgICAgaWYgKGFkZF92YWx1ZShhLCBjb2RlLCBqLCBjb2RlYml0cywgaSkgIT0gQVJDSElWRV9PSykKICAgICAgICAgcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKICAgICAgIGNvZGViaXRzKys7Ci0gICAgICBpZiAoLS1zeW1ib2xzbGVmdCA8PSAwKSB7IGJyZWFrOyBicmVhazsgfQorICAgICAgaWYgKC0tc3ltYm9sc2xlZnQgPD0gMCkKKyAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGlmIChzeW1ib2xzbGVmdCA8PSAwKQorICAgICAgYnJlYWs7CiAgICAgY29kZWJpdHMgPDw9IDE7CiAgIH0KICAgcmV0dXJuIChBUkNISVZFX09LKTsKQEAgLTI0NDgsNyArMjQ4Nyw4IEBACiBhZGRfdmFsdWUoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGh1ZmZtYW5fY29kZSAqY29kZSwgaW50IHZhbHVlLAogICAgICAgICAgIGludCBjb2RlYml0cywgaW50IGxlbmd0aCkKIHsKLSAgaW50IHJlcGVhdHBvcywgbGFzdG5vZGUsIGJpdHBvcywgYml0LCByZXBlYXRub2RlLCBuZXh0bm9kZTsKKyAgaW50IGxhc3Rub2RlLCBiaXRwb3MsIGJpdDsKKyAgLyogaW50IHJlcGVhdHBvcywgcmVwZWF0bm9kZSwgbmV4dG5vZGU7ICovCiAKICAgZnJlZShjb2RlLT50YWJsZSk7CiAgIGNvZGUtPnRhYmxlID0gTlVMTDsKQEAgLTI0NTgsNiArMjQ5OCw5IEBACiAgIGlmKGxlbmd0aCA8IGNvZGUtPm1pbmxlbmd0aCkKICAgICBjb2RlLT5taW5sZW5ndGggPSBsZW5ndGg7CiAKKyAgLyoKKyAgICogRGVhZCBjb2RlLCByZXBlYXRwb3Mgd2FzIGlzIC0xCisgICAqCiAgIHJlcGVhdHBvcyA9IC0xOwogICBpZiAocmVwZWF0cG9zID09IDAgfHwgKHJlcGVhdHBvcyA+PSAwCiAgICAgJiYgKCgoY29kZWJpdHMgPj4gKHJlcGVhdHBvcyAtIDEpKSAmIDMpID09IDAKQEAgLTI0NjcsNiArMjUxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgcmVwZWF0IHBvc2l0aW9uIik7CiAgICAgcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKICAgfQorICAqLwogCiAgIGxhc3Rub2RlID0gMDsKICAgZm9yIChiaXRwb3MgPSBsZW5ndGggLSAxOyBiaXRwb3MgPj0gMDsgYml0cG9zLS0pCkBAIC0yNDgyLDkgKzI1MjYsMTIgQEAKICAgICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7CiAgICAgfQogCisgICAgLyoKKyAgICAgKiBEZWFkIGNvZGUsIHJlcGVhdHBvcyB3YXMgLTEsIGJpdHBvcyA+PTAKKyAgICAgKgogICAgIGlmIChiaXRwb3MgPT0gcmVwZWF0cG9zKQogICAgIHsKLSAgICAgIC8qIE9wZW4gYnJhbmNoIGNoZWNrICovCisgICAgICAqIE9wZW4gYnJhbmNoIGNoZWNrICoKICAgICAgIGlmICghKGNvZGUtPnRyZWVbbGFzdG5vZGVdLmJyYW5jaGVzW2JpdF0gPCAwKSkKICAgICAgIHsKICAgICAgICAgYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCkBAIC0yNTAzLDE2ICsyNTUwLDE3IEBACiAgICAgICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7CiAgICAgICB9CiAKLSAgICAgIC8qIFNldCBicmFuY2hlcyAqLworICAgICAgKiBTZXQgYnJhbmNoZXMgKgogICAgICAgY29kZS0+dHJlZVtsYXN0bm9kZV0uYnJhbmNoZXNbYml0XSA9IHJlcGVhdG5vZGU7CiAgICAgICBjb2RlLT50cmVlW3JlcGVhdG5vZGVdLmJyYW5jaGVzW2JpdF0gPSByZXBlYXRub2RlOwogICAgICAgY29kZS0+dHJlZVtyZXBlYXRub2RlXS5icmFuY2hlc1tiaXReMV0gPSBuZXh0bm9kZTsKICAgICAgIGxhc3Rub2RlID0gbmV4dG5vZGU7CiAKLSAgICAgIGJpdHBvcysrOyAvKiB0ZXJtaW5hdGluZyBiaXQgYWxyZWFkeSBoYW5kbGVkLCBza2lwIGl0ICovCisgICAgICBiaXRwb3MrKzsgKiB0ZXJtaW5hdGluZyBiaXQgYWxyZWFkeSBoYW5kbGVkLCBza2lwIGl0ICoKICAgICB9CiAgICAgZWxzZQogICAgIHsKKyAgICAqLwogICAgICAgLyogT3BlbiBicmFuY2ggY2hlY2sgKi8KICAgICAgIGlmIChjb2RlLT50cmVlW2xhc3Rub2RlXS5icmFuY2hlc1tiaXRdIDwgMCkKICAgICAgIHsKQEAgLTI1MjYsNyArMjU3NCw3IEBACiAKICAgICAgIC8qIHNldCB0byBicmFuY2ggKi8KICAgICAgIGxhc3Rub2RlID0gY29kZS0+dHJlZVtsYXN0bm9kZV0uYnJhbmNoZXNbYml0XTsKLSAgICB9CisgLyogfSAqLwogICB9CiAKICAgaWYgKCEoY29kZS0+dHJlZVtsYXN0bm9kZV0uYnJhbmNoZXNbMF0gPT0gLTEKQEAgLTI2MTAsMTEgKzI2NTgsMTUgQEAKICAgICAgIHRhYmxlW2ldLnZhbHVlID0gY29kZS0+dHJlZVtub2RlXS5icmFuY2hlc1swXTsKICAgICB9CiAgIH0KKyAgLyoKKyAgICogRGVhZCBjb2RlLCBub2RlID49IDAKKyAgICoKICAgZWxzZSBpZiAobm9kZSA8IDApCiAgIHsKICAgICBmb3IoaSA9IDA7IGkgPCBjdXJydGFibGVzaXplOyBpKyspCiAgICAgICB0YWJsZVtpXS5sZW5ndGggPSAtMTsKICAgfQorICAgKi8KICAgZWxzZQogICB7CiAgICAgaWYoZGVwdGggPT0gbWF4ZGVwdGgpCkBAIC0yNjQ2LDYgKzI2OTgsMTAgQEAKICAgICAgIDAsIDEsIDEsIDEsIDEsIDIsIDIsCiAgICAgICAyLCAyLCAzLCAzLCAzLCAzLCA0LAogICAgICAgNCwgNCwgNCwgNSwgNSwgNSwgNSB9OworICBzdGF0aWMgY29uc3QgaW50IGxlbmd0aGJfbWluID0gbWluaW11bSgKKyAgICAoaW50KShzaXplb2YobGVuZ3RoYmFzZXMpL3NpemVvZihsZW5ndGhiYXNlc1swXSkpLAorICAgIChpbnQpKHNpemVvZihsZW5ndGhiaXRzKS9zaXplb2YobGVuZ3RoYml0c1swXSkpCisgICk7CiAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgb2Zmc2V0YmFzZXNbXSA9CiAgICAgeyAgICAgICAwLCAgICAgICAxLCAgICAgICAyLCAgICAgICAzLCAgICAgICA0LCAgICAgICA2LAogICAgICAgICAgICAgOCwgICAgICAxMiwgICAgICAxNiwgICAgICAyNCwgICAgICAzMiwgICAgICA0OCwKQEAgLTI2NjMsNiArMjcxOSwxMCBAQAogICAgICAgMTEsIDExLCAxMiwgMTIsIDEzLCAxMywgMTQsIDE0LCAxNSwgMTUsIDE2LCAxNiwKICAgICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsCiAgICAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4IH07CisgIHN0YXRpYyBjb25zdCBpbnQgb2Zmc2V0Yl9taW4gPSBtaW5pbXVtKAorICAgIChpbnQpKHNpemVvZihvZmZzZXRiYXNlcykvc2l6ZW9mKG9mZnNldGJhc2VzWzBdKSksCisgICAgKGludCkoc2l6ZW9mKG9mZnNldGJpdHMpL3NpemVvZihvZmZzZXRiaXRzWzBdKSkKKyAgKTsKICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2hvcnRiYXNlc1tdID0KICAgICB7IDAsIDQsIDgsIDE2LCAzMiwgNjQsIDEyOCwgMTkyIH07CiAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHNob3J0Yml0c1tdID0KQEAgLTI3NDIsOSArMjgwMiw3IEBACiAKICAgICAgIGlmICgobGVuc3ltYm9sID0gcmVhZF9uZXh0X3N5bWJvbChhLCAmcmFyLT5sZW5ndGhjb2RlKSkgPCAwKQogICAgICAgICBnb3RvIGJhZF9kYXRhOwotICAgICAgaWYgKGxlbnN5bWJvbCA+IChpbnQpKHNpemVvZihsZW5ndGhiYXNlcykvc2l6ZW9mKGxlbmd0aGJhc2VzWzBdKSkpCi0gICAgICAgIGdvdG8gYmFkX2RhdGE7Ci0gICAgICBpZiAobGVuc3ltYm9sID4gKGludCkoc2l6ZW9mKGxlbmd0aGJpdHMpL3NpemVvZihsZW5ndGhiaXRzWzBdKSkpCisgICAgICBpZiAobGVuc3ltYm9sID4gbGVuZ3RoYl9taW4pCiAgICAgICAgIGdvdG8gYmFkX2RhdGE7CiAgICAgICBsZW4gPSBsZW5ndGhiYXNlc1tsZW5zeW1ib2xdICsgMjsKICAgICAgIGlmIChsZW5ndGhiaXRzW2xlbnN5bWJvbF0gPiAwKSB7CkBAIC0yNzc2LDkgKzI4MzQsNyBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgaWYgKHN5bWJvbC0yNzEgPiAoaW50KShzaXplb2YobGVuZ3RoYmFzZXMpL3NpemVvZihsZW5ndGhiYXNlc1swXSkpKQotICAgICAgICBnb3RvIGJhZF9kYXRhOwotICAgICAgaWYgKHN5bWJvbC0yNzEgPiAoaW50KShzaXplb2YobGVuZ3RoYml0cykvc2l6ZW9mKGxlbmd0aGJpdHNbMF0pKSkKKyAgICAgIGlmIChzeW1ib2wtMjcxID4gbGVuZ3RoYl9taW4pCiAgICAgICAgIGdvdG8gYmFkX2RhdGE7CiAgICAgICBsZW4gPSBsZW5ndGhiYXNlc1tzeW1ib2wtMjcxXSszOwogICAgICAgaWYobGVuZ3RoYml0c1tzeW1ib2wtMjcxXSA+IDApIHsKQEAgLTI3OTAsOSArMjg0Niw3IEBACiAKICAgICAgIGlmICgob2Zmc3N5bWJvbCA9IHJlYWRfbmV4dF9zeW1ib2woYSwgJnJhci0+b2Zmc2V0Y29kZSkpIDwgMCkKICAgICAgICAgZ290byBiYWRfZGF0YTsKLSAgICAgIGlmIChvZmZzc3ltYm9sID4gKGludCkoc2l6ZW9mKG9mZnNldGJhc2VzKS9zaXplb2Yob2Zmc2V0YmFzZXNbMF0pKSkKLSAgICAgICAgZ290byBiYWRfZGF0YTsKLSAgICAgIGlmIChvZmZzc3ltYm9sID4gKGludCkoc2l6ZW9mKG9mZnNldGJpdHMpL3NpemVvZihvZmZzZXRiaXRzWzBdKSkpCisgICAgICBpZiAob2Zmc3N5bWJvbCA+IG9mZnNldGJfbWluKQogICAgICAgICBnb3RvIGJhZF9kYXRhOwogICAgICAgb2ZmcyA9IG9mZnNldGJhc2VzW29mZnNzeW1ib2xdKzE7CiAgICAgICBpZihvZmZzZXRiaXRzW29mZnNzeW1ib2xdID4gMCkKQEAgLTI5MjgsMTIgKzI5ODIsMTQgQEAKICAgICBlbHNlIGlmICgqYXZhaWwgPT0gMCAmJiByYXItPm1haW5fZmxhZ3MgJiBNSERfVk9MVU1FICYmCiAgICAgICByYXItPmZpbGVfZmxhZ3MgJiBGSERfU1BMSVRfQUZURVIpCiAgICAgeworICAgICAgcmFyLT5maWxlbmFtZV9tdXN0X21hdGNoID0gMTsKICAgICAgIHJldCA9IGFyY2hpdmVfcmVhZF9mb3JtYXRfcmFyX3JlYWRfaGVhZGVyKGEsIGEtPmVudHJ5KTsKICAgICAgIGlmIChyZXQgPT0gKEFSQ0hJVkVfRU9GKSkKICAgICAgIHsKICAgICAgICAgcmFyLT5oYXNfZW5kYXJjX2hlYWRlciA9IDE7CiAgICAgICAgIHJldCA9IGFyY2hpdmVfcmVhZF9mb3JtYXRfcmFyX3JlYWRfaGVhZGVyKGEsIGEtPmVudHJ5KTsKICAgICAgIH0KKyAgICAgIHJhci0+ZmlsZW5hbWVfbXVzdF9tYXRjaCA9IDA7CiAgICAgICBpZiAocmV0ICE9IChBUkNISVZFX09LKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICByZXR1cm4gcmFyX3JlYWRfYWhlYWQoYSwgbWluLCBhdmFpbCk7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3JhcjUuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNDBjY2UKLS0tIC9kZXYvbnVsbAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3JhcjUuYwpAQCAtMCwwICsxLDQxMDMgQEAKKy8qLQorKiBDb3B5cmlnaHQgKGMpIDIwMTggR3J6ZWdvcnogQW50b25pYWsgKGh0dHA6Ly9hbnRvbmlhay5vcmcpCisqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUihTKSBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCisqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KKyogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKKyogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJhcmNoaXZlX3BsYXRmb3JtLmgiCisjaW5jbHVkZSAiYXJjaGl2ZV9lbmRpYW4uaCIKKworI2lmZGVmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgSEFWRV9aTElCX0gKKyNpbmNsdWRlIDxjbV96bGliLmg+IC8qIGNyYzMyICovCisjZW5kaWYKKyNpZmRlZiBIQVZFX0xJTUlUU19ICisjaW5jbHVkZSA8bGltaXRzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImFyY2hpdmUuaCIKKyNpZm5kZWYgSEFWRV9aTElCX0gKKyNpbmNsdWRlICJhcmNoaXZlX2NyYzMyLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImFyY2hpdmVfZW50cnkuaCIKKyNpbmNsdWRlICJhcmNoaXZlX2VudHJ5X2xvY2FsZS5oIgorI2luY2x1ZGUgImFyY2hpdmVfcHBtZDdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImFyY2hpdmVfZW50cnlfcHJpdmF0ZS5oIgorCisjaWZkZWYgSEFWRV9CTEFLRTJfSAorI2luY2x1ZGUgPGJsYWtlMi5oPgorI2Vsc2UKKyNpbmNsdWRlICJhcmNoaXZlX2JsYWtlMi5oIgorI2VuZGlmCisKKy8qI2RlZmluZSBDSEVDS19DUkNfT05fU09MSURfU0tJUCovCisvKiNkZWZpbmUgRE9OVF9GQUlMX09OX0NSQ19FUlJPUiovCisvKiNkZWZpbmUgREVCVUcqLworCisjZGVmaW5lIHJhcjVfbWluKGEsIGIpICgoKGEpID4gKGIpKSA/IChiKSA6IChhKSkKKyNkZWZpbmUgcmFyNV9tYXgoYSwgYikgKCgoYSkgPiAoYikpID8gKGEpIDogKGIpKQorI2RlZmluZSByYXI1X2NvdW50b2YoWCkgKChjb25zdCBzc2l6ZV90KSAoc2l6ZW9mKFgpIC8gc2l6ZW9mKCpYKSkpCisKKyNpZiBkZWZpbmVkIERFQlVHCisjZGVmaW5lIERFQlVHX0NPREUgaWYoMSkKKyNkZWZpbmUgTE9HKC4uLikgZG8geyBwcmludGYoInJhcjU6ICIgX19WQV9BUkdTX18pOyBwdXRzKCIiKTsgfSB3aGlsZSgwKQorI2Vsc2UKKyNkZWZpbmUgREVCVUdfQ09ERSBpZigwKQorI2VuZGlmCisKKy8qIFJlYWwgUkFSNSBtYWdpYyBudW1iZXIgaXM6CisgKgorICogMHg1MiwgMHg2MSwgMHg3MiwgMHgyMSwgMHgxYSwgMHgwNywgMHgwMSwgMHgwMAorICogIlJhciHihpLigKLimLrCt1x4MDAiCisgKgorICogUmV0cmlldmVkIHdpdGggYHJhcjVfc2lnbmF0dXJlKClgIGJ5IFhPUidpbmcgaXQgd2l0aCAweEExLCBiZWNhdXNlIEkgZG9uJ3QKKyAqIHdhbnQgdG8gcHV0IHRoaXMgbWFnaWMgc2VxdWVuY2UgaW4gZWFjaCBiaW5hcnkgdGhhdCB1c2VzIGxpYmFyY2hpdmUsIHNvCisgKiBhcHBsaWNhdGlvbnMgdGhhdCBzY2FuIHRocm91Z2ggdGhlIGZpbGUgZm9yIHRoaXMgbWFya2VyIHdvbid0IHRyaWdnZXIgb24KKyAqIHRoaXMgImZhbHNlIiBvbmUuCisgKgorICogVGhlIGFycmF5IGl0c2VsZiBpcyBkZWNyeXB0ZWQgaW4gYHJhcjVfaW5pdGAgZnVuY3Rpb24uICovCisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHJhcjVfc2lnbmF0dXJlX3hvcltdID0geyAyNDMsIDE5MiwgMjExLCAxMjgsIDE4NywgMTY2LCAxNjAsIDE2MSB9Oworc3RhdGljIGNvbnN0IHNpemVfdCBnX3VucGFja193aW5kb3dfc2l6ZSA9IDB4MjAwMDA7CisKKy8qIFRoZXNlIGNvdWxkIGhhdmUgYmVlbiBzdGF0aWMgY29uc3QncywgYnV0IHRoZXkgYXJlbid0LCBiZWNhdXNlIG9mCisgKiBWaXN1YWwgU3R1ZGlvLiAqLworI2RlZmluZSBNQVhfTkFNRV9JTl9DSEFSUyAyMDQ4CisjZGVmaW5lIE1BWF9OQU1FX0lOX0JZVEVTICg0ICogTUFYX05BTUVfSU5fQ0hBUlMpCisKK3N0cnVjdCBmaWxlX2hlYWRlciB7CisJc3NpemVfdCBieXRlc19yZW1haW5pbmc7CisJc3NpemVfdCB1bnBhY2tlZF9zaXplOworCWludDY0X3QgbGFzdF9vZmZzZXQ7ICAgICAgICAgLyogVXNlZCBpbiBzYW5pdHkgY2hlY2tzLiAqLworCWludDY0X3QgbGFzdF9zaXplOyAgICAgICAgICAgLyogVXNlZCBpbiBzYW5pdHkgY2hlY2tzLiAqLworCisJdWludDhfdCBzb2xpZCA6IDE7ICAgICAgICAgICAvKiBJcyB0aGlzIGEgc29saWQgc3RyZWFtPyAqLworCXVpbnQ4X3Qgc2VydmljZSA6IDE7ICAgICAgICAgLyogSXMgdGhpcyBmaWxlIGEgc2VydmljZSBkYXRhPyAqLworCXVpbnQ4X3QgZW9mIDogMTsgICAgICAgICAgICAgLyogRGlkIHdlIGZpbmlzaCB1bnBhY2tpbmcgdGhlIGZpbGU/ICovCisJdWludDhfdCBkaXIgOiAxOyAgICAgICAgICAgICAvKiBJcyB0aGlzIGZpbGUgZW50cnkgYSBkaXJlY3Rvcnk/ICovCisKKwkvKiBPcHRpb25hbCB0aW1lIGZpZWxkcy4gKi8KKwl1aW50NjRfdCBlX210aW1lOworCXVpbnQ2NF90IGVfY3RpbWU7CisJdWludDY0X3QgZV9hdGltZTsKKwl1aW50MzJfdCBlX3VuaXhfbnM7CisKKwkvKiBPcHRpb25hbCBoYXNoIGZpZWxkcy4gKi8KKwl1aW50MzJfdCBzdG9yZWRfY3JjMzI7CisJdWludDMyX3QgY2FsY3VsYXRlZF9jcmMzMjsKKwl1aW50OF90IGJsYWtlMnNwWzMyXTsKKwlibGFrZTJzcF9zdGF0ZSBiMnN0YXRlOworCWNoYXIgaGFzX2JsYWtlMjsKKworCS8qIE9wdGlvbmFsIHJlZGlyIGZpZWxkcyAqLworCXVpbnQ2NF90IHJlZGlyX3R5cGU7CisJdWludDY0X3QgcmVkaXJfZmxhZ3M7CisKKwlzc2l6ZV90IHNvbGlkX3dpbmRvd19zaXplOyAvKiBVc2VkIGluIGZpbGUgZm9ybWF0IGNoZWNrLiAqLworfTsKKworZW51bSBFWFRSQSB7CisJRVhfQ1JZUFQgPSAweDAxLAorCUVYX0hBU0ggPSAweDAyLAorCUVYX0hUSU1FID0gMHgwMywKKwlFWF9WRVJTSU9OID0gMHgwNCwKKwlFWF9SRURJUiA9IDB4MDUsCisJRVhfVU9XTkVSID0gMHgwNiwKKwlFWF9TVUJEQVRBID0gMHgwNworfTsKKworI2RlZmluZSBSRURJUl9TWU1MSU5LX0lTX0RJUgkxCisKK2VudW0gUkVESVJfVFlQRSB7CisJUkVESVJfVFlQRV9OT05FID0gMCwKKwlSRURJUl9UWVBFX1VOSVhTWU1MSU5LID0gMSwKKwlSRURJUl9UWVBFX1dJTlNZTUxJTksgPSAyLAorCVJFRElSX1RZUEVfSlVOQ1RJT04gPSAzLAorCVJFRElSX1RZUEVfSEFSRExJTksgPSA0LAorCVJFRElSX1RZUEVfRklMRUNPUFkgPSA1LAorfTsKKworI2RlZmluZQlPV05FUl9VU0VSX05BTUUJCTB4MDEKKyNkZWZpbmUJT1dORVJfR1JPVVBfTkFNRQkweDAyCisjZGVmaW5lCU9XTkVSX1VTRVJfVUlECQkweDA0CisjZGVmaW5lCU9XTkVSX0dST1VQX0dJRAkJMHgwOAorI2RlZmluZQlPV05FUl9NQVhOQU1FTEVOCTI1NgorCitlbnVtIEZJTFRFUl9UWVBFIHsKKwlGSUxURVJfREVMVEEgPSAwLCAgIC8qIEdlbmVyaWMgcGF0dGVybi4gKi8KKwlGSUxURVJfRTggICAgPSAxLCAgIC8qIEludGVsIHg4NiBjb2RlLiAqLworCUZJTFRFUl9FOEU5ICA9IDIsICAgLyogSW50ZWwgeDg2IGNvZGUuICovCisJRklMVEVSX0FSTSAgID0gMywgICAvKiBBUk0gY29kZS4gKi8KKwlGSUxURVJfQVVESU8gPSA0LCAgIC8qIEF1ZGlvIGZpbHRlciwgbm90IHVzZWQgaW4gUkFSdjUuICovCisJRklMVEVSX1JHQiAgID0gNSwgICAvKiBDb2xvciBwYWxldHRlLCBub3QgdXNlZCBpbiBSQVJ2NS4gKi8KKwlGSUxURVJfSVRBTklVTSA9IDYsIC8qIEludGVsJ3MgSXRhbml1bSwgbm90IHVzZWQgaW4gUkFSdjUuICovCisJRklMVEVSX1BQTSAgID0gNywgICAvKiBQcmVkaWN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcsIG5vdCB1c2VkIGluCisJCQkgICAgICAgUkFSdjUuICovCisJRklMVEVSX05PTkUgID0gOCwKK307CisKK3N0cnVjdCBmaWx0ZXJfaW5mbyB7CisJaW50IHR5cGU7CisJaW50IGNoYW5uZWxzOworCWludCBwb3NfcjsKKworCWludDY0X3QgYmxvY2tfc3RhcnQ7CisJc3NpemVfdCBibG9ja19sZW5ndGg7CisJdWludDE2X3Qgd2lkdGg7Cit9OworCitzdHJ1Y3QgZGF0YV9yZWFkeSB7CisJY2hhciB1c2VkOworCWNvbnN0IHVpbnQ4X3QqIGJ1ZjsKKwlzaXplX3Qgc2l6ZTsKKwlpbnQ2NF90IG9mZnNldDsKK307CisKK3N0cnVjdCBjZGVxdWUgeworCXVpbnQxNl90IGJlZ19wb3M7CisJdWludDE2X3QgZW5kX3BvczsKKwl1aW50MTZfdCBjYXBfbWFzazsKKwl1aW50MTZfdCBzaXplOworCXNpemVfdCogYXJyOworfTsKKworc3RydWN0IGRlY29kZV90YWJsZSB7CisJdWludDMyX3Qgc2l6ZTsKKwlpbnQzMl90IGRlY29kZV9sZW5bMTZdOworCXVpbnQzMl90IGRlY29kZV9wb3NbMTZdOworCXVpbnQzMl90IHF1aWNrX2JpdHM7CisJdWludDhfdCBxdWlja19sZW5bMSA8PCAxMF07CisJdWludDE2X3QgcXVpY2tfbnVtWzEgPDwgMTBdOworCXVpbnQxNl90IGRlY29kZV9udW1bMzA2XTsKK307CisKK3N0cnVjdCBjb21wX3N0YXRlIHsKKwkvKiBGbGFnIHVzZWQgdG8gc3BlY2lmeSBpZiB1bnBhY2tlciBuZWVkcyB0byByZWluaXRpYWxpemUgdGhlCisJICAgdW5jb21wcmVzc2lvbiBjb250ZXh0LiAqLworCXVpbnQ4X3QgaW5pdGlhbGl6ZWQgOiAxOworCisJLyogRmxhZyB1c2VkIHdoZW4gYXBwbHlpbmcgZmlsdGVycy4gKi8KKwl1aW50OF90IGFsbF9maWx0ZXJzX2FwcGxpZWQgOiAxOworCisJLyogRmxhZyB1c2VkIHRvIHNraXAgZmlsZSBjb250ZXh0IHJlaW5pdGlhbGl6YXRpb24sIHVzZWQgd2hlbiB1bnBhY2tlcgorCSAgIGlzIHNraXBwaW5nIHRocm91Z2ggZGlmZmVyZW50IG11bHRpdm9sdW1lIGFyY2hpdmVzLiAqLworCXVpbnQ4X3Qgc3dpdGNoX211bHRpdm9sdW1lIDogMTsKKworCS8qIEZsYWcgdXNlZCB0byBzcGVjaWZ5IGlmIHVucGFja2VyIGhhcyBwcm9jZXNzZWQgdGhlIHdob2xlIGRhdGEgYmxvY2sKKwkgICBvciBqdXN0IGEgcGFydCBvZiBpdC4gKi8KKwl1aW50OF90IGJsb2NrX3BhcnNpbmdfZmluaXNoZWQgOiAxOworCisJc2lnbmVkIGludCBub3R1c2VkIDogNDsKKworCWludCBmbGFnczsgICAgICAgICAgICAgICAgICAgLyogVW5jb21wcmVzc2lvbiBmbGFncy4gKi8KKwlpbnQgbWV0aG9kOyAgICAgICAgICAgICAgICAgIC8qIFVuY29tcHJlc3Npb24gYWxnb3JpdGhtIG1ldGhvZC4gKi8KKwlpbnQgdmVyc2lvbjsgICAgICAgICAgICAgICAgIC8qIFVuY29tcHJlc3Npb24gYWxnb3JpdGhtIHZlcnNpb24uICovCisJc3NpemVfdCB3aW5kb3dfc2l6ZTsgICAgICAgICAvKiBTaXplIG9mIHdpbmRvd19idWYuICovCisJdWludDhfdCogd2luZG93X2J1ZjsgICAgICAgICAvKiBDaXJjdWxhciBidWZmZXIgdXNlZCBkdXJpbmcKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29tcHJlc3Npb24uICovCisJdWludDhfdCogZmlsdGVyZWRfYnVmOyAgICAgICAvKiBCdWZmZXIgdXNlZCB3aGVuIGFwcGx5aW5nIGZpbHRlcnMuICovCisJY29uc3QgdWludDhfdCogYmxvY2tfYnVmOyAgICAvKiBCdWZmZXIgdXNlZCB3aGVuIG1lcmdpbmcgYmxvY2tzLiAqLworCXNpemVfdCB3aW5kb3dfbWFzazsgICAgICAgICAgLyogQ29udmVuaWVuY2UgZmllbGQ7IHdpbmRvd19zaXplIC0gMS4gKi8KKwlpbnQ2NF90IHdyaXRlX3B0cjsgICAgICAgICAgIC8qIFRoaXMgYW1vdW50IG9mIGRhdGEgaGFzIGJlZW4gdW5wYWNrZWQKKwkJCQkJaW4gdGhlIHdpbmRvdyBidWZmZXIuICovCisJaW50NjRfdCBsYXN0X3dyaXRlX3B0cjsgICAgICAvKiBUaGlzIGFtb3VudCBvZiBkYXRhIGhhcyBiZWVuIHN0b3JlZCBpbgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG91dHB1dCBmaWxlLiAqLworCWludDY0X3QgbGFzdF91bnN0b3JlX3B0cjsgICAgLyogQ291bnRlciBvZiBieXRlcyBleHRyYWN0ZWQgZHVyaW5nCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN0b3JpbmcuIFRoaXMgaXMgc2VwYXJhdGUgZnJvbQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF93cml0ZV9wdHIgYmVjYXVzZSBvZiBob3cgU0VSVklDRQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSBibG9ja3MgYXJlIGhhbmRsZWQgZHVyaW5nIHNraXBwaW5nCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBzb2xpZCBtdWx0aWFyY2hpdmUgYXJjaGl2ZXMuICovCisJaW50NjRfdCBzb2xpZF9vZmZzZXQ7ICAgICAgICAvKiBBZGRpdGlvbmFsIG9mZnNldCBpbnNpZGUgdGhlIHdpbmRvdworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLCB1c2VkIGluIHVucGFja2luZyBzb2xpZAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZXMuICovCisJc3NpemVfdCBjdXJfYmxvY2tfc2l6ZTsgICAgICAvKiBTaXplIG9mIGN1cnJlbnQgZGF0YSBibG9jay4gKi8KKwlpbnQgbGFzdF9sZW47ICAgICAgICAgICAgICAgIC8qIEZsYWcgdXNlZCBpbiBsenNzIGRlY29tcHJlc3Npb24uICovCisKKwkvKiBEZWNvZGUgdGFibGVzIHVzZWQgZHVyaW5nIGx6c3MgdW5jb21wcmVzc2lvbi4gKi8KKworI2RlZmluZSBIVUZGX0JDIDIwCisJc3RydWN0IGRlY29kZV90YWJsZSBiZDsgICAgICAvKiBodWZmbWFuIGJpdCBsZW5ndGhzICovCisjZGVmaW5lIEhVRkZfTkMgMzA2CisJc3RydWN0IGRlY29kZV90YWJsZSBsZDsgICAgICAvKiBsaXRlcmFscyAqLworI2RlZmluZSBIVUZGX0RDIDY0CisJc3RydWN0IGRlY29kZV90YWJsZSBkZDsgICAgICAvKiBkaXN0YW5jZXMgKi8KKyNkZWZpbmUgSFVGRl9MREMgMTYKKwlzdHJ1Y3QgZGVjb2RlX3RhYmxlIGxkZDsgICAgIC8qIGxvd2VyIGJpdHMgb2YgZGlzdGFuY2VzICovCisjZGVmaW5lIEhVRkZfUkMgNDQKKwlzdHJ1Y3QgZGVjb2RlX3RhYmxlIHJkOyAgICAgIC8qIHJlcGVhdGluZyBkaXN0YW5jZXMgKi8KKyNkZWZpbmUgSFVGRl9UQUJMRV9TSVpFIChIVUZGX05DICsgSFVGRl9EQyArIEhVRkZfUkMgKyBIVUZGX0xEQykKKworCS8qIENpcmN1bGFyIGRlcXVlIGZvciBzdG9yaW5nIGZpbHRlcnMuICovCisJc3RydWN0IGNkZXF1ZSBmaWx0ZXJzOworCWludDY0X3QgbGFzdF9ibG9ja19zdGFydDsgICAgLyogVXNlZCBmb3Igc2FuaXR5IGNoZWNraW5nLiAqLworCXNzaXplX3QgbGFzdF9ibG9ja19sZW5ndGg7ICAgLyogVXNlZCBmb3Igc2FuaXR5IGNoZWNraW5nLiAqLworCisJLyogRGlzdGFuY2UgY2FjaGUgdXNlZCBkdXJpbmcgbHpzcyB1bmNvbXByZXNzaW9uLiAqLworCWludCBkaXN0X2NhY2hlWzRdOworCisJLyogRGF0YSBidWZmZXIgc3RhY2suICovCisJc3RydWN0IGRhdGFfcmVhZHkgZHJlYWR5WzJdOworfTsKKworLyogQml0IHJlYWRlciBzdGF0ZS4gKi8KK3N0cnVjdCBiaXRfcmVhZGVyIHsKKwlpbnQ4X3QgYml0X2FkZHI7ICAgIC8qIEN1cnJlbnQgYml0IHBvaW50ZXIgaW5zaWRlIGN1cnJlbnQgYnl0ZS4gKi8KKwlpbnQgaW5fYWRkcjsgICAgICAgIC8qIEN1cnJlbnQgYnl0ZSBwb2ludGVyLiAqLworfTsKKworLyogUkFSdjUgYmxvY2sgaGVhZGVyIHN0cnVjdHVyZS4gVXNlIGJmXyogZnVuY3Rpb25zIHRvIGdldCB2YWx1ZXMgZnJvbQorICogYmxvY2tfZmxhZ3NfdTggZmllbGQuIEkuZS4gYmZfYnl0ZV9jb3VudCwgZXRjLiAqLworc3RydWN0IGNvbXByZXNzZWRfYmxvY2tfaGVhZGVyIHsKKwkvKiBibG9ja19mbGFnc191OCBjb250YWluIGZpZWxkcyBlbmNvZGVkIGluIGxpdHRsZS1lbmRpYW4gYml0ZmllbGQ6CisJICoKKwkgKiAtIHRhYmxlIHByZXNlbnQgZmxhZyAoc2hyIDcsIGFuZCAxKSwKKwkgKiAtIGxhc3QgYmxvY2sgZmxhZyAgICAoc2hyIDYsIGFuZCAxKSwKKwkgKiAtIGJ5dGVfY291bnQgICAgICAgICAoc2hyIDMsIGFuZCA3KSwKKwkgKiAtIGJpdF9zaXplICAgICAgICAgICAoc2hyIDAsIGFuZCA3KS4KKwkgKi8KKwl1aW50OF90IGJsb2NrX2ZsYWdzX3U4OworCXVpbnQ4X3QgYmxvY2tfY2tzdW07Cit9OworCisvKiBSQVJ2NSBtYWluIGhlYWRlciBzdHJ1Y3R1cmUuICovCitzdHJ1Y3QgbWFpbl9oZWFkZXIgeworCS8qIERvZXMgdGhlIGFyY2hpdmUgY29udGFpbiBzb2xpZCBzdHJlYW1zPyAqLworCXVpbnQ4X3Qgc29saWQgOiAxOworCisJLyogSWYgdGhpcyBhIG11bHRpLWZpbGUgYXJjaGl2ZT8gKi8KKwl1aW50OF90IHZvbHVtZSA6IDE7CisJdWludDhfdCBlbmRhcmMgOiAxOworCXVpbnQ4X3Qgbm90dXNlZCA6IDU7CisKKwl1bnNpZ25lZCBpbnQgdm9sX25vOworfTsKKworc3RydWN0IGdlbmVyaWNfaGVhZGVyIHsKKwl1aW50OF90IHNwbGl0X2FmdGVyIDogMTsKKwl1aW50OF90IHNwbGl0X2JlZm9yZSA6IDE7CisJdWludDhfdCBwYWRkaW5nIDogNjsKKwlpbnQgc2l6ZTsKKwlpbnQgbGFzdF9oZWFkZXJfaWQ7Cit9OworCitzdHJ1Y3QgbXVsdGl2b2x1bWUgeworCXVuc2lnbmVkIGludCBleHBlY3RlZF92b2xfbm87CisJdWludDhfdCogcHVzaF9idWY7Cit9OworCisvKiBNYWluIGNvbnRleHQgc3RydWN0dXJlLiAqLworc3RydWN0IHJhcjUgeworCWludCBoZWFkZXJfaW5pdGlhbGl6ZWQ7CisKKwkvKiBTZXQgdG8gMSBpZiBjdXJyZW50IGZpbGUgaXMgcG9zaXRpb25lZCBBRlRFUiB0aGUgbWFnaWMgdmFsdWUKKwkgKiBvZiB0aGUgYXJjaGl2ZSBmaWxlLiBUaGlzIGlzIHVzZWQgaW4gaGVhZGVyIHJlYWRpbmcgZnVuY3Rpb25zLiAqLworCWludCBza2lwcGVkX21hZ2ljOworCisJLyogU2V0IHRvIG5vdCB6ZXJvIGlmIHdlJ3JlIGluIHNraXAgbW9kZSAoZWl0aGVyIGJ5IGNhbGxpbmcKKwkgKiByYXI1X2RhdGFfc2tpcCBmdW5jdGlvbiBvciB3aGVuIHNraXBwaW5nIG92ZXIgc29saWQgc3RyZWFtcykuCisJICogU2V0IHRvIDAgd2hlbiBpbiAqIGV4dHJhY3Rpb24gbW9kZS4gVGhpcyBpcyB1c2VkIGR1cmluZyBjaGVja3N1bQorCSAqIGNhbGN1bGF0aW9uIGZ1bmN0aW9ucy4gKi8KKwlpbnQgc2tpcF9tb2RlOworCisJLyogU2V0IHRvIG5vdCB6ZXJvIGlmIHdlJ3JlIGluIGJsb2NrIG1lcmdpbmcgbW9kZSAoaS5lLiB3aGVuIHN3aXRjaGluZworCSAqIHRvIGFub3RoZXIgZmlsZSBpbiBtdWx0aXZvbHVtZSBhcmNoaXZlLCBsYXN0IGJsb2NrIGZyb20gMXN0IGFyY2hpdmUKKwkgKiBuZWVkcyB0byBiZSBtZXJnZWQgd2l0aCAxc3QgYmxvY2sgZnJvbSAybmQgYXJjaGl2ZSkuIFRoaXMgZmxhZworCSAqIGd1YXJkcyBhZ2FpbnN0IHJlY3Vyc2l2ZSB1c2Ugb2YgdGhlIG1lcmdpbmcgZnVuY3Rpb24sIHdoaWNoIGRvZXNuJ3QKKwkgKiBzdXBwb3J0IHJlY3Vyc2l2ZSBjYWxscy4gKi8KKwlpbnQgbWVyZ2VfbW9kZTsKKworCS8qIEFuIG9mZnNldCB0byBRdWlja09wZW4gbGlzdC4gVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgdW5wYWNrZXIsCisJICogYmVjYXVzZSB3ZSdyZSBmb2N1c2luZyBvbiBzdHJlYW1pbmcgaW50ZXJmYWNlLiBRdWlja09wZW4gaXMgZGVzaWduZWQKKwkgKiB0byBtYWtlIHRoaW5ncyBxdWlja2VyIGZvciBub24tc3RyZWFtIGludGVyZmFjZXMsIHNvIGl0J3Mgbm90IG91cgorCSAqIHVzZSBjYXNlLiAqLworCXVpbnQ2NF90IHFsaXN0X29mZnNldDsKKworCS8qIEFuIG9mZnNldCB0byBhZGRpdGlvbmFsIFJlY292ZXJ5IGRhdGEuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzCisJICogdW5wYWNrZXIuIFJlY292ZXJ5IGRhdGEgYXJlIGFkZGl0aW9uYWwgUmVlZC1Tb2xvbW9uIGNvZGVzIHRoYXQgY291bGQKKwkgKiBiZSB1c2VkIHRvIGNhbGN1bGF0ZSBieXRlcyB0aGF0IGFyZSBtaXNzaW5nIGluIGFyY2hpdmUgb3IgYXJlCisJICogY29ycnVwdGVkLiAqLworCXVpbnQ2NF90IHJyX29mZnNldDsKKworCS8qIFZhcmlvdXMgY29udGV4dCB2YXJpYWJsZXMgZ3JvdXBlZCB0byBkaWZmZXJlbnQgc3RydWN0dXJlcy4gKi8KKwlzdHJ1Y3QgZ2VuZXJpY19oZWFkZXIgZ2VuZXJpYzsKKwlzdHJ1Y3QgbWFpbl9oZWFkZXIgbWFpbjsKKwlzdHJ1Y3QgY29tcF9zdGF0ZSBjc3RhdGU7CisJc3RydWN0IGZpbGVfaGVhZGVyIGZpbGU7CisJc3RydWN0IGJpdF9yZWFkZXIgYml0czsKKwlzdHJ1Y3QgbXVsdGl2b2x1bWUgdm9sOworCisJLyogVGhlIGhlYWRlciBvZiBjdXJyZW50bHkgcHJvY2Vzc2VkIFJBUnY1IGJsb2NrLiBVc2VkIGluIG1haW4KKwkgKiBkZWNvbXByZXNzaW9uIGxvZ2ljIGxvb3AuICovCisJc3RydWN0IGNvbXByZXNzZWRfYmxvY2tfaGVhZGVyIGxhc3RfYmxvY2tfaGRyOworfTsKKworLyogRm9yd2FyZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuICovCisKK3N0YXRpYyB2b2lkIHJhcjVfc2lnbmF0dXJlKGNoYXIgKmJ1Zik7CitzdGF0aWMgaW50IHZlcmlmeV9nbG9iYWxfY2hlY2tzdW1zKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEpOworc3RhdGljIGludCByYXI1X3JlYWRfZGF0YV9za2lwKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEpOworc3RhdGljIGludCBwdXNoX2RhdGFfcmVhZHkoc3RydWN0IGFyY2hpdmVfcmVhZCogYSwgc3RydWN0IHJhcjUqIHJhciwKKwljb25zdCB1aW50OF90KiBidWYsIHNpemVfdCBzaXplLCBpbnQ2NF90IG9mZnNldCk7CisKKy8qIENERV94eHggPSBDaXJjdWxhciBEb3VibGUgRW5kZWQgKFF1ZXVlKSByZXR1cm4gdmFsdWVzLiAqLworZW51bSBDREVfUkVUVVJOX1ZBTFVFUyB7CisJQ0RFX09LLCBDREVfQUxMT0MsIENERV9QQVJBTSwgQ0RFX09VVF9PRl9CT1VORFMsCit9OworCisvKiBDbGVhcnMgdGhlIGNvbnRlbnRzIG9mIHRoaXMgY2lyY3VsYXIgZGVxdWUuICovCitzdGF0aWMgdm9pZCBjZGVxdWVfY2xlYXIoc3RydWN0IGNkZXF1ZSogZCkgeworCWQtPnNpemUgPSAwOworCWQtPmJlZ19wb3MgPSAwOworCWQtPmVuZF9wb3MgPSAwOworfQorCisvKiBDcmVhdGVzIGEgbmV3IGNpcmN1bGFyIGRlcXVlIG9iamVjdC4gQ2FwYWNpdHkgbXVzdCBiZSBwb3dlciBvZiAyOiA4LCAxNiwgMzIsCisgKiA2NCwgMjU2LCBldGMuIFdoZW4gdGhlIHVzZXIgd2lsbCBhZGQgYW5vdGhlciBpdGVtIGFib3ZlIGN1cnJlbnQgY2FwYWNpdHksCisgKiB0aGUgY2lyY3VsYXIgZGVxdWUgd2lsbCBvdmVyd3JpdGUgdGhlIG9sZGVzdCBlbnRyeS4gKi8KK3N0YXRpYyBpbnQgY2RlcXVlX2luaXQoc3RydWN0IGNkZXF1ZSogZCwgaW50IG1heF9jYXBhY2l0eV9wb3dlcl9vZl8yKSB7CisJaWYoZCA9PSBOVUxMIHx8IG1heF9jYXBhY2l0eV9wb3dlcl9vZl8yID09IDApCisJCXJldHVybiBDREVfUEFSQU07CisKKwlkLT5jYXBfbWFzayA9IG1heF9jYXBhY2l0eV9wb3dlcl9vZl8yIC0gMTsKKwlkLT5hcnIgPSBOVUxMOworCisJaWYoKG1heF9jYXBhY2l0eV9wb3dlcl9vZl8yICYgZC0+Y2FwX21hc2spICE9IDApCisJCXJldHVybiBDREVfUEFSQU07CisKKwljZGVxdWVfY2xlYXIoZCk7CisJZC0+YXJyID0gbWFsbG9jKHNpemVvZih2b2lkKikgKiBtYXhfY2FwYWNpdHlfcG93ZXJfb2ZfMik7CisKKwlyZXR1cm4gZC0+YXJyID8gQ0RFX09LIDogQ0RFX0FMTE9DOworfQorCisvKiBSZXR1cm4gdGhlIGN1cnJlbnQgc2l6ZSAobm90IGNhcGFjaXR5KSBvZiBjaXJjdWxhciBkZXF1ZSBgZGAuICovCitzdGF0aWMgc2l6ZV90IGNkZXF1ZV9zaXplKHN0cnVjdCBjZGVxdWUqIGQpIHsKKwlyZXR1cm4gZC0+c2l6ZTsKK30KKworLyogUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiBjdXJyZW50IGNpcmN1bGFyIGRlcXVlLiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbgorICogZG9lc24ndCBwZXJmb3JtIGFueSBib3VuZHMgY2hlY2tpbmcuIElmIHlvdSBuZWVkIGJvdW5kcyBjaGVja2luZywgdXNlCisgKiBgY2RlcXVlX2Zyb250KClgIGZ1bmN0aW9uIGluc3RlYWQuICovCitzdGF0aWMgdm9pZCBjZGVxdWVfZnJvbnRfZmFzdChzdHJ1Y3QgY2RlcXVlKiBkLCB2b2lkKiogdmFsdWUpIHsKKwkqdmFsdWUgPSAodm9pZCopIGQtPmFycltkLT5iZWdfcG9zXTsKK30KKworLyogUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiBjdXJyZW50IGNpcmN1bGFyIGRlcXVlLiBUaGlzIGZ1bmN0aW9uCisgKiBwZXJmb3JtcyBib3VuZHMgY2hlY2tpbmcuICovCitzdGF0aWMgaW50IGNkZXF1ZV9mcm9udChzdHJ1Y3QgY2RlcXVlKiBkLCB2b2lkKiogdmFsdWUpIHsKKwlpZihkLT5zaXplID4gMCkgeworCQljZGVxdWVfZnJvbnRfZmFzdChkLCB2YWx1ZSk7CisJCXJldHVybiBDREVfT0s7CisJfSBlbHNlCisJCXJldHVybiBDREVfT1VUX09GX0JPVU5EUzsKK30KKworLyogUHVzaGVzIGEgbmV3IGVsZW1lbnQgaW50byB0aGUgZW5kIG9mIHRoaXMgY2lyY3VsYXIgZGVxdWUgb2JqZWN0LiBJZiBjdXJyZW50CisgKiBzaXplIHdpbGwgZXhjZWVkIGNhcGFjaXR5LCB0aGUgb2xkZXN0IGVsZW1lbnQgd2lsbCBiZSBvdmVyd3JpdHRlbi4gKi8KK3N0YXRpYyBpbnQgY2RlcXVlX3B1c2hfYmFjayhzdHJ1Y3QgY2RlcXVlKiBkLCB2b2lkKiBpdGVtKSB7CisJaWYoZCA9PSBOVUxMKQorCQlyZXR1cm4gQ0RFX1BBUkFNOworCisJaWYoZC0+c2l6ZSA9PSBkLT5jYXBfbWFzayArIDEpCisJCXJldHVybiBDREVfT1VUX09GX0JPVU5EUzsKKworCWQtPmFycltkLT5lbmRfcG9zXSA9IChzaXplX3QpIGl0ZW07CisJZC0+ZW5kX3BvcyA9IChkLT5lbmRfcG9zICsgMSkgJiBkLT5jYXBfbWFzazsKKwlkLT5zaXplKys7CisKKwlyZXR1cm4gQ0RFX09LOworfQorCisvKiBQb3BzIGEgZnJvbnQgZWxlbWVudCBvZiB0aGlzIGNpcmN1bGFyIGRlcXVlIG9iamVjdCBhbmQgcmV0dXJucyBpdHMgdmFsdWUuCisgKiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgcGVyZm9ybSBhbnkgYm91bmRzIGNoZWNraW5nLiAqLworc3RhdGljIHZvaWQgY2RlcXVlX3BvcF9mcm9udF9mYXN0KHN0cnVjdCBjZGVxdWUqIGQsIHZvaWQqKiB2YWx1ZSkgeworCSp2YWx1ZSA9ICh2b2lkKikgZC0+YXJyW2QtPmJlZ19wb3NdOworCWQtPmJlZ19wb3MgPSAoZC0+YmVnX3BvcyArIDEpICYgZC0+Y2FwX21hc2s7CisJZC0+c2l6ZS0tOworfQorCisvKiBQb3BzIGEgZnJvbnQgZWxlbWVudCBvZiB0aGlzIGNpcmN1bGFyIGRlcXVlIG9iamVjdCBhbmQgcmV0dXJucyBpdHMgdmFsdWUuCisgKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGJvdW5kcyBjaGVja2luZy4gKi8KK3N0YXRpYyBpbnQgY2RlcXVlX3BvcF9mcm9udChzdHJ1Y3QgY2RlcXVlKiBkLCB2b2lkKiogdmFsdWUpIHsKKwlpZighZCB8fCAhdmFsdWUpCisJCXJldHVybiBDREVfUEFSQU07CisKKwlpZihkLT5zaXplID09IDApCisJCXJldHVybiBDREVfT1VUX09GX0JPVU5EUzsKKworCWNkZXF1ZV9wb3BfZnJvbnRfZmFzdChkLCB2YWx1ZSk7CisJcmV0dXJuIENERV9PSzsKK30KKworLyogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY2FzdCBmaWx0ZXJfaW5mbyoqIHRvIHZvaWQgKiouICovCitzdGF0aWMgdm9pZCoqIGNkZXF1ZV9maWx0ZXJfcChzdHJ1Y3QgZmlsdGVyX2luZm8qKiBmKSB7CisJcmV0dXJuICh2b2lkKiopIChzaXplX3QpIGY7Cit9CisKKy8qIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNhc3QgZmlsdGVyX2luZm8qIHRvIHZvaWQgKi4gKi8KK3N0YXRpYyB2b2lkKiBjZGVxdWVfZmlsdGVyKHN0cnVjdCBmaWx0ZXJfaW5mbyogZikgeworCXJldHVybiAodm9pZCoqKSAoc2l6ZV90KSBmOworfQorCisvKiBEZXN0cm95cyB0aGlzIGNpcmN1bGFyIGRlcXVlIG9iamVjdC4gRGVhbGxvY2F0ZXMgdGhlIG1lbW9yeSBvZiB0aGUKKyAqIGNvbGxlY3Rpb24gYnVmZmVyLCBidXQgZG9lc24ndCBkZWFsbG9jYXRlIHRoZSBtZW1vcnkgb2YgYW55IHBvaW50ZXIgcGFzc2VkCisgKiB0byB0aGlzIGRlcXVlIGFzIGEgdmFsdWUuICovCitzdGF0aWMgdm9pZCBjZGVxdWVfZnJlZShzdHJ1Y3QgY2RlcXVlKiBkKSB7CisJaWYoIWQpCisJCXJldHVybjsKKworCWlmKCFkLT5hcnIpCisJCXJldHVybjsKKworCWZyZWUoZC0+YXJyKTsKKworCWQtPmFyciA9IE5VTEw7CisJZC0+YmVnX3BvcyA9IC0xOworCWQtPmVuZF9wb3MgPSAtMTsKKwlkLT5jYXBfbWFzayA9IDA7Cit9CisKK3N0YXRpYyBpbmxpbmUKK3VpbnQ4X3QgYmZfYml0X3NpemUoY29uc3Qgc3RydWN0IGNvbXByZXNzZWRfYmxvY2tfaGVhZGVyKiBoZHIpIHsKKwlyZXR1cm4gaGRyLT5ibG9ja19mbGFnc191OCAmIDc7Cit9CisKK3N0YXRpYyBpbmxpbmUKK3VpbnQ4X3QgYmZfYnl0ZV9jb3VudChjb25zdCBzdHJ1Y3QgY29tcHJlc3NlZF9ibG9ja19oZWFkZXIqIGhkcikgeworCXJldHVybiAoaGRyLT5ibG9ja19mbGFnc191OCA+PiAzKSAmIDc7Cit9CisKK3N0YXRpYyBpbmxpbmUKK3VpbnQ4X3QgYmZfaXNfdGFibGVfcHJlc2VudChjb25zdCBzdHJ1Y3QgY29tcHJlc3NlZF9ibG9ja19oZWFkZXIqIGhkcikgeworCXJldHVybiAoaGRyLT5ibG9ja19mbGFnc191OCA+PiA3KSAmIDE7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHJhcjUqIGdldF9jb250ZXh0KHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEpIHsKKwlyZXR1cm4gKHN0cnVjdCByYXI1KikgYS0+Zm9ybWF0LT5kYXRhOworfQorCisvKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdXNlZCBieSBmaWx0ZXIgaW1wbGVtZW50YXRpb25zLiAqLworc3RhdGljIHZvaWQgY2lyY3VsYXJfbWVtY3B5KHVpbnQ4X3QqIGRzdCwgdWludDhfdCogd2luZG93LCBjb25zdCB1aW50NjRfdCBtYXNrLAorICAgIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKQoreworCWlmKChzdGFydCAmIG1hc2spID4gKGVuZCAmIG1hc2spKSB7CisJCXNzaXplX3QgbGVuMSA9IG1hc2sgKyAxIC0gKHN0YXJ0ICYgbWFzayk7CisJCXNzaXplX3QgbGVuMiA9IGVuZCAmIG1hc2s7CisKKwkJbWVtY3B5KGRzdCwgJndpbmRvd1tzdGFydCAmIG1hc2tdLCBsZW4xKTsKKwkJbWVtY3B5KGRzdCArIGxlbjEsIHdpbmRvdywgbGVuMik7CisJfSBlbHNlIHsKKwkJbWVtY3B5KGRzdCwgJndpbmRvd1tzdGFydCAmIG1hc2tdLCAoc2l6ZV90KSAoZW5kIC0gc3RhcnQpKTsKKwl9Cit9CisKK3N0YXRpYyB1aW50MzJfdCByZWFkX2ZpbHRlcl9kYXRhKHN0cnVjdCByYXI1KiByYXIsIHVpbnQzMl90IG9mZnNldCkgeworCXVpbnQ4X3QgbGluZWFyX2J1Zls0XTsKKwljaXJjdWxhcl9tZW1jcHkobGluZWFyX2J1ZiwgcmFyLT5jc3RhdGUud2luZG93X2J1ZiwKKwkgICAgcmFyLT5jc3RhdGUud2luZG93X21hc2ssIG9mZnNldCwgb2Zmc2V0ICsgNCk7CisJcmV0dXJuIGFyY2hpdmVfbGUzMmRlYyhsaW5lYXJfYnVmKTsKK30KKworc3RhdGljIHZvaWQgd3JpdGVfZmlsdGVyX2RhdGEoc3RydWN0IHJhcjUqIHJhciwgdWludDMyX3Qgb2Zmc2V0LAorICAgIHVpbnQzMl90IHZhbHVlKQoreworCWFyY2hpdmVfbGUzMmVuYygmcmFyLT5jc3RhdGUuZmlsdGVyZWRfYnVmW29mZnNldF0sIHZhbHVlKTsKK30KKworLyogQWxsb2NhdGVzIGEgbmV3IGZpbHRlciBkZXNjcmlwdG9yIGFuZCBhZGRzIGl0IHRvIHRoZSBmaWx0ZXIgYXJyYXkuICovCitzdGF0aWMgc3RydWN0IGZpbHRlcl9pbmZvKiBhZGRfbmV3X2ZpbHRlcihzdHJ1Y3QgcmFyNSogcmFyKSB7CisJc3RydWN0IGZpbHRlcl9pbmZvKiBmID0KKwkJKHN0cnVjdCBmaWx0ZXJfaW5mbyopIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGZpbHRlcl9pbmZvKSk7CisKKwlpZighZikgeworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwljZGVxdWVfcHVzaF9iYWNrKCZyYXItPmNzdGF0ZS5maWx0ZXJzLCBjZGVxdWVfZmlsdGVyKGYpKTsKKwlyZXR1cm4gZjsKK30KKworc3RhdGljIGludCBydW5fZGVsdGFfZmlsdGVyKHN0cnVjdCByYXI1KiByYXIsIHN0cnVjdCBmaWx0ZXJfaW5mbyogZmx0KSB7CisJaW50IGk7CisJc3NpemVfdCBkZXN0X3Bvcywgc3JjX3BvcyA9IDA7CisKKwlmb3IoaSA9IDA7IGkgPCBmbHQtPmNoYW5uZWxzOyBpKyspIHsKKwkJdWludDhfdCBwcmV2X2J5dGUgPSAwOworCQlmb3IoZGVzdF9wb3MgPSBpOworCQkJCWRlc3RfcG9zIDwgZmx0LT5ibG9ja19sZW5ndGg7CisJCQkJZGVzdF9wb3MgKz0gZmx0LT5jaGFubmVscykKKwkJeworCQkJdWludDhfdCBieXRlOworCisJCQlieXRlID0gcmFyLT5jc3RhdGUud2luZG93X2J1ZlsKKwkJCSAgICAocmFyLT5jc3RhdGUuc29saWRfb2Zmc2V0ICsgZmx0LT5ibG9ja19zdGFydCArCisJCQkgICAgc3JjX3BvcykgJiByYXItPmNzdGF0ZS53aW5kb3dfbWFza107CisKKwkJCXByZXZfYnl0ZSAtPSBieXRlOworCQkJcmFyLT5jc3RhdGUuZmlsdGVyZWRfYnVmW2Rlc3RfcG9zXSA9IHByZXZfYnl0ZTsKKwkJCXNyY19wb3MrKzsKKwkJfQorCX0KKworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgaW50IHJ1bl9lOGU5X2ZpbHRlcihzdHJ1Y3QgcmFyNSogcmFyLCBzdHJ1Y3QgZmlsdGVyX2luZm8qIGZsdCwKKwkJaW50IGV4dGVuZGVkKQoreworCWNvbnN0IHVpbnQzMl90IGZpbGVfc2l6ZSA9IDB4MTAwMDAwMDsKKwlzc2l6ZV90IGk7CisKKwljaXJjdWxhcl9tZW1jcHkocmFyLT5jc3RhdGUuZmlsdGVyZWRfYnVmLAorCSAgICByYXItPmNzdGF0ZS53aW5kb3dfYnVmLCByYXItPmNzdGF0ZS53aW5kb3dfbWFzaywKKwkgICAgcmFyLT5jc3RhdGUuc29saWRfb2Zmc2V0ICsgZmx0LT5ibG9ja19zdGFydCwKKwkgICAgcmFyLT5jc3RhdGUuc29saWRfb2Zmc2V0ICsgZmx0LT5ibG9ja19zdGFydCArIGZsdC0+YmxvY2tfbGVuZ3RoKTsKKworCWZvcihpID0gMDsgaSA8IGZsdC0+YmxvY2tfbGVuZ3RoIC0gNDspIHsKKwkJdWludDhfdCBiID0gcmFyLT5jc3RhdGUud2luZG93X2J1ZlsKKwkJICAgIChyYXItPmNzdGF0ZS5zb2xpZF9vZmZzZXQgKyBmbHQtPmJsb2NrX3N0YXJ0ICsKKwkJICAgIGkrKykgJiByYXItPmNzdGF0ZS53aW5kb3dfbWFza107CisKKwkJLyoKKwkJICogMHhFOCA9IHg4NidzIGNhbGwgPHJlbGF0aXZlX2FkZHJfdWludDMyPiAoZnVuY3Rpb24gY2FsbCkKKwkJICogMHhFOSA9IHg4NidzIGptcCA8cmVsYXRpdmVfYWRkcl91aW50MzI+ICh1bmNvbmRpdGlvbmFsIGp1bXApCisJCSAqLworCQlpZihiID09IDB4RTggfHwgKGV4dGVuZGVkICYmIGIgPT0gMHhFOSkpIHsKKworCQkJdWludDMyX3QgYWRkcjsKKwkJCXVpbnQzMl90IG9mZnNldCA9IChpICsgZmx0LT5ibG9ja19zdGFydCkgJSBmaWxlX3NpemU7CisKKwkJCWFkZHIgPSByZWFkX2ZpbHRlcl9kYXRhKHJhciwKKwkJCSAgICAodWludDMyX3QpKHJhci0+Y3N0YXRlLnNvbGlkX29mZnNldCArCisJCQkgICAgZmx0LT5ibG9ja19zdGFydCArIGkpICYgcmFyLT5jc3RhdGUud2luZG93X21hc2spOworCisJCQlpZihhZGRyICYgMHg4MDAwMDAwMCkgeworCQkJCWlmKCgoYWRkciArIG9mZnNldCkgJiAweDgwMDAwMDAwKSA9PSAwKSB7CisJCQkJCXdyaXRlX2ZpbHRlcl9kYXRhKHJhciwgKHVpbnQzMl90KWksCisJCQkJCSAgICBhZGRyICsgZmlsZV9zaXplKTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWlmKChhZGRyIC0gZmlsZV9zaXplKSAmIDB4ODAwMDAwMDApIHsKKwkJCQkJdWludDMyX3QgbmFkZHIgPSBhZGRyIC0gb2Zmc2V0OworCQkJCQl3cml0ZV9maWx0ZXJfZGF0YShyYXIsICh1aW50MzJfdClpLAorCQkJCQkgICAgbmFkZHIpOworCQkJCX0KKwkJCX0KKworCQkJaSArPSA0OworCQl9CisJfQorCisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKK3N0YXRpYyBpbnQgcnVuX2FybV9maWx0ZXIoc3RydWN0IHJhcjUqIHJhciwgc3RydWN0IGZpbHRlcl9pbmZvKiBmbHQpIHsKKwlzc2l6ZV90IGkgPSAwOworCXVpbnQzMl90IG9mZnNldDsKKworCWNpcmN1bGFyX21lbWNweShyYXItPmNzdGF0ZS5maWx0ZXJlZF9idWYsCisJICAgIHJhci0+Y3N0YXRlLndpbmRvd19idWYsIHJhci0+Y3N0YXRlLndpbmRvd19tYXNrLAorCSAgICByYXItPmNzdGF0ZS5zb2xpZF9vZmZzZXQgKyBmbHQtPmJsb2NrX3N0YXJ0LAorCSAgICByYXItPmNzdGF0ZS5zb2xpZF9vZmZzZXQgKyBmbHQtPmJsb2NrX3N0YXJ0ICsgZmx0LT5ibG9ja19sZW5ndGgpOworCisJZm9yKGkgPSAwOyBpIDwgZmx0LT5ibG9ja19sZW5ndGggLSAzOyBpICs9IDQpIHsKKwkJdWludDhfdCogYiA9ICZyYXItPmNzdGF0ZS53aW5kb3dfYnVmWworCQkgICAgKHJhci0+Y3N0YXRlLnNvbGlkX29mZnNldCArCisJCSAgICBmbHQtPmJsb2NrX3N0YXJ0ICsgaSArIDMpICYgcmFyLT5jc3RhdGUud2luZG93X21hc2tdOworCisJCWlmKCpiID09IDB4RUIpIHsKKwkJCS8qIDB4RUIgPSBBUk0ncyBCTCAoYnJhbmNoICsgbGluaykgaW5zdHJ1Y3Rpb24uICovCisJCQlvZmZzZXQgPSByZWFkX2ZpbHRlcl9kYXRhKHJhciwKKwkJCSAgICAocmFyLT5jc3RhdGUuc29saWRfb2Zmc2V0ICsgZmx0LT5ibG9ja19zdGFydCArIGkpICYKKwkJCSAgICAgcmFyLT5jc3RhdGUud2luZG93X21hc2spICYgMHgwMGZmZmZmZjsKKworCQkJb2Zmc2V0IC09ICh1aW50MzJfdCkgKChpICsgZmx0LT5ibG9ja19zdGFydCkgLyA0KTsKKwkJCW9mZnNldCA9IChvZmZzZXQgJiAweDAwZmZmZmZmKSB8IDB4ZWIwMDAwMDA7CisJCQl3cml0ZV9maWx0ZXJfZGF0YShyYXIsICh1aW50MzJfdClpLCBvZmZzZXQpOworCQl9CisJfQorCisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKK3N0YXRpYyBpbnQgcnVuX2ZpbHRlcihzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhLCBzdHJ1Y3QgZmlsdGVyX2luZm8qIGZsdCkgeworCWludCByZXQ7CisJc3RydWN0IHJhcjUqIHJhciA9IGdldF9jb250ZXh0KGEpOworCisJZnJlZShyYXItPmNzdGF0ZS5maWx0ZXJlZF9idWYpOworCisJcmFyLT5jc3RhdGUuZmlsdGVyZWRfYnVmID0gbWFsbG9jKGZsdC0+YmxvY2tfbGVuZ3RoKTsKKwlpZighcmFyLT5jc3RhdGUuZmlsdGVyZWRfYnVmKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBFTk9NRU0sCisJCSAgICAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBmaWx0ZXIgZGF0YS4iKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJc3dpdGNoKGZsdC0+dHlwZSkgeworCQljYXNlIEZJTFRFUl9ERUxUQToKKwkJCXJldCA9IHJ1bl9kZWx0YV9maWx0ZXIocmFyLCBmbHQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBGSUxURVJfRTg6CisJCQkvKiBmYWxsdGhyb3VnaCAqLworCQljYXNlIEZJTFRFUl9FOEU5OgorCQkJcmV0ID0gcnVuX2U4ZTlfZmlsdGVyKHJhciwgZmx0LAorCQkJICAgIGZsdC0+dHlwZSA9PSBGSUxURVJfRThFOSk7CisJCQlicmVhazsKKworCQljYXNlIEZJTFRFUl9BUk06CisJCQlyZXQgPSBydW5fYXJtX2ZpbHRlcihyYXIsIGZsdCk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCSAgICAiVW5zdXBwb3J0ZWQgZmlsdGVyIHR5cGU6IDB4JXgiLCBmbHQtPnR5cGUpOworCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJaWYocmV0ICE9IEFSQ0hJVkVfT0spIHsKKwkJLyogRmlsdGVyIGhhcyBmYWlsZWQuICovCisJCXJldHVybiByZXQ7CisJfQorCisJaWYoQVJDSElWRV9PSyAhPSBwdXNoX2RhdGFfcmVhZHkoYSwgcmFyLCByYXItPmNzdGF0ZS5maWx0ZXJlZF9idWYsCisJICAgIGZsdC0+YmxvY2tfbGVuZ3RoLCByYXItPmNzdGF0ZS5sYXN0X3dyaXRlX3B0cikpCisJeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19QUk9HUkFNTUVSLAorCQkgICAgIlN0YWNrIG92ZXJmbG93IHdoZW4gc3VibWl0dGluZyB1bnBhY2tlZCBkYXRhIik7CisKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJcmFyLT5jc3RhdGUubGFzdF93cml0ZV9wdHIgKz0gZmx0LT5ibG9ja19sZW5ndGg7CisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKKy8qIFRoZSBgcHVzaF9kYXRhYCBmdW5jdGlvbiBzdWJtaXRzIHRoZSBzZWxlY3RlZCBkYXRhIHJhbmdlIHRvIHRoZSB1c2VyLgorICogTmV4dCBjYWxsIG9mIGB1c2VfZGF0YWAgd2lsbCB1c2UgdGhlIHBvaW50ZXIsIHNpemUgYW5kIG9mZnNldCBhcmd1bWVudHMKKyAqIHRoYXQgYXJlIHNwZWNpZmllZCBoZXJlLiBUaGVzZSBhcmd1bWVudHMgYXJlIHB1c2hlZCB0byB0aGUgRklGTyBzdGFjayBoZXJlLAorICogYW5kIHBvcHBlZCBmcm9tIHRoZSBzdGFjayBieSB0aGUgYHVzZV9kYXRhYCBmdW5jdGlvbi4gKi8KK3N0YXRpYyB2b2lkIHB1c2hfZGF0YShzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhLCBzdHJ1Y3QgcmFyNSogcmFyLAorICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZiwgaW50NjRfdCBpZHhfYmVnaW4sIGludDY0X3QgaWR4X2VuZCkKK3sKKwljb25zdCB1aW50NjRfdCB3bWFzayA9IHJhci0+Y3N0YXRlLndpbmRvd19tYXNrOworCWNvbnN0IHNzaXplX3Qgc29saWRfd3JpdGVfcHRyID0gKHJhci0+Y3N0YXRlLnNvbGlkX29mZnNldCArCisJICAgIHJhci0+Y3N0YXRlLmxhc3Rfd3JpdGVfcHRyKSAmIHdtYXNrOworCisJaWR4X2JlZ2luICs9IHJhci0+Y3N0YXRlLnNvbGlkX29mZnNldDsKKwlpZHhfZW5kICs9IHJhci0+Y3N0YXRlLnNvbGlkX29mZnNldDsKKworCS8qIENoZWNrIGlmIG91ciB1bnBhY2tlZCBkYXRhIGlzIHdyYXBwZWQgaW5zaWRlIHRoZSB3aW5kb3cgY2lyY3VsYXIKKwkgKiBidWZmZXIuICBJZiBpdCdzIG5vdCB3cmFwcGVkLCBpdCBjYW4gYmUgY29waWVkIG91dCBieSB1c2luZworCSAqIGEgc2luZ2xlIG1lbWNweSwgYnV0IHdoZW4gaXQncyB3cmFwcGVkLCB3ZSBuZWVkIHRvIGNvcHkgdGhlIGZpcnN0CisJICogcGFydCB3aXRoIG9uZSBtZW1jcHksIGFuZCB0aGUgc2Vjb25kIHBhcnQgd2l0aCBhbm90aGVyIG1lbWNweS4gKi8KKworCWlmKChpZHhfYmVnaW4gJiB3bWFzaykgPiAoaWR4X2VuZCAmIHdtYXNrKSkgeworCQkvKiBUaGUgZGF0YSBpcyB3cmFwcGVkIChiZWdpbiBvZmZzZXQgc2lzIGJpZ2dlciB0aGFuIGVuZAorCQkgKiBvZmZzZXQpLiAqLworCQljb25zdCBzc2l6ZV90IGZyYWcxX3NpemUgPSByYXItPmNzdGF0ZS53aW5kb3dfc2l6ZSAtCisJCSAgICAoaWR4X2JlZ2luICYgd21hc2spOworCQljb25zdCBzc2l6ZV90IGZyYWcyX3NpemUgPSBpZHhfZW5kICYgd21hc2s7CisKKwkJLyogQ29weSB0aGUgZmlyc3QgcGFydCBvZiB0aGUgYnVmZmVyIGZpcnN0LiAqLworCQlwdXNoX2RhdGFfcmVhZHkoYSwgcmFyLCBidWYgKyBzb2xpZF93cml0ZV9wdHIsIGZyYWcxX3NpemUsCisJCSAgICByYXItPmNzdGF0ZS5sYXN0X3dyaXRlX3B0cik7CisKKwkJLyogQ29weSB0aGUgc2Vjb25kIHBhcnQgb2YgdGhlIGJ1ZmZlci4gKi8KKwkJcHVzaF9kYXRhX3JlYWR5KGEsIHJhciwgYnVmLCBmcmFnMl9zaXplLAorCQkgICAgcmFyLT5jc3RhdGUubGFzdF93cml0ZV9wdHIgKyBmcmFnMV9zaXplKTsKKworCQlyYXItPmNzdGF0ZS5sYXN0X3dyaXRlX3B0ciArPSBmcmFnMV9zaXplICsgZnJhZzJfc2l6ZTsKKwl9IGVsc2UgeworCQkvKiBEYXRhIGlzIG5vdCB3cmFwcGVkLCBzbyB3ZSBjYW4ganVzdCB1c2Ugb25lIGNhbGwgdG8gY29weSB0aGUKKwkJICogZGF0YS4gKi8KKwkJcHVzaF9kYXRhX3JlYWR5KGEsIHJhciwKKwkJICAgIGJ1ZiArIHNvbGlkX3dyaXRlX3B0ciwgKGlkeF9lbmQgLSBpZHhfYmVnaW4pICYgd21hc2ssCisJCSAgICByYXItPmNzdGF0ZS5sYXN0X3dyaXRlX3B0cik7CisKKwkJcmFyLT5jc3RhdGUubGFzdF93cml0ZV9wdHIgKz0gaWR4X2VuZCAtIGlkeF9iZWdpbjsKKwl9Cit9CisKKy8qIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgc3VibWl0cyB0aGUgZGF0YSB0byB0aGUgdXNlci4gSXQgdXNlcyB0aGUKKyAqIHVucGFjayB3aW5kb3cgYnVmZmVyIGFzIGEgc291cmNlIGxvY2F0aW9uLiAqLworc3RhdGljIHZvaWQgcHVzaF93aW5kb3dfZGF0YShzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhLCBzdHJ1Y3QgcmFyNSogcmFyLAorICAgIGludDY0X3QgaWR4X2JlZ2luLCBpbnQ2NF90IGlkeF9lbmQpCit7CisJcHVzaF9kYXRhKGEsIHJhciwgcmFyLT5jc3RhdGUud2luZG93X2J1ZiwgaWR4X2JlZ2luLCBpZHhfZW5kKTsKK30KKworc3RhdGljIGludCBhcHBseV9maWx0ZXJzKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEpIHsKKwlzdHJ1Y3QgZmlsdGVyX2luZm8qIGZsdDsKKwlzdHJ1Y3QgcmFyNSogcmFyID0gZ2V0X2NvbnRleHQoYSk7CisJaW50IHJldDsKKworCXJhci0+Y3N0YXRlLmFsbF9maWx0ZXJzX2FwcGxpZWQgPSAwOworCisJLyogR2V0IHRoZSBmaXJzdCBmaWx0ZXIgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBvdXIgZGF0YS4gVGhlIGRhdGEKKwkgKiBuZWVkcyB0byBiZSBmdWxseSB1bnBhY2tlZCBiZWZvcmUgdGhlIGZpbHRlciBjYW4gYmUgcnVuLiAqLworCWlmKENERV9PSyA9PSBjZGVxdWVfZnJvbnQoJnJhci0+Y3N0YXRlLmZpbHRlcnMsCisJICAgIGNkZXF1ZV9maWx0ZXJfcCgmZmx0KSkpIHsKKwkJLyogQ2hlY2sgaWYgb3VyIHVucGFja2VkIGRhdGEgZnVsbHkgY292ZXJzIHRoaXMgZmlsdGVyJ3MKKwkJICogcmFuZ2UuICovCisJCWlmKHJhci0+Y3N0YXRlLndyaXRlX3B0ciA+IGZsdC0+YmxvY2tfc3RhcnQgJiYKKwkJICAgIHJhci0+Y3N0YXRlLndyaXRlX3B0ciA+PSBmbHQtPmJsb2NrX3N0YXJ0ICsKKwkJICAgIGZsdC0+YmxvY2tfbGVuZ3RoKSB7CisJCQkvKiBDaGVjayBpZiB3ZSBoYXZlIHNvbWUgZGF0YSBwZW5kaW5nIHRvIGJlIHdyaXR0ZW4KKwkJCSAqIHJpZ2h0IGJlZm9yZSB0aGUgZmlsdGVyJ3Mgc3RhcnQgb2Zmc2V0LiAqLworCQkJaWYocmFyLT5jc3RhdGUubGFzdF93cml0ZV9wdHIgPT0gZmx0LT5ibG9ja19zdGFydCkgeworCQkJCS8qIFJ1biB0aGUgZmlsdGVyIHNwZWNpZmllZCBieSBkZXNjcmlwdG9yCisJCQkJICogYGZsdGAuICovCisJCQkJcmV0ID0gcnVuX2ZpbHRlcihhLCBmbHQpOworCQkJCWlmKHJldCAhPSBBUkNISVZFX09LKSB7CisJCQkJCS8qIEZpbHRlciBmYWlsdXJlLCByZXR1cm4gZXJyb3IuICovCisJCQkJCXJldHVybiByZXQ7CisJCQkJfQorCisJCQkJLyogRmlsdGVyIGRlc2NyaXB0b3Igd29uJ3QgYmUgbmVlZGVkIGFueW1vcmUKKwkJCQkgKiBhZnRlciBpdCdzIHVzZWQsICogc28gcmVtb3ZlIGl0IGZyb20gdGhlCisJCQkJICogZmlsdGVyIGxpc3QgYW5kIGZyZWUgaXRzIG1lbW9yeS4gKi8KKwkJCQkodm9pZCkgY2RlcXVlX3BvcF9mcm9udCgmcmFyLT5jc3RhdGUuZmlsdGVycywKKwkJCQkgICAgY2RlcXVlX2ZpbHRlcl9wKCZmbHQpKTsKKworCQkJCWZyZWUoZmx0KTsKKwkJCX0gZWxzZSB7CisJCQkJLyogV2UgY2FuJ3QgcnVuIGZpbHRlcnMgeWV0LCBkdW1wIHRoZSBtZW1vcnkKKwkJCQkgKiByaWdodCBiZWZvcmUgdGhlIGZpbHRlci4gKi8KKwkJCQlwdXNoX3dpbmRvd19kYXRhKGEsIHJhciwKKwkJCQkgICAgcmFyLT5jc3RhdGUubGFzdF93cml0ZV9wdHIsCisJCQkJICAgIGZsdC0+YmxvY2tfc3RhcnQpOworCQkJfQorCisJCQkvKiBSZXR1cm4gJ2ZpbHRlciBhcHBsaWVkIG9yIG5vdCBuZWVkZWQnIHN0YXRlIHRvIHRoZQorCQkJICogY2FsbGVyLiAqLworCQkJcmV0dXJuIEFSQ0hJVkVfUkVUUlk7CisJCX0KKwl9CisKKwlyYXItPmNzdGF0ZS5hbGxfZmlsdGVyc19hcHBsaWVkID0gMTsKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworc3RhdGljIHZvaWQgZGlzdF9jYWNoZV9wdXNoKHN0cnVjdCByYXI1KiByYXIsIGludCB2YWx1ZSkgeworCWludCogcSA9IHJhci0+Y3N0YXRlLmRpc3RfY2FjaGU7CisKKwlxWzNdID0gcVsyXTsKKwlxWzJdID0gcVsxXTsKKwlxWzFdID0gcVswXTsKKwlxWzBdID0gdmFsdWU7Cit9CisKK3N0YXRpYyBpbnQgZGlzdF9jYWNoZV90b3VjaChzdHJ1Y3QgcmFyNSogcmFyLCBpbnQgaWR4KSB7CisJaW50KiBxID0gcmFyLT5jc3RhdGUuZGlzdF9jYWNoZTsKKwlpbnQgaSwgZGlzdCA9IHFbaWR4XTsKKworCWZvcihpID0gaWR4OyBpID4gMDsgaS0tKQorCQlxW2ldID0gcVtpIC0gMV07CisKKwlxWzBdID0gZGlzdDsKKwlyZXR1cm4gZGlzdDsKK30KKworc3RhdGljIHZvaWQgZnJlZV9maWx0ZXJzKHN0cnVjdCByYXI1KiByYXIpIHsKKwlzdHJ1Y3QgY2RlcXVlKiBkID0gJnJhci0+Y3N0YXRlLmZpbHRlcnM7CisKKwkvKiBGcmVlIGFueSByZW1haW5pbmcgZmlsdGVycy4gQWxsIGZpbHRlcnMgc2hvdWxkIGJlIG5hdHVyYWxseQorCSAqIGNvbnN1bWVkIGJ5IHRoZSB1bnBhY2tpbmcgZnVuY3Rpb24sIHNvIHJlbWFpbmluZyBmaWx0ZXJzIGFmdGVyCisJICogdW5wYWNraW5nIG5vcm1hbGx5IG1lYW4gdGhhdCB1bnBhY2tpbmcgd2Fzbid0IHN1Y2Nlc3NmdWwuCisJICogQnV0IHN0aWxsIG9mIGNvdXJzZSB3ZSBzaG91bGRuJ3QgbGVhayBtZW1vcnkgaW4gc3VjaCBjYXNlLiAqLworCisJLyogY2RlcXVlX3NpemUoKSBpcyBhIGZhc3Qgb3BlcmF0aW9uLCBzbyB3ZSBjYW4gdXNlIGl0IGFzIGEgbG9vcAorCSAqIGV4cHJlc3Npb24uICovCisJd2hpbGUoY2RlcXVlX3NpemUoZCkgPiAwKSB7CisJCXN0cnVjdCBmaWx0ZXJfaW5mbyogZiA9IE5VTEw7CisKKwkJLyogUG9wX2Zyb250IHdpbGwgYWxzbyBkZWNyZWFzZSB0aGUgY29sbGVjdGlvbidzIHNpemUuICovCisJCWlmIChDREVfT0sgPT0gY2RlcXVlX3BvcF9mcm9udChkLCBjZGVxdWVfZmlsdGVyX3AoJmYpKSkKKwkJCWZyZWUoZik7CisJfQorCisJY2RlcXVlX2NsZWFyKGQpOworCisJLyogQWxzbyBjbGVhciBvdXQgdGhlIHZhcmlhYmxlcyBuZWVkZWQgZm9yIHNhbml0eSBjaGVja2luZy4gKi8KKwlyYXItPmNzdGF0ZS5sYXN0X2Jsb2NrX3N0YXJ0ID0gMDsKKwlyYXItPmNzdGF0ZS5sYXN0X2Jsb2NrX2xlbmd0aCA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIHJlc2V0X2ZpbGVfY29udGV4dChzdHJ1Y3QgcmFyNSogcmFyKSB7CisJbWVtc2V0KCZyYXItPmZpbGUsIDAsIHNpemVvZihyYXItPmZpbGUpKTsKKwlibGFrZTJzcF9pbml0KCZyYXItPmZpbGUuYjJzdGF0ZSwgMzIpOworCisJaWYocmFyLT5tYWluLnNvbGlkKSB7CisJCXJhci0+Y3N0YXRlLnNvbGlkX29mZnNldCArPSByYXItPmNzdGF0ZS53cml0ZV9wdHI7CisJfSBlbHNlIHsKKwkJcmFyLT5jc3RhdGUuc29saWRfb2Zmc2V0ID0gMDsKKwl9CisKKwlyYXItPmNzdGF0ZS53cml0ZV9wdHIgPSAwOworCXJhci0+Y3N0YXRlLmxhc3Rfd3JpdGVfcHRyID0gMDsKKwlyYXItPmNzdGF0ZS5sYXN0X3Vuc3RvcmVfcHRyID0gMDsKKworCXJhci0+ZmlsZS5yZWRpcl90eXBlID0gUkVESVJfVFlQRV9OT05FOworCXJhci0+ZmlsZS5yZWRpcl9mbGFncyA9IDA7CisKKwlmcmVlX2ZpbHRlcnMocmFyKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgZ2V0X2FyY2hpdmVfcmVhZChzdHJ1Y3QgYXJjaGl2ZSogYSwKKyAgICBzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiogYXIpCit7CisJKmFyID0gKHN0cnVjdCBhcmNoaXZlX3JlYWQqKSBhOworCWFyY2hpdmVfY2hlY2tfbWFnaWMoYSwgQVJDSElWRV9SRUFEX01BR0lDLCBBUkNISVZFX1NUQVRFX05FVywKKwkgICAgImFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXI1Iik7CisKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworc3RhdGljIGludCByZWFkX2FoZWFkKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsIHNpemVfdCBob3dfbWFueSwKKyAgICBjb25zdCB1aW50OF90KiogcHRyKQoreworCXNzaXplX3QgYXZhaWwgPSAtMTsKKwlpZighcHRyKQorCQlyZXR1cm4gMDsKKworCSpwdHIgPSBfX2FyY2hpdmVfcmVhZF9haGVhZChhLCBob3dfbWFueSwgJmF2YWlsKTsKKwlpZigqcHRyID09IE5VTEwpIHsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgY29uc3VtZShzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhLCBpbnQ2NF90IGhvd19tYW55KSB7CisJaW50IHJldDsKKworCXJldCA9IGhvd19tYW55ID09IF9fYXJjaGl2ZV9yZWFkX2NvbnN1bWUoYSwgaG93X21hbnkpCisJCT8gQVJDSElWRV9PSworCQk6IEFSQ0hJVkVfRkFUQUw7CisKKwlyZXR1cm4gcmV0OworfQorCisvKioKKyAqIFJlYWQgYSBSQVI1IHZhcmlhYmxlIHNpemVkIG51bWVyaWMgdmFsdWUuIFRoaXMgdmFsdWUgd2lsbCBiZSBzdG9yZWQgaW4KKyAqIGBwdmFsdWVgLiBUaGUgYHB2YWx1ZV9sZW5gIGFyZ3VtZW50IHBvaW50cyB0byBhIHZhcmlhYmxlIHRoYXQgd2lsbCByZWNlaXZlCisgKiB0aGUgYnl0ZSBjb3VudCB0aGF0IHdhcyBjb25zdW1lZCBpbiBvcmRlciB0byBkZWNvZGUgdGhlIGBwdmFsdWVgIHZhbHVlLCBwbHVzCisgKiBvbmUuCisgKgorICogcHZhbHVlX2xlbiBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIE5VTEwuCisgKgorICogTk9URTogaWYgYHB2YWx1ZV9sZW5gIGlzIE5PVCBOVUxMLCB0aGUgY2FsbGVyIG5lZWRzIHRvIG1hbnVhbGx5IGNvbnN1bWUKKyAqIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBgcHZhbHVlX2xlbmAgdmFsdWUgY29udGFpbnMuIElmIHRoZSBgcHZhbHVlX2xlbmAKKyAqIGlzIE5VTEwsIHRoaXMgY29uc3VtaW5nIG9wZXJhdGlvbiBpcyBkb25lIGF1dG9tYXRpY2FsbHkuCisgKgorICogUmV0dXJucyAxIGlmICpwdmFsdWUgd2FzIHN1Y2Nlc3NmdWxseSByZWFkLgorICogUmV0dXJucyAwIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4gSW4gdGhpcyBjYXNlLCAqcHZhbHVlIGNvbnRhaW5zIGFuCisgKiAgICAgICAgICAgaW52YWxpZCB2YWx1ZS4KKyAqLworCitzdGF0aWMgaW50IHJlYWRfdmFyKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsIHVpbnQ2NF90KiBwdmFsdWUsCisgICAgdWludDY0X3QqIHB2YWx1ZV9sZW4pCit7CisJdWludDY0X3QgcmVzdWx0ID0gMDsKKwlzaXplX3Qgc2hpZnQsIGk7CisJY29uc3QgdWludDhfdCogcDsKKwl1aW50OF90IGI7CisKKwkvKiBXZSB3aWxsIHJlYWQgbWF4aW11bSBvZiA4IGJ5dGVzLiBXZSBkb24ndCBoYXZlIHRvIGhhbmRsZSB0aGUKKwkgKiBzaXR1YXRpb24gdG8gcmVhZCB0aGUgUkFSNSB2YXJpYWJsZS1zaXplZCB2YWx1ZSBzdG9yZWQgYXQgdGhlIGVuZCBvZgorCSAqIHRoZSBmaWxlLCBiZWNhdXNlIHN1Y2ggc2l0dWF0aW9uIHdpbGwgbmV2ZXIgaGFwcGVuLiAqLworCWlmKCFyZWFkX2FoZWFkKGEsIDgsICZwKSkKKwkJcmV0dXJuIDA7CisKKwlmb3Ioc2hpZnQgPSAwLCBpID0gMDsgaSA8IDg7IGkrKywgc2hpZnQgKz0gNykgeworCQliID0gcFtpXTsKKworCQkvKiBTdHJpcCB0aGUgTVNCIGZyb20gdGhlIGlucHV0IGJ5dGUgYW5kIGFkZCB0aGUgcmVzdWx0aW5nCisJCSAqIG51bWJlciB0byB0aGUgYHJlc3VsdGAuICovCisJCXJlc3VsdCArPSAoYiAmICh1aW50NjRfdCkweDdGKSA8PCBzaGlmdDsKKworCQkvKiBNU0Igc2V0IHRvIDEgbWVhbnMgd2UgbmVlZCB0byBjb250aW51ZSBkZWNvZGluZyBwcm9jZXNzLgorCQkgKiBNU0Igc2V0IHRvIDAgbWVhbnMgd2UncmUgZG9uZS4KKwkJICoKKwkJICogVGhpcyBjb25kaXRpb25hbCBjaGVja3MgZm9yIHRoZSBzZWNvbmQgY2FzZS4gKi8KKwkJaWYoKGIgJiAweDgwKSA9PSAwKSB7CisJCQlpZihwdmFsdWUpIHsKKwkJCQkqcHZhbHVlID0gcmVzdWx0OworCQkJfQorCisJCQkvKiBJZiB0aGUgY2FsbGVyIGhhcyBwYXNzZWQgdGhlIGBwdmFsdWVfbGVuYCBwb2ludGVyLAorCQkJICogc3RvcmUgdGhlIG51bWJlciBvZiBjb25zdW1lZCBieXRlcyBpbiBpdCBhbmQgZG8gTk9UCisJCQkgKiBjb25zdW1lIHRob3NlIGJ5dGVzLCBzaW5jZSB0aGUgY2FsbGVyIGhhcyBhbGwgdGhlCisJCQkgKiBpbmZvcm1hdGlvbiBpdCBuZWVkcyB0byBwZXJmb3JtICovCisJCQlpZihwdmFsdWVfbGVuKSB7CisJCQkJKnB2YWx1ZV9sZW4gPSAxICsgaTsKKwkJCX0gZWxzZSB7CisJCQkJLyogSWYgdGhlIGNhbGxlciBkaWQgbm90IHByb3ZpZGUgdGhlCisJCQkJICogYHB2YWx1ZV9sZW5gIHBvaW50ZXIsIGl0IHdpbGwgbm90IGhhdmUgdGhlCisJCQkJICogcG9zc2liaWxpdHkgdG8gYWR2YW5jZSB0aGUgZmlsZSBwb2ludGVyLAorCQkJCSAqIGJlY2F1c2UgaXQgd2lsbCBub3Qga25vdyBob3cgbWFueSBieXRlcyBpdAorCQkJCSAqIG5lZWRzIHRvIGNvbnN1bWUuIFRoaXMgaXMgd2h5IHdlIGhhbmRsZQorCQkJCSAqIHN1Y2ggc2l0dWF0aW9uIGhlcmUgYXV0b21hdGljYWxseS4gKi8KKwkJCQlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgMSArIGkpKSB7CisJCQkJCXJldHVybiAwOworCQkJCX0KKwkJCX0KKworCQkJLyogRW5kIG9mIGRlY29kaW5nIHByb2Nlc3MsIHJldHVybiBzdWNjZXNzLiAqLworCQkJcmV0dXJuIDE7CisJCX0KKwl9CisKKwkvKiBUaGUgZGVjb2RlZCB2YWx1ZSB0YWtlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgOCBieXRlcy4KKwkgKiBJdCdzIGEgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMsIHNvIGVuZCBkZWNvZGluZyBwcm9jZXNzIGhlcmUKKwkgKiBldmVuIGlmIHRoZSBmaXJzdCBiaXQgb2YgbGFzdCBieXRlIGlzIDEuICovCisJaWYocHZhbHVlKSB7CisJCSpwdmFsdWUgPSByZXN1bHQ7CisJfQorCisJaWYocHZhbHVlX2xlbikgeworCQkqcHZhbHVlX2xlbiA9IDk7CisJfSBlbHNlIHsKKwkJaWYoQVJDSElWRV9PSyAhPSBjb25zdW1lKGEsIDkpKSB7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKworCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IHJlYWRfdmFyX3NpemVkKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsIHNpemVfdCogcHZhbHVlLAorICAgIHNpemVfdCogcHZhbHVlX2xlbikKK3sKKwl1aW50NjRfdCB2OworCXVpbnQ2NF90IHZfc2l6ZSA9IDA7CisKKwljb25zdCBpbnQgcmV0ID0gcHZhbHVlX2xlbiA/IHJlYWRfdmFyKGEsICZ2LCAmdl9zaXplKQorCQkJCSAgIDogcmVhZF92YXIoYSwgJnYsIE5VTEwpOworCisJaWYocmV0ID09IDEgJiYgcHZhbHVlKSB7CisJCSpwdmFsdWUgPSAoc2l6ZV90KSB2OworCX0KKworCWlmKHB2YWx1ZV9sZW4pIHsKKwkJLyogUG9zc2libGUgZGF0YSB0cnVuY2F0aW9uIHNob3VsZCBiZSBzYWZlLiAqLworCQkqcHZhbHVlX2xlbiA9IChzaXplX3QpIHZfc2l6ZTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHJlYWRfYml0c18zMihzdHJ1Y3QgcmFyNSogcmFyLCBjb25zdCB1aW50OF90KiBwLCB1aW50MzJfdCogdmFsdWUpIHsKKwl1aW50MzJfdCBiaXRzID0gKCh1aW50MzJfdCkgcFtyYXItPmJpdHMuaW5fYWRkcl0pIDw8IDI0OworCWJpdHMgfD0gcFtyYXItPmJpdHMuaW5fYWRkciArIDFdIDw8IDE2OworCWJpdHMgfD0gcFtyYXItPmJpdHMuaW5fYWRkciArIDJdIDw8IDg7CisJYml0cyB8PSBwW3Jhci0+Yml0cy5pbl9hZGRyICsgM107CisJYml0cyA8PD0gcmFyLT5iaXRzLmJpdF9hZGRyOworCWJpdHMgfD0gcFtyYXItPmJpdHMuaW5fYWRkciArIDRdID4+ICg4IC0gcmFyLT5iaXRzLmJpdF9hZGRyKTsKKwkqdmFsdWUgPSBiaXRzOworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgaW50IHJlYWRfYml0c18xNihzdHJ1Y3QgcmFyNSogcmFyLCBjb25zdCB1aW50OF90KiBwLCB1aW50MTZfdCogdmFsdWUpIHsKKwlpbnQgYml0cyA9IChpbnQpICgodWludDMyX3QpIHBbcmFyLT5iaXRzLmluX2FkZHJdKSA8PCAxNjsKKwliaXRzIHw9IChpbnQpIHBbcmFyLT5iaXRzLmluX2FkZHIgKyAxXSA8PCA4OworCWJpdHMgfD0gKGludCkgcFtyYXItPmJpdHMuaW5fYWRkciArIDJdOworCWJpdHMgPj49ICg4IC0gcmFyLT5iaXRzLmJpdF9hZGRyKTsKKwkqdmFsdWUgPSBiaXRzICYgMHhmZmZmOworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgdm9pZCBza2lwX2JpdHMoc3RydWN0IHJhcjUqIHJhciwgaW50IGJpdHMpIHsKKwljb25zdCBpbnQgbmV3X2JpdHMgPSByYXItPmJpdHMuYml0X2FkZHIgKyBiaXRzOworCXJhci0+Yml0cy5pbl9hZGRyICs9IG5ld19iaXRzID4+IDM7CisJcmFyLT5iaXRzLmJpdF9hZGRyID0gbmV3X2JpdHMgJiA3OworfQorCisvKiBuID0gdXAgdG8gMTYgKi8KK3N0YXRpYyBpbnQgcmVhZF9jb25zdW1lX2JpdHMoc3RydWN0IHJhcjUqIHJhciwgY29uc3QgdWludDhfdCogcCwgaW50IG4sCisgICAgaW50KiB2YWx1ZSkKK3sKKwl1aW50MTZfdCB2OworCWludCByZXQsIG51bTsKKworCWlmKG4gPT0gMCB8fCBuID4gMTYpIHsKKwkJLyogVGhpcyBpcyBhIHByb2dyYW1tZXIgZXJyb3IgYW5kIHNob3VsZCBuZXZlciBoYXBwZW4KKwkJICogaW4gcnVudGltZS4gKi8KKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJcmV0ID0gcmVhZF9iaXRzXzE2KHJhciwgcCwgJnYpOworCWlmKHJldCAhPSBBUkNISVZFX09LKQorCQlyZXR1cm4gcmV0OworCisJbnVtID0gKGludCkgdjsKKwludW0gPj49IDE2IC0gbjsKKworCXNraXBfYml0cyhyYXIsIG4pOworCisJaWYodmFsdWUpCisJCSp2YWx1ZSA9IG51bTsKKworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgaW50IHJlYWRfdTMyKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsIHVpbnQzMl90KiBwdmFsdWUpIHsKKwljb25zdCB1aW50OF90KiBwOworCWlmKCFyZWFkX2FoZWFkKGEsIDQsICZwKSkKKwkJcmV0dXJuIDA7CisKKwkqcHZhbHVlID0gYXJjaGl2ZV9sZTMyZGVjKHApOworCXJldHVybiBBUkNISVZFX09LID09IGNvbnN1bWUoYSwgNCkgPyAxIDogMDsKK30KKworc3RhdGljIGludCByZWFkX3U2NChzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhLCB1aW50NjRfdCogcHZhbHVlKSB7CisJY29uc3QgdWludDhfdCogcDsKKwlpZighcmVhZF9haGVhZChhLCA4LCAmcCkpCisJCXJldHVybiAwOworCisJKnB2YWx1ZSA9IGFyY2hpdmVfbGU2NGRlYyhwKTsKKwlyZXR1cm4gQVJDSElWRV9PSyA9PSBjb25zdW1lKGEsIDgpID8gMSA6IDA7Cit9CisKK3N0YXRpYyBpbnQgYmlkX3N0YW5kYXJkKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEpIHsKKwljb25zdCB1aW50OF90KiBwOworCWNoYXIgc2lnbmF0dXJlW3NpemVvZihyYXI1X3NpZ25hdHVyZV94b3IpXTsKKworCXJhcjVfc2lnbmF0dXJlKHNpZ25hdHVyZSk7CisKKwlpZighcmVhZF9haGVhZChhLCBzaXplb2YocmFyNV9zaWduYXR1cmVfeG9yKSwgJnApKQorCQlyZXR1cm4gLTE7CisKKwlpZighbWVtY21wKHNpZ25hdHVyZSwgcCwgc2l6ZW9mKHJhcjVfc2lnbmF0dXJlX3hvcikpKQorCQlyZXR1cm4gMzA7CisKKwlyZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQgcmFyNV9iaWQoc3RydWN0IGFyY2hpdmVfcmVhZCogYSwgaW50IGJlc3RfYmlkKSB7CisJaW50IG15X2JpZDsKKworCWlmKGJlc3RfYmlkID4gMzApCisJCXJldHVybiAtMTsKKworCW15X2JpZCA9IGJpZF9zdGFuZGFyZChhKTsKKwlpZihteV9iaWQgPiAtMSkgeworCQlyZXR1cm4gbXlfYmlkOworCX0KKworCXJldHVybiAtMTsKK30KKworc3RhdGljIGludCByYXI1X29wdGlvbnMoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgY29uc3QgY2hhciAqa2V5LAorICAgIGNvbnN0IGNoYXIgKnZhbCkgeworCSh2b2lkKSBhOworCSh2b2lkKSBrZXk7CisJKHZvaWQpIHZhbDsKKworCS8qIE5vIG9wdGlvbnMgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lvbi4gUmV0dXJuIHRoZSBBUkNISVZFX1dBUk4gY29kZQorCSAqIHRvIHNpZ25hbCB0aGUgb3B0aW9ucyBzdXBlcnZpc29yIHRoYXQgdGhlIHVucGFja2VyIGRpZG4ndCBoYW5kbGUKKwkgKiBzZXR0aW5nIHRoaXMgb3B0aW9uLiAqLworCisJcmV0dXJuIEFSQ0hJVkVfV0FSTjsKK30KKworc3RhdGljIHZvaWQgaW5pdF9oZWFkZXIoc3RydWN0IGFyY2hpdmVfcmVhZCogYSkgeworCWEtPmFyY2hpdmUuYXJjaGl2ZV9mb3JtYXQgPSBBUkNISVZFX0ZPUk1BVF9SQVJfVjU7CisJYS0+YXJjaGl2ZS5hcmNoaXZlX2Zvcm1hdF9uYW1lID0gIlJBUjUiOworfQorCitzdGF0aWMgdm9pZCBpbml0X3dpbmRvd19tYXNrKHN0cnVjdCByYXI1KiByYXIpIHsKKwlpZiAocmFyLT5jc3RhdGUud2luZG93X3NpemUpCisJCXJhci0+Y3N0YXRlLndpbmRvd19tYXNrID0gcmFyLT5jc3RhdGUud2luZG93X3NpemUgLSAxOworCWVsc2UKKwkJcmFyLT5jc3RhdGUud2luZG93X21hc2sgPSAwOworfQorCitlbnVtIEhFQURFUl9GTEFHUyB7CisJSEZMX0VYVFJBX0RBVEEgPSAweDAwMDEsCisJSEZMX0RBVEEgPSAweDAwMDIsCisJSEZMX1NLSVBfSUZfVU5LTk9XTiA9IDB4MDAwNCwKKwlIRkxfU1BMSVRfQkVGT1JFID0gMHgwMDA4LAorCUhGTF9TUExJVF9BRlRFUiA9IDB4MDAxMCwKKwlIRkxfQ0hJTEQgPSAweDAwMjAsCisJSEZMX0lOSEVSSVRFRCA9IDB4MDA0MAorfTsKKworc3RhdGljIGludCBwcm9jZXNzX21haW5fbG9jYXRvcl9leHRyYV9ibG9jayhzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhLAorICAgIHN0cnVjdCByYXI1KiByYXIpCit7CisJdWludDY0X3QgbG9jYXRvcl9mbGFnczsKKworCWVudW0gTE9DQVRPUl9GTEFHUyB7CisJCVFMSVNUID0gMHgwMSwgUkVDT1ZFUlkgPSAweDAyLAorCX07CisKKwlpZighcmVhZF92YXIoYSwgJmxvY2F0b3JfZmxhZ3MsIE5VTEwpKSB7CisJCXJldHVybiBBUkNISVZFX0VPRjsKKwl9CisKKwlpZihsb2NhdG9yX2ZsYWdzICYgUUxJU1QpIHsKKwkJaWYoIXJlYWRfdmFyKGEsICZyYXItPnFsaXN0X29mZnNldCwgTlVMTCkpIHsKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKwkJfQorCisJCS8qIHFsaXN0IGlzIG5vdCB1c2VkICovCisJfQorCisJaWYobG9jYXRvcl9mbGFncyAmIFJFQ09WRVJZKSB7CisJCWlmKCFyZWFkX3ZhcihhLCAmcmFyLT5ycl9vZmZzZXQsIE5VTEwpKSB7CisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJCX0KKworCQkvKiByciBpcyBub3QgdXNlZCAqLworCX0KKworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgaW50IHBhcnNlX2ZpbGVfZXh0cmFfaGFzaChzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhLCBzdHJ1Y3QgcmFyNSogcmFyLAorICAgIHNzaXplX3QqIGV4dHJhX2RhdGFfc2l6ZSkKK3sKKwlzaXplX3QgaGFzaF90eXBlID0gMDsKKwlzaXplX3QgdmFsdWVfbGVuOworCisJZW51bSBIQVNIX1RZUEUgeworCQlCTEFLRTJzcCA9IDB4MDAKKwl9OworCisJaWYoIXJlYWRfdmFyX3NpemVkKGEsICZoYXNoX3R5cGUsICZ2YWx1ZV9sZW4pKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwkqZXh0cmFfZGF0YV9zaXplIC09IHZhbHVlX2xlbjsKKwlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgdmFsdWVfbGVuKSkgeworCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJfQorCisJLyogVGhlIGZpbGUgdXNlcyBCTEFLRTJzcCBjaGVja3N1bSBhbGdvcml0aG0gaW5zdGVhZCBvZiBwbGFpbiBvbGQKKwkgKiBDUkMzMi4gKi8KKwlpZihoYXNoX3R5cGUgPT0gQkxBS0Uyc3ApIHsKKwkJY29uc3QgdWludDhfdCogcDsKKwkJY29uc3QgaW50IGhhc2hfc2l6ZSA9IHNpemVvZihyYXItPmZpbGUuYmxha2Uyc3ApOworCisJCWlmKCFyZWFkX2FoZWFkKGEsIGhhc2hfc2l6ZSwgJnApKQorCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCisJCXJhci0+ZmlsZS5oYXNfYmxha2UyID0gMTsKKwkJbWVtY3B5KCZyYXItPmZpbGUuYmxha2Uyc3AsIHAsIGhhc2hfc2l6ZSk7CisKKwkJaWYoQVJDSElWRV9PSyAhPSBjb25zdW1lKGEsIGhhc2hfc2l6ZSkpIHsKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKwkJfQorCisJCSpleHRyYV9kYXRhX3NpemUgLT0gaGFzaF9zaXplOworCX0gZWxzZSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIlVuc3VwcG9ydGVkIGhhc2ggdHlwZSAoMHgleCkiLCAoaW50KSBoYXNoX3R5cGUpOworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworc3RhdGljIHVpbnQ2NF90IHRpbWVfd2luX3RvX3VuaXgodWludDY0X3Qgd2luX3RpbWUpIHsKKwljb25zdCBzaXplX3QgbnNfaW5fc2VjID0gMTAwMDAwMDA7CisJY29uc3QgdWludDY0X3Qgc2VjX3RvX3VuaXggPSAxMTY0NDQ3MzYwMExMOworCXJldHVybiB3aW5fdGltZSAvIG5zX2luX3NlYyAtIHNlY190b191bml4OworfQorCitzdGF0aWMgaW50IHBhcnNlX2h0aW1lX2l0ZW0oc3RydWN0IGFyY2hpdmVfcmVhZCogYSwgY2hhciB1bml4X3RpbWUsCisgICAgdWludDY0X3QqIHdoZXJlLCBzc2l6ZV90KiBleHRyYV9kYXRhX3NpemUpCit7CisJaWYodW5peF90aW1lKSB7CisJCXVpbnQzMl90IHRpbWVfdmFsOworCQlpZighcmVhZF91MzIoYSwgJnRpbWVfdmFsKSkKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKworCQkqZXh0cmFfZGF0YV9zaXplIC09IDQ7CisJCSp3aGVyZSA9ICh1aW50NjRfdCkgdGltZV92YWw7CisJfSBlbHNlIHsKKwkJdWludDY0X3Qgd2luZG93c190aW1lOworCQlpZighcmVhZF91NjQoYSwgJndpbmRvd3NfdGltZSkpCisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwkJKndoZXJlID0gdGltZV93aW5fdG9fdW5peCh3aW5kb3dzX3RpbWUpOworCQkqZXh0cmFfZGF0YV9zaXplIC09IDg7CisJfQorCisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKK3N0YXRpYyBpbnQgcGFyc2VfZmlsZV9leHRyYV92ZXJzaW9uKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsCisgICAgc3RydWN0IGFyY2hpdmVfZW50cnkqIGUsIHNzaXplX3QqIGV4dHJhX2RhdGFfc2l6ZSkKK3sKKwlzaXplX3QgZmxhZ3MgPSAwOworCXNpemVfdCB2ZXJzaW9uID0gMDsKKwlzaXplX3QgdmFsdWVfbGVuID0gMDsKKwlzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgdmVyc2lvbl9zdHJpbmc7CisJc3RydWN0IGFyY2hpdmVfc3RyaW5nIG5hbWVfdXRmOF9zdHJpbmc7CisJY29uc3QgY2hhciogY3VyX2ZpbGVuYW1lOworCisJLyogRmxhZ3MgYXJlIGlnbm9yZWQuICovCisJaWYoIXJlYWRfdmFyX3NpemVkKGEsICZmbGFncywgJnZhbHVlX2xlbikpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKworCSpleHRyYV9kYXRhX3NpemUgLT0gdmFsdWVfbGVuOworCWlmKEFSQ0hJVkVfT0sgIT0gY29uc3VtZShhLCB2YWx1ZV9sZW4pKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwlpZighcmVhZF92YXJfc2l6ZWQoYSwgJnZlcnNpb24sICZ2YWx1ZV9sZW4pKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwkqZXh0cmFfZGF0YV9zaXplIC09IHZhbHVlX2xlbjsKKwlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgdmFsdWVfbGVuKSkKKwkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCisJLyogZXh0cmFfZGF0YV9zaXplIHNob3VsZCBiZSB6ZXJvIGhlcmUuICovCisKKwljdXJfZmlsZW5hbWUgPSBhcmNoaXZlX2VudHJ5X3BhdGhuYW1lX3V0ZjgoZSk7CisJaWYoY3VyX2ZpbGVuYW1lID09IE5VTEwpIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fUFJPR1JBTU1FUiwKKwkJICAgICJWZXJzaW9uIGVudHJ5IHdpdGhvdXQgZmlsZSBuYW1lIik7CisJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCX0KKworCWFyY2hpdmVfc3RyaW5nX2luaXQoJnZlcnNpb25fc3RyaW5nKTsKKwlhcmNoaXZlX3N0cmluZ19pbml0KCZuYW1lX3V0Zjhfc3RyaW5nKTsKKworCS8qIFByZXBhcmUgYSA7MTIzIHN1ZmZpeCBmb3IgdGhlIGZpbGVuYW1lLCB3aGVyZSAnMTIzJyBpcyB0aGUgdmVyc2lvbgorCSAqIHZhbHVlIG9mIHRoaXMgZmlsZS4gKi8KKwlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKCZ2ZXJzaW9uX3N0cmluZywgIjslenUiLCB2ZXJzaW9uKTsKKworCS8qIEJ1aWxkIHRoZSBuZXcgZmlsZW5hbWUuICovCisJYXJjaGl2ZV9zdHJjYXQoJm5hbWVfdXRmOF9zdHJpbmcsIGN1cl9maWxlbmFtZSk7CisJYXJjaGl2ZV9zdHJjYXQoJm5hbWVfdXRmOF9zdHJpbmcsIHZlcnNpb25fc3RyaW5nLnMpOworCisJLyogQXBwbHkgdGhlIG5ldyBmaWxlbmFtZSBpbnRvIHRoaXMgZmlsZSdzIGNvbnRleHQuICovCisJYXJjaGl2ZV9lbnRyeV91cGRhdGVfcGF0aG5hbWVfdXRmOChlLCBuYW1lX3V0Zjhfc3RyaW5nLnMpOworCisJLyogRnJlZSBidWZmZXJzLiAqLworCWFyY2hpdmVfc3RyaW5nX2ZyZWUoJnZlcnNpb25fc3RyaW5nKTsKKwlhcmNoaXZlX3N0cmluZ19mcmVlKCZuYW1lX3V0Zjhfc3RyaW5nKTsKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworc3RhdGljIGludCBwYXJzZV9maWxlX2V4dHJhX2h0aW1lKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsCisgICAgc3RydWN0IGFyY2hpdmVfZW50cnkqIGUsIHN0cnVjdCByYXI1KiByYXIsIHNzaXplX3QqIGV4dHJhX2RhdGFfc2l6ZSkKK3sKKwljaGFyIHVuaXhfdGltZSA9IDA7CisJc2l6ZV90IGZsYWdzID0gMDsKKwlzaXplX3QgdmFsdWVfbGVuOworCisJZW51bSBIVElNRV9GTEFHUyB7CisJCUlTX1VOSVggICAgICAgPSAweDAxLAorCQlIQVNfTVRJTUUgICAgID0gMHgwMiwKKwkJSEFTX0NUSU1FICAgICA9IDB4MDQsCisJCUhBU19BVElNRSAgICAgPSAweDA4LAorCQlIQVNfVU5JWF9OUyAgID0gMHgxMCwKKwl9OworCisJaWYoIXJlYWRfdmFyX3NpemVkKGEsICZmbGFncywgJnZhbHVlX2xlbikpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKworCSpleHRyYV9kYXRhX3NpemUgLT0gdmFsdWVfbGVuOworCWlmKEFSQ0hJVkVfT0sgIT0gY29uc3VtZShhLCB2YWx1ZV9sZW4pKSB7CisJCXJldHVybiBBUkNISVZFX0VPRjsKKwl9CisKKwl1bml4X3RpbWUgPSBmbGFncyAmIElTX1VOSVg7CisKKwlpZihmbGFncyAmIEhBU19NVElNRSkgeworCQlwYXJzZV9odGltZV9pdGVtKGEsIHVuaXhfdGltZSwgJnJhci0+ZmlsZS5lX210aW1lLAorCQkgICAgZXh0cmFfZGF0YV9zaXplKTsKKwkJYXJjaGl2ZV9lbnRyeV9zZXRfbXRpbWUoZSwgcmFyLT5maWxlLmVfbXRpbWUsIDApOworCX0KKworCWlmKGZsYWdzICYgSEFTX0NUSU1FKSB7CisJCXBhcnNlX2h0aW1lX2l0ZW0oYSwgdW5peF90aW1lLCAmcmFyLT5maWxlLmVfY3RpbWUsCisJCSAgICBleHRyYV9kYXRhX3NpemUpOworCQlhcmNoaXZlX2VudHJ5X3NldF9jdGltZShlLCByYXItPmZpbGUuZV9jdGltZSwgMCk7CisJfQorCisJaWYoZmxhZ3MgJiBIQVNfQVRJTUUpIHsKKwkJcGFyc2VfaHRpbWVfaXRlbShhLCB1bml4X3RpbWUsICZyYXItPmZpbGUuZV9hdGltZSwKKwkJICAgIGV4dHJhX2RhdGFfc2l6ZSk7CisJCWFyY2hpdmVfZW50cnlfc2V0X2F0aW1lKGUsIHJhci0+ZmlsZS5lX2F0aW1lLCAwKTsKKwl9CisKKwlpZihmbGFncyAmIEhBU19VTklYX05TKSB7CisJCWlmKCFyZWFkX3UzMihhLCAmcmFyLT5maWxlLmVfdW5peF9ucykpCisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwkJKmV4dHJhX2RhdGFfc2l6ZSAtPSA0OworCX0KKworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgaW50IHBhcnNlX2ZpbGVfZXh0cmFfcmVkaXIoc3RydWN0IGFyY2hpdmVfcmVhZCogYSwKKyAgICBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSogZSwgc3RydWN0IHJhcjUqIHJhciwgc3NpemVfdCogZXh0cmFfZGF0YV9zaXplKQoreworCXVpbnQ2NF90IHZhbHVlX3NpemUgPSAwOworCXNpemVfdCB0YXJnZXRfc2l6ZSA9IDA7CisJY2hhciB0YXJnZXRfdXRmOF9idWZbTUFYX05BTUVfSU5fQllURVNdOworCWNvbnN0IHVpbnQ4X3QqIHA7CisKKwlpZighcmVhZF92YXIoYSwgJnJhci0+ZmlsZS5yZWRpcl90eXBlLCAmdmFsdWVfc2l6ZSkpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKwlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgKGludDY0X3QpdmFsdWVfc2l6ZSkpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKwkqZXh0cmFfZGF0YV9zaXplIC09IHZhbHVlX3NpemU7CisKKwlpZighcmVhZF92YXIoYSwgJnJhci0+ZmlsZS5yZWRpcl9mbGFncywgJnZhbHVlX3NpemUpKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJaWYoQVJDSElWRV9PSyAhPSBjb25zdW1lKGEsIChpbnQ2NF90KXZhbHVlX3NpemUpKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJKmV4dHJhX2RhdGFfc2l6ZSAtPSB2YWx1ZV9zaXplOworCisJaWYoIXJlYWRfdmFyX3NpemVkKGEsICZ0YXJnZXRfc2l6ZSwgTlVMTCkpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKwkqZXh0cmFfZGF0YV9zaXplIC09IHRhcmdldF9zaXplICsgMTsKKworCWlmKCFyZWFkX2FoZWFkKGEsIHRhcmdldF9zaXplLCAmcCkpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKworCWlmKHRhcmdldF9zaXplID4gKE1BWF9OQU1FX0lOX0NIQVJTIC0gMSkpIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCSAgICAiTGluayB0YXJnZXQgaXMgdG9vIGxvbmciKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJaWYodGFyZ2V0X3NpemUgPT0gMCkgeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJICAgICJObyBsaW5rIHRhcmdldCBzcGVjaWZpZWQiKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJbWVtY3B5KHRhcmdldF91dGY4X2J1ZiwgcCwgdGFyZ2V0X3NpemUpOworCXRhcmdldF91dGY4X2J1Zlt0YXJnZXRfc2l6ZV0gPSAwOworCisJaWYoQVJDSElWRV9PSyAhPSBjb25zdW1lKGEsIChpbnQ2NF90KXRhcmdldF9zaXplKSkKKwkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCisJc3dpdGNoKHJhci0+ZmlsZS5yZWRpcl90eXBlKSB7CisJCWNhc2UgUkVESVJfVFlQRV9VTklYU1lNTElOSzoKKwkJY2FzZSBSRURJUl9UWVBFX1dJTlNZTUxJTks6CisJCQlhcmNoaXZlX2VudHJ5X3NldF9maWxldHlwZShlLCBBRV9JRkxOSyk7CisJCQlhcmNoaXZlX2VudHJ5X3VwZGF0ZV9zeW1saW5rX3V0ZjgoZSwgdGFyZ2V0X3V0ZjhfYnVmKTsKKwkJCWlmIChyYXItPmZpbGUucmVkaXJfZmxhZ3MgJiBSRURJUl9TWU1MSU5LX0lTX0RJUikgeworCQkJCWFyY2hpdmVfZW50cnlfc2V0X3N5bWxpbmtfdHlwZShlLAorCQkJCQlBRV9TWU1MSU5LX1RZUEVfRElSRUNUT1JZKTsKKwkJCX0gZWxzZSB7CisJCQkJYXJjaGl2ZV9lbnRyeV9zZXRfc3ltbGlua190eXBlKGUsCisJCQkJQUVfU1lNTElOS19UWVBFX0ZJTEUpOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBSRURJUl9UWVBFX0hBUkRMSU5LOgorCQkJYXJjaGl2ZV9lbnRyeV9zZXRfZmlsZXR5cGUoZSwgQUVfSUZSRUcpOworCQkJYXJjaGl2ZV9lbnRyeV91cGRhdGVfaGFyZGxpbmtfdXRmOChlLCB0YXJnZXRfdXRmOF9idWYpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCS8qIFVua25vd24gcmVkaXIgdHlwZSwgc2tpcCBpdC4gKi8KKwkJCWJyZWFrOworCX0KKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworc3RhdGljIGludCBwYXJzZV9maWxlX2V4dHJhX293bmVyKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsCisgICAgc3RydWN0IGFyY2hpdmVfZW50cnkqIGUsIHNzaXplX3QqIGV4dHJhX2RhdGFfc2l6ZSkKK3sKKwl1aW50NjRfdCBmbGFncyA9IDA7CisJdWludDY0X3QgdmFsdWVfc2l6ZSA9IDA7CisJdWludDY0X3QgaWQgPSAwOworCXNpemVfdCBuYW1lX2xlbiA9IDA7CisJc2l6ZV90IG5hbWVfc2l6ZSA9IDA7CisJY2hhciBuYW1lYnVmW09XTkVSX01BWE5BTUVMRU5dOworCWNvbnN0IHVpbnQ4X3QqIHA7CisKKwlpZighcmVhZF92YXIoYSwgJmZsYWdzLCAmdmFsdWVfc2l6ZSkpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKwlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgKGludDY0X3QpdmFsdWVfc2l6ZSkpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKwkqZXh0cmFfZGF0YV9zaXplIC09IHZhbHVlX3NpemU7CisKKwlpZiAoKGZsYWdzICYgT1dORVJfVVNFUl9OQU1FKSAhPSAwKSB7CisJCWlmKCFyZWFkX3Zhcl9zaXplZChhLCAmbmFtZV9zaXplLCBOVUxMKSkKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKwkJKmV4dHJhX2RhdGFfc2l6ZSAtPSBuYW1lX3NpemUgKyAxOworCisJCWlmKCFyZWFkX2FoZWFkKGEsIG5hbWVfc2l6ZSwgJnApKQorCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCisJCWlmIChuYW1lX3NpemUgPj0gT1dORVJfTUFYTkFNRUxFTikgeworCQkJbmFtZV9sZW4gPSBPV05FUl9NQVhOQU1FTEVOIC0gMTsKKwkJfSBlbHNlIHsKKwkJCW5hbWVfbGVuID0gbmFtZV9zaXplOworCQl9CisKKwkJbWVtY3B5KG5hbWVidWYsIHAsIG5hbWVfbGVuKTsKKwkJbmFtZWJ1ZltuYW1lX2xlbl0gPSAwOworCQlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgKGludDY0X3QpbmFtZV9zaXplKSkKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKworCQlhcmNoaXZlX2VudHJ5X3NldF91bmFtZShlLCBuYW1lYnVmKTsKKwl9CisJaWYgKChmbGFncyAmIE9XTkVSX0dST1VQX05BTUUpICE9IDApIHsKKwkJaWYoIXJlYWRfdmFyX3NpemVkKGEsICZuYW1lX3NpemUsIE5VTEwpKQorCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCQkqZXh0cmFfZGF0YV9zaXplIC09IG5hbWVfc2l6ZSArIDE7CisKKwkJaWYoIXJlYWRfYWhlYWQoYSwgbmFtZV9zaXplLCAmcCkpCisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwkJaWYgKG5hbWVfc2l6ZSA+PSBPV05FUl9NQVhOQU1FTEVOKSB7CisJCQluYW1lX2xlbiA9IE9XTkVSX01BWE5BTUVMRU4gLSAxOworCQl9IGVsc2UgeworCQkJbmFtZV9sZW4gPSBuYW1lX3NpemU7CisJCX0KKworCQltZW1jcHkobmFtZWJ1ZiwgcCwgbmFtZV9sZW4pOworCQluYW1lYnVmW25hbWVfbGVuXSA9IDA7CisJCWlmKEFSQ0hJVkVfT0sgIT0gY29uc3VtZShhLCAoaW50NjRfdCluYW1lX3NpemUpKQorCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCisJCWFyY2hpdmVfZW50cnlfc2V0X2duYW1lKGUsIG5hbWVidWYpOworCX0KKwlpZiAoKGZsYWdzICYgT1dORVJfVVNFUl9VSUQpICE9IDApIHsKKwkJaWYoIXJlYWRfdmFyKGEsICZpZCwgJnZhbHVlX3NpemUpKQorCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCQlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgKGludDY0X3QpdmFsdWVfc2l6ZSkpCisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJCSpleHRyYV9kYXRhX3NpemUgLT0gdmFsdWVfc2l6ZTsKKworCQlhcmNoaXZlX2VudHJ5X3NldF91aWQoZSwgKGxhX2ludDY0X3QpaWQpOworCX0KKwlpZiAoKGZsYWdzICYgT1dORVJfR1JPVVBfR0lEKSAhPSAwKSB7CisJCWlmKCFyZWFkX3ZhcihhLCAmaWQsICZ2YWx1ZV9zaXplKSkKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKwkJaWYoQVJDSElWRV9PSyAhPSBjb25zdW1lKGEsIChpbnQ2NF90KXZhbHVlX3NpemUpKQorCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCQkqZXh0cmFfZGF0YV9zaXplIC09IHZhbHVlX3NpemU7CisKKwkJYXJjaGl2ZV9lbnRyeV9zZXRfZ2lkKGUsIChsYV9pbnQ2NF90KWlkKTsKKwl9CisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19oZWFkX2ZpbGVfZXh0cmEoc3RydWN0IGFyY2hpdmVfcmVhZCogYSwKKyAgICBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSogZSwgc3RydWN0IHJhcjUqIHJhciwgc3NpemVfdCBleHRyYV9kYXRhX3NpemUpCit7CisJc2l6ZV90IGV4dHJhX2ZpZWxkX3NpemU7CisJc2l6ZV90IGV4dHJhX2ZpZWxkX2lkID0gMDsKKwlpbnQgcmV0ID0gQVJDSElWRV9GQVRBTDsKKwlzaXplX3QgdmFyX3NpemU7CisKKwl3aGlsZShleHRyYV9kYXRhX3NpemUgPiAwKSB7CisJCWlmKCFyZWFkX3Zhcl9zaXplZChhLCAmZXh0cmFfZmllbGRfc2l6ZSwgJnZhcl9zaXplKSkKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKworCQlleHRyYV9kYXRhX3NpemUgLT0gdmFyX3NpemU7CisJCWlmKEFSQ0hJVkVfT0sgIT0gY29uc3VtZShhLCB2YXJfc2l6ZSkpIHsKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKwkJfQorCisJCWlmKCFyZWFkX3Zhcl9zaXplZChhLCAmZXh0cmFfZmllbGRfaWQsICZ2YXJfc2l6ZSkpCisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwkJZXh0cmFfZGF0YV9zaXplIC09IHZhcl9zaXplOworCQlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgdmFyX3NpemUpKSB7CisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJCX0KKworCQlzd2l0Y2goZXh0cmFfZmllbGRfaWQpIHsKKwkJCWNhc2UgRVhfSEFTSDoKKwkJCQlyZXQgPSBwYXJzZV9maWxlX2V4dHJhX2hhc2goYSwgcmFyLAorCQkJCSAgICAmZXh0cmFfZGF0YV9zaXplKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRVhfSFRJTUU6CisJCQkJcmV0ID0gcGFyc2VfZmlsZV9leHRyYV9odGltZShhLCBlLCByYXIsCisJCQkJICAgICZleHRyYV9kYXRhX3NpemUpOworCQkJCWJyZWFrOworCQkJY2FzZSBFWF9SRURJUjoKKwkJCQlyZXQgPSBwYXJzZV9maWxlX2V4dHJhX3JlZGlyKGEsIGUsIHJhciwKKwkJCQkgICAgJmV4dHJhX2RhdGFfc2l6ZSk7CisJCQkJYnJlYWs7CisJCQljYXNlIEVYX1VPV05FUjoKKwkJCQlyZXQgPSBwYXJzZV9maWxlX2V4dHJhX293bmVyKGEsIGUsCisJCQkJICAgICZleHRyYV9kYXRhX3NpemUpOworCQkJCWJyZWFrOworCQkJY2FzZSBFWF9WRVJTSU9OOgorCQkJCXJldCA9IHBhcnNlX2ZpbGVfZXh0cmFfdmVyc2lvbihhLCBlLAorCQkJCSAgICAmZXh0cmFfZGF0YV9zaXplKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRVhfQ1JZUFQ6CisJCQkJLyogZmFsbHRocm91Z2ggKi8KKwkJCWNhc2UgRVhfU1VCREFUQToKKwkJCQkvKiBmYWxsdGhyb3VnaCAqLworCQkJZGVmYXVsdDoKKwkJCQkvKiBTa2lwIHVuc3VwcG9ydGVkIGVudHJ5LiAqLworCQkJCXJldHVybiBjb25zdW1lKGEsIGV4dHJhX2RhdGFfc2l6ZSk7CisJCX0KKwl9CisKKwlpZihyZXQgIT0gQVJDSElWRV9PSykgeworCQkvKiBBdHRyaWJ1dGUgbm90IGltcGxlbWVudGVkLiAqLworCQlyZXR1cm4gcmV0OworCX0KKworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgaW50IHByb2Nlc3NfaGVhZF9maWxlKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsIHN0cnVjdCByYXI1KiByYXIsCisgICAgc3RydWN0IGFyY2hpdmVfZW50cnkqIGVudHJ5LCBzaXplX3QgYmxvY2tfZmxhZ3MpCit7CisJc3NpemVfdCBleHRyYV9kYXRhX3NpemUgPSAwOworCXNpemVfdCBkYXRhX3NpemUgPSAwOworCXNpemVfdCBmaWxlX2ZsYWdzID0gMDsKKwlzaXplX3QgZmlsZV9hdHRyID0gMDsKKwlzaXplX3QgY29tcHJlc3Npb25faW5mbyA9IDA7CisJc2l6ZV90IGhvc3Rfb3MgPSAwOworCXNpemVfdCBuYW1lX3NpemUgPSAwOworCXVpbnQ2NF90IHVucGFja2VkX3NpemUsIHdpbmRvd19zaXplOworCXVpbnQzMl90IG10aW1lID0gMCwgY3JjID0gMDsKKwlpbnQgY19tZXRob2QgPSAwLCBjX3ZlcnNpb24gPSAwOworCWNoYXIgbmFtZV91dGY4X2J1ZltNQVhfTkFNRV9JTl9CWVRFU107CisJY29uc3QgdWludDhfdCogcDsKKworCWVudW0gRklMRV9GTEFHUyB7CisJCURJUkVDVE9SWSA9IDB4MDAwMSwgVVRJTUUgPSAweDAwMDIsIENSQzMyID0gMHgwMDA0LAorCQlVTktOT1dOX1VOUEFDS0VEX1NJWkUgPSAweDAwMDgsCisJfTsKKworCWVudW0gRklMRV9BVFRSUyB7CisJCUFUVFJfUkVBRE9OTFkgPSAweDEsIEFUVFJfSElEREVOID0gMHgyLCBBVFRSX1NZU1RFTSA9IDB4NCwKKwkJQVRUUl9ESVJFQ1RPUlkgPSAweDEwLAorCX07CisKKwllbnVtIENPTVBfSU5GT19GTEFHUyB7CisJCVNPTElEID0gMHgwMDQwLAorCX07CisKKwllbnVtIEhPU1RfT1MgeworCQlIT1NUX1dJTkRPV1MgPSAwLAorCQlIT1NUX1VOSVggPSAxLAorCX07CisKKwlhcmNoaXZlX2VudHJ5X2NsZWFyKGVudHJ5KTsKKworCS8qIERvIG5vdCByZXNldCBmaWxlIGNvbnRleHQgaWYgd2UncmUgc3dpdGNoaW5nIGFyY2hpdmVzLiAqLworCWlmKCFyYXItPmNzdGF0ZS5zd2l0Y2hfbXVsdGl2b2x1bWUpIHsKKwkJcmVzZXRfZmlsZV9jb250ZXh0KHJhcik7CisJfQorCisJaWYoYmxvY2tfZmxhZ3MgJiBIRkxfRVhUUkFfREFUQSkgeworCQlzaXplX3QgZWRhdGFfc2l6ZSA9IDA7CisJCWlmKCFyZWFkX3Zhcl9zaXplZChhLCAmZWRhdGFfc2l6ZSwgTlVMTCkpCisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwkJLyogSW50ZW50aW9uYWwgdHlwZSBjYXN0IGZyb20gdW5zaWduZWQgdG8gc2lnbmVkLiAqLworCQlleHRyYV9kYXRhX3NpemUgPSAoc3NpemVfdCkgZWRhdGFfc2l6ZTsKKwl9CisKKwlpZihibG9ja19mbGFncyAmIEhGTF9EQVRBKSB7CisJCWlmKCFyZWFkX3Zhcl9zaXplZChhLCAmZGF0YV9zaXplLCBOVUxMKSkKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKworCQlyYXItPmZpbGUuYnl0ZXNfcmVtYWluaW5nID0gZGF0YV9zaXplOworCX0gZWxzZSB7CisJCXJhci0+ZmlsZS5ieXRlc19yZW1haW5pbmcgPSAwOworCisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkJCSJubyBkYXRhIGZvdW5kIGluIGZpbGUvc2VydmljZSBibG9jayIpOworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwlpZighcmVhZF92YXJfc2l6ZWQoYSwgJmZpbGVfZmxhZ3MsIE5VTEwpKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwlpZighcmVhZF92YXIoYSwgJnVucGFja2VkX3NpemUsIE5VTEwpKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwlpZihmaWxlX2ZsYWdzICYgVU5LTk9XTl9VTlBBQ0tFRF9TSVpFKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX1BST0dSQU1NRVIsCisJCSAgICAiRmlsZXMgd2l0aCB1bmtub3duIHVucGFja2VkIHNpemUgYXJlIG5vdCBzdXBwb3J0ZWQiKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJcmFyLT5maWxlLmRpciA9ICh1aW50OF90KSAoKGZpbGVfZmxhZ3MgJiBESVJFQ1RPUlkpID4gMCk7CisKKwlpZighcmVhZF92YXJfc2l6ZWQoYSwgJmZpbGVfYXR0ciwgTlVMTCkpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKworCWlmKGZpbGVfZmxhZ3MgJiBVVElNRSkgeworCQlpZighcmVhZF91MzIoYSwgJm10aW1lKSkKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKwl9CisKKwlpZihmaWxlX2ZsYWdzICYgQ1JDMzIpIHsKKwkJaWYoIXJlYWRfdTMyKGEsICZjcmMpKQorCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCX0KKworCWlmKCFyZWFkX3Zhcl9zaXplZChhLCAmY29tcHJlc3Npb25faW5mbywgTlVMTCkpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKworCWNfbWV0aG9kID0gKGludCkgKGNvbXByZXNzaW9uX2luZm8gPj4gNykgJiAweDc7CisJY192ZXJzaW9uID0gKGludCkgKGNvbXByZXNzaW9uX2luZm8gJiAweDNmKTsKKworCS8qIFJBUjUgc2VlbXMgdG8gbGltaXQgdGhlIGRpY3Rpb25hcnkgc2l6ZSB0byA2NE1CLiAqLworCXdpbmRvd19zaXplID0gKHJhci0+ZmlsZS5kaXIgPiAwKSA/CisJCTAgOgorCQlnX3VucGFja193aW5kb3dfc2l6ZSA8PCAoKGNvbXByZXNzaW9uX2luZm8gPj4gMTApICYgMTUpOworCXJhci0+Y3N0YXRlLm1ldGhvZCA9IGNfbWV0aG9kOworCXJhci0+Y3N0YXRlLnZlcnNpb24gPSBjX3ZlcnNpb24gKyA1MDsKKwlyYXItPmZpbGUuc29saWQgPSAoY29tcHJlc3Npb25faW5mbyAmIFNPTElEKSA+IDA7CisKKwkvKiBBcmNoaXZlcyB3aGljaCBkZWNsYXJlIHNvbGlkIGZpbGVzIHdpdGhvdXQgaW5pdGlhbGl6aW5nIHRoZSB3aW5kb3cKKwkgKiBidWZmZXIgZmlyc3QgYXJlIGludmFsaWQuICovCisKKwlpZihyYXItPmZpbGUuc29saWQgPiAwICYmIHJhci0+Y3N0YXRlLndpbmRvd19idWYgPT0gTlVMTCkgeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCQkgICJEZWNsYXJlZCBzb2xpZCBmaWxlLCBidXQgbm8gd2luZG93IGJ1ZmZlciAiCisJCQkJICAiaW5pdGlhbGl6ZWQgeWV0LiIpOworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwkvKiBDaGVjayBpZiB3aW5kb3dfc2l6ZSBpcyBhIHNhbmUgdmFsdWUuIEFsc28sIGlmIHRoZSBmaWxlIGlzIG5vdAorCSAqIGRlY2xhcmVkIGFzIGEgZGlyZWN0b3J5LCBkaXNhbGxvdyB3aW5kb3dfc2l6ZSA9PSAwLiAqLworCWlmKHdpbmRvd19zaXplID4gKDY0ICogMTAyNCAqIDEwMjQpIHx8CisJICAgIChyYXItPmZpbGUuZGlyID09IDAgJiYgd2luZG93X3NpemUgPT0gMCkpCisJeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJICAgICJEZWNsYXJlZCBkaWN0aW9uYXJ5IHNpemUgaXMgbm90IHN1cHBvcnRlZC4iKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJaWYocmFyLT5maWxlLnNvbGlkID4gMCkgeworCQkvKiBSZS1jaGVjayBpZiBjdXJyZW50IHdpbmRvdyBzaXplIGlzIHRoZSBzYW1lIGFzIHByZXZpb3VzCisJCSAqIHdpbmRvdyBzaXplIChmb3Igc29saWQgZmlsZXMgb25seSkuICovCisJCWlmKHJhci0+ZmlsZS5zb2xpZF93aW5kb3dfc2l6ZSA+IDAgJiYKKwkJICAgIHJhci0+ZmlsZS5zb2xpZF93aW5kb3dfc2l6ZSAhPSAoc3NpemVfdCkgd2luZG93X3NpemUpCisJCXsKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkJICAgICJXaW5kb3cgc2l6ZSBmb3IgdGhpcyBzb2xpZCBmaWxlIGRvZXNuJ3QgbWF0Y2ggIgorCQkJICAgICJ0aGUgd2luZG93IHNpemUgdXNlZCBpbiBwcmV2aW91cyBzb2xpZCBmaWxlLiAiKTsKKwkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCQl9CisJfQorCisJLyogSWYgd2UncmUgY3VycmVudGx5IHN3aXRjaGluZyB2b2x1bWVzLCBpZ25vcmUgdGhlIG5ldyBkZWZpbml0aW9uIG9mCisJICogd2luZG93X3NpemUuICovCisJaWYocmFyLT5jc3RhdGUuc3dpdGNoX211bHRpdm9sdW1lID09IDApIHsKKwkJLyogVmFsdWVzIHVwIHRvIDY0TSBzaG91bGQgZml0IGludG8gc3NpemVfdCBvbiBldmVyeQorCQkgKiBhcmNoaXRlY3R1cmUuICovCisJCXJhci0+Y3N0YXRlLndpbmRvd19zaXplID0gKHNzaXplX3QpIHdpbmRvd19zaXplOworCX0KKworCWlmKHJhci0+ZmlsZS5zb2xpZCA+IDAgJiYgcmFyLT5maWxlLnNvbGlkX3dpbmRvd19zaXplID09IDApIHsKKwkJLyogU29saWQgZmlsZXMgaGF2ZSB0byBoYXZlIHRoZSBzYW1lIHdpbmRvd19zaXplIGFjcm9zcworCQkgICB3aG9sZSBhcmNoaXZlLiBSZW1lbWJlciB0aGUgd2luZG93X3NpemUgcGFyYW1ldGVyCisJCSAgIGZvciBmaXJzdCBzb2xpZCBmaWxlIGZvdW5kLiAqLworCQlyYXItPmZpbGUuc29saWRfd2luZG93X3NpemUgPSByYXItPmNzdGF0ZS53aW5kb3dfc2l6ZTsKKwl9CisKKwlpbml0X3dpbmRvd19tYXNrKHJhcik7CisKKwlyYXItPmZpbGUuc2VydmljZSA9IDA7CisKKwlpZighcmVhZF92YXJfc2l6ZWQoYSwgJmhvc3Rfb3MsIE5VTEwpKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwlpZihob3N0X29zID09IEhPU1RfV0lORE9XUykgeworCQkvKiBIb3N0IE9TIGlzIFdpbmRvd3MgKi8KKworCQlfX0xBX01PREVfVCBtb2RlOworCisJCWlmKGZpbGVfYXR0ciAmIEFUVFJfRElSRUNUT1JZKSB7CisJCQlpZiAoZmlsZV9hdHRyICYgQVRUUl9SRUFET05MWSkgeworCQkJCW1vZGUgPSAwNTU1IHwgQUVfSUZESVI7CisJCQl9IGVsc2UgeworCQkJCW1vZGUgPSAwNzU1IHwgQUVfSUZESVI7CisJCQl9CisJCX0gZWxzZSB7CisJCQlpZiAoZmlsZV9hdHRyICYgQVRUUl9SRUFET05MWSkgeworCQkJCW1vZGUgPSAwNDQ0IHwgQUVfSUZSRUc7CisJCQl9IGVsc2UgeworCQkJCW1vZGUgPSAwNjQ0IHwgQUVfSUZSRUc7CisJCQl9CisJCX0KKworCQlhcmNoaXZlX2VudHJ5X3NldF9tb2RlKGVudHJ5LCBtb2RlKTsKKworCQlpZiAoZmlsZV9hdHRyICYgKEFUVFJfUkVBRE9OTFkgfCBBVFRSX0hJRERFTiB8IEFUVFJfU1lTVEVNKSkgeworCQkJY2hhciAqZmZsYWdzX3RleHQsICpwdHI7CisJCQkvKiBhbGxvY2F0ZSBmb3IgInJkb25seSxoaWRkZW4sc3lzdGVtLCIgKi8KKwkJCWZmbGFnc190ZXh0ID0gbWFsbG9jKDIyICogc2l6ZW9mKGNoYXIpKTsKKwkJCWlmIChmZmxhZ3NfdGV4dCAhPSBOVUxMKSB7CisJCQkJcHRyID0gZmZsYWdzX3RleHQ7CisJCQkJaWYgKGZpbGVfYXR0ciAmIEFUVFJfUkVBRE9OTFkpIHsKKwkJCQkJc3RyY3B5KHB0ciwgInJkb25seSwiKTsKKwkJCQkJcHRyID0gcHRyICsgNzsKKwkJCQl9CisJCQkJaWYgKGZpbGVfYXR0ciAmIEFUVFJfSElEREVOKSB7CisJCQkJCXN0cmNweShwdHIsICJoaWRkZW4sIik7CisJCQkJCXB0ciA9IHB0ciArIDc7CisJCQkJfQorCQkJCWlmIChmaWxlX2F0dHIgJiBBVFRSX1NZU1RFTSkgeworCQkJCQlzdHJjcHkocHRyLCAic3lzdGVtLCIpOworCQkJCQlwdHIgPSBwdHIgKyA3OworCQkJCX0KKwkJCQlpZiAocHRyID4gZmZsYWdzX3RleHQpIHsKKwkJCQkJLyogRGVsZXRlIHRyYWlsaW5nIGNvbW1hICovCisJCQkJCSoocHRyIC0gMSkgPSAnXDAnOworCQkJCQlhcmNoaXZlX2VudHJ5X2NvcHlfZmZsYWdzX3RleHQoZW50cnksCisJCQkJCSAgICBmZmxhZ3NfdGV4dCk7CisJCQkJfQorCQkJCWZyZWUoZmZsYWdzX3RleHQpOworCQkJfQorCQl9CisJfSBlbHNlIGlmKGhvc3Rfb3MgPT0gSE9TVF9VTklYKSB7CisJCS8qIEhvc3QgT1MgaXMgVW5peCAqLworCQlhcmNoaXZlX2VudHJ5X3NldF9tb2RlKGVudHJ5LCAoX19MQV9NT0RFX1QpIGZpbGVfYXR0cik7CisJfSBlbHNlIHsKKwkJLyogVW5rbm93biBob3N0IE9TICovCisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkJCSJVbnN1cHBvcnRlZCBIb3N0IE9TOiAweCV4IiwgKGludCkgaG9zdF9vcyk7CisKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJaWYoIXJlYWRfdmFyX3NpemVkKGEsICZuYW1lX3NpemUsIE5VTEwpKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwlpZighcmVhZF9haGVhZChhLCBuYW1lX3NpemUsICZwKSkKKwkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCisJaWYobmFtZV9zaXplID4gKE1BWF9OQU1FX0lOX0NIQVJTIC0gMSkpIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkJIkZpbGVuYW1lIGlzIHRvbyBsb25nIik7CisKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJaWYobmFtZV9zaXplID09IDApIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkJIk5vIGZpbGVuYW1lIHNwZWNpZmllZCIpOworCisJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCX0KKworCW1lbWNweShuYW1lX3V0ZjhfYnVmLCBwLCBuYW1lX3NpemUpOworCW5hbWVfdXRmOF9idWZbbmFtZV9zaXplXSA9IDA7CisJaWYoQVJDSElWRV9PSyAhPSBjb25zdW1lKGEsIG5hbWVfc2l6ZSkpIHsKKwkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCX0KKworCWFyY2hpdmVfZW50cnlfdXBkYXRlX3BhdGhuYW1lX3V0ZjgoZW50cnksIG5hbWVfdXRmOF9idWYpOworCisJaWYoZXh0cmFfZGF0YV9zaXplID4gMCkgeworCQlpbnQgcmV0ID0gcHJvY2Vzc19oZWFkX2ZpbGVfZXh0cmEoYSwgZW50cnksIHJhciwKKwkJICAgIGV4dHJhX2RhdGFfc2l6ZSk7CisKKwkJLyoKKwkJICogVE9ETzogcmV3cml0ZSBvciByZW1vdmUgdXNlbGVzcyBzYW5pdHkgY2hlY2sKKwkJICogICAgICAgYXMgZXh0cmFfZGF0YV9zaXplIGlzIG5vdCBwYXNzZWQgYXMgYSBwb2ludGVyCisJCSAqCisJCWlmKGV4dHJhX2RhdGFfc2l6ZSA8IDApIHsKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX1BST0dSQU1NRVIsCisJCQkgICAgIkZpbGUgZXh0cmEgZGF0YSBzaXplIGlzIG5vdCB6ZXJvIik7CisJCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwkJfQorCQkgKi8KKworCQlpZihyZXQgIT0gQVJDSElWRV9PSykKKwkJCXJldHVybiByZXQ7CisJfQorCisJaWYoKGZpbGVfZmxhZ3MgJiBVTktOT1dOX1VOUEFDS0VEX1NJWkUpID09IDApIHsKKwkJcmFyLT5maWxlLnVucGFja2VkX3NpemUgPSAoc3NpemVfdCkgdW5wYWNrZWRfc2l6ZTsKKwkJaWYocmFyLT5maWxlLnJlZGlyX3R5cGUgPT0gUkVESVJfVFlQRV9OT05FKQorCQkJYXJjaGl2ZV9lbnRyeV9zZXRfc2l6ZShlbnRyeSwgdW5wYWNrZWRfc2l6ZSk7CisJfQorCisJaWYoZmlsZV9mbGFncyAmIFVUSU1FKSB7CisJCWFyY2hpdmVfZW50cnlfc2V0X210aW1lKGVudHJ5LCAodGltZV90KSBtdGltZSwgMCk7CisJfQorCisJaWYoZmlsZV9mbGFncyAmIENSQzMyKSB7CisJCXJhci0+ZmlsZS5zdG9yZWRfY3JjMzIgPSBjcmM7CisJfQorCisJaWYoIXJhci0+Y3N0YXRlLnN3aXRjaF9tdWx0aXZvbHVtZSkgeworCQkvKiBEbyBub3QgcmVpbml0aWFsaXplIHVucGFja2luZyBzdGF0ZSBpZiB3ZSdyZSBzd2l0Y2hpbmcKKwkJICogYXJjaGl2ZXMuICovCisJCXJhci0+Y3N0YXRlLmJsb2NrX3BhcnNpbmdfZmluaXNoZWQgPSAxOworCQlyYXItPmNzdGF0ZS5hbGxfZmlsdGVyc19hcHBsaWVkID0gMTsKKwkJcmFyLT5jc3RhdGUuaW5pdGlhbGl6ZWQgPSAwOworCX0KKworCWlmKHJhci0+Z2VuZXJpYy5zcGxpdF9iZWZvcmUgPiAwKSB7CisJCS8qIElmIG5vdyB3ZSdyZSBzdGFuZGluZyBvbiBhIGhlYWRlciB0aGF0IGhhcyBhICdzcGxpdCBiZWZvcmUnCisJCSAqIG1hcmssIGl0IG1lYW5zIHdlJ3JlIHN0YW5kaW5nIG9uIGEgJ2NvbnRpbnVhdGlvbicgZmlsZQorCQkgKiBoZWFkZXIuIFNpZ25hbCB0aGUgY2FsbGVyIHRoYXQgaWYgaXQgd2FudHMgdG8gbW92ZSB0bworCQkgKiBhbm90aGVyIGZpbGUsIGl0IG11c3QgY2FsbCByYXI1X3JlYWRfaGVhZGVyKCkgZnVuY3Rpb24KKwkJICogYWdhaW4uICovCisKKwkJcmV0dXJuIEFSQ0hJVkVfUkVUUlk7CisJfSBlbHNlIHsKKwkJcmV0dXJuIEFSQ0hJVkVfT0s7CisJfQorfQorCitzdGF0aWMgaW50IHByb2Nlc3NfaGVhZF9zZXJ2aWNlKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsIHN0cnVjdCByYXI1KiByYXIsCisgICAgc3RydWN0IGFyY2hpdmVfZW50cnkqIGVudHJ5LCBzaXplX3QgYmxvY2tfZmxhZ3MpCit7CisJLyogUHJvY2VzcyB0aGlzIFNFUlZJQ0UgYmxvY2sgdGhlIHNhbWUgd2F5IGFzIEZJTEUgYmxvY2tzLiAqLworCWludCByZXQgPSBwcm9jZXNzX2hlYWRfZmlsZShhLCByYXIsIGVudHJ5LCBibG9ja19mbGFncyk7CisJaWYocmV0ICE9IEFSQ0hJVkVfT0spCisJCXJldHVybiByZXQ7CisKKwlyYXItPmZpbGUuc2VydmljZSA9IDE7CisKKwkvKiBCdXQgc2tpcCB0aGUgZGF0YSBwYXJ0IGF1dG9tYXRpY2FsbHkuIEl0J3Mgbm8gdXNlIGZvciB0aGUgdXNlcgorCSAqIGFueXdheS4gIEl0IGNvbnRhaW5zIG9ubHkgc2VydmljZSBkYXRhLCBub3QgZXZlbiBuZWVkZWQgdG8KKwkgKiBwcm9wZXJseSB1bnBhY2sgdGhlIGZpbGUuICovCisJcmV0ID0gcmFyNV9yZWFkX2RhdGFfc2tpcChhKTsKKwlpZihyZXQgIT0gQVJDSElWRV9PSykKKwkJcmV0dXJuIHJldDsKKworCS8qIEFmdGVyIHNraXBwaW5nLCB0cnkgcGFyc2luZyBhbm90aGVyIGJsb2NrIGF1dG9tYXRpY2FsbHkuICovCisJcmV0dXJuIEFSQ0hJVkVfUkVUUlk7Cit9CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19oZWFkX21haW4oc3RydWN0IGFyY2hpdmVfcmVhZCogYSwgc3RydWN0IHJhcjUqIHJhciwKKyAgICBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSogZW50cnksIHNpemVfdCBibG9ja19mbGFncykKK3sKKwlpbnQgcmV0OworCXNpemVfdCBleHRyYV9kYXRhX3NpemUgPSAwOworCXNpemVfdCBleHRyYV9maWVsZF9zaXplID0gMDsKKwlzaXplX3QgZXh0cmFfZmllbGRfaWQgPSAwOworCXNpemVfdCBhcmNoaXZlX2ZsYWdzID0gMDsKKworCWVudW0gTUFJTl9GTEFHUyB7CisJCVZPTFVNRSA9IDB4MDAwMSwgICAgICAgICAvKiBtdWx0aS12b2x1bWUgYXJjaGl2ZSAqLworCQlWT0xVTUVfTlVNQkVSID0gMHgwMDAyLCAgLyogdm9sdW1lIG51bWJlciwgZmlyc3Qgdm9sIGRvZXNuJ3QKKwkJCQkJICAqIGhhdmUgaXQgKi8KKwkJU09MSUQgPSAweDAwMDQsICAgICAgICAgIC8qIHNvbGlkIGFyY2hpdmUgKi8KKwkJUFJPVEVDVCA9IDB4MDAwOCwgICAgICAgIC8qIGNvbnRhaW5zIFJlY292ZXJ5IGluZm8gKi8KKwkJTE9DSyA9IDB4MDAxMCwgICAgICAgICAgIC8qIHJlYWRvbmx5IGZsYWcsIG5vdCB1c2VkICovCisJfTsKKworCWVudW0gTUFJTl9FWFRSQSB7CisJCS8vIEp1c3Qgb25lIGF0dHJpYnV0ZSBoZXJlLgorCQlMT0NBVE9SID0gMHgwMSwKKwl9OworCisJKHZvaWQpIGVudHJ5OworCisJaWYoYmxvY2tfZmxhZ3MgJiBIRkxfRVhUUkFfREFUQSkgeworCQlpZighcmVhZF92YXJfc2l6ZWQoYSwgJmV4dHJhX2RhdGFfc2l6ZSwgTlVMTCkpCisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJfSBlbHNlIHsKKwkJZXh0cmFfZGF0YV9zaXplID0gMDsKKwl9CisKKwlpZighcmVhZF92YXJfc2l6ZWQoYSwgJmFyY2hpdmVfZmxhZ3MsIE5VTEwpKSB7CisJCXJldHVybiBBUkNISVZFX0VPRjsKKwl9CisKKwlyYXItPm1haW4udm9sdW1lID0gKGFyY2hpdmVfZmxhZ3MgJiBWT0xVTUUpID4gMDsKKwlyYXItPm1haW4uc29saWQgPSAoYXJjaGl2ZV9mbGFncyAmIFNPTElEKSA+IDA7CisKKwlpZihhcmNoaXZlX2ZsYWdzICYgVk9MVU1FX05VTUJFUikgeworCQlzaXplX3QgdiA9IDA7CisJCWlmKCFyZWFkX3Zhcl9zaXplZChhLCAmdiwgTlVMTCkpIHsKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKwkJfQorCisJCWlmICh2ID4gVUlOVF9NQVgpIHsKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkgICAgIkludmFsaWQgdm9sdW1lIG51bWJlciIpOworCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJCX0KKworCQlyYXItPm1haW4udm9sX25vID0gKHVuc2lnbmVkIGludCkgdjsKKwl9IGVsc2UgeworCQlyYXItPm1haW4udm9sX25vID0gMDsKKwl9CisKKwlpZihyYXItPnZvbC5leHBlY3RlZF92b2xfbm8gPiAwICYmCisJCXJhci0+bWFpbi52b2xfbm8gIT0gcmFyLT52b2wuZXhwZWN0ZWRfdm9sX25vKQorCXsKKwkJLyogUmV0dXJuaW5nIEVPRiBpbnN0ZWFkIG9mIEZBVEFMIGJlY2F1c2Ugb2Ygc3RyYW5nZQorCQkgKiBsaWJhcmNoaXZlIGJlaGF2aW9yLiBXaGVuIG9wZW5pbmcgbXVsdGlwbGUgZmlsZXMgdmlhCisJCSAqIGFyY2hpdmVfcmVhZF9vcGVuX2ZpbGVuYW1lcygpLCBhZnRlciByZWFkaW5nIHVwIHRoZSB3aG9sZQorCQkgKiBsYXN0IGZpbGUsIHRoZSBfX2FyY2hpdmVfcmVhZF9haGVhZCBmdW5jdGlvbiB3cmFwcyB1cCB0bworCQkgKiB0aGUgZmlyc3QgYXJjaGl2ZSBpbnN0ZWFkIG9mIHJldHVybmluZyBFT0YuICovCisJCXJldHVybiBBUkNISVZFX0VPRjsKKwl9CisKKwlpZihleHRyYV9kYXRhX3NpemUgPT0gMCkgeworCQkvKiBFYXJseSByZXR1cm4uICovCisJCXJldHVybiBBUkNISVZFX09LOworCX0KKworCWlmKCFyZWFkX3Zhcl9zaXplZChhLCAmZXh0cmFfZmllbGRfc2l6ZSwgTlVMTCkpIHsKKwkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCX0KKworCWlmKCFyZWFkX3Zhcl9zaXplZChhLCAmZXh0cmFfZmllbGRfaWQsIE5VTEwpKSB7CisJCXJldHVybiBBUkNISVZFX0VPRjsKKwl9CisKKwlpZihleHRyYV9maWVsZF9zaXplID09IDApIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCSAgICAiSW52YWxpZCBleHRyYSBmaWVsZCBzaXplIik7CisJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCX0KKworCXN3aXRjaChleHRyYV9maWVsZF9pZCkgeworCQljYXNlIExPQ0FUT1I6CisJCQlyZXQgPSBwcm9jZXNzX21haW5fbG9jYXRvcl9leHRyYV9ibG9jayhhLCByYXIpOworCQkJaWYocmV0ICE9IEFSQ0hJVkVfT0spIHsKKwkJCQkvKiBFcnJvciB3aGlsZSBwYXJzaW5nIG1haW4gbG9jYXRvciBleHRyYQorCQkJCSAqIGJsb2NrLiAqLworCQkJCXJldHVybiByZXQ7CisJCQl9CisKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCSAgICAiVW5zdXBwb3J0ZWQgZXh0cmEgdHlwZSAoMHgleCkiLAorCQkJICAgIChpbnQpIGV4dHJhX2ZpZWxkX2lkKTsKKwkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCX0KKworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgaW50IHNraXBfdW5wcm9jZXNzZWRfYnl0ZXMoc3RydWN0IGFyY2hpdmVfcmVhZCogYSkgeworCXN0cnVjdCByYXI1KiByYXIgPSBnZXRfY29udGV4dChhKTsKKwlpbnQgcmV0OworCisJaWYocmFyLT5maWxlLmJ5dGVzX3JlbWFpbmluZykgeworCQkvKiBVc2UgZGlmZmVyZW50IHNraXBwaW5nIG1ldGhvZCBpbiBibG9jayBtZXJnaW5nIG1vZGUgdGhhbiBpbgorCQkgKiBub3JtYWwgbW9kZS4gSWYgbWVyZ2UgbW9kZSBpcyBhY3RpdmUsIHJhcjVfcmVhZF9kYXRhX3NraXAKKwkJICogY2FuJ3QgYmUgdXNlZCwgYmVjYXVzZSBpdCBjb3VsZCBhbGxvdyByZWN1cnNpdmUgdXNlIG9mCisJCSAqIG1lcmdlX2Jsb2NrKCkgKiBmdW5jdGlvbiwgYW5kIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBzdXBwb3J0CisJCSAqIHJlY3Vyc2l2ZSB1c2UuICovCisJCWlmKHJhci0+bWVyZ2VfbW9kZSkgeworCQkJLyogRGlzY2FyZCB3aG9sZSBtZXJnZWQgYmxvY2suIFRoaXMgaXMgdmFsaWQgaW4gc29saWQKKwkJCSAqIG1vZGUgYXMgd2VsbCwgYmVjYXVzZSB0aGUgY29kZSB3aWxsIGRpc2NhcmQgYmxvY2tzCisJCQkgKiBvbmx5IGlmIHRob3NlIGJsb2NrcyBhcmUgc2FmZSB0byBkaXNjYXJkIChpLmUuCisJCQkgKiB0aGV5J3JlIG5vdCBGSUxFIGJsb2NrcykuICAqLworCQkJcmV0ID0gY29uc3VtZShhLCByYXItPmZpbGUuYnl0ZXNfcmVtYWluaW5nKTsKKwkJCWlmKHJldCAhPSBBUkNISVZFX09LKSB7CisJCQkJcmV0dXJuIHJldDsKKwkJCX0KKwkJCXJhci0+ZmlsZS5ieXRlc19yZW1haW5pbmcgPSAwOworCQl9IGVsc2UgeworCQkJLyogSWYgd2UncmUgbm90IGluIG1lcmdlIG1vZGUsIHVzZSBzYWZlIHNraXBwaW5nIGNvZGUuCisJCQkgKiBUaGlzIHdpbGwgZW5zdXJlIHdlJ2xsIGhhbmRsZSBzb2xpZCBhcmNoaXZlcworCQkJICogcHJvcGVybHkuICovCisJCQlyZXQgPSByYXI1X3JlYWRfZGF0YV9za2lwKGEpOworCQkJaWYocmV0ICE9IEFSQ0hJVkVfT0spIHsKKwkJCQlyZXR1cm4gcmV0OworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKK3N0YXRpYyBpbnQgc2Nhbl9mb3Jfc2lnbmF0dXJlKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEpOworCisvKiBCYXNlIGJsb2NrIHByb2Nlc3NpbmcgZnVuY3Rpb24uIEEgJ2Jhc2UgYmxvY2snIGlzIGEgUkFSdjUgaGVhZGVyIGJsb2NrCisgKiB0aGF0IHRlbGxzIHRoZSByZWFkZXIgd2hhdCBraW5kIG9mIGRhdGEgaXMgc3RvcmVkIGluc2lkZSB0aGUgYmxvY2suCisgKgorICogRnJvbSB0aGUgYmlyZHMtZXllIHZpZXcgYSBSQVIgZmlsZSBsb29rcyBmaWxlIHRoaXM6CisgKgorICogPG1hZ2ljPjxiYXNlX2Jsb2NrXzE+PGJhc2VfYmxvY2tfMj4uLi48YmFzZV9ibG9ja19uPgorICoKKyAqIFRoZXJlIGFyZSBhIGZldyB0eXBlcyBvZiBiYXNlIGJsb2Nrcy4gVGhvc2UgdHlwZXMgYXJlIHNwZWNpZmllZCBpbnNpZGUKKyAqIHRoZSAnc3dpdGNoJyBzdGF0ZW1lbnQgaW4gdGhpcyBmdW5jdGlvbi4gRm9yIGV4YW1wbGUgcHVycG9zZXMsIEknbGwgd3JpdGUKKyAqIGhvdyBhIHN0YW5kYXJkIFJBUnY1IGZpbGUgY291bGQgbG9vayBsaWtlIGhlcmU6CisgKgorICogPG1hZ2ljPjxNQUlOPjxGSUxFPjxGSUxFPjxGSUxFPjxTRVJWSUNFPjxFTkRBUkM+CisgKgorICogVGhlIHN0cnVjdHVyZSBhYm92ZSBjb3VsZCBkZXNjcmliZSBhbiBhcmNoaXZlIGZpbGUgd2l0aCAzIGZpbGVzIGluIGl0LAorICogb25lIHNlcnZpY2UgIlF1aWNrT3BlbiIgYmxvY2sgKHRoYXQgaXMgaWdub3JlZCBieSB0aGlzIHBhcnNlciksIGFuZCBhbgorICogZW5kIG9mIGZpbGUgYmFzZSBibG9jayBtYXJrZXIuCisgKgorICogSWYgdGhlIGZpbGUgaXMgc3RvcmVkIGluIG11bHRpcGxlIGFyY2hpdmUgZmlsZXMgKCJtdWx0aWFyY2hpdmUiKSwgaXQgbWlnaHQKKyAqIGxvb2sgbGlrZSB0aGlzOgorICoKKyAqIC5wYXJ0MDEucmFyOiA8bWFnaWM+PE1BSU4+PEZJTEU+PEVOREFSQz4KKyAqIC5wYXJ0MDIucmFyOiA8bWFnaWM+PE1BSU4+PEZJTEU+PEVOREFSQz4KKyAqIC5wYXJ0MDMucmFyOiA8bWFnaWM+PE1BSU4+PEZJTEU+PEVOREFSQz4KKyAqCisgKiBUaGlzIGV4YW1wbGUgY291bGQgZGVzY3JpYmUgMyBSQVIgZmlsZXMgdGhhdCBjb250YWluIE9ORSBhcmNoaXZlZCBmaWxlLgorICogT3IgaXQgY291bGQgZGVzY3JpYmUgMyBSQVIgZmlsZXMgdGhhdCBjb250YWluIDMgZGlmZmVyZW50IGZpbGVzLiBPciAzCisgKiBSQVIgZmlsZXMgdGhhbiBjb250YWluIDIgZmlsZXMuIEl0IGFsbCBkZXBlbmRzIHdoYXQgbWV0YWRhdGEgaXMgc3RvcmVkIGluCisgKiB0aGUgaGVhZGVycyBvZiA8RklMRT4gYmxvY2tzLgorICoKKyAqIEVhY2ggPEZJTEU+IGJsb2NrIGNvbnRhaW5zIGluZm8gYWJvdXQgaXRzIHNpemUsIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGl0J3MKKyAqIHN0b3JpbmcgaW5zaWRlLCBhbmQgd2hldGhlciB0aGlzIEZJTEUgYmxvY2sgaXMgYSBjb250aW51YXRpb24gYmxvY2sgb2YKKyAqIHByZXZpb3VzIGFyY2hpdmUgKCdzcGxpdCBiZWZvcmUnKSwgYW5kIGlzIHRoaXMgRklMRSBibG9jayBzaG91bGQgYmUKKyAqIGNvbnRpbnVlZCBpbiBhbm90aGVyIGFyY2hpdmUgKCdzcGxpdCBhZnRlcicpLiBCeSBwYXJzaW5nIHRoZSAnc3BsaXQgYmVmb3JlJworICogYW5kICdzcGxpdCBhZnRlcicgZmxhZ3MsIHdlJ3JlIGFibGUgdG8gdGVsbCBpZiBtdWx0aXBsZSA8RklMRT4gYmFzZSBibG9ja3MKKyAqIGFyZSBkZXNjcmliaW5nIG9uZSBmaWxlLCBvciBtdWx0aXBsZSBmaWxlcyAod2l0aCB0aGUgc2FtZSBmaWxlbmFtZSwgZm9yCisgKiBleGFtcGxlKS4KKyAqCisgKiBPbmUgdGhpbmcgdG8gbm90ZSBpcyB0aGF0IGlmIHdlJ3JlIHBhcnNpbmcgdGhlIGZpcnN0IDxGSUxFPiBibG9jaywgYW5kCisgKiB3ZSBzZWUgJ3NwbGl0IGFmdGVyJyBmbGFnLCB0aGVuIHdlIG5lZWQgdG8ganVtcCBvdmVyIHRvIGFub3RoZXIgPEZJTEU+CisgKiBibG9jayB0byBiZSBhYmxlIHRvIGRlY29tcHJlc3MgcmVzdCBvZiB0aGUgZGF0YS4gVG8gZG8gdGhpcywgd2UgbmVlZAorICogdG8gc2tpcCB0aGUgPEVOREFSQz4gYmxvY2ssIHRoZW4gc3dpdGNoIHRvIGFub3RoZXIgZmlsZSwgdGhlbiBza2lwIHRoZQorICogPG1hZ2ljPiBibG9jaywgPE1BSU4+IGJsb2NrLCBhbmQgdGhlbiB3ZSdyZSBzdGFuZGluZyBvbiB0aGUgcHJvcGVyCisgKiA8RklMRT4gYmxvY2suCisgKi8KKworc3RhdGljIGludCBwcm9jZXNzX2Jhc2VfYmxvY2soc3RydWN0IGFyY2hpdmVfcmVhZCogYSwKKyAgICBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSogZW50cnkpCit7CisJY29uc3Qgc2l6ZV90IFNNQUxMRVNUX1JBUjVfQkxPQ0tfU0laRSA9IDM7CisKKwlzdHJ1Y3QgcmFyNSogcmFyID0gZ2V0X2NvbnRleHQoYSk7CisJdWludDMyX3QgaGRyX2NyYywgY29tcHV0ZWRfY3JjOworCXNpemVfdCByYXdfaGRyX3NpemUgPSAwLCBoZHJfc2l6ZV9sZW4sIGhkcl9zaXplOworCXNpemVfdCBoZWFkZXJfaWQgPSAwOworCXNpemVfdCBoZWFkZXJfZmxhZ3MgPSAwOworCWNvbnN0IHVpbnQ4X3QqIHA7CisJaW50IHJldDsKKworCWVudW0gSEVBREVSX1RZUEUgeworCQlIRUFEX01BUksgICAgPSAweDAwLCBIRUFEX01BSU4gID0gMHgwMSwgSEVBRF9GSUxFICAgPSAweDAyLAorCQlIRUFEX1NFUlZJQ0UgPSAweDAzLCBIRUFEX0NSWVBUID0gMHgwNCwgSEVBRF9FTkRBUkMgPSAweDA1LAorCQlIRUFEX1VOS05PV04gPSAweGZmLAorCX07CisKKwkvKiBTa2lwIGFueSB1bnByb2Nlc3NlZCBkYXRhIGZvciB0aGlzIGZpbGUuICovCisJcmV0ID0gc2tpcF91bnByb2Nlc3NlZF9ieXRlcyhhKTsKKwlpZihyZXQgIT0gQVJDSElWRV9PSykKKwkJcmV0dXJuIHJldDsKKworCS8qIFJlYWQgdGhlIGV4cGVjdGVkIENSQzMyIGNoZWNrc3VtLiAqLworCWlmKCFyZWFkX3UzMihhLCAmaGRyX2NyYykpIHsKKwkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCX0KKworCS8qIFJlYWQgaGVhZGVyIHNpemUuICovCisJaWYoIXJlYWRfdmFyX3NpemVkKGEsICZyYXdfaGRyX3NpemUsICZoZHJfc2l6ZV9sZW4pKSB7CisJCXJldHVybiBBUkNISVZFX0VPRjsKKwl9CisKKwloZHJfc2l6ZSA9IHJhd19oZHJfc2l6ZSArIGhkcl9zaXplX2xlbjsKKworCS8qIFNhbml0eSBjaGVjaywgbWF4aW11bSBoZWFkZXIgc2l6ZSBmb3IgUkFSNSBpcyAyTUIuICovCisJaWYoaGRyX3NpemUgPiAoMiAqIDEwMjQgKiAxMDI0KSkgeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJICAgICJCYXNlIGJsb2NrIGhlYWRlciBpcyB0b28gbGFyZ2UiKTsKKworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwkvKiBBZGRpdGlvbmFsIHNhbml0eSBjaGVja3MgdG8gd2VlZCBvdXQgaW52YWxpZCBmaWxlcy4gKi8KKwlpZihyYXdfaGRyX3NpemUgPT0gMCB8fCBoZHJfc2l6ZV9sZW4gPT0gMCB8fAorCQloZHJfc2l6ZSA8IFNNQUxMRVNUX1JBUjVfQkxPQ0tfU0laRSkKKwl7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIlRvbyBzbWFsbCBibG9jayBlbmNvdW50ZXJlZCAoJXp1IGJ5dGVzKSIsCisJCSAgICByYXdfaGRyX3NpemUpOworCisJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCX0KKworCS8qIFJlYWQgdGhlIHdob2xlIGhlYWRlciBkYXRhIGludG8gbWVtb3J5LCBtYXhpbXVtIG1lbW9yeSB1c2UgaGVyZSBpcworCSAqIDJNQi4gKi8KKwlpZighcmVhZF9haGVhZChhLCBoZHJfc2l6ZSwgJnApKSB7CisJCXJldHVybiBBUkNISVZFX0VPRjsKKwl9CisKKwkvKiBWZXJpZnkgdGhlIENSQzMyIG9mIHRoZSBoZWFkZXIgZGF0YS4gKi8KKwljb21wdXRlZF9jcmMgPSAodWludDMyX3QpIGNyYzMyKDAsIHAsIChpbnQpIGhkcl9zaXplKTsKKwlpZihjb21wdXRlZF9jcmMgIT0gaGRyX2NyYykgeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJICAgICJIZWFkZXIgQ1JDIGVycm9yIik7CisKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJLyogSWYgdGhlIGNoZWNrc3VtIGlzIE9LLCB3ZSBwcm9jZWVkIHdpdGggcGFyc2luZy4gKi8KKwlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgaGRyX3NpemVfbGVuKSkgeworCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJfQorCisJaWYoIXJlYWRfdmFyX3NpemVkKGEsICZoZWFkZXJfaWQsIE5VTEwpKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwlpZighcmVhZF92YXJfc2l6ZWQoYSwgJmhlYWRlcl9mbGFncywgTlVMTCkpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKworCXJhci0+Z2VuZXJpYy5zcGxpdF9hZnRlciA9IChoZWFkZXJfZmxhZ3MgJiBIRkxfU1BMSVRfQUZURVIpID4gMDsKKwlyYXItPmdlbmVyaWMuc3BsaXRfYmVmb3JlID0gKGhlYWRlcl9mbGFncyAmIEhGTF9TUExJVF9CRUZPUkUpID4gMDsKKwlyYXItPmdlbmVyaWMuc2l6ZSA9IChpbnQpaGRyX3NpemU7CisJcmFyLT5nZW5lcmljLmxhc3RfaGVhZGVyX2lkID0gKGludCloZWFkZXJfaWQ7CisJcmFyLT5tYWluLmVuZGFyYyA9IDA7CisKKwkvKiBUaG9zZSBhcmUgcG9zc2libGUgaGVhZGVyIGlkcyBpbiBSQVJ2NS4gKi8KKwlzd2l0Y2goaGVhZGVyX2lkKSB7CisJCWNhc2UgSEVBRF9NQUlOOgorCQkJcmV0ID0gcHJvY2Vzc19oZWFkX21haW4oYSwgcmFyLCBlbnRyeSwgaGVhZGVyX2ZsYWdzKTsKKworCQkJLyogTWFpbiBoZWFkZXIgZG9lc24ndCBoYXZlIGFueSBmaWxlcyBpbiBpdCwgc28gaXQncworCQkJICogcG9pbnRsZXNzIHRvIHJldHVybiB0byB0aGUgY2FsbGVyLiBSZXRyeSB0byBuZXh0CisJCQkgKiBoZWFkZXIsIHdoaWNoIHNob3VsZCBiZSBIRUFEX0ZJTEUvSEVBRF9TRVJWSUNFLiAqLworCQkJaWYocmV0ID09IEFSQ0hJVkVfT0spCisJCQkJcmV0dXJuIEFSQ0hJVkVfUkVUUlk7CisKKwkJCXJldHVybiByZXQ7CisJCWNhc2UgSEVBRF9TRVJWSUNFOgorCQkJcmV0ID0gcHJvY2Vzc19oZWFkX3NlcnZpY2UoYSwgcmFyLCBlbnRyeSwgaGVhZGVyX2ZsYWdzKTsKKwkJCXJldHVybiByZXQ7CisJCWNhc2UgSEVBRF9GSUxFOgorCQkJcmV0ID0gcHJvY2Vzc19oZWFkX2ZpbGUoYSwgcmFyLCBlbnRyeSwgaGVhZGVyX2ZsYWdzKTsKKwkJCXJldHVybiByZXQ7CisJCWNhc2UgSEVBRF9DUllQVDoKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkgICAgIkVuY3J5cHRpb24gaXMgbm90IHN1cHBvcnRlZCIpOworCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJCWNhc2UgSEVBRF9FTkRBUkM6CisJCQlyYXItPm1haW4uZW5kYXJjID0gMTsKKworCQkJLyogQWZ0ZXIgZW5jb3VudGVyaW5nIGFuIGVuZCBvZiBmaWxlIG1hcmtlciwgd2UgbmVlZAorCQkJICogdG8gdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gaWYgdGhpcyBhcmNoaXZlIGlzCisJCQkgKiBjb250aW51ZWQgaW4gYW5vdGhlciBmaWxlIChpLmUuIGlzIGl0IHBhcnQwMS5yYXI6CisJCQkgKiBpcyB0aGVyZSBhIHBhcnQwMi5yYXI/KSAqLworCQkJaWYocmFyLT5tYWluLnZvbHVtZSkgeworCQkJCS8qIEluIGNhc2UgdGhlcmUgaXMgcGFydDAyLnJhciwgcG9zaXRpb24gdGhlCisJCQkJICogcmVhZCBwb2ludGVyIGluIGEgcHJvcGVyIHBsYWNlLCBzbyB3ZSBjYW4KKwkJCQkgKiByZXN1bWUgcGFyc2luZy4gKi8KKwkJCQlyZXQgPSBzY2FuX2Zvcl9zaWduYXR1cmUoYSk7CisJCQkJaWYocmV0ID09IEFSQ0hJVkVfRkFUQUwpIHsKKwkJCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCQkJCX0gZWxzZSB7CisJCQkJCWlmKHJhci0+dm9sLmV4cGVjdGVkX3ZvbF9ubyA9PQorCQkJCQkgICAgVUlOVF9NQVgpIHsKKwkJCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkJCQkgICAgIkhlYWRlciBlcnJvciIpOworCQkJCQkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCQkJCQl9CisKKwkJCQkJcmFyLT52b2wuZXhwZWN0ZWRfdm9sX25vID0KKwkJCQkJICAgIHJhci0+bWFpbi52b2xfbm8gKyAxOworCQkJCQlyZXR1cm4gQVJDSElWRV9PSzsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCXJldHVybiBBUkNISVZFX0VPRjsKKwkJCX0KKwkJY2FzZSBIRUFEX01BUks6CisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJCWRlZmF1bHQ6CisJCQlpZigoaGVhZGVyX2ZsYWdzICYgSEZMX1NLSVBfSUZfVU5LTk9XTikgPT0gMCkgeworCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkJCSAgICAiSGVhZGVyIHR5cGUgZXJyb3IiKTsKKwkJCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwkJCX0gZWxzZSB7CisJCQkJLyogSWYgdGhlIGJsb2NrIGlzIG1hcmtlZCBhcyAnc2tpcCBpZiB1bmtub3duJywKKwkJCQkgKiBkbyBhcyB0aGUgZmxhZyBzYXlzOiBza2lwIHRoZSBibG9jaworCQkJCSAqIGluc3RlYWQgb24gZmFpbGluZyBvbiBpdC4gKi8KKwkJCQlyZXR1cm4gQVJDSElWRV9SRVRSWTsKKwkJCX0KKwl9CisKKyNpZiAhZGVmaW5lZCBXSU4zMgorCS8vIE5vdCByZWFjaGVkLgorCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX1BST0dSQU1NRVIsCisJICAgICJJbnRlcm5hbCB1bnBhY2tlciBlcnJvciIpOworCXJldHVybiBBUkNISVZFX0ZBVEFMOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQgc2tpcF9iYXNlX2Jsb2NrKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEpIHsKKwlpbnQgcmV0OworCXN0cnVjdCByYXI1KiByYXIgPSBnZXRfY29udGV4dChhKTsKKworCS8qIENyZWF0ZSBhIG5ldyBsb2NhbCBhcmNoaXZlX2VudHJ5IHN0cnVjdHVyZSB0aGF0IHdpbGwgYmUgb3BlcmF0ZWQgb24KKwkgKiBieSBoZWFkZXIgcmVhZGVyOyBvcGVyYXRpb25zIG9uIHRoaXMgYXJjaGl2ZV9lbnRyeSB3aWxsIGJlIGRpc2NhcmRlZC4KKwkgKi8KKwlzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSogZW50cnkgPSBhcmNoaXZlX2VudHJ5X25ldygpOworCXJldCA9IHByb2Nlc3NfYmFzZV9ibG9jayhhLCBlbnRyeSk7CisKKwkvKiBEaXNjYXJkIG9wZXJhdGlvbnMgb24gdGhpcyBhcmNoaXZlX2VudHJ5IHN0cnVjdHVyZS4gKi8KKwlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnkpOworCWlmKHJldCA9PSBBUkNISVZFX0ZBVEFMKQorCQlyZXR1cm4gcmV0OworCisJaWYocmFyLT5nZW5lcmljLmxhc3RfaGVhZGVyX2lkID09IDIgJiYgcmFyLT5nZW5lcmljLnNwbGl0X2JlZm9yZSA+IDApCisJCXJldHVybiBBUkNISVZFX09LOworCisJaWYocmV0ID09IEFSQ0hJVkVfT0spCisJCXJldHVybiBBUkNISVZFX1JFVFJZOworCWVsc2UKKwkJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCByYXI1X3JlYWRfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsCisgICAgc3RydWN0IGFyY2hpdmVfZW50cnkgKmVudHJ5KQoreworCXN0cnVjdCByYXI1KiByYXIgPSBnZXRfY29udGV4dChhKTsKKwlpbnQgcmV0OworCisJaWYocmFyLT5oZWFkZXJfaW5pdGlhbGl6ZWQgPT0gMCkgeworCQlpbml0X2hlYWRlcihhKTsKKwkJcmFyLT5oZWFkZXJfaW5pdGlhbGl6ZWQgPSAxOworCX0KKworCWlmKHJhci0+c2tpcHBlZF9tYWdpYyA9PSAwKSB7CisJCWlmKEFSQ0hJVkVfT0sgIT0gY29uc3VtZShhLCBzaXplb2YocmFyNV9zaWduYXR1cmVfeG9yKSkpIHsKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKwkJfQorCisJCXJhci0+c2tpcHBlZF9tYWdpYyA9IDE7CisJfQorCisJZG8geworCQlyZXQgPSBwcm9jZXNzX2Jhc2VfYmxvY2soYSwgZW50cnkpOworCX0gd2hpbGUocmV0ID09IEFSQ0hJVkVfUkVUUlkgfHwKKwkJCShyYXItPm1haW4uZW5kYXJjID4gMCAmJiByZXQgPT0gQVJDSElWRV9PSykpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgaW5pdF91bnBhY2soc3RydWN0IHJhcjUqIHJhcikgeworCXJhci0+ZmlsZS5jYWxjdWxhdGVkX2NyYzMyID0gMDsKKwlpbml0X3dpbmRvd19tYXNrKHJhcik7CisKKwlmcmVlKHJhci0+Y3N0YXRlLndpbmRvd19idWYpOworCWZyZWUocmFyLT5jc3RhdGUuZmlsdGVyZWRfYnVmKTsKKworCWlmKHJhci0+Y3N0YXRlLndpbmRvd19zaXplID4gMCkgeworCQlyYXItPmNzdGF0ZS53aW5kb3dfYnVmID0gY2FsbG9jKDEsIHJhci0+Y3N0YXRlLndpbmRvd19zaXplKTsKKwkJcmFyLT5jc3RhdGUuZmlsdGVyZWRfYnVmID0gY2FsbG9jKDEsIHJhci0+Y3N0YXRlLndpbmRvd19zaXplKTsKKwl9IGVsc2UgeworCQlyYXItPmNzdGF0ZS53aW5kb3dfYnVmID0gTlVMTDsKKwkJcmFyLT5jc3RhdGUuZmlsdGVyZWRfYnVmID0gTlVMTDsKKwl9CisKKwlyYXItPmNzdGF0ZS53cml0ZV9wdHIgPSAwOworCXJhci0+Y3N0YXRlLmxhc3Rfd3JpdGVfcHRyID0gMDsKKworCW1lbXNldCgmcmFyLT5jc3RhdGUuYmQsIDAsIHNpemVvZihyYXItPmNzdGF0ZS5iZCkpOworCW1lbXNldCgmcmFyLT5jc3RhdGUubGQsIDAsIHNpemVvZihyYXItPmNzdGF0ZS5sZCkpOworCW1lbXNldCgmcmFyLT5jc3RhdGUuZGQsIDAsIHNpemVvZihyYXItPmNzdGF0ZS5kZCkpOworCW1lbXNldCgmcmFyLT5jc3RhdGUubGRkLCAwLCBzaXplb2YocmFyLT5jc3RhdGUubGRkKSk7CisJbWVtc2V0KCZyYXItPmNzdGF0ZS5yZCwgMCwgc2l6ZW9mKHJhci0+Y3N0YXRlLnJkKSk7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9jcmMoc3RydWN0IHJhcjUqIHJhciwgY29uc3QgdWludDhfdCogcCwgc2l6ZV90IHRvX3JlYWQpIHsKKyAgICBpbnQgdmVyaWZ5X2NyYzsKKworCWlmKHJhci0+c2tpcF9tb2RlKSB7CisjaWYgZGVmaW5lZCBDSEVDS19DUkNfT05fU09MSURfU0tJUAorCQl2ZXJpZnlfY3JjID0gMTsKKyNlbHNlCisJCXZlcmlmeV9jcmMgPSAwOworI2VuZGlmCisJfSBlbHNlCisJCXZlcmlmeV9jcmMgPSAxOworCisJaWYodmVyaWZ5X2NyYykgeworCQkvKiBEb24ndCB1cGRhdGUgQ1JDMzIgaWYgdGhlIGZpbGUgZG9lc24ndCBoYXZlIHRoZQorCQkgKiBgc3RvcmVkX2NyYzMyYCBpbmZvIGZpbGxlZCBpbi4gKi8KKwkJaWYocmFyLT5maWxlLnN0b3JlZF9jcmMzMiA+IDApIHsKKwkJCXJhci0+ZmlsZS5jYWxjdWxhdGVkX2NyYzMyID0KKwkJCQljcmMzMihyYXItPmZpbGUuY2FsY3VsYXRlZF9jcmMzMiwgcCwgdG9fcmVhZCk7CisJCX0KKworCQkvKiBDaGVjayBpZiB0aGUgZmlsZSB1c2VzIGFuIG9wdGlvbmFsIEJMQUtFMnNwIGNoZWNrc3VtCisJCSAqIGFsZ29yaXRobS4gKi8KKwkJaWYocmFyLT5maWxlLmhhc19ibGFrZTIgPiAwKSB7CisJCQkvKiBSZXR1cm4gdmFsdWUgb2YgdGhlIGB1cGRhdGVgIGZ1bmN0aW9uIGlzIGFsd2F5cyAwLAorCQkJICogc28gd2UgY2FuIGV4cGxpY2l0bHkgaWdub3JlIGl0IGhlcmUuICovCisJCQkodm9pZCkgYmxha2Uyc3BfdXBkYXRlKCZyYXItPmZpbGUuYjJzdGF0ZSwgcCwgdG9fcmVhZCk7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBpbnQgY3JlYXRlX2RlY29kZV90YWJsZXModWludDhfdCogYml0X2xlbmd0aCwKKyAgICBzdHJ1Y3QgZGVjb2RlX3RhYmxlKiB0YWJsZSwgaW50IHNpemUpCit7CisJaW50IGNvZGUsIHVwcGVyX2xpbWl0ID0gMCwgaSwgbGNbMTZdOworCXVpbnQzMl90IGRlY29kZV9wb3NfY2xvbmVbcmFyNV9jb3VudG9mKHRhYmxlLT5kZWNvZGVfcG9zKV07CisJc3NpemVfdCBjdXJfbGVuLCBxdWlja19kYXRhX3NpemU7CisKKwltZW1zZXQoJmxjLCAwLCBzaXplb2YobGMpKTsKKwltZW1zZXQodGFibGUtPmRlY29kZV9udW0sIDAsIHNpemVvZih0YWJsZS0+ZGVjb2RlX251bSkpOworCXRhYmxlLT5zaXplID0gc2l6ZTsKKwl0YWJsZS0+cXVpY2tfYml0cyA9IHNpemUgPT0gSFVGRl9OQyA/IDEwIDogNzsKKworCWZvcihpID0gMDsgaSA8IHNpemU7IGkrKykgeworCQlsY1tiaXRfbGVuZ3RoW2ldICYgMTVdKys7CisJfQorCisJbGNbMF0gPSAwOworCXRhYmxlLT5kZWNvZGVfcG9zWzBdID0gMDsKKwl0YWJsZS0+ZGVjb2RlX2xlblswXSA9IDA7CisKKwlmb3IoaSA9IDE7IGkgPCAxNjsgaSsrKSB7CisJCXVwcGVyX2xpbWl0ICs9IGxjW2ldOworCisJCXRhYmxlLT5kZWNvZGVfbGVuW2ldID0gdXBwZXJfbGltaXQgPDwgKDE2IC0gaSk7CisJCXRhYmxlLT5kZWNvZGVfcG9zW2ldID0gdGFibGUtPmRlY29kZV9wb3NbaSAtIDFdICsgbGNbaSAtIDFdOworCisJCXVwcGVyX2xpbWl0IDw8PSAxOworCX0KKworCW1lbWNweShkZWNvZGVfcG9zX2Nsb25lLCB0YWJsZS0+ZGVjb2RlX3Bvcywgc2l6ZW9mKGRlY29kZV9wb3NfY2xvbmUpKTsKKworCWZvcihpID0gMDsgaSA8IHNpemU7IGkrKykgeworCQl1aW50OF90IGNsZW4gPSBiaXRfbGVuZ3RoW2ldICYgMTU7CisJCWlmKGNsZW4gPiAwKSB7CisJCQlpbnQgbGFzdF9wb3MgPSBkZWNvZGVfcG9zX2Nsb25lW2NsZW5dOworCQkJdGFibGUtPmRlY29kZV9udW1bbGFzdF9wb3NdID0gaTsKKwkJCWRlY29kZV9wb3NfY2xvbmVbY2xlbl0rKzsKKwkJfQorCX0KKworCXF1aWNrX2RhdGFfc2l6ZSA9IChpbnQ2NF90KTEgPDwgdGFibGUtPnF1aWNrX2JpdHM7CisJY3VyX2xlbiA9IDE7CisJZm9yKGNvZGUgPSAwOyBjb2RlIDwgcXVpY2tfZGF0YV9zaXplOyBjb2RlKyspIHsKKwkJaW50IGJpdF9maWVsZCA9IGNvZGUgPDwgKDE2IC0gdGFibGUtPnF1aWNrX2JpdHMpOworCQlpbnQgZGlzdCwgcG9zOworCisJCXdoaWxlKGN1cl9sZW4gPCByYXI1X2NvdW50b2YodGFibGUtPmRlY29kZV9sZW4pICYmCisJCQkJYml0X2ZpZWxkID49IHRhYmxlLT5kZWNvZGVfbGVuW2N1cl9sZW5dKSB7CisJCQljdXJfbGVuKys7CisJCX0KKworCQl0YWJsZS0+cXVpY2tfbGVuW2NvZGVdID0gKHVpbnQ4X3QpIGN1cl9sZW47CisKKwkJZGlzdCA9IGJpdF9maWVsZCAtIHRhYmxlLT5kZWNvZGVfbGVuW2N1cl9sZW4gLSAxXTsKKwkJZGlzdCA+Pj0gKDE2IC0gY3VyX2xlbik7CisKKwkJcG9zID0gdGFibGUtPmRlY29kZV9wb3NbY3VyX2xlbiAmIDE1XSArIGRpc3Q7CisJCWlmKGN1cl9sZW4gPCByYXI1X2NvdW50b2YodGFibGUtPmRlY29kZV9wb3MpICYmIHBvcyA8IHNpemUpIHsKKwkJCXRhYmxlLT5xdWlja19udW1bY29kZV0gPSB0YWJsZS0+ZGVjb2RlX251bVtwb3NdOworCQl9IGVsc2UgeworCQkJdGFibGUtPnF1aWNrX251bVtjb2RlXSA9IDA7CisJCX0KKwl9CisKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworc3RhdGljIGludCBkZWNvZGVfbnVtYmVyKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsIHN0cnVjdCBkZWNvZGVfdGFibGUqIHRhYmxlLAorICAgIGNvbnN0IHVpbnQ4X3QqIHAsIHVpbnQxNl90KiBudW0pCit7CisJaW50IGksIGJpdHMsIGRpc3Q7CisJdWludDE2X3QgYml0ZmllbGQ7CisJdWludDMyX3QgcG9zOworCXN0cnVjdCByYXI1KiByYXIgPSBnZXRfY29udGV4dChhKTsKKworCWlmKEFSQ0hJVkVfT0sgIT0gcmVhZF9iaXRzXzE2KHJhciwgcCwgJmJpdGZpZWxkKSkgeworCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJfQorCisJYml0ZmllbGQgJj0gMHhmZmZlOworCisJaWYoYml0ZmllbGQgPCB0YWJsZS0+ZGVjb2RlX2xlblt0YWJsZS0+cXVpY2tfYml0c10pIHsKKwkJaW50IGNvZGUgPSBiaXRmaWVsZCA+PiAoMTYgLSB0YWJsZS0+cXVpY2tfYml0cyk7CisJCXNraXBfYml0cyhyYXIsIHRhYmxlLT5xdWlja19sZW5bY29kZV0pOworCQkqbnVtID0gdGFibGUtPnF1aWNrX251bVtjb2RlXTsKKwkJcmV0dXJuIEFSQ0hJVkVfT0s7CisJfQorCisJYml0cyA9IDE1OworCisJZm9yKGkgPSB0YWJsZS0+cXVpY2tfYml0cyArIDE7IGkgPCAxNTsgaSsrKSB7CisJCWlmKGJpdGZpZWxkIDwgdGFibGUtPmRlY29kZV9sZW5baV0pIHsKKwkJCWJpdHMgPSBpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlza2lwX2JpdHMocmFyLCBiaXRzKTsKKworCWRpc3QgPSBiaXRmaWVsZCAtIHRhYmxlLT5kZWNvZGVfbGVuW2JpdHMgLSAxXTsKKwlkaXN0ID4+PSAoMTYgLSBiaXRzKTsKKwlwb3MgPSB0YWJsZS0+ZGVjb2RlX3Bvc1tiaXRzXSArIGRpc3Q7CisKKwlpZihwb3MgPj0gdGFibGUtPnNpemUpCisJCXBvcyA9IDA7CisKKwkqbnVtID0gdGFibGUtPmRlY29kZV9udW1bcG9zXTsKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworLyogUmVhZHMgYW5kIHBhcnNlcyBIdWZmbWFuIHRhYmxlcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrLiAqLworc3RhdGljIGludCBwYXJzZV90YWJsZXMoc3RydWN0IGFyY2hpdmVfcmVhZCogYSwgc3RydWN0IHJhcjUqIHJhciwKKyAgICBjb25zdCB1aW50OF90KiBwKQoreworCWludCByZXQsIHZhbHVlLCBpLCB3LCBpZHggPSAwOworCXVpbnQ4X3QgYml0X2xlbmd0aFtIVUZGX0JDXSwKKwkJdGFibGVbSFVGRl9UQUJMRV9TSVpFXSwKKwkJbmliYmxlX21hc2sgPSAweEYwLAorCQluaWJibGVfc2hpZnQgPSA0OworCisJZW51bSB7IEVTQ0FQRSA9IDE1IH07CisKKwkvKiBUaGUgZGF0YSBmb3IgdGFibGUgZ2VuZXJhdGlvbiBpcyBjb21wcmVzc2VkIHVzaW5nIGEgc2ltcGxlIFJMRS1saWtlCisJICogYWxnb3JpdGhtIHdoZW4gc3RvcmluZyB6ZXJvZXMsIHNvIHdlIG5lZWQgdG8gdW5wYWNrIGl0IGZpcnN0LiAqLworCWZvcih3ID0gMCwgaSA9IDA7IHcgPCBIVUZGX0JDOykgeworCQlpZihpID49IHJhci0+Y3N0YXRlLmN1cl9ibG9ja19zaXplKSB7CisJCQkvKiBUcnVuY2F0ZWQgZGF0YSwgY2FuJ3QgY29udGludWUuICovCisJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKKwkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkJICAgICJUcnVuY2F0ZWQgZGF0YSBpbiBodWZmbWFuIHRhYmxlcyIpOworCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJCX0KKworCQl2YWx1ZSA9IChwW2ldICYgbmliYmxlX21hc2spID4+IG5pYmJsZV9zaGlmdDsKKworCQlpZihuaWJibGVfbWFzayA9PSAweDBGKQorCQkJKytpOworCisJCW5pYmJsZV9tYXNrIF49IDB4RkY7CisJCW5pYmJsZV9zaGlmdCBePSA0OworCisJCS8qIFZhbHVlcyBzbWFsbGVyIHRoYW4gMTUgaXMgZGF0YSwgc28gd2Ugd3JpdGUgaXQgZGlyZWN0bHkuCisJCSAqIFZhbHVlIDE1IGlzIGEgZmxhZyB0ZWxsaW5nIHVzIHRoYXQgd2UgbmVlZCB0byB1bnBhY2sgbW9yZQorCQkgKiBieXRlcy4gKi8KKwkJaWYodmFsdWUgPT0gRVNDQVBFKSB7CisJCQl2YWx1ZSA9IChwW2ldICYgbmliYmxlX21hc2spID4+IG5pYmJsZV9zaGlmdDsKKwkJCWlmKG5pYmJsZV9tYXNrID09IDB4MEYpCisJCQkJKytpOworCQkJbmliYmxlX21hc2sgXj0gMHhGRjsKKwkJCW5pYmJsZV9zaGlmdCBePSA0OworCisJCQlpZih2YWx1ZSA9PSAwKSB7CisJCQkJLyogV2Ugc29tZXRpbWVzIG5lZWQgdG8gd3JpdGUgdGhlIGFjdHVhbCB2YWx1ZQorCQkJCSAqIG9mIDE1LCBzbyB0aGlzIGNhc2UgaGFuZGxlcyB0aGF0LiAqLworCQkJCWJpdF9sZW5ndGhbdysrXSA9IEVTQ0FQRTsKKwkJCX0gZWxzZSB7CisJCQkJaW50IGs7CisKKwkJCQkvKiBGaWxsIHplcm9lcy4gKi8KKwkJCQlmb3IoayA9IDA7IChrIDwgdmFsdWUgKyAyKSAmJiAodyA8IEhVRkZfQkMpOworCQkJCSAgICBrKyspIHsKKwkJCQkJYml0X2xlbmd0aFt3KytdID0gMDsKKwkJCQl9CisJCQl9CisJCX0gZWxzZSB7CisJCQliaXRfbGVuZ3RoW3crK10gPSB2YWx1ZTsKKwkJfQorCX0KKworCXJhci0+Yml0cy5pbl9hZGRyID0gaTsKKwlyYXItPmJpdHMuYml0X2FkZHIgPSBuaWJibGVfc2hpZnQgXiA0OworCisJcmV0ID0gY3JlYXRlX2RlY29kZV90YWJsZXMoYml0X2xlbmd0aCwgJnJhci0+Y3N0YXRlLmJkLCBIVUZGX0JDKTsKKwlpZihyZXQgIT0gQVJDSElWRV9PSykgeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJICAgICJEZWNvZGluZyBodWZmbWFuIHRhYmxlcyBmYWlsZWQiKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJZm9yKGkgPSAwOyBpIDwgSFVGRl9UQUJMRV9TSVpFOykgeworCQl1aW50MTZfdCBudW07CisKKwkJaWYoKHJhci0+Yml0cy5pbl9hZGRyICsgNikgPj0gcmFyLT5jc3RhdGUuY3VyX2Jsb2NrX3NpemUpIHsKKwkJCS8qIFRydW5jYXRlZCBkYXRhLCBjYW4ndCBjb250aW51ZS4gKi8KKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkgICAgIlRydW5jYXRlZCBkYXRhIGluIGh1ZmZtYW4gdGFibGVzICgjMikiKTsKKwkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCQl9CisKKwkJcmV0ID0gZGVjb2RlX251bWJlcihhLCAmcmFyLT5jc3RhdGUuYmQsIHAsICZudW0pOworCQlpZihyZXQgIT0gQVJDSElWRV9PSykgeworCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCSAgICAiRGVjb2RpbmcgaHVmZm1hbiB0YWJsZXMgZmFpbGVkIik7CisJCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwkJfQorCisJCWlmKG51bSA8IDE2KSB7CisJCQkvKiAwLi4xNTogc3RvcmUgZGlyZWN0bHkgKi8KKwkJCXRhYmxlW2ldID0gKHVpbnQ4X3QpIG51bTsKKwkJCWkrKzsKKwkJfSBlbHNlIGlmKG51bSA8IDE4KSB7CisJCQkvKiAxNi4uMTc6IHJlcGVhdCBwcmV2aW91cyBjb2RlICovCisJCQl1aW50MTZfdCBuOworCisJCQlpZihBUkNISVZFX09LICE9IHJlYWRfYml0c18xNihyYXIsIHAsICZuKSkKKwkJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwkJCWlmKG51bSA9PSAxNikgeworCQkJCW4gPj49IDEzOworCQkJCW4gKz0gMzsKKwkJCQlza2lwX2JpdHMocmFyLCAzKTsKKwkJCX0gZWxzZSB7CisJCQkJbiA+Pj0gOTsKKwkJCQluICs9IDExOworCQkJCXNraXBfYml0cyhyYXIsIDcpOworCQkJfQorCisJCQlpZihpID4gMCkgeworCQkJCXdoaWxlKG4tLSA+IDAgJiYgaSA8IEhVRkZfVEFCTEVfU0laRSkgeworCQkJCQl0YWJsZVtpXSA9IHRhYmxlW2kgLSAxXTsKKwkJCQkJaSsrOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkJICAgICJVbmV4cGVjdGVkIGVycm9yIHdoZW4gZGVjb2RpbmcgIgorCQkJCSAgICAiaHVmZm1hbiB0YWJsZXMiKTsKKwkJCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCS8qIG90aGVyIGNvZGVzOiBmaWxsIHdpdGggemVyb2VzIGBuYCB0aW1lcyAqLworCQkJdWludDE2X3QgbjsKKworCQkJaWYoQVJDSElWRV9PSyAhPSByZWFkX2JpdHNfMTYocmFyLCBwLCAmbikpCisJCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCisJCQlpZihudW0gPT0gMTgpIHsKKwkJCQluID4+PSAxMzsKKwkJCQluICs9IDM7CisJCQkJc2tpcF9iaXRzKHJhciwgMyk7CisJCQl9IGVsc2UgeworCQkJCW4gPj49IDk7CisJCQkJbiArPSAxMTsKKwkJCQlza2lwX2JpdHMocmFyLCA3KTsKKwkJCX0KKworCQkJd2hpbGUobi0tID4gMCAmJiBpIDwgSFVGRl9UQUJMRV9TSVpFKQorCQkJCXRhYmxlW2krK10gPSAwOworCQl9CisJfQorCisJcmV0ID0gY3JlYXRlX2RlY29kZV90YWJsZXMoJnRhYmxlW2lkeF0sICZyYXItPmNzdGF0ZS5sZCwgSFVGRl9OQyk7CisJaWYocmV0ICE9IEFSQ0hJVkVfT0spIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCSAgICAgIkZhaWxlZCB0byBjcmVhdGUgbGl0ZXJhbCB0YWJsZSIpOworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwlpZHggKz0gSFVGRl9OQzsKKworCXJldCA9IGNyZWF0ZV9kZWNvZGVfdGFibGVzKCZ0YWJsZVtpZHhdLCAmcmFyLT5jc3RhdGUuZGQsIEhVRkZfREMpOworCWlmKHJldCAhPSBBUkNISVZFX09LKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIkZhaWxlZCB0byBjcmVhdGUgZGlzdGFuY2UgdGFibGUiKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJaWR4ICs9IEhVRkZfREM7CisKKwlyZXQgPSBjcmVhdGVfZGVjb2RlX3RhYmxlcygmdGFibGVbaWR4XSwgJnJhci0+Y3N0YXRlLmxkZCwgSFVGRl9MREMpOworCWlmKHJldCAhPSBBUkNISVZFX09LKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIkZhaWxlZCB0byBjcmVhdGUgbG93ZXIgYml0cyBvZiBkaXN0YW5jZXMgdGFibGUiKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJaWR4ICs9IEhVRkZfTERDOworCisJcmV0ID0gY3JlYXRlX2RlY29kZV90YWJsZXMoJnRhYmxlW2lkeF0sICZyYXItPmNzdGF0ZS5yZCwgSFVGRl9SQyk7CisJaWYocmV0ICE9IEFSQ0hJVkVfT0spIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCSAgICAiRmFpbGVkIHRvIGNyZWF0ZSByZXBlYXRpbmcgZGlzdGFuY2VzIHRhYmxlIik7CisJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCX0KKworCXJldHVybiBBUkNISVZFX09LOworfQorCisvKiBQYXJzZXMgdGhlIGJsb2NrIGhlYWRlciwgdmVyaWZpZXMgaXRzIENSQyBieXRlLCBhbmQgc2F2ZXMgdGhlIGhlYWRlcgorICogZmllbGRzIGluc2lkZSB0aGUgYGhkcmAgcG9pbnRlci4gKi8KK3N0YXRpYyBpbnQgcGFyc2VfYmxvY2tfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsIGNvbnN0IHVpbnQ4X3QqIHAsCisgICAgc3NpemVfdCogYmxvY2tfc2l6ZSwgc3RydWN0IGNvbXByZXNzZWRfYmxvY2tfaGVhZGVyKiBoZHIpCit7CisJdWludDhfdCBjYWxjdWxhdGVkX2Nrc3VtOworCW1lbWNweShoZHIsIHAsIHNpemVvZihzdHJ1Y3QgY29tcHJlc3NlZF9ibG9ja19oZWFkZXIpKTsKKworCWlmKGJmX2J5dGVfY291bnQoaGRyKSA+IDIpIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCSAgICAiVW5zdXBwb3J0ZWQgYmxvY2sgaGVhZGVyIHNpemUgKHdhcyAlZCwgbWF4IGlzIDIpIiwKKwkJICAgIGJmX2J5dGVfY291bnQoaGRyKSk7CisJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCX0KKworCS8qIFRoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBiaXQgcmVhZGVyIGludGVyZmFjZSBpbiBvcmRlciB0byBiZSBtb3JlCisJICogZnV0dXJlLXByb29mLiAqLworCSpibG9ja19zaXplID0gMDsKKwlzd2l0Y2goYmZfYnl0ZV9jb3VudChoZHIpKSB7CisJCS8qIDEtYnl0ZSBibG9jayBzaXplICovCisJCWNhc2UgMDoKKwkJCSpibG9ja19zaXplID0gKihjb25zdCB1aW50OF90KikgJnBbMl07CisJCQlicmVhazsKKworCQkvKiAyLWJ5dGUgYmxvY2sgc2l6ZSAqLworCQljYXNlIDE6CisJCQkqYmxvY2tfc2l6ZSA9IGFyY2hpdmVfbGUxNmRlYygmcFsyXSk7CisJCQlicmVhazsKKworCQkvKiAzLWJ5dGUgYmxvY2sgc2l6ZSAqLworCQljYXNlIDI6CisJCQkqYmxvY2tfc2l6ZSA9IGFyY2hpdmVfbGUzMmRlYygmcFsyXSk7CisJCQkqYmxvY2tfc2l6ZSAmPSAweDAwRkZGRkZGOworCQkJYnJlYWs7CisKKwkJLyogT3RoZXIgYmxvY2sgc2l6ZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFRoaXMgY2FzZSBpcyBub3QKKwkJICogcmVhY2hlZCwgYmVjYXVzZSB3ZSBoYXZlIGFuICdpZicgZ3VhcmQgYmVmb3JlIHRoZSBzd2l0Y2gKKwkJICogdGhhdCBtYWtlcyBzdXJlIG9mIGl0LiAqLworCQlkZWZhdWx0OgorCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJLyogVmVyaWZ5IHRoZSBibG9jayBoZWFkZXIgY2hlY2tzdW0uIDB4NUEgaXMgYSBtYWdpYyB2YWx1ZSBhbmQgaXMKKwkgKiBhbHdheXMgKiBjb25zdGFudC4gKi8KKwljYWxjdWxhdGVkX2Nrc3VtID0gMHg1QQorCSAgICBeICh1aW50OF90KSBoZHItPmJsb2NrX2ZsYWdzX3U4CisJICAgIF4gKHVpbnQ4X3QpICpibG9ja19zaXplCisJICAgIF4gKHVpbnQ4X3QpICgqYmxvY2tfc2l6ZSA+PiA4KQorCSAgICBeICh1aW50OF90KSAoKmJsb2NrX3NpemUgPj4gMTYpOworCisJaWYoY2FsY3VsYXRlZF9ja3N1bSAhPSBoZHItPmJsb2NrX2Nrc3VtKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIkJsb2NrIGNoZWNrc3VtIGVycm9yOiBnb3QgMHgleCwgZXhwZWN0ZWQgMHgleCIsCisJCSAgICBoZHItPmJsb2NrX2Nrc3VtLCBjYWxjdWxhdGVkX2Nrc3VtKTsKKworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworLyogQ29udmVuaWVuY2UgZnVuY3Rpb24gdXNlZCBkdXJpbmcgZmlsdGVyIHByb2Nlc3NpbmcuICovCitzdGF0aWMgaW50IHBhcnNlX2ZpbHRlcl9kYXRhKHN0cnVjdCByYXI1KiByYXIsIGNvbnN0IHVpbnQ4X3QqIHAsCisgICAgdWludDMyX3QqIGZpbHRlcl9kYXRhKQoreworCWludCBpLCBieXRlczsKKwl1aW50MzJfdCBkYXRhID0gMDsKKworCWlmKEFSQ0hJVkVfT0sgIT0gcmVhZF9jb25zdW1lX2JpdHMocmFyLCBwLCAyLCAmYnl0ZXMpKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwlieXRlcysrOworCisJZm9yKGkgPSAwOyBpIDwgYnl0ZXM7IGkrKykgeworCQl1aW50MTZfdCBieXRlOworCisJCWlmKEFSQ0hJVkVfT0sgIT0gcmVhZF9iaXRzXzE2KHJhciwgcCwgJmJ5dGUpKSB7CisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJCX0KKworCQkvKiBDYXN0IHRvIHVpbnQzMl90IHdpbGwgZW5zdXJlIHRoZSBzaGlmdCBvcGVyYXRpb24gd2lsbCBub3QKKwkJICogcHJvZHVjZSB1bmRlZmluZWQgcmVzdWx0LiAqLworCQlkYXRhICs9ICgodWludDMyX3QpIGJ5dGUgPj4gOCkgPDwgKGkgKiA4KTsKKwkJc2tpcF9iaXRzKHJhciwgOCk7CisJfQorCisJKmZpbHRlcl9kYXRhID0gZGF0YTsKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworLyogRnVuY3Rpb24gaXMgdXNlZCBkdXJpbmcgc2FuaXR5IGNoZWNraW5nLiAqLworc3RhdGljIGludCBpc192YWxpZF9maWx0ZXJfYmxvY2tfc3RhcnQoc3RydWN0IHJhcjUqIHJhciwKKyAgICB1aW50MzJfdCBzdGFydCkKK3sKKwljb25zdCBpbnQ2NF90IGJsb2NrX3N0YXJ0ID0gKHNzaXplX3QpIHN0YXJ0ICsgcmFyLT5jc3RhdGUud3JpdGVfcHRyOworCWNvbnN0IGludDY0X3QgbGFzdF9icyA9IHJhci0+Y3N0YXRlLmxhc3RfYmxvY2tfc3RhcnQ7CisJY29uc3Qgc3NpemVfdCBsYXN0X2JsID0gcmFyLT5jc3RhdGUubGFzdF9ibG9ja19sZW5ndGg7CisKKwlpZihsYXN0X2JzID09IDAgfHwgbGFzdF9ibCA9PSAwKSB7CisJCS8qIFdlIGRpZG4ndCBoYXZlIGFueSBmaWx0ZXJzIHlldCwgc28gYWNjZXB0IHRoaXMgb2Zmc2V0LiAqLworCQlyZXR1cm4gMTsKKwl9CisKKwlpZihibG9ja19zdGFydCA+PSBsYXN0X2JzICsgbGFzdF9ibCkgeworCQkvKiBDdXJyZW50IG9mZnNldCBpcyBiaWdnZXIgdGhhbiBsYXN0IGJsb2NrJ3MgZW5kIG9mZnNldCwgc28KKwkJICogYWNjZXB0IGN1cnJlbnQgb2Zmc2V0LiAqLworCQlyZXR1cm4gMTsKKwl9CisKKwkvKiBBbnkgb3RoZXIgY2FzZSBpcyBub3QgYSBub3JtYWwgc2l0dWF0aW9uIGFuZCB3ZSBzaG91bGQgZmFpbC4gKi8KKwlyZXR1cm4gMDsKK30KKworLyogVGhlIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIGEgbmV3IGZpbHRlciwgcmVhZCBpdHMgcGFyYW1ldGVycyBmcm9tIHRoZSBpbnB1dAorICogc3RyZWFtIGFuZCBhZGQgaXQgdG8gdGhlIGZpbHRlciBjb2xsZWN0aW9uLiAqLworc3RhdGljIGludCBwYXJzZV9maWx0ZXIoc3RydWN0IGFyY2hpdmVfcmVhZCogYXIsIGNvbnN0IHVpbnQ4X3QqIHApIHsKKwl1aW50MzJfdCBibG9ja19zdGFydCwgYmxvY2tfbGVuZ3RoOworCXVpbnQxNl90IGZpbHRlcl90eXBlOworCXN0cnVjdCBmaWx0ZXJfaW5mbyogZmlsdCA9IE5VTEw7CisJc3RydWN0IHJhcjUqIHJhciA9IGdldF9jb250ZXh0KGFyKTsKKworCS8qIFJlYWQgdGhlIHBhcmFtZXRlcnMgZnJvbSB0aGUgaW5wdXQgc3RyZWFtLiAqLworCWlmKEFSQ0hJVkVfT0sgIT0gcGFyc2VfZmlsdGVyX2RhdGEocmFyLCBwLCAmYmxvY2tfc3RhcnQpKQorCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwlpZihBUkNISVZFX09LICE9IHBhcnNlX2ZpbHRlcl9kYXRhKHJhciwgcCwgJmJsb2NrX2xlbmd0aCkpCisJCXJldHVybiBBUkNISVZFX0VPRjsKKworCWlmKEFSQ0hJVkVfT0sgIT0gcmVhZF9iaXRzXzE2KHJhciwgcCwgJmZpbHRlcl90eXBlKSkKKwkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCisJZmlsdGVyX3R5cGUgPj49IDEzOworCXNraXBfYml0cyhyYXIsIDMpOworCisJLyogUGVyZm9ybSBzb21lIHNhbml0eSBjaGVja3Mgb24gdGhpcyBmaWx0ZXIgcGFyYW1ldGVycy4gTm90ZSB0aGF0IHdlCisJICogYWxsb3cgb25seSBERUxUQSwgRTgvRTkgYW5kIEFSTSBmaWx0ZXJzIGhlcmUsIGJlY2F1c2UgcmVzdCBvZgorCSAqIGZpbHRlcnMgYXJlIG5vdCB1c2VkIGluIFJBUnY1LiAqLworCisJaWYoYmxvY2tfbGVuZ3RoIDwgNCB8fAorCSAgICBibG9ja19sZW5ndGggPiAweDQwMDAwMCB8fAorCSAgICBmaWx0ZXJfdHlwZSA+IEZJTFRFUl9BUk0gfHwKKwkgICAgIWlzX3ZhbGlkX2ZpbHRlcl9ibG9ja19zdGFydChyYXIsIGJsb2NrX3N0YXJ0KSkKKwl7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhci0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJICAgICJJbnZhbGlkIGZpbHRlciBlbmNvdW50ZXJlZCIpOworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwkvKiBBbGxvY2F0ZSBhIG5ldyBmaWx0ZXIuICovCisJZmlsdCA9IGFkZF9uZXdfZmlsdGVyKHJhcik7CisJaWYoZmlsdCA9PSBOVUxMKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhci0+YXJjaGl2ZSwgRU5PTUVNLAorCQkgICAgIkNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgYSBmaWx0ZXIgZGVzY3JpcHRvci4iKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJZmlsdC0+dHlwZSA9IGZpbHRlcl90eXBlOworCWZpbHQtPmJsb2NrX3N0YXJ0ID0gcmFyLT5jc3RhdGUud3JpdGVfcHRyICsgYmxvY2tfc3RhcnQ7CisJZmlsdC0+YmxvY2tfbGVuZ3RoID0gYmxvY2tfbGVuZ3RoOworCisJcmFyLT5jc3RhdGUubGFzdF9ibG9ja19zdGFydCA9IGZpbHQtPmJsb2NrX3N0YXJ0OworCXJhci0+Y3N0YXRlLmxhc3RfYmxvY2tfbGVuZ3RoID0gZmlsdC0+YmxvY2tfbGVuZ3RoOworCisJLyogUmVhZCBzb21lIG1vcmUgZGF0YSBpbiBjYXNlIHRoaXMgaXMgYSBERUxUQSBmaWx0ZXIuIE90aGVyIGZpbHRlcgorCSAqIHR5cGVzIGRvbid0IHJlcXVpcmUgYW55IGFkZGl0aW9uYWwgZGF0YSBvdmVyIHdoYXQgd2FzIGFscmVhZHkKKwkgKiByZWFkLiAqLworCWlmKGZpbHRlcl90eXBlID09IEZJTFRFUl9ERUxUQSkgeworCQlpbnQgY2hhbm5lbHM7CisKKwkJaWYoQVJDSElWRV9PSyAhPSByZWFkX2NvbnN1bWVfYml0cyhyYXIsIHAsIDUsICZjaGFubmVscykpCisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwkJZmlsdC0+Y2hhbm5lbHMgPSBjaGFubmVscyArIDE7CisJfQorCisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKK3N0YXRpYyBpbnQgZGVjb2RlX2NvZGVfbGVuZ3RoKHN0cnVjdCByYXI1KiByYXIsIGNvbnN0IHVpbnQ4X3QqIHAsCisgICAgdWludDE2X3QgY29kZSkKK3sKKwlpbnQgbGJpdHMsIGxlbmd0aCA9IDI7CisJaWYoY29kZSA8IDgpIHsKKwkJbGJpdHMgPSAwOworCQlsZW5ndGggKz0gY29kZTsKKwl9IGVsc2UgeworCQlsYml0cyA9IGNvZGUgLyA0IC0gMTsKKwkJbGVuZ3RoICs9ICg0IHwgKGNvZGUgJiAzKSkgPDwgbGJpdHM7CisJfQorCisJaWYobGJpdHMgPiAwKSB7CisJCWludCBhZGQ7CisKKwkJaWYoQVJDSElWRV9PSyAhPSByZWFkX2NvbnN1bWVfYml0cyhyYXIsIHAsIGxiaXRzLCAmYWRkKSkKKwkJCXJldHVybiAtMTsKKworCQlsZW5ndGggKz0gYWRkOworCX0KKworCXJldHVybiBsZW5ndGg7Cit9CisKK3N0YXRpYyBpbnQgY29weV9zdHJpbmcoc3RydWN0IGFyY2hpdmVfcmVhZCogYSwgaW50IGxlbiwgaW50IGRpc3QpIHsKKwlzdHJ1Y3QgcmFyNSogcmFyID0gZ2V0X2NvbnRleHQoYSk7CisJY29uc3QgdWludDY0X3QgY21hc2sgPSByYXItPmNzdGF0ZS53aW5kb3dfbWFzazsKKwljb25zdCB1aW50NjRfdCB3cml0ZV9wdHIgPSByYXItPmNzdGF0ZS53cml0ZV9wdHIgKworCSAgICByYXItPmNzdGF0ZS5zb2xpZF9vZmZzZXQ7CisJaW50IGk7CisKKwlpZiAocmFyLT5jc3RhdGUud2luZG93X2J1ZiA9PSBOVUxMKQorCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKworCS8qIFRoZSB1bnBhY2tlciBzcGVuZHMgbW9zdCBvZiB0aGUgdGltZSBpbiB0aGlzIGZ1bmN0aW9uLiBJdCB3b3VsZCBiZQorCSAqIGEgZ29vZCBpZGVhIHRvIGludHJvZHVjZSBzb21lIG9wdGltaXphdGlvbnMgaGVyZS4KKwkgKgorCSAqIEp1c3QgcmVtZW1iZXIgdGhhdCB0aGlzIGxvb3AgdHJlYXRzIGJ1ZmZlcnMgdGhhdCBvdmVybGFwIGRpZmZlcmVudGx5CisJICogdGhhbiBidWZmZXJzIHRoYXQgZG8gbm90IG92ZXJsYXAuIFRoaXMgaXMgd2h5IGEgc2ltcGxlIG1lbWNweSgzKQorCSAqIGNhbGwgd2lsbCBub3QgYmUgZW5vdWdoLiAqLworCisJZm9yKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKwkJY29uc3Qgc3NpemVfdCB3cml0ZV9pZHggPSAod3JpdGVfcHRyICsgaSkgJiBjbWFzazsKKwkJY29uc3Qgc3NpemVfdCByZWFkX2lkeCA9ICh3cml0ZV9wdHIgKyBpIC0gZGlzdCkgJiBjbWFzazsKKwkJcmFyLT5jc3RhdGUud2luZG93X2J1Zlt3cml0ZV9pZHhdID0KKwkJICAgIHJhci0+Y3N0YXRlLndpbmRvd19idWZbcmVhZF9pZHhdOworCX0KKworCXJhci0+Y3N0YXRlLndyaXRlX3B0ciArPSBsZW47CisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKK3N0YXRpYyBpbnQgZG9fdW5jb21wcmVzc19ibG9jayhzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhLCBjb25zdCB1aW50OF90KiBwKSB7CisJc3RydWN0IHJhcjUqIHJhciA9IGdldF9jb250ZXh0KGEpOworCXVpbnQxNl90IG51bTsKKwlpbnQgcmV0OworCisJY29uc3QgdWludDY0X3QgY21hc2sgPSByYXItPmNzdGF0ZS53aW5kb3dfbWFzazsKKwljb25zdCBzdHJ1Y3QgY29tcHJlc3NlZF9ibG9ja19oZWFkZXIqIGhkciA9ICZyYXItPmxhc3RfYmxvY2tfaGRyOworCWNvbnN0IHVpbnQ4X3QgYml0X3NpemUgPSAxICsgYmZfYml0X3NpemUoaGRyKTsKKworCXdoaWxlKDEpIHsKKwkJaWYocmFyLT5jc3RhdGUud3JpdGVfcHRyIC0gcmFyLT5jc3RhdGUubGFzdF93cml0ZV9wdHIgPgorCQkgICAgKHJhci0+Y3N0YXRlLndpbmRvd19zaXplID4+IDEpKSB7CisJCQkvKiBEb24ndCBhbGxvdyBncm93aW5nIGRhdGEgYnkgbW9yZSB0aGFuIGhhbGYgb2YgdGhlCisJCQkgKiB3aW5kb3cgc2l6ZSBhdCBhIHRpbWUuIEluIHN1Y2ggY2FzZSwgYnJlYWsgdGhlIGxvb3A7CisJCQkgKiAgbmV4dCBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gd2lsbCBjb250aW51ZSBwcm9jZXNzaW5nCisJCQkgKiAgZnJvbSB0aGlzIG1vbWVudC4gKi8KKwkJCWJyZWFrOworCQl9CisKKwkJaWYocmFyLT5iaXRzLmluX2FkZHIgPiByYXItPmNzdGF0ZS5jdXJfYmxvY2tfc2l6ZSAtIDEgfHwKKwkJICAgIChyYXItPmJpdHMuaW5fYWRkciA9PSByYXItPmNzdGF0ZS5jdXJfYmxvY2tfc2l6ZSAtIDEgJiYKKwkJICAgIHJhci0+Yml0cy5iaXRfYWRkciA+PSBiaXRfc2l6ZSkpCisJCXsKKwkJCS8qIElmIHRoZSBwcm9ncmFtIGNvdW50ZXIgaXMgaGVyZSwgaXQgbWVhbnMgdGhlCisJCQkgKiBmdW5jdGlvbiBoYXMgZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgYmxvY2suICovCisJCQlyYXItPmNzdGF0ZS5ibG9ja19wYXJzaW5nX2ZpbmlzaGVkID0gMTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogRGVjb2RlIHRoZSBuZXh0IGxpdGVyYWwuICovCisJCWlmKEFSQ0hJVkVfT0sgIT0gZGVjb2RlX251bWJlcihhLCAmcmFyLT5jc3RhdGUubGQsIHAsICZudW0pKSB7CisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJCX0KKworCQkvKiBOdW0gaG9sZHMgYSBkZWNvbXByZXNzaW9uIGxpdGVyYWwsIG9yICdjb21tYW5kIGNvZGUnLgorCQkgKgorCQkgKiAtIFZhbHVlcyBsb3dlciB0aGFuIDI1NiBhcmUganVzdCBieXRlcy4gVGhvc2UgY29kZXMKKwkJICogICBjYW4gYmUgc3RvcmVkIGluIHRoZSBvdXRwdXQgYnVmZmVyIGRpcmVjdGx5LgorCQkgKgorCQkgKiAtIENvZGUgMjU2IGRlZmluZXMgYSBuZXcgZmlsdGVyLCB3aGljaCBpcyBsYXRlciB1c2VkIHRvCisJCSAqICAgcmFuc2Zvcm0gdGhlIGRhdGEgYmxvY2sgYWNjb3JkaW5nbHkgdG8gdGhlIGZpbHRlciB0eXBlLgorCQkgKiAgIFRoZSBkYXRhIGJsb2NrIG5lZWRzIHRvIGJlIGZ1bGx5IHVuY29tcHJlc3NlZCBmaXJzdC4KKwkJICoKKwkJICogLSBDb2RlIGJpZ2dlciB0aGFuIDI1NyBhbmQgc21hbGxlciB0aGFuIDI2MiBkZWZpbmUKKwkJICogICBhIHJlcGV0aXRpb24gcGF0dGVybiB0aGF0IHNob3VsZCBiZSBjb3BpZWQgZnJvbQorCQkgKiAgIGFuIGFscmVhZHkgdW5jb21wcmVzc2VkIGNodW5rIG9mIGRhdGEuCisJCSAqLworCisJCWlmKG51bSA8IDI1NikgeworCQkJLyogRGlyZWN0bHkgc3RvcmUgdGhlIGJ5dGUuICovCisJCQlpbnQ2NF90IHdyaXRlX2lkeCA9IHJhci0+Y3N0YXRlLnNvbGlkX29mZnNldCArCisJCQkgICAgcmFyLT5jc3RhdGUud3JpdGVfcHRyKys7CisKKwkJCXJhci0+Y3N0YXRlLndpbmRvd19idWZbd3JpdGVfaWR4ICYgY21hc2tdID0KKwkJCSAgICAodWludDhfdCkgbnVtOworCQkJY29udGludWU7CisJCX0gZWxzZSBpZihudW0gPj0gMjYyKSB7CisJCQl1aW50MTZfdCBkaXN0X3Nsb3Q7CisJCQlpbnQgbGVuID0gZGVjb2RlX2NvZGVfbGVuZ3RoKHJhciwgcCwgbnVtIC0gMjYyKSwKKwkJCQlkYml0cywKKwkJCQlkaXN0ID0gMTsKKworCQkJaWYobGVuID09IC0xKSB7CisJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkJICAgIEFSQ0hJVkVfRVJSTk9fUFJPR1JBTU1FUiwKKwkJCQkgICAgIkZhaWxlZCB0byBkZWNvZGUgdGhlIGNvZGUgbGVuZ3RoIik7CisKKwkJCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwkJCX0KKworCQkJaWYoQVJDSElWRV9PSyAhPSBkZWNvZGVfbnVtYmVyKGEsICZyYXItPmNzdGF0ZS5kZCwgcCwKKwkJCSAgICAmZGlzdF9zbG90KSkKKwkJCXsKKwkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKKwkJCQkgICAgQVJDSElWRV9FUlJOT19QUk9HUkFNTUVSLAorCQkJCSAgICAiRmFpbGVkIHRvIGRlY29kZSB0aGUgZGlzdGFuY2Ugc2xvdCIpOworCisJCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJCQl9CisKKwkJCWlmKGRpc3Rfc2xvdCA8IDQpIHsKKwkJCQlkYml0cyA9IDA7CisJCQkJZGlzdCArPSBkaXN0X3Nsb3Q7CisJCQl9IGVsc2UgeworCQkJCWRiaXRzID0gZGlzdF9zbG90IC8gMiAtIDE7CisKKwkJCQkvKiBDYXN0IHRvIHVpbnQzMl90IHdpbGwgbWFrZSBzdXJlIHRoZSBzaGlmdAorCQkJCSAqIGxlZnQgb3BlcmF0aW9uIHdvbid0IHByb2R1Y2UgdW5kZWZpbmVkCisJCQkJICogcmVzdWx0LiBUaGVuLCB0aGUgdWludDMyX3QgdHlwZSB3aWxsCisJCQkJICogYmUgaW1wbGljaXRseSBjYXN0ZWQgdG8gaW50LiAqLworCQkJCWRpc3QgKz0gKHVpbnQzMl90KSAoMiB8CisJCQkJICAgIChkaXN0X3Nsb3QgJiAxKSkgPDwgZGJpdHM7CisJCQl9CisKKwkJCWlmKGRiaXRzID4gMCkgeworCQkJCWlmKGRiaXRzID49IDQpIHsKKwkJCQkJdWludDMyX3QgYWRkID0gMDsKKwkJCQkJdWludDE2X3QgbG93X2Rpc3Q7CisKKwkJCQkJaWYoZGJpdHMgPiA0KSB7CisJCQkJCQlpZihBUkNISVZFX09LICE9IHJlYWRfYml0c18zMigKKwkJCQkJCSAgICByYXIsIHAsICZhZGQpKSB7CisJCQkJCQkJLyogUmV0dXJuIEVPRiBpZiB3ZQorCQkJCQkJCSAqIGNhbid0IHJlYWQgbW9yZQorCQkJCQkJCSAqIGRhdGEuICovCisJCQkJCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCQkJCQkJfQorCisJCQkJCQlza2lwX2JpdHMocmFyLCBkYml0cyAtIDQpOworCQkJCQkJYWRkID0gKGFkZCA+PiAoCisJCQkJCQkgICAgMzYgLSBkYml0cykpIDw8IDQ7CisJCQkJCQlkaXN0ICs9IGFkZDsKKwkJCQkJfQorCisJCQkJCWlmKEFSQ0hJVkVfT0sgIT0gZGVjb2RlX251bWJlcihhLAorCQkJCQkgICAgJnJhci0+Y3N0YXRlLmxkZCwgcCwgJmxvd19kaXN0KSkKKwkJCQkJeworCQkJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkJCQkgICAgQVJDSElWRV9FUlJOT19QUk9HUkFNTUVSLAorCQkJCQkJICAgICJGYWlsZWQgdG8gZGVjb2RlIHRoZSAiCisJCQkJCQkgICAgImRpc3RhbmNlIHNsb3QiKTsKKworCQkJCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJCQkJCX0KKworCQkJCQlpZihkaXN0ID49IElOVF9NQVggLSBsb3dfZGlzdCAtIDEpIHsKKwkJCQkJCS8qIFRoaXMgb25seSBoYXBwZW5zIGluCisJCQkJCQkgKiBpbnZhbGlkIGFyY2hpdmVzLiAqLworCQkJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCQkJCSAgICAiRGlzdGFuY2UgcG9pbnRlciAiCisJCQkJCQkgICAgIm92ZXJmbG93Iik7CisJCQkJCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwkJCQkJfQorCisJCQkJCWRpc3QgKz0gbG93X2Rpc3Q7CisJCQkJfSBlbHNlIHsKKwkJCQkJLyogZGJpdHMgaXMgb25lIG9mIFswLDEsMiwzXSAqLworCQkJCQlpbnQgYWRkOworCisJCQkJCWlmKEFSQ0hJVkVfT0sgIT0gcmVhZF9jb25zdW1lX2JpdHMocmFyLAorCQkJCQkgICAgIHAsIGRiaXRzLCAmYWRkKSkgeworCQkJCQkJLyogUmV0dXJuIEVPRiBpZiB3ZSBjYW4ndCByZWFkCisJCQkJCQkgKiBtb3JlIGRhdGEuICovCisJCQkJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisJCQkJCX0KKworCQkJCQlkaXN0ICs9IGFkZDsKKwkJCQl9CisJCQl9CisKKwkJCWlmKGRpc3QgPiAweDEwMCkgeworCQkJCWxlbisrOworCisJCQkJaWYoZGlzdCA+IDB4MjAwMCkgeworCQkJCQlsZW4rKzsKKworCQkJCQlpZihkaXN0ID4gMHg0MDAwMCkgeworCQkJCQkJbGVuKys7CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCWRpc3RfY2FjaGVfcHVzaChyYXIsIGRpc3QpOworCQkJcmFyLT5jc3RhdGUubGFzdF9sZW4gPSBsZW47CisKKwkJCWlmKEFSQ0hJVkVfT0sgIT0gY29weV9zdHJpbmcoYSwgbGVuLCBkaXN0KSkKKwkJCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKworCQkJY29udGludWU7CisJCX0gZWxzZSBpZihudW0gPT0gMjU2KSB7CisJCQkvKiBDcmVhdGUgYSBmaWx0ZXIuICovCisJCQlyZXQgPSBwYXJzZV9maWx0ZXIoYSwgcCk7CisJCQlpZihyZXQgIT0gQVJDSElWRV9PSykKKwkJCQlyZXR1cm4gcmV0OworCisJCQljb250aW51ZTsKKwkJfSBlbHNlIGlmKG51bSA9PSAyNTcpIHsKKwkJCWlmKHJhci0+Y3N0YXRlLmxhc3RfbGVuICE9IDApIHsKKwkJCQlpZihBUkNISVZFX09LICE9IGNvcHlfc3RyaW5nKGEsCisJCQkJICAgIHJhci0+Y3N0YXRlLmxhc3RfbGVuLAorCQkJCSAgICByYXItPmNzdGF0ZS5kaXN0X2NhY2hlWzBdKSkKKwkJCQl7CisJCQkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCQkJCX0KKwkJCX0KKworCQkJY29udGludWU7CisJCX0gZWxzZSB7CisJCQkvKiBudW0gPCAyNjIgKi8KKwkJCWNvbnN0IGludCBpZHggPSBudW0gLSAyNTg7CisJCQljb25zdCBpbnQgZGlzdCA9IGRpc3RfY2FjaGVfdG91Y2gocmFyLCBpZHgpOworCisJCQl1aW50MTZfdCBsZW5fc2xvdDsKKwkJCWludCBsZW47CisKKwkJCWlmKEFSQ0hJVkVfT0sgIT0gZGVjb2RlX251bWJlcihhLCAmcmFyLT5jc3RhdGUucmQsIHAsCisJCQkgICAgJmxlbl9zbG90KSkgeworCQkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCQkJfQorCisJCQlsZW4gPSBkZWNvZGVfY29kZV9sZW5ndGgocmFyLCBwLCBsZW5fc2xvdCk7CisJCQlyYXItPmNzdGF0ZS5sYXN0X2xlbiA9IGxlbjsKKworCQkJaWYoQVJDSElWRV9PSyAhPSBjb3B5X3N0cmluZyhhLCBsZW4sIGRpc3QpKQorCQkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIFRoZSBwcm9ncmFtIGNvdW50ZXIgc2hvdWxkbid0IHJlYWNoIGhlcmUuICovCisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIlVuc3VwcG9ydGVkIGJsb2NrIGNvZGU6IDB4JXgiLCBudW0pOworCisJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCX0KKworCXJldHVybiBBUkNISVZFX09LOworfQorCisvKiBCaW5hcnkgc2VhcmNoIGZvciB0aGUgUkFSdjUgc2lnbmF0dXJlLiAqLworc3RhdGljIGludCBzY2FuX2Zvcl9zaWduYXR1cmUoc3RydWN0IGFyY2hpdmVfcmVhZCogYSkgeworCWNvbnN0IHVpbnQ4X3QqIHA7CisJY29uc3QgaW50IGNodW5rX3NpemUgPSA1MTI7CisJc3NpemVfdCBpOworCWNoYXIgc2lnbmF0dXJlW3NpemVvZihyYXI1X3NpZ25hdHVyZV94b3IpXTsKKworCS8qIElmIHdlJ3JlIGhlcmUsIGl0IG1lYW5zIHdlJ3JlIG9uIGFuICd1bmtub3duIHRlcnJpdG9yeScgZGF0YS4KKwkgKiBUaGVyZSdzIG5vIGluZGljYXRpb24gd2hhdCBraW5kIG9mIGRhdGEgd2UncmUgcmVhZGluZyBoZXJlLgorCSAqIEl0IGNvdWxkIGJlIHNvbWUgdGV4dCBjb21tZW50LCBhbnkga2luZCBvZiBiaW5hcnkgZGF0YSwKKwkgKiBkaWdpdGFsIHNpZ24sIGRyYWdvbnMsIGV0Yy4KKwkgKgorCSAqIFdlIHdhbnQgdG8gZmluZCBhIHZhbGlkIFJBUnY1IG1hZ2ljIGhlYWRlciBpbnNpZGUgdGhpcyB1bmtub3duCisJICogZGF0YS4gKi8KKworCS8qIElzIGl0IHBvc3NpYmxlIGluIGxpYmFyY2hpdmUgdG8ganVzdCBza2lwIGV2ZXJ5dGhpbmcgdW50aWwgdGhlCisJICogZW5kIG9mIHRoZSBmaWxlPyBJZiBzbywgaXQgd291bGQgYmUgYSBiZXR0ZXIgYXBwcm9hY2ggdGhhbiB0aGUKKwkgKiBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24uICovCisKKwlyYXI1X3NpZ25hdHVyZShzaWduYXR1cmUpOworCisJd2hpbGUoMSkgeworCQlpZighcmVhZF9haGVhZChhLCBjaHVua19zaXplLCAmcCkpCisJCQlyZXR1cm4gQVJDSElWRV9FT0Y7CisKKwkJZm9yKGkgPSAwOyBpIDwgY2h1bmtfc2l6ZSAtIChpbnQpc2l6ZW9mKHJhcjVfc2lnbmF0dXJlX3hvcik7CisJCSAgICBpKyspIHsKKwkJCWlmKG1lbWNtcCgmcFtpXSwgc2lnbmF0dXJlLAorCQkJICAgIHNpemVvZihyYXI1X3NpZ25hdHVyZV94b3IpKSA9PSAwKSB7CisJCQkJLyogQ29uc3VtZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdlJ3ZlIHVzZWQgdG8KKwkJCQkgKiBzZWFyY2ggZm9yIHRoZSBzaWduYXR1cmUsIGFzIHdlbGwgYXMgdGhlCisJCQkJICogbnVtYmVyIG9mIGJ5dGVzIHVzZWQgYnkgdGhlIHNpZ25hdHVyZQorCQkJCSAqIGl0c2VsZi4gQWZ0ZXIgdGhpcyB3ZSBzaG91bGQgYmUgc3RhbmRpbmcKKwkJCQkgKiBvbiBhIHZhbGlkIGJhc2UgYmxvY2sgaGVhZGVyLiAqLworCQkJCSh2b2lkKSBjb25zdW1lKGEsCisJCQkJICAgIGkgKyBzaXplb2YocmFyNV9zaWduYXR1cmVfeG9yKSk7CisJCQkJcmV0dXJuIEFSQ0hJVkVfT0s7CisJCQl9CisJCX0KKworCQljb25zdW1lKGEsIGNodW5rX3NpemUpOworCX0KKworCXJldHVybiBBUkNISVZFX0ZBVEFMOworfQorCisvKiBUaGlzIGZ1bmN0aW9uIHdpbGwgc3dpdGNoIHRoZSBtdWx0aXZvbHVtZSBhcmNoaXZlIGZpbGUgdG8gYW5vdGhlciBmaWxlLAorICogaS5lLiBmcm9tIHBhcnQwMyB0byBwYXJ0IDA0LiAqLworc3RhdGljIGludCBhZHZhbmNlX211bHRpdm9sdW1lKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEpIHsKKwlpbnQgbHJldDsKKwlzdHJ1Y3QgcmFyNSogcmFyID0gZ2V0X2NvbnRleHQoYSk7CisKKwkvKiBBIHNtYWxsIHN0YXRlIG1hY2hpbmUgdGhhdCB3aWxsIHNraXAgdW5uZWNlc3NhcnkgZGF0YSwgbmVlZGVkIHRvCisJICogc3dpdGNoIGZyb20gb25lIG11bHRpdm9sdW1lIHRvIGFub3RoZXIuIFN1Y2ggc2tpcHBpbmcgaXMgbmVlZGVkIGlmCisJICogd2Ugd2FudCB0byBiZSBhbiBzdHJlYW0tb3JpZW50ZWQgKGluc3RlYWQgb2YgZmlsZS1vcmllbnRlZCkKKwkgKiB1bnBhY2tlci4KKwkgKgorCSAqIFRoZSBzdGF0ZSBtYWNoaW5lIHN0YXJ0cyB3aXRoIGByYXItPm1haW4uZW5kYXJjYCA9PSAwLiBJdCBhbHNvCisJICogYXNzdW1lcyB0aGF0IGN1cnJlbnQgc3RyZWFtIHBvaW50ZXIgcG9pbnRzIHRvIHNvbWUgYmFzZSBibG9jaworCSAqIGhlYWRlci4KKwkgKgorCSAqIFRoZSBgZW5kYXJjYCBmaWVsZCBpcyBiZWluZyBzZXQgd2hlbiB0aGUgYmFzZSBibG9jayBwYXJzaW5nCisJICogZnVuY3Rpb24gZW5jb3VudGVycyB0aGUgJ2VuZCBvZiBhcmNoaXZlJyBtYXJrZXIuCisJICovCisKKwl3aGlsZSgxKSB7CisJCWlmKHJhci0+bWFpbi5lbmRhcmMgPT0gMSkgeworCQkJaW50IGxvb3BpbmcgPSAxOworCisJCQlyYXItPm1haW4uZW5kYXJjID0gMDsKKworCQkJd2hpbGUobG9vcGluZykgeworCQkJCWxyZXQgPSBza2lwX2Jhc2VfYmxvY2soYSk7CisJCQkJc3dpdGNoKGxyZXQpIHsKKwkJCQkJY2FzZSBBUkNISVZFX1JFVFJZOgorCQkJCQkJLyogQ29udGludWUgbG9vcGluZy4gKi8KKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIEFSQ0hJVkVfT0s6CisJCQkJCQkvKiBCcmVhayBsb29wLiAqLworCQkJCQkJbG9vcGluZyA9IDA7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCS8qIEZvcndhcmQgYW55IGVycm9ycyB0byB0aGUKKwkJCQkJCSAqIGNhbGxlci4gKi8KKwkJCQkJCXJldHVybiBscmV0OworCQkJCX0KKwkJCX0KKworCQkJYnJlYWs7CisJCX0gZWxzZSB7CisJCQkvKiBTa2lwIGN1cnJlbnQgYmFzZSBibG9jay4gSW4gb3JkZXIgdG8gcHJvcGVybHkgc2tpcAorCQkJICogaXQsIHdlIHJlYWxseSBuZWVkIHRvIHNpbXBseSBwYXJzZSBpdCBhbmQgZGlzY2FyZAorCQkJICogdGhlIHJlc3VsdHMuICovCisKKwkJCWxyZXQgPSBza2lwX2Jhc2VfYmxvY2soYSk7CisJCQlpZihscmV0ID09IEFSQ0hJVkVfRkFUQUwgfHwgbHJldCA9PSBBUkNISVZFX0ZBSUxFRCkKKwkJCQlyZXR1cm4gbHJldDsKKworCQkJLyogVGhlIGBza2lwX2Jhc2VfYmxvY2tgIGZ1bmN0aW9uIHRlbGxzIHVzIGlmIHdlCisJCQkgKiBzaG91bGQgY29udGludWUgd2l0aCBza2lwcGluZywgb3Igd2Ugc2hvdWxkIHN0b3AKKwkJCSAqIHNraXBwaW5nLiBXZSdyZSB0cnlpbmcgdG8gc2tpcCBldmVyeXRoaW5nIHVwIHRvCisJCQkgKiBhIGJhc2UgRklMRSBibG9jay4gKi8KKworCQkJaWYobHJldCAhPSBBUkNISVZFX1JFVFJZKSB7CisJCQkJLyogSWYgdGhlcmUgd2FzIGFuIGVycm9yIGR1cmluZyBza2lwcGluZywgb3Igd2UKKwkJCQkgKiBoYXZlIGp1c3Qgc2tpcHBlZCBhIEZJTEUgYmFzZSBibG9jay4uLiAqLworCisJCQkJaWYocmFyLT5tYWluLmVuZGFyYyA9PSAwKSB7CisJCQkJCXJldHVybiBscmV0OworCQkJCX0gZWxzZSB7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBBUkNISVZFX09LOworfQorCisvKiBNZXJnZXMgdGhlIHBhcnRpYWwgYmxvY2sgZnJvbSB0aGUgZmlyc3QgbXVsdGl2b2x1bWUgYXJjaGl2ZSBmaWxlLCBhbmQKKyAqIHBhcnRpYWwgYmxvY2sgZnJvbSB0aGUgc2Vjb25kIG11bHRpdm9sdW1lIGFyY2hpdmUgZmlsZS4gVGhlIHJlc3VsdCBpcworICogYSBjaHVuayBvZiBtZW1vcnkgY29udGFpbmluZyB0aGUgd2hvbGUgYmxvY2ssIGFuZCB0aGUgc3RyZWFtIHBvaW50ZXIKKyAqIGlzIGFkdmFuY2VkIHRvIHRoZSBuZXh0IGJsb2NrIGluIHRoZSBzZWNvbmQgbXVsdGl2b2x1bWUgYXJjaGl2ZSBmaWxlLiAqLworc3RhdGljIGludCBtZXJnZV9ibG9jayhzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhLCBzc2l6ZV90IGJsb2NrX3NpemUsCisgICAgY29uc3QgdWludDhfdCoqIHApCit7CisJc3RydWN0IHJhcjUqIHJhciA9IGdldF9jb250ZXh0KGEpOworCXNzaXplX3QgY3VyX2Jsb2NrX3NpemUsIHBhcnRpYWxfb2Zmc2V0ID0gMDsKKwljb25zdCB1aW50OF90KiBscDsKKwlpbnQgcmV0OworCisJaWYocmFyLT5tZXJnZV9tb2RlKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX1BST0dSQU1NRVIsCisJCSAgICAiUmVjdXJzaXZlIG1lcmdlIGlzIG5vdCBhbGxvd2VkIik7CisKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJLyogU2V0IGEgZmxhZyB0aGF0IHdlJ3JlIGluIHRoZSBzd2l0Y2hpbmcgbW9kZS4gKi8KKwlyYXItPmNzdGF0ZS5zd2l0Y2hfbXVsdGl2b2x1bWUgPSAxOworCisJLyogUmVhbGxvY2F0ZSB0aGUgbWVtb3J5IHdoaWNoIHdpbGwgaG9sZCB0aGUgd2hvbGUgYmxvY2suICovCisJaWYocmFyLT52b2wucHVzaF9idWYpCisJCWZyZWUoKHZvaWQqKSByYXItPnZvbC5wdXNoX2J1Zik7CisKKwkvKiBJbmNyZWFzaW5nIHRoZSBhbGxvY2F0aW9uIGJsb2NrIGJ5IDggaXMgZHVlIHRvIGJpdCByZWFkaW5nIGZ1bmN0aW9ucywKKwkgKiB3aGljaCBhcmUgdXNpbmcgYWRkaXRpb25hbCAyIG9yIDQgYnl0ZXMuIEFsbG9jYXRpbmcgdGhlIGJsb2NrIHNpemUKKwkgKiBieSBleGFjdCB2YWx1ZSB3b3VsZCBtYWtlIGJpdCByZWFkZXIgcGVyZm9ybSByZWFkcyBmcm9tIGludmFsaWQKKwkgKiBtZW1vcnkgYmxvY2sgd2hlbiByZWFkaW5nIHRoZSBsYXN0IGJ5dGUgZnJvbSB0aGUgYnVmZmVyLiAqLworCXJhci0+dm9sLnB1c2hfYnVmID0gbWFsbG9jKGJsb2NrX3NpemUgKyA4KTsKKwlpZighcmFyLT52b2wucHVzaF9idWYpIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEVOT01FTSwKKwkJICAgICJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgbWVyZ2UgYmxvY2sgYnVmZmVyLiIpOworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwkvKiBWYWxncmluZCBjb21wbGFpbnMgaWYgdGhlIGV4dGVuc2lvbiBibG9jayBmb3IgYml0IHJlYWRlciBpcyBub3QKKwkgKiBpbml0aWFsaXplZCwgc28gaW5pdGlhbGl6ZSBpdC4gKi8KKwltZW1zZXQoJnJhci0+dm9sLnB1c2hfYnVmW2Jsb2NrX3NpemVdLCAwLCA4KTsKKworCS8qIEEgc2luZ2xlIGJsb2NrIGNhbiBzcGFuIGFjcm9zcyBtdWx0aXBsZSBtdWx0aXZvbHVtZSBhcmNoaXZlIGZpbGVzLAorCSAqIHNvIHdlIHVzZSBhIGxvb3AgaGVyZS4gVGhpcyBsb29wIHdpbGwgY29uc3VtZSBlbm91Z2ggbXVsdGl2b2x1bWUKKwkgKiBhcmNoaXZlIGZpbGVzIHVudGlsIHRoZSB3aG9sZSBibG9jayBpcyByZWFkLiAqLworCisJd2hpbGUoMSkgeworCQkvKiBHZXQgdGhlIHNpemUgb2YgY3VycmVudCBibG9jayBjaHVuayBpbiB0aGlzIG11bHRpdm9sdW1lCisJCSAqIGFyY2hpdmUgZmlsZSBhbmQgcmVhZCBpdC4gKi8KKwkJY3VyX2Jsb2NrX3NpemUgPSByYXI1X21pbihyYXItPmZpbGUuYnl0ZXNfcmVtYWluaW5nLAorCQkgICAgYmxvY2tfc2l6ZSAtIHBhcnRpYWxfb2Zmc2V0KTsKKworCQlpZihjdXJfYmxvY2tfc2l6ZSA9PSAwKSB7CisJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKKwkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkJICAgICJFbmNvdW50ZXJlZCBibG9jayBzaXplID09IDAgZHVyaW5nIGJsb2NrIG1lcmdlIik7CisJCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwkJfQorCisJCWlmKCFyZWFkX2FoZWFkKGEsIGN1cl9ibG9ja19zaXplLCAmbHApKQorCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCisJCS8qIFNhbml0eSBjaGVjazsgdGhlcmUgc2hvdWxkIG5ldmVyIGJlIGEgc2l0dWF0aW9uIHdoZXJlIHRoaXMKKwkJICogZnVuY3Rpb24gcmVhZHMgbW9yZSBkYXRhIHRoYW4gdGhlIGJsb2NrJ3Mgc2l6ZS4gKi8KKwkJaWYocGFydGlhbF9vZmZzZXQgKyBjdXJfYmxvY2tfc2l6ZSA+IGJsb2NrX3NpemUpIHsKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJICAgIEFSQ0hJVkVfRVJSTk9fUFJPR1JBTU1FUiwKKwkJCSAgICAiQ29uc3VtZWQgdG9vIG11Y2ggZGF0YSB3aGVuIG1lcmdpbmcgYmxvY2tzLiIpOworCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJCX0KKworCQkvKiBNZXJnZSBwcmV2aW91cyBibG9jayBjaHVuayB3aXRoIGN1cnJlbnQgYmxvY2sgY2h1bmssCisJCSAqIG9yIGNyZWF0ZSBmaXJzdCBibG9jayBjaHVuayBpZiB0aGlzIGlzIG91ciBmaXJzdAorCQkgKiBpdGVyYXRpb24uICovCisJCW1lbWNweSgmcmFyLT52b2wucHVzaF9idWZbcGFydGlhbF9vZmZzZXRdLCBscCwgY3VyX2Jsb2NrX3NpemUpOworCisJCS8qIEFkdmFuY2UgdGhlIHN0cmVhbSByZWFkIHBvaW50ZXIgYnkgdGhpcyBibG9jayBjaHVuayBzaXplLiAqLworCQlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgY3VyX2Jsb2NrX3NpemUpKQorCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCisJCS8qIFVwZGF0ZSB0aGUgcG9pbnRlcnMuIGBwYXJ0aWFsX29mZnNldGAgY29udGFpbnMgaW5mb3JtYXRpb24KKwkJICogYWJvdXQgdGhlIHN1bSBvZiBtZXJnZWQgYmxvY2sgY2h1bmtzLiAqLworCQlwYXJ0aWFsX29mZnNldCArPSBjdXJfYmxvY2tfc2l6ZTsKKwkJcmFyLT5maWxlLmJ5dGVzX3JlbWFpbmluZyAtPSBjdXJfYmxvY2tfc2l6ZTsKKworCQkvKiBJZiBgcGFydGlhbF9vZmZzZXRgIGlzIHRoZSBzYW1lIGFzIGBibG9ja19zaXplYCwgdGhpcyBtZWFucworCQkgKiB3ZSd2ZSBtZXJnZWQgYWxsIGJsb2NrIGNodW5rcyBhbmQgd2UgaGF2ZSBhIHZhbGlkIGZ1bGwKKwkJICogYmxvY2suICovCisJCWlmKHBhcnRpYWxfb2Zmc2V0ID09IGJsb2NrX3NpemUpIHsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogSWYgd2UgZG9uJ3QgaGF2ZSBhbnkgYnl0ZXMgdG8gcmVhZCwgdGhpcyBtZWFucyB3ZSBzaG91bGQKKwkJICogc3dpdGNoIHRvIGFub3RoZXIgbXVsdGl2b2x1bWUgYXJjaGl2ZSBmaWxlLiAqLworCQlpZihyYXItPmZpbGUuYnl0ZXNfcmVtYWluaW5nID09IDApIHsKKwkJCXJhci0+bWVyZ2VfbW9kZSsrOworCQkJcmV0ID0gYWR2YW5jZV9tdWx0aXZvbHVtZShhKTsKKwkJCXJhci0+bWVyZ2VfbW9kZS0tOworCQkJaWYocmV0ICE9IEFSQ0hJVkVfT0spIHsKKwkJCQlyZXR1cm4gcmV0OworCQkJfQorCQl9CisJfQorCisJKnAgPSByYXItPnZvbC5wdXNoX2J1ZjsKKworCS8qIElmIHdlJ3JlIGhlcmUsIHdlIGNhbiByZXN1bWUgdW5wYWNraW5nIGJ5IHByb2Nlc3NpbmcgdGhlIGJsb2NrCisJICogcG9pbnRlZCB0byBieSB0aGUgYCpwYCBtZW1vcnkgcG9pbnRlci4gKi8KKworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgaW50IHByb2Nlc3NfYmxvY2soc3RydWN0IGFyY2hpdmVfcmVhZCogYSkgeworCWNvbnN0IHVpbnQ4X3QqIHA7CisJc3RydWN0IHJhcjUqIHJhciA9IGdldF9jb250ZXh0KGEpOworCWludCByZXQ7CisKKwkvKiBJZiB3ZSBkb24ndCBoYXZlIGFueSBkYXRhIHRvIGJlIHByb2Nlc3NlZCwgdGhpcyBtb3N0IHByb2JhYmx5IG1lYW5zCisJICogd2UgbmVlZCB0byBzd2l0Y2ggdG8gdGhlIG5leHQgdm9sdW1lLiAqLworCWlmKHJhci0+bWFpbi52b2x1bWUgJiYgcmFyLT5maWxlLmJ5dGVzX3JlbWFpbmluZyA9PSAwKSB7CisJCXJldCA9IGFkdmFuY2VfbXVsdGl2b2x1bWUoYSk7CisJCWlmKHJldCAhPSBBUkNISVZFX09LKQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwlpZihyYXItPmNzdGF0ZS5ibG9ja19wYXJzaW5nX2ZpbmlzaGVkKSB7CisJCXNzaXplX3QgYmxvY2tfc2l6ZTsKKwkJc3NpemVfdCB0b19za2lwOworCQlzc2l6ZV90IGN1cl9ibG9ja19zaXplOworCisJCS8qIFRoZSBoZWFkZXIgc2l6ZSB3b24ndCBiZSBiaWdnZXIgdGhhbiA2IGJ5dGVzLiAqLworCQlpZighcmVhZF9haGVhZChhLCA2LCAmcCkpIHsKKwkJCS8qIEZhaWxlZCB0byBwcmVmZXRjaCBkYXRhIGJsb2NrIGhlYWRlci4gKi8KKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKwkJfQorCisJCS8qCisJCSAqIFJlYWQgYmxvY2tfc2l6ZSBieSBwYXJzaW5nIGJsb2NrIGhlYWRlci4gVmFsaWRhdGUgdGhlIGhlYWRlcgorCQkgKiBieSBjYWxjdWxhdGluZyBDUkMgYnl0ZSBzdG9yZWQgaW5zaWRlIHRoZSBoZWFkZXIuIFNpemUgb2YKKwkJICogdGhlIGhlYWRlciBpcyBub3QgY29uc3RhbnQgKGJsb2NrIHNpemUgY2FuIGJlIHN0b3JlZCBlaXRoZXIKKwkJICogaW4gMSBvciAyIGJ5dGVzKSwgdGhhdCdzIHdoeSBibG9jayBzaXplIGlzIGxlZnQgb3V0IGZyb20gdGhlCisJCSAqIGBjb21wcmVzc2VkX2Jsb2NrX2hlYWRlcmAgc3RydWN0dXJlIGFuZCByZXR1cm5lZCBieQorCQkgKiBgcGFyc2VfYmxvY2tfaGVhZGVyYCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LiAqLworCisJCXJldCA9IHBhcnNlX2Jsb2NrX2hlYWRlcihhLCBwLCAmYmxvY2tfc2l6ZSwKKwkJICAgICZyYXItPmxhc3RfYmxvY2tfaGRyKTsKKwkJaWYocmV0ICE9IEFSQ0hJVkVfT0spIHsKKwkJCXJldHVybiByZXQ7CisJCX0KKworCQkvKiBTa2lwIGJsb2NrIGhlYWRlci4gTmV4dCBkYXRhIGlzIGh1ZmZtYW4gdGFibGVzLAorCQkgKiBpZiBwcmVzZW50LiAqLworCQl0b19za2lwID0gc2l6ZW9mKHN0cnVjdCBjb21wcmVzc2VkX2Jsb2NrX2hlYWRlcikgKworCQkJYmZfYnl0ZV9jb3VudCgmcmFyLT5sYXN0X2Jsb2NrX2hkcikgKyAxOworCisJCWlmKEFSQ0hJVkVfT0sgIT0gY29uc3VtZShhLCB0b19za2lwKSkKKwkJCXJldHVybiBBUkNISVZFX0VPRjsKKworCQlyYXItPmZpbGUuYnl0ZXNfcmVtYWluaW5nIC09IHRvX3NraXA7CisKKwkJLyogVGhlIGJsb2NrIHNpemUgZ2l2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdob2xlIGJsb2NrIHNpemUsCisJCSAqIGJ1dCB0aGUgYmxvY2sgY291bGQgYmUgc3RvcmVkIGluIHNwbGl0IGZvcm0gd2hlbiB1c2luZworCQkgKiBtdWx0aS12b2x1bWUgYXJjaGl2ZXMuIEluIHRoaXMgY2FzZSwgdGhlIGJsb2NrIHNpemUgd2lsbCBiZQorCQkgKiBiaWdnZXIgdGhhbiB0aGUgYWN0dWFsIGRhdGEgc3RvcmVkIGluIHRoaXMgZmlsZS4gUmVtYWluaW5nCisJCSAqIHBhcnQgb2YgdGhlIGRhdGEgd2lsbCBiZSBpbiBhbm90aGVyIGZpbGUuICovCisKKwkJY3VyX2Jsb2NrX3NpemUgPQorCQkJcmFyNV9taW4ocmFyLT5maWxlLmJ5dGVzX3JlbWFpbmluZywgYmxvY2tfc2l6ZSk7CisKKwkJaWYoYmxvY2tfc2l6ZSA+IHJhci0+ZmlsZS5ieXRlc19yZW1haW5pbmcpIHsKKwkJCS8qIElmIGN1cnJlbnQgYmxvY2tzJyBzaXplIGlzIGJpZ2dlciB0aGFuIG91ciBkYXRhCisJCQkgKiBzaXplLCB0aGlzIG1lYW5zIHdlIGhhdmUgYSBtdWx0aXZvbHVtZSBhcmNoaXZlLgorCQkJICogSW4gdGhpcyBjYXNlLCBza2lwIGFsbCBiYXNlIGhlYWRlcnMgdW50aWwgdGhlIGVuZAorCQkJICogb2YgdGhlIGZpbGUsIHByb2NlZWQgdG8gbmV4dCAicGFydFhYWC5yYXIiIHZvbHVtZSwKKwkJCSAqIGZpbmQgaXRzIHNpZ25hdHVyZSwgc2tpcCBhbGwgaGVhZGVycyB1cCB0byB0aGUgZmlyc3QKKwkJCSAqIEZJTEUgYmFzZSBoZWFkZXIsIGFuZCBjb250aW51ZSBmcm9tIHRoZXJlLgorCQkJICoKKwkJCSAqIE5vdGUgdGhhdCBgbWVyZ2VfYmxvY2tgIHdpbGwgdXBkYXRlIHRoZSBgcmFyYAorCQkJICogY29udGV4dCBzdHJ1Y3R1cmUgcXVpdGUgZXh0ZW5zaXZlbHkuICovCisKKwkJCXJldCA9IG1lcmdlX2Jsb2NrKGEsIGJsb2NrX3NpemUsICZwKTsKKwkJCWlmKHJldCAhPSBBUkNISVZFX09LKSB7CisJCQkJcmV0dXJuIHJldDsKKwkJCX0KKworCQkJY3VyX2Jsb2NrX3NpemUgPSBibG9ja19zaXplOworCisJCQkvKiBDdXJyZW50IHN0cmVhbSBwb2ludGVyIHNob3VsZCBiZSBub3cgZGlyZWN0bHkKKwkJCSAqICphZnRlciogdGhlIGJsb2NrIHRoYXQgc3Bhbm5lZCB0aHJvdWdoIG11bHRpcGxlCisJCQkgKiBhcmNoaXZlIGZpbGVzLiBgcGAgcG9pbnRlciBzaG91bGQgaGF2ZSB0aGUgZGF0YSBvZgorCQkJICogdGhlICp3aG9sZSogYmxvY2sgKG1lcmdlZCBmcm9tIHBhcnRpYWwgYmxvY2tzCisJCQkgKiBzdG9yZWQgaW4gbXVsdGlwbGUgYXJjaGl2ZXMgZmlsZXMpLiAqLworCQl9IGVsc2UgeworCQkJcmFyLT5jc3RhdGUuc3dpdGNoX211bHRpdm9sdW1lID0gMDsKKworCQkJLyogUmVhZCB0aGUgd2hvbGUgYmxvY2sgc2l6ZSBpbnRvIG1lbW9yeS4gVGhpcyBjYW4gdGFrZQorCQkJICogdXAgdG8gIDggbWVnYWJ5dGVzIG9mIG1lbW9yeSBpbiB0aGVvcmV0aWNhbCBjYXNlcy4KKwkJCSAqIE1pZ2h0IGJlIHdvcnRoIHRvIG9wdGltaXplIHRoaXMgYW5kIHVzZSBhIHN0YW5kYXJkCisJCQkgKiBjaHVuayBvZiA0a2Incy4gKi8KKwkJCWlmKCFyZWFkX2FoZWFkKGEsIDQgKyBjdXJfYmxvY2tfc2l6ZSwgJnApKSB7CisJCQkJLyogRmFpbGVkIHRvIHByZWZldGNoIGJsb2NrIGRhdGEuICovCisJCQkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCQkJfQorCQl9CisKKwkJcmFyLT5jc3RhdGUuYmxvY2tfYnVmID0gcDsKKwkJcmFyLT5jc3RhdGUuY3VyX2Jsb2NrX3NpemUgPSBjdXJfYmxvY2tfc2l6ZTsKKwkJcmFyLT5jc3RhdGUuYmxvY2tfcGFyc2luZ19maW5pc2hlZCA9IDA7CisKKwkJcmFyLT5iaXRzLmluX2FkZHIgPSAwOworCQlyYXItPmJpdHMuYml0X2FkZHIgPSAwOworCisJCWlmKGJmX2lzX3RhYmxlX3ByZXNlbnQoJnJhci0+bGFzdF9ibG9ja19oZHIpKSB7CisJCQkvKiBMb2FkIEh1ZmZtYW4gdGFibGVzLiAqLworCQkJcmV0ID0gcGFyc2VfdGFibGVzKGEsIHJhciwgcCk7CisJCQlpZihyZXQgIT0gQVJDSElWRV9PSykgeworCQkJCS8qIEVycm9yIGR1cmluZyBkZWNvbXByZXNzaW9uIG9mIEh1ZmZtYW4KKwkJCQkgKiB0YWJsZXMuICovCisJCQkJcmV0dXJuIHJldDsKKwkJCX0KKwkJfQorCX0gZWxzZSB7CisJCS8qIEJsb2NrIHBhcnNpbmcgbm90IGZpbmlzaGVkLCByZXVzZSBwcmV2aW91cyBtZW1vcnkgYnVmZmVyLiAqLworCQlwID0gcmFyLT5jc3RhdGUuYmxvY2tfYnVmOworCX0KKworCS8qIFVuY29tcHJlc3MgdGhlIGJsb2NrLCBvciBhIHBhcnQgb2YgaXQsIGRlcGVuZGluZyBvbiBob3cgbWFueSBieXRlcworCSAqIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IHVuY29tcHJlc3NpbmcgdGhlIGJsb2NrLgorCSAqCisJICogSW4gY2FzZSB0b28gbWFueSBieXRlcyB3aWxsIGJlIGdlbmVyYXRlZCwgY2FsbGluZyB0aGlzIGZ1bmN0aW9uCisJICogYWdhaW4gd2lsbCByZXN1bWUgdGhlIHVuY29tcHJlc3Npb24gb3BlcmF0aW9uLiAqLworCXJldCA9IGRvX3VuY29tcHJlc3NfYmxvY2soYSwgcCk7CisJaWYocmV0ICE9IEFSQ0hJVkVfT0spIHsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlpZihyYXItPmNzdGF0ZS5ibG9ja19wYXJzaW5nX2ZpbmlzaGVkICYmCisJICAgIHJhci0+Y3N0YXRlLnN3aXRjaF9tdWx0aXZvbHVtZSA9PSAwICYmCisJICAgIHJhci0+Y3N0YXRlLmN1cl9ibG9ja19zaXplID4gMCkKKwl7CisJCS8qIElmIHdlJ3JlIHByb2Nlc3NpbmcgYSBub3JtYWwgYmxvY2ssIGNvbnN1bWUgdGhlIHdob2xlCisJCSAqIGJsb2NrLiBXZSBjYW4gZG8gdGhpcyBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgcmVhZCB0aGUgd2hvbGUKKwkJICogYmxvY2sgdG8gbWVtb3J5LiAqLworCQlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgcmFyLT5jc3RhdGUuY3VyX2Jsb2NrX3NpemUpKQorCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisKKwkJcmFyLT5maWxlLmJ5dGVzX3JlbWFpbmluZyAtPSByYXItPmNzdGF0ZS5jdXJfYmxvY2tfc2l6ZTsKKwl9IGVsc2UgaWYocmFyLT5jc3RhdGUuc3dpdGNoX211bHRpdm9sdW1lKSB7CisJCS8qIERvbid0IGNvbnN1bWUgdGhlIGJsb2NrIGlmIHdlJ3JlIGRvaW5nIG11bHRpdm9sdW1lCisJCSAqIHByb2Nlc3NpbmcuIFRoZSB2b2x1bWUgc3dpdGNoaW5nIGZ1bmN0aW9uIHdpbGwgY29uc3VtZQorCQkgKiB0aGUgcHJvcGVyIGNvdW50IG9mIGJ5dGVzIGluc3RlYWQuICovCisJCXJhci0+Y3N0YXRlLnN3aXRjaF9tdWx0aXZvbHVtZSA9IDA7CisJfQorCisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKKy8qIFBvcHMgdGhlIGBidWZgLCBgc2l6ZWAgYW5kIGBvZmZzZXRgIGZyb20gdGhlICJkYXRhIHJlYWR5IiBzdGFjay4KKyAqCisgKiBSZXR1cm5zIEFSQ0hJVkVfT0sgd2hlbiB0aG9zZSBhcmd1bWVudHMgY2FuIGJlIHVzZWQsIEFSQ0hJVkVfUkVUUlkKKyAqIHdoZW4gdGhlcmUgaXMgbm8gZGF0YSBvbiB0aGUgc3RhY2suICovCitzdGF0aWMgaW50IHVzZV9kYXRhKHN0cnVjdCByYXI1KiByYXIsIGNvbnN0IHZvaWQqKiBidWYsIHNpemVfdCogc2l6ZSwKKyAgICBpbnQ2NF90KiBvZmZzZXQpCit7CisJaW50IGk7CisKKwlmb3IoaSA9IDA7IGkgPCByYXI1X2NvdW50b2YocmFyLT5jc3RhdGUuZHJlYWR5KTsgaSsrKSB7CisJCXN0cnVjdCBkYXRhX3JlYWR5ICpkID0gJnJhci0+Y3N0YXRlLmRyZWFkeVtpXTsKKworCQlpZihkLT51c2VkKSB7CisJCQlpZihidWYpICAgICpidWYgPSBkLT5idWY7CisJCQlpZihzaXplKSAgICpzaXplID0gZC0+c2l6ZTsKKwkJCWlmKG9mZnNldCkgKm9mZnNldCA9IGQtPm9mZnNldDsKKworCQkJZC0+dXNlZCA9IDA7CisJCQlyZXR1cm4gQVJDSElWRV9PSzsKKwkJfQorCX0KKworCXJldHVybiBBUkNISVZFX1JFVFJZOworfQorCisvKiBQdXNoZXMgdGhlIGBidWZgLCBgc2l6ZWAgYW5kIGBvZmZzZXRgIGFyZ3VtZW50cyB0byB0aGUgcmFyLT5jc3RhdGUuZHJlYWR5CisgKiBGSUZPIHN0YWNrLiBUaG9zZSB2YWx1ZXMgd2lsbCBiZSBwb3BwZWQgZnJvbSB0aGlzIHN0YWNrIGJ5IHRoZSBgdXNlX2RhdGFgCisgKiBmdW5jdGlvbi4gKi8KK3N0YXRpYyBpbnQgcHVzaF9kYXRhX3JlYWR5KHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsIHN0cnVjdCByYXI1KiByYXIsCisgICAgY29uc3QgdWludDhfdCogYnVmLCBzaXplX3Qgc2l6ZSwgaW50NjRfdCBvZmZzZXQpCit7CisJaW50IGk7CisKKwkvKiBEb24ndCBwdXNoIGlmIHdlJ3JlIGluIHNraXAgbW9kZS4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb2xpZAorCSAqIHN0cmVhbXMgbmVlZCBmdWxsIHByb2Nlc3NpbmcgZXZlbiBpZiB3ZSdyZSBza2lwcGluZyBkYXRhLiBBZnRlcgorCSAqIGZ1bGx5IHByb2Nlc3NpbmcgdGhlIHN0cmVhbSwgd2UgbmVlZCB0byBkaXNjYXJkIHRoZSBnZW5lcmF0ZWQgYnl0ZXMsCisJICogYmVjYXVzZSB3ZSdyZSBpbnRlcmVzdGVkIG9ubHkgaW4gdGhlIHNpZGUgZWZmZWN0OiBidWlsZGluZyB1cCB0aGUKKwkgKiBpbnRlcm5hbCB3aW5kb3cgY2lyY3VsYXIgYnVmZmVyLiBUaGlzIHdpbmRvdyBidWZmZXIgd2lsbCBiZSB1c2VkCisJICogbGF0ZXIgZHVyaW5nIHVucGFja2luZyBvZiByZXF1ZXN0ZWQgZGF0YS4gKi8KKwlpZihyYXItPnNraXBfbW9kZSkKKwkJcmV0dXJuIEFSQ0hJVkVfT0s7CisKKwkvKiBTYW5pdHkgY2hlY2suICovCisJaWYob2Zmc2V0ICE9IHJhci0+ZmlsZS5sYXN0X29mZnNldCArIHJhci0+ZmlsZS5sYXN0X3NpemUpIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fUFJPR1JBTU1FUiwKKwkJICAgICJTYW5pdHkgY2hlY2sgZXJyb3I6IG91dHB1dCBzdHJlYW0gaXMgbm90IGNvbnRpbnVvdXMiKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJZm9yKGkgPSAwOyBpIDwgcmFyNV9jb3VudG9mKHJhci0+Y3N0YXRlLmRyZWFkeSk7IGkrKykgeworCQlzdHJ1Y3QgZGF0YV9yZWFkeSogZCA9ICZyYXItPmNzdGF0ZS5kcmVhZHlbaV07CisJCWlmKCFkLT51c2VkKSB7CisJCQlkLT51c2VkID0gMTsKKwkJCWQtPmJ1ZiA9IGJ1ZjsKKwkJCWQtPnNpemUgPSBzaXplOworCQkJZC0+b2Zmc2V0ID0gb2Zmc2V0OworCisJCQkvKiBUaGVzZSBmaWVsZHMgYXJlIHVzZWQgb25seSBpbiBzYW5pdHkgY2hlY2tpbmcuICovCisJCQlyYXItPmZpbGUubGFzdF9vZmZzZXQgPSBvZmZzZXQ7CisJCQlyYXItPmZpbGUubGFzdF9zaXplID0gc2l6ZTsKKworCQkJLyogQ2FsY3VsYXRlIHRoZSBjaGVja3N1bSBvZiB0aGlzIG5ldyBibG9jayBiZWZvcmUKKwkJCSAqIHN1Ym1pdHRpbmcgZGF0YSB0byBsaWJhcmNoaXZlJ3MgZW5naW5lLiAqLworCQkJdXBkYXRlX2NyYyhyYXIsIGQtPmJ1ZiwgZC0+c2l6ZSk7CisKKwkJCXJldHVybiBBUkNISVZFX09LOworCQl9CisJfQorCisJLyogUHJvZ3JhbSBjb3VudGVyIHdpbGwgcmVhY2ggdGhpcyBjb2RlIGlmIHRoZSBgcmFyLT5jc3RhdGUuZGF0YV9yZWFkeWAKKwkgKiBzdGFjayB3aWxsIGJlIGZpbGxlZCB1cCBzbyB0aGF0IG5vIG5ldyBlbnRyaWVzIHdpbGwgYmUgYWxsb3dlZC4gVGhlCisJICogY29kZSBzaG91bGRuJ3QgYWxsb3cgc3VjaCBzaXR1YXRpb24gdG8gb2NjdXIuIFNvIHdlIHRyZWF0IHRoaXMgY2FzZQorCSAqIGFzIGFuIGludGVybmFsIGVycm9yLiAqLworCisJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fUFJPR1JBTU1FUiwKKwkgICAgIkVycm9yOiBwcmVtYXR1cmUgZW5kIG9mIGRhdGFfcmVhZHkgc3RhY2siKTsKKwlyZXR1cm4gQVJDSElWRV9GQVRBTDsKK30KKworLyogVGhpcyBmdW5jdGlvbiB1bmNvbXByZXNzZXMgdGhlIGRhdGEgdGhhdCBpcyBzdG9yZWQgaW4gdGhlIDxGSUxFPiBiYXNlCisgKiBibG9jay4KKyAqCisgKiBUaGUgRklMRSBiYXNlIGJsb2NrIGxvb2tzIGxpa2UgdGhpczoKKyAqCisgKiA8aGVhZGVyPjxodWZmbWFuIHRhYmxlcz48YmxvY2tfMT48YmxvY2tfMj4uLi48YmxvY2tfbj4KKyAqCisgKiBUaGUgPGhlYWRlcj4gaXMgYSBibG9jayBoZWFkZXIsIHRoYXQgaXMgcGFyc2VkIGluIHBhcnNlX2Jsb2NrX2hlYWRlcigpLgorICogSXQncyBhICJjb21wcmVzc2VkX2Jsb2NrX2hlYWRlciIgc3RydWN0dXJlLCBjb250YWluaW5nIG1ldGFkYXRhIG5lZWRlZAorICogdG8ga25vdyB3aGVuIHdlIHNob3VsZCBzdG9wIGxvb2tpbmcgZm9yIG1vcmUgPGJsb2NrX24+IGJsb2Nrcy4KKyAqCisgKiA8aHVmZm1hbiB0YWJsZXM+IGNvbnRhaW4gZGF0YSBuZWVkZWQgdG8gc2V0IHVwIHRoZSBodWZmbWFuIHRhYmxlcywgbmVlZGVkCisgKiBmb3IgdGhlIGFjdHVhbCBkZWNvbXByZXNzaW9uLgorICoKKyAqIEVhY2ggPGJsb2NrX24+IGNvbnNpc3RzIG9mIHNlcmllcyBvZiBsaXRlcmFsczoKKyAqCisgKiA8bGl0ZXJhbD48bGl0ZXJhbD48bGl0ZXJhbD4uLi48bGl0ZXJhbD4KKyAqCisgKiBUaG9zZSBsaXRlcmFscyBnZW5lcmF0ZSB0aGUgdW5jb21wcmVzc2lvbiBkYXRhLiBUaGV5IG9wZXJhdGUgb24gYSBjaXJjdWxhcgorICogYnVmZmVyLCBzb21ldGltZXMgd3JpdGluZyByYXcgZGF0YSBpbnRvIGl0LCBzb21ldGltZXMgcmVmZXJlbmNpbmcKKyAqIHNvbWUgcHJldmlvdXMgZGF0YSBpbnNpZGUgdGhpcyBidWZmZXIsIGFuZCBzb21ldGltZXMgZGVjbGFyaW5nIGEgZmlsdGVyCisgKiB0aGF0IHdpbGwgbmVlZCB0byBiZSBleGVjdXRlZCBvbiB0aGUgZGF0YSBzdG9yZWQgaW4gdGhlIGNpcmN1bGFyIGJ1ZmZlci4KKyAqIEl0IGFsbCBkZXBlbmRzIG9uIHRoZSBsaXRlcmFsIHRoYXQgaXMgdXNlZC4KKyAqCisgKiBTb21ldGltZXMgYmxvY2tzIHByb2R1Y2Ugb3V0cHV0IGRhdGEsIHNvbWV0aW1lcyB0aGV5IGRvbid0LiBGb3IgZXhhbXBsZSwgZm9yCisgKiBzb21lIGh1Z2UgZmlsZXMgdGhhdCB1c2UgbG90cyBvZiBmaWx0ZXJzLCBzb21ldGltZXMgYSBibG9jayBpcyBmaWxsZWQgd2l0aAorICogb25seSBmaWx0ZXIgZGVjbGFyYXRpb24gbGl0ZXJhbHMuIFN1Y2ggYmxvY2tzIHdvbid0IHByb2R1Y2UgYW55IGRhdGEgaW4gdGhlCisgKiBjaXJjdWxhciBidWZmZXIuCisgKgorICogU29tZXRpbWVzIGJsb2NrcyB3aWxsIHByb2R1Y2UgNCBieXRlcyBvZiBkYXRhLCBhbmQgc29tZXRpbWVzIDEgbWVnYWJ5dGUsCisgKiBiZWNhdXNlIGEgbGl0ZXJhbCBjYW4gcmVmZXJlbmNlIHByZXZpb3VzbHkgZGVjb21wcmVzc2VkIGRhdGEuIEZvciBleGFtcGxlLAorICogdGhlcmUgY2FuIGJlIGEgbGl0ZXJhbCB0aGF0IHNheXM6ICdhcHBlbmQgYSBieXRlIDB4RkUgaGVyZScsIGFuZCBhZnRlcgorICogaXQgYW5vdGhlciBsaXRlcmFsIGNhbiBzYXkgJ2FwcGVuZCAxIG1lZ2FieXRlIG9mIGRhdGEgZnJvbSBjaXJjdWxhciBidWZmZXIKKyAqIG9mZnNldCAweDEyMzQ1Jy4gVGhpcyBpcyBob3cgUkFSIGZvcm1hdCBoYW5kbGVzIGNvbXByZXNzaW5nIHJlcGVhdGVkCisgKiBwYXR0ZXJucy4KKyAqCisgKiBUaGUgUkFSIGNvbXByZXNzb3IgY3JlYXRlcyB0aG9zZSBsaXRlcmFscyBhbmQgdGhlIGFjdHVhbCBlZmZpY2llbmN5IG9mCisgKiBjb21wcmVzc2lvbiBkZXBlbmRzIG9uIHdoYXQgdGhvc2UgbGl0ZXJhbHMgYXJlLiBUaGUgbGl0ZXJhbHMgY2FuIGFsc28KKyAqIGJlIHNlZW4gYXMgYSBraW5kIG9mIGEgbm9uLXR1cmluZy1jb21wbGV0ZSB2aXJ0dWFsIG1hY2hpbmUgdGhhdCBzaW1wbHkKKyAqIHRlbGxzIHRoZSBkZWNvbXByZXNzb3Igd2hhdCBpdCBzaG91bGQgZG8uCisgKiAqLworCitzdGF0aWMgaW50IGRvX3VuY29tcHJlc3NfZmlsZShzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhKSB7CisJc3RydWN0IHJhcjUqIHJhciA9IGdldF9jb250ZXh0KGEpOworCWludCByZXQ7CisJaW50NjRfdCBtYXhfZW5kX3BvczsKKworCWlmKCFyYXItPmNzdGF0ZS5pbml0aWFsaXplZCkgeworCQkvKiBEb24ndCBwZXJmb3JtIGZ1bGwgY29udGV4dCByZWluaXRpYWxpemF0aW9uIGlmIHdlJ3JlCisJCSAqIHByb2Nlc3NpbmcgYSBzb2xpZCBhcmNoaXZlLiAqLworCQlpZighcmFyLT5tYWluLnNvbGlkIHx8ICFyYXItPmNzdGF0ZS53aW5kb3dfYnVmKSB7CisJCQlpbml0X3VucGFjayhyYXIpOworCQl9CisKKwkJcmFyLT5jc3RhdGUuaW5pdGlhbGl6ZWQgPSAxOworCX0KKworCWlmKHJhci0+Y3N0YXRlLmFsbF9maWx0ZXJzX2FwcGxpZWQgPT0gMSkgeworCQkvKiBXZSB1c2Ugd2hpbGUoMSkgaGVyZSwgYnV0IHN0YW5kYXJkIGNhc2UgYWxsb3dzIGZvciBqdXN0IDEKKwkJICogaXRlcmF0aW9uLiBUaGUgbG9vcCB3aWxsIGl0ZXJhdGUgaWYgcHJvY2Vzc19ibG9jaygpIGRpZG4ndAorCQkgKiBnZW5lcmF0ZSBhbnkgZGF0YSBhdCBhbGwuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgYmxvY2sKKwkJICogY29udGFpbnMgb25seSBmaWx0ZXIgZGVmaW5pdGlvbnMgKHRoaXMgaXMgY29tbW9uIGluIGJpZworCQkgKiBmaWxlcykuICovCisJCXdoaWxlKDEpIHsKKwkJCXJldCA9IHByb2Nlc3NfYmxvY2soYSk7CisJCQlpZihyZXQgPT0gQVJDSElWRV9FT0YgfHwgcmV0ID09IEFSQ0hJVkVfRkFUQUwpCisJCQkJcmV0dXJuIHJldDsKKworCQkJaWYocmFyLT5jc3RhdGUubGFzdF93cml0ZV9wdHIgPT0KKwkJCSAgICByYXItPmNzdGF0ZS53cml0ZV9wdHIpIHsKKwkJCQkvKiBUaGUgYmxvY2sgZGlkbid0IGdlbmVyYXRlIGFueSBuZXcgZGF0YSwKKwkJCQkgKiBzbyBqdXN0IHByb2Nlc3MgYSBuZXcgYmxvY2suICovCisJCQkJY29udGludWU7CisJCQl9CisKKwkJCS8qIFRoZSBibG9jayBoYXMgZ2VuZXJhdGVkIHNvbWUgbmV3IGRhdGEsIHNvIGJyZWFrCisJCQkgKiB0aGUgbG9vcC4gKi8KKwkJCWJyZWFrOworCQl9CisJfQorCisJLyogVHJ5IHRvIHJ1biBmaWx0ZXJzLiBJZiBmaWx0ZXJzIHdvbid0IGJlIGFwcGxpZWQsIGl0IG1lYW5zIHRoYXQKKwkgKiBpbnN1ZmZpY2llbnQgZGF0YSB3YXMgZ2VuZXJhdGVkLiAqLworCXJldCA9IGFwcGx5X2ZpbHRlcnMoYSk7CisJaWYocmV0ID09IEFSQ0hJVkVfUkVUUlkpIHsKKwkJcmV0dXJuIEFSQ0hJVkVfT0s7CisJfSBlbHNlIGlmKHJldCA9PSBBUkNISVZFX0ZBVEFMKSB7CisJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCX0KKworCS8qIElmIGFwcGx5X2ZpbHRlcnMoKSB3aWxsIHJldHVybiBBUkNISVZFX09LLCB3ZSBjYW4gY29udGludWUgaGVyZS4gKi8KKworCWlmKGNkZXF1ZV9zaXplKCZyYXItPmNzdGF0ZS5maWx0ZXJzKSA+IDApIHsKKwkJLyogQ2hlY2sgaWYgd2UgY2FuIHdyaXRlIHNvbWV0aGluZyBiZWZvcmUgaGl0dGluZyBmaXJzdAorCQkgKiBmaWx0ZXIuICovCisJCXN0cnVjdCBmaWx0ZXJfaW5mbyogZmx0OworCisJCS8qIEdldCB0aGUgYmxvY2tfc3RhcnQgb2Zmc2V0IGZyb20gdGhlIGZpcnN0IGZpbHRlci4gKi8KKwkJaWYoQ0RFX09LICE9IGNkZXF1ZV9mcm9udCgmcmFyLT5jc3RhdGUuZmlsdGVycywKKwkJICAgIGNkZXF1ZV9maWx0ZXJfcCgmZmx0KSkpCisJCXsKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJICAgIEFSQ0hJVkVfRVJSTk9fUFJPR1JBTU1FUiwKKwkJCSAgICAiQ2FuJ3QgcmVhZCBmaXJzdCBmaWx0ZXIiKTsKKwkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCQl9CisKKwkJbWF4X2VuZF9wb3MgPSByYXI1X21pbihmbHQtPmJsb2NrX3N0YXJ0LAorCQkgICAgcmFyLT5jc3RhdGUud3JpdGVfcHRyKTsKKwl9IGVsc2UgeworCQkvKiBUaGVyZSBhcmUgbm8gZmlsdGVycyBkZWZpbmVkLCBvciBhbGwgZmlsdGVycyB3ZXJlIGFwcGxpZWQuCisJCSAqIFRoaXMgbWVhbnMgd2UgY2FuIGp1c3Qgc3RvcmUgdGhlIGRhdGEgd2l0aG91dCBhbnkKKwkJICogcG9zdHByb2Nlc3NpbmcuICovCisJCW1heF9lbmRfcG9zID0gcmFyLT5jc3RhdGUud3JpdGVfcHRyOworCX0KKworCWlmKG1heF9lbmRfcG9zID09IHJhci0+Y3N0YXRlLmxhc3Rfd3JpdGVfcHRyKSB7CisJCS8qIFdlIGNhbid0IHdyaXRlIGFueXRoaW5nIHlldC4gVGhlIGJsb2NrIHVuY29tcHJlc3Npb24KKwkJICogZnVuY3Rpb24gZGlkIG5vdCBnZW5lcmF0ZSBlbm91Z2ggZGF0YSwgYW5kIG5vIGZpbHRlciBjYW4gYmUKKwkJICogYXBwbGllZC4gQXQgdGhlIHNhbWUgdGltZSB3ZSBkb24ndCBoYXZlIGFueSBkYXRhIHRoYXQgY2FuIGJlCisJCSAqICBzdG9yZWQgd2l0aG91dCBmaWx0ZXIgcG9zdHByb2Nlc3NpbmcuIFRoaXMgbWVhbnMgd2UgbmVlZCB0bworCQkgKiAgd2FpdCBmb3IgbW9yZSBkYXRhIHRvIGJlIGdlbmVyYXRlZCwgc28gd2UgY2FuIGFwcGx5IHRoZQorCQkgKiBmaWx0ZXJzLgorCQkgKgorCQkgKiBTaWduYWwgdGhlIGNhbGxlciB0aGF0IHdlIG5lZWQgbW9yZSBkYXRhIHRvIGJlIGFibGUgdG8gZG8KKwkJICogYW55dGhpbmcuCisJCSAqLworCQlyZXR1cm4gQVJDSElWRV9SRVRSWTsKKwl9IGVsc2UgeworCQkvKiBXZSBjYW4gd3JpdGUgdGhlIGRhdGEgYmVmb3JlIGhpdHRpbmcgdGhlIGZpcnN0IGZpbHRlci4KKwkJICogU28gbGV0J3MgZG8gaXQuIFRoZSBwdXNoX3dpbmRvd19kYXRhKCkgZnVuY3Rpb24gd2lsbAorCQkgKiBlZmZlY3RpdmVseSByZXR1cm4gdGhlIHNlbGVjdGVkIGRhdGEgYmxvY2sgdG8gdGhlIHVzZXIKKwkJICogYXBwbGljYXRpb24uICovCisJCXB1c2hfd2luZG93X2RhdGEoYSwgcmFyLCByYXItPmNzdGF0ZS5sYXN0X3dyaXRlX3B0ciwKKwkJICAgIG1heF9lbmRfcG9zKTsKKwkJcmFyLT5jc3RhdGUubGFzdF93cml0ZV9wdHIgPSBtYXhfZW5kX3BvczsKKwl9CisKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworc3RhdGljIGludCB1bmNvbXByZXNzX2ZpbGUoc3RydWN0IGFyY2hpdmVfcmVhZCogYSkgeworCWludCByZXQ7CisKKwl3aGlsZSgxKSB7CisJCS8qIFNvbWV0aW1lcyB0aGUgdW5jb21wcmVzc2lvbiBmdW5jdGlvbiB3aWxsIHJldHVybiBhCisJCSAqICdyZXRyeScgc2lnbmFsLiBJZiB0aGlzIHdpbGwgaGFwcGVuLCB3ZSBoYXZlIHRvIHJldHJ5CisJCSAqIHRoZSBmdW5jdGlvbi4gKi8KKwkJcmV0ID0gZG9fdW5jb21wcmVzc19maWxlKGEpOworCQlpZihyZXQgIT0gQVJDSElWRV9SRVRSWSkKKwkJCXJldHVybiByZXQ7CisJfQorfQorCisKK3N0YXRpYyBpbnQgZG9fdW5zdG9yZV9maWxlKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEsCisgICAgc3RydWN0IHJhcjUqIHJhciwgY29uc3Qgdm9pZCoqIGJ1Ziwgc2l6ZV90KiBzaXplLCBpbnQ2NF90KiBvZmZzZXQpCit7CisJc2l6ZV90IHRvX3JlYWQ7CisJY29uc3QgdWludDhfdCogcDsKKworCWlmKHJhci0+ZmlsZS5ieXRlc19yZW1haW5pbmcgPT0gMCAmJiByYXItPm1haW4udm9sdW1lID4gMCAmJgorCSAgICByYXItPmdlbmVyaWMuc3BsaXRfYWZ0ZXIgPiAwKQorCXsKKwkJaW50IHJldDsKKworCQlyYXItPmNzdGF0ZS5zd2l0Y2hfbXVsdGl2b2x1bWUgPSAxOworCQlyZXQgPSBhZHZhbmNlX211bHRpdm9sdW1lKGEpOworCQlyYXItPmNzdGF0ZS5zd2l0Y2hfbXVsdGl2b2x1bWUgPSAwOworCisJCWlmKHJldCAhPSBBUkNISVZFX09LKSB7CisJCQkvKiBGYWlsZWQgdG8gYWR2YW5jZSB0byBuZXh0IG11bHRpdm9sdW1lIGFyY2hpdmUKKwkJCSAqIGZpbGUuICovCisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCisJdG9fcmVhZCA9IHJhcjVfbWluKHJhci0+ZmlsZS5ieXRlc19yZW1haW5pbmcsIDY0ICogMTAyNCk7CisJaWYodG9fcmVhZCA9PSAwKSB7CisJCXJldHVybiBBUkNISVZFX0VPRjsKKwl9CisKKwlpZighcmVhZF9haGVhZChhLCB0b19yZWFkLCAmcCkpIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCSAgICAiSS9PIGVycm9yIHdoZW4gdW5zdG9yaW5nIGZpbGUiKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJfQorCisJaWYoQVJDSElWRV9PSyAhPSBjb25zdW1lKGEsIHRvX3JlYWQpKSB7CisJCXJldHVybiBBUkNISVZFX0VPRjsKKwl9CisKKwlpZihidWYpICAgICpidWYgPSBwOworCWlmKHNpemUpICAgKnNpemUgPSB0b19yZWFkOworCWlmKG9mZnNldCkgKm9mZnNldCA9IHJhci0+Y3N0YXRlLmxhc3RfdW5zdG9yZV9wdHI7CisKKwlyYXItPmZpbGUuYnl0ZXNfcmVtYWluaW5nIC09IHRvX3JlYWQ7CisJcmFyLT5jc3RhdGUubGFzdF91bnN0b3JlX3B0ciArPSB0b19yZWFkOworCisJdXBkYXRlX2NyYyhyYXIsIHAsIHRvX3JlYWQpOworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgaW50IGRvX3VucGFjayhzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhLCBzdHJ1Y3QgcmFyNSogcmFyLAorICAgIGNvbnN0IHZvaWQqKiBidWYsIHNpemVfdCogc2l6ZSwgaW50NjRfdCogb2Zmc2V0KQoreworCWVudW0gQ09NUFJFU1NJT05fTUVUSE9EIHsKKwkJU1RPUkUgPSAwLCBGQVNURVNUID0gMSwgRkFTVCA9IDIsIE5PUk1BTCA9IDMsIEdPT0QgPSA0LAorCQlCRVNUID0gNQorCX07CisKKwlpZihyYXItPmZpbGUuc2VydmljZSA+IDApIHsKKwkJcmV0dXJuIGRvX3Vuc3RvcmVfZmlsZShhLCByYXIsIGJ1Ziwgc2l6ZSwgb2Zmc2V0KTsKKwl9IGVsc2UgeworCQlzd2l0Y2gocmFyLT5jc3RhdGUubWV0aG9kKSB7CisJCQljYXNlIFNUT1JFOgorCQkJCXJldHVybiBkb191bnN0b3JlX2ZpbGUoYSwgcmFyLCBidWYsIHNpemUsCisJCQkJICAgIG9mZnNldCk7CisJCQljYXNlIEZBU1RFU1Q6CisJCQkJLyogZmFsbHRocm91Z2ggKi8KKwkJCWNhc2UgRkFTVDoKKwkJCQkvKiBmYWxsdGhyb3VnaCAqLworCQkJY2FzZSBOT1JNQUw6CisJCQkJLyogZmFsbHRocm91Z2ggKi8KKwkJCWNhc2UgR09PRDoKKwkJCQkvKiBmYWxsdGhyb3VnaCAqLworCQkJY2FzZSBCRVNUOgorCQkJCXJldHVybiB1bmNvbXByZXNzX2ZpbGUoYSk7CisJCQlkZWZhdWx0OgorCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkJCSAgICAiQ29tcHJlc3Npb24gbWV0aG9kIG5vdCBzdXBwb3J0ZWQ6IDB4JXgiLAorCQkJCSAgICByYXItPmNzdGF0ZS5tZXRob2QpOworCisJCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJCX0KKwl9CisKKyNpZiAhZGVmaW5lZCBXSU4zMgorCS8qIE5vdCByZWFjaGVkLiAqLworCXJldHVybiBBUkNISVZFX09LOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQgdmVyaWZ5X2NoZWNrc3VtcyhzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhKSB7CisJaW50IHZlcmlmeV9jcmM7CisJc3RydWN0IHJhcjUqIHJhciA9IGdldF9jb250ZXh0KGEpOworCisJLyogQ2hlY2sgY2hlY2tzdW1zIG9ubHkgd2hlbiBhY3R1YWxseSB1bnBhY2tpbmcgdGhlIGRhdGEuIFRoZXJlJ3Mgbm8KKwkgKiBuZWVkIHRvIGNhbGN1bGF0ZSBjaGVja3N1bSB3aGVuIHdlJ3JlIHNraXBwaW5nIGRhdGEgaW4gc29saWQgYXJjaGl2ZXMKKwkgKiAoc2tpcHBpbmcgaW4gc29saWQgYXJjaGl2ZXMgaXMgdGhlIHNhbWUgdGhpbmcgYXMgdW5wYWNraW5nIGNvbXByZXNzZWQKKwkgKiBkYXRhIGFuZCBkaXNjYXJkaW5nIHRoZSByZXN1bHQpLiAqLworCisJaWYoIXJhci0+c2tpcF9tb2RlKSB7CisJCS8qIEFsd2F5cyBjaGVjayBjaGVja3N1bXMgaWYgd2UncmUgbm90IGluIHNraXAgbW9kZSAqLworCQl2ZXJpZnlfY3JjID0gMTsKKwl9IGVsc2UgeworCQkvKiBXZSBjYW4gb3ZlcnJpZGUgdGhlIGxvZ2ljIGFib3ZlIHdpdGggYSBjb21waWxlLXRpbWUgb3B0aW9uCisJCSAqIE5PX0NSQ19PTl9TT0xJRF9TS0lQLiBUaGlzIG9wdGlvbiBpcyB1c2VkIGR1cmluZyBkZWJ1Z2dpbmcsCisJCSAqIGFuZCBpdCB3aWxsIGNoZWNrIGNoZWNrc3VtcyBvZiB1bnBhY2tlZCBkYXRhIGV2ZW4gd2hlbgorCQkgKiB3ZSdyZSBza2lwcGluZyBpdC4gKi8KKworI2lmIGRlZmluZWQgQ0hFQ0tfQ1JDX09OX1NPTElEX1NLSVAKKwkJLyogRGVidWcgY2FzZSAqLworCQl2ZXJpZnlfY3JjID0gMTsKKyNlbHNlCisJCS8qIE5vcm1hbCBjYXNlICovCisJCXZlcmlmeV9jcmMgPSAwOworI2VuZGlmCisJfQorCisJaWYodmVyaWZ5X2NyYykgeworCQkvKiBEdXJpbmcgdW5wYWNraW5nLCBvbiBlYWNoIHVucGFja2VkIGJsb2NrIHdlJ3JlIGNhbGxpbmcgdGhlCisJCSAqIHVwZGF0ZV9jcmMoKSBmdW5jdGlvbi4gU2luY2Ugd2UgYXJlIGhlcmUsIHRoZSB1bnBhY2tpbmcKKwkJICogcHJvY2VzcyBpcyBhbHJlYWR5IG92ZXIgYW5kIHdlIGNhbiBjaGVjayBpZiBjYWxjdWxhdGVkCisJCSAqIGNoZWNrc3VtIChDUkMzMiBvciBCTEFLRTJzcCkgaXMgdGhlIHNhbWUgYXMgd2hhdCBpcyBzdG9yZWQKKwkJICogaW4gdGhlIGFyY2hpdmUuICovCisJCWlmKHJhci0+ZmlsZS5zdG9yZWRfY3JjMzIgPiAwKSB7CisJCQkvKiBDaGVjayBDUkMzMiBvbmx5IHdoZW4gdGhlIGZpbGUgY29udGFpbnMgYSBDUkMzMgorCQkJICogdmFsdWUgZm9yIHRoaXMgZmlsZS4gKi8KKworCQkJaWYocmFyLT5maWxlLmNhbGN1bGF0ZWRfY3JjMzIgIT0KKwkJCSAgICByYXItPmZpbGUuc3RvcmVkX2NyYzMyKSB7CisJCQkJLyogQ2hlY2tzdW1zIGRvIG5vdCBtYXRjaDsgdGhlIHVucGFja2VkIGZpbGUKKwkJCQkgKiBpcyBjb3JydXB0ZWQuICovCisKKwkJCQlERUJVR19DT0RFIHsKKwkJCQkJcHJpbnRmKCJDaGVja3N1bSBlcnJvcjogQ1JDMzIgIgorCQkJCQkgICAgIih3YXM6ICUwOHgsIGV4cGVjdGVkOiAlMDh4KVxuIiwKKwkJCQkJICAgIHJhci0+ZmlsZS5jYWxjdWxhdGVkX2NyYzMyLAorCQkJCQkgICAgcmFyLT5maWxlLnN0b3JlZF9jcmMzMik7CisJCQkJfQorCisjaWZuZGVmIERPTlRfRkFJTF9PTl9DUkNfRVJST1IKKwkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKKwkJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCQkgICAgIkNoZWNrc3VtIGVycm9yOiBDUkMzMiIpOworCQkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworI2VuZGlmCisJCQl9IGVsc2UgeworCQkJCURFQlVHX0NPREUgeworCQkJCQlwcmludGYoIkNoZWNrc3VtIE9LOiBDUkMzMiAiCisJCQkJCSAgICAiKCUwOHgvJTA4eClcbiIsCisJCQkJCSAgICByYXItPmZpbGUuc3RvcmVkX2NyYzMyLAorCQkJCQkgICAgcmFyLT5maWxlLmNhbGN1bGF0ZWRfY3JjMzIpOworCQkJCX0KKwkJCX0KKwkJfQorCisJCWlmKHJhci0+ZmlsZS5oYXNfYmxha2UyID4gMCkgeworCQkJLyogQkxBS0Uyc3AgaXMgYW4gb3B0aW9uYWwgY2hlY2tzdW0gYWxnb3JpdGhtIHRoYXQgaXMKKwkJCSAqIGFkZGVkIHRvIFJBUnY1IGFyY2hpdmVzIHdoZW4gdXNpbmcgdGhlIGAtaHRiYCBzd2l0Y2gKKwkJCSAqICBkdXJpbmcgY3JlYXRpb24gb2YgYXJjaGl2ZS4KKwkJCSAqCisJCQkgKiBXZSBub3cgZmluYWxpemUgdGhlIGhhc2ggY2FsY3VsYXRpb24gYnkgY2FsbGluZyB0aGUKKwkJCSAqIGBmaW5hbGAgZnVuY3Rpb24uIFRoaXMgd2lsbCBnZW5lcmF0ZSB0aGUgZmluYWwgaGFzaAorCQkJICogdmFsdWUgd2UgY2FuIHVzZSB0byBjb21wYXJlIGl0IHdpdGggdGhlIEJMQUtFMnNwCisJCQkgKiBjaGVja3N1bSB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgYXJjaGl2ZS4KKwkJCSAqCisJCQkgKiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgYGZpbmFsYCBmdW5jdGlvbiBpcyBub3QKKwkJCSAqIHZlcnkgaGVscGZ1bCwgYXMgaXQgZ3VhcmRzIG9ubHkgYWdhaW5zdCBpbXByb3BlciB1c2UuCisgCQkJICogVGhpcyBpcyB3aHkgd2UncmUgZXhwbGljaXRseSBpZ25vcmluZyBpdC4gKi8KKworCQkJdWludDhfdCBiMl9idWZbMzJdOworCQkJKHZvaWQpIGJsYWtlMnNwX2ZpbmFsKCZyYXItPmZpbGUuYjJzdGF0ZSwgYjJfYnVmLCAzMik7CisKKwkJCWlmKG1lbWNtcCgmcmFyLT5maWxlLmJsYWtlMnNwLCBiMl9idWYsIDMyKSAhPSAwKSB7CisjaWZuZGVmIERPTlRfRkFJTF9PTl9DUkNfRVJST1IKKwkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKKwkJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCQkgICAgIkNoZWNrc3VtIGVycm9yOiBCTEFLRTIiKTsKKworCQkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworI2VuZGlmCisJCQl9CisJCX0KKwl9CisKKwkvKiBGaW5hbGl6YXRpb24gZm9yIHRoaXMgZmlsZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkLiAqLworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgaW50IHZlcmlmeV9nbG9iYWxfY2hlY2tzdW1zKHN0cnVjdCBhcmNoaXZlX3JlYWQqIGEpIHsKKwlyZXR1cm4gdmVyaWZ5X2NoZWNrc3VtcyhhKTsKK30KKworLyoKKyAqIERlY3J5cHRpb24gZnVuY3Rpb24gZm9yIHRoZSBtYWdpYyBzaWduYXR1cmUgcGF0dGVybi4gQ2hlY2sgdGhlIGNvbW1lbnQgbmVhcgorICogdGhlIGByYXI1X3NpZ25hdHVyZV94b3JgIHN5bWJvbCB0byByZWFkIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMuCisgKi8KK3N0YXRpYyB2b2lkIHJhcjVfc2lnbmF0dXJlKGNoYXIgKmJ1ZikgeworCQlzaXplX3QgaTsKKworCQlmb3IoaSA9IDA7IGkgPCBzaXplb2YocmFyNV9zaWduYXR1cmVfeG9yKTsgaSsrKSB7CisJCQlidWZbaV0gPSByYXI1X3NpZ25hdHVyZV94b3JbaV0gXiAweEExOworCQl9Cit9CisKK3N0YXRpYyBpbnQgcmFyNV9yZWFkX2RhdGEoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgY29uc3Qgdm9pZCAqKmJ1ZmYsCisgICAgc2l6ZV90ICpzaXplLCBpbnQ2NF90ICpvZmZzZXQpIHsKKwlpbnQgcmV0OworCXN0cnVjdCByYXI1KiByYXIgPSBnZXRfY29udGV4dChhKTsKKworCWlmKHJhci0+ZmlsZS5kaXIgPiAwKSB7CisJCS8qIERvbid0IHByb2Nlc3MgYW55IGRhdGEgaWYgdGhpcyBmaWxlIGVudHJ5IHdhcyBkZWNsYXJlZAorCQkgKiBhcyBhIGRpcmVjdG9yeS4gVGhpcyBpcyBuZWVkZWQsIGJlY2F1c2UgZW50cmllcyBtYXJrZWQgYXMKKwkJICogZGlyZWN0b3J5IGRvZXNuJ3QgaGF2ZSBhbnkgZGljdGlvbmFyeSBidWZmZXIgYWxsb2NhdGVkLCBzbworCQkgKiBpdCdzIGltcG9zc2libGUgdG8gcGVyZm9ybSBhbnkgZGVjb21wcmVzc2lvbi4gKi8KKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCSAgICAiQ2FuJ3QgZGVjb21wcmVzcyBhbiBlbnRyeSBtYXJrZWQgYXMgYSBkaXJlY3RvcnkiKTsKKwkJcmV0dXJuIEFSQ0hJVkVfRkFJTEVEOworCX0KKworCWlmKCFyYXItPnNraXBfbW9kZSAmJiAocmFyLT5jc3RhdGUubGFzdF93cml0ZV9wdHIgPiByYXItPmZpbGUudW5wYWNrZWRfc2l6ZSkpIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fUFJPR1JBTU1FUiwKKwkJICAgICJVbnBhY2tlciBoYXMgd3JpdHRlbiB0b28gbWFueSBieXRlcyIpOworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwlyZXQgPSB1c2VfZGF0YShyYXIsIGJ1ZmYsIHNpemUsIG9mZnNldCk7CisJaWYocmV0ID09IEFSQ0hJVkVfT0spIHsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlpZihyYXItPmZpbGUuZW9mID09IDEpIHsKKwkJcmV0dXJuIEFSQ0hJVkVfRU9GOworCX0KKworCXJldCA9IGRvX3VucGFjayhhLCByYXIsIGJ1ZmYsIHNpemUsIG9mZnNldCk7CisJaWYocmV0ICE9IEFSQ0hJVkVfT0spIHsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlpZihyYXItPmZpbGUuYnl0ZXNfcmVtYWluaW5nID09IDAgJiYKKwkJCXJhci0+Y3N0YXRlLmxhc3Rfd3JpdGVfcHRyID09IHJhci0+ZmlsZS51bnBhY2tlZF9zaXplKQorCXsKKwkJLyogSWYgYWxsIGJ5dGVzIG9mIGN1cnJlbnQgZmlsZSB3ZXJlIHByb2Nlc3NlZCwgcnVuCisJCSAqIGZpbmFsaXphdGlvbi4KKwkJICoKKwkJICogRmluYWxpemF0aW9uIHdpbGwgY2hlY2sgY2hlY2tzdW0gYWdhaW5zdCBwcm9wZXIgdmFsdWVzLiBJZgorCQkgKiBzb21lIG9mIHRoZSBjaGVja3N1bXMgd2lsbCBub3QgbWF0Y2gsIHdlJ2xsIHJldHVybiBhbiBlcnJvcgorCQkgKiB2YWx1ZSBpbiB0aGUgbGFzdCBgYXJjaGl2ZV9yZWFkX2RhdGFgIGNhbGwgdG8gc2lnbmFsIGFuIGVycm9yCisJCSAqIHRvIHRoZSB1c2VyLiAqLworCisJCXJhci0+ZmlsZS5lb2YgPSAxOworCQlyZXR1cm4gdmVyaWZ5X2dsb2JhbF9jaGVja3N1bXMoYSk7CisJfQorCisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKK3N0YXRpYyBpbnQgcmFyNV9yZWFkX2RhdGFfc2tpcChzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphKSB7CisJc3RydWN0IHJhcjUqIHJhciA9IGdldF9jb250ZXh0KGEpOworCisJaWYocmFyLT5tYWluLnNvbGlkKSB7CisJCS8qIEluIHNvbGlkIGFyY2hpdmVzLCBpbnN0ZWFkIG9mIHNraXBwaW5nIHRoZSBkYXRhLCB3ZSBuZWVkIHRvCisJCSAqIGV4dHJhY3QgaXQsIGFuZCBkaXNwb3NlIHRoZSByZXN1bHQuIFRoZSBzaWRlIGVmZmVjdCBvZiB0aGlzCisJCSAqIG9wZXJhdGlvbiB3aWxsIGJlIHNldHRpbmcgdXAgdGhlIGluaXRpYWwgd2luZG93IGJ1ZmZlciBzdGF0ZQorCQkgKiBuZWVkZWQgdG8gYmUgYWJsZSB0byBleHRyYWN0IHRoZSBzZWxlY3RlZCBmaWxlLiAqLworCisJCWludCByZXQ7CisKKwkJLyogTWFrZSBzdXJlIHRvIHByb2Nlc3MgYWxsIGJsb2NrcyBpbiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uICovCisJCXdoaWxlKHJhci0+ZmlsZS5ieXRlc19yZW1haW5pbmcgPiAwKSB7CisJCQkvKiBTZXR0aW5nIHRoZSAic2tpcCBtb2RlIiB3aWxsIGFsbG93IHVzIHRvIHNraXAKKwkJCSAqIGNoZWNrc3VtIGNoZWNrcyBkdXJpbmcgZGF0YSBza2lwcGluZy4gQ2hlY2tpbmcgdGhlCisJCQkgKiBjaGVja3N1bSBvZiBza2lwcGVkIGRhdGEgaXNuJ3QgcmVhbGx5IG5lY2Vzc2FyeSBhbmQKKwkJCSAqIGl0J3Mgb25seSBzbG93aW5nIHRoaW5ncyBkb3duLgorCQkJICoKKwkJCSAqIFRoaXMgaXMgaW5jcmVtZW50ZWQgaW5zdGVhZCBvZiBzZXR0aW5nIHRvIDEgYmVjYXVzZQorCQkJICogdGhpcyBkYXRhIHNraXBwaW5nIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQKKwkJCSAqIHJlY3Vyc2l2ZWx5LiAqLworCQkJcmFyLT5za2lwX21vZGUrKzsKKworCQkJLyogV2UncmUgZGlzcG9zaW5nIDEgYmxvY2sgb2YgZGF0YSwgc28gd2UgdXNlIHRyaXBsZQorCQkJICogTlVMTHMgaW4gYXJndW1lbnRzLiAqLworCQkJcmV0ID0gcmFyNV9yZWFkX2RhdGEoYSwgTlVMTCwgTlVMTCwgTlVMTCk7CisKKwkJCS8qIFR1cm4gb2ZmICJza2lwIG1vZGUiLiAqLworCQkJcmFyLT5za2lwX21vZGUtLTsKKworCQkJaWYocmV0IDwgMCB8fCByZXQgPT0gQVJDSElWRV9FT0YpIHsKKwkJCQkvKiBQcm9wYWdhdGUgYW55IHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zCisJCQkJICogdG8gdGhlIGNhbGxlci4gKi8KKwkJCQlyZXR1cm4gcmV0OworCQkJfQorCQl9CisJfSBlbHNlIHsKKwkJLyogSW4gc3RhbmRhcmQgYXJjaGl2ZXMsIHdlIGNhbiBqdXN0IGp1bXAgb3ZlciB0aGUgY29tcHJlc3NlZAorCQkgKiBzdHJlYW0uIEVhY2ggZmlsZSBpbiBub24tc29saWQgYXJjaGl2ZXMgc3RhcnRzIGZyb20gYW4gZW1wdHkKKwkJICogd2luZG93IGJ1ZmZlci4gKi8KKworCQlpZihBUkNISVZFX09LICE9IGNvbnN1bWUoYSwgcmFyLT5maWxlLmJ5dGVzX3JlbWFpbmluZykpIHsKKwkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCQl9CisKKwkJcmFyLT5maWxlLmJ5dGVzX3JlbWFpbmluZyA9IDA7CisJfQorCisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKK3N0YXRpYyBpbnQ2NF90IHJhcjVfc2Vla19kYXRhKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIGludDY0X3Qgb2Zmc2V0LAorICAgIGludCB3aGVuY2UpCit7CisJKHZvaWQpIGE7CisJKHZvaWQpIG9mZnNldDsKKwkodm9pZCkgd2hlbmNlOworCisJLyogV2UncmUgYSBzdHJlYW1pbmcgdW5wYWNrZXIsIGFuZCB3ZSBkb24ndCBzdXBwb3J0IHNlZWtpbmcuICovCisKKwlyZXR1cm4gQVJDSElWRV9GQVRBTDsKK30KKworc3RhdGljIGludCByYXI1X2NsZWFudXAoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSkgeworCXN0cnVjdCByYXI1KiByYXIgPSBnZXRfY29udGV4dChhKTsKKworCWZyZWUocmFyLT5jc3RhdGUud2luZG93X2J1Zik7CisJZnJlZShyYXItPmNzdGF0ZS5maWx0ZXJlZF9idWYpOworCisJZnJlZShyYXItPnZvbC5wdXNoX2J1Zik7CisKKwlmcmVlX2ZpbHRlcnMocmFyKTsKKwljZGVxdWVfZnJlZSgmcmFyLT5jc3RhdGUuZmlsdGVycyk7CisKKwlmcmVlKHJhcik7CisJYS0+Zm9ybWF0LT5kYXRhID0gTlVMTDsKKworCXJldHVybiBBUkNISVZFX09LOworfQorCitzdGF0aWMgaW50IHJhcjVfY2FwYWJpbGl0aWVzKHN0cnVjdCBhcmNoaXZlX3JlYWQgKiBhKSB7CisJKHZvaWQpIGE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmFyNV9oYXNfZW5jcnlwdGVkX2VudHJpZXMoc3RydWN0IGFyY2hpdmVfcmVhZCAqX2EpIHsKKwkodm9pZCkgX2E7CisKKwkvKiBVbnN1cHBvcnRlZCBmb3Igbm93LiAqLworCXJldHVybiBBUkNISVZFX1JFQURfRk9STUFUX0VOQ1JZUFRJT05fVU5TVVBQT1JURUQ7Cit9CisKK3N0YXRpYyBpbnQgcmFyNV9pbml0KHN0cnVjdCByYXI1KiByYXIpIHsKKwltZW1zZXQocmFyLCAwLCBzaXplb2Yoc3RydWN0IHJhcjUpKTsKKworCWlmKENERV9PSyAhPSBjZGVxdWVfaW5pdCgmcmFyLT5jc3RhdGUuZmlsdGVycywgODE5MikpCisJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCisJcmV0dXJuIEFSQ0hJVkVfT0s7Cit9CisKK2ludCBhcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyNShzdHJ1Y3QgYXJjaGl2ZSAqX2EpIHsKKwlzdHJ1Y3QgYXJjaGl2ZV9yZWFkKiBhcjsKKwlpbnQgcmV0OworCXN0cnVjdCByYXI1KiByYXI7CisKKwlpZihBUkNISVZFX09LICE9IChyZXQgPSBnZXRfYXJjaGl2ZV9yZWFkKF9hLCAmYXIpKSkKKwkJcmV0dXJuIHJldDsKKworCXJhciA9IG1hbGxvYyhzaXplb2YoKnJhcikpOworCWlmKHJhciA9PSBOVUxMKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhci0+YXJjaGl2ZSwgRU5PTUVNLAorCQkgICAgIkNhbid0IGFsbG9jYXRlIHJhcjUgZGF0YSIpOworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwlpZihBUkNISVZFX09LICE9IHJhcjVfaW5pdChyYXIpKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhci0+YXJjaGl2ZSwgRU5PTUVNLAorCQkgICAgIkNhbid0IGFsbG9jYXRlIHJhcjUgZmlsdGVyIGJ1ZmZlciIpOworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwlyZXQgPSBfX2FyY2hpdmVfcmVhZF9yZWdpc3Rlcl9mb3JtYXQoYXIsCisJICAgIHJhciwKKwkgICAgInJhcjUiLAorCSAgICByYXI1X2JpZCwKKwkgICAgcmFyNV9vcHRpb25zLAorCSAgICByYXI1X3JlYWRfaGVhZGVyLAorCSAgICByYXI1X3JlYWRfZGF0YSwKKwkgICAgcmFyNV9yZWFkX2RhdGFfc2tpcCwKKwkgICAgcmFyNV9zZWVrX2RhdGEsCisJICAgIHJhcjVfY2xlYW51cCwKKwkgICAgcmFyNV9jYXBhYmlsaXRpZXMsCisJICAgIHJhcjVfaGFzX2VuY3J5cHRlZF9lbnRyaWVzKTsKKworCWlmKHJldCAhPSBBUkNISVZFX09LKSB7CisJCSh2b2lkKSByYXI1X2NsZWFudXAoYXIpOworCX0KKworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhdy5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXcuYwppbmRleCBlZmEyYzZhLi5lYzA1MjBiIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhdy5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmF3LmMKQEAgLTEyMCw3ICsxMjAsOSBAQAogCWFyY2hpdmVfZW50cnlfc2V0X2ZpbGV0eXBlKGVudHJ5LCBBRV9JRlJFRyk7CiAJYXJjaGl2ZV9lbnRyeV9zZXRfcGVybShlbnRyeSwgMDY0NCk7CiAJLyogSSdtIGRlbGliZXJhdGVseSBsZWF2aW5nIG1vc3QgZmllbGRzIHVuc2V0IGhlcmUuICovCi0JcmV0dXJuIChBUkNISVZFX09LKTsKKworCS8qIExldCB0aGUgZmlsdGVyIGZpbGwgb3V0IGFueSBmaWVsZHMgaXQgbWlnaHQgaGF2ZS4gKi8KKwlyZXR1cm4gX19hcmNoaXZlX3JlYWRfaGVhZGVyKGEsIGVudHJ5KTsKIH0KIAogc3RhdGljIGludApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF90YXIuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfdGFyLmMKaW5kZXggNjA4MDBiYi4uYzYzZDQ2ZiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF90YXIuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Rhci5jCkBAIC02OTQsMTEgKzY5NCwxMyBAQAogICAgIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSwgc2l6ZV90ICp1bmNvbnN1bWVkKQogewogCXNzaXplX3QgYnl0ZXM7Ci0JaW50IGVycjsKKwlpbnQgZXJyLCBlb2Zfdm9sX2hlYWRlcjsKIAljb25zdCBjaGFyICpoOwogCWNvbnN0IHN0cnVjdCBhcmNoaXZlX2VudHJ5X2hlYWRlcl91c3RhciAqaGVhZGVyOwogCWNvbnN0IHN0cnVjdCBhcmNoaXZlX2VudHJ5X2hlYWRlcl9nbnV0YXIgKmdudWhlYWRlcjsKIAorCWVvZl92b2xfaGVhZGVyID0gMDsKKwogCS8qIExvb3AgdW50aWwgd2UgZmluZCBhIHdvcmthYmxlIGhlYWRlciByZWNvcmQuICovCiAJZm9yICg7OykgewogCQl0YXJfZmx1c2hfdW5jb25zdW1lZChhLCB1bmNvbnN1bWVkKTsKQEAgLTc4OCw2ICs3OTAsOCBAQAogCQlicmVhazsKIAljYXNlICdWJzogLyogR05VIHZvbHVtZSBoZWFkZXIgKi8KIAkJZXJyID0gaGVhZGVyX3ZvbHVtZShhLCB0YXIsIGVudHJ5LCBoLCB1bmNvbnN1bWVkKTsKKwkJaWYgKGVyciA9PSBBUkNISVZFX0VPRikKKwkJCWVvZl92b2xfaGVhZGVyID0gMTsKIAkJYnJlYWs7CiAJY2FzZSAnWCc6IC8qIFVzZWQgYnkgU1VOIHRhcjsgc2FtZSBhcyAneCcuICovCiAJCWEtPmFyY2hpdmUuYXJjaGl2ZV9mb3JtYXQgPSBBUkNISVZFX0ZPUk1BVF9UQVJfUEFYX0lOVEVSQ0hBTkdFOwpAQCAtODYyLDkgKzg2NiwxNyBAQAogCQl9CiAJCXJldHVybiAoZXJyKTsKIAl9Ci0JaWYgKGVyciA9PSBBUkNISVZFX0VPRikKLQkJLyogRU9GIHdoZW4gcmVjdXJzaXZlbHkgcmVhZGluZyBhIGhlYWRlciBpcyBiYWQuICovCi0JCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBFSU5WQUwsICJEYW1hZ2VkIHRhciBhcmNoaXZlIik7CisJaWYgKGVyciA9PSBBUkNISVZFX0VPRikgeworCQlpZiAoIWVvZl92b2xfaGVhZGVyKSB7CisJCQkvKiBFT0Ygd2hlbiByZWN1cnNpdmVseSByZWFkaW5nIGEgaGVhZGVyIGlzIGJhZC4gKi8KKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBFSU5WQUwsCisJCQkgICAgIkRhbWFnZWQgdGFyIGFyY2hpdmUiKTsKKwkJfSBlbHNlIHsKKwkJCS8qIElmIHdlIGVuY291bnRlciBqdXN0IGEgR05VIHZvbHVtZSBoZWFkZXIgdHJlYXQKKwkJCSAqIHRoaXMgc2l0dWF0aW9uIGFzIGFuIGVtcHR5IGFyY2hpdmUgKi8KKwkJCXJldHVybiAoQVJDSElWRV9FT0YpOworCQl9CisJfQogCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CiB9CiAKQEAgLTE5NDIsNiArMTk1NCwxNSBAQAogCQkJcGF4X3RpbWUodmFsdWUsICZzLCAmbik7CiAJCQlhcmNoaXZlX2VudHJ5X3NldF9iaXJ0aHRpbWUoZW50cnksIHMsIG4pOwogCQl9CisJCWlmIChzdHJjbXAoa2V5LCAiTElCQVJDSElWRS5zeW1saW5rdHlwZSIpID09IDApIHsKKwkJCWlmIChzdHJjbXAodmFsdWUsICJmaWxlIikgPT0gMCkgeworCQkJCWFyY2hpdmVfZW50cnlfc2V0X3N5bWxpbmtfdHlwZShlbnRyeSwKKwkJCQkgICAgQUVfU1lNTElOS19UWVBFX0ZJTEUpOworCQkJfSBlbHNlIGlmIChzdHJjbXAodmFsdWUsICJkaXIiKSA9PSAwKSB7CisJCQkJYXJjaGl2ZV9lbnRyeV9zZXRfc3ltbGlua190eXBlKGVudHJ5LAorCQkJCSAgICBBRV9TWU1MSU5LX1RZUEVfRElSRUNUT1JZKTsKKwkJCX0KKwkJfQogCQlpZiAobWVtY21wKGtleSwgIkxJQkFSQ0hJVkUueGF0dHIuIiwgMTcpID09IDApCiAJCQlwYXhfYXR0cmlidXRlX3hhdHRyKGVudHJ5LCBrZXksIHZhbHVlKTsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3dhcmMuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfd2FyYy5jCmluZGV4IGU4NzUzODUuLjcyOTc3YjggMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfd2FyYy5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfd2FyYy5jCkBAIC0zODYsNiArMzg2LDExIEBACiAJCXJldHVybiAoQVJDSElWRV9FT0YpOwogCX0KIAorCWlmICh3LT51bmNvbnN1bWVkKSB7CisJCV9fYXJjaGl2ZV9yZWFkX2NvbnN1bWUoYSwgdy0+dW5jb25zdW1lZCk7CisJCXctPnVuY29uc3VtZWQgPSAwVTsKKwl9CisKIAlyYWIgPSBfX2FyY2hpdmVfcmVhZF9haGVhZChhLCAxVSwgJm5yZCk7CiAJaWYgKG5yZCA8IDApIHsKIAkJKmJzeiA9IDBVOwpAQCAtNjIxLDcgKzYyNiw4IEBACiAJCWlmICh2ZXIgPj0gMTIwMFUpIHsKIAkJCWlmIChtZW1jbXAoYywgIlxyXG4iLCAyVSkgIT0gMCkKIAkJCQl2ZXIgPSAwVTsKLQkJfSBlbHNlIGlmICh2ZXIgPCAxMjAwVSkgeworCQl9IGVsc2UgeworCQkJLyogdmVyIDwgMTIwMFUgKi8KIAkJCWlmICgqYyAhPSAnICcgJiYgKmMgIT0gJ1x0JykKIAkJCQl2ZXIgPSAwVTsKIAkJfQpAQCAtNzM5LDggKzc0NSw5IEBACiAJLyogdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgZGlnaXQgKi8KIAlpZiAoIWlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpKnZhbCkpCiAJCXJldHVybiAtMTsKKwllcnJubyA9IDA7CiAJbGVuID0gc3RydG9sKHZhbCwgJm9uLCAxMCk7Ci0JaWYgKG9uICE9IGVvbCkgeworCWlmIChlcnJubyAhPSAwIHx8IG9uICE9IGVvbCkgewogCQkvKiBsaW5lIG11c3QgZW5kIGhlcmUgKi8KIAkJcmV0dXJuIC0xOwogCX0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfeGFyLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3hhci5jCmluZGV4IDkyOTJlZDcuLjJiYzVjN2IgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfeGFyLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF94YXIuYwpAQCAtMTY3LDYgKzE2Nyw5IEBACiAjZGVmaW5lIEhBU19GRkxBR1MJCTB4MDEwMDAKICNkZWZpbmUgSEFTX1hBVFRSCQkweDAyMDAwCiAjZGVmaW5lIEhBU19BQ0wJCQkweDA0MDAwCisjZGVmaW5lIEhBU19DVElNRQkJMHgwODAwMAorI2RlZmluZSBIQVNfTVRJTUUJCTB4MTAwMDAKKyNkZWZpbmUgSEFTX0FUSU1FCQkweDIwMDAwCiAKIAl1aW50NjRfdAkJIGlkOwogCXVpbnQ2NF90CQkgbGVuZ3RoOwpAQCAtNjk1LDkgKzY5OCwxNSBAQAogCQkgKi8KIAkJZmlsZV9mcmVlKGZpbGUpOwogCX0KLQlhcmNoaXZlX2VudHJ5X3NldF9hdGltZShlbnRyeSwgZmlsZS0+YXRpbWUsIDApOwotCWFyY2hpdmVfZW50cnlfc2V0X2N0aW1lKGVudHJ5LCBmaWxlLT5jdGltZSwgMCk7Ci0JYXJjaGl2ZV9lbnRyeV9zZXRfbXRpbWUoZW50cnksIGZpbGUtPm10aW1lLCAwKTsKKyAgICAgICAgaWYgKGZpbGUtPmhhcyAmIEhBU19BVElNRSkgeworICAgICAgICAgIGFyY2hpdmVfZW50cnlfc2V0X2F0aW1lKGVudHJ5LCBmaWxlLT5hdGltZSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZpbGUtPmhhcyAmIEhBU19DVElNRSkgeworICAgICAgICAgIGFyY2hpdmVfZW50cnlfc2V0X2N0aW1lKGVudHJ5LCBmaWxlLT5jdGltZSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZpbGUtPmhhcyAmIEhBU19NVElNRSkgeworICAgICAgICAgIGFyY2hpdmVfZW50cnlfc2V0X210aW1lKGVudHJ5LCBmaWxlLT5tdGltZSwgMCk7CisgICAgICAgIH0KIAlhcmNoaXZlX2VudHJ5X3NldF9naWQoZW50cnksIGZpbGUtPmdpZCk7CiAJaWYgKGZpbGUtPmduYW1lLmxlbmd0aCA+IDAgJiYKIAkgICAgYXJjaGl2ZV9lbnRyeV9jb3B5X2duYW1lX2woZW50cnksIGZpbGUtPmduYW1lLnMsCkBAIC03ODksNyArNzk4LDggQEAKIAl4YXR0ciA9IGZpbGUtPnhhdHRyX2xpc3Q7CiAJd2hpbGUgKHhhdHRyICE9IE5VTEwpIHsKIAkJY29uc3Qgdm9pZCAqZDsKLQkJc2l6ZV90IG91dGJ5dGVzLCB1c2VkOworCQlzaXplX3Qgb3V0Ynl0ZXMgPSAwOworCQlzaXplX3QgdXNlZCA9IDA7CiAKIAkJciA9IG1vdmVfcmVhZGluZ19wb2ludChhLCB4YXR0ci0+b2Zmc2V0KTsKIAkJaWYgKHIgIT0gQVJDSElWRV9PSykKQEAgLTgxMSw4ICs4MjEsMTggQEAKIAkJciA9IGNoZWNrc3VtX2ZpbmFsKGEsCiAJCSAgICB4YXR0ci0+YV9zdW0udmFsLCB4YXR0ci0+YV9zdW0ubGVuLAogCQkgICAgeGF0dHItPmVfc3VtLnZhbCwgeGF0dHItPmVfc3VtLmxlbik7Ci0JCWlmIChyICE9IEFSQ0hJVkVfT0spCisJCWlmIChyICE9IEFSQ0hJVkVfT0spIHsKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCYoYS0+YXJjaGl2ZSksIEFSQ0hJVkVfRVJSTk9fTUlTQywKKwkJCSAgICAiWGF0dHIgY2hlY2tzdW0gZXJyb3IiKTsKKwkJCXIgPSBBUkNISVZFX1dBUk47CiAJCQlicmVhazsKKwkJfQorCQlpZiAoeGF0dHItPm5hbWUucyA9PSBOVUxMKSB7CisJCQlhcmNoaXZlX3NldF9lcnJvcigmKGEtPmFyY2hpdmUpLCBBUkNISVZFX0VSUk5PX01JU0MsCisJCQkgICAgIlhhdHRyIG5hbWUgZXJyb3IiKTsKKwkJCXIgPSBBUkNISVZFX1dBUk47CisJCQlicmVhazsKKwkJfQogCQlhcmNoaXZlX2VudHJ5X3hhdHRyX2FkZF9lbnRyeShlbnRyeSwKIAkJICAgIHhhdHRyLT5uYW1lLnMsIGQsIG91dGJ5dGVzKTsKIAkJeGF0dHIgPSB4YXR0ci0+bmV4dDsKQEAgLTgzOCw3ICs4NTgsNyBAQAogICAgIGNvbnN0IHZvaWQgKipidWZmLCBzaXplX3QgKnNpemUsIGludDY0X3QgKm9mZnNldCkKIHsKIAlzdHJ1Y3QgeGFyICp4YXI7Ci0Jc2l6ZV90IHVzZWQ7CisJc2l6ZV90IHVzZWQgPSAwOwogCWludCByOwogCiAJeGFyID0gKHN0cnVjdCB4YXIgKikoYS0+Zm9ybWF0LT5kYXRhKTsKQEAgLTk2Nyw3ICs5ODcsNyBAQAogCQkJCXJldHVybiAoKGludClzdGVwKTsKIAkJCXhhci0+b2Zmc2V0ICs9IHN0ZXA7CiAJCX0gZWxzZSB7Ci0JCQlpbnQ2NF90IHBvcyA9IF9fYXJjaGl2ZV9yZWFkX3NlZWsoYSwgb2Zmc2V0LCBTRUVLX1NFVCk7CisJCQlpbnQ2NF90IHBvcyA9IF9fYXJjaGl2ZV9yZWFkX3NlZWsoYSwgeGFyLT5oX2Jhc2UgKyBvZmZzZXQsIFNFRUtfU0VUKTsKIAkJCWlmIChwb3MgPT0gQVJDSElWRV9GQUlMRUQpIHsKIAkJCQlhcmNoaXZlX3NldF9lcnJvcigmKGEtPmFyY2hpdmUpLAogCQkJCSAgICBBUkNISVZFX0VSUk5PX01JU0MsCkBAIC0xMjIwLDggKzEyNDAsNyBAQAogCQl9CiAJCW1lbWNweShuZXdfcGVuZGluZ19maWxlcywgaGVhcC0+ZmlsZXMsCiAJCSAgICBoZWFwLT5hbGxvY2F0ZWQgKiBzaXplb2YobmV3X3BlbmRpbmdfZmlsZXNbMF0pKTsKLQkJaWYgKGhlYXAtPmZpbGVzICE9IE5VTEwpCi0JCQlmcmVlKGhlYXAtPmZpbGVzKTsKKwkJZnJlZShoZWFwLT5maWxlcyk7CiAJCWhlYXAtPmZpbGVzID0gbmV3X3BlbmRpbmdfZmlsZXM7CiAJCWhlYXAtPmFsbG9jYXRlZCA9IG5ld19zaXplOwogCX0KQEAgLTE3NjcsOCArMTc4Niw4IEBACiAJfQogCWZpbGUtPnBhcmVudCA9IHhhci0+ZmlsZTsKIAlmaWxlLT5tb2RlID0gMDc3NyB8IEFFX0lGUkVHOwotCWZpbGUtPmF0aW1lID0gdGltZShOVUxMKTsKLQlmaWxlLT5tdGltZSA9IHRpbWUoTlVMTCk7CisJZmlsZS0+YXRpbWUgPSAgMDsKKwlmaWxlLT5tdGltZSA9IDA7CiAJeGFyLT5maWxlID0gZmlsZTsKIAl4YXItPnhhdHRyID0gTlVMTDsKIAlmb3IgKGF0dHIgPSBsaXN0LT5maXJzdDsgYXR0ciAhPSBOVUxMOyBhdHRyID0gYXR0ci0+bmV4dCkgewpAQCAtMjU5NCwxNSArMjYxMywxNCBAQAogCXdoaWxlIChsID4gMCkgewogCQlpbnQgbiA9IDA7CiAKLQkJaWYgKGwgPiAwKSB7Ci0JCQlpZiAoYmFzZTY0W2JbMF1dIDwgMCB8fCBiYXNlNjRbYlsxXV0gPCAwKQotCQkJCWJyZWFrOwotCQkJbiA9IGJhc2U2NFsqYisrXSA8PCAxODsKLQkJCW4gfD0gYmFzZTY0WypiKytdIDw8IDEyOwotCQkJKm91dCsrID0gbiA+PiAxNjsKLQkJCWxlbisrOwotCQkJbCAtPSAyOwotCQl9CisJCWlmIChiYXNlNjRbYlswXV0gPCAwIHx8IGJhc2U2NFtiWzFdXSA8IDApCisJCQlicmVhazsKKwkJbiA9IGJhc2U2NFsqYisrXSA8PCAxODsKKwkJbiB8PSBiYXNlNjRbKmIrK10gPDwgMTI7CisJCSpvdXQrKyA9IG4gPj4gMTY7CisJCWxlbisrOworCQlsIC09IDI7CisKIAkJaWYgKGwgPiAwKSB7CiAJCQlpZiAoYmFzZTY0WypiXSA8IDApCiAJCQkJYnJlYWs7CkBAIC0yNzUxLDE1ICsyNzY5LDE1IEBACiAJCXhhci0+ZmlsZS0+dWlkID0gYXRvbDEwKHMsIGxlbik7CiAJCWJyZWFrOwogCWNhc2UgRklMRV9DVElNRToKLQkJeGFyLT5maWxlLT5oYXMgfD0gSEFTX1RJTUU7CisJCXhhci0+ZmlsZS0+aGFzIHw9IEhBU19USU1FIHwgSEFTX0NUSU1FOwogCQl4YXItPmZpbGUtPmN0aW1lID0gcGFyc2VfdGltZShzLCBsZW4pOwogCQlicmVhazsKIAljYXNlIEZJTEVfTVRJTUU6Ci0JCXhhci0+ZmlsZS0+aGFzIHw9IEhBU19USU1FOworCQl4YXItPmZpbGUtPmhhcyB8PSBIQVNfVElNRSB8IEhBU19NVElNRTsKIAkJeGFyLT5maWxlLT5tdGltZSA9IHBhcnNlX3RpbWUocywgbGVuKTsKIAkJYnJlYWs7CiAJY2FzZSBGSUxFX0FUSU1FOgotCQl4YXItPmZpbGUtPmhhcyB8PSBIQVNfVElNRTsKKwkJeGFyLT5maWxlLT5oYXMgfD0gSEFTX1RJTUUgfCBIQVNfQVRJTUU7CiAJCXhhci0+ZmlsZS0+YXRpbWUgPSBwYXJzZV90aW1lKHMsIGxlbik7CiAJCWJyZWFrOwogCWNhc2UgRklMRV9EQVRBX0xFTkdUSDoKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfemlwLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3ppcC5jCmluZGV4IDdlOTliMTIuLjM2ODMxZjcgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfemlwLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF96aXAuYwpAQCAtNTIsNiArNTIsMTIgQEAKICNpZmRlZiBIQVZFX1pMSUJfSAogI2luY2x1ZGUgPGNtX3psaWIuaD4KICNlbmRpZgorI2lmZGVmIEhBVkVfQlpMSUJfSAorI2luY2x1ZGUgPGJ6bGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0xaTUFfSAorI2luY2x1ZGUgPGx6bWEuaD4KKyNlbmRpZgogCiAjaW5jbHVkZSAiYXJjaGl2ZS5oIgogI2luY2x1ZGUgImFyY2hpdmVfZGlnZXN0X3ByaXZhdGUuaCIKQEAgLTYzLDYgKzY5LDcgQEAKICNpbmNsdWRlICJhcmNoaXZlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJhcmNoaXZlX3JiLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV9yZWFkX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJhcmNoaXZlX3BwbWQ4X3ByaXZhdGUuaCIKIAogI2lmbmRlZiBIQVZFX1pMSUJfSAogI2luY2x1ZGUgImFyY2hpdmVfY3JjMzIuaCIKQEAgLTE2NSwxMyArMTcyLDMwIEBACiAJY2hhcgkJCWRlY29tcHJlc3NfaW5pdDsKIAljaGFyCQkJZW5kX29mX2VudHJ5OwogCi0jaWZkZWYgSEFWRV9aTElCX0gKIAl1bnNpZ25lZCBjaGFyIAkJKnVuY29tcHJlc3NlZF9idWZmZXI7CiAJc2l6ZV90IAkJCXVuY29tcHJlc3NlZF9idWZmZXJfc2l6ZTsKKworI2lmZGVmIEhBVkVfWkxJQl9ICiAJel9zdHJlYW0JCXN0cmVhbTsKIAljaGFyCQkJc3RyZWFtX3ZhbGlkOwogI2VuZGlmCiAKKyNpZiBIQVZFX0xaTUFfSCAmJiBIQVZFX0xJQkxaTUEKKwlsem1hX3N0cmVhbQkJemlweF9sem1hX3N0cmVhbTsKKwljaGFyICAgICAgICAgICAgemlweF9sem1hX3ZhbGlkOworI2VuZGlmCisKKyNpZmRlZiBIQVZFX0JaTElCX0gKKwliel9zdHJlYW0JCWJ6c3RyZWFtOworCWNoYXIgICAgICAgICAgICBienN0cmVhbV92YWxpZDsKKyNlbmRpZgorCisJSUJ5dGVJbgkJCXppcHhfcHBtZF9zdHJlYW07CisJc3NpemVfdAkJCXppcHhfcHBtZF9yZWFkX2NvbXByZXNzZWQ7CisJQ1BwbWQ4CQkJcHBtZDg7CisJY2hhcgkJCXBwbWQ4X3ZhbGlkOworCWNoYXIJCQlwcG1kOF9zdHJlYW1fZmFpbGVkOworCiAJc3RydWN0IGFyY2hpdmVfc3RyaW5nX2NvbnYgKnNjb252OwogCXN0cnVjdCBhcmNoaXZlX3N0cmluZ19jb252ICpzY29udl9kZWZhdWx0OwogCXN0cnVjdCBhcmNoaXZlX3N0cmluZ19jb252ICpzY29udl91dGY4OwpAQCAtMjIyLDYgKzI0NiwzMyBAQAogLyogTWFueSBzeXN0ZW1zIGRlZmluZSBtaW4gb3IgTUlOLCBidXQgbm90IGFsbC4gKi8KICNkZWZpbmUJemlwbWluKGEsYikgKChhKSA8IChiKSA/IChhKSA6IChiKSkKIAorLyogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IFBwbWQ4X0RlY29kZVN5bWJvbCBkdXJpbmcgZGVjb21wcmVzc2lvbiBvZiBQcG1kOAorICogc3RyZWFtcyBpbnNpZGUgWklQIGZpbGVzLiBJdCBoYXMgMiBwdXJwb3Nlczogb25lIGlzIHRvIGZldGNoIHRoZSBuZXh0CisgKiBjb21wcmVzc2VkIGJ5dGUgZnJvbSB0aGUgc3RyZWFtLCBzZWNvbmQgb25lIGlzIHRvIGluY3JlYXNlIHRoZSBjb3VudGVyIGhvdworICogbWFueSBjb21wcmVzc2VkIGJ5dGVzIHdlcmUgcmVhZC4gKi8KK3N0YXRpYyBCeXRlCitwcG1kX3JlYWQodm9pZCogcCkgeworCS8qIEdldCB0aGUgaGFuZGxlIHRvIGN1cnJlbnQgZGVjb21wcmVzc2lvbiBjb250ZXh0LiAqLworCXN0cnVjdCBhcmNoaXZlX3JlYWQgKmEgPSAoKElCeXRlSW4qKXApLT5hOworCXN0cnVjdCB6aXAgKnppcCA9IChzdHJ1Y3QgemlwKikgYS0+Zm9ybWF0LT5kYXRhOworCXNzaXplX3QgYnl0ZXNfYXZhaWwgPSAwOworCisJLyogRmV0Y2ggbmV4dCBieXRlLiAqLworCWNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBfX2FyY2hpdmVfcmVhZF9haGVhZChhLCAxLCAmYnl0ZXNfYXZhaWwpOworCWlmKGJ5dGVzX2F2YWlsIDwgMSkgeworCQl6aXAtPnBwbWQ4X3N0cmVhbV9mYWlsZWQgPSAxOworCQlyZXR1cm4gMDsKKwl9CisKKwlfX2FyY2hpdmVfcmVhZF9jb25zdW1lKGEsIDEpOworCisJLyogSW5jcmVtZW50IHRoZSBjb3VudGVyLiAqLworCSsremlwLT56aXB4X3BwbWRfcmVhZF9jb21wcmVzc2VkOworCisJLyogUmV0dXJuIHRoZSBuZXh0IGNvbXByZXNzZWQgYnl0ZS4gKi8KKwlyZXR1cm4gZGF0YVswXTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qCkBAIC0zNzIsNiArNDIzLDggQEAKIAl7MTcsICJyZXNlcnZlZCJ9LCAvKiBSZXNlcnZlZCBieSBQS1dBUkUgKi8KIAl7MTgsICJpYm0tdGVyc2UtbmV3In0sIC8qIEZpbGUgaXMgY29tcHJlc3NlZCB1c2luZyBJQk0gVEVSU0UgKG5ldykgKi8KIAl7MTksICJpYm0tbHo3NzcifSwvKiBJQk0gTFo3NyB6IEFyY2hpdGVjdHVyZSAoUEZTKSAqLworCXs5NSwgInh6In0sICAgICAgIC8qIFhaIGNvbXByZXNzZWQgZGF0YSAqLworCXs5NiwgImpwZWcifSwgICAgIC8qIEpQRUcgY29tcHJlc3NlZCBkYXRhICovCiAJezk3LCAid2F2LXBhY2sifSwgLyogV2F2UGFjayBjb21wcmVzc2VkIGRhdGEgKi8KIAl7OTgsICJwcG1kLTEifSwgICAvKiBQUE1kIHZlcnNpb24gSSwgUmV2IDEgKi8KIAl7OTksICJhZXMifSAgICAgICAvKiBXaW5aaXAgQUVTIGVuY3J5cHRpb24gICovCkBAIC00MTksMjcgKzQ3Miw0OSBAQAogICogIHRyaXBsZXRzLiAgaWQgYW5kIHNpemUgYXJlIDIgYnl0ZXMgZWFjaC4KICAqLwogc3RhdGljIGludAotcHJvY2Vzc19leHRyYShzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBjb25zdCBjaGFyICpwLCBzaXplX3QgZXh0cmFfbGVuZ3RoLCBzdHJ1Y3QgemlwX2VudHJ5KiB6aXBfZW50cnkpCitwcm9jZXNzX2V4dHJhKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSwKKyAgICAgY29uc3QgY2hhciAqcCwgc2l6ZV90IGV4dHJhX2xlbmd0aCwgc3RydWN0IHppcF9lbnRyeSogemlwX2VudHJ5KQogewogCXVuc2lnbmVkIG9mZnNldCA9IDA7CisJc3RydWN0IHppcCAqemlwID0gKHN0cnVjdCB6aXAgKikoYS0+Zm9ybWF0LT5kYXRhKTsKIAogCWlmIChleHRyYV9sZW5ndGggPT0gMCkgewogCQlyZXR1cm4gQVJDSElWRV9PSzsKIAl9CiAKIAlpZiAoZXh0cmFfbGVuZ3RoIDwgNCkgewotCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKLQkJICAgICJUb28tc21hbGwgZXh0cmEgZGF0YTogTmVlZCBhdCBsZWFzdCA0IGJ5dGVzLCBidXQgb25seSBmb3VuZCAlZCBieXRlcyIsIChpbnQpZXh0cmFfbGVuZ3RoKTsKLQkJcmV0dXJuIEFSQ0hJVkVfRkFJTEVEOworCQlzaXplX3QgaSA9IDA7CisJCS8qIFNvbWUgWklQIGZpbGVzIG1heSBoYXZlIHRyYWlsaW5nIDAgYnl0ZXMuIExldCdzIGNoZWNrIHRoZXkKKwkJICogYXJlIGFsbCAwIGFuZCBpZ25vcmUgdGhlbSBpbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlcnJvci4KKwkJICoKKwkJICogVGhpcyBpcyBub3QgdGVjaG5pY2FsbHkgY29ycmVjdCwgYnV0IHNvbWUgWklQIGZpbGVzIGxvb2sKKwkJICogbGlrZSB0aGlzIGFuZCBvdGhlciB0b29scyBzdXBwb3J0IHRob3NlIGZpbGVzIC0gc28gbGV0J3MKKwkJICogYWxzbyAgc3VwcG9ydCB0aGVtLgorCQkgKi8KKwkJZm9yICg7IGkgPCBleHRyYV9sZW5ndGg7IGkrKykgeworCQkJaWYgKHBbaV0gIT0gMCkgeworCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkJCSAgICAiVG9vLXNtYWxsIGV4dHJhIGRhdGE6ICIKKwkJCQkgICAgIk5lZWQgYXQgbGVhc3QgNCBieXRlcywgIgorCQkJCSAgICAiYnV0IG9ubHkgZm91bmQgJWQgYnl0ZXMiLAorCQkJCSAgICAoaW50KWV4dHJhX2xlbmd0aCk7CisJCQkJcmV0dXJuIEFSQ0hJVkVfRkFJTEVEOworCQkJfQorCQl9CisKKwkJcmV0dXJuIEFSQ0hJVkVfT0s7CiAJfQorCiAJd2hpbGUgKG9mZnNldCA8PSBleHRyYV9sZW5ndGggLSA0KSB7CiAJCXVuc2lnbmVkIHNob3J0IGhlYWRlcmlkID0gYXJjaGl2ZV9sZTE2ZGVjKHAgKyBvZmZzZXQpOwogCQl1bnNpZ25lZCBzaG9ydCBkYXRhc2l6ZSA9IGFyY2hpdmVfbGUxNmRlYyhwICsgb2Zmc2V0ICsgMik7CiAKIAkJb2Zmc2V0ICs9IDQ7CiAJCWlmIChvZmZzZXQgKyBkYXRhc2l6ZSA+IGV4dHJhX2xlbmd0aCkgewotCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0JCQkgICAgIkV4dHJhIGRhdGEgb3ZlcmZsb3c6IE5lZWQgJWQgYnl0ZXMgYnV0IG9ubHkgZm91bmQgJWQgYnl0ZXMiLAorCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwgIkV4dHJhIGRhdGEgb3ZlcmZsb3c6ICIKKwkJCSAgICAiTmVlZCAlZCBieXRlcyBidXQgb25seSBmb3VuZCAlZCBieXRlcyIsCiAJCQkgICAgKGludClkYXRhc2l6ZSwgKGludCkoZXh0cmFfbGVuZ3RoIC0gb2Zmc2V0KSk7CiAJCQlyZXR1cm4gQVJDSElWRV9GQUlMRUQ7CiAJCX0KQEAgLTQ1NCw5ICs1MjksMTIgQEAKIAkJCWlmICh6aXBfZW50cnktPnVuY29tcHJlc3NlZF9zaXplID09IDB4ZmZmZmZmZmYpIHsKIAkJCQl1aW50NjRfdCB0ID0gMDsKIAkJCQlpZiAoZGF0YXNpemUgPCA4Ci0JCQkJICAgIHx8ICh0ID0gYXJjaGl2ZV9sZTY0ZGVjKHAgKyBvZmZzZXQpKSA+IElOVDY0X01BWCkgewotCQkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKLQkJCQkJICAgICJNYWxmb3JtZWQgNjQtYml0IHVuY29tcHJlc3NlZCBzaXplIik7CisJCQkJICAgIHx8ICh0ID0gYXJjaGl2ZV9sZTY0ZGVjKHAgKyBvZmZzZXQpKSA+CisJCQkJICAgIElOVDY0X01BWCkgeworCQkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKKwkJCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkJCSAgICAiTWFsZm9ybWVkIDY0LWJpdCAiCisJCQkJCSAgICAidW5jb21wcmVzc2VkIHNpemUiKTsKIAkJCQkJcmV0dXJuIEFSQ0hJVkVfRkFJTEVEOwogCQkJCX0KIAkJCQl6aXBfZW50cnktPnVuY29tcHJlc3NlZF9zaXplID0gdDsKQEAgLTQ2Niw5ICs1NDQsMTIgQEAKIAkJCWlmICh6aXBfZW50cnktPmNvbXByZXNzZWRfc2l6ZSA9PSAweGZmZmZmZmZmKSB7CiAJCQkJdWludDY0X3QgdCA9IDA7CiAJCQkJaWYgKGRhdGFzaXplIDwgOAotCQkJCSAgICB8fCAodCA9IGFyY2hpdmVfbGU2NGRlYyhwICsgb2Zmc2V0KSkgPiBJTlQ2NF9NQVgpIHsKLQkJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0JCQkJCSAgICAiTWFsZm9ybWVkIDY0LWJpdCBjb21wcmVzc2VkIHNpemUiKTsKKwkJCQkgICAgfHwgKHQgPSBhcmNoaXZlX2xlNjRkZWMocCArIG9mZnNldCkpID4KKwkJCQkgICAgSU5UNjRfTUFYKSB7CisJCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCQkJICAgICJNYWxmb3JtZWQgNjQtYml0ICIKKwkJCQkJICAgICJjb21wcmVzc2VkIHNpemUiKTsKIAkJCQkJcmV0dXJuIEFSQ0hJVkVfRkFJTEVEOwogCQkJCX0KIAkJCQl6aXBfZW50cnktPmNvbXByZXNzZWRfc2l6ZSA9IHQ7CkBAIC00NzgsOSArNTU5LDEyIEBACiAJCQlpZiAoemlwX2VudHJ5LT5sb2NhbF9oZWFkZXJfb2Zmc2V0ID09IDB4ZmZmZmZmZmYpIHsKIAkJCQl1aW50NjRfdCB0ID0gMDsKIAkJCQlpZiAoZGF0YXNpemUgPCA4Ci0JCQkJICAgIHx8ICh0ID0gYXJjaGl2ZV9sZTY0ZGVjKHAgKyBvZmZzZXQpKSA+IElOVDY0X01BWCkgewotCQkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKLQkJCQkJICAgICJNYWxmb3JtZWQgNjQtYml0IGxvY2FsIGhlYWRlciBvZmZzZXQiKTsKKwkJCQkgICAgfHwgKHQgPSBhcmNoaXZlX2xlNjRkZWMocCArIG9mZnNldCkpID4KKwkJCQkgICAgSU5UNjRfTUFYKSB7CisJCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCQkJICAgICJNYWxmb3JtZWQgNjQtYml0ICIKKwkJCQkJICAgICJsb2NhbCBoZWFkZXIgb2Zmc2V0Iik7CiAJCQkJCXJldHVybiBBUkNISVZFX0ZBSUxFRDsKIAkJCQl9CiAJCQkJemlwX2VudHJ5LT5sb2NhbF9oZWFkZXJfb2Zmc2V0ID0gdDsKQEAgLTUxMyw3ICs1OTcsOCBAQAogCQkJLyogRXh0ZW5kZWQgdGltZSBmaWVsZCAiVVQiLiAqLwogCQkJaW50IGZsYWdzOwogCQkJaWYgKGRhdGFzaXplID09IDApIHsKLQkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKKwkJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKIAkJCQkgICAgIkluY29tcGxldGUgZXh0ZW5kZWQgdGltZSBmaWVsZCIpOwogCQkJCXJldHVybiBBUkNISVZFX0ZBSUxFRDsKIAkJCX0KQEAgLTU5NSw3ICs2ODAsOCBAQAogCQkJICogIGlmIGJpdG1hcCAmIDEsIDIgYnl0ZSAidmVyc2lvbiBtYWRlIGJ5IgogCQkJICogIGlmIGJpdG1hcCAmIDIsIDIgYnl0ZSAiaW50ZXJuYWwgZmlsZSBhdHRyaWJ1dGVzIgogCQkJICogIGlmIGJpdG1hcCAmIDQsIDQgYnl0ZSAiZXh0ZXJuYWwgZmlsZSBhdHRyaWJ1dGVzIgotCQkJICogIGlmIGJpdG1hcCAmIDgsIDIgYnl0ZSBjb21tZW50IGxlbmd0aCArIG4gYnl0ZSBjb21tZW50CisJCQkgKiAgaWYgYml0bWFwICYgOCwgMiBieXRlIGNvbW1lbnQgbGVuZ3RoICsgbiBieXRlCisJCQkgKiAgY29tbWVudAogCQkJICovCiAJCQlpbnQgYml0bWFwLCBiaXRtYXBfbGFzdDsKIApAQCAtNjQ2LDEzICs3MzIsMTggQEAKIAkJCQkJICAgID0gZXh0ZXJuYWxfYXR0cmlidXRlcyA+PiAxNjsKIAkJCQl9IGVsc2UgaWYgKHppcF9lbnRyeS0+c3lzdGVtID09IDApIHsKIAkJCQkJLy8gSW50ZXJwcmV0IE1TRE9TIGRpcmVjdG9yeSBiaXQKLQkJCQkJaWYgKDB4MTAgPT0gKGV4dGVybmFsX2F0dHJpYnV0ZXMgJiAweDEwKSkgewotCQkJCQkJemlwX2VudHJ5LT5tb2RlID0gQUVfSUZESVIgfCAwNzc1OworCQkJCQlpZiAoMHgxMCA9PSAoZXh0ZXJuYWxfYXR0cmlidXRlcyAmCisJCQkJCSAgICAweDEwKSkgeworCQkJCQkJemlwX2VudHJ5LT5tb2RlID0KKwkJCQkJCSAgICBBRV9JRkRJUiB8IDA3NzU7CiAJCQkJCX0gZWxzZSB7Ci0JCQkJCQl6aXBfZW50cnktPm1vZGUgPSBBRV9JRlJFRyB8IDA2NjQ7CisJCQkJCQl6aXBfZW50cnktPm1vZGUgPQorCQkJCQkJICAgIEFFX0lGUkVHIHwgMDY2NDsKIAkJCQkJfQotCQkJCQlpZiAoMHgwMSA9PSAoZXh0ZXJuYWxfYXR0cmlidXRlcyAmIDB4MDEpKSB7Ci0JCQkJCQkvLyBSZWFkLW9ubHkgYml0OyBzdHJpcCB3cml0ZSBwZXJtaXNzaW9ucworCQkJCQlpZiAoMHgwMSA9PSAoZXh0ZXJuYWxfYXR0cmlidXRlcyAmCisJCQkJCSAgICAweDAxKSkgeworCQkJCQkJLyogUmVhZC1vbmx5IGJpdDsKKwkJCQkJCSAqIHN0cmlwIHdyaXRlIHBlcm1pc3Npb25zICovCiAJCQkJCQl6aXBfZW50cnktPm1vZGUgJj0gMDU1NTsKIAkJCQkJfQogCQkJCX0gZWxzZSB7CkBAIC02NzksNiArNzcwLDU5IEBACiAJCQl9CiAJCQlicmVhazsKIAkJfQorCQljYXNlIDB4NzA3NToKKwkJeworCQkJLyogSW5mby1aSVAgVW5pY29kZSBQYXRoIEV4dHJhIEZpZWxkLiAqLworCQkJaWYgKGRhdGFzaXplIDwgNSB8fCBlbnRyeSA9PSBOVUxMKQorCQkJCWJyZWFrOworCQkJb2Zmc2V0ICs9IDU7CisJCQlkYXRhc2l6ZSAtPSA1OworCisJCQkvKiBUaGUgcGF0aCBuYW1lIGluIHRoaXMgZmllbGQgaXMgYWx3YXlzIGVuY29kZWQKKwkJCSAqIGluIFVURi04LiAqLworCQkJaWYgKHppcC0+c2NvbnZfdXRmOCA9PSBOVUxMKSB7CisJCQkJemlwLT5zY29udl91dGY4ID0KKwkJCQkJYXJjaGl2ZV9zdHJpbmdfY29udmVyc2lvbl9mcm9tX2NoYXJzZXQoCisJCQkJCSZhLT5hcmNoaXZlLCAiVVRGLTgiLCAxKTsKKwkJCQkvKiBJZiB0aGUgY29udmVydGVyIGZyb20gVVRGLTggaXMgbm90CisJCQkJICogYXZhaWxhYmxlLCB0aGVuIHRoZSBwYXRoIG5hbWUgZnJvbSB0aGUgbWFpbgorCQkJCSAqIGZpZWxkIHdpbGwgbW9yZSBsaWtlbHkgYmUgY29ycmVjdC4gKi8KKwkJCQlpZiAoemlwLT5zY29udl91dGY4ID09IE5VTEwpCisJCQkJCWJyZWFrOworCQkJfQorCisJCQkvKiBNYWtlIHN1cmUgdGhlIENSQzMyIG9mIHRoZSBmaWxlbmFtZSBtYXRjaGVzLiAqLworCQkJaWYgKCF6aXAtPmlnbm9yZV9jcmMzMikgeworCQkJCWNvbnN0IGNoYXIgKmNwID0gYXJjaGl2ZV9lbnRyeV9wYXRobmFtZShlbnRyeSk7CisJCQkJaWYgKGNwKSB7CisJCQkJCXVuc2lnbmVkIGxvbmcgZmlsZV9jcmMgPQorCQkJCQkgICAgemlwLT5jcmMzMmZ1bmMoMCwgY3AsIHN0cmxlbihjcCkpOworCQkJCQl1bnNpZ25lZCBsb25nIHV0Zl9jcmMgPQorCQkJCQkgICAgYXJjaGl2ZV9sZTMyZGVjKHAgKyBvZmZzZXQgLSA0KTsKKwkJCQkJaWYgKGZpbGVfY3JjICE9IHV0Zl9jcmMpIHsKKyNpZmRlZiBERUJVRworCQkJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCQkgICAgIkNSQyBmaWxlbmFtZSBtaXNtYXRjaDsgIgorCQkJCQkJICAgICJDREUgaXMgJWx4LCBidXQgVVRGOCAiCisJCQkJCQkgICAgImlzIG91dGRhdGVkIHdpdGggJWx4XG4iLAorCQkJCQkJICAgIGZpbGVfY3JjLCB1dGZfY3JjKTsKKyNlbmRpZgorCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCWlmIChhcmNoaXZlX2VudHJ5X2NvcHlfcGF0aG5hbWVfbChlbnRyeSwKKwkJCSAgICBwICsgb2Zmc2V0LCBkYXRhc2l6ZSwgemlwLT5zY29udl91dGY4KSAhPSAwKSB7CisJCQkJLyogSWdub3JlIHRoZSBlcnJvciwgYW5kIGZhbGxiYWNrIHRvIHRoZSBwYXRoCisJCQkJICogbmFtZSBmcm9tIHRoZSBtYWluIGZpZWxkLiAqLworI2lmZGVmIERFQlVHCisJCQkJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcmVhZCB0aGUgWklQICIKKwkJCQkgICAgIjB4NzA3NSBleHRyYSBmaWVsZCBwYXRoLlxuIik7CisjZW5kaWYKKwkJCX0KKwkJCWJyZWFrOworCQl9CiAJCWNhc2UgMHg3ODU1OgogCQkJLyogSW5mby1aSVAgVW5peCBFeHRyYSBGaWVsZCAodHlwZSAyKSAiVXgiLiAqLwogI2lmZGVmIERFQlVHCkBAIC03MTMsNyArODU3LDggQEAKIAkJCQl9CiAJCQkJaWYgKGRhdGFzaXplID49ICgyICsgdWlkc2l6ZSArIDMpKSB7CiAJCQkJCS8qIGdldCBhIGdpZCBzaXplLiAqLwotCQkJCQlnaWRzaXplID0gMHhmZiAmIChpbnQpcFtvZmZzZXQrMit1aWRzaXplXTsKKwkJCQkJZ2lkc2l6ZSA9IDB4ZmYgJgorCQkJCQkgICAgKGludClwW29mZnNldCsyK3VpZHNpemVdOwogCQkJCQlpZiAoZ2lkc2l6ZSA9PSAyKQogCQkJCQkJemlwX2VudHJ5LT5naWQgPQogCQkJCQkJICAgIGFyY2hpdmVfbGUxNmRlYygKQEAgLTczMCw3ICs4NzUsOCBAQAogCQljYXNlIDB4OTkwMToKIAkJCS8qIFdpblppcCBBRVMgZXh0cmEgZGF0YSBmaWVsZC4gKi8KIAkJCWlmIChkYXRhc2l6ZSA8IDYpIHsKLQkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKKwkJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKIAkJCQkgICAgIkluY29tcGxldGUgQUVTIGZpZWxkIik7CiAJCQkJcmV0dXJuIEFSQ0hJVkVfRkFJTEVEOwogCQkJfQpAQCAtNzUwLDEyICs4OTYsNiBAQAogCQl9CiAJCW9mZnNldCArPSBkYXRhc2l6ZTsKIAl9Ci0JaWYgKG9mZnNldCAhPSBleHRyYV9sZW5ndGgpIHsKLQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0JCSAgICAiTWFsZm9ybWVkIGV4dHJhIGRhdGE6IENvbnN1bWVkICVkIGJ5dGVzIG9mICVkIGJ5dGVzIiwKLQkJICAgIChpbnQpb2Zmc2V0LCAoaW50KWV4dHJhX2xlbmd0aCk7Ci0JCXJldHVybiBBUkNISVZFX0ZBSUxFRDsKLQl9CiAJcmV0dXJuIEFSQ0hJVkVfT0s7CiB9CiAKQEAgLTg3NSw3ICsxMDE1LDggQEAKIAkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKIAl9CiAKLQlpZiAoQVJDSElWRV9PSyAhPSBwcm9jZXNzX2V4dHJhKGEsIGgsIGV4dHJhX2xlbmd0aCwgemlwX2VudHJ5KSkgeworCWlmIChBUkNISVZFX09LICE9IHByb2Nlc3NfZXh0cmEoYSwgZW50cnksIGgsIGV4dHJhX2xlbmd0aCwKKwkgICAgemlwX2VudHJ5KSkgewogCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKIAl9CiAJX19hcmNoaXZlX3JlYWRfY29uc3VtZShhLCBleHRyYV9sZW5ndGgpOwpAQCAtODkyLDggKzEwMzMsOCBAQAogCQl6aXBfZW50cnktPm1vZGUgfD0gMDY2NDsKIAl9CiAKLQkvKiBXaW5kb3dzIGFyY2hpdmVycyBzb21ldGltZXMgdXNlIGJhY2tzbGFzaCBhcyB0aGUgZGlyZWN0b3J5IHNlcGFyYXRvci4KLQkgICBOb3JtYWxpemUgdG8gc2xhc2guICovCisJLyogV2luZG93cyBhcmNoaXZlcnMgc29tZXRpbWVzIHVzZSBiYWNrc2xhc2ggYXMgdGhlIGRpcmVjdG9yeQorCSAqIHNlcGFyYXRvci4gTm9ybWFsaXplIHRvIHNsYXNoLiAqLwogCWlmICh6aXBfZW50cnktPnN5c3RlbSA9PSAwICYmCiAJICAgICh3cCA9IGFyY2hpdmVfZW50cnlfcGF0aG5hbWVfdyhlbnRyeSkpICE9IE5VTEwpIHsKIAkJaWYgKHdjc2Nocih3cCwgTCcvJykgPT0gTlVMTCAmJiB3Y3NjaHIod3AsIEwnXFwnKSAhPSBOVUxMKSB7CkBAIC05MTIsNyArMTA1Myw3IEBACiAKIAkvKiBNYWtlIHN1cmUgdGhhdCBlbnRyaWVzIHdpdGggYSB0cmFpbGluZyAnLycgYXJlIG1hcmtlZCBhcyBkaXJlY3RvcmllcwogCSAqIGV2ZW4gaWYgdGhlIEV4dGVybmFsIEZpbGUgQXR0cmlidXRlcyBjb250YWlucyBib2d1cyB2YWx1ZXMuICBJZiB0aGlzCi0JICogaXMgbm90IGEgZGlyZWN0b3J5IGFuZCB0aGVyZSBpcyBubyB0eXBlLCBhc3N1bWUgcmVndWxhcmZpbGUuICovCisJICogaXMgbm90IGEgZGlyZWN0b3J5IGFuZCB0aGVyZSBpcyBubyB0eXBlLCBhc3N1bWUgYSByZWd1bGFyIGZpbGUuICovCiAJaWYgKCh6aXBfZW50cnktPm1vZGUgJiBBRV9JRk1UKSAhPSBBRV9JRkRJUikgewogCQlpbnQgaGFzX3NsYXNoOwogCkBAIC05NjMsNyArMTEwNCw3IEBACiAJfQogCiAJaWYgKHppcF9lbnRyeS0+ZmxhZ3MgJiBMQV9GUk9NX0NFTlRSQUxfRElSRUNUT1JZKSB7Ci0JCS8qIElmIHRoaXMgY2FtZSBmcm9tIHRoZSBjZW50cmFsIGRpciwgaXQncyBzaXplIGluZm8KKwkJLyogSWYgdGhpcyBjYW1lIGZyb20gdGhlIGNlbnRyYWwgZGlyLCBpdHMgc2l6ZSBpbmZvCiAJCSAqIGlzIGRlZmluaXRpdmUsIHNvIGlnbm9yZSB0aGUgbGVuZ3RoLWF0LWVuZCBmbGFnLiAqLwogCQl6aXBfZW50cnktPnppcF9mbGFncyAmPSB+WklQX0xFTkdUSF9BVF9FTkQ7CiAJCS8qIElmIGxvY2FsIGhlYWRlciBpcyBtaXNzaW5nIGEgdmFsdWUsIHVzZSB0aGUgb25lIGZyb20KQEAgLTEyMDIsNyArMTM0Myw4IEBACiAJCQkJemlwLT5lbnRyeS0+Y3JjMzIgPSBhcmNoaXZlX2xlMzJkZWMocCArIDQpOwogCQkJCWNvbXByZXNzZWQgPSBhcmNoaXZlX2xlNjRkZWMocCArIDgpOwogCQkJCXVuY29tcHJlc3NlZCA9IGFyY2hpdmVfbGU2NGRlYyhwICsgMTYpOwotCQkJCWlmIChjb21wcmVzc2VkID4gSU5UNjRfTUFYIHx8IHVuY29tcHJlc3NlZCA+IElOVDY0X01BWCkgeworCQkJCWlmIChjb21wcmVzc2VkID4gSU5UNjRfTUFYIHx8IHVuY29tcHJlc3NlZCA+CisJCQkJICAgIElOVDY0X01BWCkgewogCQkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKIAkJCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCiAJCQkJCSAgICAiT3ZlcmZsb3cgb2YgNjQtYml0IGZpbGUgc2l6ZXMiKTsKQEAgLTEyOTYsNiArMTQzOCw3NDUgQEAKIAlyZXR1cm4gKEFSQ0hJVkVfT0spOwogfQogCitzdGF0aWMgaW50Citjb25zdW1lX29wdGlvbmFsX21hcmtlcihzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBzdHJ1Y3QgemlwICp6aXApCit7CisJaWYgKHppcC0+ZW5kX29mX2VudHJ5ICYmICh6aXAtPmVudHJ5LT56aXBfZmxhZ3MgJiBaSVBfTEVOR1RIX0FUX0VORCkpIHsKKwkJY29uc3QgY2hhciAqcDsKKworCQlpZiAoTlVMTCA9PSAocCA9IF9fYXJjaGl2ZV9yZWFkX2FoZWFkKGEsIDI0LCBOVUxMKSkpIHsKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkgICAgIlRydW5jYXRlZCBaSVAgZW5kLW9mLWZpbGUgcmVjb3JkIik7CisJCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworCQl9CisJCS8qIENvbnN1bWUgdGhlIG9wdGlvbmFsIFBLXDAwN1wwMTAgbWFya2VyLiAqLworCQlpZiAocFswXSA9PSAnUCcgJiYgcFsxXSA9PSAnSycgJiYKKwkJICAgIHBbMl0gPT0gJ1wwMDcnICYmIHBbM10gPT0gJ1wwMTAnKSB7CisJCQlwICs9IDQ7CisJCQl6aXAtPnVuY29uc3VtZWQgPSA0OworCQl9CisJCWlmICh6aXAtPmVudHJ5LT5mbGFncyAmIExBX1VTRURfWklQNjQpIHsKKwkJCXVpbnQ2NF90IGNvbXByZXNzZWQsIHVuY29tcHJlc3NlZDsKKwkJCXppcC0+ZW50cnktPmNyYzMyID0gYXJjaGl2ZV9sZTMyZGVjKHApOworCQkJY29tcHJlc3NlZCA9IGFyY2hpdmVfbGU2NGRlYyhwICsgNCk7CisJCQl1bmNvbXByZXNzZWQgPSBhcmNoaXZlX2xlNjRkZWMocCArIDEyKTsKKwkJCWlmIChjb21wcmVzc2VkID4gSU5UNjRfTUFYIHx8CisJCQkgICAgdW5jb21wcmVzc2VkID4gSU5UNjRfTUFYKSB7CisJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkJICAgICJPdmVyZmxvdyBvZiA2NC1iaXQgZmlsZSBzaXplcyIpOworCQkJCXJldHVybiBBUkNISVZFX0ZBSUxFRDsKKwkJCX0KKwkJCXppcC0+ZW50cnktPmNvbXByZXNzZWRfc2l6ZSA9IGNvbXByZXNzZWQ7CisJCQl6aXAtPmVudHJ5LT51bmNvbXByZXNzZWRfc2l6ZSA9IHVuY29tcHJlc3NlZDsKKwkJCXppcC0+dW5jb25zdW1lZCArPSAyMDsKKwkJfSBlbHNlIHsKKwkJCXppcC0+ZW50cnktPmNyYzMyID0gYXJjaGl2ZV9sZTMyZGVjKHApOworCQkJemlwLT5lbnRyeS0+Y29tcHJlc3NlZF9zaXplID0gYXJjaGl2ZV9sZTMyZGVjKHAgKyA0KTsKKwkJCXppcC0+ZW50cnktPnVuY29tcHJlc3NlZF9zaXplID0gYXJjaGl2ZV9sZTMyZGVjKHAgKyA4KTsKKwkJCXppcC0+dW5jb25zdW1lZCArPSAxMjsKKwkJfQorCX0KKworICAgIHJldHVybiAoQVJDSElWRV9PSyk7Cit9CisKKyNpZiBIQVZFX0xaTUFfSCAmJiBIQVZFX0xJQkxaTUEKK3N0YXRpYyBpbnQKK3ppcHhfeHpfaW5pdChzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBzdHJ1Y3QgemlwICp6aXApCit7CisJbHptYV9yZXQgcjsKKworCWlmKHppcC0+emlweF9sem1hX3ZhbGlkKSB7CisJCWx6bWFfZW5kKCZ6aXAtPnppcHhfbHptYV9zdHJlYW0pOworCQl6aXAtPnppcHhfbHptYV92YWxpZCA9IDA7CisJfQorCisJbWVtc2V0KCZ6aXAtPnppcHhfbHptYV9zdHJlYW0sIDAsIHNpemVvZih6aXAtPnppcHhfbHptYV9zdHJlYW0pKTsKKwlyID0gbHptYV9zdHJlYW1fZGVjb2RlcigmemlwLT56aXB4X2x6bWFfc3RyZWFtLCBVSU5UNjRfTUFYLCAwKTsKKwlpZiAociAhPSBMWk1BX09LKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCYoYS0+YXJjaGl2ZSksIEFSQ0hJVkVfRVJSTk9fTUlTQywKKwkJICAgICJ4eiBpbml0aWFsaXphdGlvbiBmYWlsZWQoJWQpIiwKKwkJICAgIHIpOworCisJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOworCX0KKworCXppcC0+emlweF9sem1hX3ZhbGlkID0gMTsKKworCWZyZWUoemlwLT51bmNvbXByZXNzZWRfYnVmZmVyKTsKKworCXppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcl9zaXplID0gMjU2ICogMTAyNDsKKwl6aXAtPnVuY29tcHJlc3NlZF9idWZmZXIgPQorCSAgICAodWludDhfdCopIG1hbGxvYyh6aXAtPnVuY29tcHJlc3NlZF9idWZmZXJfc2l6ZSk7CisJaWYgKHppcC0+dW5jb21wcmVzc2VkX2J1ZmZlciA9PSBOVUxMKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBFTk9NRU0sCisJCSAgICAiTm8gbWVtb3J5IGZvciB4eiBkZWNvbXByZXNzaW9uIik7CisJCSAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworCX0KKworCXppcC0+ZGVjb21wcmVzc19pbml0ID0gMTsKKwlyZXR1cm4gKEFSQ0hJVkVfT0spOworfQorCitzdGF0aWMgaW50Cit6aXB4X2x6bWFfYWxvbmVfaW5pdChzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBzdHJ1Y3QgemlwICp6aXApCit7CisJbHptYV9yZXQgcjsKKwljb25zdCB1aW50OF90KiBwOworCisjcHJhZ21hIHBhY2socHVzaCkKKyNwcmFnbWEgcGFjaygxKQorCXN0cnVjdCBfYWxvbmVfaGVhZGVyIHsKKwkgICAgdWludDhfdCBieXRlc1s1XTsKKwkgICAgdWludDY0X3QgdW5jb21wcmVzc2VkX3NpemU7CisJfSBhbG9uZV9oZWFkZXI7CisjcHJhZ21hIHBhY2socG9wKQorCisJaWYoemlwLT56aXB4X2x6bWFfdmFsaWQpIHsKKwkJbHptYV9lbmQoJnppcC0+emlweF9sem1hX3N0cmVhbSk7CisJCXppcC0+emlweF9sem1hX3ZhbGlkID0gMDsKKwl9CisKKwkvKiBUbyB1bnBhY2sgWklQWCdzICJMWk1BIiAoaWQgMTQpIHN0cmVhbSB3ZSBjYW4gdXNlIHN0YW5kYXJkIGxpYmx6bWEKKwkgKiB0aGF0IGlzIGEgcGFydCBvZiBYWiBVdGlscy4gVGhlIHN0cmVhbSBmb3JtYXQgc3RvcmVkIGluc2lkZSBaSVBYCisJICogZmlsZSBpcyBhIG1vZGlmaWVkICJsem1hIGFsb25lIiBmaWxlIGZvcm1hdCwgdGhhdCB3YXMgdXNlZCBieSB0aGUKKwkgKiBgbHptYWAgdXRpbGl0eSB3aGljaCB3YXMgbGF0ZXIgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgYHh6YCB1dGlsaXR5LiAJICogU2luY2UgdGhvc2UgZm9ybWF0cyBhcmUgbmVhcmx5IHRoZSBzYW1lLCB3ZSBjYW4gdXNlIGEgc3RhbmRhcmQKKwkgKiAibHptYSBhbG9uZSIgZGVjb2RlciBmcm9tIFhaIFV0aWxzLiAqLworCisJbWVtc2V0KCZ6aXAtPnppcHhfbHptYV9zdHJlYW0sIDAsIHNpemVvZih6aXAtPnppcHhfbHptYV9zdHJlYW0pKTsKKwlyID0gbHptYV9hbG9uZV9kZWNvZGVyKCZ6aXAtPnppcHhfbHptYV9zdHJlYW0sIFVJTlQ2NF9NQVgpOworCWlmIChyICE9IExaTUFfT0spIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJihhLT5hcmNoaXZlKSwgQVJDSElWRV9FUlJOT19NSVNDLAorCQkgICAgImx6bWEgaW5pdGlhbGl6YXRpb24gZmFpbGVkKCVkKSIsIHIpOworCisJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOworCX0KKworCS8qIEZsYWcgdGhlIGNsZWFudXAgZnVuY3Rpb24gdGhhdCB3ZSB3YW50IG91ciBsem1hLXJlbGF0ZWQgc3RydWN0dXJlcworCSAqIHRvIGJlIGZyZWVkIGxhdGVyLiAqLworCXppcC0+emlweF9sem1hX3ZhbGlkID0gMTsKKworCS8qIFRoZSAibHptYSBhbG9uZSIgZmlsZSBmb3JtYXQgYW5kIHRoZSBzdHJlYW0gZm9ybWF0IGluc2lkZSBaSVB4IGFyZQorCSAqIGFsbW9zdCB0aGUgc2FtZS4gSGVyZSdzIGFuIGV4YW1wbGUgb2YgYSBzdHJ1Y3R1cmUgb2YgImx6bWEgYWxvbmUiCisJICogZm9ybWF0OgorCSAqCisJICogJCBjYXQgL2Jpbi9scyB8IGx6bWEgfCB4eGQgfCBoZWFkIC1uIDEKKwkgKiAwMDAwMDAwMDogNWQwMCAwMDgwIDAwZmYgZmZmZiBmZmZmIGZmZmYgZmYwMCAyODE0CisJICoKKwkgKiAgICA1IGJ5dGVzICAgICAgICA4IGJ5dGVzICAgICAgICBuIGJ5dGVzCisJICogPGx6bWFfcGFyYW1zPjx1bmNvbXByZXNzZWRfc2l6ZT48ZGF0YS4uLj4KKwkgKgorCSAqIGx6bWFfcGFyYW1zIGlzIGEgNS1ieXRlIGJsb2IgdGhhdCBoYXMgdG8gYmUgZGVjb2RlZCB0byBleHRyYWN0CisJICogcGFyYW1ldGVycyBvZiB0aGlzIExaTUEgc3RyZWFtLiBUaGUgdW5jb21wcmVzc2VkX3NpemUgZmllbGQgaXMgYW4KKwkgKiB1aW50NjRfdCB2YWx1ZSB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaXplIG9mIHRoZQorCSAqIHVuY29tcHJlc3NlZCBmaWxlLCBvciBVSU5UNjRfTUFYIGlmIHRoaXMgdmFsdWUgaXMgdW5rbm93bi4KKwkgKiBUaGUgPGRhdGEuLi4+IHBhcnQgaXMgdGhlIGFjdHVhbCBsem1hLWNvbXByZXNzZWQgZGF0YSBzdHJlYW0uCisJICoKKwkgKiBOb3cgaGVyZSdzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHN0cmVhbSBpbnNpZGUgdGhlIFpJUFggZmlsZToKKwkgKgorCSAqICQgY2F0IHN0cmVhbV9pbnNpZGVfemlweCB8IHh4ZCB8IGhlYWQgLW4gMQorCSAqIDAwMDAwMDAwOiAwOTE0IDA1MDAgNWQwMCA4MDAwIDAwMDAgMjgxNCAuLi4uIC4uLi4KKwkgKgorCSAqICAyYnl0ZSAgIDJieXRlICAgIDUgYnl0ZXMgICAgIG4gYnl0ZXMKKwkgKiA8bWFnaWMxPjxtYWdpYzI+PGx6bWFfcGFyYW1zPjxkYXRhLi4uPgorCSAqCisJICogVGhpcyBtZWFucyB0aGF0IHRoZSBaSVBYIGZpbGUgY29udGFpbnMgYW4gYWRkaXRpb25hbCBtYWdpYzEgYW5kCisJICogbWFnaWMyIGhlYWRlcnMsIHRoZSBsem1hX3BhcmFtcyBmaWVsZCBjb250YWlucyB0aGUgc2FtZSBwYXJhbWV0ZXIKKwkgKiBzZXQgYXMgaW4gdGhlICJsem1hIGFsb25lIiBmb3JtYXQsIGFuZCB0aGUgPGRhdGEuLi4+IGZpZWxkIGlzIHRoZQorCSAqIHNhbWUgYXMgaW4gdGhlICJsem1hIGFsb25lIiBmb3JtYXQgYXMgd2VsbC4gTm90ZSB0aGF0IGFsc28gdGhlIHppcHgKKwkgKiBmb3JtYXQgaXMgbWlzc2luZyB0aGUgdW5jb21wcmVzc2VkX3NpemUgZmllbGQuCisJICoKKwkgKiBTbywgaW4gb3JkZXIgdG8gdXNlIHRoZSAibHptYSBhbG9uZSIgZGVjb2RlciBmb3IgdGhlIHppcHggbHptYQorCSAqIHN0cmVhbSwgd2Ugc2ltcGx5IG5lZWQgdG8gc2h1ZmZsZSBhcm91bmQgc29tZSBmaWVsZHMsIHByZXBhcmUgYSBuZXcKKwkgKiBsem1hIGFsb25lIGhlYWRlciwgZmVlZCBpdCBpbnRvIGx6bWEgYWxvbmUgZGVjb2RlciBzbyBpdCB3aWxsCisJICogaW5pdGlhbGl6ZSBpdHNlbGYgcHJvcGVybHksIGFuZCB0aGVuIHdlIGNhbiBzdGFydCBmZWVkaW5nIG5vcm1hbAorCSAqIHppcHggbHptYSBzdHJlYW0gaW50byB0aGUgZGVjb2Rlci4KKwkgKi8KKworCS8qIFJlYWQgbWFnaWMxLG1hZ2ljMixsem1hX3BhcmFtcyBmcm9tIHRoZSBaSVBYIHN0cmVhbS4gKi8KKwlpZigocCA9IF9fYXJjaGl2ZV9yZWFkX2FoZWFkKGEsIDksIE5VTEwpKSA9PSBOVUxMKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIlRydW5jYXRlZCBsem1hIGRhdGEiKTsKKwkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKwl9CisKKwlpZihwWzJdICE9IDB4MDUgfHwgcFszXSAhPSAweDAwKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIkludmFsaWQgbHptYSBkYXRhIik7CisJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJfQorCisJLyogUHJlcGFyZSBhbiBsem1hIGFsb25lIGhlYWRlcjogY29weSB0aGUgbHptYV9wYXJhbXMgYmxvYiBpbnRvCisJICogYSBwcm9wZXIgcGxhY2UgaW50byB0aGUgbHptYSBhbG9uZSBoZWFkZXIuICovCisJbWVtY3B5KCZhbG9uZV9oZWFkZXIuYnl0ZXNbMF0sIHAgKyA0LCA1KTsKKworCS8qIEluaXRpYWxpemUgdGhlICd1bmNvbXByZXNzZWQgc2l6ZScgZmllbGQgdG8gdW5rbm93bjsgd2UnbGwgbWFudWFsbHkKKwkgKiBtb25pdG9yIGhvdyBtYW55IGJ5dGVzIHRoZXJlIGFyZSBzdGlsbCB0byBiZSB1bmNvbXByZXNzZWQuICovCisJYWxvbmVfaGVhZGVyLnVuY29tcHJlc3NlZF9zaXplID0gVUlOVDY0X01BWDsKKworCWlmKCF6aXAtPnVuY29tcHJlc3NlZF9idWZmZXIpIHsKKwkJemlwLT51bmNvbXByZXNzZWRfYnVmZmVyX3NpemUgPSAyNTYgKiAxMDI0OworCQl6aXAtPnVuY29tcHJlc3NlZF9idWZmZXIgPQorCQkJKHVpbnQ4X3QqKSBtYWxsb2MoemlwLT51bmNvbXByZXNzZWRfYnVmZmVyX3NpemUpOworCisJCWlmICh6aXAtPnVuY29tcHJlc3NlZF9idWZmZXIgPT0gTlVMTCkgeworCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEVOT01FTSwKKwkJCSAgICAiTm8gbWVtb3J5IGZvciBsem1hIGRlY29tcHJlc3Npb24iKTsKKwkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJCX0KKwl9CisKKwl6aXAtPnppcHhfbHptYV9zdHJlYW0ubmV4dF9pbiA9ICh2b2lkKikgJmFsb25lX2hlYWRlcjsKKwl6aXAtPnppcHhfbHptYV9zdHJlYW0uYXZhaWxfaW4gPSBzaXplb2YoYWxvbmVfaGVhZGVyKTsKKwl6aXAtPnppcHhfbHptYV9zdHJlYW0udG90YWxfaW4gPSAwOworCXppcC0+emlweF9sem1hX3N0cmVhbS5uZXh0X291dCA9IHppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcjsKKwl6aXAtPnppcHhfbHptYV9zdHJlYW0uYXZhaWxfb3V0ID0gemlwLT51bmNvbXByZXNzZWRfYnVmZmVyX3NpemU7CisJemlwLT56aXB4X2x6bWFfc3RyZWFtLnRvdGFsX291dCA9IDA7CisKKwkvKiBGZWVkIG9ubHkgdGhlIGhlYWRlciBpbnRvIHRoZSBsem1hIGFsb25lIGRlY29kZXIuIFRoaXMgd2lsbAorCSAqIGVmZmVjdGl2ZWx5IGluaXRpYWxpemUgdGhlIGRlY29kZXIsIGFuZCB3aWxsIG5vdCBwcm9kdWNlIGFueQorCSAqIG91dHB1dCBieXRlcyB5ZXQuICovCisJciA9IGx6bWFfY29kZSgmemlwLT56aXB4X2x6bWFfc3RyZWFtLCBMWk1BX1JVTik7CisJaWYgKHIgIT0gTFpNQV9PSykgeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19QUk9HUkFNTUVSLAorCQkgICAgImx6bWEgc3RyZWFtIGluaXRpYWxpemF0aW9uIGVycm9yIik7CisJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCX0KKworCS8qIFdlJ3ZlIGFscmVhZHkgY29uc3VtZWQgc29tZSBieXRlcywgc28gdGFrZSB0aGlzIGludG8gYWNjb3VudC4gKi8KKwlfX2FyY2hpdmVfcmVhZF9jb25zdW1lKGEsIDkpOworCXppcC0+ZW50cnlfYnl0ZXNfcmVtYWluaW5nIC09IDk7CisJemlwLT5lbnRyeV9jb21wcmVzc2VkX2J5dGVzX3JlYWQgKz0gOTsKKworCXppcC0+ZGVjb21wcmVzc19pbml0ID0gMTsKKwlyZXR1cm4gKEFSQ0hJVkVfT0spOworfQorCitzdGF0aWMgaW50Cit6aXBfcmVhZF9kYXRhX3ppcHhfeHooc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgY29uc3Qgdm9pZCAqKmJ1ZmYsCisJc2l6ZV90ICpzaXplLCBpbnQ2NF90ICpvZmZzZXQpCit7CisJc3RydWN0IHppcCogemlwID0gKHN0cnVjdCB6aXAgKikoYS0+Zm9ybWF0LT5kYXRhKTsKKwlpbnQgcmV0OworCWx6bWFfcmV0IGx6X3JldDsKKwljb25zdCB2b2lkKiBjb21wcmVzc2VkX2J1ZjsKKwlzc2l6ZV90IGJ5dGVzX2F2YWlsLCBpbl9ieXRlcywgdG9fY29uc3VtZSA9IDA7CisKKwkodm9pZCkgb2Zmc2V0OyAvKiBVTlVTRUQgKi8KKworCS8qIEluaXRpYWxpemUgZGVjb21wcmVzc29yIGlmIG5vdCB5ZXQgaW5pdGlhbGl6ZWQuICovCisJaWYgKCF6aXAtPmRlY29tcHJlc3NfaW5pdCkgeworCQlyZXQgPSB6aXB4X3h6X2luaXQoYSwgemlwKTsKKwkJaWYgKHJldCAhPSBBUkNISVZFX09LKQorCQkJcmV0dXJuIChyZXQpOworCX0KKworCWNvbXByZXNzZWRfYnVmID0gX19hcmNoaXZlX3JlYWRfYWhlYWQoYSwgMSwgJmJ5dGVzX2F2YWlsKTsKKwlpZiAoYnl0ZXNfYXZhaWwgPCAwKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIlRydW5jYXRlZCB4eiBmaWxlIGJvZHkiKTsKKwkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKwl9CisKKwlpbl9ieXRlcyA9IHppcG1pbih6aXAtPmVudHJ5X2J5dGVzX3JlbWFpbmluZywgYnl0ZXNfYXZhaWwpOworCXppcC0+emlweF9sem1hX3N0cmVhbS5uZXh0X2luID0gY29tcHJlc3NlZF9idWY7CisJemlwLT56aXB4X2x6bWFfc3RyZWFtLmF2YWlsX2luID0gaW5fYnl0ZXM7CisJemlwLT56aXB4X2x6bWFfc3RyZWFtLnRvdGFsX2luID0gMDsKKwl6aXAtPnppcHhfbHptYV9zdHJlYW0ubmV4dF9vdXQgPSB6aXAtPnVuY29tcHJlc3NlZF9idWZmZXI7CisJemlwLT56aXB4X2x6bWFfc3RyZWFtLmF2YWlsX291dCA9IHppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcl9zaXplOworCXppcC0+emlweF9sem1hX3N0cmVhbS50b3RhbF9vdXQgPSAwOworCisJLyogUGVyZm9ybSB0aGUgZGVjb21wcmVzc2lvbi4gKi8KKwlsel9yZXQgPSBsem1hX2NvZGUoJnppcC0+emlweF9sem1hX3N0cmVhbSwgTFpNQV9SVU4pOworCXN3aXRjaChsel9yZXQpIHsKKwkJY2FzZSBMWk1BX0RBVEFfRVJST1I6CisJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19NSVNDLAorCQkJICAgICJ4eiBkYXRhIGVycm9yIChlcnJvciAlZCkiLCAoaW50KSBsel9yZXQpOworCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKworCQljYXNlIExaTUFfTk9fQ0hFQ0s6CisJCWNhc2UgTFpNQV9PSzoKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19NSVNDLAorCQkJICAgICJ4eiB1bmtub3duIGVycm9yICVkIiwgKGludCkgbHpfcmV0KTsKKwkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisKKwkJY2FzZSBMWk1BX1NUUkVBTV9FTkQ6CisJCQlsem1hX2VuZCgmemlwLT56aXB4X2x6bWFfc3RyZWFtKTsKKwkJCXppcC0+emlweF9sem1hX3ZhbGlkID0gMDsKKworCQkJaWYoKGludDY0X3QpIHppcC0+emlweF9sem1hX3N0cmVhbS50b3RhbF9pbiAhPQorCQkJICAgIHppcC0+ZW50cnlfYnl0ZXNfcmVtYWluaW5nKQorCQkJeworCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJCSAgICBBUkNISVZFX0VSUk5PX01JU0MsCisJCQkJICAgICJ4eiBwcmVtYXR1cmUgZW5kIG9mIHN0cmVhbSIpOworCQkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJCQl9CisKKwkJCXppcC0+ZW5kX29mX2VudHJ5ID0gMTsKKwkJCWJyZWFrOworCX0KKworCXRvX2NvbnN1bWUgPSB6aXAtPnppcHhfbHptYV9zdHJlYW0udG90YWxfaW47CisKKwlfX2FyY2hpdmVfcmVhZF9jb25zdW1lKGEsIHRvX2NvbnN1bWUpOworCXppcC0+ZW50cnlfYnl0ZXNfcmVtYWluaW5nIC09IHRvX2NvbnN1bWU7CisJemlwLT5lbnRyeV9jb21wcmVzc2VkX2J5dGVzX3JlYWQgKz0gdG9fY29uc3VtZTsKKwl6aXAtPmVudHJ5X3VuY29tcHJlc3NlZF9ieXRlc19yZWFkICs9IHppcC0+emlweF9sem1hX3N0cmVhbS50b3RhbF9vdXQ7CisKKwkqc2l6ZSA9IHppcC0+emlweF9sem1hX3N0cmVhbS50b3RhbF9vdXQ7CisJKmJ1ZmYgPSB6aXAtPnVuY29tcHJlc3NlZF9idWZmZXI7CisKKwlyZXQgPSBjb25zdW1lX29wdGlvbmFsX21hcmtlcihhLCB6aXApOworCWlmIChyZXQgIT0gQVJDSElWRV9PSykKKwkJcmV0dXJuIChyZXQpOworCisJcmV0dXJuIChBUkNISVZFX09LKTsKK30KKworc3RhdGljIGludAoremlwX3JlYWRfZGF0YV96aXB4X2x6bWFfYWxvbmUoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgY29uc3Qgdm9pZCAqKmJ1ZmYsCisgICAgc2l6ZV90ICpzaXplLCBpbnQ2NF90ICpvZmZzZXQpCit7CisJc3RydWN0IHppcCogemlwID0gKHN0cnVjdCB6aXAgKikoYS0+Zm9ybWF0LT5kYXRhKTsKKwlpbnQgcmV0OworCWx6bWFfcmV0IGx6X3JldDsKKwljb25zdCB2b2lkKiBjb21wcmVzc2VkX2J1ZjsKKwlzc2l6ZV90IGJ5dGVzX2F2YWlsLCBpbl9ieXRlcywgdG9fY29uc3VtZTsKKworCSh2b2lkKSBvZmZzZXQ7IC8qIFVOVVNFRCAqLworCisJLyogSW5pdGlhbGl6ZSBkZWNvbXByZXNzb3IgaWYgbm90IHlldCBpbml0aWFsaXplZC4gKi8KKwlpZiAoIXppcC0+ZGVjb21wcmVzc19pbml0KSB7CisJCXJldCA9IHppcHhfbHptYV9hbG9uZV9pbml0KGEsIHppcCk7CisJCWlmIChyZXQgIT0gQVJDSElWRV9PSykKKwkJCXJldHVybiAocmV0KTsKKwl9CisKKwkvKiBGZXRjaCBtb3JlIGNvbXByZXNzZWQgZGF0YS4gVGhlIHNhbWUgbm90ZSBhcyBpbiBkZWZsYXRlIGhhbmRsZXIKKwkgKiBhcHBsaWVzIGhlcmUgYXMgd2VsbDoKKwkgKgorCSAqIE5vdGU6ICcxJyBoZXJlIGlzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLiBSZWNhbGwgdGhhdCB0aGUKKwkgKiBkZWNvbXByZXNzaW9uIGxheWVyIHJldHVybnMgYSBjb3VudCBvZiBhdmFpbGFibGUgYnl0ZXM7IGFza2luZyBmb3IKKwkgKiBtb3JlIHRoYW4gdGhhdCBmb3JjZXMgdGhlIGRlY29tcHJlc3NvciB0byBjb21iaW5lIHJlYWRzIGJ5IGNvcHlpbmcKKwkgKiBkYXRhLgorCSAqLworCWNvbXByZXNzZWRfYnVmID0gX19hcmNoaXZlX3JlYWRfYWhlYWQoYSwgMSwgJmJ5dGVzX2F2YWlsKTsKKwlpZiAoYnl0ZXNfYXZhaWwgPCAwKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIlRydW5jYXRlZCBsem1hIGZpbGUgYm9keSIpOworCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworCX0KKworCS8qIFNldCBkZWNvbXByZXNzb3IgcGFyYW1ldGVycy4gKi8KKwlpbl9ieXRlcyA9IHppcG1pbih6aXAtPmVudHJ5X2J5dGVzX3JlbWFpbmluZywgYnl0ZXNfYXZhaWwpOworCisJemlwLT56aXB4X2x6bWFfc3RyZWFtLm5leHRfaW4gPSBjb21wcmVzc2VkX2J1ZjsKKwl6aXAtPnppcHhfbHptYV9zdHJlYW0uYXZhaWxfaW4gPSBpbl9ieXRlczsKKwl6aXAtPnppcHhfbHptYV9zdHJlYW0udG90YWxfaW4gPSAwOworCXppcC0+emlweF9sem1hX3N0cmVhbS5uZXh0X291dCA9IHppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcjsKKwl6aXAtPnppcHhfbHptYV9zdHJlYW0uYXZhaWxfb3V0ID0KKwkJLyogVGhlc2UgbHptYV9hbG9uZSBzdHJlYW1zIGxhY2sgZW5kIG9mIHN0cmVhbSBtYXJrZXIsIHNvIGxldCdzCisJCSAqIG1ha2Ugc3VyZSB0aGUgdW5wYWNrZXIgd29uJ3QgdHJ5IHRvIHVucGFjayBtb3JlIHRoYW4gaXQncworCQkgKiBzdXBwb3NlZCB0by4gKi8KKwkJemlwbWluKChpbnQ2NF90KSB6aXAtPnVuY29tcHJlc3NlZF9idWZmZXJfc2l6ZSwKKwkJICAgIHppcC0+ZW50cnktPnVuY29tcHJlc3NlZF9zaXplIC0KKwkJICAgIHppcC0+ZW50cnlfdW5jb21wcmVzc2VkX2J5dGVzX3JlYWQpOworCXppcC0+emlweF9sem1hX3N0cmVhbS50b3RhbF9vdXQgPSAwOworCisJLyogUGVyZm9ybSB0aGUgZGVjb21wcmVzc2lvbi4gKi8KKwlsel9yZXQgPSBsem1hX2NvZGUoJnppcC0+emlweF9sem1hX3N0cmVhbSwgTFpNQV9SVU4pOworCXN3aXRjaChsel9yZXQpIHsKKwkJY2FzZSBMWk1BX0RBVEFfRVJST1I6CisJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19NSVNDLAorCQkJICAgICJsem1hIGRhdGEgZXJyb3IgKGVycm9yICVkKSIsIChpbnQpIGx6X3JldCk7CisJCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworCisJCS8qIFRoaXMgY2FzZSBpcyBvcHRpb25hbCBpbiBsem1hIGFsb25lIGZvcm1hdC4gSXQgY2FuIGhhcHBlbiwKKwkJICogYnV0IG1vc3Qgb2YgdGhlIGZpbGVzIGRvbid0IGhhdmUgaXQuIChHaXRIdWIgIzEyNTcpICovCisJCWNhc2UgTFpNQV9TVFJFQU1fRU5EOgorCQkJbHptYV9lbmQoJnppcC0+emlweF9sem1hX3N0cmVhbSk7CisJCQl6aXAtPnppcHhfbHptYV92YWxpZCA9IDA7CisJCQlpZigoaW50NjRfdCkgemlwLT56aXB4X2x6bWFfc3RyZWFtLnRvdGFsX2luICE9CisJCQkgICAgemlwLT5lbnRyeV9ieXRlc19yZW1haW5pbmcpCisJCQl7CisJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkJICAgIEFSQ0hJVkVfRVJSTk9fTUlTQywKKwkJCQkgICAgImx6bWEgYWxvbmUgcHJlbWF0dXJlIGVuZCBvZiBzdHJlYW0iKTsKKwkJCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworCQkJfQorCisJCQl6aXAtPmVuZF9vZl9lbnRyeSA9IDE7CisJCQlicmVhazsKKworCQljYXNlIExaTUFfT0s6CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fTUlTQywKKwkJCSAgICAibHptYSB1bmtub3duIGVycm9yICVkIiwgKGludCkgbHpfcmV0KTsKKwkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJfQorCisJdG9fY29uc3VtZSA9IHppcC0+emlweF9sem1hX3N0cmVhbS50b3RhbF9pbjsKKworCS8qIFVwZGF0ZSBwb2ludGVycy4gKi8KKwlfX2FyY2hpdmVfcmVhZF9jb25zdW1lKGEsIHRvX2NvbnN1bWUpOworCXppcC0+ZW50cnlfYnl0ZXNfcmVtYWluaW5nIC09IHRvX2NvbnN1bWU7CisJemlwLT5lbnRyeV9jb21wcmVzc2VkX2J5dGVzX3JlYWQgKz0gdG9fY29uc3VtZTsKKwl6aXAtPmVudHJ5X3VuY29tcHJlc3NlZF9ieXRlc19yZWFkICs9IHppcC0+emlweF9sem1hX3N0cmVhbS50b3RhbF9vdXQ7CisKKwlpZih6aXAtPmVudHJ5X2J5dGVzX3JlbWFpbmluZyA9PSAwKSB7CisJCXppcC0+ZW5kX29mX2VudHJ5ID0gMTsKKwl9CisKKwkvKiBSZXR1cm4gdmFsdWVzLiAqLworCSpzaXplID0gemlwLT56aXB4X2x6bWFfc3RyZWFtLnRvdGFsX291dDsKKwkqYnVmZiA9IHppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcjsKKworCS8qIEJlaGF2ZSB0aGUgc2FtZSB3YXkgYXMgZHVyaW5nIGRlZmxhdGUgZGVjb21wcmVzc2lvbi4gKi8KKwlyZXQgPSBjb25zdW1lX29wdGlvbmFsX21hcmtlcihhLCB6aXApOworCWlmIChyZXQgIT0gQVJDSElWRV9PSykKKwkJcmV0dXJuIChyZXQpOworCisJLyogRnJlZSBsem1hIGRlY29kZXIgaGFuZGxlIGJlY2F1c2Ugd2UnbGwgbm8gbG9uZ2VyIG5lZWQgaXQuICovCisJaWYoemlwLT5lbmRfb2ZfZW50cnkpIHsKKwkJbHptYV9lbmQoJnppcC0+emlweF9sem1hX3N0cmVhbSk7CisJCXppcC0+emlweF9sem1hX3ZhbGlkID0gMDsKKwl9CisKKwkvKiBJZiB3ZSdyZSBoZXJlLCB0aGVuIHdlJ3JlIGdvb2QhICovCisJcmV0dXJuIChBUkNISVZFX09LKTsKK30KKyNlbmRpZiAvKiBIQVZFX0xaTUFfSCAmJiBIQVZFX0xJQkxaTUEgKi8KKworc3RhdGljIGludAoremlweF9wcG1kOF9pbml0KHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCB6aXAgKnppcCkKK3sKKwljb25zdCB2b2lkKiBwOworCXVpbnQzMl90IHZhbDsKKwl1aW50MzJfdCBvcmRlcjsKKwl1aW50MzJfdCBtZW07CisJdWludDMyX3QgcmVzdG9yZV9tZXRob2Q7CisKKwkvKiBSZW1vdmUgcHJldmlvdXMgZGVjb21wcmVzc2lvbiBjb250ZXh0IGlmIGl0IGV4aXN0cy4gKi8KKwlpZih6aXAtPnBwbWQ4X3ZhbGlkKSB7CisJCV9fYXJjaGl2ZV9wcG1kOF9mdW5jdGlvbnMuUHBtZDhfRnJlZSgmemlwLT5wcG1kOCk7CisJCXppcC0+cHBtZDhfdmFsaWQgPSAwOworCX0KKworCS8qIENyZWF0ZSBhIG5ldyBkZWNvbXByZXNzaW9uIGNvbnRleHQuICovCisJX19hcmNoaXZlX3BwbWQ4X2Z1bmN0aW9ucy5QcG1kOF9Db25zdHJ1Y3QoJnppcC0+cHBtZDgpOworCXppcC0+cHBtZDhfc3RyZWFtX2ZhaWxlZCA9IDA7CisKKwkvKiBTZXR1cCBmdW5jdGlvbiBwb2ludGVycyByZXF1aXJlZCBieSBQcG1kOCBkZWNvbXByZXNzb3IuIFRoZQorCSAqICdwcG1kX3JlYWQnIGZ1bmN0aW9uIHdpbGwgZmVlZCBuZXcgYnl0ZXMgdG8gdGhlIGRlY29tcHJlc3NvciwKKwkgKiBhbmQgd2lsbCBpbmNyZW1lbnQgdGhlICd6aXAtPnppcHhfcHBtZF9yZWFkX2NvbXByZXNzZWQnIGNvdW50ZXIuICovCisJemlwLT5wcG1kOC5TdHJlYW0uSW4gPSAmemlwLT56aXB4X3BwbWRfc3RyZWFtOworCXppcC0+emlweF9wcG1kX3N0cmVhbS5hID0gYTsKKwl6aXAtPnppcHhfcHBtZF9zdHJlYW0uUmVhZCA9ICZwcG1kX3JlYWQ7CisKKwkvKiBSZXNldCBudW1iZXIgb2YgcmVhZCBieXRlcyB0byAwLiAqLworCXppcC0+emlweF9wcG1kX3JlYWRfY29tcHJlc3NlZCA9IDA7CisKKwkvKiBSZWFkIFBwbWQ4IGhlYWRlciAoMiBieXRlcykuICovCisJcCA9IF9fYXJjaGl2ZV9yZWFkX2FoZWFkKGEsIDIsIE5VTEwpOworCWlmKCFwKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIlRydW5jYXRlZCBmaWxlIGRhdGEgaW4gUFBNZDggc3RyZWFtIik7CisJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJfQorCV9fYXJjaGl2ZV9yZWFkX2NvbnN1bWUoYSwgMik7CisKKwkvKiBEZWNvZGUgdGhlIHN0cmVhbSdzIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMuICovCisJdmFsID0gYXJjaGl2ZV9sZTE2ZGVjKHApOworCW9yZGVyID0gKHZhbCAmIDE1KSArIDE7CisJbWVtID0gKCh2YWwgPj4gNCkgJiAweGZmKSArIDE7CisJcmVzdG9yZV9tZXRob2QgPSAodmFsID4+IDEyKTsKKworCWlmKG9yZGVyIDwgMiB8fCByZXN0b3JlX21ldGhvZCA+IDIpIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCSAgICAiSW52YWxpZCBwYXJhbWV0ZXIgc2V0IGluIFBQTWQ4IHN0cmVhbSAob3JkZXI9JWQsICIKKwkJICAgICJyZXN0b3JlPSVkKSIsIG9yZGVyLCByZXN0b3JlX21ldGhvZCk7CisJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOworCX0KKworCS8qIEFsbG9jYXRlIHRoZSBtZW1vcnkgbmVlZGVkIHRvIHByb3Blcmx5IGRlY29tcHJlc3MgdGhlIGZpbGUuICovCisJaWYoIV9fYXJjaGl2ZV9wcG1kOF9mdW5jdGlvbnMuUHBtZDhfQWxsb2MoJnppcC0+cHBtZDgsIG1lbSA8PCAyMCkpIHsKKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEVOT01FTSwKKwkJICAgICJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBQUE1kOCBzdHJlYW06ICVkIGJ5dGVzIiwKKwkJICAgIG1lbSA8PCAyMCk7CisJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJfQorCisJLyogU2lnbmFsIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIHRvIHJlbGVhc2UgUHBtZDggY29udGV4dCBpbiB0aGUKKwkgKiBjbGVhbnVwIHBoYXNlLiAqLworCXppcC0+cHBtZDhfdmFsaWQgPSAxOworCisJLyogUGVyZm9ybSBmdXJ0aGVyIFBwbWQ4IGluaXRpYWxpemF0aW9uLiAqLworCWlmKCFfX2FyY2hpdmVfcHBtZDhfZnVuY3Rpb25zLlBwbWQ4X1JhbmdlRGVjX0luaXQoJnppcC0+cHBtZDgpKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX1BST0dSQU1NRVIsCisJCSAgICAiUFBNZDggc3RyZWFtIHJhbmdlIGRlY29kZXIgaW5pdGlhbGl6YXRpb24gZXJyb3IiKTsKKwkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKwl9CisKKwlfX2FyY2hpdmVfcHBtZDhfZnVuY3Rpb25zLlBwbWQ4X0luaXQoJnppcC0+cHBtZDgsIG9yZGVyLAorCSAgICByZXN0b3JlX21ldGhvZCk7CisKKwkvKiBBbGxvY2F0ZSB0aGUgYnVmZmVyIHRoYXQgd2lsbCBob2xkIHVuY29tcHJlc3NlZCBkYXRhLiAqLworCWZyZWUoemlwLT51bmNvbXByZXNzZWRfYnVmZmVyKTsKKworCXppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcl9zaXplID0gMjU2ICogMTAyNDsKKwl6aXAtPnVuY29tcHJlc3NlZF9idWZmZXIgPQorCSAgICAodWludDhfdCopIG1hbGxvYyh6aXAtPnVuY29tcHJlc3NlZF9idWZmZXJfc2l6ZSk7CisKKwlpZih6aXAtPnVuY29tcHJlc3NlZF9idWZmZXIgPT0gTlVMTCkgeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgRU5PTUVNLAorCQkgICAgIk5vIG1lbW9yeSBmb3IgUFBNZDggZGVjb21wcmVzc2lvbiIpOworCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwkvKiBQcG1kOCBpbml0aWFsaXphdGlvbiBpcyBkb25lLiAqLworCXppcC0+ZGVjb21wcmVzc19pbml0ID0gMTsKKworCS8qIFdlJ3ZlIGFscmVhZHkgcmVhZCAyIGJ5dGVzIGluIHRoZSBvdXRwdXQgc3RyZWFtLiBBZGRpdGlvbmFsbHksCisJICogUHBtZDggaW5pdGlhbGl6YXRpb24gY29kZSBjb3VsZCByZWFkIHNvbWUgZGF0YSBhcyB3ZWxsLiBTbyB3ZQorCSAqIGFyZSBhZHZhbmNpbmcgdGhlIHN0cmVhbSBieSAyIGJ5dGVzIHBsdXMgd2hhdGV2ZXIgbnVtYmVyIG9mCisJICogYnl0ZXMgUHBtZDggaW5pdCBmdW5jdGlvbiB1c2VkLiAqLworCXppcC0+ZW50cnlfY29tcHJlc3NlZF9ieXRlc19yZWFkICs9IDIgKyB6aXAtPnppcHhfcHBtZF9yZWFkX2NvbXByZXNzZWQ7CisKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworc3RhdGljIGludAoremlwX3JlYWRfZGF0YV96aXB4X3BwbWQoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgY29uc3Qgdm9pZCAqKmJ1ZmYsCisgICAgc2l6ZV90ICpzaXplLCBpbnQ2NF90ICpvZmZzZXQpCit7CisJc3RydWN0IHppcCogemlwID0gKHN0cnVjdCB6aXAgKikoYS0+Zm9ybWF0LT5kYXRhKTsKKwlpbnQgcmV0OworCXNpemVfdCBjb25zdW1lZF9ieXRlcyA9IDA7CisJc3NpemVfdCBieXRlc19hdmFpbCA9IDA7CisKKwkodm9pZCkgb2Zmc2V0OyAvKiBVTlVTRUQgKi8KKworCS8qIElmIHdlJ3JlIGhlcmUgZm9yIHRoZSBmaXJzdCB0aW1lLCBpbml0aWFsaXplIFBwbWQ4IGRlY29tcHJlc3Npb24KKwkgKiBjb250ZXh0IGZpcnN0LiAqLworCWlmKCF6aXAtPmRlY29tcHJlc3NfaW5pdCkgeworCQlyZXQgPSB6aXB4X3BwbWQ4X2luaXQoYSwgemlwKTsKKwkJaWYocmV0ICE9IEFSQ0hJVkVfT0spCisJCQlyZXR1cm4gcmV0OworCX0KKworCS8qIEZldGNoIGZvciBtb3JlIGRhdGEuIFdlJ3JlIHJlYWRpbmcgMSBieXRlIGhlcmUsIGJ1dCBsaWJhcmNoaXZlCisJICogc2hvdWxkIHByZWZldGNoIG1vcmUgYnl0ZXMuICovCisJKHZvaWQpIF9fYXJjaGl2ZV9yZWFkX2FoZWFkKGEsIDEsICZieXRlc19hdmFpbCk7CisJaWYoYnl0ZXNfYXZhaWwgPCAwKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIlRydW5jYXRlZCBQUE1kOCBmaWxlIGJvZHkiKTsKKwkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKwl9CisKKwkvKiBUaGlzIGNvdW50ZXIgd2lsbCBiZSB1cGRhdGVkIGluc2lkZSBwcG1kX3JlYWQoKSwgd2hpY2ggYXQgb25lCisJICogcG9pbnQgd2lsbCBiZSBjYWxsZWQgYnkgUHBtZDhfRGVjb2RlU3ltYm9sLiAqLworCXppcC0+emlweF9wcG1kX3JlYWRfY29tcHJlc3NlZCA9IDA7CisKKwkvKiBEZWNvbXByZXNzaW9uIGxvb3AuICovCisJZG8geworCQlpbnQgc3ltID0gX19hcmNoaXZlX3BwbWQ4X2Z1bmN0aW9ucy5QcG1kOF9EZWNvZGVTeW1ib2woCisJCSAgICAmemlwLT5wcG1kOCk7CisJCWlmKHN5bSA8IDApIHsKKwkJCXppcC0+ZW5kX29mX2VudHJ5ID0gMTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogVGhpcyBmaWVsZCBpcyBzZXQgYnkgcHBtZF9yZWFkKCkgd2hlbiB0aGVyZSB3YXMgbm8gbW9yZSBkYXRhCisJCSAqIHRvIGJlIHJlYWQuICovCisJCWlmKHppcC0+cHBtZDhfc3RyZWFtX2ZhaWxlZCkgeworCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJCSAgICAiVHJ1bmNhdGVkIFBQTWQ4IGZpbGUgYm9keSIpOworCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKwkJfQorCisJCXppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcltjb25zdW1lZF9ieXRlc10gPSAodWludDhfdCkgc3ltOworCQkrK2NvbnN1bWVkX2J5dGVzOworCX0gd2hpbGUoY29uc3VtZWRfYnl0ZXMgPCB6aXAtPnVuY29tcHJlc3NlZF9idWZmZXJfc2l6ZSk7CisKKwkvKiBVcGRhdGUgcG9pbnRlcnMgZm9yIGxpYmFyY2hpdmUuICovCisJKmJ1ZmYgPSB6aXAtPnVuY29tcHJlc3NlZF9idWZmZXI7CisJKnNpemUgPSBjb25zdW1lZF9ieXRlczsKKworCS8qIFVwZGF0ZSBwb2ludGVycyBzbyB3ZSBjYW4gY29udGludWUgZGVjb21wcmVzc2lvbiBpbiBhbm90aGVyIGNhbGwuICovCisJemlwLT5lbnRyeV9ieXRlc19yZW1haW5pbmcgLT0gemlwLT56aXB4X3BwbWRfcmVhZF9jb21wcmVzc2VkOworCXppcC0+ZW50cnlfY29tcHJlc3NlZF9ieXRlc19yZWFkICs9IHppcC0+emlweF9wcG1kX3JlYWRfY29tcHJlc3NlZDsKKwl6aXAtPmVudHJ5X3VuY29tcHJlc3NlZF9ieXRlc19yZWFkICs9IGNvbnN1bWVkX2J5dGVzOworCisJLyogSWYgd2UncmUgYXQgdGhlIGVuZCBvZiBzdHJlYW0sIGRlaW5pdGlhbGl6ZSBQcG1kOCBjb250ZXh0LiAqLworCWlmKHppcC0+ZW5kX29mX2VudHJ5KSB7CisJCV9fYXJjaGl2ZV9wcG1kOF9mdW5jdGlvbnMuUHBtZDhfRnJlZSgmemlwLT5wcG1kOCk7CisJCXppcC0+cHBtZDhfdmFsaWQgPSAwOworCX0KKworCS8qIFNlZWsgZm9yIG9wdGlvbmFsIG1hcmtlciwgc2FtZSB3YXkgYXMgaW4gZWFjaCB6aXAgZW50cnkuICovCisJcmV0ID0gY29uc3VtZV9vcHRpb25hbF9tYXJrZXIoYSwgemlwKTsKKwlpZiAocmV0ICE9IEFSQ0hJVkVfT0spCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworI2lmZGVmIEhBVkVfQlpMSUJfSAorc3RhdGljIGludAoremlweF9iemlwMl9pbml0KHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCB6aXAgKnppcCkKK3sKKwlpbnQgcjsKKworCS8qIERlYWxsb2NhdGUgYWxyZWFkeSBleGlzdGluZyBCWjIgZGVjb21wcmVzc2lvbiBjb250ZXh0IGlmIGl0CisJICogZXhpc3RzLiAqLworCWlmKHppcC0+YnpzdHJlYW1fdmFsaWQpIHsKKwkJQloyX2J6RGVjb21wcmVzc0VuZCgmemlwLT5ienN0cmVhbSk7CisJCXppcC0+YnpzdHJlYW1fdmFsaWQgPSAwOworCX0KKworCS8qIEFsbG9jYXRlIGEgbmV3IEJaMiBkZWNvbXByZXNzaW9uIGNvbnRleHQuICovCisJbWVtc2V0KCZ6aXAtPmJ6c3RyZWFtLCAwLCBzaXplb2YoYnpfc3RyZWFtKSk7CisJciA9IEJaMl9iekRlY29tcHJlc3NJbml0KCZ6aXAtPmJ6c3RyZWFtLCAwLCAxKTsKKwlpZihyICE9IEJaX09LKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCYoYS0+YXJjaGl2ZSksIEFSQ0hJVkVfRVJSTk9fTUlTQywKKwkJICAgICJiemlwMiBpbml0aWFsaXphdGlvbiBmYWlsZWQoJWQpIiwKKwkJICAgIHIpOworCisJCXJldHVybiBBUkNISVZFX0ZBSUxFRDsKKwl9CisKKwkvKiBNYXJrIHRoZSBienN0cmVhbSBmaWVsZCB0byBiZSByZWxlYXNlZCBpbiBjbGVhbnVwIHBoYXNlLiAqLworCXppcC0+YnpzdHJlYW1fdmFsaWQgPSAxOworCisJLyogKFJlKWFsbG9jYXRlIHRoZSBidWZmZXIgdGhhdCB3aWxsIGNvbnRhaW4gZGVjb21wcmVzc2VkIGJ5dGVzLiAqLworCWZyZWUoemlwLT51bmNvbXByZXNzZWRfYnVmZmVyKTsKKworCXppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcl9zaXplID0gMjU2ICogMTAyNDsKKwl6aXAtPnVuY29tcHJlc3NlZF9idWZmZXIgPQorCSAgICAodWludDhfdCopIG1hbGxvYyh6aXAtPnVuY29tcHJlc3NlZF9idWZmZXJfc2l6ZSk7CisJaWYgKHppcC0+dW5jb21wcmVzc2VkX2J1ZmZlciA9PSBOVUxMKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBFTk9NRU0sCisJCSAgICAiTm8gbWVtb3J5IGZvciBiemlwMiBkZWNvbXByZXNzaW9uIik7CisJCSAgICByZXR1cm4gQVJDSElWRV9GQVRBTDsKKwl9CisKKwkvKiBJbml0aWFsaXphdGlvbiBkb25lLiAqLworCXppcC0+ZGVjb21wcmVzc19pbml0ID0gMTsKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworc3RhdGljIGludAoremlwX3JlYWRfZGF0YV96aXB4X2J6aXAyKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIGNvbnN0IHZvaWQgKipidWZmLAorICAgIHNpemVfdCAqc2l6ZSwgaW50NjRfdCAqb2Zmc2V0KQoreworCXN0cnVjdCB6aXAgKnppcCA9IChzdHJ1Y3QgemlwICopKGEtPmZvcm1hdC0+ZGF0YSk7CisJc3NpemVfdCBieXRlc19hdmFpbCA9IDAsIGluX2J5dGVzLCB0b19jb25zdW1lOworCWNvbnN0IHZvaWQgKmNvbXByZXNzZWRfYnVmZjsKKwlpbnQgcjsKKwl1aW50NjRfdCB0b3RhbF9vdXQ7CisKKwkodm9pZCkgb2Zmc2V0OyAvKiBVTlVTRUQgKi8KKworCS8qIEluaXRpYWxpemUgZGVjb21wcmVzc2lvbiBjb250ZXh0IGlmIHdlJ3JlIGhlcmUgZm9yIHRoZSBmaXJzdCB0aW1lLiAqLworCWlmKCF6aXAtPmRlY29tcHJlc3NfaW5pdCkgeworCQlyID0gemlweF9iemlwMl9pbml0KGEsIHppcCk7CisJCWlmKHIgIT0gQVJDSElWRV9PSykKKwkJCXJldHVybiByOworCX0KKworCS8qIEZldGNoIG1vcmUgY29tcHJlc3NlZCBieXRlcy4gKi8KKwljb21wcmVzc2VkX2J1ZmYgPSBfX2FyY2hpdmVfcmVhZF9haGVhZChhLCAxLCAmYnl0ZXNfYXZhaWwpOworCWlmKGJ5dGVzX2F2YWlsIDwgMCkgeworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJICAgICJUcnVuY2F0ZWQgYnppcDIgZmlsZSBib2R5Iik7CisJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJfQorCisJaW5fYnl0ZXMgPSB6aXBtaW4oemlwLT5lbnRyeV9ieXRlc19yZW1haW5pbmcsIGJ5dGVzX2F2YWlsKTsKKwlpZihpbl9ieXRlcyA8IDEpIHsKKwkJLyogbGliYnoyIGRvZXNuJ3QgY29tcGxhaW4gd2hlbiBjYWxsZXIgZmVlZHMgYXZhaWxfaW4gPT0gMC4KKwkJICogSXQgd2lsbCBhY3R1YWxseSByZXR1cm4gc3VjY2VzcyBpbiB0aGlzIGNhc2UsIHdoaWNoIGlzCisJCSAqIHVuZGVzaXJhYmxlLiBUaGlzIGlzIHdoeSB3ZSBuZWVkIHRvIG1ha2UgdGhpcyBjaGVjaworCQkgKiBtYW51YWxseS4gKi8KKworCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKKwkJICAgICJUcnVuY2F0ZWQgYnppcDIgZmlsZSBib2R5Iik7CisJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJfQorCisJLyogU2V0dXAgYnVmZmVyIGJvdW5kYXJpZXMuICovCisJemlwLT5ienN0cmVhbS5uZXh0X2luID0gKGNoYXIqKSh1aW50cHRyX3QpIGNvbXByZXNzZWRfYnVmZjsKKwl6aXAtPmJ6c3RyZWFtLmF2YWlsX2luID0gaW5fYnl0ZXM7CisJemlwLT5ienN0cmVhbS50b3RhbF9pbl9oaTMyID0gMDsKKwl6aXAtPmJ6c3RyZWFtLnRvdGFsX2luX2xvMzIgPSAwOworCXppcC0+YnpzdHJlYW0ubmV4dF9vdXQgPSAoY2hhciopIHppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcjsKKwl6aXAtPmJ6c3RyZWFtLmF2YWlsX291dCA9IHppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcl9zaXplOworCXppcC0+YnpzdHJlYW0udG90YWxfb3V0X2hpMzIgPSAwOworCXppcC0+YnpzdHJlYW0udG90YWxfb3V0X2xvMzIgPSAwOworCisJLyogUGVyZm9ybSB0aGUgZGVjb21wcmVzc2lvbi4gKi8KKwlyID0gQloyX2J6RGVjb21wcmVzcygmemlwLT5ienN0cmVhbSk7CisJc3dpdGNoKHIpIHsKKwkJY2FzZSBCWl9TVFJFQU1fRU5EOgorCQkJLyogSWYgd2UncmUgYXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLCBkZWluaXRpYWxpemUgdGhlCisJCQkgKiBkZWNvbXByZXNzaW9uIGNvbnRleHQgbm93LiAqLworCQkJc3dpdGNoKEJaMl9iekRlY29tcHJlc3NFbmQoJnppcC0+YnpzdHJlYW0pKSB7CisJCQkJY2FzZSBCWl9PSzoKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkJCSAgICBBUkNISVZFX0VSUk5PX01JU0MsCisJCQkJCSAgICAiRmFpbGVkIHRvIGNsZWFuIHVwIGJ6aXAyICIKKwkJCQkJICAgICJkZWNvbXByZXNzb3IiKTsKKwkJCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJCQl9CisKKwkJCXppcC0+ZW5kX29mX2VudHJ5ID0gMTsKKwkJCWJyZWFrOworCQljYXNlIEJaX09LOgorCQkJLyogVGhlIGRlY29tcHJlc3NvciBoYXMgc3VjY2Vzc2Z1bGx5IGRlY29kZWQgdGhpcworCQkJICogY2h1bmsgb2YgZGF0YSwgYnV0IG1vcmUgZGF0YSBpcyBzdGlsbCBpbiBxdWV1ZS4gKi8KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fTUlTQywKKwkJCSAgICAiYnppcDIgZGVjb21wcmVzc2lvbiBmYWlsZWQiKTsKKwkJCXJldHVybiBBUkNISVZFX0ZBVEFMOworCX0KKworCS8qIFVwZGF0ZSB0aGUgcG9pbnRlcnMgc28gZGVjb21wcmVzc29yIGNhbiBjb250aW51ZSBkZWNvZGluZy4gKi8KKwl0b19jb25zdW1lID0gemlwLT5ienN0cmVhbS50b3RhbF9pbl9sbzMyOworCV9fYXJjaGl2ZV9yZWFkX2NvbnN1bWUoYSwgdG9fY29uc3VtZSk7CisKKwl0b3RhbF9vdXQgPSAoKHVpbnQ2NF90KSB6aXAtPmJ6c3RyZWFtLnRvdGFsX291dF9oaTMyIDw8IDMyKSArCisJICAgIHppcC0+YnpzdHJlYW0udG90YWxfb3V0X2xvMzI7CisKKwl6aXAtPmVudHJ5X2J5dGVzX3JlbWFpbmluZyAtPSB0b19jb25zdW1lOworCXppcC0+ZW50cnlfY29tcHJlc3NlZF9ieXRlc19yZWFkICs9IHRvX2NvbnN1bWU7CisJemlwLT5lbnRyeV91bmNvbXByZXNzZWRfYnl0ZXNfcmVhZCArPSB0b3RhbF9vdXQ7CisKKwkvKiBHaXZlIGxpYmFyY2hpdmUgaXRzIGR1ZS4gKi8KKwkqc2l6ZSA9IHRvdGFsX291dDsKKwkqYnVmZiA9IHppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcjsKKworCS8qIFNlZWsgZm9yIG9wdGlvbmFsIG1hcmtlciwgbGlrZSBpbiBvdGhlciBlbnRyaWVzLiAqLworCXIgPSBjb25zdW1lX29wdGlvbmFsX21hcmtlcihhLCB6aXApOworCWlmKHIgIT0gQVJDSElWRV9PSykKKwkJcmV0dXJuIHI7CisKKwlyZXR1cm4gQVJDSElWRV9PSzsKK30KKworI2VuZGlmCisKICNpZmRlZiBIQVZFX1pMSUJfSAogc3RhdGljIGludAogemlwX2RlZmxhdGVfaW5pdChzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBzdHJ1Y3QgemlwICp6aXApCkBAIC0xMzcxLDggKzIyNTIsMTAgQEAKIAlpZiAoemlwLT50Y3R4X3ZhbGlkIHx8IHppcC0+Y2N0eF92YWxpZCkgewogCQlpZiAoemlwLT5kZWNyeXB0ZWRfYnl0ZXNfcmVtYWluaW5nIDwgKHNpemVfdClieXRlc19hdmFpbCkgewogCQkJc2l6ZV90IGJ1ZmZfcmVtYWluaW5nID0KLQkJCSAgICAoemlwLT5kZWNyeXB0ZWRfYnVmZmVyICsgemlwLT5kZWNyeXB0ZWRfYnVmZmVyX3NpemUpCi0JCQkgICAgLSAoemlwLT5kZWNyeXB0ZWRfcHRyICsgemlwLT5kZWNyeXB0ZWRfYnl0ZXNfcmVtYWluaW5nKTsKKwkJCSAgICAoemlwLT5kZWNyeXB0ZWRfYnVmZmVyICsKKwkJCSAgICB6aXAtPmRlY3J5cHRlZF9idWZmZXJfc2l6ZSkKKwkJCSAgICAtICh6aXAtPmRlY3J5cHRlZF9wdHIgKworCQkJICAgIHppcC0+ZGVjcnlwdGVkX2J5dGVzX3JlbWFpbmluZyk7CiAKIAkJCWlmIChidWZmX3JlbWFpbmluZyA+IChzaXplX3QpYnl0ZXNfYXZhaWwpCiAJCQkJYnVmZl9yZW1haW5pbmcgPSAoc2l6ZV90KWJ5dGVzX2F2YWlsOwpAQCAtMTM4MywxMiArMjI2NiwxMiBAQAogCQkJCSAgICArIGJ1ZmZfcmVtYWluaW5nKQogCQkJCSAgICAgID4gemlwLT5lbnRyeV9ieXRlc19yZW1haW5pbmcpIHsKIAkJCQkJaWYgKHppcC0+ZW50cnlfYnl0ZXNfcmVtYWluaW5nIDwKLQkJCQkJICAgICAgKGludDY0X3QpemlwLT5kZWNyeXB0ZWRfYnl0ZXNfcmVtYWluaW5nKQorCQkJCQkgICAgKGludDY0X3QpemlwLT5kZWNyeXB0ZWRfYnl0ZXNfcmVtYWluaW5nKQogCQkJCQkJYnVmZl9yZW1haW5pbmcgPSAwOwogCQkJCQllbHNlCiAJCQkJCQlidWZmX3JlbWFpbmluZyA9CiAJCQkJCQkgICAgKHNpemVfdCl6aXAtPmVudHJ5X2J5dGVzX3JlbWFpbmluZwotCQkJCQkJICAgICAgLSB6aXAtPmRlY3J5cHRlZF9ieXRlc19yZW1haW5pbmc7CisJCQkJCQkgICAgLSB6aXAtPmRlY3J5cHRlZF9ieXRlc19yZW1haW5pbmc7CiAJCQkJfQogCQkJfQogCQkJaWYgKGJ1ZmZfcmVtYWluaW5nID4gMCkgewpAQCAtMTQwNyw3ICsyMjkwLDggQEAKIAkJCQkJICAgICAgKyB6aXAtPmRlY3J5cHRlZF9ieXRlc19yZW1haW5pbmcsCiAJCQkJCSAgICAmZHNpemUpOwogCQkJCX0KLQkJCQl6aXAtPmRlY3J5cHRlZF9ieXRlc19yZW1haW5pbmcgKz0gYnVmZl9yZW1haW5pbmc7CisJCQkJemlwLT5kZWNyeXB0ZWRfYnl0ZXNfcmVtYWluaW5nICs9CisJCQkJICAgIGJ1ZmZfcmVtYWluaW5nOwogCQkJfQogCQl9CiAJCWJ5dGVzX2F2YWlsID0gemlwLT5kZWNyeXB0ZWRfYnl0ZXNfcmVtYWluaW5nOwpAQCAtMTQ3MCw0MiArMjM1NCw5IEBACiAJCQlyZXR1cm4gKHIpOwogCX0KIAotCWlmICh6aXAtPmVuZF9vZl9lbnRyeSAmJiAoemlwLT5lbnRyeS0+emlwX2ZsYWdzICYgWklQX0xFTkdUSF9BVF9FTkQpKSB7Ci0JCWNvbnN0IGNoYXIgKnA7Ci0KLQkJaWYgKE5VTEwgPT0gKHAgPSBfX2FyY2hpdmVfcmVhZF9haGVhZChhLCAyNCwgTlVMTCkpKSB7Ci0JCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKLQkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAotCQkJICAgICJUcnVuY2F0ZWQgWklQIGVuZC1vZi1maWxlIHJlY29yZCIpOwotCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKLQkJfQotCQkvKiBDb25zdW1lIHRoZSBvcHRpb25hbCBQS1wwMDdcMDEwIG1hcmtlci4gKi8KLQkJaWYgKHBbMF0gPT0gJ1AnICYmIHBbMV0gPT0gJ0snICYmCi0JCSAgICBwWzJdID09ICdcMDA3JyAmJiBwWzNdID09ICdcMDEwJykgewotCQkJcCArPSA0OwotCQkJemlwLT51bmNvbnN1bWVkID0gNDsKLQkJfQotCQlpZiAoemlwLT5lbnRyeS0+ZmxhZ3MgJiBMQV9VU0VEX1pJUDY0KSB7Ci0JCQl1aW50NjRfdCBjb21wcmVzc2VkLCB1bmNvbXByZXNzZWQ7Ci0JCQl6aXAtPmVudHJ5LT5jcmMzMiA9IGFyY2hpdmVfbGUzMmRlYyhwKTsKLQkJCWNvbXByZXNzZWQgPSBhcmNoaXZlX2xlNjRkZWMocCArIDQpOwotCQkJdW5jb21wcmVzc2VkID0gYXJjaGl2ZV9sZTY0ZGVjKHAgKyAxMik7Ci0JCQlpZiAoY29tcHJlc3NlZCA+IElOVDY0X01BWCB8fCB1bmNvbXByZXNzZWQgPiBJTlQ2NF9NQVgpIHsKLQkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKLQkJCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKLQkJCQkgICAgIk92ZXJmbG93IG9mIDY0LWJpdCBmaWxlIHNpemVzIik7Ci0JCQkJcmV0dXJuIEFSQ0hJVkVfRkFJTEVEOwotCQkJfQotCQkJemlwLT5lbnRyeS0+Y29tcHJlc3NlZF9zaXplID0gY29tcHJlc3NlZDsKLQkJCXppcC0+ZW50cnktPnVuY29tcHJlc3NlZF9zaXplID0gdW5jb21wcmVzc2VkOwotCQkJemlwLT51bmNvbnN1bWVkICs9IDIwOwotCQl9IGVsc2UgewotCQkJemlwLT5lbnRyeS0+Y3JjMzIgPSBhcmNoaXZlX2xlMzJkZWMocCk7Ci0JCQl6aXAtPmVudHJ5LT5jb21wcmVzc2VkX3NpemUgPSBhcmNoaXZlX2xlMzJkZWMocCArIDQpOwotCQkJemlwLT5lbnRyeS0+dW5jb21wcmVzc2VkX3NpemUgPSBhcmNoaXZlX2xlMzJkZWMocCArIDgpOwotCQkJemlwLT51bmNvbnN1bWVkICs9IDEyOwotCQl9Ci0JfQorCXIgPSBjb25zdW1lX29wdGlvbmFsX21hcmtlcihhLCB6aXApOworCWlmIChyICE9IEFSQ0hJVkVfT0spCisJCXJldHVybiAocik7CiAKIAlyZXR1cm4gKEFSQ0hJVkVfT0spOwogfQpAQCAtMTkzMyw2ICsyNzg0LDI0IEBACiAJY2FzZSAwOiAgLyogTm8gY29tcHJlc3Npb24uICovCiAJCXIgPSAgemlwX3JlYWRfZGF0YV9ub25lKGEsIGJ1ZmYsIHNpemUsIG9mZnNldCk7CiAJCWJyZWFrOworI2lmZGVmIEhBVkVfQlpMSUJfSAorCWNhc2UgMTI6IC8qIFpJUHggYnppcDIgY29tcHJlc3Npb24uICovCisJCXIgPSB6aXBfcmVhZF9kYXRhX3ppcHhfYnppcDIoYSwgYnVmZiwgc2l6ZSwgb2Zmc2V0KTsKKwkJYnJlYWs7CisjZW5kaWYKKyNpZiBIQVZFX0xaTUFfSCAmJiBIQVZFX0xJQkxaTUEKKwljYXNlIDE0OiAvKiBaSVB4IExaTUEgY29tcHJlc3Npb24uICovCisJCXIgPSB6aXBfcmVhZF9kYXRhX3ppcHhfbHptYV9hbG9uZShhLCBidWZmLCBzaXplLCBvZmZzZXQpOworCQlicmVhazsKKwljYXNlIDk1OiAvKiBaSVB4IFhaIGNvbXByZXNzaW9uLiAqLworCQlyID0gemlwX3JlYWRfZGF0YV96aXB4X3h6KGEsIGJ1ZmYsIHNpemUsIG9mZnNldCk7CisJCWJyZWFrOworI2VuZGlmCisJLyogUFBNZCBzdXBwb3J0IGlzIGJ1aWx0LWluLCBzbyB3ZSBkb24ndCBuZWVkIGFueSAjaWYgZ3VhcmRzLiAqLworCWNhc2UgOTg6IC8qIFpJUHggUFBNZCBjb21wcmVzc2lvbi4gKi8KKwkJciA9IHppcF9yZWFkX2RhdGFfemlweF9wcG1kKGEsIGJ1ZmYsIHNpemUsIG9mZnNldCk7CisJCWJyZWFrOworCiAjaWZkZWYgSEFWRV9aTElCX0gKIAljYXNlIDg6IC8qIERlZmxhdGUgY29tcHJlc3Npb24uICovCiAJCXIgPSAgemlwX3JlYWRfZGF0YV9kZWZsYXRlKGEsIGJ1ZmYsIHNpemUsIG9mZnNldCk7CkBAIC0xOTQxLDggKzI4MTAsOCBAQAogCWRlZmF1bHQ6IC8qIFVuc3VwcG9ydGVkIGNvbXByZXNzaW9uLiAqLwogCQkvKiBSZXR1cm4gYSB3YXJuaW5nLiAqLwogCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKLQkJICAgICJVbnN1cHBvcnRlZCBaSVAgY29tcHJlc3Npb24gbWV0aG9kICglcykiLAotCQkgICAgY29tcHJlc3Npb25fbmFtZSh6aXAtPmVudHJ5LT5jb21wcmVzc2lvbikpOworCQkgICAgIlVuc3VwcG9ydGVkIFpJUCBjb21wcmVzc2lvbiBtZXRob2QgKCVkOiAlcykiLAorCQkgICAgemlwLT5lbnRyeS0+Y29tcHJlc3Npb24sIGNvbXByZXNzaW9uX25hbWUoemlwLT5lbnRyeS0+Y29tcHJlc3Npb24pKTsKIAkJLyogV2UgY2FuJ3QgZGVjb21wcmVzcyB0aGlzIGVudHJ5LCBidXQgd2Ugd2lsbAogCQkgKiBiZSBhYmxlIHRvIHNraXAoKSBpdCBhbmQgdHJ5IHRoZSBuZXh0IGVudHJ5LiAqLwogCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKQEAgLTIwMDAsMTEgKzI4NjksMjkgQEAKIAlzdHJ1Y3QgemlwX2VudHJ5ICp6aXBfZW50cnksICpuZXh0X3ppcF9lbnRyeTsKIAogCXppcCA9IChzdHJ1Y3QgemlwICopKGEtPmZvcm1hdC0+ZGF0YSk7CisKICNpZmRlZiBIQVZFX1pMSUJfSAogCWlmICh6aXAtPnN0cmVhbV92YWxpZCkKIAkJaW5mbGF0ZUVuZCgmemlwLT5zdHJlYW0pOwotCWZyZWUoemlwLT51bmNvbXByZXNzZWRfYnVmZmVyKTsKICNlbmRpZgorCisjaWYgSEFWRV9MWk1BX0ggJiYgSEFWRV9MSUJMWk1BCisgICAgaWYgKHppcC0+emlweF9sem1hX3ZhbGlkKSB7CisJCWx6bWFfZW5kKCZ6aXAtPnppcHhfbHptYV9zdHJlYW0pOworCX0KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9CWkxJQl9ICisJaWYgKHppcC0+YnpzdHJlYW1fdmFsaWQpIHsKKwkJQloyX2J6RGVjb21wcmVzc0VuZCgmemlwLT5ienN0cmVhbSk7CisJfQorI2VuZGlmCisKKwlmcmVlKHppcC0+dW5jb21wcmVzc2VkX2J1ZmZlcik7CisKKwlpZiAoemlwLT5wcG1kOF92YWxpZCkKKwkJX19hcmNoaXZlX3BwbWQ4X2Z1bmN0aW9ucy5QcG1kOF9GcmVlKCZ6aXAtPnBwbWQ4KTsKKwogCWlmICh6aXAtPnppcF9lbnRyaWVzKSB7CiAJCXppcF9lbnRyeSA9IHppcC0+emlwX2VudHJpZXM7CiAJCXdoaWxlICh6aXBfZW50cnkgIT0gTlVMTCkgewpAQCAtMjYyOCw3ICszNTE1LDggQEAKIH0KIAogc3RhdGljIGludAotc2x1cnBfY2VudHJhbF9kaXJlY3Rvcnkoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IHppcCAqemlwKQorc2x1cnBfY2VudHJhbF9kaXJlY3Rvcnkoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGFyY2hpdmVfZW50cnkqIGVudHJ5LAorICAgIHN0cnVjdCB6aXAgKnppcCkKIHsKIAlzc2l6ZV90IGk7CiAJdW5zaWduZWQgZm91bmQ7CkBAIC0yNzA4LDYgKzM1OTYsMTEgQEAKIAkJCXJldHVybiBBUkNISVZFX0ZBVEFMOwogCiAJCXppcF9lbnRyeSA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHppcF9lbnRyeSkpOworCQlpZiAoemlwX2VudHJ5ID09IE5VTEwpIHsKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBFTk9NRU0sCisJCQkJIkNhbid0IGFsbG9jYXRlIHppcCBlbnRyeSIpOworCQkJcmV0dXJuIEFSQ0hJVkVfRkFUQUw7CisJCX0KIAkJemlwX2VudHJ5LT5uZXh0ID0gemlwLT56aXBfZW50cmllczsKIAkJemlwX2VudHJ5LT5mbGFncyB8PSBMQV9GUk9NX0NFTlRSQUxfRElSRUNUT1JZOwogCQl6aXAtPnppcF9lbnRyaWVzID0gemlwX2VudHJ5OwpAQCAtMjczMyw4ICszNjI2LDEwIEBACiAJCWZpbGVuYW1lX2xlbmd0aCA9IGFyY2hpdmVfbGUxNmRlYyhwICsgMjgpOwogCQlleHRyYV9sZW5ndGggPSBhcmNoaXZlX2xlMTZkZWMocCArIDMwKTsKIAkJY29tbWVudF9sZW5ndGggPSBhcmNoaXZlX2xlMTZkZWMocCArIDMyKTsKLQkJLyogZGlza19zdGFydCA9IGFyY2hpdmVfbGUxNmRlYyhwICsgMzQpOyAqLyAvKiBCZXR0ZXIgYmUgemVyby4gKi8KLQkJLyogaW50ZXJuYWxfYXR0cmlidXRlcyA9IGFyY2hpdmVfbGUxNmRlYyhwICsgMzYpOyAqLyAvKiB0ZXh0IGJpdCAqLworCQkvKiBkaXNrX3N0YXJ0ID0gYXJjaGl2ZV9sZTE2ZGVjKHAgKyAzNCk7CisJCSAqICAgQmV0dGVyIGJlIHplcm8uCisJCSAqIGludGVybmFsX2F0dHJpYnV0ZXMgPSBhcmNoaXZlX2xlMTZkZWMocCArIDM2KTsKKwkJICogICB0ZXh0IGJpdCAqLwogCQlleHRlcm5hbF9hdHRyaWJ1dGVzID0gYXJjaGl2ZV9sZTMyZGVjKHAgKyAzOCk7CiAJCXppcF9lbnRyeS0+bG9jYWxfaGVhZGVyX29mZnNldCA9CiAJCSAgICBhcmNoaXZlX2xlMzJkZWMocCArIDQyKSArIGNvcnJlY3Rpb247CkBAIC0yNzcwLDcgKzM2NjUsOCBAQAogCQkJICAgICJUcnVuY2F0ZWQgWklQIGZpbGUgaGVhZGVyIik7CiAJCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKIAkJfQotCQlpZiAoQVJDSElWRV9PSyAhPSBwcm9jZXNzX2V4dHJhKGEsIHAgKyBmaWxlbmFtZV9sZW5ndGgsIGV4dHJhX2xlbmd0aCwgemlwX2VudHJ5KSkgeworCQlpZiAoQVJDSElWRV9PSyAhPSBwcm9jZXNzX2V4dHJhKGEsIGVudHJ5LCBwICsgZmlsZW5hbWVfbGVuZ3RoLAorCQkgICAgZXh0cmFfbGVuZ3RoLCB6aXBfZW50cnkpKSB7CiAJCQlyZXR1cm4gQVJDSElWRV9GQVRBTDsKIAkJfQogCkBAIC0yNzkyLDcgKzM2ODgsOCBAQAogCQkJCSAqIGEgZGlyZWN0b3J5LiBXZSBzaG91bGQgdHJlYXQgaXQgYXMgYSBub24KIAkJCQkgKiByZXNvdXJjZSBmb3JrIGZpbGUgdG8gZXhwb3NlIGl0LiAqLwogCQkJCWlmIChuYW1lW2ZpbGVuYW1lX2xlbmd0aC0xXSAhPSAnLycgJiYKLQkJCQkgICAgKHIgLSBuYW1lIDwgMyB8fCByWzBdICE9ICcuJyB8fCByWzFdICE9ICdfJykpIHsKKwkJCQkgICAgKHIgLSBuYW1lIDwgMyB8fCByWzBdICE9ICcuJyB8fAorCQkJCSAgICAgclsxXSAhPSAnXycpKSB7CiAJCQkJCV9fYXJjaGl2ZV9yYl90cmVlX2luc2VydF9ub2RlKAogCQkJCQkgICAgJnppcC0+dHJlZSwgJnppcF9lbnRyeS0+bm9kZSk7CiAJCQkJCS8qIEV4cG9zZSBpdHMgcGFyZW50IGRpcmVjdG9yaWVzLiAqLwpAQCAtMjg2OSw4ICszNzY2LDEwIEBACiAJc3dpdGNoKHJzcmMtPmNvbXByZXNzaW9uKSB7CiAJY2FzZSAwOiAgLyogTm8gY29tcHJlc3Npb24uICovCiAJCWlmIChyc3JjLT51bmNvbXByZXNzZWRfc2l6ZSAhPSByc3JjLT5jb21wcmVzc2VkX3NpemUpIHsKLQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAotCQkJICAgICJNYWxmb3JtZWQgT1MgWCBtZXRhZGF0YSBlbnRyeTogaW5jb25zaXN0ZW50IHNpemUiKTsKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCQkgICAgIk1hbGZvcm1lZCBPUyBYIG1ldGFkYXRhIGVudHJ5OiAiCisJCQkgICAgImluY29uc2lzdGVudCBzaXplIik7CiAJCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwogCQl9CiAjaWZkZWYgSEFWRV9aTElCX0gKQEAgLTMwMjksNyArMzkyOCw3IEBACiAJCWEtPmFyY2hpdmUuYXJjaGl2ZV9mb3JtYXRfbmFtZSA9ICJaSVAiOwogCiAJaWYgKHppcC0+emlwX2VudHJpZXMgPT0gTlVMTCkgewotCQlyID0gc2x1cnBfY2VudHJhbF9kaXJlY3RvcnkoYSwgemlwKTsKKwkJciA9IHNsdXJwX2NlbnRyYWxfZGlyZWN0b3J5KGEsIGVudHJ5LCB6aXApOwogCQlpZiAociAhPSBBUkNISVZFX09LKQogCQkJcmV0dXJuIHI7CiAJCS8qIEdldCBmaXJzdCBlbnRyeSB3aG9zZSBsb2NhbCBoZWFkZXIgb2Zmc2V0IGlzIGxvd2VyIHRoYW4KQEAgLTMwNTksOCArMzk1OCw4IEBACiAJX19hcmNoaXZlX3JlYWRfcmVzZXRfcGFzc3BocmFzZShhKTsKIAogCS8qIEZpbGUgZW50cmllcyBhcmUgc29ydGVkIGJ5IHRoZSBoZWFkZXIgb2Zmc2V0LCB3ZSBzaG91bGQgbW9zdGx5Ci0JICogdXNlIF9fYXJjaGl2ZV9yZWFkX2NvbnN1bWUgdG8gYWR2YW5jZSBhIHJlYWQgcG9pbnQgdG8gYXZvaWQgcmVkdW5kYW50Ci0JICogZGF0YSByZWFkaW5nLiAgKi8KKwkgKiB1c2UgX19hcmNoaXZlX3JlYWRfY29uc3VtZSB0byBhZHZhbmNlIGEgcmVhZCBwb2ludCB0byBhdm9pZAorCSAqIHJlZHVuZGFudCBkYXRhIHJlYWRpbmcuICAqLwogCW9mZnNldCA9IGFyY2hpdmVfZmlsdGVyX2J5dGVzKCZhLT5hcmNoaXZlLCAwKTsKIAlpZiAob2Zmc2V0IDwgemlwLT5lbnRyeS0+bG9jYWxfaGVhZGVyX29mZnNldCkKIAkJX19hcmNoaXZlX3JlYWRfY29uc3VtZShhLApAQCAtMzE0MSwzICs0MDQwLDUgQEAKIAkJZnJlZSh6aXApOwogCXJldHVybiAoQVJDSElWRV9PSyk7CiB9CisKKy8qIyB2aW06c2V0IG5vZXQ6Ki8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3N0cmluZy5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfc3RyaW5nLmMKaW5kZXggODU1OTRjYy4uYzc3ZGNmNSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfc3RyaW5nLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfc3RyaW5nLmMKQEAgLTc1LDYgKzc1LDkgQEAKICNkZWZpbmUgd21lbW1vdmUoYSxiLGkpICAod2NoYXJfdCAqKW1lbW1vdmUoKGEpLCAoYiksIChpKSAqIHNpemVvZih3Y2hhcl90KSkKICNlbmRpZgogCisjdW5kZWYgbWF4CisjZGVmaW5lIG1heChhLCBiKSAgICAgICAoKGEpPihiKT8oYSk6KGIpKQorCiBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmdfY29udiB7CiAJc3RydWN0IGFyY2hpdmVfc3RyaW5nX2NvbnYJKm5leHQ7CiAJY2hhcgkJCQkqZnJvbV9jaGFyc2V0OwpAQCAtNDU4LDcgKzQ2MSw3IEBACiAKIAlpZiAoZnJvbV9jcCA9PSBDUF9DX0xPQ0FMRSkgewogCQkvKgotCQkgKiAiQyIgbG9jYWxlIHNwZWNpYWwgcHJvY2Vzcy4KKwkJICogIkMiIGxvY2FsZSBzcGVjaWFsIHByb2Nlc3NpbmcuCiAJCSAqLwogCQl3Y2hhcl90ICp3czsKIAkJY29uc3QgdW5zaWduZWQgY2hhciAqbXA7CkBAIC01OTEsNyArNTk0LDcgQEAKIAkgKiBObyBzaW5nbGUgYnl0ZSB3aWxsIGJlIG1vcmUgdGhhbiBvbmUgd2lkZSBjaGFyYWN0ZXIsCiAJICogc28gdGhpcyBsZW5ndGggZXN0aW1hdGUgd2lsbCBhbHdheXMgYmUgYmlnIGVub3VnaC4KIAkgKi8KLQlzaXplX3Qgd2NzX2xlbmd0aCA9IGxlbjsKKwkvLyBzaXplX3Qgd2NzX2xlbmd0aCA9IGxlbjsKIAlzaXplX3QgbWJzX2xlbmd0aCA9IGxlbjsKIAljb25zdCBjaGFyICptYnMgPSBwOwogCXdjaGFyX3QgKndjczsKQEAgLTYwMCw3ICs2MDMsMTEgQEAKIAogCW1lbXNldCgmc2hpZnRfc3RhdGUsIDAsIHNpemVvZihzaGlmdF9zdGF0ZSkpOwogI2VuZGlmCi0JaWYgKE5VTEwgPT0gYXJjaGl2ZV93c3RyaW5nX2Vuc3VyZShkZXN0LCBkZXN0LT5sZW5ndGggKyB3Y3NfbGVuZ3RoICsgMSkpCisJLyoKKwkgKiBBcyB3ZSBkZWNpZGVkIHRvIGhhdmUgd2NzX2xlbmd0aCA9PSBtYnNfbGVuZ3RoID09IGxlbgorCSAqIHdlIGNhbiB1c2UgbGVuIGhlcmUgaW5zdGVhZCBvZiB3Y3NfbGVuZ3RoCisJICovCisJaWYgKE5VTEwgPT0gYXJjaGl2ZV93c3RyaW5nX2Vuc3VyZShkZXN0LCBkZXN0LT5sZW5ndGggKyBsZW4gKyAxKSkKIAkJcmV0dXJuICgtMSk7CiAJd2NzID0gZGVzdC0+cyArIGRlc3QtPmxlbmd0aDsKIAkvKgpAQCAtNjA5LDYgKzYxNiwxMiBAQAogCSAqIG11bHRpIGJ5dGVzLgogCSAqLwogCXdoaWxlICgqbWJzICYmIG1ic19sZW5ndGggPiAwKSB7CisJCS8qCisJCSAqIFRoZSBidWZmZXIgd2UgYWxsb2NhdGVkIGlzIGFsd2F5cyBiaWcgZW5vdWdoLgorCQkgKiBLZWVwIHRoaXMgY29kZSBwYXRoIGluIGEgY29tbWVudCBpZiB3ZSBkZWNpZGUgdG8gY2hvb3NlCisJCSAqIHNtYWxsZXIgd2NzX2xlbmd0aCBpbiB0aGUgZnV0dXJlCisJCSAqLworLyoKIAkJaWYgKHdjc19sZW5ndGggPT0gMCkgewogCQkJZGVzdC0+bGVuZ3RoID0gd2NzIC0gZGVzdC0+czsKIAkJCWRlc3QtPnNbZGVzdC0+bGVuZ3RoXSA9IEwnXDAnOwpAQCAtNjE4LDI0ICs2MzEsMjAgQEAKIAkJCQlyZXR1cm4gKC0xKTsKIAkJCXdjcyA9IGRlc3QtPnMgKyBkZXN0LT5sZW5ndGg7CiAJCX0KKyovCiAjaWYgSEFWRV9NQlJUT1dDCi0JCXIgPSBtYnJ0b3djKHdjcywgbWJzLCB3Y3NfbGVuZ3RoLCAmc2hpZnRfc3RhdGUpOworCQlyID0gbWJydG93Yyh3Y3MsIG1icywgbWJzX2xlbmd0aCwgJnNoaWZ0X3N0YXRlKTsKICNlbHNlCi0JCXIgPSBtYnRvd2Mod2NzLCBtYnMsIHdjc19sZW5ndGgpOworCQlyID0gbWJ0b3djKHdjcywgbWJzLCBtYnNfbGVuZ3RoKTsKICNlbmRpZgogCQlpZiAociA9PSAoc2l6ZV90KS0xIHx8IHIgPT0gKHNpemVfdCktMikgewogCQkJcmV0X3ZhbCA9IC0xOwotCQkJaWYgKGVycm5vID09IEVJTFNFUSkgewotCQkJCSsrbWJzOwotCQkJCS0tbWJzX2xlbmd0aDsKLQkJCQljb250aW51ZTsKLQkJCX0gZWxzZQotCQkJCWJyZWFrOworCQkJYnJlYWs7CiAJCX0KIAkJaWYgKHIgPT0gMCB8fCByID4gbWJzX2xlbmd0aCkKIAkJCWJyZWFrOwogCQl3Y3MrKzsKLQkJd2NzX2xlbmd0aC0tOworCQkvLyB3Y3NfbGVuZ3RoLS07CiAJCW1icyArPSByOwogCQltYnNfbGVuZ3RoIC09IHI7CiAJfQpAQCAtNjgwLDcgKzY4OSw3IEBACiAKIAlpZiAodG9fY3AgPT0gQ1BfQ19MT0NBTEUpIHsKIAkJLyoKLQkJICogIkMiIGxvY2FsZSBzcGVjaWFsIHByb2Nlc3MuCisJCSAqICJDIiBsb2NhbGUgc3BlY2lhbCBwcm9jZXNzaW5nLgogCQkgKi8KIAkJY29uc3Qgd2NoYXJfdCAqd3AgPSB3czsKIAkJY2hhciAqcDsKQEAgLTc5OSw3ICs4MDgsOCBAQAogCQkJYXMtPnNbYXMtPmxlbmd0aF0gPSAnXDAnOwogCQkJLyogUmUtYWxsb2NhdGUgYnVmZmVyIGZvciBNQlMuICovCiAJCQlpZiAoYXJjaGl2ZV9zdHJpbmdfZW5zdXJlKGFzLAotCQkJICAgIGFzLT5sZW5ndGggKyBsZW4gKiAyICsgMSkgPT0gTlVMTCkKKwkJCSAgICBhcy0+bGVuZ3RoICsgbWF4KGxlbiAqIDIsCisJCQkgICAgKHNpemVfdClNQl9DVVJfTUFYKSArIDEpID09IE5VTEwpCiAJCQkJcmV0dXJuICgtMSk7CiAJCQlwID0gYXMtPnMgKyBhcy0+bGVuZ3RoOwogCQkJZW5kID0gYXMtPnMgKyBhcy0+YnVmZmVyX2xlbmd0aCAtIE1CX0NVUl9NQVggLTE7CkBAIC04OTAsNyArOTAwLDcgQEAKICAgICAgc3RydWN0IGFyY2hpdmVfc3RyaW5nX2NvbnYgKikpCiB7CiAJaWYgKHNjID09IE5VTEwgfHwgc2MtPm5jb252ZXJ0ZXIgPj0gMikKLQkJX19hcmNoaXZlX2VycngoMSwgIlByb2dyYW1pbmcgZXJyb3IiKTsKKwkJX19hcmNoaXZlX2VycngoMSwgIlByb2dyYW1taW5nIGVycm9yIik7CiAJc2MtPmNvbnZlcnRlcltzYy0+bmNvbnZlcnRlcisrXSA9IGNvbnZlcnRlcjsKIH0KIApAQCAtMzQ0MSw3ICszNDUxLDggQEAKIAkJCWFzLT5sZW5ndGggPSBwIC0gYXMtPnM7CiAJCQkvKiBSZS1hbGxvY2F0ZSBidWZmZXIgZm9yIE1CUy4gKi8KIAkJCWlmIChhcmNoaXZlX3N0cmluZ19lbnN1cmUoYXMsCi0JCQkgICAgYXMtPmxlbmd0aCArIGxlbiAqIDIgKyAxKSA9PSBOVUxMKQorCQkJICAgIGFzLT5sZW5ndGggKyBtYXgobGVuICogMiwKKwkJCSAgICAoc2l6ZV90KU1CX0NVUl9NQVgpICsgMSkgPT0gTlVMTCkKIAkJCQlyZXR1cm4gKC0xKTsKIAkJCXAgPSBhcy0+cyArIGFzLT5sZW5ndGg7CiAJCQllbmQgPSBhcy0+cyArIGFzLT5idWZmZXJfbGVuZ3RoIC0gTUJfQ1VSX01BWCAtMTsKQEAgLTQwNTMsNiArNDA2NCw3IEBACiB7CiAgIGlmICh1dGY4ID09IE5VTEwpIHsKICAgICBhZXMtPmFlc19zZXQgPSAwOworICAgIHJldHVybiAoMCk7CiAgIH0KICAgYWVzLT5hZXNfc2V0ID0gQUVTX1NFVF9VVEY4OwogICBhcmNoaXZlX3N0cmluZ19lbXB0eSgmKGFlcy0+YWVzX21icykpOwpAQCAtNDA2Nyw2ICs0MDc5LDcgQEAKIHsKIAlpZiAod2NzID09IE5VTEwpIHsKIAkJYWVzLT5hZXNfc2V0ID0gMDsKKwkJcmV0dXJuICgwKTsKIAl9CiAJYWVzLT5hZXNfc2V0ID0gQUVTX1NFVF9XQ1M7IC8qIE9ubHkgV0NTIGZvcm0gc2V0LiAqLwogCWFyY2hpdmVfc3RyaW5nX2VtcHR5KCYoYWVzLT5hZXNfbWJzKSk7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9zdHJpbmcuaCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3N0cmluZy5oCmluZGV4IDU2ZGZiYjIuLjI3ZTFhZDYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3N0cmluZy5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3N0cmluZy5oCkBAIC0yNiwxNSArMjYsMTUgQEAKICAqCiAgKi8KIAorI2lmbmRlZiBBUkNISVZFX1NUUklOR19IX0lOQ0xVREVECisjZGVmaW5lIEFSQ0hJVkVfU1RSSU5HX0hfSU5DTFVERUQKKwogI2lmbmRlZiBfX0xJQkFSQ0hJVkVfQlVJTEQKICNpZm5kZWYgX19MSUJBUkNISVZFX1RFU1QKICNlcnJvciBUaGlzIGhlYWRlciBpcyBvbmx5IHRvIGJlIHVzZWQgaW50ZXJuYWxseSB0byBsaWJhcmNoaXZlLgogI2VuZGlmCiAjZW5kaWYKIAotI2lmbmRlZiBBUkNISVZFX1NUUklOR19IX0lOQ0xVREVECi0jZGVmaW5lCUFSQ0hJVkVfU1RSSU5HX0hfSU5DTFVERUQKLQogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2lmZGVmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4gIC8qIHJlcXVpcmVkIGZvciB3Y2hhcl90IG9uIHNvbWUgc3lzdGVtcyAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfc3RyaW5nX2NvbXBvc2l0aW9uLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9zdHJpbmdfY29tcG9zaXRpb24uaAppbmRleCA4OTAyYWMxLi5kMGFjMzQwIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9zdHJpbmdfY29tcG9zaXRpb24uaAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV9zdHJpbmdfY29tcG9zaXRpb24uaApAQCAtMzQsMTMgKzM0LDEzIEBACiAgKiAgU2VlIGFsc28gaHR0cDovL3VuaWNvZGUub3JnL3JlcG9ydC90cjE1LwogICovCiAKKyNpZm5kZWYgQVJDSElWRV9TVFJJTkdfQ09NUE9TSVRJT05fSF9JTkNMVURFRAorI2RlZmluZSBBUkNISVZFX1NUUklOR19DT01QT1NJVElPTl9IX0lOQ0xVREVECisKICNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECiAjZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KICNlbmRpZgogCi0jaWZuZGVmIEFSQ0hJVkVfU1RSSU5HX0NPTVBPU0lUSU9OX0hfSU5DTFVERUQKLSNkZWZpbmUgQVJDSElWRV9TVFJJTkdfQ09NUE9TSVRJT05fSF9JTkNMVURFRAotCiBzdHJ1Y3QgdW5pY29kZV9jb21wb3NpdGlvbl90YWJsZSB7CiAJdWludDMyX3QgY3AxOwogCXVpbnQzMl90IGNwMjsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3V0aWwuMyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3V0aWwuMwppbmRleCA5OWFiODQyLi5kNWQ0ZTdkIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV91dGlsLjMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfdXRpbC4zCkBAIC05MiwxMCArOTIsMTAgQEAKIE5vdCBnZW5lcmFsbHkgdXNlZCBpbiBjbGllbnQgY29kZS4KIC5JdCBGbiBhcmNoaXZlX2NvbXByZXNzaW9uCiBTeW5vbnltIGZvcgotLkZuIGFyY2hpdmVfZmlsdGVyX2NvZGUoYSwgMCkgLgorLkZuIGFyY2hpdmVfZmlsdGVyX2NvZGUgYSAwIC4KIC5JdCBGbiBhcmNoaXZlX2NvbXByZXNzaW9uX25hbWUKIFN5bm9ueW0gZm9yCi0uRm4gYXJjaGl2ZV9maWx0ZXJfbmFtZShhLCAwKSAuCisuRm4gYXJjaGl2ZV9maWx0ZXJfbmFtZSBhIDAgLgogLkl0IEZuIGFyY2hpdmVfY29weV9lcnJvcgogQ29waWVzIGVycm9yIGluZm9ybWF0aW9uIGZyb20gb25lIGFyY2hpdmUgdG8gYW5vdGhlci4KIC5JdCBGbiBhcmNoaXZlX2Vycm5vCkBAIC0xNDIsMTMgKzE0MiwxMyBAQAogZmlsdGVyIDEgaXMgdGhlIHV1ZGVjb2RlIGZpbHRlciwKIGFuZCBmaWx0ZXIgMiBpcyB0aGUgcHNldWRvLWZpbHRlciB0aGF0IHdyYXBzIHRoZSBhcmNoaXZlIHJlYWQgZnVuY3Rpb25zLgogSW4gdGhpcyBjYXNlLCByZXF1ZXN0aW5nCi0uRm4gYXJjaGl2ZV9wb3NpdGlvbihhLCAtMSkKKy5GbiBhcmNoaXZlX3Bvc2l0aW9uIGEgLTEKIHdvdWxkIGJlIGEgc3lub255bSBmb3IKLS5GbiBhcmNoaXZlX3Bvc2l0aW9uKGEsIDIpCisuRm4gYXJjaGl2ZV9wb3NpdGlvbiBhIDIKIHdoaWNoIHdvdWxkIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGN1cnJlbnRseSByZWFkIGZyb20gdGhlIGFyY2hpdmUsIHdoaWxlCi0uRm4gYXJjaGl2ZV9wb3NpdGlvbihhLCAxKQorLkZuIGFyY2hpdmVfcG9zaXRpb24gYSAxCiB3b3VsZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBhZnRlciB1dWRlY29kaW5nLCBhbmQKLS5GbiBhcmNoaXZlX3Bvc2l0aW9uKGEsIDApCisuRm4gYXJjaGl2ZV9wb3NpdGlvbiBhIDAKIHdvdWxkIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFmdGVyIGRlY29tcHJlc3Npb24uCiAuSXQgRm4gYXJjaGl2ZV9maWx0ZXJfbmFtZQogUmV0dXJucyBhIHRleHR1YWwgbmFtZSBpZGVudGlmeWluZyB0aGUgaW5kaWNhdGVkIGZpbHRlci4KQEAgLTE3MCw5ICsxNzAsOSBAQAogLkl0IEZuIGFyY2hpdmVfcG9zaXRpb24KIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gb3Igd3JpdHRlbiB0byB0aGUgaW5kaWNhdGVkIGZpbHRlci4KIEluIHBhcnRpY3VsYXIsCi0uRm4gYXJjaGl2ZV9wb3NpdGlvbihhLCAwKQorLkZuIGFyY2hpdmVfcG9zaXRpb24gYSAwCiByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCBvciB3cml0dGVuIGJ5IHRoZSBmb3JtYXQgaGFuZGxlciwgd2hpbGUKLS5GbiBhcmNoaXZlX3Bvc2l0aW9uKGEsIC0xKQorLkZuIGFyY2hpdmVfcG9zaXRpb24gYSAtMQogcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgb3Igd3JpdHRlbiB0byB0aGUgYXJjaGl2ZS4KIFNlZQogLkZuIGFyY2hpdmVfZmlsdGVyX2NvdW50CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV91dGlsLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV91dGlsLmMKaW5kZXggZTVjNmUzYi4uZTRjYjA1MSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfdXRpbC5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3V0aWwuYwpAQCAtMjE4LDggKzIxOCw4IEBACiAgKiBBbHNvIFdpbmRvd3MgdmVyc2lvbiBvZiBta3RlbXAgZmFtaWx5IGluY2x1ZGluZyBfbWt0ZW1wX3MKICAqIGFyZSBub3Qgc2VjdXJlLgogICovCi1pbnQKLV9fYXJjaGl2ZV9ta3RlbXAoY29uc3QgY2hhciAqdG1wZGlyKQorc3RhdGljIGludAorX19hcmNoaXZlX21rdGVtcHgoY29uc3QgY2hhciAqdG1wZGlyLCB3Y2hhcl90ICp0ZW1wbGF0ZSkKIHsKIAlzdGF0aWMgY29uc3Qgd2NoYXJfdCBwcmVmaXhbXSA9IEwibGliYXJjaGl2ZV8iOwogCXN0YXRpYyBjb25zdCB3Y2hhcl90IHN1ZmZpeFtdID0gTCJYWFhYWFhYWFhYIjsKQEAgLTI0Myw2NCArMjQzLDc2IEBACiAJaFByb3YgPSAoSENSWVBUUFJPVilOVUxMOwogCWZkID0gLTE7CiAJd3MgPSBOVUxMOwotCWFyY2hpdmVfc3RyaW5nX2luaXQoJnRlbXBfbmFtZSk7CiAKLQkvKiBHZXQgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiAqLwotCWlmICh0bXBkaXIgPT0gTlVMTCkgewotCQlzaXplX3QgbDsKLQkJd2NoYXJfdCAqdG1wOworCWlmICh0ZW1wbGF0ZSA9PSBOVUxMKSB7CisJCWFyY2hpdmVfc3RyaW5nX2luaXQoJnRlbXBfbmFtZSk7CiAKLQkJbCA9IEdldFRlbXBQYXRoVygwLCBOVUxMKTsKLQkJaWYgKGwgPT0gMCkgewotCQkJbGFfZG9zbWFwZXJyKEdldExhc3RFcnJvcigpKTsKLQkJCWdvdG8gZXhpdF90bXBmaWxlOwotCQl9Ci0JCXRtcCA9IG1hbGxvYyhsKnNpemVvZih3Y2hhcl90KSk7Ci0JCWlmICh0bXAgPT0gTlVMTCkgewotCQkJZXJybm8gPSBFTk9NRU07Ci0JCQlnb3RvIGV4aXRfdG1wZmlsZTsKLQkJfQotCQlHZXRUZW1wUGF0aFcoKERXT1JEKWwsIHRtcCk7Ci0JCWFyY2hpdmVfd3N0cmNweSgmdGVtcF9uYW1lLCB0bXApOwotCQlmcmVlKHRtcCk7Ci0JfSBlbHNlIHsKLQkJaWYgKGFyY2hpdmVfd3N0cmluZ19hcHBlbmRfZnJvbV9tYnMoJnRlbXBfbmFtZSwgdG1wZGlyLAotCQkgICAgc3RybGVuKHRtcGRpcikpIDwgMCkKLQkJCWdvdG8gZXhpdF90bXBmaWxlOwotCQlpZiAodGVtcF9uYW1lLnNbdGVtcF9uYW1lLmxlbmd0aC0xXSAhPSBMJy8nKQotCQkJYXJjaGl2ZV93c3RyYXBwZW5kX3djaGFyKCZ0ZW1wX25hbWUsIEwnLycpOwotCX0KKwkJLyogR2V0IGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gKi8KKwkJaWYgKHRtcGRpciA9PSBOVUxMKSB7CisJCQlzaXplX3QgbDsKKwkJCXdjaGFyX3QgKnRtcDsKIAotCS8qIENoZWNrIGlmIHRlbXBfbmFtZSBpcyBhIGRpcmVjdG9yeS4gKi8KLQlhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHRlbXBfbmFtZS5zKTsKLQlpZiAoYXR0ciA9PSAoRFdPUkQpLTEpIHsKLQkJaWYgKEdldExhc3RFcnJvcigpICE9IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7Ci0JCQlsYV9kb3NtYXBlcnIoR2V0TGFzdEVycm9yKCkpOwotCQkJZ290byBleGl0X3RtcGZpbGU7CisJCQlsID0gR2V0VGVtcFBhdGhXKDAsIE5VTEwpOworCQkJaWYgKGwgPT0gMCkgeworCQkJCWxhX2Rvc21hcGVycihHZXRMYXN0RXJyb3IoKSk7CisJCQkJZ290byBleGl0X3RtcGZpbGU7CisJCQl9CisJCQl0bXAgPSBtYWxsb2MobCpzaXplb2Yod2NoYXJfdCkpOworCQkJaWYgKHRtcCA9PSBOVUxMKSB7CisJCQkJZXJybm8gPSBFTk9NRU07CisJCQkJZ290byBleGl0X3RtcGZpbGU7CisJCQl9CisJCQlHZXRUZW1wUGF0aFcoKERXT1JEKWwsIHRtcCk7CisJCQlhcmNoaXZlX3dzdHJjcHkoJnRlbXBfbmFtZSwgdG1wKTsKKwkJCWZyZWUodG1wKTsKKwkJfSBlbHNlIHsKKwkJCWlmIChhcmNoaXZlX3dzdHJpbmdfYXBwZW5kX2Zyb21fbWJzKCZ0ZW1wX25hbWUsIHRtcGRpciwKKwkJCSAgICBzdHJsZW4odG1wZGlyKSkgPCAwKQorCQkJCWdvdG8gZXhpdF90bXBmaWxlOworCQkJaWYgKHRlbXBfbmFtZS5zW3RlbXBfbmFtZS5sZW5ndGgtMV0gIT0gTCcvJykKKwkJCQlhcmNoaXZlX3dzdHJhcHBlbmRfd2NoYXIoJnRlbXBfbmFtZSwgTCcvJyk7CiAJCX0KLQkJd3MgPSBfX2xhX3dpbl9wZXJtaXNzaXZlX25hbWVfdyh0ZW1wX25hbWUucyk7Ci0JCWlmICh3cyA9PSBOVUxMKSB7Ci0JCQllcnJubyA9IEVJTlZBTDsKLQkJCWdvdG8gZXhpdF90bXBmaWxlOwotCQl9Ci0JCWF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cod3MpOworCisJCS8qIENoZWNrIGlmIHRlbXBfbmFtZSBpcyBhIGRpcmVjdG9yeS4gKi8KKwkJYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyh0ZW1wX25hbWUucyk7CiAJCWlmIChhdHRyID09IChEV09SRCktMSkgewotCQkJbGFfZG9zbWFwZXJyKEdldExhc3RFcnJvcigpKTsKKwkJCWlmIChHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9GSUxFX05PVF9GT1VORCkgeworCQkJCWxhX2Rvc21hcGVycihHZXRMYXN0RXJyb3IoKSk7CisJCQkJZ290byBleGl0X3RtcGZpbGU7CisJCQl9CisJCQl3cyA9IF9fbGFfd2luX3Blcm1pc3NpdmVfbmFtZV93KHRlbXBfbmFtZS5zKTsKKwkJCWlmICh3cyA9PSBOVUxMKSB7CisJCQkJZXJybm8gPSBFSU5WQUw7CisJCQkJZ290byBleGl0X3RtcGZpbGU7CisJCQl9CisJCQlhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHdzKTsKKwkJCWlmIChhdHRyID09IChEV09SRCktMSkgeworCQkJCWxhX2Rvc21hcGVycihHZXRMYXN0RXJyb3IoKSk7CisJCQkJZ290byBleGl0X3RtcGZpbGU7CisJCQl9CisJCX0KKwkJaWYgKCEoYXR0ciAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpIHsKKwkJCWVycm5vID0gRU5PVERJUjsKIAkJCWdvdG8gZXhpdF90bXBmaWxlOwogCQl9Ci0JfQotCWlmICghKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKSB7Ci0JCWVycm5vID0gRU5PVERJUjsKLQkJZ290byBleGl0X3RtcGZpbGU7Ci0JfQogCi0JLyoKLQkgKiBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZS4KLQkgKi8KLQlhcmNoaXZlX3dzdHJjYXQoJnRlbXBfbmFtZSwgcHJlZml4KTsKLQlhcmNoaXZlX3dzdHJjYXQoJnRlbXBfbmFtZSwgc3VmZml4KTsKLQllcCA9IHRlbXBfbmFtZS5zICsgYXJjaGl2ZV9zdHJsZW4oJnRlbXBfbmFtZSk7Ci0JeHAgPSBlcCAtIHdjc2xlbihzdWZmaXgpOworCQkvKgorCQkgKiBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZS4KKwkJICovCisJCWFyY2hpdmVfd3N0cmNhdCgmdGVtcF9uYW1lLCBwcmVmaXgpOworCQlhcmNoaXZlX3dzdHJjYXQoJnRlbXBfbmFtZSwgc3VmZml4KTsKKwkJZXAgPSB0ZW1wX25hbWUucyArIGFyY2hpdmVfc3RybGVuKCZ0ZW1wX25hbWUpOworCQl4cCA9IGVwIC0gd2NzbGVuKHN1ZmZpeCk7CisJCXRlbXBsYXRlID0gdGVtcF9uYW1lLnM7CisJfSBlbHNlIHsKKwkJeHAgPSB3Y3NjaHIodGVtcGxhdGUsIEwnWCcpOworCQlpZiAoeHAgPT0gTlVMTCkJLyogTm8gWCwgcHJvZ3JhbW1pbmcgZXJyb3IgKi8KKwkJCWFib3J0KCk7CisJCWZvciAoZXAgPSB4cDsgKmVwID09IEwnWCc7IGVwKyspCisJCQljb250aW51ZTsKKwkJaWYgKCplcCkJLyogWCBmb2xsb3dlZCBieSBub24gWCwgcHJvZ3JhbW1pbmcgZXJyb3IgKi8KKwkJCWFib3J0KCk7CisJfQogCiAJaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZoUHJvdiwgTlVMTCwgTlVMTCwgUFJPVl9SU0FfRlVMTCwKIAkJQ1JZUFRfVkVSSUZZQ09OVEVYVCkpIHsKQEAgLTMyMywyMCArMzM1LDI0IEBACiAJCQkqcCA9IG51bVsoKERXT1JEKSpwKSAlIChzaXplb2YobnVtKS9zaXplb2YobnVtWzBdKSldOwogCiAJCWZyZWUod3MpOwotCQl3cyA9IF9fbGFfd2luX3Blcm1pc3NpdmVfbmFtZV93KHRlbXBfbmFtZS5zKTsKKwkJd3MgPSBfX2xhX3dpbl9wZXJtaXNzaXZlX25hbWVfdyh0ZW1wbGF0ZSk7CiAJCWlmICh3cyA9PSBOVUxMKSB7CiAJCQllcnJubyA9IEVJTlZBTDsKIAkJCWdvdG8gZXhpdF90bXBmaWxlOwogCQl9Ci0JCS8qIFNwZWNpZmllcyBGSUxFX0ZMQUdfREVMRVRFX09OX0NMT1NFIGZsYWcgaXMgdG8KLQkJICogZGVsZXRlIHRoaXMgdGVtcG9yYXJ5IGZpbGUgaW1tZWRpYXRlbHkgd2hlbiB0aGlzCi0JCSAqIGZpbGUgY2xvc2VkLiAqLworCQlpZiAodGVtcGxhdGUgPT0gdGVtcF9uYW1lLnMpIHsKKwkJCWF0dHIgPSBGSUxFX0FUVFJJQlVURV9URU1QT1JBUlkgfAorCQkJICAgICAgIEZJTEVfRkxBR19ERUxFVEVfT05fQ0xPU0U7CisJCX0gZWxzZSB7CisJCQkvKiBta3N0ZW1wICovCisJCQlhdHRyID0gRklMRV9BVFRSSUJVVEVfTk9STUFMOworCQl9CiAJCWggPSBDcmVhdGVGaWxlVyh3cywKIAkJICAgIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUgfCBERUxFVEUsCiAJCSAgICAwLC8qIE5vdCBzaGFyZSAqLwogCQkgICAgTlVMTCwKIAkJICAgIENSRUFURV9ORVcsLyogQ3JlYXRlIGEgbmV3IGZpbGUgb25seSAqLwotCQkgICAgRklMRV9BVFRSSUJVVEVfVEVNUE9SQVJZIHwgRklMRV9GTEFHX0RFTEVURV9PTl9DTE9TRSwKKwkJICAgIGF0dHIsCiAJCSAgICBOVUxMKTsKIAkJaWYgKGggPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKIAkJCS8qIFRoZSBzYW1lIGZpbGUgYWxyZWFkeSBleGlzdHMuIHJldHJ5IHdpdGgKQEAgLTM1OCwxMCArMzc0LDIzIEBACiAJaWYgKGhQcm92ICE9IChIQ1JZUFRQUk9WKU5VTEwpCiAJCUNyeXB0UmVsZWFzZUNvbnRleHQoaFByb3YsIDApOwogCWZyZWUod3MpOwotCWFyY2hpdmVfd3N0cmluZ19mcmVlKCZ0ZW1wX25hbWUpOworCWlmICh0ZW1wbGF0ZSA9PSB0ZW1wX25hbWUucykKKwkJYXJjaGl2ZV93c3RyaW5nX2ZyZWUoJnRlbXBfbmFtZSk7CiAJcmV0dXJuIChmZCk7CiB9CiAKK2ludAorX19hcmNoaXZlX21rdGVtcChjb25zdCBjaGFyICp0bXBkaXIpCit7CisJcmV0dXJuIF9fYXJjaGl2ZV9ta3RlbXB4KHRtcGRpciwgTlVMTCk7Cit9CisKK2ludAorX19hcmNoaXZlX21rc3RlbXAod2NoYXJfdCAqdGVtcGxhdGUpCit7CisJcmV0dXJuIF9fYXJjaGl2ZV9ta3RlbXB4KE5VTEwsIHRlbXBsYXRlKTsKK30KKwogI2Vsc2UKIAogc3RhdGljIGludApAQCAtNDE0LDE0ICs0NDMsMjQgQEAKIAlyZXR1cm4gKGZkKTsKIH0KIAotI2Vsc2UKK2ludAorX19hcmNoaXZlX21rc3RlbXAoY2hhciAqdGVtcGxhdGUpCit7CisJaW50IGZkID0gLTE7CisJZmQgPSBta3N0ZW1wKHRlbXBsYXRlKTsKKwlpZiAoZmQgPj0gMCkKKwkJX19hcmNoaXZlX2Vuc3VyZV9jbG9leGVjX2ZsYWcoZmQpOworCXJldHVybiAoZmQpOworfQorCisjZWxzZSAvKiAhSEFWRV9NS1NURU1QICovCiAKIC8qCiAgKiBXZSB1c2UgYSBwcml2YXRlIHJvdXRpbmUuCiAgKi8KIAotaW50Ci1fX2FyY2hpdmVfbWt0ZW1wKGNvbnN0IGNoYXIgKnRtcGRpcikKK3N0YXRpYyBpbnQKK19fYXJjaGl2ZV9ta3RlbXB4KGNvbnN0IGNoYXIgKnRtcGRpciwgY2hhciAqdGVtcGxhdGUpCiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIG51bVtdID0gewogCQknMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywKQEAgLTQzOSwyNiArNDc4LDM3IEBACiAJY2hhciAqdHAsICplcDsKIAogCWZkID0gLTE7Ci0JYXJjaGl2ZV9zdHJpbmdfaW5pdCgmdGVtcF9uYW1lKTsKLQlpZiAodG1wZGlyID09IE5VTEwpIHsKLQkJaWYgKGdldF90ZW1wZGlyKCZ0ZW1wX25hbWUpICE9IEFSQ0hJVkVfT0spCisJaWYgKHRlbXBsYXRlID09IE5VTEwpIHsKKwkJYXJjaGl2ZV9zdHJpbmdfaW5pdCgmdGVtcF9uYW1lKTsKKwkJaWYgKHRtcGRpciA9PSBOVUxMKSB7CisJCQlpZiAoZ2V0X3RlbXBkaXIoJnRlbXBfbmFtZSkgIT0gQVJDSElWRV9PSykKKwkJCQlnb3RvIGV4aXRfdG1wZmlsZTsKKwkJfSBlbHNlCisJCQlhcmNoaXZlX3N0cmNweSgmdGVtcF9uYW1lLCB0bXBkaXIpOworCQlpZiAodGVtcF9uYW1lLnNbdGVtcF9uYW1lLmxlbmd0aC0xXSA9PSAnLycpIHsKKwkJCXRlbXBfbmFtZS5zW3RlbXBfbmFtZS5sZW5ndGgtMV0gPSAnXDAnOworCQkJdGVtcF9uYW1lLmxlbmd0aCAtLTsKKwkJfQorCQlpZiAobGFfc3RhdCh0ZW1wX25hbWUucywgJnN0KSA8IDApCiAJCQlnb3RvIGV4aXRfdG1wZmlsZTsKLQl9IGVsc2UKLQkJYXJjaGl2ZV9zdHJjcHkoJnRlbXBfbmFtZSwgdG1wZGlyKTsKLQlpZiAodGVtcF9uYW1lLnNbdGVtcF9uYW1lLmxlbmd0aC0xXSA9PSAnLycpIHsKLQkJdGVtcF9uYW1lLnNbdGVtcF9uYW1lLmxlbmd0aC0xXSA9ICdcMCc7Ci0JCXRlbXBfbmFtZS5sZW5ndGggLS07CisJCWlmICghU19JU0RJUihzdC5zdF9tb2RlKSkgeworCQkJZXJybm8gPSBFTk9URElSOworCQkJZ290byBleGl0X3RtcGZpbGU7CisJCX0KKwkJYXJjaGl2ZV9zdHJjYXQoJnRlbXBfbmFtZSwgIi9saWJhcmNoaXZlXyIpOworCQl0cCA9IHRlbXBfbmFtZS5zICsgYXJjaGl2ZV9zdHJsZW4oJnRlbXBfbmFtZSk7CisJCWFyY2hpdmVfc3RyY2F0KCZ0ZW1wX25hbWUsICJYWFhYWFhYWFhYIik7CisJCWVwID0gdGVtcF9uYW1lLnMgKyBhcmNoaXZlX3N0cmxlbigmdGVtcF9uYW1lKTsKKwkJdGVtcGxhdGUgPSB0ZW1wX25hbWUuczsKKwl9IGVsc2UgeworCQl0cCA9IHN0cmNocih0ZW1wbGF0ZSwgJ1gnKTsKKwkJaWYgKHRwID09IE5VTEwpCS8qIE5vIFgsIHByb2dyYW1taW5nIGVycm9yICovCisJCQlhYm9ydCgpOworCQlmb3IgKGVwID0gdHA7ICplcCA9PSAnWCc7IGVwKyspCisJCQljb250aW51ZTsKKwkJaWYgKCplcCkJLyogWCBmb2xsb3dlZCBieSBub24gWCwgcHJvZ3JhbW1pbmcgZXJyb3IgKi8KKwkJCWFib3J0KCk7CiAJfQotCWlmIChzdGF0KHRlbXBfbmFtZS5zLCAmc3QpIDwgMCkKLQkJZ290byBleGl0X3RtcGZpbGU7Ci0JaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7Ci0JCWVycm5vID0gRU5PVERJUjsKLQkJZ290byBleGl0X3RtcGZpbGU7Ci0JfQotCWFyY2hpdmVfc3RyY2F0KCZ0ZW1wX25hbWUsICIvbGliYXJjaGl2ZV8iKTsKLQl0cCA9IHRlbXBfbmFtZS5zICsgYXJjaGl2ZV9zdHJsZW4oJnRlbXBfbmFtZSk7Ci0JYXJjaGl2ZV9zdHJjYXQoJnRlbXBfbmFtZSwgIlhYWFhYWFhYWFgiKTsKLQllcCA9IHRlbXBfbmFtZS5zICsgYXJjaGl2ZV9zdHJsZW4oJnRlbXBfbmFtZSk7CiAKIAlkbyB7CiAJCWNoYXIgKnA7CkBAIC00NjksMTkgKzUxOSwzMyBAQAogCQkJaW50IGQgPSAqKCh1bnNpZ25lZCBjaGFyICopcCkgJSBzaXplb2YobnVtKTsKIAkJCSpwKysgPSBudW1bZF07CiAJCX0KLQkJZmQgPSBvcGVuKHRlbXBfbmFtZS5zLCBPX0NSRUFUIHwgT19FWENMIHwgT19SRFdSIHwgT19DTE9FWEVDLAorCQlmZCA9IG9wZW4odGVtcGxhdGUsIE9fQ1JFQVQgfCBPX0VYQ0wgfCBPX1JEV1IgfCBPX0NMT0VYRUMsCiAJCQkgIDA2MDApOwogCX0gd2hpbGUgKGZkIDwgMCAmJiBlcnJubyA9PSBFRVhJU1QpOwogCWlmIChmZCA8IDApCiAJCWdvdG8gZXhpdF90bXBmaWxlOwogCV9fYXJjaGl2ZV9lbnN1cmVfY2xvZXhlY19mbGFnKGZkKTsKLQl1bmxpbmsodGVtcF9uYW1lLnMpOworCWlmICh0ZW1wbGF0ZSA9PSB0ZW1wX25hbWUucykKKwkJdW5saW5rKHRlbXBfbmFtZS5zKTsKIGV4aXRfdG1wZmlsZToKLQlhcmNoaXZlX3N0cmluZ19mcmVlKCZ0ZW1wX25hbWUpOworCWlmICh0ZW1wbGF0ZSA9PSB0ZW1wX25hbWUucykKKwkJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmdGVtcF9uYW1lKTsKIAlyZXR1cm4gKGZkKTsKIH0KIAotI2VuZGlmIC8qIEhBVkVfTUtTVEVNUCAqLworaW50CitfX2FyY2hpdmVfbWt0ZW1wKGNvbnN0IGNoYXIgKnRtcGRpcikKK3sKKwlyZXR1cm4gX19hcmNoaXZlX21rdGVtcHgodG1wZGlyLCBOVUxMKTsKK30KKworaW50CitfX2FyY2hpdmVfbWtzdGVtcChjaGFyICp0ZW1wbGF0ZSkKK3sKKwlyZXR1cm4gX19hcmNoaXZlX21rdGVtcHgoTlVMTCwgdGVtcGxhdGUpOworfQorCisjZW5kaWYgLyogIUhBVkVfTUtTVEVNUCAqLwogI2VuZGlmIC8qICFfV0lOMzIgfHwgX19DWUdXSU5fXyAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd2luZG93cy5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd2luZG93cy5jCmluZGV4IDZmZjg3NDkuLjYyNGUyNzAgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dpbmRvd3MuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93aW5kb3dzLmMKQEAgLTQ0NSw3ICs0NDUsOCBAQAogICogV2luZG93cycgc3RhdCgpIGRvZXMgbm90IGFjY2VwdCB0aGUgcGF0aCBhZGRlZCAiXFw/XCIgZXNwZWNpYWxseSAiPyIKICAqIGNoYXJhY3Rlci4KICAqIEl0IG1lYW5zIHdlIGNhbm5vdCBhY2Nlc3MgdGhlIGxvbmcgbmFtZSBwYXRoIGxvbmdlciB0aGFuIE1BWF9QQVRILgotICogU28gSSd2ZSBpbXBsZW1lbnRlZCBzaW11bGFyIFdpbmRvd3MnIHN0YXQoKSB0byBhY2Nlc3MgdGhlIGxvbmcgbmFtZSBwYXRoLgorICogU28gSSd2ZSBpbXBsZW1lbnRlZCBhIGZ1bmN0aW9uIHNpbWlsYXIgdG8gV2luZG93cycgc3RhdCgpIHRvIGFjY2VzcyB0aGUKKyAqIGxvbmcgbmFtZSBwYXRoLgogICogQW5kIEkndmUgYWRkZWQgc29tZSBmZWF0dXJlLgogICogMS4gc2V0IHN0X2lubyBieSBuRmlsZUluZGV4SGlnaCBhbmQgbkZpbGVJbmRleExvdyBvZgogICogICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04uCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93aW5kb3dzLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93aW5kb3dzLmgKaW5kZXggYzNhZWQwYy4uZGRhNjNiOCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd2luZG93cy5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dpbmRvd3MuaApAQCAtMjcsMTAgKzI3LDYgQEAKICAqICRGcmVlQlNEJAogICovCiAKLSNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECi0jZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KLSNlbmRpZgotCiAvKgogICogVE9ETzogQSBsb3Qgb2Ygc3R1ZmYgaW4gaGVyZSBpc24ndCBhY3R1YWxseSB1c2VkIGJ5IGxpYmFyY2hpdmUgYW5kCiAgKiBjYW4gYmUgdHJpbW1lZCBvdXQuICBOb3RlIHRoYXQgdGhpcyBmaWxlIGlzIHVzZWQgYnkgbGliYXJjaGl2ZSBhbmQKQEAgLTQ4LDYgKzQ0LDEwIEBACiAjaWZuZGVmIExJQkFSQ0hJVkVfQVJDSElWRV9XSU5ET1dTX0hfSU5DTFVERUQKICNkZWZpbmUJTElCQVJDSElWRV9BUkNISVZFX1dJTkRPV1NfSF9JTkNMVURFRAogCisjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAorI2Vycm9yIFRoaXMgaGVhZGVyIGlzIG9ubHkgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHRvIGxpYmFyY2hpdmUuCisjZW5kaWYKKwogLyogU3RhcnQgb2YgY29uZmlndXJhdGlvbiBmb3IgbmF0aXZlIFdpbjMyICAqLwogI2lmbmRlZiBNSU5HV19IQVNfU0VDVVJFX0FQSQogI2RlZmluZSBNSU5HV19IQVNfU0VDVVJFX0FQSSAxCkBAIC0xMTcsMTAgKzExNyw3IEBACiAjaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAhZGVmaW5lZChfX1dBVENPTUNfXykKICNkZWZpbmUgc2V0bW9kZQkJX3NldG1vZGUKICNlbmRpZgotI2lmZGVmIHN0YXQKLSN1bmRlZiBzdGF0Ci0jZW5kaWYKLSNkZWZpbmUJc3RhdChwYXRoLHN0cmVmKQkJX19sYV9zdGF0KHBhdGgsc3RyZWYpCisjZGVmaW5lCWxhX3N0YXQocGF0aCxzdHJlZikJCV9fbGFfc3RhdChwYXRoLHN0cmVmKQogI2lmICFkZWZpbmVkKF9fV0FUQ09NQ19fKQogI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykKICNkZWZpbmUJc3RyZHVwCQlfc3RyZHVwCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZS4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGUuMwppbmRleCBjMTE2NGY1Li5lN2Y3ZjEzIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZS4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlLjMKQEAgLTExOCw3ICsxMTgsNyBAQAogLkZuIGFyY2hpdmVfd3JpdGVfZnJlZQogZnVuY3Rpb24gdG8gcmVsZWFzZSBhbGwgcmVzb3VyY2VzLgogLlwiCi0uU2ggRVhBTVBMRQorLlNoIEVYQU1QTEVTCiBUaGUgZm9sbG93aW5nIHNrZXRjaCBpbGx1c3RyYXRlcyBiYXNpYyB1c2FnZSBvZiB0aGUgbGlicmFyeS4KIEluIHRoaXMgZXhhbXBsZSwKIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgYXJlIHNpbXBseSB3cmFwcGVycyBhcm91bmQgdGhlIHN0YW5kYXJkCkBAIC0xOTIsNyArMTkyLDcgQEAKICAgaWYgKGFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9maWx0ZXJfYnlfZXh0KGEsIG91dG5hbWUpICE9IEFSQ0hJVkVfT0spICB7CiAgICAgYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX2d6aXAoYSk7CiAgICAgYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3VzdGFyKGEpOwotICB9ICAKKyAgfQogICBhcmNoaXZlX3dyaXRlX29wZW4oYSwgbXlkYXRhLCBteW9wZW4sIG15d3JpdGUsIG15Y2xvc2UpOwogICB3aGlsZSAoKmZpbGVuYW1lKSB7CiAgICAgc3RhdCgqZmlsZW5hbWUsICZzdCk7CkBAIC0yMjUsOCArMjI1LDggQEAKIC5FZAogLlNoIFNFRSBBTFNPCiAuWHIgdGFyIDEgLAotLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZV9zZXRfb3B0aW9ucyAzICwKKy5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGNwaW8gNSAsCiAuWHIgbXRyZWUgNSAsCiAuWHIgdGFyIDUKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZS5jCmluZGV4IGU4ZGFmNTMuLjk4YTU1ZmIgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGUuYwpAQCAtMjEyLDYgKzIxMiw3IEBACiAKIAlmID0gY2FsbG9jKDEsIHNpemVvZigqZikpOwogCWYtPmFyY2hpdmUgPSBfYTsKKwlmLT5zdGF0ZSA9IEFSQ0hJVkVfV1JJVEVfRklMVEVSX1NUQVRFX05FVzsKIAlpZiAoYS0+ZmlsdGVyX2ZpcnN0ID09IE5VTEwpCiAJCWEtPmZpbHRlcl9maXJzdCA9IGY7CiAJZWxzZQpAQCAtMjI4LDYgKzIyOSw5IEBACiAgICAgY29uc3Qgdm9pZCAqYnVmZiwgc2l6ZV90IGxlbmd0aCkKIHsKIAlpbnQgcjsKKwkvKiBOZXZlciB3cml0ZSB0byBub24tb3BlbiBmaWx0ZXJzICovCisJaWYgKGYtPnN0YXRlICE9IEFSQ0hJVkVfV1JJVEVfRklMVEVSX1NUQVRFX09QRU4pCisJCXJldHVybihBUkNISVZFX0ZBVEFMKTsKIAlpZiAobGVuZ3RoID09IDApCiAJCXJldHVybihBUkNISVZFX09LKTsKIAlpZiAoZi0+d3JpdGUgPT0gTlVMTCkKQEAgLTI0MCwyNyArMjQ0LDcwIEBACiB9CiAKIC8qCi0gKiBPcGVuIGEgZmlsdGVyLgorICogUmVjdXJzaXZlIGZ1bmN0aW9uIGZvciBvcGVuaW5nIHRoZSBmaWx0ZXIgY2hhaW4KKyAqIExhc3QgZmlsdGVyIGlzIG9wZW5lZCBmaXJzdAogICovCi1pbnQKK3N0YXRpYyBpbnQKIF9fYXJjaGl2ZV93cml0ZV9vcGVuX2ZpbHRlcihzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9maWx0ZXIgKmYpCiB7Ci0JaWYgKGYtPm9wZW4gPT0gTlVMTCkKKwlpbnQgcmV0OworCisJcmV0ID0gQVJDSElWRV9PSzsKKwlpZiAoZi0+bmV4dF9maWx0ZXIgIT0gTlVMTCkKKwkJcmV0ID0gX19hcmNoaXZlX3dyaXRlX29wZW5fZmlsdGVyKGYtPm5leHRfZmlsdGVyKTsKKwlpZiAocmV0ICE9IEFSQ0hJVkVfT0spCisJCXJldHVybiAocmV0KTsKKwlpZiAoZi0+c3RhdGUgIT0gQVJDSElWRV9XUklURV9GSUxURVJfU1RBVEVfTkVXKQorCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworCWlmIChmLT5vcGVuID09IE5VTEwpIHsKKwkJZi0+c3RhdGUgPSBBUkNISVZFX1dSSVRFX0ZJTFRFUl9TVEFURV9PUEVOOwogCQlyZXR1cm4gKEFSQ0hJVkVfT0spOwotCXJldHVybiAoZi0+b3BlbikoZik7CisJfQorCXJldCA9IChmLT5vcGVuKShmKTsKKwlpZiAocmV0ID09IEFSQ0hJVkVfT0spCisJCWYtPnN0YXRlID0gQVJDSElWRV9XUklURV9GSUxURVJfU1RBVEVfT1BFTjsKKwllbHNlCisJCWYtPnN0YXRlID0gQVJDSElWRV9XUklURV9GSUxURVJfU1RBVEVfRkFUQUw7CisJcmV0dXJuIChyZXQpOwogfQogCiAvKgotICogQ2xvc2UgYSBmaWx0ZXIuCisgKiBPcGVuIGFsbCBmaWx0ZXJzCiAgKi8KLWludAotX19hcmNoaXZlX3dyaXRlX2Nsb3NlX2ZpbHRlcihzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9maWx0ZXIgKmYpCitzdGF0aWMgaW50CitfX2FyY2hpdmVfd3JpdGVfZmlsdGVyc19vcGVuKHN0cnVjdCBhcmNoaXZlX3dyaXRlICphKQogewotCWlmIChmLT5jbG9zZSAhPSBOVUxMKQotCQlyZXR1cm4gKGYtPmNsb3NlKShmKTsKLQlpZiAoZi0+bmV4dF9maWx0ZXIgIT0gTlVMTCkKLQkJcmV0dXJuIChfX2FyY2hpdmVfd3JpdGVfY2xvc2VfZmlsdGVyKGYtPm5leHRfZmlsdGVyKSk7Ci0JcmV0dXJuIChBUkNISVZFX09LKTsKKwlyZXR1cm4gKF9fYXJjaGl2ZV93cml0ZV9vcGVuX2ZpbHRlcihhLT5maWx0ZXJfZmlyc3QpKTsKK30KKworLyoKKyAqIENsb3NlIGFsbCBmaWx0ZXMKKyAqLworc3RhdGljIGludAorX19hcmNoaXZlX3dyaXRlX2ZpbHRlcnNfY2xvc2Uoc3RydWN0IGFyY2hpdmVfd3JpdGUgKmEpCit7CisJc3RydWN0IGFyY2hpdmVfd3JpdGVfZmlsdGVyICpmOworCWludCByZXQsIHJldDE7CisJcmV0ID0gQVJDSElWRV9PSzsKKwlmb3IgKGYgPSBhLT5maWx0ZXJfZmlyc3Q7IGYgIT0gTlVMTDsgZiA9IGYtPm5leHRfZmlsdGVyKSB7CisJCS8qIERvIG5vdCBjbG9zZSBmaWx0ZXJzIHRoYXQgYXJlIG5vdCBvcGVuICovCisJCWlmIChmLT5zdGF0ZSA9PSBBUkNISVZFX1dSSVRFX0ZJTFRFUl9TVEFURV9PUEVOKSB7CisJCQlpZiAoZi0+Y2xvc2UgIT0gTlVMTCkgeworCQkJCXJldDEgPSAoZi0+Y2xvc2UpKGYpOworCQkJCWlmIChyZXQxIDwgcmV0KQorCQkJCQlyZXQgPSByZXQxOworCQkJCWlmIChyZXQxID09IEFSQ0hJVkVfT0spIHsKKwkJCQkJZi0+c3RhdGUgPQorCQkJCQkgICAgQVJDSElWRV9XUklURV9GSUxURVJfU1RBVEVfQ0xPU0VEOworCQkJCX0gZWxzZSB7CisJCQkJCWYtPnN0YXRlID0KKwkJCQkJICAgIEFSQ0hJVkVfV1JJVEVfRklMVEVSX1NUQVRFX0ZBVEFMOworCQkJCX0KKwkJCX0gZWxzZQorCQkJCWYtPnN0YXRlID0gQVJDSElWRV9XUklURV9GSUxURVJfU1RBVEVfQ0xPU0VEOworCQl9CisJfQorCXJldHVybiAocmV0KTsKIH0KIAogaW50CkBAIC0yOTIsNiArMzM5LDcgQEAKIAlzdHJ1Y3QgYXJjaGl2ZV9ub25lICpzdGF0ZTsKIAl2b2lkICpidWZmZXI7CiAJc2l6ZV90IGJ1ZmZlcl9zaXplOworCWludCByZXQ7CiAKIAlmLT5ieXRlc19wZXJfYmxvY2sgPSBhcmNoaXZlX3dyaXRlX2dldF9ieXRlc19wZXJfYmxvY2soZi0+YXJjaGl2ZSk7CiAJZi0+Ynl0ZXNfaW5fbGFzdF9ibG9jayA9CkBAIC0zMTYsNyArMzY0LDEzIEBACiAKIAlpZiAoYS0+Y2xpZW50X29wZW5lciA9PSBOVUxMKQogCQlyZXR1cm4gKEFSQ0hJVkVfT0spOwotCXJldHVybiAoYS0+Y2xpZW50X29wZW5lcihmLT5hcmNoaXZlLCBhLT5jbGllbnRfZGF0YSkpOworCXJldCA9IGEtPmNsaWVudF9vcGVuZXIoZi0+YXJjaGl2ZSwgYS0+Y2xpZW50X2RhdGEpOworCWlmIChyZXQgIT0gQVJDSElWRV9PSykgeworCQlmcmVlKHN0YXRlLT5idWZmZXIpOworCQlmcmVlKHN0YXRlKTsKKwkJZi0+ZGF0YSA9IE5VTEw7CisJfQorCXJldHVybiAocmV0KTsKIH0KIAogc3RhdGljIGludApAQCAtNDM5LDggKzQ5Myw2IEBACiAJCSgqYS0+Y2xpZW50X2Nsb3NlcikoJmEtPmFyY2hpdmUsIGEtPmNsaWVudF9kYXRhKTsKIAlmcmVlKHN0YXRlLT5idWZmZXIpOwogCWZyZWUoc3RhdGUpOwotCS8qIENsZWFyIHRoZSBjbG9zZSBoYW5kbGVyIG15c2VsZiBub3QgdG8gYmUgY2FsbGVkIGFnYWluLiAqLwotCWYtPmNsb3NlID0gTlVMTDsKIAlhLT5jbGllbnRfZGF0YSA9IE5VTEw7CiAJLyogQ2xlYXIgcGFzc3BocmFzZS4gKi8KIAlpZiAoYS0+cGFzc3BocmFzZSAhPSBOVUxMKSB7CkBAIC00NDgsNiArNTAwLDggQEAKIAkJZnJlZShhLT5wYXNzcGhyYXNlKTsKIAkJYS0+cGFzc3BocmFzZSA9IE5VTEw7CiAJfQorCS8qIENsZWFyIHRoZSBjbG9zZSBoYW5kbGVyIG15c2VsZiBub3QgdG8gYmUgY2FsbGVkIGFnYWluLiAqLworCWYtPnN0YXRlID0gQVJDSElWRV9XUklURV9GSUxURVJfU1RBVEVfQ0xPU0VEOwogCXJldHVybiAocmV0KTsKIH0KIApAQCAtNDc3LDkgKzUzMSwxMCBAQAogCWNsaWVudF9maWx0ZXItPndyaXRlID0gYXJjaGl2ZV93cml0ZV9jbGllbnRfd3JpdGU7CiAJY2xpZW50X2ZpbHRlci0+Y2xvc2UgPSBhcmNoaXZlX3dyaXRlX2NsaWVudF9jbG9zZTsKIAotCXJldCA9IF9fYXJjaGl2ZV93cml0ZV9vcGVuX2ZpbHRlcihhLT5maWx0ZXJfZmlyc3QpOworCXJldCA9IF9fYXJjaGl2ZV93cml0ZV9maWx0ZXJzX29wZW4oYSk7CiAJaWYgKHJldCA8IEFSQ0hJVkVfV0FSTikgewotCQlyMSA9IF9fYXJjaGl2ZV93cml0ZV9jbG9zZV9maWx0ZXIoYS0+ZmlsdGVyX2ZpcnN0KTsKKwkJcjEgPSBfX2FyY2hpdmVfd3JpdGVfZmlsdGVyc19jbG9zZShhKTsKKwkJX19hcmNoaXZlX3dyaXRlX2ZpbHRlcnNfZnJlZShfYSk7CiAJCXJldHVybiAocjEgPCByZXQgPyByMSA6IHJldCk7CiAJfQogCkBAIC01MjEsNyArNTc2LDcgQEAKIAl9CiAKIAkvKiBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIGFuZCBjbG9zZSB0aGUgc3RyZWFtLiAqLwotCXIxID0gX19hcmNoaXZlX3dyaXRlX2Nsb3NlX2ZpbHRlcihhLT5maWx0ZXJfZmlyc3QpOworCXIxID0gX19hcmNoaXZlX3dyaXRlX2ZpbHRlcnNfY2xvc2UoYSk7CiAJaWYgKHIxIDwgcikKIAkJciA9IHIxOwogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX2I2NGVuY29kZS5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9iNjRlbmNvZGUuYwppbmRleCBiNDZiMTlhLi44N2ZkYjczIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX2I2NGVuY29kZS5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfYjY0ZW5jb2RlLmMKQEAgLTE0OSwxMSArMTQ5LDYgQEAKIHsKIAlzdHJ1Y3QgcHJpdmF0ZV9iNjRlbmNvZGUgKnN0YXRlID0gKHN0cnVjdCBwcml2YXRlX2I2NGVuY29kZSAqKWYtPmRhdGE7CiAJc2l6ZV90IGJzID0gNjU1MzYsIGJwYjsKLQlpbnQgcmV0OwotCi0JcmV0ID0gX19hcmNoaXZlX3dyaXRlX29wZW5fZmlsdGVyKGYtPm5leHRfZmlsdGVyKTsKLQlpZiAocmV0ICE9IEFSQ0hJVkVfT0spCi0JCXJldHVybiAocmV0KTsKIAogCWlmIChmLT5hcmNoaXZlLT5tYWdpYyA9PSBBUkNISVZFX1dSSVRFX01BR0lDKSB7CiAJCS8qIEJ1ZmZlciBzaXplIHNob3VsZCBiZSBhIG11bHRpcGxlIG51bWJlciBvZiB0aGUgb2YgYnl0ZXMKQEAgLTI2Niw3ICsyNjEsNiBAQAogYXJjaGl2ZV9maWx0ZXJfYjY0ZW5jb2RlX2Nsb3NlKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2ZpbHRlciAqZikKIHsKIAlzdHJ1Y3QgcHJpdmF0ZV9iNjRlbmNvZGUgKnN0YXRlID0gKHN0cnVjdCBwcml2YXRlX2I2NGVuY29kZSAqKWYtPmRhdGE7Ci0JaW50IHJldCwgcmV0MjsKIAogCS8qIEZsdXNoIHJlbWFpbmluZyBieXRlcy4gKi8KIAlpZiAoc3RhdGUtPmhvbGRfbGVuICE9IDApCkBAIC0yNzQsMTIgKzI2OCw4IEBACiAJYXJjaGl2ZV9zdHJpbmdfc3ByaW50Zigmc3RhdGUtPmVuY29kZWRfYnVmZiwgIj09PT1cbiIpOwogCS8qIFdyaXRlIHRoZSBsYXN0IGJsb2NrICovCiAJYXJjaGl2ZV93cml0ZV9zZXRfYnl0ZXNfaW5fbGFzdF9ibG9jayhmLT5hcmNoaXZlLCAxKTsKLQlyZXQgPSBfX2FyY2hpdmVfd3JpdGVfZmlsdGVyKGYtPm5leHRfZmlsdGVyLAorCXJldHVybiBfX2FyY2hpdmVfd3JpdGVfZmlsdGVyKGYtPm5leHRfZmlsdGVyLAogCSAgICBzdGF0ZS0+ZW5jb2RlZF9idWZmLnMsIGFyY2hpdmVfc3RybGVuKCZzdGF0ZS0+ZW5jb2RlZF9idWZmKSk7Ci0JcmV0MiA9IF9fYXJjaGl2ZV93cml0ZV9jbG9zZV9maWx0ZXIoZi0+bmV4dF9maWx0ZXIpOwotCWlmIChyZXQgPiByZXQyKQotCQlyZXQgPSByZXQyOwotCXJldHVybiAocmV0KTsKIH0KIAogc3RhdGljIGludApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9iemlwMi5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9iemlwMi5jCmluZGV4IDZiZDBkMWQuLjUzNWVmMTcgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfYnppcDIuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX2J6aXAyLmMKQEAgLTE2NywxMCArMTY3LDYgQEAKIAlzdHJ1Y3QgcHJpdmF0ZV9kYXRhICpkYXRhID0gKHN0cnVjdCBwcml2YXRlX2RhdGEgKilmLT5kYXRhOwogCWludCByZXQ7CiAKLQlyZXQgPSBfX2FyY2hpdmVfd3JpdGVfb3Blbl9maWx0ZXIoZi0+bmV4dF9maWx0ZXIpOwotCWlmIChyZXQgIT0gMCkKLQkJcmV0dXJuIChyZXQpOwotCiAJaWYgKGRhdGEtPmNvbXByZXNzZWQgPT0gTlVMTCkgewogCQlzaXplX3QgYnMgPSA2NTUzNiwgYnBiOwogCQlpZiAoZi0+YXJjaGl2ZS0+bWFnaWMgPT0gQVJDSElWRV9XUklURV9NQUdJQykgewpAQCAtMjYyLDcgKzI1OCw3IEBACiBhcmNoaXZlX2NvbXByZXNzb3JfYnppcDJfY2xvc2Uoc3RydWN0IGFyY2hpdmVfd3JpdGVfZmlsdGVyICpmKQogewogCXN0cnVjdCBwcml2YXRlX2RhdGEgKmRhdGEgPSAoc3RydWN0IHByaXZhdGVfZGF0YSAqKWYtPmRhdGE7Ci0JaW50IHJldCwgcjE7CisJaW50IHJldDsKIAogCS8qIEZpbmlzaCBjb21wcmVzc2lvbiBjeWNsZS4gKi8KIAlyZXQgPSBkcml2ZV9jb21wcmVzc29yKGYsIGRhdGEsIDEpOwpAQCAtMjgxLDkgKzI3Nyw3IEBACiAJCSAgICAiRmFpbGVkIHRvIGNsZWFuIHVwIGNvbXByZXNzb3IiKTsKIAkJcmV0ID0gQVJDSElWRV9GQVRBTDsKIAl9Ci0KLQlyMSA9IF9fYXJjaGl2ZV93cml0ZV9jbG9zZV9maWx0ZXIoZi0+bmV4dF9maWx0ZXIpOwotCXJldHVybiAocjEgPCByZXQgPyByMSA6IHJldCk7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9jb21wcmVzcy5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9jb21wcmVzcy5jCmluZGV4IDI2ZmNlZjQuLmQ0MDRmYWUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfY29tcHJlc3MuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX2NvbXByZXNzLmMKQEAgLTE0NiwxNyArMTQ2LDEyIEBACiBzdGF0aWMgaW50CiBhcmNoaXZlX2NvbXByZXNzb3JfY29tcHJlc3Nfb3BlbihzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9maWx0ZXIgKmYpCiB7Ci0JaW50IHJldDsKIAlzdHJ1Y3QgcHJpdmF0ZV9kYXRhICpzdGF0ZTsKIAlzaXplX3QgYnMgPSA2NTUzNiwgYnBiOwogCiAJZi0+Y29kZSA9IEFSQ0hJVkVfRklMVEVSX0NPTVBSRVNTOwogCWYtPm5hbWUgPSAiY29tcHJlc3MiOwogCi0JcmV0ID0gX19hcmNoaXZlX3dyaXRlX29wZW5fZmlsdGVyKGYtPm5leHRfZmlsdGVyKTsKLQlpZiAocmV0ICE9IEFSQ0hJVkVfT0spCi0JCXJldHVybiAocmV0KTsKLQogCXN0YXRlID0gKHN0cnVjdCBwcml2YXRlX2RhdGEgKiljYWxsb2MoMSwgc2l6ZW9mKCpzdGF0ZSkpOwogCWlmIChzdGF0ZSA9PSBOVUxMKSB7CiAJCWFyY2hpdmVfc2V0X2Vycm9yKGYtPmFyY2hpdmUsIEVOT01FTSwKQEAgLTQyNiwzMCArNDIxLDI3IEBACiBhcmNoaXZlX2NvbXByZXNzb3JfY29tcHJlc3NfY2xvc2Uoc3RydWN0IGFyY2hpdmVfd3JpdGVfZmlsdGVyICpmKQogewogCXN0cnVjdCBwcml2YXRlX2RhdGEgKnN0YXRlID0gKHN0cnVjdCBwcml2YXRlX2RhdGEgKilmLT5kYXRhOwotCWludCByZXQsIHJldDI7CisJaW50IHJldDsKIAogCXJldCA9IG91dHB1dF9jb2RlKGYsIHN0YXRlLT5jdXJfY29kZSk7CiAJaWYgKHJldCAhPSBBUkNISVZFX09LKQotCQlnb3RvIGNsZWFudXA7CisJCXJldHVybiByZXQ7CiAJcmV0ID0gb3V0cHV0X2ZsdXNoKGYpOwogCWlmIChyZXQgIT0gQVJDSElWRV9PSykKLQkJZ290byBjbGVhbnVwOworCQlyZXR1cm4gcmV0OwogCiAJLyogV3JpdGUgdGhlIGxhc3QgYmxvY2sgKi8KIAlyZXQgPSBfX2FyY2hpdmVfd3JpdGVfZmlsdGVyKGYtPm5leHRfZmlsdGVyLAogCSAgICBzdGF0ZS0+Y29tcHJlc3NlZCwgc3RhdGUtPmNvbXByZXNzZWRfb2Zmc2V0KTsKLWNsZWFudXA6Ci0JcmV0MiA9IF9fYXJjaGl2ZV93cml0ZV9jbG9zZV9maWx0ZXIoZi0+bmV4dF9maWx0ZXIpOwotCWlmIChyZXQgPiByZXQyKQotCQlyZXQgPSByZXQyOwotCWZyZWUoc3RhdGUtPmNvbXByZXNzZWQpOwotCWZyZWUoc3RhdGUpOwogCXJldHVybiAocmV0KTsKIH0KIAogc3RhdGljIGludAogYXJjaGl2ZV9jb21wcmVzc29yX2NvbXByZXNzX2ZyZWUoc3RydWN0IGFyY2hpdmVfd3JpdGVfZmlsdGVyICpmKQogewotCSh2b2lkKWY7IC8qIFVOVVNFRCAqLworCXN0cnVjdCBwcml2YXRlX2RhdGEgKnN0YXRlID0gKHN0cnVjdCBwcml2YXRlX2RhdGEgKilmLT5kYXRhOworCisJZnJlZShzdGF0ZS0+Y29tcHJlc3NlZCk7CisJZnJlZShzdGF0ZSk7CiAJcmV0dXJuIChBUkNISVZFX09LKTsKIH0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfZ3ppcC5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9nemlwLmMKaW5kZXggOTg2MTIzYS4uOGQ2ODM4YiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9nemlwLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9nemlwLmMKQEAgLTE4NCwxMCArMTg0LDYgQEAKIAlzdHJ1Y3QgcHJpdmF0ZV9kYXRhICpkYXRhID0gKHN0cnVjdCBwcml2YXRlX2RhdGEgKilmLT5kYXRhOwogCWludCByZXQ7CiAKLQlyZXQgPSBfX2FyY2hpdmVfd3JpdGVfb3Blbl9maWx0ZXIoZi0+bmV4dF9maWx0ZXIpOwotCWlmIChyZXQgIT0gQVJDSElWRV9PSykKLQkJcmV0dXJuIChyZXQpOwotCiAJaWYgKGRhdGEtPmNvbXByZXNzZWQgPT0gTlVMTCkgewogCQlzaXplX3QgYnMgPSA2NTUzNiwgYnBiOwogCQlpZiAoZi0+YXJjaGl2ZS0+bWFnaWMgPT0gQVJDSElWRV9XUklURV9NQUdJQykgewpAQCAtMzA3LDcgKzMwMyw3IEBACiB7CiAJdW5zaWduZWQgY2hhciB0cmFpbGVyWzhdOwogCXN0cnVjdCBwcml2YXRlX2RhdGEgKmRhdGEgPSAoc3RydWN0IHByaXZhdGVfZGF0YSAqKWYtPmRhdGE7Ci0JaW50IHJldCwgcjE7CisJaW50IHJldDsKIAogCS8qIEZpbmlzaCBjb21wcmVzc2lvbiBjeWNsZSAqLwogCXJldCA9IGRyaXZlX2NvbXByZXNzb3IoZiwgZGF0YSwgMSk7CkBAIC0zMzgsOCArMzM0LDcgQEAKIAkJICAgICJGYWlsZWQgdG8gY2xlYW4gdXAgY29tcHJlc3NvciIpOwogCQlyZXQgPSBBUkNISVZFX0ZBVEFMOwogCX0KLQlyMSA9IF9fYXJjaGl2ZV93cml0ZV9jbG9zZV9maWx0ZXIoZi0+bmV4dF9maWx0ZXIpOwotCXJldHVybiAocjEgPCByZXQgPyByMSA6IHJldCk7CisJcmV0dXJuIHJldDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfbHo0LmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX2x6NC5jCmluZGV4IDE1ZmQ0OTQuLmNmMTlmYWQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfbHo0LmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9sejQuYwpAQCAtMjIzLDE2ICsyMjMsMTEgQEAKIGFyY2hpdmVfZmlsdGVyX2x6NF9vcGVuKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2ZpbHRlciAqZikKIHsKIAlzdHJ1Y3QgcHJpdmF0ZV9kYXRhICpkYXRhID0gKHN0cnVjdCBwcml2YXRlX2RhdGEgKilmLT5kYXRhOwotCWludCByZXQ7CiAJc2l6ZV90IHJlcXVpcmVkX3NpemU7CiAJc3RhdGljIHNpemVfdCBjb25zdCBia21hcFtdID0geyA2NCAqIDEwMjQsIDI1NiAqIDEwMjQsIDEgKiAxMDI0ICogMTAyNCwKIAkJCSAgIDQgKiAxMDI0ICogMTAyNCB9OwogCXNpemVfdCBwcmVfYmxvY2tfc2l6ZTsKIAotCXJldCA9IF9fYXJjaGl2ZV93cml0ZV9vcGVuX2ZpbHRlcihmLT5uZXh0X2ZpbHRlcik7Ci0JaWYgKHJldCAhPSAwKQotCQlyZXR1cm4gKHJldCk7Ci0KIAlpZiAoZGF0YS0+YmxvY2tfbWF4aW11bV9zaXplIDwgNCkKIAkJZGF0YS0+YmxvY2tfc2l6ZSA9IGJrbWFwWzBdOwogCWVsc2UKQEAgLTM0Myw3ICszMzgsNyBAQAogYXJjaGl2ZV9maWx0ZXJfbHo0X2Nsb3NlKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2ZpbHRlciAqZikKIHsKIAlzdHJ1Y3QgcHJpdmF0ZV9kYXRhICpkYXRhID0gKHN0cnVjdCBwcml2YXRlX2RhdGEgKilmLT5kYXRhOwotCWludCByZXQsIHIxOworCWludCByZXQ7CiAKIAkvKiBGaW5pc2ggY29tcHJlc3Npb24gY3ljbGUuICovCiAJcmV0ID0gKGludClsejRfd3JpdGVfb25lX2Jsb2NrKGYsIE5VTEwsIDApOwpAQCAtMzY2LDkgKzM2MSw3IEBACiAJCXJldCA9IF9fYXJjaGl2ZV93cml0ZV9maWx0ZXIoZi0+bmV4dF9maWx0ZXIsCiAJCQkgICAgZGF0YS0+b3V0X2J1ZmZlciwgZGF0YS0+b3V0IC0gZGF0YS0+b3V0X2J1ZmZlcik7CiAJfQotCi0JcjEgPSBfX2FyY2hpdmVfd3JpdGVfY2xvc2VfZmlsdGVyKGYtPm5leHRfZmlsdGVyKTsKLQlyZXR1cm4gKHIxIDwgcmV0ID8gcjEgOiByZXQpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfbHpvcC5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9sem9wLmMKaW5kZXggYWQ3MDVjNC4uM2JkOTA2MiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9sem9wLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9sem9wLmMKQEAgLTIyOCwxMSArMjI4LDYgQEAKIGFyY2hpdmVfd3JpdGVfbHpvcF9vcGVuKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2ZpbHRlciAqZikKIHsKIAlzdHJ1Y3Qgd3JpdGVfbHpvcCAqZGF0YSA9IChzdHJ1Y3Qgd3JpdGVfbHpvcCAqKWYtPmRhdGE7Ci0JaW50IHJldDsKLQotCXJldCA9IF9fYXJjaGl2ZV93cml0ZV9vcGVuX2ZpbHRlcihmLT5uZXh0X2ZpbHRlcik7Ci0JaWYgKHJldCAhPSBBUkNISVZFX09LKQotCQlyZXR1cm4gKHJldCk7CiAKIAlzd2l0Y2ggKGRhdGEtPmNvbXByZXNzaW9uX2xldmVsKSB7CiAJY2FzZSAxOgpAQCAtNDM5LDEwICs0MzQsNyBAQAogCX0KIAkvKiBXcml0ZSBhIHplcm8gdW5jb21wcmVzc2VkIHNpemUgYXMgdGhlIGVuZCBtYXJrIG9mIHRoZSBzZXJpZXMgb2YKIAkgKiBjb21wcmVzc2VkIGJsb2NrLiAqLwotCXIgPSBfX2FyY2hpdmVfd3JpdGVfZmlsdGVyKGYtPm5leHRfZmlsdGVyLCAmZW5kbWFyaywgc2l6ZW9mKGVuZG1hcmspKTsKLQlpZiAociAhPSBBUkNISVZFX09LKQotCQlyZXR1cm4gKHIpOwotCXJldHVybiAoX19hcmNoaXZlX3dyaXRlX2Nsb3NlX2ZpbHRlcihmLT5uZXh0X2ZpbHRlcikpOworCXJldHVybiBfX2FyY2hpdmVfd3JpdGVfZmlsdGVyKGYtPm5leHRfZmlsdGVyLCAmZW5kbWFyaywgc2l6ZW9mKGVuZG1hcmspKTsKIH0KIAogI2Vsc2UKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfcHJvZ3JhbS5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9wcm9ncmFtLmMKaW5kZXggNjYwZjY5My4uYTRiYzFkOSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9wcm9ncmFtLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl9wcm9ncmFtLmMKQEAgLTIxMiwxMSArMjEyLDYgQEAKICAgICBzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9wcm9ncmFtX2RhdGEgKmRhdGEsIGNvbnN0IGNoYXIgKmNtZCkKIHsKIAlwaWRfdCBjaGlsZDsKLQlpbnQgcmV0OwotCi0JcmV0ID0gX19hcmNoaXZlX3dyaXRlX29wZW5fZmlsdGVyKGYtPm5leHRfZmlsdGVyKTsKLQlpZiAocmV0ICE9IEFSQ0hJVkVfT0spCi0JCXJldHVybiAocmV0KTsKIAogCWlmIChkYXRhLT5jaGlsZF9idWYgPT0gTlVMTCkgewogCQlkYXRhLT5jaGlsZF9idWZfbGVuID0gNjU1MzY7CkBAIC0zNTMsMTEgKzM0OCwxMSBAQAogX19hcmNoaXZlX3dyaXRlX3Byb2dyYW1fY2xvc2Uoc3RydWN0IGFyY2hpdmVfd3JpdGVfZmlsdGVyICpmLAogICAgIHN0cnVjdCBhcmNoaXZlX3dyaXRlX3Byb2dyYW1fZGF0YSAqZGF0YSkKIHsKLQlpbnQgcmV0LCByMSwgc3RhdHVzOworCWludCByZXQsIHN0YXR1czsKIAlzc2l6ZV90IGJ5dGVzX3JlYWQ7CiAKIAlpZiAoZGF0YS0+Y2hpbGQgPT0gMCkKLQkJcmV0dXJuIF9fYXJjaGl2ZV93cml0ZV9jbG9zZV9maWx0ZXIoZi0+bmV4dF9maWx0ZXIpOworCQlyZXR1cm4gQVJDSElWRV9PSzsKIAogCXJldCA9IDA7CiAJY2xvc2UoZGF0YS0+Y2hpbGRfc3RkaW4pOwpAQCAtNDA5LDcgKzQwNCw2IEBACiAJCSAgICAiRXJyb3IgY2xvc2luZyBwcm9ncmFtOiAlcyIsIGRhdGEtPnByb2dyYW1fbmFtZSk7CiAJCXJldCA9IEFSQ0hJVkVfRkFUQUw7CiAJfQotCXIxID0gX19hcmNoaXZlX3dyaXRlX2Nsb3NlX2ZpbHRlcihmLT5uZXh0X2ZpbHRlcik7Ci0JcmV0dXJuIChyMSA8IHJldCA/IHIxIDogcmV0KTsKKwlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX3V1ZW5jb2RlLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX3V1ZW5jb2RlLmMKaW5kZXggMjNkOWMxNS4uMWFkNDU4OSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl91dWVuY29kZS5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfdXVlbmNvZGUuYwpAQCAtMTM4LDExICsxMzgsNiBAQAogewogCXN0cnVjdCBwcml2YXRlX3V1ZW5jb2RlICpzdGF0ZSA9IChzdHJ1Y3QgcHJpdmF0ZV91dWVuY29kZSAqKWYtPmRhdGE7CiAJc2l6ZV90IGJzID0gNjU1MzYsIGJwYjsKLQlpbnQgcmV0OwotCi0JcmV0ID0gX19hcmNoaXZlX3dyaXRlX29wZW5fZmlsdGVyKGYtPm5leHRfZmlsdGVyKTsKLQlpZiAocmV0ICE9IEFSQ0hJVkVfT0spCi0JCXJldHVybiAocmV0KTsKIAogCWlmIChmLT5hcmNoaXZlLT5tYWdpYyA9PSBBUkNISVZFX1dSSVRFX01BR0lDKSB7CiAJCS8qIEJ1ZmZlciBzaXplIHNob3VsZCBiZSBhIG11bHRpcGxlIG51bWJlciBvZiB0aGUgb2YgYnl0ZXMKQEAgLTI1Nyw3ICsyNTIsNiBAQAogYXJjaGl2ZV9maWx0ZXJfdXVlbmNvZGVfY2xvc2Uoc3RydWN0IGFyY2hpdmVfd3JpdGVfZmlsdGVyICpmKQogewogCXN0cnVjdCBwcml2YXRlX3V1ZW5jb2RlICpzdGF0ZSA9IChzdHJ1Y3QgcHJpdmF0ZV91dWVuY29kZSAqKWYtPmRhdGE7Ci0JaW50IHJldCwgcmV0MjsKIAogCS8qIEZsdXNoIHJlbWFpbmluZyBieXRlcy4gKi8KIAlpZiAoc3RhdGUtPmhvbGRfbGVuICE9IDApCkBAIC0yNjUsMTIgKzI1OSw4IEBACiAJYXJjaGl2ZV9zdHJpbmdfc3ByaW50Zigmc3RhdGUtPmVuY29kZWRfYnVmZiwgImBcbmVuZFxuIik7CiAJLyogV3JpdGUgdGhlIGxhc3QgYmxvY2sgKi8KIAlhcmNoaXZlX3dyaXRlX3NldF9ieXRlc19pbl9sYXN0X2Jsb2NrKGYtPmFyY2hpdmUsIDEpOwotCXJldCA9IF9fYXJjaGl2ZV93cml0ZV9maWx0ZXIoZi0+bmV4dF9maWx0ZXIsCisJcmV0dXJuIF9fYXJjaGl2ZV93cml0ZV9maWx0ZXIoZi0+bmV4dF9maWx0ZXIsCiAJICAgIHN0YXRlLT5lbmNvZGVkX2J1ZmYucywgYXJjaGl2ZV9zdHJsZW4oJnN0YXRlLT5lbmNvZGVkX2J1ZmYpKTsKLQlyZXQyID0gX19hcmNoaXZlX3dyaXRlX2Nsb3NlX2ZpbHRlcihmLT5uZXh0X2ZpbHRlcik7Ci0JaWYgKHJldCA+IHJldDIpCi0JCXJldCA9IHJldDI7Ci0JcmV0dXJuIChyZXQpOwogfQogCiBzdGF0aWMgaW50CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX3h6LmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX3h6LmMKaW5kZXggZTRhMzUzNS4uMmFkNGJjYiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl94ei5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfeHouYwpAQCAtMzA5LDEwICszMDksNiBAQAogCXN0cnVjdCBwcml2YXRlX2RhdGEgKmRhdGEgPSBmLT5kYXRhOwogCWludCByZXQ7CiAKLQlyZXQgPSBfX2FyY2hpdmVfd3JpdGVfb3Blbl9maWx0ZXIoZi0+bmV4dF9maWx0ZXIpOwotCWlmIChyZXQgIT0gQVJDSElWRV9PSykKLQkJcmV0dXJuIChyZXQpOwotCiAJaWYgKGRhdGEtPmNvbXByZXNzZWQgPT0gTlVMTCkgewogCQlzaXplX3QgYnMgPSA2NTUzNiwgYnBiOwogCQlpZiAoZi0+YXJjaGl2ZS0+bWFnaWMgPT0gQVJDSElWRV9XUklURV9NQUdJQykgewpAQCAtMzkwLDEwICszODYsMTMgQEAKIAkJCWRhdGEtPmNvbXByZXNzaW9uX2xldmVsID0gNjsKIAkJcmV0dXJuIChBUkNISVZFX09LKTsKIAl9IGVsc2UgaWYgKHN0cmNtcChrZXksICJ0aHJlYWRzIikgPT0gMCkgeworCQljaGFyICplbmRwdHI7CisKIAkJaWYgKHZhbHVlID09IE5VTEwpCiAJCQlyZXR1cm4gKEFSQ0hJVkVfV0FSTik7Ci0JCWRhdGEtPnRocmVhZHMgPSAoaW50KXN0cnRvdWwodmFsdWUsIE5VTEwsIDEwKTsKLQkJaWYgKGRhdGEtPnRocmVhZHMgPT0gMCAmJiBlcnJubyAhPSAwKSB7CisJCWVycm5vID0gMDsKKwkJZGF0YS0+dGhyZWFkcyA9IChpbnQpc3RydG91bCh2YWx1ZSwgJmVuZHB0ciwgMTApOworCQlpZiAoZXJybm8gIT0gMCB8fCAqZW5kcHRyICE9ICdcMCcpIHsKIAkJCWRhdGEtPnRocmVhZHMgPSAxOwogCQkJcmV0dXJuIChBUkNISVZFX1dBUk4pOwogCQl9CkBAIC00NDUsNyArNDQ0LDcgQEAKIGFyY2hpdmVfY29tcHJlc3Nvcl94el9jbG9zZShzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9maWx0ZXIgKmYpCiB7CiAJc3RydWN0IHByaXZhdGVfZGF0YSAqZGF0YSA9IChzdHJ1Y3QgcHJpdmF0ZV9kYXRhICopZi0+ZGF0YTsKLQlpbnQgcmV0LCByMTsKKwlpbnQgcmV0OwogCiAJcmV0ID0gZHJpdmVfY29tcHJlc3NvcihmLCBkYXRhLCAxKTsKIAlpZiAocmV0ID09IEFSQ0hJVkVfT0spIHsKQEAgLTQ2Myw4ICs0NjIsNyBAQAogCQl9CiAJfQogCWx6bWFfZW5kKCYoZGF0YS0+c3RyZWFtKSk7Ci0JcjEgPSBfX2FyY2hpdmVfd3JpdGVfY2xvc2VfZmlsdGVyKGYtPm5leHRfZmlsdGVyKTsKLQlyZXR1cm4gKHIxIDwgcmV0ID8gcjEgOiByZXQpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfenN0ZC5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl96c3RkLmMKaW5kZXggMjUxYjE3ZC4uZDBkNzhhMCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl96c3RkLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl96c3RkLmMKQEAgLTE3MiwxMSArMTcyLDYgQEAKIGFyY2hpdmVfY29tcHJlc3Nvcl96c3RkX29wZW4oc3RydWN0IGFyY2hpdmVfd3JpdGVfZmlsdGVyICpmKQogewogCXN0cnVjdCBwcml2YXRlX2RhdGEgKmRhdGEgPSAoc3RydWN0IHByaXZhdGVfZGF0YSAqKWYtPmRhdGE7Ci0JaW50IHJldDsKLQotCXJldCA9IF9fYXJjaGl2ZV93cml0ZV9vcGVuX2ZpbHRlcihmLT5uZXh0X2ZpbHRlcik7Ci0JaWYgKHJldCAhPSBBUkNISVZFX09LKQotCQlyZXR1cm4gKHJldCk7CiAKIAlpZiAoZGF0YS0+b3V0LmRzdCA9PSBOVUxMKSB7CiAJCXNpemVfdCBicyA9IFpTVERfQ1N0cmVhbU91dFNpemUoKSwgYnBiOwpAQCAtMjM4LDE0ICsyMzMsOSBAQAogYXJjaGl2ZV9jb21wcmVzc29yX3pzdGRfY2xvc2Uoc3RydWN0IGFyY2hpdmVfd3JpdGVfZmlsdGVyICpmKQogewogCXN0cnVjdCBwcml2YXRlX2RhdGEgKmRhdGEgPSAoc3RydWN0IHByaXZhdGVfZGF0YSAqKWYtPmRhdGE7Ci0JaW50IHIxLCByMjsKIAogCS8qIEZpbmlzaCB6c3RkIGZyYW1lICovCi0JcjEgPSBkcml2ZV9jb21wcmVzc29yKGYsIGRhdGEsIDEsIE5VTEwsIDApOwotCi0JcjIgPSBfX2FyY2hpdmVfd3JpdGVfY2xvc2VfZmlsdGVyKGYtPm5leHRfZmlsdGVyKTsKLQotCXJldHVybiByMSA8IHIyID8gcjEgOiByMjsKKwlyZXR1cm4gZHJpdmVfY29tcHJlc3NvcihmLCBkYXRhLCAxLCBOVUxMLCAwKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Jsb2Nrc2l6ZS4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYmxvY2tzaXplLjMKaW5kZXggYWZkODRlYS4uNDk3M2Y5OSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYmxvY2tzaXplLjMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfYmxvY2tzaXplLjMKQEAgLTEwNyw4ICsxMDcsOCBAQAogLlwiCiAuU2ggU0VFIEFMU08KIC5YciB0YXIgMSAsCi0uWHIgbGliYXJjaGl2ZSAzICwKIC5YciBhcmNoaXZlX3dyaXRlX3NldF9vcHRpb25zIDMgLAorLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgY3BpbyA1ICwKIC5YciBtdHJlZSA1ICwKIC5YciB0YXIgNQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGF0YS4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGF0YS4zCmluZGV4IDljMTZjZDkuLmJjMjA4YjQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2RhdGEuMworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kYXRhLjMKQEAgLTgyLDkgKzgyLDkgQEAKIC5cIgogLlNoIFNFRSBBTFNPCiAuWHIgdGFyIDEgLAotLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZV9maW5pc2hfZW50cnkgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZV9zZXRfb3B0aW9ucyAzICwKKy5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGNwaW8gNSAsCiAuWHIgbXRyZWUgNSAsCiAuWHIgdGFyIDUKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2suMyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2suMwppbmRleCA5NDljOWVmLi4yZmEwMTZlIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrLjMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlzay4zCkBAIC0yNCw3ICsyNCw3IEBACiAuXCIKIC5cIiAkRnJlZUJTRCQKIC5cIgotLkRkIEFwcmlsIDMsIDIwMTcKKy5EZCBKYW51YXJ5IDE5LCAyMDIwCiAuRHQgQVJDSElWRV9XUklURV9ESVNLIDMKIC5PcwogLlNoIE5BTUUKQEAgLTExMyw3ICsxMTMsOCBAQAogLlBxIEZyZWVCU0QsIE1hYyBPUyBYCiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBmaWxlIGF0dHJpYnV0ZXMuCiAuSXQgQ20gQVJDSElWRV9FWFRSQUNUX01BQ19NRVRBREFUQQotTWFjIE9TIFggc3BlY2lmaWMuIFJlc3RvcmUgbWV0YWRhdGEgdXNpbmcKK01hYyBPUyBYIHNwZWNpZmljLgorUmVzdG9yZSBtZXRhZGF0YSB1c2luZwogLlhyIGNvcHlmaWxlIDMgLgogQnkgZGVmYXVsdCwKIC5YciBjb3B5ZmlsZSAzCkBAIC0xMzgsNiArMTM5LDExIEBACiBpZiB0aGUgZGVmYXVsdCB1c2VyIGFuZCBncm91cCBJRHMgb2YgbmV3bHktY3JlYXRlZCBvYmplY3RzIG9uIGRpc2sKIGhhcHBlbiB0byBtYXRjaCB0aG9zZSBzcGVjaWZpZWQgaW4gdGhlIGFyY2hpdmUgZW50cnkuCiBCeSBkZWZhdWx0LCBvbmx5IGJhc2ljIHBlcm1pc3Npb25zIGFyZSByZXN0b3JlZCwgYW5kIHVtYXNrIGlzIG9iZXllZC4KKy5JdCBDbSBBUkNISVZFX0VYVFJBQ1RfU0FGRV9XUklURVMKK0V4dHJhY3QgZmlsZXMgYXRvbWljYWxseSwgYnkgZmlyc3QgY3JlYXRpbmcgYSB1bmlxdWUgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4KK3JlbmFtaW5nIGl0IHRvIGl0cyByZXF1aXJlZCBkZXN0aW5hdGlvbiBuYW1lLgorVGhpcyBhdm9pZHMgYSByYWNlIHdoZXJlIGFuIGFwcGxpY2F0aW9uIG1pZ2h0IHNlZSBhIHBhcnRpYWwgZmlsZSAob3Igbm8KK2ZpbGUpIGR1cmluZyBleHRyYWN0aW9uLgogLkl0IENtIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9BQlNPTFVURVBBVEhTCiBSZWZ1c2UgdG8gZXh0cmFjdCBhbiBhYnNvbHV0ZSBwYXRoLgogVGhlIGRlZmF1bHQgaXMgdG8gbm90IHJlZnVzZSBzdWNoIHBhdGhzLgpAQCAtMjY0LDkgKzI3MCw5IEBACiBmdW5jdGlvbnMuCiAuXCIKIC5TaCBTRUUgQUxTTworLlhyIHRhciAxICwKIC5YciBhcmNoaXZlX3JlYWQgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZSAzICwKLS5YciB0YXIgMSAsCiAuWHIgbGliYXJjaGl2ZSAzCiAuU2ggSElTVE9SWQogVGhlCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMKaW5kZXggYWZmYTUwMy4uMWY3ZTY3MyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYwpAQCAtMTY1LDYgKzE2NSwxMCBAQAogI2RlZmluZSBPX05PRk9MTE9XIDAKICNlbmRpZgogCisjaWZuZGVmIEFUX0ZEQ1dECisjZGVmaW5lIEFUX0ZEQ1dEIC0xMDAKKyNlbmRpZgorCiBzdHJ1Y3QgZml4dXBfZW50cnkgewogCXN0cnVjdCBmaXh1cF9lbnRyeQkqbmV4dDsKIAlzdHJ1Y3QgYXJjaGl2ZV9hY2wJIGFjbDsKQEAgLTI0OSw2ICsyNTMsOCBAQAogCXN0cnVjdCBhcmNoaXZlX2VudHJ5CSplbnRyeTsgLyogRW50cnkgYmVpbmcgZXh0cmFjdGVkLiAqLwogCWNoYXIJCQkqbmFtZTsgLyogTmFtZSBvZiBlbnRyeSwgcG9zc2libHkgZWRpdGVkLiAqLwogCXN0cnVjdCBhcmNoaXZlX3N0cmluZwkgX25hbWVfZGF0YTsgLyogYmFja2luZyBzdG9yZSBmb3IgJ25hbWUnICovCisJY2hhcgkJCSp0bXBuYW1lOyAvKiBUZW1wb3JhcnkgbmFtZSAqICovCisJc3RydWN0IGFyY2hpdmVfc3RyaW5nCSBfdG1wbmFtZV9kYXRhOyAvKiBiYWNraW5nIHN0b3JlIGZvciAndG1wbmFtZScgKi8KIAkvKiBUYXNrcyByZW1haW5pbmcgZm9yIHRoaXMgb2JqZWN0LiAqLwogCWludAkJCSB0b2RvOwogCS8qIFRhc2tzIGRlZmVycmVkIHVudGlsIGVuZC1vZi1hcmNoaXZlLiAqLwpAQCAtMzQ4LDYgKzM1NCw5IEBACiAKICNkZWZpbmUgSEZTX0JMT0NLUyhzKQkoKHMpID4+IDEyKQogCisKK3N0YXRpYyBpbnQJbGFfb3BlbmRpcmF0KGludCwgY29uc3QgY2hhciAqKTsKK3N0YXRpYyBpbnQJbGFfbWt0ZW1wKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKik7CiBzdGF0aWMgdm9pZAlmc29ial9lcnJvcihpbnQgKiwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICosIGludCwgY29uc3QgY2hhciAqLAogCQkgICAgY29uc3QgY2hhciAqKTsKIHN0YXRpYyBpbnQJY2hlY2tfc3ltbGlua3NfZnNvYmooY2hhciAqLCBpbnQgKiwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICosCkBAIC00MDEsNiArNDEwLDYxIEBACiAJCSAgICBzaXplX3QsIGludDY0X3QpOwogCiBzdGF0aWMgaW50CitsYV9ta3RlbXAoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqYSkKK3sKKwlpbnQgb2Vycm5vLCBmZDsKKwltb2RlX3QgbW9kZTsKKworCWFyY2hpdmVfc3RyaW5nX2VtcHR5KCZhLT5fdG1wbmFtZV9kYXRhKTsKKwlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKCZhLT5fdG1wbmFtZV9kYXRhLCAiJXMuWFhYWFhYIiwgYS0+bmFtZSk7CisJYS0+dG1wbmFtZSA9IGEtPl90bXBuYW1lX2RhdGEuczsKKworCWZkID0gX19hcmNoaXZlX21rc3RlbXAoYS0+dG1wbmFtZSk7CisJaWYgKGZkID09IC0xKQorCQlyZXR1cm4gLTE7CisKKwltb2RlID0gYS0+bW9kZSAmIDA3NzcgJiB+YS0+dXNlcl91bWFzazsKKwlpZiAoZmNobW9kKGZkLCBtb2RlKSA9PSAtMSkgeworCQlvZXJybm8gPSBlcnJubzsKKwkJY2xvc2UoZmQpOworCQllcnJubyA9IG9lcnJubzsKKwkJcmV0dXJuIC0xOworCX0KKwlyZXR1cm4gZmQ7Cit9CisKK3N0YXRpYyBpbnQKK2xhX29wZW5kaXJhdChpbnQgZmQsIGNvbnN0IGNoYXIgKnBhdGgpIHsKKwljb25zdCBpbnQgZmxhZ3MgPSBPX0NMT0VYRUMKKyNpZiBkZWZpbmVkKE9fQklOQVJZKQorCSAgICB8IE9fQklOQVJZCisjZW5kaWYKKyNpZiBkZWZpbmVkKE9fRElSRUNUT1JZKQorCSAgICB8IE9fRElSRUNUT1JZCisjZW5kaWYKKyNpZiBkZWZpbmVkKE9fUEFUSCkKKwkgICAgfCBPX1BBVEgKKyNlbGlmIGRlZmluZWQoT19TRUFSQ0gpCisJICAgIHwgT19TRUFSQ0gKKyNlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoT19FWEVDKQorCSAgICB8IE9fRVhFQworI2Vsc2UKKwkgICAgfCBPX1JET05MWQorI2VuZGlmCisJICAgIDsKKworI2lmICFkZWZpbmVkKEhBVkVfT1BFTkFUKQorCWlmIChmZCAhPSBBVF9GRENXRCkgeworCQllcnJubyA9IEVOT1RTVVA7CisJCXJldHVybiAoLTEpOworCX0gZWxzZQorCQlyZXR1cm4gKG9wZW4ocGF0aCwgZmxhZ3MpKTsKKyNlbHNlCisJcmV0dXJuIChvcGVuYXQoZmQsIHBhdGgsIGZsYWdzKSk7CisjZW5kaWYKK30KKworc3RhdGljIGludAogbGF6eV9zdGF0KHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEpCiB7CiAJaWYgKGEtPnBzdCAhPSBOVUxMKSB7CkBAIC0xNzA1LDYgKzE3NjksMjAgQEAKIAl9CiAKIAkvKgorCSAqIEhZUE9USEVTSVM6CisJICogSWYgd2UncmUgbm90IHJvb3QsIHdlIHdvbid0IGJlIHNldHRpbmcgYW55IHNlY3VyaXR5CisJICogYXR0cmlidXRlcyB0aGF0IG1heSBiZSB3aXBlZCBieSB0aGUgc2V0X21vZGUoKSByb3V0aW5lCisJICogYmVsb3cuICBXZSBhbHNvIGNhbid0IHNldCB4YXR0ciBvbiBub24tb3duZXItd3JpdGFibGUgZmlsZXMsCisJICogd2hpY2ggbWF5IGJlIHRoZSBzdGF0ZSBhZnRlciBzZXRfbW9kZSgpLiBQZXJmb3JtCisJICogc2V0X3hhdHRycygpIGZpcnN0IGJhc2VkIG9uIHRoZXNlIGNvbnN0cmFpbnRzLgorCSAqLworCWlmIChhLT51c2VyX3VpZCAhPSAwICYmCisJICAgIChhLT50b2RvICYgVE9ET19YQVRUUikpIHsKKwkJaW50IHIyID0gc2V0X3hhdHRycyhhKTsKKwkJaWYgKHIyIDwgcmV0KSByZXQgPSByMjsKKwl9CisKKwkvKgogCSAqIHNldF9tb2RlIG11c3QgcHJlY2VkZSBBQ0xzIG9uIHN5c3RlbXMgc3VjaCBhcyBTb2xhcmlzIGFuZAogCSAqIEZyZWVCU0Qgd2hlcmUgc2V0dGluZyB0aGUgbW9kZSBpbXBsaWNpdGx5IGNsZWFycyBleHRlbmRlZCBBQ0xzCiAJICovCkBAIC0xNzE3LDggKzE3OTUsMTAgQEAKIAkgKiBTZWN1cml0eS1yZWxhdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgKHN1Y2ggYXMKIAkgKiBzZWN1cml0eS5jYXBhYmlsaXR5IG9uIExpbnV4KSBoYXZlIHRvIGJlIHJlc3RvcmVkIGxhc3QsCiAJICogc2luY2UgdGhleSdyZSBpbXBsaWNpdGx5IHJlbW92ZWQgYnkgb3RoZXIgZmlsZSBjaGFuZ2VzLgorCSAqIFdlIGRvIHRoaXMgbGFzdCBvbmx5IHdoZW4gcm9vdC4KIAkgKi8KLQlpZiAoYS0+dG9kbyAmIFRPRE9fWEFUVFIpIHsKKwlpZiAoYS0+dXNlcl91aWQgPT0gMCAmJgorCSAgICAoYS0+dG9kbyAmIFRPRE9fWEFUVFIpKSB7CiAJCWludCByMiA9IHNldF94YXR0cnMoYSk7CiAJCWlmIChyMiA8IHJldCkgcmV0ID0gcjI7CiAJfQpAQCAtMTc3MywxMiArMTg1MywxOCBAQAogCWlmIChhLT5mZCA+PSAwKSB7CiAJCWNsb3NlKGEtPmZkKTsKIAkJYS0+ZmQgPSAtMTsKKwkJaWYgKGEtPnRtcG5hbWUpIHsKKwkJCWlmIChyZW5hbWUoYS0+dG1wbmFtZSwgYS0+bmFtZSkgPT0gLTEpIHsKKwkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgZXJybm8sCisJCQkJICAgICJyZW5hbWUgZmFpbGVkIik7CisJCQkJcmV0ID0gQVJDSElWRV9GQVRBTDsKKwkJCX0KKwkJCWEtPnRtcG5hbWUgPSBOVUxMOworCQl9CiAJfQogCS8qIElmIHRoZXJlJ3MgYW4gZW50cnksIHdlIGNhbiByZWxlYXNlIGl0IG5vdy4gKi8KLQlpZiAoYS0+ZW50cnkpIHsKLQkJYXJjaGl2ZV9lbnRyeV9mcmVlKGEtPmVudHJ5KTsKLQkJYS0+ZW50cnkgPSBOVUxMOwotCX0KKwlhcmNoaXZlX2VudHJ5X2ZyZWUoYS0+ZW50cnkpOworCWEtPmVudHJ5ID0gTlVMTDsKIAlhLT5hcmNoaXZlLnN0YXRlID0gQVJDSElWRV9TVEFURV9IRUFERVI7CiAJcmV0dXJuIChyZXQpOwogfQpAQCAtMTg5NSw3ICsxOTgxLDcgQEAKIAkJcmV0dXJuOwogCiAJLyogVHJ5IHRvIHJlY29yZCBvdXIgc3RhcnRpbmcgZGlyLiAqLwotCWEtPnJlc3RvcmVfcHdkID0gb3BlbigiLiIsIE9fUkRPTkxZIHwgT19CSU5BUlkgfCBPX0NMT0VYRUMpOworCWEtPnJlc3RvcmVfcHdkID0gbGFfb3BlbmRpcmF0KEFUX0ZEQ1dELCAiLiIpOwogCV9fYXJjaGl2ZV9lbnN1cmVfY2xvZXhlY19mbGFnKGEtPnJlc3RvcmVfcHdkKTsKIAlpZiAoYS0+cmVzdG9yZV9wd2QgPCAwKQogCQlyZXR1cm47CkBAIC0yMDE4LDcgKzIxMDQsNyBAQAogCQkgKiBmb2xsb3cgdGhlIHN5bWxpbmsgaWYgd2UncmUgY3JlYXRpbmcgYSBkaXIuCiAJCSAqLwogCQlpZiAoU19JU0RJUihhLT5tb2RlKSkKLQkJCXIgPSBzdGF0KGEtPm5hbWUsICZhLT5zdCk7CisJCQlyID0gbGFfc3RhdChhLT5uYW1lLCAmYS0+c3QpOwogCQkvKgogCQkgKiBJZiBpdCdzIG5vdCBhIGRpciAob3IgaXQncyBhIGJyb2tlbiBzeW1saW5rKSwKIAkJICogdGhlbiBkb24ndCBmb2xsb3cgaXQuCkBAIC0yMDUyLDE3ICsyMTM4LDI4IEBACiAJCX0KIAogCQlpZiAoIVNfSVNESVIoYS0+c3Quc3RfbW9kZSkpIHsKLQkJCS8qIEEgbm9uLWRpciBpcyBpbiB0aGUgd2F5LCB1bmxpbmsgaXQuICovCiAJCQlpZiAoYS0+ZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfQ0xFQVJfTk9DSEFOR0VfRkZMQUdTKQogCQkJCSh2b2lkKWNsZWFyX25vY2hhbmdlX2ZmbGFncyhhKTsKLQkJCWlmICh1bmxpbmsoYS0+bmFtZSkgIT0gMCkgewotCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBlcnJubywKLQkJCQkgICAgIkNhbid0IHVubGluayBhbHJlYWR5LWV4aXN0aW5nIG9iamVjdCIpOwotCQkJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOworCisJCQlpZiAoKGEtPmZsYWdzICYgQVJDSElWRV9FWFRSQUNUX1NBRkVfV1JJVEVTKSAmJgorCQkJICAgIFNfSVNSRUcoYS0+c3Quc3RfbW9kZSkpIHsKKwkJCQkvKiBVc2UgYSB0ZW1wb3JhcnkgZmlsZSB0byBleHRyYWN0ICovCisJCQkJaWYgKChhLT5mZCA9IGxhX21rdGVtcChhKSkgPT0gLTEpCisJCQkJCXJldHVybiBBUkNISVZFX0ZBSUxFRDsKKwkJCQlhLT5wc3QgPSBOVUxMOworCQkJCWVuID0gMDsKKwkJCX0gZWxzZSB7CisJCQkJLyogQSBub24tZGlyIGlzIGluIHRoZSB3YXksIHVubGluayBpdC4gKi8KKwkJCQlpZiAodW5saW5rKGEtPm5hbWUpICE9IDApIHsKKwkJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIGVycm5vLAorCQkJCQkgICAgIkNhbid0IHVubGluayBhbHJlYWR5LWV4aXN0aW5nICIKKwkJCQkJICAgICJvYmplY3QiKTsKKwkJCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7CisJCQkJfQorCQkJCWEtPnBzdCA9IE5VTEw7CisJCQkJLyogVHJ5IGFnYWluLiAqLworCQkJCWVuID0gY3JlYXRlX2ZpbGVzeXN0ZW1fb2JqZWN0KGEpOwogCQkJfQotCQkJYS0+cHN0ID0gTlVMTDsKLQkJCS8qIFRyeSBhZ2Fpbi4gKi8KLQkJCWVuID0gY3JlYXRlX2ZpbGVzeXN0ZW1fb2JqZWN0KGEpOwogCQl9IGVsc2UgaWYgKCFTX0lTRElSKGEtPm1vZGUpKSB7CiAJCQkvKiBBIGRpciBpcyBpbiB0aGUgd2F5IG9mIGEgbm9uLWRpciwgcm1kaXIgaXQuICovCiAJCQlpZiAoYS0+ZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfQ0xFQVJfTk9DSEFOR0VfRkZMQUdTKQpAQCAtMjE2NCw2ICsyMjYxLDEzIEBACiAJCX0KIAkJZnJlZShsaW5rbmFtZV9jb3B5KTsKIAkJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmZXJyb3Jfc3RyaW5nKTsKKwkJLyoKKwkJICogVW5saW5raW5nIGFuZCBsaW5raW5nIGhlcmUgaXMgcmVhbGx5IG5vdCBhdG9taWMsCisJCSAqIGJ1dCBkb2luZyBpdCByaWdodCwgd291bGQgcmVxdWlyZSB1cyB0byBjb25zdHJ1Y3QKKwkJICogYW4gbWt0ZW1wbGluaygpIGZ1bmN0aW9uLCBhbmQgdGhlbiB1c2UgcmVuYW1lKDIpLgorCQkgKi8KKwkJaWYgKGEtPmZsYWdzICYgQVJDSElWRV9FWFRSQUNUX1NBRkVfV1JJVEVTKQorCQkJdW5saW5rKGEtPm5hbWUpOwogCQlyID0gbGluayhsaW5rbmFtZSwgYS0+bmFtZSkgPyBlcnJubyA6IDA7CiAJCS8qCiAJCSAqIE5ldyBjcGlvIGFuZCBwYXggZm9ybWF0cyBhbGxvdyBoYXJkbGluayBlbnRyaWVzCkBAIC0yMTg0LDcgKzIyODgsNyBAQAogI2lmZGVmIEhBVkVfTFNUQVQKIAkJCXIgPSBsc3RhdChhLT5uYW1lLCAmc3QpOwogI2Vsc2UKLQkJCXIgPSBzdGF0KGEtPm5hbWUsICZzdCk7CisJCQlyID0gbGFfc3RhdChhLT5uYW1lLCAmc3QpOwogI2VuZGlmCiAJCQlpZiAociAhPSAwKQogCQkJCXIgPSBlcnJubzsKQEAgLTIyMDIsNiArMjMwNiwxMyBAQAogCWxpbmtuYW1lID0gYXJjaGl2ZV9lbnRyeV9zeW1saW5rKGEtPmVudHJ5KTsKIAlpZiAobGlua25hbWUgIT0gTlVMTCkgewogI2lmIEhBVkVfU1lNTElOSworCQkvKgorCQkgKiBVbmxpbmtpbmcgYW5kIGxpbmtpbmcgaGVyZSBpcyByZWFsbHkgbm90IGF0b21pYywKKwkJICogYnV0IGRvaW5nIGl0IHJpZ2h0LCB3b3VsZCByZXF1aXJlIHVzIHRvIGNvbnN0cnVjdAorCQkgKiBhbiBta3RlbXBzeW1saW5rKCkgZnVuY3Rpb24sIGFuZCB0aGVuIHVzZSByZW5hbWUoMikuCisJCSAqLworCQlpZiAoYS0+ZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfU0FGRV9XUklURVMpCisJCQl1bmxpbmsoYS0+bmFtZSk7CiAJCXJldHVybiBzeW1saW5rKGxpbmtuYW1lLCBhLT5uYW1lKSA/IGVycm5vIDogMDsKICNlbHNlCiAJCXJldHVybiAoRVBFUk0pOwpAQCAtMjIyMywxMSArMjMzNCwyMSBAQAogCSAqLwogCW1vZGUgPSBmaW5hbF9tb2RlICYgMDc3NyAmIH5hLT51c2VyX3VtYXNrOwogCisJLyogCisJICogQWx3YXlzIGNyZWF0ZSB3cml0YWJsZSBzdWNoIHRoYXQgW2Zdc2V0eGF0dHIoKSB3b3JrcyBpZiB3ZSdyZSBub3QKKwkgKiByb290LgorCSAqLworCWlmIChhLT51c2VyX3VpZCAhPSAwICYmCisJICAgIGEtPnRvZG8gJiAoVE9ET19IRlNfQ09NUFJFU1NJT04gfCBUT0RPX1hBVFRSKSkgeworCQltb2RlIHw9IDAyMDA7CisJfQorCiAJc3dpdGNoIChhLT5tb2RlICYgQUVfSUZNVCkgewogCWRlZmF1bHQ6CiAJCS8qIFBPU0lYIHJlcXVpcmVzIHRoYXQgd2UgZmFsbCB0aHJvdWdoIGhlcmUuICovCiAJCS8qIEZBTExUSFJPVUdIICovCiAJY2FzZSBBRV9JRlJFRzoKKwkJYS0+dG1wbmFtZSA9IE5VTEw7CiAJCWEtPmZkID0gb3BlbihhLT5uYW1lLAogCQkgICAgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19FWENMIHwgT19CSU5BUlkgfCBPX0NMT0VYRUMsIG1vZGUpOwogCQlfX2FyY2hpdmVfZW5zdXJlX2Nsb2V4ZWNfZmxhZyhhLT5mZCk7CkBAIC0yMzE5LDcgKzI0NDAsNyBAQAogewogCXN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEgPSAoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqKV9hOwogCXN0cnVjdCBmaXh1cF9lbnRyeSAqbmV4dCwgKnA7Ci0JaW50IHJldDsKKwlpbnQgZmQsIHJldDsKIAogCWFyY2hpdmVfY2hlY2tfbWFnaWMoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfV1JJVEVfRElTS19NQUdJQywKIAkgICAgQVJDSElWRV9TVEFURV9IRUFERVIgfCBBUkNISVZFX1NUQVRFX0RBVEEsCkBAIC0yMzMwLDIxICsyNDUxLDMzIEBACiAJcCA9IHNvcnRfZGlyX2xpc3QoYS0+Zml4dXBfbGlzdCk7CiAKIAl3aGlsZSAocCAhPSBOVUxMKSB7CisJCWZkID0gLTE7CiAJCWEtPnBzdCA9IE5VTEw7IC8qIE1hcmsgc3RhdCBjYWNoZSBhcyBvdXQtb2YtZGF0ZS4gKi8KKwkJaWYgKHAtPmZpeHVwICYKKwkJICAgIChUT0RPX1RJTUVTIHwgVE9ET19NT0RFX0JBU0UgfCBUT0RPX0FDTFMgfCBUT0RPX0ZGTEFHUykpIHsKKwkJCWZkID0gb3BlbihwLT5uYW1lLAorCQkJICAgIE9fV1JPTkxZIHwgT19CSU5BUlkgfCBPX05PRk9MTE9XIHwgT19DTE9FWEVDKTsKKwkJfQogCQlpZiAocC0+Zml4dXAgJiBUT0RPX1RJTUVTKSB7Ci0JCQlzZXRfdGltZXMoYSwgLTEsIHAtPm1vZGUsIHAtPm5hbWUsCisJCQlzZXRfdGltZXMoYSwgZmQsIHAtPm1vZGUsIHAtPm5hbWUsCiAJCQkgICAgcC0+YXRpbWUsIHAtPmF0aW1lX25hbm9zLAogCQkJICAgIHAtPmJpcnRodGltZSwgcC0+YmlydGh0aW1lX25hbm9zLAogCQkJICAgIHAtPm10aW1lLCBwLT5tdGltZV9uYW5vcywKIAkJCSAgICBwLT5jdGltZSwgcC0+Y3RpbWVfbmFub3MpOwogCQl9Ci0JCWlmIChwLT5maXh1cCAmIFRPRE9fTU9ERV9CQVNFKQorCQlpZiAocC0+Zml4dXAgJiBUT0RPX01PREVfQkFTRSkgeworI2lmZGVmIEhBVkVfRkNITU9ECisJCQlpZiAoZmQgPj0gMCkKKwkJCQlmY2htb2QoZmQsIHAtPm1vZGUpOworCQkJZWxzZQorI2VuZGlmCiAJCQljaG1vZChwLT5uYW1lLCBwLT5tb2RlKTsKKwkJfQogCQlpZiAocC0+Zml4dXAgJiBUT0RPX0FDTFMpCi0JCQlhcmNoaXZlX3dyaXRlX2Rpc2tfc2V0X2FjbHMoJmEtPmFyY2hpdmUsIC0xLCBwLT5uYW1lLAotCQkJICAgICZwLT5hY2wsIHAtPm1vZGUpOworCQkJYXJjaGl2ZV93cml0ZV9kaXNrX3NldF9hY2xzKCZhLT5hcmNoaXZlLCBmZCwKKwkJCSAgICBwLT5uYW1lLCAmcC0+YWNsLCBwLT5tb2RlKTsKIAkJaWYgKHAtPmZpeHVwICYgVE9ET19GRkxBR1MpCi0JCQlzZXRfZmZsYWdzX3BsYXRmb3JtKGEsIC0xLCBwLT5uYW1lLAorCQkJc2V0X2ZmbGFnc19wbGF0Zm9ybShhLCBmZCwgcC0+bmFtZSwKIAkJCSAgICBwLT5tb2RlLCBwLT5mZmxhZ3Nfc2V0LCAwKTsKIAkJaWYgKHAtPmZpeHVwICYgVE9ET19NQUNfTUVUQURBVEEpCiAJCQlzZXRfbWFjX21ldGFkYXRhKGEsIHAtPm5hbWUsIHAtPm1hY19tZXRhZGF0YSwKQEAgLTIzNTMsNiArMjQ4Niw4IEBACiAJCWFyY2hpdmVfYWNsX2NsZWFyKCZwLT5hY2wpOwogCQlmcmVlKHAtPm1hY19tZXRhZGF0YSk7CiAJCWZyZWUocC0+bmFtZSk7CisJCWlmIChmZCA+PSAwKQorCQkJY2xvc2UoZmQpOwogCQlmcmVlKHApOwogCQlwID0gbmV4dDsKIAl9CkBAIC0yMzczLDkgKzI1MDgsOSBAQAogCXJldCA9IF9hcmNoaXZlX3dyaXRlX2Rpc2tfY2xvc2UoJmEtPmFyY2hpdmUpOwogCWFyY2hpdmVfd3JpdGVfZGlza19zZXRfZ3JvdXBfbG9va3VwKCZhLT5hcmNoaXZlLCBOVUxMLCBOVUxMLCBOVUxMKTsKIAlhcmNoaXZlX3dyaXRlX2Rpc2tfc2V0X3VzZXJfbG9va3VwKCZhLT5hcmNoaXZlLCBOVUxMLCBOVUxMLCBOVUxMKTsKLQlpZiAoYS0+ZW50cnkpCi0JCWFyY2hpdmVfZW50cnlfZnJlZShhLT5lbnRyeSk7CisJYXJjaGl2ZV9lbnRyeV9mcmVlKGEtPmVudHJ5KTsKIAlhcmNoaXZlX3N0cmluZ19mcmVlKCZhLT5fbmFtZV9kYXRhKTsKKwlhcmNoaXZlX3N0cmluZ19mcmVlKCZhLT5fdG1wbmFtZV9kYXRhKTsKIAlhcmNoaXZlX3N0cmluZ19mcmVlKCZhLT5hcmNoaXZlLmVycm9yX3N0cmluZyk7CiAJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmYS0+cGF0aF9zYWZlKTsKIAlhLT5hcmNoaXZlLm1hZ2ljID0gMDsKQEAgLTI1MTgsOCArMjY1Myw2IEBACiAgKiBzY2FuIHRoZSBwYXRoIGFuZCBib3RoIGNhbiBiZSBvcHRpbWl6ZWQgYnkgY29tcGFyaW5nIGFnYWluc3Qgb3RoZXIKICAqIHJlY2VudCBwYXRocy4KICAqLwotLyogVE9ETzogRXh0ZW5kIHRoaXMgdG8gc3VwcG9ydCBzeW1saW5rcyBvbiBXaW5kb3dzIFZpc3RhIGFuZCBsYXRlci4gKi8KLQogLyoKICAqIENoZWNrcyB0aGUgZ2l2ZW4gcGF0aCB0byBzZWUgaWYgYW55IGVsZW1lbnRzIGFsb25nIGl0IGFyZSBzeW1saW5rcy4gIFJldHVybnMKICAqIEFSQ0hJVkVfT0sgaWYgdGhlcmUgYXJlIG5vbmUsIG90aGVyd2lzZSBwdXRzIGFuIGVycm9yIGluIGVycm1zZy4KQEAgLTI1MjgsNyArMjY2MSw4IEBACiBjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmFfZW5vLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmFfZXN0ciwKICAgICBpbnQgZmxhZ3MpCiB7Ci0jaWYgIWRlZmluZWQoSEFWRV9MU1RBVCkKKyNpZiAhZGVmaW5lZChIQVZFX0xTVEFUKSAmJiBcCisgICAgIShkZWZpbmVkKEhBVkVfT1BFTkFUKSAmJiBkZWZpbmVkKEhBVkVfRlNUQVRBVCkgJiYgZGVmaW5lZChIQVZFX1VOTElOS0FUKSkKIAkvKiBQbGF0Zm9ybSBkb2Vzbid0IGhhdmUgbHN0YXQsIHNvIHdlIGNhbid0IGxvb2sgZm9yIHN5bWxpbmtzLiAqLwogCSh2b2lkKXBhdGg7IC8qIFVOVVNFRCAqLwogCSh2b2lkKWVycm9yX251bWJlcjsgLyogVU5VU0VEICovCkBAIC0yNTQzLDcgKzI2NzcsMTAgQEAKIAljaGFyIGM7CiAJaW50IHI7CiAJc3RydWN0IHN0YXQgc3Q7Ci0JaW50IHJlc3RvcmVfcHdkOworCWludCBjaGRpcl9mZDsKKyNpZiBkZWZpbmVkKEhBVkVfT1BFTkFUKSAmJiBkZWZpbmVkKEhBVkVfRlNUQVRBVCkgJiYgZGVmaW5lZChIQVZFX1VOTElOS0FUKQorCWludCBmZDsKKyNlbmRpZgogCiAJLyogTm90aGluZyB0byBkbyBoZXJlIGlmIG5hbWUgaXMgZW1wdHkgKi8KIAlpZihwYXRoWzBdID09ICdcMCcpCkBAIC0yNTY0LDEwICsyNzAxLDEzIEBACiAJICogIGMgaG9sZHMgd2hhdCB1c2VkIHRvIGJlIGluICp0YWlsCiAJICogIGxhc3QgaXMgMSBpZiB0aGlzIGlzIHRoZSBsYXN0IHRhaWwKIAkgKi8KLQlyZXN0b3JlX3B3ZCA9IG9wZW4oIi4iLCBPX1JET05MWSB8IE9fQklOQVJZIHwgT19DTE9FWEVDKTsKLQlfX2FyY2hpdmVfZW5zdXJlX2Nsb2V4ZWNfZmxhZyhyZXN0b3JlX3B3ZCk7Ci0JaWYgKHJlc3RvcmVfcHdkIDwgMCkKKwljaGRpcl9mZCA9IGxhX29wZW5kaXJhdChBVF9GRENXRCwgIi4iKTsKKwlfX2FyY2hpdmVfZW5zdXJlX2Nsb2V4ZWNfZmxhZyhjaGRpcl9mZCk7CisJaWYgKGNoZGlyX2ZkIDwgMCkgeworCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLCBlcnJubywKKwkJICAgICJDb3VsZCBub3Qgb3BlbiAiLCBwYXRoKTsKIAkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKwl9CiAJaGVhZCA9IHBhdGg7CiAJdGFpbCA9IHBhdGg7CiAJbGFzdCA9IDA7CkBAIC0yNTk2LDcgKzI3MzYsMTEgQEAKIAkJYyA9IHRhaWxbMF07CiAJCXRhaWxbMF0gPSAnXDAnOwogCQkvKiBDaGVjayB0aGF0IHdlIGhhdmVuJ3QgaGl0IGEgc3ltbGluay4gKi8KKyNpZiBkZWZpbmVkKEhBVkVfT1BFTkFUKSAmJiBkZWZpbmVkKEhBVkVfRlNUQVRBVCkgJiYgZGVmaW5lZChIQVZFX1VOTElOS0FUKQorCQlyID0gZnN0YXRhdChjaGRpcl9mZCwgaGVhZCwgJnN0LCBBVF9TWU1MSU5LX05PRk9MTE9XKTsKKyNlbHNlCiAJCXIgPSBsc3RhdChoZWFkLCAmc3QpOworI2VuZGlmCiAJCWlmIChyICE9IDApIHsKIAkJCXRhaWxbMF0gPSBjOwogCQkJLyogV2UndmUgaGl0IGEgZGlyIHRoYXQgZG9lc24ndCBleGlzdDsgc3RvcCBub3cuICovCkBAIC0yNjIyLDcgKzI3NjYsMTkgQEAKIAkJCX0KIAkJfSBlbHNlIGlmIChTX0lTRElSKHN0LnN0X21vZGUpKSB7CiAJCQlpZiAoIWxhc3QpIHsKLQkJCQlpZiAoY2hkaXIoaGVhZCkgIT0gMCkgeworI2lmIGRlZmluZWQoSEFWRV9PUEVOQVQpICYmIGRlZmluZWQoSEFWRV9GU1RBVEFUKSAmJiBkZWZpbmVkKEhBVkVfVU5MSU5LQVQpCisJCQkJZmQgPSBsYV9vcGVuZGlyYXQoY2hkaXJfZmQsIGhlYWQpOworCQkJCWlmIChmZCA8IDApCisJCQkJCXIgPSAtMTsKKwkJCQllbHNlIHsKKwkJCQkJciA9IDA7CisJCQkJCWNsb3NlKGNoZGlyX2ZkKTsKKwkJCQkJY2hkaXJfZmQgPSBmZDsKKwkJCQl9CisjZWxzZQorCQkJCXIgPSBjaGRpcihoZWFkKTsKKyNlbmRpZgorCQkJCWlmIChyICE9IDApIHsKIAkJCQkJdGFpbFswXSA9IGM7CiAJCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIGVycm5vLAogCQkJCQkgICAgIkNvdWxkIG5vdCBjaGRpciAiLCBwYXRoKTsKQEAgLTI2MzksNyArMjc5NSwxMiBAQAogCQkJCSAqIHNvIHdlIGNhbiBvdmVyd3JpdGUgaXQgd2l0aCB0aGUKIAkJCQkgKiBpdGVtIGJlaW5nIGV4dHJhY3RlZC4KIAkJCQkgKi8KLQkJCQlpZiAodW5saW5rKGhlYWQpKSB7CisjaWYgZGVmaW5lZChIQVZFX09QRU5BVCkgJiYgZGVmaW5lZChIQVZFX0ZTVEFUQVQpICYmIGRlZmluZWQoSEFWRV9VTkxJTktBVCkKKwkJCQlyID0gdW5saW5rYXQoY2hkaXJfZmQsIGhlYWQsIDApOworI2Vsc2UKKwkJCQlyID0gdW5saW5rKGhlYWQpOworI2VuZGlmCisJCQkJaWYgKHIgIT0gMCkgewogCQkJCQl0YWlsWzBdID0gYzsKIAkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgZXJybm8sCiAJCQkJCSAgICAiQ291bGQgbm90IHJlbW92ZSBzeW1saW5rICIsCkBAIC0yNjY5LDcgKzI4MzAsMTIgQEAKIAkJCQlicmVhazsKIAkJCX0gZWxzZSBpZiAoZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfVU5MSU5LKSB7CiAJCQkJLyogVXNlciBhc2tlZCB1cyB0byByZW1vdmUgcHJvYmxlbXMuICovCi0JCQkJaWYgKHVubGluayhoZWFkKSAhPSAwKSB7CisjaWYgZGVmaW5lZChIQVZFX09QRU5BVCkgJiYgZGVmaW5lZChIQVZFX0ZTVEFUQVQpICYmIGRlZmluZWQoSEFWRV9VTkxJTktBVCkKKwkJCQlyID0gdW5saW5rYXQoY2hkaXJfZmQsIGhlYWQsIDApOworI2Vsc2UKKwkJCQlyID0gdW5saW5rKGhlYWQpOworI2VuZGlmCisJCQkJaWYgKHIgIT0gMCkgewogCQkJCQl0YWlsWzBdID0gYzsKIAkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgMCwKIAkJCQkJICAgICJDYW5ub3QgcmVtb3ZlIGludGVydmVuaW5nICIKQEAgLTI2ODcsNyArMjg1MywxMSBAQAogCQkJCSAqIFRoaXMgaXMgbmVlZGVkIHRvIGV4dHJhY3QgaGFyZGxpbmtzIG92ZXIKIAkJCQkgKiBzeW1saW5rcy4KIAkJCQkgKi8KLQkJCQlyID0gc3RhdChoZWFkLCAmc3QpOworI2lmIGRlZmluZWQoSEFWRV9PUEVOQVQpICYmIGRlZmluZWQoSEFWRV9GU1RBVEFUKSAmJiBkZWZpbmVkKEhBVkVfVU5MSU5LQVQpCisJCQkJciA9IGZzdGF0YXQoY2hkaXJfZmQsIGhlYWQsICZzdCwgMCk7CisjZWxzZQorCQkJCXIgPSBsYV9zdGF0KGhlYWQsICZzdCk7CisjZW5kaWYKIAkJCQlpZiAociAhPSAwKSB7CiAJCQkJCXRhaWxbMF0gPSBjOwogCQkJCQlpZiAoZXJybm8gPT0gRU5PRU5UKSB7CkBAIC0yNzAwLDcgKzI4NzAsMTkgQEAKIAkJCQkJCWJyZWFrOwogCQkJCQl9CiAJCQkJfSBlbHNlIGlmIChTX0lTRElSKHN0LnN0X21vZGUpKSB7Ci0JCQkJCWlmIChjaGRpcihoZWFkKSAhPSAwKSB7CisjaWYgZGVmaW5lZChIQVZFX09QRU5BVCkgJiYgZGVmaW5lZChIQVZFX0ZTVEFUQVQpICYmIGRlZmluZWQoSEFWRV9VTkxJTktBVCkKKwkJCQkJZmQgPSBsYV9vcGVuZGlyYXQoY2hkaXJfZmQsIGhlYWQpOworCQkJCQlpZiAoZmQgPCAwKQorCQkJCQkJciA9IC0xOworCQkJCQllbHNlIHsKKwkJCQkJCXIgPSAwOworCQkJCQkJY2xvc2UoY2hkaXJfZmQpOworCQkJCQkJY2hkaXJfZmQgPSBmZDsKKwkJCQkJfQorI2Vsc2UKKwkJCQkJciA9IGNoZGlyKGhlYWQpOworI2VuZGlmCisJCQkJCWlmIChyICE9IDApIHsKIAkJCQkJCXRhaWxbMF0gPSBjOwogCQkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwKIAkJCQkJCSAgICBlcnJubywKQEAgLTI3MzYsMTYgKzI5MTgsMjEgQEAKIAl9CiAJLyogQ2F0Y2hlcyBsb29wIGV4aXRzIHZpYSBicmVhayAqLwogCXRhaWxbMF0gPSBjOwotI2lmZGVmIEhBVkVfRkNIRElSCisjaWYgZGVmaW5lZChIQVZFX09QRU5BVCkgJiYgZGVmaW5lZChIQVZFX0ZTVEFUQVQpICYmIGRlZmluZWQoSEFWRV9VTkxJTktBVCkKKwkvKiBJZiB3ZSBvcGVyYXRlIHdpdGggb3BlbmF0KCksIGZzdGF0YXQoKSBhbmQgdW5saW5rYXQoKSB0aGVyZSB3YXMKKwkgKiBubyBjaGRpcigpLCBzbyBqdXN0IGNsb3NlIHRoZSBmZCAqLworCWlmIChjaGRpcl9mZCA+PSAwKQorCQljbG9zZShjaGRpcl9mZCk7CisjZWxpZiBIQVZFX0ZDSERJUgogCS8qIElmIHdlIGNoYW5nZWQgZGlyZWN0b3J5IGFib3ZlLCByZXN0b3JlIGl0IGhlcmUuICovCi0JaWYgKHJlc3RvcmVfcHdkID49IDApIHsKLQkJciA9IGZjaGRpcihyZXN0b3JlX3B3ZCk7CisJaWYgKGNoZGlyX2ZkID49IDApIHsKKwkJciA9IGZjaGRpcihjaGRpcl9mZCk7CiAJCWlmIChyICE9IDApIHsKIAkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIGVycm5vLAogCQkJICAgICJjaGRpcigpIGZhaWx1cmUiLCAiIik7CiAJCX0KLQkJY2xvc2UocmVzdG9yZV9wd2QpOwotCQlyZXN0b3JlX3B3ZCA9IC0xOworCQljbG9zZShjaGRpcl9mZCk7CisJCWNoZGlyX2ZkID0gLTE7CiAJCWlmIChyICE9IDApIHsKIAkJCXJlcyA9IChBUkNISVZFX0ZBVEFMKTsKIAkJfQpAQCAtMzAyNyw3ICszMjE0LDcgQEAKIAkgKiBoZXJlIGxvc2VzIHRoZSBhYmlsaXR5IHRvIGV4dHJhY3QgdGhyb3VnaCBzeW1saW5rcy4gIEFsc28gbm90ZQogCSAqIHRoYXQgdGhpcyBzaG91bGQgbm90IHVzZSB0aGUgYS0+c3QgY2FjaGUuCiAJICovCi0JaWYgKHN0YXQocGF0aCwgJnN0KSA9PSAwKSB7CisJaWYgKGxhX3N0YXQocGF0aCwgJnN0KSA9PSAwKSB7CiAJCWlmIChTX0lTRElSKHN0LnN0X21vZGUpKQogCQkJcmV0dXJuIChBUkNISVZFX09LKTsKIAkJaWYgKChhLT5mbGFncyAmIEFSQ0hJVkVfRVhUUkFDVF9OT19PVkVSV1JJVEUpKSB7CkBAIC0zMDg1LDcgKzMyNzIsNyBAQAogCSAqIGRvbid0IGFkZCBpdCB0byB0aGUgZml4dXAgbGlzdCBoZXJlLCBhcyBpdCdzIGFscmVhZHkgYmVlbgogCSAqIGFkZGVkLgogCSAqLwotCWlmIChzdGF0KHBhdGgsICZzdCkgPT0gMCAmJiBTX0lTRElSKHN0LnN0X21vZGUpKQorCWlmIChsYV9zdGF0KHBhdGgsICZzdCkgPT0gMCAmJiBTX0lTRElSKHN0LnN0X21vZGUpKQogCQlyZXR1cm4gKEFSQ0hJVkVfT0spOwogCiAJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIGVycm5vLCAiRmFpbGVkIHRvIGNyZWF0ZSBkaXIgJyVzJyIsCkBAIC0zMTA2LDEyICszMjkzLDE0IEBACiBzdGF0aWMgaW50CiBzZXRfb3duZXJzaGlwKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEpCiB7Ci0jaWZuZGVmIF9fQ1lHV0lOX18KLS8qIHVuZm9ydHVuYXRlbHksIG9uIHdpbjMyIHRoZXJlIGlzIG5vICdyb290JyB1c2VyIHdpdGggdWlkIDAsCi0gICBzbyB3ZSBqdXN0IGhhdmUgdG8gdHJ5IHRoZSBjaG93biBhbmQgc2VlIGlmIGl0IHdvcmtzICovCi0KLQkvKiBJZiB3ZSBrbm93IHdlIGNhbid0IGNoYW5nZSBpdCwgZG9uJ3QgYm90aGVyIHRyeWluZy4gKi8KLQlpZiAoYS0+dXNlcl91aWQgIT0gMCAgJiYgIGEtPnVzZXJfdWlkICE9IGEtPnVpZCkgeworI2lmICFkZWZpbmVkKF9fQ1lHV0lOX18pICYmICFkZWZpbmVkKF9fbGludXhfXykKKy8qCisgKiBPbiBMaW51eCwgYSBwcm9jZXNzIG1heSBoYXZlIHRoZSBDQVBfQ0hPV04gY2FwYWJpbGl0eS4KKyAqIE9uIFdpbmRvd3MgdGhlcmUgaXMgbm8gJ3Jvb3QnIHVzZXIgd2l0aCB1aWQgMC4KKyAqIEVsc2V3aGVyZSB3ZSBjYW4gc2tpcCBjYWxsaW5nIGNob3duIGlmIHdlIGFyZSBub3Qgcm9vdCBhbmQgdGhlIGRlc2lyZWQKKyAqIHVzZXIgaWQgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgdXNlci4KKyAqLworCWlmIChhLT51c2VyX3VpZCAhPSAwICYmIGEtPnVzZXJfdWlkICE9IGEtPnVpZCkgewogCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgZXJybm8sCiAJCSAgICAiQ2FuJ3Qgc2V0IFVJRD0lamQiLCAoaW50bWF4X3QpYS0+dWlkKTsKIAkJcmV0dXJuIChBUkNISVZFX1dBUk4pOwpAQCAtMzM2MCw2ICszNTQ5LDcgQEAKIHNldF9tb2RlKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEsIGludCBtb2RlKQogewogCWludCByID0gQVJDSElWRV9PSzsKKwlpbnQgcjI7CiAJbW9kZSAmPSAwNzc3NzsgLyogU3RyaXAgb2ZmIGZpbGUgdHlwZSBiaXRzLiAqLwogCiAJaWYgKGEtPnRvZG8gJiBUT0RPX1NHSURfQ0hFQ0spIHsKQEAgLTM0NTMsMjEgKzM2NDMsMTkgQEAKIAkJICogcG9zdC1leHRyYWN0IGZpeHVwLCB3aGljaCBpcyBoYW5kbGVkIGVsc2V3aGVyZS4KIAkJICovCiAjaWZkZWYgSEFWRV9GQ0hNT0QKLQkJaWYgKGEtPmZkID49IDApIHsKLQkJCWlmIChmY2htb2QoYS0+ZmQsIG1vZGUpICE9IDApIHsKLQkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgZXJybm8sCi0JCQkJICAgICJDYW4ndCBzZXQgcGVybWlzc2lvbnMgdG8gMCVvIiwgKGludCltb2RlKTsKLQkJCQlyID0gQVJDSElWRV9XQVJOOwotCQkJfQotCQl9IGVsc2UKKwkJaWYgKGEtPmZkID49IDApCisJCQlyMiA9IGZjaG1vZChhLT5mZCwgbW9kZSk7CisJCWVsc2UKICNlbmRpZgotCQkJLyogSWYgdGhpcyBwbGF0Zm9ybSBsYWNrcyBmY2htb2QoKSwgdGhlbgotCQkJICogd2UnbGwganVzdCB1c2UgY2htb2QoKS4gKi8KLQkJCWlmIChjaG1vZChhLT5uYW1lLCBtb2RlKSAhPSAwKSB7Ci0JCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIGVycm5vLAotCQkJCSAgICAiQ2FuJ3Qgc2V0IHBlcm1pc3Npb25zIHRvIDAlbyIsIChpbnQpbW9kZSk7Ci0JCQkJciA9IEFSQ0hJVkVfV0FSTjsKLQkJCX0KKwkJLyogSWYgdGhpcyBwbGF0Zm9ybSBsYWNrcyBmY2htb2QoKSwgdGhlbgorCQkgKiB3ZSdsbCBqdXN0IHVzZSBjaG1vZCgpLiAqLworCQlyMiA9IGNobW9kKGEtPm5hbWUsIG1vZGUpOworCisJCWlmIChyMiAhPSAwKSB7CisJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgZXJybm8sCisJCQkgICAgIkNhbid0IHNldCBwZXJtaXNzaW9ucyB0byAwJW8iLCAoaW50KW1vZGUpOworCQkJciA9IEFSQ0hJVkVfV0FSTjsKKwkJfQogCX0KIAlyZXR1cm4gKHIpOwogfQpAQCAtMzQ3OCw5ICszNjY2LDcgQEAKIAlzdHJ1Y3QgZml4dXBfZW50cnkgKmxlOwogCXVuc2lnbmVkIGxvbmcJc2V0LCBjbGVhcjsKIAlpbnQJCXI7Ci0JaW50CQljcml0aWNhbF9mbGFnczsKIAltb2RlX3QJCW1vZGUgPSBhcmNoaXZlX2VudHJ5X21vZGUoYS0+ZW50cnkpOwotCiAJLyoKIAkgKiBNYWtlICdjcml0aWNhbF9mbGFncycgaG9sZCBhbGwgZmlsZSBmbGFncyB0aGF0IGNhbid0IGJlCiAJICogaW1tZWRpYXRlbHkgcmVzdG9yZWQuICBGb3IgZXhhbXBsZSwgb24gQlNEIHN5c3RlbXMsCkBAIC0zNDk2LDMzICszNjgyLDMzIEBACiAJICogb3RoZXIgcHJvZ3JhbXMgdGhhdCBtaWdodCB0cnkgdG8gbXVjayB3aXRoIGZpbGVzIGFzIHRoZXkncmUKIAkgKiBiZWluZyByZXN0b3JlZC4KIAkgKi8KLQkvKiBIb3BlZnVsbHksIHRoZSBjb21waWxlciB3aWxsIG9wdGltaXplIHRoaXMgbWVzcyBpbnRvIGEgY29uc3RhbnQuICovCi0JY3JpdGljYWxfZmxhZ3MgPSAwOworCWNvbnN0IGludAljcml0aWNhbF9mbGFncyA9IDAKICNpZmRlZiBTRl9JTU1VVEFCTEUKLQljcml0aWNhbF9mbGFncyB8PSBTRl9JTU1VVEFCTEU7CisJICAgIHwgU0ZfSU1NVVRBQkxFCiAjZW5kaWYKICNpZmRlZiBVRl9JTU1VVEFCTEUKLQljcml0aWNhbF9mbGFncyB8PSBVRl9JTU1VVEFCTEU7CisJICAgIHwgVUZfSU1NVVRBQkxFCiAjZW5kaWYKICNpZmRlZiBTRl9BUFBFTkQKLQljcml0aWNhbF9mbGFncyB8PSBTRl9BUFBFTkQ7CisJICAgIHwgU0ZfQVBQRU5ECiAjZW5kaWYKICNpZmRlZiBVRl9BUFBFTkQKLQljcml0aWNhbF9mbGFncyB8PSBVRl9BUFBFTkQ7CisJICAgIHwgVUZfQVBQRU5ECiAjZW5kaWYKICNpZiBkZWZpbmVkKEZTX0FQUEVORF9GTCkKLQljcml0aWNhbF9mbGFncyB8PSBGU19BUFBFTkRfRkw7CisJICAgIHwgRlNfQVBQRU5EX0ZMCiAjZWxpZiBkZWZpbmVkKEVYVDJfQVBQRU5EX0ZMKQotCWNyaXRpY2FsX2ZsYWdzIHw9IEVYVDJfQVBQRU5EX0ZMOworCSAgICB8IEVYVDJfQVBQRU5EX0ZMCiAjZW5kaWYKICNpZiBkZWZpbmVkKEZTX0lNTVVUQUJMRV9GTCkKLQljcml0aWNhbF9mbGFncyB8PSBGU19JTU1VVEFCTEVfRkw7CisJICAgIHwgRlNfSU1NVVRBQkxFX0ZMCiAjZWxpZiBkZWZpbmVkKEVYVDJfSU1NVVRBQkxFX0ZMKQotCWNyaXRpY2FsX2ZsYWdzIHw9IEVYVDJfSU1NVVRBQkxFX0ZMOworCSAgICB8IEVYVDJfSU1NVVRBQkxFX0ZMCiAjZW5kaWYKICNpZmRlZiBGU19KT1VSTkFMX0RBVEFfRkwKLQljcml0aWNhbF9mbGFncyB8PSBGU19KT1VSTkFMX0RBVEFfRkw7CisJICAgIHwgRlNfSk9VUk5BTF9EQVRBX0ZMCiAjZW5kaWYKKwk7CiAKIAlpZiAoYS0+dG9kbyAmIFRPRE9fRkZMQUdTKSB7CiAJCWFyY2hpdmVfZW50cnlfZmZsYWdzKGEtPmVudHJ5LCAmc2V0LCAmY2xlYXIpOwpAQCAtMzU1MywyOSArMzczOSwyNyBAQAogc3RhdGljIGludAogY2xlYXJfbm9jaGFuZ2VfZmZsYWdzKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEpCiB7Ci0JaW50CQlub2NoYW5nZV9mbGFnczsKIAltb2RlX3QJCW1vZGUgPSBhcmNoaXZlX2VudHJ5X21vZGUoYS0+ZW50cnkpOwotCi0JLyogSG9wZWZ1bGx5LCB0aGUgY29tcGlsZXIgd2lsbCBvcHRpbWl6ZSB0aGlzIG1lc3MgaW50byBhIGNvbnN0YW50LiAqLwotCW5vY2hhbmdlX2ZsYWdzID0gMDsKKwljb25zdCBpbnQgbm9jaGFuZ2VfZmxhZ3MgPSAwCiAjaWZkZWYgU0ZfSU1NVVRBQkxFCi0Jbm9jaGFuZ2VfZmxhZ3MgfD0gU0ZfSU1NVVRBQkxFOworCSAgICB8IFNGX0lNTVVUQUJMRQogI2VuZGlmCiAjaWZkZWYgVUZfSU1NVVRBQkxFCi0Jbm9jaGFuZ2VfZmxhZ3MgfD0gVUZfSU1NVVRBQkxFOworCSAgICB8IFVGX0lNTVVUQUJMRQogI2VuZGlmCiAjaWZkZWYgU0ZfQVBQRU5ECi0Jbm9jaGFuZ2VfZmxhZ3MgfD0gU0ZfQVBQRU5EOworCSAgICB8IFNGX0FQUEVORAogI2VuZGlmCiAjaWZkZWYgVUZfQVBQRU5ECi0Jbm9jaGFuZ2VfZmxhZ3MgfD0gVUZfQVBQRU5EOworCSAgICB8IFVGX0FQUEVORAogI2VuZGlmCiAjaWZkZWYgRVhUMl9BUFBFTkRfRkwKLQlub2NoYW5nZV9mbGFncyB8PSBFWFQyX0FQUEVORF9GTDsKKwkgICAgfCBFWFQyX0FQUEVORF9GTAogI2VuZGlmCiAjaWZkZWYgRVhUMl9JTU1VVEFCTEVfRkwKLQlub2NoYW5nZV9mbGFncyB8PSBFWFQyX0lNTVVUQUJMRV9GTDsKKwkgICAgfCBFWFQyX0lNTVVUQUJMRV9GTAogI2VuZGlmCisJOwogCiAJcmV0dXJuIChzZXRfZmZsYWdzX3BsYXRmb3JtKGEsIGEtPmZkLCBhLT5uYW1lLCBtb2RlLCAwLAogCSAgICBub2NoYW5nZV9mbGFncykpOwpAQCAtMzU5MSw4ICszNzc1LDIyIEBACiAgICAgbW9kZV90IG1vZGUsIHVuc2lnbmVkIGxvbmcgc2V0LCB1bnNpZ25lZCBsb25nIGNsZWFyKQogewogCWludCByOwotCisJY29uc3QgaW50IHNmX21hc2sgPSAwCisjaWZkZWYgU0ZfQVBQRU5ECisJICAgIHwgU0ZfQVBQRU5ECisjZW5kaWYKKyNpZmRlZiBTRl9BUkNISVZFRAorCSAgICB8IFNGX0FSQ0hJVkVECisjZW5kaWYKKyNpZmRlZiBTRl9JTU1VVEFCTEUKKwkgICAgfCBTRl9JTU1VVEFCTEUKKyNlbmRpZgorI2lmZGVmIFNGX05PVU5MSU5LCisJICAgIHwgU0ZfTk9VTkxJTksKKyNlbmRpZgorCTsKIAkodm9pZCltb2RlOyAvKiBVTlVTRUQgKi8KKwogCWlmIChzZXQgPT0gMCAgJiYgY2xlYXIgPT0gMCkKIAkJcmV0dXJuIChBUkNISVZFX09LKTsKIApAQCAtMzYwNyw2ICszODA1LDEyIEBACiAKIAlhLT5zdC5zdF9mbGFncyAmPSB+Y2xlYXI7CiAJYS0+c3Quc3RfZmxhZ3MgfD0gc2V0OworCisJLyogT25seSBzdXBlci11c2VyIG1heSBjaGFuZ2UgU0ZfKiBmbGFncyAqLworCisJaWYgKGEtPnVzZXJfdWlkICE9IDApCisJCWEtPnN0LnN0X2ZsYWdzICY9IH5zZl9tYXNrOworCiAjaWZkZWYgSEFWRV9GQ0hGTEFHUwogCS8qIElmIHBsYXRmb3JtIGhhcyBmY2hmbGFncygpIGFuZCB3ZSB3ZXJlIGdpdmVuIGFuIGZkLCB1c2UgaXQuICovCiAJaWYgKGZkID49IDAgJiYgZmNoZmxhZ3MoZmQsIGEtPnN0LnN0X2ZsYWdzKSA9PSAwKQpAQCAtMzY0OCw3ICszODUyLDI4IEBACiAJaW50CQkgcmV0OwogCWludAkJIG15ZmQgPSBmZDsKIAlpbnQgbmV3ZmxhZ3MsIG9sZGZsYWdzOwotCWludCBzZl9tYXNrID0gMDsKKwkvKgorCSAqIExpbnV4IGhhcyBubyBkZWZpbmUgZm9yIHRoZSBmbGFncyB0aGF0IGFyZSBvbmx5IHNldHRhYmxlIGJ5CisJICogdGhlIHJvb3QgdXNlci4gIFRoaXMgY29kZSBtYXkgc2VlbSBhIGxpdHRsZSBjb21wbGV4LCBidXQKKwkgKiB0aGVyZSBzZWVtIHRvIGJlIHNvbWUgTGludXggc3lzdGVtcyB0aGF0IGxhY2sgdGhlc2UKKwkgKiBkZWZpbmVzLiAoPykgIFRoZSBjb2RlIGJlbG93IGRlZ3JhZGVzIHJlYXNvbmFibHkgZ3JhY2VmdWxseQorCSAqIGlmIHNmX21hc2sgaXMgaW5jb21wbGV0ZS4KKwkgKi8KKwljb25zdCBpbnQgc2ZfbWFzayA9IDAKKyNpZiBkZWZpbmVkKEZTX0lNTVVUQUJMRV9GTCkKKwkgICAgfCBGU19JTU1VVEFCTEVfRkwKKyNlbGlmIGRlZmluZWQoRVhUMl9JTU1VVEFCTEVfRkwpCisJICAgIHwgRVhUMl9JTU1VVEFCTEVfRkwKKyNlbmRpZgorI2lmIGRlZmluZWQoRlNfQVBQRU5EX0ZMKQorCSAgICB8IEZTX0FQUEVORF9GTAorI2VsaWYgZGVmaW5lZChFWFQyX0FQUEVORF9GTCkKKwkgICAgfCBFWFQyX0FQUEVORF9GTAorI2VuZGlmCisjaWYgZGVmaW5lZChGU19KT1VSTkFMX0RBVEFfRkwpCisJICAgIHwgRlNfSk9VUk5BTF9EQVRBX0ZMCisjZW5kaWYKKwk7CiAKIAlpZiAoc2V0ID09IDAgJiYgY2xlYXIgPT0gMCkKIAkJcmV0dXJuIChBUkNISVZFX09LKTsKQEAgLTM2NjUsMjYgKzM4OTAsNiBAQAogCQlyZXR1cm4gKEFSQ0hJVkVfT0spOwogCiAJLyoKLQkgKiBMaW51eCBoYXMgbm8gZGVmaW5lIGZvciB0aGUgZmxhZ3MgdGhhdCBhcmUgb25seSBzZXR0YWJsZSBieQotCSAqIHRoZSByb290IHVzZXIuICBUaGlzIGNvZGUgbWF5IHNlZW0gYSBsaXR0bGUgY29tcGxleCwgYnV0Ci0JICogdGhlcmUgc2VlbSB0byBiZSBzb21lIExpbnV4IHN5c3RlbXMgdGhhdCBsYWNrIHRoZXNlCi0JICogZGVmaW5lcy4gKD8pICBUaGUgY29kZSBiZWxvdyBkZWdyYWRlcyByZWFzb25hYmx5IGdyYWNlZnVsbHkKLQkgKiBpZiBzZl9tYXNrIGlzIGluY29tcGxldGUuCi0JICovCi0jaWYgZGVmaW5lZChGU19JTU1VVEFCTEVfRkwpCi0Jc2ZfbWFzayB8PSBGU19JTU1VVEFCTEVfRkw7Ci0jZWxpZiBkZWZpbmVkKEVYVDJfSU1NVVRBQkxFX0ZMKQotCXNmX21hc2sgfD0gRVhUMl9JTU1VVEFCTEVfRkw7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEZTX0FQUEVORF9GTCkKLQlzZl9tYXNrIHw9IEZTX0FQUEVORF9GTDsKLSNlbGlmIGRlZmluZWQoRVhUMl9BUFBFTkRfRkwpCi0Jc2ZfbWFzayB8PSBFWFQyX0FQUEVORF9GTDsKLSNlbmRpZgotI2lmIGRlZmluZWQoRlNfSk9VUk5BTF9EQVRBX0ZMKQotCXNmX21hc2sgfD0gRlNfSk9VUk5BTF9EQVRBX0ZMOwotI2VuZGlmCi0JLyoKIAkgKiBYWFggQXMgYWJvdmUsIHRoaXMgd291bGQgYmUgd2F5IHNpbXBsZXIgaWYgd2UgZGlkbid0IGhhdmUKIAkgKiB0byByZWFkIHRoZSBjdXJyZW50IGZsYWdzIGZyb20gZGlzay4gWFhYCiAJICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3ByaXZhdGUuaCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcHJpdmF0ZS5oCmluZGV4IGI2NTVkZWEuLjU1N2Q3ZTIgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcHJpdmF0ZS5oCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcHJpdmF0ZS5oCkBAIC0yNiwxMyArMjYsMTMgQEAKICAqICRGcmVlQlNEOiBoZWFkL2xpYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wcml2YXRlLmggMjAxMDg2IDIwMDktMTItMjggMDI6MTc6NTNaIGtpZW50emxlICQKICAqLwogCisjaWZuZGVmIEFSQ0hJVkVfV1JJVEVfRElTS19QUklWQVRFX0hfSU5DTFVERUQKKyNkZWZpbmUgQVJDSElWRV9XUklURV9ESVNLX1BSSVZBVEVfSF9JTkNMVURFRAorCiAjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAogI2Vycm9yIFRoaXMgaGVhZGVyIGlzIG9ubHkgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHRvIGxpYmFyY2hpdmUuCiAjZW5kaWYKIAotI2lmbmRlZiBBUkNISVZFX1dSSVRFX0RJU0tfUFJJVkFURV9IX0lOQ0xVREVECi0jZGVmaW5lIEFSQ0hJVkVfV1JJVEVfRElTS19QUklWQVRFX0hfSU5DTFVERUQKLQogI2luY2x1ZGUgImFyY2hpdmVfcGxhdGZvcm1fYWNsLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV9hY2xfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFyY2hpdmVfZW50cnkuaCIKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfc2V0X3N0YW5kYXJkX2xvb2t1cC5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19zZXRfc3RhbmRhcmRfbG9va3VwLmMKaW5kZXggNWM3NjZkNy4uNWZjY2RiOSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19zZXRfc3RhbmRhcmRfbG9va3VwLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19zZXRfc3RhbmRhcmRfbG9va3VwLmMKQEAgLTExNCw4ICsxMTQsNyBAQAogCQlyZXR1cm4gKChnaWRfdCliLT5pZCk7CiAKIAkvKiBGcmVlIHRoZSBjYWNoZSBzbG90IGZvciBhIG5ldyBlbnRyeS4gKi8KLQlpZiAoYi0+bmFtZSAhPSBOVUxMKQotCQlmcmVlKGItPm5hbWUpOworCWZyZWUoYi0+bmFtZSk7CiAJYi0+bmFtZSA9IHN0cmR1cChnbmFtZSk7CiAJLyogTm90ZTogSWYgc3RyZHVwIGZhaWxzLCB0aGF0J3Mgb2theTsgd2UganVzdCB3b24ndCBjYWNoZS4gKi8KIAliLT5oYXNoID0gaDsKQEAgLTE4NCw4ICsxODMsNyBAQAogCQlyZXR1cm4gKCh1aWRfdCliLT5pZCk7CiAKIAkvKiBGcmVlIHRoZSBjYWNoZSBzbG90IGZvciBhIG5ldyBlbnRyeS4gKi8KLQlpZiAoYi0+bmFtZSAhPSBOVUxMKQotCQlmcmVlKGItPm5hbWUpOworCWZyZWUoYi0+bmFtZSk7CiAJYi0+bmFtZSA9IHN0cmR1cCh1bmFtZSk7CiAJLyogTm90ZTogSWYgc3RyZHVwIGZhaWxzLCB0aGF0J3Mgb2theTsgd2UganVzdCB3b24ndCBjYWNoZS4gKi8KIAliLT5oYXNoID0gaDsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfd2luZG93cy5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza193aW5kb3dzLmMKaW5kZXggNzhlZGE0YS4uNzdlMzZjNCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza193aW5kb3dzLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza193aW5kb3dzLmMKQEAgLTE2NSw2ICsxNjUsOCBAQAogCXN0cnVjdCBhcmNoaXZlX2VudHJ5CSplbnRyeTsgLyogRW50cnkgYmVpbmcgZXh0cmFjdGVkLiAqLwogCXdjaGFyX3QJCQkqbmFtZTsgLyogTmFtZSBvZiBlbnRyeSwgcG9zc2libHkgZWRpdGVkLiAqLwogCXN0cnVjdCBhcmNoaXZlX3dzdHJpbmcJIF9uYW1lX2RhdGE7IC8qIGJhY2tpbmcgc3RvcmUgZm9yICduYW1lJyAqLworCXdjaGFyX3QJCQkqdG1wbmFtZTsgLyogVGVtcG9yYXJ5IG5hbWUgKi8KKwlzdHJ1Y3QgYXJjaGl2ZV93c3RyaW5nCV90bXBuYW1lX2RhdGE7IC8qIGJhY2tpbmcgc3RvcmUgZm9yICd0bXBuYW1lJyAqLwogCS8qIFRhc2tzIHJlbWFpbmluZyBmb3IgdGhpcyBvYmplY3QuICovCiAJaW50CQkJIHRvZG87CiAJLyogVGFza3MgZGVmZXJyZWQgdW50aWwgZW5kLW9mLWFyY2hpdmUuICovCkBAIC0yMDUsNiArMjA3LDggQEAKICNkZWZpbmUJTUlOSU1VTV9ESVJfTU9ERSAwNzAwCiAjZGVmaW5lCU1BWElNVU1fRElSX01PREUgMDc3NQogCitzdGF0aWMgaW50CWRpc2tfdW5saW5rKGNvbnN0IHdjaGFyX3QgKik7CitzdGF0aWMgaW50CWRpc2tfcm1kaXIoY29uc3Qgd2NoYXJfdCAqKTsKIHN0YXRpYyBpbnQJY2hlY2tfc3ltbGlua3Moc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqKTsKIHN0YXRpYyBpbnQJY3JlYXRlX2ZpbGVzeXN0ZW1fb2JqZWN0KHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKik7CiBzdGF0aWMgc3RydWN0IGZpeHVwX2VudHJ5ICpjdXJyZW50X2ZpeHVwKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKiwKQEAgLTIxMywxMyArMjE3LDE3IEBACiBzdGF0aWMgaW50CWNyZWF0ZV9kaXIoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqLCB3Y2hhcl90ICopOwogc3RhdGljIGludAljcmVhdGVfcGFyZW50X2RpcihzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9kaXNrICosIHdjaGFyX3QgKik7CiBzdGF0aWMgaW50CWxhX2NobW9kKGNvbnN0IHdjaGFyX3QgKiwgbW9kZV90KTsKK3N0YXRpYyBpbnQJbGFfbWt0ZW1wKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKik7CiBzdGF0aWMgaW50CW9sZGVyKEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICosIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICopOwogc3RhdGljIGludAlwZXJtaXNzaXZlX25hbWVfdyhzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9kaXNrICopOwogc3RhdGljIGludAlyZXN0b3JlX2VudHJ5KHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKik7CiBzdGF0aWMgaW50CXNldF9hY2xzKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKiwgSEFORExFIGgsCiAJCSAgICBjb25zdCB3Y2hhcl90ICosIHN0cnVjdCBhcmNoaXZlX2FjbCAqKTsKIHN0YXRpYyBpbnQJc2V0X3hhdHRycyhzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9kaXNrICopOworc3RhdGljIGludAljbGVhcl9ub2NoYW5nZV9mZmxhZ3Moc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqKTsKIHN0YXRpYyBpbnQJc2V0X2ZmbGFncyhzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9kaXNrICopOworc3RhdGljIGludAlzZXRfZmZsYWdzX3BsYXRmb3JtKGNvbnN0IHdjaGFyX3QgKiwgdW5zaWduZWQgbG9uZywKKwkJICAgIHVuc2lnbmVkIGxvbmcpOwogc3RhdGljIGludAlzZXRfb3duZXJzaGlwKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKik7CiBzdGF0aWMgaW50CXNldF9tb2RlKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKiwgaW50IG1vZGUpOwogc3RhdGljIGludAlzZXRfdGltZXMoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqLCBIQU5ETEUsIGludCwKQEAgLTQ3NCw2ICs0ODIsMTEgQEAKIAl7CiAJCWFyY2hpdmVfd3N0cm5jcHkoJihhLT5fbmFtZV9kYXRhKSwgd3NwLCBsKTsKIAl9CisJZWxzZSBpZiAobCA+IDIgJiYgd3NwWzBdID09IEwnXFwnICYmIHdzcFsxXSA9PSBMJ1xcJyAmJiB3c3BbMl0gIT0gTCdcXCcpCisJeworCQlhcmNoaXZlX3dzdHJuY3B5KCYoYS0+X25hbWVfZGF0YSksIEwiXFxcXD9cXFVOQ1xcIiwgOCk7CisJCWFyY2hpdmVfd3N0cm5jYXQoJihhLT5fbmFtZV9kYXRhKSwgd3NwKzIsIGwtMik7CisJfQogCWVsc2UKIAl7CiAJCWFyY2hpdmVfd3N0cm5jcHkoJihhLT5fbmFtZV9kYXRhKSwgTCJcXFxcP1xcIiwgNCk7CkBAIC01MjQsNiArNTM3LDI4IEBACiAJcmV0dXJuIChyZXQpOwogfQogCitzdGF0aWMgaW50CitsYV9ta3RlbXAoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqYSkKK3sKKwlpbnQgZmQ7CisJbW9kZV90IG1vZGU7CisKKwlhcmNoaXZlX3dzdHJpbmdfZW1wdHkoJihhLT5fdG1wbmFtZV9kYXRhKSk7CisJYXJjaGl2ZV93c3RyY3B5KCYoYS0+X3RtcG5hbWVfZGF0YSksIGEtPm5hbWUpOworCWFyY2hpdmVfd3N0cmNhdCgmKGEtPl90bXBuYW1lX2RhdGEpLCBMIi5YWFhYWFgiKTsKKwlhLT50bXBuYW1lID0gYS0+X3RtcG5hbWVfZGF0YS5zOworCisJZmQgPSBfX2FyY2hpdmVfbWtzdGVtcChhLT50bXBuYW1lKTsKKworCW1vZGUgPSBhLT5tb2RlICYgMDc3NyAmIH5hLT51c2VyX3VtYXNrOworCWlmIChsYV9jaG1vZChhLT50bXBuYW1lLCBtb2RlKSA9PSAtMSkgeworCQlsYV9kb3NtYXBlcnIoR2V0TGFzdEVycm9yKCkpOworCQlfY2xvc2UoZmQpOworCQlyZXR1cm4gLTE7CisJfQorCXJldHVybiAoZmQpOworfQorCiBzdGF0aWMgdm9pZCAqCiBsYV9HZXRGdW5jdGlvbktlcm5lbDMyKGNvbnN0IGNoYXIgKm5hbWUpCiB7CkBAIC01NTEsOCArNTg2LDEwIEBACiAJCXNldCA9IDE7CiAJCWYgPSBsYV9HZXRGdW5jdGlvbktlcm5lbDMyKCJDcmVhdGVIYXJkTGlua1ciKTsKIAl9Ci0JaWYgKCFmKQorCWlmICghZikgeworCQllcnJubyA9IEVOT1RTVVA7CiAJCXJldHVybiAoMCk7CisJfQogCXJldCA9ICgqZikobGlua25hbWUsIHRhcmdldCwgTlVMTCk7CiAJaWYgKCFyZXQpIHsKIAkJLyogVW5kZXIgd2luZG93cyAyMDAwLCBpdCBpcyBuZWNlc3NhcnkgdG8gcmVtb3ZlCkBAIC01NzcsNiArNjE0LDEwMyBAQAogCXJldHVybiAocmV0KTsKIH0KIAorLyoKKyAqIENyZWF0ZSBmaWxlIG9yIGRpcmVjdG9yeSBzeW1vbGljIGxpbmsKKyAqCisgKiBJZiBsaW5rdHlwZSBpcyBBRV9TWU1MSU5LX1RZUEVfVU5ERUZJTkVEIChvciB1bmtub3duKSwgZ3Vlc3MgbGlua3R5cGUgZnJvbQorICogdGhlIGxpbmsgdGFyZ2V0CisgKi8KK3N0YXRpYyBpbnQKK2xhX0NyZWF0ZVN5bWJvbGljTGlua1coY29uc3Qgd2NoYXJfdCAqbGlua25hbWUsIGNvbnN0IHdjaGFyX3QgKnRhcmdldCwKKyAgICBpbnQgbGlua3R5cGUpIHsKKwlzdGF0aWMgQk9PTEVBTiAoV0lOQVBJICpmKShMUENXU1RSLCBMUENXU1RSLCBEV09SRCk7CisJc3RhdGljIGludCBzZXQ7CisJd2NoYXJfdCAqdHRhcmdldCwgKnA7CisJaW50IGxlbjsKKwlEV09SRCBhdHRycyA9IDA7CisJRFdPUkQgZmxhZ3MgPSAwOworCURXT1JEIG5ld2ZsYWdzID0gMDsKKwlCT09MIHJldCA9IDA7CisKKwlpZiAoIXNldCkgeworCQlzZXQgPSAxOworCQlmID0gbGFfR2V0RnVuY3Rpb25LZXJuZWwzMigiQ3JlYXRlU3ltYm9saWNMaW5rVyIpOworCX0KKwlpZiAoIWYpCisJCXJldHVybiAoMCk7CisKKwlsZW4gPSB3Y3NsZW4odGFyZ2V0KTsKKwlpZiAobGVuID09IDApIHsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybigwKTsKKwl9CisJLyoKKwkgKiBXaGVuIHdyaXRpbmcgcGF0aCB0YXJnZXRzLCB3ZSBuZWVkIHRvIHRyYW5zbGF0ZSBzbGFzaGVzCisJICogdG8gYmFja3NsYXNoZXMKKwkgKi8KKwl0dGFyZ2V0ID0gbWFsbG9jKChsZW4gKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisJaWYgKHR0YXJnZXQgPT0gTlVMTCkKKwkJcmV0dXJuKDApOworCisJcCA9IHR0YXJnZXQ7CisKKwl3aGlsZSgqdGFyZ2V0ICE9IEwnXDAnKSB7CisJCWlmICgqdGFyZ2V0ID09IEwnLycpCisJCQkqcCA9IEwnXFwnOworCQllbHNlCisJCQkqcCA9ICp0YXJnZXQ7CisJCXRhcmdldCsrOworCQlwKys7CisJfQorCSpwID0gTCdcMCc7CisKKwkvKgorCSAqIEluIGNhc2Ugb2YgdW5kZWZpbmVkIHN5bWxpbmsgdHlwZSB3ZSBndWVzcyBpdCBmcm9tIHRoZSB0YXJnZXQuCisJICogSWYgdGhlIHRhcmdldCBlcXVhbHMgIi4iLCAiLi4iLCBlbmRzIHdpdGggYSBiYWNrc2xhc2ggb3IgYQorCSAqIGJhY2tzbGFzaCBmb2xsb3dlZCBieSAiLiIgb3IgIi4uIiB3ZSBhc3N1bWUgaXQgaXMgYSBkaXJlY3RvcnkKKwkgKiBzeW1saW5rLiBJbiBhbGwgb3RoZXIgY2FzZXMgd2UgYXNzdW1lIGEgZmlsZSBzeW1saW5rLgorCSAqLworCWlmIChsaW5rdHlwZSAhPSBBRV9TWU1MSU5LX1RZUEVfRklMRSAmJiAoCisJCWxpbmt0eXBlID09IEFFX1NZTUxJTktfVFlQRV9ESVJFQ1RPUlkgfHwKKwkJKihwIC0gMSkgPT0gTCdcXCcgfHwgKCoocCAtIDEpID09IEwnLicgJiYgKAorCSAgICBsZW4gPT0gMSB8fCAqKHAgLSAyKSA9PSBMJ1xcJyB8fCAoICoocCAtIDIpID09IEwnLicgJiYgKAorCSAgICBsZW4gPT0gMiB8fCAqKHAgLSAzKSA9PSBMJ1xcJykpKSkpKSB7CisjaWYgZGVmaW5lZChTWU1CT0xJQ19MSU5LX0ZMQUdfRElSRUNUT1JZKQorCQlmbGFncyB8PSBTWU1CT0xJQ19MSU5LX0ZMQUdfRElSRUNUT1JZOworI2Vsc2UKKwkJZmxhZ3MgfD0gMHgxOworI2VuZGlmCisJfQorCisjaWYgZGVmaW5lZChTWU1CT0xJQ19MSU5LX0ZMQUdfQUxMT1dfVU5QUklWSUxFR0VEX0NSRUFURSkKKwluZXdmbGFncyA9IGZsYWdzIHwgU1lNQk9MSUNfTElOS19GTEFHX0FMTE9XX1VOUFJJVklMRUdFRF9DUkVBVEU7CisjZWxzZQorCW5ld2ZsYWdzID0gZmxhZ3MgfCAweDI7CisjZW5kaWYKKworCS8qCisJICogV2luZG93cyB3b24ndCBvdmVyd3JpdGUgZXhpc3RpbmcgbGlua3MKKwkgKi8KKwlhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhsaW5rbmFtZSk7CisJaWYgKGF0dHJzICE9IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSB7CisJCWlmIChhdHRycyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKKwkJCWRpc2tfcm1kaXIobGlua25hbWUpOworCQllbHNlCisJCQlkaXNrX3VubGluayhsaW5rbmFtZSk7CisJfQorCisJcmV0ID0gKCpmKShsaW5rbmFtZSwgdHRhcmdldCwgbmV3ZmxhZ3MpOworCS8qCisJICogUHJpb3IgdG8gV2luZG93cyAxMCBjYWxsaW5nIENyZWF0ZVN5bWJvbGljTGlua1coKSB3aWxsIGZhaWwKKwkgKiBpZiBTWU1CT0xJQ19MSU5LX0ZMQUdfQUxMT1dfVU5QUklWSUxFR0VEX0NSRUFURSBpcyBzZXQKKwkgKi8KKwlpZiAoIXJldCkgeworCQlyZXQgPSAoKmYpKGxpbmtuYW1lLCB0dGFyZ2V0LCBmbGFncyk7CisJfQorCWZyZWUodHRhcmdldCk7CisJcmV0dXJuIChyZXQpOworfQorCiBzdGF0aWMgaW50CiBsYV9mdHJ1bmNhdGUoSEFORExFIGhhbmRsZSwgaW50NjRfdCBsZW5ndGgpCiB7CkBAIC02OTYsMTAgKzgzMCw4IEBACiAJYS0+cHN0ID0gTlVMTDsKIAlhLT5jdXJyZW50X2ZpeHVwID0gTlVMTDsKIAlhLT5kZWZlcnJlZCA9IDA7Ci0JaWYgKGEtPmVudHJ5KSB7Ci0JCWFyY2hpdmVfZW50cnlfZnJlZShhLT5lbnRyeSk7Ci0JCWEtPmVudHJ5ID0gTlVMTDsKLQl9CisJYXJjaGl2ZV9lbnRyeV9mcmVlKGEtPmVudHJ5KTsKKwlhLT5lbnRyeSA9IE5VTEw7CiAJYS0+ZW50cnkgPSBhcmNoaXZlX2VudHJ5X2Nsb25lKGVudHJ5KTsKIAlhLT5maCA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogCWEtPmZkX29mZnNldCA9IDA7CkBAIC04NjAsOSArOTkyLDExIEBACiAJfQogCiAJaWYgKGEtPmRlZmVycmVkICYgVE9ET19GRkxBR1MpIHsKKwkJdW5zaWduZWQgbG9uZyBzZXQsIGNsZWFyOworCiAJCWZlID0gY3VycmVudF9maXh1cChhLCBhcmNoaXZlX2VudHJ5X3BhdGhuYW1lX3coZW50cnkpKTsKLQkJZmUtPmZpeHVwIHw9IFRPRE9fRkZMQUdTOwotCQkvKiBUT0RPOiBDb21wbGV0ZSB0aGlzLi4gZGVmZXIgZmZsYWdzIGZyb20gYmVsb3cuICovCisJCWFyY2hpdmVfZW50cnlfZmZsYWdzKGVudHJ5LCAmc2V0LCAmY2xlYXIpOworCQlmZS0+ZmZsYWdzX3NldCA9IHNldDsKIAl9CiAKIAkvKgpAQCAtMTE0MywxMiArMTI3NywyMCBAQAogCWlmIChhLT5maCAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogCQlDbG9zZUhhbmRsZShhLT5maCk7CiAJCWEtPmZoID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisJCWlmIChhLT50bXBuYW1lKSB7CisJCQkvKiBXaW5kb3dzIGRvZXMgbm90IHN1cHBvcnQgYXRvbWljIHJlbmFtZSAqLworCQkJZGlza191bmxpbmsoYS0+bmFtZSk7CisJCQlpZiAoX3dyZW5hbWUoYS0+dG1wbmFtZSwgYS0+bmFtZSkgIT0gMCkgeworCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBlcnJubywKKwkJCQkgICAgInJlbmFtZSBmYWlsZWQiKTsKKwkJCQlyZXQgPSBBUkNISVZFX0ZBVEFMOworCQkJfQorCQkJYS0+dG1wbmFtZSA9IE5VTEw7CisJCX0KIAl9CiAJLyogSWYgdGhlcmUncyBhbiBlbnRyeSwgd2UgY2FuIHJlbGVhc2UgaXQgbm93LiAqLwotCWlmIChhLT5lbnRyeSkgewotCQlhcmNoaXZlX2VudHJ5X2ZyZWUoYS0+ZW50cnkpOwotCQlhLT5lbnRyeSA9IE5VTEw7Ci0JfQorCWFyY2hpdmVfZW50cnlfZnJlZShhLT5lbnRyeSk7CisJYS0+ZW50cnkgPSBOVUxMOwogCWEtPmFyY2hpdmUuc3RhdGUgPSBBUkNISVZFX1NUQVRFX0hFQURFUjsKIAlyZXR1cm4gKHJldCk7CiB9CkBAIC0xMjM5LDcgKzEzODEsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1kaXNrX3VubGluayh3Y2hhcl90ICpwYXRoKQorZGlza191bmxpbmsoY29uc3Qgd2NoYXJfdCAqcGF0aCkKIHsKIAl3Y2hhcl90ICpmdWxsbmFtZTsKIAlpbnQgcjsKQEAgLTEyNTQsNyArMTM5Niw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWRpc2tfcm1kaXIod2NoYXJfdCAqcGF0aCkKK2Rpc2tfcm1kaXIoY29uc3Qgd2NoYXJfdCAqcGF0aCkKIHsKIAl3Y2hhcl90ICpmdWxsbmFtZTsKIAlpbnQgcjsKQEAgLTEyODUsNiArMTQyNyw4IEBACiAJCSAqIG9iamVjdCBpcyBhIGRpciwgYnV0IHRoYXQgZG9lc24ndCBtZWFuIHRoZSBvbGQKIAkJICogb2JqZWN0IGlzbid0IGEgZGlyLgogCQkgKi8KKwkJaWYgKGEtPmZsYWdzICYgQVJDSElWRV9FWFRSQUNUX0NMRUFSX05PQ0hBTkdFX0ZGTEFHUykKKwkJCSh2b2lkKWNsZWFyX25vY2hhbmdlX2ZmbGFncyhhKTsKIAkJaWYgKGRpc2tfdW5saW5rKGEtPm5hbWUpID09IDApIHsKIAkJCS8qIFdlIHJlbW92ZWQgaXQsIHJlc2V0IGNhY2hlZCBzdGF0LiAqLwogCQkJYS0+cHN0ID0gTlVMTDsKQEAgLTEzNTksMjggKzE1MDMsNDUgQEAKIAkJZW4gPSBjcmVhdGVfZmlsZXN5c3RlbV9vYmplY3QoYSk7CiAJfSBlbHNlIGlmIChlbiA9PSBFRVhJU1QpIHsKIAkJbW9kZV90IHN0X21vZGU7CisJCW1vZGVfdCBsc3RfbW9kZTsKKwkJQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gbHN0OwogCQkvKgogCQkgKiBXZSBrbm93IHNvbWV0aGluZyBpcyBpbiB0aGUgd2F5LCBidXQgd2UgZG9uJ3Qga25vdyB3aGF0OwogCQkgKiB3ZSBuZWVkIHRvIGZpbmQgb3V0IGJlZm9yZSB3ZSBnbyBhbnkgZnVydGhlci4KIAkJICovCiAJCWludCByID0gMDsKKwkJaW50IGRpcmxuayA9IDA7CisKIAkJLyoKIAkJICogVGhlIFNFQ1VSRV9TWU1MSU5LIGxvZ2ljIGhhcyBhbHJlYWR5IHJlbW92ZWQgYQogCQkgKiBzeW1saW5rIHRvIGEgZGlyIGlmIHRoZSBjbGllbnQgd2FudHMgdGhhdC4gIFNvCiAJCSAqIGZvbGxvdyB0aGUgc3ltbGluayBpZiB3ZSdyZSBjcmVhdGluZyBhIGRpci4KLQkJICovCi0JCWlmIChTX0lTRElSKGEtPm1vZGUpKQotCQkJciA9IGZpbGVfaW5mb3JtYXRpb24oYSwgYS0+bmFtZSwgJmEtPnN0LCAmc3RfbW9kZSwgMCk7Ci0JCS8qCiAJCSAqIElmIGl0J3Mgbm90IGEgZGlyIChvciBpdCdzIGEgYnJva2VuIHN5bWxpbmspLAogCQkgKiB0aGVuIGRvbid0IGZvbGxvdyBpdC4KKwkJICoKKwkJICogV2luZG93cyBkaXN0aW5ndWlzaGVzIGZpbGUgYW5kIGRpcmVjdG9yeSBzeW1saW5rcy4KKwkJICogQSBmaWxlIHN5bWxpbmsgbWF5IGVycm9uZW91c2x5IHBvaW50IHRvIGEgZGlyZWN0b3J5CisJCSAqIGFuZCBhIGRpcmVjdG9yeSBzeW1saW5rIHRvIGEgZmlsZS4gV2luZG93cyBkb2VzIG5vdCBmb2xsb3cKKwkJICogc3VjaCBzeW1saW5rcy4gV2UgYWx3YXlzIG5lZWQgYm90aCBzb3VyY2UgYW5kIHRhcmdldAorCQkgKiBpbmZvcm1hdGlvbi4KIAkJICovCi0JCWlmIChyICE9IDAgfHwgIVNfSVNESVIoYS0+bW9kZSkpCi0JCQlyID0gZmlsZV9pbmZvcm1hdGlvbihhLCBhLT5uYW1lLCAmYS0+c3QsICZzdF9tb2RlLCAxKTsKKwkJciA9IGZpbGVfaW5mb3JtYXRpb24oYSwgYS0+bmFtZSwgJmxzdCwgJmxzdF9tb2RlLCAxKTsKIAkJaWYgKHIgIT0gMCkgewogCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIGVycm5vLAogCQkJICAgICJDYW4ndCBzdGF0IGV4aXN0aW5nIG9iamVjdCIpOwogCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7CisJCX0gZWxzZSBpZiAoU19JU0xOSyhsc3RfbW9kZSkpIHsKKwkJCWlmIChsc3QuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKKwkJCQlkaXJsbmsgPSAxOworCQkJLyogSW4gY2FzZSBvZiBhIHN5bWxpbmsgd2UgbmVlZCB0YXJnZXQgaW5mb3JtYXRpb24gKi8KKwkJCXIgPSBmaWxlX2luZm9ybWF0aW9uKGEsIGEtPm5hbWUsICZhLT5zdCwgJnN0X21vZGUsIDApOworCQkJaWYgKHIgIT0gMCkgeworCQkJCWEtPnN0ID0gbHN0OworCQkJCXN0X21vZGUgPSBsc3RfbW9kZTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWEtPnN0ID0gbHN0OworCQkJc3RfbW9kZSA9IGxzdF9tb2RlOwogCQl9CiAKIAkJLyoKQEAgLTE0MDQsMTcgKzE1NjUsNTAgQEAKIAkJfQogCiAJCWlmICghU19JU0RJUihzdF9tb2RlKSkgewotCQkJLyogQSBub24tZGlyIGlzIGluIHRoZSB3YXksIHVubGluayBpdC4gKi8KLQkJCWlmIChkaXNrX3VubGluayhhLT5uYW1lKSAhPSAwKSB7Ci0JCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIGVycm5vLAotCQkJCSAgICAiQ2FuJ3QgdW5saW5rIGFscmVhZHktZXhpc3Rpbmcgb2JqZWN0Iik7Ci0JCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7CisJCQlpZiAoYS0+ZmxhZ3MgJgorCQkJICAgIEFSQ0hJVkVfRVhUUkFDVF9DTEVBUl9OT0NIQU5HRV9GRkxBR1MpIHsKKwkJCQkodm9pZCljbGVhcl9ub2NoYW5nZV9mZmxhZ3MoYSk7CiAJCQl9Ci0JCQlhLT5wc3QgPSBOVUxMOwotCQkJLyogVHJ5IGFnYWluLiAqLwotCQkJZW4gPSBjcmVhdGVfZmlsZXN5c3RlbV9vYmplY3QoYSk7CisJCQlpZiAoKGEtPmZsYWdzICYgQVJDSElWRV9FWFRSQUNUX1NBRkVfV1JJVEVTKSAmJgorCQkJCVNfSVNSRUcoc3RfbW9kZSkpIHsKKwkJCQlpbnQgZmQgPSBsYV9ta3RlbXAoYSk7CisKKwkJCQlpZiAoZmQgPT0gLTEpCisJCQkJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOworCQkJCWEtPmZoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisJCQkJaWYgKGEtPmZoID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorCQkJCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKKworCQkJCWEtPnBzdCA9IE5VTEw7CisJCQkJZW4gPSAwOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoZGlybG5rKSB7CisJCQkJCS8qIEVkZ2UgY2FzZTogZGlyIHN5bWxpbmsgcG9pbnRpbmcKKwkJCQkJICogdG8gYSBmaWxlICovCisJCQkJCWlmIChkaXNrX3JtZGlyKGEtPm5hbWUpICE9IDApIHsKKwkJCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJCQkJICAgIGVycm5vLCAiQ2FuJ3QgdW5saW5rICIKKwkJCQkJCSAgICAiZGlyZWN0b3J5IHN5bWxpbmsiKTsKKwkJCQkJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKGRpc2tfdW5saW5rKGEtPm5hbWUpICE9IDApIHsKKwkJCQkJCS8qIEEgbm9uLWRpciBpcyBpbiB0aGUgd2F5LAorCQkJCQkJICogdW5saW5rIGl0LiAqLworCQkJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkJCQkgICAgZXJybm8sICJDYW4ndCB1bmxpbmsgIgorCQkJCQkJICAgICJhbHJlYWR5LWV4aXN0aW5nIG9iamVjdCIpOworCQkJCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7CisJCQkJCX0KKwkJCQl9CisJCQkJYS0+cHN0ID0gTlVMTDsKKwkJCQkvKiBUcnkgYWdhaW4uICovCisJCQkJZW4gPSBjcmVhdGVfZmlsZXN5c3RlbV9vYmplY3QoYSk7CisJCQl9CiAJCX0gZWxzZSBpZiAoIVNfSVNESVIoYS0+bW9kZSkpIHsKIAkJCS8qIEEgZGlyIGlzIGluIHRoZSB3YXkgb2YgYSBub24tZGlyLCBybWRpciBpdC4gKi8KKwkJCWlmIChhLT5mbGFncyAmIEFSQ0hJVkVfRVhUUkFDVF9DTEVBUl9OT0NIQU5HRV9GRkxBR1MpCisJCQkJKHZvaWQpY2xlYXJfbm9jaGFuZ2VfZmZsYWdzKGEpOwogCQkJaWYgKGRpc2tfcm1kaXIoYS0+bmFtZSkgIT0gMCkgewogCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBlcnJubywKIAkJCQkgICAgIkNhbid0IHJlbW92ZSBhbHJlYWR5LWV4aXN0aW5nIGRpciIpOwpAQCAtMTQ2Miw2ICsxNjU2LDcgQEAKIAl3Y2hhcl90ICpmdWxsbmFtZTsKIAltb2RlX3QgZmluYWxfbW9kZSwgbW9kZTsKIAlpbnQgcjsKKwlEV09SRCBhdHRycyA9IDA7CiAKIAkvKiBXZSBpZGVudGlmeSBoYXJkL3N5bWxpbmtzIGFjY29yZGluZyB0byB0aGUgbGluayBuYW1lcy4gKi8KIAkvKiBTaW5jZSBsaW5rKDIpIGFuZCBzeW1saW5rKDIpIGRvbid0IGhhbmRsZSBtb2Rlcywgd2UncmUgZG9uZSBoZXJlLiAqLwpAQCAtMTQ3NSw2ICsxNjcwLDIwIEBACiAJCQllcnJubyA9IEVJTlZBTDsKIAkJCXIgPSAtMTsKIAkJfSBlbHNlIHsKKwkJCS8qCisJCQkgKiBVbmxpbmtpbmcgYW5kIGxpbmtpbmcgaGVyZSBpcyByZWFsbHkgbm90IGF0b21pYywKKwkJCSAqIGJ1dCBkb2luZyBpdCByaWdodCwgd291bGQgcmVxdWlyZSB1cyB0byBjb25zdHJ1Y3QKKwkJCSAqIGFuIG1rdGVtcGxpbmsoKSBmdW5jdGlvbiwgYW5kIHRoZW4gdXNlIF93cmVuYW1lKCkuCisJCQkgKi8KKwkJCWlmIChhLT5mbGFncyAmIEFSQ0hJVkVfRVhUUkFDVF9TQUZFX1dSSVRFUykgeworCQkJCWF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKG5hbWVmdWxsKTsKKwkJCQlpZiAoYXR0cnMgIT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKKwkJCQkJaWYgKGF0dHJzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorCQkJCQkJZGlza19ybWRpcihuYW1lZnVsbCk7CisJCQkJCWVsc2UKKwkJCQkJCWRpc2tfdW5saW5rKG5hbWVmdWxsKTsKKwkJCQl9CisJCQl9CiAJCQlyID0gbGFfQ3JlYXRlSGFyZExpbmtXKG5hbWVmdWxsLCBsaW5rZnVsbCk7CiAJCQlpZiAociA9PSAwKSB7CiAJCQkJbGFfZG9zbWFwZXJyKEdldExhc3RFcnJvcigpKTsKQEAgLTE1MTEsMTAgKzE3MjAsMzEgQEAKIAl9CiAJbGlua25hbWUgPSBhcmNoaXZlX2VudHJ5X3N5bWxpbmtfdyhhLT5lbnRyeSk7CiAJaWYgKGxpbmtuYW1lICE9IE5VTEwpIHsKKwkJLyoKKwkJICogVW5saW5raW5nIGFuZCBsaW5raW5nIGhlcmUgaXMgcmVhbGx5IG5vdCBhdG9taWMsCisJCSAqIGJ1dCBkb2luZyBpdCByaWdodCwgd291bGQgcmVxdWlyZSB1cyB0byBjb25zdHJ1Y3QKKwkJICogYW4gbWt0ZW1wbGluaygpIGZ1bmN0aW9uLCBhbmQgdGhlbiB1c2UgX3dyZW5hbWUoKS4KKwkJICovCisJCWF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKGEtPm5hbWUpOworCQlpZiAoYXR0cnMgIT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKKwkJCWlmIChhdHRycyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKKwkJCQlkaXNrX3JtZGlyKGEtPm5hbWUpOworCQkJZWxzZQorCQkJCWRpc2tfdW5saW5rKGEtPm5hbWUpOworCQl9CiAjaWYgSEFWRV9TWU1MSU5LCiAJCXJldHVybiBzeW1saW5rKGxpbmtuYW1lLCBhLT5uYW1lKSA/IGVycm5vIDogMDsKICNlbHNlCi0JCXJldHVybiAoRVBFUk0pOworCQllcnJubyA9IDA7CisJCXIgPSBsYV9DcmVhdGVTeW1ib2xpY0xpbmtXKChjb25zdCB3Y2hhcl90ICopYS0+bmFtZSwgbGlua25hbWUsCisJCSAgICBhcmNoaXZlX2VudHJ5X3N5bWxpbmtfdHlwZShhLT5lbnRyeSkpOworCQlpZiAociA9PSAwKSB7CisJCQlpZiAoZXJybm8gPT0gMCkKKwkJCQlsYV9kb3NtYXBlcnIoR2V0TGFzdEVycm9yKCkpOworCQkJciA9IGVycm5vOworCQl9IGVsc2UKKwkJCXIgPSAwOworCQlyZXR1cm4gKHIpOwogI2VuZGlmCiAJfQogCkBAIC0xNTM4LDYgKzE3NjgsNyBAQAogCQkvKiBQT1NJWCByZXF1aXJlcyB0aGF0IHdlIGZhbGwgdGhyb3VnaCBoZXJlLiAqLwogCQkvKiBGQUxMVEhST1VHSCAqLwogCWNhc2UgQUVfSUZSRUc6CisJCWEtPnRtcG5hbWUgPSBOVUxMOwogCQlmdWxsbmFtZSA9IGEtPm5hbWU7CiAJCS8qIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fRVhDTCAqLwogCQlhLT5maCA9IENyZWF0ZUZpbGVXKGZ1bGxuYW1lLCBHRU5FUklDX1dSSVRFLCAwLCBOVUxMLApAQCAtMTY2Nyw2ICsxODk4LDggQEAKIAkJCWxhX2NobW9kKHAtPm5hbWUsIHAtPm1vZGUpOwogCQlpZiAocC0+Zml4dXAgJiBUT0RPX0FDTFMpCiAJCQlzZXRfYWNscyhhLCBJTlZBTElEX0hBTkRMRV9WQUxVRSwgcC0+bmFtZSwgJnAtPmFjbCk7CisJCWlmIChwLT5maXh1cCAmIFRPRE9fRkZMQUdTKQorCQkJc2V0X2ZmbGFnc19wbGF0Zm9ybShwLT5uYW1lLCBwLT5mZmxhZ3Nfc2V0LCAwKTsKIAkJbmV4dCA9IHAtPm5leHQ7CiAJCWFyY2hpdmVfYWNsX2NsZWFyKCZwLT5hY2wpOwogCQlmcmVlKHAtPm5hbWUpOwpAQCAtMTY5MCw5ICsxOTIzLDkgQEAKIAlyZXQgPSBfYXJjaGl2ZV93cml0ZV9kaXNrX2Nsb3NlKCZhLT5hcmNoaXZlKTsKIAlhcmNoaXZlX3dyaXRlX2Rpc2tfc2V0X2dyb3VwX2xvb2t1cCgmYS0+YXJjaGl2ZSwgTlVMTCwgTlVMTCwgTlVMTCk7CiAJYXJjaGl2ZV93cml0ZV9kaXNrX3NldF91c2VyX2xvb2t1cCgmYS0+YXJjaGl2ZSwgTlVMTCwgTlVMTCwgTlVMTCk7Ci0JaWYgKGEtPmVudHJ5KQotCQlhcmNoaXZlX2VudHJ5X2ZyZWUoYS0+ZW50cnkpOworCWFyY2hpdmVfZW50cnlfZnJlZShhLT5lbnRyeSk7CiAJYXJjaGl2ZV93c3RyaW5nX2ZyZWUoJmEtPl9uYW1lX2RhdGEpOworCWFyY2hpdmVfd3N0cmluZ19mcmVlKCZhLT5fdG1wbmFtZV9kYXRhKTsKIAlhcmNoaXZlX3N0cmluZ19mcmVlKCZhLT5hcmNoaXZlLmVycm9yX3N0cmluZyk7CiAJYXJjaGl2ZV93c3RyaW5nX2ZyZWUoJmEtPnBhdGhfc2FmZSk7CiAJYS0+YXJjaGl2ZS5tYWdpYyA9IDA7CkBAIC0xNzg0LDYgKzIwMTcsNyBAQAogCWEtPmZpeHVwX2xpc3QgPSBmZTsKIAlmZS0+Zml4dXAgPSAwOwogCWZlLT5uYW1lID0gX3djc2R1cChwYXRobmFtZSk7CisJZmUtPmZmbGFnc19zZXQgPSAwOwogCXJldHVybiAoZmUpOwogfQogCkBAIC0xNzk4LDcgKzIwMzIsNiBAQAogCXJldHVybiAoYS0+Y3VycmVudF9maXh1cCk7CiB9CiAKLS8qIFRPRE86IE1ha2UgdGhpcyB3b3JrLiAqLwogLyoKICAqIFRPRE86IFRoZSBkZWVwLWRpcmVjdG9yeSBzdXBwb3J0IGJ5cGFzc2VzIHRoaXM7IGRpc2FibGUgZGVlcCBkaXJlY3RvcnkKICAqIHN1cHBvcnQgaWYgd2UncmUgZG9pbmcgc3ltbGluayBjaGVja3MuCkBAIC0xODA4LDcgKzIwNDEsNiBAQAogICogc2NhbiB0aGUgcGF0aCBhbmQgYm90aCBjYW4gYmUgb3B0aW1pemVkIGJ5IGNvbXBhcmluZyBhZ2FpbnN0IG90aGVyCiAgKiByZWNlbnQgcGF0aHMuCiAgKi8KLS8qIFRPRE86IEV4dGVuZCB0aGlzIHRvIHN1cHBvcnQgc3ltbGlua3Mgb24gV2luZG93cyBWaXN0YSBhbmQgbGF0ZXIuICovCiBzdGF0aWMgaW50CiBjaGVja19zeW1saW5rcyhzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9kaXNrICphKQogewpAQCAtMTgyNyw2ICsyMDU5LDkgQEAKIAlwID0gYS0+cGF0aF9zYWZlLnM7CiAJd2hpbGUgKCgqcG4gIT0gJ1wwJykgJiYgKCpwID09ICpwbikpCiAJCSsrcCwgKytwbjsKKwkvKiBTa2lwIGxlYWRpbmcgYmFja3NsYXNoZXMgKi8KKwl3aGlsZSAoKnBuID09ICdcXCcpCisJCSsrcG47CiAJYyA9IHBuWzBdOwogCS8qIEtlZXAgZ29pbmcgdW50aWwgd2UndmUgY2hlY2tlZCB0aGUgZW50aXJlIG5hbWUuICovCiAJd2hpbGUgKHBuWzBdICE9ICdcMCcgJiYgKHBuWzBdICE9ICdcXCcgfHwgcG5bMV0gIT0gJ1wwJykpIHsKQEAgLTE4NDQsMTEgKzIwNzksMjEgQEAKIAkJfSBlbHNlIGlmIChTX0lTTE5LKHN0X21vZGUpKSB7CiAJCQlpZiAoYyA9PSAnXDAnKSB7CiAJCQkJLyoKLQkJCQkgKiBMYXN0IGVsZW1lbnQgaXMgc3ltbGluazsgcmVtb3ZlIGl0Ci0JCQkJICogc28gd2UgY2FuIG92ZXJ3cml0ZSBpdCB3aXRoIHRoZQorCQkJCSAqIExhc3QgZWxlbWVudCBpcyBhIGZpbGUgb3IgZGlyZWN0b3J5IHN5bWxpbmsuCisJCQkJICogUmVtb3ZlIGl0IHNvIHdlIGNhbiBvdmVyd3JpdGUgaXQgd2l0aCB0aGUKIAkJCQkgKiBpdGVtIGJlaW5nIGV4dHJhY3RlZC4KIAkJCQkgKi8KLQkJCQlpZiAoZGlza191bmxpbmsoYS0+bmFtZSkpIHsKKwkJCQlpZiAoYS0+ZmxhZ3MgJgorCQkJCSAgICBBUkNISVZFX0VYVFJBQ1RfQ0xFQVJfTk9DSEFOR0VfRkZMQUdTKSB7CisJCQkJCSh2b2lkKWNsZWFyX25vY2hhbmdlX2ZmbGFncyhhKTsKKwkJCQl9CisJCQkJaWYgKHN0LmR3RmlsZUF0dHJpYnV0ZXMgJgorCQkJCSAgICBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpIHsKKwkJCQkJciA9IGRpc2tfcm1kaXIoYS0+bmFtZSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJciA9IGRpc2tfdW5saW5rKGEtPm5hbWUpOworCQkJCX0KKwkJCQlpZiAocikgewogCQkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgZXJybm8sCiAJCQkJCSAgICAiQ291bGQgbm90IHJlbW92ZSBzeW1saW5rICVscyIsCiAJCQkJCSAgICBhLT5uYW1lKTsKQEAgLTE4NzIsNyArMjExNywxNyBAQAogCQkJCXJldHVybiAoMCk7CiAJCQl9IGVsc2UgaWYgKGEtPmZsYWdzICYgQVJDSElWRV9FWFRSQUNUX1VOTElOSykgewogCQkJCS8qIFVzZXIgYXNrZWQgdXMgdG8gcmVtb3ZlIHByb2JsZW1zLiAqLwotCQkJCWlmIChkaXNrX3VubGluayhhLT5uYW1lKSAhPSAwKSB7CisJCQkJaWYgKGEtPmZsYWdzICYKKwkJCQkgICAgQVJDSElWRV9FWFRSQUNUX0NMRUFSX05PQ0hBTkdFX0ZGTEFHUykgeworCQkJCQkodm9pZCljbGVhcl9ub2NoYW5nZV9mZmxhZ3MoYSk7CisJCQkJfQorCQkJCWlmIChzdC5kd0ZpbGVBdHRyaWJ1dGVzICYKKwkJCQkgICAgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSB7CisJCQkJCXIgPSBkaXNrX3JtZGlyKGEtPm5hbWUpOworCQkJCX0gZWxzZSB7CisJCQkJCXIgPSBkaXNrX3VubGluayhhLT5uYW1lKTsKKwkJCQl9CisJCQkJaWYgKHIgIT0gMCkgewogCQkJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgMCwKIAkJCQkJICAgICJDYW5ub3QgcmVtb3ZlIGludGVydmVuaW5nICIKIAkJCQkJICAgICJzeW1saW5rICVscyIsIGEtPm5hbWUpOwpAQCAtMTg4OCw2ICsyMTQzLDggQEAKIAkJCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKIAkJCX0KIAkJfQorCQlwblswXSA9IGM7CisJCXBuKys7CiAJfQogCXBuWzBdID0gYzsKIAkvKiBXZSd2ZSBjaGVja2VkIGFuZC9vciBjbGVhbmVkIHRoZSB3aG9sZSBwYXRoLCBzbyByZW1lbWJlciBpdC4gKi8KQEAgLTI0MzgsMTAgKzI2OTUsNTYgQEAKIAlyZXR1cm4gKHIpOwogfQogCitzdGF0aWMgaW50IHNldF9mZmxhZ3NfcGxhdGZvcm0oY29uc3Qgd2NoYXJfdCAqbmFtZSwgdW5zaWduZWQgbG9uZyBmZmxhZ3Nfc2V0LAorICAgIHVuc2lnbmVkIGxvbmcgZmZsYWdzX2NsZWFyKQoreworCURXT1JEIG9sZGZsYWdzLCBuZXdmbGFnczsKKwl3Y2hhcl90ICpmdWxsbmFtZTsKKworCWNvbnN0IERXT1JEIHNldHRhYmxlX2ZsYWdzID0KKwkgICAgRklMRV9BVFRSSUJVVEVfQVJDSElWRSB8CisJICAgIEZJTEVfQVRUUklCVVRFX0hJRERFTiB8CisJICAgIEZJTEVfQVRUUklCVVRFX05PUk1BTCB8CisJICAgIEZJTEVfQVRUUklCVVRFX05PVF9DT05URU5UX0lOREVYRUQgfAorCSAgICBGSUxFX0FUVFJJQlVURV9PRkZMSU5FIHwKKwkgICAgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkgfAorCSAgICBGSUxFX0FUVFJJQlVURV9TWVNURU0gfAorCSAgICBGSUxFX0FUVFJJQlVURV9URU1QT1JBUlk7CisKKwlvbGRmbGFncyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhuYW1lKTsKKwlpZiAob2xkZmxhZ3MgPT0gKERXT1JEKS0xICYmCisJICAgIEdldExhc3RFcnJvcigpID09IEVSUk9SX0lOVkFMSURfTkFNRSkgeworCQlmdWxsbmFtZSA9IF9fbGFfd2luX3Blcm1pc3NpdmVfbmFtZV93KG5hbWUpOworCQlvbGRmbGFncyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhmdWxsbmFtZSk7CisJfQorCWlmIChvbGRmbGFncyA9PSAoRFdPUkQpLTEpIHsKKwkJbGFfZG9zbWFwZXJyKEdldExhc3RFcnJvcigpKTsKKwkJcmV0dXJuIChBUkNISVZFX1dBUk4pOworCX0KKwluZXdmbGFncyA9ICgob2xkZmxhZ3MgJiB+ZmZsYWdzX2NsZWFyKSB8IGZmbGFnc19zZXQpICYgc2V0dGFibGVfZmxhZ3M7CisJaWYoU2V0RmlsZUF0dHJpYnV0ZXNXKG5hbWUsIG5ld2ZsYWdzKSA9PSAwKQorCQlyZXR1cm4gKEFSQ0hJVkVfV0FSTik7CisJcmV0dXJuIChBUkNISVZFX09LKTsKK30KKworc3RhdGljIGludAorY2xlYXJfbm9jaGFuZ2VfZmZsYWdzKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEpCit7CisJcmV0dXJuIChzZXRfZmZsYWdzX3BsYXRmb3JtKGEtPm5hbWUsIDAsIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKSk7Cit9CisKIHN0YXRpYyBpbnQKIHNldF9mZmxhZ3Moc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqYSkKIHsKLQkodm9pZClhOyAvKiBVTlVTRUQgKi8KKwl1bnNpZ25lZCBsb25nCXNldCwgY2xlYXI7CisKKwlpZiAoYS0+dG9kbyAmIFRPRE9fRkZMQUdTKSB7CisJCWFyY2hpdmVfZW50cnlfZmZsYWdzKGEtPmVudHJ5LCAmc2V0LCAmY2xlYXIpOworCQlpZiAoc2V0ID09IDAgICYmIGNsZWFyID09IDApCisJCQlyZXR1cm4gKEFSQ0hJVkVfT0spOworCQlyZXR1cm4gKHNldF9mZmxhZ3NfcGxhdGZvcm0oYS0+bmFtZSwgc2V0LCBjbGVhcikpOworCisgICAgICAgIH0KIAlyZXR1cm4gKEFSQ0hJVkVfT0spOwogfQogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9maWx0ZXIuMyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2ZpbHRlci4zCmluZGV4IGQ2ZmEwNzEuLmM4M2ViNzcgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2ZpbHRlci4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2ZpbHRlci4zCkBAIC00Myw3ICs0Myw3IEBACiAuTm0gYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX3Byb2dyYW0gLAogLk5tIGFyY2hpdmVfd3JpdGVfYWRkX2ZpbHRlcl91dWVuY29kZSAsCiAuTm0gYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX3h6ICwKLS5ObSBhcmNoaXZlX3dyaXRlX2FkZF9maWx0ZXJfenN0ZCAsCisuTm0gYXJjaGl2ZV93cml0ZV9hZGRfZmlsdGVyX3pzdGQKIC5OZCBmdW5jdGlvbnMgZW5hYmxpbmcgb3V0cHV0IGZpbHRlcnMKIC5TaCBMSUJSQVJZCiBTdHJlYW1pbmcgQXJjaGl2ZSBMaWJyYXJ5IChsaWJhcmNoaXZlLCAtbGFyY2hpdmUpCkBAIC0xMjUsMTAgKzEyNSwxMCBAQAogLlwiCiAuU2ggU0VFIEFMU08KIC5YciB0YXIgMSAsCi0uWHIgbGliYXJjaGl2ZSAzICwKIC5YciBhcmNoaXZlX3dyaXRlIDMgLAogLlhyIGFyY2hpdmVfd3JpdGVfZm9ybWF0IDMgLAogLlhyIGFyY2hpdmVfd3JpdGVfc2V0X29wdGlvbnMgMyAsCisuWHIgbGliYXJjaGl2ZSAzICwKIC5YciBjcGlvIDUgLAogLlhyIG10cmVlIDUgLAogLlhyIHRhciA1CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9maW5pc2hfZW50cnkuMyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2ZpbmlzaF9lbnRyeS4zCmluZGV4IGRjMWI5NGIuLjU3OTdlMTYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2ZpbmlzaF9lbnRyeS4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2ZpbmlzaF9lbnRyeS4zCkBAIC03MSw5ICs3MSw5IEBACiAuXCIKIC5TaCBTRUUgQUxTTwogLlhyIHRhciAxICwKLS5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGFyY2hpdmVfd3JpdGVfZGF0YSAzICwKIC5YciBhcmNoaXZlX3dyaXRlX3NldF9vcHRpb25zIDMgLAorLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgY3BpbyA1ICwKIC5YciBtdHJlZSA1ICwKIC5YciB0YXIgNQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZm9ybWF0LjMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9mb3JtYXQuMwppbmRleCBhYWFmYjBhLi40N2E3NDAzIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9mb3JtYXQuMworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9mb3JtYXQuMwpAQCAtNTIsNyArNTIsNyBAQAogLk5tIGFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF92N3RhciAsCiAuTm0gYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3dhcmMgLAogLk5tIGFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF94YXIgLAotLk5tIGFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF96aXAgLAorLk5tIGFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF96aXAKIC5OZCBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nIGFyY2hpdmVzCiAuU2ggTElCUkFSWQogU3RyZWFtaW5nIEFyY2hpdmUgTGlicmFyeSAobGliYXJjaGl2ZSwgLWxhcmNoaXZlKQpAQCAtMTY2LDkgKzE2Niw5IEBACiAuXCIKIC5TaCBTRUUgQUxTTwogLlhyIHRhciAxICwKLS5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGFyY2hpdmVfd3JpdGUgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZV9zZXRfb3B0aW9ucyAzICwKKy5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGNwaW8gNSAsCiAuWHIgbGliYXJjaGl2ZS1mb3JtYXRzIDUgLAogLlhyIG10cmVlIDUgLApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZnJlZS4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZnJlZS4zCmluZGV4IDFiMmQwNzEuLjUyMTBlMmEgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2ZyZWUuMworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9mcmVlLjMKQEAgLTU2LDcgKzU2LDcgQEAKIHRvIHJlbGVhc2UgdGhlIHJlc291cmNlcy4KIFRoaXMgY2FuIGJlIHVzZWQgdG8gc3BlZWQgcmVjb3Zlcnkgd2hlbiB0aGUgYXJjaGl2ZSBjcmVhdGlvbgogbXVzdCBiZSBhYm9ydGVkLgotTm90ZSB0aGF0IHRoZSBjcmVhdGVkIGFyY2hpdmUgaXMgbGlrZWx5IHRvIGJlIG1hbGZvcm1lZCBpbiB0aGlzIGNhc2U7IAorTm90ZSB0aGF0IHRoZSBjcmVhdGVkIGFyY2hpdmUgaXMgbGlrZWx5IHRvIGJlIG1hbGZvcm1lZCBpbiB0aGlzIGNhc2U7CiAuSXQgRm4gYXJjaGl2ZV93cml0ZV9jbG9zZQogQ29tcGxldGUgdGhlIGFyY2hpdmUgYW5kIGludm9rZSB0aGUgY2xvc2UgY2FsbGJhY2suCiAuSXQgRm4gYXJjaGl2ZV93cml0ZV9maW5pc2gKQEAgLTg5LDggKzg5LDggQEAKIC5cIgogLlNoIFNFRSBBTFNPCiAuWHIgdGFyIDEgLAotLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZV9zZXRfb3B0aW9ucyAzICwKKy5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGNwaW8gNSAsCiAuWHIgbXRyZWUgNSAsCiAuWHIgdGFyIDUKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2hlYWRlci4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfaGVhZGVyLjMKaW5kZXggNGRlNThmMy4uMjIxN2IxOCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfaGVhZGVyLjMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfaGVhZGVyLjMKQEAgLTY2LDggKzY2LDggQEAKIC5cIgogLlNoIFNFRSBBTFNPCiAuWHIgdGFyIDEgLAotLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZV9zZXRfb3B0aW9ucyAzICwKKy5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGNwaW8gNSAsCiAuWHIgbXRyZWUgNSAsCiAuWHIgdGFyIDUKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX25ldy4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfbmV3LjMKaW5kZXggZjA1ZDI2OS4uNzg4Y2JiOCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfbmV3LjMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfbmV3LjMKQEAgLTUwLDkgKzUwLDkgQEAKIC5cIiAuU2ggRVJST1JTCiAuU2ggU0VFIEFMU08KIC5YciB0YXIgMSAsCi0uWHIgbGliYXJjaGl2ZSAzICwKIC5YciBhcmNoaXZlX3dyaXRlIDMgLAogLlhyIGFyY2hpdmVfd3JpdGVfc2V0X29wdGlvbnMgMyAsCisuWHIgbGliYXJjaGl2ZSAzICwKIC5YciBjcGlvIDUgLAogLlhyIG10cmVlIDUgLAogLlhyIHRhciA1CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9vcGVuLjMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9vcGVuLjMKaW5kZXggNDU3ODczZS4uMDEyOWQxMCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfb3Blbi4zCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX29wZW4uMwpAQCAtMjAwLDcgKzIwMCw3IEBACiAuRm4gYXJjaGl2ZV9zZXRfZXJyb3IKIHRvIHJlZ2lzdGVyIGFuIGVycm9yIGNvZGUgYW5kIG1lc3NhZ2UgYW5kCiByZXR1cm4KLS5DbSBBUkNISVZFX0ZBVEFMLgorLkNtIEFSQ0hJVkVfRkFUQUwgLgogLlBwCiBOb3RlIHRoYXQgaWYgdGhlIGNsaWVudC1wcm92aWRlZCB3cml0ZSBjYWxsYmFjayBmdW5jdGlvbgogcmV0dXJucyBhIG5vbi16ZXJvIHZhbHVlLCB0aGF0IGVycm9yIHdpbGwgYmUgcHJvcGFnYXRlZCBiYWNrIHRvIHRoZSBjYWxsZXIKQEAgLTIzNCwxMyArMjM0LDEzIEBACiAuXCIKIC5TaCBTRUUgQUxTTwogLlhyIHRhciAxICwKLS5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGFyY2hpdmVfd3JpdGUgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZV9ibG9ja3NpemUgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZV9maWx0ZXIgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZV9mb3JtYXQgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZV9uZXcgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZV9zZXRfb3B0aW9ucyAzICwKKy5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGNwaW8gNSAsCiAuWHIgbXRyZWUgNSAsCiAuWHIgdGFyIDUKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3ByaXZhdGUuaCBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3ByaXZhdGUuaAppbmRleCAwZGZkMWIxLi4yN2NiYTAzIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9wcml2YXRlLmgKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfcHJpdmF0ZS5oCkBAIC0yNSwxOSArMjUsMjQgQEAKICAqICRGcmVlQlNEOiBoZWFkL2xpYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfcHJpdmF0ZS5oIDIwMTE1NSAyMDA5LTEyLTI5IDA1OjIwOjEyWiBraWVudHpsZSAkCiAgKi8KIAorI2lmbmRlZiBBUkNISVZFX1dSSVRFX1BSSVZBVEVfSF9JTkNMVURFRAorI2RlZmluZSBBUkNISVZFX1dSSVRFX1BSSVZBVEVfSF9JTkNMVURFRAorCiAjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAogI2lmbmRlZiBfX0xJQkFSQ0hJVkVfVEVTVAogI2Vycm9yIFRoaXMgaGVhZGVyIGlzIG9ubHkgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHRvIGxpYmFyY2hpdmUuCiAjZW5kaWYKICNlbmRpZgogCi0jaWZuZGVmIEFSQ0hJVkVfV1JJVEVfUFJJVkFURV9IX0lOQ0xVREVECi0jZGVmaW5lCUFSQ0hJVkVfV1JJVEVfUFJJVkFURV9IX0lOQ0xVREVECi0KICNpbmNsdWRlICJhcmNoaXZlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV9zdHJpbmcuaCIKICNpbmNsdWRlICJhcmNoaXZlX3ByaXZhdGUuaCIKIAorI2RlZmluZQlBUkNISVZFX1dSSVRFX0ZJTFRFUl9TVEFURV9ORVcJCTFVCisjZGVmaW5lCUFSQ0hJVkVfV1JJVEVfRklMVEVSX1NUQVRFX09QRU4JCTJVCisjZGVmaW5lCUFSQ0hJVkVfV1JJVEVfRklMVEVSX1NUQVRFX0NMT1NFRAk0VQorI2RlZmluZQlBUkNISVZFX1dSSVRFX0ZJTFRFUl9TVEFURV9GQVRBTAkweDgwMDBVCisKIHN0cnVjdCBhcmNoaXZlX3dyaXRlOwogCiBzdHJ1Y3QgYXJjaGl2ZV93cml0ZV9maWx0ZXIgewpAQCAtNTUsNiArNjAsNyBAQAogCWludAkgIGNvZGU7CiAJaW50CSAgYnl0ZXNfcGVyX2Jsb2NrOwogCWludAkgIGJ5dGVzX2luX2xhc3RfYmxvY2s7CisJaW50CSAgc3RhdGU7CiB9OwogCiAjaWYgQVJDSElWRV9WRVJTSU9OIDwgNDAwMDAwMApAQCAtNjYsOCArNzIsNiBAQAogaW50IF9fYXJjaGl2ZV93cml0ZV9vdXRwdXQoc3RydWN0IGFyY2hpdmVfd3JpdGUgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwogaW50IF9fYXJjaGl2ZV93cml0ZV9udWxscyhzdHJ1Y3QgYXJjaGl2ZV93cml0ZSAqLCBzaXplX3QpOwogaW50IF9fYXJjaGl2ZV93cml0ZV9maWx0ZXIoc3RydWN0IGFyY2hpdmVfd3JpdGVfZmlsdGVyICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKLWludCBfX2FyY2hpdmVfd3JpdGVfb3Blbl9maWx0ZXIoc3RydWN0IGFyY2hpdmVfd3JpdGVfZmlsdGVyICopOwotaW50IF9fYXJjaGl2ZV93cml0ZV9jbG9zZV9maWx0ZXIoc3RydWN0IGFyY2hpdmVfd3JpdGVfZmlsdGVyICopOwogCiBzdHJ1Y3QgYXJjaGl2ZV93cml0ZSB7CiAJc3RydWN0IGFyY2hpdmUJYXJjaGl2ZTsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXQuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXQuYwppbmRleCAwZjcwNjIzLi4xMmRlMDgwIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0LmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdC5jCkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJhcmNoaXZlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3ByaXZhdGUuaCIKIAogLyogQSB0YWJsZSB0aGF0IG1hcHMgZm9ybWF0IGNvZGVzIHRvIGZ1bmN0aW9ucy4gKi8KIHN0YXRpYyBjb25zdApAQCAtNzYsMyArNzcsNDcgQEAKIAlhcmNoaXZlX3NldF9lcnJvcihhLCBFSU5WQUwsICJObyBzdWNoIGZvcm1hdCIpOwogCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CiB9CisKK3ZvaWQKK19fYXJjaGl2ZV93cml0ZV9lbnRyeV9maWxldHlwZV91bnN1cHBvcnRlZChzdHJ1Y3QgYXJjaGl2ZSAqYSwKKyAgICBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqZW50cnksIGNvbnN0IGNoYXIgKmZvcm1hdCkKK3sKKwljaGFyICpuYW1lID0gTlVMTDsKKworCXN3aXRjaCAoYXJjaGl2ZV9lbnRyeV9maWxldHlwZShlbnRyeSkpIHsKKwkvKgorCSAqIEFsbCBmb3JtYXRzIHNob3VsZCBiZSBhYmxlIHRvIGFyY2hpdmUgcmVndWxhciBmaWxlcyAoQUVfSUZSRUcpCisJICovCisJY2FzZSBBRV9JRkRJUjoKKwkJbmFtZSA9ICJkaXJlY3RvcmllcyI7CisJCWJyZWFrOworCWNhc2UgQUVfSUZMTks6CisJCW5hbWUgPSAic3ltYm9saWMgbGlua3MiOworCQlicmVhazsKKwljYXNlIEFFX0lGQ0hSOgorCQluYW1lID0gImNoYXJhY3RlciBkZXZpY2VzIjsKKwkJYnJlYWs7CisJY2FzZSBBRV9JRkJMSzoKKwkJbmFtZSA9ICJibG9jayBkZXZpY2VzIjsKKwkJYnJlYWs7CisJY2FzZSBBRV9JRklGTzoKKwkJbmFtZSA9ICJuYW1lZCBwaXBlcyI7CisJCWJyZWFrOworCWNhc2UgQUVfSUZTT0NLOgorCQluYW1lID0gInNvY2tldHMiOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwlpZiAobmFtZSAhPSBOVUxMKSB7CisJCWFyY2hpdmVfc2V0X2Vycm9yKGEsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisJCSAgICAiJXM6ICVzIGZvcm1hdCBjYW5ub3QgYXJjaGl2ZSAlcyIsCisJCSAgICBhcmNoaXZlX2VudHJ5X3BhdGhuYW1lKGVudHJ5KSwgZm9ybWF0LCBuYW1lKTsKKwl9IGVsc2UgeworCQlhcmNoaXZlX3NldF9lcnJvcihhLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAorCQkgICAgIiVzOiAlcyBmb3JtYXQgY2Fubm90IGFyY2hpdmUgZmlsZXMgd2l0aCBtb2RlIDAlbG8iLAorCQkgICAgYXJjaGl2ZV9lbnRyeV9wYXRobmFtZShlbnRyeSksIGZvcm1hdCwKKwkJICAgICh1bnNpZ25lZCBsb25nKWFyY2hpdmVfZW50cnlfbW9kZShlbnRyeSkpOworCX0KK30KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfN3ppcC5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF83emlwLmMKaW5kZXggMmJkNGVjNC4uY2U5NmYyZiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF83emlwLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF83emlwLmMKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJhcmNoaXZlX3JiLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV9zdHJpbmcuaCIKICNpbmNsdWRlICJhcmNoaXZlX3dyaXRlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJhcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcHJpdmF0ZS5oIgogCiAvKgogICogQ29kZWMgSUQKQEAgLTE2NCw3ICsxNjUsNyBAQAogCW1vZGVfdAkJCSBtb2RlOwogCXVpbnQzMl90CQkgY3JjMzI7CiAKLQlpbnQJCQkgZGlyOjE7CisJc2lnbmVkIGludAkJIGRpcjoxOwogfTsKIAogc3RydWN0IF83emlwIHsKQEAgLTQzOSw3ICs0NDAsOCBAQAogCiAJciA9IGZpbGVfbmV3KGEsIGVudHJ5LCAmZmlsZSk7CiAJaWYgKHIgPCBBUkNISVZFX1dBUk4pIHsKLQkJZmlsZV9mcmVlKGZpbGUpOworCQlpZiAoZmlsZSAhPSBOVUxMKQorCQkJZmlsZV9mcmVlKGZpbGUpOwogCQlyZXR1cm4gKHIpOwogCX0KIAlpZiAoZmlsZS0+c2l6ZSA9PSAwICYmIGZpbGUtPmRpcikgewpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9hci5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9hci5jCmluZGV4IDUwMzA1Y2MuLmZjMGRlMWUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfYXIuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2FyLmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJhcmNoaXZlX2VudHJ5LmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV93cml0ZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3ByaXZhdGUuaCIKIAogc3RydWN0IGFyX3cgewogCXVpbnQ2NF90CSBlbnRyeV9ieXRlc19yZW1haW5pbmc7CkBAIC0xODcsNiArMTg4LDExIEBACiAJCWJ1ZmZbQVJfbmFtZV9vZmZzZXRdID0gJy8nOwogCQlnb3RvIHN0YXQ7CiAJfQorCWlmIChzdHJjbXAocGF0aG5hbWUsICIvU1lNNjQvIikgPT0gMCkgeworCQkvKiBFbnRyeSBpcyBhcmNoaXZlIHN5bWJvbCB0YWJsZSBpbiBHTlUgNjQtYml0IGZvcm1hdCAqLworCQltZW1jcHkoYnVmZiArIEFSX25hbWVfb2Zmc2V0LCAiL1NZTTY0LyIsIDcpOworCQlnb3RvIHN0YXQ7CisJfQogCWlmIChzdHJjbXAocGF0aG5hbWUsICJfXy5TWU1ERUYiKSA9PSAwKSB7CiAJCS8qIEVudHJ5IGlzIGFyY2hpdmUgc3ltYm9sIHRhYmxlIGluIEJTRCBmb3JtYXQgKi8KIAkJbWVtY3B5KGJ1ZmYgKyBBUl9uYW1lX29mZnNldCwgIl9fLlNZTURFRiIsIDkpOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9jcGlvLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2NwaW8uYwppbmRleCBhNGM5ZDFlLi43MjlmOWM3IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2NwaW8uYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2NwaW8uYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgImFyY2hpdmVfZW50cnlfbG9jYWxlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV93cml0ZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3ByaXZhdGUuaCIKIAogc3RhdGljIHNzaXplX3QJYXJjaGl2ZV93cml0ZV9jcGlvX2RhdGEoc3RydWN0IGFyY2hpdmVfd3JpdGUgKiwKIAkJICAgIGNvbnN0IHZvaWQgKmJ1ZmYsIHNpemVfdCBzKTsKQEAgLTQwOCw4ICs0MDksNyBAQAogCQl9CiAJfQogZXhpdF93cml0ZV9oZWFkZXI6Ci0JaWYgKGVudHJ5X21haW4pCi0JCWFyY2hpdmVfZW50cnlfZnJlZShlbnRyeV9tYWluKTsKKwlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CiAJcmV0dXJuIChyZXRfZmluYWwpOwogfQogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2NwaW9fbmV3Yy5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9jcGlvX25ld2MuYwppbmRleCA5NTdmMWEzLi4xNzJmZGE2IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2NwaW9fbmV3Yy5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfY3Bpb19uZXdjLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJhcmNoaXZlX2VudHJ5X2xvY2FsZS5oIgogI2luY2x1ZGUgImFyY2hpdmVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFyY2hpdmVfd3JpdGVfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wcml2YXRlLmgiCiAKIHN0YXRpYyBzc2l6ZV90CWFyY2hpdmVfd3JpdGVfbmV3Y19kYXRhKHN0cnVjdCBhcmNoaXZlX3dyaXRlICosCiAJCSAgICBjb25zdCB2b2lkICpidWZmLCBzaXplX3Qgcyk7CkBAIC0zNjYsOCArMzY3LDcgQEAKIAkJfQogCX0KIGV4aXRfd3JpdGVfaGVhZGVyOgotCWlmIChlbnRyeV9tYWluKQotCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CisJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOwogCXJldHVybiAocmV0X2ZpbmFsKTsKIH0KIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9nbnV0YXIuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfZ251dGFyLmMKaW5kZXggMmQ4NThjOS4uZWMyOWM1YyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9nbnV0YXIuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2dudXRhci5jCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiYXJjaGl2ZV9lbnRyeV9sb2NhbGUuaCIKICNpbmNsdWRlICJhcmNoaXZlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJhcmNoaXZlX3dyaXRlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJhcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcHJpdmF0ZS5oIgogCiBzdHJ1Y3QgZ251dGFyIHsKIAl1aW50NjRfdAllbnRyeV9ieXRlc19yZW1haW5pbmc7CkBAIC0zMzksNyArMzQwLDcgQEAKIAkJICogY2FzZSBnZXR0aW5nIFdDUyBmYWlsZWQuIE9uIFBPU0lYLCB0aGlzIGlzIGEKIAkJICogbm9ybWFsIG9wZXJhdGlvbi4KIAkJICovCi0JCWlmIChwICE9IE5VTEwgJiYgcFtzdHJsZW4ocCkgLSAxXSAhPSAnLycpIHsKKwkJaWYgKHAgIT0gTlVMTCAmJiBwWzBdICE9ICdcMCcgJiYgcFtzdHJsZW4ocCkgLSAxXSAhPSAnLycpIHsKIAkJCXN0cnVjdCBhcmNoaXZlX3N0cmluZyBhczsKIAogCQkJYXJjaGl2ZV9zdHJpbmdfaW5pdCgmYXMpOwpAQCAtNTM0LDE3ICs1MzUsOSBAQAogCQljYXNlIEFFX0lGQkxLOiB0YXJ0eXBlID0gJzQnIDsgYnJlYWs7CiAJCWNhc2UgQUVfSUZESVI6IHRhcnR5cGUgPSAnNScgOyBicmVhazsKIAkJY2FzZSBBRV9JRklGTzogdGFydHlwZSA9ICc2JyA7IGJyZWFrOwotCQljYXNlIEFFX0lGU09DSzoKLQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAotCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0JCQkgICAgInRhciBmb3JtYXQgY2Fubm90IGFyY2hpdmUgc29ja2V0Iik7Ci0JCQlyZXQgPSBBUkNISVZFX0ZBSUxFRDsKLQkJCWdvdG8gZXhpdF93cml0ZV9oZWFkZXI7Ci0JCWRlZmF1bHQ6Ci0JCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKLQkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAotCQkJICAgICJ0YXIgZm9ybWF0IGNhbm5vdCBhcmNoaXZlIHRoaXMgKG1vZGU9MCVsbykiLAotCQkJICAgICh1bnNpZ25lZCBsb25nKWFyY2hpdmVfZW50cnlfbW9kZShlbnRyeSkpOworCQlkZWZhdWx0OiAvKiBBRV9JRlNPQ0sgYW5kIHVua25vd24gKi8KKwkJCV9fYXJjaGl2ZV93cml0ZV9lbnRyeV9maWxldHlwZV91bnN1cHBvcnRlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYS0+YXJjaGl2ZSwgZW50cnksICJnbnV0YXIiKTsKIAkJCXJldCA9IEFSQ0hJVkVfRkFJTEVEOwogCQkJZ290byBleGl0X3dyaXRlX2hlYWRlcjsKIAkJfQpAQCAtNTY1LDggKzU1OCw3IEBACiAJZ251dGFyLT5lbnRyeV9ieXRlc19yZW1haW5pbmcgPSBhcmNoaXZlX2VudHJ5X3NpemUoZW50cnkpOwogCWdudXRhci0+ZW50cnlfcGFkZGluZyA9IDB4MWZmICYgKC0oaW50NjRfdClnbnV0YXItPmVudHJ5X2J5dGVzX3JlbWFpbmluZyk7CiBleGl0X3dyaXRlX2hlYWRlcjoKLQlpZiAoZW50cnlfbWFpbikKLQkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOworCWFyY2hpdmVfZW50cnlfZnJlZShlbnRyeV9tYWluKTsKIAlyZXR1cm4gKHJldCk7CiB9CiAKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfaXNvOTY2MC5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9pc285NjYwLmMKaW5kZXggNGFkZjY4ZS4uNTY0ZDRkNyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9pc285NjYwLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9pc285NjYwLmMKQEAgLTI4OSwxMiArMjg5LDEyIEBACiAJCXN0cnVjdCBleHRyX3JlYwkqY3VycmVudDsKIAl9CQkJIGV4dHJfcmVjX2xpc3Q7CiAKLQlpbnQJCQkgdmlydHVhbDoxOworCXNpZ25lZCBpbnQJCSB2aXJ0dWFsOjE7CiAJLyogSWYgc2V0IHRvIG9uZSwgdGhpcyBmaWxlIHR5cGUgaXMgYSBkaXJlY3RvcnkuCiAJICogQSBjb252ZW5pZW5jZSBmbGFnIHRvIGJlIHVzZWQgYXMKIAkgKiAiYXJjaGl2ZV9lbnRyeV9maWxldHlwZShpc29lbnQtPmZpbGUtPmVudHJ5KSA9PSBBRV9JRkRJUiIuCiAJICovCi0JaW50CQkJIGRpcjoxOworCXNpZ25lZCBpbnQJCSBkaXI6MTsKIH07CiAKIHN0cnVjdCBoYXJkbGluayB7CkBAIC03NTUsOSArNzU1LDkgQEAKIAogCS8qIFVzZWQgZm9yIG1ha2luZyB6aXNvZnMuICovCiAJc3RydWN0IHsKLQkJaW50CQkgZGV0ZWN0X21hZ2ljOjE7Ci0JCWludAkJIG1ha2luZzoxOwotCQlpbnQJCSBhbGx6ZXJvOjE7CisJCXNpZ25lZCBpbnQJIGRldGVjdF9tYWdpYzoxOworCQlzaWduZWQgaW50CSBtYWtpbmc6MTsKKwkJc2lnbmVkIGludAkgYWxsemVybzoxOwogCQl1bnNpZ25lZCBjaGFyCSBtYWdpY19idWZmZXJbNjRdOwogCQlpbnQJCSBtYWdpY19jbnQ7CiAKQEAgLTM2NTAsNyArMzY1MCw3IEBACiAJaWYgKHNpemUgPiBpc285NjYwLT53YnVmZl9yZW1haW5pbmcgfHwKIAkgICAgaXNvOTY2MC0+d2J1ZmZfcmVtYWluaW5nID09IDApIHsKIAkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fTUlTQywKLQkJICAgICJJbnRlcm5hbCBQcm9ncmFtaW5nIGVycm9yOiBpc285NjYwOndiX2NvbnN1bWUoKSIKKwkJICAgICJJbnRlcm5hbCBQcm9ncmFtbWluZyBlcnJvcjogaXNvOTY2MDp3Yl9jb25zdW1lKCkiCiAJCSAgICAiIHNpemU9JWpkLCB3YnVmZl9yZW1haW5pbmc9JWpkIiwKIAkJICAgIChpbnRtYXhfdClzaXplLCAoaW50bWF4X3QpaXNvOTY2MC0+d2J1ZmZfcmVtYWluaW5nKTsKIAkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKQEAgLTM2NzEsNyArMzY3MSw3IEBACiAKIAlpZiAoaXNvOTY2MC0+d2J1ZmZfdHlwZSAhPSBXQl9UT19URU1QKSB7CiAJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX01JU0MsCi0JCSAgICAiSW50ZXJuYWwgUHJvZ3JhbWluZyBlcnJvcjogaXNvOTY2MDp3Yl9zZXRfb2Zmc2V0KCkiKTsKKwkJICAgICJJbnRlcm5hbCBQcm9ncmFtbWluZyBlcnJvcjogaXNvOTY2MDp3Yl9zZXRfb2Zmc2V0KCkiKTsKIAkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKIAl9CiAKQEAgLTQ4OTksMTAgKzQ4OTksMTAgQEAKIAkJaWYgKHBbMF0gPT0gJy8nKSB7CiAJCQlpZiAocFsxXSA9PSAnLycpCiAJCQkJLyogQ29udmVydCAnLy8nIC0tPiAnLycgKi8KLQkJCQlzdHJjcHkocCwgcCsxKTsKKwkJCQltZW1tb3ZlKHAsIHArMSwgc3RybGVuKHArMSkgKyAxKTsKIAkJCWVsc2UgaWYgKHBbMV0gPT0gJy4nICYmIHBbMl0gPT0gJy8nKQogCQkJCS8qIENvbnZlcnQgJy8uLycgLS0+ICcvJyAqLwotCQkJCXN0cmNweShwLCBwKzIpOworCQkJCW1lbW1vdmUocCwgcCsyLCBzdHJsZW4ocCsyKSArIDEpOwogCQkJZWxzZSBpZiAocFsxXSA9PSAnLicgJiYgcFsyXSA9PSAnLicgJiYgcFszXSA9PSAnLycpIHsKIAkJCQkvKiBDb252ZXJ0ICdkaXIvZGlyMS8uLi9kaXIyLycKIAkJCQkgKiAgICAgLS0+ICdkaXIvZGlyMi8nCkBAIC01MDk0LDEzICs1MDk0LDExIEBACiBzdGF0aWMgdm9pZAogaXNvZmlsZV9mcmVlX2hhcmRsaW5rcyhzdHJ1Y3QgaXNvOTY2MCAqaXNvOTY2MCkKIHsKLQlzdHJ1Y3QgYXJjaGl2ZV9yYl9ub2RlICpuLCAqbmV4dDsKKwlzdHJ1Y3QgYXJjaGl2ZV9yYl9ub2RlICpuLCAqdG1wOwogCi0JZm9yIChuID0gQVJDSElWRV9SQl9UUkVFX01JTigmKGlzbzk2NjAtPmhhcmRsaW5rX3JidHJlZSkpOyBuOykgewotCQluZXh0ID0gX19hcmNoaXZlX3JiX3RyZWVfaXRlcmF0ZSgmKGlzbzk2NjAtPmhhcmRsaW5rX3JidHJlZSksCi0JCSAgICBuLCBBUkNISVZFX1JCX0RJUl9SSUdIVCk7CisJQVJDSElWRV9SQl9UUkVFX0ZPUkVBQ0hfU0FGRShuLCAmKGlzbzk2NjAtPmhhcmRsaW5rX3JidHJlZSksIHRtcCkgeworCQlfX2FyY2hpdmVfcmJfdHJlZV9yZW1vdmVfbm9kZSgmKGlzbzk2NjAtPmhhcmRsaW5rX3JidHJlZSksIG4pOwogCQlmcmVlKG4pOwotCQluID0gbmV4dDsKIAl9CiB9CiAKQEAgLTc4MDEsOCArNzc5OSw4IEBACiAJdWludDY0X3QJIHB6X3VuY29tcHJlc3NlZF9zaXplOwogCXNpemVfdAkJIHVuY29tcHJlc3NlZF9idWZmZXJfc2l6ZTsKIAotCWludAkJIGluaXRpYWxpemVkOjE7Ci0JaW50CQkgaGVhZGVyX3Bhc3NlZDoxOworCXNpZ25lZCBpbnQJIGluaXRpYWxpemVkOjE7CisJc2lnbmVkIGludAkgaGVhZGVyX3Bhc3NlZDoxOwogCiAJdWludDMyX3QJIHB6X29mZnNldDsKIAl1bnNpZ25lZCBjaGFyCSpibG9ja19wb2ludGVyczsKQEAgLTgxMjgsNyArODEyNiw3IEBACiB7CiAJKHZvaWQpYnVmZjsgLyogVU5VU0VEICovCiAJKHZvaWQpczsgLyogVU5VU0VEICovCi0JYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fTUlTQywgIlByb2dyYW1pbmcgZXJyb3IiKTsKKwlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19NSVNDLCAiUHJvZ3JhbW1pbmcgZXJyb3IiKTsKIAlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwogfQogCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X210cmVlLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X210cmVlLmMKaW5kZXggNDkzZDQ3My4uYWE0MWU5YSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9tdHJlZS5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfbXRyZWUuYwpAQCAtMTg2LDcgKzE4Niw3IEBACiAjZW5kaWYKIAkvKiBLZXl3b3JkIG9wdGlvbnMgKi8KIAlpbnQga2V5czsKLSNkZWZpbmUJRl9DS1NVTQkJMHgwMDAwMDAwMQkJLyogY2hlY2sgc3VtICovCisjZGVmaW5lCUZfQ0tTVU0JCTB4MDAwMDAwMDEJCS8qIGNoZWNrc3VtICovCiAjZGVmaW5lCUZfREVWCQkweDAwMDAwMDAyCQkvKiBkZXZpY2UgdHlwZSAqLwogI2RlZmluZQlGX0RPTkUJCTB4MDAwMDAwMDQJCS8qIGRpcmVjdG9yeSBkb25lICovCiAjZGVmaW5lCUZfRkxBR1MJCTB4MDAwMDAwMDgJCS8qIGZpbGUgZmxhZ3MgKi8KQEAgLTM3MSw3ICszNzEsNyBAQAogfQogCiAvKgotICogSW5kZW50IGEgbGluZSBhcyBtdHJlZSB1dGlsaXR5IHRvIGJlIHJlYWRhYmxlIGZvciBwZW9wbGUuCisgKiBJbmRlbnQgYSBsaW5lIGFzIHRoZSBtdHJlZSB1dGlsaXR5IGRvZXMgc28gaXQgaXMgcmVhZGFibGUgZm9yIHBlb3BsZS4KICAqLwogc3RhdGljIHZvaWQKIG10cmVlX2luZGVudChzdHJ1Y3QgbXRyZWVfd3JpdGVyICptdHJlZSkKQEAgLTQ0Niw4ICs0NDYsOCBAQAogCiAvKgogICogV3JpdGUgL3NldCBrZXl3b3JkLgotICogU2V0IG1vc3QgdXNlZCB2YWx1ZSBvZiB1aWQsZ2lkLG1vZGUgYW5kIGZmbGFncywgd2hpY2ggYXJlCi0gKiBjb2xsZWN0ZWQgYnkgYXR0cl9jb3VudGVyX3NldF9jb2xsZWN0KCkgZnVuY3Rpb24uCisgKiBTZXQgdGhlIG1vc3QgdXNlZCB2YWx1ZSBvZiB1aWQsIGdpZCwgbW9kZSBhbmQgZmZsYWdzLCB3aGljaCBhcmUKKyAqIGNvbGxlY3RlZCBieSB0aGUgYXR0cl9jb3VudGVyX3NldF9jb2xsZWN0KCkgZnVuY3Rpb24uCiAgKi8KIHN0YXRpYyB2b2lkCiB3cml0ZV9nbG9iYWwoc3RydWN0IG10cmVlX3dyaXRlciAqbXRyZWUpCkBAIC02NDksNyArNjQ5LDcgQEAKIH0KIAogLyoKLSAqIFRhYnVsYXRlIHVpZCxnaWQsbW9kZSBhbmQgZmZsYWdzIG9mIGEgZW50cnkgaW4gb3JkZXIgdG8gYmUgdXNlZCBmb3IgL3NldC4KKyAqIFRhYnVsYXRlIHVpZCwgZ2lkLCBtb2RlIGFuZCBmZmxhZ3Mgb2YgYSBlbnRyeSBpbiBvcmRlciB0byBiZSB1c2VkIGZvciAvc2V0LgogICovCiBzdGF0aWMgaW50CiBhdHRyX2NvdW50ZXJfc2V0X2NvbGxlY3Qoc3RydWN0IG10cmVlX3dyaXRlciAqbXRyZWUsIHN0cnVjdCBtdHJlZV9lbnRyeSAqbWUpCkBAIC05MTIsNyArOTEyLDcgQEAKIAogCS8qIElmIHRoZSBjdXJyZW50IGZpbGUgaXMgYSByZWd1bGFyIGZpbGUsIHdlIGhhdmUgdG8KIAkgKiBjb21wdXRlIHRoZSBzdW0gb2YgaXRzIGNvbnRlbnQuCi0JICogSW5pdGlhbGl6ZSBhIGJ1bmNoIG9mIHN1bSBjaGVjayBjb250ZXh0LiAqLworCSAqIEluaXRpYWxpemUgYSBidW5jaCBvZiBjaGVja3N1bSBjb250ZXh0LiAqLwogCWlmIChtdHJlZV9lbnRyeS0+cmVnX2luZm8pCiAJCXN1bV9pbml0KG10cmVlKTsKIApAQCAtMTI2NSw3ICsxMjY1LDcgQEAKIAlpZiAobXRyZWUgPT0gTlVMTCkKIAkJcmV0dXJuIChBUkNISVZFX09LKTsKIAotCS8qIE1ha2Ugc3VyZSB3ZSBkb3Qgbm90IGxlYXZlIGFueSBlbnRyaWVzLiAqLworCS8qIE1ha2Ugc3VyZSB3ZSBkbyBub3QgbGVhdmUgYW55IGVudHJpZXMuICovCiAJbXRyZWVfZW50cnlfcmVnaXN0ZXJfZnJlZShtdHJlZSk7CiAJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmbXRyZWUtPmN1cl9kaXJzdHIpOwogCWFyY2hpdmVfc3RyaW5nX2ZyZWUoJm10cmVlLT5lYnVmKTsKQEAgLTE4MTAsMTAgKzE4MTAsMTAgQEAKIAkJaWYgKHBbMF0gPT0gJy8nKSB7CiAJCQlpZiAocFsxXSA9PSAnLycpCiAJCQkJLyogQ29udmVydCAnLy8nIC0tPiAnLycgKi8KLQkJCQlzdHJjcHkocCwgcCsxKTsKKwkJCQltZW1tb3ZlKHAsIHArMSwgc3RybGVuKHArMSkgKyAxKTsKIAkJCWVsc2UgaWYgKHBbMV0gPT0gJy4nICYmIHBbMl0gPT0gJy8nKQogCQkJCS8qIENvbnZlcnQgJy8uLycgLS0+ICcvJyAqLwotCQkJCXN0cmNweShwLCBwKzIpOworCQkJCW1lbW1vdmUocCwgcCsyLCBzdHJsZW4ocCsyKSArIDEpOwogCQkJZWxzZSBpZiAocFsxXSA9PSAnLicgJiYgcFsyXSA9PSAnLicgJiYgcFszXSA9PSAnLycpIHsKIAkJCQkvKiBDb252ZXJ0ICdkaXIvZGlyMS8uLi9kaXIyLycKIAkJCQkgKiAgICAgLS0+ICdkaXIvZGlyMi8nCkBAIC0yMDI0LDcgKzIwMjQsNyBAQAogCiAJaWYgKGZpbGUtPnBhcmVudGRpci5sZW5ndGggPT0gMCkgewogCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19NSVNDLAotCQkgICAgIkludGVybmFsIHByb2dyYW1pbmcgZXJyb3IgIgorCQkgICAgIkludGVybmFsIHByb2dyYW1taW5nIGVycm9yICIKIAkJICAgICJpbiBnZW5lcmF0aW5nIGNhbm9uaWNhbCBuYW1lIGZvciAlcyIsCiAJCSAgICBmaWxlLT5wYXRobmFtZS5zKTsKIAkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3BheC5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wYXguYwppbmRleCAzY2ViZWFlLi5hMmIyNzEwIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3BheC5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcGF4LmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJhcmNoaXZlX2VudHJ5X2xvY2FsZS5oIgogI2luY2x1ZGUgImFyY2hpdmVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFyY2hpdmVfd3JpdGVfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wcml2YXRlLmgiCiAKIHN0cnVjdCBzcGFyc2VfYmxvY2sgewogCXN0cnVjdCBzcGFyc2VfYmxvY2sJKm5leHQ7CkBAIC0xOTksNiArMjAwLDI4IEBACiAJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19NSVNDLAogCQkJICAgICJwYXg6IGludmFsaWQgY2hhcnNldCBuYW1lIik7CiAJCXJldHVybiAocmV0KTsKKwl9IGVsc2UgaWYgKHN0cmNtcChrZXksICJ4YXR0cmhlYWRlciIpID09IDApIHsKKwkJaWYgKHZhbCA9PSBOVUxMIHx8IHZhbFswXSA9PSAwKSB7CisJCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19NSVNDLAorCQkJICAgICJwYXg6IHhhdHRyaGVhZGVyIHJlcXVpcmVzIGEgdmFsdWUiKTsKKwkJfSBlbHNlIGlmIChzdHJjbXAodmFsLCAiQUxMIikgPT0gMCB8fAorCQkgICAgc3RyY21wKHZhbCwgImFsbCIpID09IDApIHsKKwkJCXBheC0+ZmxhZ3MgfD0gV1JJVEVfTElCQVJDSElWRV9YQVRUUiB8IFdSSVRFX1NDSElMWV9YQVRUUjsKKwkJCXJldCA9IEFSQ0hJVkVfT0s7CisJCX0gZWxzZSBpZiAoc3RyY21wKHZhbCwgIlNDSElMWSIpID09IDAgfHwKKwkJICAgIHN0cmNtcCh2YWwsICJzY2hpbHkiKSA9PSAwKSB7CisJCQlwYXgtPmZsYWdzIHw9IFdSSVRFX1NDSElMWV9YQVRUUjsKKwkJCXBheC0+ZmxhZ3MgJj0gfldSSVRFX0xJQkFSQ0hJVkVfWEFUVFI7CisJCQlyZXQgPSBBUkNISVZFX09LOworCQl9IGVsc2UgaWYgKHN0cmNtcCh2YWwsICJMSUJBUkNISVZFIikgPT0gMCB8fAorCQkgICAgc3RyY21wKHZhbCwgImxpYmFyY2hpdmUiKSA9PSAwKSB7CisJCQlwYXgtPmZsYWdzIHw9IFdSSVRFX0xJQkFSQ0hJVkVfWEFUVFI7CisJCQlwYXgtPmZsYWdzICY9IH5XUklURV9TQ0hJTFlfWEFUVFI7CisJCQlyZXQgPSBBUkNISVZFX09LOworCQl9IGVsc2UKKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX01JU0MsCisJCQkgICAgInBheDogaW52YWxpZCB4YXR0ciBoZWFkZXIgbmFtZSIpOworCQlyZXR1cm4gKHJldCk7CiAJfQogCiAJLyogTm90ZTogVGhlICJ3YXJuIiByZXR1cm4gaXMganVzdCB0byBpbmZvcm0gdGhlIG9wdGlvbnMKQEAgLTUyMiwxMSArNTQ1LDEzIEBACiAJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULCAiJXMgJXMgJXMiLAogCQkgICAgIkNhbid0IHRyYW5zbGF0ZSAiLCBhdHRyLCAiIHRvIFVURi04Iik7CiAJCXJldHVybihBUkNISVZFX1dBUk4pOwotCX0gZWxzZSBpZiAoKnAgIT0gJ1wwJykgeworCX0KKworCWlmICgqcCAhPSAnXDAnKSB7CiAJCWFkZF9wYXhfYXR0cigmKHBheC0+cGF4X2hlYWRlciksCiAJCSAgICBhdHRyLCBwKTsKLQkJZnJlZShwKTsKIAl9CisJZnJlZShwKTsKIAlyZXR1cm4oQVJDSElWRV9PSyk7CiB9CiAKQEAgLTY2MCw3ICs2ODUsNyBAQAogCQkJICogY2FzZSBnZXR0aW5nIFdDUyBmYWlsZWQuIE9uIFBPU0lYLCB0aGlzIGlzIGEKIAkJCSAqIG5vcm1hbCBvcGVyYXRpb24uCiAJCQkgKi8KLQkJCWlmIChwICE9IE5VTEwgJiYgcFtzdHJsZW4ocCkgLSAxXSAhPSAnLycpIHsKKwkJCWlmIChwICE9IE5VTEwgJiYgcFswXSAhPSAnXDAnICYmIHBbc3RybGVuKHApIC0gMV0gIT0gJy8nKSB7CiAJCQkJc3RydWN0IGFyY2hpdmVfc3RyaW5nIGFzOwogCiAJCQkJYXJjaGl2ZV9zdHJpbmdfaW5pdCgmYXMpOwpAQCAtNjg5LDE3ICs3MTQsOSBAQAogCQkJfQogCQkJYnJlYWs7CiAJCX0KLQkJY2FzZSBBRV9JRlNPQ0s6Ci0JCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKLQkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAotCQkJICAgICJ0YXIgZm9ybWF0IGNhbm5vdCBhcmNoaXZlIHNvY2tldCIpOwotCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7Ci0JCWRlZmF1bHQ6Ci0JCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKLQkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAotCQkJICAgICJ0YXIgZm9ybWF0IGNhbm5vdCBhcmNoaXZlIHRoaXMgKHR5cGU9MCVsbykiLAotCQkJICAgICh1bnNpZ25lZCBsb25nKQotCQkJICAgIGFyY2hpdmVfZW50cnlfZmlsZXR5cGUoZW50cnlfb3JpZ2luYWwpKTsKKwkJZGVmYXVsdDogLyogQUVfSUZTT0NLIGFuZCB1bmtub3duICovCisJCQlfX2FyY2hpdmVfd3JpdGVfZW50cnlfZmlsZXR5cGVfdW5zdXBwb3J0ZWQoCisJCQkgICAgJmEtPmFyY2hpdmUsIGVudHJ5X29yaWdpbmFsLCAicGF4Iik7CiAJCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKIAkJfQogCX0KQEAgLTgzNSwxMyArODUyLDE2IEBACiAJICogdGhlbSBkby4KIAkgKi8KIAlyID0gZ2V0X2VudHJ5X3BhdGhuYW1lKGEsIGVudHJ5X21haW4sICZwYXRoLCAmcGF0aF9sZW5ndGgsIHNjb252KTsKLQlpZiAociA9PSBBUkNISVZFX0ZBVEFMKQorCWlmIChyID09IEFSQ0hJVkVfRkFUQUwpIHsKKwkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOwogCQlyZXR1cm4gKHIpOwotCWVsc2UgaWYgKHIgIT0gQVJDSElWRV9PSykgeworCX0gZWxzZSBpZiAociAhPSBBUkNISVZFX09LKSB7CiAJCXIgPSBnZXRfZW50cnlfcGF0aG5hbWUoYSwgZW50cnlfbWFpbiwgJnBhdGgsCiAJCSAgICAmcGF0aF9sZW5ndGgsIE5VTEwpOwotCQlpZiAociA9PSBBUkNISVZFX0ZBVEFMKQorCQlpZiAociA9PSBBUkNISVZFX0ZBVEFMKSB7CisJCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CiAJCQlyZXR1cm4gKHIpOworCQl9CiAJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAogCQkgICAgIkNhbid0IHRyYW5zbGF0ZSBwYXRobmFtZSAnJXMnIHRvICVzIiwgcGF0aCwKIAkJICAgIGFyY2hpdmVfc3RyaW5nX2NvbnZlcnNpb25fY2hhcnNldF9uYW1lKHNjb252KSk7CkBAIC04NDksMTIgKzg2OSwxNSBAQAogCQlzY29udiA9IE5VTEw7LyogVGhlIGhlYWRlciBjaGFyc2V0IHN3aXRjaGVzIHRvIGJpbmFyeSBtb2RlLiAqLwogCX0KIAlyID0gZ2V0X2VudHJ5X3VuYW1lKGEsIGVudHJ5X21haW4sICZ1bmFtZSwgJnVuYW1lX2xlbmd0aCwgc2NvbnYpOwotCWlmIChyID09IEFSQ0hJVkVfRkFUQUwpCisJaWYgKHIgPT0gQVJDSElWRV9GQVRBTCkgeworCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CiAJCXJldHVybiAocik7Ci0JZWxzZSBpZiAociAhPSBBUkNISVZFX09LKSB7CisJfSBlbHNlIGlmIChyICE9IEFSQ0hJVkVfT0spIHsKIAkJciA9IGdldF9lbnRyeV91bmFtZShhLCBlbnRyeV9tYWluLCAmdW5hbWUsICZ1bmFtZV9sZW5ndGgsIE5VTEwpOwotCQlpZiAociA9PSBBUkNISVZFX0ZBVEFMKQorCQlpZiAociA9PSBBUkNISVZFX0ZBVEFMKSB7CisJCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CiAJCQlyZXR1cm4gKHIpOworCQl9CiAJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAogCQkgICAgIkNhbid0IHRyYW5zbGF0ZSB1bmFtZSAnJXMnIHRvICVzIiwgdW5hbWUsCiAJCSAgICBhcmNoaXZlX3N0cmluZ19jb252ZXJzaW9uX2NoYXJzZXRfbmFtZShzY29udikpOwpAQCAtODYyLDEyICs4ODUsMTUgQEAKIAkJc2NvbnYgPSBOVUxMOy8qIFRoZSBoZWFkZXIgY2hhcnNldCBzd2l0Y2hlcyB0byBiaW5hcnkgbW9kZS4gKi8KIAl9CiAJciA9IGdldF9lbnRyeV9nbmFtZShhLCBlbnRyeV9tYWluLCAmZ25hbWUsICZnbmFtZV9sZW5ndGgsIHNjb252KTsKLQlpZiAociA9PSBBUkNISVZFX0ZBVEFMKQorCWlmIChyID09IEFSQ0hJVkVfRkFUQUwpIHsKKwkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOwogCQlyZXR1cm4gKHIpOwotCWVsc2UgaWYgKHIgIT0gQVJDSElWRV9PSykgeworCX0gZWxzZSBpZiAociAhPSBBUkNISVZFX09LKSB7CiAJCXIgPSBnZXRfZW50cnlfZ25hbWUoYSwgZW50cnlfbWFpbiwgJmduYW1lLCAmZ25hbWVfbGVuZ3RoLCBOVUxMKTsKLQkJaWYgKHIgPT0gQVJDSElWRV9GQVRBTCkKKwkJaWYgKHIgPT0gQVJDSElWRV9GQVRBTCkgeworCQkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOwogCQkJcmV0dXJuIChyKTsKKwkJfQogCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKIAkJICAgICJDYW4ndCB0cmFuc2xhdGUgZ25hbWUgJyVzJyB0byAlcyIsIGduYW1lLAogCQkgICAgYXJjaGl2ZV9zdHJpbmdfY29udmVyc2lvbl9jaGFyc2V0X25hbWUoc2NvbnYpKTsKQEAgLTg3OSwxMyArOTA1LDE2IEBACiAJaWYgKGxpbmtwYXRoID09IE5VTEwpIHsKIAkJciA9IGdldF9lbnRyeV9zeW1saW5rKGEsIGVudHJ5X21haW4sICZsaW5rcGF0aCwKIAkJICAgICZsaW5rcGF0aF9sZW5ndGgsIHNjb252KTsKLQkJaWYgKHIgPT0gQVJDSElWRV9GQVRBTCkKKwkJaWYgKHIgPT0gQVJDSElWRV9GQVRBTCkgeworCQkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOwogCQkJcmV0dXJuIChyKTsKLQkJZWxzZSBpZiAociAhPSBBUkNISVZFX09LKSB7CisJCX0gZWxzZSBpZiAociAhPSBBUkNISVZFX09LKSB7CiAJCQlyID0gZ2V0X2VudHJ5X3N5bWxpbmsoYSwgZW50cnlfbWFpbiwgJmxpbmtwYXRoLAogCQkJICAgICZsaW5rcGF0aF9sZW5ndGgsIE5VTEwpOwotCQkJaWYgKHIgPT0gQVJDSElWRV9GQVRBTCkKKwkJCWlmIChyID09IEFSQ0hJVkVfRkFUQUwpIHsKKwkJCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CiAJCQkJcmV0dXJuIChyKTsKKwkJCX0KIAkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAogCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCiAJCQkgICAgIkNhbid0IHRyYW5zbGF0ZSBsaW5rbmFtZSAnJXMnIHRvICVzIiwgbGlua3BhdGgsCkBAIC05MDEsMjEgKzkzMCwyOSBAQAogCQlpZiAoaGFyZGxpbmsgIT0gTlVMTCkgewogCQkJciA9IGdldF9lbnRyeV9oYXJkbGluayhhLCBlbnRyeV9tYWluLCAmaGFyZGxpbmssCiAJCQkgICAgJmhhcmRsaW5rX2xlbmd0aCwgTlVMTCk7Ci0JCQlpZiAociA9PSBBUkNISVZFX0ZBVEFMKQorCQkJaWYgKHIgPT0gQVJDSElWRV9GQVRBTCkgeworCQkJCWFyY2hpdmVfZW50cnlfZnJlZShlbnRyeV9tYWluKTsKIAkJCQlyZXR1cm4gKHIpOworCQkJfQogCQkJbGlua3BhdGggPSBoYXJkbGluazsKIAkJCWxpbmtwYXRoX2xlbmd0aCA9IGhhcmRsaW5rX2xlbmd0aDsKIAkJfQogCQlyID0gZ2V0X2VudHJ5X3BhdGhuYW1lKGEsIGVudHJ5X21haW4sICZwYXRoLAogCQkgICAgJnBhdGhfbGVuZ3RoLCBOVUxMKTsKLQkJaWYgKHIgPT0gQVJDSElWRV9GQVRBTCkKKwkJaWYgKHIgPT0gQVJDSElWRV9GQVRBTCkgeworCQkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOwogCQkJcmV0dXJuIChyKTsKKwkJfQogCQlyID0gZ2V0X2VudHJ5X3VuYW1lKGEsIGVudHJ5X21haW4sICZ1bmFtZSwgJnVuYW1lX2xlbmd0aCwgTlVMTCk7Ci0JCWlmIChyID09IEFSQ0hJVkVfRkFUQUwpCisJCWlmIChyID09IEFSQ0hJVkVfRkFUQUwpIHsKKwkJCWFyY2hpdmVfZW50cnlfZnJlZShlbnRyeV9tYWluKTsKIAkJCXJldHVybiAocik7CisJCX0KIAkJciA9IGdldF9lbnRyeV9nbmFtZShhLCBlbnRyeV9tYWluLCAmZ25hbWUsICZnbmFtZV9sZW5ndGgsIE5VTEwpOwotCQlpZiAociA9PSBBUkNISVZFX0ZBVEFMKQorCQlpZiAociA9PSBBUkNISVZFX0ZBVEFMKSB7CisJCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CiAJCQlyZXR1cm4gKHIpOworCQl9CiAJfQogCiAJLyogU3RvcmUgdGhlIGhlYWRlciBlbmNvZGluZyBmaXJzdCwgdG8gYmUgbmljZSB0byByZWFkZXJzLiAqLwpAQCAtMTExMiw2ICsxMTQ5LDEwIEBACiAJaWYgKCFuZWVkX2V4dGVuc2lvbiAmJiBhY2xfdHlwZXMgIT0gMCkKIAkJbmVlZF9leHRlbnNpb24gPSAxOwogCisJLyogSWYgdGhlIHN5bWxpbmsgdHlwZSBpcyBkZWZpbmVkLCB3ZSBuZWVkIGFuIGV4dGVuc2lvbiAqLworCWlmICghbmVlZF9leHRlbnNpb24gJiYgYXJjaGl2ZV9lbnRyeV9zeW1saW5rX3R5cGUoZW50cnlfbWFpbikgPiAwKQorCQluZWVkX2V4dGVuc2lvbiA9IDE7CisKIAkvKgogCSAqIExpYmFyY2hpdmUgdXNlZCB0byBpbmNsdWRlIHRoZXNlIGluIGV4dGVuZGVkIGhlYWRlcnMgZm9yCiAJICogcmVzdHJpY3RlZCBwYXggZm9ybWF0LCBidXQgdGhhdCBjb25mdXNlZCBwZW9wbGUgd2hvCkBAIC0xMTY4LDI0ICsxMjA5LDMzIEBACiAJCQkgICAgQVJDSElWRV9FTlRSWV9BQ0xfU1RZTEVfRVhUUkFfSUQgfAogCQkJICAgIEFSQ0hJVkVfRU5UUllfQUNMX1NUWUxFX1NFUEFSQVRPUl9DT01NQSB8CiAJCQkgICAgQVJDSElWRV9FTlRSWV9BQ0xfU1RZTEVfQ09NUEFDVCk7Ci0JCQlpZiAocmV0ID09IEFSQ0hJVkVfRkFUQUwpCisJCQlpZiAocmV0ID09IEFSQ0hJVkVfRkFUQUwpIHsKKwkJCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CisJCQkJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmZW50cnlfbmFtZSk7CiAJCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKwkJCX0KIAkJfQogCQlpZiAoYWNsX3R5cGVzICYgQVJDSElWRV9FTlRSWV9BQ0xfVFlQRV9BQ0NFU1MpIHsKIAkJCXJldCA9IGFkZF9wYXhfYWNsKGEsIGVudHJ5X29yaWdpbmFsLCBwYXgsCiAJCQkgICAgQVJDSElWRV9FTlRSWV9BQ0xfVFlQRV9BQ0NFU1MgfAogCQkJICAgIEFSQ0hJVkVfRU5UUllfQUNMX1NUWUxFX0VYVFJBX0lEIHwKIAkJCSAgICBBUkNISVZFX0VOVFJZX0FDTF9TVFlMRV9TRVBBUkFUT1JfQ09NTUEpOwotCQkJaWYgKHJldCA9PSBBUkNISVZFX0ZBVEFMKQorCQkJaWYgKHJldCA9PSBBUkNISVZFX0ZBVEFMKSB7CisJCQkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOworCQkJCWFyY2hpdmVfc3RyaW5nX2ZyZWUoJmVudHJ5X25hbWUpOwogCQkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJCQl9CiAJCX0KIAkJaWYgKGFjbF90eXBlcyAmIEFSQ0hJVkVfRU5UUllfQUNMX1RZUEVfREVGQVVMVCkgewogCQkJcmV0ID0gYWRkX3BheF9hY2woYSwgZW50cnlfb3JpZ2luYWwsIHBheCwKIAkJCSAgICBBUkNISVZFX0VOVFJZX0FDTF9UWVBFX0RFRkFVTFQgfAogCQkJICAgIEFSQ0hJVkVfRU5UUllfQUNMX1NUWUxFX0VYVFJBX0lEIHwKIAkJCSAgICBBUkNISVZFX0VOVFJZX0FDTF9TVFlMRV9TRVBBUkFUT1JfQ09NTUEpOwotCQkJaWYgKHJldCA9PSBBUkNISVZFX0ZBVEFMKQorCQkJaWYgKHJldCA9PSBBUkNISVZFX0ZBVEFMKSB7CisJCQkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOworCQkJCWFyY2hpdmVfc3RyaW5nX2ZyZWUoJmVudHJ5X25hbWUpOwogCQkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJCQl9CiAJCX0KIAogCQkvKiBXZSB1c2UgR05VLXRhci1jb21wYXRpYmxlIHNwYXJzZSBhdHRyaWJ1dGVzLiAqLwpAQCAtMTI0NSw2ICsxMjk1LDE3IEBACiAJCQlhcmNoaXZlX3N0cmluZ19mcmVlKCZlbnRyeV9uYW1lKTsKIAkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CiAJCX0KKworCQkvKiBTdG9yZSBleHRlbmRlZCBzeW1saW5rIGluZm9ybWF0aW9uICovCisJCWlmIChhcmNoaXZlX2VudHJ5X3N5bWxpbmtfdHlwZShlbnRyeV9tYWluKSA9PQorCQkgICAgQUVfU1lNTElOS19UWVBFX0ZJTEUpIHsKKwkJCWFkZF9wYXhfYXR0cigmKHBheC0+cGF4X2hlYWRlciksCisJCQkgICAgIkxJQkFSQ0hJVkUuc3ltbGlua3R5cGUiLCAiZmlsZSIpOworCQl9IGVsc2UgaWYgKGFyY2hpdmVfZW50cnlfc3ltbGlua190eXBlKGVudHJ5X21haW4pID09CisJCSAgICBBRV9TWU1MSU5LX1RZUEVfRElSRUNUT1JZKSB7CisJCQlhZGRfcGF4X2F0dHIoJihwYXgtPnBheF9oZWFkZXIpLAorCQkJICAgICJMSUJBUkNISVZFLnN5bWxpbmt0eXBlIiwgImRpciIpOworCQl9CiAJfQogCiAJLyogT25seSByZWd1bGFyIGZpbGVzIGhhdmUgZGF0YS4gKi8KQEAgLTEzMTMsOCArMTM3NCwxMSBAQAogCSAqIG51bWVyaWMgZmllbGRzLCB0aG91Z2ggdGhleSdyZSBsZXNzIGNyaXRpY2FsLgogCSAqLwogCWlmIChfX2FyY2hpdmVfd3JpdGVfZm9ybWF0X2hlYWRlcl91c3RhcihhLCB1c3RhcmJ1ZmYsIGVudHJ5X21haW4sIC0xLCAwLAotCSAgICBOVUxMKSA9PSBBUkNISVZFX0ZBVEFMKQorCSAgICBOVUxMKSA9PSBBUkNISVZFX0ZBVEFMKSB7CisJCWFyY2hpdmVfZW50cnlfZnJlZShlbnRyeV9tYWluKTsKKwkJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmZW50cnlfbmFtZSk7CiAJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJfQogCiAJLyogSWYgd2UgYnVpbHQgYW55IGV4dGVuZGVkIGF0dHJpYnV0ZXMsIHdyaXRlIHRoYXQgZW50cnkgZmlyc3QuICovCiAJaWYgKGFyY2hpdmVfc3RybGVuKCYocGF4LT5wYXhfaGVhZGVyKSkgPiAwKSB7CkBAIC0xMzc5LDYgKzE0NDMsOCBAQAogCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fTUlTQywKIAkJCSAgICAiYXJjaGl2ZV93cml0ZV9wYXhfaGVhZGVyOiAiCiAJCQkgICAgIid4JyBoZWFkZXIgZmFpbGVkPyEgIFRoaXMgY2FuJ3QgaGFwcGVuLlxuIik7CisJCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CisJCQlhcmNoaXZlX3N0cmluZ19mcmVlKCZlbnRyeV9uYW1lKTsKIAkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CiAJCX0gZWxzZSBpZiAociA8IHJldCkKIAkJCXJldCA9IHI7CkBAIC0xMzg3LDYgKzE0NTMsOCBAQAogCQkJc3BhcnNlX2xpc3RfY2xlYXIocGF4KTsKIAkJCXBheC0+ZW50cnlfYnl0ZXNfcmVtYWluaW5nID0gMDsKIAkJCXBheC0+ZW50cnlfcGFkZGluZyA9IDA7CisJCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CisJCQlhcmNoaXZlX3N0cmluZ19mcmVlKCZlbnRyeV9uYW1lKTsKIAkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CiAJCX0KIApAQCAtMTM5OCwxMiArMTQ2NiwxNiBAQAogCQkgICAgYXJjaGl2ZV9zdHJsZW4oJihwYXgtPnBheF9oZWFkZXIpKSk7CiAJCWlmIChyICE9IEFSQ0hJVkVfT0spIHsKIAkJCS8qIElmIGEgd3JpdGUgZmFpbHMsIHdlJ3JlIHByZXR0eSBtdWNoIHRvYXN0LiAqLworCQkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOworCQkJYXJjaGl2ZV9zdHJpbmdfZnJlZSgmZW50cnlfbmFtZSk7CiAJCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwogCQl9CiAJCS8qIFBhZCBvdXQgdGhlIGVuZCBvZiB0aGUgZW50cnkuICovCiAJCXIgPSBfX2FyY2hpdmVfd3JpdGVfbnVsbHMoYSwgKHNpemVfdClwYXgtPmVudHJ5X3BhZGRpbmcpOwogCQlpZiAociAhPSBBUkNISVZFX09LKSB7CiAJCQkvKiBJZiBhIHdyaXRlIGZhaWxzLCB3ZSdyZSBwcmV0dHkgbXVjaCB0b2FzdC4gKi8KKwkJCWFyY2hpdmVfZW50cnlfZnJlZShlbnRyeV9tYWluKTsKKwkJCWFyY2hpdmVfc3RyaW5nX2ZyZWUoJmVudHJ5X25hbWUpOwogCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKIAkJfQogCQlwYXgtPmVudHJ5X2J5dGVzX3JlbWFpbmluZyA9IHBheC0+ZW50cnlfcGFkZGluZyA9IDA7CkBAIC0xNDExLDggKzE0ODMsMTEgQEAKIAogCS8qIFdyaXRlIHRoZSBoZWFkZXIgZm9yIG1haW4gZW50cnkuICovCiAJciA9IF9fYXJjaGl2ZV93cml0ZV9vdXRwdXQoYSwgdXN0YXJidWZmLCA1MTIpOwotCWlmIChyICE9IEFSQ0hJVkVfT0spCisJaWYgKHIgIT0gQVJDSElWRV9PSykgeworCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CisJCWFyY2hpdmVfc3RyaW5nX2ZyZWUoJmVudHJ5X25hbWUpOwogCQlyZXR1cm4gKHIpOworCX0KIAogCS8qCiAJICogSW5mb3JtIHRoZSBjbGllbnQgb2YgdGhlIG9uLWRpc2sgc2l6ZSB3ZSdyZSB1c2luZywgc28KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcHJpdmF0ZS5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIwMDIyNwotLS0gL2Rldi9udWxsCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDIwIE1hcnRpbiBNYXR1c2thCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUihTKSBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiAkRnJlZUJTRCQKKyAqLworCisjaWZuZGVmIEFSQ0hJVkVfV1JJVEVfU0VUX0ZPUk1BVF9QUklWQVRFX0hfSU5DTFVERUQKKyNkZWZpbmUgQVJDSElWRV9XUklURV9TRVRfRk9STUFUX1BSSVZBVEVfSF9JTkNMVURFRAorCisjaWZuZGVmIF9fTElCQVJDSElWRV9CVUlMRAorI2lmbmRlZiBfX0xJQkFSQ0hJVkVfVEVTVAorI2Vycm9yIFRoaXMgaGVhZGVyIGlzIG9ubHkgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IHRvIGxpYmFyY2hpdmUuCisjZW5kaWYKKyNlbmRpZgorCisjaW5jbHVkZSAiYXJjaGl2ZS5oIgorI2luY2x1ZGUgImFyY2hpdmVfZW50cnkuaCIKKwordm9pZCBfX2FyY2hpdmVfd3JpdGVfZW50cnlfZmlsZXR5cGVfdW5zdXBwb3J0ZWQoc3RydWN0IGFyY2hpdmUgKmEsCisgICAgc3RydWN0IGFyY2hpdmVfZW50cnkgKmVudHJ5LCBjb25zdCBjaGFyICpmb3JtYXQpOworI2VuZGlmCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3NoYXIuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfc2hhci5jCmluZGV4IDViZTMxMGEuLjllNDkzMWMgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfc2hhci5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfc2hhci5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiYXJjaGl2ZV9lbnRyeS5oIgogI2luY2x1ZGUgImFyY2hpdmVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFyY2hpdmVfd3JpdGVfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImFyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wcml2YXRlLmgiCiAKIHN0cnVjdCBzaGFyIHsKIAlpbnQJCQkgZHVtcDsKQEAgLTE2OSw4ICsxNzAsNyBAQAogCX0KIAogCS8qIFNhdmUgdGhlIGVudHJ5IGZvciB0aGUgY2xvc2luZy4gKi8KLQlpZiAoc2hhci0+ZW50cnkpCi0JCWFyY2hpdmVfZW50cnlfZnJlZShzaGFyLT5lbnRyeSk7CisJYXJjaGl2ZV9lbnRyeV9mcmVlKHNoYXItPmVudHJ5KTsKIAlzaGFyLT5lbnRyeSA9IGFyY2hpdmVfZW50cnlfY2xvbmUoZW50cnkpOwogCW5hbWUgPSBhcmNoaXZlX2VudHJ5X3BhdGhuYW1lKGVudHJ5KTsKIApAQCAtMTk1LDggKzE5NSw4IEBACiAJCWFyY2hpdmVfZW50cnlfc2V0X3NpemUoZW50cnksIDApOwogCQlpZiAoYXJjaGl2ZV9lbnRyeV9oYXJkbGluayhlbnRyeSkgPT0gTlVMTCAmJgogCQkgICAgYXJjaGl2ZV9lbnRyeV9zeW1saW5rKGVudHJ5KSA9PSBOVUxMKSB7Ci0JCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwgQVJDSElWRV9FUlJOT19NSVNDLAotCQkJICAgICJzaGFyIGZvcm1hdCBjYW5ub3QgYXJjaGl2ZSB0aGlzIik7CisJCQlfX2FyY2hpdmVfd3JpdGVfZW50cnlfZmlsZXR5cGVfdW5zdXBwb3J0ZWQoCisJCQkgICAgJmEtPmFyY2hpdmUsIGVudHJ5LCAic2hhciIpOwogCQkJcmV0dXJuIChBUkNISVZFX1dBUk4pOwogCQl9CiAJfQpAQCAtMjg5LDggKzI4OSw3IEBACiAJCQkgICAgIm1rZGlyIC1wICVzID4gL2Rldi9udWxsIDI+JjFcbiIsCiAJCQkgICAgc2hhci0+cXVvdGVkX25hbWUucyk7CiAJCQkvKiBSZWNvcmQgdGhhdCB3ZSBqdXN0IGNyZWF0ZWQgdGhpcyBkaXJlY3RvcnkuICovCi0JCQlpZiAoc2hhci0+bGFzdF9kaXIgIT0gTlVMTCkKLQkJCQlmcmVlKHNoYXItPmxhc3RfZGlyKTsKKwkJCWZyZWUoc2hhci0+bGFzdF9kaXIpOwogCiAJCQlzaGFyLT5sYXN0X2RpciA9IHN0cmR1cChuYW1lKTsKIAkJCS8qIFRyaW0gYSB0cmFpbGluZyAnLycuICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3VzdGFyLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3VzdGFyLmMKaW5kZXggYzU0YWVhYi4uZDFhMDZiYyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF91c3Rhci5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfdXN0YXIuYwpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgImFyY2hpdmVfZW50cnlfbG9jYWxlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZV93cml0ZV9wcml2YXRlLmgiCisjaW5jbHVkZSAiYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3ByaXZhdGUuaCIKIAogc3RydWN0IHVzdGFyIHsKIAl1aW50NjRfdAllbnRyeV9ieXRlc19yZW1haW5pbmc7CkBAIC0zNTIsMTQgKzM1MywxMiBAQAogI2VuZGlmCiAJcmV0ID0gX19hcmNoaXZlX3dyaXRlX2Zvcm1hdF9oZWFkZXJfdXN0YXIoYSwgYnVmZiwgZW50cnksIC0xLCAxLCBzY29udik7CiAJaWYgKHJldCA8IEFSQ0hJVkVfV0FSTikgewotCQlpZiAoZW50cnlfbWFpbikKLQkJCWFyY2hpdmVfZW50cnlfZnJlZShlbnRyeV9tYWluKTsKKwkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOwogCQlyZXR1cm4gKHJldCk7CiAJfQogCXJldDIgPSBfX2FyY2hpdmVfd3JpdGVfb3V0cHV0KGEsIGJ1ZmYsIDUxMik7CiAJaWYgKHJldDIgPCBBUkNISVZFX1dBUk4pIHsKLQkJaWYgKGVudHJ5X21haW4pCi0JCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CisJCWFyY2hpdmVfZW50cnlfZnJlZShlbnRyeV9tYWluKTsKIAkJcmV0dXJuIChyZXQyKTsKIAl9CiAJaWYgKHJldDIgPCByZXQpCkBAIC0zNjcsOCArMzY2LDcgQEAKIAogCXVzdGFyLT5lbnRyeV9ieXRlc19yZW1haW5pbmcgPSBhcmNoaXZlX2VudHJ5X3NpemUoZW50cnkpOwogCXVzdGFyLT5lbnRyeV9wYWRkaW5nID0gMHgxZmYgJiAoLShpbnQ2NF90KXVzdGFyLT5lbnRyeV9ieXRlc19yZW1haW5pbmcpOwotCWlmIChlbnRyeV9tYWluKQotCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CisJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOwogCXJldHVybiAocmV0KTsKIH0KIApAQCAtNTE1LDkgKzUxMywxMSBAQAogCX0KIAlpZiAoY29weV9sZW5ndGggPiAwKSB7CiAJCWlmIChjb3B5X2xlbmd0aCA+IFVTVEFSX3VuYW1lX3NpemUpIHsKLQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX01JU0MsCi0JCQkgICAgIlVzZXJuYW1lIHRvbyBsb25nIik7Ci0JCQlyZXQgPSBBUkNISVZFX0ZBSUxFRDsKKwkJCWlmICh0YXJ0eXBlICE9ICd4JykgeworCQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAorCQkJCSAgICBBUkNISVZFX0VSUk5PX01JU0MsICJVc2VybmFtZSB0b28gbG9uZyIpOworCQkJCXJldCA9IEFSQ0hJVkVfRkFJTEVEOworCQkJfQogCQkJY29weV9sZW5ndGggPSBVU1RBUl91bmFtZV9zaXplOwogCQl9CiAJCW1lbWNweShoICsgVVNUQVJfdW5hbWVfb2Zmc2V0LCBwLCBjb3B5X2xlbmd0aCk7CkBAIC01MzgsOSArNTM4LDExIEBACiAJfQogCWlmIChjb3B5X2xlbmd0aCA+IDApIHsKIAkJaWYgKHN0cmxlbihwKSA+IFVTVEFSX2duYW1lX3NpemUpIHsKLQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX01JU0MsCi0JCQkgICAgIkdyb3VwIG5hbWUgdG9vIGxvbmciKTsKLQkJCXJldCA9IEFSQ0hJVkVfRkFJTEVEOworCQkJaWYgKHRhcnR5cGUgIT0gJ3gnKSB7CisJCQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCisJCQkJICAgIEFSQ0hJVkVfRVJSTk9fTUlTQywgIkdyb3VwIG5hbWUgdG9vIGxvbmciKTsKKwkJCQlyZXQgPSBBUkNISVZFX0ZBSUxFRDsKKwkJCX0KIAkJCWNvcHlfbGVuZ3RoID0gVVNUQVJfZ25hbWVfc2l6ZTsKIAkJfQogCQltZW1jcHkoaCArIFVTVEFSX2duYW1lX29mZnNldCwgcCwgY29weV9sZW5ndGgpOwpAQCAtNjEyLDE2ICs2MTQsOSBAQAogCQljYXNlIEFFX0lGQkxLOiBoW1VTVEFSX3R5cGVmbGFnX29mZnNldF0gPSAnNCcgOyBicmVhazsKIAkJY2FzZSBBRV9JRkRJUjogaFtVU1RBUl90eXBlZmxhZ19vZmZzZXRdID0gJzUnIDsgYnJlYWs7CiAJCWNhc2UgQUVfSUZJRk86IGhbVVNUQVJfdHlwZWZsYWdfb2Zmc2V0XSA9ICc2JyA7IGJyZWFrOwotCQljYXNlIEFFX0lGU09DSzoKLQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAotCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0JCQkgICAgInRhciBmb3JtYXQgY2Fubm90IGFyY2hpdmUgc29ja2V0Iik7Ci0JCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKLQkJZGVmYXVsdDoKLQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAotCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0JCQkgICAgInRhciBmb3JtYXQgY2Fubm90IGFyY2hpdmUgdGhpcyAobW9kZT0wJWxvKSIsCi0JCQkgICAgKHVuc2lnbmVkIGxvbmcpYXJjaGl2ZV9lbnRyeV9tb2RlKGVudHJ5KSk7CisJCWRlZmF1bHQ6IC8qIEFFX0lGU09DSyBhbmQgdW5rbm93biAqLworCQkJX19hcmNoaXZlX3dyaXRlX2VudHJ5X2ZpbGV0eXBlX3Vuc3VwcG9ydGVkKAorCQkJICAgICZhLT5hcmNoaXZlLCBlbnRyeSwgInVzdGFyIik7CiAJCQlyZXQgPSBBUkNISVZFX0ZBSUxFRDsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfdjd0YXIuYyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfdjd0YXIuYwppbmRleCA2MmIxNTIyLi41OTk0MDcxIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3Y3dGFyLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF92N3Rhci5jCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiYXJjaGl2ZV9lbnRyeV9sb2NhbGUuaCIKICNpbmNsdWRlICJhcmNoaXZlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJhcmNoaXZlX3dyaXRlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJhcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcHJpdmF0ZS5oIgogCiBzdHJ1Y3Qgdjd0YXIgewogCXVpbnQ2NF90CWVudHJ5X2J5dGVzX3JlbWFpbmluZzsKQEAgLTI4NCw3ICsyODUsNyBAQAogCQkgKiBjYXNlIGdldHRpbmcgV0NTIGZhaWxlZC4gT24gUE9TSVgsIHRoaXMgaXMgYQogCQkgKiBub3JtYWwgb3BlcmF0aW9uLgogCQkgKi8KLQkJaWYgKHAgIT0gTlVMTCAmJiBwW3N0cmxlbihwKSAtIDFdICE9ICcvJykgeworCQlpZiAocCAhPSBOVUxMICYmIHBbMF0gIT0gJ1wwJyAmJiBwW3N0cmxlbihwKSAtIDFdICE9ICcvJykgewogCQkJc3RydWN0IGFyY2hpdmVfc3RyaW5nIGFzOwogCiAJCQlhcmNoaXZlX3N0cmluZ19pbml0KCZhcyk7CkBAIC0zMzAsMTQgKzMzMSwxMiBAQAogI2VuZGlmCiAJcmV0ID0gZm9ybWF0X2hlYWRlcl92N3RhcihhLCBidWZmLCBlbnRyeSwgMSwgc2NvbnYpOwogCWlmIChyZXQgPCBBUkNISVZFX1dBUk4pIHsKLQkJaWYgKGVudHJ5X21haW4pCi0JCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CisJCWFyY2hpdmVfZW50cnlfZnJlZShlbnRyeV9tYWluKTsKIAkJcmV0dXJuIChyZXQpOwogCX0KIAlyZXQyID0gX19hcmNoaXZlX3dyaXRlX291dHB1dChhLCBidWZmLCA1MTIpOwogCWlmIChyZXQyIDwgQVJDSElWRV9XQVJOKSB7Ci0JCWlmIChlbnRyeV9tYWluKQotCQkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOworCQlhcmNoaXZlX2VudHJ5X2ZyZWUoZW50cnlfbWFpbik7CiAJCXJldHVybiAocmV0Mik7CiAJfQogCWlmIChyZXQyIDwgcmV0KQpAQCAtMzQ1LDggKzM0NCw3IEBACiAKIAl2N3Rhci0+ZW50cnlfYnl0ZXNfcmVtYWluaW5nID0gYXJjaGl2ZV9lbnRyeV9zaXplKGVudHJ5KTsKIAl2N3Rhci0+ZW50cnlfcGFkZGluZyA9IDB4MWZmICYgKC0oaW50NjRfdCl2N3Rhci0+ZW50cnlfYnl0ZXNfcmVtYWluaW5nKTsKLQlpZiAoZW50cnlfbWFpbikKLQkJYXJjaGl2ZV9lbnRyeV9mcmVlKGVudHJ5X21haW4pOworCWFyY2hpdmVfZW50cnlfZnJlZShlbnRyeV9tYWluKTsKIAlyZXR1cm4gKHJldCk7CiB9CiAKQEAgLTQ5NCwzMSArNDkyLDExIEBACiAJCWNhc2UgQUVfSUZMTks6CiAJCQloW1Y3VEFSX3R5cGVmbGFnX29mZnNldF0gPSAnMic7CiAJCQlicmVhazsKLQkJY2FzZSBBRV9JRkNIUjoKLQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAotCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0JCQkgICAgInRhciBmb3JtYXQgY2Fubm90IGFyY2hpdmUgY2hhcmFjdGVyIGRldmljZSIpOwotCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7Ci0JCWNhc2UgQUVfSUZCTEs6Ci0JCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKLQkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAotCQkJICAgICJ0YXIgZm9ybWF0IGNhbm5vdCBhcmNoaXZlIGJsb2NrIGRldmljZSIpOwotCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7Ci0JCWNhc2UgQUVfSUZJRk86Ci0JCQlhcmNoaXZlX3NldF9lcnJvcigmYS0+YXJjaGl2ZSwKLQkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAotCQkJICAgICJ0YXIgZm9ybWF0IGNhbm5vdCBhcmNoaXZlIGZpZm8iKTsKLQkJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOwotCQljYXNlIEFFX0lGU09DSzoKLQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAotCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0JCQkgICAgInRhciBmb3JtYXQgY2Fubm90IGFyY2hpdmUgc29ja2V0Iik7Ci0JCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKIAkJZGVmYXVsdDoKLQkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAotCQkJICAgIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0JCQkgICAgInRhciBmb3JtYXQgY2Fubm90IGFyY2hpdmUgdGhpcyAobW9kZT0wJWxvKSIsCi0JCQkgICAgKHVuc2lnbmVkIGxvbmcpYXJjaGl2ZV9lbnRyeV9tb2RlKGVudHJ5KSk7CisJCQkvKiBBRV9JRkJMSywgQUVfSUZDSFIsIEFFX0lGSUZPLCBBRV9JRlNPQ0sKKwkJCSAqIGFuZCB1bmtub3duICovCisJCQlfX2FyY2hpdmVfd3JpdGVfZW50cnlfZmlsZXR5cGVfdW5zdXBwb3J0ZWQoCisJCQkgICAgJmEtPmFyY2hpdmUsIGVudHJ5LCAidjd0YXIiKTsKIAkJCXJldCA9IEFSQ0hJVkVfRkFJTEVEOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF93YXJjLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3dhcmMuYwppbmRleCBlZGFkMDcyLi40NmIwNTczIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3dhcmMuYworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3dhcmMuYwpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgImFyY2hpdmVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFyY2hpdmVfcmFuZG9tX3ByaXZhdGUuaCIKICNpbmNsdWRlICJhcmNoaXZlX3dyaXRlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJhcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcHJpdmF0ZS5oIgogCiBzdHJ1Y3Qgd2FyY19zIHsKIAl1bnNpZ25lZCBpbnQgb21pdF93YXJjaW5mbzoxOwpAQCAtMjU5LDEwICsyNjAsOCBAQAogCQlyZXR1cm4gKEFSQ0hJVkVfT0spOwogCX0KIAkvKiBqdXN0IHJlc29ydCB0byBlcnJvcmluZyBhcyBwZXIgVGltJ3MgYWR2aWNlICovCi0JYXJjaGl2ZV9zZXRfZXJyb3IoCi0JCSZhLT5hcmNoaXZlLAotCQlBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAotCQkiV0FSQyBjYW4gb25seSBwcm9jZXNzIHJlZ3VsYXIgZmlsZXMiKTsKKwlfX2FyY2hpdmVfd3JpdGVfZW50cnlfZmlsZXR5cGVfdW5zdXBwb3J0ZWQoCisJICAgICZhLT5hcmNoaXZlLCBlbnRyeSwgIldBUkMiKTsKIAlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKIH0KIApAQCAtMzMzLDYgKzMzMiwxMCBAQAogI2lmIGRlZmluZWQoSEFWRV9HTVRJTUVfUikgfHwgZGVmaW5lZChIQVZFX19HTVRJTUU2NF9TKQogCXN0cnVjdCB0bSB0aW1lSGVyZTsKICNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9fR01USU1FNjRfUykKKwllcnJub190IHRlcnI7CisJX190aW1lNjRfdCB0bXB0aW1lOworI2VuZGlmCiAJY2hhciBzdHJ0aW1lWzEwMF07CiAJc2l6ZV90IGxlbjsKIApAQCAtMzQwLDcgKzM0MywxMiBAQAogCWlmICgocnQgPSBnbXRpbWVfcigmdCwgJnRpbWVIZXJlKSkgPT0gTlVMTCkKIAkJcmV0dXJuOwogI2VsaWYgZGVmaW5lZChIQVZFX19HTVRJTUU2NF9TKQotCV9nbXRpbWU2NF9zKCZ0aW1lSGVyZSwgJnQpOworCXRtcHRpbWUgPSB0OworCXRlcnIgPSBfZ210aW1lNjRfcygmdGltZUhlcmUsICZ0bXB0aW1lKTsKKwlpZiAodGVycikKKwkJcnQgPSBOVUxMOworCWVsc2UKKwkJcnQgPSAmdGltZUhlcmU7CiAjZWxzZQogCWlmICgocnQgPSBnbXRpbWUoJnQpKSA9PSBOVUxMKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3hhci5jIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF94YXIuYwppbmRleCAzYzYxN2VjLi4zNThmNjFmIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3hhci5jCisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfeGFyLmMKQEAgLTIxMiw4ICsyMTIsOCBAQAogCXN0cnVjdCBoZWFwX2RhdGEJIGRhdGE7CiAgICAgICAgIHN0cnVjdCBhcmNoaXZlX3N0cmluZyAgICBzY3JpcHQ7CiAKLQlpbnQJCQkgdmlydHVhbDoxOwotCWludAkJCSBkaXI6MTsKKwlzaWduZWQgaW50CQkgdmlydHVhbDoxOworCXNpZ25lZCBpbnQJCSBkaXI6MTsKIH07CiAKIHN0cnVjdCBoYXJkbGluayB7CkBAIC00MTEsNiArNDExLDggQEAKIAlpZiAoc3RyY21wKGtleSwgImNoZWNrc3VtIikgPT0gMCkgewogCQlpZiAodmFsdWUgPT0gTlVMTCkKIAkJCXhhci0+b3B0X3N1bWFsZyA9IENLU1VNX05PTkU7CisJCWVsc2UgaWYgKHN0cmNtcCh2YWx1ZSwgIm5vbmUiKSA9PSAwKQorCQkJeGFyLT5vcHRfc3VtYWxnID0gQ0tTVU1fTk9ORTsKIAkJZWxzZSBpZiAoc3RyY21wKHZhbHVlLCAic2hhMSIpID09IDApCiAJCQl4YXItPm9wdF9zdW1hbGcgPSBDS1NVTV9TSEExOwogCQllbHNlIGlmIChzdHJjbXAodmFsdWUsICJtZDUiKSA9PSAwKQpAQCAtNDI5LDYgKzQzMSw4IEBACiAKIAkJaWYgKHZhbHVlID09IE5VTEwpCiAJCQl4YXItPm9wdF9jb21wcmVzc2lvbiA9IE5PTkU7CisJCWVsc2UgaWYgKHN0cmNtcCh2YWx1ZSwgIm5vbmUiKSA9PSAwKQorCQkJeGFyLT5vcHRfY29tcHJlc3Npb24gPSBOT05FOwogCQllbHNlIGlmIChzdHJjbXAodmFsdWUsICJnemlwIikgPT0gMCkKIAkJCXhhci0+b3B0X2NvbXByZXNzaW9uID0gR1pJUDsKIAkJZWxzZSBpZiAoc3RyY21wKHZhbHVlLCAiYnppcDIiKSA9PSAwKQpAQCAtNDgyLDYgKzQ4Niw4IEBACiAJaWYgKHN0cmNtcChrZXksICJ0b2MtY2hlY2tzdW0iKSA9PSAwKSB7CiAJCWlmICh2YWx1ZSA9PSBOVUxMKQogCQkJeGFyLT5vcHRfdG9jX3N1bWFsZyA9IENLU1VNX05PTkU7CisJCWVsc2UgaWYgKHN0cmNtcCh2YWx1ZSwgIm5vbmUiKSA9PSAwKQorCQkJeGFyLT5vcHRfdG9jX3N1bWFsZyA9IENLU1VNX05PTkU7CiAJCWVsc2UgaWYgKHN0cmNtcCh2YWx1ZSwgInNoYTEiKSA9PSAwKQogCQkJeGFyLT5vcHRfdG9jX3N1bWFsZyA9IENLU1VNX1NIQTE7CiAJCWVsc2UgaWYgKHN0cmNtcCh2YWx1ZSwgIm1kNSIpID09IDApCkBAIC00OTYsMTAgKzUwMiwxMyBAQAogCQlyZXR1cm4gKEFSQ0hJVkVfT0spOwogCX0KIAlpZiAoc3RyY21wKGtleSwgInRocmVhZHMiKSA9PSAwKSB7CisJCWNoYXIgKmVuZHB0cjsKKwogCQlpZiAodmFsdWUgPT0gTlVMTCkKIAkJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOwotCQl4YXItPm9wdF90aHJlYWRzID0gKGludClzdHJ0b3VsKHZhbHVlLCBOVUxMLCAxMCk7Ci0JCWlmICh4YXItPm9wdF90aHJlYWRzID09IDAgJiYgZXJybm8gIT0gMCkgeworCQllcnJubyA9IDA7CisJCXhhci0+b3B0X3RocmVhZHMgPSAoaW50KXN0cnRvdWwodmFsdWUsICZlbmRwdHIsIDEwKTsKKwkJaWYgKGVycm5vICE9IDAgfHwgKmVuZHB0ciAhPSAnXDAnKSB7CiAJCQl4YXItPm9wdF90aHJlYWRzID0gMTsKIAkJCWFyY2hpdmVfc2V0X2Vycm9yKCYoYS0+YXJjaGl2ZSksCiAJCQkgICAgQVJDSElWRV9FUlJOT19NSVNDLApAQCAtNjkzLDEzICs3MDIsMzcgQEAKIAkJZWxzZQogCQkJcnVuID0gQVJDSElWRV9aX0ZJTklTSDsKIAkJLyogQ29tcHJlc3MgZmlsZSBkYXRhLiAqLwotCQlyID0gY29tcHJlc3Npb25fY29kZSgmKGEtPmFyY2hpdmUpLCAmKHhhci0+c3RyZWFtKSwgcnVuKTsKLQkJaWYgKHIgIT0gQVJDSElWRV9PSyAmJiByICE9IEFSQ0hJVkVfRU9GKQotCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKwkJZm9yICg7OykgeworCQkJciA9IGNvbXByZXNzaW9uX2NvZGUoJihhLT5hcmNoaXZlKSwgJih4YXItPnN0cmVhbSksCisJCQkgICAgcnVuKTsKKwkJCWlmIChyICE9IEFSQ0hJVkVfT0sgJiYgciAhPSBBUkNISVZFX0VPRikKKwkJCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworCQkJaWYgKHhhci0+c3RyZWFtLmF2YWlsX291dCA9PSAwIHx8CisJCQkgICAgcnVuID09IEFSQ0hJVkVfWl9GSU5JU0gpIHsKKwkJCQlzaXplID0gc2l6ZW9mKHhhci0+d2J1ZmYpIC0KKwkJCQkgICAgeGFyLT5zdHJlYW0uYXZhaWxfb3V0OworCQkJCWNoZWNrc3VtX3VwZGF0ZSgmKHhhci0+YV9zdW13cmspLCB4YXItPndidWZmLAorCQkJCSAgICBzaXplKTsKKwkJCQl4YXItPmN1cl9maWxlLT5kYXRhLmxlbmd0aCArPSBzaXplOworCQkJCWlmICh3cml0ZV90b190ZW1wKGEsIHhhci0+d2J1ZmYsCisJCQkJICAgIHNpemUpICE9IEFSQ0hJVkVfT0spCisJCQkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJCQkJaWYgKHIgPT0gQVJDSElWRV9PSykgeworCQkJCQkvKiBPdXRwdXQgYnVmZmVyIHdhcyBmdWxsICovCisJCQkJCXhhci0+c3RyZWFtLm5leHRfb3V0ID0geGFyLT53YnVmZjsKKwkJCQkJeGFyLT5zdHJlYW0uYXZhaWxfb3V0ID0KKwkJCQkJICAgIHNpemVvZih4YXItPndidWZmKTsKKwkJCQl9IGVsc2UgeworCQkJCQkvKiBBUkNISVZFX0VPRiAtIFdlIGFyZSBkb25lICovCisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJLyogQ29tcHJlc3NvciB3YW50cyBtb3JlIGlucHV0ICovCisJCQkJYnJlYWs7CisJCQl9CisJCX0KIAkJcnNpemUgPSBzIC0geGFyLT5zdHJlYW0uYXZhaWxfaW47CiAJCWNoZWNrc3VtX3VwZGF0ZSgmKHhhci0+ZV9zdW13cmspLCBidWZmLCByc2l6ZSk7Ci0JCXNpemUgPSBzaXplb2YoeGFyLT53YnVmZikgLSB4YXItPnN0cmVhbS5hdmFpbF9vdXQ7Ci0JCWNoZWNrc3VtX3VwZGF0ZSgmKHhhci0+YV9zdW13cmspLCB4YXItPndidWZmLCBzaXplKTsKIAl9CiAjaWYgIWRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCiAJaWYgKHhhci0+Ynl0ZXNfcmVtYWluaW5nID09CkBAIC03MzYsMTIgKzc2OSw5IEBACiAJaWYgKHhhci0+Y3VyX2ZpbGUtPmRhdGEuY29tcHJlc3Npb24gPT0gTk9ORSkgewogCQlpZiAod3JpdGVfdG9fdGVtcChhLCBidWZmLCBzaXplKSAhPSBBUkNISVZFX09LKQogCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKLQl9IGVsc2UgewotCQlpZiAod3JpdGVfdG9fdGVtcChhLCB4YXItPndidWZmLCBzaXplKSAhPSBBUkNISVZFX09LKQotCQkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKKwkJeGFyLT5jdXJfZmlsZS0+ZGF0YS5sZW5ndGggKz0gc2l6ZTsKIAl9CiAJeGFyLT5ieXRlc19yZW1haW5pbmcgLT0gcnNpemU7Ci0JeGFyLT5jdXJfZmlsZS0+ZGF0YS5sZW5ndGggKz0gc2l6ZTsKIAogCXJldHVybiAocnNpemUpOwogfQpAQCAtODc1LDExICs5MDUsMTUgQEAKIHsKIAljaGFyIHRpbWVzdHJbMTAwXTsKIAlzdHJ1Y3QgdG0gdG07CisjaWYgZGVmaW5lZChIQVZFX19HTVRJTUU2NF9TKQorCV9fdGltZTY0X3QgdG1wdGltZTsKKyNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX0dNVElNRV9SKQogCWdtdGltZV9yKCZ0LCAmdG0pOwogI2VsaWYgZGVmaW5lZChIQVZFX19HTVRJTUU2NF9TKQotCV9nbXRpbWU2NF9zKCZ0bSwgJnQpOworCXRtcHRpbWUgPSB0OworCV9nbXRpbWU2NF9zKCZ0bSwgJnRtcHRpbWUpOwogI2Vsc2UKIAltZW1jcHkoJnRtLCBnbXRpbWUoJnQpLCBzaXplb2YodG0pKTsKICNlbmRpZgpAQCAtMjEwMCw3ICsyMTM0LDcgQEAKIAl3aGlsZSAobGVuID4gMCkgewogCQlzaXplX3QgbGwgPSBsZW47CiAKLQkJaWYgKGxlbiA+IDAgJiYgcFtsZW4tMV0gPT0gJy8nKSB7CisJCWlmIChwW2xlbi0xXSA9PSAnLycpIHsKIAkJCXBbbGVuLTFdID0gJ1wwJzsKIAkJCWxlbi0tOwogCQl9CkBAIC0yMTIwLDEwICsyMTU0LDEwIEBACiAJCWlmIChwWzBdID09ICcvJykgewogCQkJaWYgKHBbMV0gPT0gJy8nKQogCQkJCS8qIENvbnZlcnQgJy8vJyAtLT4gJy8nICovCi0JCQkJc3RyY3B5KHAsIHArMSk7CisJCQkJbWVtbW92ZShwLCBwKzEsIHN0cmxlbihwKzEpICsgMSk7CiAJCQllbHNlIGlmIChwWzFdID09ICcuJyAmJiBwWzJdID09ICcvJykKIAkJCQkvKiBDb252ZXJ0ICcvLi8nIC0tPiAnLycgKi8KLQkJCQlzdHJjcHkocCwgcCsyKTsKKwkJCQltZW1tb3ZlKHAsIHArMiwgc3RybGVuKHArMikgKyAxKTsKIAkJCWVsc2UgaWYgKHBbMV0gPT0gJy4nICYmIHBbMl0gPT0gJy4nICYmIHBbM10gPT0gJy8nKSB7CiAJCQkJLyogQ29udmVydCAnZGlyL2RpcjEvLi4vZGlyMi8nCiAJCQkJICogICAgIC0tPiAnZGlyL2RpcjIvJwpAQCAtMjUyOSwxMyArMjU2MywxMSBAQAogc3RhdGljIHZvaWQKIGZpbGVfZnJlZV9oYXJkbGlua3Moc3RydWN0IHhhciAqeGFyKQogewotCXN0cnVjdCBhcmNoaXZlX3JiX25vZGUgKm4sICpuZXh0OworCXN0cnVjdCBhcmNoaXZlX3JiX25vZGUgKm4sICp0bXA7CiAKLQlmb3IgKG4gPSBBUkNISVZFX1JCX1RSRUVfTUlOKCYoeGFyLT5oYXJkbGlua19yYnRyZWUpKTsgbjspIHsKLQkJbmV4dCA9IF9fYXJjaGl2ZV9yYl90cmVlX2l0ZXJhdGUoJih4YXItPmhhcmRsaW5rX3JidHJlZSksCi0JCSAgICBuLCBBUkNISVZFX1JCX0RJUl9SSUdIVCk7CisJQVJDSElWRV9SQl9UUkVFX0ZPUkVBQ0hfU0FGRShuLCAmKHhhci0+aGFyZGxpbmtfcmJ0cmVlKSwgdG1wKSB7CisJCV9fYXJjaGl2ZV9yYl90cmVlX3JlbW92ZV9ub2RlKCYoeGFyLT5oYXJkbGlua19yYnRyZWUpLCBuKTsKIAkJZnJlZShuKTsKLQkJbiA9IG5leHQ7CiAJfQogfQogCkBAIC0zMTY5LDggKzMyMDEsMTAgQEAKIAkJCWNoZWNrc3VtX3VwZGF0ZSgmKHhhci0+YV9zdW13cmspLAogCQkJICAgIHhhci0+d2J1ZmYsIHNpemUpOwogCQkJaWYgKHdyaXRlX3RvX3RlbXAoYSwgeGFyLT53YnVmZiwgc2l6ZSkKLQkJCSAgICAhPSBBUkNISVZFX09LKQorCQkJICAgICE9IEFSQ0hJVkVfT0spIHsKKwkJCQlmcmVlKGhlYXApOwogCQkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisJCQl9CiAJCQlpZiAociA9PSBBUkNISVZFX09LKSB7CiAJCQkJeGFyLT5zdHJlYW0ubmV4dF9vdXQgPSB4YXItPndidWZmOwogCQkJCXhhci0+c3RyZWFtLmF2YWlsX291dCA9IHNpemVvZih4YXItPndidWZmKTsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfemlwLmMgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3ppcC5jCmluZGV4IGE0YWUyMjkuLjFlZGU1ZWUgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfemlwLmMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF96aXAuYwpAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgImFyY2hpdmVfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFyY2hpdmVfcmFuZG9tX3ByaXZhdGUuaCIKICNpbmNsdWRlICJhcmNoaXZlX3dyaXRlX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJhcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcHJpdmF0ZS5oIgogCiAjaWZuZGVmIEhBVkVfWkxJQl9ICiAjaW5jbHVkZSAiYXJjaGl2ZV9jcmMzMi5oIgpAQCAtNTI2LDggKzUyNyw4IEBACiAJLyogSWdub3JlIHR5cGVzIG9mIGVudHJpZXMgdGhhdCB3ZSBkb24ndCBzdXBwb3J0LiAqLwogCXR5cGUgPSBhcmNoaXZlX2VudHJ5X2ZpbGV0eXBlKGVudHJ5KTsKIAlpZiAodHlwZSAhPSBBRV9JRlJFRyAmJiB0eXBlICE9IEFFX0lGRElSICYmIHR5cGUgIT0gQUVfSUZMTkspIHsKLQkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fTUlTQywKLQkJICAgICJGaWxldHlwZSBub3Qgc3VwcG9ydGVkIik7CisJCV9fYXJjaGl2ZV93cml0ZV9lbnRyeV9maWxldHlwZV91bnN1cHBvcnRlZCgKKwkJICAgICZhLT5hcmNoaXZlLCBlbnRyeSwgInppcCIpOwogCQlyZXR1cm4gQVJDSElWRV9GQUlMRUQ7CiAJfTsKIApAQCAtNTY0LDEwICs1NjUsOCBAQAogCXppcC0+ZW50cnlfdXNlc196aXA2NCA9IDA7CiAJemlwLT5lbnRyeV9jcmMzMiA9IHppcC0+Y3JjMzJmdW5jKDAsIE5VTEwsIDApOwogCXppcC0+ZW50cnlfZW5jcnlwdGlvbiA9IDA7Ci0JaWYgKHppcC0+ZW50cnkgIT0gTlVMTCkgewotCQlhcmNoaXZlX2VudHJ5X2ZyZWUoemlwLT5lbnRyeSk7Ci0JCXppcC0+ZW50cnkgPSBOVUxMOwotCX0KKwlhcmNoaXZlX2VudHJ5X2ZyZWUoemlwLT5lbnRyeSk7CisJemlwLT5lbnRyeSA9IE5VTEw7CiAKIAlpZiAoemlwLT5jY3R4X3ZhbGlkKQogCQlhcmNoaXZlX2VuY3J5cHRvX2Flc19jdHJfcmVsZWFzZSgmemlwLT5jY3R4KTsKQEAgLTEzNzQsMTAgKzEzNzMsMjggQEAKIHsKIAlzdHJ1Y3QgdG0gKnQ7CiAJdW5zaWduZWQgaW50IGR0OworI2lmIGRlZmluZWQoSEFWRV9MT0NBTFRJTUVfUikgfHwgZGVmaW5lZChIQVZFX19MT0NBTFRJTUU2NF9TKQorCXN0cnVjdCB0bSB0bWJ1ZjsKKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9fTE9DQUxUSU1FNjRfUykKKwllcnJub190IHRlcnI7CisJX190aW1lNjRfdCB0bXB0aW1lOworI2VuZGlmCiAKIAkvKiBUaGlzIHdpbGwgbm90IHByZXNlcnZlIHRpbWUgd2hlbiBjcmVhdGluZy9leHRyYWN0aW5nIHRoZSBhcmNoaXZlCiAJICogb24gdHdvIHN5c3RlbXMgd2l0aCBkaWZmZXJlbnQgdGltZSB6b25lcy4gKi8KKyNpZiBkZWZpbmVkKEhBVkVfTE9DQUxUSU1FX1IpCisJdCA9IGxvY2FsdGltZV9yKCZ1bml4X3RpbWUsICZ0bWJ1Zik7CisjZWxpZiBkZWZpbmVkKEhBVkVfX0xPQ0FMVElNRTY0X1MpCisJdG1wdGltZSA9IHVuaXhfdGltZTsKKwl0ZXJyID0gX2xvY2FsdGltZTY0X3MoJnRtYnVmLCAmdG1wdGltZSk7CisJaWYgKHRlcnIpCisJCXQgPSBOVUxMOworCWVsc2UKKwkJdCA9ICZ0bWJ1ZjsKKyNlbHNlCiAJdCA9IGxvY2FsdGltZSgmdW5peF90aW1lKTsKKyNlbmRpZgogCiAJLyogTVNET1Mtc3R5bGUgZGF0ZS90aW1lIGlzIG9ubHkgYmV0d2VlbiAxOTgwLTAxLTAxIGFuZCAyMTA3LTEyLTMxICovCiAJaWYgKHQtPnRtX3llYXIgPCAxOTgwIC0gMTkwMCkKQEAgLTE0MDQsMTggKzE0MjEsMTcgQEAKIHsKIAltb2RlX3QgdHlwZTsKIAljb25zdCBjaGFyICpwYXRoOworCXNpemVfdCBsZW47CiAKIAl0eXBlID0gYXJjaGl2ZV9lbnRyeV9maWxldHlwZShlbnRyeSk7CiAJcGF0aCA9IGFyY2hpdmVfZW50cnlfcGF0aG5hbWUoZW50cnkpOwogCiAJaWYgKHBhdGggPT0gTlVMTCkKIAkJcmV0dXJuICgwKTsKLQlpZiAodHlwZSA9PSBBRV9JRkRJUiAmJgotCSAgICAocGF0aFswXSA9PSAnXDAnIHx8IHBhdGhbc3RybGVuKHBhdGgpIC0gMV0gIT0gJy8nKSkgewotCQlyZXR1cm4gc3RybGVuKHBhdGgpICsgMTsKLQl9IGVsc2UgewotCQlyZXR1cm4gc3RybGVuKHBhdGgpOwotCX0KKwlsZW4gPSBzdHJsZW4ocGF0aCk7CisJaWYgKHR5cGUgPT0gQUVfSUZESVIgJiYgKHBhdGhbMF0gPT0gJ1wwJyB8fCBwYXRoW2xlbiAtIDFdICE9ICcvJykpCisJCSsrbGVuOyAvKiBTcGFjZSBmb3IgdGhlIHRyYWlsaW5nIC8gKi8KKwlyZXR1cm4gbGVuOwogfQogCiBzdGF0aWMgaW50CkBAIC0xNDMwLDYgKzE0NDYsOSBAQAogCXR5cGUgPSBhcmNoaXZlX2VudHJ5X2ZpbGV0eXBlKGVudHJ5KTsKIAl3cml0dGVuX2J5dGVzID0gMDsKIAorCWlmIChwYXRoID09IE5VTEwpCisJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7CisKIAlyZXQgPSBfX2FyY2hpdmVfd3JpdGVfb3V0cHV0KGFyY2hpdmUsIHBhdGgsIHN0cmxlbihwYXRoKSk7CiAJaWYgKHJldCAhPSBBUkNISVZFX09LKQogCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwpAQCAtMTQ2MCwxMCArMTQ3OSw4IEBACiAJbWVtY3B5KHAsIHBhdGgsIHBhdGhsZW4pOwogCiAJLyogRm9sZGVycyBhcmUgcmVjb2duaXplZCBieSBhIHRyYWlsaW5nIHNsYXNoLiAqLwotCWlmICgodHlwZSA9PSBBRV9JRkRJUikgJiAocGF0aFtwYXRobGVuIC0gMV0gIT0gJy8nKSkgeworCWlmICgodHlwZSA9PSBBRV9JRkRJUikgJiYgKHBhdGhbcGF0aGxlbiAtIDFdICE9ICcvJykpCiAJCXBbcGF0aGxlbl0gPSAnLyc7Ci0JCXBbcGF0aGxlbiArIDFdID0gJ1wwJzsKLQl9CiB9CiAKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X29wdGlvbnMuMyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9vcHRpb25zLjMKaW5kZXggYWViN2ExOC4uY2ZmZTU3MSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X29wdGlvbnMuMworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfb3B0aW9ucy4zCkBAIC0yNCw3ICsyNCw3IEBACiAuXCIKIC5cIiAkRnJlZUJTRCQKIC5cIgotLkRkIEZlYnJ1YXJ5IDIsIDIwMTIKKy5EZCBKYW51YXJ5IDMxLCAyMDIwCiAuRHQgQVJDSElWRV9XUklURV9PUFRJT05TIDMKIC5PcwogLlNoIE5BTUUKQEAgLTcwLDcgKzcwLDcgQEAKIC5GbiBhcmNoaXZlX3dyaXRlX3NldF9maWx0ZXJfb3B0aW9uICwKIC5GbiBhcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfb3B0aW9uCiAuWGMKLVNwZWNpZmllcyBhbiBvcHRpb24gdGhhdCB3aWxsIGJlIHBhc3NlZCB0byBjdXJyZW50bHktcmVnaXN0ZXJlZAorU3BlY2lmaWVzIGFuIG9wdGlvbiB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBjdXJyZW50bHktcmVnaXN0ZXJlZAogZmlsdGVycyAoaW5jbHVkaW5nIGRlY29tcHJlc3Npb24gZmlsdGVycykgb3IgZm9ybWF0IHJlYWRlcnMuCiAuUHAKIElmCkBAIC0xMzgsNyArMTM4LDcgQEAKIC5DbSBBUkNISVZFX0ZBVEFMCiB3aWxsIGJlIHJldHVybmVkCiBpbW1lZGlhdGVseS4KLU90aGVyd2lzZSwgZ3JlYXRlciBvZiB0aGUgdHdvIHZhbHVlcyB3aWxsIGJlIHJldHVybmVkLgorT3RoZXJ3aXNlLCB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIHZhbHVlcyB3aWxsIGJlIHJldHVybmVkLgogLlwiCiAuSXQgRm4gYXJjaGl2ZV93cml0ZV9zZXRfb3B0aW9ucwogLkFyIG9wdGlvbnMKQEAgLTE3MCw1NSArMTcwLDE1MyBAQAogLlwiCiAuU2ggT1BUSU9OUwogLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAorLkl0IEZpbHRlciBiNjRlbmNvZGUKKy5CbCAtdGFnIC1jb21wYWN0IC13aWR0aCBpbmRlbnQKKy5JdCBDbSBtb2RlCitUaGUgdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYXMgb2N0YWwgZGlnaXRzIHNwZWNpZnlpbmcgdGhlIGZpbGUgbW9kZS4KKy5JdCBDbSBuYW1lCitUaGUgdmFsdWUgc3BlY2lmaWVzIHRoZSBmaWxlIG5hbWUuCisuRWwKKy5JdCBGaWx0ZXIgYnppcDIKKy5CbCAtdGFnIC1jb21wYWN0IC13aWR0aCBpbmRlbnQKKy5JdCBDbSBjb21wcmVzc2lvbi1sZXZlbAorVGhlIHZhbHVlIGlzIGludGVycHJldGVkIGFzIGEgZGVjaW1hbCBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlCitiemlwMiBjb21wcmVzc2lvbiBsZXZlbC4gU3VwcG9ydGVkIHZhbHVlcyBhcmUgZnJvbSAxIHRvIDkuCisuRWwKIC5JdCBGaWx0ZXIgZ3ppcAogLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAogLkl0IENtIGNvbXByZXNzaW9uLWxldmVsCiBUaGUgdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYXMgYSBkZWNpbWFsIGludGVnZXIgc3BlY2lmeWluZyB0aGUKLWd6aXAgY29tcHJlc3Npb24gbGV2ZWwuCitnemlwIGNvbXByZXNzaW9uIGxldmVsLiBTdXBwb3J0ZWQgdmFsdWVzIGFyZSBmcm9tIDAgdG8gOS4KKy5JdCBDbSB0aW1lc3RhbXAKK1N0b3JlIHRpbWVzdGFtcC4gVGhpcyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisuRWwKKy5JdCBGaWx0ZXIgbHJ6aXAKKy5CbCAtdGFnIC1jb21wYWN0IC13aWR0aCBpbmRlbnQKKy5JdCBDbSBjb21wcmVzc2lvbiBOcyA9IE5zIEFyIHR5cGUKK1VzZQorLkFyIHR5cGUKK2FzIGNvbXByZXNzaW9uIG1ldGhvZC4KK1N1cHBvcnRlZCB2YWx1ZXMgYXJlCisuRHEgYnppcDIgLAorLkRxIGd6aXBpICwKKy5EcSBsem8KKy5QcSB1bHRyYSBmYXN0ICwKK2FuZAorLkRxIHpwYXEKKy5QcSBiZXN0LCBleHRyZW1lbHkgc2xvdyAuCisuSXQgQ20gY29tcHJlc3Npb24tbGV2ZWwKK1RoZSB2YWx1ZSBpcyBpbnRlcnByZXRlZCBhcyBhIGRlY2ltYWwgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZQorbHJ6aXAgY29tcHJlc3Npb24gbGV2ZWwuIFN1cHBvcnRlZCB2YWx1ZXMgYXJlIGZyb20gMSB0byA5LgorLkVsCisuSXQgRmlsdGVyIGx6NAorLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAorLkl0IENtIGNvbXByZXNzaW9uLWxldmVsCitUaGUgdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYXMgYSBkZWNpbWFsIGludGVnZXIgc3BlY2lmeWluZyB0aGUKK2x6NCBjb21wcmVzc2lvbiBsZXZlbC4gU3VwcG9ydGVkIHZhbHVlcyBhcmUgZnJvbSAwIHRvIDkuCisuSXQgQ20gc3RyZWFtLWNoZWNrc3VtCitFbmFibGUgc3RyZWFtIGNoZWNrc3VtLiBUaGlzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKy5JdCBDbSBibG9jay1jaGVja3N1bQorRW5hYmxlIGJsb2NrIGNoZWNrc3VtLiBUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisuSXQgQ20gYmxvY2stc2l6ZQorVGhlIHZhbHVlIGlzIGludGVycHJldGVkIGFzIGEgZGVjaW1hbCBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlCitsejQgY29tcHJlc3Npb24gYmxvY2sgc2l6ZS4gU3VwcG9ydGVkIHZhbHVlcyBhcmUgZnJvbSA0IHRvIDcKKy5QcSBkZWZhdWx0IC4KKy5JdCBDbSBibG9jay1kZXBlbmRlbmNlCitVc2UgdGhlIHByZXZpb3VzIGJsb2NrIG9mIHRoZSBibG9jayBiZWluZyBjb21wcmVzc2VkIGZvcgorYSBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IHRvIGltcHJvdmUgY29tcHJlc3Npb24gcmF0aW8uCitUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisuRWwKKy5JdCBGaWx0ZXIgbHpvcAorLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAorLkl0IENtIGNvbXByZXNzaW9uLWxldmVsCitUaGUgdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYXMgYSBkZWNpbWFsIGludGVnZXIgc3BlY2lmeWluZyB0aGUKK2x6b3AgY29tcHJlc3Npb24gbGV2ZWwuIFN1cHBvcnRlZCB2YWx1ZXMgYXJlIGZyb20gMSB0byA5LgorLkVsCisuSXQgRmlsdGVyIHV1ZW5jb2RlCisuQmwgLXRhZyAtY29tcGFjdCAtd2lkdGggaW5kZW50CisuSXQgQ20gbW9kZQorVGhlIHZhbHVlIGlzIGludGVycHJldGVkIGFzIG9jdGFsIGRpZ2l0cyBzcGVjaWZ5aW5nIHRoZSBmaWxlIG1vZGUuCisuSXQgQ20gbmFtZQorVGhlIHZhbHVlIHNwZWNpZmllcyB0aGUgZmlsZSBuYW1lLgogLkVsCiAuSXQgRmlsdGVyIHh6CiAuQmwgLXRhZyAtY29tcGFjdCAtd2lkdGggaW5kZW50CiAuSXQgQ20gY29tcHJlc3Npb24tbGV2ZWwKIFRoZSB2YWx1ZSBpcyBpbnRlcnByZXRlZCBhcyBhIGRlY2ltYWwgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZQotY29tcHJlc3Npb24gbGV2ZWwuCitjb21wcmVzc2lvbiBsZXZlbC4gU3VwcG9ydGVkIHZhbHVlcyBhcmUgZnJvbSAwIHRvIDkuCisuSXQgQ20gdGhyZWFkcworVGhlIHZhbHVlIGlzIGludGVycHJldGVkIGFzIGEgZGVjaW1hbCBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlCitudW1iZXIgb2YgdGhyZWFkcyBmb3IgbXVsdGktdGhyZWFkZWQgbHptYSBjb21wcmVzc2lvbi4KK0lmIHN1cHBvcnRlZCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgcmVhZCBmcm9tCisuRm4gbHptYV9jcHV0aHJlYWRzIC4KIC5FbAotLkl0IEZvcm1hdCBtdHJlZQorLkl0IEZpbHRlciB6c3RkCiAuQmwgLXRhZyAtY29tcGFjdCAtd2lkdGggaW5kZW50Ci0uSXQgQ20gY2tzdW0gLCBDbSBkZXZpY2UgLCBDbSBmbGFncyAsIENtIGdpZCAsIENtIGduYW1lICwgQ20gaW5kZW50ICwgQ20gbGluayAsIENtIG1kNSAsIENtIG1vZGUgLCBDbSBubGluayAsIENtIHJtZDE2MCAsIENtIHNoYTEgLCBDbSBzaGEyNTYgLCBDbSBzaGEzODQgLCBDbSBzaGE1MTIgLCBDbSBzaXplICwgQ20gdGltZSAsIENtIHVpZCAsIENtIHVuYW1lCi1FbmFibGUgYSBwYXJ0aWN1bGFyIGtleXdvcmQgaW4gdGhlIG10cmVlIG91dHB1dC4KLVByZWZpeCB3aXRoIGFuIGV4Y2xhbWF0aW9uIG1hcmsgdG8gZGlzYWJsZSB0aGUgY29ycmVzcG9uZGluZyBrZXl3b3JkLgotVGhlIGRlZmF1bHQgaXMgZXF1aXZhbGVudCB0bwotLkRxIGRldmljZSwgZmxhZ3MsIGdpZCwgZ25hbWUsIGxpbmssIG1vZGUsIG5saW5rLCBzaXplLCB0aW1lLCB0eXBlLCB1aWQsIHVuYW1lIC4KLS5JdCBDbSBhbGwKLUVuYWJsZXMgYWxsIG9mIHRoZSBhYm92ZSBrZXl3b3Jkcy4KLS5JdCBDbSB1c2Utc2V0Ci1FbmFibGVzIGdlbmVyYXRpb24gb2YKLS5DbSAvc2V0Ci1saW5lcyB0aGF0IHNwZWNpZnkgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBmb2xsb3dpbmcgZmlsZXMgYW5kL29yIGRpcmVjdG9yaWVzLgotLkl0IENtIGluZGVudAotWFhYIG5lZWRzIGV4cGxhbmF0aW9uIFhYWAorLkl0IENtIGNvbXByZXNzaW9uLWxldmVsCitUaGUgdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYXMgYSBkZWNpbWFsIGludGVnZXIgc3BlY2lmeWluZyB0aGUKK2NvbXByZXNzaW9uIGxldmVsLiBTdXBwb3J0ZWQgdmFsdWVzIGFyZSBmcm9tIDEgdG8gMjIuCisuRWwKKy5JdCBGb3JtYXQgN3ppcAorLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAorLkl0IENtIGNvbXByZXNzaW9uCitUaGUgdmFsdWUgaXMgb25lIG9mCisuRHEgc3RvcmUgLAorLkRxIGRlZmxhdGUgLAorLkRxIGJ6aXAyICwKKy5EcSBsem1hMSAsCisuRHEgbHptYTIKK29yCisuRHEgcHBtZAordG8gaW5kaWNhdGUgaG93IHRoZSBmb2xsb3dpbmcgZW50cmllcyBzaG91bGQgYmUgY29tcHJlc3NlZC4KK05vdGUgdGhhdCB0aGlzIHNldHRpbmcgaXMgaWdub3JlZCBmb3IgZGlyZWN0b3JpZXMsIHN5bWJvbGljIGxpbmtzLAorYW5kIG90aGVyIHNwZWNpYWwgZW50cmllcy4KKy5JdCBDbSBjb21wcmVzc2lvbi1sZXZlbAorVGhlIHZhbHVlIGlzIGludGVycHJldGVkIGFzIGEgZGVjaW1hbCBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlCitjb21wcmVzc2lvbiBsZXZlbC4KK1ZhbHVlcyBiZXR3ZWVuIDAgYW5kIDkgYXJlIHN1cHBvcnRlZC4KK1RoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgY29tcHJlc3Npb24gbGV2ZWwgZGVwZW5kcyBvbiB0aGUgY2hvc2VuCitjb21wcmVzc2lvbiBtZXRob2QuCisuRWwKKy5JdCBGb3JtYXQgY3BpbworLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAorLkl0IENtIGhkcmNoYXJzZXQKK1RoZSB2YWx1ZSBpcyB1c2VkIGFzIGEgY2hhcmFjdGVyIHNldCBuYW1lIHRoYXQgd2lsbCBiZQordXNlZCB3aGVuIHRyYW5zbGF0aW5nIGZpbGUgbmFtZXMuCisuRWwKKy5JdCBGb3JtYXQgZ251dGFyCisuQmwgLXRhZyAtY29tcGFjdCAtd2lkdGggaW5kZW50CisuSXQgQ20gaGRyY2hhcnNldAorVGhlIHZhbHVlIGlzIHVzZWQgYXMgYSBjaGFyYWN0ZXIgc2V0IG5hbWUgdGhhdCB3aWxsIGJlCit1c2VkIHdoZW4gdHJhbnNsYXRpbmcgZmlsZSwgZ3JvdXAgYW5kIHVzZXIgbmFtZXMuCiAuRWwKIC5JdCBGb3JtYXQgaXNvOTY2MCAtIHZvbHVtZSBtZXRhZGF0YQogVGhlc2Ugb3B0aW9ucyBhcmUgdXNlZCB0byBzZXQgc3RhbmRhcmQgSVNPOTY2MCBtZXRhZGF0YS4KIC5CbCAtdGFnIC1jb21wYWN0IC13aWR0aCBpbmRlbnQKIC5JdCBDbSBhYnN0cmFjdC1maWxlIE5zID0gTnMgQXIgZmlsZW5hbWUKIFRoZSBmaWxlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIHdpbGwgYmUgaWRlbnRpZmllZCBpbiB0aGUgSVNPOTY2MCBtZXRhZGF0YQotYXMgaG9sZGluZyB0aGUgYWJzdHJhY3QgZm9yIHRoaXMgdm9sdW1lLiAgRGVmYXVsdDogbm9uZS4KK2FzIGhvbGRpbmcgdGhlIGFic3RyYWN0IGZvciB0aGlzIHZvbHVtZS4KK0RlZmF1bHQ6IG5vbmUuCiAuSXQgQ20gYXBwbGljYXRpb24taWQgTnMgPSBOcyBBciBmaWxlbmFtZQogVGhlIGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgd2lsbCBiZSBpZGVudGlmaWVkIGluIHRoZSBJU085NjYwIG1ldGFkYXRhCi1hcyBob2xkaW5nIHRoZSBhcHBsaWNhdGlvbiBpZGVudGlmaWVyIGZvciB0aGlzIHZvbHVtZS4gIERlZmF1bHQ6IG5vbmUuCithcyBob2xkaW5nIHRoZSBhcHBsaWNhdGlvbiBpZGVudGlmaWVyIGZvciB0aGlzIHZvbHVtZS4KK0RlZmF1bHQ6IG5vbmUuCiAuSXQgQ20gYmlibGlvLWZpbGUgTnMgPSBOcyBBciBmaWxlbmFtZQogVGhlIGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgd2lsbCBiZSBpZGVudGlmaWVkIGluIHRoZSBJU085NjYwIG1ldGFkYXRhCi1hcyBob2xkaW5nIHRoZSBiaWJsaW9ncmFwaHkgZm9yIHRoaXMgdm9sdW1lLiAgRGVmYXVsdDogbm9uZS4KK2FzIGhvbGRpbmcgdGhlIGJpYmxpb2dyYXBoeSBmb3IgdGhpcyB2b2x1bWUuCitEZWZhdWx0OiBub25lLgogLkl0IENtIGNvcHlyaWdodC1maWxlIE5zID0gTnMgQXIgZmlsZW5hbWUKIFRoZSBmaWxlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIHdpbGwgYmUgaWRlbnRpZmllZCBpbiB0aGUgSVNPOTY2MCBtZXRhZGF0YQotYXMgaG9sZGluZyB0aGUgY29weXJpZ2h0IGZvciB0aGlzIHZvbHVtZS4gIERlZmF1bHQ6IG5vbmUuCithcyBob2xkaW5nIHRoZSBjb3B5cmlnaHQgZm9yIHRoaXMgdm9sdW1lLgorRGVmYXVsdDogbm9uZS4KIC5JdCBDbSBwdWJsaXNoZXIgTnMgPSBOcyBBciBmaWxlbmFtZQogVGhlIGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgd2lsbCBiZSBpZGVudGlmaWVkIGluIHRoZSBJU085NjYwIG1ldGFkYXRhCi1hcyBob2xkaW5nIHRoZSBwdWJsaXNoZXIgaW5mb3JtYXRpb24gZm9yIHRoaXMgdm9sdW1lLiAgRGVmYXVsdDogbm9uZS4KK2FzIGhvbGRpbmcgdGhlIHB1Ymxpc2hlciBpbmZvcm1hdGlvbiBmb3IgdGhpcyB2b2x1bWUuCitEZWZhdWx0OiBub25lLgogLkl0IENtIHZvbHVtZS1pZCBOcyA9IE5zIEFyIHN0cmluZwogVGhlIHNwZWNpZmllZCBzdHJpbmcgd2lsbCBiZSB1c2VkIGFzIHRoZSBWb2x1bWUgSWRlbnRpZmllciBpbiB0aGUgSVNPOTY2MCBtZXRhZGF0YS4KLUl0IGlzIGxpbWl0ZWQgdG8gMzIgYnl0ZXMuIERlZmF1bHQ6IG5vbmUuCitJdCBpcyBsaW1pdGVkIHRvIDMyIGJ5dGVzLgorRGVmYXVsdDogbm9uZS4KIC5FbAogLkl0IEZvcm1hdCBpc285NjYwIC0gYm9vdCBzdXBwb3J0CiBUaGVzZSBvcHRpb25zIGFyZSB1c2VkIHRvIG1ha2UgYW4gSVNPOTY2MCBpbWFnZSB0aGF0IGNhbiBiZSBkaXJlY3RseQpAQCAtMjY2LDcgKzM2NCw3IEBACiB0aGUgZGVmYXVsdCBpcwogLkNtIGZkICwKIG90aGVyd2lzZSB0aGUgZGVmYXVsdCBpcwotLkNtIG5vLWVtdWxhdGlvbi4KKy5DbSBuby1lbXVsYXRpb24gLgogLkVsCiAuSXQgRm9ybWF0IGlzbzk2NjAgLSBmaWxlbmFtZSBhbmQgc2l6ZSBleHRlbnNpb25zCiBWYXJpb3VzIGV4dGVuc2lvbnMgdG8gdGhlIGJhc2UgSVNPOTY2MCBmb3JtYXQuCkBAIC0yOTAsNyArMzg4LDcgQEAKIERlZmF1bHQ6IGRpc2FibGVkLgogLkl0IENtIGFsbG93LXBlcmlvZAogSWYgZW5hYmxlZCwgYWxsb3dzIGZpbGVuYW1lcyB0byBjb250YWluIHRyYWlsaW5nIHBlcmlvZCBjaGFyYWN0ZXJzLCBpbiB2aW9sYXRpb24gb2YgdGhlIElTTzk2NjAgc3BlY2lmaWNhdGlvbi4KLUlmIGRpc2FibGVkLHRyYWlsaW5nIHBlcmlvZHMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdW5kZXJzY29yZSBjaGFyYWN0ZXJzLgorSWYgZGlzYWJsZWQsIHRyYWlsaW5nIHBlcmlvZHMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdW5kZXJzY29yZSBjaGFyYWN0ZXJzLgogVGhpcyBkb2VzIG5vdCBpbXBhY3QgbmFtZXMgc3RvcmVkIGluIHRoZSBSb2NrcmlkZ2Ugb3IgSm9saWV0IGV4dGVuc2lvbiBhcmVhLgogRGVmYXVsdDogZGlzYWJsZWQuCiAuSXQgQ20gYWxsb3ctcHZkLWxvd2VyY2FzZQpAQCAtMzk4LDYgKzQ5NiwxMTEgQEAKIFRoaXMgb3B0aW9uIGNhbiBiZSBwcm92aWRlZCBtdWx0aXBsZSB0aW1lcyB0byBzdXBwcmVzcyBjb21wcmVzc2lvbgogb24gbWFueSBmaWxlcy4KIC5FbAorLkl0IEZvcm1hdCBtdHJlZQorLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAorLkl0IENtIGNrc3VtICwgQ20gZGV2aWNlICwgQ20gZmxhZ3MgLCBDbSBnaWQgLCBDbSBnbmFtZSAsIENtIGluZGVudCAsIENtIGxpbmsgLCBDbSBtZDUgLCBDbSBtb2RlICwgQ20gbmxpbmsgLCBDbSBybWQxNjAgLCBDbSBzaGExICwgQ20gc2hhMjU2ICwgQ20gc2hhMzg0ICwgQ20gc2hhNTEyICwgQ20gc2l6ZSAsIENtIHRpbWUgLCBDbSB1aWQgLCBDbSB1bmFtZQorRW5hYmxlIGEgcGFydGljdWxhciBrZXl3b3JkIGluIHRoZSBtdHJlZSBvdXRwdXQuCitQcmVmaXggd2l0aCBhbiBleGNsYW1hdGlvbiBtYXJrIHRvIGRpc2FibGUgdGhlIGNvcnJlc3BvbmRpbmcga2V5d29yZC4KK1RoZSBkZWZhdWx0IGlzIGVxdWl2YWxlbnQgdG8KKy5EcSBkZXZpY2UsIGZsYWdzLCBnaWQsIGduYW1lLCBsaW5rLCBtb2RlLCBubGluaywgc2l6ZSwgdGltZSwgdHlwZSwgdWlkLCB1bmFtZSAuCisuSXQgQ20gYWxsCitFbmFibGVzIGFsbCBvZiB0aGUgYWJvdmUga2V5d29yZHMuCisuSXQgQ20gdXNlLXNldAorRW5hYmxlcyBnZW5lcmF0aW9uIG9mCisuQ20gL3NldAorbGluZXMgdGhhdCBzcGVjaWZ5IGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgZm9sbG93aW5nIGZpbGVzIGFuZC9vciBkaXJlY3Rvcmllcy4KKy5JdCBDbSBpbmRlbnQKK1hYWCBuZWVkcyBleHBsYW5hdGlvbiBYWFgKKy5FbAorLkl0IEZvcm1hdCBuZXdjCisuQmwgLXRhZyAtY29tcGFjdCAtd2lkdGggaW5kZW50CisuSXQgQ20gaGRyY2hhcnNldAorVGhlIHZhbHVlIGlzIHVzZWQgYXMgYSBjaGFyYWN0ZXIgc2V0IG5hbWUgdGhhdCB3aWxsIGJlCit1c2VkIHdoZW4gdHJhbnNsYXRpbmcgZmlsZSBuYW1lcy4KKy5FbAorLkl0IEZvcm1hdCBwYXgKKy5CbCAtdGFnIC1jb21wYWN0IC13aWR0aCBpbmRlbnQKKy5JdCBDbSBoZHJjaGFyc2V0CitUaGUgdmFsdWUgaXMgdXNlZCBhcyBhIGNoYXJhY3RlciBzZXQgbmFtZSB0aGF0IHdpbGwgYmUKK3VzZWQgd2hlbiB0cmFuc2xhdGluZyBmaWxlLCBncm91cCBhbmQgdXNlciBuYW1lcy4KK1RoZSB2YWx1ZSBpcyBvbmUgb2YKKy5EcSBCSU5BUlkKK29yCisuRHEgVVRGLTggLgorV2l0aAorLkRxIEJJTkFSWQordGhlcmUgaXMgbm8gY2hhcmFjdGVyIGNvbnZlcnNpb24sIHdpdGgKKy5EcSBVVEYtOAorbmFtZXMgYXJlIGNvbnZlcnRlZCB0byBVVEYtOC4KKy5JdCBDbSB4YXR0cmhlYWRlcgorV2hlbiBzdG9yaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIHRoaXMgb3B0aW9uIGNvbmZpZ3VyZXMgd2hpY2gKK2hlYWRlcnMgc2hvdWxkIGJlIHdyaXR0ZW4uIFRoZSB2YWx1ZSBpcyBvbmUgb2YKKy5EcSBhbGwgLAorLkRxIExJQkFSQ0hJVkUgLAorb3IKKy5EcSBTQ0hJTFkgLgorQnkgZGVmYXVsdCwgYm90aAorLkRxIExJQkFSQ0hJVkUueGF0dHIKK2FuZAorLkRxIFNDSElMWS54YXR0cgoraGVhZGVycyBhcmUgd3JpdHRlbi4KKy5FbAorLkl0IEZvcm1hdCB1c3RhcgorLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAorLkl0IENtIGhkcmNoYXJzZXQKK1RoZSB2YWx1ZSBpcyB1c2VkIGFzIGEgY2hhcmFjdGVyIHNldCBuYW1lIHRoYXQgd2lsbCBiZQordXNlZCB3aGVuIHRyYW5zbGF0aW5nIGZpbGUsIGdyb3VwIGFuZCB1c2VyIG5hbWVzLgorLkVsCisuSXQgRm9ybWF0IHY3dGFyCisuQmwgLXRhZyAtY29tcGFjdCAtd2lkdGggaW5kZW50CisuSXQgQ20gaGRyY2hhcnNldAorVGhlIHZhbHVlIGlzIHVzZWQgYXMgYSBjaGFyYWN0ZXIgc2V0IG5hbWUgdGhhdCB3aWxsIGJlCit1c2VkIHdoZW4gdHJhbnNsYXRpbmcgZmlsZSwgZ3JvdXAgYW5kIHVzZXIgbmFtZXMuCisuRWwKKy5JdCBGb3JtYXQgd2FyYworLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAorLkl0IENtIG9taXQtd2FyY2luZm8KK1NldCB0bworLkRxIHRydWUKK3RvIGRpc2FibGUgb3V0cHV0IG9mIHRoZSB3YXJjaW5mbyByZWNvcmQuCisuRWwKKy5JdCBGb3JtYXQgeGFyCisuQmwgLXRhZyAtY29tcGFjdCAtd2lkdGggaW5kZW50CisuSXQgQ20gY2hlY2tzdW0gTnMgPSBOcyBBciB0eXBlCitVc2UKKy5BciB0eXBlCithcyBmaWxlIGNoZWNrc3VtIG1ldGhvZC4KK1N1cHBvcnRlZCB2YWx1ZXMgYXJlCisuRHEgbm9uZSAsCisuRHEgbWQ1ICwKK2FuZAorLkRxIHNoYTEKKy5QcSBkZWZhdWx0IC4KKy5JdCBDbSBjb21wcmVzc2lvbiBOcyA9IE5zIEFyIHR5cGUKK1VzZQorLkFyIHR5cGUKK2FzIGNvbXByZXNzaW9uIG1ldGhvZC4KK1N1cHBvcnRlZCB2YWx1ZXMgYXJlCisuRHEgbm9uZSAsCisuRHEgYnppcDIgLAorLkRxIGd6aXAKKy5QcSBkZWZhdWx0ICwKKy5EcSBsem1hCithbmQKKy5EcSB4eiAuCisuSXQgQ20gY29tcHJlc3Npb25fbGV2ZWwKK1RoZSB2YWx1ZSBpcyBhIGRlY2ltYWwgaW50ZWdlciBmcm9tIDEgdG8gOSBzcGVjaWZ5aW5nIHRoZSBjb21wcmVzc2lvbiBsZXZlbC4KKy5JdCBDbSB0b2MtY2hlY2tzdW0gTnMgPSBOcyBBciB0eXBlCitVc2UKKy5BciB0eXBlCithcyB0YWJsZSBvZiBjb250ZW50cyBjaGVja3N1bSBtZXRob2QuCitTdXBwb3J0ZWQgdmFsdWVzIGFyZQorLkRxIG5vbmUgLAorLkRxIG1kNQorYW5kCisuRHEgc2hhMQorLlBxIGRlZmF1bHQgLgorLkVsCiAuSXQgRm9ybWF0IHppcAogLkJsIC10YWcgLWNvbXBhY3QgLXdpZHRoIGluZGVudAogLkl0IENtIGNvbXByZXNzaW9uCkBAIC00MDgsNiArNjExLDI5IEBACiB0byBpbmRpY2F0ZSBob3cgdGhlIGZvbGxvd2luZyBlbnRyaWVzIHNob3VsZCBiZSBjb21wcmVzc2VkLgogTm90ZSB0aGF0IHRoaXMgc2V0dGluZyBpcyBpZ25vcmVkIGZvciBkaXJlY3Rvcmllcywgc3ltYm9saWMgbGlua3MsCiBhbmQgb3RoZXIgc3BlY2lhbCBlbnRyaWVzLgorLkl0IENtIGNvbXByZXNzaW9uLWxldmVsCitUaGUgdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYXMgYSBkZWNpbWFsIGludGVnZXIgc3BlY2lmeWluZyB0aGUKK2NvbXByZXNzaW9uIGxldmVsLgorVmFsdWVzIGJldHdlZW4gMCBhbmQgOSBhcmUgc3VwcG9ydGVkLgorQSBjb21wcmVzc2lvbiBsZXZlbCBvZiAwIHN3aXRjaGVzIHRoZSBjb21wcmVzc2lvbiBtZXRob2QgdG8KKy5EcSBzdG9yZSAsCitvdGhlciB2YWx1ZXMgd2lsbCBlbmFibGUKKy5EcSBkZWZsYXRlCitjb21wcmVzc2lvbiB3aXRoIHRoZSBnaXZlbiBsZXZlbC4KKy5JdCBDbSBlbmNyeXB0aW9uCitFbmFibGUgZW5jcnlwdGlvbiB1c2luZyB0cmFkaXRpb25hbCB6aXAgZW5jcnlwdGlvbi4KKy5JdCBDbSBlbmNyeXB0aW9uIE5zID0gTnMgQXIgdHlwZQorVXNlCisuQXIgdHlwZQorYXMgZW5jcnlwdGlvbiB0eXBlLgorU3VwcG9ydGVkIHZhbHVlcyBhcmUKKy5EcSB6aXBjcnlwdAorLlBxIHRyYWRpdGlvbmFsIHppcCBlbmNyeXB0aW9uICwKKy5EcSBhZXMxMjgKKy5QcSBXaW5aaXAgQUVTLTEyOCBlbmNyeXB0aW9uCithbmQKKy5EcSBhZXMyNTYKKy5QcSBXaW5aaXAgQUVTLTI1NiBlbmNyeXB0aW9uIC4KIC5JdCBDbSBleHBlcmltZW50YWwKIFRoaXMgYm9vbGVhbiBvcHRpb24gZW5hYmxlcyBvciBkaXNhYmxlcyBleHBlcmltZW50YWwgWmlwIGZlYXR1cmVzCiB0aGF0IG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoIG90aGVyIFppcCBpbXBsZW1lbnRhdGlvbnMuCkBAIC00MTYsNyArNjQyLDggQEAKIEFsbCBDUkMgZmllbGRzIGFyZSBzZXQgdG8gemVyby4KIEl0IHNob3VsZCBub3QgYmUgdXNlZCBleGNlcHQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAuSXQgQ20gaGRyY2hhcnNldAotVGhpcyBzZXRzIHRoZSBjaGFyYWN0ZXIgc2V0IHVzZWQgZm9yIGZpbGVuYW1lcy4KK1RoZSB2YWx1ZSBpcyB1c2VkIGFzIGEgY2hhcmFjdGVyIHNldCBuYW1lIHRoYXQgd2lsbCBiZQordXNlZCB3aGVuIHRyYW5zbGF0aW5nIGZpbGUgbmFtZXMuCiAuSXQgQ20gemlwNjQKIFppcDY0IGV4dGVuc2lvbnMgcHJvdmlkZSBhZGRpdGlvbmFsIGZpbGUgc2l6ZSBpbmZvcm1hdGlvbgogZm9yIGVudHJpZXMgbGFyZ2VyIHRoYW4gNCBHaUIuCkBAIC00NjUsOSArNjkyLDkgQEAKIC5cIgogLlNoIFNFRSBBTFNPCiAuWHIgdGFyIDEgLAotLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX3NldF9vcHRpb25zIDMgLAotLlhyIGFyY2hpdmVfd3JpdGUgMworLlhyIGFyY2hpdmVfd3JpdGUgMyAsCisuWHIgbGliYXJjaGl2ZSAzCiAuU2ggSElTVE9SWQogVGhlCiAuTm0gbGliYXJjaGl2ZQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X3Bhc3NwaHJhc2UuMyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9wYXNzcGhyYXNlLjMKaW5kZXggMjU4NTU5NS4uMmRiNzcwMyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X3Bhc3NwaHJhc2UuMworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfcGFzc3BocmFzZS4zCkBAIC00OSw3ICs0OSw3IEBACiAuU2ggREVTQ1JJUFRJT04KIC5CbCAtdGFnIC13aWR0aCBpbmRlbnQKIC5JdCBGbiBhcmNoaXZlX3dyaXRlX3NldF9wYXNzcGhyYXNlCi1TZXQgYSBwYXNzcGhyYXNlIGZvciB3cml0aW5nIGFuIGVuY3J5cHRpb24gYXJjaGl2ZS4KK1NldCBhIHBhc3NwaHJhc2UgZm9yIHdyaXRpbmcgYW4gZW5jcnlwdGVkIGFyY2hpdmUuCiBJZgogLkFyIHBhc3NwaHJhc2UKIGlzCkBAIC01OSwxNiArNTksMTYgQEAKIHdpbGwgYmUgcmV0dXJuZWQuCiBPdGhlcndpc2UsCiAuQ20gQVJDSElWRV9PSwotd2lsbCBiZSByZXR1cm5lZC4gCit3aWxsIGJlIHJldHVybmVkLgogLkl0IEZuIGFyY2hpdmVfd3JpdGVfc2V0X3Bhc3NwaHJhc2VfY2FsbGJhY2sKLVJlZ2lzdGVyIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBpbnZva2VkIHRvIGdldCBhIHBhc3NwaHJhc2UKLWZvciBlbmNycHRpb24gaWYgdGhlIHBhc3NwaHJhc2Ugd2FzIG5vdCBzZXQgYnkgdGhlCitSZWdpc3RlciBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBpbnZva2VkIHRvIGdldCBhIHBhc3NwaHJhc2UKK2ZvciBlbmNyeXB0aW9uIGlmIHRoZSBwYXNzcGhyYXNlIHdhcyBub3Qgc2V0IGJ5IHRoZQogLkZuIGFyY2hpdmVfd3JpdGVfc2V0X3Bhc3NwaHJhc2UKIGZ1bmN0aW9uLgogLkVsCiAuXCIgLlNoIEVSUk9SUwogLlNoIFNFRSBBTFNPCiAuWHIgdGFyIDEgLAotLlhyIGxpYmFyY2hpdmUgMyAsCiAuWHIgYXJjaGl2ZV93cml0ZSAzICwKLS5YciBhcmNoaXZlX3dyaXRlX3NldF9vcHRpb25zIDMKKy5YciBhcmNoaXZlX3dyaXRlX3NldF9vcHRpb25zIDMgLAorLlhyIGxpYmFyY2hpdmUgMwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2FyY2hpdmVfeHhoYXNoLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV94eGhhc2guaAppbmRleCA0MjcyNDE2Li4xYzcxMzFjIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV94eGhhc2guaAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvYXJjaGl2ZV94eGhhc2guaApAQCAtMjQsMTIgKzI0LDEzIEBACiAgKgogICovCiAKKyNpZm5kZWYgQVJDSElWRV9YWEhBU0hfSF9JTkNMVURFRAorI2RlZmluZSBBUkNISVZFX1hYSEFTSF9IX0lOQ0xVREVECisKICNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECiAjZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KICNlbmRpZgogCi0jaWZuZGVmIEFSQ0hJVkVfWFhIQVNIX0gKLSNkZWZpbmUgQVJDSElWRV9YWEhBU0hfSAogCiB0eXBlZGVmIGVudW0geyBYWEhfT0s9MCwgWFhIX0VSUk9SIH0gWFhIX2Vycm9yY29kZTsKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2NvbmZpZ19mcmVlYnNkLmggYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29uZmlnX2ZyZWVic2QuaAppbmRleCBiZTI1MjU4Li5mMTZmZDM0IDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29uZmlnX2ZyZWVic2QuaAorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29uZmlnX2ZyZWVic2QuaApAQCAtMjEwLDYgKzIxMCw3IEBACiAjZGVmaW5lIEhBVkVfVFpTRVQgMQogI2RlZmluZSBIQVZFX1VJTlRNQVhfVCAxCiAjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQorI2RlZmluZSBIQVZFX1VOTElOS0FUIDEKICNkZWZpbmUgSEFWRV9VTlNFVEVOViAxCiAjZGVmaW5lIEhBVkVfVU5TSUdORURfTE9OR19MT05HIDEKICNkZWZpbmUgSEFWRV9VTlNJR05FRF9MT05HX0xPTkdfSU5UIDEKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9maWx0ZXJfZm9yay5oIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2ZpbHRlcl9mb3JrLmgKaW5kZXggYTI4MjcyYi4uOTA4ZTdjZCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2ZpbHRlcl9mb3JrLmgKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2ZpbHRlcl9mb3JrLmgKQEAgLTI1LDEzICsyNSwxMyBAQAogICogJEZyZWVCU0Q6IGhlYWQvbGliL2xpYmFyY2hpdmUvZmlsdGVyX2ZvcmsuaCAyMDEwODcgMjAwOS0xMi0yOCAwMjoxODoyNloga2llbnR6bGUgJAogICovCiAKKyNpZm5kZWYgRklMVEVSX0ZPUktfSAorI2RlZmluZSBGSUxURVJfRk9SS19ICisKICNpZm5kZWYgX19MSUJBUkNISVZFX0JVSUxECiAjZXJyb3IgVGhpcyBoZWFkZXIgaXMgb25seSB0byBiZSB1c2VkIGludGVybmFsbHkgdG8gbGliYXJjaGl2ZS4KICNlbmRpZgogCi0jaWZuZGVmIEZJTFRFUl9GT1JLX0gKLSNkZWZpbmUgRklMVEVSX0ZPUktfSAotCiBwaWRfdAogX19hcmNoaXZlX2NyZWF0ZV9jaGlsZChjb25zdCBjaGFyICpjbWQsIGludCAqY2hpbGRfc3RkaW4sIGludCAqY2hpbGRfc3Rkb3V0KTsKIApkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2xpYmFyY2hpdmVfY2hhbmdlcy4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2xpYmFyY2hpdmVfY2hhbmdlcy4zCmluZGV4IGFkYzg3ZmUuLjZiZjhkYjAgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9saWJhcmNoaXZlX2NoYW5nZXMuMworKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV9jaGFuZ2VzLjMKQEAgLTM1LDcgKzM1LDYgQEAKIFRoaXMgcGFnZSBkZXNjcmliZXMgdXNlci12aXNpYmxlIGNoYW5nZXMgaW4gbGliYXJjaGl2ZTMsIGFuZCBsaXN0cwogcHVibGljIGZ1bmN0aW9ucyBhbmQgb3RoZXIgc3ltYm9scyBjaGFuZ2VkLCBkZXByZWNhdGVkIG9yIHJlbW92ZWQKIGluIGxpYmFyY2hpdmUzLCBhbG9uZyB3aXRoIHRoZWlyIHJlcGxhY2VtZW50cyBpZiBhbnkuCi0uUHAKIC5cIgogLlNzIE11bHRpcGxlIEZpbHRlcnMKIC5cIgpAQCAtMzMwLDEzICszMjksMTMgQEAKIC5MaSAxMDI0MAogLkVsCiAuU2ggU0VFIEFMU08KLS5YciBsaWJhcmNoaXZlIDMgLAogLlhyIGFyY2hpdmVfcmVhZCAzICwKIC5YciBhcmNoaXZlX3JlYWRfZmlsdGVyIDMgLAogLlhyIGFyY2hpdmVfcmVhZF9mb3JtYXQgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkX3NldF9vcHRpb25zIDMgLAorLlhyIGFyY2hpdmVfdXRpbCAzICwKIC5YciBhcmNoaXZlX3dyaXRlIDMgLAogLlhyIGFyY2hpdmVfd3JpdGVfZmlsdGVyIDMgLAogLlhyIGFyY2hpdmVfd3JpdGVfZm9ybWF0IDMgLAogLlhyIGFyY2hpdmVfd3JpdGVfc2V0X29wdGlvbnMgMyAsCi0uWHIgYXJjaGl2ZV91dGlsIDMKKy5YciBsaWJhcmNoaXZlIDMKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9saWJhcmNoaXZlX2ludGVybmFscy4zIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2xpYmFyY2hpdmVfaW50ZXJuYWxzLjMKaW5kZXggODI3NWQ2Ni4uZDY3MmYzZSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2xpYmFyY2hpdmVfaW50ZXJuYWxzLjMKKysrIGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL2xpYmFyY2hpdmVfaW50ZXJuYWxzLjMKQEAgLTM1MCw4ICszNTAsOCBAQAogLlhyIGFyY2hpdmVfZW50cnkgMyAsCiAuWHIgYXJjaGl2ZV9yZWFkIDMgLAogLlhyIGFyY2hpdmVfd3JpdGUgMyAsCi0uWHIgYXJjaGl2ZV93cml0ZV9kaXNrIDMKLS5YciBsaWJhcmNoaXZlIDMgLAorLlhyIGFyY2hpdmVfd3JpdGVfZGlzayAzICwKKy5YciBsaWJhcmNoaXZlIDMKIC5TaCBISVNUT1JZCiBUaGUKIC5ObSBsaWJhcmNoaXZlCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvbXRyZWUuNSBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9tdHJlZS41CmluZGV4IGU2MDdlNGEuLjgxNDc3OTYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9tdHJlZS41CisrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS9tdHJlZS41CkBAIC0xMzMsNyArMTMzLDYgQEAKIC5TeSBjaGFyCiBmaWxlIHR5cGVzLgogVGhlIHZhbHVlIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6Ci0uUHAKIC5CbCAtdGFnIC13aWR0aCA0bgogLkl0IEFyIGZvcm1hdCAsIE5zIEFyIG1ham9yICwgTnMgQXIgbWlub3IgTnMgQm8gLCBOcyBBciBzdWJ1bml0IEJjCiBBIGRldmljZSB3aXRoCkBAIC0xNjUsOCArMTY0LDggQEAKIC5TeSBzb2xhcmlzICwKIC5TeSBzdW5vcyAsCiAuU3kgc3ZyMyAsCi0uU3kgc3ZyNCAsICAKLWFuZCAKKy5TeSBzdnI0ICwKK2FuZAogLlN5IHVsdHJpeCAuCiAuUHAKIFNlZQpAQCAtMjg4LDEyICsyODcsMTAgQEAKIC5JdCBDbSB1bmFtZQogVGhlIGZpbGUgb3duZXIgYXMgYSBzeW1ib2xpYyBuYW1lLgogLkVsCi0uUHAKIC5TaCBTRUUgQUxTTwogLlhyIGNrc3VtIDEgLAogLlhyIGZpbmQgMSAsCiAuWHIgbXRyZWUgOAotLlNoIEJVR1MKIC5TaCBISVNUT1JZCiBUaGUKIC5ObQpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL3Rhci41IGIvVXRpbGl0aWVzL2NtbGliYXJjaGl2ZS9saWJhcmNoaXZlL3Rhci41CmluZGV4IDMwYjgzN2QuLjM0YWQ0ZjcgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvbGliYXJjaGl2ZS90YXIuNQorKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL2xpYmFyY2hpdmUvdGFyLjUKQEAgLTQ0MSw3ICs0NDEsNyBAQAogVmVuZG9yLXNwZWNpZmljIGF0dHJpYnV0ZXMgdXNlZCBieSBKb2VyZyBTY2hpbGxpbmcncwogLk5tIHN0YXIKIGltcGxlbWVudGF0aW9uLgotLkl0IENtIFNDSElMWS5hY2wuYWNjZXNzICwgQ20gU0NISUxZLmFjbC5kZWZhdWx0LCBDbSBTQ0hJTFkuYWNsLmFjZQorLkl0IENtIFNDSElMWS5hY2wuYWNjZXNzICwgQ20gU0NISUxZLmFjbC5kZWZhdWx0ICwgQ20gU0NISUxZLmFjbC5hY2UKIFN0b3JlcyB0aGUgYWNjZXNzLCBkZWZhdWx0IGFuZCBORlN2NCBBQ0xzIGFzIHRleHR1YWwgc3RyaW5ncyBpbiBhIGZvcm1hdAogdGhhdCBpcyBhbiBleHRlbnNpb24gb2YgdGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgUE9TSVguMWUgZHJhZnQgMTcuCiBJbiBwYXJ0aWN1bGFyLCBlYWNoIHVzZXIgb3IgZ3JvdXAgYWNjZXNzIHNwZWNpZmljYXRpb24gY2FuIGluY2x1ZGUKQEAgLTQ1Niw3ICs0NTYsNyBAQAogLkl0IENtIFNDSElMWS5yZWFsc2l6ZQogVGhlIGZ1bGwgc2l6ZSBvZiB0aGUgZmlsZSBvbiBkaXNrLgogWFhYIGV4cGxhaW4/IFhYWAotLkl0IENtIFNDSElMWS5kZXYsIENtIFNDSElMWS5pbm8gLCBDbSBTQ0hJTFkubmxpbmtzCisuSXQgQ20gU0NISUxZLmRldiAsIENtIFNDSElMWS5pbm8gLCBDbSBTQ0hJTFkubmxpbmtzCiBUaGUgZGV2aWNlIG51bWJlciwgaW5vZGUgbnVtYmVyLCBhbmQgbGluayBjb3VudCBmb3IgdGhlIGVudHJ5LgogSW4gcGFydGljdWxhciwgbm90ZSB0aGF0IGEgcGF4IGludGVyY2hhbmdlIGZvcm1hdCBhcmNoaXZlIHVzaW5nIEpvZXJnCiBTY2hpbGxpbmcncwpAQCAtNDczLDcgKzQ3Myw3IEBACiAuRHEgY3RpbWUKIGF0dHJpYnV0ZSwgd2hpY2ggcmVmZXJzIHRvIHRoZSB0aW1lIHdoZW4gdGhlIGZpbGUKIG1ldGFkYXRhIHdhcyBsYXN0IGNoYW5nZWQuKQotLkl0IENtIExJQkFSQ0hJVkUueGF0dHIuIE5zIEFyIG5hbWVzcGFjZSBOcyAuIE5zIEFyIGtleQorLkl0IENtIExJQkFSQ0hJVkUueGF0dHIgLiBOcyBBciBuYW1lc3BhY2UgLiBOcyBBciBrZXkKIExpYmFyY2hpdmUgc3RvcmVzIFBPU0lYLjFlLXN0eWxlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdXNpbmcKIGtleXMgb2YgdGhpcyBmb3JtLgogVGhlCkBAIC04OTAsNyArODkwLDggQEAKIC5JdCBDbSBNCiBHTlUgdGFyIG11bHRpdm9sdW1lIG1hcmtlciwgaW5kaWNhdGluZyB0aGUgZmlsZSBpcyBhIGNvbnRpbnVhdGlvbiBvZiBhIGZpbGUgZnJvbSB0aGUgcHJldmlvdXMgdm9sdW1lLgogLkl0IENtIE4KLUdOVSB0YXIgbG9uZyBmaWxlbmFtZSBzdXBwb3J0LiAgRGVwcmVjYXRlZC4KK0dOVSB0YXIgbG9uZyBmaWxlbmFtZSBzdXBwb3J0LgorRGVwcmVjYXRlZC4KIC5JdCBDbSBTCiBHTlUgdGFyIHNwYXJzZSByZWd1bGFyIGZpbGUuCiAuSXQgQ20gVgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvQ01ha2VMaXN0cy50eHQgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9DTWFrZUxpc3RzLnR4dAppbmRleCA2MDY3YjdkLi4xYjAyNWZjIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJyaGFzaC9DTWFrZUxpc3RzLnR4dAorKysgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9DTWFrZUxpc3RzLnR4dApAQCAtMzcsNCArMzcsNCBAQAogCiBhZGRfbGlicmFyeShjbWxpYnJoYXNoICR7bGlicmhhc2hfc291cmNlc30pCiAKLWluc3RhbGwoRklMRVMgQ09QWUlORyBSRUFETUUgREVTVElOQVRJT04gJHtDTUFLRV9ET0NfRElSfS9jbWxpYnJoYXNoKQoraW5zdGFsbChGSUxFUyBDT1BZSU5HIERFU1RJTkFUSU9OICR7Q01BS0VfRE9DX0RJUn0vY21saWJyaGFzaCkKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL0NPUFlJTkcgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9DT1BZSU5HCmluZGV4IGJmNjVlZTEuLmJlN2Q0YTkgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL0NPUFlJTkcKKysrIGIvVXRpbGl0aWVzL2NtbGlicmhhc2gvQ09QWUlORwpAQCAtMSwxNSArMSwxNSBAQAogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJIYXNoIExpY2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTRCBaZXJvIENsYXVzZSBMaWNlbnNlCiAKLUNvcHlyaWdodCAoYykgMjAwNS0yMDE0IEFsZWtzZXkgS3JhdmNoZW5rbyA8cmhhc2guYWRtaW5AZ21haWwuY29tPgorQ29weXJpZ2h0IChjKSAyMDA1LCBBbGVrc2V5IEtyYXZjaGVua28gPHJoYXNoLmFkbWluQGdtYWlsLmNvbT4KIAotUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsICB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLW9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi1pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotdG8gIHVzZSwgIGNvcHksICBtb2RpZnksICBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLWNvcGllcyAgb2YgIHRoZSBTb2Z0d2FyZSwgIGFuZCAgdG8gcGVybWl0ICBwZXJzb25zICB0byB3aG9tICB0aGUgU29mdHdhcmUgIGlzCi1mdXJuaXNoZWQgdG8gZG8gc28uCitQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKK3B1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4KIAotVGhlIFNvZnR3YXJlICBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgYnV0IFdJVEhPVVQKLUFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCi1GT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBVc2UgIHRoaXMgIHByb2dyYW0gIGF0ICB5b3VyICBvd24gIHJpc2shCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAorUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GICBNRVJDSEFOVEFCSUxJVFkKK0FORCBGSVRORVNTLiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCitJTkRJUkVDVCwgIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQorTE9TUyBPRiBVU0UsICBEQVRBIE9SIFBST0ZJVFMsICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgIE5FR0xJR0VOQ0UKK09SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgIEFSSVNJTkcgT1VUIE9GICBPUiBJTiBDT05ORUNUSU9OICBXSVRIIFRIRSBVU0UgIE9SCitQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvUkVBRE1FIGIvVXRpbGl0aWVzL2NtbGlicmhhc2gvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWE0OTJmLi4wMDAwMDAwCi0tLSBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotICAgICAgICAgICAgICAgICAgICAgICA9PT0gTm90ZXMgb24gUkhhc2ggTGljZW5zZSA9PT0KLQotVGhlIFJIYXNoIHByb2dyYW0gYW5kIExpYlJIYXNoIGxpYnJhcnkgYXJlIGRpc3RyaWJ1dGVkIHVuZGVyICBSSGFzaCBMaWNlbnNlLAotc2VlIHRoZSBDT1BZSU5HIGZpbGUgZm9yIGRldGFpbHMuICBJbiBwYXJ0aWN1bGFyLCAgdGhlIHByb2dyYW0sICB0aGUgbGlicmFyeQotYW5kICBzb3VyY2UgY29kZSAgY2FuIGJlICB1c2VkICBmcmVlIG9mIGNoYXJnZSAgdW5kZXIgIHRoZSAgTUlULCAgQlNELCAgR1BMLAotY29tbWVyY2lhbCBvciBmcmVld2FyZSBsaWNlbnNlIHdpdGhvdXQgYWRkaXRpb25hbCByZXN0cmljdGlvbnMuICBJbiB0aGUgY2FzZQotdGhlIE9TSS1hcHByb3ZlZCBsaWNlbnNlIGlzIHJlcXVpcmVkIHRoZSAgTUlUIGxpY2Vuc2Ugc2hvdWxkIGJlIHVzZWQuCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9hbGdvcml0aG1zLmMgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9hbGdvcml0aG1zLmMKaW5kZXggZmMwMTY5MC4uY2RkNDA1MyAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvYWxnb3JpdGhtcy5jCisrKyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL2FsZ29yaXRobXMuYwpAQCAtMSwxNyArMSwxNyBAQAogLyogYWxnb3JpdGhtcy5jIC0gdGhlIGFsZ29yaXRobXMgc3VwcG9ydGVkIGJ5IHRoZSByaGFzaCBsaWJyYXJ5CiAgKgotICogQ29weXJpZ2h0OiAyMDExLTIwMTIgQWxla3NleSBLcmF2Y2hlbmtvIDxyaGFzaC5hZG1pbkBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEFsZWtzZXkgS3JhdmNoZW5rbyA8cmhhc2guYWRtaW5AZ21haWwuY29tPgogICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRvIGFueSBwZXJzb24gIG9idGFpbmluZyBhCi0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAotICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KLSAqIHRoZSByaWdodHMgdG8gIHVzZSwgY29weSwgbW9kaWZ5LCAgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCi0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgIG9mICB0aGUgU29mdHdhcmUsICBhbmQgdG8gcGVybWl0ICBwZXJzb25zICB0byB3aG9tIHRoZQotICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CisgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuCiAgKgotICogVGhpcyBwcm9ncmFtICBpcyAgZGlzdHJpYnV0ZWQgIGluICB0aGUgIGhvcGUgIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICBidXQKLSAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCi0gKiBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFVzZSB0aGlzIHByb2dyYW0gIGF0ICB5b3VyIG93biByaXNrIQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgKKyAqIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFICBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiAgTUVSQ0hBTlRBQklMSVRZCisgKiBBTkQgRklUTkVTUy4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULAorICogSU5ESVJFQ1QsICBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KKyAqIExPU1MgT0YgVVNFLCAgREFUQSBPUiBQUk9GSVRTLCAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsICBORUdMSUdFTkNFCisgKiBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sICBBUklTSU5HIE9VVCBPRiAgT1IgSU4gQ09OTkVDVElPTiAgV0lUSCBUSEUgVVNFICBPUgorICogUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAqLwogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTI3LDcgKzI3LDggQEAKICNpbmNsdWRlICJjcmMzMi5oIgogI2luY2x1ZGUgImVkMmsuaCIKICNpbmNsdWRlICJlZG9uci5oIgotI2luY2x1ZGUgImdvc3QuaCIKKyNpbmNsdWRlICJnb3N0MTIuaCIKKyNpbmNsdWRlICJnb3N0OTQuaCIKICNpbmNsdWRlICJoYXMxNjAuaCIKICNpbmNsdWRlICJtZDQuaCIKICNlbmRpZgpAQCAtNTQsMTggKzU1LDEzIEBACiAjZWxzZQogIyBkZWZpbmUgTkVFRF9PUEVOU1NMX0lOSVQgMAogI2VuZGlmIC8qIFVTRV9PUEVOU1NMICovCi0jaWZkZWYgR0VORVJBVEVfR09TVF9MT09LVVBfVEFCTEUKLSMgZGVmaW5lIE5FRURfR09TVF9JTklUIChSSEFTSF9HT1NUIHwgUkhBU0hfR09TVF9DUllQVE9QUk8pCisjaWZkZWYgR0VORVJBVEVfR09TVDk0X0xPT0tVUF9UQUJMRQorIyBkZWZpbmUgTkVFRF9HT1NUOTRfSU5JVCAoUkhBU0hfR09TVDk0IHwgUkhBU0hfR09TVDk0X0NSWVBUT1BSTykKICNlbHNlCi0jIGRlZmluZSBORUVEX0dPU1RfSU5JVCAwCi0jZW5kaWYgLyogR0VORVJBVEVfR09TVF9MT09LVVBfVEFCTEUgKi8KLSNpZmRlZiBHRU5FUkFURV9DUkMzMl9UQUJMRQotIyBkZWZpbmUgTkVFRF9DUkMzMl9JTklUIFJIQVNIX0NSQzMyCi0jZWxzZQotIyBkZWZpbmUgTkVFRF9DUkMzMl9JTklUIDAKLSNlbmRpZiAvKiBHRU5FUkFURV9DUkMzMl9UQUJMRSAqLworIyBkZWZpbmUgTkVFRF9HT1NUOTRfSU5JVCAwCisjZW5kaWYgLyogR0VORVJBVEVfR09TVDk0X0xPT0tVUF9UQUJMRSAqLwogCi0jZGVmaW5lIFJIQVNIX05FRURfSU5JVF9BTEcgKE5FRURfQ1JDMzJfSU5JVCB8IE5FRURfR09TVF9JTklUIHwgTkVFRF9PUEVOU1NMX0lOSVQpCisjZGVmaW5lIFJIQVNIX05FRURfSU5JVF9BTEcgKE5FRURfR09TVDk0X0lOSVQgfCBORUVEX09QRU5TU0xfSU5JVCkKIHVuc2lnbmVkIHJoYXNoX3VuaW5pdGlhbGl6ZWRfYWxnb3JpdGhtcyA9IFJIQVNIX05FRURfSU5JVF9BTEc7CiAKIHJoYXNoX2hhc2hfaW5mbyogcmhhc2hfaW5mb190YWJsZSA9IHJoYXNoX2hhc2hfaW5mb19kZWZhdWx0OwpAQCAtNzUsMTAgKzcxLDE0IEBACiBzdGF0aWMgdm9pZCByaGFzaF9jcmMzMl9pbml0KHVpbnQzMl90KiBjcmMzMik7CiBzdGF0aWMgdm9pZCByaGFzaF9jcmMzMl91cGRhdGUodWludDMyX3QqIGNyYzMyLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtc2csIHNpemVfdCBzaXplKTsKIHN0YXRpYyB2b2lkIHJoYXNoX2NyYzMyX2ZpbmFsKHVpbnQzMl90KiBjcmMzMiwgdW5zaWduZWQgY2hhciogcmVzdWx0KTsKK3N0YXRpYyB2b2lkIHJoYXNoX2NyYzMyY19pbml0KHVpbnQzMl90KiBjcmMzMik7CitzdGF0aWMgdm9pZCByaGFzaF9jcmMzMmNfdXBkYXRlKHVpbnQzMl90KiBjcmMzMiwgY29uc3QgdW5zaWduZWQgY2hhciogbXNnLCBzaXplX3Qgc2l6ZSk7CitzdGF0aWMgdm9pZCByaGFzaF9jcmMzMmNfZmluYWwodWludDMyX3QqIGNyYzMyLCB1bnNpZ25lZCBjaGFyKiByZXN1bHQpOwogI2VuZGlmCiAKICNpZiAwCi1yaGFzaF9pbmZvIGluZm9fY3JjMzIgPSB7IFJIQVNIX0NSQzMyLCBGX0JFMzIsIDQsICJDUkMzMiIsICJjcmMzMiIgfTsKK3JoYXNoX2luZm8gaW5mb19jcmMzMiAgPSB7IFJIQVNIX0NSQzMyLCAgRl9CRTMyLCA0LCAiQ1JDMzIiLCAiY3JjMzIiIH07CityaGFzaF9pbmZvIGluZm9fY3JjMzJjID0geyBSSEFTSF9DUkMzMkMsIEZfQkUzMiwgNCwgIkNSQzMyQyIsICJjcmMzMmMiIH07CiByaGFzaF9pbmZvIGluZm9fbWQ0ID0geyBSSEFTSF9NRDQsIEZfTEUzMiwgMTYsICJNRDQiLCAibWQ0IiB9OwogI2VuZGlmCiByaGFzaF9pbmZvIGluZm9fbWQ1ID0geyBSSEFTSF9NRDUsIEZfTEUzMiwgMTYsICJNRDUiLCAibWQ1IiB9OwpAQCAtOTEsOCArOTEsMTAgQEAKIHJoYXNoX2luZm8gaW5mb19haWNoID0geyBSSEFTSF9BSUNILCAgICAgIEZfQlMzMiwgMjAsICJBSUNIIiwgImFpY2giIH07CiByaGFzaF9pbmZvIGluZm9fd2hpcmxwb29sID0geyBSSEFTSF9XSElSTFBPT0wsIEZfQkU2NCwgNjQsICJXSElSTFBPT0wiLCAid2hpcmxwb29sIiB9Owogcmhhc2hfaW5mbyBpbmZvX3JtZDE2MCA9IHsgUkhBU0hfUklQRU1EMTYwLCAgRl9MRTMyLCAyMCwgIlJJUEVNRC0xNjAiLCAicmlwZW1kMTYwIiB9Owotcmhhc2hfaW5mbyBpbmZvX2dvc3QgPSAgIHsgUkhBU0hfR09TVCwgICAgICAgRl9MRTMyLCAzMiwgIkdPU1QiLCAiZ29zdCIgfTsKLXJoYXNoX2luZm8gaW5mb19nb3N0cHJvID0geyBSSEFTSF9HT1NUX0NSWVBUT1BSTywgRl9MRTMyLCAzMiwgIkdPU1QtQ1JZUFRPUFJPIiwgImdvc3QtY3J5cHRvcHJvIiB9Oworcmhhc2hfaW5mbyBpbmZvX2dvc3QxMl8yNTYgPSB7IFJIQVNIX0dPU1QxMl8yNTYsIEZfTEU2NCwgMzIsICJHT1NUMTItMjU2IiwgImdvc3QxMi0yNTYiIH07CityaGFzaF9pbmZvIGluZm9fZ29zdDEyXzUxMiA9IHsgUkhBU0hfR09TVDEyXzUxMiwgRl9MRTY0LCA2NCwgIkdPU1QxMi01MTIiLCAiZ29zdDEyLTUxMiIgfTsKK3JoYXNoX2luZm8gaW5mb19nb3N0OTQgPSB7IFJIQVNIX0dPU1Q5NCwgICAgICAgRl9MRTMyLCAzMiwgIkdPU1Q5NCIsICJnb3N0OTQiIH07CityaGFzaF9pbmZvIGluZm9fZ29zdDk0cHJvID0geyBSSEFTSF9HT1NUOTRfQ1JZUFRPUFJPLCBGX0xFMzIsIDMyLCAiR09TVDk0LUNSWVBUT1BSTyIsICJnb3N0OTQtY3J5cHRvcHJvIiB9Owogcmhhc2hfaW5mbyBpbmZvX2hhczE2MCA9IHsgUkhBU0hfSEFTMTYwLCAgICAgRl9MRTMyLCAyMCwgIkhBUy0xNjAiLCAiaGFzMTYwIiB9Owogcmhhc2hfaW5mbyBpbmZvX3NuZjEyOCA9IHsgUkhBU0hfU05FRlJVMTI4LCAgRl9CRTMyLCAxNiwgIlNORUZSVS0xMjgiLCAic25lZnJ1MTI4IiB9Owogcmhhc2hfaW5mbyBpbmZvX3NuZjI1NiA9IHsgUkhBU0hfU05FRlJVMjU2LCAgRl9CRTMyLCAzMiwgIlNORUZSVS0yNTYiLCAic25lZnJ1MjU2IiB9OwpAQCAtMTE3LDkgKzExOSwxMCBAQAogI2RlZmluZSB1cGQobmFtZSkgKChwdXBkYXRlX3QpKG5hbWUjI191cGRhdGUpKQogI2RlZmluZSBmaW4obmFtZSkgKChwZmluYWxfdCkobmFtZSMjX2ZpbmFsKSkKICNkZWZpbmUgaXVmKG5hbWUpIGluaShuYW1lKSwgdXBkKG5hbWUpLCBmaW4obmFtZSkKKyNkZWZpbmUgaXVmMihuYW1lMSwgbmFtZTIpIGluaShuYW1lMSksIHVwZChuYW1lMiksIGZpbihuYW1lMikKICNkZWZpbmUgZGl1ZihuYW1lKSBkZ3NoZnQobmFtZSksIGluaShuYW1lKSwgdXBkKG5hbWUpLCBmaW4obmFtZSkKIAotLyogaW5mb3JtYXRpb24gYWJvdXQgYWxsIGhhc2hlcyAqLworLyogaW5mb3JtYXRpb24gYWJvdXQgYWxsIHN1cHBvcnRlZCBoYXNoIGZ1bmN0aW9ucyAqLwogcmhhc2hfaGFzaF9pbmZvIHJoYXNoX2hhc2hfaW5mb19kZWZhdWx0W1JIQVNIX0hBU0hfQ09VTlRdID0KIHsKICNpZiAwCkBAIC0xMzUsMjggKzEzOCwzNSBAQAogCXsgJmluZm9fYWljaCwgc2l6ZW9mKGFpY2hfY3R4KSwgZGdzaGZ0MihhaWNoLCBzaGExX2NvbnRleHQuaGFzaCksIGl1ZihyaGFzaF9haWNoKSwgKHBjbGVhbnVwX3Qpcmhhc2hfYWljaF9jbGVhbnVwIH0sIC8qIDE2MCBiaXQgKi8KIAl7ICZpbmZvX3doaXJscG9vbCwgc2l6ZW9mKHdoaXJscG9vbF9jdHgpLCBkZ3NoZnQod2hpcmxwb29sKSwgaXVmKHJoYXNoX3doaXJscG9vbCksIDAgfSwgLyogNTEyIGJpdCAqLwogCXsgJmluZm9fcm1kMTYwLCBzaXplb2YocmlwZW1kMTYwX2N0eCksIGRnc2hmdChyaXBlbWQxNjApLCBpdWYocmhhc2hfcmlwZW1kMTYwKSwgMCB9LCAvKiAxNjAgYml0ICovCi0JeyAmaW5mb19nb3N0LCBzaXplb2YoZ29zdF9jdHgpLCBkZ3NoZnQoZ29zdCksIGl1ZihyaGFzaF9nb3N0KSwgMCB9LCAvKiAyNTYgYml0ICovCi0JeyAmaW5mb19nb3N0cHJvLCBzaXplb2YoZ29zdF9jdHgpLCBkZ3NoZnQoZ29zdCksIGluaShyaGFzaF9nb3N0X2NyeXB0b3BybyksIHVwZChyaGFzaF9nb3N0KSwgZmluKHJoYXNoX2dvc3QpLCAwIH0sIC8qIDI1NiBiaXQgKi8KKwl7ICZpbmZvX2dvc3Q5NCwgc2l6ZW9mKGdvc3Q5NF9jdHgpLCBkZ3NoZnQoZ29zdDk0KSwgaXVmKHJoYXNoX2dvc3Q5NCksIDAgfSwgLyogMjU2IGJpdCAqLworCXsgJmluZm9fZ29zdDk0cHJvLCBzaXplb2YoZ29zdDk0X2N0eCksIGRnc2hmdChnb3N0OTQpLCBpdWYyKHJoYXNoX2dvc3Q5NF9jcnlwdG9wcm8sIHJoYXNoX2dvc3Q5NCksIDAgfSwgLyogMjU2IGJpdCAqLwogCXsgJmluZm9faGFzMTYwLCBzaXplb2YoaGFzMTYwX2N0eCksIGRnc2hmdChoYXMxNjApLCBpdWYocmhhc2hfaGFzMTYwKSwgMCB9LCAvKiAxNjAgYml0ICovCi0JeyAmaW5mb19zbmYxMjgsIHNpemVvZihzbmVmcnVfY3R4KSwgZGdzaGZ0KHNuZWZydSksIGluaShyaGFzaF9zbmVmcnUxMjgpLCB1cGQocmhhc2hfc25lZnJ1KSwgZmluKHJoYXNoX3NuZWZydSksIDAgfSwgLyogMTI4IGJpdCAqLwotCXsgJmluZm9fc25mMjU2LCBzaXplb2Yoc25lZnJ1X2N0eCksIGRnc2hmdChzbmVmcnUpLCBpbmkocmhhc2hfc25lZnJ1MjU2KSwgdXBkKHJoYXNoX3NuZWZydSksIGZpbihyaGFzaF9zbmVmcnUpLCAwIH0sIC8qIDI1NiBiaXQgKi8KKwl7ICZpbmZvX2dvc3QxMl8yNTYsIHNpemVvZihnb3N0MTJfY3R4KSwgZGdzaGZ0Mihnb3N0MTIsIGgpICsgMzIsIGl1ZjIocmhhc2hfZ29zdDEyXzI1Niwgcmhhc2hfZ29zdDEyKSwgMCB9LCAvKiAyNTYgYml0ICovCisJeyAmaW5mb19nb3N0MTJfNTEyLCBzaXplb2YoZ29zdDEyX2N0eCksIGRnc2hmdDIoZ29zdDEyLCBoKSwgaXVmMihyaGFzaF9nb3N0MTJfNTEyLCByaGFzaF9nb3N0MTIpLCAwIH0sIC8qIDUxMiBiaXQgKi8KICNlbmRpZgotCXsgJmluZm9fc2hhMjI0LCBzaXplb2Yoc2hhMjU2X2N0eCksIGRnc2hmdChzaGEyNTYpLCBpbmkocmhhc2hfc2hhMjI0KSwgdXBkKHJoYXNoX3NoYTI1NiksIGZpbihyaGFzaF9zaGEyNTYpLCAwIH0sIC8qIDIyNCBiaXQgKi8KKwl7ICZpbmZvX3NoYTIyNCwgc2l6ZW9mKHNoYTI1Nl9jdHgpLCBkZ3NoZnQoc2hhMjU2KSwgaXVmMihyaGFzaF9zaGEyMjQsIHJoYXNoX3NoYTI1NiksIDAgfSwgLyogMjI0IGJpdCAqLwogCXsgJmluZm9fc2hhMjU2LCBzaXplb2Yoc2hhMjU2X2N0eCksIGRnc2hmdChzaGEyNTYpLCBpdWYocmhhc2hfc2hhMjU2KSwgMCB9LCAgLyogMjU2IGJpdCAqLwotCXsgJmluZm9fc2hhMzg0LCBzaXplb2Yoc2hhNTEyX2N0eCksIGRnc2hmdChzaGE1MTIpLCBpbmkocmhhc2hfc2hhMzg0KSwgdXBkKHJoYXNoX3NoYTUxMiksIGZpbihyaGFzaF9zaGE1MTIpLCAwIH0sIC8qIDM4NCBiaXQgKi8KKwl7ICZpbmZvX3NoYTM4NCwgc2l6ZW9mKHNoYTUxMl9jdHgpLCBkZ3NoZnQoc2hhNTEyKSwgaXVmMihyaGFzaF9zaGEzODQsIHJoYXNoX3NoYTUxMiksIDAgfSwgLyogMzg0IGJpdCAqLwogCXsgJmluZm9fc2hhNTEyLCBzaXplb2Yoc2hhNTEyX2N0eCksIGRnc2hmdChzaGE1MTIpLCBpdWYocmhhc2hfc2hhNTEyKSwgMCB9LCAgLyogNTEyIGJpdCAqLwogI2lmIDAKLQl7ICZpbmZvX2VkcjI1Niwgc2l6ZW9mKGVkb25yX2N0eCksIGRnc2hmdDIoZWRvbnIsIHUuZGF0YTI1Ni5oYXNoKSArIDMyLCBpdWYocmhhc2hfZWRvbnIyNTYpLCAwIH0sICAvKiAyNTYgYml0ICovCi0JeyAmaW5mb19lZHI1MTIsIHNpemVvZihlZG9ucl9jdHgpLCBkZ3NoZnQyKGVkb25yLCB1LmRhdGE1MTIuaGFzaCkgKyA2NCwgaXVmKHJoYXNoX2Vkb25yNTEyKSwgMCB9LCAgLyogNTEyIGJpdCAqLworCXsgJmluZm9fZWRyMjU2LCBzaXplb2YoZWRvbnJfY3R4KSwgIGRnc2hmdDIoZWRvbnIsIHUuZGF0YTI1Ni5oYXNoKSArIDMyLCBpdWYocmhhc2hfZWRvbnIyNTYpLCAwIH0sICAvKiAyNTYgYml0ICovCisJeyAmaW5mb19lZHI1MTIsIHNpemVvZihlZG9ucl9jdHgpLCAgZGdzaGZ0MihlZG9uciwgdS5kYXRhNTEyLmhhc2gpICsgNjQsIGl1ZihyaGFzaF9lZG9ucjUxMiksIDAgfSwgIC8qIDUxMiBiaXQgKi8KICNlbmRpZgotCXsgJmluZm9fc2hhM18yMjQsIHNpemVvZihzaGEzX2N0eCksIGRnc2hmdChzaGEzKSwgaW5pKHJoYXNoX3NoYTNfMjI0KSwgdXBkKHJoYXNoX3NoYTMpLCBmaW4ocmhhc2hfc2hhMyksIDAgfSwgLyogMjI0IGJpdCAqLwotCXsgJmluZm9fc2hhM18yNTYsIHNpemVvZihzaGEzX2N0eCksIGRnc2hmdChzaGEzKSwgaW5pKHJoYXNoX3NoYTNfMjU2KSwgdXBkKHJoYXNoX3NoYTMpLCBmaW4ocmhhc2hfc2hhMyksIDAgfSwgLyogMjU2IGJpdCAqLwotCXsgJmluZm9fc2hhM18zODQsIHNpemVvZihzaGEzX2N0eCksIGRnc2hmdChzaGEzKSwgaW5pKHJoYXNoX3NoYTNfMzg0KSwgdXBkKHJoYXNoX3NoYTMpLCBmaW4ocmhhc2hfc2hhMyksIDAgfSwgLyogMzg0IGJpdCAqLwotCXsgJmluZm9fc2hhM181MTIsIHNpemVvZihzaGEzX2N0eCksIGRnc2hmdChzaGEzKSwgaW5pKHJoYXNoX3NoYTNfNTEyKSwgdXBkKHJoYXNoX3NoYTMpLCBmaW4ocmhhc2hfc2hhMyksIDAgfSwgLyogNTEyIGJpdCAqLworCXsgJmluZm9fc2hhM18yMjQsIHNpemVvZihzaGEzX2N0eCksIGRnc2hmdChzaGEzKSwgaXVmMihyaGFzaF9zaGEzXzIyNCwgcmhhc2hfc2hhMyksIDAgfSwgLyogMjI0IGJpdCAqLworCXsgJmluZm9fc2hhM18yNTYsIHNpemVvZihzaGEzX2N0eCksIGRnc2hmdChzaGEzKSwgaXVmMihyaGFzaF9zaGEzXzI1Niwgcmhhc2hfc2hhMyksIDAgfSwgLyogMjU2IGJpdCAqLworCXsgJmluZm9fc2hhM18zODQsIHNpemVvZihzaGEzX2N0eCksIGRnc2hmdChzaGEzKSwgaXVmMihyaGFzaF9zaGEzXzM4NCwgcmhhc2hfc2hhMyksIDAgfSwgLyogMzg0IGJpdCAqLworCXsgJmluZm9fc2hhM181MTIsIHNpemVvZihzaGEzX2N0eCksIGRnc2hmdChzaGEzKSwgaXVmMihyaGFzaF9zaGEzXzUxMiwgcmhhc2hfc2hhMyksIDAgfSwgLyogNTEyIGJpdCAqLworI2lmIDAKKwl7ICZpbmZvX2NyYzMyYywgc2l6ZW9mKHVpbnQzMl90KSwgMCwgaXVmKHJoYXNoX2NyYzMyYyksIDAgfSwgLyogMzIgYml0ICovCisJeyAmaW5mb19zbmYxMjgsIHNpemVvZihzbmVmcnVfY3R4KSwgZGdzaGZ0KHNuZWZydSksIGl1ZjIocmhhc2hfc25lZnJ1MTI4LCByaGFzaF9zbmVmcnUpLCAwIH0sIC8qIDEyOCBiaXQgKi8KKwl7ICZpbmZvX3NuZjI1Niwgc2l6ZW9mKHNuZWZydV9jdHgpLCBkZ3NoZnQoc25lZnJ1KSwgaXVmMihyaGFzaF9zbmVmcnUyNTYsIHJoYXNoX3NuZWZydSksIDAgfSwgLyogMjU2IGJpdCAqLworI2VuZGlmCiB9OwogCiAvKioKICAqIEluaXRpYWxpemUgcmVxdWVzdGVkIGFsZ29yaXRobXMuCisgKgorICogQHBhcmFtIG1hc2sgaWRzIG9mIGhhc2ggc3VtcyB0byBpbml0aWFsaXplCiAgKi8KIHZvaWQgcmhhc2hfaW5pdF9hbGdvcml0aG1zKHVuc2lnbmVkIG1hc2spCiB7CkBAIC0xNjUsMTUgKzE3NSwyNiBAQAogCS8qIHZlcmlmeSB0aGF0IFJIQVNIX0hBU0hfQ09VTlQgaXMgdGhlIGluZGV4IG9mIHRoZSBtYWpvciBiaXQgb2YgUkhBU0hfQUxMX0hBU0hFUyAqLwogCWFzc2VydCgxID09IChSSEFTSF9BTExfSEFTSEVTID4+IChSSEFTSF9IQVNIX0NPVU5UIC0gMSkpKTsKIAotI2lmZGVmIEdFTkVSQVRFX0NSQzMyX1RBQkxFCi0Jcmhhc2hfY3JjMzJfaW5pdF90YWJsZSgpOwotI2VuZGlmCi0jaWZkZWYgR0VORVJBVEVfR09TVF9MT09LVVBfVEFCTEUKLQlyaGFzaF9nb3N0X2luaXRfdGFibGUoKTsKKyNpZmRlZiBHRU5FUkFURV9HT1NUOTRfTE9PS1VQX1RBQkxFCisJcmhhc2hfZ29zdDk0X2luaXRfdGFibGUoKTsKICNlbmRpZgogCXJoYXNoX3VuaW5pdGlhbGl6ZWRfYWxnb3JpdGhtcyA9IDA7CiB9CiAKKy8qKgorICogUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIGhhc2ggZnVuY3Rpb24gYnkgaXRzIGhhc2hfaWQuCisgKgorICogQHBhcmFtIGhhc2hfaWQgdGhlIGlkIG9mIGhhc2ggYWxnb3JpdGhtCisgKiBAcmV0dXJuIHBvaW50ZXIgdG8gdGhlIHJoYXNoX2luZm8gc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIGluZm9ybWF0aW9uCisgKi8KK2NvbnN0IHJoYXNoX2luZm8qIHJoYXNoX2luZm9fYnlfaWQodW5zaWduZWQgaGFzaF9pZCkKK3sKKwloYXNoX2lkICY9IFJIQVNIX0FMTF9IQVNIRVM7CisJLyogY2hlY2sgdGhhdCBvbmUgYW5kIG9ubHkgb25lIGJpdCBpcyBzZXQgKi8KKwlpZiAoIWhhc2hfaWQgfHwgKGhhc2hfaWQgJiAoaGFzaF9pZCAtIDEpKSAhPSAwKSByZXR1cm4gTlVMTDsKKwlyZXR1cm4gcmhhc2hfaW5mb190YWJsZVtyaGFzaF9jdHooaGFzaF9pZCldLmluZm87Cit9CisKICNpZiAwCiAvKiBDUkMzMiBoZWxwZXIgZnVuY3Rpb25zICovCiAKQEAgLTIxNyw0ICsyMzgsNDUgQEAKIAlyZXN1bHRbMl0gPSAodW5zaWduZWQgY2hhcikoKmNyYzMyID4+IDgpLCByZXN1bHRbM10gPSAodW5zaWduZWQgY2hhcikoKmNyYzMyKTsKICNlbmRpZgogfQorCisvKioKKyAqIEluaXRpYWxpemUgY3JjMzJjIGhhc2guCisgKgorICogQHBhcmFtIGNyYzMyYyBwb2ludGVyIHRvIHRoZSBoYXNoIHRvIGluaXRpYWxpemUKKyAqLworc3RhdGljIHZvaWQgcmhhc2hfY3JjMzJjX2luaXQodWludDMyX3QqIGNyYzMyYykKK3sKKwkqY3JjMzJjID0gMDsgLyogbm90ZTogY29udGV4dCBzaXplIGlzIHNpemVvZih1aW50MzJfdCkgKi8KK30KKworLyoqCisgKiBDYWxjdWxhdGUgbWVzc2FnZSBDUkMzMkMgaGFzaC4KKyAqIENhbiBiZSBjYWxsZWQgcmVwZWF0ZWRseSB3aXRoIGNodW5rcyBvZiB0aGUgbWVzc2FnZSB0byBiZSBoYXNoZWQuCisgKgorICogQHBhcmFtIGNyYzMyYyBwb2ludGVyIHRvIHRoZSBoYXNoCisgKiBAcGFyYW0gbXNnIG1lc3NhZ2UgY2h1bmsKKyAqIEBwYXJhbSBzaXplIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSBjaHVuaworICovCitzdGF0aWMgdm9pZCByaGFzaF9jcmMzMmNfdXBkYXRlKHVpbnQzMl90KiBjcmMzMmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1zZywgc2l6ZV90IHNpemUpCit7CisJKmNyYzMyYyA9IHJoYXNoX2dldF9jcmMzMmMoKmNyYzMyYywgbXNnLCBzaXplKTsKK30KKworLyoqCisgKiBTdG9yZSBjYWxjdWxhdGVkIGhhc2ggaW50byB0aGUgZ2l2ZW4gYXJyYXkuCisgKgorICogQHBhcmFtIGNyYzMyYyBwb2ludGVyIHRvIHRoZSBjdXJyZW50IGhhc2ggdmFsdWUKKyAqIEBwYXJhbSByZXN1bHQgY2FsY3VsYXRlZCBoYXNoIGluIGJpbmFyeSBmb3JtCisgKi8KK3N0YXRpYyB2b2lkIHJoYXNoX2NyYzMyY19maW5hbCh1aW50MzJfdCogY3JjMzJjLCB1bnNpZ25lZCBjaGFyKiByZXN1bHQpCit7CisjaWYgZGVmaW5lZChDUFVfSUEzMikgfHwgZGVmaW5lZChDUFVfWDY0KQorCS8qIGludGVsIENQVXMgc3VwcG9ydCBhc3NpZ21lbnQgd2l0aCBub24gMzItYml0IGFsaWduZWQgcG9pbnRlcnMgKi8KKwkqKHVuc2lnbmVkKilyZXN1bHQgPSBiZTJtZV8zMigqY3JjMzJjKTsKKyNlbHNlCisJLyogY29ycmVjdCBzYXZpbmcgQmlnRW5kaWFuIGludGVnZXIgb24gYWxsIGFyY2hzICovCisJcmVzdWx0WzBdID0gKHVuc2lnbmVkIGNoYXIpKCpjcmMzMmMgPj4gMjQpLCByZXN1bHRbMV0gPSAodW5zaWduZWQgY2hhcikoKmNyYzMyYyA+PiAxNik7CisJcmVzdWx0WzJdID0gKHVuc2lnbmVkIGNoYXIpKCpjcmMzMmMgPj4gOCksIHJlc3VsdFszXSA9ICh1bnNpZ25lZCBjaGFyKSgqY3JjMzJjKTsKKyNlbmRpZgorfQogI2VuZGlmCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9hbGdvcml0aG1zLmggYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9hbGdvcml0aG1zLmgKaW5kZXggNGRiMjUxNy4uMDFkZGE4OCAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvYWxnb3JpdGhtcy5oCisrKyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL2FsZ29yaXRobXMuaApAQCAtMiw5ICsyLDkgQEAKICNpZm5kZWYgUkhBU0hfQUxHT1JJVEhNU19ICiAjZGVmaW5lIFJIQVNIX0FMR09SSVRITVNfSAogCi0jaW5jbHVkZSA8c3RkZGVmLmg+IC8qIGZvciBwdHJkaWZmX3QgKi8KICNpbmNsdWRlICJyaGFzaC5oIgogI2luY2x1ZGUgImJ5dGVfb3JkZXIuaCIKKyNpbmNsdWRlIDxzdGRkZWYuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTE1LDggKzE1LDQwIEBACiAjIGRlZmluZSBSSEFTSF9BUEkKICNlbmRpZgogCisvKioKKyAqIEJpdCBmbGFnOiBkZWZhdWx0IGhhc2ggb3V0cHV0IGZvcm1hdCBpcyBiYXNlMzIuCisgKi8KKyNkZWZpbmUgUkhBU0hfSU5GT19CQVNFMzIgMQorCisvKioKKyAqIEluZm9ybWF0aW9uIGFib3V0IGEgaGFzaCBmdW5jdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qgcmhhc2hfaW5mbworeworCS8qKgorCSAqIEhhc2ggZnVuY3Rpb24gaW5kZW50aWZpZXIuCisJICovCisJdW5zaWduZWQgaGFzaF9pZDsKKwkvKioKKwkgKiBGbGFncyBiaXQtbWFzaywgaW5jbHVkaW5nIFJIQVNIX0lORk9fQkFTRTMyIGJpdC4KKwkgKi8KKwl1bnNpZ25lZCBmbGFnczsKKwkvKioKKwkgVGhlIHNpemUgb2Ygb2YgdGhlIHJhdyBtZXNzYWdlIGRpZ2VzdCBpbiBieXRlcy4KKwkgKi8KKwlzaXplX3QgZGlnZXN0X3NpemU7CisJLyoqCisJICogVGhlIGhhc2ggZnVuY3Rpb24gbmFtZS4KKwkgKi8KKwljb25zdCBjaGFyKiBuYW1lOworCS8qKgorCSAqIFRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZW50ZXIgbmFtZSBpbiBhIG1hZ25ldCBsaW5rLgorCSAqLworCWNvbnN0IGNoYXIqIG1hZ25ldF9uYW1lOworfSByaGFzaF9pbmZvOworCiB0eXBlZGVmIHZvaWQgKCpwaW5pdF90KSh2b2lkKik7Ci10eXBlZGVmIHZvaWQgKCpwdXBkYXRlX3QpKHZvaWQgKmN0eCwgY29uc3Qgdm9pZCogbXNnLCBzaXplX3Qgc2l6ZSk7Cit0eXBlZGVmIHZvaWQgKCpwdXBkYXRlX3QpKHZvaWQqIGN0eCwgY29uc3Qgdm9pZCogbXNnLCBzaXplX3Qgc2l6ZSk7CiB0eXBlZGVmIHZvaWQgKCpwZmluYWxfdCkodm9pZCosIHVuc2lnbmVkIGNoYXIqKTsKIHR5cGVkZWYgdm9pZCAoKnBjbGVhbnVwX3QpKHZvaWQqKTsKIApAQCAtMjUsNyArNTcsNyBAQAogICovCiB0eXBlZGVmIHN0cnVjdCByaGFzaF9oYXNoX2luZm8KIHsKLQlyaGFzaF9pbmZvICppbmZvOworCXJoYXNoX2luZm8qIGluZm87CiAJc2l6ZV90IGNvbnRleHRfc2l6ZTsKIAlwdHJkaWZmX3QgIGRpZ2VzdF9kaWZmOwogCXBpbml0X3QgICAgaW5pdDsKQEAgLTQwLDcgKzcyLDcgQEAKIHR5cGVkZWYgc3RydWN0IHJoYXNoX3ZlY3Rvcl9pdGVtCiB7CiAJc3RydWN0IHJoYXNoX2hhc2hfaW5mbyogaGFzaF9pbmZvOwotCXZvaWQgKmNvbnRleHQ7CisJdm9pZCogY29udGV4dDsKIH0gcmhhc2hfdmVjdG9yX2l0ZW07CiAKIC8qKgpAQCAtNTIsOCArODQsOSBAQAogCXVuc2lnbmVkIGhhc2hfdmVjdG9yX3NpemU7IC8qIG51bWJlciBvZiBjb250YWluZWQgaGFzaCBzdW1zICovCiAJdW5zaWduZWQgZmxhZ3M7CiAJdW5zaWduZWQgc3RhdGU7Ci0Jdm9pZCAqY2FsbGJhY2ssICpjYWxsYmFja19kYXRhOwotCXZvaWQgKmJ0X2N0eDsKKwl2b2lkKiBjYWxsYmFjazsKKwl2b2lkKiBjYWxsYmFja19kYXRhOworCXZvaWQqIGJ0X2N0eDsKIAlyaGFzaF92ZWN0b3JfaXRlbSB2ZWN0b3JbMV07IC8qIGNvbnRleHRzIG9mIGNvbnRhaW5lZCBoYXNoIHN1bXMgKi8KIH0gcmhhc2hfY29udGV4dF9leHQ7CiAKQEAgLTYzLDYgKzk2LDcgQEAKIGV4dGVybiB1bnNpZ25lZCByaGFzaF91bmluaXRpYWxpemVkX2FsZ29yaXRobXM7CiAKIGV4dGVybiByaGFzaF9pbmZvIGluZm9fY3JjMzI7CitleHRlcm4gcmhhc2hfaW5mbyBpbmZvX2NyYzMyYzsKIGV4dGVybiByaGFzaF9pbmZvIGluZm9fbWQ0OwogZXh0ZXJuIHJoYXNoX2luZm8gaW5mb19tZDU7CiBleHRlcm4gcmhhc2hfaW5mbyBpbmZvX3NoYTE7CkBAIC05NSw3ICsxMjksNyBAQAogI2RlZmluZSBGX1NXQVA2NCA0CiAKIC8qIGRlZmluZSBlbmRpYW5uZXNzIGZsYWdzICovCi0jaWZuZGVmIENQVV9CSUdfRU5ESUFOCisjaWYgSVNfTElUVExFX0VORElBTgogI2RlZmluZSBGX0xFMzIgMAogI2RlZmluZSBGX0xFNjQgMAogI2RlZmluZSBGX0JFMzIgRl9TV0FQMzIKQEAgLTEwOCw2ICsxNDIsNyBAQAogI2VuZGlmCiAKIHZvaWQgcmhhc2hfaW5pdF9hbGdvcml0aG1zKHVuc2lnbmVkIG1hc2spOworY29uc3Qgcmhhc2hfaW5mbyogcmhhc2hfaW5mb19ieV9pZCh1bnNpZ25lZCBoYXNoX2lkKTsgLyogZ2V0IGhhc2ggc3VtIGluZm8gYnkgaGFzaCBpZCAqLwogCiAjaWYgZGVmaW5lZChPUEVOU1NMX1JVTlRJTUUpICYmICFkZWZpbmVkKFVTRV9PUEVOU1NMKQogIyBkZWZpbmUgVVNFX09QRU5TU0wKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL2J5dGVfb3JkZXIuYyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL2J5dGVfb3JkZXIuYwppbmRleCA4Y2U2ZmM4Li5kZTJjNTgzIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9ieXRlX29yZGVyLmMKKysrIGIvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvYnl0ZV9vcmRlci5jCkBAIC0xLDIxICsxLDIxIEBACiAvKiBieXRlX29yZGVyLmMgLSBieXRlIG9yZGVyIHJlbGF0ZWQgcGxhdGZvcm0gZGVwZW5kZW50IHJvdXRpbmVzLAogICoKLSAqIENvcHlyaWdodDogMjAwOC0yMDEyIEFsZWtzZXkgS3JhdmNoZW5rbyA8cmhhc2guYWRtaW5AZ21haWwuY29tPgorICogQ29weXJpZ2h0IChjKSAyMDA4LCBBbGVrc2V5IEtyYXZjaGVua28gPHJoYXNoLmFkbWluQGdtYWlsLmNvbT4KICAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCAgZnJlZSBvZiBjaGFyZ2UsICB0byBhbnkgcGVyc29uICBvYnRhaW5pbmcgYQotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sICBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCi0gKiB0aGUgcmlnaHRzIHRvICB1c2UsIGNvcHksIG1vZGlmeSwgIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAotICogYW5kL29yIHNlbGwgY29waWVzICBvZiAgdGhlIFNvZnR3YXJlLCAgYW5kIHRvIHBlcm1pdCAgcGVyc29ucyAgdG8gd2hvbSB0aGUKLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzby4KKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQorICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgogICoKLSAqIFRoaXMgcHJvZ3JhbSAgaXMgIGRpc3RyaWJ1dGVkICBpbiAgdGhlICBob3BlICB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgYnV0Ci0gKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQotICogb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBVc2UgdGhpcyBwcm9ncmFtICBhdCAgeW91ciBvd24gcmlzayEKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRICisgKiBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSAgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgIE1FUkNIQU5UQUJJTElUWQorICogQU5EIEZJVE5FU1MuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKKyAqIElORElSRUNULCAgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTICBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NCisgKiBMT1NTIE9GIFVTRSwgIERBVEEgT1IgUFJPRklUUywgIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCAgTkVHTElHRU5DRQorICogT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCAgQVJJU0lORyBPVVQgT0YgIE9SIElOIENPTk5FQ1RJT04gIFdJVEggVEhFIFVTRSAgT1IKKyAqIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAgKi8KICNpbmNsdWRlICJieXRlX29yZGVyLmgiCiAKLSNpZiAhKF9fR05VQ19fID49IDQgfHwgKF9fR05VQ19fID09MyAmJiBfX0dOVUNfTUlOT1JfXyA+PSA0KSkgLyogaWYgIUdDQyBvciBHQ0MgPCA0LjMgKi8KKyNpZm5kZWYgcmhhc2hfY3R6CiAKICMgIGlmIF9NU0NfVkVSID49IDEzMDAgJiYgKF9NX0lYODYgfHwgX01fQU1ENjQgfHwgX01fSUE2NCkgLyogaWYgTVNWQysrID49IDIwMDIgb24geDg2L3g2NCAqLwogIyAgaW5jbHVkZSA8aW50cmluLmg+CkBAIC01OSw3ICs1OSw3IEBACiAJcmV0dXJuICh1bnNpZ25lZCliaXRfcG9zWygodWludDMyX3QpKCh4ICYgLXgpICogMHgwNzdDQjUzMVUpKSA+PiAyN107CiB9CiAjICBlbmRpZiAvKiBfTVNDX1ZFUiA+PSAxMzAwLi4uICovCi0jZW5kaWYgLyogIShHQ0MgPj0gNC4zKSAqLworI2VuZGlmIC8qIHJoYXNoX2N0eiAqLwogCiAvKioKICAqIENvcHkgYSBtZW1vcnkgYmxvY2sgd2l0aCBzaW11bHRhbmVvdXMgZXhjaGFuZ2luZyBieXRlIG9yZGVyLgpAQCAtNzksMTAgKzc5LDEyIEBACiAJCWNvbnN0IHVpbnQzMl90KiBzcmMgPSAoY29uc3QgdWludDMyX3QqKWZyb207CiAJCWNvbnN0IHVpbnQzMl90KiBlbmQgPSAoY29uc3QgdWludDMyX3QqKSgoY29uc3QgY2hhciopc3JjICsgbGVuZ3RoKTsKIAkJdWludDMyX3QqIGRzdCA9ICh1aW50MzJfdCopKChjaGFyKil0byArIGluZGV4KTsKLQkJd2hpbGUgKHNyYyA8IGVuZCkgKihkc3QrKykgPSBic3dhcF8zMiggKihzcmMrKykgKTsKKwkJZm9yICg7IHNyYyA8IGVuZDsgZHN0KyssIHNyYysrKQorCQkJKmRzdCA9IGJzd2FwXzMyKCpzcmMpOwogCX0gZWxzZSB7CiAJCWNvbnN0IGNoYXIqIHNyYyA9IChjb25zdCBjaGFyKilmcm9tOwotCQlmb3IgKGxlbmd0aCArPSBpbmRleDsgKHNpemVfdClpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykgKChjaGFyKil0bylbaW5kZXggXiAzXSA9ICooc3JjKyspOworCQlmb3IgKGxlbmd0aCArPSBpbmRleDsgKHNpemVfdClpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykKKwkJCSgoY2hhciopdG8pW2luZGV4IF4gM10gPSAqKHNyYysrKTsKIAl9CiB9CiAKQEAgLTE0MSwxMCArMTQzLDMxIEBACiAgKiBAcGFyYW0gYXJyICAgIHRoZSBhcnJheSB0byBwcm9jZXNzCiAgKiBAcGFyYW0gbGVuZ3RoIGFycmF5IGxlbmd0aAogICovCi12b2lkIHJoYXNoX3UzMl9tZW1fc3dhcCh1bnNpZ25lZCAqYXJyLCBpbnQgbGVuZ3RoKQordm9pZCByaGFzaF91MzJfbWVtX3N3YXAodW5zaWduZWQqIGFyciwgaW50IGxlbmd0aCkKIHsKIAl1bnNpZ25lZCogZW5kID0gYXJyICsgbGVuZ3RoOwogCWZvciAoOyBhcnIgPCBlbmQ7IGFycisrKSB7CiAJCSphcnIgPSBic3dhcF8zMigqYXJyKTsKIAl9CiB9CisKKyNpZmRlZiBIQVNfSU5URUxfQ1BVSUQKKyNpbmNsdWRlIDxjcHVpZC5oPgorCitzdGF0aWMgdWludDY0X3QgZ2V0X2NwdWlkX2ZlYXR1cmVzKHZvaWQpCit7CisJdWludDMyX3QgdG1wLCBlZHgsIGVjeDsKKwlpZiAoX19nZXRfY3B1aWQoMSwgJnRtcCwgJnRtcCwgJmVjeCwgJmVkeCkpCisJCXJldHVybiAoKCgodWludDY0X3QpZWN4KSA8PCAzMikgXiBlZHgpOworCXJldHVybiAwOworfQorCitpbnQgaGFzX2NwdV9mZWF0dXJlKHVuc2lnbmVkIGZlYXR1cmVfYml0KQoreworCXN0YXRpYyB1aW50NjRfdCBmZWF0dXJlczsKKwljb25zdCB1aW50NjRfdCBmZWF0dXJlID0gKCh1aW50NjRfdCkxKSA8PCBmZWF0dXJlX2JpdDsKKwlpZiAoIWZlYXR1cmVzKQorCQlmZWF0dXJlcyA9IChnZXRfY3B1aWRfZmVhdHVyZXMoKSB8IDEpOworCXJldHVybiAhIShmZWF0dXJlcyAmIGZlYXR1cmUpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9ieXRlX29yZGVyLmggYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9ieXRlX29yZGVyLmgKaW5kZXggZDM0YTAyMC4uYTU4MTc0YiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvYnl0ZV9vcmRlci5oCisrKyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL2J5dGVfb3JkZXIuaApAQCAtNCw2ICs0LDE5IEBACiAjaW5jbHVkZSAidXN0ZC5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCisjaWYgMAorI2lmIGRlZmluZWQoX19HTElCQ19fKQorIyBpbmNsdWRlIDxlbmRpYW4uaD4KKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbGlmIGRlZmluZWQgKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18pCisjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAtMjYsOCArMzksNiBAQAogIyBlbmRpZgogI2VuZGlmCiAKLQotLyogZGV0ZWN0IENQVSBlbmRpYW5uZXNzICovCiAjaW5jbHVkZSA8Y21fa3dpbWwuaD4KICNpZiBLV0lNTF9BQklfRU5ESUFOX0lEID09IEtXSU1MX0FCSV9FTkRJQU5fSURfTElUVExFCiAjIGRlZmluZSBDUFVfTElUVExFX0VORElBTgpAQCAtMzcsOCArNDgsNTMgQEAKICMgZGVmaW5lIENQVV9CSUdfRU5ESUFOCiAjIGRlZmluZSBJU19CSUdfRU5ESUFOIDEKICMgZGVmaW5lIElTX0xJVFRMRV9FTkRJQU4gMAorI2VuZGlmCisKKyNpZiAwCisjZGVmaW5lIFJIQVNIX0JZVEVfT1JERVJfTEUgMTIzNAorI2RlZmluZSBSSEFTSF9CWVRFX09SREVSX0JFIDQzMjEKKworI2lmIChkZWZpbmVkKF9fQllURV9PUkRFUikgJiYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU4pICYmIF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4pIHx8IFwKKyAgICAoZGVmaW5lZChfX0JZVEVfT1JERVJfXykgJiYgZGVmaW5lZChfX09SREVSX0xJVFRMRV9FTkRJQU5fXykgJiYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18pCisjICBkZWZpbmUgUkhBU0hfQllURV9PUkRFUiBSSEFTSF9CWVRFX09SREVSX0xFCisjZWxpZiAoZGVmaW5lZChfX0JZVEVfT1JERVIpICYmIGRlZmluZWQoX19CSUdfRU5ESUFOKSAmJiBfX0JZVEVfT1JERVIgPT0gX19CSUdfRU5ESUFOKSB8fCBcCisgICAgICAoZGVmaW5lZChfX0JZVEVfT1JERVJfXykgJiYgZGVmaW5lZChfX09SREVSX0JJR19FTkRJQU5fXykgJiYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9CSUdfRU5ESUFOX18pCisjICBkZWZpbmUgUkhBU0hfQllURV9PUkRFUiBSSEFTSF9CWVRFX09SREVSX0JFCisjZWxpZiBkZWZpbmVkKF9CWVRFX09SREVSKQorIyAgaWYgZGVmaW5lZChfTElUVExFX0VORElBTikgJiYgKF9CWVRFX09SREVSID09IF9MSVRUTEVfRU5ESUFOKQorIyAgICBkZWZpbmUgUkhBU0hfQllURV9PUkRFUiBSSEFTSF9CWVRFX09SREVSX0xFCisjICBlbGlmIGRlZmluZWQoX0JJR19FTkRJQU4pICYmIChfQllURV9PUkRFUiA9PSBfQklHX0VORElBTikKKyMgICAgZGVmaW5lIFJIQVNIX0JZVEVfT1JERVIgUkhBU0hfQllURV9PUkRFUl9CRQorIyAgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX0xJVFRMRV9FTkRJQU4pCisjICBkZWZpbmUgUkhBU0hfQllURV9PUkRFUiBSSEFTSF9CWVRFX09SREVSX0xFCisjZWxpZiBkZWZpbmVkKF9fc3VuKSAmJiBkZWZpbmVkKF9CSUdfRU5ESUFOKQorIyAgZGVmaW5lIFJIQVNIX0JZVEVfT1JERVIgUkhBU0hfQllURV9PUkRFUl9CRQorI2VuZGlmCisKKy8qIHRyeSBkZXRlY3RpbmcgZW5kaWFubmVzcyBieSBDUFUgKi8KKyNpZmRlZiBSSEFTSF9CWVRFX09SREVSCisjZWxpZiBkZWZpbmVkKENQVV9JQTMyKSB8fCBkZWZpbmVkKENQVV9YNjQpIHx8IGRlZmluZWQoX19pYTY0KSB8fCBkZWZpbmVkKF9faWE2NF9fKSB8fCBcCisgICAgICBkZWZpbmVkKF9fYWxwaGFfXykgfHwgZGVmaW5lZChfTV9BTFBIQSkgfHwgZGVmaW5lZCh2YXgpIHx8IGRlZmluZWQoTUlQU0VMKSB8fCBcCisgICAgICBkZWZpbmVkKF9BUk1fKSB8fCBkZWZpbmVkKF9fYXJtX18pCisjICBkZWZpbmUgUkhBU0hfQllURV9PUkRFUiBSSEFTSF9CWVRFX09SREVSX0xFCisjZWxpZiBkZWZpbmVkKF9fc3BhcmMpIHx8IGRlZmluZWQoX19zcGFyY19fKSB8fCBkZWZpbmVkKHNwYXJjKSB8fCBcCisgICAgICBkZWZpbmVkKF9BUkNIX1BQQykgfHwgZGVmaW5lZChfQVJDSF9QUEM2NCkgfHwgZGVmaW5lZChfUE9XRVIpIHx8IFwKKyAgICAgIGRlZmluZWQoX19QT1dFUlBDX18pIHx8IGRlZmluZWQoUE9XRVJQQykgfHwgZGVmaW5lZChfX3Bvd2VycGMpIHx8IFwKKyAgICAgIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBcCisgICAgICBkZWZpbmVkKF9faHB1eCkgIHx8IGRlZmluZWQoX01JUFNFQikgfHwgZGVmaW5lZChtYzY4MDAwKSB8fCBcCisgICAgICBkZWZpbmVkKF9fczM5MF9fKSB8fCBkZWZpbmVkKF9fczM5MHhfXykgfHwgZGVmaW5lZChzZWwpCisjIGRlZmluZSBSSEFTSF9CWVRFX09SREVSIFJIQVNIX0JZVEVfT1JERVJfQkUKICNlbHNlCi0jIGVycm9yICJDYW4ndCBkZXRlY3QgQ1BVIGFyY2hpdGVjaHR1cmUiCisjICBlcnJvciAiQ2FuJ3QgZGV0ZWN0IENQVSBhcmNoaXRlY2h0dXJlIgorI2VuZGlmCisKKyNkZWZpbmUgSVNfQklHX0VORElBTiAoUkhBU0hfQllURV9PUkRFUiA9PSBSSEFTSF9CWVRFX09SREVSX0JFKQorI2RlZmluZSBJU19MSVRUTEVfRU5ESUFOIChSSEFTSF9CWVRFX09SREVSID09IFJIQVNIX0JZVEVfT1JERVJfTEUpCisjZW5kaWYKKworI2lmbmRlZiBfX2hhc19idWlsdGluCisjIGRlZmluZSBfX2hhc19idWlsdGluKHgpIDAKICNlbmRpZgogCiAjZGVmaW5lIElTX0FMSUdORURfMzIocCkgKDAgPT0gKDMgJiAoKGNvbnN0IGNoYXIqKShwKSAtIChjb25zdCBjaGFyKikwKSkpCkBAIC01NiwxMSArMTEyLDIzIEBACiAjaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCiAjZGVmaW5lIEk2NCh4KSB4IyN1aTY0CiAjZWxzZQotI2RlZmluZSBJNjQoeCkgeCMjTEwKKyNkZWZpbmUgSTY0KHgpIHgjI1VMTAogI2VuZGlmCiAKLS8qIGNvbnZlcnQgYSBoYXNoIGZsYWcgdG8gaW5kZXggKi8KLSNpZiBfX0dOVUNfXyA+PSA0IHx8IChfX0dOVUNfXyA9PSAzICYmIF9fR05VQ19NSU5PUl9fID49IDQpIC8qIEdDQyA8IDMuNCAqLworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjZGVmaW5lIFJIQVNIX0lOTElORSBfX2lubGluZQorI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQorI2RlZmluZSBSSEFTSF9JTkxJTkUgaW5saW5lCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorI2RlZmluZSBSSEFTSF9JTkxJTkUgX19pbmxpbmVfXworI2Vsc2UKKyNkZWZpbmUgUkhBU0hfSU5MSU5FCisjZW5kaWYKKworLyogZGVmaW5lIHJoYXNoX2N0eiAtIGNvdW50IHRyYWxpbmcgemVybyBiaXRzICovCisjaWYgKGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDQgfHwgKF9fR05VQ19fID09IDMgJiYgX19HTlVDX01JTk9SX18gPj0gNCkpIHx8IFwKKyAgICAoZGVmaW5lZChfX2NsYW5nX18pICYmIF9faGFzX2J1aWx0aW4oX19idWlsdGluX2N0eikpCisvKiBHQ0MgPj0gMy40IG9yIGNsYW5nICovCiAjIGRlZmluZSByaGFzaF9jdHooeCkgX19idWlsdGluX2N0eih4KQogI2Vsc2UKIHVuc2lnbmVkIHJoYXNoX2N0eih1bnNpZ25lZCk7IC8qIGRlZmluZSBhcyBmdW5jdGlvbiAqLwpAQCAtNjksNDIgKzEzNywzMSBAQAogdm9pZCByaGFzaF9zd2FwX2NvcHlfc3RyX3RvX3UzMih2b2lkKiB0bywgaW50IGluZGV4LCBjb25zdCB2b2lkKiBmcm9tLCBzaXplX3QgbGVuZ3RoKTsKIHZvaWQgcmhhc2hfc3dhcF9jb3B5X3N0cl90b191NjQodm9pZCogdG8sIGludCBpbmRleCwgY29uc3Qgdm9pZCogZnJvbSwgc2l6ZV90IGxlbmd0aCk7CiB2b2lkIHJoYXNoX3N3YXBfY29weV91NjRfdG9fc3RyKHZvaWQqIHRvLCBjb25zdCB2b2lkKiBmcm9tLCBzaXplX3QgbGVuZ3RoKTsKLXZvaWQgcmhhc2hfdTMyX21lbV9zd2FwKHVuc2lnbmVkICpwLCBpbnQgbGVuZ3RoX2luX3UzMik7Cit2b2lkIHJoYXNoX3UzMl9tZW1fc3dhcCh1bnNpZ25lZCogcCwgaW50IGxlbmd0aF9pbl91MzIpOwogCi0jaWZuZGVmIF9faGFzX2J1aWx0aW4KLSMgZGVmaW5lIF9faGFzX2J1aWx0aW4oeCkgMAotI2VuZGlmCi0KLS8qIGRlZmluZSBic3dhcF8zMiAqLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoQ1BVX0lBMzIpICYmICFkZWZpbmVkKF9faTM4Nl9fKQotLyogZm9yIGludGVsIHg4NiBDUFUgKi8KLXN0YXRpYyBpbmxpbmUgdWludDMyX3QgYnN3YXBfMzIodWludDMyX3QgeCkgewotCV9fYXNtKCJic3dhcFx0JTAiIDogIj1yIiAoeCkgOiAiMCIgKHgpKTsKLQlyZXR1cm4geDsKLX0KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICAmJiAoX19HTlVDX18gPj0gNCkgJiYgKF9fR05VQ19fID4gNCB8fCBfX0dOVUNfTUlOT1JfXyA+PSAzKQotLyogZm9yIEdDQyA+PSA0LjMgKi8KKy8qIGJzd2FwIGRlZmluaXRpb25zICovCisjaWYgKGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA0KSAmJiAoX19HTlVDX18gPiA0IHx8IF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCBcCisgICAgKGRlZmluZWQoX19jbGFuZ19fKSAmJiBfX2hhc19idWlsdGluKF9fYnVpbHRpbl9ic3dhcDMyKSAmJiBfX2hhc19idWlsdGluKF9fYnVpbHRpbl9ic3dhcDY0KSkKKy8qIEdDQyA+PSA0LjMgb3IgY2xhbmcgKi8KICMgZGVmaW5lIGJzd2FwXzMyKHgpIF9fYnVpbHRpbl9ic3dhcDMyKHgpCi0jZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykgJiYgX19oYXNfYnVpbHRpbihfX2J1aWx0aW5fYnN3YXAzMikKLSMgZGVmaW5lIGJzd2FwXzMyKHgpIF9fYnVpbHRpbl9ic3dhcDMyKHgpCisjIGRlZmluZSBic3dhcF82NCh4KSBfX2J1aWx0aW5fYnN3YXA2NCh4KQogI2VsaWYgKF9NU0NfVkVSID4gMTMwMCkgJiYgKGRlZmluZWQoQ1BVX0lBMzIpIHx8IGRlZmluZWQoQ1BVX1g2NCkpIC8qIE1TIFZDICovCiAjIGRlZmluZSBic3dhcF8zMih4KSBfYnl0ZXN3YXBfdWxvbmcoKHVuc2lnbmVkIGxvbmcpeCkKLSNlbHNlCi0vKiBnZW5lcmFsIGJzd2FwXzMyIGRlZmluaXRpb24gKi8KLXN0YXRpYyB1aW50MzJfdCBic3dhcF8zMih1aW50MzJfdCB4KSB7Ci0JeCA9ICgoeCA8PCA4KSAmIDB4RkYwMEZGMDApIHwgKCh4ID4+IDgpICYgMHgwMEZGMDBGRik7Ci0JcmV0dXJuICh4ID4+IDE2KSB8ICh4IDw8IDE2KTsKLX0KLSNlbmRpZiAvKiBic3dhcF8zMiAqLwotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDQpICYmIChfX0dOVUNfXyA+IDQgfHwgX19HTlVDX01JTk9SX18gPj0gMykKLSMgZGVmaW5lIGJzd2FwXzY0KHgpIF9fYnVpbHRpbl9ic3dhcDY0KHgpCi0jZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykgJiYgX19oYXNfYnVpbHRpbihfX2J1aWx0aW5fYnN3YXA2NCkKLSMgZGVmaW5lIGJzd2FwXzY0KHgpIF9fYnVpbHRpbl9ic3dhcDY0KHgpCi0jZWxpZiAoX01TQ19WRVIgPiAxMzAwKSAmJiAoZGVmaW5lZChDUFVfSUEzMikgfHwgZGVmaW5lZChDUFVfWDY0KSkgLyogTVMgVkMgKi8KICMgZGVmaW5lIGJzd2FwXzY0KHgpIF9ieXRlc3dhcF91aW50NjQoKF9faW50NjQpeCkKICNlbHNlCi1zdGF0aWMgdWludDY0X3QgYnN3YXBfNjQodWludDY0X3QgeCkgeworLyogZmFsbGJhY2sgdG8gZ2VuZXJpYyBic3dhcCBkZWZpbml0aW9uICovCitzdGF0aWMgUkhBU0hfSU5MSU5FIHVpbnQzMl90IGJzd2FwXzMyKHVpbnQzMl90IHgpCit7CisjIGlmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoQ1BVX0lBMzIpICYmICFkZWZpbmVkKF9faTM4Nl9fKSAmJiAhZGVmaW5lZChSSEFTSF9OT19BU00pCisJX19hc20oImJzd2FwXHQlMCIgOiAiPXIiICh4KSA6ICIwIiAoeCkpOyAvKiBnY2MgeDg2IHZlcnNpb24gKi8KKwlyZXR1cm4geDsKKyMgZWxzZQorCXggPSAoKHggPDwgOCkgJiAweEZGMDBGRjAwdSkgfCAoKHggPj4gOCkgJiAweDAwRkYwMEZGdSk7CisJcmV0dXJuICh4ID4+IDE2KSB8ICh4IDw8IDE2KTsKKyMgZW5kaWYKK30KK3N0YXRpYyBSSEFTSF9JTkxJTkUgdWludDY0X3QgYnN3YXBfNjQodWludDY0X3QgeCkKK3sKIAl1bmlvbiB7CiAJCXVpbnQ2NF90IGxsOwogCQl1aW50MzJfdCBsWzJdOwpAQCAtMTE0LDkgKzE3MSw5IEBACiAJci5sWzFdID0gYnN3YXBfMzIody5sWzBdKTsKIAlyZXR1cm4gci5sbDsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIGJzd2FwIGRlZmluaXRpb25zICovCiAKLSNpZmRlZiBDUFVfQklHX0VORElBTgorI2lmIElTX0JJR19FTkRJQU4KICMgZGVmaW5lIGJlMm1lXzMyKHgpICh4KQogIyBkZWZpbmUgYmUybWVfNjQoeCkgKHgpCiAjIGRlZmluZSBsZTJtZV8zMih4KSBic3dhcF8zMih4KQpAQCAtMTI5LDcgKzE4Niw3IEBACiAjIGRlZmluZSBtZTY0X3RvX2JlX3N0cih0bywgZnJvbSwgbGVuZ3RoKSBtZW1jcHkoKHRvKSwgKGZyb20pLCAobGVuZ3RoKSkKICMgZGVmaW5lIG1lNjRfdG9fbGVfc3RyKHRvLCBmcm9tLCBsZW5ndGgpIHJoYXNoX3N3YXBfY29weV91NjRfdG9fc3RyKCh0byksIChmcm9tKSwgKGxlbmd0aCkpCiAKLSNlbHNlIC8qIENQVV9CSUdfRU5ESUFOICovCisjZWxzZSAvKiBJU19CSUdfRU5ESUFOICovCiAjIGRlZmluZSBiZTJtZV8zMih4KSBic3dhcF8zMih4KQogIyBkZWZpbmUgYmUybWVfNjQoeCkgYnN3YXBfNjQoeCkKICMgZGVmaW5lIGxlMm1lXzMyKHgpICh4KQpAQCAtMTQxLDcgKzE5OCw3IEBACiAjIGRlZmluZSBsZTY0X2NvcHkodG8sIGluZGV4LCBmcm9tLCBsZW5ndGgpIG1lbWNweSgodG8pICsgKGluZGV4KSwgKGZyb20pLCAobGVuZ3RoKSkKICMgZGVmaW5lIG1lNjRfdG9fYmVfc3RyKHRvLCBmcm9tLCBsZW5ndGgpIHJoYXNoX3N3YXBfY29weV91NjRfdG9fc3RyKCh0byksIChmcm9tKSwgKGxlbmd0aCkpCiAjIGRlZmluZSBtZTY0X3RvX2xlX3N0cih0bywgZnJvbSwgbGVuZ3RoKSBtZW1jcHkoKHRvKSwgKGZyb20pLCAobGVuZ3RoKSkKLSNlbmRpZiAvKiBDUFVfQklHX0VORElBTiAqLworI2VuZGlmIC8qIElTX0JJR19FTkRJQU4gKi8KIAogLyogUk9UTC9ST1RSIG1hY3JvcyByb3RhdGUgYSAzMi82NC1iaXQgd29yZCBsZWZ0L3JpZ2h0IGJ5IG4gYml0cyAqLwogI2RlZmluZSBST1RMMzIoZHdvcmQsIG4pICgoZHdvcmQpIDw8IChuKSBeICgoZHdvcmQpID4+ICgzMiAtIChuKSkpKQpAQCAtMTQ5LDYgKzIwNiwxNiBAQAogI2RlZmluZSBST1RMNjQocXdvcmQsIG4pICgocXdvcmQpIDw8IChuKSBeICgocXdvcmQpID4+ICg2NCAtIChuKSkpKQogI2RlZmluZSBST1RSNjQocXdvcmQsIG4pICgocXdvcmQpID4+IChuKSBeICgocXdvcmQpIDw8ICg2NCAtIChuKSkpKQogCisjZGVmaW5lIENQVV9GRUFUVVJFX1NTRTRfMiAoNTIpCisKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDMpKSBcCisJJiYgKGRlZmluZWQoQ1BVX1g2NCkgfHwgZGVmaW5lZChDUFVfSUEzMikpCisjIGRlZmluZSBIQVNfSU5URUxfQ1BVSUQKK2ludCBoYXNfY3B1X2ZlYXR1cmUodW5zaWduZWQgZmVhdHVyZV9iaXQpOworI2Vsc2UKKyMgZGVmaW5lIGhhc19jcHVfZmVhdHVyZSh4KSAoMCkKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0gLyogZXh0ZXJuICJDIiAqLwogI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9oZXguYyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL2hleC5jCmluZGV4IGM5NDExNDkuLmYwYmJmMDQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL2hleC5jCisrKyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL2hleC5jCkBAIC0xLDcxICsxLDU3IEBACiAvKiBoZXguYyAtIGNvbnZlcnNpb24gZm9yIGhleGFkZWNpbWFsIGFuZCBiYXNlMzIgc3RyaW5ncy4KICAqCi0gKiBDb3B5cmlnaHQ6IDIwMDgtMjAxMiBBbGVrc2V5IEtyYXZjaGVua28gPHJoYXNoLmFkbWluQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoYykgMjAwOCwgQWxla3NleSBLcmF2Y2hlbmtvIDxyaGFzaC5hZG1pbkBnbWFpbC5jb20+CiAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgIGZyZWUgb2YgY2hhcmdlLCAgdG8gYW55IHBlcnNvbiAgb2J0YWluaW5nIGEKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCAgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhlIHJpZ2h0cyB0byAgdXNlLCBjb3B5LCBtb2RpZnksICBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSAqIGFuZC9vciBzZWxsIGNvcGllcyAgb2YgIHRoZSBTb2Z0d2FyZSwgIGFuZCB0byBwZXJtaXQgIHBlcnNvbnMgIHRvIHdob20gdGhlCi0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28uCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4KICAqCi0gKiBUaGlzIHByb2dyYW0gIGlzICBkaXN0cmlidXRlZCAgaW4gIHRoZSAgaG9wZSAgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgIGJ1dAotICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKLSAqIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVXNlIHRoaXMgcHJvZ3JhbSAgYXQgIHlvdXIgb3duIHJpc2shCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAorICogUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GICBNRVJDSEFOVEFCSUxJVFkKKyAqIEFORCBGSVRORVNTLiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCisgKiBJTkRJUkVDVCwgIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQorICogTE9TUyBPRiBVU0UsICBEQVRBIE9SIFBST0ZJVFMsICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgIE5FR0xJR0VOQ0UKKyAqIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgIEFSSVNJTkcgT1VUIE9GICBPUiBJTiBDT05ORUNUSU9OICBXSVRIIFRIRSBVU0UgIE9SCisgKiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICovCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlICJoZXguaCIKLQotLyoqCi0qIENvbnZlcnQgYSBieXRlIHRvIGEgaGV4YWRlY2ltYWwgbnVtYmVyLiBUaGUgcmVzdWx0LCBjb25zaXN0aW5nIG9mIHR3bwotKiBoZXhhZGVjaW1hbCBkaWdpdHMgaXMgc3RvcmVkIGludG8gYSBidWZmZXIuCi0gKgotICogQHBhcmFtIGRlc3QgIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSB0d28gc3ltYm9scyBvZiBoZXggcmVwcmVzZW50YXRpb24KLSAqIEBwYXJhbSBieXRlIHRoZSBieXRlIHRvIGRlY29kZQotICogQHBhcmFtIHVwcGVyX2Nhc2UgZmxhZyB0byBwcmludCBzdHJpbmcgaW4gdXBwZXJjYXNlCi0gKiBAcmV0dXJuIHBvaW50ZXIgdG8gdGhlIGNoYXJhcmN0ZXIganVzdCBhZnRlciB0aGUgd3JpdHRlbiBudW1iZXIgKGRlc3QgKyAyKQotICovCi1jaGFyKiByaGFzaF9wcmludF9oZXhfYnl0ZShjaGFyICpkZXN0LCBjb25zdCB1bnNpZ25lZCBjaGFyIGJ5dGUsIGludCB1cHBlcl9jYXNlKQotewotCWNvbnN0IGNoYXIgYWRkID0gKHVwcGVyX2Nhc2UgPyAnQScgLSAxMCA6ICdhJyAtIDEwKTsKLQl1bnNpZ25lZCBjaGFyIGMgPSAoYnl0ZSA+PiA0KSAmIDE1OwotCSpkZXN0KysgPSAoYyA+IDkgPyBjICsgYWRkIDogYyArICcwJyk7Ci0JYyA9IGJ5dGUgJiAxNTsKLQkqZGVzdCsrID0gKGMgPiA5ID8gYyArIGFkZCA6IGMgKyAnMCcpOwotCXJldHVybiBkZXN0OwotfQorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKIC8qKgogICogU3RvcmUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYSBiaW5hcnkgc3RyaW5nIHRvIGdpdmVuIGJ1ZmZlci4KICAqCi0gKiBAcGFyYW0gZGVzdCB0aGUgYnVmZmVyIHRvIHJlY2VpdmUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24KKyAqIEBwYXJhbSBkc3QgdGhlIGJ1ZmZlciB0byByZWNlaXZlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uCiAgKiBAcGFyYW0gc3JjIGJpbmFyeSBzdHJpbmcKLSAqIEBwYXJhbSBsZW4gc3RyaW5nIGxlbmd0aAorICogQHBhcmFtIGxlbmd0aCBzdHJpbmcgbGVuZ3RoCiAgKiBAcGFyYW0gdXBwZXJfY2FzZSBmbGFnIHRvIHByaW50IHN0cmluZyBpbiB1cHBlcmNhc2UKICAqLwotdm9pZCByaGFzaF9ieXRlX3RvX2hleChjaGFyICpkZXN0LCBjb25zdCB1bnNpZ25lZCBjaGFyICpzcmMsIHVuc2lnbmVkIGxlbiwgaW50IHVwcGVyX2Nhc2UpCit2b2lkIHJoYXNoX2J5dGVfdG9faGV4KGNoYXIqIGRzdCwgY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBzaXplX3QgbGVuZ3RoLCBpbnQgdXBwZXJfY2FzZSkKIHsKLQl3aGlsZSAobGVuLS0gPiAwKSB7Ci0JCWRlc3QgPSByaGFzaF9wcmludF9oZXhfYnl0ZShkZXN0LCAqc3JjKyssIHVwcGVyX2Nhc2UpOworCWNvbnN0IGNoYXIgaGV4X2FkZCA9ICh1cHBlcl9jYXNlID8gJ0EnIC0gMTAgOiAnYScgLSAxMCk7CisJZm9yICg7IGxlbmd0aCA+IDA7IHNyYysrLCBsZW5ndGgtLSkgeworCQljb25zdCB1bnNpZ25lZCBjaGFyIGhpID0gKCpzcmMgPj4gNCkgJiAxNTsKKwkJY29uc3QgdW5zaWduZWQgY2hhciBsbyA9ICpzcmMgJiAxNTsKKwkJKmRzdCsrID0gKGhpID4gOSA/IGhpICsgaGV4X2FkZCA6IGhpICsgJzAnKTsKKwkJKmRzdCsrID0gKGxvID4gOSA/IGxvICsgaGV4X2FkZCA6IGxvICsgJzAnKTsKIAl9Ci0JKmRlc3QgPSAnXDAnOworCSpkc3QgPSAnXDAnOwogfQogCiAvKioKICAqIEVuY29kZSBhIGJpbmFyeSBzdHJpbmcgdG8gYmFzZTMyLgogICoKLSAqIEBwYXJhbSBkZXN0IHRoZSBidWZmZXIgdG8gc3RvcmUgcmVzdWx0CisgKiBAcGFyYW0gZHN0IHRoZSBidWZmZXIgdG8gc3RvcmUgcmVzdWx0CiAgKiBAcGFyYW0gc3JjIGJpbmFyeSBzdHJpbmcKLSAqIEBwYXJhbSBsZW4gc3RyaW5nIGxlbmd0aAorICogQHBhcmFtIGxlbmd0aCBzdHJpbmcgbGVuZ3RoCiAgKiBAcGFyYW0gdXBwZXJfY2FzZSBmbGFnIHRvIHByaW50IHN0cmluZyBpbiB1cHBlcmNhc2UKICAqLwotdm9pZCByaGFzaF9ieXRlX3RvX2Jhc2UzMihjaGFyKiBkZXN0LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmMsIHVuc2lnbmVkIGxlbiwgaW50IHVwcGVyX2Nhc2UpCit2b2lkIHJoYXNoX2J5dGVfdG9fYmFzZTMyKGNoYXIqIGRzdCwgY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBzaXplX3QgbGVuZ3RoLCBpbnQgdXBwZXJfY2FzZSkKIHsKIAljb25zdCBjaGFyIGEgPSAodXBwZXJfY2FzZSA/ICdBJyA6ICdhJyk7CiAJdW5zaWduZWQgc2hpZnQgPSAwOwogCXVuc2lnbmVkIGNoYXIgd29yZDsKLQljb25zdCB1bnNpZ25lZCBjaGFyKiBlID0gc3JjICsgbGVuOworCWNvbnN0IHVuc2lnbmVkIGNoYXIqIGUgPSBzcmMgKyBsZW5ndGg7CiAJd2hpbGUgKHNyYyA8IGUpIHsKIAkJaWYgKHNoaWZ0ID4gMykgewogCQkJd29yZCA9ICgqc3JjICYgKDB4RkYgPj4gc2hpZnQpKTsKQEAgLTc5LDI1ICs2NSwyNSBAQAogCQkJd29yZCA9ICggKnNyYyA+PiAoICg4IC0gc2hpZnQpICYgNyApICkgJiAweDFGOwogCQkJaWYgKHNoaWZ0ID09IDApIHNyYysrOwogCQl9Ci0JCSpkZXN0KysgPSAoIHdvcmQgPCAyNiA/IHdvcmQgKyBhIDogd29yZCArICcyJyAtIDI2ICk7CisJCSpkc3QrKyA9ICggd29yZCA8IDI2ID8gd29yZCArIGEgOiB3b3JkICsgJzInIC0gMjYgKTsKIAl9Ci0JKmRlc3QgPSAnXDAnOworCSpkc3QgPSAnXDAnOwogfQogCiAvKioKICAqIEVuY29kZSBhIGJpbmFyeSBzdHJpbmcgdG8gYmFzZTY0LgogICogRW5jb2RlZCBvdXRwdXQgbGVuZ3RoIGlzIGFsd2F5cyBhIG11bHRpcGxlIG9mIDQgYnl0ZXMuCiAgKgotICogQHBhcmFtIGRlc3QgdGhlIGJ1ZmZlciB0byBzdG9yZSByZXN1bHQKKyAqIEBwYXJhbSBkc3QgdGhlIGJ1ZmZlciB0byBzdG9yZSByZXN1bHQKICAqIEBwYXJhbSBzcmMgYmluYXJ5IHN0cmluZwotICogQHBhcmFtIGxlbiBzdHJpbmcgbGVuZ3RoCisgKiBAcGFyYW0gbGVuZ3RoIHN0cmluZyBsZW5ndGgKICAqLwotdm9pZCByaGFzaF9ieXRlX3RvX2Jhc2U2NChjaGFyKiBkZXN0LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmMsIHVuc2lnbmVkIGxlbikKK3ZvaWQgcmhhc2hfYnl0ZV90b19iYXNlNjQoY2hhciogZHN0LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmMsIHNpemVfdCBsZW5ndGgpCiB7CiAJc3RhdGljIGNvbnN0IGNoYXIqIHRhaWwgPSAiMDEyMzQ1Njc4OSsvIjsKIAl1bnNpZ25lZCBzaGlmdCA9IDA7CiAJdW5zaWduZWQgY2hhciB3b3JkOwotCWNvbnN0IHVuc2lnbmVkIGNoYXIqIGUgPSBzcmMgKyBsZW47CisJY29uc3QgdW5zaWduZWQgY2hhciogZSA9IHNyYyArIGxlbmd0aDsKIAl3aGlsZSAoc3JjIDwgZSkgewogCQlpZiAoc2hpZnQgPiAyKSB7CiAJCQl3b3JkID0gKCpzcmMgJiAoMHhGRiA+PiBzaGlmdCkpOwpAQCAtMTExLDQ1ICs5Nyw4MCBAQAogCQkJd29yZCA9ICggKnNyYyA+PiAoICg4IC0gc2hpZnQpICYgNyApICkgJiAweDNGOwogCQkJaWYgKHNoaWZ0ID09IDApIHNyYysrOwogCQl9Ci0JCSpkZXN0KysgPSAoIHdvcmQgPCA1MiA/ICh3b3JkIDwgMjYgPyB3b3JkICsgJ0EnIDogd29yZCAtIDI2ICsgJ2EnKSA6IHRhaWxbd29yZCAtIDUyXSk7CisJCSpkc3QrKyA9ICggd29yZCA8IDUyID8gKHdvcmQgPCAyNiA/IHdvcmQgKyAnQScgOiB3b3JkIC0gMjYgKyAnYScpIDogdGFpbFt3b3JkIC0gNTJdKTsKIAl9CiAJaWYgKHNoaWZ0ID4gMCkgewotCQkqZGVzdCsrID0gJz0nOwotCQlpZiAoc2hpZnQgPT0gNCkgKmRlc3QrKyA9ICc9JzsKKwkJKmRzdCsrID0gJz0nOworCQlpZiAoc2hpZnQgPT0gNCkgKmRzdCsrID0gJz0nOwogCX0KLQkqZGVzdCA9ICdcMCc7CisJKmRzdCA9ICdcMCc7CiB9CiAKLS8qIHVuc2FmZSBjaGFyYWN0ZXJzIGFyZSAiPD57fVtdJSMvfFxefmBAOjs/PSYrICovCi0jZGVmaW5lIElTX0dPT0RfVVJMX0NIQVIoYykgKGlzYWxudW0oKHVuc2lnbmVkIGNoYXIpYykgfHwgc3RyY2hyKCIkLV8uIScoKSwiLCBjKSkKK3NpemVfdCByaGFzaF9iYXNlNjRfdXJsX2VuY29kZWRfaGVscGVyKGNoYXIqIGRzdCwgY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBzaXplX3QgbGVuZ3RoLCBpbnQgdXJsX2VuY29kZSwgaW50IHVwcGVyX2Nhc2UpCit7CisjZGVmaW5lIEI2NF9DSFVOS19TSVpFIDEyMAorCWNoYXIgYnVmZmVyWzE2NF07CisJYXNzZXJ0KChCQVNFNjRfTEVOR1RIKEI2NF9DSFVOS19TSVpFKSArIDQpIDw9IHNpemVvZihidWZmZXIpKTsKKwlhc3NlcnQoKEI2NF9DSFVOS19TSVpFICUgNikgPT0gMCk7CisJaWYgKHVybF9lbmNvZGUpIHsKKwkJc2l6ZV90IHJlc3VsdF9sZW5ndGggPSAwOworCQlmb3IgKDsgbGVuZ3RoID4gMDsgc3JjICs9IEI2NF9DSFVOS19TSVpFKSB7CisJCQlzaXplX3QgY2h1bmtfc2l6ZSA9IChsZW5ndGggPCBCNjRfQ0hVTktfU0laRSA/IGxlbmd0aCA6IEI2NF9DSFVOS19TSVpFKTsKKwkJCXNpemVfdCBlbmNvZGVkX2xlbmd0aDsKKwkJCXJoYXNoX2J5dGVfdG9fYmFzZTY0KGJ1ZmZlciwgc3JjLCBjaHVua19zaXplKTsKKwkJCWVuY29kZWRfbGVuZ3RoID0gcmhhc2hfdXJsZW5jb2RlKGRzdCwgYnVmZmVyLCBCQVNFNjRfTEVOR1RIKGNodW5rX3NpemUpLCB1cHBlcl9jYXNlKTsKKwkJCXJlc3VsdF9sZW5ndGggKz0gZW5jb2RlZF9sZW5ndGg7CisJCQlkc3QgKz0gZW5jb2RlZF9sZW5ndGg7CisJCQlsZW5ndGggLT0gY2h1bmtfc2l6ZTsKKwkJfQorCQlyZXR1cm4gcmVzdWx0X2xlbmd0aDsKKwl9CisJcmhhc2hfYnl0ZV90b19iYXNlNjQoZHN0LCBzcmMsIGxlbmd0aCk7CisJcmV0dXJuIEJBU0U2NF9MRU5HVEgobGVuZ3RoKTsKK30KKworLyogUkZDIDM5ODY6IHNhZmUgdXJsIGNoYXJhY3RlcnMgYXJlIGFzY2lpIGFscGhhLW51bWVyaWMgYW5kICItLl9+Iiwgb3RoZXIgY2hhcmFjdGVycyBzaG91bGQgYmUgcGVyY2VudC1lbmNvZGVkICovCitzdGF0aWMgdW5zaWduZWQgdXJsX3NhZmVfY2hhcl9tYXNrWzRdID0geyAwLCAweDAzZmY2MDAwLCAweDg3ZmZmZmZlLCAweDQ3ZmZmZmZlIH07CisjZGVmaW5lIElTX1VSTF9HT09EX0NIQVIoYykgKCh1bnNpZ25lZCkoYykgPCAxMjggJiYgKHVybF9zYWZlX2NoYXJfbWFza1tjID4+IDVdICYgKDEgPDwgKGMgJiAzMSkpKSkKIAogLyoqCi0gKiBVUkwtZW5jb2RlIGEgc3RyaW5nLgorICogVVJMLWVuY29kZSBzcGVjaWZpZWQgYmluYXJ5IHN0cmluZy4KICAqCi0gKiBAcGFyYW0gZHN0IGJ1ZmZlciB0byByZWNlaXZlIHJlc3VsdCBvciBOVUxMIHRvIGNhbGN1bGF0ZQotICogICAgdGhlIGxlbmd0aHMgb2YgZW5jb2RlZCBzdHJpbmcKLSAqIEBwYXJhbSBmaWxlbmFtZSB0aGUgZmlsZSBuYW1lCisgKiBAcGFyYW0gZHN0IChudWxsYWJsZSkgYnVmZmVyIHRvIG91dHB1dCBlbmNvZGVkIHN0cmluZyB0bywKKyAqICAgICAgICAgICAgTlVMTCB0byBqdXN0IGNhbGN1bGF0ZSB0aGUgbGVuZ3RocyBvZiBlbmNvZGVkIHN0cmluZworICogQHBhcmFtIHNyYyBiaW5hcnkgc3RyaW5nIHRvIGVuY29kZQorICogQHBhcmFtIHNpemUgc2l6ZSBvZiB0aGUgYmluYXJ5IHN0cmluZworICogQHBhcmFtIHVwcGVyX2Nhc2UgZmxhZyB0byBvdXRwdXQgaGV4LWNvZGVzIGluIHVwcGVyY2FzZQogICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgc3RyaW5nCiAgKi8KLWludCByaGFzaF91cmxlbmNvZGUoY2hhciAqZHN0LCBjb25zdCBjaGFyICpuYW1lKQorc2l6ZV90IHJoYXNoX3VybGVuY29kZShjaGFyKiBkc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IHNpemUsIGludCB1cHBlcl9jYXNlKQogewotCWNvbnN0IGNoYXIgKnN0YXJ0OworCWNvbnN0IGNoYXIqIHN0YXJ0OworCXNpemVfdCBpOwogCWlmICghZHN0KSB7Ci0JCWludCBsZW47Ci0JCWZvciAobGVuID0gMDsgKm5hbWU7IG5hbWUrKykgbGVuICs9IChJU19HT09EX1VSTF9DSEFSKCpuYW1lKSA/IDEgOiAzKTsKLQkJcmV0dXJuIGxlbjsKLQl9Ci0JLyogZW5jb2RlIFVSTCBhcyBzcGVjaWZpZWQgYnkgUkZDIDE3MzggKi8KLQlmb3IgKHN0YXJ0ID0gZHN0OyAqbmFtZTsgbmFtZSsrKSB7Ci0JCWlmICggSVNfR09PRF9VUkxfQ0hBUigqbmFtZSkgKSB7Ci0JCQkqZHN0KysgPSAqbmFtZTsKLQkJfSBlbHNlIHsKLQkJCSpkc3QrKyA9ICclJzsKLQkJCWRzdCA9IHJoYXNoX3ByaW50X2hleF9ieXRlKGRzdCwgKm5hbWUsICdBJyk7CisJCXNpemVfdCBsZW5ndGggPSBzaXplOworCQlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorCQkJaWYgKCFJU19VUkxfR09PRF9DSEFSKHNyY1tpXSkpCisJCQkJbGVuZ3RoICs9IDI7CisJCXJldHVybiBsZW5ndGg7CisJfSBlbHNlIHsKKwkJY29uc3QgY2hhciBoZXhfYWRkID0gKHVwcGVyX2Nhc2UgPyAnQScgLSAxMCA6ICdhJyAtIDEwKTsKKwkJc3RhcnQgPSBkc3Q7CisJCS8qIHBlcmNlbnQtZW5jb2RlIGFsbCBidXQgdW5yZXNlcnZlZCBVUkwgY2hhcmFjdGVycyAqLworCQlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisJCQlpZiAoSVNfVVJMX0dPT0RfQ0hBUihzcmNbaV0pKSB7CisJCQkJKmRzdCsrID0gc3JjW2ldOworCQkJfSBlbHNlIHsKKwkJCQl1bnNpZ25lZCBjaGFyIGhpID0gKCh1bnNpZ25lZCBjaGFyKShzcmNbaV0pID4+IDQpICYgMHgwZjsKKwkJCQl1bnNpZ25lZCBjaGFyIGxvID0gKHVuc2lnbmVkIGNoYXIpKHNyY1tpXSkgJiAweDBmOworCQkJCSpkc3QrKyA9ICclJzsKKwkJCQkqZHN0KysgPSAoaGkgPiA5ID8gaGkgKyBoZXhfYWRkIDogaGkgKyAnMCcpOworCQkJCSpkc3QrKyA9IChsbyA+IDkgPyBsbyArIGhleF9hZGQgOiBsbyArICcwJyk7CisJCQl9CiAJCX0KKwkJKmRzdCA9IDA7CiAJfQotCSpkc3QgPSAwOwotCXJldHVybiAoaW50KShkc3QgLSBzdGFydCk7CisJcmV0dXJuIGRzdCAtIHN0YXJ0OwogfQogCiAvKioKQEAgLTE2MCwxMCArMTgxLDExIEBACiAgKiBAcGFyYW0gbnVtYmVyIHRoZSBudW1iZXIgdG8gcHJpbnQKICAqIEByZXR1cm4gbGVuZ3RoIG9mIHRoZSBwcmludGVkIG51bWJlciAod2l0aG91dCB0cmFpbGluZyAnXDAnKQogICovCi1pbnQgcmhhc2hfc3ByaW50STY0KGNoYXIgKmRzdCwgdWludDY0X3QgbnVtYmVyKQoraW50IHJoYXNoX3NwcmludEk2NChjaGFyKiBkc3QsIHVpbnQ2NF90IG51bWJlcikKIHsKIAkvKiBUaGUgYmlnZ2VzdCBudW1iZXIgaGFzIDIwIGRpZ2l0czogMl42NCA9IDE4IDQ0NiA3NDQgMDczIDcwOSA1NTEgNjE2ICovCi0JY2hhciBidWZbMjRdLCAqcDsKKwljaGFyIGJ1ZlsyNF07CisJY2hhciogcDsKIAlzaXplX3QgbGVuZ3RoOwogCiAJaWYgKGRzdCA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9oZXguaCBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL2hleC5oCmluZGV4IDJiMzY1ZTIuLjZiZWEwMzYgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL2hleC5oCisrKyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL2hleC5oCkBAIC04LDEyICs4LDEzIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi12b2lkIHJoYXNoX2J5dGVfdG9faGV4KGNoYXIgKmRlc3QsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNyYywgdW5zaWduZWQgbGVuLCBpbnQgdXBwZXJfY2FzZSk7Ci12b2lkIHJoYXNoX2J5dGVfdG9fYmFzZTMyKGNoYXIqIGRlc3QsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNyYywgdW5zaWduZWQgbGVuLCBpbnQgdXBwZXJfY2FzZSk7Ci12b2lkIHJoYXNoX2J5dGVfdG9fYmFzZTY0KGNoYXIqIGRlc3QsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNyYywgdW5zaWduZWQgbGVuKTsKLWNoYXIqIHJoYXNoX3ByaW50X2hleF9ieXRlKGNoYXIgKmRlc3QsIGNvbnN0IHVuc2lnbmVkIGNoYXIgYnl0ZSwgaW50IHVwcGVyX2Nhc2UpOwotaW50ICByaGFzaF91cmxlbmNvZGUoY2hhciAqZHN0LCBjb25zdCBjaGFyICpuYW1lKTsKLWludCAgcmhhc2hfc3ByaW50STY0KGNoYXIgKmRzdCwgdWludDY0X3QgbnVtYmVyKTsKK3ZvaWQgcmhhc2hfYnl0ZV90b19oZXgoY2hhciogZGVzdCwgY29uc3QgdW5zaWduZWQgY2hhciogc3JjLCBzaXplX3QgbGVuZ3RoLCBpbnQgdXBwZXJfY2FzZSk7Cit2b2lkIHJoYXNoX2J5dGVfdG9fYmFzZTMyKGNoYXIqIGRlc3QsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNyYywgc2l6ZV90IGxlbmd0aCwgaW50IHVwcGVyX2Nhc2UpOwordm9pZCByaGFzaF9ieXRlX3RvX2Jhc2U2NChjaGFyKiBkZXN0LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmMsIHNpemVfdCBsZW5ndGgpOworY2hhciogcmhhc2hfcHJpbnRfaGV4X2J5dGUoY2hhciogZGVzdCwgY29uc3QgdW5zaWduZWQgY2hhciBieXRlLCBpbnQgdXBwZXJfY2FzZSk7CitzaXplX3Qgcmhhc2hfdXJsZW5jb2RlKGNoYXIqIGRzdCwgY29uc3QgY2hhciogc3RyLCBzaXplX3Qgc2l6ZSwgaW50IHVwcGVyX2Nhc2UpOworc2l6ZV90IHJoYXNoX2Jhc2U2NF91cmxfZW5jb2RlZF9oZWxwZXIoY2hhciogZHN0LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmMsIHNpemVfdCBsZW5ndGgsIGludCB1cmxfZW5jb2RlLCBpbnQgdXBwZXJfY2FzZSk7CitpbnQgcmhhc2hfc3ByaW50STY0KGNoYXIqIGRzdCwgdWludDY0X3QgbnVtYmVyKTsKIAogI2RlZmluZSBCQVNFMzJfTEVOR1RIKGJ5dGVzKSAoKChieXRlcykgKiA4ICsgNCkgLyA1KQogI2RlZmluZSBCQVNFNjRfTEVOR1RIKGJ5dGVzKSAoKCgoYnl0ZXMpICsgMikgLyAzKSAqIDQpCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9tZDUuYyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL21kNS5jCmluZGV4IGIyMGRlNDUuLjliNzY4MjIgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL21kNS5jCisrKyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL21kNS5jCkBAIC0xLDE3ICsxLDE3IEBACiAvKiBtZDUuYyAtIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNRDUgYWxnb3JpdGhtLCBiYXNlZCBvbiBSRkMgMTMyMS4KICAqCi0gKiBDb3B5cmlnaHQ6IDIwMDctMjAxMiBBbGVrc2V5IEtyYXZjaGVua28gPHJoYXNoLmFkbWluQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoYykgMjAwNywgQWxla3NleSBLcmF2Y2hlbmtvIDxyaGFzaC5hZG1pbkBnbWFpbC5jb20+CiAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgIGZyZWUgb2YgY2hhcmdlLCAgdG8gYW55IHBlcnNvbiAgb2J0YWluaW5nIGEKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCAgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhlIHJpZ2h0cyB0byAgdXNlLCBjb3B5LCBtb2RpZnksICBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSAqIGFuZC9vciBzZWxsIGNvcGllcyAgb2YgIHRoZSBTb2Z0d2FyZSwgIGFuZCB0byBwZXJtaXQgIHBlcnNvbnMgIHRvIHdob20gdGhlCi0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28uCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4KICAqCi0gKiBUaGlzIHByb2dyYW0gIGlzICBkaXN0cmlidXRlZCAgaW4gIHRoZSAgaG9wZSAgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgIGJ1dAotICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKLSAqIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVXNlIHRoaXMgcHJvZ3JhbSAgYXQgIHlvdXIgb3duIHJpc2shCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAorICogUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GICBNRVJDSEFOVEFCSUxJVFkKKyAqIEFORCBGSVRORVNTLiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCisgKiBJTkRJUkVDVCwgIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQorICogTE9TUyBPRiBVU0UsICBEQVRBIE9SIFBST0ZJVFMsICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgIE5FR0xJR0VOQ0UKKyAqIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgIEFSSVNJTkcgT1VUIE9GICBPUiBJTiBDT05ORUNUSU9OICBXSVRIIFRIRSBVU0UgIE9SCisgKiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICovCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTIzLDcgKzIzLDcgQEAKICAqCiAgKiBAcGFyYW0gY3R4IGNvbnRleHQgdG8gaW5pdGlhbGl6ZQogICovCi12b2lkIHJoYXNoX21kNV9pbml0KG1kNV9jdHggKmN0eCkKK3ZvaWQgcmhhc2hfbWQ1X2luaXQobWQ1X2N0eCogY3R4KQogewogCWN0eC0+bGVuZ3RoID0gMDsKIApAQCAtMTYyLDcgKzE2Miw3IEBACiAgKiBAcGFyYW0gbXNnIG1lc3NhZ2UgY2h1bmsKICAqIEBwYXJhbSBzaXplIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSBjaHVuawogICovCi12b2lkIHJoYXNoX21kNV91cGRhdGUobWQ1X2N0eCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtc2csIHNpemVfdCBzaXplKQordm9pZCByaGFzaF9tZDVfdXBkYXRlKG1kNV9jdHgqIGN0eCwgY29uc3QgdW5zaWduZWQgY2hhciogbXNnLCBzaXplX3Qgc2l6ZSkKIHsKIAl1bnNpZ25lZCBpbmRleCA9ICh1bnNpZ25lZCljdHgtPmxlbmd0aCAmIDYzOwogCWN0eC0+bGVuZ3RoICs9IHNpemU7CkBAIC0yMDUsNyArMjA1LDcgQEAKICAqIEBwYXJhbSBjdHggdGhlIGFsZ29yaXRobSBjb250ZXh0IGNvbnRhaW5pbmcgY3VycmVudCBoYXNoaW5nIHN0YXRlCiAgKiBAcGFyYW0gcmVzdWx0IGNhbGN1bGF0ZWQgaGFzaCBpbiBiaW5hcnkgZm9ybQogICovCi12b2lkIHJoYXNoX21kNV9maW5hbChtZDVfY3R4ICpjdHgsIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCkKK3ZvaWQgcmhhc2hfbWQ1X2ZpbmFsKG1kNV9jdHgqIGN0eCwgdW5zaWduZWQgY2hhciogcmVzdWx0KQogewogCXVuc2lnbmVkIGluZGV4ID0gKCh1bnNpZ25lZCljdHgtPmxlbmd0aCAmIDYzKSA+PiAyOwogCXVuc2lnbmVkIHNoaWZ0ID0gKCh1bnNpZ25lZCljdHgtPmxlbmd0aCAmIDMpICogODsKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL21kNS5oIGIvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvbWQ1LmgKaW5kZXggMWFmNmYxMy4uMTJhNmI1MiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvbWQ1LmgKKysrIGIvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvbWQ1LmgKQEAgLTIwLDkgKzIwLDkgQEAKIAogLyogaGFzaCBmdW5jdGlvbnMgKi8KIAotdm9pZCByaGFzaF9tZDVfaW5pdChtZDVfY3R4ICpjdHgpOwotdm9pZCByaGFzaF9tZDVfdXBkYXRlKG1kNV9jdHggKmN0eCwgY29uc3QgdW5zaWduZWQgY2hhciogbXNnLCBzaXplX3Qgc2l6ZSk7Ci12b2lkIHJoYXNoX21kNV9maW5hbChtZDVfY3R4ICpjdHgsIHVuc2lnbmVkIGNoYXIgcmVzdWx0WzE2XSk7Cit2b2lkIHJoYXNoX21kNV9pbml0KG1kNV9jdHgqIGN0eCk7Cit2b2lkIHJoYXNoX21kNV91cGRhdGUobWQ1X2N0eCogY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtc2csIHNpemVfdCBzaXplKTsKK3ZvaWQgcmhhc2hfbWQ1X2ZpbmFsKG1kNV9jdHgqIGN0eCwgdW5zaWduZWQgY2hhciByZXN1bHRbMTZdKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9IC8qIGV4dGVybiAiQyIgKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL3JoYXNoLmMgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9yaGFzaC5jCmluZGV4IDM0ZTFlYjMuLmNlNmFjZTQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL3JoYXNoLmMKKysrIGIvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvcmhhc2guYwpAQCAtMSw0MiArMSw0MCBAQAogLyogcmhhc2guYyAtIGltcGxlbWVudGF0aW9uIG9mIExpYlJIYXNoIGxpYnJhcnkgY2FsbHMKICAqCi0gKiBDb3B5cmlnaHQ6IDIwMDgtMjAxMiBBbGVrc2V5IEtyYXZjaGVua28gPHJoYXNoLmFkbWluQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoYykgMjAwOCwgQWxla3NleSBLcmF2Y2hlbmtvIDxyaGFzaC5hZG1pbkBnbWFpbC5jb20+CiAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgIGZyZWUgb2YgY2hhcmdlLCAgdG8gYW55IHBlcnNvbiAgb2J0YWluaW5nIGEKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCAgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhlIHJpZ2h0cyB0byAgdXNlLCBjb3B5LCBtb2RpZnksICBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSAqIGFuZC9vciBzZWxsIGNvcGllcyAgb2YgIHRoZSBTb2Z0d2FyZSwgIGFuZCB0byBwZXJtaXQgIHBlcnNvbnMgIHRvIHdob20gdGhlCi0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28uCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4KICAqCi0gKiBUaGlzIHByb2dyYW0gIGlzICBkaXN0cmlidXRlZCAgaW4gIHRoZSAgaG9wZSAgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgIGJ1dAotICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKLSAqIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVXNlIHRoaXMgcHJvZ3JhbSAgYXQgIHlvdXIgb3duIHJpc2shCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAorICogUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GICBNRVJDSEFOVEFCSUxJVFkKKyAqIEFORCBGSVRORVNTLiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCisgKiBJTkRJUkVDVCwgIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQorICogTE9TUyBPRiBVU0UsICBEQVRBIE9SIFBST0ZJVFMsICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgIE5FR0xJR0VOQ0UKKyAqIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgIEFSSVNJTkcgT1VUIE9GICBPUiBJTiBDT05ORUNUSU9OICBXSVRIIFRIRSBVU0UgIE9SCisgKiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICovCiAKKy8qIG1vZGlmaWVyIGZvciBXaW5kb3dzIERMTCAqLworI2lmIChkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkgJiYgZGVmaW5lZChSSEFTSF9FWFBPUlRTKQorIyBkZWZpbmUgUkhBU0hfQVBJIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2VuZGlmCisKIC8qIG1hY3JvcyBmb3IgbGFyZ2UgZmlsZSBzdXBwb3J0LCBtdXN0IGJlIGRlZmluZWQgYmVmb3JlIGFueSBpbmNsdWRlIGZpbGUgKi8KICNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQogI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyA2NAogCiAjaW5jbHVkZSAidXN0ZC5oIiAgIC8qIE5lZWQgdGhpcyBmaXJzdCB3aXRoaW4gQ01ha2UuICAqLwogCi0jaW5jbHVkZSA8c3RyaW5nLmg+IC8qIG1lbXNldCgpICovCi0jaW5jbHVkZSA8c3RkbGliLmg+IC8qIGZyZWUoKSAqLwotI2luY2x1ZGUgPHN0ZGRlZi5oPiAvKiBwdHJkaWZmX3QgKi8KLSNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgInJoYXNoLmgiCisjaW5jbHVkZSAiYWxnb3JpdGhtcy5oIgorI2luY2x1ZGUgImJ5dGVfb3JkZXIuaCIKKyNpbmNsdWRlICJoZXguaCIKKyNpbmNsdWRlICJ1dGlsLmgiCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KLQotLyogbW9kaWZpZXIgZm9yIFdpbmRvd3MgRExMICovCi0jaWYgZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQoUkhBU0hfRVhQT1JUUykKLSMgZGVmaW5lIFJIQVNIX0FQSSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSNlbmRpZgotCi0jaW5jbHVkZSAiYnl0ZV9vcmRlci5oIgotI2luY2x1ZGUgImFsZ29yaXRobXMuaCIKLSNpbmNsdWRlICJ1dGlsLmgiCi0jaW5jbHVkZSAiaGV4LmgiCi0jaW5jbHVkZSAicmhhc2guaCIgLyogUkhhc2ggbGlicmFyeSBpbnRlcmZhY2UgKi8KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KIAogI2RlZmluZSBTVEFURV9BQ1RJVkUgIDB4YjAxZGJhYmUKICNkZWZpbmUgU1RBVEVfU1RPUEVEICAweGRlYWRiZWVmCkBAIC00NSwxMSArNDMsOCBAQAogI2RlZmluZSBSQ1RYX0ZJTkFMSVpFRCAgMHgyCiAjZGVmaW5lIFJDVFhfRklOQUxJWkVEX01BU0sgKFJDVFhfQVVUT19GSU5BTCB8IFJDVFhfRklOQUxJWkVEKQogI2RlZmluZSBSSFBSX0ZPUk1BVCAoUkhQUl9SQVcgfCBSSFBSX0hFWCB8IFJIUFJfQkFTRTMyIHwgUkhQUl9CQVNFNjQpCi0jZGVmaW5lIFJIUFJfTU9ESUZJRVIgKFJIUFJfVVBQRVJDQVNFIHwgUkhQUl9SRVZFUlNFKQorI2RlZmluZSBSSFBSX01PRElGSUVSIChSSFBSX1VQUEVSQ0FTRSB8IFJIUFJfVVJMRU5DT0RFIHwgUkhQUl9SRVZFUlNFKQogCi0vKioKLSAqIEluaXRpYWxpemUgc3RhdGljIGRhdGEgb2Ygcmhhc2ggYWxnb3JpdGhtcwotICovCiB2b2lkIHJoYXNoX2xpYnJhcnlfaW5pdCh2b2lkKQogewogCXJoYXNoX2luaXRfYWxnb3JpdGhtcyhSSEFTSF9BTExfSEFTSEVTKTsKQEAgLTU4LDMxICs1MywxOCBAQAogI2VuZGlmCiB9CiAKLS8qKgotICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHN1cHBvcnRlZCBoYXNoIGFsZ29yaXRobXMuCi0gKgotICogQHJldHVybiB0aGUgbnVtYmVyIG9mIHN1cHBvcnRlZCBoYXNoIGZ1bmN0aW9ucwotICovCiBpbnQgUkhBU0hfQVBJIHJoYXNoX2NvdW50KHZvaWQpCiB7CiAJcmV0dXJuIHJoYXNoX2luZm9fc2l6ZTsKIH0KIAotLyogTG8tbGV2ZWwgcmhhc2ggbGlicmFyeSBmdW5jdGlvbnMgKi8KKy8qIExPVy1MRVZFTCBMSUJSSEFTSCBJTlRFUkZBQ0UgKi8KIAotLyoqCi0gKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBSSGFzaCBjb250ZXh0IGZvciBjYWxjdWxhdGluZyBoYXNoKGVzKS4KLSAqIEFmdGVyIGluaXRpYWxpemluZyByaGFzaF91cGRhdGUoKS9yaGFzaF9maW5hbCgpIGZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZC4KLSAqIFRoZW4gdGhlIGNvbnRleHQgbXVzdCBiZSBmcmVlZCBieSBjYWxsaW5nIHJoYXNoX2ZyZWUoKS4KLSAqCi0gKiBAcGFyYW0gaGFzaF9pZCB1bmlvbiBvZiBiaXQgZmxhZ3MsIGNvbnRhaW5pbmcgaWRzIG9mIGhhc2hlcyB0byBjYWxjdWxhdGUuCi0gKiBAcmV0dXJuIGluaXRpYWxpemVkIHJoYXNoIGNvbnRleHQsIE5VTEwgb24gZXJyb3IgYW5kIGVycm5vIGlzIHNldAotICovCiBSSEFTSF9BUEkgcmhhc2ggcmhhc2hfaW5pdCh1bnNpZ25lZCBoYXNoX2lkKQogewogCXVuc2lnbmVkIHRhaWxfYml0X2luZGV4OyAvKiBpbmRleCBvZiBoYXNoX2lkIHRyYWlsaW5nIGJpdCAqLwogCXVuc2lnbmVkIG51bSA9IDA7ICAgICAgICAvKiBudW1iZXIgb2YgaGFzaGVzIHRvIGNvbXB1dGUgKi8KLQlyaGFzaF9jb250ZXh0X2V4dCAqcmN0eCA9IE5VTEw7IC8qIGFsbG9jYXRlZCByaGFzaCBjb250ZXh0ICovCisJcmhhc2hfY29udGV4dF9leHQqIHJjdHggPSBOVUxMOyAvKiBhbGxvY2F0ZWQgcmhhc2ggY29udGV4dCAqLwogCXNpemVfdCBoYXNoX3NpemVfc3VtID0gMDsgICAvKiBzaXplIG9mIGhhc2ggY29udGV4dHMgdG8gc3RvcmUgaW4gcmN0eCAqLwogCiAJdW5zaWduZWQgaSwgYml0X2luZGV4LCBpZDsKQEAgLTEyMyw3ICsxMDUsNyBAQAogCX0KIAogCS8qIGFsaWduIHRoZSBzaXplIG9mIHRoZSByaGFzaCBjb250ZXh0IGNvbW1vbiBwYXJ0ICovCi0JYWxpZ25lZF9zaXplID0gKG9mZnNldG9mKHJoYXNoX2NvbnRleHRfZXh0LCB2ZWN0b3JbbnVtXSkgKyA3KSAmIH43OworCWFsaWduZWRfc2l6ZSA9ICgob2Zmc2V0b2Yocmhhc2hfY29udGV4dF9leHQsIHZlY3RvcikgKyBzaXplb2Yocmhhc2hfdmVjdG9yX2l0ZW0pICogbnVtKSArIDcpICYgfjc7CiAJYXNzZXJ0KGFsaWduZWRfc2l6ZSA+PSBzaXplb2Yocmhhc2hfY29udGV4dF9leHQpKTsKIAogCS8qIGFsbG9jYXRlIHJoYXNoIGNvbnRleHQgd2l0aCBlbm91Z2ggbWVtb3J5IHRvIHN0b3JlIGNvbnRleHRzIG9mIGFsbCB1c2VkIGhhc2hlcyAqLwpAQCAtMTcwLDExICsxNTIsNiBAQAogCXJldHVybiAmcmN0eC0+cmM7IC8qIHJldHVybiBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIHJoYXNoIGNvbnRleHQgKi8KIH0KIAotLyoqCi0gKiBGcmVlIFJIYXNoIGNvbnRleHQgbWVtb3J5LgotICoKLSAqIEBwYXJhbSBjdHggdGhlIGNvbnRleHQgdG8gZnJlZS4KLSAqLwogdm9pZCByaGFzaF9mcmVlKHJoYXNoIGN0eCkKIHsKIAlyaGFzaF9jb250ZXh0X2V4dCogY29uc3QgZWN0eCA9IChyaGFzaF9jb250ZXh0X2V4dCopY3R4OwpAQCAtMTk1LDEyICsxNzIsNiBAQAogCWZyZWUoZWN0eCk7CiB9CiAKLS8qKgotICogUmUtaW5pdGlhbGl6ZSBSSGFzaCBjb250ZXh0IHRvIHJldXNlIGl0LgotICogVXNlZnVsIHRvIHNwZWVkIHVwIHByb2Nlc3Npbmcgb2YgbWFueSBzbWFsbCBtZXNzYWdlcy4KLSAqCi0gKiBAcGFyYW0gY3R4IGNvbnRleHQgdG8gcmVpbml0aWFsaXplCi0gKi8KIFJIQVNIX0FQSSB2b2lkIHJoYXNoX3Jlc2V0KHJoYXNoIGN0eCkKIHsKIAlyaGFzaF9jb250ZXh0X2V4dCogY29uc3QgZWN0eCA9IChyaGFzaF9jb250ZXh0X2V4dCopY3R4OwpAQCAtMjIzLDE1ICsxOTQsNiBAQAogCWVjdHgtPmZsYWdzICY9IH5SQ1RYX0ZJTkFMSVpFRDsgLyogY2xlYXIgZmluYWxpemVkIHN0YXRlICovCiB9CiAKLS8qKgotICogQ2FsY3VsYXRlIGhhc2hlcyBvZiBtZXNzYWdlLgotICogQ2FuIGJlIGNhbGxlZCByZXBlYXRlZGx5IHdpdGggY2h1bmtzIG9mIHRoZSBtZXNzYWdlIHRvIGJlIGhhc2hlZC4KLSAqCi0gKiBAcGFyYW0gY3R4IHRoZSByaGFzaCBjb250ZXh0Ci0gKiBAcGFyYW0gbWVzc2FnZSBtZXNzYWdlIGNodW5rCi0gKiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSBjaHVuawotICogQHJldHVybiAwIG9uIHN1Y2Nlc3M7IE9uIGZhaWwgcmV0dXJuIC0xIGFuZCBzZXQgZXJybm8KLSAqLwogUkhBU0hfQVBJIGludCByaGFzaF91cGRhdGUocmhhc2ggY3R4LCBjb25zdCB2b2lkKiBtZXNzYWdlLCBzaXplX3QgbGVuZ3RoKQogewogCXJoYXNoX2NvbnRleHRfZXh0KiBjb25zdCBlY3R4ID0gKHJoYXNoX2NvbnRleHRfZXh0KiljdHg7CkBAIC0yNTEsMTMgKzIxMyw2IEBACiAJcmV0dXJuIDA7IC8qIG5vIGVycm9yIHByb2Nlc3NpbmcgYXQgdGhlIG1vbWVudCAqLwogfQogCi0vKioKLSAqIEZpbmFsaXplIGhhc2ggY2FsY3VsYXRpb24gYW5kIG9wdGlvbmFsbHkgc3RvcmUgdGhlIGZpcnN0IGhhc2guCi0gKgotICogQHBhcmFtIGN0eCB0aGUgcmhhc2ggY29udGV4dAotICogQHBhcmFtIGZpcnN0X3Jlc3VsdCBvcHRpb25hbCBidWZmZXIgdG8gc3RvcmUgYSBjYWxjdWxhdGVkIGhhc2ggd2l0aCB0aGUgbG93ZXN0IGF2YWlsYWJsZSBpZAotICogQHJldHVybiAwIG9uIHN1Y2Nlc3M7IE9uIGZhaWwgcmV0dXJuIC0xIGFuZCBzZXQgZXJybm8KLSAqLwogUkhBU0hfQVBJIGludCByaGFzaF9maW5hbChyaGFzaCBjdHgsIHVuc2lnbmVkIGNoYXIqIGZpcnN0X3Jlc3VsdCkKIHsKIAl1bnNpZ25lZCBpID0gMDsKQEAgLTI5NSw3ICsyNTAsNyBAQAogewogCXJoYXNoX2NvbnRleHRfZXh0KiBjb25zdCBlY3R4ID0gKHJoYXNoX2NvbnRleHRfZXh0KiljdHg7CiAJdW5zaWduZWQgaTsKLQlyaGFzaF92ZWN0b3JfaXRlbSAqaXRlbTsKKwlyaGFzaF92ZWN0b3JfaXRlbSogaXRlbTsKIAlzdHJ1Y3Qgcmhhc2hfaGFzaF9pbmZvKiBpbmZvOwogCXVuc2lnbmVkIGNoYXIqIGRpZ2VzdDsKIApAQCAtMzMyLDM0ICsyODcsMTQgQEAKIAl9CiB9CiAKLS8qKgotICogU2V0IHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZnJvbSB0aGUKLSAqIHJoYXNoX2ZpbGUoKSBhbmQgcmhhc2hfZmlsZV91cGRhdGUoKSBmdW5jdGlvbnMKLSAqIG9uIHByb2Nlc3NpbmcgZXZlcnkgZmlsZSBibG9jay4gVGhlIGZpbGUgYmxvY2sKLSAqIHNpemUgaXMgc2V0IGludGVybmFsbHkgYnkgcmhhc2ggYW5kIG5vdyBpcyA4IEtpQi4KLSAqCi0gKiBAcGFyYW0gY3R4IHJoYXNoIGNvbnRleHQKLSAqIEBwYXJhbSBjYWxsYmFjayBwb2ludGVyIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbgotICogQHBhcmFtIGNhbGxiYWNrX2RhdGEgcG9pbnRlciB0byBkYXRhIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sKLSAqLwogUkhBU0hfQVBJIHZvaWQgcmhhc2hfc2V0X2NhbGxiYWNrKHJoYXNoIGN0eCwgcmhhc2hfY2FsbGJhY2tfdCBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tfZGF0YSkKIHsKLQkoKHJoYXNoX2NvbnRleHRfZXh0KiljdHgpLT5jYWxsYmFjayA9IGNhbGxiYWNrOworCSgocmhhc2hfY29udGV4dF9leHQqKWN0eCktPmNhbGxiYWNrID0gKHZvaWQqKWNhbGxiYWNrOwogCSgocmhhc2hfY29udGV4dF9leHQqKWN0eCktPmNhbGxiYWNrX2RhdGEgPSBjYWxsYmFja19kYXRhOwogfQogCisvKiBISUdILUxFVkVMIExJQlJIQVNIIElOVEVSRkFDRSAqLwogCi0vKiBoaS1sZXZlbCBtZXNzYWdlIGhhc2hpbmcgaW50ZXJmYWNlICovCi0KLS8qKgotICogQ29tcHV0ZSBhIGhhc2ggb2YgdGhlIGdpdmVuIG1lc3NhZ2UuCi0gKgotICogQHBhcmFtIGhhc2hfaWQgaWQgb2YgaGFzaCBzdW0gdG8gY29tcHV0ZQotICogQHBhcmFtIG1lc3NhZ2UgdGhlIG1lc3NhZ2UgdG8gcHJvY2VzcwotICogQHBhcmFtIGxlbmd0aCBtZXNzYWdlIGxlbmd0aAotICogQHBhcmFtIHJlc3VsdCBidWZmZXIgdG8gcmVjZWl2ZSBiaW5hcnkgaGFzaCBzdHJpbmcKLSAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgotICovCiBSSEFTSF9BUEkgaW50IHJoYXNoX21zZyh1bnNpZ25lZCBoYXNoX2lkLCBjb25zdCB2b2lkKiBtZXNzYWdlLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25lZCBjaGFyKiByZXN1bHQpCiB7CiAJcmhhc2ggY3R4OwpAQCAtMzcyLDIyICszMDcsMTIgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyoqCi0gKiBIYXNoIGEgZmlsZSBvciBzdHJlYW0uIE11bHRpcGxlIGhhc2hlcyBjYW4gYmUgY29tcHV0ZWQuCi0gKiBGaXJzdCwgaW5pbnRpYWxpemUgY3R4IHBhcmFtZXRlciB3aXRoIHJoYXNoX2luaXQoKSBiZWZvcmUgY2FsbGluZwotICogcmhhc2hfZmlsZV91cGRhdGUoKS4gVGhlbiB1c2Ugcmhhc2hfZmluYWwoKSBhbmQgcmhhc2hfcHJpbnQoKQotICogdG8gcmV0cml2ZSBoYXNoIHZhbHVlcy4gRmluYWx5IGNhbGwgcmhhc2hfZnJlZSgpIG9uIGN0eAotICogdG8gZnJlZSBhbGxvY2F0ZWQgbWVtb3J5IG9yIGNhbGwgcmhhc2hfcmVzZXQoKSB0byByZXVzZSBjdHguCi0gKgotICogQHBhcmFtIGN0eCByaGFzaCBjb250ZXh0Ci0gKiBAcGFyYW0gZmQgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBoYXNoCi0gKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IgYW5kIGVycm5vIGlzIHNldAotICovCiBSSEFTSF9BUEkgaW50IHJoYXNoX2ZpbGVfdXBkYXRlKHJoYXNoIGN0eCwgRklMRSogZmQpCiB7CiAJcmhhc2hfY29udGV4dF9leHQqIGNvbnN0IGVjdHggPSAocmhhc2hfY29udGV4dF9leHQqKWN0eDsKIAljb25zdCBzaXplX3QgYmxvY2tfc2l6ZSA9IDgxOTI7Ci0JdW5zaWduZWQgY2hhciAqYnVmZmVyLCAqcG1lbTsKKwl1bnNpZ25lZCBjaGFyKiBidWZmZXI7CisJdW5zaWduZWQgY2hhciogcG1lbTsKIAlzaXplX3QgbGVuZ3RoID0gMCwgYWxpZ244OwogCWludCByZXMgPSAwOwogCWlmIChlY3R4LT5zdGF0ZSAhPSBTVEFURV9BQ1RJVkUpIHJldHVybiAwOyAvKiBkbyBub3RoaW5nIGlmIGNhbmNlbGVkICovCkBAIC00MjUsMTQgKzM1MCw2IEBACiAJcmV0dXJuIHJlczsKIH0KIAotLyoqCi0gKiBDb21wdXRlIGEgc2luZ2xlIGhhc2ggZm9yIGdpdmVuIGZpbGUuCi0gKgotICogQHBhcmFtIGhhc2hfaWQgaWQgb2YgaGFzaCBzdW0gdG8gY29tcHV0ZQotICogQHBhcmFtIGZpbGVwYXRoIHBhdGggdG8gdGhlIGZpbGUgdG8gaGFzaAotICogQHBhcmFtIHJlc3VsdCBidWZmZXIgdG8gcmVjZWl2ZSBoYXNoIHZhbHVlIHdpdGggdGhlIGxvd2VzdCByZXF1ZXN0ZWQgaWQKLSAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvciBhbmQgZXJybm8gaXMgc2V0Ci0gKi8KIFJIQVNIX0FQSSBpbnQgcmhhc2hfZmlsZSh1bnNpZ25lZCBoYXNoX2lkLCBjb25zdCBjaGFyKiBmaWxlcGF0aCwgdW5zaWduZWQgY2hhciogcmVzdWx0KQogewogCUZJTEUqIGZkOwpAQCAtNDQ3LDcgKzM2NCwxMCBAQAogCiAJaWYgKChmZCA9IGZvcGVuKGZpbGVwYXRoLCAicmIiKSkgPT0gTlVMTCkgcmV0dXJuIC0xOwogCi0JaWYgKChjdHggPSByaGFzaF9pbml0KGhhc2hfaWQpKSA9PSBOVUxMKSByZXR1cm4gLTE7CisJaWYgKChjdHggPSByaGFzaF9pbml0KGhhc2hfaWQpKSA9PSBOVUxMKSB7CisJCWZjbG9zZShmZCk7CisJCXJldHVybiAtMTsKKwl9CiAKIAlyZXMgPSByaGFzaF9maWxlX3VwZGF0ZShjdHgsIGZkKTsgLyogaGFzaCB0aGUgZmlsZSAqLwogCWZjbG9zZShmZCk7CkBAIC00NjAsMTQgKzM4MCw2IEBACiAjaWZkZWYgX1dJTjMyIC8qIHdpbmRvd3Mgb25seSBmdW5jdGlvbiAqLwogI2luY2x1ZGUgPHNoYXJlLmg+CiAKLS8qKgotICogQ29tcHV0ZSBhIHNpbmdsZSBoYXNoIGZvciBnaXZlbiBmaWxlLgotICoKLSAqIEBwYXJhbSBoYXNoX2lkIGlkIG9mIGhhc2ggc3VtIHRvIGNvbXB1dGUKLSAqIEBwYXJhbSBmaWxlcGF0aCBwYXRoIHRvIHRoZSBmaWxlIHRvIGhhc2gKLSAqIEBwYXJhbSByZXN1bHQgYnVmZmVyIHRvIHJlY2VpdmUgaGFzaCB2YWx1ZSB3aXRoIHRoZSBsb3dlc3QgcmVxdWVzdGVkIGlkCi0gKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IsIC0xIG9uIGVycm9yIGFuZCBlcnJubyBpcyBzZXQKLSAqLwogUkhBU0hfQVBJIGludCByaGFzaF93ZmlsZSh1bnNpZ25lZCBoYXNoX2lkLCBjb25zdCB3Y2hhcl90KiBmaWxlcGF0aCwgdW5zaWduZWQgY2hhciogcmVzdWx0KQogewogCUZJTEUqIGZkOwpAQCAtNDgyLDcgKzM5NCwxMCBAQAogCiAJaWYgKChmZCA9IF93ZnNvcGVuKGZpbGVwYXRoLCBMInJiIiwgX1NIX0RFTllXUikpID09IE5VTEwpIHJldHVybiAtMTsKIAotCWlmICgoY3R4ID0gcmhhc2hfaW5pdChoYXNoX2lkKSkgPT0gTlVMTCkgcmV0dXJuIC0xOworCWlmICgoY3R4ID0gcmhhc2hfaW5pdChoYXNoX2lkKSkgPT0gTlVMTCkgeworCQlmY2xvc2UoZmQpOworCQlyZXR1cm4gLTE7CisJfQogCiAJcmVzID0gcmhhc2hfZmlsZV91cGRhdGUoY3R4LCBmZCk7IC8qIGhhc2ggdGhlIGZpbGUgKi8KIAlmY2xvc2UoZmQpOwpAQCAtNDk1LDI4ICs0MTAsNyBAQAogCiAvKiBSSGFzaCBpbmZvcm1hdGlvbiBmdW5jdGlvbnMgKi8KIAotLyoqCi0gKiBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgaGFzaCBmdW5jdGlvbiBieSBpdHMgaGFzaF9pZC4KLSAqCi0gKiBAcGFyYW0gaGFzaF9pZCB0aGUgaWQgb2YgaGFzaCBhbGdvcml0aG0KLSAqIEByZXR1cm4gcG9pbnRlciB0byB0aGUgcmhhc2hfaW5mbyBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgaW5mb3JtYXRpb24KLSAqLwotY29uc3Qgcmhhc2hfaW5mbyogcmhhc2hfaW5mb19ieV9pZCh1bnNpZ25lZCBoYXNoX2lkKQotewotCWhhc2hfaWQgJj0gUkhBU0hfQUxMX0hBU0hFUzsKLQkvKiBjaGVjayB0aGF0IG9ubHkgb25lIGJpdCBpcyBzZXQgKi8KLQlpZiAoaGFzaF9pZCAhPSAoaGFzaF9pZCAmIC0oaW50KWhhc2hfaWQpKSByZXR1cm4gTlVMTDsKLQkvKiBub3RlOiBhbHRlcm5hdGl2ZSBjb25kaXRpb24gaXMgKGhhc2hfaWQgPT0gMCB8fCAoaGFzaF9pZCAmIChoYXNoX2lkIC0gMSkpICE9IDApICovCi0JcmV0dXJuIHJoYXNoX2luZm9fdGFibGVbcmhhc2hfY3R6KGhhc2hfaWQpXS5pbmZvOwotfQotCiAjaWYgMAotLyoqCi0gKiBEZXRlY3QgZGVmYXVsdCBkaWdlc3Qgb3V0cHV0IGZvcm1hdCBmb3IgZ2l2ZW4gaGFzaCBhbGdvcml0aG0uCi0gKgotICogQHBhcmFtIGhhc2hfaWQgdGhlIGlkIG9mIGhhc2ggYWxnb3JpdGhtCi0gKiBAcmV0dXJuIDEgZm9yIGJhc2UzMiBmb3JtYXQsIDAgZm9yIGhleGFkZWNpbWFsCi0gKi8KIFJIQVNIX0FQSSBpbnQgcmhhc2hfaXNfYmFzZTMyKHVuc2lnbmVkIGhhc2hfaWQpCiB7CiAJLyogZmFzdCBtZXRob2QgaXMganVzdCB0byB0ZXN0IGEgYml0LW1hc2sgKi8KQEAgLTUyNCwxMiArNDE4LDYgQEAKIH0KICNlbmRpZgogCi0vKioKLSAqIFJldHVybnMgc2l6ZSBvZiBiaW5hcnkgZGlnZXN0IGZvciBnaXZlbiBoYXNoIGFsZ29yaXRobS4KLSAqCi0gKiBAcGFyYW0gaGFzaF9pZCB0aGUgaWQgb2YgaGFzaCBhbGdvcml0aG0KLSAqIEByZXR1cm4gZGlnZXN0IHNpemUgaW4gYnl0ZXMKLSAqLwogUkhBU0hfQVBJIGludCByaGFzaF9nZXRfZGlnZXN0X3NpemUodW5zaWduZWQgaGFzaF9pZCkKIHsKIAloYXNoX2lkICY9IFJIQVNIX0FMTF9IQVNIRVM7CkBAIC01MzcsMTIgKzQyNSw2IEBACiAJcmV0dXJuIChpbnQpcmhhc2hfaW5mb190YWJsZVtyaGFzaF9jdHooaGFzaF9pZCldLmluZm8tPmRpZ2VzdF9zaXplOwogfQogCi0vKioKLSAqIFJldHVybnMgbGVuZ3RoIG9mIGRpZ2VzdCBoYXNoIHN0cmluZyBpbiBkZWZhdWx0IG91dHB1dCBmb3JtYXQuCi0gKgotICogQHBhcmFtIGhhc2hfaWQgdGhlIGlkIG9mIGhhc2ggYWxnb3JpdGhtCi0gKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgaGFzaCBzdHJpbmcKLSAqLwogUkhBU0hfQVBJIGludCByaGFzaF9nZXRfaGFzaF9sZW5ndGgodW5zaWduZWQgaGFzaF9pZCkKIHsKIAljb25zdCByaGFzaF9pbmZvKiBpbmZvID0gcmhhc2hfaW5mb19ieV9pZChoYXNoX2lkKTsKQEAgLTU1MCwyNiArNDMyLDEyIEBACiAJCUJBU0UzMl9MRU5HVEgoaW5mby0+ZGlnZXN0X3NpemUpIDogaW5mby0+ZGlnZXN0X3NpemUgKiAyKSA6IDApOwogfQogCi0vKioKLSAqIFJldHVybnMgYSBuYW1lIG9mIGdpdmVuIGhhc2ggYWxnb3JpdGhtLgotICoKLSAqIEBwYXJhbSBoYXNoX2lkIHRoZSBpZCBvZiBoYXNoIGFsZ29yaXRobQotICogQHJldHVybiBhbGdvcml0aG0gbmFtZQotICovCiBSSEFTSF9BUEkgY29uc3QgY2hhciogcmhhc2hfZ2V0X25hbWUodW5zaWduZWQgaGFzaF9pZCkKIHsKIAljb25zdCByaGFzaF9pbmZvKiBpbmZvID0gcmhhc2hfaW5mb19ieV9pZChoYXNoX2lkKTsKIAlyZXR1cm4gKGluZm8gPyBpbmZvLT5uYW1lIDogMCk7CiB9CiAKLS8qKgotICogUmV0dXJucyBhIG5hbWUgcGFydCBvZiBtYWduZXQgdXJuIG9mIHRoZSBnaXZlbiBoYXNoIGFsZ29yaXRobS4KLSAqIFN1Y2ggbWFnbmV0X25hbWUgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIG1hZ25ldCBsaW5rIG9mIHRoZSBmb3JtCi0gKiB1cm46Jmx0O21hZ25ldF9uYW1lJmd0Oz0mbHQ7aGFzaF92YWx1ZSZndDsuCi0gKgotICogQHBhcmFtIGhhc2hfaWQgdGhlIGlkIG9mIGhhc2ggYWxnb3JpdGhtCi0gKiBAcmV0dXJuIG5hbWUKLSAqLwogUkhBU0hfQVBJIGNvbnN0IGNoYXIqIHJoYXNoX2dldF9tYWduZXRfbmFtZSh1bnNpZ25lZCBoYXNoX2lkKQogewogCWNvbnN0IHJoYXNoX2luZm8qIGluZm8gPSByaGFzaF9pbmZvX2J5X2lkKGhhc2hfaWQpOwpAQCAtNTk5LDcgKzQ2Nyw3IEBACiAJfQogCiAJaWYgKGZpbGVwYXRoKSB7Ci0JCXNpemUgKz0gNCArIHJoYXNoX3VybGVuY29kZShOVUxMLCBmaWxlcGF0aCk7CisJCXNpemUgKz0gNCArIHJoYXNoX3VybGVuY29kZShOVUxMLCBmaWxlcGF0aCwgc3RybGVuKGZpbGVwYXRoKSwgMCk7CiAJfQogCiAJLyogbG9vcCB0aHJvdWdoIGhhc2ggdmFsdWVzICovCkBAIC02MTAsMzQgKzQ3OCwyMCBAQAogCiAJCXNpemUgKz0gKDcgKyAyKSArIHN0cmxlbihuYW1lKTsKIAkJc2l6ZSArPSByaGFzaF9wcmludChOVUxMLCBjb250ZXh0LCBiaXQsCi0JCQkoYml0ICYgKFJIQVNIX1NIQTEgfCBSSEFTSF9CVElIKSA/IFJIUFJfQkFTRTMyIDogMCkpOworCQkJKGJpdCAmIFJIQVNIX1NIQTEgPyBSSFBSX0JBU0UzMiA6IDApKTsKIAl9CiAKIAlyZXR1cm4gc2l6ZTsKIH0KIAotLyoqCi0gKiBQcmludCBtYWduZXQgbGluayB3aXRoIGdpdmVuIGZpbGVwYXRoIGFuZCBjYWxjdWxhdGVkIGhhc2ggc3VtcyBpbnRvIHRoZQotICogb3V0cHV0IGJ1ZmZlci4gVGhlIGhhc2hfbWFzayBjYW4gbGltaXQgd2hpY2ggaGFzaCB2YWx1ZXMgd2lsbCBiZSBwcmludGVkLgotICogVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIHJlcXVpcmVkIGJ1ZmZlci4KLSAqIElmIG91dHB1dCBpcyBOVUxMIHRoZSAuCi0gKgotICogQHBhcmFtIG91dHB1dCBhIHN0cmluZyBidWZmZXIgdG8gcmVjZWl2ZSB0aGUgbWFnbmV0IGxpbmsgb3IgTlVMTAotICogQHBhcmFtIGZpbGVwYXRoIHRoZSBmaWxlIHBhdGggdG8gYmUgcHJpbnRlZCBvciBOVUxMCi0gKiBAcGFyYW0gY29udGV4dCBhbGdvcml0aG1zIHN0YXRlCi0gKiBAcGFyYW0gaGFzaF9tYXNrIGJpdCBtYXNrIG9mIHRoZSBoYXNoIHN1bXMgdG8gYWRkIHRvIHRoZSBsaW5rCi0gKiBAcGFyYW0gZmxhZ3MgICBjYW4gYmUgY29tYmluYXRpb24gb2YgYml0cyBSSFBSX1VQUEVSQ0FTRSwgUkhQUl9OT19NQUdORVQsCi0gKiAgICAgICAgICAgICAgICBSSFBSX0ZJTEVTSVpFCi0gKiBAcmV0dXJuIG51bWJlciBvZiB3cml0dGVuIGNoYXJhY3RlcnMsIGluY2x1ZGluZyB0ZXJtaW5hdGluZyAnXDAnIG9uIHN1Y2Nlc3MsIDAgb24gZmFpbAotICovCiBSSEFTSF9BUEkgc2l6ZV90IHJoYXNoX3ByaW50X21hZ25ldChjaGFyKiBvdXRwdXQsIGNvbnN0IGNoYXIqIGZpbGVwYXRoLAogCXJoYXNoIGNvbnRleHQsIHVuc2lnbmVkIGhhc2hfbWFzaywgaW50IGZsYWdzKQogewogCWludCBpOwogCWNvbnN0IGNoYXIqIGJlZ2luID0gb3V0cHV0OwogCi0JaWYgKG91dHB1dCA9PSBOVUxMKSByZXR1cm4gcmhhc2hfZ2V0X21hZ25ldF91cmxfc2l6ZSgKLQkJZmlsZXBhdGgsIGNvbnRleHQsIGhhc2hfbWFzaywgZmxhZ3MpOworCWlmIChvdXRwdXQgPT0gTlVMTCkKKwkJcmV0dXJuIHJoYXNoX2dldF9tYWduZXRfdXJsX3NpemUoZmlsZXBhdGgsIGNvbnRleHQsIGhhc2hfbWFzaywgZmxhZ3MpOwogCiAJLyogUkhQUl9OT19NQUdORVQsIFJIUFJfRklMRVNJWkUgKi8KIAlpZiAoKGZsYWdzICYgUkhQUl9OT19NQUdORVQpID09IDApIHsKQEAgLTY1MiwxMyArNTA2LDEzIEBACiAJCSoob3V0cHV0KyspID0gJyYnOwogCX0KIAorCWZsYWdzICY9IFJIUFJfVVBQRVJDQVNFOwogCWlmIChmaWxlcGF0aCkgewogCQlzdHJjcHkob3V0cHV0LCAiZG49Iik7CiAJCW91dHB1dCArPSAzOwotCQlvdXRwdXQgKz0gcmhhc2hfdXJsZW5jb2RlKG91dHB1dCwgZmlsZXBhdGgpOworCQlvdXRwdXQgKz0gcmhhc2hfdXJsZW5jb2RlKG91dHB1dCwgZmlsZXBhdGgsIHN0cmxlbihmaWxlcGF0aCksIGZsYWdzKTsKIAkJKihvdXRwdXQrKykgPSAnJic7CiAJfQotCWZsYWdzICY9IFJIUFJfVVBQRVJDQVNFOwogCiAJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewogCQl1bnNpZ25lZCBiaXQ7CkBAIC02NzksNyArNTMzLDcgQEAKIAkJCW91dHB1dCArPSBzdHJsZW4obmFtZSk7CiAJCQkqKG91dHB1dCsrKSA9ICc6JzsKIAkJCW91dHB1dCArPSByaGFzaF9wcmludChvdXRwdXQsIGNvbnRleHQsIGJpdCwKLQkJCQkoYml0ICYgKFJIQVNIX1NIQTEgfCBSSEFTSF9CVElIKSA/IGZsYWdzIHwgUkhQUl9CQVNFMzIgOiBmbGFncykpOworCQkJCShiaXQgJiBSSEFTSF9TSEExID8gZmxhZ3MgfCBSSFBSX0JBU0UzMiA6IGZsYWdzKSk7CiAJCQkqKG91dHB1dCsrKSA9ICcmJzsKIAkJfQogCX0KQEAgLTY4OCw2MiArNTQyLDM5IEBACiAJcmV0dXJuIChvdXRwdXQgLSBiZWdpbik7CiB9CiAKLS8qIGhhc2ggc3VtIG91dHB1dCAqLwogCi0vKioKLSAqIFByaW50IGEgdGV4dCBwcmVzZW50YXRpb24gb2YgYSBnaXZlbiBoYXNoIHN1bSB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlciwKLSAqCi0gKiBAcGFyYW0gb3V0cHV0IGEgYnVmZmVyIHRvIHByaW50IHRoZSBoYXNoIHRvCi0gKiBAcGFyYW0gYnl0ZXMgYSBoYXNoIHN1bSB0byBwcmludAotICogQHBhcmFtIHNpemUgYSBzaXplIG9mIGhhc2ggc3VtIGluIGJ5dGVzCi0gKiBAcGFyYW0gZmxhZ3MgIGEgYml0LW1hc2sgY29udHJvbGxpbmcgaG93IHRvIGZvcm1hdCB0aGUgaGFzaCBzdW0sCi0gKiAgICAgICAgICAgICAgIGNhbiBiZSBhIG1peCBvZiB0aGUgZmxhZ3M6IFJIUFJfUkFXLCBSSFBSX0hFWCwgUkhQUl9CQVNFMzIsCi0gKiAgICAgICAgICAgICAgIFJIUFJfQkFTRTY0LCBSSFBSX1VQUEVSQ0FTRSwgUkhQUl9SRVZFUlNFCi0gKiBAcmV0dXJuIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXJzCi0gKi8KLXNpemVfdCByaGFzaF9wcmludF9ieXRlcyhjaGFyKiBvdXRwdXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLAotCXNpemVfdCBzaXplLCBpbnQgZmxhZ3MpCisvKiBIQVNIIFNVTSBPVVRQVVQgSU5URVJGQUNFICovCisKK3NpemVfdCByaGFzaF9wcmludF9ieXRlcyhjaGFyKiBvdXRwdXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKQogewotCXNpemVfdCBzdHJfbGVuOworCXNpemVfdCByZXN1bHRfbGVuZ3RoOwogCWludCB1cHBlcl9jYXNlID0gKGZsYWdzICYgUkhQUl9VUFBFUkNBU0UpOwogCWludCBmb3JtYXQgPSAoZmxhZ3MgJiB+UkhQUl9NT0RJRklFUik7CiAKIAlzd2l0Y2ggKGZvcm1hdCkgewogCWNhc2UgUkhQUl9IRVg6Ci0JCXN0cl9sZW4gPSBzaXplICogMjsKLQkJcmhhc2hfYnl0ZV90b19oZXgob3V0cHV0LCBieXRlcywgKHVuc2lnbmVkKXNpemUsIHVwcGVyX2Nhc2UpOworCQlyZXN1bHRfbGVuZ3RoID0gc2l6ZSAqIDI7CisJCXJoYXNoX2J5dGVfdG9faGV4KG91dHB1dCwgYnl0ZXMsIHNpemUsIHVwcGVyX2Nhc2UpOwogCQlicmVhazsKIAljYXNlIFJIUFJfQkFTRTMyOgotCQlzdHJfbGVuID0gQkFTRTMyX0xFTkdUSChzaXplKTsKLQkJcmhhc2hfYnl0ZV90b19iYXNlMzIob3V0cHV0LCBieXRlcywgKHVuc2lnbmVkKXNpemUsIHVwcGVyX2Nhc2UpOworCQlyZXN1bHRfbGVuZ3RoID0gQkFTRTMyX0xFTkdUSChzaXplKTsKKwkJcmhhc2hfYnl0ZV90b19iYXNlMzIob3V0cHV0LCBieXRlcywgc2l6ZSwgdXBwZXJfY2FzZSk7CiAJCWJyZWFrOwogCWNhc2UgUkhQUl9CQVNFNjQ6Ci0JCXN0cl9sZW4gPSBCQVNFNjRfTEVOR1RIKHNpemUpOwotCQlyaGFzaF9ieXRlX3RvX2Jhc2U2NChvdXRwdXQsIGJ5dGVzLCAodW5zaWduZWQpc2l6ZSk7CisJCXJlc3VsdF9sZW5ndGggPSByaGFzaF9iYXNlNjRfdXJsX2VuY29kZWRfaGVscGVyKG91dHB1dCwgYnl0ZXMsIHNpemUsIChmbGFncyAmIFJIUFJfVVJMRU5DT0RFKSwgdXBwZXJfY2FzZSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCXN0cl9sZW4gPSBzaXplOwotCQltZW1jcHkob3V0cHV0LCBieXRlcywgc2l6ZSk7CisJCWlmIChmbGFncyAmIFJIUFJfVVJMRU5DT0RFKSB7CisJCQlyZXN1bHRfbGVuZ3RoID0gcmhhc2hfdXJsZW5jb2RlKG91dHB1dCwgKGNoYXIqKWJ5dGVzLCBzaXplLCB1cHBlcl9jYXNlKTsKKwkJfSBlbHNlIHsKKwkJCW1lbWNweShvdXRwdXQsIGJ5dGVzLCBzaXplKTsKKwkJCXJlc3VsdF9sZW5ndGggPSBzaXplOworCQl9CiAJCWJyZWFrOwogCX0KLQlyZXR1cm4gc3RyX2xlbjsKKwlyZXR1cm4gcmVzdWx0X2xlbmd0aDsKIH0KIAotLyoqCi0gKiBQcmludCB0ZXh0IHByZXNlbnRhdGlvbiBvZiBhIGhhc2ggc3VtIHdpdGggZ2l2ZW4gaGFzaF9pZCB0byB0aGUgc3BlY2lmaWVkCi0gKiBvdXRwdXQgYnVmZmVyLiBJZiB0aGUgaGFzaF9pZCBpcyB6ZXJvLCB0aGVuIHByaW50IHRoZSBoYXNoIHN1bSB3aXRoCi0gKiB0aGUgbG93ZXN0IGlkIHN0b3JlZCBpbiB0aGUgaGFzaCBjb250ZXh0LgotICogVGhlIGZ1bmN0aW9uIGNhbGwgZmFpbHMgaWYgdGhlIGNvbnRleHQgZG9lc24ndCBpbmNsdWRlIGEgaGFzaCB3aXRoIHRoZQotICogZ2l2ZW4gaGFzaF9pZC4KLSAqCi0gKiBAcGFyYW0gb3V0cHV0IGEgYnVmZmVyIHRvIHByaW50IHRoZSBoYXNoIHRvCi0gKiBAcGFyYW0gY29udGV4dCBhbGdvcml0aG1zIHN0YXRlCi0gKiBAcGFyYW0gaGFzaF9pZCBpZCBvZiB0aGUgaGFzaCBzdW0gdG8gcHJpbnQgb3IgMCB0byBwcmludCB0aGUgZmlyc3QgaGFzaAotICogICAgICAgICAgICAgICAgc2F2ZWQgaW4gdGhlIGNvbnRleHQuCi0gKiBAcGFyYW0gZmxhZ3MgIGEgYml0bWFzayBjb250cm9sbGluZyBob3cgdG8gcHJpbnQgdGhlIGhhc2guIENhbiBjb250YWluIGZsYWdzCi0gKiAgICAgICAgICAgICAgIFJIUFJfVVBQRVJDQVNFLCBSSFBSX0hFWCwgUkhQUl9CQVNFMzIsIFJIUFJfQkFTRTY0LCBldGMuCi0gKiBAcmV0dXJuIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXJzIG9uIHN1Y2Nlc3Mgb3IgMCBvbiBmYWlsCi0gKi8KIHNpemVfdCBSSEFTSF9BUEkgcmhhc2hfcHJpbnQoY2hhciogb3V0cHV0LCByaGFzaCBjb250ZXh0LCB1bnNpZ25lZCBoYXNoX2lkLCBpbnQgZmxhZ3MpCiB7CiAJY29uc3Qgcmhhc2hfaW5mbyogaW5mbzsKQEAgLTc2NCwxNSArNTk1LDE2IEBACiAJfQogCiAJaWYgKG91dHB1dCA9PSBOVUxMKSB7CisJCXNpemVfdCBtdWx0aXBsaWVyID0gKGZsYWdzICYgUkhQUl9VUkxFTkNPREUgPyAzIDogMSk7CiAJCXN3aXRjaCAoZmxhZ3MgJiBSSFBSX0ZPUk1BVCkgewogCQljYXNlIFJIUFJfSEVYOgogCQkJcmV0dXJuIChkaWdlc3Rfc2l6ZSAqIDIpOwogCQljYXNlIFJIUFJfQkFTRTMyOgogCQkJcmV0dXJuIEJBU0UzMl9MRU5HVEgoZGlnZXN0X3NpemUpOwogCQljYXNlIFJIUFJfQkFTRTY0OgotCQkJcmV0dXJuIEJBU0U2NF9MRU5HVEgoZGlnZXN0X3NpemUpOworCQkJcmV0dXJuIEJBU0U2NF9MRU5HVEgoZGlnZXN0X3NpemUpICogbXVsdGlwbGllcjsKIAkJZGVmYXVsdDoKLQkJCXJldHVybiBkaWdlc3Rfc2l6ZTsKKwkJCXJldHVybiBkaWdlc3Rfc2l6ZSAqIG11bHRpcGxpZXI7CiAJCX0KIAl9CiAKQEAgLTc4MSw3ICs2MTMsOCBAQAogCiAJaWYgKChmbGFncyAmIH5SSFBSX1VQUEVSQ0FTRSkgPT0gKFJIUFJfUkVWRVJTRSB8IFJIUFJfSEVYKSkgewogCQkvKiByZXZlcnNlIHRoZSBkaWdlc3QgKi8KLQkJdW5zaWduZWQgY2hhciAqcCA9IGRpZ2VzdCwgKnIgPSBkaWdlc3QgKyBkaWdlc3Rfc2l6ZSAtIDE7CisJCXVuc2lnbmVkIGNoYXIqIHAgPSBkaWdlc3Q7CisJCXVuc2lnbmVkIGNoYXIqIHIgPSBkaWdlc3QgKyBkaWdlc3Rfc2l6ZSAtIDE7CiAJCWNoYXIgdG1wOwogCQlmb3IgKDsgcCA8IHI7IHArKywgci0tKSB7CiAJCQl0bXAgPSAqcDsKQEAgLTc5Myw3ICs2MjYsNyBAQAogCXJldHVybiByaGFzaF9wcmludF9ieXRlcyhvdXRwdXQsIGRpZ2VzdCwgZGlnZXN0X3NpemUsIGZsYWdzKTsKIH0KIAotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVkKFJIQVNIX0VYUE9SVFMpCisjaWYgKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pKSAmJiBkZWZpbmVkKFJIQVNIX0VYUE9SVFMpCiAjaW5jbHVkZSA8d2luZG93cy5oPgogQk9PTCBBUElFTlRSWSBEbGxNYWluKEhNT0RVTEUgaE1vZHVsZSwgRFdPUkQgcmVhc29uLCBMUFZPSUQgcmVzZXJ2ZWQpOwogQk9PTCBBUElFTlRSWSBEbGxNYWluKEhNT0RVTEUgaE1vZHVsZSwgRFdPUkQgcmVhc29uLCBMUFZPSUQgcmVzZXJ2ZWQpCkBAIC04MTQsMTcgKzY0Nyw4IEBACiB9CiAjZW5kaWYKIAotI2RlZmluZSBQVk9JRDJVUFRSKHApICgocmhhc2hfdXB0cl90KSgoY2hhciopcCAtIDApKQorI2RlZmluZSBQVk9JRDJVUFRSKHApICgocmhhc2hfdXB0cl90KSgoKGNoYXIqKShwKSkgKyAwKSkKIAotLyoqCi0gKiBQcm9jZXNzIGEgcmhhc2ggbWVzc2FnZS4KLSAqCi0gKiBAcGFyYW0gbXNnX2lkIG1lc3NhZ2UgaWRlbnRpZmllcgotICogQHBhcmFtIGRzdCBtZXNzYWdlIGRlc3RpbmF0aW9uIChjYW4gYmUgTlVMTCBmb3IgZ2VuZXJpYyBtZXNzYWdlcykKLSAqIEBwYXJhbSBsZGF0YSBkYXRhIGRlcGVuZGluZyBvbiBtZXNzYWdlCi0gKiBAcGFyYW0gcmRhdGEgZGF0YSBkZXBlbmRpbmcgb24gbWVzc2FnZQotICogQHJldHVybiBtZXNzYWdlLXNwZWNpZmljIGRhdGEKLSAqLwogUkhBU0hfQVBJIHJoYXNoX3VwdHJfdCByaGFzaF90cmFuc21pdCh1bnNpZ25lZCBtc2dfaWQsIHZvaWQqIGRzdCwgcmhhc2hfdXB0cl90IGxkYXRhLCByaGFzaF91cHRyX3QgcmRhdGEpCiB7CiAJLyogZm9yIG1lc3NhZ2VzIHdvcmtpbmcgd2l0aCByaGFzaCBjb250ZXh0ICovCkBAIC04NjUsNiArNjg5LDEwIEBACiAJY2FzZSBSTVNHX0dFVF9PUEVOU1NMX01BU0s6CiAJCXJldHVybiByaGFzaF9vcGVuc3NsX2hhc2hfbWFzazsKICNlbmRpZgorCWNhc2UgUk1TR19HRVRfT1BFTlNTTF9TVVBQT1JURURfTUFTSzoKKwkJcmV0dXJuIHJoYXNoX2dldF9vcGVuc3NsX3N1cHBvcnRlZF9oYXNoX21hc2soKTsKKwljYXNlIFJNU0dfR0VUX09QRU5TU0xfQVZBSUxBQkxFX01BU0s6CisJCXJldHVybiByaGFzaF9nZXRfb3BlbnNzbF9hdmFpbGFibGVfaGFzaF9tYXNrKCk7CiAKIAlkZWZhdWx0OgogCQlyZXR1cm4gUkhBU0hfRVJST1I7IC8qIHVua25vd24gbWVzc2FnZSAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvcmhhc2guaCBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL3JoYXNoLmgKaW5kZXggY2VlMGUyNS4uYzAxMTc2MiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvcmhhc2guaAorKysgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9yaGFzaC5oCkBAIC05LDcgKzksOSBAQAogI2VuZGlmCiAKICNpZm5kZWYgUkhBU0hfQVBJCi0vKiBtb2RpZmllciBmb3IgTGliUkhhc2ggZnVuY3Rpb25zICovCisvKioKKyAqIE1vZGlmaWVyIGZvciBMaWJSSGFzaCBmdW5jdGlvbnMKKyAqLwogIyBkZWZpbmUgUkhBU0hfQVBJCiAjZW5kaWYKIApAQCAtMzIsMTEgKzM0LDExIEBACiAJUkhBU0hfQUlDSCAgPSAweDEwMCwKIAlSSEFTSF9XSElSTFBPT0wgPSAweDIwMCwKIAlSSEFTSF9SSVBFTUQxNjAgPSAweDQwMCwKLQlSSEFTSF9HT1NUICAgICAgPSAweDgwMCwKLQlSSEFTSF9HT1NUX0NSWVBUT1BSTyA9IDB4MTAwMCwKLQlSSEFTSF9IQVMxNjAgICAgPSAweDIwMDAsCi0JUkhBU0hfU05FRlJVMTI4ID0gMHg0MDAwLAotCVJIQVNIX1NORUZSVTI1NiA9IDB4ODAwMCwKKwlSSEFTSF9HT1NUOTQgICAgPSAweDgwMCwKKwlSSEFTSF9HT1NUOTRfQ1JZUFRPUFJPID0gMHgxMDAwLAorCVJIQVNIX0hBUzE2MCAgICAgPSAweDIwMDAsCisJUkhBU0hfR09TVDEyXzI1NiA9IDB4NDAwMCwKKwlSSEFTSF9HT1NUMTJfNTEyID0gMHg4MDAwLAogCVJIQVNIX1NIQTIyNCAgICA9IDB4MTAwMDAsCiAJUkhBU0hfU0hBMjU2ICAgID0gMHgyMDAwMCwKIAlSSEFTSF9TSEEzODQgICAgPSAweDQwMDAwLApAQCAtNDcsMTggKzQ5LDI4IEBACiAJUkhBU0hfU0hBM18yNTYgID0gMHgwODAwMDAwLAogCVJIQVNIX1NIQTNfMzg0ICA9IDB4MTAwMDAwMCwKIAlSSEFTSF9TSEEzXzUxMiAgPSAweDIwMDAwMDAsCisJUkhBU0hfQ1JDMzJDICAgID0gMHg0MDAwMDAwLAorCVJIQVNIX1NORUZSVTEyOCA9IDB4ODAwMDAwMCwKKwlSSEFTSF9TTkVGUlUyNTYgPSAweDEwMDAwMDAwLAogCi0JLyoqIFRoZSBiaXQtbWFzayBjb250YWluaW5nIGFsbCBzdXBwb3J0ZWQgaGFzaGUgZnVuY3Rpb25zICovCi0JUkhBU0hfQUxMX0hBU0hFUyA9IFJIQVNIX0NSQzMyIHwgUkhBU0hfTUQ0IHwgUkhBU0hfTUQ1IHwgUkhBU0hfRUQySyB8IFJIQVNIX1NIQTEgfAotCQlSSEFTSF9USUdFUiB8IFJIQVNIX1RUSCB8IFJIQVNIX0dPU1QgfCBSSEFTSF9HT1NUX0NSWVBUT1BSTyB8CisJLyoqCisJICogVGhlIGJpdC1tYXNrIGNvbnRhaW5pbmcgYWxsIHN1cHBvcnRlZCBoYXNoZSBmdW5jdGlvbnMuCisJICovCisJUkhBU0hfQUxMX0hBU0hFUyA9IFJIQVNIX0NSQzMyIHwgUkhBU0hfQ1JDMzJDIHwgUkhBU0hfTUQ0IHwgUkhBU0hfTUQ1IHwKKwkJUkhBU0hfRUQySyB8IFJIQVNIX1NIQTEgfFJIQVNIX1RJR0VSIHwgUkhBU0hfVFRIIHwKKwkJUkhBU0hfR09TVDk0IHwgUkhBU0hfR09TVDk0X0NSWVBUT1BSTyB8IFJIQVNIX0dPU1QxMl8yNTYgfCBSSEFTSF9HT1NUMTJfNTEyIHwKIAkJUkhBU0hfQlRJSCB8IFJIQVNIX0FJQ0ggfCBSSEFTSF9XSElSTFBPT0wgfCBSSEFTSF9SSVBFTUQxNjAgfAogCQlSSEFTSF9IQVMxNjAgfCBSSEFTSF9TTkVGUlUxMjggfCBSSEFTSF9TTkVGUlUyNTYgfAogCQlSSEFTSF9TSEEyMjQgfCBSSEFTSF9TSEEyNTYgfCBSSEFTSF9TSEEzODQgfCBSSEFTSF9TSEE1MTIgfAogCQlSSEFTSF9TSEEzXzIyNCB8IFJIQVNIX1NIQTNfMjU2IHwgUkhBU0hfU0hBM18zODQgfCBSSEFTSF9TSEEzXzUxMiB8CiAJCVJIQVNIX0VET05SMjU2IHwgUkhBU0hfRURPTlI1MTIsCiAKLQkvKiogVGhlIG51bWJlciBvZiBzdXBwb3J0ZWQgaGFzaCBmdW5jdGlvbnMgKi8KLQlSSEFTSF9IQVNIX0NPVU5UID0gMjYKKwlSSEFTSF9HT1NUID0gUkhBU0hfR09TVDk0LCAvKiBkZXByZWNhdGVkIGNvbnN0YW50IG5hbWUgKi8KKwlSSEFTSF9HT1NUX0NSWVBUT1BSTyA9IFJIQVNIX0dPU1Q5NF9DUllQVE9QUk8sIC8qIGRlcHJlY2F0ZWQgY29uc3RhbnQgbmFtZSAqLworCS8qKgorCSAqIFRoZSBudW1iZXIgb2Ygc3VwcG9ydGVkIGhhc2ggZnVuY3Rpb25zLgorCSAqLworCVJIQVNIX0hBU0hfQ09VTlQgPSAyOQogI2Vsc2UKIAlSSEFTSF9NRDUgICAgICAgID0gMHgwMSwKIAlSSEFTSF9TSEExICAgICAgID0gMHgwMiwKQEAgLTg2LDE1ICs5OCwxNyBAQAogfTsKIAogLyoqCi0gKiBUaGUgcmhhc2ggY29udGV4dCBzdHJ1Y3R1cmUgY29udGFpbnMgY29udGV4dHMgZm9yIHNldmVyYWwgaGFzaCBmdW5jdGlvbnMKKyAqIFRoZSByaGFzaCBjb250ZXh0IHN0cnVjdHVyZSBjb250YWlucyBjb250ZXh0cyBmb3Igc2V2ZXJhbCBoYXNoIGZ1bmN0aW9ucy4KICAqLwogdHlwZWRlZiBzdHJ1Y3Qgcmhhc2hfY29udGV4dAogewotCS8qKiBUaGUgc2l6ZSBvZiB0aGUgaGFzaGVkIG1lc3NhZ2UgKi8KKwkvKioKKwkgKiBUaGUgc2l6ZSBvZiB0aGUgaGFzaGVkIG1lc3NhZ2UuCisJICovCiAJdW5zaWduZWQgbG9uZyBsb25nIG1zZ19zaXplOwogCiAJLyoqCi0JICogVGhlIGJpdC1tYXNrIGNvbnRhaW5pbmcgaWRlbnRpZmllcnMgb2YgdGhlIGhhc2hlcyBiZWluZyBjYWxjdWxhdGVkCisJICogVGhlIGJpdC1tYXNrIGNvbnRhaW5pbmcgaWRlbnRpZmllcnMgb2YgdGhlIGhhc2hlcyBiZWluZyBjYWxjdWxhdGVkLgogCSAqLwogCXVuc2lnbmVkIGhhc2hfaWQ7CiB9IHJoYXNoX2NvbnRleHQ7CkBAIC0xMDcsMTA5ICsxMjEsMjg1IEBACiB0eXBlZGVmIHN0cnVjdCByaGFzaF9jb250ZXh0KiByaGFzaDsKICNlbmRpZiAvKiBMSUJSSEFTSF9SSEFTSF9DVFhfREVGSU5FRCAqLwogCi0vKiogdHlwZSBvZiBhIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBwZXJpb2RpY2FsbHkgd2hpbGUgaGFzaGluZyBhIGZpbGUgKi8KKy8qKgorICogVHlwZSBvZiBhIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBwZXJpb2RpY2FsbHkgd2hpbGUgaGFzaGluZyBhIGZpbGUuCisgKi8KIHR5cGVkZWYgdm9pZCAoKnJoYXNoX2NhbGxiYWNrX3QpKHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBvZmZzZXQpOwogCi1SSEFTSF9BUEkgdm9pZCByaGFzaF9saWJyYXJ5X2luaXQodm9pZCk7IC8qIGluaXRpYWxpemUgc3RhdGljIGRhdGEgKi8KKy8qKgorICogSW5pdGlhbGl6ZSBzdGF0aWMgZGF0YSBvZiByaGFzaCBhbGdvcml0aG1zCisgKi8KK1JIQVNIX0FQSSB2b2lkIHJoYXNoX2xpYnJhcnlfaW5pdCh2b2lkKTsKIAotLyogaGktbGV2ZWwgaGFzaGluZyBmdW5jdGlvbnMgKi8KKworLyogSElHSC1MRVZFTCBMSUJSSEFTSCBJTlRFUkZBQ0UgKi8KKworLyoqCisgKiBDb21wdXRlIGEgaGFzaCBvZiB0aGUgZ2l2ZW4gbWVzc2FnZS4KKyAqCisgKiBAcGFyYW0gaGFzaF9pZCBpZCBvZiBoYXNoIHN1bSB0byBjb21wdXRlCisgKiBAcGFyYW0gbWVzc2FnZSB0aGUgbWVzc2FnZSB0byBwcm9jZXNzCisgKiBAcGFyYW0gbGVuZ3RoIG1lc3NhZ2UgbGVuZ3RoCisgKiBAcGFyYW0gcmVzdWx0IGJ1ZmZlciB0byByZWNlaXZlIGJpbmFyeSBoYXNoIHN0cmluZworICogQHJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisgKi8KIFJIQVNIX0FQSSBpbnQgcmhhc2hfbXNnKHVuc2lnbmVkIGhhc2hfaWQsIGNvbnN0IHZvaWQqIG1lc3NhZ2UsIHNpemVfdCBsZW5ndGgsIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCk7Ci1SSEFTSF9BUEkgaW50IHJoYXNoX2ZpbGUodW5zaWduZWQgaGFzaF9pZCwgY29uc3QgY2hhciogZmlsZXBhdGgsIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCk7Ci1SSEFTSF9BUEkgaW50IHJoYXNoX2ZpbGVfdXBkYXRlKHJoYXNoIGN0eCwgRklMRSogZmQpOwogCi0jaWZkZWYgX1dJTjMyIC8qIHdpbmRvd3Mgb25seSBmdW5jdGlvbiAqLworLyoqCisgKiBDb21wdXRlIGEgc2luZ2xlIGhhc2ggZm9yIGdpdmVuIGZpbGUuCisgKgorICogQHBhcmFtIGhhc2hfaWQgaWQgb2YgaGFzaCBzdW0gdG8gY29tcHV0ZQorICogQHBhcmFtIGZpbGVwYXRoIHBhdGggdG8gdGhlIGZpbGUgdG8gaGFzaAorICogQHBhcmFtIHJlc3VsdCBidWZmZXIgdG8gcmVjZWl2ZSBoYXNoIHZhbHVlIHdpdGggdGhlIGxvd2VzdCByZXF1ZXN0ZWQgaWQKKyAqIEByZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvciBhbmQgZXJybm8gaXMgc2V0CisgKi8KK1JIQVNIX0FQSSBpbnQgcmhhc2hfZmlsZSh1bnNpZ25lZCBoYXNoX2lkLCBjb25zdCBjaGFyKiBmaWxlcGF0aCwgdW5zaWduZWQgY2hhciogcmVzdWx0KTsKKworI2lmZGVmIF9XSU4zMgorLyoqCisgKiBDb21wdXRlIGEgc2luZ2xlIGhhc2ggZm9yIGdpdmVuIGZpbGUgKFdpbmRvd3Mtc3BlY2lmaWMgZnVuY3Rpb24pLgorICoKKyAqIEBwYXJhbSBoYXNoX2lkIGlkIG9mIGhhc2ggc3VtIHRvIGNvbXB1dGUKKyAqIEBwYXJhbSBmaWxlcGF0aCBwYXRoIHRvIHRoZSBmaWxlIHRvIGhhc2gKKyAqIEBwYXJhbSByZXN1bHQgYnVmZmVyIHRvIHJlY2VpdmUgaGFzaCB2YWx1ZSB3aXRoIHRoZSBsb3dlc3QgcmVxdWVzdGVkIGlkCisgKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IsIC0xIG9uIGVycm9yIGFuZCBlcnJubyBpcyBzZXQKKyAqLwogUkhBU0hfQVBJIGludCByaGFzaF93ZmlsZSh1bnNpZ25lZCBoYXNoX2lkLCBjb25zdCB3Y2hhcl90KiBmaWxlcGF0aCwgdW5zaWduZWQgY2hhciogcmVzdWx0KTsKICNlbmRpZgogCi0vKiBsby1sZXZlbCBpbnRlcmZhY2UgKi8KLVJIQVNIX0FQSSByaGFzaCByaGFzaF9pbml0KHVuc2lnbmVkIGhhc2hfaWQpOwotLypSSEFTSF9BUEkgcmhhc2ggcmhhc2hfaW5pdF9ieV9pZHModW5zaWduZWQgaGFzaF9pZHNbXSwgdW5zaWduZWQgY291bnQpOyovCi1SSEFTSF9BUEkgaW50ICByaGFzaF91cGRhdGUocmhhc2ggY3R4LCBjb25zdCB2b2lkKiBtZXNzYWdlLCBzaXplX3QgbGVuZ3RoKTsKLVJIQVNIX0FQSSBpbnQgIHJoYXNoX2ZpbmFsKHJoYXNoIGN0eCwgdW5zaWduZWQgY2hhciogZmlyc3RfcmVzdWx0KTsKLVJIQVNIX0FQSSB2b2lkIHJoYXNoX3Jlc2V0KHJoYXNoIGN0eCk7IC8qIHJlaW5pdGlhbGl6ZSB0aGUgY29udGV4dCAqLwotUkhBU0hfQVBJIHZvaWQgcmhhc2hfZnJlZShyaGFzaCBjdHgpOwogCi0vKiBhZGRpdGlvbmFsIGxvLWxldmVsIGZ1bmN0aW9ucyAqLwotUkhBU0hfQVBJIHZvaWQgIHJoYXNoX3NldF9jYWxsYmFjayhyaGFzaCBjdHgsIHJoYXNoX2NhbGxiYWNrX3QgY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrX2RhdGEpOwotCi0vKiogYml0LWZsYWc6IGRlZmF1bHQgaGFzaCBvdXRwdXQgZm9ybWF0IGlzIGJhc2UzMiAqLwotI2RlZmluZSBSSEFTSF9JTkZPX0JBU0UzMiAxCisvKiBMT1ctTEVWRUwgTElCUkhBU0ggSU5URVJGQUNFICovCiAKIC8qKgotICogSW5mb3JtYXRpb24gYWJvdXQgYSBoYXNoIGZ1bmN0aW9uLgorICogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgUkhhc2ggY29udGV4dCBmb3IgY2FsY3VsYXRpbmcgaGFzaChlcykuCisgKiBBZnRlciBpbml0aWFsaXppbmcgcmhhc2hfdXBkYXRlKCkvcmhhc2hfZmluYWwoKSBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQuCisgKiBUaGVuIHRoZSBjb250ZXh0IG11c3QgYmUgZnJlZWQgYnkgY2FsbGluZyByaGFzaF9mcmVlKCkuCisgKgorICogQHBhcmFtIGhhc2hfaWQgdW5pb24gb2YgYml0IGZsYWdzLCBjb250YWluaW5nIGlkcyBvZiBoYXNoZXMgdG8gY2FsY3VsYXRlLgorICogQHJldHVybiBpbml0aWFsaXplZCByaGFzaCBjb250ZXh0LCBOVUxMIG9uIGVycm9yIGFuZCBlcnJubyBpcyBzZXQKICAqLwotdHlwZWRlZiBzdHJ1Y3Qgcmhhc2hfaW5mbwotewotCS8qKiBoYXNoIGZ1bmN0aW9uIGluZGVudGlmaWVyICovCi0JdW5zaWduZWQgaGFzaF9pZDsKLQkvKiogZmxhZ3MgYml0LW1hc2ssIGluY2x1ZGluZyBSSEFTSF9JTkZPX0JBU0UzMiBiaXQgKi8KLQl1bnNpZ25lZCBmbGFnczsKLQkvKiogc2l6ZSBvZiBiaW5hcnkgbWVzc2FnZSBkaWdlc3QgaW4gYnl0ZXMgKi8KLQlzaXplX3QgZGlnZXN0X3NpemU7Ci0JY29uc3QgY2hhciogbmFtZTsKLQljb25zdCBjaGFyKiBtYWduZXRfbmFtZTsKLX0gcmhhc2hfaW5mbzsKK1JIQVNIX0FQSSByaGFzaCByaGFzaF9pbml0KHVuc2lnbmVkIGhhc2hfaWQpOwogCi0vKiBpbmZvcm1hdGlvbiBmdW5jdGlvbnMgKi8KKy8qKgorICogQ2FsY3VsYXRlIGhhc2hlcyBvZiBtZXNzYWdlLgorICogQ2FuIGJlIGNhbGxlZCByZXBlYXRlZGx5IHdpdGggY2h1bmtzIG9mIHRoZSBtZXNzYWdlIHRvIGJlIGhhc2hlZC4KKyAqCisgKiBAcGFyYW0gY3R4IHRoZSByaGFzaCBjb250ZXh0CisgKiBAcGFyYW0gbWVzc2FnZSBtZXNzYWdlIGNodW5rCisgKiBAcGFyYW0gbGVuZ3RoIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSBjaHVuaworICogQHJldHVybiAwIG9uIHN1Y2Nlc3M7IE9uIGZhaWwgcmV0dXJuIC0xIGFuZCBzZXQgZXJybm8KKyAqLworUkhBU0hfQVBJIGludCByaGFzaF91cGRhdGUocmhhc2ggY3R4LCBjb25zdCB2b2lkKiBtZXNzYWdlLCBzaXplX3QgbGVuZ3RoKTsKKworLyoqCisgKiBIYXNoIGEgZmlsZSBvciBzdHJlYW0uIE11bHRpcGxlIGhhc2hlcyBjYW4gYmUgY29tcHV0ZWQuCisgKiBGaXJzdCwgaW5pbnRpYWxpemUgY3R4IHBhcmFtZXRlciB3aXRoIHJoYXNoX2luaXQoKSBiZWZvcmUgY2FsbGluZworICogcmhhc2hfZmlsZV91cGRhdGUoKS4gVGhlbiB1c2Ugcmhhc2hfZmluYWwoKSBhbmQgcmhhc2hfcHJpbnQoKQorICogdG8gcmV0cml2ZSBoYXNoIHZhbHVlcy4gRmluYWx5IGNhbGwgcmhhc2hfZnJlZSgpIG9uIGN0eAorICogdG8gZnJlZSBhbGxvY2F0ZWQgbWVtb3J5IG9yIGNhbGwgcmhhc2hfcmVzZXQoKSB0byByZXVzZSBjdHguCisgKgorICogQHBhcmFtIGN0eCByaGFzaCBjb250ZXh0CisgKiBAcGFyYW0gZmQgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBoYXNoCisgKiBAcmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IgYW5kIGVycm5vIGlzIHNldAorICovCitSSEFTSF9BUEkgaW50IHJoYXNoX2ZpbGVfdXBkYXRlKHJoYXNoIGN0eCwgRklMRSogZmQpOworCisvKioKKyAqIEZpbmFsaXplIGhhc2ggY2FsY3VsYXRpb24gYW5kIG9wdGlvbmFsbHkgc3RvcmUgdGhlIGZpcnN0IGhhc2guCisgKgorICogQHBhcmFtIGN0eCB0aGUgcmhhc2ggY29udGV4dAorICogQHBhcmFtIGZpcnN0X3Jlc3VsdCBvcHRpb25hbCBidWZmZXIgdG8gc3RvcmUgYSBjYWxjdWxhdGVkIGhhc2ggd2l0aCB0aGUgbG93ZXN0IGF2YWlsYWJsZSBpZAorICogQHJldHVybiAwIG9uIHN1Y2Nlc3M7IE9uIGZhaWwgcmV0dXJuIC0xIGFuZCBzZXQgZXJybm8KKyAqLworUkhBU0hfQVBJIGludCByaGFzaF9maW5hbChyaGFzaCBjdHgsIHVuc2lnbmVkIGNoYXIqIGZpcnN0X3Jlc3VsdCk7CisKKy8qKgorICogUmUtaW5pdGlhbGl6ZSBSSGFzaCBjb250ZXh0IHRvIHJldXNlIGl0LgorICogVXNlZnVsIHRvIHNwZWVkIHVwIHByb2Nlc3Npbmcgb2YgbWFueSBzbWFsbCBtZXNzYWdlcy4KKyAqCisgKiBAcGFyYW0gY3R4IGNvbnRleHQgdG8gcmVpbml0aWFsaXplCisgKi8KK1JIQVNIX0FQSSB2b2lkIHJoYXNoX3Jlc2V0KHJoYXNoIGN0eCk7CisKKy8qKgorICogRnJlZSBSSGFzaCBjb250ZXh0IG1lbW9yeS4KKyAqCisgKiBAcGFyYW0gY3R4IHRoZSBjb250ZXh0IHRvIGZyZWUuCisgKi8KK1JIQVNIX0FQSSB2b2lkIHJoYXNoX2ZyZWUocmhhc2ggY3R4KTsKKworLyoqCisgKiBTZXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBmcm9tIHRoZQorICogcmhhc2hfZmlsZSgpIGFuZCByaGFzaF9maWxlX3VwZGF0ZSgpIGZ1bmN0aW9ucworICogb24gcHJvY2Vzc2luZyBldmVyeSBmaWxlIGJsb2NrLiBUaGUgZmlsZSBibG9jaworICogc2l6ZSBpcyBzZXQgaW50ZXJuYWxseSBieSByaGFzaCBhbmQgbm93IGlzIDggS2lCLgorICoKKyAqIEBwYXJhbSBjdHggcmhhc2ggY29udGV4dAorICogQHBhcmFtIGNhbGxiYWNrIHBvaW50ZXIgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uCisgKiBAcGFyYW0gY2FsbGJhY2tfZGF0YSBwb2ludGVyIHRvIGRhdGEgcGFzc2VkIHRvIHRoZSBjYWxsYmFjaworICovCitSSEFTSF9BUEkgdm9pZCAgcmhhc2hfc2V0X2NhbGxiYWNrKHJoYXNoIGN0eCwgcmhhc2hfY2FsbGJhY2tfdCBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tfZGF0YSk7CisKKworLyogSU5GT1JNQVRJT04gRlVOQ1RJT05TICovCisKKy8qKgorICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHN1cHBvcnRlZCBoYXNoIGFsZ29yaXRobXMuCisgKgorICogQHJldHVybiB0aGUgbnVtYmVyIG9mIHN1cHBvcnRlZCBoYXNoIGZ1bmN0aW9ucworICovCiBSSEFTSF9BUEkgaW50ICByaGFzaF9jb3VudCh2b2lkKTsgLyogbnVtYmVyIG9mIHN1cHBvcnRlZCBoYXNoZXMgKi8KKworLyoqCisgKiBSZXR1cm5zIHNpemUgb2YgYmluYXJ5IGRpZ2VzdCBmb3IgZ2l2ZW4gaGFzaCBhbGdvcml0aG0uCisgKgorICogQHBhcmFtIGhhc2hfaWQgdGhlIGlkIG9mIGhhc2ggYWxnb3JpdGhtCisgKiBAcmV0dXJuIGRpZ2VzdCBzaXplIGluIGJ5dGVzCisgKi8KIFJIQVNIX0FQSSBpbnQgIHJoYXNoX2dldF9kaWdlc3Rfc2l6ZSh1bnNpZ25lZCBoYXNoX2lkKTsgLyogc2l6ZSBvZiBiaW5hcnkgbWVzc2FnZSBkaWdlc3QgKi8KKworLyoqCisgKiBSZXR1cm5zIGxlbmd0aCBvZiBkaWdlc3QgaGFzaCBzdHJpbmcgaW4gZGVmYXVsdCBvdXRwdXQgZm9ybWF0LgorICoKKyAqIEBwYXJhbSBoYXNoX2lkIHRoZSBpZCBvZiBoYXNoIGFsZ29yaXRobQorICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIGhhc2ggc3RyaW5nCisgKi8KIFJIQVNIX0FQSSBpbnQgIHJoYXNoX2dldF9oYXNoX2xlbmd0aCh1bnNpZ25lZCBoYXNoX2lkKTsgLyogbGVuZ3RoIG9mIGZvcm1hdHRlZCBoYXNoIHN0cmluZyAqLworCisvKioKKyAqIERldGVjdCBkZWZhdWx0IGRpZ2VzdCBvdXRwdXQgZm9ybWF0IGZvciBnaXZlbiBoYXNoIGFsZ29yaXRobS4KKyAqCisgKiBAcGFyYW0gaGFzaF9pZCB0aGUgaWQgb2YgaGFzaCBhbGdvcml0aG0KKyAqIEByZXR1cm4gMSBmb3IgYmFzZTMyIGZvcm1hdCwgMCBmb3IgaGV4YWRlY2ltYWwKKyAqLwogUkhBU0hfQVBJIGludCAgcmhhc2hfaXNfYmFzZTMyKHVuc2lnbmVkIGhhc2hfaWQpOyAvKiBkZWZhdWx0IGRpZ2VzdCBvdXRwdXQgZm9ybWF0ICovCisKKy8qKgorICogUmV0dXJucyBhIG5hbWUgb2YgZ2l2ZW4gaGFzaCBhbGdvcml0aG0uCisgKgorICogQHBhcmFtIGhhc2hfaWQgdGhlIGlkIG9mIGhhc2ggYWxnb3JpdGhtCisgKiBAcmV0dXJuIGFsZ29yaXRobSBuYW1lCisgKi8KIFJIQVNIX0FQSSBjb25zdCBjaGFyKiByaGFzaF9nZXRfbmFtZSh1bnNpZ25lZCBoYXNoX2lkKTsgLyogZ2V0IGhhc2ggZnVuY3Rpb24gbmFtZSAqLworCisvKioKKyAqIFJldHVybnMgYSBuYW1lIHBhcnQgb2YgbWFnbmV0IHVybiBvZiB0aGUgZ2l2ZW4gaGFzaCBhbGdvcml0aG0uCisgKiBTdWNoIG1hZ25ldF9uYW1lIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBtYWduZXQgbGluayBvZiB0aGUgZm9ybQorICogdXJuOiZsdDttYWduZXRfbmFtZSZndDs9Jmx0O2hhc2hfdmFsdWUmZ3Q7LgorICoKKyAqIEBwYXJhbSBoYXNoX2lkIHRoZSBpZCBvZiBoYXNoIGFsZ29yaXRobQorICogQHJldHVybiBuYW1lCisgKi8KIFJIQVNIX0FQSSBjb25zdCBjaGFyKiByaGFzaF9nZXRfbWFnbmV0X25hbWUodW5zaWduZWQgaGFzaF9pZCk7IC8qIGdldCBuYW1lIHBhcnQgb2YgbWFnbmV0IHVybiAqLwogCi0vKiBub3RlLCB0aGF0IHJoYXNoX2luZm9fYnlfaWQoKSBpcyBub3QgZXhwb3J0ZWQgdG8gYSBzaGFyZWQgbGlicmFyeSBvciBETEwgKi8KLWNvbnN0IHJoYXNoX2luZm8qIHJoYXNoX2luZm9fYnlfaWQodW5zaWduZWQgaGFzaF9pZCk7IC8qIGdldCBoYXNoIHN1bSBpbmZvIGJ5IGhhc2ggaWQgKi8KKy8qIEhBU0ggU1VNIE9VVFBVVCBJTlRFUkZBQ0UgKi8KIAogI2lmIDAKIC8qKgotICogRmxhZ3MgZm9yIHByaW50aW5nIGEgaGFzaCBzdW0KKyAqIEZsYWdzIGZvciBwcmludGluZyBhIGhhc2ggc3VtLgogICovCiBlbnVtIHJoYXNoX3ByaW50X3N1bV9mbGFncwogewotCS8qKiBwcmludCBpbiBhIGRlZmF1bHQgZm9ybWF0ICovCisJLyoKKwkgKiBQcmludCBpbiBhIGRlZmF1bHQgZm9ybWF0CisJICovCiAJUkhQUl9ERUZBVUxUICAgPSAweDAsCi0JLyoqIG91dHB1dCBhcyBiaW5hcnkgbWVzc2FnZSBkaWdlc3QgKi8KKwkvKgorCSAqIE91dHB1dCBhcyBiaW5hcnkgbWVzc2FnZSBkaWdlc3QKKwkgKi8KIAlSSFBSX1JBVyAgICAgICA9IDB4MSwKLQkvKiogcHJpbnQgYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcgKi8KKwkvKgorCSAqIFByaW50IGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nCisJICovCiAJUkhQUl9IRVggICAgICAgPSAweDIsCi0JLyoqIHByaW50IGFzIGEgYmFzZTMyLWVuY29kZWQgc3RyaW5nICovCisJLyoKKwkgKiBQcmludCBhcyBhIGJhc2UzMi1lbmNvZGVkIHN0cmluZworCSAqLwogCVJIUFJfQkFTRTMyICAgID0gMHgzLAotCS8qKiBwcmludCBhcyBhIGJhc2U2NC1lbmNvZGVkIHN0cmluZyAqLworCS8qCisJICogUHJpbnQgYXMgYSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcKKwkgKi8KIAlSSFBSX0JBU0U2NCAgICA9IDB4NCwKLQotCS8qKgorCS8qCiAJICogUHJpbnQgYXMgYW4gdXBwZXJjYXNlIHN0cmluZy4gQ2FuIGJlIHVzZWQKIAkgKiBmb3IgYmFzZTMyIG9yIGhleGFkZWNpbWFsIGZvcm1hdCBvbmx5LgogCSAqLwogCVJIUFJfVVBQRVJDQVNFID0gMHg4LAotCi0JLyoqCisJLyoKIAkgKiBSZXZlcnNlIGhhc2ggYnl0ZXMuIENhbiBiZSB1c2VkIGZvciBHT1NUIGhhc2guCiAJICovCiAJUkhQUl9SRVZFUlNFICAgPSAweDEwLAotCi0JLyoqIGRvbid0IHByaW50ICdtYWduZXQ6PycgcHJlZml4IGluIHJoYXNoX3ByaW50X21hZ25ldCAqLworCS8qCisJICogRG9uJ3QgcHJpbnQgJ21hZ25ldDo/JyBwcmVmaXggaW4gcmhhc2hfcHJpbnRfbWFnbmV0CisJICovCiAJUkhQUl9OT19NQUdORVQgID0gMHgyMCwKLQkvKiogcHJpbnQgZmlsZSBzaXplIGluIHJoYXNoX3ByaW50X21hZ25ldCAqLworCS8qCisJICogUHJpbnQgZmlsZSBzaXplIGluIHJoYXNoX3ByaW50X21hZ25ldAorCSAqLwogCVJIUFJfRklMRVNJWkUgID0gMHg0MCwKKwkvKgorCSAqIFByaW50IGFzIFVSTC1lbmNvZGVkIHN0cmluZworCSAqLworCVJIUFJfVVJMRU5DT0RFICA9IDB4ODAKIH07CiAjZW5kaWYKIAotLyogb3V0cHV0IGhhc2ggaW50byB0aGUgZ2l2ZW4gYnVmZmVyICovCisKKy8qKgorICogUHJpbnQgYSB0ZXh0IHByZXNlbnRhdGlvbiBvZiBhIGdpdmVuIGhhc2ggc3VtIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLgorICoKKyAqIEBwYXJhbSBvdXRwdXQgYSBidWZmZXIgdG8gcHJpbnQgdGhlIGhhc2ggdG8KKyAqIEBwYXJhbSBieXRlcyBhIGhhc2ggc3VtIHRvIHByaW50CisgKiBAcGFyYW0gc2l6ZSBhIHNpemUgb2YgaGFzaCBzdW0gaW4gYnl0ZXMKKyAqIEBwYXJhbSBmbGFncyAgYSBiaXQtbWFzayBjb250cm9sbGluZyBob3cgdG8gZm9ybWF0IHRoZSBoYXNoIHN1bSwKKyAqICAgICAgICAgICAgICAgY2FuIGJlIGEgbWl4IG9mIHRoZSBmbGFnczogUkhQUl9SQVcsIFJIUFJfSEVYLCBSSFBSX0JBU0UzMiwKKyAqICAgICAgICAgICAgICAgUkhQUl9CQVNFNjQsIFJIUFJfVVJMRU5DT0RFLCBSSFBSX1VQUEVSQ0FTRSwgUkhQUl9SRVZFUlNFCisgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXJzCisgKi8KIFJIQVNIX0FQSSBzaXplX3Qgcmhhc2hfcHJpbnRfYnl0ZXMoY2hhciogb3V0cHV0LAogCWNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKTsKIAorLyoqCisgKiBQcmludCB0ZXh0IHByZXNlbnRhdGlvbiBvZiBhIGhhc2ggc3VtIHdpdGggZ2l2ZW4gaGFzaF9pZCB0byB0aGUgc3BlY2lmaWVkCisgKiBvdXRwdXQgYnVmZmVyLiBJZiB0aGUgaGFzaF9pZCBpcyB6ZXJvLCB0aGVuIHByaW50IHRoZSBoYXNoIHN1bSB3aXRoCisgKiB0aGUgbG93ZXN0IGlkIHN0b3JlZCBpbiB0aGUgaGFzaCBjb250ZXh0LgorICogVGhlIGZ1bmN0aW9uIGNhbGwgZmFpbHMgaWYgdGhlIGNvbnRleHQgZG9lc24ndCBpbmNsdWRlIGEgaGFzaCB3aXRoIHRoZQorICogZ2l2ZW4gaGFzaF9pZC4KKyAqCisgKiBAcGFyYW0gb3V0cHV0IGEgYnVmZmVyIHRvIHByaW50IHRoZSBoYXNoIHRvCisgKiBAcGFyYW0gY3R4ICAgIGFsZ29yaXRobXMgc3RhdGUKKyAqIEBwYXJhbSBoYXNoX2lkIGlkIG9mIHRoZSBoYXNoIHN1bSB0byBwcmludCBvciAwIHRvIHByaW50IHRoZSBmaXJzdCBoYXNoCisgKiAgICAgICAgICAgICAgICBzYXZlZCBpbiB0aGUgY29udGV4dC4KKyAqIEBwYXJhbSBmbGFncyAgYSBiaXRtYXNrIGNvbnRyb2xsaW5nIGhvdyB0byBwcmludCB0aGUgaGFzaC4gQ2FuIGNvbnRhaW4gZmxhZ3MKKyAqICAgICAgICAgICAgICAgUkhQUl9VUFBFUkNBU0UsIFJIUFJfSEVYLCBSSFBSX0JBU0UzMiwgUkhQUl9CQVNFNjQsIGV0Yy4KKyAqIEByZXR1cm4gdGhlIG51bWJlciBvZiB3cml0dGVuIGNoYXJhY3RlcnMgb24gc3VjY2VzcyBvciAwIG9uIGZhaWwKKyAqLwogUkhBU0hfQVBJIHNpemVfdCByaGFzaF9wcmludChjaGFyKiBvdXRwdXQsIHJoYXNoIGN0eCwgdW5zaWduZWQgaGFzaF9pZCwKIAlpbnQgZmxhZ3MpOwogCi0vKiBvdXRwdXQgbWFnbmV0IFVSTCBpbnRvIHRoZSBnaXZlbiBidWZmZXIgKi8KKy8qKgorICogUHJpbnQgbWFnbmV0IGxpbmsgd2l0aCBnaXZlbiBmaWxlcGF0aCBhbmQgY2FsY3VsYXRlZCBoYXNoIHN1bXMgaW50byB0aGUKKyAqIG91dHB1dCBidWZmZXIuIFRoZSBoYXNoX21hc2sgY2FuIGxpbWl0IHdoaWNoIGhhc2ggdmFsdWVzIHdpbGwgYmUgcHJpbnRlZC4KKyAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSByZXF1aXJlZCBidWZmZXIuCisgKiBJZiBvdXRwdXQgaXMgTlVMTCB0aGUgLgorICoKKyAqIEBwYXJhbSBvdXRwdXQgYSBzdHJpbmcgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIG1hZ25ldCBsaW5rIG9yIE5VTEwKKyAqIEBwYXJhbSBmaWxlcGF0aCB0aGUgZmlsZSBwYXRoIHRvIGJlIHByaW50ZWQgb3IgTlVMTAorICogQHBhcmFtIGNvbnRleHQgYWxnb3JpdGhtcyBzdGF0ZQorICogQHBhcmFtIGhhc2hfbWFzayBiaXQgbWFzayBvZiB0aGUgaGFzaCBzdW1zIHRvIGFkZCB0byB0aGUgbGluaworICogQHBhcmFtIGZsYWdzICAgY2FuIGJlIGNvbWJpbmF0aW9uIG9mIGJpdHMgUkhQUl9VUFBFUkNBU0UsIFJIUFJfTk9fTUFHTkVULAorICogICAgICAgICAgICAgICAgUkhQUl9GSUxFU0laRQorICogQHJldHVybiBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXJzLCBpbmNsdWRpbmcgdGVybWluYXRpbmcgJ1wwJyBvbiBzdWNjZXNzLCAwIG9uIGZhaWwKKyAqLwogUkhBU0hfQVBJIHNpemVfdCByaGFzaF9wcmludF9tYWduZXQoY2hhciogb3V0cHV0LCBjb25zdCBjaGFyKiBmaWxlcGF0aCwKIAlyaGFzaCBjb250ZXh0LCB1bnNpZ25lZCBoYXNoX21hc2ssIGludCBmbGFncyk7CiAKLS8qIG1hY3JvcyBmb3IgbWVzc2FnZSBBUEkgKi8KIAotLyoqIFRoZSB0eXBlIG9mIGFuIHVuc2lnbmVkIGludGVnZXIgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSBwb2ludGVyICovCisvKiBNRVNTQUdFIEFQSSAqLworCisvKioKKyAqIFRoZSB0eXBlIG9mIGFuIHVuc2lnbmVkIGludGVnZXIgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSBwb2ludGVyLgorICovCiAjaWYgZGVmaW5lZChVSU5UUFRSX01BWCkKIHR5cGVkZWYgdWludHB0cl90IHJoYXNoX3VwdHJfdDsKICNlbGlmIGRlZmluZWQoX0xQNjQpIHx8IGRlZmluZWQoX19MUDY0X18pIHx8IGRlZmluZWQoX194ODZfNjQpIHx8IFwKQEAgLTIxOSwxNCArNDA5LDI4IEBACiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcmhhc2hfdXB0cl90OwogI2VuZGlmCiAKLS8qKiBUaGUgdmFsdWUgcmV0dXJuZWQgYnkgcmhhc2hfdHJhbnNtaXQgb24gZXJyb3IgKi8KKy8qKgorICogVGhlIHZhbHVlIHJldHVybmVkIGJ5IHJoYXNoX3RyYW5zbWl0IG9uIGVycm9yLgorICovCiAjZGVmaW5lIFJIQVNIX0VSUk9SICgocmhhc2hfdXB0cl90KS0xKQotLyoqIENvbnZlcnQgYSBwb2ludGVyIHRvIHJoYXNoX3VwdHJfdCAqLworLyoqCisgKiBDb252ZXJ0IGEgcG9pbnRlciB0byByaGFzaF91cHRyX3QuCisgKi8KICNkZWZpbmUgUkhBU0hfU1RSMlVQVFIoc3RyKSAoKHJoYXNoX3VwdHJfdCkoY2hhciopKHN0cikpCi0vKiogQ29udmVydCBhIHJoYXNoX3VwdHJfdCB0byBhIHZvaWQqIHBvaW50ZXIgKi8KLSNkZWZpbmUgUkhBU0hfVVBUUjJQVk9JRCh1KSAoKHZvaWQqKSgoY2hhciopMCArICh1KSkpCisvKioKKyAqIENvbnZlcnQgYSByaGFzaF91cHRyX3QgdG8gYSB2b2lkKiBwb2ludGVyLgorICovCisjZGVmaW5lIFJIQVNIX1VQVFIyUFZPSUQodSkgKCh2b2lkKikoKHUpICsgMCkpCiAKLS8qIHJoYXNoIEFQSSB0byBzZXQvZ2V0IGRhdGEgdmlhIG1lc3NhZ2VzICovCisvKioKKyAqIFByb2Nlc3MgYSByaGFzaCBtZXNzYWdlLgorICoKKyAqIEBwYXJhbSBtc2dfaWQgbWVzc2FnZSBpZGVudGlmaWVyCisgKiBAcGFyYW0gZHN0IG1lc3NhZ2UgZGVzdGluYXRpb24gKGNhbiBiZSBOVUxMIGZvciBnZW5lcmljIG1lc3NhZ2VzKQorICogQHBhcmFtIGxkYXRhIGRhdGEgZGVwZW5kaW5nIG9uIG1lc3NhZ2UKKyAqIEBwYXJhbSByZGF0YSBkYXRhIGRlcGVuZGluZyBvbiBtZXNzYWdlCisgKiBAcmV0dXJuIG1lc3NhZ2Utc3BlY2lmaWMgZGF0YQorICovCiBSSEFTSF9BUEkgcmhhc2hfdXB0cl90IHJoYXNoX3RyYW5zbWl0KAogCXVuc2lnbmVkIG1zZ19pZCwgdm9pZCogZHN0LCByaGFzaF91cHRyX3QgbGRhdGEsIHJoYXNoX3VwdHJfdCByZGF0YSk7CiAKQEAgLTIzOSwyMiArNDQzLDMyIEBACiAjZGVmaW5lIFJNU0dfU0VUX0FVVE9GSU5BTCA1CiAjZGVmaW5lIFJNU0dfU0VUX09QRU5TU0xfTUFTSyAxMAogI2RlZmluZSBSTVNHX0dFVF9PUEVOU1NMX01BU0sgMTEKKyNkZWZpbmUgUk1TR19HRVRfT1BFTlNTTF9TVVBQT1JURURfTUFTSyAxMgorI2RlZmluZSBSTVNHX0dFVF9PUEVOU1NMX0FWQUlMQUJMRV9NQVNLIDEzCiAKLS8qIGhlbHBlciBtYWNyb3MgKi8KKy8qIEhFTFBFUiBNQUNST1MgKi8KIAotLyoqIEdldCBhIHBvaW50ZXIgdG8gY29udGV4dCBvZiB0aGUgc3BlY2lmaWVkIGhhc2ggZnVuY3Rpb24gKi8KKy8qKgorICogR2V0IGEgcG9pbnRlciB0byBjb250ZXh0IG9mIHRoZSBzcGVjaWZpZWQgaGFzaCBmdW5jdGlvbi4KKyAqLwogI2RlZmluZSByaGFzaF9nZXRfY29udGV4dF9wdHIoY3R4LCBoYXNoX2lkKSBSSEFTSF9VUFRSMlBWT0lEKHJoYXNoX3RyYW5zbWl0KFJNU0dfR0VUX0NPTlRFWFQsIGN0eCwgaGFzaF9pZCwgMCkpCi0vKiogQ2FuY2VsIGhhc2ggY2FsY3VsYXRpb24gb2YgYSBmaWxlICovCisvKioKKyAqIENhbmNlbCBoYXNoIGNhbGN1bGF0aW9uIG9mIGEgZmlsZS4KKyAqLwogI2RlZmluZSByaGFzaF9jYW5jZWwoY3R4KSByaGFzaF90cmFuc21pdChSTVNHX0NBTkNFTCwgY3R4LCAwLCAwKQotLyoqIFJldHVybiBub24temVybyBpZiBoYXNoIGNhbGN1bGF0aW9uIHdhcyBjYW5jZWxlZCwgemVybyBvdGhlcndpc2UgKi8KKy8qKgorICogUmV0dXJuIG5vbi16ZXJvIGlmIGhhc2ggY2FsY3VsYXRpb24gd2FzIGNhbmNlbGVkLCB6ZXJvIG90aGVyd2lzZS4KKyAqLwogI2RlZmluZSByaGFzaF9pc19jYW5jZWxlZChjdHgpIHJoYXNoX3RyYW5zbWl0KFJNU0dfSVNfQ0FOQ0VMRUQsIGN0eCwgMCwgMCkKLS8qKiBSZXR1cm4gbm9uLXplcm8gaWYgcmhhc2hfZmluYWwgd2FzIGNhbGxlZCBmb3Igcmhhc2hfY29udGV4dCAqLworLyoqCisgKiBSZXR1cm4gbm9uLXplcm8gaWYgcmhhc2hfZmluYWwgd2FzIGNhbGxlZCBmb3Igcmhhc2hfY29udGV4dC4KKyAqLwogI2RlZmluZSByaGFzaF9nZXRfZmluYWxpemVkKGN0eCkgcmhhc2hfdHJhbnNtaXQoUk1TR19HRVRfRklOQUxJWkVELCBjdHgsIDAsIDApCiAKIC8qKgogICogVHVybiBvbi9vZmYgdGhlIGF1dG8tZmluYWwgZmxhZyBmb3IgdGhlIGdpdmVuIHJoYXNoX2NvbnRleHQuIEJ5IGRlZmF1bHQKICAqIGF1dG8tZmluYWwgaXMgb24sIHdoaWNoIG1lYW5zIHJoYXNoX2ZpbmFsIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5LCBpZgotICogbmVlZGVkIHdoZW4gYSBoYXNoIHZhbHVlIGlzIHJldHJpdmVkIGJ5IHJoYXNoX3ByaW50IGNhbGwuCisgKiBuZWVkZWQgd2hlbiBhIGhhc2ggdmFsdWUgaXMgcmV0cmlldmVkIGJ5IHJoYXNoX3ByaW50IGNhbGwuCiAgKi8KICNkZWZpbmUgcmhhc2hfc2V0X2F1dG9maW5hbChjdHgsIG9uKSByaGFzaF90cmFuc21pdChSTVNHX1NFVF9BVVRPRklOQUwsIGN0eCwgb24sIDApCiAKQEAgLTI2NywxOSArNDgxLDM2IEBACiAjZGVmaW5lIHJoYXNoX3NldF9vcGVuc3NsX21hc2sobWFzaykgcmhhc2hfdHJhbnNtaXQoUk1TR19TRVRfT1BFTlNTTF9NQVNLLCBOVUxMLCBtYXNrLCAwKQogCiAvKioKLSAqIFJldHVybiBjdXJyZW50IGJpdC1tYXNrIG9mIGhhc2ggYWxnb3JpdGhtcyBzZWxlY3RlZCB0byBiZSBjYWxjdWxhdGVkCi0gKiBieSBPcGVuU1NMIGxpYnJhcnkuCisgKiBSZXR1cm4gY3VycmVudCBiaXQtbWFzayBvZiBoYXNoIGFsZ29yaXRobXMgc2VsZWN0ZWQgdG8gYmUgY2FsY3VsYXRlZCBieSBPcGVuU1NMCisgKiBsaWJyYXJ5LiBSZXR1cm4gUkhBU0hfRVJST1IgaWYgTGliUkhhc2ggaXMgY29tcGlsZWQgd2l0aG91dCBPcGVuU1NMIHN1cHBvcnQuCiAgKi8KICNkZWZpbmUgcmhhc2hfZ2V0X29wZW5zc2xfbWFzaygpIHJoYXNoX3RyYW5zbWl0KFJNU0dfR0VUX09QRU5TU0xfTUFTSywgTlVMTCwgMCwgMCkKIAotLyoqIFRoZSBiaXQgbWFzayBvZiBoYXNoIGFsZ29yaXRobXMgaW1wbGVtZW50ZWQgYnkgT3BlblNTTCAqLwotI2lmIGRlZmluZWQoVVNFX09QRU5TU0wpIHx8IGRlZmluZWQoT1BFTlNTTF9SVU5USU1FKQotIyBkZWZpbmUgUkhBU0hfT1BFTlNTTF9TVVBQT1JURURfSEFTSEVTIChSSEFTSF9NRDQgfCBSSEFTSF9NRDUgfCBcCi0JUkhBU0hfU0hBMSB8IFJIQVNIX1NIQTIyNCB8IFJIQVNIX1NIQTI1NiB8IFJIQVNIX1NIQTM4NCB8IFwKLQlSSEFTSF9TSEE1MTIgfCBSSEFTSF9SSVBFTUQxNjAgfCBSSEFTSF9XSElSTFBPT0wpCi0jZWxzZQotIyBkZWZpbmUgUkhBU0hfT1BFTlNTTF9TVVBQT1JURURfSEFTSEVTIDAKLSNlbmRpZgorLyoqCisgKiBSZXR1cm4gdGhlIGJpdC1tYXNrIG9mIGFsZ29yaXRobXMgdGhhdCBjYW4gYmUgcHJvdmlkZWQgYnkgdGhlIE9wZW5TU0wgcGx1Z2luLAorICogaWYgdGhlIGxpYnJhcnkgaXMgY29tcGlsZWQgd2l0aCBPcGVuU1NMIHN1cHBvcnQsIDAgb3RoZXJ3aXNlLiBUaGlzIGJpdC1tYXNrIGlzCisgKiBhIGNvbnN0YW50IHZhbHVlIGNvbXB1dGVkIGF0IGNvbXBpbGUtdGltZS4KKyAqLworI2RlZmluZSByaGFzaF9nZXRfb3BlbnNzbF9zdXBwb3J0ZWRfbWFzaygpIHJoYXNoX3RyYW5zbWl0KFJNU0dfR0VUX09QRU5TU0xfU1VQUE9SVEVEX01BU0ssIE5VTEwsIDAsIDApCisKKy8qKgorICogUmV0dXJuIHRoZSBiaXQtbWFzayBvZiBhbGdvcml0aG1zIHRoYXQgYXJlIHN1Y2Nlc3NmdWxseSBsb2FkZWQgZnJvbQorICogT3BlblNTTCBsaWJyYXJ5LiBJZiB0aGUgbGlicmFyeSBpcyBub3QgbG9hZGVkIG9yIG5vdCBzdXBwb3J0ZWQgYnkgTGliUkhhc2gsCisgKiB0aGVuIHJldHVybiAwLgorICovCisjZGVmaW5lIHJoYXNoX2dldF9vcGVuc3NsX2F2YWlsYWJsZV9tYXNrKCkgcmhhc2hfdHJhbnNtaXQoUk1TR19HRVRfT1BFTlNTTF9BVkFJTEFCTEVfTUFTSywgTlVMTCwgMCwgMCkKKworCisvKioKKyAqIFJldHVybiBub24temVybyBpZiBMaWJSSGFzaCBoYXNoIGJlZW4gY29tcGlsZWQgd2l0aCBPcGVuU1NMIHN1cHBvcnQsCisgKiBhbmQgemVybyBvdGhlcndpc2UuCisgKi8KKyNkZWZpbmUgcmhhc2hfaXNfb3BlbnNzbF9zdXBwb3J0ZWQoKSAocmhhc2hfZ2V0X29wZW5zc2xfbWFzaygpICE9IFJIQVNIX0VSUk9SKQorCisvKioKKyAqIExlZ2FjeSBtYWNyby4gVGhlIGJpdCBtYXNrIG9mIGhhc2ggYWxnb3JpdGhtcyBpbXBsZW1lbnRlZCBieSBPcGVuU1NMLgorICovCisjIGRlZmluZSBSSEFTSF9PUEVOU1NMX1NVUFBPUlRFRF9IQVNIRVMgKHJoYXNoX2dldF9vcGVuc3NsX3N1cHBvcnRlZF9tYXNrKCkpCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfSAvKiBleHRlcm4gIkMiICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGExLmMgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGExLmMKaW5kZXggZjVhMDUzYi4uYjIyNjkyNSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhMS5jCisrKyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL3NoYTEuYwpAQCAtMSwxOCArMSwxOCBAQAogLyogc2hhMS5jIC0gYW4gaW1wbGVtZW50YXRpb24gb2YgU2VjdXJlIEhhc2ggQWxnb3JpdGhtIDEgKFNIQTEpCiAgKiBiYXNlZCBvbiBSRkMgMzE3NC4KICAqCi0gKiBDb3B5cmlnaHQ6IDIwMDgtMjAxMiBBbGVrc2V5IEtyYXZjaGVua28gPHJoYXNoLmFkbWluQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoYykgMjAwOCwgQWxla3NleSBLcmF2Y2hlbmtvIDxyaGFzaC5hZG1pbkBnbWFpbC5jb20+CiAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgIGZyZWUgb2YgY2hhcmdlLCAgdG8gYW55IHBlcnNvbiAgb2J0YWluaW5nIGEKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCAgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhlIHJpZ2h0cyB0byAgdXNlLCBjb3B5LCBtb2RpZnksICBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSAqIGFuZC9vciBzZWxsIGNvcGllcyAgb2YgIHRoZSBTb2Z0d2FyZSwgIGFuZCB0byBwZXJtaXQgIHBlcnNvbnMgIHRvIHdob20gdGhlCi0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28uCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4KICAqCi0gKiBUaGlzIHByb2dyYW0gIGlzICBkaXN0cmlidXRlZCAgaW4gIHRoZSAgaG9wZSAgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgIGJ1dAotICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKLSAqIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVXNlIHRoaXMgcHJvZ3JhbSAgYXQgIHlvdXIgb3duIHJpc2shCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAorICogUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GICBNRVJDSEFOVEFCSUxJVFkKKyAqIEFORCBGSVRORVNTLiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCisgKiBJTkRJUkVDVCwgIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQorICogTE9TUyBPRiBVU0UsICBEQVRBIE9SIFBST0ZJVFMsICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgIE5FR0xJR0VOQ0UKKyAqIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgIEFSSVNJTkcgT1VUIE9GICBPUiBJTiBDT05ORUNUSU9OICBXSVRIIFRIRSBVU0UgIE9SCisgKiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICovCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTI0LDcgKzI0LDcgQEAKICAqCiAgKiBAcGFyYW0gY3R4IGNvbnRleHQgdG8gaW5pdGlhbGl6ZQogICovCi12b2lkIHJoYXNoX3NoYTFfaW5pdChzaGExX2N0eCAqY3R4KQordm9pZCByaGFzaF9zaGExX2luaXQoc2hhMV9jdHgqIGN0eCkKIHsKIAljdHgtPmxlbmd0aCA9IDA7CiAKQEAgLTEyMSw3ICsxMjEsNyBAQAogICogQHBhcmFtIG1zZyBtZXNzYWdlIGNodW5rCiAgKiBAcGFyYW0gc2l6ZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgY2h1bmsKICAqLwotdm9pZCByaGFzaF9zaGExX3VwZGF0ZShzaGExX2N0eCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtc2csIHNpemVfdCBzaXplKQordm9pZCByaGFzaF9zaGExX3VwZGF0ZShzaGExX2N0eCogY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtc2csIHNpemVfdCBzaXplKQogewogCXVuc2lnbmVkIGluZGV4ID0gKHVuc2lnbmVkKWN0eC0+bGVuZ3RoICYgNjM7CiAJY3R4LT5sZW5ndGggKz0gc2l6ZTsKQEAgLTE2NCw3ICsxNjQsNyBAQAogICogQHBhcmFtIGN0eCB0aGUgYWxnb3JpdGhtIGNvbnRleHQgY29udGFpbmluZyBjdXJyZW50IGhhc2hpbmcgc3RhdGUKICAqIEBwYXJhbSByZXN1bHQgY2FsY3VsYXRlZCBoYXNoIGluIGJpbmFyeSBmb3JtCiAgKi8KLXZvaWQgcmhhc2hfc2hhMV9maW5hbChzaGExX2N0eCAqY3R4LCB1bnNpZ25lZCBjaGFyKiByZXN1bHQpCit2b2lkIHJoYXNoX3NoYTFfZmluYWwoc2hhMV9jdHgqIGN0eCwgdW5zaWduZWQgY2hhciogcmVzdWx0KQogewogCXVuc2lnbmVkICBpbmRleCA9ICh1bnNpZ25lZCljdHgtPmxlbmd0aCAmIDYzOwogCXVuc2lnbmVkKiBtc2czMiA9ICh1bnNpZ25lZCopY3R4LT5tZXNzYWdlOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhMS5oIGIvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhMS5oCmluZGV4IDc0YjJmOTQuLjdlOTk1NDIgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL3NoYTEuaAorKysgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGExLmgKQEAgLTIwLDkgKzIwLDkgQEAKIAogLyogaGFzaCBmdW5jdGlvbnMgKi8KIAotdm9pZCByaGFzaF9zaGExX2luaXQoc2hhMV9jdHggKmN0eCk7Ci12b2lkIHJoYXNoX3NoYTFfdXBkYXRlKHNoYTFfY3R4ICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1zZywgc2l6ZV90IHNpemUpOwotdm9pZCByaGFzaF9zaGExX2ZpbmFsKHNoYTFfY3R4ICpjdHgsIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCk7Cit2b2lkIHJoYXNoX3NoYTFfaW5pdChzaGExX2N0eCogY3R4KTsKK3ZvaWQgcmhhc2hfc2hhMV91cGRhdGUoc2hhMV9jdHgqIGN0eCwgY29uc3QgdW5zaWduZWQgY2hhciogbXNnLCBzaXplX3Qgc2l6ZSk7Cit2b2lkIHJoYXNoX3NoYTFfZmluYWwoc2hhMV9jdHgqIGN0eCwgdW5zaWduZWQgY2hhciogcmVzdWx0KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9IC8qIGV4dGVybiAiQyIgKi8KZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL3NoYTI1Ni5jIGIvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhMjU2LmMKaW5kZXggYWY1YjBmZS4uMjFhNjlhYSAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhMjU2LmMKKysrIGIvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhMjU2LmMKQEAgLTEsMTggKzEsMTggQEAKIC8qIHNoYTI1Ni5jIC0gYW4gaW1wbGVtZW50YXRpb24gb2YgU0hBLTI1Ni8yMjQgaGFzaCBmdW5jdGlvbnMKICAqIGJhc2VkIG9uIEZJUFMgMTgwLTMgKEZlZGVyYWwgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBTdGFuZGFydCkuCiAgKgotICogQ29weXJpZ2h0OiAyMDEwLTIwMTIgQWxla3NleSBLcmF2Y2hlbmtvIDxyaGFzaC5hZG1pbkBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEFsZWtzZXkgS3JhdmNoZW5rbyA8cmhhc2guYWRtaW5AZ21haWwuY29tPgogICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRvIGFueSBwZXJzb24gIG9idGFpbmluZyBhCi0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAotICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KLSAqIHRoZSByaWdodHMgdG8gIHVzZSwgY29weSwgbW9kaWZ5LCAgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCi0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgIG9mICB0aGUgU29mdHdhcmUsICBhbmQgdG8gcGVybWl0ICBwZXJzb25zICB0byB3aG9tIHRoZQotICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CisgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuCiAgKgotICogVGhpcyBwcm9ncmFtICBpcyAgZGlzdHJpYnV0ZWQgIGluICB0aGUgIGhvcGUgIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICBidXQKLSAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCi0gKiBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFVzZSB0aGlzIHByb2dyYW0gIGF0ICB5b3VyIG93biByaXNrIQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgKKyAqIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFICBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiAgTUVSQ0hBTlRBQklMSVRZCisgKiBBTkQgRklUTkVTUy4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULAorICogSU5ESVJFQ1QsICBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KKyAqIExPU1MgT0YgVVNFLCAgREFUQSBPUiBQUk9GSVRTLCAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsICBORUdMSUdFTkNFCisgKiBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sICBBUklTSU5HIE9VVCBPRiAgT1IgSU4gQ09OTkVDVElPTiAgV0lUSCBUSEUgVVNFICBPUgorICogUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAqLwogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC02NSw3ICs2NSw3IEBACiAgKgogICogQHBhcmFtIGN0eCBjb250ZXh0IHRvIGluaXRpYWxpemUKICAqLwotdm9pZCByaGFzaF9zaGEyNTZfaW5pdChzaGEyNTZfY3R4ICpjdHgpCit2b2lkIHJoYXNoX3NoYTI1Nl9pbml0KHNoYTI1Nl9jdHgqIGN0eCkKIHsKIAkvKiBJbml0aWFsIHZhbHVlcy4gVGhlc2Ugd29yZHMgd2VyZSBvYnRhaW5lZCBieSB0YWtpbmcgdGhlIGZpcnN0IDMyCiAJICogYml0cyBvZiB0aGUgZnJhY3Rpb25hbCBwYXJ0cyBvZiB0aGUgc3F1YXJlIHJvb3RzIG9mIHRoZSBmaXJzdApAQCAtODcsNyArODcsNyBAQAogICoKICAqIEBwYXJhbSBjdHggY29udGV4dCB0byBpbml0aWFsaXplCiAgKi8KLXZvaWQgcmhhc2hfc2hhMjI0X2luaXQoc3RydWN0IHNoYTI1Nl9jdHggKmN0eCkKK3ZvaWQgcmhhc2hfc2hhMjI0X2luaXQoc3RydWN0IHNoYTI1Nl9jdHgqIGN0eCkKIHsKIAkvKiBJbml0aWFsIHZhbHVlcyBmcm9tIEZJUFMgMTgwLTMuIFRoZXNlIHdvcmRzIHdlcmUgb2J0YWluZWQgYnkgdGFraW5nCiAJICogYml0cyBmcm9tIDMzdGggdG8gNjR0aCBvZiB0aGUgZnJhY3Rpb25hbCBwYXJ0cyBvZiB0aGUgc3F1YXJlCkBAIC0xMTMsNyArMTEzLDcgQEAKIHsKIAl1bnNpZ25lZCBBLCBCLCBDLCBELCBFLCBGLCBHLCBIOwogCXVuc2lnbmVkIFdbMTZdOwotCWNvbnN0IHVuc2lnbmVkICprOworCWNvbnN0IHVuc2lnbmVkKiBrOwogCWludCBpOwogCiAJQSA9IGhhc2hbMF0sIEIgPSBoYXNoWzFdLCBDID0gaGFzaFsyXSwgRCA9IGhhc2hbM107CkBAIC0xNjgsNyArMTY4LDcgQEAKICAqIEBwYXJhbSBtc2cgbWVzc2FnZSBjaHVuawogICogQHBhcmFtIHNpemUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlIGNodW5rCiAgKi8KLXZvaWQgcmhhc2hfc2hhMjU2X3VwZGF0ZShzaGEyNTZfY3R4ICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1zZywgc2l6ZV90IHNpemUpCit2b2lkIHJoYXNoX3NoYTI1Nl91cGRhdGUoc2hhMjU2X2N0eCogY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtc2csIHNpemVfdCBzaXplKQogewogCXNpemVfdCBpbmRleCA9IChzaXplX3QpY3R4LT5sZW5ndGggJiA2MzsKIAljdHgtPmxlbmd0aCArPSBzaXplOwpAQCAtMjEwLDcgKzIxMCw3IEBACiAgKiBAcGFyYW0gY3R4IHRoZSBhbGdvcml0aG0gY29udGV4dCBjb250YWluaW5nIGN1cnJlbnQgaGFzaGluZyBzdGF0ZQogICogQHBhcmFtIHJlc3VsdCBjYWxjdWxhdGVkIGhhc2ggaW4gYmluYXJ5IGZvcm0KICAqLwotdm9pZCByaGFzaF9zaGEyNTZfZmluYWwoc2hhMjU2X2N0eCAqY3R4LCB1bnNpZ25lZCBjaGFyKiByZXN1bHQpCit2b2lkIHJoYXNoX3NoYTI1Nl9maW5hbChzaGEyNTZfY3R4KiBjdHgsIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCkKIHsKIAlzaXplX3QgaW5kZXggPSAoKHVuc2lnbmVkKWN0eC0+bGVuZ3RoICYgNjMpID4+IDI7CiAJdW5zaWduZWQgc2hpZnQgPSAoKHVuc2lnbmVkKWN0eC0+bGVuZ3RoICYgMykgKiA4OwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhMjU2LmggYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGEyNTYuaAppbmRleCBmODdlYmFhLi4zNjI1Y2ZlIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGEyNTYuaAorKysgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGEyNTYuaApAQCAtMjAsMTAgKzIwLDEwIEBACiAJdW5zaWduZWQgZGlnZXN0X2xlbmd0aDsgLyogbGVuZ3RoIG9mIHRoZSBhbGdvcml0aG0gZGlnZXN0IGluIGJ5dGVzICovCiB9IHNoYTI1Nl9jdHg7CiAKLXZvaWQgcmhhc2hfc2hhMjI0X2luaXQoc2hhMjU2X2N0eCAqY3R4KTsKLXZvaWQgcmhhc2hfc2hhMjU2X2luaXQoc2hhMjU2X2N0eCAqY3R4KTsKLXZvaWQgcmhhc2hfc2hhMjU2X3VwZGF0ZShzaGEyNTZfY3R4ICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwotdm9pZCByaGFzaF9zaGEyNTZfZmluYWwoc2hhMjU2X2N0eCAqY3R4LCB1bnNpZ25lZCBjaGFyIHJlc3VsdFszMl0pOwordm9pZCByaGFzaF9zaGEyMjRfaW5pdChzaGEyNTZfY3R4KiBjdHgpOwordm9pZCByaGFzaF9zaGEyNTZfaW5pdChzaGEyNTZfY3R4KiBjdHgpOwordm9pZCByaGFzaF9zaGEyNTZfdXBkYXRlKHNoYTI1Nl9jdHgqIGN0eCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7Cit2b2lkIHJoYXNoX3NoYTI1Nl9maW5hbChzaGEyNTZfY3R4KiBjdHgsIHVuc2lnbmVkIGNoYXIgcmVzdWx0WzMyXSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfSAvKiBleHRlcm4gIkMiICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGEzLmMgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGEzLmMKaW5kZXggZTRhODQ1Zi4uYmQyODU0ZiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhMy5jCisrKyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL3NoYTMuYwpAQCAtMywxOCArMywxOCBAQAogICogVGhlIEtlY2NhayBTSEEtMyBzdWJtaXNzaW9uLiBTdWJtaXNzaW9uIHRvIE5JU1QgKFJvdW5kIDMpLCAyMDExCiAgKiBieSBHdWlkbyBCZXJ0b25pLCBKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycyBhbmQgR2lsbGVzIFZhbiBBc3NjaGUKICAqCi0gKiBDb3B5cmlnaHQ6IDIwMTMgQWxla3NleSBLcmF2Y2hlbmtvIDxyaGFzaC5hZG1pbkBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKGMpIDIwMTMsIEFsZWtzZXkgS3JhdmNoZW5rbyA8cmhhc2guYWRtaW5AZ21haWwuY29tPgogICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRvIGFueSBwZXJzb24gIG9idGFpbmluZyBhCi0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAotICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KLSAqIHRoZSByaWdodHMgdG8gIHVzZSwgY29weSwgbW9kaWZ5LCAgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCi0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgIG9mICB0aGUgU29mdHdhcmUsICBhbmQgdG8gcGVybWl0ICBwZXJzb25zICB0byB3aG9tIHRoZQotICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CisgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuCiAgKgotICogVGhpcyBwcm9ncmFtICBpcyAgZGlzdHJpYnV0ZWQgIGluICB0aGUgIGhvcGUgIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICBidXQKLSAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCi0gKiBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFVzZSB0aGlzIHByb2dyYW0gIGF0ICB5b3VyIG93biByaXNrIQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgKKyAqIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFICBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiAgTUVSQ0hBTlRBQklMSVRZCisgKiBBTkQgRklUTkVTUy4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULAorICogSU5ESVJFQ1QsICBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KKyAqIExPU1MgT0YgVVNFLCAgREFUQSBPUiBQUk9GSVRTLCAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsICBORUdMSUdFTkNFCisgKiBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sICBBUklTSU5HIE9VVCBPRiAgT1IgSU4gQ09OTkVDVElPTiAgV0lUSCBUSEUgVVNFICBPUgorICogUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAqLwogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CkBAIC0zNiw3ICszNiw3IEBACiB9OwogCiAvKiBJbml0aWFsaXppbmcgYSBzaGEzIGNvbnRleHQgZm9yIGdpdmVuIG51bWJlciBvZiBvdXRwdXQgYml0cyAqLwotc3RhdGljIHZvaWQgcmhhc2hfa2VjY2FrX2luaXQoc2hhM19jdHggKmN0eCwgdW5zaWduZWQgYml0cykKK3N0YXRpYyB2b2lkIHJoYXNoX2tlY2Nha19pbml0KHNoYTNfY3R4KiBjdHgsIHVuc2lnbmVkIGJpdHMpCiB7CiAJLyogTkI6IFRoZSBLZWNjYWsgY2FwYWNpdHkgcGFyYW1ldGVyID0gYml0cyAqIDIgKi8KIAl1bnNpZ25lZCByYXRlID0gMTYwMCAtIGJpdHMgKiAyOwpAQCAtNTEsNyArNTEsNyBAQAogICoKICAqIEBwYXJhbSBjdHggY29udGV4dCB0byBpbml0aWFsaXplCiAgKi8KLXZvaWQgcmhhc2hfc2hhM18yMjRfaW5pdChzaGEzX2N0eCAqY3R4KQordm9pZCByaGFzaF9zaGEzXzIyNF9pbml0KHNoYTNfY3R4KiBjdHgpCiB7CiAJcmhhc2hfa2VjY2FrX2luaXQoY3R4LCAyMjQpOwogfQpAQCAtNjEsNyArNjEsNyBAQAogICoKICAqIEBwYXJhbSBjdHggY29udGV4dCB0byBpbml0aWFsaXplCiAgKi8KLXZvaWQgcmhhc2hfc2hhM18yNTZfaW5pdChzaGEzX2N0eCAqY3R4KQordm9pZCByaGFzaF9zaGEzXzI1Nl9pbml0KHNoYTNfY3R4KiBjdHgpCiB7CiAJcmhhc2hfa2VjY2FrX2luaXQoY3R4LCAyNTYpOwogfQpAQCAtNzEsNyArNzEsNyBAQAogICoKICAqIEBwYXJhbSBjdHggY29udGV4dCB0byBpbml0aWFsaXplCiAgKi8KLXZvaWQgcmhhc2hfc2hhM18zODRfaW5pdChzaGEzX2N0eCAqY3R4KQordm9pZCByaGFzaF9zaGEzXzM4NF9pbml0KHNoYTNfY3R4KiBjdHgpCiB7CiAJcmhhc2hfa2VjY2FrX2luaXQoY3R4LCAzODQpOwogfQpAQCAtODEsMzcgKzgxLDM3IEBACiAgKgogICogQHBhcmFtIGN0eCBjb250ZXh0IHRvIGluaXRpYWxpemUKICAqLwotdm9pZCByaGFzaF9zaGEzXzUxMl9pbml0KHNoYTNfY3R4ICpjdHgpCit2b2lkIHJoYXNoX3NoYTNfNTEyX2luaXQoc2hhM19jdHgqIGN0eCkKIHsKIAlyaGFzaF9rZWNjYWtfaW5pdChjdHgsIDUxMik7CiB9CiAKKyNkZWZpbmUgWE9SRURfQShpKSBBWyhpKV0gXiBBWyhpKSArIDVdIF4gQVsoaSkgKyAxMF0gXiBBWyhpKSArIDE1XSBeIEFbKGkpICsgMjBdCisjZGVmaW5lIFRIRVRBX1NURVAoaSkgXAorCUFbKGkpXSAgICAgIF49IERbKGkpXTsgXAorCUFbKGkpICsgNV0gIF49IERbKGkpXTsgXAorCUFbKGkpICsgMTBdIF49IERbKGkpXTsgXAorCUFbKGkpICsgMTVdIF49IERbKGkpXTsgXAorCUFbKGkpICsgMjBdIF49IERbKGkpXSBcCisKIC8qIEtlY2NhayB0aGV0YSgpIHRyYW5zZm9ybWF0aW9uICovCi1zdGF0aWMgdm9pZCBrZWNjYWtfdGhldGEodWludDY0X3QgKkEpCitzdGF0aWMgdm9pZCBrZWNjYWtfdGhldGEodWludDY0X3QqIEEpCiB7Ci0JdW5zaWduZWQgaW50IHg7Ci0JdWludDY0X3QgQ1s1XSwgRFs1XTsKLQotCWZvciAoeCA9IDA7IHggPCA1OyB4KyspIHsKLQkJQ1t4XSA9IEFbeF0gXiBBW3ggKyA1XSBeIEFbeCArIDEwXSBeIEFbeCArIDE1XSBeIEFbeCArIDIwXTsKLQl9Ci0JRFswXSA9IFJPVEw2NChDWzFdLCAxKSBeIENbNF07Ci0JRFsxXSA9IFJPVEw2NChDWzJdLCAxKSBeIENbMF07Ci0JRFsyXSA9IFJPVEw2NChDWzNdLCAxKSBeIENbMV07Ci0JRFszXSA9IFJPVEw2NChDWzRdLCAxKSBeIENbMl07Ci0JRFs0XSA9IFJPVEw2NChDWzBdLCAxKSBeIENbM107Ci0KLQlmb3IgKHggPSAwOyB4IDwgNTsgeCsrKSB7Ci0JCUFbeF0gICAgICBePSBEW3hdOwotCQlBW3ggKyA1XSAgXj0gRFt4XTsKLQkJQVt4ICsgMTBdIF49IERbeF07Ci0JCUFbeCArIDE1XSBePSBEW3hdOwotCQlBW3ggKyAyMF0gXj0gRFt4XTsKLQl9CisJdWludDY0X3QgRFs1XTsKKwlEWzBdID0gUk9UTDY0KFhPUkVEX0EoMSksIDEpIF4gWE9SRURfQSg0KTsKKwlEWzFdID0gUk9UTDY0KFhPUkVEX0EoMiksIDEpIF4gWE9SRURfQSgwKTsKKwlEWzJdID0gUk9UTDY0KFhPUkVEX0EoMyksIDEpIF4gWE9SRURfQSgxKTsKKwlEWzNdID0gUk9UTDY0KFhPUkVEX0EoNCksIDEpIF4gWE9SRURfQSgyKTsKKwlEWzRdID0gUk9UTDY0KFhPUkVEX0EoMCksIDEpIF4gWE9SRURfQSgzKTsKKwlUSEVUQV9TVEVQKDApOworCVRIRVRBX1NURVAoMSk7CisJVEhFVEFfU1RFUCgyKTsKKwlUSEVUQV9TVEVQKDMpOworCVRIRVRBX1NURVAoNCk7CiB9CiAKIC8qIEtlY2NhayBwaSgpIHRyYW5zZm9ybWF0aW9uICovCi1zdGF0aWMgdm9pZCBrZWNjYWtfcGkodWludDY0X3QgKkEpCitzdGF0aWMgdm9pZCBrZWNjYWtfcGkodWludDY0X3QqIEEpCiB7CiAJdWludDY0X3QgQTE7CiAJQTEgPSBBWzFdOwpAQCAtMTQyLDIxICsxNDIsMjcgQEAKIAkvKiBub3RlOiBBWyAwXSBpcyBsZWZ0IGFzIGlzICovCiB9CiAKKyNkZWZpbmUgQ0hJX1NURVAoaSkgXAorCUEwID0gQVswICsgKGkpXTsgXAorCUExID0gQVsxICsgKGkpXTsgXAorCUFbMCArIChpKV0gXj0gfkExICYgQVsyICsgKGkpXTsgXAorCUFbMSArIChpKV0gXj0gfkFbMiArIChpKV0gJiBBWzMgKyAoaSldOyBcCisJQVsyICsgKGkpXSBePSB+QVszICsgKGkpXSAmIEFbNCArIChpKV07IFwKKwlBWzMgKyAoaSldIF49IH5BWzQgKyAoaSldICYgQTA7IFwKKwlBWzQgKyAoaSldIF49IH5BMCAmIEExIFwKKwogLyogS2VjY2FrIGNoaSgpIHRyYW5zZm9ybWF0aW9uICovCi1zdGF0aWMgdm9pZCBrZWNjYWtfY2hpKHVpbnQ2NF90ICpBKQorc3RhdGljIHZvaWQga2VjY2FrX2NoaSh1aW50NjRfdCogQSkKIHsKLQlpbnQgaTsKLQlmb3IgKGkgPSAwOyBpIDwgMjU7IGkgKz0gNSkgewotCQl1aW50NjRfdCBBMCA9IEFbMCArIGldLCBBMSA9IEFbMSArIGldOwotCQlBWzAgKyBpXSBePSB+QTEgJiBBWzIgKyBpXTsKLQkJQVsxICsgaV0gXj0gfkFbMiArIGldICYgQVszICsgaV07Ci0JCUFbMiArIGldIF49IH5BWzMgKyBpXSAmIEFbNCArIGldOwotCQlBWzMgKyBpXSBePSB+QVs0ICsgaV0gJiBBMDsKLQkJQVs0ICsgaV0gXj0gfkEwICYgQTE7Ci0JfQorCXVpbnQ2NF90IEEwLCBBMTsKKwlDSElfU1RFUCgwKTsKKwlDSElfU1RFUCg1KTsKKwlDSElfU1RFUCgxMCk7CisJQ0hJX1NURVAoMTUpOworCUNISV9TVEVQKDIwKTsKIH0KIAotc3RhdGljIHZvaWQgcmhhc2hfc2hhM19wZXJtdXRhdGlvbih1aW50NjRfdCAqc3RhdGUpCitzdGF0aWMgdm9pZCByaGFzaF9zaGEzX3Blcm11dGF0aW9uKHVpbnQ2NF90KiBzdGF0ZSkKIHsKIAlpbnQgcm91bmQ7CiAJZm9yIChyb3VuZCA9IDA7IHJvdW5kIDwgTnVtYmVyT2ZSb3VuZHM7IHJvdW5kKyspCkBAIC0yMDQsNyArMjEwLDcgQEAKICAqIEBwYXJhbSBibG9jayB0aGUgbWVzc2FnZSBibG9jayB0byBwcm9jZXNzCiAgKiBAcGFyYW0gYmxvY2tfc2l6ZSB0aGUgc2l6ZSBvZiB0aGUgcHJvY2Vzc2VkIGJsb2NrIGluIGJ5dGVzCiAgKi8KLXN0YXRpYyB2b2lkIHJoYXNoX3NoYTNfcHJvY2Vzc19ibG9jayh1aW50NjRfdCBoYXNoWzI1XSwgY29uc3QgdWludDY0X3QgKmJsb2NrLCBzaXplX3QgYmxvY2tfc2l6ZSkKK3N0YXRpYyB2b2lkIHJoYXNoX3NoYTNfcHJvY2Vzc19ibG9jayh1aW50NjRfdCBoYXNoWzI1XSwgY29uc3QgdWludDY0X3QqIGJsb2NrLCBzaXplX3QgYmxvY2tfc2l6ZSkKIHsKIAkvKiBleHBhbmRlZCBsb29wICovCiAJaGFzaFsgMF0gXj0gbGUybWVfNjQoYmxvY2tbIDBdKTsKQEAgLTI2MCw3ICsyNjYsNyBAQAogICogQHBhcmFtIG1zZyBtZXNzYWdlIGNodW5rCiAgKiBAcGFyYW0gc2l6ZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgY2h1bmsKICAqLwotdm9pZCByaGFzaF9zaGEzX3VwZGF0ZShzaGEzX2N0eCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICptc2csIHNpemVfdCBzaXplKQordm9pZCByaGFzaF9zaGEzX3VwZGF0ZShzaGEzX2N0eCogY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtc2csIHNpemVfdCBzaXplKQogewogCXNpemVfdCBpbmRleCA9IChzaXplX3QpY3R4LT5yZXN0OwogCXNpemVfdCBibG9ja19zaXplID0gKHNpemVfdCljdHgtPmJsb2NrX3NpemU7CkBAIC0zMDUsNyArMzExLDcgQEAKICAqIEBwYXJhbSBjdHggdGhlIGFsZ29yaXRobSBjb250ZXh0IGNvbnRhaW5pbmcgY3VycmVudCBoYXNoaW5nIHN0YXRlCiAgKiBAcGFyYW0gcmVzdWx0IGNhbGN1bGF0ZWQgaGFzaCBpbiBiaW5hcnkgZm9ybQogICovCi12b2lkIHJoYXNoX3NoYTNfZmluYWwoc2hhM19jdHggKmN0eCwgdW5zaWduZWQgY2hhciogcmVzdWx0KQordm9pZCByaGFzaF9zaGEzX2ZpbmFsKHNoYTNfY3R4KiBjdHgsIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCkKIHsKIAlzaXplX3QgZGlnZXN0X2xlbmd0aCA9IDEwMCAtIGN0eC0+YmxvY2tfc2l6ZSAvIDI7CiAJY29uc3Qgc2l6ZV90IGJsb2NrX3NpemUgPSBjdHgtPmJsb2NrX3NpemU7CkBAIC0zMzMsNyArMzM5LDcgQEAKICogQHBhcmFtIGN0eCB0aGUgYWxnb3JpdGhtIGNvbnRleHQgY29udGFpbmluZyBjdXJyZW50IGhhc2hpbmcgc3RhdGUKICogQHBhcmFtIHJlc3VsdCBjYWxjdWxhdGVkIGhhc2ggaW4gYmluYXJ5IGZvcm0KICovCi12b2lkIHJoYXNoX2tlY2Nha19maW5hbChzaGEzX2N0eCAqY3R4LCB1bnNpZ25lZCBjaGFyKiByZXN1bHQpCit2b2lkIHJoYXNoX2tlY2Nha19maW5hbChzaGEzX2N0eCogY3R4LCB1bnNpZ25lZCBjaGFyKiByZXN1bHQpCiB7CiAJc2l6ZV90IGRpZ2VzdF9sZW5ndGggPSAxMDAgLSBjdHgtPmJsb2NrX3NpemUgLyAyOwogCWNvbnN0IHNpemVfdCBibG9ja19zaXplID0gY3R4LT5ibG9ja19zaXplOwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhMy5oIGIvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhMy5oCmluZGV4IDI4MzE5OTcuLmUwMDA0MWQgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL3NoYTMuaAorKysgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGEzLmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiAvKiBtZXRob2RzIGZvciBjYWxjdWxhdGluZyB0aGUgaGFzaCBmdW5jdGlvbiAqLwogCi12b2lkIHJoYXNoX3NoYTNfMjI0X2luaXQoc2hhM19jdHggKmN0eCk7Ci12b2lkIHJoYXNoX3NoYTNfMjU2X2luaXQoc2hhM19jdHggKmN0eCk7Ci12b2lkIHJoYXNoX3NoYTNfMzg0X2luaXQoc2hhM19jdHggKmN0eCk7Ci12b2lkIHJoYXNoX3NoYTNfNTEyX2luaXQoc2hhM19jdHggKmN0eCk7Ci12b2lkIHJoYXNoX3NoYTNfdXBkYXRlKHNoYTNfY3R4ICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1zZywgc2l6ZV90IHNpemUpOwotdm9pZCByaGFzaF9zaGEzX2ZpbmFsKHNoYTNfY3R4ICpjdHgsIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCk7Cit2b2lkIHJoYXNoX3NoYTNfMjI0X2luaXQoc2hhM19jdHgqIGN0eCk7Cit2b2lkIHJoYXNoX3NoYTNfMjU2X2luaXQoc2hhM19jdHgqIGN0eCk7Cit2b2lkIHJoYXNoX3NoYTNfMzg0X2luaXQoc2hhM19jdHgqIGN0eCk7Cit2b2lkIHJoYXNoX3NoYTNfNTEyX2luaXQoc2hhM19jdHgqIGN0eCk7Cit2b2lkIHJoYXNoX3NoYTNfdXBkYXRlKHNoYTNfY3R4KiBjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1zZywgc2l6ZV90IHNpemUpOwordm9pZCByaGFzaF9zaGEzX2ZpbmFsKHNoYTNfY3R4KiBjdHgsIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCk7CiAKICNpZmRlZiBVU0VfS0VDQ0FLCiAjZGVmaW5lIHJoYXNoX2tlY2Nha18yMjRfaW5pdCByaGFzaF9zaGEzXzIyNF9pbml0CkBAIC00NCw3ICs0NCw3IEBACiAjZGVmaW5lIHJoYXNoX2tlY2Nha18zODRfaW5pdCByaGFzaF9zaGEzXzM4NF9pbml0CiAjZGVmaW5lIHJoYXNoX2tlY2Nha181MTJfaW5pdCByaGFzaF9zaGEzXzUxMl9pbml0CiAjZGVmaW5lIHJoYXNoX2tlY2Nha191cGRhdGUgcmhhc2hfc2hhM191cGRhdGUKLXZvaWQgcmhhc2hfa2VjY2FrX2ZpbmFsKHNoYTNfY3R4ICpjdHgsIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCk7Cit2b2lkIHJoYXNoX2tlY2Nha19maW5hbChzaGEzX2N0eCogY3R4LCB1bnNpZ25lZCBjaGFyKiByZXN1bHQpOwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhNTEyLmMgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGE1MTIuYwppbmRleCBhM2U2ODFkLi41NTVlNmVmIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGE1MTIuYworKysgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGE1MTIuYwpAQCAtMSwxOCArMSwxOCBAQAogLyogc2hhNTEyLmMgLSBhbiBpbXBsZW1lbnRhdGlvbiBvZiBTSEEtMzg0LzUxMiBoYXNoIGZ1bmN0aW9ucwogICogYmFzZWQgb24gRklQUyAxODAtMyAoRmVkZXJhbCBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nIFN0YW5kYXJ0KS4KICAqCi0gKiBDb3B5cmlnaHQ6IDIwMTAtMjAxMiBBbGVrc2V5IEtyYXZjaGVua28gPHJoYXNoLmFkbWluQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwgQWxla3NleSBLcmF2Y2hlbmtvIDxyaGFzaC5hZG1pbkBnbWFpbC5jb20+CiAgKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgIGZyZWUgb2YgY2hhcmdlLCAgdG8gYW55IHBlcnNvbiAgb2J0YWluaW5nIGEKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCAgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgotICogdGhlIHJpZ2h0cyB0byAgdXNlLCBjb3B5LCBtb2RpZnksICBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSAqIGFuZC9vciBzZWxsIGNvcGllcyAgb2YgIHRoZSBTb2Z0d2FyZSwgIGFuZCB0byBwZXJtaXQgIHBlcnNvbnMgIHRvIHdob20gdGhlCi0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28uCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4KICAqCi0gKiBUaGlzIHByb2dyYW0gIGlzICBkaXN0cmlidXRlZCAgaW4gIHRoZSAgaG9wZSAgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgIGJ1dAotICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKLSAqIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVXNlIHRoaXMgcHJvZ3JhbSAgYXQgIHlvdXIgb3duIHJpc2shCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAorICogUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GICBNRVJDSEFOVEFCSUxJVFkKKyAqIEFORCBGSVRORVNTLiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCisgKiBJTkRJUkVDVCwgIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQorICogTE9TUyBPRiBVU0UsICBEQVRBIE9SIFBST0ZJVFMsICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgIE5FR0xJR0VOQ0UKKyAqIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgIEFSSVNJTkcgT1VUIE9GICBPUiBJTiBDT05ORUNUSU9OICBXSVRIIFRIRSBVU0UgIE9SCisgKiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICovCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTgxLDcgKzgxLDcgQEAKICAqCiAgKiBAcGFyYW0gY3R4IGNvbnRleHQgdG8gaW5pdGlhbGl6ZQogICovCi12b2lkIHJoYXNoX3NoYTUxMl9pbml0KHNoYTUxMl9jdHggKmN0eCkKK3ZvaWQgcmhhc2hfc2hhNTEyX2luaXQoc2hhNTEyX2N0eCogY3R4KQogewogCS8qIEluaXRpYWwgdmFsdWVzLiBUaGVzZSB3b3JkcyB3ZXJlIG9idGFpbmVkIGJ5IHRha2luZyB0aGUgZmlyc3QgMzIKIAkgKiBiaXRzIG9mIHRoZSBmcmFjdGlvbmFsIHBhcnRzIG9mIHRoZSBzcXVhcmUgcm9vdHMgb2YgdGhlIGZpcnN0CkBAIC0xMDQsNyArMTA0LDcgQEAKICAqCiAgKiBAcGFyYW0gY3R4IGNvbnRleHQgdG8gaW5pdGlhbGl6ZQogICovCi12b2lkIHJoYXNoX3NoYTM4NF9pbml0KHN0cnVjdCBzaGE1MTJfY3R4ICpjdHgpCit2b2lkIHJoYXNoX3NoYTM4NF9pbml0KHN0cnVjdCBzaGE1MTJfY3R4KiBjdHgpCiB7CiAJLyogSW5pdGlhbCB2YWx1ZXMgZnJvbSBGSVBTIDE4MC0zLiBUaGVzZSB3b3JkcyB3ZXJlIG9idGFpbmVkIGJ5IHRha2luZwogCSAqIHRoZSBmaXJzdCBzaXh0eS1mb3VyIGJpdHMgb2YgdGhlIGZyYWN0aW9uYWwgcGFydHMgb2YgdGhlIHNxdWFyZQpAQCAtMTMxLDcgKzEzMSw3IEBACiB7CiAJdWludDY0X3QgQSwgQiwgQywgRCwgRSwgRiwgRywgSDsKIAl1aW50NjRfdCBXWzE2XTsKLQljb25zdCB1aW50NjRfdCAqazsKKwljb25zdCB1aW50NjRfdCogazsKIAlpbnQgaTsKIAogCUEgPSBoYXNoWzBdLCBCID0gaGFzaFsxXSwgQyA9IGhhc2hbMl0sIEQgPSBoYXNoWzNdOwpAQCAtMTg2LDcgKzE4Niw3IEBACiAgKiBAcGFyYW0gbXNnIG1lc3NhZ2UgY2h1bmsKICAqIEBwYXJhbSBzaXplIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSBjaHVuawogICovCi12b2lkIHJoYXNoX3NoYTUxMl91cGRhdGUoc2hhNTEyX2N0eCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICptc2csIHNpemVfdCBzaXplKQordm9pZCByaGFzaF9zaGE1MTJfdXBkYXRlKHNoYTUxMl9jdHgqIGN0eCwgY29uc3QgdW5zaWduZWQgY2hhciogbXNnLCBzaXplX3Qgc2l6ZSkKIHsKIAlzaXplX3QgaW5kZXggPSAoc2l6ZV90KWN0eC0+bGVuZ3RoICYgMTI3OwogCWN0eC0+bGVuZ3RoICs9IHNpemU7CkBAIC0yMjgsNyArMjI4LDcgQEAKICAqIEBwYXJhbSBjdHggdGhlIGFsZ29yaXRobSBjb250ZXh0IGNvbnRhaW5pbmcgY3VycmVudCBoYXNoaW5nIHN0YXRlCiAgKiBAcGFyYW0gcmVzdWx0IGNhbGN1bGF0ZWQgaGFzaCBpbiBiaW5hcnkgZm9ybQogICovCi12b2lkIHJoYXNoX3NoYTUxMl9maW5hbChzaGE1MTJfY3R4ICpjdHgsIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCkKK3ZvaWQgcmhhc2hfc2hhNTEyX2ZpbmFsKHNoYTUxMl9jdHgqIGN0eCwgdW5zaWduZWQgY2hhciogcmVzdWx0KQogewogCXNpemVfdCBpbmRleCA9ICgodW5zaWduZWQpY3R4LT5sZW5ndGggJiAxMjcpID4+IDM7CiAJdW5zaWduZWQgc2hpZnQgPSAoKHVuc2lnbmVkKWN0eC0+bGVuZ3RoICYgNykgKiA4OwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvc2hhNTEyLmggYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGE1MTIuaAppbmRleCA3YzY4OWJlLi5mODBhZTBkIDEwMDY0NAotLS0gYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGE1MTIuaAorKysgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC9zaGE1MTIuaApAQCAtMjAsMTAgKzIwLDEwIEBACiAJdW5zaWduZWQgZGlnZXN0X2xlbmd0aDsgLyogbGVuZ3RoIG9mIHRoZSBhbGdvcml0aG0gZGlnZXN0IGluIGJ5dGVzICovCiB9IHNoYTUxMl9jdHg7CiAKLXZvaWQgcmhhc2hfc2hhMzg0X2luaXQoc2hhNTEyX2N0eCAqY3R4KTsKLXZvaWQgcmhhc2hfc2hhNTEyX2luaXQoc2hhNTEyX2N0eCAqY3R4KTsKLXZvaWQgcmhhc2hfc2hhNTEyX3VwZGF0ZShzaGE1MTJfY3R4ICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwotdm9pZCByaGFzaF9zaGE1MTJfZmluYWwoc2hhNTEyX2N0eCAqY3R4LCB1bnNpZ25lZCBjaGFyKiByZXN1bHQpOwordm9pZCByaGFzaF9zaGEzODRfaW5pdChzaGE1MTJfY3R4KiBjdHgpOwordm9pZCByaGFzaF9zaGE1MTJfaW5pdChzaGE1MTJfY3R4KiBjdHgpOwordm9pZCByaGFzaF9zaGE1MTJfdXBkYXRlKHNoYTUxMl9jdHgqIGN0eCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7Cit2b2lkIHJoYXNoX3NoYTUxMl9maW5hbChzaGE1MTJfY3R4KiBjdHgsIHVuc2lnbmVkIGNoYXIqIHJlc3VsdCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfSAvKiBleHRlcm4gIkMiICovCmRpZmYgLS1naXQgYS9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC91c3RkLmggYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC91c3RkLmgKaW5kZXggMDE5YjkzMS4uOTE3ZmI2YiAxMDA2NDQKLS0tIGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvdXN0ZC5oCisrKyBiL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL3VzdGQuaApAQCAtMzYsNCArMzYsMzYgQEAKICMgZGVmaW5lIHVpbnQ4X3QgS1dJTUxfSU5UX3VpbnQ4X3QKICNlbmRpZgogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpZiAwCisjaWYgX01TQ19WRVIgPiAxMDAwCisjIGluY2x1ZGUgPHN0ZGRlZi5oPiAvKiBzaXplX3QgZm9yIHZjNi4wICovCisKKyMgaWYgX01TQ19WRVIgPj0gMTYwMAorLyogVmlzdWFsIFN0dWRpbyA+PSAyMDEwIGhhcyBzdGRpbnQuaCAqLworIyAgaW5jbHVkZSA8c3RkaW50Lmg+CisjIGVsc2UKKyAgLyogdmM2LjAgaGFzIGJ1ZyB3aXRoIF9faW50OCwgc28gdXNpbmcgY2hhciBpbnN0ZWFkICovCisgIHR5cGVkZWYgc2lnbmVkIGNoYXIgICAgICAgaW50OF90OworICB0eXBlZGVmIHNpZ25lZCBfX2ludDE2ICAgIGludDE2X3Q7CisgIHR5cGVkZWYgc2lnbmVkIF9faW50MzIgICAgaW50MzJfdDsKKyAgdHlwZWRlZiBzaWduZWQgX19pbnQ2NCAgICBpbnQ2NF90OworICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICAgIHVpbnQ4X3Q7CisgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQxNiAgdWludDE2X3Q7CisgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiAgdWludDMyX3Q7CisgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCAgdWludDY0X3Q7CisjIGVuZGlmIC8qIF9NU0NfVkVSID49IDE2MDAgKi8KKworLyogZGlzYWJsZSB3YXJuaW5nczogVGhlIFBPU0lYIG5hbWUgZm9yIHRoaXMgaXRlbSBpcyBkZXByZWNhdGVkLiBVc2UgdGhlIElTTyBDKysgY29uZm9ybWFudCBuYW1lLiAqLworIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDk5NikKKworI2Vsc2UgLyogX01TQ19WRVIgPiAxMDAwICovCisKKyMgaW5jbHVkZSA8c3RkaW50Lmg+CisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorCisjZW5kaWYgLyogX01TQ19WRVIgPiAxMDAwICovCisjZW5kaWYKKwogI2VuZGlmIC8qIExJQlJIQVNIX1VTVERfSCAqLwpkaWZmIC0tZ2l0IGEvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvdXRpbC5oIGIvVXRpbGl0aWVzL2NtbGlicmhhc2gvbGlicmhhc2gvdXRpbC5oCmluZGV4IDlmMzcxNTcuLjU3Y2FlOWIgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9jbWxpYnJoYXNoL2xpYnJoYXNoL3V0aWwuaAorKysgYi9VdGlsaXRpZXMvY21saWJyaGFzaC9saWJyaGFzaC91dGlsLmgKQEAgLTIwLDcgKzIwLDcgQEAKICMgZGVmaW5lIGF0b21pY19jb21wYXJlX2FuZF9zd2FwKHB0ciwgb2xkdmFsLCBuZXd2YWwpIGF0b21pY19jYXNfMzIocHRyLCBvbGR2YWwsIG5ld3ZhbCkKICNlbHNlCiAvKiBwcmF5IHRoYXQgaXQgd2lsbCB3b3JrICovCi0jIGRlZmluZSBhdG9taWNfY29tcGFyZV9hbmRfc3dhcChwdHIsIG9sZHZhbCwgbmV3dmFsKSB7IGlmKCoocHRyKSA9PSAob2xkdmFsKSkgKihwdHIpID0gKG5ld3ZhbCk7IH0KKyMgZGVmaW5lIGF0b21pY19jb21wYXJlX2FuZF9zd2FwKHB0ciwgb2xkdmFsLCBuZXd2YWwpIHsgaWYgKCoocHRyKSA9PSAob2xkdmFsKSkgKihwdHIpID0gKG5ld3ZhbCk7IH0KICMgZGVmaW5lIE5PX0FUT01JQ19CVUlMVElOUwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9zdGQvQ01ha2VMaXN0cy50eHQgYi9VdGlsaXRpZXMvc3RkL0NNYWtlTGlzdHMudHh0CmluZGV4IDYzYzBhNjAuLmE3MmFiYjcgMTAwNjQ0Ci0tLSBhL1V0aWxpdGllcy9zdGQvQ01ha2VMaXN0cy50eHQKKysrIGIvVXRpbGl0aWVzL3N0ZC9DTWFrZUxpc3RzLnR4dApAQCAtMSw0ICsxLDggQEAKIAorIyBUbyBlbnN1cmUgbWF4aW11bSBwb3J0YWJpbGl0eSBhY3Jvc3MgdmFyaW91cyBjb21waWxlcnMgYW5kIHBsYXRmb3JtcworIyBkZWFjdGl2YXRlIGFueSBjb21waWxlciBleHRlbnNpb25zCitzZXQoQ01BS0VfQ1hYX0VYVEVOU0lPTlMgRkFMU0UpCisKICMgc291cmNlIGZpbGVzIGZvciBDTWFrZSBzdGQgbGlicmFyeQogc2V0KFNSQ1MgY20vYml0cy9zdHJpbmdfdmlldy5jeHgKICAgICAgICAgIGNtL21lbW9yeQpkaWZmIC0tZ2l0IGEvYm9vdHN0cmFwIGIvYm9vdHN0cmFwCmluZGV4IGQ1MjlmM2IuLjY2ZGM4NjEgMTAwNzU1Ci0tLSBhL2Jvb3RzdHJhcAorKysgYi9ib290c3RyYXAKQEAgLTE3LDcgKzE3LDcgQEAKIGNtYWtlX3ZlcnNpb25fY29tcG9uZW50KCkKIHsKICAgc2VkIC1uICIKLS9ec2V0KENNYWtlX1ZFUlNJT05fJHsxfS8ge3Mvc2V0KENNYWtlX1ZFUlNJT05fJHsxfSAqXChbMC05XSpcKSkvXDEvO3A7fQorL15zZXQoQ01ha2VfVkVSU0lPTl8kezF9LyB7cy9zZXQoQ01ha2VfVkVSU0lPTl8kezF9ICpcKFswLTldKlwpKS4qL1wxLztwO30KICIgIiR7Y21ha2Vfc291cmNlX2Rpcn0vU291cmNlL0NNYWtlVmVyc2lvbi5jbWFrZSIKIH0KIAo=